You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

400 lines
2.7 MiB

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
<meta name="author" content="Scary Scarecrow" />
<title>Kahoot Report</title>
<script src="data:application/javascript;base64,Ly8gUGFuZG9jIDIuOSBhZGRzIGF0dHJpYnV0ZXMgb24gYm90aCBoZWFkZXIgYW5kIGRpdi4gV2UgcmVtb3ZlIHRoZSBmb3JtZXIgKHRvCi8vIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgYmVoYXZpb3Igb2YgUGFuZG9jIDwgMi44KS4KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uKGUpIHsKICB2YXIgaHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJkaXYuc2VjdGlvbltjbGFzcyo9J2xldmVsJ10gPiA6Zmlyc3QtY2hpbGQiKTsKICB2YXIgaSwgaCwgYTsKICBmb3IgKGkgPSAwOyBpIDwgaHMubGVuZ3RoOyBpKyspIHsKICAgIGggPSBoc1tpXTsKICAgIGlmICghL15oWzEtNl0kL2kudGVzdChoLnRhZ05hbWUpKSBjb250aW51ZTsgIC8vIGl0IHNob3VsZCBiZSBhIGhlYWRlciBoMS1oNgogICAgYSA9IGguYXR0cmlidXRlczsKICAgIHdoaWxlIChhLmxlbmd0aCA+IDApIGgucmVtb3ZlQXR0cmlidXRlKGFbMF0ubmFtZSk7CiAgfQp9KTsK"></script>
<script src="data:application/javascript;base64,LyohIGpRdWVyeSB2My42LjAgfCAoYykgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyB8IGpxdWVyeS5vcmcvbGljZW5zZSAqLwohZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZS5kb2N1bWVudD90KGUsITApOmZ1bmN0aW9uKGUpe2lmKCFlLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiB0KGUpfTp0KGUpfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihDLGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD1bXSxyPU9iamVjdC5nZXRQcm90b3R5cGVPZixzPXQuc2xpY2UsZz10LmZsYXQ/ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZmxhdC5jYWxsKGUpfTpmdW5jdGlvbihlKXtyZXR1cm4gdC5jb25jYXQuYXBwbHkoW10sZSl9LHU9dC5wdXNoLGk9dC5pbmRleE9mLG49e30sbz1uLnRvU3RyaW5nLHY9bi5oYXNPd25Qcm9wZXJ0eSxhPXYudG9TdHJpbmcsbD1hLmNhbGwoT2JqZWN0KSx5PXt9LG09ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUmJiJudW1iZXIiIT10eXBlb2YgZS5ub2RlVHlwZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUuaXRlbX0seD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmZT09PWUud2luZG93fSxFPUMuZG9jdW1lbnQsYz17dHlwZTohMCxzcmM6ITAsbm9uY2U6ITAsbm9Nb2R1bGU6ITB9O2Z1bmN0aW9uIGIoZSx0LG4pe3ZhciByLGksbz0obj1ufHxFKS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtpZihvLnRleHQ9ZSx0KWZvcihyIGluIGMpKGk9dFtyXXx8dC5nZXRBdHRyaWJ1dGUmJnQuZ2V0QXR0cmlidXRlKHIpKSYmby5zZXRBdHRyaWJ1dGUocixpKTtuLmhlYWQuYXBwZW5kQ2hpbGQobykucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKX1mdW5jdGlvbiB3KGUpe3JldHVybiBudWxsPT1lP2UrIiI6Im9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZT9uW28uY2FsbChlKV18fCJvYmplY3QiOnR5cGVvZiBlfXZhciBmPSIzLjYuMCIsUz1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgUy5mbi5pbml0KGUsdCl9O2Z1bmN0aW9uIHAoZSl7dmFyIHQ9ISFlJiYibGVuZ3RoImluIGUmJmUubGVuZ3RoLG49dyhlKTtyZXR1cm4hbShlKSYmIXgoZSkmJigiYXJyYXkiPT09bnx8MD09PXR8fCJudW1iZXIiPT10eXBlb2YgdCYmMDx0JiZ0LTEgaW4gZSl9Uy5mbj1TLnByb3RvdHlwZT17anF1ZXJ5OmYsY29uc3RydWN0b3I6UyxsZW5ndGg6MCx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHMuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3MuY2FsbCh0aGlzKTplPDA/dGhpc1tlK3RoaXMubGVuZ3RoXTp0aGlzW2VdfSxwdXNoU3RhY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9Uy5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksZSk7cmV0dXJuIHQucHJldk9iamVjdD10aGlzLHR9LGVhY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIFMuZWFjaCh0aGlzLGUpfSxtYXA6ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMubWFwKHRoaXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5jYWxsKGUsdCxlKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2socy5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxldmVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMuZ3JlcCh0aGlzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQrMSklMn0pKX0sb2RkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMuZ3JlcCh0aGlzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQlMn0pKX0sZXE6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5sZW5ndGgsbj0rZSsoZTwwP3Q6MCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKDA8PW4mJm48dD9bdGhpc1tuXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKCl9LHB1c2g6dSxzb3J0OnQuc29ydCxzcGxpY2U6dC5zcGxpY2V9LFMuZXh0ZW5kPVMuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsaSxvLGE9YXJndW1lbnRzWzBdfHx7fSxzPTEsdT1hcmd1bWVudHMubGVuZ3RoLGw9ITE7Zm9yKCJib29sZWFuIj09dHlwZW9mIGEmJihsPWEsYT1hcmd1bWVudHNbc118fHt9LHMrKyksIm9iamVjdCI9PXR5cGVvZiBhfHxtKGEpfHwoYT17fSkscz09PXUmJihhPXRoaXMscy0tKTtzPHU7cysrKWlmKG51bGwhPShlPWFyZ3VtZW50c1tzXSkpZm9yKHQgaW4gZSlyPWVbdF0sIl9fcHJvdG9fXyIhPT10JiZhIT09ciYmKGwmJnImJihTLmlzUGxhaW5PYmplY3Qocil8fChpPUFycmF5LmlzQXJyYXkocikpKT8obj1hW3RdLG89aSYmIUFycmF5LmlzQXJyYXkobik/W106aXx8Uy5pc1BsYWluT2JqZWN0KG4pP246e30saT0hMSxhW3RdPVMuZXh0ZW5kKGwsbyxyKSk6dm9pZCAwIT09ciYmKGFbdF09cikpO3JldHVybiBhfSxTLmV4dGVuZCh7ZXhwYW5kbzoialF1ZXJ5IisoZitNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxpc1JlYWR5OiEwLGVycm9yOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihlKX0sbm9vcDpmdW5jdGlvbigpe30saXNQbGFpbk9iamVjdDpmdW5jdGlvbihlKXt2YXIgdCxuO3JldHVybiEoIWV8fCJbb2JqZWN0IE9iamVjdF0iIT09by5jYWxsKGUpKSYmKCEodD1yKGUpKXx8ImZ1bmN0aW9uIj09dHlwZW9mKG49di5jYWxsKHQsImNvbnN0cnVjdG9yIikmJnQuY29uc3RydWN0b3IpJiZhLmNhbGwobik9PT1sKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihlKXt2YXIgdDtmb3IodCBpbiBlKXJldHVybiExO3JldHVybiEwfSxnbG9iYWxFdmFsOmZ1bmN0aW9uKGUsdCxuKXtiKGUse25vbmNlOnQmJnQubm9uY2V9LG4pfSxlYWNoOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj0wO2lmKHAoZSkpe2ZvcihuPWUubGVuZ3RoO3I8bjtyKyspaWYoITE9PT10LmNhbGwoZVtyXSxyLGVbcl0pKWJyZWFrfWVsc2UgZm9yKHIgaW4gZSlpZighMT09PXQuY2FsbChlW3JdLHIsZVtyXSkpYnJlYWs7cmV0dXJuIGV9LG1ha2VBcnJheTpmdW5jdGlvbihlLHQpe3ZhciBuPXR8fFtdO3JldHVybiBudWxsIT1lJiYocChPYmplY3QoZSkpP1MubWVyZ2Uobiwic3RyaW5nIj09dHlwZW9mIGU/W2VdOmUpOnUuY2FsbChuLGUpKSxufSxpbkFycmF5OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbD09dD8tMTppLmNhbGwodCxlLG4pfSxtZXJnZTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0rdC5sZW5ndGgscj0wLGk9ZS5sZW5ndGg7cjxuO3IrKyllW2krK109dFtyXTtyZXR1cm4gZS5sZW5ndGg9aSxlfSxncmVwOmZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9W10saT0wLG89ZS5sZW5ndGgsYT0hbjtpPG87aSsrKSF0KGVbaV0saSkhPT1hJiZyLnB1c2goZVtpXSk7cmV0dXJuIHJ9LG1hcDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPTAsYT1bXTtpZihwKGUpKWZvcihyPWUubGVuZ3RoO288cjtvKyspbnVsbCE9KGk9dChlW29dLG8sbikpJiZhLnB1c2goaSk7ZWxzZSBmb3IobyBpbiBlKW51bGwhPShpPXQoZVtvXSxvLG4pKSYmYS5wdXNoKGkpO3JldHVybiBnKGEpfSxndWlkOjEsc3VwcG9ydDp5fSksImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKFMuZm5bU3ltYm9sLml0ZXJhdG9yXT10W1N5bWJvbC5pdGVyYXRvcl0pLFMuZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2wiLnNwbGl0KCIgIiksZnVuY3Rpb24oZSx0KXtuWyJbb2JqZWN0ICIrdCsiXSJdPXQudG9Mb3dlckNhc2UoKX0pO3ZhciBkPWZ1bmN0aW9uKG4pe3ZhciBlLGQsYixvLGksaCxmLGcsdyx1LGwsVCxDLGEsRSx2LHMsYyx5LFM9InNpenpsZSIrMSpuZXcgRGF0ZSxwPW4uZG9jdW1lbnQsaz0wLHI9MCxtPXVlKCkseD11ZSgpLEE9dWUoKSxOPXVlKCksaj1mdW5jdGlvbihlLHQpe3JldHVybiBlPT09dCYmKGw9ITApLDB9LEQ9e30uaGFzT3duUHJvcGVydHksdD1bXSxxPXQucG9wLEw9dC5wdXNoLEg9dC5wdXNoLE89dC5zbGljZSxQPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTAscj1lLmxlbmd0aDtuPHI7bisrKWlmKGVbbl09PT10KXJldHVybiBuO3JldHVybi0xfSxSPSJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCIsTT0iW1xceDIwXFx0XFxyXFxuXFxmXSIsST0iKD86XFxcXFtcXGRhLWZBLUZdezEsNn0iK00rIj98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15cMC1cXHg3Zl0pKyIsVz0iXFxbIitNKyIqKCIrSSsiKSg/OiIrTSsiKihbKl4kfCF+XT89KSIrTSsiKig/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwifCgiK0krIikpfCkiK00rIipcXF0iLEY9IjooIitJKyIpKD86XFwoKCgnKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcIil8KCg/OlxcXFwufFteXFxcXCgpW1xcXV18IitXKyIpKil8LiopXFwpfCkiLEI9bmV3IFJlZ0V4cChNKyIrIiwiZyIpLCQ9bmV3IFJlZ0V4cCgiXiIrTSsiK3woKD86XnxbXlxcXFxdKSg/OlxcXFwuKSopIitNKyIrJCIsImciKSxfPW5ldyBSZWdFeHAoIl4iK00rIiosIitNKyIqIiksej1uZXcgUmVnRXhwKCJeIitNKyIqKFs+K35dfCIrTSsiKSIrTSsiKiIpLFU9bmV3IFJlZ0V4cChNKyJ8PiIpLFg9bmV3IFJlZ0V4cChGKSxWPW5ldyBSZWdFeHAoIl4iK0krIiQiKSxHPXtJRDpuZXcgUmVnRXhwKCJeIygiK0krIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrSSsiKSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrSSsifFsqXSkiKSxBVFRSOm5ldyBSZWdFeHAoIl4iK1cpLFBTRVVETzpuZXcgUmVnRXhwKCJeIitGKSxDSElMRDpuZXcgUmVnRXhwKCJeOihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXCgiK00rIiooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilufCkiK00rIiooPzooWystXXwpIitNKyIqKFxcZCspfCkpIitNKyIqXFwpfCkiLCJpIiksYm9vbDpuZXcgUmVnRXhwKCJeKD86IitSKyIpJCIsImkiKSxuZWVkc0NvbnRleHQ6bmV3IFJlZ0V4cCgiXiIrTSsiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFwoIitNKyIqKCg/Oi1cXGQpP1xcZCopIitNKyIqXFwpfCkoPz1bXi1dfCQpIiwiaSIpfSxZPS9IVE1MJC9pLFE9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxKPS9eaFxkJC9pLEs9L15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLFo9L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLyxlZT0vWyt+XS8sdGU9bmV3IFJlZ0V4cCgiXFxcXFtcXGRhLWZBLUZdezEsNn0iK00rIj98XFxcXChbXlxcclxcblxcZl0pIiwiZyIpLG5lPWZ1bmN0aW9uKGUsdCl7dmFyIG49IjB4IitlLnNsaWNlKDEpLTY1NTM2O3JldHVybiB0fHwobjwwP1N0cmluZy5mcm9tQ2hhckNvZGUobis2NTUzNik6U3RyaW5nLmZyb21DaGFyQ29kZShuPj4xMHw1NTI5NiwxMDIzJm58NTYzMjApKX0scmU9LyhbXDAtXHgxZlx4N2ZdfF4tP1xkKXxeLSR8W15cMC1ceDFmXHg3Zi1cdUZGRkZcdy1dL2csaWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD8iXDAiPT09ZT8iXHVmZmZkIjplLnNsaWNlKDAsLTEpKyJcXCIrZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpLnRvU3RyaW5nKDE2KSsiICI6IlxcIitlfSxvZT1mdW5jdGlvbigpe1QoKX0sYWU9YmUoZnVuY3Rpb24oZSl7cmV0dXJuITA9PT1lLmRpc2FibGVkJiYiZmllbGRzZXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpfSx7ZGlyOiJwYXJlbnROb2RlIixuZXh0OiJsZWdlbmQifSk7dHJ5e0guYXBwbHkodD1PLmNhbGwocC5jaGlsZE5vZGVzKSxwLmNoaWxkTm9kZXMpLHRbcC5jaGlsZE5vZGVzLmxlbmd0aF0ubm9kZVR5cGV9Y2F0Y2goZSl7SD17YXBwbHk6dC5sZW5ndGg/ZnVuY3Rpb24oZSx0KXtMLmFwcGx5KGUsTy5jYWxsKHQpKX06ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmxlbmd0aCxyPTA7d2hpbGUoZVtuKytdPXRbcisrXSk7ZS5sZW5ndGg9bi0xfX19ZnVuY3Rpb24gc2UodCxlLG4scil7dmFyIGksbyxhLHMsdSxsLGMsZj1lJiZlLm93bmVyRG9jdW1lbnQscD1lP2Uubm9kZVR5cGU6OTtpZihuPW58fFtdLCJzdHJpbmciIT10eXBlb2YgdHx8IXR8fDEhPT1wJiY5IT09cCYmMTEhPT1wKXJldHVybiBuO2lmKCFyJiYoVChlKSxlPWV8fEMsRSkpe2lmKDExIT09cCYmKHU9Wi5leGVjKHQpKSlpZihpPXVbMV0pe2lmKDk9PT1wKXtpZighKGE9ZS5nZXRFbGVtZW50QnlJZChpKSkpcmV0dXJuIG47aWYoYS5pZD09PWkpcmV0dXJuIG4ucHVzaChhKSxufWVsc2UgaWYoZiYmKGE9Zi5nZXRFbGVtZW50QnlJZChpKSkmJnkoZSxhKSYmYS5pZD09PWkpcmV0dXJuIG4ucHVzaChhKSxufWVsc2V7aWYodVsyXSlyZXR1cm4gSC5hcHBseShuLGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUodCkpLG47aWYoKGk9dVszXSkmJmQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXJldHVybiBILmFwcGx5KG4sZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGkpKSxufWlmKGQucXNhJiYhTlt0KyIgIl0mJighdnx8IXYudGVzdCh0KSkmJigxIT09cHx8Im9iamVjdCIhPT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpKXtpZihjPXQsZj1lLDE9PT1wJiYoVS50ZXN0KHQpfHx6LnRlc3QodCkpKXsoZj1lZS50ZXN0KHQpJiZ5ZShlLnBhcmVudE5vZGUpfHxlKT09PWUmJmQuc2NvcGV8fCgocz1lLmdldEF0dHJpYnV0ZSgiaWQiKSk/cz1zLnJlcGxhY2UocmUsaWUpOmUuc2V0QXR0cmlidXRlKCJpZCIscz1TKSksbz0obD1oKHQpKS5sZW5ndGg7d2hpbGUoby0tKWxbb109KHM/IiMiK3M6IjpzY29wZSIpKyIgIit4ZShsW29dKTtjPWwuam9pbigiLCIpfXRyeXtyZXR1cm4gSC5hcHBseShuLGYucXVlcnlTZWxlY3RvckFsbChjKSksbn1jYXRjaChlKXtOKHQsITApfWZpbmFsbHl7cz09PVMmJmUucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGcodC5yZXBsYWNlKCQsIiQxIiksZSxuLHIpfWZ1bmN0aW9uIHVlKCl7dmFyIHI9W107cmV0dXJuIGZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gci5wdXNoKHQrIiAiKT5iLmNhY2hlTGVuZ3RoJiZkZWxldGUgZVtyLnNoaWZ0KCldLGVbdCsiICJdPW59fWZ1bmN0aW9uIGxlKGUpe3JldHVybiBlW1NdPSEwLGV9ZnVuY3Rpb24gY2UoZSl7dmFyIHQ9Qy5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpO3RyeXtyZXR1cm4hIWUodCl9Y2F0Y2goZSl7cmV0dXJuITF9ZmluYWxseXt0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSx0PW51bGx9fWZ1bmN0aW9uIGZlKGUsdCl7dmFyIG49ZS5zcGxpdCgifCIpLHI9bi5sZW5ndGg7d2hpbGUoci0tKWIuYXR0ckhhbmRsZVtuW3JdXT10fWZ1bmN0aW9uIHBlKGUsdCl7dmFyIG49dCYmZSxyPW4mJjE9PT1lLm5vZGVUeXBlJiYxPT09dC5ub2RlVHlwZSYmZS5zb3VyY2VJbmRleC10LnNvdXJjZUluZGV4O2lmKHIpcmV0dXJuIHI7aWYobil3aGlsZShuPW4ubmV4dFNpYmxpbmcpaWYobj09PXQpcmV0dXJuLTE7cmV0dXJuIGU/MTotMX1mdW5jdGlvbiBkZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmZS50eXBlPT09dH19ZnVuY3Rpb24gaGUobil7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oImlucHV0Ij09PXR8fCJidXR0b24iPT09dCkmJmUudHlwZT09PW59fWZ1bmN0aW9uIGdlKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4iZm9ybSJpbiBlP2UucGFyZW50Tm9kZSYmITE9PT1lLmRpc2FibGVkPyJsYWJlbCJpbiBlPyJsYWJlbCJpbiBlLnBhcmVudE5vZGU/ZS5wYXJlbnROb2RlLmRpc2FibGVkPT09dDplLmRpc2FibGVkPT09dDplLmlzRGlzYWJsZWQ9PT10fHxlLmlzRGlzYWJsZWQhPT0hdCYmYWUoZSk9PT10OmUuZGlzYWJsZWQ9PT10OiJsYWJlbCJpbiBlJiZlLmRpc2FibGVkPT09dH19ZnVuY3Rpb24gdmUoYSl7cmV0dXJuIGxlKGZ1bmN0aW9uKG8pe3JldHVybiBvPStvLGxlKGZ1bmN0aW9uKGUsdCl7dmFyIG4scj1hKFtdLGUubGVuZ3RoLG8pLGk9ci5sZW5ndGg7d2hpbGUoaS0tKWVbbj1yW2ldXSYmKGVbbl09ISh0W25dPWVbbl0pKX0pfSl9ZnVuY3Rpb24geWUoZSl7cmV0dXJuIGUmJiJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZSYmZX1mb3IoZSBpbiBkPXNlLnN1cHBvcnQ9e30saT1zZS5pc1hNTD1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLm5hbWVzcGFjZVVSSSxuPWUmJihlLm93bmVyRG9jdW1lbnR8fGUpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4hWS50ZXN0KHR8fG4mJm4ubm9kZU5hbWV8fCJIVE1MIil9LFQ9c2Uuc2V0RG9jdW1lbnQ9ZnVuY3Rpb24oZSl7dmFyIHQsbixyPWU/ZS5vd25lckRvY3VtZW50fHxlOnA7cmV0dXJuIHIhPUMmJjk9PT1yLm5vZGVUeXBlJiZyLmRvY3VtZW50RWxlbWVudCYmKGE9KEM9cikuZG9jdW1lbnRFbGVtZW50LEU9IWkoQykscCE9QyYmKG49Qy5kZWZhdWx0VmlldykmJm4udG9wIT09biYmKG4uYWRkRXZlbnRMaXN0ZW5lcj9uLmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsb2UsITEpOm4uYXR0YWNoRXZlbnQmJm4uYXR0YWNoRXZlbnQoIm9udW5sb2FkIixvZSkpLGQuc2NvcGU9Y2UoZnVuY3Rpb24oZSl7cmV0dXJuIGEuYXBwZW5kQ2hpbGQoZSkuYXBwZW5kQ2hpbGQoQy5jcmVhdGVFbGVtZW50KCJkaXYiKSksInVuZGVmaW5lZCIhPXR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGwmJiFlLnF1ZXJ5U2VsZWN0b3JBbGwoIjpzY29wZSBmaWVsZHNldCBkaXYiKS5sZW5ndGh9KSxkLmF0dHJpYnV0ZXM9Y2UoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2xhc3NOYW1lPSJpIiwhZS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpfSksZC5nZXRFbGVtZW50c0J5VGFnTmFtZT1jZShmdW5jdGlvbihlKXtyZXR1cm4gZS5hcHBlbmRDaGlsZChDLmNyZWF0ZUNvbW1lbnQoIiIpKSwhZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLGQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT1LLnRlc3QoQy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSxkLmdldEJ5SWQ9Y2UoZnVuY3Rpb24oZSl7cmV0dXJuIGEuYXBwZW5kQ2hpbGQoZSkuaWQ9UywhQy5nZXRFbGVtZW50c0J5TmFtZXx8IUMuZ2V0RWxlbWVudHNCeU5hbWUoUykubGVuZ3RofSksZC5nZXRCeUlkPyhiLmZpbHRlci5JRD1mdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UodGUsbmUpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUoImlkIik9PT10fX0sYi5maW5kLklEPWZ1bmN0aW9uKGUsdCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0LmdldEVsZW1lbnRCeUlkJiZFKXt2YXIgbj10LmdldEVsZW1lbnRCeUlkKGUpO3JldHVybiBuP1tuXTpbXX19KTooYi5maWx0ZXIuSUQ9ZnVuY3Rpb24oZSl7dmFyIG49ZS5yZXBsYWNlKHRlLG5lKTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBlLmdldEF0dHJpYnV0ZU5vZGUmJmUuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gdCYmdC52YWx1ZT09PW59fSxiLmZpbmQuSUQ9ZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQmJkUpe3ZhciBuLHIsaSxvPXQuZ2V0RWxlbWVudEJ5SWQoZSk7aWYobyl7aWYoKG49by5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmbi52YWx1ZT09PWUpcmV0dXJuW29dO2k9dC5nZXRFbGVtZW50c0J5TmFtZShlKSxyPTA7d2hpbGUobz1pW3IrK10paWYoKG49by5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmbi52YWx1ZT09PWUpcmV0dXJuW29dfXJldHVybltdfX0pLGIuZmluZC5UQUc9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbihlLHQpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgdC5nZXRFbGVtZW50c0J5VGFnTmFtZT90LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpOmQucXNhP3QucXVlcnlTZWxlY3RvckFsbChlKTp2b2lkIDB9OmZ1bmN0aW9uKGUsdCl7dmFyIG4scj1bXSxpPTAsbz10LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpO2lmKCIqIj09PWUpe3doaWxlKG49b1tpKytdKTE9PT1uLm5vZGVUeXBlJiZyLnB1c2gobik7cmV0dXJuIHJ9cmV0dXJuIG99LGIuZmluZC5DTEFTUz1kLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmZ1bmN0aW9uKGUsdCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJkUpcmV0dXJuIHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShlKX0scz1bXSx2PVtdLChkLnFzYT1LLnRlc3QoQy5xdWVyeVNlbGVjdG9yQWxsKSkmJihjZShmdW5jdGlvbihlKXt2YXIgdDthLmFwcGVuZENoaWxkKGUpLmlubmVySFRNTD0iPGEgaWQ9JyIrUysiJz48L2E+PHNlbGVjdCBpZD0nIitTKyItXHJcXCcgbXNhbGxvd2NhcHR1cmU9Jyc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLGUucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGgmJnYucHVzaCgiWypeJF09IitNKyIqKD86Jyd8XCJcIikiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fHYucHVzaCgiXFxbIitNKyIqKD86dmFsdWV8IitSKyIpIiksZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIrUysiLV0iKS5sZW5ndGh8fHYucHVzaCgifj0iKSwodD1DLmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnNldEF0dHJpYnV0ZSgibmFtZSIsIiIpLGUuYXBwZW5kQ2hpbGQodCksZS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT0nJ10iKS5sZW5ndGh8fHYucHVzaCgiXFxbIitNKyIqbmFtZSIrTSsiKj0iK00rIiooPzonJ3xcIlwiKSIpLGUucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fHYucHVzaCgiOmNoZWNrZWQiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoImEjIitTKyIrKiIpLmxlbmd0aHx8di5wdXNoKCIuIy4rWyt+XSIpLGUucXVlcnlTZWxlY3RvckFsbCgiXFxcZiIpLHYucHVzaCgiW1xcclxcblxcZl0iKX0pLGNlKGZ1bmN0aW9uKGUpe2UuaW5uZXJIVE1MPSI8YSBocmVmPScnIGRpc2FibGVkPSdkaXNhYmxlZCc+PC9hPjxzZWxlY3QgZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0aW9uLz48L3NlbGVjdD4iO3ZhciB0PUMuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTt0LnNldEF0dHJpYnV0ZSgidHlwZSIsImhpZGRlbiIpLGUuYXBwZW5kQ2hpbGQodCkuc2V0QXR0cmlidXRlKCJuYW1lIiwiRCIpLGUucXVlcnlTZWxlY3RvckFsbCgiW25hbWU9ZF0iKS5sZW5ndGgmJnYucHVzaCgibmFtZSIrTSsiKlsqXiR8IX5dPz0iKSwyIT09ZS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aCYmdi5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLGEuYXBwZW5kQ2hpbGQoZSkuZGlzYWJsZWQ9ITAsMiE9PWUucXVlcnlTZWxlY3RvckFsbCgiOmRpc2FibGVkIikubGVuZ3RoJiZ2LnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksZS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4Iiksdi5wdXNoKCIsLio6Iil9KSksKGQubWF0Y2hlc1NlbGVjdG9yPUsudGVzdChjPWEubWF0Y2hlc3x8YS53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fGEubW96TWF0Y2hlc1NlbGVjdG9yfHxhLm9NYXRjaGVzU2VsZWN0b3J8fGEubXNNYXRjaGVzU2VsZWN0b3IpKSYmY2UoZnVuY3Rpb24oZSl7ZC5kaXNjb25uZWN0ZWRNYXRjaD1jLmNhbGwoZSwiKiIpLGMuY2FsbChlLCJbcyE9JyddOngiKSxzLnB1c2goIiE9IixGKX0pLHY9di5sZW5ndGgmJm5ldyBSZWdFeHAodi5qb2luKCJ8IikpLHM9cy5sZW5ndGgmJm5ldyBSZWdFeHAocy5qb2luKCJ8IikpLHQ9Sy50ZXN0KGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24pLHk9dHx8Sy50ZXN0KGEuY29udGFpbnMpP2Z1bmN0aW9uKGUsdCl7dmFyIG49OT09PWUubm9kZVR5cGU/ZS5kb2N1bWVudEVsZW1lbnQ6ZSxyPXQmJnQucGFyZW50Tm9kZTtyZXR1cm4gZT09PXJ8fCEoIXJ8fDEhPT1yLm5vZGVUeXBlfHwhKG4uY29udGFpbnM/bi5jb250YWlucyhyKTplLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHIpKSl9OmZ1bmN0aW9uKGUsdCl7aWYodCl3aGlsZSh0PXQucGFyZW50Tm9kZSlpZih0PT09ZSlyZXR1cm4hMDtyZXR1cm4hMX0saj10P2Z1bmN0aW9uKGUsdCl7aWYoZT09PXQpcmV0dXJuIGw9ITAsMDt2YXIgbj0hZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gbnx8KDEmKG49KGUub3duZXJEb2N1bWVudHx8ZSk9PSh0Lm93bmVyRG9jdW1lbnR8fHQpP2UuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCk6MSl8fCFkLnNvcnREZXRhY2hlZCYmdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlKT09PW4/ZT09Q3x8ZS5vd25lckRvY3VtZW50PT1wJiZ5KHAsZSk/LTE6dD09Q3x8dC5vd25lckRvY3VtZW50PT1wJiZ5KHAsdCk/MTp1P1AodSxlKS1QKHUsdCk6MDo0Jm4/LTE6MSl9OmZ1bmN0aW9uKGUsdCl7aWYoZT09PXQpcmV0dXJuIGw9ITAsMDt2YXIgbixyPTAsaT1lLnBhcmVudE5vZGUsbz10LnBhcmVudE5vZGUsYT1bZV0scz1bdF07aWYoIWl8fCFvKXJldHVybiBlPT1DPy0xOnQ9PUM/MTppPy0xOm8/MTp1P1AodSxlKS1QKHUsdCk6MDtpZihpPT09bylyZXR1cm4gcGUoZSx0KTtuPWU7d2hpbGUobj1uLnBhcmVudE5vZGUpYS51bnNoaWZ0KG4pO249dDt3aGlsZShuPW4ucGFyZW50Tm9kZSlzLnVuc2hpZnQobik7d2hpbGUoYVtyXT09PXNbcl0pcisrO3JldHVybiByP3BlKGFbcl0sc1tyXSk6YVtyXT09cD8tMTpzW3JdPT1wPzE6MH0pLEN9LHNlLm1hdGNoZXM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gc2UoZSxudWxsLG51bGwsdCl9LHNlLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihlLHQpe2lmKFQoZSksZC5tYXRjaGVzU2VsZWN0b3ImJkUmJiFOW3QrIiAiXSYmKCFzfHwhcy50ZXN0KHQpKSYmKCF2fHwhdi50ZXN0KHQpKSl0cnl7dmFyIG49Yy5jYWxsKGUsdCk7aWYobnx8ZC5kaXNjb25uZWN0ZWRNYXRjaHx8ZS5kb2N1bWVudCYmMTEhPT1lLmRvY3VtZW50Lm5vZGVUeXBlKXJldHVybiBufWNhdGNoKGUpe04odCwhMCl9cmV0dXJuIDA8c2UodCxDLG51bGwsW2VdKS5sZW5ndGh9LHNlLmNvbnRhaW5zPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKGUub3duZXJEb2N1bWVudHx8ZSkhPUMmJlQoZSkseShlLHQpfSxzZS5hdHRyPWZ1bmN0aW9uKGUsdCl7KGUub3duZXJEb2N1bWVudHx8ZSkhPUMmJlQoZSk7dmFyIG49Yi5hdHRySGFuZGxlW3QudG9Mb3dlckNhc2UoKV0scj1uJiZELmNhbGwoYi5hdHRySGFuZGxlLHQudG9Mb3dlckNhc2UoKSk/bihlLHQsIUUpOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09cj9yOmQuYXR0cmlidXRlc3x8IUU/ZS5nZXRBdHRyaWJ1dGUodCk6KHI9ZS5nZXRBdHRyaWJ1dGVOb2RlKHQpKSYmci5zcGVjaWZpZWQ/ci52YWx1ZTpudWxsfSxzZS5lc2NhcGU9ZnVuY3Rpb24oZSl7cmV0dXJuKGUrIiIpLnJlcGxhY2UocmUsaWUpfSxzZS5lcnJvcj1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrZSl9LHNlLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oZSl7dmFyIHQsbj1bXSxyPTAsaT0wO2lmKGw9IWQuZGV0ZWN0RHVwbGljYXRlcyx1PSFkLnNvcnRTdGFibGUmJmUuc2xpY2UoMCksZS5zb3J0KGopLGwpe3doaWxlKHQ9ZVtpKytdKXQ9PT1lW2ldJiYocj1uLnB1c2goaSkpO3doaWxlKHItLSllLnNwbGljZShuW3JdLDEpfXJldHVybiB1PW51bGwsZX0sbz1zZS5nZXRUZXh0PWZ1bmN0aW9uKGUpe3ZhciB0LG49IiIscj0wLGk9ZS5ub2RlVHlwZTtpZihpKXtpZigxPT09aXx8OT09PWl8fDExPT09aSl7aWYoInN0cmluZyI9PXR5cGVvZiBlLnRleHRDb250ZW50KXJldHVybiBlLnRleHRDb250ZW50O2ZvcihlPWUuZmlyc3RDaGlsZDtlO2U9ZS5uZXh0U2libGluZyluKz1vKGUpfWVsc2UgaWYoMz09PWl8fDQ9PT1pKXJldHVybiBlLm5vZGVWYWx1ZX1lbHNlIHdoaWxlKHQ9ZVtyKytdKW4rPW8odCk7cmV0dXJuIG59LChiPXNlLnNlbGVjdG9ycz17Y2FjaGVMZW5ndGg6NTAsY3JlYXRlUHNldWRvOmxlLG1hdGNoOkcsYXR0ckhhbmRsZTp7fSxmaW5kOnt9LHJlbGF0aXZlOnsiPiI6e2RpcjoicGFyZW50Tm9kZSIsZmlyc3Q6ITB9LCIgIjp7ZGlyOiJwYXJlbnROb2RlIn0sIisiOntkaXI6InByZXZpb3VzU2libGluZyIsZmlyc3Q6ITB9LCJ+Ijp7ZGlyOiJwcmV2aW91c1NpYmxpbmcifX0scHJlRmlsdGVyOntBVFRSOmZ1bmN0aW9uKGUpe3JldHVybiBlWzFdPWVbMV0ucmVwbGFjZSh0ZSxuZSksZVszXT0oZVszXXx8ZVs0XXx8ZVs1XXx8IiIpLnJlcGxhY2UodGUsbmUpLCJ+PSI9PT1lWzJdJiYoZVszXT0iICIrZVszXSsiICIpLGUuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV09ZVsxXS50b0xvd2VyQ2FzZSgpLCJudGgiPT09ZVsxXS5zbGljZSgwLDMpPyhlWzNdfHxzZS5lcnJvcihlWzBdKSxlWzRdPSsoZVs0XT9lWzVdKyhlWzZdfHwxKToyKigiZXZlbiI9PT1lWzNdfHwib2RkIj09PWVbM10pKSxlWzVdPSsoZVs3XStlWzhdfHwib2RkIj09PWVbM10pKTplWzNdJiZzZS5lcnJvcihlWzBdKSxlfSxQU0VVRE86ZnVuY3Rpb24oZSl7dmFyIHQsbj0hZVs2XSYmZVsyXTtyZXR1cm4gRy5DSElMRC50ZXN0KGVbMF0pP251bGw6KGVbM10/ZVsyXT1lWzRdfHxlWzVdfHwiIjpuJiZYLnRlc3QobikmJih0PWgobiwhMCkpJiYodD1uLmluZGV4T2YoIikiLG4ubGVuZ3RoLXQpLW4ubGVuZ3RoKSYmKGVbMF09ZVswXS5zbGljZSgwLHQpLGVbMl09bi5zbGljZSgwLHQpKSxlLnNsaWNlKDAsMykpfX0sZmlsdGVyOntUQUc6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKHRlLG5lKS50b0xvd2VyQ2FzZSgpO3JldHVybiIqIj09PWU/ZnVuY3Rpb24oKXtyZXR1cm4hMH06ZnVuY3Rpb24oZSl7cmV0dXJuIGUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXR9fSxDTEFTUzpmdW5jdGlvbihlKXt2YXIgdD1tW2UrIiAiXTtyZXR1cm4gdHx8KHQ9bmV3IFJlZ0V4cCgiKF58IitNKyIpIitlKyIoIitNKyJ8JCkiKSkmJm0oZSxmdW5jdGlvbihlKXtyZXR1cm4gdC50ZXN0KCJzdHJpbmciPT10eXBlb2YgZS5jbGFzc05hbWUmJmUuY2xhc3NOYW1lfHwidW5kZWZpbmVkIiE9dHlwZW9mIGUuZ2V0QXR0cmlidXRlJiZlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfSl9LEFUVFI6ZnVuY3Rpb24obixyLGkpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD1zZS5hdHRyKGUsbik7cmV0dXJuIG51bGw9PXQ/IiE9Ij09PXI6IXJ8fCh0Kz0iIiwiPSI9PT1yP3Q9PT1pOiIhPSI9PT1yP3QhPT1pOiJePSI9PT1yP2kmJjA9PT10LmluZGV4T2YoaSk6Iio9Ij09PXI/aSYmLTE8dC5pbmRleE9mKGkpOiIkPSI9PT1yP2kmJnQuc2xpY2UoLWkubGVuZ3RoKT09PWk6In49Ij09PXI/LTE8KCIgIit0LnJlcGxhY2UoQiwiICIpKyIgIikuaW5kZXhPZihpKToifD0iPT09ciYmKHQ9PT1pfHx0LnNsaWNlKDAsaS5sZW5ndGgrMSk9PT1pKyItIikpfX0sQ0hJTEQ6ZnVuY3Rpb24oaCxlLHQsZyx2KXt2YXIgeT0ibnRoIiE9PWguc2xpY2UoMCwzKSxtPSJsYXN0IiE9PWguc2xpY2UoLTQpLHg9Im9mLXR5cGUiPT09ZTtyZXR1cm4gMT09PWcmJjA9PT12P2Z1bmN0aW9uKGUpe3JldHVybiEhZS5wYXJlbnROb2RlfTpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGEscyx1LGw9eSE9PW0/Im5leHRTaWJsaW5nIjoicHJldmlvdXNTaWJsaW5nIixjPWUucGFyZW50Tm9kZSxmPXgmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxwPSFuJiYheCxkPSExO2lmKGMpe2lmKHkpe3doaWxlKGwpe2E9ZTt3aGlsZShhPWFbbF0paWYoeD9hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1mOjE9PT1hLm5vZGVUeXBlKXJldHVybiExO3U9bD0ib25seSI9PT1oJiYhdSYmIm5leHRTaWJsaW5nIn1yZXR1cm4hMH1pZih1PVttP2MuZmlyc3RDaGlsZDpjLmxhc3RDaGlsZF0sbSYmcCl7ZD0ocz0ocj0oaT0obz0oYT1jKVtTXXx8KGFbU109e30pKVthLnVuaXF1ZUlEXXx8KG9bYS51bmlxdWVJRF09e30pKVtoXXx8W10pWzBdPT09ayYmclsxXSkmJnJbMl0sYT1zJiZjLmNoaWxkTm9kZXNbc107d2hpbGUoYT0rK3MmJmEmJmFbbF18fChkPXM9MCl8fHUucG9wKCkpaWYoMT09PWEubm9kZVR5cGUmJisrZCYmYT09PWUpe2lbaF09W2sscyxkXTticmVha319ZWxzZSBpZihwJiYoZD1zPShyPShpPShvPShhPWUpW1NdfHwoYVtTXT17fSkpW2EudW5pcXVlSURdfHwob1thLnVuaXF1ZUlEXT17fSkpW2hdfHxbXSlbMF09PT1rJiZyWzFdKSwhMT09PWQpd2hpbGUoYT0rK3MmJmEmJmFbbF18fChkPXM9MCl8fHUucG9wKCkpaWYoKHg/YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ZjoxPT09YS5ub2RlVHlwZSkmJisrZCYmKHAmJigoaT0obz1hW1NdfHwoYVtTXT17fSkpW2EudW5pcXVlSURdfHwob1thLnVuaXF1ZUlEXT17fSkpW2hdPVtrLGRdKSxhPT09ZSkpYnJlYWs7cmV0dXJuKGQtPXYpPT09Z3x8ZCVnPT0wJiYwPD1kL2d9fX0sUFNFVURPOmZ1bmN0aW9uKGUsbyl7dmFyIHQsYT1iLnBzZXVkb3NbZV18fGIuc2V0RmlsdGVyc1tlLnRvTG93ZXJDYXNlKCldfHxzZS5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK2UpO3JldHVybiBhW1NdP2Eobyk6MTxhLmxlbmd0aD8odD1bZSxlLCIiLG9dLGIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpP2xlKGZ1bmN0aW9uKGUsdCl7dmFyIG4scj1hKGUsbyksaT1yLmxlbmd0aDt3aGlsZShpLS0pZVtuPVAoZSxyW2ldKV09ISh0W25dPXJbaV0pfSk6ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSwwLHQpfSk6YX19LHBzZXVkb3M6e25vdDpsZShmdW5jdGlvbihlKXt2YXIgcj1bXSxpPVtdLHM9ZihlLnJlcGxhY2UoJCwiJDEiKSk7cmV0dXJuIHNbU10/bGUoZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbz1zKGUsbnVsbCxyLFtdKSxhPWUubGVuZ3RoO3doaWxlKGEtLSkoaT1vW2FdKSYmKGVbYV09ISh0W2FdPWkpKX0pOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gclswXT1lLHMocixudWxsLG4saSksclswXT1udWxsLCFpLnBvcCgpfX0pLGhhczpsZShmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIDA8c2UodCxlKS5sZW5ndGh9fSksY29udGFpbnM6bGUoZnVuY3Rpb24odCl7cmV0dXJuIHQ9dC5yZXBsYWNlKHRlLG5lKSxmdW5jdGlvbihlKXtyZXR1cm4tMTwoZS50ZXh0Q29udGVudHx8byhlKSkuaW5kZXhPZih0KX19KSxsYW5nOmxlKGZ1bmN0aW9uKG4pe3JldHVybiBWLnRlc3Qobnx8IiIpfHxzZS5lcnJvcigidW5zdXBwb3J0ZWQgbGFuZzogIituKSxuPW4ucmVwbGFjZSh0ZSxuZSkudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihlKXt2YXIgdDtkb3tpZih0PUU/ZS5sYW5nOmUuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpfHxlLmdldEF0dHJpYnV0ZSgibGFuZyIpKXJldHVybih0PXQudG9Mb3dlckNhc2UoKSk9PT1ufHwwPT09dC5pbmRleE9mKG4rIi0iKX13aGlsZSgoZT1lLnBhcmVudE5vZGUpJiYxPT09ZS5ub2RlVHlwZSk7cmV0dXJuITF9fSksdGFyZ2V0OmZ1bmN0aW9uKGUpe3ZhciB0PW4ubG9jYXRpb24mJm4ubG9jYXRpb24uaGFzaDtyZXR1cm4gdCYmdC5zbGljZSgxKT09PWUuaWR9LHJvb3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1hfSxmb2N1czpmdW5jdGlvbihlKXtyZXR1cm4gZT09PUMuYWN0aXZlRWxlbWVudCYmKCFDLmhhc0ZvY3VzfHxDLmhhc0ZvY3VzKCkpJiYhIShlLnR5cGV8fGUuaHJlZnx8fmUudGFiSW5kZXgpfSxlbmFibGVkOmdlKCExKSxkaXNhYmxlZDpnZSghMCksY2hlY2tlZDpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQmJiEhZS5jaGVja2VkfHwib3B0aW9uIj09PXQmJiEhZS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsITA9PT1lLnNlbGVjdGVkfSxlbXB0eTpmdW5jdGlvbihlKXtmb3IoZT1lLmZpcnN0Q2hpbGQ7ZTtlPWUubmV4dFNpYmxpbmcpaWYoZS5ub2RlVHlwZTw2KXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIWIucHNldWRvcy5lbXB0eShlKX0saGVhZGVyOmZ1bmN0aW9uKGUpe3JldHVybiBKLnRlc3QoZS5ub2RlTmFtZSl9LGlucHV0OmZ1bmN0aW9uKGUpe3JldHVybiBRLnRlc3QoZS5ub2RlTmFtZSl9LGJ1dHRvbjpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQmJiJidXR0b24iPT09ZS50eXBlfHwiYnV0dG9uIj09PXR9LHRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmInRleHQiPT09ZS50eXBlJiYobnVsbD09KHQ9ZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8fCJ0ZXh0Ij09PXQudG9Mb3dlckNhc2UoKSl9LGZpcnN0OnZlKGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDp2ZShmdW5jdGlvbihlLHQpe3JldHVyblt0LTFdfSksZXE6dmUoZnVuY3Rpb24oZSx0LG4pe3JldHVybltuPDA/bit0Om5dfSksZXZlbjp2ZShmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248dDtuKz0yKWUucHVzaChuKTtyZXR1cm4gZX0pLG9kZDp2ZShmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0xO248dDtuKz0yKWUucHVzaChuKTtyZXR1cm4gZX0pLGx0OnZlKGZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9bjwwP24rdDp0PG4/dDpuOzA8PS0tcjspZS5wdXNoKHIpO3JldHVybiBlfSksZ3Q6dmUoZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1uPDA/bit0Om47KytyPHQ7KWUucHVzaChyKTtyZXR1cm4gZX0pfX0pLnBzZXVkb3MubnRoPWIucHNldWRvcy5lcSx7cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCxpbWFnZTohMH0pYi5wc2V1ZG9zW2VdPWRlKGUpO2ZvcihlIGlue3N1Ym1pdDohMCxyZXNldDohMH0pYi5wc2V1ZG9zW2VdPWhlKGUpO2Z1bmN0aW9uIG1lKCl7fWZ1bmN0aW9uIHhlKGUpe2Zvcih2YXIgdD0wLG49ZS5sZW5ndGgscj0iIjt0PG47dCsrKXIrPWVbdF0udmFsdWU7cmV0dXJuIHJ9ZnVuY3Rpb24gYmUocyxlLHQpe3ZhciB1PWUuZGlyLGw9ZS5uZXh0LGM9bHx8dSxmPXQmJiJwYXJlbnROb2RlIj09PWMscD1yKys7cmV0dXJuIGUuZmlyc3Q/ZnVuY3Rpb24oZSx0LG4pe3doaWxlKGU9ZVt1XSlpZigxPT09ZS5ub2RlVHlwZXx8ZilyZXR1cm4gcyhlLHQsbik7cmV0dXJuITF9OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYT1bayxwXTtpZihuKXt3aGlsZShlPWVbdV0paWYoKDE9PT1lLm5vZGVUeXBlfHxmKSYmcyhlLHQsbikpcmV0dXJuITB9ZWxzZSB3aGlsZShlPWVbdV0paWYoMT09PWUubm9kZVR5cGV8fGYpaWYoaT0obz1lW1NdfHwoZVtTXT17fSkpW2UudW5pcXVlSURdfHwob1tlLnVuaXF1ZUlEXT17fSksbCYmbD09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSllPWVbdV18fGU7ZWxzZXtpZigocj1pW2NdKSYmclswXT09PWsmJnJbMV09PT1wKXJldHVybiBhWzJdPXJbMl07aWYoKGlbY109YSlbMl09cyhlLHQsbikpcmV0dXJuITB9cmV0dXJuITF9fWZ1bmN0aW9uIHdlKGkpe3JldHVybiAxPGkubGVuZ3RoP2Z1bmN0aW9uKGUsdCxuKXt2YXIgcj1pLmxlbmd0aDt3aGlsZShyLS0paWYoIWlbcl0oZSx0LG4pKXJldHVybiExO3JldHVybiEwfTppWzBdfWZ1bmN0aW9uIFRlKGUsdCxuLHIsaSl7Zm9yKHZhciBvLGE9W10scz0wLHU9ZS5sZW5ndGgsbD1udWxsIT10O3M8dTtzKyspKG89ZVtzXSkmJihuJiYhbihvLHIsaSl8fChhLnB1c2gobyksbCYmdC5wdXNoKHMpKSk7cmV0dXJuIGF9ZnVuY3Rpb24gQ2UoZCxoLGcsdix5LGUpe3JldHVybiB2JiYhdltTXSYmKHY9Q2UodikpLHkmJiF5W1NdJiYoeT1DZSh5LGUpKSxsZShmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscz1bXSx1PVtdLGw9dC5sZW5ndGgsYz1lfHxmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPTAsaT10Lmxlbmd0aDtyPGk7cisrKXNlKGUsdFtyXSxuKTtyZXR1cm4gbn0oaHx8IioiLG4ubm9kZVR5cGU/W25dOm4sW10pLGY9IWR8fCFlJiZoP2M6VGUoYyxzLGQsbixyKSxwPWc/eXx8KGU/ZDpsfHx2KT9bXTp0OmY7aWYoZyYmZyhmLHAsbixyKSx2KXtpPVRlKHAsdSksdihpLFtdLG4sciksbz1pLmxlbmd0aDt3aGlsZShvLS0pKGE9aVtvXSkmJihwW3Vbb11dPSEoZlt1W29dXT1hKSl9aWYoZSl7aWYoeXx8ZCl7aWYoeSl7aT1bXSxvPXAubGVuZ3RoO3doaWxlKG8tLSkoYT1wW29dKSYmaS5wdXNoKGZbb109YSk7eShudWxsLHA9W10saSxyKX1vPXAubGVuZ3RoO3doaWxlKG8tLSkoYT1wW29dKSYmLTE8KGk9eT9QKGUsYSk6c1tvXSkmJihlW2ldPSEodFtpXT1hKSl9fWVsc2UgcD1UZShwPT09dD9wLnNwbGljZShsLHAubGVuZ3RoKTpwKSx5P3kobnVsbCx0LHAscik6SC5hcHBseSh0LHApfSl9ZnVuY3Rpb24gRWUoZSl7Zm9yKHZhciBpLHQsbixyPWUubGVuZ3RoLG89Yi5yZWxhdGl2ZVtlWzBdLnR5cGVdLGE9b3x8Yi5yZWxhdGl2ZVsiICJdLHM9bz8xOjAsdT1iZShmdW5jdGlvbihlKXtyZXR1cm4gZT09PWl9LGEsITApLGw9YmUoZnVuY3Rpb24oZSl7cmV0dXJuLTE8UChpLGUpfSxhLCEwKSxjPVtmdW5jdGlvbihlLHQsbil7dmFyIHI9IW8mJihufHx0IT09dyl8fCgoaT10KS5ub2RlVHlwZT91KGUsdCxuKTpsKGUsdCxuKSk7cmV0dXJuIGk9bnVsbCxyfV07czxyO3MrKylpZih0PWIucmVsYXRpdmVbZVtzXS50eXBlXSljPVtiZSh3ZShjKSx0KV07ZWxzZXtpZigodD1iLmZpbHRlcltlW3NdLnR5cGVdLmFwcGx5KG51bGwsZVtzXS5tYXRjaGVzKSlbU10pe2ZvcihuPSsrcztuPHI7bisrKWlmKGIucmVsYXRpdmVbZVtuXS50eXBlXSlicmVhaztyZXR1cm4gQ2UoMTxzJiZ3ZShjKSwxPHMmJnhlKGUuc2xpY2UoMCxzLTEpLmNvbmNhdCh7dmFsdWU6IiAiPT09ZVtzLTJdLnR5cGU/IioiOiIifSkpLnJlcGxhY2UoJCwiJDEiKSx0LHM8biYmRWUoZS5zbGljZShzLG4pKSxuPHImJkVlKGU9ZS5zbGljZShuKSksbjxyJiZ4ZShlKSl9Yy5wdXNoKHQpfXJldHVybiB3ZShjKX1yZXR1cm4gbWUucHJvdG90eXBlPWIuZmlsdGVycz1iLnBzZXVkb3MsYi5zZXRGaWx0ZXJzPW5ldyBtZSxoPXNlLnRva2VuaXplPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYSxzLHUsbD14W2UrIiAiXTtpZihsKXJldHVybiB0PzA6bC5zbGljZSgwKTthPWUscz1bXSx1PWIucHJlRmlsdGVyO3doaWxlKGEpe2ZvcihvIGluIG4mJiEocj1fLmV4ZWMoYSkpfHwociYmKGE9YS5zbGljZShyWzBdLmxlbmd0aCl8fGEpLHMucHVzaChpPVtdKSksbj0hMSwocj16LmV4ZWMoYSkpJiYobj1yLnNoaWZ0KCksaS5wdXNoKHt2YWx1ZTpuLHR5cGU6clswXS5yZXBsYWNlKCQsIiAiKX0pLGE9YS5zbGljZShuLmxlbmd0aCkpLGIuZmlsdGVyKSEocj1HW29dLmV4ZWMoYSkpfHx1W29dJiYhKHI9dVtvXShyKSl8fChuPXIuc2hpZnQoKSxpLnB1c2goe3ZhbHVlOm4sdHlwZTpvLG1hdGNoZXM6cn0pLGE9YS5zbGljZShuLmxlbmd0aCkpO2lmKCFuKWJyZWFrfXJldHVybiB0P2EubGVuZ3RoOmE/c2UuZXJyb3IoZSk6eChlLHMpLnNsaWNlKDApfSxmPXNlLmNvbXBpbGU9ZnVuY3Rpb24oZSx0KXt2YXIgbix2LHksbSx4LHIsaT1bXSxvPVtdLGE9QVtlKyIgIl07aWYoIWEpe3R8fCh0PWgoZSkpLG49dC5sZW5ndGg7d2hpbGUobi0tKShhPUVlKHRbbl0pKVtTXT9pLnB1c2goYSk6by5wdXNoKGEpOyhhPUEoZSwodj1vLG09MDwoeT1pKS5sZW5ndGgseD0wPHYubGVuZ3RoLHI9ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdT0wLGw9IjAiLGM9ZSYmW10sZj1bXSxwPXcsZD1lfHx4JiZiLmZpbmQuVEFHKCIqIixpKSxoPWsrPW51bGw9PXA/MTpNYXRoLnJhbmRvbSgpfHwuMSxnPWQubGVuZ3RoO2ZvcihpJiYodz10PT1DfHx0fHxpKTtsIT09ZyYmbnVsbCE9KG89ZFtsXSk7bCsrKXtpZih4JiZvKXthPTAsdHx8by5vd25lckRvY3VtZW50PT1DfHwoVChvKSxuPSFFKTt3aGlsZShzPXZbYSsrXSlpZihzKG8sdHx8QyxuKSl7ci5wdXNoKG8pO2JyZWFrfWkmJihrPWgpfW0mJigobz0hcyYmbykmJnUtLSxlJiZjLnB1c2gobykpfWlmKHUrPWwsbSYmbCE9PXUpe2E9MDt3aGlsZShzPXlbYSsrXSlzKGMsZix0LG4pO2lmKGUpe2lmKDA8dSl3aGlsZShsLS0pY1tsXXx8ZltsXXx8KGZbbF09cS5jYWxsKHIpKTtmPVRlKGYpfUguYXBwbHkocixmKSxpJiYhZSYmMDxmLmxlbmd0aCYmMTx1K3kubGVuZ3RoJiZzZS51bmlxdWVTb3J0KHIpfXJldHVybiBpJiYoaz1oLHc9cCksY30sbT9sZShyKTpyKSkpLnNlbGVjdG9yPWV9cmV0dXJuIGF9LGc9c2Uuc2VsZWN0PWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzLHUsbD0iZnVuY3Rpb24iPT10eXBlb2YgZSYmZSxjPSFyJiZoKGU9bC5zZWxlY3Rvcnx8ZSk7aWYobj1ufHxbXSwxPT09Yy5sZW5ndGgpe2lmKDI8KG89Y1swXT1jWzBdLnNsaWNlKDApKS5sZW5ndGgmJiJJRCI9PT0oYT1vWzBdKS50eXBlJiY5PT09dC5ub2RlVHlwZSYmRSYmYi5yZWxhdGl2ZVtvWzFdLnR5cGVdKXtpZighKHQ9KGIuZmluZC5JRChhLm1hdGNoZXNbMF0ucmVwbGFjZSh0ZSxuZSksdCl8fFtdKVswXSkpcmV0dXJuIG47bCYmKHQ9dC5wYXJlbnROb2RlKSxlPWUuc2xpY2Uoby5zaGlmdCgpLnZhbHVlLmxlbmd0aCl9aT1HLm5lZWRzQ29udGV4dC50ZXN0KGUpPzA6by5sZW5ndGg7d2hpbGUoaS0tKXtpZihhPW9baV0sYi5yZWxhdGl2ZVtzPWEudHlwZV0pYnJlYWs7aWYoKHU9Yi5maW5kW3NdKSYmKHI9dShhLm1hdGNoZXNbMF0ucmVwbGFjZSh0ZSxuZSksZWUudGVzdChvWzBdLnR5cGUpJiZ5ZSh0LnBhcmVudE5vZGUpfHx0KSkpe2lmKG8uc3BsaWNlKGksMSksIShlPXIubGVuZ3RoJiZ4ZShvKSkpcmV0dXJuIEguYXBwbHkobixyKSxuO2JyZWFrfX19cmV0dXJuKGx8fGYoZSxjKSkocix0LCFFLG4sIXR8fGVlLnRlc3QoZSkmJnllKHQucGFyZW50Tm9kZSl8fHQpLG59LGQuc29ydFN0YWJsZT1TLnNwbGl0KCIiKS5zb3J0KGopLmpvaW4oIiIpPT09UyxkLmRldGVjdER1cGxpY2F0ZXM9ISFsLFQoKSxkLnNvcnREZXRhY2hlZD1jZShmdW5jdGlvbihlKXtyZXR1cm4gMSZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKEMuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKSl9KSxjZShmdW5jdGlvbihlKXtyZXR1cm4gZS5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iLCIjIj09PWUuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKX0pfHxmZSgidHlwZXxocmVmfGhlaWdodHx3aWR0aCIsZnVuY3Rpb24oZSx0LG4pe2lmKCFuKXJldHVybiBlLmdldEF0dHJpYnV0ZSh0LCJ0eXBlIj09PXQudG9Mb3dlckNhc2UoKT8xOjIpfSksZC5hdHRyaWJ1dGVzJiZjZShmdW5jdGlvbihlKXtyZXR1cm4gZS5pbm5lckhUTUw9IjxpbnB1dC8+IixlLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIpLCIiPT09ZS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgidmFsdWUiKX0pfHxmZSgidmFsdWUiLGZ1bmN0aW9uKGUsdCxuKXtpZighbiYmImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSlyZXR1cm4gZS5kZWZhdWx0VmFsdWV9KSxjZShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIil9KXx8ZmUoUixmdW5jdGlvbihlLHQsbil7dmFyIHI7aWYoIW4pcmV0dXJuITA9PT1lW3RdP3QudG9Mb3dlckNhc2UoKToocj1lLmdldEF0dHJpYnV0ZU5vZGUodCkpJiZyLnNwZWNpZmllZD9yLnZhbHVlOm51bGx9KSxzZX0oQyk7Uy5maW5kPWQsUy5leHByPWQuc2VsZWN0b3JzLFMuZXhwclsiOiJdPVMuZXhwci5wc2V1ZG9zLFMudW5pcXVlU29ydD1TLnVuaXF1ZT1kLnVuaXF1ZVNvcnQsUy50ZXh0PWQuZ2V0VGV4dCxTLmlzWE1MRG9jPWQuaXNYTUwsUy5jb250YWlucz1kLmNvbnRhaW5zLFMuZXNjYXBlU2VsZWN0b3I9ZC5lc2NhcGU7dmFyIGg9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPVtdLGk9dm9pZCAwIT09bjt3aGlsZSgoZT1lW3RdKSYmOSE9PWUubm9kZVR5cGUpaWYoMT09PWUubm9kZVR5cGUpe2lmKGkmJlMoZSkuaXMobikpYnJlYWs7ci5wdXNoKGUpfXJldHVybiByfSxUPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtdO2U7ZT1lLm5leHRTaWJsaW5nKTE9PT1lLm5vZGVUeXBlJiZlIT09dCYmbi5wdXNoKGUpO3JldHVybiBufSxrPVMuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQ7ZnVuY3Rpb24gQShlLHQpe3JldHVybiBlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT10LnRvTG93ZXJDYXNlKCl9dmFyIE49L148KFthLXpdW15cL1wwPjpceDIwXHRcclxuXGZdKilbXHgyMFx0XHJcblxmXSpcLz8+KD86PFwvXDE+fCkkL2k7ZnVuY3Rpb24gaihlLG4scil7cmV0dXJuIG0obik/Uy5ncmVwKGUsZnVuY3Rpb24oZSx0KXtyZXR1cm4hIW4uY2FsbChlLHQsZSkhPT1yfSk6bi5ub2RlVHlwZT9TLmdyZXAoZSxmdW5jdGlvbihlKXtyZXR1cm4gZT09PW4hPT1yfSk6InN0cmluZyIhPXR5cGVvZiBuP1MuZ3JlcChlLGZ1bmN0aW9uKGUpe3JldHVybi0xPGkuY2FsbChuLGUpIT09cn0pOlMuZmlsdGVyKG4sZSxyKX1TLmZpbHRlcj1mdW5jdGlvbihlLHQsbil7dmFyIHI9dFswXTtyZXR1cm4gbiYmKGU9Ijpub3QoIitlKyIpIiksMT09PXQubGVuZ3RoJiYxPT09ci5ub2RlVHlwZT9TLmZpbmQubWF0Y2hlc1NlbGVjdG9yKHIsZSk/W3JdOltdOlMuZmluZC5tYXRjaGVzKGUsUy5ncmVwKHQsZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lLm5vZGVUeXBlfSkpfSxTLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihlKXt2YXIgdCxuLHI9dGhpcy5sZW5ndGgsaT10aGlzO2lmKCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gdGhpcy5wdXNoU3RhY2soUyhlKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodD0wO3Q8cjt0KyspaWYoUy5jb250YWlucyhpW3RdLHRoaXMpKXJldHVybiEwfSkpO2ZvcihuPXRoaXMucHVzaFN0YWNrKFtdKSx0PTA7dDxyO3QrKylTLmZpbmQoZSxpW3RdLG4pO3JldHVybiAxPHI/Uy51bmlxdWVTb3J0KG4pOm59LGZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soaih0aGlzLGV8fFtdLCExKSl9LG5vdDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soaih0aGlzLGV8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGUpe3JldHVybiEhaih0aGlzLCJzdHJpbmciPT10eXBlb2YgZSYmay50ZXN0KGUpP1MoZSk6ZXx8W10sITEpLmxlbmd0aH19KTt2YXIgRCxxPS9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC87KFMuZm4uaW5pdD1mdW5jdGlvbihlLHQsbil7dmFyIHIsaTtpZighZSlyZXR1cm4gdGhpcztpZihuPW58fEQsInN0cmluZyI9PXR5cGVvZiBlKXtpZighKHI9IjwiPT09ZVswXSYmIj4iPT09ZVtlLmxlbmd0aC0xXSYmMzw9ZS5sZW5ndGg/W251bGwsZSxudWxsXTpxLmV4ZWMoZSkpfHwhclsxXSYmdClyZXR1cm4hdHx8dC5qcXVlcnk/KHR8fG4pLmZpbmQoZSk6dGhpcy5jb25zdHJ1Y3Rvcih0KS5maW5kKGUpO2lmKHJbMV0pe2lmKHQ9dCBpbnN0YW5jZW9mIFM/dFswXTp0LFMubWVyZ2UodGhpcyxTLnBhcnNlSFRNTChyWzFdLHQmJnQubm9kZVR5cGU/dC5vd25lckRvY3VtZW50fHx0OkUsITApKSxOLnRlc3QoclsxXSkmJlMuaXNQbGFpbk9iamVjdCh0KSlmb3IociBpbiB0KW0odGhpc1tyXSk/dGhpc1tyXSh0W3JdKTp0aGlzLmF0dHIocix0W3JdKTtyZXR1cm4gdGhpc31yZXR1cm4oaT1FLmdldEVsZW1lbnRCeUlkKHJbMl0pKSYmKHRoaXNbMF09aSx0aGlzLmxlbmd0aD0xKSx0aGlzfXJldHVybiBlLm5vZGVUeXBlPyh0aGlzWzBdPWUsdGhpcy5sZW5ndGg9MSx0aGlzKTptKGUpP3ZvaWQgMCE9PW4ucmVhZHk/bi5yZWFkeShlKTplKFMpOlMubWFrZUFycmF5KGUsdGhpcyl9KS5wcm90b3R5cGU9Uy5mbixEPVMoRSk7dmFyIEw9L14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sSD17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtmdW5jdGlvbiBPKGUsdCl7d2hpbGUoKGU9ZVt0XSkmJjEhPT1lLm5vZGVUeXBlKTtyZXR1cm4gZX1TLmZuLmV4dGVuZCh7aGFzOmZ1bmN0aW9uKGUpe3ZhciB0PVMoZSx0aGlzKSxuPXQubGVuZ3RoO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8bjtlKyspaWYoUy5jb250YWlucyh0aGlzLHRbZV0pKXJldHVybiEwfSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTAsaT10aGlzLmxlbmd0aCxvPVtdLGE9InN0cmluZyIhPXR5cGVvZiBlJiZTKGUpO2lmKCFrLnRlc3QoZSkpZm9yKDtyPGk7cisrKWZvcihuPXRoaXNbcl07biYmbiE9PXQ7bj1uLnBhcmVudE5vZGUpaWYobi5ub2RlVHlwZTwxMSYmKGE/LTE8YS5pbmRleChuKToxPT09bi5ub2RlVHlwZSYmUy5maW5kLm1hdGNoZXNTZWxlY3RvcihuLGUpKSl7by5wdXNoKG4pO2JyZWFrfXJldHVybiB0aGlzLnB1c2hTdGFjaygxPG8ubGVuZ3RoP1MudW5pcXVlU29ydChvKTpvKX0saW5kZXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/InN0cmluZyI9PXR5cGVvZiBlP2kuY2FsbChTKGUpLHRoaXNbMF0pOmkuY2FsbCh0aGlzLGUuanF1ZXJ5P2VbMF06ZSk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soUy51bmlxdWVTb3J0KFMubWVyZ2UodGhpcy5nZXQoKSxTKGUsdCkpKSl9LGFkZEJhY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PWU/dGhpcy5wcmV2T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIoZSkpfX0pLFMuZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmMTEhPT10Lm5vZGVUeXBlP3Q6bnVsbH0scGFyZW50czpmdW5jdGlvbihlKXtyZXR1cm4gaChlLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGgoZSwicGFyZW50Tm9kZSIsbil9LG5leHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIE8oZSwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihlKXtyZXR1cm4gTyhlLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihlKXtyZXR1cm4gaChlLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGUpe3JldHVybiBoKGUsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBoKGUsIm5leHRTaWJsaW5nIixuKX0scHJldlVudGlsOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gaChlLCJwcmV2aW91c1NpYmxpbmciLG4pfSxzaWJsaW5nczpmdW5jdGlvbihlKXtyZXR1cm4gVCgoZS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxlKX0sY2hpbGRyZW46ZnVuY3Rpb24oZSl7cmV0dXJuIFQoZS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUuY29udGVudERvY3VtZW50JiZyKGUuY29udGVudERvY3VtZW50KT9lLmNvbnRlbnREb2N1bWVudDooQShlLCJ0ZW1wbGF0ZSIpJiYoZT1lLmNvbnRlbnR8fGUpLFMubWVyZ2UoW10sZS5jaGlsZE5vZGVzKSl9fSxmdW5jdGlvbihyLGkpe1MuZm5bcl09ZnVuY3Rpb24oZSx0KXt2YXIgbj1TLm1hcCh0aGlzLGksZSk7cmV0dXJuIlVudGlsIiE9PXIuc2xpY2UoLTUpJiYodD1lKSx0JiYic3RyaW5nIj09dHlwZW9mIHQmJihuPVMuZmlsdGVyKHQsbikpLDE8dGhpcy5sZW5ndGgmJihIW3JdfHxTLnVuaXF1ZVNvcnQobiksTC50ZXN0KHIpJiZuLnJldmVyc2UoKSksdGhpcy5wdXNoU3RhY2sobil9fSk7dmFyIFA9L1teXHgyMFx0XHJcblxmXSsvZztmdW5jdGlvbiBSKGUpe3JldHVybiBlfWZ1bmN0aW9uIE0oZSl7dGhyb3cgZX1mdW5jdGlvbiBJKGUsdCxuLHIpe3ZhciBpO3RyeXtlJiZtKGk9ZS5wcm9taXNlKT9pLmNhbGwoZSkuZG9uZSh0KS5mYWlsKG4pOmUmJm0oaT1lLnRoZW4pP2kuY2FsbChlLHQsbik6dC5hcHBseSh2b2lkIDAsW2VdLnNsaWNlKHIpKX1jYXRjaChlKXtuLmFwcGx5KHZvaWQgMCxbZV0pfX1TLkNhbGxiYWNrcz1mdW5jdGlvbihyKXt2YXIgZSxuO3I9InN0cmluZyI9PXR5cGVvZiByPyhlPXIsbj17fSxTLmVhY2goZS5tYXRjaChQKXx8W10sZnVuY3Rpb24oZSx0KXtuW3RdPSEwfSksbik6Uy5leHRlbmQoe30scik7dmFyIGksdCxvLGEscz1bXSx1PVtdLGw9LTEsYz1mdW5jdGlvbigpe2ZvcihhPWF8fHIub25jZSxvPWk9ITA7dS5sZW5ndGg7bD0tMSl7dD11LnNoaWZ0KCk7d2hpbGUoKytsPHMubGVuZ3RoKSExPT09c1tsXS5hcHBseSh0WzBdLHRbMV0pJiZyLnN0b3BPbkZhbHNlJiYobD1zLmxlbmd0aCx0PSExKX1yLm1lbW9yeXx8KHQ9ITEpLGk9ITEsYSYmKHM9dD9bXToiIil9LGY9e2FkZDpmdW5jdGlvbigpe3JldHVybiBzJiYodCYmIWkmJihsPXMubGVuZ3RoLTEsdS5wdXNoKHQpKSxmdW5jdGlvbiBuKGUpe1MuZWFjaChlLGZ1bmN0aW9uKGUsdCl7bSh0KT9yLnVuaXF1ZSYmZi5oYXModCl8fHMucHVzaCh0KTp0JiZ0Lmxlbmd0aCYmInN0cmluZyIhPT13KHQpJiZuKHQpfSl9KGFyZ3VtZW50cyksdCYmIWkmJmMoKSksdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIFMuZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oZSx0KXt2YXIgbjt3aGlsZSgtMTwobj1TLmluQXJyYXkodCxzLG4pKSlzLnNwbGljZShuLDEpLG48PWwmJmwtLX0pLHRoaXN9LGhhczpmdW5jdGlvbihlKXtyZXR1cm4gZT8tMTxTLmluQXJyYXkoZSxzKTowPHMubGVuZ3RofSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiBzJiYocz1bXSksdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBhPXU9W10scz10PSIiLHRoaXN9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIXN9LGxvY2s6ZnVuY3Rpb24oKXtyZXR1cm4gYT11PVtdLHR8fGl8fChzPXQ9IiIpLHRoaXN9LGxvY2tlZDpmdW5jdGlvbigpe3JldHVybiEhYX0sZmlyZVdpdGg6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYXx8KHQ9W2UsKHQ9dHx8W10pLnNsaWNlP3Quc2xpY2UoKTp0XSx1LnB1c2godCksaXx8YygpKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKCl7cmV0dXJuIGYuZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpLHRoaXN9LGZpcmVkOmZ1bmN0aW9uKCl7cmV0dXJuISFvfX07cmV0dXJuIGZ9LFMuZXh0ZW5kKHtEZWZlcnJlZDpmdW5jdGlvbihlKXt2YXIgbz1bWyJub3RpZnkiLCJwcm9ncmVzcyIsUy5DYWxsYmFja3MoIm1lbW9yeSIpLFMuQ2FsbGJhY2tzKCJtZW1vcnkiKSwyXSxbInJlc29sdmUiLCJkb25lIixTLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxTLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwwLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFpbCIsUy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksUy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksMSwicmVqZWN0ZWQiXV0saT0icGVuZGluZyIsYT17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gaX0sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIHMuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSwiY2F0Y2giOmZ1bmN0aW9uKGUpe3JldHVybiBhLnRoZW4obnVsbCxlKX0scGlwZTpmdW5jdGlvbigpe3ZhciBpPWFyZ3VtZW50cztyZXR1cm4gUy5EZWZlcnJlZChmdW5jdGlvbihyKXtTLmVhY2gobyxmdW5jdGlvbihlLHQpe3ZhciBuPW0oaVt0WzRdXSkmJmlbdFs0XV07c1t0WzFdXShmdW5jdGlvbigpe3ZhciBlPW4mJm4uYXBwbHkodGhpcyxhcmd1bWVudHMpO2UmJm0oZS5wcm9taXNlKT9lLnByb21pc2UoKS5wcm9ncmVzcyhyLm5vdGlmeSkuZG9uZShyLnJlc29sdmUpLmZhaWwoci5yZWplY3QpOnJbdFswXSsiV2l0aCJdKHRoaXMsbj9bZV06YXJndW1lbnRzKX0pfSksaT1udWxsfSkucHJvbWlzZSgpfSx0aGVuOmZ1bmN0aW9uKHQsbixyKXt2YXIgdT0wO2Z1bmN0aW9uIGwoaSxvLGEscyl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49dGhpcyxyPWFyZ3VtZW50cyxlPWZ1bmN0aW9uKCl7dmFyIGUsdDtpZighKGk8dSkpe2lmKChlPWEuYXBwbHkobixyKSk9PT1vLnByb21pc2UoKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb24iKTt0PWUmJigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSYmZS50aGVuLG0odCk/cz90LmNhbGwoZSxsKHUsbyxSLHMpLGwodSxvLE0scykpOih1KyssdC5jYWxsKGUsbCh1LG8sUixzKSxsKHUsbyxNLHMpLGwodSxvLFIsby5ub3RpZnlXaXRoKSkpOihhIT09UiYmKG49dm9pZCAwLHI9W2VdKSwoc3x8by5yZXNvbHZlV2l0aCkobixyKSl9fSx0PXM/ZTpmdW5jdGlvbigpe3RyeXtlKCl9Y2F0Y2goZSl7Uy5EZWZlcnJlZC5leGNlcHRpb25Ib29rJiZTLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2soZSx0LnN0YWNrVHJhY2UpLHU8PWkrMSYmKGEhPT1NJiYobj12b2lkIDAscj1bZV0pLG8ucmVqZWN0V2l0aChuLHIpKX19O2k/dCgpOihTLkRlZmVycmVkLmdldFN0YWNrSG9vayYmKHQuc3RhY2tUcmFjZT1TLkRlZmVycmVkLmdldFN0YWNrSG9vaygpKSxDLnNldFRpbWVvdXQodCkpfX1yZXR1cm4gUy5EZWZlcnJlZChmdW5jdGlvbihlKXtvWzBdWzNdLmFkZChsKDAsZSxtKHIpP3I6UixlLm5vdGlmeVdpdGgpKSxvWzFdWzNdLmFkZChsKDAsZSxtKHQpP3Q6UikpLG9bMl1bM10uYWRkKGwoMCxlLG0obik/bjpNKSl9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWU/Uy5leHRlbmQoZSxhKTphfX0scz17fTtyZXR1cm4gUy5lYWNoKG8sZnVuY3Rpb24oZSx0KXt2YXIgbj10WzJdLHI9dFs1XTthW3RbMV1dPW4uYWRkLHImJm4uYWRkKGZ1bmN0aW9uKCl7aT1yfSxvWzMtZV1bMl0uZGlzYWJsZSxvWzMtZV1bM10uZGlzYWJsZSxvWzBdWzJdLmxvY2ssb1swXVszXS5sb2NrKSxuLmFkZCh0WzNdLmZpcmUpLHNbdFswXV09ZnVuY3Rpb24oKXtyZXR1cm4gc1t0WzBdKyJXaXRoIl0odGhpcz09PXM/dm9pZCAwOnRoaXMsYXJndW1lbnRzKSx0aGlzfSxzW3RbMF0rIldpdGgiXT1uLmZpcmVXaXRofSksYS5wcm9taXNlKHMpLGUmJmUuY2FsbChzLHMpLHN9LHdoZW46ZnVuY3Rpb24oZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aCx0PW4scj1BcnJheSh0KSxpPXMuY2FsbChhcmd1bWVudHMpLG89Uy5EZWZlcnJlZCgpLGE9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JbdF09dGhpcyxpW3RdPTE8YXJndW1lbnRzLmxlbmd0aD9zLmNhbGwoYXJndW1lbnRzKTplLC0tbnx8by5yZXNvbHZlV2l0aChyLGkpfX07aWYobjw9MSYmKEkoZSxvLmRvbmUoYSh0KSkucmVzb2x2ZSxvLnJlamVjdCwhbiksInBlbmRpbmciPT09by5zdGF0ZSgpfHxtKGlbdF0mJmlbdF0udGhlbikpKXJldHVybiBvLnRoZW4oKTt3aGlsZSh0LS0pSShpW3RdLGEodCksby5yZWplY3QpO3JldHVybiBvLnByb21pc2UoKX19KTt2YXIgVz0vXihFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLztTLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2s9ZnVuY3Rpb24oZSx0KXtDLmNvbnNvbGUmJkMuY29uc29sZS53YXJuJiZlJiZXLnRlc3QoZS5uYW1lKSYmQy5jb25zb2xlLndhcm4oImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIrZS5tZXNzYWdlLGUuc3RhY2ssdCl9LFMucmVhZHlFeGNlcHRpb249ZnVuY3Rpb24oZSl7Qy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgZX0pfTt2YXIgRj1TLkRlZmVycmVkKCk7ZnVuY3Rpb24gQigpe0UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQiksQy5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixCKSxTLnJlYWR5KCl9Uy5mbi5yZWFkeT1mdW5jdGlvbihlKXtyZXR1cm4gRi50aGVuKGUpWyJjYXRjaCJdKGZ1bmN0aW9uKGUpe1MucmVhZHlFeGNlcHRpb24oZSl9KSx0aGlzfSxTLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxyZWFkeTpmdW5jdGlvbihlKXsoITA9PT1lPy0tUy5yZWFkeVdhaXQ6Uy5pc1JlYWR5KXx8KFMuaXNSZWFkeT0hMCkhPT1lJiYwPC0tUy5yZWFkeVdhaXR8fEYucmVzb2x2ZVdpdGgoRSxbU10pfX0pLFMucmVhZHkudGhlbj1GLnRoZW4sImNvbXBsZXRlIj09PUUucmVhZHlTdGF0ZXx8ImxvYWRpbmciIT09RS5yZWFkeVN0YXRlJiYhRS5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGw/Qy5zZXRUaW1lb3V0KFMucmVhZHkpOihFLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEIpLEMuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsQikpO3ZhciAkPWZ1bmN0aW9uKGUsdCxuLHIsaSxvLGEpe3ZhciBzPTAsdT1lLmxlbmd0aCxsPW51bGw9PW47aWYoIm9iamVjdCI9PT13KG4pKWZvcihzIGluIGk9ITAsbikkKGUsdCxzLG5bc10sITAsbyxhKTtlbHNlIGlmKHZvaWQgMCE9PXImJihpPSEwLG0ocil8fChhPSEwKSxsJiYoYT8odC5jYWxsKGUsciksdD1udWxsKToobD10LHQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBsLmNhbGwoUyhlKSxuKX0pKSx0KSlmb3IoO3M8dTtzKyspdChlW3NdLG4sYT9yOnIuY2FsbChlW3NdLHMsdChlW3NdLG4pKSk7cmV0dXJuIGk/ZTpsP3QuY2FsbChlKTp1P3QoZVswXSxuKTpvfSxfPS9eLW1zLS8sej0vLShbYS16XSkvZztmdW5jdGlvbiBVKGUsdCl7cmV0dXJuIHQudG9VcHBlckNhc2UoKX1mdW5jdGlvbiBYKGUpe3JldHVybiBlLnJlcGxhY2UoXywibXMtIikucmVwbGFjZSh6LFUpfXZhciBWPWZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZS5ub2RlVHlwZXx8OT09PWUubm9kZVR5cGV8fCErZS5ub2RlVHlwZX07ZnVuY3Rpb24gRygpe3RoaXMuZXhwYW5kbz1TLmV4cGFuZG8rRy51aWQrK31HLnVpZD0xLEcucHJvdG90eXBlPXtjYWNoZTpmdW5jdGlvbihlKXt2YXIgdD1lW3RoaXMuZXhwYW5kb107cmV0dXJuIHR8fCh0PXt9LFYoZSkmJihlLm5vZGVUeXBlP2VbdGhpcy5leHBhbmRvXT10Ok9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHRoaXMuZXhwYW5kbyx7dmFsdWU6dCxjb25maWd1cmFibGU6ITB9KSkpLHR9LHNldDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaT10aGlzLmNhY2hlKGUpO2lmKCJzdHJpbmciPT10eXBlb2YgdClpW1godCldPW47ZWxzZSBmb3IociBpbiB0KWlbWChyKV09dFtyXTtyZXR1cm4gaX0sZ2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQ/dGhpcy5jYWNoZShlKTplW3RoaXMuZXhwYW5kb10mJmVbdGhpcy5leHBhbmRvXVtYKHQpXX0sYWNjZXNzOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdm9pZCAwPT09dHx8dCYmInN0cmluZyI9PXR5cGVvZiB0JiZ2b2lkIDA9PT1uP3RoaXMuZ2V0KGUsdCk6KHRoaXMuc2V0KGUsdCxuKSx2b2lkIDAhPT1uP246dCl9LHJlbW92ZTpmdW5jdGlvbihlLHQpe3ZhciBuLHI9ZVt0aGlzLmV4cGFuZG9dO2lmKHZvaWQgMCE9PXIpe2lmKHZvaWQgMCE9PXQpe249KHQ9QXJyYXkuaXNBcnJheSh0KT90Lm1hcChYKToodD1YKHQpKWluIHI/W3RdOnQubWF0Y2goUCl8fFtdKS5sZW5ndGg7d2hpbGUobi0tKWRlbGV0ZSByW3Rbbl1dfSh2b2lkIDA9PT10fHxTLmlzRW1wdHlPYmplY3QocikpJiYoZS5ub2RlVHlwZT9lW3RoaXMuZXhwYW5kb109dm9pZCAwOmRlbGV0ZSBlW3RoaXMuZXhwYW5kb10pfX0saGFzRGF0YTpmdW5jdGlvbihlKXt2YXIgdD1lW3RoaXMuZXhwYW5kb107cmV0dXJuIHZvaWQgMCE9PXQmJiFTLmlzRW1wdHlPYmplY3QodCl9fTt2YXIgWT1uZXcgRyxRPW5ldyBHLEo9L14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLyxLPS9bQS1aXS9nO2Z1bmN0aW9uIFooZSx0LG4pe3ZhciByLGk7aWYodm9pZCAwPT09biYmMT09PWUubm9kZVR5cGUpaWYocj0iZGF0YS0iK3QucmVwbGFjZShLLCItJCYiKS50b0xvd2VyQ2FzZSgpLCJzdHJpbmciPT10eXBlb2Yobj1lLmdldEF0dHJpYnV0ZShyKSkpe3RyeXtuPSJ0cnVlIj09PShpPW4pfHwiZmFsc2UiIT09aSYmKCJudWxsIj09PWk/bnVsbDppPT09K2krIiI/K2k6Si50ZXN0KGkpP0pTT04ucGFyc2UoaSk6aSl9Y2F0Y2goZSl7fVEuc2V0KGUsdCxuKX1lbHNlIG49dm9pZCAwO3JldHVybiBufVMuZXh0ZW5kKHtoYXNEYXRhOmZ1bmN0aW9uKGUpe3JldHVybiBRLmhhc0RhdGEoZSl8fFkuaGFzRGF0YShlKX0sZGF0YTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIFEuYWNjZXNzKGUsdCxuKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe1EucmVtb3ZlKGUsdCl9LF9kYXRhOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gWS5hY2Nlc3MoZSx0LG4pfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe1kucmVtb3ZlKGUsdCl9fSksUy5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24obixlKXt2YXIgdCxyLGksbz10aGlzWzBdLGE9byYmby5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PW4pe2lmKHRoaXMubGVuZ3RoJiYoaT1RLmdldChvKSwxPT09by5ub2RlVHlwZSYmIVkuZ2V0KG8sImhhc0RhdGFBdHRycyIpKSl7dD1hLmxlbmd0aDt3aGlsZSh0LS0pYVt0XSYmMD09PShyPWFbdF0ubmFtZSkuaW5kZXhPZigiZGF0YS0iKSYmKHI9WChyLnNsaWNlKDUpKSxaKG8scixpW3JdKSk7WS5zZXQobywiaGFzRGF0YUF0dHJzIiwhMCl9cmV0dXJuIGl9cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBuP3RoaXMuZWFjaChmdW5jdGlvbigpe1Euc2V0KHRoaXMsbil9KTokKHRoaXMsZnVuY3Rpb24oZSl7dmFyIHQ7aWYobyYmdm9pZCAwPT09ZSlyZXR1cm4gdm9pZCAwIT09KHQ9US5nZXQobyxuKSk/dDp2b2lkIDAhPT0odD1aKG8sbikpP3Q6dm9pZCAwO3RoaXMuZWFjaChmdW5jdGlvbigpe1Euc2V0KHRoaXMsbixlKX0pfSxudWxsLGUsMTxhcmd1bWVudHMubGVuZ3RoLG51bGwsITApfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtRLnJlbW92ZSh0aGlzLGUpfSl9fSksUy5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtpZihlKXJldHVybiB0PSh0fHwiZngiKSsicXVldWUiLHI9WS5nZXQoZSx0KSxuJiYoIXJ8fEFycmF5LmlzQXJyYXkobik/cj1ZLmFjY2VzcyhlLHQsUy5tYWtlQXJyYXkobikpOnIucHVzaChuKSkscnx8W119LGRlcXVldWU6ZnVuY3Rpb24oZSx0KXt0PXR8fCJmeCI7dmFyIG49Uy5xdWV1ZShlLHQpLHI9bi5sZW5ndGgsaT1uLnNoaWZ0KCksbz1TLl9xdWV1ZUhvb2tzKGUsdCk7ImlucHJvZ3Jlc3MiPT09aSYmKGk9bi5zaGlmdCgpLHItLSksaSYmKCJmeCI9PT10JiZuLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgby5zdG9wLGkuY2FsbChlLGZ1bmN0aW9uKCl7Uy5kZXF1ZXVlKGUsdCl9LG8pKSwhciYmbyYmby5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tzOmZ1bmN0aW9uKGUsdCl7dmFyIG49dCsicXVldWVIb29rcyI7cmV0dXJuIFkuZ2V0KGUsbil8fFkuYWNjZXNzKGUsbix7ZW1wdHk6Uy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7WS5yZW1vdmUoZSxbdCsicXVldWUiLG5dKX0pfSl9fSksUy5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKHQsbil7dmFyIGU9MjtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHQmJihuPXQsdD0iZngiLGUtLSksYXJndW1lbnRzLmxlbmd0aDxlP1MucXVldWUodGhpc1swXSx0KTp2b2lkIDA9PT1uP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9Uy5xdWV1ZSh0aGlzLHQsbik7Uy5fcXVldWVIb29rcyh0aGlzLHQpLCJmeCI9PT10JiYiaW5wcm9ncmVzcyIhPT1lWzBdJiZTLmRlcXVldWUodGhpcyx0KX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtTLmRlcXVldWUodGhpcyxlKX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnF1ZXVlKGV8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj0xLGk9Uy5EZWZlcnJlZCgpLG89dGhpcyxhPXRoaXMubGVuZ3RoLHM9ZnVuY3Rpb24oKXstLXJ8fGkucmVzb2x2ZVdpdGgobyxbb10pfTsic3RyaW5nIiE9dHlwZW9mIGUmJih0PWUsZT12b2lkIDApLGU9ZXx8ImZ4Ijt3aGlsZShhLS0pKG49WS5nZXQob1thXSxlKyJxdWV1ZUhvb2tzIikpJiZuLmVtcHR5JiYocisrLG4uZW1wdHkuYWRkKHMpKTtyZXR1cm4gcygpLGkucHJvbWlzZSh0KX19KTt2YXIgZWU9L1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsdGU9bmV3IFJlZ0V4cCgiXig/OihbKy1dKT18KSgiK2VlKyIpKFthLXolXSopJCIsImkiKSxuZT1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLHJlPUUuZG9jdW1lbnRFbGVtZW50LGllPWZ1bmN0aW9uKGUpe3JldHVybiBTLmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCxlKX0sb2U9e2NvbXBvc2VkOiEwfTtyZS5nZXRSb290Tm9kZSYmKGllPWZ1bmN0aW9uKGUpe3JldHVybiBTLmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCxlKXx8ZS5nZXRSb290Tm9kZShvZSk9PT1lLm93bmVyRG9jdW1lbnR9KTt2YXIgYWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4ibm9uZSI9PT0oZT10fHxlKS5zdHlsZS5kaXNwbGF5fHwiIj09PWUuc3R5bGUuZGlzcGxheSYmaWUoZSkmJiJub25lIj09PVMuY3NzKGUsImRpc3BsYXkiKX07ZnVuY3Rpb24gc2UoZSx0LG4scil7dmFyIGksbyxhPTIwLHM9cj9mdW5jdGlvbigpe3JldHVybiByLmN1cigpfTpmdW5jdGlvbigpe3JldHVybiBTLmNzcyhlLHQsIiIpfSx1PXMoKSxsPW4mJm5bM118fChTLmNzc051bWJlclt0XT8iIjoicHgiKSxjPWUubm9kZVR5cGUmJihTLmNzc051bWJlclt0XXx8InB4IiE9PWwmJit1KSYmdGUuZXhlYyhTLmNzcyhlLHQpKTtpZihjJiZjWzNdIT09bCl7dS89MixsPWx8fGNbM10sYz0rdXx8MTt3aGlsZShhLS0pUy5zdHlsZShlLHQsYytsKSwoMS1vKSooMS0obz1zKCkvdXx8LjUpKTw9MCYmKGE9MCksYy89bztjKj0yLFMuc3R5bGUoZSx0LGMrbCksbj1ufHxbXX1yZXR1cm4gbiYmKGM9K2N8fCt1fHwwLGk9blsxXT9jKyhuWzFdKzEpKm5bMl06K25bMl0sciYmKHIudW5pdD1sLHIuc3RhcnQ9YyxyLmVuZD1pKSksaX12YXIgdWU9e307ZnVuY3Rpb24gbGUoZSx0KXtmb3IodmFyIG4scixpLG8sYSxzLHUsbD1bXSxjPTAsZj1lLmxlbmd0aDtjPGY7YysrKShyPWVbY10pLnN0eWxlJiYobj1yLnN0eWxlLmRpc3BsYXksdD8oIm5vbmUiPT09biYmKGxbY109WS5nZXQociwiZGlzcGxheSIpfHxudWxsLGxbY118fChyLnN0eWxlLmRpc3BsYXk9IiIpKSwiIj09PXIuc3R5bGUuZGlzcGxheSYmYWUocikmJihsW2NdPSh1PWE9bz12b2lkIDAsYT0oaT1yKS5vd25lckRvY3VtZW50LHM9aS5ub2RlTmFtZSwodT11ZVtzXSl8fChvPWEuYm9keS5hcHBlbmRDaGlsZChhLmNyZWF0ZUVsZW1lbnQocykpLHU9Uy5jc3MobywiZGlzcGxheSIpLG8ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKSwibm9uZSI9PT11JiYodT0iYmxvY2siKSx1ZVtzXT11KSkpKToibm9uZSIhPT1uJiYobFtjXT0ibm9uZSIsWS5zZXQociwiZGlzcGxheSIsbikpKTtmb3IoYz0wO2M8ZjtjKyspbnVsbCE9bFtjXSYmKGVbY10uc3R5bGUuZGlzcGxheT1sW2NdKTtyZXR1cm4gZX1TLmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbigpe3JldHVybiBsZSh0aGlzLCEwKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiBsZSh0aGlzKX0sdG9nZ2xlOmZ1bmN0aW9uKGUpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGU/ZT90aGlzLnNob3coKTp0aGlzLmhpZGUoKTp0aGlzLmVhY2goZnVuY3Rpb24oKXthZSh0aGlzKT9TKHRoaXMpLnNob3coKTpTKHRoaXMpLmhpZGUoKX0pfX0pO3ZhciBjZSxmZSxwZT0vXig/OmNoZWNrYm94fHJhZGlvKSQvaSxkZT0vPChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKikvaSxoZT0vXiR8Xm1vZHVsZSR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2k7Y2U9RS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuYXBwZW5kQ2hpbGQoRS5jcmVhdGVFbGVtZW50KCJkaXYiKSksKGZlPUUuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKSxmZS5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCJjaGVja2VkIiksZmUuc2V0QXR0cmlidXRlKCJuYW1lIiwidCIpLGNlLmFwcGVuZENoaWxkKGZlKSx5LmNoZWNrQ2xvbmU9Y2UuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLGNlLmlubmVySFRNTD0iPHRleHRhcmVhPng8L3RleHRhcmVhPiIseS5ub0Nsb25lQ2hlY2tlZD0hIWNlLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZSxjZS5pbm5lckhUTUw9IjxvcHRpb24+PC9vcHRpb24+Iix5Lm9wdGlvbj0hIWNlLmxhc3RDaGlsZDt2YXIgZ2U9e3RoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6WzAsIiIsIiJdfTtmdW5jdGlvbiB2ZShlLHQpe3ZhciBuO3JldHVybiBuPSJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZT9lLmdldEVsZW1lbnRzQnlUYWdOYW1lKHR8fCIqIik6InVuZGVmaW5lZCIhPXR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGw/ZS5xdWVyeVNlbGVjdG9yQWxsKHR8fCIqIik6W10sdm9pZCAwPT09dHx8dCYmQShlLHQpP1MubWVyZ2UoW2VdLG4pOm59ZnVuY3Rpb24geWUoZSx0KXtmb3IodmFyIG49MCxyPWUubGVuZ3RoO248cjtuKyspWS5zZXQoZVtuXSwiZ2xvYmFsRXZhbCIsIXR8fFkuZ2V0KHRbbl0sImdsb2JhbEV2YWwiKSl9Z2UudGJvZHk9Z2UudGZvb3Q9Z2UuY29sZ3JvdXA9Z2UuY2FwdGlvbj1nZS50aGVhZCxnZS50aD1nZS50ZCx5Lm9wdGlvbnx8KGdlLm9wdGdyb3VwPWdlLm9wdGlvbj1bMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdKTt2YXIgbWU9Lzx8JiM/XHcrOy87ZnVuY3Rpb24geGUoZSx0LG4scixpKXtmb3IodmFyIG8sYSxzLHUsbCxjLGY9dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkscD1bXSxkPTAsaD1lLmxlbmd0aDtkPGg7ZCsrKWlmKChvPWVbZF0pfHwwPT09bylpZigib2JqZWN0Ij09PXcobykpUy5tZXJnZShwLG8ubm9kZVR5cGU/W29dOm8pO2Vsc2UgaWYobWUudGVzdChvKSl7YT1hfHxmLmFwcGVuZENoaWxkKHQuY3JlYXRlRWxlbWVudCgiZGl2IikpLHM9KGRlLmV4ZWMobyl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCksdT1nZVtzXXx8Z2UuX2RlZmF1bHQsYS5pbm5lckhUTUw9dVsxXStTLmh0bWxQcmVmaWx0ZXIobykrdVsyXSxjPXVbMF07d2hpbGUoYy0tKWE9YS5sYXN0Q2hpbGQ7Uy5tZXJnZShwLGEuY2hpbGROb2RlcyksKGE9Zi5maXJzdENoaWxkKS50ZXh0Q29udGVudD0iIn1lbHNlIHAucHVzaCh0LmNyZWF0ZVRleHROb2RlKG8pKTtmLnRleHRDb250ZW50PSIiLGQ9MDt3aGlsZShvPXBbZCsrXSlpZihyJiYtMTxTLmluQXJyYXkobyxyKSlpJiZpLnB1c2gobyk7ZWxzZSBpZihsPWllKG8pLGE9dmUoZi5hcHBlbmRDaGlsZChvKSwic2NyaXB0IiksbCYmeWUoYSksbil7Yz0wO3doaWxlKG89YVtjKytdKWhlLnRlc3Qoby50eXBlfHwiIikmJm4ucHVzaChvKX1yZXR1cm4gZn12YXIgYmU9L14oW14uXSopKD86XC4oLispfCkvO2Z1bmN0aW9uIHdlKCl7cmV0dXJuITB9ZnVuY3Rpb24gVGUoKXtyZXR1cm4hMX1mdW5jdGlvbiBDZShlLHQpe3JldHVybiBlPT09ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIEUuYWN0aXZlRWxlbWVudH1jYXRjaChlKXt9fSgpPT0oImZvY3VzIj09PXQpfWZ1bmN0aW9uIEVlKGUsdCxuLHIsaSxvKXt2YXIgYSxzO2lmKCJvYmplY3QiPT10eXBlb2YgdCl7Zm9yKHMgaW4ic3RyaW5nIiE9dHlwZW9mIG4mJihyPXJ8fG4sbj12b2lkIDApLHQpRWUoZSxzLG4scix0W3NdLG8pO3JldHVybiBlfWlmKG51bGw9PXImJm51bGw9PWk/KGk9bixyPW49dm9pZCAwKTpudWxsPT1pJiYoInN0cmluZyI9PXR5cGVvZiBuPyhpPXIscj12b2lkIDApOihpPXIscj1uLG49dm9pZCAwKSksITE9PT1pKWk9VGU7ZWxzZSBpZighaSlyZXR1cm4gZTtyZXR1cm4gMT09PW8mJihhPWksKGk9ZnVuY3Rpb24oZSl7cmV0dXJuIFMoKS5vZmYoZSksYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KS5ndWlkPWEuZ3VpZHx8KGEuZ3VpZD1TLmd1aWQrKykpLGUuZWFjaChmdW5jdGlvbigpe1MuZXZlbnQuYWRkKHRoaXMsdCxpLHIsbil9KX1mdW5jdGlvbiBTZShlLGksbyl7bz8oWS5zZXQoZSxpLCExKSxTLmV2ZW50LmFkZChlLGkse25hbWVzcGFjZTohMSxoYW5kbGVyOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj1ZLmdldCh0aGlzLGkpO2lmKDEmZS5pc1RyaWdnZXImJnRoaXNbaV0pe2lmKHIubGVuZ3RoKShTLmV2ZW50LnNwZWNpYWxbaV18fHt9KS5kZWxlZ2F0ZVR5cGUmJmUuc3RvcFByb3BhZ2F0aW9uKCk7ZWxzZSBpZihyPXMuY2FsbChhcmd1bWVudHMpLFkuc2V0KHRoaXMsaSxyKSx0PW8odGhpcyxpKSx0aGlzW2ldKCksciE9PShuPVkuZ2V0KHRoaXMsaSkpfHx0P1kuc2V0KHRoaXMsaSwhMSk6bj17fSxyIT09bilyZXR1cm4gZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSxlLnByZXZlbnREZWZhdWx0KCksbiYmbi52YWx1ZX1lbHNlIHIubGVuZ3RoJiYoWS5zZXQodGhpcyxpLHt2YWx1ZTpTLmV2ZW50LnRyaWdnZXIoUy5leHRlbmQoclswXSxTLkV2ZW50LnByb3RvdHlwZSksci5zbGljZSgxKSx0aGlzKX0pLGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkpfX0pKTp2b2lkIDA9PT1ZLmdldChlLGkpJiZTLmV2ZW50LmFkZChlLGksd2UpfVMuZXZlbnQ9e2dsb2JhbDp7fSxhZGQ6ZnVuY3Rpb24odCxlLG4scixpKXt2YXIgbyxhLHMsdSxsLGMsZixwLGQsaCxnLHY9WS5nZXQodCk7aWYoVih0KSl7bi5oYW5kbGVyJiYobj0obz1uKS5oYW5kbGVyLGk9by5zZWxlY3RvciksaSYmUy5maW5kLm1hdGNoZXNTZWxlY3RvcihyZSxpKSxuLmd1aWR8fChuLmd1aWQ9Uy5ndWlkKyspLCh1PXYuZXZlbnRzKXx8KHU9di5ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSksKGE9di5oYW5kbGUpfHwoYT12LmhhbmRsZT1mdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIFMmJlMuZXZlbnQudHJpZ2dlcmVkIT09ZS50eXBlP1MuZXZlbnQuZGlzcGF0Y2guYXBwbHkodCxhcmd1bWVudHMpOnZvaWQgMH0pLGw9KGU9KGV8fCIiKS5tYXRjaChQKXx8WyIiXSkubGVuZ3RoO3doaWxlKGwtLSlkPWc9KHM9YmUuZXhlYyhlW2xdKXx8W10pWzFdLGg9KHNbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxkJiYoZj1TLmV2ZW50LnNwZWNpYWxbZF18fHt9LGQ9KGk/Zi5kZWxlZ2F0ZVR5cGU6Zi5iaW5kVHlwZSl8fGQsZj1TLmV2ZW50LnNwZWNpYWxbZF18fHt9LGM9Uy5leHRlbmQoe3R5cGU6ZCxvcmlnVHlwZTpnLGRhdGE6cixoYW5kbGVyOm4sZ3VpZDpuLmd1aWQsc2VsZWN0b3I6aSxuZWVkc0NvbnRleHQ6aSYmUy5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGkpLG5hbWVzcGFjZTpoLmpvaW4oIi4iKX0sbyksKHA9dVtkXSl8fCgocD11W2RdPVtdKS5kZWxlZ2F0ZUNvdW50PTAsZi5zZXR1cCYmITEhPT1mLnNldHVwLmNhbGwodCxyLGgsYSl8fHQuYWRkRXZlbnRMaXN0ZW5lciYmdC5hZGRFdmVudExpc3RlbmVyKGQsYSkpLGYuYWRkJiYoZi5hZGQuY2FsbCh0LGMpLGMuaGFuZGxlci5ndWlkfHwoYy5oYW5kbGVyLmd1aWQ9bi5ndWlkKSksaT9wLnNwbGljZShwLmRlbGVnYXRlQ291bnQrKywwLGMpOnAucHVzaChjKSxTLmV2ZW50Lmdsb2JhbFtkXT0hMCl9fSxyZW1vdmU6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdSxsLGMsZixwLGQsaCxnLHY9WS5oYXNEYXRhKGUpJiZZLmdldChlKTtpZih2JiYodT12LmV2ZW50cykpe2w9KHQ9KHR8fCIiKS5tYXRjaChQKXx8WyIiXSkubGVuZ3RoO3doaWxlKGwtLSlpZihkPWc9KHM9YmUuZXhlYyh0W2xdKXx8W10pWzFdLGg9KHNbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxkKXtmPVMuZXZlbnQuc3BlY2lhbFtkXXx8e30scD11W2Q9KHI/Zi5kZWxlZ2F0ZVR5cGU6Zi5iaW5kVHlwZSl8fGRdfHxbXSxzPXNbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK2guam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksYT1vPXAubGVuZ3RoO3doaWxlKG8tLSljPXBbb10sIWkmJmchPT1jLm9yaWdUeXBlfHxuJiZuLmd1aWQhPT1jLmd1aWR8fHMmJiFzLnRlc3QoYy5uYW1lc3BhY2UpfHxyJiZyIT09Yy5zZWxlY3RvciYmKCIqKiIhPT1yfHwhYy5zZWxlY3Rvcil8fChwLnNwbGljZShvLDEpLGMuc2VsZWN0b3ImJnAuZGVsZWdhdGVDb3VudC0tLGYucmVtb3ZlJiZmLnJlbW92ZS5jYWxsKGUsYykpO2EmJiFwLmxlbmd0aCYmKGYudGVhcmRvd24mJiExIT09Zi50ZWFyZG93bi5jYWxsKGUsaCx2LmhhbmRsZSl8fFMucmVtb3ZlRXZlbnQoZSxkLHYuaGFuZGxlKSxkZWxldGUgdVtkXSl9ZWxzZSBmb3IoZCBpbiB1KVMuZXZlbnQucmVtb3ZlKGUsZCt0W2xdLG4sciwhMCk7Uy5pc0VtcHR5T2JqZWN0KHUpJiZZLnJlbW92ZShlLCJoYW5kbGUgZXZlbnRzIil9fSxkaXNwYXRjaDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxvLGEscz1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCksdT1TLmV2ZW50LmZpeChlKSxsPShZLmdldCh0aGlzLCJldmVudHMiKXx8T2JqZWN0LmNyZWF0ZShudWxsKSlbdS50eXBlXXx8W10sYz1TLmV2ZW50LnNwZWNpYWxbdS50eXBlXXx8e307Zm9yKHNbMF09dSx0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKylzW3RdPWFyZ3VtZW50c1t0XTtpZih1LmRlbGVnYXRlVGFyZ2V0PXRoaXMsIWMucHJlRGlzcGF0Y2h8fCExIT09Yy5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsdSkpe2E9Uy5ldmVudC5oYW5kbGVycy5jYWxsKHRoaXMsdSxsKSx0PTA7d2hpbGUoKGk9YVt0KytdKSYmIXUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSl7dS5jdXJyZW50VGFyZ2V0PWkuZWxlbSxuPTA7d2hpbGUoKG89aS5oYW5kbGVyc1tuKytdKSYmIXUuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSl1LnJuYW1lc3BhY2UmJiExIT09by5uYW1lc3BhY2UmJiF1LnJuYW1lc3BhY2UudGVzdChvLm5hbWVzcGFjZSl8fCh1LmhhbmRsZU9iaj1vLHUuZGF0YT1vLmRhdGEsdm9pZCAwIT09KHI9KChTLmV2ZW50LnNwZWNpYWxbby5vcmlnVHlwZV18fHt9KS5oYW5kbGV8fG8uaGFuZGxlcikuYXBwbHkoaS5lbGVtLHMpKSYmITE9PT0odS5yZXN1bHQ9cikmJih1LnByZXZlbnREZWZhdWx0KCksdS5zdG9wUHJvcGFnYXRpb24oKSkpfXJldHVybiBjLnBvc3REaXNwYXRjaCYmYy5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLHUpLHUucmVzdWx0fX0saGFuZGxlcnM6ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksbyxhLHM9W10sdT10LmRlbGVnYXRlQ291bnQsbD1lLnRhcmdldDtpZih1JiZsLm5vZGVUeXBlJiYhKCJjbGljayI9PT1lLnR5cGUmJjE8PWUuYnV0dG9uKSlmb3IoO2whPT10aGlzO2w9bC5wYXJlbnROb2RlfHx0aGlzKWlmKDE9PT1sLm5vZGVUeXBlJiYoImNsaWNrIiE9PWUudHlwZXx8ITAhPT1sLmRpc2FibGVkKSl7Zm9yKG89W10sYT17fSxuPTA7bjx1O24rKyl2b2lkIDA9PT1hW2k9KHI9dFtuXSkuc2VsZWN0b3IrIiAiXSYmKGFbaV09ci5uZWVkc0NvbnRleHQ/LTE8UyhpLHRoaXMpLmluZGV4KGwpOlMuZmluZChpLHRoaXMsbnVsbCxbbF0pLmxlbmd0aCksYVtpXSYmby5wdXNoKHIpO28ubGVuZ3RoJiZzLnB1c2goe2VsZW06bCxoYW5kbGVyczpvfSl9cmV0dXJuIGw9dGhpcyx1PHQubGVuZ3RoJiZzLnB1c2goe2VsZW06bCxoYW5kbGVyczp0LnNsaWNlKHUpfSksc30sYWRkUHJvcDpmdW5jdGlvbih0LGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShTLkV2ZW50LnByb3RvdHlwZSx0LHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6bShlKT9mdW5jdGlvbigpe2lmKHRoaXMub3JpZ2luYWxFdmVudClyZXR1cm4gZSh0aGlzLm9yaWdpbmFsRXZlbnQpfTpmdW5jdGlvbigpe2lmKHRoaXMub3JpZ2luYWxFdmVudClyZXR1cm4gdGhpcy5vcmlnaW5hbEV2ZW50W3RdfSxzZXQ6ZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZX0pfX0pfSxmaXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbUy5leHBhbmRvXT9lOm5ldyBTLkV2ZW50KGUpfSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sY2xpY2s6e3NldHVwOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXN8fGU7cmV0dXJuIHBlLnRlc3QodC50eXBlKSYmdC5jbGljayYmQSh0LCJpbnB1dCIpJiZTZSh0LCJjbGljayIsd2UpLCExfSx0cmlnZ2VyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXN8fGU7cmV0dXJuIHBlLnRlc3QodC50eXBlKSYmdC5jbGljayYmQSh0LCJpbnB1dCIpJiZTZSh0LCJjbGljayIpLCEwfSxfZGVmYXVsdDpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldDtyZXR1cm4gcGUudGVzdCh0LnR5cGUpJiZ0LmNsaWNrJiZBKHQsImlucHV0IikmJlkuZ2V0KHQsImNsaWNrIil8fEEodCwiYSIpfX0sYmVmb3JldW5sb2FkOntwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oZSl7dm9pZCAwIT09ZS5yZXN1bHQmJmUub3JpZ2luYWxFdmVudCYmKGUub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1lLnJlc3VsdCl9fX19LFMucmVtb3ZlRXZlbnQ9ZnVuY3Rpb24oZSx0LG4pe2UucmVtb3ZlRXZlbnRMaXN0ZW5lciYmZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbil9LFMuRXZlbnQ9ZnVuY3Rpb24oZSx0KXtpZighKHRoaXMgaW5zdGFuY2VvZiBTLkV2ZW50KSlyZXR1cm4gbmV3IFMuRXZlbnQoZSx0KTtlJiZlLnR5cGU/KHRoaXMub3JpZ2luYWxFdmVudD1lLHRoaXMudHlwZT1lLnR5cGUsdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9ZS5kZWZhdWx0UHJldmVudGVkfHx2b2lkIDA9PT1lLmRlZmF1bHRQcmV2ZW50ZWQmJiExPT09ZS5yZXR1cm5WYWx1ZT93ZTpUZSx0aGlzLnRhcmdldD1lLnRhcmdldCYmMz09PWUudGFyZ2V0Lm5vZGVUeXBlP2UudGFyZ2V0LnBhcmVudE5vZGU6ZS50YXJnZXQsdGhpcy5jdXJyZW50VGFyZ2V0PWUuY3VycmVudFRhcmdldCx0aGlzLnJlbGF0ZWRUYXJnZXQ9ZS5yZWxhdGVkVGFyZ2V0KTp0aGlzLnR5cGU9ZSx0JiZTLmV4dGVuZCh0aGlzLHQpLHRoaXMudGltZVN0YW1wPWUmJmUudGltZVN0YW1wfHxEYXRlLm5vdygpLHRoaXNbUy5leHBhbmRvXT0hMH0sUy5FdmVudC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlMuRXZlbnQsaXNEZWZhdWx0UHJldmVudGVkOlRlLGlzUHJvcGFnYXRpb25TdG9wcGVkOlRlLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOlRlLGlzU2ltdWxhdGVkOiExLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPXdlLGUmJiF0aGlzLmlzU2ltdWxhdGVkJiZlLnByZXZlbnREZWZhdWx0KCl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXdlLGUmJiF0aGlzLmlzU2ltdWxhdGVkJiZlLnN0b3BQcm9wYWdhdGlvbigpfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD13ZSxlJiYhdGhpcy5pc1NpbXVsYXRlZCYmZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLnN0b3BQcm9wYWdhdGlvbigpfX0sUy5lYWNoKHthbHRLZXk6ITAsYnViYmxlczohMCxjYW5jZWxhYmxlOiEwLGNoYW5nZWRUb3VjaGVzOiEwLGN0cmxLZXk6ITAsZGV0YWlsOiEwLGV2ZW50UGhhc2U6ITAsbWV0YUtleTohMCxwYWdlWDohMCxwYWdlWTohMCxzaGlmdEtleTohMCx2aWV3OiEwLCJjaGFyIjohMCxjb2RlOiEwLGNoYXJDb2RlOiEwLGtleTohMCxrZXlDb2RlOiEwLGJ1dHRvbjohMCxidXR0b25zOiEwLGNsaWVudFg6ITAsY2xpZW50WTohMCxvZmZzZXRYOiEwLG9mZnNldFk6ITAscG9pbnRlcklkOiEwLHBvaW50ZXJUeXBlOiEwLHNjcmVlblg6ITAsc2NyZWVuWTohMCx0YXJnZXRUb3VjaGVzOiEwLHRvRWxlbWVudDohMCx0b3VjaGVzOiEwLHdoaWNoOiEwfSxTLmV2ZW50LmFkZFByb3ApLFMuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24oZSx0KXtTLmV2ZW50LnNwZWNpYWxbZV09e3NldHVwOmZ1bmN0aW9uKCl7cmV0dXJuIFNlKHRoaXMsZSxDZSksITF9LHRyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gU2UodGhpcyxlKSwhMH0sX2RlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZGVsZWdhdGVUeXBlOnR9fSksUy5lYWNoKHttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0Iixwb2ludGVyZW50ZXI6InBvaW50ZXJvdmVyIixwb2ludGVybGVhdmU6InBvaW50ZXJvdXQifSxmdW5jdGlvbihlLGkpe1MuZXZlbnQuc3BlY2lhbFtlXT17ZGVsZWdhdGVUeXBlOmksYmluZFR5cGU6aSxoYW5kbGU6ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLnJlbGF0ZWRUYXJnZXQscj1lLmhhbmRsZU9iajtyZXR1cm4gbiYmKG49PT10aGlzfHxTLmNvbnRhaW5zKHRoaXMsbikpfHwoZS50eXBlPXIub3JpZ1R5cGUsdD1yLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGUudHlwZT1pKSx0fX19KSxTLmZuLmV4dGVuZCh7b246ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIEVlKHRoaXMsZSx0LG4scil9LG9uZTpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gRWUodGhpcyxlLHQsbixyLDEpfSxvZmY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk7aWYoZSYmZS5wcmV2ZW50RGVmYXVsdCYmZS5oYW5kbGVPYmopcmV0dXJuIHI9ZS5oYW5kbGVPYmosUyhlLmRlbGVnYXRlVGFyZ2V0KS5vZmYoci5uYW1lc3BhY2U/ci5vcmlnVHlwZSsiLiIrci5uYW1lc3BhY2U6ci5vcmlnVHlwZSxyLnNlbGVjdG9yLHIuaGFuZGxlciksdGhpcztpZigib2JqZWN0Ij09dHlwZW9mIGUpe2ZvcihpIGluIGUpdGhpcy5vZmYoaSx0LGVbaV0pO3JldHVybiB0aGlzfXJldHVybiExIT09dCYmImZ1bmN0aW9uIiE9dHlwZW9mIHR8fChuPXQsdD12b2lkIDApLCExPT09biYmKG49VGUpLHRoaXMuZWFjaChmdW5jdGlvbigpe1MuZXZlbnQucmVtb3ZlKHRoaXMsZSxuLHQpfSl9fSk7dmFyIGtlPS88c2NyaXB0fDxzdHlsZXw8bGluay9pLEFlPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLE5lPS9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZztmdW5jdGlvbiBqZShlLHQpe3JldHVybiBBKGUsInRhYmxlIikmJkEoMTEhPT10Lm5vZGVUeXBlP3Q6dC5maXJzdENoaWxkLCJ0ciIpJiZTKGUpLmNoaWxkcmVuKCJ0Ym9keSIpWzBdfHxlfWZ1bmN0aW9uIERlKGUpe3JldHVybiBlLnR5cGU9KG51bGwhPT1lLmdldEF0dHJpYnV0ZSgidHlwZSIpKSsiLyIrZS50eXBlLGV9ZnVuY3Rpb24gcWUoZSl7cmV0dXJuInRydWUvIj09PShlLnR5cGV8fCIiKS5zbGljZSgwLDUpP2UudHlwZT1lLnR5cGUuc2xpY2UoNSk6ZS5yZW1vdmVBdHRyaWJ1dGUoInR5cGUiKSxlfWZ1bmN0aW9uIExlKGUsdCl7dmFyIG4scixpLG8sYSxzO2lmKDE9PT10Lm5vZGVUeXBlKXtpZihZLmhhc0RhdGEoZSkmJihzPVkuZ2V0KGUpLmV2ZW50cykpZm9yKGkgaW4gWS5yZW1vdmUodCwiaGFuZGxlIGV2ZW50cyIpLHMpZm9yKG49MCxyPXNbaV0ubGVuZ3RoO248cjtuKyspUy5ldmVudC5hZGQodCxpLHNbaV1bbl0pO1EuaGFzRGF0YShlKSYmKG89US5hY2Nlc3MoZSksYT1TLmV4dGVuZCh7fSxvKSxRLnNldCh0LGEpKX19ZnVuY3Rpb24gSGUobixyLGksbyl7cj1nKHIpO3ZhciBlLHQsYSxzLHUsbCxjPTAsZj1uLmxlbmd0aCxwPWYtMSxkPXJbMF0saD1tKGQpO2lmKGh8fDE8ZiYmInN0cmluZyI9PXR5cGVvZiBkJiYheS5jaGVja0Nsb25lJiZBZS50ZXN0KGQpKXJldHVybiBuLmVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bi5lcShlKTtoJiYoclswXT1kLmNhbGwodGhpcyxlLHQuaHRtbCgpKSksSGUodCxyLGksbyl9KTtpZihmJiYodD0oZT14ZShyLG5bMF0ub3duZXJEb2N1bWVudCwhMSxuLG8pKS5maXJzdENoaWxkLDE9PT1lLmNoaWxkTm9kZXMubGVuZ3RoJiYoZT10KSx0fHxvKSl7Zm9yKHM9KGE9Uy5tYXAodmUoZSwic2NyaXB0IiksRGUpKS5sZW5ndGg7YzxmO2MrKyl1PWUsYyE9PXAmJih1PVMuY2xvbmUodSwhMCwhMCkscyYmUy5tZXJnZShhLHZlKHUsInNjcmlwdCIpKSksaS5jYWxsKG5bY10sdSxjKTtpZihzKWZvcihsPWFbYS5sZW5ndGgtMV0ub3duZXJEb2N1bWVudCxTLm1hcChhLHFlKSxjPTA7YzxzO2MrKyl1PWFbY10saGUudGVzdCh1LnR5cGV8fCIiKSYmIVkuYWNjZXNzKHUsImdsb2JhbEV2YWwiKSYmUy5jb250YWlucyhsLHUpJiYodS5zcmMmJiJtb2R1bGUiIT09KHUudHlwZXx8IiIpLnRvTG93ZXJDYXNlKCk/Uy5fZXZhbFVybCYmIXUubm9Nb2R1bGUmJlMuX2V2YWxVcmwodS5zcmMse25vbmNlOnUubm9uY2V8fHUuZ2V0QXR0cmlidXRlKCJub25jZSIpfSxsKTpiKHUudGV4dENvbnRlbnQucmVwbGFjZShOZSwiIiksdSxsKSl9cmV0dXJuIG59ZnVuY3Rpb24gT2UoZSx0LG4pe2Zvcih2YXIgcixpPXQ/Uy5maWx0ZXIodCxlKTplLG89MDtudWxsIT0ocj1pW29dKTtvKyspbnx8MSE9PXIubm9kZVR5cGV8fFMuY2xlYW5EYXRhKHZlKHIpKSxyLnBhcmVudE5vZGUmJihuJiZpZShyKSYmeWUodmUociwic2NyaXB0IikpLHIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChyKSk7cmV0dXJuIGV9Uy5leHRlbmQoe2h0bWxQcmVmaWx0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGNsb25lOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbCxjPWUuY2xvbmVOb2RlKCEwKSxmPWllKGUpO2lmKCEoeS5ub0Nsb25lQ2hlY2tlZHx8MSE9PWUubm9kZVR5cGUmJjExIT09ZS5ub2RlVHlwZXx8Uy5pc1hNTERvYyhlKSkpZm9yKGE9dmUoYykscj0wLGk9KG89dmUoZSkpLmxlbmd0aDtyPGk7cisrKXM9b1tyXSx1PWFbcl0sdm9pZCAwLCJpbnB1dCI9PT0obD11Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpJiZwZS50ZXN0KHMudHlwZSk/dS5jaGVja2VkPXMuY2hlY2tlZDoiaW5wdXQiIT09bCYmInRleHRhcmVhIiE9PWx8fCh1LmRlZmF1bHRWYWx1ZT1zLmRlZmF1bHRWYWx1ZSk7aWYodClpZihuKWZvcihvPW98fHZlKGUpLGE9YXx8dmUoYykscj0wLGk9by5sZW5ndGg7cjxpO3IrKylMZShvW3JdLGFbcl0pO2Vsc2UgTGUoZSxjKTtyZXR1cm4gMDwoYT12ZShjLCJzY3JpcHQiKSkubGVuZ3RoJiZ5ZShhLCFmJiZ2ZShlLCJzY3JpcHQiKSksY30sY2xlYW5EYXRhOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuLHIsaT1TLmV2ZW50LnNwZWNpYWwsbz0wO3ZvaWQgMCE9PShuPWVbb10pO28rKylpZihWKG4pKXtpZih0PW5bWS5leHBhbmRvXSl7aWYodC5ldmVudHMpZm9yKHIgaW4gdC5ldmVudHMpaVtyXT9TLmV2ZW50LnJlbW92ZShuLHIpOlMucmVtb3ZlRXZlbnQobixyLHQuaGFuZGxlKTtuW1kuZXhwYW5kb109dm9pZCAwfW5bUS5leHBhbmRvXSYmKG5bUS5leHBhbmRvXT12b2lkIDApfX19KSxTLmZuLmV4dGVuZCh7ZGV0YWNoOmZ1bmN0aW9uKGUpe3JldHVybiBPZSh0aGlzLGUsITApfSxyZW1vdmU6ZnVuY3Rpb24oZSl7cmV0dXJuIE9lKHRoaXMsZSl9LHRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuICQodGhpcyxmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZT9TLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmVhY2goZnVuY3Rpb24oKXsxIT09dGhpcy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8KHRoaXMudGV4dENvbnRlbnQ9ZSl9KX0sbnVsbCxlLGFyZ3VtZW50cy5sZW5ndGgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gSGUodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oZSl7MSE9PXRoaXMubm9kZVR5cGUmJjExIT09dGhpcy5ub2RlVHlwZSYmOSE9PXRoaXMubm9kZVR5cGV8fGplKHRoaXMsZSkuYXBwZW5kQ2hpbGQoZSl9KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiBIZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIHQ9amUodGhpcyxlKTt0Lmluc2VydEJlZm9yZShlLHQuZmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe3JldHVybiBIZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzKX0pfSxhZnRlcjpmdW5jdGlvbigpe3JldHVybiBIZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzLm5leHRTaWJsaW5nKX0pfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgZSx0PTA7bnVsbCE9KGU9dGhpc1t0XSk7dCsrKTE9PT1lLm5vZGVUeXBlJiYoUy5jbGVhbkRhdGEodmUoZSwhMSkpLGUudGV4dENvbnRlbnQ9IiIpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbihlLHQpe3JldHVybiBlPW51bGwhPWUmJmUsdD1udWxsPT10P2U6dCx0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiBTLmNsb25lKHRoaXMsZSx0KX0pfSxodG1sOmZ1bmN0aW9uKGUpe3JldHVybiAkKHRoaXMsZnVuY3Rpb24oZSl7dmFyIHQ9dGhpc1swXXx8e30sbj0wLHI9dGhpcy5sZW5ndGg7aWYodm9pZCAwPT09ZSYmMT09PXQubm9kZVR5cGUpcmV0dXJuIHQuaW5uZXJIVE1MO2lmKCJzdHJpbmciPT10eXBlb2YgZSYmIWtlLnRlc3QoZSkmJiFnZVsoZGUuZXhlYyhlKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2U9Uy5odG1sUHJlZmlsdGVyKGUpO3RyeXtmb3IoO248cjtuKyspMT09PSh0PXRoaXNbbl18fHt9KS5ub2RlVHlwZSYmKFMuY2xlYW5EYXRhKHZlKHQsITEpKSx0LmlubmVySFRNTD1lKTt0PTB9Y2F0Y2goZSl7fX10JiZ0aGlzLmVtcHR5KCkuYXBwZW5kKGUpfSxudWxsLGUsYXJndW1lbnRzLmxlbmd0aCl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7dmFyIG49W107cmV0dXJuIEhlKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTtTLmluQXJyYXkodGhpcyxuKTwwJiYoUy5jbGVhbkRhdGEodmUodGhpcykpLHQmJnQucmVwbGFjZUNoaWxkKGUsdGhpcykpfSxuKX19KSxTLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihlLGEpe1MuZm5bZV09ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49W10scj1TKGUpLGk9ci5sZW5ndGgtMSxvPTA7bzw9aTtvKyspdD1vPT09aT90aGlzOnRoaXMuY2xvbmUoITApLFMocltvXSlbYV0odCksdS5hcHBseShuLHQuZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhuKX19KTt2YXIgUGU9bmV3IFJlZ0V4cCgiXigiK2VlKyIpKD8hcHgpW2EteiVdKyQiLCJpIiksUmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O3JldHVybiB0JiZ0Lm9wZW5lcnx8KHQ9QyksdC5nZXRDb21wdXRlZFN0eWxlKGUpfSxNZT1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPXt9O2ZvcihpIGluIHQpb1tpXT1lLnN0eWxlW2ldLGUuc3R5bGVbaV09dFtpXTtmb3IoaSBpbiByPW4uY2FsbChlKSx0KWUuc3R5bGVbaV09b1tpXTtyZXR1cm4gcn0sSWU9bmV3IFJlZ0V4cChuZS5qb2luKCJ8IiksImkiKTtmdW5jdGlvbiBXZShlLHQsbil7dmFyIHIsaSxvLGEscz1lLnN0eWxlO3JldHVybihuPW58fFJlKGUpKSYmKCIiIT09KGE9bi5nZXRQcm9wZXJ0eVZhbHVlKHQpfHxuW3RdKXx8aWUoZSl8fChhPVMuc3R5bGUoZSx0KSksIXkucGl4ZWxCb3hTdHlsZXMoKSYmUGUudGVzdChhKSYmSWUudGVzdCh0KSYmKHI9cy53aWR0aCxpPXMubWluV2lkdGgsbz1zLm1heFdpZHRoLHMubWluV2lkdGg9cy5tYXhXaWR0aD1zLndpZHRoPWEsYT1uLndpZHRoLHMud2lkdGg9cixzLm1pbldpZHRoPWkscy5tYXhXaWR0aD1vKSksdm9pZCAwIT09YT9hKyIiOmF9ZnVuY3Rpb24gRmUoZSx0KXtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7aWYoIWUoKSlyZXR1cm4odGhpcy5nZXQ9dCkuYXBwbHkodGhpcyxhcmd1bWVudHMpO2RlbGV0ZSB0aGlzLmdldH19fSFmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtpZihsKXt1LnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTExMTExcHg7d2lkdGg6NjBweDttYXJnaW4tdG9wOjFweDtwYWRkaW5nOjA7Ym9yZGVyOjAiLGwuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3g7b3ZlcmZsb3c6c2Nyb2xsO21hcmdpbjphdXRvO2JvcmRlcjoxcHg7cGFkZGluZzoxcHg7d2lkdGg6NjAlO3RvcDoxJSIscmUuYXBwZW5kQ2hpbGQodSkuYXBwZW5kQ2hpbGQobCk7dmFyIGU9Qy5nZXRDb21wdXRlZFN0eWxlKGwpO249IjElIiE9PWUudG9wLHM9MTI9PT10KGUubWFyZ2luTGVmdCksbC5zdHlsZS5yaWdodD0iNjAlIixvPTM2PT09dChlLnJpZ2h0KSxyPTM2PT09dChlLndpZHRoKSxsLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsaT0xMj09PXQobC5vZmZzZXRXaWR0aC8zKSxyZS5yZW1vdmVDaGlsZCh1KSxsPW51bGx9fWZ1bmN0aW9uIHQoZSl7cmV0dXJuIE1hdGgucm91bmQocGFyc2VGbG9hdChlKSl9dmFyIG4scixpLG8sYSxzLHU9RS5jcmVhdGVFbGVtZW50KCJkaXYiKSxsPUUuY3JlYXRlRWxlbWVudCgiZGl2Iik7bC5zdHlsZSYmKGwuc3R5bGUuYmFja2dyb3VuZENsaXA9ImNvbnRlbnQtYm94IixsLmNsb25lTm9kZSghMCkuc3R5bGUuYmFja2dyb3VuZENsaXA9IiIseS5jbGVhckNsb25lU3R5bGU9ImNvbnRlbnQtYm94Ij09PWwuc3R5bGUuYmFja2dyb3VuZENsaXAsUy5leHRlbmQoeSx7Ym94U2l6aW5nUmVsaWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLHJ9LHBpeGVsQm94U3R5bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIGUoKSxvfSxwaXhlbFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIGUoKSxufSxyZWxpYWJsZU1hcmdpbkxlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLHN9LHNjcm9sbGJveFNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLGl9LHJlbGlhYmxlVHJEaW1lbnNpb25zOmZ1bmN0aW9uKCl7dmFyIGUsdCxuLHI7cmV0dXJuIG51bGw9PWEmJihlPUUuY3JlYXRlRWxlbWVudCgidGFibGUiKSx0PUUuY3JlYXRlRWxlbWVudCgidHIiKSxuPUUuY3JlYXRlRWxlbWVudCgiZGl2IiksZS5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZSIsdC5zdHlsZS5jc3NUZXh0PSJib3JkZXI6MXB4IHNvbGlkIix0LnN0eWxlLmhlaWdodD0iMXB4IixuLnN0eWxlLmhlaWdodD0iOXB4IixuLnN0eWxlLmRpc3BsYXk9ImJsb2NrIixyZS5hcHBlbmRDaGlsZChlKS5hcHBlbmRDaGlsZCh0KS5hcHBlbmRDaGlsZChuKSxyPUMuZ2V0Q29tcHV0ZWRTdHlsZSh0KSxhPXBhcnNlSW50KHIuaGVpZ2h0LDEwKStwYXJzZUludChyLmJvcmRlclRvcFdpZHRoLDEwKStwYXJzZUludChyLmJvcmRlckJvdHRvbVdpZHRoLDEwKT09PXQub2Zmc2V0SGVpZ2h0LHJlLnJlbW92ZUNoaWxkKGUpKSxhfX0pKX0oKTt2YXIgQmU9WyJXZWJraXQiLCJNb3oiLCJtcyJdLCRlPUUuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUsX2U9e307ZnVuY3Rpb24gemUoZSl7dmFyIHQ9Uy5jc3NQcm9wc1tlXXx8X2VbZV07cmV0dXJuIHR8fChlIGluICRlP2U6X2VbZV09ZnVuY3Rpb24oZSl7dmFyIHQ9ZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSksbj1CZS5sZW5ndGg7d2hpbGUobi0tKWlmKChlPUJlW25dK3QpaW4gJGUpcmV0dXJuIGV9KGUpfHxlKX12YXIgVWU9L14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLFhlPS9eLS0vLFZlPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxHZT17bGV0dGVyU3BhY2luZzoiMCIsZm9udFdlaWdodDoiNDAwIn07ZnVuY3Rpb24gWWUoZSx0LG4pe3ZhciByPXRlLmV4ZWModCk7cmV0dXJuIHI/TWF0aC5tYXgoMCxyWzJdLShufHwwKSkrKHJbM118fCJweCIpOnR9ZnVuY3Rpb24gUWUoZSx0LG4scixpLG8pe3ZhciBhPSJ3aWR0aCI9PT10PzE6MCxzPTAsdT0wO2lmKG49PT0ocj8iYm9yZGVyIjoiY29udGVudCIpKXJldHVybiAwO2Zvcig7YTw0O2ErPTIpIm1hcmdpbiI9PT1uJiYodSs9Uy5jc3MoZSxuK25lW2FdLCEwLGkpKSxyPygiY29udGVudCI9PT1uJiYodS09Uy5jc3MoZSwicGFkZGluZyIrbmVbYV0sITAsaSkpLCJtYXJnaW4iIT09biYmKHUtPVMuY3NzKGUsImJvcmRlciIrbmVbYV0rIldpZHRoIiwhMCxpKSkpOih1Kz1TLmNzcyhlLCJwYWRkaW5nIituZVthXSwhMCxpKSwicGFkZGluZyIhPT1uP3UrPVMuY3NzKGUsImJvcmRlciIrbmVbYV0rIldpZHRoIiwhMCxpKTpzKz1TLmNzcyhlLCJib3JkZXIiK25lW2FdKyJXaWR0aCIsITAsaSkpO3JldHVybiFyJiYwPD1vJiYodSs9TWF0aC5tYXgoMCxNYXRoLmNlaWwoZVsib2Zmc2V0Iit0WzBdLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKV0tby11LXMtLjUpKXx8MCksdX1mdW5jdGlvbiBKZShlLHQsbil7dmFyIHI9UmUoZSksaT0oIXkuYm94U2l6aW5nUmVsaWFibGUoKXx8bikmJiJib3JkZXItYm94Ij09PVMuY3NzKGUsImJveFNpemluZyIsITEsciksbz1pLGE9V2UoZSx0LHIpLHM9Im9mZnNldCIrdFswXS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSk7aWYoUGUudGVzdChhKSl7aWYoIW4pcmV0dXJuIGE7YT0iYXV0byJ9cmV0dXJuKCF5LmJveFNpemluZ1JlbGlhYmxlKCkmJml8fCF5LnJlbGlhYmxlVHJEaW1lbnNpb25zKCkmJkEoZSwidHIiKXx8ImF1dG8iPT09YXx8IXBhcnNlRmxvYXQoYSkmJiJpbmxpbmUiPT09Uy5jc3MoZSwiZGlzcGxheSIsITEscikpJiZlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoJiYoaT0iYm9yZGVyLWJveCI9PT1TLmNzcyhlLCJib3hTaXppbmciLCExLHIpLChvPXMgaW4gZSkmJihhPWVbc10pKSwoYT1wYXJzZUZsb2F0KGEpfHwwKStRZShlLHQsbnx8KGk/ImJvcmRlciI6ImNvbnRlbnQiKSxvLHIsYSkrInB4In1mdW5jdGlvbiBLZShlLHQsbixyLGkpe3JldHVybiBuZXcgS2UucHJvdG90eXBlLmluaXQoZSx0LG4scixpKX1TLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihlLHQpe2lmKHQpe3ZhciBuPVdlKGUsIm9wYWNpdHkiKTtyZXR1cm4iIj09PW4/IjEiOm59fX19LGNzc051bWJlcjp7YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsY29sdW1uQ291bnQ6ITAsZmlsbE9wYWNpdHk6ITAsZmxleEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEwLGdyaWRBcmVhOiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3RhcnQ6ITAsZ3JpZFJvdzohMCxncmlkUm93RW5kOiEwLGdyaWRSb3dTdGFydDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITB9LGNzc1Byb3BzOnt9LHN0eWxlOmZ1bmN0aW9uKGUsdCxuLHIpe2lmKGUmJjMhPT1lLm5vZGVUeXBlJiY4IT09ZS5ub2RlVHlwZSYmZS5zdHlsZSl7dmFyIGksbyxhLHM9WCh0KSx1PVhlLnRlc3QodCksbD1lLnN0eWxlO2lmKHV8fCh0PXplKHMpKSxhPVMuY3NzSG9va3NbdF18fFMuY3NzSG9va3Nbc10sdm9pZCAwPT09bilyZXR1cm4gYSYmImdldCJpbiBhJiZ2b2lkIDAhPT0oaT1hLmdldChlLCExLHIpKT9pOmxbdF07InN0cmluZyI9PT0obz10eXBlb2YgbikmJihpPXRlLmV4ZWMobikpJiZpWzFdJiYobj1zZShlLHQsaSksbz0ibnVtYmVyIiksbnVsbCE9biYmbj09biYmKCJudW1iZXIiIT09b3x8dXx8KG4rPWkmJmlbM118fChTLmNzc051bWJlcltzXT8iIjoicHgiKSkseS5jbGVhckNsb25lU3R5bGV8fCIiIT09bnx8MCE9PXQuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwobFt0XT0iaW5oZXJpdCIpLGEmJiJzZXQiaW4gYSYmdm9pZCAwPT09KG49YS5zZXQoZSxuLHIpKXx8KHU/bC5zZXRQcm9wZXJ0eSh0LG4pOmxbdF09bikpfX0sY3NzOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzPVgodCk7cmV0dXJuIFhlLnRlc3QodCl8fCh0PXplKHMpKSwoYT1TLmNzc0hvb2tzW3RdfHxTLmNzc0hvb2tzW3NdKSYmImdldCJpbiBhJiYoaT1hLmdldChlLCEwLG4pKSx2b2lkIDA9PT1pJiYoaT1XZShlLHQscikpLCJub3JtYWwiPT09aSYmdCBpbiBHZSYmKGk9R2VbdF0pLCIiPT09bnx8bj8obz1wYXJzZUZsb2F0KGkpLCEwPT09bnx8aXNGaW5pdGUobyk/b3x8MDppKTppfX0pLFMuZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVuY3Rpb24oZSx1KXtTLmNzc0hvb2tzW3VdPXtnZXQ6ZnVuY3Rpb24oZSx0LG4pe2lmKHQpcmV0dXJuIVVlLnRlc3QoUy5jc3MoZSwiZGlzcGxheSIpKXx8ZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCYmZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aD9KZShlLHUsbik6TWUoZSxWZSxmdW5jdGlvbigpe3JldHVybiBKZShlLHUsbil9KX0sc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPVJlKGUpLG89IXkuc2Nyb2xsYm94U2l6ZSgpJiYiYWJzb2x1dGUiPT09aS5wb3NpdGlvbixhPShvfHxuKSYmImJvcmRlci1ib3giPT09Uy5jc3MoZSwiYm94U2l6aW5nIiwhMSxpKSxzPW4/UWUoZSx1LG4sYSxpKTowO3JldHVybiBhJiZvJiYocy09TWF0aC5jZWlsKGVbIm9mZnNldCIrdVswXS50b1VwcGVyQ2FzZSgpK3Uuc2xpY2UoMSldLXBhcnNlRmxvYXQoaVt1XSktUWUoZSx1LCJib3JkZXIiLCExLGkpLS41KSkscyYmKHI9dGUuZXhlYyh0KSkmJiJweCIhPT0oclszXXx8InB4IikmJihlLnN0eWxlW3VdPXQsdD1TLmNzcyhlLHUpKSxZZSgwLHQscyl9fX0pLFMuY3NzSG9va3MubWFyZ2luTGVmdD1GZSh5LnJlbGlhYmxlTWFyZ2luTGVmdCxmdW5jdGlvbihlLHQpe2lmKHQpcmV0dXJuKHBhcnNlRmxvYXQoV2UoZSwibWFyZ2luTGVmdCIpKXx8ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LU1lKGUse21hcmdpbkxlZnQ6MH0sZnVuY3Rpb24oKXtyZXR1cm4gZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0fSkpKyJweCJ9KSxTLmVhY2goe21hcmdpbjoiIixwYWRkaW5nOiIiLGJvcmRlcjoiV2lkdGgifSxmdW5jdGlvbihpLG8pe1MuY3NzSG9va3NbaStvXT17ZXhwYW5kOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLG49e30scj0ic3RyaW5nIj09dHlwZW9mIGU/ZS5zcGxpdCgiICIpOltlXTt0PDQ7dCsrKW5baStuZVt0XStvXT1yW3RdfHxyW3QtMl18fHJbMF07cmV0dXJuIG59fSwibWFyZ2luIiE9PWkmJihTLmNzc0hvb2tzW2krb10uc2V0PVllKX0pLFMuZm4uZXh0ZW5kKHtjc3M6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gJCh0aGlzLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89e30sYT0wO2lmKEFycmF5LmlzQXJyYXkodCkpe2ZvcihyPVJlKGUpLGk9dC5sZW5ndGg7YTxpO2ErKylvW3RbYV1dPVMuY3NzKGUsdFthXSwhMSxyKTtyZXR1cm4gb31yZXR1cm4gdm9pZCAwIT09bj9TLnN0eWxlKGUsdCxuKTpTLmNzcyhlLHQpfSxlLHQsMTxhcmd1bWVudHMubGVuZ3RoKX19KSwoKFMuVHdlZW49S2UpLnByb3RvdHlwZT17Y29uc3RydWN0b3I6S2UsaW5pdDpmdW5jdGlvbihlLHQsbixyLGksbyl7dGhpcy5lbGVtPWUsdGhpcy5wcm9wPW4sdGhpcy5lYXNpbmc9aXx8Uy5lYXNpbmcuX2RlZmF1bHQsdGhpcy5vcHRpb25zPXQsdGhpcy5zdGFydD10aGlzLm5vdz10aGlzLmN1cigpLHRoaXMuZW5kPXIsdGhpcy51bml0PW98fChTLmNzc051bWJlcltuXT8iIjoicHgiKX0sY3VyOmZ1bmN0aW9uKCl7dmFyIGU9S2UucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIGUmJmUuZ2V0P2UuZ2V0KHRoaXMpOktlLnByb3BIb29rcy5fZGVmYXVsdC5nZXQodGhpcyl9LHJ1bjpmdW5jdGlvbihlKXt2YXIgdCxuPUtlLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiB0aGlzLm9wdGlvbnMuZHVyYXRpb24/dGhpcy5wb3M9dD1TLmVhc2luZ1t0aGlzLmVhc2luZ10oZSx0aGlzLm9wdGlvbnMuZHVyYXRpb24qZSwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTp0aGlzLnBvcz10PWUsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKnQrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksbiYmbi5zZXQ/bi5zZXQodGhpcyk6S2UucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0pLmluaXQucHJvdG90eXBlPUtlLnByb3RvdHlwZSwoS2UucHJvcEhvb2tzPXtfZGVmYXVsdDp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiAxIT09ZS5lbGVtLm5vZGVUeXBlfHxudWxsIT1lLmVsZW1bZS5wcm9wXSYmbnVsbD09ZS5lbGVtLnN0eWxlW2UucHJvcF0/ZS5lbGVtW2UucHJvcF06KHQ9Uy5jc3MoZS5lbGVtLGUucHJvcCwiIikpJiYiYXV0byIhPT10P3Q6MH0sc2V0OmZ1bmN0aW9uKGUpe1MuZnguc3RlcFtlLnByb3BdP1MuZnguc3RlcFtlLnByb3BdKGUpOjEhPT1lLmVsZW0ubm9kZVR5cGV8fCFTLmNzc0hvb2tzW2UucHJvcF0mJm51bGw9PWUuZWxlbS5zdHlsZVt6ZShlLnByb3ApXT9lLmVsZW1bZS5wcm9wXT1lLm5vdzpTLnN0eWxlKGUuZWxlbSxlLnByb3AsZS5ub3crZS51bml0KX19fSkuc2Nyb2xsVG9wPUtlLnByb3BIb29rcy5zY3JvbGxMZWZ0PXtzZXQ6ZnVuY3Rpb24oZSl7ZS5lbGVtLm5vZGVUeXBlJiZlLmVsZW0ucGFyZW50Tm9kZSYmKGUuZWxlbVtlLnByb3BdPWUubm93KX19LFMuZWFzaW5nPXtsaW5lYXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHN3aW5nOmZ1bmN0aW9uKGUpe3JldHVybi41LU1hdGguY29zKGUqTWF0aC5QSSkvMn0sX2RlZmF1bHQ6InN3aW5nIn0sUy5meD1LZS5wcm90b3R5cGUuaW5pdCxTLmZ4LnN0ZXA9e307dmFyIFplLGV0LHR0LG50LHJ0PS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxpdD0vcXVldWVIb29rcyQvO2Z1bmN0aW9uIG90KCl7ZXQmJighMT09PUUuaGlkZGVuJiZDLnJlcXVlc3RBbmltYXRpb25GcmFtZT9DLnJlcXVlc3RBbmltYXRpb25GcmFtZShvdCk6Qy5zZXRUaW1lb3V0KG90LFMuZnguaW50ZXJ2YWwpLFMuZngudGljaygpKX1mdW5jdGlvbiBhdCgpe3JldHVybiBDLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtaZT12b2lkIDB9KSxaZT1EYXRlLm5vdygpfWZ1bmN0aW9uIHN0KGUsdCl7dmFyIG4scj0wLGk9e2hlaWdodDplfTtmb3IodD10PzE6MDtyPDQ7cis9Mi10KWlbIm1hcmdpbiIrKG49bmVbcl0pXT1pWyJwYWRkaW5nIituXT1lO3JldHVybiB0JiYoaS5vcGFjaXR5PWkud2lkdGg9ZSksaX1mdW5jdGlvbiB1dChlLHQsbil7Zm9yKHZhciByLGk9KGx0LnR3ZWVuZXJzW3RdfHxbXSkuY29uY2F0KGx0LnR3ZWVuZXJzWyIqIl0pLG89MCxhPWkubGVuZ3RoO288YTtvKyspaWYocj1pW29dLmNhbGwobix0LGUpKXJldHVybiByfWZ1bmN0aW9uIGx0KG8sZSx0KXt2YXIgbixhLHI9MCxpPWx0LnByZWZpbHRlcnMubGVuZ3RoLHM9Uy5EZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlvbigpe2RlbGV0ZSB1LmVsZW19KSx1PWZ1bmN0aW9uKCl7aWYoYSlyZXR1cm4hMTtmb3IodmFyIGU9WmV8fGF0KCksdD1NYXRoLm1heCgwLGwuc3RhcnRUaW1lK2wuZHVyYXRpb24tZSksbj0xLSh0L2wuZHVyYXRpb258fDApLHI9MCxpPWwudHdlZW5zLmxlbmd0aDtyPGk7cisrKWwudHdlZW5zW3JdLnJ1bihuKTtyZXR1cm4gcy5ub3RpZnlXaXRoKG8sW2wsbix0XSksbjwxJiZpP3Q6KGl8fHMubm90aWZ5V2l0aChvLFtsLDEsMF0pLHMucmVzb2x2ZVdpdGgobyxbbF0pLCExKX0sbD1zLnByb21pc2Uoe2VsZW06byxwcm9wczpTLmV4dGVuZCh7fSxlKSxvcHRzOlMuZXh0ZW5kKCEwLHtzcGVjaWFsRWFzaW5nOnt9LGVhc2luZzpTLmVhc2luZy5fZGVmYXVsdH0sdCksb3JpZ2luYWxQcm9wZXJ0aWVzOmUsb3JpZ2luYWxPcHRpb25zOnQsc3RhcnRUaW1lOlplfHxhdCgpLGR1cmF0aW9uOnQuZHVyYXRpb24sdHdlZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0aW9uKGUsdCl7dmFyIG49Uy5Ud2VlbihvLGwub3B0cyxlLHQsbC5vcHRzLnNwZWNpYWxFYXNpbmdbZV18fGwub3B0cy5lYXNpbmcpO3JldHVybiBsLnR3ZWVucy5wdXNoKG4pLG59LHN0b3A6ZnVuY3Rpb24oZSl7dmFyIHQ9MCxuPWU/bC50d2VlbnMubGVuZ3RoOjA7aWYoYSlyZXR1cm4gdGhpcztmb3IoYT0hMDt0PG47dCsrKWwudHdlZW5zW3RdLnJ1bigxKTtyZXR1cm4gZT8ocy5ub3RpZnlXaXRoKG8sW2wsMSwwXSkscy5yZXNvbHZlV2l0aChvLFtsLGVdKSk6cy5yZWplY3RXaXRoKG8sW2wsZV0pLHRoaXN9fSksYz1sLnByb3BzO2ZvcighZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksbyxhO2ZvcihuIGluIGUpaWYoaT10W3I9WChuKV0sbz1lW25dLEFycmF5LmlzQXJyYXkobykmJihpPW9bMV0sbz1lW25dPW9bMF0pLG4hPT1yJiYoZVtyXT1vLGRlbGV0ZSBlW25dKSwoYT1TLmNzc0hvb2tzW3JdKSYmImV4cGFuZCJpbiBhKWZvcihuIGluIG89YS5leHBhbmQobyksZGVsZXRlIGVbcl0sbyluIGluIGV8fChlW25dPW9bbl0sdFtuXT1pKTtlbHNlIHRbcl09aX0oYyxsLm9wdHMuc3BlY2lhbEVhc2luZyk7cjxpO3IrKylpZihuPWx0LnByZWZpbHRlcnNbcl0uY2FsbChsLG8sYyxsLm9wdHMpKXJldHVybiBtKG4uc3RvcCkmJihTLl9xdWV1ZUhvb2tzKGwuZWxlbSxsLm9wdHMucXVldWUpLnN0b3A9bi5zdG9wLmJpbmQobikpLG47cmV0dXJuIFMubWFwKGMsdXQsbCksbShsLm9wdHMuc3RhcnQpJiZsLm9wdHMuc3RhcnQuY2FsbChvLGwpLGwucHJvZ3Jlc3MobC5vcHRzLnByb2dyZXNzKS5kb25lKGwub3B0cy5kb25lLGwub3B0cy5jb21wbGV0ZSkuZmFpbChsLm9wdHMuZmFpbCkuYWx3YXlzKGwub3B0cy5hbHdheXMpLFMuZngudGltZXIoUy5leHRlbmQodSx7ZWxlbTpvLGFuaW06bCxxdWV1ZTpsLm9wdHMucXVldWV9KSksbH1TLkFuaW1hdGlvbj1TLmV4dGVuZChsdCx7dHdlZW5lcnM6eyIqIjpbZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmNyZWF0ZVR3ZWVuKGUsdCk7cmV0dXJuIHNlKG4uZWxlbSxlLHRlLmV4ZWModCksbiksbn1dfSx0d2VlbmVyOmZ1bmN0aW9uKGUsdCl7bShlKT8odD1lLGU9WyIqIl0pOmU9ZS5tYXRjaChQKTtmb3IodmFyIG4scj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyluPWVbcl0sbHQudHdlZW5lcnNbbl09bHQudHdlZW5lcnNbbl18fFtdLGx0LnR3ZWVuZXJzW25dLnVuc2hpZnQodCl9LHByZWZpbHRlcnM6W2Z1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbCxjLGY9IndpZHRoImluIHR8fCJoZWlnaHQiaW4gdCxwPXRoaXMsZD17fSxoPWUuc3R5bGUsZz1lLm5vZGVUeXBlJiZhZShlKSx2PVkuZ2V0KGUsImZ4c2hvdyIpO2ZvcihyIGluIG4ucXVldWV8fChudWxsPT0oYT1TLl9xdWV1ZUhvb2tzKGUsImZ4IikpLnVucXVldWVkJiYoYS51bnF1ZXVlZD0wLHM9YS5lbXB0eS5maXJlLGEuZW1wdHkuZmlyZT1mdW5jdGlvbigpe2EudW5xdWV1ZWR8fHMoKX0pLGEudW5xdWV1ZWQrKyxwLmFsd2F5cyhmdW5jdGlvbigpe3AuYWx3YXlzKGZ1bmN0aW9uKCl7YS51bnF1ZXVlZC0tLFMucXVldWUoZSwiZngiKS5sZW5ndGh8fGEuZW1wdHkuZmlyZSgpfSl9KSksdClpZihpPXRbcl0scnQudGVzdChpKSl7aWYoZGVsZXRlIHRbcl0sbz1vfHwidG9nZ2xlIj09PWksaT09PShnPyJoaWRlIjoic2hvdyIpKXtpZigic2hvdyIhPT1pfHwhdnx8dm9pZCAwPT09dltyXSljb250aW51ZTtnPSEwfWRbcl09diYmdltyXXx8Uy5zdHlsZShlLHIpfWlmKCh1PSFTLmlzRW1wdHlPYmplY3QodCkpfHwhUy5pc0VtcHR5T2JqZWN0KGQpKWZvcihyIGluIGYmJjE9PT1lLm5vZGVUeXBlJiYobi5vdmVyZmxvdz1baC5vdmVyZmxvdyxoLm92ZXJmbG93WCxoLm92ZXJmbG93WV0sbnVsbD09KGw9diYmdi5kaXNwbGF5KSYmKGw9WS5nZXQoZSwiZGlzcGxheSIpKSwibm9uZSI9PT0oYz1TLmNzcyhlLCJkaXNwbGF5IikpJiYobD9jPWw6KGxlKFtlXSwhMCksbD1lLnN0eWxlLmRpc3BsYXl8fGwsYz1TLmNzcyhlLCJkaXNwbGF5IiksbGUoW2VdKSkpLCgiaW5saW5lIj09PWN8fCJpbmxpbmUtYmxvY2siPT09YyYmbnVsbCE9bCkmJiJub25lIj09PVMuY3NzKGUsImZsb2F0IikmJih1fHwocC5kb25lKGZ1bmN0aW9uKCl7aC5kaXNwbGF5PWx9KSxudWxsPT1sJiYoYz1oLmRpc3BsYXksbD0ibm9uZSI9PT1jPyIiOmMpKSxoLmRpc3BsYXk9ImlubGluZS1ibG9jayIpKSxuLm92ZXJmbG93JiYoaC5vdmVyZmxvdz0iaGlkZGVuIixwLmFsd2F5cyhmdW5jdGlvbigpe2gub3ZlcmZsb3c9bi5vdmVyZmxvd1swXSxoLm92ZXJmbG93WD1uLm92ZXJmbG93WzFdLGgub3ZlcmZsb3dZPW4ub3ZlcmZsb3dbMl19KSksdT0hMSxkKXV8fCh2PyJoaWRkZW4iaW4gdiYmKGc9di5oaWRkZW4pOnY9WS5hY2Nlc3MoZSwiZnhzaG93Iix7ZGlzcGxheTpsfSksbyYmKHYuaGlkZGVuPSFnKSxnJiZsZShbZV0sITApLHAuZG9uZShmdW5jdGlvbigpe2ZvcihyIGluIGd8fGxlKFtlXSksWS5yZW1vdmUoZSwiZnhzaG93IiksZClTLnN0eWxlKGUscixkW3JdKX0pKSx1PXV0KGc/dltyXTowLHIscCksciBpbiB2fHwodltyXT11LnN0YXJ0LGcmJih1LmVuZD11LnN0YXJ0LHUuc3RhcnQ9MCkpfV0scHJlZmlsdGVyOmZ1bmN0aW9uKGUsdCl7dD9sdC5wcmVmaWx0ZXJzLnVuc2hpZnQoZSk6bHQucHJlZmlsdGVycy5wdXNoKGUpfX0pLFMuc3BlZWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUmJiJvYmplY3QiPT10eXBlb2YgZT9TLmV4dGVuZCh7fSxlKTp7Y29tcGxldGU6bnx8IW4mJnR8fG0oZSkmJmUsZHVyYXRpb246ZSxlYXNpbmc6biYmdHx8dCYmIW0odCkmJnR9O3JldHVybiBTLmZ4Lm9mZj9yLmR1cmF0aW9uPTA6Im51bWJlciIhPXR5cGVvZiByLmR1cmF0aW9uJiYoci5kdXJhdGlvbiBpbiBTLmZ4LnNwZWVkcz9yLmR1cmF0aW9uPVMuZnguc3BlZWRzW3IuZHVyYXRpb25dOnIuZHVyYXRpb249Uy5meC5zcGVlZHMuX2RlZmF1bHQpLG51bGwhPXIucXVldWUmJiEwIT09ci5xdWV1ZXx8KHIucXVldWU9ImZ4Iiksci5vbGQ9ci5jb21wbGV0ZSxyLmNvbXBsZXRlPWZ1bmN0aW9uKCl7bShyLm9sZCkmJnIub2xkLmNhbGwodGhpcyksci5xdWV1ZSYmUy5kZXF1ZXVlKHRoaXMsci5xdWV1ZSl9LHJ9LFMuZm4uZXh0ZW5kKHtmYWRlVG86ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMuZmlsdGVyKGFlKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OnR9LGUsbixyKX0sYW5pbWF0ZTpmdW5jdGlvbih0LGUsbixyKXt2YXIgaT1TLmlzRW1wdHlPYmplY3QodCksbz1TLnNwZWVkKGUsbixyKSxhPWZ1bmN0aW9uKCl7dmFyIGU9bHQodGhpcyxTLmV4dGVuZCh7fSx0KSxvKTsoaXx8WS5nZXQodGhpcywiZmluaXNoIikpJiZlLnN0b3AoITApfTtyZXR1cm4gYS5maW5pc2g9YSxpfHwhMT09PW8ucXVldWU/dGhpcy5lYWNoKGEpOnRoaXMucXVldWUoby5xdWV1ZSxhKX0sc3RvcDpmdW5jdGlvbihpLGUsbyl7dmFyIGE9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdG9wO2RlbGV0ZSBlLnN0b3AsdChvKX07cmV0dXJuInN0cmluZyIhPXR5cGVvZiBpJiYobz1lLGU9aSxpPXZvaWQgMCksZSYmdGhpcy5xdWV1ZShpfHwiZngiLFtdKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT0hMCx0PW51bGwhPWkmJmkrInF1ZXVlSG9va3MiLG49Uy50aW1lcnMscj1ZLmdldCh0aGlzKTtpZih0KXJbdF0mJnJbdF0uc3RvcCYmYShyW3RdKTtlbHNlIGZvcih0IGluIHIpclt0XSYmclt0XS5zdG9wJiZpdC50ZXN0KHQpJiZhKHJbdF0pO2Zvcih0PW4ubGVuZ3RoO3QtLTspblt0XS5lbGVtIT09dGhpc3x8bnVsbCE9aSYmblt0XS5xdWV1ZSE9PWl8fChuW3RdLmFuaW0uc3RvcChvKSxlPSExLG4uc3BsaWNlKHQsMSkpOyFlJiZvfHxTLmRlcXVldWUodGhpcyxpKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuITEhPT1hJiYoYT1hfHwiZngiKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0PVkuZ2V0KHRoaXMpLG49dFthKyJxdWV1ZSJdLHI9dFthKyJxdWV1ZUhvb2tzIl0saT1TLnRpbWVycyxvPW4/bi5sZW5ndGg6MDtmb3IodC5maW5pc2g9ITAsUy5xdWV1ZSh0aGlzLGEsW10pLHImJnIuc3RvcCYmci5zdG9wLmNhbGwodGhpcywhMCksZT1pLmxlbmd0aDtlLS07KWlbZV0uZWxlbT09PXRoaXMmJmlbZV0ucXVldWU9PT1hJiYoaVtlXS5hbmltLnN0b3AoITApLGkuc3BsaWNlKGUsMSkpO2ZvcihlPTA7ZTxvO2UrKyluW2VdJiZuW2VdLmZpbmlzaCYmbltlXS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgdC5maW5pc2h9KX19KSxTLmVhY2goWyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGUscil7dmFyIGk9Uy5mbltyXTtTLmZuW3JdPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbD09ZXx8ImJvb2xlYW4iPT10eXBlb2YgZT9pLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUoc3QociwhMCksZSx0LG4pfX0pLFMuZWFjaCh7c2xpZGVEb3duOnN0KCJzaG93Iiksc2xpZGVVcDpzdCgiaGlkZSIpLHNsaWRlVG9nZ2xlOnN0KCJ0b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGUscil7Uy5mbltlXT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuYW5pbWF0ZShyLGUsdCxuKX19KSxTLnRpbWVycz1bXSxTLmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgZSx0PTAsbj1TLnRpbWVycztmb3IoWmU9RGF0ZS5ub3coKTt0PG4ubGVuZ3RoO3QrKykoZT1uW3RdKSgpfHxuW3RdIT09ZXx8bi5zcGxpY2UodC0tLDEpO24ubGVuZ3RofHxTLmZ4LnN0b3AoKSxaZT12b2lkIDB9LFMuZngudGltZXI9ZnVuY3Rpb24oZSl7Uy50aW1lcnMucHVzaChlKSxTLmZ4LnN0YXJ0KCl9LFMuZnguaW50ZXJ2YWw9MTMsUy5meC5zdGFydD1mdW5jdGlvbigpe2V0fHwoZXQ9ITAsb3QoKSl9LFMuZnguc3RvcD1mdW5jdGlvbigpe2V0PW51bGx9LFMuZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LFMuZm4uZGVsYXk9ZnVuY3Rpb24ocixlKXtyZXR1cm4gcj1TLmZ4JiZTLmZ4LnNwZWVkc1tyXXx8cixlPWV8fCJmeCIsdGhpcy5xdWV1ZShlLGZ1bmN0aW9uKGUsdCl7dmFyIG49Qy5zZXRUaW1lb3V0KGUscik7dC5zdG9wPWZ1bmN0aW9uKCl7Qy5jbGVhclRpbWVvdXQobil9fSl9LHR0PUUuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxudD1FLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLmFwcGVuZENoaWxkKEUuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLHR0LnR5cGU9ImNoZWNrYm94Iix5LmNoZWNrT249IiIhPT10dC52YWx1ZSx5Lm9wdFNlbGVjdGVkPW50LnNlbGVjdGVkLCh0dD1FLmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnZhbHVlPSJ0Iix0dC50eXBlPSJyYWRpbyIseS5yYWRpb1ZhbHVlPSJ0Ij09PXR0LnZhbHVlO3ZhciBjdCxmdD1TLmV4cHIuYXR0ckhhbmRsZTtTLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihlLHQpe3JldHVybiAkKHRoaXMsUy5hdHRyLGUsdCwxPGFyZ3VtZW50cy5sZW5ndGgpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtTLnJlbW92ZUF0dHIodGhpcyxlKX0pfX0pLFMuZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89ZS5ub2RlVHlwZTtpZigzIT09byYmOCE9PW8mJjIhPT1vKXJldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgZS5nZXRBdHRyaWJ1dGU/Uy5wcm9wKGUsdCxuKTooMT09PW8mJlMuaXNYTUxEb2MoZSl8fChpPVMuYXR0ckhvb2tzW3QudG9Mb3dlckNhc2UoKV18fChTLmV4cHIubWF0Y2guYm9vbC50ZXN0KHQpP2N0OnZvaWQgMCkpLHZvaWQgMCE9PW4/bnVsbD09PW4/dm9pZCBTLnJlbW92ZUF0dHIoZSx0KTppJiYic2V0ImluIGkmJnZvaWQgMCE9PShyPWkuc2V0KGUsbix0KSk/cjooZS5zZXRBdHRyaWJ1dGUodCxuKyIiKSxuKTppJiYiZ2V0ImluIGkmJm51bGwhPT0ocj1pLmdldChlLHQpKT9yOm51bGw9PShyPVMuZmluZC5hdHRyKGUsdCkpP3ZvaWQgMDpyKX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oZSx0KXtpZigheS5yYWRpb1ZhbHVlJiYicmFkaW8iPT09dCYmQShlLCJpbnB1dCIpKXt2YXIgbj1lLnZhbHVlO3JldHVybiBlLnNldEF0dHJpYnV0ZSgidHlwZSIsdCksbiYmKGUudmFsdWU9biksdH19fX0scmVtb3ZlQXR0cjpmdW5jdGlvbihlLHQpe3ZhciBuLHI9MCxpPXQmJnQubWF0Y2goUCk7aWYoaSYmMT09PWUubm9kZVR5cGUpd2hpbGUobj1pW3IrK10pZS5yZW1vdmVBdHRyaWJ1dGUobil9fSksY3Q9e3NldDpmdW5jdGlvbihlLHQsbil7cmV0dXJuITE9PT10P1MucmVtb3ZlQXR0cihlLG4pOmUuc2V0QXR0cmlidXRlKG4sbiksbn19LFMuZWFjaChTLmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goL1x3Ky9nKSxmdW5jdGlvbihlLHQpe3ZhciBhPWZ0W3RdfHxTLmZpbmQuYXR0cjtmdFt0XT1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPXQudG9Mb3dlckNhc2UoKTtyZXR1cm4gbnx8KGk9ZnRbb10sZnRbb109cixyPW51bGwhPWEoZSx0LG4pP286bnVsbCxmdFtvXT1pKSxyfX0pO3ZhciBwdD0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLGR0PS9eKD86YXxhcmVhKSQvaTtmdW5jdGlvbiBodChlKXtyZXR1cm4oZS5tYXRjaChQKXx8W10pLmpvaW4oIiAiKX1mdW5jdGlvbiBndChlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUmJmUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIn1mdW5jdGlvbiB2dChlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lOiJzdHJpbmciPT10eXBlb2YgZSYmZS5tYXRjaChQKXx8W119Uy5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gJCh0aGlzLFMucHJvcCxlLHQsMTxhcmd1bWVudHMubGVuZ3RoKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbUy5wcm9wRml4W2VdfHxlXX0pfX0pLFMuZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89ZS5ub2RlVHlwZTtpZigzIT09byYmOCE9PW8mJjIhPT1vKXJldHVybiAxPT09byYmUy5pc1hNTERvYyhlKXx8KHQ9Uy5wcm9wRml4W3RdfHx0LGk9Uy5wcm9wSG9va3NbdF0pLHZvaWQgMCE9PW4/aSYmInNldCJpbiBpJiZ2b2lkIDAhPT0ocj1pLnNldChlLG4sdCkpP3I6ZVt0XT1uOmkmJiJnZXQiaW4gaSYmbnVsbCE9PShyPWkuZ2V0KGUsdCkpP3I6ZVt0XX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PVMuZmluZC5hdHRyKGUsInRhYmluZGV4Iik7cmV0dXJuIHQ/cGFyc2VJbnQodCwxMCk6cHQudGVzdChlLm5vZGVOYW1lKXx8ZHQudGVzdChlLm5vZGVOYW1lKSYmZS5ocmVmPzA6LTF9fX0scHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9fSkseS5vcHRTZWxlY3RlZHx8KFMucHJvcEhvb2tzLnNlbGVjdGVkPXtnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3JldHVybiB0JiZ0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LG51bGx9LHNldDpmdW5jdGlvbihlKXt2YXIgdD1lLnBhcmVudE5vZGU7dCYmKHQuc2VsZWN0ZWRJbmRleCx0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KX19KSxTLmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSxmdW5jdGlvbigpe1MucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KSxTLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24odCl7dmFyIGUsbixyLGksbyxhLHMsdT0wO2lmKG0odCkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLmFkZENsYXNzKHQuY2FsbCh0aGlzLGUsZ3QodGhpcykpKX0pO2lmKChlPXZ0KHQpKS5sZW5ndGgpd2hpbGUobj10aGlzW3UrK10paWYoaT1ndChuKSxyPTE9PT1uLm5vZGVUeXBlJiYiICIraHQoaSkrIiAiKXthPTA7d2hpbGUobz1lW2ErK10pci5pbmRleE9mKCIgIitvKyIgIik8MCYmKHIrPW8rIiAiKTtpIT09KHM9aHQocikpJiZuLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHMpfXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbih0KXt2YXIgZSxuLHIsaSxvLGEscyx1PTA7aWYobSh0KSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGUpe1ModGhpcykucmVtb3ZlQ2xhc3ModC5jYWxsKHRoaXMsZSxndCh0aGlzKSkpfSk7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuYXR0cigiY2xhc3MiLCIiKTtpZigoZT12dCh0KSkubGVuZ3RoKXdoaWxlKG49dGhpc1t1KytdKWlmKGk9Z3Qobikscj0xPT09bi5ub2RlVHlwZSYmIiAiK2h0KGkpKyIgIil7YT0wO3doaWxlKG89ZVthKytdKXdoaWxlKC0xPHIuaW5kZXhPZigiICIrbysiICIpKXI9ci5yZXBsYWNlKCIgIitvKyIgIiwiICIpO2khPT0ocz1odChyKSkmJm4uc2V0QXR0cmlidXRlKCJjbGFzcyIscyl9cmV0dXJuIHRoaXN9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKGksdCl7dmFyIG89dHlwZW9mIGksYT0ic3RyaW5nIj09PW98fEFycmF5LmlzQXJyYXkoaSk7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgdCYmYT90P3RoaXMuYWRkQ2xhc3MoaSk6dGhpcy5yZW1vdmVDbGFzcyhpKTptKGkpP3RoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLnRvZ2dsZUNsYXNzKGkuY2FsbCh0aGlzLGUsZ3QodGhpcyksdCksdCl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0LG4scjtpZihhKXt0PTAsbj1TKHRoaXMpLHI9dnQoaSk7d2hpbGUoZT1yW3QrK10pbi5oYXNDbGFzcyhlKT9uLnJlbW92ZUNsYXNzKGUpOm4uYWRkQ2xhc3MoZSl9ZWxzZSB2b2lkIDAhPT1pJiYiYm9vbGVhbiIhPT1vfHwoKGU9Z3QodGhpcykpJiZZLnNldCh0aGlzLCJfX2NsYXNzTmFtZV9fIixlKSx0aGlzLnNldEF0dHJpYnV0ZSYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIixlfHwhMT09PWk/IiI6WS5nZXQodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIikpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj0wO3Q9IiAiK2UrIiAiO3doaWxlKG49dGhpc1tyKytdKWlmKDE9PT1uLm5vZGVUeXBlJiYtMTwoIiAiK2h0KGd0KG4pKSsiICIpLmluZGV4T2YodCkpcmV0dXJuITA7cmV0dXJuITF9fSk7dmFyIHl0PS9cci9nO1MuZm4uZXh0ZW5kKHt2YWw6ZnVuY3Rpb24obil7dmFyIHIsZSxpLHQ9dGhpc1swXTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1tKG4pLHRoaXMuZWFjaChmdW5jdGlvbihlKXt2YXIgdDsxPT09dGhpcy5ub2RlVHlwZSYmKG51bGw9PSh0PWk/bi5jYWxsKHRoaXMsZSxTKHRoaXMpLnZhbCgpKTpuKT90PSIiOiJudW1iZXIiPT10eXBlb2YgdD90Kz0iIjpBcnJheS5pc0FycmF5KHQpJiYodD1TLm1hcCh0LGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOmUrIiJ9KSksKHI9Uy52YWxIb29rc1t0aGlzLnR5cGVdfHxTLnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pJiYic2V0ImluIHImJnZvaWQgMCE9PXIuc2V0KHRoaXMsdCwidmFsdWUiKXx8KHRoaXMudmFsdWU9dCkpfSkpOnQ/KHI9Uy52YWxIb29rc1t0LnR5cGVdfHxTLnZhbEhvb2tzW3Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pJiYiZ2V0ImluIHImJnZvaWQgMCE9PShlPXIuZ2V0KHQsInZhbHVlIikpP2U6InN0cmluZyI9PXR5cGVvZihlPXQudmFsdWUpP2UucmVwbGFjZSh5dCwiIik6bnVsbD09ZT8iIjplOnZvaWQgMH19KSxTLmV4dGVuZCh7dmFsSG9va3M6e29wdGlvbjp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PVMuZmluZC5hdHRyKGUsInZhbHVlIik7cmV0dXJuIG51bGwhPXQ/dDpodChTLnRleHQoZSkpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGk9ZS5vcHRpb25zLG89ZS5zZWxlY3RlZEluZGV4LGE9InNlbGVjdC1vbmUiPT09ZS50eXBlLHM9YT9udWxsOltdLHU9YT9vKzE6aS5sZW5ndGg7Zm9yKHI9bzwwP3U6YT9vOjA7cjx1O3IrKylpZigoKG49aVtyXSkuc2VsZWN0ZWR8fHI9PT1vKSYmIW4uZGlzYWJsZWQmJighbi5wYXJlbnROb2RlLmRpc2FibGVkfHwhQShuLnBhcmVudE5vZGUsIm9wdGdyb3VwIikpKXtpZih0PVMobikudmFsKCksYSlyZXR1cm4gdDtzLnB1c2godCl9cmV0dXJuIHN9LHNldDpmdW5jdGlvbihlLHQpe3ZhciBuLHIsaT1lLm9wdGlvbnMsbz1TLm1ha2VBcnJheSh0KSxhPWkubGVuZ3RoO3doaWxlKGEtLSkoKHI9aVthXSkuc2VsZWN0ZWQ9LTE8Uy5pbkFycmF5KFMudmFsSG9va3Mub3B0aW9uLmdldChyKSxvKSkmJihuPSEwKTtyZXR1cm4gbnx8KGUuc2VsZWN0ZWRJbmRleD0tMSksb319fX0pLFMuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe1MudmFsSG9va3NbdGhpc109e3NldDpmdW5jdGlvbihlLHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGUuY2hlY2tlZD0tMTxTLmluQXJyYXkoUyhlKS52YWwoKSx0KX19LHkuY2hlY2tPbnx8KFMudmFsSG9va3NbdGhpc10uZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT09ZS5nZXRBdHRyaWJ1dGUoInZhbHVlIik/Im9uIjplLnZhbHVlfSl9KSx5LmZvY3VzaW49Im9uZm9jdXNpbiJpbiBDO3ZhciBtdD0vXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8seHQ9ZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKX07Uy5leHRlbmQoUy5ldmVudCx7dHJpZ2dlcjpmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscyx1LGwsYyxmLHA9W258fEVdLGQ9di5jYWxsKGUsInR5cGUiKT9lLnR5cGU6ZSxoPXYuY2FsbChlLCJuYW1lc3BhY2UiKT9lLm5hbWVzcGFjZS5zcGxpdCgiLiIpOltdO2lmKG89Zj1hPW49bnx8RSwzIT09bi5ub2RlVHlwZSYmOCE9PW4ubm9kZVR5cGUmJiFtdC50ZXN0KGQrUy5ldmVudC50cmlnZ2VyZWQpJiYoLTE8ZC5pbmRleE9mKCIuIikmJihkPShoPWQuc3BsaXQoIi4iKSkuc2hpZnQoKSxoLnNvcnQoKSksdT1kLmluZGV4T2YoIjoiKTwwJiYib24iK2QsKGU9ZVtTLmV4cGFuZG9dP2U6bmV3IFMuRXZlbnQoZCwib2JqZWN0Ij09dHlwZW9mIGUmJmUpKS5pc1RyaWdnZXI9cj8yOjMsZS5uYW1lc3BhY2U9aC5qb2luKCIuIiksZS5ybmFtZXNwYWNlPWUubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK2guam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxlLnJlc3VsdD12b2lkIDAsZS50YXJnZXR8fChlLnRhcmdldD1uKSx0PW51bGw9PXQ/W2VdOlMubWFrZUFycmF5KHQsW2VdKSxjPVMuZXZlbnQuc3BlY2lhbFtkXXx8e30scnx8IWMudHJpZ2dlcnx8ITEhPT1jLnRyaWdnZXIuYXBwbHkobix0KSkpe2lmKCFyJiYhYy5ub0J1YmJsZSYmIXgobikpe2ZvcihzPWMuZGVsZWdhdGVUeXBlfHxkLG10LnRlc3QocytkKXx8KG89by5wYXJlbnROb2RlKTtvO289by5wYXJlbnROb2RlKXAucHVzaChvKSxhPW87YT09PShuLm93bmVyRG9jdW1lbnR8fEUpJiZwLnB1c2goYS5kZWZhdWx0Vmlld3x8YS5wYXJlbnRXaW5kb3d8fEMpfWk9MDt3aGlsZSgobz1wW2krK10pJiYhZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWY9byxlLnR5cGU9MTxpP3M6Yy5iaW5kVHlwZXx8ZCwobD0oWS5nZXQobywiZXZlbnRzIil8fE9iamVjdC5jcmVhdGUobnVsbCkpW2UudHlwZV0mJlkuZ2V0KG8sImhhbmRsZSIpKSYmbC5hcHBseShvLHQpLChsPXUmJm9bdV0pJiZsLmFwcGx5JiZWKG8pJiYoZS5yZXN1bHQ9bC5hcHBseShvLHQpLCExPT09ZS5yZXN1bHQmJmUucHJldmVudERlZmF1bHQoKSk7cmV0dXJuIGUudHlwZT1kLHJ8fGUuaXNEZWZhdWx0UHJldmVudGVkKCl8fGMuX2RlZmF1bHQmJiExIT09Yy5fZGVmYXVsdC5hcHBseShwLnBvcCgpLHQpfHwhVihuKXx8dSYmbShuW2RdKSYmIXgobikmJigoYT1uW3VdKSYmKG5bdV09bnVsbCksUy5ldmVudC50cmlnZ2VyZWQ9ZCxlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkmJmYuYWRkRXZlbnRMaXN0ZW5lcihkLHh0KSxuW2RdKCksZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpJiZmLnJlbW92ZUV2ZW50TGlzdGVuZXIoZCx4dCksUy5ldmVudC50cmlnZ2VyZWQ9dm9pZCAwLGEmJihuW3VdPWEpKSxlLnJlc3VsdH19LHNpbXVsYXRlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1TLmV4dGVuZChuZXcgUy5FdmVudCxuLHt0eXBlOmUsaXNTaW11bGF0ZWQ6ITB9KTtTLmV2ZW50LnRyaWdnZXIocixudWxsLHQpfX0pLFMuZm4uZXh0ZW5kKHt0cmlnZ2VyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe1MuZXZlbnQudHJpZ2dlcihlLHQsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzWzBdO2lmKG4pcmV0dXJuIFMuZXZlbnQudHJpZ2dlcihlLHQsbiwhMCl9fSkseS5mb2N1c2lufHxTLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKG4scil7dmFyIGk9ZnVuY3Rpb24oZSl7Uy5ldmVudC5zaW11bGF0ZShyLGUudGFyZ2V0LFMuZXZlbnQuZml4KGUpKX07Uy5ldmVudC5zcGVjaWFsW3JdPXtzZXR1cDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcy5kb2N1bWVudHx8dGhpcyx0PVkuYWNjZXNzKGUscik7dHx8ZS5hZGRFdmVudExpc3RlbmVyKG4saSwhMCksWS5hY2Nlc3MoZSxyLCh0fHwwKSsxKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMuZG9jdW1lbnR8fHRoaXMsdD1ZLmFjY2VzcyhlLHIpLTE7dD9ZLmFjY2VzcyhlLHIsdCk6KGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLGksITApLFkucmVtb3ZlKGUscikpfX19KTt2YXIgYnQ9Qy5sb2NhdGlvbix3dD17Z3VpZDpEYXRlLm5vdygpfSxUdD0vXD8vO1MucGFyc2VYTUw9ZnVuY3Rpb24oZSl7dmFyIHQsbjtpZighZXx8InN0cmluZyIhPXR5cGVvZiBlKXJldHVybiBudWxsO3RyeXt0PShuZXcgQy5ET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyhlLCJ0ZXh0L3htbCIpfWNhdGNoKGUpe31yZXR1cm4gbj10JiZ0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpWzBdLHQmJiFufHxTLmVycm9yKCJJbnZhbGlkIFhNTDogIisobj9TLm1hcChuLmNoaWxkTm9kZXMsZnVuY3Rpb24oZSl7cmV0dXJuIGUudGV4dENvbnRlbnR9KS5qb2luKCJcbiIpOmUpKSx0fTt2YXIgQ3Q9L1xbXF0kLyxFdD0vXHI/XG4vZyxTdD0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksa3Q9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIEF0KG4sZSxyLGkpe3ZhciB0O2lmKEFycmF5LmlzQXJyYXkoZSkpUy5lYWNoKGUsZnVuY3Rpb24oZSx0KXtyfHxDdC50ZXN0KG4pP2kobix0KTpBdChuKyJbIisoIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT10P2U6IiIpKyJdIix0LHIsaSl9KTtlbHNlIGlmKHJ8fCJvYmplY3QiIT09dyhlKSlpKG4sZSk7ZWxzZSBmb3IodCBpbiBlKUF0KG4rIlsiK3QrIl0iLGVbdF0scixpKX1TLnBhcmFtPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj1bXSxpPWZ1bmN0aW9uKGUsdCl7dmFyIG49bSh0KT90KCk6dDtyW3IubGVuZ3RoXT1lbmNvZGVVUklDb21wb25lbnQoZSkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChudWxsPT1uPyIiOm4pfTtpZihudWxsPT1lKXJldHVybiIiO2lmKEFycmF5LmlzQXJyYXkoZSl8fGUuanF1ZXJ5JiYhUy5pc1BsYWluT2JqZWN0KGUpKVMuZWFjaChlLGZ1bmN0aW9uKCl7aSh0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcihuIGluIGUpQXQobixlW25dLHQsaSk7cmV0dXJuIHIuam9pbigiJiIpfSxTLmZuLmV4dGVuZCh7c2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIFMucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgZT1TLnByb3AodGhpcywiZWxlbWVudHMiKTtyZXR1cm4gZT9TLm1ha2VBcnJheShlKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy50eXBlO3JldHVybiB0aGlzLm5hbWUmJiFTKHRoaXMpLmlzKCI6ZGlzYWJsZWQiKSYma3QudGVzdCh0aGlzLm5vZGVOYW1lKSYmIVN0LnRlc3QoZSkmJih0aGlzLmNoZWNrZWR8fCFwZS50ZXN0KGUpKX0pLm1hcChmdW5jdGlvbihlLHQpe3ZhciBuPVModGhpcykudmFsKCk7cmV0dXJuIG51bGw9PW4/bnVsbDpBcnJheS5pc0FycmF5KG4pP1MubWFwKG4sZnVuY3Rpb24oZSl7cmV0dXJue25hbWU6dC5uYW1lLHZhbHVlOmUucmVwbGFjZShFdCwiXHJcbiIpfX0pOntuYW1lOnQubmFtZSx2YWx1ZTpuLnJlcGxhY2UoRXQsIlxyXG4iKX19KS5nZXQoKX19KTt2YXIgTnQ9LyUyMC9nLGp0PS8jLiokLyxEdD0vKFs/Jl0pXz1bXiZdKi8scXQ9L14oLio/KTpbIFx0XSooW15cclxuXSopJC9nbSxMdD0vXig/OkdFVHxIRUFEKSQvLEh0PS9eXC9cLy8sT3Q9e30sUHQ9e30sUnQ9IiovIi5jb25jYXQoIioiKSxNdD1FLmNyZWF0ZUVsZW1lbnQoImEiKTtmdW5jdGlvbiBJdChvKXtyZXR1cm4gZnVuY3Rpb24oZSx0KXsic3RyaW5nIiE9dHlwZW9mIGUmJih0PWUsZT0iKiIpO3ZhciBuLHI9MCxpPWUudG9Mb3dlckNhc2UoKS5tYXRjaChQKXx8W107aWYobSh0KSl3aGlsZShuPWlbcisrXSkiKyI9PT1uWzBdPyhuPW4uc2xpY2UoMSl8fCIqIiwob1tuXT1vW25dfHxbXSkudW5zaGlmdCh0KSk6KG9bbl09b1tuXXx8W10pLnB1c2godCl9fWZ1bmN0aW9uIFd0KHQsaSxvLGEpe3ZhciBzPXt9LHU9dD09PVB0O2Z1bmN0aW9uIGwoZSl7dmFyIHI7cmV0dXJuIHNbZV09ITAsUy5lYWNoKHRbZV18fFtdLGZ1bmN0aW9uKGUsdCl7dmFyIG49dChpLG8sYSk7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBufHx1fHxzW25dP3U/IShyPW4pOnZvaWQgMDooaS5kYXRhVHlwZXMudW5zaGlmdChuKSxsKG4pLCExKX0pLHJ9cmV0dXJuIGwoaS5kYXRhVHlwZXNbMF0pfHwhc1siKiJdJiZsKCIqIil9ZnVuY3Rpb24gRnQoZSx0KXt2YXIgbixyLGk9Uy5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnN8fHt9O2ZvcihuIGluIHQpdm9pZCAwIT09dFtuXSYmKChpW25dP2U6cnx8KHI9e30pKVtuXT10W25dKTtyZXR1cm4gciYmUy5leHRlbmQoITAsZSxyKSxlfU10LmhyZWY9YnQuaHJlZixTLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6YnQuaHJlZix0eXBlOiJHRVQiLGlzTG9jYWw6L14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8udGVzdChidC5wcm90b2NvbCksZ2xvYmFsOiEwLHByb2Nlc3NEYXRhOiEwLGFzeW5jOiEwLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLGFjY2VwdHM6eyIqIjpSdCx0ZXh0OiJ0ZXh0L3BsYWluIixodG1sOiJ0ZXh0L2h0bWwiLHhtbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0In0sY29udGVudHM6e3htbDovXGJ4bWxcYi8saHRtbDovXGJodG1sLyxqc29uOi9cYmpzb25cYi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpKU09OLnBhcnNlLCJ0ZXh0IHhtbCI6Uy5wYXJzZVhNTH0sZmxhdE9wdGlvbnM6e3VybDohMCxjb250ZXh0OiEwfX0sYWpheFNldHVwOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/RnQoRnQoZSxTLmFqYXhTZXR0aW5ncyksdCk6RnQoUy5hamF4U2V0dGluZ3MsZSl9LGFqYXhQcmVmaWx0ZXI6SXQoT3QpLGFqYXhUcmFuc3BvcnQ6SXQoUHQpLGFqYXg6ZnVuY3Rpb24oZSx0KXsib2JqZWN0Ij09dHlwZW9mIGUmJih0PWUsZT12b2lkIDApLHQ9dHx8e307dmFyIGMsZixwLG4sZCxyLGgsZyxpLG8sdj1TLmFqYXhTZXR1cCh7fSx0KSx5PXYuY29udGV4dHx8dixtPXYuY29udGV4dCYmKHkubm9kZVR5cGV8fHkuanF1ZXJ5KT9TKHkpOlMuZXZlbnQseD1TLkRlZmVycmVkKCksYj1TLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSx3PXYuc3RhdHVzQ29kZXx8e30sYT17fSxzPXt9LHU9ImNhbmNlbGVkIixUPXtyZWFkeVN0YXRlOjAsZ2V0UmVzcG9uc2VIZWFkZXI6ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoaCl7aWYoIW4pe249e307d2hpbGUodD1xdC5leGVjKHApKW5bdFsxXS50b0xvd2VyQ2FzZSgpKyIgIl09KG5bdFsxXS50b0xvd2VyQ2FzZSgpKyIgIl18fFtdKS5jb25jYXQodFsyXSl9dD1uW2UudG9Mb3dlckNhc2UoKSsiICJdfXJldHVybiBudWxsPT10P251bGw6dC5qb2luKCIsICIpfSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gaD9wOm51bGx9LHNldFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09aCYmKGU9c1tlLnRvTG93ZXJDYXNlKCldPXNbZS50b0xvd2VyQ2FzZSgpXXx8ZSxhW2VdPXQpLHRoaXN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWgmJih2Lm1pbWVUeXBlPWUpLHRoaXN9LHN0YXR1c0NvZGU6ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoZSlpZihoKVQuYWx3YXlzKGVbVC5zdGF0dXNdKTtlbHNlIGZvcih0IGluIGUpd1t0XT1bd1t0XSxlW3RdXTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZXx8dTtyZXR1cm4gYyYmYy5hYm9ydCh0KSxsKDAsdCksdGhpc319O2lmKHgucHJvbWlzZShUKSx2LnVybD0oKGV8fHYudXJsfHxidC5ocmVmKSsiIikucmVwbGFjZShIdCxidC5wcm90b2NvbCsiLy8iKSx2LnR5cGU9dC5tZXRob2R8fHQudHlwZXx8di5tZXRob2R8fHYudHlwZSx2LmRhdGFUeXBlcz0odi5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKFApfHxbIiJdLG51bGw9PXYuY3Jvc3NEb21haW4pe3I9RS5jcmVhdGVFbGVtZW50KCJhIik7dHJ5e3IuaHJlZj12LnVybCxyLmhyZWY9ci5ocmVmLHYuY3Jvc3NEb21haW49TXQucHJvdG9jb2wrIi8vIitNdC5ob3N0IT1yLnByb3RvY29sKyIvLyIrci5ob3N0fWNhdGNoKGUpe3YuY3Jvc3NEb21haW49ITB9fWlmKHYuZGF0YSYmdi5wcm9jZXNzRGF0YSYmInN0cmluZyIhPXR5cGVvZiB2LmRhdGEmJih2LmRhdGE9Uy5wYXJhbSh2LmRhdGEsdi50cmFkaXRpb25hbCkpLFd0KE90LHYsdCxUKSxoKXJldHVybiBUO2ZvcihpIGluKGc9Uy5ldmVudCYmdi5nbG9iYWwpJiYwPT1TLmFjdGl2ZSsrJiZTLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpLHYudHlwZT12LnR5cGUudG9VcHBlckNhc2UoKSx2Lmhhc0NvbnRlbnQ9IUx0LnRlc3Qodi50eXBlKSxmPXYudXJsLnJlcGxhY2UoanQsIiIpLHYuaGFzQ29udGVudD92LmRhdGEmJnYucHJvY2Vzc0RhdGEmJjA9PT0odi5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiYodi5kYXRhPXYuZGF0YS5yZXBsYWNlKE50LCIrIikpOihvPXYudXJsLnNsaWNlKGYubGVuZ3RoKSx2LmRhdGEmJih2LnByb2Nlc3NEYXRhfHwic3RyaW5nIj09dHlwZW9mIHYuZGF0YSkmJihmKz0oVHQudGVzdChmKT8iJiI6Ij8iKSt2LmRhdGEsZGVsZXRlIHYuZGF0YSksITE9PT12LmNhY2hlJiYoZj1mLnJlcGxhY2UoRHQsIiQxIiksbz0oVHQudGVzdChmKT8iJiI6Ij8iKSsiXz0iK3d0Lmd1aWQrKytvKSx2LnVybD1mK28pLHYuaWZNb2RpZmllZCYmKFMubGFzdE1vZGlmaWVkW2ZdJiZULnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixTLmxhc3RNb2RpZmllZFtmXSksUy5ldGFnW2ZdJiZULnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLFMuZXRhZ1tmXSkpLCh2LmRhdGEmJnYuaGFzQ29udGVudCYmITEhPT12LmNvbnRlbnRUeXBlfHx0LmNvbnRlbnRUeXBlKSYmVC5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLHYuY29udGVudFR5cGUpLFQuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0Iix2LmRhdGFUeXBlc1swXSYmdi5hY2NlcHRzW3YuZGF0YVR5cGVzWzBdXT92LmFjY2VwdHNbdi5kYXRhVHlwZXNbMF1dKygiKiIhPT12LmRhdGFUeXBlc1swXT8iLCAiK1J0KyI7IHE9MC4wMSI6IiIpOnYuYWNjZXB0c1siKiJdKSx2LmhlYWRlcnMpVC5zZXRSZXF1ZXN0SGVhZGVyKGksdi5oZWFkZXJzW2ldKTtpZih2LmJlZm9yZVNlbmQmJighMT09PXYuYmVmb3JlU2VuZC5jYWxsKHksVCx2KXx8aCkpcmV0dXJuIFQuYWJvcnQoKTtpZih1PSJhYm9ydCIsYi5hZGQodi5jb21wbGV0ZSksVC5kb25lKHYuc3VjY2VzcyksVC5mYWlsKHYuZXJyb3IpLGM9V3QoUHQsdix0LFQpKXtpZihULnJlYWR5U3RhdGU9MSxnJiZtLnRyaWdnZXIoImFqYXhTZW5kIixbVCx2XSksaClyZXR1cm4gVDt2LmFzeW5jJiYwPHYudGltZW91dCYmKGQ9Qy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7VC5hYm9ydCgidGltZW91dCIpfSx2LnRpbWVvdXQpKTt0cnl7aD0hMSxjLnNlbmQoYSxsKX1jYXRjaChlKXtpZihoKXRocm93IGU7bCgtMSxlKX19ZWxzZSBsKC0xLCJObyBUcmFuc3BvcnQiKTtmdW5jdGlvbiBsKGUsdCxuLHIpe3ZhciBpLG8sYSxzLHUsbD10O2h8fChoPSEwLGQmJkMuY2xlYXJUaW1lb3V0KGQpLGM9dm9pZCAwLHA9cnx8IiIsVC5yZWFkeVN0YXRlPTA8ZT80OjAsaT0yMDA8PWUmJmU8MzAwfHwzMDQ9PT1lLG4mJihzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzPWUuY29udGVudHMsdT1lLmRhdGFUeXBlczt3aGlsZSgiKiI9PT11WzBdKXUuc2hpZnQoKSx2b2lkIDA9PT1yJiYocj1lLm1pbWVUeXBlfHx0LmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKSk7aWYocilmb3IoaSBpbiBzKWlmKHNbaV0mJnNbaV0udGVzdChyKSl7dS51bnNoaWZ0KGkpO2JyZWFrfWlmKHVbMF1pbiBuKW89dVswXTtlbHNle2ZvcihpIGluIG4pe2lmKCF1WzBdfHxlLmNvbnZlcnRlcnNbaSsiICIrdVswXV0pe289aTticmVha31hfHwoYT1pKX1vPW98fGF9aWYobylyZXR1cm4gbyE9PXVbMF0mJnUudW5zaGlmdChvKSxuW29dfSh2LFQsbikpLCFpJiYtMTxTLmluQXJyYXkoInNjcmlwdCIsdi5kYXRhVHlwZXMpJiZTLmluQXJyYXkoImpzb24iLHYuZGF0YVR5cGVzKTwwJiYodi5jb252ZXJ0ZXJzWyJ0ZXh0IHNjcmlwdCJdPWZ1bmN0aW9uKCl7fSkscz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscyx1LGw9e30sYz1lLmRhdGFUeXBlcy5zbGljZSgpO2lmKGNbMV0pZm9yKGEgaW4gZS5jb252ZXJ0ZXJzKWxbYS50b0xvd2VyQ2FzZSgpXT1lLmNvbnZlcnRlcnNbYV07bz1jLnNoaWZ0KCk7d2hpbGUobylpZihlLnJlc3BvbnNlRmllbGRzW29dJiYobltlLnJlc3BvbnNlRmllbGRzW29dXT10KSwhdSYmciYmZS5kYXRhRmlsdGVyJiYodD1lLmRhdGFGaWx0ZXIodCxlLmRhdGFUeXBlKSksdT1vLG89Yy5zaGlmdCgpKWlmKCIqIj09PW8pbz11O2Vsc2UgaWYoIioiIT09dSYmdSE9PW8pe2lmKCEoYT1sW3UrIiAiK29dfHxsWyIqICIrb10pKWZvcihpIGluIGwpaWYoKHM9aS5zcGxpdCgiICIpKVsxXT09PW8mJihhPWxbdSsiICIrc1swXV18fGxbIiogIitzWzBdXSkpeyEwPT09YT9hPWxbaV06ITAhPT1sW2ldJiYobz1zWzBdLGMudW5zaGlmdChzWzFdKSk7YnJlYWt9aWYoITAhPT1hKWlmKGEmJmVbInRocm93cyJdKXQ9YSh0KTtlbHNlIHRyeXt0PWEodCl9Y2F0Y2goZSl7cmV0dXJue3N0YXRlOiJwYXJzZXJlcnJvciIsZXJyb3I6YT9lOiJObyBjb252ZXJzaW9uIGZyb20gIit1KyIgdG8gIitvfX19cmV0dXJue3N0YXRlOiJzdWNjZXNzIixkYXRhOnR9fSh2LHMsVCxpKSxpPyh2LmlmTW9kaWZpZWQmJigodT1ULmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIikpJiYoUy5sYXN0TW9kaWZpZWRbZl09dSksKHU9VC5nZXRSZXNwb25zZUhlYWRlcigiZXRhZyIpKSYmKFMuZXRhZ1tmXT11KSksMjA0PT09ZXx8IkhFQUQiPT09di50eXBlP2w9Im5vY29udGVudCI6MzA0PT09ZT9sPSJub3Rtb2RpZmllZCI6KGw9cy5zdGF0ZSxvPXMuZGF0YSxpPSEoYT1zLmVycm9yKSkpOihhPWwsIWUmJmx8fChsPSJlcnJvciIsZTwwJiYoZT0wKSkpLFQuc3RhdHVzPWUsVC5zdGF0dXNUZXh0PSh0fHxsKSsiIixpP3gucmVzb2x2ZVdpdGgoeSxbbyxsLFRdKTp4LnJlamVjdFdpdGgoeSxbVCxsLGFdKSxULnN0YXR1c0NvZGUodyksdz12b2lkIDAsZyYmbS50cmlnZ2VyKGk/ImFqYXhTdWNjZXNzIjoiYWpheEVycm9yIixbVCx2LGk/bzphXSksYi5maXJlV2l0aCh5LFtULGxdKSxnJiYobS50cmlnZ2VyKCJhamF4Q29tcGxldGUiLFtULHZdKSwtLVMuYWN0aXZlfHxTLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIikpKX1yZXR1cm4gVH0sZ2V0SlNPTjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIFMuZ2V0KGUsdCxuLCJqc29uIil9LGdldFNjcmlwdDpmdW5jdGlvbihlLHQpe3JldHVybiBTLmdldChlLHZvaWQgMCx0LCJzY3JpcHQiKX19KSxTLmVhY2goWyJnZXQiLCJwb3N0Il0sZnVuY3Rpb24oZSxpKXtTW2ldPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBtKHQpJiYocj1yfHxuLG49dCx0PXZvaWQgMCksUy5hamF4KFMuZXh0ZW5kKHt1cmw6ZSx0eXBlOmksZGF0YVR5cGU6cixkYXRhOnQsc3VjY2VzczpufSxTLmlzUGxhaW5PYmplY3QoZSkmJmUpKX19KSxTLmFqYXhQcmVmaWx0ZXIoZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQgaW4gZS5oZWFkZXJzKSJjb250ZW50LXR5cGUiPT09dC50b0xvd2VyQ2FzZSgpJiYoZS5jb250ZW50VHlwZT1lLmhlYWRlcnNbdF18fCIiKX0pLFMuX2V2YWxVcmw9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBTLmFqYXgoe3VybDplLHR5cGU6IkdFVCIsZGF0YVR5cGU6InNjcmlwdCIsY2FjaGU6ITAsYXN5bmM6ITEsZ2xvYmFsOiExLGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oKXt9fSxkYXRhRmlsdGVyOmZ1bmN0aW9uKGUpe1MuZ2xvYmFsRXZhbChlLHQsbil9fSl9LFMuZm4uZXh0ZW5kKHt3cmFwQWxsOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB0aGlzWzBdJiYobShlKSYmKGU9ZS5jYWxsKHRoaXNbMF0pKSx0PVMoZSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKSx0aGlzWzBdLnBhcmVudE5vZGUmJnQuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLHQubWFwKGZ1bmN0aW9uKCl7dmFyIGU9dGhpczt3aGlsZShlLmZpcnN0RWxlbWVudENoaWxkKWU9ZS5maXJzdEVsZW1lbnRDaGlsZDtyZXR1cm4gZX0pLmFwcGVuZCh0aGlzKSksdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKG4pe3JldHVybiBtKG4pP3RoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLndyYXBJbm5lcihuLmNhbGwodGhpcyxlKSl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1TKHRoaXMpLHQ9ZS5jb250ZW50cygpO3QubGVuZ3RoP3Qud3JhcEFsbChuKTplLmFwcGVuZChuKX0pfSx3cmFwOmZ1bmN0aW9uKHQpe3ZhciBuPW0odCk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLndyYXBBbGwobj90LmNhbGwodGhpcyxlKTp0KX0pfSx1bndyYXA6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucGFyZW50KGUpLm5vdCgiYm9keSIpLmVhY2goZnVuY3Rpb24oKXtTKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KSx0aGlzfX0pLFMuZXhwci5wc2V1ZG9zLmhpZGRlbj1mdW5jdGlvbihlKXtyZXR1cm4hUy5leHByLnBzZXVkb3MudmlzaWJsZShlKX0sUy5leHByLnBzZXVkb3MudmlzaWJsZT1mdW5jdGlvbihlKXtyZXR1cm4hIShlLm9mZnNldFdpZHRofHxlLm9mZnNldEhlaWdodHx8ZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCl9LFMuYWpheFNldHRpbmdzLnhocj1mdW5jdGlvbigpe3RyeXtyZXR1cm4gbmV3IEMuWE1MSHR0cFJlcXVlc3R9Y2F0Y2goZSl7fX07dmFyIEJ0PXswOjIwMCwxMjIzOjIwNH0sJHQ9Uy5hamF4U2V0dGluZ3MueGhyKCk7eS5jb3JzPSEhJHQmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gJHQseS5hamF4PSR0PSEhJHQsUy5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGkpe3ZhciBvLGE7aWYoeS5jb3JzfHwkdCYmIWkuY3Jvc3NEb21haW4pcmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPWkueGhyKCk7aWYoci5vcGVuKGkudHlwZSxpLnVybCxpLmFzeW5jLGkudXNlcm5hbWUsaS5wYXNzd29yZCksaS54aHJGaWVsZHMpZm9yKG4gaW4gaS54aHJGaWVsZHMpcltuXT1pLnhockZpZWxkc1tuXTtmb3IobiBpbiBpLm1pbWVUeXBlJiZyLm92ZXJyaWRlTWltZVR5cGUmJnIub3ZlcnJpZGVNaW1lVHlwZShpLm1pbWVUeXBlKSxpLmNyb3NzRG9tYWlufHxlWyJYLVJlcXVlc3RlZC1XaXRoIl18fChlWyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0IiksZSlyLnNldFJlcXVlc3RIZWFkZXIobixlW25dKTtvPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe28mJihvPWE9ci5vbmxvYWQ9ci5vbmVycm9yPXIub25hYm9ydD1yLm9udGltZW91dD1yLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLCJhYm9ydCI9PT1lP3IuYWJvcnQoKToiZXJyb3IiPT09ZT8ibnVtYmVyIiE9dHlwZW9mIHIuc3RhdHVzP3QoMCwiZXJyb3IiKTp0KHIuc3RhdHVzLHIuc3RhdHVzVGV4dCk6dChCdFtyLnN0YXR1c118fHIuc3RhdHVzLHIuc3RhdHVzVGV4dCwidGV4dCIhPT0oci5yZXNwb25zZVR5cGV8fCJ0ZXh0Iil8fCJzdHJpbmciIT10eXBlb2Ygci5yZXNwb25zZVRleHQ/e2JpbmFyeTpyLnJlc3BvbnNlfTp7dGV4dDpyLnJlc3BvbnNlVGV4dH0sci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkpfX0sci5vbmxvYWQ9bygpLGE9ci5vbmVycm9yPXIub250aW1lb3V0PW8oImVycm9yIiksdm9pZCAwIT09ci5vbmFib3J0P3Iub25hYm9ydD1hOnIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ND09PXIucmVhZHlTdGF0ZSYmQy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7byYmYSgpfSl9LG89bygiYWJvcnQiKTt0cnl7ci5zZW5kKGkuaGFzQ29udGVudCYmaS5kYXRhfHxudWxsKX1jYXRjaChlKXtpZihvKXRocm93IGV9fSxhYm9ydDpmdW5jdGlvbigpe28mJm8oKX19fSksUy5hamF4UHJlZmlsdGVyKGZ1bmN0aW9uKGUpe2UuY3Jvc3NEb21haW4mJihlLmNvbnRlbnRzLnNjcmlwdD0hMSl9KSxTLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6L1xiKD86amF2YXxlY21hKXNjcmlwdFxiL30sY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbihlKXtyZXR1cm4gUy5nbG9iYWxFdmFsKGUpLGV9fX0pLFMuYWpheFByZWZpbHRlcigic2NyaXB0IixmdW5jdGlvbihlKXt2b2lkIDA9PT1lLmNhY2hlJiYoZS5jYWNoZT0hMSksZS5jcm9zc0RvbWFpbiYmKGUudHlwZT0iR0VUIil9KSxTLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsZnVuY3Rpb24obil7dmFyIHIsaTtpZihuLmNyb3NzRG9tYWlufHxuLnNjcmlwdEF0dHJzKXJldHVybntzZW5kOmZ1bmN0aW9uKGUsdCl7cj1TKCI8c2NyaXB0PiIpLmF0dHIobi5zY3JpcHRBdHRyc3x8e30pLnByb3Aoe2NoYXJzZXQ6bi5zY3JpcHRDaGFyc2V0LHNyYzpuLnVybH0pLm9uKCJsb2FkIGVycm9yIixpPWZ1bmN0aW9uKGUpe3IucmVtb3ZlKCksaT1udWxsLGUmJnQoImVycm9yIj09PWUudHlwZT80MDQ6MjAwLGUudHlwZSl9KSxFLmhlYWQuYXBwZW5kQ2hpbGQoclswXSl9LGFib3J0OmZ1bmN0aW9uKCl7aSYmaSgpfX19KTt2YXIgX3QsenQ9W10sVXQ9Lyg9KVw/KD89JnwkKXxcP1w/LztTLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGU9enQucG9wKCl8fFMuZXhwYW5kbysiXyIrd3QuZ3VpZCsrO3JldHVybiB0aGlzW2VdPSEwLGV9fSksUy5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGE9ITEhPT1lLmpzb25wJiYoVXQudGVzdChlLnVybCk/InVybCI6InN0cmluZyI9PXR5cGVvZiBlLmRhdGEmJjA9PT0oZS5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiZVdC50ZXN0KGUuZGF0YSkmJiJkYXRhIik7aWYoYXx8Impzb25wIj09PWUuZGF0YVR5cGVzWzBdKXJldHVybiByPWUuanNvbnBDYWxsYmFjaz1tKGUuanNvbnBDYWxsYmFjayk/ZS5qc29ucENhbGxiYWNrKCk6ZS5qc29ucENhbGxiYWNrLGE/ZVthXT1lW2FdLnJlcGxhY2UoVXQsIiQxIityKTohMSE9PWUuanNvbnAmJihlLnVybCs9KFR0LnRlc3QoZS51cmwpPyImIjoiPyIpK2UuanNvbnArIj0iK3IpLGUuY29udmVydGVyc1sic2NyaXB0IGpzb24iXT1mdW5jdGlvbigpe3JldHVybiBvfHxTLmVycm9yKHIrIiB3YXMgbm90IGNhbGxlZCIpLG9bMF19LGUuZGF0YVR5cGVzWzBdPSJqc29uIixpPUNbcl0sQ1tyXT1mdW5jdGlvbigpe289YXJndW1lbnRzfSxuLmFsd2F5cyhmdW5jdGlvbigpe3ZvaWQgMD09PWk/UyhDKS5yZW1vdmVQcm9wKHIpOkNbcl09aSxlW3JdJiYoZS5qc29ucENhbGxiYWNrPXQuanNvbnBDYWxsYmFjayx6dC5wdXNoKHIpKSxvJiZtKGkpJiZpKG9bMF0pLG89aT12b2lkIDB9KSwic2NyaXB0In0pLHkuY3JlYXRlSFRNTERvY3VtZW50PSgoX3Q9RS5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpLmJvZHkpLmlubmVySFRNTD0iPGZvcm0+PC9mb3JtPjxmb3JtPjwvZm9ybT4iLDI9PT1fdC5jaGlsZE5vZGVzLmxlbmd0aCksUy5wYXJzZUhUTUw9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiJzdHJpbmciIT10eXBlb2YgZT9bXTooImJvb2xlYW4iPT10eXBlb2YgdCYmKG49dCx0PSExKSx0fHwoeS5jcmVhdGVIVE1MRG9jdW1lbnQ/KChyPSh0PUUuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKSkuY3JlYXRlRWxlbWVudCgiYmFzZSIpKS5ocmVmPUUubG9jYXRpb24uaHJlZix0LmhlYWQuYXBwZW5kQ2hpbGQocikpOnQ9RSksbz0hbiYmW10sKGk9Ti5leGVjKGUpKT9bdC5jcmVhdGVFbGVtZW50KGlbMV0pXTooaT14ZShbZV0sdCxvKSxvJiZvLmxlbmd0aCYmUyhvKS5yZW1vdmUoKSxTLm1lcmdlKFtdLGkuY2hpbGROb2RlcykpKTt2YXIgcixpLG99LFMuZm4ubG9hZD1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGE9dGhpcyxzPWUuaW5kZXhPZigiICIpO3JldHVybi0xPHMmJihyPWh0KGUuc2xpY2UocykpLGU9ZS5zbGljZSgwLHMpKSxtKHQpPyhuPXQsdD12b2lkIDApOnQmJiJvYmplY3QiPT10eXBlb2YgdCYmKGk9IlBPU1QiKSwwPGEubGVuZ3RoJiZTLmFqYXgoe3VybDplLHR5cGU6aXx8IkdFVCIsZGF0YVR5cGU6Imh0bWwiLGRhdGE6dH0pLmRvbmUoZnVuY3Rpb24oZSl7bz1hcmd1bWVudHMsYS5odG1sKHI/UygiPGRpdj4iKS5hcHBlbmQoUy5wYXJzZUhUTUwoZSkpLmZpbmQocik6ZSl9KS5hbHdheXMobiYmZnVuY3Rpb24oZSx0KXthLmVhY2goZnVuY3Rpb24oKXtuLmFwcGx5KHRoaXMsb3x8W2UucmVzcG9uc2VUZXh0LHQsZV0pfSl9KSx0aGlzfSxTLmV4cHIucHNldWRvcy5hbmltYXRlZD1mdW5jdGlvbih0KXtyZXR1cm4gUy5ncmVwKFMudGltZXJzLGZ1bmN0aW9uKGUpe3JldHVybiB0PT09ZS5lbGVtfSkubGVuZ3RofSxTLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbD1TLmNzcyhlLCJwb3NpdGlvbiIpLGM9UyhlKSxmPXt9OyJzdGF0aWMiPT09bCYmKGUuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIikscz1jLm9mZnNldCgpLG89Uy5jc3MoZSwidG9wIiksdT1TLmNzcyhlLCJsZWZ0IiksKCJhYnNvbHV0ZSI9PT1sfHwiZml4ZWQiPT09bCkmJi0xPChvK3UpLmluZGV4T2YoImF1dG8iKT8oYT0ocj1jLnBvc2l0aW9uKCkpLnRvcCxpPXIubGVmdCk6KGE9cGFyc2VGbG9hdChvKXx8MCxpPXBhcnNlRmxvYXQodSl8fDApLG0odCkmJih0PXQuY2FsbChlLG4sUy5leHRlbmQoe30scykpKSxudWxsIT10LnRvcCYmKGYudG9wPXQudG9wLXMudG9wK2EpLG51bGwhPXQubGVmdCYmKGYubGVmdD10LmxlZnQtcy5sZWZ0K2kpLCJ1c2luZyJpbiB0P3QudXNpbmcuY2FsbChlLGYpOmMuY3NzKGYpfX0sUy5mbi5leHRlbmQoe29mZnNldDpmdW5jdGlvbih0KXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT10P3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKGUpe1Mub2Zmc2V0LnNldE9mZnNldCh0aGlzLHQsZSl9KTt2YXIgZSxuLHI9dGhpc1swXTtyZXR1cm4gcj9yLmdldENsaWVudFJlY3RzKCkubGVuZ3RoPyhlPXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj1yLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcse3RvcDplLnRvcCtuLnBhZ2VZT2Zmc2V0LGxlZnQ6ZS5sZWZ0K24ucGFnZVhPZmZzZXR9KTp7dG9wOjAsbGVmdDowfTp2b2lkIDB9LHBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYodGhpc1swXSl7dmFyIGUsdCxuLHI9dGhpc1swXSxpPXt0b3A6MCxsZWZ0OjB9O2lmKCJmaXhlZCI9PT1TLmNzcyhyLCJwb3NpdGlvbiIpKXQ9ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtlbHNle3Q9dGhpcy5vZmZzZXQoKSxuPXIub3duZXJEb2N1bWVudCxlPXIub2Zmc2V0UGFyZW50fHxuLmRvY3VtZW50RWxlbWVudDt3aGlsZShlJiYoZT09PW4uYm9keXx8ZT09PW4uZG9jdW1lbnRFbGVtZW50KSYmInN0YXRpYyI9PT1TLmNzcyhlLCJwb3NpdGlvbiIpKWU9ZS5wYXJlbnROb2RlO2UmJmUhPT1yJiYxPT09ZS5ub2RlVHlwZSYmKChpPVMoZSkub2Zmc2V0KCkpLnRvcCs9Uy5jc3MoZSwiYm9yZGVyVG9wV2lkdGgiLCEwKSxpLmxlZnQrPVMuY3NzKGUsImJvcmRlckxlZnRXaWR0aCIsITApKX1yZXR1cm57dG9wOnQudG9wLWkudG9wLVMuY3NzKHIsIm1hcmdpblRvcCIsITApLGxlZnQ6dC5sZWZ0LWkubGVmdC1TLmNzcyhyLCJtYXJnaW5MZWZ0IiwhMCl9fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vZmZzZXRQYXJlbnQ7d2hpbGUoZSYmInN0YXRpYyI9PT1TLmNzcyhlLCJwb3NpdGlvbiIpKWU9ZS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGV8fHJlfSl9fSksUy5lYWNoKHtzY3JvbGxMZWZ0OiJwYWdlWE9mZnNldCIsc2Nyb2xsVG9wOiJwYWdlWU9mZnNldCJ9LGZ1bmN0aW9uKHQsaSl7dmFyIG89InBhZ2VZT2Zmc2V0Ij09PWk7Uy5mblt0XT1mdW5jdGlvbihlKXtyZXR1cm4gJCh0aGlzLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtpZih4KGUpP3I9ZTo5PT09ZS5ub2RlVHlwZSYmKHI9ZS5kZWZhdWx0Vmlldyksdm9pZCAwPT09bilyZXR1cm4gcj9yW2ldOmVbdF07cj9yLnNjcm9sbFRvKG8/ci5wYWdlWE9mZnNldDpuLG8/bjpyLnBhZ2VZT2Zmc2V0KTplW3RdPW59LHQsZSxhcmd1bWVudHMubGVuZ3RoKX19KSxTLmVhY2goWyJ0b3AiLCJsZWZ0Il0sZnVuY3Rpb24oZSxuKXtTLmNzc0hvb2tzW25dPUZlKHkucGl4ZWxQb3NpdGlvbixmdW5jdGlvbihlLHQpe2lmKHQpcmV0dXJuIHQ9V2UoZSxuKSxQZS50ZXN0KHQpP1MoZSkucG9zaXRpb24oKVtuXSsicHgiOnR9KX0pLFMuZWFjaCh7SGVpZ2h0OiJoZWlnaHQiLFdpZHRoOiJ3aWR0aCJ9LGZ1bmN0aW9uKGEscyl7Uy5lYWNoKHtwYWRkaW5nOiJpbm5lciIrYSxjb250ZW50OnMsIiI6Im91dGVyIithfSxmdW5jdGlvbihyLG8pe1MuZm5bb109ZnVuY3Rpb24oZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoJiYocnx8ImJvb2xlYW4iIT10eXBlb2YgZSksaT1yfHwoITA9PT1lfHwhMD09PXQ/Im1hcmdpbiI6ImJvcmRlciIpO3JldHVybiAkKHRoaXMsZnVuY3Rpb24oZSx0LG4pe3ZhciByO3JldHVybiB4KGUpPzA9PT1vLmluZGV4T2YoIm91dGVyIik/ZVsiaW5uZXIiK2FdOmUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJjbGllbnQiK2FdOjk9PT1lLm5vZGVUeXBlPyhyPWUuZG9jdW1lbnRFbGVtZW50LE1hdGgubWF4KGUuYm9keVsic2Nyb2xsIithXSxyWyJzY3JvbGwiK2FdLGUuYm9keVsib2Zmc2V0IithXSxyWyJvZmZzZXQiK2FdLHJbImNsaWVudCIrYV0pKTp2b2lkIDA9PT1uP1MuY3NzKGUsdCxpKTpTLnN0eWxlKGUsdCxuLGkpfSxzLG4/ZTp2b2lkIDAsbil9fSl9KSxTLmVhY2goWyJhamF4U3RhcnQiLCJhamF4U3RvcCIsImFqYXhDb21wbGV0ZSIsImFqYXhFcnJvciIsImFqYXhTdWNjZXNzIiwiYWpheFNlbmQiXSxmdW5jdGlvbihlLHQpe1MuZm5bdF09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMub24odCxlKX19KSxTLmZuLmV4dGVuZCh7YmluZDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMub24oZSxudWxsLHQsbil9LHVuYmluZDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLm9mZihlLG51bGwsdCl9LGRlbGVnYXRlOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB0aGlzLm9uKHQsZSxuLHIpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vZmYoZSwiKioiKTp0aGlzLm9mZih0LGV8fCIqKiIsbil9LGhvdmVyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubW91c2VlbnRlcihlKS5tb3VzZWxlYXZlKHR8fGUpfX0pLFMuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IHJlc2l6ZSBzY3JvbGwgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihlLG4pe1MuZm5bbl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gMDxhcmd1bWVudHMubGVuZ3RoP3RoaXMub24obixudWxsLGUsdCk6dGhpcy50cmlnZ2VyKG4pfX0pO3ZhciBYdD0vXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2c7Uy5wcm94eT1mdW5jdGlvbihlLHQpe3ZhciBuLHIsaTtpZigic3RyaW5nIj09dHlwZW9mIHQmJihuPWVbdF0sdD1lLGU9biksbShlKSlyZXR1cm4gcj1zLmNhbGwoYXJndW1lbnRzLDIpLChpPWZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodHx8dGhpcyxyLmNvbmNhdChzLmNhbGwoYXJndW1lbnRzKSkpfSkuZ3VpZD1lLmd1aWQ9ZS5ndWlkfHxTLmd1aWQrKyxpfSxTLmhvbGRSZWFkeT1mdW5jdGlvbihlKXtlP1MucmVhZHlXYWl0Kys6Uy5yZWFkeSghMCl9LFMuaXNBcnJheT1BcnJheS5pc0FycmF5LFMucGFyc2VKU09OPUpTT04ucGFyc2UsUy5ub2RlTmFtZT1BLFMuaXNGdW5jdGlvbj1tLFMuaXNXaW5kb3c9eCxTLmNhbWVsQ2FzZT1YLFMudHlwZT13LFMubm93PURhdGUubm93LFMuaXNOdW1lcmljPWZ1bmN0aW9uKGUpe3ZhciB0PVMudHlwZShlKTtyZXR1cm4oIm51bWJlciI9PT10fHwic3RyaW5nIj09PXQpJiYhaXNOYU4oZS1wYXJzZUZsb2F0KGUpKX0sUy50cmltPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOihlKyIiKS5yZXBsYWNlKFh0LCIiKX0sImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIFN9KTt2YXIgVnQ9Qy5qUXVlcnksR3Q9Qy4kO3JldHVybiBTLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIEMuJD09PVMmJihDLiQ9R3QpLGUmJkMualF1ZXJ5PT09UyYmKEMualF1ZXJ5PVZ0KSxTfSwidW5kZWZpbmVkIj09dHlwZW9mIGUmJihDLmpRdWVyeT1DLiQ9UyksU30pOwo="></script>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="data:text/css,%40font%2Dface%20%7B%0Afont%2Dfamily%3A%20%27Source%20Sans%20Pro%27%3B%0Afont%2Dstyle%3A%20normal%3B%0Afont%2Dweight%3A%20300%3B%0Asrc%3A%20url%28data%3Aapplication%2Ffont%2Dsfnt%3Bbase64%2CAAEAAAARAQAABAAQR0RFRgNEA3IAAG%2BkAAAAQEdQT1PXveeXAABv5AAAGWRHU1VC8WfWVwAAiUgAAADgT1MvMlpQkwsAAGZkAAAAYGNtYXDzMPm1AABmxAAAAeZjdnQgDXMAuAAAamwAAAAoZnBnbQZZnDcAAGisAAABc2dhc3D%2F%2FwADAABvnAAAAAhnbHlm4G%2FpBAAAARwAAF8kaGVhZP4Fs%2FYAAGJEAAAANmhoZWEHlAOiAABmQAAAACRobXR4l6Yq6AAAYnwAAAPEbG9jYV5idvoAAGBgAAAB5G1heHADCwJJAABgQAAAACBuYW1lIvc8kwAAapQAAAHKcG9zdGxQSG8AAGxgAAADOXByZXAtaIB5AABqIAAAAEsABQBeAAACGgKUAAMABgAJAA8AFQBnALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAIvG7kAAgAEPlm6AAUAAgAAERI5ugAGAAIAABESOboABwACAAAREjm6AAgAAgAAERI5uQAKAAH0ugANAAIAABESObgAABC5ABIAAfQwMRMhESETAxEhEQMTLwEjDwETPwEhHwFeAbz%2BRMCTAWCRfF07BD1foDVW%2FuRXNgKU%2FWwBVAEE%2FfwCBP78%2FtOkaWmkAU1cm5tcAAIACAAAAgYCkwAJABEAVAC4AABFWLgADi8buQAOABA%2BWbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4ABEvG7kAEQAEPlm6AAUADAAOERI5ugALAAwADhESObgACy%2B5AAkAAfQwMQEnLgEnIw4BDwEXIQcjEzMTIwF8KhQkEQQRJBQq9%2F77Ti7oLugwAQl7O2w9PWw7eyfiApP9bQAAAAMAYQAAAhUCkwARABoAIwBbALgAAEVYuAAALxu5AAAAED5ZuAAARVi4ABEvG7kAEQAEPlm6ACEAAAARERI5uAAhL7oACAAhABIREjm4AAAQuQAZAAH0uAAhELkAGgAB9LgAERC5ACMAAfQwMRMzMhYVFAYHFR4BFRQOAisBEzI2NTQmKwEVEzI2NTQmKwERYbJkdjs6SVQjQFo4v6BmWF5bd4VjcW5mhQKTTVM0TQ8EC09FMEgwGAFxQUJAOfz%2BtUpQR0X%2B2gAAAQA3%2F%2FQCDwKfACEAOQC4AABFWLgABS8buQAFABA%2BWbgAAEVYuAAdLxu5AB0ABD5ZuAAFELkADAAB9LgAHRC5ABYAAfQwMRM0PgIzMhYXBy4BIyIOAhUUHgIzMjY3Fw4BIyIuAjcpSmg%2FOVgaHBpILTZXPSAgPFU1M08kHCZeQD1mSSgBS05%2BWS8wHx4eJSpNbkVFb04rKCkdLDIwWX8AAAIAYQAAAiUCkwAMABkANQC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAMLxu5AAwABD5ZuQANAAH0uAAAELkAFwAB9DAxEzMyHgIVFA4CKwE3Mj4CNTQuAisBEWGZTHFKJCRKcEyalENhPh4ePmFDZgKTLlZ4S0t7Vy8nK05rQUBqTCr9uwAAAAABAGEAAAHUApMACwBNALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAsvG7kACwAEPlm4AAAQuQADAAH0ugAHAAAACxESObgABy%2B5AAUAAfS4AAsQuQAIAAH0MDETIRUhFSEVIREhFSFhAWn%2BxQEI%2FvgBRf6NApMo%2BSj%2B3igAAQBhAAAByAKTAAkAQwC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAJLxu5AAkABD5ZuAAAELkAAwAB9LoABwAAAAkREjm4AAcvuQAFAAH0MDETIRUhESEVIREjYQFn%2FscBCf73LgKTKP76KP7DAAAAAAEAN%2F%2F0AhUCnwAnAE0AuAAARVi4AAUvG7kABQAQPlm4AABFWLgAIy8buQAjAAQ%2BWbgABRC5AA4AAfS4ACMQuQAYAAH0ugAfAAUAIxESObgAHy%2B5AB0AAfQwMRM0PgIzMh4CFwcuASMiDgIVFB4CMzI2NzUjNTMRDgEjIi4CNypNa0IhNiwjDRsaSDY5Wj8iID1ZOC1PGJ7KH2NCP2hKKQFLTn5ZLw4XHA4eHCcqTW5FRW9OKxoYzSf%2B%2ByEqMFl%2FAAEAYQAAAh4CkwALAEkAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgACy8buQALAAQ%2BWboACQAAAAsREjm4AAkvuQADAAH0uAAAELgABNC4AAsQuAAH0DAxEzMRIREzESMRIREjYS4BYS4u%2Fp8uApP%2B3wEh%2FW0BSv62AAEAYQAAAI8CkwADACUAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgAAy8buQADAAQ%2BWTAxEzMRI2EuLgKT%2FW0AAAABACn%2F9AFvApMAEQArALgAAEVYuAAHLxu5AAcAED5ZuAAARVi4AA4vG7kADgAEPlm5AAMAAfQwMTceATMyNjURMxEUDgIjIiYnTBg9Kjw6LhInPi03UhlsKiRJUQHb%2FiAoRTQeMi8AAAEAYQAAAiQCkwAMAFsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgABC8buQAEABA%2BWbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4AAgvG7kACAAEPlm6AAIAAAAMERI5ugAJAAQACBESOTAxEzMRMwEzBxMjAwcVI2EuAgE%2FN9LvNdqGLgKT%2FpIBbvT%2BYQF8meMAAAEAYQAAAb8CkwAFACsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgABS8buQAFAAQ%2BWbkAAgAB9DAxEzMRIRUhYS4BMP6iApP9lSgAAAABAGEAAAJhApMAGQBvALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAYvG7kABgAQPlm4AABFWLgAGS8buQAZAAQ%2BWbgAAEVYuAAJLxu5AAkABD5ZugADAAYACRESOboADgAGAAkREjm6ABEAGQAGERI5ugAUAAAAGRESOTAxEzMTFzM3EzMRIxE0NjcjBwMjAycjHgEVESNhQYo0BDKKQS0EAgQ0jSmONAQCBCsCk%2F59kpIBg%2F1tAbEpXyqR%2FnYBipEqXyn%2BTwAAAAEAYQAAAhsCkwATAFsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgACC8buQAIABA%2BWbgAAEVYuAATLxu5ABMABD5ZuAAARVi4AAsvG7kACwAEPlm6AAQACwAIERI5ugAOAAAAExESOTAxEzMBFzMuATURMxEjAScjHgEVESNhMAEWSgQCBCww%2FupKBAIELAKT%2Fi%2BDMGAwAZT9bQHRgzBbMP5nAAAAAgA3%2F%2FQCVgKfABMAJwA1ALgAAEVYuAAKLxu5AAoAED5ZuAAARVi4AAAvG7kAAAAEPlm5ABQAAfS4AAoQuQAeAAH0MDEFIi4CNTQ%2BAjMyHgIVFA4CJzI%2BAjU0LgIjIg4CFRQeAgFGO2RIKChIZDs8ZEgoKEhkPDJSOyAgO1IyMlM6ICA6UwwxWn9OTn1ZLy9ZfU5Of1oxKitPb0VEbk0qKk1uREVvTysAAgBhAAACAAKTAAwAFwBDALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAwvG7kADAAEPlm6AAoAAAAMERI5uAAKL7kADQAB9LgAABC5ABYAAfQwMRMzMh4CFRQGKwERIxMyNjU0LgIrARFhtDdXPSB8b4YuqWViGTFLMnsCkxMsRjNhX%2F7lAUJIUSo3Ig7%2B1gAAAgA3%2F2UCWAKfABMANABLALgAAEVYuAAkLxu5ACQAED5ZuAAARVi4ABovG7kAGgAEPlm7ADEAAQAXAAQruAAaELkABQAB9LgAJBC5AA8AAfS4ABoQuAAu0DAxExQeAjMyPgI1NC4CIyIOAgEOASMiJicuAzU0PgIzMh4CFRQOAgceATMyNjdnIDpTMjJSOyAgO1IyMlM6IAHxDSsZU28ZNlpBJChIZDs8ZEgoJEFbNxdXPhcfDQFMRXFPLCxPcUVEbk0qKk1u%2FeAEB1I%2BBTVZekpOfVkvL1l9Tkp6WTUFMjQFBAAAAgBhAAACAwKTAAgAGABUALgAAEVYuAAOLxu5AA4AED5ZuAAARVi4AAwvG7kADAAEPlm4AABFWLgACS8buQAJAAQ%2BWbsAAAABAAoABCu4AA4QuQAGAAH0ugAXAAAAChESOTAxATI2NTQmKwERAQMjESMRMzIeAhUUBgcTARJYXV5XgwE%2Fs4wuvTFQOB9bTrYBVUdJSj3%2B6f6rAS%2F%2B0QKTEypCL09aCv7OAAAAAAEALv%2F0AeACnwAzAEkAuAAARVi4ABYvG7kAFgAQPlm4AABFWLgAMC8buQAwAAQ%2BWbkAAwAB9LoACwAWADAREjm4ABYQuQAdAAH0ugAlADAAFhESOTAxNx4BMzI2NTQuAi8BLgM1ND4CMzIWFwcuASMiBhUUHgIfAR4DFRQOAiMiJidMJGQ5TFgTICsYZBYvJxodM0cpPF0eGh1OMkJQFiIoEmQcMiYXHjdOMEhwJ3cpMEk7HyofFwstCRonNSUkOysYLyAfHyVANh0oHRUILAweKDcmJkEvGzcsAAABAB0AAAHvApMABwAzALgAAEVYuAACLxu5AAIAED5ZuAAARVi4AAcvG7kABwAEPlm4AAIQuQAAAAH0uAAF0DAxEyM1IRUjESPv0gHS0i4Caygo%2FZUAAAAAAQBf%2F%2FQCGwKTABkAPAC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAANLxu5AA0AED5ZuAAARVi4ABQvG7kAFAAEPlm5AAcAAfQwMRMzERQeAjMyPgI1ETMRFA4CIyIuAjVfLh0wPyMkQTEeKyY%2BUCsqUD4lApP%2Bb0JXNRYWNVdCAZH%2Bak1mPRkZPWZNAAABAAQAAAHnApMADwBAALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAwvG7kADAAQPlm4AABFWLgADy8buQAPAAQ%2BWboABQAAAA8REjkwMRMzEx4BFzM%2BAzcTMwMjBDF6Ex8UBAoREBEJei%2FYMQKT%2Fn88ZTweNjU2HgGB%2FW0AAQAcAAAC5AKTACEAdgC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAKLxu5AAoAED5ZuAAARVi4ABQvG7kAFAAQPlm4AABFWLgAIS8buQAhAAQ%2BWbgAAEVYuAAXLxu5ABcABD5ZugAFAAAAIRESOboADwAUABcREjm6ABwAIQAKERI5MDETMxMeARczPgE3EzMTHgEXMz4BNxMzAyMDLgEnIw4BBwMjHDBTCxcLBAwZDmcvZw4ZDgQLFQtTLZMzeAkSCAQIFAl2MgKT%2Fnw2azY2azYBhP58Nms2Nms2AYT9bQHEJ0cnJ0cn%2FjwAAAABABEAAAHRApMAGQBbALgAAEVYuAABLxu5AAEAED5ZuAAARVi4AAsvG7kACwAQPlm4AABFWLgAGS8buQAZAAQ%2BWbgAAEVYuAAPLxu5AA8ABD5ZugAGAAEAGRESOboAEwAPAAsREjkwMRMDMxceARczPgE%2FATMDEyMnLgEnIw4BDwEj17gybA4XEQQOFQ5sL7jGMnMOHRIEEBoOcy8BVQE%2BwhcoGxsoF8L%2BwP6tyhkyHh4yGcoAAAAAAQADAAABvAKTAA8AQAC4AABFWLgAAS8buQABABA%2BWbgAAEVYuAALLxu5AAsAED5ZuAAARVi4AA8vG7kADwAEPlm6AAYAAQAPERI5MDETAzMXHgEXMz4BPwEzAxEjyMUxZBEhFAQTJBBkL8YuAQsBiM4kRiQkRiTO%2Fnj%2B9QAAAAABADIAAAHqApMACQA9ALgAAEVYuAADLxu5AAMAED5ZuAAARVi4AAgvG7kACAAEPlm5AAYAAfS4AADQuAADELkAAQAB9LgABdAwMTcBITUhFQEhFSEyAXv%2BpgGU%2FoQBf%2F5IGwJQKBv9sCgAAAACAEH%2F9AGjAewAIQAtAHYAuAAARVi4ABEvG7kAEQAIPlm4AABFWLgAHS8buQAdAAQ%2BWbgAAEVYuAAYLxu5ABgABD5ZugADABEAHRESObgAAy%2B4ABEQuQAIAAH0ugAZABgAERESObgAHRC5ACUAAfS4ABkQuQAoAAH0uAADELkAKQAB9DAxNzQ2NzYuAiMiBgcnPgMzMh4CFREjJyMOASMiLgI3FBYzMjY3NQ4DQZagAQkZLSMxUBgUDSUtNh0rOiQPJQUCJVUwHTInFi48KSpMLUplPht4T1QSGzcrGyYSIQkWEg0dMkMn%2Fs0%2BHS0QIDIkNCwoJqMJGiQuAAACAFz%2F9AHsAs8AFAAlAIMAuAAARVi4AAAvG7kAAAASPlm4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAOLxu5AA4ABD5ZuAAARVi4ABQvG7kAFAAEPlm6AAMABgAOERI5ugARAA4ABhESObgAERC5ABUAAfS4AA4QuQAYAAH0uAAGELkAIgAB9LgAAxC5ACUAAfQwMRMzFQc%2BATMyFhUUDgIjIiYnIwcjNx4BMzI%2BAjU0LgIjIgYHXCwCJVQtYGAiO00qI0siAgUlLChKHCQ%2BLBkRJDopJE4rAs%2FQXh8shXA9YEMjHxotWSIcIDpRMSxMNx8pJgAAAQA0%2F%2FQBpwHsACEAOQC4AABFWLgABS8buQAFAAg%2BWbgAAEVYuAAdLxu5AB0ABD5ZuAAFELkADAAB9LgAHRC5ABYAAfQwMTc0PgIzMhYXBy4BIyIOAhUUHgIzMjY3Fw4BIyIuAjQkPE8sMkMYGhc4IyU%2FLxsZLUEnJkEZFx9MLi9POyHvPF9AIiQXHxYdHzlOMC9OOB8gFx4cJCJAXQAAAAIANP%2F0AcQCzwAUACUAgwC4AABFWLgABS8buQAFAAg%2BWbgAAEVYuAAKLxu5AAoAEj5ZuAAARVi4ABIvG7kAEgAEPlm4AABFWLgADS8buQANAAQ%2BWboACAASAAUREjm6AA4ABQASERI5uAASELkAGgAB9LgADhC5AB0AAfS4AAgQuQAeAAH0uAAFELkAIQAB9DAxNzQ%2BAjMyFhcnNTMRIycjDgEjIiY3FB4CMzI2NxEuASMiDgI0IjtNKyxBJAIsJgQDHU8wW2wvFSg7JihJJiZDIyQ%2BLRrvOl5CIx8cWMb9MT4dLYF6ME43HykmAR0iHCE5TwACADT%2F9AG9AewAHAAlAFEAuAAARVi4AAUvG7kABQAIPlm4AABFWLgAGC8buQAYAAQ%2BWboACwAFABgREjm4AAsvuAAYELkAEQAB9LgABRC5ACAAAfS4AAsQuQAlAAH0MDE3ND4CMzIWFRwBByEeAzMyNjcXDgEjIi4CJTQmIyIOAgc0IztLKFZiAv6mARovQiknPxsSHUU1LlE8IwFfTEEfOC0dBO87XkEjdGoJEgktTTcfFxQiER4iQV1YXV0aMEUrAAAAAQAhAAABIALbABYAVgC4AABFWLgABy8buQAHAAg%2BWbgAAEVYuAAULxu5ABQAEj5ZuAAARVi4AAsvG7kACwAEPlm4ABQQuQADAAH0uAAHELkACgAB9LgADdC4AAcQuAAQ0DAxAS4BIyIGHQEzFSMRIxEjNTc1NDYzMhcBFA8dDiYlb28sQkI%2BOSMjAqcIBjk0aCb%2BRgG6IgRrSEgQAAAAAAMANP8ZAdwB7AARAEcAWwBtALgAAEVYuAAlLxu5ACUACD5ZuAAARVi4AEUvG7kARQAGPlm5AAMAAfS6ADwAJQBFERI5uAA8L7kACwAB9LgAJRC4ACnQuAApL7kAKgAB9LgAPBC4ADPQuAAzL7kASAAB9LgAJRC5AFIAAfQwMRcUFjMyPgI1NCYrASImJw4BBzQ2NzUuATU0Njc1LgE1ND4CMzIWFzMVIx4BFRQOAiMiJicOARUUFjsBMhYVFA4CIyImEzI%2BAjU0LgIjIg4CFRQeAl5TTShCLhk5NmcIIRMhHiomIRIYJBAXJRouPiMUIAujcBceGi09IxQrERAXJjZnUU0gO1Q0W2q%2BGS0iFBQhLhkaLSIUFCMtXi04FSIrFyghAwUXNB4gPBgECyYcIC0LBBRELCU%2BLRkHBSUUPyYlPi0ZCgoNIBgaJTU5HzstG0gBWxMkMh4eMiITEyIxHx4yJBMAAQBcAAABvwLPABQAWAC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAALxu5AAAAEj5ZuAAARVi4ABQvG7kAFAAEPlm6AAMABgAUERI5uAAL0LgABhC5AA8AAfS4AAMQuQASAAH0MDETMx0BPgEzMhYVESMRNCYjIgYHESNcLCZOMktGLDM7K0YsLALP0GomMVpe%2FswBLk1JLS3%2BlgAAAgBLAAAAmwKjAAsADwAtALgAAEVYuAAMLxu5AAwACD5ZuAAARVi4AA4vG7kADgAEPlm6AAYAAAADKzAxEyImNTQ2MzIWFRQGBzMRI3MRFxcRERcXKCwsAlQWERMVFRMRFnT%2BIAAAAAAC%2F9%2F%2FGwCcAqMADwAbADcAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgABS8buQAFAAY%2BWboAFgAQAAMruAAFELkADAAB9DAxEzMRFAYjIiYnNx4BMzI2NRMiJjU0NjMyFhUUBlwtNDgRIgsLCRsOKBgXEBgYEBEYGAHg%2FcdHRQcFJAMHOy4CqhYRExUVExEWAAABAFwAAAHEAs8ADABbALgAAEVYuAAELxu5AAQACD5ZuAAARVi4AAAvG7kAAAASPlm4AABFWLgADC8buQAMAAQ%2BWbgAAEVYuAAILxu5AAgABD5ZugACAAAADBESOboACQAAAAgREjkwMRMzETMTMwcTIwMHFSNcLALtM5y2MZ9sLALP%2Fe4BI77%2B3gEBfoMAAAABAFz%2F9AC3As8ADgArALgAAEVYuAAALxu5AAAAEj5ZuAAARVi4AAwvG7kADAAEPlm5AAUAAfQwMRMzERQWMzoBNxcOASMiNVwsDAkDBwgIBw4LOwLP%2FWsQDwIkAgNMAAABAFwAAALYAewAIACYALgAAEVYuAAGLxu5AAYACD5ZuAAARVi4AAAvG7kAAAAIPlm4AABFWLgAIC8buQAgAAQ%2BWbgAAEVYuAAYLxu5ABgABD5ZuAAARVi4ABAvG7kAEAAEPlm6AAIAAAAgERI5ugAJAAAAIBESObgABhC4AAzQuQAUAAH0uAAJELkAFgAB9LgABhC5ABwAAfS4AAIQuQAeAAH0MDETMxczPgEzMhYXPgEzMhURIxE0JiMiBxEjETQmIyIHESNcJgQDIE8oOj4NKk8qkC00N0FPLDQ4QU8sAeBKJTE1LS01uP7MAS5NSVr%2BlgEuTUla%2FpYAAAABAFwAAAG%2FAewAFABlALgAAEVYuAAGLxu5AAYACD5ZuAAARVi4AAAvG7kAAAAIPlm4AABFWLgAFC8buQAUAAQ%2BWbgAAEVYuAALLxu5AAsABD5ZugACAAAAFBESObgABhC5AA8AAfS4AAIQuQASAAH0MDETMxczPgEzMhYVESMRNCYjIgYHESNcJgQDJU4yS0YsMzsrRiwsAeBKJTFaXv7MAS5NSS0t%2FpYAAAAAAgA0%2F%2FQB4wHsABMAJwA1ALgAAEVYuAAFLxu5AAUACD5ZuAAARVi4AA8vG7kADwAEPlm5ABkAAfS4AAUQuQAjAAH0MDE3ND4CMzIeAhUUDgIjIi4CNxQeAjMyPgI1NC4CIyIOAjQjO04rK087IyM7TysrTjsjLhotPiQkPy0aGi0%2FJCQ%2BLRrvPF9AIiJAXzw8XUAiIkBdPC9OOB8fOE4vME45Hx85TgAAAgBc%2FycB7AHsABQAJQCDALgAAEVYuAAJLxu5AAkACD5ZuAAARVi4AAMvG7kAAwAIPlm4AABFWLgAAi8buQACAAY%2BWbgAAEVYuAARLxu5ABEABD5ZugAFAAkAERESOboAFAARAAkREjm4ABQQuQAVAAH0uAARELkAGAAB9LgACRC5ACIAAfS4AAUQuQAlAAH0MDEXFSMRMxczPgEzMhYVFA4CIyImJzUeATMyPgI1NC4CIyIGB4gsJgQDI1MtYGAiO00qIkgmKkgcJD4sGREkOikkTSwqrwK5PBwshXA9YEMjHxwqIhwgOlExLEw3HykmAAAAAAIANP8nAcQB7AAUACUAfwC4AABFWLgABS8buQAFAAg%2BWbgAAEVYuAALLxu5AAsACD5ZuAAARVi4AA0vG7kADQAGPlm4AABFWLgAEi8buQASAAQ%2BWboACAAFABIREjm6AA8AEgAFERI5uQAaAAH0uAAPELkAHQAB9LgACBC5AB4AAfS4AAUQuQAhAAH0MDE3ND4CMzIWFzM3MxEjNTcOASMiJjcUHgIzMjY3ES4BIyIOAjQiO00rLEEiAgUlLAIgTzBbbC8VKDsmKEkmJkMjJD4tGu86XkIjHhos%2FUe5XR0sgXowTjcfKSYBHSIcITlPAAEAXAAAAUEB7AASAFIAuAAARVi4AAYvG7kABgAIPlm4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAASLxu5ABIABD5ZugACAAAAEhESObgABhC4AA3cuAACELkAEAAB9DAxEzMXMz4BMzIWFwcuASMiBgcRI1wmBAMYRSsOFgwKDBIOIEccLAHgWS04BAYoBQM3RP65AAABACD%2F9AFyAewAMwBJALgAAEVYuAAVLxu5ABUACD5ZuAAARVi4ADAvG7kAMAAEPlm5AAMAAfS6AAsAMAAVERI5uAAVELkAHAAB9LoAJgAVADAREjkwMTceATMyNjU0LgInLgM1ND4CMzIWFwcuASMiDgIVFB4CFx4DFRQOAiMiJic6H0Y0OTkVIikVGzcsGxQoOSYmSRoYGDYlHCgbDRMgKRUcOC0cFSo8JzZaIFcaIzkmFiIYEggKFh8rHxovIxQcFh8SGQ8YIBAVHRYRCAsWIC8jGzElFicbAAAAAQAc%2F%2FQBLQJrABsARQC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAWLxu5ABYABD5ZuAAGELkACQAB9LgAANC4AAYQuAAD0LgAFhC5AA8AAfQwMRMjNT8BMxUzFSMRFB4CMzI2NxcOASMiLgI1Z0tMBiaLiwcSHxkOIQ0MFSoPIy4cCwG6IgSLiyb%2BxxclGw8JBiQIChUmNiAAAAAAAQBV%2F%2FQBtQHgABQAZQC4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAAJLxu5AAkACD5ZuAAARVi4ABEvG7kAEQAEPlm4AABFWLgADC8buQAMAAQ%2BWbgAERC5AAUAAfS6AA0ACQAMERI5uAANELkACAAB9DAxEzMRFBYzMjY3ETMRIycjDgEjIiY1VSwzOitGKiwlBQIjTjJLRgHg%2FtJNSS8zAWL%2BIFAqMlpeAAAAAAEADAAAAaYB4AANAEAAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgACi8buQAKAAg%2BWbgAAEVYuAANLxu5AA0ABD5ZugAFAAAADRESOTAxEzMTHgEXMz4BNxMzAyMMMGwLGgsEDBkMbC2yNAHg%2FtMjRiEhRiMBLf4gAAEAGAAAApUB4AAhAHYAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgACi8buQAKAAg%2BWbgAAEVYuAAULxu5ABQACD5ZuAAARVi4ACEvG7kAIQAEPlm4AABFWLgAFy8buQAXAAQ%2BWboABQAhAAAREjm6AA8AFwAUERI5ugAcAAAAIBESOTAxEzMTHgEXMz4BNxMzEx4BFzM%2BATcTMwMjAy4BJyMOAQcDIxgwVgkQCAQIEglXNVcJEgkECBIIVS2KOlQLDwsECBMLUzUB4P7JIT8gID8hATf%2BySE%2FICA%2FIQE3%2FiABKiNDIyNFI%2F7YAAAAAQAOAAABiQHgABkAWwC4AABFWLgAAS8buQABAAg%2BWbgAAEVYuAALLxu5AAsACD5ZuAAARVi4ABkvG7kAGQAEPlm4AABFWLgADy8buQAPAAQ%2BWboABgALAA8REjm6ABQAAQAZERI5MDE3JzMXHgEXMz4BPwEzBxcjJy4BJyMOAQ8BI7GWMU4MGQ4EDRcNSy6VozFVDhwPBA4bDlIv%2B%2BV6FCcUFCcUeun3gxcsFRUsF4MAAAAAAQAM%2FyUBqAHgABwARgC4AABFWLgACC8buQAIAAg%2BWbgAAEVYuAASLxu5ABIACD5ZuAAARVi4ABkvG7kAGQAGPlm5AAMAAfS6AA0ACAAZERI5MDEXHgEzMjY%2FAQMzEx4BFzM%2BATcTMwMOAyMiJzciCBQLLTwSDcUwdAsbDgQLFwpnLb4KHSczIBsWCqoDBUg3KgHp%2FtIeSCAgSB4BLv3kHjktGwonAAAAAQAbAAABegHgAAkAPQC4AABFWLgAAy8buQADAAg%2BWbgAAEVYuAAILxu5AAgABD5ZuQAGAAH0uAAA0LgAAxC5AAEAAfS4AAXQMDE3ASM1IRUBIRUhGwEc%2FQE2%2FuUBJf6hGAGiJhf%2BXicAAAD%2F%2FwAIAAACBgMvAiYABAAAAAcA4QEHAAD%2F%2FwAIAAACBgMvAiYABAAAAAcA4wEHAAD%2F%2FwAIAAACBgMvAiYABAAAAAcA5QEHAAD%2F%2FwAIAAACBgMoAiYABAAAAAcA5wEHAAD%2F%2FwAIAAACBgMeAiYABAAAAAcA6gEHAAD%2F%2FwAIAAACBgNgAiYABAAAAAcA7AEHAAAAAgAVAAAC%2BgKTAAYAFgB8ALgAAEVYuAAOLxu5AA4AED5ZuAAARVi4AA0vG7kADQAEPlm4AABFWLgACS8buQAJAAQ%2BWboAAgAOAA0REjm6AAoADgANERI5uAAKL7kABgAB9LgACRC5AAcAAfS4AA4QuQAQAAH0ugAVAA4ACRESObgAFS%2B5ABMAAfQwMSURIw4BDwEFFSE1IwcjASEVIRUzFSMRAZsEHz0gSQIo%2FqHedzEBbQFu%2Ftn19f8BbDhzPIXXKNnZApMo%2BSj%2B3gD%2F%2FwA3%2FzACDwKfAiYABgAAAAcA7gFTAAD%2F%2FwBhAAAB1AMvAiYACAAAAAcA4QEaAAD%2F%2FwBhAAAB1AMvAiYACAAAAAcA4wEaAAD%2F%2FwBhAAAB1AMvAiYACAAAAAcA5QEaAAD%2F%2FwBhAAAB1AMeAiYACAAAAAcA6gEaAAD%2F%2FwAHAAAAnQMvAiYADAAAAAYA4XgAAAD%2F%2FwBTAAAA6QMvAiYADAAAAAYA43gAAAD%2F%2FwADAAAA7QMvAiYADAAAAAYA5XgAAAD%2F%2FwAFAAAA6wMeAiYADAAAAAYA6ngAAAD%2F%2FwBhAAACGwMoAiYAEQAAAAcA5wFDAAD%2F%2FwA3%2F%2FQCVgMvAiYAEgAAAAcA4QFGAAD%2F%2FwA3%2F%2FQCVgMvAiYAEgAAAAcA4wFGAAD%2F%2FwA3%2F%2FQCVgMvAiYAEgAAAAcA5QFGAAD%2F%2FwA3%2F%2FQCVgMoAiYAEgAAAAcA5wFGAAD%2F%2FwA3%2F%2FQCVgMeAiYAEgAAAAcA6gFGAAAAAwA4%2F%2BkCWQKqAAsAFwAzAIUAuAAARVi4AC4vG7kALgAQPlm4AABFWLgAIC8buQAgAAQ%2BWboAAAAgAC4REjm5AAMAAfS6AAsALgAgERI5ugAMAC4AIBESObgALhC5AA8AAfS6ABcAIAAuERI5ugAYAC4AIBESOboAIwAgAC4REjm6ACYAIAAuERI5ugAxAC4AIBESOTAxNx4BMzI%2BAjU0Ji8BLgEjIg4CFRQWFwEeARUUDgIjIiYnByc3LgE1ND4CMzIWFzcXsR1NLzJSOyAbGRcdSi0yUzogGRcBdyIlKEhkOzZcI0EcRiAkKEhkPDRYIz0dZSIlK09vRT9mJh4fISpNbkQ9ZSYBuSx6S05%2FWjEnJVcWXi14Sk59WS8kIlEWAAAAAAIANwAAAxICkwAUACEAVQC4AABFWLgABS8buQAFABA%2BWbgAAEVYuAAQLxu5ABAABD5ZuAAFELkAHAAB9LgAB9C6AAwABQAQERI5uAAML7kACgAB9LgAEBC5ABsAAfS4AA7QMDETND4CMyEVIRUzFSMRIRUhIi4CNxQeAjsBESMiDgI3J091TgGY%2Ftn19QEx%2Fl1OdU4nMCBDZUU%2FP0VlQyABTEt4Vi4o%2BSj%2B3igvV3tLQWtOKwJFKktrAAD%2F%2FwBf%2F%2FQCGwMvAiYAGAAAAAcA4QE9AAD%2F%2FwBf%2F%2FQCGwMvAiYAGAAAAAcA4wE9AAD%2F%2FwBf%2F%2FQCGwMvAiYAGAAAAAcA5QE9AAD%2F%2FwBf%2F%2FQCGwMeAiYAGAAAAAcA6gE9AAD%2F%2FwADAAABvAMvAiYAHAAAAAcA4wDfAAAAAgAlAAACOgKTABAAIQBZALgAAEVYuAAhLxu5ACEAED5ZuAAARVi4ABwvG7kAHAAEPlm5AAAAAfS4ACEQuQAKAAH0ugAOACEAHBESObgADi%2B5AA0AAfS4AA4QuAAe0LgADRC4AB%2FQMDElMj4CNTQuAisBFTMVIxETMh4CFRQOAisBESM1NxEBCkNgPx4eP2BDZqOjakxxSyQkSnFMmVFRJytOa0FAakwq%2FyH%2B2wJsLlZ4S0t7Vy8BTB8CASYAAAAAAgBhAAACAAKTAA4AFwA5ALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AA4vG7kADgAEPlm7ABcAAQAMAAQruwACAAEAFgAEKzAxEzMVMzIeAhUUBisBFSM3MjY1NCYrARFhLoY3Vz0gfG%2BGLqllYmNkewKTdRQrRjNhX6bNSFFSP%2F7WAAD%2F%2FwBB%2F%2FQBowLEAiYAHgAAAAcA4AEGAAD%2F%2FwBB%2F%2FQBowLEAiYAHgAAAAcA4gEGAAD%2F%2FwBB%2F%2FQBowLEAiYAHgAAAAcA5AEGAAD%2F%2FwBB%2F%2FQBowKeAiYAHgAAAAcA5gEGAAD%2F%2FwBB%2F%2FQBowKfAiYAHgAAAAcA6QEGAAD%2F%2FwBB%2F%2FQBowLIAiYAHgAAAAcA6wEGAAAAAwBB%2F%2FQC6gHsABAASQBSAJsAuAAARVi4ABYvG7kAFgAIPlm4AABFWLgAHC8buQAcAAg%2BWbgAAEVYuAA5Lxu5ADkABD5ZuAAARVi4ADEvG7kAMQAEPlm4ADkQuQADAAH0ugBBADkAFhESObgAQS%2B5AAwAAfS6ACIAHAAxERI5uAAiL7gAMRC5ACgAAfS4ABYQuQBGAAH0uAAcELkATQAB9LgAIhC5AFIAAfQwMTcUFjMyPgI3LgE1Jw4DAz4DMzIWFz4BMzIWFRwBByEUHgIzMjY3Fw4DIyIuAicOASMiLgI1NDY3NC4CIyIGBwU0JiMiDgIHbzwpEy4vLhULCgFGYj4cFg0kLTMbO0UMGlc2VV0C%2FrQaLj8kJzsbEw4eJCoaIDQqIQ0wbS0dMicWlpsIGS0jLU8YAlRJQR41KRsEejQsDBgjFhZBIhsJGiQuARgJFhINQTc3QXRqCRIJLUw3HxcUIwkQDggRHCMTLjUQIDEiUFQSGzcrGyYSgV1dGzFFKQAA%2F%2F8ANP8wAacB7AImACAAAAAHAO0BCQAA%2F%2F8ANP%2F0Ab0CxAImACIAAAAHAOABBQAA%2F%2F8ANP%2F0Ab0CxAImACIAAAAHAOIBBQAA%2F%2F8ANP%2F0Ab0CxAImACIAAAAHAOQBBQAA%2F%2F8ANP%2F0Ab0CnwImACIAAAAHAOkBBQAA%2F%2F8AGgAAAKoCxAImAGcAAAAGAOByAAAA%2F%2F8AOgAAAMoCxAImAGcAAAAGAOJyAAAA%2F%2F8AAAAAAOQCxAImAGcAAAAGAORyAAAA%2F%2F%2F%2F%2FwAAAOUCnwImAGcAAAAGAOlyAAAAAAEAXAAAAIgB4AADACUAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgAAi8buQACAAQ%2BWTAxEzMRI1wsLAHg%2FiAAAP%2F%2FAFwAAAG%2FAp4CJgArAAAABwDmARsAAP%2F%2FADT%2F9AHjAsQCJgAsAAAABwDgAQsAAP%2F%2FADT%2F9AHjAsQCJgAsAAAABwDiAQsAAP%2F%2FADT%2F9AHjAsQCJgAsAAAABwDkAQsAAP%2F%2FADT%2F9AHjAp4CJgAsAAAABwDmAQsAAP%2F%2FADT%2F9AHjAp8CJgAsAAAABwDpAQsAAAADAC7%2F6gHpAfUACQATAC4ASQC4AABFWLgAKS8buQApAAg%2BWbgAAEVYuAAcLxu5ABwABD5ZugAAABwAKRESObkAAgAB9LoACgApABwREjm4ACkQuQAMAAH0MDE3FjMyPgI1NC8BJiMiDgIVFBcBHgEVFA4CIyInByc3LgE1ND4CMzIWFzcXmS9DJD8uGiQULkUkPy0aJAEqGBwjO08rUjs2GjoYHCM7TisoSR02GkwyHzhOL1I4GzMfOU8vUTgBNCBWNjxdQCI4QhVGIFQ2PF9AIhwcQRUAAAADADT%2F9AMrAewAEwA7AEQAcQC4AABFWLgAGS8buQAZAAg%2BWbgAAEVYuAA3Lxu5ADcABD5ZuQAFAAH0uAAZELkADwAB9LgAGRC4AB%2FQuAA3ELgAMdC6ACQAHwAxERI5uAAkL7gAMRC5ACoAAfS4AB8QuQA%2FAAH0uAAkELkARAAB9DAxNxQeAjMyPgI1NC4CIyIOAgc0PgIzMhYXPgEzMhYVFAchFB4CMzI2NxcOASMiJicOASMiLgIlNCYjIg4CB2IZLD0jJD0rGRkrPSQjPSwZLiI7TCo6ZhoaXzpVYgP%2BrxsuQCQnPhsTHUU2P2QaHGA%2FKkw7IgLNTUAeNiobBO8vTjgfHzhOLzBOOR8fOU4wPF9AIkdHQkx0ahISLUw3HxcUIxEeTEFGRyJAXVldXRsxRSkAAAEAXP%2F0AgEC2QA5AGQAuAAARVi4AAMvG7kAAwASPlm4AABFWLgAOS8buQA5AAQ%2BWbgAAEVYuAAZLxu5ABkABD5ZugANABkAAxESObkAIAAB9LoAJQAZAAMREjm6ADEAGQADERI5uAADELkANAAB9DAxEzQ2MzIeAhUUDgIVFB4EFRQOAiMiJic3HgEzMj4CNTQuBDU0PgI1NCYjIgYVESNcXU4hMyQTHyUfHy82Lx8WJzUgJ0QdFh01IBkmGQ0fLjcuHx8kHy8wOUUsAhRdaBUkMRwnNy8vHh0kGxokNioeMiYVHBchFxcRGyQTIywfGSAtJCQ0LzEiLDhUWv37AP%2F%2FAFX%2F9AG1AsQCJgAyAAAABwDgAQgAAP%2F%2FAFX%2F9AG1AsQCJgAyAAAABwDiAQgAAP%2F%2FAFX%2F9AG1AsQCJgAyAAAABwDkAQgAAP%2F%2FAFX%2F9AG1Ap8CJgAyAAAABwDpAQgAAP%2F%2FAAz%2FJQGoAsQCJgA2AAAABwDiAOUAAP%2F%2FAAz%2FJQGoAp8CJgA2AAAABwDpAOUAAAACADz%2F9AHWAtQAFQA8AFkAuAAARVi4ADcvG7kANwASPlm4AABFWLgAIC8buQAgAAQ%2BWbsAKgABAAwABCu6ADMAMAADK7gAIBC5AAAAAfS4ADAQuAAW0LgAMxC4ADfcuAAzELgAOtAwMSUyPgI1NCcuAyMiDgIVFB4CEx4DFRQOAiMiLgI1ND4CMzIWFy4BJwcnNy4BJzceARc3FwELKTsnEwMTJyYmEyk9KhUaLDxlHjEkFB41Sy0oSzkjHjdMLitMHQ48Ko4PhBw%2BIRYlRSCODxsjPFIvIB4cJBQHHjNDJSpHMxwCRB5JV2g9PGJFJSA7VjYxUzohJiZKaipKHEQYKRMeFC4dShsAAAAAAgBc%2FycB7ALPABYAJwBXALgAAEVYuAAILxu5AAgACD5ZuAAARVi4AAIvG7kAAgASPlm4AABFWLgAAS8buQABAAY%2BWbgAAEVYuAASLxu5ABIABD5ZuQAaAAH0uAAIELkAJAAB9DAxFyMRMx0BPgEzMh4CFRQOAiMiJicVNR4BMzI%2BAjU0LgIjIgYHiCwsJFItMEkwGCI7TSojRyYqSBwkPiwZESQ6KSRNLNkDqM9bHCsjQFo4PWBDIx4cWIMiHCA6UTEsTDcfKSYAAAAAAQAiAAACKgLbACoAfAC4AABFWLgAFC8buQAUAAg%2BWbgAAEVYuAAoLxu5ACgAEj5ZuAAARVi4ABAvG7kAEAAEPlm4ACgQuQADAAH0uAAUELgAJNC4AAjQuAAUELkAEQAB9LgADdC4AAnQuAAQELgADNC4ABQQuAAT0LgAKBC4ABjQuQAfAAH0MDEBLgEjIgYdATMVIxEjESMRIxEjNTc1NDYzMhYXBy4BIyIGHQEzNTQ2MzIXAh4PHQ4mJW9vLN4sQUFEPhQpFAwSIhErK94%2BOSMjAqcIBjk0aCb%2BRgG6%2FkYBuiIEWUtNCQkkCQc9OFZrSEgQAAEAIf%2F0AhAC2wAuAIkAuAAARVi4ABAvG7kAEAAIPlm4AABFWLgAFC8buQAUABI%2BWbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4AAMvG7kAAwAEPlm4ABAQuQANAAH0uAAJ0LgAEBC4AA%2FQuAAPL7gAFBC5ABoAAfS4ABAQuAAf0LgAI9C4AAkQuAAk0LgAAxC5ACsAAfQwMSUOASMiLgI1ESMRIxEjNTc1NDYzMhcHLgEjIgYdATM3MxUzFSMRFB4CMzI2NwIQFSsPIy0cC7ssQkI%2BOSMjDA8dDiYlvAYljIwHEiAZDiENBggKFSY2IAE1%2FkYBuiIEa0hIECQIBjk0aIuLJv7HFyUbDwkGAAADACT%2F9AIyAp8ADwAfAEwAjAC4AABFWLgANy8buQA3ABA%2BWbgAAEVYuAAlLxu5ACUABD5ZuAAARVi4ACAvG7kAIAAEPlm6AEIAIgADK7gAJRC5AAMAAfS6AAYAIgBCERI5ugALACUANxESObgACy%2B4ABPcuAA3ELkAHQAB9LoALwALABMREjm6AD8ACwATERI5ugBJACIAQhESOTAxNzI2Ny4BJw4DFRQeAgMUFhc%2BAzU0LgIjIgYBJicOASMiLgI1ND4CNy4BNTQ%2BAjMyFhUUDgIHHgEXPgE3Mw4BBx4BF%2BYpSh81YyMWJx4RGCg3IBQRGS4kFQgRGxQsMQF7QUwkWDgnRjMeFyUxGhQYFCQyHjY4Gis3HCNhMyM0ESsUOSgjQB0aJyAweEARJCcrGCE1JRUB9CFHJBIkKCsaEB8YD0D9uRc8JS4ZL0IpITYvKRMqUyYgNicWRDQgNi8rFT92LS1tP0R7MxwlCwAAAgAw%2F%2FQBrgKLAAsAFwA1ALgAAEVYuAAGLxu5AAYADj5ZuAAARVi4AAAvG7kAAAAEPlm5AAwAAfS4AAYQuQASAAH0MDEXIiY1NDYzMhYVFAYnMjY1NCYjIgYVFBbvXGNjXFxjY1xDT09DQlBQDK2hoKmpoKGtJpWTk5CQk5OVAAABAFQAAAGiAn8ADABDALgAAEVYuAAHLxu5AAcADj5ZuAAARVi4AAwvG7kADAAEPlm5AAEAAfS4AAcQuQAEAAH0uQACAAH0uAABELgACdAwMTczESM1PgE3MxEzFSFUlnInPRcki%2F6yJwISHgcUDf2oJwAAAAEAJwAAAbECiwAdAD0AuAAARVi4AA8vG7kADwAOPlm4AABFWLgAHC8buQAcAAQ%2BWbkAGgAB9LgAF9C4AADQuAAPELkACAAB9DAxNz4DNTQmIyIGByc%2BATMyFhUUDgIHPgE7ARUhKU92TydDSCxMHR0kVztWXipMbUIaNxra%2FngcUH9pWSo8UjAkHCg2YlEwX2l3RgIDKAAAAQAd%2F%2FQBqwKLADcAUwC4AABFWLgAHy8buQAfAA4%2BWbgAAEVYuAAyLxu5ADIABD5ZuQAFAAH0ugAPAB8AMhESObgADy%2B5ABAAAfS4AB8QuQAYAAH0ugAoABAADxESOTAxNx4DMzI%2BAjU0LgIjNTI%2BAjU0JiMiBgcnPgEzMh4CFRQGBxUeAxUUDgIjIi4CJzcOIis1ISA3KBYZNlQ8N00vFUY7LUocGiFUOCVALxtFNR40KBceNUcpJj4xJw9tEB0XDhQlNCAhNicWJxYlMx02QSkdHiAuFSc5JT9NEgQGHSo3IipDLxkQGiAQAAACABAAAAHAAn8ACQAUAFcAuAAARVi4ABIvG7kAEgAOPlm4AABFWLgADS8buQANAAQ%2BWbsADgABAAAABCu4ABIQuAAE3LgAABC4AAnQuAAOELgAC9C4AAkQuAAQ0LgAABC4ABPQMDElNTQ2NyMOAQcDBSMVIzUhNQEzETMBNgICBAwaDrwBel8r%2FtoBKShf5eoWQhYUJhb%2B%2BCa%2FvxoBpv5mAAAAAAEAGv%2F0Aa8CfwAoAEcAuAAARVi4ABIvG7kAEgAOPlm4AABFWLgAIy8buQAjAAQ%2BWbkABQAB9LoAGQASACMREjm4ABkvuAAN3LgAEhC5ABQAAfQwMTceAzMyPgI1NCYjIgYHJxMhFSMHPgEzMh4CFRQOAiMiLgInMw4iKjQhIDorGlRIJTUdHxcBJ%2F8UGTYjKEg0HyM5SScmPTEmD2kPHBYNGS0%2FJ05XFxQTASsn5w8TGDFNNDNPNxwPGR8PAAAAAAIANP%2F0AbQCiwARADAAQwC4AABFWLgALS8buQAtAA4%2BWbgAAEVYuAAlLxu5ACUABD5ZuwAdAAEACgAEK7gAJRC5AAAAAfS4AC0QuQAVAAH0MDElMj4CNTQuAiMiBgceAxMuASMiDgIHPgEzMhYVFA4CIyImNTQ%2BAjMyFhcBBhwvIhQQITUkIlInAxcoO6wVOB8mRDQfASFTLVVdHDA%2FJGFwJ0FVLi1BGRoZLDsiIjsrGCs1M1M7IQIVGhsgSnlYKTBlYSxJNR6ckmSKViUiHAABACwAAAG1An8ADwAzALgAAEVYuAAHLxu5AAcADj5ZuAAARVi4AAAvG7kAAAAEPlm4AAcQuQAFAAH0uAAJ0DAxMz4DNyE1IRUOAwcjvAQZLkYw%2Fq8BiTlLLRQEMGGhj4NEJxpMjJGeXgAAAAADACj%2F9AG1AosAEQAjAE0AVwC4AABFWLgANC8buQA0AA4%2BWbgAAEVYuABJLxu5AEkABD5ZuQAFAAH0ugAPAEkANBESObgADy%2B4ABLQuAA0ELkAGgAB9LgADxC4ACncuAASELgAPtwwMTcUHgIzMj4CNTQuAicOATc%2BATU0LgIjIg4CFRQeAgc0PgI3NS4DNTQ%2BAjMyHgIVFA4CBxUeAxUUDgIjIi4CVBgqOiMiNycVITdGJTFAzikrEiExHxstIRIdMD3aFyUtFxIhGRAaLT0jKUAtFxIbIA4VKB8UHDNIKyxKNh%2BmHjMmFhQkMBslMycdDx1PdCFJKhsvJBUSHywaIjElHLcgOC0jDAQMHSUrGiI6KRcZLT0kGjEqIgsEDR4mMiAjPS0aGy9AAAACACv%2F9AGqAosAEQAwAEMAuAAARVi4ACUvG7kAJQAOPlm4AABFWLgALS8buQAtAAQ%2BWbsAAAABAB0ABCu4ACUQuQAIAAH0uAAtELkAFQAB9DAxEzI2Ny4DIyIOAhUUHgIHHgEzMj4CNw4BIyImNTQ%2BAjMyFhUUDgIjIiYn4iJSJwMXKTsnGzAiFBAiNGoVOCAmRDQfASFULVRdHDA%2FJGBwJ0BWLi1CGAEjLTQzUzsgGSs7IiM7KxjTGhsgSnlYKDBlYStKNB6bkmWKVSYiHAAAAQBD%2F%2FQAmABPAAsAGAC4AABFWLgACS8buQAJAAQ%2BWbgAA9wwMTc0NjMyFhUUBiMiJkMaEREZGRERGiEWGBgWFRgYAAABADD%2FZQClAE8AEQAYALgAAEVYuAAFLxu5AAUABD5ZuAAL3DAxFz4BNwYjIiY1NDYzMhYVFAYHMCIqAQQIERkaERccOi19Ej0qARYUFBYmITdUGP%2F%2FAEP%2F9ACYAc0CJwCGAAABfgAGAIYAAP%2F%2FADD%2FZQClAc0CJwCGAAABfgAGAIcAAAACAFf%2F9ACsAp4ABQARACkAuAAARVi4AAEvG7kAAQAQPlm4AABFWLgADy8buQAPAAQ%2BWbgACdwwMRM1MwcDIwc0NjMyFhUUBiMiJmsuAQYhGhoRERkZEREaAldHR%2F5ckhYYGBYVGBgAAAIAV%2F9CAKwB7AAFABEAGAC4AABFWLgADy8buQAPAAg%2BWbgACdwwMR8BIzUTMzcUBiMiJjU0NjMyFpgBLgYhGhkRERoaEREZd0dHAaSTFxgYFxQYGAAAAAACACX%2F9AFgAqoAHwArACYAuAAARVi4ACkvG7kAKQAEPlm7ABMAAQAMAAQruAApELgAI9wwMTcmPgQ1NC4CIyIGByc%2BATMyHgIVFA4EFwc0NjMyFhUUBiMiJqMGESAoJBgNHCsdJUMZGx1ONCU6KBUZJCkhEwU7GRERGhoRERmzKUM5MjE0HxcrIBMhHxkhLRcpOCEiOTQzNz8mkhYYGBYVGBgAAAIAM%2F82AW4B7AAfACsAJgC4AABFWLgAKS8buQApAAg%2BWbsADAABABMABCu4ACkQuAAj3DAxExYOBBUUHgIzMjY3Fw4BIyIuAjU0PgQnNxQGIyImNTQ2MzIW8AURICgkGA0cKx4kQxkcHU8zJTooFRkkKSESBTsZEREZGRERGQEtKUM5MjE0HxcqIRMiHhkgLhcpOCEiOTUyNz8mkxcYGBcUGBgAAQBTAd0AhgK1AAUACwC6AAIABAADKzAxEyczFQcjVAEzCSECcEVFkwAAAP%2F%2FAFMB3QETArUAJgCOAAAABwCOAI0AAAABADoB4AChAr8AEQANALsABQABAAsABCswMRMOARU2MzIWFRQGIyImNTQ2N6EhIgIGDxkXERQYLSgCqBs2KwESExMVIyA2TBoAAAAAAQA6Ad0AogK8ABEADQC7AAsAAQAFAAQrMDETPgE1BiMiJjU0NjMyFhUUBgc6ISICBg4ZFhEUGS0pAfQbNisBEhMTFSMgNkwaAAAA%2F%2F8AOgHgAS4CvwAmAJAAAAAHAJAAjQAA%2F%2F8AOgHdAS8CvAAmAJEAAAAHAJEAjQAA%2F%2F8AOv9%2BAKIAXQIHAJEAAP2hAAD%2F%2FwA6%2F34BLwBdACcAkQAA%2FaEABwCRAI39oQAAAAEAKwBIAM0BsAAGAAsAugACAAYAAyswMTc1NxcHFwcriRl7exnpJqEVn6ETAAAAAAEANgBIANgBsAAGAAsAugACAAUAAyswMTcnNxcVByewehiKihj8nxWhJqETAAAA%2F%2F8AKwBIAVoBsAAmAJYAAAAHAJYAjQAA%2F%2F8ANgBIAWUBsAAmAJcAAAAHAJcAjQAAAAEAKADmAQQBDQADAA0AuwABAAEAAgAEKzAxEzMVIyjc3AENJwAAAP%2F%2FACgA5gEEAQ0CBgCaAAAAAQAoAOgBuAEMAAMADQC7AAEAAQACAAQrMDETIRUhKAGQ%2FnABDCQAAAEAKADoAvgBDAADAA0AuwABAAEAAgAEKzAxEyEVISgC0P0wAQwkAP%2F%2FAEMBFQCYAXACBwCGAAABIQAAAAEAKACaAPEBdgATAAsAugAKAAAAAyswMTciLgI1ND4CMzIeAhUUDgKMEyQcEREcJBMTJRwRERwlmg8dKBoZKRwQEBwpGRooHQ8AAAABAAz%2FiwHo%2F7EAAwANALsAAAABAAEABCswMQUVITUB6P4kTyYmAAAAAQBY%2F1EA9wLbAA4ACwC6AAYAAAADKzAxFy4BNTQ2NxcOARUUFhcH3D5GRj4bPDw8PBuvZN2EhN1kEF%2Ffd3ffXxAAAAABACD%2FUQC%2FAtsADgALALoABwANAAMrMDEXPgE1NCYnNx4BFRQGBycgPDw8PBs9R0c9G59f33d3318QZN2EhN1kEAAAAAEAYv9oAQICxAAHABcAuwAFAAEABgAEK7sAAQABAAIABCswMRMzFSMRMxUjYqB9faACxB383h0AAQAV%2F2gAtQLEAAcAFwC7AAAAAQAFAAQruwAEAAEAAQAEKzAxFxEjNTMRIzWSfaCgewMiHfykHQABACP%2FaAECAsQAMwArALsAAAABAAEABCu7AB4AAQAfAAQruwAQAAEADwAEK7oAKgAPABAREjkwMQUVIyIuAjU0NjU0LgIjNTI%2BAjU0JjU0PgI7ARUjIgYVFBYVFAYHFR4BFRQGFRQWMwECIhwpHA4IBxMiGhoiEwcIDhwpHCIfLh8GFR4eFQYfLnsdDB0xJjhhNA8eFg4gDhYcDzZhOCYxHQwdMjUxWTYtMgkECTQrNlkxNTIAAAAAAQAV%2F2gA9ALEADMAKwC7AAAAAQAxAAQruwAWAAEAEwAEK7sAIwABACQABCu6AAoAJAAjERI5MDEXMjY1NCY1NDY3NS4BNTQ2NTQmKwE1MzIeAhUUBhUUHgIzFSIOAhUUFhUUDgIrATU0Lh8GFh0dFgYfLh8iHCkcDggHEyIaGiITBwgOHCkcInsyNTFZNis0CQQJMi02WTE1Mh0MHTEmOGE2DxwWDiAOFh4PNGE4JjEdDB0AAQAJ%2F2ABYALGAAMAGAC4AABFWLgAAC8buQAAABI%2BWbgAAtwwMQEzASMBOib%2BzyYCxvyaAAEAX%2F8GAIMC7gADAAsAugABAAIAAyswMRMzESNfJCQC7vwYAAEABf9gAV0CxgADABgAuAAARVi4AAAvG7kAAAASPlm4AALcMDETMwEjBSYBMiYCxvyaAAACAF%2F%2FBgCDAu4AAwAHAAsAugABAAUAAyswMRMzESMXESMRXyQkJCQC7v4pO%2F4qAdYAAAAAAQBGAc4BRQLIAA4AFAC4AABFWLgABS8buQAFABI%2BWTAxEzcnNxc3Mxc3FwcXBycHaTdaCV8HIAdfClo2G0BCAeJYJB4aZmUZHiRYFFNTAAACADL%2FzAGtAqkADwBJABcAuwAxAAEAKgAEK7sARgABABMABCswMSU%2BATU0LgInDgEVFB4CEy4BIyIOAhUUHgQVFAYHHgEVFA4CIyImJzceATMyNjU0LgQ1NDY3LgE1ND4CMzIWFwE4JCctQ0wfIiotQ0xNGDUmGSQWCyo%2BST4qMSYQEhcnNB00UB0eGjsuLjYqP0k%2FKjMmDxIQIjIjKkYctREqKSgzJB8UFC4mJzEjHgGLFBoNFRwOISkhHSk8LjI5FRApGxsuIRIjHBwYHjIjIisgHSg6LjA%2FFA8oGhUqIRUeFwACACr%2FsAGjApMAAwAQACUAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgADi8buQAOABA%2BWTAxATMRIwMiLgI1ND4COwERAXUuLlI3XEIkIj5WMywCk%2F0dAUQXMU84OE8yF%2F5hAAAAAwAz%2F%2FQCsgKMABMAJwBFADMAuwA6AAEAQQAEK7sALQABADQABCu4AC0QuAAj3LkABQAB9LgAQRC4ABncuQAPAAH0MDETND4CMzIeAhUUDgIjIi4CNxQeAjMyPgI1NC4CIyIOAhc0PgIzMhYXBy4BIyIGFRQWMzI2NxcOASMiLgIzM1h0QUB0WDMzWHRAQXRYMyMuTmc6OWdOLi5OZzk6Z04ucx4xQSQoOBgXFy0ePExJPSQ4FxQbPjAkPzAcAUJLelYvL1Z6S0x7VzAwV3tMRHBPLCxPcERDb08rK09vQytGMBofGBoWFlJES1YdFRwYIxszSQAAAAAEABIBRAF%2BAsgAEwAnADcAQABXALgANi%2B4ACkvuAA2ELgAFNy5AAAAAfS4ACkQuAAe3LkACgAB9LoANAA2ACkREjm4ADQvuQA4AAH0ugAxADgANBESObgANhC4ADPQuAApELkAPgAB9DAxEyIuAjU0PgIzMh4CFRQOAicyPgI1NC4CIyIOAhUUHgIDMzIeAhUUBgcXIycjFSM3MjY1NCYrARXIJUIyHR0yQiUlQzEdHTFDJR84KBgYKDgfIDcoGBgoNyRFDxsWDRcRMSUnLyA9FxwVGyABRBwyRywsSDMcHDNILCxHMhwdGSs8JCQ9LRkZLT0kJDwrGQEPBg8YExMgBVZMTGcRFBEVSwAAAgA0%2F24C%2BwJ5AEYAVAA%2FALsAPAABAEIABCu7ACgAAQAPAAQruwBKAAEAFgAEK7sAIAABAFAABCu7AAUAAQAyAAQrugAjAFAAIBESOTAxNzQ%2BAjMyHgIVFA4CIyImJyMOASMiLgI1ND4CMzIXMzczBwYzMj4CNTQuAiMiDgIVFB4CMzI2NxcGIyIuAjcUFjMyPwEuASMiDgI0QW2QT0h1USwiNkEfKDUEAho9IxcqHxIZMEUsNR4CCSIkIl4YMykbJ0hnQUWAYzwsT29DMlIkEFZlSHtaM%2BguIjI6HxIhFyI2JRTKYp9xPS5TdUdAYUIhJScdKREiMyIkUEIrMCi9hx45UjVAakopOGeRWUl1USwaFh42L1mBUjkuQ60cFSM2QgAAAAIAJAAAAcECigAbAB8AmwC4AABFWLgACC8buQAIAA4%2BWbgAAEVYuAAMLxu5AAwADj5ZuAAARVi4ABYvG7kAFgAEPlm4AABFWLgAGi8buQAaAAQ%2BWbsAAwABAAAABCu7AAcAAQAEAAQruAAHELgACtC4AAcQuAAO0LgABBC4ABDQuAADELgAEtC4AAAQuAAU0LgAABC4ABjQuAADELgAHNC4AAQQuAAd0DAxNyM1MzcjNTM3MwczNzMHMxUjBzMVIwcjNyMHIz8BIwd3U1cVWFwZIxmVGiIZUlUVVlsZIxmVGiPXFZYV1iSqJMLCwsIkqiTW1tb6qqr%2F%2FwBeAbgA1gM%2BAgcAtwAAAbgAAP%2F%2FAC8BuAE3A0oCBwC4AAABuAAA%2F%2F8AKAGsATQDSgIHALkAAAG4AAD%2F%2FwAuAbgBPQM%2BAgcAugAAAbgAAAACACj%2F9AFCAZIACwAXACgAuAAGL7gAAEVYuAAALxu5AAAABD5ZuQAMAAH0uAAGELkAEgAB9DAxFyImNTQ2MzIWFRQGJzI2NTQmIyIGFRQWtUJLS0JCS0tCLzc3Ly83NwxrZWRqamRlayFbVFRZWVRUWwAAAAEAXgAAANYBhgAIACIAuAAGL7gAAEVYuAAILxu5AAgABD5ZuAAGELkAAAAB9DAxEyM1PgE3MxEjsFIdKREhJgFEGwYTDv56AAEALwAAATcBkgAaACwAuAAPL7gAAEVYuAAZLxu5ABkABD5ZuQAXAAH0uAAA0LgADxC5AAgAAfQwMTc%2BAzU0JiMiBgcnPgEzMhYVFA4CBzMVIzgySS8XLycbLxEZEkElNkMZLD8lwP8ZLkg6MRkrMiQaFx4rPT4fODo%2FJSIAAAAAAQAo%2F%2FQBNAGSACoAPgC4ABcvuAAARVi4ACcvG7kAJwAEPlm6AAoACQADK7gAJxC5AAMAAfS4ABcQuQAQAAH0ugAdAAkAChESOTAxNx4BMzI2NTQmIzUyNjU0JiMiBgcnPgEzMhYVFAYHHgMVFA4CIyImJ0USOSIlNkpAOz8tJhcvExkVOyYxRSsgEiAaDxQkMBsuRxRVHSMrKCYqHDIiICkdFxYbJDYxJTENAxAYIRUbKx0QLR4AAAIALgAAAT0BhgAFABAATAC4AA4vuAAARVi4AAkvG7kACQAEPlm7AAAAAQAKAAQruAAOELkAAgAB9LgAABC4AAXQuAAKELgAB9C4AAUQuAAM0LgAABC4AA%2FQMDE3NTcjDwEXIxUjNSM1NzMVM98EBDhJ3zoksbEkOpJXaFNsIHJyFf%2F0%2F%2F8AKgEFAR0CUwIGAL0AAP%2F%2FACEBBQFFAlMCBgC%2BAAAAAgAqAQUBHQJTABsAJAA7ALgAAC%2B4ABIvuwAGAAEAHwAEK7gAEhC5AAsAAfS4AAAQuAAX0LgAABC5ABwAAfS6ABkAAAAcERI5MDETIiY1NDY3NC4CIyIGByc%2BATMyFh0BIycjDgEnMjc1DgEVFBaLKzZibAcQGhUePBEPFEMnOi0eBgQVNRcvNV1KJAEFMCs1NwoTIhkOGQwbDh1FOcgnEh0gMWYKLSIgHgAAAAIAIQEFAUUCUwATAB8AGwC4AAovuAAAL7kAFAAB9LgAChC5ABoAAfQwMRMiLgI1ND4CMzIeAhUUDgInMjY1NCYjIgYVFBazHjYnFxcnNh4eNicXFyc2HjA7OzAwOzsBBRcrPicoPisWFis%2BKCc%2BKxchSjw8Sko8PEoAAAACACoBvwEOAqwAEwAfABcAuwAUAAEAAAAEK7sACgABABoABCswMRMiLgI1ND4CMzIeAhUUDgInMjY1NCYjIgYVFBacFikgExMgKRYWKSATEyApFiMtLSMjLS0BvxAeLBwcLB8QEB8sHBwsHhAgMSUmMjImJTEAAAACAB4AcgHAAiIAIgA2AEoAuAAARVi4AAgvG7kACAAKPlm4AABFWLgADS8buQANAAo%2BWbgAAEVYuAASLxu5ABIACj5ZuwAoAAEAHwAEK7gADRC5ADIAAfQwMT8BLgE1NDY3JzcXPgEzMhYXNxcHHgEVFAYHFwcnDgEjIicHNxQeAjMyPgI1NC4CIyIOAh5CEhQUEkIbQhc9ICA9F0MaQhIUFBFBGkMXPSBCMkItFiUyHBwyJRYWJTIcHDIlFo5DGDwjJD4YRBxFFRcXFUUcRBg%2BJCM8GEMcRBYXLUTWIjkoFxcoOSIiOikXFyk6AAEAO%2F%2BSAaMC7QAxAF0AuAAARVi4ACsvG7kAKwAOPlm4AABFWLgAFS8buQAVAAQ%2BWbgAKxC5AAUAAfS6AAgAFQArERI5uAAVELgAEtC4ABUQuQAcAAH0ugAfACsAFRESObgAKxC4AC7QMDEBLgMjIgYVFB4EFRQGBxUjNS4BJzceATMyNjU0LgQ1ND4CNzUzFR4BFwF4DhseJBc0QCtAS0ArV0MnNFYdGB1QND9DK0BLQCsVJTQfJzE%2BGgIoDhYQCEEyLDUnIS9HOUhWBmNjBC0cHxosRDcxPSsiLD8zHzYpGgNjYwMoGwABADYAAAGsAosALABZALgAAEVYuAATLxu5ABMADj5ZuAAARVi4AAIvG7kAAgAEPlm5AAAAAfS6ACQAEwACERI5uAAkL7gACtC4ACQQuQAjAAH0uAAL0LgACy%2B4ABMQuQAaAAH0MDElFSE1PgE1NCYnIzU3My4BNTQ2MzIWFwcuASMiDgIVFBYXMxUjHgEVFAYHFQGs%2Fo04MgUEZEIYCxVbTzRFFx0VNigfLx8QFQulnQQEJiIoKBsgaDoTJBEhAyZLJ09bKh0bGSIUJDAbKEknJBEjFD5SIQQAAAAAAQAeAAABwQJ%2FAB0AhAC4AABFWLgAHS8buQAdAA4%2BWbgAAEVYuAAJLxu5AAkADj5ZuAAARVi4ABQvG7kAFAAEPlm6AAQAHQAUERI5ugAZAB0AFBESObgAGS%2B5AAwAAfS4ABkQuAAN0LgAGRC4ABjQuAAYL7gAENC4ABgQuQAVAAH0uAAR0LgAGRC5ABsAAfQwMRMXHgEXMz4BPwEzAzMVIxUzFSMVIzUjNTM1IzUzA05eECASBBMfEV4urpqoqKgtpqammKwCf8EhQyUlQyHB%2FrAhRyKlpSJHIQFQAAEAGP%2F0AdoCiwA1AG0AuAAARVi4ABkvG7kAGQAOPlm4AABFWLgAAy8buQADAAQ%2BWbsALQABAC4ABCu4AC4QuAAJ0LgALRC4AArQuAAtELgAJdy4ABLQuAAlELkAJAAB9LgAE9C4ABkQuQAgAAH0uAADELkAMgAB9DAxJQ4BIyIuAicjNTcmNDU8ATcjNTc%2BAzMyFhcHLgEjIgYHIRUhBhQVHAEXMxUjHgEzMjY3AdogTjgsSjgmB0E%2BAQE%2BQQcmPFEwLUoWHRY3I1BgCwEW%2FucBAfHuDVpIKj8dUiwyJENfPB0ECxQLCRIIHQQ9YUQkLiAbHiV3aSEIEQkLFQshZnYoKQAAAgA%2B%2F%2BQBswKMAAgAJwA3ALsAJAABAAwABCu7ABwAAQAjAAQruAAjELgAANC4ACQQuAAI0LgADBC4AA%2FQuAAcELgAGdAwMRMOAxUUFhc3DgEHFSM1LgM1ND4CNzUzFR4BFwcuAScRPgE3%2FyA3JxZPRbQdSSwiKkczHR41RigiMEAXGBc2IiU%2BGAH2BSAxQidOZgoXGyMCbG0EIjtSMzRROyIEb20CIxccFBsC%2Fn8CHhYAAAAAAf9b%2F%2FQA8QKfAAMAGAC4AABFWLgAAC8buQAAAAQ%2BWbgAAdwwMQcBMwGlAXAm%2FpEMAqv9VQAAAP%2F%2F%2F1v%2F9ADxAp8CBgDGAAD%2F%2FwAo%2F%2FQC%2FQKfACcAtgAAAQ0AJwDGAWsAAAAHALYBuwAAAAD%2F%2FwBK%2F%2FQCzwKfACcAt%2F%2FsAQ0AJwDGAVYAAAAHALoBkgAAAAD%2F%2FwBK%2F%2FQC3wKfACcAt%2F%2FsAQ0AJwDGAT8AAAAHALgBqAAAAAD%2F%2FwAo%2F%2FQC4gKfACcAuQAAAQ0AJwDGAYUAAAAHALoBpQAAAAAAAQAiAG4BvQImAAsAHQC7AAMAAQAAAAQruAADELgABtC4AAAQuAAI0DAxEyM1MzUzFTMVIxUj27m5Kbm5KQE3JsnJJskAAAAAAQAiATcBvQFdAAMADQC7AAEAAQACAAQrMDETIRUhIgGb%2FmUBXSYAAAEAMwCHAasCDQALACUAuAAARVi4AAMvG7kAAwAKPlm4AABFWLgABS8buQAFAAo%2BWTAxPwEnNxc3FwcXBycHM6KiG6GiGqGhGqKho6enHKmpHKenHKioAAADACIAbQG9AiUACwAXABsAIQC7AA8AAQAVAAQruwAGAAEAAAAEK7sAGQABABoABCswMRMiJjU0NjMyFhUUBgM0NjMyFhUUBiMiJichFSHvEBYWEBEVFTcWEBEVFREQFqcBm%2F5lAdUWExEWFhETFv7BERYWERMWFtomAAD%2F%2FwAiANIBvQHDAiYAzQBmAAYAzQCbAAAAAQAiAJIBvQIGAAkAFAC4AABFWLgAAS8buQABAAo%2BWTAxEyUVDwEVHwEVJSIBm%2BiFhej%2BZQFipCtaMwQzWiukAAEAIgCSAb0CBgAJABQAuAAARVi4AAgvG7kACAAKPlkwMQEFNT8BNS8BNQUBvf5l6IWF6AGbATakK1ozBDNaK6QAAAAAAgAiAAABvQImAAsADwA4ALgAAEVYuAAOLxu5AA4ABD5ZuwADAAEAAAAEK7gAAxC4AAbQuAAAELgACNC4AA4QuQAMAAH0MDETIzUzNTMVMxUjFSMHIRUh27m5Kbm5KbkBm%2F5lATYly8slyUglAAAAAAEAQgEiAZ0CngAJABoAuAAARVi4AAAvG7kAAAAQPlm5AAUAAfQwMRMzEyMvASMPASPYLpcrTTQEM00rAp7%2BhMuFhcsAAQAoAQoBtgGKABcAJwC7AAgAAQAPAAQruAAPELgAFNy5AAMAAfS4AAvQuAAPELgAF9AwMRM%2BATMyHgIzMjY3Fw4BIyIuAiMiBgcoFjsdHS8rKBYXJhIcFTsdHS8rKBYXJhIBNyopHCIcHCMUKSgcIhwcIwABACIAbgG9AV0ABQANALsAAQABAAQABCswMRMhFSM1ISIBmyn%2BjgFd78kAAAEAXP84Ab0B4AAXABoAuAAARVi4ABEvG7kAEQAEPlm5AAUAAfQwMRMzERQWMzI2NxEzESMnIw4BIyImJxcVI1wsNDorRSssJgQDIkswJTQUAiwB4P7STUkvMwFi%2FiBQKjEWIVqaAAD%2F%2FwCzAjwBQwLEAAcA4AELAAAAAP%2F%2FANMCPAFjAsQABwDiAQsAAAAA%2F%2F8AmQI8AX0CxAAHAOQBCwAAAAD%2F%2FwCPAkUBhwKeAAcA5gELAAAAAP%2F%2FAJgCVgF%2BAp8ABwDpAQsAAAAA%2F%2F8AmgJeAXwCggAHAOgBCwAAAAD%2F%2FwC5AhsBXQLIAAcA6wELAAAAAP%2F%2FAMr%2FMAFOAAIABwDtARQAAAAAAAH%2FqAI8ADgCxAADABgAuAAARVi4AAMvG7kAAwAMPlm4AAHcMDEDMxcjWDRcJgLEiAAAAAAB%2F48CxQAlAy8AAwALALoAAQADAAMrMDEDMxcjcTpcKAMvagAB%2F8gCPABYAsQAAwAYALgAAEVYuAAALxu5AAAADD5ZuAAC3DAxAyM3MxImXDQCPIgAAAAAAf%2FbAsUAcQMvAAMACwC6AAIAAAADKzAxEyM3MwMoXDoCxWoAAf%2BOAjwAcgLEAAcANwC4AABFWLgABi8buQAGAAw%2BWbgAAEVYuAADLxu5AAMADD5ZuAAGELgAANy6AAUAAAAGERI5MDEDMxcjJyMHIxMmXyVLBEslAsSIY2MAAAAB%2F4sCxQB1Ay8ABwAXALoABgABAAMruAAGELgAB9y4AAPQMDEDNzMXIycjB3VgKmAoSwRLAsVqakhIAAAB%2F4QCRQB8Ap4AGwBBALgAAEVYuAAALxu5AAAADD5ZuAAARVi4ABMvG7kAEwAMPlm7ABgAAQAFAAQruAATELkACgAB9LgABRC4AA7QMDEDPgMzMh4CMzI2NzMOAyMiLgIjIgcjfAEIERkSEh4aGA0QEgQeAQgRGRISHhkZDR4IHgJFECAZEBEVER0aECAZEBEVETcAAf9%2BAswAggMoABsAIwC6AAAAEwADK7oABQAOAAMruAAAELgACNC4AA4QuAAW0DAxEyIuAiMiBgcjPgMzMh4CMzI2NzMOAzsUHxsaDxAWAx0BChIZERQeGxsPEBYDHQEKEhkCzBIVEh8aESEaEBIVER4aESAbEAAAAf%2BPAl4AcQKCAAMACwC4AAMvuAAB3DAxAzMVI3Hi4gKCJAAAAv%2BNAlYAcwKfAAsAFwAoALgAAEVYuAAALxu5AAAADD5ZuAAG3LgAABC4AAzQuAAGELgAEtAwMQMiJjU0NjMyFhUUBjMiJjU0NjMyFhUUBk8QFBQQEBUVjhAVFRAQFBQCVhUQDxUVDxAVFRAPFRUPEBUAAAAC%2F40C1QBzAx4ACwAXABsAugAGAAAAAyu4AAAQuAAM0LgABhC4ABLQMDEDIiY1NDYzMhYVFAYzIiY1NDYzMhYVFAZPEBQUEBAVFY4QFRUQEBQUAtUTEREUFBERExMRERQUERETAAAAAAL%2FrgIbAFICyAALABcAEwC6AAwAAAADK7oABgASAAMrMDERIiY1NDYzMhYVFAYnMjY1NCYjIgYVFBYjLy8jIy8vIxYeHhYWHh4CGzAmJzAwJyYwGiEbHCEhHBshAAAAAAL%2FrgK8AFIDYAALABcAEwC6AAwAAAADK7oABgASAAMrMDERIiY1NDYzMhYVFAYnMjY1NCYjIgYVFBYjLy8jIjAwIhQfHxQWHh4CvCwmJS0tJSYsGhwcGh4eGhwcAAAAAAH%2Ftv8wADoAAgARABMAugACABEAAyu6AAsACgADKzAxJzMHHgEVFA4CByc%2BATU0JicIIx0YJBUjLRgHKjMmHQI4CB8eFB0UDQMeBhgVFxYIAAAAAAH%2Ftv8wADoAAgARABMAugARAAIAAyu6AAoACwADKzAxJzMHHgEVFA4CByc%2BATU0JicIIx0YJBUjLRgHKjMmHQI4CB8eFB0UDQMeBhgVFxYIAAAA%2F%2F8ASwAAAJsCowIGACYAAAABAAAA8QBcAAcAeAAFAAEAAAAAAAoAAAIAAXMAAwABAAAAYgBiAGIAYgCwARQBZAGoAeYCHgJ%2BAroC2gMOA1YDfAPgBDIEhgTOBUAFlgYEBjAGdga0ByoHhgfGB%2FwIegj0CUQJvgogCnALIgtwC6QL7Aw0DGQM4g04DYwOBg5%2BDsgPNg%2BED9oQFhCMEOYROhFwEXwRiBGUEaARrBG4Eh4SKhI2EkISThJaEmYSchJ%2BEooSlhKiEq4SuhLGEtITZBPCE84T2hPmE%2FIT%2FhReFKAUrBS4FMQU0BTcFOgVqhW2FcIVzhXaFeYV8hX%2BFgoWFhY2FkIWThZaFmYWchZ%2BFuoXhBgEGBAYHBgoGDQYQBhMGNIZOBmyGjga7hsuG2gbtBwqHHwc3B1EHXoeEB54HpoexB7QHtwfEB88H44f4B%2F2IAIgKCBOIFogZiBwIH4gliCuILogxiDaIOIg9iEKIRQhOiFOIXAhkiGuIcoiJiKAIpoirCLGIuAjCCN6I6wkKCSuJUAlvCXGJdAl2iXkJh4mQiaCJt4nICcoJzAnhifEKAAodijqKVgpxipIKqIqvirGKtgq6ir8Kw4rMitGK3IrsCu8K9wr%2Fiw2LFgskiyoLNws5izwLPotBC0OLRgtIi0sLUYtWC1yLYQtsi3QLhouVi5oLqIu1i8GLzYvYC%2BKL4ovkgABAAAAAQzMmt50Tl8PPPUACQPoAAAAAM2XgKMAAAAAzZfjFP9X%2FuIEYgOrAAAACQACAAAAAAAAAngAXgAAAAAAxwAAAMcAAAIOAAgCQgBhAjQANwJcAGECAwBhAd0AYQJdADcCfwBhAPAAYQHOACkCLgBhAdMAYQLCAGECfABhAowANwIvAGECjAA3AjAAYQIJAC4CDAAdAnoAXwHrAAQDAgAcAeIAEQG%2FAAMCGgAyAfMAQQIgAFwBwQA0AiAANAHjADQBBwAhAecANAIQAFwA5QBLAOX%2F3wHQAFwA7QBcAywAXAIUAFwCFwA0AiAAXAIZADQBPQBcAZUAIAE4ABwCEQBVAbIADAKtABgBlwAOAbQADAGUABsCDgAIAg4ACAIOAAgCDgAIAg4ACAIOAAgDKQAVAjQANwIDAGECAwBhAgMAYQIDAGEA8AAHAPAAUwDwAAMA8AAFAnwAYQKMADcCjAA3AowANwKMADcCjAA3AowAOANBADcCegBfAnoAXwJ6AF8CegBfAb8AAwJxACUCMwBhAfMAQQHzAEEB8wBBAfMAQQHzAEEB8wBBAxAAQQHBADQB4wA0AeMANAHjADQB4wA0AOUAGgDlADoA5QAAAOX%2F%2FwDlAFwCFABcAhcANAIXADQCFwA0AhcANAIXADQCFwAuA1AANAIeAFwCEQBVAhEAVQIRAFUCEQBVAbQADAG0AAwCFwA8AiAAXAIOACICGwAhAj8AJAHfADAB3wBUAd8AJwHfAB0B3wAQAd8AGgHfADQB3wAsAd8AKAHfACsA2wBDANsAMADbAEMA2wAwAQMAVwEDAFcBkgAlAZIAMwDbAFMBaABTANsAOgDbADoBaAA6AWgAOgDbADoBaAA6AQMAKwEDADYBkAArAZAANgErACgBKwAoAeAAKAMgACgA2wBDARkAKAH0AAwBFwBYARcAIAEXAGIBFwAVARcAIwEXABUBZQAJAOIAXwFlAAUA4gBfAYsARgHfADICAwAqAuUAMwGRABIDLgA0Ad8AJAFqAF4BagAvAWoAKAFqAC4BagAoAWoAXgFqAC8BagAoAWoALgFRACoBaAAhAVEAKgFoACEBNwAqAd8AHgHfADsB3wA2Ad8AHgHfABgB3wA%2BAFD%2FWwBQ%2F1sDJQAoAvwASgMSAEoDDwAoAd8AIgHfACIB3wAzAd8AIgHfACIB3wAiAd8AIgHfACIB3wBCAd8AKAHfACICGQBcAhcAswIXANMCFwCZAhcAjwIXAJgCFwCaAhcAuQIXAMoAAP%2BoAAD%2FjwAA%2F8gAAP%2FbAAD%2FjgAA%2F4sAAP%2BEAAD%2FfgAA%2F48AAP%2BNAAD%2FjQAA%2F64AAP%2BuAAD%2FtgAA%2F7YAxwAAAOUASwABAAAD2P7vAAAEiv9X%2FzcEYgABAAAAAAAAAAAAAAAAAAAA8QADAbcBLAAFAAACigJYAAAASwKKAlgAAAFeADIBIAAAAgsEAwMEAwICBCAAAAcAAAABAAAAAAAAAABBREJFAAAAAP7%2FAu7%2FBgAAA9gBESAAAZMAAAAAAeAClAAAACAAAwAAAAIAAAADAAAAFAADAAEAAAAUAAQB0gAAADwAIAAEABwAAAANAC8AOQBAAFoAYAB6AH4AvwDPAN8A7wD%2FATEBUwLGAtoC3CAUIBogHiAiIDogRCB0IKwiEiIV%2F%2F8AAAAAAA0AIAAwADoAQQBbAGEAewCgAMAA0ADgAPABMQFSAsYC2gLcIBMgGCAcICIgOSBEIHQgrCISIhX%2F%2FwAB%2F%2FUAAABMAAD%2FwwAA%2F70AAAAA%2F3gAAP93AAD%2FNgAA%2FhT%2BBP3%2F4IkAAAAA4H3gXeCC4EHgGN673rIAAQAAAAAAOAAAAFQAAABeAAAAZgBsAAAAqAAAAMQAAADgAAAAAAAAAAAA2gDeAAAAAAAAAAAAAAAAAAAAAAADAIoAjwCxAMEAyAB7AI4AoQCiAKsAzACHAJoAhgCnAIgAiQDRANAA0gCMALAAowCpAKQA1ACgANgApQCoAKYA1QDvAIsAxQDCAMAAwwCqAKwA3ACuALsAmADWAJsArwDdAL8A0wCzALQA2QDXAK0AngDfALIAvACZAMkAygDLAI0AVQBIAEkASgBLAEwATQDOAE4AUABRAFIAUwBUAFYAcAB3AGgAaQBqAGsAbABtAM8AbgBxAHIAcwB0AHUAeAB2AE8AbwCQAJEAlACSAJMAlQAAuAAALEu4AAlQWLEBAY5ZuAH%2FhbgARB25AAkAA19eLbgAASwgIEVpRLABYC24AAIsuAABKiEtuAADLCBGsAMlRlJYI1kgiiCKSWSKIEYgaGFksAQlRiBoYWRSWCNlilkvILAAU1hpILAAVFghsEBZG2kgsABUWCGwQGVZWTotuAAELCBGsAQlRlJYI4pZIEYgamFksAQlRiBqYWRSWCOKWS%2F9LbgABSxLILADJlBYUViwgEQbsEBEWRshISBFsMBQWLDARBshWVktuAAGLCAgRWlEsAFgICBFfWkYRLABYC24AAcsuAAGKi24AAgsSyCwAyZTWLBAG7AAWYqKILADJlNYIyGwgIqKG4ojWSCwAyZTWCMhuADAioobiiNZILADJlNYIyG4AQCKihuKI1kgsAMmU1gjIbgBQIqKG4ojWSC4AAMmU1iwAyVFuAGAUFgjIbgBgCMhG7ADJUUjISMhWRshWUQtuAAJLEtTWEVEGyEhWS0AsAArALIBAQIrAbICAgIrAbcCfWNROiMACCu3A3NjUTojAAgrALcBinFROiYACCsAsgQIByuwACBFfWkYREuwYFJYsAEbsABZsAGOAAAUACgALAAwAAAADP8zAAwB5gAMAgYADAI%2BAAwCfgAMApAADALIAAwAAAAHAFoAAwABBAkAAQAqAAAAAwABBAkAAgAOACoAAwABBAkAAwBIADgAAwABBAkABAAqAAAAAwABBAkABQCCAIAAAwABBAkABgAmAQIAAwABBAkADgBIASgAUwBvAHUAcgBjAGUAIABTAGEAbgBzACAAUAByAG8AIABMAGkAZwBoAHQAUgBlAGcAdQBsAGEAcgAxAC4AMAA1ADAAOwBBAEQAQgBFADsAUwBvAHUAcgBjAGUAUwBhAG4AcwBQAHIAbwAtAEwAaQBnAGgAdAA7AEEARABPAEIARQBWAGUAcgBzAGkAbwBuACAAMQAuADAANQAwADsAUABTACAAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAMAA7AGgAbwB0AGMAbwBuAHYAIAAxAC4AMAAuADcAMAA7AG0AYQBrAGUAbwB0AGYALgBsAGkAYgAyAC4ANQAuADUAOQAwADAAUwBvAHUAcgBjAGUAUwBhAG4AcwBQAHIAbwAtAEwAaQBnAGgAdABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBkAG8AYgBlAC4AYwBvAG0ALwB0AHkAcABlAC8AbABlAGcAYQBsAC4AaAB0AG0AbAAAAAIAAAAAAAD%2FtQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAA8QAAAQIBAwADACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0ArQDJAMcArgBiAGMAkABkAMsAZQDIAMoAzwDMAM0AzgBmANMA0ADRAK8AZwCRALAA1gDUANUAaADrAOkA7QBqAGkAawBtAGwAbgCgAG8AcQBwAHIAcwB1AHQAdgB3ANcAeAB6AHkAewB9AHwAoQCxAIkAfwB%2BAIAAgQDsALoA6gDuAQQBBQAJABMAFAAVABYAFwAYABkAGgAbABwAEQAPAB0AHgAEAKMAIgCiAAoABQC2ALcAtAC1AMQAxQC%2BAL8AqQCqABABBgCyALMAwwCHAEIACwAMAD4AQABeAGAAEgBfAD8A6AANAIYAiACLAIoAIwAGAQcBCAEJAQoBCwEMAQ0BDgEPAJ0AngEQAREAgwC9AAcAhQCWARIAhAC8ARMACAD1APQA9gAOAO8A8AC4ACAAHwAhAJMAQQBhAKQBFABDAI0A2ADZAI4A2gDdAN4BFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElBE5VTEwCQ1IDZl9mA2ZfdAd1bmkwMEFECG9uZS5zdXBzCHR3by5zdXBzCnRocmVlLnN1cHMJZm91ci5zdXBzCXplcm8uZG5vbQhvbmUuZG5vbQh0d28uZG5vbQp0aHJlZS5kbm9tCWZvdXIuZG5vbQZhLnN1cHMGby5zdXBzBEV1cm8HdW5pMjIxNQd1bmkwMEI1B3VuaTAzMDALdW5pMDMwMC5jYXAHdW5pMDMwMQt1bmkwMzAxLmNhcAd1bmkwMzAyC3VuaTAzMDIuY2FwB3VuaTAzMDMLdW5pMDMwMy5jYXAHdW5pMDMwNAd1bmkwMzA4C3VuaTAzMDguY2FwB3VuaTAzMEELdW5pMDMwQS5jYXAHdW5pMDMyNwt1bmkwMzI3LmNhcAd1bmkwMEEwBWkudHJrAAAAAAAAAf%2F%2FAAIAAQAAAAwAAAAAAAAAAgAIAAQANwABAD4APgABAE4ATwABAGcAZwABAG4AbwABAHgAeAABAHkAegACANoA2gABAAEAAAAKADAARAACREZMVAAObGF0bgAaAAQAAAAA%2F%2F8AAQAAAAQAAAAA%2F%2F8AAQABAAJrZXJuAA5rZXJuAA4AAAABAAAAAQAEAAIAAAACAAoBPAABACYABAAAAA4ARgBsAIIApAC6AMgA2gDoAPoBAAEKARgBHgEoAAEADgAJABMAGQAbADMANQBWAHAAiwCNAJ4ApwCpAMIACQAZAAoAG%2F%2FrADP%2F9QA1%2F%2BwAZQAVAGYAJwCe%2F%2FUAp%2F%2BvAK8AHQAFABv%2F6wA1%2F%2FUAnv%2F1AKf%2FpgCvACcACAAz%2F%2FgANf%2FzAGMABgBlACgAZgArAJ7%2F8ACn%2F8YArwA2AAUAM%2F%2F2ADX%2F9gCe%2F9gAq%2F%2F2AK8AFAADAKf%2F7ACr%2F%2FUArwA4AAQAG%2F%2F2AJ7%2F7ACr%2F%2BoArwA2AAMAp%2F%2B2AKn%2F2ACr%2F7UABAAz%2F%2FYANQAJAKn%2F7ACv%2F%2BgAAQAZ%2F%2BwAAgAZ%2F9cAG%2F%2FmAAMAGf%2FsABv%2F7AA1%2F%2BwAAQDwACQAAgAZ%2F8YAM%2F%2FsAAIAf%2F%2F3AIH%2F9wACFIwABAAAFN4WLAA5AC4AAP%2Fc%2F6D%2F2%2F%2Fc%2F7IAJgBO%2F%2FcAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9v%2FiAAAAJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F8MAAAAA%2F9cAAAAAAAAAAAAAAAD%2F6%2F%2Fr%2F9cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2Frv%2Fh%2F%2BH%2FvAAAAEMAAAAAAAAAAP%2FS%2F%2BwAAP%2Fr%2F%2Bj%2F0v%2FzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FYAJAAAAAAAAAAA%2F9gAAAAAAAD%2F6wAA%2F9f%2FsAAkABH%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F9j%2F7wAA%2F%2FUAAAAAAAD%2F9f%2FYAAAAAAAA%2F%2FX%2F9gAA%2F%2FYAAAAAAAD%2F9f%2F3%2F5z%2F2P%2Fr%2F7kAAAAAAAAAAP%2F1AAr%2F7P%2FY%2F9P%2F9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F6wAAAAD%2F9QAAAAD%2F9v%2F1AAAAAAAA%2F%2FUAAAAAAAAAAAAA%2F%2FEAAP%2F2AAD%2F4gAA%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F1%2F%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fr%2F%2FUAAAAA%2F%2BwAAP%2F2%2F%2FUAAAAAAAD%2F6%2F%2F2%2F%2BgAAAAAAAD%2F9gAA%2F%2FX%2F9gAAAAD%2F2AAUAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FUAAP%2Fs%2F%2FUAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BEAAAAAABQAAAAAAAAAAP%2F1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9v%2F1%2F%2Fb%2F9gAA%2F%2Fb%2F9v%2F1AAAAAP%2F2%2F%2FYAAP%2FtAAAAAAAAAAAAAP%2Fs%2F%2FH%2F9QAA%2F9gAEwAAAAAAAAAA%2F%2FcAAAAA%2F%2FUAAP%2F1%2F%2Fb%2F7%2F%2F2AAAAAP%2F1AAAAAAAAAAAAAP%2BI%2F%2Bj%2Fyf%2B6AAAAAP%2Fh%2F%2Bb%2FwwAAAAj%2F7QAA%2F%2BwAAP%2F1%2F%2FUAAAAA%2F%2FD%2F9v90%2F7D%2FsP%2BwAAAAAAAAAAD%2FtQAA%2F%2Bz%2Fxf%2FD%2F%2BYAAP%2FE%2F9gAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAP%2F3%2F%2BwAAAAAAAAAAAAAAAD%2F9gAA%2F%2BwAAAAAAAAAAP%2FhAAAAAAAA%2F9gAAAAAAAn%2F7AAAAAAAAP%2F2%2F%2FQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7AAAAAD%2F9f%2F2AAAAAAAAAAAAAP%2F2%2F%2FL%2F9gAA%2F%2FYAAP%2F2%2F%2BsAAAAAAAD%2F9gAA%2F%2FYAFAAAAAAAAAAA%2F%2FX%2F9gAAAAAAAAAA%2F%2FX%2F1%2F%2FiAAAAAP%2F1%2F%2FUAAAAAAAAAAP%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9QAAAAAAAAAAAAD%2F9QAAAAAAAP%2FrAAD%2F9QAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAA%2F%2FX%2FsgAA%2F9j%2F2gAA%2F5z%2F2P%2FR%2F8T%2F6%2F%2By%2F%2Bv%2FxP9%2FAAD%2F6%2F%2FPAAAAAP%2FDABT%2FmwAAAAAAAAAA%2F%2BwAAAAAAAD%2F2v%2FR%2F7D%2F1v%2FP%2F8b%2Frv%2FYAAAAAAAAAAAAAAAAAAD%2F9f%2F2AAAAAAAAAAD%2F9v%2Fr%2F%2FYAAAAAAAAAAAAA%2F9YAAAAAAAAAAAAAAAAAAP%2FXAAAAAAAA%2F%2Fb%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2B4AAAAAAAAAAP%2FhAAD%2F9%2F%2F3%2F%2Ff%2F7QAAAAD%2FtAAAAAAAAAAAAAAAAAAv%2F9cAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FYAAAAA%2F%2Fb%2F9gAAAAAAAAAA%2F%2FX%2F9gAAAAD%2FxAAA%2F%2Bv%2F9QAR%2F7H%2F9f%2Fx%2F%2BP%2F9f%2FCAAD%2F3%2F%2BcAAD%2F9f%2FhAAAAAP%2FYACb%2FsgAAAAAAAAAAAAAAAAAAAAD%2F9f%2Fh%2F8T%2F1P%2FY%2F9%2F%2F1v%2Fi%2F%2B4AAAAAAAAAAP%2F2%2F%2Ff%2F9f%2FxAAD%2F7f%2FtAAAAAP%2F3%2F%2BL%2F9v%2Fs%2F%2B3%2F7P%2Fm%2F9oAAP%2F1%2F%2BQAAAAA%2F8QAFAAAAAAAAAAA%2F%2FcAAAAAAAAAAP%2FtAAD%2F2P%2FYAAAAAAAAAAAAAAAAAAAAAP%2FrAAAAAP%2FrAAAAAAAAAAD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FEAAAAAAAAAAAAAAAAAAD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAAAA%2F%2Bv%2F9gAAAAkACQAAAAAAAAAAAAAAAP%2F2AAD%2F7wAAAAAAAAAAAAAAAP%2F1AB0AAAAAAAAAAP%2F1AAAAAAAAAAAACQAP%2F%2FUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2FwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Bc%2F%2FD%2F4f%2BwAAAAFP%2Fx%2F%2Bz%2FrwAAAAAAAAAAAAAAAAAA%2F%2FUAAAAA%2F%2BEAAP%2BHAAAAAAAAAAAAAAAAAAD%2FxAAAAAD%2Fs%2F%2FD%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BsAAP%2F2%2F%2Bz%2F9gAAAAwADP%2F2AAAAAP%2FsAAAAAP%2FxAAAAAP%2FsAAD%2F9QAA%2F9j%2F9QAAAAcAAAAAAAAAAP%2F2AAAAAAAAAAAADAAAAAkABwAAAAAABQAAAAAAAAAAAAAAMQAAADEAMf%2Fx%2F%2FYAAAAAACj%2F1wAAAAAAAAAA%2F%2BwAAP%2F2AAAAAAAA%2F%2BoAAABP%2F%2BwAWv%2FsABQAAAAAADMAJgAdACgAKAASAAD%2F9QAAAAAAAP%2F1AAAAAAA5AAAAAP%2FsAAAAAP%2F1AAAAIAAAAAAAAAAAAAAAAAAAAAD%2F8QAA%2F%2FUAAAAAAAAAAP%2FYAAD%2F9QAUADwAAAAAAAAAAAAA%2F%2BIAAAAAAAAAAAAAAAAAAAAA%2F%2FUAAAAAABQAAAAA%2F%2FoAAAAA%2F%2Fn%2F9v%2F2AAAAAP%2FsABQAAAAAAAAAAP%2F2AAD%2F9AAAAAD%2F9f%2F1%2F%2BwAAP%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2Bv%2F7AAAAAAAAAAAAAAAAAAAAAD%2F6wAAAAD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F2AAAAAAAAAAAAAAAAAAA%2F%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FIAAAAAP%2FYAAAAAAAAAAD%2F7P%2F2AAAAAAAAAAD%2F8QAAAAAAAAAAAAAAAAAA%2F%2BwAAAAAAAAAAAAAAAD%2F7gAAAAAAAP%2FsAAD%2F9AAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABH%2F2gAAAAAAAAAA%2F8X%2F2AAAAAAAAP%2FQ%2F%2FX%2F2gAAAAAAAAAAAAAAAAAAAAAAAAAA%2F8b%2FdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F2%2F%2FcAEgAbAAD%2F2f%2FuAAD%2F9gAA%2F%2BkAAP%2F2%2F9QAAAAAAAAAAAAS%2F%2B0AT%2F%2FYAAAAAAAAAAAAAAAAAAAAKAAbAAD%2F6%2F%2FsAAD%2F9v%2F2AAAAAAAAAAAAAP%2FrAAAAAP%2FsAAAAAAAAAAD%2F%2FQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FDAAAAAAAAAAAAAAAAAAD%2F9gAA%2F%2F0AAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FUAAAAAAAD%2F9gAAAAAAAAAAABQAAAAAAAAAAP%2FrAAD%2F9gAAAAAAAP%2F3AAAAAP%2FsACgAFAAAAAAAAAAAAAD%2F7AAAAAAAAAAA%2F%2Bz%2F6wAAAAAAAAAAABQAAAAAAAD%2F7AAAAAD%2F4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F4gAAAAAAAAAAAAAAAAAA%2F%2FUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FrAAAAAP%2F9AAD%2F9gAAAAAAAP%2FxAAAAAAAAAAD%2F9gAAAAD%2F4gAAAAAAAP%2F1AAAAAAA2%2F%2FUAAAAAAAAAAP%2F1AAAAAAAAAAAAAAAAAAAAAAAA%2F%2FQAAAAAAAAAAAAA%2F%2BwAAAAAAAAAAP%2F2AAAAAAAA%2F%2BwAAAAAAAAAAP%2FsAAAAAP%2FYAAAAAAAAAAAAAAAAADj%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F6wAAAAAAAAAAAAD%2F4wAAAAAAAP%2F3AAAAAAAAAAAAAAAAAAAAAAAA%2F%2BQAAP%2F2AAAAAAAA%2F%2FYAAAAA%2F%2FUAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAv%2F6wAA%2F%2Fb%2F9gAA%2F8T%2F3P%2Fw%2F%2BL%2F9v%2FhAAD%2F9f9zAAD%2F9v%2FxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7P%2Fs%2F%2FD%2F7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BsAAAAAAAAAAAAAAAAAAP%2FaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F4gAAAAD%2F9v%2FZAAAAAAAAAAD%2FnP%2FO%2F%2Fb%2FogAA%2F9AAAP%2Fn%2F2sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F3P%2FsAAD%2F9v%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9gAAAAD%2F6gAA%2F%2Fj%2F%2BAAA%2F8b%2F9f%2Ft%2F%2B7%2F9v%2FxAAD%2F8%2F%2By%2F%2FwAAP%2FiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2B7%2F6v%2Fs%2F%2Ff%2F5f%2FyAAAAAAAAAAD%2F7P%2F2AAAAAAAAAAD%2F9f%2F2AAAAAAAI%2F%2FUAAP%2F0%2F%2Fb%2F9gAAAAAAAP%2F2%2F%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F6v%2F1AAAAAP%2F1AAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F9wAAAAA%2F8QAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fs%2F%2BwAAAAAAAAAAP%2F1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9f%2F2%2F9sAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F2%2F8L%2F3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FYAAD%2F9P%2FiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9AAAAAAAAAAAAAD%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAA%2F9gAAP%2F2%2F9QAAAAAAAAAAAAAAAAAAP%2Fi%2F%2BsAAAAAAAAAAP%2FiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fq%2F%2FUAAAAAAAAAAP%2FrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2BY%2F9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F2gAAAAAAAAAA%2F4j%2F0wAAAAAAAP%2Fh%2F%2B3%2F2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F8cAAAAAAAAAAAAAAAD%2F7AAAAAAAAAAA%2F%2FYAAAAAAAD%2F7P%2F2AAAAAAAA%2F%2BwAAAAA%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FrAAAAAAAAAAAAAP%2FaAAAAAP%2F8AAAAAAAA%2F%2FUAAAAAAAAAAAAA%2F%2Fb%2F9gAA%2F%2FQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F1%2F%2BsAAAAAAAD%2F7AAAAAAAAgANAAQAIAAAACIAJQAdACgAKAAhACoAYgAiAGcAdgBbAHgAegBrAIYAkwBuAJYAngB8AKEAoQCFAKMAowCGAKUApQCHAKcApwCIAKkAqQCJAAEABACkAAYABwAIAAwAJgAnAAkAKAApACoACgALACgAKAAMACsADAANAA4ADwAQAC0AEQAuABIAEwAUAB0AFQAAABgAGQAaABwAAAAAABsAAAAcABwAHQAdACIAHwAgACEAIgA3ACMAOAAkACUABgAGAAYABgAGAAYAJgAIACYAJgAmACYAKQApACkAKQAoAAwADAAMAAwADAAMACYAEAAQABAAEAASAAwALAAUABQAFAAUABQAFAAYABUAGAAYABgAGAAAAAAAAAAAACIAHAAdAB0AHQAdAB0AHQAYADEAIgAiACIAIgAkACQAAAAdABkAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAXABYAFgABAAIANAAEADUANQAeADYAHgA2AAAAAAAyADMAMgAzADAAMAAwADAAAwAAAAAALwAAAC8AAAAvAAAABQACAEgABAAEAAwABgAGAA8ACgAKAA8ADQANABMAEgASAA8AFAAUAA8AFgAWAA0AFwAXAAIAGAAYAAMAGQAZAB8AGgAaAAQAGwAbACAAHAAcAAUAHQAdAA4AHgAeABAAIAAiABIAIwAjABEAJAAkAAYAJgAmABQAJwAnAAcAKgArACgALAAsABIALQAtACgALgAuABIALwAvACgAMAAwACkAMQAxABUAMgAyABYAMwAzACQANAA0AAgANQA1ACUANgA2AAkANwA3ACoAOAA9AAwAPwA%2FAA8ASQBPAA8AUABTAAMAVABUAAUAVQBVAAEAVwBdABAAXgBiABIAYwBmABQAZwBoACgAaQBvABIAcQB0ABYAdQB2AAkAeQB6ABEAhgCHAAsAiACJACwAigCKABwAiwCLAB0AjACMACEAjQCNAB4AjgCPACIAkACQACMAkQCRAAoAkgCSACMAkwCTAAoAlgCWACcAlwCXACsAmACYACcAmQCZACsAmgCdACYAngCeABkAogCiAC0ApACkAC0ApgCmAC0ApwCnABsAqQCpABgAqwCrABcArwCvABoA8ADwABQAAQAAAAoAYACeAAJERkxUAA5sYXRuABoABAAAAAD%2F%2FwABAAAAFgADQVpFIAAeQ1JUIAAoVFJLIAAyAAD%2F%2FwABAAEAAP%2F%2FAAIAAgAFAAD%2F%2FwACAAMABgAA%2F%2F8AAgAEAAcACGxpZ2EAMmxpZ2EAMmxpZ2EAMmxpZ2EAMmxpZ2EAMmxvY2wAOGxvY2wAOGxvY2wAOAAAAAEAAQAAAAEAAAACAAYAGgABAAAAAQAIAAEABgDKAAEAAQAmAAQAAAABAAgAAQAaAAEACAACAAYADAB5AAIAIwB6AAIAMQABAAEAIw%3D%3D%29%20format%28%27truetype%27%29%3B%0A%7D%0A%40font%2Dface%20%7B%0Afont%2Dfamily%3A%20%27Source%20Sans%20Pro%27%3B%0Afont%2Dstyle%3A%20normal%3B%0Afont%2Dweight%3A%20400%3B%0Asrc%3A%20url%28data%3Aapplication%2Ffont%2Dsfnt%3Bbase64%2CAAEAAAARAQAABAAQR0RFRgNEA3IAAG5oAAAAQEdQT1PUveN5AABuqAAAGXBHU1VC8WfWVwAAiBgAAADgT1MvMlq0lFsAAGUsAAAAYGNtYXDzMPm1AABljAAAAeZjdnQgDZkA%2BgAAaTQAAAAoZnBnbQZZnDcAAGd0AAABc2dhc3D%2F%2FwADAABuYAAAAAhnbHlmIymUiAAAARwAAF3saGVhZP4Us%2BIAAGEMAAAANmhoZWEHowOhAABlCAAAACRobXR4pqgmOgAAYUQAAAPEbG9jYTiIUNQAAF8oAAAB5G1heHADCwJAAABfCAAAACBuYW1lIro8MAAAaVwAAAHGcG9zdGxQSG8AAGskAAADOXByZXCWBPrrAABo6AAAAEsABQBZAAACNQKUAAMABgAJAA8AFQBnALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAIvG7kAAgAEPlm6AAUAAgAAERI5ugAGAAIAABESOboABwACAAAREjm6AAgAAgAAERI5uQAKAAH0ugANAAIAABESObgAABC5ABIAAfQwMRMhESETJxEhEQcTLwEjDwETPwEjHwFZAdz%2BJMB%2FAVh%2BUkk0BDZKhDFC60IyApT9bAFU6P4yAc7o%2FuaEZ2eEAUled3deAAAAAAIAAwAAAh0CkAAJABEAVAC4AABFWLgADi8buQAOABA%2BWbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4ABEvG7kAEQAEPlm6AAUADAAOERI5ugALAAwADhESObgACy%2B5AAkAAfQwMQEnLgEnIw4BDwEXIwcjEzMTIwFxHxIgEAQPIBIf2u8%2FVd5e3lkBC2Q3bTk5bTdkQ8gCkP1wAAAAAAMAWgAAAiQCkAATABwAJQBbALgAAEVYuAAALxu5AAAAED5ZuAAARVi4ABMvG7kAEwAEPlm6ACMAAAATERI5uAAjL7oACgAjABQREjm4AAAQuQAbAAH0uAAjELkAHAAB9LgAExC5ACUAAfQwMRMzMh4CFRQGBxUeARUUDgIrARMyNjU0JisBFRMyNjU0JisBFVrDMlM7ITg6SFAkQlw30bRVSU1NZXJVXlxXcgKQEiY9KzFPDwQLTkQwSDAYAXg6NzYv1v7KP0M9OfgAAAEANP%2F0AhsCnAAhADkAuAAARVi4AAUvG7kABQAQPlm4AABFWLgAHS8buQAdAAQ%2BWbgABRC5AAwAAfS4AB0QuQAWAAH0MDETND4CMzIWFwcuASMiDgIVFB4CMzI2NxcOASMiLgI0LE5rPzxaHS8aPyovTDYeHTRLLzBHIC8nYj8%2BaU0rAUhPflgvMSA1HCElRWI9PmNGJiYjMy0yLld%2FAAACAFoAAAI0ApAACgATADUAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgACi8buQAKAAQ%2BWbkACwAB9LgAABC5ABEAAfQwMRMzMhYVFA4CKwE3MjY1NCYrARFapJieKE5ySqiec3Nzc0sCkKidTntVLUSKfX2E%2FfgAAAABAFoAAAHeApAACwBNALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAsvG7kACwAEPlm4AAAQuQADAAH0ugAHAAAACxESObgABy%2B5AAUAAfS4AAsQuQAIAAH0MDETIRUhFTMVIxUhFSFaAXr%2B2fn5ATH%2BfAKQRs5H7kcAAAAAAQBaAAAB1AKQAAkAQwC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAJLxu5AAkABD5ZuAAAELkAAwAB9LoABwAAAAkREjm4AAcvuQAFAAH0MDETIRUhFTMVIxEjWgF6%2Ftn6%2BlMCkEbeRv7aAAAAAQA0%2F%2FQCJgKcACUATQC4AABFWLgABS8buQAFABA%2BWbgAAEVYuAAhLxu5ACEABD5ZuAAFELkADAAB9LgAIRC5ABYAAfS6AB0ABQAhERI5uAAdL7kAGwAB9DAxEzQ%2BAjMyFhcHLgEjIg4CFRQeAjMyNjc1IzUzEQ4BIyIuAjQtUW5CRFsdLxlBMjJQOB8dN1E1Iz8Ui9cgaUJBbE4sAUhPflgvMx41GiMlRWI9PmNGJhUSq0X%2B7CErLld%2FAAABAFoAAAIyApAACwBJALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAsvG7kACwAEPlm6AAkAAAALERI5uAAJL7kAAwAB9LgAABC4AATQuAALELgAB9AwMRMzESERMxEjESERI1pTATFUVP7PUwKQ%2Fu0BE%2F1wATX%2BywABAFoAAACtApAAAwAlALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAMvG7kAAwAEPlkwMRMzESNaU1MCkP1wAAAAAQAf%2F%2FQBiQKQABAAKwC4AABFWLgABy8buQAHABA%2BWbgAAEVYuAAOLxu5AA4ABD5ZuQADAAH0MDE3HgEzMjY1ETMRFA4CIyInWxY4IzU0VBUrRTB7OocnI0FLAcf%2BMSpLOCBpAAEAWgAAAj8CkAAMAFsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgABC8buQAEABA%2BWbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4AAgvG7kACAAEPlm6AAIAAAAMERI5ugAJAAQACBESOTAxEzMRMwEzBxMjAwcVI1pTAwERXs3tXcRxUwKQ%2FrcBSfr%2BagFVhdAAAAEAWgAAAcwCkAAFACsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgABS8buQAFAAQ%2BWbkAAgAB9DAxEzMRIRUhWlMBH%2F6OApD9t0cAAAABAFoAAAJ9ApAAGQBvALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAYvG7kABgAQPlm4AABFWLgAGS8buQAZAAQ%2BWbgAAEVYuAAJLxu5AAkABD5ZugADAAYACRESOboADgAGAAkREjm6ABEAGQAGERI5ugAUAAAAGRESOTAxEzMTFzM3EzMRIxE0NjcjBwMjAycjHgEVESNaYn8wBC5%2BYk8HBAQ1fi9%2FNAQDCE0CkP6ghoYBYP1wAWksaiyS%2FqkBV5Isaiz%2BlwAAAAEAWgAAAi0CkAATAFsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgACC8buQAIABA%2BWbgAAEVYuAATLxu5ABMABD5ZuAAARVi4AAsvG7kACwAEPlm6AAQACwAIERI5ugAOAAAAExESOTAxEzMTFzMuATURMxEjAycjHgEVESNaVu1HBAMHT1buRwQEB08CkP5kiDJrNAFT%2FXABnYcyZzT%2BqQACADT%2F9AJlApwAEwAnADUAuAAARVi4AAovG7kACgAQPlm4AABFWLgAAC8buQAAAAQ%2BWbkAFAAB9LgAChC5AB4AAfQwMQUiLgI1ND4CMzIeAhUUDgInMj4CNTQuAiMiDgIVFB4CAUw%2BZ0opKUpnPj5nSykpS2c%2BLEczHBwzRywsRzMcHDNHDDBZf09PfVcuL1d9Tk9%2FWTBJJkdjPj1iRCUlRGI9PmNHJgACAFoAAAIVApAADgAXAEMAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgADi8buQAOAAQ%2BWboADAAAAA4REjm4AAwvuQAPAAH0uAAAELkAFgAB9DAxEzMyHgIVFA4CKwERIxMyNjU0JisBEVrJNlo%2FIyNAWTZ2U79WU1RVbAKQFC1KNjRMMhn%2B%2FAFIQUZHN%2F77AAACADT%2FXAJzApwAEwA0AEsAuAAARVi4ACQvG7kAJAAQPlm4AABFWLgAGi8buQAaAAQ%2BWbsAMQABABcABCu4ABoQuQAFAAH0uAAkELkADwAB9LgAGhC4AC7QMDETFB4CMzI%2BAjU0LgIjIg4CAQ4BIyImJy4DNTQ%2BAjMyHgIVFA4CBx4BMzI2N4ocM0csLEczHBwzRywsRzMcAekPMh1beh02WD8iKUpnPj5nSykhPVY0F1Q2FiEOAUs%2FZUgmJkhlPz1iRCUlRGL94wUKV0QHNlh3SE99Vy4vV31OR3VXNwksKgYEAAACAFoAAAIgApAACAAYAFQAuAAARVi4AA4vG7kADgAQPlm4AABFWLgADC8buQAMAAQ%2BWbgAAEVYuAAJLxu5AAkABD5ZuwABAAEACgAEK7gADhC5AAgAAfS6ABcAAQAKERI5MDETMzI2NTQmKwEBAyMRIxEzMh4CFRQGBxOtbk1SUk1uARWed1PNMlU9IlBDpgFZP0BBNP2zARX%2B6wKQEyxGM01cEf7iAAABACr%2F9AHvApwAMwBJALgAAEVYuAAWLxu5ABYAED5ZuAAARVi4ADAvG7kAMAAEPlm5AAMAAfS6AAsAFgAwERI5uAAWELkAHQAB9LoAJQAwABYREjkwMTceATMyNjU0LgIvAS4DNTQ%2BAjMyFhcHLgEjIgYVFB4CHwEeAxUUDgIjIiYnXCNfM0FIER0oF14XMCYYHzdLLTtkIy0eSS43QxMgJhRdHDIkFR86UjRFdiuPJS07MBkjGRQLKQocKDckJUAvGi0kNh0hMy0YIRkTCCgMHyk3JCdEMx00LQAAAQAcAAAB%2FAKQAAcAMwC4AABFWLgAAi8buQACABA%2BWbgAAEVYuAAHLxu5AAcABD5ZuAACELkAAAAB9LgABdAwMRMjNSEVIxEj4sYB4MZUAkpGRv22AAAAAAEAV%2F%2F0Ai4CkAAZADwAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgADS8buQANABA%2BWbgAAEVYuAAULxu5ABQABD5ZuQAHAAH0MDETMxEUHgIzMj4CNREzERQOAiMiLgI1V1MYKTggITgqGFAkP1YyMlc%2FJAKQ%2Fn07UDAVFTBQOwGD%2Fn9PbEMdHUNsTwAAAQAAAAACAwKQAA0AQAC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAKLxu5AAoAED5ZuAAARVi4AA0vG7kADQAEPlm6AAUAAAANERI5MDERMxMeARczPgE3EzMDI1lpEhsTBBIcEWlV0GECkP6eO2Q6OmQ7AWL9cAAAAQAXAAAC%2BgKQACEAdgC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAKLxu5AAoAED5ZuAAARVi4ABQvG7kAFAAQPlm4AABFWLgAIS8buQAhAAQ%2BWbgAAEVYuAAXLxu5ABcABD5ZugAFAAAAIRESOboADwAUABcREjm6ABwAIQAKERI5MDETMxMeARczPgE3EzMTHgEXMz4BNxMzAyMDLgEnIw4BBwMjF1ZFCRQJBAsYC1tMWwwYDAQJEgpFUIhkYwkPCAQIEQhhYwKQ%2Fps2aDY2aTUBZf6bNGo2Nmk1AWX9cAGLJkkmJkkm%2FnUAAAABAA8AAAHyApAAGQBbALgAAEVYuAABLxu5AAEAED5ZuAAARVi4AAsvG7kACwAQPlm4AABFWLgAGS8buQAZAAQ%2BWbgAAEVYuAAPLxu5AA8ABD5ZugAGAAEAGRESOboAEwAPAAsREjkwMRMDMxceARczPgE%2FATMDEyMnLgEnIw4BDwEjzrJcWQ0XDwQOFQxXWLO%2FXGANGxAEDhoMX1gBUwE9qBcrHR0rF6j%2Bv%2F6xsRgzHh4zGLEAAAAAAf%2F%2FAAAB3QKQAA8AQAC4AABFWLgAAS8buQABABA%2BWbgAAEVYuAALLxu5AAsAED5ZuAAARVi4AA8vG7kADwAEPlm6AAYAAQAPERI5MDE3AzMXHgEXMz4BPwEzAxUjxMVZVRAeEQQRIg9UV8VU%2FgGSuSRGJSVGJLn%2Bbv4AAAEALQAAAfECkAAJAD0AuAAARVi4AAMvG7kAAwAQPlm4AABFWLgACC8buQAIAAQ%2BWbkABgAB9LgAANC4AAMQuQABAAH0uAAF0DAxNwEhNSEVASEVIS0BWf7GAaL%2BpgFd%2FjwyAhhGMf3oRwAAAAIAOv%2F0AbcB8gAbACcAdgC4AABFWLgADy8buQAPAAg%2BWbgAAEVYuAAZLxu5ABkABD5ZuAAARVi4ABQvG7kAFAAEPlm6AAMADwAZERI5uAADL7gADxC5AAgAAfS6ABUAFAAPERI5uAAZELkAHwAB9LgAFRC5ACIAAfS4AAMQuQAjAAH0MDE3NDY3NC4CIyIGByc%2BATMyFhURIycjDgEjIiY3FBYzMjY3NQ4DOo%2BcCRcmHitJHSEiYjtZUEQHAiNRLT5RUTEkIz8jPVQzFn5QVREXLCIVIBQ5FiltW%2F7WOh0pSEgqJCEghwgWHicAAgBS%2F%2FQB%2BwLIABYAJgCDALgAAEVYuAAALxu5AAAAEj5ZuAAARVi4AAYvG7kABgAIPlm4AABFWLgAEC8buQAQAAQ%2BWbgAAEVYuAAWLxu5ABYABD5ZugADAAYAEBESOboAEwAQAAYREjm4ABMQuQAXAAH0uAAQELkAGgAB9LgABhC5ACQAAfS4AAMQuQAmAAH0MDETMxUHPgEzMh4CFRQOAiMiJicjByM3HgEzMj4CNTQuAiMiB1JSAiFOKS9IMRkiOkwqIkkgAwdCUiA%2FGB4zJRUOHzEiO0cCyMJYHScjQVs4PmJEIx8dMGwcFxsxSC0oQi8aQgAAAAABAC7%2F9AGwAfIAIQA5ALgAAEVYuAAFLxu5AAUACD5ZuAAARVi4AB0vG7kAHQAEPlm4AAUQuQAMAAH0uAAdELkAFgAB9DAxNzQ%2BAjMyFhcHLgEjIg4CFRQeAjMyNjcXDgEjIi4CLiZAVS8wRRkpFi8dITgoFxYnOCEjORYlIVEsMFQ9I%2FI9X0IiIxc1ExgbMkUqKkQxGx0UNh0iIkFfAAAAAgAv%2F%2FQB2QLIABQAIwCDALgAAEVYuAAFLxu5AAUACD5ZuAAARVi4AAovG7kACgASPlm4AABFWLgAEi8buQASAAQ%2BWbgAAEVYuAANLxu5AA0ABD5ZugAIABIABRESOboADgAFABIREjm4ABIQuQAYAAH0uAAOELkAGwAB9LgACBC5ABwAAfS4AAUQuQAfAAH0MDE3ND4CMzIWFyc1MxEjJyMOASMiJjcUFjMyNjc1LgEjIg4CLyM6TCoqPiAEU0QHAx1LK1xtVUZAIjweHzkeHTMmFvI7X0IkHhpTu%2F04ORwphHtYYiEi%2FhwXGzFEAAAAAgAu%2F%2FQBygHyABsAJABRALgAAEVYuAAFLxu5AAUACD5ZuAAARVi4ABcvG7kAFwAEPlm6AAwABQAXERI5uAAML7gAFxC5ABAAAfS4AAUQuQAfAAH0uAAMELkAJAAB9DAxNzQ%2BAjMyHgIVFAchHgEzMjY3Fw4BIyIuAiU0JiMiDgIHLiU9TiouSTEaA%2F64BVdGIzsbHSBOMjFVPyQBVD85Gi8mGQTyPF9CIyA8VDQbEk9cFRE2FB4jQV5hS08VJzklAAAAAAEAHgAAAT8C1AAVAFYAuAAARVi4AAUvG7kABQAIPlm4AABFWLgAEi8buQASABI%2BWbgAAEVYuAAJLxu5AAkABD5ZuAASELkAAgAB9LgABRC5AAgAAfS4AAvQuAAFELgADtAwMQEmIyIdATMVIxEjESM1NzU0NjMyFhcBLRscRGdnUkJCRUkXKREChQxeTUP%2BXQGjPgVNS1YJBwAAAAMALf8gAewB8gARAEkAWQBtALgAAEVYuAAlLxu5ACUACD5ZuAAARVi4AEUvG7kARQAGPlm5AAMAAfS6ADwAJQBFERI5uAA8L7kACwAB9LgAJRC4ACnQuAApL7kAKgAB9LgAPBC4ADPQuAAzL7kASgAB9LgAJRC5AFIAAfQwMRcUFjMyPgI1NCYrASImJw4BBzQ2NzUuATU0Njc1LgE1ND4CMzIWFzMVIx4BFRQOAiMiJicOARUUFjsBMhYVFA4CIyIuAhMyPgI1NCYjIgYVFB4CdUtCIzkoFjIwVA4hEBoYSCYhEhkiExgnHTJDJRQjDqlkERccMEElEiYRDRIkMl5VVSJAWzktSjUdyRUlHRA8Kys8EB0lUicuERskEyIaAwUTKiAfOBcECycdHy4NBBRDLChALRgHBT8RNB8nPysYCQgLGxQXHjc9Ij0uGxEiMAFOEB4rGzY7OzYbKx4QAAABAFIAAAHXAsgAFABYALgAAEVYuAAGLxu5AAYACD5ZuAAARVi4AAAvG7kAAAASPlm4AABFWLgAFC8buQAUAAQ%2BWboAAwAGABQREjm4AAvQuAAGELkADwAB9LgAAxC5ABIAAfQwMRMzFQc%2BATMyFhURIxE0JiMiBgcRI1JSAyNMM01HUiwwJjolUgLIwmQhL2Be%2FswBKUU9JiX%2BoAACAEMAAAC1ArQACwAPAC0AuAAARVi4AAwvG7kADAAIPlm4AABFWLgADi8buQAOAAQ%2BWboABgAAAAMrMDETIiY1NDYzMhYVFAYHMxEjfBghIRgYISFCUlICSh4XGB0dGBceZP4aAAAAAAL%2F2P8nALUCtAAPABsANwC4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAAFLxu5AAUABj5ZugAWABAAAyu4AAUQuQAMAAH0MDETMxEUBiMiJic3HgEzMjY1EyImNTQ2MzIWFRQGU1I8SRckDREJGA0kGCoYISEYFyEhAeb940pYCAU%2BAwUyLQKBHhcYHR0YFx4AAAEAUgAAAeYCyAAMAFsAuAAARVi4AAQvG7kABAAIPlm4AABFWLgAAC8buQAAABI%2BWbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4AAgvG7kACAAEPlm6AAIAAAAMERI5ugAJAAAACBESOTAxEzMRMxMzBxMjJwcVI1JRA89bo7lajltRAsj%2BHgEAw%2F7d6mqAAAAAAAEAUv%2F0ANgCyAAPACsAuAAARVi4AAAvG7kAAAASPlm4AABFWLgADC8buQAMAAQ%2BWbkABQAB9DAxEzMRFBYzOgE3Fw4BIyImNVJSDgkEBwcLCBYRLygCyP2UFBACPgQEODYAAAABAFIAAALxAfIAIQCYALgAAEVYuAAGLxu5AAYACD5ZuAAARVi4AAAvG7kAAAAIPlm4AABFWLgAIS8buQAhAAQ%2BWbgAAEVYuAAZLxu5ABkABD5ZuAAARVi4ABEvG7kAEQAEPlm6AAIAAAAhERI5ugAJAAAAIRESObgABhC4AAzQuQAVAAH0uAAJELkAFwAB9LgABhC5AB0AAfS4AAIQuQAfAAH0MDETMxczPgEzMhYXPgEzMhYVESMRNCYjIgcRIxE0JiMiBxEjUkQHAyBLLDg%2FDyZNLUtJUiwuN0NSLC83Q1IB5kYjLzEsKjNgXv7MASlFPUv%2BoAEpRT1L%2FqAAAAAAAQBSAAAB1wHyABQAZQC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAALxu5AAAACD5ZuAAARVi4ABQvG7kAFAAEPlm4AABFWLgACy8buQALAAQ%2BWboAAgAAABQREjm4AAYQuQAPAAH0uAACELkAEgAB9DAxEzMXMz4BMzIWFREjETQmIyIGBxEjUkQHAyNNM01HUiwwJjolUgHmRiMvYF7%2BzAEpRT0mJf6gAAAAAAIALv%2F0AfAB8gATACcANQC4AABFWLgABS8buQAFAAg%2BWbgAAEVYuAAPLxu5AA8ABD5ZuQAZAAH0uAAFELkAIwAB9DAxNzQ%2BAjMyHgIVFA4CIyIuAjcUHgIzMj4CNTQuAiMiDgIuJT5RLS1RPiUlPlEtLVE%2BJVUUJTQfHzQlFBQlNB8fNCUU8j1fQiIiQl89PF9BIiJBXzwqRDEbGzFEKipFMhsbMkUAAAIAUv8zAfsB8gAWACcAgwC4AABFWLgACS8buQAJAAg%2BWbgAAEVYuAADLxu5AAMACD5ZuAAARVi4AAIvG7kAAgAGPlm4AABFWLgAEy8buQATAAQ%2BWboABQAJABMREjm6ABYAEwAJERI5uAAWELkAFwAB9LgAExC5ABoAAfS4AAkQuQAkAAH0uAAFELkAJwAB9DAxFxUjETMXMz4BMzIeAhUUDgIjIiYnNx4BMzI%2BAjU0LgIjIgYHpFJEBwMhTysvSDAZIjpMKiJDIgIhPhgeMyUVDh8xIh8%2FJCmkArM4HCgjQVs5PmFEIx4aQBwXGzFILShCLxoiIAAAAgAv%2FzMB2QHyABQAIwB%2FALgAAEVYuAAFLxu5AAUACD5ZuAAARVi4AAsvG7kACwAIPlm4AABFWLgADS8buQANAAY%2BWbgAAEVYuAASLxu5ABIABD5ZugAIAAUAEhESOboADwASAAUREjm5ABgAAfS4AA8QuQAbAAH0uAAIELkAHAAB9LgABRC5AB8AAfQwMTc0PgIzMhYXMzczESM1Nw4BIyImNxQWMzI2NzUuASMiDgIvIzpMKipAIQIIQlMEHUsqXG1VRkAiPB4fOR4dMyYW8jtfQiQdHS79Ta1WGyeEe1hiISL%2BHBcbMUQAAAABAFIAAAFeAfIAEQBSALgAAEVYuAAGLxu5AAYACD5ZuAAARVi4AAAvG7kAAAAIPlm4AABFWLgAES8buQARAAQ%2BWboAAgAAABEREjm4AAYQuAAM3LgAAhC5AA8AAfQwMRMzFzM%2BATMyFwcuASMiBgcRI1JEBwMZRyodFxAMFA8fQxlSAeZYLjYKSAQEMj7%2ByAABABz%2F9AGDAfIAMQBJALgAAEVYuAAVLxu5ABUACD5ZuAAARVi4AC4vG7kALgAEPlm5AAMAAfS6AAsALgAVERI5uAAVELkAHAAB9LoAJAAVAC4REjkwMTceATMyNjU0LgInLgM1ND4CMzIWFwcuASMiBhUUHgIXHgMVFA4CIyImJ0UgQywwMBQfKBQaNCkaFys%2BJy5NHCcZNiAuKxIeJxUaNSobFy1DKzReI24aICwgExwVEAgJFyEsHx0zJRUgFzQTGCocERkTDwgKFiEwIh40KBcmHQAAAAABABj%2F9AFFAm4AGQBFALgAAEVYuAAGLxu5AAYACD5ZuAAARVi4ABQvG7kAFAAEPlm4AAYQuQAJAAH0uAAA0LgABhC4AAPQuAAUELkADQAB9DAxEyM1PwEzFTMVIxEUFjMyNjcXDgEjIi4CNWBITApFg4MhKg0eDBAULxcnNSEOAaM%2BBYiIQ%2F7yLTEIBT4HCxgqPCQAAQBL%2F%2FQBzgHmABQAZQC4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAAJLxu5AAkACD5ZuAAARVi4ABEvG7kAEQAEPlm4AABFWLgADC8buQAMAAQ%2BWbgAERC5AAUAAfS6AA0ACQAMERI5uAANELkACAAB9DAxEzMRFBYzMjY3ETMRIycjDgEjIiY1S1MrMCY6I1JEBwMiSzNORwHm%2FtdFPScrAVn%2BGkwoMGBeAAAAAAEADAAAAccB5gANAEAAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgACi8buQAKAAg%2BWbgAAEVYuAANLxu5AA0ABD5ZugAFAAAADRESOTAxEzMTHgEXMz4BNxMzAyMMVVwLFwsECxYLXFGsYAHm%2FuwkSCMjSCQBFP4aAAEAGAAAArYB5gAhAHYAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgACi8buQAKAAg%2BWbgAAEVYuAAULxu5ABQACD5ZuAAARVi4ACEvG7kAIQAEPlm4AABFWLgAFy8buQAXAAQ%2BWboABQAhAAAREjm6AA8AFwAUERI5ugAcAAAAIBESOTAxEzMTHgEXMz4BNxMzEx4BFzM%2BATcTMwMjAy4BJyMOAQcDIxhUSAgOBwQIEAlLUEwJEQgECA4IR06CZEYJDwkECBAKRGAB5v7nI0IiIkMiARn%2B5yNCIiJCIwEZ%2FhoBBSNEJSVFI%2F78AAAAAQAOAAABsAHmABkAWwC4AABFWLgAAS8buQABAAg%2BWbgAAEVYuAALLxu5AAsACD5ZuAAARVi4ABkvG7kAGQAEPlm4AABFWLgADy8buQAPAAQ%2BWboABgALAA8REjm6ABQAAQAZERI5MDE3JzMXHgEXMz4BPwEzBxcjJy4BJyMOAQ8BI62TWUELGA0ECxYLO1aTnllHDRoOBA0YDEJW%2FuhrFCkUFCkUa%2FH1cRYsFRUrF3EAAAAAAQAM%2Fy8BxwHmAB0ARgC4AABFWLgACC8buQAIAAg%2BWbgAAEVYuAASLxu5ABIACD5ZuAAARVi4ABkvG7kAGQAGPlm5AAMAAfS6AA0ACAAZERI5MDEXHgEzMjY%2FAQMzEx4BFzM%2BATcTMwMOAyMiJic3MQgUCSo1DwvDVWMLGQsECxQKV1C3DSAsOCURHAwQhgIFOy0kAef%2B8yBHIiFIIAEN%2FfIkPi0aBQVBAAAAAAEAHwAAAY8B5gAJAD0AuAAARVi4AAMvG7kAAwAIPlm4AABFWLgACC8buQAIAAQ%2BWbkABgAB9LgAANC4AAMQuQABAAH0uAAF0DAxNwEjNSEVASEVIR8BAOQBTP8AAQj%2BkCwBd0Ms%2FolDAAAA%2F%2F8AAwAAAh0DMgImAAQAAAAHAOEBDwAA%2F%2F8AAwAAAh0DMgImAAQAAAAHAOMBDwAA%2F%2F8AAwAAAh0DMgImAAQAAAAHAOUBDwAA%2F%2F8AAwAAAh0DMwImAAQAAAAHAOcBDwAA%2F%2F8AAwAAAh0DLQImAAQAAAAHAOoBDwAA%2F%2F8AAwAAAh0DawImAAQAAAAHAOwBDwAAAAIACAAAAwUCkAAFABUAfAC4AABFWLgADS8buQANABA%2BWbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4AAgvG7kACAAEPlm6AAIADQAMERI5ugAJAA0ADBESObgACS%2B5AAUAAfS4AAgQuQAGAAH0uAANELkADwAB9LoAFAANAAgREjm4ABQvuQASAAH0MDEBESMGDwEFFSE1IwcjASEVIRUzFSMVAZEENTY9AiD%2BjM5jWAFYAZv%2B6ujoAQIBTGtrdrtHv78CkEbOR%2B7%2F%2FwA0%2FysCGwKcAiYABgAAAAcA7gFXAAD%2F%2FwBaAAAB3gMyAiYACAAAAAcA4QEcAAD%2F%2FwBaAAAB3gMyAiYACAAAAAcA4wEcAAD%2F%2FwBaAAAB3gMyAiYACAAAAAcA5QEcAAD%2F%2FwBaAAAB3gMtAiYACAAAAAcA6gEcAAD%2F%2FwAAAAAAtgMyAiYADAAAAAcA4QCDAAD%2F%2FwBQAAABBgMyAiYADAAAAAcA4wCDAAD%2F%2F%2F%2F7AAABCwMyAiYADAAAAAcA5QCDAAD%2F%2F%2F%2F8AAABCgMtAiYADAAAAAcA6gCDAAD%2F%2FwBaAAACLQMzAiYAEQAAAAcA5wFGAAD%2F%2FwA0%2F%2FQCZQMyAiYAEgAAAAcA4QFMAAD%2F%2FwA0%2F%2FQCZQMyAiYAEgAAAAcA4wFMAAD%2F%2FwA0%2F%2FQCZQMyAiYAEgAAAAcA5QFMAAD%2F%2FwA0%2F%2FQCZQMzAiYAEgAAAAcA5wFMAAD%2F%2FwA0%2F%2FQCZQMtAiYAEgAAAAcA6gFMAAAAAwAy%2F%2BICawKuAAsAFQAwAIUAuAAARVi4ACwvG7kALAAQPlm4AABFWLgAHi8buQAeAAQ%2BWboAAAAeACwREjm5AAMAAfS6AAsALAAeERI5ugAMACwAHhESObgALBC5AA4AAfS6ABUAHgAsERI5ugAWACwAHhESOboAIQAeACwREjm6ACQAHgAsERI5ugAuACwAHhESOTAxNx4BMzI%2BAjU0Ji8BJiMiDgIVFBcBHgEVFA4CIyImJwcnNy4BNTQ%2BAjMyFzcX0BlAJixHMxwRECIzTCxIMxwiAXgfIilLZz00WSM%2FLkYgIilLZz5oRz8udBodJkdjPjBQIDI2JURiPWBEAYorc0hPf1kwISBTJFssdkhPfVcuP1EjAAIANAAAAx4CkAASABsAVQC4AABFWLgAAy8buQADABA%2BWbgAAEVYuAAOLxu5AA4ABD5ZuAADELkAGAAB9LgABdC6AAoAAwAOERI5uAAKL7kACAAB9LgADhC5ABcAAfS4AAzQMDETNDYzIRUhFTMVIxUhFSEiLgI3FBY7AREjIgY0qJkBn%2F7q6OgBIP5TS3VSK1Z6dzAwd3oBS52oRs5H7kctVXtOfokCCIQAAP%2F%2FAFf%2F9AIuAzICJgAYAAAABwDhAUIAAP%2F%2FAFf%2F9AIuAzICJgAYAAAABwDjAUIAAP%2F%2FAFf%2F9AIuAzICJgAYAAAABwDlAUIAAP%2F%2FAFf%2F9AIuAy0CJgAYAAAABwDqAUIAAP%2F%2F%2F%2F8AAAHdAzICJgAcAAAABwDjAO4AAAACACEAAAJKApAADAAbAFkAuAAARVi4ABsvG7kAGwAQPlm4AABFWLgAFi8buQAWAAQ%2BWbkAAAAB9LgAGxC5AAYAAfS6AAoAGwAWERI5uAAKL7kACQAB9LgAChC4ABjQuAAJELgAGdAwMSUyNjU0JisBFTMVIxUTMhYVFA4CKwERIzU3EQEOc3Nzc0uVlVGYnihOckqoT09Ein19hNwv%2FQJMqJ1Oe1UtAUErBAEgAAAAAAIAWgAAAhUCkAAQABkAOQC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAQLxu5ABAABD5ZuwAZAAEADgAEK7sAAgABABgABCswMRMzFTMyHgIVFA4CKwEVIzcyNjU0JisBEVpTdjZaPyMjQFk2dlO%2FVlNUVWwCkG4ULkk2NE0yGJbaQEdHNv78AP%2F%2FADr%2F9AG3AsoCJgAeAAAABwDgAQ0AAP%2F%2FADr%2F9AG3AsoCJgAeAAAABwDiAQ0AAP%2F%2FADr%2F9AG3AsoCJgAeAAAABwDkAQ0AAP%2F%2FADr%2F9AG3Aq0CJgAeAAAABwDmAQ0AAP%2F%2FADr%2F9AG3Aq4CJgAeAAAABwDpAQ0AAP%2F%2FADr%2F9AG3AtcCJgAeAAAABwDrAQ0AAAADADr%2F9ALrAfIADgBAAEcAmwC4AABFWLgAEi8buQASAAg%2BWbgAAEVYuAAYLxu5ABgACD5ZuAAARVi4ADIvG7kAMgAEPlm4AABFWLgALC8buQAsAAQ%2BWbgAMhC5AAMAAfS6ADgAMgASERI5uAA4L7kACgAB9LoAHwAYACwREjm4AB8vuAAsELkAJQAB9LgAEhC5AD0AAfS4ABgQuQBEAAH0uAAfELkARwAB9DAxNxQWMzI2Ny4BJzUOAwM%2BATMyFhc%2BATMyHgIVFAchHgMzMjY3Fw4BIyImJw4BIyImNTQ2NzQuAiMiBgcFNCYjIgYHizEkIlAhCAoBOlEzFzwiYDY2Rg8dUTItRS8YA%2F7FARkoNh8jOBseIEwyPVIcMmUvPlGOmAgXJh4oSB0CMzs4M0kHhCokJyQTNRwZCBYeJwEYFik3MDA3IDxVNBwSJj4sGBcRORQeNyQtLkhCUFURFywiFSAUZEtQU0gAAAD%2F%2FwAu%2FysBsAHyAiYAIAAAAAcA7QEQAAD%2F%2FwAu%2F%2FQBygLKAiYAIgAAAAcA4AEJAAD%2F%2FwAu%2F%2FQBygLKAiYAIgAAAAcA4gEJAAD%2F%2FwAu%2F%2FQBygLKAiYAIgAAAAcA5AEJAAD%2F%2FwAu%2F%2FQBygKuAiYAIgAAAAcA6QEJAAD%2F%2FwAMAAAAvALKAiYAZwAAAAYA4HsAAAD%2F%2FwA6AAAA6gLKAiYAZwAAAAYA4nsAAAD%2F%2F%2F%2F6AAAA%2FALKAiYAZwAAAAYA5HsAAAD%2F%2F%2F%2F0AAABAgKuAiYAZwAAAAYA6XsAAAAAAQBSAAAApAHmAAMAJQC4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAACLxu5AAIABD5ZMDETMxEjUlJSAeb%2BGgAA%2F%2F8AUgAAAdcCrQImACsAAAAHAOYBJAAA%2F%2F8ALv%2F0AfACygImACwAAAAHAOABDwAA%2F%2F8ALv%2F0AfACygImACwAAAAHAOIBDwAA%2F%2F8ALv%2F0AfACygImACwAAAAHAOQBDwAA%2F%2F8ALv%2F0AfACrQImACwAAAAHAOYBDwAA%2F%2F8ALv%2F0AfACrgImACwAAAAHAOkBDwAAAAMALv%2FpAfAB%2FQAJABMALgBJALgAAEVYuAApLxu5ACkACD5ZuAAARVi4ABwvG7kAHAAEPlm6AAAAHAApERI5uQACAAH0ugAKACkAHBESObgAKRC5AAwAAfQwMTcWMzI%2BAjU0LwEmIyIOAhUUFwEeARUUDgIjIicHJzcuATU0PgIzMhYXNxeyJzYfNScVGBslOB81JhYXASQZHSU%2BUS1PPDElNhkdJT5RLSZIHTIkXScbMUQpQy8nKBsxRSlDLgEaIFc2PF9BIjE8HUEgVTY9X0IiGRk9HQAAAAMALv%2F0AyEB8gATADwAQwBxALgAAEVYuAAZLxu5ABkACD5ZuAAARVi4ADgvG7kAOAAEPlm5AAUAAfS4ABkQuQAPAAH0uAAZELgAH9C4ADgQuAAz0LoAJgAfADMREjm4ACYvuAAzELkALAAB9LgAHxC5AEAAAfS4ACYQuQBDAAH0MDE3FB4CMzI%2BAjU0LgIjIg4CBzQ%2BAjMyFhc%2BATMyHgIVFAchHgMzMjY3Fw4BIyImJwYjIi4CJTQmIyIGB4IUJDIeHjIkFBQkMh4eMiQUVCQ8UCw4XhocWTYtRjAZA%2F7BARkpNx8jOhseIE4yOV4cOXosTzwjAqs%2BODNKB%2FIqRDEbGzFEKipFMhsbMkUqPV9CIj48OUEgPFU0HBImPiwYFxE5FB5AOXkiQV9gS1BTSAABAFL%2F9AIjAtIANwBkALgAAEVYuAADLxu5AAMAEj5ZuAAARVi4ADcvG7kANwAEPlm4AABFWLgAGS8buQAZAAQ%2BWboADQAZAAMREjm5ACAAAfS6ACMAGQADERI5ugAvABkAAxESObgAAxC5ADIAAfQwMRM0NjMyHgIVFA4CFRQeBBUUDgIjIiYnNx4BMzI2NTQuBDU0PgI1NCYjIgYVESNSZl4nPSoVHCMcHSwzLB0WKjslKkQfIRozHSoqHSwzLB0bIRwpKjY7UgIDXnEXKDUeJjUsKRoYIBkaJDYoIDYoFxoXOhYVMCAdJhwZIC0jIjAsLiAmMU1O%2FgwAAP%2F%2FAEv%2F9AHOAsoCJgAyAAAABwDgARAAAP%2F%2FAEv%2F9AHOAsoCJgAyAAAABwDiARAAAP%2F%2FAEv%2F9AHOAsoCJgAyAAAABwDkARAAAP%2F%2FAEv%2F9AHOAq4CJgAyAAAABwDpARAAAP%2F%2FAAz%2FLwHHAsoCJgA2AAAABwDiAPIAAP%2F%2FAAz%2FLwHHAq4CJgA2AAAABwDpAPIAAAACADX%2F9AHlAtoAFAA4AFkAuAAARVi4ADMvG7kAMwASPlm4AABFWLgAHS8buQAdAAQ%2BWbsAJwABAAsABCu6ADAALQADK7gAHRC5AAAAAfS4AC0QuAAV0LgAMBC4ADPcuAAwELgANtAwMSUyPgI1NCYnLgEjIg4CFRQeAhMeARUUDgIjIi4CNTQ%2BAjMyFhcuAScHJzcmJzceARc3FwEPIjIiEQEBIUIiITQkExYnMms8TB85TzEqTjwkIDdLLCZGGg43Jo0YfzQ8JiRGII4YOB00SSwOHA0sHhgsOyImPSsYAiU9qHc8Y0cnID1XNjNTOyAgIj5cJkkpQSggNBQsG0kpAAAAAAIAUv8zAfsCyAAWACcAVwC4AABFWLgACC8buQAIAAg%2BWbgAAEVYuAACLxu5AAIAEj5ZuAAARVi4AAEvG7kAAQAGPlm4AABFWLgAEi8buQASAAQ%2BWbkAGgAB9LgACBC5ACQAAfQwMRcjETMVBz4BMzIeAhUUDgIjIiYnFzUeATMyPgI1NC4CIyIGB6RSUgEgTCgwSTIZIjpMKiNCIQEhPhgeMyUVDh8xIh8%2FJM0DlcJTGiUjQVs5PmFEIxwaU5UcFxsxSC0oQi8aIiAAAAEAHgAAAlsC1AAoAHwAuAAARVi4ABIvG7kAEgAIPlm4AABFWLgAJS8buQAlABI%2BWbgAAEVYuAAOLxu5AA4ABD5ZuAAlELkAAgAB9LgAEhC4ACHQuAAG0LgAEhC5AA8AAfS4AAvQuAAH0LgADhC4AArQuAASELgAEdC4ACUQuAAW0LkAHAAB9DAxASYjIh0BMxUjESMRIxEjESM1NzU0NjMyFhcHJiMiBh0BMzU0NjMyFhcCSh0aRWdnUspSQkJLTBgvEhEeIyQoykVJFykRAoUMXk1D%2Fl0Bo%2F5dAaM%2BBUBMWAoIPg0zMD5NS1YJBwAAAAEAHv%2F0AkUC1AArAIkAuAAARVi4ABAvG7kAEAAIPlm4AABFWLgAFC8buQAUABI%2BWbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4AAMvG7kAAwAEPlm4ABAQuQANAAH0uAAJ0LgAEBC4AA%2FQuAAPL7gAFBC5ABoAAfS4ABAQuAAe0LgAItC4AAkQuAAj0LgAAxC5ACgAAfQwMSUOASMiLgI1ESMRIxEjNTc1NDYzMhYXByYjIh0BMzczFTMVIxEUFjMyNjcCRRQvFyc1IQ6uUkJCRUkXKRESGxxEsgpEhIQiKg0eDAYHCxgqPCQBDf5dAaM%2BBU1LVgkHPwxeTYiIQ%2F7yLTEIBQAAAwAg%2F%2FQCUgKcAA0AGwBJAIwAuAAARVi4ADQvG7kANAAQPlm4AABFWLgAIi8buQAiAAQ%2BWbgAAEVYuAAcLxu5ABwABD5ZugA%2FAB8AAyu4ACIQuQAFAAH0ugAIAB8APxESOboACwAiADQREjm4AAsvuAAR3LgANBC5ABkAAfS6ACwACwARERI5ugA8AAsAERESOboARgAfAD8REjkwMTcUHgIzMjY3LgEnDgETFBYXPgM1NCYjIgYBLgEnDgEjIi4CNTQ%2BAjcuATU0PgIzMhYVFA4CBx4BFz4BNzMOAQceARdwFCMvGyI%2BHTBZIyMvTREOFikfEh0hJSwBfyNMKCZdOi1JNR0VJC8ZFBcWKDgiPUQaKjUbIFcvHi8PTRQ4JyI%2BG68bLSARHBkqZDUcPQEtGzoeDx8hJRYdKzb9yQolHCIpGzBDKCE2LicRKU0kITgqGEg6IDYvKRQzXicpYDlBdjQXIAgAAAAAAgAs%2F%2FQBxQKKAAsAHQA1ALgAAEVYuAAGLxu5AAYADj5ZuAAARVi4AAAvG7kAAAAEPlm5AAwAAfS4AAYQuQAWAAH0MDEXIiY1NDYzMhYVFAYnMj4CNTQuAiMiDgIVFBb5YWxsYWBsbGAcLSESEiEtHBwuIRJFDKyhoaiooaGsQh9BZUZGZD8eHj9kRox%2FAAAAAQBPAAABtwJ%2BAAwAQwC4AABFWLgABy8buQAHAA4%2BWbgAAEVYuAAMLxu5AAwABD5ZuQABAAH0uAAHELkABAAB9LkAAgAB9LgAARC4AAnQMDE3MxEjNT4BNzMRMxUhT5J0LEEaP4T%2BmEQB1jUIFxD9xkQAAAABACQAAAHEAooAHQA9ALgAAEVYuAAPLxu5AA8ADj5ZuAAARVi4ABwvG7kAHAAEPlm5ABoAAfS4ABfQuAAA0LgADxC5AAgAAfQwMTc%2BAzU0JiMiBgcnPgEzMhYVFA4CBz4BOwEVIShIcEwoPD0oRBwvKFo%2FWWYnRV85GjgZuf5kMUh0Y1MnN0YtIC8sNWdVLVthaTsCBEcAAAEAGv%2F0Ab4CigAzAFMAuAAARVi4ABsvG7kAGwAOPlm4AABFWLgALi8buQAuAAQ%2BWbkAAwAB9LoACwAbAC4REjm4AAsvuQAMAAH0uAAbELkAFAAB9LoAJAAMAAsREjkwMTceATMyNjU0LgIjNTI%2BAjU0JiMiBgcnPgEzMh4CFRQGBxUeAxUUDgIjIi4CJ0QdTTk6ShUwTjkzRSsSOzMoQx0sJVk5KkYzHEA0HTImFSE5TCwmPzQpEIQeLj82HC8iEj8SICwZLzYkHTQjLRYpPCc6ShQEBxspNiEqRC8ZDxkgEgAAAAIAEQAAAdUCfgAJABQAVwC4AABFWLgAEi8buQASAA4%2BWbgAAEVYuAANLxu5AA0ABD5ZuwAOAAEAAAAEK7gAEhC4AATcuAAAELgACdC4AA4QuAAL0LgACRC4ABDQuAAAELgAE9AwMSU1NDY3Iw4BDwEFIxUjNSE1ATMRMwEwAwIEDBoOlQFtV07%2B4QERXFfyuRpHGhcsF9pCsLA2AZj%2BdAABABn%2F9AHBAn4AJgBHALgAAEVYuAAQLxu5ABAADj5ZuAAARVi4ACEvG7kAIQAEPlm5AAMAAfS6ABcAEAAhERI5uAAXL7gAC9y4ABAQuQASAAH0MDE3HgEzMj4CNTQmIyIGBycTIRUjBz4BMzIeAhUUDgIjIi4CJ0EcTTgdMyYWSj4hLx0sFQE%2F9xEXLh0pSDYfJDxNKiY%2FMykQgR0sFSY2IUJKFBMcATNHvQwOGDFLNDRQNx0PGB8RAAAAAAIAMP%2F0AckCigANAC4AQwC4AABFWLgAKy8buQArAA4%2BWbgAAEVYuAAhLxu5ACEABD5ZuwAZAAEACAAEK7gAIRC5AAAAAfS4ACsQuQARAAH0MDElMj4CNTQmIyIGBx4BEy4BIyIOAgc%2BATMyFhUUDgIjIi4CNTQ%2BAjMyFhcBDBgoHhE6PB5HIAhHwBQ3HiE8LhwBHlAnU2MeNEQnL1A7IihEVzA0Sxs1FCUzID9IJy1eYQHeFxscQGdMJStiYy5LNh4mTXNNYIdVJycdAAEALAAAAccCfgAPADMAuAAARVi4AAcvG7kABwAOPlm4AABFWLgAAC8buQAAAAQ%2BWbgABxC5AAUAAfS4AAnQMDEzPgM3ITUhFQ4DByOxBBgrQy%2F%2BwgGbOUcqEwRVWpaHfkJHM0iEiZldAAAAAAMAKf%2F0AcgCigAPAB0ARQBXALgAAEVYuAAsLxu5ACwADj5ZuAAARVi4AEEvG7kAQQAEPlm5AAUAAfS6AA0AQQAsERI5uAANL7gAENC4ACwQuQAWAAH0uAANELgAI9y4ABAQuAA23DAxNxQeAjMyNjU0LgInDgE3PgE1NCYjIgYVFB4CBzQ%2BAjc1LgE1ND4CMzIeAhUUDgIHFR4DFRQOAiMiLgJzFSUyHThFHDA%2FIiYztCAjOjUtOhgpNeEVISsXIzYcMEInKkIvGREZHw8VKB8THjZMLi1NNyCrGywhEj4yHywhGw4aRYUdQCMwQTgvHSkgGcQfNSshDAQZRzMlPCsYGS0%2FJRkuKCALBAwfJzIgJD4uGhovQAACACj%2F9AHAAooADQAuAEMAuAAARVi4ACEvG7kAIQAOPlm4AABFWLgAKy8buQArAAQ%2BWbsAAAABABkABCu4ACEQuQAGAAH0uAArELkAEQAB9DAxEzI2Ny4BIyIOAhUUFgceATMyPgI3DgEjIiY1ND4CMzIeAhUUDgIjIiYn6x9HIAhIPRcpHhE6ThQ3HiI8LhwBHlAoU2IeM0UmL1E7IShEVzAzTRoBNicuXmAUJTQfP0jLFxwcQWhNJixiYy5LNh4mTXNNYIdVJyYdAAABAEH%2F9AC4AHIACwAYALgAAEVYuAAJLxu5AAkABD5ZuAAD3DAxNzQ2MzIWFRQGIyImQSMZGCMjGBkjMh0jIx0bIyMAAAEAL%2F9WAMYAcgARABgAuAAARVi4AAUvG7kABQAEPlm4AAvcMDEXPgE1BiMiJjU0NjMyFhUUBgcvKjADBxgjJBkgJUY9ehM%2BKQEdHBsfNC1BYBoA%2F%2F8AQf%2F0ALgB2wInAIYAAAFpAAYAhgAA%2F%2F8AL%2F9WAMYB2wInAIYAAAFpAAYAhwAAAAIAVf%2F0AMwCngAFABEAGgC4AABFWLgADy8buQAPAAQ%2BWbkACQAB9DAxEyczBwMjBzQ2MzIWFRQGIyImaQJTAgs5HyMZGCMjGBkjAkBeXv6GlB0jIx0bIyMAAAAAAgBV%2F0gAzAHyAAUAEQAaALgAAEVYuAAPLxu5AA8ACD5ZuQAJAAH0MDEfASM3EzM3FAYjIiY1NDYzMha4AlMCCzkfIxgZIyMZGCNaXl4BepQdIyMdGyMjAAIAJv%2F0AXkCqgAbACcAKAC4AABFWLgAJS8buQAlAAQ%2BWbsAEQABAAoABCu4ACUQuQAfAAH0MDE3Jj4ENTQmIyIGByc%2BATMyFhUUDgQXBzQ2MzIWFRQGIyImoAYRHiciFzEwITsXLyBSNk5dGCMnIRIEXSIZGSMjGRkixic%2FNS4tLhsoOR8bKyQvVUshNjAvMjkjlB0jIx0bIyMAAAIAMP88AYMB8gAbACcAKAC4AABFWLgAJS8buQAlAAg%2BWbsACgABABEABCu4ACUQuQAfAAH0MDEBFg4EFRQWMzI2NxcOASMiJjU0PgQnNxQGIyImNTQ2MzIWAQkFEB4nIhcwMSE6FzAgUjZOXRgjJyASBF4jGBkjIxkYIwEgJz81Li0vGig4HhsrIzBVSyE2MC8yOSOUHSMjHRsjIwAAAAABAFABrwCoArIABQALALoAAgAEAAMrMDETJzMPASNTA1gDEDICVlxcpwAA%2F%2F8AUAGvAVgCsgAmAI4AAAAHAI4AsAAAAAEAOQGsALsCuAARAA0AuwAFAAEACwAEKzAxEw4BFTYzMhYVFAYjIiY1NDY3uyYmAwYUIR4XHiE2NAKRGTgrARoZGh0uLDxYHgAAAAABAD8BrwDBArsAEQANALsACwABAAUABCswMRM%2BATUGIyImNTQ2MzIWFRQGBz8mJQMFFSAeFx0iNzQB1Rk4LAEaGBoeLyw8Vx4AAAD%2F%2FwA5AawBawK4ACYAkAAAAAcAkACwAAD%2F%2FwA%2FAa8BcQK7ACYAkQAAAAcAkQCwAAD%2F%2FwA%2F%2F3AAwQB8AgcAkQAA%2FcEAAP%2F%2FAD%2F%2FcAFxAHwAJwCRAAD9wQAHAJEAsP3BAAAAAQAtAEIA2QG2AAYACwC6AAIABgADKzAxNzU3FwcXBy2IJHZ2JN0%2Bmx6cnhwAAAAAAQA2AEIA4gG2AAYACwC6AAIABQADKzAxNyc3FxUHJ6x2I4mJI%2FycHps%2BmxwAAAD%2F%2FwAtAEIBdwG2ACYAlgAAAAcAlgCeAAD%2F%2FwA2AEIBgAG2ACYAlwAAAAcAlwCeAAAAAQApANsBDwEaAAMADQC7AAEAAQACAAQrMDETMxUjKebmARo%2FAAAA%2F%2F8AKQDbAQ8BGgIGAJoAAAABACkA3wG3ARgAAwANALsAAQABAAIABCswMRMhFSEpAY7%2BcgEYOQAAAQApAN8C9wEYAAMADQC7AAEAAQACAAQrMDETIRUhKQLO%2FTIBGDkA%2F%2F8AQQEDALgBgQIHAIYAAAEPAAAAAQAoAI8BCAGAABMACwC6AAoAAAADKzAxNyIuAjU0PgIzMh4CFRQOApgXKB8SEh8oFxYpHxISHymPESAsGxstHxISHy0bGywgEQAAAAEADP%2BCAej%2FuQADAA0AuwAAAAEAAQAEKzAxBRUhNQHo%2FiRHNzcAAAABAFL%2FUAEJAtwADgALALoABgAAAAMrMDEXLgE1NDY3Fw4BFRQWFwfWPkZGPjM6OTk6M7Bk3oSE3WUYYNtzc9tgGAAAAAEAJv9QAN0C3AAOAAsAugAHAA0AAyswMRc%2BATU0Jic3HgEVFAYHJyY6OTk6Mz5GRj4zmGDbc3PbYBhl3YSE3mQYAAAAAQBe%2F2gBEQLEAAcAFwC7AAUAAQAGAAQruwABAAEAAgAEKzAxEzMVIxEzFSNes3V1swLEL%2F0CLwABAB%2F%2FaADRAsQABwAXALsAAAABAAUABCu7AAQAAQABAAQrMDEXESM1MxEjNZN0srJpAv4v%2FKQvAAEAIv9oARECxAAxACsAuwAAAAEAAQAEK7sAHAABAB0ABCu7ABAAAQAPAAQrugAoAA8AEBESOTAxBRUjIiY1ND4CNTQuAiM1Mj4CNTQmNTQ2OwEVIyIGFRQWFRQGBxUeARUUBhUUFjMBES07OgMDAwgTIhkZIhMICTo7LRspGwYcICAcBhspaS84TRsxLi4ZDxsWDjQOFRwOM1g3TTgvKjEuVDMxMwkECTQwM1QuMSoAAQAf%2F2gBDQLEADMAKwC7AAAAAQAxAAQruwAWAAEAEwAEK7sAIQABACIABCu6AAoAIgAhERI5MDEXMjY1NCY1NDY3NS4BNTQ2NTQmKwE1MzIeAhUUBhUUFhcVIg4CFRQeAhUUDgIrATU5KRsFGyAgGwUbKRosHiwdDgkkMhkhFAgDAwMOHSweLGkqMS5UMzA0CQQJMzEzVC4xKi8NHjMnN1gzHS8BNA4WGw8ZLi4xGyczHg0vAAAAAAEACv9gAVECxgADABgAuAAARVi4AAAvG7kAAAASPlm4AALcMDEBMwEjARU8%2FvU8Asb8mgABAFz%2FBgCWAu4AAwALALoAAQACAAMrMDETMxEjXDo6Au78GAABAA7%2FYAFUAsYAAwAYALgAAEVYuAAALxu5AAAAEj5ZuAAC3DAxEzMBIw47AQs7Asb8mgAAAgBc%2FwYAlgLuAAMABwALALoAAQAFAAMrMDETMxEjFxEjEVw6Ojo6Au7%2BNU3%2BMAHQAAAAAAEAOgGkAWgCyAAOABQAuAAARVi4AAUvG7kABQASPlkwMRM3JzcXNzMXNxcHFwcnB2I5YQ9mCTEJZw9hOCdHRwHBXiguGWxrGC4oXh1WVgAAAgAt%2F8ABxAKsAA8ARwAXALsALwABACgABCu7AEQAAQATAAQrMDElPgE1NC4CJw4BFRQeAhMuASMiBhUUHgQVFAYHHgEVFA4CIyImJzceATMyNjU0LgQ1NDY3LgE1ND4CMzIWFwFAHR8oPEcfHSAoPUdMGDYhKiUpPkc%2BKS8mDhAYKzsjNlgfMhk6KCgtKT1IPSkwJg8REyc4JjBNHcEOJiEiLCEcEhAoHyErIB0BaxQaJRobJB4eKz0uMDsWEScaHjIkFSYhLRgcKB0cJh4dKj0uLEAVECgaGi8kFSIXAAACACn%2FsAHQApAAAwAQACUAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgADi8buQAOABA%2BWTAxATMRIwMiLgI1ND4COwERAXxUVFc2XUMmJEFYNCwCkP0gATIZNVI5O1EzFv5SAAAAAwAx%2F%2FUCtwKNABMAJwBFADMAuwA6AAEAQQAEK7sALQABADQABCu4AC0QuAAj3LkABQAB9LgAQRC4ABncuQAPAAH0MDETND4CMzIeAhUUDgIjIi4CNxQeAjMyPgI1NC4CIyIOAhc0PgIzMhYXBy4BIyIGFRQWMzI2NxcOASMiLgIxNFh2QUF1WTQ0WXVBQXZYNC8sS2Q5OWRLLCxLZDk5ZEssZh8zQyQqOxgjFCkaN0NBNiAwFh4cPi0mQjIcAUNMelYuLlZ6TE17Vy8vV3tNQmtNKipNa0JBa0wpKUxrQStGMhohGCcUFUs7Qk0ZEyoYIRszSQAAAAAEABcBPwGQAskAEwAnADUAPQBXALgANC%2B4ACkvuAA0ELgAFNy5AAAAAfS4ACkQuAAe3LkACgAB9LoAMgA0ACkREjm4ADIvuQA2AAH0ugAvADYAMhESObgANBC4ADHQuAApELkAOwAB9DAxEyIuAjU0PgIzMh4CFRQOAicyPgI1NC4CIyIOAhUUHgIDMzIWFRQGBxcjJyMVIzcyNTQmKwEV0ydEMx4eM0QnJ0UzHh4zRScfNygXFyg3HyA2JxcXJzYoTCAuFBEuLiMpKUMrEhccAT8dNEgsLEg0HR00SCwsSDQdJRcqOyQjOysYGCs7IyQ7KhcBCB0kEh8GU0ZGZiIPEkMAAAIAM%2F9lAxwChgBFAFQAPwC7ADsAAQBBAAQruwAnAAEADwAEK7sASQABABYABCu7AB4AAQBQAAQruwAFAAEAMQAEK7oAIgBQAB4REjkwMTc0PgIzMh4CFRQOAiMiJicjDgEjIiY1ND4CMzIWFzM3MwcGMzI%2BAjU0LgIjIg4CFRQeAjMyNjcXBiMiLgIlFBYzMjY%2FAS4BIyIOAjNDc5dUTHlVLiU6RyIpOQUCGUAhM0UbMkcsGigOAgs3Jx5UGC8nGCNGaERDfmI7LVBtQC5SIhZVaUqAXzcBCCgeFS0aHQ4eFB4vIRHLZKR0PzBXekpCY0MiJiYdJ0hFKFNDKhcZKMh1HDVNMTxnSio3ZI5YSXJOKRkUMTMuW4ZXMCocH58XEyAyPAACACMAAAHTAooAGwAfAJsAuAAARVi4AAgvG7kACAAOPlm4AABFWLgADC8buQAMAA4%2BWbgAAEVYuAAWLxu5ABYABD5ZuAAARVi4ABovG7kAGgAEPlm7AAMAAQAAAAQruwAHAAEABAAEK7gABxC4AArQuAAHELgADtC4AAQQuAAQ0LgAAxC4ABLQuAAAELgAFNC4AAAQuAAY0LgAAxC4ABzQuAAEELgAHdAwMTcjNTM3IzUzNzMHMzczBzMVIwczFSMHIzcjByMTNyMHc1BXElVcFzUXhRg1GFFXElVcGTUYhBk22hKEEsw5lDq3t7e3OpQ5zMzMAQWUlAAAAP%2F%2FAFcBuADsAz4CBwC3AAABuAAA%2F%2F8AKAG4AUADSgIHALgAAAG4AAD%2F%2FwAjAawBPwNKAgcAuQAAAbgAAP%2F%2FACoBuAFQAz4CBwC6AAABuAAAAAIAI%2F%2F0AU0BkgALABcAKAC4AAYvuAAARVi4AAAvG7kAAAAEPlm5AAwAAfS4AAYQuQASAAH0MDEXIiY1NDYzMhYVFAYnMjY1NCYjIgYVFBa4RFFRRENSUkMmMDAmJzAwDGxkY2trY2RsM09OTk1NTk5PAAAAAQBXAAAA7AGGAAgAIgC4AAYvuAAARVi4AAgvG7kACAAEPlm4AAYQuQAAAAH0MDETIzU%2BATczESOsVSEsFDRAATQqBhMP%2FnoAAQAoAAABQAGSABoALAC4AA8vuAAARVi4ABkvG7kAGQAEPlm5ABcAAfS4AADQuAAPELkACAAB9DAxNz4DNTQmIyIGByc%2BATMyFhUUDgIHMxUhNC1GLhgoIxkqESYXQyg7RxYnNR%2Bl%2FvQlKUE2LxYmLCEYIyIqQD4cNDU4IDcAAAABACP%2F9AE%2FAZIAKgA%2BALgAFy%2B4AABFWLgAJy8buQAnAAQ%2BWboACgAJAAMruAAnELkAAwAB9LgAFxC5ABAAAfS6AB8ACQAKERI5MDE3HgEzMjY1NCYjNTI2NTQmIyIGByc%2BATMyHgIVFAYHHgEVFA4CIyImJ04SMh8gLkA5MzcnIBYoEScaPSkZLSIUJh4hMxYmMxwwShdhGx8kIiIjKSgeHCIbFCIdIw4bJxkjLw4IMScbKx8QKyEAAgAqAAABUAGGAAUAEABMALgADi%2B4AABFWLgACS8buQAJAAQ%2BWbsAAAABAAoABCu4AA4QuQACAAH0uAAAELgABdC4AAoQuAAH0LgABRC4AAzQuAAAELgAD9AwMTc1NyMPARcjFSM1IzU3MxUz3AQEMj3jOjqypEg6lkZtUWIuaGgh%2FfD%2F%2FwAlAQIBKgJUAgYAvQAA%2F%2F8AHgECAU4CVAIGAL4AAAACACUBAgEqAlQAGQAiADsAuAAAL7gAEC%2B7AAYAAQAdAAQruAAQELkACQAB9LgAABC4ABXQuAAAELkAGgAB9LoAFwAAABoREjkwMRMiJjU0NjcuASMiBgcnPgEzMhYdASMnIw4BJzI3NQ4BFRQWiC02X2gBGiMaNxQXGUUnPDcyBwQUMg0nK009HgECNCs1NwogKhUNKhAbRkDEJRIbMihVCSYcGhgAAAACAB4BAgFOAlQAEwAfABsAuAAKL7gAAC%2B5ABQAAfS4AAoQuQAaAAH0MDETIi4CNTQ%2BAjMyHgIVFA4CJzI2NTQmIyIGFRQWth83KhgYKjcfHzcqGBgqNx8qLi4qKi8vAQIXKz8oKD8rFxcrPygoPysXM0E1NkBANjVBAAAAAgApAa0BIwKtABMAHwAXALsAFAABAAAABCu7AAoAAQAaAAQrMDETIi4CNTQ%2BAjMyHgIVFA4CJzI2NTQmIyIGFRQWphktIxQUIy0ZGS0jFBQjLRkhKiohISoqAa0SIS8dHi8iEhIiLx4dLyESLi4jJS4uJSMuAAAAAgAaAGcB1wItACEANQAoALgAAEVYuAAMLxu5AAwACj5ZuwAnAAEAHgAEK7gADBC5ADEAAfQwMT8BLgE1NDY3JzcXNjMyFhc3FwceARUUBgcXBycOASMiJwc3FB4CMzI%2BAjU0LgIjIg4CGkARExMRQCxEMD8dOhdELEERFBQRQSxEFzodQC9EPBMgLBgYKyATEyArGBgsIBOUQRc6IyM7F0ItRiUTEkYtQhc7IyM6F0EtRRMTJkXiHjEkExMkMR4eMSQTEyQxAAABADT%2FkgG1AuwALQBdALgAAEVYuAAnLxu5ACcADj5ZuAAARVi4ABMvG7kAEwAEPlm4ACcQuQADAAH0ugAGABMAJxESObgAExC4ABDQuAATELkAGgAB9LoAHQAnABMREjm4ACcQuAAq0DAxAS4BIyIGFRQeBBUUBgcVIzUuASc3HgEzMjY1NC4ENTQ2NzUzFR4BFwF8HDUpLjYpPkk%2BKVNIPDBaICYgTS44Nyk%2BST4pT0I8MEMbAgwbHjQsJC4jIS9FNkhcCmVjBSsdORwnOC8oNSciLD8xQ1kLZGMFKh0AAAEANQAAAcUCigAsAFkAuAAARVi4ABUvG7kAFQAOPlm4AABFWLgAAi8buQACAAQ%2BWbkAAAAB9LoAJAAVAAIREjm4ACQvuAAK0LgAJBC5ACMAAfS4AAvQuAALL7gAFRC5ABwAAfQwMSUVITU%2BATU0JicjNTczLgE1ND4CMzIWFwcuASMiBhUUFhczFSMeARUUBgcVAcX%2BcTM3BANkQxIKERsxRCo2SxowEzAiNjkPCZ%2BSAgMgHkdHMhxfOQ4bDjQEID0gKkQwGisgLxceQTQgOyA4DhsPNUYfBAAAAAABABcAAAHaAn4AHQCEALgAAEVYuAAdLxu5AB0ADj5ZuAAARVi4AAkvG7kACQAOPlm4AABFWLgAFC8buQAUAAQ%2BWboABAAdABQREjm6ABkAHQAUERI5uAAZL7kADAAB9LgAGRC4AA3QuAAZELgAGNC4ABgvuAAQ0LgAGBC5ABUAAfS4ABHQuAAZELkAGwAB9DAxExceARczPgE%2FATMDMxUjFTMVIxUjNSM1MzUjNTMDbU4PHRAEER0PTlSkjqOjo1KioqKNowJ%2BqyFDIyNDIav%2BwC9BMJ6eMEEvAUAAAQAX%2F%2FQB6wKKADUAbQC4AABFWLgAGS8buQAZAA4%2BWbgAAEVYuAADLxu5AAMABD5ZuwAtAAEALgAEK7gALhC4AAnQuAAtELgACtC4AC0QuAAl3LgAEtC4ACUQuQAkAAH0uAAT0LgAGRC5ACAAAfS4AAMQuQAyAAH0MDElDgEjIi4CJyM1NyY0NTwBNyM1Nz4DMzIWFwcuASMiBgczFSEGFBUcARczFSMeATMyNjcB6yFUNy1NPCkJQDsBATtACSo%2FUzEtThoxFTIgQlEM%2Fv7%2BAQHa1Q1NPiU3GlEsMSFAWzsrBAkSCQgQCCwFO11BIi0hLxohYlcxBw4IChMJMFVgJCMAAAACAD3%2F3wHGAo0ABgAlADcAuwAiAAEACgAEK7sAGgABACEABCu4ACEQuAAA0LgAIhC4AAbQuAAKELgADdC4ABoQuAAX0DAxAQ4BFRQWHwEOAQcVIzUuAzU0PgI3NTMVHgEXBy4BJxE%2BATcBBjdAPjnAHUgnNC1KNR0fNkoqNCxAFygULRogNBQB3Q1YQkNYDQkaIgNnaAUlPFQ1NFI8JQZqZwIiFjQSFgL%2BqAIbEgAAAAH%2FWf%2F0APsCnAADABgAuAAARVi4AAAvG7kAAAAEPlm4AAHcMDEHATMBpwFqOP6WDAKo%2FVgAAAD%2F%2F%2F9Z%2F%2FQA%2BwKcAgYAxgAA%2F%2F8AI%2F%2F0AxYCnAAnALYAAAEKACcAxgFxAAAABwC2AckAAAAA%2F%2F8AQP%2F0Au0CnAAnALf%2F6QEKACcAxgFbAAAABwC6AZ0AAAAA%2F%2F8AQP%2F0AvkCnAAnALf%2F6QEKACcAxgFGAAAABwC4AbkAAAAA%2F%2F8AI%2F%2F0AvwCnAAnALkAAAEKACcAxgGAAAAABwC6AawAAAAAAAEAIgBoAc8CLAALAB0AuwADAAEAAAAEK7gAAxC4AAbQuAAAELgACNAwMRMjNTM1MxUzFSMVI9i2tkG2tkEBKz7Dwz7DAAAAAAEAIgErAc8BaQADAA0AuwABAAEAAgAEKzAxEyEVISIBrf5TAWk%2BAAABADIAfgG%2FAhUACwALALoABQAJAAMrMDE%2FASc3FzcXBxcHJwcym5ssm5osm5ssmpurn54tn58tnp8toKAAAAAAAwAiAGABzwIzAAsAFwAbACEAuwAPAAEAFQAEK7sABgABAAAABCu7ABkAAQAaAAQrMDETIiY1NDYzMhYVFAYDNDYzMhYVFAYjIiYnIRUh%2BRcgIBcXHx9OIBcXHx8XFyCgAa3%2BUwHIHhgXHh4XGB7%2BzhceHhcYHh7rPgAA%2F%2F8AIgDBAc8B1AImAM0AawAGAM0AlgAAAAEAIgCDAc8CFQAJABUAugABAAgAAyu6AAUACAABERI5MDETJRUPARUfARUlIgGt04aG0%2F5TAW2oR04yBDJOR6gAAAAAAQAiAIMBzwIVAAkAFQC6AAgAAQADK7oABQABAAgREjkwMQEFNT8BNS8BNQUBz%2F5T04aG0wGtASuoR04yBDJOR6gAAAACACIAAAHPAiwACwAPADgAuAAARVi4AA4vG7kADgAEPlm7AAMAAQAAAAQruAADELgABtC4AAAQuAAI0LgADhC5AAwAAfQwMRMjNTM1MxUzFSMVIwchFSHYtrZBtrZBtgGt%2FlMBMD6%2Bvj6xQT4AAAAAAQA8ARwBtQKeAAkAGgC4AABFWLgAAC8buQAAABA%2BWbkABQAB9DAxEzMTIy8BIw8BI9RJmEhBMQQyQUgCnv5%2BsIWFsAABACQBAQHNAZMAFwAnALsACAABAA8ABCu4AA8QuAAU3LkAAwAB9LgAC9C4AA8QuAAX0DAxEz4BMzIeAjMyNjcXDgEjIi4CIyIGByQbQiAeLykmFRYmES4bQiAeLykmFRYmEQE5MCoaIBodICIwKRogGh0gAAEAIgBoAc8BaQAFAA0AuwABAAEABAAEKzAxEyERIzUhIgGtQv6VAWn%2B%2F8MAAQBS%2FzgB1AHmABcAJAC4AABFWLgAES8buQARAAQ%2BWbkABQAB9LoAFAARAAUREjkwMRMzERQWMzI2NxEzESMnIw4BIyImJxcVI1JSLDAmOSNSRAcCHUUqHS4RBVIB5v7XRT0nKwFZ%2FhpMJy0RGlqR%2F%2F8AoAI9AVACygAHAOABDwAAAAD%2F%2FwDOAj0BfgLKAAcA4gEPAAAAAP%2F%2FAI4CPQGQAsoABwDkAQ8AAAAA%2F%2F8AhAJDAZoCrQAHAOYBDwAAAAD%2F%2FwCIAkwBlgKuAAcA6QEPAAAAAP%2F%2FAJQCWQGKApIABwDoAQ8AAAAA%2F%2F8AsgIeAWwC1wAHAOsBDwAAAAD%2F%2FwDA%2FysBWQADAAcA7QEVAAAAAAAB%2F5ECPQBBAsoAAwAYALgAAEVYuAADLxu5AAMADD5ZuAAB3DAxAzMXI29WWj8Cyo0AAAAAAf99AsIAMwMyAAMACwC6AAEAAwADKzAxAzMXI4NeWEUDMnAAAf%2B%2FAj0AbwLKAAMAGAC4AABFWLgAAC8buQAAAAw%2BWbgAAtwwMQMjNzMCP1pWAj2NAAAAAAH%2FzQLCAIMDMgADAAsAugACAAAAAyswMRMjNzMSRVheAsJwAAH%2FfwI9AIECygAHADcAuAAARVi4AAYvG7kABgAMPlm4AABFWLgAAy8buQADAAw%2BWbgABhC4AADcugAFAAAABhESOTAxAzMXIycjByMiRF88QwRDPALKjVtbAAAAAf94AsIAiAMyAAcAFwC6AAYAAQADK7gABhC4AAfcuAAD0DAxAzczFyMnIweIYFBgQ0MEQwLCcHBERAAAAf91AkMAiwKtABYAQQC4AABFWLgAAC8buQAAAAw%2BWbgAAEVYuAAOLxu5AA4ADD5ZuwATAAEAAwAEK7gADhC5AAgAAfS4AAMQuAAL0DAxAz4BMzIeAjMyNzMOASMiLgIjIgcjiwQoJRMgGxgMHAkuBCglEx8bGA0cCS4CQy09EBMQMy09EBMQMwAAAAAB%2F28CxwCRAzMAFwAjALoAAAARAAMrugAFAAwAAyu4AAAQuAAI0LgADBC4ABTQMDETIi4CIyIGByM%2BATMyHgIzMjY3Mw4BPBQgGxoODhYELgUsJBQgGxoODhYELgUsAscQFBAaGi89EBQQGxkuPgAAAf%2BFAlkAewKSAAMACwC4AAMvuAAB3DAxAzMVI3v29gKSOQAAAv95AkwAhwKuAAsAFwAoALgAAEVYuAAALxu5AAAADD5ZuAAG3LgAABC4AAzQuAAGELgAEtAwMQMiJjU0NjMyFhUUBjMiJjU0NjMyFhUUBlYWGxsWFRwclxUcHBUWGxsCTBwVFRwcFRUcHBUVHBwVFRwAAAAC%2F3kCywCHAy0ACwAXABsAugAGAAAAAyu4AAAQuAAM0LgABhC4ABLQMDEDIiY1NDYzMhYVFAYzIiY1NDYzMhYVFAZWFhsbFhUcHJcVHBwVFhsbAsscFRYbGxYVHBwVFhsbFhUcAAAAAAL%2FowIeAF0C1wALABcAEwC6AAwAAAADK7oABgASAAMrMDERIiY1NDYzMhYVFAYnMjY1NCYjIgYVFBYpNDQpKTQ0KRQcHBQUHBwCHjMqKjIyKiozJR4aGR4eGRoeAAAAAAL%2FowK7AF0DawALABcAEwC6AAwAAAADK7oABgASAAMrMDERIiY1NDYzMhYVFAYnMjY1NCYjIgYVFBYpNDQpKDU1KBMcHBMUHBwCuy8pKDAwKCkvJBsZFxwcFxkbAAAAAAH%2Fq%2F8rAEQAAwARABMAugACABEAAyu6AAsACgADKzAxJzMHHgEVFA4CByc%2BATU0JicTNRkYIxgoNRwIKDEhHgM1CCAfFiAWDQMpBRcUFBUIAAAAAAH%2Fq%2F8rAEQAAwARABMAugARAAIAAyu6AAoACwADKzAxJzMHHgEVFA4CByc%2BATU0JicTNRkYIxgoNRwIKDEhHgM1CCAfFiAWDQMpBRcUFBUIAAAA%2F%2F8AQwAAALUCtAIGACYAAAABAAAA8QBaAAcAcQAFAAEAAAAAAAoAAAIAAXMAAwABAAAAYgBiAGIAYgCwARYBZgGiAeACFgJ0ArAC0AMCA0oDcAPUBCQEeATABTIFhgX0BiAGZgaiBxgHdAeyB%2BgIXgjaCSoJogoEClILAgtQC4QLzAwUDEYMxg0cDXAN7A5iDqoPFg9gD7YP8hBoEMIRGBFOEVoRZhFyEX4RihGWEfoSBhISEh4SKhI2EkISThJaEmYSchJ%2BEooSlhKiEq4TOhOQE5wTqBO0E8ATzBQkFGgUdBSAFIwUmBSkFLAVZhVyFX4VihWWFaIVrhW6FcYV0hXyFf4WChYWFiIWLhY6FqYXPhe8F8gX1BfgF%2BwX%2BBgEGIYY7BlkGeYamhriGxwbaBvaHCociBzuHSQdsB4WHjgeYh5uHnoeqB7UHyIfch%2BIH5Qfuh%2FgH%2Bwf%2BCACIBAgKCBAIEwgWCBsIHQgiCCcIKYgzCDgIQIhJCFAIVwhtCIQIioiPCJWInAimCMIIzojtiQ4JMolSCVSJVwlZiVwJaolziYOJmomrCa0JrwnECdOJ4on7iheKMwpOim8KhQqMCo4KkoqXCpuKoAqpCq4KtgrFisiK0QrZiueK8Ar%2BiwQLEgsUixcLGYscCx6LIQsjiyYLLIsxCzeLPAtHi08LYItui3MLgYuOi5qLpouxC7uLu4u9gABAAAAAQzMdwyY3F8PPPUACQPoAAAAAM2XgKUAAAAAzZfjFv9A%2Fr0EiAO4AAAACQACAAAAAAAAAo0AWQAAAAAAygAAAMoAAAIgAAMCTABaAjsANAJnAFoCDwBaAe4AWgJpADQCjABaAQcAWgHgAB8CQwBaAeYAWgLXAFoChwBaApgANAJAAFoCmAA0AkUAWgIWACoCGAAcAoUAVwIDAAADEgAXAgEADwHc%2F%2F8CGwAtAgAAOgIrAFIByAAuAisALwHwAC4BJAAeAfgALQIgAFIA9gBDAPf%2F2AHvAFIA%2FwBSAz0AUgIjAFICHgAuAisAUgImAC8BWwBSAaMAHAFSABgCIABLAdMADALOABgBvgAOAdMADAGpAB8CIAADAiAAAwIgAAMCIAADAiAAAwIgAAMDNgAIAjsANAIPAFoCDwBaAg8AWgIPAFoBBwAAAQcAUAEH%2F%2FsBB%2F%2F8AocAWgKYADQCmAA0ApgANAKYADQCmAA0ApgAMgNPADQChQBXAoUAVwKFAFcChQBXAdz%2F%2FwJ%2BACECRwBaAgAAOgIAADoCAAA6AgAAOgIAADoCAAA6AxEAOgHIAC4B8AAuAfAALgHwAC4B8AAuAPYADAD2ADoA9v%2F6APb%2F9AD2AFICIwBSAh4ALgIeAC4CHgAuAh4ALgIeAC4CHgAuA0cALgJAAFICIABLAiAASwIgAEsCIABLAdMADAHTAAwCIQA1AisAUgI%2BAB4CUgAeAmEAIAHxACwB8QBPAfEAJAHxABoB8QARAfEAGQHxADAB8QAsAfEAKQHxACgA%2BQBBAPkALwD5AEEA%2BQAvASEAVQEhAFUBqQAmAakAMAD5AFABqQBQAPkAOQD5AD8BqQA5AakAPwD5AD8BqQA%2FAQ8ALQEPADYBrQAtAa0ANgE3ACkBNwApAeAAKQMgACkA%2BQBBATAAKAH0AAwBLwBSAS8AJgEvAF4BLwAfAS8AIgEvAB8BXgAKAPEAXAFeAA4A8QBcAaIAOgHxAC0CMAApAugAMQGnABcDTwAzAfEAIwFvAFcBbwAoAW8AIwFvACoBbwAjAW8AVwFvACgBbwAjAW8AKgFZACUBbQAeAVkAJQFtAB4BSwApAfEAGgHxADQB8QA1AfEAFwHxABcB8QA9AFb%2FWQBW%2F1kDOAAjAw0AQAMoAEADHAAjAfEAIgHxACIB8QAyAfEAIgHxACIB8QAiAfEAIgHxACIB8QA8AfEAJAHxACICJgBSAh4AoAIeAM4CHgCOAh4AhAIeAIgCHgCUAh4AsgIeAMAAAP%2BRAAD%2FfQAA%2F78AAP%2FNAAD%2FfwAA%2F3gAAP91AAD%2FbwAA%2F4UAAP95AAD%2FeQAA%2F6MAAP%2BjAAD%2FqwAA%2F6sAygAAAPYAQwABAAAD2P7vAAAEqv9A%2FxYEiAABAAAAAAAAAAAAAAAAAAAA8QADAccBkAAFAAACigJYAAAASwKKAlgAAAFeADIBIAAAAgsFAwMEAwICBCAAAAcAAAABAAAAAAAAAABBREJFAEAAAP7%2FAu7%2FBgAAA9gBESAAAZMAAAAAAeAClAAAACAAAwAAAAIAAAADAAAAFAADAAEAAAAUAAQB0gAAADwAIAAEABwAAAANAC8AOQBAAFoAYAB6AH4AvwDPAN8A7wD%2FATEBUwLGAtoC3CAUIBogHiAiIDogRCB0IKwiEiIV%2F%2F8AAAAAAA0AIAAwADoAQQBbAGEAewCgAMAA0ADgAPABMQFSAsYC2gLcIBMgGCAcICIgOSBEIHQgrCISIhX%2F%2FwAB%2F%2FUAAABMAAD%2FwwAA%2F70AAAAA%2F3gAAP93AAD%2FNgAA%2FhT%2BBP3%2F4IkAAAAA4H3gXeCC4EHgGN673rIAAQAAAAAAOAAAAFQAAABeAAAAZgBsAAAAqAAAAMQAAADgAAAAAAAAAAAA2gDeAAAAAAAAAAAAAAAAAAAAAAADAIoAjwCxAMEAyAB7AI4AoQCiAKsAzACHAJoAhgCnAIgAiQDRANAA0gCMALAAowCpAKQA1ACgANgApQCoAKYA1QDvAIsAxQDCAMAAwwCqAKwA3ACuALsAmADWAJsArwDdAL8A0wCzALQA2QDXAK0AngDfALIAvACZAMkAygDLAI0AVQBIAEkASgBLAEwATQDOAE4AUABRAFIAUwBUAFYAcAB3AGgAaQBqAGsAbABtAM8AbgBxAHIAcwB0AHUAeAB2AE8AbwCQAJEAlACSAJMAlQAAuAAALEu4AAlQWLEBAY5ZuAH%2FhbgARB25AAkAA19eLbgAASwgIEVpRLABYC24AAIsuAABKiEtuAADLCBGsAMlRlJYI1kgiiCKSWSKIEYgaGFksAQlRiBoYWRSWCNlilkvILAAU1hpILAAVFghsEBZG2kgsABUWCGwQGVZWTotuAAELCBGsAQlRlJYI4pZIEYgamFksAQlRiBqYWRSWCOKWS%2F9LbgABSxLILADJlBYUViwgEQbsEBEWRshISBFsMBQWLDARBshWVktuAAGLCAgRWlEsAFgICBFfWkYRLABYC24AAcsuAAGKi24AAgsSyCwAyZTWLBAG7AAWYqKILADJlNYIyGwgIqKG4ojWSCwAyZTWCMhuADAioobiiNZILADJlNYIyG4AQCKihuKI1kgsAMmU1gjIbgBQIqKG4ojWSC4AAMmU1iwAyVFuAGAUFgjIbgBgCMhG7ADJUUjISMhWRshWUQtuAAJLEtTWEVEGyEhWS0AsAArALIBAQIrAbICAgIrAbcCRDYqIRQACCu3A0A2KiEUAAgrALcBUUM0JBcACCsAsgQIByuwACBFfWkYREuwYFJYsAEbsABZsAGOAAAUAEQAUgBWAAAADP8zAAwB5gAMAgYADAI%2BAAwCfgAMApAADALIAAwAAAAHAFoAAwABBAkAAQAeAAAAAwABBAkAAgAOAB4AAwABBAkAAwBMACwAAwABBAkABAAeAAAAAwABBAkABQCCAHgAAwABBAkABgAqAPoAAwABBAkADgBIASQAUwBvAHUAcgBjAGUAIABTAGEAbgBzACAAUAByAG8AUgBlAGcAdQBsAGEAcgAxAC4AMAA1ADAAOwBBAEQAQgBFADsAUwBvAHUAcgBjAGUAUwBhAG4AcwBQAHIAbwAtAFIAZQBnAHUAbABhAHIAOwBBAEQATwBCAEUAVgBlAHIAcwBpAG8AbgAgADEALgAwADUAMAA7AFAAUwAgAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAwADAAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA3ADAAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA1ADkAMAAwAFMAbwB1AHIAYwBlAFMAYQBuAHMAUAByAG8ALQBSAGUAZwB1AGwAYQByAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBhAGQAbwBiAGUALgBjAG8AbQAvAHQAeQBwAGUALwBsAGUAZwBhAGwALgBoAHQAbQBsAAAAAgAAAAAAAP%2B1ADIAAAAAAAAAAAAAAAAAAAAAAAAAAADxAAABAgEDAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQCtAMkAxwCuAGIAYwCQAGQAywBlAMgAygDPAMwAzQDOAGYA0wDQANEArwBnAJEAsADWANQA1QBoAOsA6QDtAGoAaQBrAG0AbABuAKAAbwBxAHAAcgBzAHUAdAB2AHcA1wB4AHoAeQB7AH0AfAChALEAiQB%2FAH4AgACBAOwAugDqAO4BBAEFAAkAEwAUABUAFgAXABgAGQAaABsAHAARAA8AHQAeAAQAowAiAKIACgAFALYAtwC0ALUAxADFAL4AvwCpAKoAEAEGALIAswDDAIcAQgALAAwAPgBAAF4AYAASAF8APwDoAA0AhgCIAIsAigAjAAYBBwEIAQkBCgELAQwBDQEOAQ8AnQCeARABEQCDAL0ABwCFAJYBEgCEALwBEwAIAPUA9AD2AA4A7wDwALgAIAAfACEAkwBBAGEApAEUAEMAjQDYANkAjgDaAN0A3gEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUETlVMTAJDUgNmX2YDZl90B3VuaTAwQUQIb25lLnN1cHMIdHdvLnN1cHMKdGhyZWUuc3Vwcwlmb3VyLnN1cHMJemVyby5kbm9tCG9uZS5kbm9tCHR3by5kbm9tCnRocmVlLmRub20JZm91ci5kbm9tBmEuc3VwcwZvLnN1cHMERXVybwd1bmkyMjE1B3VuaTAwQjUHdW5pMDMwMAt1bmkwMzAwLmNhcAd1bmkwMzAxC3VuaTAzMDEuY2FwB3VuaTAzMDILdW5pMDMwMi5jYXAHdW5pMDMwMwt1bmkwMzAzLmNhcAd1bmkwMzA0B3VuaTAzMDgLdW5pMDMwOC5jYXAHdW5pMDMwQQt1bmkwMzBBLmNhcAd1bmkwMzI3C3VuaTAzMjcuY2FwB3VuaTAwQTAFaS50cmsAAAAAAAAB%2F%2F8AAgABAAAADAAAAAAAAAACAAgABAA3AAEAPgA%2BAAEATgBPAAEAZwBnAAEAbgBvAAEAeAB4AAEAeQB6AAIA2gDaAAEAAQAAAAoAMABEAAJERkxUAA5sYXRuABoABAAAAAD%2F%2FwABAAAABAAAAAD%2F%2FwABAAEAAmtlcm4ADmtlcm4ADgAAAAEAAAABAAQAAgAAAAIACgFIAAEAJgAEAAAADgBGAGwAggCkALoAzADiAPABAgEIARIBIAEqATQAAQAOAAkAEwAZABsAMwA1AFYAcACLAI0AngCnAKkAwgAJABkABAAb%2F%2BgAM%2F%2FsADX%2F5gBlABIAZgAkAJ7%2F8gCn%2F7sArwAUAAUAG%2F%2FoADX%2F8gCe%2F%2FgAp%2F%2B1AK8AHgAIADP%2F9wA1%2F%2FEAYwAKAGUAKABmADMAnv%2F1AKf%2F0QCvADUABQAz%2F%2FAANf%2F2AJ7%2F2ACr%2F%2FYArwAIAAQAGf%2F8AKf%2F7ACr%2F%2FgArwAtAAUAGf%2F5ABv%2F9gCe%2F%2BwAq%2F%2FxAK8AJgADAKf%2FxgCp%2F9gAq%2F%2FCAAQAM%2F%2FwADUABgCp%2F%2BYAr%2F%2FdAAEAGf%2FgAAIAGf%2FGABv%2F1gADABn%2F5gAb%2F%2BYANf%2FsAAIAZgAHAPAAGQACABn%2FywAz%2F%2BwAAgB%2F%2F%2FoAgf%2F6AAIUjAAEAAAU3hYsADkALgAA%2F%2Bf%2Fq%2F%2Fj%2F%2Bf%2FtwAhAEn%2F%2BgANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fw%2F9MAAAAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2FwAAAAAD%2FxgAAAAAAAAAAAAAAAP%2Fo%2F%2Bj%2F2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Bp%2F9j%2F2P%2BnAAAAOwAAAAAAAAAA%2F8L%2F3QAA%2F9T%2F3f%2FC%2F%2BsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9gAZAAAAAAAAAAD%2F2AAAAAAAAP%2FoAAD%2F4f%2BwABkACf%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F2P%2FxAAD%2F8gAAAAD%2F%2FP%2Fy%2F8kAAAAAAAD%2F%2BP%2F2AAD%2F9gAAAAAAAP%2Fy%2F%2Fr%2Fov%2FY%2F%2Bj%2FsAAAAAAAAAAA%2F%2FIABP%2Fm%2F8z%2Fxv%2FyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FoAAD%2F%2FP%2FyAAAAAP%2F2%2F%2FIAAAAAAAD%2F8v%2F8AAAAAAAAAAD%2F8AAA%2F%2FYAAP%2FiAAD%2F7AAAAAAAAAAAAAD%2F%2Bv%2F8AAAAAAAA%2F%2FL%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2B7%2F8v%2F8%2F%2Fn%2F7AAA%2F%2Fb%2F8gAAAAAAAP%2Fo%2F%2Fb%2F4wAAAAAAAP%2F2AAD%2F8v%2F2AAAAAP%2FMAA4AAAAAAAAAAP%2F8%2F%2FwAAAAAAAD%2F8gAA%2F%2Bb%2F8gAAAAAAAAAAAAAAAAAAAAD%2F7AAA%2F%2FwAAAAAAAAAAAAAAAAAAP%2F8AAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5AAAAAAACAAAAAAAAAAA%2F%2FIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fw%2F%2FL%2F9v%2FwAAD%2F9v%2Fw%2F%2Bz%2F7gAA%2F%2Fb%2F8gAA%2F%2BoAAAAA%2F%2FkAAAAA%2F%2Bb%2F8v%2FsAAD%2F0gAAAAAAAAAAAAD%2F9AAA%2F%2Fn%2F7P%2Fu%2F%2Bz%2F8P%2Fi%2F%2FYAAAAA%2F%2FIAAAAAAAAAAAAA%2F4j%2F4%2F%2FI%2F7T%2F%2FAAA%2F97%2F3P%2ByAAAAA%2F%2FqAAD%2F5gAA%2F%2FL%2F9AAAAAD%2F7P%2F2%2F2j%2FsP%2Bk%2F6QAAAAAAAAAAP%2B0AAD%2F4P%2Bn%2F7L%2F3AAA%2F8r%2F3gAAAAAAAAAAAAAAAAAAAAD%2F7AAA%2F%2Fr%2F7AAAAAAAAAAAAAAAAP%2F2AAD%2F7AAAAAAAAAAA%2F9gAAAAAAAD%2F3gAAAAAABv%2FyAAAAAAAA%2F%2Fb%2F7wAAAAAAAAAAAAAAAAAAAAAAAP%2F5AAAAAAAAAAAAAP%2FsAAAAAP%2Fy%2F%2FYAAAAAAAAAAAAA%2F%2Fb%2F8v%2F2AAD%2F9gAA%2F%2Fb%2F7gAAAAAAAP%2F2AAD%2F9gAOAAAAAAAAAAD%2F8v%2F2AAAAAAAAAAD%2F8v%2Fa%2F%2BIAAAAA%2F%2FL%2F8gAAAAAAAAAA%2F%2BwAAAAA%2F%2FkAAAAAAAAAAAAAAAAAAP%2FyAAAAAAAAAAAAAP%2FyAAAAAAAA%2F%2B4AAP%2F4AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F8v%2B3AAD%2F3v%2FfAAD%2Flv%2FY%2F9n%2Fyv%2Fo%2F7f%2F7v%2B%2B%2F4IAAP%2Fu%2F9IAAAAA%2F8AAFP%2BnAAAAAAAAAAD%2F7AAAAAAAAP%2Ff%2F9n%2FsP%2FR%2F9L%2Fxf%2B1%2F9gAAAAAAAAAAAAAAAAAAP%2Fy%2F%2FYAAAAAAAAAAP%2Fw%2F%2B7%2F9gAAAAD%2F%2FAAAAAD%2F0QAAAAAAAAAAAAAAAAAA%2F%2BEAAAAAAAD%2F9v%2F2AAAAAAAAAAD%2F%2BQAAAAAAAP%2F8AAAAAAAAAAAAAAAAAAAAAAAAAAD%2F8wAAAAAAAAAA%2F94AAP%2F6%2F%2Fr%2F%2Bv%2FwAAAAAP%2B%2FAAAAAAAAAAAAAAAAACf%2F4wAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2Fz%2F9gAAAAD%2F9v%2FwAAAAAAAAAAD%2F8v%2F2AAAAAP%2FEAAD%2F6P%2FyAAn%2Fpf%2Fy%2F%2FD%2F5v%2Fy%2F70AAP%2FX%2F5wAAP%2Fy%2F94AAAAA%2F9IAIf%2B9AAAAAAAAAAAAAP%2F5AAAAAP%2Fy%2F97%2Fvv%2FJ%2F9j%2F1%2F%2FR%2F9P%2F5wAAAAAAAAAA%2F%2Fb%2F%2Bv%2Fy%2F%2FIAAP%2Fw%2F%2FAAAAAA%2F%2Fr%2F4v%2F2%2F%2Bz%2F8P%2Fs%2F%2Bv%2F3wAA%2F%2FL%2F6QAAAAD%2FxAAUAAAAAAAAAAD%2F%2BgAAAAAAAAAA%2F%2FAAAP%2Fe%2F94AAAAAAAAAAAAAAAAAAAAA%2F%2BgAAP%2F8%2F%2BgAAAAAAAAAAP%2FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F8oAAAAAAAAAAAAAAAAAAP%2FwAAD%2F9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7AAAAAD%2F6P%2F2AAAABgAGAAAAAAAAAAAAAAAA%2F%2FYAAP%2FrAAAAAAAAAAAAAAAA%2F%2FIAFAAAAAAAAAAA%2F%2FIAAAAAAAAAAAAGAAj%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FmAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F5b%2F7P%2Fe%2F6QAAAAa%2F%2Br%2F7P%2BYAAAAAAAAAAAAAAAAAAD%2F%2BAAAAAD%2F5AAA%2F3YAAAAAAAAAAAAAAAAAAP%2B4AAAAAP%2Bg%2F6z%2F3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F6AAA%2F%2Fb%2F5v%2F2AAAABQAF%2F%2FYAAAAA%2F%2BwAAAAA%2F%2FIAAAAA%2F%2BwAAP%2FyAAD%2F3v%2Fs%2F%2FwAAAAAAAAAAAAA%2F%2FAAAP%2F5AAAAAAAF%2F%2FkABgAAAAAAAAAEAAAAAAAAAAAAAAAuAAAALgAu%2F%2FL%2F9gAAAAAAIv%2FOAAAAAAAAAAD%2F7AAA%2F%2FYAAAAAAAD%2F8QAAAD7%2F7ABL%2F%2FIADgAAAAAANgAhABoAKAAiAA3%2F%2FP%2FyAAAAAP%2F8%2F%2FIAAAAAADEAAAAA%2F%2BYAAAAA%2F%2FIAAAAl%2F%2Fz%2F%2FAAAAAAAAAAAAAAAAP%2FwAAD%2F8gAAAAAAAAAA%2F94AAP%2F4AA4AMAAAAAAAAAAAAAD%2F3AAAAAD%2F%2FAAAAAAAAAAAAAD%2F8gAAAAAADgAAAAD%2F6gAAAAD%2F9f%2F2%2F%2FYAAAAA%2F%2BYADgAAAAAAAAAA%2F%2FYAAP%2FuAAAAAP%2Fy%2F%2FL%2F8gAA%2F%2Bb%2F%2BQAAAAAAAAAAAAAAAP%2F0AAAAAAAA%2F%2Fz%2F1P%2FmAAAAAP%2F5%2F%2FkAAAAAAAAAAP%2FoAAAAAP%2FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FeAAAAAAAAAAAAAAAAAAD%2F9gAA%2F%2FkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F8cAAAAA%2F9IAAAAA%2F%2Fz%2F%2FP%2Fm%2F%2FYAAAAAAAAAAP%2FyAAAAAAAAAAAAAAAAAAD%2F5gAA%2F%2FkAAAAAAAAAAP%2Ft%2F%2Fz%2F9AAA%2F%2FL%2F%2FP%2FvAAYAAAAAAAD%2F%2BgAAAAAAAAAAAAAAAAAAAAAACf%2FfAAAAAAAAAAD%2Frf%2FJAAAAAAAA%2F9X%2F8v%2FfAAAAAAAAAAAAAAAAAAAAAAAAAAD%2Fy%2F97AAD%2F%2BQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2Fb%2F%2BgANABP%2F%2Bf%2FH%2F%2B0AAP%2F2AAD%2F5wAA%2F%2Fb%2FyQAAAAAAAAAAAA3%2F8AA%2B%2F94AAAAAAAAAAAAAAAAAAAAiABMAAP%2Fo%2F%2BwAAP%2F2%2F%2FYAAAAAAAAAAAAA%2F%2BgAAAAA%2F%2BwAAAAAAAAAAP%2F1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F88AAAAAAAAAAAAAAAAAAP%2F2AAD%2F9QAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAD%2F8gAAAAD%2F%2FP%2F2AAAAAAAAAAAADgAAAAAAAAAA%2F%2B4AAP%2F2AAAAAAAA%2F%2FoAAAAA%2F%2BwAIgAOAAAAAAAAAAAAAP%2FmAAAAAAAAAAD%2F5v%2FuAAAAAAAAAAAADgAAAAAAAP%2FsAAAAAP%2FiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FoAAAAAAAAAAAAAAAAAAD%2F8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BgAAAAA%2F%2FUAAP%2F2AAAAAAAA%2F9f%2F%2FAAAAAAAAP%2F2AAD%2F%2FP%2FiAAAAAAAA%2F%2FgAAAAAACb%2F%2BAAAAAAAAP%2F8%2F%2FIAAAAAAAAAAAAAAAAAAAAAAAD%2F7wAAAAAAAAAAAAD%2F7AAAAAD%2F%2BQAA%2F%2FYAAAAAAAD%2F3QAAAAAAAAAA%2F%2BwAAP%2F8%2F9gAAAAAAAAAAAAAAAAALf%2FyAAAAAAAA%2F%2Fz%2F%2FAAAAAAAAAAAAAAAAAAAAAAAAP%2FoAAAAAAAAAAAAAP%2FmAAAAAP%2F8%2F%2FoAAAAA%2F%2FwAAAAAAAAAAAAAAAD%2F6QAA%2F%2FYAAAAAAAD%2F9gAAAAD%2F%2BAAZAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FwAAP%2FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAP%2FoAAD%2F8P%2FwAAD%2FuP%2Fb%2F%2Bz%2F4v%2F2%2F94AAP%2Fy%2F3YAAP%2F2%2F%2FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fs%2F%2Bz%2F7P%2FiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F6AAAAAAAAAAAAAAAAAAA%2F9kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FoAAAAAP%2F2%2F%2BIAAAAAAAAAAP%2BQ%2F87%2F9v%2ByAAD%2F1QAA%2F%2Bj%2FbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fn%2F%2BwAAP%2F2%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F2AAAAAP%2FrAAD%2F9%2F%2F3AAD%2Fv%2F%2Fy%2F%2FD%2F7f%2F2%2F%2BoAAP%2Fx%2F7f%2F%2FQAA%2F%2BIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7f%2Fr%2F%2Bz%2F9P%2Fn%2F%2B0AAAAAAAAAAP%2Fs%2F%2FYAAAAAAAAAAP%2Fy%2F%2FD%2F%2BQAAAAP%2F8gAA%2F%2B%2F%2F9v%2Fw%2F%2Fn%2F%2BwAA%2F%2FD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F%2FP%2F5AAAAAP%2Fl%2F%2FIAAAAA%2F%2FL%2F%2BQAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5wAA%2F%2Fz%2FvgAAAAAAAAAAAAAAAAAAAAD%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2Bb%2F5gAAAAAAAP%2F8%2F%2FIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fy%2F%2FD%2FyAAAAAAAAAAAAAAAAP%2F8AAAAAAAA%2F%2FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FD%2Fvf%2FQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F9gAAP%2Fv%2F9MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fv%2F%2FkAAAAAAAAAAP%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F0gAA%2F%2Fb%2FyQAAAAAAAAAAAAAAAAAA%2F%2BL%2F7gAAAAAAAAAA%2F%2BIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2Bv%2F8gAAAAAAAAAA%2F%2BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F43%2FyQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FwAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FfAAAAAAAAAAD%2FfP%2FGAAAAAAAA%2F97%2F8P%2FfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F%2BQAAAAAAAAAAAAAAAAAAAAD%2FzwAAAAAAAAAAAAAAAP%2FsAAAAAP%2F5AAD%2F9gAAAAAAAP%2Fd%2F%2FUAAP%2F8AAD%2F7AAA%2F%2Fz%2F2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F5AAAAAAAA%2F%2BgAAAAAAAAAAAAA%2F98AAAAA%2F%2FEAAAAAAAD%2F8gAAAAAAAP%2F8AAD%2F9v%2F2AAD%2F7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FL%2F6AAAAAAAAP%2FsAAAAAAACAA0ABAAgAAAAIgAlAB0AKAAoACEAKgBiACIAZwB2AFsAeAB6AGsAhgCTAG4AlgCeAHwAoQChAIUAowCjAIYApQClAIcApwCnAIgAqQCpAIkAAQAEAKQABgAHAAgADAAmACcACQAoACkAKgAKAAsAKAAoAAwAKwAMAA0ADgAPABAALQARAC4AEgATABQAHQAVAAAAGAAZABoAHAAAAAAAGwAAABwAHAAdAB0AIgAfACAAIQAiADcAIwA4ACQAJQAGAAYABgAGAAYABgAmAAgAJgAmACYAJgApACkAKQApACgADAAMAAwADAAMAAwAJgAQABAAEAAQABIADAAsABQAFAAUABQAFAAUABgAFQAYABgAGAAYAAAAAAAAAAAAIgAcAB0AHQAdAB0AHQAdABgAMQAiACIAIgAiACQAJAAAAB0AGQAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXABcAFgAWAAEAAgA0AAQANQA1AB4ANgAeADYAAAAAADIAMwAyADMAMAAwADAAMAADAAAAAAAvAAAALwAAAC8AAAAFAAIASAAEAAQADAAGAAYADwAKAAoADwANAA0AEwASABIADwAUABQADwAWABYADQAXABcAAgAYABgAAwAZABkAHwAaABoABAAbABsAIAAcABwABQAdAB0ADgAeAB4AEAAgACIAEgAjACMAEQAkACQABgAmACYAFAAnACcABwAqACsAKAAsACwAEgAtAC0AKAAuAC4AEgAvAC8AKAAwADAAKQAxADEAFQAyADIAFgAzADMAJAA0ADQACAA1ADUAJQA2ADYACQA3ADcAKgA4AD0ADAA%2FAD8ADwBJAE8ADwBQAFMAAwBUAFQABQBVAFUAAQBXAF0AEABeAGIAEgBjAGYAFABnAGgAKABpAG8AEgBxAHQAFgB1AHYACQB5AHoAEQCGAIcACwCIAIkALACKAIoAHACLAIsAHQCMAIwAIQCNAI0AHgCOAI8AIgCQAJAAIwCRAJEACgCSAJIAIwCTAJMACgCWAJYAJwCXAJcAKwCYAJgAJwCZAJkAKwCaAJ0AJgCeAJ4AGQCiAKIALQCkAKQALQCmAKYALQCnAKcAGwCpAKkAGACrAKsAFwCvAK8AGgDwAPAAFAABAAAACgBgAJ4AAkRGTFQADmxhdG4AGgAEAAAAAP%2F%2FAAEAAAAWAANBWkUgAB5DUlQgAChUUksgADIAAP%2F%2FAAEAAQAA%2F%2F8AAgACAAUAAP%2F%2FAAIAAwAGAAD%2F%2FwACAAQABwAIbGlnYQAybGlnYQAybGlnYQAybGlnYQAybGlnYQAybG9jbAA4bG9jbAA4bG9jbAA4AAAAAQABAAAAAQAAAAIABgAaAAEAAAABAAgAAQAGAMoAAQABACYABAAAAAEACAABABoAAQAIAAIABgAMAHkAAgAjAHoAAgAxAAEAAQAj%29%20format%28%27truetype%27%29%3B%0A%7D%0A%40font%2Dface%20%7B%0Afont%2Dfamily%3A%20%27Source%20Sans%20Pro%27%3B%0Afont%2Dstyle%3A%20normal%3B%0Afont%2Dweight%3A%20700%3B%0Asrc%3A%20url%28data%3Aapplication%2Ffont%2Dsfnt%3Bbase64%2CAAEAAAARAQAABAAQR0RFRgNEA3IAAG3kAAAAQEdQT1Pl%2B8B5AABuJAAAGVZHU1VC8WfWVwAAh3wAAADgT1MvMlvgllUAAGSUAAAAYGNtYXDzMPm1AABk9AAAAeZjdnQgDdkBaQAAaJwAAAAoZnBnbQZZnDcAAGbcAAABc2dhc3D%2F%2FwADAABt3AAAAAhnbHlm8iwszwAAARwAAF1UaGVhZP4ts7AAAGB0AAAANmhoZWEHuwObAABkcAAAACRobXR4wFMeHQAAYKwAAAPEbG9jYRMoKywAAF6QAAAB5G1heHADCwJCAABecAAAACBuYW1lJBs%2BoAAAaMQAAAHccG9zdGxQSG8AAGqgAAADOXByZXBFzLadAABoUAAAAEsABQBQAAACYgKUAAMABgAJAA8AFQBnALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAIvG7kAAgAEPlm6AAUAAgAAERI5ugAGAAIAABESOboABwACAAAREjm6AAgAAgAAERI5uQAKAAH0ugANAAIAABESObgAABC5ABIAAfQwMRMhESETJxEhEQcXLwEjDwETPwEjHwFQAhL97sFfAU1eCicpBCknVCogmB8rApT9bAFUuv6NAXO6%2BU1iYk0BQ187O18AAv%2F6AAACQwKMAAkAEQBUALgAAEVYuAAOLxu5AA4AED5ZuAAARVi4AAwvG7kADAAEPlm4AABFWLgAES8buQARAAQ%2BWboABQAMAA4REjm6AAsADAAOERI5uAALL7kACQAB9DAxAScuAScjDgEPARcjByMTMxMjAWEPDhoNBAwZDhCpxyiWzLHMnAEOPDFuMzRtMTxzmwKM%2FXQAAAAAAwBNAAACPAKMABUAHgAmAFsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgAFS8buQAVAAQ%2BWboAJAAAABUREjm4ACQvugAMACQAFhESObgAABC5AB0AAfS4ACQQuQAeAAH0uAAVELkAJgAB9DAxEzMyHgIVFA4CBxUeARUUDgIrARMyNjU0JisBFRMyNTQmKwEVTd8zV0ElDRoqHEZHJ0VcNfLYNjEyNEZTeTw9UwKMDyY%2BLxYsJh4HBA1KQjJILxcBhSslJSCV%2Fu1ZKyerAAAAAAEALv%2F0AjACmAAfADkAuAAARVi4AAUvG7kABQAQPlm4AABFWLgAGy8buQAbAAQ%2BWbgABRC5AAwAAfS4ABsQuQAUAAH0MDETND4CMzIWFwcuASMiDgIVFBYzMjY3Fw4BIyIuAi4yVXE%2FPWMhURkzIiI7LBlWSCg8GFEpaT0%2FcFQwAUJRf1guMyJbFxodNk4xZW8gGlkwMCtUfQAAAAIATQAAAkwCjAAMABkANQC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAMLxu5AAwABD5ZuQANAAH0uAAAELkAFwAB9DAxEzMyHgIVFA4CKwE3Mj4CNTQuAisBEU24S3hWLi5UdUjArypEMBsbMEQqHAKMJk96VFR8USh3FjFQOzpPLxT%2BYgAAAAABAE0AAAHvAowACwBNALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAsvG7kACwAEPlm4AAAQuQADAAH0ugAHAAAACxESObgABy%2B5AAUAAfS4AAsQuQAIAAH0MDETIRUhFTMVIxUhFSFNAZj%2B%2B97eAQ%2F%2BXgKMfIN7lnwAAAAAAQBNAAAB6AKMAAkAQwC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAJLxu5AAkABD5ZuAAAELkAAwAB9LoABwAAAAkREjm4AAcvuQAFAAH0MDETIRUhFTMVIxUjTQGb%2Fvji4pMCjHyXfP0AAAAAAQAu%2F%2FQCRAKYACMATQC4AABFWLgABS8buQAFABA%2BWbgAAEVYuAAfLxu5AB8ABD5ZuAAFELkADAAB9LgAHxC5ABQAAfS6ABsABQAfERI5uAAbL7kAGQAB9DAxEzQ%2BAjMyFhcHLgEjIg4CFRQWMzI2NzUjNTMRDgEjIi4CLjNXdUJFZSBRGDUqJj8uGVtcFCYMbO4jckVCc1YxAUJRf1guNCFbFxodNk4xZW8KCnB4%2FtQhLitUfQAAAAEATQAAAlUCjAALAEkAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgACy8buQALAAQ%2BWboACQAAAAsREjm4AAkvuQADAAH0uAAAELgABNC4AAsQuAAH0DAxEzMVMzUzESMRIxEjTZPhlJThkwKM%2B%2Fv9dAEQ%2FvAAAQBNAAAA4AKMAAMAJQC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAADLxu5AAMABD5ZMDETMxEjTZOTAoz9dAAAAAEAEP%2F0AbMCjAARACsAuAAARVi4AAcvG7kABwAQPlm4AABFWLgADi8buQAOAAQ%2BWbkAAwAB9DAxNx4BMzI2NREzERQOAiMiJid0EjAZKCmTGTNPNktlIrQhIDFBAaf%2BTS9UPiQ6PAAAAQBNAAACbAKMAAwAWwC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAELxu5AAQAED5ZuAAARVi4AAwvG7kADAAEPlm4AABFWLgACC8buQAIAAQ%2BWboAAgAAAAwREjm6AAkABAAIERI5MDETMxEzEzMDEyMDBxUjTZMEwqLF6aGfTJMCjP71AQv%2B%2FP54ARNkrwAAAQBNAAAB4gKMAAUAKwC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAFLxu5AAUABD5ZuQACAAH0MDETMxEhFSFNkwEC%2FmsCjP3wfAAAAAEATQAAAq0CjAAdAG8AuAAARVi4AAAvG7kAAAAQPlm4AABFWLgABi8buQAGABA%2BWbgAAEVYuAAdLxu5AB0ABD5ZuAAARVi4AAkvG7kACQAEPlm6AAMABgAJERI5ugAQAAYACRESOboAEwAdAAYREjm6ABYAAAAdERI5MDETMxMXMzcTMxEjNTQ%2BAjcjDwEjLwEjHgMdASNNnG0nBCdqm4kEBgYDBDZkO2Q0BAMGBQSHAoz%2B23JyASX9dO8YOjs5GJf9%2FZcYOTs6GO8AAAEATQAAAkwCjAATAFsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgACC8buQAIABA%2BWbgAAEVYuAATLxu5ABMABD5ZuAAARVi4AAsvG7kACwAEPlm6AAQACwAIERI5ugAOAAAAExESOTAxEzMTFzMuAT0BMxEjAycjHgEdASNNl6pABAUNjJeqQAQFDYwCjP68kDSAOub9dAFFjjZ8OucAAAACAC7%2F9AJ%2BApgAEwAfADUAuAAARVi4AAovG7kACgAQPlm4AABFWLgAAC8buQAAAAQ%2BWbkAFAAB9LgAChC5ABoAAfQwMQUiLgI1ND4CMzIeAhUUDgInMjY1NCYjIgYVFBYBVkJtTisrTm1CQm1OKytObUJDTk5DQ05ODC9YflBQfVUtLVZ9T1B%2BWC9%2Fc2Nibm5iY3MAAgBNAAACOgKMAA4AFgBDALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AA4vG7kADgAEPlm6AAwAAAAOERI5uAAML7kADwAB9LgAABC5ABUAAfQwMRMzMh4CFRQOAisBFSMTMjU0JisBFU3uNV1FKClGXDRbk%2BV4PTtSAowVMVE7OVQ2Gt0BUmgzKsUAAAACAC7%2FTgKgApgACwAqAEsAuAAARVi4ABwvG7kAHAAQPlm4AABFWLgAEi8buQASAAQ%2BWbsAJwABAA8ABCu4ABIQuQADAAH0uAAcELkACQAB9LgAEhC4ACTQMDETFBYzMjY1NCYjIgYBDgEjIiYnLgM1ND4CMzIeAhUUBgceATMyNjfFTkNDTk5DQ04B2xI7JmiPIzRVPCArTm1CQm1OK3BfF04qFSUOAUlpdHRpYm5u%2FbgJDGBNCzdWcUVQfVUtLVZ9T4SqGyIbBwUAAAACAE0AAAJTAowACAAYAFQAuAAARVi4AA4vG7kADgAQPlm4AABFWLgADC8buQAMAAQ%2BWbgAAEVYuAAJLxu5AAkABD5ZuwABAAEACgAEK7gADhC5AAgAAfS6ABcAAQAKERI5MDETMzI2NTQmKwETJyMVIxEzMh4CFRQGBxPgTDo9PTpMzn1Rk%2Bs0W0QoPzWUAWAxMDAm%2Fenr6wKMFC9OOkhdF%2F77AAEAI%2F%2F0AgoCmAAxAEkAuAAARVi4ABYvG7kAFgAQPlm4AABFWLgALi8buQAuAAQ%2BWbkAAwAB9LoACwAWAC4REjm4ABYQuQAdAAH0ugAlAC4AFhESOTAxNx4BMzI2NTQuAi8BLgM1ND4CMzIWFwcuASMiBhUUHgIfAR4BFRQOAiMiJid3I1UpLi0NGSMVVRkvJRYiPlUzOW8qSyBAJyYtDxskFVQ8RSE%2FXDpAfzK3HiYiHQ8WEQ8JJAogKzkkKEc1HiwqXRkbHxwPFREPCSIYVEUpSTchLy8AAAEAGQAAAhMCjAAHADMAuAAARVi4AAIvG7kAAgAQPlm4AABFWLgABy8buQAHAAQ%2BWbgAAhC5AAAAAfS4AAXQMDETIzUhFSMRI8yzAfqzlAIQfHz98AAAAAABAEn%2F9AJPAowAEQA8ALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAkvG7kACQAQPlm4AABFWLgADi8buQAOAAQ%2BWbkABQAB9DAxEzMRFBYzMjY1ETMRFAYjIiY1SZQ6Nzc8joN%2Bf4YCjP6TYExMYAFt%2FqKklpakAAAB%2F%2FkAAAIzAowADQBAALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAovG7kACgAQPlm4AABFWLgADS8buQANAAQ%2BWboABQAAAA0REjkwMQMzEx4BFzM%2BATcTMwMjB5xODxcPBA4YDk2WxLECjP7QNmU2NmU2ATD9dAABAA4AAAMgAowAIQB2ALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAovG7kACgAQPlm4AABFWLgAFC8buQAUABA%2BWbgAAEVYuAAhLxu5ACEABD5ZuAAARVi4ABcvG7kAFwAEPlm6AAUAAAAhERI5ugAPABQAFxESOboAHAAhAAoREjkwMRMzEx4BFzM%2BATcTMxMeARczPgE3EzMDIwMuAScjDgEHAyMOly0GDgYEChMKRn1GChMKBAcNBy2NdLlACA0FBAYNCD22Aoz%2BzzNnNDRnMwEx%2Fs8yZzU1ZjMBMf10ASgmTSQkTSb%2B2AAAAAEACwAAAiwCjAAZAFsAuAAARVi4AAEvG7kAAQAQPlm4AABFWLgACy8buQALABA%2BWbgAAEVYuAAZLxu5ABkABD5ZuAAARVi4AA8vG7kADwAEPlm6AAYAAQAZERI5ugATAA8ACxESOTAxEwMzFx4BFzM%2BAT8BMwMTIycuAScjDgEPASPAqqQ5CxYOBAsVCjSdqbSkQQwXDgQLFgs9ngFPAT17FzMfHzMXe%2F68%2FriFGjMeHjMahQAAAAAB%2F%2FgAAAIVAowADwBAALgAAEVYuAABLxu5AAEAED5ZuAAARVi4AAsvG7kACwAQPlm4AABFWLgADy8buQAPAAQ%2BWboABgABAA8REjkwMTcDMxceARczPgE%2FATMDFSO9xZ46DhkOBA4bDjuaxZPoAaSWJUUmJkUllv5c6AAAAQAkAAAB%2FAKMAAkAPQC4AABFWLgAAy8buQADABA%2BWbgAAEVYuAAILxu5AAgABD5ZuQAGAAH0uAAA0LgAAxC5AAEAAfS4AAXQMDE3ASE1IRUBIRUhJAEg%2FvsBuv7gASP%2BKFkBt3xZ%2Fkl8AAAAAgAv%2F%2FQB2QH8ABsAJQB2ALgAAEVYuAANLxu5AA0ACD5ZuAAARVi4ABcvG7kAFwAEPlm4AABFWLgAEi8buQASAAQ%2BWboAAwANABcREjm4AAMvuAANELkABgAB9LoAEwASAA0REjm4ABcQuQAfAAH0uAATELkAIgAB9LgAAxC5ACMAAfQwMTc0NjcuASMiBgcnPgEzMhYVESMnIw4BIyIuAjcUFjMyNjc1DgEvhJMCJCggQCQ0MGk7YGV4CwMgRyoiNiYVjB8aGiQUTzyKTlgPIScYFWEdJG1z%2FuQzHCMXKTYrGBcWFFcLKgAAAAACAEH%2F9AIWAr0AFgAhAIMAuAAARVi4AAAvG7kAAAASPlm4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAQLxu5ABAABD5ZuAAARVi4ABYvG7kAFgAEPlm6AAMABgAQERI5ugATABAABhESObgAExC5ABcAAfS4ABAQuQAaAAH0uAAGELkAHwAB9LgAAxC5ACEAAfQwMRMzFQc%2BATMyHgIVFA4CIyImJyMHIzceATMyNjU0IyIHQZMEHUMjLUgzGyM7SyghQx0EDHOTFCgTJjZWLCkCvaxMGh0kQV05QGRFJCAgNIwSDkVNhi0AAQAk%2F%2FQBvgH8ABwAOQC4AABFWLgABS8buQAFAAg%2BWbgAAEVYuAAYLxu5ABgABD5ZuAAFELkACwAB9LgAGBC5ABEAAfQwMTc0PgIzMhYXByYjIgYVFBYzMjY3Fw4BIyIuAiQqR14zLkoZQyMiNj4%2FMBssEjskWCk0WUIm%2BD5hQiMfGlsdTEFBTBYOXSAeI0JhAAAAAAIAJ%2F%2F0AfwCvQAWACMAgwC4AABFWLgABS8buQAFAAg%2BWbgAAEVYuAAKLxu5AAoAEj5ZuAAARVi4ABIvG7kAEgAEPlm4AABFWLgADS8buQANAAQ%2BWboACAASAAUREjm6AA4ABQASERI5uAASELkAGgAB9LgADhC5AB0AAfS4AAgQuQAeAAH0uAAFELkAIQAB9DAxNzQ%2BAjMyFhcnNTMRIycjDgEjIi4CNxQWMzI2NzUuASMiBicjOUsnKjYaBpN4CgQaRiQuSzUdly8rGCcSFCoUIzb4PWBDJBwYTKn9QzEaIyRDYD9KRBQZyxIOQwAAAAIAJP%2F0AeEB%2FAAbACIAUQC4AABFWLgABS8buQAFAAg%2BWbgAAEVYuAAXLxu5ABcABD5ZugANAAUAFxESObgADS%2B4ABcQuQARAAH0uAAFELkAHwAB9LgADRC5ACIAAfQwMTc0PgIzMh4CFRQGByEeATMyNxcOASMiLgIlNCYjIgYHJChBVC01TzUaBAL%2B1wpFMjU2MSZdLTVcRCYBQCYtIzUI%2BDxhQyQkQFczFCEJOTMhWRoeI0NgcSs2LzIAAQAYAAABdALJABgAVgC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAVLxu5ABUAEj5ZuAAARVi4AAovG7kACgAEPlm4ABUQuQACAAH0uAAGELkACQAB9LgADNC4AAYQuAAP0DAxASYjIgYdATMVIxEjESM1NzU0PgIzMhYXAVkcFxseWVmTQkITLEYyHzMRAksKISYec%2F6DAX1tBRsnRjQeDAYAAAADACL%2FLQIHAfwADgBDAE8AbQC4AABFWLgAIS8buQAhAAg%2BWbgAAEVYuAA%2FLxu5AD8ABj5ZuQADAAH0ugA2ACEAPxESObgANi%2B5AAkAAfS4ACEQuAAk0LgAJC%2B5ACUAAfS4ADYQuAAu0LgALi%2B5AEQAAfS4ACEQuQBKAAH0MDEXFBYzMjY1NCYrASImJwYHNDc1LgE1NDY3NS4BNTQ%2BAjMyFzMVIx4BFRQOAiMiJw4BFRQWOwEyFhUUDgIjIi4CEzI2NTQmIyIGFRQWmzwyMkAnJTMaIAwbeUcUGiAYGikiOUooLCG1TwcJHjVHKR0fCgghKlBcYSdIZkAsSzkg2x0nJx0dJyc%2BHB0jGhcQAwMYMDwoBA0oHxsxEQQSQywtQy0WDGsLIhQrPykUCggQDRMSO0MnQS8bDx4wAWwpKicpKCgqKQABAEEAAAIAAr0AFABYALgAAEVYuAAGLxu5AAYACD5ZuAAARVi4AAAvG7kAAAASPlm4AABFWLgAFC8buQAUAAQ%2BWboAAwAGABQREjm4AAvQuAAGELkADwAB9LgAAxC5ABIAAfQwMRMzFQc%2BATMyFhURIxE0JiMiBgcRI0GTBxxKM1FJkx0gHCgYkwK9rFkZK2pe%2FswBITYoGRf%2BsQACADUAAADfAtIACwAPAC0AuAAARVi4AAwvG7kADAAIPlm4AABFWLgADi8buQAOAAQ%2BWboABgAAAAMrMDETIiY1NDYzMhYVFAYHMxEjiiUwMCUmLy9vk5MCOSsiIioqIiIrSf4QAAAAAAL%2Fzf88AOEC0gARAB0ANwC4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAAHLxu5AAcABj5ZugAYABIAAyu4AAcQuQAOAAH0MDETMxEUDgIjIiYnNx4BMzI2NRMiJjU0NjMyFhUUBkKTESlEMx8pDxoKEgsdF0olMDAlJTAwAfD%2BEylINiAIBmwDBCYqAjorIiIqKiIiKwABAEEAAAIeAr0ADABbALgAAEVYuAAELxu5AAQACD5ZuAAARVi4AAAvG7kAAAASPlm4AABFWLgADC8buQAMAAQ%2BWbgAAEVYuAAILxu5AAgABD5ZugACAAAADBESOboACQAAAAgREjkwMRMzETM3MwcTIycHFSNBjwSdoK67n3A%2FjwK9%2Fm7FzP7cwUd6AAEAQf%2F0ARICvQARACsAuAAARVi4AAAvG7kAAAASPlm4AABFWLgADC8buQAMAAQ%2BWbkABQAB9DAxEzMRFBYzOgE3Fw4BIyIuAjVBkxEJBQcGEgwlGSY0Hw4Cvf3XFxICbQUHGCs9JgAAAQBBAAADHQH8ACEAmAC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAALxu5AAAACD5ZuAAARVi4ACEvG7kAIQAEPlm4AABFWLgAGS8buQAZAAQ%2BWbgAAEVYuAARLxu5ABEABD5ZugACAAAAIRESOboACQAAACEREjm4AAYQuAAM0LkAFQAB9LgACRC5ABcAAfS4AAYQuQAdAAH0uAACELkAHwAB9DAxEzMXMz4BMzIWFz4BMzIWFREjETQmIyIHESMRNCYjIgcRI0F4CgQfRjE1QRMhSTJQS5MdICUwkx0gJi6TAfBAHy0rKCIxa13%2BzAEhNigw%2FrEBITYoMP6xAAAAAAEAQQAAAgAB%2FAAUAGUAuAAARVi4AAYvG7kABgAIPlm4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAAULxu5ABQABD5ZuAAARVi4AAsvG7kACwAEPlm6AAIAAAAUERI5uAAGELkADwAB9LgAAhC5ABIAAfQwMRMzFzM%2BATMyFhURIxE0JiMiBgcRI0F4CgQgTDNRSZMdIBwoGJMB8D8eLWpe%2FswBITYoGRf%2BsQAAAAACACT%2F9AIHAfwAEwAfADUAuAAARVi4AAUvG7kABQAIPlm4AABFWLgADy8buQAPAAQ%2BWbkAFwAB9LgABRC5AB0AAfQwMTc0PgIzMh4CFRQOAiMiLgI3FBYzMjY1NCYjIgYkKENYLy9XQygoQ1cvL1hDKJctLi0uLi0uLfg%2BYUIjI0JhPj5hQiMjQmE%2BQUxMQUFMTAAAAgBB%2F0gCFgH8ABYAIQCDALgAAEVYuAAJLxu5AAkACD5ZuAAARVi4AAMvG7kAAwAIPlm4AABFWLgAAi8buQACAAY%2BWbgAAEVYuAATLxu5ABMABD5ZugAFAAkAExESOboAFgATAAkREjm4ABYQuQAXAAH0uAATELkAGgAB9LgACRC5AB8AAfS4AAUQuQAhAAH0MDEXFSMRMxczPgEzMh4CFRQOAiMiJic3HgEzMjY1NCMiB9STeAoEHUknLUgyGyM7SyggPBoFFCgTJjZWKyonkQKoMRojJEJdOUBjRSQbGWQSDkVNhi0AAAIAJ%2F9IAfwB%2FAAWACMAfwC4AABFWLgABS8buQAFAAg%2BWbgAAEVYuAALLxu5AAsACD5ZuAAARVi4AA0vG7kADQAGPlm4AABFWLgAEi8buQASAAQ%2BWboACAAFABIREjm6AA8AEgAFERI5uQAaAAH0uAAPELkAHQAB9LgACBC5AB4AAfS4AAUQuQAhAAH0MDE3ND4CMzIWFzM3MxEjNTcOASMiLgI3FBYzMjY3NS4BIyIGJyM5SycpPh0EDHOTBhlCIi5LNR2XLysYJxIUKhQjNvg9YEMkHSAx%2FViXTBgfJENgP0pEFBnLEg5DAAAAAQBBAAABjwH8ABIAUgC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAALxu5AAAACD5ZuAAARVi4ABIvG7kAEgAEPlm6AAIAAAASERI5uAAGELgADdy4AAIQuQAQAAH0MDETMxczPgEzMhYXBy4BIyIGBxEjQXgKBBtMJhUbCxgOGBAcPRSTAfBXMzAFBX8EBCgz%2FuAAAAEAFf%2F0AZ8B%2FAAwAEkAuAAARVi4ABUvG7kAFQAIPlm4AABFWLgALS8buQAtAAQ%2BWbkAAwAB9LoACwAtABUREjm4ABUQuQAcAAH0ugAjABUALRESOTAxNx4BMzI2NTQuAicuAzU0PgIzMhYXBy4BIyIVFB4CFx4DFRQOAiMiJidXIj4gIR4RHSQTFy4mGBsyRis5ViBCGzQaOBAbIxMYLycYGjRMMjFnJpUaGhYUDBMQDQgJGCMvHyI6KBcnGFgUFicMEQ4NBwkXIjEiIjorGSYfAAAAAQAR%2F%2FQBbgJ0ABkARQC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAULxu5ABQABD5ZuAAGELkACQAB9LgAANC4AAYQuAAD0LgAFBC5AA0AAfQwMRMjNT8BMxUzFSMVFBYzMjY3Fw4BIyIuAjVVREwRend3Ix0MGQoXFDYkLkEpEwF9bQaEhHPHKiUGBGsGDBwyRysAAAEAPP%2F0AfgB8AAUAGUAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgACS8buQAJAAg%2BWbgAAEVYuAARLxu5ABEABD5ZuAAARVi4AAwvG7kADAAEPlm4ABEQuQAFAAH0ugANAAkADBESObgADRC5AAgAAfQwMRMzERQWMzI2NxEzESMnIw4BIyImNTyTHiAcJhaTeAsDIEkzUUkB8P7fNigaHQFI%2FhBFJitqXgAAAAABAAwAAAH%2FAfAADQBAALgAAEVYuAAALxu5AAAACD5ZuAAARVi4AAovG7kACgAIPlm4AABFWLgADS8buQANAAQ%2BWboABQAAAA0REjkwMRMzFx4BFzM%2BAT8BMwMjDJRAChMKBAkTCkGNoqoB8OolTScnTSXq%2FhAAAAABABgAAALwAfAAIQB2ALgAAEVYuAAALxu5AAAACD5ZuAAARVi4AAovG7kACgAIPlm4AABFWLgAFC8buQAUAAg%2BWbgAAEVYuAAhLxu5ACEABD5ZuAAARVi4ABcvG7kAFwAEPlm6AAUAIQAAERI5ugAPABcAFBESOboAHAAAACAREjkwMRMzFx4BFzM%2BAT8BMxceARczPgE%2FATMDIycuAScjDgEPASMYkjAGCgYEBw0JN384CQ4IBAcJBy%2BId6wtCAwHBAcLByyoAfDmJUgmJkoj5uYlSCYmSCXm%2FhDGI0YoKEYjxgABAA4AAAH0AfAAGQBbALgAAEVYuAABLxu5AAEACD5ZuAAARVi4AAsvG7kACwAIPlm4AABFWLgAGS8buQAZAAQ%2BWbgAAEVYuAAPLxu5AA8ABD5ZugAGAAsADxESOboAFAABABkREjkwMRMnMxceARczPgE%2FATMHFyMnLgEnIw4BDwEjpo%2BeLAoVCwQIEggimJCZnjAMFwwECRQJJ5gBAu5QFSsVFSsVUP%2FxUhUsFRUrFlIAAAABAAz%2FPgH9AfAAHQBGALgAAEVYuAAILxu5AAgACD5ZuAAARVi4ABIvG7kAEgAIPlm4AABFWLgAGS8buQAZAAY%2BWbkAAwAB9LoADQAIABkREjkwMRceATMyNj8BAzMXHgEXMz4BPwEzAw4DIyImJzdMBxIIJSgKB7%2BURwsSCgQIEQk8jawSJzNBLBcgDxpIAgQkHRoB49UiRiUjRyPV%2FgsvRy8YBQVwAAABACYAAAG0AfAACQA9ALgAAEVYuAADLxu5AAMACD5ZuAAARVi4AAgvG7kACAAEPlm5AAYAAfS4AADQuAADELkAAQAB9LgABdAwMTcTIzUhFQMzFSEm0LkBcNDX%2FnJPAS5zTv7RcwAA%2F%2F%2F%2F%2BgAAAkMDNgImAAQAAAAHAOEBGwAA%2F%2F%2F%2F%2BgAAAkMDNgImAAQAAAAHAOMBGwAA%2F%2F%2F%2F%2BgAAAkMDNgImAAQAAAAHAOUBGwAA%2F%2F%2F%2F%2BgAAAkMDRwImAAQAAAAHAOcBGwAA%2F%2F%2F%2F%2BgAAAkMDSAImAAQAAAAHAOoBGwAA%2F%2F%2F%2F%2BgAAAkMDfQImAAQAAAAHAOwBGwAAAAL%2F8gAAAxkCjAAGABYAfAC4AABFWLgADi8buQAOABA%2BWbgAAEVYuAANLxu5AA0ABD5ZuAAARVi4AAkvG7kACQAEPlm6AAIADgANERI5ugAKAA4ADRESObgACi%2B5AAYAAfS4AAkQuQAHAAH0uAAOELkAEAAB9LoAFQAOAAkREjm4ABUvuQATAAH0MDEBESMOAQ8BBRUhNSMHIwEhFSMVMxUjFQGCBBQnFCoCFP5psUSbATYB5%2FrT0wEHARYwXitdi3yVlQKMfIN7lgAA%2F%2F8ALv8jAjACmAImAAYAAAAHAO4BXgAA%2F%2F8ATQAAAe8DNgImAAgAAAAHAOEBIAAA%2F%2F8ATQAAAe8DNgImAAgAAAAHAOMBIAAA%2F%2F8ATQAAAe8DNgImAAgAAAAHAOUBIAAA%2F%2F8ATQAAAe8DSAImAAgAAAAHAOoBIAAA%2F%2F%2F%2F9AAAAOEDNgImAAwAAAAHAOEAlgAA%2F%2F8ASwAAATgDNgImAAwAAAAHAOMAlgAA%2F%2F%2F%2F7gAAAT4DNgImAAwAAAAHAOUAlgAA%2F%2F%2F%2F7QAAAT8DSAImAAwAAAAHAOoAlgAA%2F%2F8ATQAAAkwDRwImABEAAAAHAOcBTQAA%2F%2F8ALv%2F0An4DNgImABIAAAAHAOEBVgAA%2F%2F8ALv%2F0An4DNgImABIAAAAHAOMBVgAA%2F%2F8ALv%2F0An4DNgImABIAAAAHAOUBVgAA%2F%2F8ALv%2F0An4DRwImABIAAAAHAOcBVgAA%2F%2F8ALv%2F0An4DSAImABIAAAAHAOoBVgAAAAMAKP%2FXApQCtQAHABAAKgCFALgAAEVYuAAmLxu5ACYAED5ZuAAARVi4ABkvG7kAGQAEPlm6AAAAGQAmERI5uQACAAH0ugAHACYAGRESOboACAAmABkREjm4ACYQuQAKAAH0ugAQABkAJhESOboAEQAmABkREjm6ABsAGQAmERI5ugAeABkAJhESOboAKAAmABkREjkwMSUWMzI2NTQvASYjIgYVFBYXAR4BFRQOAiMiJwcnNy4BNTQ%2BAjMyFzcXAQgiLUNOCTAkNENOBwYBdRodK05tQl5HPkxFHSErTm1CZklCTI8cc2MtJF0ibmIcMhUBNilpQVB%2BWC8wTTpWK3JFUH1VLTVSOwAAAAACAC4AAAMyAowAFAAhAFUAuAAARVi4AAUvG7kABQAQPlm4AABFWLgAEC8buQAQAAQ%2BWbgABRC5ABwAAfS4AAfQugAMAAUAEBESObgADC%2B5AAoAAfS4ABAQuQAbAAH0uAAO0DAxEzQ%2BAjMhFSMVMxUjFSEVISIuAjcUHgI7AREjIg4CLjJZe0kBq%2FfQ0AEB%2FkNGd1gylxwzRysXFytHMxwBSVR6TyZ8g3uWfChRfFQ7UTEVAZ4UL07%2F%2FwBJ%2F%2FQCTwM2AiYAGAAAAAcA4QFMAAD%2F%2FwBJ%2F%2FQCTwM2AiYAGAAAAAcA4wFMAAD%2F%2FwBJ%2F%2FQCTwM2AiYAGAAAAAcA5QFMAAD%2F%2FwBJ%2F%2FQCTwNIAiYAGAAAAAcA6gFMAAD%2F%2F%2F%2F4AAACFQM2AiYAHAAAAAcA4wEGAAAAAgAaAAACZQKMABAAIQBZALgAAEVYuAAhLxu5ACEAED5ZuAAARVi4ABwvG7kAHAAEPlm5AAAAAfS4ACEQuQAKAAH0ugAOACEAHBESObgADi%2B5AA0AAfS4AA4QuAAe0LgADRC4AB%2FQMDElMj4CNTQuAisBFTMVIxUTMh4CFRQOAisBESM1NxEBFSpEMBsbMEQqHH19JUt4Vi4uVHVIwExMdxYxUDs6Ty8UoUe2AhUmT3pUVHxRKAEtQgUBGAACAE0AAAI6AowAEAAYADkAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgAEC8buQAQAAQ%2BWbsAGAABAA4ABCu7AAIAAQAXAAQrMDETMxUzMh4CFRQOAisBFSM3MjU0JisBFU2TWzVdRSgpRlw0W5PleD07UgKMYxUxUDs6UzYae%2FBoMynEAP%2F%2FAC%2F%2F9AHZAtQCJgAeAAAABwDgARkAAP%2F%2FAC%2F%2F9AHZAtQCJgAeAAAABwDiARkAAP%2F%2FAC%2F%2F9AHZAtQCJgAeAAAABwDkARkAAP%2F%2FAC%2F%2F9AHZAsYCJgAeAAAABwDmARkAAP%2F%2FAC%2F%2F9AHZAsYCJgAeAAAABwDpARkAAP%2F%2FAC%2F%2F9AHZAvACJgAeAAAABwDrARkAAAADAC%2F%2F9ALtAfwACwA8AEMAmwC4AABFWLgADy8buQAPAAg%2BWbgAAEVYuAAVLxu5ABUACD5ZuAAARVi4AC4vG7kALgAEPlm4AABFWLgAKC8buQAoAAQ%2BWbgALhC5AAMAAfS6ADYALgAPERI5uAA2L7kACQAB9LoAHQAVACgREjm4AB0vuAAoELkAIQAB9LgADxC5ADkAAfS4ABUQuQBAAAH0uAAdELkAQwAB9DAxNxQWMzI2NyYvAQ4BAz4BMzIWFz4BMzIeAhUUBgchHgEzMjY3Fw4BIyImJw4BIyIuAjU0NjcuASMiBgcFNCYjIgYHux8aGi8UCwMBST57MGU2LkYWIEYtMUoxGQQC%2FuIIQi0cMhsyJl0sOFMgNVgyIjYmFYKSAiEqHkAkAfwkKSMxBpUYFxYUHyMVCyoBCR0kKCMkJyVBWDMUIQk0MhQQXxoeKiMqIxcpNh9PWQ8gJxgVMy04MTQA%2F%2F8AJP8jAb4B%2FAImACAAAAAHAO0BGgAA%2F%2F8AJP%2F0AeEC1AImACIAAAAHAOABDgAA%2F%2F8AJP%2F0AeEC1AImACIAAAAHAOIBDgAA%2F%2F8AJP%2F0AeEC1AImACIAAAAHAOQBDgAA%2F%2F8AJP%2F0AeECxgImACIAAAAHAOkBDgAA%2F%2F%2F%2F9QAAANwC1AImAGcAAAAHAOAAigAA%2F%2F8AOAAAAR8C1AImAGcAAAAHAOIAigAA%2F%2F%2F%2F8AAAASQC1AImAGcAAAAHAOQAigAA%2F%2F%2F%2F4QAAATMCxgImAGcAAAAHAOkAigAAAAEAQQAAANQB8AADACUAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgAAi8buQACAAQ%2BWTAxEzMRI0GTkwHw%2FhAAAP%2F%2FAEEAAAIAAsYCJgArAAAABwDmATQAAP%2F%2FACT%2F9AIHAtQCJgAsAAAABwDgARUAAP%2F%2FACT%2F9AIHAtQCJgAsAAAABwDiARUAAP%2F%2FACT%2F9AIHAtQCJgAsAAAABwDkARUAAP%2F%2FACT%2F9AIHAsYCJgAsAAAABwDmARUAAP%2F%2FACT%2F9AIHAsYCJgAsAAAABwDpARUAAAADACT%2F5wIHAgsABwAPACoASQC4AABFWLgAJS8buQAlAAg%2BWbgAAEVYuAAYLxu5ABgABD5ZugAAABgAJRESObkAAgAB9LoACAAlABgREjm4ACUQuQAKAAH0MDE3FjMyNjU0LwEmIyIGFRQXJR4BFRQOAiMiJwcnNy4BNTQ%2BAjMyFhc3F9wXIy02ByQWIi42BwEVGh8oQ1cvSjwrNy8aHyhDWC8jRB0sN3oUSz8pG0MTSz8oG%2BkhVzY%2BYUIjKDUqOiBXNj5hQiMUEzYrAAADACT%2F9AMSAfwACwA0ADsAcQC4AABFWLgAES8buQARAAg%2BWbgAAEVYuAAwLxu5ADAABD5ZuQADAAH0uAARELkACQAB9LgAERC4ABfQuAAwELgAKtC6AB8AFwAqERI5uAAfL7gAKhC5ACMAAfS4ABcQuQA4AAH0uAAfELkAOwAB9DAxNxQWMzI2NTQmIyIGBzQ%2BAjMyFhc%2BATMyHgIVFAYHIR4BMzI2NxcOASMiJicOASMiLgIlNCYjIgYHuSwpKS4uKSkslSZAVS81Tx0eUi0xSjIZBAL%2B4QhCLRwyGzMmXiwtVB8fTzcwVD8kAnAkKSMxBvhBTExBQUxMQT5hQiMuKSotJUFYMxQhCTQyFBBfGh4tKissI0JhbS04MTQAAAABAEH%2F9AJdAscAOABkALgAAEVYuAAFLxu5AAUAEj5ZuAAARVi4ADgvG7kAOAAEPlm4AABFWLgAGy8buQAbAAQ%2BWboADwAbAAUREjm5ACEAAfS6ACQAGwAFERI5ugAwABsABRESObgABRC5ADMAAfQwMRM0PgIzMh4CFRQOAhUUHgQVFA4CIyImJzcWMzI2NTQuBDU0PgI1NCYjIgYVESNBHTpaPDNNMxoYHhgaJy4nGhcvRS0tRiQzMS4aHRonLicaFhsWIR8uLpEB5zBSPCIcLzwgJDEnIRMRFxYaJTUmIjwsGhgVZCQbFRMbFxkhLSEdKiYpGx0nQzr%2BKv%2F%2FADz%2F9AH4AtQCJgAyAAAABwDgAR0AAP%2F%2FADz%2F9AH4AtQCJgAyAAAABwDiAR0AAP%2F%2FADz%2F9AH4AtQCJgAyAAAABwDkAR0AAP%2F%2FADz%2F9AH4AsYCJgAyAAAABwDpAR0AAP%2F%2FAAz%2FPgH9AtQCJgA2AAAABwDiAQoAAP%2F%2FAAz%2FPgH9AsYCJgA2AAAABwDpAQoAAAACACr%2F9AH%2BAuQADgAyAFkAuAAARVi4AC0vG7kALQASPlm4AABFWLgAFy8buQAXAAQ%2BWbsAIQABAAkABCu6ACkAJgADK7gAFxC5AAAAAfS4ACYQuAAP0LgAKRC4AC3cuAApELgAMNAwMSUyNjU8AScuASMiBhUUFhMeARUUDgIjIi4CNTQ%2BAjMyFhcmJwcnNy4BJzceARc3FwEWKjUBFzAaLDc9ijtMIT1YNy9TQCUiOUknHTgVGjuOJnQULRlAI0YhjyZrSU4MFgsZEjo8Oz4B7jyjcDxmSioiPlk3NlQ6HxMXTThHQToOGg1ZEioZSEEAAAAAAgBB%2F0gCFgK9ABYAIQBXALgAAEVYuAAILxu5AAgACD5ZuAAARVi4AAIvG7kAAgASPlm4AABFWLgAAS8buQABAAY%2BWbgAAEVYuAASLxu5ABIABD5ZuQAaAAH0uAAIELkAHwAB9DAxFyMRMxUHPgEzMh4CFRQOAiMiJicXNR4BMzI2NTQjIgfUk5MEGkAiL0s0HCM7SygkNxoEFCgTJjZWKyq4A3WsRhcaJEJdOUBjRSQYF0qzEg5FTYYtAAABABgAAAKvAskALgB8ALgAAEVYuAATLxu5ABMACD5ZuAAARVi4ACsvG7kAKwASPlm4AABFWLgADy8buQAPAAQ%2BWbgAKxC5AAIAAfS4ABMQuAAl0LgAB9C4ABMQuQAQAAH0uAAM0LgACNC4AA8QuAAL0LgAExC4ABLQuAArELgAGdC5ACAAAfQwMQEmIyIGHQEzFSMRIxEjESMRIzU3NTQ%2BAjMyFhcHLgEjIgYdATM1ND4CMzIWFwKVHBcbHllZk6mTQkIVLUczIDYRGwwaFBohqRMsRTIgMhECSwohJh5z%2FoMBff6DAX1tBRcmRDIdCwdtBQYhIxcaJ0Y0HgwGAAAAAQAY%2F%2FQCnwLJAC4AiQC4AABFWLgAEC8buQAQAAg%2BWbgAAEVYuAAWLxu5ABYAEj5ZuAAARVi4AAwvG7kADAAEPlm4AABFWLgAAy8buQADAAQ%2BWbgAEBC5AA0AAfS4AAnQuAAQELgAD9C4AA8vuAAWELkAHAAB9LgAEBC4ACHQuAAl0LgACRC4ACbQuAADELkAKwAB9DAxJQ4BIyIuAj0BIxEjESM1NzU0PgIzMhYXByYjIgYdATM3MxUzFSMVFBYzMjY3Ap8UNiQuQSkTmZNCQhMsRjIfMxEbHBcbHqERend3Ix0MGQoGBgwcMkcryf6DAX1tBRsnRjQeDAZsCiEmHoSEc8cqJQYEAAAAAAMAGf%2F0AokCmAAKABYARACMALgAAEVYuAAvLxu5AC8AED5ZuAAARVi4AB0vG7kAHQAEPlm4AABFWLgAFy8buQAXAAQ%2BWboAOgAaAAMruAAdELkAAwAB9LoABQAaADoREjm6AAgAHQAvERI5uAAIL7gADty4AC8QuQAUAAH0ugAnAAgADhESOboANwAIAA4REjm6AEEAGgA6ERI5MDE3FBYzMjcuAScOARMUFhc%2BATU0JiMiBgEuAScOASMiLgI1ND4CNy4BNTQ%2BAjMyFhUUDgIHHgEXPgE3Mw4BBx4BF6Q1LCgrJkUdFBg9CwojMBYXGSIBhSlUKiplPjVRNxwTISsYExUZLkEpSlYXJzEZHEMkGSYMhhI1Jh85GbclLhofRCQRJgEgEigUFS4hFxwn%2FeQIIhgfIx4zQyYiNywkDyNFHyM%2BLxtQRCA1LSYRID0aIE4uPG0zEBUEAAAAAAIAJf%2F0AesChwATACcANQC4AABFWLgACi8buQAKAA4%2BWbgAAEVYuAAALxu5AAAABD5ZuQAUAAH0uAAKELkAHgAB9DAxBSIuAjU0PgIzMh4CFRQOAicyPgI1NC4CIyIOAhUUHgIBCDNUOyEhO1QzM1Q7ISE7VDMTIBgNDRggExIgGA4OGCAMK1R8UVF6UykpU3pRUXxUK3ITMlRBQVMvEhIvU0FBVDITAAEARgAAAdoCewAMAEMAuAAARVi4AAcvG7kABwAOPlm4AABFWLgADC8buQAMAAQ%2BWbkAAQAB9LgABxC5AAQAAfS5AAIAAfS4AAEQuAAJ0DAxNzMRIzU%2BATczETMVIUaKdzRIImx3%2Fmx3AW9bChwU%2Ffx3AAAAAQAeAAAB5AKHAB8APQC4AABFWLgADy8buQAPAA4%2BWbgAAEVYuAAeLxu5AB4ABD5ZuQAcAAH0uAAZ0LgAANC4AA8QuQAIAAH0MDE3PgM1NCYjIgYHJz4BMzIeAhUUDgIHPgE7ARUhJT1lSSkwKiM2GFAvYkQvTTgeIjlJJxg7F4D%2BQVQ5Y1dLIi8xJxpPMjMdNUouKFNTUygDBXwAAQAW%2F%2FQB3wKHAC8AUwC4AABFWLgAGy8buQAbAA4%2BWbgAAEVYuAAsLxu5ACwABD5ZuQADAAH0ugALABsALBESObgACy%2B5AAwAAfS4ABsQuQAUAAH0ugAkAAwACxESOTAxNx4BMzI2NTQuAiM1Mj4CNTQmIyIGByc%2BATMyHgIVFAYHFR4BFRQOAiMiJidaHUUpLzgPJkI0KzkjDygmIjceSixhOzFROSA3MzdHJkBWME5sI6scJCckFSIXDWgMFx8TISUeGlomKxctQCoyRRYEEE0%2BLEUvGTEpAAAAAAIAEwAAAfgCewAJABQAVwC4AABFWLgAEi8buQASAA4%2BWbgAAEVYuAANLxu5AA0ABD5ZuwAOAAEAAAAEK7gAEhC4AATcuAAAELgACdC4AA4QuAAL0LgACRC4ABDQuAAAELgAE9AwMQE1NDY3Iw4BDwEFIxUjNSE1EzMRMwEmBAIEDBoOVAFYSYn%2B7ei0SQEIZx9RHho2G4pwmJhlAX7%2BjQABABf%2F9AHgAnsAJABHALgAAEVYuAAQLxu5ABAADj5ZuAAARVi4ACEvG7kAIQAEPlm5AAMAAfS6ABcAEAAhERI5uAAXL7gACdy4ABAQuQASAAH0MDE3HgEzMjY1NCYjIg4CBycTIRUjBz4BMzIeAhUUDgIjIiYnWR1DKTE6Ny0OFhUXDkISAWjpCxIhFClJOCAmQFUuTmwmqholMjEwMgMIDAkqAUF8dwgHGDBKMzVSOR4zJgACACn%2F9AHsAocADQAyAEMAuAAARVi4AC8vG7kALwAOPlm4AABFWLgAJS8buQAlAAQ%2BWbsAGwABAAYABCu4ACUQuQAAAAH0uAAvELkAEQAB9DAxJTI2NTQmIyIGBx4DEy4BIyIOAgc%2BAzMyHgIVFA4CIyIuAjU0PgIzMhYXARYhLy8kGDIWBRQaH5ERNhwaLiMWAgwgIiIPKUUzHCI5TSsuV0MoK0ddMj9cHmIxNjMpHCMmMh8NAYESGxQvTDcQGREJGDBKMjJOOB0kTHdUWYJUKS0fAAEALAAAAeYCewAPADMAuAAARVi4AAcvG7kABwAOPlm4AABFWLgAAC8buQAAAAQ%2BWbgABxC5AAUAAfS4AAnQMDEzPgM3ITUhFQ4DByOfBBUnPS3%2B4wG6N0MlEASUT4V5dD58WkN1fY9dAAAAAAMAKv%2F0AegChwANABgAOgBXALgAAEVYuAAlLxu5ACUADj5ZuAAARVi4ADYvG7kANgAEPlm5AAMAAfS6AAsANgAlERI5uAALL7gADtC4ACUQuQATAAH0uAALELgAHNy4AA4QuAAt3DAxNxQWMzI2NTQuAicOATc2NTQmIyIGFRQWBzQ2NzUuATU0PgIzMh4CFRQGBxUeARUUDgIjIi4CqDooJTATJDEeFRyHJykkHSo81D8tJTAeNkssK0gyHDIhLkAgO1MzMFE7IbMqLycoFR4ZFg0UNKItMCUtJCUnLOM6ShgEHEczKEEuGBktQScuRxYEGU4%2FJkAvGxkuQAAAAAACACL%2F9AHmAocACwAwAEMAuAAARVi4ACMvG7kAIwAOPlm4AABFWLgALS8buQAtAAQ%2BWbsAAAABABkABCu4ACMQuQAGAAH0uAAtELkADwAB9DAxEzI2Ny4BIyIGFRQWBx4BMzI%2BAjcOAyMiLgI1ND4CMzIeAhUUDgIjIiYn%2FBgyFQo3IiAwMF8QNhwbLiMVAgwgIiIPKUUyHSI5TSsuV0MpK0ddMj9dHgFWHCNLOTE2Mym%2BEhsUL0s4EBkRCRgwSjIxTzgdJEx3VFmCVCkuHgAAAQA9%2F%2FQA7wCtAAsAGAC4AABFWLgACS8buQAJAAQ%2BWbgAA9wwMTc0NjMyFhUUBiMiJj0zJiYzMyYmM1AoNTUoJzU1AAABAC7%2FPgEAAK0AEAAYALgAAEVYuAAELxu5AAQABD5ZuAAK3DAxFz4BNSMiJjU0NjMyFhUUBgcuNzoIIzY2JjI0XFh0FEAmKygmLklCU3ca%2F%2F8APf%2F0AO8B8QInAIYAAAFEAAYAhgAA%2F%2F8ALv8%2BAQAB8QInAIYAAAFEAAYAhwAAAAIAUf%2F0AQMCngAFABEAGgC4AABFWLgADy8buQAPAAQ%2BWbkACQAB9DAxEyczBwMjBzQ2MzIWFRQGIyImZQWUBRVgKTMmJjMzJiYzAhmFhf7Olyg1NSgnNTUAAAAAAgBR%2F1IBAwH8AAUAEQANALgADy%2B5AAkAAfQwMR8BIzcTMzcUBiMiJjU0NjMyFu8FlAUVYCkzJiYzMyYmMymFhQEylyg1NSgnNTUAAAIAKf%2F0AaUCqgAdACkAKAC4AABFWLgAJy8buQAnAAQ%2BWbsAEQABAAoABCu4ACcQuQAhAAH0MDE3Jj4ENTQmIyIGByc%2BATMyHgIVFA4EFwc0NjMyFhUUBiMiJpoFDxwjIBUlHhwrFFEiXDgqSTUeFiElHxIDmTImJjMzJiYy5yI4MCglIxMfIBoUSikyFCpBLB8xKicqLx6XKDU1KCc1NQACACr%2FRgGmAfwAHQApABsAuAAnL7sACgABABEABCu4ACcQuQAhAAH0MDEBFg4EFRQWMzI2NxcOASMiLgI1ND4EJzcUBiMiJjU0NjMyFgE1BQ8cIyAVJh0cKxRRIlw4Kkk1HhYhJR8TA5kzJiYzMyYmMwEJIjgwKCUjEx8gGhRKKTIUKkEtHzEqJykvHpcoNTUoJzU1AAAAAAEATAFiAOACrgAFAAsAugACAAQAAyswMRMnMw8BI1EFlAUdUAIphYXHAAD%2F%2FwBMAWIBzAKuACYAjgAAAAcAjgDsAAAAAQA3AVIA5QKrABEAKwC4AABFWLgAAy8buQADAAg%2BWbgAAEVYuAAFLxu5AAUACD5ZuQALAAH0MDETDgEVNjMyFhUUBiMiJjU0NjflLS0DByAtLCEvL0ZIAmsXOy0BJyImLEU%2BR2wjAAABAEcBYAD2ArkAEQANALsACwABAAUABCswMRM%2BATUGIyImNTQ2MzIWFRQGB0ctLQMGIC0rIi4wR0gBoBc7LQEnIiYsRD9HbCMAAAD%2F%2FwA3AVIB0QKrACYAkAAAAAcAkADsAAD%2F%2FwBHAWAB4gK5ACYAkQAAAAcAkQDsAAD%2F%2FwBH%2F1gA9gCxAgcAkQAA%2FfgAAP%2F%2FAEf%2FWAHiALEAJwCRAAD9%2BAAHAJEA7P34AAAAAQAxADgA7gHAAAYACwC6AAIABgADKzAxNzU3FwcXBzGGN29vN8hokCyYmCwAAAAAAQA2ADgA8wHAAAYACwC6AAIABQADKzAxNyc3FxUHJ6VvN4aGN%2FyYLJBokCwAAAD%2F%2FwAxADgBqgHAACYAlgAAAAcAlgC8AAD%2F%2FwA2ADgBrwHAACYAlwAAAAcAlwC8AAAAAQArAMkBIQExAAMADQC7AAEAAQACAAQrMDETMxUjK%2Fb2ATFoAAAA%2F%2F8AKwDJASEBMQIGAJoAAAABACsAzgG1ASwAAwANALsAAQABAAIABCswMRMhFSErAYr%2BdgEsXgAAAQArAM4C9QEsAAMADQC7AAEAAQACAAQrMDETIRUhKwLK%2FTYBLF4A%2F%2F8APQDkAO8BnQIHAIYAAADwAAAAAQAoAHsBMQGRABMACwC6AAoAAAADKzAxNyIuAjU0PgIzMh4CFRQOAqwcMCQUFCQwHBwxJBQUJDF7FSYyHh4zJRUVJTMeHjImFQAAAAEADP90Aej%2FxwADAA0AuwAAAAEAAQAEKzAxBRUhNQHo%2FiQ5U1MAAAABAEj%2FTQEoAt8ADgALALoABgAAAAMrMDEXLgE1NDY3Fw4BFRQWFwfMP0VFP1w3MjI3XLNn3oSE3mcmYtZra9ZiJgAAAAEAMP9NARAC3wAOAAsAugAHAA0AAyswMRc%2BATU0Jic3HgEVFAYHJzA4MjI4XD9FRT9cjWLWa2vWYiZn3oSE3mcmAAAAAQBX%2F2gBKgLEAAcAFwC7AAUAAQAGAAQruwABAAEAAgAEKzAxEzMVIxEzFSNX02Vl0wLETv1ATgABAC7%2FaAEBAsQABwAXALsAAAABAAYABCu7AAMAAQACAAQrMDEXESM1MxEjNZRm09NKAsBO%2FKROAAEAH%2F9oASoCxAAzACsAuwAAAAEAAQAEK7sAHgABAB8ABCu7ABAAAQAPAAQrugAqAA8AEBESOTAxBRUjIiY1ND4CNTQuAic1PgM1NC4CNTQ2OwEVIyIGFRQWFRQGBxUeARUUBhUUFjMBKj9CPgMEAwkUIRgYIRQJAwQDPkI%2FEx8WBCQmJiQEFh9KTj1RGyonJxgNGhUNAVYBDRUaDRgnJyobUT1OHSkpTC45MwkECTM5LkwpKR0AAAABAC7%2FaAE5AsQAMwArALsAAAABADIABCu7ABUAAQAUAAQruwAjAAEAJAAEK7oACgAkACMREjkwMRcyNjU0JjU0Njc1LgE1NDY1NCYrATUzMhYVFA4CFRQeAhcVDgMVFB4CFRQGKwE1QR8WBCQmJiQEFh8TP0I%2BAwQDCRQhGBghFAkDBAM%2BQj9KHSkpTC45MwkECTM5LkwpKR1OPVEbKicnGA0aFQ0BVgENFRoNGCcnKhtRPU4AAAAAAQAN%2F2ABNgLGAAMAGAC4AABFWLgAAC8buQAAABI%2BWbgAAtwwMRMzAyPWYMlgAsb8mgAAAAEAVv8GALYC7gADAAsAugABAAIAAyswMRMzESNWYGAC7vwYAAEAHP9gAUYCxgADABgAuAAARVi4AAAvG7kAAAASPlm4AALcMDETMxMjHGDKYALG%2FJoAAAACAFb%2FBgC2Au4AAwAHAAsAugABAAUAAyswMRMzESMXESMRVmBgYGAC7v5KbP46AcYAAAAAAQAmAV0BowLIAA4AFAC4AABFWLgABS8buQAFABI%2BWTAxEzcnNxc3Mxc3FwcXBycHVztsF3QNTQ1zGGw7PVBRAYloMUgYdncZSDFoLFlZAAACACX%2FrAHrArIADQBBACgAuAAARVi4ACgvG7kAKAAEPlm7ACsAAQAlAAQruwA%2BAAEAEQAEKzAxExQeAhc2NTQuAicGNy4BIyIVFB4EFRQGBx4BFRQOAiMiJic3FjMyNjU0LgQ1NDY3LgE1NDYzMhYXoSAyPR0iIDE9HSPaFzgaNig8RzwoKycLDBkwSC83aSJVMTwfHSc6RTonKyUOD11VOlsfAVEYIRsZDxUmGCEbGA8XoRQcJxIbGyAtQC0sQRgQJhciOioYKStLMxgTExwaHi1ALyZDFxApGkRVKRgAAAIAJ%2F%2BwAhwCjAADABAAJQC4AABFWLgAAC8buQAAAA4%2BWbgAAEVYuAAOLxu5AA4ADj5ZMDEBMxEjAyIuAjU0PgI7AREBiZOTYDVeRikoRV00LAKM%2FSQBFR07Vzk%2FVTUW%2FjkAAAADAC3%2F9wLAAo8AEwAnAEUAMwC7ADoAAQBBAAQruwAtAAEANAAEK7gALRC4ACPcuQAFAAH0uABBELgAGdy5AA8AAfQwMRM0PgIzMh4CFRQOAiMiLgI3FB4CMzI%2BAjU0LgIjIg4CFzQ%2BAjMyFhcHLgEjIgYVFBYzMjY3Fw4BIyIuAi01W3hCQnhaNTVaeEJCeFs1RClGYDc3YEYpKUZgNzdgRilRIDVGJi4%2BGDcQIBQwMTIqGSQTMB1AJypHMx0BRU56VS0tVXtNTntXLi5Xe04%2BZEgnJ0hkPj1kRyYmR2Q%2BLEcyGyMYPRERPS0zPBMPRBcdHDNJAAAAAAQAIAE3Aa0CywATACMAMAA5AFcAuAAvL7gAJS%2B4AC8QuAAU3LkAAAAB9LgAJRC4ABrcuQAKAAH0ugAtAC8AJRESObgALS%2B5ADEAAfS6ACoAMQAtERI5uAAvELgALNC4ACUQuQA3AAH0MDETIi4CNTQ%2BAjMyHgIVFA4CJzI2NTQmIyIOAhUUHgInMzIWFRQHFyMnIxUjNzI2NTQmKwEV5ylJNh8fNkkpKUg2Hx82SCk%2FUFA%2FIDQnFRUnNDFZIy4jKTweHTlODw8PDxUBNx42SiwsSjYeHjZKLCxKNh4xU0ZGUxYoOCMjOCgW%2FSAiJRFNPDxkEQsLDzYAAgAx%2F1QDVgKdAEYAUwA%2FALsAOwABAEIABCu7ACcAAQAPAAQruwBJAAEAFgAEK7sAHgABAE8ABCu7AAUAAQAxAAQrugAiAE8AHhESOTAxNzQ%2BAjMyHgIVFA4CIyImJyMOASMiJjU0PgIzMhYXMzczBwYzMj4CNTQuAiMiDgIVFB4CMzI2NxcOASMiLgIlFDMyNj8BJiMiDgIxSHukXFGDXDIqQlEnK0AIAhVEHzxIHzZKKxkmDQIOWy4VQxYrIhQeQmhJQHpgOi9RaTsnUSAgLmA2S4lpPgE%2FNBAfExgPHxcjGQ3Naat6QjRfg05FZ0UiKCQdJVFFLlhFKhcbKtxWGS9DKTZiSyw1YYlUSm5IJBYRUBkXLl6NYkMUGYcdHCoyAAAAAAIAIgAAAfICigAbAB8AoAC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAKLxu5AAoACD5ZuAAARVi4AA4vG7kADgAIPlm4AABFWLgAFi8buQAWAAQ%2BWbgAAEVYuAAaLxu5ABoABD5ZuwADAAEAAAAEK7gABhC5AAQAAfS4ABDQuAAR0LgAAxC4ABLQuAAAELgAFNC4AAAQuAAY0LgAAxC4ABzQuAARELgAHdC4AB7QMDE3IzUzNyM1MzczBzM3MwczFSMHMxUjByM3IwcjEzcjB2xKVQ5PWxVUFGgVVBRPWw1UXxdVFmcXVd4OaA27Xm5epaWlpV5uXru7uwEZbm4AAP%2F%2FAEwBuAESAz4CBwC3AAABuAAA%2F%2F8AGwG4AU4DSgIHALgAAAG4AAD%2F%2FwAbAawBUQNKAgcAuQAAAbgAAP%2F%2FACMBuAFwAz4CBwC6AAABuAAAAAIAGv%2F0AV8BkgATAB8AKAC4AAovuAAARVi4AAAvG7kAAAAEPlm5ABQAAfS4AAoQuQAaAAH0MDEXIi4CNTQ%2BAjMyHgIVFA4CJzI2NTQmIyIGFRQWvCM8KxgYKzwjIzwrGRkrPCMZIyMZGSMjDBw2TTExTDUcHDVMMTFNNhxSOEZGNjZGRjgAAAABAEwAAAESAYYACgAiALgACC%2B4AABFWLgACi8buQAKAAQ%2BWbgACBC5AAAAAfQwMRMjNT4DNzMRI6VZFB8aFwxWbQEZQgMICg0J%2FnoAAQAbAAABTgGSABcALAC4AAwvuAAARVi4ABYvG7kAFgAEPlm5ABQAAfS4AADQuAAMELkABgAB9DAxNz4BNTQmIyIGByc2MzIWFRQOAgczFSEtS2AeGxQiET08WUFPER0lFXb%2B3zo%2BXyUdIBkWOFBFPxgtLCwXWgAAAQAb%2F%2FQBUQGSACgAPgC4ABUvuAAARVi4ACUvG7kAJQAEPlm6AAgABwADK7gAJRC5AAIAAfS4ABUQuQAOAAH0ugAdAAcACBESOTAxNxYzMjY1NCM1MjY1NCYjIgYHJz4BMzIeAhUUBgceARUUDgIjIiYnXCMwFyFdJCsaFxMfDj0gQi4bMSYWHhseKRkpNx4zUhp2MBgXMz4XGRQWFhE2IyAPHCkZHysQDC8jGy0fEikmAAAAAgAjAAABcAGGAAUAEABMALgADi%2B4AABFWLgACS8buQAJAAQ%2BWbsAAAABAAoABCu4AA4QuQACAAH0uAAAELgABdC4AAoQuAAH0LgABRC4AAzQuAAAELgAD9AwMTc1NyMPARcjFSM1IzU3MxUz1gYEKCrqOmCzjYY6nSl1TVFGV1c2%2Ben%2F%2FwAdAP4BQAJXAgYAvQAA%2F%2F8AGAD%2BAVwCVwIGAL4AAAACAB0A%2FgFAAlcAGQAiADsAuAAAL7gAEC%2B7AAYAAQAeAAQruAAQELkACQAB9LgAABC4ABXQuAAAELkAGgAB9LoAFwAAABoREjkwMTciJjU0NjcuASMiBgcnPgEzMhYdASMnIw4BNzI2NzUOARUUgi82WGMCFxgULhglIUknQEdTCgQSLgYPFw0yJv46KjU5CRYWEA5EFBhJS70hEhdODgw3BRwSHgAAAAACABgA%2FgFcAlcAEwAfABsAuAAKL7gAAC%2B5ABQAAfS4AAoQuQAaAAH0MDE3Ii4CNTQ%2BAjMyHgIVFA4CJzI2NTQmIyIGFRQWuiA6LRsbLTogIDotGxstOiAdHBwdHRsb%2FhcsQCkpQC0XFy1AKSlALBdSMSkqMTEqKTEAAAAAAgAnAY4BSAKuABMAHwAXALsAFAABAAAABCu7AAoAAQAaAAQrMDETIi4CNTQ%2BAjMyHgIVFA4CJzI2NTQmIyIGFRQWtx41JxYWJzUeHjUnFxcnNR4eJSUeHSYmAY4VJzQgHzUnFRUnNR8gNCcVRikhICkpICEpAAAAAgAUAFMB%2FAI%2FAB4AKgAoALgAAEVYuAALLxu5AAsACj5ZuwAiAAEAGwAEK7gACxC5ACgAAfQwMT8BJjU0NjcnNxc2MzIXNxcHFhUUBgcXBycOASMiJwc3FBYzMjY1NCYjIgYUPSIREDxJRTA2NDJFST0iEhA9SUYXNBo3LkZVMiQkMjIkJDKdPi5BIDcWPkpGGRlGSj4tQCE3Fz5KRwwMGEf3LTU1LS01NQAAAAEAJ%2F%2BSAdQC6QAtAF0AuAAARVi4ACcvG7kAJwAOPlm4AABFWLgAEy8buQATAAQ%2BWbgAJxC5AAMAAfS6AAYAEwAnERI5uAATELgAENC4ABMQuQAaAAH0ugAdACcAExESObgAJxC4ACrQMDEBLgEjIgYVFB4EFRQGBxUjNS4BJzceATMyNjU0LgQ1NDY3NTMVHgEXAYMbMiAkJic7RDsnTk5hLGEjQCZFJConJztEOydRR2EwSB0B3hkZHiIYIR4gLkEwSGcRaGQFJyBjHR0iIxokISEuPi1KYQ5nZQcsHwAAAQAwAAAB8QKHACwAVwC4AABFWLgAFi8buQAWAA4%2BWbgAAEVYuAADLxu5AAMABD5ZuwAkAAEAJQAEK7gAAxC5AAEAAfS4AATQuAAlELgAC9C4ACQQuAAM0LgAFhC5AB0AAfQwMTchFSE1PgE1NCYnIzU3My4BNTQ%2BAjMyFhcHLgEjIgYVFBYXMxUjHgEVFAYH7gED%2Fj8tPQEBZEQGBwkgOU4vOFMiUBEmGCgvBgWUgQEBFRh8fFsUTzYHDQdWBRQoFC9MNR0qJ1AVFS4wEiQSWwcOByQ0GwAAAQAMAAACBAJ7AB0AhAC4AABFWLgAHS8buQAdAA4%2BWbgAAEVYuAAJLxu5AAkADj5ZuAAARVi4ABQvG7kAFAAEPlm6AAQAHQAUERI5ugAZAB0AFBESObgAGS%2B5AAwAAfS4ABkQuAAN0LgAGRC4ABjQuAAYL7gAENC4ABgQuQAVAAH0uAAR0LgAGRC5ABsAAfQwMRMXHgEXMz4BPwEzAzMVIxUzFSMVIzUjNTM1IzUzA6MzDBgOBA0YDTKUk3qampqTmZmZepMCe4UhQiAhQiCF%2FttGN0aTk0Y3RgElAAEAFf%2F0AgcChwAxAG0AuAAARVi4ABcvG7kAFwAOPlm4AABFWLgAAy8buQADAAQ%2BWbsAKQABACoABCu4ACoQuAAH0LgAKRC4AAjQuAApELgAI9y4ABDQuAAjELkAIgAB9LgAEdC4ABcQuQAeAAH0uAADELkALgAB9DAxJQ4BIyImJyM1NyY0NTwBNyM1Nz4DMzIWFwcuASMiBgczFSMVHAEXMxUjHgEzMjY3AgckXDZeiRc%2BNgEBNj4MMEVWMi1WIFITKRorOQzW3wG2rA45Kh0rFFAtL3NwRQQHDAcHDAdEBThXPB8oJk8TGD45ShUIDgdLNzocGgAAAgA8%2F9cB5wKPAAYAJAA3ALsAIQABAAoABCu7ABoAAQAgAAQruAAgELgAANC4ACEQuAAG0LgAChC4AA3QuAAaELgAF9AwMQEOARUUFh8BDgEHFSM1LgM1ND4CNzUzFR4BFwcmJxE%2BATcBEyQkJSPUHUQiUTFPOB8gOk4vUSc%2FFkMeGxUkDwGwEEAtLUEPRRkdBV9fBihBWDY1Vj8pCGFdBB0XWhgD%2FvAEEwwAAAH%2FVf%2F0AQoCmAADABgAuAAARVi4AAAvG7kAAAAEPlm4AAHcMDEHATMBqwFgVf6gDAKk%2FVwAAAD%2F%2F%2F9V%2F%2FQBCgKYAgYAxgAA%2F%2F8AGv%2F0A0ACmAAnALYAAAEGACcAxgF9AAAABwC2AeEAAAAA%2F%2F8AL%2F%2F0AyECmAAnALf%2F4wEGACcAxgFkAAAABwC6AbEAAAAA%2F%2F8AL%2F%2F0AyMCmAAnALf%2F4wEGACcAxgFVAAAABwC4AdUAAAAA%2F%2F8AGf%2F0AykCmAAnALn%2F%2FgEGACcAxgF6AAAABwC6AbkAAAAAAAEAIgBeAe4CNgALAB0AuwADAAEAAAAEK7gAAxC4AAbQuAAAELgACNAwMRMjNTM1MxUzFSMVI9KwsGywsGwBFmi4uGi4AAAAAAEAIgEWAe4BfgADAA0AuwABAAEAAgAEKzAxEyEVISIBzP40AX5oAAABADAAcAHgAiMACwALALoABQAJAAMrMDE%2FASc3FzcXBxcHJwcwjo5Jj49Jjo5Jj4%2B6j5BKkJBKkI9KkJAAAAAAAwAiAEkB7gJLAAsAFwAbADIAuAAARVi4AAYvG7kABgAMPlm7AA8AAQAVAAQruwAZAAEAGgAEK7gABhC5AAAAAfQwMQEiJjU0NjMyFhUUBgM0NjMyFhUUBiMiJgMhFSEBCCMuLiMjLi50LiMjLi4jIy6VAcz%2BNAGxKyIiKysiIiv%2B5SIrKyIiKysBCmgAAAD%2F%2FwAiAKMB7gHyAiYAzQB0AAYAzQCNAAAAAQAiAGgB7gIwAAkAFQC6AAEACAADK7oABQAIAAEREjkwMRMlFQ8BFR8BFSUiAcywh4ew%2FjQBf7F5Oi8ELzp5sQAAAAABACIAaAHuAjAACQAVALoACAABAAMrugAFAAEACBESOTAxAQU1PwE1LwE1BQHu%2FjSwh4ewAcwBGbF5Oi8ELzp5sQAAAAIAIgAAAe4CNgALAA8AOAC4AABFWLgADi8buQAOAAQ%2BWbsAAwABAAAABCu4AAMQuAAG0LgAABC4AAjQuAAOELkADAAB9DAxEyM1MzUzFTMVIxUjByEVIdKwsGywsGywAcz%2BNAEmaKioaIg2aAAAAAABADIBEgHeAp4ACQA4ALgAAEVYuAAALxu5AAAAED5ZuAAC3LgAABC5AAUAAfS6AAYAAAACERI5uAACELgACNC4AAnQMDETMxMjLwEjDwEjzXabeS4tBC0ueQKe%2FnSAh4eAAAAAAQAdAPAB8wGkABcAJwC7AAgAAQAPAAQruAAPELgAFNy5AAMAAfS4AAvQuAAPELgAF9AwMRM%2BATMyHgIzMjY3Fw4BIyIuAiMiBgcdJUsmHy4nIxUVIxBMJUsmHy4nIxUUJBABPTkuGBwYHhw7OS4YHBgeHAABACIAXgHuAX4ABQANALsAAQABAAQABCswMRMhESM1ISIBzGz%2BoAF%2B%2FuC4AAEAQf84Af0B8AAXAD8AuAAARVi4AAsvG7kACwAEPlm4AABFWLgAES8buQARAAQ%2BWbkABQAB9LoADgARAAUREjm6ABQAEQAFERI5MDETMxEUFjMyNjcRMxEjJyMOASMiJicXFSNBkx0gHCcWk3gLBBM5IRIfDQmTAfD%2B3zYoGh0BSP4QRSQlCA5agAD%2F%2FwCBAj4BaALUAAcA4AEWAAAAAP%2F%2FAMQCPgGrAtQABwDiARYAAAAA%2F%2F8AfAI%2BAbAC1AAHAOQBFgAAAAD%2F%2FwBwAj8BvALGAAcA5gEWAAAAAP%2F%2FAG0COwG%2FAsYABwDpARYAAAAA%2F%2F8AjAJQAaACrQAHAOgBFgAAAAD%2F%2FwClAiQBhwLwAAcA6wEWAAAAAP%2F%2FALD%2FIwFsAAQABwDtARcAAAAAAAH%2FawI%2BAFIC1AADABgAuAAARVi4AAMvG7kAAwAMPlm4AAHcMDEDMxcjlY5ZawLUlgAAAAAB%2F14CvgBLAzYAAwALALoAAQADAAMrMDEDMxcjopxRdQM2eAAB%2F64CPgCVAtQAAwAYALgAAEVYuAAALxu5AAAADD5ZuAAC3DAxEyM3MxlrWY4CPpYAAAAAAf%2B1Ar4AogM2AAMACwC6AAIAAAADKzAxEyM3Myp1UZwCvngAAf9mAj4AmgLUAAcANwC4AABFWLgABi8buQAGAAw%2BWbgAAEVYuAADLxu5AAMADD5ZuAAGELgAANy6AAUAAAAGERI5MDEDMxcjJyMHIzp0YGM1BDVjAtSWT08AAAAB%2F1gCvgCoAzYABwAXALoABgABAAMruAAGELgAB9y4AAPQMDEDNzMXIycjB6hgkGBxNQQ1Ar54eD09AAAB%2F1oCPwCmAsYAGABBALgAAEVYuAAALxu5AAAADD5ZuAAARVi4AA8vG7kADwAMPlm7ABQAAQADAAQruAAPELkACAAB9LgAAxC4AAzQMDEDPgEzMh4CMzI2NzMOASMiLgIjIgYHI6YIOCgUIhwZCw0QBksIOCgUIR0ZCw0QBksCP0VCDhAOFBhEQw4RDhQZAAAB%2F1YCvwCqA0cAFwAjALoAAAARAAMrugAFAAwAAyu4AAAQuAAI0LgADBC4ABTQMDETIi4CIyIGByM%2BATMyHgIzMjY3Mw4BPxQiHRkMDRQFSwg8JxQiHRkMDRQFSwg8Ar8OEQ4UGUVDDhEOFBlFQwAAAf92AlAAigKtAAMACwC4AAMvuAAB3DAxAyEVIYoBFP7sAq1dAAAAAAL%2FVwI7AKkCxgALABcAKAC4AABFWLgAAC8buQAAAAw%2BWbgABty4AAAQuAAM0LgABhC4ABLQMDEDIiY1NDYzMhYVFAYzIiY1NDYzMhYVFAZjHycnHx8nJ6cfJycfHycnAjsoHh0oKB0eKCgeHSgoHR4oAAAAAv9XArwAqQNIAAsAFwAbALoABgAAAAMruAAAELgADNC4AAYQuAAS0DAxAyImNTQ2MzIWFRQGMyImNTQ2MzIWFRQGYx8nJx8fJyenHycnHx8nJwK8KB4eKCgeHigoHh4oKB4eKAAAAAAC%2F48CJABxAvAACwAXABMAugAMAAAAAyu6AAYAEgADKzAxESImNTQ2MzIWFRQGJzI2NTQmIyIGFRQWMz4%2BMzM%2BPjMRGBgRERgYAiQ3Ly83Ny8vNzcaFRUaGhUVGgAAAAAC%2F48CuQBxA30ACwAXABMAugAMAAAAAyu6AAYAEgADKzAxESImNTQ2MzIWFRQGJzI2NTQmIyIGFRQWMz4%2BMzM%2BPjMRFxcRERgYArk1LS01NS0tNTcXFBQXFxQUFwAAAAAB%2F5n%2FIwBVAAQAEQATALoAAgARAAMrugALAAoAAyswMSczBx4BFRQOAgcnPgE1NCYnJ1YUGiAdMEAkCyQvGSIELwgjHxolGg0COwQUFA0VCAAAAAAB%2F5n%2FIwBVAAQAEQATALoAEQACAAMrugAKAAsAAyswMSczBx4BFRQOAgcnPgE1NCYnJ1YUGiAdMEAkCyQvGSIELwgjHxolGg0COwQUFA0VCAAAAP%2F%2FADUAAADfAtICBgAmAAAAAQAAAPEAZAAHAGkABQABAAAAAAAKAAACAAFzAAMAAQAAAGAAYABgAGAArgEWAWQBqAHmAhwCeAKyAtIDBgNOA3QD2gQqBHQEugUgBXIF3gYKBkYGggb4B1QHkgfICD4Isgj8CXQJ0gokCsYLFAtIC5IL2AwMDIwM4g0sDaAOFg5gDsoPFA9qD6YQGBByEMYQ%2BhEGERIRHhEqETYRQhGoEbQRwBHMEdgR5BHwEfwSCBIUEiASLBI4EkQSUBJcEuITPhNKE1YTYhNuE3oT2BQaFCYUMhQ%2BFEoUVhRiFRQVIBUsFTgVRBVQFVwVaBV0FYAVoBWsFbgVxBXQFdwV6BZOFt4XXBdoF3QXgBeMF5gXpBgeGHwY%2FBmCGjAahBq%2BGwwbehvKHCQcjhzEHUQdrB3OHfYeAh4OHjweYh6yHv4fFB8gH1Qfeh%2BGH5IfnB%2BqH8If2h%2FmH%2FIgBiAOICIgNiBAIGYgeiCcIL4g2iD2IVIhriHIIdoh9CIOIjYipiLYI1Qj0CRiJOIk7CT2JQAlCiVOJXQlsCYKJkwmVCZcJrAm7icqJ4An8ChcKMopRimcKbgpwCnSKeQp9ioIKiwqQCpgKqgqtCrWKvgrMCtiK5wrsiv4LAIsDCwWLCAsKiw0LD4sSCxiLHQsjiygLM4s7C00LWwtgC26Le4uHi5OLnguoi6iLqoAAQAAAAEMzGhqkv5fDzz1AAkD6AAAAADNl4CfAAAAAM2X4xD%2FGf6BBMcDzgABAAkAAgAAAAAAAAKyAFAAAAAAANAAAADQAAACPf%2F6Al0ATQJGAC4CewBNAiQATQIMAE0CfgAuAqIATQEtAE0B%2FQAQAmYATQIGAE0C%2BgBNApkATQKsAC4CXgBNAqwALgJoAE0CLAAjAiwAGQKZAEkCLP%2F5Ay0ADgI3AAsCDf%2F4Ah0AJAIWAC8CPQBBAdMAJAI9ACcCBgAkAVUAGAIWACICOwBBARQANQEW%2F80CJABBAR4AQQNZAEECPABBAisAJAI9AEECPAAnAY4AQQG7ABUBfwARAjgAPAILAAwDCAAYAgIADgIJAAwBzAAmAj3%2F%2BgI9%2F%2FoCPf%2F6Aj3%2F%2BgI9%2F%2FoCPf%2F6A03%2F8gJGAC4CJABNAiQATQIkAE0CJABNAS3%2F9AEtAEsBLf%2FuAS3%2F7QKZAE0CrAAuAqwALgKsAC4CrAAuAqwALgKsACgDZwAuApkASQKZAEkCmQBJApkASQIN%2F%2FgClAAaAmkATQIWAC8CFgAvAhYALwIWAC8CFgAvAhYALwMSAC8B0wAkAgYAJAIGACQCBgAkAgYAJAEU%2F%2FUBFAA4ART%2F8AEU%2F%2BEBFABBAjwAQQIrACQCKwAkAisAJAIrACQCKwAkAisAJAM2ACQCeABBAjgAPAI4ADwCOAA8AjgAPAIJAAwCCQAMAjAAKgI9AEECkAAYArAAGAKbABkCEAAlAhAARgIQAB4CEAAWAhAAEwIQABcCEAApAhAALAIQACoCEAAiASwAPQEsAC4BLAA9ASwALgFUAFEBVABRAc8AKQHPACoBLABMAhgATAEsADcBLABHAhgANwIYAEcBLABHAhgARwEkADEBJAA2AeAAMQHgADYBTAArAUwAKwHgACsDIAArASwAPQFZACgB9AAMAVgASAFYADABWABXAVgALgFYAB8BWAAuAVMADQEMAFYBUwAcAQwAVgHJACYCEAAlAnwAJwLuAC0BzgAgA4cAMQIQACIBeABMAXgAGwF4ABsBeAAjAXgAGgF4AEwBeAAbAXgAGwF4ACMBZwAdAXUAGAFnAB0BdQAYAW0AJwIQABQCEAAnAhAAMAIQAAwCEAAVAhAAPABg%2F1UAYP9VA1kAGgMpAC8DTgAvAzIAGQIQACICEAAiAhAAMAIQACICEAAiAhAAIgIQACICEAAiAhAAMgIQAB0CEAAiAj0AQQIrAIECKwDEAisAfAIrAHACKwBtAisAjAIrAKUCKwCwAAD%2FawAA%2F14AAP%2BuAAD%2FtQAA%2F2YAAP9YAAD%2FWgAA%2F1YAAP92AAD%2FVwAA%2F1cAAP%2BPAAD%2FjwAA%2F5kAAP%2BZANAAAAEUADUAAQAAA9j%2B7wAABOH%2FGf7ZBMcAAQAAAAAAAAAAAAAAAAAAAPEAAwHhArwABQAAAooCWAAAAEsCigJYAAABXgAyASAAAAILBwMDBAMCAgQgAAAHAAAAAQAAAAAAAAAAQURCRQAgAAD%2B%2FwLu%2FwYAAAPYAREgAAGTAAAAAAHgApQAAAAgAAMAAAACAAAAAwAAABQAAwABAAAAFAAEAdIAAAA8ACAABAAcAAAADQAvADkAQABaAGAAegB%2BAL8AzwDfAO8A%2FwExAVMCxgLaAtwgFCAaIB4gIiA6IEQgdCCsIhIiFf%2F%2FAAAAAAANACAAMAA6AEEAWwBhAHsAoADAANAA4ADwATEBUgLGAtoC3CATIBggHCAiIDkgRCB0IKwiEiIV%2F%2F8AAf%2F1AAAATAAA%2F8MAAP%2B9AAAAAP94AAD%2FdwAA%2FzYAAP4U%2FgT9%2F%2BCJAAAAAOB94F3gguBB4Bjeu96yAAEAAAAAADgAAABUAAAAXgAAAGYAbAAAAKgAAADEAAAA4AAAAAAAAAAAANoA3gAAAAAAAAAAAAAAAAAAAAAAAwCKAI8AsQDBAMgAewCOAKEAogCrAMwAhwCaAIYApwCIAIkA0QDQANIAjACwAKMAqQCkANQAoADYAKUAqACmANUA7wCLAMUAwgDAAMMAqgCsANwArgC7AJgA1gCbAK8A3QC%2FANMAswC0ANkA1wCtAJ4A3wCyALwAmQDJAMoAywCNAFUASABJAEoASwBMAE0AzgBOAFAAUQBSAFMAVABWAHAAdwBoAGkAagBrAGwAbQDPAG4AcQByAHMAdAB1AHgAdgBPAG8AkACRAJQAkgCTAJUAALgAACxLuAAJUFixAQGOWbgB%2F4W4AEQduQAJAANfXi24AAEsICBFaUSwAWAtuAACLLgAASohLbgAAywgRrADJUZSWCNZIIogiklkiiBGIGhhZLAEJUYgaGFkUlgjZYpZLyCwAFNYaSCwAFRYIbBAWRtpILAAVFghsEBlWVk6LbgABCwgRrAEJUZSWCOKWSBGIGphZLAEJUYgamFkUlgjilkv%2FS24AAUsSyCwAyZQWFFYsIBEG7BARFkbISEgRbDAUFiwwEQbIVlZLbgABiwgIEVpRLABYCAgRX1pGESwAWAtuAAHLLgABiotuAAILEsgsAMmU1iwQBuwAFmKiiCwAyZTWCMhsICKihuKI1kgsAMmU1gjIbgAwIqKG4ojWSCwAyZTWCMhuAEAioobiiNZILADJlNYIyG4AUCKihuKI1kguAADJlNYsAMlRbgBgFBYIyG4AYAjIRuwAyVFIyEjIVkbIVlELbgACSxLU1hFRBshIVktALAAKwCyAQECKwGyAgICKwG3AiYeGBMMAAgrtwMlHhgTDAAIKwC3ATAoIhgQAAgrALIECAcrsAAgRX1pGERLsGBSWLABG7AAWbABjgAAFABzAJIAlgAAAAz%2FMwAMAeYADAIGAAwCPgAMAn4ADAKQAAwCyAAMAAAABwBaAAMAAQQJAAEAHgAAAAMAAQQJAAIACAAeAAMAAQQJAAMARgAmAAMAAQQJAAQAKABsAAMAAQQJAAUAggCUAAMAAQQJAAYAJAEWAAMAAQQJAA4ASAE6AFMAbwB1AHIAYwBlACAAUwBhAG4AcwAgAFAAcgBvAEIAbwBsAGQAMQAuADAANQAwADsAQQBEAEIARQA7AFMAbwB1AHIAYwBlAFMAYQBuAHMAUAByAG8ALQBCAG8AbABkADsAQQBEAE8AQgBFAFMAbwB1AHIAYwBlACAAUwBhAG4AcwAgAFAAcgBvACAAQgBvAGwAZABWAGUAcgBzAGkAbwBuACAAMQAuADAANQAwADsAUABTACAAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAMAA7AGgAbwB0AGMAbwBuAHYAIAAxAC4AMAAuADcAMAA7AG0AYQBrAGUAbwB0AGYALgBsAGkAYgAyAC4ANQAuADUAOQAwADAAUwBvAHUAcgBjAGUAUwBhAG4AcwBQAHIAbwAtAEIAbwBsAGQAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAZABvAGIAZQAuAGMAbwBtAC8AdAB5AHAAZQAvAGwAZQBnAGEAbAAuAGgAdABtAGwAAgAAAAAAAP%2B1ADIAAAAAAAAAAAAAAAAAAAAAAAAAAADxAAABAgEDAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQCtAMkAxwCuAGIAYwCQAGQAywBlAMgAygDPAMwAzQDOAGYA0wDQANEArwBnAJEAsADWANQA1QBoAOsA6QDtAGoAaQBrAG0AbABuAKAAbwBxAHAAcgBzAHUAdAB2AHcA1wB4AHoAeQB7AH0AfAChALEAiQB%2FAH4AgACBAOwAugDqAO4BBAEFAAkAEwAUABUAFgAXABgAGQAaABsAHAARAA8AHQAeAAQAowAiAKIACgAFALYAtwC0ALUAxADFAL4AvwCpAKoAEAEGALIAswDDAIcAQgALAAwAPgBAAF4AYAASAF8APwDoAA0AhgCIAIsAigAjAAYBBwEIAQkBCgELAQwBDQEOAQ8AnQCeARABEQCDAL0ABwCFAJYBEgCEALwBEwAIAPUA9AD2AA4A7wDwALgAIAAfACEAkwBBAGEApAEUAEMAjQDYANkAjgDaAN0A3gEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUETlVMTAJDUgNmX2YDZl90B3VuaTAwQUQIb25lLnN1cHMIdHdvLnN1cHMKdGhyZWUuc3Vwcwlmb3VyLnN1cHMJemVyby5kbm9tCG9uZS5kbm9tCHR3by5kbm9tCnRocmVlLmRub20JZm91ci5kbm9tBmEuc3VwcwZvLnN1cHMERXVybwd1bmkyMjE1B3VuaTAwQjUHdW5pMDMwMAt1bmkwMzAwLmNhcAd1bmkwMzAxC3VuaTAzMDEuY2FwB3VuaTAzMDILdW5pMDMwMi5jYXAHdW5pMDMwMwt1bmkwMzAzLmNhcAd1bmkwMzA0B3VuaTAzMDgLdW5pMDMwOC5jYXAHdW5pMDMwQQt1bmkwMzBBLmNhcAd1bmkwMzI3C3VuaTAzMjcuY2FwB3VuaTAwQTAFaS50cmsAAAAAAAAB%2F%2F8AAgABAAAADAAAAAAAAAACAAgABAA3AAEAPgA%2BAAEATgBPAAEAZwBnAAEAbgBvAAEAeAB4AAEAeQB6AAIA2gDaAAEAAQAAAAoAMABEAAJERkxUAA5sYXRuABoABAAAAAD%2F%2FwABAAAABAAAAAD%2F%2FwABAAEAAmtlcm4ADmtlcm4ADgAAAAEAAAABAAQAAgAAAAIACgEuAAEAJAAEAAAADQBCAGgAegCcALIAwADWAOQA8gD4AQIBEAEaAAEADQAJABMAGQAbADMANQBWAHAAiwCNAJ4ApwCpAAkAGf%2F6ABv%2F5AAz%2F94ANf%2FcAGUADABmACAAnv%2FuAKf%2F0ACvAAYABAAb%2F%2BQANf%2FuAKf%2FzgCvABAACAAz%2F%2FYANf%2FtAGMAEQBlACgAZgBBAJ7%2F%2FQCn%2F%2BUArwAzAAUAM%2F%2FmADX%2F9gCe%2F9gAq%2F%2F2AK%2F%2F9AADABn%2F%2BACn%2F%2BwArwAbAAUAGf%2FwABv%2F9gCe%2F%2BwAq%2F%2F8AK8ACwADAKf%2F4QCp%2F9gAq%2F%2FZAAMAM%2F%2FmAKn%2F3ACv%2F8sAAQAZ%2F8wAAgAZ%2F6gAG%2F%2B7AAMAGf%2FcABv%2F3AA1%2F%2BwAAgBmABAA8AAHAAIAGf%2FUADP%2F7AACFIwABAAAFN4WLAA5AC4AAP%2F5%2F73%2F8f%2F5%2F8AAGABAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5v%2B6AAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F7wAAAAA%2F6gAAAAAAAAAAAAA%2F%2BT%2F5P%2FgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2FoP%2FK%2F8r%2FggAAAC0AAAAAAAD%2Fp%2F%2FEAAD%2Fq%2F%2FL%2F6f%2F3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FYABwAAAAAAAP%2FYAAAAAAAA%2F%2BQAAP%2Fw%2F7AAB%2F%2F7%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F9j%2F9QAA%2F%2B4AAAAA%2F%2B7%2FsAAAAAAAAAAA%2F%2FYAAP%2F2AAAAAAAA%2F%2B4AAP%2Bs%2F9j%2F5P%2BiAAAAAAAAAAD%2F7v%2F6%2F9z%2FuP%2Bv%2F%2B7%2F%2BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5AAA%2F%2Fj%2F7gAAAAD%2F7gAAAAAAAP%2Fu%2F%2FgAAAAAAAAAAP%2FtAAD%2F9gAA%2F%2BIAAP%2FsAAAAAAAAAAAAAP%2Fz%2F%2FgAAAAAAAD%2F7v%2F2%2F%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F0%2F%2B7%2F%2BP%2Fw%2F%2BwAAP%2FuAAAAAAAA%2F%2BT%2F9v%2FbAAAAAAAA%2F%2FYAAP%2Fu%2F%2FYAAAAA%2F7gABAAAAAAAAAAA%2F%2Fj%2F%2BAAAAAAAAP%2Fu%2F%2FYAAP%2Fc%2F%2B4AAAAAAAAAAAAAAAAAAAAA%2F%2BwAAP%2F4AAAAAAAAAAAAAAAA%2F%2FgAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FqAAAAAP%2F0AAAAAAAAAAD%2F7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5v%2Fu%2F%2Fb%2F5gAA%2F%2Fb%2F3v%2FQAAD%2F9v%2FrAAD%2F5AAAAAD%2F8AAAAAD%2F3P%2F1%2F94AAP%2FI%2F%2BQAAAAAAAAAAP%2FuAAD%2F8P%2Fe%2F9D%2F3v%2Fm%2F%2Bb%2FzP%2F2AAAAAP%2FuAAAAAAAAAAAAAP%2BI%2F9v%2Fxf%2Bq%2F%2FgAAP%2FL%2F5QAAP%2F6%2F%2BQAAP%2FcAAD%2F7v%2FyAAAAAP%2Fl%2F%2Fb%2FVP%2Bw%2F5D%2FkAAAAAAAAAAA%2F7EAAP%2FM%2F3T%2FlP%2FL%2F9oAAP%2FU%2F%2BgAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAAAA%2F%2BwAAAAAAAAAAAAA%2F%2FYAAP%2FsAAAAAAAAAAD%2FygAAAAAAAP%2FoAAAAAAAA%2F%2FwAAAAAAAD%2F9v%2FmAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F8AAAAAAAAAAAAAD%2F7AAAAAD%2F7v%2F2AAAAAAAAAAD%2F9v%2Fy%2F%2FYAAP%2F2AAD%2F9v%2F0AAAAAAAA%2F%2FYAAP%2F2AAQAAAAAAAAAAP%2Fu%2F%2FYAAAAAAAAAAAAA%2F%2B7%2F4P%2FiAAAAAP%2Fu%2F%2B4AAAAAAAAAAP%2FsAAAAAP%2FwAAAAAAAAAAAAAAAA%2F%2B4AAAAAAAAAAAAA%2F%2B4AAAAAAAD%2F9AAAAAD%2F%2BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FIAAAAAAAAAAAAAAAAAAAAA%2F%2B7%2FwAAA%2F%2BgAAP%2BM%2F9j%2F5%2F%2FU%2F%2BT%2FwP%2F0%2F7T%2FhgAA%2F%2FT%2F1gAAAAD%2FvAAU%2F7wAAAAAAAAAAP%2FsAAAAAAAA%2F%2Bj%2F6P%2Fn%2F7D%2FyP%2FW%2F8T%2FwP%2FYAAAAAAAAAAAAAAAAAAD%2F7v%2F2AAAAAAAA%2F%2Bb%2F9P%2F2AAAAAP%2F4AAAAAP%2FIAAAAAAAAAAAAAAAAAAD%2F8AAAAAAAAP%2F2%2F%2FYAAAAAAAAAAAAA%2F%2FAAAAAAAAD%2F%2BAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FwAAAAAAAD%2F2gAAAAAAAAAA%2F%2FQAAAAA%2F9EAAAAAAAAAAAAAAAAAGf%2F4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F4%2F%2FYAAAAA%2F%2Fb%2F5gAAAAAAAAAA%2F%2B7%2F9gAAAAD%2FxAAA%2F%2B7%2F%2B%2F%2BQ%2F%2B7%2F7f%2Fq%2F%2B7%2FtAAA%2F8n%2FnAAA%2F%2B7%2F2gAAAAD%2FyAAY%2F9EAAAAAAAAAAAAA%2F%2FAAAAAA%2F%2B7%2F5P%2Fa%2F7T%2Ft%2F%2FY%2F8n%2FyP%2B6%2F9wAAAAAAAAAAP%2F2AAD%2F7v%2F1AAD%2F9AAAAAAAAP%2Fi%2F%2Fb%2F7P%2F0%2F%2Bz%2F8%2F%2FoAAD%2F7v%2FyAAAAAP%2FEABQAAAAAAAAAAAAAAAAAAAAAAAD%2F9P%2F0AAD%2F6P%2FoAAAAAAAAAAAAAAAAAAAAAP%2FkAAD%2F%2BP%2FkAAAAAAAA%2F%2BYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F1AAAAAAAAAAAAAAAAAAA%2F%2BYAAP%2FgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAAAA%2F%2BT%2F9gAAAAAAAAAAAAAAAAAAAAD%2F9gAA%2F%2BQAAAAAAAAAAAAAAAD%2F7gAGAAAAAAAAAAD%2F7gAAAAAAAAAAAAAAAP%2F7%2F94AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F3AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2BM%2F%2BX%2F2v%2BQAAAAJP%2Fs%2F28AAAAAAAAAAAAAAAAAAAAAAAAAAP%2FqAAD%2FWAAAAAAAAAAAAAAAAAAA%2F6QAAAAA%2F4D%2Fg%2F%2FE%2F90AAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BQAAP%2F2%2F9z%2F9gAA%2F%2Fr%2F9gAAAAD%2F7AAAAAD%2F9f%2F7AAD%2F7AAA%2F%2B4AAP%2Fo%2F97%2F%2BP%2FxAAAAAAAAAAD%2F5gAA%2F%2FAAAAAA%2F%2Fr%2F%2Bv%2FwAAD%2F8QAAAAAAAAAAAAAAAAAAAAAAKgAAACoAKv%2F1%2F%2FYAAAAY%2F8AAAAAAAAAAAP%2FsAAD%2F9gAAAAAAAP%2F8AAAAIP%2FsADL%2F%2FAAEAAAAAAA6ABgAFgAoABgABAAA%2F%2Fj%2F7gAAAAD%2F%2BP%2FuAAAAAAAjAAAAAP%2FcAAAAAP%2FuAAAALv%2F4AAAAAAAAAAAAAAAA%2F%2B0AAP%2FuAAAAAAAAAAD%2F6AAAAAAABAAcAAAAAAAAAAAAAP%2FSAAAAAP%2F4%2F%2FgAAAAAAAAAAAAA%2F%2B4AAAAAAAQAAAAA%2F88AAAAA%2F%2B7%2F9v%2F2AAD%2F3AAEAAAAAAAAAAD%2F9gAA%2F%2BQAAAAA%2F%2B7%2F7v%2F8AAD%2F3P%2FwAAAAAAAAAAAAAAAA%2F%2BAAAAAAAAAAAP%2F4%2F6v%2F3AAAAAD%2F8P%2FwAAAAAAAAAAD%2F5AAAAAD%2F5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BgAAAAAAAAAAAAAAAAAAP%2F2AAD%2F8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FFAAAAAP%2FIAAAAAP%2F4%2F9z%2F9gAAAAAAAAAA%2F%2FX%2F%2BwAAAAAAAAAAAAAAAP%2FcAAD%2F8AAAAAAAAAAA%2F%2Bz%2F%2BP%2FgAAD%2F%2FP%2F4%2F%2Fj%2F5gAAAAAAAP%2F7%2F%2FMAAAAAAAAAAAAAAAAAAAAA%2F%2Fv%2F6AAAAAAAAP%2BE%2F7AAAAAAAAD%2F3v%2Fu%2F%2BgAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FU%2F4QAAP%2FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F2AAAABf%2Fw%2F6j%2F7AAA%2F%2FYAAP%2FjAAD%2F9v%2B3AAAAAAAAAAAABP%2F0ACD%2F6AAAAAAAAAAAAAAAAAAAABgABQAEAAD%2F5P%2FsAAD%2F9v%2F2AAAAAAAAAAAAAP%2FkAAAAAP%2FsAAAAAAAA%2F%2BcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5AAAAAAAAAAAAAAAAAAA%2F%2FYAAP%2FnAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAA%2F%2B4AAAAA%2F%2Fj%2F9gAAAAAAAAAEAAAAAAAAAAD%2F9AAA%2F%2FYAAAAAAAAAAAAAAAD%2F7AAYAAQAAAAAAAAAAAAA%2F9wAAAAAAAAAAAAA%2F9z%2F9AAAAAAAAAAAAAQAAAAAAAD%2F7AAAAAD%2F4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FIAAAAAAAAAAAAAAAAAAP%2FuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FkAAAAAP%2FnAAD%2F9gAAAAD%2Frf%2F4AAAAAAAA%2F%2FYAAP%2F4%2F%2BIAAAAAAAAAAAAAAAAACwAAAAAAAAAA%2F%2Fj%2F7gAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BYAAAAAAAAAAAAA%2F%2BwAAAAA%2F%2FAAAP%2F2AAAAAP%2FEAAAAAAAAAAD%2F7AAA%2F%2Fj%2F2AAAAAAAAAAAAAAAAAAb%2F%2FwAAAAAAAD%2F%2BP%2F4AAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5AAAAAAAAAAAAAD%2F6gAAAAD%2F%2BAAAAAD%2F%2BAAAAAAAAAAAAAAAAP%2FyAAD%2F9gAAAAAAAP%2F2AAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAD%2F%2BAAAAAD%2F5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F6%2F%2FL%2F5AAA%2F%2BYAAP%2Bk%2F9n%2F5f%2Fi%2F%2Fb%2F2gAA%2F%2B7%2FegAA%2F%2Fb%2F7QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5gAAAAD%2F7P%2Fs%2F%2BX%2FzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FkAAAAAAAAAAAAAAAAAAD%2F2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F8gAAAAD%2F9v%2FwAAAAAAAA%2F3z%2Fzv%2F2%2F80AAP%2FeAAD%2F6%2F9yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F%2Bf%2FsAAD%2F9v%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9gAAAAD%2F7AAA%2F%2FYAAP%2B0%2F%2B7%2F9P%2Fs%2F%2Fb%2F3QAA%2F%2B3%2FwAAAAAD%2F4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9gAA%2F%2Bz%2F7P%2Fs%2F%2B7%2F6%2F%2FlAAAAAAAAAAD%2F7P%2F2AAAAAAAAAAD%2F5v%2FwAAD%2F%2Bv%2FuAAD%2F5v%2F2%2F%2Bb%2F8P%2FwAAD%2F5v%2F2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F4%2F%2FAAAP%2FuAAD%2F3P%2FuAAAAAP%2Fu%2F%2FAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FkAAP%2F4%2F7QAAAAAAAAAAAAAAAAAAP%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F3P%2FcAAAAAAAA%2F%2FgAAP%2FuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5v%2BoAAAAAAAAAAAAAAAA%2F%2FgAAAAAAAD%2F7QAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5v%2B0%2F7kAAP%2FuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FYAAD%2F5v%2B6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2Bb%2F8AAAAAAAAAAAAAD%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAA%2F8gAAP%2F2%2F7cAAAAAAAAAAAAAAAD%2F4v%2F0AAAAAAAAAAD%2F4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7P%2FuAAAAAAAAAAAAAP%2FkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2Fe%2F%2B3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F%2BAAAAAAAAAAAAAAAAAAAAAAAAP%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F6AAAAAAAAP9o%2F68AAAAAAAD%2F2v%2F0%2F%2BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FwAAAAAAAAAAAAAAAAAAAAAAAA%2F90AAAAAAAAAAAAAAAD%2F7AAAAAD%2F8AAA%2F%2FYAAAAA%2F8T%2F8wAA%2F%2FgAAP%2FsAAD%2F%2BP%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F8AAAAAAAAP%2FkAAAAAAAAAAAAAP%2FoAAAAAP%2FfAAAAAP%2FuAAAAAAAA%2F%2FgAAP%2F2%2F%2FYAAP%2FmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fu%2F%2BQAAAAAAAD%2F7AAAAAAAAgANAAQAIAAAACIAJQAdACgAKAAhACoAYgAiAGcAdgBbAHgAegBrAIYAkwBuAJYAngB8AKEAoQCFAKMAowCGAKUApQCHAKcApwCIAKkAqQCJAAEABACkAAYABwAIAAwAJgAnAAkAKAApACoACgALACgAKAAMACsADAANAA4ADwAQAC0AEQAuABIAEwAUAB0AFQAAABgAGQAaABwAAAAAABsAAAAcABwAHQAdACIAHwAgACEAIgA3ACMAOAAkACUABgAGAAYABgAGAAYAJgAIACYAJgAmACYAKQApACkAKQAoAAwADAAMAAwADAAMACYAEAAQABAAEAASAAwALAAUABQAFAAUABQAFAAYABUAGAAYABgAGAAAAAAAAAAAACIAHAAdAB0AHQAdAB0AHQAYADEAIgAiACIAIgAkACQAAAAdABkAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAXABYAFgABAAIANAAEADUANQAeADYAHgA2AAAAAAAyADMAMgAzADAAMAAwADAAAwAAAAAALwAAAC8AAAAvAAAABQACAEgABAAEAAsABgAGAA4ACgAKAA4ADQANABIAEgASAA4AFAAUAA4AFgAWAAwAFwAXAAIAGAAYAAMAGQAZAB4AGgAaAAQAGwAbAB8AHAAcAAUAHQAdAA0AHgAeAA8AIAAiABEAIwAjABAAJAAkAAYAJgAmABMAJwAnAAcAKgArACgALAAsABEALQAtACgALgAuABEALwAvACgAMAAwACkAMQAxABQAMgAyABUAMwAzACMANAA0ACQANQA1ACUANgA2AAgANwA3ACoAOAA9AAsAPwA%2FAA4ASQBPAA4AUABTAAMAVABUAAUAVQBVAAEAVwBdAA8AXgBiABEAYwBmABMAZwBoACgAaQBvABEAcQB0ABUAdQB2AAgAeQB6ABAAhgCHAAoAiACJACwAigCKABsAiwCLABwAjACMACAAjQCNAB0AjgCPACEAkACQACIAkQCRAAkAkgCSACIAkwCTAAkAlgCWACcAlwCXACsAmACYACcAmQCZACsAmgCdACYAngCeABgAogCiAC0ApACkAC0ApgCmAC0ApwCnABoAqQCpABcAqwCrABYArwCvABkA8ADwABMAAAABAAAACgBgAJ4AAkRGTFQADmxhdG4AGgAEAAAAAP%2F%2FAAEAAAAWAANBWkUgAB5DUlQgAChUUksgADIAAP%2F%2FAAEAAQAA%2F%2F8AAgACAAUAAP%2F%2FAAIAAwAGAAD%2F%2FwACAAQABwAIbGlnYQAybGlnYQAybGlnYQAybGlnYQAybGlnYQAybG9jbAA4bG9jbAA4bG9jbAA4AAAAAQABAAAAAQAAAAIABgAaAAEAAAABAAgAAQAGAMoAAQABACYABAAAAAEACAABABoAAQAIAAIABgAMAHkAAgAjAHoAAgAxAAEAAQAj%29%20format%28%27truetype%27%29%3B%0A%7D%0A%40font%2Dface%20%7B%0Afont%2Dfamily%3A%20%27Source%20Sans%20Pro%27%3B%0Afont%2Dstyle%3A%20italic%3B%0Afont%2Dweight%3A%20400%3B%0Asrc%3A%20url%28data%3Aapplication%2Ffont%2Dsfnt%3Bbase64%2CAAEAAAARAQAABAAQR0RFRgNEA3IAAG18AAAAQEdQT1Oz7r2nAABtvAAAFhxHU1VCjb2NzgAAg9gAAABwT1MvMlq1lDoAAGQ0AAAAYGNtYXDzMPm1AABklAAAAeZjdnQgDZkA%2BgAAaDwAAAAoZnBnbQZZnDcAAGZ8AAABc2dhc3D%2F%2FwADAABtdAAAAAhnbHlmQB3ERQAAARwAAFz4aGVhZP3Ms%2BoAAGAYAAAANmhoZWEIGwb0AABkEAAAACRobXR4lfkiLwAAYFAAAAPAbG9jYezv1iYAAF40AAAB4m1heHADCgJaAABeFAAAACBuYW1lJDg%2BsQAAaGQAAAHccG9zdNT1lfMAAGpAAAADMXByZXCXBvrrAABn8AAAAEsABQAkAAACbgKUAAMABgAJAA8AFQBxALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAIvG7kAAgAEPlm6AAQAAgAAERI5ugAFAAIAABESOboABwACAAAREjm6AAgAAgAAERI5uQAKAAH0ugAOAAIAABESObgAABC5ABEAAfS6ABUAAgAAERI5MDETIQMhEwM3FxMHAzMvASMHEzcjHwEzpgHIgv44sl6poWCr4fksHwRHoFrlKBwEApT9bAI%2F%2Firr6wHW6%2F7kiGVlAR1%2Ff10AAv%2FLAAAB1QKQAAkAEQBUALgAAEVYuAAOLxu5AA4AED5ZuAAARVi4ABEvG7kAEQAEPlm4AABFWLgADC8buQAMAAQ%2BWboABQAMAA4REjm6AAsADAAOERI5uAALL7kACQAB9DAxAScuAScjDgEPARcjByMBMxMjAWwKBQkEBBozHDrJ6GlWAWRaTFEBCXA0aTk5ZzZwPM0CkP1wAAAAAwAjAAACIAKQABMAHAAlAFcAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgAEy8buQATAAQ%2BWboAIwAAABMREjm4ACMvuQAcAAH0ugAJABwAIxESObgAABC5ABoAAfS4ABMQuQAdAAH0MDETMzIWFRQOAg8BHgEVFA4CKwETMjY1NCYrAQcTMjY1NCYrAQOmr19sGSo0GwEzRilKZDrS9l5aREtbLDNebk1JdDQCkElIITcqHAYEDEE4N08zGQF2RjgtMt3%2Bx0RNMj3%2FAAAAAQA5%2F%2FQCLQKcACEAOQC4AABFWLgABS8buQAFABA%2BWbgAAEVYuAAdLxu5AB0ABD5ZuAAFELkADAAB9LgAHRC5ABYAAfQwMTc0PgIzMhYXBy4BIyIOAhUUHgIzMjY3Fw4BIyIuAjkxWX1MOVAYNhQ1JjteQiQTKEAsKEMgIyRcPDhXOx%2F9TZV1SDcqKSAnPmJ5PC1LNh8gGzIgLCdGYQAAAAIAIwAAAjYCkAAKABUANQC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAKLxu5AAoABD5ZuQALAAH0uAAAELkAEwAB9DAxEzMyFhUUDgIrATcyPgI1NCYrAQOmeomNMVuEU7CwQGZIJmZkNmoCkId5WZRpOkAxV3pJXmj97wABACMAAAIQApAACwBNALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAsvG7kACwAEPlm4AAAQuQACAAH0ugAGAAsAABESObgABi%2B5AAQAAfS4AAsQuQAJAAH0MDETIQchBzMHIwchByGmAWoN%2FuMq8Q7vMwEmDv6OApBB1UL2QgAAAAEAIwAAAhACkAAJAEMAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgACS8buQAJAAQ%2BWbgAABC5AAIAAfS6AAYAAAAJERI5uAAGL7kABAAB9DAxEyEHIQczByMDI6YBag3%2B4y3xDfA8TgKQQeRC%2FtcAAAABADn%2F9AI7ApwAJQBNALgAAEVYuAAFLxu5AAUAED5ZuAAARVi4ACEvG7kAIQAEPlm4AAUQuQAMAAH0uAAhELkAFgAB9LoAGgAFACEREjm4ABovuQAcAAH0MDE3ND4CMzIWFwcuASMiDgIVFB4CMzI2PwEjNzMDDgEjIi4COTFagVE7URk3EzcoPmJFJBMqQi8kOBQliA3OOSRdOTtbPh%2F9TpV1RzcqKSAnPmJ5PCxLOB8XEbVA%2FuQeJSZFYgAAAAABACMAAAJpApAACwBJALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAsvG7kACwAEPlm6AAgAAAALERI5uAAIL7kAAgAB9LgAABC4AATQuAALELgAB9AwMRMzAyETMwMjEyEDI6ZOOAEoOE2DTj%2F%2B2D5OApD%2B6wEV%2FXABOP7IAAAAAAEAIwAAAPQCkAADACUAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgAAi8buQACAAQ%2BWTAxEzMDI6ZOg04CkP1wAAAB%2F%2F7%2F9AHIApAAEgArALgAAEVYuAAQLxu5ABAAED5ZuAAARVi4AAUvG7kABQAEPlm5AAwAAfQwMSUOAyMiJic3HgEzMjY3EzMDAWoIIjJEKztRFTMOOCoyPg1cTl64Kkg1HTcuKyQpSkIBzf4oAAAAAQAjAAACVwKQAAwASQC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAMLxu5AAwABD5ZugACAAAADBESObgAABC4AATQuAAMELgACNC6AAkABAAIERI5MDETMwMzATMHEyMDDwEjpk5BAwFJWPaVUX6JLU4CkP68AUT8%2FmwBYobcAAABACMAAAGSApAABQArALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAQvG7kABAAEPlm5AAIAAfQwMRMzAyEHIaZOdgEUDf6eApD9skIAAQAjAAACvAKQABkAXQC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAZLxu5ABkABD5ZuAAAELgABtC4ABkQuAAJ0LoAAwAGAAkREjm6AA0ACQAGERI5ugARABkAABESOboAFAAAABkREjkwMRMzExczNxMzAyMTPgE3IwcDIwMnIw4BBwMjpl05FgRGw12DS0wJGgwET8EsPRYEBg4ISkkCkP6eiIgBYv1wAXItaSuS%2FqQBXJItZy3%2BjgAAAAABACMAAAJmApAAEwBFALgAAEVYuAAALxu5AAAAED5ZuAAARVi4ABMvG7kAEwAEPlm4AAvQuAAAELgACNC6AAQACwAIERI5ugAOAAAAExESOTAxEzMTFzM%2BATcTMwMjAycjDgEHAyOmTpYqBAYNC0VLg02UKwQGDwpGSwKQ%2FlyJMW0zAVz9cAGjjTNqMv6fAAACADz%2F9AJeApwAEwAlADkAuAAARVi4AAovG7kACgAQPlm4AABFWLgAAC8buQAAAAQ%2BWbgAChC5ABQAAfS4AAAQuQAeAAH0MDEFIi4CNTQ%2BAjMyHgIVFA4CEyIOAhUUHgIzMj4CNTQmAR83VTkeL1R1RzdVOR4vVHYSNVc%2BIhIlOic1Vz4iSgwnSGY%2BS5FzRidIZT5LknNGAmU8YHY6ME84Hz1gdjlhdQACACMAAAItApAADgAXAEcAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgADS8buQANAAQ%2BWboACwAAAA0REjm4AAsvuAAAELkAFQAB9LgACxC5ABcAAfQwMRMzMh4CFRQOAisBAyMTMjY1NCYrAQOmuS5MNh4rTGk%2FaTRO7mZpTEhlNQKQEic8KzxYORv%2B%2BAFHUE85M%2F71AAAAAAIAPP9eAl4CnAARAC8ASwC4AABFWLgAHy8buQAfABA%2BWbgAAEVYuAAXLxu5ABcABD5ZuwAUAAEALAAEK7gAFxC5AAUAAfS4AB8QuQANAAH0uAAXELgAKdAwMRMUHgIzMj4CNTQmIyIOAgEGIyImJy4BNTQ%2BAjMyHgIVFA4CBx4BMzI2N4sSJTonNVc%2BIkpONVc%2BIgGBISBUeBlUVi9UdUc3VTkeK05tQhFUNQ8aDgENME84Hz1gdjlhdTxgdv4iC0tRE45sS5FzRidIZT5IjXBKBiwqBAMAAAIAIwAAAicCkAAIABoAVAC4AABFWLgAGi8buQAaABA%2BWbgAAEVYuAAYLxu5ABgABD5ZuAAARVi4ABUvG7kAFQAEPlm7AAAAAQAWAAQruAAaELkABwAB9LoAEwAWAAAREjkwMQEyNjU0JisBBxMyHgIVFA4CBxMjAyMDIxMBGF5kS0hgMqUuSzYeHTRGKnNTbHI3ToMBVVJGNi%2F9ATsRJTopLUo3JAj%2B4wEW%2FuoCkAAAAQAM%2F%2FQB%2FgKcAC8ASQC4AABFWLgAFC8buQAUABA%2BWbgAAEVYuAAsLxu5ACwABD5ZuQADAAH0ugALACwAFBESObgAFBC5ABsAAfS6ACMAFAAsERI5MDE3HgEzMj4CNTQmLwEuATU0PgIzMhYXBy4BIyIOAhUUFh8BHgEVFA4CIyImJ0UdVTceNCUWLSVMKjsfNkssO2AfMxpFLhwsHxAxJEwwMyI8VDJEbyiTLDESIC4cJDEXLhpIOCVCMh00KC4eKRIeJhQmLxYtHEc3LEo1Hjk7AAABAF0AAAI1ApAABwAzALgAAEVYuAACLxu5AAIAED5ZuAAARVi4AAcvG7kABwAEPlm4AAIQuQAAAAH0uAAE0DAxASM3IQcjAyMBG74NAcsNv3VOAk1DQ%2F2zAAAAAAEAT%2F%2F0AmYCkAAaADMAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgAFC8buQAUAAQ%2BWbkABwAB9LgAABC4AA3QMDETMwMGFRQWMzI%2BAjcTMwMOAyMiJjU0NjejTksJQEUcMywhC1FMUg4vQE0sZGsFBQKQ%2FoktIkdMFjBLNgGS%2FmtHZD8daGcVLxkAAAAAAQBSAAACQQKQAA0ANwC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAANLxu5AA0ABD5ZugAFAAAADRESObgAABC4AArQMDETMxMeARczPgE3EzMBI1JPGwUIAwQZNRq1VP6pXQKQ%2FpQ2bDY1bjUBbP1wAAEAXwAAAywCkAAhAFcAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgAIS8buQAhAAQ%2BWboABQAAACEREjm4AAAQuAAK0LgAFNC4ACEQuAAX0LoAEAAUABcREjm6ABsAIQAKERI5MDETMwMOAQczPgE3EzMTFhQVMz4BNxMzASMDNDY3Iw4BBwMjaFAKAwMEBBcwFqRHCQEEFCsUjk3%2B8mMHAQIEDiERs2ECkP6XNWo2Nmo1AWn%2BlzRrNjZqNQFp%2FXABkSRPJydMJ%2F5vAAAAAAH%2F3AAAAiICkAAZAEUAuAAARVi4AAEvG7kAAQAQPlm4AABFWLgAGS8buQAZAAQ%2BWbgAD9C4AAEQuAAL0LoABwAPAAsREjm6ABQAAQAZERI5MDETAzMXHgEXMz4BPwEzAxMjJy4BJyMOAQ8BI9hsVDgHDAgDESIPeFLtdVQ8CA8IAxQkEYBTAVQBPK4XKxoYMBer%2Fr7%2BsrgZMxoaNxm0AAABAFMAAAIeApAADwA3ALgAAEVYuAABLxu5AAEAED5ZuAAARVi4AA8vG7kADwAEPlm6AAYAAQAPERI5uAABELgAC9AwMRMDMxceARczPgE%2FATMBAyO%2Ba1AtCQ8JBBcrGHxT%2Fu40TQEAAZC9JEQmJUYkvP5w%2FwAAAAAB%2F%2F8AAAIdApAACQBFALgAAEVYuAADLxu5AAMAED5ZuAAARVi4AAgvG7kACAAEPlm5AAYAAfS4AADQuAAAL7gAAxC5AAEAAfS4AAXQuAAFLzAxNwEhNyEHASEHIQkBqf7UDgGJCv5aAUsP%2FlYvAiBBLv3gQgAAAAACACf%2F9AH4AfIAFAAjAFsAuAAARVi4AAUvG7kABQAIPlm4AABFWLgACi8buQAKAAg%2BWbgAAEVYuAASLxu5ABIABD5ZuAAARVi4AA0vG7kADQAEPlm4ABIQuQAVAAH0uAAFELkAHAAB9DAxNzQ%2BAjMyFhczNzMDIzcjDgEjIiYXMjY%2FAS4BIyIOAhUUFicsSl4zJz0RBBM%2BYT8IBCNYLkBMqCZPJCwVMhwkRDQfMKRGelo0KCE9%2FhpIJi5aGi0w2SYiK0hdMj89AAIAH%2F%2F0AfACyAAVACQAWwC4AABFWLgAAS8buQABABI%2BWbgAAEVYuAAILxu5AAgACD5ZuAAARVi4AAAvG7kAAAAEPlm4AABFWLgAEC8buQAQAAQ%2BWbgACBC5ABYAAfS4ABAQuQAdAAH0MDEzEzMPATM%2BATMyFhUUDgIjIiYnIwcTIgYPAR4BMzI%2BAjU0Jh%2BOTScWAiRULUBMLElfMic9EQMU6iJRIy4UMh0kRDMfLwLIvmAdK1pWRnpaNCghPQGyKiXnJiIrSF0zPj0AAAEAJf%2F0AbIB8gAdADkAuAAARVi4AAUvG7kABQAIPlm4AABFWLgAGy8buQAbAAQ%2BWbgABRC5AAwAAfS4ABsQuQAUAAH0MDE3ND4CMzIWFwcuASMiDgIVFBYzMjY3Fw4BIyImJS1LYjUsPBYtEyYdJEQ1Hzk6IDUXIhpMNlBjt0RzVDAiGTAXFShDWjJCRhoRMhQlZQACACf%2F9AInAsgAFQAkAFsAuAAARVi4ABEvG7kAEQAIPlm4AABFWLgAAS8buQABABI%2BWbgAAEVYuAAJLxu5AAkABD5ZuAAARVi4AAQvG7kABAAEPlm4AAkQuQAWAAH0uAARELkAHQAB9DAxATczAyM3Iw4BIyImNTQ%2BAjMyFhczAzI2PwEuASMiDgIVFBYBtCZNkD8IBCNYLkBMLEpeMyc6EgPVJk4lLBUyHCRENB8wAgq%2B%2FThIJi5aVkZ6WjQnIP6JLTDZJiIrSF0yPz0AAAAAAgAl%2F%2FQBvwHyABwAKgBRALgAAEVYuAAFLxu5AAUACD5ZuAAARVi4ABovG7kAGgAEPlm6AA0ABQAaERI5uAANL7gAGhC5ABMAAfS4AAUQuQAlAAH0uAANELkAKgAB9DAxNzQ%2BAjMyHgIVFAYHIQYeAjMyNjcXDgEjIiYlPgE1NC4CIyIOAgclLkldMCk5JBAMBf7EBxAlNiAdORceHVAwV2gBVAIDChYkGhszLCMJv0VxUSwbL0ElHTQOL0MsFBkRMxUfaboMGA4VJx4SFio6JAAAAAABACsAAAGNAtQAFwBWALgAAEVYuAAQLxu5ABAACD5ZuAAARVi4AAUvG7kABQASPlm4AABFWLgAFS8buQAVAAQ%2BWbgAEBC4AADQuAAFELkADAAB9LgAEBC5ABMAAfS4ABfQMDETPwE%2BATMyFhcHLgEjIgYPATMHIwMjEyNMQRAPTT4aKhIbCxoRISkIEWIMY1VMVT8B4QVRSlMNCzcHCjIrUz7%2BWAGoAAAC%2F%2F7%2FIAHyAfIAIAAvAFQAuAAARVi4ABsvG7kAGwAIPlm4AABFWLgAIC8buQAgAAg%2BWbgAAEVYuAAELxu5AAQABj5ZuwAhAAEAEwAEK7gABBC5AAsAAfS4ABsQuQAoAAH0MDEBAw4BIyImJzceATMyNj8BIw4BIyImNTQ%2BAjMyFhczNwMyNj8BLgEjIg4CFRQWAfJmFHRcMVYjJBxEKT9KEBgDJFIvPk8rSF0xJj4RAxPmI1AjKxcwHCNCMh4uAeb%2BA2FoJh01GCJPQmQjK1ZVQ3VXMyghPf5fKyrQJiIpRVkwPDoAAAAAAQAfAAAB2ALIABsARAC4AABFWLgABy8buQAHAAg%2BWbgAAEVYuAAALxu5AAAAEj5ZuAAARVi4ABovG7kAGgAEPlm4AA%2FQuAAHELkAFgAB9DAxEzMPATM%2BATMyFhUUBgcDIxM%2BATU0JiMiBgcDI61NMBAEKlAtPjUDBT5MPAQEIiYdRy5FTALI6z0jL0A5ER4U%2FsoBLBQYDSUmKi7%2BqAAAAAIAHwAAAPsCsgADAA8ALQC4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAACLxu5AAIABD5ZugAKAAQAAyswMRMzAyMTIiY1NDYzMhYVFAaATWJMohQdIxcUHSMB5v4aAksXFhkhGBYZIAAAAv%2BE%2FycA%2BwKyAA8AGwA3ALgAAEVYuAAOLxu5AA4ACD5ZuAAARVi4AAMvG7kAAwAGPlm6ABYAEAADK7gAAxC5AAoAAfQwMRcOASMiJic3HgEzMjY3EzMnIiY1NDYzMhYVFAZfDkM%2FFyMRGQoUEBwhCm9NDRMdIhgTHSM9RlYKCTkGBzAsAiRlFxYZIRgWGSAAAQAfAAAB7QLIAAwATgC4AABFWLgAAC8buQAAABI%2BWbgAAEVYuAAELxu5AAQACD5ZuAAARVi4AAwvG7kADAAEPlm6AAIAAAAMERI5uAAI0LoACQAEAAgREjkwMRMzAzMTMwcTIycPASOtTWAC%2BVjCdU5dcBpMAsj%2BHQEBy%2F7l7XJ7AAAAAQAs%2F%2FQA%2BgLIABMAKwC4AABFWLgAAC8buQAAABI%2BWbgAAEVYuAAOLxu5AA4ABD5ZuQAHAAH0MDETMwMGFBUUMzI2NxcOASMiJjU0N61NfQIRAwYHAQoWECAhBgLI%2FZEICAMSAQI7BAQhHhAaAAAAAAEAHwAAAuoB8gAsAFgAuAAARVi4AAYvG7kABgAIPlm4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAAsLxu5ACwABD5ZuAAGELgADtC4ACwQuAAh0LgAFtC4AAYQuQAnAAH0uAAc0DAxEzMHMz4BMzIeAhc%2BATMyFhUUBgcDIxM%2BATU0IyIGBwMjEz4BNTQjIgYHAyN%2FPwcEJlQmHSgaDgMvVyY9NgQEPk09BARHFUgsRUw8BARGFkgrRUwB5kkkMQ8ZIxQtMkA5ER4U%2FsoBLBQYDUsqLv6oASwUGA1LKi7%2BqAAAAQAfAAAB2AHyABoARAC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAALxu5AAAACD5ZuAAARVi4ABovG7kAGgAEPlm4AA7QuAAGELkAFQAB9DAxEzMHMz4BMzIWFRQGBwMjEz4BNTQmIyIGBwMjfz8HBCpSLj41AwU%2BTDwEBCImHUcuRUwB5kkkMUA5ER4U%2FsoBLBQYDSUmKi7%2BqAAAAgAn%2F%2FQB2wHyAA8AHwA5ALgAAEVYuAAILxu5AAgACD5ZuAAARVi4AAAvG7kAAAAEPlm4AAgQuQAQAAH0uAAAELkAGAAB9DAxFyImNTQ%2BAjMyFhUUDgITIg4CFRQWMzI%2BAjU0JtRPXixKXjJPXy1JXx8hQDIeNTMiPzIeNQxoW0V0Uy9oW0V0Uy8BvydDWjNCRidCWjNCRwAC%2F%2Fb%2FMwHwAfIAFQAkAFIAuAAARVi4AAMvG7kAAwAIPlm4AABFWLgAES8buQARAAQ%2BWbgAAEVYuAACLxu5AAIABj5ZuAADELgACdC4AAkvuQAWAAH0uAARELkAHQAB9DAxFwcjEzMHMz4BMzIWFRQOAiMiJicjEyIGDwEeATMyPgI1NCZhH0yKPwYDJVUuQEwsSV8yJjwTAtUiUSMuFDIdJEQzHy8unwKzQB8tW1VGelo0Jx8BeCom6CYgK0hdMz49AAAAAgAn%2FzMB%2BAHyABUAJABWALgAAEVYuAAMLxu5AAwACD5ZuAAARVi4ABQvG7kAFAAGPlm4AABFWLgABC8buQAEAAQ%2BWbgADBC4ABHQuAARL7gABBC5ABYAAfS4AAwQuQAdAAH0MDElIw4BIyImNTQ%2BAjMyFhczNzMDIzcnMjY%2FAS4BIyIOAhUUFgFgAiRZLkBMLEpeMyc9EQQTPopNIXMiUiUsFTIcJEQ0HzBJJTBaVkZ6WjQoIT39TZ9iLTDZJiIrSF0yPz0AAAABAB8AAAF8AfIAEAA1ALgAAEVYuAAALxu5AAAACD5ZuAAARVi4ABAvG7kAEAAEPlm4AAAQuAAG0LgABi%2B4AAvcMDETMwczPgEzMhcHJiMiBgcDI38%2FCwQdTS0ZFRsQGiRMHz1MAeZdLTwJRAg%2BPP7NAAAAAAH%2F%2FP%2F0AX4B8gAzAEkAuAAARVi4ABUvG7kAFQAIPlm4AABFWLgALi8buQAuAAQ%2BWbkAAwAB9LoADQAuABUREjm4ABUQuQAcAAH0ugAkABUALhESOTAxNx4BMzI%2BAjU0LgInLgE1ND4CMzIWFwcuASMiBhUUHgIXHgMVFA4CIyIuAicsF0AmFSUdEAkUIxk5NhstPSItRxssFDAhJzUOGB8RISsbCxsxQycYMS0lDHYgJw0WHRENFhUWDh88KiA2JhUkHSsUHC0fDxgUEgkSISEiFCI4JxUOGSITAAABADz%2F9AFYAmwAHgBFALgAAEVYuAAGLxu5AAYACD5ZuAAARVi4ABYvG7kAFgAEPlm4AAYQuQAJAAH0uAAA0LgABhC4AAPQuAAWELkADwAB9DAxEyM%2FAjMHMwcjAwYVFBYzMjY3Fw4BIyIuAjU0NjeDRwtMJEEbewx9OQMbIw4aCxERLh0gLBwMAwIBqDkFhoY%2B%2FuoSEh4eCgU3CA4RHScXDxkOAAEAOP%2F0Ae8B5gAaAFEAuAAARVi4AA0vG7kADQAIPlm4AABFWLgAGS8buQAZAAg%2BWbgAAEVYuAAGLxu5AAYABD5ZuAAARVi4AAEvG7kAAQAEPlm4AAYQuQAVAAH0MDEhIzcjDgEjIiY1NDY3EzMDDgEVFBYzMjY3EzMBjj8IBChTLT41AwU%2BTT0EBCImHUYtRUxKIzNBOBEeFAE2%2FtQUGA0lJiouAVgAAAEAOwAAAeEB5gANAEAAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgACi8buQAKAAg%2BWbgAAEVYuAANLxu5AA0ABD5ZugAGAAAADRESOTAxEzMTHgEXMz4BNxMzASM7TCQEBgQEESQTj03%2B%2FVwB5v7nI0sjJEkkARn%2BGgAAAAABAEYAAALHAeYAIQBbALgAAEVYuAAALxu5AAAACD5ZuAAARVi4ACEvG7kAIQAEPlm6AAUAAAAhERI5uAAAELgACtC4ACEQuAAX0LgAChC4ABTQugAPABcAFBESOboAHAAhAAoREjkwMRMzEx4BFzM%2BATcTMxMeARczPgE3EzMDIwMuAScjDgEHAyNGTBABAQEEDxsQgEsRAgECBA4aEH9I3V8OAQEBBA8dD3ZcAeb%2B4iNDIiJDIwEe%2FuIjQyIiQyMBHv4aAQojSCQkSCP%2B9gAAAf%2FUAAAB0gHmABkARQC4AABFWLgAAS8buQABAAg%2BWbgAAEVYuAAZLxu5ABkABD5ZuAAP0LgAARC4AAvQugAHAA8ACxESOboAFAABABkREjkwMRMnMxceARczPgE%2FATMHFyMnLgEnIw4BDwEjrltOKggNCAQPIA9VU8hjTywIEQoEECITXlQBAuRsFicVFCkVbPXxchYtFxcrF3MAAf%2FC%2Fy8B4wHmABwAPQC4AABFWLgABy8buQAHAAg%2BWbgAAEVYuAAYLxu5ABgABj5ZuQACAAH0ugAMABgABxESObgABxC4ABHQMDEHFjMyNj8BAzMTHgEXMz4BNxMzAQ4DIyImJzclEhIlQRkSU0wmBQgDBBElEoxM%2FuITKjE6IwsfDhmKCTwzIwHn%2Fu8hTSMjSyMBEf3xJD0tGgYIOQAAAAH%2F9gAAAa4B5gAJAEUAuAAARVi4AAMvG7kAAwAIPlm4AABFWLgACC8buQAIAAQ%2BWbkABgAB9LgAANC4AAAvuAADELkAAQAB9LgABdC4AAUvMDEnASM3IQcBMwchAgFD3Q0BPQj%2Bvf4M%2FqEsAXw%2BLf6FPgD%2F%2F%2F%2FLAAAB1QMwAiYABAAAAAcA4QDdAAD%2F%2F%2F%2FLAAAB6AMwAiYABAAAAAcA4wDdAAD%2F%2F%2F%2FLAAAB2AMwAiYABAAAAAcA5QDdAAD%2F%2F%2F%2FLAAAB9gMwAiYABAAAAAcA5wDdAAD%2F%2F%2F%2FLAAAB4wMqAiYABAAAAAcA6gDdAAD%2F%2F%2F%2FLAAAB1QNrAiYABAAAAAcA7ADdAAAAAv%2FfAAADPAKQAAYAFgBoALgAAEVYuAAULxu5ABQAED5ZuAAARVi4AA4vG7kADgAEPlm4AABFWLgAEi8buQASAAQ%2BWbsABgABABAABCu7AAkAAQAKAAQruAAUELkABwAB9LoAAQAUAAcREjm4AA4QuQAMAAH0MDEBIw4BDwEzEwczByMHIQchNyMHIwEhBwHRAyZJJlSokCrlDeQzARoN%2FpknxoNZAcsBkg4CVThqN3wBT9VC9kLCwgKQQf%2F%2FADn%2FKwItApwCJgAGAAAABwDuARkAAP%2F%2FACMAAAIQAzACJgAIAAAABwDhAOgAAP%2F%2FACMAAAIQAzACJgAIAAAABwDjAOgAAP%2F%2FACMAAAIQAzACJgAIAAAABwDlAOgAAP%2F%2FACMAAAIQAyoCJgAIAAAABwDqAOgAAP%2F%2FACMAAAD9AzACJgAMAAAABgDhUwAAAP%2F%2FACMAAAFeAzACJgAMAAAABgDjUwAAAP%2F%2FACMAAAFOAzACJgAMAAAABgDlUwAAAP%2F%2FACMAAAFZAyoCJgAMAAAABgDqUwAAAP%2F%2FACMAAAJmAzACJgARAAAABwDnAREAAP%2F%2FADz%2F9AJeAzACJgASAAAABwDhARgAAP%2F%2FADz%2F9AJeAzACJgASAAAABwDjARgAAP%2F%2FADz%2F9AJeAzACJgASAAAABwDlARgAAP%2F%2FADz%2F9AJeAzACJgASAAAABwDnARgAAP%2F%2FADz%2F9AJeAyoCJgASAAAABwDqARgAAAAD%2F%2F3%2F4gKhAq8ACgAVAC8ASQC4AABFWLgAKi8buQAqABA%2BWbgAAEVYuAAdLxu5AB0ABD5ZuQADAAH0ugAKAB0AKhESObgAKhC5AA4AAfS6ABUAHQAqERI5MDE3HgEzMj4CNTQvAS4BIyIOAhUUFwEWFRQOAiMiJicHJzcmNTQ%2BAjMyFhc3F64TOSk1Vz4iCxUTOyo1Vz4iDAGpHi9UdkY2Ux1UKF8gL1R1RzhUHVkkdR0hPWB2OTQsNCAiPGB2OjkrAXtBWUuSc0YlI1ojZUJbS5FzRiclXyMAAAAAAgA8AAADSQKQABIAHQBvALgAAEVYuAAFLxu5AAUAED5ZuAAARVi4AA8vG7kADwAEPlm7AAoAAQALAAQruAAFELkABwAB9LgADxC5AA0AAfS4AAcQuAAT0LgAEy%2B4AA0QuAAb0LgAGy%2B4ABzQuAAcL7gAExC4AB3QuAAdLzAxEzQ%2BAjMhByEHMwcjByEHISImASIOAhUUFjsBEzwwXIRTAaoO%2Fvcr3w7dMwEUDv6EiY0BY0BmSCZmZCdqAQBak2k6QdVC9kKHAcoxV3tJXmcCEQAAAP%2F%2FAE%2F%2F9AJmAzACJgAYAAAABwDhAQ4AAP%2F%2FAE%2F%2F9AJmAzACJgAYAAAABwDjAQ4AAP%2F%2FAE%2F%2F9AJmAzACJgAYAAAABwDlAQ4AAP%2F%2FAE%2F%2F9AJmAyoCJgAYAAAABwDqAQ4AAP%2F%2FAFMAAAIeAzACJgAcAAAABwDjALgAAAACAC8AAAJIApAADgAdAFcAuAAARVi4AA8vG7kADwAQPlm4AABFWLgAFy8buQAXAAQ%2BWbsACwABAAwABCu4ABcQuQAAAAH0uAAPELkACAAB9LgADBC4ABnQuAALELgAG9C4ABsvMDE3Mj4CNTQmKwEHMwcjAxMyFhUUDgIrARMjPwET5UBmSCZmZDYtlgqVNKOJjTFbhFOwQUcJRjpAMVd6SV5o4Sz%2B%2FAJQh3lZlGk6AUQpAwEgAAAAAgAjAAACFwKUABAAGQA9ALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AA8vG7kADwAEPlm7ABEAAQANAAQruAAAELgAF9y5AAMAAfQwMRMzBzMyHgIVFA4CKwEHIzcyNjU0JisBA6ZOF3MtSTQdK0xpP2oeTddnaUpHaTQClHMSJz0qPFg5HJjXUU45M%2F71AAD%2F%2FwAn%2F%2FQB%2BALIAiYAHgAAAAcA4ADVAAD%2F%2FwAn%2F%2FQB%2BALIAiYAHgAAAAcA4gDVAAD%2F%2FwAn%2F%2FQB%2BALIAiYAHgAAAAcA5ADVAAD%2F%2FwAn%2F%2FQB%2BAKqAiYAHgAAAAcA5gDVAAD%2F%2FwAn%2F%2FQB%2BAKsAiYAHgAAAAcA6QDVAAD%2F%2FwAn%2F%2FQB%2BALUAiYAHgAAAAcA6wDVAAEAAwAg%2F%2FQC2AHyADcARQBRAJMAuAAARVi4ABIvG7kAEgAIPlm4AABFWLgAGC8buQAYAAg%2BWbgAAEVYuAAtLxu5AC0ABD5ZuAAARVi4ADMvG7kAMwAEPlm7ADgAAQAgAAQruwAFAAEARgAEK7gAEhC5AAsAAfS6ABUALQASERI5uAAtELkAJgAB9LoAMAAtABIREjm4AAsQuABA0LgAJhC4AEzQMDE3ND4CNz4BNTQmIyIGByc%2BATMyFhc%2BATMyHgIVFAYHIQYeAjMyNjcXDgEjIiYnDgEjIi4CJT4BNTQuAiMiDgIPAQ4BFRQWMzI2NyY2IC9UdUYDAictIEUjFSZaLTJBCCJXLik5JBENBf7RBgwgMSAdORceHU4vNVMRMGM2Gi0iFAJxAgMKFiQaFy8pIQlLbXwsIh9QKgQBajRILhcCDhMLLS4YFDgVHS8wLTIbL0ElHTQOKEIuGhkRMxUfNyktMw8eLMoOFg4VJx4SFio6JB0DQD0jJiosIDMAAAD%2F%2FwAl%2FysBsgHyAiYAIAAAAAcA7QDOAAD%2F%2FwAl%2F%2FQBvwLIAiYAIgAAAAcA4ADGAAD%2F%2FwAl%2F%2FQBvwLIAiYAIgAAAAcA4gDGAAD%2F%2FwAl%2F%2FQBvwLIAiYAIgAAAAcA5ADGAAD%2F%2FwAl%2F%2FQBxAKsAiYAIgAAAAcA6QDGAAD%2F%2FwAfAAAA8gLIAiYAZwAAAAYA4EYAAAD%2F%2FwAfAAABOwLIAiYAZwAAAAYA4kYAAAD%2F%2FwAfAAABMQLIAiYAZwAAAAYA5EYAAAD%2F%2FwAfAAABRAKsAiYAZwAAAAYA6UYAAAAAAQAfAAAAzQHmAAMAJQC4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAACLxu5AAIABD5ZMDETMwMjgE1iTAHm%2FhoA%2F%2F8AHwAAAfUCqgImACsAAAAHAOYA5QAA%2F%2F8AJ%2F%2F0AdsCyAImACwAAAAHAOAA2AAA%2F%2F8AJ%2F%2F0AdsCyAImACwAAAAHAOIA2AAA%2F%2F8AJ%2F%2F0AdsCyAImACwAAAAHAOQA2AAA%2F%2F8AJ%2F%2F0AegCqgImACwAAAAHAOYA2AAA%2F%2F8AJ%2F%2F0AdsCrAImACwAAAAHAOkA2AAAAAMAAP%2FpAgcB%2FAAJABMAKwBJALgAAEVYuAAnLxu5ACcACD5ZuAAARVi4ABsvG7kAGwAEPlm5AAIAAfS6AAkAGwAnERI5uAAnELkADAAB9LoAEwAbACcREjkwMTcWMzI%2BAjU0LwEmIyIOAhUUFwEWFRQOAiMiJwcnNyY1ND4CMzIXNxeJGzYlQzMdBhIcNyVDMh0HAU0XLUlfMk0vOx1AGSxKXjJQLz0eWCYqRVkvIBgpKipFWi8kGAEbLj5FdFQuMj0cQi9BRXRTLzU%2FHAAAAAADACf%2F9AMLAfIAKgA6AEcAjQC4AABFWLgACC8buQAIAAg%2BWbgAAEVYuAAQLxu5ABAACD5ZuAAARVi4AAAvG7kAAAAEPlm4AABFWLgAJS8buQAlAAQ%2BWbsAOwABABgABCu6AAsAAAAIERI5uAAlELkAHgAB9LoAKAAAAAgREjm4AAgQuQArAAH0uAAeELgAM9C4ACsQuABC0LgAQi8wMRciJjU0PgIzMhYXPgMzMh4CFRQGByEGHgIzMjY3Fw4BIyImJw4BEyIOAhUUFjMyPgI1NCYFNjU0LgIjIg4CB9BNXCxIXTE9Sw4QKjAyGSk6JBANBf7UBg8hLxwdORcdHVAwOlAOImoXID8xHjUzIT4xHjUBbwYKFiQaGC8oHwkMaFtFdFMvQT0eLyARGy9BJR00Di9DLBQZETMVH0NCP0YBvydDWjNCRidCWjNCR5wYGhUnHhIWKjokAAEAH%2F%2F0AfkC1AA%2FAEYAuAAARVi4AAUvG7kABQASPlm4AABFWLgAPi8buQA%2BAAQ%2BWbgAAEVYuAAdLxu5AB0ABD5ZuQAkAAH0uAAFELkAOAAB9DAxEz4DMzIeAhUUDgQVFB4EFRQOAiMiJic3HgEzMjY1NC4ENTQ%2BBDU0JiMiDgIHAyOICSQ1RioeNCcXFB0iHRQWICcgFhktPCQlSB8jFzMfJzcWIiYiFhQdIx0UIicaKyIYB2ZMAg0pSDYgECEyIR8vJh8eIBQUHhwdIy0fITkqGRkZMxMWMSYYJB4cICYaGikiICMoGyIsGSo4IP4F%2F%2F8AOP%2F0Ae8CyAImADIAAAAHAOAA0QAA%2F%2F8AOP%2F0Ae8CyAImADIAAAAHAOIA0QAA%2F%2F8AOP%2F0Ae8CyAImADIAAAAHAOQA0QAA%2F%2F8AOP%2F0Ae8CrAImADIAAAAHAOkA0QAA%2F%2F%2F%2Fwv8vAeMCyAImADYAAAAHAOIAogAA%2F%2F%2F%2Fwv8vAeMCrAImADYAAAAHAOkAogAAAAIAK%2F%2F0AhIC2gARADUAKAC4AABFWLgAGi8buQAaAAQ%2BWbsAJAABAAgABCu4ABoQuQAAAAH0MDE3Mj4CNy4BIyIOAhUUHgITHgEVFA4CIyIuAjU0PgIzMhYXLgEnByc3Jic3HgEXNxfhJDwsGwMUNycnPisYDxwqxyImIkFePCU%2FLxogPFU2JD8WBB4bkxCHJTokIz0akRA0KUZdNR4vJDpKJxouIxQCHzJ6TEeCYzscMUMoNGNNLyYhPF4nPSk4KiUuFDIdPCkAAv%2F2%2FzMB8ALIABYAJQBvALgAAEVYuAAILxu5AAgAEj5ZuAAARVi4AA8vG7kADwAIPlm4AABFWLgABi8buQAGAAY%2BWbgAAEVYuAAALxu5AAAABD5ZugAEAAYACBESOboADAAGAAgREjm4AA8QuQAXAAH0uAAAELkAHgAB9DAxFyImJyMPASMTMw8BMz4BMzIWFRQOAhMiBg8BHgEzMj4CNTQm6iY7FAISH0y3TScWAiRULUBMLElfLCJRIy4UMh0kRDMfLwwnH2ifA5W%2BYB0rW1VGelo0Ab4qJekmICtIXTM%2BPQAAAQArAAACnALUACsAqAC4AABFWLgAAy8buQADABI%2BWbgAAEVYuAAfLxu5AB8AEj5ZuAAARVi4AA4vG7kADgAIPlm4AABFWLgAGi8buQAaAAg%2BWbgAAEVYuAAqLxu5ACoACD5ZuAAARVi4ABIvG7kAEgAEPlm4AABFWLgAFi8buQAWAAQ%2BWbgAAxC5AAoAAfS4AA4QuQAQAAH0uAAU0LgAFdC4ABjQuAAZ0LgAHxC5ACYAAfQwMQE%2BATMyFhcHLgEjIgYPATMHIwMjEyMDIxMjPwI%2BATMyFhcHLgEjIgYPATMBqw9OPRopFBwKGhEhKggRYw1iVU1VwVZMVT8LQQ4QUT8dLBQbDBwUIy4ID8ICN0pTDQo4BwoyK1M%2B%2FlgBqP5YAag5BUdKUw0KOAcKMitJAAEAK%2F%2F0AkUC1AAyAJsAuAAARVi4ACAvG7kAIAASPlm4AABFWLgAGy8buQAbAAg%2BWbgAAEVYuAArLxu5ACsACD5ZuAAARVi4AC8vG7kALwAIPlm4AABFWLgAFy8buQAXAAQ%2BWbgAAEVYuAAMLxu5AAwABD5ZuQAFAAH0uAAvELkAFQAB9LgAFtC4ABnQuAAa0LgAIBC5ACcAAfS4ABoQuAAx0LgAMtAwMSUGFRQWMzI2NxcOASMiLgI1NDY3EyMDIxMjPwI%2BATMyFhcHLgEjIgYPATM3MwczByMBgwMbIw4aCxAQLh0gLBwMAgM5o1ZMVT8LQRAPTT4aKRMbCxoRISkIEackQRt7DH2SEhIeHgoFNwgOER0nFw8ZDgES%2FlgBqDkFUUpTDQo4BwoyK1OGhj4AAAAAAwAP%2F%2FQCRAKcAAsAGgBDAIwAuAAARVi4ADUvG7kANQAQPlm4AABFWLgAJi8buQAmAAQ%2BWbgAAEVYuAAhLxu5ACEABD5ZugBAACMAAyu4ACYQuQADAAH0ugAGACMAQBESOboACQAmADUREjm4AAkvuAAO3LgANRC5ABYAAfS6AB4AIwBAERI5ugAuAAkADhESOboAPQAJAA4REjkwMTcUFjMyNjcuAScOARMUFz4DNTQmIyIOAgUOAQcWFwcmJw4BIyImNTQ%2BAjcmNTQ%2BAjMyFhUUDgIHHgEXPgE3WzkuI0UgJ0IXL0CKCxwzJhcYGhUlGxABXx9MMDcvID0%2BKmA2S1ocLjwgEhwvPiM2NiA0QiIVQCYpPRqXLjgcGStnOCBIARgmLBEiJiwbFyEUJDGdQns0LBE%2BFDUiJ1NGKEE2KxQ6NypGMx09LiY%2BNS0VNWIoK2Q6AAIAKv%2F0Ac4CigATACUAOQC4AABFWLgACi8buQAKAA4%2BWbgAAEVYuAAALxu5AAAABD5ZuAAKELkAFAAB9LgAABC5AB4AAfQwMRciLgI1ND4CMzIeAhUUDgITIg4CFRQeAjMyPgI1NCbIJjsoFStIYDUlOycVKkhfMCdEMx0LFiIXJ0QzHSwMITpPL1miekgiOlEuWqB6RwJYRm%2BKQyE4KRdFb4lEQ1cAAAEAGgAAAYACfgALAEMAuAAARVi4AAYvG7kABgAOPlm4AABFWLgACy8buQALAAQ%2BWbkAAQAB9LgABhC4AALcuAAGELgABNy4AAEQuAAI0DAxNzMTIzc2NzMDMwchJ4tgcQpVNzt0ggz%2BpkAB3jIMIv3CQAAAAf%2F2AAABxAKKABwAOQC4AABFWLgADy8buQAPAA4%2BWbgAAEVYuAAbLxu5ABsABD5ZuQAZAAH0uAAA0LgADxC5AAgAAfQwMSc%2BAzU0JiMiBgcnPgEzMh4CFRQOAgchByECYI5eLzM1IEEiJyxXMCk%2FLBYqUn1SARQM%2FnUuUXpkVy8sPCEfMCYpFyo6IjVdYm9IQgAAAAH%2F9%2F%2F0AckCigAuAFMAuAAARVi4ABwvG7kAHAAOPlm4AABFWLgAKy8buQArAAQ%2BWbkAAwAB9LoADQAcACsREjm4AA0vuQAOAAH0uAAcELkAFgAB9LoAIgANAA4REjkwMTceATMyPgI1NC4CIzcyPgI1NCYjIgYHJzYzMhYVFAYHFR4BFRQOAiMiJicqF0kyIjkpFxQsRjMMO1AxFTIzHUMdJ1NdUVZKSzU7Iz5WMkJkHooiNBQjMB0ZKyAROhgmLxcqNhwXMz9QQj1cFQQRSDIuSTQcQS0AAAIACAAAAb8CfgAKABQAUwC4AABFWLgABS8buQAFAA4%2BWbgAAEVYuAAALxu5AAAABD5ZuwALAAEAAQAEK7gACxC4ABTQuAAD0LgACxC4AAbQuAABELgACdC4AAUQuAAP3DAxMzchNwEzAzMHIwcnNz4BNyMOAQ8B9CT%2B8AkBVlRQVA1TIxglBhEIBBQnErGwNAGa%2FnA%2BsO69HUEhHDUX1AAB%2F%2Fz%2F9AHXAn4AJgBJALgAAEVYuAASLxu5ABIADj5ZuAAARVi4ACMvG7kAIwAEPlm5AAUAAfS6ABkAEgAjERI5uAAZL7kADQAB9LgAEhC5ABQAAfQwMTceAzMyPgI1NCYjIgYHJxMhByMHPgEzMh4CFRQOAiMiJicuCxoiLBwfOSwaPzQfLCAhUAErDek0ESoZJD0tGShCVy9CXR2JER4YDhgtPic%2BPBARGgEtQrwIDBUqPyo5XEAjPy0AAAIAM%2F%2F0AegCigASADMAQwC4AABFWLgAMC8buQAwAA4%2BWbgAAEVYuAAmLxu5ACYABD5ZuwAeAAEAAAAEK7gAJhC5AAsAAfS4ADAQuQAWAAH0MDEBIg4CBwYUFRQWMzI%2BAjU0JjcuASMiDgIHPgEzMhYVFA4CIyIuAjU0PgIzMhYXAQUMHyQnEwE6MxswJBQzfBErHyZEOSkKIVIhR1QfOEssKUEuGS1QbUA0QxQBSQgSHxgLFwxFVRwtOh43QcccHidHZT8mJFhOL1RAJSA5UC9hpHdCMSAAAAEAawAAAgMCfgAPADMAuAAARVi4AAcvG7kABwAOPlm4AABFWLgAAC8buQAAAAQ%2BWbgABxC5AAUAAfS4AAnQMDEzPgM3ITchBw4DByN4FTRFWj3%2Bzg4BigpKZUUsEVBam4x%2FPEIyRoyQmFIAAAMAI%2F%2F0AdcCigARACEARwBbALgAAEVYuAAwLxu5ADAADj5ZuAAARVi4AEMvG7kAQwAEPlm6AAAAMABDERI5uAAAL7gAQxC5AAgAAfS4AAAQuAAn3LgAEtC4ADAQuQAaAAH0uAASELgAOdwwMRMOARUUHgIzMj4CNTQuAjc%2BAzU0JiMiDgIVFBYHND4CNzUuATU0PgIzMh4CFRQGBxUeAxUUDgIjIi4C3DNAEyEsGRoxJxcXKDQ8EiMbEDcpFigfEjrcGSk2HRwdHjRDJh45LBpENg4fGRAjOk0rI0M0IQFAHEo4HCseEBEfLx4cKiMeKAweJSsZMDQPHSoaMjzYJDwvJA0EHDsnKUAtGBIlOCVAVh4EChwkLRkrRTAaFCk%2FAAIAEv%2F0AccCigASADMAQwC4AABFWLgAJi8buQAmAA4%2BWbgAAEVYuAAwLxu5ADAABD5ZuwAAAAEAHgAEK7gAJhC5AAsAAfS4ADAQuQAWAAH0MDETMj4CNzY0NTQmIyIOAhUUFgceATMyPgI3DgEjIiY1ND4CMzIeAhUUDgIjIiYn9QwfJCcTATozGzAjFDN9ESsgJUQ4KQohUSBIVB84SywpQi4YLVBtQDRDFAE1CBIfGAsXDEVVHC06HjhAxxweJ0dkPiUjWE4vVEAlIDlQL2Kjd0IxIAAAAAEAF%2F%2F0AIgAbAALABoAuAAARVi4AAAvG7kAAAAEPlm5AAYAAfQwMRciJjU0NjMyFhUUBkYWGSYdFhglDBwWGiwdFhorAAAAAAH%2F4f9cAJAAbAAQAB4AuAAARVi4AAMvG7kAAwAEPlm5AAoAAfS4ABDcMDEHPgE3IyImNTQ2MzIWFRQGBx8vOAgCFx0jHRocWkp2EjslGRcZJyQeSm8VAP%2F%2FABf%2F9ADIAd0CJwCGAEABcQAGAIYAAP%2F%2F%2F%2BH%2FXADIAd0CJwCGAEABcQAGAIcAAAACACv%2F9AEFAp8ABQARABoAuAAARVi4AAYvG7kABgAEPlm5AAwAAfQwMRM3MwcDIwciJjU0NjMyFhUUBqkPTRNWNgsWGiYdFxckAkNcXP6B0BwWGiwdFhorAAAAAAIAFf9HAO4B8gAFABMAGgC4AABFWLgABi8buQAGAAg%2BWbkADgAB9DAxFwcjNxMzNzIWFRQOAiMiJjU0NnEPTRNWNgsWGQoSGA8WFyRdXFwBf9AcFg0ZFAwdFhorAAAAAAIAXv%2F0AaICqgALACcAKAC4AABFWLgAAC8buQAAAAQ%2BWbsAHQABABYABCu4AAAQuQAGAAH0MDEXIiY1NDYzMhYVFAYnPgU1NCYjIgYHJz4BMzIWFRQOBAeNFhkmHRYYJRkCICwyKhwuKB02FikdUS1GUh0sNC4hAwwcFhosHRYaK9UqQTUtLTEfKi0cFy4eJ0lBKT40LzI7JgAAAAL%2F%2FP89AUAB8wALACcAKAC4AABFWLgAAC8buQAAAAg%2BWbsAFgABAB0ABCu4AAAQuQAGAAH0MDEBMhYVFAYjIiY1NDYXDgUVFBYzMjY3Fw4BIyImNTQ%2BBDcBEBYaJh0XFyQaAx8sMiocLSgdNxYoHVAtRlIdKzQuIQQB8xwWGS0dFhor1SpANS0uMR8pLhwYLh8nSUIoPjQvMzomAAEAgAGqAPECnwAFAAsAugABAAQAAyswMRM3Mw8BI5cPSxMqNAJDXFyZAAD%2F%2FwCAAaoBlwKfACYAjgAAAAcAjgCmAAAAAQBuAbIBAgKzABIADQC7AAMAAQAKAAQrMDEBDgEHMzIWFRQGIyImNTQ%2BAjcBAi0xAQUVHB4YFx4UJDAcAo0XQh0XFRciJCAiOzAkDAAAAAABAG8BuwEEArwAEgANALsACgABAAMABCswMRM%2BATcjIiY1NDYzMhYVFA4CB28uMQEFFhweGRceFCQxHAHgF0McFxYXIiQgIzowJAz%2F%2FwBuAbIBqAKzACYAkAAAAAcAkACmAAD%2F%2FwBvAbsBqgK8ACYAkQAAAAcAkQCmAAD%2F%2F%2F%2F4%2F20AjQBuAgcAkf%2BJ%2FbIAAP%2F%2F%2F%2Fj%2FbQEyAG4AJwCR%2F4n9sgAHAJEALv2yAAAAAQAoAEMA6wGzAAYACwC6AAIABgADKzAxPwIXBxcHKAucHI5VI%2BE%2BlB2coRYAAAAAAQAXAEMA2gGzAAYACwC6AAYAAgADKzAxEw8BJzcnN9oLnByNVSQBFT6UHZyhFgD%2F%2FwAoAEMBigGzACYAlgAAAAcAlgCfAAD%2F%2FwAXAEMBeQGzACYAlwAAAAcAlwCfAAAAAQAjAN4BCgEZAAMADQC7AAEAAQACAAQrMDETMwcjL9sN2gEZOwAA%2F%2F8AJADeAQsBGQIGAJoBAAABACMA4QGrARcAAwANALsAAQABAAIABCswMRMhByEuAX0M%2FoQBFzYAAQAjAOEC3gEXAAMADQC7AAEAAQACAAQrMDETIQchLgKwC%2F1QARc2%2F%2F8ATwEMAMABhAIHAIYAOAEYAAAAAQApAJEBAgF%2FAA8ACwC6AAgAAAADKzAxNyImNTQ%2BAjMyFhUUDgKLKzcRHywcKjcRHyyROi8YMCUYOy4ZMCUXAAH%2F3P%2BEAbD%2FtgADAA0AuwAAAAEAAQAEKzAxBQchNwGwCv42C0oyMgABAEH%2FUAFXAtsAEgALALoACAAAAAMrMDEXLgE1ND4CNxcGAhUUHgIXB3oYIR88VjgtamwFCxALMrBAolNXnJKLRhmH%2FuCeI0tKRhwTAAAAAAH%2F1P9QAOoC2wARAAsAugAAAAgAAyswMRMeARUUDgIHJxIRNC4CJzexGCEfPFc3LdUFChALMgLbQKJSWJySi0YaAQ0BNyNMSkQdEwABAAj%2FaAFdAsQABwAXALsAAAABAAEABCu7AAQAAQAFAAQrMDEXByMTMwcjA7wLqaypB3GZay0DXC38%2FgAB%2F8%2F%2FaAEmAsQABwAXALsAAAABAAUABCu7AAQAAQABAAQrMDEXEyM3MwMjN0ibcAirrKsKawMCLfykLQABACD%2FaAFgAsQANQArALsAMQABADIABCu7ABkAAQAaAAQruwALAAEACgAEK7oAJQAKAAsREjkwMRc0PgI1NC4CIzcyPgI3PgE3PgM7AQcjIgYHDgEHDgEHFR4BFRQOAhUUFjsBByMiJi8RFREGDxwVCxkjFwwDCQsLBxYfLB4uChooIgoIDQkKJyMYFBAUEBcgGAosLylIHEpNRBYKFQ8KMg4XHA4wXDMnNB8NLS4wK1suMTYJBAgfFhpJTUYYGRgtJgAAAf%2FM%2F2gBDALEADUAKwC7ABsAAQAYAAQruwAyAAEAMQAEK7sACgABAAsABCu6ACUACwAKERI5MDETFA4CFRQeAjMHIg4CBw4BBw4DKwE3MzI2Nz4BNz4BNzUuATU0PgI1NCYrATczMhb9ERURBg8bFgsaIxcLAwkLCwgWHywdLgkaKCMJCA4ICyYjGRMQFBAWIBkKLDApAnQcS0xGFgoTDwoyDhccDjBdNCczHg0tLDErWi8yNgkECB8WGklMRhgaGC0nAAH%2FuP9gAaICxgADABgAuAAARVi4AAAvG7kAAAASPlm4AALcMDEBMwEjAWo4%2Fk03Asb8mgABAF%2F%2FBgCTAu4AAwALALoAAQACAAMrMDETMxEjXzQ0Au78GAABAFj%2FYAEBAsYAAwAYALgAAEVYuAAALxu5AAAAEj5ZuAAC3DAxEzMTI1g0dTYCxvyaAAAAAgBf%2FwYAkwLuAAMABwALALoAAQAFAAMrMDETMxEjFxEjEV80NDQ0Au7%2BM0z%2BMQHPAAAAAAEAfQGmAZ0CyQAOABQAuAAARVi4AAUvG7kABQASPlkwMRM3JzcXNxcHNxcHFwcnB5BFWBJjGSwIZwdnJig0UAHPWDEoIWoEaw4rH2EXWEwAAgAP%2F8QBwgKsAA8ARQAXALsALgABACcABCu7AEIAAQATAAQrMDElPgE1NC4CJw4BFRQeAhMuASMiBhUUHgQVFAYHFhUUDgIjIiYnNx4BMzI2NTQuBDU0NjcmNTQ%2BAjMyFhcBKiMlIzQ7GSEqJDU9hRU4IB8wIDE5MSA4Mg0YLDskLVcjKRpEJCYzIDE5MSA8MBAXKDchLU0dug0rKB0rJCIUDjAmHikiIAFnGCInIxgkISEpNiU6QhcaHSA3KBcoIzIcJSwjGiYgHic0JTZLFBsfITUlFSkgAAAAAAIASf%2BwAgsCkAADABAAJQC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAOLxu5AA4AED5ZMDEBMwMjAyIuAjU0PgI7AQMBvk2TTActUDwjLkxjNTBXApD9IAEzFyxCK0BgPh%2F%2BUwADACT%2F9QKVAo0AHQAxAEUAPAC4AABFWLgAHi8buQAeAAQ%2BWbsAKAABADIABCu7ABQAAQAbAAQruwAFAAEADAAEK7gAHhC5ADwAAfQwMRM0PgIzMhYXBy4BIyIOAhUUFjMyNjcXDgEjIiYXIi4CNTQ%2BAjMyHgIVFA4CEyIOAhUUHgIzMj4CNTQuArQmPEokIy4RJQ4fFxgyKho1LRwtGRkfPyhBUXY6YUUmNF%2BGUTphRSc0YIYQRnRULh45UzRGdVQuHjpTARQ3Vz0hHhUiERIaL0EnNjcXECcXHE3VKUlmPUqLbEIpSWU9SoxsQgJwO2F7PzVYQCQ7YXs%2FNVhAJAAABABJAUMBswLGAA0AFQApADsASQC4AABFWLgAIC8buQAgABI%2BWbgAAEVYuAAOLxu5AA4ACj5ZuwA0AAEAFgAEK7oAAQATAAMruAAOELgACty4ACAQuQAqAAH0MDETMzIWFRQGBxcjJyMHIzcyNjU0KwEHFyIuAjU0PgIzMh4CFRQOAgMiDgIVFB4CMzI%2BAjU0JtJCHSIaFxwoFiIPJlEXGiEZDQchOywaHjVJKyE7LBseNkkJIjorGBEhMB4hOysZRQJrHhwXIghPRkZkFhIeRsIZLD4mKk49JRktPiUqTz0kAWAdMUEkHjImFR0xQiQ8TgAAAAIALf9lAwkChABGAFQAUAC4AABFWLgAIy8buQAjAA4%2BWbsAFAABABkABCu7AAAAAQAtAAQruwBKAAEANAAEK7sAPgABAFAABCu4ACMQuQAKAAH0ugBBAFAAPhESOTAxJTI%2BAjU0LgIjIg4CFRQeAjMyNxcGIyIuAjU0PgIzMh4CFRQOAiMiJicjDgEjIi4CNTQ%2BAjMyFzM3MwcGFicUFjMyPwEuASMiDgICRRgzKBodPl5ARIVpQSlFXTVLPBdQVEFwUjBJeZ1UR25MKCM7TCgjMAcDFzshFyofEx81RykvGgINMzILF%2BwnHS0tJA4cER4xJBRkHz1ZOTZeRCdAcZlZQ2dHJCUuKytRdkxnsIFJLE9tQElwTScpIx0mEiIzICxWQykzK9kvOWItLD2hGhMiND8AAgAYAAAB6wKKABsAHwClALgAAEVYuAAILxu5AAgADj5ZuAAARVi4AAwvG7kADAAOPlm4AABFWLgAFi8buQAWAAQ%2BWbgAAEVYuAAaLxu5ABoABD5ZuwADAAEAAAAEK7sABwABAAQABCu4AAcQuAAK0LgABxC4AA7QuAAEELgAENC4AAMQuAAS0LgAABC4ABTQuAAAELgAGNC4AAMQuAAc0LgABBC4AB3QugAfABYACBESOTAxNyM3MzcjNzM3MwczNzMHMwcjBzMHIwcjNyMHIwE3IwdnTw1SLlAOVDszOn07MzpPDlIuUQ5VQDRBfkA0AQQufy7NN5Y3ubm5uTeWN83NzQEElpb%2F%2FwCyAbgBVwM%2BAgcAtwBWAbgAAP%2F%2FAFcBuAGCA0oCBwC4AFYBuAAA%2F%2F8AVgGsAYADSgIHALkAVgG4AAD%2F%2FwBfAbgBhgM%2BAgcAugBWAbgAAAACAA%2F%2F9AFAAZMAEwAjACgAuAAARVi4AAAvG7kAAAAEPlm7AAoAAQAUAAQruAAAELkAHAAB9DAxFyIuAjU0PgIzMh4CFRQOAhMiDgIVFBYzMj4CNTQmih0uHxEYL0MsHS4fERgvRAscLB4QICUcLB4QIAwXKTchLl5MLxcpNyEvXksvAW0mPUokLjwmPEokLj0AAAAAAQBcAAABAQGGAAgADQC7AAUAAQAAAAQrMDETIzc%2BATczAyO2WggnLxgvTTwBOCcGERD%2BegAAAAABAAEAAAEsAZIAGgAoALgAAEVYuAAZLxu5ABkABD5ZuwAPAAEACAAEK7gAGRC5ABcAAfQwMTc%2BAzU0JiMiBgcnPgEzMhYVFA4CBzMHIQg9WDgaICAVKRMjHDsmNj4ZMUkwowr%2B%2FyYrRTo1Gx0hGxQkGyQ4MR86Oj8kMwAAAQAA%2F%2FQBKgGSACkAPAC4AABFWLgAJi8buQAmAAQ%2BWbsAGAABABIABCu7AAoAAQAJAAQruAAmELkAAwAB9LoAHgAJAAoREjkwMTceATMyNjU0JiM3Mj4CNTQmIyIHJz4BMzIWFRQGBx4BFRQOAiMiJicpDishIzIyOQkiLhwMIB0pKhsdOyExPS8sIiIXJjQcMUQRYRoiJSMdKikOFhwOGR4hKRUTMi0lOg4MMhodLSAQMCAAAgAJAAABMAGGAAUAEAAnALsADQABAAMABCu7ABAAAQAGAAQruAAQELgAANC4AAYQuAAK0DAxPwIjDwEXIwcjNyM%2FATMHM8IPGgRDVtk4FTYVsAfWQTA5lUxsVGQramoh%2B%2FEA%2F%2F8APAECAXYCVAIGAL0AAP%2F%2FADsBAgFkAlQCBgC%2BAAAAAgA8AQIBdgJUABQAIwA5ALsAFQABABIABCu7AAUAAQAcAAQruAAcELgACNC4AAgvugAJABwABRESObgAFRC4AA7QuAAOLzAxEzQ%2BAjMyFhczNzMDIzcjDgEjIiYXMjY%2FAS4BIyIOAhUUFjweMT8iFygLBA4uQC8GBBc6HiszcRc2FxoNHxEXKyEVHwF5LlA7IhcYJ%2F6%2BMBoePQwhHYUaFBstPCAoJQAAAgA7AQIBZAJUAA8AHwAXALsAGAABAAAABCu7AAgAAQAQAAQrMDETIiY1ND4CMzIWFRQOAhMiDgIVFBYzMj4CNTQmsTZAHzJAITZBHzJBFxgqIBMiIBcqIBMhAQJEPi9NNh5EPTBNNh4BIxksOSApLBkrOiAoLQAAAgBlAbABUgKtAA8AHwAXALsAGAABAAAABCu7AAgAAQAQAAQrMDETIiY1ND4CMzIWFRQOAiciDgIVFBYzMj4CNTQm0C88FSMwGy48FSMvBxIeFQshHhIdFQwhAbA9Mh0zJxc9Mh0zJxfSERsjEh0oEBsjEh0pAAAAAgALAHEB7wIlACEAMQAoALgAAEVYuAAULxu5ABQACj5ZuwAqAAEAAwAEK7gAFBC5ACIAAfQwMSUOASMiJwcnNy4BNTQ2Nyc3Fz4BMzIWFzcXBxYVFAYHFwcDIg4CFRQWMzI%2BAjU0JgFRGj0gQCRII0cHCCAcLywwGjofHzITSSNJEB8aNStwGjIoGC0qGjIoGC21FBYnPyo%2BECUXLVAePSU%2FEhQUET8qPyIqLU0dRCQBYRksPCIzNxkrPCMzNwAAAQAR%2F5IB0ALvADEAZQC4AABFWLgAKy8buQArAA4%2BWbgAAEVYuAAVLxu5ABUABD5ZuAArELkAAwAB9LoABgArABUREjm4ABUQuAAS0LgAEi%2B4ABUQuQAcAAH0ugAfABUAKxESObgAKxC4AC7QuAAuLzAxAS4BIyIGFRQeBBUUDgIPASM3LgEnNx4BMzI2NTQuBDU0PgI%2FATMHHgEXAZ4UOiMwPiAvNy8gGjFFKhQ4FC1KGjEXRi03RiAvOC8gGi9AJxQ4FSM9FgIJHSg5LR8tJycwPysnRDMfA2JmCTIfMB4wQDQkNSsnLTgmJT4uHAJiZwksHQAAAAABAAQAAAHrAo0AJgBCALgAAEVYuAAeLxu5AB4ABD5ZuwAIAAEADwAEK7sAFgABABcABCu4ABYQuAAA0LgAHhC5ABwAAfS4ABcQuAAk0DAxEy4BNTQ%2BAjMyFhcHLgEjIgYVFBYXMwcjDgEPASEHITc%2BAT0BIzeZAgQfNkssM0QVNBEtHjdJBAKbDIwBKi0BAQMM%2FoIJSEhgCwFWGC8UM1E5HzEiKRsiVkwUKxc7RWUrBEIuI3pICDYAAQAcAAACDwJ%2BAB0AigC4AABFWLgAAC8buQAAAA4%2BWbgAAEVYuAAJLxu5AAkADj5ZuAAARVi4ABMvG7kAEwAEPlm7ABAAAQARAAQruwAMAAEADQAEK7oABQATAAAREjm4ABMQuAAP3LgAERC4ABXQuAAPELgAF9C4ABjQuAANELgAGdC4AAwQuAAb0LoAHAATAAAREjkwMRMXHgEXMz4BPwEzAzMHIwczByMHIzcjNzM3IzczA7YpBw8IAxcpFmxN2IgKmw2cCpwgTCGcCZwMmwmIWwJ%2BsCFDJCVDILD%2BvStFKqGhKkUrAUMAAAABABT%2F9AIIAo0ALwCBALgAAEVYuAAsLxu5ACwADj5ZuAAARVi4ABsvG7kAGwAEPlm4ACwQuQADAAH0ugAKACwAGxESObgACi%2B5AAkAAfS6AA8AGwAsERI5uAAPL7kAEAAB9LgAGxC5ABQAAfS4ABAQuAAf0LgADxC4ACDQuAAKELgAJdC4AAkQuAAm0DAxAS4BIyIOAgczByMOAQczByMUFjMyNjcXDgEjIiY1Iz8BPgE3Iz8BPgMzMhYXAc4PKiMfOTAnDfoJ%2FAQEAtIKykM7IzsZJiVUMlhlPgo2AgQEMwk1EThHUy03QxUCCB8nHDNGKiwRIxItW2EhGC8jJ4F7KAQTIxEoAzleQyU4KAAAAAIATv%2FyAd4CngAIACUAPAC4AABFWLgAFS8buQAVAAQ%2BWbsADQABABQABCu4ABUQuAAg3LoAAAAVACAREjm4ABQQuAAX0LgAFy8wMQEOAxUUFhcTLgEnAz4BNxcOAQ8BIzcuATU0PgI%2FATMHHgEXATIeNyoZKSrCESMYRSA2FxsgRi4VMhVETipFViwUMRQlNRQB9wUiNUYpOUoLASoUGAT%2BowIYETQUIANpagpkVT5lSCoEZmcFJhcAAAAAAf8t%2F%2FQBRQKgAAMAGAC4AABFWLgAAC8buQAAAAQ%2BWbgAAdwwMQcBMwHTAeQ0%2FhwMAqz9VAAAAP%2F%2F%2Fy3%2F9AFFAqACBgDGAAD%2F%2FwA9%2F%2FQC8AKhACcAtgAuAQ4AJwDGAVkAAAAHALYBsAAAAAD%2F%2FwB3%2F%2FQCuAKgACcAtwAbAQ4AJwDGAUwAAAAHALoBiAAAAAD%2F%2FwBj%2F%2FQCzwKgACcAtwAXAQ4AJwDGATYAAAAHALgBowAAAAD%2F%2FwAu%2F%2FQCygKgACcAuQAuAQ4AJwDGAW4AAAAHALoBmgAAAAAAAQAwAGcBygIqAAsAHQC7AAMAAQAAAAQruAADELgABtC4AAAQuAAI0DAxEyM1MzUzFTMVIxUj3q6vPK%2BwPAEuOcPDOccAAAAAAQAwAS4BygFnAAMADQC7AAEAAQAAAAQrMDETNSEVMAGaAS45OQAAAAEAQQCHAboCDgALACUAuAAARVi4AAQvG7kABAAKPlm4AABFWLgABi8buQAGAAo%2BWTAxNyc3JzcXNxcHFwcnaSiUlCiUlCmVlSmUhymbmyibmyibmymcAAADADAAYQHKAjIACwAXABsAIQC7ABIAAQAMAAQruwAGAAEAAAAEK7sAGQABABgABCswMRMiJjU0NjMyFhUUBgMiJjU0NjMyFhUUBic1IRX9Fh0dFhYdHRYWHR0WFh0d4wGaAcweFhUdHRUWHv6VHRYVHR0VFh3NOTkAAAD%2F%2FwAwAMQBygHRAiYAzQBqAAYAzQCWAAAAAQAuAIcBygIOAAkAFAC4AABFWLgAAS8buQABAAo%2BWTAxEyUVDwEVHwEVJS4BnMt9fcv%2BZAFnp0FQMAQxT0KmAAEAMACHAcwCDgAJABQAuAAARVi4AAYvG7kABgAKPlkwMT8CNS8BNQUVBTDMfHzMAZz%2BZMlPMQQwUEGnOqYAAAACADAAAAHKAioACwAPADgAuAAARVi4AAwvG7kADAAEPlm7AAMAAQAAAAQruAADELgABtC4AAAQuAAI0LgADBC5AA0AAfQwMRMjNTM1MxUzFSMVIwc1IRXerq88r7A8rgGaATs6tbU6uYI6OgABAFMBGwG1Ap4ACQAUALgAAEVYuAAALxu5AAAAED5ZMDETMxMjLwEjDwEj5T6SQEEtAy9AQgKe%2Fn2yhYWyAAAAAQAtAQQBwwGSABcAFwC7AAgAAQAPAAQruwADAAEAFAAEKzAxEz4BMzIeAjMyNjcXDgEjIi4CIyIGBy0ZPx8bLSklFBYjESsZPx8bLSklFBYjEQE5LyobIBsdIBwvKhsgGx0gAAEAMABnAcoBZwAFAA0AuwABAAEABAAEKzAxEyERIzUhMAGaPP6iAWf%2FAMcAAf%2F2%2F0EB7QHmABoAJAC4AABFWLgAEi8buQASAAQ%2BWbkABgAB9LoAFQASAAYREjkwMTcOARUUFjMyNjcTMwMjNyMOASMiJicPASMTM40EBCImHUYtRUtgPwgEI0gmHS0LDR1Mh026FBgNJSYqLgFY%2FhpKIzAWHVOWAqUA%2F%2F8A%2FgI7AYQCyAAHAOAA2AAAAAD%2F%2FwEHAjsBzQLIAAcA4gDYAAAAAP%2F%2FAM4COwHDAsgABwDkANgAAAAA%2F%2F8AxQJCAegCqgAHAOYA2AAAAAD%2F%2FwDVAk0B1gKsAAcA6QDYAAAAAP%2F%2FANkCWQHNAo8ABwDoANgAAAAA%2F%2F8A%2BgIbAa8C0wAHAOsA2AAAAAD%2F%2FwBh%2FysA%2BwADAAcA7QDYAAAAAAABACYCOwCsAsgAAwAYALgAAEVYuAAALxu5AAAAEj5ZuAAC3DAxEzMXIyZLOzgCyI0AAAAAAQAUAsIAqgMwAAMADQC7AAEAAQADAAQrMDETMxcjFFJEPQMwbgAAAAEALwI7APUCyAADABgAuAAARVi4AAAvG7kAAAASPlm4AALcMDETMwcjo1KIPgLIjQAAAAABAEkCwgELAzAAAwANALsAAAABAAIABCswMRMzByO0V4BCAzBuAAAAAf%2F2AjsA6wLIAAcAKgC4AABFWLgAAC8buQAAABI%2BWbgAAty6AAUAAAACERI5uAAG0LgAB9AwMRMzFyMnIwcjcDlCNS8EUzoCyI1cXAAAAAAB%2F%2FoCwgD7AzAABwAVALsAAQABAAMABCu4AAMQuAAG0DAxEzMXIycjByNsSEc7MwNOQgMwbkZGAAH%2F7QJCARACqgAXAD0AuwAIAAEADwAEK7gADxC4AADQuAAAL7gACBC4ABTQuAAUL7kAAwAB9LgAC9C4AAsvugAMABQAAxESOTAxAz4BMzIeAjMyNjczDgEjIi4CIyIGBxMNMSAVHBYVEA0WCiwNMSAWGxYWEAwWCgJELTkRExEcFy05ERMRHBcAAAAAAf%2FxAsUBGQMwABkAMwC7AAoAAQARAAQruAARELgAANC4AAAvuAAKELgAFtC4ABYvuQAFAAH0uAAN0LgADS8wMQM%2BAzMyHgIzMjY3Mw4BIyIuAiMiBgcPBRQaHhETGhcWDxAYCSwLNiITGhYWDxAYCQLHFiYdEBEVERwZLTwRFRIdGQAAAQABAlkA9QKPAAMAGgC4AABFWLgAAC8buQAAABA%2BWbkAAgAB9DAxEzMHIwvqCesCjzYAAAL%2F%2FQJNAP4CrAALABcAHQC7AAYAAQAAAAQruAAAELgADNC4AAYQuAAS0DAxEyImNTQ2MzIWFRQGMyImNTQ2MzIWFRQGJREXHhUSFx%2BRERceFRIWHgJNFRMXIBYUFx4VExcgFhQXHgAAAgAGAssBBgMqAAsAFwAdALsABgABAAAABCu4AAAQuAAM0LgABhC4ABLQMDETIiY1NDYzMhYVFAYzIiY1NDYzMhYVFAYuERceFREXHpERFx4VERYdAssVExYhFRQVIRUTFiEVFBUhAAACACICGwDXAtMADwAbADkAuAAARVi4ABYvG7kAFgAMPlm4AABFWLgACC8buQAIABI%2BWbgAFhC5AAAAAfS4AAgQuQAQAAH0MDETIiY1ND4CMzIWFRQOAiciBhUUFjMyNjU0JnYkMA8bJBQkLw8aJAgVHxYUFR8WAhsqKBUlHBAqKBUlHBCUJRoWGyYaFRsAAAACAC4CuQDlA2sADwAbABcAuwAWAAEAAAAEK7sACAABABAABCswMRMiJjU0PgIzMhYVFA4CJyIGFRQWMzI2NTQmgiMxEBskFCMxEBskBxYgFxQWIBcCuSYpFSQbDyYpFSQbD44iGRUaIhoVGQAB%2F4n%2FKwAjAAMAEQANALsAAAABAAIABCswMSczBx4BFRQOAgcnPgE1NCYnGDQmEhsZKjYdBCg2GB0DOAcbFxgkGQ8DIwccGRESCAAAAf%2BJ%2FysAIwADABEADQC7AAAAAQACAAQrMDEnMwceARUUDgIHJz4BNTQmJxg0JhIbGSo2HQQoNhgdAzgHGxcYJBkPAyMHHBkREggAAAEAAADwAHAABwB1AAUAAQAAAAAACgAAAgABcwADAAEAAABmAGYAZgBmALQBGgFqAagB6AIgAoACwALgAxgDWAN%2BA9wEJAR4BMQFMAWIBfIGIAZmBp4HBAdUB5AHzAgwCJYI4AlICbIKBgp6CsoK%2FgtGC4gLwAwwDH4Myg0sDZANyg44DooO3g8cD4QP0hAiEFwQaBB0EIAQjBCYEKQRAhEOERoRJhEyET4RShFWEWIRbhF6EYYRkhGeEaoRthIkEo4SmhKmErISvhLKEyYTbhN6E4YTkhOeE6oTthR2FIIUjhSaFKYUshS%2BFMoU1hTiFQIVDhUaFSYVMhU%2BFUoVshZeFtYW4hbuFvoXBhcSFx4Xghf0GIwZJhnQGiQaXhqoGxQbZBvCHC4cZBz0HWAdhB2wHbwdyB32HiYedB7CHtge5B8MHzIfPh9KH1QfYh96H5Ifnh%2BqH74fxh%2FaH%2B4f%2BCAYICwgVCB6IJggtiEYIXohlCGmIcAh2iICInAioiMiI5wkNiS6JMQkziTYJOIlLCVIJYYl4CYSJhomIiZ2JrIm7idOJ8ooJiicKSQpgimeKaYpuCnKKdwp7ioSKiYqUiqQKpwqvCrcKxIrMitkK3oruCvCK8wr1ivgK%2Bor9Cv%2BLAgsIiw2LFAsZCyMLKgs7i0wLUotfi2yLfouMC5WLnwufAAAAAEAAAABDMwn%2B4QIXw889QAJA%2BgAAAAAzZeAlwAAAADNl%2BMI%2Fy3%2B5QRRA7QAAgAJAAIAAAAAAAACdAAkAAAAAADAAAAAwAAAAf7%2FywJHACMCJgA5AlAAIwH3ACMB2QAjAkwAOQJuACMA%2FAAjAcj%2F%2FgIvACMBzgAjAsEAIwJrACMCeQA8AiYAIwJ5ADwCKwAjAfoADAH%2BAF0CaABPAfAAUgL0AF8B7v%2FcAc0AUwIA%2F%2F8CGQAnAhgAHwGzACUCFwAnAeEAJQEaACsCE%2F%2F%2BAgcAHwDtAB8A7v%2BEAdwAHwD4ACwDHwAfAg0AHwIDACcCF%2F%2F2AhkAJwFWAB8Bkv%2F8AUUAPAIQADgBwAA7AsMARgGt%2F9QBwP%2FCAZr%2F9gH%2B%2F8sB%2Fv%2FLAf7%2FywH%2B%2F8sB%2Fv%2FLAf7%2FywMj%2F98CJgA5AfcAIwH3ACMB9wAjAfcAIwD8ACMA%2FAAjAPwAIwD8ACMCawAjAnkAPAJ5ADwCeQA8AnkAPAJ5ADwCef%2F9AzAAPAJoAE8CaABPAmgATwJoAE8BzQBTAmIALwIyACMCGQAnAhkAJwIZACcCGQAnAhkAJwIZACcC%2BQAgAbMAJQHhACUB4QAlAeEAJQHhACUA7QAfAO0AHwDtAB8A7QAfAO0AHwINAB8CAwAnAgMAJwIDACcCAwAnAgMAJwIDAAADLAAnAisAHwIQADgCEAA4AhAAOAIQADgBwP%2FCAcD%2FwgIMACsCF%2F%2F2AigAKwIxACsCRgAPAeAAKgHgABoB4P%2F2AeD%2F9wHgAAgB4P%2F8AeAAMwHgAGsB4AAjAeAAEgDyABcA8v%2FhAPIAFwDy%2F%2BEBGgArARoAFQGZAF4Bmf%2F8APIAgAGYAIAA8gBuAPIAbwGYAG4BmABvAPL%2F%2BAEg%2F%2FgA%2FAAoAPwAFwGbACgBmwAXASsAIwErACQBzwAjAwEAIwDyAE8BJwApAeP%2F3AEjAEEBJf%2FUASQACAEl%2F88BIgAgASX%2FzAFU%2F7gA5wBfAVQAWADnAF8BkwB9Ad0ADwIXAEkCmQAkAZYASQMuAC0B3wAYAWQAsgFhAFcBXwBWAWIAXwFlAA8BZABcAWEAAQFfAAABYgAJAWIAPAFcADsBYgA8AVwAOwE5AGUB4AALAeAAEQHgAAQB4AAcAeAAFAHgAE4AVP8tAFT%2FLQMXAD0C7AB3AwQAYwL8AC4B4AAwAeAAMAHgAEEB4AAwAeAAMAHgAC4B4AAwAeAAMAHfAFMB4AAtAeAAMAIO%2F%2FYCBQD%2BAgUBBwIFAM4CBQDFAgUA1QIFANkCBQD6AgUAYQAAACYAAAAUAAAALwAAAEkAAP%2F2AAD%2F%2BgAA%2F%2B0AAP%2FxAAAAAQAA%2F%2F0AAAAGAAAAIgAAAC4AAP%2BJAAD%2FiQDAAAAAAQAAA9j%2B7wAABHj%2FLf61BFED6ADCAAAAAAAAAAAAAAAAAPAAAwGpAZAABQAAAooCWP%2FxAEsCigJYAEQBXgAyASAAAAILBQMDBAMJAgQgAAAHAAAAAQAAAAAAAAAAQURCRQABAAD%2B%2FwLu%2FwYAAAPYAREgAAGTAAAAAAHgApQAAAAgAAMAAAACAAAAAwAAABQAAwABAAAAFAAEAdIAAAA8ACAABAAcAAAADQAvADkAQABaAGAAegB%2BAL8AzwDfAO8A%2FwExAVMCxgLaAtwgFCAaIB4gIiA6IEQgdCCsIhIiFf%2F%2FAAAAAAANACAAMAA6AEEAWwBhAHsAoADAANAA4ADwATEBUgLGAtoC3CATIBggHCAiIDkgRCB0IKwiEiIV%2F%2F8AAf%2F1AAAATAAA%2F8MAAP%2B9AAAAAP94AAD%2FdwAA%2FzYAAP4U%2FgT9%2F%2BCJAAAAAOB94F3gguBB4Bjeu96yAAEAAAAAADgAAABUAAAAXgAAAGYAbAAAAKgAAADEAAAA4AAAAAAAAAAAANoA3gAAAAAAAAAAAAAAAAAAAAAAAwCKAI8AsQDBAMgAewCOAKEAogCrAMwAhwCaAIYApwCIAIkA0QDQANIAjACwAKMAqQCkANQAoADYAKUAqACmANUA7wCLAMUAwgDAAMMAqgCsANwArgC7AJgA1gCbAK8A3QC%2FANMAswC0ANkA1wCtAJ4A3wCyALwAmQDJAMoAywCNAFUASABJAEoASwBMAE0AzgBOAFAAUQBSAFMAVABWAHAAdwBoAGkAagBrAGwAbQDPAG4AcQByAHMAdAB1AHgAdgBPAG8AkACRAJQAkgCTAJUAALgAACxLuAAJUFixAQGOWbgB%2F4W4AEQduQAJAANfXi24AAEsICBFaUSwAWAtuAACLLgAASohLbgAAywgRrADJUZSWCNZIIogiklkiiBGIGhhZLAEJUYgaGFkUlgjZYpZLyCwAFNYaSCwAFRYIbBAWRtpILAAVFghsEBlWVk6LbgABCwgRrAEJUZSWCOKWSBGIGphZLAEJUYgamFkUlgjilkv%2FS24AAUsSyCwAyZQWFFYsIBEG7BARFkbISEgRbDAUFiwwEQbIVlZLbgABiwgIEVpRLABYCAgRX1pGESwAWAtuAAHLLgABiotuAAILEsgsAMmU1iwQBuwAFmKiiCwAyZTWCMhsICKihuKI1kgsAMmU1gjIbgAwIqKG4ojWSCwAyZTWCMhuAEAioobiiNZILADJlNYIyG4AUCKihuKI1kguAADJlNYsAMlRbgBgFBYIyG4AYAjIRuwAyVFIyEjIVkbIVlELbgACSxLU1hFRBshIVktALAAKwCyAQECKwGyAgICKwG3AkQ2KiEUAAgrtwNANiohFAAIKwC3AVJENiQWAAgrALIECAcrsAAgRX1pGERLsGBSWLABG7AAWbABjgAAFABEAFIAVgAAAAz%2FMwAMAeYADAIGAAwCPgAMAn4ADAKQAAwCyAAMAAAABwBaAAMAAQQJAAEAHgAAAAMAAQQJAAIADAAeAAMAAQQJAAMAQgAqAAMAAQQJAAQALABsAAMAAQQJAAUAggCYAAMAAQQJAAYAIAEaAAMAAQQJAA4ASAE6AFMAbwB1AHIAYwBlACAAUwBhAG4AcwAgAFAAcgBvAEkAdABhAGwAaQBjADEALgAwADUAMAA7AEEARABCAEUAOwBTAG8AdQByAGMAZQBTAGEAbgBzAFAAcgBvAC0ASQB0ADsAQQBEAE8AQgBFAFMAbwB1AHIAYwBlACAAUwBhAG4AcwAgAFAAcgBvACAASQB0AGEAbABpAGMAVgBlAHIAcwBpAG8AbgAgADEALgAwADUAMAA7AFAAUwAgAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAwADAAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA3ADAAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA1ADkAMAAwAFMAbwB1AHIAYwBlAFMAYQBuAHMAUAByAG8ALQBJAHQAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAZABvAGIAZQAuAGMAbwBtAC8AdAB5AHAAZQAvAGwAZQBnAGEAbAAuAGgAdABtAGwAAgAA%2F%2FUAAP%2B1ADIAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAABAgEDAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQCtAMkAxwCuAGIAYwCQAGQAywBlAMgAygDPAMwAzQDOAGYA0wDQANEArwBnAJEAsADWANQA1QBoAOsA6QDtAGoAaQBrAG0AbABuAKAAbwBxAHAAcgBzAHUAdAB2AHcA1wB4AHoAeQB7AH0AfAChALEAiQB%2FAH4AgACBAOwAugDqAO4BBAEFAAkAEwAUABUAFgAXABgAGQAaABsAHAARAA8AHQAeAAQAowAiAKIACgAFALYAtwC0ALUAxADFAL4AvwCpAKoAEAEGALIAswDDAIcAQgALAAwAPgBAAF4AYAASAF8APwDoAA0AhgCIAIsAigAjAAYBBwEIAQkBCgELAQwBDQEOAQ8AnQCeARABEQCDAL0ABwCFAJYBEgCEALwBEwAIAPUA9AD2AA4A7wDwALgAIAAfACEAkwBBAGEApAEUAEMAjQDYANkAjgDaAN0A3gEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkBE5VTEwCQ1IDZl9mA2ZfdAd1bmkwMEFECG9uZS5zdXBzCHR3by5zdXBzCnRocmVlLnN1cHMJZm91ci5zdXBzCXplcm8uZG5vbQhvbmUuZG5vbQh0d28uZG5vbQp0aHJlZS5kbm9tCWZvdXIuZG5vbQZhLnN1cHMGby5zdXBzBEV1cm8HdW5pMjIxNQd1bmkwMEI1B3VuaTAzMDALdW5pMDMwMC5jYXAHdW5pMDMwMQt1bmkwMzAxLmNhcAd1bmkwMzAyC3VuaTAzMDIuY2FwB3VuaTAzMDMLdW5pMDMwMy5jYXAHdW5pMDMwNAd1bmkwMzA4C3VuaTAzMDguY2FwB3VuaTAzMEELdW5pMDMwQS5jYXAHdW5pMDMyNwt1bmkwMzI3LmNhcAd1bmkwMEEwAAAAAAAAAf%2F%2FAAIAAQAAAAwAAAAAAAAAAgAIAAQANwABAD4APgABAE4ATwABAGcAZwABAG4AbwABAHgAeAABAHkAegACANoA2gABAAEAAAAKADAARAACREZMVAAObGF0bgAaAAQAAAAA%2F%2F8AAQAAAAQAAAAA%2F%2F8AAQABAAJrZXJuAA5rZXJuAA4AAAABAAAAAQAEAAIAAAACAAoBFAABACYABAAAAA4ARgBgAHIAhACSAKAAsgDAANYA3ADiAOgA8gEAAAEADgAJABMAGQAbADMANQBWAHAAhgCJAIsAjQCeAKkABgAZ%2F%2FkAM%2F%2F2ADX%2F7ACe%2F%2FYAp%2F%2BwAK8AKwAEABv%2F6AA1%2F%2FYAp%2F%2BiAK8AIAAEADX%2F5QCe%2F%2BwAp%2F%2FEAK8AKwADAJ7%2FwgCr%2F%2F0ArwA1AAMAp%2F%2FsAKv%2F5gCvACYABAAZ%2F%2FYAnv%2FsAKv%2F2ACvACYAAwCn%2F8sAqf%2FYAKv%2FqwAFADP%2F6AA1ABAAjP%2FrAKn%2F7ACv%2F9YAAQAnAAMAAQAnAB8AAQAZ%2F%2BUAAgAZ%2F9EAG%2F%2FlAAMAGf%2FsABv%2F5QA1%2F%2BwAAgAZ%2F8QAM%2F%2FsAAIRmAAEAAASFBNiADMALAAA%2F%2BL%2FnP%2FY%2F9j%2FsABk%2F%2FYAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F8v%2FXADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2FvQAAAAD%2FzQAAAAAAAAAA%2F%2BX%2F7P%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Bp%2F8j%2F3v%2B9AEYAAAAAAAD%2FyP%2FdAAD%2F5f%2Fv%2F%2B%2F%2F2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAA%2F9gAAAAAAAD%2F7P%2FsAAD%2FsAAU%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F6v%2F3v%2Fv%2F9H%2F9v%2F2%2F%2FL%2FqAAA%2F%2Fb%2F9v%2FrAAAAAP%2FvAAD%2F7%2F%2F2%2F4j%2F2P%2Fl%2F8%2F%2FqQAAAAAAAAAA%2F88ABv%2Bp%2F7n%2F8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FYAAAAAP%2FlAAD%2F9v%2FyAAAAAP%2FyAAAAAAAAAAAAAP%2F2%2F%2FYAAP%2BiAAD%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FL%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7P%2FyAAAAAAAA%2F%2B%2F%2F7wAAAAD%2F7P%2F2%2F88AAAAAAAD%2F9v%2Fy%2F%2FYAAAAA%2F6cAAAATAAAAAAAAAAAAAAAAAAAAAP%2FvAAD%2Fz%2F%2FrAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F8sAAAAAAAAABQAAAAAAAAAA%2F%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fv%2F%2FL%2F9v%2Fv%2F%2FYAAAAAAAAAAP%2F2AAD%2F5QAAAAAAAAAA%2F%2Bj%2F8f%2FsAAD%2FyQAAAAAAAAAAAAAAAP%2F2AAD%2F1QAAAAAAAP%2Fa%2F9UAAAAAAAAAAAAAAAAAAAAAAAD%2FiP%2FX%2F9H%2FqwAA%2F8L%2F0f%2BaAAP%2F5QAA%2F9P%2F8gAA%2F%2B8AAP%2Fq%2F%2Fb%2FWf%2Bc%2F43%2F0f%2BNAAAAAAAAAAD%2FowAA%2F3L%2Fmv%2BnAAD%2FsP%2FYAAAAAAAAAAAAAAAAAAAAAAAA%2F94AAAAA%2F%2BgAAAAAAAAAAAAAAAD%2F9gAAAAAAAAAA%2F%2BwAAAAA%2F7cAAAAAAAAAA%2F%2FsAAAAAAAA%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FcAAAAAP%2FsAAAAAAAAAAD%2F9v%2Fy%2F%2FYAAP%2F2%2F%2FYAAP%2FsAAAAAP%2FyAAAAAAAAABkAAAAAAAAAAP%2F2%2F%2FYAAAAAAAD%2F9v%2FY%2F%2BgAAAAAAAD%2F9gAAAAAAAAAAAAD%2F4gAAAAAAAAAAAAAAAAAAAAD%2F9gAAAAAAAAAAAAD%2F9gAAAAD%2F4gAA%2F%2FYAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FYAAP%2FY%2F9gAAP%2Br%2F7L%2Fy%2F%2Fs%2F7D%2FsP%2Ff%2F4L%2F7P%2BcAAAAAP%2FEAAAAK%2F%2BjAAAAAAAAAAD%2F7AAAAAD%2F2P%2FY%2F5z%2FwP%2BV%2F7D%2FxP%2Bc%2F5z%2FvQAAAAAAAAAAAAAAAP%2FyAAAAAAAAAAD%2F9v%2F2AAAAAAAAAAAAAP%2B2AAAAAAAAAAAAAAAAAAD%2F2AAAAAAAAP%2F2%2F%2FYAAAAAAAAAAAAAAAD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2B%2F%2F9v%2F2AAD%2F%2Bf%2FsAAb%2FnAAAAAAAAAAAAAAAAAAn%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fv%2F8gAAAAA%2F%2B8AAP%2FvAAAAAAAA%2F%2FYAAAAAAAAAAP%2Fo%2F%2BgAAP%2FG%2F%2Fb%2F6P%2Fy%2F9f%2F2AAA%2F6IAAP%2FiAAAAAP%2FYAA0AK%2F%2BwAAAAAAAAAAAAAAAAAAD%2F6P%2Fe%2F73%2Ftv%2Bp%2F97%2Fwv%2FA%2F%2FL%2F0AAAAAAAAAAA%2F%2Fb%2F9v%2FyAAD%2F6P%2FoAAD%2F7P%2Fi%2F%2Fb%2F7P%2Fn%2F%2FEAAP%2Fi%2F%2FL%2F3QAAAAD%2FxAAAABcAAAAAAAAAAP%2F2AAAAAAAA%2F%2BgAAP%2FC%2F80AAAAAAAAAAAAAAAAAAAAAAAD%2F3gAAAAD%2F3gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2FnAAAAAAAAAAAAAAAAAAAAAD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F94AAAAA%2F%2BgAAAAGAAYAAAAAAAAAAAAA%2F%2FH%2F9gAAAAAAAAAAAAAAAP%2F2AAAAEwAAAAAAAAAA%2F%2FIAAAAAAAAABgAG%2F%2B8AAAAAAAAAAAAAAAAAAAAAAAAAAP%2BrAAAAAP%2FeAAoAAAAA%2F%2BUAAAAAAAAAAAAAAAAAAAAAAAAAAP%2B3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2Flf%2Br%2F%2BL%2FrAAf%2F%2B3%2F7P%2BGAAAAAAAAAAD%2F9gAAAAAAAP%2FiAAD%2FZQAAAAAAAAAAAAAAAAAAAAD%2FrAAA%2F4b%2Fmv%2FdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F88AAP%2F2%2F%2BUAAP%2Fy%2F%2FL%2F4AAA%2F%2BwAAP%2FyAAD%2F8QAA%2F%2Bz%2F7wAA%2F7P%2F9v%2FlAAD%2F8wAAAAAAAAAA%2F%2FIAAAAAAAD%2F8gAAAA3%2F6AAAAAAAAAAAAAAAAAAAAAAAAAAyAAAAMgAyAAAAAAAAACEAAAAAAAAAAP%2F2%2F%2BwAAAAAAAAAAAAAAFD%2F8wAeAEv%2F7AAeAAAAAAAyACgAKAAhAAAAAP%2F2AAD%2Fwv%2F6AAAAAAAAAAAANQAAAAD%2F7wAAAAD%2F7%2F%2F2AAAAAP%2FdAAAAAAAAAAD%2F7%2F%2F2AAAAAP%2F2%2F%2Fb%2FxAAA%2F%2BwAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F3f%2FlAA0AAAAAAAAAAAAAAAAAAAAA%2F%2BgAAAAA%2F94AAAAAAAD%2FxAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F7AAAAAAAAAAAAAAAAAAAAAA%2F%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FAAAAAAP%2FCAAD%2F%2Bf%2F1%2F70AAAAAAAAAAAAA%2F%2FEAAAAAAAAAAAAA%2F9gAAAAAAAAAAAAAAAAAAP%2FoAAAAAP%2FY%2F%2FX%2F7wAUAAD%2F9gAAAAD%2F8gAAAAD%2F%2BQAAAAAAAAAAAAAAAAAAAAAAAAAA%2F7kAAAAAAAD%2F2P%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FE%2F3QAAAAAAAAAAAAAAAAAAAAA%2F64AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F%2BgAGAAYADQAAAAD%2F7AAA%2F%2Fb%2F6QAA%2F6sAAAAAAAAAFAAAAAAAOv%2FYAAAAAAAAAAAAAAAAACEABgAA%2F%2Bz%2F7P%2FNAAD%2F%2Bv%2F2AAAAAAAAAAAAAP%2FeAAAAAP%2FoAAAAAP%2F8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2B3AAAAAAAAAAAAAAAAAAAAAP%2FyAAAAAAAA%2F%2FwAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9f%2FsAAAAAAAA%2F%2FYAAAAA%2F%2BwAAAAtABQAAAAAAAAAAAAAAAAAAAAAAAD%2F5f%2FsAA0AAAAAAAAAFAAAAAAAAAAA%2F9gAAAAA%2F%2Bz%2F9gAAAAAAAP%2F5AAAAAAAA%2F%2Fz%2F9gAA%2F%2BIAAAAA%2F%2BIAAAAAAAAAM%2F%2F2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FoAAAAAP%2FyAAAAAAAAAAAAAP%2FYAAAAAP%2Fl%2F%2FYAAAAAAAAAAAAAAAAAAP%2F8%2F%2BwAAP%2FeAAAAAAAAAAAAAAAAADP%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F3QAAAAD%2F9gAAAAAAAAAAAAD%2F4gAAAAD%2F6AAAAAAAAAAAAAAAAAAAAAD%2F9v%2FpAAAAAAAA%2F%2BwAAAAA%2F%2FYAAAAmAAAAAAAAAAD%2F9gAAAAAAAAAAAAD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F8%2F%2FkAAP%2F2%2F%2FYAAP%2FY%2F%2FD%2F7P%2F2%2F%2Fb%2F4gAA%2F3T%2F9v%2FxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7P%2B9%2F%2Bz%2F8f%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7AAAAAAAAAAAAAAAAAAAAAD%2F4gAAAAD%2F8gAAAAAAAAAA%2F8L%2F9v%2BcAAD%2F7P%2FiAAD%2FeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9v%2F2%2F4YAAAAA%2F%2BwAAAAAAAAAAAAAAAD%2F9gAAAAAAAAAAAAAAAP%2FP%2F%2Bz%2F7AAA%2F%2BX%2FyAAA%2F6wAAP%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F8%2F%2Fzf%2B5%2F%2Bz%2F7P%2FIAAD%2FzQAAAAAAAP%2FyAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAA%2F%2FAAAAAAAAD%2F8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FP%2F9gAAAAAAAAAAAAA%2F%2BUAAAAAAAAAAAAAAAAAAABJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F7kAAAAAAAAAAAAAAAD%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2Bj%2F7AAAAAAAAP%2FvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9P%2Fo%2F5UAAAAAAAAAAAAAAAAAAAAA%2F%2B0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2Fr%2F%2FJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2FoAAA%2F%2FL%2FyQAAAAAAAAAAAAAAAP%2F5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F3f%2F5AAAAAAAA%2F%2FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F6MAAP%2Fy%2F70AAAAAAAAAAAAA%2F%2BL%2F7AAAAAAAAAAA%2F%2BIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F9EAAAAAAAAAAP%2FyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2FvQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2FmgAA%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F7MAAAAAAAD%2F6P%2FcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F20AAP%2FYAAAAAAAAAAAAAAAA%2F9gAAAAA%2F%2Bz%2F9gAAAAAAAP%2FyAAAAAAAA%2F%2Fz%2F7AAA%2F94AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FdAAAAAP%2FyAAAAAAAAAAAAAP%2FCAAAAAP%2FoAAAAAAAAAAAAAAAAAAAAAP%2Fv%2F%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fr%2F%2FIAAAAAAAAAAAAA%2F%2FkAAAACABQABAAHAAAACQAKAAQADQAPAAYAEgAgAAkAIgAlABgAKAAoABwAKgA9AB0APwA%2FADEASQBOADIAUABVADgAVwBiAD4AZwB2AEoAeAB6AFoAhgCTAF0AlgCeAGsAoQChAHQAowCjAHUApQClAHYApwCnAHcAqQCpAHgAAQAEAKQABwAIAAkADQAAACUACgAAAAAAJgALAAwAAAAAAA0AJwANAA4ADwAQABEAKAASACkAEwAUABUAHQAWAAAAGQAaABUAHAAAAAAAGwAAABwAHAAdAB0AFQAfACAAIQAVADEAIgAyACMAJAAHAAcABwAHAAcABwAAAAkAAAAAAAAAAAAAAAAAAAAAAAAADQANAA0ADQANAA0AAAARABEAEQARABMADQAAABUAFQAVABUAFQAVABkAFgAZABkAGQAZAAAAAAAAAAAAFQAcAB0AHQAdAB0AHQAdABkALAAVABUAFQAVACMAIwAAAB0AGgAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYABgAFwAXAAEAAgAEAAUALwAvAB4AMAAeADAAAAAAAC0ALgAtAC4AKwArACsAKwADAAAAAAAqAAAAKgAAACoAAAAGAAEABACsAAoAAAANAAAAAAAAAA0AAAAAABEAAAAAAAAAAAANAAAADQAAAAsAAgADAB0ABAAeAAUADAAOAAAADgAOAA4AEAAOAAAAAAAGAAAAAAAmACYADgAmAA4AJgAnABIAEwAhAAcAIgAIACgACgAKAAoACgAKAAoAAAANAAAAAAAAAAAAAAAAAAAAAAAAAA0ADQANAA0ADQANAA0AAwADAAMAAwAFAAEAAAAOAA4ADgAOAA4ADgAPAA4ADgAOAA4ADgAAAAAAAAAAACYAJgAOAA4ADgAOAA4ADgAOAAAAEwATABMAEwAIAAgAAAAAABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAlACkAKQAaABsAFwAcAB8AHwAgAAkAIAAJAAAAAAAkACoAJAAqACMAIwAjACMAFgAAAAAAAAArAAAAKwAAACsAGQAAABUAAAAUAAAAAAAAABgAAQAAAAoAMABEAAJERkxUAA5sYXRuABoABAAAAAD%2F%2FwABAAAABAAAAAD%2F%2FwABAAEAAmxpZ2EADmxpZ2EADgAAAAEAAAABAAQABAAAAAEACAABABoAAQAIAAIABgAMAHkAAgAjAHoAAgAxAAEAAQAj%29%20format%28%27truetype%27%29%3B%0A%7D%0Ahtml%7Bfont%2Dfamily%3Asans%2Dserif%3B%2Dms%2Dtext%2Dsize%2Dadjust%3A100%25%3B%2Dwebkit%2Dtext%2Dsize%2Dadjust%3A100%25%7Dbody%7Bmargin%3A0%7Darticle%2Caside%2Cdetails%2Cfigcaption%2Cfigure%2Cfooter%2Cheader%2Chgroup%2Cmain%2Cmenu%2Cnav%2Csection%2Csummary%7Bdisplay%3Ablock%7Daudio%2Ccanvas%2Cprogress%2Cvideo%7Bdisplay%3Ainline%2Dblock%3Bvertical%2Dalign%3Abaseline%7Daudio%3Anot%28%5Bcontrols%5D%29%7Bdisplay%3Anone%3Bheight%3A0%7D%5Bhidden%5D%2Ctemplate%7Bdisplay%3Anone%7Da%7Bbackground%2Dcolor%3Atransparent%7Da%3Aactive%2Ca%3Ahover%7Boutline%3A0%7Dabbr%5Btitle%5D%7Bborder%2Dbottom%3A1px%20dotted%7Db%2Cstrong%7Bfont%2Dweight%3Abold%7Ddfn%7Bfont%2Dstyle%3Aitalic%7Dh1%7Bfont%2Dsize%3A2em%3Bmargin%3A0%2E67em%200%7Dmark%7Bbackground%3A%23ff0%3Bcolor%3A%23000%7Dsmall%7Bfont%2Dsize%3A80%25%7Dsub%2Csup%7Bfont%2Dsize%3A75%25%3Bline%2Dheight%3A0%3Bposition%3Arelative%3Bvertical%2Dalign%3Abaseline%7Dsup%7Btop%3A%2D0%2E5em%7Dsub%7Bbottom%3A%2D0%2E25em%7Dimg%7Bborder%3A0%7Dsvg%3Anot%28%3Aroot%29%7Boverflow%3Ahidden%7Dfigure%7Bmargin%3A1em%2040px%7Dhr%7B%2Dwebkit%2Dbox%2Dsizing%3Acontent%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Acontent%2Dbox%3Bbox%2Dsizing%3Acontent%2Dbox%3Bheight%3A0%7Dpre%7Boverflow%3Aauto%7Dcode%2Ckbd%2Cpre%2Csamp%7Bfont%2Dfamily%3Amonospace%2C%20monospace%3Bfont%2Dsize%3A1em%7Dbutton%2Cinput%2Coptgroup%2Cselect%2Ctextarea%7Bcolor%3Ainherit%3Bfont%3Ainherit%3Bmargin%3A0%7Dbutton%7Boverflow%3Avisible%7Dbutton%2Cselect%7Btext%2Dtransform%3Anone%7Dbutton%2Chtml%20input%5Btype%3D%22button%22%5D%2Cinput%5Btype%3D%22reset%22%5D%2Cinput%5Btype%3D%22submit%22%5D%7B%2Dwebkit%2Dappearance%3Abutton%3Bcursor%3Apointer%7Dbutton%5Bdisabled%5D%2Chtml%20input%5Bdisabled%5D%7Bcursor%3Adefault%7Dbutton%3A%3A%2Dmoz%2Dfocus%2Dinner%2Cinput%3A%3A%2Dmoz%2Dfocus%2Dinner%7Bborder%3A0%3Bpadding%3A0%7Dinput%7Bline%2Dheight%3Anormal%7Dinput%5Btype%3D%22checkbox%22%5D%2Cinput%5Btype%3D%22radio%22%5D%7B%2Dwebkit%2Dbox%2Dsizing%3Aborder%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Aborder%2Dbox%3Bbox%2Dsizing%3Aborder%2Dbox%3Bpadding%3A0%7Dinput%5Btype%3D%22number%22%5D%3A%3A%2Dwebkit%2Dinner%2Dspin%2Dbutton%2Cinput%5Btype%3D%22number%22%5D%3A%3A%2Dwebkit%2Douter%2Dspin%2Dbutton%7Bheight%3Aauto%7Dinput%5Btype%3D%22search%22%5D%7B%2Dwebkit%2Dappearance%3Atextfield%3B%2Dwebkit%2Dbox%2Dsizing%3Acontent%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Acontent%2Dbox%3Bbox%2Dsizing%3Acontent%2Dbox%7Dinput%5Btype%3D%22search%22%5D%3A%3A%2Dwebkit%2Dsearch%2Dcancel%2Dbutton%2Cinput%5Btype%3D%22search%22%5D%3A%3A%2Dwebkit%2Dsearch%2Ddecoration%7B%2Dwebkit%2Dappearance%3Anone%7Dfieldset%7Bborder%3A1px%20solid%20%23c0c0c0%3Bmargin%3A0%202px%3Bpadding%3A0%2E35em%200%2E625em%200%2E75em%7Dlegend%7Bborder%3A0%3Bpadding%3A0%7Dtextarea%7Boverflow%3Aauto%7Doptgroup%7Bfont%2Dweight%3Abold%7Dtable%7Bborder%2Dcollapse%3Acollapse%3Bborder%2Dspacing%3A0%7Dtd%2Cth%7Bpadding%3A0%7D%40media%20print%7B%2A%2C%2A%3Abefore%2C%2A%3Aafter%7Bbackground%3Atransparent%20%21important%3Bcolor%3A%23000%20%21important%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%20%21important%3Bbox%2Dshadow%3Anone%20%21important%3Btext%2Dshadow%3Anone%20%21important%7Da%2Ca%3Avisited%7Btext%2Ddecoration%3Aunderline%7Da%5Bhref%5D%3Aafter%7Bcontent%3A%22%20%28%22%20attr%28href%29%20%22%29%22%7Dabbr%5Btitle%5D%3Aafter%7Bcontent%3A%22%20%28%22%20attr%28title%29%20%22%29%22%7Da%5Bhref%5E%3D%22%23%22%5D%3Aafter%2Ca%5Bhref%5E%3D%22javascript%3A%22%5D%3Aafter%7Bcontent%3A%22%22%7Dpre%2Cblockquote%7Bborder%3A1px%20solid%20%23999%3Bpage%2Dbreak%2Dinside%3Aavoid%7Dthead%7Bdisplay%3Atable%2Dheader%2Dgroup%7Dtr%2Cimg%7Bpage%2Dbreak%2Dinside%3Aavoid%7Dimg%7Bmax%2Dwidth%3A100%25%20%21important%7Dp%2Ch2%2Ch3%7Borphans%3A3%3Bwidows%3A3%7Dh2%2Ch3%7Bpage%2Dbreak%2Dafter%3Aavoid%7D%2Enavbar%7Bdisplay%3Anone%7D%2Ebtn%3E%2Ecaret%2C%2Edropup%3E%2Ebtn%3E%2Ecaret%7Bborder%2Dtop%2Dcolor%3A%23000%20%21important%7D%2Elabel%7Bborder%3A1px%20solid%20%23000%7D%2Etable%7Bborder%2Dcollapse%3Acollapse%20%21important%7D%2Etable%20td%2C%2Etable%20th%7Bbackground%2Dcolor%3A%23fff%20%21important%7D%2Etable%2Dbordered%20th%2C%2Etable%2Dbordered%20td%7Bborder%3A1px%20solid%20%23ddd%20%21important%7D%7D%40font%2Dface%7Bfont%2Dfamily%3A%27Glyphicons%20Halflings%27%3Bsrc%3Aurl%28data%3Aapplication%2Fvnd%2Ems%2Dfontobject%3Bbase64%2Cn04AAEFNAAACAAIABAAAAAAABQAAAAAAAAABAJABAAAEAExQAAAAAAAAAAIAAAAAAAAAAAEAAAAAAAAAJxJ%2FLAAAAAAAAAAAAAAAAAAAAAAAACgARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzAAAADgBSAGUAZwB1AGwAYQByAAAAeABWAGUAcgBzAGkAbwBuACAAMQAuADAAMAA5ADsAUABTACAAMAAwADEALgAwADAAOQA7AGgAbwB0AGMAbwBuAHYAIAAxAC4AMAAuADcAMAA7AG0AYQBrAGUAbwB0AGYALgBsAGkAYgAyAC4ANQAuADUAOAAzADIAOQAAADgARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzACAAUgBlAGcAdQBsAGEAcgAAAAAAQlNHUAAAAAAAAAAAAAAAAAAAAAADAKncAE0TAE0ZAEbuFM3pjM%2FSEdmjKHUbyow8ATBE40IvWA3vTu8LiABDQ%2BpexwUMcm1SMnNryctQSiI1K5ZnbOlXKmnVV5YvRe6RnNMFNCOs1KNVpn6yZhCJkRtVRNzEufeIq7HgSrcx4S8h%2Fv4vnrrKc6oCNxmSk2uKlZQHBii6iKFoH0746ThvkO1kJHlxjrkxs%2BLWORaDQBEtiYJIR5IB9Bi1UyL4Rmr0BNigNkMzlKQmnofBHviqVzUxwdMb3NdCn69hy%2BpRYVKGVS%2F1tnsqv4LL7wCCPZZAZPT4aCShHjHJVNuXbmMrY5LeQaGnvAkXlVrJgKRAUdFjrWEah9XebPeQMj7KS7DIBAFt8ycgC5PLGUOHSE3ErGZCiViNLL5ZARfywnCoZaKQCu6NuFX42AEeKtKUGnr%2FCm2Cy8tpFhBPMW5Fxi4Qm4TkDWh4IWFDClhU2hRWosUWqcKLlgyXB%2BlSHaWaHiWlBAR8SeSgSPCQxdVQgzUixWKSTrIQEbU94viDctkvX%2BVSjJuUmV8L4CXShI11esnp0pjWNZIyxKHS4wVQ2ime1P4RnhvGw0aDN1OLAXGERsB7buFpFGGBAre4QEQR0HOIO5oYH305G%2BKspT%2FFupEGGafCCwxSe6ZUa%2B073rXHnNdVXE6eWvibUS27XtRzkH838mYLMBmYysZTM0EM3A1fbpCBYFccN1B%2FEnCYu%2FTgCGmr7bMh8GfYL%2BBfcLvB0gRagC09w9elfldaIy%2FhNCBLRgBgtCC7jAF63wLSMAfbfAlEggYU0bUA7ACCJmTDpEmJtI78w4%2FBO7dN7JR7J7ZvbYaUbaILSQsRBiF3HGk5fEg6p9unwLvn98r%2BvnsV%2B372uf1xBLq4qU%2F45fTuqaAP%2BpssmCCCTF0mhEow8ZXZOS8D7Q85JsxZ%2BAzok7B7O%2Ff6J8AzYBySZQB%2FQHYUSA%2BEeQhEWiS6AIQzgcsDiER4MjgMBAWDV4AgQ3g1eBgIdweCQmCjJEMkJ%2BPKRWyFHHmg1Wi%2F6xzUgA0LREoKJChwnQa9B%2B5RQZRB3IlBlkAnxyQNaANwHMowzlYSMCBgnbpzvqpl0iTJNCQidDI9ZrSYNIRBhHtUa5YHMHxyGEik9hDE0AKj72AbTCaxtHPUaKZdAZSnQTyjGqGLsmBStCejApUhg4uBMU6mATujEl%2BKdDPbI6Ag4vLr%2BhjY6lbjBeoLKnZl0UZgRX8gTySOeynZVz1wOq7e1hFGYIq%2BMhrGxDLak0PrwYzSXtcuyhXEhwOYofiW%2BEcI%2Fjw8P6IY6ed%2BetAbuqKp5QIapT77LnAe505lMuqL79a0ut4rWexzFttsOsLDy7zvtQzcq3U1qabe7tB0wHWVXji%2BzDbo8x8HyIRUbXnwUcklFv51fvTymiV%2BMXLSmGH9d9%2BaXpD5X6lao41anWGig7IwIdnoBY2ht%2FpO9mClLo4NdXHAsefqWUKlXJkbqPOFhMoR4aiA1BXqhRNbB2Xwi%2B7u%2FjpAoOpKJ0UX24EsrzMfHXViakCNcKjBxuQX8BO0ZqjJ3xXzf%2B61t2VXOSgJ8xu65QKgtN6FibPmPYsXbJRHHqbgATcSZxBqGiDiU4NNNsYBsKD0MIP%2FOfKnlk%2FLkaid%2FO2NbKeuQrwOB2Gq3YHyr6ALgzym5wIBnsdC1ZkoBFZSQXChZvlesPqvK2c5oHHT3Q65jYpNxnQcGF0EHbvYqoFw60WNlXIHQF2HQB7zD6lWjZ9rVqUKBXUT6hrkZOle0RFYII0V5ZYGl1JAP0Ud1fZZMvSomBzJ710j4Me8mjQDwEre5Uv2wQfk1ifDwb5ksuJQQ3xt423lbuQjvoIQByQrNDh1JxGFkOdlJvu%2FgFtuW0wR4cgd%2BZKesSV7QkNE2kw6AV4hoIuC02LGmTomyf8PiO6CZzOTLTPQ%2BHW06H%2Btx%2BbQ8LmDYg1pTFrp2oJXgkZTyeRJZM0C8aE2LpFrNVDuhARsN543%2FFV6klQ6Tv1OoZGXLv0igKrl%2FCmJxRmX7JJbJ998VSIPQRyDBICzl4JJlYHbdql30NvYcOuZ7a10uWRrgoieOdgIm4rlq6vNOQBuqESLbXG5lzdJGHw2m0sDYmODXbYGTfSTGRKpssTO95fothJCjUGQgEL4yKoGAF%2F0SrpUDNn8CBgBcSDQByAeNkCXp4S4Ro2Xh4OeaGRgR66PVOsU8bc6TR5%2FxTcn4IVMLOkXSWiXxkZQCbvKfmoAvQaKjO3EDKwkwqHChCDEM5loQRPd5ACBki1TjF772oaQhQbQ5C0lcWXPFOzrfsDGUXGrpxasbG4iab6eByaQkQfm0VFlP0ZsDkvvqCL6QXMUwCjdMx1ZOyKhTJ7a1GWAdOUcJ8RSejxNVyGs31OKMyRyBVoZFjqIkmKlLQ5eHMeEL4MkUf23cQ%2F1SgRCJ1dk4UdBT7OoyuNgLs0oCd8RnrEIb6QdMxT2QjD4zMrJkfgx5aDMcA4orsTtKCqWb%2FVeyceqa5OGSmB28YwH4rFbkQaLoUN8OQQYnD3w2eXpI4ScQfbCUZiJ4yMOIKLyyTc7BQ4uXUw6Ee6%2FxM%2B4Y67ngNBknxIPwuppgIhFcwJyr6EIj%2BLzNj%2FmfR2vhhRlx0BILZoAYruF0caWQ7YxO66UmeguDREAFHYuC7HJviRgVO6ruJH59h%2FC%2FPkgSle8xNzZJULLWq9JMDTE2fjGE146a1Us6PZDGYle6ldWRqn%2FpdpgHKNGrGIdkRK%2BKPETT9nKT6kLyDI8xd9A1FgWmXWRAIHwZ37WyZHOVyCadJEmMVz0MadMjDrPho%2BEIochkVC2xgGiwwsQ6DMv2P7UXqT4x7CdcYGId2BJQQa85EQKmCmwcRejQ9Bm4oATENFPkxPXILHpMPUyWTI5rjNOsIlmEeMbcOCEqInpXACYQ9DDxmFo9vcmsDblcMtg4tqBerNngkIKaFJmrQAPnq1dEzsMXcwjcHdfdCibcAxxA%2Bq%2Fj9m3LM%2FO7WJka4tSidVCjsvo2lQ%2F2ewyoYyXwAYyr2PlRoR5MpgVmSUIrM3PQxXPbgjBOaDQFIyFMJvx3Pc5RSYj12ySVF9fwFPQu2e2KWVoL9q3Ayv3IzpGHUdvdPdrNUdicjsTQ2ISy7QU3DrEytIjvbzJnAkmANXjAFERA0MUoPF3%2F5KFmW14bBNOhwircYgMqoDpUMcDtCmBE82QM2YtdjVLB4kBuKho%2FbcwQdeboqfQartuU3CsCf%2BcXkgYAqp%2F0Ee3RorAZt0AvvOCSI4JICIlGlsV0bsSid%2FNIEALAAzb6HAgyWHBps6xAOwkJIGcB82CxRQq4sJf3FzA70A%2BTRqcqjEMETCoez3mkPcpnoALs0ugJY8kQwrC%2BJE5ik3w9rzrvDRjAQnqgEVvdGrNwlanR0SOKWzxOJOvLJhcd8Cl4AshACUkv9czdMkJCVQSQhp6kp7StAlpVRpK0t0SW6LHeBJnE2QchB5Ccu8kxRghZXGIgZIiSj7gEKMJDClcnX6hgoqJMwiQDigIXg3ioFLCgDgjPtYHYpsF5EiA4kcnN18MZtOrY866dEQAb0FB34OGKHGZQjwW%2FWDHA60cYFaI%2FPjpzquUqdaYGcIq%2BmLez3WLFFCtNBN2QJcrlcoELgiPku5R5dSlJFaCEqEZle1AQzAKC%2B1SotMcBNyQUFuRHRF6OlimSBgjZeTBCwLyc6A%2BP%2FoFRchXTz5ADknYJHxzrJ5pGuIKRQISU6WyKTBBjD8WozmVYWIsto1AS5rxzKlvJu4E%2FvwOiKxRtCWsDM%2BeTHUrmwrCK5BIfMzGkD%2B0Fk5LzBs0jMYXktNDblB06LMNJ09U8pzSLmo14MS0OMjcdrZ31pyQqxJJpRImlSvfYAK8inkYU52QY2FPEVsjoWewpwhRp5yAuNpkqhdb7ku9Seefl2D0B8SMTFD90xi4CSOwwZy9IKkpMtI3FmFUg3%2FkFutpQGNc3pCR7gvC4sgwbupDu3DyEN%2BW6YGLNM21jpB49irxy9BSlHrVDlnihGKHwPrbVFtc%2Bh1rVQKZduxIyojccZIIcOCmhEnC7UkY68WXKQgLi2JCDQkQWJRQuk60hZp0D3rtCTINSeY9Ej2kIKYfGxwOs4j9qMM7fYZiipzgcf7TamnehqdhsiMiCawXnz4xAbyCkLAx5EGbo3Ax1u3dUIKnTxIaxwQTHehPl3V491H0%2BbC5zgpGz7Io%2BmjdhKlPJ01EeMpM7UsRJMi1nGjmJg35i6bQBAAxjO%2FENJubU2mg3ONySEoWklCwdABETcs7ck3jgiuU9pcKKpbgn%2B3YlzV1FzIkB6pmEDOSSyDfPPlQskznctFji0kpgZjW5RZe6x9kYT4KJcXg0bNiCyif%2BpZACCyRMmYsfiKmN9tSO65F0R2OO6ytlEhY5Sj6uRKfFxw0ijJaAx%2Fk3QgnAFSq27%2F2i4GEBA%2BUvTJKK%2F9eISNvG46Em5RZfjTYLdeD8kdXHyrwId%2FDQZUaMCY4gGbke2C8vfjgV%2FY9kkRQOJIn%2FxM9INZSpiBnqX0Q9GlQPpPKAyO5y%2BW5NMPSRdBCUlmuxl40ZfMCnf2Cp044uI9WLFtCi4YVxKjuRCOBWIb4XbIsGdbo4qtMQnNOQz4XDSui7W%2FN6l54qOynCqD3DpWQ%2BmpD7C40D8BZEWGJX3tlAaZBMj1yjvDYKwCJBa201u6nBKE5UE%2B7QSEhCwrXfbRZylAaAkplhBWX50dumrElePyNMRYUrC99UmcSSNgImhFhDI4BXjMtiqkgizUGCrZ8iwFxU6fQ8GEHCFdLewwxYWxgScAYMdMLmcZR6b7rZl95eQVDGVoUKcRMM1ixXQtXNkBETZkVVPg8LoSrdetHzkuM7DjZRHP02tCxA1fmkXKF3VzfN1pc1cv%2F8lbTIkkYpqKM9VOhp65ktYk%2BQ46myFWBapDfyWUCnsnI00QTBQmuFjMZTcd0V2NQ768Fhpby04k2IzNR1wKabuGJqYWwSly6ocMFGTeeI%2BejsWDYgEvr66QgqdcIbFYDNgsm0x9UHY6SCd5%2B7tpsLpKdvhahIDyYmEJQCqMqtCF6UlrE5GXRmbu%2Bvtm3BFSxI6ND6UxIE7GsGMgWqghXxSnaRJuGFveTcK5ZVSPJyjUxe1dKgI6kNF7EZhIZs8y8FVqwEfbM0Xk2ltORVDKZZM40SD3qQoQe0orJEKwPfZwm3YPqwixhUMOndis6MhbmfvLBKjC8sKKIZKbJk8L11oNkCQzCgvjhyyEiQSuJcgCQSG4Mocfgc0Hkwcjal1UNgP0CBPikYqBIk9tONv4kLtBswH07vUCjEaHiFGlLf8MgXKzSgjp2HolRRccAOh0ILHz9qlGgIFkwAnzHJRjWFhlA7ROwINyB5HFj59PRZHFor6voq7l23EPNRwdWhgawqbivLSjRA4htEYUFkjESu67icTg5S0aW1sOkCiIysfJ9UnIWevOOLGpepcBxy1wEhd2WI3AZg7sr9WBmHWyasxMcvY%2FiOmsLtHSWNUWEGk9hScMPShasUA1AcHOtRZlqMeQ0OzYS9vQvYUjOLrzP07BUAFikcJNMi7gIxEw4pL1G54TcmmmoAQ5s7TGWErJZ2Io4yQ0ljRYhL8H5e62oDtLF8aDpnIvZ5R3GWJyAugdiiJW9hQAVTsnCBHhwu7rkBlBX6r3b7ejEY0k5GGeyKv66v%2B6dg7mcJTrWHbtMywbedYqCQ0FPwoytmSWsL8WTtChZCKKzEF7vP6De4x2BJkkniMgSdWhbeBSLtJZR9CTHetK1xb34AYIJ37OegYIoPVbXgJ%2FqDQK%2BbfCtxQRVKQu77WzOoM6SGL7MaZwCGJVk46aImai9fmam%2BWpHG%2B0BtQPWUgZ7RIAlPq6lkECUhZQ2gqWkMYKcYMYaIc4gYCDFHYa2d1nzp3%2BJ1eCBay8IYZ0wQRKGAqvCuZ%2FUgbQPyllosq%2BXtfKIZOzmeJqRazpmmoP%2F76YfkjzV2NlXTDSBYB04SVlNQsFTbGPk1t%2FI4Jktu0XSgifO2ozFOiwd%2F0SssJDn0dn4xqk4GDTTKX73%2FwQyBLdqgJ%2BWx6AQaba3BA9CKEzjtQYIfAsiYamapq80LAamYjinlKXUkxdpIDk0puXUEYzSalfRibAeDAKpNiqQ0FTwoxuGYzRnisyTotdVTclis1LHRQCy%2FqqL8oUaQzWRxilq5Mi0IJGtMY02cGLD69vGjkj3p6pGePKI8bkBv5evq8SjjyU04vJR2cQXQwSJyoinDsUJHCQ50jrFTT7yRdbdYQMB3MYCb6uBzJ9ewhXYPAIZSXfeEQBZZ3GPN3Nbhh%2FwkvAJLXnQMdi5NYYZ5GHE400GS5rXkOZSQsdZgIbzRnF9ueLnsfQ47wHAsirITnTlkCcuWWIUhJSbpM3wWhXNHvt2xUsKKMpdBSbJnBMcihkoDqAd1Zml%2FR4yrzow1Q2A5G%2Bkzo%2FRhRxQS2lCSDRV8LlYLBOOoo1bF4jwJAwKMK1tWLHlu9i0j4Ig8qVm6wE1DxXwAwQwsaBWUg2pOOol2dHxyt6npwJEdLDDVYyRc2D0HbcbLUJQj8gPevQBUBOUHXPrsAPBERICpnYESeu2OHotpXQxRGlCCtLdIsu23MhZVEoJg8Qumj%2FUMMc34IBqTKLDTp76WzL%2FdMjCxK7MjhiGjeYAC%2Fkj%2FjY%2FRde7hpSM1xChrog6yZ7OWTuD56xBJnGFE%2BpT2ElSyCnJcwVzCjkqeNLfMEJqKW0G7OFIp0G%2B9mh50I9o8k1tpCY0xYqFNIALgIfc2me4n1bmJnRZ89oepgLPT0NTMLNZsvSCZAc3TXaNB07vail36%2FdBySis4m9%2FDR8izaLJW6bWCkVgm5T%2Bius3ZXq4xI%2BGnbveLbdRwF2mNtsrE0JjYc1AXknCOrLSu7Te%2Fr4dPYMCl5qtiHNTn%2BTPbh1jCBHH%2BdMJNhwNgs3nT%2BOhQoQ0vYif56BMG6WowAcHR3DjQolxLzyVekHj00PBAaW7IIAF1EF%2BuRIWyXjQMAs2chdpaKPNaB%2BkSezYt0%2BCA04sOg5vx8Fr7Ofa9sUv87h7SLAUFSzbetCCZ9pmyLt6l6%2FTzoA1%2FZBG9bIUVHLAbi%2FkdBFgYGyGwRQGBpkqCEg2ah9UD6EedEcEL3j4y0BQQCiExEnocA3SZboh%2Bepgd3YsOkHskZwPuQ5OoyA0fTA5AXrHcUOQF%2BzkJHIA7PwCDk1gGVmGUZSSoPhNf%2BTklauz98QofOlCIQ%2FtCD4dosHYPqtPCXB3agggQQIqQJsSkB%2Bqn0rkQ1toJjON%2FOtCIB9RYv3PqRA4C4U68ZMlZn6BdgEvi2ziU%2BTQ6NIw3ej%2BAtDwMGEZk7e2IjxUWKdAxyaw9OCwSmeADTPPleyk6UhGDNXQb%2B%2BW6Uk4q6F7%2Frg6WVTo82IoCxSIsFDrav4EPHphD3u4hR53WKVvYZUwNCCeM4PMBWzK%2BEfIthZOkuAwPo5C5jgoZgn6dUdvx5rIDmd58cXXdKNfw3l%2BwM2UjgrDJeQHhbD7HW2QDoZMCujgIUkk5Fg8VCsdyjOtnGRx8wgKRPZN5dR0zPUyfGZFVihbFRniXZFOZGKPnEQzU3AnD1KfR6weHW2XS6KbPJxUkOTZsAB9vTVp3Le1F8q5l%2BDMcLiIq78jxAImD2pGFw0VHfRatScGlK6SMu8leTmhUSMy8Uhdd6xBiH3Gdman4tjQGLboJfqz6fL2WKHTmrfsKZRYX6BTDjDldKMosaSTLdQS7oDisJNqAUhw1PfTlnacCO8vl8706Km1FROgLDmudzxg%2BEWTiArtHgLsRrAXYWdB0NmToNCJdKm0KWycZQqb%2BMw76Qy29iQ5up%2FX7oyw8QZ75kP5F6iJAJz6KCmqxz8fEa%2FxnsMYcIO%2FvEkGRuMckhr4rIeLrKaXnmIzlNLxbFspOphkcnJdnz%2FChp%2FVlpj2P7jJQmQRwGnltkTV5dbF9fE3%2FfxoSqTROgq9wFUlbuYzYcasE0ouzBo%2BdDCDzxKAfhbAZYxQiHrLzV2iVexnDX%2FQnT1fsT%2Fxuhu1ui5qIytgbGmRoQkeQooO8eJNNZsf0iALur8QxZFH0nCMnjerYQqG1pIfjyVZWxhVRznmmfLG00BcBWJE6hzQWRyFknuJnXuk8A5FRDCulwrWASSNoBtR%2BCtGdkPwYN2o7DOw%2FVGlCZPusRBFXODQdUM5zeHDIVuAJBLqbO%2Ff9Qua%2BpDqEPk230Sob9lEZ8BHiCorjVghuI0lI4JDgHGRDD%2FprQ84B1pVGkIpVUAHCG%2Biz3Bn3qm2AVrYcYWhock4jso5%2BJ7HfHVj4WMIQdGctq3psBCVVzupQOEioBGA2Bk%2BUILT7%2BVoX5mdxxA5fS42gISQVi%2FHTzrgMxu0fY6hE1ocUwwbsbWcezrY2n6S8%2F6cxXkOH4prpmPuFoikTzY7T85C4T2XYlbxLglSv2uLCgFv8Quk%2FwdesUdWPeHYIH0R729JIisN9Apdd4eB10aqwXrPt%2BSu9mA8k8n1sjMwnfsfF2j3jMUzXepSHmZ%2FBfqXvzgUNQQWOXO8YEuFBh4QTYCkOAPxywpYu1VxiDyJmKVcmJPGWk%2Fgc3Pov02StyYDahwmzw3E1gYC9wkupyWfDqDSUMpCTH5e5N8B%2F%2FlHiMuIkTNw4USHrJU67bjXGqNav6PBuQSoqTxc8avHoGmvqNtXzIaoyMIQIiiUHIM64cXieouplhNYln7qgc4wBVAYR104kO%2BCvKqsg4yIUlFNThVUAKZxZt1XA34h3TCUUiXVkZ0w8Hh2R0Z5L0b4LZvPd%2Fp1gi%2F07h8qfwHrByuSxglc9cI4QIg2oqvC%2Fqm0i7tjPLTgDhoWTAKDO2ONW5oe%2B%2FeKB9vZB8K6C25yCZ9RFVMnb6NRdRjyVK57CHHSkJBfnM2%2Fj4ODUwRkqrtBBCrDsDpt8jhZdXoy%2F1BCqw3sSGhgGGy0a5Jw6BP%2FTExoCmNFYjZl248A0osgPyGEmRA%2BfAsqPVaNAfytu0vuQJ7rk3J4kTDTR2AlCHJ5cls26opZM4w3jMULh2YXKpcqGBtuleAlOZnaZGbD6DHzMd6i2oFeJ8z9XYmalg1Szd%2FocZDc1C7Y6vcALJz2lYnTXiWEr2wawtoR4g3jvWUU2Ngjd1cewtFzEvM1NiHZPeLlIXFbBPawxNgMwwAlyNSuGF3zizVeOoC9bag1qRAQKQE%2FEZBWC2J8mnXAN2aTBboZ7HewnObE8CwROudZHmUM5oZ%2FUgd%2FJZQK8lvAm43uDRAbyW8gZ%2BZGq0EVerVGUKUSm%2FIdn8AQHdR4m7bue88WBwft9mSCeMOt1ncBwziOmJYI2ZR7ewNMPiCugmSsE4EyQ%2BQATJG6qORMGd4snEzc6B4shPIo4G1T7PgSm8PY5eUkPdF8JZ0VBtadbHXoJgnEhZQaODPj2gpODKJY5Yp4DOsLBFxWbvXN755KWylJm%2BoOd4zEL9Hpubuy2gyyfxh8oEfFutnYWdfB8PdESLWYvSqbElP9qo3u6KTmkhoacDauMNNjj0oy40DFV7Ql0aZj77xfGl7TJNHnIwgqOkenruYYNo6h724%2BzUQ7%2BvkCpZB%2BpGA562hYQiDxHVWOq0oDQl%2FQsoiY%2BcuI7iWq%2FZIBtHcXJ7kks%2Bh2fCNUPA82BzjnqktNts%2BRLdk1VSu%2BtqEn7QZCCsvEqk6FkfiOYkrsw092J8jsfIuEKypNjLxrKA9kiA19mxBD2suxQKCzwXGws7kEJvlhUiV9tArLIdZW0IORcxEzdzKmjtFhsjKy%2F44XYXdI5noQoRcvjZ1RMPACRqYg2V1%2BOwOepcOknRLLFdYgTkT5UApt%2FJhLM3jeFYprZV%2BZow2g8fP%2BU68hkKFWJj2yBbKqsrp25xkZX1DAjUw52IMYWaOhab8Kp05VrdNftqwRrymWF4OQSjbdfzmRZirK8FMJELEgER2PHjEAN9pGfLhCUiTJFbd5LBkOBMaxLr%2FA1SY9dXFz4RjzoU9ExfJCmx%2FI9FKEGT3n2cmzl2X42L3Jh%2BAbQq6sA%2BSs1kitoa4TAYgKHaoybHUDJ51oETdeI%2F9ThSmjWGkyLi5QAGWhL0BG1UsTyRGRJOldKBrYJeB8ljLJHfATWTEQBXBDnQexOHTB%2BUn44zExFE4vLytcu5NwpWrUxO%2F0ZICUGM7hGABXym0V6ZvDST0E370St9MIWQOTWngeoQHUTdCJUP04spMBMS8LSker9cReVQkULFDIZDFPrhTzBl6sed9wcZQTbL%2BBDqMyaN3RJPh%2Fanbx%2BIv%2BqgQdAa3M9Z5JmvYlh4qop%2BHo1F1W5gbOE9YKLgAnWytXElU4G8GtW47lhgFE6gaSs%2Bgs37sFvi0PPVvA5dnCBgILTwoKd%2F%2BDoL9F6inlM7H4rOTzD79KJgKlZO%2FZgt22UsKhrAaXU5ZcLrAglTVKJEmNJvORGN1vqrcfSMizfpsgbIe9zno%2BgBoKVXgIL%2FVI8dB1O5o%2FR3Suez%2FgD7M781ShjKpIIORM%2FnxG%2BjjhhgPwsn2IoXsPGPqYHXA63zJ07M2GPEykQwJBYLK808qYxuIew4frk52nhCsnCYmXiR6CuapvE1IwRB4%2FQftDbEn%2BAucIr1oxrLabRj9q4ae0%2BfXkHnteAJwXRbVkR0mctVSwEbqhJiMSZUp9DNbEDMmjX22m3ABpkrPQQTP3S1sib5pD2VRKRd%2BeNAjLYyT0hGrdjWJZy24OYXRoWQAIhGBZRxuBFMjjZQhpgrWo8SiFYbojcHO8V5DyscJpLTHyx9Fimassyo5U6WNtquUMYgccaHY5amgR3PQzq3ToNM5ABnoB9kuxsebqmYZm0R9qxJbFXCQ1UPyFIbxoUraTJFDpCk0Wk9GaYJKz%2F6oHwEP0Q14lMtlddQsOAU9zlYdMVHiT7RQP3XCmWYDcHCGbVRHGnHuwzScA0BaSBOGkz3lM8CArjrBsyEoV6Ys4qgDK3ykQQPZ3hCRGNXQTNNXbEb6tDiTDLKOyMzRhCFT%2BmAUmiYbV3YQVqFVp9dorv%2BTsLeCykS2b5yyu8AV7IS9cxcL8z4Kfwp%2BxJyYLv1OsxQCZwTB4a8BZ%2F5EdxTBJthApqyfd9u3ifr%2FWILTqq5VqgwMT9SOxbSGWLQJUUWCVi4k9tho9nEsbUh7U6NUsLmkYFXOhZ0kmamaJLRNJzSj%2Fqn4Mso6zb6iLLBXoaZ6AqeWCjHQm2lztnejYYM2eubnpBdKVLORZhudH3JF1waBJKA9%2BW8EhMj3Kzf0L4vi4k6RoHh3Z5YgmSZmk6ns4fjScjAoL8GoOECgqgYEBYUGFVO4FUv4%2FYtowhEmTs0vrvlD%2FCrisnoBNDAcUi%2FteY7OctFlmARQzjOItrrlKuPO6E2Ox93L4O%2F4DcgV%2FdZ7qR3VBwVQxP1GCieA4RIpweYJ5FoYrHxqRBdJjnqbsikA2Ictbb8vE1GYIo9dacK0REgDX4smy6GAkxlH1yCGGsk%2BtgiDhNKuKu3yNrMdxafmKTF632F8Vx4BNK57GvlFisrkjN9WDAtjsWA0ENT2e2nETUb%2Fn7qwhvGnrHuf5bX6Vh%2Fn3xffU3PeHdR%2BFA92i6ufT3AlyAREoNDh6chiMWTvjKjHDeRhOa9YkOQRq1vQXEMppAQVwHCuIcV2g5rBn6GmZZpTR7vnSD6ZmhdSl176gqKTXu5E%2BYbfL0adwNtHP7dT7t7b46DVZIkzaRJOM%2BS6KcrzYVg%2BT3wSRFRQashjfU18NutrKa%2F7PXbtuJvpIjbgPeqd%2BpjmRw6YKpnANFSQcpzTZgpSNJ6J7uiagAbir%2F8tNXJ%2FOsOnRh6iuIexxrmkIneAgz8QoLmiaJ8sLQrELVK2yn3wOHp57BAZJhDZjTBzyoRAuuZ4eoxHruY1pSb7qq79cIeAdOwin4GdgMeIMHeG%2BFZWYaiUQQyC5b50zKjYw97dFjAeY2I4Bnl105Iku1y0lMA1ZHolLx19uZnRdILcXKlZGQx%2FGdEqSsMRU1BIrFqRcV1qQOOHyxOLXEGcbRtAEsuAC2V4K3p5mFJ22IDWaEkk9ttf5Izb2LkD1MnrSwztXmmD%2FQi%2FEmVEFBfiKGmftsPwVaIoZanlKndMZsIBOskFYpDOq3QUs9aSbAAtL5Dbokus2G4%2FasthNMK5UQKCOhU97oaOYNGsTah%2BjfCKsZnTRn5TbhFX8ghg8CBYt%2FBjeYYYUrtUZ5jVij%2Fop7V5SsbA4mYTOwZ46hqdpbB6Qvq3AS2HHNkC15pTDIcDNGsMPXaBidXYPHc6PJAkRh29Vx8KcgX46LoUQBhRM%2B3SW6Opll%2FwgxxsPgKJKzr5QCmwkUxNbeg6Wj34SUnEzOemSuvS2OetRCO8Tyy%2BQbSKVJcqkia%2BGvDefFwMOmgnD7h81TUtMn%2BmRpyJJ349HhAnoWFTejhpYTL9G8N2nVg1qkXBeoS9Nw2fB27t7trm7d%2FQK7Cr4uoCeOQ7%2F8JfKT77KiDzLImESHw%2F0wf73QeHu74hxv7uihi4fTX%2BXEwAyQG3264dwv17aJ5N335Vt9sdrAXhPOAv8JFvzqyYXwfx8WYJaef1gMl98JRFyl5Mv5Uo%2FoVH5ww5OzLFsiTPDns7fS6EURSSWd%2F92BxMYQ8sBaH%2Bj%2BwthQPdVgDGpTfi%2BJQIWMD8xKqULliRH01rTeyF8x8q%2FGBEEEBrAJMPf25UQwi0b8tmqRXY7kIvNkzrkvRWLnxoGYEJsz8u4oOyMp8cHyaybb1HdMCaLApUE%2B%2F7xLIZGP6H9xuSEXp1zLIdjk5nBaMuV%2FyTDRRP8Y2ww5RO6d2D94o%2B6ucWIqUAvgHIHXhZsmDhjVLczmZ3ca0Cb3PpKwt2UtHVQ0BgFJsqqTsnzZPlKahRUkEu4qmkJt%2Bkqdae76ViWe3STan69yaF9%2BfESD2lcQshLHWVu4ovItXxO69bqC5p1nZLvI8NdQB9s9UNaJGlQ5mG947ipdDA0eTIw%2FA1zEdjWquIsQXXGIVEH0thC5M%2BW9pZe7IhAVnPJkYCCXN5a32HjN6nsvokEqRS44tGIs7s2LVTvcrHAF%2BRVmI8L4HUYk4x%2B67AxSMJKqCg8zrGOgvK9kNMdDrNiUtSWuHFpC8%2Fp5qIQrEo%2FH%2B1l%2F0cAwQ2nKmpWxKcMIuHY44Y6DlkpO48tRuUGBWT0FyHwSKO72Ud%2BtJUfdaZ4CWNijzZtlRa8%2BCkmO%2FEwHYfPZFU%2FhzjFWH7vnzHRMo%2BaF9u8qHSAiEkA2HjoNQPEwHsDKOt6hOoK3Ce%2F%2B%2F9boMWDa44I6FrQhdgS7OnNaSzwxWKZMcyHi6LN4WC6sSj0qm2PSOGBTvDs%2FGWJS6SwEN%2FULwpb4LQo9fYjUfSXRwZkynUazlSpvX9e%2BG2zor8l%2BYaMxSEomDdLHGcD6YVQPegTaA74H8%2BV4WvJkFUrjMLGLlvSZQWvi8%2FQA7yzQ8GPno%2F%2F5SJHRP%2FOqKObPCo81s%2F%2B6WgLqykYpGAgQZhVDEBPXWgU%2FWzFZjKUhSFInufPRiMAUULC6T11yL45ZrRoB4DzOyJShKXaAJIBS9wzLYIoCEcJKQW8GVCx4fihqJ6mshBUXSw3wWVj3grrHQlGNGhIDNNzsxQ3M%2BGWn6ASobIWC%2BLbYOC6UpahVO13Zs2zOzZC8z7FmA05JhUGyBsF4tsG0drcggIFzgg%2Fkpf3%2BCnAXKiMgIE8Jk%2FMhpkc8DUJEUzDSnWlQFme3d0sHZDrg7LavtsEX3cHwjCYA17pMTfx8Ajw9hHscN67hyo%2BRJQ4458RmPywXykkVcW688oVUrQhahpPRvTWPnuI0B%2BSkQu7dCyvLRyFYlC1LG1gRCIvn3rwQeINzZQC2KXq31FaR9UmVV2QeGVqBHjmE%2BVMd3b1fhCynD0pQNhCG6%2FWCDbKPyE7NRQzL3BzQAJ0g09aUzcQA6mUp9iZFK6Sbp%2FYbHjo%2B%2B7%2FWj8S4YNa%2BZdqAw1hDrKWFXv9%2BzaXpf8ZTDSbiqsxnwN%2FCzK5tPkOr4tRh2kY3Bn9JtalbIOI4b3F7F1vPQMfoDcdxMS8CW9m%2FNCW%2FHILTUVWQIPiD0j1A6bo8vsv6P1hCESl2abrSJWDrq5sSzUpwoxaCU9FtJyYH4QFMxDBpkkBR6kn0LMPO%2B5EJ7Z6bCiRoPedRZ%2FP0SSdii7ZnPAtVwwHUidcdyspwncz5uq6vvm4IEDbJVLUFCn%2FLvIHfooUBTkFO130FC7CmmcrKdgDJcid9mvVzsDSibOoXtIf9k6ABle3PmIxejodc4aob0QKS432srrCMndbfD454q52V01G4q913mC5HOsTzWF4h2No1av1VbcUgWAqyoZl%2B11PoFYnNv2HwAODeNRkHj%2B8SF1fcvVBu6MrehHAZK1Gm69ICcTKizykHgGFx7QdowTVAsYEF2tVc0Z6wLryz2FI1sc5By2znJAAmINndoJiB4sfPdPrTC8RnkW7KRCwxC6YvXg5ahMlQuMpoCSXjOlBy0Kij%2BbsCYPbGp8BdCBiLmLSAkEQRaieWo1SYvZIKJGj9Ur%2FeWHjiB7SOVdqMAVmpBvfRiebsFjger7DC%2B8kRFGtNrTrnnGD2GAJb8rQCWkUPYHhwXsjNBSkE6lGWUj5QNhK0DMNM2l%2BkXRZ0KLZaGsFSIdQz%2FHXDxf3%2FTE30%2BDgBKWGWdxElyLccJfEpjsnszECNoDGZpdwdRgCixeg9L4EPhH%2BRptvRMVRaahu4cySjS3P5wxAUCPkmn%2BrhyASpmiTaiDeggaIxYBmtLZDDhiWIJaBgzfCsAGUF1Q1SFZYyXDt9skCaxJsxK2Ms65dmdp5WAZyxik%2FzbrTQk5KmgxCg%2Ff45L0jywebOWUYFJQAJia7XzCV0x89rpp%2Ff3AVWhSPyTanqmik2SkD8A3Ml4NhIGLAjBXtPShwKYfi2eXtrDuKLk4QlSyTw1ftXgwqA2jUuopDl%2B5tfUWZNwBpEPXghzbBggYCw%2Fdhy0ntds2yeHCDKkF%2FYxQjNIL%2FF%2F37jLPHCKBO9ibwYCmuxImIo0ijV2Wbg3kSN2psoe8IsABv3RNFaF9uMyCtCYtqcD%2BqNOhwMlfARQUdJ2tUX%2BMNJqOwIciWalZsmEjt07tfa8ma4cji9sqz%2BQ9hWfmMoKEbIHPOQORbhQRHIsrTYlnVTNvcq1imqmmPDdVDkJgRcTgB8Sb6epCQVmFZe%2BjGDiNJQLWnfx%2BdrTKYjm0G8yH0ZAGMWzEJhUEQ4Maimgf%2Fbkvo8PLVBsZl152y5S8%2BHRDfZIMCbYZ1WDp4yrdchOJw8k6R%2B%2F2pHmydK4NIK2PHdFPHtoLmHxRDwLFb7eB%2BM4zNZcB9NrAgjVyzLM7xyYSY13ykWfIEEd2n5%2FiYp3ZdrCf7fL%2Ben%2BsIJu2W7E30MrAgZBD1rAAbZHPgeAMtKCg3NpSpYQUDWJu9bT3V7tOKv%2BNRiJc8JAKqqgCA%2FPNRBR7ChpiEulyQApMK1AyqcWnpSOmYh6yLiWkGJ2mklCSPIqN7UypWj3dGi5MvsHQ87MrB4VFgypJaFriaHivwcHIpmyi5LhNqtem4q0n8awM19Qk8BOS0EsqGscuuydYsIGsbT5GHnERUiMpKJl4ON7qjB4fEqlGN%2FhCky89232UQCiaeWpDYCJINXjT6xl4Gc7DxRCtgV0i1ma4RgWLsNtnEBRQFqZggCLiuyEydmFd7WlogpkCw5G1x4ft2psm3KAREwVwr1Gzl6RT7FDAqpVal34ewVm3VH4qn5mjGj%2BbYL1NgfLNeXDwtmYSpwzbruDKpTjOdgiIHDVQSb5%2FzBgSMbHLkxWWgghIh9QTFSDILixVwg0Eg1puooBiHAt7DzwJ7m8i8%2Fi%2BjHvKf0QDnnHVkVTIqMvIQImOrzCJwhSR7qYB5gSwL6aWL9hERHCZc4G2%2BJrpgHNB8eCCmcIWIQ6rSdyPCyftXkDlErUkHafHRlkOIjxGbAktz75bnh50dU7YHk%2BMz7wwstg6RFZb%2BTZuSOx1qqP5C66c0mptQmzIC2dlpte7vZrauAMm%2F7RfBYkGtXWGiaWTtwvAQiq2oD4YixPLXE2khB2FRaNRDTk%2B9sZ6K74Ia9VntCpN4BhJGJMT4Z5c5FhSepRCRWmBXqx%2BwhVZC4me4saDs2iNqXMuCl6iAZflH8fscC1sTsy4PHeC%2BXYuqMBMUun5YezKbRKmEPwuK%2BCLzijPEQgfhahQswBBLfg%2FGBgBiI4QwAqzJkkyYAWtjzSg2ILgMAgqxYfwERRo3zruBL9WOryUArSD8sQOcD7fvIODJxKFS615KFPsb68USBEPPj1orNzFY2xoTtNBVTyzBhPbhFH0PI5AtlJBl2aSgNPYzxYLw7XTDBDinmVoENwiGzmngrMo8OmnRP0Z0i0Zrln9DDFcnmOoBZjABaQIbPOJYZGqX%2BRCMlDDbElcjaROLDoualmUIQ88Kekk3iM4OQrADcxi3rJguS4MOIBIgKgXrjd1WkbCdqxJk%2F4efRIFsavZA7KvvJQqp3Iid5Z0NFc5aiMRzGN3vrpBzaMy4JYde3wr96PjN90AYOIbyp6T4zj8LoE66OGcX1Ef4Z3KoWLAUF4BTg7ug%2FAbkG5UNQXAMkQezujSHeir2uTThgd3gpyzDrbnEdDRH2W7U6PeRvBX1ZFMP5RM%2BZu6UUZZD8hDPHldVWntTCNk7To8IeOW9yn2wx0gmurwqC60AOde4r3ETi5pVMSDK8wxhoGAoEX9NLWHIR33VbrbMveii2jAJlrxwytTHbWNu8Y4N8vCCyZjAX%2FpcsfwXbLze2%2BD%2Bu33OGBoJyAAL3jn3RuEcdp5If8O%2Ba4NKWvxOTyDltG0IWoHhwVGe7dKkCWFT%2B%2Btm%2BhaBCikRUUMrMhYKZJKYoVuv%2FbsJzO8DwfVIInQq3g3BYypiz8baogH3r3GwqCwFtZnz4xMjAVOYnyOi5HWbFA8n0qz1OjSpHWFzpQOpvkNETZBGpxN8ybhtqV%2FDMUxd9uFZmBfKXMCn%2FSqkWJyKPnT6lq%2B4zBZni6fYRByJn6OK%2BOgPBGRAJluwGSk4wxjOOzyce%2FPKODwRlsgrVkdcsEiYrqYdXo0Er2GXi2GQZd0tNJT6c9pK1EEJG1zgDJBoTVuCXGAU8BKTvCO%2FcEQ1Wjk3Zzuy90JX4m3O5IlxVFhYkSUwuQB2up7jhvkm%2BbddRQu5F9s0XftGEJ9JSuSk%2BZachCbdU45fEqbugzTIUokwoAKvpUQF%2FCvLbWW5BNQFqFkJg2f30E%2F48StNe5QwBg8zz3YAJ82FZoXBxXSv4QDooDo79NixyglO9AembuBcx5Re3CwOKTHebOPhkmFC7wNaWtoBhFuV4AkEuJ0J%2B1pT0tLkvFVZaNzfhs%2FKd3%2BA9YsImlO4XK4vpCo%2FelHQi%2F9gkFg07xxnuXLt21unCIpDV%2BbbRxb7FC6nWYTsMFF8%2B1LUg4JFjVt3vqbuhHmDKbgQ4e%2BRGizRiO8ky05LQGMdL2IKLSNar0kNG7lHJMaXr5mLdG3nykgj6vB%2FKVijd1ARWkFEf3yiUw1v%2FWaQivVUpIDdSNrrKbjO5NPnxz6qTTGgYg03HgPhDrCFyYZTi3XQw3HXCva39mpLNFtz8AiEhxAJHpWX13gCTAwgm9YTvMeiqetdNQv6IU0hH0G%2BZManTqDLPjyrOse7WiiwOJCG%2BJ0pZYULhN8NILulmYYvmVcV2MjAfA39sGKqGdjpiPo86fecg65UPyXDIAOyOkCx5NQsLeD4gGVjTVDwOHWkbbBW0GeNjDkcSOn2Nq4cEssP54t9D749A7M1AIOBl0Fi0sSO5v3P7LCBrM6ZwFY6kp2FX6AcbGUdybnfChHPyu6WlRZ2Fwv9YM0RMI7kISRgR8HpQSJJOyTfXj%2F6gQKuihPtiUtlCQVPohUgzfezTg8o1b3n9pNZeco1QucaoXe40Fa5JYhqdTspFmxGtW9h5ezLFZs3j%2FN46f%2BS2rjYNC2JySXrnSAFhvAkz9a5L3pza8eYKHNoPrvBRESpxYPJdKVUxBE39nJ1chrAFpy4MMkf0qKgYALctGg1DQI1kIymyeS2AJNT4X240d3IFQb%2F0jQbaHJ2YRK8A%2Bls6WMhWmpCXYG5jqapGs5%2FeOJErxi2%2F2KWVHiPellTgh%2FfNl%2F2KYPKb7DUcAg%2BmCOPQFCiU9Mq%2FWLcU1xxC8aLePFZZlE%2BPCLzf7ey46INWRw2kcXySR9FDgByXzfxiNKwDFbUSMMhALPFSedyjEVM5442GZ4hTrsAEvZxIieSHGSgkwFh%2FnFNdrrFD4tBH4Il7fW6ur4J8Xaz7RW9jgtuPEXQsYk7gcMs2neu3zJwTyUerHKSh1iTBkj2YJh1SSOZL5pLuQbFFAvyO4k1Hxg2h99MTC6cTUkbONQIAnEfGsGkNFWRbuRyyaEZInM5pij73EA9rPIUfU4XoqQpHT9THZkW%2BoKFLvpyvTBMM69tN1Ydwv1LIEhHsC%2BueVG%2Bw%2BkyCPsvV3erRikcscHjZCkccx6VrBkBRusTDDd8847GA7p2Ucy0y0HdSRN6YIBciYa4vuXcAZbQAuSEmzw%2BH%2FAuOx%2BaH%2BtBL88H57D0MsqyiZxhOEQkF%2F8DR1d2hSPMj%2FsNOa5rxcUnBgH8ictv2J%2Bcb4BA4v3MCShdZ2vtK30vAwkobnEWh7rsSyhmos3WC93Gn9C4nnAd%2FPjMMtQfyDNZsOPd6XcAsnBE%2FmRHtHEyJMzJfZFLE9OvQa0i9kUmToJ0ZxknTgdl%2FXPV8xoh0K7wNHHsnBdvFH3sv52lU7UFteseLG%2FVanIvcwycVA7%2BBE1Ulyb20BvwUWZcMTKhaCcmY3ROpvonVMV4N7yBXTL7IDtHzQ4CCcqF66LjF3xUqgErKzolLyCG6Kb7irP%2FMVTCCwGRxfrPGpMMGvPLgJ881PHMNMIO09T5ig7AzZTX%2F5PLlwnJLDAPfuHynSGhV4tPqR3gJ4kg4c06c%2FF1AcjGytKm2Yb5jwMotF7vro4YDLWlnMIpmPg36NgAZsGA0W1spfLSue4xxat0Gdwd0lqDBOgIaMANykwwDKejt5YaNtJYIkrSgu0KjIg0pznY0SCd1qlC6R19g97UrWDoYJGlrvCE05J%2F5wkjpkre727p5PTRX5FGrSBIfJqhJE%2FIS876PaHFkx9pGTH3oaY3jJRvLX9Iy3Edoar7cFvJqyUlOhAEiOSAyYgVEGkzHdug%2BoRHIEOXAExMiTSKU9A6nmRC8mp8iYhwWdP2U%2F5EkFAdPrZw03YA3gSyNUtMZeh7dDCu8pF5x0VORCTgKp07ehy7NZqKTpIC4UJJ89lnboyAfy5OyXzXtuDRbtAFjZRSyGFTpFrXwkpjSLIQIG3N0Vj4BtzK3wdlkBJrO18MNsgseR4BysJilI0wI6ZahLhBFA0XBmV8d4LUzEcNVb0xbLjLTETYN8OEVqNxkt10W614dd1FlFFVTIgB7%2FBQQp1sWlNolpIu4ekxUTBV7NmxOFKEBmmN%2BnA7pvF78%2FRII5ZHA09OAiE%2F66MF6HQ%2BqVEJCHxwymukkNvzqHEh52dULPbVasfQMgTDyBZzx4007YiKdBuUauQOt27Gmy8ISclPmEUCIcuLbkb1mzQSqIa3iE0PJh7UMYQbkpe%2BhXjTJKdldyt2mVPwywoODGJtBV1lJTgMsuSQBlDMwhEKIfrvsxGQjHPCEfNfMAY2oxvyKcKPUbQySkKG6tj9AQyEW3Q5rpaDJ5Sns9ScLKeizPRbvWYAw4bXkrZdmB7CQopCH8NAmqbuciZChHN8lVGaDbCnmddnqO1PQ4ieMYfcSiBE5zzMz%2BJV%2F4eyzrzTEShvqSGzgWimkNxLvUj86iAwcZuIkqdB0VaIB7wncLRmzHkiUQpPBIXbDDLHBlq7vp9xwuC9AiNkIptAYlG7Biyuk8ILdynuUM1cHWJgeB%2BK3wBP%2FineogxkvBNNQ4AkW0hvpBOQGFfeptF2YTR75MexYDUy7Q%2F9uocGsx41O4IZhViw%2F2FvAEuGO5g2kyXBUijAggWM08bRhXg5ijgMwDJy40QeY%2FcQpUDZiIzmvskQpO5G1zyGZA8WByjIQU4jRoFJt56behxtHUUE%2Fom7Rj2psYXGmq3llVOCgGYKNMo4pzwntITtapDqjvQtqpjaJwjHmDzSVGLxMt12gEXAdLi%2FcaHSM3FPRGRf7dB7YC%2BcD2ho6oL2zGDCkjlf%2FDFoQVl8GS%2F56wur3rdV6ggtzZW60MRB3g%2BU1W8o8cvqIpMkctiGVMzXUFI7FacFLrgtdz4mTEr4aRAaQ2AFQaNeG7GX0yOJgMRYFziXdJf24kg%2FgBQIZMG%2FYcPEllRTVNoDYR6oSJ8wQNLuihfw81UpiKPm714bZX1KYjcXJdfclCUOOpvTxr9AAJevTY4HK%2FG7F3mUc3GOAKqh60zM0v34v%2BELyhJZqhkaMA8UMMOU90f8RKEJFj7EqepBVwsRiLbwMo1J2zrE2UYJnsgIAscDmjPjnzI8a719Wxp757wqmSJBjXowhc46QN4RwKIxqEE6E5218OeK7RfcpGjWG1jD7qND%2B%2FGTk6M56Ig4yMsU6LUW1EWE%2BfIYycVV1thldSlbP6ltdC01y3KUfkobkt2q01YYMmxpKRvh1Z48uNKzP%2FIoRIZ%2FF6buOymSnW8gICitpJjKWBscSb9JJKaWkvEkqinAJ2kowKoqkqZftRqfRQlLtKoqvTRDi2vg%2FRrPD%2Fd3a09J8JhGZlEkOM6znTsoMCsuvTmywxTCDhw5dd0GJOHCMPbsj3QLkTE3MInsZsimDQ3HkvthT7U9VA4s6G07sID0FW4SHJmRGwCl%2BMu4xf0ezqeXD2PtPDnwMPo86sbwDV%2B9PWcgFcARUVYm3hrFQrHcgMElFGbSM2A1zUYA3baWfheJp2AINmTJLuoyYD%2FOwA4a6V0ChBN97E8YtDBerUECv0u0TlxR5yhJCXvJxgyM73Bb6pyq0jTFJDZ4p1Am1SA6sh8nADd1hAcGBMfq4d%2FUfwnmBqe0Jun1n1LzrgKuZMAnxA3NtCN7Klf4BH%2B14B7ibBmgt0TGUafVzI4uKlpF7v8NmgNjg90D6QE3tbx8AjSAC%2BOA1YJvclyPKgT27QpIEgVYpbPYGBsnyCNrGz9XUsCHkW1QAHgL2STZk12QGqmvAB0NFteERkvBIH7INDsNW9KKaAYyDMdBEMzJiWaJHZALqDxQDWRntumSDPcplyFiI1oDpT8wbwe01AHhW6%2BvAUUBoGhY3CT2tgwehdPqU%2F4Q7ZLYvhRl%2FogOvR9O2%2BwkkPKW5vCTjD2fHRYXONCoIl4Jh1bZY0ZE1O94mMGn%2FdFSWBWzQ%2FVYk%2BGezi46RgiDv3EshoTmMSlioUK6MQEN8qeyK6FRninyX8ZPeUWjjbMJChn0n%2FyJvrq5bh5UcCAcBYSafTFg7p0jDgrXo2QWLb3WpSOET%2FHh4oSadBTvyDo10IufLzxiMLAnbZ1vcUmj3w7BQuIXjEZXifwukVxrGa9j%2BDXfpi12m1RbzYLg9J2wFergEwOxFyD0%2FJstNK06ZN2XdZSGWxcJODpQHOq4iKqjqkJUmPu1VczL5xTGUfCgLEYyNBCCbMBFT%2FcUP6pE%2FmujnHsSDeWxMbhrNilS5MyYR0nJyzanWXBeVcEQrRIhQeJA6Xt4f2eQESNeLwmC10WJVHqwx8SSyrtAAjpGjidcj1E2FYN0LObUcFQhafUKTiGmHWRHGsFCB%2BHEXgrzJEB5bp0QiF8ZHh11nFX8AboTD0PS4O1LqF8XBks2MpjsQnwKHF6HgaKCVLJtcr0XjqFMRGfKv8tmmykhLRzu%2BvqQ02%2BKpJBjaLt9ye1Ab%2BBbEBhy4EVdIJDrL2naV0o4wU8YZ2Lq04FG1mWCKC%2BUwkXOoAjneU%2FxHplMQo2cXUlrVNqJYczgYlaOEczVCs%2FOCgkyvLmTmdaBJc1iBLuKwmr6qtRnhowngsDxhzKFAi02tf8bmET8BO27ovJKF1plJwm3b0JpMh38%2BxsrXXg7U74QUM8ZCIMOpXujHntKdaRtsgyEZl5MClMVMMMZkZLNxH9%2Bb8fH6%2Bb8Lev30A9TuEVj9CqAdmwAAHBPbfOBFEATAPZ2CS0OH1Pj%2F0Q7PFUcC8hDrxESWdfgFRm%2B7vvWbkEppHB4T%2F1ApWnlTIqQwjcPl0VgS1yHSmD0OdsCVST8CQVwuiew1Y%2Bg3QGFjNMzwRB2DSsAk26cmA8lp2wIU4p93AUBiUHFGOxOajAqD7Gm6NezNDjYzwLOaSXRBYcWipTSONHjUDXCY4mMI8XoVCR%2FRrs%2FJLKXgEx%2BqkmeDlFOD1%2FyTQNDClRuiUyKYCllfMiQiyFkmuTz2vLsBNyRW%2Bxz%2B5FElFxWB28VjYIGZ0Yd%2B5wIjkcoMaggxswbT0pCmckRAErbRlIlcOGdBo4djTNO8FAgQ%2BlT6vPS60BwTRSUAM3ddkEAZiwtEyArrkiDRnS7LJ%2B2hwbzd2YDQagSgACpsovmjil5wfPuXq3GuH0CyE7FK3M4FgRaFoIkaodORrPx1%2BJpI9psyNYIFuJogZa0%2F1AhOWdlHQxdAgbwacsHqPZo8u%2FngAH2GmaTdhYnBfSDbBfh8CHq6Bx5bttP2%2BRdM%2BMAaYaZ0Y%2FADkbNCZuAyAVQa2OcXOeICmDn9Q%2FeFkDeFQg5MgHEDXq%2FtVjj%2Bjtd26nhaaolWxs1ixSUgOBwrDhRIGOLyOVk2%2FBc0UxvseQCO2pQ2i%2BKrfhu%2FWeBovNb5dJxQtJRUDv2mCwYVpNl2efQM9xQHnK0JwLYt%2FU0Wf%2BphiA4uw8G91slC832pmOTCAoZXohg1fewCZqLBhkOUBofBWpMPsqg7XEXgPfAlDo2U5WXjtFdS87PIqClCK5nW6adCeXPkUiTGx0emOIDQqw1yFYGHEVx20xKjJVYe0O8iLmnQr3FA9nSIQilUKtJ4ZAdcTm7%2BExseJauyqo30hs%2B1qSW211A1SFAOUgDlCGq7eTIcMAeyZkV1SQJ4j%2Fe1Smbq4HcjqgFbLAGLyKxlMDMgZavK5NAYH19Olz3la%2FQCTiVelFnU6O%2FGCvykqS%2FwZJDhKN9gBtSOp%2F1SP5VRgJcoVj%2Bkmf2wBgv4gjrgARBWiURYx8xENV3bEVUAAWWD3dYDKAIWk5opaCFCMR5ZjJExiCAw7gYiSZ2rkyTce4eNMY3lfGn%2B8p6%2BvBckGlKEXnA6Eota69OxDO9oOsJoy28BXOR0UoXNRaJD5ceKdlWMJlOFzDdZNpc05tkMGQtqeNF2lttZqNco1VtwXgRstLSQ6tSPChgqtGV5h2DcDReIQadaNRR6AsAYKL5gSFsCJMgfsaZ7DpKh8mg8Wz8V7H%2BgDnLuMxaWEIUPevIbClgap4dqmVWSrPgVYCzAoZHIa5z2Ocx1D%2FGvDOEqMOKLrMefWIbSWHZ6jbgA8qVBhYNHpx0P%2BjAgN5TB3haSifDcApp6yymEi6Ij%2FGsEpDYUgcHATJUYDUAmC1SCkJ4cuZXSAP2DEpQsGUjQmKJfJOvlC2x%2FpChkOyLW7KEoMYc5FDC4v2FGqSoRWiLsbPCiyg1U5yiHZVm1XLkHMMZL11%2Fyxyw0UnGig3MFdZklN5FI%2FqiT65T%2BjOXOdO7XbgWurOAZR6Cv9uu1cm5LjkXX4xi6mWn5r5NjBS0gTliHhMZI2WNqSiSphEtiCAwnafS11JhseDGHYQ5%2BbqWiAYiAv6Jsf79%2FVUs4cIl%2Bn6%2BWOjcgB%2F2l5TreoAV2717JzZbQIR0W1cl%2FdEqCy5kJ3ZSIHuU0vBoHooEpiHeQWVkkkOqRX27eD1FWw4BfO9CJDdKoSogQi3hAAwsPRFrN5RbX7bqLdBJ9JYMohWrgJKHSjVl1sy2xAG0E3sNyO0oCbSGOxCNBRRXTXenYKuwAoDLfnDcQaCwehUOIDiHAu5m5hMpKeKM4sIo3vxACakIxKoH2YWF2QM84e6F5C5hJU4g8uxuFOlAYnqtwxmHyNEawLW%2FPhoawJDrGAP0JYWHgAVUByo%2FbGdiv2T2EMg8gsS14%2FrAdzlOYazFE7w4OzxeKiWdm3nSOnQRRKXSlVo8HEAbBfyJMKqoq%2BSCcTSx5NDtbFwNlh8VhjGGDu7JG5%2FTAGAvniQSSUog0pNzTim8Owc6QTuSKSTXlQqwV3eiEnklS3LeSXYPXGK2VgeZBqNcHG6tZHvA3vTINhV0ELuQdp3t1y9%2BogD8Kk%2FW7QoRN1UWPqM4%2BxdygkFDPLoTaumKReKiLWoPHOfY54m3qPx4c%2B4pgY3MRKKbljG8w4wvz8pxk3AqKsy4GMAkAtmRjRMsCxbb4Q2Ds0Ia9ci8cMT6DmsJG00XaHCIS%2Bo3F8YVVeikw13w%2BOEDaCYYhC0ZE54kA4jpjruBr5STWeqQG6M74HHL6TZ3lXrd99ZX%2B%2B7LhNatQaZosuxEf5yRA15S9gPeHskBIq3Gcw81AGb9%2FO53DYi%2F5CsQ51EmEh8Rkg4vOciClpy4d04eYsfr6fyQkBmtD%2BP8sNh6e%2BXYHJXT%2FlkXxT4KXU5F2sGxYyzfniMMQkb9OjDN2C8tRRgTyL7GwozH14PrEUZc6oz05Emne3Ts5EG7WolDmU8OB1LDG3VrpQxp%2BpT0KYV5dGtknU64JhabdqcVQbGZiAxQAnvN1u70y1AnmvOSPgLI6uB4AuDGhmAu3ATkJSw7OtS%2F2ToPjqkaq62%2F7WFG8advGlRRqxB9diP07JrXowKR9tpRa%2BjGJ91zxNTT1h8I2PcSfoUPtd7NejVoH03EUcqSBuFZPkMZhegHyo2ZAITovmm3zAIdGFWxoNNORiMRShgwdYwFzkPw5PA4a5MIIQpmq%2Bnsp3YMuXt%2FGkXxLx%2FP6%2BZJS0lFyz4MunC3eWSGE8xlCQrKvhKUPXr0hjpAN9ZK4PfEDrPMfMbGNWcHDzjA7ngMxTPnT7GMHar%2BgMQQ3NwHCv4zH4BIMYvzsdiERi6gebRmerTsVwZJTRsL8dkZgxgRxmpbgRcud%2BYlCIRpPwHShlUSwuipZnx9QCsEWziVazdDeKSYU5CF7UVPAhLer3CgJOQXl%2Fzh575R5rsrmRnKAzq4POFdgbYBuEviM4%2BLVC15ssLNFghbTtHWerS1hDt5s4qkLUha%2FqpZXhWh1C6lTQAqCNQnaDjS7UGFBC6wTu8yFnKJnExCnAs3Ok9yj5KpfZESQ4lTy5pTGTnkAUpxI%2ByjEldJfSo4y0QhG4i4IwkRFGcjWY8%2BEzgYYJUK7BXQksLxAww%2FYYWBMhJILB9e8ePEJ4OP7z%2B4%2FwOQDl64iOYDp26DaONPxpKtBxq%2FaTzRGarm3VkPYTLJKx6Z%2FMw2YbBGseJhPMwhhNswrIkyvV2BYzrvZbxLpKwcWJhYmFtVZ%2BlPEq91FzVp1HlQY1bZVLqeNR9SAUn6n0E28k%2FUuGkNpP1DBI5ch%2FEehZfjUQ9aE41NhETExoPT2gGQz0IhWJbEOvTQ4wgcXCHHFBhewYUiFHuhRSAUVmEHeCRQHQkXGFwkAgyzREJCVN7TRnTon36Zw3tPhx4EALwNdwDv%2BJ41YSP4B2CQqz0EFgARZ4ESgBHQgROwAVn9GTI%2BHYexTUevLUeta4%2FDqKrbMVS%2BYqb8hUwYCrlgKtmAq1YCrFgKrd4qpXiqZcKn1oqdWipjYKpWwVPVYqW6xUpVipKqFR3QKjagVEtAqHpxUMTitsnFaJOKx2cVhswq35RVpyiq9lFVNIKnOQVMkgqtYxVNxiqQjFS7GKlSIVIsQqPIhUWwioigFQ%2B%2BKkN8VHr49HDw9Ebo9EDo9DTo9Crg9BDg9%2FWx7gWx7YWwlobYrOGxWPNisAaAHEyALpkAVDIAeWAArsABVXACYuAD5cAF6wAKFQAQqgAbVAAsoAAlQAUaYAfkwAvogBWQACOgAD9AAHSAAKT4GUdMiOvFngBTwCn2AZ7Dv6B6k%2F90B8%2ByRnkV144AIBoAMTQATGgAjNAA4YABgwABZgB%2FmQCwyAVlwCguASlwCEuAQFwB4uAMlwBYuAJlQAUVAAhUD2KgdpUDaJgaRMDFJgX5MC1JgWJEAokQCWRAHxEAWkQBMRADpEAMkQAYROAEecC484DRpwBDTnwNOdw05tjTmiNOYwtswhYFwLA7BYG4LA2BYGOLAwRYFuLAsxYFQJAohIEyJAMwkAwiQC0JAJgkAeiQBkJAFokAPCQA0JABwcD4Dgc4cDdDgaYcDIDgYgUC6CgWgUClCgUYUAVBQBOFAEYMALgwAgDA9QYAdIn8AZzeBB2L5EcWrenUT1KXienEsuJJ7x5U8XlTjc1NVzUyXFTGb1LlpUtWlTDIjqwE4LsagowoCi2gJLKAkpoBgJQNpAIhNqaEoneI6kiiqQ6Go%2Fn6j0cS%2Ba2gEU8gIHJ%2BBwfgZX4GL%2BBd%2FgW34FZ%2BBS%2FgUH4FN6BTegTvoEv6BJegRnYEF2A79gOvYDl2BdEjCkqkGtwXp0LNToIskOTXzh%2FF062yJ7AAAAEDAWAAABWhJ%2BKPEIJgBFxMVP7w2QJBGHASQnOBKXKFIdUK4igKA9IEaYJg%29%3Bsrc%3Aurl%28data%3Aapplication%2Fvnd%2Ems%2Dfontobject%3Bbase64%2Cn04AAEFNAAACAAIABAAAAAAABQAAAAAAAAABAJABAAAEAExQAAAAAAAAAAIAAAAAAAAAAAEAAAAAAAAAJxJ%2FLAAAAAAAAAAAAAAAAAAAAAAAACgARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzAAAADgBSAGUAZwB1AGwAYQByAAAAeABWAGUAcgBzAGkAbwBuACAAMQAuADAAMAA5ADsAUABTACAAMAAwADEALgAwADAAOQA7AGgAbwB0AGMAbwBuAHYAIAAxAC4AMAAuADcAMAA7AG0AYQBrAGUAbwB0AGYALgBsAGkAYgAyAC4ANQAuADUAOAAzADIAOQAAADgARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzACAAUgBlAGcAdQBsAGEAcgAAAAAAQlNHUAAAAAAAAAAAAAAAAAAAAAADAKncAE0TAE0ZAEbuFM3pjM%2FSEdmjKHUbyow8ATBE40IvWA3vTu8LiABDQ%2BpexwUMcm1SMnNryctQSiI1K5ZnbOlXKmnVV5YvRe6RnNMFNCOs1KNVpn6yZhCJkRtVRNzEufeIq7HgSrcx4S8h%2Fv4vnrrKc6oCNxmSk2uKlZQHBii6iKFoH0746ThvkO1kJHlxjrkxs%2BLWORaDQBEtiYJIR5IB9Bi1UyL4Rmr0BNigNkMzlKQmnofBHviqVzUxwdMb3NdCn69hy%2BpRYVKGVS%2F1tnsqv4LL7wCCPZZAZPT4aCShHjHJVNuXbmMrY5LeQaGnvAkXlVrJgKRAUdFjrWEah9XebPeQMj7KS7DIBAFt8ycgC5PLGUOHSE3ErGZCiViNLL5ZARfywnCoZaKQCu6NuFX42AEeKtKUGnr%2FCm2Cy8tpFhBPMW5Fxi4Qm4TkDWh4IWFDClhU2hRWosUWqcKLlgyXB%2BlSHaWaHiWlBAR8SeSgSPCQxdVQgzUixWKSTrIQEbU94viDctkvX%2BVSjJuUmV8L4CXShI11esnp0pjWNZIyxKHS4wVQ2ime1P4RnhvGw0aDN1OLAXGERsB7buFpFGGBAre4QEQR0HOIO5oYH305G%2BKspT%2FFupEGGafCCwxSe6ZUa%2B073rXHnNdVXE6eWvibUS27XtRzkH838mYLMBmYysZTM0EM3A1fbpCBYFccN1B%2FEnCYu%2FTgCGmr7bMh8GfYL%2BBfcLvB0gRagC09w9elfldaIy%2FhNCBLRgBgtCC7jAF63wLSMAfbfAlEggYU0bUA7ACCJmTDpEmJtI78w4%2FBO7dN7JR7J7ZvbYaUbaILSQsRBiF3HGk5fEg6p9unwLvn98r%2BvnsV%2B372uf1xBLq4qU%2F45fTuqaAP%2BpssmCCCTF0mhEow8ZXZOS8D7Q85JsxZ%2BAzok7B7O%2Ff6J8AzYBySZQB%2FQHYUSA%2BEeQhEWiS6AIQzgcsDiER4MjgMBAWDV4AgQ3g1eBgIdweCQmCjJEMkJ%2BPKRWyFHHmg1Wi%2F6xzUgA0LREoKJChwnQa9B%2B5RQZRB3IlBlkAnxyQNaANwHMowzlYSMCBgnbpzvqpl0iTJNCQidDI9ZrSYNIRBhHtUa5YHMHxyGEik9hDE0AKj72AbTCaxtHPUaKZdAZSnQTyjGqGLsmBStCejApUhg4uBMU6mATujEl%2BKdDPbI6Ag4vLr%2BhjY6lbjBeoLKnZl0UZgRX8gTySOeynZVz1wOq7e1hFGYIq%2BMhrGxDLak0PrwYzSXtcuyhXEhwOYofiW%2BEcI%2Fjw8P6IY6ed%2BetAbuqKp5QIapT77LnAe505lMuqL79a0ut4rWexzFttsOsLDy7zvtQzcq3U1qabe7tB0wHWVXji%2BzDbo8x8HyIRUbXnwUcklFv51fvTymiV%2BMXLSmGH9d9%2BaXpD5X6lao41anWGig7IwIdnoBY2ht%2FpO9mClLo4NdXHAsefqWUKlXJkbqPOFhMoR4aiA1BXqhRNbB2Xwi%2B7u%2FjpAoOpKJ0UX24EsrzMfHXViakCNcKjBxuQX8BO0ZqjJ3xXzf%2B61t2VXOSgJ8xu65QKgtN6FibPmPYsXbJRHHqbgATcSZxBqGiDiU4NNNsYBsKD0MIP%2FOfKnlk%2FLkaid%2FO2NbKeuQrwOB2Gq3YHyr6ALgzym5wIBnsdC1ZkoBFZSQXChZvlesPqvK2c5oHHT3Q65jYpNxnQcGF0EHbvYqoFw60WNlXIHQF2HQB7zD6lWjZ9rVqUKBXUT6hrkZOle0RFYII0V5ZYGl1JAP0Ud1fZZMvSomBzJ710j4Me8mjQDwEre5Uv2wQfk1ifDwb5ksuJQQ3xt423lbuQjvoIQByQrNDh1JxGFkOdlJvu%2FgFtuW0wR4cgd%2BZKesSV7QkNE2kw6AV4hoIuC02LGmTomyf8PiO6CZzOTLTPQ%2BHW06H%2Btx%2BbQ8LmDYg1pTFrp2oJXgkZTyeRJZM0C8aE2LpFrNVDuhARsN543%2FFV6klQ6Tv1OoZGXLv0igKrl%2FCmJxRmX7JJbJ998VSIPQRyDBICzl4JJlYHbdql30NvYcOuZ7a10uWRrgoieOdgIm4rlq6vNOQBuqESLbXG5lzdJGHw2m0sDYmODXbYGTfSTGRKpssTO95fothJCjUGQgEL4yKoGAF%2F0SrpUDNn8CBgBcSDQByAeNkCXp4S4Ro2Xh4OeaGRgR66PVOsU8bc6TR5%2FxTcn4IVMLOkXSWiXxkZQCbvKfmoAvQaKjO3EDKwkwqHChCDEM5loQRPd5ACBki1TjF772oaQhQbQ5C0lcWXPFOzrfsDGUXGrpxasbG4iab6eByaQkQfm0VFlP0ZsDkvvqCL6QXMUwCjdMx1ZOyKhTJ7a1GWAdOUcJ8RSejxNVyGs31OKMyRyBVoZFjqIkmKlLQ5eHMeEL4MkUf23cQ%2F1SgRCJ1dk4UdBT7OoyuNgLs0oCd8RnrEIb6QdMxT2QjD4zMrJkfgx5aDMcA4orsTtKCqWb%2FVeyceqa5OGSmB28YwH4rFbkQaLoUN8OQQYnD3w2eXpI4ScQfbCUZiJ4yMOIKLyyTc7BQ4uXUw6Ee6%2FxM%2B4Y67ngNBknxIPwuppgIhFcwJyr6EIj%2BLzNj%2FmfR2vhhRlx0BILZoAYruF0caWQ7YxO66UmeguDREAFHYuC7HJviRgVO6ruJH59h%2FC%2FPkgSle8xNzZJULLWq9JMDTE2fjGE146a1Us6PZDGYle6ldWRqn%2FpdpgHKNGrGIdkRK%2BKPETT9nKT6kLyDI8xd9A1FgWmXWRAIHwZ37WyZHOVyCadJEmMVz0MadMjDrPho%2BEIochkVC2xgGiwwsQ6DMv2P7UXqT4x7CdcYGId2BJQQa85EQKmCmwcRejQ9Bm4oATENFPkxPXILHpMPUyWTI5rjNOsIlmEeMbcOCEqInpXACYQ9DDxmFo9vcmsDblcMtg4tqBerNngkIKaFJmrQAPnq1dEzsMXcwjcHdfdCibcAxxA%2Bq%2Fj9m3LM%2FO7WJka4tSidVCjsvo2lQ%2F2ewyoYyXwAYyr2PlRoR5MpgVmSUIrM3PQxXPbgjBOaDQFIyFMJvx3Pc5RSYj12ySVF9fwFPQu2e2KWVoL9q3Ayv3IzpGHUdvdPdrNUdicjsTQ2ISy7QU3DrEytIjvbzJnAkmANXjAFERA0MUoPF3%2F5KFmW14bBNOhwircYgMqoDpUMcDtCmBE82QM2YtdjVLB4kBuKho%2FbcwQdeboqfQartuU3CsCf%2BcXkgYAqp%2F0Ee3RorAZt0AvvOCSI4JICIlGlsV0bsSid%2FNIEALAAzb6HAgyWHBps6xAOwkJIGcB82CxRQq4sJf3FzA70A%2BTRqcqjEMETCoez3mkPcpnoALs0ugJY8kQwrC%2BJE5ik3w9rzrvDRjAQnqgEVvdGrNwlanR0SOKWzxOJOvLJhcd8Cl4AshACUkv9czdMkJCVQSQhp6kp7StAlpVRpK0t0SW6LHeBJnE2QchB5Ccu8kxRghZXGIgZIiSj7gEKMJDClcnX6hgoqJMwiQDigIXg3ioFLCgDgjPtYHYpsF5EiA4kcnN18MZtOrY866dEQAb0FB34OGKHGZQjwW%2FWDHA60cYFaI%2FPjpzquUqdaYGcIq%2BmLez3WLFFCtNBN2QJcrlcoELgiPku5R5dSlJFaCEqEZle1AQzAKC%2B1SotMcBNyQUFuRHRF6OlimSBgjZeTBCwLyc6A%2BP%2FoFRchXTz5ADknYJHxzrJ5pGuIKRQISU6WyKTBBjD8WozmVYWIsto1AS5rxzKlvJu4E%2FvwOiKxRtCWsDM%2BeTHUrmwrCK5BIfMzGkD%2B0Fk5LzBs0jMYXktNDblB06LMNJ09U8pzSLmo14MS0OMjcdrZ31pyQqxJJpRImlSvfYAK8inkYU52QY2FPEVsjoWewpwhRp5yAuNpkqhdb7ku9Seefl2D0B8SMTFD90xi4CSOwwZy9IKkpMtI3FmFUg3%2FkFutpQGNc3pCR7gvC4sgwbupDu3DyEN%2BW6YGLNM21jpB49irxy9BSlHrVDlnihGKHwPrbVFtc%2Bh1rVQKZduxIyojccZIIcOCmhEnC7UkY68WXKQgLi2JCDQkQWJRQuk60hZp0D3rtCTINSeY9Ej2kIKYfGxwOs4j9qMM7fYZiipzgcf7TamnehqdhsiMiCawXnz4xAbyCkLAx5EGbo3Ax1u3dUIKnTxIaxwQTHehPl3V491H0%2BbC5zgpGz7Io%2BmjdhKlPJ01EeMpM7UsRJMi1nGjmJg35i6bQBAAxjO%2FENJubU2mg3ONySEoWklCwdABETcs7ck3jgiuU9pcKKpbgn%2B3YlzV1FzIkB6pmEDOSSyDfPPlQskznctFji0kpgZjW5RZe6x9kYT4KJcXg0bNiCyif%2BpZACCyRMmYsfiKmN9tSO65F0R2OO6ytlEhY5Sj6uRKfFxw0ijJaAx%2Fk3QgnAFSq27%2F2i4GEBA%2BUvTJKK%2F9eISNvG46Em5RZfjTYLdeD8kdXHyrwId%2FDQZUaMCY4gGbke2C8vfjgV%2FY9kkRQOJIn%2FxM9INZSpiBnqX0Q9GlQPpPKAyO5y%2BW5NMPSRdBCUlmuxl40ZfMCnf2Cp044uI9WLFtCi4YVxKjuRCOBWIb4XbIsGdbo4qtMQnNOQz4XDSui7W%2FN6l54qOynCqD3DpWQ%2BmpD7C40D8BZEWGJX3tlAaZBMj1yjvDYKwCJBa201u6nBKE5UE%2B7QSEhCwrXfbRZylAaAkplhBWX50dumrElePyNMRYUrC99UmcSSNgImhFhDI4BXjMtiqkgizUGCrZ8iwFxU6fQ8GEHCFdLewwxYWxgScAYMdMLmcZR6b7rZl95eQVDGVoUKcRMM1ixXQtXNkBETZkVVPg8LoSrdetHzkuM7DjZRHP02tCxA1fmkXKF3VzfN1pc1cv%2F8lbTIkkYpqKM9VOhp65ktYk%2BQ46myFWBapDfyWUCnsnI00QTBQmuFjMZTcd0V2NQ768Fhpby04k2IzNR1wKabuGJqYWwSly6ocMFGTeeI%2BejsWDYgEvr66QgqdcIbFYDNgsm0x9UHY6SCd5%2B7tpsLpKdvhahIDyYmEJQCqMqtCF6UlrE5GXRmbu%2Bvtm3BFSxI6ND6UxIE7GsGMgWqghXxSnaRJuGFveTcK5ZVSPJyjUxe1dKgI6kNF7EZhIZs8y8FVqwEfbM0Xk2ltORVDKZZM40SD3qQoQe0orJEKwPfZwm3YPqwixhUMOndis6MhbmfvLBKjC8sKKIZKbJk8L11oNkCQzCgvjhyyEiQSuJcgCQSG4Mocfgc0Hkwcjal1UNgP0CBPikYqBIk9tONv4kLtBswH07vUCjEaHiFGlLf8MgXKzSgjp2HolRRccAOh0ILHz9qlGgIFkwAnzHJRjWFhlA7ROwINyB5HFj59PRZHFor6voq7l23EPNRwdWhgawqbivLSjRA4htEYUFkjESu67icTg5S0aW1sOkCiIysfJ9UnIWevOOLGpepcBxy1wEhd2WI3AZg7sr9WBmHWyasxMcvY%2FiOmsLtHSWNUWEGk9hScMPShasUA1AcHOtRZlqMeQ0OzYS9vQvYUjOLrzP07BUAFikcJNMi7gIxEw4pL1G54TcmmmoAQ5s7TGWErJZ2Io4yQ0ljRYhL8H5e62oDtLF8aDpnIvZ5R3GWJyAugdiiJW9hQAVTsnCBHhwu7rkBlBX6r3b7ejEY0k5GGeyKv66v%2B6dg7mcJTrWHbtMywbedYqCQ0FPwoytmSWsL8WTtChZCKKzEF7vP6De4x2BJkkniMgSdWhbeBSLtJZR9CTHetK1xb34AYIJ37OegYIoPVbXgJ%2FqDQK%2BbfCtxQRVKQu77WzOoM6SGL7MaZwCGJVk46aImai9fmam%2BWpHG%2B0BtQPWUgZ7RIAlPq6lkECUhZQ2gqWkMYKcYMYaIc4gYCDFHYa2d1nzp3%2BJ1eCBay8IYZ0wQRKGAqvCuZ%2FUgbQPyllosq%2BXtfKIZOzmeJqRazpmmoP%2F76YfkjzV2NlXTDSBYB04SVlNQsFTbGPk1t%2FI4Jktu0XSgifO2ozFOiwd%2F0SssJDn0dn4xqk4GDTTKX73%2FwQyBLdqgJ%2BWx6AQaba3BA9CKEzjtQYIfAsiYamapq80LAamYjinlKXUkxdpIDk0puXUEYzSalfRibAeDAKpNiqQ0FTwoxuGYzRnisyTotdVTclis1LHRQCy%2FqqL8oUaQzWRxilq5Mi0IJGtMY02cGLD69vGjkj3p6pGePKI8bkBv5evq8SjjyU04vJR2cQXQwSJyoinDsUJHCQ50jrFTT7yRdbdYQMB3MYCb6uBzJ9ewhXYPAIZSXfeEQBZZ3GPN3Nbhh%2FwkvAJLXnQMdi5NYYZ5GHE400GS5rXkOZSQsdZgIbzRnF9ueLnsfQ47wHAsirITnTlkCcuWWIUhJSbpM3wWhXNHvt2xUsKKMpdBSbJnBMcihkoDqAd1Zml%2FR4yrzow1Q2A5G%2Bkzo%2FRhRxQS2lCSDRV8LlYLBOOoo1bF4jwJAwKMK1tWLHlu9i0j4Ig8qVm6wE1DxXwAwQwsaBWUg2pOOol2dHxyt6npwJEdLDDVYyRc2D0HbcbLUJQj8gPevQBUBOUHXPrsAPBERICpnYESeu2OHotpXQxRGlCCtLdIsu23MhZVEoJg8Qumj%2FUMMc34IBqTKLDTp76WzL%2FdMjCxK7MjhiGjeYAC%2Fkj%2FjY%2FRde7hpSM1xChrog6yZ7OWTuD56xBJnGFE%2BpT2ElSyCnJcwVzCjkqeNLfMEJqKW0G7OFIp0G%2B9mh50I9o8k1tpCY0xYqFNIALgIfc2me4n1bmJnRZ89oepgLPT0NTMLNZsvSCZAc3TXaNB07vail36%2FdBySis4m9%2FDR8izaLJW6bWCkVgm5T%2Bius3ZXq4xI%2BGnbveLbdRwF2mNtsrE0JjYc1AXknCOrLSu7Te%2Fr4dPYMCl5qtiHNTn%2BTPbh1jCBHH%2BdMJNhwNgs3nT%2BOhQoQ0vYif56BMG6WowAcHR3DjQolxLzyVekHj00PBAaW7IIAF1EF%2BuRIWyXjQMAs2chdpaKPNaB%2BkSezYt0%2BCA04sOg5vx8Fr7Ofa9sUv87h7SLAUFSzbetCCZ9pmyLt6l6%2FTzoA1%2FZBG9bIUVHLAbi%2FkdBFgYGyGwRQGBpkqCEg2ah9UD6EedEcEL3j4y0BQQCiExEnocA3SZboh%2Bepgd3YsOkHskZwPuQ5OoyA0fTA5AXrHcUOQF%2BzkJHIA7PwCDk1gGVmGUZSSoPhNf%2BTklauz98QofOlCIQ%2FtCD4dosHYPqtPCXB3agggQQIqQJsSkB%2Bqn0rkQ1toJjON%2FOtCIB9RYv3PqRA4C4U68ZMlZn6BdgEvi2ziU%2BTQ6NIw3ej%2BAtDwMGEZk7e2IjxUWKdAxyaw9OCwSmeADTPPleyk6UhGDNXQb%2B%2BW6Uk4q6F7%2Frg6WVTo82IoCxSIsFDrav4EPHphD3u4hR53WKVvYZUwNCCeM4PMBWzK%2BEfIthZOkuAwPo5C5jgoZgn6dUdvx5rIDmd58cXXdKNfw3l%2BwM2UjgrDJeQHhbD7HW2QDoZMCujgIUkk5Fg8VCsdyjOtnGRx8wgKRPZN5dR0zPUyfGZFVihbFRniXZFOZGKPnEQzU3AnD1KfR6weHW2XS6KbPJxUkOTZsAB9vTVp3Le1F8q5l%2BDMcLiIq78jxAImD2pGFw0VHfRatScGlK6SMu8leTmhUSMy8Uhdd6xBiH3Gdman4tjQGLboJfqz6fL2WKHTmrfsKZRYX6BTDjDldKMosaSTLdQS7oDisJNqAUhw1PfTlnacCO8vl8706Km1FROgLDmudzxg%2BEWTiArtHgLsRrAXYWdB0NmToNCJdKm0KWycZQqb%2BMw76Qy29iQ5up%2FX7oyw8QZ75kP5F6iJAJz6KCmqxz8fEa%2FxnsMYcIO%2FvEkGRuMckhr4rIeLrKaXnmIzlNLxbFspOphkcnJdnz%2FChp%2FVlpj2P7jJQmQRwGnltkTV5dbF9fE3%2FfxoSqTROgq9wFUlbuYzYcasE0ouzBo%2BdDCDzxKAfhbAZYxQiHrLzV2iVexnDX%2FQnT1fsT%2Fxuhu1ui5qIytgbGmRoQkeQooO8eJNNZsf0iALur8QxZFH0nCMnjerYQqG1pIfjyVZWxhVRznmmfLG00BcBWJE6hzQWRyFknuJnXuk8A5FRDCulwrWASSNoBtR%2BCtGdkPwYN2o7DOw%2FVGlCZPusRBFXODQdUM5zeHDIVuAJBLqbO%2Ff9Qua%2BpDqEPk230Sob9lEZ8BHiCorjVghuI0lI4JDgHGRDD%2FprQ84B1pVGkIpVUAHCG%2Biz3Bn3qm2AVrYcYWhock4jso5%2BJ7HfHVj4WMIQdGctq3psBCVVzupQOEioBGA2Bk%2BUILT7%2BVoX5mdxxA5fS42gISQVi%2FHTzrgMxu0fY6hE1ocUwwbsbWcezrY2n6S8%2F6cxXkOH4prpmPuFoikTzY7T85C4T2XYlbxLglSv2uLCgFv8Quk%2FwdesUdWPeHYIH0R729JIisN9Apdd4eB10aqwXrPt%2BSu9mA8k8n1sjMwnfsfF2j3jMUzXepSHmZ%2FBfqXvzgUNQQWOXO8YEuFBh4QTYCkOAPxywpYu1VxiDyJmKVcmJPGWk%2Fgc3Pov02StyYDahwmzw3E1gYC9wkupyWfDqDSUMpCTH5e5N8B%2F%2FlHiMuIkTNw4USHrJU67bjXGqNav6PBuQSoqTxc8avHoGmvqNtXzIaoyMIQIiiUHIM64cXieouplhNYln7qgc4wBVAYR104kO%2BCvKqsg4yIUlFNThVUAKZxZt1XA34h3TCUUiXVkZ0w8Hh2R0Z5L0b4LZvPd%2Fp1gi%2F07h8qfwHrByuSxglc9cI4QIg2oqvC%2Fqm0i7tjPLTgDhoWTAKDO2ONW5oe%2B%2FeKB9vZB8K6C25yCZ9RFVMnb6NRdRjyVK57CHHSkJBfnM2%2Fj4ODUwRkqrtBBCrDsDpt8jhZdXoy%2F1BCqw3sSGhgGGy0a5Jw6BP%2FTExoCmNFYjZl248A0osgPyGEmRA%2BfAsqPVaNAfytu0vuQJ7rk3J4kTDTR2AlCHJ5cls26opZM4w3jMULh2YXKpcqGBtuleAlOZnaZGbD6DHzMd6i2oFeJ8z9XYmalg1Szd%2FocZDc1C7Y6vcALJz2lYnTXiWEr2wawtoR4g3jvWUU2Ngjd1cewtFzEvM1NiHZPeLlIXFbBPawxNgMwwAlyNSuGF3zizVeOoC9bag1qRAQKQE%2FEZBWC2J8mnXAN2aTBboZ7HewnObE8CwROudZHmUM5oZ%2FUgd%2FJZQK8lvAm43uDRAbyW8gZ%2BZGq0EVerVGUKUSm%2FIdn8AQHdR4m7bue88WBwft9mSCeMOt1ncBwziOmJYI2ZR7ewNMPiCugmSsE4EyQ%2BQATJG6qORMGd4snEzc6B4shPIo4G1T7PgSm8PY5eUkPdF8JZ0VBtadbHXoJgnEhZQaODPj2gpODKJY5Yp4DOsLBFxWbvXN755KWylJm%2BoOd4zEL9Hpubuy2gyyfxh8oEfFutnYWdfB8PdESLWYvSqbElP9qo3u6KTmkhoacDauMNNjj0oy40DFV7Ql0aZj77xfGl7TJNHnIwgqOkenruYYNo6h724%2BzUQ7%2BvkCpZB%2BpGA562hYQiDxHVWOq0oDQl%2FQsoiY%2BcuI7iWq%2FZIBtHcXJ7kks%2Bh2fCNUPA82BzjnqktNts%2BRLdk1VSu%2BtqEn7QZCCsvEqk6FkfiOYkrsw092J8jsfIuEKypNjLxrKA9kiA19mxBD2suxQKCzwXGws7kEJvlhUiV9tArLIdZW0IORcxEzdzKmjtFhsjKy%2F44XYXdI5noQoRcvjZ1RMPACRqYg2V1%2BOwOepcOknRLLFdYgTkT5UApt%2FJhLM3jeFYprZV%2BZow2g8fP%2BU68hkKFWJj2yBbKqsrp25xkZX1DAjUw52IMYWaOhab8Kp05VrdNftqwRrymWF4OQSjbdfzmRZirK8FMJELEgER2PHjEAN9pGfLhCUiTJFbd5LBkOBMaxLr%2FA1SY9dXFz4RjzoU9ExfJCmx%2FI9FKEGT3n2cmzl2X42L3Jh%2BAbQq6sA%2BSs1kitoa4TAYgKHaoybHUDJ51oETdeI%2F9ThSmjWGkyLi5QAGWhL0BG1UsTyRGRJOldKBrYJeB8ljLJHfATWTEQBXBDnQexOHTB%2BUn44zExFE4vLytcu5NwpWrUxO%2F0ZICUGM7hGABXym0V6ZvDST0E370St9MIWQOTWngeoQHUTdCJUP04spMBMS8LSker9cReVQkULFDIZDFPrhTzBl6sed9wcZQTbL%2BBDqMyaN3RJPh%2Fanbx%2BIv%2BqgQdAa3M9Z5JmvYlh4qop%2BHo1F1W5gbOE9YKLgAnWytXElU4G8GtW47lhgFE6gaSs%2Bgs37sFvi0PPVvA5dnCBgILTwoKd%2F%2BDoL9F6inlM7H4rOTzD79KJgKlZO%2FZgt22UsKhrAaXU5ZcLrAglTVKJEmNJvORGN1vqrcfSMizfpsgbIe9zno%2BgBoKVXgIL%2FVI8dB1O5o%2FR3Suez%2FgD7M781ShjKpIIORM%2FnxG%2BjjhhgPwsn2IoXsPGPqYHXA63zJ07M2GPEykQwJBYLK808qYxuIew4frk52nhCsnCYmXiR6CuapvE1IwRB4%2FQftDbEn%2BAucIr1oxrLabRj9q4ae0%2BfXkHnteAJwXRbVkR0mctVSwEbqhJiMSZUp9DNbEDMmjX22m3ABpkrPQQTP3S1sib5pD2VRKRd%2BeNAjLYyT0hGrdjWJZy24OYXRoWQAIhGBZRxuBFMjjZQhpgrWo8SiFYbojcHO8V5DyscJpLTHyx9Fimassyo5U6WNtquUMYgccaHY5amgR3PQzq3ToNM5ABnoB9kuxsebqmYZm0R9qxJbFXCQ1UPyFIbxoUraTJFDpCk0Wk9GaYJKz%2F6oHwEP0Q14lMtlddQsOAU9zlYdMVHiT7RQP3XCmWYDcHCGbVRHGnHuwzScA0BaSBOGkz3lM8CArjrBsyEoV6Ys4qgDK3ykQQPZ3hCRGNXQTNNXbEb6tDiTDLKOyMzRhCFT%2BmAUmiYbV3YQVqFVp9dorv%2BTsLeCykS2b5yyu8AV7IS9cxcL8z4Kfwp%2BxJyYLv1OsxQCZwTB4a8BZ%2F5EdxTBJthApqyfd9u3ifr%2FWILTqq5VqgwMT9SOxbSGWLQJUUWCVi4k9tho9nEsbUh7U6NUsLmkYFXOhZ0kmamaJLRNJzSj%2Fqn4Mso6zb6iLLBXoaZ6AqeWCjHQm2lztnejYYM2eubnpBdKVLORZhudH3JF1waBJKA9%2BW8EhMj3Kzf0L4vi4k6RoHh3Z5YgmSZmk6ns4fjScjAoL8GoOECgqgYEBYUGFVO4FUv4%2FYtowhEmTs0vrvlD%2FCrisnoBNDAcUi%2FteY7OctFlmARQzjOItrrlKuPO6E2Ox93L4O%2F4DcgV%2FdZ7qR3VBwVQxP1GCieA4RIpweYJ5FoYrHxqRBdJjnqbsikA2Ictbb8vE1GYIo9dacK0REgDX4smy6GAkxlH1yCGGsk%2BtgiDhNKuKu3yNrMdxafmKTF632F8Vx4BNK57GvlFisrkjN9WDAtjsWA0ENT2e2nETUb%2Fn7qwhvGnrHuf5bX6Vh%2Fn3xffU3PeHdR%2BFA92i6ufT3AlyAREoNDh6chiMWTvjKjHDeRhOa9YkOQRq1vQXEMppAQVwHCuIcV2g5rBn6GmZZpTR7vnSD6ZmhdSl176gqKTXu5E%2BYbfL0adwNtHP7dT7t7b46DVZIkzaRJOM%2BS6KcrzYVg%2BT3wSRFRQashjfU18NutrKa%2F7PXbtuJvpIjbgPeqd%2BpjmRw6YKpnANFSQcpzTZgpSNJ6J7uiagAbir%2F8tNXJ%2FOsOnRh6iuIexxrmkIneAgz8QoLmiaJ8sLQrELVK2yn3wOHp57BAZJhDZjTBzyoRAuuZ4eoxHruY1pSb7qq79cIeAdOwin4GdgMeIMHeG%2BFZWYaiUQQyC5b50zKjYw97dFjAeY2I4Bnl105Iku1y0lMA1ZHolLx19uZnRdILcXKlZGQx%2FGdEqSsMRU1BIrFqRcV1qQOOHyxOLXEGcbRtAEsuAC2V4K3p5mFJ22IDWaEkk9ttf5Izb2LkD1MnrSwztXmmD%2FQi%2FEmVEFBfiKGmftsPwVaIoZanlKndMZsIBOskFYpDOq3QUs9aSbAAtL5Dbokus2G4%2FasthNMK5UQKCOhU97oaOYNGsTah%2BjfCKsZnTRn5TbhFX8ghg8CBYt%2FBjeYYYUrtUZ5jVij%2Fop7V5SsbA4mYTOwZ46hqdpbB6Qvq3AS2HHNkC15pTDIcDNGsMPXaBidXYPHc6PJAkRh29Vx8KcgX46LoUQBhRM%2B3SW6Opll%2FwgxxsPgKJKzr5QCmwkUxNbeg6Wj34SUnEzOemSuvS2OetRCO8Tyy%2BQbSKVJcqkia%2BGvDefFwMOmgnD7h81TUtMn%2BmRpyJJ349HhAnoWFTejhpYTL9G8N2nVg1qkXBeoS9Nw2fB27t7trm7d%2FQK7Cr4uoCeOQ7%2F8JfKT77KiDzLImESHw%2F0wf73QeHu74hxv7uihi4fTX%2BXEwAyQG3264dwv17aJ5N335Vt9sdrAXhPOAv8JFvzqyYXwfx8WYJaef1gMl98JRFyl5Mv5Uo%2FoVH5ww5OzLFsiTPDns7fS6EURSSWd%2F92BxMYQ8sBaH%2Bj%2BwthQPdVgDGpTfi%2BJQIWMD8xKqULliRH01rTeyF8x8q%2FGBEEEBrAJMPf25UQwi0b8tmqRXY7kIvNkzrkvRWLnxoGYEJsz8u4oOyMp8cHyaybb1HdMCaLApUE%2B%2F7xLIZGP6H9xuSEXp1zLIdjk5nBaMuV%2FyTDRRP8Y2ww5RO6d2D94o%2B6ucWIqUAvgHIHXhZsmDhjVLczmZ3ca0Cb3PpKwt2UtHVQ0BgFJsqqTsnzZPlKahRUkEu4qmkJt%2Bkqdae76ViWe3STan69yaF9%2BfESD2lcQshLHWVu4ovItXxO69bqC5p1nZLvI8NdQB9s9UNaJGlQ5mG947ipdDA0eTIw%2FA1zEdjWquIsQXXGIVEH0thC5M%2BW9pZe7IhAVnPJkYCCXN5a32HjN6nsvokEqRS44tGIs7s2LVTvcrHAF%2BRVmI8L4HUYk4x%2B67AxSMJKqCg8zrGOgvK9kNMdDrNiUtSWuHFpC8%2Fp5qIQrEo%2FH%2B1l%2F0cAwQ2nKmpWxKcMIuHY44Y6DlkpO48tRuUGBWT0FyHwSKO72Ud%2BtJUfdaZ4CWNijzZtlRa8%2BCkmO%2FEwHYfPZFU%2FhzjFWH7vnzHRMo%2BaF9u8qHSAiEkA2HjoNQPEwHsDKOt6hOoK3Ce%2F%2B%2F9boMWDa44I6FrQhdgS7OnNaSzwxWKZMcyHi6LN4WC6sSj0qm2PSOGBTvDs%2FGWJS6SwEN%2FULwpb4LQo9fYjUfSXRwZkynUazlSpvX9e%2BG2zor8l%2BYaMxSEomDdLHGcD6YVQPegTaA74H8%2BV4WvJkFUrjMLGLlvSZQWvi8%2FQA7yzQ8GPno%2F%2F5SJHRP%2FOqKObPCo81s%2F%2B6WgLqykYpGAgQZhVDEBPXWgU%2FWzFZjKUhSFInufPRiMAUULC6T11yL45ZrRoB4DzOyJShKXaAJIBS9wzLYIoCEcJKQW8GVCx4fihqJ6mshBUXSw3wWVj3grrHQlGNGhIDNNzsxQ3M%2BGWn6ASobIWC%2BLbYOC6UpahVO13Zs2zOzZC8z7FmA05JhUGyBsF4tsG0drcggIFzgg%2Fkpf3%2BCnAXKiMgIE8Jk%2FMhpkc8DUJEUzDSnWlQFme3d0sHZDrg7LavtsEX3cHwjCYA17pMTfx8Ajw9hHscN67hyo%2BRJQ4458RmPywXykkVcW688oVUrQhahpPRvTWPnuI0B%2BSkQu7dCyvLRyFYlC1LG1gRCIvn3rwQeINzZQC2KXq31FaR9UmVV2QeGVqBHjmE%2BVMd3b1fhCynD0pQNhCG6%2FWCDbKPyE7NRQzL3BzQAJ0g09aUzcQA6mUp9iZFK6Sbp%2FYbHjo%2B%2B7%2FWj8S4YNa%2BZdqAw1hDrKWFXv9%2BzaXpf8ZTDSbiqsxnwN%2FCzK5tPkOr4tRh2kY3Bn9JtalbIOI4b3F7F1vPQMfoDcdxMS8CW9m%2FNCW%2FHILTUVWQIPiD0j1A6bo8vsv6P1hCESl2abrSJWDrq5sSzUpwoxaCU9FtJyYH4QFMxDBpkkBR6kn0LMPO%2B5EJ7Z6bCiRoPedRZ%2FP0SSdii7ZnPAtVwwHUidcdyspwncz5uq6vvm4IEDbJVLUFCn%2FLvIHfooUBTkFO130FC7CmmcrKdgDJcid9mvVzsDSibOoXtIf9k6ABle3PmIxejodc4aob0QKS432srrCMndbfD454q52V01G4q913mC5HOsTzWF4h2No1av1VbcUgWAqyoZl%2B11PoFYnNv2HwAODeNRkHj%2B8SF1fcvVBu6MrehHAZK1Gm69ICcTKizykHgGFx7QdowTVAsYEF2tVc0Z6wLryz2FI1sc5By2znJAAmINndoJiB4sfPdPrTC8RnkW7KRCwxC6YvXg5ahMlQuMpoCSXjOlBy0Kij%2BbsCYPbGp8BdCBiLmLSAkEQRaieWo1SYvZIKJGj9Ur%2FeWHjiB7SOVdqMAVmpBvfRiebsFjger7DC%2B8kRFGtNrTrnnGD2GAJb8rQCWkUPYHhwXsjNBSkE6lGWUj5QNhK0DMNM2l%2BkXRZ0KLZaGsFSIdQz%2FHXDxf3%2FTE30%2BDgBKWGWdxElyLccJfEpjsnszECNoDGZpdwdRgCixeg9L4EPhH%2BRptvRMVRaahu4cySjS3P5wxAUCPkmn%2BrhyASpmiTaiDeggaIxYBmtLZDDhiWIJaBgzfCsAGUF1Q1SFZYyXDt9skCaxJsxK2Ms65dmdp5WAZyxik%2FzbrTQk5KmgxCg%2Ff45L0jywebOWUYFJQAJia7XzCV0x89rpp%2Ff3AVWhSPyTanqmik2SkD8A3Ml4NhIGLAjBXtPShwKYfi2eXtrDuKLk4QlSyTw1ftXgwqA2jUuopDl%2B5tfUWZNwBpEPXghzbBggYCw%2Fdhy0ntds2yeHCDKkF%2FYxQjNIL%2FF%2F37jLPHCKBO9ibwYCmuxImIo0ijV2Wbg3kSN2psoe8IsABv3RNFaF9uMyCtCYtqcD%2BqNOhwMlfARQUdJ2tUX%2BMNJqOwIciWalZsmEjt07tfa8ma4cji9sqz%2BQ9hWfmMoKEbIHPOQORbhQRHIsrTYlnVTNvcq1imqmmPDdVDkJgRcTgB8Sb6epCQVmFZe%2BjGDiNJQLWnfx%2BdrTKYjm0G8yH0ZAGMWzEJhUEQ4Maimgf%2Fbkvo8PLVBsZl152y5S8%2BHRDfZIMCbYZ1WDp4yrdchOJw8k6R%2B%2F2pHmydK4NIK2PHdFPHtoLmHxRDwLFb7eB%2BM4zNZcB9NrAgjVyzLM7xyYSY13ykWfIEEd2n5%2FiYp3ZdrCf7fL%2Ben%2BsIJu2W7E30MrAgZBD1rAAbZHPgeAMtKCg3NpSpYQUDWJu9bT3V7tOKv%2BNRiJc8JAKqqgCA%2FPNRBR7ChpiEulyQApMK1AyqcWnpSOmYh6yLiWkGJ2mklCSPIqN7UypWj3dGi5MvsHQ87MrB4VFgypJaFriaHivwcHIpmyi5LhNqtem4q0n8awM19Qk8BOS0EsqGscuuydYsIGsbT5GHnERUiMpKJl4ON7qjB4fEqlGN%2FhCky89232UQCiaeWpDYCJINXjT6xl4Gc7DxRCtgV0i1ma4RgWLsNtnEBRQFqZggCLiuyEydmFd7WlogpkCw5G1x4ft2psm3KAREwVwr1Gzl6RT7FDAqpVal34ewVm3VH4qn5mjGj%2BbYL1NgfLNeXDwtmYSpwzbruDKpTjOdgiIHDVQSb5%2FzBgSMbHLkxWWgghIh9QTFSDILixVwg0Eg1puooBiHAt7DzwJ7m8i8%2Fi%2BjHvKf0QDnnHVkVTIqMvIQImOrzCJwhSR7qYB5gSwL6aWL9hERHCZc4G2%2BJrpgHNB8eCCmcIWIQ6rSdyPCyftXkDlErUkHafHRlkOIjxGbAktz75bnh50dU7YHk%2BMz7wwstg6RFZb%2BTZuSOx1qqP5C66c0mptQmzIC2dlpte7vZrauAMm%2F7RfBYkGtXWGiaWTtwvAQiq2oD4YixPLXE2khB2FRaNRDTk%2B9sZ6K74Ia9VntCpN4BhJGJMT4Z5c5FhSepRCRWmBXqx%2BwhVZC4me4saDs2iNqXMuCl6iAZflH8fscC1sTsy4PHeC%2BXYuqMBMUun5YezKbRKmEPwuK%2BCLzijPEQgfhahQswBBLfg%2FGBgBiI4QwAqzJkkyYAWtjzSg2ILgMAgqxYfwERRo3zruBL9WOryUArSD8sQOcD7fvIODJxKFS615KFPsb68USBEPPj1orNzFY2xoTtNBVTyzBhPbhFH0PI5AtlJBl2aSgNPYzxYLw7XTDBDinmVoENwiGzmngrMo8OmnRP0Z0i0Zrln9DDFcnmOoBZjABaQIbPOJYZGqX%2BRCMlDDbElcjaROLDoualmUIQ88Kekk3iM4OQrADcxi3rJguS4MOIBIgKgXrjd1WkbCdqxJk%2F4efRIFsavZA7KvvJQqp3Iid5Z0NFc5aiMRzGN3vrpBzaMy4JYde3wr96PjN90AYOIbyp6T4zj8LoE66OGcX1Ef4Z3KoWLAUF4BTg7ug%2FAbkG5UNQXAMkQezujSHeir2uTThgd3gpyzDrbnEdDRH2W7U6PeRvBX1ZFMP5RM%2BZu6UUZZD8hDPHldVWntTCNk7To8IeOW9yn2wx0gmurwqC60AOde4r3ETi5pVMSDK8wxhoGAoEX9NLWHIR33VbrbMveii2jAJlrxwytTHbWNu8Y4N8vCCyZjAX%2FpcsfwXbLze2%2BD%2Bu33OGBoJyAAL3jn3RuEcdp5If8O%2Ba4NKWvxOTyDltG0IWoHhwVGe7dKkCWFT%2B%2Btm%2BhaBCikRUUMrMhYKZJKYoVuv%2FbsJzO8DwfVIInQq3g3BYypiz8baogH3r3GwqCwFtZnz4xMjAVOYnyOi5HWbFA8n0qz1OjSpHWFzpQOpvkNETZBGpxN8ybhtqV%2FDMUxd9uFZmBfKXMCn%2FSqkWJyKPnT6lq%2B4zBZni6fYRByJn6OK%2BOgPBGRAJluwGSk4wxjOOzyce%2FPKODwRlsgrVkdcsEiYrqYdXo0Er2GXi2GQZd0tNJT6c9pK1EEJG1zgDJBoTVuCXGAU8BKTvCO%2FcEQ1Wjk3Zzuy90JX4m3O5IlxVFhYkSUwuQB2up7jhvkm%2BbddRQu5F9s0XftGEJ9JSuSk%2BZachCbdU45fEqbugzTIUokwoAKvpUQF%2FCvLbWW5BNQFqFkJg2f30E%2F48StNe5QwBg8zz3YAJ82FZoXBxXSv4QDooDo79NixyglO9AembuBcx5Re3CwOKTHebOPhkmFC7wNaWtoBhFuV4AkEuJ0J%2B1pT0tLkvFVZaNzfhs%2FKd3%2BA9YsImlO4XK4vpCo%2FelHQi%2F9gkFg07xxnuXLt21unCIpDV%2BbbRxb7FC6nWYTsMFF8%2B1LUg4JFjVt3vqbuhHmDKbgQ4e%2BRGizRiO8ky05LQGMdL2IKLSNar0kNG7lHJMaXr5mLdG3nykgj6vB%2FKVijd1ARWkFEf3yiUw1v%2FWaQivVUpIDdSNrrKbjO5NPnxz6qTTGgYg03HgPhDrCFyYZTi3XQw3HXCva39mpLNFtz8AiEhxAJHpWX13gCTAwgm9YTvMeiqetdNQv6IU0hH0G%2BZManTqDLPjyrOse7WiiwOJCG%2BJ0pZYULhN8NILulmYYvmVcV2MjAfA39sGKqGdjpiPo86fecg65UPyXDIAOyOkCx5NQsLeD4gGVjTVDwOHWkbbBW0GeNjDkcSOn2Nq4cEssP54t9D749A7M1AIOBl0Fi0sSO5v3P7LCBrM6ZwFY6kp2FX6AcbGUdybnfChHPyu6WlRZ2Fwv9YM0RMI7kISRgR8HpQSJJOyTfXj%2F6gQKuihPtiUtlCQVPohUgzfezTg8o1b3n9pNZeco1QucaoXe40Fa5JYhqdTspFmxGtW9h5ezLFZs3j%2FN46f%2BS2rjYNC2JySXrnSAFhvAkz9a5L3pza8eYKHNoPrvBRESpxYPJdKVUxBE39nJ1chrAFpy4MMkf0qKgYALctGg1DQI1kIymyeS2AJNT4X240d3IFQb%2F0jQbaHJ2YRK8A%2Bls6WMhWmpCXYG5jqapGs5%2FeOJErxi2%2F2KWVHiPellTgh%2FfNl%2F2KYPKb7DUcAg%2BmCOPQFCiU9Mq%2FWLcU1xxC8aLePFZZlE%2BPCLzf7ey46INWRw2kcXySR9FDgByXzfxiNKwDFbUSMMhALPFSedyjEVM5442GZ4hTrsAEvZxIieSHGSgkwFh%2FnFNdrrFD4tBH4Il7fW6ur4J8Xaz7RW9jgtuPEXQsYk7gcMs2neu3zJwTyUerHKSh1iTBkj2YJh1SSOZL5pLuQbFFAvyO4k1Hxg2h99MTC6cTUkbONQIAnEfGsGkNFWRbuRyyaEZInM5pij73EA9rPIUfU4XoqQpHT9THZkW%2BoKFLvpyvTBMM69tN1Ydwv1LIEhHsC%2BueVG%2Bw%2BkyCPsvV3erRikcscHjZCkccx6VrBkBRusTDDd8847GA7p2Ucy0y0HdSRN6YIBciYa4vuXcAZbQAuSEmzw%2BH%2FAuOx%2BaH%2BtBL88H57D0MsqyiZxhOEQkF%2F8DR1d2hSPMj%2FsNOa5rxcUnBgH8ictv2J%2Bcb4BA4v3MCShdZ2vtK30vAwkobnEWh7rsSyhmos3WC93Gn9C4nnAd%2FPjMMtQfyDNZsOPd6XcAsnBE%2FmRHtHEyJMzJfZFLE9OvQa0i9kUmToJ0ZxknTgdl%2FXPV8xoh0K7wNHHsnBdvFH3sv52lU7UFteseLG%2FVanIvcwycVA7%2BBE1Ulyb20BvwUWZcMTKhaCcmY3ROpvonVMV4N7yBXTL7IDtHzQ4CCcqF66LjF3xUqgErKzolLyCG6Kb7irP%2FMVTCCwGRxfrPGpMMGvPLgJ881PHMNMIO09T5ig7AzZTX%2F5PLlwnJLDAPfuHynSGhV4tPqR3gJ4kg4c06c%2FF1AcjGytKm2Yb5jwMotF7vro4YDLWlnMIpmPg36NgAZsGA0W1spfLSue4xxat0Gdwd0lqDBOgIaMANykwwDKejt5YaNtJYIkrSgu0KjIg0pznY0SCd1qlC6R19g97UrWDoYJGlrvCE05J%2F5wkjpkre727p5PTRX5FGrSBIfJqhJE%2FIS876PaHFkx9pGTH3oaY3jJRvLX9Iy3Edoar7cFvJqyUlOhAEiOSAyYgVEGkzHdug%2BoRHIEOXAExMiTSKU9A6nmRC8mp8iYhwWdP2U%2F5EkFAdPrZw03YA3gSyNUtMZeh7dDCu8pF5x0VORCTgKp07ehy7NZqKTpIC4UJJ89lnboyAfy5OyXzXtuDRbtAFjZRSyGFTpFrXwkpjSLIQIG3N0Vj4BtzK3wdlkBJrO18MNsgseR4BysJilI0wI6ZahLhBFA0XBmV8d4LUzEcNVb0xbLjLTETYN8OEVqNxkt10W614dd1FlFFVTIgB7%2FBQQp1sWlNolpIu4ekxUTBV7NmxOFKEBmmN%2BnA7pvF78%2FRII5ZHA09OAiE%2F66MF6HQ%2BqVEJCHxwymukkNvzqHEh52dULPbVasfQMgTDyBZzx4007YiKdBuUauQOt27Gmy8ISclPmEUCIcuLbkb1mzQSqIa3iE0PJh7UMYQbkpe%2BhXjTJKdldyt2mVPwywoODGJtBV1lJTgMsuSQBlDMwhEKIfrvsxGQjHPCEfNfMAY2oxvyKcKPUbQySkKG6tj9AQyEW3Q5rpaDJ5Sns9ScLKeizPRbvWYAw4bXkrZdmB7CQopCH8NAmqbuciZChHN8lVGaDbCnmddnqO1PQ4ieMYfcSiBE5zzMz%2BJV%2F4eyzrzTEShvqSGzgWimkNxLvUj86iAwcZuIkqdB0VaIB7wncLRmzHkiUQpPBIXbDDLHBlq7vp9xwuC9AiNkIptAYlG7Biyuk8ILdynuUM1cHWJgeB%2BK3wBP%2FineogxkvBNNQ4AkW0hvpBOQGFfeptF2YTR75MexYDUy7Q%2F9uocGsx41O4IZhViw%2F2FvAEuGO5g2kyXBUijAggWM08bRhXg5ijgMwDJy40QeY%2FcQpUDZiIzmvskQpO5G1zyGZA8WByjIQU4jRoFJt56behxtHUUE%2Fom7Rj2psYXGmq3llVOCgGYKNMo4pzwntITtapDqjvQtqpjaJwjHmDzSVGLxMt12gEXAdLi%2FcaHSM3FPRGRf7dB7YC%2BcD2ho6oL2zGDCkjlf%2FDFoQVl8GS%2F56wur3rdV6ggtzZW60MRB3g%2BU1W8o8cvqIpMkctiGVMzXUFI7FacFLrgtdz4mTEr4aRAaQ2AFQaNeG7GX0yOJgMRYFziXdJf24kg%2FgBQIZMG%2FYcPEllRTVNoDYR6oSJ8wQNLuihfw81UpiKPm714bZX1KYjcXJdfclCUOOpvTxr9AAJevTY4HK%2FG7F3mUc3GOAKqh60zM0v34v%2BELyhJZqhkaMA8UMMOU90f8RKEJFj7EqepBVwsRiLbwMo1J2zrE2UYJnsgIAscDmjPjnzI8a719Wxp757wqmSJBjXowhc46QN4RwKIxqEE6E5218OeK7RfcpGjWG1jD7qND%2B%2FGTk6M56Ig4yMsU6LUW1EWE%2BfIYycVV1thldSlbP6ltdC01y3KUfkobkt2q01YYMmxpKRvh1Z48uNKzP%2FIoRIZ%2FF6buOymSnW8gICitpJjKWBscSb9JJKaWkvEkqinAJ2kowKoqkqZftRqfRQlLtKoqvTRDi2vg%2FRrPD%2Fd3a09J8JhGZlEkOM6znTsoMCsuvTmywxTCDhw5dd0GJOHCMPbsj3QLkTE3MInsZsimDQ3HkvthT7U9VA4s6G07sID0FW4SHJmRGwCl%2BMu4xf0ezqeXD2PtPDnwMPo86sbwDV%2B9PWcgFcARUVYm3hrFQrHcgMElFGbSM2A1zUYA3baWfheJp2AINmTJLuoyYD%2FOwA4a6V0ChBN97E8YtDBerUECv0u0TlxR5yhJCXvJxgyM73Bb6pyq0jTFJDZ4p1Am1SA6sh8nADd1hAcGBMfq4d%2FUfwnmBqe0Jun1n1LzrgKuZMAnxA3NtCN7Klf4BH%2B14B7ibBmgt0TGUafVzI4uKlpF7v8NmgNjg90D6QE3tbx8AjSAC%2BOA1YJvclyPKgT27QpIEgVYpbPYGBsnyCNrGz9XUsCHkW1QAHgL2STZk12QGqmvAB0NFteERkvBIH7INDsNW9KKaAYyDMdBEMzJiWaJHZALqDxQDWRntumSDPcplyFiI1oDpT8wbwe01AHhW6%2BvAUUBoGhY3CT2tgwehdPqU%2F4Q7ZLYvhRl%2FogOvR9O2%2BwkkPKW5vCTjD2fHRYXONCoIl4Jh1bZY0ZE1O94mMGn%2FdFSWBWzQ%2FVYk%2BGezi46RgiDv3EshoTmMSlioUK6MQEN8qeyK6FRninyX8ZPeUWjjbMJChn0n%2FyJvrq5bh5UcCAcBYSafTFg7p0jDgrXo2QWLb3WpSOET%2FHh4oSadBTvyDo10IufLzxiMLAnbZ1vcUmj3w7BQuIXjEZXifwukVxrGa9j%2BDXfpi12m1RbzYLg9J2wFergEwOxFyD0%2FJstNK06ZN2XdZSGWxcJODpQHOq4iKqjqkJUmPu1VczL5xTGUfCgLEYyNBCCbMBFT%2FcUP6pE%2FmujnHsSDeWxMbhrNilS5MyYR0nJyzanWXBeVcEQrRIhQeJA6Xt4f2eQESNeLwmC10WJVHqwx8SSyrtAAjpGjidcj1E2FYN0LObUcFQhafUKTiGmHWRHGsFCB%2BHEXgrzJEB5bp0QiF8ZHh11nFX8AboTD0PS4O1LqF8XBks2MpjsQnwKHF6HgaKCVLJtcr0XjqFMRGfKv8tmmykhLRzu%2BvqQ02%2BKpJBjaLt9ye1Ab%2BBbEBhy4EVdIJDrL2naV0o4wU8YZ2Lq04FG1mWCKC%2BUwkXOoAjneU%2FxHplMQo2cXUlrVNqJYczgYlaOEczVCs%2FOCgkyvLmTmdaBJc1iBLuKwmr6qtRnhowngsDxhzKFAi02tf8bmET8BO27ovJKF1plJwm3b0JpMh38%2BxsrXXg7U74QUM8ZCIMOpXujHntKdaRtsgyEZl5MClMVMMMZkZLNxH9%2Bb8fH6%2Bb8Lev30A9TuEVj9CqAdmwAAHBPbfOBFEATAPZ2CS0OH1Pj%2F0Q7PFUcC8hDrxESWdfgFRm%2B7vvWbkEppHB4T%2F1ApWnlTIqQwjcPl0VgS1yHSmD0OdsCVST8CQVwuiew1Y%2Bg3QGFjNMzwRB2DSsAk26cmA8lp2wIU4p93AUBiUHFGOxOajAqD7Gm6NezNDjYzwLOaSXRBYcWipTSONHjUDXCY4mMI8XoVCR%2FRrs%2FJLKXgEx%2BqkmeDlFOD1%2FyTQNDClRuiUyKYCllfMiQiyFkmuTz2vLsBNyRW%2Bxz%2B5FElFxWB28VjYIGZ0Yd%2B5wIjkcoMaggxswbT0pCmckRAErbRlIlcOGdBo4djTNO8FAgQ%2BlT6vPS60BwTRSUAM3ddkEAZiwtEyArrkiDRnS7LJ%2B2hwbzd2YDQagSgACpsovmjil5wfPuXq3GuH0CyE7FK3M4FgRaFoIkaodORrPx1%2BJpI9psyNYIFuJogZa0%2F1AhOWdlHQxdAgbwacsHqPZo8u%2FngAH2GmaTdhYnBfSDbBfh8CHq6Bx5bttP2%2BRdM%2BMAaYaZ0Y%2FADkbNCZuAyAVQa2OcXOeICmDn9Q%2FeFkDeFQg5MgHEDXq%2FtVjj%2Bjtd26nhaaolWxs1ixSUgOBwrDhRIGOLyOVk2%2FBc0UxvseQCO2pQ2i%2BKrfhu%2FWeBovNb5dJxQtJRUDv2mCwYVpNl2efQM9xQHnK0JwLYt%2FU0Wf%2BphiA4uw8G91slC832pmOTCAoZXohg1fewCZqLBhkOUBofBWpMPsqg7XEXgPfAlDo2U5WXjtFdS87PIqClCK5nW6adCeXPkUiTGx0emOIDQqw1yFYGHEVx20xKjJVYe0O8iLmnQr3FA9nSIQilUKtJ4ZAdcTm7%2BExseJauyqo30hs%2B1qSW211A1SFAOUgDlCGq7eTIcMAeyZkV1SQJ4j%2Fe1Smbq4HcjqgFbLAGLyKxlMDMgZavK5NAYH19Olz3la%2FQCTiVelFnU6O%2FGCvykqS%2FwZJDhKN9gBtSOp%2F1SP5VRgJcoVj%2Bkmf2wBgv4gjrgARBWiURYx8xENV3bEVUAAWWD3dYDKAIWk5opaCFCMR5ZjJExiCAw7gYiSZ2rkyTce4eNMY3lfGn%2B8p6%2BvBckGlKEXnA6Eota69OxDO9oOsJoy28BXOR0UoXNRaJD5ceKdlWMJlOFzDdZNpc05tkMGQtqeNF2lttZqNco1VtwXgRstLSQ6tSPChgqtGV5h2DcDReIQadaNRR6AsAYKL5gSFsCJMgfsaZ7DpKh8mg8Wz8V7H%2BgDnLuMxaWEIUPevIbClgap4dqmVWSrPgVYCzAoZHIa5z2Ocx1D%2FGvDOEqMOKLrMefWIbSWHZ6jbgA8qVBhYNHpx0P%2BjAgN5TB3haSifDcApp6yymEi6Ij%2FGsEpDYUgcHATJUYDUAmC1SCkJ4cuZXSAP2DEpQsGUjQmKJfJOvlC2x%2FpChkOyLW7KEoMYc5FDC4v2FGqSoRWiLsbPCiyg1U5yiHZVm1XLkHMMZL11%2Fyxyw0UnGig3MFdZklN5FI%2FqiT65T%2BjOXOdO7XbgWurOAZR6Cv9uu1cm5LjkXX4xi6mWn5r5NjBS0gTliHhMZI2WNqSiSphEtiCAwnafS11JhseDGHYQ5%2BbqWiAYiAv6Jsf79%2FVUs4cIl%2Bn6%2BWOjcgB%2F2l5TreoAV2717JzZbQIR0W1cl%2FdEqCy5kJ3ZSIHuU0vBoHooEpiHeQWVkkkOqRX27eD1FWw4BfO9CJDdKoSogQi3hAAwsPRFrN5RbX7bqLdBJ9JYMohWrgJKHSjVl1sy2xAG0E3sNyO0oCbSGOxCNBRRXTXenYKuwAoDLfnDcQaCwehUOIDiHAu5m5hMpKeKM4sIo3vxACakIxKoH2YWF2QM84e6F5C5hJU4g8uxuFOlAYnqtwxmHyNEawLW%2FPhoawJDrGAP0JYWHgAVUByo%2FbGdiv2T2EMg8gsS14%2FrAdzlOYazFE7w4OzxeKiWdm3nSOnQRRKXSlVo8HEAbBfyJMKqoq%2BSCcTSx5NDtbFwNlh8VhjGGDu7JG5%2FTAGAvniQSSUog0pNzTim8Owc6QTuSKSTXlQqwV3eiEnklS3LeSXYPXGK2VgeZBqNcHG6tZHvA3vTINhV0ELuQdp3t1y9%2BogD8Kk%2FW7QoRN1UWPqM4%2BxdygkFDPLoTaumKReKiLWoPHOfY54m3qPx4c%2B4pgY3MRKKbljG8w4wvz8pxk3AqKsy4GMAkAtmRjRMsCxbb4Q2Ds0Ia9ci8cMT6DmsJG00XaHCIS%2Bo3F8YVVeikw13w%2BOEDaCYYhC0ZE54kA4jpjruBr5STWeqQG6M74HHL6TZ3lXrd99ZX%2B%2B7LhNatQaZosuxEf5yRA15S9gPeHskBIq3Gcw81AGb9%2FO53DYi%2F5CsQ51EmEh8Rkg4vOciClpy4d04eYsfr6fyQkBmtD%2BP8sNh6e%2BXYHJXT%2FlkXxT4KXU5F2sGxYyzfniMMQkb9OjDN2C8tRRgTyL7GwozH14PrEUZc6oz05Emne3Ts5EG7WolDmU8OB1LDG3VrpQxp%2BpT0KYV5dGtknU64JhabdqcVQbGZiAxQAnvN1u70y1AnmvOSPgLI6uB4AuDGhmAu3ATkJSw7OtS%2F2ToPjqkaq62%2F7WFG8advGlRRqxB9diP07JrXowKR9tpRa%2BjGJ91zxNTT1h8I2PcSfoUPtd7NejVoH03EUcqSBuFZPkMZhegHyo2ZAITovmm3zAIdGFWxoNNORiMRShgwdYwFzkPw5PA4a5MIIQpmq%2Bnsp3YMuXt%2FGkXxLx%2FP6%2BZJS0lFyz4MunC3eWSGE8xlCQrKvhKUPXr0hjpAN9ZK4PfEDrPMfMbGNWcHDzjA7ngMxTPnT7GMHar%2BgMQQ3NwHCv4zH4BIMYvzsdiERi6gebRmerTsVwZJTRsL8dkZgxgRxmpbgRcud%2BYlCIRpPwHShlUSwuipZnx9QCsEWziVazdDeKSYU5CF7UVPAhLer3CgJOQXl%2Fzh575R5rsrmRnKAzq4POFdgbYBuEviM4%2BLVC15ssLNFghbTtHWerS1hDt5s4qkLUha%2FqpZXhWh1C6lTQAqCNQnaDjS7UGFBC6wTu8yFnKJnExCnAs3Ok9yj5KpfZESQ4lTy5pTGTnkAUpxI%2ByjEldJfSo4y0QhG4i4IwkRFGcjWY8%2BEzgYYJUK7BXQksLxAww%2FYYWBMhJILB9e8ePEJ4OP7z%2B4%2FwOQDl64iOYDp26DaONPxpKtBxq%2FaTzRGarm3VkPYTLJKx6Z%2FMw2YbBGseJhPMwhhNswrIkyvV2BYzrvZbxLpKwcWJhYmFtVZ%2BlPEq91FzVp1HlQY1bZVLqeNR9SAUn6n0E28k%2FUuGkNpP1DBI5ch%2FEehZfjUQ9aE41NhETExoPT2gGQz0IhWJbEOvTQ4wgcXCHHFBhewYUiFHuhRSAUVmEHeCRQHQkXGFwkAgyzREJCVN7TRnTon36Zw3tPhx4EALwNdwDv%2BJ41YSP4B2CQqz0EFgARZ4ESgBHQgROwAVn9GTI%2BHYexTUevLUeta4%2FDqKrbMVS%2BYqb8hUwYCrlgKtmAq1YCrFgKrd4qpXiqZcKn1oqdWipjYKpWwVPVYqW6xUpVipKqFR3QKjagVEtAqHpxUMTitsnFaJOKx2cVhswq35RVpyiq9lFVNIKnOQVMkgqtYxVNxiqQjFS7GKlSIVIsQqPIhUWwioigFQ%2B%2BKkN8VHr49HDw9Ebo9EDo9DTo9Crg9BDg9%2FWx7gWx7YWwlobYrOGxWPNisAaAHEyALpkAVDIAeWAArsABVXACYuAD5cAF6wAKFQAQqgAbVAAsoAAlQAUaYAfkwAvogBWQACOgAD9AAHSAAKT4GUdMiOvFngBTwCn2AZ7Dv6B6k%2F90B8%2ByRnkV144AIBoAMTQATGgAjNAA4YABgwABZgB%2FmQCwyAVlwCguASlwCEuAQFwB4uAMlwBYuAJlQAUVAAhUD2KgdpUDaJgaRMDFJgX5MC1JgWJEAokQCWRAHxEAWkQBMRADpEAMkQAYROAEecC484DRpwBDTnwNOdw05tjTmiNOYwtswhYFwLA7BYG4LA2BYGOLAwRYFuLAsxYFQJAohIEyJAMwkAwiQC0JAJgkAeiQBkJAFokAPCQA0JABwcD4Dgc4cDdDgaYcDIDgYgUC6CgWgUClCgUYUAVBQBOFAEYMALgwAgDA9QYAdIn8AZzeBB2L5EcWrenUT1KXienEsuJJ7x5U8XlTjc1NVzUyXFTGb1LlpUtWlTDIjqwE4LsagowoCi2gJLKAkpoBgJQNpAIhNqaEoneI6kiiqQ6Go%2Fn6j0cS%2Ba2gEU8gIHJ%2BBwfgZX4GL%2BBd%2FgW34FZ%2BBS%2FgUH4FN6BTegTvoEv6BJegRnYEF2A79gOvYDl2BdEjCkqkGtwXp0LNToIskOTXzh%2FF062yJ7AAAAEDAWAAABWhJ%2BKPEIJgBFxMVP7w2QJBGHASQnOBKXKFIdUK4igKA9IEaYJg%29%20format%28%27embedded%2Dopentype%27%29%2Curl%28data%3Aapplication%2Ffont%2Dwoff%3Bbase64%2Cd09GRgABAAAAAFuAAA8AAAAAsVwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABWAAAABwAAAAcbSqX3EdERUYAAAF0AAAAHwAAACABRAAET1MvMgAAAZQAAABFAAAAYGe5a4ljbWFwAAAB3AAAAsAAAAZy2q3jgWN2dCAAAAScAAAABAAAAAQAKAL4Z2FzcAAABKAAAAAIAAAACP%2F%2FAANnbHlmAAAEqAAATRcAAJSkfV3Cb2hlYWQAAFHAAAAANAAAADYFTS%2FYaGhlYQAAUfQAAAAcAAAAJApEBBFobXR4AABSEAAAAU8AAAN00scgYGxvY2EAAFNgAAACJwAAAjBv%2B5XObWF4cAAAVYgAAAAgAAAAIAFqANhuYW1lAABVqAAAAZ4AAAOisyygm3Bvc3QAAFdIAAAELQAACtG6o%2BU1d2ViZgAAW3gAAAAGAAAABsMYVFAAAAABAAAAAMw9os8AAAAA0HaBdQAAAADQdnOXeNpjYGRgYOADYgkGEGBiYGRgZBQDkixgHgMABUgASgB42mNgZulmnMDAysDCzMN0gYGBIQpCMy5hMGLaAeQDpRCACYkd6h3ux%2BDAoPD%2FP%2FOB%2FwJAdSIM1UBhRiQlCgyMADGWCwwAAAB42u2UP2hTQRzHf5ekaVPExv6JjW3fvTQ0sa3QLA5xylBLgyBx0gzSWEUaXbIoBBQyCQGHLqXUqYNdtIIgIg5FHJxEtwqtpbnfaV1E1KFaSvX5vVwGEbW6OPngk8%2FvvXfv7pt3v4SImojIDw6BViKxRgIVBaZwVdSv%2BxvXA%2BIuzqcog2cOkkvDNE8Lbqs74k64i%2B5Sf3u8Z2AnIRLbyVCyTflVSEXVoEqrrMqrgiqqsqqqWQ5xlAc5zWOc5TwXucxVnuE5HdQhHdFRHdNJndZZndeFLc%2FzsKJLQ%2FWV6BcrCdWkwspVKZVROaw0qUqqoqZZcJhdTnGGxznHBS5xhad5VhNWCuturBTXKZ3RObuS98pb9c57k6ql9rp2v1as5deb1r6s9q1GV2IrHSt73T631424YXzjgPwqt%2BRn%2BVG%2BlRvyirwsS%2FKCPCfPytPypDwhj8mjctRZd9acF86y89x55jxxHjkPnXstXfbt%2FpNjj%2FnwXW%2BcHa6%2FSYvZ7yEwbDYazDcIgoUGzY3h2HtqgUcs1AFPWKgTXrRQF7xkoQhRf7uF9hPFeyzUTTSwY6EoUUJY6AC8bSGMS4Ys1Au3WaiPSGGsMtkdGH2rzJgYHAaYjxIwQqtB1CnYkEZ9BM6ALOpROAfyqI%2FDBQudgidBETXuqRIooz4DV0AV9UV4GsyivkTEyMMmw1UYGdhkuAYjA5sMGMvIwCbDDRgZeAz1TXgcmDy3YeRhk%2BcOjCxsMjyAkYFNhscwMrDJ8BQ2886gXoaRhedQvyTSkDZ7uA6HLLQBI5vGntAbGHugTc53cMxC7%2BE4SKL%2BACOzNpk3YWTWJid%2BiRo5NXIKM3fBItAPW55FdJLY3FeHBDr90606JCIU9Jk%2BMs3%2FY%2F8L8jUq3y79bJ%2F0%2F%2BROoP4v9v%2F4%2Fmj%2Bi7HBXUd0%2FelU6IHfHt8Aj9EPGAAoAvgAAAAB%2F%2F8AAnjaxb0JfBvVtTA%2BdxaN1hltI1m2ZVuSJVneLVlSHCdy9oTEWchqtrBEJRAgCYEsQNhC2EsbWmpI2dqkQBoSYgKlpaQthVL0yusrpW77aEubfq%2Fly%2BujvJampSTW5Dvnzmi1E%2Bjr%2F%2F3%2BXmbu3Llz77nnbuece865DMu0MAy5jGtiOEZkOp8lTNeUwyLP%2FDH%2BrEH41ZTDHAtB5lkOowWMPiwayNiUwwTjE46AI5xwhFrINPXYn%2F7ENY0dbWHfZAiTZbL8ID%2FInAd5xz2NpIH4STpDGonHIJNE3OP1KG4ISaSNeBuITAyRLgIxoiEUhFAnmUpEiXSRSGqAQEw0kuyFUIb0k2gnGSApyBFi0il2SI5YLGb5MdFjXCey4mNHzQ7WwLGEdZiPPgYR64we8THZHAt%2BwnT84D%2Fx8YTpGPgheKH4CMEDVF9xBOIeP3EbQgGH29BGgpGkIxCMTCW9qUTA0Zsir%2BQUP1mt%2BP2KusevwIO6Bx%2FIaj8%2FOD5O0VNrZW2EsqZBWbO1skRiEKE0DdlKKaSVO5VAuRpqk8VQJAqY7ydxaK44YJvrO2EWjOoDBoFYzQbDNkON%2BUbiKoRkywMWWf1j4bEY2iIY1AeMgvmEz%2FkVo9v4FSc%2FaMZMrFbjl4zWLL0%2BY5FlyzNlEVYDudJohg8gPUP7kcB%2Fmn%2BG6cd%2B5PV4Q72dXCgocWJADBgUuDTwiXiGSyZo14HOEQ2lE6k0XDIEusexDzZOMXwt1Dutz%2BtqmxTvlskNWXXUQIbhaurum9GrePqm9Yaeabjkiqf%2BbUvzDOvb2Y1E%2BEX2DnemcTP%2FzLcuu7xjQXdAtjR0Lo5n4%2FHs%2FGtntMlysHt%2B29NXbH6se%2F%2FWbFcyu%2Br28H0MwzI30DYeYTLMXIA2EG8QlHpAsyS0EfEToR0a3utIxFPJ3kiIHCCrZ66b0e2xEmL1dM9YN%2FMwS5p01N5jMX%2FBLKt%2F1R83l0LyC29M6%2BiYxo%2FUNg%2FEF7c2WyyW5tYl8WnhWg2%2FhyySbD5UhnDyS7OcU0dnrFw%2BDfGdI7v4QfYIIzOMq9hFtY55gmvC7jZ2FK7sEdrn6IXBuucYhjsGdQ8z0yEbWkkczjjsE5hNAIZrPx2zOLZDmKNXcXtg7EMqidAEEWg%2BSJCBBNwxvxJfc%2FbZa%2BKKf%2BxoKZybnq5vaqpPTye7CiF%2BZFjxZ8%2F7Qij0hfOG%2FcowPA1rT1l4ymWnrKmxxqfErTVrpgwPlz1kC%2BOy8NMDz6c%2BIO38K%2Fx0xkPnLW8Kx6qGAoQdL%2BTD9V9rb%2B%2Fctn%2F%2Ftrxz8dUrZrD%2Fzk%2FferF0cNt1BzctmX2FZPXt%2FjnFCQNz4Ah%2FiKllGiCMs1w5Lkg0kiEwj6VTXCDKsX9rMpnvIj9pcDecXAIXMnqn2dTUbN6w0XQ9ue6FV%2FnnXCH7S3lPWGltVcLsH75ub3ab7A8M28caNrIeOr3o5Q0yFsYL80xaa0EY%2FUEczV7icUMY5pnelAkmUAXmHYjvFWFGxuqlSaow3OM%2B%2FiYY7%2Fl%2FhVELF4EjRqNR%2FbvRbOY%2BDUGzGR%2FOh3EqmE%2FugIQQguGt%2FeMYz%2F%2BL0cimjeZfQDI3phXMbMQsqH%2BCjwVz%2Fhf4idHovgVmB8gLvjbicDcC%2FNypP536E%2F9N%2FpuMibExdohBmNwyiaZdJGoigos7GpF222xrfnZhML%2F7Z%2BylaqP63Hr%2Bm7bdUkQ6%2F2cXqdfmvwixY%2Bs2ksXFeXcE%2BiX0Z%2BIow76DBNgjJ7TOdUK18iPsPflfQD%2BDPsZG2Aj9VmKMMJ4fYRrhIaxhTDR0Elh2vA6h%2FAE6xUb29mj3sjmL72petXjejPy%2Boel60M99tFduCI59N3221xe7apOvxs6aHs7vab1IqY2tv7q2xsHeHGml%2FcV06u%2F8S%2FxTjJ%2BJYc0bWEX0ukW6YmIbGkJRMdjJ9mYIH5QIdJF4hvRGyK7cC7ctImQRcUET99fGXOoft35GYLMQu%2Bg2smnkgZUrH8AL%2F9Si217IssJ916nv14ZrJrvdxLkQvrvtBcjgPC0NXOicO8Qf4mcxPqh3hgUw3DDfdvLJXngg7N3dN2zbPJSaed3OfZnMU7dvmznp3C3bruO%2BNmue0LFsy7S%2B6265%2BfCKFYdvvuW6vmlblnUI8xCXp37CrOZv4B9gauDBlYp7adcUXB5DNCwYImlXOJJKkAdvExXxVvKEYnCo%2B3eIskP9qrrfIYs71CccBjfXRC52udTHHdaP1A1ui%2FVvH1otbrLrpNXBsGX5B89QghDyimlvNB2KfkxZ5C9%2Fem3%2Bd1%2Bd%2F%2FIfFp2%2B2Oxn%2Fs%2B9n%2F79p39S3s8idN6g0yZObwJOgKUpNB3GyU0Ls0PbRzIRq4lcarLKOJBkLRzJQD4j2090XrbA7DW8K3jNF5hlGS5e4V2D17zgss4T20egOJte5iD0bReM9yjTxnQxCRj3c5kFzGJmGbNKmwGw39IJDJcXJZGMkaAB4jyJAKw0jt5IAuIE%2BA%2BU3cVAZZrq9zhDyBrU8oosuxcGNTzCKJfla7JjNVmuSb%2F%2BtuzN2H%2BX4vlB%2BPpdfMXXmuVsNiub1T34SFbjYw5itEvVi0K0Nt9pNJUMI7SLGRhf2xipfCYf8z5OdlGKayOucFeVPeS%2Fdbo3lBrbSMmwUiQN5%2Fed7g0Ds1s17IuZC5kNzM3MZ6EWCa0DtekdJfAxz%2BR%2FOX28sND7yRMTBcf%2B%2Bs8mQCQWHya4qBv%2FufeMoWyslPA9DtMxUknxkH%2FyfTnm2CMYzs%2BCq3r7PxY%2FMXomrvTEsRpfEGHa%2BWN8E1AHjElb7d06ddA7oK%2F%2B5Mdsv9EtPms0jv0Z5kf1FqPxWdFtfFr0kHfgDX0Y%2B5PRSG7RUj0tQr7rmfX8DH4G5W28kKeJLtmQsQkuwMP1pk16EV4sl7vrMJATfyUWo%2FGwEco4rh4XFQgaiUX9qxZHrMQqKnz%2Fc2d8b9TysYrAuXpP%2FRf%2FGr8b1qwwc5a%2BeuLa6S6sneNXToG2XrEJi4R5SGs8Sq2S3d97bsfCRaTdaLwKClRHt37mkudvXbjwVrLhuYeGhh56bvfQkHpk2CwvwClqgWwuBfndC3c8dwmstj81KkagcUgbfPY8Zje0W%2F82VPWJHmSq6pP8hPWpotc%2FEexDOK3qU%2BwngPhOCiO9MJRm8TJefjelrzoKnG2Bn%2B1NCUmPE4gHFmBN9jrTigRIpsACrc9Gstg58ULkp9467%2BGf%2FeFnD5%2F31lNrt2967dhrm7bzI%2BVT5m%2BfzKhvf2MzpICEm79Bopkn07lt1762adNr127LwVqQLdJ5%2BlpQDcvHPQtVY5knhYrK6q8%2FJsiP6EuhGZdFdaNszjvpqvc%2BPI0CdjN0AXsFOC3ZfALDJwr4q2Xq%2BGF%2BGNbsxUg5NLLIEXi8otcDQcUts0D8eQ1iVDRAMBTsYiNdRIxE09EIBJO9A2xqgERTaW86BUFn0OD2xFO97FAgFhF6OoQ7prYt4XwSeUgQHiJyDbeke9IdQntciLQ1FlJMaYcUNvZBg%2BFB1ubjlnRNvl3o6IEU2w7fdNPhm%2Fhh%2BFLysUu6%2B%2BDLHkOkrSHYEjH0tEPe7WdD3uyDgvAgK%2Fm4szFFR7ch0toUgBTdWHr7EpaWru6%2B6dmbbnqWEbV2EtxAsXiZAPTtGPSbHsotI2leoM8TePEqgSQprs7AGFf8kuOkPdZPXGb55POAW1d%2FjLST9v5YflasP6v%2FCO7%2BGNAPC2BMZWmsOjp2NNbfHwMCJD%2BLPVL%2BD%2FOYlWEEI%2F9jpPddOFkB5d1GSuKZYggmCCd7JUxD7EXAzxyirYnNDLdDZoFdx14kivkvGc3579Jm36reTTvDgBnaO6vzyQ6chQmlsMoIkIQ2%2BbBDWBud1Va4pcCn8CPqxlh%2FfgtG8IPaPH8C5wk6%2FnZDv69jurV5QhtwE0x2iqOsj9Mx8B9%2F0EaUdiPfOYYDCi%2Fq9jhWRuupMDEU0%2BCtX0sDFxv07T%2FK5niBPqN9%2BtQjgEc31NGCXFeMcCEuQBIc%2FBK4CO78u7EPYvl3yaEfK3vcb6qP1R2tI7vUjVDDUdKubsSrNjYKY1qBEa2P50SJoaXiksIoLiCwnxS6EBuBde87botNfdEWwYvF%2FR0%2Fu5yCqhGeEOR2ynSeyXjt6ka7neyye8kryBSWE52y%2BRBgogrXPZ8E1yIHoHIFUM%2BAbJhE7lbMtt8ApL%2BxmZW7PwbjAO0fAVoXQOuiSP%2FksIVdFZ0aulsamKUzwPZ%2FNYDMJRBPCxsBqLzqHyneXF6Ej9HlIFo7%2Bpg%2BjUb3unRmGpstGkm6etOuDBGA5wCMefp1gTHcdZlvPBXlOslvYTp1cd8UjYLVd%2FJ5awNrIOKLnIt9MD9qdrKrWCvA6ALm3QV9VrsPm60Q7%2BRHJHP%2B2hqfugo%2FMvI2H%2Fmqr4b9tFnKSRY1Y5Ek80Nm%2FWIhr1ikKnxGz9TWXrokf9xwujfvcOTtNTWnxd0F37Y2W79tteBqZ4G5qLCuomw%2BnSr28QESCRVLTyYKILGJOPfcnaIFOsewhRdvv%2BrWa%2FWih0vlbX6Zb75T5C0qNKVFvH1QL%2FvazSWgC2s6oWXXIuUxQelKiJbowuJDQViatLmLijg9CQBMg8WiPgiw3LEeYRmm5f%2BXdnvkDnxLLjMLxtvX74C3OlwPQqx4xwIdpPx38LrlDphiyWUWHWKAzzxurS%2FxTo%2BP5wGFak62ap1PVFFN4v%2Fy%2BxuR39WnIO7lsWfwgVsK17wxrs9K8ltIKuhkw7f%2F6dhK6gQokFKhWX3urrjk%2FrnI0pgfpGMeuQIUaEM7%2BGF5q2iMkCaMQwxxOzcvU0eXbsnS9XknXvP7Gtw5dwPXlFu2ecvSHEZgNDsU6x%2FGdXBYXyOQjzZReSedeEPY6nEv9gJR4oBQJtFO6Kd0fwC6BO4LNHDeBujB6dSNcUQC9zIv2LnAzGk99bUDrdFY%2B9yGFQtEo0GQPNv6vS2drj4%2B1jHbv3aJSMUWP%2BQTZrmbNTjU8wyG%2FiXNNpskybLcJ3CiTF5Ir%2BJYzmJwE0mSVhlxbtbmvweB3ulB6Til5UuUZydpgiFVeobhU0WaBqpJ198d%2B%2FXeNRTZ9%2F1OPfG7%2B2hwzd5W3D%2BhmyjsRcUg%2F%2BCavb%2B%2BVh2ls3L7zT%2FetOnHNxeerv313vzLVqPai4nJv%2BK1FC6040%2F4udw7sAb3laSg0XCkAAs0npBO6VJabS4Elk%2FU%2BD4gTXW%2Bj0wnrMlqNamq4tMIYB87tE10i0FR3LZNhJsb7%2FR561btmes8YBCRkhYNByRtKd55mqTas9FYhJnbRGHuOh3M4QTdgQSqmgRxuzGdSvZGcbMxNQGk5C3ebLjoXIOFM4l%2BWKHmLTJwRv9E8GWJ6dYvf%2FFmEyEGr%2Bgyrr1p5zrgkz0Cw2j94Hv8Jdx7dIVegBSNtgsqGsRQEYiIBoXwD0LNvQ5d7s5Z00QzwNhqZA0b%2BtMG1tQq5nd84uq8R0zPvX35G8uRaze4jcOHzz0w1%2BQ2BIRvf6J6Kgatnrbiem%2BCFvAxfkrndzD9MFPP1GWTUHclpASUkCNAQkpCCcCgDSUDAhDZ%2BCuEkgn8J7i9nMA7pA4lISappxILKfAeSAbIcSDuN2bJcfZILqeO5rLs0MnngSHYRdrHjmaz7JEsEPw51ZqDJDmUIOZIe34WaQeegNsJn1qz8AIpT3yCjyEih%2FxELkuJ0lEMYTLVCiWpo5oYMleMH6USyYJcD%2BuOe%2BkWKpn1Qns34iyYDjkSLvgnZXcgVQNeqINXr48m3iS7cjm8tedyY0f1QvTnHHdsrKby%2F%2BSSbPY8%2FNH6vpl%2FEsq3Ae4ZU1HC44KFiI9o7CEgab%2FRqHbj7s5KAg06s39ZP%2FzxI%2FmVuF%2FTbTSy%2B3Fb8If9%2Fcv7%2Bwt91yy8RfP1QXtW5RzQn7qIiZyuFM5QfJ5E9uVnqT85TanFx0lkP3ukBAMprvsRyi%2FC8NAJL1xbIIirSvnSj4O5netb4JxmNANHPssHAcHMHsFRgEug816gDBeMbdfiuRcghqYcm0%2BXxx%2F5IAEtN3fqFF3LzAXqwoT0PN0OVTNqxo8sxMkd5Ig6k79Zk7VxxX6gMLOZFQgvpW2RrMW1D0BDihaXQ9wVRoBxPLfpknmkeMtoB%2FqM9cRc9IqmMD2XUmdZ7GSRKPUZvChf8BoykriM2MnKYbOHX8R7cLdNCxSFFVQqoYswnlWtlFS2mNkhswVpZiQW1J%2FUKFfipHGlUkM6UKBhMz1istELIHJLMSctu3ugzfaVSOjKvUgc%2FTHK4Sdg2Wscz69leKIkkrwuuWiOe9yGYKQXRumkC3qbRcMwrvhjNXgdZk3RxAUEhuSPvn3nnd%2B%2BU%2F3vlVOmrJzCD8JLxV1OHRjrZifbcFDOuRNTGqdgQm1tSNJ2OcQ04YiEXuxtII1ECSQRoQGYioEsgCfchB4ghAtw7FfJre4WZ9hkVi9MtjuWqtdNDlpMrfEG9fOT6q21okg%2Be4As38MfGquNt7oUws6Ysarj1%2FefE%2Byst86YUVNvDdts3Pv5c8m%2FaP0C%2Bf8%2FQb%2BIMnGq09BgwN01oIOAnAdagI8mBSrqk1gxTDUBOtk2ousEtBH2z4Ir2d3f6k8PXXVlt2qN9RODxRuoJT%2Fv27wm09jRYVc%2Fe%2B%2Biyx2tyzJb%2Fn3J0htXP87eSsQaf2Ly0s6Zmxela88REy1cf4273mI3iXNJ7KxrZibOm9xm6rl4fqy%2Ft27smU8tOfdW2ucBzg2UfmOIVyLIl3kpYlwphDISTXJXsctmiDtN7fNV6zelgxwnWxsVr83Aj%2FS5ki1jL%2Fa0GC6%2B2L6Um%2BaoddlNFuj%2BbJ8mH%2FiaLh8I0%2FU51NspIEfq0dohwyFXKgm4NggwQ4rRhCOUFtxxo8XnitT4cnGfT93IS8FaT85XE3H5LMY4zIEPL1hw443wz%2B1UmhTJyJGxZzw%2BwsKkKZgUiVtKOKMEb2AKHTv61FNc01PQFwKnvsZ%2F9pPA4RKTASWahmh%2B8MxwzHxKy74IRn5LGRjsPUUwTu64UYNY38caqd7HKucZ%2FtHnODtENw%2F2UfHRMaq1UUPDJQ0OKkWCeet5fYOhII1VRz8%2B%2FElg5j4Gxur3J8o2PJ4rg%2B2d08T%2FfwEzSVbyZ9XPro95T477lRKqUSRXQnauHNsISAl27oWi6Fv9z48JMv8r%2FaMMj8onCP%2FDuDZOuN%2BGPPr%2F%2Bp7bx%2B7JlbYdppcNhzKU%2F1Px5aiaGDn%2Fs1iGMaBcleKUo%2Fv9rcxkZj7DBEKOfrayytXNLYiUdBY%2BpleQXdnscKlQcpzuWluxsieeyuXIK6SdxozitWyGOV3vOHHjguyCQ6fpIYy2JwvrQEF%2FQa9Pdf%2FQqOSqCiE%2FEE1%2FXIVKTc2tzWbHnimrEd%2BVyz311Ml3P0GVTj7PD5aDnsvCvH36alEaPMePcMegXs7x8igTu4B9v7G9vTHvhCu%2FkzIdx%2BBxC0ay9zRSvoS0F2lIxI%2BX7klU63I40gLQ3w5ep5na%2BSFnba3z5D64zv%2BQtM4n4ffG3tq4aNHGRfxgrXPMim%2B5487abL7xhdseIRn1KDl%2B7aINixdv0OD%2BJSPwKf5%2BxoP6aiTeQIDVlIhMcL1H5R9PYXvprs3fv2bO7MOplCmweuiq2JRZ1zz%2B9a%2Fv2PH1Hfz9236w%2BZrPXvWfAxlj4NLLHpq3c%2FPQ3uvmvbrjG7fe%2Bo2y%2FcLdtE6VUlXi0ASb1VLUBVSUWSU4HdvAraTyS8xzM8NxvxFkXV6pUVRiJwcgC5zEeht4rwcp7ki0k41G0qlQhG1Vzlq8alEmnFi58caB5Q9vn988MLhqyVlHvLEWjtQFeupdiocF%2FtkkOGPW2ibWaBTkeZ%2FdvPWazXfOnnvL6jkRXpi85sFzZt%2B55ZptW3bl1cCCHZPD06MhySha7UFzjcjbp8fOecFCirzAG%2FyVjBX6OFIaadSjQq1nNhyIe8tVbaaSdHlXIWKacMeuZA1uxS95zILhyrxAdsXTL6m7kNQlx2P9uZf2qhufePFFbpI6%2FOU0WcP99RrCsrwseVot5mtytpf6Y0gm9sdeyKnPQ7onyK4nXlR%2Frg7H95M1upzu89DH6pgUcikoiihJ6NJKmRxV1x%2BMJiOA3YwhDRQrWU0u%2F0rvq0VYXnyCwsLeTJYBq3dAtJDavuzyoVpzZ99Z0%2Ba0uoiFH%2FxcqgDR7rUFeOrUn6Cywb8ZeNMbhLV5ugP9l0zv9UN5b5mFkjzxUcpPJCn3V402pRxtJd2GrnLdhtVk9ZSZh9W91fCSH5B7ofxPiWL%2Bj3D%2FuwhBRdyAyozeZwvQzs79soi%2BBKSnafLviZCcfrpBpLyimfLfTyJtbyruIQKD01tUwJyKEo%2FybaxkSNFUMdMkhQoJyRBQFhnUkDQSXhTM%2B3NmY0EDM7ffLIjqWEGt8lCO6mLia3PukFnghosJD5p5SIho%2FVDkzQfLE%2BIrYoJXkD19pdP7OwG%2FvoIUtagiWiZ4PAFTHHlTVhRZ7dYmPar%2BNJ%2B8JhmR6DFK5DV1foHoLNO%2FpHrvZfmWZ15RQlwvoVDKhCWNK3CCch9lfFBuAqUgpFSShmNaPj%2Bi5%2B%2BWZfKeViJfW5HnUakVL4UCNVkA4%2BETfIqx4B5xSaP2L1yn0zn2ltPn4%2BOqZGmwwEVCaCSqG53ldtL1oLGAhdMLd09MpCCF6tD6ZnAZBY9hDaYsP0jzZ0j5ZjKsF4i1UmLuhbJMCnYJPt5VwFNvmZawXjEvLJqIH8STonZjq7BZ8gKgR20C9MDFqJAX1H64QW2NEup6qgzLP8cvppL%2FNNTOBTCJABOHeWoXzLhw4Wuy7gaBtjKr9kgKq8ZlRYBS32Lpxc8vIhpNDTfyNXWybMJbn2RyQ5EmWc2QF9wmSZ0KYCE%2BcPuYO6b15Uotj2Kd4MItLS7gtFbkTdrFND6pvEZqv5Yv7jXAus7Pg7avo7KDot50NX3CPkP%2BKps8J9%2F3mGQIteY%2FLGPC%2BL7872SPR2br5fy8MtKBMHedGuM28%2FMZmPJMrGgi3Gb1S%2BSi1%2FL%2FzrZwO9XH1ce%2Fz7ZQ1WSoY%2F%2BpMb5FT4ua0Wm%2BJf%2F298nFmChEQ%2BTi71est4mq9VYI6RsymoRJKYidElT2FGnDTZvqtfhGAFTbeqEw68GqtfmbVa%2F1IFO1%2FjdWr%2F8BDRRtQh9XNjubEm4aWVpVonpTGR7PVGc%2BKJNoBIWF7kYi4gUV3r1U6723i6TxUl3n3%2FtM27aZfKb7THiHW9VzFSwHJ05VfK6Ar7kaB0XgPPE0BSkSFKsBUpaLihEWoA9wBt8qirh2VSOkZwXEwyrxZ5jyt2rJmSo9gX7cg6jsEUGJU9z9xJPOEM3uQQxKgkh35DNATnVyrmJ3mbCNyIB%2Fyox4wH1bg2DwN7q9kov4pFqny8oSm3RQbGgJ1QQTs6ZMLilOVYJ9v6Wha3HcJ9jddsXp9YhGUXLXt%2FqMDnvLpPNTXfNa60z5%2FyjXQOMq%2BlNmwh5egpYrdfZQZV9rI47xlRkuyTjpzsmCBSWNkAXVoK8sgYWqQJWbo1RLo6QH0YW6pxqfCnRgkd%2BRiFjUQUQ7poIaYoakgXxwFd9BuuI38H1xBxXSFb%2FpBDIKQFn7YB3dB36l7sG1FLaKiBdp1KxLvfswap%2F30lnVESgNnvjbUoT6w9N%2BXoio0qcYOIM%2Bheg940YimsucQVvli9NEcft2UZwGQwLuilj1fFr1i3NP94X%2BPE7Hpvtj6lBJfJ4R6NvWiaL6MgzWHxiN66DExa%2BdAdAbMYX6HVF8A%2B7rjEZIXAVbDe7PVI9rmN69JOLV1DOSvRPxWNPZBZf%2FNf%2BNy65BhYxxxV%2B77XJ2wfQ389%2FIQPgajXbwMsuAz%2F0IaQcXJavKbRqR2IqyZruXjVC2%2Bhdee%2F5vdnYOedpmVtR3NGXldxSzDSIiBVpkGb9by89UpEPKrSLZmyFDzMab%2FwXl2CNe7s%2FqCtTvWgG5kpBmCBlSzDS%2Fr8N4uwBwohRW63JTS1y32f0TQsPfXVGEHQrV8%2FNCfiOUVirYcBbIeA2%2BiF68rQIo3B%2FS628vYESr79ehzS7Q9LEL9UXmik9XVHb1yBO3Ngvt5935%2Bk1efkV51mzzrM0LL3%2F20avnwMeKuWyOUZg2TasSqZ%2BKcZQiOn1Iu2Vh497ALUVZiCKt%2Fgh6IvTIj1ZLRjWAkpHKOKovNwp00eqPROiAbiNEKieXwMLcXhVJ1%2FuzmLP4tfxaHR59cBdJVG1kTAgl9ze9QKUEQ946Hkb%2BokJ5JRDyf54Axur1D%2BWS49cLr0tTPEu7UmXrxcSr3XNvumv4yXzInXKH4F7Tc7p17Zt%2Bt%2FqW2%2B93k063X7VW6lALxTY7i1nBXMxcxmzQbabxz%2BtJo%2BwijYaIGMNS8AoSMgAPt84DdHOoMPfjXhF%2BkuH1tZvuFQrRCN07xGcXRX9MYxYchDe5BcHj%2BZ4i%2B42WyPc8Xofi7bbZJN5nJLJ5qr6IqRtzqNlM17SpFsnkEyTWoABEjz4JXOQvzWYuwdnV5LNGOwTM5v9r4RpQ8ZXsYodks3o31JBlzbYtNotisnm22MxiwGFXam5oN1n0TA%2FhRvshvTSDwHff4nNzRo9Dum6PaJbMXzDz%2Bx%2BFkj4L4bFNBb1asqsgH7Dyh4DvbkPtf5yMDKzEwyoaESMSNS9P9gJVA3%2FRTlwoMwZvxECFWxIPNw9gi01nOHjP32esZTtmXHnxvZd8ZtakqQ7ekajbXetpNa6ocTVxJtY%2BuSe69OLz77zh5bDR3xjZMzUz6fxrz1nqrZGcHQHfPVefN%2BfiK86LeXj%2BSc5lPKy%2Bk%2FvCUI%2FDaLFYCWHr6nbXuILTIsb5imNKY%2FrCm28fSMxPhkN1XbNMNZGuqwOBhtTSxWuTk6bw0ZaG86b1hKddePOKuBvmiguYBn4T%2FyOqOyGRBt7bKUI1GjioBC8aUKwF7Q319UgcmtFGIzCJGBqwQij0ynDsfdFGc3TS3BlNfJ25xmzniMkpXXTPvCaD3ZaZvyzjmZdudBostmhb0ORZNN2sJBeed1HXkrUsywueQH%2BL0eCPxmsa5ZpgRJSDZ11yDv%2Bjmbd86vxZfc1WcZJ3UkMq1BOOOVtvu%2F%2BpB%2Ben186d3GTwWAw2jheaJs09%2F%2BLNfZft37DALyrNj1wABMuUKbODyTVnT%2FKYbJ3Tpq8IrNh92dkxOj5P%2FYpZx4%2FycyiVcDYdn4JbEoKdQi9054iBKsygLW46FRGxAb0NPNCm8BSNCPjoKcj6EAus4SuP3rB%2BcV99%2FeTF6294dA8%2BTK6v74MHVpYNRt%2FI30e8QGTOOdfGWzzxcy%2B87a7bLjw37rHw1nPzp0KyyRSeZO%2BQQhInt3dYgvycjrPOv%2BT8s1rptaP84VeywdWX2T4ysr0%2F7TLIs6%2Bx9zib56ye1dM9e%2FXsZmePY3NDs9zlnNVt4%2BWgHJbbz3Livg4P9WWgviOMm4kCRT6I8vw0NbUUEnFvOuFKoxQW1gTsvFirsF5pb7qTUCx4i7VmtToveaDxvK9uOaedVvPRpVOnNz0Q6bry7uiSdQ8t7Vy4JQKVS%2BXPplV2ts4bvCwZu%2BKzgITtxepaPRzWdpv74muvv6RO0SorX6cu%2FdqKn%2FXWnrtp%2FZragz13DUCl5myiFW2Ycvb0PtsXnU%2Btx8pvLFbUspLX68mdegwmOif%2FNPDONajTGoUh6tU56HBJCTBASVvNUB5VIiKpc9kd7kludodSFz7xQbiOmMk5dOYk56gzL6uaf7N8a6MQOHm0ae6snZpFDfuT3%2FjdYzjzwkXXIVHoXNuCfQslQZqBZjTsoHMqrkE4jaYdgkGz2ATOgB3cPkSukD01DnV3ttb1wx%2B6arPqbkcNAHoFPzKUUQ%2BqL0k97pjbZv1I%2FegC9zTFbrrlFpNdmea%2BgIgfWW3wqkcis8ky5FAcRd1If5nNZrl2FFpungc8wpoCl1BpQV%2FScS%2BzjlASyUTVv%2FAJ46gkJI4bHX4lTnloctxPZE1ckS3%2BjG2fKIjkQFyzuo8jvYQG1OrGvJPSTu%2FnSp9PHNTl4z5hK%2F8gtXVKF6gEKiglgcKiRlCESsQCV5QIlKWKpr34lt%2FwkSx%2FJCmP5%2FcBKQfl%2F5gd%2BrOS%2F%2Bp91%2F%2BYCg5CXK2W4M9fu%2B%2F6xxX%2BvnelVuldIDCG0VQTpU9Dw4pRfei%2B6zWx0MLie0gPbyrkmRU7OwT16JGeyXLHqOLqAfVN1GPlBzWtFNzj0TRTCjogtP1NjIvu5habN5Aoa1k66wGpqriVetJgiGdwDZtKhnN0y4n9sXYnsqGmZfDSR15%2B5NLBlhoDaedEm7sxmpqRija6ZEEg2EAnTiAC8IrmFbGz1q08P9PSkjl%2F5bqzYqT9hMmptEXDgTqP3Wiye%2BsD4Wir4jCeoHbbp5hRfpB7BakUIppIlPCD30dR1GtslDz8OsqbXmejFC%2Fv8wu5X2myq7SJ8Avzv9DFUJySf5uNvq4%2BTi7W9D%2FOZrLChdwxmPNiBRqVjnpK%2FaGxRCDspVYKAW9AN1JANoo8wP4BJUlGqdgw6m1qPQ2QW3%2BOfU5%2FieLS%2FNuKpDU3uf8bcAXyBal5jMR2NEAbPAZt0K3hvxHBEDlUxfIGcD%2BN2gNSNx36nfqlAYow0puatNpRz0e4W2oahKzQHsjf2c16ad%2F3t2KTtPobnX6D8C8pd0MDP%2BKx7wnXqGGlLQcvikMErm6TmfsuxJXbSAxqNjOogJLQBLiKEHAE%2BJGTS3JoEhTrz8%2FCB%2B5YlupJ58aOat8Kv4JvregxwcU5Cp8GFAFm1FyOfto6GS2m1NGTS6CPNKkbsTdCBlnN9onMho55BX8IJZtEQ35lk%2BhtwN5A0V3RCPoD%2FyXAcv6pAtbZczRUA64JmcUf4q7Q89ZHLeJVZ5D1Ps%2Ft%2B0iCT3AHVtZC7JDCXfR7OSb%2FXja5H3zQbZL1B%2BULX1BMTEk3AseSpmnKEK4T9ekMIidUCRQFfcbj7z8gNLvzF7mbhQN8h6ZbRset%2BnQWdS%2FZX3k7WpS8P9sfo0iGS64wV516pOhjI6TZ2dApgI5%2BLhxywYoWxKUrykKJsIoDsR4mSrCTg0egMPnLW%2F3Q5Nn8BZEuzqEI7HK3n0%2BzFmuO3TtWQ5WJoG9YqCD6Gc32SxnbnVPfsxvrFXK2dILl7bLthDp6glhcsfp4bYvbSmj%2FmQ94uBTw0E73x2jbNRCvC6VL6GCFDwU7eWQDcC5FY5s0slieRDwtAbRsbLXbaXAuu14e2OJw1dc6jQ3ZdY8v7rv2%2FBWZLqvFWVvvcmwZkK9f5jS4muO9yR5res4kfkRxhV03L1RfPOiPtYi8pd7jNEsOpyTwxpaY%2FyCZu%2FAmd5Or9uS3DYaeqVOhH7gZN%2F8I%2Fwi1fEuLXvyNivibjuKvN%2B1Nc01HF%2F3h%2Bef%2FsOhox8MPd5SFucPjorQwXT%2BytA8EmA5mamHNFDVhBI5pjZbQpugBNkO8MvRub8KVDKST1Wag7D3xlin1ZF7LFP%2F79nbvCXFOY%2BPUjrT7%2FotsPXXZ4exdPzuhZuL5LUXVAn7k7PbhG89uz3b41X01gbjP1xwlu5rrvvf9%2Bpbs6E%2FVu7Nk642%2FPYRaAiUBdrmO6CDTBLPQFA1ur0uXoBR1INDMkypKpoTqnSMx5GiEdTEaSHLs0Alvu%2F19%2F5QW9Rv1U1ridT22i%2B53pzumbs%2BXFFXYC%2B%2BCGsTj5JUT%2FGCgRt3n78i2n71FHG4%2Fu6X%2B%2B9%2Braya7os3ZbDmgWfXun44e%2Bu2NZKuGZ0HiF8M4TlMPR%2BEU6rPKRJ8wOU2RFUFLex3egEsz3YqEAq0cqhAAW19dBZIlVzR61tuIdTnpXH7l%2BuXrbjPUyep%2B8cl6aXKWhPHpDcXl9KiTWDNr4mBQc8Tq%2BNzK%2FOKSbsfl79o9G20R%2BbrBXYvUg0rLHhtrc4TN81TTOWSZ0gL1ZVlOYH2ery%2F7XVUjFMbzYpg7UswcqJPQwBd0LKLabJ8IaCr2otcjSkIrGwootKECaUd4XH1%2BSdazRrfddkBU98t1htvWrbjqSqjaCguxrffM%2F5zDCpBALUycmajhd%2BR6ww4SWafuZ5eU%2BtPid4lgd3gt%2Bb%2FY9rQoZNmiXYPXyRHbRs8zX%2Ff4WIFjWZJtUdSD55AP3xtXH%2BZipC0EqdBGDA4CoYEU6gRLGPU11QhkLTBiEYPiqOeQgwTCl9aok1Qr5pFf71qEeNxjy%2F8F0GoqYPv75Yh9j3x4DuJ%2BuEzHRpAq2lMqb%2BqfTdiq6kGtzfOWsv0c7lSeMXDHBDe1MT%2BLUgx0Pg%2Fp87u2UicdIvqQi8DkxhcUwUXCedMpb4NQjwY3npTmgsURJavLwCRyEcN2HfWsDVGfv%2Fu9ZUWUx%2BPYFueUKwaNvbtu%2BXps3eVWbN1GcgVrdMnWJ7WmJz9SD66EBidag0NF1Ukep0t5A7sFCWdhzvYwHv6L%2FBehXuHqfaBwBEU7hfVLcXvS4VQv%2BT%2FvaSIl7cbeMc7ekv9i8S3e1L5xxpvMGcu1EYPbKyCiijjGXcDKckm43PqU2qNWlXusZMiqF82cuVzolUHN9NNR0HZPxFPV9V0wLtvq%2Bk4DqOwVWDlzuQLVdqFiP08cRX7aRlBVfR8cb55bWe5LExnlcsDp1vAP8Q9BucPMk1Ulh4GnN0SAdxcNHv3q9ohx1Ati4S%2FtkWjIDe3hQdkUGrGRaFBiUdiTSkI41UkMuuQHP%2BEaSQYlPQTFWJF03BNPpTu5KFAdkWgDukzsZKMG0Q1TAQQglScOaP%2FdsZ8%2BfP75D%2F9Uu5Gs3FY%2F2SxPld0DHOciXI9gqjcEidXjE%2B3BLosy0OcX3T7O5g65ROGyzQ2BZs7WbZVnO5ydLe32hMwTQ4wnnKXW6XW5LAa7oaXOIHoUl0FgLQLH2by8wSTWeAx2Y5PDazK3BqZbeJZwXGPaYhX87ZNszoDdaRxotXO1nNlpdvAPFWHDm8PqEE0sZxDEqGzxisFNnuCWetPcGrObN0p23tTZwMuRVodSV8%2BLTrOV3eRvzjQZiSjaLYS1WEJe0kNsJlZu9LFun7%2B%2BwW4gRDRbaxw2nrOGm%2BxOj9cmtbp9ZqeTM1m8UXfQQCSTVSQox6pvtjot%2FFpHvIUjJovFEoYvHYV9C5Y%2FxN9OfcalvII37UEhTbTg%2FAQIaPb4Vz6j5u8%2FaViycMod%2FfkDcpu8QZbZoeBi%2FvbzP3XPsZvOubMtaPHkD9jt6%2BU2O7vqU%2F9C9SMvgrXpQNG%2FE0oJxun%2BCiElUa0IKQSUwERxOntKSV7ekcuh9VBZBBo3VUcB58ofKBHCwLyf9qFosz9Ibf8dGqwaBMjRig4SGOZ2UkWI7UiO9OfUPdxOYFApUZyfpY7mgEc5rtNGGk2H1lPhAk1Hp%2FVAMqQEHEUfEYkkUQq1JMdzsX7kklRrTrUi1wMcDjmu1YYfATj7Y%2BpGpPEBXuoQIj8rR9mgCl4C9yqmF7xnVWxGVniNqtpVmXBvQ6iwni5YQ8a1jYrXtc2J13HvgkvqWxuva1sbr%2BP2S5ceKGyBwDv2DbrToe1u6BkAJV7xnVLUaq0sJB8pFqcUIPi3yuwxi4JuLr%2BP30f3OkPQ72aO0xYo3%2FEsmO3QO5qEF8S0qQH0UsKXv0brnl9%2B8M7jF174%2BDsfvPOl1au%2FRL5%2F9DsbNnwHL2pHR1NTRxMZhJtHktOOxLxErPF6YlLvpC9YP73x%2B4ofw%2B3xVdrHcDE0dQQCmCRgvt9b35xINDf1CDcRSfJ%2BpYl%2BSf8YcurfmXP5F%2Fkj6J82jNsrkWiEuhVlgFfyNkB3S5MUzLhoNiwSCYcxQ7Ui4J0Xh7fmqRbaPa1tzujxkBRlsEHy0%2FOM4pYLPb7g9O6BQJN6l9zQ0OGyCaZz0vMTbHOzXfQ7a2tsterTcqxeInODoemdktw%2B1SbVhKwtW9ffe8VKadK0OVuC3bWzyKm5LeddsWTeorWyY9IMtUFutdu5g%2BRn533qkocdvLs2HmhU75br%2FMmWtD8zA3OP2t1ea636jEzqYxJZGAwFiDEd61oTsrRuW3%2F3pYNi3bS%2BRd%2BGjOfVpAPNd6y64Gsz1GaZleWIPoYL%2Fv9mTeQBENVEguiF1aC4YeXxFETw6QyPfn0m9g8IrMFAvKM1EI11DARnbqibHk%2FIojy5rSdgCyZi06y8sS024PeuO4MfwQ5Y9yKRZCqyYaF30vzeHlmUprR21tR0t0yz8KZY66zWuGvxVQB%2F36kP%2BK38t2Hu6NQ9SFJfw0AdpqPEK2qTMpf2VCqJwqPoJezTL824b8akoL%2Bx03nhh%2BoNo5e77psxg9Q5LzebIKD%2BfsY34f2MtB9fk9v5b8PT6tYrgv4kRPwd0q9z3gdJSJ0653KjCYPwCaR5aUY63eW48O%2Fkdo33yxX9wCiMv2QTrk8eGSI6Ag6moG9t2P%2FF7GRNlDjl0gw7pJ5aOXXqyqn8SENnXBmbSwUYLyqJjv3UmY1nKr4t80no0faXsaIEiF%2FBRaIBnItSce4OUif7W6Vm9T9H1X9Vj71BEm%2BRdmIJQST%2FZfVdudUvh9S%2FqqNvqT98g9SQ3lHibZY0mRVHooyDN%2FFHmTgzjdozKw28NwQ0hwN6BCoPKaEk3YtKwNhwRLXuk076CGoZNXDQcRwZvreTZY9EZi%2Bd0s4%2Bztv8iei04JQl6ZbDD2eHV7X4uHuFVfPrOmcs6m6Kr7hssr%2B1VZFcEZ%2FPdJkn1hOs8SXS%2FNFFgqt94PIZzZ3tdaL6Q5vo6piSzdy737pwsX1VyxUrF15iJ4uNkq%2Brbyg1Z%2BO8VsNC1UmcvORPRfxtPrfRwL2p%2FoA1eZp6Z%2FaGffoewaXcA%2FxBlKlQLfhQL%2FoPgBGP3qsA7IQS8qDVNswHKRSheDUvA3Q7MZoRcJMxlEygujn1QdyzfPfq3dEp%2FbXh5e5YXW2Ngfvza0ZF6UgFL%2FE0fTq4LBlvTE2qb%2FKuuzYSXVnjTfM1osvqMHVbm9950quIZlbqaL6YP7jk3kUtA0GnX2nvq53f3WoSsvEdDRnULgo2fN7lNZJgI8%2FVWi33c3bBZnGY05%2Bdm%2B3qc7fNmj4YGKLj2nfqFP%2Bg7jdDlxEV5XsJQZP6hYrS1l0VQr4c69Xueixp90gnZPmE5OF22j%2BSYEWHlZ0K%2FHgsh%2FZtsbh6h2DNRlvv6jJh9XaJaHCZDiUDKNTMkvb8vsqCyf3ZNdSmO0fa0Y4baJTtpbKzuVzeeSI7fCKr2Z0WypapnXJ4gnoWy3PoUIlIQ1TXdqhQJIXp9Wx5fYdpeWh2TY5D%2BYVyKd0jw3iumwi%2FBC3cEy4o83QlZnW79MrCgCjbhWXBlRZVVZZv4rIKpXC01HFlHdHLoeWVl6UVc%2FJ5uGm6CViW5mulYMk%2BHqNYr0AyUPivLg2oMs2MPqtuhHyRyiwvNJej1Br%2BfcLyoAyu8D9B7bgmzUqfFobF5nKnK4%2Bt8MPJkI%2FxHUNWk117jugWF%2BxazTAALQn6%2BUE9lhoI5ApGA%2FiuJOsrlNP28SVVuBVajXmircLel46w2bJS1Q0Ft0KDuikDFL%2F3pYrid1Q4FvofwRIo4R9h2ftSwc6jHAMqLcCql8YPHtlzGoByNXYN6v8hXnRaOhUvx0sVLCexwupGDR4NOYC7PePa5keIPACnuAdD7dEadRuTIiS6Lb7uskb381My5yjzF8lGCjBRqdwrWJCagfB3yCy7XT1i92hbcZ5Ci1FJkgYMDf6n%2BjspIsHFjJrTOdzSMuOa9DbDcj%2FnH9N9bIoGVgzHPWIQuFuYtaMRaq8eCKI0gEF6lPOZjBz3EEvaaxwSUT9U%2F8JbJZPJJLBLolH1La%2FRbF9AbC8JJjv%2FmMnssKjLRBJyqj9QXxNko0Ux%2FX79epfiXkm6fmKwF%2Fen1HLc6LxloXWKvGa5rVCVL83VuiPcDEX%2FK5pTXOxHfx6HHB0t2FI0qI2rCZFTrvPWU67zVuS%2FkTsLnc7IKhFg30e4FOkqNSfH5PtkmUy6Cpiv%2F36k2sbqCeCFNa%2BURpoY0sZoYmCgCr3qgZz6s8I0gP1bYiR%2BD79H56NOz0EVWCTy2%2FfffvSCCx59W7uRV9995eqrX8GLesOXNm360iZ%2BT%2FEl3uZqL%2BFyzSZ8XxpTiI%2FG0nkT4zznFZ0t4ipMz5v4q9ssqbdKUZt6u82knPCrt6PZwsnn0XySVnyPR1ZXAn72yx48bWJsu7apnI3Hy8bygUK5Js32qcytapqgmn95uexccj205vGgJ%2BeuOeG2SORmKZr%2FqKzcx9SFctMJdwMUFZDJITs7dnOp1EKZCxg304Cevyfya%2BvlKqv6aXK1qIj3imL%2BL6hL%2ByvUlFfE0VKZ7E8gBY3M%2F8VoJCFgizH1W6VyC76nH6b7jiibYVxUmVIEspry%2FLgZIlCeP11Z4zs%2FAwvVwtGFEut5S1JY4lfyT0N%2FevOLo%2BrUEgjcqc9IkGpQbv3iW7Co5b%2BKgjvpzYdH85PLcc4X21ouwEGl%2FS4qnUAvoSlXUUhR1eKr2VWFTB%2BGMl6FsiQsVD1R3urlAAIoSn7JQkmiVVCHSpCwDH%2FqPepXQ0Db77CJOAImohB%2BRPWr31ev5g%2FkE%2BzTa4lbvZo8xdWPffQu9yJTPCNB66s%2BzXoJt%2F0L6hSoCuBIoK8fnBGG87OoRckJpLqyWe4YbpGi50g0%2B3I3UD85Oa0fzubfoXxPLbW3FDWzigmyJeM0tQkax7PqTy80%2BUxfUHPlBZIRVNQ%2Bv0xRm8REKPoLmNr0%2BUo48v9GFbXPKylqQ2IKm00QddgyWGMROCTxdLB9nCY8P7j2DjlsV%2F%2Bmfr0C0r%2FNkeXbbpPlOTBBwT0mVz1zx9S%2FwJecBF9Wgv3p032iP2v4VSgfgW2G%2BHUEdEXU6iq4CtpLJfIN9XQG8dwa1VoO8XC2SrPDDyCOQptXgbcPvlAgBfxBoGwftQKeKFrNTASPt3pGGqDt%2FQRasn2kri%2BH6L80MJRsmVYJrAKyDItpJUy3%2F15WYIJqcJ9Q5N%2FLFJ4c3dc1URpWl9hW6mu50MUIelg4ucTPf15zs5DFo1c0VSp1tKB9jkwIyuM45kb%2BIP8gHed%2B6jO3v0KbIknzLy636E8KPTdCuUpB0wLo9JKnAO6pv0vS31EtBha%2FfJemkgLVVnd8KCk4qBTpQ5m7FbifBKrPJcq0pZAFVG%2FXbOFz%2BTcq2MLrcmV28Nmi%2FOHskh82bau0k8eWCaPijQPWQ5lUvslwVCfHkXBMIehqUgtDNLeauH1huvZTbYmw%2BluPjyWoNGEuxRLR7LK5fSyXFUyK7PURQv2v8D3XOt2NJ6liBbmPGOsakw1kbeOs%2B31Wm5qpH%2BiJWSzqdPr2O7zc2TmtnrzCig6bBd%2FvgQmzOlz0STWIlmZEQfupogOZFHUZ7EkUnMn0RrpIMqAgHRJAOjIJ3yGw1I%2FMAp9q9S3Q%2FclADNm1wEeO%2Bxbwg5OIYHZLY3ehG5lJk2xhco%2B6JWybpEVz2wrR6hZyD0QXZbeDVB%2BonmlimpkWprdAs4WEZDSQppsDlcdCBJJESIYFuAtUnC4GIF2C3Uu2Kv7L1bdz6FxtqxpG4TqQOqOUNAJ2HLvPWA2GgDy4O4vaDrtyl6P%2B1fAll%2BSyFcQ28GHqh7fvvf37udylf0fNwhzgz87Y%2Bcf5x9GnF6ygHu18sAbipWeF0YPBgp2GaKeQduxxdEr3SgbH1kvH7tvqSLhedomOvZyts2dw8acu3dY%2Ff%2BucuMtCuP%2Fe4zC4XnH3OLZ8ZuxTWxy8dJfU5dhDeKPSlJy5pn%2F%2B7u3XrJhmr9C5CuleGflGQocKnlAUaRKp0BAHV0ZwUt9VCqk6zYOgRIuMfePJzdmBdpPJ7%2F6B23%2Bf%2Bsp9NMDZevovvfYHG5dGPISQq1DojqNckchVrCcCYz%2FQ0hI0m3NKDRfkgsrnamo%2Bp0CAq1FyvC3a3Nak%2Fs5VX282x9Ufy3E39VAx6o7LpCvO2wK%2Bch9jNqpJCutcIOooKnYWtDK8gTRVYygRQfwgzKM5%2BjP2jOZdx3r32Py7rQUPOzAnoRs95NvRAR0qLGU11Taqu1bUYSzMcWjMEir067JQQHfIrLBHsrgv00%2FWavd8HRLMEEYFSW3HCSNQehnrHztKqHcDyo4VfZ6gPKCR%2BgufwA8GegxUEo4A%2Bgd0BASHiH6jYMLIsUdQJTs%2FC641KN4oCHWolCMLlMfIdtWKScjx7SM5LD9HnfmhrGI0S139UWfUnxgOXdJFW%2BAMcGjKr6eHAttHF5sUoeArYKDcxMSYcKA%2FxUDhPiEOEAPafSIUFArN0r24ynI91EPARDXvIDYyvqZaWeroBOUABQA%2FE%2BDXC7PWafDLQY2oiwpUEyj4RQtVlUp1GrM7In2p2A7VuiOW6otMiGOo5Mrp05ejVuTy6dNX%2Fk%2F7mybZQ0nUmfrbx3U4KueDnlHm5wdh8FFeKnoaKKh%2FTK18StOPhwG9Xo5mqXAxvw%2F79YQwwDR%2BnAKQQ4izVXioB84qcppWB7IqjU45z4CE17OvF1Dw%2BoTFqxtz8dxwtogBnF9MjIl%2Fin%2BK8s3hM9laIn0TiCbTAXL0T798bPXqx36p3chrv0O%2BGC9Xaj48Ecv8U8UEeBvUEsDlTepiU5OvlpeNGvpnKF0RvUooWhIjnx6GeBapXCQYTw9DNg6%2FOC3gZjp76oNTj9Kz6Jqobxb9NDqc08vcKReOpcsQV2K8InXFaXW3aI6Ofr1k48rp7CX7rx%2Bv1UKPsfvzQU0Kc83i2VdILmd2%2FyX55zT9luN2%2BCu4nKfwPcK%2FCvDVU%2BpHh8%2BLaldIf1fA5h3ndT6Fln9%2FW%2F9Ce1vndfvJtnPVO2xhm3qbafHVCN1X363UXHq9xuVD8OSD29Z8pZ5cZrern9cAdGW%2Fuib%2Fud%2BVK0L9a42r6C90kL8KzxwLQw9NkIQJL0ASU8M%2BVG0KsUdgdvpgP%2F6NqqP0%2FgHZFUfGEijZLHpiIgvV5%2FBltrj8Qd7XQd5p4P%2B7tJo30NMO6VGBwahSPMYiaaBYoLY6uEnciyhhh1Z%2FvvacG%2Frjpsvnpzs0B1Id6fmX8119l88XnOxe%2FuGrzzHcdu7UtY3%2B2vmXN5zUyj3ZcPl8p1sZSs6%2FnGXtwrV7Ka0XZdz83fwjjINpZWYw85lL8BRK4nGyIir2RiOsEyipuEcIakpGjWgBjLiHWOgj0Yi34gW1kKPxHt2Na5q%2Blwg1RdRSpFDNzosb44YJXnAfoEOpZW%2F%2F6u1lhYA6leevezbI26zNHO811M2dc5HFxpk4i1jPC0s21%2FBWW5DnPQbn2X1WK43%2FaM2n18DfSoybbNHijFpamzXI31eRibGUOxSu%2FlT96YZlq1Yt20DaSBuG6knw2eusHs5EPBfNmVvHKdaQzcDfz9ZsXmLDWGXy2U5OsYSsIn8CS12jQIyD12KKqZrLPy7mSPdICmd6WGHG8NDZkkHuE4h9TU8FpmUO%2FVjC%2FEinToFyoNDz2p9XD6g78WgQdPG7Z3R0T%2FZ5dTM9lsL8Ktek7szl2L%2BgQwGgwkZHc2g5Su7NvVqwGy2Ua4KSXUwt1X4PaM5paaEu6jQ5zVFyNabxvUksVt2T%2F4VeamYPlLtffdQsk%2B2sUTY%2FzDXl%2F05W53%2FBz9UK3p7LjapZ2ZxOm%2BUlZXrL3HHGqO8%2BwVroDaCTTnTxitMxmiAAYQzVJQH%2Bnj3oIHnPaN6Zq6sNSLjBl8tKgVr2mj%2F9CWi9dnKca8rBQBsd5R1tzVlgrl5pbnPw6kZclCr2CHxMnHohLz%2B3KRQokzALyeIKFU1TNCiayJdoHvDYe7K6mZLm8S3uJ9dojuaJ62%2FqN%2FtjQxnSnhnKPw%2BLNrLi8ZKyJ3x1YhiI1aNAtP6NzCGzYv3DmaGh%2FLvQZnt0evgIhTFV0kE%2FPYxAnOHhCQUZdCWY5JWJwMzlAGl1mpNbDU7yyGnhRMILsYhH3VRAijrPcBU8%2FCj1Y9NY6cnGVW0CjTLaz7E3epvaT%2FLtTV72Rs%2B0WVVmd0dz%2FMGTI5F0OsIviaqDlbbO5X6xT3PeXbXHRtf%2Fz%2Bfdka%2BeKPr8KF7IF4vBsT9MFPuPJMBTBMq9hQxXelQ%2Bbewnf18ap4Ib%2BmSMrtDU5zqlD8QANa5MBGh%2FOwOvSDfcV2d66mfEWsbGWmIz6nsyZDWQSmqmxDneYyvjHPmRXHZxeueyRGLZzvRioKnGto9nIPkibAJA16adcOZRQr1iAP3bUyBR7T4RgAWTKxhkCYFwshq%2B7iV9r0whk50cmRcTg4fy5x4OmmNkHndIA2%2BYuMbmE9dwGYB4KFTsvnDE6Ah47r%2FfE3AYI%2BoXADpkdlENcZ8OZEEf8FFGZNxMs6ZLpG3SUFLL7Q2kcFU%2FA%2FJsw%2BvWDa%2F7emewLaoeibaF1B9qUNnuqWK3%2BUfXYVL1v%2FomD15xxeDkPnXTOKSVcCbDGtOu0YQNpGAP7U1HU58UrqGu8xIbHtkQ3LVhb7Dx46ET3Ffcm1q0YcOizNmf3bC3VjWfAcpSv3MyTlgJ23FHQgmgvk%2Bgk8pL0mcCDOn08MDAQlf%2B%2FSlTZ1z12fnqntOhbOTL9%2FZdevbAPN%2Byby1f%2FuUtC%2Fixm8ZBo59LTXEW060hGrTDplNprWd58fwB%2Fb%2FE27BdS%2Fs7U%2BrGVCeQ46nzaw9QccnmZerGZZs3Yw9aVHt%2BKh6HN4ti6lxIhT%2FwahnZtWwzlY9QHQ2c79C%2BdxzvVDKy8GqKWQERO9YAKbpsDUTLdWV5dE8PVPjvj9pqw7ah%2FPFVtkit7aj6G5xY9mfJrCz1j1e0BcnPol4UjtrCdbahIVtd2HaURujnFJR8CuOuUUfhrGhgKKgjCYNSvCc1WKlEp8wHUaAYynFNyzZn%2B2MnYv36dbMDBTonl%2FT%2Fma5IKAyEGz%2B4eRnVtaX6tss2o34u8mWorFtuFgm4A6qK%2Fyp%2FgLEBVat5WnPDdKA574ubuFJ%2FIUfZ%2FY2Nt6mN%2BZNNTSTaeI56gKwkXerTe9DDHUw8%2FH35FY3nNN7GGuBKWhrV9ep%2B0k1WjNWVaHkW1yA%2BQHWNu8rtBw2a5YXuE40rs7%2FGA%2Bj09V3hA98yRnFPOGr8ltGlsFdD%2F7tRce3LH6Trcneuiy7K7J3khKu%2B3qUaXPWaX7T6%2FKfj9BX2eZq2XAcZT79u1ClJzUtHUqfqSMWBcZS43Ena0cUGLgpkKxB1QM%2B0Fxz10wgg6r5rltnFpH05pepUq3Y2HfYqeKRntmUFNz%2BXmcOs1H31U6cC6RTVLfCg7RNBF1UF2%2FwBgu0fFQtPEU1sSg3VcNsR7dWq3af87tUFn1l3ltXpaJxpNvtcZkH2WmMst3JqRpxUH%2BWC0E1qOGtP66s1MYv%2BVLu8%2FXFXvV%2FZbunYYBeVN64ls0ur6NzpV9xzlmQwB5qC4Tq70WC0tk8dWJXeHvkD0h9zJOM0vD86%2F1NJMaIAolctvlByferCsqOKDKceOfUu1PsmoFCamV5mCrMUOCi6V6FJosMF22AcrKJgQDVhfYh6tepp%2FlYgvnCEAbJQ1L0rOpajEmRcasMiPfxhgGoVo4rwreQpV6fUJHH2e8fa1s2c13Apl1b89a58ozdoap2sjgLN9uISl7P1DrulyeIkt0zr6JjWocoPOZsaXPb6jtqBblsgsaRre2xHi4nELm0MhG1%2Bx1SXwLpFi53b%2BaHRYo%2FIrbZtuWAKu5cSEXfybnnmUCaXGTpQr0xK2O2WWY76f%2BnAjNVf7nCZHU5XqIkTnpt6VtvsFlPXg1031g%2FVRdpkkyVpD7jnmax88QwDvg%2F66NnMRdRXTcGTmQc3cuINwN5IQqi0yzb%2BYFVHuVqI5s4ADfg5oE4ybDLd28mFSFmYvRoomsWXEdLU2Wl3GJy93ZNb%2Fd5gqmNaqJZSO1l6PVRy0nZIj%2F45EetjLguh1rLqR%2BSK0hO6NrsqcNX8zoUdjQYDJ7tb4os6%2Bi%2BY0qpY2AWlnLRDWdGFTfGY1gV0zNAtJ7pdo24se0D88AwLY%2FgZmE9iuP4V5v7CSR%2FRThaHLh%2BUeBkXwU6BC7lGOevK65udTv%2BtS%2FPfW7qj3ljTcj3b9OkbV85t8xsMj7Ddj7DGpthZKwKPvso%2Fc%2F1K9aLE12fMWLV1y1D9ua8lyJdWXr%2FbG%2BnoCFutf%2FmLILe39ITUV4igr3876fpX5g2zeB52sWnIL4fXHlgeUzOx5QfIvJQyrKQE9wHUqVq%2BPEaOrz0wVvNbJZVSfsuMzxN4l9PkedFzw9V5Dj%2BnzpgoT4ZxCxJfC5RWLc74YVHxKlExCYt0JAOMatREhHBSCAtSfod6x6Ls8HCWECLwXZ9nd5Dz1T24JUdWs6fU3%2B%2BfcnT49Qe%2BkBs%2BwdsMZgPXMp3U5S958snPP%2FEE7bvkOPCuTUDTUQ%2FUzirLhML9yPahoe1D5Fj5jWsaoveyP00PehdUAHk%2FseDVWsvDWXXXsyn%2F4wfpXc2V3%2FQxli3jl%2F5hj%2F83avSCfpTNxOEKLmTjxOEKuxgNlsQn0xgct724mhynupNW1Ph6o3RYS3%2F%2B2TJrzLlkFz%2Bip3qCHKf6eqW02QJLjBYuuj4sobhCWqa%2FYHGEHpcnumuWSOhxeaL7sOakNR6vvmo%2BYcfFA8UFXEPZf9UjyudIOyNwx%2Fi90DdsujS%2FFX2UAwvWSVK4NxaMhAGw3oowp%2Fuc8CTi7D2rBgZWwb%2F60faR7SPsEbjkXy4G0XaqhXPwe2cePjxjxuHD6ssQuR1fq6PF0E%2Bo2t1nePTn8TUmxz%2FA3crMoCc7egESuoTHYc7mYdg6etORoOhR7BBGD%2BqJopELrl4S6cJNRtEAsLP%2FOdvnJq0Wo0GolY2Et9VFB2Kf%2B4bZvVyxfOMz3WdFfSIryj6DwWghre7aQbdiDrkTL3A3vNDuDpk93HqXwam%2BbWmUJZfNn5ozKV5Pmmq8PF%2FjVY%2B2Tlk2M2RzSXKjmbQ4RZcQavEYrN%2F9rlXwtIQqzxQNMzPPfHYLvuPoO9TbT8bpGw5CQPGd%2BSyX%2FCyf0Vxjd2R9NmsunnXYa8xGHzn%2BsSfM5J0y0DZEXWWxkXjcR75KBLNLHi7XvX2G8VOrf4Ykg0AMdBESIpo7MgAfyakA6rkqpI6UjNs0px7cMV%2BD5BF49Tez1VGnYmq0WIijp985m4Sn2gJR9b07riPPFo97OYbUZbxJCpot7H%2FlpZBicglCPN7WOfJkcHqc3ElWqvvz%2F1E6bIQrG%2Btz6WkM1SM9FBTR7FSs8KyBBytSmNEoquJNFN5EQyTiCrnKDx1h58yxCepPHU5nxGoxEQeeOZi2m80DxNxncVhr6BmEfUarxejw%2BWSiHhWk19bSY7aKR5MsteblJpfTLtjimBouXsm3d3djjYM%2BwEW0El9dM%2FueVRWIsXwe43R7SgbVZqrnqoJ1X%2FkuF7pcgf8duv4q6vayV5U9zMV91GxO59UUjW8rHV6u799WzKMT7umRCXbYUKM%2BfoaCcwgaoqZUtmodV3p%2BX7akb4dnU9B9La38RPFUG2SCC90tVA4XwEFhyOpZZrUCsgWYHsczLFBBVGNtstoN1bw0Z%2BO4fYIbvZVt4EUcJEKOhHeincWqONw%2Bq6w5Go%2BWGOSR7LhKV%2BKBqbBPpfUvOf9QqkpDyVhBeyyZQGMsdA5FBUqvFMtUyGq9vjnsAJU4UcrxldP1CCaofyDkSAifoP5QwWx%2BSyUGxp75BzGAvtG7uQ38LehlyEQMeh0TeE6Bm7tYdXqdkt0uOb3kfYlNwmOdDyacOq%2FqlFo1v%2BPTmTi3E%2FglC9W11b34A22zmLzvb231Q0L2Bgg60OTW4YdstO%2BYOJnO38TtpH7zy9ymokWyA79qlVSn38HtpFlImFnhu3b4boNWXklOXV0Iwo7lQ1hrZyPFcwtjwFP7iEKSHSSJw509kh8kj6pr%2BH1jR7km9vcvqN9657vffefkv%2BfKxge1X%2B7RdjYUPIESN7gTvRkB%2FRMYtEkaVkdHApmdBPpnKmz0n1xSWFOyVIuLrinZwpoCRe6kyiVZoHX088F%2BUX4%2BWKS4iBTP0IWxGtZgOdMaV4KTayqHQF%2FVihBwTbgDXTCmKoOBJeNhwJMzEVjtjIFLuU38fPR7hqNG1JS7g%2FqRCuy3vmQ3W9Vu8qbVbP%2BSzazGRJH83MzP90Ck2m31mMjP8TiLn5uwD2Ugr2PFvPQjB5BnSJvQxGQZZEB%2BLopqzGzDbMmbkAPkZVJjeO5FzOSBKCgJze2ZS4Gemc9twrwY6u9H61iUQTcRvtdT9RW3tRxAWwFs2tcuJRnI6xjmBdWjbgFNRHMHiF1uHYBfUR%2Fut5Ug2jXAaT96%2B9RH%2FFToRwIzGbKmVJ1AZQnoabSB1yyIg7ByAridHApPMjyw0OiV6RjSbCuzwLAvFizBliWJua1tsuAgvNPbmljYbpt8lkWam7b3XZiOiKJskMOtmfScnsbPW208knwjuXrXK4Q1iKIgNyYXXDVT9C2Ye%2F78GQ5BEEXfFdde2RwauOysdJNL5AzCy84ard%2FnGAVN8alecnFdgu5Gbd5DJTL%2BhHZK0vApVy3OfU8XTSJg1TlssivsPYUlIqvn66PzrVTymCc4wgF6SDNR0pDf%2B9Gp%2BVnsUH5WtpHYsuhOaey8zdwLN47V8MTbm78g687%2BP3cx6tcAeNpjYGRgYGBk8s0%2FzBIfz2%2FzlUGeZQNQhOFCWfF0GP0%2F8P8c1jusIkAuBwMTSBQAYwQM6HjaY2BkYGAV%2Bd8KJgP%2FXWG9wwAUQQGLAYqPBl942n1TvUoDQRCe1VM8kWARjNrZGIurBAsRBIuA2vkAFsJiKTYW4guIjT5ARMgTxCLoA1hcb5OgDyGHrY7f7M65e8fpLF%2B%2B2W%2FnZ2eTmGfaIJi5I0qGDlZZcD51QzTTJirZPAI9JIwVA%2BwT8L5nOdMaV0AuMJ%2BicRHq8of6LSD18fzq8ds7xjpwBnQiSI9V5QVl6NwPvgM15NXn%2FAtWZyj3W0HjEXitOc%2FdIdbetPdFTZ%2BP6t%2BX7xU0%2Fk6GJtOe1%2FB3arN0%2Fpmz1J4UZc%2BD6ExwjD7vioeGd5HvhvU%2BR%2BDZcGZ6YBPNfAi0G97iBPwFXqph2cW8%2BD7kjMfwtinHb6kLb6Wygk3cZytSEoptGrlScdHtLPeri1JKueACMZfU1ViJG1Sq5E43dIt7SZZFl1zuRhb%2FGOs44xFVDbrJzB5tYs35OmaXTrEmkv0DajnMWQB42mNgYNCCwk0MLxheMPrhgUuY2JiUmOqY2pjWMD1hdmPOY%2B5hPsLCwWLEksSyiOUOawzrLrYiti%2FsCuxJ7Kc45DiSOPZxmnG2cG7jvMelweXDNYXrEbcBdxf3KR4OngheLd443g18fHwZfFv4NfiX8T8TEBIIEZggsEpQS7BMcJsQl5CFUI3QAWEp4RLhCyJaIldEbURXiJ4RYxEzE0sQ2yD2TzxIfJkEk4SeRJbENIkNEg8k%2FklqSGZITpE8InlL8p2UmVSG1A6pb9Jx0ltkjGSmyDySlZF1kc2RnSK7R%2FaZnJ5cmdwB%2BST5SwpuCvsUjRTLFHcoOShNU9qhzKespGyhXKV8SPmBCpOKgUqcyjSVR6omqgmqe9RE1OrUnqkHqO9R%2F6FholGgsUZzgeYZLTUtL60WbS7tKh0OnQydXTpvdGV0O3S%2F6Gnopekt0ruhz6fvpl%2Bnv0n%2Fh4GdQYvBJUMhwwTDdYYvjFSM4oxmGd0zVjK2M84w3mYiYZJgssLkkqmO6TzTF2Z2ZjVmd8ylzP3MJ5lfsRCwcLJoszhhyWXpZdlhecZKxirHapbVPesF1ndsJGwCbBbZ%2FLA1sn1jZ2XXY3fFXsM%2Bz36V%2FS8HD4cGh2OOTI51ThJOK5zeOUs4OzmXOS9wPuUi4JLgss7lm2uU6zY3NrcSty1u39zN3Mvct7l%2F8xDzMPLw88jyaPM44ynkaeEZ59niucqLyUvPKwgAn3OqOQAAAQAAARcApwARAAAAAAACAAAAAQABAAAAQAAuAAAAAHjarZK9TgJBEMf%2Fd6CRaAyRhMLqCgsbL4ciglTGRPEjSiSKlnLycXJ86CEniU%2FhM9jYWPgIFkYfwd6nsDD%2Bd1mBIIUx3mZnfzs3MzszuwDCeIYG8UUwQxmAFgxxPeeuyxrmcaNYxzTuFAewi0fFQSTxqXgM11pC8TgS2oPiCUS1d8Uh8ofiSczpYcVT5LjiCPlY8Qui%2BncOr7D02y6%2FBTCrP%2Fm%2Bb5bdTrPi2I26Z9qNGtbRQBMdXMJBGRW0YOCecxEWYoiTCvxrYBunqHPdoX2bLOyrMKlZg8thDETw5K7Itci1TXlGy0124QRZZLDFU%2FexhxztMozlosTpMH6ZPge0L%2BOKGnFKjJ4WRwppHPL0PP3SI2P9jLQwFOu3GRhDfkeyDo%2F%2FG7IHgzllZQxLdquvrdCyBVvat3seJlYo06gxapUxhU2JWnFygR03sSxnEkvcpf5Y5eibGq315TDp7fKWm8zbUVl71Aqq%2FZtNnlkWmLnQtno9ycvXYbA6W2pF3aKfCayyC0Ja7Fr%2FPW70%2FHO4YM0OKxFvzf0C1MyPjwAAeNpt1VWUU2cYRuHsgxenQt1d8%2F3JOUnqAyR1d%2FcCLQVKO22pu7tQd3d3d3d3d3cXmGzumrWy3pWLs%2FNdPDMpZaWu1783l1Lpf14MnfzO6FbqVupfGkD30iR60JNe9KYP09CXfvRnAAMZxGCGMG3pW6ZjemZgKDMyEzMzC7MyG7MzB3MyF3MzD%2FMyH%2FOzAAuyEAuzCIuyGIuzBGWCRIUqOQU16jRYkqVYmmVYluVYng6GMZwRNGmxAiuyEiuzCquyGquzBmuyFmuzDuuyHuuzARuyERuzCZuyGZuzBVuyFVuzDduyHdszklGMZgd2ZAw7MZZxjGdnJrALu9LJbuzOHkxkT%2FZib%2FZhX%2FZjfw7gQA7iYA7hUA7jcI7gSI7iaI7hWI7jeE7gRE7iZE5hEqdyGqdzBmdyFmdzDudyHudzARdyERdzCZdyGZdzBVdyFVdzDddyHddzAzdyEzdzC7dyG7dzB3dyF3dzD%2FdyH%2FfzAA%2FyEA%2FzCI%2FyGI%2FzBE%2FyFE%2FzDM%2FyHM%2FzAi%2FyEi%2FzCq%2FyGq%2FzBm%2FyFm%2FzDu%2FyHu%2FzAR%2FyER%2FzCZ%2FyGZ%2FzBV%2FyFV%2FzDd%2FyHd%2FzAz%2FyEz%2FzC7%2FyG7%2FzB3%2FyF3%2FzD%2F9mpYwsy7pl3bMeWc%2BsV9Y765NNk%2FXN%2BmX9swHZwGxQNjgb0nPkmInjR0V7Uq%2FOsaPL5Y7ylE3l8tQNN7kVt%2BrmbuHW3LrbcDvam1rtzVvdm50TxrU%2FDBvRtZUY1rV5a3jXFn550Wo%2FXDNWK3dFmh7X9LimxzU9qulRTY9qelTTo5rlKLt2wk7YiaprL%2ByFvbAX9pK9ZC%2FZS%2FaSvWQv2Uv2kr1kr2KvYq9ir2KvYq9ir2KvYq9ir2Kvaq9qr2qvaq9qr2qvaq9qr2qvai%2B3l9vL7eX2cnu5vdxebi%2B3l9sr7BV2CjuFncJOYaewU9gp7NTs1LyrZq9mr2avZq9mr2avZq9mr26vbq9ur26vbq9ur26vbq9ur26vYa9hr2GvYa9hr2GvYa%2FR7oXuQ%2Feh%2B2j%2FUU7e3C3cqc%2FV3fYdof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D92H7kP3ofvQfeg%2BdB%2B6D92H7kP3ofvQfRT29B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6j6nuG3Ya7U5q%2F0hN3nCTW3Grbu4Wrs%2FrP%2Bk%2F6T%2FpP%2Bk%2F6T%2FpP%2Bk%2B6T7pPek86TzpPOk86TzpOuk66TrpOuk66TrpOlWmPu%2F36zrpOuk66TrpOuk66TrpOvl%2FPek76TvpO%2Bk76TvpO%2Bk76TvpO%2Bk76TvpO7V9t%2BqtVs%2FOaOURU6bo6PgPt6rZbwAAAAABVFDDFwAA%29%20format%28%27woff%27%29%2Curl%28data%3Aapplication%2Ffont%2Dsfnt%3Bbase64%2CAAEAAAAPAIAAAwBwRkZUTW0ql9wAAAD8AAAAHEdERUYBRAAEAAABGAAAACBPUy8yZ7lriQAAATgAAABgY21hcNqt44EAAAGYAAAGcmN2dCAAKAL4AAAIDAAAAARnYXNw%2F%2F8AAwAACBAAAAAIZ2x5Zn1dwm8AAAgYAACUpGhlYWQFTS%2FYAACcvAAAADZoaGVhCkQEEQAAnPQAAAAkaG10eNLHIGAAAJ0YAAADdGxvY2Fv%2B5XOAACgjAAAAjBtYXhwAWoA2AAAorwAAAAgbmFtZbMsoJsAAKLcAAADonBvc3S6o%2BU1AACmgAAACtF3ZWJmwxhUUAAAsVQAAAAGAAAAAQAAAADMPaLPAAAAANB2gXUAAAAA0HZzlwABAAAADgAAABgAAAAAAAIAAQABARYAAQAEAAAAAgAAAAMEiwGQAAUABAMMAtAAAABaAwwC0AAAAaQAMgK4AAAAAAUAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAFVLV04AQAAg%2F%2F8DwP8QAAAFFAB7AAAAAQAAAAAAAAAAAAAAIAABAAAABQAAAAMAAAAsAAAACgAAAdwAAQAAAAAEaAADAAEAAAAsAAMACgAAAdwABAGwAAAAaABAAAUAKAAgACsAoAClIAogLyBfIKwgvSISIxsl%2FCYBJvonCScP4APgCeAZ4CngOeBJ4FngYOBp4HngieCX4QnhGeEp4TnhRuFJ4VnhaeF54YnhleGZ4gbiCeIW4hniIeIn4jniSeJZ4mD4%2F%2F%2F%2FAAAAIAAqAKAApSAAIC8gXyCsIL0iEiMbJfwmASb6JwknD%2BAB4AXgEOAg4DDgQOBQ4GDgYuBw4IDgkOEB4RDhIOEw4UDhSOFQ4WDhcOGA4ZDhl%2BIA4gniEOIY4iHiI%2BIw4kDiUOJg%2BP%2F%2F%2F%2F%2Fj%2F9r%2FZv9i4Ajf5N%2B132nfWd4F3P3aHdoZ2SHZE9kOIB0gHCAWIBAgCiAEH%2F4f%2BB%2F3H%2FEf6x%2FlH3wfdh9wH2ofZB9jH10fVx9RH0sfRR9EHt4e3B7WHtUezh7NHsUevx65HrMIFQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAACjAAAAAAAAAA1AAAAIAAAACAAAAADAAAAKgAAACsAAAAEAAAAoAAAAKAAAAAGAAAApQAAAKUAAAAHAAAgAAAAIAoAAAAIAAAgLwAAIC8AAAATAAAgXwAAIF8AAAAUAAAgrAAAIKwAAAAVAAAgvQAAIL0AAAAWAAAiEgAAIhIAAAAXAAAjGwAAIxsAAAAYAAAl%2FAAAJfwAAAAZAAAmAQAAJgEAAAAaAAAm%2BgAAJvoAAAAbAAAnCQAAJwkAAAAcAAAnDwAAJw8AAAAdAADgAQAA4AMAAAAeAADgBQAA4AkAAAAhAADgEAAA4BkAAAAmAADgIAAA4CkAAAAwAADgMAAA4DkAAAA6AADgQAAA4EkAAABEAADgUAAA4FkAAABOAADgYAAA4GAAAABYAADgYgAA4GkAAABZAADgcAAA4HkAAABhAADggAAA4IkAAABrAADgkAAA4JcAAAB1AADhAQAA4QkAAAB9AADhEAAA4RkAAACGAADhIAAA4SkAAACQAADhMAAA4TkAAACaAADhQAAA4UYAAACkAADhSAAA4UkAAACrAADhUAAA4VkAAACtAADhYAAA4WkAAAC3AADhcAAA4XkAAADBAADhgAAA4YkAAADLAADhkAAA4ZUAAADVAADhlwAA4ZkAAADbAADiAAAA4gYAAADeAADiCQAA4gkAAADlAADiEAAA4hYAAADmAADiGAAA4hkAAADtAADiIQAA4iEAAADvAADiIwAA4icAAADwAADiMAAA4jkAAAD1AADiQAAA4kkAAAD%2FAADiUAAA4lkAAAEJAADiYAAA4mAAAAETAAD4%2FwAA%2BP8AAAEUAAH1EQAB9REAAAEVAAH2qgAB9qoAAAEWAAYCCgAAAAABAAABAAAAAAAAAAAAAAAAAAAAAQACAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAEAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAL4AAAAAf%2F%2FAAIAAgAoAAABaAMgAAMABwAusQEALzyyBwQA7TKxBgXcPLIDAgDtMgCxAwAvPLIFBADtMrIHBgH8PLIBAgDtMjMRIRElMxEjKAFA%2Fujw8AMg%2FOAoAtAAAQBkAGQETARMAFsAAAEyFh8BHgEdATc%2BAR8BFgYPATMyFhcWFRQGDwEOASsBFx4BDwEGJi8BFRQGBwYjIiYvAS4BPQEHDgEvASY2PwEjIiYnJjU0Nj8BPgE7AScuAT8BNhYfATU0Njc2AlgPJgsLCg%2BeBxYIagcCB57gChECBgMCAQIRCuCeBwIHaggWB54PCikiDyYLCwoPngcWCGoHAgee4AoRAgYDAgECEQrgngcCB2oIFgeeDwopBEwDAgECEQrgngcCB2oIFgeeDwopIg8mCwsKD54HFghqBwIHnuAKEQIGAwIBAhEK4J4HAgdqCBYHng8KKSIPJgsLCg%2BeBxYIagcCB57gChECBgAAAAABAAAAAARMBEwAIwAAATMyFhURITIWHQEUBiMhERQGKwEiJjURISImPQE0NjMhETQ2AcLIFR0BXhUdHRX%2Boh0VyBUd%2FqIVHR0VAV4dBEwdFf6iHRXIFR3%2BohUdHRUBXh0VyBUdAV4VHQAAAAABAHAAAARABEwARQAAATMyFgcBBgchMhYPAQ4BKwEVITIWDwEOASsBFRQGKwEiJj0BISImPwE%2BATsBNSEiJj8BPgE7ASYnASY2OwEyHwEWMj8BNgM5%2BgoFCP6UBgUBDAoGBngGGAp9ARMKBgZ4BhgKfQ8LlAsP%2Fu0KBgZ4BhgKff7tCgYGeAYYCnYFBv6UCAUK%2BhkSpAgUCKQSBEwKCP6UBgwMCKAIDGQMCKAIDK4LDw8LrgwIoAgMZAwIoAgMDAYBbAgKEqQICKQSAAABAGQABQSMBK4AOwAAATIXFhcjNC4DIyIOAwchByEGFSEHIR4EMzI%2BAzUzBgcGIyInLgEnIzczNjcjNzM%2BATc2AujycDwGtSM0QDkXEys4MjAPAXtk%2FtQGAZZk%2FtQJMDlCNBUWOUA0I64eYmunznYkQgzZZHABBdpkhhQ%2BH3UErr1oaS1LMCEPCx4uTzJkMjJkSnRCKw8PIjBKK6trdZ4wqndkLzVkV4UljQAAAgB7AAAETASwAD4ARwAAASEyHgUVHAEVFA4FKwEHITIWDwEOASsBFRQGKwEiJj0BISImPwE%2BATsBNSEiJj8BPgE7ARE0NhcRMzI2NTQmIwGsAV5DakIwFgwBAQwWMEJqQ7ICASAKBgZ4BhgKigsKlQoP%2FvUKBgZ4BhgKdf71CgYGeAYYCnUPtstALS1ABLAaJD8yTyokCwsLJCpQMkAlGmQMCKAIDK8LDg8KrwwIoAgMZAwIoAgMAdsKD8j%2B1EJWVEAAAAEAyAGQBEwCvAAPAAATITIWHQEUBiMhIiY9ATQ2%2BgMgFR0dFfzgFR0dArwdFcgVHR0VyBUdAAAAAgDIAAAD6ASwACUAQQAAARUUBisBFRQGBx4BHQEzMhYdASE1NDY7ATU0NjcuAT0BIyImPQEXFRQWFx4BFAYHDgEdASE1NCYnLgE0Njc%2BAT0BA%2BgdFTJjUVFjMhUd%2FOAdFTJjUVFjMhUdyEE3HCAgHDdBAZBBNxwgIBw3QQSwlhUdZFuVIyOVW5YdFZaWFR2WW5UjI5VbZB0VlshkPGMYDDI8MgwYYzyWljxjGAwyPDIMGGM8ZAAAAAEAAAAAAAAAAAAAAAAxAAAB%2F%2FIBLATCBEEAFgAAATIWFzYzMhYVFAYjISImNTQ2NyY1NDYB9261LCwueKqqeP0ST3FVQgLYBEF3YQ6teHmtclBFaw4MGZnXAAAAAgAAAGQEsASvABoAHgAAAB4BDwEBMzIWHQEhNTQ2OwEBJyY%2BARYfATc2AyEnAwL2IAkKiAHTHhQe%2B1AeFB4B1IcKCSAkCm9wCXoBebbDBLMTIxC7%2FRYlFSoqFSUC6rcQJBQJEJSWEPwecAIWAAAAAAQAAABkBLAETAALABcAIwA3AAATITIWBwEGIicBJjYXARYUBwEGJjURNDYJATYWFREUBicBJjQHARYGIyEiJjcBNjIfARYyPwE2MhkEfgoFCP3MCBQI%2FcwIBQMBCAgI%2FvgICgoDjAEICAoKCP74CFwBbAgFCvuCCgUIAWwIFAikCBQIpAgUBEwKCP3JCAgCNwgK2v74CBQI%2FvgIBQoCJgoF%2FvABCAgFCv3aCgUIAQgIFID%2BlAgKCggBbAgIpAgIpAgAAAAD%2F%2FD%2F8AS6BLoACQANABAAAAAyHwEWFA8BJzcTAScJAQUTA%2BAmDpkNDWPWXyL9mdYCZv4f%2FrNuBLoNmQ4mDlzWYP50%2FZrWAmb8anABTwAAAAEAAAAABLAEsAAPAAABETMyFh0BITU0NjsBEQEhArz6FR384B0V%2Bv4MBLACiv3aHRUyMhUdAiYCJgAAAAEADgAIBEwEnAAfAAABJTYWFREUBgcGLgE2NzYXEQURFAYHBi4BNjc2FxE0NgFwAoUnMFNGT4gkV09IQv2oWEFPiCRXT0hCHQP5ow8eIvzBN1EXGSltchkYEAIJm%2F2iKmAVGilucRoYEQJ%2FJioAAAACAAn%2F%2BAS7BKcAHQApAAAAMh4CFQcXFAcBFgYPAQYiJwEGIycHIi4CND4BBCIOARQeATI%2BATQmAZDItoNOAQFOARMXARY7GikT%2Fu13jgUCZLaDTk6DAXKwlFZWlLCUVlYEp06DtmQCBY15%2Fu4aJRg6FBQBEk0BAU6Dtsi2g1tWlLCUVlaUsJQAAQBkAFgErwREABkAAAE%2BAh4CFRQOAwcuBDU0PgIeAQKJMHt4dVg2Q3mEqD4%2Bp4V4Qzhadnh5A7VESAUtU3ZAOXmAf7JVVbJ%2FgHk5QHZTLQVIAAAAAf%2FTAF4EewSUABgAAAETNjIXEyEyFgcFExYGJyUFBiY3EyUmNjMBl4MHFQeBAaUVBhH%2BqoIHDxH%2Bqf6qEQ8Hgv6lEQYUAyABYRMT%2Fp8RDPn%2BbxQLDPb3DAsUAZD7DBEAAv%2FTAF4EewSUABgAIgAAARM2MhcTITIWBwUTFgYnJQUGJjcTJSY2MwUjFwc3Fyc3IycBl4MHFQeBAaUVBhH%2BqoIHDxH%2Bqf6qEQ8Hgv6lEQYUAfPwxUrBw0rA6k4DIAFhExP%2BnxEM%2Bf5vFAsM9vcMCxQBkPsMEWSO4ouM5YzTAAABAAAAAASwBLAAJgAAATIWHQEUBiMVFBYXBR4BHQEUBiMhIiY9ATQ2NyU%2BAT0BIiY9ATQ2Alh8sD4mDAkBZgkMDwr7ggoPDAkBZgkMJj6wBLCwfPouaEsKFwbmBRcKXQoPDwpdChcF5gYXCktoLvp8sAAAAA0AAAAABLAETAAPABMAIwAnACsALwAzADcARwBLAE8AUwBXAAATITIWFREUBiMhIiY1ETQ2FxUzNSkBIgYVERQWMyEyNjURNCYzFTM1BRUzNSEVMzUFFTM1IRUzNQchIgYVERQWMyEyNjURNCYFFTM1IRUzNQUVMzUhFTM1GQR%2BCg8PCvuCCg8PVWQCo%2F3aCg8PCgImCg8Pc2T8GGQDIGT8GGQDIGTh%2FdoKDw8KAiYKDw%2F872QDIGT8GGQDIGQETA8K%2B%2BYKDw8KBBoKD2RkZA8K%2FqIKDw8KAV4KD2RkyGRkZGTIZGRkZGQPCv6iCg8PCgFeCg9kZGRkZMhkZGRkAAAEAAAAAARMBEwADwAfAC8APwAAEyEyFhURFAYjISImNRE0NikBMhYVERQGIyEiJjURNDYBITIWFREUBiMhIiY1ETQ2KQEyFhURFAYjISImNRE0NjIBkBUdHRX%2BcBUdHQJtAZAVHR0V%2FnAVHR39vQGQFR0dFf5wFR0dAm0BkBUdHRX%2BcBUdHQRMHRX%2BcBUdHRUBkBUdHRX%2BcBUdHRUBkBUd%2FagdFf5wFR0dFQGQFR0dFf5wFR0dFQGQFR0AAAkAAAAABEwETAAPAB8ALwA%2FAE8AXwBvAH8AjwAAEzMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYhMzIWHQEUBisBIiY9ATQ2ATMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYhMzIWHQEUBisBIiY9ATQ2ATMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYhMzIWHQEUBisBIiY9ATQ2MsgVHR0VyBUdHQGlyBUdHRXIFR0dAaXIFR0dFcgVHR389cgVHR0VyBUdHQGlyBUdHRXIFR0dAaXIFR0dFcgVHR389cgVHR0VyBUdHQGlyBUdHRXIFR0dAaXIFR0dFcgVHR0ETB0VyBUdHRXIFR0dFcgVHR0VyBUdHRXIFR0dFcgVHf5wHRXIFR0dFcgVHR0VyBUdHRXIFR0dFcgVHR0VyBUd%2FnAdFcgVHR0VyBUdHRXIFR0dFcgVHR0VyBUdHRXIFR0ABgAAAAAEsARMAA8AHwAvAD8ATwBfAAATMzIWHQEUBisBIiY9ATQ2KQEyFh0BFAYjISImPQE0NgEzMhYdARQGKwEiJj0BNDYpATIWHQEUBiMhIiY9ATQ2ATMyFh0BFAYrASImPQE0NikBMhYdARQGIyEiJj0BNDYyyBUdHRXIFR0dAaUCvBUdHRX9RBUdHf6FyBUdHRXIFR0dAaUCvBUdHRX9RBUdHf6FyBUdHRXIFR0dAaUCvBUdHRX9RBUdHQRMHRXIFR0dFcgVHR0VyBUdHRXIFR3%2BcB0VyBUdHRXIFR0dFcgVHR0VyBUd%2FnAdFcgVHR0VyBUdHRXIFR0dFcgVHQAAAAABACYALAToBCAAFwAACQE2Mh8BFhQHAQYiJwEmND8BNjIfARYyAdECOwgUB7EICPzxBxUH%2FoAICLEHFAirBxYB3QI7CAixBxQI%2FPAICAGACBQHsQgIqwcAAQBuAG4EQgRCACMAAAEXFhQHCQEWFA8BBiInCQEGIi8BJjQ3CQEmND8BNjIXCQE2MgOIsggI%2FvUBCwgIsggVB%2F70%2FvQHFQiyCAgBC%2F71CAiyCBUHAQwBDAcVBDuzCBUH%2FvT%2B9AcVCLIICAEL%2FvUICLIIFQcBDAEMBxUIsggI%2FvUBDAcAAwAX%2F%2BsExQSZABkAJQBJAAAAMh4CFRQHARYUDwEGIicBBiMiLgI0PgEEIg4BFB4BMj4BNCYFMzIWHQEzMhYdARQGKwEVFAYrASImPQEjIiY9ATQ2OwE1NDYBmcSzgk1OASwICG0HFQj%2B1HeOYrSBTU2BAW%2BzmFhYmLOZWFj%2BvJYKD0sKDw8KSw8KlgoPSwoPDwpLDwSZTYKzYo15%2FtUIFQhsCAgBK01NgbTEs4JNWJmzmFhYmLOZIw8KSw8KlgoPSwoPDwpLDwqWCg9LCg8AAAMAF%2F%2FrBMUEmQAZACUANQAAADIeAhUUBwEWFA8BBiInAQYjIi4CND4BBCIOARQeATI%2BATQmBSEyFh0BFAYjISImPQE0NgGZxLOCTU4BLAgIbQcVCP7Ud45itIFNTYEBb7OYWFiYs5lYWP5YAV4KDw8K%2FqIKDw8EmU2Cs2KNef7VCBUIbAgIAStNTYG0xLOCTViZs5hYWJizmYcPCpYKDw8KlgoPAAAAAAIAFwAXBJkEsAAPAC0AAAEzMhYVERQGKwEiJjURNDYFNRYSFRQOAiIuAjU0EjcVDgEVFB4BMj4BNTQmAiZkFR0dFWQVHR0BD6fSW5vW6tabW9KnZ3xyxejFcnwEsB0V%2FnAVHR0VAZAVHeGmPv7ZuHXWm1tbm9Z1uAEnPqY3yHh0xXJyxXR4yAAEAGQAAASwBLAADwAfAC8APwAAATMyFhURFAYrASImNRE0NgEzMhYVERQGKwEiJjURNDYBMzIWFREUBisBIiY1ETQ2BTMyFh0BFAYrASImPQE0NgQBlgoPDwqWCg8P%2Ft6WCg8PCpYKDw%2F%2B3pYKDw8KlgoPD%2F7elgoPDwqWCg8PBLAPCvuCCg8PCgR%2BCg%2F%2BcA8K%2FRIKDw8KAu4KD%2F7UDwr%2BPgoPDwoBwgoPyA8K%2BgoPDwr6Cg8AAAAAAgAaABsElgSWAEcATwAAATIfAhYfATcWFwcXFh8CFhUUDwIGDwEXBgcnBwYPAgYjIi8CJi8BByYnNycmLwImNTQ%2FAjY%2FASc2Nxc3Nj8CNhIiBhQWMjY0AlghKSYFMS0Fhj0rUAMZDgGYBQWYAQ8YA1AwOIYFLDIFJisfISkmBTEtBYY8LFADGQ0ClwYGlwINGQNQLzqFBS0xBSYreLJ%2BfrJ%2BBJYFmAEOGQJQMDmGBSwxBiYrHiIoJgYxLAWGPSxRAxkOApcFBZcCDhkDUTA5hgUtMAYmKiAhKCYGMC0Fhj0sUAIZDgGYBf6ZfrF%2BfrEABwBkAAAEsAUUABMAFwAhACUAKQAtADEAAAEhMhYdASEyFh0BITU0NjMhNTQ2FxUhNQERFAYjISImNREXETMRMxEzETMRMxEzETMRAfQBLCk7ARMKD%2Fu0DwoBEzspASwBLDsp%2FUQpO2RkZGRkZGRkBRQ7KWQPCktLCg9kKTtkZGT%2B1PzgKTs7KQMgZP1EArz9RAK8%2FUQCvP1EArwAAQAMAAAFCATRAB8AABMBNjIXARYGKwERFAYrASImNREhERQGKwEiJjURIyImEgJsCBUHAmAIBQqvDwr6Cg%2F%2B1A8K%2BgoPrwoFAmoCYAcH%2FaAICv3BCg8PCgF3%2FokKDw8KAj8KAAIAZAAAA%2BgEsAARABcAAAERFBYzIREUBiMhIiY1ETQ2MwEjIiY9AQJYOykBLB0V%2FOAVHR0VA1L6FR0EsP5wKTv9dhUdHRUETBUd%2FnAdFfoAAwAXABcEmQSZAA8AGwAwAAAAMh4CFA4CIi4CND4BBCIOARQeATI%2BATQmBTMyFhURMzIWHQEUBisBIiY1ETQ2AePq1ptbW5vW6tabW1ubAb%2FoxXJyxejFcnL%2BfDIKD68KDw8K%2BgoPDwSZW5vW6tabW1ub1urWmztyxejFcnLF6MUNDwr%2B7Q8KMgoPDwoBXgoPAAAAAAL%2FnAAABRQEsAALAA8AACkBAyMDIQEzAzMDMwEDMwMFFP3mKfIp%2FeYBr9EVohTQ%2Fp4b4BsBkP5wBLD%2B1AEs%2FnD%2B1AEsAAAAAAIAZAAABLAEsAAVAC8AAAEzMhYVETMyFgcBBiInASY2OwERNDYBMzIWFREUBiMhIiY1ETQ2OwEyFh0BITU0NgImyBUdvxQLDf65DSYN%2FrkNCxS%2FHQJUMgoPDwr75goPDwoyCg8DhA8EsB0V%2Fj4XEP5wEBABkBAXAcIVHfzgDwr%2BogoPDwoBXgoPDwqvrwoPAAMAFwAXBJkEmQAPABsAMQAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JgUzMhYVETMyFgcDBiInAyY2OwERNDYB4%2BrWm1tbm9bq1ptbW5sBv%2BjFcnLF6MVycv58lgoPiRUKDd8NJg3fDQoViQ8EmVub1urWm1tbm9bq1ps7csXoxXJyxejFDQ8K%2Fu0XEP7tEBABExAXARMKDwAAAAMAFwAXBJkEmQAPABsAMQAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JiUTFgYrAREUBisBIiY1ESMiJjcTNjIB4%2BrWm1tbm9bq1ptbW5sBv%2BjFcnLF6MVycv7n3w0KFYkPCpYKD4kVCg3fDSYEmVub1urWm1tbm9bq1ps7csXoxXJyxejFAf7tEBf%2B7QoPDwoBExcQARMQAAAAAAIAAAAABLAEsAAZADkAABMhMhYXExYVERQGBwYjISImJyY1EzQ3Ez4BBSEiBgcDBhY7ATIWHwEeATsBMjY%2FAT4BOwEyNicDLgHhAu4KEwO6BwgFDBn7tAweAgYBB7kDEwKX%2FdQKEgJXAgwKlgoTAiYCEwr6ChMCJgITCpYKDAJXAhIEsA4K%2FXQYGf5XDB4CBggEDRkBqRkYAowKDsgOC%2F4%2BCw4OCpgKDg4KmAoODgsBwgsOAAMAFwAXBJkEmQAPABsAJwAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JgUXFhQPAQYmNRE0NgHj6tabW1ub1urWm1tbmwG%2F6MVycsXoxXJy%2Fov9ERH9EBgYBJlbm9bq1ptbW5vW6tabO3LF6MVycsXoxV2%2BDCQMvgwLFQGQFQsAAQAXABcEmQSwACgAAAE3NhYVERQGIyEiJj8BJiMiDgEUHgEyPgE1MxQOAiIuAjQ%2BAjMyA7OHBwsPCv6WCwQHhW2BdMVycsXoxXKWW5vW6tabW1ub1nXABCSHBwQL%2FpYKDwsHhUxyxejFcnLFdHXWm1tbm9bq1ptbAAAAAAIAFwABBJkEsAAaADUAAAE3NhYVERQGIyEiJj8BJiMiDgEVIzQ%2BAjMyEzMUDgIjIicHBiY1ETQ2MyEyFg8BFjMyPgEDs4cHCw8L%2FpcLBAeGboF0xXKWW5vWdcDrllub1nXAnIYHCw8LAWgKBQiFboJ0xXIEJIcHBAv%2BlwsPCweGS3LFdHXWm1v9v3XWm1t2hggFCgFoCw8LB4VMcsUAAAAKAGQAAASwBLAADwAfAC8APwBPAF8AbwB%2FAI8AnwAAEyEyFhURFAYjISImNRE0NgUhIgYVERQWMyEyNjURNCYFMzIWHQEUBisBIiY9ATQ2MyEyFh0BFAYjISImPQE0NgczMhYdARQGKwEiJj0BNDYzITIWHQEUBiMhIiY9ATQ2BzMyFh0BFAYrASImPQE0NjMhMhYdARQGIyEiJj0BNDYHMzIWHQEUBisBIiY9ATQ2MyEyFh0BFAYjISImPQE0Nn0EGgoPDwr75goPDwPA%2FK4KDw8KA1IKDw%2F9CDIKDw8KMgoPD9IBwgoPDwr%2BPgoPD74yCg8PCjIKDw%2FSAcIKDw8K%2Fj4KDw%2B%2BMgoPDwoyCg8P0gHCCg8PCv4%2BCg8PvjIKDw8KMgoPD9IBwgoPDwr%2BPgoPDwSwDwr7ggoPDwoEfgoPyA8K%2FK4KDw8KA1IKD2QPCjIKDw8KMgoPDwoyCg8PCjIKD8gPCjIKDw8KMgoPDwoyCg8PCjIKD8gPCjIKDw8KMgoPDwoyCg8PCjIKD8gPCjIKDw8KMgoPDwoyCg8PCjIKDwAAAAACAAAAAARMBLAAGQAjAAABNTQmIyEiBh0BIyIGFREUFjMhMjY1ETQmIyE1NDY7ATIWHQEDhHVT%2FtRSdmQpOzspA4QpOzsp%2FageFMgUHgMgyFN1dlLIOyn9qCk7OykCWCk7lhUdHRWWAAIAZAAABEwETAAJADcAABMzMhYVESMRNDYFMhcWFREUBw4DIyIuAScuAiMiBwYjIicmNRE%2BATc2HgMXHgIzMjc2fTIKD2QPA8AEBRADIUNAMRwaPyonKSxHHlVLBwgGBQ4WeDsXKC4TOQQpLUUdZ1AHBEwPCvvNBDMKDzACBhH%2BWwYGO1AkDQ0ODg8PDzkFAwcPAbY3VwMCAwsGFAEODg5XCAAAAwAAAAAEsASXACEAMQBBAAAAMh4CFREUBisBIiY1ETQuASAOARURFAYrASImNRE0PgEDMzIWFREUBisBIiY1ETQ2ITMyFhURFAYrASImNRE0NgHk6N6jYw8KMgoPjeT%2B%2BuSNDwoyCg9joyqgCAwMCKAIDAwCYKAIDAwIoAgMDASXY6PedP7UCg8PCgEsf9FyctF%2F%2FtQKDw8KASx03qP9wAwI%2FjQIDAwIAcwIDAwI%2FjQIDAwIAcwIDAAAAAACAAAA0wRHA90AFQA5AAABJTYWFREUBiclJisBIiY1ETQ2OwEyBTc2Mh8BFhQPARcWFA8BBiIvAQcGIi8BJjQ%2FAScmND8BNjIXAUEBAgkMDAn%2B%2FhUZ%2BgoPDwr6GQJYeAcUByIHB3h4BwciBxQHeHgHFAciBwd3dwcHIgcUBwMurAYHCv0SCgcGrA4PCgFeCg%2BEeAcHIgcUB3h4BxQHIgcHd3cHByIHFAd4eAcUByIICAAAAAACAAAA0wNyA90AFQAvAAABJTYWFREUBiclJisBIiY1ETQ2OwEyJTMWFxYVFAcGDwEiLwEuATc2NTQnJjY%2FATYBQQECCQwMCf7%2BFRn6Cg8PCvoZAdIECgZgWgYLAwkHHQcDBkhOBgMIHQcDLqwGBwr9EgoHBqwODwoBXgoPZAEJgaGafwkBAQYXBxMIZ36EaggUBxYFAAAAAAMAAADEBGID7AAbADEASwAAATMWFxYVFAYHBgcjIi8BLgE3NjU0JicmNj8BNgUlNhYVERQGJyUmKwEiJjURNDY7ATIlMxYXFhUUBwYPASIvAS4BNzY1NCcmNj8BNgPHAwsGh0RABwoDCQcqCAIGbzs3BgIJKgf9ggECCQwMCf7%2BFRn6Cg8PCvoZAdIECgZgWgYLAwkHHQcDBkhOBgMIHQcD7AEJs9lpy1QJAQYiBhQIlrJarEcJFAYhBb6sBgcK%2FRIKBwasDg8KAV4KD2QBCYGhmn8JAQEGFwcTCGd%2BhGoIFQYWBQAAAAANAAAAAASwBLAACQAVABkAHQAhACUALQA7AD8AQwBHAEsATwAAATMVIxUhFSMRIQEjFTMVIREjESM1IQURIREhESERBSM1MwUjNTMBMxEhETM1MwEzFSMVIzUjNTM1IzUhBREhEQcjNTMFIzUzASM1MwUhNSEB9GRk%2FnBkAfQCvMjI%2FtTIZAJY%2B7QBLAGQASz84GRkArxkZP1EyP4MyGQB9MhkyGRkyAEs%2FUQBLGRkZAOEZGT%2BDGRkAfT%2B1AEsA4RkZGQCWP4MZMgBLAEsyGT%2B1AEs%2FtQBLMhkZGT%2BDP4MAfRk%2FtRkZGRkyGTI%2FtQBLMhkZGT%2B1GRkZAAAAAAJAAAAAASwBLAAAwAHAAsADwATABcAGwAfACMAADcjETMTIxEzASMRMxMjETMBIxEzASE1IRcjNTMXIzUzBSM1M2RkZMhkZAGQyMjIZGQBLMjI%2FOD%2B1AEsyGRkyGRkASzIyMgD6PwYA%2Bj8GAPo%2FBgD6PwYA%2Bj7UGRkW1tbW1sAAAIAAAAKBKYEsAANABUAAAkBFhQHAQYiJwETNDYzBCYiBhQWMjYB9AKqCAj%2BMAgUCP1WAQ8KAUM7Uzs7UzsEsP1WCBQI%2FjAICAKqAdsKD807O1Q7OwAAAAADAAAACgXSBLAADQAZACEAAAkBFhQHAQYiJwETNDYzIQEWFAcBBiIvAQkBBCYiBhQWMjYB9AKqCAj%2BMAgUCP1WAQ8KAwYCqggI%2FjAIFAg4Aaj9RP7TO1M7O1M7BLD9VggUCP4wCAgCqgHbCg%2F9VggUCP4wCAg4AaoCvM07O1Q7OwAAAAABAGQAAASwBLAAJgAAASEyFREUDwEGJjURNCYjISIPAQYWMyEyFhURFAYjISImNRE0PwE2ASwDOUsSQAgKDwr9RBkSQAgFCgK8Cg8PCvyuCg8SixIEsEv8fBkSQAgFCgO2Cg8SQAgKDwr8SgoPDwoDzxkSixIAAAABAMj%2F%2FwRMBLAACgAAEyEyFhURCQERNDb6AyAVHf4%2B%2Fj4dBLAdFfuCAbz%2BQwR%2FFR0AAAAAAwAAAAAEsASwABUARQBVAAABISIGBwMGHwEeATMhMjY%2FATYnAy4BASMiBg8BDgEjISImLwEuASsBIgYVERQWOwEyNj0BNDYzITIWHQEUFjsBMjY1ETQmASEiBg8BBhYzITI2LwEuAQM2%2FkQLEAFOBw45BhcKAcIKFwY%2BDgdTARABVpYKFgROBBYK%2FdoKFgROBBYKlgoPDwqWCg8PCgLuCg8PCpYKDw%2F%2Bsf4MChMCJgILCgJYCgsCJgITBLAPCv7TGBVsCQwMCWwVGAEtCg%2F%2BcA0JnAkNDQmcCQ0PCv12Cg8PCpYKDw8KlgoPDwoCigoP%2FagOCpgKDg4KmAoOAAAAAAQAAABkBLAETAAdACEAKQAxAAABMzIeAh8BMzIWFREUBiMhIiY1ETQ2OwE%2BBAEVMzUEIgYUFjI2NCQyFhQGIiY0AfTIOF00JAcGlik7Oyn8GCk7OymWAgknM10ByGT%2Bz76Hh76H%2Fu9WPDxWPARMKTs7FRQ7Kf2oKTs7KQJYKTsIG0U1K%2F7UZGRGh76Hh74IPFY8PFYAAAAAAgA1AAAEsASvACAAIwAACQEWFx4BHwEVITUyNi8BIQYHBh4CMxUhNTY3PgE%2FAQEDIQMCqQGBFCgSJQkK%2Fl81LBFS%2Fnk6IgsJKjIe%2FpM4HAwaBwcBj6wBVKIEr%2FwaMioTFQECQkJXLd6RWSIuHAxCQhgcDCUNDQPu%2FVoByQAAAAADAGQAAAPwBLAAJwAyADsAAAEeBhUUDgMjITU%2BATURNC4EJzUFMh4CFRQOAgclMzI2NTQuAisBETMyNjU0JisBAvEFEzUwOyodN1htbDD%2BDCk7AQYLFyEaAdc5dWM%2BHy0tEP6Pi05pESpTPnbYUFJ9Xp8CgQEHGB0zOlIuQ3VONxpZBzMoAzsYFBwLEAkHRwEpSXNDM1s6KwkxYUopOzQb%2FK5lUFqBAAABAMgAAANvBLAAGQAAARcOAQcDBhYXFSE1NjcTNjQuBCcmJzUDbQJTQgeECSxK%2Fgy6Dq0DAw8MHxUXDQYEsDkTNSj8uTEoBmFhEFIDQBEaExAJCwYHAwI5AAAAAAL%2FtQAABRQEsAAlAC8AAAEjNC4FKwERFBYfARUhNTI%2BAzURIyIOBRUjESEFIxEzByczESM3BRQyCAsZEyYYGcgyGRn%2BcAQOIhoWyBkYJhMZCwgyA%2Bj7m0tLfX1LS30DhBUgFQ4IAwH8rhYZAQJkZAEFCRUOA1IBAwgOFSAVASzI%2FOCnpwMgpwACACH%2FtQSPBLAAJQAvAAABIzQuBSsBERQWHwEVITUyPgM1ESMiDgUVIxEhEwc1IRUnNxUhNQRMMggLGRMmGBnIMhkZ%2FnAEDiIaFsgZGCYTGQsIMgPoQ6f84KenAyADhBUgFQ4IAwH9dhYZAQJkZAEFCRUOAooBAwgOFSAVASz7gn1LS319S0sABAAAAAAEsARMAA8AHwAvAD8AABMhMhYdARQGIyEiJj0BNDYTITIWHQEUBiMhIiY9ATQ2EyEyFh0BFAYjISImPQE0NhMhMhYdARQGIyEiJj0BNDYyAlgVHR0V%2FagVHR0VA%2BgVHR0V%2FBgVHR0VAyAVHR0V%2FOAVHR0VBEwVHR0V%2B7QVHR0ETB0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR0ABAAAAAAEsARMAA8AHwAvAD8AABMhMhYdARQGIyEiJj0BNDYDITIWHQEUBiMhIiY9ATQ2EyEyFh0BFAYjISImPQE0NgMhMhYdARQGIyEiJj0BNDb6ArwVHR0V%2FUQVHR2zBEwVHR0V%2B7QVHR3dArwVHR0V%2FUQVHR2zBEwVHR0V%2B7QVHR0ETB0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR0ABAAAAAAEsARMAA8AHwAvAD8AAAE1NDYzITIWHQEUBiMhIiYBNTQ2MyEyFh0BFAYjISImEzU0NjMhMhYdARQGIyEiJgE1NDYzITIWHQEUBiMhIiYB9B0VAlgVHR0V%2FagVHf5wHRUD6BUdHRX8GBUdyB0VAyAVHR0V%2FOAVHf7UHRUETBUdHRX7tBUdA7ZkFR0dFWQVHR3%2B6WQVHR0VZBUdHf7pZBUdHRVkFR0d%2FulkFR0dFWQVHR0AAAQAAAAABLAETAAPAB8ALwA%2FAAATITIWHQEUBiMhIiY9ATQ2EyEyFh0BFAYjISImPQE0NhMhMhYdARQGIyEiJj0BNDYTITIWHQEUBiMhIiY9ATQ2MgRMFR0dFfu0FR0dFQRMFR0dFfu0FR0dFQRMFR0dFfu0FR0dFQRMFR0dFfu0FR0dBEwdFWQVHR0VZBUd%2FtQdFWQVHR0VZBUd%2FtQdFWQVHR0VZBUd%2FtQdFWQVHR0VZBUdAAgAAAAABLAETAAPAB8ALwA%2FAE8AXwBvAH8AABMzMhYdARQGKwEiJj0BNDYpATIWHQEUBiMhIiY9ATQ2ATMyFh0BFAYrASImPQE0NikBMhYdARQGIyEiJj0BNDYBMzIWHQEUBisBIiY9ATQ2KQEyFh0BFAYjISImPQE0NgEzMhYdARQGKwEiJj0BNDYpATIWHQEUBiMhIiY9ATQ2MmQVHR0VZBUdHQFBAyAVHR0V%2FOAVHR3%2B6WQVHR0VZBUdHQFBAyAVHR0V%2FOAVHR3%2B6WQVHR0VZBUdHQFBAyAVHR0V%2FOAVHR3%2B6WQVHR0VZBUdHQFBAyAVHR0V%2FOAVHR0ETB0VZBUdHRVkFR0dFWQVHR0VZBUd%2FtQdFWQVHR0VZBUdHRVkFR0dFWQVHf7UHRVkFR0dFWQVHR0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR0dFWQVHR0VZBUdAAAG%2F5wAAASwBEwAAwATACMAKgA6AEoAACEjETsCMhYdARQGKwEiJj0BNDYTITIWHQEUBiMhIiY9ATQ2BQc1IzUzNQUhMhYdARQGIyEiJj0BNDYTITIWHQEUBiMhIiY9ATQ2AZBkZJZkFR0dFWQVHR0VAfQVHR0V%2FgwVHR3%2B%2BqfIyAHCASwVHR0V%2FtQVHR0VAlgVHR0V%2FagVHR0ETB0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR36fUtkS68dFWQVHR0VZBUd%2FtQdFWQVHR0VZBUdAAAABgAAAAAFFARMAA8AEwAjACoAOgBKAAATMzIWHQEUBisBIiY9ATQ2ASMRMwEhMhYdARQGIyEiJj0BNDYFMxUjFSc3BSEyFh0BFAYjISImPQE0NhMhMhYdARQGIyEiJj0BNDYyZBUdHRVkFR0dA2dkZPyuAfQVHR0V%2FgwVHR0EL8jIp6f75gEsFR0dFf7UFR0dFQJYFR0dFf2oFR0dBEwdFWQVHR0VZBUd%2B7QETP7UHRVkFR0dFWQVHchkS319rx0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR0AAAAAAgAAAMgEsAPoAA8AEgAAEyEyFhURFAYjISImNRE0NgkCSwLuHywsH%2F0SHywsBIT%2B1AEsA%2BgsH%2F12HywsHwKKHyz9RAEsASwAAwAAAAAEsARMAA8AFwAfAAATITIWFREUBiMhIiY1ETQ2FxE3BScBExEEMhYUBiImNCwEWBIaGhL7qBIaGkr3ASpKASXs%2FNJwTk5wTgRMGhL8DBIaGhID9BIaZP0ftoOcAT7%2B4AH0dE5vT09vAAAAAAIA2wAFBDYEkQAWAB4AAAEyHgEVFAcOAQ8BLgQnJjU0PgIWIgYUFjI2NAKIdcZzRkWyNjYJIV5YbSk8RHOft7eCgreCBJF4ynVzj23pPz4IIWZomEiEdVijeUjDgriBgbgAAAACABcAFwSZBJkADwAXAAAAMh4CFA4CIi4CND4BAREiDgEUHgEB4%2BrWm1tbm9bq1ptbW5sBS3TFcnLFBJlbm9bq1ptbW5vW6tab%2FG8DVnLF6MVyAAACAHUAAwPfBQ8AGgA1AAABHgYVFA4DBy4DNTQ%2BBQMOAhceBBcWNj8BNiYnLgInJjc2IyYCKhVJT1dOPiUzVnB9P1SbfEokP0xXUEm8FykoAwEbITEcExUWAgYCCQkFEikMGiACCAgFD0iPdXdzdYdFR4BeRiYEBTpjl1lFh3ZzeHaQ%2Ff4hS4I6JUEnIw4IBwwQIgoYBwQQQSlZtgsBAAAAAwAAAAAEywRsAAwAKgAvAAABNz4CHgEXHgEPAiUhMhcHISIGFREUFjMhMjY9ATcRFAYjISImNRE0NgkBBzcBA%2BhsAgYUFR0OFgoFBmz9BQGQMje7%2FpApOzspAfQpO8i7o%2F5wpbm5Azj%2BlqE3AWMD9XMBAgIEDw4WKgsKc8gNuzsp%2FgwpOzsptsj%2BtKW5uaUBkKW5%2Ftf%2BljKqAWMAAgAAAAAEkwRMABsANgAAASEGByMiBhURFBYzITI2NTcVFAYjISImNRE0NgUBFhQHAQYmJzUmDgMHPgY3NT4BAV4BaaQ0wyk7OykB9Ck7yLml%2FnClubkCfwFTCAj%2BrAcLARo5ZFRYGgouOUlARioTAQsETJI2Oyn%2BDCk7OymZZ6W5uaUBkKW5G%2F7TBxUH%2Fs4GBAnLAQINFjAhO2JBNB0UBwHSCgUAAAAAAgAAAAAEnQRMAB0ANQAAASEyFwchIgYVERQWMyEyNj0BNxUUBiMhIiY1ETQ2CQE2Mh8BFhQHAQYiLwEmND8BNjIfARYyAV4BXjxDsv6jKTs7KQH0KTvIuaX%2BcKW5uQHKAYsHFQdlBwf97QcVB%2FgHB2UHFQdvCBQETBexOyn%2BDCk7OylFyNulubmlAZCluf4zAYsHB2UHFQf97AcH%2BAcVB2UHB28HAAAAAQAKAAoEpgSmADsAAAkBNjIXARYGKwEVMzU0NhcBFhQHAQYmPQEjFTMyFgcBBiInASY2OwE1IxUUBicBJjQ3ATYWHQEzNSMiJgE%2BAQgIFAgBBAcFCqrICggBCAgI%2FvgICsiqCgUH%2FvwIFAj%2B%2BAgFCq%2FICgj%2B%2BAgIAQgICsivCgUDlgEICAj%2B%2BAgKyK0KBAf%2B%2FAcVB%2F73BwQKrcgKCP74CAgBCAgKyK0KBAcBCQcVBwEEBwQKrcgKAAEAyAAAA4QETAAZAAATMzIWFREBNhYVERQGJwERFAYrASImNRE0NvpkFR0B0A8VFQ%2F%2BMB0VZBUdHQRMHRX%2BSgHFDggV%2FBgVCA4Bxf5KFR0dFQPoFR0AAAABAAAAAASwBEwAIwAAEzMyFhURATYWFREBNhYVERQGJwERFAYnAREUBisBIiY1ETQ2MmQVHQHQDxUB0A8VFQ%2F%2BMBUP%2FjAdFWQVHR0ETB0V%2FkoBxQ4IFf5KAcUOCBX8GBUIDgHF%2FkoVCA4Bxf5KFR0dFQPoFR0AAAABAJ0AGQSwBDMAFQAAAREUBicBERQGJwEmNDcBNhYVEQE2FgSwFQ%2F%2BMBUP%2FhQPDwHsDxUB0A8VBBr8GBUIDgHF%2FkoVCA4B4A4qDgHgDggV%2FkoBxQ4IAAAAAQDIABYEMwQ2AAsAABMBFhQHAQYmNRE0NvMDLhIS%2FNISGRkEMv4OCx4L%2Fg4LDhUD6BUOAAIAyABkA4QD6AAPAB8AABMzMhYVERQGKwEiJjURNDYhMzIWFREUBisBIiY1ETQ2%2BsgVHR0VyBUdHQGlyBUdHRXIFR0dA%2BgdFfzgFR0dFQMgFR0dFfzgFR0dFQMgFR0AAAEAyABkBEwD6AAPAAABERQGIyEiJjURNDYzITIWBEwdFfzgFR0dFQMgFR0DtvzgFR0dFQMgFR0dAAAAAAEAAAAZBBMEMwAVAAABETQ2FwEWFAcBBiY1EQEGJjURNDYXAfQVDwHsDw%2F%2BFA8V%2FjAPFRUPAmQBthUIDv4gDioO%2FiAOCBUBtv47DggVA%2BgVCA4AAAH%2F%2FgACBLMETwAjAAABNzIWFRMUBiMHIiY1AwEGJjUDAQYmNQM0NhcBAzQ2FwEDNDYEGGQUHgUdFWQVHQL%2BMQ4VAv4yDxUFFQ8B0gIVDwHSAh0ETgEdFfwYFR0BHRUBtf46DwkVAbX%2BOQ4JFAPoFQkP%2Fj4BthQJDv49AbYVHQAAAQEsAAAD6ARMABkAAAEzMhYVERQGKwEiJjURAQYmNRE0NhcBETQ2A1JkFR0dFWQVHf4wDxUVDwHQHQRMHRX8GBUdHRUBtv47DggVA%2BgVCA7%2BOwG2FR0AAAIAZADIBLAESAALABsAAAkBFgYjISImNwE2MgEhMhYdARQGIyEiJj0BNDYCrgH1DwkW%2B%2B4WCQ8B9Q8q%2FfcD6BUdHRX8GBUdHQQ5%2FeQPFhYPAhwP%2FUgdFWQVHR0VZBUdAAEAiP%2F8A3UESgAFAAAJAgcJAQN1%2FqABYMX92AIoA4T%2Bn%2F6fxgIoAiYAAAAAAQE7%2F%2FwEKARKAAUAAAkBJwkBNwQo%2FdnGAWH%2Bn8YCI%2F3ZxgFhAWHGAAIAFwAXBJkEmQAPADMAAAAyHgIUDgIiLgI0PgEFIyIGHQEjIgYdARQWOwEVFBY7ATI2PQEzMjY9ATQmKwE1NCYB4%2BrWm1tbm9bq1ptbW5sBfWQVHZYVHR0Vlh0VZBUdlhUdHRWWHQSZW5vW6tabW1ub1urWm7odFZYdFWQVHZYVHR0Vlh0VZBUdlhUdAAAAAAIAFwAXBJkEmQAPAB8AAAAyHgIUDgIiLgI0PgEBISIGHQEUFjMhMjY9ATQmAePq1ptbW5vW6tabW1ubAkX%2BDBUdHRUB9BUdHQSZW5vW6tabW1ub1urWm%2F5%2BHRVkFR0dFWQVHQACABcAFwSZBJkADwAzAAAAMh4CFA4CIi4CND4BBCIPAScmIg8BBhQfAQcGFB8BFjI%2FARcWMj8BNjQvATc2NC8BAePq1ptbW5vW6tabW1ubAeUZCXh4CRkJjQkJeHgJCY0JGQl4eAkZCY0JCXh4CQmNBJlbm9bq1ptbW5vW6tabrQl4eAkJjQkZCXh4CRkJjQkJeHgJCY0JGQl4eAkZCY0AAgAXABcEmQSZAA8AJAAAADIeAhQOAiIuAjQ%2BAQEnJiIPAQYUHwEWMjcBNjQvASYiBwHj6tabW1ub1urWm1tbmwEVVAcVCIsHB%2FIHFQcBdwcHiwcVBwSZW5vW6tabW1ub1urWm%2F4xVQcHiwgUCPEICAF3BxUIiwcHAAAAAAMAFwAXBJkEmQAPADsASwAAADIeAhQOAiIuAjQ%2BAQUiDgMVFDsBFjc%2BATMyFhUUBgciDgUHBhY7ATI%2BAzU0LgMTIyIGHQEUFjsBMjY9ATQmAePq1ptbW5vW6tabW1ubAT8dPEIyIRSDHgUGHR8UFw4TARkOGhITDAIBDQ6tBx4oIxgiM0Q8OpYKDw8KlgoPDwSZW5vW6tabW1ub1urWm5ELHi9PMhkFEBQQFRIXFgcIBw4UHCoZCBEQKDhcNi9IKhsJ%2FeMPCpYKDw8KlgoPAAADABcAFwSZBJkADwAfAD4AAAAyHgIUDgIiLgI0PgEFIyIGHQEUFjsBMjY9ATQmAyMiBh0BFBY7ARUjIgYdARQWMyEyNj0BNCYrARE0JgHj6tabW1ub1urWm1tbmwGWlgoPDwqWCg8PCvoKDw8KS0sKDw8KAV4KDw8KSw8EmVub1urWm1tbm9bq1ptWDwqWCg8PCpYKD%2F7UDwoyCg%2FIDwoyCg8PCjIKDwETCg8AAgAAAAAEsASwAC8AXwAAATMyFh0BHgEXMzIWHQEUBisBDgEHFRQGKwEiJj0BLgEnIyImPQE0NjsBPgE3NTQ2ExUUBisBIiY9AQ4BBzMyFh0BFAYrAR4BFzU0NjsBMhYdAT4BNyMiJj0BNDY7AS4BAg2WCg9nlxvCCg8PCsIbl2cPCpYKD2eXG8IKDw8KwhuXZw%2B5DwqWCg9EZheoCg8PCqgXZkQPCpYKD0RmF6gKDw8KqBdmBLAPCsIbl2cPCpYKD2eXG8IKDw8KwhuXZw8KlgoPZ5cbwgoP%2Fs2oCg8PCqgXZkQPCpYKD0RmF6gKDw8KqBdmRA8KlgoPRGYAAwAXABcEmQSZAA8AGwA%2FAAAAMh4CFA4CIi4CND4BBCIOARQeATI%2BATQmBxcWFA8BFxYUDwEGIi8BBwYiLwEmND8BJyY0PwE2Mh8BNzYyAePq1ptbW5vW6tabW1ubAb%2FoxXJyxejFcnKaQAcHfHwHB0AHFQd8fAcVB0AHB3x8BwdABxUHfHwHFQSZW5vW6tabW1ub1urWmztyxejFcnLF6MVaQAcVB3x8BxUHQAcHfHwHB0AHFQd8fAcVB0AHB3x8BwAAAAMAFwAXBJkEmQAPABsAMAAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JgcXFhQHAQYiLwEmND8BNjIfATc2MgHj6tabW1ub1urWm1tbmwG%2F6MVycsXoxXJyg2oHB%2F7ACBQIyggIagcVB0%2FFBxUEmVub1urWm1tbm9bq1ps7csXoxXJyxejFfWoHFQf%2BvwcHywcVB2oICE%2FFBwAAAAMAFwAXBJkEmQAPABgAIQAAADIeAhQOAiIuAjQ%2BAQUiDgEVFBcBJhcBFjMyPgE1NAHj6tabW1ub1urWm1tbmwFLdMVyQQJLafX9uGhzdMVyBJlbm9bq1ptbW5vW6tabO3LFdHhpAktB0P24PnLFdHMAAAAAAQAXAFMEsAP5ABUAABMBNhYVESEyFh0BFAYjIREUBicBJjQnAgoQFwImFR0dFf3aFxD99hACRgGrDQoV%2Ft0dFcgVHf7dFQoNAasNJgAAAAABAAAAUwSZA%2FkAFQAACQEWFAcBBiY1ESEiJj0BNDYzIRE0NgJ%2FAgoQEP32EBf92hUdHRUCJhcD8f5VDSYN%2FlUNChUBIx0VyBUdASMVCgAAAAEAtwAABF0EmQAVAAAJARYGIyERFAYrASImNREhIiY3ATYyAqoBqw0KFf7dHRXIFR3%2B3RUKDQGrDSYEif32EBf92hUdHRUCJhcQAgoQAAAAAQC3ABcEXQSwABUAAAEzMhYVESEyFgcBBiInASY2MyERNDYCJsgVHQEjFQoN%2FlUNJg3%2BVQ0KFQEjHQSwHRX92hcQ%2FfYQEAIKEBcCJhUdAAABAAAAtwSZBF0AFwAACQEWFAcBBiY1EQ4DBz4ENxE0NgJ%2FAgoQEP32EBdesKWBJAUsW4fHfhcEVf5VDSYN%2FlUNChUBIwIkRHVNabGdcUYHAQYVCgACAAAAAASwBLAAFQArAAABITIWFREUBi8BBwYiLwEmND8BJyY2ASEiJjURNDYfATc2Mh8BFhQPARcWBgNSASwVHRUOXvkIFAhqBwf5Xg4I%2FiH%2B1BUdFQ5e%2BQgUCGoHB%2FleDggEsB0V%2FtQVCA5e%2BQcHaggUCPleDhX7UB0VASwVCA5e%2BQcHaggUCPleDhUAAAACAEkASQRnBGcAFQArAAABFxYUDwEXFgYjISImNRE0Nh8BNzYyASEyFhURFAYvAQcGIi8BJjQ%2FAScmNgP2agcH%2BV4OCBX%2B1BUdFQ5e%2BQgU%2FQwBLBUdFQ5e%2BQgUCGoHB%2FleDggEYGoIFAj5Xg4VHRUBLBUIDl75B%2F3xHRX%2B1BUIDl75BwdqCBQI%2BV4OFQAAAAADABcAFwSZBJkADwAfAC8AAAAyHgIUDgIiLgI0PgEFIyIGFxMeATsBMjY3EzYmAyMiBh0BFBY7ATI2PQE0JgHj6tabW1ub1urWm1tbmwGz0BQYBDoEIxQ2FCMEOgQYMZYKDw8KlgoPDwSZW5vW6tabW1ub1urWm7odFP7SFB0dFAEuFB3%2BDA8KlgoPDwqWCg8AAAAABQAAAAAEsASwAEkAVQBhAGgAbwAAATIWHwEWHwEWFxY3Nj8BNjc2MzIWHwEWHwIeATsBMhYdARQGKwEiBh0BIREjESE1NCYrASImPQE0NjsBMjY1ND8BNjc%2BBAUHBhY7ATI2LwEuAQUnJgYPAQYWOwEyNhMhIiY1ESkBERQGIyERAQQJFAUFFhbEFQ8dCAsmxBYXERUXMA0NDgQZCAEPCj0KDw8KMgoP%2FnDI%2FnAPCjIKDw8KPQsOCRkFDgIGFRYfAp2mBwQK2woKAzMDEP41sQgQAzMDCgrnCwMe%2FokKDwGQAlgPCv6JBLAEAgIKDXYNCxUJDRZ2DQoHIREQFRh7LAkLDwoyCg8PCq8BLP7UrwoPDwoyCg8GBQQwgBkUAwgWEQ55ogcKDgqVCgSqnQcECo8KDgr8cg8KAXf%2BiQoPAZAAAAAAAgAAAAwErwSmACsASQAAATYWFQYCDgQuAScmByYOAQ8BBiY1NDc%2BATc%2BAScuAT4BNz4GFyYGBw4BDwEOBAcOARY2Nz4CNz4DNz4BBI0IGgItQmxhi2KORDg9EQQRMxuZGhYqCFUYEyADCQIQOjEnUmFch3vAJQgdHyaiPT44XHRZUhcYDhItIRmKcVtGYWtbKRYEBKYDEwiy%2Ft3IlVgxEQgLCwwBAQIbG5kYEyJAJghKFRE8Hzdff4U%2FM0o1JSMbL0QJGCYvcSEhHjZST2c1ODwEJygeW0AxJUBff1UyFAABAF0AHgRyBM8ATwAAAQ4BHgQXLgc%2BATceAwYHDgQHBicmNzY3PgQuAScWDgMmJy4BJyY%2BBDcGHgM3PgEuAicmPgMCjScfCic4R0IgBBsKGAoQAwEJEg5gikggBhANPkpTPhZINx8SBgsNJysiCRZOQQoVNU1bYC9QZwICBAUWITsoCAYdJzIYHw8YIiYHDyJJYlkEz0OAZVxEOSQMBzgXOB42IzElKRIqg5Gnl0o3Z0c6IAYWCwYNAwQFIDhHXGF1OWiqb0sdBxUknF0XNTQ8PEUiNWNROBYJDS5AQVUhVZloUSkAAAAAA%2F%2FcAGoE1ARGABsAPwBRAAAAMh4FFA4FIi4FND4EBSYGFxYVFAYiJjU0NzYmBwYHDgEXHgQyPgM3NiYnJgUHDgEXFhcWNj8BNiYnJicuAQIGpJ17bk85HBw6T257naKde25POhwcOU9uewIPDwYIGbD4sBcIBw5GWg0ECxYyWl%2BDiINfWjIWCwQMWv3%2FIw8JCSU4EC0OIw4DDywtCyIERi1JXGJcSSpJXGJcSS0tSVxiXEkqSVxiXEncDwYTOT58sLB8OzcTBg9FcxAxEiRGXkQxMEVeRSQSMRF1HiQPLxJEMA0EDyIPJQ8sSRIEAAAABP%2FcAAAE1ASwABQAJwA7AEwAACEjNy4ENTQ%2BBTMyFzczEzceARUUDgMHNz4BNzYmJyYlBgcOARceBBc3LgE1NDc2JhcHDgEXFhcWNj8CJyYnLgECUJQfW6l2WSwcOU9ue51SPUEglCYvbIknUGqYUi5NdiYLBAw2%2FVFGWg0ECxIqSExoNSlrjxcIB3wjDwkJJTgQLQ4MFgMsLQsieBRhdHpiGxVJXGJcSS0Pef5StVXWNBpacm5jGq0xiD8SMRFGckVzEDESHjxRQTkNmhKnbjs3EwZwJA8vEkQwDQQPC1YELEkSBAAAAAP%2FngAABRIEqwALABgAKAAAJwE2FhcBFgYjISImJSE1NDY7ATIWHQEhAQczMhYPAQ4BKwEiJi8BJjZaAoIUOBQCghUbJfryJRsBCgFZDwqWCg8BWf5DaNAUGAQ6BCMUNhQjBDoEGGQEKh8FIfvgIEdEhEsKDw8KSwLT3x0U%2FBQdHRT8FB0AAAABAGQAFQSwBLAAKAAAADIWFREBHgEdARQGJyURFh0BFAYvAQcGJj0BNDcRBQYmPQE0NjcBETQCTHxYAWsPFhgR%2FplkGhPNzRMaZP6ZERgWDwFrBLBYPv6t%2FrsOMRQpFA0M%2Bf75XRRAFRAJgIAJEBVAFF0BB%2FkMDRQpFDEOAUUBUz4AAAARAAAAAARMBLAAHQAnACsALwAzADcAOwA%2FAEMARwBLAE8AUwBXAFsAXwBjAAABMzIWHQEzMhYdASE1NDY7ATU0NjsBMhYdASE1NDYBERQGIyEiJjURFxUzNTMVMzUzFTM1MxUzNTMVMzUFFTM1MxUzNTMVMzUzFTM1MxUzNQUVMzUzFTM1MxUzNTMVMzUzFTM1A1JkFR0yFR37tB0VMh0VZBUdAfQdAQ8dFfwYFR1kZGRkZGRkZGRk%2FHxkZGRkZGRkZGT8fGRkZGRkZGRkZASwHRUyHRWWlhUdMhUdHRUyMhUd%2FnD9EhUdHRUC7shkZGRkZGRkZGRkyGRkZGRkZGRkZGTIZGRkZGRkZGRkZAAAAAMAAAAZBXcElwAZACUANwAAARcWFA8BBiY9ASMBISImPQE0NjsBATM1NDYBBycjIiY9ATQ2MyEBFxYUDwEGJj0BIyc3FzM1NDYEb%2FkPD%2FkOFZ%2F9qP7dFR0dFdECWPEV%2FamNetEVHR0VASMDGvkPD%2FkOFfG1jXqfFQSN5g4qDuYOCBWW%2FagdFWQVHQJYlhUI%2FpiNeh0VZBUd%2Fk3mDioO5g4IFZa1jXqWFQgAAAABAAAAAASwBEwAEgAAEyEyFhURFAYjIQERIyImNRE0NmQD6Ck7Oyn9rP7QZCk7OwRMOyn9qCk7%2FtQBLDspAlgpOwAAAAMAZAAABEwEsAAJABMAPwAAEzMyFh0BITU0NiEzMhYdASE1NDYBERQOBSIuBTURIRUUFRwBHgYyPgYmNTQ9AZbIFR3%2B1B0C0cgVHf7UHQEPBhgoTGacwJxmTCgYBgEsAwcNFB8nNkI2Jx8TDwUFAQSwHRX6%2BhUdHRX6%2BhUd%2FnD%2B1ClJalZcPigoPlxWakkpASz6CRIVKyclIRsWEAgJEBccISUnKhURCPoAAAAB%2F%2F8A1ARMA8IABQAAAQcJAScBBEzG%2Fp%2F%2Bn8UCJwGbxwFh%2Fp%2FHAicAAQAAAO4ETQPcAAUAAAkCNwkBBE392v3ZxgFhAWEDFf3ZAifH%2Fp8BYQAAAAAC%2F1EAZAVfA%2BgAFAApAAABITIWFREzMhYPAQYiLwEmNjsBESElFxYGKwERIRchIiY1ESMiJj8BNjIBlALqFR2WFQgO5g4qDuYOCBWW%2FoP%2BHOYOCBWWAYHX%2FRIVHZYVCA7mDioD6B0V%2FdkVDvkPD%2FkOFQGRuPkOFf5wyB0VAiYVDvkPAAABAAYAAASeBLAAMAAAEzMyFh8BITIWBwMOASMhFyEyFhQGKwEVFAYiJj0BIRUUBiImPQEjIiYvAQMjIiY0NjheERwEJgOAGB4FZAUsIf2HMAIXFR0dFTIdKh3%2B1B0qHR8SHQYFyTYUHh4EsBYQoiUY%2FiUVK8gdKh0yFR0dFTIyFR0dFTIUCQoDwR0qHQAAAAACAAAAAASwBEwACwAPAAABFSE1MzQ2MyEyFhUFIREhBLD7UMg7KQEsKTv9RASw%2B1AD6GRkKTs7Kcj84AACAAAAAAXcBEwADAAQAAATAxEzNDYzITIWFSEVBQEhAcjIyDspASwqOgH0ASz%2B1PtQASwDIP5wAlgpOzspyGT9RAK8AAEBRQAAA2sErwAbAAABFxYGKwERMzIWDwEGIi8BJjY7AREjIiY%2FATYyAnvmDggVlpYVCA7mDioO5g4IFZaWFQgO5g4qBKD5DhX9pxUO%2BQ8P%2BQ4VAlkVDvkPAAAAAQABAUQErwNrABsAAAEXFhQPAQYmPQEhFRQGLwEmND8BNhYdASE1NDYDqPkODvkPFf2oFQ%2F5Dg75DxUCWBUDYOUPKQ%2FlDwkUl5cUCQ%2FlDykP5Q8JFZWVFQkAAAAEAAAAAASwBLAACQAZAB0AIQAAAQMuASMhIgYHAwUhIgYdARQWMyEyNj0BNCYFNTMVMzUzFQSRrAUkFP1gFCQFrAQt%2FBgpOzspA%2BgpOzv%2Bq2RkZAGQAtwXLSgV%2FR1kOylkKTs7KWQpO8hkZGRkAAAAA%2F%2BcAGQEsARMAAsAIwAxAAAAMhYVERQGIiY1ETQDJSMTFgYjIisBIiYnAj0BNDU0PgE7ASUBFSIuAz0BND4CNwRpKh0dKh1k%2FV0mLwMRFQUCVBQdBDcCCwzIAqP8GAQOIhoWFR0dCwRMHRX8rhUdHRUDUhX8mcj%2B7BAIHBUBUQ76AgQQDw36%2FtT6AQsTKRwyGigUDAEAAAACAEoAAARmBLAALAA1AAABMzIWDwEeARcTFzMyFhQGBw4EIyIuBC8BLgE0NjsBNxM%2BATcnJjYDFjMyNw4BIiYCKV4UEgYSU3oPP3YRExwaEggeZGqfTzl0XFU%2BLwwLEhocExF2Pw96UxIGEyQyNDUxDDdGOASwFRMlE39N%2FrmtHSkoBwQLHBYSCg4REg4FBAgoKR2tAUdNfhQgExr7vgYGMT09AAEAFAAUBJwEnAAXAAABNwcXBxcHFycHJwcnBzcnNyc3Jxc3FzcDIOBO6rS06k7gLZubLeBO6rS06k7gLZubA7JO4C2bmy3gTuq0tOpO4C2bmy3gTuq0tAADAAAAZASwBLAAIQAtAD0AAAEzMhYdAQchMhYdARQHAw4BKwEiJi8BIyImNRE0PwI%2BARcPAREzFzMTNSE3NQEzMhYVERQGKwEiJjURNDYCijIoPBwBSCg8He4QLBf6B0YfHz0tNxSRYA0xG2SWZIjW%2Bv4%2BMv12ZBUdHRVkFR0dBLBRLJZ9USxkLR3%2BqBghMhkZJCcBkCQbxMYcKGTU1f6JZAF3feGv%2FtQdFf4MFR0dFQH0FR0AAAAAAwAAAAAEsARMACAAMAA8AAABMzIWFxMWHQEUBiMhFh0BFAYrASImLwImNRE0NjsBNgUzMhYVERQGKwEiJjURNDYhByMRHwEzNSchNQMCWPoXLBDuHTwo%2FrgcPCgyGzENYJEUNy09fP3pZBUdHRVkFR0dAl%2BIZJZkMjIBwvoETCEY%2FqgdLWQsUXYHlixRKBzGxBskAZAnJGRkHRX%2BDBUdHRUB9BUdZP6J1dSv4X0BdwADAAAAZAUOBE8AGwA3AEcAAAElNh8BHgEPASEyFhQGKwEDDgEjISImNRE0NjcXERchEz4BOwEyNiYjISoDLgQnJj8BJwUzMhYVERQGKwEiJjURNDYBZAFrHxZuDQEMVAEuVGxuVGqDBhsP%2FqoHphwOOmQBJYMGGw%2FLFRMSFv44AgoCCQMHAwUDAQwRklb9T2QVHR0VZBUdHQNp5hAWcA0mD3lMkE7%2BrRUoog0CDRElCkj%2BCVkBUxUoMjIBAgIDBQIZFrdT5B0V%2FgwVHR0VAfQVHQAAAAP%2FnABkBLAETwAdADYARgAAAQUeBBURFAYjISImJwMjIiY0NjMhJyY2PwE2BxcWBw4FKgIjIRUzMhYXEyE3ESUFMzIWFREUBisBIiY1ETQ2AdsBbgIIFBANrAf%2Bqg8bBoNqVW1sVAEuVQsBDW4WSpIRDAIDBQMHAwkDCgH%2BJd0PHAaCASZq%2FqoCUGQVHR0VZBUdHQRP5gEFEBEXC%2F3zDaIoFQFTTpBMeQ8mDXAWrrcWGQIFAwICAWQoFf6tWQH37OQdFf4MFR0dFQH0FR0AAAADAGEAAARMBQ4AGwA3AEcAAAAyFh0BBR4BFREUBiMhIiYvAQMmPwE%2BAR8BETQXNTQmBhURHAMOBAcGLwEHEyE3ESUuAQMhMhYdARQGIyEiJj0BNDYB3pBOAVMVKKIN%2FfMRJQoJ5hAWcA0mD3nGMjIBAgIDBQIZFrdT7AH3Wf6tFSiWAfQVHR0V%2FgwVHR0FDm5UaoMGGw%2F%2BqgemHA4OAWsfFm4NAQxUAS5U1ssVExIW%2FjgCCgIJAwcDBQMBDBGSVv6tZAElgwYb%2FQsdFWQVHR0VZBUdAAP%2F%2FQAGA%2BgFFAAPAC0ASQAAASEyNj0BNCYjISIGHQEUFgEVFAYiJjURBwYmLwEmNxM%2BBDMhMhYVERQGBwEDFzc2Fx4FHAIVERQWNj0BNDY3JREnAV4B9BUdHRX%2BDBUdHQEPTpBMeQ8mDXAWEOYBBRARFwsCDQ2iKBX9iexTtxYZAgUDAgIBMjIoFQFTWQRMHRVkFR0dFWQVHfzmalRubFQBLlQMAQ1uFh8BawIIEw8Mpgf%2Bqg8bBgHP%2Fq1WkhEMAQMFAwcDCQIKAv44FhITFcsPGwaDASVkAAIAFgAWBJoEmgAPACUAAAAyHgIUDgIiLgI0PgEBJSYGHQEhIgYdARQWMyEVFBY3JTY0AeLs1ptbW5vW7NabW1ubAob%2B7RAX%2Fu0KDw8KARMXEAETEASaW5vW7NabW1ub1uzWm%2F453w0KFYkPCpYKD4kVCg3fDSYAAAIAFgAWBJoEmgAPACUAAAAyHgIUDgIiLgI0PgENAQYUFwUWNj0BITI2PQE0JiMhNTQmAeLs1ptbW5vW7NabW1ubASX%2B7RAQARMQFwETCg8PCv7tFwSaW5vW7NabW1ub1uzWm%2BjfDSYN3w0KFYkPCpYKD4kVCgAAAAIAFgAWBJoEmgAPACUAAAAyHgIUDgIiLgI0PgEBAyYiBwMGFjsBERQWOwEyNjURMzI2AeLs1ptbW5vW7NabW1ubAkvfDSYN3w0KFYkPCpYKD4kVCgSaW5vW7NabW1ub1uzWm%2F5AARMQEP7tEBf%2B7QoPDwoBExcAAAIAFgAWBJoEmgAPACUAAAAyHgIUDgIiLgI0PgEFIyIGFREjIgYXExYyNxM2JisBETQmAeLs1ptbW5vW7NabW1ubAZeWCg%2BJFQoN3w0mDd8NChWJDwSaW5vW7NabW1ub1uzWm7sPCv7tFxD%2B7RAQARMQFwETCg8AAAMAGAAYBJgEmAAPAJYApgAAADIeAhQOAiIuAjQ%2BASUOAwcGJgcOAQcGFgcOAQcGFgcUFgcyHgEXHgIXHgI3Fg4BFx4CFxQGFBcWNz4CNy4BJy4BJyIOAgcGJyY2NS4BJzYuAQYHBicmNzY3HgIXHgMfAT4CJyY%2BATc%2BAzcmNzIWMjY3LgMnND4CJiceAT8BNi4CJwYHFB4BFS4CJz4BNxYyPgEB5OjVm1xcm9Xo1ZtcXJsBZA8rHDoKDz0PFD8DAxMBAzEFCRwGIgEMFhkHECIvCxU%2FOR0HFBkDDRQjEwcFaHUeISQDDTAMD0UREi4oLBAzDwQBBikEAQMLGhIXExMLBhAGKBsGBxYVEwYFAgsFAwMNFwQGCQcYFgYQCCARFwkKKiFBCwQCAQMDHzcLDAUdLDgNEiEQEgg%2FKhADGgMKEgoRBJhcm9Xo1ZtcXJvV6NWbEQwRBwkCAwYFBycPCxcHInIWInYcCUcYChQECA4QBAkuHgQPJioRFRscBAcSCgwCch0kPiAIAQcHEAsBAgsLIxcBMQENCQIPHxkCFBkdHB4QBgEBBwoMGBENBAMMJSAQEhYXDQ4qFBkKEhIDCQsXJxQiBgEOCQwHAQ0DBAUcJAwSCwRnETIoAwEJCwsLJQcKDBEAAAAAAQAAAAIErwSFABYAAAE2FwUXNxYGBw4BJwEGIi8BJjQ3ASY2AvSkjv79kfsGUE08hjv9rA8rD28PDwJYIk8EhVxliuh%2BWYcrIgsW%2FawQEG4PKxACV2XJAAYAAABgBLAErAAPABMAIwAnADcAOwAAEyEyFh0BFAYjISImPQE0NgUjFTMFITIWHQEUBiMhIiY9ATQ2BSEVIQUhMhYdARQGIyEiJj0BNDYFIRUhZAPoKTs7KfwYKTs7BBHIyPwYA%2BgpOzsp%2FBgpOzsEEf4MAfT8GAPoKTs7KfwYKTs7BBH%2B1AEsBKw7KWQpOzspZCk7ZGTIOylkKTs7KWQpO2RkyDspZCk7OylkKTtkZAAAAAIAZAAABEwEsAALABEAABMhMhYUBiMhIiY0NgERBxEBIZYDhBUdHRX8fBUdHQI7yP6iA4QEsB0qHR0qHf1E%2FtTIAfQB9AAAAAMAAABkBLAEsAAXABsAJQAAATMyFh0BITIWFREhNSMVIRE0NjMhNTQ2FxUzNQEVFAYjISImPQEB9MgpOwEsKTv%2BDMj%2BDDspASw7KcgB9Dsp%2FBgpOwSwOylkOyn%2BcGRkAZApO2QpO2RkZP1EyCk7OynIAAAABAAAAAAEsASwABUAKwBBAFcAABMhMhYPARcWFA8BBiIvAQcGJjURNDYpATIWFREUBi8BBwYiLwEmND8BJyY2ARcWFA8BFxYGIyEiJjURNDYfATc2MgU3NhYVERQGIyEiJj8BJyY0PwE2MhcyASwVCA5exwcHaggUCMdeDhUdAzUBLBUdFQ5exwgUCGoHB8deDgj%2BL2oHB8deDggV%2FtQVHRUOXscIFALLXg4VHRX%2B1BUIDl7HBwdqCBQIBLAVDl7HCBQIagcHx14OCBUBLBUdHRX%2B1BUIDl7HBwdqCBQIx14OFf0maggUCMdeDhUdFQEsFQgOXscHzl4OCBX%2B1BUdFQ5exwgUCGoHBwAAAAYAAAAABKgEqAAPABsAIwA7AEMASwAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JiQyFhQGIiY0JDIWFAYjIicHFhUUBiImNTQ2PwImNTQEMhYUBiImNCQyFhQGIiY0Advy3Z9fX5%2Fd8t2gXl6gAcbgv29vv%2BC%2Fb2%2F%2BLS0gIC0gAUwtICAWDg83ETNIMykfegEJ%2FoctICAtIAIdLSAgLSAEqF%2Bf3fLdoF5eoN3y3Z9Xb7%2Fgv29vv%2BC%2FBiAtISEtICAtIQqRFxwkMzMkIDEFfgEODhekIC0gIC0gIC0gIC0AAf%2FYAFoEuQS8AFsAACUBNjc2JicmIyIOAwcABw4EFx4BMzI3ATYnLgEjIgcGBwEOASY0NwA3PgEzMhceARcWBgcOBgcGIyImJyY2NwE2NzYzMhceARcWBgcBDgEnLgECIgHVWwgHdl8WGSJBMD8hIP6IDx4eLRMNBQlZN0ozAiQkEAcdEhoYDRr%2Bqw8pHA4BRyIjQS4ODyw9DQ4YIwwod26La1YOOEBGdiIwGkQB%2F0coW2tQSE5nDxE4Qv4eDyoQEAOtAdZbZWKbEQQUGjIhH%2F6JDxsdNSg3HT5CMwIkJCcQFBcMGv6uDwEcKQ4BTSIjIQEINykvYyMLKnhuiWZMBxtAOU6%2BRAH%2FSBg3ISSGV121Qv4kDwIPDyYAAAACAGQAWASvBEQAGQBEAAABPgIeAhUUDgMHLgQ1ND4CHgEFIg4DIi4DIyIGFRQeAhcWFx4EMj4DNzY3PgQ1NCYCiTB7eHVYNkN5hKg%2BPqeFeEM4WnZ4eQEjIT8yLSohJyktPyJDbxtBMjMPBw86KzEhDSIzKUAMBAgrKT8dF2oDtURIBS1TdkA5eYB%2FslVVsn%2BAeTlAdlMtBUgtJjY1JiY1NiZvTRc4SjQxDwcOPCouGBgwKEALBAkpKkQqMhNPbQACADn%2F8gR3BL4AFwAuAAAAMh8BFhUUBg8BJi8BNycBFwcvASY0NwEDNxYfARYUBwEGIi8BJjQ%2FARYfAQcXAQKru0KNQjgiHR8uEl%2F3%2FnvUaRONQkIBGxJpCgmNQkL%2B5UK6Qo1CQjcdLhJf9wGFBL5CjUJeKmsiHTUuEl%2F4%2FnvUahKNQrpCARv%2BRmkICY1CukL%2B5UJCjUK7Qjc3LxFf%2BAGFAAAAAAMAyAAAA%2BgEsAARABUAHQAAADIeAhURFAYjISImNRE0PgEHESERACIGFBYyNjQCBqqaZDo7Kf2oKTs8Zj4CWP7%2FVj09Vj0EsB4uMhX8Ryk7OykDuRUzLar9RAK8%2FRY9Vj09VgABAAAAAASwBLAAFgAACQEWFAYiLwEBEScBBRMBJyEBJyY0NjIDhgEbDx0qDiT%2B6dT%2BzP7oywEz0gEsAQsjDx0qBKH%2B5g8qHQ8j%2FvX%2B1NL%2BzcsBGAE01AEXJA4qHQAAAAADAScAEQQJBOAAMgBAAEsAAAEVHgQXIy4DJxEXHgQVFAYHFSM1JicuASczHgEXEScuBDU0PgI3NRkBDgMVFB4DFxYXET4ENC4CArwmRVI8LAKfBA0dMydAIjxQNyiym2SWVygZA4sFV0obLkJOMCAyVWg6HSoqFQ4TJhkZCWgWKTEiGBkzNwTgTgUTLD9pQiQuLBsH%2Fs0NBxMtPGQ%2Bi6oMTU8QVyhrVk1iEAFPCA4ZLzlYNkZwSCoGTf4SARIEDh02Jh0rGRQIBgPQ%2FsoCCRYgNEM0JRkAAAABAGQAZgOUBK0ASgAAATIeARUjNC4CIyIGBwYVFB4BFxYXMxUjFgYHBgc%2BATM2FjMyNxcOAyMiLgEHDgEPASc%2BBTc%2BAScjNTMmJy4CPgE3NgIxVJlemSc8OxolVBQpGxoYBgPxxQgVFS02ImIWIIwiUzUyHzY4HCAXanQmJ1YYFzcEGAcTDBEJMAwk3aYXFQcKAg4tJGEErVCLTig%2FIhIdFSw5GkowKgkFZDKCHj4yCg8BIh6TExcIASIfBAMaDAuRAxAFDQsRCjePR2QvORQrREFMIVgAAAACABn%2F%2FwSXBLAADwAfAAABMzIWDwEGIi8BJjY7AREzBRcWBisBESMRIyImPwE2MgGQlhUIDuYOKg7mDggVlsgCF%2BYOCBWWyJYVCA7mDioBLBYO%2Bg8P%2Bg4WA4QQ%2BQ4V%2FHwDhBUO%2BQ8AAAQAGf%2F%2FA%2BgEsAAHABcAGwAlAAABIzUjFSMRIQEzMhYPAQYiLwEmNjsBETMFFTM1EwczFSE1NyM1IQPoZGRkASz9qJYVCA7mDioO5g4IFZbIAZFkY8jI%2FtTIyAEsArxkZAH0%2FHwWDvoPD%2FoOFgOEZMjI%2FRL6ZJb6ZAAAAAAEABn%2F%2FwPoBLAADwAZACEAJQAAATMyFg8BBiIvASY2OwERMwUHMxUhNTcjNSERIzUjFSMRIQcVMzUBkJYVCA7mDioO5g4IFZbIAljIyP7UyMgBLGRkZAEsx2QBLBYO%2Bg8P%2Bg4WA4SW%2BmSW%2BmT7UGRkAfRkyMgAAAAEABn%2F%2FwRMBLAADwAVABsAHwAAATMyFg8BBiIvASY2OwERMwEjESM1MxMjNSMRIQcVMzUBkJYVCA7mDioO5g4IFZbIAlhkZMhkZMgBLMdkASwWDvoPD%2FoOFgOE%2FgwBkGT7UGQBkGTIyAAAAAAEABn%2F%2FwRMBLAADwAVABkAHwAAATMyFg8BBiIvASY2OwERMwEjNSMRIQcVMzUDIxEjNTMBkJYVCA7mDioO5g4IFZbIArxkyAEsx2QBZGTIASwWDvoPD%2FoOFgOE%2FgxkAZBkyMj7tAGQZAAAAAAFABn%2F%2FwSwBLAADwATABcAGwAfAAABMzIWDwEGIi8BJjY7AREzBSM1MxMhNSETITUhEyE1IQGQlhUIDuYOKg7mDggVlsgB9MjIZP7UASxk%2FnABkGT%2BDAH0ASwWDvoPD%2FoOFgOEyMj%2BDMj%2BDMj%2BDMgABQAZ%2F%2F8EsASwAA8AEwAXABsAHwAAATMyFg8BBiIvASY2OwERMwUhNSEDITUhAyE1IQMjNTMBkJYVCA7mDioO5g4IFZbIAyD%2BDAH0ZP5wAZBk%2FtQBLGTIyAEsFg76Dw%2F6DhYDhMjI%2FgzI%2FgzI%2FgzIAAIAAAAABEwETAAPAB8AAAEhMhYVERQGIyEiJjURNDYFISIGFREUFjMhMjY1ETQmAV4BkKK8u6P%2BcKW5uQJn%2FgwpOzspAfQpOzsETLuj%2FnClubmlAZClucg7Kf4MKTs7KQH0KTsAAAAAAwAAAAAETARMAA8AHwArAAABITIWFREUBiMhIiY1ETQ2BSEiBhURFBYzITI2NRE0JgUXFhQPAQYmNRE0NgFeAZClubml%2FnCju7wCZP4MKTs7KQH0KTs7%2Fm%2F9ERH9EBgYBEy5pf5wpbm5pQGQo7vIOyn%2BDCk7OykB9Ck7gr4MJAy%2BDAsVAZAVCwAAAAADAAAAAARMBEwADwAfACsAAAEhMhYVERQGIyEiJjURNDYFISIGFREUFjMhMjY1ETQmBSEyFg8BBiIvASY2AV4BkKO7uaX%2BcKW5uQJn%2FgwpOzspAfQpOzv%2BFQGQFQsMvgwkDL4MCwRMvKL%2BcKW5uaUBkKO7yDsp%2FgwpOzspAfQpO8gYEP0REf0QGAAAAAMAAAAABEwETAAPAB8AKwAAASEyFhURFAYjISImNRE0NgUhIgYVERQWMyEyNjURNCYFFxYGIyEiJj8BNjIBXgGQpbm5pf5wo7u5Amf%2BDCk7OykB9Ck7O%2F77vgwLFf5wFQsMvgwkBEy5pf5wo7u8ogGQpbnIOyn%2BDCk7OykB9Ck7z%2F0QGBgQ%2FREAAAAAAgAAAAAFFARMAB8ANQAAASEyFhURFAYjISImPQE0NjMhMjY1ETQmIyEiJj0BNDYHARYUBwEGJj0BIyImPQE0NjsBNTQ2AiYBkKW5uaX%2BcBUdHRUBwik7Oyn%2BPhUdHb8BRBAQ%2FrwQFvoVHR0V%2BhYETLml%2FnCluR0VZBUdOykB9Ck7HRVkFR3p%2FuQOJg7%2B5A4KFZYdFcgVHZYVCgAAAQDZAAID1wSeACMAAAEXFgcGAgclMhYHIggBBwYrAScmNz4BPwEhIicmNzYANjc2MwMZCQgDA5gCASwYEQ4B%2Fvf%2B8wQMDgkJCQUCUCcn%2FtIXCAoQSwENuwUJEASeCQoRC%2F5TBwEjEv7K%2FsUFDwgLFQnlbm4TFRRWAS%2FTBhAAAAACAAAAAAT%2BBEwAHwA1AAABITIWHQEUBiMhIgYVERQWMyEyFh0BFAYjISImNRE0NgUBFhQHAQYmPQEjIiY9ATQ2OwE1NDYBXgGQFR0dFf4%2BKTs7KQHCFR0dFf5wpbm5AvEBRBAQ%2FrwQFvoVHR0V%2BhYETB0VZBUdOyn%2BDCk7HRVkFR25pQGQpbnp%2FuQOJg7%2B5A4KFZYdFcgVHZYVCgACAAAAAASwBLAAFQAxAAABITIWFREUBi8BAQYiLwEmNDcBJyY2ASMiBhURFBYzITI2PQE3ERQGIyEiJjURNDYzIQLuAZAVHRUObf7IDykPjQ8PAThtDgj%2B75wpOzspAfQpO8i7o%2F5wpbm5pQEsBLAdFf5wFQgObf7IDw%2BNDykPAThtDhX%2B1Dsp%2FgwpOzsplMj%2B1qW5uaUBkKW5AAADAA4ADgSiBKIADwAbACMAAAAyHgIUDgIiLgI0PgEEIg4BFB4BMj4BNCYEMhYUBiImNAHh7tmdXV2d2e7ZnV1dnQHD5sJxccLmwnFx%2FnugcnKgcgSiXZ3Z7tmdXV2d2e7ZnUdxwubCcXHC5sJzcqBycqAAAAMAAAAABEwEsAAVAB8AIwAAATMyFhURMzIWBwEGIicBJjY7ARE0NgEhMhYdASE1NDYFFTM1AcLIFR31FAoO%2FoEOJw3%2BhQ0JFfod%2FoUD6BUd%2B7QdA2dkBLAdFf6iFg%2F%2BVg8PAaoPFgFeFR38fB0V%2BvoVHWQyMgAAAAMAAAAABEwErAAVAB8AIwAACQEWBisBFRQGKwEiJj0BIyImNwE%2BAQEhMhYdASE1NDYFFTM1AkcBeg4KFfQiFsgUGPoUCw4Bfw4n%2FfkD6BUd%2B7QdA2dkBJ7%2BTQ8g%2BhQeHRX6IQ8BrxAC%2FH8dFfr6FR1kMjIAAwAAAAAETARLABQAHgAiAAAJATYyHwEWFAcBBiInASY0PwE2MhcDITIWHQEhNTQ2BRUzNQGMAXEHFQeLBwf98wcVB%2F7cBweLCBUH1APoFR37tB0DZ2QC0wFxBweLCBUH%2FfMICAEjCBQIiwcH%2FdIdFfr6FR1kMjIABAAAAAAETASbAAkAGQAjACcAABM3NjIfAQcnJjQFNzYWFQMOASMFIiY%2FASc3ASEyFh0BITU0NgUVMzWHjg4qDk3UTQ4CFtIOFQIBHRX9qxUIDtCa1P49A%2BgVHfu0HQNnZAP%2Fjg4OTdRMDyqa0g4IFf2pFB4BFQ7Qm9T9Oh0V%2BvoVHWQyMgAAAAQAAAAABEwEsAAPABkAIwAnAAABBR4BFRMUBi8BByc3JyY2EwcGIi8BJjQ%2FAQEhMhYdASE1NDYFFTM1AV4CVxQeARUO0JvUm9IOCMNMDyoOjg4OTf76A%2BgVHfu0HQNnZASwAgEdFf2rFQgO0JrUmtIOFf1QTQ4Ojg4qDk3%2BWB0V%2BvoVHWQyMgACAAT%2F7ASwBK8ABQAIAAAlCQERIQkBFQEEsP4d%2Fsb%2BcQSs%2FTMCq2cBFP5xAacDHPz55gO5AAAAAAIAAABkBEwEsAAVABkAAAERFAYrAREhESMiJjURNDY7AREhETMHIzUzBEwdFZb9RJYVHR0V%2BgH0ZMhkZAPo%2FK4VHQGQ%2FnAdFQPoFB7%2B1AEsyMgAAAMAAABFBN0EsAAWABoALwAAAQcBJyYiDwEhESMiJjURNDY7AREhETMHIzUzARcWFAcBBiIvASY0PwE2Mh8BATYyBEwC%2FtVfCRkJlf7IlhUdHRX6AfRkyGRkAbBqBwf%2BXAgUCMoICGoHFQdPASkHFQPolf7VXwkJk%2F5wHRUD6BQe%2FtQBLMjI%2Fc5qBxUH%2FlsHB8sHFQdqCAhPASkHAAMAAAANBQcEsAAWABoAPgAAAREHJy4BBwEhESMiJjURNDY7AREhETMHIzUzARcWFA8BFxYUDwEGIi8BBwYiLwEmND8BJyY0PwE2Mh8BNzYyBExnhg8lEP72%2FreWFR0dFfoB9GTIZGQB9kYPD4ODDw9GDykPg4MPKQ9GDw%2BDgw8PRg8pD4ODDykD6P7zZ4YPAw7%2B9v5wHRUD6BQe%2FtQBLMjI%2FYxGDykPg4MPKQ9GDw%2BDgw8PRg8pD4ODDykPRg8Pg4MPAAADAAAAFQSXBLAAFQAZAC8AAAERISIGHQEhESMiJjURNDY7AREhETMHIzUzEzMyFh0BMzIWDwEGIi8BJjY7ATU0NgRM%2FqIVHf4MlhUdHRX6AfRkyGRklmQVHZYVCA7mDioO5g4IFZYdA%2Bj%2B1B0Vlv5wHRUD6BQe%2FtQBLMjI%2FagdFfoVDuYODuYOFfoVHQAAAAADAAAAAASXBLAAFQAZAC8AAAERJyYiBwEhESMiJjURNDY7AREhETMHIzUzExcWBisBFRQGKwEiJj0BIyImPwE2MgRMpQ4qDv75%2Fm6WFR0dFfoB9GTIZGTr5g4IFZYdFWQVHZYVCA7mDioD6P5wpQ8P%2Fvf%2BcB0VA%2BgUHv7UASzIyP2F5Q8V%2BhQeHhT6FQ%2FlDwADAAAAyASwBEwACQATABcAABMhMhYdASE1NDYBERQGIyEiJjURExUhNTIETBUd%2B1AdBJMdFfu0FR1kAZAETB0VlpYVHf7U%2FdoVHR0VAib%2B1MjIAAAGAAMAfQStBJcADwAZAB0ALQAxADsAAAEXFhQPAQYmPQEhNSE1NDYBIyImPQE0NjsBFyM1MwE3NhYdASEVIRUUBi8BJjQFIzU7AjIWHQEUBisBA6f4Dg74DhX%2BcAGQFf0vMhUdHRUyyGRk%2FoL3DhUBkP5wFQ73DwOBZGRkMxQdHRQzBI3mDioO5g4IFZbIlhUI%2FoUdFWQVHcjI%2FcvmDggVlsiWFQgO5g4qecgdFWQVHQAAAAACAGQAAASwBLAAFgBRAAABJTYWFREUBisBIiY1ES4ENRE0NiUyFh8BERQOAg8BERQGKwEiJjURLgQ1ETQ%2BAzMyFh8BETMRPAE%2BAjMyFh8BETMRND4DA14BFBklHRXIFR0EDiIaFiX%2B4RYZAgEVHR0LCh0VyBUdBA4iGhYBBwoTDRQZAgNkBQkVDxcZAQFkAQUJFQQxdBIUH%2FuuFR0dFQGNAQgbHzUeAWcfRJEZDA3%2BPhw%2FMSkLC%2F5BFR0dFQG%2FBA8uLkAcAcICBxENCxkMDf6iAV4CBxENCxkMDf6iAV4CBxENCwABAGQAAASwBEwAMwAAARUiDgMVERQWHwEVITUyNjURIREUFjMVITUyPgM1ETQmLwE1IRUiBhURIRE0JiM1BLAEDiIaFjIZGf5wSxn%2BDBlL%2FnAEDiIaFjIZGQGQSxkB9BlLBEw4AQUKFA78iBYZAQI4OA0lAYr%2BdiUNODgBBQoUDgN4FhkBAjg4DSX%2BdgGKJQ04AAAABgAAAAAETARMAAwAHAAgACQAKAA0AAABITIWHQEjBTUnITchBSEyFhURFAYjISImNRE0NhcVITUBBTUlBRUhNQUVFAYjIQchJyE3MwKjAXcVHWn%2B2cj%2BcGQBd%2F4lASwpOzsp%2FtQpOzspASwCvP5wAZD8GAEsArwdFf6JZP6JZAGQyGkD6B0VlmJiyGTIOyn%2BDCk7OykB9Ck7ZMjI%2FveFo4XGyMhm%2BBUdZGTIAAEAEAAQBJ8EnwAmAAATNzYWHwEWBg8BHgEXNz4BHwEeAQ8BBiIuBicuBTcRohEuDosOBhF3ZvyNdxEzE8ATBxGjAw0uMUxPZWZ4O0p3RjITCwED76IRBhPCFDERdo78ZXYRBA6IDi8RogEECBUgNUNjO0qZfHNVQBAAAAACAAAAAASwBEwAIwBBAAAAMh4EHwEVFAYvAS4BPQEmIAcVFAYPAQYmPQE%2BBRIyHgIfARUBHgEdARQGIyEiJj0BNDY3ATU0PgIB%2FLimdWQ%2FLAkJHRTKFB2N%2FsKNHRTKFB0DDTE7ZnTKcFImFgEBAW0OFR0V%2B7QVHRUOAW0CFiYETBUhKCgiCgrIFRgDIgMiFZIYGJIVIgMiAxgVyAQNJyQrIP7kExwcCgoy%2FtEPMhTUFR0dFdQUMg8BLzIEDSEZAAADAAAAAASwBLAADQAdACcAAAEHIScRMxUzNTMVMzUzASEyFhQGKwEXITcjIiY0NgMhMhYdASE1NDYETMj9qMjIyMjIyPyuArwVHR0VDIn8SokMFR0dswRMFR37UB0CvMjIAfTIyMjI%2FOAdKh1kZB0qHf7UHRUyMhUdAAAAAwBkAAAEsARMAAkAEwAdAAABIyIGFREhETQmASMiBhURIRE0JgEhETQ2OwEyFhUCvGQpOwEsOwFnZCk7ASw7%2FRv%2B1DspZCk7BEw7KfwYA%2BgpO%2F7UOyn9RAK8KTv84AGQKTs7KQAAAAAF%2F5wAAASwBEwADwATAB8AJQApAAATITIWFREUBiMhIiY1ETQ2FxEhEQUjFTMRITUzNSMRIQURByMRMwcRMxHIArx8sLB8%2FUR8sLAYA4T%2BDMjI%2FtTIyAEsAZBkyMhkZARMsHz%2BDHywsHwB9HywyP1EArzIZP7UZGQBLGT%2B1GQB9GT%2B1AEsAAAABf%2BcAAAEsARMAA8AEwAfACUAKQAAEyEyFhURFAYjISImNRE0NhcRIREBIzUjFSMRMxUzNTMFEQcjETMHETMRyAK8fLCwfP1EfLCwGAOE%2FgxkZGRkZGQBkGTIyGRkBEywfP4MfLCwfAH0fLDI%2FUQCvP2oyMgB9MjIZP7UZAH0ZP7UASwABP%2BcAAAEsARMAA8AEwAbACMAABMhMhYVERQGIyEiJjURNDYXESERBSMRMxUhESEFIxEzFSERIcgCvHywsHz9RHywsBgDhP4MyMj%2B1AEsAZDIyP7UASwETLB8%2Fgx8sLB8AfR8sMj9RAK8yP7UZAH0ZP7UZAH0AAAABP%2BcAAAEsARMAA8AEwAWABkAABMhMhYVERQGIyEiJjURNDYXESERAS0BDQERyAK8fLCwfP1EfLCwGAOE%2Fgz%2B1AEsAZD%2B1ARMsHz%2BDHywsHwB9HywyP1EArz%2BDJaWlpYBLAAAAAX%2FnAAABLAETAAPABMAFwAgACkAABMhMhYVERQGIyEiJjURNDYXESERAyERIQcjIgYVFBY7AQERMzI2NTQmI8gCvHywsHz9RHywsBgDhGT9RAK8ZIImOTYpgv4Mgik2OSYETLB8%2Fgx8sLB8AfR8sMj9RAK8%2FagB9GRWQUFUASz%2B1FRBQVYAAAAF%2F5wAAASwBEwADwATAB8AJQApAAATITIWFREUBiMhIiY1ETQ2FxEhEQUjFTMRITUzNSMRIQEjESM1MwMjNTPIArx8sLB8%2FUR8sLAYA4T%2BDMjI%2FtTIyAEsAZBkZMjIZGQETLB8%2Fgx8sLB8AfR8sMj9RAK8yGT%2B1GRkASz%2BDAGQZP4MZAAG%2F5wAAASwBEwADwATABkAHwAjACcAABMhMhYVERQGIyEiJjURNDYXESERBTMRIREzASMRIzUzBRUzNQEjNTPIArx8sLB8%2FUR8sLAYA4T9RMj%2B1GQCWGRkyP2oZAEsZGQETLB8%2Fgx8sLB8AfR8sMj9RAK8yP5wAfT%2BDAGQZMjIyP7UZAAF%2F5wAAASwBEwADwATABwAIgAmAAATITIWFREUBiMhIiY1ETQ2FxEhEQEHIzU3NSM1IQEjESM1MwMjNTPIArx8sLB8%2FUR8sLAYA4T%2BDMdkx8gBLAGQZGTIx2RkBEywfP4MfLCwfAH0fLDI%2FUQCvP5wyDLIlmT%2BDAGQZP4MZAAAAAMACQAJBKcEpwAPABsAJQAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JgchFSEVISc1NyEB4PDbnl5entvw255eXp4BxeTCcXHC5MJxcWz%2B1AEs%2FtRkZAEsBKdentvw255eXp7b8NueTHHC5MJxccLkwtDIZGTIZAAAAAAEAAkACQSnBKcADwAbACcAKwAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JgcVBxcVIycjFSMRIQcVMzUB4PDbnl5entvw255eXp4BxeTCcXHC5MJxcWwyZGRklmQBLMjIBKdentvw255eXp7b8NueTHHC5MJxccLkwtBkMmQyZGQBkGRkZAAAAv%2Fy%2F50EwgRBACAANgAAATIWFzYzMhYUBisBNTQmIyEiBh0BIyImNTQ2NyY1ND4BEzMyFhURMzIWDwEGIi8BJjY7ARE0NgH3brUsLC54qqp4gB0V%2FtQVHd5QcFZBAmKqepYKD4kVCg3fDSYN3w0KFYkPBEF3YQ6t8a36FR0dFfpzT0VrDhMSZKpi%2FbMPCv7tFxD0EBD0EBcBEwoPAAAAAAL%2F8v%2BcBMMEQQAcADMAAAEyFhc2MzIWFxQGBwEmIgcBIyImNTQ2NyY1ND4BExcWBisBERQGKwEiJjURIyImNzY3NjIB9m62LCsueaoBeFr%2Bhg0lDf6DCU9xVkECYqnm3w0KFYkPCpYKD4kVCg3HGBMZBEF3YQ%2BteGOkHAFoEBD%2Bk3NPRWsOExNkqWP9kuQQF%2F7tCg8PCgETFxDMGBMAAAABAGQAAARMBG0AGAAAJTUhATMBMwkBMwEzASEVIyIGHQEhNTQmIwK8AZD%2B8qr%2B8qr%2B1P7Uqv7yqv7yAZAyFR0BkB0VZGQBLAEsAU3%2Bs%2F7U%2FtRkHRUyMhUdAAAAAAEAeQAABDcEmwAvAAABMhYXHgEVFAYHFhUUBiMiJxUyFh0BITU0NjM1BiMiJjU0Ny4BNTQ2MzIXNCY1NDYCWF6TGll7OzIJaUo3LRUd%2FtQdFS03SmkELzlpSgUSAqMEm3FZBoNaPWcfHRpKaR77HRUyMhUd%2Bx5pShIUFVg1SmkCAhAFdKMAAAAGACcAFASJBJwAEQAqAEIASgBiAHsAAAEWEgIHDgEiJicmAhI3PgEyFgUiBw4BBwYWHwEWMzI3Njc2Nz4BLwEmJyYXIgcOAQcGFh8BFjMyNz4BNz4BLwEmJyYWJiIGFBYyNjciBw4BBw4BHwEWFxYzMjc%2BATc2Ji8BJhciBwYHBgcOAR8BFhcWMzI3PgE3NiYvASYD8m9PT29T2dzZU29PT29T2dzZ%2Fj0EBHmxIgQNDCQDBBcGG0dGYAsNAwkDCwccBAVQdRgEDA0iBAQWBhJROQwMAwkDCwf5Y4xjY4xjVhYGElE6CwwDCQMLBwgEBVB1GAQNDCIEjRcGG0dGYAsNAwkDCwcIBAR5sSIEDQwkAwPyb%2F7V%2FtVvU1dXU28BKwErb1NXVxwBIrF5DBYDCQEWYEZHGwMVDCMNBgSRAhh1UA0WAwkBFTpREgMVCyMMBwT6Y2OMY2MVFTpREQQVCyMMBwQCGHVQDRYDCQEkFmBGRxsDFQwjDQYEASKxeQwWAwkBAAAABQBkAAAD6ASwAAwADwAWABwAIgAAASERIzUhFSERNDYzIQEjNQMzByczNTMDISImNREFFRQGKwECvAEstP6s%2FoQPCgI%2FASzIZKLU1KJktP51Cg8DhA8KwwMg%2FoTIyALzCg%2F%2B1Mj84NTUyP4MDwoBi8jDCg8AAAAABQBkAAAD6ASwAAkADAATABoAIQAAASERCQERNDYzIQEjNRMjFSM1IzcDISImPQEpARUUBisBNQK8ASz%2Bov3aDwoCPwEsyD6iZKLUqv6dCg8BfAIIDwqbAyD9%2BAFe%2FdoERwoP%2FtTI%2FHzIyNT%2BZA8KNzcKD1AAAAAAAwAAAAAEsAP0AAgAGQAfAAABIxUzFyERIzcFMzIeAhUhFSEDETM0PgIBMwMhASEEiqJkZP7UotT9EsgbGiEOASz9qMhkDiEaAnPw8PzgASwB9AMgyGQBLNTUBBErJGT%2BogHCJCsRBP5w%2FnAB9AAAAAMAAAAABEwETAAZADIAOQAAATMyFh0BMzIWHQEUBiMhIiY9ATQ2OwE1NDYFNTIWFREUBiMhIic3ARE0NjMVFBYzITI2AQc1IzUzNQKKZBUdMhUdHRX%2B1BUdHRUyHQFzKTs7Kf2oARP2%2Fro7KVg%2BASw%2BWP201MjIBEwdFTIdFWQVHR0VZBUdMhUd%2BpY7KfzgKTsE9gFGAUQpO5Y%2BWFj95tSiZKIAAwBkAAAEvARMABkANgA9AAABMzIWHQEzMhYdARQGIyEiJj0BNDY7ATU0NgU1MhYVESMRMxQOAiMhIiY1ETQ2MxUUFjMhMjYBBzUjNTM1AcJkFR0yFR0dFf7UFR0dFTIdAXMpO8jIDiEaG%2F2oKTs7KVg%2BASw%2BWAGc1MjIBEwdFTIdFWQVHR0VZBUdMhUd%2BpY7Kf4M%2FtQkKxEEOykDICk7lj5YWP3m1KJkogAAAAP%2FogAABRYE1AALABsAHwAACQEWBiMhIiY3ATYyEyMiBhcTHgE7ATI2NxM2JgMVMzUCkgJ9FyAs%2BwQsIBcCfRZARNAUGAQ6BCMUNhQjBDoEGODIBK37sCY3NyYEUCf%2BTB0U%2FtIUHR0UAS4UHf4MZGQAAAAACQAAAAAETARMAA8AHwAvAD8ATwBfAG8AfwCPAAABMzIWHQEUBisBIiY9ATQ2EzMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYBMzIWHQEUBisBIiY9ATQ2ITMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYBMzIWHQEUBisBIiY9ATQ2ITMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYBqfoKDw8K%2BgoPDwr6Cg8PCvoKDw8BmvoKDw8K%2BgoPD%2Fzq%2BgoPDwr6Cg8PAZr6Cg8PCvoKDw8BmvoKDw8K%2BgoPD%2Fzq%2BgoPDwr6Cg8PAZr6Cg8PCvoKDw8BmvoKDw8K%2BgoPDwRMDwqWCg8PCpYKD%2F7UDwqWCg8PCpYKDw8KlgoPDwqWCg%2F%2B1A8KlgoPDwqWCg8PCpYKDw8KlgoPDwqWCg8PCpYKD%2F7UDwqWCg8PCpYKDw8KlgoPDwqWCg8PCpYKDw8KlgoPAAAAAwAAAAAEsAUUABkAKQAzAAABMxUjFSEyFg8BBgchJi8BJjYzITUjNTM1MwEhMhYUBisBFyE3IyImNDYDITIWHQEhNTQ2ArxkZAFePjEcQiko%2FPwoKUIcMT4BXmRkyP4%2BArwVHR0VDIn8SooNFR0dswRMFR37UB0EsMhkTzeEUzMzU4Q3T2TIZPx8HSodZGQdKh3%2B1B0VMjIVHQAABAAAAAAEsAUUAAUAGQArADUAAAAyFhUjNAchFhUUByEyFg8BIScmNjMhJjU0AyEyFhQGKwEVBSElNSMiJjQ2AyEyFh0BITU0NgIwUDnCPAE6EgMBSCkHIq%2F9WrIiCikBSAOvArwVHR0VlgET%2FEoBE5YVHR2zBEwVHftQHQUUOykpjSUmCBEhFpGRFiERCCb%2BlR0qHcjIyMgdKh39qB0VMjIVHQAEAAAAAASwBJ0ABwAUACQALgAAADIWFAYiJjQTMzIWFRQXITY1NDYzASEyFhQGKwEXITcjIiY0NgMhMhYdASE1NDYCDZZqapZqty4iKyf%2BvCcrI%2F7NArwVHR0VDYr8SokMFR0dswRMFR37UB0EnWqWamqW%2Fus5Okxra0w6Of5yHSodZGQdKh3%2B1B0VMjIVHQAEAAAAAASwBRQADwAcACwANgAAATIeARUUBiImNTQ3FzcnNhMzMhYVFBchNjU0NjMBITIWFAYrARchNyMiJjQ2AyEyFh0BITU0NgJYL1szb5xvIpBvoyIfLiIrJ%2F68Jysj%2Fs0CvBUdHRUNivxKiQwVHR2zBEwVHftQHQUUa4s2Tm9vTj5Rj2%2BjGv4KOTpMa2tMOjn%2Bch0qHWRkHSod%2FtQdFTIyFR0AAAADAAAAAASwBRIAEgAiACwAAAEFFSEUHgMXIS4BNTQ%2BAjcBITIWFAYrARchNyMiJjQ2AyEyFh0BITU0NgJYASz%2B1CU%2FP00T%2Fe48PUJtj0r%2BogK8FR0dFQ2K%2FEqJDBUdHbMETBUd%2B1AdBLChizlmUT9IGVO9VFShdksE%2FH4dKh1kZB0qHf7UHRUyMhUdAAIAyAAAA%2BgFFAAPACkAAAAyFh0BHgEdASE1NDY3NTQDITIWFyMVMxUjFTMVIxUzFAYjISImNRE0NgIvUjsuNv5wNi5kAZA2XBqsyMjIyMh1U%2F5wU3V1BRQ7KU4aXDYyMjZcGk4p%2Fkc2LmRkZGRkU3V1UwGQU3UAAAMAZP%2F%2FBEwETAAPAC8AMwAAEyEyFhURFAYjISImNRE0NgMhMhYdARQGIyEXFhQGIi8BIQcGIiY0PwEhIiY9ATQ2BQchJ5YDhBUdHRX8fBUdHQQDtgoPDwr%2B5eANGiUNWP30Vw0mGg3g%2Ft8KDw8BqmQBRGQETB0V%2FgwVHR0VAfQVHf1EDwoyCg%2FgDSUbDVhYDRslDeAPCjIKD2RkZAAAAAAEAAAAAASwBEwAGQAjAC0ANwAAEyEyFh0BIzQmKwEiBhUjNCYrASIGFSM1NDYDITIWFREhETQ2ExUUBisBIiY9ASEVFAYrASImPQHIAyBTdWQ7KfopO2Q7KfopO2R1EQPoKTv7UDvxHRVkFR0D6B0VZBUdBEx1U8gpOzspKTs7KchTdf4MOyn%2B1AEsKTv%2BDDIVHR0VMjIVHR0VMgADAAEAAASpBKwADQARABsAAAkBFhQPASEBJjQ3ATYyCQMDITIWHQEhNTQ2AeACqh8fg%2F4f%2FfsgIAEnH1n%2BrAFWAS%2F%2Bq6IDIBUd%2FHwdBI39VR9ZH4MCBh9ZHwEoH%2F5u%2FqoBMAFV%2FBsdFTIyFR0AAAAAAgCPAAAEIQSwABcALwAAAQMuASMhIgYHAwYWMyEVFBYyNj0BMzI2AyE1NDY7ATU0NjsBETMRMzIWHQEzMhYVBCG9CCcV%2FnAVJwi9CBMVAnEdKh19FROo%2Fa0dFTIdFTDILxUdMhUdAocB%2BhMcHBP%2BBhMclhUdHRWWHP2MMhUdMhUdASz%2B1B0VMh0VAAAEAAAAAASwBLAADQAQAB8AIgAAASERFAYjIREBNTQ2MyEBIzUBIREUBiMhIiY1ETQ2MyEBIzUDhAEsDwr%2Bif7UDwoBdwEsyP2oASwPCv12Cg8PCgF3ASzIAyD9wQoPAk8BLFQKD%2F7UyP4M%2FcEKDw8KA7YKD%2F7UyAAC%2F5wAZAUUBEcARgBWAAABMzIeAhcWFxY2NzYnJjc%2BARYXFgcOASsBDgEPAQ4BKwEiJj8BBisBIicHDgErASImPwEmLwEuAT0BNDY7ATY3JyY2OwE2BSMiBh0BFBY7ATI2PQE0JgHkw0uOakkMEhEfQwoKGRMKBQ8XDCkCA1Y9Pgc4HCcDIhVkFRgDDDEqwxgpCwMiFWQVGAMaVCyfExwdFXwLLW8QBxXLdAFF%2BgoPDwr6Cg8PBEdBa4pJDgYKISAiJRsQCAYIDCw9P1c3fCbqFB0dFEYOCEAUHR0UnUplNQcmFTIVHVdPXw4TZV8PCjIKDw8KMgoPAAb%2FnP%2FmBRQEfgAJACQANAA8AFIAYgAAASU2Fh8BFgYPASUzMhYfASEyFh0BFAYHBQYmJyYjISImPQE0NhcjIgYdARQ7ATI2NTQmJyYEIgYUFjI2NAE3PgEeARceAT8BFxYGDwEGJi8BJjYlBwYfAR4BPwE2Jy4BJy4BAoEBpxMuDiAOAxCL%2FCtqQ0geZgM3FR0cE%2F0fFyIJKjr%2B1D5YWLlQExIqhhALIAsSAYBALS1ALf4PmBIgHhMQHC0aPzANITNQL3wpgigJASlmHyElDR0RPRMFAhQHCxADhPcICxAmDyoNeMgiNtQdFTIVJgeEBBQPQ1g%2ByD5YrBwVODMQEAtEERzJLUAtLUD%2B24ITChESEyMgAwWzPUkrRSgJL5cvfRxYGyYrDwkLNRAhFEgJDAQAAAAAAwBkAAAEOQSwAFEAYABvAAABMzIWHQEeARcWDgIPATIeBRUUDgUjFRQGKwEiJj0BIxUUBisBIiY9ASMiJj0BNDY7AREjIiY9ATQ2OwE1NDY7ATIWHQEzNTQ2AxUhMj4CNTc0LgMjARUhMj4CNTc0LgMjAnGWCg9PaAEBIC4uEBEGEjQwOiodFyI2LUAjGg8KlgoPZA8KlgoPrwoPDwpLSwoPDwqvDwqWCg9kD9cBBxwpEwsBAQsTKRz%2B%2BQFrHCkTCwEBCxMpHASwDwptIW1KLk0tHwYGAw8UKDJOLTtdPCoVCwJLCg8PCktLCg8PCksPCpYKDwJYDwqWCg9LCg8PCktLCg%2F%2B1MgVHR0LCgQOIhoW%2FnDIFR0dCwoEDiIaFgAAAwAEAAIEsASuABcAKQAsAAATITIWFREUBg8BDgEjISImJy4CNRE0NgQiDgQPARchNy4FAyMT1AMMVnokEhIdgVL9xFKCHAgYKHoCIIx9VkcrHQYGnAIwnAIIIClJVSGdwwSuelb%2BYDO3QkJXd3ZYHFrFMwGgVnqZFyYtLSUMDPPzBQ8sKDEj%2FsIBBQACAMgAAAOEBRQADwAZAAABMzIWFREUBiMhIiY1ETQ2ARUUBisBIiY9AQHblmesVCn%2BPilUrAFINhWWFTYFFKxn%2FgwpVFQpAfRnrPwY4RU2NhXhAAACAMgAAAOEBRQADwAZAAABMxQWMxEUBiMhIiY1ETQ2ARUUBisBIiY9AQHbYLOWVCn%2BPilUrAFINhWWFTYFFJaz%2FkIpVFQpAfRnrPwY4RU2NhXhAAACAAAAFAUOBBoAFAAaAAAJASUHFRcVJwc1NzU0Jj4CPwEnCQEFJTUFJQUO%2FYL%2Bhk5klpZkAQEBBQQvkwKCAVz%2Bov6iAV4BXgL%2F%2FuWqPOCWx5SVyJb6BA0GCgYDKEEBG%2F1ipqaTpaUAAAMAZAH0BLADIAAHAA8AFwAAEjIWFAYiJjQkMhYUBiImNCQyFhQGIiY0vHxYWHxYAeh8WFh8WAHofFhYfFgDIFh8WFh8WFh8WFh8WFh8WFh8AAAAAAMBkAAAArwETAAHAA8AFwAAADIWFAYiJjQSMhYUBiImNBIyFhQGIiY0Aeh8WFh8WFh8WFh8WFh8WFh8WARMWHxYWHz%2ByFh8WFh8%2FshYfFhYfAAAAAMAZABkBEwETAAPAB8ALwAAEyEyFh0BFAYjISImPQE0NhMhMhYdARQGIyEiJj0BNDYTITIWHQEUBiMhIiY9ATQ2fQO2Cg8PCvxKCg8PCgO2Cg8PCvxKCg8PCgO2Cg8PCvxKCg8PBEwPCpYKDw8KlgoP%2FnAPCpYKDw8KlgoP%2FnAPCpYKDw8KlgoPAAAABAAAAAAEsASwAA8AHwAvADMAAAEhMhYVERQGIyEiJjURNDYFISIGFREUFjMhMjY1ETQmBSEyFhURFAYjISImNRE0NhcVITUBXgH0ory7o%2F4Mpbm5Asv9qCk7OykCWCk7O%2F2xAfQVHR0V%2FgwVHR1HAZAEsLuj%2FgylubmlAfSlucg7Kf2oKTs7KQJYKTtkHRX%2B1BUdHRUBLBUdZMjIAAAAAAEAZABkBLAETAA7AAATITIWFAYrARUzMhYUBisBFTMyFhQGKwEVMzIWFAYjISImNDY7ATUjIiY0NjsBNSMiJjQ2OwE1IyImNDaWA%2BgVHR0VMjIVHR0VMjIVHR0VMjIVHR0V%2FBgVHR0VMjIVHR0VMjIVHR0VMjIVHR0ETB0qHcgdKh3IHSodyB0qHR0qHcgdKh3IHSodyB0qHQAAAAYBLAAFA%2BgEowAHAA0AEwAZAB8AKgAAAR4BBgcuATYBMhYVIiYlFAYjNDYBMhYVIiYlFAYjNDYDFRQGIiY9ARYzMgKKVz8%2FV1c%2FP%2F75fLB8sAK8sHyw%2FcB8sHywArywfLCwHSodKAMRBKNDsrJCQrKy%2FsCwfLB8fLB8sP7UsHywfHywfLD%2B05AVHR0VjgQAAAH%2FtQDIBJQDgQBCAAABNzYXAR4BBw4BKwEyFRQOBCsBIhE0NyYiBxYVECsBIi4DNTQzIyImJyY2NwE2HwEeAQ4BLwEHIScHBi4BNgLpRRkUASoLCAYFGg8IAQQNGyc%2FKZK4ChRUFQu4jjBJJxkHAgcPGQYGCAsBKhQaTBQVCiMUM7YDe7YsFCMKFgNuEwYS%2FtkLHw8OEw0dNkY4MhwBIBgXBAQYF%2F7gKjxTQyMNEw4PHwoBKBIHEwUjKBYGDMHBDAUWKCMAAAAAAgAAAAAEsASwACUAQwAAASM0LgUrAREUFh8BFSE1Mj4DNREjIg4FFSMRIQEjNC4DKwERFBYXMxUjNTI1ESMiDgMVIzUhBLAyCAsZEyYYGcgyGRn%2BcAQOIhoWyBkYJhMZCwgyA%2Bj9RBkIChgQEWQZDQzIMmQREBgKCBkB9AOEFSAVDggDAfyuFhkBAmRkAQUJFQ4DUgEDCA4VIBUBLP0SDxMKBQH%2BVwsNATIyGQGpAQUKEw%2BWAAAAAAMAAAAABEwErgAdACAAMAAAATUiJy4BLwEBIwEGBw4BDwEVITUiJj8BIRcWBiMVARsBARUUBiMhIiY9ATQ2MyEyFgPoGR4OFgUE%2Ft9F%2FtQSFQkfCwsBETE7EkUBJT0NISf%2B7IZ5AbEdFfwYFR0dFQPoFR0BLDIgDiIKCwLr%2FQ4jFQkTBQUyMisusKYiQTIBhwFW%2Fqr942QVHR0VZBUdHQADAAAAAASwBLAADwBHAEoAABMhMhYVERQGIyEiJjURNDYFIyIHAQYHBgcGHQEUFjMhMjY9ATQmIyInJj8BIRcWBwYjIgYdARQWMyEyNj0BNCYnIicmJyMBJhMjEzIETBUdHRX7tBUdHQJGRg0F%2FtUREhImDAsJAREIDAwINxAKCj8BCjkLEQwYCAwMCAE5CAwLCBEZGQ8B%2FuAFDsVnBLAdFfu0FR0dFQRMFR1SDP0PIBMSEAUNMggMDAgyCAwXDhmjmR8YEQwIMggMDAgyBwwBGRskAuwM%2FgUBCAAABAAAAAAEsASwAAMAEwAjACcAAAEhNSEFITIWFREUBiMhIiY1ETQ2KQEyFhURFAYjISImNRE0NhcRIREEsPtQBLD7ggGQFR0dFf5wFR0dAm0BkBUdHRX%2BcBUdHUcBLARMZMgdFfx8FR0dFQOEFR0dFf5wFR0dFQGQFR1k%2FtQBLAAEAAAAAASwBLAADwAfACMAJwAAEyEyFhURFAYjISImNRE0NgEhMhYVERQGIyEiJjURNDYXESEREyE1ITIBkBUdHRX%2BcBUdHQJtAZAVHR0V%2FnAVHR1HASzI%2B1AEsASwHRX8fBUdHRUDhBUd%2FgwdFf5wFR0dFQGQFR1k%2FtQBLP2oZAAAAAACAAAAZASwA%2BgAJwArAAATITIWFREzNTQ2MyEyFh0BMxUjFRQGIyEiJj0BIxEUBiMhIiY1ETQ2AREhETIBkBUdZB0VAZAVHWRkHRX%2BcBUdZB0V%2FnAVHR0CnwEsA%2BgdFf6ilhUdHRWWZJYVHR0Vlv6iFR0dFQMgFR3%2B1P7UASwAAAQAAAAABLAEsAADABMAFwAnAAAzIxEzFyEyFhURFAYjISImNRE0NhcRIREBITIWFREUBiMhIiY1ETQ2ZGRklgGQFR0dFf5wFR0dRwEs%2FqIDhBUdHRX8fBUdHQSwZB0V%2FnAVHR0VAZAVHWT%2B1AEs%2FgwdFf5wFR0dFQGQFR0AAAAAAgBkAAAETASwACcAKwAAATMyFhURFAYrARUhMhYVERQGIyEiJjURNDYzITUjIiY1ETQ2OwE1MwcRIRECWJYVHR0VlgHCFR0dFfx8FR0dFQFelhUdHRWWZMgBLARMHRX%2BcBUdZB0V%2FnAVHR0VAZAVHWQdFQGQFR1kyP7UASwAAAAEAAAAAASwBLAAAwATABcAJwAAISMRMwUhMhYVERQGIyEiJjURNDYXESERASEyFhURFAYjISImNRE0NgSwZGT9dgGQFR0dFf5wFR0dRwEs%2FK4DhBUdHRX8fBUdHQSwZB0V%2FnAVHR0VAZAVHWT%2B1AEs%2FgwdFf5wFR0dFQGQFR0AAAEBLAAwA28EgAAPAAAJAQYjIiY1ETQ2MzIXARYUA2H%2BEhcSDhAQDhIXAe4OAjX%2BEhcbGQPoGRsX%2FhIOKgAAAAABAUEAMgOEBH4ACwAACQE2FhURFAYnASY0AU8B7h0qKh3%2BEg4CewHuHREp%2FBgpER0B7g4qAAAAAAEAMgFBBH4DhAALAAATITIWBwEGIicBJjZkA%2BgpER3%2BEg4qDv4SHREDhCod%2FhIODgHuHSoAAAAAAQAyASwEfgNvAAsAAAkBFgYjISImNwE2MgJ7Ae4dESn8GCkRHQHuDioDYf4SHSoqHQHuDgAAAAACAAgAAASwBCgABgAKAAABFQE1LQE1ASE1IQK8%2FUwBnf5jBKj84AMgAuW2%2Fr3dwcHd%2B9jIAAAAAAIAAABkBLAEsAALADEAAAEjFTMVIREzNSM1IQEzND4FOwERFAYPARUhNSIuAzURMzIeBRUzESEEsMjI%2FtTIyAEs%2B1AyCAsZEyYYGWQyGRkBkAQOIhoWZBkYJhMZCwgy%2FOADhGRkASxkZP4MFSAVDggDAf3aFhkBAmRkAQUJFQ4CJgEDCA4VIBUBLAAAAgAAAAAETAPoACUAMQAAASM0LgUrAREUFh8BFSE1Mj4DNREjIg4FFSMRIQEjFTMVIREzNSM1IQMgMggLGRMmGBlkMhkZ%2FnAEDiIaFmQZGCYTGQsIMgMgASzIyP7UyMgBLAK8FSAVDggDAf3aFhkCAWRkAQUJFQ4CJgEDCA4VIBUBLPzgZGQBLGRkAAABAMgAZgNyBEoAEgAAATMyFgcJARYGKwEiJwEmNDcBNgK9oBAKDP4wAdAMChCgDQr%2BKQcHAdcKBEoWDP4w%2FjAMFgkB1wgUCAHXCQAAAQE%2BAGYD6ARKABIAAAEzMhcBFhQHAQYrASImNwkBJjYBU6ANCgHXBwf%2BKQoNoBAKDAHQ%2FjAMCgRKCf4pCBQI%2FikJFgwB0AHQDBYAAAEAZgDIBEoDcgASAAAAFh0BFAcBBiInASY9ATQ2FwkBBDQWCf4pCBQI%2FikJFgwB0AHQA3cKEKANCv4pBwcB1woNoBAKDP4wAdAAAAABAGYBPgRKA%2BgAEgAACQEWHQEUBicJAQYmPQE0NwE2MgJqAdcJFgz%2BMP4wDBYJAdcIFAPh%2FikKDaAQCgwB0P4wDAoQoA0KAdcHAAAAAgDZ%2F%2FkEPQSwAAUAOgAAARQGIzQ2BTMyFh8BNjc%2BAh4EBgcOBgcGIiYjIgYiJy4DLwEuAT4EHgEXJyY2A%2BiwfLD%2BVmQVJgdPBQsiKFAzRyorDwURAQQSFyozTSwNOkkLDkc3EDlfNyYHBw8GDyUqPjdGMR%2BTDA0EsHywfLDIHBPCAQIGBwcFDx81S21DBxlLR1xKQhEFBQcHGWt0bCQjP2hJNyATBwMGBcASGAAAAAACAMgAFQOEBLAAFgAaAAATITIWFREUBisBEQcGJjURIyImNRE0NhcVITX6AlgVHR0Vlv8TGpYVHR2rASwEsB0V%2FnAVHf4MsgkQFQKKHRUBkBUdZGRkAAAAAgDIABkETASwAA4AEgAAEyEyFhURBRElIREjETQ2ARU3NfoC7ic9%2FUQCWP1EZB8BDWQEsFEs%2FFt1A7Z9%2FBgEARc0%2FV1kFGQAAQAAAAECTW%2FDBF9fDzz1AB8EsAAAAADQdnOXAAAAANB2c5f%2FUf%2BcBdwFFAAAAAgAAgAAAAAAAAABAAAFFP%2BFAAAFFP9R%2FtQF3AABAAAAAAAAAAAAAAAAAAAAowG4ACgAAAAAAZAAAASwAAAEsABkBLAAAASwAAAEsABwAooAAAUUAAACigAABRQAAAGxAAABRQAAANgAAADYAAAAogAAAQQAAABIAAABBAAAAUUAAASwAGQEsAB7BLAAyASwAMgB9AAABLD%2F8gSwAAAEsAAABLD%2F8ASwAAAEsAAOBLAACQSwAGQEsP%2FTBLD%2F0wSwAAAEsAAABLAAAASwAAAEsAAABLAAJgSwAG4EsAAXBLAAFwSwABcEsABkBLAAGgSwAGQEsAAMBLAAZASwABcEsP%2BcBLAAZASwABcEsAAXBLAAAASwABcEsAAXBLAAFwSwAGQEsAAABLAAZASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAZASwAMgEsAAABLAAAASwADUEsABkBLAAyASw%2F7UEsAAhBLAAAASwAAAEsAAABLAAAASwAAAEsP%2BcBLAAAASwAAAEsAAABLAA2wSwABcEsAB1BLAAAASwAAAEsAAABLAACgSwAMgEsAAABLAAnQSwAMgEsADIBLAAyASwAAAEsP%2F%2BBLABLASwAGQEsACIBLABOwSwABcEsAAXBLAAFwSwABcEsAAXBLAAFwSwAAAEsAAXBLAAFwSwABcEsAAXBLAAAASwALcEsAC3BLAAAASwAAAEsABJBLAAFwSwAAAEsAAABLAAXQSw%2F9wEsP%2FcBLD%2FnwSwAGQEsAAABLAAAASwAAAEsABkBLD%2F%2FwSwAAAEsP9RBLAABgSwAAAEsAAABLABRQSwAAEEsAAABLD%2FnASwAEoEsAAUBLAAAASwAAAEsAAABLD%2FnASwAGEEsP%2F9BLAAFgSwABYEsAAWBLAAFgSwABgEsAAABMQAAASwAGQAAAAAAAD%2F2ABkADkAyAAAAScAZAAZABkAGQAZABkAGQAZAAAAAAAAAAAAAADZAAAAAAAOAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAMAZABkAAAAEAAAAAAAZP%2Bc%2F5z%2FnP%2Bc%2F5z%2FnP%2Bc%2F5wACQAJ%2F%2FL%2F8gBkAHkAJwBkAGQAAAAAAGT%2FogAAAAAAAAAAAAAAAADIAGQAAAABAI8AAP%2Bc%2F5wAZAAEAMgAyAAAAGQBkABkAAAAZAEs%2F7UAAAAAAAAAAAAAAAAAAABkAAABLAFBADIAMgAIAAAAAADIAT4AZgBmANkAyADIAAAAKgAqACoAKgCyAOgA6AFOAU4BTgFOAU4BTgFOAU4BTgFOAU4BTgFOAU4BpAIGAiICfgKGAqwC5ANGA24DjAPEBAgEMgRiBKIE3AVcBboGcgb0ByAHYgfKCB4IYgi%2BCTYJhAm2Cd4KKApMCpQK4gswC4oLygwIDFgNKg1eDbAODg5oDrQPKA%2BmD%2BYQEhBUEJAQqhEqEXYRthIKEjgSfBLAExoTdBPQFCoU1BU8FagVzBYEFjYWYBawFv4XUhemGAIYLhhqGJYYsBjgGP4ZKBloGZQZxBnaGe4aNhpoGrga9hteG7QcMhyUHOIdHB1EHWwdlB28HeYeLh52HsAfYh%2FSIEYgviEyIXYhuCJAIpYiuCMOIyIjOCN6I8Ij4CQCJDAkXiSWJOIlNCVgJbwmFCZ%2BJuYnUCe8J%2FgoNChwKKwpoCnMKiYqSiqEKworeiwILGgsuizsLRwtiC30LiguZi6iLtgvDi9GL34vsi%2F4MD4whDDSMRIxYDGuMegyJDJeMpoy3jMiMz4zaDO2NBg0YDSoNNI1LDWeNeg2PjZ8Ntw3GjdON5I31DgQOEI4hjjIOQo5SjmIOcw6HDpsOpo63jugO9w8GDxQPKI8%2BD0yPew%2BOj6MPtQ%2FKD9uP6o%2F%2BkBIQIBAxkECQX5CGEKoQu5DGENCQ3ZDoEPKRBBEYESuRPZFWkW2RgZGdEa0RvZHNkd2R7ZH9kgWSDJITkhqSIZIzEkSSThJXkmESapKAkouSlIAAQAAARcApwARAAAAAAACAAAAAQABAAAAQAAuAAAAAAAAABAAxgABAAAAAAATABIAAAADAAEECQAAAGoAEgADAAEECQABACgAfAADAAEECQACAA4ApAADAAEECQADAEwAsgADAAEECQAEADgA%2FgADAAEECQAFAHgBNgADAAEECQAGADYBrgADAAEECQAIABYB5AADAAEECQAJABYB%2BgADAAEECQALACQCEAADAAEECQAMACQCNAADAAEECQATACQCWAADAAEECQDIABYCfAADAAEECQDJADACkgADAAEECdkDABoCwnd3dy5nbHlwaGljb25zLmNvbQBDAG8AcAB5AHIAaQBnAGgAdAAgAKkAIAAyADAAMQA0ACAAYgB5ACAASgBhAG4AIABLAG8AdgBhAHIAaQBrAC4AIABBAGwAbAAgAHIAaQBnAGgAdABzACAAcgBlAHMAZQByAHYAZQBkAC4ARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzAFIAZQBnAHUAbABhAHIAMQAuADAAMAA5ADsAVQBLAFcATgA7AEcATABZAFAASABJAEMATwBOAFMASABhAGwAZgBsAGkAbgBnAHMALQBSAGUAZwB1AGwAYQByAEcATABZAFAASABJAEMATwBOAFMAIABIAGEAbABmAGwAaQBuAGcAcwAgAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAOQA7AFAAUwAgADAAMAAxAC4AMAAwADkAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA3ADAAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA1ADgAMwAyADkARwBMAFkAUABIAEkAQwBPAE4AUwBIAGEAbABmAGwAaQBuAGcAcwAtAFIAZQBnAHUAbABhAHIASgBhAG4AIABLAG8AdgBhAHIAaQBrAEoAYQBuACAASwBvAHYAYQByAGkAawB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQBXAGUAYgBmAG8AbgB0ACAAMQAuADAAVwBlAGQAIABPAGMAdAAgADIAOQAgADAANgA6ADMANgA6ADAANwAgADIAMAAxADQARgBvAG4AdAAgAFMAcQB1AGkAcgByAGUAbAAAAAIAAAAAAAD%2FtQAyAAAAAAAAAAAAAAAAAAAAAAAAAAABFwAAAQIBAwADAA0ADgEEAJYBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMA7wEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkBOgE7ATwBPQE%2BAT8BQAFBAUIBQwFEAUUBRgFHAUgBSQFKAUsBTAFNAU4BTwFQAVEBUgFTAVQBVQFWAVcBWAFZAVoBWwFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BfwGAAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG%2FAcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B3wHgAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB%2BgH7AfwB%2FQH%2BAf8CAAIBAgICAwIEAgUCBgIHAggCCQIKAgsCDAINAg4CDwIQAhECEgZnbHlwaDEGZ2x5cGgyB3VuaTAwQTAHdW5pMjAwMAd1bmkyMDAxB3VuaTIwMDIHdW5pMjAwMwd1bmkyMDA0B3VuaTIwMDUHdW5pMjAwNgd1bmkyMDA3B3VuaTIwMDgHdW5pMjAwOQd1bmkyMDBBB3VuaTIwMkYHdW5pMjA1RgRFdXJvB3VuaTIwQkQHdW5pMjMxQgd1bmkyNUZDB3VuaTI2MDEHdW5pMjZGQQd1bmkyNzA5B3VuaTI3MEYHdW5pRTAwMQd1bmlFMDAyB3VuaUUwMDMHdW5pRTAwNQd1bmlFMDA2B3VuaUUwMDcHdW5pRTAwOAd1bmlFMDA5B3VuaUUwMTAHdW5pRTAxMQd1bmlFMDEyB3VuaUUwMTMHdW5pRTAxNAd1bmlFMDE1B3VuaUUwMTYHdW5pRTAxNwd1bmlFMDE4B3VuaUUwMTkHdW5pRTAyMAd1bmlFMDIxB3VuaUUwMjIHdW5pRTAyMwd1bmlFMDI0B3VuaUUwMjUHdW5pRTAyNgd1bmlFMDI3B3VuaUUwMjgHdW5pRTAyOQd1bmlFMDMwB3VuaUUwMzEHdW5pRTAzMgd1bmlFMDMzB3VuaUUwMzQHdW5pRTAzNQd1bmlFMDM2B3VuaUUwMzcHdW5pRTAzOAd1bmlFMDM5B3VuaUUwNDAHdW5pRTA0MQd1bmlFMDQyB3VuaUUwNDMHdW5pRTA0NAd1bmlFMDQ1B3VuaUUwNDYHdW5pRTA0Nwd1bmlFMDQ4B3VuaUUwNDkHdW5pRTA1MAd1bmlFMDUxB3VuaUUwNTIHdW5pRTA1Mwd1bmlFMDU0B3VuaUUwNTUHdW5pRTA1Ngd1bmlFMDU3B3VuaUUwNTgHdW5pRTA1OQd1bmlFMDYwB3VuaUUwNjIHdW5pRTA2Mwd1bmlFMDY0B3VuaUUwNjUHdW5pRTA2Ngd1bmlFMDY3B3VuaUUwNjgHdW5pRTA2OQd1bmlFMDcwB3VuaUUwNzEHdW5pRTA3Mgd1bmlFMDczB3VuaUUwNzQHdW5pRTA3NQd1bmlFMDc2B3VuaUUwNzcHdW5pRTA3OAd1bmlFMDc5B3VuaUUwODAHdW5pRTA4MQd1bmlFMDgyB3VuaUUwODMHdW5pRTA4NAd1bmlFMDg1B3VuaUUwODYHdW5pRTA4Nwd1bmlFMDg4B3VuaUUwODkHdW5pRTA5MAd1bmlFMDkxB3VuaUUwOTIHdW5pRTA5Mwd1bmlFMDk0B3VuaUUwOTUHdW5pRTA5Ngd1bmlFMDk3B3VuaUUxMDEHdW5pRTEwMgd1bmlFMTAzB3VuaUUxMDQHdW5pRTEwNQd1bmlFMTA2B3VuaUUxMDcHdW5pRTEwOAd1bmlFMTA5B3VuaUUxMTAHdW5pRTExMQd1bmlFMTEyB3VuaUUxMTMHdW5pRTExNAd1bmlFMTE1B3VuaUUxMTYHdW5pRTExNwd1bmlFMTE4B3VuaUUxMTkHdW5pRTEyMAd1bmlFMTIxB3VuaUUxMjIHdW5pRTEyMwd1bmlFMTI0B3VuaUUxMjUHdW5pRTEyNgd1bmlFMTI3B3VuaUUxMjgHdW5pRTEyOQd1bmlFMTMwB3VuaUUxMzEHdW5pRTEzMgd1bmlFMTMzB3VuaUUxMzQHdW5pRTEzNQd1bmlFMTM2B3VuaUUxMzcHdW5pRTEzOAd1bmlFMTM5B3VuaUUxNDAHdW5pRTE0MQd1bmlFMTQyB3VuaUUxNDMHdW5pRTE0NAd1bmlFMTQ1B3VuaUUxNDYHdW5pRTE0OAd1bmlFMTQ5B3VuaUUxNTAHdW5pRTE1MQd1bmlFMTUyB3VuaUUxNTMHdW5pRTE1NAd1bmlFMTU1B3VuaUUxNTYHdW5pRTE1Nwd1bmlFMTU4B3VuaUUxNTkHdW5pRTE2MAd1bmlFMTYxB3VuaUUxNjIHdW5pRTE2Mwd1bmlFMTY0B3VuaUUxNjUHdW5pRTE2Ngd1bmlFMTY3B3VuaUUxNjgHdW5pRTE2OQd1bmlFMTcwB3VuaUUxNzEHdW5pRTE3Mgd1bmlFMTczB3VuaUUxNzQHdW5pRTE3NQd1bmlFMTc2B3VuaUUxNzcHdW5pRTE3OAd1bmlFMTc5B3VuaUUxODAHdW5pRTE4MQd1bmlFMTgyB3VuaUUxODMHdW5pRTE4NAd1bmlFMTg1B3VuaUUxODYHdW5pRTE4Nwd1bmlFMTg4B3VuaUUxODkHdW5pRTE5MAd1bmlFMTkxB3VuaUUxOTIHdW5pRTE5Mwd1bmlFMTk0B3VuaUUxOTUHdW5pRTE5Nwd1bmlFMTk4B3VuaUUxOTkHdW5pRTIwMAd1bmlFMjAxB3VuaUUyMDIHdW5pRTIwMwd1bmlFMjA0B3VuaUUyMDUHdW5pRTIwNgd1bmlFMjA5B3VuaUUyMTAHdW5pRTIxMQd1bmlFMjEyB3VuaUUyMTMHdW5pRTIxNAd1bmlFMjE1B3VuaUUyMTYHdW5pRTIxOAd1bmlFMjE5B3VuaUUyMjEHdW5pRTIyMwd1bmlFMjI0B3VuaUUyMjUHdW5pRTIyNgd1bmlFMjI3B3VuaUUyMzAHdW5pRTIzMQd1bmlFMjMyB3VuaUUyMzMHdW5pRTIzNAd1bmlFMjM1B3VuaUUyMzYHdW5pRTIzNwd1bmlFMjM4B3VuaUUyMzkHdW5pRTI0MAd1bmlFMjQxB3VuaUUyNDIHdW5pRTI0Mwd1bmlFMjQ0B3VuaUUyNDUHdW5pRTI0Ngd1bmlFMjQ3B3VuaUUyNDgHdW5pRTI0OQd1bmlFMjUwB3VuaUUyNTEHdW5pRTI1Mgd1bmlFMjUzB3VuaUUyNTQHdW5pRTI1NQd1bmlFMjU2B3VuaUUyNTcHdW5pRTI1OAd1bmlFMjU5B3VuaUUyNjAHdW5pRjhGRgZ1MUY1MTEGdTFGNkFBAAAAAAFUUMMXAAA%3D%29%20format%28%27truetype%27%29%2Curl%28data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI%2FPgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiID4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8bWV0YWRhdGE%2BPC9tZXRhZGF0YT4KPGRlZnM%2BCjxmb250IGlkPSJnbHlwaGljb25zX2hhbGZsaW5nc3JlZ3VsYXIiIGhvcml6LWFkdi14PSIxMjAwIiA%2BCjxmb250LWZhY2UgdW5pdHMtcGVyLWVtPSIxMjAwIiBhc2NlbnQ9Ijk2MCIgZGVzY2VudD0iLTI0MCIgLz4KPG1pc3NpbmctZ2x5cGggaG9yaXotYWR2LXg9IjUwMCIgLz4KPGdseXBoIGhvcml6LWFkdi14PSIwIiAvPgo8Z2x5cGggaG9yaXotYWR2LXg9IjQwMCIgLz4KPGdseXBoIHVuaWNvZGU9IiAiIC8%2BCjxnbHlwaCB1bmljb2RlPSIqIiBkPSJNNjAwIDExMDBxMTUgMCAzNCAtMS41dDMwIC0zLjVsMTEgLTFxMTAgLTIgMTcuNSAtMTAuNXQ3LjUgLTE4LjV2LTIyNGwxNTggMTU4cTcgNyAxOCA4dDE5IC02bDEwNiAtMTA2cTcgLTggNiAtMTl0LTggLTE4bC0xNTggLTE1OGgyMjRxMTAgMCAxOC41IC03LjV0MTAuNSAtMTcuNXE2IC00MSA2IC03NXEwIC0xNSAtMS41IC0zNHQtMy41IC0zMGwtMSAtMTFxLTIgLTEwIC0xMC41IC0xNy41dC0xOC41IC03LjVoLTIyNGwxNTggLTE1OCBxNyAtNyA4IC0xOHQtNiAtMTlsLTEwNiAtMTA2cS04IC03IC0xOSAtNnQtMTggOGwtMTU4IDE1OHYtMjI0cTAgLTEwIC03LjUgLTE4LjV0LTE3LjUgLTEwLjVxLTQxIC02IC03NSAtNnEtMTUgMCAtMzQgMS41dC0zMCAzLjVsLTExIDFxLTEwIDIgLTE3LjUgMTAuNXQtNy41IDE4LjV2MjI0bC0xNTggLTE1OHEtNyAtNyAtMTggLTh0LTE5IDZsLTEwNiAxMDZxLTcgOCAtNiAxOXQ4IDE4bDE1OCAxNThoLTIyNHEtMTAgMCAtMTguNSA3LjUgdC0xMC41IDE3LjVxLTYgNDEgLTYgNzVxMCAxNSAxLjUgMzR0My41IDMwbDEgMTFxMiAxMCAxMC41IDE3LjV0MTguNSA3LjVoMjI0bC0xNTggMTU4cS03IDcgLTggMTh0NiAxOWwxMDYgMTA2cTggNyAxOSA2dDE4IC04bDE1OCAtMTU4djIyNHEwIDEwIDcuNSAxOC41dDE3LjUgMTAuNXE0MSA2IDc1IDZ6IiAvPgo8Z2x5cGggdW5pY29kZT0iKyIgZD0iTTQ1MCAxMTAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMzUwaDM1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0zNTB2LTM1MHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMjAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYzNTBoLTM1MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNSBoMzUwdjM1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4YTA7IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4YTU7IiBkPSJNODI1IDExMDBoMjUwcTEwIDAgMTIuNSAtNXQtNS41IC0xM2wtMzY0IC0zNjRxLTYgLTYgLTExIC0xOGgyNjhxMTAgMCAxMyAtNnQtMyAtMTRsLTEyMCAtMTYwcS02IC04IC0xOCAtMTR0LTIyIC02aC0xMjV2LTEwMGgyNzVxMTAgMCAxMyAtNnQtMyAtMTRsLTEyMCAtMTYwcS02IC04IC0xOCAtMTR0LTIyIC02aC0xMjV2LTE3NHEwIC0xMSAtNy41IC0xOC41dC0xOC41IC03LjVoLTE0OHEtMTEgMCAtMTguNSA3LjV0LTcuNSAxOC41djE3NCBoLTI3NXEtMTAgMCAtMTMgNnQzIDE0bDEyMCAxNjBxNiA4IDE4IDE0dDIyIDZoMTI1djEwMGgtMjc1cS0xMCAwIC0xMyA2dDMgMTRsMTIwIDE2MHE2IDggMTggMTR0MjIgNmgxMThxLTUgMTIgLTExIDE4bC0zNjQgMzY0cS04IDggLTUuNSAxM3QxMi41IDVoMjUwcTI1IDAgNDMgLTE4bDE2NCAtMTY0cTggLTggMTggLTh0MTggOGwxNjQgMTY0cTE4IDE4IDQzIDE4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwMDA7IiBob3Jpei1hZHYteD0iNjUwIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwMTsiIGhvcml6LWFkdi14PSIxMzAwIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwMjsiIGhvcml6LWFkdi14PSI2NTAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMDAzOyIgaG9yaXotYWR2LXg9IjEzMDAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMDA0OyIgaG9yaXotYWR2LXg9IjQzMyIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwMDU7IiBob3Jpei1hZHYteD0iMzI1IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwNjsiIGhvcml6LWFkdi14PSIyMTYiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMDA3OyIgaG9yaXotYWR2LXg9IjIxNiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwMDg7IiBob3Jpei1hZHYteD0iMTYyIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwOTsiIGhvcml6LWFkdi14PSIyNjAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMDBhOyIgaG9yaXotYWR2LXg9IjcyIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAyZjsiIGhvcml6LWFkdi14PSIyNjAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMDVmOyIgaG9yaXotYWR2LXg9IjMyNSIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwYWM7IiBkPSJNNzQ0IDExOThxMjQyIDAgMzU0IC0xODlxNjAgLTEwNCA2NiAtMjA5aC0xODFxMCA0NSAtMTcuNSA4Mi41dC00My41IDYxLjV0LTU4IDQwLjV0LTYwLjUgMjR0LTUxLjUgNy41cS0xOSAwIC00MC41IC01LjV0LTQ5LjUgLTIwLjV0LTUzIC0zOHQtNDkgLTYyLjV0LTM5IC04OS41aDM3OWwtMTAwIC0xMDBoLTMwMHEtNiAtNTAgLTYgLTEwMGg0MDZsLTEwMCAtMTAwaC0zMDBxOSAtNzQgMzMgLTEzMnQ1Mi41IC05MXQ2MS41IC01NC41dDU5IC0yOSB0NDcgLTcuNXEyMiAwIDUwLjUgNy41dDYwLjUgMjQuNXQ1OCA0MXQ0My41IDYxdDE3LjUgODBoMTc0cS0zMCAtMTcxIC0xMjggLTI3OHEtMTA3IC0xMTcgLTI3NCAtMTE3cS0yMDYgMCAtMzI0IDE1OHEtMzYgNDggLTY5IDEzM3QtNDUgMjA0aC0yMTdsMTAwIDEwMGgxMTJxMSA0NyA2IDEwMGgtMjE4bDEwMCAxMDBoMTM0cTIwIDg3IDUxIDE1My41dDYyIDEwMy41cTExNyAxNDEgMjk3IDE0MXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMGJkOyIgZD0iTTQyOCAxMjAwaDM1MHE2NyAwIDEyMCAtMTN0ODYgLTMxdDU3IC00OS41dDM1IC01Ni41dDE3IC02NC41dDYuNSAtNjAuNXQwLjUgLTU3di0xNi41di0xNi41cTAgLTM2IC0wLjUgLTU3dC02LjUgLTYxdC0xNyAtNjV0LTM1IC01N3QtNTcgLTUwLjV0LTg2IC0zMS41dC0xMjAgLTEzaC0xNzhsLTIgLTEwMGgyODhxMTAgMCAxMyAtNnQtMyAtMTRsLTEyMCAtMTYwcS02IC04IC0xOCAtMTR0LTIyIC02aC0xMzh2LTE3NXEwIC0xMSAtNS41IC0xOCB0LTE1LjUgLTdoLTE0OXEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE3NWgtMjY3cS0xMCAwIC0xMyA2dDMgMTRsMTIwIDE2MHE2IDggMTggMTR0MjIgNmgxMTd2MTAwaC0yNjdxLTEwIDAgLTEzIDZ0MyAxNGwxMjAgMTYwcTYgOCAxOCAxNHQyMiA2aDExN3Y0NzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNNjAwIDEwMDB2LTMwMGgyMDNxNjQgMCA4Ni41IDMzdDIyLjUgMTE5cTAgODQgLTIyLjUgMTE2dC04Ni41IDMyaC0yMDN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjIxMjsiIGQ9Ik0yNTAgNzAwaDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC04MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjMxYjsiIGQ9Ik0xMDAwIDEyMDB2LTE1MHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTB2LTEwMHEwIC05MSAtNDkuNSAtMTY1LjV0LTEzMC41IC0xMDkuNXE4MSAtMzUgMTMwLjUgLTEwOS41dDQ5LjUgLTE2NS41di0xNTBoNTBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTE1MGgtODAwdjE1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoNTB2MTUwcTAgOTEgNDkuNSAxNjUuNXQxMzAuNSAxMDkuNXEtODEgMzUgLTEzMC41IDEwOS41IHQtNDkuNSAxNjUuNXYxMDBoLTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxNTBoODAwek00MDAgMTAwMHYtMTAwcTAgLTYwIDMyLjUgLTEwOS41dDg3LjUgLTczLjVxMjggLTEyIDQ0IC0zN3QxNiAtNTV0LTE2IC01NXQtNDQgLTM3cS01NSAtMjQgLTg3LjUgLTczLjV0LTMyLjUgLTEwOS41di0xNTBoNDAwdjE1MHEwIDYwIC0zMi41IDEwOS41dC04Ny41IDczLjVxLTI4IDEyIC00NCAzN3QtMTYgNTV0MTYgNTV0NDQgMzcgcTU1IDI0IDg3LjUgNzMuNXQzMi41IDEwOS41djEwMGgtNDAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDI1ZmM7IiBob3Jpei1hZHYteD0iNTAwIiBkPSJNMCAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDI2MDE7IiBkPSJNNTAzIDEwODlxMTEwIDAgMjAwLjUgLTU5LjV0MTM0LjUgLTE1Ni41cTQ0IDE0IDkwIDE0cTEyMCAwIDIwNSAtODYuNXQ4NSAtMjA2LjVxMCAtMTIxIC04NSAtMjA3LjV0LTIwNSAtODYuNWgtNzUwcS03OSAwIC0xMzUuNSA1N3QtNTYuNSAxMzdxMCA2OSA0Mi41IDEyMi41dDEwOC41IDY3LjVxLTIgMTIgLTIgMzdxMCAxNTMgMTA4IDI2MC41dDI2MCAxMDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyNmZhOyIgZD0iTTc3NCAxMTkzLjVxMTYgLTkuNSAyMC41IC0yN3QtNS41IC0zMy41bC0xMzYgLTE4N2w0NjcgLTc0NmgzMHEyMCAwIDM1IC0xOC41dDE1IC0zOS41di00MmgtMTIwMHY0MnEwIDIxIDE1IDM5LjV0MzUgMTguNWgzMGw0NjggNzQ2bC0xMzUgMTgzcS0xMCAxNiAtNS41IDM0dDIwLjUgMjh0MzQgNS41dDI4IC0yMC41bDExMSAtMTQ4bDExMiAxNTBxOSAxNiAyNyAyMC41dDM0IC01ek02MDAgMjAwaDM3N2wtMTgyIDExMmwtMTk1IDUzNHYtNjQ2eiAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyNzA5OyIgZD0iTTI1IDExMDBoMTE1MHExMCAwIDEyLjUgLTV0LTUuNSAtMTNsLTU2NCAtNTY3cS04IC04IC0xOCAtOHQtMTggOGwtNTY0IDU2N3EtOCA4IC01LjUgMTN0MTIuNSA1ek0xOCA4ODJsMjY0IC0yNjRxOCAtOCA4IC0xOHQtOCAtMThsLTI2NCAtMjY0cS04IC04IC0xMyAtNS41dC01IDEyLjV2NTUwcTAgMTAgNSAxMi41dDEzIC01LjV6TTkxOCA2MThsMjY0IDI2NHE4IDggMTMgNS41dDUgLTEyLjV2LTU1MHEwIC0xMCAtNSAtMTIuNXQtMTMgNS41IGwtMjY0IDI2NHEtOCA4IC04IDE4dDggMTh6TTgxOCA0ODJsMzY0IC0zNjRxOCAtOCA1LjUgLTEzdC0xMi41IC01aC0xMTUwcS0xMCAwIC0xMi41IDV0NS41IDEzbDM2NCAzNjRxOCA4IDE4IDh0MTggLThsMTY0IC0xNjRxOCAtOCAxOCAtOHQxOCA4bDE2NCAxNjRxOCA4IDE4IDh0MTggLTh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjcwZjsiIGQ9Ik0xMDExIDEyMTBxMTkgMCAzMyAtMTNsMTUzIC0xNTNxMTMgLTE0IDEzIC0zM3QtMTMgLTMzbC05OSAtOTJsLTIxNCAyMTRsOTUgOTZxMTMgMTQgMzIgMTR6TTEwMTMgODAwbC02MTUgLTYxNGwtMjE0IDIxNGw2MTQgNjE0ek0zMTcgOTZsLTMzMyAtMTEybDExMCAzMzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwMTsiIGQ9Ik03MDAgNjUwdi01NTBoMjUwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGgtODAwdjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgyNTB2NTUwbC01MDAgNTUwaDEyMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwMjsiIGQ9Ik0zNjggMTAxN2w2NDUgMTYzcTM5IDE1IDYzIDB0MjQgLTQ5di04MzFxMCAtNTUgLTQxLjUgLTk1LjV0LTExMS41IC02My41cS03OSAtMjUgLTE0NyAtNC41dC04NiA3NXQyNS41IDExMS41dDEyMi41IDgycTcyIDI0IDEzOCA4djUyMWwtNjAwIC0xNTV2LTYwNnEwIC00MiAtNDQgLTkwdC0xMDkgLTY5cS03OSAtMjYgLTE0NyAtNS41dC04NiA3NS41dDI1LjUgMTExLjV0MTIyLjUgODIuNXE3MiAyNCAxMzggN3Y2MzlxMCAzOCAxNC41IDU5IHQ1My41IDM0eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDM7IiBkPSJNNTAwIDExOTFxMTAwIDAgMTkxIC0zOXQxNTYuNSAtMTA0LjV0MTA0LjUgLTE1Ni41dDM5IC0xOTFsLTEgLTJsMSAtNXEwIC0xNDEgLTc4IC0yNjJsMjc1IC0yNzRxMjMgLTI2IDIyLjUgLTQ0LjV0LTIyLjUgLTQyLjVsLTU5IC01OHEtMjYgLTIwIC00Ni41IC0yMHQtMzkuNSAyMGwtMjc1IDI3NHEtMTE5IC03NyAtMjYxIC03N2wtNSAxbC0yIC0xcS0xMDAgMCAtMTkxIDM5dC0xNTYuNSAxMDQuNXQtMTA0LjUgMTU2LjV0LTM5IDE5MSB0MzkgMTkxdDEwNC41IDE1Ni41dDE1Ni41IDEwNC41dDE5MSAzOXpNNTAwIDEwMjJxLTg4IDAgLTE2MiAtNDN0LTExNyAtMTE3dC00MyAtMTYydDQzIC0xNjJ0MTE3IC0xMTd0MTYyIC00M3QxNjIgNDN0MTE3IDExN3Q0MyAxNjJ0LTQzIDE2MnQtMTE3IDExN3QtMTYyIDQzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDU7IiBkPSJNNjQ5IDk0OXE0OCA2OCAxMDkuNSAxMDR0MTIxLjUgMzguNXQxMTguNSAtMjB0MTAyLjUgLTY0dDcxIC0xMDAuNXQyNyAtMTIzcTAgLTU3IC0zMy41IC0xMTcuNXQtOTQgLTEyNC41dC0xMjYuNSAtMTI3LjV0LTE1MCAtMTUyLjV0LTE0NiAtMTc0cS02MiA4NSAtMTQ1LjUgMTc0dC0xNTAgMTUyLjV0LTEyNi41IDEyNy41dC05My41IDEyNC41dC0zMy41IDExNy41cTAgNjQgMjggMTIzdDczIDEwMC41dDEwNCA2NHQxMTkgMjAgdDEyMC41IC0zOC41dDEwNC41IC0xMDR6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwNjsiIGQ9Ik00MDcgODAwbDEzMSAzNTNxNyAxOSAxNy41IDE5dDE3LjUgLTE5bDEyOSAtMzUzaDQyMXEyMSAwIDI0IC04LjV0LTE0IC0yMC41bC0zNDIgLTI0OWwxMzAgLTQwMXE3IC0yMCAtMC41IC0yNS41dC0yNC41IDYuNWwtMzQzIDI0NmwtMzQyIC0yNDdxLTE3IC0xMiAtMjQuNSAtNi41dC0wLjUgMjUuNWwxMzAgNDAwbC0zNDcgMjUxcS0xNyAxMiAtMTQgMjAuNXQyMyA4LjVoNDI5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDc7IiBkPSJNNDA3IDgwMGwxMzEgMzUzcTcgMTkgMTcuNSAxOXQxNy41IC0xOWwxMjkgLTM1M2g0MjFxMjEgMCAyNCAtOC41dC0xNCAtMjAuNWwtMzQyIC0yNDlsMTMwIC00MDFxNyAtMjAgLTAuNSAtMjUuNXQtMjQuNSA2LjVsLTM0MyAyNDZsLTM0MiAtMjQ3cS0xNyAtMTIgLTI0LjUgLTYuNXQtMC41IDI1LjVsMTMwIDQwMGwtMzQ3IDI1MXEtMTcgMTIgLTE0IDIwLjV0MjMgOC41aDQyOXpNNDc3IDcwMGgtMjQwbDE5NyAtMTQybC03NCAtMjI2IGwxOTMgMTM5bDE5NSAtMTQwbC03NCAyMjlsMTkyIDE0MGgtMjM0bC03OCAyMTF6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwODsiIGQ9Ik02MDAgMTIwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJ2LTI1MHEwIC00NiAtMzEgLTk4dC02OSAtNTJ2LTc1cTAgLTEwIDYgLTIxLjV0MTUgLTE3LjVsMzU4IC0yMzBxOSAtNSAxNSAtMTYuNXQ2IC0yMS41di05M3EwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTExNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY5M3EwIDEwIDYgMjEuNXQxNSAxNi41bDM1OCAyMzBxOSA2IDE1IDE3LjV0NiAyMS41djc1cS0zOCAwIC02OSA1MiB0LTMxIDk4djI1MHEwIDEyNCA4OCAyMTJ0MjEyIDg4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDk7IiBkPSJNMjUgMTEwMGgxMTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTA1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTExNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxMDUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTEwMCAxMDAwdi0xMDBoMTAwdjEwMGgtMTAwek04NzUgMTAwMGgtNTUwcS0xMCAwIC0xNy41IC03LjV0LTcuNSAtMTcuNXYtMzUwcTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoNTUwIHExMCAwIDE3LjUgNy41dDcuNSAxNy41djM1MHEwIDEwIC03LjUgMTcuNXQtMTcuNSA3LjV6TTEwMDAgMTAwMHYtMTAwaDEwMHYxMDBoLTEwMHpNMTAwIDgwMHYtMTAwaDEwMHYxMDBoLTEwMHpNMTAwMCA4MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTEwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTEwMDAgNjAwdi0xMDBoMTAwdjEwMGgtMTAwek04NzUgNTAwaC01NTBxLTEwIDAgLTE3LjUgLTcuNXQtNy41IC0xNy41di0zNTBxMCAtMTAgNy41IC0xNy41IHQxNy41IC03LjVoNTUwcTEwIDAgMTcuNSA3LjV0Ny41IDE3LjV2MzUwcTAgMTAgLTcuNSAxNy41dC0xNy41IDcuNXpNMTAwIDQwMHYtMTAwaDEwMHYxMDBoLTEwMHpNMTAwMCA0MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTEwMCAyMDB2LTEwMGgxMDB2MTAwaC0xMDB6TTEwMDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTA7IiBkPSJNNTAgMTEwMGg0MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek02NTAgMTEwMGg0MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDAgcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgNTAwaDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djQwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTY1MCA1MDBoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di00MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTQwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djQwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxMTsiIGQ9Ik01MCAxMTAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQ1MCAxMTAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek04NTAgMTEwMGgyMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMjAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA3MDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQ1MCA3MDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNODUwIDcwMGgyMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMCBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgMzAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQ1MCAzMDBoMjAwIHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTg1MCAzMDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41IHQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxMjsiIGQ9Ik01MCAxMTAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQ1MCAxMTAwaDcwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC03MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA3MDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNDUwIDcwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNzAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgMzAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQ1MCAzMDBoNzAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDAgcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC03MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxMzsiIGQ9Ik00NjUgNDc3bDU3MSA1NzFxOCA4IDE4IDh0MTcgLThsMTc3IC0xNzdxOCAtNyA4IC0xN3QtOCAtMThsLTc4MyAtNzg0cS03IC04IC0xNy41IC04dC0xNy41IDhsLTM4NCAzODRxLTggOCAtOCAxOHQ4IDE3bDE3NyAxNzdxNyA4IDE3IDh0MTggLThsMTcxIC0xNzFxNyAtNyAxOCAtN3QxOCA3eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTQ7IiBkPSJNOTA0IDEwODNsMTc4IC0xNzlxOCAtOCA4IC0xOC41dC04IC0xNy41bC0yNjcgLTI2OGwyNjcgLTI2OHE4IC03IDggLTE3LjV0LTggLTE4LjVsLTE3OCAtMTc4cS04IC04IC0xOC41IC04dC0xNy41IDhsLTI2OCAyNjdsLTI2OCAtMjY3cS03IC04IC0xNy41IC04dC0xOC41IDhsLTE3OCAxNzhxLTggOCAtOCAxOC41dDggMTcuNWwyNjcgMjY4bC0yNjcgMjY4cS04IDcgLTggMTcuNXQ4IDE4LjVsMTc4IDE3OHE4IDggMTguNSA4dDE3LjUgLTggbDI2OCAtMjY3bDI2OCAyNjhxNyA3IDE3LjUgN3QxOC41IC03eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTU7IiBkPSJNNTA3IDExNzdxOTggMCAxODcuNSAtMzguNXQxNTQuNSAtMTAzLjV0MTAzLjUgLTE1NC41dDM4LjUgLTE4Ny41cTAgLTE0MSAtNzggLTI2MmwzMDAgLTI5OXE4IC04IDggLTE4LjV0LTggLTE4LjVsLTEwOSAtMTA4cS03IC04IC0xNy41IC04dC0xOC41IDhsLTMwMCAyOTlxLTExOSAtNzcgLTI2MSAtNzdxLTk4IDAgLTE4OCAzOC41dC0xNTQuNSAxMDN0LTEwMyAxNTQuNXQtMzguNSAxODh0MzguNSAxODcuNXQxMDMgMTU0LjUgdDE1NC41IDEwMy41dDE4OCAzOC41ek01MDYuNSAxMDIzcS04OS41IDAgLTE2NS41IC00NHQtMTIwIC0xMjAuNXQtNDQgLTE2NnQ0NCAtMTY1LjV0MTIwIC0xMjB0MTY1LjUgLTQ0dDE2NiA0NHQxMjAuNSAxMjB0NDQgMTY1LjV0LTQ0IDE2NnQtMTIwLjUgMTIwLjV0LTE2NiA0NHpNNDI1IDkwMGgxNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di03NWg3NXExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41IHQtMTcuNSAtNy41aC03NXYtNzVxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0xNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY3NWgtNzVxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWg3NXY3NXEwIDEwIDcuNSAxNy41dDE3LjUgNy41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTY7IiBkPSJNNTA3IDExNzdxOTggMCAxODcuNSAtMzguNXQxNTQuNSAtMTAzLjV0MTAzLjUgLTE1NC41dDM4LjUgLTE4Ny41cTAgLTE0MSAtNzggLTI2MmwzMDAgLTI5OXE4IC04IDggLTE4LjV0LTggLTE4LjVsLTEwOSAtMTA4cS03IC04IC0xNy41IC04dC0xOC41IDhsLTMwMCAyOTlxLTExOSAtNzcgLTI2MSAtNzdxLTk4IDAgLTE4OCAzOC41dC0xNTQuNSAxMDN0LTEwMyAxNTQuNXQtMzguNSAxODh0MzguNSAxODcuNXQxMDMgMTU0LjUgdDE1NC41IDEwMy41dDE4OCAzOC41ek01MDYuNSAxMDIzcS04OS41IDAgLTE2NS41IC00NHQtMTIwIC0xMjAuNXQtNDQgLTE2NnQ0NCAtMTY1LjV0MTIwIC0xMjB0MTY1LjUgLTQ0dDE2NiA0NHQxMjAuNSAxMjB0NDQgMTY1LjV0LTQ0IDE2NnQtMTIwLjUgMTIwLjV0LTE2NiA0NHpNMzI1IDgwMGgzNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0zNTBxLTEwIDAgLTE3LjUgNy41IHQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxNzsiIGQ9Ik01NTAgMTIwMGgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek04MDAgOTc1djE2NnExNjcgLTYyIDI3MiAtMjA5LjV0MTA1IC0zMzEuNXEwIC0xMTcgLTQ1LjUgLTIyNHQtMTIzIC0xODQuNXQtMTg0LjUgLTEyM3QtMjI0IC00NS41dC0yMjQgNDUuNSB0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHEwIDE4NCAxMDUgMzMxLjV0MjcyIDIwOS41di0xNjZxLTEwMyAtNTUgLTE2NSAtMTU1dC02MiAtMjIwcTAgLTExNiA1NyAtMjE0LjV0MTU1LjUgLTE1NS41dDIxNC41IC01N3QyMTQuNSA1N3QxNTUuNSAxNTUuNXQ1NyAyMTQuNXEwIDEyMCAtNjIgMjIwdC0xNjUgMTU1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTg7IiBkPSJNMTAyNSAxMjAwaDE1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTExNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0xNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxMTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTcyNSA4MDBoMTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNzUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2NzUwIHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek00MjUgNTAwaDE1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTQ1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djQ1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek0xMjUgMzAwaDE1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTI1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41IHYyNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDE5OyIgZD0iTTYwMCAxMTc0cTMzIDAgNzQgLTVsMzggLTE1Mmw1IC0xcTQ5IC0xNCA5NCAtMzlsNSAtMmwxMzQgODBxNjEgLTQ4IDEwNCAtMTA1bC04MCAtMTM0bDMgLTVxMjUgLTQ0IDM5IC05M2wxIC02bDE1MiAtMzhxNSAtNDMgNSAtNzNxMCAtMzQgLTUgLTc0bC0xNTIgLTM4bC0xIC02cS0xNSAtNDkgLTM5IC05M2wtMyAtNWw4MCAtMTM0cS00OCAtNjEgLTEwNCAtMTA1bC0xMzQgODFsLTUgLTNxLTQ0IC0yNSAtOTQgLTM5bC01IC0ybC0zOCAtMTUxIHEtNDMgLTUgLTc0IC01cS0zMyAwIC03NCA1bC0zOCAxNTFsLTUgMnEtNDkgMTQgLTk0IDM5bC01IDNsLTEzNCAtODFxLTYwIDQ4IC0xMDQgMTA1bDgwIDEzNGwtMyA1cS0yNSA0NSAtMzggOTNsLTIgNmwtMTUxIDM4cS02IDQyIC02IDc0cTAgMzMgNiA3M2wxNTEgMzhsMiA2cTEzIDQ4IDM4IDkzbDMgNWwtODAgMTM0cTQ3IDYxIDEwNSAxMDVsMTMzIC04MGw1IDJxNDUgMjUgOTQgMzlsNSAxbDM4IDE1MnE0MyA1IDc0IDV6TTYwMCA4MTUgcS04OSAwIC0xNTIgLTYzdC02MyAtMTUxLjV0NjMgLTE1MS41dDE1MiAtNjN0MTUyIDYzdDYzIDE1MS41dC02MyAxNTEuNXQtMTUyIDYzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMjA7IiBkPSJNNTAwIDEzMDBoMzAwcTQxIDAgNzAuNSAtMjkuNXQyOS41IC03MC41di0xMDBoMjc1cTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNzVoLTExMDB2NzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgyNzV2MTAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNXpNNTAwIDEyMDB2LTEwMGgzMDB2MTAwaC0zMDB6TTExMDAgOTAwdi04MDBxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTcwMHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjUgdjgwMGg5MDB6TTMwMCA4MDB2LTcwMGgxMDB2NzAwaC0xMDB6TTUwMCA4MDB2LTcwMGgxMDB2NzAwaC0xMDB6TTcwMCA4MDB2LTcwMGgxMDB2NzAwaC0xMDB6TTkwMCA4MDB2LTcwMGgxMDB2NzAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAyMTsiIGQ9Ik0xOCA2MThsNjIwIDYwOHE4IDcgMTguNSA3dDE3LjUgLTdsNjA4IC02MDhxOCAtOCA1LjUgLTEzdC0xMi41IC01aC0xNzV2LTU3NXEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTI1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djM3NWgtMzAwdi0zNzVxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1NzVoLTE3NXEtMTAgMCAtMTIuNSA1dDUuNSAxM3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDIyOyIgZD0iTTYwMCAxMjAwdi00MDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDMwMHYtNjUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC04MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djExMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDQ1MHpNMTAwMCA4MDBoLTI1MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMjM7IiBkPSJNNjAwIDExNzdxMTE3IDAgMjI0IC00NS41dDE4NC41IC0xMjN0MTIzIC0xODQuNXQ0NS41IC0yMjR0LTQ1LjUgLTIyNHQtMTIzIC0xODQuNXQtMTg0LjUgLTEyM3QtMjI0IC00NS41dC0yMjQgNDUuNXQtMTg0LjUgMTIzdC0xMjMgMTg0LjV0LTQ1LjUgMjI0dDQ1LjUgMjI0dDEyMyAxODQuNXQxODQuNSAxMjN0MjI0IDQ1LjV6TTYwMCAxMDI3cS0xMTYgMCAtMjE0LjUgLTU3dC0xNTUuNSAtMTU1LjV0LTU3IC0yMTQuNXQ1NyAtMjE0LjUgdDE1NS41IC0xNTUuNXQyMTQuNSAtNTd0MjE0LjUgNTd0MTU1LjUgMTU1LjV0NTcgMjE0LjV0LTU3IDIxNC41dC0xNTUuNSAxNTUuNXQtMjE0LjUgNTd6TTUyNSA5MDBoNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0yNzVoMTc1cTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYzNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDI0OyIgZD0iTTEzMDAgMGgtNTM4bC00MSA0MDBoLTI0MmwtNDEgLTQwMGgtNTM4bDQzMSAxMjAwaDIwOWwtMjEgLTMwMGgxNjJsLTIwIDMwMGgyMDh6TTUxNSA4MDBsLTI3IC0zMDBoMjI0bC0yNyAzMDBoLTE3MHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDI1OyIgZD0iTTU1MCAxMjAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDUwaDE5MXEyMCAwIDI1LjUgLTExLjV0LTcuNSAtMjcuNWwtMzI3IC00MDBxLTEzIC0xNiAtMzIgLTE2dC0zMiAxNmwtMzI3IDQwMHEtMTMgMTYgLTcuNSAyNy41dDI1LjUgMTEuNWgxOTF2NDUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMTEyNSA0MDBoNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0zNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41IGgtMTA1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djM1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTc1aDkwMHYxNzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDI2OyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02MDAgMTAyN3EtMTE2IDAgLTIxNC41IC01N3QtMTU1LjUgLTE1NS41dC01NyAtMjE0LjV0NTcgLTIxNC41IHQxNTUuNSAtMTU1LjV0MjE0LjUgLTU3dDIxNC41IDU3dDE1NS41IDE1NS41dDU3IDIxNC41dC01NyAyMTQuNXQtMTU1LjUgMTU1LjV0LTIxNC41IDU3ek01MjUgOTAwaDE1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTI3NWgxMzdxMjEgMCAyNiAtMTEuNXQtOCAtMjcuNWwtMjIzIC0yNzVxLTEzIC0xNiAtMzIgLTE2dC0zMiAxNmwtMjIzIDI3NXEtMTMgMTYgLTggMjcuNXQyNiAxMS41aDEzN3YyNzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXogIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAyNzsiIGQ9Ik02MDAgMTE3N3ExMTcgMCAyMjQgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNHQtNDUuNSAtMjI0dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjQgLTQ1LjV0LTIyNCA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjR0NDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXpNNjAwIDEwMjdxLTExNiAwIC0yMTQuNSAtNTd0LTE1NS41IC0xNTUuNXQtNTcgLTIxNC41dDU3IC0yMTQuNSB0MTU1LjUgLTE1NS41dDIxNC41IC01N3QyMTQuNSA1N3QxNTUuNSAxNTUuNXQ1NyAyMTQuNXQtNTcgMjE0LjV0LTE1NS41IDE1NS41dC0yMTQuNSA1N3pNNjMyIDkxNGwyMjMgLTI3NXExMyAtMTYgOCAtMjcuNXQtMjYgLTExLjVoLTEzN3YtMjc1cTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2Mjc1aC0xMzdxLTIxIDAgLTI2IDExLjV0OCAyNy41bDIyMyAyNzVxMTMgMTYgMzIgMTYgdDMyIC0xNnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDI4OyIgZD0iTTIyNSAxMjAwaDc1MHExMCAwIDE5LjUgLTd0MTIuNSAtMTdsMTg2IC02NTJxNyAtMjQgNyAtNDl2LTQyNXEwIC0xMiAtNCAtMjd0LTkgLTE3cS0xMiAtNiAtMzcgLTZoLTExMDBxLTEyIDAgLTI3IDR0LTE3IDhxLTYgMTMgLTYgMzhsMSA0MjVxMCAyNSA3IDQ5bDE4NSA2NTJxMyAxMCAxMi41IDE3dDE5LjUgN3pNODc4IDEwMDBoLTU1NnEtMTAgMCAtMTkgLTd0LTExIC0xOGwtODcgLTQ1MHEtMiAtMTEgNCAtMTh0MTYgLTdoMTUwIHExMCAwIDE5LjUgLTd0MTEuNSAtMTdsMzggLTE1MnEyIC0xMCAxMS41IC0xN3QxOS41IC03aDI1MHExMCAwIDE5LjUgN3QxMS41IDE3bDM4IDE1MnEyIDEwIDExLjUgMTd0MTkuNSA3aDE1MHExMCAwIDE2IDd0NCAxOGwtODcgNDUwcS0yIDExIC0xMSAxOHQtMTkgN3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDI5OyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02MDAgMTAyN3EtMTE2IDAgLTIxNC41IC01N3QtMTU1LjUgLTE1NS41dC01NyAtMjE0LjV0NTcgLTIxNC41IHQxNTUuNSAtMTU1LjV0MjE0LjUgLTU3dDIxNC41IDU3dDE1NS41IDE1NS41dDU3IDIxNC41dC01NyAyMTQuNXQtMTU1LjUgMTU1LjV0LTIxNC41IDU3ek01NDAgODIwbDI1MyAtMTkwcTE3IC0xMiAxNyAtMzB0LTE3IC0zMGwtMjUzIC0xOTBxLTE2IC0xMiAtMjggLTYuNXQtMTIgMjYuNXY0MDBxMCAyMSAxMiAyNi41dDI4IC02LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzMDsiIGQ9Ik05NDcgMTA2MGwxMzUgMTM1cTcgNyAxMi41IDV0NS41IC0xM3YtMzYycTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMzYycS0xMSAwIC0xMyA1LjV0NSAxMi41bDEzMyAxMzNxLTEwOSA3NiAtMjM4IDc2cS0xMTYgMCAtMjE0LjUgLTU3dC0xNTUuNSAtMTU1LjV0LTU3IC0yMTQuNXQ1NyAtMjE0LjV0MTU1LjUgLTE1NS41dDIxNC41IC01N3QyMTQuNSA1N3QxNTUuNSAxNTUuNXQ1NyAyMTQuNWgxNTBxMCAtMTE3IC00NS41IC0yMjQgdC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjQgLTQ1LjV0LTIyNCA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjR0NDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXExOTIgMCAzNDcgLTExN3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDMxOyIgZD0iTTk0NyAxMDYwbDEzNSAxMzVxNyA3IDEyLjUgNXQ1LjUgLTEzdi0zNjFxMCAtMTEgLTcuNSAtMTguNXQtMTguNSAtNy41aC0zNjFxLTExIDAgLTEzIDUuNXQ1IDEyLjVsMTM0IDEzNHEtMTEwIDc1IC0yMzkgNzVxLTExNiAwIC0yMTQuNSAtNTd0LTE1NS41IC0xNTUuNXQtNTcgLTIxNC41aC0xNTBxMCAxMTcgNDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXExOTIgMCAzNDcgLTExN3pNMTAyNyA2MDBoMTUwIHEwIC0xMTcgLTQ1LjUgLTIyNHQtMTIzIC0xODQuNXQtMTg0LjUgLTEyM3QtMjI0IC00NS41cS0xOTIgMCAtMzQ4IDExOGwtMTM0IC0xMzRxLTcgLTggLTEyLjUgLTUuNXQtNS41IDEyLjV2MzYwcTAgMTEgNy41IDE4LjV0MTguNSA3LjVoMzYwcTEwIDAgMTIuNSAtNS41dC01LjUgLTEyLjVsLTEzMyAtMTMzcTExMCAtNzYgMjQwIC03NnExMTYgMCAyMTQuNSA1N3QxNTUuNSAxNTUuNXQ1NyAyMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDMyOyIgZD0iTTEyNSAxMjAwaDEwNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xMTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMTA1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djExNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNMTA3NSAxMDAwaC04NTBxLTEwIDAgLTE3LjUgLTcuNXQtNy41IC0xNy41di04NTBxMCAtMTAgNy41IC0xNy41dDE3LjUgLTcuNWg4NTBxMTAgMCAxNy41IDcuNXQ3LjUgMTcuNXY4NTAgcTAgMTAgLTcuNSAxNy41dC0xNy41IDcuNXpNMzI1IDkwMGg1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek01MjUgOTAwaDQ1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtNDUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2NTAgcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTMyNSA3MDBoNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di01MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2NTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNNTI1IDcwMGg0NTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di01MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTQ1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djUwIHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek0zMjUgNTAwaDUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC01MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTUyNSA1MDBoNDUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC00NTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1MCBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNMzI1IDMwMGg1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek01MjUgMzAwaDQ1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtNDUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2NTAgcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzMzsiIGQ9Ik05MDAgODAwdjIwMHEwIDgzIC01OC41IDE0MS41dC0xNDEuNSA1OC41aC0zMDBxLTgyIDAgLTE0MSAtNTl0LTU5IC0xNDF2LTIwMGgtMTAwcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41di02MDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDkwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2NjAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41aC0xMDB6TTQwMCA4MDB2MTUwcTAgMjEgMTUgMzUuNXQzNSAxNC41aDIwMCBxMjAgMCAzNSAtMTQuNXQxNSAtMzUuNXYtMTUwaC0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzNDsiIGQ9Ik0xMjUgMTEwMGg1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTEwNzVoLTEwMHYxMDc1cTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTEwNzUgMTA1MnE0IDAgOSAtMnExNiAtNiAxNiAtMjN2LTQyMXEwIC02IC0zIC0xMnEtMzMgLTU5IC02Ni41IC05OXQtNjUuNSAtNTh0LTU2LjUgLTI0LjV0LTUyLjUgLTYuNXEtMjYgMCAtNTcuNSA2LjV0LTUyLjUgMTMuNXQtNjAgMjFxLTQxIDE1IC02MyAyMi41dC01Ny41IDE1dC02NS41IDcuNSBxLTg1IDAgLTE2MCAtNTdxLTcgLTUgLTE1IC01cS02IDAgLTExIDNxLTE0IDcgLTE0IDIydjQzOHEyMiA1NSA4MiA5OC41dDExOSA0Ni41cTIzIDIgNDMgMC41dDQzIC03dDMyLjUgLTguNXQzOCAtMTN0MzIuNSAtMTFxNDEgLTE0IDYzLjUgLTIxdDU3IC0xNHQ2My41IC03cTEwMyAwIDE4MyA4N3E3IDggMTggOHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDM1OyIgZD0iTTYwMCAxMTc1cTExNiAwIDIyNyAtNDkuNXQxOTIuNSAtMTMxdDEzMSAtMTkyLjV0NDkuNSAtMjI3di0zMDBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC01MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djMwMHEwIDEyNyAtNzAuNSAyMzEuNXQtMTg0LjUgMTYxLjV0LTI0NSA1N3QtMjQ1IC01N3QtMTg0LjUgLTE2MS41dC03MC41IC0yMzEuNXYtMzAwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtNTAgcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MzAwcTAgMTE2IDQ5LjUgMjI3dDEzMSAxOTIuNXQxOTIuNSAxMzF0MjI3IDQ5LjV6TTIyMCA1MDBoMTYwcTggMCAxNCAtNnQ2IC0xNHYtNDYwcTAgLTggLTYgLTE0dC0xNCAtNmgtMTYwcS04IDAgLTE0IDZ0LTYgMTR2NDYwcTAgOCA2IDE0dDE0IDZ6TTgyMCA1MDBoMTYwcTggMCAxNCAtNnQ2IC0xNHYtNDYwcTAgLTggLTYgLTE0dC0xNCAtNmgtMTYwcS04IDAgLTE0IDZ0LTYgMTR2NDYwIHEwIDggNiAxNHQxNCA2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMzY7IiBkPSJNMzIxIDgxNGwyNTggMTcycTkgNiAxNSAyLjV0NiAtMTMuNXYtNzUwcTAgLTEwIC02IC0xMy41dC0xNSAyLjVsLTI1OCAxNzJxLTIxIDE0IC00NiAxNGgtMjUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MzUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoMjUwcTI1IDAgNDYgMTR6TTkwMCA2NjhsMTIwIDEyMHE3IDcgMTcgN3QxNyAtN2wzNCAtMzRxNyAtNyA3IC0xN3QtNyAtMTdsLTEyMCAtMTIwbDEyMCAtMTIwcTcgLTcgNyAtMTcgdC03IC0xN2wtMzQgLTM0cS03IC03IC0xNyAtN3QtMTcgN2wtMTIwIDExOWwtMTIwIC0xMTlxLTcgLTcgLTE3IC03dC0xNyA3bC0zNCAzNHEtNyA3IC03IDE3dDcgMTdsMTE5IDEyMGwtMTE5IDEyMHEtNyA3IC03IDE3dDcgMTdsMzQgMzRxNyA4IDE3IDh0MTcgLTh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzNzsiIGQ9Ik0zMjEgODE0bDI1OCAxNzJxOSA2IDE1IDIuNXQ2IC0xMy41di03NTBxMCAtMTAgLTYgLTEzLjV0LTE1IDIuNWwtMjU4IDE3MnEtMjEgMTQgLTQ2IDE0aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYzNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgyNTBxMjUgMCA0NiAxNHpNNzY2IDkwMGg0cTEwIC0xIDE2IC0xMHE5NiAtMTI5IDk2IC0yOTBxMCAtMTU0IC05MCAtMjgxcS02IC05IC0xNyAtMTBsLTMgLTFxLTkgMCAtMTYgNiBsLTI5IDIzcS03IDcgLTguNSAxNi41dDQuNSAxNy41cTcyIDEwMyA3MiAyMjlxMCAxMzIgLTc4IDIzOHEtNiA4IC00LjUgMTh0OS41IDE3bDI5IDIycTcgNSAxNSA1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMzg7IiBkPSJNOTY3IDEwMDRoM3ExMSAtMSAxNyAtMTBxMTM1IC0xNzkgMTM1IC0zOTZxMCAtMTA1IC0zNCAtMjA2LjV0LTk4IC0xODUuNXEtNyAtOSAtMTcgLTEwaC0zcS05IDAgLTE2IDZsLTQyIDM0cS04IDYgLTkgMTZ0NSAxOHExMTEgMTUwIDExMSAzMjhxMCA5MCAtMjkuNSAxNzZ0LTg0LjUgMTU3cS02IDkgLTUgMTl0MTAgMTZsNDIgMzNxNyA1IDE1IDV6TTMyMSA4MTRsMjU4IDE3MnE5IDYgMTUgMi41dDYgLTEzLjV2LTc1MHEwIC0xMCAtNiAtMTMuNSB0LTE1IDIuNWwtMjU4IDE3MnEtMjEgMTQgLTQ2IDE0aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYzNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgyNTBxMjUgMCA0NiAxNHpNNzY2IDkwMGg0cTEwIC0xIDE2IC0xMHE5NiAtMTI5IDk2IC0yOTBxMCAtMTU0IC05MCAtMjgxcS02IC05IC0xNyAtMTBsLTMgLTFxLTkgMCAtMTYgNmwtMjkgMjNxLTcgNyAtOC41IDE2LjV0NC41IDE3LjVxNzIgMTAzIDcyIDIyOXEwIDEzMiAtNzggMjM4IHEtNiA4IC00LjUgMTguNXQ5LjUgMTYuNWwyOSAyMnE3IDUgMTUgNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDM5OyIgZD0iTTUwMCA5MDBoMTAwdi0xMDBoLTEwMHYtMTAwaC00MDB2LTEwMGgtMTAwdjYwMGg1MDB2LTMwMHpNMTIwMCA3MDBoLTIwMHYtMTAwaDIwMHYtMjAwaC0zMDB2MzAwaC0yMDB2MzAwaC0xMDB2MjAwaDYwMHYtNTAwek0xMDAgMTEwMHYtMzAwaDMwMHYzMDBoLTMwMHpNODAwIDExMDB2LTMwMGgzMDB2MzAwaC0zMDB6TTMwMCA5MDBoLTEwMHYxMDBoMTAwdi0xMDB6TTEwMDAgOTAwaC0xMDB2MTAwaDEwMHYtMTAwek0zMDAgNTAwaDIwMHYtNTAwIGgtNTAwdjUwMGgyMDB2MTAwaDEwMHYtMTAwek04MDAgMzAwaDIwMHYtMTAwaC0xMDB2LTEwMGgtMjAwdjEwMGgtMTAwdjEwMGgxMDB2MjAwaC0yMDB2MTAwaDMwMHYtMzAwek0xMDAgNDAwdi0zMDBoMzAwdjMwMGgtMzAwek0zMDAgMjAwaC0xMDB2MTAwaDEwMHYtMTAwek0xMjAwIDIwMGgtMTAwdjEwMGgxMDB2LTEwMHpNNzAwIDBoLTEwMHYxMDBoMTAwdi0xMDB6TTEyMDAgMGgtMzAwdjEwMGgzMDB2LTEwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQwOyIgZD0iTTEwMCAyMDBoLTEwMHYxMDAwaDEwMHYtMTAwMHpNMzAwIDIwMGgtMTAwdjEwMDBoMTAwdi0xMDAwek03MDAgMjAwaC0yMDB2MTAwMGgyMDB2LTEwMDB6TTkwMCAyMDBoLTEwMHYxMDAwaDEwMHYtMTAwMHpNMTIwMCAyMDBoLTIwMHYxMDAwaDIwMHYtMTAwMHpNNDAwIDBoLTMwMHYxMDBoMzAwdi0xMDB6TTYwMCAwaC0xMDB2OTFoMTAwdi05MXpNODAwIDBoLTEwMHY5MWgxMDB2LTkxek0xMTAwIDBoLTIwMHY5MWgyMDB2LTkxeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNDE7IiBkPSJNNTAwIDEyMDBsNjgyIC02ODJxOCAtOCA4IC0xOHQtOCAtMThsLTQ2NCAtNDY0cS04IC04IC0xOCAtOHQtMTggOGwtNjgyIDY4MmwxIDQ3NXEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDQ3NHpNMzE5LjUgMTAyNC41cS0yOS41IDI5LjUgLTcxIDI5LjV0LTcxIC0yOS41dC0yOS41IC03MS41dDI5LjUgLTcxLjV0NzEgLTI5LjV0NzEgMjkuNXQyOS41IDcxLjV0LTI5LjUgNzEuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQyOyIgZD0iTTUwMCAxMjAwbDY4MiAtNjgycTggLTggOCAtMTh0LTggLTE4bC00NjQgLTQ2NHEtOCAtOCAtMTggLTh0LTE4IDhsLTY4MiA2ODJsMSA0NzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWg0NzR6TTgwMCAxMjAwbDY4MiAtNjgycTggLTggOCAtMTh0LTggLTE4bC00NjQgLTQ2NHEtOCAtOCAtMTggLTh0LTE4IDhsLTU2IDU2bDQyNCA0MjZsLTcwMCA3MDBoMTUwek0zMTkuNSAxMDI0LjVxLTI5LjUgMjkuNSAtNzEgMjkuNXQtNzEgLTI5LjUgdC0yOS41IC03MS41dDI5LjUgLTcxLjV0NzEgLTI5LjV0NzEgMjkuNXQyOS41IDcxLjV0LTI5LjUgNzEuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQzOyIgZD0iTTMwMCAxMjAwaDgyNXE3NSAwIDc1IC03NXYtOTAwcTAgLTI1IC0xOCAtNDNsLTY0IC02NHEtOCAtOCAtMTMgLTUuNXQtNSAxMi41djk1MHEwIDEwIC03LjUgMTcuNXQtMTcuNSA3LjVoLTcwMHEtMjUgMCAtNDMgLTE4bC02NCAtNjRxLTggLTggLTUuNSAtMTN0MTIuNSAtNWg3MDBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di05NTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC04NTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY5NzUgcTAgMjUgMTggNDNsMTM5IDEzOXExOCAxOCA0MyAxOHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQ0OyIgZD0iTTI1MCAxMjAwaDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTE1MGwtNDUwIDQ0NGwtNDUwIC00NDV2MTE1MXEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0NTsiIGQ9Ik04MjIgMTIwMGgtNDQ0cS0xMSAwIC0xOSAtNy41dC05IC0xNy41bC03OCAtMzAxcS03IC0yNCA3IC00NWw1NyAtMTA4cTYgLTkgMTcuNSAtMTV0MjEuNSAtNmg0NTBxMTAgMCAyMS41IDZ0MTcuNSAxNWw2MiAxMDhxMTQgMjEgNyA0NWwtODMgMzAxcS0xIDEwIC05IDE3LjV0LTE5IDcuNXpNMTE3NSA4MDBoLTE1MHEtMTAgMCAtMjEgLTYuNXQtMTUgLTE1LjVsLTc4IC0xNTZxLTQgLTkgLTE1IC0xNS41dC0yMSAtNi41aC01NTAgcS0xMCAwIC0yMSA2LjV0LTE1IDE1LjVsLTc4IDE1NnEtNCA5IC0xNSAxNS41dC0yMSA2LjVoLTE1MHEtMTAgMCAtMTcuNSAtNy41dC03LjUgLTE3LjV2LTY1MHEwIC0xMCA3LjUgLTE3LjV0MTcuNSAtNy41aDE1MHExMCAwIDE3LjUgNy41dDcuNSAxNy41djE1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDc1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCA3LjUgLTE3LjV0MTcuNSAtNy41aDE1MHExMCAwIDE3LjUgNy41IHQ3LjUgMTcuNXY2NTBxMCAxMCAtNy41IDE3LjV0LTE3LjUgNy41ek04NTAgMjAwaC01MDBxLTEwIDAgLTE5LjUgLTd0LTExLjUgLTE3bC0zOCAtMTUycS0yIC0xMCAzLjUgLTE3dDE1LjUgLTdoNjAwcTEwIDAgMTUuNSA3dDMuNSAxN2wtMzggMTUycS0yIDEwIC0xMS41IDE3dC0xOS41IDd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0NjsiIGQ9Ik01MDAgMTEwMGgyMDBxNTYgMCAxMDIuNSAtMjAuNXQ3Mi41IC01MHQ0NCAtNTl0MjUgLTUwLjVsNiAtMjBoMTUwcTQxIDAgNzAuNSAtMjkuNXQyOS41IC03MC41di02MDBxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTEwMDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djYwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjVoMTUwcTIgOCA2LjUgMjEuNXQyNCA0OHQ0NSA2MXQ3MiA0OHQxMDIuNSAyMS41ek05MDAgODAwdi0xMDAgaDEwMHYxMDBoLTEwMHpNNjAwIDczMHEtOTUgMCAtMTYyLjUgLTY3LjV0LTY3LjUgLTE2Mi41dDY3LjUgLTE2Mi41dDE2Mi41IC02Ny41dDE2Mi41IDY3LjV0NjcuNSAxNjIuNXQtNjcuNSAxNjIuNXQtMTYyLjUgNjcuNXpNNjAwIDYwM3E0MyAwIDczIC0zMHQzMCAtNzN0LTMwIC03M3QtNzMgLTMwdC03MyAzMHQtMzAgNzN0MzAgNzN0NzMgMzB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0NzsiIGQ9Ik02ODEgMTE5OWwzODUgLTk5OHEyMCAtNTAgNjAgLTkycTE4IC0xOSAzNi41IC0yOS41dDI3LjUgLTExLjVsMTAgLTJ2LTY2aC00MTd2NjZxNTMgMCA3NSA0My41dDUgODguNWwtODIgMjIyaC0zOTFxLTU4IC0xNDUgLTkyIC0yMzRxLTExIC0zNCAtNi41IC01N3QyNS41IC0zN3Q0NiAtMjB0NTUgLTZ2LTY2aC0zNjV2NjZxNTYgMjQgODQgNTJxMTIgMTIgMjUgMzAuNXQyMCAzMS41bDcgMTNsMzk5IDEwMDZoOTN6TTQxNiA1MjFoMzQwIGwtMTYyIDQ1N3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQ4OyIgZD0iTTc1MyA2NDFxNSAtMSAxNC41IC00LjV0MzYgLTE1LjV0NTAuNSAtMjYuNXQ1My41IC00MHQ1MC41IC01NC41dDM1LjUgLTcwdDE0LjUgLTg3cTAgLTY3IC0yNy41IC0xMjUuNXQtNzEuNSAtOTcuNXQtOTguNSAtNjYuNXQtMTA4LjUgLTQwLjV0LTEwMiAtMTNoLTUwMHY4OXE0MSA3IDcwLjUgMzIuNXQyOS41IDY1LjV2ODI3cTAgMjQgLTAuNSAzNHQtMy41IDI0dC04LjUgMTkuNXQtMTcgMTMuNXQtMjggMTIuNXQtNDIuNSAxMS41djcxIGw0NzEgLTFxNTcgMCAxMTUuNSAtMjAuNXQxMDggLTU3dDgwLjUgLTk0dDMxIC0xMjQuNXEwIC01MSAtMTUuNSAtOTYuNXQtMzggLTc0LjV0LTQ1IC01MC41dC0zOC41IC0zMC41ek00MDAgNzAwaDEzOXE3OCAwIDEzMC41IDQ4LjV0NTIuNSAxMjIuNXEwIDQxIC04LjUgNzAuNXQtMjkuNSA1NS41dC02Mi41IDM5LjV0LTEwMy41IDEzLjVoLTExOHYtMzUwek00MDAgMjAwaDIxNnE4MCAwIDEyMSA1MC41dDQxIDEzMC41cTAgOTAgLTYyLjUgMTU0LjUgdC0xNTYuNSA2NC41aC0xNTl2LTQwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQ5OyIgZD0iTTg3NyAxMjAwbDIgLTU3cS04MyAtMTkgLTExNiAtNDUuNXQtNDAgLTY2LjVsLTEzMiAtODM5cS05IC00OSAxMyAtNjl0OTYgLTI2di05N2gtNTAwdjk3cTE4NiAxNiAyMDAgOThsMTczIDgzMnEzIDE3IDMgMzB0LTEuNSAyMi41dC05IDE3LjV0LTEzLjUgMTIuNXQtMjEuNSAxMHQtMjYgOC41dC0zMy41IDEwcS0xMyAzIC0xOSA1djU3aDQyNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDUwOyIgZD0iTTEzMDAgOTAwaC01MHEwIDIxIC00IDM3dC05LjUgMjYuNXQtMTggMTcuNXQtMjIgMTF0LTI4LjUgNS41dC0zMSAydC0zNyAwLjVoLTIwMHYtODUwcTAgLTIyIDI1IC0zNC41dDUwIC0xMy41bDI1IC0ydi0xMDBoLTQwMHYxMDBxNCAwIDExIDAuNXQyNCAzdDMwIDd0MjQgMTV0MTEgMjQuNXY4NTBoLTIwMHEtMjUgMCAtMzcgLTAuNXQtMzEgLTJ0LTI4LjUgLTUuNXQtMjIgLTExdC0xOCAtMTcuNXQtOS41IC0yNi41dC00IC0zN2gtNTB2MzAwIGgxMDAwdi0zMDB6TTE3NSAxMDAwaC03NXYtODAwaDc1bC0xMjUgLTE2N2wtMTI1IDE2N2g3NXY4MDBoLTc1bDEyNSAxNjd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1MTsiIGQ9Ik0xMTAwIDkwMGgtNTBxMCAyMSAtNCAzN3QtOS41IDI2LjV0LTE4IDE3LjV0LTIyIDExdC0yOC41IDUuNXQtMzEgMnQtMzcgMC41aC0yMDB2LTY1MHEwIC0yMiAyNSAtMzQuNXQ1MCAtMTMuNWwyNSAtMnYtMTAwaC00MDB2MTAwcTQgMCAxMSAwLjV0MjQgM3QzMCA3dDI0IDE1dDExIDI0LjV2NjUwaC0yMDBxLTI1IDAgLTM3IC0wLjV0LTMxIC0ydC0yOC41IC01LjV0LTIyIC0xMXQtMTggLTE3LjV0LTkuNSAtMjYuNXQtNCAtMzdoLTUwdjMwMCBoMTAwMHYtMzAwek0xMTY3IDUwbC0xNjcgLTEyNXY3NWgtODAwdi03NWwtMTY3IDEyNWwxNjcgMTI1di03NWg4MDB2NzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1MjsiIGQ9Ik01MCAxMTAwaDYwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC02MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDgwMGgxMDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA1MDBoODAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTgwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgMjAwaDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTEwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1MzsiIGQ9Ik0yNTAgMTEwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNzAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA4MDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDAgcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMjUwIDUwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNzAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCAyMDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDU0OyIgZD0iTTUwMCA5NTB2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg2MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNjAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNMTAwIDY1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDEwMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek0zMDAgMzUwdjEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoODAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTgwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6TTAgNTB2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDAgcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDU1OyIgZD0iTTUwIDExMDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA4MDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDAgcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgNTAwaDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgMjAwaDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTEwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1NjsiIGQ9Ik01MCAxMTAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTM1MCAxMTAwaDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC04MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA4MDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMzUwIDgwMGg4MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtODAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgNTAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTM1MCA1MDBoODAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDAgcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC04MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDIwMGgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0zNTAgMjAwaDgwMCBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtODAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNTc7IiBkPSJNNDAwIDBoLTEwMHYxMTAwaDEwMHYtMTEwMHpNNTUwIDExMDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTUwIDgwMGg1MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMjY3IDU1MGwtMTY3IC0xMjV2NzVoLTIwMHYxMDBoMjAwdjc1ek01NTAgNTAwaDMwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0zMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTU1MCAyMDBoNjAwIHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC02MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1ODsiIGQ9Ik01MCAxMTAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTkwMCAwaC0xMDB2MTEwMGgxMDB2LTExMDB6TTUwIDgwMGg1MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMTEwMCA2MDBoMjAwdi0xMDBoLTIwMHYtNzVsLTE2NyAxMjVsMTY3IDEyNXYtNzV6TTUwIDUwMGgzMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMzAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCAyMDBoNjAwIHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC02MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1OTsiIGQ9Ik03NSAxMDAwaDc1MHEzMSAwIDUzIC0yMnQyMiAtNTN2LTY1MHEwIC0zMSAtMjIgLTUzdC01MyAtMjJoLTc1MHEtMzEgMCAtNTMgMjJ0LTIyIDUzdjY1MHEwIDMxIDIyIDUzdDUzIDIyek0xMjAwIDMwMGwtMzAwIDMwMGwzMDAgMzAwdi02MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA2MDsiIGQ9Ik00NCAxMTAwaDExMTJxMTggMCAzMSAtMTN0MTMgLTMxdi0xMDEycTAgLTE4IC0xMyAtMzF0LTMxIC0xM2gtMTExMnEtMTggMCAtMzEgMTN0LTEzIDMxdjEwMTJxMCAxOCAxMyAzMXQzMSAxM3pNMTAwIDEwMDB2LTczN2wyNDcgMTgybDI5OCAtMTMxbC03NCAxNTZsMjkzIDMxOGwyMzYgLTI4OHY1MDBoLTEwMDB6TTM0MiA4ODRxNTYgMCA5NSAtMzl0MzkgLTk0LjV0LTM5IC05NXQtOTUgLTM5LjV0LTk1IDM5LjV0LTM5IDk1dDM5IDk0LjUgdDk1IDM5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjI7IiBkPSJNNjQ4IDExNjlxMTE3IDAgMjE2IC02MHQxNTYuNSAtMTYxdDU3LjUgLTIxOHEwIC0xMTUgLTcwIC0yNThxLTY5IC0xMDkgLTE1OCAtMjI1LjV0LTE0MyAtMTc5LjVsLTU0IC02MnEtOSA4IC0yNS41IDI0LjV0LTYzLjUgNjcuNXQtOTEgMTAzdC05OC41IDEyOHQtOTUuNSAxNDhxLTYwIDEzMiAtNjAgMjQ5cTAgODggMzQgMTY5LjV0OTEuNSAxNDJ0MTM3IDk2LjV0MTY2LjUgMzZ6TTY1Mi41IDk3NHEtOTEuNSAwIC0xNTYuNSAtNjUgdC02NSAtMTU3dDY1IC0xNTYuNXQxNTYuNSAtNjQuNXQxNTYuNSA2NC41dDY1IDE1Ni41dC02NSAxNTd0LTE1Ni41IDY1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjM7IiBkPSJNNjAwIDExNzdxMTE3IDAgMjI0IC00NS41dDE4NC41IC0xMjN0MTIzIC0xODQuNXQ0NS41IC0yMjR0LTQ1LjUgLTIyNHQtMTIzIC0xODQuNXQtMTg0LjUgLTEyM3QtMjI0IC00NS41dC0yMjQgNDUuNXQtMTg0LjUgMTIzdC0xMjMgMTg0LjV0LTQ1LjUgMjI0dDQ1LjUgMjI0dDEyMyAxODQuNXQxODQuNSAxMjN0MjI0IDQ1LjV6TTYwMCAxNzN2ODU0cS0xMTYgMCAtMjE0LjUgLTU3dC0xNTUuNSAtMTU1LjV0LTU3IC0yMTQuNXQ1NyAtMjE0LjUgdDE1NS41IC0xNTUuNXQyMTQuNSAtNTd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA2NDsiIGQ9Ik01NTQgMTI5NXEyMSAtNzIgNTcuNSAtMTQzLjV0NzYgLTEzMHQ4MyAtMTE4dDgyLjUgLTExN3Q3MCAtMTE2dDQ5LjUgLTEyNnQxOC41IC0xMzYuNXEwIC03MSAtMjUuNSAtMTM1dC02OC41IC0xMTF0LTk5IC04MnQtMTE4LjUgLTU0dC0xMjUuNSAtMjNxLTg0IDUgLTE2MS41IDM0dC0xMzkuNSA3OC41dC05OSAxMjV0LTM3IDE2NC41cTAgNjkgMTggMTM2LjV0NDkuNSAxMjYuNXQ2OS41IDExNi41dDgxLjUgMTE3LjV0ODMuNSAxMTkgdDc2LjUgMTMxdDU4LjUgMTQzek0zNDQgNzEwcS0yMyAtMzMgLTQzLjUgLTcwLjV0LTQwLjUgLTEwMi41dC0xNyAtMTIzcTEgLTM3IDE0LjUgLTY5LjV0MzAgLTUydDQxIC0zN3QzOC41IC0yNC41dDMzIC0xNXEyMSAtNyAzMiAtMXQxMyAyMmw2IDM0cTIgMTAgLTIuNSAyMnQtMTMuNSAxOXEtNSA0IC0xNCAxMnQtMjkuNSA0MC41dC0zMi41IDczLjVxLTI2IDg5IDYgMjcxcTIgMTEgLTYgMTFxLTggMSAtMTUgLTEweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjU7IiBkPSJNMTAwMCAxMDEzbDEwOCAxMTVxMiAxIDUgMnQxMyAydDIwLjUgLTF0MjUgLTkuNXQyOC41IC0yMS41cTIyIC0yMiAyNyAtNDN0MCAtMzJsLTYgLTEwbC0xMDggLTExNXpNMzUwIDExMDBoNDAwcTUwIDAgMTA1IC0xM2wtMTg3IC0xODdoLTM2OHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNXYtNTAwcTAgLTQxIDI5LjUgLTcwLjV0NzAuNSAtMjkuNWg1MDBxNDEgMCA3MC41IDI5LjV0MjkuNSA3MC41djE4MmwyMDAgMjAwdi0zMzIgcTAgLTE2NSAtOTMuNSAtMjU3LjV0LTI1Ni41IC05Mi41aC00MDBxLTE2NSAwIC0yNTcuNSA5Mi41dC05Mi41IDI1Ny41djQwMHEwIDE2NSA5Mi41IDI1Ny41dDI1Ny41IDkyLjV6TTEwMDkgODAzbC0zNjIgLTM2MmwtMTYxIC01MGw1NSAxNzBsMzU1IDM1NXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDY2OyIgZD0iTTM1MCAxMTAwaDM2MXEtMTY0IC0xNDYgLTIxNiAtMjAwaC0xOTVxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNWwyMDAgMTUzdi0xMDNxMCAtMTY1IC05Mi41IC0yNTcuNXQtMjU3LjUgLTkyLjVoLTQwMHEtMTY1IDAgLTI1Ny41IDkyLjV0LTkyLjUgMjU3LjV2NDAwcTAgMTY1IDkyLjUgMjU3LjV0MjU3LjUgOTIuNXogTTgyNCAxMDczbDMzOSAtMzAxcTggLTcgOCAtMTcuNXQtOCAtMTcuNWwtMzQwIC0zMDZxLTcgLTYgLTEyLjUgLTR0LTYuNSAxMXYyMDNxLTI2IDEgLTU0LjUgMHQtNzguNSAtNy41dC05MiAtMTcuNXQtODYgLTM1dC03MCAtNTdxMTAgNTkgMzMgMTA4dDUxLjUgODEuNXQ2NSA1OC41dDY4LjUgNDAuNXQ2NyAyNC41dDU2IDEzLjV0NDAgNC41djIxMHExIDEwIDYuNSAxMi41dDEzLjUgLTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDY3OyIgZD0iTTM1MCAxMTAwaDM1MHE2MCAwIDEyNyAtMjNsLTE3OCAtMTc3aC0zNDlxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNXY2OWwyMDAgMjAwdi0yMTlxMCAtMTY1IC05Mi41IC0yNTcuNXQtMjU3LjUgLTkyLjVoLTQwMHEtMTY1IDAgLTI1Ny41IDkyLjV0LTkyLjUgMjU3LjV2NDAwcTAgMTY1IDkyLjUgMjU3LjV0MjU3LjUgOTIuNXogTTY0MyA2MzlsMzk1IDM5NXE3IDcgMTcuNSA3dDE3LjUgLTdsMTAxIC0xMDFxNyAtNyA3IC0xNy41dC03IC0xNy41bC01MzEgLTUzMnEtNyAtNyAtMTcuNSAtN3QtMTcuNSA3bC0yNDggMjQ4cS03IDcgLTcgMTcuNXQ3IDE3LjVsMTAxIDEwMXE3IDcgMTcuNSA3dDE3LjUgLTdsMTExIC0xMTFxOCAtNyAxOCAtN3QxOCA3eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjg7IiBkPSJNMzE4IDkxOGwyNjQgMjY0cTggOCAxOCA4dDE4IC04bDI2MCAtMjY0cTcgLTggNC41IC0xM3QtMTIuNSAtNWgtMTcwdi0yMDBoMjAwdjE3M3EwIDEwIDUgMTJ0MTMgLTVsMjY0IC0yNjBxOCAtNyA4IC0xNy41dC04IC0xNy41bC0yNjQgLTI2NXEtOCAtNyAtMTMgLTV0LTUgMTJ2MTczaC0yMDB2LTIwMGgxNzBxMTAgMCAxMi41IC01dC00LjUgLTEzbC0yNjAgLTI2NHEtOCAtOCAtMTggLTh0LTE4IDhsLTI2NCAyNjRxLTggOCAtNS41IDEzIHQxMi41IDVoMTc1djIwMGgtMjAwdi0xNzNxMCAtMTAgLTUgLTEydC0xMyA1bC0yNjQgMjY1cS04IDcgLTggMTcuNXQ4IDE3LjVsMjY0IDI2MHE4IDcgMTMgNXQ1IC0xMnYtMTczaDIwMHYyMDBoLTE3NXEtMTAgMCAtMTIuNSA1dDUuNSAxM3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDY5OyIgZD0iTTI1MCAxMTAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDM4bDQ2NCA0NTNxMTUgMTQgMjUuNSAxMHQxMC41IC0yNXYtMTAwMHEwIC0yMSAtMTAuNSAtMjV0LTI1LjUgMTBsLTQ2NCA0NTN2LTQzOHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDcwOyIgZD0iTTUwIDExMDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di00MzhsNDY0IDQ1M3ExNSAxNCAyNS41IDEwdDEwLjUgLTI1di00MzhsNDY0IDQ1M3ExNSAxNCAyNS41IDEwdDEwLjUgLTI1di0xMDAwcTAgLTIxIC0xMC41IC0yNXQtMjUuNSAxMGwtNDY0IDQ1M3YtNDM4cTAgLTIxIC0xMC41IC0yNXQtMjUuNSAxMGwtNDY0IDQ1M3YtNDM4cTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNSB0LTE0LjUgMzUuNXYxMDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDcxOyIgZD0iTTEyMDAgMTA1MHYtMTAwMHEwIC0yMSAtMTAuNSAtMjV0LTI1LjUgMTBsLTQ2NCA0NTN2LTQzOHEwIC0yMSAtMTAuNSAtMjV0LTI1LjUgMTBsLTQ5MiA0ODBxLTE1IDE0IC0xNSAzNXQxNSAzNWw0OTIgNDgwcTE1IDE0IDI1LjUgMTB0MTAuNSAtMjV2LTQzOGw0NjQgNDUzcTE1IDE0IDI1LjUgMTB0MTAuNSAtMjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3MjsiIGQ9Ik0yNDMgMTA3NGw4MTQgLTQ5OHExOCAtMTEgMTggLTI2dC0xOCAtMjZsLTgxNCAtNDk4cS0xOCAtMTEgLTMwLjUgLTR0LTEyLjUgMjh2MTAwMHEwIDIxIDEyLjUgMjh0MzAuNSAtNHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDczOyIgZD0iTTI1MCAxMDAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtODAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djgwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTY1MCAxMDAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtODAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djgwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNzQ7IiBkPSJNMTEwMCA5NTB2LTgwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtODAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY4MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDc1OyIgZD0iTTUwMCA2MTJ2NDM4cTAgMjEgMTAuNSAyNXQyNS41IC0xMGw0OTIgLTQ4MHExNSAtMTQgMTUgLTM1dC0xNSAtMzVsLTQ5MiAtNDgwcS0xNSAtMTQgLTI1LjUgLTEwdC0xMC41IDI1djQzOGwtNDY0IC00NTNxLTE1IC0xNCAtMjUuNSAtMTB0LTEwLjUgMjV2MTAwMHEwIDIxIDEwLjUgMjV0MjUuNSAtMTB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3NjsiIGQ9Ik0xMDQ4IDExMDJsMTAwIDFxMjAgMCAzNSAtMTQuNXQxNSAtMzUuNWw1IC0xMDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41bC0xMDAgLTFxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41bC0yIDQzN2wtNDYzIC00NTRxLTE0IC0xNSAtMjQuNSAtMTAuNXQtMTAuNSAyNS41bC0yIDQzN2wtNDYyIC00NTVxLTE1IC0xNCAtMjUuNSAtOS41dC0xMC41IDI0LjVsLTUgMTAwMHEwIDIxIDEwLjUgMjUuNXQyNS41IC0xMC41bDQ2NiAtNDUwIGwtMiA0MzhxMCAyMCAxMC41IDI0LjV0MjUuNSAtOS41bDQ2NiAtNDUxbC0yIDQzOHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3NzsiIGQ9Ik04NTAgMTEwMGgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDM4bC00NjQgLTQ1M3EtMTUgLTE0IC0yNS41IC0xMHQtMTAuNSAyNXYxMDAwcTAgMjEgMTAuNSAyNXQyNS41IC0xMGw0NjQgLTQ1M3Y0MzhxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNzg7IiBkPSJNNjg2IDEwODFsNTAxIC01NDBxMTUgLTE1IDEwLjUgLTI2dC0yNi41IC0xMWgtMTA0MnEtMjIgMCAtMjYuNSAxMXQxMC41IDI2bDUwMSA1NDBxMTUgMTUgMzYgMTV0MzYgLTE1ek0xNTAgNDAwaDEwMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDc5OyIgZD0iTTg4NSA5MDBsLTM1MiAtMzUzbDM1MiAtMzUzbC0xOTcgLTE5OGwtNTUyIDU1Mmw1NTIgNTUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwODA7IiBkPSJNMTA2NCA1NDdsLTU1MSAtNTUxbC0xOTggMTk4bDM1MyAzNTNsLTM1MyAzNTNsMTk4IDE5OHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDgxOyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02NTAgOTAwaC0xMDBxLTIxIDAgLTM1LjUgLTE0LjV0LTE0LjUgLTM1LjV2LTE1MGgtMTUwIHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMTAwcTAgLTIxIDE0LjUgLTM1LjV0MzUuNSAtMTQuNWgxNTB2LTE1MHEwIC0yMSAxNC41IC0zNS41dDM1LjUgLTE0LjVoMTAwcTIxIDAgMzUuNSAxNC41dDE0LjUgMzUuNXYxNTBoMTUwcTIxIDAgMzUuNSAxNC41dDE0LjUgMzUuNXYxMDBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTE1MHYxNTBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA4MjsiIGQ9Ik02MDAgMTE3N3ExMTcgMCAyMjQgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNHQtNDUuNSAtMjI0dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjQgLTQ1LjV0LTIyNCA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjR0NDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXpNODUwIDcwMGgtNTAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xMDBxMCAtMjEgMTQuNSAtMzUuNSB0MzUuNSAtMTQuNWg1MDBxMjEgMCAzNS41IDE0LjV0MTQuNSAzNS41djEwMHEwIDIxIC0xNC41IDM1LjV0LTM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDgzOyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek03NDEuNSA5MTNxLTEyLjUgMCAtMjEuNSAtOWwtMTIwIC0xMjBsLTEyMCAxMjBxLTkgOSAtMjEuNSA5IHQtMjEuNSAtOWwtMTQxIC0xNDFxLTkgLTkgLTkgLTIxLjV0OSAtMjEuNWwxMjAgLTEyMGwtMTIwIC0xMjBxLTkgLTkgLTkgLTIxLjV0OSAtMjEuNWwxNDEgLTE0MXE5IC05IDIxLjUgLTl0MjEuNSA5bDEyMCAxMjBsMTIwIC0xMjBxOSAtOSAyMS41IC05dDIxLjUgOWwxNDEgMTQxcTkgOSA5IDIxLjV0LTkgMjEuNWwtMTIwIDEyMGwxMjAgMTIwcTkgOSA5IDIxLjV0LTkgMjEuNWwtMTQxIDE0MXEtOSA5IC0yMS41IDl6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA4NDsiIGQ9Ik02MDAgMTE3N3ExMTcgMCAyMjQgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNHQtNDUuNSAtMjI0dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjQgLTQ1LjV0LTIyNCA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjR0NDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXpNNTQ2IDYyM2wtODQgODVxLTcgNyAtMTcuNSA3dC0xOC41IC03bC0xMzkgLTEzOXEtNyAtOCAtNyAtMTh0NyAtMTggbDI0MiAtMjQxcTcgLTggMTcuNSAtOHQxNy41IDhsMzc1IDM3NXE3IDcgNyAxNy41dC03IDE4LjVsLTEzOSAxMzlxLTcgNyAtMTcuNSA3dC0xNy41IC03eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwODU7IiBkPSJNNjAwIDExNzdxMTE3IDAgMjI0IC00NS41dDE4NC41IC0xMjN0MTIzIC0xODQuNXQ0NS41IC0yMjR0LTQ1LjUgLTIyNHQtMTIzIC0xODQuNXQtMTg0LjUgLTEyM3QtMjI0IC00NS41dC0yMjQgNDUuNXQtMTg0LjUgMTIzdC0xMjMgMTg0LjV0LTQ1LjUgMjI0dDQ1LjUgMjI0dDEyMyAxODQuNXQxODQuNSAxMjN0MjI0IDQ1LjV6TTU4OCA5NDFxLTI5IDAgLTU5IC01LjV0LTYzIC0yMC41dC01OCAtMzguNXQtNDEuNSAtNjN0LTE2LjUgLTg5LjUgcTAgLTI1IDIwIC0yNWgxMzFxMzAgLTUgMzUgMTFxNiAyMCAyMC41IDI4dDQ1LjUgOHEyMCAwIDMxLjUgLTEwLjV0MTEuNSAtMjguNXEwIC0yMyAtNyAtMzR0LTI2IC0xOHEtMSAwIC0xMy41IC00dC0xOS41IC03LjV0LTIwIC0xMC41dC0yMiAtMTd0LTE4LjUgLTI0dC0xNS41IC0zNXQtOCAtNDZxLTEgLTggNS41IC0xNi41dDIwLjUgLTguNWgxNzNxNyAwIDIyIDh0MzUgMjh0MzcuNSA0OHQyOS41IDc0dDEyIDEwMHEwIDQ3IC0xNyA4MyB0LTQyLjUgNTd0LTU5LjUgMzQuNXQtNjQgMTh0LTU5IDQuNXpNNjc1IDQwMGgtMTUwcS0xMCAwIC0xNy41IC03LjV0LTcuNSAtMTcuNXYtMTUwcTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoMTUwcTEwIDAgMTcuNSA3LjV0Ny41IDE3LjV2MTUwcTAgMTAgLTcuNSAxNy41dC0xNy41IDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDg2OyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02NzUgMTAwMGgtMTUwcS0xMCAwIC0xNy41IC03LjV0LTcuNSAtMTcuNXYtMTUwcTAgLTEwIDcuNSAtMTcuNSB0MTcuNSAtNy41aDE1MHExMCAwIDE3LjUgNy41dDcuNSAxNy41djE1MHEwIDEwIC03LjUgMTcuNXQtMTcuNSA3LjV6TTY3NSA3MDBoLTI1MHEtMTAgMCAtMTcuNSAtNy41dC03LjUgLTE3LjV2LTUwcTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoNzV2LTIwMGgtNzVxLTEwIDAgLTE3LjUgLTcuNXQtNy41IC0xNy41di01MHEwIC0xMCA3LjUgLTE3LjV0MTcuNSAtNy41aDM1MHExMCAwIDE3LjUgNy41dDcuNSAxNy41djUwcTAgMTAgLTcuNSAxNy41IHQtMTcuNSA3LjVoLTc1djI3NXEwIDEwIC03LjUgMTcuNXQtMTcuNSA3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA4NzsiIGQ9Ik01MjUgMTIwMGgxNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xOTRxMTAzIC0yNyAxNzguNSAtMTAyLjV0MTAyLjUgLTE3OC41aDE5NHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE5NHEtMjcgLTEwMyAtMTAyLjUgLTE3OC41dC0xNzguNSAtMTAyLjV2LTE5NHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE5NCBxLTEwMyAyNyAtMTc4LjUgMTAyLjV0LTEwMi41IDE3OC41aC0xOTRxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgxOTRxMjcgMTAzIDEwMi41IDE3OC41dDE3OC41IDEwMi41djE5NHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek03MDAgODkzdi0xNjhxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0xNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNjhxLTY4IC0yMyAtMTE5IC03NCB0LTc0IC0xMTloMTY4cTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMTY4cTIzIC02OCA3NCAtMTE5dDExOSAtNzR2MTY4cTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoMTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTY4cTY4IDIzIDExOSA3NHQ3NCAxMTloLTE2OHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDE2OCBxLTIzIDY4IC03NCAxMTl0LTExOSA3NHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDg4OyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02MDAgMTAyN3EtMTE2IDAgLTIxNC41IC01N3QtMTU1LjUgLTE1NS41dC01NyAtMjE0LjV0NTcgLTIxNC41IHQxNTUuNSAtMTU1LjV0MjE0LjUgLTU3dDIxNC41IDU3dDE1NS41IDE1NS41dDU3IDIxNC41dC01NyAyMTQuNXQtMTU1LjUgMTU1LjV0LTIxNC41IDU3ek03NTkgODIzbDY0IC02NHE3IC03IDcgLTE3LjV0LTcgLTE3LjVsLTEyNCAtMTI0bDEyNCAtMTI0cTcgLTcgNyAtMTcuNXQtNyAtMTcuNWwtNjQgLTY0cS03IC03IC0xNy41IC03dC0xNy41IDdsLTEyNCAxMjRsLTEyNCAtMTI0cS03IC03IC0xNy41IC03dC0xNy41IDdsLTY0IDY0IHEtNyA3IC03IDE3LjV0NyAxNy41bDEyNCAxMjRsLTEyNCAxMjRxLTcgNyAtNyAxNy41dDcgMTcuNWw2NCA2NHE3IDcgMTcuNSA3dDE3LjUgLTdsMTI0IC0xMjRsMTI0IDEyNHE3IDcgMTcuNSA3dDE3LjUgLTd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA4OTsiIGQ9Ik02MDAgMTE3N3ExMTcgMCAyMjQgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNHQtNDUuNSAtMjI0dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjQgLTQ1LjV0LTIyNCA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjR0NDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXpNNjAwIDEwMjdxLTExNiAwIC0yMTQuNSAtNTd0LTE1NS41IC0xNTUuNXQtNTcgLTIxNC41dDU3IC0yMTQuNSB0MTU1LjUgLTE1NS41dDIxNC41IC01N3QyMTQuNSA1N3QxNTUuNSAxNTUuNXQ1NyAyMTQuNXQtNTcgMjE0LjV0LTE1NS41IDE1NS41dC0yMTQuNSA1N3pNNzgyIDc4OGwxMDYgLTEwNnE3IC03IDcgLTE3LjV0LTcgLTE3LjVsLTMyMCAtMzIxcS04IC03IC0xOCAtN3QtMTggN2wtMjAyIDIwM3EtOCA3IC04IDE3LjV0OCAxNy41bDEwNiAxMDZxNyA4IDE3LjUgOHQxNy41IC04bDc5IC03OWwxOTcgMTk3cTcgNyAxNy41IDd0MTcuNSAtN3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDkwOyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02MDAgMTAyN3EtMTE2IDAgLTIxNC41IC01N3QtMTU1LjUgLTE1NS41dC01NyAtMjE0LjVxMCAtMTIwIDY1IC0yMjUgbDU4NyA1ODdxLTEwNSA2NSAtMjI1IDY1ek05NjUgODE5bC01ODQgLTU4NHExMDQgLTYyIDIxOSAtNjJxMTE2IDAgMjE0LjUgNTd0MTU1LjUgMTU1LjV0NTcgMjE0LjVxMCAxMTUgLTYyIDIxOXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDkxOyIgZD0iTTM5IDU4Mmw1MjIgNDI3cTE2IDEzIDI3LjUgOHQxMS41IC0yNnYtMjkxaDU1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC01NTB2LTI5MXEwIC0yMSAtMTEuNSAtMjZ0LTI3LjUgOGwtNTIyIDQyN3EtMTYgMTMgLTE2IDMydDE2IDMyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwOTI7IiBkPSJNNjM5IDEwMDlsNTIyIC00MjdxMTYgLTEzIDE2IC0zMnQtMTYgLTMybC01MjIgLTQyN3EtMTYgLTEzIC0yNy41IC04dC0xMS41IDI2djI5MWgtNTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDU1MHYyOTFxMCAyMSAxMS41IDI2dDI3LjUgLTh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA5MzsiIGQ9Ik02ODIgMTE2MWw0MjcgLTUyMnExMyAtMTYgOCAtMjcuNXQtMjYgLTExLjVoLTI5MXYtNTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djU1MGgtMjkxcS0yMSAwIC0yNiAxMS41dDggMjcuNWw0MjcgNTIycTEzIDE2IDMyIDE2dDMyIC0xNnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDk0OyIgZD0iTTU1MCAxMjAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTUwaDI5MXEyMSAwIDI2IC0xMS41dC04IC0yNy41bC00MjcgLTUyMnEtMTMgLTE2IC0zMiAtMTZ0LTMyIDE2bC00MjcgNTIycS0xMyAxNiAtOCAyNy41dDI2IDExLjVoMjkxdjU1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA5NTsiIGQ9Ik02MzkgMTEwOWw1MjIgLTQyN3ExNiAtMTMgMTYgLTMydC0xNiAtMzJsLTUyMiAtNDI3cS0xNiAtMTMgLTI3LjUgLTh0LTExLjUgMjZ2MjkxcS05NCAtMiAtMTgyIC0yMHQtMTcwLjUgLTUydC0xNDcgLTkyLjV0LTEwMC41IC0xMzUuNXE1IDEwNSAyNyAxOTMuNXQ2Ny41IDE2N3QxMTMgMTM1dDE2NyA5MS41dDIyNS41IDQydjI2MnEwIDIxIDExLjUgMjZ0MjcuNSAtOHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDk2OyIgZD0iTTg1MCAxMjAwaDMwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMzAwcTAgLTIxIC0xMC41IC0yNXQtMjQuNSAxMGwtOTQgOTRsLTI0OSAtMjQ5cS04IC03IC0xOCAtN3QtMTggN2wtMTA2IDEwNnEtNyA4IC03IDE4dDcgMThsMjQ5IDI0OWwtOTQgOTRxLTE0IDE0IC0xMCAyNC41dDI1IDEwLjV6TTM1MCAwaC0zMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djMwMHEwIDIxIDEwLjUgMjV0MjQuNSAtMTBsOTQgLTk0bDI0OSAyNDkgcTggNyAxOCA3dDE4IC03bDEwNiAtMTA2cTcgLTggNyAtMTh0LTcgLTE4bC0yNDkgLTI0OWw5NCAtOTRxMTQgLTE0IDEwIC0yNC41dC0yNSAtMTAuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDk3OyIgZD0iTTEwMTQgMTEyMGwxMDYgLTEwNnE3IC04IDcgLTE4dC03IC0xOGwtMjQ5IC0yNDlsOTQgLTk0cTE0IC0xNCAxMCAtMjQuNXQtMjUgLTEwLjVoLTMwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MzAwcTAgMjEgMTAuNSAyNXQyNC41IC0xMGw5NCAtOTRsMjQ5IDI0OXE4IDcgMTggN3QxOCAtN3pNMjUwIDYwMGgzMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTMwMHEwIC0yMSAtMTAuNSAtMjV0LTI0LjUgMTBsLTk0IDk0IGwtMjQ5IC0yNDlxLTggLTcgLTE4IC03dC0xOCA3bC0xMDYgMTA2cS03IDggLTcgMTh0NyAxOGwyNDkgMjQ5bC05NCA5NHEtMTQgMTQgLTEwIDI0LjV0MjUgMTAuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTAxOyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek03MDQgOTAwaC0yMDhxLTIwIDAgLTMyIC0xNC41dC04IC0zNC41bDU4IC0zMDJxNCAtMjAgMjEuNSAtMzQuNSB0MzcuNSAtMTQuNWg1NHEyMCAwIDM3LjUgMTQuNXQyMS41IDM0LjVsNTggMzAycTQgMjAgLTggMzQuNXQtMzIgMTQuNXpNNjc1IDQwMGgtMTUwcS0xMCAwIC0xNy41IC03LjV0LTcuNSAtMTcuNXYtMTUwcTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoMTUwcTEwIDAgMTcuNSA3LjV0Ny41IDE3LjV2MTUwcTAgMTAgLTcuNSAxNy41dC0xNy41IDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTAyOyIgZD0iTTI2MCAxMjAwcTkgMCAxOSAtMnQxNSAtNGw1IC0ycTIyIC0xMCA0NCAtMjNsMTk2IC0xMThxMjEgLTEzIDM2IC0yNHEyOSAtMjEgMzcgLTEycTExIDEzIDQ5IDM1bDE5NiAxMThxMjIgMTMgNDUgMjNxMTcgNyAzOCA3cTIzIDAgNDcgLTE2LjV0MzcgLTMzLjVsMTMgLTE2cTE0IC0yMSAxOCAtNDVsMjUgLTEyM2w4IC00NHExIC05IDguNSAtMTQuNXQxNy41IC01LjVoNjFxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di01MCBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC01MHEtMTAgMCAtMTcuNSAtNy41dC03LjUgLTE3LjV2LTE3NWgtNDAwdjMwMGgtMjAwdi0zMDBoLTQwMHYxNzVxMCAxMCAtNy41IDE3LjV0LTE3LjUgNy41aC01MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoNjFxMTEgMCAxOCAzdDcgOHEwIDQgOSA1MmwyNSAxMjhxNSAyNSAxOSA0NXEyIDMgNSA3dDEzLjUgMTV0MjEuNSAxOS41dDI2LjUgMTUuNSB0MjkuNSA3ek05MTUgMTA3OWwtMTY2IC0xNjJxLTcgLTcgLTUgLTEydDEyIC01aDIxOXExMCAwIDE1IDd0MiAxN2wtNTEgMTQ5cS0zIDEwIC0xMSAxMnQtMTUgLTZ6TTQ2MyA5MTdsLTE3NyAxNTdxLTggNyAtMTYgNXQtMTEgLTEybC01MSAtMTQzcS0zIC0xMCAyIC0xN3QxNSAtN2gyMzFxMTEgMCAxMi41IDV0LTUuNSAxMnpNNTAwIDBoLTM3NXEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djM3NWg0MDB2LTQwMHpNMTEwMCA0MDB2LTM3NSBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0zNzV2NDAwaDQwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTAzOyIgZD0iTTExNjUgMTE5MHE4IDMgMjEgLTYuNXQxMyAtMTcuNXEtMiAtMTc4IC0yNC41IC0zMjMuNXQtNTUuNSAtMjQ1LjV0LTg3IC0xNzQuNXQtMTAyLjUgLTExOC41dC0xMTggLTY4LjV0LTExOC41IC0zM3QtMTIwIC00LjV0LTEwNSA5LjV0LTkwIDE2LjVxLTYxIDEyIC03OCAxMXEtNCAxIC0xMi41IDB0LTM0IC0xNC41dC01Mi41IC00MC41bC0xNTMgLTE1M3EtMjYgLTI0IC0zNyAtMTQuNXQtMTEgNDMuNXEwIDY0IDQyIDEwMnE4IDggNTAuNSA0NSB0NjYuNSA1OHExOSAxNyAzNSA0N3QxMyA2MXEtOSA1NSAtMTAgMTAyLjV0NyAxMTF0MzcgMTMwdDc4IDEyOS41cTM5IDUxIDgwIDg4dDg5LjUgNjMuNXQ5NC41IDQ1dDExMy41IDM2dDEyOSAzMXQxNTcuNSAzN3QxODIgNDcuNXpNMTExNiAxMDk4cS04IDkgLTIyLjUgLTN0LTQ1LjUgLTUwcS0zOCAtNDcgLTExOSAtMTAzLjV0LTE0MiAtODkuNWwtNjIgLTMzcS01NiAtMzAgLTEwMiAtNTd0LTEwNCAtNjh0LTEwMi41IC04MC41dC04NS41IC05MSB0LTY0IC0xMDQuNXEtMjQgLTU2IC0zMSAtODZ0MiAtMzJ0MzEuNSAxNy41dDU1LjUgNTkuNXEyNSAzMCA5NCA3NS41dDEyNS41IDc3LjV0MTQ3LjUgODFxNzAgMzcgMTE4LjUgNjl0MTAyIDc5LjV0OTkgMTExdDg2LjUgMTQ4LjVxMjIgNTAgMjQgNjB0LTYgMTl6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwNDsiIGQ9Ik02NTMgMTIzMXEtMzkgLTY3IC01NC41IC0xMzF0LTEwLjUgLTExNC41dDI0LjUgLTk2LjV0NDcuNSAtODB0NjMuNSAtNjIuNXQ2OC41IC00Ni41dDY1IC0zMHEtNCA3IC0xNy41IDM1dC0xOC41IDM5LjV0LTE3IDM5LjV0LTE3IDQzdC0xMyA0MnQtOS41IDQ0LjV0LTIgNDJ0NCA0M3QxMy41IDM5dDIzIDM4LjVxOTYgLTQyIDE2NSAtMTA3LjV0MTA1IC0xMzh0NTIgLTE1NnQxMyAtMTU5dC0xOSAtMTQ5LjVxLTEzIC01NSAtNDQgLTEwNi41IHQtNjggLTg3dC03OC41IC02NC41dC03Mi41IC00NXQtNTMgLTIycS03MiAtMjIgLTEyNyAtMTFxLTMxIDYgLTEzIDE5cTYgMyAxNyA3cTEzIDUgMzIuNSAyMXQ0MSA0NHQzOC41IDYzLjV0MjEuNSA4MS41dC02LjUgOTQuNXQtNTAgMTA3dC0xMDQgMTE1LjVxMTAgLTEwNCAtMC41IC0xODl0LTM3IC0xNDAuNXQtNjUgLTkzdC04NCAtNTJ0LTkzLjUgLTExdC05NSAyNC41cS04MCAzNiAtMTMxLjUgMTE0dC01My41IDE3MXEtMiAyMyAwIDQ5LjUgdDQuNSA1Mi41dDEzLjUgNTZ0MjcuNSA2MHQ0NiA2NC41dDY5LjUgNjguNXEtOCAtNTMgLTUgLTEwMi41dDE3LjUgLTkwdDM0IC02OC41dDQ0LjUgLTM5dDQ5IC0ycTMxIDEzIDM4LjUgMzZ0LTQuNSA1NXQtMjkgNjQuNXQtMzYgNzV0LTI2IDc1LjVxLTE1IDg1IDIgMTYxLjV0NTMuNSAxMjguNXQ4NS41IDkyLjV0OTMuNSA2MXQ4MS41IDI1LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwNTsiIGQ9Ik02MDAgMTA5NHE4MiAwIDE2MC41IC0yMi41dDE0MCAtNTl0MTE2LjUgLTgyLjV0OTQuNSAtOTV0NjggLTk1dDQyLjUgLTgyLjV0MTQgLTU3LjV0LTE0IC01Ny41dC00MyAtODIuNXQtNjguNSAtOTV0LTk0LjUgLTk1dC0xMTYuNSAtODIuNXQtMTQwIC01OXQtMTU5LjUgLTIyLjV0LTE1OS41IDIyLjV0LTE0MCA1OXQtMTE2LjUgODIuNXQtOTQuNSA5NXQtNjguNSA5NXQtNDMgODIuNXQtMTQgNTcuNXQxNCA1Ny41dDQyLjUgODIuNXQ2OCA5NSB0OTQuNSA5NXQxMTYuNSA4Mi41dDE0MCA1OXQxNjAuNSAyMi41ek04ODggODI5cS0xNSAxNSAtMTggMTJ0NSAtMjJxMjUgLTU3IDI1IC0xMTlxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4dC0yMTIgODh0LTg4IDIxMnEwIDU5IDIzIDExNHE4IDE5IDQuNSAyMnQtMTcuNSAtMTJxLTcwIC02OSAtMTYwIC0xODRxLTEzIC0xNiAtMTUgLTQwLjV0OSAtNDIuNXEyMiAtMzYgNDcgLTcxdDcwIC04MnQ5Mi41IC04MXQxMTMgLTU4LjV0MTMzLjUgLTI0LjUgdDEzMy41IDI0dDExMyA1OC41dDkyLjUgODEuNXQ3MCA4MS41dDQ3IDcwLjVxMTEgMTggOSA0Mi41dC0xNCA0MS41cS05MCAxMTcgLTE2MyAxODl6TTQ0OCA3MjdsLTM1IC0zNnEtMTUgLTE1IC0xOS41IC0zOC41dDQuNSAtNDEuNXEzNyAtNjggOTMgLTExNnExNiAtMTMgMzguNSAtMTF0MzYuNSAxN2wzNSAzNHExNCAxNSAxMi41IDMzLjV0LTE2LjUgMzMuNXEtNDQgNDQgLTg5IDExN3EtMTEgMTggLTI4IDIwdC0zMiAtMTJ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwNjsiIGQ9Ik01OTIgMGgtMTQ4bDMxIDEyMHEtOTEgMjAgLTE3NS41IDY4LjV0LTE0My41IDEwNi41dC0xMDMuNSAxMTl0LTY2LjUgMTEwdC0yMiA3NnEwIDIxIDE0IDU3LjV0NDIuNSA4Mi41dDY4IDk1dDk0LjUgOTV0MTE2LjUgODIuNXQxNDAgNTl0MTYwLjUgMjIuNXE2MSAwIDEyNiAtMTVsMzIgMTIxaDE0OHpNOTQ0IDc3MGw0NyAxODFxMTA4IC04NSAxNzYuNSAtMTkydDY4LjUgLTE1OXEwIC0yNiAtMTkuNSAtNzF0LTU5LjUgLTEwMnQtOTMgLTExMiB0LTEyOSAtMTA0LjV0LTE1OCAtNzUuNWw0NiAxNzNxNzcgNDkgMTM2IDExN3Q5NyAxMzFxMTEgMTggOSA0Mi41dC0xNCA0MS41cS01NCA3MCAtMTA3IDEzMHpNMzEwIDgyNHEtNzAgLTY5IC0xNjAgLTE4NHEtMTMgLTE2IC0xNSAtNDAuNXQ5IC00Mi41cTE4IC0zMCAzOSAtNjB0NTcgLTcwLjV0NzQgLTczdDkwIC02MXQxMDUgLTQxLjVsNDEgMTU0cS0xMDcgMTggLTE3OC41IDEwMS41dC03MS41IDE5My41cTAgNTkgMjMgMTE0cTggMTkgNC41IDIyIHQtMTcuNSAtMTJ6TTQ0OCA3MjdsLTM1IC0zNnEtMTUgLTE1IC0xOS41IC0zOC41dDQuNSAtNDEuNXEzNyAtNjggOTMgLTExNnExNiAtMTMgMzguNSAtMTF0MzYuNSAxN2wxMiAxMWwyMiA4NmwtMyA0cS00NCA0NCAtODkgMTE3cS0xMSAxOCAtMjggMjB0LTMyIC0xMnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTA3OyIgZD0iTS05MCAxMDBsNjQyIDEwNjZxMjAgMzEgNDggMjguNXQ0OCAtMzUuNWw2NDIgLTEwNTZxMjEgLTMyIDcuNSAtNjcuNXQtNTAuNSAtMzUuNWgtMTI5NHEtMzcgMCAtNTAuNSAzNHQ3LjUgNjZ6TTE1NSAyMDBoMzQ1djc1cTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoMTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNzVoMzQ1bC00NDUgNzIzek00OTYgNzAwaDIwOHEyMCAwIDMyIC0xNC41dDggLTM0LjVsLTU4IC0yNTIgcS00IC0yMCAtMjEuNSAtMzQuNXQtMzcuNSAtMTQuNWgtNTRxLTIwIDAgLTM3LjUgMTQuNXQtMjEuNSAzNC41bC01OCAyNTJxLTQgMjAgOCAzNC41dDMyIDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwODsiIGQ9Ik02NTAgMTIwMHE2MiAwIDEwNiAtNDR0NDQgLTEwNnYtMzM5bDM2MyAtMzI1cTE1IC0xNCAyNiAtMzguNXQxMSAtNDQuNXYtNDFxMCAtMjAgLTEyIC0yNi41dC0yOSA1LjVsLTM1OSAyNDl2LTI2M3ExMDAgLTkzIDEwMCAtMTEzdi02NHEwIC0yMSAtMTMgLTI5dC0zMiAxbC0yMDUgMTI4bC0yMDUgLTEyOHEtMTkgLTkgLTMyIC0xdC0xMyAyOXY2NHEwIDIwIDEwMCAxMTN2MjYzbC0zNTkgLTI0OXEtMTcgLTEyIC0yOSAtNS41dC0xMiAyNi41djQxIHEwIDIwIDExIDQ0LjV0MjYgMzguNWwzNjMgMzI1djMzOXEwIDYyIDQ0IDEwNnQxMDYgNDR6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwOTsiIGQ9Ik04NTAgMTIwMGgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTUwaDUwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xNTBoLTExMDB2MTUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg1MHY1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGg1MDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0xMTAwIDgwMHYtNzUwcTAgLTIxIC0xNC41IC0zNS41IHQtMzUuNSAtMTQuNWgtMTAwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NzUwaDExMDB6TTEwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTMwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTUwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTcwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTkwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTEwMCA0MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTMwMCA0MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTUwMCA0MDAgdi0xMDBoMTAwdjEwMGgtMTAwek03MDAgNDAwdi0xMDBoMTAwdjEwMGgtMTAwek05MDAgNDAwdi0xMDBoMTAwdjEwMGgtMTAwek0xMDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAwek0zMDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAwek01MDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAwek03MDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAwek05MDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTA7IiBkPSJNMTEzNSAxMTY1bDI0OSAtMjMwcTE1IC0xNCAxNSAtMzV0LTE1IC0zNWwtMjQ5IC0yMzBxLTE0IC0xNCAtMjQuNSAtMTB0LTEwLjUgMjV2MTUwaC0xNTlsLTYwMCAtNjAwaC0yOTFxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMjA5bDYwMCA2MDBoMjQxdjE1MHEwIDIxIDEwLjUgMjV0MjQuNSAtMTB6TTUyMiA4MTlsLTE0MSAtMTQxbC0xMjIgMTIyaC0yMDlxLTIxIDAgLTM1LjUgMTQuNSB0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDI5MXpNMTEzNSA1NjVsMjQ5IC0yMzBxMTUgLTE0IDE1IC0zNXQtMTUgLTM1bC0yNDkgLTIzMHEtMTQgLTE0IC0yNC41IC0xMHQtMTAuNSAyNXYxNTBoLTI0MWwtMTgxIDE4MWwxNDEgMTQxbDEyMiAtMTIyaDE1OXYxNTBxMCAyMSAxMC41IDI1dDI0LjUgLTEweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTE7IiBkPSJNMTAwIDExMDBoMTAwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtNjAwcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC01OTZsLTMwNCAtMzAwdjMwMGgtMTAwcS00MSAwIC03MC41IDI5LjV0LTI5LjUgNzAuNXY2MDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTI7IiBkPSJNMTUwIDEyMDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yNTBoLTMwMHYyNTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek04NTAgMTIwMGgyMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTI1MGgtMzAwdjI1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTExMDAgODAwdi0zMDBxMCAtNDEgLTMgLTc3LjV0LTE1IC04OS41dC0zMiAtOTZ0LTU4IC04OXQtODkgLTc3dC0xMjkgLTUxdC0xNzQgLTIwdC0xNzQgMjAgdC0xMjkgNTF0LTg5IDc3dC01OCA4OXQtMzIgOTZ0LTE1IDg5LjV0LTMgNzcuNXYzMDBoMzAwdi0yNTB2LTI3di00Mi41dDEuNSAtNDF0NSAtMzh0MTAgLTM1dDE2LjUgLTMwdDI1LjUgLTI0LjV0MzUgLTE5dDQ2LjUgLTEydDYwIC00dDYwIDQuNXQ0Ni41IDEyLjV0MzUgMTkuNXQyNSAyNS41dDE3IDMwLjV0MTAgMzV0NSAzOHQyIDQwLjV0LTAuNSA0MnYyNXYyNTBoMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTM7IiBkPSJNMTEwMCA0MTFsLTE5OCAtMTk5bC0zNTMgMzUzbC0zNTMgLTM1M2wtMTk3IDE5OWw1NTEgNTUxeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTQ7IiBkPSJNMTEwMSA3ODlsLTU1MCAtNTUxbC01NTEgNTUxbDE5OCAxOTlsMzUzIC0zNTNsMzUzIDM1M3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTE1OyIgZD0iTTQwNCAxMDAwaDc0NnEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTUxaDE1MHEyMSAwIDI1IC0xMC41dC0xMCAtMjQuNWwtMjMwIC0yNDlxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI0OXEtMTQgMTQgLTEwIDI0LjV0MjUgMTAuNWgxNTB2NDAxaC0zODF6TTEzNSA5ODRsMjMwIC0yNDlxMTQgLTE0IDEwIC0yNC41dC0yNSAtMTAuNWgtMTUwdi00MDBoMzg1bDIxNSAtMjAwaC03NTBxLTIxIDAgLTM1LjUgMTQuNSB0LTE0LjUgMzUuNXY1NTBoLTE1MHEtMjEgMCAtMjUgMTAuNXQxMCAyNC41bDIzMCAyNDlxMTQgMTUgMzUgMTV0MzUgLTE1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTY7IiBkPSJNNTYgMTIwMGg5NHExNyAwIDMxIC0xMXQxOCAtMjdsMzggLTE2Mmg4OTZxMjQgMCAzOSAtMTguNXQxMCAtNDIuNWwtMTAwIC00NzVxLTUgLTIxIC0yNyAtNDIuNXQtNTUgLTIxLjVoLTYzM2w0OCAtMjAwaDUzNXEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTB2LTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41dC0zNS41IDE0LjV0LTE0LjUgMzUuNXY1MGgtMzAwdi01MCBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjV0LTM1LjUgMTQuNXQtMTQuNSAzNS41djUwaC0zMXEtMTggMCAtMzIuNSAxMHQtMjAuNSAxOWwtNSAxMGwtMjAxIDk2MWgtNTRxLTIwIDAgLTM1IDE0LjV0LTE1IDM1LjV0MTUgMzUuNXQzNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTc7IiBkPSJNMTIwMCAxMDAwdi0xMDBoLTEyMDB2MTAwaDIwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjVoMzAwcTQxIDAgNzAuNSAtMjkuNXQyOS41IC03MC41aDUwMHpNMCA4MDBoMTIwMHYtODAwaC0xMjAwdjgwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTE4OyIgZD0iTTIwMCA4MDBsLTIwMCAtNDAwdjYwMGgyMDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41aDMwMHE0MiAwIDcxIC0yOS41dDI5IC03MC41aDUwMHYtMjAwaC0xMDAwek0xNTAwIDcwMGwtMzAwIC03MDBoLTEyMDBsMzAwIDcwMGgxMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTk7IiBkPSJNNjM1IDExODRsMjMwIC0yNDlxMTQgLTE0IDEwIC0yNC41dC0yNSAtMTAuNWgtMTUwdi02MDFoMTUwcTIxIDAgMjUgLTEwLjV0LTEwIC0yNC41bC0yMzAgLTI0OXEtMTQgLTE1IC0zNSAtMTV0LTM1IDE1bC0yMzAgMjQ5cS0xNCAxNCAtMTAgMjQuNXQyNSAxMC41aDE1MHY2MDFoLTE1MHEtMjEgMCAtMjUgMTAuNXQxMCAyNC41bDIzMCAyNDlxMTQgMTUgMzUgMTV0MzUgLTE1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMjA7IiBkPSJNOTM2IDg2NGwyNDkgLTIyOXExNCAtMTUgMTQgLTM1LjV0LTE0IC0zNS41bC0yNDkgLTIyOXEtMTUgLTE1IC0yNS41IC0xMC41dC0xMC41IDI0LjV2MTUxaC02MDB2LTE1MXEwIC0yMCAtMTAuNSAtMjQuNXQtMjUuNSAxMC41bC0yNDkgMjI5cS0xNCAxNSAtMTQgMzUuNXQxNCAzNS41bDI0OSAyMjlxMTUgMTUgMjUuNSAxMC41dDEwLjUgLTI1LjV2LTE0OWg2MDB2MTQ5cTAgMjEgMTAuNSAyNS41dDI1LjUgLTEwLjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyMTsiIGQ9Ik0xMTY5IDQwMGwtMTcyIDczMnEtNSAyMyAtMjMgNDUuNXQtMzggMjIuNWgtNjcycS0yMCAwIC0zOCAtMjB0LTIzIC00MWwtMTcyIC03MzloMTEzOHpNMTEwMCAzMDBoLTEwMDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTEwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoMTAwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2MTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41ek04MDAgMTAwdjEwMGgxMDB2LTEwMGgtMTAwIHpNMTAwMCAxMDB2MTAwaDEwMHYtMTAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyMjsiIGQ9Ik0xMTUwIDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTg1MHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNXQtMzUuNSAxNC41dC0xNC41IDM1LjV2ODUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMTAwMCAyMDBsLTY3NSAyMDBoLTM4bDQ3IC0yNzZxMyAtMTYgLTUuNSAtMjB0LTI5LjUgLTRoLTdoLTg0cS0yMCAwIC0zNC41IDE0dC0xOC41IDM1cS01NSAzMzcgLTU1IDM1MXYyNTB2NnEwIDE2IDEgMjMuNXQ2LjUgMTQgdDE3LjUgNi41aDIwMGw2NzUgMjUwdi04NTB6TTAgNzUwdi0yNTBxLTQgMCAtMTEgMC41dC0yNCA2dC0zMCAxNXQtMjQgMzB0LTExIDQ4LjV2NTBxMCAyNiAxMC41IDQ2dDI1IDMwdDI5IDE2dDI1LjUgN3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTIzOyIgZD0iTTU1MyAxMjAwaDk0cTIwIDAgMjkgLTEwLjV0MyAtMjkuNWwtMTggLTM3cTgzIC0xOSAxNDQgLTgyLjV0NzYgLTE0MC41bDYzIC0zMjdsMTE4IC0xNzNoMTdxMTkgMCAzMyAtMTQuNXQxNCAtMzV0LTEzIC00MC41dC0zMSAtMjdxLTggLTQgLTIzIC05LjV0LTY1IC0xOS41dC0xMDMgLTI1dC0xMzIuNSAtMjB0LTE1OC41IC05cS01NyAwIC0xMTUgNXQtMTA0IDEydC04OC41IDE1LjV0LTczLjUgMTcuNXQtNTQuNSAxNnQtMzUuNSAxMmwtMTEgNCBxLTE4IDggLTMxIDI4dC0xMyA0MC41dDE0IDM1dDMzIDE0LjVoMTdsMTE4IDE3M2w2MyAzMjdxMTUgNzcgNzYgMTQwdDE0NCA4M2wtMTggMzJxLTYgMTkgMy41IDMydDI4LjUgMTN6TTQ5OCAxMTBxNTAgLTYgMTAyIC02cTUzIDAgMTAyIDZxLTEyIC00OSAtMzkuNSAtNzkuNXQtNjIuNSAtMzAuNXQtNjMgMzAuNXQtMzkgNzkuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTI0OyIgZD0iTTgwMCA5NDZsMjI0IDc4bC03OCAtMjI0bDIzNCAtNDVsLTE4MCAtMTU1bDE4MCAtMTU1bC0yMzQgLTQ1bDc4IC0yMjRsLTIyNCA3OGwtNDUgLTIzNGwtMTU1IDE4MGwtMTU1IC0xODBsLTQ1IDIzNGwtMjI0IC03OGw3OCAyMjRsLTIzNCA0NWwxODAgMTU1bC0xODAgMTU1bDIzNCA0NWwtNzggMjI0bDIyNCAtNzhsNDUgMjM0bDE1NSAtMTgwbDE1NSAxODB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyNTsiIGQ9Ik02NTAgMTIwMGg1MHE0MCAwIDcwIC00MC41dDMwIC04NC41di0xNTBsLTI4IC0xMjVoMzI4cTQwIDAgNzAgLTQwLjV0MzAgLTg0LjV2LTEwMHEwIC00NSAtMjkgLTc0bC0yMzggLTM0NHEtMTYgLTI0IC0zOCAtNDAuNXQtNDUgLTE2LjVoLTI1MHEtNyAwIC00MiAyNXQtNjYgNTBsLTMxIDI1aC02MXEtNDUgMCAtNzIuNSAxOHQtMjcuNSA1N3Y0MDBxMCAzNiAyMCA2M2wxNDUgMTk2bDk2IDE5OHExMyAyOCAzNy41IDQ4dDUxLjUgMjB6IE02NTAgMTEwMGwtMTAwIC0yMTJsLTE1MCAtMjEzdi0zNzVoMTAwbDEzNiAtMTAwaDIxNGwyNTAgMzc1djEyNWgtNDUwbDUwIDIyNXYxNzVoLTUwek01MCA4MDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTI2OyIgZD0iTTYwMCAxMTAwaDI1MHEyMyAwIDQ1IC0xNi41dDM4IC00MC41bDIzOCAtMzQ0cTI5IC0yOSAyOSAtNzR2LTEwMHEwIC00NCAtMzAgLTg0LjV0LTcwIC00MC41aC0zMjhxMjggLTExOCAyOCAtMTI1di0xNTBxMCAtNDQgLTMwIC04NC41dC03MCAtNDAuNWgtNTBxLTI3IDAgLTUxLjUgMjB0LTM3LjUgNDhsLTk2IDE5OGwtMTQ1IDE5NnEtMjAgMjcgLTIwIDYzdjQwMHEwIDM5IDI3LjUgNTd0NzIuNSAxOGg2MXExMjQgMTAwIDEzOSAxMDB6IE01MCAxMDAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djUwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTYzNiAxMDAwbC0xMzYgLTEwMGgtMTAwdi0zNzVsMTUwIC0yMTNsMTAwIC0yMTJoNTB2MTc1bC01MCAyMjVoNDUwdjEyNWwtMjUwIDM3NWgtMjE0eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMjc7IiBkPSJNMzU2IDg3M2wzNjMgMjMwcTMxIDE2IDUzIC02bDExMCAtMTEycTEzIC0xMyAxMy41IC0zMnQtMTEuNSAtMzRsLTg0IC0xMjFoMzAycTg0IDAgMTM4IC0zOHQ1NCAtMTEwdC01NSAtMTExdC0xMzkgLTM5aC0xMDZsLTEzMSAtMzM5cS02IC0yMSAtMTkuNSAtNDF0LTI4LjUgLTIwaC0zNDJxLTcgMCAtOTAgODF0LTgzIDk0djUyNXEwIDE3IDE0IDM1LjV0MjggMjguNXpNNDAwIDc5MnYtNTAzbDEwMCAtODloMjkzbDEzMSAzMzkgcTYgMjEgMTkuNSA0MXQyOC41IDIwaDIwM3EyMSAwIDMwLjUgMjV0MC41IDUwdC0zMSAyNWgtNDU2aC03aC02aC01LjV0LTYgMC41dC01IDEuNXQtNSAydC00IDIuNXQtNCA0dC0yLjUgNC41cS0xMiAyNSA1IDQ3bDE0NiAxODNsLTg2IDgzek01MCA4MDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NTAwIHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyODsiIGQ9Ik00NzUgMTEwM2wzNjYgLTIzMHEyIC0xIDYgLTMuNXQxNCAtMTAuNXQxOCAtMTYuNXQxNC41IC0yMHQ2LjUgLTIyLjV2LTUyNXEwIC0xMyAtODYgLTk0dC05MyAtODFoLTM0MnEtMTUgMCAtMjguNSAyMHQtMTkuNSA0MWwtMTMxIDMzOWgtMTA2cS04NSAwIC0xMzkuNSAzOXQtNTQuNSAxMTF0NTQgMTEwdDEzOCAzOGgzMDJsLTg1IDEyMXEtMTEgMTUgLTEwLjUgMzR0MTMuNSAzMmwxMTAgMTEycTIyIDIyIDUzIDZ6TTM3MCA5NDVsMTQ2IC0xODMgcTE3IC0yMiA1IC00N3EtMiAtMiAtMy41IC00LjV0LTQgLTR0LTQgLTIuNXQtNSAtMnQtNSAtMS41dC02IC0wLjVoLTZoLTYuNWgtNmgtNDc1di0xMDBoMjIxcTE1IDAgMjkgLTIwdDIwIC00MWwxMzAgLTMzOWgyOTRsMTA2IDg5djUwM2wtMzQyIDIzNnpNMTA1MCA4MDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjUgdjUwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyOTsiIGQ9Ik01NTAgMTI5NHE3MiAwIDExMSAtNTV0MzkgLTEzOXYtMTA2bDMzOSAtMTMxcTIxIC02IDQxIC0xOS41dDIwIC0yOC41di0zNDJxMCAtNyAtODEgLTkwdC05NCAtODNoLTUyNXEtMTcgMCAtMzUuNSAxNHQtMjguNSAyOGwtOSAxNGwtMjMwIDM2M3EtMTYgMzEgNiA1M2wxMTIgMTEwcTEzIDEzIDMyIDEzLjV0MzQgLTExLjVsMTIxIC04NHYzMDJxMCA4NCAzOCAxMzh0MTEwIDU0ek02MDAgOTcydjIwM3EwIDIxIC0yNSAzMC41dC01MCAwLjUgdC0yNSAtMzF2LTQ1NnYtN3YtNnYtNS41dC0wLjUgLTZ0LTEuNSAtNXQtMiAtNXQtMi41IC00dC00IC00dC00LjUgLTIuNXEtMjUgLTEyIC00NyA1bC0xODMgMTQ2bC04MyAtODZsMjM2IC0zMzloNTAzbDg5IDEwMHYyOTNsLTMzOSAxMzFxLTIxIDYgLTQxIDE5LjV0LTIwIDI4LjV6TTQ1MCAyMDBoNTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTUwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzMDsiIGQ9Ik0zNTAgMTEwMGg1MDBxMjEgMCAzNS41IDE0LjV0MTQuNSAzNS41djEwMHEwIDIxIC0xNC41IDM1LjV0LTM1LjUgMTQuNWgtNTAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xMDBxMCAtMjEgMTQuNSAtMzUuNXQzNS41IC0xNC41ek02MDAgMzA2di0xMDZxMCAtODQgLTM5IC0xMzl0LTExMSAtNTV0LTExMCA1NHQtMzggMTM4djMwMmwtMTIxIC04NHEtMTUgLTEyIC0zNCAtMTEuNXQtMzIgMTMuNWwtMTEyIDExMCBxLTIyIDIyIC02IDUzbDIzMCAzNjNxMSAyIDMuNSA2dDEwLjUgMTMuNXQxNi41IDE3dDIwIDEzLjV0MjIuNSA2aDUyNXExMyAwIDk0IC04M3Q4MSAtOTB2LTM0MnEwIC0xNSAtMjAgLTI4LjV0LTQxIC0xOS41ek0zMDggOTAwbC0yMzYgLTMzOWw4MyAtODZsMTgzIDE0NnEyMiAxNyA0NyA1cTIgLTEgNC41IC0yLjV0NCAtNHQyLjUgLTR0MiAtNXQxLjUgLTV0MC41IC02di01LjV2LTZ2LTd2LTQ1NnEwIC0yMiAyNSAtMzF0NTAgMC41dDI1IDMwLjUgdjIwM3EwIDE1IDIwIDI4LjV0NDEgMTkuNWwzMzkgMTMxdjI5M2wtODkgMTAwaC01MDN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzMTsiIGQ9Ik02MDAgMTE3OHExMTggMCAyMjUgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNXQtNDUuNSAtMjI1dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjUgLTQ1LjV0LTIyNSA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjV0NDUuNSAyMjV0MTIzIDE4NC41dDE4NC41IDEyM3QyMjUgNDUuNXpNOTE0IDYzMmwtMjc1IDIyM3EtMTYgMTMgLTI3LjUgOHQtMTEuNSAtMjZ2LTEzN2gtMjc1IHEtMTAgMCAtMTcuNSAtNy41dC03LjUgLTE3LjV2LTE1MHEwIC0xMCA3LjUgLTE3LjV0MTcuNSAtNy41aDI3NXYtMTM3cTAgLTIxIDExLjUgLTI2dDI3LjUgOGwyNzUgMjIzcTE2IDEzIDE2IDMydC0xNiAzMnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTMyOyIgZD0iTTYwMCAxMTc4cTExOCAwIDIyNSAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI1dC00NS41IC0yMjV0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNSAtNDUuNXQtMjI1IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNXQ0NS41IDIyNXQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNSA0NS41ek01NjEgODU1bC0yNzUgLTIyM3EtMTYgLTEzIC0xNiAtMzJ0MTYgLTMybDI3NSAtMjIzcTE2IC0xMyAyNy41IC04IHQxMS41IDI2djEzN2gyNzVxMTAgMCAxNy41IDcuNXQ3LjUgMTcuNXYxNTBxMCAxMCAtNy41IDE3LjV0LTE3LjUgNy41aC0yNzV2MTM3cTAgMjEgLTExLjUgMjZ0LTI3LjUgLTh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzMzsiIGQ9Ik02MDAgMTE3OHExMTggMCAyMjUgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNXQtNDUuNSAtMjI1dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjUgLTQ1LjV0LTIyNSA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjV0NDUuNSAyMjV0MTIzIDE4NC41dDE4NC41IDEyM3QyMjUgNDUuNXpNODU1IDYzOWwtMjIzIDI3NXEtMTMgMTYgLTMyIDE2dC0zMiAtMTZsLTIyMyAtMjc1cS0xMyAtMTYgLTggLTI3LjUgdDI2IC0xMS41aDEzN3YtMjc1cTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoMTUwcTEwIDAgMTcuNSA3LjV0Ny41IDE3LjV2Mjc1aDEzN3EyMSAwIDI2IDExLjV0LTggMjcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTM0OyIgZD0iTTYwMCAxMTc4cTExOCAwIDIyNSAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI1dC00NS41IC0yMjV0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNSAtNDUuNXQtMjI1IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNXQ0NS41IDIyNXQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNSA0NS41ek02NzUgOTAwaC0xNTBxLTEwIDAgLTE3LjUgLTcuNXQtNy41IC0xNy41di0yNzVoLTEzN3EtMjEgMCAtMjYgLTExLjUgdDggLTI3LjVsMjIzIC0yNzVxMTMgLTE2IDMyIC0xNnQzMiAxNmwyMjMgMjc1cTEzIDE2IDggMjcuNXQtMjYgMTEuNWgtMTM3djI3NXEwIDEwIC03LjUgMTcuNXQtMTcuNSA3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzNTsiIGQ9Ik02MDAgMTE3NnExMTYgMCAyMjIuNSAtNDZ0MTg0IC0xMjMuNXQxMjMuNSAtMTg0dDQ2IC0yMjIuNXQtNDYgLTIyMi41dC0xMjMuNSAtMTg0dC0xODQgLTEyMy41dC0yMjIuNSAtNDZ0LTIyMi41IDQ2dC0xODQgMTIzLjV0LTEyMy41IDE4NHQtNDYgMjIyLjV0NDYgMjIyLjV0MTIzLjUgMTg0dDE4NCAxMjMuNXQyMjIuNSA0NnpNNjI3IDExMDFxLTE1IC0xMiAtMzYuNSAtMjAuNXQtMzUuNSAtMTJ0LTQzIC04dC0zOSAtNi41IHEtMTUgLTMgLTQ1LjUgMHQtNDUuNSAtMnEtMjAgLTcgLTUxLjUgLTI2LjV0LTM0LjUgLTM0LjVxLTMgLTExIDYuNSAtMjIuNXQ4LjUgLTE4LjVxLTMgLTM0IC0yNy41IC05MXQtMjkuNSAtNzlxLTkgLTM0IDUgLTkzdDggLTg3cTAgLTkgMTcgLTQ0LjV0MTYgLTU5LjVxMTIgMCAyMyAtNXQyMy41IC0xNXQxOS41IC0xNHExNiAtOCAzMyAtMTV0NDAuNSAtMTV0MzQuNSAtMTJxMjEgLTkgNTIuNSAtMzJ0NjAgLTM4dDU3LjUgLTExIHE3IC0xNSAtMyAtMzR0LTIyLjUgLTQwdC05LjUgLTM4cTEzIC0yMSAyMyAtMzQuNXQyNy41IC0yNy41dDM2LjUgLTE4cTAgLTcgLTMuNSAtMTZ0LTMuNSAtMTR0NSAtMTdxMTA0IC0yIDIyMSAxMTJxMzAgMjkgNDYuNSA0N3QzNC41IDQ5dDIxIDYzcS0xMyA4IC0zNyA4LjV0LTM2IDcuNXEtMTUgNyAtNDkuNSAxNXQtNTEuNSAxOXEtMTggMCAtNDEgLTAuNXQtNDMgLTEuNXQtNDIgLTYuNXQtMzggLTE2LjVxLTUxIC0zNSAtNjYgLTEyIHEtNCAxIC0zLjUgMjUuNXQwLjUgMjUuNXEtNiAxMyAtMjYuNSAxNy41dC0yNC41IDYuNXExIDE1IC0wLjUgMzAuNXQtNyAyOHQtMTguNSAxMS41dC0zMSAtMjFxLTIzIC0yNSAtNDIgNHEtMTkgMjggLTggNThxNiAxNiAyMiAyMnE2IC0xIDI2IC0xLjV0MzMuNSAtNHQxOS41IC0xMy41cTcgLTEyIDE4IC0yNHQyMS41IC0yMC41dDIwIC0xNXQxNS41IC0xMC41bDUgLTNxMiAxMiA3LjUgMzAuNXQ4IDM0LjV0LTAuNSAzMnEtMyAxOCAzLjUgMjkgdDE4IDIyLjV0MTUuNSAyNC41cTYgMTQgMTAuNSAzNXQ4IDMxdDE1LjUgMjIuNXQzNCAyMi41cS02IDE4IDEwIDM2cTggMCAyNCAtMS41dDI0LjUgLTEuNXQyMCA0LjV0MjAuNSAxNS41cS0xMCAyMyAtMzEgNDIuNXQtMzcuNSAyOS41dC00OSAyN3QtNDMuNSAyM3EwIDEgMiA4dDMgMTEuNXQxLjUgMTAuNXQtMSA5LjV0LTQuNSA0LjVxMzEgLTEzIDU4LjUgLTE0LjV0MzguNSAyLjVsMTIgNXE1IDI4IC05LjUgNDZ0LTM2LjUgMjR0LTUwIDE1IHQtNDEgMjBxLTE4IC00IC0zNyAwek02MTMgOTk0cTAgLTE3IDggLTQydDE3IC00NXQ5IC0yM3EtOCAxIC0zOS41IDUuNXQtNTIuNSAxMHQtMzcgMTYuNXEzIDExIDE2IDI5LjV0MTYgMjUuNXExMCAtMTAgMTkgLTEwdDE0IDZ0MTMuNSAxNC41dDE2LjUgMTIuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTM2OyIgZD0iTTc1NiAxMTU3cTE2NCA5MiAzMDYgLTlsLTI1OSAtMTM4bDE0NSAtMjMybDI1MSAxMjZxNiAtODkgLTM0IC0xNTYuNXQtMTE3IC0xMTAuNXEtNjAgLTM0IC0xMjcgLTM5LjV0LTEyNiAxNi41bC01OTYgLTU5NnEtMTUgLTE2IC0zNi41IC0xNnQtMzYuNSAxNmwtMTExIDExMHEtMTUgMTUgLTE1IDM2LjV0MTUgMzcuNWw2MDAgNTk5cS0zNCAxMDEgNS41IDIwMS41dDEzNS41IDE1NC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMzc7IiBob3Jpei1hZHYteD0iMTIyMCIgZD0iTTEwMCAxMTk2aDEwMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMHEwIC00MSAtMjkuNSAtNzAuNXQtNzAuNSAtMjkuNWgtMTAwMHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjV2MTAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNXpNMTEwMCAxMDk2aC0yMDB2LTEwMGgyMDB2MTAwek0xMDAgNzk2aDEwMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMHEwIC00MSAtMjkuNSAtNzAuNXQtNzAuNSAtMjkuNWgtMTAwMCBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djEwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjV6TTExMDAgNjk2aC01MDB2LTEwMGg1MDB2MTAwek0xMDAgMzk2aDEwMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMHEwIC00MSAtMjkuNSAtNzAuNXQtNzAuNSAtMjkuNWgtMTAwMHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjV2MTAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNXpNMTEwMCAyOTZoLTMwMHYtMTAwaDMwMHYxMDB6ICIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMzg7IiBkPSJNMTUwIDEyMDBoOTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41dC0xNC41IC0zNS41dC0zNS41IC0xNC41aC05MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6TTcwMCA1MDB2LTMwMGwtMjAwIC0yMDB2NTAwbC0zNTAgNTAwaDkwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTM5OyIgZD0iTTUwMCAxMjAwaDIwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtMTAwaDMwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtNDAwaC01MDB2MTAwaC0yMDB2LTEwMGgtNTAwdjQwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjVoMzAwdjEwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjV6TTUwMCAxMTAwdi0xMDBoMjAwdjEwMGgtMjAwek0xMjAwIDQwMHYtMjAwcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC0xMDAwIHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjV2MjAwaDEyMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE0MDsiIGQ9Ik01MCAxMjAwaDMwMHEyMSAwIDI1IC0xMC41dC0xMCAtMjQuNWwtOTQgLTk0bDE5OSAtMTk5cTcgLTggNyAtMTh0LTcgLTE4bC0xMDYgLTEwNnEtOCAtNyAtMTggLTd0LTE4IDdsLTE5OSAxOTlsLTk0IC05NHEtMTQgLTE0IC0yNC41IC0xMHQtMTAuNSAyNXYzMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek04NTAgMTIwMGgzMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTMwMHEwIC0yMSAtMTAuNSAtMjV0LTI0LjUgMTBsLTk0IDk0IGwtMTk5IC0xOTlxLTggLTcgLTE4IC03dC0xOCA3bC0xMDYgMTA2cS03IDggLTcgMTh0NyAxOGwxOTkgMTk5bC05NCA5NHEtMTQgMTQgLTEwIDI0LjV0MjUgMTAuNXpNMzY0IDQ3MGwxMDYgLTEwNnE3IC04IDcgLTE4dC03IC0xOGwtMTk5IC0xOTlsOTQgLTk0cTE0IC0xNCAxMCAtMjQuNXQtMjUgLTEwLjVoLTMwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MzAwcTAgMjEgMTAuNSAyNXQyNC41IC0xMGw5NCAtOTRsMTk5IDE5OSBxOCA3IDE4IDd0MTggLTd6TTEwNzEgMjcxbDk0IDk0cTE0IDE0IDI0LjUgMTB0MTAuNSAtMjV2LTMwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMzAwcS0yMSAwIC0yNSAxMC41dDEwIDI0LjVsOTQgOTRsLTE5OSAxOTlxLTcgOCAtNyAxOHQ3IDE4bDEwNiAxMDZxOCA3IDE4IDd0MTggLTd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE0MTsiIGQ9Ik01OTYgMTE5MnExMjEgMCAyMzEuNSAtNDcuNXQxOTAgLTEyN3QxMjcgLTE5MHQ0Ny41IC0yMzEuNXQtNDcuNSAtMjMxLjV0LTEyNyAtMTkwLjV0LTE5MCAtMTI3dC0yMzEuNSAtNDd0LTIzMS41IDQ3dC0xOTAuNSAxMjd0LTEyNyAxOTAuNXQtNDcgMjMxLjV0NDcgMjMxLjV0MTI3IDE5MHQxOTAuNSAxMjd0MjMxLjUgNDcuNXpNNTk2IDEwMTBxLTExMiAwIC0yMDcuNSAtNTUuNXQtMTUxIC0xNTF0LTU1LjUgLTIwNy41dDU1LjUgLTIwNy41IHQxNTEgLTE1MXQyMDcuNSAtNTUuNXQyMDcuNSA1NS41dDE1MSAxNTF0NTUuNSAyMDcuNXQtNTUuNSAyMDcuNXQtMTUxIDE1MXQtMjA3LjUgNTUuNXpNNDU0LjUgOTA1cTIyLjUgMCAzOC41IC0xNnQxNiAtMzguNXQtMTYgLTM5dC0zOC41IC0xNi41dC0zOC41IDE2LjV0LTE2IDM5dDE2IDM4LjV0MzguNSAxNnpNNzU0LjUgOTA1cTIyLjUgMCAzOC41IC0xNnQxNiAtMzguNXQtMTYgLTM5dC0zOCAtMTYuNXEtMTQgMCAtMjkgMTBsLTU1IC0xNDUgcTE3IC0yMyAxNyAtNTFxMCAtMzYgLTI1LjUgLTYxLjV0LTYxLjUgLTI1LjV0LTYxLjUgMjUuNXQtMjUuNSA2MS41cTAgMzIgMjAuNSA1Ni41dDUxLjUgMjkuNWwxMjIgMTI2bDEgMXEtOSAxNCAtOSAyOHEwIDIzIDE2IDM5dDM4LjUgMTZ6TTM0NS41IDcwOXEyMi41IDAgMzguNSAtMTZ0MTYgLTM4LjV0LTE2IC0zOC41dC0zOC41IC0xNnQtMzguNSAxNnQtMTYgMzguNXQxNiAzOC41dDM4LjUgMTZ6TTg1NC41IDcwOXEyMi41IDAgMzguNSAtMTYgdDE2IC0zOC41dC0xNiAtMzguNXQtMzguNSAtMTZ0LTM4LjUgMTZ0LTE2IDM4LjV0MTYgMzguNXQzOC41IDE2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDI7IiBkPSJNNTQ2IDE3M2w0NjkgNDcwcTkxIDkxIDk5IDE5MnE3IDk4IC01MiAxNzUuNXQtMTU0IDk0LjVxLTIyIDQgLTQ3IDRxLTM0IDAgLTY2LjUgLTEwdC01Ni41IC0yM3QtNTUuNSAtMzh0LTQ4IC00MS41dC00OC41IC00Ny41cS0zNzYgLTM3NSAtMzkxIC0zOTBxLTMwIC0yNyAtNDUgLTQxLjV0LTM3LjUgLTQxdC0zMiAtNDYuNXQtMTYgLTQ3LjV0LTEuNSAtNTYuNXE5IC02MiA1My41IC05NXQ5OS41IC0zM3E3NCAwIDEyNSA1MWw1NDggNTQ4IHEzNiAzNiAyMCA3NXEtNyAxNiAtMjEuNSAyNnQtMzIuNSAxMHEtMjYgMCAtNTAgLTIzcS0xMyAtMTIgLTM5IC0zOGwtMzQxIC0zMzhxLTE1IC0xNSAtMzUuNSAtMTUuNXQtMzQuNSAxMy41dC0xNCAzNC41dDE0IDM0LjVxMzI3IDMzMyAzNjEgMzY3cTM1IDM1IDY3LjUgNTEuNXQ3OC41IDE2LjVxMTQgMCAyOSAtMXE0NCAtOCA3NC41IC0zNS41dDQzLjUgLTY4LjVxMTQgLTQ3IDIgLTk2LjV0LTQ3IC04NC41cS0xMiAtMTEgLTMyIC0zMiB0LTc5LjUgLTgxdC0xMTQuNSAtMTE1dC0xMjQuNSAtMTIzLjV0LTEyMyAtMTE5LjV0LTk2LjUgLTg5dC01NyAtNDVxLTU2IC0yNyAtMTIwIC0yN3EtNzAgMCAtMTI5IDMydC05MyA4OXEtNDggNzggLTM1IDE3M3Q4MSAxNjNsNTExIDUxMXE3MSA3MiAxMTEgOTZxOTEgNTUgMTk4IDU1cTgwIDAgMTUyIC0zM3E3OCAtMzYgMTI5LjUgLTEwM3Q2Ni41IC0xNTRxMTcgLTkzIC0xMSAtMTgzLjV0LTk0IC0xNTYuNWwtNDgyIC00NzYgcS0xNSAtMTUgLTM2IC0xNnQtMzcgMTR0LTE3LjUgMzR0MTQuNSAzNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTQzOyIgZD0iTTY0OSA5NDlxNDggNjggMTA5LjUgMTA0dDEyMS41IDM4LjV0MTE4LjUgLTIwdDEwMi41IC02NHQ3MSAtMTAwLjV0MjcgLTEyM3EwIC01NyAtMzMuNSAtMTE3LjV0LTk0IC0xMjQuNXQtMTI2LjUgLTEyNy41dC0xNTAgLTE1Mi41dC0xNDYgLTE3NHEtNjIgODUgLTE0NS41IDE3NHQtMTUwIDE1Mi41dC0xMjYuNSAxMjcuNXQtOTMuNSAxMjQuNXQtMzMuNSAxMTcuNXEwIDY0IDI4IDEyM3Q3MyAxMDAuNXQxMDQgNjR0MTE5IDIwIHQxMjAuNSAtMzguNXQxMDQuNSAtMTA0ek04OTYgOTcycS0zMyAwIC02NC41IC0xOXQtNTYuNSAtNDZ0LTQ3LjUgLTUzLjV0LTQzLjUgLTQ1LjV0LTM3LjUgLTE5dC0zNiAxOXQtNDAgNDUuNXQtNDMgNTMuNXQtNTQgNDZ0LTY1LjUgMTlxLTY3IDAgLTEyMi41IC01NS41dC01NS41IC0xMzIuNXEwIC0yMyAxMy41IC01MXQ0NiAtNjV0NTcuNSAtNjN0NzYgLTc1bDIyIC0yMnExNSAtMTQgNDQgLTQ0dDUwLjUgLTUxdDQ2IC00NHQ0MSAtMzV0MjMgLTEyIHQyMy41IDEydDQyLjUgMzZ0NDYgNDR0NTIuNSA1MnQ0NCA0M3E0IDQgMTIgMTNxNDMgNDEgNjMuNSA2MnQ1MiA1NXQ0NiA1NXQyNiA0NnQxMS41IDQ0cTAgNzkgLTUzIDEzMy41dC0xMjAgNTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTQ0OyIgZD0iTTc3Ni41IDEyMTRxOTMuNSAwIDE1OS41IC02NmwxNDEgLTE0MXE2NiAtNjYgNjYgLTE2MHEwIC00MiAtMjggLTk1LjV0LTYyIC04Ny41bC0yOSAtMjlxLTMxIDUzIC03NyA5OWwtMTggMThsOTUgOTVsLTI0NyAyNDhsLTM4OSAtMzg5bDIxMiAtMjEybC0xMDUgLTEwNmwtMTkgMThsLTE0MSAxNDFxLTY2IDY2IC02NiAxNTl0NjYgMTU5bDI4MyAyODNxNjUgNjYgMTU4LjUgNjZ6TTYwMCA3MDZsMTA1IDEwNXExMCAtOCAxOSAtMTdsMTQxIC0xNDEgcTY2IC02NiA2NiAtMTU5dC02NiAtMTU5bC0yODMgLTI4M3EtNjYgLTY2IC0xNTkgLTY2dC0xNTkgNjZsLTE0MSAxNDFxLTY2IDY2IC02NiAxNTkuNXQ2NiAxNTkuNWw1NSA1NXEyOSAtNTUgNzUgLTEwMmwxOCAtMTdsLTk1IC05NWwyNDcgLTI0OGwzODkgMzg5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDU7IiBkPSJNNjAzIDEyMDBxODUgMCAxNjIgLTE1dDEyNyAtMzh0NzkgLTQ4dDI5IC00NnYtOTUzcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC02MDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djk1M3EwIDIxIDMwIDQ2LjV0ODEgNDh0MTI5IDM3LjV0MTYzIDE1ek0zMDAgMTAwMHYtNzAwaDYwMHY3MDBoLTYwMHpNNjAwIDI1NHEtNDMgMCAtNzMuNSAtMzAuNXQtMzAuNSAtNzMuNXQzMC41IC03My41dDczLjUgLTMwLjV0NzMuNSAzMC41IHQzMC41IDczLjV0LTMwLjUgNzMuNXQtNzMuNSAzMC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDY7IiBkPSJNOTAyIDExODVsMjgzIC0yODJxMTUgLTE1IDE1IC0zNnQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNXQtMzUgMTVsLTM2IDM1bC0yNzkgLTI2N3YtMzAwbC0yMTIgMjEwbC0zMDggLTMwN2wtMjgwIC0yMDNsMjAzIDI4MGwzMDcgMzA4bC0yMTAgMjEyaDMwMGwyNjcgMjc5bC0zNSAzNnEtMTUgMTQgLTE1IDM1dDE0LjUgMzUuNXQzNS41IDE0LjV0MzUgLTE1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDg7IiBkPSJNNzAwIDEyNDh2LTc4cTM4IC01IDcyLjUgLTE0LjV0NzUuNSAtMzEuNXQ3MSAtNTMuNXQ1MiAtODR0MjQgLTExOC41aC0xNTlxLTQgMzYgLTEwLjUgNTl0LTIxIDQ1dC00MCAzNS41dC02NC41IDIwLjV2LTMwN2w2NCAtMTNxMzQgLTcgNjQgLTE2LjV0NzAgLTMydDY3LjUgLTUyLjV0NDcuNSAtODB0MjAgLTExMnEwIC0xMzkgLTg5IC0yMjR0LTI0NCAtOTd2LTc3aC0xMDB2NzlxLTE1MCAxNiAtMjM3IDEwM3EtNDAgNDAgLTUyLjUgOTMuNSB0LTE1LjUgMTM5LjVoMTM5cTUgLTc3IDQ4LjUgLTEyNnQxMTcuNSAtNjV2MzM1bC0yNyA4cS00NiAxNCAtNzkgMjYuNXQtNzIgMzZ0LTYzIDUydC00MCA3Mi41dC0xNiA5OHEwIDcwIDI1IDEyNnQ2Ny41IDkydDk0LjUgNTd0MTEwIDI3djc3aDEwMHpNNjAwIDc1NHYyNzRxLTI5IC00IC01MCAtMTF0LTQyIC0yMS41dC0zMS41IC00MS41dC0xMC41IC02NXEwIC0yOSA3IC01MC41dDE2LjUgLTM0dDI4LjUgLTIyLjV0MzEuNSAtMTR0MzcuNSAtMTAgcTkgLTMgMTMgLTR6TTcwMCA1NDd2LTMxMHEyMiAyIDQyLjUgNi41dDQ1IDE1LjV0NDEuNSAyN3QyOSA0MnQxMiA1OS41dC0xMi41IDU5LjV0LTM4IDQ0LjV0LTUzIDMxdC02Ni41IDI0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE0OTsiIGQ9Ik01NjEgMTE5N3E4NCAwIDE2MC41IC00MHQxMjMuNSAtMTA5LjV0NDcgLTE0Ny41aC0xNTNxMCA0MCAtMTkuNSA3MS41dC00OS41IDQ4LjV0LTU5LjUgMjZ0LTU1LjUgOXEtMzcgMCAtNzkgLTE0LjV0LTYyIC0zNS41cS00MSAtNDQgLTQxIC0xMDFxMCAtMjYgMTMuNSAtNjN0MjYuNSAtNjF0MzcgLTY2cTYgLTkgOSAtMTRoMjQxdi0xMDBoLTE5N3E4IC01MCAtMi41IC0xMTV0LTMxLjUgLTk1cS00NSAtNjIgLTk5IC0xMTIgcTM0IDEwIDgzIDE3LjV0NzEgNy41cTMyIDEgMTAyIC0xNnQxMDQgLTE3cTgzIDAgMTM2IDMwbDUwIC0xNDdxLTMxIC0xOSAtNTggLTMwLjV0LTU1IC0xNS41dC00MiAtNC41dC00NiAtMC41cS0yMyAwIC03NiAxN3QtMTExIDMyLjV0LTk2IDExLjVxLTM5IC0zIC04MiAtMTZ0LTY3IC0yNWwtMjMgLTExbC01NSAxNDVxNCAzIDE2IDExdDE1LjUgMTAuNXQxMyA5dDE1LjUgMTJ0MTQuNSAxNHQxNy41IDE4LjVxNDggNTUgNTQgMTI2LjUgdC0zMCAxNDIuNWgtMjIxdjEwMGgxNjZxLTIzIDQ3IC00NCAxMDRxLTcgMjAgLTEyIDQxLjV0LTYgNTUuNXQ2IDY2LjV0MjkuNSA3MC41dDU4LjUgNzFxOTcgODggMjYzIDg4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTA7IiBkPSJNNDAwIDMwMGgxNTBxMjEgMCAyNSAtMTF0LTEwIC0yNWwtMjMwIC0yNTBxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI1MHEtMTQgMTQgLTEwIDI1dDI1IDExaDE1MHY5MDBoMjAwdi05MDB6TTkzNSAxMTg0bDIzMCAtMjQ5cTE0IC0xNCAxMCAtMjQuNXQtMjUgLTEwLjVoLTE1MHYtOTAwaC0yMDB2OTAwaC0xNTBxLTIxIDAgLTI1IDEwLjV0MTAgMjQuNWwyMzAgMjQ5cTE0IDE1IDM1IDE1dDM1IC0xNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTUxOyIgZD0iTTEwMDAgNzAwaC0xMDB2MTAwaC0xMDB2LTEwMGgtMTAwdjUwMGgzMDB2LTUwMHpNNDAwIDMwMGgxNTBxMjEgMCAyNSAtMTF0LTEwIC0yNWwtMjMwIC0yNTBxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI1MHEtMTQgMTQgLTEwIDI1dDI1IDExaDE1MHY5MDBoMjAwdi05MDB6TTgwMSAxMTAwdi0yMDBoMTAwdjIwMGgtMTAwek0xMDAwIDM1MGwtMjAwIC0yNTBoMjAwdi0xMDBoLTMwMHYxNTBsMjAwIDI1MGgtMjAwdjEwMGgzMDB2LTE1MHogIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE1MjsiIGQ9Ik00MDAgMzAwaDE1MHEyMSAwIDI1IC0xMXQtMTAgLTI1bC0yMzAgLTI1MHEtMTQgLTE1IC0zNSAtMTV0LTM1IDE1bC0yMzAgMjUwcS0xNCAxNCAtMTAgMjV0MjUgMTFoMTUwdjkwMGgyMDB2LTkwMHpNMTAwMCAxMDUwbC0yMDAgLTI1MGgyMDB2LTEwMGgtMzAwdjE1MGwyMDAgMjUwaC0yMDB2MTAwaDMwMHYtMTUwek0xMDAwIDBoLTEwMHYxMDBoLTEwMHYtMTAwaC0xMDB2NTAwaDMwMHYtNTAwek04MDEgNDAwdi0yMDBoMTAwdjIwMGgtMTAweiAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTUzOyIgZD0iTTQwMCAzMDBoMTUwcTIxIDAgMjUgLTExdC0xMCAtMjVsLTIzMCAtMjUwcS0xNCAtMTUgLTM1IC0xNXQtMzUgMTVsLTIzMCAyNTBxLTE0IDE0IC0xMCAyNXQyNSAxMWgxNTB2OTAwaDIwMHYtOTAwek0xMDAwIDcwMGgtMTAwdjQwMGgtMTAwdjEwMGgyMDB2LTUwMHpNMTEwMCAwaC0xMDB2MTAwaC0yMDB2NDAwaDMwMHYtNTAwek05MDEgNDAwdi0yMDBoMTAwdjIwMGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTQ7IiBkPSJNNDAwIDMwMGgxNTBxMjEgMCAyNSAtMTF0LTEwIC0yNWwtMjMwIC0yNTBxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI1MHEtMTQgMTQgLTEwIDI1dDI1IDExaDE1MHY5MDBoMjAwdi05MDB6TTExMDAgNzAwaC0xMDB2MTAwaC0yMDB2NDAwaDMwMHYtNTAwek05MDEgMTEwMHYtMjAwaDEwMHYyMDBoLTEwMHpNMTAwMCAwaC0xMDB2NDAwaC0xMDB2MTAwaDIwMHYtNTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTU7IiBkPSJNNDAwIDMwMGgxNTBxMjEgMCAyNSAtMTF0LTEwIC0yNWwtMjMwIC0yNTBxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI1MHEtMTQgMTQgLTEwIDI1dDI1IDExaDE1MHY5MDBoMjAwdi05MDB6TTkwMCAxMDAwaC0yMDB2MjAwaDIwMHYtMjAwek0xMDAwIDcwMGgtMzAwdjIwMGgzMDB2LTIwMHpNMTEwMCA0MDBoLTQwMHYyMDBoNDAwdi0yMDB6TTEyMDAgMTAwaC01MDB2MjAwaDUwMHYtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTY7IiBkPSJNNDAwIDMwMGgxNTBxMjEgMCAyNSAtMTF0LTEwIC0yNWwtMjMwIC0yNTBxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI1MHEtMTQgMTQgLTEwIDI1dDI1IDExaDE1MHY5MDBoMjAwdi05MDB6TTEyMDAgMTAwMGgtNTAwdjIwMGg1MDB2LTIwMHpNMTEwMCA3MDBoLTQwMHYyMDBoNDAwdi0yMDB6TTEwMDAgNDAwaC0zMDB2MjAwaDMwMHYtMjAwek05MDAgMTAwaC0yMDB2MjAwaDIwMHYtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTc7IiBkPSJNMzUwIDExMDBoNDAwcTE2MiAwIDI1NiAtOTMuNXQ5NCAtMjU2LjV2LTQwMHEwIC0xNjUgLTkzLjUgLTI1Ny41dC0yNTYuNSAtOTIuNWgtNDAwcS0xNjUgMCAtMjU3LjUgOTIuNXQtOTIuNSAyNTcuNXY0MDBxMCAxNjUgOTIuNSAyNTcuNXQyNTcuNSA5Mi41ek04MDAgOTAwaC01MDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNSB2NTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTg7IiBkPSJNMzUwIDExMDBoNDAwcTE2NSAwIDI1Ny41IC05Mi41dDkyLjUgLTI1Ny41di00MDBxMCAtMTY1IC05Mi41IC0yNTcuNXQtMjU3LjUgLTkyLjVoLTQwMHEtMTYzIDAgLTI1Ni41IDkyLjV0LTkzLjUgMjU3LjV2NDAwcTAgMTYzIDk0IDI1Ni41dDI1NiA5My41ek04MDAgOTAwaC01MDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNSB2NTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41ek00NDAgNzcwbDI1MyAtMTkwcTE3IC0xMiAxNyAtMzB0LTE3IC0zMGwtMjUzIC0xOTBxLTE2IC0xMiAtMjggLTYuNXQtMTIgMjYuNXY0MDBxMCAyMSAxMiAyNi41dDI4IC02LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE1OTsiIGQ9Ik0zNTAgMTEwMGg0MDBxMTYzIDAgMjU2LjUgLTk0dDkzLjUgLTI1NnYtNDAwcTAgLTE2NSAtOTIuNSAtMjU3LjV0LTI1Ny41IC05Mi41aC00MDBxLTE2NSAwIC0yNTcuNSA5Mi41dC05Mi41IDI1Ny41djQwMHEwIDE2MyA5Mi41IDI1Ni41dDI1Ny41IDkzLjV6TTgwMCA5MDBoLTUwMHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNXYtNTAwcTAgLTQxIDI5LjUgLTcwLjV0NzAuNSAtMjkuNWg1MDBxNDEgMCA3MC41IDI5LjV0MjkuNSA3MC41IHY1MDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjV6TTM1MCA3MDBoNDAwcTIxIDAgMjYuNSAtMTJ0LTYuNSAtMjhsLTE5MCAtMjUzcS0xMiAtMTcgLTMwIC0xN3QtMzAgMTdsLTE5MCAyNTNxLTEyIDE2IC02LjUgMjh0MjYuNSAxMnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTYwOyIgZD0iTTM1MCAxMTAwaDQwMHExNjUgMCAyNTcuNSAtOTIuNXQ5Mi41IC0yNTcuNXYtNDAwcTAgLTE2MyAtOTIuNSAtMjU2LjV0LTI1Ny41IC05My41aC00MDBxLTE2MyAwIC0yNTYuNSA5NHQtOTMuNSAyNTZ2NDAwcTAgMTY1IDkyLjUgMjU3LjV0MjU3LjUgOTIuNXpNODAwIDkwMGgtNTAwcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41di01MDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDUwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjUgdjUwMHEwIDQxIC0yOS41IDcwLjV0LTcwLjUgMjkuNXpNNTgwIDY5M2wxOTAgLTI1M3ExMiAtMTYgNi41IC0yOHQtMjYuNSAtMTJoLTQwMHEtMjEgMCAtMjYuNSAxMnQ2LjUgMjhsMTkwIDI1M3ExMiAxNyAzMCAxN3QzMCAtMTd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE2MTsiIGQ9Ik01NTAgMTEwMGg0MDBxMTY1IDAgMjU3LjUgLTkyLjV0OTIuNSAtMjU3LjV2LTQwMHEwIC0xNjUgLTkyLjUgLTI1Ny41dC0yNTcuNSAtOTIuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDQ1MHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2NTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41aC00NTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0zMzggODY3bDMyNCAtMjg0cTE2IC0xNCAxNiAtMzN0LTE2IC0zM2wtMzI0IC0yODRxLTE2IC0xNCAtMjcgLTl0LTExIDI2djE1MGgtMjUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDI1MHYxNTBxMCAyMSAxMSAyNnQyNyAtOXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTYyOyIgZD0iTTc5MyAxMTgybDkgLTlxOCAtMTAgNSAtMjdxLTMgLTExIC03OSAtMjI1LjV0LTc4IC0yMjEuNWwzMDAgMXEyNCAwIDMyLjUgLTE3LjV0LTUuNSAtMzUuNXEtMSAwIC0xMzMuNSAtMTU1dC0yNjcgLTMxMi41dC0xMzguNSAtMTYyLjVxLTEyIC0xNSAtMjYgLTE1aC05bC05IDhxLTkgMTEgLTQgMzJxMiA5IDQyIDEyMy41dDc5IDIyNC41bDM5IDExMGgtMzAycS0yMyAwIC0zMSAxOXEtMTAgMjEgNiA0MXE3NSA4NiAyMDkuNSAyMzcuNSB0MjI4IDI1N3Q5OC41IDExMS41cTkgMTYgMjUgMTZoOXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTYzOyIgZD0iTTM1MCAxMTAwaDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00NTBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNDUwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTQwMHEtMTY1IDAgLTI1Ny41IDkyLjV0LTkyLjUgMjU3LjV2NDAwIHEwIDE2NSA5Mi41IDI1Ny41dDI1Ny41IDkyLjV6TTkzOCA4NjdsMzI0IC0yODRxMTYgLTE0IDE2IC0zM3QtMTYgLTMzbC0zMjQgLTI4NHEtMTYgLTE0IC0yNyAtOXQtMTEgMjZ2MTUwaC0yNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMjUwdjE1MHEwIDIxIDExIDI2dDI3IC05eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNjQ7IiBkPSJNNzUwIDEyMDBoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di00MDBxMCAtMjEgLTEwLjUgLTI1dC0yNC41IDEwbC0xMDkgMTA5bC0zMTIgLTMxMnEtMTUgLTE1IC0zNS41IC0xNXQtMzUuNSAxNWwtMTQxIDE0MXEtMTUgMTUgLTE1IDM1LjV0MTUgMzUuNWwzMTIgMzEybC0xMDkgMTA5cS0xNCAxNCAtMTAgMjQuNXQyNSAxMC41ek00NTYgOTAwaC0xNTZxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMCBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDUwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2MTQ4bDIwMCAyMDB2LTI5OHEwIC0xNjUgLTkzLjUgLTI1Ny41dC0yNTYuNSAtOTIuNWgtNDAwcS0xNjUgMCAtMjU3LjUgOTIuNXQtOTIuNSAyNTcuNXY0MDBxMCAxNjUgOTIuNSAyNTcuNXQyNTcuNSA5Mi41aDMwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTY1OyIgZD0iTTYwMCAxMTg2cTExOSAwIDIyNy41IC00Ni41dDE4NyAtMTI1dDEyNSAtMTg3dDQ2LjUgLTIyNy41dC00Ni41IC0yMjcuNXQtMTI1IC0xODd0LTE4NyAtMTI1dC0yMjcuNSAtNDYuNXQtMjI3LjUgNDYuNXQtMTg3IDEyNXQtMTI1IDE4N3QtNDYuNSAyMjcuNXQ0Ni41IDIyNy41dDEyNSAxODd0MTg3IDEyNXQyMjcuNSA0Ni41ek02MDAgMTAyMnEtMTE1IDAgLTIxMiAtNTYuNXQtMTUzLjUgLTE1My41dC01Ni41IC0yMTJ0NTYuNSAtMjEyIHQxNTMuNSAtMTUzLjV0MjEyIC01Ni41dDIxMiA1Ni41dDE1My41IDE1My41dDU2LjUgMjEydC01Ni41IDIxMnQtMTUzLjUgMTUzLjV0LTIxMiA1Ni41ek02MDAgNzk0cTgwIDAgMTM3IC01N3Q1NyAtMTM3dC01NyAtMTM3dC0xMzcgLTU3dC0xMzcgNTd0LTU3IDEzN3Q1NyAxMzd0MTM3IDU3eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNjY7IiBkPSJNNDUwIDEyMDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0zNTBoMjQ1cTIwIDAgMjUgLTExdC05IC0yNmwtMzgzIC00MjZxLTE0IC0xNSAtMzMuNSAtMTV0LTMyLjUgMTVsLTM3OSA0MjZxLTEzIDE1IC04LjUgMjZ0MjUuNSAxMWgyNTB2MzUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgMzAwaDEwMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTI1MGgtMTEwMHYyNTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiBNOTAwIDIwMHYtNTBoMTAwdjUwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE2NzsiIGQ9Ik01ODMgMTE4MmwzNzggLTQzNXExNCAtMTUgOSAtMzF0LTI2IC0xNmgtMjQ0di0yNTBxMCAtMjAgLTE3IC0zNXQtMzkgLTE1aC0yMDBxLTIwIDAgLTMyIDE0LjV0LTEyIDM1LjV2MjUwaC0yNTBxLTIwIDAgLTI1LjUgMTYuNXQ4LjUgMzEuNWwzODMgNDMxcTE0IDE2IDMzLjUgMTd0MzMuNSAtMTR6TTUwIDMwMGgxMDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yNTBoLTExMDB2MjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXogTTkwMCAyMDB2LTUwaDEwMHY1MGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNjg7IiBkPSJNMzk2IDcyM2wzNjkgMzY5cTcgNyAxNy41IDd0MTcuNSAtN2wxMzkgLTEzOXE3IC04IDcgLTE4LjV0LTcgLTE3LjVsLTUyNSAtNTI1cS03IC04IC0xNy41IC04dC0xNy41IDhsLTI5MiAyOTFxLTcgOCAtNyAxOHQ3IDE4bDEzOSAxMzlxOCA3IDE4LjUgN3QxNy41IC03ek01MCAzMDBoMTAwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjUwaC0xMTAwdjI1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTkwMCAyMDB2LTUwaDEwMHY1MCBoLTEwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTY5OyIgZD0iTTEzNSAxMDIzbDE0MiAxNDJxMTQgMTQgMzUgMTR0MzUgLTE0bDc3IC03N2wtMjEyIC0yMTJsLTc3IDc2cS0xNCAxNSAtMTQgMzZ0MTQgMzV6TTY1NSA4NTVsMjEwIDIxMHExNCAxNCAyNC41IDEwdDEwLjUgLTI1bC0yIC01OTlxLTEgLTIwIC0xNS41IC0zNXQtMzUuNSAtMTVsLTU5NyAtMXEtMjEgMCAtMjUgMTAuNXQxMCAyNC41bDIwOCAyMDhsLTE1NCAxNTVsMjEyIDIxMnpNNTAgMzAwaDEwMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjUgdi0yNTBoLTExMDB2MjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNOTAwIDIwMHYtNTBoMTAwdjUwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3MDsiIGQ9Ik0zNTAgMTIwMGw1OTkgLTJxMjAgLTEgMzUgLTE1LjV0MTUgLTM1LjVsMSAtNTk3cTAgLTIxIC0xMC41IC0yNXQtMjQuNSAxMGwtMjA4IDIwOGwtMTU1IC0xNTRsLTIxMiAyMTJsMTU1IDE1NGwtMjEwIDIxMHEtMTQgMTQgLTEwIDI0LjV0MjUgMTAuNXpNNTI0IDUxMmwtNzYgLTc3cS0xNSAtMTQgLTM2IC0xNHQtMzUgMTRsLTE0MiAxNDJxLTE0IDE0IC0xNCAzNXQxNCAzNWw3NyA3N3pNNTAgMzAwaDEwMDBxMjEgMCAzNS41IC0xNC41IHQxNC41IC0zNS41di0yNTBoLTExMDB2MjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNOTAwIDIwMHYtNTBoMTAwdjUwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3MTsiIGQ9Ik0xMjAwIDEwM2wtNDgzIDI3NmwtMzE0IC0zOTl2NDIzaC0zOTlsMTE5NiA3OTZ2LTEwOTZ6TTQ4MyA0MjR2LTIzMGw2ODMgOTUzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzI7IiBkPSJNMTEwMCAxMDAwdi04NTBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTE1MHY0MDBoLTcwMHYtNDAwaC0xNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMDBxMCAyMCAxNC41IDM1dDM1LjUgMTVoMjUwdi0zMDBoNTAwdjMwMGgxMDB6TTcwMCAxMDAwaC0xMDB2MjAwaDEwMHYtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzM7IiBkPSJNMTEwMCAxMDAwbC0yIC0xNDlsLTI5OSAtMjk5bC05NSA5NXEtOSA5IC0yMS41IDl0LTIxLjUgLTlsLTE0OSAtMTQ3aC0zMTJ2LTQwMGgtMTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDAwcTAgMjAgMTQuNSAzNXQzNS41IDE1aDI1MHYtMzAwaDUwMHYzMDBoMTAwek03MDAgMTAwMGgtMTAwdjIwMGgxMDB2LTIwMHpNMTEzMiA2MzhsMTA2IC0xMDZxNyAtNyA3IC0xNy41dC03IC0xNy41bC00MjAgLTQyMXEtOCAtNyAtMTggLTcgdC0xOCA3bC0yMDIgMjAzcS04IDcgLTggMTcuNXQ4IDE3LjVsMTA2IDEwNnE3IDggMTcuNSA4dDE3LjUgLThsNzkgLTc5bDI5NyAyOTdxNyA3IDE3LjUgN3QxNy41IC03eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzQ7IiBkPSJNMTEwMCAxMDAwdi0yNjlsLTEwMyAtMTAzbC0xMzQgMTM0cS0xNSAxNSAtMzMuNSAxNi41dC0zNC41IC0xMi41bC0yNjYgLTI2NmgtMzI5di00MDBoLTE1MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwMHEwIDIwIDE0LjUgMzV0MzUuNSAxNWgyNTB2LTMwMGg1MDB2MzAwaDEwMHpNNzAwIDEwMDBoLTEwMHYyMDBoMTAwdi0yMDB6TTEyMDIgNTcybDcwIC03MHExNSAtMTUgMTUgLTM1LjV0LTE1IC0zNS41bC0xMzEgLTEzMSBsMTMxIC0xMzFxMTUgLTE1IDE1IC0zNS41dC0xNSAtMzUuNWwtNzAgLTcwcS0xNSAtMTUgLTM1LjUgLTE1dC0zNS41IDE1bC0xMzEgMTMxbC0xMzEgLTEzMXEtMTUgLTE1IC0zNS41IC0xNXQtMzUuNSAxNWwtNzAgNzBxLTE1IDE1IC0xNSAzNS41dDE1IDM1LjVsMTMxIDEzMWwtMTMxIDEzMXEtMTUgMTUgLTE1IDM1LjV0MTUgMzUuNWw3MCA3MHExNSAxNSAzNS41IDE1dDM1LjUgLTE1bDEzMSAtMTMxbDEzMSAxMzFxMTUgMTUgMzUuNSAxNSB0MzUuNSAtMTV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3NTsiIGQ9Ik0xMTAwIDEwMDB2LTMwMGgtMzUwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xNTBoLTUwMHYtNDAwaC0xNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMDBxMCAyMCAxNC41IDM1dDM1LjUgMTVoMjUwdi0zMDBoNTAwdjMwMGgxMDB6TTcwMCAxMDAwaC0xMDB2MjAwaDEwMHYtMjAwek04NTAgNjAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjUwaDE1MHEyMSAwIDI1IC0xMC41dC0xMCAtMjQuNSBsLTIzMCAtMjMwcS0xNCAtMTQgLTM1IC0xNHQtMzUgMTRsLTIzMCAyMzBxLTE0IDE0IC0xMCAyNC41dDI1IDEwLjVoMTUwdjI1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3NjsiIGQ9Ik0xMTAwIDEwMDB2LTQwMGwtMTY1IDE2NXEtMTQgMTUgLTM1IDE1dC0zNSAtMTVsLTI2MyAtMjY1aC00MDJ2LTQwMGgtMTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDAwcTAgMjAgMTQuNSAzNXQzNS41IDE1aDI1MHYtMzAwaDUwMHYzMDBoMTAwek03MDAgMTAwMGgtMTAwdjIwMGgxMDB2LTIwMHpNOTM1IDU2NWwyMzAgLTIyOXExNCAtMTUgMTAgLTI1LjV0LTI1IC0xMC41aC0xNTB2LTI1MHEwIC0yMCAtMTQuNSAtMzUgdC0zNS41IC0xNWgtMTAwcS0yMSAwIC0zNS41IDE1dC0xNC41IDM1djI1MGgtMTUwcS0yMSAwIC0yNSAxMC41dDEwIDI1LjVsMjMwIDIyOXExNCAxNSAzNSAxNXQzNSAtMTV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3NzsiIGQ9Ik01MCAxMTAwaDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTE1MGgtMTIwMHYxNTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0xMjAwIDgwMHYtNTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY1NTBoMTIwMHpNMTAwIDUwMHYtMjAwaDQwMHYyMDBoLTQwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTc4OyIgZD0iTTkzNSAxMTY1bDI0OCAtMjMwcTE0IC0xNCAxNCAtMzV0LTE0IC0zNWwtMjQ4IC0yMzBxLTE0IC0xNCAtMjQuNSAtMTB0LTEwLjUgMjV2MTUwaC00MDB2MjAwaDQwMHYxNTBxMCAyMSAxMC41IDI1dDI0LjUgLTEwek0yMDAgODAwaC01MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg1MHYtMjAwek00MDAgODAwaC0xMDB2MjAwaDEwMHYtMjAwek0xOCA0MzVsMjQ3IDIzMCBxMTQgMTQgMjQuNSAxMHQxMC41IC0yNXYtMTUwaDQwMHYtMjAwaC00MDB2LTE1MHEwIC0yMSAtMTAuNSAtMjV0LTI0LjUgMTBsLTI0NyAyMzBxLTE1IDE0IC0xNSAzNXQxNSAzNXpNOTAwIDMwMGgtMTAwdjIwMGgxMDB2LTIwMHpNMTAwMCA1MDBoNTFxMjAgMCAzNC41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzQuNSAtMTQuNWgtNTF2MjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzk7IiBkPSJNODYyIDEwNzNsMjc2IDExNnEyNSAxOCA0My41IDh0MTguNSAtNDF2LTExMDZxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2Mzk3cS00IDEgLTExIDV0LTI0IDE3LjV0LTMwIDI5dC0yNCA0MnQtMTEgNTYuNXYzNTlxMCAzMSAxOC41IDY1dDQzLjUgNTJ6TTU1MCAxMjAwcTIyIDAgMzQuNSAtMTIuNXQxNC41IC0yNC41bDEgLTEzdi00NTBxMCAtMjggLTEwLjUgLTU5LjUgdC0yNSAtNTZ0LTI5IC00NXQtMjUuNSAtMzEuNWwtMTAgLTExdi00NDdxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDQ3cS00IDQgLTExIDExLjV0LTI0IDMwLjV0LTMwIDQ2dC0yNCA1NXQtMTEgNjB2NDUwcTAgMiAwLjUgNS41dDQgMTJ0OC41IDE1dDE0LjUgMTJ0MjIuNSA1LjVxMjAgMCAzMi41IC0xMi41dDE0LjUgLTI0LjVsMyAtMTN2LTM1MGgxMDB2MzUwdjUuNXQyLjUgMTIgdDcgMTV0MTUgMTJ0MjUuNSA1LjVxMjMgMCAzNS41IC0xMi41dDEzLjUgLTI0LjVsMSAtMTN2LTM1MGgxMDB2MzUwcTAgMiAwLjUgNS41dDMgMTJ0NyAxNXQxNSAxMnQyNC41IDUuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTgwOyIgZD0iTTEyMDAgMTEwMHYtNTZxLTQgMCAtMTEgLTAuNXQtMjQgLTN0LTMwIC03LjV0LTI0IC0xNXQtMTEgLTI0di04ODhxMCAtMjIgMjUgLTM0LjV0NTAgLTEzLjVsMjUgLTJ2LTU2aC00MDB2NTZxNzUgMCA4Ny41IDYuNXQxMi41IDQzLjV2Mzk0aC01MDB2LTM5NHEwIC0zNyAxMi41IC00My41dDg3LjUgLTYuNXYtNTZoLTQwMHY1NnE0IDAgMTEgMC41dDI0IDN0MzAgNy41dDI0IDE1dDExIDI0djg4OHEwIDIyIC0yNSAzNC41dC01MCAxMy41IGwtMjUgMnY1Nmg0MDB2LTU2cS03NSAwIC04Ny41IC02LjV0LTEyLjUgLTQzLjV2LTM5NGg1MDB2Mzk0cTAgMzcgLTEyLjUgNDMuNXQtODcuNSA2LjV2NTZoNDAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODE7IiBkPSJNNjc1IDEwMDBoMzc1cTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xNTBoLTEwNWwtMjk1IC05OHY5OGwtMjAwIDIwMGgtNDAwbDEwMCAxMDBoMzc1ek0xMDAgOTAwaDMwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtNTAwcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC0zMDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djUwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjV6TTEwMCA4MDB2LTIwMGgzMDB2MjAwIGgtMzAwek0xMTAwIDUzNWwtNDAwIC0xMzN2MTYzbDQwMCAxMzN2LTE2M3pNMTAwIDUwMHYtMjAwaDMwMHYyMDBoLTMwMHpNMTEwMCAzOTh2LTI0OHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMzc1bC0xMDAgLTEwMGgtMzc1bC0xMDAgMTAwaDQwMGwyMDAgMjAwaDEwNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTgyOyIgZD0iTTE3IDEwMDdsMTYyIDE2MnExNyAxNyA0MCAxNHQzNyAtMjJsMTM5IC0xOTRxMTQgLTIwIDExIC00NC41dC0yMCAtNDEuNWwtMTE5IC0xMThxMTAyIC0xNDIgMjI4IC0yNjh0MjY3IC0yMjdsMTE5IDExOHExNyAxNyA0Mi41IDE5dDQ0LjUgLTEybDE5MiAtMTM2cTE5IC0xNCAyMi41IC0zNy41dC0xMy41IC00MC41bC0xNjMgLTE2MnEtMyAtMSAtOS41IC0xdC0yOS41IDJ0LTQ3LjUgNnQtNjIuNSAxNC41dC03Ny41IDI2LjV0LTkwIDQyLjUgdC0xMDEuNSA2MHQtMTExIDgzdC0xMTkgMTA4LjVxLTc0IDc0IC0xMzMuNSAxNTAuNXQtOTQuNSAxMzguNXQtNjAgMTE5LjV0LTM0LjUgMTAwdC0xNSA3NC41dC00LjUgNDh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE4MzsiIGQ9Ik02MDAgMTEwMHE5MiAwIDE3NSAtMTAuNXQxNDEuNSAtMjd0MTA4LjUgLTM2LjV0ODEuNSAtNDB0NTMuNSAtMzd0MzEgLTI3bDkgLTEwdi0yMDBxMCAtMjEgLTE0LjUgLTMzdC0zNC41IC05bC0yMDIgMzRxLTIwIDMgLTM0LjUgMjB0LTE0LjUgMzh2MTQ2cS0xNDEgMjQgLTMwMCAyNHQtMzAwIC0yNHYtMTQ2cTAgLTIxIC0xNC41IC0zOHQtMzQuNSAtMjBsLTIwMiAtMzRxLTIwIC0zIC0zNC41IDl0LTE0LjUgMzN2MjAwcTMgNCA5LjUgMTAuNSB0MzEgMjZ0NTQgMzcuNXQ4MC41IDM5LjV0MTA5IDM3LjV0MTQxIDI2LjV0MTc1IDEwLjV6TTYwMCA3OTVxNTYgMCA5NyAtOS41dDYwIC0yMy41dDMwIC0yOHQxMiAtMjRsMSAtMTB2LTUwbDM2NSAtMzAzcTE0IC0xNSAyNC41IC00MHQxMC41IC00NXYtMjEycTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYyMTJxMCAyMCAxMC41IDQ1dDI0LjUgNDBsMzY1IDMwM3Y1MCBxMCA0IDEgMTAuNXQxMiAyM3QzMCAyOXQ2MCAyMi41dDk3IDEweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODQ7IiBkPSJNMTEwMCA3MDBsLTIwMCAtMjAwaC02MDBsLTIwMCAyMDB2NTAwaDIwMHYtMjAwaDIwMHYyMDBoMjAwdi0yMDBoMjAwdjIwMGgyMDB2LTUwMHpNMjUwIDQwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV0LTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEybDEzNyAtMTAwaC05NTBsMTM3IDEwMGgtMTJxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDEwMGgxMTAwcTIxIDAgMzUuNSAtMTQuNSB0MTQuNSAtMzUuNXYtNTBoLTEyMDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODU7IiBkPSJNNzAwIDExMDBoLTEwMHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNXYtMTAwMGgzMDB2MTAwMHEwIDQxIC0yOS41IDcwLjV0LTcwLjUgMjkuNXpNMTEwMCA4MDBoLTEwMHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNXYtNzAwaDMwMHY3MDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjV6TTQwMCAwaC0zMDB2NDAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgxMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTQwMHogIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE4NjsiIGQ9Ik0yMDAgMTEwMGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnY1MDBxMCAxMjQgODggMjEydDIxMiA4OHpNMTAwIDkwMHYtNzAwaDkwMHY3MDBoLTkwMHpNNTAwIDcwMGgtMjAwdi0xMDBoMjAwdi0zMDBoLTMwMHYxMDBoMjAwdjEwMGgtMjAwdjMwMGgzMDB2LTEwMHpNOTAwIDcwMHYtMzAwbC0xMDAgLTEwMGgtMjAwdjUwMGgyMDB6IE03MDAgNzAwdi0zMDBoMTAwdjMwMGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODc7IiBkPSJNMjAwIDExMDBoNzAwcTEyNCAwIDIxMiAtODh0ODggLTIxMnYtNTAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OGgtNzAwcS0xMjQgMCAtMjEyIDg4dC04OCAyMTJ2NTAwcTAgMTI0IDg4IDIxMnQyMTIgODh6TTEwMCA5MDB2LTcwMGg5MDB2NzAwaC05MDB6TTUwMCAzMDBoLTEwMHYyMDBoLTEwMHYtMjAwaC0xMDB2NTAwaDEwMHYtMjAwaDEwMHYyMDBoMTAwdi01MDB6TTkwMCA3MDB2LTMwMGwtMTAwIC0xMDBoLTIwMHY1MDBoMjAweiBNNzAwIDcwMHYtMzAwaDEwMHYzMDBoLTEwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTg4OyIgZD0iTTIwMCAxMTAwaDcwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJ2LTUwMHEwIC0xMjQgLTg4IC0yMTJ0LTIxMiAtODhoLTcwMHEtMTI0IDAgLTIxMiA4OHQtODggMjEydjUwMHEwIDEyNCA4OCAyMTJ0MjEyIDg4ek0xMDAgOTAwdi03MDBoOTAwdjcwMGgtOTAwek01MDAgNzAwaC0yMDB2LTMwMGgyMDB2LTEwMGgtMzAwdjUwMGgzMDB2LTEwMHpNOTAwIDcwMGgtMjAwdi0zMDBoMjAwdi0xMDBoLTMwMHY1MDBoMzAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE4OTsiIGQ9Ik0yMDAgMTEwMGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnY1MDBxMCAxMjQgODggMjEydDIxMiA4OHpNMTAwIDkwMHYtNzAwaDkwMHY3MDBoLTkwMHpNNTAwIDQwMGwtMzAwIDE1MGwzMDAgMTUwdi0zMDB6TTkwMCA1NTBsLTMwMCAtMTUwdjMwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTkwOyIgZD0iTTIwMCAxMTAwaDcwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJ2LTUwMHEwIC0xMjQgLTg4IC0yMTJ0LTIxMiAtODhoLTcwMHEtMTI0IDAgLTIxMiA4OHQtODggMjEydjUwMHEwIDEyNCA4OCAyMTJ0MjEyIDg4ek0xMDAgOTAwdi03MDBoOTAwdjcwMGgtOTAwek05MDAgMzAwaC03MDB2NTAwaDcwMHYtNTAwek04MDAgNzAwaC0xMzBxLTM4IDAgLTY2LjUgLTQzdC0yOC41IC0xMDh0MjcgLTEwN3Q2OCAtNDJoMTMwdjMwMHpNMzAwIDcwMHYtMzAwIGgxMzBxNDEgMCA2OCA0MnQyNyAxMDd0LTI4LjUgMTA4dC02Ni41IDQzaC0xMzB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5MTsiIGQ9Ik0yMDAgMTEwMGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnY1MDBxMCAxMjQgODggMjEydDIxMiA4OHpNMTAwIDkwMHYtNzAwaDkwMHY3MDBoLTkwMHpNNTAwIDcwMGgtMjAwdi0xMDBoMjAwdi0zMDBoLTMwMHYxMDBoMjAwdjEwMGgtMjAwdjMwMGgzMDB2LTEwMHpNOTAwIDMwMGgtMTAwdjQwMGgtMTAwdjEwMGgyMDB2LTUwMHogTTcwMCAzMDBoLTEwMHYxMDBoMTAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5MjsiIGQ9Ik0yMDAgMTEwMGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnY1MDBxMCAxMjQgODggMjEydDIxMiA4OHpNMTAwIDkwMHYtNzAwaDkwMHY3MDBoLTkwMHpNMzAwIDcwMGgyMDB2LTQwMGgtMzAwdjUwMGgxMDB2LTEwMHpNOTAwIDMwMGgtMTAwdjQwMGgtMTAwdjEwMGgyMDB2LTUwMHpNMzAwIDYwMHYtMjAwaDEwMHYyMDBoLTEwMHogTTcwMCAzMDBoLTEwMHYxMDBoMTAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5MzsiIGQ9Ik0yMDAgMTEwMGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnY1MDBxMCAxMjQgODggMjEydDIxMiA4OHpNMTAwIDkwMHYtNzAwaDkwMHY3MDBoLTkwMHpNNTAwIDUwMGwtMTk5IC0yMDBoLTEwMHY1MGwxOTkgMjAwdjE1MGgtMjAwdjEwMGgzMDB2LTMwMHpNOTAwIDMwMGgtMTAwdjQwMGgtMTAwdjEwMGgyMDB2LTUwMHpNNzAxIDMwMGgtMTAwIHYxMDBoMTAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5NDsiIGQ9Ik02MDAgMTE5MXExMjAgMCAyMjkuNSAtNDd0MTg4LjUgLTEyNnQxMjYgLTE4OC41dDQ3IC0yMjkuNXQtNDcgLTIyOS41dC0xMjYgLTE4OC41dC0xODguNSAtMTI2dC0yMjkuNSAtNDd0LTIyOS41IDQ3dC0xODguNSAxMjZ0LTEyNiAxODguNXQtNDcgMjI5LjV0NDcgMjI5LjV0MTI2IDE4OC41dDE4OC41IDEyNnQyMjkuNSA0N3pNNjAwIDEwMjFxLTExNCAwIC0yMTEgLTU2LjV0LTE1My41IC0xNTMuNXQtNTYuNSAtMjExdDU2LjUgLTIxMSB0MTUzLjUgLTE1My41dDIxMSAtNTYuNXQyMTEgNTYuNXQxNTMuNSAxNTMuNXQ1Ni41IDIxMXQtNTYuNSAyMTF0LTE1My41IDE1My41dC0yMTEgNTYuNXpNODAwIDcwMGgtMzAwdi0yMDBoMzAwdi0xMDBoLTMwMGwtMTAwIDEwMHYyMDBsMTAwIDEwMGgzMDB2LTEwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTk1OyIgZD0iTTYwMCAxMTkxcTEyMCAwIDIyOS41IC00N3QxODguNSAtMTI2dDEyNiAtMTg4LjV0NDcgLTIyOS41dC00NyAtMjI5LjV0LTEyNiAtMTg4LjV0LTE4OC41IC0xMjZ0LTIyOS41IC00N3QtMjI5LjUgNDd0LTE4OC41IDEyNnQtMTI2IDE4OC41dC00NyAyMjkuNXQ0NyAyMjkuNXQxMjYgMTg4LjV0MTg4LjUgMTI2dDIyOS41IDQ3ek02MDAgMTAyMXEtMTE0IDAgLTIxMSAtNTYuNXQtMTUzLjUgLTE1My41dC01Ni41IC0yMTF0NTYuNSAtMjExIHQxNTMuNSAtMTUzLjV0MjExIC01Ni41dDIxMSA1Ni41dDE1My41IDE1My41dDU2LjUgMjExdC01Ni41IDIxMXQtMTUzLjUgMTUzLjV0LTIxMSA1Ni41ek04MDAgNzAwdi0xMDBsLTUwIC01MGwxMDAgLTEwMHYtNTBoLTEwMGwtMTAwIDEwMGgtMTUwdi0xMDBoLTEwMHY0MDBoMzAwek01MDAgNzAwdi0xMDBoMjAwdjEwMGgtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxOTc7IiBkPSJNNTAzIDEwODlxMTEwIDAgMjAwLjUgLTU5LjV0MTM0LjUgLTE1Ni41cTQ0IDE0IDkwIDE0cTEyMCAwIDIwNSAtODYuNXQ4NSAtMjA3dC04NSAtMjA3dC0yMDUgLTg2LjVoLTEyOHYyNTBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTMwMHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMjUwaC0yMjJxLTgwIDAgLTEzNiA1Ny41dC01NiAxMzYuNXEwIDY5IDQzIDEyMi41dDEwOCA2Ny41cS0yIDE5IC0yIDM3cTAgMTAwIDQ5IDE4NSB0MTM0IDEzNHQxODUgNDl6TTUyNSA1MDBoMTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMjc1aDEzN3EyMSAwIDI2IC0xMS41dC04IC0yNy41bC0yMjMgLTI0NHEtMTMgLTE2IC0zMiAtMTZ0LTMyIDE2bC0yMjMgMjQ0cS0xMyAxNiAtOCAyNy41dDI2IDExLjVoMTM3djI3NXEwIDEwIDcuNSAxNy41dDE3LjUgNy41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxOTg7IiBkPSJNNTAyIDEwODlxMTEwIDAgMjAxIC01OS41dDEzNSAtMTU2LjVxNDMgMTUgODkgMTVxMTIxIDAgMjA2IC04Ni41dDg2IC0yMDYuNXEwIC05OSAtNjAgLTE4MXQtMTUwIC0xMTBsLTM3OCAzNjBxLTEzIDE2IC0zMS41IDE2dC0zMS41IC0xNmwtMzgxIC0zNjVoLTlxLTc5IDAgLTEzNS41IDU3LjV0LTU2LjUgMTM2LjVxMCA2OSA0MyAxMjIuNXQxMDggNjcuNXEtMiAxOSAtMiAzOHEwIDEwMCA0OSAxODQuNXQxMzMuNSAxMzR0MTg0LjUgNDkuNXogTTYzMiA0NjdsMjIzIC0yMjhxMTMgLTE2IDggLTI3LjV0LTI2IC0xMS41aC0xMzd2LTI3NXEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djI3NWgtMTM3cS0yMSAwIC0yNiAxMS41dDggMjcuNXExOTkgMjA0IDIyMyAyMjhxMTkgMTkgMzEuNSAxOXQzMi41IC0xOXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTk5OyIgZD0iTTcwMCAxMDB2MTAwaDQwMGwtMjcwIDMwMGgxNzBsLTI3MCAzMDBoMTcwbC0zMDAgMzMzbC0zMDAgLTMzM2gxNzBsLTI3MCAtMzAwaDE3MGwtMjcwIC0zMDBoNDAwdi0xMDBoLTUwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di01MGg0MDB2NTBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMDA7IiBkPSJNNjAwIDExNzlxOTQgMCAxNjcuNSAtNTYuNXQ5OS41IC0xNDUuNXE4OSAtNiAxNTAuNSAtNzEuNXQ2MS41IC0xNTUuNXEwIC02MSAtMjkuNSAtMTEyLjV0LTc5LjUgLTgyLjVxOSAtMjkgOSAtNTVxMCAtNzQgLTUyLjUgLTEyNi41dC0xMjYuNSAtNTIuNXEtNTUgMCAtMTAwIDMwdi0yNTFxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTUwaC0zMDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41djI1MXEtNDUgLTMwIC0xMDAgLTMwIHEtNzQgMCAtMTI2LjUgNTIuNXQtNTIuNSAxMjYuNXEwIDE4IDQgMzhxLTQ3IDIxIC03NS41IDY1dC0yOC41IDk3cTAgNzQgNTIuNSAxMjYuNXQxMjYuNSA1Mi41cTUgMCAyMyAtMnEwIDIgLTEgMTB0LTEgMTNxMCAxMTYgODEuNSAxOTcuNXQxOTcuNSA4MS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMDE7IiBkPSJNMTAxMCAxMDEwcTExMSAtMTExIDE1MC41IC0yNjAuNXQwIC0yOTl0LTE1MC41IC0yNjAuNXEtODMgLTgzIC0xOTEuNSAtMTI2LjV0LTIxOC41IC00My41dC0yMTguNSA0My41dC0xOTEuNSAxMjYuNXEtMTExIDExMSAtMTUwLjUgMjYwLjV0MCAyOTl0MTUwLjUgMjYwLjVxODMgODMgMTkxLjUgMTI2LjV0MjE4LjUgNDMuNXQyMTguNSAtNDMuNXQxOTEuNSAtMTI2LjV6TTQ3NiAxMDY1cS00IDAgLTggLTFxLTEyMSAtMzQgLTIwOS41IC0xMjIuNSB0LTEyMi41IC0yMDkuNXEtNCAtMTIgMi41IC0yM3QxOC41IC0xNGwzNiAtOXEzIC0xIDcgLTFxMjMgMCAyOSAyMnEyNyA5NiA5OCAxNjZxNzAgNzEgMTY2IDk4cTExIDMgMTcuNSAxMy41dDMuNSAyMi41bC05IDM1cS0zIDEzIC0xNCAxOXEtNyA0IC0xNSA0ek01MTIgOTIwcS00IDAgLTkgLTJxLTgwIC0yNCAtMTM4LjUgLTgyLjV0LTgyLjUgLTEzOC41cS00IC0xMyAyIC0yNHQxOSAtMTRsMzQgLTlxNCAtMSA4IC0xcTIyIDAgMjggMjEgcTE4IDU4IDU4LjUgOTguNXQ5Ny41IDU4LjVxMTIgMyAxOCAxMy41dDMgMjEuNWwtOSAzNXEtMyAxMiAtMTQgMTlxLTcgNCAtMTUgNHpNNzE5LjUgNzE5LjVxLTQ5LjUgNDkuNSAtMTE5LjUgNDkuNXQtMTE5LjUgLTQ5LjV0LTQ5LjUgLTExOS41dDQ5LjUgLTExOS41dDExOS41IC00OS41dDExOS41IDQ5LjV0NDkuNSAxMTkuNXQtNDkuNSAxMTkuNXpNODU1IDU1MXEtMjIgMCAtMjggLTIxcS0xOCAtNTggLTU4LjUgLTk4LjV0LTk4LjUgLTU3LjUgcS0xMSAtNCAtMTcgLTE0LjV0LTMgLTIxLjVsOSAtMzVxMyAtMTIgMTQgLTE5cTcgLTQgMTUgLTRxNCAwIDkgMnE4MCAyNCAxMzguNSA4Mi41dDgyLjUgMTM4LjVxNCAxMyAtMi41IDI0dC0xOC41IDE0bC0zNCA5cS00IDEgLTggMXpNMTAwMCA1MTVxLTIzIDAgLTI5IC0yMnEtMjcgLTk2IC05OCAtMTY2cS03MCAtNzEgLTE2NiAtOThxLTExIC0zIC0xNy41IC0xMy41dC0zLjUgLTIyLjVsOSAtMzVxMyAtMTMgMTQgLTE5cTcgLTQgMTUgLTQgcTQgMCA4IDFxMTIxIDM0IDIwOS41IDEyMi41dDEyMi41IDIwOS41cTQgMTIgLTIuNSAyM3QtMTguNSAxNGwtMzYgOXEtMyAxIC03IDF6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIwMjsiIGQ9Ik03MDAgODAwaDMwMHYtMzgwaC0xODB2MjAwaC0zNDB2LTIwMGgtMzgwdjc1NXEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDU3NXYtNDAwek0xMDAwIDkwMGgtMjAwdjIwMHpNNzAwIDMwMGgxNjJsLTIxMiAtMjEybC0yMTIgMjEyaDE2MnYyMDBoMTAwdi0yMDB6TTUyMCAwaC0zOTVxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYzOTV6TTEwMDAgMjIwdi0xOTVxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0xOTV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIwMzsiIGQ9Ik03MDAgODAwaDMwMHYtNTIwbC0zNTAgMzUwbC01NTAgLTU1MHYxMDk1cTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoNTc1di00MDB6TTEwMDAgOTAwaC0yMDB2MjAwek04NjIgMjAwaC0xNjJ2LTIwMGgtMTAwdjIwMGgtMTYybDIxMiAyMTJ6TTQ4MCAwaC0zNTVxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1NWgzODB2LTgwek0xMDAwIDgwdi01NXEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE1NXY4MGgxODB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIwNDsiIGQ9Ik0xMTYyIDgwMGgtMTYydi0yMDBoMTAwbDEwMCAtMTAwaC0zMDB2MzAwaC0xNjJsMjEyIDIxMnpNMjAwIDgwMGgyMDBxMjcgMCA0MCAtMnQyOS41IC0xMC41dDIzLjUgLTMwdDcgLTU3LjVoMzAwdi0xMDBoLTYwMGwtMjAwIC0zNTB2NDUwaDEwMHEwIDM2IDcgNTcuNXQyMy41IDMwdDI5LjUgMTAuNXQ0MCAyek04MDAgNDAwaDI0MGwtMjQwIC00MDBoLTgwMGwzMDAgNTAwaDUwMHYtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMDU7IiBkPSJNNjUwIDExMDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGg1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0zMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoNTB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0xMDAwIDg1MHYxNTBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTgwMCBxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTYwMHEtMSAwIC0yMCA0bDI0NiAyNDZsLTMyNiAzMjZ2MzI0cTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNXYtMTUwcTAgLTYyIDQ0IC0xMDZ0MTA2IC00NGgzMDBxNjIgMCAxMDYgNDR0NDQgMTA2ek00MTIgMjUwbC0yMTIgLTIxMnYxNjJoLTIwMHYxMDBoMjAwdjE2MnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjA2OyIgZD0iTTQ1MCAxMTAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTBoNTBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMzAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDUwdjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNODAwIDg1MHYxNTBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTUwMCBoLTIwMHYtMzAwaDIwMHEwIC0zNiAtNyAtNTcuNXQtMjMuNSAtMzB0LTI5LjUgLTEwLjV0LTQwIC0yaC02MDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djgwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjV2LTE1MHEwIC02MiA0NCAtMTA2dDEwNiAtNDRoMzAwcTYyIDAgMTA2IDQ0dDQ0IDEwNnpNMTIxMiAyNTBsLTIxMiAtMjEydjE2MmgtMjAwdjEwMGgyMDB2MTYyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMDk7IiBkPSJNNjU4IDExOTdsNjM3IC0xMTA0cTIzIC0zOCA3IC02NS41dC02MCAtMjcuNWgtMTI3NnEtNDQgMCAtNjAgMjcuNXQ3IDY1LjVsNjM3IDExMDRxMjIgMzkgNTQgMzl0NTQgLTM5ek03MDQgODAwaC0yMDhxLTIwIDAgLTMyIC0xNC41dC04IC0zNC41bDU4IC0zMDJxNCAtMjAgMjEuNSAtMzQuNXQzNy41IC0xNC41aDU0cTIwIDAgMzcuNSAxNC41dDIxLjUgMzQuNWw1OCAzMDJxNCAyMCAtOCAzNC41dC0zMiAxNC41ek01MDAgMzAwdi0xMDBoMjAwIHYxMDBoLTIwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjEwOyIgZD0iTTQyNSAxMTAwaDI1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTI1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek00MjUgODAwaDI1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTI1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MHEwIDEwIDcuNSAxNy41IHQxNy41IDcuNXpNODI1IDgwMGgyNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNMjUgNTAwaDI1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTI1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MCBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNNDI1IDUwMGgyNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNODI1IDUwMGgyNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNSB2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTI1IDIwMGgyNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNNDI1IDIwMGgyNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41IHQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTgyNSAyMDBoMjUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMjUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIxMTsiIGQ9Ik03MDAgMTIwMGgxMDB2LTIwMGgtMTAwdi0xMDBoMzUwcTYyIDAgODYuNSAtMzkuNXQtMy41IC05NC41bC02NiAtMTMycS00MSAtODMgLTgxIC0xMzRoLTc3MnEtNDAgNTEgLTgxIDEzNGwtNjYgMTMycS0yOCA1NSAtMy41IDk0LjV0ODYuNSAzOS41aDM1MHYxMDBoLTEwMHYyMDBoMTAwdjEwMGgyMDB2LTEwMHpNMjUwIDQwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV0LTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEybDEzNyAtMTAwIGgtOTUwbDEzOCAxMDBoLTEzcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXQxNC41IDM1LjV0MzUuNSAxNC41ek01MCAxMDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTBoLTEyMDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMTI7IiBkPSJNNjAwIDEzMDBxNDAgMCA2OC41IC0yOS41dDI4LjUgLTcwLjVoLTE5NHEwIDQxIDI4LjUgNzAuNXQ2OC41IDI5LjV6TTQ0MyAxMTAwaDMxNHExOCAtMzcgMTggLTc1cTAgLTggLTMgLTI1aDMyOHE0MSAwIDQ0LjUgLTE2LjV0LTMwLjUgLTM4LjVsLTE3NSAtMTQ1aC02NzhsLTE3OCAxNDVxLTM0IDIyIC0yOSAzOC41dDQ2IDE2LjVoMzI4cS0zIDE3IC0zIDI1cTAgMzggMTggNzV6TTI1MCA3MDBoNzAwcTIxIDAgMzUuNSAtMTQuNSB0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTUwdi0yMDBsMjc1IC0yMDBoLTk1MGwyNzUgMjAwdjIwMGgtMTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXQxNC41IDM1LjV0MzUuNSAxNC41ek01MCAxMDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTBoLTEyMDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMTM7IiBkPSJNNjAwIDExODFxNzUgMCAxMjggLTUzdDUzIC0xMjh0LTUzIC0xMjh0LTEyOCAtNTN0LTEyOCA1M3QtNTMgMTI4dDUzIDEyOHQxMjggNTN6TTYwMiA3OThoNDZxMzQgMCA1NS41IC0yOC41dDIxLjUgLTg2LjVxMCAtNzYgMzkgLTE4M2gtMzI0cTM5IDEwNyAzOSAxODNxMCA1OCAyMS41IDg2LjV0NTYuNSAyOC41aDQ1ek0yNTAgNDAwaDcwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTMgbDEzOCAtMTAwaC05NTBsMTM3IDEwMGgtMTJxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDEwMGgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGgtMTIwMHY1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIxNDsiIGQ9Ik02MDAgMTMwMHE0NyAwIDkyLjUgLTUzLjV0NzEgLTEyM3QyNS41IC0xMjMuNXEwIC03OCAtNTUuNSAtMTMzLjV0LTEzMy41IC01NS41dC0xMzMuNSA1NS41dC01NS41IDEzMy41cTAgNjIgMzQgMTQzbDE0NCAtMTQzbDExMSAxMTFsLTE2MyAxNjNxMzQgMjYgNjMgMjZ6TTYwMiA3OThoNDZxMzQgMCA1NS41IC0yOC41dDIxLjUgLTg2LjVxMCAtNzYgMzkgLTE4M2gtMzI0cTM5IDEwNyAzOSAxODNxMCA1OCAyMS41IDg2LjV0NTYuNSAyOC41aDQ1IHpNMjUwIDQwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV0LTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEzbDEzOCAtMTAwaC05NTBsMTM3IDEwMGgtMTJxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDEwMGgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGgtMTIwMHY1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIxNTsiIGQ9Ik02MDAgMTIwMGwzMDAgLTE2MXYtMTM5aC0zMDBxMCAtNTcgMTguNSAtMTA4dDUwIC05MS41dDYzIC03MnQ3MCAtNjcuNXQ1Ny41IC02MWgtNTMwcS02MCA4MyAtOTAuNSAxNzcuNXQtMzAuNSAxNzguNXQzMyAxNjQuNXQ4Ny41IDEzOS41dDEyNiA5Ni41dDE0NS41IDQxLjV2LTk4ek0yNTAgNDAwaDcwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTNsMTM4IC0xMDBoLTk1MGwxMzcgMTAwIGgtMTJxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDEwMGgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGgtMTIwMHY1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIxNjsiIGQ9Ik02MDAgMTMwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtNzhxNDYgLTI2IDczIC03MnQyNyAtMTAwdi01MGgtNDAwdjUwcTAgNTQgMjcgMTAwdDczIDcydjc4cTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNXpNNDAwIDgwMGg0MDBxNTQgMCAxMDAgLTI3dDcyIC03M2gtMTcydi0xMDBoMjAwdi0xMDBoLTIwMHYtMTAwaDIwMHYtMTAwaC0yMDB2LTEwMGgyMDBxMCAtODMgLTU4LjUgLTE0MS41dC0xNDEuNSAtNTguNWgtNDAwIHEtODMgMCAtMTQxLjUgNTguNXQtNTguNSAxNDEuNXY0MDBxMCA4MyA1OC41IDE0MS41dDE0MS41IDU4LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIxODsiIGQ9Ik0xNTAgMTEwMGg5MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTUwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtOTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY1MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0xMjUgNDAwaDk1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMjgzbDIyNCAtMjI0cTEzIC0xMyAxMyAtMzEuNXQtMTMgLTMyIHQtMzEuNSAtMTMuNXQtMzEuNSAxM2wtODggODhoLTUyNGwtODcgLTg4cS0xMyAtMTMgLTMyIC0xM3QtMzIgMTMuNXQtMTMgMzJ0MTMgMzEuNWwyMjQgMjI0aC0yODlxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek01NDEgMzAwbC0xMDAgLTEwMGgzMjRsLTEwMCAxMDBoLTEyNHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjE5OyIgZD0iTTIwMCAxMTAwaDgwMHE4MyAwIDE0MS41IC01OC41dDU4LjUgLTE0MS41di0yMDBoLTEwMHEwIDQxIC0yOS41IDcwLjV0LTcwLjUgMjkuNWgtMjUwcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41aC0xMDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjVoLTI1MHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNWgtMTAwdjIwMHEwIDgzIDU4LjUgMTQxLjV0MTQxLjUgNTguNXpNMTAwIDYwMGgxMDAwcTQxIDAgNzAuNSAtMjkuNSB0MjkuNSAtNzAuNXYtMzAwaC0xMjAwdjMwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjV6TTMwMCAxMDB2LTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djUwaDIwMHpNMTEwMCAxMDB2LTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djUwaDIwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjIxOyIgZD0iTTQ4MCAxMTY1bDY4MiAtNjgzcTMxIC0zMSAzMSAtNzUuNXQtMzEgLTc1LjVsLTEzMSAtMTMxaC00ODFsLTUxNyA1MThxLTMyIDMxIC0zMiA3NS41dDMyIDc1LjVsMjk1IDI5NnEzMSAzMSA3NS41IDMxdDc2LjUgLTMxek0xMDggNzk0bDM0MiAtMzQybDMwMyAzMDRsLTM0MSAzNDF6TTI1MCAxMDBoODAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGgtOTAwdjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjIzOyIgZD0iTTEwNTcgNjQ3bC0xODkgNTA2cS04IDE5IC0yNy41IDMzdC00MC41IDE0aC00MDBxLTIxIDAgLTQwLjUgLTE0dC0yNy41IC0zM2wtMTg5IC01MDZxLTggLTE5IDEuNSAtMzN0MzAuNSAtMTRoNjI1di0xNTBxMCAtMjEgMTQuNSAtMzUuNXQzNS41IC0xNC41dDM1LjUgMTQuNXQxNC41IDM1LjV2MTUwaDEyNXEyMSAwIDMwLjUgMTR0MS41IDMzek04OTcgMGgtNTk1djUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg1MHY1MCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDQ4djMwMGgyMDB2LTMwMGg0N3EyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTBoNTBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMjQ7IiBkPSJNOTAwIDgwMGgzMDB2LTU3NXEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTM3NXY1OTFsLTMwMCAzMDB2ODRxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgzNzV2LTQwMHpNMTIwMCA5MDBoLTIwMHYyMDB6TTQwMCA2MDBoMzAwdi01NzVxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC02NTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY5NTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgzNzV2LTQwMHpNNzAwIDcwMGgtMjAwdjIwMHogIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIyNTsiIGQ9Ik00ODQgMTA5NWgxOTVxNzUgMCAxNDYgLTMyLjV0MTI0IC04NnQ4OS41IC0xMjIuNXQ0OC41IC0xNDJxMTggLTE0IDM1IC0yMHEzMSAtMTAgNjQuNSA2LjV0NDMuNSA0OC41cTEwIDM0IC0xNSA3MXEtMTkgMjcgLTkgNDNxNSA4IDEyLjUgMTF0MTkgLTF0MjMuNSAtMTZxNDEgLTQ0IDM5IC0xMDVxLTMgLTYzIC00NiAtMTA2LjV0LTEwNCAtNDMuNWgtNjJxLTcgLTU1IC0zNSAtMTE3dC01NiAtMTAwbC0zOSAtMjM0cS0zIC0yMCAtMjAgLTM0LjUgdC0zOCAtMTQuNWgtMTAwcS0yMSAwIC0zMyAxNC41dC05IDM0LjVsMTIgNzBxLTQ5IC0xNCAtOTEgLTE0aC0xOTVxLTI0IDAgLTY1IDhsLTExIC02NHEtMyAtMjAgLTIwIC0zNC41dC0zOCAtMTQuNWgtMTAwcS0yMSAwIC0zMyAxNC41dC05IDM0LjVsMjYgMTU3cS04NCA3NCAtMTI4IDE3NWwtMTU5IDUzcS0xOSA3IC0zMyAyNnQtMTQgNDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDEyNHExMSA4NyA1NiAxNjZsLTExMSA5NSBxLTE2IDE0IC0xMi41IDIzLjV0MjQuNSA5LjVoMjAzcTExNiAxMDEgMjUwIDEwMXpNNjc1IDEwMDBoLTI1MHEtMTAgMCAtMTcuNSAtNy41dC03LjUgLTE3LjV2LTUwcTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoMjUwcTEwIDAgMTcuNSA3LjV0Ny41IDE3LjV2NTBxMCAxMCAtNy41IDE3LjV0LTE3LjUgNy41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMjY7IiBkPSJNNjQxIDkwMGw0MjMgMjQ3cTE5IDggNDIgMi41dDM3IC0yMS41bDMyIC0zOHExNCAtMTUgMTIuNSAtMzZ0LTE3LjUgLTM0bC0xMzkgLTEyMGgtMzkwek01MCAxMTAwaDEwNnE2NyAwIDEwMyAtMTd0NjYgLTcxbDEwMiAtMjEyaDgyM3EyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTBxMCAtMjEgLTE0IC00MHQtMzMgLTI2bC03MzcgLTEzMnEtMjMgLTQgLTQwIDZ0LTI2IDI1cS00MiA2NyAtMTAwIDY3aC0zMDBxLTYyIDAgLTEwNiA0NCB0LTQ0IDEwNnYyMDBxMCA2MiA0NCAxMDZ0MTA2IDQ0ek0xNzMgOTI4aC04MHEtMTkgMCAtMjggLTE0dC05IC0zNXYtNTZxMCAtNTEgNDIgLTUxaDEzNHExNiAwIDIxLjUgOHQ1LjUgMjRxMCAxMSAtMTYgNDV0LTI3IDUxcS0xOCAyOCAtNDMgMjh6TTU1MCA3MjdxLTMyIDAgLTU0LjUgLTIyLjV0LTIyLjUgLTU0LjV0MjIuNSAtNTQuNXQ1NC41IC0yMi41dDU0LjUgMjIuNXQyMi41IDU0LjV0LTIyLjUgNTQuNXQtNTQuNSAyMi41ek0xMzAgMzg5IGwxNTIgMTMwcTE4IDE5IDM0IDI0dDMxIC0zLjV0MjQuNSAtMTcuNXQyNS41IC0yOHEyOCAtMzUgNTAuNSAtNTF0NDguNSAtMTNsNjMgNWw0OCAtMTc5cTEzIC02MSAtMy41IC05Ny41dC02Ny41IC03OS41bC04MCAtNjlxLTQ3IC00MCAtMTA5IC0zNS41dC0xMDMgNTEuNWwtMTMwIDE1MXEtNDAgNDcgLTM1LjUgMTA5LjV0NTEuNSAxMDIuNXpNMzgwIDM3N2wtMTAyIC04OHEtMzEgLTI3IDIgLTY1bDM3IC00M3ExMyAtMTUgMjcuNSAtMTkuNSB0MzEuNSA2LjVsNjEgNTNxMTkgMTYgMTQgNDlxLTIgMjAgLTEyIDU2dC0xNyA0NXEtMTEgMTIgLTE5IDE0dC0yMyAtOHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjI3OyIgZD0iTTYyNSAxMjAwaDE1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTEwOXE3OSAtMzMgMTMxIC04Ny41dDUzIC0xMjguNXExIC00NiAtMTUgLTg0LjV0LTM5IC02MXQtNDYgLTM4dC0zOSAtMjEuNWwtMTcgLTZxNiAwIDE1IC0xLjV0MzUgLTl0NTAgLTE3LjV0NTMgLTMwdDUwIC00NXQzNS41IC02NHQxNC41IC04NHEwIC01OSAtMTEuNSAtMTA1LjV0LTI4LjUgLTc2LjV0LTQ0IC01MXQtNDkuNSAtMzEuNXQtNTQuNSAtMTZ0LTQ5LjUgLTYuNSB0LTQzLjUgLTF2LTc1cTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2NzVoLTEwMHYtNzVxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0xNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY3NWgtMTc1cS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoNzV2NjAwaC03NXEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MCBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgxNzV2NzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgxNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di03NWgxMDB2NzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNNDAwIDkwMHYtMjAwaDI2M3EyOCAwIDQ4LjUgMTAuNXQzMCAyNXQxNSAyOXQ1LjUgMjUuNWwxIDEwcTAgNCAtMC41IDExdC02IDI0dC0xNSAzMHQtMzAgMjR0LTQ4LjUgMTFoLTI2M3pNNDAwIDUwMHYtMjAwaDM2M3EyOCAwIDQ4LjUgMTAuNSB0MzAgMjV0MTUgMjl0NS41IDI1LjVsMSAxMHEwIDQgLTAuNSAxMXQtNiAyNHQtMTUgMzB0LTMwIDI0dC00OC41IDExaC0zNjN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIzMDsiIGQ9Ik0yMTIgMTE5OGg3ODBxODYgMCAxNDcgLTYxdDYxIC0xNDd2LTQxNnEwIC01MSAtMTggLTE0Mi41dC0zNiAtMTU3LjVsLTE4IC02NnEtMjkgLTg3IC05My41IC0xNDYuNXQtMTQ2LjUgLTU5LjVoLTU3MnEtODIgMCAtMTQ3IDU5dC05MyAxNDdxLTggMjggLTIwIDczdC0zMiAxNDMuNXQtMjAgMTQ5LjV2NDE2cTAgODYgNjEgMTQ3dDE0NyA2MXpNNjAwIDEwNDVxLTcwIDAgLTEzMi41IC0xMS41dC0xMDUuNSAtMzAuNXQtNzguNSAtNDEuNSB0LTU3IC00NXQtMzYgLTQxdC0yMC41IC0zMC41bC02IC0xMmwxNTYgLTI0M2g1NjBsMTU2IDI0M3EtMiA1IC02IDEyLjV0LTIwIDI5LjV0LTM2LjUgNDJ0LTU3IDQ0LjV0LTc5IDQydC0xMDUgMjkuNXQtMTMyLjUgMTJ6TTc2MiA3MDNoLTE1N2wxOTUgMjYxeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMzE7IiBkPSJNNDc1IDEzMDBoMTUwcTEwMyAwIDE4OSAtODZ0ODYgLTE4OXYtNTAwcTAgLTQxIC00MiAtODN0LTgzIC00MmgtNDUwcS00MSAwIC04MyA0MnQtNDIgODN2NTAwcTAgMTAzIDg2IDE4OXQxODkgODZ6TTcwMCAzMDB2LTIyNXEwIC0yMSAtMjcgLTQ4dC00OCAtMjdoLTE1MHEtMjEgMCAtNDggMjd0LTI3IDQ4djIyNWgzMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIzMjsiIGQ9Ik00NzUgMTMwMGg5NnEwIC0xNTAgODkuNSAtMjM5LjV0MjM5LjUgLTg5LjV2LTQ0NnEwIC00MSAtNDIgLTgzdC04MyAtNDJoLTQ1MHEtNDEgMCAtODMgNDJ0LTQyIDgzdjUwMHEwIDEwMyA4NiAxODl0MTg5IDg2ek03MDAgMzAwdi0yMjVxMCAtMjEgLTI3IC00OHQtNDggLTI3aC0xNTBxLTIxIDAgLTQ4IDI3dC0yNyA0OHYyMjVoMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMzM7IiBkPSJNMTI5NCA3NjdsLTYzOCAtMjgzbC0zNzggMTcwbC03OCAtNjB2LTIyNGwxMDAgLTE1MHYtMTk5bC0xNTAgMTQ4bC0xNTAgLTE0OXYyMDBsMTAwIDE1MHYyNTBxMCA0IC0wLjUgMTAuNXQwIDkuNXQxIDh0MyA4dDYuNSA2bDQ3IDQwbC0xNDcgNjVsNjQyIDI4M3pNMTAwMCAzODBsLTM1MCAtMTY2bC0zNTAgMTY2djE0N2wzNTAgLTE2NWwzNTAgMTY1di0xNDd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIzNDsiIGQ9Ik0yNTAgODAwcTYyIDAgMTA2IC00NHQ0NCAtMTA2dC00NCAtMTA2dC0xMDYgLTQ0dC0xMDYgNDR0LTQ0IDEwNnQ0NCAxMDZ0MTA2IDQ0ek02NTAgODAwcTYyIDAgMTA2IC00NHQ0NCAtMTA2dC00NCAtMTA2dC0xMDYgLTQ0dC0xMDYgNDR0LTQ0IDEwNnQ0NCAxMDZ0MTA2IDQ0ek0xMDUwIDgwMHE2MiAwIDEwNiAtNDR0NDQgLTEwNnQtNDQgLTEwNnQtMTA2IC00NHQtMTA2IDQ0dC00NCAxMDZ0NDQgMTA2dDEwNiA0NHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjM1OyIgZD0iTTU1MCAxMTAwcTYyIDAgMTA2IC00NHQ0NCAtMTA2dC00NCAtMTA2dC0xMDYgLTQ0dC0xMDYgNDR0LTQ0IDEwNnQ0NCAxMDZ0MTA2IDQ0ek01NTAgNzAwcTYyIDAgMTA2IC00NHQ0NCAtMTA2dC00NCAtMTA2dC0xMDYgLTQ0dC0xMDYgNDR0LTQ0IDEwNnQ0NCAxMDZ0MTA2IDQ0ek01NTAgMzAwcTYyIDAgMTA2IC00NHQ0NCAtMTA2dC00NCAtMTA2dC0xMDYgLTQ0dC0xMDYgNDR0LTQ0IDEwNnQ0NCAxMDZ0MTA2IDQ0eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMzY7IiBkPSJNMTI1IDExMDBoOTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtOTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTEyNSA3MDBoOTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtOTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjUgdDE3LjUgNy41ek0xMjUgMzAwaDk1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTk1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMzc7IiBkPSJNMzUwIDEyMDBoNTAwcTE2MiAwIDI1NiAtOTMuNXQ5NCAtMjU2LjV2LTUwMHEwIC0xNjUgLTkzLjUgLTI1Ny41dC0yNTYuNSAtOTIuNWgtNTAwcS0xNjUgMCAtMjU3LjUgOTIuNXQtOTIuNSAyNTcuNXY1MDBxMCAxNjUgOTIuNSAyNTcuNXQyNTcuNSA5Mi41ek05MDAgMTAwMGgtNjAwcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41di02MDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDYwMHE0MSAwIDcwLjUgMjkuNSB0MjkuNSA3MC41djYwMHEwIDQxIC0yOS41IDcwLjV0LTcwLjUgMjkuNXpNMzUwIDkwMGg1MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTMwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYzMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek00MDAgODAwdi0yMDBoNDAwdjIwMGgtNDAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMzg7IiBkPSJNMTUwIDExMDBoMTAwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTB2LTIwMGg1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTB2LTIwMGg1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTB2LTIwMGg1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNSB0LTM1LjUgLTE0LjVoLTEwMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjVoNTB2MjAwaC01MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV0MTQuNSAzNS41dDM1LjUgMTQuNWg1MHYyMDBoLTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXQxNC41IDM1LjV0MzUuNSAxNC41aDUwdjIwMGgtNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIzOTsiIGQ9Ik02NTAgMTE4N3E4NyAtNjcgMTE4LjUgLTE1NnQwIC0xNzh0LTExOC41IC0xNTVxLTg3IDY2IC0xMTguNSAxNTV0MCAxNzh0MTE4LjUgMTU2ek0zMDAgODAwcTEyNCAwIDIxMiAtODh0ODggLTIxMnEtMTI0IDAgLTIxMiA4OHQtODggMjEyek0xMDAwIDgwMHEwIC0xMjQgLTg4IC0yMTJ0LTIxMiAtODhxMCAxMjQgODggMjEydDIxMiA4OHpNMzAwIDUwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnogTTEwMDAgNTAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OHEwIDEyNCA4OCAyMTJ0MjEyIDg4ek03MDAgMTk5di0xNDRxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjV0LTM1LjUgMTQuNXQtMTQuNSAzNS41djE0MnE0MCAtNCA0MyAtNHExNyAwIDU3IDZ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTI0MDsiIGQ9Ik03NDUgODc4bDY5IDE5cTI1IDYgNDUgLTEybDI5OCAtMjk1cTExIC0xMSAxNSAtMjYuNXQtMiAtMzAuNXEtNSAtMTQgLTE4IC0yMy41dC0yOCAtOS41aC04cTEgMCAxIC0xM3EwIC0yOSAtMiAtNTZ0LTguNSAtNjJ0LTIwIC02M3QtMzMgLTUzdC01MSAtMzl0LTcyLjUgLTE0aC0xNDZxLTE4NCAwIC0xODQgMjg4cTAgMjQgMTAgNDdxLTIwIDQgLTYyIDR0LTYzIC00cTExIC0yNCAxMSAtNDdxMCAtMjg4IC0xODQgLTI4OGgtMTQyIHEtNDggMCAtODQuNSAyMXQtNTYgNTF0LTMyIDcxLjV0LTE2IDc1dC0zLjUgNjguNXEwIDEzIDIgMTNoLTdxLTE1IDAgLTI3LjUgOS41dC0xOC41IDIzLjVxLTYgMTUgLTIgMzAuNXQxNSAyNS41bDI5OCAyOTZxMjAgMTggNDYgMTFsNzYgLTE5cTIwIC01IDMwLjUgLTIyLjV0NS41IC0zNy41dC0yMi41IC0zMXQtMzcuNSAtNWwtNTEgMTJsLTE4MiAtMTkzaDg5MWwtMTgyIDE5M2wtNDQgLTEycS0yMCAtNSAtMzcuNSA2dC0yMi41IDMxdDYgMzcuNSB0MzEgMjIuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjQxOyIgZD0iTTEyMDAgOTAwaC01MHEwIDIxIC00IDM3dC05LjUgMjYuNXQtMTggMTcuNXQtMjIgMTF0LTI4LjUgNS41dC0zMSAydC0zNyAwLjVoLTIwMHYtODUwcTAgLTIyIDI1IC0zNC41dDUwIC0xMy41bDI1IC0ydi0xMDBoLTQwMHYxMDBxNCAwIDExIDAuNXQyNCAzdDMwIDd0MjQgMTV0MTEgMjQuNXY4NTBoLTIwMHEtMjUgMCAtMzcgLTAuNXQtMzEgLTJ0LTI4LjUgLTUuNXQtMjIgLTExdC0xOCAtMTcuNXQtOS41IC0yNi41dC00IC0zN2gtNTB2MzAwIGgxMDAwdi0zMDB6TTUwMCA0NTBoLTI1cTAgMTUgLTQgMjQuNXQtOSAxNC41dC0xNyA3LjV0LTIwIDN0LTI1IDAuNWgtMTAwdi00MjVxMCAtMTEgMTIuNSAtMTcuNXQyNS41IC03LjVoMTJ2LTUwaC0yMDB2NTBxNTAgMCA1MCAyNXY0MjVoLTEwMHEtMTcgMCAtMjUgLTAuNXQtMjAgLTN0LTE3IC03LjV0LTkgLTE0LjV0LTQgLTI0LjVoLTI1djE1MGg1MDB2LTE1MHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjQyOyIgZD0iTTEwMDAgMzAwdjUwcS0yNSAwIC01NSAzMnEtMTQgMTQgLTI1IDMxdC0xNiAyN2wtNCAxMWwtMjg5IDc0N2gtNjlsLTMwMCAtNzU0cS0xOCAtMzUgLTM5IC01NnEtOSAtOSAtMjQuNSAtMTguNXQtMjYuNSAtMTQuNWwtMTEgLTV2LTUwaDI3M3Y1MHEtNDkgMCAtNzguNSAyMS41dC0xMS41IDY3LjVsNjkgMTc2aDI5M2w2MSAtMTY2cTEzIC0zNCAtMy41IC02Ni41dC01NS41IC0zMi41di01MGgzMTJ6TTQxMiA2OTFsMTM0IDM0MmwxMjEgLTM0MiBoLTI1NXpNMTEwMCAxNTB2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyNDM7IiBkPSJNNTAgMTIwMGgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNjExIDExMThoLTcwcS0xMyAwIC0xOCAtMTJsLTI5OSAtNzUzcS0xNyAtMzIgLTM1IC01MXEtMTggLTE4IC01NiAtMzRxLTEyIC01IC0xMiAtMTh2LTUwcTAgLTggNS41IC0xNHQxNC41IC02IGgyNzNxOCAwIDE0IDZ0NiAxNHY1MHEwIDggLTYgMTR0LTE0IDZxLTU1IDAgLTcxIDIzcS0xMCAxNCAwIDM5bDYzIDE2M2gyNjZsNTcgLTE1M3ExMSAtMzEgLTYgLTU1cS0xMiAtMTcgLTM2IC0xN3EtOCAwIC0xNCAtNnQtNiAtMTR2LTUwcTAgLTggNiAtMTR0MTQgLTZoMzEzcTggMCAxNCA2dDYgMTR2NTBxMCA3IC01LjUgMTN0LTEzLjUgN3EtMTcgMCAtNDIgMjVxLTI1IDI3IC00MCA2M2gtMWwtMjg4IDc0OHEtNSAxMiAtMTkgMTJ6TTYzOSA2MTEgaC0xOTdsMTAzIDI2NHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjQ0OyIgZD0iTTEyMDAgMTEwMGgtMTIwMHYxMDBoMTIwMHYtMTAwek01MCAxMDAwaDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtOTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djkwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTY1MCAxMDAwaDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDAgcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek03MDAgOTAwdi0zMDBoMzAwdjMwMGgtMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyNDU7IiBkPSJNNTAgMTIwMGg0MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTkwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY5MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek02NTAgNzAwaDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djQwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek03MDAgNjAwdi0zMDBoMzAwdjMwMGgtMzAwek0xMjAwIDBoLTEyMDB2MTAwaDEyMDB2LTEwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjQ2OyIgZD0iTTUwIDEwMDBoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0zNTBoMTAwdjE1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xNTBoMTAwdi0xMDBoLTEwMHYtMTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djE1MGgtMTAwdi0zNTBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTQwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djgwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTcwMCA3MDB2LTMwMGgzMDB2MzAwaC0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTI0NzsiIGQ9Ik0xMDAgMGgtMTAwdjEyMDBoMTAwdi0xMjAwek0yNTAgMTEwMGg0MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0zMDAgMTAwMHYtMzAwaDMwMHYzMDBoLTMwMHpNMjUwIDUwMGg5MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMCBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTkwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjQ4OyIgZD0iTTYwMCAxMTAwaDE1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xNTB2LTEwMGg0NTBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtOTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDM1MHYxMDBoLTE1MHEtMjEgMCAtMzUuNSAxNC41IHQtMTQuNSAzNS41djQwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMTUwdjEwMGgxMDB2LTEwMHpNNDAwIDEwMDB2LTMwMGgzMDB2MzAwaC0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTI0OTsiIGQ9Ik0xMjAwIDBoLTEwMHYxMjAwaDEwMHYtMTIwMHpNNTUwIDExMDBoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di00MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTQwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNjAwIDEwMDB2LTMwMGgzMDB2MzAwaC0zMDB6TTUwIDUwMGg5MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMCBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTkwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjUwOyIgZD0iTTg2NSA1NjVsLTQ5NCAtNDk0cS0yMyAtMjMgLTQxIC0yM3EtMTQgMCAtMjIgMTMuNXQtOCAzOC41djEwMDBxMCAyNSA4IDM4LjV0MjIgMTMuNXExOCAwIDQxIC0yM2w0OTQgLTQ5NHExNCAtMTQgMTQgLTM1dC0xNCAtMzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTI1MTsiIGQ9Ik0zMzUgNjM1bDQ5NCA0OTRxMjkgMjkgNTAgMjAuNXQyMSAtNDkuNXYtMTAwMHEwIC00MSAtMjEgLTQ5LjV0LTUwIDIwLjVsLTQ5NCA0OTRxLTE0IDE0IC0xNCAzNXQxNCAzNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjUyOyIgZD0iTTEwMCA5MDBoMTAwMHE0MSAwIDQ5LjUgLTIxdC0yMC41IC01MGwtNDk0IC00OTRxLTE0IC0xNCAtMzUgLTE0dC0zNSAxNGwtNDk0IDQ5NHEtMjkgMjkgLTIwLjUgNTB0NDkuNSAyMXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjUzOyIgZD0iTTYzNSA4NjVsNDk0IC00OTRxMjkgLTI5IDIwLjUgLTUwdC00OS41IC0yMWgtMTAwMHEtNDEgMCAtNDkuNSAyMXQyMC41IDUwbDQ5NCA0OTRxMTQgMTQgMzUgMTR0MzUgLTE0eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyNTQ7IiBkPSJNNzAwIDc0MXYtMTgybC02OTIgLTMyM3YyMjFsNDEzIDE5M2wtNDEzIDE5M3YyMjF6TTEyMDAgMGgtODAwdjIwMGg4MDB2LTIwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjU1OyIgZD0iTTEyMDAgOTAwaC0yMDB2LTEwMGgyMDB2LTEwMGgtMzAwdjMwMGgyMDB2MTAwaC0yMDB2MTAwaDMwMHYtMzAwek0wIDcwMGg1MHEwIDIxIDQgMzd0OS41IDI2LjV0MTggMTcuNXQyMiAxMXQyOC41IDUuNXQzMSAydDM3IDAuNWgxMDB2LTU1MHEwIC0yMiAtMjUgLTM0LjV0LTUwIC0xMy41bC0yNSAtMnYtMTAwaDQwMHYxMDBxLTQgMCAtMTEgMC41dC0yNCAzdC0zMCA3dC0yNCAxNXQtMTEgMjQuNXY1NTBoMTAwcTI1IDAgMzcgLTAuNXQzMSAtMiB0MjguNSAtNS41dDIyIC0xMXQxOCAtMTcuNXQ5LjUgLTI2LjV0NCAtMzdoNTB2MzAwaC04MDB2LTMwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjU2OyIgZD0iTTgwMCA3MDBoLTUwcTAgMjEgLTQgMzd0LTkuNSAyNi41dC0xOCAxNy41dC0yMiAxMXQtMjguNSA1LjV0LTMxIDJ0LTM3IDAuNWgtMTAwdi01NTBxMCAtMjIgMjUgLTM0LjV0NTAgLTE0LjVsMjUgLTF2LTEwMGgtNDAwdjEwMHE0IDAgMTEgMC41dDI0IDN0MzAgN3QyNCAxNXQxMSAyNC41djU1MGgtMTAwcS0yNSAwIC0zNyAtMC41dC0zMSAtMnQtMjguNSAtNS41dC0yMiAtMTF0LTE4IC0xNy41dC05LjUgLTI2LjV0LTQgLTM3aC01MHYzMDAgaDgwMHYtMzAwek0xMTAwIDIwMGgtMjAwdi0xMDBoMjAwdi0xMDBoLTMwMHYzMDBoMjAwdjEwMGgtMjAwdjEwMGgzMDB2LTMwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjU3OyIgZD0iTTcwMSAxMDk4aDE2MHExNiAwIDIxIC0xMXQtNyAtMjNsLTQ2NCAtNDY0bDQ2NCAtNDY0cTEyIC0xMiA3IC0yM3QtMjEgLTExaC0xNjBxLTEzIDAgLTIzIDlsLTQ3MSA0NzFxLTcgOCAtNyAxOHQ3IDE4bDQ3MSA0NzFxMTAgOSAyMyA5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyNTg7IiBkPSJNMzM5IDEwOThoMTYwcTEzIDAgMjMgLTlsNDcxIC00NzFxNyAtOCA3IC0xOHQtNyAtMThsLTQ3MSAtNDcxcS0xMCAtOSAtMjMgLTloLTE2MHEtMTYgMCAtMjEgMTF0NyAyM2w0NjQgNDY0bC00NjQgNDY0cS0xMiAxMiAtNyAyM3QyMSAxMXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjU5OyIgZD0iTTEwODcgODgycTExIC01IDExIC0yMXYtMTYwcTAgLTEzIC05IC0yM2wtNDcxIC00NzFxLTggLTcgLTE4IC03dC0xOCA3bC00NzEgNDcxcS05IDEwIC05IDIzdjE2MHEwIDE2IDExIDIxdDIzIC03bDQ2NCAtNDY0bDQ2NCA0NjRxMTIgMTIgMjMgN3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjYwOyIgZD0iTTYxOCA5OTNsNDcxIC00NzFxOSAtMTAgOSAtMjN2LTE2MHEwIC0xNiAtMTEgLTIxdC0yMyA3bC00NjQgNDY0bC00NjQgLTQ2NHEtMTIgLTEyIC0yMyAtN3QtMTEgMjF2MTYwcTAgMTMgOSAyM2w0NzEgNDcxcTggNyAxOCA3dDE4IC03eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGY4ZmY7IiBkPSJNMTAwMCAxMjAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OHEwIDEyNCA4OCAyMTJ0MjEyIDg4ek00NTAgMTAwMGgxMDBxMjEgMCA0MCAtMTR0MjYgLTMzbDc5IC0xOTRxNSAxIDE2IDNxMzQgNiA1NCA5LjV0NjAgN3Q2NS41IDF0NjEgLTEwdDU2LjUgLTIzdDQyLjUgLTQydDI5IC02NHQ1IC05MnQtMTkuNSAtMTIxLjVxLTEgLTcgLTMgLTE5LjV0LTExIC01MHQtMjAuNSAtNzN0LTMyLjUgLTgxLjV0LTQ2LjUgLTgzdC02NCAtNzAgdC04Mi41IC01MHEtMTMgLTUgLTQyIC01dC02NS41IDIuNXQtNDcuNSAyLjVxLTE0IDAgLTQ5LjUgLTMuNXQtNjMgLTMuNXQtNDMuNSA3cS01NyAyNSAtMTA0LjUgNzguNXQtNzUgMTExLjV0LTQ2LjUgMTEydC0yNiA5MGwtNyAzNXEtMTUgNjMgLTE4IDExNXQ0LjUgODguNXQyNiA2NHQzOS41IDQzLjV0NTIgMjUuNXQ1OC41IDEzdDYyLjUgMnQ1OS41IC00LjV0NTUuNSAtOGwtMTQ3IDE5MnEtMTIgMTggLTUuNSAzMHQyNy41IDEyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDFmNTExOyIgZD0iTTI1MCAxMjAwaDYwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xNTB2LTUwMGwtMjU1IC0xNzhxLTE5IC05IC0zMiAtMXQtMTMgMjl2NjUwaC0xNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djQwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQwMCAxMTAwdi0xMDBoMzAwdjEwMGgtMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDFmNmFhOyIgZD0iTTI1MCAxMjAwaDc1MHEzOSAwIDY5LjUgLTQwLjV0MzAuNSAtODQuNXYtOTMzbC03MDAgLTExN3Y5NTBsNjAwIDEyNWgtNzAwdi0xMDAwaC0xMDB2MTAyNXEwIDIzIDE1LjUgNDl0MzQuNSAyNnpNNTAwIDUyNXYtMTAwbDEwMCAyMHYxMDB6IiAvPgo8L2ZvbnQ%2BCjwvZGVmcz48L3N2Zz4g%29%20format%28%27svg%27%29%7D%2Eglyphicon%7Bposition%3Arelative%3Btop%3A1px%3Bdisplay%3Ainline%2Dblock%3Bfont%2Dfamily%3A%27Glyphicons%20Halflings%27%3Bfont%2Dstyle%3Anormal%3Bfont%2Dweight%3Anormal%3Bline%2Dheight%3A1%3B%2Dwebkit%2Dfont%2Dsmoothing%3Aantialiased%3B%2Dmoz%2Dosx%2Dfont%2Dsmoothing%3Agrayscale%7D%2Eglyphicon%2Dasterisk%3Abefore%7Bcontent%3A%22%5C002a%22%7D%2Eglyphicon%2Dplus%3Abefore%7Bcontent%3A%22%5C002b%22%7D%2Eglyphicon%2Deuro%3Abefore%2C%2Eglyphicon%2Deur%3Abefore%7Bcontent%3A%22%5C20ac%22%7D%2Eglyphicon%2Dminus%3Abefore%7Bcontent%3A%22%5C2212%22%7D%2Eglyphicon%2Dcloud%3Abefore%7Bcontent%3A%22%5C2601%22%7D%2Eglyphicon%2Denvelope%3Abefore%7Bcontent%3A%22%5C2709%22%7D%2Eglyphicon%2Dpencil%3Abefore%7Bcontent%3A%22%5C270f%22%7D%2Eglyphicon%2Dglass%3Abefore%7Bcontent%3A%22%5Ce001%22%7D%2Eglyphicon%2Dmusic%3Abefore%7Bcontent%3A%22%5Ce002%22%7D%2Eglyphicon%2Dsearch%3Abefore%7Bcontent%3A%22%5Ce003%22%7D%2Eglyphicon%2Dheart%3Abefore%7Bcontent%3A%22%5Ce005%22%7D%2Eglyphicon%2Dstar%3Abefore%7Bcontent%3A%22%5Ce006%22%7D%2Eglyphicon%2Dstar%2Dempty%3Abefore%7Bcontent%3A%22%5Ce007%22%7D%2Eglyphicon%2Duser%3Abefore%7Bcontent%3A%22%5Ce008%22%7D%2Eglyphicon%2Dfilm%3Abefore%7Bcontent%3A%22%5Ce009%22%7D%2Eglyphicon%2Dth%2Dlarge%3Abefore%7Bcontent%3A%22%5Ce010%22%7D%2Eglyphicon%2Dth%3Abefore%7Bcontent%3A%22%5Ce011%22%7D%2Eglyphicon%2Dth%2Dlist%3Abefore%7Bcontent%3A%22%5Ce012%22%7D%2Eglyphicon%2Dok%3Abefore%7Bcontent%3A%22%5Ce013%22%7D%2Eglyphicon%2Dremove%3Abefore%7Bcontent%3A%22%5Ce014%22%7D%2Eglyphicon%2Dzoom%2Din%3Abefore%7Bcontent%3A%22%5Ce015%22%7D%2Eglyphicon%2Dzoom%2Dout%3Abefore%7Bcontent%3A%22%5Ce016%22%7D%2Eglyphicon%2Doff%3Abefore%7Bcontent%3A%22%5Ce017%22%7D%2Eglyphicon%2Dsignal%3Abefore%7Bcontent%3A%22%5Ce018%22%7D%2Eglyphicon%2Dcog%3Abefore%7Bcontent%3A%22%5Ce019%22%7D%2Eglyphicon%2Dtrash%3Abefore%7Bcontent%3A%22%5Ce020%22%7D%2Eglyphicon%2Dhome%3Abefore%7Bcontent%3A%22%5Ce021%22%7D%2Eglyphicon%2Dfile%3Abefore%7Bcontent%3A%22%5Ce022%22%7D%2Eglyphicon%2Dtime%3Abefore%7Bcontent%3A%22%5Ce023%22%7D%2Eglyphicon%2Droad%3Abefore%7Bcontent%3A%22%5Ce024%22%7D%2Eglyphicon%2Ddownload%2Dalt%3Abefore%7Bcontent%3A%22%5Ce025%22%7D%2Eglyphicon%2Ddownload%3Abefore%7Bcontent%3A%22%5Ce026%22%7D%2Eglyphicon%2Dupload%3Abefore%7Bcontent%3A%22%5Ce027%22%7D%2Eglyphicon%2Dinbox%3Abefore%7Bcontent%3A%22%5Ce028%22%7D%2Eglyphicon%2Dplay%2Dcircle%3Abefore%7Bcontent%3A%22%5Ce029%22%7D%2Eglyphicon%2Drepeat%3Abefore%7Bcontent%3A%22%5Ce030%22%7D%2Eglyphicon%2Drefresh%3Abefore%7Bcontent%3A%22%5Ce031%22%7D%2Eglyphicon%2Dlist%2Dalt%3Abefore%7Bcontent%3A%22%5Ce032%22%7D%2Eglyphicon%2Dlock%3Abefore%7Bcontent%3A%22%5Ce033%22%7D%2Eglyphicon%2Dflag%3Abefore%7Bcontent%3A%22%5Ce034%22%7D%2Eglyphicon%2Dheadphones%3Abefore%7Bcontent%3A%22%5Ce035%22%7D%2Eglyphicon%2Dvolume%2Doff%3Abefore%7Bcontent%3A%22%5Ce036%22%7D%2Eglyphicon%2Dvolume%2Ddown%3Abefore%7Bcontent%3A%22%5Ce037%22%7D%2Eglyphicon%2Dvolume%2Dup%3Abefore%7Bcontent%3A%22%5Ce038%22%7D%2Eglyphicon%2Dqrcode%3Abefore%7Bcontent%3A%22%5Ce039%22%7D%2Eglyphicon%2Dbarcode%3Abefore%7Bcontent%3A%22%5Ce040%22%7D%2Eglyphicon%2Dtag%3Abefore%7Bcontent%3A%22%5Ce041%22%7D%2Eglyphicon%2Dtags%3Abefore%7Bcontent%3A%22%5Ce042%22%7D%2Eglyphicon%2Dbook%3Abefore%7Bcontent%3A%22%5Ce043%22%7D%2Eglyphicon%2Dbookmark%3Abefore%7Bcontent%3A%22%5Ce044%22%7D%2Eglyphicon%2Dprint%3Abefore%7Bcontent%3A%22%5Ce045%22%7D%2Eglyphicon%2Dcamera%3Abefore%7Bcontent%3A%22%5Ce046%22%7D%2Eglyphicon%2Dfont%3Abefore%7Bcontent%3A%22%5Ce047%22%7D%2Eglyphicon%2Dbold%3Abefore%7Bcontent%3A%22%5Ce048%22%7D%2Eglyphicon%2Ditalic%3Abefore%7Bcontent%3A%22%5Ce049%22%7D%2Eglyphicon%2Dtext%2Dheight%3Abefore%7Bcontent%3A%22%5Ce050%22%7D%2Eglyphicon%2Dtext%2Dwidth%3Abefore%7Bcontent%3A%22%5Ce051%22%7D%2Eglyphicon%2Dalign%2Dleft%3Abefore%7Bcontent%3A%22%5Ce052%22%7D%2Eglyphicon%2Dalign%2Dcenter%3Abefore%7Bcontent%3A%22%5Ce053%22%7D%2Eglyphicon%2Dalign%2Dright%3Abefore%7Bcontent%3A%22%5Ce054%22%7D%2Eglyphicon%2Dalign%2Djustify%3Abefore%7Bcontent%3A%22%5Ce055%22%7D%2Eglyphicon%2Dlist%3Abefore%7Bcontent%3A%22%5Ce056%22%7D%2Eglyphicon%2Dindent%2Dleft%3Abefore%7Bcontent%3A%22%5Ce057%22%7D%2Eglyphicon%2Dindent%2Dright%3Abefore%7Bcontent%3A%22%5Ce058%22%7D%2Eglyphicon%2Dfacetime%2Dvideo%3Abefore%7Bcontent%3A%22%5Ce059%22%7D%2Eglyphicon%2Dpicture%3Abefore%7Bcontent%3A%22%5Ce060%22%7D%2Eglyphicon%2Dmap%2Dmarker%3Abefore%7Bcontent%3A%22%5Ce062%22%7D%2Eglyphicon%2Dadjust%3Abefore%7Bcontent%3A%22%5Ce063%22%7D%2Eglyphicon%2Dtint%3Abefore%7Bcontent%3A%22%5Ce064%22%7D%2Eglyphicon%2Dedit%3Abefore%7Bcontent%3A%22%5Ce065%22%7D%2Eglyphicon%2Dshare%3Abefore%7Bcontent%3A%22%5Ce066%22%7D%2Eglyphicon%2Dcheck%3Abefore%7Bcontent%3A%22%5Ce067%22%7D%2Eglyphicon%2Dmove%3Abefore%7Bcontent%3A%22%5Ce068%22%7D%2Eglyphicon%2Dstep%2Dbackward%3Abefore%7Bcontent%3A%22%5Ce069%22%7D%2Eglyphicon%2Dfast%2Dbackward%3Abefore%7Bcontent%3A%22%5Ce070%22%7D%2Eglyphicon%2Dbackward%3Abefore%7Bcontent%3A%22%5Ce071%22%7D%2Eglyphicon%2Dplay%3Abefore%7Bcontent%3A%22%5Ce072%22%7D%2Eglyphicon%2Dpause%3Abefore%7Bcontent%3A%22%5Ce073%22%7D%2Eglyphicon%2Dstop%3Abefore%7Bcontent%3A%22%5Ce074%22%7D%2Eglyphicon%2Dforward%3Abefore%7Bcontent%3A%22%5Ce075%22%7D%2Eglyphicon%2Dfast%2Dforward%3Abefore%7Bcontent%3A%22%5Ce076%22%7D%2Eglyphicon%2Dstep%2Dforward%3Abefore%7Bcontent%3A%22%5Ce077%22%7D%2Eglyphicon%2Deject%3Abefore%7Bcontent%3A%22%5Ce078%22%7D%2Eglyphicon%2Dchevron%2Dleft%3Abefore%7Bcontent%3A%22%5Ce079%22%7D%2Eglyphicon%2Dchevron%2Dright%3Abefore%7Bcontent%3A%22%5Ce080%22%7D%2Eglyphicon%2Dplus%2Dsign%3Abefore%7Bcontent%3A%22%5Ce081%22%7D%2Eglyphicon%2Dminus%2Dsign%3Abefore%7Bcontent%3A%22%5Ce082%22%7D%2Eglyphicon%2Dremove%2Dsign%3Abefore%7Bcontent%3A%22%5Ce083%22%7D%2Eglyphicon%2Dok%2Dsign%3Abefore%7Bcontent%3A%22%5Ce084%22%7D%2Eglyphicon%2Dquestion%2Dsign%3Abefore%7Bcontent%3A%22%5Ce085%22%7D%2Eglyphicon%2Dinfo%2Dsign%3Abefore%7Bcontent%3A%22%5Ce086%22%7D%2Eglyphicon%2Dscreenshot%3Abefore%7Bcontent%3A%22%5Ce087%22%7D%2Eglyphicon%2Dremove%2Dcircle%3Abefore%7Bcontent%3A%22%5Ce088%22%7D%2Eglyphicon%2Dok%2Dcircle%3Abefore%7Bcontent%3A%22%5Ce089%22%7D%2Eglyphicon%2Dban%2Dcircle%3Abefore%7Bcontent%3A%22%5Ce090%22%7D%2Eglyphicon%2Darrow%2Dleft%3Abefore%7Bcontent%3A%22%5Ce091%22%7D%2Eglyphicon%2Darrow%2Dright%3Abefore%7Bcontent%3A%22%5Ce092%22%7D%2Eglyphicon%2Darrow%2Dup%3Abefore%7Bcontent%3A%22%5Ce093%22%7D%2Eglyphicon%2Darrow%2Ddown%3Abefore%7Bcontent%3A%22%5Ce094%22%7D%2Eglyphicon%2Dshare%2Dalt%3Abefore%7Bcontent%3A%22%5Ce095%22%7D%2Eglyphicon%2Dresize%2Dfull%3Abefore%7Bcontent%3A%22%5Ce096%22%7D%2Eglyphicon%2Dresize%2Dsmall%3Abefore%7Bcontent%3A%22%5Ce097%22%7D%2Eglyphicon%2Dexclamation%2Dsign%3Abefore%7Bcontent%3A%22%5Ce101%22%7D%2Eglyphicon%2Dgift%3Abefore%7Bcontent%3A%22%5Ce102%22%7D%2Eglyphicon%2Dleaf%3Abefore%7Bcontent%3A%22%5Ce103%22%7D%2Eglyphicon%2Dfire%3Abefore%7Bcontent%3A%22%5Ce104%22%7D%2Eglyphicon%2Deye%2Dopen%3Abefore%7Bcontent%3A%22%5Ce105%22%7D%2Eglyphicon%2Deye%2Dclose%3Abefore%7Bcontent%3A%22%5Ce106%22%7D%2Eglyphicon%2Dwarning%2Dsign%3Abefore%7Bcontent%3A%22%5Ce107%22%7D%2Eglyphicon%2Dplane%3Abefore%7Bcontent%3A%22%5Ce108%22%7D%2Eglyphicon%2Dcalendar%3Abefore%7Bcontent%3A%22%5Ce109%22%7D%2Eglyphicon%2Drandom%3Abefore%7Bcontent%3A%22%5Ce110%22%7D%2Eglyphicon%2Dcomment%3Abefore%7Bcontent%3A%22%5Ce111%22%7D%2Eglyphicon%2Dmagnet%3Abefore%7Bcontent%3A%22%5Ce112%22%7D%2Eglyphicon%2Dchevron%2Dup%3Abefore%7Bcontent%3A%22%5Ce113%22%7D%2Eglyphicon%2Dchevron%2Ddown%3Abefore%7Bcontent%3A%22%5Ce114%22%7D%2Eglyphicon%2Dretweet%3Abefore%7Bcontent%3A%22%5Ce115%22%7D%2Eglyphicon%2Dshopping%2Dcart%3Abefore%7Bcontent%3A%22%5Ce116%22%7D%2Eglyphicon%2Dfolder%2Dclose%3Abefore%7Bcontent%3A%22%5Ce117%22%7D%2Eglyphicon%2Dfolder%2Dopen%3Abefore%7Bcontent%3A%22%5Ce118%22%7D%2Eglyphicon%2Dresize%2Dvertical%3Abefore%7Bcontent%3A%22%5Ce119%22%7D%2Eglyphicon%2Dresize%2Dhorizontal%3Abefore%7Bcontent%3A%22%5Ce120%22%7D%2Eglyphicon%2Dhdd%3Abefore%7Bcontent%3A%22%5Ce121%22%7D%2Eglyphicon%2Dbullhorn%3Abefore%7Bcontent%3A%22%5Ce122%22%7D%2Eglyphicon%2Dbell%3Abefore%7Bcontent%3A%22%5Ce123%22%7D%2Eglyphicon%2Dcertificate%3Abefore%7Bcontent%3A%22%5Ce124%22%7D%2Eglyphicon%2Dthumbs%2Dup%3Abefore%7Bcontent%3A%22%5Ce125%22%7D%2Eglyphicon%2Dthumbs%2Ddown%3Abefore%7Bcontent%3A%22%5Ce126%22%7D%2Eglyphicon%2Dhand%2Dright%3Abefore%7Bcontent%3A%22%5Ce127%22%7D%2Eglyphicon%2Dhand%2Dleft%3Abefore%7Bcontent%3A%22%5Ce128%22%7D%2Eglyphicon%2Dhand%2Dup%3Abefore%7Bcontent%3A%22%5Ce129%22%7D%2Eglyphicon%2Dhand%2Ddown%3Abefore%7Bcontent%3A%22%5Ce130%22%7D%2Eglyphicon%2Dcircle%2Darrow%2Dright%3Abefore%7Bcontent%3A%22%5Ce131%22%7D%2Eglyphicon%2Dcircle%2Darrow%2Dleft%3Abefore%7Bcontent%3A%22%5Ce132%22%7D%2Eglyphicon%2Dcircle%2Darrow%2Dup%3Abefore%7Bcontent%3A%22%5Ce133%22%7D%2Eglyphicon%2Dcircle%2Darrow%2Ddown%3Abefore%7Bcontent%3A%22%5Ce134%22%7D%2Eglyphicon%2Dglobe%3Abefore%7Bcontent%3A%22%5Ce135%22%7D%2Eglyphicon%2Dwrench%3Abefore%7Bcontent%3A%22%5Ce136%22%7D%2Eglyphicon%2Dtasks%3Abefore%7Bcontent%3A%22%5Ce137%22%7D%2Eglyphicon%2Dfilter%3Abefore%7Bcontent%3A%22%5Ce138%22%7D%2Eglyphicon%2Dbriefcase%3Abefore%7Bcontent%3A%22%5Ce139%22%7D%2Eglyphicon%2Dfullscreen%3Abefore%7Bcontent%3A%22%5Ce140%22%7D%2Eglyphicon%2Ddashboard%3Abefore%7Bcontent%3A%22%5Ce141%22%7D%2Eglyphicon%2Dpaperclip%3Abefore%7Bcontent%3A%22%5Ce142%22%7D%2Eglyphicon%2Dheart%2Dempty%3Abefore%7Bcontent%3A%22%5Ce143%22%7D%2Eglyphicon%2Dlink%3Abefore%7Bcontent%3A%22%5Ce144%22%7D%2Eglyphicon%2Dphone%3Abefore%7Bcontent%3A%22%5Ce145%22%7D%2Eglyphicon%2Dpushpin%3Abefore%7Bcontent%3A%22%5Ce146%22%7D%2Eglyphicon%2Dusd%3Abefore%7Bcontent%3A%22%5Ce148%22%7D%2Eglyphicon%2Dgbp%3Abefore%7Bcontent%3A%22%5Ce149%22%7D%2Eglyphicon%2Dsort%3Abefore%7Bcontent%3A%22%5Ce150%22%7D%2Eglyphicon%2Dsort%2Dby%2Dalphabet%3Abefore%7Bcontent%3A%22%5Ce151%22%7D%2Eglyphicon%2Dsort%2Dby%2Dalphabet%2Dalt%3Abefore%7Bcontent%3A%22%5Ce152%22%7D%2Eglyphicon%2Dsort%2Dby%2Dorder%3Abefore%7Bcontent%3A%22%5Ce153%22%7D%2Eglyphicon%2Dsort%2Dby%2Dorder%2Dalt%3Abefore%7Bcontent%3A%22%5Ce154%22%7D%2Eglyphicon%2Dsort%2Dby%2Dattributes%3Abefore%7Bcontent%3A%22%5Ce155%22%7D%2Eglyphicon%2Dsort%2Dby%2Dattributes%2Dalt%3Abefore%7Bcontent%3A%22%5Ce156%22%7D%2Eglyphicon%2Dunchecked%3Abefore%7Bcontent%3A%22%5Ce157%22%7D%2Eglyphicon%2Dexpand%3Abefore%7Bcontent%3A%22%5Ce158%22%7D%2Eglyphicon%2Dcollapse%2Ddown%3Abefore%7Bcontent%3A%22%5Ce159%22%7D%2Eglyphicon%2Dcollapse%2Dup%3Abefore%7Bcontent%3A%22%5Ce160%22%7D%2Eglyphicon%2Dlog%2Din%3Abefore%7Bcontent%3A%22%5Ce161%22%7D%2Eglyphicon%2Dflash%3Abefore%7Bcontent%3A%22%5Ce162%22%7D%2Eglyphicon%2Dlog%2Dout%3Abefore%7Bcontent%3A%22%5Ce163%22%7D%2Eglyphicon%2Dnew%2Dwindow%3Abefore%7Bcontent%3A%22%5Ce164%22%7D%2Eglyphicon%2Drecord%3Abefore%7Bcontent%3A%22%5Ce165%22%7D%2Eglyphicon%2Dsave%3Abefore%7Bcontent%3A%22%5Ce166%22%7D%2Eglyphicon%2Dopen%3Abefore%7Bcontent%3A%22%5Ce167%22%7D%2Eglyphicon%2Dsaved%3Abefore%7Bcontent%3A%22%5Ce168%22%7D%2Eglyphicon%2Dimport%3Abefore%7Bcontent%3A%22%5Ce169%22%7D%2Eglyphicon%2Dexport%3Abefore%7Bcontent%3A%22%5Ce170%22%7D%2Eglyphicon%2Dsend%3Abefore%7Bcontent%3A%22%5Ce171%22%7D%2Eglyphicon%2Dfloppy%2Ddisk%3Abefore%7Bcontent%3A%22%5Ce172%22%7D%2Eglyphicon%2Dfloppy%2Dsaved%3Abefore%7Bcontent%3A%22%5Ce173%22%7D%2Eglyphicon%2Dfloppy%2Dremove%3Abefore%7Bcontent%3A%22%5Ce174%22%7D%2Eglyphicon%2Dfloppy%2Dsave%3Abefore%7Bcontent%3A%22%5Ce175%22%7D%2Eglyphicon%2Dfloppy%2Dopen%3Abefore%7Bcontent%3A%22%5Ce176%22%7D%2Eglyphicon%2Dcredit%2Dcard%3Abefore%7Bcontent%3A%22%5Ce177%22%7D%2Eglyphicon%2Dtransfer%3Abefore%7Bcontent%3A%22%5Ce178%22%7D%2Eglyphicon%2Dcutlery%3Abefore%7Bcontent%3A%22%5Ce179%22%7D%2Eglyphicon%2Dheader%3Abefore%7Bcontent%3A%22%5Ce180%22%7D%2Eglyphicon%2Dcompressed%3Abefore%7Bcontent%3A%22%5Ce181%22%7D%2Eglyphicon%2Dearphone%3Abefore%7Bcontent%3A%22%5Ce182%22%7D%2Eglyphicon%2Dphone%2Dalt%3Abefore%7Bcontent%3A%22%5Ce183%22%7D%2Eglyphicon%2Dtower%3Abefore%7Bcontent%3A%22%5Ce184%22%7D%2Eglyphicon%2Dstats%3Abefore%7Bcontent%3A%22%5Ce185%22%7D%2Eglyphicon%2Dsd%2Dvideo%3Abefore%7Bcontent%3A%22%5Ce186%22%7D%2Eglyphicon%2Dhd%2Dvideo%3Abefore%7Bcontent%3A%22%5Ce187%22%7D%2Eglyphicon%2Dsubtitles%3Abefore%7Bcontent%3A%22%5Ce188%22%7D%2Eglyphicon%2Dsound%2Dstereo%3Abefore%7Bcontent%3A%22%5Ce189%22%7D%2Eglyphicon%2Dsound%2Ddolby%3Abefore%7Bcontent%3A%22%5Ce190%22%7D%2Eglyphicon%2Dsound%2D5%2D1%3Abefore%7Bcontent%3A%22%5Ce191%22%7D%2Eglyphicon%2Dsound%2D6%2D1%3Abefore%7Bcontent%3A%22%5Ce192%22%7D%2Eglyphicon%2Dsound%2D7%2D1%3Abefore%7Bcontent%3A%22%5Ce193%22%7D%2Eglyphicon%2Dcopyright%2Dmark%3Abefore%7Bcontent%3A%22%5Ce194%22%7D%2Eglyphicon%2Dregistration%2Dmark%3Abefore%7Bcontent%3A%22%5Ce195%22%7D%2Eglyphicon%2Dcloud%2Ddownload%3Abefore%7Bcontent%3A%22%5Ce197%22%7D%2Eglyphicon%2Dcloud%2Dupload%3Abefore%7Bcontent%3A%22%5Ce198%22%7D%2Eglyphicon%2Dtree%2Dconifer%3Abefore%7Bcontent%3A%22%5Ce199%22%7D%2Eglyphicon%2Dtree%2Ddeciduous%3Abefore%7Bcontent%3A%22%5Ce200%22%7D%2Eglyphicon%2Dcd%3Abefore%7Bcontent%3A%22%5Ce201%22%7D%2Eglyphicon%2Dsave%2Dfile%3Abefore%7Bcontent%3A%22%5Ce202%22%7D%2Eglyphicon%2Dopen%2Dfile%3Abefore%7Bcontent%3A%22%5Ce203%22%7D%2Eglyphicon%2Dlevel%2Dup%3Abefore%7Bcontent%3A%22%5Ce204%22%7D%2Eglyphicon%2Dcopy%3Abefore%7Bcontent%3A%22%5Ce205%22%7D%2Eglyphicon%2Dpaste%3Abefore%7Bcontent%3A%22%5Ce206%22%7D%2Eglyphicon%2Dalert%3Abefore%7Bcontent%3A%22%5Ce209%22%7D%2Eglyphicon%2Dequalizer%3Abefore%7Bcontent%3A%22%5Ce210%22%7D%2Eglyphicon%2Dking%3Abefore%7Bcontent%3A%22%5Ce211%22%7D%2Eglyphicon%2Dqueen%3Abefore%7Bcontent%3A%22%5Ce212%22%7D%2Eglyphicon%2Dpawn%3Abefore%7Bcontent%3A%22%5Ce213%22%7D%2Eglyphicon%2Dbishop%3Abefore%7Bcontent%3A%22%5Ce214%22%7D%2Eglyphicon%2Dknight%3Abefore%7Bcontent%3A%22%5Ce215%22%7D%2Eglyphicon%2Dbaby%2Dformula%3Abefore%7Bcontent%3A%22%5Ce216%22%7D%2Eglyphicon%2Dtent%3Abefore%7Bcontent%3A%22%5C26fa%22%7D%2Eglyphicon%2Dblackboard%3Abefore%7Bcontent%3A%22%5Ce218%22%7D%2Eglyphicon%2Dbed%3Abefore%7Bcontent%3A%22%5Ce219%22%7D%2Eglyphicon%2Dapple%3Abefore%7Bcontent%3A%22%5Cf8ff%22%7D%2Eglyphicon%2Derase%3Abefore%7Bcontent%3A%22%5Ce221%22%7D%2Eglyphicon%2Dhourglass%3Abefore%7Bcontent%3A%22%5C231b%22%7D%2Eglyphicon%2Dlamp%3Abefore%7Bcontent%3A%22%5Ce223%22%7D%2Eglyphicon%2Dduplicate%3Abefore%7Bcontent%3A%22%5Ce224%22%7D%2Eglyphicon%2Dpiggy%2Dbank%3Abefore%7Bcontent%3A%22%5Ce225%22%7D%2Eglyphicon%2Dscissors%3Abefore%7Bcontent%3A%22%5Ce226%22%7D%2Eglyphicon%2Dbitcoin%3Abefore%7Bcontent%3A%22%5Ce227%22%7D%2Eglyphicon%2Dbtc%3Abefore%7Bcontent%3A%22%5Ce227%22%7D%2Eglyphicon%2Dxbt%3Abefore%7Bcontent%3A%22%5Ce227%22%7D%2Eglyphicon%2Dyen%3Abefore%7Bcontent%3A%22%5C00a5%22%7D%2Eglyphicon%2Djpy%3Abefore%7Bcontent%3A%22%5C00a5%22%7D%2Eglyphicon%2Druble%3Abefore%7Bcontent%3A%22%5C20bd%22%7D%2Eglyphicon%2Drub%3Abefore%7Bcontent%3A%22%5C20bd%22%7D%2Eglyphicon%2Dscale%3Abefore%7Bcontent%3A%22%5Ce230%22%7D%2Eglyphicon%2Dice%2Dlolly%3Abefore%7Bcontent%3A%22%5Ce231%22%7D%2Eglyphicon%2Dice%2Dlolly%2Dtasted%3Abefore%7Bcontent%3A%22%5Ce232%22%7D%2Eglyphicon%2Deducation%3Abefore%7Bcontent%3A%22%5Ce233%22%7D%2Eglyphicon%2Doption%2Dhorizontal%3Abefore%7Bcontent%3A%22%5Ce234%22%7D%2Eglyphicon%2Doption%2Dvertical%3Abefore%7Bcontent%3A%22%5Ce235%22%7D%2Eglyphicon%2Dmenu%2Dhamburger%3Abefore%7Bcontent%3A%22%5Ce236%22%7D%2Eglyphicon%2Dmodal%2Dwindow%3Abefore%7Bcontent%3A%22%5Ce237%22%7D%2Eglyphicon%2Doil%3Abefore%7Bcontent%3A%22%5Ce238%22%7D%2Eglyphicon%2Dgrain%3Abefore%7Bcontent%3A%22%5Ce239%22%7D%2Eglyphicon%2Dsunglasses%3Abefore%7Bcontent%3A%22%5Ce240%22%7D%2Eglyphicon%2Dtext%2Dsize%3Abefore%7Bcontent%3A%22%5Ce241%22%7D%2Eglyphicon%2Dtext%2Dcolor%3Abefore%7Bcontent%3A%22%5Ce242%22%7D%2Eglyphicon%2Dtext%2Dbackground%3Abefore%7Bcontent%3A%22%5Ce243%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dtop%3Abefore%7Bcontent%3A%22%5Ce244%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dbottom%3Abefore%7Bcontent%3A%22%5Ce245%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dhorizontal%3Abefore%7Bcontent%3A%22%5Ce246%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dleft%3Abefore%7Bcontent%3A%22%5Ce247%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dvertical%3Abefore%7Bcontent%3A%22%5Ce248%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dright%3Abefore%7Bcontent%3A%22%5Ce249%22%7D%2Eglyphicon%2Dtriangle%2Dright%3Abefore%7Bcontent%3A%22%5Ce250%22%7D%2Eglyphicon%2Dtriangle%2Dleft%3Abefore%7Bcontent%3A%22%5Ce251%22%7D%2Eglyphicon%2Dtriangle%2Dbottom%3Abefore%7Bcontent%3A%22%5Ce252%22%7D%2Eglyphicon%2Dtriangle%2Dtop%3Abefore%7Bcontent%3A%22%5Ce253%22%7D%2Eglyphicon%2Dconsole%3Abefore%7Bcontent%3A%22%5Ce254%22%7D%2Eglyphicon%2Dsuperscript%3Abefore%7Bcontent%3A%22%5Ce255%22%7D%2Eglyphicon%2Dsubscript%3Abefore%7Bcontent%3A%22%5Ce256%22%7D%2Eglyphicon%2Dmenu%2Dleft%3Abefore%7Bcontent%3A%22%5Ce257%22%7D%2Eglyphicon%2Dmenu%2Dright%3Abefore%7Bcontent%3A%22%5Ce258%22%7D%2Eglyphicon%2Dmenu%2Ddown%3Abefore%7Bcontent%3A%22%5Ce259%22%7D%2Eglyphicon%2Dmenu%2Dup%3Abefore%7Bcontent%3A%22%5Ce260%22%7D%2A%7B%2Dwebkit%2Dbox%2Dsizing%3Aborder%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Aborder%2Dbox%3Bbox%2Dsizing%3Aborder%2Dbox%7D%2A%3Abefore%2C%2A%3Aafter%7B%2Dwebkit%2Dbox%2Dsizing%3Aborder%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Aborder%2Dbox%3Bbox%2Dsizing%3Aborder%2Dbox%7Dhtml%7Bfont%2Dsize%3A10px%3B%2Dwebkit%2Dtap%2Dhighlight%2Dcolor%3Argba%280%2C0%2C0%2C0%29%7Dbody%7Bfont%2Dfamily%3A%22Source%20Sans%20Pro%22%2C%22Helvetica%20Neue%22%2CHelvetica%2CArial%2Csans%2Dserif%3Bfont%2Dsize%3A14px%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23ffffff%7Dinput%2Cbutton%2Cselect%2Ctextarea%7Bfont%2Dfamily%3Ainherit%3Bfont%2Dsize%3Ainherit%3Bline%2Dheight%3Ainherit%7Da%7Bcolor%3A%23158cba%3Btext%2Ddecoration%3Anone%7Da%3Ahover%2Ca%3Afocus%7Bcolor%3A%23158cba%3Btext%2Ddecoration%3Aunderline%7Da%3Afocus%7Boutline%3Athin%20dotted%3Boutline%3A5px%20auto%20%2Dwebkit%2Dfocus%2Dring%2Dcolor%3Boutline%2Doffset%3A%2D2px%7Dfigure%7Bmargin%3A0%7Dimg%7Bvertical%2Dalign%3Amiddle%7D%2Eimg%2Dresponsive%2C%2Ethumbnail%3Eimg%2C%2Ethumbnail%20a%3Eimg%2C%2Ecarousel%2Dinner%3E%2Eitem%3Eimg%2C%2Ecarousel%2Dinner%3E%2Eitem%3Ea%3Eimg%7Bdisplay%3Ablock%3Bmax%2Dwidth%3A100%25%3Bheight%3Aauto%7D%2Eimg%2Drounded%7Bborder%2Dradius%3A5px%7D%2Eimg%2Dthumbnail%7Bpadding%3A4px%3Bline%2Dheight%3A1%2E42857143%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%3A1px%20solid%20%23eeeeee%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dtransition%3Aall%20%2E2s%20ease%2Din%2Dout%3B%2Do%2Dtransition%3Aall%20%2E2s%20ease%2Din%2Dout%3Btransition%3Aall%20%2E2s%20ease%2Din%2Dout%3Bdisplay%3Ainline%2Dblock%3Bmax%2Dwidth%3A100%25%3Bheight%3Aauto%7D%2Eimg%2Dcircle%7Bborder%2Dradius%3A50%25%7Dhr%7Bmargin%2Dtop%3A20px%3Bmargin%2Dbottom%3A20px%3Bborder%3A0%3Bborder%2Dtop%3A1px%20solid%20%23eeeeee%7D%2Esr%2Donly%7Bposition%3Aabsolute%3Bwidth%3A1px%3Bheight%3A1px%3Bmargin%3A%2D1px%3Bpadding%3A0%3Boverflow%3Ahidden%3Bclip%3Arect%280%2C%200%2C%200%2C%200%29%3Bborder%3A0%7D%2Esr%2Donly%2Dfocusable%3Aactive%2C%2Esr%2Donly%2Dfocusable%3Afocus%7Bposition%3Astatic%3Bwidth%3Aauto%3Bheight%3Aauto%3Bmargin%3A0%3Boverflow%3Avisible%3Bclip%3Aauto%7D%5Brole%3D%22button%22%5D%7Bcursor%3Apointer%7Dh1%2Ch2%2Ch3%2Ch4%2Ch5%2Ch6%2C%2Eh1%2C%2Eh2%2C%2Eh3%2C%2Eh4%2C%2Eh5%2C%2Eh6%7Bfont%2Dfamily%3Ainherit%3Bfont%2Dweight%3A400%3Bline%2Dheight%3A1%2E1%3Bcolor%3A%23333333%7Dh1%20small%2Ch2%20small%2Ch3%20small%2Ch4%20small%2Ch5%20small%2Ch6%20small%2C%2Eh1%20small%2C%2Eh2%20small%2C%2Eh3%20small%2C%2Eh4%20small%2C%2Eh5%20small%2C%2Eh6%20small%2Ch1%20%2Esmall%2Ch2%20%2Esmall%2Ch3%20%2Esmall%2Ch4%20%2Esmall%2Ch5%20%2Esmall%2Ch6%20%2Esmall%2C%2Eh1%20%2Esmall%2C%2Eh2%20%2Esmall%2C%2Eh3%20%2Esmall%2C%2Eh4%20%2Esmall%2C%2Eh5%20%2Esmall%2C%2Eh6%20%2Esmall%7Bfont%2Dweight%3Anormal%3Bline%2Dheight%3A1%3Bcolor%3A%23999999%7Dh1%2C%2Eh1%2Ch2%2C%2Eh2%2Ch3%2C%2Eh3%7Bmargin%2Dtop%3A20px%3Bmargin%2Dbottom%3A10px%7Dh1%20small%2C%2Eh1%20small%2Ch2%20small%2C%2Eh2%20small%2Ch3%20small%2C%2Eh3%20small%2Ch1%20%2Esmall%2C%2Eh1%20%2Esmall%2Ch2%20%2Esmall%2C%2Eh2%20%2Esmall%2Ch3%20%2Esmall%2C%2Eh3%20%2Esmall%7Bfont%2Dsize%3A65%25%7Dh4%2C%2Eh4%2Ch5%2C%2Eh5%2Ch6%2C%2Eh6%7Bmargin%2Dtop%3A10px%3Bmargin%2Dbottom%3A10px%7Dh4%20small%2C%2Eh4%20small%2Ch5%20small%2C%2Eh5%20small%2Ch6%20small%2C%2Eh6%20small%2Ch4%20%2Esmall%2C%2Eh4%20%2Esmall%2Ch5%20%2Esmall%2C%2Eh5%20%2Esmall%2Ch6%20%2Esmall%2C%2Eh6%20%2Esmall%7Bfont%2Dsize%3A75%25%7Dh1%2C%2Eh1%7Bfont%2Dsize%3A36px%7Dh2%2C%2Eh2%7Bfont%2Dsize%3A30px%7Dh3%2C%2Eh3%7Bfont%2Dsize%3A24px%7Dh4%2C%2Eh4%7Bfont%2Dsize%3A18px%7Dh5%2C%2Eh5%7Bfont%2Dsize%3A14px%7Dh6%2C%2Eh6%7Bfont%2Dsize%3A12px%7Dp%7Bmargin%3A0%200%2010px%7D%2Elead%7Bmargin%2Dbottom%3A20px%3Bfont%2Dsize%3A16px%3Bfont%2Dweight%3A300%3Bline%2Dheight%3A1%2E4%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Elead%7Bfont%2Dsize%3A21px%7D%7Dsmall%2C%2Esmall%7Bfont%2Dsize%3A85%25%7Dmark%2C%2Emark%7Bbackground%2Dcolor%3A%23ff851b%3Bpadding%3A%2E2em%7D%2Etext%2Dleft%7Btext%2Dalign%3Aleft%7D%2Etext%2Dright%7Btext%2Dalign%3Aright%7D%2Etext%2Dcenter%7Btext%2Dalign%3Acenter%7D%2Etext%2Djustify%7Btext%2Dalign%3Ajustify%7D%2Etext%2Dnowrap%7Bwhite%2Dspace%3Anowrap%7D%2Etext%2Dlowercase%7Btext%2Dtransform%3Alowercase%7D%2Etext%2Duppercase%7Btext%2Dtransform%3Auppercase%7D%2Etext%2Dcapitalize%7Btext%2Dtransform%3Acapitalize%7D%2Etext%2Dmuted%7Bcolor%3A%23999999%7D%2Etext%2Dprimary%7Bcolor%3A%23158cba%7Da%2Etext%2Dprimary%3Ahover%2Ca%2Etext%2Dprimary%3Afocus%7Bcolor%3A%23106a8c%7D%2Etext%2Dsuccess%7Bcolor%3A%23ffffff%7Da%2Etext%2Dsuccess%3Ahover%2Ca%2Etext%2Dsuccess%3Afocus%7Bcolor%3A%23e6e6e6%7D%2Etext%2Dinfo%7Bcolor%3A%23ffffff%7Da%2Etext%2Dinfo%3Ahover%2Ca%2Etext%2Dinfo%3Afocus%7Bcolor%3A%23e6e6e6%7D%2Etext%2Dwarning%7Bcolor%3A%23ffffff%7Da%2Etext%2Dwarning%3Ahover%2Ca%2Etext%2Dwarning%3Afocus%7Bcolor%3A%23e6e6e6%7D%2Etext%2Ddanger%7Bcolor%3A%23ffffff%7Da%2Etext%2Ddanger%3Ahover%2Ca%2Etext%2Ddanger%3Afocus%7Bcolor%3A%23e6e6e6%7D%2Ebg%2Dprimary%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23158cba%7Da%2Ebg%2Dprimary%3Ahover%2Ca%2Ebg%2Dprimary%3Afocus%7Bbackground%2Dcolor%3A%23106a8c%7D%2Ebg%2Dsuccess%7Bbackground%2Dcolor%3A%2328b62c%7Da%2Ebg%2Dsuccess%3Ahover%2Ca%2Ebg%2Dsuccess%3Afocus%7Bbackground%2Dcolor%3A%231f8c22%7D%2Ebg%2Dinfo%7Bbackground%2Dcolor%3A%2375caeb%7Da%2Ebg%2Dinfo%3Ahover%2Ca%2Ebg%2Dinfo%3Afocus%7Bbackground%2Dcolor%3A%2348b9e5%7D%2Ebg%2Dwarning%7Bbackground%2Dcolor%3A%23ff851b%7Da%2Ebg%2Dwarning%3Ahover%2Ca%2Ebg%2Dwarning%3Afocus%7Bbackground%2Dcolor%3A%23e76b00%7D%2Ebg%2Ddanger%7Bbackground%2Dcolor%3A%23ff4136%7Da%2Ebg%2Ddanger%3Ahover%2Ca%2Ebg%2Ddanger%3Afocus%7Bbackground%2Dcolor%3A%23ff1103%7D%2Epage%2Dheader%7Bpadding%2Dbottom%3A9px%3Bmargin%3A40px%200%2020px%3Bborder%2Dbottom%3A1px%20solid%20%23eeeeee%7Dul%2Col%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A10px%7Dul%20ul%2Col%20ul%2Cul%20ol%2Col%20ol%7Bmargin%2Dbottom%3A0%7D%2Elist%2Dunstyled%7Bpadding%2Dleft%3A0%3Blist%2Dstyle%3Anone%7D%2Elist%2Dinline%7Bpadding%2Dleft%3A0%3Blist%2Dstyle%3Anone%3Bmargin%2Dleft%3A%2D5px%7D%2Elist%2Dinline%3Eli%7Bdisplay%3Ainline%2Dblock%3Bpadding%2Dleft%3A5px%3Bpadding%2Dright%3A5px%7Ddl%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A20px%7Ddt%2Cdd%7Bline%2Dheight%3A1%2E42857143%7Ddt%7Bfont%2Dweight%3Abold%7Ddd%7Bmargin%2Dleft%3A0%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Edl%2Dhorizontal%20dt%7Bfloat%3Aleft%3Bwidth%3A160px%3Bclear%3Aleft%3Btext%2Dalign%3Aright%3Boverflow%3Ahidden%3Btext%2Doverflow%3Aellipsis%3Bwhite%2Dspace%3Anowrap%7D%2Edl%2Dhorizontal%20dd%7Bmargin%2Dleft%3A180px%7D%7Dabbr%5Btitle%5D%2Cabbr%5Bdata%2Doriginal%2Dtitle%5D%7Bcursor%3Ahelp%3Bborder%2Dbottom%3A1px%20dotted%20%23999999%7D%2Einitialism%7Bfont%2Dsize%3A90%25%3Btext%2Dtransform%3Auppercase%7Dblockquote%7Bpadding%3A10px%2020px%3Bmargin%3A0%200%2020px%3Bfont%2Dsize%3A17%2E5px%3Bborder%2Dleft%3A5px%20solid%20%23eeeeee%7Dblockquote%20p%3Alast%2Dchild%2Cblockquote%20ul%3Alast%2Dchild%2Cblockquote%20ol%3Alast%2Dchild%7Bmargin%2Dbottom%3A0%7Dblockquote%20footer%2Cblockquote%20small%2Cblockquote%20%2Esmall%7Bdisplay%3Ablock%3Bfont%2Dsize%3A80%25%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23999999%7Dblockquote%20footer%3Abefore%2Cblockquote%20small%3Abefore%2Cblockquote%20%2Esmall%3Abefore%7Bcontent%3A%27%5C2014%20%5C00A0%27%7D%2Eblockquote%2Dreverse%2Cblockquote%2Epull%2Dright%7Bpadding%2Dright%3A15px%3Bpadding%2Dleft%3A0%3Bborder%2Dright%3A5px%20solid%20%23eeeeee%3Bborder%2Dleft%3A0%3Btext%2Dalign%3Aright%7D%2Eblockquote%2Dreverse%20footer%3Abefore%2Cblockquote%2Epull%2Dright%20footer%3Abefore%2C%2Eblockquote%2Dreverse%20small%3Abefore%2Cblockquote%2Epull%2Dright%20small%3Abefore%2C%2Eblockquote%2Dreverse%20%2Esmall%3Abefore%2Cblockquote%2Epull%2Dright%20%2Esmall%3Abefore%7Bcontent%3A%27%27%7D%2Eblockquote%2Dreverse%20footer%3Aafter%2Cblockquote%2Epull%2Dright%20footer%3Aafter%2C%2Eblockquote%2Dreverse%20small%3Aafter%2Cblockquote%2Epull%2Dright%20small%3Aafter%2C%2Eblockquote%2Dreverse%20%2Esmall%3Aafter%2Cblockquote%2Epull%2Dright%20%2Esmall%3Aafter%7Bcontent%3A%27%5C00A0%20%5C2014%27%7Daddress%7Bmargin%2Dbottom%3A20px%3Bfont%2Dstyle%3Anormal%3Bline%2Dheight%3A1%2E42857143%7Dcode%2Ckbd%2Cpre%2Csamp%7Bfont%2Dfamily%3Amonospace%7Dcode%7Bpadding%3A2px%204px%3Bfont%2Dsize%3A90%25%3Bcolor%3A%23c7254e%3Bbackground%2Dcolor%3A%23f9f2f4%3Bborder%2Dradius%3A4px%7Dkbd%7Bpadding%3A2px%204px%3Bfont%2Dsize%3A90%25%3Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23333333%3Bborder%2Dradius%3A2px%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%20%2D1px%200%20rgba%280%2C0%2C0%2C0%2E25%29%3Bbox%2Dshadow%3Ainset%200%20%2D1px%200%20rgba%280%2C0%2C0%2C0%2E25%29%7Dkbd%20kbd%7Bpadding%3A0%3Bfont%2Dsize%3A100%25%3Bfont%2Dweight%3Abold%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7Dpre%7Bdisplay%3Ablock%3Bpadding%3A9%2E5px%3Bmargin%3A0%200%2010px%3Bfont%2Dsize%3A13px%3Bline%2Dheight%3A1%2E42857143%3Bword%2Dbreak%3Abreak%2Dall%3Bword%2Dwrap%3Abreak%2Dword%3Bcolor%3A%23333333%3Bbackground%2Dcolor%3A%23f5f5f5%3Bborder%3A1px%20solid%20%23cccccc%3Bborder%2Dradius%3A4px%7Dpre%20code%7Bpadding%3A0%3Bfont%2Dsize%3Ainherit%3Bcolor%3Ainherit%3Bwhite%2Dspace%3Apre%2Dwrap%3Bbackground%2Dcolor%3Atransparent%3Bborder%2Dradius%3A0%7D%2Epre%2Dscrollable%7Bmax%2Dheight%3A340px%3Boverflow%2Dy%3Ascroll%7D%2Econtainer%7Bmargin%2Dright%3Aauto%3Bmargin%2Dleft%3Aauto%3Bpadding%2Dleft%3A15px%3Bpadding%2Dright%3A15px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Econtainer%7Bwidth%3A750px%7D%7D%40media%20%28min%2Dwidth%3A992px%29%7B%2Econtainer%7Bwidth%3A970px%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Econtainer%7Bwidth%3A1170px%7D%7D%2Econtainer%2Dfluid%7Bmargin%2Dright%3Aauto%3Bmargin%2Dleft%3Aauto%3Bpadding%2Dleft%3A15px%3Bpadding%2Dright%3A15px%7D%2Erow%7Bmargin%2Dleft%3A%2D15px%3Bmargin%2Dright%3A%2D15px%7D%2Ecol%2Dxs%2D1%2C%2Ecol%2Dsm%2D1%2C%2Ecol%2Dmd%2D1%2C%2Ecol%2Dlg%2D1%2C%2Ecol%2Dxs%2D2%2C%2Ecol%2Dsm%2D2%2C%2Ecol%2Dmd%2D2%2C%2Ecol%2Dlg%2D2%2C%2Ecol%2Dxs%2D3%2C%2Ecol%2Dsm%2D3%2C%2Ecol%2Dmd%2D3%2C%2Ecol%2Dlg%2D3%2C%2Ecol%2Dxs%2D4%2C%2Ecol%2Dsm%2D4%2C%2Ecol%2Dmd%2D4%2C%2Ecol%2Dlg%2D4%2C%2Ecol%2Dxs%2D5%2C%2Ecol%2Dsm%2D5%2C%2Ecol%2Dmd%2D5%2C%2Ecol%2Dlg%2D5%2C%2Ecol%2Dxs%2D6%2C%2Ecol%2Dsm%2D6%2C%2Ecol%2Dmd%2D6%2C%2Ecol%2Dlg%2D6%2C%2Ecol%2Dxs%2D7%2C%2Ecol%2Dsm%2D7%2C%2Ecol%2Dmd%2D7%2C%2Ecol%2Dlg%2D7%2C%2Ecol%2Dxs%2D8%2C%2Ecol%2Dsm%2D8%2C%2Ecol%2Dmd%2D8%2C%2Ecol%2Dlg%2D8%2C%2Ecol%2Dxs%2D9%2C%2Ecol%2Dsm%2D9%2C%2Ecol%2Dmd%2D9%2C%2Ecol%2Dlg%2D9%2C%2Ecol%2Dxs%2D10%2C%2Ecol%2Dsm%2D10%2C%2Ecol%2Dmd%2D10%2C%2Ecol%2Dlg%2D10%2C%2Ecol%2Dxs%2D11%2C%2Ecol%2Dsm%2D11%2C%2Ecol%2Dmd%2D11%2C%2Ecol%2Dlg%2D11%2C%2Ecol%2Dxs%2D12%2C%2Ecol%2Dsm%2D12%2C%2Ecol%2Dmd%2D12%2C%2Ecol%2Dlg%2D12%7Bposition%3Arelative%3Bmin%2Dheight%3A1px%3Bpadding%2Dleft%3A15px%3Bpadding%2Dright%3A15px%7D%2Ecol%2Dxs%2D1%2C%2Ecol%2Dxs%2D2%2C%2Ecol%2Dxs%2D3%2C%2Ecol%2Dxs%2D4%2C%2Ecol%2Dxs%2D5%2C%2Ecol%2Dxs%2D6%2C%2Ecol%2Dxs%2D7%2C%2Ecol%2Dxs%2D8%2C%2Ecol%2Dxs%2D9%2C%2Ecol%2Dxs%2D10%2C%2Ecol%2Dxs%2D11%2C%2Ecol%2Dxs%2D12%7Bfloat%3Aleft%7D%2Ecol%2Dxs%2D12%7Bwidth%3A100%25%7D%2Ecol%2Dxs%2D11%7Bwidth%3A91%2E66666667%25%7D%2Ecol%2Dxs%2D10%7Bwidth%3A83%2E33333333%25%7D%2Ecol%2Dxs%2D9%7Bwidth%3A75%25%7D%2Ecol%2Dxs%2D8%7Bwidth%3A66%2E66666667%25%7D%2Ecol%2Dxs%2D7%7Bwidth%3A58%2E33333333%25%7D%2Ecol%2Dxs%2D6%7Bwidth%3A50%25%7D%2Ecol%2Dxs%2D5%7Bwidth%3A41%2E66666667%25%7D%2Ecol%2Dxs%2D4%7Bwidth%3A33%2E33333333%25%7D%2Ecol%2Dxs%2D3%7Bwidth%3A25%25%7D%2Ecol%2Dxs%2D2%7Bwidth%3A16%2E66666667%25%7D%2Ecol%2Dxs%2D1%7Bwidth%3A8%2E33333333%25%7D%2Ecol%2Dxs%2Dpull%2D12%7Bright%3A100%25%7D%2Ecol%2Dxs%2Dpull%2D11%7Bright%3A91%2E66666667%25%7D%2Ecol%2Dxs%2Dpull%2D10%7Bright%3A83%2E33333333%25%7D%2Ecol%2Dxs%2Dpull%2D9%7Bright%3A75%25%7D%2Ecol%2Dxs%2Dpull%2D8%7Bright%3A66%2E66666667%25%7D%2Ecol%2Dxs%2Dpull%2D7%7Bright%3A58%2E33333333%25%7D%2Ecol%2Dxs%2Dpull%2D6%7Bright%3A50%25%7D%2Ecol%2Dxs%2Dpull%2D5%7Bright%3A41%2E66666667%25%7D%2Ecol%2Dxs%2Dpull%2D4%7Bright%3A33%2E33333333%25%7D%2Ecol%2Dxs%2Dpull%2D3%7Bright%3A25%25%7D%2Ecol%2Dxs%2Dpull%2D2%7Bright%3A16%2E66666667%25%7D%2Ecol%2Dxs%2Dpull%2D1%7Bright%3A8%2E33333333%25%7D%2Ecol%2Dxs%2Dpull%2D0%7Bright%3Aauto%7D%2Ecol%2Dxs%2Dpush%2D12%7Bleft%3A100%25%7D%2Ecol%2Dxs%2Dpush%2D11%7Bleft%3A91%2E66666667%25%7D%2Ecol%2Dxs%2Dpush%2D10%7Bleft%3A83%2E33333333%25%7D%2Ecol%2Dxs%2Dpush%2D9%7Bleft%3A75%25%7D%2Ecol%2Dxs%2Dpush%2D8%7Bleft%3A66%2E66666667%25%7D%2Ecol%2Dxs%2Dpush%2D7%7Bleft%3A58%2E33333333%25%7D%2Ecol%2Dxs%2Dpush%2D6%7Bleft%3A50%25%7D%2Ecol%2Dxs%2Dpush%2D5%7Bleft%3A41%2E66666667%25%7D%2Ecol%2Dxs%2Dpush%2D4%7Bleft%3A33%2E33333333%25%7D%2Ecol%2Dxs%2Dpush%2D3%7Bleft%3A25%25%7D%2Ecol%2Dxs%2Dpush%2D2%7Bleft%3A16%2E66666667%25%7D%2Ecol%2Dxs%2Dpush%2D1%7Bleft%3A8%2E33333333%25%7D%2Ecol%2Dxs%2Dpush%2D0%7Bleft%3Aauto%7D%2Ecol%2Dxs%2Doffset%2D12%7Bmargin%2Dleft%3A100%25%7D%2Ecol%2Dxs%2Doffset%2D11%7Bmargin%2Dleft%3A91%2E66666667%25%7D%2Ecol%2Dxs%2Doffset%2D10%7Bmargin%2Dleft%3A83%2E33333333%25%7D%2Ecol%2Dxs%2Doffset%2D9%7Bmargin%2Dleft%3A75%25%7D%2Ecol%2Dxs%2Doffset%2D8%7Bmargin%2Dleft%3A66%2E66666667%25%7D%2Ecol%2Dxs%2Doffset%2D7%7Bmargin%2Dleft%3A58%2E33333333%25%7D%2Ecol%2Dxs%2Doffset%2D6%7Bmargin%2Dleft%3A50%25%7D%2Ecol%2Dxs%2Doffset%2D5%7Bmargin%2Dleft%3A41%2E66666667%25%7D%2Ecol%2Dxs%2Doffset%2D4%7Bmargin%2Dleft%3A33%2E33333333%25%7D%2Ecol%2Dxs%2Doffset%2D3%7Bmargin%2Dleft%3A25%25%7D%2Ecol%2Dxs%2Doffset%2D2%7Bmargin%2Dleft%3A16%2E66666667%25%7D%2Ecol%2Dxs%2Doffset%2D1%7Bmargin%2Dleft%3A8%2E33333333%25%7D%2Ecol%2Dxs%2Doffset%2D0%7Bmargin%2Dleft%3A0%25%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Ecol%2Dsm%2D1%2C%2Ecol%2Dsm%2D2%2C%2Ecol%2Dsm%2D3%2C%2Ecol%2Dsm%2D4%2C%2Ecol%2Dsm%2D5%2C%2Ecol%2Dsm%2D6%2C%2Ecol%2Dsm%2D7%2C%2Ecol%2Dsm%2D8%2C%2Ecol%2Dsm%2D9%2C%2Ecol%2Dsm%2D10%2C%2Ecol%2Dsm%2D11%2C%2Ecol%2Dsm%2D12%7Bfloat%3Aleft%7D%2Ecol%2Dsm%2D12%7Bwidth%3A100%25%7D%2Ecol%2Dsm%2D11%7Bwidth%3A91%2E66666667%25%7D%2Ecol%2Dsm%2D10%7Bwidth%3A83%2E33333333%25%7D%2Ecol%2Dsm%2D9%7Bwidth%3A75%25%7D%2Ecol%2Dsm%2D8%7Bwidth%3A66%2E66666667%25%7D%2Ecol%2Dsm%2D7%7Bwidth%3A58%2E33333333%25%7D%2Ecol%2Dsm%2D6%7Bwidth%3A50%25%7D%2Ecol%2Dsm%2D5%7Bwidth%3A41%2E66666667%25%7D%2Ecol%2Dsm%2D4%7Bwidth%3A33%2E33333333%25%7D%2Ecol%2Dsm%2D3%7Bwidth%3A25%25%7D%2Ecol%2Dsm%2D2%7Bwidth%3A16%2E66666667%25%7D%2Ecol%2Dsm%2D1%7Bwidth%3A8%2E33333333%25%7D%2Ecol%2Dsm%2Dpull%2D12%7Bright%3A100%25%7D%2Ecol%2Dsm%2Dpull%2D11%7Bright%3A91%2E66666667%25%7D%2Ecol%2Dsm%2Dpull%2D10%7Bright%3A83%2E33333333%25%7D%2Ecol%2Dsm%2Dpull%2D9%7Bright%3A75%25%7D%2Ecol%2Dsm%2Dpull%2D8%7Bright%3A66%2E66666667%25%7D%2Ecol%2Dsm%2Dpull%2D7%7Bright%3A58%2E33333333%25%7D%2Ecol%2Dsm%2Dpull%2D6%7Bright%3A50%25%7D%2Ecol%2Dsm%2Dpull%2D5%7Bright%3A41%2E66666667%25%7D%2Ecol%2Dsm%2Dpull%2D4%7Bright%3A33%2E33333333%25%7D%2Ecol%2Dsm%2Dpull%2D3%7Bright%3A25%25%7D%2Ecol%2Dsm%2Dpull%2D2%7Bright%3A16%2E66666667%25%7D%2Ecol%2Dsm%2Dpull%2D1%7Bright%3A8%2E33333333%25%7D%2Ecol%2Dsm%2Dpull%2D0%7Bright%3Aauto%7D%2Ecol%2Dsm%2Dpush%2D12%7Bleft%3A100%25%7D%2Ecol%2Dsm%2Dpush%2D11%7Bleft%3A91%2E66666667%25%7D%2Ecol%2Dsm%2Dpush%2D10%7Bleft%3A83%2E33333333%25%7D%2Ecol%2Dsm%2Dpush%2D9%7Bleft%3A75%25%7D%2Ecol%2Dsm%2Dpush%2D8%7Bleft%3A66%2E66666667%25%7D%2Ecol%2Dsm%2Dpush%2D7%7Bleft%3A58%2E33333333%25%7D%2Ecol%2Dsm%2Dpush%2D6%7Bleft%3A50%25%7D%2Ecol%2Dsm%2Dpush%2D5%7Bleft%3A41%2E66666667%25%7D%2Ecol%2Dsm%2Dpush%2D4%7Bleft%3A33%2E33333333%25%7D%2Ecol%2Dsm%2Dpush%2D3%7Bleft%3A25%25%7D%2Ecol%2Dsm%2Dpush%2D2%7Bleft%3A16%2E66666667%25%7D%2Ecol%2Dsm%2Dpush%2D1%7Bleft%3A8%2E33333333%25%7D%2Ecol%2Dsm%2Dpush%2D0%7Bleft%3Aauto%7D%2Ecol%2Dsm%2Doffset%2D12%7Bmargin%2Dleft%3A100%25%7D%2Ecol%2Dsm%2Doffset%2D11%7Bmargin%2Dleft%3A91%2E66666667%25%7D%2Ecol%2Dsm%2Doffset%2D10%7Bmargin%2Dleft%3A83%2E33333333%25%7D%2Ecol%2Dsm%2Doffset%2D9%7Bmargin%2Dleft%3A75%25%7D%2Ecol%2Dsm%2Doffset%2D8%7Bmargin%2Dleft%3A66%2E66666667%25%7D%2Ecol%2Dsm%2Doffset%2D7%7Bmargin%2Dleft%3A58%2E33333333%25%7D%2Ecol%2Dsm%2Doffset%2D6%7Bmargin%2Dleft%3A50%25%7D%2Ecol%2Dsm%2Doffset%2D5%7Bmargin%2Dleft%3A41%2E66666667%25%7D%2Ecol%2Dsm%2Doffset%2D4%7Bmargin%2Dleft%3A33%2E33333333%25%7D%2Ecol%2Dsm%2Doffset%2D3%7Bmargin%2Dleft%3A25%25%7D%2Ecol%2Dsm%2Doffset%2D2%7Bmargin%2Dleft%3A16%2E66666667%25%7D%2Ecol%2Dsm%2Doffset%2D1%7Bmargin%2Dleft%3A8%2E33333333%25%7D%2Ecol%2Dsm%2Doffset%2D0%7Bmargin%2Dleft%3A0%25%7D%7D%40media%20%28min%2Dwidth%3A992px%29%7B%2Ecol%2Dmd%2D1%2C%2Ecol%2Dmd%2D2%2C%2Ecol%2Dmd%2D3%2C%2Ecol%2Dmd%2D4%2C%2Ecol%2Dmd%2D5%2C%2Ecol%2Dmd%2D6%2C%2Ecol%2Dmd%2D7%2C%2Ecol%2Dmd%2D8%2C%2Ecol%2Dmd%2D9%2C%2Ecol%2Dmd%2D10%2C%2Ecol%2Dmd%2D11%2C%2Ecol%2Dmd%2D12%7Bfloat%3Aleft%7D%2Ecol%2Dmd%2D12%7Bwidth%3A100%25%7D%2Ecol%2Dmd%2D11%7Bwidth%3A91%2E66666667%25%7D%2Ecol%2Dmd%2D10%7Bwidth%3A83%2E33333333%25%7D%2Ecol%2Dmd%2D9%7Bwidth%3A75%25%7D%2Ecol%2Dmd%2D8%7Bwidth%3A66%2E66666667%25%7D%2Ecol%2Dmd%2D7%7Bwidth%3A58%2E33333333%25%7D%2Ecol%2Dmd%2D6%7Bwidth%3A50%25%7D%2Ecol%2Dmd%2D5%7Bwidth%3A41%2E66666667%25%7D%2Ecol%2Dmd%2D4%7Bwidth%3A33%2E33333333%25%7D%2Ecol%2Dmd%2D3%7Bwidth%3A25%25%7D%2Ecol%2Dmd%2D2%7Bwidth%3A16%2E66666667%25%7D%2Ecol%2Dmd%2D1%7Bwidth%3A8%2E33333333%25%7D%2Ecol%2Dmd%2Dpull%2D12%7Bright%3A100%25%7D%2Ecol%2Dmd%2Dpull%2D11%7Bright%3A91%2E66666667%25%7D%2Ecol%2Dmd%2Dpull%2D10%7Bright%3A83%2E33333333%25%7D%2Ecol%2Dmd%2Dpull%2D9%7Bright%3A75%25%7D%2Ecol%2Dmd%2Dpull%2D8%7Bright%3A66%2E66666667%25%7D%2Ecol%2Dmd%2Dpull%2D7%7Bright%3A58%2E33333333%25%7D%2Ecol%2Dmd%2Dpull%2D6%7Bright%3A50%25%7D%2Ecol%2Dmd%2Dpull%2D5%7Bright%3A41%2E66666667%25%7D%2Ecol%2Dmd%2Dpull%2D4%7Bright%3A33%2E33333333%25%7D%2Ecol%2Dmd%2Dpull%2D3%7Bright%3A25%25%7D%2Ecol%2Dmd%2Dpull%2D2%7Bright%3A16%2E66666667%25%7D%2Ecol%2Dmd%2Dpull%2D1%7Bright%3A8%2E33333333%25%7D%2Ecol%2Dmd%2Dpull%2D0%7Bright%3Aauto%7D%2Ecol%2Dmd%2Dpush%2D12%7Bleft%3A100%25%7D%2Ecol%2Dmd%2Dpush%2D11%7Bleft%3A91%2E66666667%25%7D%2Ecol%2Dmd%2Dpush%2D10%7Bleft%3A83%2E33333333%25%7D%2Ecol%2Dmd%2Dpush%2D9%7Bleft%3A75%25%7D%2Ecol%2Dmd%2Dpush%2D8%7Bleft%3A66%2E66666667%25%7D%2Ecol%2Dmd%2Dpush%2D7%7Bleft%3A58%2E33333333%25%7D%2Ecol%2Dmd%2Dpush%2D6%7Bleft%3A50%25%7D%2Ecol%2Dmd%2Dpush%2D5%7Bleft%3A41%2E66666667%25%7D%2Ecol%2Dmd%2Dpush%2D4%7Bleft%3A33%2E33333333%25%7D%2Ecol%2Dmd%2Dpush%2D3%7Bleft%3A25%25%7D%2Ecol%2Dmd%2Dpush%2D2%7Bleft%3A16%2E66666667%25%7D%2Ecol%2Dmd%2Dpush%2D1%7Bleft%3A8%2E33333333%25%7D%2Ecol%2Dmd%2Dpush%2D0%7Bleft%3Aauto%7D%2Ecol%2Dmd%2Doffset%2D12%7Bmargin%2Dleft%3A100%25%7D%2Ecol%2Dmd%2Doffset%2D11%7Bmargin%2Dleft%3A91%2E66666667%25%7D%2Ecol%2Dmd%2Doffset%2D10%7Bmargin%2Dleft%3A83%2E33333333%25%7D%2Ecol%2Dmd%2Doffset%2D9%7Bmargin%2Dleft%3A75%25%7D%2Ecol%2Dmd%2Doffset%2D8%7Bmargin%2Dleft%3A66%2E66666667%25%7D%2Ecol%2Dmd%2Doffset%2D7%7Bmargin%2Dleft%3A58%2E33333333%25%7D%2Ecol%2Dmd%2Doffset%2D6%7Bmargin%2Dleft%3A50%25%7D%2Ecol%2Dmd%2Doffset%2D5%7Bmargin%2Dleft%3A41%2E66666667%25%7D%2Ecol%2Dmd%2Doffset%2D4%7Bmargin%2Dleft%3A33%2E33333333%25%7D%2Ecol%2Dmd%2Doffset%2D3%7Bmargin%2Dleft%3A25%25%7D%2Ecol%2Dmd%2Doffset%2D2%7Bmargin%2Dleft%3A16%2E66666667%25%7D%2Ecol%2Dmd%2Doffset%2D1%7Bmargin%2Dleft%3A8%2E33333333%25%7D%2Ecol%2Dmd%2Doffset%2D0%7Bmargin%2Dleft%3A0%25%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Ecol%2Dlg%2D1%2C%2Ecol%2Dlg%2D2%2C%2Ecol%2Dlg%2D3%2C%2Ecol%2Dlg%2D4%2C%2Ecol%2Dlg%2D5%2C%2Ecol%2Dlg%2D6%2C%2Ecol%2Dlg%2D7%2C%2Ecol%2Dlg%2D8%2C%2Ecol%2Dlg%2D9%2C%2Ecol%2Dlg%2D10%2C%2Ecol%2Dlg%2D11%2C%2Ecol%2Dlg%2D12%7Bfloat%3Aleft%7D%2Ecol%2Dlg%2D12%7Bwidth%3A100%25%7D%2Ecol%2Dlg%2D11%7Bwidth%3A91%2E66666667%25%7D%2Ecol%2Dlg%2D10%7Bwidth%3A83%2E33333333%25%7D%2Ecol%2Dlg%2D9%7Bwidth%3A75%25%7D%2Ecol%2Dlg%2D8%7Bwidth%3A66%2E66666667%25%7D%2Ecol%2Dlg%2D7%7Bwidth%3A58%2E33333333%25%7D%2Ecol%2Dlg%2D6%7Bwidth%3A50%25%7D%2Ecol%2Dlg%2D5%7Bwidth%3A41%2E66666667%25%7D%2Ecol%2Dlg%2D4%7Bwidth%3A33%2E33333333%25%7D%2Ecol%2Dlg%2D3%7Bwidth%3A25%25%7D%2Ecol%2Dlg%2D2%7Bwidth%3A16%2E66666667%25%7D%2Ecol%2Dlg%2D1%7Bwidth%3A8%2E33333333%25%7D%2Ecol%2Dlg%2Dpull%2D12%7Bright%3A100%25%7D%2Ecol%2Dlg%2Dpull%2D11%7Bright%3A91%2E66666667%25%7D%2Ecol%2Dlg%2Dpull%2D10%7Bright%3A83%2E33333333%25%7D%2Ecol%2Dlg%2Dpull%2D9%7Bright%3A75%25%7D%2Ecol%2Dlg%2Dpull%2D8%7Bright%3A66%2E66666667%25%7D%2Ecol%2Dlg%2Dpull%2D7%7Bright%3A58%2E33333333%25%7D%2Ecol%2Dlg%2Dpull%2D6%7Bright%3A50%25%7D%2Ecol%2Dlg%2Dpull%2D5%7Bright%3A41%2E66666667%25%7D%2Ecol%2Dlg%2Dpull%2D4%7Bright%3A33%2E33333333%25%7D%2Ecol%2Dlg%2Dpull%2D3%7Bright%3A25%25%7D%2Ecol%2Dlg%2Dpull%2D2%7Bright%3A16%2E66666667%25%7D%2Ecol%2Dlg%2Dpull%2D1%7Bright%3A8%2E33333333%25%7D%2Ecol%2Dlg%2Dpull%2D0%7Bright%3Aauto%7D%2Ecol%2Dlg%2Dpush%2D12%7Bleft%3A100%25%7D%2Ecol%2Dlg%2Dpush%2D11%7Bleft%3A91%2E66666667%25%7D%2Ecol%2Dlg%2Dpush%2D10%7Bleft%3A83%2E33333333%25%7D%2Ecol%2Dlg%2Dpush%2D9%7Bleft%3A75%25%7D%2Ecol%2Dlg%2Dpush%2D8%7Bleft%3A66%2E66666667%25%7D%2Ecol%2Dlg%2Dpush%2D7%7Bleft%3A58%2E33333333%25%7D%2Ecol%2Dlg%2Dpush%2D6%7Bleft%3A50%25%7D%2Ecol%2Dlg%2Dpush%2D5%7Bleft%3A41%2E66666667%25%7D%2Ecol%2Dlg%2Dpush%2D4%7Bleft%3A33%2E33333333%25%7D%2Ecol%2Dlg%2Dpush%2D3%7Bleft%3A25%25%7D%2Ecol%2Dlg%2Dpush%2D2%7Bleft%3A16%2E66666667%25%7D%2Ecol%2Dlg%2Dpush%2D1%7Bleft%3A8%2E33333333%25%7D%2Ecol%2Dlg%2Dpush%2D0%7Bleft%3Aauto%7D%2Ecol%2Dlg%2Doffset%2D12%7Bmargin%2Dleft%3A100%25%7D%2Ecol%2Dlg%2Doffset%2D11%7Bmargin%2Dleft%3A91%2E66666667%25%7D%2Ecol%2Dlg%2Doffset%2D10%7Bmargin%2Dleft%3A83%2E33333333%25%7D%2Ecol%2Dlg%2Doffset%2D9%7Bmargin%2Dleft%3A75%25%7D%2Ecol%2Dlg%2Doffset%2D8%7Bmargin%2Dleft%3A66%2E66666667%25%7D%2Ecol%2Dlg%2Doffset%2D7%7Bmargin%2Dleft%3A58%2E33333333%25%7D%2Ecol%2Dlg%2Doffset%2D6%7Bmargin%2Dleft%3A50%25%7D%2Ecol%2Dlg%2Doffset%2D5%7Bmargin%2Dleft%3A41%2E66666667%25%7D%2Ecol%2Dlg%2Doffset%2D4%7Bmargin%2Dleft%3A33%2E33333333%25%7D%2Ecol%2Dlg%2Doffset%2D3%7Bmargin%2Dleft%3A25%25%7D%2Ecol%2Dlg%2Doffset%2D2%7Bmargin%2Dleft%3A16%2E66666667%25%7D%2Ecol%2Dlg%2Doffset%2D1%7Bmargin%2Dleft%3A8%2E33333333%25%7D%2Ecol%2Dlg%2Doffset%2D0%7Bmargin%2Dleft%3A0%25%7D%7Dtable%7Bbackground%2Dcolor%3Atransparent%7Dcaption%7Bpadding%2Dtop%3A8px%3Bpadding%2Dbottom%3A8px%3Bcolor%3A%23999999%3Btext%2Dalign%3Aleft%7Dth%7B%7D%2Etable%7Bwidth%3A100%25%3Bmax%2Dwidth%3A100%25%3Bmargin%2Dbottom%3A20px%7D%2Etable%3Ethead%3Etr%3Eth%2C%2Etable%3Etbody%3Etr%3Eth%2C%2Etable%3Etfoot%3Etr%3Eth%2C%2Etable%3Ethead%3Etr%3Etd%2C%2Etable%3Etbody%3Etr%3Etd%2C%2Etable%3Etfoot%3Etr%3Etd%7Bpadding%3A8px%3Bline%2Dheight%3A1%2E42857143%3Bvertical%2Dalign%3Atop%3Bborder%2Dtop%3A1px%20solid%20%23eeeeee%7D%2Etable%3Ethead%3Etr%3Eth%7Bvertical%2Dalign%3Abottom%3Bborder%2Dbottom%3A2px%20solid%20%23eeeeee%7D%2Etable%3Ecaption%2Bthead%3Etr%3Afirst%2Dchild%3Eth%2C%2Etable%3Ecolgroup%2Bthead%3Etr%3Afirst%2Dchild%3Eth%2C%2Etable%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%3Eth%2C%2Etable%3Ecaption%2Bthead%3Etr%3Afirst%2Dchild%3Etd%2C%2Etable%3Ecolgroup%2Bthead%3Etr%3Afirst%2Dchild%3Etd%2C%2Etable%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%3Etd%7Bborder%2Dtop%3A0%7D%2Etable%3Etbody%2Btbody%7Bborder%2Dtop%3A2px%20solid%20%23eeeeee%7D%2Etable%20%2Etable%7Bbackground%2Dcolor%3A%23ffffff%7D%2Etable%2Dcondensed%3Ethead%3Etr%3Eth%2C%2Etable%2Dcondensed%3Etbody%3Etr%3Eth%2C%2Etable%2Dcondensed%3Etfoot%3Etr%3Eth%2C%2Etable%2Dcondensed%3Ethead%3Etr%3Etd%2C%2Etable%2Dcondensed%3Etbody%3Etr%3Etd%2C%2Etable%2Dcondensed%3Etfoot%3Etr%3Etd%7Bpadding%3A5px%7D%2Etable%2Dbordered%7Bborder%3A1px%20solid%20%23eeeeee%7D%2Etable%2Dbordered%3Ethead%3Etr%3Eth%2C%2Etable%2Dbordered%3Etbody%3Etr%3Eth%2C%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%2C%2Etable%2Dbordered%3Ethead%3Etr%3Etd%2C%2Etable%2Dbordered%3Etbody%3Etr%3Etd%2C%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%7Bborder%3A1px%20solid%20%23eeeeee%7D%2Etable%2Dbordered%3Ethead%3Etr%3Eth%2C%2Etable%2Dbordered%3Ethead%3Etr%3Etd%7Bborder%2Dbottom%2Dwidth%3A2px%7D%2Etable%2Dstriped%3Etbody%3Etr%3Anth%2Dof%2Dtype%28odd%29%7Bbackground%2Dcolor%3A%23f9f9f9%7D%2Etable%2Dhover%3Etbody%3Etr%3Ahover%7Bbackground%2Dcolor%3A%23f5f5f5%7Dtable%20col%5Bclass%2A%3D%22col%2D%22%5D%7Bposition%3Astatic%3Bfloat%3Anone%3Bdisplay%3Atable%2Dcolumn%7Dtable%20td%5Bclass%2A%3D%22col%2D%22%5D%2Ctable%20th%5Bclass%2A%3D%22col%2D%22%5D%7Bposition%3Astatic%3Bfloat%3Anone%3Bdisplay%3Atable%2Dcell%7D%2Etable%3Ethead%3Etr%3Etd%2Eactive%2C%2Etable%3Etbody%3Etr%3Etd%2Eactive%2C%2Etable%3Etfoot%3Etr%3Etd%2Eactive%2C%2Etable%3Ethead%3Etr%3Eth%2Eactive%2C%2Etable%3Etbody%3Etr%3Eth%2Eactive%2C%2Etable%3Etfoot%3Etr%3Eth%2Eactive%2C%2Etable%3Ethead%3Etr%2Eactive%3Etd%2C%2Etable%3Etbody%3Etr%2Eactive%3Etd%2C%2Etable%3Etfoot%3Etr%2Eactive%3Etd%2C%2Etable%3Ethead%3Etr%2Eactive%3Eth%2C%2Etable%3Etbody%3Etr%2Eactive%3Eth%2C%2Etable%3Etfoot%3Etr%2Eactive%3Eth%7Bbackground%2Dcolor%3A%23f5f5f5%7D%2Etable%2Dhover%3Etbody%3Etr%3Etd%2Eactive%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%3Eth%2Eactive%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%2Eactive%3Ahover%3Etd%2C%2Etable%2Dhover%3Etbody%3Etr%3Ahover%3E%2Eactive%2C%2Etable%2Dhover%3Etbody%3Etr%2Eactive%3Ahover%3Eth%7Bbackground%2Dcolor%3A%23e8e8e8%7D%2Etable%3Ethead%3Etr%3Etd%2Esuccess%2C%2Etable%3Etbody%3Etr%3Etd%2Esuccess%2C%2Etable%3Etfoot%3Etr%3Etd%2Esuccess%2C%2Etable%3Ethead%3Etr%3Eth%2Esuccess%2C%2Etable%3Etbody%3Etr%3Eth%2Esuccess%2C%2Etable%3Etfoot%3Etr%3Eth%2Esuccess%2C%2Etable%3Ethead%3Etr%2Esuccess%3Etd%2C%2Etable%3Etbody%3Etr%2Esuccess%3Etd%2C%2Etable%3Etfoot%3Etr%2Esuccess%3Etd%2C%2Etable%3Ethead%3Etr%2Esuccess%3Eth%2C%2Etable%3Etbody%3Etr%2Esuccess%3Eth%2C%2Etable%3Etfoot%3Etr%2Esuccess%3Eth%7Bbackground%2Dcolor%3A%2328b62c%7D%2Etable%2Dhover%3Etbody%3Etr%3Etd%2Esuccess%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%3Eth%2Esuccess%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%2Esuccess%3Ahover%3Etd%2C%2Etable%2Dhover%3Etbody%3Etr%3Ahover%3E%2Esuccess%2C%2Etable%2Dhover%3Etbody%3Etr%2Esuccess%3Ahover%3Eth%7Bbackground%2Dcolor%3A%2323a127%7D%2Etable%3Ethead%3Etr%3Etd%2Einfo%2C%2Etable%3Etbody%3Etr%3Etd%2Einfo%2C%2Etable%3Etfoot%3Etr%3Etd%2Einfo%2C%2Etable%3Ethead%3Etr%3Eth%2Einfo%2C%2Etable%3Etbody%3Etr%3Eth%2Einfo%2C%2Etable%3Etfoot%3Etr%3Eth%2Einfo%2C%2Etable%3Ethead%3Etr%2Einfo%3Etd%2C%2Etable%3Etbody%3Etr%2Einfo%3Etd%2C%2Etable%3Etfoot%3Etr%2Einfo%3Etd%2C%2Etable%3Ethead%3Etr%2Einfo%3Eth%2C%2Etable%3Etbody%3Etr%2Einfo%3Eth%2C%2Etable%3Etfoot%3Etr%2Einfo%3Eth%7Bbackground%2Dcolor%3A%2375caeb%7D%2Etable%2Dhover%3Etbody%3Etr%3Etd%2Einfo%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%3Eth%2Einfo%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%2Einfo%3Ahover%3Etd%2C%2Etable%2Dhover%3Etbody%3Etr%3Ahover%3E%2Einfo%2C%2Etable%2Dhover%3Etbody%3Etr%2Einfo%3Ahover%3Eth%7Bbackground%2Dcolor%3A%235fc1e8%7D%2Etable%3Ethead%3Etr%3Etd%2Ewarning%2C%2Etable%3Etbody%3Etr%3Etd%2Ewarning%2C%2Etable%3Etfoot%3Etr%3Etd%2Ewarning%2C%2Etable%3Ethead%3Etr%3Eth%2Ewarning%2C%2Etable%3Etbody%3Etr%3Eth%2Ewarning%2C%2Etable%3Etfoot%3Etr%3Eth%2Ewarning%2C%2Etable%3Ethead%3Etr%2Ewarning%3Etd%2C%2Etable%3Etbody%3Etr%2Ewarning%3Etd%2C%2Etable%3Etfoot%3Etr%2Ewarning%3Etd%2C%2Etable%3Ethead%3Etr%2Ewarning%3Eth%2C%2Etable%3Etbody%3Etr%2Ewarning%3Eth%2C%2Etable%3Etfoot%3Etr%2Ewarning%3Eth%7Bbackground%2Dcolor%3A%23ff851b%7D%2Etable%2Dhover%3Etbody%3Etr%3Etd%2Ewarning%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%3Eth%2Ewarning%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%2Ewarning%3Ahover%3Etd%2C%2Etable%2Dhover%3Etbody%3Etr%3Ahover%3E%2Ewarning%2C%2Etable%2Dhover%3Etbody%3Etr%2Ewarning%3Ahover%3Eth%7Bbackground%2Dcolor%3A%23ff7701%7D%2Etable%3Ethead%3Etr%3Etd%2Edanger%2C%2Etable%3Etbody%3Etr%3Etd%2Edanger%2C%2Etable%3Etfoot%3Etr%3Etd%2Edanger%2C%2Etable%3Ethead%3Etr%3Eth%2Edanger%2C%2Etable%3Etbody%3Etr%3Eth%2Edanger%2C%2Etable%3Etfoot%3Etr%3Eth%2Edanger%2C%2Etable%3Ethead%3Etr%2Edanger%3Etd%2C%2Etable%3Etbody%3Etr%2Edanger%3Etd%2C%2Etable%3Etfoot%3Etr%2Edanger%3Etd%2C%2Etable%3Ethead%3Etr%2Edanger%3Eth%2C%2Etable%3Etbody%3Etr%2Edanger%3Eth%2C%2Etable%3Etfoot%3Etr%2Edanger%3Eth%7Bbackground%2Dcolor%3A%23ff4136%7D%2Etable%2Dhover%3Etbody%3Etr%3Etd%2Edanger%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%3Eth%2Edanger%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%2Edanger%3Ahover%3Etd%2C%2Etable%2Dhover%3Etbody%3Etr%3Ahover%3E%2Edanger%2C%2Etable%2Dhover%3Etbody%3Etr%2Edanger%3Ahover%3Eth%7Bbackground%2Dcolor%3A%23ff291c%7D%2Etable%2Dresponsive%7Boverflow%2Dx%3Aauto%3Bmin%2Dheight%3A0%2E01%25%7D%40media%20screen%20and%20%28max%2Dwidth%3A767px%29%7B%2Etable%2Dresponsive%7Bwidth%3A100%25%3Bmargin%2Dbottom%3A15px%3Boverflow%2Dy%3Ahidden%3B%2Dms%2Doverflow%2Dstyle%3A%2Dms%2Dautohiding%2Dscrollbar%3Bborder%3A1px%20solid%20%23eeeeee%7D%2Etable%2Dresponsive%3E%2Etable%7Bmargin%2Dbottom%3A0%7D%2Etable%2Dresponsive%3E%2Etable%3Ethead%3Etr%3Eth%2C%2Etable%2Dresponsive%3E%2Etable%3Etbody%3Etr%3Eth%2C%2Etable%2Dresponsive%3E%2Etable%3Etfoot%3Etr%3Eth%2C%2Etable%2Dresponsive%3E%2Etable%3Ethead%3Etr%3Etd%2C%2Etable%2Dresponsive%3E%2Etable%3Etbody%3Etr%3Etd%2C%2Etable%2Dresponsive%3E%2Etable%3Etfoot%3Etr%3Etd%7Bwhite%2Dspace%3Anowrap%7D%2Etable%2Dresponsive%3E%2Etable%2Dbordered%7Bborder%3A0%7D%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Afirst%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Afirst%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Afirst%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Afirst%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Afirst%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Afirst%2Dchild%7Bborder%2Dleft%3A0%7D%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Alast%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Alast%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Alast%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Alast%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Alast%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Alast%2Dchild%7Bborder%2Dright%3A0%7D%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Eth%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Eth%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Etd%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Etd%7Bborder%2Dbottom%3A0%7D%7Dfieldset%7Bpadding%3A0%3Bmargin%3A0%3Bborder%3A0%3Bmin%2Dwidth%3A0%7Dlegend%7Bdisplay%3Ablock%3Bwidth%3A100%25%3Bpadding%3A0%3Bmargin%2Dbottom%3A20px%3Bfont%2Dsize%3A21px%3Bline%2Dheight%3Ainherit%3Bcolor%3A%23333333%3Bborder%3A0%3Bborder%2Dbottom%3A1px%20solid%20%23e5e5e5%7Dlabel%7Bdisplay%3Ainline%2Dblock%3Bmax%2Dwidth%3A100%25%3Bmargin%2Dbottom%3A5px%3Bfont%2Dweight%3Abold%7Dinput%5Btype%3D%22search%22%5D%7B%2Dwebkit%2Dbox%2Dsizing%3Aborder%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Aborder%2Dbox%3Bbox%2Dsizing%3Aborder%2Dbox%7Dinput%5Btype%3D%22radio%22%5D%2Cinput%5Btype%3D%22checkbox%22%5D%7Bmargin%3A4px%200%200%3Bmargin%2Dtop%3A1px%20%5C9%3Bline%2Dheight%3Anormal%7Dinput%5Btype%3D%22file%22%5D%7Bdisplay%3Ablock%7Dinput%5Btype%3D%22range%22%5D%7Bdisplay%3Ablock%3Bwidth%3A100%25%7Dselect%5Bmultiple%5D%2Cselect%5Bsize%5D%7Bheight%3Aauto%7Dinput%5Btype%3D%22file%22%5D%3Afocus%2Cinput%5Btype%3D%22radio%22%5D%3Afocus%2Cinput%5Btype%3D%22checkbox%22%5D%3Afocus%7Boutline%3Athin%20dotted%3Boutline%3A5px%20auto%20%2Dwebkit%2Dfocus%2Dring%2Dcolor%3Boutline%2Doffset%3A%2D2px%7Doutput%7Bdisplay%3Ablock%3Bpadding%2Dtop%3A8px%3Bfont%2Dsize%3A14px%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23555555%7D%2Eform%2Dcontrol%7Bdisplay%3Ablock%3Bwidth%3A100%25%3Bheight%3A38px%3Bpadding%3A7px%2012px%3Bfont%2Dsize%3A14px%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23ffffff%3Bbackground%2Dimage%3Anone%3Bborder%3A1px%20solid%20%23e7e7e7%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%3B%2Dwebkit%2Dtransition%3Aborder%2Dcolor%20ease%2Din%2Dout%20%2E15s%2C%2Dwebkit%2Dbox%2Dshadow%20ease%2Din%2Dout%20%2E15s%3B%2Do%2Dtransition%3Aborder%2Dcolor%20ease%2Din%2Dout%20%2E15s%2Cbox%2Dshadow%20ease%2Din%2Dout%20%2E15s%3Btransition%3Aborder%2Dcolor%20ease%2Din%2Dout%20%2E15s%2Cbox%2Dshadow%20ease%2Din%2Dout%20%2E15s%7D%2Eform%2Dcontrol%3Afocus%7Bborder%2Dcolor%3A%2366afe9%3Boutline%3A0%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%2C0%200%208px%20rgba%28102%2C175%2C233%2C0%2E6%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%2C0%200%208px%20rgba%28102%2C175%2C233%2C0%2E6%29%7D%2Eform%2Dcontrol%3A%3A%2Dmoz%2Dplaceholder%7Bcolor%3A%23999999%3Bopacity%3A1%7D%2Eform%2Dcontrol%3A%2Dms%2Dinput%2Dplaceholder%7Bcolor%3A%23999999%7D%2Eform%2Dcontrol%3A%3A%2Dwebkit%2Dinput%2Dplaceholder%7Bcolor%3A%23999999%7D%2Eform%2Dcontrol%3A%3A%2Dms%2Dexpand%7Bborder%3A0%3Bbackground%2Dcolor%3Atransparent%7D%2Eform%2Dcontrol%5Bdisabled%5D%2C%2Eform%2Dcontrol%5Breadonly%5D%2Cfieldset%5Bdisabled%5D%20%2Eform%2Dcontrol%7Bbackground%2Dcolor%3A%23eeeeee%3Bopacity%3A1%7D%2Eform%2Dcontrol%5Bdisabled%5D%2Cfieldset%5Bdisabled%5D%20%2Eform%2Dcontrol%7Bcursor%3Anot%2Dallowed%7Dtextarea%2Eform%2Dcontrol%7Bheight%3Aauto%7Dinput%5Btype%3D%22search%22%5D%7B%2Dwebkit%2Dappearance%3Anone%7D%40media%20screen%20and%20%28%2Dwebkit%2Dmin%2Ddevice%2Dpixel%2Dratio%3A0%29%7Binput%5Btype%3D%22date%22%5D%2Eform%2Dcontrol%2Cinput%5Btype%3D%22time%22%5D%2Eform%2Dcontrol%2Cinput%5Btype%3D%22datetime%2Dlocal%22%5D%2Eform%2Dcontrol%2Cinput%5Btype%3D%22month%22%5D%2Eform%2Dcontrol%7Bline%2Dheight%3A38px%7Dinput%5Btype%3D%22date%22%5D%2Einput%2Dsm%2Cinput%5Btype%3D%22time%22%5D%2Einput%2Dsm%2Cinput%5Btype%3D%22datetime%2Dlocal%22%5D%2Einput%2Dsm%2Cinput%5Btype%3D%22month%22%5D%2Einput%2Dsm%2C%2Einput%2Dgroup%2Dsm%20input%5Btype%3D%22date%22%5D%2C%2Einput%2Dgroup%2Dsm%20input%5Btype%3D%22time%22%5D%2C%2Einput%2Dgroup%2Dsm%20input%5Btype%3D%22datetime%2Dlocal%22%5D%2C%2Einput%2Dgroup%2Dsm%20input%5Btype%3D%22month%22%5D%7Bline%2Dheight%3A28px%7Dinput%5Btype%3D%22date%22%5D%2Einput%2Dlg%2Cinput%5Btype%3D%22time%22%5D%2Einput%2Dlg%2Cinput%5Btype%3D%22datetime%2Dlocal%22%5D%2Einput%2Dlg%2Cinput%5Btype%3D%22month%22%5D%2Einput%2Dlg%2C%2Einput%2Dgroup%2Dlg%20input%5Btype%3D%22date%22%5D%2C%2Einput%2Dgroup%2Dlg%20input%5Btype%3D%22time%22%5D%2C%2Einput%2Dgroup%2Dlg%20input%5Btype%3D%22datetime%2Dlocal%22%5D%2C%2Einput%2Dgroup%2Dlg%20input%5Btype%3D%22month%22%5D%7Bline%2Dheight%3A52px%7D%7D%2Eform%2Dgroup%7Bmargin%2Dbottom%3A15px%7D%2Eradio%2C%2Echeckbox%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bmargin%2Dtop%3A10px%3Bmargin%2Dbottom%3A10px%7D%2Eradio%20label%2C%2Echeckbox%20label%7Bmin%2Dheight%3A20px%3Bpadding%2Dleft%3A20px%3Bmargin%2Dbottom%3A0%3Bfont%2Dweight%3Anormal%3Bcursor%3Apointer%7D%2Eradio%20input%5Btype%3D%22radio%22%5D%2C%2Eradio%2Dinline%20input%5Btype%3D%22radio%22%5D%2C%2Echeckbox%20input%5Btype%3D%22checkbox%22%5D%2C%2Echeckbox%2Dinline%20input%5Btype%3D%22checkbox%22%5D%7Bposition%3Aabsolute%3Bmargin%2Dleft%3A%2D20px%3Bmargin%2Dtop%3A4px%20%5C9%7D%2Eradio%2B%2Eradio%2C%2Echeckbox%2B%2Echeckbox%7Bmargin%2Dtop%3A%2D5px%7D%2Eradio%2Dinline%2C%2Echeckbox%2Dinline%7Bposition%3Arelative%3Bdisplay%3Ainline%2Dblock%3Bpadding%2Dleft%3A20px%3Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%3Bfont%2Dweight%3Anormal%3Bcursor%3Apointer%7D%2Eradio%2Dinline%2B%2Eradio%2Dinline%2C%2Echeckbox%2Dinline%2B%2Echeckbox%2Dinline%7Bmargin%2Dtop%3A0%3Bmargin%2Dleft%3A10px%7Dinput%5Btype%3D%22radio%22%5D%5Bdisabled%5D%2Cinput%5Btype%3D%22checkbox%22%5D%5Bdisabled%5D%2Cinput%5Btype%3D%22radio%22%5D%2Edisabled%2Cinput%5Btype%3D%22checkbox%22%5D%2Edisabled%2Cfieldset%5Bdisabled%5D%20input%5Btype%3D%22radio%22%5D%2Cfieldset%5Bdisabled%5D%20input%5Btype%3D%22checkbox%22%5D%7Bcursor%3Anot%2Dallowed%7D%2Eradio%2Dinline%2Edisabled%2C%2Echeckbox%2Dinline%2Edisabled%2Cfieldset%5Bdisabled%5D%20%2Eradio%2Dinline%2Cfieldset%5Bdisabled%5D%20%2Echeckbox%2Dinline%7Bcursor%3Anot%2Dallowed%7D%2Eradio%2Edisabled%20label%2C%2Echeckbox%2Edisabled%20label%2Cfieldset%5Bdisabled%5D%20%2Eradio%20label%2Cfieldset%5Bdisabled%5D%20%2Echeckbox%20label%7Bcursor%3Anot%2Dallowed%7D%2Eform%2Dcontrol%2Dstatic%7Bpadding%2Dtop%3A8px%3Bpadding%2Dbottom%3A8px%3Bmargin%2Dbottom%3A0%3Bmin%2Dheight%3A34px%7D%2Eform%2Dcontrol%2Dstatic%2Einput%2Dlg%2C%2Eform%2Dcontrol%2Dstatic%2Einput%2Dsm%7Bpadding%2Dleft%3A0%3Bpadding%2Dright%3A0%7D%2Einput%2Dsm%7Bheight%3A28px%3Bpadding%3A4px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%3Bborder%2Dradius%3A2px%7Dselect%2Einput%2Dsm%7Bheight%3A28px%3Bline%2Dheight%3A28px%7Dtextarea%2Einput%2Dsm%2Cselect%5Bmultiple%5D%2Einput%2Dsm%7Bheight%3Aauto%7D%2Eform%2Dgroup%2Dsm%20%2Eform%2Dcontrol%7Bheight%3A28px%3Bpadding%3A4px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%3Bborder%2Dradius%3A2px%7D%2Eform%2Dgroup%2Dsm%20select%2Eform%2Dcontrol%7Bheight%3A28px%3Bline%2Dheight%3A28px%7D%2Eform%2Dgroup%2Dsm%20textarea%2Eform%2Dcontrol%2C%2Eform%2Dgroup%2Dsm%20select%5Bmultiple%5D%2Eform%2Dcontrol%7Bheight%3Aauto%7D%2Eform%2Dgroup%2Dsm%20%2Eform%2Dcontrol%2Dstatic%7Bheight%3A28px%3Bmin%2Dheight%3A32px%3Bpadding%3A5px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%7D%2Einput%2Dlg%7Bheight%3A52px%3Bpadding%3A13px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%3Bborder%2Dradius%3A5px%7Dselect%2Einput%2Dlg%7Bheight%3A52px%3Bline%2Dheight%3A52px%7Dtextarea%2Einput%2Dlg%2Cselect%5Bmultiple%5D%2Einput%2Dlg%7Bheight%3Aauto%7D%2Eform%2Dgroup%2Dlg%20%2Eform%2Dcontrol%7Bheight%3A52px%3Bpadding%3A13px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%3Bborder%2Dradius%3A5px%7D%2Eform%2Dgroup%2Dlg%20select%2Eform%2Dcontrol%7Bheight%3A52px%3Bline%2Dheight%3A52px%7D%2Eform%2Dgroup%2Dlg%20textarea%2Eform%2Dcontrol%2C%2Eform%2Dgroup%2Dlg%20select%5Bmultiple%5D%2Eform%2Dcontrol%7Bheight%3Aauto%7D%2Eform%2Dgroup%2Dlg%20%2Eform%2Dcontrol%2Dstatic%7Bheight%3A52px%3Bmin%2Dheight%3A38px%3Bpadding%3A14px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%7D%2Ehas%2Dfeedback%7Bposition%3Arelative%7D%2Ehas%2Dfeedback%20%2Eform%2Dcontrol%7Bpadding%2Dright%3A47%2E5px%7D%2Eform%2Dcontrol%2Dfeedback%7Bposition%3Aabsolute%3Btop%3A0%3Bright%3A0%3Bz%2Dindex%3A2%3Bdisplay%3Ablock%3Bwidth%3A38px%3Bheight%3A38px%3Bline%2Dheight%3A38px%3Btext%2Dalign%3Acenter%3Bpointer%2Devents%3Anone%7D%2Einput%2Dlg%2B%2Eform%2Dcontrol%2Dfeedback%2C%2Einput%2Dgroup%2Dlg%2B%2Eform%2Dcontrol%2Dfeedback%2C%2Eform%2Dgroup%2Dlg%20%2Eform%2Dcontrol%2B%2Eform%2Dcontrol%2Dfeedback%7Bwidth%3A52px%3Bheight%3A52px%3Bline%2Dheight%3A52px%7D%2Einput%2Dsm%2B%2Eform%2Dcontrol%2Dfeedback%2C%2Einput%2Dgroup%2Dsm%2B%2Eform%2Dcontrol%2Dfeedback%2C%2Eform%2Dgroup%2Dsm%20%2Eform%2Dcontrol%2B%2Eform%2Dcontrol%2Dfeedback%7Bwidth%3A28px%3Bheight%3A28px%3Bline%2Dheight%3A28px%7D%2Ehas%2Dsuccess%20%2Ehelp%2Dblock%2C%2Ehas%2Dsuccess%20%2Econtrol%2Dlabel%2C%2Ehas%2Dsuccess%20%2Eradio%2C%2Ehas%2Dsuccess%20%2Echeckbox%2C%2Ehas%2Dsuccess%20%2Eradio%2Dinline%2C%2Ehas%2Dsuccess%20%2Echeckbox%2Dinline%2C%2Ehas%2Dsuccess%2Eradio%20label%2C%2Ehas%2Dsuccess%2Echeckbox%20label%2C%2Ehas%2Dsuccess%2Eradio%2Dinline%20label%2C%2Ehas%2Dsuccess%2Echeckbox%2Dinline%20label%7Bcolor%3A%23ffffff%7D%2Ehas%2Dsuccess%20%2Eform%2Dcontrol%7Bborder%2Dcolor%3A%23ffffff%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%7D%2Ehas%2Dsuccess%20%2Eform%2Dcontrol%3Afocus%7Bborder%2Dcolor%3A%23e6e6e6%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%2C0%200%206px%20%23fff%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%2C0%200%206px%20%23fff%7D%2Ehas%2Dsuccess%20%2Einput%2Dgroup%2Daddon%7Bcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2328b62c%7D%2Ehas%2Dsuccess%20%2Eform%2Dcontrol%2Dfeedback%7Bcolor%3A%23ffffff%7D%2Ehas%2Dwarning%20%2Ehelp%2Dblock%2C%2Ehas%2Dwarning%20%2Econtrol%2Dlabel%2C%2Ehas%2Dwarning%20%2Eradio%2C%2Ehas%2Dwarning%20%2Echeckbox%2C%2Ehas%2Dwarning%20%2Eradio%2Dinline%2C%2Ehas%2Dwarning%20%2Echeckbox%2Dinline%2C%2Ehas%2Dwarning%2Eradio%20label%2C%2Ehas%2Dwarning%2Echeckbox%20label%2C%2Ehas%2Dwarning%2Eradio%2Dinline%20label%2C%2Ehas%2Dwarning%2Echeckbox%2Dinline%20label%7Bcolor%3A%23ffffff%7D%2Ehas%2Dwarning%20%2Eform%2Dcontrol%7Bborder%2Dcolor%3A%23ffffff%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%7D%2Ehas%2Dwarning%20%2Eform%2Dcontrol%3Afocus%7Bborder%2Dcolor%3A%23e6e6e6%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%2C0%200%206px%20%23fff%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%2C0%200%206px%20%23fff%7D%2Ehas%2Dwarning%20%2Einput%2Dgroup%2Daddon%7Bcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff851b%7D%2Ehas%2Dwarning%20%2Eform%2Dcontrol%2Dfeedback%7Bcolor%3A%23ffffff%7D%2Ehas%2Derror%20%2Ehelp%2Dblock%2C%2Ehas%2Derror%20%2Econtrol%2Dlabel%2C%2Ehas%2Derror%20%2Eradio%2C%2Ehas%2Derror%20%2Echeckbox%2C%2Ehas%2Derror%20%2Eradio%2Dinline%2C%2Ehas%2Derror%20%2Echeckbox%2Dinline%2C%2Ehas%2Derror%2Eradio%20label%2C%2Ehas%2Derror%2Echeckbox%20label%2C%2Ehas%2Derror%2Eradio%2Dinline%20label%2C%2Ehas%2Derror%2Echeckbox%2Dinline%20label%7Bcolor%3A%23ffffff%7D%2Ehas%2Derror%20%2Eform%2Dcontrol%7Bborder%2Dcolor%3A%23ffffff%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%7D%2Ehas%2Derror%20%2Eform%2Dcontrol%3Afocus%7Bborder%2Dcolor%3A%23e6e6e6%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%2C0%200%206px%20%23fff%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%2C0%200%206px%20%23fff%7D%2Ehas%2Derror%20%2Einput%2Dgroup%2Daddon%7Bcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff4136%7D%2Ehas%2Derror%20%2Eform%2Dcontrol%2Dfeedback%7Bcolor%3A%23ffffff%7D%2Ehas%2Dfeedback%20label%7E%2Eform%2Dcontrol%2Dfeedback%7Btop%3A25px%7D%2Ehas%2Dfeedback%20label%2Esr%2Donly%7E%2Eform%2Dcontrol%2Dfeedback%7Btop%3A0%7D%2Ehelp%2Dblock%7Bdisplay%3Ablock%3Bmargin%2Dtop%3A5px%3Bmargin%2Dbottom%3A10px%3Bcolor%3A%23959595%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Eform%2Dinline%20%2Eform%2Dgroup%7Bdisplay%3Ainline%2Dblock%3Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Eform%2Dinline%20%2Eform%2Dcontrol%7Bdisplay%3Ainline%2Dblock%3Bwidth%3Aauto%3Bvertical%2Dalign%3Amiddle%7D%2Eform%2Dinline%20%2Eform%2Dcontrol%2Dstatic%7Bdisplay%3Ainline%2Dblock%7D%2Eform%2Dinline%20%2Einput%2Dgroup%7Bdisplay%3Ainline%2Dtable%3Bvertical%2Dalign%3Amiddle%7D%2Eform%2Dinline%20%2Einput%2Dgroup%20%2Einput%2Dgroup%2Daddon%2C%2Eform%2Dinline%20%2Einput%2Dgroup%20%2Einput%2Dgroup%2Dbtn%2C%2Eform%2Dinline%20%2Einput%2Dgroup%20%2Eform%2Dcontrol%7Bwidth%3Aauto%7D%2Eform%2Dinline%20%2Einput%2Dgroup%3E%2Eform%2Dcontrol%7Bwidth%3A100%25%7D%2Eform%2Dinline%20%2Econtrol%2Dlabel%7Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Eform%2Dinline%20%2Eradio%2C%2Eform%2Dinline%20%2Echeckbox%7Bdisplay%3Ainline%2Dblock%3Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Eform%2Dinline%20%2Eradio%20label%2C%2Eform%2Dinline%20%2Echeckbox%20label%7Bpadding%2Dleft%3A0%7D%2Eform%2Dinline%20%2Eradio%20input%5Btype%3D%22radio%22%5D%2C%2Eform%2Dinline%20%2Echeckbox%20input%5Btype%3D%22checkbox%22%5D%7Bposition%3Arelative%3Bmargin%2Dleft%3A0%7D%2Eform%2Dinline%20%2Ehas%2Dfeedback%20%2Eform%2Dcontrol%2Dfeedback%7Btop%3A0%7D%7D%2Eform%2Dhorizontal%20%2Eradio%2C%2Eform%2Dhorizontal%20%2Echeckbox%2C%2Eform%2Dhorizontal%20%2Eradio%2Dinline%2C%2Eform%2Dhorizontal%20%2Echeckbox%2Dinline%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A0%3Bpadding%2Dtop%3A8px%7D%2Eform%2Dhorizontal%20%2Eradio%2C%2Eform%2Dhorizontal%20%2Echeckbox%7Bmin%2Dheight%3A28px%7D%2Eform%2Dhorizontal%20%2Eform%2Dgroup%7Bmargin%2Dleft%3A%2D15px%3Bmargin%2Dright%3A%2D15px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Eform%2Dhorizontal%20%2Econtrol%2Dlabel%7Btext%2Dalign%3Aright%3Bmargin%2Dbottom%3A0%3Bpadding%2Dtop%3A8px%7D%7D%2Eform%2Dhorizontal%20%2Ehas%2Dfeedback%20%2Eform%2Dcontrol%2Dfeedback%7Bright%3A15px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Eform%2Dhorizontal%20%2Eform%2Dgroup%2Dlg%20%2Econtrol%2Dlabel%7Bpadding%2Dtop%3A14px%3Bfont%2Dsize%3A18px%7D%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Eform%2Dhorizontal%20%2Eform%2Dgroup%2Dsm%20%2Econtrol%2Dlabel%7Bpadding%2Dtop%3A5px%3Bfont%2Dsize%3A12px%7D%7D%2Ebtn%7Bdisplay%3Ainline%2Dblock%3Bmargin%2Dbottom%3A0%3Bfont%2Dweight%3Anormal%3Btext%2Dalign%3Acenter%3Bvertical%2Dalign%3Amiddle%3B%2Dms%2Dtouch%2Daction%3Amanipulation%3Btouch%2Daction%3Amanipulation%3Bcursor%3Apointer%3Bbackground%2Dimage%3Anone%3Bborder%3A1px%20solid%20transparent%3Bwhite%2Dspace%3Anowrap%3Bpadding%3A7px%2012px%3Bfont%2Dsize%3A14px%3Bline%2Dheight%3A1%2E42857143%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Duser%2Dselect%3Anone%3B%2Dmoz%2Duser%2Dselect%3Anone%3B%2Dms%2Duser%2Dselect%3Anone%3Buser%2Dselect%3Anone%7D%2Ebtn%3Afocus%2C%2Ebtn%3Aactive%3Afocus%2C%2Ebtn%2Eactive%3Afocus%2C%2Ebtn%2Efocus%2C%2Ebtn%3Aactive%2Efocus%2C%2Ebtn%2Eactive%2Efocus%7Boutline%3Athin%20dotted%3Boutline%3A5px%20auto%20%2Dwebkit%2Dfocus%2Dring%2Dcolor%3Boutline%2Doffset%3A%2D2px%7D%2Ebtn%3Ahover%2C%2Ebtn%3Afocus%2C%2Ebtn%2Efocus%7Bcolor%3A%23555555%3Btext%2Ddecoration%3Anone%7D%2Ebtn%3Aactive%2C%2Ebtn%2Eactive%7Boutline%3A0%3Bbackground%2Dimage%3Anone%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%203px%205px%20rgba%280%2C0%2C0%2C0%2E125%29%3Bbox%2Dshadow%3Ainset%200%203px%205px%20rgba%280%2C0%2C0%2C0%2E125%29%7D%2Ebtn%2Edisabled%2C%2Ebtn%5Bdisabled%5D%2Cfieldset%5Bdisabled%5D%20%2Ebtn%7Bcursor%3Anot%2Dallowed%3Bopacity%3A0%2E65%3Bfilter%3Aalpha%28opacity%3D65%29%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7Da%2Ebtn%2Edisabled%2Cfieldset%5Bdisabled%5D%20a%2Ebtn%7Bpointer%2Devents%3Anone%7D%2Ebtn%2Ddefault%7Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23eeeeee%3Bborder%2Dcolor%3A%23e2e2e2%7D%2Ebtn%2Ddefault%3Afocus%2C%2Ebtn%2Ddefault%2Efocus%7Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23d5d5d5%3Bborder%2Dcolor%3A%23a2a2a2%7D%2Ebtn%2Ddefault%3Ahover%7Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23d5d5d5%3Bborder%2Dcolor%3A%23c3c3c3%7D%2Ebtn%2Ddefault%3Aactive%2C%2Ebtn%2Ddefault%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%7Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23d5d5d5%3Bborder%2Dcolor%3A%23c3c3c3%7D%2Ebtn%2Ddefault%3Aactive%3Ahover%2C%2Ebtn%2Ddefault%2Eactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%3Ahover%2C%2Ebtn%2Ddefault%3Aactive%3Afocus%2C%2Ebtn%2Ddefault%2Eactive%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%3Afocus%2C%2Ebtn%2Ddefault%3Aactive%2Efocus%2C%2Ebtn%2Ddefault%2Eactive%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%2Efocus%7Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23c3c3c3%3Bborder%2Dcolor%3A%23a2a2a2%7D%2Ebtn%2Ddefault%3Aactive%2C%2Ebtn%2Ddefault%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Ddefault%2Edisabled%3Ahover%2C%2Ebtn%2Ddefault%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddefault%3Ahover%2C%2Ebtn%2Ddefault%2Edisabled%3Afocus%2C%2Ebtn%2Ddefault%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddefault%3Afocus%2C%2Ebtn%2Ddefault%2Edisabled%2Efocus%2C%2Ebtn%2Ddefault%5Bdisabled%5D%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddefault%2Efocus%7Bbackground%2Dcolor%3A%23eeeeee%3Bborder%2Dcolor%3A%23e2e2e2%7D%2Ebtn%2Ddefault%20%2Ebadge%7Bcolor%3A%23eeeeee%3Bbackground%2Dcolor%3A%23555555%7D%2Ebtn%2Dprimary%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23158cba%3Bborder%2Dcolor%3A%23127ba3%7D%2Ebtn%2Dprimary%3Afocus%2C%2Ebtn%2Dprimary%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23106a8c%3Bborder%2Dcolor%3A%23052531%7D%2Ebtn%2Dprimary%3Ahover%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23106a8c%3Bborder%2Dcolor%3A%230c516c%7D%2Ebtn%2Dprimary%3Aactive%2C%2Ebtn%2Dprimary%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23106a8c%3Bborder%2Dcolor%3A%230c516c%7D%2Ebtn%2Dprimary%3Aactive%3Ahover%2C%2Ebtn%2Dprimary%2Eactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%3Ahover%2C%2Ebtn%2Dprimary%3Aactive%3Afocus%2C%2Ebtn%2Dprimary%2Eactive%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%3Afocus%2C%2Ebtn%2Dprimary%3Aactive%2Efocus%2C%2Ebtn%2Dprimary%2Eactive%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%230c516c%3Bborder%2Dcolor%3A%23052531%7D%2Ebtn%2Dprimary%3Aactive%2C%2Ebtn%2Dprimary%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Dprimary%2Edisabled%3Ahover%2C%2Ebtn%2Dprimary%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dprimary%3Ahover%2C%2Ebtn%2Dprimary%2Edisabled%3Afocus%2C%2Ebtn%2Dprimary%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dprimary%3Afocus%2C%2Ebtn%2Dprimary%2Edisabled%2Efocus%2C%2Ebtn%2Dprimary%5Bdisabled%5D%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dprimary%2Efocus%7Bbackground%2Dcolor%3A%23158cba%3Bborder%2Dcolor%3A%23127ba3%7D%2Ebtn%2Dprimary%20%2Ebadge%7Bcolor%3A%23158cba%3Bbackground%2Dcolor%3A%23ffffff%7D%2Ebtn%2Dsuccess%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2328b62c%3Bborder%2Dcolor%3A%2323a127%7D%2Ebtn%2Dsuccess%3Afocus%2C%2Ebtn%2Dsuccess%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%231f8c22%3Bborder%2Dcolor%3A%230c390e%7D%2Ebtn%2Dsuccess%3Ahover%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%231f8c22%3Bborder%2Dcolor%3A%23186f1b%7D%2Ebtn%2Dsuccess%3Aactive%2C%2Ebtn%2Dsuccess%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%231f8c22%3Bborder%2Dcolor%3A%23186f1b%7D%2Ebtn%2Dsuccess%3Aactive%3Ahover%2C%2Ebtn%2Dsuccess%2Eactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%3Ahover%2C%2Ebtn%2Dsuccess%3Aactive%3Afocus%2C%2Ebtn%2Dsuccess%2Eactive%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%3Afocus%2C%2Ebtn%2Dsuccess%3Aactive%2Efocus%2C%2Ebtn%2Dsuccess%2Eactive%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23186f1b%3Bborder%2Dcolor%3A%230c390e%7D%2Ebtn%2Dsuccess%3Aactive%2C%2Ebtn%2Dsuccess%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Dsuccess%2Edisabled%3Ahover%2C%2Ebtn%2Dsuccess%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dsuccess%3Ahover%2C%2Ebtn%2Dsuccess%2Edisabled%3Afocus%2C%2Ebtn%2Dsuccess%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dsuccess%3Afocus%2C%2Ebtn%2Dsuccess%2Edisabled%2Efocus%2C%2Ebtn%2Dsuccess%5Bdisabled%5D%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dsuccess%2Efocus%7Bbackground%2Dcolor%3A%2328b62c%3Bborder%2Dcolor%3A%2323a127%7D%2Ebtn%2Dsuccess%20%2Ebadge%7Bcolor%3A%2328b62c%3Bbackground%2Dcolor%3A%23ffffff%7D%2Ebtn%2Dinfo%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2375caeb%3Bborder%2Dcolor%3A%235fc1e8%7D%2Ebtn%2Dinfo%3Afocus%2C%2Ebtn%2Dinfo%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2348b9e5%3Bborder%2Dcolor%3A%231984ae%7D%2Ebtn%2Dinfo%3Ahover%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2348b9e5%3Bborder%2Dcolor%3A%2329ade0%7D%2Ebtn%2Dinfo%3Aactive%2C%2Ebtn%2Dinfo%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2348b9e5%3Bborder%2Dcolor%3A%2329ade0%7D%2Ebtn%2Dinfo%3Aactive%3Ahover%2C%2Ebtn%2Dinfo%2Eactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%3Ahover%2C%2Ebtn%2Dinfo%3Aactive%3Afocus%2C%2Ebtn%2Dinfo%2Eactive%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%3Afocus%2C%2Ebtn%2Dinfo%3Aactive%2Efocus%2C%2Ebtn%2Dinfo%2Eactive%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2329ade0%3Bborder%2Dcolor%3A%231984ae%7D%2Ebtn%2Dinfo%3Aactive%2C%2Ebtn%2Dinfo%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Dinfo%2Edisabled%3Ahover%2C%2Ebtn%2Dinfo%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dinfo%3Ahover%2C%2Ebtn%2Dinfo%2Edisabled%3Afocus%2C%2Ebtn%2Dinfo%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dinfo%3Afocus%2C%2Ebtn%2Dinfo%2Edisabled%2Efocus%2C%2Ebtn%2Dinfo%5Bdisabled%5D%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dinfo%2Efocus%7Bbackground%2Dcolor%3A%2375caeb%3Bborder%2Dcolor%3A%235fc1e8%7D%2Ebtn%2Dinfo%20%2Ebadge%7Bcolor%3A%2375caeb%3Bbackground%2Dcolor%3A%23ffffff%7D%2Ebtn%2Dwarning%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff851b%3Bborder%2Dcolor%3A%23ff7701%7D%2Ebtn%2Dwarning%3Afocus%2C%2Ebtn%2Dwarning%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23e76b00%3Bborder%2Dcolor%3A%23813c00%7D%2Ebtn%2Dwarning%3Ahover%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23e76b00%3Bborder%2Dcolor%3A%23c35b00%7D%2Ebtn%2Dwarning%3Aactive%2C%2Ebtn%2Dwarning%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23e76b00%3Bborder%2Dcolor%3A%23c35b00%7D%2Ebtn%2Dwarning%3Aactive%3Ahover%2C%2Ebtn%2Dwarning%2Eactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%3Ahover%2C%2Ebtn%2Dwarning%3Aactive%3Afocus%2C%2Ebtn%2Dwarning%2Eactive%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%3Afocus%2C%2Ebtn%2Dwarning%3Aactive%2Efocus%2C%2Ebtn%2Dwarning%2Eactive%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23c35b00%3Bborder%2Dcolor%3A%23813c00%7D%2Ebtn%2Dwarning%3Aactive%2C%2Ebtn%2Dwarning%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Dwarning%2Edisabled%3Ahover%2C%2Ebtn%2Dwarning%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dwarning%3Ahover%2C%2Ebtn%2Dwarning%2Edisabled%3Afocus%2C%2Ebtn%2Dwarning%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dwarning%3Afocus%2C%2Ebtn%2Dwarning%2Edisabled%2Efocus%2C%2Ebtn%2Dwarning%5Bdisabled%5D%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dwarning%2Efocus%7Bbackground%2Dcolor%3A%23ff851b%3Bborder%2Dcolor%3A%23ff7701%7D%2Ebtn%2Dwarning%20%2Ebadge%7Bcolor%3A%23ff851b%3Bbackground%2Dcolor%3A%23ffffff%7D%2Ebtn%2Ddanger%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff4136%3Bborder%2Dcolor%3A%23ff291c%7D%2Ebtn%2Ddanger%3Afocus%2C%2Ebtn%2Ddanger%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff1103%3Bborder%2Dcolor%3A%239c0900%7D%2Ebtn%2Ddanger%3Ahover%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff1103%3Bborder%2Dcolor%3A%23de0c00%7D%2Ebtn%2Ddanger%3Aactive%2C%2Ebtn%2Ddanger%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff1103%3Bborder%2Dcolor%3A%23de0c00%7D%2Ebtn%2Ddanger%3Aactive%3Ahover%2C%2Ebtn%2Ddanger%2Eactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%3Ahover%2C%2Ebtn%2Ddanger%3Aactive%3Afocus%2C%2Ebtn%2Ddanger%2Eactive%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%3Afocus%2C%2Ebtn%2Ddanger%3Aactive%2Efocus%2C%2Ebtn%2Ddanger%2Eactive%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23de0c00%3Bborder%2Dcolor%3A%239c0900%7D%2Ebtn%2Ddanger%3Aactive%2C%2Ebtn%2Ddanger%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Ddanger%2Edisabled%3Ahover%2C%2Ebtn%2Ddanger%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddanger%3Ahover%2C%2Ebtn%2Ddanger%2Edisabled%3Afocus%2C%2Ebtn%2Ddanger%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddanger%3Afocus%2C%2Ebtn%2Ddanger%2Edisabled%2Efocus%2C%2Ebtn%2Ddanger%5Bdisabled%5D%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddanger%2Efocus%7Bbackground%2Dcolor%3A%23ff4136%3Bborder%2Dcolor%3A%23ff291c%7D%2Ebtn%2Ddanger%20%2Ebadge%7Bcolor%3A%23ff4136%3Bbackground%2Dcolor%3A%23ffffff%7D%2Ebtn%2Dlink%7Bcolor%3A%23158cba%3Bfont%2Dweight%3Anormal%3Bborder%2Dradius%3A0%7D%2Ebtn%2Dlink%2C%2Ebtn%2Dlink%3Aactive%2C%2Ebtn%2Dlink%2Eactive%2C%2Ebtn%2Dlink%5Bdisabled%5D%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dlink%7Bbackground%2Dcolor%3Atransparent%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Ebtn%2Dlink%2C%2Ebtn%2Dlink%3Ahover%2C%2Ebtn%2Dlink%3Afocus%2C%2Ebtn%2Dlink%3Aactive%7Bborder%2Dcolor%3Atransparent%7D%2Ebtn%2Dlink%3Ahover%2C%2Ebtn%2Dlink%3Afocus%7Bcolor%3A%23158cba%3Btext%2Ddecoration%3Aunderline%3Bbackground%2Dcolor%3Atransparent%7D%2Ebtn%2Dlink%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dlink%3Ahover%2C%2Ebtn%2Dlink%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dlink%3Afocus%7Bcolor%3A%23999999%3Btext%2Ddecoration%3Anone%7D%2Ebtn%2Dlg%2C%2Ebtn%2Dgroup%2Dlg%3E%2Ebtn%7Bpadding%3A13px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%3Bborder%2Dradius%3A5px%7D%2Ebtn%2Dsm%2C%2Ebtn%2Dgroup%2Dsm%3E%2Ebtn%7Bpadding%3A4px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%3Bborder%2Dradius%3A2px%7D%2Ebtn%2Dxs%2C%2Ebtn%2Dgroup%2Dxs%3E%2Ebtn%7Bpadding%3A1px%205px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%3Bborder%2Dradius%3A2px%7D%2Ebtn%2Dblock%7Bdisplay%3Ablock%3Bwidth%3A100%25%7D%2Ebtn%2Dblock%2B%2Ebtn%2Dblock%7Bmargin%2Dtop%3A5px%7Dinput%5Btype%3D%22submit%22%5D%2Ebtn%2Dblock%2Cinput%5Btype%3D%22reset%22%5D%2Ebtn%2Dblock%2Cinput%5Btype%3D%22button%22%5D%2Ebtn%2Dblock%7Bwidth%3A100%25%7D%2Efade%7Bopacity%3A0%3B%2Dwebkit%2Dtransition%3Aopacity%200%2E15s%20linear%3B%2Do%2Dtransition%3Aopacity%200%2E15s%20linear%3Btransition%3Aopacity%200%2E15s%20linear%7D%2Efade%2Ein%7Bopacity%3A1%7D%2Ecollapse%7Bdisplay%3Anone%7D%2Ecollapse%2Ein%7Bdisplay%3Ablock%7Dtr%2Ecollapse%2Ein%7Bdisplay%3Atable%2Drow%7Dtbody%2Ecollapse%2Ein%7Bdisplay%3Atable%2Drow%2Dgroup%7D%2Ecollapsing%7Bposition%3Arelative%3Bheight%3A0%3Boverflow%3Ahidden%3B%2Dwebkit%2Dtransition%2Dproperty%3Aheight%2C%20visibility%3B%2Do%2Dtransition%2Dproperty%3Aheight%2C%20visibility%3Btransition%2Dproperty%3Aheight%2C%20visibility%3B%2Dwebkit%2Dtransition%2Dduration%3A0%2E35s%3B%2Do%2Dtransition%2Dduration%3A0%2E35s%3Btransition%2Dduration%3A0%2E35s%3B%2Dwebkit%2Dtransition%2Dtiming%2Dfunction%3Aease%3B%2Do%2Dtransition%2Dtiming%2Dfunction%3Aease%3Btransition%2Dtiming%2Dfunction%3Aease%7D%2Ecaret%7Bdisplay%3Ainline%2Dblock%3Bwidth%3A0%3Bheight%3A0%3Bmargin%2Dleft%3A2px%3Bvertical%2Dalign%3Amiddle%3Bborder%2Dtop%3A4px%20dashed%3Bborder%2Dtop%3A4px%20solid%20%5C9%3Bborder%2Dright%3A4px%20solid%20transparent%3Bborder%2Dleft%3A4px%20solid%20transparent%7D%2Edropup%2C%2Edropdown%7Bposition%3Arelative%7D%2Edropdown%2Dtoggle%3Afocus%7Boutline%3A0%7D%2Edropdown%2Dmenu%7Bposition%3Aabsolute%3Btop%3A100%25%3Bleft%3A0%3Bz%2Dindex%3A1000%3Bdisplay%3Anone%3Bfloat%3Aleft%3Bmin%2Dwidth%3A160px%3Bpadding%3A5px%200%3Bmargin%3A2px%200%200%3Blist%2Dstyle%3Anone%3Bfont%2Dsize%3A14px%3Btext%2Dalign%3Aleft%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%3A1px%20solid%20%23cccccc%3Bborder%3A1px%20solid%20%23e7e7e7%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dbox%2Dshadow%3A0%206px%2012px%20rgba%280%2C0%2C0%2C0%2E175%29%3Bbox%2Dshadow%3A0%206px%2012px%20rgba%280%2C0%2C0%2C0%2E175%29%3B%2Dwebkit%2Dbackground%2Dclip%3Apadding%2Dbox%3Bbackground%2Dclip%3Apadding%2Dbox%7D%2Edropdown%2Dmenu%2Epull%2Dright%7Bright%3A0%3Bleft%3Aauto%7D%2Edropdown%2Dmenu%20%2Edivider%7Bheight%3A1px%3Bmargin%3A9px%200%3Boverflow%3Ahidden%3Bbackground%2Dcolor%3A%23eeeeee%7D%2Edropdown%2Dmenu%3Eli%3Ea%7Bdisplay%3Ablock%3Bpadding%3A3px%2020px%3Bclear%3Aboth%3Bfont%2Dweight%3Anormal%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23999999%3Bwhite%2Dspace%3Anowrap%7D%2Edropdown%2Dmenu%3Eli%3Ea%3Ahover%2C%2Edropdown%2Dmenu%3Eli%3Ea%3Afocus%7Btext%2Ddecoration%3Anone%3Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Edropdown%2Dmenu%3E%2Eactive%3Ea%2C%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Ahover%2C%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Afocus%7Bcolor%3A%23ffffff%3Btext%2Ddecoration%3Anone%3Boutline%3A0%3Bbackground%2Dcolor%3A%23158cba%7D%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%2C%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Ahover%2C%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Afocus%7Bcolor%3A%23eeeeee%7D%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Ahover%2C%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Afocus%7Btext%2Ddecoration%3Anone%3Bbackground%2Dcolor%3Atransparent%3Bbackground%2Dimage%3Anone%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28enabled%3Dfalse%29%3Bcursor%3Anot%2Dallowed%7D%2Eopen%3E%2Edropdown%2Dmenu%7Bdisplay%3Ablock%7D%2Eopen%3Ea%7Boutline%3A0%7D%2Edropdown%2Dmenu%2Dright%7Bleft%3Aauto%3Bright%3A0%7D%2Edropdown%2Dmenu%2Dleft%7Bleft%3A0%3Bright%3Aauto%7D%2Edropdown%2Dheader%7Bdisplay%3Ablock%3Bpadding%3A3px%2020px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23999999%3Bwhite%2Dspace%3Anowrap%7D%2Edropdown%2Dbackdrop%7Bposition%3Afixed%3Bleft%3A0%3Bright%3A0%3Bbottom%3A0%3Btop%3A0%3Bz%2Dindex%3A990%7D%2Epull%2Dright%3E%2Edropdown%2Dmenu%7Bright%3A0%3Bleft%3Aauto%7D%2Edropup%20%2Ecaret%2C%2Enavbar%2Dfixed%2Dbottom%20%2Edropdown%20%2Ecaret%7Bborder%2Dtop%3A0%3Bborder%2Dbottom%3A4px%20dashed%3Bborder%2Dbottom%3A4px%20solid%20%5C9%3Bcontent%3A%22%22%7D%2Edropup%20%2Edropdown%2Dmenu%2C%2Enavbar%2Dfixed%2Dbottom%20%2Edropdown%20%2Edropdown%2Dmenu%7Btop%3Aauto%3Bbottom%3A100%25%3Bmargin%2Dbottom%3A2px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dright%20%2Edropdown%2Dmenu%7Bleft%3Aauto%3Bright%3A0%7D%2Enavbar%2Dright%20%2Edropdown%2Dmenu%2Dleft%7Bleft%3A0%3Bright%3Aauto%7D%7D%2Ebtn%2Dgroup%2C%2Ebtn%2Dgroup%2Dvertical%7Bposition%3Arelative%3Bdisplay%3Ainline%2Dblock%3Bvertical%2Dalign%3Amiddle%7D%2Ebtn%2Dgroup%3E%2Ebtn%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%7Bposition%3Arelative%3Bfloat%3Aleft%7D%2Ebtn%2Dgroup%3E%2Ebtn%3Ahover%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Ahover%2C%2Ebtn%2Dgroup%3E%2Ebtn%3Afocus%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Afocus%2C%2Ebtn%2Dgroup%3E%2Ebtn%3Aactive%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Aactive%2C%2Ebtn%2Dgroup%3E%2Ebtn%2Eactive%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Eactive%7Bz%2Dindex%3A2%7D%2Ebtn%2Dgroup%20%2Ebtn%2B%2Ebtn%2C%2Ebtn%2Dgroup%20%2Ebtn%2B%2Ebtn%2Dgroup%2C%2Ebtn%2Dgroup%20%2Ebtn%2Dgroup%2B%2Ebtn%2C%2Ebtn%2Dgroup%20%2Ebtn%2Dgroup%2B%2Ebtn%2Dgroup%7Bmargin%2Dleft%3A%2D1px%7D%2Ebtn%2Dtoolbar%7Bmargin%2Dleft%3A%2D5px%7D%2Ebtn%2Dtoolbar%20%2Ebtn%2C%2Ebtn%2Dtoolbar%20%2Ebtn%2Dgroup%2C%2Ebtn%2Dtoolbar%20%2Einput%2Dgroup%7Bfloat%3Aleft%7D%2Ebtn%2Dtoolbar%3E%2Ebtn%2C%2Ebtn%2Dtoolbar%3E%2Ebtn%2Dgroup%2C%2Ebtn%2Dtoolbar%3E%2Einput%2Dgroup%7Bmargin%2Dleft%3A5px%7D%2Ebtn%2Dgroup%3E%2Ebtn%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%3Anot%28%2Edropdown%2Dtoggle%29%7Bborder%2Dradius%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%3Afirst%2Dchild%7Bmargin%2Dleft%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%3Anot%28%2Edropdown%2Dtoggle%29%7Bborder%2Dbottom%2Dright%2Dradius%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%3Alast%2Dchild%3Anot%28%3Afirst%2Dchild%29%2C%2Ebtn%2Dgroup%3E%2Edropdown%2Dtoggle%3Anot%28%3Afirst%2Dchild%29%7Bborder%2Dbottom%2Dleft%2Dradius%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%2Dgroup%7Bfloat%3Aleft%7D%2Ebtn%2Dgroup%3E%2Ebtn%2Dgroup%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%3E%2Ebtn%7Bborder%2Dradius%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%2Dgroup%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%3E%2Ebtn%3Alast%2Dchild%2C%2Ebtn%2Dgroup%3E%2Ebtn%2Dgroup%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%3E%2Edropdown%2Dtoggle%7Bborder%2Dbottom%2Dright%2Dradius%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%2Dgroup%3Alast%2Dchild%3Anot%28%3Afirst%2Dchild%29%3E%2Ebtn%3Afirst%2Dchild%7Bborder%2Dbottom%2Dleft%2Dradius%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%7D%2Ebtn%2Dgroup%20%2Edropdown%2Dtoggle%3Aactive%2C%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%7Boutline%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%2B%2Edropdown%2Dtoggle%7Bpadding%2Dleft%3A8px%3Bpadding%2Dright%3A8px%7D%2Ebtn%2Dgroup%3E%2Ebtn%2Dlg%2B%2Edropdown%2Dtoggle%7Bpadding%2Dleft%3A12px%3Bpadding%2Dright%3A12px%7D%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%7B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%203px%205px%20rgba%280%2C0%2C0%2C0%2E125%29%3Bbox%2Dshadow%3Ainset%200%203px%205px%20rgba%280%2C0%2C0%2C0%2E125%29%7D%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%2Ebtn%2Dlink%7B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Ebtn%20%2Ecaret%7Bmargin%2Dleft%3A0%7D%2Ebtn%2Dlg%20%2Ecaret%7Bborder%2Dwidth%3A5px%205px%200%3Bborder%2Dbottom%2Dwidth%3A0%7D%2Edropup%20%2Ebtn%2Dlg%20%2Ecaret%7Bborder%2Dwidth%3A0%205px%205px%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3E%2Ebtn%7Bdisplay%3Ablock%3Bfloat%3Anone%3Bwidth%3A100%25%3Bmax%2Dwidth%3A100%25%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3E%2Ebtn%7Bfloat%3Anone%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2B%2Ebtn%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2B%2Ebtn%2Dgroup%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%2B%2Ebtn%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%2B%2Ebtn%2Dgroup%7Bmargin%2Dtop%3A%2D1px%3Bmargin%2Dleft%3A0%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%7Bborder%2Dradius%3A0%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%7Bborder%2Dtop%2Dright%2Dradius%3A4px%3Bborder%2Dtop%2Dleft%2Dradius%3A4px%3Bborder%2Dbottom%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A0%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Alast%2Dchild%3Anot%28%3Afirst%2Dchild%29%7Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%3Bborder%2Dbottom%2Dright%2Dradius%3A4px%3Bborder%2Dbottom%2Dleft%2Dradius%3A4px%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%3E%2Ebtn%7Bborder%2Dradius%3A0%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%3E%2Ebtn%3Alast%2Dchild%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%3E%2Edropdown%2Dtoggle%7Bborder%2Dbottom%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A0%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Alast%2Dchild%3Anot%28%3Afirst%2Dchild%29%3E%2Ebtn%3Afirst%2Dchild%7Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%7D%2Ebtn%2Dgroup%2Djustified%7Bdisplay%3Atable%3Bwidth%3A100%25%3Btable%2Dlayout%3Afixed%3Bborder%2Dcollapse%3Aseparate%7D%2Ebtn%2Dgroup%2Djustified%3E%2Ebtn%2C%2Ebtn%2Dgroup%2Djustified%3E%2Ebtn%2Dgroup%7Bfloat%3Anone%3Bdisplay%3Atable%2Dcell%3Bwidth%3A1%25%7D%2Ebtn%2Dgroup%2Djustified%3E%2Ebtn%2Dgroup%20%2Ebtn%7Bwidth%3A100%25%7D%2Ebtn%2Dgroup%2Djustified%3E%2Ebtn%2Dgroup%20%2Edropdown%2Dmenu%7Bleft%3Aauto%7D%5Bdata%2Dtoggle%3D%22buttons%22%5D%3E%2Ebtn%20input%5Btype%3D%22radio%22%5D%2C%5Bdata%2Dtoggle%3D%22buttons%22%5D%3E%2Ebtn%2Dgroup%3E%2Ebtn%20input%5Btype%3D%22radio%22%5D%2C%5Bdata%2Dtoggle%3D%22buttons%22%5D%3E%2Ebtn%20input%5Btype%3D%22checkbox%22%5D%2C%5Bdata%2Dtoggle%3D%22buttons%22%5D%3E%2Ebtn%2Dgroup%3E%2Ebtn%20input%5Btype%3D%22checkbox%22%5D%7Bposition%3Aabsolute%3Bclip%3Arect%280%2C%200%2C%200%2C%200%29%3Bpointer%2Devents%3Anone%7D%2Einput%2Dgroup%7Bposition%3Arelative%3Bdisplay%3Atable%3Bborder%2Dcollapse%3Aseparate%7D%2Einput%2Dgroup%5Bclass%2A%3D%22col%2D%22%5D%7Bfloat%3Anone%3Bpadding%2Dleft%3A0%3Bpadding%2Dright%3A0%7D%2Einput%2Dgroup%20%2Eform%2Dcontrol%7Bposition%3Arelative%3Bz%2Dindex%3A2%3Bfloat%3Aleft%3Bwidth%3A100%25%3Bmargin%2Dbottom%3A0%7D%2Einput%2Dgroup%20%2Eform%2Dcontrol%3Afocus%7Bz%2Dindex%3A3%7D%2Einput%2Dgroup%2Dlg%3E%2Eform%2Dcontrol%2C%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Daddon%2C%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3A52px%3Bpadding%3A13px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%3Bborder%2Dradius%3A5px%7Dselect%2Einput%2Dgroup%2Dlg%3E%2Eform%2Dcontrol%2Cselect%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Daddon%2Cselect%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3A52px%3Bline%2Dheight%3A52px%7Dtextarea%2Einput%2Dgroup%2Dlg%3E%2Eform%2Dcontrol%2Ctextarea%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Daddon%2Ctextarea%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dlg%3E%2Eform%2Dcontrol%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Daddon%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3Aauto%7D%2Einput%2Dgroup%2Dsm%3E%2Eform%2Dcontrol%2C%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Daddon%2C%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3A28px%3Bpadding%3A4px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%3Bborder%2Dradius%3A2px%7Dselect%2Einput%2Dgroup%2Dsm%3E%2Eform%2Dcontrol%2Cselect%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Daddon%2Cselect%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3A28px%3Bline%2Dheight%3A28px%7Dtextarea%2Einput%2Dgroup%2Dsm%3E%2Eform%2Dcontrol%2Ctextarea%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Daddon%2Ctextarea%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dsm%3E%2Eform%2Dcontrol%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Daddon%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3Aauto%7D%2Einput%2Dgroup%2Daddon%2C%2Einput%2Dgroup%2Dbtn%2C%2Einput%2Dgroup%20%2Eform%2Dcontrol%7Bdisplay%3Atable%2Dcell%7D%2Einput%2Dgroup%2Daddon%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%2C%2Einput%2Dgroup%2Dbtn%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%2C%2Einput%2Dgroup%20%2Eform%2Dcontrol%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%7Bborder%2Dradius%3A0%7D%2Einput%2Dgroup%2Daddon%2C%2Einput%2Dgroup%2Dbtn%7Bwidth%3A1%25%3Bwhite%2Dspace%3Anowrap%3Bvertical%2Dalign%3Amiddle%7D%2Einput%2Dgroup%2Daddon%7Bpadding%3A7px%2012px%3Bfont%2Dsize%3A14px%3Bfont%2Dweight%3Anormal%3Bline%2Dheight%3A1%3Bcolor%3A%23555555%3Btext%2Dalign%3Acenter%3Bbackground%2Dcolor%3A%23eeeeee%3Bborder%3A1px%20solid%20%23e7e7e7%3Bborder%2Dradius%3A4px%7D%2Einput%2Dgroup%2Daddon%2Einput%2Dsm%7Bpadding%3A4px%2010px%3Bfont%2Dsize%3A12px%3Bborder%2Dradius%3A2px%7D%2Einput%2Dgroup%2Daddon%2Einput%2Dlg%7Bpadding%3A13px%2016px%3Bfont%2Dsize%3A18px%3Bborder%2Dradius%3A5px%7D%2Einput%2Dgroup%2Daddon%20input%5Btype%3D%22radio%22%5D%2C%2Einput%2Dgroup%2Daddon%20input%5Btype%3D%22checkbox%22%5D%7Bmargin%2Dtop%3A0%7D%2Einput%2Dgroup%20%2Eform%2Dcontrol%3Afirst%2Dchild%2C%2Einput%2Dgroup%2Daddon%3Afirst%2Dchild%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%2Dgroup%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Edropdown%2Dtoggle%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%3Anot%28%3Alast%2Dchild%29%3Anot%28%2Edropdown%2Dtoggle%29%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%2Dgroup%3Anot%28%3Alast%2Dchild%29%3E%2Ebtn%7Bborder%2Dbottom%2Dright%2Dradius%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A0%7D%2Einput%2Dgroup%2Daddon%3Afirst%2Dchild%7Bborder%2Dright%3A0%7D%2Einput%2Dgroup%20%2Eform%2Dcontrol%3Alast%2Dchild%2C%2Einput%2Dgroup%2Daddon%3Alast%2Dchild%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%2Dgroup%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Edropdown%2Dtoggle%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%3Anot%28%3Afirst%2Dchild%29%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%2Dgroup%3Anot%28%3Afirst%2Dchild%29%3E%2Ebtn%7Bborder%2Dbottom%2Dleft%2Dradius%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%7D%2Einput%2Dgroup%2Daddon%3Alast%2Dchild%7Bborder%2Dleft%3A0%7D%2Einput%2Dgroup%2Dbtn%7Bposition%3Arelative%3Bfont%2Dsize%3A0%3Bwhite%2Dspace%3Anowrap%7D%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bposition%3Arelative%7D%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%2B%2Ebtn%7Bmargin%2Dleft%3A%2D1px%7D%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%3Ahover%2C%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%3Afocus%2C%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%3Aactive%7Bz%2Dindex%3A2%7D%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%2Dgroup%7Bmargin%2Dright%3A%2D1px%7D%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%2Dgroup%7Bz%2Dindex%3A2%3Bmargin%2Dleft%3A%2D1px%7D%2Enav%7Bmargin%2Dbottom%3A0%3Bpadding%2Dleft%3A0%3Blist%2Dstyle%3Anone%7D%2Enav%3Eli%7Bposition%3Arelative%3Bdisplay%3Ablock%7D%2Enav%3Eli%3Ea%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bpadding%3A10px%2015px%7D%2Enav%3Eli%3Ea%3Ahover%2C%2Enav%3Eli%3Ea%3Afocus%7Btext%2Ddecoration%3Anone%3Bbackground%2Dcolor%3A%23ffffff%7D%2Enav%3Eli%2Edisabled%3Ea%7Bcolor%3A%23999999%7D%2Enav%3Eli%2Edisabled%3Ea%3Ahover%2C%2Enav%3Eli%2Edisabled%3Ea%3Afocus%7Bcolor%3A%23999999%3Btext%2Ddecoration%3Anone%3Bbackground%2Dcolor%3Atransparent%3Bcursor%3Anot%2Dallowed%7D%2Enav%20%2Eopen%3Ea%2C%2Enav%20%2Eopen%3Ea%3Ahover%2C%2Enav%20%2Eopen%3Ea%3Afocus%7Bbackground%2Dcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23158cba%7D%2Enav%20%2Enav%2Ddivider%7Bheight%3A1px%3Bmargin%3A9px%200%3Boverflow%3Ahidden%3Bbackground%2Dcolor%3A%23e5e5e5%7D%2Enav%3Eli%3Ea%3Eimg%7Bmax%2Dwidth%3Anone%7D%2Enav%2Dtabs%7Bborder%2Dbottom%3A1px%20solid%20%23e7e7e7%7D%2Enav%2Dtabs%3Eli%7Bfloat%3Aleft%3Bmargin%2Dbottom%3A%2D1px%7D%2Enav%2Dtabs%3Eli%3Ea%7Bmargin%2Dright%3A2px%3Bline%2Dheight%3A1%2E42857143%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A4px%204px%200%200%7D%2Enav%2Dtabs%3Eli%3Ea%3Ahover%7Bborder%2Dcolor%3A%23eeeeee%20%23eeeeee%20%23e7e7e7%7D%2Enav%2Dtabs%3Eli%2Eactive%3Ea%2C%2Enav%2Dtabs%3Eli%2Eactive%3Ea%3Ahover%2C%2Enav%2Dtabs%3Eli%2Eactive%3Ea%3Afocus%7Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%3A1px%20solid%20%23e7e7e7%3Bborder%2Dbottom%2Dcolor%3Atransparent%3Bcursor%3Adefault%7D%2Enav%2Dtabs%2Enav%2Djustified%7Bwidth%3A100%25%3Bborder%2Dbottom%3A0%7D%2Enav%2Dtabs%2Enav%2Djustified%3Eli%7Bfloat%3Anone%7D%2Enav%2Dtabs%2Enav%2Djustified%3Eli%3Ea%7Btext%2Dalign%3Acenter%3Bmargin%2Dbottom%3A5px%7D%2Enav%2Dtabs%2Enav%2Djustified%3E%2Edropdown%20%2Edropdown%2Dmenu%7Btop%3Aauto%3Bleft%3Aauto%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enav%2Dtabs%2Enav%2Djustified%3Eli%7Bdisplay%3Atable%2Dcell%3Bwidth%3A1%25%7D%2Enav%2Dtabs%2Enav%2Djustified%3Eli%3Ea%7Bmargin%2Dbottom%3A0%7D%7D%2Enav%2Dtabs%2Enav%2Djustified%3Eli%3Ea%7Bmargin%2Dright%3A0%3Bborder%2Dradius%3A4px%7D%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%2C%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%3Ahover%2C%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%3Afocus%7Bborder%3A1px%20solid%20%23e7e7e7%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enav%2Dtabs%2Enav%2Djustified%3Eli%3Ea%7Bborder%2Dbottom%3A1px%20solid%20%23e7e7e7%3Bborder%2Dradius%3A4px%204px%200%200%7D%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%2C%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%3Ahover%2C%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%3Afocus%7Bborder%2Dbottom%2Dcolor%3A%23ffffff%7D%7D%2Enav%2Dpills%3Eli%7Bfloat%3Aleft%7D%2Enav%2Dpills%3Eli%3Ea%7Bborder%2Dradius%3A4px%7D%2Enav%2Dpills%3Eli%2Bli%7Bmargin%2Dleft%3A2px%7D%2Enav%2Dpills%3Eli%2Eactive%3Ea%2C%2Enav%2Dpills%3Eli%2Eactive%3Ea%3Ahover%2C%2Enav%2Dpills%3Eli%2Eactive%3Ea%3Afocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23158cba%7D%2Enav%2Dstacked%3Eli%7Bfloat%3Anone%7D%2Enav%2Dstacked%3Eli%2Bli%7Bmargin%2Dtop%3A2px%3Bmargin%2Dleft%3A0%7D%2Enav%2Djustified%7Bwidth%3A100%25%7D%2Enav%2Djustified%3Eli%7Bfloat%3Anone%7D%2Enav%2Djustified%3Eli%3Ea%7Btext%2Dalign%3Acenter%3Bmargin%2Dbottom%3A5px%7D%2Enav%2Djustified%3E%2Edropdown%20%2Edropdown%2Dmenu%7Btop%3Aauto%3Bleft%3Aauto%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enav%2Djustified%3Eli%7Bdisplay%3Atable%2Dcell%3Bwidth%3A1%25%7D%2Enav%2Djustified%3Eli%3Ea%7Bmargin%2Dbottom%3A0%7D%7D%2Enav%2Dtabs%2Djustified%7Bborder%2Dbottom%3A0%7D%2Enav%2Dtabs%2Djustified%3Eli%3Ea%7Bmargin%2Dright%3A0%3Bborder%2Dradius%3A4px%7D%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%2C%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%3Ahover%2C%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%3Afocus%7Bborder%3A1px%20solid%20%23e7e7e7%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enav%2Dtabs%2Djustified%3Eli%3Ea%7Bborder%2Dbottom%3A1px%20solid%20%23e7e7e7%3Bborder%2Dradius%3A4px%204px%200%200%7D%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%2C%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%3Ahover%2C%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%3Afocus%7Bborder%2Dbottom%2Dcolor%3A%23ffffff%7D%7D%2Etab%2Dcontent%3E%2Etab%2Dpane%7Bdisplay%3Anone%7D%2Etab%2Dcontent%3E%2Eactive%7Bdisplay%3Ablock%7D%2Enav%2Dtabs%20%2Edropdown%2Dmenu%7Bmargin%2Dtop%3A%2D1px%3Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%7D%2Enavbar%7Bposition%3Arelative%3Bmin%2Dheight%3A50px%3Bmargin%2Dbottom%3A20px%3Bborder%3A1px%20solid%20transparent%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%7Bborder%2Dradius%3A4px%7D%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dheader%7Bfloat%3Aleft%7D%7D%2Enavbar%2Dcollapse%7Boverflow%2Dx%3Avisible%3Bpadding%2Dright%3A15px%3Bpadding%2Dleft%3A15px%3Bborder%2Dtop%3A1px%20solid%20transparent%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%200%20rgba%28255%2C255%2C255%2C0%2E1%29%3Bbox%2Dshadow%3Ainset%200%201px%200%20rgba%28255%2C255%2C255%2C0%2E1%29%3B%2Dwebkit%2Doverflow%2Dscrolling%3Atouch%7D%2Enavbar%2Dcollapse%2Ein%7Boverflow%2Dy%3Aauto%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dcollapse%7Bwidth%3Aauto%3Bborder%2Dtop%3A0%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Enavbar%2Dcollapse%2Ecollapse%7Bdisplay%3Ablock%20%21important%3Bheight%3Aauto%20%21important%3Bpadding%2Dbottom%3A0%3Boverflow%3Avisible%20%21important%7D%2Enavbar%2Dcollapse%2Ein%7Boverflow%2Dy%3Avisible%7D%2Enavbar%2Dfixed%2Dtop%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Dstatic%2Dtop%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Dfixed%2Dbottom%20%2Enavbar%2Dcollapse%7Bpadding%2Dleft%3A0%3Bpadding%2Dright%3A0%7D%7D%2Enavbar%2Dfixed%2Dtop%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Dfixed%2Dbottom%20%2Enavbar%2Dcollapse%7Bmax%2Dheight%3A340px%7D%40media%20%28max%2Ddevice%2Dwidth%3A480px%29%20and%20%28orientation%3Alandscape%29%7B%2Enavbar%2Dfixed%2Dtop%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Dfixed%2Dbottom%20%2Enavbar%2Dcollapse%7Bmax%2Dheight%3A200px%7D%7D%2Econtainer%3E%2Enavbar%2Dheader%2C%2Econtainer%2Dfluid%3E%2Enavbar%2Dheader%2C%2Econtainer%3E%2Enavbar%2Dcollapse%2C%2Econtainer%2Dfluid%3E%2Enavbar%2Dcollapse%7Bmargin%2Dright%3A%2D15px%3Bmargin%2Dleft%3A%2D15px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Econtainer%3E%2Enavbar%2Dheader%2C%2Econtainer%2Dfluid%3E%2Enavbar%2Dheader%2C%2Econtainer%3E%2Enavbar%2Dcollapse%2C%2Econtainer%2Dfluid%3E%2Enavbar%2Dcollapse%7Bmargin%2Dright%3A0%3Bmargin%2Dleft%3A0%7D%7D%2Enavbar%2Dstatic%2Dtop%7Bz%2Dindex%3A1000%3Bborder%2Dwidth%3A0%200%201px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dstatic%2Dtop%7Bborder%2Dradius%3A0%7D%7D%2Enavbar%2Dfixed%2Dtop%2C%2Enavbar%2Dfixed%2Dbottom%7Bposition%3Afixed%3Bright%3A0%3Bleft%3A0%3Bz%2Dindex%3A1030%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dfixed%2Dtop%2C%2Enavbar%2Dfixed%2Dbottom%7Bborder%2Dradius%3A0%7D%7D%2Enavbar%2Dfixed%2Dtop%7Btop%3A0%3Bborder%2Dwidth%3A0%200%201px%7D%2Enavbar%2Dfixed%2Dbottom%7Bbottom%3A0%3Bmargin%2Dbottom%3A0%3Bborder%2Dwidth%3A1px%200%200%7D%2Enavbar%2Dbrand%7Bfloat%3Aleft%3Bpadding%3A15px%2015px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A20px%3Bheight%3A50px%7D%2Enavbar%2Dbrand%3Ahover%2C%2Enavbar%2Dbrand%3Afocus%7Btext%2Ddecoration%3Anone%7D%2Enavbar%2Dbrand%3Eimg%7Bdisplay%3Ablock%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%3E%2Econtainer%20%2Enavbar%2Dbrand%2C%2Enavbar%3E%2Econtainer%2Dfluid%20%2Enavbar%2Dbrand%7Bmargin%2Dleft%3A%2D15px%7D%7D%2Enavbar%2Dtoggle%7Bposition%3Arelative%3Bfloat%3Aright%3Bmargin%2Dright%3A15px%3Bpadding%3A9px%2010px%3Bmargin%2Dtop%3A8px%3Bmargin%2Dbottom%3A8px%3Bbackground%2Dcolor%3Atransparent%3Bbackground%2Dimage%3Anone%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A4px%7D%2Enavbar%2Dtoggle%3Afocus%7Boutline%3A0%7D%2Enavbar%2Dtoggle%20%2Eicon%2Dbar%7Bdisplay%3Ablock%3Bwidth%3A22px%3Bheight%3A2px%3Bborder%2Dradius%3A1px%7D%2Enavbar%2Dtoggle%20%2Eicon%2Dbar%2B%2Eicon%2Dbar%7Bmargin%2Dtop%3A4px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dtoggle%7Bdisplay%3Anone%7D%7D%2Enavbar%2Dnav%7Bmargin%3A7%2E5px%20%2D15px%7D%2Enavbar%2Dnav%3Eli%3Ea%7Bpadding%2Dtop%3A10px%3Bpadding%2Dbottom%3A10px%3Bline%2Dheight%3A20px%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%7Bposition%3Astatic%3Bfloat%3Anone%3Bwidth%3Aauto%3Bmargin%2Dtop%3A0%3Bbackground%2Dcolor%3Atransparent%3Bborder%3A0%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%2C%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%20%2Edropdown%2Dheader%7Bpadding%3A5px%2015px%205px%2025px%7D%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%7Bline%2Dheight%3A20px%7D%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Ahover%2C%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Afocus%7Bbackground%2Dimage%3Anone%7D%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dnav%7Bfloat%3Aleft%3Bmargin%3A0%7D%2Enavbar%2Dnav%3Eli%7Bfloat%3Aleft%7D%2Enavbar%2Dnav%3Eli%3Ea%7Bpadding%2Dtop%3A15px%3Bpadding%2Dbottom%3A15px%7D%7D%2Enavbar%2Dform%7Bmargin%2Dleft%3A%2D15px%3Bmargin%2Dright%3A%2D15px%3Bpadding%3A10px%2015px%3Bborder%2Dtop%3A1px%20solid%20transparent%3Bborder%2Dbottom%3A1px%20solid%20transparent%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%200%20rgba%28255%2C255%2C255%2C0%2E1%29%2C0%201px%200%20rgba%28255%2C255%2C255%2C0%2E1%29%3Bbox%2Dshadow%3Ainset%200%201px%200%20rgba%28255%2C255%2C255%2C0%2E1%29%2C0%201px%200%20rgba%28255%2C255%2C255%2C0%2E1%29%3Bmargin%2Dtop%3A6px%3Bmargin%2Dbottom%3A6px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dform%20%2Eform%2Dgroup%7Bdisplay%3Ainline%2Dblock%3Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Enavbar%2Dform%20%2Eform%2Dcontrol%7Bdisplay%3Ainline%2Dblock%3Bwidth%3Aauto%3Bvertical%2Dalign%3Amiddle%7D%2Enavbar%2Dform%20%2Eform%2Dcontrol%2Dstatic%7Bdisplay%3Ainline%2Dblock%7D%2Enavbar%2Dform%20%2Einput%2Dgroup%7Bdisplay%3Ainline%2Dtable%3Bvertical%2Dalign%3Amiddle%7D%2Enavbar%2Dform%20%2Einput%2Dgroup%20%2Einput%2Dgroup%2Daddon%2C%2Enavbar%2Dform%20%2Einput%2Dgroup%20%2Einput%2Dgroup%2Dbtn%2C%2Enavbar%2Dform%20%2Einput%2Dgroup%20%2Eform%2Dcontrol%7Bwidth%3Aauto%7D%2Enavbar%2Dform%20%2Einput%2Dgroup%3E%2Eform%2Dcontrol%7Bwidth%3A100%25%7D%2Enavbar%2Dform%20%2Econtrol%2Dlabel%7Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Enavbar%2Dform%20%2Eradio%2C%2Enavbar%2Dform%20%2Echeckbox%7Bdisplay%3Ainline%2Dblock%3Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Enavbar%2Dform%20%2Eradio%20label%2C%2Enavbar%2Dform%20%2Echeckbox%20label%7Bpadding%2Dleft%3A0%7D%2Enavbar%2Dform%20%2Eradio%20input%5Btype%3D%22radio%22%5D%2C%2Enavbar%2Dform%20%2Echeckbox%20input%5Btype%3D%22checkbox%22%5D%7Bposition%3Arelative%3Bmargin%2Dleft%3A0%7D%2Enavbar%2Dform%20%2Ehas%2Dfeedback%20%2Eform%2Dcontrol%2Dfeedback%7Btop%3A0%7D%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Enavbar%2Dform%20%2Eform%2Dgroup%7Bmargin%2Dbottom%3A5px%7D%2Enavbar%2Dform%20%2Eform%2Dgroup%3Alast%2Dchild%7Bmargin%2Dbottom%3A0%7D%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dform%7Bwidth%3Aauto%3Bborder%3A0%3Bmargin%2Dleft%3A0%3Bmargin%2Dright%3A0%3Bpadding%2Dtop%3A0%3Bpadding%2Dbottom%3A0%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%7D%2Enavbar%2Dnav%3Eli%3E%2Edropdown%2Dmenu%7Bmargin%2Dtop%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%7D%2Enavbar%2Dfixed%2Dbottom%20%2Enavbar%2Dnav%3Eli%3E%2Edropdown%2Dmenu%7Bmargin%2Dbottom%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A4px%3Bborder%2Dtop%2Dleft%2Dradius%3A4px%3Bborder%2Dbottom%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A0%7D%2Enavbar%2Dbtn%7Bmargin%2Dtop%3A6px%3Bmargin%2Dbottom%3A6px%7D%2Enavbar%2Dbtn%2Ebtn%2Dsm%7Bmargin%2Dtop%3A11px%3Bmargin%2Dbottom%3A11px%7D%2Enavbar%2Dbtn%2Ebtn%2Dxs%7Bmargin%2Dtop%3A14px%3Bmargin%2Dbottom%3A14px%7D%2Enavbar%2Dtext%7Bmargin%2Dtop%3A15px%3Bmargin%2Dbottom%3A15px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dtext%7Bfloat%3Aleft%3Bmargin%2Dleft%3A15px%3Bmargin%2Dright%3A15px%7D%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dleft%7Bfloat%3Aleft%20%21important%7D%2Enavbar%2Dright%7Bfloat%3Aright%20%21important%3Bmargin%2Dright%3A%2D15px%7D%2Enavbar%2Dright%7E%2Enavbar%2Dright%7Bmargin%2Dright%3A0%7D%7D%2Enavbar%2Ddefault%7Bbackground%2Dcolor%3A%23f8f8f8%3Bborder%2Dcolor%3A%23e7e7e7%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dbrand%7Bcolor%3A%23333333%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dbrand%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dbrand%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dtext%7Bcolor%3A%23555555%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3Eli%3Ea%7Bcolor%3A%23999999%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3Eli%3Ea%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3Eli%3Ea%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%3Afocus%7Bcolor%3A%23eeeeee%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dtoggle%7Bborder%2Dcolor%3A%23eeeeee%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dtoggle%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dtoggle%3Afocus%7Bbackground%2Dcolor%3A%23ffffff%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dtoggle%20%2Eicon%2Dbar%7Bbackground%2Dcolor%3A%23999999%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dform%7Bborder%2Dcolor%3A%23e7e7e7%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%3Afocus%7Bbackground%2Dcolor%3Atransparent%3Bcolor%3A%23333333%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%7Bcolor%3A%23999999%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Afocus%7Bcolor%3A%23eeeeee%3Bbackground%2Dcolor%3Atransparent%7D%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dlink%7Bcolor%3A%23999999%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dlink%3Ahover%7Bcolor%3A%23333333%7D%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%7Bcolor%3A%23999999%7D%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%3Ahover%2C%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%3Afocus%7Bcolor%3A%23333333%7D%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%3Ahover%2C%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%3Afocus%7Bcolor%3A%23eeeeee%7D%2Enavbar%2Dinverse%7Bbackground%2Dcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23e6e6e6%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dbrand%7Bcolor%3A%23999999%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dbrand%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dbrand%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dtext%7Bcolor%3A%23999999%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3Eli%3Ea%7Bcolor%3A%23999999%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3Eli%3Ea%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3Eli%3Ea%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%3Afocus%7Bcolor%3A%23eeeeee%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dtoggle%7Bborder%2Dcolor%3A%23eeeeee%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dtoggle%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dtoggle%3Afocus%7Bbackground%2Dcolor%3A%23eeeeee%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dtoggle%20%2Eicon%2Dbar%7Bbackground%2Dcolor%3A%23999999%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dform%7Bborder%2Dcolor%3A%23ededed%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%3Afocus%7Bbackground%2Dcolor%3Atransparent%3Bcolor%3A%23333333%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edropdown%2Dheader%7Bborder%2Dcolor%3A%23e6e6e6%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%20%2Edivider%7Bbackground%2Dcolor%3A%23e6e6e6%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%7Bcolor%3A%23999999%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Afocus%7Bcolor%3A%23eeeeee%3Bbackground%2Dcolor%3Atransparent%7D%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dlink%7Bcolor%3A%23999999%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dlink%3Ahover%7Bcolor%3A%23333333%7D%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%7Bcolor%3A%23999999%7D%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%3Ahover%2C%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%3Afocus%7Bcolor%3A%23333333%7D%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%3Ahover%2C%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%3Afocus%7Bcolor%3A%23eeeeee%7D%2Ebreadcrumb%7Bpadding%3A8px%2015px%3Bmargin%2Dbottom%3A20px%3Blist%2Dstyle%3Anone%3Bbackground%2Dcolor%3A%23fafafa%3Bborder%2Dradius%3A4px%7D%2Ebreadcrumb%3Eli%7Bdisplay%3Ainline%2Dblock%7D%2Ebreadcrumb%3Eli%2Bli%3Abefore%7Bcontent%3A%22%3E%5C00a0%22%3Bpadding%3A0%205px%3Bcolor%3A%23999999%7D%2Ebreadcrumb%3E%2Eactive%7Bcolor%3A%23999999%7D%2Epagination%7Bdisplay%3Ainline%2Dblock%3Bpadding%2Dleft%3A0%3Bmargin%3A20px%200%3Bborder%2Dradius%3A4px%7D%2Epagination%3Eli%7Bdisplay%3Ainline%7D%2Epagination%3Eli%3Ea%2C%2Epagination%3Eli%3Espan%7Bposition%3Arelative%3Bfloat%3Aleft%3Bpadding%3A7px%2012px%3Bline%2Dheight%3A1%2E42857143%3Btext%2Ddecoration%3Anone%3Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23eeeeee%3Bborder%3A1px%20solid%20%23e2e2e2%3Bmargin%2Dleft%3A%2D1px%7D%2Epagination%3Eli%3Afirst%2Dchild%3Ea%2C%2Epagination%3Eli%3Afirst%2Dchild%3Espan%7Bmargin%2Dleft%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A4px%3Bborder%2Dtop%2Dleft%2Dradius%3A4px%7D%2Epagination%3Eli%3Alast%2Dchild%3Ea%2C%2Epagination%3Eli%3Alast%2Dchild%3Espan%7Bborder%2Dbottom%2Dright%2Dradius%3A4px%3Bborder%2Dtop%2Dright%2Dradius%3A4px%7D%2Epagination%3Eli%3Ea%3Ahover%2C%2Epagination%3Eli%3Espan%3Ahover%2C%2Epagination%3Eli%3Ea%3Afocus%2C%2Epagination%3Eli%3Espan%3Afocus%7Bz%2Dindex%3A2%3Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23eeeeee%3Bborder%2Dcolor%3A%23e2e2e2%7D%2Epagination%3E%2Eactive%3Ea%2C%2Epagination%3E%2Eactive%3Espan%2C%2Epagination%3E%2Eactive%3Ea%3Ahover%2C%2Epagination%3E%2Eactive%3Espan%3Ahover%2C%2Epagination%3E%2Eactive%3Ea%3Afocus%2C%2Epagination%3E%2Eactive%3Espan%3Afocus%7Bz%2Dindex%3A3%3Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23158cba%3Bborder%2Dcolor%3A%23127ba3%3Bcursor%3Adefault%7D%2Epagination%3E%2Edisabled%3Espan%2C%2Epagination%3E%2Edisabled%3Espan%3Ahover%2C%2Epagination%3E%2Edisabled%3Espan%3Afocus%2C%2Epagination%3E%2Edisabled%3Ea%2C%2Epagination%3E%2Edisabled%3Ea%3Ahover%2C%2Epagination%3E%2Edisabled%3Ea%3Afocus%7Bcolor%3A%23999999%3Bbackground%2Dcolor%3A%23eeeeee%3Bborder%2Dcolor%3A%23e2e2e2%3Bcursor%3Anot%2Dallowed%7D%2Epagination%2Dlg%3Eli%3Ea%2C%2Epagination%2Dlg%3Eli%3Espan%7Bpadding%3A13px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%7D%2Epagination%2Dlg%3Eli%3Afirst%2Dchild%3Ea%2C%2Epagination%2Dlg%3Eli%3Afirst%2Dchild%3Espan%7Bborder%2Dbottom%2Dleft%2Dradius%3A5px%3Bborder%2Dtop%2Dleft%2Dradius%3A5px%7D%2Epagination%2Dlg%3Eli%3Alast%2Dchild%3Ea%2C%2Epagination%2Dlg%3Eli%3Alast%2Dchild%3Espan%7Bborder%2Dbottom%2Dright%2Dradius%3A5px%3Bborder%2Dtop%2Dright%2Dradius%3A5px%7D%2Epagination%2Dsm%3Eli%3Ea%2C%2Epagination%2Dsm%3Eli%3Espan%7Bpadding%3A4px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%7D%2Epagination%2Dsm%3Eli%3Afirst%2Dchild%3Ea%2C%2Epagination%2Dsm%3Eli%3Afirst%2Dchild%3Espan%7Bborder%2Dbottom%2Dleft%2Dradius%3A2px%3Bborder%2Dtop%2Dleft%2Dradius%3A2px%7D%2Epagination%2Dsm%3Eli%3Alast%2Dchild%3Ea%2C%2Epagination%2Dsm%3Eli%3Alast%2Dchild%3Espan%7Bborder%2Dbottom%2Dright%2Dradius%3A2px%3Bborder%2Dtop%2Dright%2Dradius%3A2px%7D%2Epager%7Bpadding%2Dleft%3A0%3Bmargin%3A20px%200%3Blist%2Dstyle%3Anone%3Btext%2Dalign%3Acenter%7D%2Epager%20li%7Bdisplay%3Ainline%7D%2Epager%20li%3Ea%2C%2Epager%20li%3Espan%7Bdisplay%3Ainline%2Dblock%3Bpadding%3A5px%2014px%3Bbackground%2Dcolor%3A%23eeeeee%3Bborder%3A1px%20solid%20%23e2e2e2%3Bborder%2Dradius%3A15px%7D%2Epager%20li%3Ea%3Ahover%2C%2Epager%20li%3Ea%3Afocus%7Btext%2Ddecoration%3Anone%3Bbackground%2Dcolor%3A%23eeeeee%7D%2Epager%20%2Enext%3Ea%2C%2Epager%20%2Enext%3Espan%7Bfloat%3Aright%7D%2Epager%20%2Eprevious%3Ea%2C%2Epager%20%2Eprevious%3Espan%7Bfloat%3Aleft%7D%2Epager%20%2Edisabled%3Ea%2C%2Epager%20%2Edisabled%3Ea%3Ahover%2C%2Epager%20%2Edisabled%3Ea%3Afocus%2C%2Epager%20%2Edisabled%3Espan%7Bcolor%3A%23999999%3Bbackground%2Dcolor%3A%23eeeeee%3Bcursor%3Anot%2Dallowed%7D%2Elabel%7Bdisplay%3Ainline%3Bpadding%3A%2E2em%20%2E6em%20%2E3em%3Bfont%2Dsize%3A75%25%3Bfont%2Dweight%3Abold%3Bline%2Dheight%3A1%3Bcolor%3A%23ffffff%3Btext%2Dalign%3Acenter%3Bwhite%2Dspace%3Anowrap%3Bvertical%2Dalign%3Abaseline%3Bborder%2Dradius%3A%2E25em%7Da%2Elabel%3Ahover%2Ca%2Elabel%3Afocus%7Bcolor%3A%23ffffff%3Btext%2Ddecoration%3Anone%3Bcursor%3Apointer%7D%2Elabel%3Aempty%7Bdisplay%3Anone%7D%2Ebtn%20%2Elabel%7Bposition%3Arelative%3Btop%3A%2D1px%7D%2Elabel%2Ddefault%7Bbackground%2Dcolor%3A%23999999%7D%2Elabel%2Ddefault%5Bhref%5D%3Ahover%2C%2Elabel%2Ddefault%5Bhref%5D%3Afocus%7Bbackground%2Dcolor%3A%23808080%7D%2Elabel%2Dprimary%7Bbackground%2Dcolor%3A%23158cba%7D%2Elabel%2Dprimary%5Bhref%5D%3Ahover%2C%2Elabel%2Dprimary%5Bhref%5D%3Afocus%7Bbackground%2Dcolor%3A%23106a8c%7D%2Elabel%2Dsuccess%7Bbackground%2Dcolor%3A%2328b62c%7D%2Elabel%2Dsuccess%5Bhref%5D%3Ahover%2C%2Elabel%2Dsuccess%5Bhref%5D%3Afocus%7Bbackground%2Dcolor%3A%231f8c22%7D%2Elabel%2Dinfo%7Bbackground%2Dcolor%3A%2375caeb%7D%2Elabel%2Dinfo%5Bhref%5D%3Ahover%2C%2Elabel%2Dinfo%5Bhref%5D%3Afocus%7Bbackground%2Dcolor%3A%2348b9e5%7D%2Elabel%2Dwarning%7Bbackground%2Dcolor%3A%23ff851b%7D%2Elabel%2Dwarning%5Bhref%5D%3Ahover%2C%2Elabel%2Dwarning%5Bhref%5D%3Afocus%7Bbackground%2Dcolor%3A%23e76b00%7D%2Elabel%2Ddanger%7Bbackground%2Dcolor%3A%23ff4136%7D%2Elabel%2Ddanger%5Bhref%5D%3Ahover%2C%2Elabel%2Ddanger%5Bhref%5D%3Afocus%7Bbackground%2Dcolor%3A%23ff1103%7D%2Ebadge%7Bdisplay%3Ainline%2Dblock%3Bmin%2Dwidth%3A10px%3Bpadding%3A3px%207px%3Bfont%2Dsize%3A12px%3Bfont%2Dweight%3Anormal%3Bcolor%3A%23ffffff%3Bline%2Dheight%3A1%3Bvertical%2Dalign%3Amiddle%3Bwhite%2Dspace%3Anowrap%3Btext%2Dalign%3Acenter%3Bbackground%2Dcolor%3A%23158cba%3Bborder%2Dradius%3A10px%7D%2Ebadge%3Aempty%7Bdisplay%3Anone%7D%2Ebtn%20%2Ebadge%7Bposition%3Arelative%3Btop%3A%2D1px%7D%2Ebtn%2Dxs%20%2Ebadge%2C%2Ebtn%2Dgroup%2Dxs%3E%2Ebtn%20%2Ebadge%7Btop%3A0%3Bpadding%3A1px%205px%7Da%2Ebadge%3Ahover%2Ca%2Ebadge%3Afocus%7Bcolor%3A%23ffffff%3Btext%2Ddecoration%3Anone%3Bcursor%3Apointer%7D%2Elist%2Dgroup%2Ditem%2Eactive%3E%2Ebadge%2C%2Enav%2Dpills%3E%2Eactive%3Ea%3E%2Ebadge%7Bcolor%3A%23158cba%3Bbackground%2Dcolor%3A%23ffffff%7D%2Elist%2Dgroup%2Ditem%3E%2Ebadge%7Bfloat%3Aright%7D%2Elist%2Dgroup%2Ditem%3E%2Ebadge%2B%2Ebadge%7Bmargin%2Dright%3A5px%7D%2Enav%2Dpills%3Eli%3Ea%3E%2Ebadge%7Bmargin%2Dleft%3A3px%7D%2Ejumbotron%7Bpadding%2Dtop%3A30px%3Bpadding%2Dbottom%3A30px%3Bmargin%2Dbottom%3A30px%3Bcolor%3Ainherit%3Bbackground%2Dcolor%3A%23fafafa%7D%2Ejumbotron%20h1%2C%2Ejumbotron%20%2Eh1%7Bcolor%3Ainherit%7D%2Ejumbotron%20p%7Bmargin%2Dbottom%3A15px%3Bfont%2Dsize%3A21px%3Bfont%2Dweight%3A200%7D%2Ejumbotron%3Ehr%7Bborder%2Dtop%2Dcolor%3A%23e1e1e1%7D%2Econtainer%20%2Ejumbotron%2C%2Econtainer%2Dfluid%20%2Ejumbotron%7Bborder%2Dradius%3A5px%3Bpadding%2Dleft%3A15px%3Bpadding%2Dright%3A15px%7D%2Ejumbotron%20%2Econtainer%7Bmax%2Dwidth%3A100%25%7D%40media%20screen%20and%20%28min%2Dwidth%3A768px%29%7B%2Ejumbotron%7Bpadding%2Dtop%3A48px%3Bpadding%2Dbottom%3A48px%7D%2Econtainer%20%2Ejumbotron%2C%2Econtainer%2Dfluid%20%2Ejumbotron%7Bpadding%2Dleft%3A60px%3Bpadding%2Dright%3A60px%7D%2Ejumbotron%20h1%2C%2Ejumbotron%20%2Eh1%7Bfont%2Dsize%3A63px%7D%7D%2Ethumbnail%7Bdisplay%3Ablock%3Bpadding%3A4px%3Bmargin%2Dbottom%3A20px%3Bline%2Dheight%3A1%2E42857143%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%3A1px%20solid%20%23eeeeee%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dtransition%3Aborder%20%2E2s%20ease%2Din%2Dout%3B%2Do%2Dtransition%3Aborder%20%2E2s%20ease%2Din%2Dout%3Btransition%3Aborder%20%2E2s%20ease%2Din%2Dout%7D%2Ethumbnail%3Eimg%2C%2Ethumbnail%20a%3Eimg%7Bmargin%2Dleft%3Aauto%3Bmargin%2Dright%3Aauto%7Da%2Ethumbnail%3Ahover%2Ca%2Ethumbnail%3Afocus%2Ca%2Ethumbnail%2Eactive%7Bborder%2Dcolor%3A%23158cba%7D%2Ethumbnail%20%2Ecaption%7Bpadding%3A9px%3Bcolor%3A%23555555%7D%2Ealert%7Bpadding%3A15px%3Bmargin%2Dbottom%3A20px%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A4px%7D%2Ealert%20h4%7Bmargin%2Dtop%3A0%3Bcolor%3Ainherit%7D%2Ealert%20%2Ealert%2Dlink%7Bfont%2Dweight%3Abold%7D%2Ealert%3Ep%2C%2Ealert%3Eul%7Bmargin%2Dbottom%3A0%7D%2Ealert%3Ep%2Bp%7Bmargin%2Dtop%3A5px%7D%2Ealert%2Ddismissable%2C%2Ealert%2Ddismissible%7Bpadding%2Dright%3A35px%7D%2Ealert%2Ddismissable%20%2Eclose%2C%2Ealert%2Ddismissible%20%2Eclose%7Bposition%3Arelative%3Btop%3A%2D2px%3Bright%3A%2D21px%3Bcolor%3Ainherit%7D%2Ealert%2Dsuccess%7Bbackground%2Dcolor%3A%2328b62c%3Bborder%2Dcolor%3A%2324a528%3Bcolor%3A%23ffffff%7D%2Ealert%2Dsuccess%20hr%7Bborder%2Dtop%2Dcolor%3A%23209023%7D%2Ealert%2Dsuccess%20%2Ealert%2Dlink%7Bcolor%3A%23e6e6e6%7D%2Ealert%2Dinfo%7Bbackground%2Dcolor%3A%2375caeb%3Bborder%2Dcolor%3A%2340b5e3%3Bcolor%3A%23ffffff%7D%2Ealert%2Dinfo%20hr%7Bborder%2Dtop%2Dcolor%3A%2329ade0%7D%2Ealert%2Dinfo%20%2Ealert%2Dlink%7Bcolor%3A%23e6e6e6%7D%2Ealert%2Dwarning%7Bbackground%2Dcolor%3A%23ff851b%3Bborder%2Dcolor%3A%23ff7701%3Bcolor%3A%23ffffff%7D%2Ealert%2Dwarning%20hr%7Bborder%2Dtop%2Dcolor%3A%23e76b00%7D%2Ealert%2Dwarning%20%2Ealert%2Dlink%7Bcolor%3A%23e6e6e6%7D%2Ealert%2Ddanger%7Bbackground%2Dcolor%3A%23ff4136%3Bborder%2Dcolor%3A%23ff1103%3Bcolor%3A%23ffffff%7D%2Ealert%2Ddanger%20hr%7Bborder%2Dtop%2Dcolor%3A%23e90d00%7D%2Ealert%2Ddanger%20%2Ealert%2Dlink%7Bcolor%3A%23e6e6e6%7D%40%2Dwebkit%2Dkeyframes%20progress%2Dbar%2Dstripes%7Bfrom%7Bbackground%2Dposition%3A40px%200%7Dto%7Bbackground%2Dposition%3A0%200%7D%7D%40%2Do%2Dkeyframes%20progress%2Dbar%2Dstripes%7Bfrom%7Bbackground%2Dposition%3A40px%200%7Dto%7Bbackground%2Dposition%3A0%200%7D%7D%40keyframes%20progress%2Dbar%2Dstripes%7Bfrom%7Bbackground%2Dposition%3A40px%200%7Dto%7Bbackground%2Dposition%3A0%200%7D%7D%2Eprogress%7Boverflow%3Ahidden%3Bheight%3A20px%3Bmargin%2Dbottom%3A20px%3Bbackground%2Dcolor%3A%23fafafa%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%202px%20rgba%280%2C0%2C0%2C0%2E1%29%3Bbox%2Dshadow%3Ainset%200%201px%202px%20rgba%280%2C0%2C0%2C0%2E1%29%7D%2Eprogress%2Dbar%7Bfloat%3Aleft%3Bwidth%3A0%25%3Bheight%3A100%25%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A20px%3Bcolor%3A%23ffffff%3Btext%2Dalign%3Acenter%3Bbackground%2Dcolor%3A%23158cba%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%20%2D1px%200%20rgba%280%2C0%2C0%2C0%2E15%29%3Bbox%2Dshadow%3Ainset%200%20%2D1px%200%20rgba%280%2C0%2C0%2C0%2E15%29%3B%2Dwebkit%2Dtransition%3Awidth%200%2E6s%20ease%3B%2Do%2Dtransition%3Awidth%200%2E6s%20ease%3Btransition%3Awidth%200%2E6s%20ease%7D%2Eprogress%2Dstriped%20%2Eprogress%2Dbar%2C%2Eprogress%2Dbar%2Dstriped%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3Alinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3B%2Dwebkit%2Dbackground%2Dsize%3A40px%2040px%3Bbackground%2Dsize%3A40px%2040px%7D%2Eprogress%2Eactive%20%2Eprogress%2Dbar%2C%2Eprogress%2Dbar%2Eactive%7B%2Dwebkit%2Danimation%3Aprogress%2Dbar%2Dstripes%202s%20linear%20infinite%3B%2Do%2Danimation%3Aprogress%2Dbar%2Dstripes%202s%20linear%20infinite%3Banimation%3Aprogress%2Dbar%2Dstripes%202s%20linear%20infinite%7D%2Eprogress%2Dbar%2Dsuccess%7Bbackground%2Dcolor%3A%2328b62c%7D%2Eprogress%2Dstriped%20%2Eprogress%2Dbar%2Dsuccess%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3Alinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%7D%2Eprogress%2Dbar%2Dinfo%7Bbackground%2Dcolor%3A%2375caeb%7D%2Eprogress%2Dstriped%20%2Eprogress%2Dbar%2Dinfo%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3Alinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%7D%2Eprogress%2Dbar%2Dwarning%7Bbackground%2Dcolor%3A%23ff851b%7D%2Eprogress%2Dstriped%20%2Eprogress%2Dbar%2Dwarning%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3Alinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%7D%2Eprogress%2Dbar%2Ddanger%7Bbackground%2Dcolor%3A%23ff4136%7D%2Eprogress%2Dstriped%20%2Eprogress%2Dbar%2Ddanger%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3Alinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%7D%2Emedia%7Bmargin%2Dtop%3A15px%7D%2Emedia%3Afirst%2Dchild%7Bmargin%2Dtop%3A0%7D%2Emedia%2C%2Emedia%2Dbody%7Bzoom%3A1%3Boverflow%3Ahidden%7D%2Emedia%2Dbody%7Bwidth%3A10000px%7D%2Emedia%2Dobject%7Bdisplay%3Ablock%7D%2Emedia%2Dobject%2Eimg%2Dthumbnail%7Bmax%2Dwidth%3Anone%7D%2Emedia%2Dright%2C%2Emedia%3E%2Epull%2Dright%7Bpadding%2Dleft%3A10px%7D%2Emedia%2Dleft%2C%2Emedia%3E%2Epull%2Dleft%7Bpadding%2Dright%3A10px%7D%2Emedia%2Dleft%2C%2Emedia%2Dright%2C%2Emedia%2Dbody%7Bdisplay%3Atable%2Dcell%3Bvertical%2Dalign%3Atop%7D%2Emedia%2Dmiddle%7Bvertical%2Dalign%3Amiddle%7D%2Emedia%2Dbottom%7Bvertical%2Dalign%3Abottom%7D%2Emedia%2Dheading%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A5px%7D%2Emedia%2Dlist%7Bpadding%2Dleft%3A0%3Blist%2Dstyle%3Anone%7D%2Elist%2Dgroup%7Bmargin%2Dbottom%3A20px%3Bpadding%2Dleft%3A0%7D%2Elist%2Dgroup%2Ditem%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bpadding%3A10px%2015px%3Bmargin%2Dbottom%3A%2D1px%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%3A1px%20solid%20%23eeeeee%7D%2Elist%2Dgroup%2Ditem%3Afirst%2Dchild%7Bborder%2Dtop%2Dright%2Dradius%3A4px%3Bborder%2Dtop%2Dleft%2Dradius%3A4px%7D%2Elist%2Dgroup%2Ditem%3Alast%2Dchild%7Bmargin%2Dbottom%3A0%3Bborder%2Dbottom%2Dright%2Dradius%3A4px%3Bborder%2Dbottom%2Dleft%2Dradius%3A4px%7Da%2Elist%2Dgroup%2Ditem%2Cbutton%2Elist%2Dgroup%2Ditem%7Bcolor%3A%23555555%7Da%2Elist%2Dgroup%2Ditem%20%2Elist%2Dgroup%2Ditem%2Dheading%2Cbutton%2Elist%2Dgroup%2Ditem%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3A%23333333%7Da%2Elist%2Dgroup%2Ditem%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%3Afocus%7Btext%2Ddecoration%3Anone%3Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23f5f5f5%7Dbutton%2Elist%2Dgroup%2Ditem%7Bwidth%3A100%25%3Btext%2Dalign%3Aleft%7D%2Elist%2Dgroup%2Ditem%2Edisabled%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Ahover%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Afocus%7Bbackground%2Dcolor%3A%23eeeeee%3Bcolor%3A%23999999%3Bcursor%3Anot%2Dallowed%7D%2Elist%2Dgroup%2Ditem%2Edisabled%20%2Elist%2Dgroup%2Ditem%2Dheading%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dheading%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3Ainherit%7D%2Elist%2Dgroup%2Ditem%2Edisabled%20%2Elist%2Dgroup%2Ditem%2Dtext%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dtext%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dtext%7Bcolor%3A%23999999%7D%2Elist%2Dgroup%2Ditem%2Eactive%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%7Bz%2Dindex%3A2%3Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23158cba%3Bborder%2Dcolor%3A%23158cba%7D%2Elist%2Dgroup%2Ditem%2Eactive%20%2Elist%2Dgroup%2Ditem%2Dheading%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dheading%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dheading%2C%2Elist%2Dgroup%2Ditem%2Eactive%20%2Elist%2Dgroup%2Ditem%2Dheading%3Esmall%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dheading%3Esmall%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dheading%3Esmall%2C%2Elist%2Dgroup%2Ditem%2Eactive%20%2Elist%2Dgroup%2Ditem%2Dheading%3E%2Esmall%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dheading%3E%2Esmall%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dheading%3E%2Esmall%7Bcolor%3Ainherit%7D%2Elist%2Dgroup%2Ditem%2Eactive%20%2Elist%2Dgroup%2Ditem%2Dtext%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dtext%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dtext%7Bcolor%3A%23a6dff5%7D%2Elist%2Dgroup%2Ditem%2Dsuccess%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2328b62c%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%7Bcolor%3A%23ffffff%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%20%2Elist%2Dgroup%2Ditem%2Dheading%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3Ainherit%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Dsuccess%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%3Afocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2323a127%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%2Ca%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Afocus%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23ffffff%7D%2Elist%2Dgroup%2Ditem%2Dinfo%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2375caeb%7Da%2Elist%2Dgroup%2Ditem%2Dinfo%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%7Bcolor%3A%23ffffff%7Da%2Elist%2Dgroup%2Ditem%2Dinfo%20%2Elist%2Dgroup%2Ditem%2Dheading%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3Ainherit%7Da%2Elist%2Dgroup%2Ditem%2Dinfo%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Dinfo%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%3Afocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%235fc1e8%7Da%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%2Ca%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%3Afocus%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23ffffff%7D%2Elist%2Dgroup%2Ditem%2Dwarning%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff851b%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%7Bcolor%3A%23ffffff%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%20%2Elist%2Dgroup%2Ditem%2Dheading%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3Ainherit%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Dwarning%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%3Afocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff7701%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%2Ca%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Afocus%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23ffffff%7D%2Elist%2Dgroup%2Ditem%2Ddanger%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff4136%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%7Bcolor%3A%23ffffff%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%20%2Elist%2Dgroup%2Ditem%2Dheading%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3Ainherit%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Ddanger%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%3Afocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff291c%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%2Ca%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Afocus%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23ffffff%7D%2Elist%2Dgroup%2Ditem%2Dheading%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A5px%7D%2Elist%2Dgroup%2Ditem%2Dtext%7Bmargin%2Dbottom%3A0%3Bline%2Dheight%3A1%2E3%7D%2Epanel%7Bmargin%2Dbottom%3A20px%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dbox%2Dshadow%3A0%201px%201px%20rgba%280%2C0%2C0%2C0%2E05%29%3Bbox%2Dshadow%3A0%201px%201px%20rgba%280%2C0%2C0%2C0%2E05%29%7D%2Epanel%2Dbody%7Bpadding%3A15px%7D%2Epanel%2Dheading%7Bpadding%3A10px%2015px%3Bborder%2Dbottom%3A1px%20solid%20transparent%3Bborder%2Dtop%2Dright%2Dradius%3A3px%3Bborder%2Dtop%2Dleft%2Dradius%3A3px%7D%2Epanel%2Dheading%3E%2Edropdown%20%2Edropdown%2Dtoggle%7Bcolor%3Ainherit%7D%2Epanel%2Dtitle%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A0%3Bfont%2Dsize%3A16px%3Bcolor%3Ainherit%7D%2Epanel%2Dtitle%3Ea%2C%2Epanel%2Dtitle%3Esmall%2C%2Epanel%2Dtitle%3E%2Esmall%2C%2Epanel%2Dtitle%3Esmall%3Ea%2C%2Epanel%2Dtitle%3E%2Esmall%3Ea%7Bcolor%3Ainherit%7D%2Epanel%2Dfooter%7Bpadding%3A10px%2015px%3Bbackground%2Dcolor%3A%23f5f5f5%3Bborder%2Dtop%3A1px%20solid%20transparent%3Bborder%2Dbottom%2Dright%2Dradius%3A3px%3Bborder%2Dbottom%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Elist%2Dgroup%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%7Bmargin%2Dbottom%3A0%7D%2Epanel%3E%2Elist%2Dgroup%20%2Elist%2Dgroup%2Ditem%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%20%2Elist%2Dgroup%2Ditem%7Bborder%2Dwidth%3A1px%200%3Bborder%2Dradius%3A0%7D%2Epanel%3E%2Elist%2Dgroup%3Afirst%2Dchild%20%2Elist%2Dgroup%2Ditem%3Afirst%2Dchild%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%3Afirst%2Dchild%20%2Elist%2Dgroup%2Ditem%3Afirst%2Dchild%7Bborder%2Dtop%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A3px%3Bborder%2Dtop%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Elist%2Dgroup%3Alast%2Dchild%20%2Elist%2Dgroup%2Ditem%3Alast%2Dchild%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%3Alast%2Dchild%20%2Elist%2Dgroup%2Ditem%3Alast%2Dchild%7Bborder%2Dbottom%3A0%3Bborder%2Dbottom%2Dright%2Dradius%3A3px%3Bborder%2Dbottom%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%20%2Elist%2Dgroup%2Ditem%3Afirst%2Dchild%7Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%7D%2Epanel%2Dheading%2B%2Elist%2Dgroup%20%2Elist%2Dgroup%2Ditem%3Afirst%2Dchild%7Bborder%2Dtop%2Dwidth%3A0%7D%2Elist%2Dgroup%2B%2Epanel%2Dfooter%7Bborder%2Dtop%2Dwidth%3A0%7D%2Epanel%3E%2Etable%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Etable%7Bmargin%2Dbottom%3A0%7D%2Epanel%3E%2Etable%20caption%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%20caption%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Etable%20caption%7Bpadding%2Dleft%3A15px%3Bpadding%2Dright%3A15px%7D%2Epanel%3E%2Etable%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%7Bborder%2Dtop%2Dright%2Dradius%3A3px%3Bborder%2Dtop%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%7Bborder%2Dtop%2Dleft%2Dradius%3A3px%3Bborder%2Dtop%2Dright%2Dradius%3A3px%7D%2Epanel%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Afirst%2Dchild%7Bborder%2Dtop%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Alast%2Dchild%7Bborder%2Dtop%2Dright%2Dradius%3A3px%7D%2Epanel%3E%2Etable%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%7Bborder%2Dbottom%2Dright%2Dradius%3A3px%3Bborder%2Dbottom%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%7Bborder%2Dbottom%2Dleft%2Dradius%3A3px%3Bborder%2Dbottom%2Dright%2Dradius%3A3px%7D%2Epanel%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Afirst%2Dchild%7Bborder%2Dbottom%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Alast%2Dchild%7Bborder%2Dbottom%2Dright%2Dradius%3A3px%7D%2Epanel%3E%2Epanel%2Dbody%2B%2Etable%2C%2Epanel%3E%2Epanel%2Dbody%2B%2Etable%2Dresponsive%2C%2Epanel%3E%2Etable%2B%2Epanel%2Dbody%2C%2Epanel%3E%2Etable%2Dresponsive%2B%2Epanel%2Dbody%7Bborder%2Dtop%3A1px%20solid%20%23eeeeee%7D%2Epanel%3E%2Etable%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%2C%2Epanel%3E%2Etable%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%7Bborder%2Dtop%3A0%7D%2Epanel%3E%2Etable%2Dbordered%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%7Bborder%3A0%7D%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Afirst%2Dchild%7Bborder%2Dleft%3A0%7D%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Alast%2Dchild%7Bborder%2Dright%3A0%7D%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Afirst%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Afirst%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Afirst%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Afirst%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Afirst%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Afirst%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Afirst%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Afirst%2Dchild%3Eth%7Bborder%2Dbottom%3A0%7D%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Eth%7Bborder%2Dbottom%3A0%7D%2Epanel%3E%2Etable%2Dresponsive%7Bborder%3A0%3Bmargin%2Dbottom%3A0%7D%2Epanel%2Dgroup%7Bmargin%2Dbottom%3A20px%7D%2Epanel%2Dgroup%20%2Epanel%7Bmargin%2Dbottom%3A0%3Bborder%2Dradius%3A4px%7D%2Epanel%2Dgroup%20%2Epanel%2B%2Epanel%7Bmargin%2Dtop%3A5px%7D%2Epanel%2Dgroup%20%2Epanel%2Dheading%7Bborder%2Dbottom%3A0%7D%2Epanel%2Dgroup%20%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%2C%2Epanel%2Dgroup%20%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%7Bborder%2Dtop%3A1px%20solid%20transparent%7D%2Epanel%2Dgroup%20%2Epanel%2Dfooter%7Bborder%2Dtop%3A0%7D%2Epanel%2Dgroup%20%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%20%2Epanel%2Dbody%7Bborder%2Dbottom%3A1px%20solid%20transparent%7D%2Epanel%2Ddefault%7Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Ddefault%3E%2Epanel%2Dheading%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3A%23f5f5f5%3Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Ddefault%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3Atransparent%7D%2Epanel%2Ddefault%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%23f5f5f5%3Bbackground%2Dcolor%3A%23333333%7D%2Epanel%2Ddefault%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3Atransparent%7D%2Epanel%2Dprimary%7Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Dprimary%3E%2Epanel%2Dheading%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23158cba%3Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Dprimary%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3Atransparent%7D%2Epanel%2Dprimary%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%23158cba%3Bbackground%2Dcolor%3A%23ffffff%7D%2Epanel%2Dprimary%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3Atransparent%7D%2Epanel%2Dsuccess%7Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Dsuccess%3E%2Epanel%2Dheading%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2328b62c%3Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Dsuccess%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3Atransparent%7D%2Epanel%2Dsuccess%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%2328b62c%3Bbackground%2Dcolor%3A%23ffffff%7D%2Epanel%2Dsuccess%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3Atransparent%7D%2Epanel%2Dinfo%7Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Dinfo%3E%2Epanel%2Dheading%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2375caeb%3Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Dinfo%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3Atransparent%7D%2Epanel%2Dinfo%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%2375caeb%3Bbackground%2Dcolor%3A%23ffffff%7D%2Epanel%2Dinfo%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3Atransparent%7D%2Epanel%2Dwarning%7Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Dwarning%3E%2Epanel%2Dheading%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff851b%3Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Dwarning%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3Atransparent%7D%2Epanel%2Dwarning%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%23ff851b%3Bbackground%2Dcolor%3A%23ffffff%7D%2Epanel%2Dwarning%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3Atransparent%7D%2Epanel%2Ddanger%7Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Ddanger%3E%2Epanel%2Dheading%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff4136%3Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Ddanger%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3Atransparent%7D%2Epanel%2Ddanger%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%23ff4136%3Bbackground%2Dcolor%3A%23ffffff%7D%2Epanel%2Ddanger%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3Atransparent%7D%2Eembed%2Dresponsive%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bheight%3A0%3Bpadding%3A0%3Boverflow%3Ahidden%7D%2Eembed%2Dresponsive%20%2Eembed%2Dresponsive%2Ditem%2C%2Eembed%2Dresponsive%20iframe%2C%2Eembed%2Dresponsive%20embed%2C%2Eembed%2Dresponsive%20object%2C%2Eembed%2Dresponsive%20video%7Bposition%3Aabsolute%3Btop%3A0%3Bleft%3A0%3Bbottom%3A0%3Bheight%3A100%25%3Bwidth%3A100%25%3Bborder%3A0%7D%2Eembed%2Dresponsive%2D16by9%7Bpadding%2Dbottom%3A56%2E25%25%7D%2Eembed%2Dresponsive%2D4by3%7Bpadding%2Dbottom%3A75%25%7D%2Ewell%7Bmin%2Dheight%3A20px%3Bpadding%3A19px%3Bmargin%2Dbottom%3A20px%3Bbackground%2Dcolor%3A%23fafafa%3Bborder%3A1px%20solid%20%23e8e8e8%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E05%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E05%29%7D%2Ewell%20blockquote%7Bborder%2Dcolor%3A%23ddd%3Bborder%2Dcolor%3Argba%280%2C0%2C0%2C0%2E15%29%7D%2Ewell%2Dlg%7Bpadding%3A24px%3Bborder%2Dradius%3A5px%7D%2Ewell%2Dsm%7Bpadding%3A9px%3Bborder%2Dradius%3A2px%7D%2Eclose%7Bfloat%3Aright%3Bfont%2Dsize%3A21px%3Bfont%2Dweight%3Abold%3Bline%2Dheight%3A1%3Bcolor%3A%23ffffff%3Btext%2Dshadow%3A0%201px%200%20%23ffffff%3Bopacity%3A0%2E2%3Bfilter%3Aalpha%28opacity%3D20%29%7D%2Eclose%3Ahover%2C%2Eclose%3Afocus%7Bcolor%3A%23ffffff%3Btext%2Ddecoration%3Anone%3Bcursor%3Apointer%3Bopacity%3A0%2E5%3Bfilter%3Aalpha%28opacity%3D50%29%7Dbutton%2Eclose%7Bpadding%3A0%3Bcursor%3Apointer%3Bbackground%3Atransparent%3Bborder%3A0%3B%2Dwebkit%2Dappearance%3Anone%7D%2Emodal%2Dopen%7Boverflow%3Ahidden%7D%2Emodal%7Bdisplay%3Anone%3Boverflow%3Ahidden%3Bposition%3Afixed%3Btop%3A0%3Bright%3A0%3Bbottom%3A0%3Bleft%3A0%3Bz%2Dindex%3A1050%3B%2Dwebkit%2Doverflow%2Dscrolling%3Atouch%3Boutline%3A0%7D%2Emodal%2Efade%20%2Emodal%2Ddialog%7B%2Dwebkit%2Dtransform%3Atranslate%280%2C%20%2D25%25%29%3B%2Dms%2Dtransform%3Atranslate%280%2C%20%2D25%25%29%3B%2Do%2Dtransform%3Atranslate%280%2C%20%2D25%25%29%3Btransform%3Atranslate%280%2C%20%2D25%25%29%3B%2Dwebkit%2Dtransition%3A%2Dwebkit%2Dtransform%20%2E3s%20ease%2Dout%3B%2Do%2Dtransition%3A%2Do%2Dtransform%20%2E3s%20ease%2Dout%3Btransition%3Atransform%20%2E3s%20ease%2Dout%7D%2Emodal%2Ein%20%2Emodal%2Ddialog%7B%2Dwebkit%2Dtransform%3Atranslate%280%2C%200%29%3B%2Dms%2Dtransform%3Atranslate%280%2C%200%29%3B%2Do%2Dtransform%3Atranslate%280%2C%200%29%3Btransform%3Atranslate%280%2C%200%29%7D%2Emodal%2Dopen%20%2Emodal%7Boverflow%2Dx%3Ahidden%3Boverflow%2Dy%3Aauto%7D%2Emodal%2Ddialog%7Bposition%3Arelative%3Bwidth%3Aauto%3Bmargin%3A10px%7D%2Emodal%2Dcontent%7Bposition%3Arelative%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%3A1px%20solid%20%23eeeeee%3Bborder%3A1px%20solid%20rgba%280%2C0%2C0%2C0%2E05%29%3Bborder%2Dradius%3A5px%3B%2Dwebkit%2Dbox%2Dshadow%3A0%203px%209px%20rgba%280%2C0%2C0%2C0%2E5%29%3Bbox%2Dshadow%3A0%203px%209px%20rgba%280%2C0%2C0%2C0%2E5%29%3B%2Dwebkit%2Dbackground%2Dclip%3Apadding%2Dbox%3Bbackground%2Dclip%3Apadding%2Dbox%3Boutline%3A0%7D%2Emodal%2Dbackdrop%7Bposition%3Afixed%3Btop%3A0%3Bright%3A0%3Bbottom%3A0%3Bleft%3A0%3Bz%2Dindex%3A1040%3Bbackground%2Dcolor%3A%23000000%7D%2Emodal%2Dbackdrop%2Efade%7Bopacity%3A0%3Bfilter%3Aalpha%28opacity%3D0%29%7D%2Emodal%2Dbackdrop%2Ein%7Bopacity%3A0%2E5%3Bfilter%3Aalpha%28opacity%3D50%29%7D%2Emodal%2Dheader%7Bpadding%3A15px%3Bborder%2Dbottom%3A1px%20solid%20%23e5e5e5%7D%2Emodal%2Dheader%20%2Eclose%7Bmargin%2Dtop%3A%2D2px%7D%2Emodal%2Dtitle%7Bmargin%3A0%3Bline%2Dheight%3A1%2E42857143%7D%2Emodal%2Dbody%7Bposition%3Arelative%3Bpadding%3A20px%7D%2Emodal%2Dfooter%7Bpadding%3A20px%3Btext%2Dalign%3Aright%3Bborder%2Dtop%3A1px%20solid%20%23e5e5e5%7D%2Emodal%2Dfooter%20%2Ebtn%2B%2Ebtn%7Bmargin%2Dleft%3A5px%3Bmargin%2Dbottom%3A0%7D%2Emodal%2Dfooter%20%2Ebtn%2Dgroup%20%2Ebtn%2B%2Ebtn%7Bmargin%2Dleft%3A%2D1px%7D%2Emodal%2Dfooter%20%2Ebtn%2Dblock%2B%2Ebtn%2Dblock%7Bmargin%2Dleft%3A0%7D%2Emodal%2Dscrollbar%2Dmeasure%7Bposition%3Aabsolute%3Btop%3A%2D9999px%3Bwidth%3A50px%3Bheight%3A50px%3Boverflow%3Ascroll%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Emodal%2Ddialog%7Bwidth%3A600px%3Bmargin%3A30px%20auto%7D%2Emodal%2Dcontent%7B%2Dwebkit%2Dbox%2Dshadow%3A0%205px%2015px%20rgba%280%2C0%2C0%2C0%2E5%29%3Bbox%2Dshadow%3A0%205px%2015px%20rgba%280%2C0%2C0%2C0%2E5%29%7D%2Emodal%2Dsm%7Bwidth%3A300px%7D%7D%40media%20%28min%2Dwidth%3A992px%29%7B%2Emodal%2Dlg%7Bwidth%3A900px%7D%7D%2Etooltip%7Bposition%3Aabsolute%3Bz%2Dindex%3A1070%3Bdisplay%3Ablock%3Bfont%2Dfamily%3A%22Source%20Sans%20Pro%22%2C%22Helvetica%20Neue%22%2CHelvetica%2CArial%2Csans%2Dserif%3Bfont%2Dstyle%3Anormal%3Bfont%2Dweight%3Anormal%3Bletter%2Dspacing%3Anormal%3Bline%2Dbreak%3Aauto%3Bline%2Dheight%3A1%2E42857143%3Btext%2Dalign%3Aleft%3Btext%2Dalign%3Astart%3Btext%2Ddecoration%3Anone%3Btext%2Dshadow%3Anone%3Btext%2Dtransform%3Anone%3Bwhite%2Dspace%3Anormal%3Bword%2Dbreak%3Anormal%3Bword%2Dspacing%3Anormal%3Bword%2Dwrap%3Anormal%3Bfont%2Dsize%3A12px%3Bopacity%3A0%3Bfilter%3Aalpha%28opacity%3D0%29%7D%2Etooltip%2Ein%7Bopacity%3A0%2E9%3Bfilter%3Aalpha%28opacity%3D90%29%7D%2Etooltip%2Etop%7Bmargin%2Dtop%3A%2D3px%3Bpadding%3A5px%200%7D%2Etooltip%2Eright%7Bmargin%2Dleft%3A3px%3Bpadding%3A0%205px%7D%2Etooltip%2Ebottom%7Bmargin%2Dtop%3A3px%3Bpadding%3A5px%200%7D%2Etooltip%2Eleft%7Bmargin%2Dleft%3A%2D3px%3Bpadding%3A0%205px%7D%2Etooltip%2Dinner%7Bmax%2Dwidth%3A200px%3Bpadding%3A3px%208px%3Bcolor%3A%23ffffff%3Btext%2Dalign%3Acenter%3Bbackground%2Dcolor%3A%23000000%3Bborder%2Dradius%3A4px%7D%2Etooltip%2Darrow%7Bposition%3Aabsolute%3Bwidth%3A0%3Bheight%3A0%3Bborder%2Dcolor%3Atransparent%3Bborder%2Dstyle%3Asolid%7D%2Etooltip%2Etop%20%2Etooltip%2Darrow%7Bbottom%3A0%3Bleft%3A50%25%3Bmargin%2Dleft%3A%2D5px%3Bborder%2Dwidth%3A5px%205px%200%3Bborder%2Dtop%2Dcolor%3A%23000000%7D%2Etooltip%2Etop%2Dleft%20%2Etooltip%2Darrow%7Bbottom%3A0%3Bright%3A5px%3Bmargin%2Dbottom%3A%2D5px%3Bborder%2Dwidth%3A5px%205px%200%3Bborder%2Dtop%2Dcolor%3A%23000000%7D%2Etooltip%2Etop%2Dright%20%2Etooltip%2Darrow%7Bbottom%3A0%3Bleft%3A5px%3Bmargin%2Dbottom%3A%2D5px%3Bborder%2Dwidth%3A5px%205px%200%3Bborder%2Dtop%2Dcolor%3A%23000000%7D%2Etooltip%2Eright%20%2Etooltip%2Darrow%7Btop%3A50%25%3Bleft%3A0%3Bmargin%2Dtop%3A%2D5px%3Bborder%2Dwidth%3A5px%205px%205px%200%3Bborder%2Dright%2Dcolor%3A%23000000%7D%2Etooltip%2Eleft%20%2Etooltip%2Darrow%7Btop%3A50%25%3Bright%3A0%3Bmargin%2Dtop%3A%2D5px%3Bborder%2Dwidth%3A5px%200%205px%205px%3Bborder%2Dleft%2Dcolor%3A%23000000%7D%2Etooltip%2Ebottom%20%2Etooltip%2Darrow%7Btop%3A0%3Bleft%3A50%25%3Bmargin%2Dleft%3A%2D5px%3Bborder%2Dwidth%3A0%205px%205px%3Bborder%2Dbottom%2Dcolor%3A%23000000%7D%2Etooltip%2Ebottom%2Dleft%20%2Etooltip%2Darrow%7Btop%3A0%3Bright%3A5px%3Bmargin%2Dtop%3A%2D5px%3Bborder%2Dwidth%3A0%205px%205px%3Bborder%2Dbottom%2Dcolor%3A%23000000%7D%2Etooltip%2Ebottom%2Dright%20%2Etooltip%2Darrow%7Btop%3A0%3Bleft%3A5px%3Bmargin%2Dtop%3A%2D5px%3Bborder%2Dwidth%3A0%205px%205px%3Bborder%2Dbottom%2Dcolor%3A%23000000%7D%2Epopover%7Bposition%3Aabsolute%3Btop%3A0%3Bleft%3A0%3Bz%2Dindex%3A1060%3Bdisplay%3Anone%3Bmax%2Dwidth%3A276px%3Bpadding%3A1px%3Bfont%2Dfamily%3A%22Source%20Sans%20Pro%22%2C%22Helvetica%20Neue%22%2CHelvetica%2CArial%2Csans%2Dserif%3Bfont%2Dstyle%3Anormal%3Bfont%2Dweight%3Anormal%3Bletter%2Dspacing%3Anormal%3Bline%2Dbreak%3Aauto%3Bline%2Dheight%3A1%2E42857143%3Btext%2Dalign%3Aleft%3Btext%2Dalign%3Astart%3Btext%2Ddecoration%3Anone%3Btext%2Dshadow%3Anone%3Btext%2Dtransform%3Anone%3Bwhite%2Dspace%3Anormal%3Bword%2Dbreak%3Anormal%3Bword%2Dspacing%3Anormal%3Bword%2Dwrap%3Anormal%3Bfont%2Dsize%3A14px%3Bbackground%2Dcolor%3A%23ffffff%3B%2Dwebkit%2Dbackground%2Dclip%3Apadding%2Dbox%3Bbackground%2Dclip%3Apadding%2Dbox%3Bborder%3A1px%20solid%20%23cccccc%3Bborder%3A1px%20solid%20rgba%280%2C0%2C0%2C0%2E2%29%3Bborder%2Dradius%3A5px%3B%2Dwebkit%2Dbox%2Dshadow%3A0%205px%2010px%20rgba%280%2C0%2C0%2C0%2E2%29%3Bbox%2Dshadow%3A0%205px%2010px%20rgba%280%2C0%2C0%2C0%2E2%29%7D%2Epopover%2Etop%7Bmargin%2Dtop%3A%2D10px%7D%2Epopover%2Eright%7Bmargin%2Dleft%3A10px%7D%2Epopover%2Ebottom%7Bmargin%2Dtop%3A10px%7D%2Epopover%2Eleft%7Bmargin%2Dleft%3A%2D10px%7D%2Epopover%2Dtitle%7Bmargin%3A0%3Bpadding%3A8px%2014px%3Bfont%2Dsize%3A14px%3Bbackground%2Dcolor%3A%23f7f7f7%3Bborder%2Dbottom%3A1px%20solid%20%23ebebeb%3Bborder%2Dradius%3A4px%204px%200%200%7D%2Epopover%2Dcontent%7Bpadding%3A9px%2014px%7D%2Epopover%3E%2Earrow%2C%2Epopover%3E%2Earrow%3Aafter%7Bposition%3Aabsolute%3Bdisplay%3Ablock%3Bwidth%3A0%3Bheight%3A0%3Bborder%2Dcolor%3Atransparent%3Bborder%2Dstyle%3Asolid%7D%2Epopover%3E%2Earrow%7Bborder%2Dwidth%3A11px%7D%2Epopover%3E%2Earrow%3Aafter%7Bborder%2Dwidth%3A10px%3Bcontent%3A%22%22%7D%2Epopover%2Etop%3E%2Earrow%7Bleft%3A50%25%3Bmargin%2Dleft%3A%2D11px%3Bborder%2Dbottom%2Dwidth%3A0%3Bborder%2Dtop%2Dcolor%3A%23999999%3Bborder%2Dtop%2Dcolor%3Argba%280%2C0%2C0%2C0%2E25%29%3Bbottom%3A%2D11px%7D%2Epopover%2Etop%3E%2Earrow%3Aafter%7Bcontent%3A%22%20%22%3Bbottom%3A1px%3Bmargin%2Dleft%3A%2D10px%3Bborder%2Dbottom%2Dwidth%3A0%3Bborder%2Dtop%2Dcolor%3A%23ffffff%7D%2Epopover%2Eright%3E%2Earrow%7Btop%3A50%25%3Bleft%3A%2D11px%3Bmargin%2Dtop%3A%2D11px%3Bborder%2Dleft%2Dwidth%3A0%3Bborder%2Dright%2Dcolor%3A%23999999%3Bborder%2Dright%2Dcolor%3Argba%280%2C0%2C0%2C0%2E25%29%7D%2Epopover%2Eright%3E%2Earrow%3Aafter%7Bcontent%3A%22%20%22%3Bleft%3A1px%3Bbottom%3A%2D10px%3Bborder%2Dleft%2Dwidth%3A0%3Bborder%2Dright%2Dcolor%3A%23ffffff%7D%2Epopover%2Ebottom%3E%2Earrow%7Bleft%3A50%25%3Bmargin%2Dleft%3A%2D11px%3Bborder%2Dtop%2Dwidth%3A0%3Bborder%2Dbottom%2Dcolor%3A%23999999%3Bborder%2Dbottom%2Dcolor%3Argba%280%2C0%2C0%2C0%2E25%29%3Btop%3A%2D11px%7D%2Epopover%2Ebottom%3E%2Earrow%3Aafter%7Bcontent%3A%22%20%22%3Btop%3A1px%3Bmargin%2Dleft%3A%2D10px%3Bborder%2Dtop%2Dwidth%3A0%3Bborder%2Dbottom%2Dcolor%3A%23ffffff%7D%2Epopover%2Eleft%3E%2Earrow%7Btop%3A50%25%3Bright%3A%2D11px%3Bmargin%2Dtop%3A%2D11px%3Bborder%2Dright%2Dwidth%3A0%3Bborder%2Dleft%2Dcolor%3A%23999999%3Bborder%2Dleft%2Dcolor%3Argba%280%2C0%2C0%2C0%2E25%29%7D%2Epopover%2Eleft%3E%2Earrow%3Aafter%7Bcontent%3A%22%20%22%3Bright%3A1px%3Bborder%2Dright%2Dwidth%3A0%3Bborder%2Dleft%2Dcolor%3A%23ffffff%3Bbottom%3A%2D10px%7D%2Ecarousel%7Bposition%3Arelative%7D%2Ecarousel%2Dinner%7Bposition%3Arelative%3Boverflow%3Ahidden%3Bwidth%3A100%25%7D%2Ecarousel%2Dinner%3E%2Eitem%7Bdisplay%3Anone%3Bposition%3Arelative%3B%2Dwebkit%2Dtransition%3A%2E6s%20ease%2Din%2Dout%20left%3B%2Do%2Dtransition%3A%2E6s%20ease%2Din%2Dout%20left%3Btransition%3A%2E6s%20ease%2Din%2Dout%20left%7D%2Ecarousel%2Dinner%3E%2Eitem%3Eimg%2C%2Ecarousel%2Dinner%3E%2Eitem%3Ea%3Eimg%7Bline%2Dheight%3A1%7D%40media%20all%20and%20%28transform%2D3d%29%2C%28%2Dwebkit%2Dtransform%2D3d%29%7B%2Ecarousel%2Dinner%3E%2Eitem%7B%2Dwebkit%2Dtransition%3A%2Dwebkit%2Dtransform%20%2E6s%20ease%2Din%2Dout%3B%2Do%2Dtransition%3A%2Do%2Dtransform%20%2E6s%20ease%2Din%2Dout%3Btransition%3Atransform%20%2E6s%20ease%2Din%2Dout%3B%2Dwebkit%2Dbackface%2Dvisibility%3Ahidden%3Bbackface%2Dvisibility%3Ahidden%3B%2Dwebkit%2Dperspective%3A1000px%3Bperspective%3A1000px%7D%2Ecarousel%2Dinner%3E%2Eitem%2Enext%2C%2Ecarousel%2Dinner%3E%2Eitem%2Eactive%2Eright%7B%2Dwebkit%2Dtransform%3Atranslate3d%28100%25%2C%200%2C%200%29%3Btransform%3Atranslate3d%28100%25%2C%200%2C%200%29%3Bleft%3A0%7D%2Ecarousel%2Dinner%3E%2Eitem%2Eprev%2C%2Ecarousel%2Dinner%3E%2Eitem%2Eactive%2Eleft%7B%2Dwebkit%2Dtransform%3Atranslate3d%28%2D100%25%2C%200%2C%200%29%3Btransform%3Atranslate3d%28%2D100%25%2C%200%2C%200%29%3Bleft%3A0%7D%2Ecarousel%2Dinner%3E%2Eitem%2Enext%2Eleft%2C%2Ecarousel%2Dinner%3E%2Eitem%2Eprev%2Eright%2C%2Ecarousel%2Dinner%3E%2Eitem%2Eactive%7B%2Dwebkit%2Dtransform%3Atranslate3d%280%2C%200%2C%200%29%3Btransform%3Atranslate3d%280%2C%200%2C%200%29%3Bleft%3A0%7D%7D%2Ecarousel%2Dinner%3E%2Eactive%2C%2Ecarousel%2Dinner%3E%2Enext%2C%2Ecarousel%2Dinner%3E%2Eprev%7Bdisplay%3Ablock%7D%2Ecarousel%2Dinner%3E%2Eactive%7Bleft%3A0%7D%2Ecarousel%2Dinner%3E%2Enext%2C%2Ecarousel%2Dinner%3E%2Eprev%7Bposition%3Aabsolute%3Btop%3A0%3Bwidth%3A100%25%7D%2Ecarousel%2Dinner%3E%2Enext%7Bleft%3A100%25%7D%2Ecarousel%2Dinner%3E%2Eprev%7Bleft%3A%2D100%25%7D%2Ecarousel%2Dinner%3E%2Enext%2Eleft%2C%2Ecarousel%2Dinner%3E%2Eprev%2Eright%7Bleft%3A0%7D%2Ecarousel%2Dinner%3E%2Eactive%2Eleft%7Bleft%3A%2D100%25%7D%2Ecarousel%2Dinner%3E%2Eactive%2Eright%7Bleft%3A100%25%7D%2Ecarousel%2Dcontrol%7Bposition%3Aabsolute%3Btop%3A0%3Bleft%3A0%3Bbottom%3A0%3Bwidth%3A15%25%3Bopacity%3A0%2E5%3Bfilter%3Aalpha%28opacity%3D50%29%3Bfont%2Dsize%3A20px%3Bcolor%3A%23ffffff%3Btext%2Dalign%3Acenter%3Btext%2Dshadow%3A0%201px%202px%20rgba%280%2C0%2C0%2C0%2E6%29%3Bbackground%2Dcolor%3Argba%280%2C0%2C0%2C0%29%7D%2Ecarousel%2Dcontrol%2Eleft%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%28left%2C%20rgba%280%2C0%2C0%2C0%2E5%29%200%2C%20rgba%280%2C0%2C0%2C0%2E0001%29%20100%25%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%28left%2C%20rgba%280%2C0%2C0%2C0%2E5%29%200%2C%20rgba%280%2C0%2C0%2C0%2E0001%29%20100%25%29%3Bbackground%2Dimage%3A%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20right%20top%2C%20from%28rgba%280%2C0%2C0%2C0%2E5%29%29%2C%20to%28rgba%280%2C0%2C0%2C0%2E0001%29%29%29%3Bbackground%2Dimage%3Alinear%2Dgradient%28to%20right%2C%20rgba%280%2C0%2C0%2C0%2E5%29%200%2C%20rgba%280%2C0%2C0%2C0%2E0001%29%20100%25%29%3Bbackground%2Drepeat%3Arepeat%2Dx%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28startColorstr%3D%27%2380000000%27%2C%20endColorstr%3D%27%2300000000%27%2C%20GradientType%3D1%29%7D%2Ecarousel%2Dcontrol%2Eright%7Bleft%3Aauto%3Bright%3A0%3Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%28left%2C%20rgba%280%2C0%2C0%2C0%2E0001%29%200%2C%20rgba%280%2C0%2C0%2C0%2E5%29%20100%25%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%28left%2C%20rgba%280%2C0%2C0%2C0%2E0001%29%200%2C%20rgba%280%2C0%2C0%2C0%2E5%29%20100%25%29%3Bbackground%2Dimage%3A%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20right%20top%2C%20from%28rgba%280%2C0%2C0%2C0%2E0001%29%29%2C%20to%28rgba%280%2C0%2C0%2C0%2E5%29%29%29%3Bbackground%2Dimage%3Alinear%2Dgradient%28to%20right%2C%20rgba%280%2C0%2C0%2C0%2E0001%29%200%2C%20rgba%280%2C0%2C0%2C0%2E5%29%20100%25%29%3Bbackground%2Drepeat%3Arepeat%2Dx%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28startColorstr%3D%27%2300000000%27%2C%20endColorstr%3D%27%2380000000%27%2C%20GradientType%3D1%29%7D%2Ecarousel%2Dcontrol%3Ahover%2C%2Ecarousel%2Dcontrol%3Afocus%7Boutline%3A0%3Bcolor%3A%23ffffff%3Btext%2Ddecoration%3Anone%3Bopacity%3A0%2E9%3Bfilter%3Aalpha%28opacity%3D90%29%7D%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%2C%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dleft%2C%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dright%7Bposition%3Aabsolute%3Btop%3A50%25%3Bmargin%2Dtop%3A%2D10px%3Bz%2Dindex%3A5%3Bdisplay%3Ainline%2Dblock%7D%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%2C%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dleft%7Bleft%3A50%25%3Bmargin%2Dleft%3A%2D10px%7D%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%2C%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dright%7Bright%3A50%25%3Bmargin%2Dright%3A%2D10px%7D%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%7Bwidth%3A20px%3Bheight%3A20px%3Bline%2Dheight%3A1%3Bfont%2Dfamily%3Aserif%7D%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%3Abefore%7Bcontent%3A%27%5C2039%27%7D%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%3Abefore%7Bcontent%3A%27%5C203a%27%7D%2Ecarousel%2Dindicators%7Bposition%3Aabsolute%3Bbottom%3A10px%3Bleft%3A50%25%3Bz%2Dindex%3A15%3Bwidth%3A60%25%3Bmargin%2Dleft%3A%2D30%25%3Bpadding%2Dleft%3A0%3Blist%2Dstyle%3Anone%3Btext%2Dalign%3Acenter%7D%2Ecarousel%2Dindicators%20li%7Bdisplay%3Ainline%2Dblock%3Bwidth%3A10px%3Bheight%3A10px%3Bmargin%3A1px%3Btext%2Dindent%3A%2D999px%3Bborder%3A1px%20solid%20%23ffffff%3Bborder%2Dradius%3A10px%3Bcursor%3Apointer%3Bbackground%2Dcolor%3A%23000%20%5C9%3Bbackground%2Dcolor%3Argba%280%2C0%2C0%2C0%29%7D%2Ecarousel%2Dindicators%20%2Eactive%7Bmargin%3A0%3Bwidth%3A12px%3Bheight%3A12px%3Bbackground%2Dcolor%3A%23ffffff%7D%2Ecarousel%2Dcaption%7Bposition%3Aabsolute%3Bleft%3A15%25%3Bright%3A15%25%3Bbottom%3A20px%3Bz%2Dindex%3A10%3Bpadding%2Dtop%3A20px%3Bpadding%2Dbottom%3A20px%3Bcolor%3A%23ffffff%3Btext%2Dalign%3Acenter%3Btext%2Dshadow%3A0%201px%202px%20rgba%280%2C0%2C0%2C0%2E6%29%7D%2Ecarousel%2Dcaption%20%2Ebtn%7Btext%2Dshadow%3Anone%7D%40media%20screen%20and%20%28min%2Dwidth%3A768px%29%7B%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dleft%2C%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dright%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%7Bwidth%3A30px%3Bheight%3A30px%3Bmargin%2Dtop%3A%2D10px%3Bfont%2Dsize%3A30px%7D%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dleft%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%7Bmargin%2Dleft%3A%2D10px%7D%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dright%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%7Bmargin%2Dright%3A%2D10px%7D%2Ecarousel%2Dcaption%7Bleft%3A20%25%3Bright%3A20%25%3Bpadding%2Dbottom%3A30px%7D%2Ecarousel%2Dindicators%7Bbottom%3A20px%7D%7D%2Eclearfix%3Abefore%2C%2Eclearfix%3Aafter%2C%2Edl%2Dhorizontal%20dd%3Abefore%2C%2Edl%2Dhorizontal%20dd%3Aafter%2C%2Econtainer%3Abefore%2C%2Econtainer%3Aafter%2C%2Econtainer%2Dfluid%3Abefore%2C%2Econtainer%2Dfluid%3Aafter%2C%2Erow%3Abefore%2C%2Erow%3Aafter%2C%2Eform%2Dhorizontal%20%2Eform%2Dgroup%3Abefore%2C%2Eform%2Dhorizontal%20%2Eform%2Dgroup%3Aafter%2C%2Ebtn%2Dtoolbar%3Abefore%2C%2Ebtn%2Dtoolbar%3Aafter%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Abefore%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Aafter%2C%2Enav%3Abefore%2C%2Enav%3Aafter%2C%2Enavbar%3Abefore%2C%2Enavbar%3Aafter%2C%2Enavbar%2Dheader%3Abefore%2C%2Enavbar%2Dheader%3Aafter%2C%2Enavbar%2Dcollapse%3Abefore%2C%2Enavbar%2Dcollapse%3Aafter%2C%2Epager%3Abefore%2C%2Epager%3Aafter%2C%2Epanel%2Dbody%3Abefore%2C%2Epanel%2Dbody%3Aafter%2C%2Emodal%2Dheader%3Abefore%2C%2Emodal%2Dheader%3Aafter%2C%2Emodal%2Dfooter%3Abefore%2C%2Emodal%2Dfooter%3Aafter%7Bcontent%3A%22%20%22%3Bdisplay%3Atable%7D%2Eclearfix%3Aafter%2C%2Edl%2Dhorizontal%20dd%3Aafter%2C%2Econtainer%3Aafter%2C%2Econtainer%2Dfluid%3Aafter%2C%2Erow%3Aafter%2C%2Eform%2Dhorizontal%20%2Eform%2Dgroup%3Aafter%2C%2Ebtn%2Dtoolbar%3Aafter%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Aafter%2C%2Enav%3Aafter%2C%2Enavbar%3Aafter%2C%2Enavbar%2Dheader%3Aafter%2C%2Enavbar%2Dcollapse%3Aafter%2C%2Epager%3Aafter%2C%2Epanel%2Dbody%3Aafter%2C%2Emodal%2Dheader%3Aafter%2C%2Emodal%2Dfooter%3Aafter%7Bclear%3Aboth%7D%2Ecenter%2Dblock%7Bdisplay%3Ablock%3Bmargin%2Dleft%3Aauto%3Bmargin%2Dright%3Aauto%7D%2Epull%2Dright%7Bfloat%3Aright%20%21important%7D%2Epull%2Dleft%7Bfloat%3Aleft%20%21important%7D%2Ehide%7Bdisplay%3Anone%20%21important%7D%2Eshow%7Bdisplay%3Ablock%20%21important%7D%2Einvisible%7Bvisibility%3Ahidden%7D%2Etext%2Dhide%7Bfont%3A0%2F0%20a%3Bcolor%3Atransparent%3Btext%2Dshadow%3Anone%3Bbackground%2Dcolor%3Atransparent%3Bborder%3A0%7D%2Ehidden%7Bdisplay%3Anone%20%21important%7D%2Eaffix%7Bposition%3Afixed%7D%40%2Dms%2Dviewport%7Bwidth%3Adevice%2Dwidth%7D%2Evisible%2Dxs%2C%2Evisible%2Dsm%2C%2Evisible%2Dmd%2C%2Evisible%2Dlg%7Bdisplay%3Anone%20%21important%7D%2Evisible%2Dxs%2Dblock%2C%2Evisible%2Dxs%2Dinline%2C%2Evisible%2Dxs%2Dinline%2Dblock%2C%2Evisible%2Dsm%2Dblock%2C%2Evisible%2Dsm%2Dinline%2C%2Evisible%2Dsm%2Dinline%2Dblock%2C%2Evisible%2Dmd%2Dblock%2C%2Evisible%2Dmd%2Dinline%2C%2Evisible%2Dmd%2Dinline%2Dblock%2C%2Evisible%2Dlg%2Dblock%2C%2Evisible%2Dlg%2Dinline%2C%2Evisible%2Dlg%2Dinline%2Dblock%7Bdisplay%3Anone%20%21important%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Evisible%2Dxs%7Bdisplay%3Ablock%20%21important%7Dtable%2Evisible%2Dxs%7Bdisplay%3Atable%20%21important%7Dtr%2Evisible%2Dxs%7Bdisplay%3Atable%2Drow%20%21important%7Dth%2Evisible%2Dxs%2Ctd%2Evisible%2Dxs%7Bdisplay%3Atable%2Dcell%20%21important%7D%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Evisible%2Dxs%2Dblock%7Bdisplay%3Ablock%20%21important%7D%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Evisible%2Dxs%2Dinline%7Bdisplay%3Ainline%20%21important%7D%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Evisible%2Dxs%2Dinline%2Dblock%7Bdisplay%3Ainline%2Dblock%20%21important%7D%7D%40media%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Evisible%2Dsm%7Bdisplay%3Ablock%20%21important%7Dtable%2Evisible%2Dsm%7Bdisplay%3Atable%20%21important%7Dtr%2Evisible%2Dsm%7Bdisplay%3Atable%2Drow%20%21important%7Dth%2Evisible%2Dsm%2Ctd%2Evisible%2Dsm%7Bdisplay%3Atable%2Dcell%20%21important%7D%7D%40media%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Evisible%2Dsm%2Dblock%7Bdisplay%3Ablock%20%21important%7D%7D%40media%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Evisible%2Dsm%2Dinline%7Bdisplay%3Ainline%20%21important%7D%7D%40media%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Evisible%2Dsm%2Dinline%2Dblock%7Bdisplay%3Ainline%2Dblock%20%21important%7D%7D%40media%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Evisible%2Dmd%7Bdisplay%3Ablock%20%21important%7Dtable%2Evisible%2Dmd%7Bdisplay%3Atable%20%21important%7Dtr%2Evisible%2Dmd%7Bdisplay%3Atable%2Drow%20%21important%7Dth%2Evisible%2Dmd%2Ctd%2Evisible%2Dmd%7Bdisplay%3Atable%2Dcell%20%21important%7D%7D%40media%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Evisible%2Dmd%2Dblock%7Bdisplay%3Ablock%20%21important%7D%7D%40media%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Evisible%2Dmd%2Dinline%7Bdisplay%3Ainline%20%21important%7D%7D%40media%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Evisible%2Dmd%2Dinline%2Dblock%7Bdisplay%3Ainline%2Dblock%20%21important%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Evisible%2Dlg%7Bdisplay%3Ablock%20%21important%7Dtable%2Evisible%2Dlg%7Bdisplay%3Atable%20%21important%7Dtr%2Evisible%2Dlg%7Bdisplay%3Atable%2Drow%20%21important%7Dth%2Evisible%2Dlg%2Ctd%2Evisible%2Dlg%7Bdisplay%3Atable%2Dcell%20%21important%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Evisible%2Dlg%2Dblock%7Bdisplay%3Ablock%20%21important%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Evisible%2Dlg%2Dinline%7Bdisplay%3Ainline%20%21important%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Evisible%2Dlg%2Dinline%2Dblock%7Bdisplay%3Ainline%2Dblock%20%21important%7D%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Ehidden%2Dxs%7Bdisplay%3Anone%20%21important%7D%7D%40media%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Ehidden%2Dsm%7Bdisplay%3Anone%20%21important%7D%7D%40media%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Ehidden%2Dmd%7Bdisplay%3Anone%20%21important%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Ehidden%2Dlg%7Bdisplay%3Anone%20%21important%7D%7D%2Evisible%2Dprint%7Bdisplay%3Anone%20%21important%7D%40media%20print%7B%2Evisible%2Dprint%7Bdisplay%3Ablock%20%21important%7Dtable%2Evisible%2Dprint%7Bdisplay%3Atable%20%21important%7Dtr%2Evisible%2Dprint%7Bdisplay%3Atable%2Drow%20%21important%7Dth%2Evisible%2Dprint%2Ctd%2Evisible%2Dprint%7Bdisplay%3Atable%2Dcell%20%21important%7D%7D%2Evisible%2Dprint%2Dblock%7Bdisplay%3Anone%20%21important%7D%40media%20print%7B%2Evisible%2Dprint%2Dblock%7Bdisplay%3Ablock%20%21important%7D%7D%2Evisible%2Dprint%2Dinline%7Bdisplay%3Anone%20%21important%7D%40media%20print%7B%2Evisible%2Dprint%2Dinline%7Bdisplay%3Ainline%20%21important%7D%7D%2Evisible%2Dprint%2Dinline%2Dblock%7Bdisplay%3Anone%20%21important%7D%40media%20print%7B%2Evisible%2Dprint%2Dinline%2Dblock%7Bdisplay%3Ainline%2Dblock%20%21important%7D%7D%40media%20print%7B%2Ehidden%2Dprint%7Bdisplay%3Anone%20%21important%7D%7D%2Enavbar%7Bborder%2Dwidth%3A0%201px%204px%201px%7D%2Ebtn%7Bpadding%3A9px%2012px%207px%3Bborder%2Dwidth%3A0%201px%204px%201px%3Bfont%2Dsize%3A12px%3Bfont%2Dweight%3Abold%3Btext%2Dtransform%3Auppercase%7D%2Ebtn%3Ahover%7Bmargin%2Dtop%3A1px%3Bborder%2Dbottom%2Dwidth%3A3px%7D%2Ebtn%3Aactive%7Bmargin%2Dtop%3A2px%3Bborder%2Dbottom%2Dwidth%3A2px%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Ebtn%2Dlg%2C%2Ebtn%2Dgroup%2Dlg%3E%2Ebtn%7Bpadding%3A15px%2016px%2013px%3Bline%2Dheight%3A15px%7D%2Ebtn%2Dsm%2C%2Ebtn%2Dgroup%2Dsm%3E%2Ebtn%7Bpadding%3A6px%2010px%204px%7D%2Ebtn%2Dxs%2C%2Ebtn%2Dgroup%2Dxs%3E%2Ebtn%7Bpadding%3A3px%205px%201px%7D%2Ebtn%2Ddefault%3Ahover%2C%2Ebtn%2Ddefault%3Afocus%2C%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%7Bbackground%2Dcolor%3A%23eeeeee%3Bborder%2Dcolor%3A%23e2e2e2%7D%2Ebtn%2Dprimary%3Ahover%2C%2Ebtn%2Dprimary%3Afocus%2C%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%7Bbackground%2Dcolor%3A%23158cba%3Bborder%2Dcolor%3A%23127ba3%7D%2Ebtn%2Dsuccess%3Ahover%2C%2Ebtn%2Dsuccess%3Afocus%2C%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%7Bbackground%2Dcolor%3A%2328b62c%3Bborder%2Dcolor%3A%2323a127%7D%2Ebtn%2Dinfo%3Ahover%2C%2Ebtn%2Dinfo%3Afocus%2C%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%7Bbackground%2Dcolor%3A%2375caeb%3Bborder%2Dcolor%3A%235fc1e8%7D%2Ebtn%2Dwarning%3Ahover%2C%2Ebtn%2Dwarning%3Afocus%2C%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%7Bbackground%2Dcolor%3A%23ff851b%3Bborder%2Dcolor%3A%23ff7701%7D%2Ebtn%2Ddanger%3Ahover%2C%2Ebtn%2Ddanger%3Afocus%2C%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%7Bbackground%2Dcolor%3A%23ff4136%3Bborder%2Dcolor%3A%23ff291c%7D%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%7B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Enavbar%2Dbtn%3Ahover%7Bmargin%2Dtop%3A8px%7D%2Enavbar%2Dbtn%3Aactive%7Bmargin%2Dtop%3A9px%7D%2Enavbar%2Dbtn%2Ebtn%2Dsm%3Ahover%7Bmargin%2Dtop%3A11px%7D%2Enavbar%2Dbtn%2Ebtn%2Dsm%3Aactive%7Bmargin%2Dtop%3A12px%7D%2Enavbar%2Dbtn%2Ebtn%2Dxs%3Ahover%7Bmargin%2Dtop%3A15px%7D%2Enavbar%2Dbtn%2Ebtn%2Dxs%3Aactive%7Bmargin%2Dtop%3A16px%7D%2Ebtn%2Dgroup%2Dvertical%20%2Ebtn%2B%2Ebtn%3Ahover%7Bborder%2Dtop%2Dwidth%3A1px%7D%2Ebtn%2Dgroup%2Dvertical%20%2Ebtn%2B%2Ebtn%3Aactive%7Bborder%2Dtop%2Dwidth%3A2px%7D%2Etext%2Dprimary%2C%2Etext%2Dprimary%3Ahover%7Bcolor%3A%23158cba%7D%2Etext%2Dsuccess%2C%2Etext%2Dsuccess%3Ahover%7Bcolor%3A%2328b62c%7D%2Etext%2Ddanger%2C%2Etext%2Ddanger%3Ahover%7Bcolor%3A%23ff4136%7D%2Etext%2Dwarning%2C%2Etext%2Dwarning%3Ahover%7Bcolor%3A%23ff851b%7D%2Etext%2Dinfo%2C%2Etext%2Dinfo%3Ahover%7Bcolor%3A%2375caeb%7Dtable%20a%3Anot%28%2Ebtn%29%2C%2Etable%20a%3Anot%28%2Ebtn%29%7Btext%2Ddecoration%3Aunderline%7Dtable%20%2Edropdown%2Dmenu%20a%2C%2Etable%20%2Edropdown%2Dmenu%20a%7Btext%2Ddecoration%3Anone%7Dtable%20%2Esuccess%2C%2Etable%20%2Esuccess%2Ctable%20%2Ewarning%2C%2Etable%20%2Ewarning%2Ctable%20%2Edanger%2C%2Etable%20%2Edanger%2Ctable%20%2Einfo%2C%2Etable%20%2Einfo%7Bcolor%3A%23fff%7Dtable%20%2Esuccess%20a%3Anot%28%2Ebtn%29%2C%2Etable%20%2Esuccess%20a%3Anot%28%2Ebtn%29%2Ctable%20%2Ewarning%20a%3Anot%28%2Ebtn%29%2C%2Etable%20%2Ewarning%20a%3Anot%28%2Ebtn%29%2Ctable%20%2Edanger%20a%3Anot%28%2Ebtn%29%2C%2Etable%20%2Edanger%20a%3Anot%28%2Ebtn%29%2Ctable%20%2Einfo%20a%3Anot%28%2Ebtn%29%2C%2Etable%20%2Einfo%20a%3Anot%28%2Ebtn%29%7Bcolor%3A%23fff%7Dtable%3Anot%28%2Etable%2Dbordered%29%3Ethead%3Etr%3Eth%2C%2Etable%3Anot%28%2Etable%2Dbordered%29%3Ethead%3Etr%3Eth%2Ctable%3Anot%28%2Etable%2Dbordered%29%3Etbody%3Etr%3Eth%2C%2Etable%3Anot%28%2Etable%2Dbordered%29%3Etbody%3Etr%3Eth%2Ctable%3Anot%28%2Etable%2Dbordered%29%3Etfoot%3Etr%3Eth%2C%2Etable%3Anot%28%2Etable%2Dbordered%29%3Etfoot%3Etr%3Eth%2Ctable%3Anot%28%2Etable%2Dbordered%29%3Ethead%3Etr%3Etd%2C%2Etable%3Anot%28%2Etable%2Dbordered%29%3Ethead%3Etr%3Etd%2Ctable%3Anot%28%2Etable%2Dbordered%29%3Etbody%3Etr%3Etd%2C%2Etable%3Anot%28%2Etable%2Dbordered%29%3Etbody%3Etr%3Etd%2Ctable%3Anot%28%2Etable%2Dbordered%29%3Etfoot%3Etr%3Etd%2C%2Etable%3Anot%28%2Etable%2Dbordered%29%3Etfoot%3Etr%3Etd%7Bborder%2Dcolor%3Atransparent%7D%2Eform%2Dcontrol%7B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E075%29%3Bbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E075%29%7Dlabel%7Bfont%2Dweight%3Anormal%7D%2Ehas%2Dwarning%20%2Ehelp%2Dblock%2C%2Ehas%2Dwarning%20%2Econtrol%2Dlabel%2C%2Ehas%2Dwarning%20%2Eradio%2C%2Ehas%2Dwarning%20%2Echeckbox%2C%2Ehas%2Dwarning%20%2Eradio%2Dinline%2C%2Ehas%2Dwarning%20%2Echeckbox%2Dinline%2C%2Ehas%2Dwarning%2Eradio%20label%2C%2Ehas%2Dwarning%2Echeckbox%20label%2C%2Ehas%2Dwarning%2Eradio%2Dinline%20label%2C%2Ehas%2Dwarning%2Echeckbox%2Dinline%20label%2C%2Ehas%2Dwarning%20%2Eform%2Dcontrol%2Dfeedback%7Bcolor%3A%23ff851b%7D%2Ehas%2Dwarning%20%2Eform%2Dcontrol%2C%2Ehas%2Dwarning%20%2Eform%2Dcontrol%3Afocus%7Bborder%3A1px%20solid%20%23ff851b%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E075%29%3Bbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E075%29%7D%2Ehas%2Dwarning%20%2Einput%2Dgroup%2Daddon%7Bborder%3A1px%20solid%20%23ff851b%7D%2Ehas%2Derror%20%2Ehelp%2Dblock%2C%2Ehas%2Derror%20%2Econtrol%2Dlabel%2C%2Ehas%2Derror%20%2Eradio%2C%2Ehas%2Derror%20%2Echeckbox%2C%2Ehas%2Derror%20%2Eradio%2Dinline%2C%2Ehas%2Derror%20%2Echeckbox%2Dinline%2C%2Ehas%2Derror%2Eradio%20label%2C%2Ehas%2Derror%2Echeckbox%20label%2C%2Ehas%2Derror%2Eradio%2Dinline%20label%2C%2Ehas%2Derror%2Echeckbox%2Dinline%20label%2C%2Ehas%2Derror%20%2Eform%2Dcontrol%2Dfeedback%7Bcolor%3A%23ff4136%7D%2Ehas%2Derror%20%2Eform%2Dcontrol%2C%2Ehas%2Derror%20%2Eform%2Dcontrol%3Afocus%7Bborder%3A1px%20solid%20%23ff4136%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E075%29%3Bbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E075%29%7D%2Ehas%2Derror%20%2Einput%2Dgroup%2Daddon%7Bborder%3A1px%20solid%20%23ff4136%7D%2Ehas%2Dsuccess%20%2Ehelp%2Dblock%2C%2Ehas%2Dsuccess%20%2Econtrol%2Dlabel%2C%2Ehas%2Dsuccess%20%2Eradio%2C%2Ehas%2Dsuccess%20%2Echeckbox%2C%2Ehas%2Dsuccess%20%2Eradio%2Dinline%2C%2Ehas%2Dsuccess%20%2Echeckbox%2Dinline%2C%2Ehas%2Dsuccess%2Eradio%20label%2C%2Ehas%2Dsuccess%2Echeckbox%20label%2C%2Ehas%2Dsuccess%2Eradio%2Dinline%20label%2C%2Ehas%2Dsuccess%2Echeckbox%2Dinline%20label%2C%2Ehas%2Dsuccess%20%2Eform%2Dcontrol%2Dfeedback%7Bcolor%3A%2328b62c%7D%2Ehas%2Dsuccess%20%2Eform%2Dcontrol%2C%2Ehas%2Dsuccess%20%2Eform%2Dcontrol%3Afocus%7Bborder%3A1px%20solid%20%2328b62c%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E075%29%3Bbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E075%29%7D%2Ehas%2Dsuccess%20%2Einput%2Dgroup%2Daddon%7Bborder%3A1px%20solid%20%2328b62c%7D%2Enav%20%2Eopen%3Ea%2C%2Enav%20%2Eopen%3Ea%3Ahover%2C%2Enav%20%2Eopen%3Ea%3Afocus%7Bborder%2Dcolor%3Atransparent%7D%2Enav%2Dtabs%3Eli%3Ea%7Bmargin%2Dtop%3A6px%3Bborder%2Dcolor%3A%23e7e7e7%3Bcolor%3A%23333333%3B%2Dwebkit%2Dtransition%3Aall%20%2E2s%20ease%2Din%2Dout%3B%2Do%2Dtransition%3Aall%20%2E2s%20ease%2Din%2Dout%3Btransition%3Aall%20%2E2s%20ease%2Din%2Dout%7D%2Enav%2Dtabs%3Eli%3Ea%3Ahover%2C%2Enav%2Dtabs%3Eli%3Ea%3Afocus%2C%2Enav%2Dtabs%3Eli%2Eactive%3Ea%2C%2Enav%2Dtabs%3Eli%2Eactive%3Ea%3Ahover%2C%2Enav%2Dtabs%3Eli%2Eactive%3Ea%3Afocus%2C%2Enav%2Dtabs%20%2Eopen%3Ea%2C%2Enav%2Dtabs%20%2Eopen%3Ea%3Ahover%2C%2Enav%2Dtabs%20%2Eopen%3Ea%3Afocus%7Bpadding%2Dbottom%3A16px%3Bmargin%2Dtop%3A0%7D%2Enav%2Dtabs%20%2Eopen%3Ea%2C%2Enav%2Dtabs%20%2Eopen%3Ea%3Ahover%2C%2Enav%2Dtabs%20%2Eopen%3Ea%3Afocus%7Bborder%2Dcolor%3A%23e7e7e7%7D%2Enav%2Dtabs%3Eli%2Edisabled%3Ea%3Ahover%2C%2Enav%2Dtabs%3Eli%2Edisabled%3Ea%3Afocus%7Bpadding%2Dtop%3A10px%3Bpadding%2Dbottom%3A10px%3Bmargin%2Dtop%3A6px%7D%2Enav%2Dtabs%2Enav%2Djustified%3Eli%7Bvertical%2Dalign%3Abottom%7D%2Edropdown%2Dmenu%7Bmargin%2Dtop%3A0%3Bborder%2Dwidth%3A0%201px%204px%201px%3Bborder%2Dtop%2Dwidth%3A1px%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Ebreadcrumb%7Bborder%2Dcolor%3A%23ededed%3Bborder%2Dstyle%3Asolid%3Bborder%2Dwidth%3A0%201px%204px%201px%7D%2Epagination%3Eli%3Ea%2C%2Epager%3Eli%3Ea%2C%2Epagination%3Eli%3Espan%2C%2Epager%3Eli%3Espan%7Bposition%3Arelative%3Btop%3A0%3Bborder%2Dwidth%3A0%201px%204px%201px%3Bcolor%3A%23555555%3Bfont%2Dsize%3A12px%3Bfont%2Dweight%3Abold%3Btext%2Dtransform%3Auppercase%7D%2Epagination%3Eli%3Ea%3Ahover%2C%2Epager%3Eli%3Ea%3Ahover%2C%2Epagination%3Eli%3Espan%3Ahover%2C%2Epager%3Eli%3Espan%3Ahover%7Btop%3A1px%3Bborder%2Dbottom%2Dwidth%3A3px%7D%2Epagination%3Eli%3Ea%3Aactive%2C%2Epager%3Eli%3Ea%3Aactive%2C%2Epagination%3Eli%3Espan%3Aactive%2C%2Epager%3Eli%3Espan%3Aactive%7Btop%3A2px%3Bborder%2Dbottom%2Dwidth%3A2px%7D%2Epagination%3E%2Edisabled%3Ea%3Ahover%2C%2Epager%3E%2Edisabled%3Ea%3Ahover%2C%2Epagination%3E%2Edisabled%3Espan%3Ahover%2C%2Epager%3E%2Edisabled%3Espan%3Ahover%7Btop%3A0%3Bborder%2Dwidth%3A0%201px%204px%201px%7D%2Epagination%3E%2Edisabled%3Ea%3Aactive%2C%2Epager%3E%2Edisabled%3Ea%3Aactive%2C%2Epagination%3E%2Edisabled%3Espan%3Aactive%2C%2Epager%3E%2Edisabled%3Espan%3Aactive%7Btop%3A0%3Bborder%2Dwidth%3A0%201px%204px%201px%7D%2Epager%3Eli%3Ea%2C%2Epager%3Eli%3Espan%2C%2Epager%3E%2Edisabled%3Ea%2C%2Epager%3E%2Edisabled%3Espan%2C%2Epager%3Eli%3Ea%3Ahover%2C%2Epager%3Eli%3Espan%3Ahover%2C%2Epager%3E%2Edisabled%3Ea%3Ahover%2C%2Epager%3E%2Edisabled%3Espan%3Ahover%2C%2Epager%3Eli%3Ea%3Aactive%2C%2Epager%3Eli%3Espan%3Aactive%2C%2Epager%3E%2Edisabled%3Ea%3Aactive%2C%2Epager%3E%2Edisabled%3Espan%3Aactive%7Bborder%2Dleft%2Dwidth%3A2px%3Bborder%2Dright%2Dwidth%3A2px%7D%2Eclose%7Bcolor%3A%23fff%3Btext%2Ddecoration%3Anone%3Bopacity%3A0%2E4%7D%2Eclose%3Ahover%2C%2Eclose%3Afocus%7Bcolor%3A%23fff%3Bopacity%3A1%7D%2Ealert%7Bborder%2Dwidth%3A0%201px%204px%201px%7D%2Ealert%20%2Ealert%2Dlink%7Bfont%2Dweight%3Anormal%3Bcolor%3A%23fff%3Btext%2Ddecoration%3Aunderline%7D%2Elabel%7Bfont%2Dweight%3Anormal%7D%2Eprogress%7Bborder%3A1px%20solid%20%23e7e7e7%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E1%29%3Bbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E1%29%7D%2Eprogress%2Dbar%7B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%20%2D4px%200%20rgba%280%2C0%2C0%2C0%2E15%29%3Bbox%2Dshadow%3Ainset%200%20%2D4px%200%20rgba%280%2C0%2C0%2C0%2E15%29%7D%2Ewell%7Bborder%3A1px%20solid%20%23e7e7e7%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E05%29%3Bbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E05%29%7Da%2Elist%2Dgroup%2Ditem%2Eactive%2Ca%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%7Bborder%2Dcolor%3A%23eeeeee%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%7Bbackground%2Dcolor%3A%2328b62c%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Afocus%7Bbackground%2Dcolor%3A%2323a127%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%7Bbackground%2Dcolor%3A%23ff851b%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Afocus%7Bbackground%2Dcolor%3A%23ff7701%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%7Bbackground%2Dcolor%3A%23ff4136%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Afocus%7Bbackground%2Dcolor%3A%23ff291c%7D%2Ejumbotron%7Bborder%3A1px%20solid%20%23e7e7e7%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E05%29%3Bbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E05%29%7D%2Epanel%7Bborder%3A1px%20solid%20%23e7e7e7%3Bborder%2Dwidth%3A0%201px%204px%201px%7D%2Epanel%2Ddefault%20%2Eclose%7Bcolor%3A%23555555%7D%2Emodal%20%2Eclose%7Bcolor%3A%23555555%7D%2Epopover%7Bcolor%3A%23555555%7D%0A" rel="stylesheet" />
<script src="data:application/javascript;base64,LyohCiAqIEJvb3RzdHJhcCB2My4zLjUgKGh0dHA6Ly9nZXRib290c3RyYXAuY29tKQogKiBDb3B5cmlnaHQgMjAxMS0yMDE1IFR3aXR0ZXIsIEluYy4KICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlCiAqLwppZigidW5kZWZpbmVkIj09dHlwZW9mIGpRdWVyeSl0aHJvdyBuZXcgRXJyb3IoIkJvb3RzdHJhcCdzIEphdmFTY3JpcHQgcmVxdWlyZXMgalF1ZXJ5Iik7K2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1hLmZuLmpxdWVyeS5zcGxpdCgiICIpWzBdLnNwbGl0KCIuIik7aWYoYlswXTwyJiZiWzFdPDl8fDE9PWJbMF0mJjk9PWJbMV0mJmJbMl08MSl0aHJvdyBuZXcgRXJyb3IoIkJvb3RzdHJhcCdzIEphdmFTY3JpcHQgcmVxdWlyZXMgalF1ZXJ5IHZlcnNpb24gMS45LjEgb3IgaGlnaGVyIil9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKCl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYm9vdHN0cmFwIiksYj17V2Via2l0VHJhbnNpdGlvbjoid2Via2l0VHJhbnNpdGlvbkVuZCIsTW96VHJhbnNpdGlvbjoidHJhbnNpdGlvbmVuZCIsT1RyYW5zaXRpb246Im9UcmFuc2l0aW9uRW5kIG90cmFuc2l0aW9uZW5kIix0cmFuc2l0aW9uOiJ0cmFuc2l0aW9uZW5kIn07Zm9yKHZhciBjIGluIGIpaWYodm9pZCAwIT09YS5zdHlsZVtjXSlyZXR1cm57ZW5kOmJbY119O3JldHVybiExfWEuZm4uZW11bGF0ZVRyYW5zaXRpb25FbmQ9ZnVuY3Rpb24oYil7dmFyIGM9ITEsZD10aGlzO2EodGhpcykub25lKCJic1RyYW5zaXRpb25FbmQiLGZ1bmN0aW9uKCl7Yz0hMH0pO3ZhciBlPWZ1bmN0aW9uKCl7Y3x8YShkKS50cmlnZ2VyKGEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCl9O3JldHVybiBzZXRUaW1lb3V0KGUsYiksdGhpc30sYShmdW5jdGlvbigpe2Euc3VwcG9ydC50cmFuc2l0aW9uPWIoKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmKGEuZXZlbnQuc3BlY2lhbC5ic1RyYW5zaXRpb25FbmQ9e2JpbmRUeXBlOmEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCxkZWxlZ2F0ZVR5cGU6YS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLGhhbmRsZTpmdW5jdGlvbihiKXtyZXR1cm4gYShiLnRhcmdldCkuaXModGhpcyk/Yi5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dm9pZCAwfX0pfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1hKHRoaXMpLGU9Yy5kYXRhKCJicy5hbGVydCIpO2V8fGMuZGF0YSgiYnMuYWxlcnQiLGU9bmV3IGQodGhpcykpLCJzdHJpbmciPT10eXBlb2YgYiYmZVtiXS5jYWxsKGMpfSl9dmFyIGM9J1tkYXRhLWRpc21pc3M9ImFsZXJ0Il0nLGQ9ZnVuY3Rpb24oYil7YShiKS5vbigiY2xpY2siLGMsdGhpcy5jbG9zZSl9O2QuVkVSU0lPTj0iMy4zLjUiLGQuVFJBTlNJVElPTl9EVVJBVElPTj0xNTAsZC5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gYygpe2cuZGV0YWNoKCkudHJpZ2dlcigiY2xvc2VkLmJzLmFsZXJ0IikucmVtb3ZlKCl9dmFyIGU9YSh0aGlzKSxmPWUuYXR0cigiZGF0YS10YXJnZXQiKTtmfHwoZj1lLmF0dHIoImhyZWYiKSxmPWYmJmYucmVwbGFjZSgvLiooPz0jW15cc10qJCkvLCIiKSk7dmFyIGc9YShmKTtiJiZiLnByZXZlbnREZWZhdWx0KCksZy5sZW5ndGh8fChnPWUuY2xvc2VzdCgiLmFsZXJ0IikpLGcudHJpZ2dlcihiPWEuRXZlbnQoImNsb3NlLmJzLmFsZXJ0IikpLGIuaXNEZWZhdWx0UHJldmVudGVkKCl8fChnLnJlbW92ZUNsYXNzKCJpbiIpLGEuc3VwcG9ydC50cmFuc2l0aW9uJiZnLmhhc0NsYXNzKCJmYWRlIik/Zy5vbmUoImJzVHJhbnNpdGlvbkVuZCIsYykuZW11bGF0ZVRyYW5zaXRpb25FbmQoZC5UUkFOU0lUSU9OX0RVUkFUSU9OKTpjKCkpfTt2YXIgZT1hLmZuLmFsZXJ0O2EuZm4uYWxlcnQ9YixhLmZuLmFsZXJ0LkNvbnN0cnVjdG9yPWQsYS5mbi5hbGVydC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uYWxlcnQ9ZSx0aGlzfSxhKGRvY3VtZW50KS5vbigiY2xpY2suYnMuYWxlcnQuZGF0YS1hcGkiLGMsZC5wcm90b3R5cGUuY2xvc2UpfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiYnMuYnV0dG9uIiksZj0ib2JqZWN0Ij09dHlwZW9mIGImJmI7ZXx8ZC5kYXRhKCJicy5idXR0b24iLGU9bmV3IGModGhpcyxmKSksInRvZ2dsZSI9PWI/ZS50b2dnbGUoKTpiJiZlLnNldFN0YXRlKGIpfSl9dmFyIGM9ZnVuY3Rpb24oYixkKXt0aGlzLiRlbGVtZW50PWEoYiksdGhpcy5vcHRpb25zPWEuZXh0ZW5kKHt9LGMuREVGQVVMVFMsZCksdGhpcy5pc0xvYWRpbmc9ITF9O2MuVkVSU0lPTj0iMy4zLjUiLGMuREVGQVVMVFM9e2xvYWRpbmdUZXh0OiJsb2FkaW5nLi4uIn0sYy5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oYil7dmFyIGM9ImRpc2FibGVkIixkPXRoaXMuJGVsZW1lbnQsZT1kLmlzKCJpbnB1dCIpPyJ2YWwiOiJodG1sIixmPWQuZGF0YSgpO2IrPSJUZXh0IixudWxsPT1mLnJlc2V0VGV4dCYmZC5kYXRhKCJyZXNldFRleHQiLGRbZV0oKSksc2V0VGltZW91dChhLnByb3h5KGZ1bmN0aW9uKCl7ZFtlXShudWxsPT1mW2JdP3RoaXMub3B0aW9uc1tiXTpmW2JdKSwibG9hZGluZ1RleHQiPT1iPyh0aGlzLmlzTG9hZGluZz0hMCxkLmFkZENsYXNzKGMpLmF0dHIoYyxjKSk6dGhpcy5pc0xvYWRpbmcmJih0aGlzLmlzTG9hZGluZz0hMSxkLnJlbW92ZUNsYXNzKGMpLnJlbW92ZUF0dHIoYykpfSx0aGlzKSwwKX0sYy5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKCl7dmFyIGE9ITAsYj10aGlzLiRlbGVtZW50LmNsb3Nlc3QoJ1tkYXRhLXRvZ2dsZT0iYnV0dG9ucyJdJyk7aWYoYi5sZW5ndGgpe3ZhciBjPXRoaXMuJGVsZW1lbnQuZmluZCgiaW5wdXQiKTsicmFkaW8iPT1jLnByb3AoInR5cGUiKT8oYy5wcm9wKCJjaGVja2VkIikmJihhPSExKSxiLmZpbmQoIi5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIiksdGhpcy4kZWxlbWVudC5hZGRDbGFzcygiYWN0aXZlIikpOiJjaGVja2JveCI9PWMucHJvcCgidHlwZSIpJiYoYy5wcm9wKCJjaGVja2VkIikhPT10aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJhY3RpdmUiKSYmKGE9ITEpLHRoaXMuJGVsZW1lbnQudG9nZ2xlQ2xhc3MoImFjdGl2ZSIpKSxjLnByb3AoImNoZWNrZWQiLHRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImFjdGl2ZSIpKSxhJiZjLnRyaWdnZXIoImNoYW5nZSIpfWVsc2UgdGhpcy4kZWxlbWVudC5hdHRyKCJhcmlhLXByZXNzZWQiLCF0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJhY3RpdmUiKSksdGhpcy4kZWxlbWVudC50b2dnbGVDbGFzcygiYWN0aXZlIil9O3ZhciBkPWEuZm4uYnV0dG9uO2EuZm4uYnV0dG9uPWIsYS5mbi5idXR0b24uQ29uc3RydWN0b3I9YyxhLmZuLmJ1dHRvbi5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uYnV0dG9uPWQsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLmJ1dHRvbi5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZV49ImJ1dHRvbiJdJyxmdW5jdGlvbihjKXt2YXIgZD1hKGMudGFyZ2V0KTtkLmhhc0NsYXNzKCJidG4iKXx8KGQ9ZC5jbG9zZXN0KCIuYnRuIikpLGIuY2FsbChkLCJ0b2dnbGUiKSxhKGMudGFyZ2V0KS5pcygnaW5wdXRbdHlwZT0icmFkaW8iXScpfHxhKGMudGFyZ2V0KS5pcygnaW5wdXRbdHlwZT0iY2hlY2tib3giXScpfHxjLnByZXZlbnREZWZhdWx0KCl9KS5vbigiZm9jdXMuYnMuYnV0dG9uLmRhdGEtYXBpIGJsdXIuYnMuYnV0dG9uLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlXj0iYnV0dG9uIl0nLGZ1bmN0aW9uKGIpe2EoYi50YXJnZXQpLmNsb3Nlc3QoIi5idG4iKS50b2dnbGVDbGFzcygiZm9jdXMiLC9eZm9jdXMoaW4pPyQvLnRlc3QoYi50eXBlKSl9KX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLmNhcm91c2VsIiksZj1hLmV4dGVuZCh7fSxjLkRFRkFVTFRTLGQuZGF0YSgpLCJvYmplY3QiPT10eXBlb2YgYiYmYiksZz0ic3RyaW5nIj09dHlwZW9mIGI/YjpmLnNsaWRlO2V8fGQuZGF0YSgiYnMuY2Fyb3VzZWwiLGU9bmV3IGModGhpcyxmKSksIm51bWJlciI9PXR5cGVvZiBiP2UudG8oYik6Zz9lW2ddKCk6Zi5pbnRlcnZhbCYmZS5wYXVzZSgpLmN5Y2xlKCl9KX12YXIgYz1mdW5jdGlvbihiLGMpe3RoaXMuJGVsZW1lbnQ9YShiKSx0aGlzLiRpbmRpY2F0b3JzPXRoaXMuJGVsZW1lbnQuZmluZCgiLmNhcm91c2VsLWluZGljYXRvcnMiKSx0aGlzLm9wdGlvbnM9Yyx0aGlzLnBhdXNlZD1udWxsLHRoaXMuc2xpZGluZz1udWxsLHRoaXMuaW50ZXJ2YWw9bnVsbCx0aGlzLiRhY3RpdmU9bnVsbCx0aGlzLiRpdGVtcz1udWxsLHRoaXMub3B0aW9ucy5rZXlib2FyZCYmdGhpcy4kZWxlbWVudC5vbigia2V5ZG93bi5icy5jYXJvdXNlbCIsYS5wcm94eSh0aGlzLmtleWRvd24sdGhpcykpLCJob3ZlciI9PXRoaXMub3B0aW9ucy5wYXVzZSYmISgib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkmJnRoaXMuJGVsZW1lbnQub24oIm1vdXNlZW50ZXIuYnMuY2Fyb3VzZWwiLGEucHJveHkodGhpcy5wYXVzZSx0aGlzKSkub24oIm1vdXNlbGVhdmUuYnMuY2Fyb3VzZWwiLGEucHJveHkodGhpcy5jeWNsZSx0aGlzKSl9O2MuVkVSU0lPTj0iMy4zLjUiLGMuVFJBTlNJVElPTl9EVVJBVElPTj02MDAsYy5ERUZBVUxUUz17aW50ZXJ2YWw6NWUzLHBhdXNlOiJob3ZlciIsd3JhcDohMCxrZXlib2FyZDohMH0sYy5wcm90b3R5cGUua2V5ZG93bj1mdW5jdGlvbihhKXtpZighL2lucHV0fHRleHRhcmVhL2kudGVzdChhLnRhcmdldC50YWdOYW1lKSl7c3dpdGNoKGEud2hpY2gpe2Nhc2UgMzc6dGhpcy5wcmV2KCk7YnJlYWs7Y2FzZSAzOTp0aGlzLm5leHQoKTticmVhaztkZWZhdWx0OnJldHVybn1hLnByZXZlbnREZWZhdWx0KCl9fSxjLnByb3RvdHlwZS5jeWNsZT1mdW5jdGlvbihiKXtyZXR1cm4gYnx8KHRoaXMucGF1c2VkPSExKSx0aGlzLmludGVydmFsJiZjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpLHRoaXMub3B0aW9ucy5pbnRlcnZhbCYmIXRoaXMucGF1c2VkJiYodGhpcy5pbnRlcnZhbD1zZXRJbnRlcnZhbChhLnByb3h5KHRoaXMubmV4dCx0aGlzKSx0aGlzLm9wdGlvbnMuaW50ZXJ2YWwpKSx0aGlzfSxjLnByb3RvdHlwZS5nZXRJdGVtSW5kZXg9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuJGl0ZW1zPWEucGFyZW50KCkuY2hpbGRyZW4oIi5pdGVtIiksdGhpcy4kaXRlbXMuaW5kZXgoYXx8dGhpcy4kYWN0aXZlKX0sYy5wcm90b3R5cGUuZ2V0SXRlbUZvckRpcmVjdGlvbj1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuZ2V0SXRlbUluZGV4KGIpLGQ9InByZXYiPT1hJiYwPT09Y3x8Im5leHQiPT1hJiZjPT10aGlzLiRpdGVtcy5sZW5ndGgtMTtpZihkJiYhdGhpcy5vcHRpb25zLndyYXApcmV0dXJuIGI7dmFyIGU9InByZXYiPT1hPy0xOjEsZj0oYytlKSV0aGlzLiRpdGVtcy5sZW5ndGg7cmV0dXJuIHRoaXMuJGl0ZW1zLmVxKGYpfSxjLnByb3RvdHlwZS50bz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9dGhpcy5nZXRJdGVtSW5kZXgodGhpcy4kYWN0aXZlPXRoaXMuJGVsZW1lbnQuZmluZCgiLml0ZW0uYWN0aXZlIikpO3JldHVybiBhPnRoaXMuJGl0ZW1zLmxlbmd0aC0xfHwwPmE/dm9pZCAwOnRoaXMuc2xpZGluZz90aGlzLiRlbGVtZW50Lm9uZSgic2xpZC5icy5jYXJvdXNlbCIsZnVuY3Rpb24oKXtiLnRvKGEpfSk6Yz09YT90aGlzLnBhdXNlKCkuY3ljbGUoKTp0aGlzLnNsaWRlKGE+Yz8ibmV4dCI6InByZXYiLHRoaXMuJGl0ZW1zLmVxKGEpKX0sYy5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oYil7cmV0dXJuIGJ8fCh0aGlzLnBhdXNlZD0hMCksdGhpcy4kZWxlbWVudC5maW5kKCIubmV4dCwgLnByZXYiKS5sZW5ndGgmJmEuc3VwcG9ydC50cmFuc2l0aW9uJiYodGhpcy4kZWxlbWVudC50cmlnZ2VyKGEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCksdGhpcy5jeWNsZSghMCkpLHRoaXMuaW50ZXJ2YWw9Y2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKSx0aGlzfSxjLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2xpZGluZz92b2lkIDA6dGhpcy5zbGlkZSgibmV4dCIpfSxjLnByb3RvdHlwZS5wcmV2PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2xpZGluZz92b2lkIDA6dGhpcy5zbGlkZSgicHJldiIpfSxjLnByb3RvdHlwZS5zbGlkZT1mdW5jdGlvbihiLGQpe3ZhciBlPXRoaXMuJGVsZW1lbnQuZmluZCgiLml0ZW0uYWN0aXZlIiksZj1kfHx0aGlzLmdldEl0ZW1Gb3JEaXJlY3Rpb24oYixlKSxnPXRoaXMuaW50ZXJ2YWwsaD0ibmV4dCI9PWI/ImxlZnQiOiJyaWdodCIsaT10aGlzO2lmKGYuaGFzQ2xhc3MoImFjdGl2ZSIpKXJldHVybiB0aGlzLnNsaWRpbmc9ITE7dmFyIGo9ZlswXSxrPWEuRXZlbnQoInNsaWRlLmJzLmNhcm91c2VsIix7cmVsYXRlZFRhcmdldDpqLGRpcmVjdGlvbjpofSk7aWYodGhpcy4kZWxlbWVudC50cmlnZ2VyKGspLCFrLmlzRGVmYXVsdFByZXZlbnRlZCgpKXtpZih0aGlzLnNsaWRpbmc9ITAsZyYmdGhpcy5wYXVzZSgpLHRoaXMuJGluZGljYXRvcnMubGVuZ3RoKXt0aGlzLiRpbmRpY2F0b3JzLmZpbmQoIi5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7dmFyIGw9YSh0aGlzLiRpbmRpY2F0b3JzLmNoaWxkcmVuKClbdGhpcy5nZXRJdGVtSW5kZXgoZildKTtsJiZsLmFkZENsYXNzKCJhY3RpdmUiKX12YXIgbT1hLkV2ZW50KCJzbGlkLmJzLmNhcm91c2VsIix7cmVsYXRlZFRhcmdldDpqLGRpcmVjdGlvbjpofSk7cmV0dXJuIGEuc3VwcG9ydC50cmFuc2l0aW9uJiZ0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJzbGlkZSIpPyhmLmFkZENsYXNzKGIpLGZbMF0ub2Zmc2V0V2lkdGgsZS5hZGRDbGFzcyhoKSxmLmFkZENsYXNzKGgpLGUub25lKCJic1RyYW5zaXRpb25FbmQiLGZ1bmN0aW9uKCl7Zi5yZW1vdmVDbGFzcyhbYixoXS5qb2luKCIgIikpLmFkZENsYXNzKCJhY3RpdmUiKSxlLnJlbW92ZUNsYXNzKFsiYWN0aXZlIixoXS5qb2luKCIgIikpLGkuc2xpZGluZz0hMSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aS4kZWxlbWVudC50cmlnZ2VyKG0pfSwwKX0pLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTikpOihlLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSxmLmFkZENsYXNzKCJhY3RpdmUiKSx0aGlzLnNsaWRpbmc9ITEsdGhpcy4kZWxlbWVudC50cmlnZ2VyKG0pKSxnJiZ0aGlzLmN5Y2xlKCksdGhpc319O3ZhciBkPWEuZm4uY2Fyb3VzZWw7YS5mbi5jYXJvdXNlbD1iLGEuZm4uY2Fyb3VzZWwuQ29uc3RydWN0b3I9YyxhLmZuLmNhcm91c2VsLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5jYXJvdXNlbD1kLHRoaXN9O3ZhciBlPWZ1bmN0aW9uKGMpe3ZhciBkLGU9YSh0aGlzKSxmPWEoZS5hdHRyKCJkYXRhLXRhcmdldCIpfHwoZD1lLmF0dHIoImhyZWYiKSkmJmQucmVwbGFjZSgvLiooPz0jW15cc10rJCkvLCIiKSk7aWYoZi5oYXNDbGFzcygiY2Fyb3VzZWwiKSl7dmFyIGc9YS5leHRlbmQoe30sZi5kYXRhKCksZS5kYXRhKCkpLGg9ZS5hdHRyKCJkYXRhLXNsaWRlLXRvIik7aCYmKGcuaW50ZXJ2YWw9ITEpLGIuY2FsbChmLGcpLGgmJmYuZGF0YSgiYnMuY2Fyb3VzZWwiKS50byhoKSxjLnByZXZlbnREZWZhdWx0KCl9fTthKGRvY3VtZW50KS5vbigiY2xpY2suYnMuY2Fyb3VzZWwuZGF0YS1hcGkiLCJbZGF0YS1zbGlkZV0iLGUpLm9uKCJjbGljay5icy5jYXJvdXNlbC5kYXRhLWFwaSIsIltkYXRhLXNsaWRlLXRvXSIsZSksYSh3aW5kb3cpLm9uKCJsb2FkIixmdW5jdGlvbigpe2EoJ1tkYXRhLXJpZGU9ImNhcm91c2VsIl0nKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9YSh0aGlzKTtiLmNhbGwoYyxjLmRhdGEoKSl9KX0pfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXt2YXIgYyxkPWIuYXR0cigiZGF0YS10YXJnZXQiKXx8KGM9Yi5hdHRyKCJocmVmIikpJiZjLnJlcGxhY2UoLy4qKD89I1teXHNdKyQpLywiIik7cmV0dXJuIGEoZCl9ZnVuY3Rpb24gYyhiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9YSh0aGlzKSxlPWMuZGF0YSgiYnMuY29sbGFwc2UiKSxmPWEuZXh0ZW5kKHt9LGQuREVGQVVMVFMsYy5kYXRhKCksIm9iamVjdCI9PXR5cGVvZiBiJiZiKTshZSYmZi50b2dnbGUmJi9zaG93fGhpZGUvLnRlc3QoYikmJihmLnRvZ2dsZT0hMSksZXx8Yy5kYXRhKCJicy5jb2xsYXBzZSIsZT1uZXcgZCh0aGlzLGYpKSwic3RyaW5nIj09dHlwZW9mIGImJmVbYl0oKX0pfXZhciBkPWZ1bmN0aW9uKGIsYyl7dGhpcy4kZWxlbWVudD1hKGIpLHRoaXMub3B0aW9ucz1hLmV4dGVuZCh7fSxkLkRFRkFVTFRTLGMpLHRoaXMuJHRyaWdnZXI9YSgnW2RhdGEtdG9nZ2xlPSJjb2xsYXBzZSJdW2hyZWY9IiMnK2IuaWQrJyJdLFtkYXRhLXRvZ2dsZT0iY29sbGFwc2UiXVtkYXRhLXRhcmdldD0iIycrYi5pZCsnIl0nKSx0aGlzLnRyYW5zaXRpb25pbmc9bnVsbCx0aGlzLm9wdGlvbnMucGFyZW50P3RoaXMuJHBhcmVudD10aGlzLmdldFBhcmVudCgpOnRoaXMuYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKHRoaXMuJGVsZW1lbnQsdGhpcy4kdHJpZ2dlciksdGhpcy5vcHRpb25zLnRvZ2dsZSYmdGhpcy50b2dnbGUoKX07ZC5WRVJTSU9OPSIzLjMuNSIsZC5UUkFOU0lUSU9OX0RVUkFUSU9OPTM1MCxkLkRFRkFVTFRTPXt0b2dnbGU6ITB9LGQucHJvdG90eXBlLmRpbWVuc2lvbj1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoIndpZHRoIik7cmV0dXJuIGE/IndpZHRoIjoiaGVpZ2h0In0sZC5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbigpe2lmKCF0aGlzLnRyYW5zaXRpb25pbmcmJiF0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJpbiIpKXt2YXIgYixlPXRoaXMuJHBhcmVudCYmdGhpcy4kcGFyZW50LmNoaWxkcmVuKCIucGFuZWwiKS5jaGlsZHJlbigiLmluLCAuY29sbGFwc2luZyIpO2lmKCEoZSYmZS5sZW5ndGgmJihiPWUuZGF0YSgiYnMuY29sbGFwc2UiKSxiJiZiLnRyYW5zaXRpb25pbmcpKSl7dmFyIGY9YS5FdmVudCgic2hvdy5icy5jb2xsYXBzZSIpO2lmKHRoaXMuJGVsZW1lbnQudHJpZ2dlcihmKSwhZi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7ZSYmZS5sZW5ndGgmJihjLmNhbGwoZSwiaGlkZSIpLGJ8fGUuZGF0YSgiYnMuY29sbGFwc2UiLG51bGwpKTt2YXIgZz10aGlzLmRpbWVuc2lvbigpO3RoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoImNvbGxhcHNlIikuYWRkQ2xhc3MoImNvbGxhcHNpbmciKVtnXSgwKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksdGhpcy4kdHJpZ2dlci5yZW1vdmVDbGFzcygiY29sbGFwc2VkIikuYXR0cigiYXJpYS1leHBhbmRlZCIsITApLHRoaXMudHJhbnNpdGlvbmluZz0xO3ZhciBoPWZ1bmN0aW9uKCl7dGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcygiY29sbGFwc2luZyIpLmFkZENsYXNzKCJjb2xsYXBzZSBpbiIpW2ddKCIiKSx0aGlzLnRyYW5zaXRpb25pbmc9MCx0aGlzLiRlbGVtZW50LnRyaWdnZXIoInNob3duLmJzLmNvbGxhcHNlIil9O2lmKCFhLnN1cHBvcnQudHJhbnNpdGlvbilyZXR1cm4gaC5jYWxsKHRoaXMpO3ZhciBpPWEuY2FtZWxDYXNlKFsic2Nyb2xsIixnXS5qb2luKCItIikpO3RoaXMuJGVsZW1lbnQub25lKCJic1RyYW5zaXRpb25FbmQiLGEucHJveHkoaCx0aGlzKSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoZC5UUkFOU0lUSU9OX0RVUkFUSU9OKVtnXSh0aGlzLiRlbGVtZW50WzBdW2ldKX19fX0sZC5wcm90b3R5cGUuaGlkZT1mdW5jdGlvbigpe2lmKCF0aGlzLnRyYW5zaXRpb25pbmcmJnRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImluIikpe3ZhciBiPWEuRXZlbnQoImhpZGUuYnMuY29sbGFwc2UiKTtpZih0aGlzLiRlbGVtZW50LnRyaWdnZXIoYiksIWIuaXNEZWZhdWx0UHJldmVudGVkKCkpe3ZhciBjPXRoaXMuZGltZW5zaW9uKCk7dGhpcy4kZWxlbWVudFtjXSh0aGlzLiRlbGVtZW50W2NdKCkpWzBdLm9mZnNldEhlaWdodCx0aGlzLiRlbGVtZW50LmFkZENsYXNzKCJjb2xsYXBzaW5nIikucmVtb3ZlQ2xhc3MoImNvbGxhcHNlIGluIikuYXR0cigiYXJpYS1leHBhbmRlZCIsITEpLHRoaXMuJHRyaWdnZXIuYWRkQ2xhc3MoImNvbGxhcHNlZCIpLmF0dHIoImFyaWEtZXhwYW5kZWQiLCExKSx0aGlzLnRyYW5zaXRpb25pbmc9MTt2YXIgZT1mdW5jdGlvbigpe3RoaXMudHJhbnNpdGlvbmluZz0wLHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoImNvbGxhcHNpbmciKS5hZGRDbGFzcygiY29sbGFwc2UiKS50cmlnZ2VyKCJoaWRkZW4uYnMuY29sbGFwc2UiKX07cmV0dXJuIGEuc3VwcG9ydC50cmFuc2l0aW9uP3ZvaWQgdGhpcy4kZWxlbWVudFtjXSgwKS5vbmUoImJzVHJhbnNpdGlvbkVuZCIsYS5wcm94eShlLHRoaXMpKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChkLlRSQU5TSVRJT05fRFVSQVRJT04pOmUuY2FsbCh0aGlzKX19fSxkLnByb3RvdHlwZS50b2dnbGU9ZnVuY3Rpb24oKXt0aGlzW3RoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImluIik/ImhpZGUiOiJzaG93Il0oKX0sZC5wcm90b3R5cGUuZ2V0UGFyZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGEodGhpcy5vcHRpb25zLnBhcmVudCkuZmluZCgnW2RhdGEtdG9nZ2xlPSJjb2xsYXBzZSJdW2RhdGEtcGFyZW50PSInK3RoaXMub3B0aW9ucy5wYXJlbnQrJyJdJykuZWFjaChhLnByb3h5KGZ1bmN0aW9uKGMsZCl7dmFyIGU9YShkKTt0aGlzLmFkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyhiKGUpLGUpfSx0aGlzKSkuZW5kKCl9LGQucHJvdG90eXBlLmFkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcz1mdW5jdGlvbihhLGIpe3ZhciBjPWEuaGFzQ2xhc3MoImluIik7YS5hdHRyKCJhcmlhLWV4cGFuZGVkIixjKSxiLnRvZ2dsZUNsYXNzKCJjb2xsYXBzZWQiLCFjKS5hdHRyKCJhcmlhLWV4cGFuZGVkIixjKX07dmFyIGU9YS5mbi5jb2xsYXBzZTthLmZuLmNvbGxhcHNlPWMsYS5mbi5jb2xsYXBzZS5Db25zdHJ1Y3Rvcj1kLGEuZm4uY29sbGFwc2Uubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLmNvbGxhcHNlPWUsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLmNvbGxhcHNlLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJjb2xsYXBzZSJdJyxmdW5jdGlvbihkKXt2YXIgZT1hKHRoaXMpO2UuYXR0cigiZGF0YS10YXJnZXQiKXx8ZC5wcmV2ZW50RGVmYXVsdCgpO3ZhciBmPWIoZSksZz1mLmRhdGEoImJzLmNvbGxhcHNlIiksaD1nPyJ0b2dnbGUiOmUuZGF0YSgpO2MuY2FsbChmLGgpfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3ZhciBjPWIuYXR0cigiZGF0YS10YXJnZXQiKTtjfHwoYz1iLmF0dHIoImhyZWYiKSxjPWMmJi8jW0EtWmEtel0vLnRlc3QoYykmJmMucmVwbGFjZSgvLiooPz0jW15cc10qJCkvLCIiKSk7dmFyIGQ9YyYmYShjKTtyZXR1cm4gZCYmZC5sZW5ndGg/ZDpiLnBhcmVudCgpfWZ1bmN0aW9uIGMoYyl7YyYmMz09PWMud2hpY2h8fChhKGUpLnJlbW92ZSgpLGEoZikuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1iKGQpLGY9e3JlbGF0ZWRUYXJnZXQ6dGhpc307ZS5oYXNDbGFzcygib3BlbiIpJiYoYyYmImNsaWNrIj09Yy50eXBlJiYvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KGMudGFyZ2V0LnRhZ05hbWUpJiZhLmNvbnRhaW5zKGVbMF0sYy50YXJnZXQpfHwoZS50cmlnZ2VyKGM9YS5FdmVudCgiaGlkZS5icy5kcm9wZG93biIsZikpLGMuaXNEZWZhdWx0UHJldmVudGVkKCl8fChkLmF0dHIoImFyaWEtZXhwYW5kZWQiLCJmYWxzZSIpLGUucmVtb3ZlQ2xhc3MoIm9wZW4iKS50cmlnZ2VyKCJoaWRkZW4uYnMuZHJvcGRvd24iLGYpKSkpfSkpfWZ1bmN0aW9uIGQoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBjPWEodGhpcyksZD1jLmRhdGEoImJzLmRyb3Bkb3duIik7ZHx8Yy5kYXRhKCJicy5kcm9wZG93biIsZD1uZXcgZyh0aGlzKSksInN0cmluZyI9PXR5cGVvZiBiJiZkW2JdLmNhbGwoYyl9KX12YXIgZT0iLmRyb3Bkb3duLWJhY2tkcm9wIixmPSdbZGF0YS10b2dnbGU9ImRyb3Bkb3duIl0nLGc9ZnVuY3Rpb24oYil7YShiKS5vbigiY2xpY2suYnMuZHJvcGRvd24iLHRoaXMudG9nZ2xlKX07Zy5WRVJTSU9OPSIzLjMuNSIsZy5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKGQpe3ZhciBlPWEodGhpcyk7aWYoIWUuaXMoIi5kaXNhYmxlZCwgOmRpc2FibGVkIikpe3ZhciBmPWIoZSksZz1mLmhhc0NsYXNzKCJvcGVuIik7aWYoYygpLCFnKXsib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCYmIWYuY2xvc2VzdCgiLm5hdmJhci1uYXYiKS5sZW5ndGgmJmEoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmFkZENsYXNzKCJkcm9wZG93bi1iYWNrZHJvcCIpLmluc2VydEFmdGVyKGEodGhpcykpLm9uKCJjbGljayIsYyk7dmFyIGg9e3JlbGF0ZWRUYXJnZXQ6dGhpc307aWYoZi50cmlnZ2VyKGQ9YS5FdmVudCgic2hvdy5icy5kcm9wZG93biIsaCkpLGQuaXNEZWZhdWx0UHJldmVudGVkKCkpcmV0dXJuO2UudHJpZ2dlcigiZm9jdXMiKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwidHJ1ZSIpLGYudG9nZ2xlQ2xhc3MoIm9wZW4iKS50cmlnZ2VyKCJzaG93bi5icy5kcm9wZG93biIsaCl9cmV0dXJuITF9fSxnLnByb3RvdHlwZS5rZXlkb3duPWZ1bmN0aW9uKGMpe2lmKC8oMzh8NDB8Mjd8MzIpLy50ZXN0KGMud2hpY2gpJiYhL2lucHV0fHRleHRhcmVhL2kudGVzdChjLnRhcmdldC50YWdOYW1lKSl7dmFyIGQ9YSh0aGlzKTtpZihjLnByZXZlbnREZWZhdWx0KCksYy5zdG9wUHJvcGFnYXRpb24oKSwhZC5pcygiLmRpc2FibGVkLCA6ZGlzYWJsZWQiKSl7dmFyIGU9YihkKSxnPWUuaGFzQ2xhc3MoIm9wZW4iKTtpZighZyYmMjchPWMud2hpY2h8fGcmJjI3PT1jLndoaWNoKXJldHVybiAyNz09Yy53aGljaCYmZS5maW5kKGYpLnRyaWdnZXIoImZvY3VzIiksZC50cmlnZ2VyKCJjbGljayIpO3ZhciBoPSIgbGk6bm90KC5kaXNhYmxlZCk6dmlzaWJsZSBhIixpPWUuZmluZCgiLmRyb3Bkb3duLW1lbnUiK2gpO2lmKGkubGVuZ3RoKXt2YXIgaj1pLmluZGV4KGMudGFyZ2V0KTszOD09Yy53aGljaCYmaj4wJiZqLS0sNDA9PWMud2hpY2gmJmo8aS5sZW5ndGgtMSYmaisrLH5qfHwoaj0wKSxpLmVxKGopLnRyaWdnZXIoImZvY3VzIil9fX19O3ZhciBoPWEuZm4uZHJvcGRvd247YS5mbi5kcm9wZG93bj1kLGEuZm4uZHJvcGRvd24uQ29uc3RydWN0b3I9ZyxhLmZuLmRyb3Bkb3duLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5kcm9wZG93bj1oLHRoaXN9LGEoZG9jdW1lbnQpLm9uKCJjbGljay5icy5kcm9wZG93bi5kYXRhLWFwaSIsYykub24oImNsaWNrLmJzLmRyb3Bkb3duLmRhdGEtYXBpIiwiLmRyb3Bkb3duIGZvcm0iLGZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCl9KS5vbigiY2xpY2suYnMuZHJvcGRvd24uZGF0YS1hcGkiLGYsZy5wcm90b3R5cGUudG9nZ2xlKS5vbigia2V5ZG93bi5icy5kcm9wZG93bi5kYXRhLWFwaSIsZixnLnByb3RvdHlwZS5rZXlkb3duKS5vbigia2V5ZG93bi5icy5kcm9wZG93bi5kYXRhLWFwaSIsIi5kcm9wZG93bi1tZW51IixnLnByb3RvdHlwZS5rZXlkb3duKX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYixkKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9YSh0aGlzKSxmPWUuZGF0YSgiYnMubW9kYWwiKSxnPWEuZXh0ZW5kKHt9LGMuREVGQVVMVFMsZS5kYXRhKCksIm9iamVjdCI9PXR5cGVvZiBiJiZiKTtmfHxlLmRhdGEoImJzLm1vZGFsIixmPW5ldyBjKHRoaXMsZykpLCJzdHJpbmciPT10eXBlb2YgYj9mW2JdKGQpOmcuc2hvdyYmZi5zaG93KGQpfSl9dmFyIGM9ZnVuY3Rpb24oYixjKXt0aGlzLm9wdGlvbnM9Yyx0aGlzLiRib2R5PWEoZG9jdW1lbnQuYm9keSksdGhpcy4kZWxlbWVudD1hKGIpLHRoaXMuJGRpYWxvZz10aGlzLiRlbGVtZW50LmZpbmQoIi5tb2RhbC1kaWFsb2ciKSx0aGlzLiRiYWNrZHJvcD1udWxsLHRoaXMuaXNTaG93bj1udWxsLHRoaXMub3JpZ2luYWxCb2R5UGFkPW51bGwsdGhpcy5zY3JvbGxiYXJXaWR0aD0wLHRoaXMuaWdub3JlQmFja2Ryb3BDbGljaz0hMSx0aGlzLm9wdGlvbnMucmVtb3RlJiZ0aGlzLiRlbGVtZW50LmZpbmQoIi5tb2RhbC1jb250ZW50IikubG9hZCh0aGlzLm9wdGlvbnMucmVtb3RlLGEucHJveHkoZnVuY3Rpb24oKXt0aGlzLiRlbGVtZW50LnRyaWdnZXIoImxvYWRlZC5icy5tb2RhbCIpfSx0aGlzKSl9O2MuVkVSU0lPTj0iMy4zLjUiLGMuVFJBTlNJVElPTl9EVVJBVElPTj0zMDAsYy5CQUNLRFJPUF9UUkFOU0lUSU9OX0RVUkFUSU9OPTE1MCxjLkRFRkFVTFRTPXtiYWNrZHJvcDohMCxrZXlib2FyZDohMCxzaG93OiEwfSxjLnByb3RvdHlwZS50b2dnbGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaXNTaG93bj90aGlzLmhpZGUoKTp0aGlzLnNob3coYSl9LGMucHJvdG90eXBlLnNob3c9ZnVuY3Rpb24oYil7dmFyIGQ9dGhpcyxlPWEuRXZlbnQoInNob3cuYnMubW9kYWwiLHtyZWxhdGVkVGFyZ2V0OmJ9KTt0aGlzLiRlbGVtZW50LnRyaWdnZXIoZSksdGhpcy5pc1Nob3dufHxlLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwodGhpcy5pc1Nob3duPSEwLHRoaXMuY2hlY2tTY3JvbGxiYXIoKSx0aGlzLnNldFNjcm9sbGJhcigpLHRoaXMuJGJvZHkuYWRkQ2xhc3MoIm1vZGFsLW9wZW4iKSx0aGlzLmVzY2FwZSgpLHRoaXMucmVzaXplKCksdGhpcy4kZWxlbWVudC5vbigiY2xpY2suZGlzbWlzcy5icy5tb2RhbCIsJ1tkYXRhLWRpc21pc3M9Im1vZGFsIl0nLGEucHJveHkodGhpcy5oaWRlLHRoaXMpKSx0aGlzLiRkaWFsb2cub24oIm1vdXNlZG93bi5kaXNtaXNzLmJzLm1vZGFsIixmdW5jdGlvbigpe2QuJGVsZW1lbnQub25lKCJtb3VzZXVwLmRpc21pc3MuYnMubW9kYWwiLGZ1bmN0aW9uKGIpe2EoYi50YXJnZXQpLmlzKGQuJGVsZW1lbnQpJiYoZC5pZ25vcmVCYWNrZHJvcENsaWNrPSEwKX0pfSksdGhpcy5iYWNrZHJvcChmdW5jdGlvbigpe3ZhciBlPWEuc3VwcG9ydC50cmFuc2l0aW9uJiZkLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIik7ZC4kZWxlbWVudC5wYXJlbnQoKS5sZW5ndGh8fGQuJGVsZW1lbnQuYXBwZW5kVG8oZC4kYm9keSksZC4kZWxlbWVudC5zaG93KCkuc2Nyb2xsVG9wKDApLGQuYWRqdXN0RGlhbG9nKCksZSYmZC4kZWxlbWVudFswXS5vZmZzZXRXaWR0aCxkLiRlbGVtZW50LmFkZENsYXNzKCJpbiIpLGQuZW5mb3JjZUZvY3VzKCk7dmFyIGY9YS5FdmVudCgic2hvd24uYnMubW9kYWwiLHtyZWxhdGVkVGFyZ2V0OmJ9KTtlP2QuJGRpYWxvZy5vbmUoImJzVHJhbnNpdGlvbkVuZCIsZnVuY3Rpb24oKXtkLiRlbGVtZW50LnRyaWdnZXIoImZvY3VzIikudHJpZ2dlcihmKX0pLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTik6ZC4kZWxlbWVudC50cmlnZ2VyKCJmb2N1cyIpLnRyaWdnZXIoZil9KSl9LGMucHJvdG90eXBlLmhpZGU9ZnVuY3Rpb24oYil7YiYmYi5wcmV2ZW50RGVmYXVsdCgpLGI9YS5FdmVudCgiaGlkZS5icy5tb2RhbCIpLHRoaXMuJGVsZW1lbnQudHJpZ2dlcihiKSx0aGlzLmlzU2hvd24mJiFiLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYodGhpcy5pc1Nob3duPSExLHRoaXMuZXNjYXBlKCksdGhpcy5yZXNpemUoKSxhKGRvY3VtZW50KS5vZmYoImZvY3VzaW4uYnMubW9kYWwiKSx0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJpbiIpLm9mZigiY2xpY2suZGlzbWlzcy5icy5tb2RhbCIpLm9mZigibW91c2V1cC5kaXNtaXNzLmJzLm1vZGFsIiksdGhpcy4kZGlhbG9nLm9mZigibW91c2Vkb3duLmRpc21pc3MuYnMubW9kYWwiKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiZmFkZSIpP3RoaXMuJGVsZW1lbnQub25lKCJic1RyYW5zaXRpb25FbmQiLGEucHJveHkodGhpcy5oaWRlTW9kYWwsdGhpcykpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTik6dGhpcy5oaWRlTW9kYWwoKSl9LGMucHJvdG90eXBlLmVuZm9yY2VGb2N1cz1mdW5jdGlvbigpe2EoZG9jdW1lbnQpLm9mZigiZm9jdXNpbi5icy5tb2RhbCIpLm9uKCJmb2N1c2luLmJzLm1vZGFsIixhLnByb3h5KGZ1bmN0aW9uKGEpe3RoaXMuJGVsZW1lbnRbMF09PT1hLnRhcmdldHx8dGhpcy4kZWxlbWVudC5oYXMoYS50YXJnZXQpLmxlbmd0aHx8dGhpcy4kZWxlbWVudC50cmlnZ2VyKCJmb2N1cyIpfSx0aGlzKSl9LGMucHJvdG90eXBlLmVzY2FwZT1mdW5jdGlvbigpe3RoaXMuaXNTaG93biYmdGhpcy5vcHRpb25zLmtleWJvYXJkP3RoaXMuJGVsZW1lbnQub24oImtleWRvd24uZGlzbWlzcy5icy5tb2RhbCIsYS5wcm94eShmdW5jdGlvbihhKXsyNz09YS53aGljaCYmdGhpcy5oaWRlKCl9LHRoaXMpKTp0aGlzLmlzU2hvd258fHRoaXMuJGVsZW1lbnQub2ZmKCJrZXlkb3duLmRpc21pc3MuYnMubW9kYWwiKX0sYy5wcm90b3R5cGUucmVzaXplPWZ1bmN0aW9uKCl7dGhpcy5pc1Nob3duP2Eod2luZG93KS5vbigicmVzaXplLmJzLm1vZGFsIixhLnByb3h5KHRoaXMuaGFuZGxlVXBkYXRlLHRoaXMpKTphKHdpbmRvdykub2ZmKCJyZXNpemUuYnMubW9kYWwiKX0sYy5wcm90b3R5cGUuaGlkZU1vZGFsPWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLiRlbGVtZW50LmhpZGUoKSx0aGlzLmJhY2tkcm9wKGZ1bmN0aW9uKCl7YS4kYm9keS5yZW1vdmVDbGFzcygibW9kYWwtb3BlbiIpLGEucmVzZXRBZGp1c3RtZW50cygpLGEucmVzZXRTY3JvbGxiYXIoKSxhLiRlbGVtZW50LnRyaWdnZXIoImhpZGRlbi5icy5tb2RhbCIpfSl9LGMucHJvdG90eXBlLnJlbW92ZUJhY2tkcm9wPWZ1bmN0aW9uKCl7dGhpcy4kYmFja2Ryb3AmJnRoaXMuJGJhY2tkcm9wLnJlbW92ZSgpLHRoaXMuJGJhY2tkcm9wPW51bGx9LGMucHJvdG90eXBlLmJhY2tkcm9wPWZ1bmN0aW9uKGIpe3ZhciBkPXRoaXMsZT10aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIik/ImZhZGUiOiIiO2lmKHRoaXMuaXNTaG93biYmdGhpcy5vcHRpb25zLmJhY2tkcm9wKXt2YXIgZj1hLnN1cHBvcnQudHJhbnNpdGlvbiYmZTtpZih0aGlzLiRiYWNrZHJvcD1hKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5hZGRDbGFzcygibW9kYWwtYmFja2Ryb3AgIitlKS5hcHBlbmRUbyh0aGlzLiRib2R5KSx0aGlzLiRlbGVtZW50Lm9uKCJjbGljay5kaXNtaXNzLmJzLm1vZGFsIixhLnByb3h5KGZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmlnbm9yZUJhY2tkcm9wQ2xpY2s/dm9pZCh0aGlzLmlnbm9yZUJhY2tkcm9wQ2xpY2s9ITEpOnZvaWQoYS50YXJnZXQ9PT1hLmN1cnJlbnRUYXJnZXQmJigic3RhdGljIj09dGhpcy5vcHRpb25zLmJhY2tkcm9wP3RoaXMuJGVsZW1lbnRbMF0uZm9jdXMoKTp0aGlzLmhpZGUoKSkpfSx0aGlzKSksZiYmdGhpcy4kYmFja2Ryb3BbMF0ub2Zmc2V0V2lkdGgsdGhpcy4kYmFja2Ryb3AuYWRkQ2xhc3MoImluIiksIWIpcmV0dXJuO2Y/dGhpcy4kYmFja2Ryb3Aub25lKCJic1RyYW5zaXRpb25FbmQiLGIpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuQkFDS0RST1BfVFJBTlNJVElPTl9EVVJBVElPTik6YigpfWVsc2UgaWYoIXRoaXMuaXNTaG93biYmdGhpcy4kYmFja2Ryb3Ape3RoaXMuJGJhY2tkcm9wLnJlbW92ZUNsYXNzKCJpbiIpO3ZhciBnPWZ1bmN0aW9uKCl7ZC5yZW1vdmVCYWNrZHJvcCgpLGImJmIoKX07YS5zdXBwb3J0LnRyYW5zaXRpb24mJnRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImZhZGUiKT90aGlzLiRiYWNrZHJvcC5vbmUoImJzVHJhbnNpdGlvbkVuZCIsZykuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5CQUNLRFJPUF9UUkFOU0lUSU9OX0RVUkFUSU9OKTpnKCl9ZWxzZSBiJiZiKCl9LGMucHJvdG90eXBlLmhhbmRsZVVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuYWRqdXN0RGlhbG9nKCl9LGMucHJvdG90eXBlLmFkanVzdERpYWxvZz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnRbMF0uc2Nyb2xsSGVpZ2h0PmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7dGhpcy4kZWxlbWVudC5jc3Moe3BhZGRpbmdMZWZ0OiF0aGlzLmJvZHlJc092ZXJmbG93aW5nJiZhP3RoaXMuc2Nyb2xsYmFyV2lkdGg6IiIscGFkZGluZ1JpZ2h0OnRoaXMuYm9keUlzT3ZlcmZsb3dpbmcmJiFhP3RoaXMuc2Nyb2xsYmFyV2lkdGg6IiJ9KX0sYy5wcm90b3R5cGUucmVzZXRBZGp1c3RtZW50cz1mdW5jdGlvbigpe3RoaXMuJGVsZW1lbnQuY3NzKHtwYWRkaW5nTGVmdDoiIixwYWRkaW5nUmlnaHQ6IiJ9KX0sYy5wcm90b3R5cGUuY2hlY2tTY3JvbGxiYXI9ZnVuY3Rpb24oKXt2YXIgYT13aW5kb3cuaW5uZXJXaWR0aDtpZighYSl7dmFyIGI9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2E9Yi5yaWdodC1NYXRoLmFicyhiLmxlZnQpfXRoaXMuYm9keUlzT3ZlcmZsb3dpbmc9ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aDxhLHRoaXMuc2Nyb2xsYmFyV2lkdGg9dGhpcy5tZWFzdXJlU2Nyb2xsYmFyKCl9LGMucHJvdG90eXBlLnNldFNjcm9sbGJhcj1mdW5jdGlvbigpe3ZhciBhPXBhcnNlSW50KHRoaXMuJGJvZHkuY3NzKCJwYWRkaW5nLXJpZ2h0Iil8fDAsMTApO3RoaXMub3JpZ2luYWxCb2R5UGFkPWRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0fHwiIix0aGlzLmJvZHlJc092ZXJmbG93aW5nJiZ0aGlzLiRib2R5LmNzcygicGFkZGluZy1yaWdodCIsYSt0aGlzLnNjcm9sbGJhcldpZHRoKX0sYy5wcm90b3R5cGUucmVzZXRTY3JvbGxiYXI9ZnVuY3Rpb24oKXt0aGlzLiRib2R5LmNzcygicGFkZGluZy1yaWdodCIsdGhpcy5vcmlnaW5hbEJvZHlQYWQpfSxjLnByb3RvdHlwZS5tZWFzdXJlU2Nyb2xsYmFyPWZ1bmN0aW9uKCl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5jbGFzc05hbWU9Im1vZGFsLXNjcm9sbGJhci1tZWFzdXJlIix0aGlzLiRib2R5LmFwcGVuZChhKTt2YXIgYj1hLm9mZnNldFdpZHRoLWEuY2xpZW50V2lkdGg7cmV0dXJuIHRoaXMuJGJvZHlbMF0ucmVtb3ZlQ2hpbGQoYSksYn07dmFyIGQ9YS5mbi5tb2RhbDthLmZuLm1vZGFsPWIsYS5mbi5tb2RhbC5Db25zdHJ1Y3Rvcj1jLGEuZm4ubW9kYWwubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLm1vZGFsPWQsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLm1vZGFsLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJtb2RhbCJdJyxmdW5jdGlvbihjKXt2YXIgZD1hKHRoaXMpLGU9ZC5hdHRyKCJocmVmIiksZj1hKGQuYXR0cigiZGF0YS10YXJnZXQiKXx8ZSYmZS5yZXBsYWNlKC8uKig/PSNbXlxzXSskKS8sIiIpKSxnPWYuZGF0YSgiYnMubW9kYWwiKT8idG9nZ2xlIjphLmV4dGVuZCh7cmVtb3RlOiEvIy8udGVzdChlKSYmZX0sZi5kYXRhKCksZC5kYXRhKCkpO2QuaXMoImEiKSYmYy5wcmV2ZW50RGVmYXVsdCgpLGYub25lKCJzaG93LmJzLm1vZGFsIixmdW5jdGlvbihhKXthLmlzRGVmYXVsdFByZXZlbnRlZCgpfHxmLm9uZSgiaGlkZGVuLmJzLm1vZGFsIixmdW5jdGlvbigpe2QuaXMoIjp2aXNpYmxlIikmJmQudHJpZ2dlcigiZm9jdXMiKX0pfSksYi5jYWxsKGYsZyx0aGlzKX0pfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiYnMudG9vbHRpcCIpLGY9Im9iamVjdCI9PXR5cGVvZiBiJiZiOyhlfHwhL2Rlc3Ryb3l8aGlkZS8udGVzdChiKSkmJihlfHxkLmRhdGEoImJzLnRvb2x0aXAiLGU9bmV3IGModGhpcyxmKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCkpfSl9dmFyIGM9ZnVuY3Rpb24oYSxiKXt0aGlzLnR5cGU9bnVsbCx0aGlzLm9wdGlvbnM9bnVsbCx0aGlzLmVuYWJsZWQ9bnVsbCx0aGlzLnRpbWVvdXQ9bnVsbCx0aGlzLmhvdmVyU3RhdGU9bnVsbCx0aGlzLiRlbGVtZW50PW51bGwsdGhpcy5pblN0YXRlPW51bGwsdGhpcy5pbml0KCJ0b29sdGlwIixhLGIpfTtjLlZFUlNJT049IjMuMy41IixjLlRSQU5TSVRJT05fRFVSQVRJT049MTUwLGMuREVGQVVMVFM9e2FuaW1hdGlvbjohMCxwbGFjZW1lbnQ6InRvcCIsc2VsZWN0b3I6ITEsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InRvb2x0aXAiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9InRvb2x0aXAtYXJyb3ciPjwvZGl2PjxkaXYgY2xhc3M9InRvb2x0aXAtaW5uZXIiPjwvZGl2PjwvZGl2PicsdHJpZ2dlcjoiaG92ZXIgZm9jdXMiLHRpdGxlOiIiLGRlbGF5OjAsaHRtbDohMSxjb250YWluZXI6ITEsdmlld3BvcnQ6e3NlbGVjdG9yOiJib2R5IixwYWRkaW5nOjB9fSxjLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGIsYyxkKXtpZih0aGlzLmVuYWJsZWQ9ITAsdGhpcy50eXBlPWIsdGhpcy4kZWxlbWVudD1hKGMpLHRoaXMub3B0aW9ucz10aGlzLmdldE9wdGlvbnMoZCksdGhpcy4kdmlld3BvcnQ9dGhpcy5vcHRpb25zLnZpZXdwb3J0JiZhKGEuaXNGdW5jdGlvbih0aGlzLm9wdGlvbnMudmlld3BvcnQpP3RoaXMub3B0aW9ucy52aWV3cG9ydC5jYWxsKHRoaXMsdGhpcy4kZWxlbWVudCk6dGhpcy5vcHRpb25zLnZpZXdwb3J0LnNlbGVjdG9yfHx0aGlzLm9wdGlvbnMudmlld3BvcnQpLHRoaXMuaW5TdGF0ZT17Y2xpY2s6ITEsaG92ZXI6ITEsZm9jdXM6ITF9LHRoaXMuJGVsZW1lbnRbMF1pbnN0YW5jZW9mIGRvY3VtZW50LmNvbnN0cnVjdG9yJiYhdGhpcy5vcHRpb25zLnNlbGVjdG9yKXRocm93IG5ldyBFcnJvcigiYHNlbGVjdG9yYCBvcHRpb24gbXVzdCBiZSBzcGVjaWZpZWQgd2hlbiBpbml0aWFsaXppbmcgIit0aGlzLnR5cGUrIiBvbiB0aGUgd2luZG93LmRvY3VtZW50IG9iamVjdCEiKTtmb3IodmFyIGU9dGhpcy5vcHRpb25zLnRyaWdnZXIuc3BsaXQoIiAiKSxmPWUubGVuZ3RoO2YtLTspe3ZhciBnPWVbZl07aWYoImNsaWNrIj09Zyl0aGlzLiRlbGVtZW50Lm9uKCJjbGljay4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLnRvZ2dsZSx0aGlzKSk7ZWxzZSBpZigibWFudWFsIiE9Zyl7dmFyIGg9ImhvdmVyIj09Zz8ibW91c2VlbnRlciI6ImZvY3VzaW4iLGk9ImhvdmVyIj09Zz8ibW91c2VsZWF2ZSI6ImZvY3Vzb3V0Ijt0aGlzLiRlbGVtZW50Lm9uKGgrIi4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLmVudGVyLHRoaXMpKSx0aGlzLiRlbGVtZW50Lm9uKGkrIi4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLmxlYXZlLHRoaXMpKX19dGhpcy5vcHRpb25zLnNlbGVjdG9yP3RoaXMuX29wdGlvbnM9YS5leHRlbmQoe30sdGhpcy5vcHRpb25zLHt0cmlnZ2VyOiJtYW51YWwiLHNlbGVjdG9yOiIifSk6dGhpcy5maXhUaXRsZSgpfSxjLnByb3RvdHlwZS5nZXREZWZhdWx0cz1mdW5jdGlvbigpe3JldHVybiBjLkRFRkFVTFRTfSxjLnByb3RvdHlwZS5nZXRPcHRpb25zPWZ1bmN0aW9uKGIpe3JldHVybiBiPWEuZXh0ZW5kKHt9LHRoaXMuZ2V0RGVmYXVsdHMoKSx0aGlzLiRlbGVtZW50LmRhdGEoKSxiKSxiLmRlbGF5JiYibnVtYmVyIj09dHlwZW9mIGIuZGVsYXkmJihiLmRlbGF5PXtzaG93OmIuZGVsYXksaGlkZTpiLmRlbGF5fSksYn0sYy5wcm90b3R5cGUuZ2V0RGVsZWdhdGVPcHRpb25zPWZ1bmN0aW9uKCl7dmFyIGI9e30sYz10aGlzLmdldERlZmF1bHRzKCk7cmV0dXJuIHRoaXMuX29wdGlvbnMmJmEuZWFjaCh0aGlzLl9vcHRpb25zLGZ1bmN0aW9uKGEsZCl7Y1thXSE9ZCYmKGJbYV09ZCl9KSxifSxjLnByb3RvdHlwZS5lbnRlcj1mdW5jdGlvbihiKXt2YXIgYz1iIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcj9iOmEoYi5jdXJyZW50VGFyZ2V0KS5kYXRhKCJicy4iK3RoaXMudHlwZSk7cmV0dXJuIGN8fChjPW5ldyB0aGlzLmNvbnN0cnVjdG9yKGIuY3VycmVudFRhcmdldCx0aGlzLmdldERlbGVnYXRlT3B0aW9ucygpKSxhKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIit0aGlzLnR5cGUsYykpLGIgaW5zdGFuY2VvZiBhLkV2ZW50JiYoYy5pblN0YXRlWyJmb2N1c2luIj09Yi50eXBlPyJmb2N1cyI6ImhvdmVyIl09ITApLGMudGlwKCkuaGFzQ2xhc3MoImluIil8fCJpbiI9PWMuaG92ZXJTdGF0ZT92b2lkKGMuaG92ZXJTdGF0ZT0iaW4iKTooY2xlYXJUaW1lb3V0KGMudGltZW91dCksYy5ob3ZlclN0YXRlPSJpbiIsYy5vcHRpb25zLmRlbGF5JiZjLm9wdGlvbnMuZGVsYXkuc2hvdz92b2lkKGMudGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ImluIj09Yy5ob3ZlclN0YXRlJiZjLnNob3coKX0sYy5vcHRpb25zLmRlbGF5LnNob3cpKTpjLnNob3coKSl9LGMucHJvdG90eXBlLmlzSW5TdGF0ZVRydWU9ZnVuY3Rpb24oKXtmb3IodmFyIGEgaW4gdGhpcy5pblN0YXRlKWlmKHRoaXMuaW5TdGF0ZVthXSlyZXR1cm4hMDtyZXR1cm4hMX0sYy5wcm90b3R5cGUubGVhdmU9ZnVuY3Rpb24oYil7dmFyIGM9YiBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3I/YjphKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIit0aGlzLnR5cGUpO3JldHVybiBjfHwoYz1uZXcgdGhpcy5jb25zdHJ1Y3RvcihiLmN1cnJlbnRUYXJnZXQsdGhpcy5nZXREZWxlZ2F0ZU9wdGlvbnMoKSksYShiLmN1cnJlbnRUYXJnZXQpLmRhdGEoImJzLiIrdGhpcy50eXBlLGMpKSxiIGluc3RhbmNlb2YgYS5FdmVudCYmKGMuaW5TdGF0ZVsiZm9jdXNvdXQiPT1iLnR5cGU/ImZvY3VzIjoiaG92ZXIiXT0hMSksYy5pc0luU3RhdGVUcnVlKCk/dm9pZCAwOihjbGVhclRpbWVvdXQoYy50aW1lb3V0KSxjLmhvdmVyU3RhdGU9Im91dCIsYy5vcHRpb25zLmRlbGF5JiZjLm9wdGlvbnMuZGVsYXkuaGlkZT92b2lkKGMudGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Im91dCI9PWMuaG92ZXJTdGF0ZSYmYy5oaWRlKCl9LGMub3B0aW9ucy5kZWxheS5oaWRlKSk6Yy5oaWRlKCkpfSxjLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7dmFyIGI9YS5FdmVudCgic2hvdy5icy4iK3RoaXMudHlwZSk7aWYodGhpcy5oYXNDb250ZW50KCkmJnRoaXMuZW5hYmxlZCl7dGhpcy4kZWxlbWVudC50cmlnZ2VyKGIpO3ZhciBkPWEuY29udGFpbnModGhpcy4kZWxlbWVudFswXS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx0aGlzLiRlbGVtZW50WzBdKTtpZihiLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwhZClyZXR1cm47dmFyIGU9dGhpcyxmPXRoaXMudGlwKCksZz10aGlzLmdldFVJRCh0aGlzLnR5cGUpO3RoaXMuc2V0Q29udGVudCgpLGYuYXR0cigiaWQiLGcpLHRoaXMuJGVsZW1lbnQuYXR0cigiYXJpYS1kZXNjcmliZWRieSIsZyksdGhpcy5vcHRpb25zLmFuaW1hdGlvbiYmZi5hZGRDbGFzcygiZmFkZSIpO3ZhciBoPSJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9wdGlvbnMucGxhY2VtZW50P3RoaXMub3B0aW9ucy5wbGFjZW1lbnQuY2FsbCh0aGlzLGZbMF0sdGhpcy4kZWxlbWVudFswXSk6dGhpcy5vcHRpb25zLnBsYWNlbWVudCxpPS9ccz9hdXRvP1xzPy9pLGo9aS50ZXN0KGgpO2omJihoPWgucmVwbGFjZShpLCIiKXx8InRvcCIpLGYuZGV0YWNoKCkuY3NzKHt0b3A6MCxsZWZ0OjAsZGlzcGxheToiYmxvY2sifSkuYWRkQ2xhc3MoaCkuZGF0YSgiYnMuIit0aGlzLnR5cGUsdGhpcyksdGhpcy5vcHRpb25zLmNvbnRhaW5lcj9mLmFwcGVuZFRvKHRoaXMub3B0aW9ucy5jb250YWluZXIpOmYuaW5zZXJ0QWZ0ZXIodGhpcy4kZWxlbWVudCksdGhpcy4kZWxlbWVudC50cmlnZ2VyKCJpbnNlcnRlZC5icy4iK3RoaXMudHlwZSk7dmFyIGs9dGhpcy5nZXRQb3NpdGlvbigpLGw9ZlswXS5vZmZzZXRXaWR0aCxtPWZbMF0ub2Zmc2V0SGVpZ2h0O2lmKGope3ZhciBuPWgsbz10aGlzLmdldFBvc2l0aW9uKHRoaXMuJHZpZXdwb3J0KTtoPSJib3R0b20iPT1oJiZrLmJvdHRvbSttPm8uYm90dG9tPyJ0b3AiOiJ0b3AiPT1oJiZrLnRvcC1tPG8udG9wPyJib3R0b20iOiJyaWdodCI9PWgmJmsucmlnaHQrbD5vLndpZHRoPyJsZWZ0IjoibGVmdCI9PWgmJmsubGVmdC1sPG8ubGVmdD8icmlnaHQiOmgsZi5yZW1vdmVDbGFzcyhuKS5hZGRDbGFzcyhoKX12YXIgcD10aGlzLmdldENhbGN1bGF0ZWRPZmZzZXQoaCxrLGwsbSk7dGhpcy5hcHBseVBsYWNlbWVudChwLGgpO3ZhciBxPWZ1bmN0aW9uKCl7dmFyIGE9ZS5ob3ZlclN0YXRlO2UuJGVsZW1lbnQudHJpZ2dlcigic2hvd24uYnMuIitlLnR5cGUpLGUuaG92ZXJTdGF0ZT1udWxsLCJvdXQiPT1hJiZlLmxlYXZlKGUpfTthLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kdGlwLmhhc0NsYXNzKCJmYWRlIik/Zi5vbmUoImJzVHJhbnNpdGlvbkVuZCIscSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5UUkFOU0lUSU9OX0RVUkFUSU9OKTpxKCl9fSxjLnByb3RvdHlwZS5hcHBseVBsYWNlbWVudD1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMudGlwKCksZT1kWzBdLm9mZnNldFdpZHRoLGY9ZFswXS5vZmZzZXRIZWlnaHQsZz1wYXJzZUludChkLmNzcygibWFyZ2luLXRvcCIpLDEwKSxoPXBhcnNlSW50KGQuY3NzKCJtYXJnaW4tbGVmdCIpLDEwKTtpc05hTihnKSYmKGc9MCksaXNOYU4oaCkmJihoPTApLGIudG9wKz1nLGIubGVmdCs9aCxhLm9mZnNldC5zZXRPZmZzZXQoZFswXSxhLmV4dGVuZCh7dXNpbmc6ZnVuY3Rpb24oYSl7ZC5jc3Moe3RvcDpNYXRoLnJvdW5kKGEudG9wKSxsZWZ0Ok1hdGgucm91bmQoYS5sZWZ0KX0pfX0sYiksMCksZC5hZGRDbGFzcygiaW4iKTt2YXIgaT1kWzBdLm9mZnNldFdpZHRoLGo9ZFswXS5vZmZzZXRIZWlnaHQ7InRvcCI9PWMmJmohPWYmJihiLnRvcD1iLnRvcCtmLWopO3ZhciBrPXRoaXMuZ2V0Vmlld3BvcnRBZGp1c3RlZERlbHRhKGMsYixpLGopO2subGVmdD9iLmxlZnQrPWsubGVmdDpiLnRvcCs9ay50b3A7dmFyIGw9L3RvcHxib3R0b20vLnRlc3QoYyksbT1sPzIqay5sZWZ0LWUraToyKmsudG9wLWYraixuPWw/Im9mZnNldFdpZHRoIjoib2Zmc2V0SGVpZ2h0IjtkLm9mZnNldChiKSx0aGlzLnJlcGxhY2VBcnJvdyhtLGRbMF1bbl0sbCl9LGMucHJvdG90eXBlLnJlcGxhY2VBcnJvdz1mdW5jdGlvbihhLGIsYyl7dGhpcy5hcnJvdygpLmNzcyhjPyJsZWZ0IjoidG9wIiw1MCooMS1hL2IpKyIlIikuY3NzKGM/InRvcCI6ImxlZnQiLCIiKX0sYy5wcm90b3R5cGUuc2V0Q29udGVudD1mdW5jdGlvbigpe3ZhciBhPXRoaXMudGlwKCksYj10aGlzLmdldFRpdGxlKCk7YS5maW5kKCIudG9vbHRpcC1pbm5lciIpW3RoaXMub3B0aW9ucy5odG1sPyJodG1sIjoidGV4dCJdKGIpLGEucmVtb3ZlQ2xhc3MoImZhZGUgaW4gdG9wIGJvdHRvbSBsZWZ0IHJpZ2h0Iil9LGMucHJvdG90eXBlLmhpZGU9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gZCgpeyJpbiIhPWUuaG92ZXJTdGF0ZSYmZi5kZXRhY2goKSxlLiRlbGVtZW50LnJlbW92ZUF0dHIoImFyaWEtZGVzY3JpYmVkYnkiKS50cmlnZ2VyKCJoaWRkZW4uYnMuIitlLnR5cGUpLGImJmIoKX12YXIgZT10aGlzLGY9YSh0aGlzLiR0aXApLGc9YS5FdmVudCgiaGlkZS5icy4iK3RoaXMudHlwZSk7cmV0dXJuIHRoaXMuJGVsZW1lbnQudHJpZ2dlcihnKSxnLmlzRGVmYXVsdFByZXZlbnRlZCgpP3ZvaWQgMDooZi5yZW1vdmVDbGFzcygiaW4iKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmZi5oYXNDbGFzcygiZmFkZSIpP2Yub25lKCJic1RyYW5zaXRpb25FbmQiLGQpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTik6ZCgpLHRoaXMuaG92ZXJTdGF0ZT1udWxsLHRoaXMpfSxjLnByb3RvdHlwZS5maXhUaXRsZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQ7KGEuYXR0cigidGl0bGUiKXx8InN0cmluZyIhPXR5cGVvZiBhLmF0dHIoImRhdGEtb3JpZ2luYWwtdGl0bGUiKSkmJmEuYXR0cigiZGF0YS1vcmlnaW5hbC10aXRsZSIsYS5hdHRyKCJ0aXRsZSIpfHwiIikuYXR0cigidGl0bGUiLCIiKX0sYy5wcm90b3R5cGUuaGFzQ29udGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRpdGxlKCl9LGMucHJvdG90eXBlLmdldFBvc2l0aW9uPWZ1bmN0aW9uKGIpe2I9Ynx8dGhpcy4kZWxlbWVudDt2YXIgYz1iWzBdLGQ9IkJPRFkiPT1jLnRhZ05hbWUsZT1jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO251bGw9PWUud2lkdGgmJihlPWEuZXh0ZW5kKHt9LGUse3dpZHRoOmUucmlnaHQtZS5sZWZ0LGhlaWdodDplLmJvdHRvbS1lLnRvcH0pKTt2YXIgZj1kP3t0b3A6MCxsZWZ0OjB9OmIub2Zmc2V0KCksZz17c2Nyb2xsOmQ/ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcHx8ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A6Yi5zY3JvbGxUb3AoKX0saD1kP3t3aWR0aDphKHdpbmRvdykud2lkdGgoKSxoZWlnaHQ6YSh3aW5kb3cpLmhlaWdodCgpfTpudWxsO3JldHVybiBhLmV4dGVuZCh7fSxlLGcsaCxmKX0sYy5wcm90b3R5cGUuZ2V0Q2FsY3VsYXRlZE9mZnNldD1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4iYm90dG9tIj09YT97dG9wOmIudG9wK2IuaGVpZ2h0LGxlZnQ6Yi5sZWZ0K2Iud2lkdGgvMi1jLzJ9OiJ0b3AiPT1hP3t0b3A6Yi50b3AtZCxsZWZ0OmIubGVmdCtiLndpZHRoLzItYy8yfToibGVmdCI9PWE/e3RvcDpiLnRvcCtiLmhlaWdodC8yLWQvMixsZWZ0OmIubGVmdC1jfTp7dG9wOmIudG9wK2IuaGVpZ2h0LzItZC8yLGxlZnQ6Yi5sZWZ0K2Iud2lkdGh9fSxjLnByb3RvdHlwZS5nZXRWaWV3cG9ydEFkanVzdGVkRGVsdGE9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9e3RvcDowLGxlZnQ6MH07aWYoIXRoaXMuJHZpZXdwb3J0KXJldHVybiBlO3ZhciBmPXRoaXMub3B0aW9ucy52aWV3cG9ydCYmdGhpcy5vcHRpb25zLnZpZXdwb3J0LnBhZGRpbmd8fDAsZz10aGlzLmdldFBvc2l0aW9uKHRoaXMuJHZpZXdwb3J0KTtpZigvcmlnaHR8bGVmdC8udGVzdChhKSl7dmFyIGg9Yi50b3AtZi1nLnNjcm9sbCxpPWIudG9wK2YtZy5zY3JvbGwrZDtoPGcudG9wP2UudG9wPWcudG9wLWg6aT5nLnRvcCtnLmhlaWdodCYmKGUudG9wPWcudG9wK2cuaGVpZ2h0LWkpfWVsc2V7dmFyIGo9Yi5sZWZ0LWYsaz1iLmxlZnQrZitjO2o8Zy5sZWZ0P2UubGVmdD1nLmxlZnQtajprPmcucmlnaHQmJihlLmxlZnQ9Zy5sZWZ0K2cud2lkdGgtayl9cmV0dXJuIGV9LGMucHJvdG90eXBlLmdldFRpdGxlPWZ1bmN0aW9uKCl7dmFyIGEsYj10aGlzLiRlbGVtZW50LGM9dGhpcy5vcHRpb25zO3JldHVybiBhPWIuYXR0cigiZGF0YS1vcmlnaW5hbC10aXRsZSIpfHwoImZ1bmN0aW9uIj09dHlwZW9mIGMudGl0bGU/Yy50aXRsZS5jYWxsKGJbMF0pOmMudGl0bGUpfSxjLnByb3RvdHlwZS5nZXRVSUQ9ZnVuY3Rpb24oYSl7ZG8gYSs9fn4oMWU2Kk1hdGgucmFuZG9tKCkpO3doaWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpKTtyZXR1cm4gYX0sYy5wcm90b3R5cGUudGlwPWZ1bmN0aW9uKCl7aWYoIXRoaXMuJHRpcCYmKHRoaXMuJHRpcD1hKHRoaXMub3B0aW9ucy50ZW1wbGF0ZSksMSE9dGhpcy4kdGlwLmxlbmd0aCkpdGhyb3cgbmV3IEVycm9yKHRoaXMudHlwZSsiIGB0ZW1wbGF0ZWAgb3B0aW9uIG11c3QgY29uc2lzdCBvZiBleGFjdGx5IDEgdG9wLWxldmVsIGVsZW1lbnQhIik7cmV0dXJuIHRoaXMuJHRpcH0sYy5wcm90b3R5cGUuYXJyb3c9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kYXJyb3c9dGhpcy4kYXJyb3d8fHRoaXMudGlwKCkuZmluZCgiLnRvb2x0aXAtYXJyb3ciKX0sYy5wcm90b3R5cGUuZW5hYmxlPWZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSEwfSxjLnByb3RvdHlwZS5kaXNhYmxlPWZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSExfSxjLnByb3RvdHlwZS50b2dnbGVFbmFibGVkPWZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSF0aGlzLmVuYWJsZWR9LGMucHJvdG90eXBlLnRvZ2dsZT1mdW5jdGlvbihiKXt2YXIgYz10aGlzO2ImJihjPWEoYi5jdXJyZW50VGFyZ2V0KS5kYXRhKCJicy4iK3RoaXMudHlwZSksY3x8KGM9bmV3IHRoaXMuY29uc3RydWN0b3IoYi5jdXJyZW50VGFyZ2V0LHRoaXMuZ2V0RGVsZWdhdGVPcHRpb25zKCkpLGEoYi5jdXJyZW50VGFyZ2V0KS5kYXRhKCJicy4iK3RoaXMudHlwZSxjKSkpLGI/KGMuaW5TdGF0ZS5jbGljaz0hYy5pblN0YXRlLmNsaWNrLGMuaXNJblN0YXRlVHJ1ZSgpP2MuZW50ZXIoYyk6Yy5sZWF2ZShjKSk6Yy50aXAoKS5oYXNDbGFzcygiaW4iKT9jLmxlYXZlKGMpOmMuZW50ZXIoYyl9LGMucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO2NsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpLHRoaXMuaGlkZShmdW5jdGlvbigpe2EuJGVsZW1lbnQub2ZmKCIuIithLnR5cGUpLnJlbW92ZURhdGEoImJzLiIrYS50eXBlKSxhLiR0aXAmJmEuJHRpcC5kZXRhY2goKSxhLiR0aXA9bnVsbCxhLiRhcnJvdz1udWxsLGEuJHZpZXdwb3J0PW51bGx9KX07dmFyIGQ9YS5mbi50b29sdGlwO2EuZm4udG9vbHRpcD1iLGEuZm4udG9vbHRpcC5Db25zdHJ1Y3Rvcj1jLGEuZm4udG9vbHRpcC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4udG9vbHRpcD1kLHRoaXN9fShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiYnMucG9wb3ZlciIpLGY9Im9iamVjdCI9PXR5cGVvZiBiJiZiOyhlfHwhL2Rlc3Ryb3l8aGlkZS8udGVzdChiKSkmJihlfHxkLmRhdGEoImJzLnBvcG92ZXIiLGU9bmV3IGModGhpcyxmKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCkpfSl9dmFyIGM9ZnVuY3Rpb24oYSxiKXt0aGlzLmluaXQoInBvcG92ZXIiLGEsYil9O2lmKCFhLmZuLnRvb2x0aXApdGhyb3cgbmV3IEVycm9yKCJQb3BvdmVyIHJlcXVpcmVzIHRvb2x0aXAuanMiKTtjLlZFUlNJT049IjMuMy41IixjLkRFRkFVTFRTPWEuZXh0ZW5kKHt9LGEuZm4udG9vbHRpcC5Db25zdHJ1Y3Rvci5ERUZBVUxUUyx7cGxhY2VtZW50OiJyaWdodCIsdHJpZ2dlcjoiY2xpY2siLGNvbnRlbnQ6IiIsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InBvcG92ZXIiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9ImFycm93Ij48L2Rpdj48aDMgY2xhc3M9InBvcG92ZXItdGl0bGUiPjwvaDM+PGRpdiBjbGFzcz0icG9wb3Zlci1jb250ZW50Ij48L2Rpdj48L2Rpdj4nfSksYy5wcm90b3R5cGU9YS5leHRlbmQoe30sYS5mbi50b29sdGlwLkNvbnN0cnVjdG9yLnByb3RvdHlwZSksYy5wcm90b3R5cGUuY29uc3RydWN0b3I9YyxjLnByb3RvdHlwZS5nZXREZWZhdWx0cz1mdW5jdGlvbigpe3JldHVybiBjLkRFRkFVTFRTfSxjLnByb3RvdHlwZS5zZXRDb250ZW50PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy50aXAoKSxiPXRoaXMuZ2V0VGl0bGUoKSxjPXRoaXMuZ2V0Q29udGVudCgpO2EuZmluZCgiLnBvcG92ZXItdGl0bGUiKVt0aGlzLm9wdGlvbnMuaHRtbD8iaHRtbCI6InRleHQiXShiKSxhLmZpbmQoIi5wb3BvdmVyLWNvbnRlbnQiKS5jaGlsZHJlbigpLmRldGFjaCgpLmVuZCgpW3RoaXMub3B0aW9ucy5odG1sPyJzdHJpbmciPT10eXBlb2YgYz8iaHRtbCI6ImFwcGVuZCI6InRleHQiXShjKSxhLnJlbW92ZUNsYXNzKCJmYWRlIHRvcCBib3R0b20gbGVmdCByaWdodCBpbiIpLGEuZmluZCgiLnBvcG92ZXItdGl0bGUiKS5odG1sKCl8fGEuZmluZCgiLnBvcG92ZXItdGl0bGUiKS5oaWRlKCl9LGMucHJvdG90eXBlLmhhc0NvbnRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUaXRsZSgpfHx0aGlzLmdldENvbnRlbnQoKX0sYy5wcm90b3R5cGUuZ2V0Q29udGVudD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQsYj10aGlzLm9wdGlvbnM7cmV0dXJuIGEuYXR0cigiZGF0YS1jb250ZW50Iil8fCgiZnVuY3Rpb24iPT10eXBlb2YgYi5jb250ZW50P2IuY29udGVudC5jYWxsKGFbMF0pOmIuY29udGVudCl9LGMucHJvdG90eXBlLmFycm93PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGFycm93PXRoaXMuJGFycm93fHx0aGlzLnRpcCgpLmZpbmQoIi5hcnJvdyIpfTt2YXIgZD1hLmZuLnBvcG92ZXI7YS5mbi5wb3BvdmVyPWIsYS5mbi5wb3BvdmVyLkNvbnN0cnVjdG9yPWMsYS5mbi5wb3BvdmVyLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5wb3BvdmVyPWQsdGhpc319KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGMsZCl7dGhpcy4kYm9keT1hKGRvY3VtZW50LmJvZHkpLHRoaXMuJHNjcm9sbEVsZW1lbnQ9YShhKGMpLmlzKGRvY3VtZW50LmJvZHkpP3dpbmRvdzpjKSx0aGlzLm9wdGlvbnM9YS5leHRlbmQoe30sYi5ERUZBVUxUUyxkKSx0aGlzLnNlbGVjdG9yPSh0aGlzLm9wdGlvbnMudGFyZ2V0fHwiIikrIiAubmF2IGxpID4gYSIsdGhpcy5vZmZzZXRzPVtdLHRoaXMudGFyZ2V0cz1bXSx0aGlzLmFjdGl2ZVRhcmdldD1udWxsLHRoaXMuc2Nyb2xsSGVpZ2h0PTAsdGhpcy4kc2Nyb2xsRWxlbWVudC5vbigic2Nyb2xsLmJzLnNjcm9sbHNweSIsYS5wcm94eSh0aGlzLnByb2Nlc3MsdGhpcykpLHRoaXMucmVmcmVzaCgpLHRoaXMucHJvY2VzcygpfWZ1bmN0aW9uIGMoYyl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLnNjcm9sbHNweSIpLGY9Im9iamVjdCI9PXR5cGVvZiBjJiZjO2V8fGQuZGF0YSgiYnMuc2Nyb2xsc3B5IixlPW5ldyBiKHRoaXMsZikpLCJzdHJpbmciPT10eXBlb2YgYyYmZVtjXSgpfSl9Yi5WRVJTSU9OPSIzLjMuNSIsYi5ERUZBVUxUUz17b2Zmc2V0OjEwfSxiLnByb3RvdHlwZS5nZXRTY3JvbGxIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kc2Nyb2xsRWxlbWVudFswXS5zY3JvbGxIZWlnaHR8fE1hdGgubWF4KHRoaXMuJGJvZHlbMF0uc2Nyb2xsSGVpZ2h0LGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQpfSxiLnByb3RvdHlwZS5yZWZyZXNoPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxjPSJvZmZzZXQiLGQ9MDt0aGlzLm9mZnNldHM9W10sdGhpcy50YXJnZXRzPVtdLHRoaXMuc2Nyb2xsSGVpZ2h0PXRoaXMuZ2V0U2Nyb2xsSGVpZ2h0KCksYS5pc1dpbmRvdyh0aGlzLiRzY3JvbGxFbGVtZW50WzBdKXx8KGM9InBvc2l0aW9uIixkPXRoaXMuJHNjcm9sbEVsZW1lbnQuc2Nyb2xsVG9wKCkpLHRoaXMuJGJvZHkuZmluZCh0aGlzLnNlbGVjdG9yKS5tYXAoZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpLGU9Yi5kYXRhKCJ0YXJnZXQiKXx8Yi5hdHRyKCJocmVmIiksZj0vXiMuLy50ZXN0KGUpJiZhKGUpO3JldHVybiBmJiZmLmxlbmd0aCYmZi5pcygiOnZpc2libGUiKSYmW1tmW2NdKCkudG9wK2QsZV1dfHxudWxsfSkuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhWzBdLWJbMF19KS5lYWNoKGZ1bmN0aW9uKCl7Yi5vZmZzZXRzLnB1c2godGhpc1swXSksYi50YXJnZXRzLnB1c2godGhpc1sxXSl9KX0sYi5wcm90b3R5cGUucHJvY2Vzcz1mdW5jdGlvbigpe3ZhciBhLGI9dGhpcy4kc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3AoKSt0aGlzLm9wdGlvbnMub2Zmc2V0LGM9dGhpcy5nZXRTY3JvbGxIZWlnaHQoKSxkPXRoaXMub3B0aW9ucy5vZmZzZXQrYy10aGlzLiRzY3JvbGxFbGVtZW50LmhlaWdodCgpLGU9dGhpcy5vZmZzZXRzLGY9dGhpcy50YXJnZXRzLGc9dGhpcy5hY3RpdmVUYXJnZXQ7aWYodGhpcy5zY3JvbGxIZWlnaHQhPWMmJnRoaXMucmVmcmVzaCgpLGI+PWQpcmV0dXJuIGchPShhPWZbZi5sZW5ndGgtMV0pJiZ0aGlzLmFjdGl2YXRlKGEpO2lmKGcmJmI8ZVswXSlyZXR1cm4gdGhpcy5hY3RpdmVUYXJnZXQ9bnVsbCx0aGlzLmNsZWFyKCk7Zm9yKGE9ZS5sZW5ndGg7YS0tOylnIT1mW2FdJiZiPj1lW2FdJiYodm9pZCAwPT09ZVthKzFdfHxiPGVbYSsxXSkmJnRoaXMuYWN0aXZhdGUoZlthXSl9LGIucHJvdG90eXBlLmFjdGl2YXRlPWZ1bmN0aW9uKGIpe3RoaXMuYWN0aXZlVGFyZ2V0PWIsdGhpcy5jbGVhcigpO3ZhciBjPXRoaXMuc2VsZWN0b3IrJ1tkYXRhLXRhcmdldD0iJytiKyciXSwnK3RoaXMuc2VsZWN0b3IrJ1tocmVmPSInK2IrJyJdJyxkPWEoYykucGFyZW50cygibGkiKS5hZGRDbGFzcygiYWN0aXZlIik7ZC5wYXJlbnQoIi5kcm9wZG93bi1tZW51IikubGVuZ3RoJiYoZD1kLmNsb3Nlc3QoImxpLmRyb3Bkb3duIikuYWRkQ2xhc3MoImFjdGl2ZSIpKSwKZC50cmlnZ2VyKCJhY3RpdmF0ZS5icy5zY3JvbGxzcHkiKX0sYi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXthKHRoaXMuc2VsZWN0b3IpLnBhcmVudHNVbnRpbCh0aGlzLm9wdGlvbnMudGFyZ2V0LCIuYWN0aXZlIikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpfTt2YXIgZD1hLmZuLnNjcm9sbHNweTthLmZuLnNjcm9sbHNweT1jLGEuZm4uc2Nyb2xsc3B5LkNvbnN0cnVjdG9yPWIsYS5mbi5zY3JvbGxzcHkubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLnNjcm9sbHNweT1kLHRoaXN9LGEod2luZG93KS5vbigibG9hZC5icy5zY3JvbGxzcHkuZGF0YS1hcGkiLGZ1bmN0aW9uKCl7YSgnW2RhdGEtc3B5PSJzY3JvbGwiXScpLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpO2MuY2FsbChiLGIuZGF0YSgpKX0pfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy50YWIiKTtlfHxkLmRhdGEoImJzLnRhYiIsZT1uZXcgYyh0aGlzKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCl9KX12YXIgYz1mdW5jdGlvbihiKXt0aGlzLmVsZW1lbnQ9YShiKX07Yy5WRVJTSU9OPSIzLjMuNSIsYy5UUkFOU0lUSU9OX0RVUkFUSU9OPTE1MCxjLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5lbGVtZW50LGM9Yi5jbG9zZXN0KCJ1bDpub3QoLmRyb3Bkb3duLW1lbnUpIiksZD1iLmRhdGEoInRhcmdldCIpO2lmKGR8fChkPWIuYXR0cigiaHJlZiIpLGQ9ZCYmZC5yZXBsYWNlKC8uKig/PSNbXlxzXSokKS8sIiIpKSwhYi5wYXJlbnQoImxpIikuaGFzQ2xhc3MoImFjdGl2ZSIpKXt2YXIgZT1jLmZpbmQoIi5hY3RpdmU6bGFzdCBhIiksZj1hLkV2ZW50KCJoaWRlLmJzLnRhYiIse3JlbGF0ZWRUYXJnZXQ6YlswXX0pLGc9YS5FdmVudCgic2hvdy5icy50YWIiLHtyZWxhdGVkVGFyZ2V0OmVbMF19KTtpZihlLnRyaWdnZXIoZiksYi50cmlnZ2VyKGcpLCFnLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYhZi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7dmFyIGg9YShkKTt0aGlzLmFjdGl2YXRlKGIuY2xvc2VzdCgibGkiKSxjKSx0aGlzLmFjdGl2YXRlKGgsaC5wYXJlbnQoKSxmdW5jdGlvbigpe2UudHJpZ2dlcih7dHlwZToiaGlkZGVuLmJzLnRhYiIscmVsYXRlZFRhcmdldDpiWzBdfSksYi50cmlnZ2VyKHt0eXBlOiJzaG93bi5icy50YWIiLHJlbGF0ZWRUYXJnZXQ6ZVswXX0pfSl9fX0sYy5wcm90b3R5cGUuYWN0aXZhdGU9ZnVuY3Rpb24oYixkLGUpe2Z1bmN0aW9uIGYoKXtnLnJlbW92ZUNsYXNzKCJhY3RpdmUiKS5maW5kKCI+IC5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKS5lbmQoKS5maW5kKCdbZGF0YS10b2dnbGU9InRhYiJdJykuYXR0cigiYXJpYS1leHBhbmRlZCIsITEpLGIuYWRkQ2xhc3MoImFjdGl2ZSIpLmZpbmQoJ1tkYXRhLXRvZ2dsZT0idGFiIl0nKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksaD8oYlswXS5vZmZzZXRXaWR0aCxiLmFkZENsYXNzKCJpbiIpKTpiLnJlbW92ZUNsYXNzKCJmYWRlIiksYi5wYXJlbnQoIi5kcm9wZG93bi1tZW51IikubGVuZ3RoJiZiLmNsb3Nlc3QoImxpLmRyb3Bkb3duIikuYWRkQ2xhc3MoImFjdGl2ZSIpLmVuZCgpLmZpbmQoJ1tkYXRhLXRvZ2dsZT0idGFiIl0nKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksZSYmZSgpfXZhciBnPWQuZmluZCgiPiAuYWN0aXZlIiksaD1lJiZhLnN1cHBvcnQudHJhbnNpdGlvbiYmKGcubGVuZ3RoJiZnLmhhc0NsYXNzKCJmYWRlIil8fCEhZC5maW5kKCI+IC5mYWRlIikubGVuZ3RoKTtnLmxlbmd0aCYmaD9nLm9uZSgiYnNUcmFuc2l0aW9uRW5kIixmKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChjLlRSQU5TSVRJT05fRFVSQVRJT04pOmYoKSxnLnJlbW92ZUNsYXNzKCJpbiIpfTt2YXIgZD1hLmZuLnRhYjthLmZuLnRhYj1iLGEuZm4udGFiLkNvbnN0cnVjdG9yPWMsYS5mbi50YWIubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLnRhYj1kLHRoaXN9O3ZhciBlPWZ1bmN0aW9uKGMpe2MucHJldmVudERlZmF1bHQoKSxiLmNhbGwoYSh0aGlzKSwic2hvdyIpfTthKGRvY3VtZW50KS5vbigiY2xpY2suYnMudGFiLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJ0YWIiXScsZSkub24oImNsaWNrLmJzLnRhYi5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZT0icGlsbCJdJyxlKX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLmFmZml4IiksZj0ib2JqZWN0Ij09dHlwZW9mIGImJmI7ZXx8ZC5kYXRhKCJicy5hZmZpeCIsZT1uZXcgYyh0aGlzLGYpKSwic3RyaW5nIj09dHlwZW9mIGImJmVbYl0oKX0pfXZhciBjPWZ1bmN0aW9uKGIsZCl7dGhpcy5vcHRpb25zPWEuZXh0ZW5kKHt9LGMuREVGQVVMVFMsZCksdGhpcy4kdGFyZ2V0PWEodGhpcy5vcHRpb25zLnRhcmdldCkub24oInNjcm9sbC5icy5hZmZpeC5kYXRhLWFwaSIsYS5wcm94eSh0aGlzLmNoZWNrUG9zaXRpb24sdGhpcykpLm9uKCJjbGljay5icy5hZmZpeC5kYXRhLWFwaSIsYS5wcm94eSh0aGlzLmNoZWNrUG9zaXRpb25XaXRoRXZlbnRMb29wLHRoaXMpKSx0aGlzLiRlbGVtZW50PWEoYiksdGhpcy5hZmZpeGVkPW51bGwsdGhpcy51bnBpbj1udWxsLHRoaXMucGlubmVkT2Zmc2V0PW51bGwsdGhpcy5jaGVja1Bvc2l0aW9uKCl9O2MuVkVSU0lPTj0iMy4zLjUiLGMuUkVTRVQ9ImFmZml4IGFmZml4LXRvcCBhZmZpeC1ib3R0b20iLGMuREVGQVVMVFM9e29mZnNldDowLHRhcmdldDp3aW5kb3d9LGMucHJvdG90eXBlLmdldFN0YXRlPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXRoaXMuJHRhcmdldC5zY3JvbGxUb3AoKSxmPXRoaXMuJGVsZW1lbnQub2Zmc2V0KCksZz10aGlzLiR0YXJnZXQuaGVpZ2h0KCk7aWYobnVsbCE9YyYmInRvcCI9PXRoaXMuYWZmaXhlZClyZXR1cm4gYz5lPyJ0b3AiOiExO2lmKCJib3R0b20iPT10aGlzLmFmZml4ZWQpcmV0dXJuIG51bGwhPWM/ZSt0aGlzLnVucGluPD1mLnRvcD8hMToiYm90dG9tIjphLWQ+PWUrZz8hMToiYm90dG9tIjt2YXIgaD1udWxsPT10aGlzLmFmZml4ZWQsaT1oP2U6Zi50b3Asaj1oP2c6YjtyZXR1cm4gbnVsbCE9YyYmYz49ZT8idG9wIjpudWxsIT1kJiZpK2o+PWEtZD8iYm90dG9tIjohMX0sYy5wcm90b3R5cGUuZ2V0UGlubmVkT2Zmc2V0PWZ1bmN0aW9uKCl7aWYodGhpcy5waW5uZWRPZmZzZXQpcmV0dXJuIHRoaXMucGlubmVkT2Zmc2V0O3RoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoYy5SRVNFVCkuYWRkQ2xhc3MoImFmZml4Iik7dmFyIGE9dGhpcy4kdGFyZ2V0LnNjcm9sbFRvcCgpLGI9dGhpcy4kZWxlbWVudC5vZmZzZXQoKTtyZXR1cm4gdGhpcy5waW5uZWRPZmZzZXQ9Yi50b3AtYX0sYy5wcm90b3R5cGUuY2hlY2tQb3NpdGlvbldpdGhFdmVudExvb3A9ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGEucHJveHkodGhpcy5jaGVja1Bvc2l0aW9uLHRoaXMpLDEpfSxjLnByb3RvdHlwZS5jaGVja1Bvc2l0aW9uPWZ1bmN0aW9uKCl7aWYodGhpcy4kZWxlbWVudC5pcygiOnZpc2libGUiKSl7dmFyIGI9dGhpcy4kZWxlbWVudC5oZWlnaHQoKSxkPXRoaXMub3B0aW9ucy5vZmZzZXQsZT1kLnRvcCxmPWQuYm90dG9tLGc9TWF0aC5tYXgoYShkb2N1bWVudCkuaGVpZ2h0KCksYShkb2N1bWVudC5ib2R5KS5oZWlnaHQoKSk7Im9iamVjdCIhPXR5cGVvZiBkJiYoZj1lPWQpLCJmdW5jdGlvbiI9PXR5cGVvZiBlJiYoZT1kLnRvcCh0aGlzLiRlbGVtZW50KSksImZ1bmN0aW9uIj09dHlwZW9mIGYmJihmPWQuYm90dG9tKHRoaXMuJGVsZW1lbnQpKTt2YXIgaD10aGlzLmdldFN0YXRlKGcsYixlLGYpO2lmKHRoaXMuYWZmaXhlZCE9aCl7bnVsbCE9dGhpcy51bnBpbiYmdGhpcy4kZWxlbWVudC5jc3MoInRvcCIsIiIpO3ZhciBpPSJhZmZpeCIrKGg/Ii0iK2g6IiIpLGo9YS5FdmVudChpKyIuYnMuYWZmaXgiKTtpZih0aGlzLiRlbGVtZW50LnRyaWdnZXIoaiksai5pc0RlZmF1bHRQcmV2ZW50ZWQoKSlyZXR1cm47dGhpcy5hZmZpeGVkPWgsdGhpcy51bnBpbj0iYm90dG9tIj09aD90aGlzLmdldFBpbm5lZE9mZnNldCgpOm51bGwsdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcyhjLlJFU0VUKS5hZGRDbGFzcyhpKS50cmlnZ2VyKGkucmVwbGFjZSgiYWZmaXgiLCJhZmZpeGVkIikrIi5icy5hZmZpeCIpfSJib3R0b20iPT1oJiZ0aGlzLiRlbGVtZW50Lm9mZnNldCh7dG9wOmctYi1mfSl9fTt2YXIgZD1hLmZuLmFmZml4O2EuZm4uYWZmaXg9YixhLmZuLmFmZml4LkNvbnN0cnVjdG9yPWMsYS5mbi5hZmZpeC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uYWZmaXg9ZCx0aGlzfSxhKHdpbmRvdykub24oImxvYWQiLGZ1bmN0aW9uKCl7YSgnW2RhdGEtc3B5PSJhZmZpeCJdJykuZWFjaChmdW5jdGlvbigpe3ZhciBjPWEodGhpcyksZD1jLmRhdGEoKTtkLm9mZnNldD1kLm9mZnNldHx8e30sbnVsbCE9ZC5vZmZzZXRCb3R0b20mJihkLm9mZnNldC5ib3R0b209ZC5vZmZzZXRCb3R0b20pLG51bGwhPWQub2Zmc2V0VG9wJiYoZC5vZmZzZXQudG9wPWQub2Zmc2V0VG9wKSxiLmNhbGwoYyxkKX0pfSl9KGpRdWVyeSk7"></script>
<script src="data:application/javascript;base64,LyoqCiogQHByZXNlcnZlIEhUTUw1IFNoaXYgMy43LjIgfCBAYWZhcmthcyBAamRhbHRvbiBAam9uX25lYWwgQHJlbSB8IE1JVC9HUEwyIExpY2Vuc2VkCiovCi8vIE9ubHkgcnVuIHRoaXMgY29kZSBpbiBJRSA4CmlmICghIXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKCJNU0lFIDgiKSkgewohZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYil7dmFyIGM9YS5jcmVhdGVFbGVtZW50KCJwIiksZD1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGEuZG9jdW1lbnRFbGVtZW50O3JldHVybiBjLmlubmVySFRNTD0ieDxzdHlsZT4iK2IrIjwvc3R5bGU+IixkLmluc2VydEJlZm9yZShjLmxhc3RDaGlsZCxkLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIGQoKXt2YXIgYT10LmVsZW1lbnRzO3JldHVybiJzdHJpbmciPT10eXBlb2YgYT9hLnNwbGl0KCIgIik6YX1mdW5jdGlvbiBlKGEsYil7dmFyIGM9dC5lbGVtZW50czsic3RyaW5nIiE9dHlwZW9mIGMmJihjPWMuam9pbigiICIpKSwic3RyaW5nIiE9dHlwZW9mIGEmJihhPWEuam9pbigiICIpKSx0LmVsZW1lbnRzPWMrIiAiK2EsaihiKX1mdW5jdGlvbiBmKGEpe3ZhciBiPXNbYVtxXV07cmV0dXJuIGJ8fChiPXt9LHIrKyxhW3FdPXIsc1tyXT1iKSxifWZ1bmN0aW9uIGcoYSxjLGQpe2lmKGN8fChjPWIpLGwpcmV0dXJuIGMuY3JlYXRlRWxlbWVudChhKTtkfHwoZD1mKGMpKTt2YXIgZTtyZXR1cm4gZT1kLmNhY2hlW2FdP2QuY2FjaGVbYV0uY2xvbmVOb2RlKCk6cC50ZXN0KGEpPyhkLmNhY2hlW2FdPWQuY3JlYXRlRWxlbShhKSkuY2xvbmVOb2RlKCk6ZC5jcmVhdGVFbGVtKGEpLCFlLmNhbkhhdmVDaGlsZHJlbnx8by50ZXN0KGEpfHxlLnRhZ1Vybj9lOmQuZnJhZy5hcHBlbmRDaGlsZChlKX1mdW5jdGlvbiBoKGEsYyl7aWYoYXx8KGE9YiksbClyZXR1cm4gYS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Yz1jfHxmKGEpO2Zvcih2YXIgZT1jLmZyYWcuY2xvbmVOb2RlKCksZz0wLGg9ZCgpLGk9aC5sZW5ndGg7aT5nO2crKyllLmNyZWF0ZUVsZW1lbnQoaFtnXSk7cmV0dXJuIGV9ZnVuY3Rpb24gaShhLGIpe2IuY2FjaGV8fChiLmNhY2hlPXt9LGIuY3JlYXRlRWxlbT1hLmNyZWF0ZUVsZW1lbnQsYi5jcmVhdGVGcmFnPWEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCxiLmZyYWc9Yi5jcmVhdGVGcmFnKCkpLGEuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihjKXtyZXR1cm4gdC5zaGl2TWV0aG9kcz9nKGMsYSxiKTpiLmNyZWF0ZUVsZW0oYyl9LGEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudD1GdW5jdGlvbigiaCxmIiwicmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49Zi5jbG9uZU5vZGUoKSxjPW4uY3JlYXRlRWxlbWVudDtoLnNoaXZNZXRob2RzJiYoIitkKCkuam9pbigpLnJlcGxhY2UoL1tcd1wtOl0rL2csZnVuY3Rpb24oYSl7cmV0dXJuIGIuY3JlYXRlRWxlbShhKSxiLmZyYWcuY3JlYXRlRWxlbWVudChhKSwnYygiJythKyciKSd9KSsiKTtyZXR1cm4gbn0iKSh0LGIuZnJhZyl9ZnVuY3Rpb24gaihhKXthfHwoYT1iKTt2YXIgZD1mKGEpO3JldHVybiF0LnNoaXZDU1N8fGt8fGQuaGFzQ1NTfHwoZC5oYXNDU1M9ISFjKGEsImFydGljbGUsYXNpZGUsZGlhbG9nLGZpZ2NhcHRpb24sZmlndXJlLGZvb3RlcixoZWFkZXIsaGdyb3VwLG1haW4sbmF2LHNlY3Rpb257ZGlzcGxheTpibG9ja31tYXJre2JhY2tncm91bmQ6I0ZGMDtjb2xvcjojMDAwfXRlbXBsYXRle2Rpc3BsYXk6bm9uZX0iKSksbHx8aShhLGQpLGF9dmFyIGssbCxtPSIzLjcuMiIsbj1hLmh0bWw1fHx7fSxvPS9ePHxeKD86YnV0dG9ufG1hcHxzZWxlY3R8dGV4dGFyZWF8b2JqZWN0fGlmcmFtZXxvcHRpb258b3B0Z3JvdXApJC9pLHA9L14oPzphfGJ8Y29kZXxkaXZ8ZmllbGRzZXR8aDF8aDJ8aDN8aDR8aDV8aDZ8aXxsYWJlbHxsaXxvbHxwfHF8c3BhbnxzdHJvbmd8c3R5bGV8dGFibGV8dGJvZHl8dGR8dGh8dHJ8dWwpJC9pLHE9Il9odG1sNXNoaXYiLHI9MCxzPXt9OyFmdW5jdGlvbigpe3RyeXt2YXIgYT1iLmNyZWF0ZUVsZW1lbnQoImEiKTthLmlubmVySFRNTD0iPHh5ej48L3h5ej4iLGs9ImhpZGRlbiJpbiBhLGw9MT09YS5jaGlsZE5vZGVzLmxlbmd0aHx8ZnVuY3Rpb24oKXtiLmNyZWF0ZUVsZW1lbnQoImEiKTt2YXIgYT1iLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGEuY2xvbmVOb2RlfHwidW5kZWZpbmVkIj09dHlwZW9mIGEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudHx8InVuZGVmaW5lZCI9PXR5cGVvZiBhLmNyZWF0ZUVsZW1lbnR9KCl9Y2F0Y2goYyl7az0hMCxsPSEwfX0oKTt2YXIgdD17ZWxlbWVudHM6bi5lbGVtZW50c3x8ImFiYnIgYXJ0aWNsZSBhc2lkZSBhdWRpbyBiZGkgY2FudmFzIGRhdGEgZGF0YWxpc3QgZGV0YWlscyBkaWFsb2cgZmlnY2FwdGlvbiBmaWd1cmUgZm9vdGVyIGhlYWRlciBoZ3JvdXAgbWFpbiBtYXJrIG1ldGVyIG5hdiBvdXRwdXQgcGljdHVyZSBwcm9ncmVzcyBzZWN0aW9uIHN1bW1hcnkgdGVtcGxhdGUgdGltZSB2aWRlbyIsdmVyc2lvbjptLHNoaXZDU1M6bi5zaGl2Q1NTIT09ITEsc3VwcG9ydHNVbmtub3duRWxlbWVudHM6bCxzaGl2TWV0aG9kczpuLnNoaXZNZXRob2RzIT09ITEsdHlwZToiZGVmYXVsdCIsc2hpdkRvY3VtZW50OmosY3JlYXRlRWxlbWVudDpnLGNyZWF0ZURvY3VtZW50RnJhZ21lbnQ6aCxhZGRFbGVtZW50czplfTthLmh0bWw1PXQsaihiKX0odGhpcyxkb2N1bWVudCk7Cn07Cg=="></script>
<script src="data:application/javascript;base64,LyohIFJlc3BvbmQuanMgdjEuNC4yOiBtaW4vbWF4LXdpZHRoIG1lZGlhIHF1ZXJ5IHBvbHlmaWxsICogQ29weXJpZ2h0IDIwMTMgU2NvdHQgSmVobAogKiBMaWNlbnNlZCB1bmRlciBodHRwczovL2dpdGh1Yi5jb20vc2NvdHRqZWhsL1Jlc3BvbmQvYmxvYi9tYXN0ZXIvTElDRU5TRS1NSVQKICogICovCgovLyBPbmx5IHJ1biB0aGlzIGNvZGUgaW4gSUUgOAppZiAoISF3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgiTVNJRSA4IikpIHsKIWZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjthLm1hdGNoTWVkaWE9YS5tYXRjaE1lZGlhfHxmdW5jdGlvbihhKXt2YXIgYixjPWEuZG9jdW1lbnRFbGVtZW50LGQ9Yy5maXJzdEVsZW1lbnRDaGlsZHx8Yy5maXJzdENoaWxkLGU9YS5jcmVhdGVFbGVtZW50KCJib2R5IiksZj1hLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBmLmlkPSJtcS10ZXN0LTEiLGYuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7dG9wOi0xMDBlbSIsZS5zdHlsZS5iYWNrZ3JvdW5kPSJub25lIixlLmFwcGVuZENoaWxkKGYpLGZ1bmN0aW9uKGEpe3JldHVybiBmLmlubmVySFRNTD0nJnNoeTs8c3R5bGUgbWVkaWE9IicrYSsnIj4gI21xLXRlc3QtMSB7IHdpZHRoOiA0MnB4OyB9PC9zdHlsZT4nLGMuaW5zZXJ0QmVmb3JlKGUsZCksYj00Mj09PWYub2Zmc2V0V2lkdGgsYy5yZW1vdmVDaGlsZChlKSx7bWF0Y2hlczpiLG1lZGlhOmF9fX0oYS5kb2N1bWVudCl9KHRoaXMpLGZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKCl7dSghMCl9dmFyIGM9e307YS5yZXNwb25kPWMsYy51cGRhdGU9ZnVuY3Rpb24oKXt9O3ZhciBkPVtdLGU9ZnVuY3Rpb24oKXt2YXIgYj0hMTt0cnl7Yj1uZXcgYS5YTUxIdHRwUmVxdWVzdH1jYXRjaChjKXtiPW5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGJ9fSgpLGY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1lKCk7YyYmKGMub3BlbigiR0VUIixhLCEwKSxjLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpezQhPT1jLnJlYWR5U3RhdGV8fDIwMCE9PWMuc3RhdHVzJiYzMDQhPT1jLnN0YXR1c3x8YihjLnJlc3BvbnNlVGV4dCl9LDQhPT1jLnJlYWR5U3RhdGUmJmMuc2VuZChudWxsKSl9O2lmKGMuYWpheD1mLGMucXVldWU9ZCxjLnJlZ2V4PXttZWRpYTovQG1lZGlhW15ce10rXHsoW15ce1x9XSpce1teXH1ce10qXH0pKy9naSxrZXlmcmFtZXM6L0AoPzpcLSg/Om98bW96fHdlYmtpdClcLSk/a2V5ZnJhbWVzW15ce10rXHsoPzpbXlx7XH1dKlx7W15cfVx7XSpcfSkrW15cfV0qXH0vZ2ksdXJsczovKHVybFwoKVsnIl0/KFteXC9cKSciXVteOlwpJyJdKylbJyJdPyhcKSkvZyxmaW5kU3R5bGVzOi9AbWVkaWEgKihbXlx7XSspXHsoW1xTXHNdKz8pJC8sb25seTovKG9ubHlccyspPyhbYS16QS1aXSspXHM/LyxtaW53Oi9cKFtcc10qbWluXC13aWR0aFxzKjpbXHNdKihbXHNdKlswLTlcLl0rKShweHxlbSlbXHNdKlwpLyxtYXh3Oi9cKFtcc10qbWF4XC13aWR0aFxzKjpbXHNdKihbXHNdKlswLTlcLl0rKShweHxlbSlbXHNdKlwpL30sYy5tZWRpYVF1ZXJpZXNTdXBwb3J0ZWQ9YS5tYXRjaE1lZGlhJiZudWxsIT09YS5tYXRjaE1lZGlhKCJvbmx5IGFsbCIpJiZhLm1hdGNoTWVkaWEoIm9ubHkgYWxsIikubWF0Y2hlcywhYy5tZWRpYVF1ZXJpZXNTdXBwb3J0ZWQpe3ZhciBnLGgsaSxqPWEuZG9jdW1lbnQsaz1qLmRvY3VtZW50RWxlbWVudCxsPVtdLG09W10sbj1bXSxvPXt9LHA9MzAscT1qLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGsscj1qLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJiYXNlIilbMF0scz1xLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIiksdD1mdW5jdGlvbigpe3ZhciBhLGI9ai5jcmVhdGVFbGVtZW50KCJkaXYiKSxjPWouYm9keSxkPWsuc3R5bGUuZm9udFNpemUsZT1jJiZjLnN0eWxlLmZvbnRTaXplLGY9ITE7cmV0dXJuIGIuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Zm9udC1zaXplOjFlbTt3aWR0aDoxZW0iLGN8fChjPWY9ai5jcmVhdGVFbGVtZW50KCJib2R5IiksYy5zdHlsZS5iYWNrZ3JvdW5kPSJub25lIiksay5zdHlsZS5mb250U2l6ZT0iMTAwJSIsYy5zdHlsZS5mb250U2l6ZT0iMTAwJSIsYy5hcHBlbmRDaGlsZChiKSxmJiZrLmluc2VydEJlZm9yZShjLGsuZmlyc3RDaGlsZCksYT1iLm9mZnNldFdpZHRoLGY/ay5yZW1vdmVDaGlsZChjKTpjLnJlbW92ZUNoaWxkKGIpLGsuc3R5bGUuZm9udFNpemU9ZCxlJiYoYy5zdHlsZS5mb250U2l6ZT1lKSxhPWk9cGFyc2VGbG9hdChhKX0sdT1mdW5jdGlvbihiKXt2YXIgYz0iY2xpZW50V2lkdGgiLGQ9a1tjXSxlPSJDU1MxQ29tcGF0Ij09PWouY29tcGF0TW9kZSYmZHx8ai5ib2R5W2NdfHxkLGY9e30sbz1zW3MubGVuZ3RoLTFdLHI9KG5ldyBEYXRlKS5nZXRUaW1lKCk7aWYoYiYmZyYmcD5yLWcpcmV0dXJuIGEuY2xlYXJUaW1lb3V0KGgpLGg9YS5zZXRUaW1lb3V0KHUscCksdm9pZCAwO2c9cjtmb3IodmFyIHYgaW4gbClpZihsLmhhc093blByb3BlcnR5KHYpKXt2YXIgdz1sW3ZdLHg9dy5taW53LHk9dy5tYXh3LHo9bnVsbD09PXgsQT1udWxsPT09eSxCPSJlbSI7eCYmKHg9cGFyc2VGbG9hdCh4KSooeC5pbmRleE9mKEIpPi0xP2l8fHQoKToxKSkseSYmKHk9cGFyc2VGbG9hdCh5KSooeS5pbmRleE9mKEIpPi0xP2l8fHQoKToxKSksdy5oYXNxdWVyeSYmKHomJkF8fCEoenx8ZT49eCl8fCEoQXx8eT49ZSkpfHwoZlt3Lm1lZGlhXXx8KGZbdy5tZWRpYV09W10pLGZbdy5tZWRpYV0ucHVzaChtW3cucnVsZXNdKSl9Zm9yKHZhciBDIGluIG4pbi5oYXNPd25Qcm9wZXJ0eShDKSYmbltDXSYmbltDXS5wYXJlbnROb2RlPT09cSYmcS5yZW1vdmVDaGlsZChuW0NdKTtuLmxlbmd0aD0wO2Zvcih2YXIgRCBpbiBmKWlmKGYuaGFzT3duUHJvcGVydHkoRCkpe3ZhciBFPWouY3JlYXRlRWxlbWVudCgic3R5bGUiKSxGPWZbRF0uam9pbigiXG4iKTtFLnR5cGU9InRleHQvY3NzIixFLm1lZGlhPUQscS5pbnNlcnRCZWZvcmUoRSxvLm5leHRTaWJsaW5nKSxFLnN0eWxlU2hlZXQ/RS5zdHlsZVNoZWV0LmNzc1RleHQ9RjpFLmFwcGVuZENoaWxkKGouY3JlYXRlVGV4dE5vZGUoRikpLG4ucHVzaChFKX19LHY9ZnVuY3Rpb24oYSxiLGQpe3ZhciBlPWEucmVwbGFjZShjLnJlZ2V4LmtleWZyYW1lcywiIikubWF0Y2goYy5yZWdleC5tZWRpYSksZj1lJiZlLmxlbmd0aHx8MDtiPWIuc3Vic3RyaW5nKDAsYi5sYXN0SW5kZXhPZigiLyIpKTt2YXIgZz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKGMucmVnZXgudXJscywiJDEiK2IrIiQyJDMiKX0saD0hZiYmZDtiLmxlbmd0aCYmKGIrPSIvIiksaCYmKGY9MSk7Zm9yKHZhciBpPTA7Zj5pO2krKyl7dmFyIGosayxuLG87aD8oaj1kLG0ucHVzaChnKGEpKSk6KGo9ZVtpXS5tYXRjaChjLnJlZ2V4LmZpbmRTdHlsZXMpJiZSZWdFeHAuJDEsbS5wdXNoKFJlZ0V4cC4kMiYmZyhSZWdFeHAuJDIpKSksbj1qLnNwbGl0KCIsIiksbz1uLmxlbmd0aDtmb3IodmFyIHA9MDtvPnA7cCsrKWs9bltwXSxsLnB1c2goe21lZGlhOmsuc3BsaXQoIigiKVswXS5tYXRjaChjLnJlZ2V4Lm9ubHkpJiZSZWdFeHAuJDJ8fCJhbGwiLHJ1bGVzOm0ubGVuZ3RoLTEsaGFzcXVlcnk6ay5pbmRleE9mKCIoIik+LTEsbWludzprLm1hdGNoKGMucmVnZXgubWludykmJnBhcnNlRmxvYXQoUmVnRXhwLiQxKSsoUmVnRXhwLiQyfHwiIiksbWF4dzprLm1hdGNoKGMucmVnZXgubWF4dykmJnBhcnNlRmxvYXQoUmVnRXhwLiQxKSsoUmVnRXhwLiQyfHwiIil9KX11KCl9LHc9ZnVuY3Rpb24oKXtpZihkLmxlbmd0aCl7dmFyIGI9ZC5zaGlmdCgpO2YoYi5ocmVmLGZ1bmN0aW9uKGMpe3YoYyxiLmhyZWYsYi5tZWRpYSksb1tiLmhyZWZdPSEwLGEuc2V0VGltZW91dChmdW5jdGlvbigpe3coKX0sMCl9KX19LHg9ZnVuY3Rpb24oKXtmb3IodmFyIGI9MDtiPHMubGVuZ3RoO2IrKyl7dmFyIGM9c1tiXSxlPWMuaHJlZixmPWMubWVkaWEsZz1jLnJlbCYmInN0eWxlc2hlZXQiPT09Yy5yZWwudG9Mb3dlckNhc2UoKTtlJiZnJiYhb1tlXSYmKGMuc3R5bGVTaGVldCYmYy5zdHlsZVNoZWV0LnJhd0Nzc1RleHQ/KHYoYy5zdHlsZVNoZWV0LnJhd0Nzc1RleHQsZSxmKSxvW2VdPSEwKTooIS9eKFthLXpBLVo6XSpcL1wvKS8udGVzdChlKSYmIXJ8fGUucmVwbGFjZShSZWdFeHAuJDEsIiIpLnNwbGl0KCIvIilbMF09PT1hLmxvY2F0aW9uLmhvc3QpJiYoIi8vIj09PWUuc3Vic3RyaW5nKDAsMikmJihlPWEubG9jYXRpb24ucHJvdG9jb2wrZSksZC5wdXNoKHtocmVmOmUsbWVkaWE6Zn0pKSl9dygpfTt4KCksYy51cGRhdGU9eCxjLmdldEVtVmFsdWU9dCxhLmFkZEV2ZW50TGlzdGVuZXI/YS5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLGIsITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9ucmVzaXplIixiKX19KHRoaXMpOwp9Owo="></script>
<style>h1 {font-size: 34px;}
h1.title {font-size: 38px;}
h2 {font-size: 30px;}
h3 {font-size: 24px;}
h4 {font-size: 18px;}
h5 {font-size: 16px;}
h6 {font-size: 12px;}
code {color: inherit; background-color: rgba(0, 0, 0, 0.04);}
pre:not([class]) { background-color: white }</style>
<script src="data:application/javascript;base64,LyohIGpRdWVyeSBVSSAtIHYxLjExLjQgLSAyMDE2LTAxLTA1CiogaHR0cDovL2pxdWVyeXVpLmNvbQoqIEluY2x1ZGVzOiBjb3JlLmpzLCB3aWRnZXQuanMsIG1vdXNlLmpzLCBwb3NpdGlvbi5qcywgZHJhZ2dhYmxlLmpzLCBkcm9wcGFibGUuanMsIHJlc2l6YWJsZS5qcywgc2VsZWN0YWJsZS5qcywgc29ydGFibGUuanMsIGFjY29yZGlvbi5qcywgYXV0b2NvbXBsZXRlLmpzLCBidXR0b24uanMsIGRpYWxvZy5qcywgbWVudS5qcywgcHJvZ3Jlc3NiYXIuanMsIHNlbGVjdG1lbnUuanMsIHNsaWRlci5qcywgc3Bpbm5lci5qcywgdGFicy5qcywgdG9vbHRpcC5qcywgZWZmZWN0LmpzLCBlZmZlY3QtYmxpbmQuanMsIGVmZmVjdC1ib3VuY2UuanMsIGVmZmVjdC1jbGlwLmpzLCBlZmZlY3QtZHJvcC5qcywgZWZmZWN0LWV4cGxvZGUuanMsIGVmZmVjdC1mYWRlLmpzLCBlZmZlY3QtZm9sZC5qcywgZWZmZWN0LWhpZ2hsaWdodC5qcywgZWZmZWN0LXB1ZmYuanMsIGVmZmVjdC1wdWxzYXRlLmpzLCBlZmZlY3Qtc2NhbGUuanMsIGVmZmVjdC1zaGFrZS5qcywgZWZmZWN0LXNpemUuanMsIGVmZmVjdC1zbGlkZS5qcywgZWZmZWN0LXRyYW5zZmVyLmpzCiogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnM7IExpY2Vuc2VkIE1JVCAqLwoKKGZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5Il0sZSk6ZShqUXVlcnkpfSkoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LHMpe3ZhciBuLGEsbyxyPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iYXJlYSI9PT1yPyhuPXQucGFyZW50Tm9kZSxhPW4ubmFtZSx0LmhyZWYmJmEmJiJtYXAiPT09bi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPyhvPWUoImltZ1t1c2VtYXA9JyMiK2ErIiddIilbMF0sISFvJiZpKG8pKTohMSk6KC9eKGlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQvLnRlc3Qocik/IXQuZGlzYWJsZWQ6ImEiPT09cj90LmhyZWZ8fHM6cykmJmkodCl9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gZS5leHByLmZpbHRlcnMudmlzaWJsZSh0KSYmIWUodCkucGFyZW50cygpLmFkZEJhY2soKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4iaGlkZGVuIj09PWUuY3NzKHRoaXMsInZpc2liaWxpdHkiKX0pLmxlbmd0aH1mdW5jdGlvbiBzKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMuZWxlbWVudC52YWwoKTtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9yZWZyZXNoKCksdCE9PXRoaXMuZWxlbWVudC52YWwoKSYmdGhpcy5fdHJpZ2dlcigiY2hhbmdlIil9fWUudWk9ZS51aXx8e30sZS5leHRlbmQoZS51aSx7dmVyc2lvbjoiMS4xMS40IixrZXlDb2RlOntCQUNLU1BBQ0U6OCxDT01NQToxODgsREVMRVRFOjQ2LERPV046NDAsRU5EOjM1LEVOVEVSOjEzLEVTQ0FQRToyNyxIT01FOjM2LExFRlQ6MzcsUEFHRV9ET1dOOjM0LFBBR0VfVVA6MzMsUEVSSU9EOjE5MCxSSUdIVDozOSxTUEFDRTozMixUQUI6OSxVUDozOH19KSxlLmZuLmV4dGVuZCh7c2Nyb2xsUGFyZW50OmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMuY3NzKCJwb3NpdGlvbiIpLHM9ImFic29sdXRlIj09PWksbj10Py8oYXV0b3xzY3JvbGx8aGlkZGVuKS86LyhhdXRvfHNjcm9sbCkvLGE9dGhpcy5wYXJlbnRzKCkuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKTtyZXR1cm4gcyYmInN0YXRpYyI9PT10LmNzcygicG9zaXRpb24iKT8hMTpuLnRlc3QodC5jc3MoIm92ZXJmbG93IikrdC5jc3MoIm92ZXJmbG93LXkiKSt0LmNzcygib3ZlcmZsb3cteCIpKX0pLmVxKDApO3JldHVybiJmaXhlZCIhPT1pJiZhLmxlbmd0aD9hOmUodGhpc1swXS5vd25lckRvY3VtZW50fHxkb2N1bWVudCl9LHVuaXF1ZUlkOmZ1bmN0aW9uKCl7dmFyIGU9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5pZHx8KHRoaXMuaWQ9InVpLWlkLSIrICsrZSl9KX19KCkscmVtb3ZlVW5pcXVlSWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7L151aS1pZC1cZCskLy50ZXN0KHRoaXMuaWQpJiZlKHRoaXMpLnJlbW92ZUF0dHIoImlkIil9KX19KSxlLmV4dGVuZChlLmV4cHJbIjoiXSx7ZGF0YTplLmV4cHIuY3JlYXRlUHNldWRvP2UuZXhwci5jcmVhdGVQc2V1ZG8oZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGkpe3JldHVybiEhZS5kYXRhKGksdCl9fSk6ZnVuY3Rpb24odCxpLHMpe3JldHVybiEhZS5kYXRhKHQsc1szXSl9LGZvY3VzYWJsZTpmdW5jdGlvbihpKXtyZXR1cm4gdChpLCFpc05hTihlLmF0dHIoaSwidGFiaW5kZXgiKSkpfSx0YWJiYWJsZTpmdW5jdGlvbihpKXt2YXIgcz1lLmF0dHIoaSwidGFiaW5kZXgiKSxuPWlzTmFOKHMpO3JldHVybihufHxzPj0wKSYmdChpLCFuKX19KSxlKCI8YT4iKS5vdXRlcldpZHRoKDEpLmpxdWVyeXx8ZS5lYWNoKFsiV2lkdGgiLCJIZWlnaHQiXSxmdW5jdGlvbih0LGkpe2Z1bmN0aW9uIHModCxpLHMsYSl7cmV0dXJuIGUuZWFjaChuLGZ1bmN0aW9uKCl7aS09cGFyc2VGbG9hdChlLmNzcyh0LCJwYWRkaW5nIit0aGlzKSl8fDAscyYmKGktPXBhcnNlRmxvYXQoZS5jc3ModCwiYm9yZGVyIit0aGlzKyJXaWR0aCIpKXx8MCksYSYmKGktPXBhcnNlRmxvYXQoZS5jc3ModCwibWFyZ2luIit0aGlzKSl8fDApfSksaX12YXIgbj0iV2lkdGgiPT09aT9bIkxlZnQiLCJSaWdodCJdOlsiVG9wIiwiQm90dG9tIl0sYT1pLnRvTG93ZXJDYXNlKCksbz17aW5uZXJXaWR0aDplLmZuLmlubmVyV2lkdGgsaW5uZXJIZWlnaHQ6ZS5mbi5pbm5lckhlaWdodCxvdXRlcldpZHRoOmUuZm4ub3V0ZXJXaWR0aCxvdXRlckhlaWdodDplLmZuLm91dGVySGVpZ2h0fTtlLmZuWyJpbm5lciIraV09ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQ/b1siaW5uZXIiK2ldLmNhbGwodGhpcyk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZSh0aGlzKS5jc3MoYSxzKHRoaXMsdCkrInB4Iil9KX0sZS5mblsib3V0ZXIiK2ldPWZ1bmN0aW9uKHQsbil7cmV0dXJuIm51bWJlciIhPXR5cGVvZiB0P29bIm91dGVyIitpXS5jYWxsKHRoaXMsdCk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZSh0aGlzKS5jc3MoYSxzKHRoaXMsdCwhMCxuKSsicHgiKX0pfX0pLGUuZm4uYWRkQmFja3x8KGUuZm4uYWRkQmFjaz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09ZT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihlKSl9KSxlKCI8YT4iKS5kYXRhKCJhLWIiLCJhIikucmVtb3ZlRGF0YSgiYS1iIikuZGF0YSgiYS1iIikmJihlLmZuLnJlbW92ZURhdGE9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3QuY2FsbCh0aGlzLGUuY2FtZWxDYXNlKGkpKTp0LmNhbGwodGhpcyl9fShlLmZuLnJlbW92ZURhdGEpKSxlLnVpLmllPSEhL21zaWUgW1x3Ll0rLy5leGVjKG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSksZS5mbi5leHRlbmQoe2ZvY3VzOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihpLHMpe3JldHVybiJudW1iZXIiPT10eXBlb2YgaT90aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD10aGlzO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtlKHQpLmZvY3VzKCkscyYmcy5jYWxsKHQpfSxpKX0pOnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oZS5mbi5mb2N1cyksZGlzYWJsZVNlbGVjdGlvbjpmdW5jdGlvbigpe3ZhciBlPSJvbnNlbGVjdHN0YXJ0ImluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpPyJzZWxlY3RzdGFydCI6Im1vdXNlZG93biI7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYmluZChlKyIudWktZGlzYWJsZVNlbGVjdGlvbiIsZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpfSl9fSgpLGVuYWJsZVNlbGVjdGlvbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVuYmluZCgiLnVpLWRpc2FibGVTZWxlY3Rpb24iKX0sekluZGV4OmZ1bmN0aW9uKHQpe2lmKHZvaWQgMCE9PXQpcmV0dXJuIHRoaXMuY3NzKCJ6SW5kZXgiLHQpO2lmKHRoaXMubGVuZ3RoKWZvcih2YXIgaSxzLG49ZSh0aGlzWzBdKTtuLmxlbmd0aCYmblswXSE9PWRvY3VtZW50Oyl7aWYoaT1uLmNzcygicG9zaXRpb24iKSwoImFic29sdXRlIj09PWl8fCJyZWxhdGl2ZSI9PT1pfHwiZml4ZWQiPT09aSkmJihzPXBhcnNlSW50KG4uY3NzKCJ6SW5kZXgiKSwxMCksIWlzTmFOKHMpJiYwIT09cykpcmV0dXJuIHM7bj1uLnBhcmVudCgpfXJldHVybiAwfX0pLGUudWkucGx1Z2luPXthZGQ6ZnVuY3Rpb24odCxpLHMpe3ZhciBuLGE9ZS51aVt0XS5wcm90b3R5cGU7Zm9yKG4gaW4gcylhLnBsdWdpbnNbbl09YS5wbHVnaW5zW25dfHxbXSxhLnBsdWdpbnNbbl0ucHVzaChbaSxzW25dXSl9LGNhbGw6ZnVuY3Rpb24oZSx0LGkscyl7dmFyIG4sYT1lLnBsdWdpbnNbdF07aWYoYSYmKHN8fGUuZWxlbWVudFswXS5wYXJlbnROb2RlJiYxMSE9PWUuZWxlbWVudFswXS5wYXJlbnROb2RlLm5vZGVUeXBlKSlmb3Iobj0wO2EubGVuZ3RoPm47bisrKWUub3B0aW9uc1thW25dWzBdXSYmYVtuXVsxXS5hcHBseShlLmVsZW1lbnQsaSl9fTt2YXIgbj0wLGE9QXJyYXkucHJvdG90eXBlLnNsaWNlO2UuY2xlYW5EYXRhPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihpKXt2YXIgcyxuLGE7Zm9yKGE9MDtudWxsIT0obj1pW2FdKTthKyspdHJ5e3M9ZS5fZGF0YShuLCJldmVudHMiKSxzJiZzLnJlbW92ZSYmZShuKS50cmlnZ2VySGFuZGxlcigicmVtb3ZlIil9Y2F0Y2gobyl7fXQoaSl9fShlLmNsZWFuRGF0YSksZS53aWRnZXQ9ZnVuY3Rpb24odCxpLHMpe3ZhciBuLGEsbyxyLGg9e30sbD10LnNwbGl0KCIuIilbMF07cmV0dXJuIHQ9dC5zcGxpdCgiLiIpWzFdLG49bCsiLSIrdCxzfHwocz1pLGk9ZS5XaWRnZXQpLGUuZXhwclsiOiJdW24udG9Mb3dlckNhc2UoKV09ZnVuY3Rpb24odCl7cmV0dXJuISFlLmRhdGEodCxuKX0sZVtsXT1lW2xdfHx7fSxhPWVbbF1bdF0sbz1lW2xdW3RdPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2NyZWF0ZVdpZGdldD8oYXJndW1lbnRzLmxlbmd0aCYmdGhpcy5fY3JlYXRlV2lkZ2V0KGUsdCksdm9pZCAwKTpuZXcgbyhlLHQpfSxlLmV4dGVuZChvLGEse3ZlcnNpb246cy52ZXJzaW9uLF9wcm90bzplLmV4dGVuZCh7fSxzKSxfY2hpbGRDb25zdHJ1Y3RvcnM6W119KSxyPW5ldyBpLHIub3B0aW9ucz1lLndpZGdldC5leHRlbmQoe30sci5vcHRpb25zKSxlLmVhY2gocyxmdW5jdGlvbih0LHMpe3JldHVybiBlLmlzRnVuY3Rpb24ocyk/KGhbdF09ZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbigpe3JldHVybiBpLnByb3RvdHlwZVt0XS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LG49ZnVuY3Rpb24oZSl7cmV0dXJuIGkucHJvdG90eXBlW3RdLmFwcGx5KHRoaXMsZSl9O3JldHVybiBmdW5jdGlvbigpe3ZhciB0LGk9dGhpcy5fc3VwZXIsYT10aGlzLl9zdXBlckFwcGx5O3JldHVybiB0aGlzLl9zdXBlcj1lLHRoaXMuX3N1cGVyQXBwbHk9bix0PXMuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX3N1cGVyPWksdGhpcy5fc3VwZXJBcHBseT1hLHR9fSgpLHZvaWQgMCk6KGhbdF09cyx2b2lkIDApfSksby5wcm90b3R5cGU9ZS53aWRnZXQuZXh0ZW5kKHIse3dpZGdldEV2ZW50UHJlZml4OmE/ci53aWRnZXRFdmVudFByZWZpeHx8dDp0fSxoLHtjb25zdHJ1Y3RvcjpvLG5hbWVzcGFjZTpsLHdpZGdldE5hbWU6dCx3aWRnZXRGdWxsTmFtZTpufSksYT8oZS5lYWNoKGEuX2NoaWxkQ29uc3RydWN0b3JzLGZ1bmN0aW9uKHQsaSl7dmFyIHM9aS5wcm90b3R5cGU7ZS53aWRnZXQocy5uYW1lc3BhY2UrIi4iK3Mud2lkZ2V0TmFtZSxvLGkuX3Byb3RvKX0pLGRlbGV0ZSBhLl9jaGlsZENvbnN0cnVjdG9ycyk6aS5fY2hpbGRDb25zdHJ1Y3RvcnMucHVzaChvKSxlLndpZGdldC5icmlkZ2UodCxvKSxvfSxlLndpZGdldC5leHRlbmQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBpLHMsbj1hLmNhbGwoYXJndW1lbnRzLDEpLG89MCxyPW4ubGVuZ3RoO3I+bztvKyspZm9yKGkgaW4gbltvXSlzPW5bb11baV0sbltvXS5oYXNPd25Qcm9wZXJ0eShpKSYmdm9pZCAwIT09cyYmKHRbaV09ZS5pc1BsYWluT2JqZWN0KHMpP2UuaXNQbGFpbk9iamVjdCh0W2ldKT9lLndpZGdldC5leHRlbmQoe30sdFtpXSxzKTplLndpZGdldC5leHRlbmQoe30scyk6cyk7cmV0dXJuIHR9LGUud2lkZ2V0LmJyaWRnZT1mdW5jdGlvbih0LGkpe3ZhciBzPWkucHJvdG90eXBlLndpZGdldEZ1bGxOYW1lfHx0O2UuZm5bdF09ZnVuY3Rpb24obil7dmFyIG89InN0cmluZyI9PXR5cGVvZiBuLHI9YS5jYWxsKGFyZ3VtZW50cywxKSxoPXRoaXM7cmV0dXJuIG8/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGksYT1lLmRhdGEodGhpcyxzKTtyZXR1cm4iaW5zdGFuY2UiPT09bj8oaD1hLCExKTphP2UuaXNGdW5jdGlvbihhW25dKSYmIl8iIT09bi5jaGFyQXQoMCk/KGk9YVtuXS5hcHBseShhLHIpLGkhPT1hJiZ2b2lkIDAhPT1pPyhoPWkmJmkuanF1ZXJ5P2gucHVzaFN0YWNrKGkuZ2V0KCkpOmksITEpOnZvaWQgMCk6ZS5lcnJvcigibm8gc3VjaCBtZXRob2QgJyIrbisiJyBmb3IgIit0KyIgd2lkZ2V0IGluc3RhbmNlIik6ZS5lcnJvcigiY2Fubm90IGNhbGwgbWV0aG9kcyBvbiAiK3QrIiBwcmlvciB0byBpbml0aWFsaXphdGlvbjsgIisiYXR0ZW1wdGVkIHRvIGNhbGwgbWV0aG9kICciK24rIiciKX0pOihyLmxlbmd0aCYmKG49ZS53aWRnZXQuZXh0ZW5kLmFwcGx5KG51bGwsW25dLmNvbmNhdChyKSkpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0PWUuZGF0YSh0aGlzLHMpO3Q/KHQub3B0aW9uKG58fHt9KSx0Ll9pbml0JiZ0Ll9pbml0KCkpOmUuZGF0YSh0aGlzLHMsbmV3IGkobix0aGlzKSl9KSksaH19LGUuV2lkZ2V0PWZ1bmN0aW9uKCl7fSxlLldpZGdldC5fY2hpbGRDb25zdHJ1Y3RvcnM9W10sZS5XaWRnZXQucHJvdG90eXBlPXt3aWRnZXROYW1lOiJ3aWRnZXQiLHdpZGdldEV2ZW50UHJlZml4OiIiLGRlZmF1bHRFbGVtZW50OiI8ZGl2PiIsb3B0aW9uczp7ZGlzYWJsZWQ6ITEsY3JlYXRlOm51bGx9LF9jcmVhdGVXaWRnZXQ6ZnVuY3Rpb24odCxpKXtpPWUoaXx8dGhpcy5kZWZhdWx0RWxlbWVudHx8dGhpcylbMF0sdGhpcy5lbGVtZW50PWUoaSksdGhpcy51dWlkPW4rKyx0aGlzLmV2ZW50TmFtZXNwYWNlPSIuIit0aGlzLndpZGdldE5hbWUrdGhpcy51dWlkLHRoaXMuYmluZGluZ3M9ZSgpLHRoaXMuaG92ZXJhYmxlPWUoKSx0aGlzLmZvY3VzYWJsZT1lKCksaSE9PXRoaXMmJihlLmRhdGEoaSx0aGlzLndpZGdldEZ1bGxOYW1lLHRoaXMpLHRoaXMuX29uKCEwLHRoaXMuZWxlbWVudCx7cmVtb3ZlOmZ1bmN0aW9uKGUpe2UudGFyZ2V0PT09aSYmdGhpcy5kZXN0cm95KCl9fSksdGhpcy5kb2N1bWVudD1lKGkuc3R5bGU/aS5vd25lckRvY3VtZW50OmkuZG9jdW1lbnR8fGkpLHRoaXMud2luZG93PWUodGhpcy5kb2N1bWVudFswXS5kZWZhdWx0Vmlld3x8dGhpcy5kb2N1bWVudFswXS5wYXJlbnRXaW5kb3cpKSx0aGlzLm9wdGlvbnM9ZS53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9ucyx0aGlzLl9nZXRDcmVhdGVPcHRpb25zKCksdCksdGhpcy5fY3JlYXRlKCksdGhpcy5fdHJpZ2dlcigiY3JlYXRlIixudWxsLHRoaXMuX2dldENyZWF0ZUV2ZW50RGF0YSgpKSx0aGlzLl9pbml0KCl9LF9nZXRDcmVhdGVPcHRpb25zOmUubm9vcCxfZ2V0Q3JlYXRlRXZlbnREYXRhOmUubm9vcCxfY3JlYXRlOmUubm9vcCxfaW5pdDplLm5vb3AsZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX2Rlc3Ryb3koKSx0aGlzLmVsZW1lbnQudW5iaW5kKHRoaXMuZXZlbnROYW1lc3BhY2UpLnJlbW92ZURhdGEodGhpcy53aWRnZXRGdWxsTmFtZSkucmVtb3ZlRGF0YShlLmNhbWVsQ2FzZSh0aGlzLndpZGdldEZ1bGxOYW1lKSksdGhpcy53aWRnZXQoKS51bmJpbmQodGhpcy5ldmVudE5hbWVzcGFjZSkucmVtb3ZlQXR0cigiYXJpYS1kaXNhYmxlZCIpLnJlbW92ZUNsYXNzKHRoaXMud2lkZ2V0RnVsbE5hbWUrIi1kaXNhYmxlZCAiKyJ1aS1zdGF0ZS1kaXNhYmxlZCIpLHRoaXMuYmluZGluZ3MudW5iaW5kKHRoaXMuZXZlbnROYW1lc3BhY2UpLHRoaXMuaG92ZXJhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpLHRoaXMuZm9jdXNhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpfSxfZGVzdHJveTplLm5vb3Asd2lkZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudH0sb3B0aW9uOmZ1bmN0aW9uKHQsaSl7dmFyIHMsbixhLG89dDtpZigwPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZS53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9ucyk7aWYoInN0cmluZyI9PXR5cGVvZiB0KWlmKG89e30scz10LnNwbGl0KCIuIiksdD1zLnNoaWZ0KCkscy5sZW5ndGgpe2ZvcihuPW9bdF09ZS53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9uc1t0XSksYT0wO3MubGVuZ3RoLTE+YTthKyspbltzW2FdXT1uW3NbYV1dfHx7fSxuPW5bc1thXV07aWYodD1zLnBvcCgpLDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT1uW3RdP251bGw6blt0XTtuW3RdPWl9ZWxzZXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09dGhpcy5vcHRpb25zW3RdP251bGw6dGhpcy5vcHRpb25zW3RdO29bdF09aX1yZXR1cm4gdGhpcy5fc2V0T3B0aW9ucyhvKSx0aGlzfSxfc2V0T3B0aW9uczpmdW5jdGlvbihlKXt2YXIgdDtmb3IodCBpbiBlKXRoaXMuX3NldE9wdGlvbih0LGVbdF0pO3JldHVybiB0aGlzfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMub3B0aW9uc1tlXT10LCJkaXNhYmxlZCI9PT1lJiYodGhpcy53aWRnZXQoKS50b2dnbGVDbGFzcyh0aGlzLndpZGdldEZ1bGxOYW1lKyItZGlzYWJsZWQiLCEhdCksdCYmKHRoaXMuaG92ZXJhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpLHRoaXMuZm9jdXNhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpKSksdGhpc30sZW5hYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NldE9wdGlvbnMoe2Rpc2FibGVkOiExfSl9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2V0T3B0aW9ucyh7ZGlzYWJsZWQ6ITB9KX0sX29uOmZ1bmN0aW9uKHQsaSxzKXt2YXIgbixhPXRoaXM7ImJvb2xlYW4iIT10eXBlb2YgdCYmKHM9aSxpPXQsdD0hMSkscz8oaT1uPWUoaSksdGhpcy5iaW5kaW5ncz10aGlzLmJpbmRpbmdzLmFkZChpKSk6KHM9aSxpPXRoaXMuZWxlbWVudCxuPXRoaXMud2lkZ2V0KCkpLGUuZWFjaChzLGZ1bmN0aW9uKHMsbyl7ZnVuY3Rpb24gcigpe3JldHVybiB0fHxhLm9wdGlvbnMuZGlzYWJsZWQhPT0hMCYmIWUodGhpcykuaGFzQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIik/KCJzdHJpbmciPT10eXBlb2Ygbz9hW29dOm8pLmFwcGx5KGEsYXJndW1lbnRzKTp2b2lkIDB9InN0cmluZyIhPXR5cGVvZiBvJiYoci5ndWlkPW8uZ3VpZD1vLmd1aWR8fHIuZ3VpZHx8ZS5ndWlkKyspO3ZhciBoPXMubWF0Y2goL14oW1x3Oi1dKilccyooLiopJC8pLGw9aFsxXSthLmV2ZW50TmFtZXNwYWNlLHU9aFsyXTt1P24uZGVsZWdhdGUodSxsLHIpOmkuYmluZChsLHIpfSl9LF9vZmY6ZnVuY3Rpb24odCxpKXtpPShpfHwiIikuc3BsaXQoIiAiKS5qb2luKHRoaXMuZXZlbnROYW1lc3BhY2UrIiAiKSt0aGlzLmV2ZW50TmFtZXNwYWNlLHQudW5iaW5kKGkpLnVuZGVsZWdhdGUoaSksdGhpcy5iaW5kaW5ncz1lKHRoaXMuYmluZGluZ3Mubm90KHQpLmdldCgpKSx0aGlzLmZvY3VzYWJsZT1lKHRoaXMuZm9jdXNhYmxlLm5vdCh0KS5nZXQoKSksdGhpcy5ob3ZlcmFibGU9ZSh0aGlzLmhvdmVyYWJsZS5ub3QodCkuZ2V0KCkpfSxfZGVsYXk6ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBpKCl7cmV0dXJuKCJzdHJpbmciPT10eXBlb2YgZT9zW2VdOmUpLmFwcGx5KHMsYXJndW1lbnRzKX12YXIgcz10aGlzO3JldHVybiBzZXRUaW1lb3V0KGksdHx8MCl9LF9ob3ZlcmFibGU6ZnVuY3Rpb24odCl7dGhpcy5ob3ZlcmFibGU9dGhpcy5ob3ZlcmFibGUuYWRkKHQpLHRoaXMuX29uKHQse21vdXNlZW50ZXI6ZnVuY3Rpb24odCl7ZSh0LmN1cnJlbnRUYXJnZXQpLmFkZENsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpfSxtb3VzZWxlYXZlOmZ1bmN0aW9uKHQpe2UodC5jdXJyZW50VGFyZ2V0KS5yZW1vdmVDbGFzcygidWktc3RhdGUtaG92ZXIiKX19KX0sX2ZvY3VzYWJsZTpmdW5jdGlvbih0KXt0aGlzLmZvY3VzYWJsZT10aGlzLmZvY3VzYWJsZS5hZGQodCksdGhpcy5fb24odCx7Zm9jdXNpbjpmdW5jdGlvbih0KXtlKHQuY3VycmVudFRhcmdldCkuYWRkQ2xhc3MoInVpLXN0YXRlLWZvY3VzIil9LGZvY3Vzb3V0OmZ1bmN0aW9uKHQpe2UodC5jdXJyZW50VGFyZ2V0KS5yZW1vdmVDbGFzcygidWktc3RhdGUtZm9jdXMiKX19KX0sX3RyaWdnZXI6ZnVuY3Rpb24odCxpLHMpe3ZhciBuLGEsbz10aGlzLm9wdGlvbnNbdF07aWYocz1zfHx7fSxpPWUuRXZlbnQoaSksaS50eXBlPSh0PT09dGhpcy53aWRnZXRFdmVudFByZWZpeD90OnRoaXMud2lkZ2V0RXZlbnRQcmVmaXgrdCkudG9Mb3dlckNhc2UoKSxpLnRhcmdldD10aGlzLmVsZW1lbnRbMF0sYT1pLm9yaWdpbmFsRXZlbnQpZm9yKG4gaW4gYSluIGluIGl8fChpW25dPWFbbl0pO3JldHVybiB0aGlzLmVsZW1lbnQudHJpZ2dlcihpLHMpLCEoZS5pc0Z1bmN0aW9uKG8pJiZvLmFwcGx5KHRoaXMuZWxlbWVudFswXSxbaV0uY29uY2F0KHMpKT09PSExfHxpLmlzRGVmYXVsdFByZXZlbnRlZCgpKX19LGUuZWFjaCh7c2hvdzoiZmFkZUluIixoaWRlOiJmYWRlT3V0In0sZnVuY3Rpb24odCxpKXtlLldpZGdldC5wcm90b3R5cGVbIl8iK3RdPWZ1bmN0aW9uKHMsbixhKXsic3RyaW5nIj09dHlwZW9mIG4mJihuPXtlZmZlY3Q6bn0pO3ZhciBvLHI9bj9uPT09ITB8fCJudW1iZXIiPT10eXBlb2Ygbj9pOm4uZWZmZWN0fHxpOnQ7bj1ufHx7fSwibnVtYmVyIj09dHlwZW9mIG4mJihuPXtkdXJhdGlvbjpufSksbz0hZS5pc0VtcHR5T2JqZWN0KG4pLG4uY29tcGxldGU9YSxuLmRlbGF5JiZzLmRlbGF5KG4uZGVsYXkpLG8mJmUuZWZmZWN0cyYmZS5lZmZlY3RzLmVmZmVjdFtyXT9zW3RdKG4pOnIhPT10JiZzW3JdP3Nbcl0obi5kdXJhdGlvbixuLmVhc2luZyxhKTpzLnF1ZXVlKGZ1bmN0aW9uKGkpe2UodGhpcylbdF0oKSxhJiZhLmNhbGwoc1swXSksaSgpfSl9fSksZS53aWRnZXQ7dmFyIG89ITE7ZShkb2N1bWVudCkubW91c2V1cChmdW5jdGlvbigpe289ITF9KSxlLndpZGdldCgidWkubW91c2UiLHt2ZXJzaW9uOiIxLjExLjQiLG9wdGlvbnM6e2NhbmNlbDoiaW5wdXQsdGV4dGFyZWEsYnV0dG9uLHNlbGVjdCxvcHRpb24iLGRpc3RhbmNlOjEsZGVsYXk6MH0sX21vdXNlSW5pdDpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5lbGVtZW50LmJpbmQoIm1vdXNlZG93bi4iK3RoaXMud2lkZ2V0TmFtZSxmdW5jdGlvbihlKXtyZXR1cm4gdC5fbW91c2VEb3duKGUpfSkuYmluZCgiY2xpY2suIit0aGlzLndpZGdldE5hbWUsZnVuY3Rpb24oaSl7cmV0dXJuITA9PT1lLmRhdGEoaS50YXJnZXQsdC53aWRnZXROYW1lKyIucHJldmVudENsaWNrRXZlbnQiKT8oZS5yZW1vdmVEYXRhKGkudGFyZ2V0LHQud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50IiksaS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSwhMSk6dm9pZCAwfSksdGhpcy5zdGFydGVkPSExfSxfbW91c2VEZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnVuYmluZCgiLiIrdGhpcy53aWRnZXROYW1lKSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSYmdGhpcy5kb2N1bWVudC51bmJpbmQoIm1vdXNlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSkudW5iaW5kKCJtb3VzZXVwLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlVXBEZWxlZ2F0ZSl9LF9tb3VzZURvd246ZnVuY3Rpb24odCl7aWYoIW8pe3RoaXMuX21vdXNlTW92ZWQ9ITEsdGhpcy5fbW91c2VTdGFydGVkJiZ0aGlzLl9tb3VzZVVwKHQpLHRoaXMuX21vdXNlRG93bkV2ZW50PXQ7dmFyIGk9dGhpcyxzPTE9PT10LndoaWNoLG49InN0cmluZyI9PXR5cGVvZiB0aGlzLm9wdGlvbnMuY2FuY2VsJiZ0LnRhcmdldC5ub2RlTmFtZT9lKHQudGFyZ2V0KS5jbG9zZXN0KHRoaXMub3B0aW9ucy5jYW5jZWwpLmxlbmd0aDohMTtyZXR1cm4gcyYmIW4mJnRoaXMuX21vdXNlQ2FwdHVyZSh0KT8odGhpcy5tb3VzZURlbGF5TWV0PSF0aGlzLm9wdGlvbnMuZGVsYXksdGhpcy5tb3VzZURlbGF5TWV0fHwodGhpcy5fbW91c2VEZWxheVRpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtpLm1vdXNlRGVsYXlNZXQ9ITB9LHRoaXMub3B0aW9ucy5kZWxheSkpLHRoaXMuX21vdXNlRGlzdGFuY2VNZXQodCkmJnRoaXMuX21vdXNlRGVsYXlNZXQodCkmJih0aGlzLl9tb3VzZVN0YXJ0ZWQ9dGhpcy5fbW91c2VTdGFydCh0KSE9PSExLCF0aGlzLl9tb3VzZVN0YXJ0ZWQpPyh0LnByZXZlbnREZWZhdWx0KCksITApOighMD09PWUuZGF0YSh0LnRhcmdldCx0aGlzLndpZGdldE5hbWUrIi5wcmV2ZW50Q2xpY2tFdmVudCIpJiZlLnJlbW92ZURhdGEodC50YXJnZXQsdGhpcy53aWRnZXROYW1lKyIucHJldmVudENsaWNrRXZlbnQiKSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZT1mdW5jdGlvbihlKXtyZXR1cm4gaS5fbW91c2VNb3ZlKGUpfSx0aGlzLl9tb3VzZVVwRGVsZWdhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGkuX21vdXNlVXAoZSl9LHRoaXMuZG9jdW1lbnQuYmluZCgibW91c2Vtb3ZlLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlTW92ZURlbGVnYXRlKS5iaW5kKCJtb3VzZXVwLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlVXBEZWxlZ2F0ZSksdC5wcmV2ZW50RGVmYXVsdCgpLG89ITAsITApKTohMH19LF9tb3VzZU1vdmU6ZnVuY3Rpb24odCl7aWYodGhpcy5fbW91c2VNb3ZlZCl7aWYoZS51aS5pZSYmKCFkb2N1bWVudC5kb2N1bWVudE1vZGV8fDk+ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKSYmIXQuYnV0dG9uKXJldHVybiB0aGlzLl9tb3VzZVVwKHQpO2lmKCF0LndoaWNoKXJldHVybiB0aGlzLl9tb3VzZVVwKHQpfXJldHVybih0LndoaWNofHx0LmJ1dHRvbikmJih0aGlzLl9tb3VzZU1vdmVkPSEwKSx0aGlzLl9tb3VzZVN0YXJ0ZWQ/KHRoaXMuX21vdXNlRHJhZyh0KSx0LnByZXZlbnREZWZhdWx0KCkpOih0aGlzLl9tb3VzZURpc3RhbmNlTWV0KHQpJiZ0aGlzLl9tb3VzZURlbGF5TWV0KHQpJiYodGhpcy5fbW91c2VTdGFydGVkPXRoaXMuX21vdXNlU3RhcnQodGhpcy5fbW91c2VEb3duRXZlbnQsdCkhPT0hMSx0aGlzLl9tb3VzZVN0YXJ0ZWQ/dGhpcy5fbW91c2VEcmFnKHQpOnRoaXMuX21vdXNlVXAodCkpLCF0aGlzLl9tb3VzZVN0YXJ0ZWQpfSxfbW91c2VVcDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kb2N1bWVudC51bmJpbmQoIm1vdXNlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSkudW5iaW5kKCJtb3VzZXVwLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlVXBEZWxlZ2F0ZSksdGhpcy5fbW91c2VTdGFydGVkJiYodGhpcy5fbW91c2VTdGFydGVkPSExLHQudGFyZ2V0PT09dGhpcy5fbW91c2VEb3duRXZlbnQudGFyZ2V0JiZlLmRhdGEodC50YXJnZXQsdGhpcy53aWRnZXROYW1lKyIucHJldmVudENsaWNrRXZlbnQiLCEwKSx0aGlzLl9tb3VzZVN0b3AodCkpLG89ITEsITF9LF9tb3VzZURpc3RhbmNlTWV0OmZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLm1heChNYXRoLmFicyh0aGlzLl9tb3VzZURvd25FdmVudC5wYWdlWC1lLnBhZ2VYKSxNYXRoLmFicyh0aGlzLl9tb3VzZURvd25FdmVudC5wYWdlWS1lLnBhZ2VZKSk+PXRoaXMub3B0aW9ucy5kaXN0YW5jZX0sX21vdXNlRGVsYXlNZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tb3VzZURlbGF5TWV0fSxfbW91c2VTdGFydDpmdW5jdGlvbigpe30sX21vdXNlRHJhZzpmdW5jdGlvbigpe30sX21vdXNlU3RvcDpmdW5jdGlvbigpe30sX21vdXNlQ2FwdHVyZTpmdW5jdGlvbigpe3JldHVybiEwfX0pLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLHQsaSl7cmV0dXJuW3BhcnNlRmxvYXQoZVswXSkqKHAudGVzdChlWzBdKT90LzEwMDoxKSxwYXJzZUZsb2F0KGVbMV0pKihwLnRlc3QoZVsxXSk/aS8xMDA6MSldfWZ1bmN0aW9uIGkodCxpKXtyZXR1cm4gcGFyc2VJbnQoZS5jc3ModCxpKSwxMCl8fDB9ZnVuY3Rpb24gcyh0KXt2YXIgaT10WzBdO3JldHVybiA5PT09aS5ub2RlVHlwZT97d2lkdGg6dC53aWR0aCgpLGhlaWdodDp0LmhlaWdodCgpLG9mZnNldDp7dG9wOjAsbGVmdDowfX06ZS5pc1dpbmRvdyhpKT97d2lkdGg6dC53aWR0aCgpLGhlaWdodDp0LmhlaWdodCgpLG9mZnNldDp7dG9wOnQuc2Nyb2xsVG9wKCksbGVmdDp0LnNjcm9sbExlZnQoKX19OmkucHJldmVudERlZmF1bHQ/e3dpZHRoOjAsaGVpZ2h0OjAsb2Zmc2V0Ont0b3A6aS5wYWdlWSxsZWZ0OmkucGFnZVh9fTp7d2lkdGg6dC5vdXRlcldpZHRoKCksaGVpZ2h0OnQub3V0ZXJIZWlnaHQoKSxvZmZzZXQ6dC5vZmZzZXQoKX19ZS51aT1lLnVpfHx7fTt2YXIgbixhLG89TWF0aC5tYXgscj1NYXRoLmFicyxoPU1hdGgucm91bmQsbD0vbGVmdHxjZW50ZXJ8cmlnaHQvLHU9L3RvcHxjZW50ZXJ8Ym90dG9tLyxkPS9bXCtcLV1cZCsoXC5bXGRdKyk/JT8vLGM9L15cdysvLHA9LyUkLyxmPWUuZm4ucG9zaXRpb247ZS5wb3NpdGlvbj17c2Nyb2xsYmFyV2lkdGg6ZnVuY3Rpb24oKXtpZih2b2lkIDAhPT1uKXJldHVybiBuO3ZhciB0LGkscz1lKCI8ZGl2IHN0eWxlPSdkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjUwcHg7aGVpZ2h0OjUwcHg7b3ZlcmZsb3c6aGlkZGVuOyc+PGRpdiBzdHlsZT0naGVpZ2h0OjEwMHB4O3dpZHRoOmF1dG87Jz48L2Rpdj48L2Rpdj4iKSxhPXMuY2hpbGRyZW4oKVswXTtyZXR1cm4gZSgiYm9keSIpLmFwcGVuZChzKSx0PWEub2Zmc2V0V2lkdGgscy5jc3MoIm92ZXJmbG93Iiwic2Nyb2xsIiksaT1hLm9mZnNldFdpZHRoLHQ9PT1pJiYoaT1zWzBdLmNsaWVudFdpZHRoKSxzLnJlbW92ZSgpLG49dC1pfSxnZXRTY3JvbGxJbmZvOmZ1bmN0aW9uKHQpe3ZhciBpPXQuaXNXaW5kb3d8fHQuaXNEb2N1bWVudD8iIjp0LmVsZW1lbnQuY3NzKCJvdmVyZmxvdy14Iikscz10LmlzV2luZG93fHx0LmlzRG9jdW1lbnQ/IiI6dC5lbGVtZW50LmNzcygib3ZlcmZsb3cteSIpLG49InNjcm9sbCI9PT1pfHwiYXV0byI9PT1pJiZ0LndpZHRoPHQuZWxlbWVudFswXS5zY3JvbGxXaWR0aCxhPSJzY3JvbGwiPT09c3x8ImF1dG8iPT09cyYmdC5oZWlnaHQ8dC5lbGVtZW50WzBdLnNjcm9sbEhlaWdodDtyZXR1cm57d2lkdGg6YT9lLnBvc2l0aW9uLnNjcm9sbGJhcldpZHRoKCk6MCxoZWlnaHQ6bj9lLnBvc2l0aW9uLnNjcm9sbGJhcldpZHRoKCk6MH19LGdldFdpdGhpbkluZm86ZnVuY3Rpb24odCl7dmFyIGk9ZSh0fHx3aW5kb3cpLHM9ZS5pc1dpbmRvdyhpWzBdKSxuPSEhaVswXSYmOT09PWlbMF0ubm9kZVR5cGU7cmV0dXJue2VsZW1lbnQ6aSxpc1dpbmRvdzpzLGlzRG9jdW1lbnQ6bixvZmZzZXQ6aS5vZmZzZXQoKXx8e2xlZnQ6MCx0b3A6MH0sc2Nyb2xsTGVmdDppLnNjcm9sbExlZnQoKSxzY3JvbGxUb3A6aS5zY3JvbGxUb3AoKSx3aWR0aDpzfHxuP2kud2lkdGgoKTppLm91dGVyV2lkdGgoKSxoZWlnaHQ6c3x8bj9pLmhlaWdodCgpOmkub3V0ZXJIZWlnaHQoKX19fSxlLmZuLnBvc2l0aW9uPWZ1bmN0aW9uKG4pe2lmKCFufHwhbi5vZilyZXR1cm4gZi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bj1lLmV4dGVuZCh7fSxuKTt2YXIgcCxtLGcsdix5LGIsXz1lKG4ub2YpLHg9ZS5wb3NpdGlvbi5nZXRXaXRoaW5JbmZvKG4ud2l0aGluKSx3PWUucG9zaXRpb24uZ2V0U2Nyb2xsSW5mbyh4KSxrPShuLmNvbGxpc2lvbnx8ImZsaXAiKS5zcGxpdCgiICIpLFQ9e307cmV0dXJuIGI9cyhfKSxfWzBdLnByZXZlbnREZWZhdWx0JiYobi5hdD0ibGVmdCB0b3AiKSxtPWIud2lkdGgsZz1iLmhlaWdodCx2PWIub2Zmc2V0LHk9ZS5leHRlbmQoe30sdiksZS5lYWNoKFsibXkiLCJhdCJdLGZ1bmN0aW9uKCl7dmFyIGUsdCxpPShuW3RoaXNdfHwiIikuc3BsaXQoIiAiKTsxPT09aS5sZW5ndGgmJihpPWwudGVzdChpWzBdKT9pLmNvbmNhdChbImNlbnRlciJdKTp1LnRlc3QoaVswXSk/WyJjZW50ZXIiXS5jb25jYXQoaSk6WyJjZW50ZXIiLCJjZW50ZXIiXSksaVswXT1sLnRlc3QoaVswXSk/aVswXToiY2VudGVyIixpWzFdPXUudGVzdChpWzFdKT9pWzFdOiJjZW50ZXIiLGU9ZC5leGVjKGlbMF0pLHQ9ZC5leGVjKGlbMV0pLFRbdGhpc109W2U/ZVswXTowLHQ/dFswXTowXSxuW3RoaXNdPVtjLmV4ZWMoaVswXSlbMF0sYy5leGVjKGlbMV0pWzBdXX0pLDE9PT1rLmxlbmd0aCYmKGtbMV09a1swXSksInJpZ2h0Ij09PW4uYXRbMF0/eS5sZWZ0Kz1tOiJjZW50ZXIiPT09bi5hdFswXSYmKHkubGVmdCs9bS8yKSwiYm90dG9tIj09PW4uYXRbMV0/eS50b3ArPWc6ImNlbnRlciI9PT1uLmF0WzFdJiYoeS50b3ArPWcvMikscD10KFQuYXQsbSxnKSx5LmxlZnQrPXBbMF0seS50b3ArPXBbMV0sdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHMsbCx1PWUodGhpcyksZD11Lm91dGVyV2lkdGgoKSxjPXUub3V0ZXJIZWlnaHQoKSxmPWkodGhpcywibWFyZ2luTGVmdCIpLGI9aSh0aGlzLCJtYXJnaW5Ub3AiKSxEPWQrZitpKHRoaXMsIm1hcmdpblJpZ2h0Iikrdy53aWR0aCxTPWMrYitpKHRoaXMsIm1hcmdpbkJvdHRvbSIpK3cuaGVpZ2h0LE49ZS5leHRlbmQoe30seSksTT10KFQubXksdS5vdXRlcldpZHRoKCksdS5vdXRlckhlaWdodCgpKTsicmlnaHQiPT09bi5teVswXT9OLmxlZnQtPWQ6ImNlbnRlciI9PT1uLm15WzBdJiYoTi5sZWZ0LT1kLzIpLCJib3R0b20iPT09bi5teVsxXT9OLnRvcC09YzoiY2VudGVyIj09PW4ubXlbMV0mJihOLnRvcC09Yy8yKSxOLmxlZnQrPU1bMF0sTi50b3ArPU1bMV0sYXx8KE4ubGVmdD1oKE4ubGVmdCksTi50b3A9aChOLnRvcCkpLHM9e21hcmdpbkxlZnQ6ZixtYXJnaW5Ub3A6Yn0sZS5lYWNoKFsibGVmdCIsInRvcCJdLGZ1bmN0aW9uKHQsaSl7ZS51aS5wb3NpdGlvbltrW3RdXSYmZS51aS5wb3NpdGlvbltrW3RdXVtpXShOLHt0YXJnZXRXaWR0aDptLHRhcmdldEhlaWdodDpnLGVsZW1XaWR0aDpkLGVsZW1IZWlnaHQ6Yyxjb2xsaXNpb25Qb3NpdGlvbjpzLGNvbGxpc2lvbldpZHRoOkQsY29sbGlzaW9uSGVpZ2h0OlMsb2Zmc2V0OltwWzBdK01bMF0scFsxXStNWzFdXSxteTpuLm15LGF0Om4uYXQsd2l0aGluOngsZWxlbTp1fSl9KSxuLnVzaW5nJiYobD1mdW5jdGlvbihlKXt2YXIgdD12LmxlZnQtTi5sZWZ0LGk9dCttLWQscz12LnRvcC1OLnRvcCxhPXMrZy1jLGg9e3RhcmdldDp7ZWxlbWVudDpfLGxlZnQ6di5sZWZ0LHRvcDp2LnRvcCx3aWR0aDptLGhlaWdodDpnfSxlbGVtZW50OntlbGVtZW50OnUsbGVmdDpOLmxlZnQsdG9wOk4udG9wLHdpZHRoOmQsaGVpZ2h0OmN9LGhvcml6b250YWw6MD5pPyJsZWZ0Ijp0PjA/InJpZ2h0IjoiY2VudGVyIix2ZXJ0aWNhbDowPmE/InRvcCI6cz4wPyJib3R0b20iOiJtaWRkbGUifTtkPm0mJm0+cih0K2kpJiYoaC5ob3Jpem9udGFsPSJjZW50ZXIiKSxjPmcmJmc+cihzK2EpJiYoaC52ZXJ0aWNhbD0ibWlkZGxlIiksaC5pbXBvcnRhbnQ9byhyKHQpLHIoaSkpPm8ocihzKSxyKGEpKT8iaG9yaXpvbnRhbCI6InZlcnRpY2FsIixuLnVzaW5nLmNhbGwodGhpcyxlLGgpfSksdS5vZmZzZXQoZS5leHRlbmQoTix7dXNpbmc6bH0pKX0pfSxlLnVpLnBvc2l0aW9uPXtmaXQ6e2xlZnQ6ZnVuY3Rpb24oZSx0KXt2YXIgaSxzPXQud2l0aGluLG49cy5pc1dpbmRvdz9zLnNjcm9sbExlZnQ6cy5vZmZzZXQubGVmdCxhPXMud2lkdGgscj1lLmxlZnQtdC5jb2xsaXNpb25Qb3NpdGlvbi5tYXJnaW5MZWZ0LGg9bi1yLGw9cit0LmNvbGxpc2lvbldpZHRoLWEtbjt0LmNvbGxpc2lvbldpZHRoPmE/aD4wJiYwPj1sPyhpPWUubGVmdCtoK3QuY29sbGlzaW9uV2lkdGgtYS1uLGUubGVmdCs9aC1pKTplLmxlZnQ9bD4wJiYwPj1oP246aD5sP24rYS10LmNvbGxpc2lvbldpZHRoOm46aD4wP2UubGVmdCs9aDpsPjA/ZS5sZWZ0LT1sOmUubGVmdD1vKGUubGVmdC1yLGUubGVmdCl9LHRvcDpmdW5jdGlvbihlLHQpe3ZhciBpLHM9dC53aXRoaW4sbj1zLmlzV2luZG93P3Muc2Nyb2xsVG9wOnMub2Zmc2V0LnRvcCxhPXQud2l0aGluLmhlaWdodCxyPWUudG9wLXQuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luVG9wLGg9bi1yLGw9cit0LmNvbGxpc2lvbkhlaWdodC1hLW47dC5jb2xsaXNpb25IZWlnaHQ+YT9oPjAmJjA+PWw/KGk9ZS50b3AraCt0LmNvbGxpc2lvbkhlaWdodC1hLW4sZS50b3ArPWgtaSk6ZS50b3A9bD4wJiYwPj1oP246aD5sP24rYS10LmNvbGxpc2lvbkhlaWdodDpuOmg+MD9lLnRvcCs9aDpsPjA/ZS50b3AtPWw6ZS50b3A9byhlLnRvcC1yLGUudG9wKX19LGZsaXA6e2xlZnQ6ZnVuY3Rpb24oZSx0KXt2YXIgaSxzLG49dC53aXRoaW4sYT1uLm9mZnNldC5sZWZ0K24uc2Nyb2xsTGVmdCxvPW4ud2lkdGgsaD1uLmlzV2luZG93P24uc2Nyb2xsTGVmdDpuLm9mZnNldC5sZWZ0LGw9ZS5sZWZ0LXQuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luTGVmdCx1PWwtaCxkPWwrdC5jb2xsaXNpb25XaWR0aC1vLWgsYz0ibGVmdCI9PT10Lm15WzBdPy10LmVsZW1XaWR0aDoicmlnaHQiPT09dC5teVswXT90LmVsZW1XaWR0aDowLHA9ImxlZnQiPT09dC5hdFswXT90LnRhcmdldFdpZHRoOiJyaWdodCI9PT10LmF0WzBdPy10LnRhcmdldFdpZHRoOjAsZj0tMip0Lm9mZnNldFswXTswPnU/KGk9ZS5sZWZ0K2MrcCtmK3QuY29sbGlzaW9uV2lkdGgtby1hLCgwPml8fHIodSk+aSkmJihlLmxlZnQrPWMrcCtmKSk6ZD4wJiYocz1lLmxlZnQtdC5jb2xsaXNpb25Qb3NpdGlvbi5tYXJnaW5MZWZ0K2MrcCtmLWgsKHM+MHx8ZD5yKHMpKSYmKGUubGVmdCs9YytwK2YpKX0sdG9wOmZ1bmN0aW9uKGUsdCl7dmFyIGkscyxuPXQud2l0aGluLGE9bi5vZmZzZXQudG9wK24uc2Nyb2xsVG9wLG89bi5oZWlnaHQsaD1uLmlzV2luZG93P24uc2Nyb2xsVG9wOm4ub2Zmc2V0LnRvcCxsPWUudG9wLXQuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luVG9wLHU9bC1oLGQ9bCt0LmNvbGxpc2lvbkhlaWdodC1vLWgsYz0idG9wIj09PXQubXlbMV0scD1jPy10LmVsZW1IZWlnaHQ6ImJvdHRvbSI9PT10Lm15WzFdP3QuZWxlbUhlaWdodDowLGY9InRvcCI9PT10LmF0WzFdP3QudGFyZ2V0SGVpZ2h0OiJib3R0b20iPT09dC5hdFsxXT8tdC50YXJnZXRIZWlnaHQ6MCxtPS0yKnQub2Zmc2V0WzFdOzA+dT8ocz1lLnRvcCtwK2YrbSt0LmNvbGxpc2lvbkhlaWdodC1vLWEsKDA+c3x8cih1KT5zKSYmKGUudG9wKz1wK2YrbSkpOmQ+MCYmKGk9ZS50b3AtdC5jb2xsaXNpb25Qb3NpdGlvbi5tYXJnaW5Ub3ArcCtmK20taCwoaT4wfHxkPnIoaSkpJiYoZS50b3ArPXArZittKSl9fSxmbGlwZml0OntsZWZ0OmZ1bmN0aW9uKCl7ZS51aS5wb3NpdGlvbi5mbGlwLmxlZnQuYXBwbHkodGhpcyxhcmd1bWVudHMpLGUudWkucG9zaXRpb24uZml0LmxlZnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSx0b3A6ZnVuY3Rpb24oKXtlLnVpLnBvc2l0aW9uLmZsaXAudG9wLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxlLnVpLnBvc2l0aW9uLmZpdC50b3AuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19LGZ1bmN0aW9uKCl7dmFyIHQsaSxzLG4sbyxyPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0saD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQocj8iZGl2IjoiYm9keSIpLHM9e3Zpc2liaWxpdHk6ImhpZGRlbiIsd2lkdGg6MCxoZWlnaHQ6MCxib3JkZXI6MCxtYXJnaW46MCxiYWNrZ3JvdW5kOiJub25lIn0sciYmZS5leHRlbmQocyx7cG9zaXRpb246ImFic29sdXRlIixsZWZ0OiItMTAwMHB4Iix0b3A6Ii0xMDAwcHgifSk7Zm9yKG8gaW4gcyl0LnN0eWxlW29dPXNbb107dC5hcHBlbmRDaGlsZChoKSxpPXJ8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxpLmluc2VydEJlZm9yZSh0LGkuZmlyc3RDaGlsZCksaC5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDEwLjc0MzIyMjJweDsiLG49ZShoKS5vZmZzZXQoKS5sZWZ0LGE9bj4xMCYmMTE+bix0LmlubmVySFRNTD0iIixpLnJlbW92ZUNoaWxkKHQpfSgpfSgpLGUudWkucG9zaXRpb24sZS53aWRnZXQoInVpLmRyYWdnYWJsZSIsZS51aS5tb3VzZSx7dmVyc2lvbjoiMS4xMS40Iix3aWRnZXRFdmVudFByZWZpeDoiZHJhZyIsb3B0aW9uczp7YWRkQ2xhc3NlczohMCxhcHBlbmRUbzoicGFyZW50IixheGlzOiExLGNvbm5lY3RUb1NvcnRhYmxlOiExLGNvbnRhaW5tZW50OiExLGN1cnNvcjoiYXV0byIsY3Vyc29yQXQ6ITEsZ3JpZDohMSxoYW5kbGU6ITEsaGVscGVyOiJvcmlnaW5hbCIsaWZyYW1lRml4OiExLG9wYWNpdHk6ITEscmVmcmVzaFBvc2l0aW9uczohMSxyZXZlcnQ6ITEscmV2ZXJ0RHVyYXRpb246NTAwLHNjb3BlOiJkZWZhdWx0IixzY3JvbGw6ITAsc2Nyb2xsU2Vuc2l0aXZpdHk6MjAsc2Nyb2xsU3BlZWQ6MjAsc25hcDohMSxzbmFwTW9kZToiYm90aCIsc25hcFRvbGVyYW5jZToyMCxzdGFjazohMSx6SW5kZXg6ITEsZHJhZzpudWxsLHN0YXJ0Om51bGwsc3RvcDpudWxsfSxfY3JlYXRlOmZ1bmN0aW9uKCl7Im9yaWdpbmFsIj09PXRoaXMub3B0aW9ucy5oZWxwZXImJnRoaXMuX3NldFBvc2l0aW9uUmVsYXRpdmUoKSx0aGlzLm9wdGlvbnMuYWRkQ2xhc3NlcyYmdGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1kcmFnZ2FibGUiKSx0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJnRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktZHJhZ2dhYmxlLWRpc2FibGVkIiksdGhpcy5fc2V0SGFuZGxlQ2xhc3NOYW1lKCksdGhpcy5fbW91c2VJbml0KCl9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXt0aGlzLl9zdXBlcihlLHQpLCJoYW5kbGUiPT09ZSYmKHRoaXMuX3JlbW92ZUhhbmRsZUNsYXNzTmFtZSgpLHRoaXMuX3NldEhhbmRsZUNsYXNzTmFtZSgpKX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5oZWxwZXJ8fHRoaXMuZWxlbWVudCkuaXMoIi51aS1kcmFnZ2FibGUtZHJhZ2dpbmciKT8odGhpcy5kZXN0cm95T25DbGVhcj0hMCx2b2lkIDApOih0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWRyYWdnYWJsZSB1aS1kcmFnZ2FibGUtZHJhZ2dpbmcgdWktZHJhZ2dhYmxlLWRpc2FibGVkIiksdGhpcy5fcmVtb3ZlSGFuZGxlQ2xhc3NOYW1lKCksdGhpcy5fbW91c2VEZXN0cm95KCksdm9pZCAwKX0sX21vdXNlQ2FwdHVyZTpmdW5jdGlvbih0KXt2YXIgaT10aGlzLm9wdGlvbnM7cmV0dXJuIHRoaXMuX2JsdXJBY3RpdmVFbGVtZW50KHQpLHRoaXMuaGVscGVyfHxpLmRpc2FibGVkfHxlKHQudGFyZ2V0KS5jbG9zZXN0KCIudWktcmVzaXphYmxlLWhhbmRsZSIpLmxlbmd0aD4wPyExOih0aGlzLmhhbmRsZT10aGlzLl9nZXRIYW5kbGUodCksdGhpcy5oYW5kbGU/KHRoaXMuX2Jsb2NrRnJhbWVzKGkuaWZyYW1lRml4PT09ITA/ImlmcmFtZSI6aS5pZnJhbWVGaXgpLCEwKTohMSl9LF9ibG9ja0ZyYW1lczpmdW5jdGlvbih0KXt0aGlzLmlmcmFtZUJsb2Nrcz10aGlzLmRvY3VtZW50LmZpbmQodCkubWFwKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKTtyZXR1cm4gZSgiPGRpdj4iKS5jc3MoInBvc2l0aW9uIiwiYWJzb2x1dGUiKS5hcHBlbmRUbyh0LnBhcmVudCgpKS5vdXRlcldpZHRoKHQub3V0ZXJXaWR0aCgpKS5vdXRlckhlaWdodCh0Lm91dGVySGVpZ2h0KCkpLm9mZnNldCh0Lm9mZnNldCgpKVswXX0pfSxfdW5ibG9ja0ZyYW1lczpmdW5jdGlvbigpe3RoaXMuaWZyYW1lQmxvY2tzJiYodGhpcy5pZnJhbWVCbG9ja3MucmVtb3ZlKCksZGVsZXRlIHRoaXMuaWZyYW1lQmxvY2tzKX0sX2JsdXJBY3RpdmVFbGVtZW50OmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMuZG9jdW1lbnRbMF07aWYodGhpcy5oYW5kbGVFbGVtZW50LmlzKHQudGFyZ2V0KSl0cnl7aS5hY3RpdmVFbGVtZW50JiYiYm9keSIhPT1pLmFjdGl2ZUVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmZShpLmFjdGl2ZUVsZW1lbnQpLmJsdXIoKX1jYXRjaChzKXt9fSxfbW91c2VTdGFydDpmdW5jdGlvbih0KXt2YXIgaT10aGlzLm9wdGlvbnM7cmV0dXJuIHRoaXMuaGVscGVyPXRoaXMuX2NyZWF0ZUhlbHBlcih0KSx0aGlzLmhlbHBlci5hZGRDbGFzcygidWktZHJhZ2dhYmxlLWRyYWdnaW5nIiksdGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0aW9ucygpLGUudWkuZGRtYW5hZ2VyJiYoZS51aS5kZG1hbmFnZXIuY3VycmVudD10aGlzKSx0aGlzLl9jYWNoZU1hcmdpbnMoKSx0aGlzLmNzc1Bvc2l0aW9uPXRoaXMuaGVscGVyLmNzcygicG9zaXRpb24iKSx0aGlzLnNjcm9sbFBhcmVudD10aGlzLmhlbHBlci5zY3JvbGxQYXJlbnQoITApLHRoaXMub2Zmc2V0UGFyZW50PXRoaXMuaGVscGVyLm9mZnNldFBhcmVudCgpLHRoaXMuaGFzRml4ZWRBbmNlc3Rvcj10aGlzLmhlbHBlci5wYXJlbnRzKCkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuImZpeGVkIj09PWUodGhpcykuY3NzKCJwb3NpdGlvbiIpfSkubGVuZ3RoPjAsdGhpcy5wb3NpdGlvbkFicz10aGlzLmVsZW1lbnQub2Zmc2V0KCksdGhpcy5fcmVmcmVzaE9mZnNldHModCksdGhpcy5vcmlnaW5hbFBvc2l0aW9uPXRoaXMucG9zaXRpb249dGhpcy5fZ2VuZXJhdGVQb3NpdGlvbih0LCExKSx0aGlzLm9yaWdpbmFsUGFnZVg9dC5wYWdlWCx0aGlzLm9yaWdpbmFsUGFnZVk9dC5wYWdlWSxpLmN1cnNvckF0JiZ0aGlzLl9hZGp1c3RPZmZzZXRGcm9tSGVscGVyKGkuY3Vyc29yQXQpLHRoaXMuX3NldENvbnRhaW5tZW50KCksdGhpcy5fdHJpZ2dlcigic3RhcnQiLHQpPT09ITE/KHRoaXMuX2NsZWFyKCksITEpOih0aGlzLl9jYWNoZUhlbHBlclByb3BvcnRpb25zKCksZS51aS5kZG1hbmFnZXImJiFpLmRyb3BCZWhhdmlvdXImJmUudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHRoaXMsdCksdGhpcy5fbm9ybWFsaXplUmlnaHRCb3R0b20oKSx0aGlzLl9tb3VzZURyYWcodCwhMCksZS51aS5kZG1hbmFnZXImJmUudWkuZGRtYW5hZ2VyLmRyYWdTdGFydCh0aGlzLHQpLCEwKX0sX3JlZnJlc2hPZmZzZXRzOmZ1bmN0aW9uKGUpe3RoaXMub2Zmc2V0PXt0b3A6dGhpcy5wb3NpdGlvbkFicy50b3AtdGhpcy5tYXJnaW5zLnRvcCxsZWZ0OnRoaXMucG9zaXRpb25BYnMubGVmdC10aGlzLm1hcmdpbnMubGVmdCxzY3JvbGw6ITEscGFyZW50OnRoaXMuX2dldFBhcmVudE9mZnNldCgpLHJlbGF0aXZlOnRoaXMuX2dldFJlbGF0aXZlT2Zmc2V0KCl9LHRoaXMub2Zmc2V0LmNsaWNrPXtsZWZ0OmUucGFnZVgtdGhpcy5vZmZzZXQubGVmdCx0b3A6ZS5wYWdlWS10aGlzLm9mZnNldC50b3B9fSxfbW91c2VEcmFnOmZ1bmN0aW9uKHQsaSl7aWYodGhpcy5oYXNGaXhlZEFuY2VzdG9yJiYodGhpcy5vZmZzZXQucGFyZW50PXRoaXMuX2dldFBhcmVudE9mZnNldCgpKSx0aGlzLnBvc2l0aW9uPXRoaXMuX2dlbmVyYXRlUG9zaXRpb24odCwhMCksdGhpcy5wb3NpdGlvbkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1dGUiKSwhaSl7dmFyIHM9dGhpcy5fdWlIYXNoKCk7aWYodGhpcy5fdHJpZ2dlcigiZHJhZyIsdCxzKT09PSExKXJldHVybiB0aGlzLl9tb3VzZVVwKHt9KSwhMTt0aGlzLnBvc2l0aW9uPXMucG9zaXRpb259cmV0dXJuIHRoaXMuaGVscGVyWzBdLnN0eWxlLmxlZnQ9dGhpcy5wb3NpdGlvbi5sZWZ0KyJweCIsdGhpcy5oZWxwZXJbMF0uc3R5bGUudG9wPXRoaXMucG9zaXRpb24udG9wKyJweCIsZS51aS5kZG1hbmFnZXImJmUudWkuZGRtYW5hZ2VyLmRyYWcodGhpcyx0KSwhMX0sX21vdXNlU3RvcDpmdW5jdGlvbih0KXt2YXIgaT10aGlzLHM9ITE7cmV0dXJuIGUudWkuZGRtYW5hZ2VyJiYhdGhpcy5vcHRpb25zLmRyb3BCZWhhdmlvdXImJihzPWUudWkuZGRtYW5hZ2VyLmRyb3AodGhpcyx0KSksdGhpcy5kcm9wcGVkJiYocz10aGlzLmRyb3BwZWQsdGhpcy5kcm9wcGVkPSExKSwiaW52YWxpZCI9PT10aGlzLm9wdGlvbnMucmV2ZXJ0JiYhc3x8InZhbGlkIj09PXRoaXMub3B0aW9ucy5yZXZlcnQmJnN8fHRoaXMub3B0aW9ucy5yZXZlcnQ9PT0hMHx8ZS5pc0Z1bmN0aW9uKHRoaXMub3B0aW9ucy5yZXZlcnQpJiZ0aGlzLm9wdGlvbnMucmV2ZXJ0LmNhbGwodGhpcy5lbGVtZW50LHMpP2UodGhpcy5oZWxwZXIpLmFuaW1hdGUodGhpcy5vcmlnaW5hbFBvc2l0aW9uLHBhcnNlSW50KHRoaXMub3B0aW9ucy5yZXZlcnREdXJhdGlvbiwxMCksZnVuY3Rpb24oKXtpLl90cmlnZ2VyKCJzdG9wIix0KSE9PSExJiZpLl9jbGVhcigpfSk6dGhpcy5fdHJpZ2dlcigic3RvcCIsdCkhPT0hMSYmdGhpcy5fY2xlYXIoKSwhMX0sX21vdXNlVXA6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3VuYmxvY2tGcmFtZXMoKSxlLnVpLmRkbWFuYWdlciYmZS51aS5kZG1hbmFnZXIuZHJhZ1N0b3AodGhpcyx0KSx0aGlzLmhhbmRsZUVsZW1lbnQuaXModC50YXJnZXQpJiZ0aGlzLmVsZW1lbnQuZm9jdXMoKSxlLnVpLm1vdXNlLnByb3RvdHlwZS5fbW91c2VVcC5jYWxsKHRoaXMsdCl9LGNhbmNlbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhlbHBlci5pcygiLnVpLWRyYWdnYWJsZS1kcmFnZ2luZyIpP3RoaXMuX21vdXNlVXAoe30pOnRoaXMuX2NsZWFyKCksdGhpc30sX2dldEhhbmRsZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLmhhbmRsZT8hIWUodC50YXJnZXQpLmNsb3Nlc3QodGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25zLmhhbmRsZSkpLmxlbmd0aDohMH0sX3NldEhhbmRsZUNsYXNzTmFtZTpmdW5jdGlvbigpe3RoaXMuaGFuZGxlRWxlbWVudD10aGlzLm9wdGlvbnMuaGFuZGxlP3RoaXMuZWxlbWVudC5maW5kKHRoaXMub3B0aW9ucy5oYW5kbGUpOnRoaXMuZWxlbWVudCx0aGlzLmhhbmRsZUVsZW1lbnQuYWRkQ2xhc3MoInVpLWRyYWdnYWJsZS1oYW5kbGUiKX0sX3JlbW92ZUhhbmRsZUNsYXNzTmFtZTpmdW5jdGlvbigpe3RoaXMuaGFuZGxlRWxlbWVudC5yZW1vdmVDbGFzcygidWktZHJhZ2dhYmxlLWhhbmRsZSIpfSxfY3JlYXRlSGVscGVyOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMub3B0aW9ucyxzPWUuaXNGdW5jdGlvbihpLmhlbHBlciksbj1zP2UoaS5oZWxwZXIuYXBwbHkodGhpcy5lbGVtZW50WzBdLFt0XSkpOiJjbG9uZSI9PT1pLmhlbHBlcj90aGlzLmVsZW1lbnQuY2xvbmUoKS5yZW1vdmVBdHRyKCJpZCIpOnRoaXMuZWxlbWVudDtyZXR1cm4gbi5wYXJlbnRzKCJib2R5IikubGVuZ3RofHxuLmFwcGVuZFRvKCJwYXJlbnQiPT09aS5hcHBlbmRUbz90aGlzLmVsZW1lbnRbMF0ucGFyZW50Tm9kZTppLmFwcGVuZFRvKSxzJiZuWzBdPT09dGhpcy5lbGVtZW50WzBdJiZ0aGlzLl9zZXRQb3NpdGlvblJlbGF0aXZlKCksblswXT09PXRoaXMuZWxlbWVudFswXXx8LyhmaXhlZHxhYnNvbHV0ZSkvLnRlc3Qobi5jc3MoInBvc2l0aW9uIikpfHxuLmNzcygicG9zaXRpb24iLCJhYnNvbHV0ZSIpLG59LF9zZXRQb3NpdGlvblJlbGF0aXZlOmZ1bmN0aW9uKCl7L14oPzpyfGF8ZikvLnRlc3QodGhpcy5lbGVtZW50LmNzcygicG9zaXRpb24iKSl8fCh0aGlzLmVsZW1lbnRbMF0uc3R5bGUucG9zaXRpb249InJlbGF0aXZlIil9LF9hZGp1c3RPZmZzZXRGcm9tSGVscGVyOmZ1bmN0aW9uKHQpeyJzdHJpbmciPT10eXBlb2YgdCYmKHQ9dC5zcGxpdCgiICIpKSxlLmlzQXJyYXkodCkmJih0PXtsZWZ0Oit0WzBdLHRvcDordFsxXXx8MH0pLCJsZWZ0ImluIHQmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PXQubGVmdCt0aGlzLm1hcmdpbnMubGVmdCksInJpZ2h0ImluIHQmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdC5yaWdodCt0aGlzLm1hcmdpbnMubGVmdCksInRvcCJpbiB0JiYodGhpcy5vZmZzZXQuY2xpY2sudG9wPXQudG9wK3RoaXMubWFyZ2lucy50b3ApLCJib3R0b20iaW4gdCYmKHRoaXMub2Zmc2V0LmNsaWNrLnRvcD10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC10LmJvdHRvbSt0aGlzLm1hcmdpbnMudG9wKX0sX2lzUm9vdE5vZGU6ZnVuY3Rpb24oZSl7cmV0dXJuLyhodG1sfGJvZHkpL2kudGVzdChlLnRhZ05hbWUpfHxlPT09dGhpcy5kb2N1bWVudFswXX0sX2dldFBhcmVudE9mZnNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMub2Zmc2V0UGFyZW50Lm9mZnNldCgpLGk9dGhpcy5kb2N1bWVudFswXTtyZXR1cm4iYWJzb2x1dGUiPT09dGhpcy5jc3NQb3NpdGlvbiYmdGhpcy5zY3JvbGxQYXJlbnRbMF0hPT1pJiZlLmNvbnRhaW5zKHRoaXMuc2Nyb2xsUGFyZW50WzBdLHRoaXMub2Zmc2V0UGFyZW50WzBdKSYmKHQubGVmdCs9dGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpLHQudG9wKz10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKSksdGhpcy5faXNSb290Tm9kZSh0aGlzLm9mZnNldFBhcmVudFswXSkmJih0PXt0b3A6MCxsZWZ0OjB9KSx7dG9wOnQudG9wKyhwYXJzZUludCh0aGlzLm9mZnNldFBhcmVudC5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKSxsZWZ0OnQubGVmdCsocGFyc2VJbnQodGhpcy5vZmZzZXRQYXJlbnQuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApfX0sX2dldFJlbGF0aXZlT2Zmc2V0OmZ1bmN0aW9uKCl7aWYoInJlbGF0aXZlIiE9PXRoaXMuY3NzUG9zaXRpb24pcmV0dXJue3RvcDowLGxlZnQ6MH07dmFyIGU9dGhpcy5lbGVtZW50LnBvc2l0aW9uKCksdD10aGlzLl9pc1Jvb3ROb2RlKHRoaXMuc2Nyb2xsUGFyZW50WzBdKTtyZXR1cm57dG9wOmUudG9wLShwYXJzZUludCh0aGlzLmhlbHBlci5jc3MoInRvcCIpLDEwKXx8MCkrKHQ/MDp0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKSksbGVmdDplLmxlZnQtKHBhcnNlSW50KHRoaXMuaGVscGVyLmNzcygibGVmdCIpLDEwKXx8MCkrKHQ/MDp0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCkpfX0sX2NhY2hlTWFyZ2luczpmdW5jdGlvbigpe3RoaXMubWFyZ2lucz17bGVmdDpwYXJzZUludCh0aGlzLmVsZW1lbnQuY3NzKCJtYXJnaW5MZWZ0IiksMTApfHwwLHRvcDpwYXJzZUludCh0aGlzLmVsZW1lbnQuY3NzKCJtYXJnaW5Ub3AiKSwxMCl8fDAscmlnaHQ6cGFyc2VJbnQodGhpcy5lbGVtZW50LmNzcygibWFyZ2luUmlnaHQiKSwxMCl8fDAsYm90dG9tOnBhcnNlSW50KHRoaXMuZWxlbWVudC5jc3MoIm1hcmdpbkJvdHRvbSIpLDEwKXx8MH19LF9jYWNoZUhlbHBlclByb3BvcnRpb25zOmZ1bmN0aW9uKCl7dGhpcy5oZWxwZXJQcm9wb3J0aW9ucz17d2lkdGg6dGhpcy5oZWxwZXIub3V0ZXJXaWR0aCgpLGhlaWdodDp0aGlzLmhlbHBlci5vdXRlckhlaWdodCgpfX0sX3NldENvbnRhaW5tZW50OmZ1bmN0aW9uKCl7dmFyIHQsaSxzLG49dGhpcy5vcHRpb25zLGE9dGhpcy5kb2N1bWVudFswXTtyZXR1cm4gdGhpcy5yZWxhdGl2ZUNvbnRhaW5lcj1udWxsLG4uY29udGFpbm1lbnQ/IndpbmRvdyI9PT1uLmNvbnRhaW5tZW50Pyh0aGlzLmNvbnRhaW5tZW50PVtlKHdpbmRvdykuc2Nyb2xsTGVmdCgpLXRoaXMub2Zmc2V0LnJlbGF0aXZlLmxlZnQtdGhpcy5vZmZzZXQucGFyZW50LmxlZnQsZSh3aW5kb3cpLnNjcm9sbFRvcCgpLXRoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wLGUod2luZG93KS5zY3JvbGxMZWZ0KCkrZSh3aW5kb3cpLndpZHRoKCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC10aGlzLm1hcmdpbnMubGVmdCxlKHdpbmRvdykuc2Nyb2xsVG9wKCkrKGUod2luZG93KS5oZWlnaHQoKXx8YS5ib2R5LnBhcmVudE5vZGUuc2Nyb2xsSGVpZ2h0KS10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC10aGlzLm1hcmdpbnMudG9wXSx2b2lkIDApOiJkb2N1bWVudCI9PT1uLmNvbnRhaW5tZW50Pyh0aGlzLmNvbnRhaW5tZW50PVswLDAsZShhKS53aWR0aCgpLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5tYXJnaW5zLmxlZnQsKGUoYSkuaGVpZ2h0KCl8fGEuYm9keS5wYXJlbnROb2RlLnNjcm9sbEhlaWdodCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQtdGhpcy5tYXJnaW5zLnRvcF0sdm9pZCAwKTpuLmNvbnRhaW5tZW50LmNvbnN0cnVjdG9yPT09QXJyYXk/KHRoaXMuY29udGFpbm1lbnQ9bi5jb250YWlubWVudCx2b2lkIDApOigicGFyZW50Ij09PW4uY29udGFpbm1lbnQmJihuLmNvbnRhaW5tZW50PXRoaXMuaGVscGVyWzBdLnBhcmVudE5vZGUpLGk9ZShuLmNvbnRhaW5tZW50KSxzPWlbMF0scyYmKHQ9LyhzY3JvbGx8YXV0bykvLnRlc3QoaS5jc3MoIm92ZXJmbG93IikpLHRoaXMuY29udGFpbm1lbnQ9WyhwYXJzZUludChpLmNzcygiYm9yZGVyTGVmdFdpZHRoIiksMTApfHwwKSsocGFyc2VJbnQoaS5jc3MoInBhZGRpbmdMZWZ0IiksMTApfHwwKSwocGFyc2VJbnQoaS5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKSsocGFyc2VJbnQoaS5jc3MoInBhZGRpbmdUb3AiKSwxMCl8fDApLCh0P01hdGgubWF4KHMuc2Nyb2xsV2lkdGgscy5vZmZzZXRXaWR0aCk6cy5vZmZzZXRXaWR0aCktKHBhcnNlSW50KGkuY3NzKCJib3JkZXJSaWdodFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoaS5jc3MoInBhZGRpbmdSaWdodCIpLDEwKXx8MCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC10aGlzLm1hcmdpbnMubGVmdC10aGlzLm1hcmdpbnMucmlnaHQsKHQ/TWF0aC5tYXgocy5zY3JvbGxIZWlnaHQscy5vZmZzZXRIZWlnaHQpOnMub2Zmc2V0SGVpZ2h0KS0ocGFyc2VJbnQoaS5jc3MoImJvcmRlckJvdHRvbVdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoaS5jc3MoInBhZGRpbmdCb3R0b20iKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3AtdGhpcy5tYXJnaW5zLmJvdHRvbV0sdGhpcy5yZWxhdGl2ZUNvbnRhaW5lcj1pKSx2b2lkIDApOih0aGlzLmNvbnRhaW5tZW50PW51bGwsdm9pZCAwKX0sX2NvbnZlcnRQb3NpdGlvblRvOmZ1bmN0aW9uKGUsdCl7dHx8KHQ9dGhpcy5wb3NpdGlvbik7dmFyIGk9ImFic29sdXRlIj09PWU/MTotMSxzPXRoaXMuX2lzUm9vdE5vZGUodGhpcy5zY3JvbGxQYXJlbnRbMF0pO3JldHVybnt0b3A6dC50b3ArdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wKmkrdGhpcy5vZmZzZXQucGFyZW50LnRvcCppLSgiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlvbj8tdGhpcy5vZmZzZXQuc2Nyb2xsLnRvcDpzPzA6dGhpcy5vZmZzZXQuc2Nyb2xsLnRvcCkqaSxsZWZ0OnQubGVmdCt0aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0KmkrdGhpcy5vZmZzZXQucGFyZW50LmxlZnQqaS0oImZpeGVkIj09PXRoaXMuY3NzUG9zaXRpb24/LXRoaXMub2Zmc2V0LnNjcm9sbC5sZWZ0OnM/MDp0aGlzLm9mZnNldC5zY3JvbGwubGVmdCkqaX19LF9nZW5lcmF0ZVBvc2l0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIGkscyxuLGEsbz10aGlzLm9wdGlvbnMscj10aGlzLl9pc1Jvb3ROb2RlKHRoaXMuc2Nyb2xsUGFyZW50WzBdKSxoPWUucGFnZVgsbD1lLnBhZ2VZO3JldHVybiByJiZ0aGlzLm9mZnNldC5zY3JvbGx8fCh0aGlzLm9mZnNldC5zY3JvbGw9e3RvcDp0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKSxsZWZ0OnRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKX0pLHQmJih0aGlzLmNvbnRhaW5tZW50JiYodGhpcy5yZWxhdGl2ZUNvbnRhaW5lcj8ocz10aGlzLnJlbGF0aXZlQ29udGFpbmVyLm9mZnNldCgpLGk9W3RoaXMuY29udGFpbm1lbnRbMF0rcy5sZWZ0LHRoaXMuY29udGFpbm1lbnRbMV0rcy50b3AsdGhpcy5jb250YWlubWVudFsyXStzLmxlZnQsdGhpcy5jb250YWlubWVudFszXStzLnRvcF0pOmk9dGhpcy5jb250YWlubWVudCxlLnBhZ2VYLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ8aVswXSYmKGg9aVswXSt0aGlzLm9mZnNldC5jbGljay5sZWZ0KSxlLnBhZ2VZLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDxpWzFdJiYobD1pWzFdK3RoaXMub2Zmc2V0LmNsaWNrLnRvcCksZS5wYWdlWC10aGlzLm9mZnNldC5jbGljay5sZWZ0PmlbMl0mJihoPWlbMl0rdGhpcy5vZmZzZXQuY2xpY2subGVmdCksZS5wYWdlWS10aGlzLm9mZnNldC5jbGljay50b3A+aVszXSYmKGw9aVszXSt0aGlzLm9mZnNldC5jbGljay50b3ApKSxvLmdyaWQmJihuPW8uZ3JpZFsxXT90aGlzLm9yaWdpbmFsUGFnZVkrTWF0aC5yb3VuZCgobC10aGlzLm9yaWdpbmFsUGFnZVkpL28uZ3JpZFsxXSkqby5ncmlkWzFdOnRoaXMub3JpZ2luYWxQYWdlWSxsPWk/bi10aGlzLm9mZnNldC5jbGljay50b3A+PWlbMV18fG4tdGhpcy5vZmZzZXQuY2xpY2sudG9wPmlbM10/bjpuLXRoaXMub2Zmc2V0LmNsaWNrLnRvcD49aVsxXT9uLW8uZ3JpZFsxXTpuK28uZ3JpZFsxXTpuLGE9by5ncmlkWzBdP3RoaXMub3JpZ2luYWxQYWdlWCtNYXRoLnJvdW5kKChoLXRoaXMub3JpZ2luYWxQYWdlWCkvby5ncmlkWzBdKSpvLmdyaWRbMF06dGhpcy5vcmlnaW5hbFBhZ2VYLGg9aT9hLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+PWlbMF18fGEtdGhpcy5vZmZzZXQuY2xpY2subGVmdD5pWzJdP2E6YS10aGlzLm9mZnNldC5jbGljay5sZWZ0Pj1pWzBdP2Etby5ncmlkWzBdOmErby5ncmlkWzBdOmEpLCJ5Ij09PW8uYXhpcyYmKGg9dGhpcy5vcmlnaW5hbFBhZ2VYKSwieCI9PT1vLmF4aXMmJihsPXRoaXMub3JpZ2luYWxQYWdlWSkpLHt0b3A6bC10aGlzLm9mZnNldC5jbGljay50b3AtdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wLXRoaXMub2Zmc2V0LnBhcmVudC50b3ArKCJmaXhlZCI9PT10aGlzLmNzc1Bvc2l0aW9uPy10aGlzLm9mZnNldC5zY3JvbGwudG9wOnI/MDp0aGlzLm9mZnNldC5zY3JvbGwudG9wKSxsZWZ0OmgtdGhpcy5vZmZzZXQuY2xpY2subGVmdC10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KygiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlvbj8tdGhpcy5vZmZzZXQuc2Nyb2xsLmxlZnQ6cj8wOnRoaXMub2Zmc2V0LnNjcm9sbC5sZWZ0KX19LF9jbGVhcjpmdW5jdGlvbigpe3RoaXMuaGVscGVyLnJlbW92ZUNsYXNzKCJ1aS1kcmFnZ2FibGUtZHJhZ2dpbmciKSx0aGlzLmhlbHBlclswXT09PXRoaXMuZWxlbWVudFswXXx8dGhpcy5jYW5jZWxIZWxwZXJSZW1vdmFsfHx0aGlzLmhlbHBlci5yZW1vdmUoKSx0aGlzLmhlbHBlcj1udWxsLHRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbD0hMSx0aGlzLmRlc3Ryb3lPbkNsZWFyJiZ0aGlzLmRlc3Ryb3koKX0sX25vcm1hbGl6ZVJpZ2h0Qm90dG9tOmZ1bmN0aW9uKCl7InkiIT09dGhpcy5vcHRpb25zLmF4aXMmJiJhdXRvIiE9PXRoaXMuaGVscGVyLmNzcygicmlnaHQiKSYmKHRoaXMuaGVscGVyLndpZHRoKHRoaXMuaGVscGVyLndpZHRoKCkpLHRoaXMuaGVscGVyLmNzcygicmlnaHQiLCJhdXRvIikpLCJ4IiE9PXRoaXMub3B0aW9ucy5heGlzJiYiYXV0byIhPT10aGlzLmhlbHBlci5jc3MoImJvdHRvbSIpJiYodGhpcy5oZWxwZXIuaGVpZ2h0KHRoaXMuaGVscGVyLmhlaWdodCgpKSx0aGlzLmhlbHBlci5jc3MoImJvdHRvbSIsImF1dG8iKSl9LF90cmlnZ2VyOmZ1bmN0aW9uKHQsaSxzKXtyZXR1cm4gcz1zfHx0aGlzLl91aUhhc2goKSxlLnVpLnBsdWdpbi5jYWxsKHRoaXMsdCxbaSxzLHRoaXNdLCEwKSwvXihkcmFnfHN0YXJ0fHN0b3ApLy50ZXN0KHQpJiYodGhpcy5wb3NpdGlvbkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1dGUiKSxzLm9mZnNldD10aGlzLnBvc2l0aW9uQWJzKSxlLldpZGdldC5wcm90b3R5cGUuX3RyaWdnZXIuY2FsbCh0aGlzLHQsaSxzKX0scGx1Z2luczp7fSxfdWlIYXNoOmZ1bmN0aW9uKCl7cmV0dXJue2hlbHBlcjp0aGlzLmhlbHBlcixwb3NpdGlvbjp0aGlzLnBvc2l0aW9uLG9yaWdpbmFsUG9zaXRpb246dGhpcy5vcmlnaW5hbFBvc2l0aW9uLG9mZnNldDp0aGlzLnBvc2l0aW9uQWJzfX19KSxlLnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsImNvbm5lY3RUb1NvcnRhYmxlIix7c3RhcnQ6ZnVuY3Rpb24odCxpLHMpe3ZhciBuPWUuZXh0ZW5kKHt9LGkse2l0ZW06cy5lbGVtZW50fSk7cy5zb3J0YWJsZXM9W10sZShzLm9wdGlvbnMuY29ubmVjdFRvU29ydGFibGUpLmVhY2goZnVuY3Rpb24oKXt2YXIgaT1lKHRoaXMpLnNvcnRhYmxlKCJpbnN0YW5jZSIpO2kmJiFpLm9wdGlvbnMuZGlzYWJsZWQmJihzLnNvcnRhYmxlcy5wdXNoKGkpLGkucmVmcmVzaFBvc2l0aW9ucygpLGkuX3RyaWdnZXIoImFjdGl2YXRlIix0LG4pKX0pfSxzdG9wOmZ1bmN0aW9uKHQsaSxzKXt2YXIgbj1lLmV4dGVuZCh7fSxpLHtpdGVtOnMuZWxlbWVudH0pO3MuY2FuY2VsSGVscGVyUmVtb3ZhbD0hMSxlLmVhY2gocy5zb3J0YWJsZXMsZnVuY3Rpb24oKXt2YXIgZT10aGlzO2UuaXNPdmVyPyhlLmlzT3Zlcj0wLHMuY2FuY2VsSGVscGVyUmVtb3ZhbD0hMCxlLmNhbmNlbEhlbHBlclJlbW92YWw9ITEsZS5fc3RvcmVkQ1NTPXtwb3NpdGlvbjplLnBsYWNlaG9sZGVyLmNzcygicG9zaXRpb24iKSx0b3A6ZS5wbGFjZWhvbGRlci5jc3MoInRvcCIpLGxlZnQ6ZS5wbGFjZWhvbGRlci5jc3MoImxlZnQiKX0sZS5fbW91c2VTdG9wKHQpLGUub3B0aW9ucy5oZWxwZXI9ZS5vcHRpb25zLl9oZWxwZXIpOihlLmNhbmNlbEhlbHBlclJlbW92YWw9ITAsZS5fdHJpZ2dlcigiZGVhY3RpdmF0ZSIsdCxuKSl9KX0sZHJhZzpmdW5jdGlvbih0LGkscyl7ZS5lYWNoKHMuc29ydGFibGVzLGZ1bmN0aW9uKCl7dmFyIG49ITEsYT10aGlzO2EucG9zaXRpb25BYnM9cy5wb3NpdGlvbkFicyxhLmhlbHBlclByb3BvcnRpb25zPXMuaGVscGVyUHJvcG9ydGlvbnMsYS5vZmZzZXQuY2xpY2s9cy5vZmZzZXQuY2xpY2ssYS5faW50ZXJzZWN0c1dpdGgoYS5jb250YWluZXJDYWNoZSkmJihuPSEwLGUuZWFjaChzLnNvcnRhYmxlcyxmdW5jdGlvbigpe3JldHVybiB0aGlzLnBvc2l0aW9uQWJzPXMucG9zaXRpb25BYnMsdGhpcy5oZWxwZXJQcm9wb3J0aW9ucz1zLmhlbHBlclByb3BvcnRpb25zLHRoaXMub2Zmc2V0LmNsaWNrPXMub2Zmc2V0LmNsaWNrLHRoaXMhPT1hJiZ0aGlzLl9pbnRlcnNlY3RzV2l0aCh0aGlzLmNvbnRhaW5lckNhY2hlKSYmZS5jb250YWlucyhhLmVsZW1lbnRbMF0sdGhpcy5lbGVtZW50WzBdKSYmKG49ITEpLG4KfSkpLG4/KGEuaXNPdmVyfHwoYS5pc092ZXI9MSxzLl9wYXJlbnQ9aS5oZWxwZXIucGFyZW50KCksYS5jdXJyZW50SXRlbT1pLmhlbHBlci5hcHBlbmRUbyhhLmVsZW1lbnQpLmRhdGEoInVpLXNvcnRhYmxlLWl0ZW0iLCEwKSxhLm9wdGlvbnMuX2hlbHBlcj1hLm9wdGlvbnMuaGVscGVyLGEub3B0aW9ucy5oZWxwZXI9ZnVuY3Rpb24oKXtyZXR1cm4gaS5oZWxwZXJbMF19LHQudGFyZ2V0PWEuY3VycmVudEl0ZW1bMF0sYS5fbW91c2VDYXB0dXJlKHQsITApLGEuX21vdXNlU3RhcnQodCwhMCwhMCksYS5vZmZzZXQuY2xpY2sudG9wPXMub2Zmc2V0LmNsaWNrLnRvcCxhLm9mZnNldC5jbGljay5sZWZ0PXMub2Zmc2V0LmNsaWNrLmxlZnQsYS5vZmZzZXQucGFyZW50LmxlZnQtPXMub2Zmc2V0LnBhcmVudC5sZWZ0LWEub2Zmc2V0LnBhcmVudC5sZWZ0LGEub2Zmc2V0LnBhcmVudC50b3AtPXMub2Zmc2V0LnBhcmVudC50b3AtYS5vZmZzZXQucGFyZW50LnRvcCxzLl90cmlnZ2VyKCJ0b1NvcnRhYmxlIix0KSxzLmRyb3BwZWQ9YS5lbGVtZW50LGUuZWFjaChzLnNvcnRhYmxlcyxmdW5jdGlvbigpe3RoaXMucmVmcmVzaFBvc2l0aW9ucygpfSkscy5jdXJyZW50SXRlbT1zLmVsZW1lbnQsYS5mcm9tT3V0c2lkZT1zKSxhLmN1cnJlbnRJdGVtJiYoYS5fbW91c2VEcmFnKHQpLGkucG9zaXRpb249YS5wb3NpdGlvbikpOmEuaXNPdmVyJiYoYS5pc092ZXI9MCxhLmNhbmNlbEhlbHBlclJlbW92YWw9ITAsYS5vcHRpb25zLl9yZXZlcnQ9YS5vcHRpb25zLnJldmVydCxhLm9wdGlvbnMucmV2ZXJ0PSExLGEuX3RyaWdnZXIoIm91dCIsdCxhLl91aUhhc2goYSkpLGEuX21vdXNlU3RvcCh0LCEwKSxhLm9wdGlvbnMucmV2ZXJ0PWEub3B0aW9ucy5fcmV2ZXJ0LGEub3B0aW9ucy5oZWxwZXI9YS5vcHRpb25zLl9oZWxwZXIsYS5wbGFjZWhvbGRlciYmYS5wbGFjZWhvbGRlci5yZW1vdmUoKSxpLmhlbHBlci5hcHBlbmRUbyhzLl9wYXJlbnQpLHMuX3JlZnJlc2hPZmZzZXRzKHQpLGkucG9zaXRpb249cy5fZ2VuZXJhdGVQb3NpdGlvbih0LCEwKSxzLl90cmlnZ2VyKCJmcm9tU29ydGFibGUiLHQpLHMuZHJvcHBlZD0hMSxlLmVhY2gocy5zb3J0YWJsZXMsZnVuY3Rpb24oKXt0aGlzLnJlZnJlc2hQb3NpdGlvbnMoKX0pKX0pfX0pLGUudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwiY3Vyc29yIix7c3RhcnQ6ZnVuY3Rpb24odCxpLHMpe3ZhciBuPWUoImJvZHkiKSxhPXMub3B0aW9ucztuLmNzcygiY3Vyc29yIikmJihhLl9jdXJzb3I9bi5jc3MoImN1cnNvciIpKSxuLmNzcygiY3Vyc29yIixhLmN1cnNvcil9LHN0b3A6ZnVuY3Rpb24odCxpLHMpe3ZhciBuPXMub3B0aW9ucztuLl9jdXJzb3ImJmUoImJvZHkiKS5jc3MoImN1cnNvciIsbi5fY3Vyc29yKX19KSxlLnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsIm9wYWNpdHkiLHtzdGFydDpmdW5jdGlvbih0LGkscyl7dmFyIG49ZShpLmhlbHBlciksYT1zLm9wdGlvbnM7bi5jc3MoIm9wYWNpdHkiKSYmKGEuX29wYWNpdHk9bi5jc3MoIm9wYWNpdHkiKSksbi5jc3MoIm9wYWNpdHkiLGEub3BhY2l0eSl9LHN0b3A6ZnVuY3Rpb24odCxpLHMpe3ZhciBuPXMub3B0aW9ucztuLl9vcGFjaXR5JiZlKGkuaGVscGVyKS5jc3MoIm9wYWNpdHkiLG4uX29wYWNpdHkpfX0pLGUudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwic2Nyb2xsIix7c3RhcnQ6ZnVuY3Rpb24oZSx0LGkpe2kuc2Nyb2xsUGFyZW50Tm90SGlkZGVufHwoaS5zY3JvbGxQYXJlbnROb3RIaWRkZW49aS5oZWxwZXIuc2Nyb2xsUGFyZW50KCExKSksaS5zY3JvbGxQYXJlbnROb3RIaWRkZW5bMF0hPT1pLmRvY3VtZW50WzBdJiYiSFRNTCIhPT1pLnNjcm9sbFBhcmVudE5vdEhpZGRlblswXS50YWdOYW1lJiYoaS5vdmVyZmxvd09mZnNldD1pLnNjcm9sbFBhcmVudE5vdEhpZGRlbi5vZmZzZXQoKSl9LGRyYWc6ZnVuY3Rpb24odCxpLHMpe3ZhciBuPXMub3B0aW9ucyxhPSExLG89cy5zY3JvbGxQYXJlbnROb3RIaWRkZW5bMF0scj1zLmRvY3VtZW50WzBdO28hPT1yJiYiSFRNTCIhPT1vLnRhZ05hbWU/KG4uYXhpcyYmIngiPT09bi5heGlzfHwocy5vdmVyZmxvd09mZnNldC50b3Arby5vZmZzZXRIZWlnaHQtdC5wYWdlWTxuLnNjcm9sbFNlbnNpdGl2aXR5P28uc2Nyb2xsVG9wPWE9by5zY3JvbGxUb3Arbi5zY3JvbGxTcGVlZDp0LnBhZ2VZLXMub3ZlcmZsb3dPZmZzZXQudG9wPG4uc2Nyb2xsU2Vuc2l0aXZpdHkmJihvLnNjcm9sbFRvcD1hPW8uc2Nyb2xsVG9wLW4uc2Nyb2xsU3BlZWQpKSxuLmF4aXMmJiJ5Ij09PW4uYXhpc3x8KHMub3ZlcmZsb3dPZmZzZXQubGVmdCtvLm9mZnNldFdpZHRoLXQucGFnZVg8bi5zY3JvbGxTZW5zaXRpdml0eT9vLnNjcm9sbExlZnQ9YT1vLnNjcm9sbExlZnQrbi5zY3JvbGxTcGVlZDp0LnBhZ2VYLXMub3ZlcmZsb3dPZmZzZXQubGVmdDxuLnNjcm9sbFNlbnNpdGl2aXR5JiYoby5zY3JvbGxMZWZ0PWE9by5zY3JvbGxMZWZ0LW4uc2Nyb2xsU3BlZWQpKSk6KG4uYXhpcyYmIngiPT09bi5heGlzfHwodC5wYWdlWS1lKHIpLnNjcm9sbFRvcCgpPG4uc2Nyb2xsU2Vuc2l0aXZpdHk/YT1lKHIpLnNjcm9sbFRvcChlKHIpLnNjcm9sbFRvcCgpLW4uc2Nyb2xsU3BlZWQpOmUod2luZG93KS5oZWlnaHQoKS0odC5wYWdlWS1lKHIpLnNjcm9sbFRvcCgpKTxuLnNjcm9sbFNlbnNpdGl2aXR5JiYoYT1lKHIpLnNjcm9sbFRvcChlKHIpLnNjcm9sbFRvcCgpK24uc2Nyb2xsU3BlZWQpKSksbi5heGlzJiYieSI9PT1uLmF4aXN8fCh0LnBhZ2VYLWUocikuc2Nyb2xsTGVmdCgpPG4uc2Nyb2xsU2Vuc2l0aXZpdHk/YT1lKHIpLnNjcm9sbExlZnQoZShyKS5zY3JvbGxMZWZ0KCktbi5zY3JvbGxTcGVlZCk6ZSh3aW5kb3cpLndpZHRoKCktKHQucGFnZVgtZShyKS5zY3JvbGxMZWZ0KCkpPG4uc2Nyb2xsU2Vuc2l0aXZpdHkmJihhPWUocikuc2Nyb2xsTGVmdChlKHIpLnNjcm9sbExlZnQoKStuLnNjcm9sbFNwZWVkKSkpKSxhIT09ITEmJmUudWkuZGRtYW5hZ2VyJiYhbi5kcm9wQmVoYXZpb3VyJiZlLnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyhzLHQpfX0pLGUudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwic25hcCIse3N0YXJ0OmZ1bmN0aW9uKHQsaSxzKXt2YXIgbj1zLm9wdGlvbnM7cy5zbmFwRWxlbWVudHM9W10sZShuLnNuYXAuY29uc3RydWN0b3IhPT1TdHJpbmc/bi5zbmFwLml0ZW1zfHwiOmRhdGEodWktZHJhZ2dhYmxlKSI6bi5zbmFwKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKSxpPXQub2Zmc2V0KCk7dGhpcyE9PXMuZWxlbWVudFswXSYmcy5zbmFwRWxlbWVudHMucHVzaCh7aXRlbTp0aGlzLHdpZHRoOnQub3V0ZXJXaWR0aCgpLGhlaWdodDp0Lm91dGVySGVpZ2h0KCksdG9wOmkudG9wLGxlZnQ6aS5sZWZ0fSl9KX0sZHJhZzpmdW5jdGlvbih0LGkscyl7dmFyIG4sYSxvLHIsaCxsLHUsZCxjLHAsZj1zLm9wdGlvbnMsbT1mLnNuYXBUb2xlcmFuY2UsZz1pLm9mZnNldC5sZWZ0LHY9ZytzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLHk9aS5vZmZzZXQudG9wLGI9eStzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodDtmb3IoYz1zLnNuYXBFbGVtZW50cy5sZW5ndGgtMTtjPj0wO2MtLSloPXMuc25hcEVsZW1lbnRzW2NdLmxlZnQtcy5tYXJnaW5zLmxlZnQsbD1oK3Muc25hcEVsZW1lbnRzW2NdLndpZHRoLHU9cy5zbmFwRWxlbWVudHNbY10udG9wLXMubWFyZ2lucy50b3AsZD11K3Muc25hcEVsZW1lbnRzW2NdLmhlaWdodCxoLW0+dnx8Zz5sK218fHUtbT5ifHx5PmQrbXx8IWUuY29udGFpbnMocy5zbmFwRWxlbWVudHNbY10uaXRlbS5vd25lckRvY3VtZW50LHMuc25hcEVsZW1lbnRzW2NdLml0ZW0pPyhzLnNuYXBFbGVtZW50c1tjXS5zbmFwcGluZyYmcy5vcHRpb25zLnNuYXAucmVsZWFzZSYmcy5vcHRpb25zLnNuYXAucmVsZWFzZS5jYWxsKHMuZWxlbWVudCx0LGUuZXh0ZW5kKHMuX3VpSGFzaCgpLHtzbmFwSXRlbTpzLnNuYXBFbGVtZW50c1tjXS5pdGVtfSkpLHMuc25hcEVsZW1lbnRzW2NdLnNuYXBwaW5nPSExKTooImlubmVyIiE9PWYuc25hcE1vZGUmJihuPW0+PU1hdGguYWJzKHUtYiksYT1tPj1NYXRoLmFicyhkLXkpLG89bT49TWF0aC5hYnMoaC12KSxyPW0+PU1hdGguYWJzKGwtZyksbiYmKGkucG9zaXRpb24udG9wPXMuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDp1LXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LGxlZnQ6MH0pLnRvcCksYSYmKGkucG9zaXRpb24udG9wPXMuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDpkLGxlZnQ6MH0pLnRvcCksbyYmKGkucG9zaXRpb24ubGVmdD1zLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6MCxsZWZ0Omgtcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aH0pLmxlZnQpLHImJihpLnBvc2l0aW9uLmxlZnQ9cy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOjAsbGVmdDpsfSkubGVmdCkpLHA9bnx8YXx8b3x8ciwib3V0ZXIiIT09Zi5zbmFwTW9kZSYmKG49bT49TWF0aC5hYnModS15KSxhPW0+PU1hdGguYWJzKGQtYiksbz1tPj1NYXRoLmFicyhoLWcpLHI9bT49TWF0aC5hYnMobC12KSxuJiYoaS5wb3NpdGlvbi50b3A9cy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOnUsbGVmdDowfSkudG9wKSxhJiYoaS5wb3NpdGlvbi50b3A9cy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOmQtcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQsbGVmdDowfSkudG9wKSxvJiYoaS5wb3NpdGlvbi5sZWZ0PXMuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDowLGxlZnQ6aH0pLmxlZnQpLHImJihpLnBvc2l0aW9uLmxlZnQ9cy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOjAsbGVmdDpsLXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGh9KS5sZWZ0KSksIXMuc25hcEVsZW1lbnRzW2NdLnNuYXBwaW5nJiYobnx8YXx8b3x8cnx8cCkmJnMub3B0aW9ucy5zbmFwLnNuYXAmJnMub3B0aW9ucy5zbmFwLnNuYXAuY2FsbChzLmVsZW1lbnQsdCxlLmV4dGVuZChzLl91aUhhc2goKSx7c25hcEl0ZW06cy5zbmFwRWxlbWVudHNbY10uaXRlbX0pKSxzLnNuYXBFbGVtZW50c1tjXS5zbmFwcGluZz1ufHxhfHxvfHxyfHxwKX19KSxlLnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsInN0YWNrIix7c3RhcnQ6ZnVuY3Rpb24odCxpLHMpe3ZhciBuLGE9cy5vcHRpb25zLG89ZS5tYWtlQXJyYXkoZShhLnN0YWNrKSkuc29ydChmdW5jdGlvbih0LGkpe3JldHVybihwYXJzZUludChlKHQpLmNzcygiekluZGV4IiksMTApfHwwKS0ocGFyc2VJbnQoZShpKS5jc3MoInpJbmRleCIpLDEwKXx8MCl9KTtvLmxlbmd0aCYmKG49cGFyc2VJbnQoZShvWzBdKS5jc3MoInpJbmRleCIpLDEwKXx8MCxlKG8pLmVhY2goZnVuY3Rpb24odCl7ZSh0aGlzKS5jc3MoInpJbmRleCIsbit0KX0pLHRoaXMuY3NzKCJ6SW5kZXgiLG4rby5sZW5ndGgpKX19KSxlLnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsInpJbmRleCIse3N0YXJ0OmZ1bmN0aW9uKHQsaSxzKXt2YXIgbj1lKGkuaGVscGVyKSxhPXMub3B0aW9ucztuLmNzcygiekluZGV4IikmJihhLl96SW5kZXg9bi5jc3MoInpJbmRleCIpKSxuLmNzcygiekluZGV4IixhLnpJbmRleCl9LHN0b3A6ZnVuY3Rpb24odCxpLHMpe3ZhciBuPXMub3B0aW9ucztuLl96SW5kZXgmJmUoaS5oZWxwZXIpLmNzcygiekluZGV4IixuLl96SW5kZXgpfX0pLGUudWkuZHJhZ2dhYmxlLGUud2lkZ2V0KCJ1aS5kcm9wcGFibGUiLHt2ZXJzaW9uOiIxLjExLjQiLHdpZGdldEV2ZW50UHJlZml4OiJkcm9wIixvcHRpb25zOnthY2NlcHQ6IioiLGFjdGl2ZUNsYXNzOiExLGFkZENsYXNzZXM6ITAsZ3JlZWR5OiExLGhvdmVyQ2xhc3M6ITEsc2NvcGU6ImRlZmF1bHQiLHRvbGVyYW5jZToiaW50ZXJzZWN0IixhY3RpdmF0ZTpudWxsLGRlYWN0aXZhdGU6bnVsbCxkcm9wOm51bGwsb3V0Om51bGwsb3ZlcjpudWxsfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIHQsaT10aGlzLm9wdGlvbnMscz1pLmFjY2VwdDt0aGlzLmlzb3Zlcj0hMSx0aGlzLmlzb3V0PSEwLHRoaXMuYWNjZXB0PWUuaXNGdW5jdGlvbihzKT9zOmZ1bmN0aW9uKGUpe3JldHVybiBlLmlzKHMpfSx0aGlzLnByb3BvcnRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9YXJndW1lbnRzWzBdLHZvaWQgMCk6dD90OnQ9e3dpZHRoOnRoaXMuZWxlbWVudFswXS5vZmZzZXRXaWR0aCxoZWlnaHQ6dGhpcy5lbGVtZW50WzBdLm9mZnNldEhlaWdodH19LHRoaXMuX2FkZFRvTWFuYWdlcihpLnNjb3BlKSxpLmFkZENsYXNzZXMmJnRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktZHJvcHBhYmxlIil9LF9hZGRUb01hbmFnZXI6ZnVuY3Rpb24odCl7ZS51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1t0XT1lLnVpLmRkbWFuYWdlci5kcm9wcGFibGVzW3RdfHxbXSxlLnVpLmRkbWFuYWdlci5kcm9wcGFibGVzW3RdLnB1c2godGhpcyl9LF9zcGxpY2U6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7ZS5sZW5ndGg+dDt0KyspZVt0XT09PXRoaXMmJmUuc3BsaWNlKHQsMSl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dmFyIHQ9ZS51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1t0aGlzLm9wdGlvbnMuc2NvcGVdO3RoaXMuX3NwbGljZSh0KSx0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWRyb3BwYWJsZSB1aS1kcm9wcGFibGUtZGlzYWJsZWQiKX0sX3NldE9wdGlvbjpmdW5jdGlvbih0LGkpe2lmKCJhY2NlcHQiPT09dCl0aGlzLmFjY2VwdD1lLmlzRnVuY3Rpb24oaSk/aTpmdW5jdGlvbihlKXtyZXR1cm4gZS5pcyhpKX07ZWxzZSBpZigic2NvcGUiPT09dCl7dmFyIHM9ZS51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1t0aGlzLm9wdGlvbnMuc2NvcGVdO3RoaXMuX3NwbGljZShzKSx0aGlzLl9hZGRUb01hbmFnZXIoaSl9dGhpcy5fc3VwZXIodCxpKX0sX2FjdGl2YXRlOmZ1bmN0aW9uKHQpe3ZhciBpPWUudWkuZGRtYW5hZ2VyLmN1cnJlbnQ7dGhpcy5vcHRpb25zLmFjdGl2ZUNsYXNzJiZ0aGlzLmVsZW1lbnQuYWRkQ2xhc3ModGhpcy5vcHRpb25zLmFjdGl2ZUNsYXNzKSxpJiZ0aGlzLl90cmlnZ2VyKCJhY3RpdmF0ZSIsdCx0aGlzLnVpKGkpKX0sX2RlYWN0aXZhdGU6ZnVuY3Rpb24odCl7dmFyIGk9ZS51aS5kZG1hbmFnZXIuY3VycmVudDt0aGlzLm9wdGlvbnMuYWN0aXZlQ2xhc3MmJnRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuYWN0aXZlQ2xhc3MpLGkmJnRoaXMuX3RyaWdnZXIoImRlYWN0aXZhdGUiLHQsdGhpcy51aShpKSl9LF9vdmVyOmZ1bmN0aW9uKHQpe3ZhciBpPWUudWkuZGRtYW5hZ2VyLmN1cnJlbnQ7aSYmKGkuY3VycmVudEl0ZW18fGkuZWxlbWVudClbMF0hPT10aGlzLmVsZW1lbnRbMF0mJnRoaXMuYWNjZXB0LmNhbGwodGhpcy5lbGVtZW50WzBdLGkuY3VycmVudEl0ZW18fGkuZWxlbWVudCkmJih0aGlzLm9wdGlvbnMuaG92ZXJDbGFzcyYmdGhpcy5lbGVtZW50LmFkZENsYXNzKHRoaXMub3B0aW9ucy5ob3ZlckNsYXNzKSx0aGlzLl90cmlnZ2VyKCJvdmVyIix0LHRoaXMudWkoaSkpKX0sX291dDpmdW5jdGlvbih0KXt2YXIgaT1lLnVpLmRkbWFuYWdlci5jdXJyZW50O2kmJihpLmN1cnJlbnRJdGVtfHxpLmVsZW1lbnQpWzBdIT09dGhpcy5lbGVtZW50WzBdJiZ0aGlzLmFjY2VwdC5jYWxsKHRoaXMuZWxlbWVudFswXSxpLmN1cnJlbnRJdGVtfHxpLmVsZW1lbnQpJiYodGhpcy5vcHRpb25zLmhvdmVyQ2xhc3MmJnRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuaG92ZXJDbGFzcyksdGhpcy5fdHJpZ2dlcigib3V0Iix0LHRoaXMudWkoaSkpKX0sX2Ryb3A6ZnVuY3Rpb24odCxpKXt2YXIgcz1pfHxlLnVpLmRkbWFuYWdlci5jdXJyZW50LG49ITE7cmV0dXJuIHMmJihzLmN1cnJlbnRJdGVtfHxzLmVsZW1lbnQpWzBdIT09dGhpcy5lbGVtZW50WzBdPyh0aGlzLmVsZW1lbnQuZmluZCgiOmRhdGEodWktZHJvcHBhYmxlKSIpLm5vdCgiLnVpLWRyYWdnYWJsZS1kcmFnZ2luZyIpLmVhY2goZnVuY3Rpb24oKXt2YXIgaT1lKHRoaXMpLmRyb3BwYWJsZSgiaW5zdGFuY2UiKTtyZXR1cm4gaS5vcHRpb25zLmdyZWVkeSYmIWkub3B0aW9ucy5kaXNhYmxlZCYmaS5vcHRpb25zLnNjb3BlPT09cy5vcHRpb25zLnNjb3BlJiZpLmFjY2VwdC5jYWxsKGkuZWxlbWVudFswXSxzLmN1cnJlbnRJdGVtfHxzLmVsZW1lbnQpJiZlLnVpLmludGVyc2VjdChzLGUuZXh0ZW5kKGkse29mZnNldDppLmVsZW1lbnQub2Zmc2V0KCl9KSxpLm9wdGlvbnMudG9sZXJhbmNlLHQpPyhuPSEwLCExKTp2b2lkIDB9KSxuPyExOnRoaXMuYWNjZXB0LmNhbGwodGhpcy5lbGVtZW50WzBdLHMuY3VycmVudEl0ZW18fHMuZWxlbWVudCk/KHRoaXMub3B0aW9ucy5hY3RpdmVDbGFzcyYmdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5hY3RpdmVDbGFzcyksdGhpcy5vcHRpb25zLmhvdmVyQ2xhc3MmJnRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuaG92ZXJDbGFzcyksdGhpcy5fdHJpZ2dlcigiZHJvcCIsdCx0aGlzLnVpKHMpKSx0aGlzLmVsZW1lbnQpOiExKTohMX0sdWk6ZnVuY3Rpb24oZSl7cmV0dXJue2RyYWdnYWJsZTplLmN1cnJlbnRJdGVtfHxlLmVsZW1lbnQsaGVscGVyOmUuaGVscGVyLHBvc2l0aW9uOmUucG9zaXRpb24sb2Zmc2V0OmUucG9zaXRpb25BYnN9fX0pLGUudWkuaW50ZXJzZWN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsaSl7cmV0dXJuIGU+PXQmJnQraT5lfXJldHVybiBmdW5jdGlvbih0LGkscyxuKXtpZighaS5vZmZzZXQpcmV0dXJuITE7dmFyIGE9KHQucG9zaXRpb25BYnN8fHQucG9zaXRpb24uYWJzb2x1dGUpLmxlZnQrdC5tYXJnaW5zLmxlZnQsbz0odC5wb3NpdGlvbkFic3x8dC5wb3NpdGlvbi5hYnNvbHV0ZSkudG9wK3QubWFyZ2lucy50b3Ascj1hK3QuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgsaD1vK3QuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LGw9aS5vZmZzZXQubGVmdCx1PWkub2Zmc2V0LnRvcCxkPWwraS5wcm9wb3J0aW9ucygpLndpZHRoLGM9dStpLnByb3BvcnRpb25zKCkuaGVpZ2h0O3N3aXRjaChzKXtjYXNlImZpdCI6cmV0dXJuIGE+PWwmJmQ+PXImJm8+PXUmJmM+PWg7Y2FzZSJpbnRlcnNlY3QiOnJldHVybiBhK3QuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgvMj5sJiZkPnItdC5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC8yJiZvK3QuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LzI+dSYmYz5oLXQuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LzI7Y2FzZSJwb2ludGVyIjpyZXR1cm4gZShuLnBhZ2VZLHUsaS5wcm9wb3J0aW9ucygpLmhlaWdodCkmJmUobi5wYWdlWCxsLGkucHJvcG9ydGlvbnMoKS53aWR0aCk7Y2FzZSJ0b3VjaCI6cmV0dXJuKG8+PXUmJmM+PW98fGg+PXUmJmM+PWh8fHU+byYmaD5jKSYmKGE+PWwmJmQ+PWF8fHI+PWwmJmQ+PXJ8fGw+YSYmcj5kKTtkZWZhdWx0OnJldHVybiExfX19KCksZS51aS5kZG1hbmFnZXI9e2N1cnJlbnQ6bnVsbCxkcm9wcGFibGVzOnsiZGVmYXVsdCI6W119LHByZXBhcmVPZmZzZXRzOmZ1bmN0aW9uKHQsaSl7dmFyIHMsbixhPWUudWkuZGRtYW5hZ2VyLmRyb3BwYWJsZXNbdC5vcHRpb25zLnNjb3BlXXx8W10sbz1pP2kudHlwZTpudWxsLHI9KHQuY3VycmVudEl0ZW18fHQuZWxlbWVudCkuZmluZCgiOmRhdGEodWktZHJvcHBhYmxlKSIpLmFkZEJhY2soKTtlOmZvcihzPTA7YS5sZW5ndGg+cztzKyspaWYoIShhW3NdLm9wdGlvbnMuZGlzYWJsZWR8fHQmJiFhW3NdLmFjY2VwdC5jYWxsKGFbc10uZWxlbWVudFswXSx0LmN1cnJlbnRJdGVtfHx0LmVsZW1lbnQpKSl7Zm9yKG49MDtyLmxlbmd0aD5uO24rKylpZihyW25dPT09YVtzXS5lbGVtZW50WzBdKXthW3NdLnByb3BvcnRpb25zKCkuaGVpZ2h0PTA7Y29udGludWUgZX1hW3NdLnZpc2libGU9Im5vbmUiIT09YVtzXS5lbGVtZW50LmNzcygiZGlzcGxheSIpLGFbc10udmlzaWJsZSYmKCJtb3VzZWRvd24iPT09byYmYVtzXS5fYWN0aXZhdGUuY2FsbChhW3NdLGkpLGFbc10ub2Zmc2V0PWFbc10uZWxlbWVudC5vZmZzZXQoKSxhW3NdLnByb3BvcnRpb25zKHt3aWR0aDphW3NdLmVsZW1lbnRbMF0ub2Zmc2V0V2lkdGgsaGVpZ2h0OmFbc10uZWxlbWVudFswXS5vZmZzZXRIZWlnaHR9KSl9fSxkcm9wOmZ1bmN0aW9uKHQsaSl7dmFyIHM9ITE7cmV0dXJuIGUuZWFjaCgoZS51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1t0Lm9wdGlvbnMuc2NvcGVdfHxbXSkuc2xpY2UoKSxmdW5jdGlvbigpe3RoaXMub3B0aW9ucyYmKCF0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJnRoaXMudmlzaWJsZSYmZS51aS5pbnRlcnNlY3QodCx0aGlzLHRoaXMub3B0aW9ucy50b2xlcmFuY2UsaSkmJihzPXRoaXMuX2Ryb3AuY2FsbCh0aGlzLGkpfHxzKSwhdGhpcy5vcHRpb25zLmRpc2FibGVkJiZ0aGlzLnZpc2libGUmJnRoaXMuYWNjZXB0LmNhbGwodGhpcy5lbGVtZW50WzBdLHQuY3VycmVudEl0ZW18fHQuZWxlbWVudCkmJih0aGlzLmlzb3V0PSEwLHRoaXMuaXNvdmVyPSExLHRoaXMuX2RlYWN0aXZhdGUuY2FsbCh0aGlzLGkpKSl9KSxzfSxkcmFnU3RhcnQ6ZnVuY3Rpb24odCxpKXt0LmVsZW1lbnQucGFyZW50c1VudGlsKCJib2R5IikuYmluZCgic2Nyb2xsLmRyb3BwYWJsZSIsZnVuY3Rpb24oKXt0Lm9wdGlvbnMucmVmcmVzaFBvc2l0aW9uc3x8ZS51aS5kZG1hbmFnZXIucHJlcGFyZU9mZnNldHModCxpKX0pfSxkcmFnOmZ1bmN0aW9uKHQsaSl7dC5vcHRpb25zLnJlZnJlc2hQb3NpdGlvbnMmJmUudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHQsaSksZS5lYWNoKGUudWkuZGRtYW5hZ2VyLmRyb3BwYWJsZXNbdC5vcHRpb25zLnNjb3BlXXx8W10sZnVuY3Rpb24oKXtpZighdGhpcy5vcHRpb25zLmRpc2FibGVkJiYhdGhpcy5ncmVlZHlDaGlsZCYmdGhpcy52aXNpYmxlKXt2YXIgcyxuLGEsbz1lLnVpLmludGVyc2VjdCh0LHRoaXMsdGhpcy5vcHRpb25zLnRvbGVyYW5jZSxpKSxyPSFvJiZ0aGlzLmlzb3Zlcj8iaXNvdXQiOm8mJiF0aGlzLmlzb3Zlcj8iaXNvdmVyIjpudWxsO3ImJih0aGlzLm9wdGlvbnMuZ3JlZWR5JiYobj10aGlzLm9wdGlvbnMuc2NvcGUsYT10aGlzLmVsZW1lbnQucGFyZW50cygiOmRhdGEodWktZHJvcHBhYmxlKSIpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiBlKHRoaXMpLmRyb3BwYWJsZSgiaW5zdGFuY2UiKS5vcHRpb25zLnNjb3BlPT09bn0pLGEubGVuZ3RoJiYocz1lKGFbMF0pLmRyb3BwYWJsZSgiaW5zdGFuY2UiKSxzLmdyZWVkeUNoaWxkPSJpc292ZXIiPT09cikpLHMmJiJpc292ZXIiPT09ciYmKHMuaXNvdmVyPSExLHMuaXNvdXQ9ITAscy5fb3V0LmNhbGwocyxpKSksdGhpc1tyXT0hMCx0aGlzWyJpc291dCI9PT1yPyJpc292ZXIiOiJpc291dCJdPSExLHRoaXNbImlzb3ZlciI9PT1yPyJfb3ZlciI6Il9vdXQiXS5jYWxsKHRoaXMsaSkscyYmImlzb3V0Ij09PXImJihzLmlzb3V0PSExLHMuaXNvdmVyPSEwLHMuX292ZXIuY2FsbChzLGkpKSl9fSl9LGRyYWdTdG9wOmZ1bmN0aW9uKHQsaSl7dC5lbGVtZW50LnBhcmVudHNVbnRpbCgiYm9keSIpLnVuYmluZCgic2Nyb2xsLmRyb3BwYWJsZSIpLHQub3B0aW9ucy5yZWZyZXNoUG9zaXRpb25zfHxlLnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyh0LGkpfX0sZS51aS5kcm9wcGFibGUsZS53aWRnZXQoInVpLnJlc2l6YWJsZSIsZS51aS5tb3VzZSx7dmVyc2lvbjoiMS4xMS40Iix3aWRnZXRFdmVudFByZWZpeDoicmVzaXplIixvcHRpb25zOnthbHNvUmVzaXplOiExLGFuaW1hdGU6ITEsYW5pbWF0ZUR1cmF0aW9uOiJzbG93IixhbmltYXRlRWFzaW5nOiJzd2luZyIsYXNwZWN0UmF0aW86ITEsYXV0b0hpZGU6ITEsY29udGFpbm1lbnQ6ITEsZ2hvc3Q6ITEsZ3JpZDohMSxoYW5kbGVzOiJlLHMsc2UiLGhlbHBlcjohMSxtYXhIZWlnaHQ6bnVsbCxtYXhXaWR0aDpudWxsLG1pbkhlaWdodDoxMCxtaW5XaWR0aDoxMCx6SW5kZXg6OTAscmVzaXplOm51bGwsc3RhcnQ6bnVsbCxzdG9wOm51bGx9LF9udW06ZnVuY3Rpb24oZSl7cmV0dXJuIHBhcnNlSW50KGUsMTApfHwwfSxfaXNOdW1iZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIWlzTmFOKHBhcnNlSW50KGUsMTApKX0sX2hhc1Njcm9sbDpmdW5jdGlvbih0LGkpe2lmKCJoaWRkZW4iPT09ZSh0KS5jc3MoIm92ZXJmbG93IikpcmV0dXJuITE7dmFyIHM9aSYmImxlZnQiPT09aT8ic2Nyb2xsTGVmdCI6InNjcm9sbFRvcCIsbj0hMTtyZXR1cm4gdFtzXT4wPyEwOih0W3NdPTEsbj10W3NdPjAsdFtzXT0wLG4pfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIHQsaSxzLG4sYSxvPXRoaXMscj10aGlzLm9wdGlvbnM7aWYodGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1yZXNpemFibGUiKSxlLmV4dGVuZCh0aGlzLHtfYXNwZWN0UmF0aW86ISFyLmFzcGVjdFJhdGlvLGFzcGVjdFJhdGlvOnIuYXNwZWN0UmF0aW8sb3JpZ2luYWxFbGVtZW50OnRoaXMuZWxlbWVudCxfcHJvcG9ydGlvbmFsbHlSZXNpemVFbGVtZW50czpbXSxfaGVscGVyOnIuaGVscGVyfHxyLmdob3N0fHxyLmFuaW1hdGU/ci5oZWxwZXJ8fCJ1aS1yZXNpemFibGUtaGVscGVyIjpudWxsfSksdGhpcy5lbGVtZW50WzBdLm5vZGVOYW1lLm1hdGNoKC9eKGNhbnZhc3x0ZXh0YXJlYXxpbnB1dHxzZWxlY3R8YnV0dG9ufGltZykkL2kpJiYodGhpcy5lbGVtZW50LndyYXAoZSgiPGRpdiBjbGFzcz0ndWktd3JhcHBlcicgc3R5bGU9J292ZXJmbG93OiBoaWRkZW47Jz48L2Rpdj4iKS5jc3Moe3Bvc2l0aW9uOnRoaXMuZWxlbWVudC5jc3MoInBvc2l0aW9uIiksd2lkdGg6dGhpcy5lbGVtZW50Lm91dGVyV2lkdGgoKSxoZWlnaHQ6dGhpcy5lbGVtZW50Lm91dGVySGVpZ2h0KCksdG9wOnRoaXMuZWxlbWVudC5jc3MoInRvcCIpLGxlZnQ6dGhpcy5lbGVtZW50LmNzcygibGVmdCIpfSkpLHRoaXMuZWxlbWVudD10aGlzLmVsZW1lbnQucGFyZW50KCkuZGF0YSgidWktcmVzaXphYmxlIix0aGlzLmVsZW1lbnQucmVzaXphYmxlKCJpbnN0YW5jZSIpKSx0aGlzLmVsZW1lbnRJc1dyYXBwZXI9ITAsdGhpcy5lbGVtZW50LmNzcyh7bWFyZ2luTGVmdDp0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoIm1hcmdpbkxlZnQiKSxtYXJnaW5Ub3A6dGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKCJtYXJnaW5Ub3AiKSxtYXJnaW5SaWdodDp0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoIm1hcmdpblJpZ2h0IiksbWFyZ2luQm90dG9tOnRoaXMub3JpZ2luYWxFbGVtZW50LmNzcygibWFyZ2luQm90dG9tIil9KSx0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3Moe21hcmdpbkxlZnQ6MCxtYXJnaW5Ub3A6MCxtYXJnaW5SaWdodDowLG1hcmdpbkJvdHRvbTowfSksdGhpcy5vcmlnaW5hbFJlc2l6ZVN0eWxlPXRoaXMub3JpZ2luYWxFbGVtZW50LmNzcygicmVzaXplIiksdGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKCJyZXNpemUiLCJub25lIiksdGhpcy5fcHJvcG9ydGlvbmFsbHlSZXNpemVFbGVtZW50cy5wdXNoKHRoaXMub3JpZ2luYWxFbGVtZW50LmNzcyh7cG9zaXRpb246InN0YXRpYyIsem9vbToxLGRpc3BsYXk6ImJsb2NrIn0pKSx0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3Moe21hcmdpbjp0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoIm1hcmdpbiIpfSksdGhpcy5fcHJvcG9ydGlvbmFsbHlSZXNpemUoKSksdGhpcy5oYW5kbGVzPXIuaGFuZGxlc3x8KGUoIi51aS1yZXNpemFibGUtaGFuZGxlIix0aGlzLmVsZW1lbnQpLmxlbmd0aD97bjoiLnVpLXJlc2l6YWJsZS1uIixlOiIudWktcmVzaXphYmxlLWUiLHM6Ii51aS1yZXNpemFibGUtcyIsdzoiLnVpLXJlc2l6YWJsZS13IixzZToiLnVpLXJlc2l6YWJsZS1zZSIsc3c6Ii51aS1yZXNpemFibGUtc3ciLG5lOiIudWktcmVzaXphYmxlLW5lIixudzoiLnVpLXJlc2l6YWJsZS1udyJ9OiJlLHMsc2UiKSx0aGlzLl9oYW5kbGVzPWUoKSx0aGlzLmhhbmRsZXMuY29uc3RydWN0b3I9PT1TdHJpbmcpZm9yKCJhbGwiPT09dGhpcy5oYW5kbGVzJiYodGhpcy5oYW5kbGVzPSJuLGUscyx3LHNlLHN3LG5lLG53IiksdD10aGlzLmhhbmRsZXMuc3BsaXQoIiwiKSx0aGlzLmhhbmRsZXM9e30saT0wO3QubGVuZ3RoPmk7aSsrKXM9ZS50cmltKHRbaV0pLGE9InVpLXJlc2l6YWJsZS0iK3Msbj1lKCI8ZGl2IGNsYXNzPSd1aS1yZXNpemFibGUtaGFuZGxlICIrYSsiJz48L2Rpdj4iKSxuLmNzcyh7ekluZGV4OnIuekluZGV4fSksInNlIj09PXMmJm4uYWRkQ2xhc3MoInVpLWljb24gdWktaWNvbi1ncmlwc21hbGwtZGlhZ29uYWwtc2UiKSx0aGlzLmhhbmRsZXNbc109Ii51aS1yZXNpemFibGUtIitzLHRoaXMuZWxlbWVudC5hcHBlbmQobik7dGhpcy5fcmVuZGVyQXhpcz1mdW5jdGlvbih0KXt2YXIgaSxzLG4sYTt0PXR8fHRoaXMuZWxlbWVudDtmb3IoaSBpbiB0aGlzLmhhbmRsZXMpdGhpcy5oYW5kbGVzW2ldLmNvbnN0cnVjdG9yPT09U3RyaW5nP3RoaXMuaGFuZGxlc1tpXT10aGlzLmVsZW1lbnQuY2hpbGRyZW4odGhpcy5oYW5kbGVzW2ldKS5maXJzdCgpLnNob3coKToodGhpcy5oYW5kbGVzW2ldLmpxdWVyeXx8dGhpcy5oYW5kbGVzW2ldLm5vZGVUeXBlKSYmKHRoaXMuaGFuZGxlc1tpXT1lKHRoaXMuaGFuZGxlc1tpXSksdGhpcy5fb24odGhpcy5oYW5kbGVzW2ldLHttb3VzZWRvd246by5fbW91c2VEb3dufSkpLHRoaXMuZWxlbWVudElzV3JhcHBlciYmdGhpcy5vcmlnaW5hbEVsZW1lbnRbMF0ubm9kZU5hbWUubWF0Y2goL14odGV4dGFyZWF8aW5wdXR8c2VsZWN0fGJ1dHRvbikkL2kpJiYocz1lKHRoaXMuaGFuZGxlc1tpXSx0aGlzLmVsZW1lbnQpLGE9L3N3fG5lfG53fHNlfG58cy8udGVzdChpKT9zLm91dGVySGVpZ2h0KCk6cy5vdXRlcldpZHRoKCksbj1bInBhZGRpbmciLC9uZXxud3xuLy50ZXN0KGkpPyJUb3AiOi9zZXxzd3xzLy50ZXN0KGkpPyJCb3R0b20iOi9eZSQvLnRlc3QoaSk/IlJpZ2h0IjoiTGVmdCJdLmpvaW4oIiIpLHQuY3NzKG4sYSksdGhpcy5fcHJvcG9ydGlvbmFsbHlSZXNpemUoKSksdGhpcy5faGFuZGxlcz10aGlzLl9oYW5kbGVzLmFkZCh0aGlzLmhhbmRsZXNbaV0pfSx0aGlzLl9yZW5kZXJBeGlzKHRoaXMuZWxlbWVudCksdGhpcy5faGFuZGxlcz10aGlzLl9oYW5kbGVzLmFkZCh0aGlzLmVsZW1lbnQuZmluZCgiLnVpLXJlc2l6YWJsZS1oYW5kbGUiKSksdGhpcy5faGFuZGxlcy5kaXNhYmxlU2VsZWN0aW9uKCksdGhpcy5faGFuZGxlcy5tb3VzZW92ZXIoZnVuY3Rpb24oKXtvLnJlc2l6aW5nfHwodGhpcy5jbGFzc05hbWUmJihuPXRoaXMuY2xhc3NOYW1lLm1hdGNoKC91aS1yZXNpemFibGUtKHNlfHN3fG5lfG53fG58ZXxzfHcpL2kpKSxvLmF4aXM9biYmblsxXT9uWzFdOiJzZSIpfSksci5hdXRvSGlkZSYmKHRoaXMuX2hhbmRsZXMuaGlkZSgpLGUodGhpcy5lbGVtZW50KS5hZGRDbGFzcygidWktcmVzaXphYmxlLWF1dG9oaWRlIikubW91c2VlbnRlcihmdW5jdGlvbigpe3IuZGlzYWJsZWR8fChlKHRoaXMpLnJlbW92ZUNsYXNzKCJ1aS1yZXNpemFibGUtYXV0b2hpZGUiKSxvLl9oYW5kbGVzLnNob3coKSl9KS5tb3VzZWxlYXZlKGZ1bmN0aW9uKCl7ci5kaXNhYmxlZHx8by5yZXNpemluZ3x8KGUodGhpcykuYWRkQ2xhc3MoInVpLXJlc2l6YWJsZS1hdXRvaGlkZSIpLG8uX2hhbmRsZXMuaGlkZSgpKX0pKSx0aGlzLl9tb3VzZUluaXQoKX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLl9tb3VzZURlc3Ryb3koKTt2YXIgdCxpPWZ1bmN0aW9uKHQpe2UodCkucmVtb3ZlQ2xhc3MoInVpLXJlc2l6YWJsZSB1aS1yZXNpemFibGUtZGlzYWJsZWQgdWktcmVzaXphYmxlLXJlc2l6aW5nIikucmVtb3ZlRGF0YSgicmVzaXphYmxlIikucmVtb3ZlRGF0YSgidWktcmVzaXphYmxlIikudW5iaW5kKCIucmVzaXphYmxlIikuZmluZCgiLnVpLXJlc2l6YWJsZS1oYW5kbGUiKS5yZW1vdmUoKX07cmV0dXJuIHRoaXMuZWxlbWVudElzV3JhcHBlciYmKGkodGhpcy5lbGVtZW50KSx0PXRoaXMuZWxlbWVudCx0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3Moe3Bvc2l0aW9uOnQuY3NzKCJwb3NpdGlvbiIpLHdpZHRoOnQub3V0ZXJXaWR0aCgpLGhlaWdodDp0Lm91dGVySGVpZ2h0KCksdG9wOnQuY3NzKCJ0b3AiKSxsZWZ0OnQuY3NzKCJsZWZ0Iil9KS5pbnNlcnRBZnRlcih0KSx0LnJlbW92ZSgpKSx0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoInJlc2l6ZSIsdGhpcy5vcmlnaW5hbFJlc2l6ZVN0eWxlKSxpKHRoaXMub3JpZ2luYWxFbGVtZW50KSx0aGlzfSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKHQpe3ZhciBpLHMsbj0hMTtmb3IoaSBpbiB0aGlzLmhhbmRsZXMpcz1lKHRoaXMuaGFuZGxlc1tpXSlbMF0sKHM9PT10LnRhcmdldHx8ZS5jb250YWlucyhzLHQudGFyZ2V0KSkmJihuPSEwKTtyZXR1cm4hdGhpcy5vcHRpb25zLmRpc2FibGVkJiZufSxfbW91c2VTdGFydDpmdW5jdGlvbih0KXt2YXIgaSxzLG4sYT10aGlzLm9wdGlvbnMsbz10aGlzLmVsZW1lbnQ7cmV0dXJuIHRoaXMucmVzaXppbmc9ITAsdGhpcy5fcmVuZGVyUHJveHkoKSxpPXRoaXMuX251bSh0aGlzLmhlbHBlci5jc3MoImxlZnQiKSkscz10aGlzLl9udW0odGhpcy5oZWxwZXIuY3NzKCJ0b3AiKSksYS5jb250YWlubWVudCYmKGkrPWUoYS5jb250YWlubWVudCkuc2Nyb2xsTGVmdCgpfHwwLHMrPWUoYS5jb250YWlubWVudCkuc2Nyb2xsVG9wKCl8fDApLHRoaXMub2Zmc2V0PXRoaXMuaGVscGVyLm9mZnNldCgpLHRoaXMucG9zaXRpb249e2xlZnQ6aSx0b3A6c30sdGhpcy5zaXplPXRoaXMuX2hlbHBlcj97d2lkdGg6dGhpcy5oZWxwZXIud2lkdGgoKSxoZWlnaHQ6dGhpcy5oZWxwZXIuaGVpZ2h0KCl9Ont3aWR0aDpvLndpZHRoKCksaGVpZ2h0Om8uaGVpZ2h0KCl9LHRoaXMub3JpZ2luYWxTaXplPXRoaXMuX2hlbHBlcj97d2lkdGg6by5vdXRlcldpZHRoKCksaGVpZ2h0Om8ub3V0ZXJIZWlnaHQoKX06e3dpZHRoOm8ud2lkdGgoKSxoZWlnaHQ6by5oZWlnaHQoKX0sdGhpcy5zaXplRGlmZj17d2lkdGg6by5vdXRlcldpZHRoKCktby53aWR0aCgpLGhlaWdodDpvLm91dGVySGVpZ2h0KCktby5oZWlnaHQoKX0sdGhpcy5vcmlnaW5hbFBvc2l0aW9uPXtsZWZ0OmksdG9wOnN9LHRoaXMub3JpZ2luYWxNb3VzZVBvc2l0aW9uPXtsZWZ0OnQucGFnZVgsdG9wOnQucGFnZVl9LHRoaXMuYXNwZWN0UmF0aW89Im51bWJlciI9PXR5cGVvZiBhLmFzcGVjdFJhdGlvP2EuYXNwZWN0UmF0aW86dGhpcy5vcmlnaW5hbFNpemUud2lkdGgvdGhpcy5vcmlnaW5hbFNpemUuaGVpZ2h0fHwxLG49ZSgiLnVpLXJlc2l6YWJsZS0iK3RoaXMuYXhpcykuY3NzKCJjdXJzb3IiKSxlKCJib2R5IikuY3NzKCJjdXJzb3IiLCJhdXRvIj09PW4/dGhpcy5heGlzKyItcmVzaXplIjpuKSxvLmFkZENsYXNzKCJ1aS1yZXNpemFibGUtcmVzaXppbmciKSx0aGlzLl9wcm9wYWdhdGUoInN0YXJ0Iix0KSwhMH0sX21vdXNlRHJhZzpmdW5jdGlvbih0KXt2YXIgaSxzLG49dGhpcy5vcmlnaW5hbE1vdXNlUG9zaXRpb24sYT10aGlzLmF4aXMsbz10LnBhZ2VYLW4ubGVmdHx8MCxyPXQucGFnZVktbi50b3B8fDAsaD10aGlzLl9jaGFuZ2VbYV07cmV0dXJuIHRoaXMuX3VwZGF0ZVByZXZQcm9wZXJ0aWVzKCksaD8oaT1oLmFwcGx5KHRoaXMsW3QsbyxyXSksdGhpcy5fdXBkYXRlVmlydHVhbEJvdW5kYXJpZXModC5zaGlmdEtleSksKHRoaXMuX2FzcGVjdFJhdGlvfHx0LnNoaWZ0S2V5KSYmKGk9dGhpcy5fdXBkYXRlUmF0aW8oaSx0KSksaT10aGlzLl9yZXNwZWN0U2l6ZShpLHQpLHRoaXMuX3VwZGF0ZUNhY2hlKGkpLHRoaXMuX3Byb3BhZ2F0ZSgicmVzaXplIix0KSxzPXRoaXMuX2FwcGx5Q2hhbmdlcygpLCF0aGlzLl9oZWxwZXImJnRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplRWxlbWVudHMubGVuZ3RoJiZ0aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZSgpLGUuaXNFbXB0eU9iamVjdChzKXx8KHRoaXMuX3VwZGF0ZVByZXZQcm9wZXJ0aWVzKCksdGhpcy5fdHJpZ2dlcigicmVzaXplIix0LHRoaXMudWkoKSksdGhpcy5fYXBwbHlDaGFuZ2VzKCkpLCExKTohMX0sX21vdXNlU3RvcDpmdW5jdGlvbih0KXt0aGlzLnJlc2l6aW5nPSExO3ZhciBpLHMsbixhLG8scixoLGw9dGhpcy5vcHRpb25zLHU9dGhpcztyZXR1cm4gdGhpcy5faGVscGVyJiYoaT10aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzLHM9aS5sZW5ndGgmJi90ZXh0YXJlYS9pLnRlc3QoaVswXS5ub2RlTmFtZSksbj1zJiZ0aGlzLl9oYXNTY3JvbGwoaVswXSwibGVmdCIpPzA6dS5zaXplRGlmZi5oZWlnaHQsYT1zPzA6dS5zaXplRGlmZi53aWR0aCxvPXt3aWR0aDp1LmhlbHBlci53aWR0aCgpLWEsaGVpZ2h0OnUuaGVscGVyLmhlaWdodCgpLW59LHI9cGFyc2VJbnQodS5lbGVtZW50LmNzcygibGVmdCIpLDEwKSsodS5wb3NpdGlvbi5sZWZ0LXUub3JpZ2luYWxQb3NpdGlvbi5sZWZ0KXx8bnVsbCxoPXBhcnNlSW50KHUuZWxlbWVudC5jc3MoInRvcCIpLDEwKSsodS5wb3NpdGlvbi50b3AtdS5vcmlnaW5hbFBvc2l0aW9uLnRvcCl8fG51bGwsbC5hbmltYXRlfHx0aGlzLmVsZW1lbnQuY3NzKGUuZXh0ZW5kKG8se3RvcDpoLGxlZnQ6cn0pKSx1LmhlbHBlci5oZWlnaHQodS5zaXplLmhlaWdodCksdS5oZWxwZXIud2lkdGgodS5zaXplLndpZHRoKSx0aGlzLl9oZWxwZXImJiFsLmFuaW1hdGUmJnRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplKCkpLGUoImJvZHkiKS5jc3MoImN1cnNvciIsImF1dG8iKSx0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXJlc2l6YWJsZS1yZXNpemluZyIpLHRoaXMuX3Byb3BhZ2F0ZSgic3RvcCIsdCksdGhpcy5faGVscGVyJiZ0aGlzLmhlbHBlci5yZW1vdmUoKSwhMX0sX3VwZGF0ZVByZXZQcm9wZXJ0aWVzOmZ1bmN0aW9uKCl7dGhpcy5wcmV2UG9zaXRpb249e3RvcDp0aGlzLnBvc2l0aW9uLnRvcCxsZWZ0OnRoaXMucG9zaXRpb24ubGVmdH0sdGhpcy5wcmV2U2l6ZT17d2lkdGg6dGhpcy5zaXplLndpZHRoLGhlaWdodDp0aGlzLnNpemUuaGVpZ2h0fX0sX2FwcGx5Q2hhbmdlczpmdW5jdGlvbigpe3ZhciBlPXt9O3JldHVybiB0aGlzLnBvc2l0aW9uLnRvcCE9PXRoaXMucHJldlBvc2l0aW9uLnRvcCYmKGUudG9wPXRoaXMucG9zaXRpb24udG9wKyJweCIpLHRoaXMucG9zaXRpb24ubGVmdCE9PXRoaXMucHJldlBvc2l0aW9uLmxlZnQmJihlLmxlZnQ9dGhpcy5wb3NpdGlvbi5sZWZ0KyJweCIpLHRoaXMuc2l6ZS53aWR0aCE9PXRoaXMucHJldlNpemUud2lkdGgmJihlLndpZHRoPXRoaXMuc2l6ZS53aWR0aCsicHgiKSx0aGlzLnNpemUuaGVpZ2h0IT09dGhpcy5wcmV2U2l6ZS5oZWlnaHQmJihlLmhlaWdodD10aGlzLnNpemUuaGVpZ2h0KyJweCIpLHRoaXMuaGVscGVyLmNzcyhlKSxlfSxfdXBkYXRlVmlydHVhbEJvdW5kYXJpZXM6ZnVuY3Rpb24oZSl7dmFyIHQsaSxzLG4sYSxvPXRoaXMub3B0aW9uczthPXttaW5XaWR0aDp0aGlzLl9pc051bWJlcihvLm1pbldpZHRoKT9vLm1pbldpZHRoOjAsbWF4V2lkdGg6dGhpcy5faXNOdW1iZXIoby5tYXhXaWR0aCk/by5tYXhXaWR0aDoxLzAsbWluSGVpZ2h0OnRoaXMuX2lzTnVtYmVyKG8ubWluSGVpZ2h0KT9vLm1pbkhlaWdodDowLG1heEhlaWdodDp0aGlzLl9pc051bWJlcihvLm1heEhlaWdodCk/by5tYXhIZWlnaHQ6MS8wfSwodGhpcy5fYXNwZWN0UmF0aW98fGUpJiYodD1hLm1pbkhlaWdodCp0aGlzLmFzcGVjdFJhdGlvLHM9YS5taW5XaWR0aC90aGlzLmFzcGVjdFJhdGlvLGk9YS5tYXhIZWlnaHQqdGhpcy5hc3BlY3RSYXRpbyxuPWEubWF4V2lkdGgvdGhpcy5hc3BlY3RSYXRpbyx0PmEubWluV2lkdGgmJihhLm1pbldpZHRoPXQpLHM+YS5taW5IZWlnaHQmJihhLm1pbkhlaWdodD1zKSxhLm1heFdpZHRoPmkmJihhLm1heFdpZHRoPWkpLGEubWF4SGVpZ2h0Pm4mJihhLm1heEhlaWdodD1uKSksdGhpcy5fdkJvdW5kYXJpZXM9YX0sX3VwZGF0ZUNhY2hlOmZ1bmN0aW9uKGUpe3RoaXMub2Zmc2V0PXRoaXMuaGVscGVyLm9mZnNldCgpLHRoaXMuX2lzTnVtYmVyKGUubGVmdCkmJih0aGlzLnBvc2l0aW9uLmxlZnQ9ZS5sZWZ0KSx0aGlzLl9pc051bWJlcihlLnRvcCkmJih0aGlzLnBvc2l0aW9uLnRvcD1lLnRvcCksdGhpcy5faXNOdW1iZXIoZS5oZWlnaHQpJiYodGhpcy5zaXplLmhlaWdodD1lLmhlaWdodCksdGhpcy5faXNOdW1iZXIoZS53aWR0aCkmJih0aGlzLnNpemUud2lkdGg9ZS53aWR0aCl9LF91cGRhdGVSYXRpbzpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnBvc2l0aW9uLGk9dGhpcy5zaXplLHM9dGhpcy5heGlzO3JldHVybiB0aGlzLl9pc051bWJlcihlLmhlaWdodCk/ZS53aWR0aD1lLmhlaWdodCp0aGlzLmFzcGVjdFJhdGlvOnRoaXMuX2lzTnVtYmVyKGUud2lkdGgpJiYoZS5oZWlnaHQ9ZS53aWR0aC90aGlzLmFzcGVjdFJhdGlvKSwic3ciPT09cyYmKGUubGVmdD10LmxlZnQrKGkud2lkdGgtZS53aWR0aCksZS50b3A9bnVsbCksIm53Ij09PXMmJihlLnRvcD10LnRvcCsoaS5oZWlnaHQtZS5oZWlnaHQpLGUubGVmdD10LmxlZnQrKGkud2lkdGgtZS53aWR0aCkpLGV9LF9yZXNwZWN0U2l6ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl92Qm91bmRhcmllcyxpPXRoaXMuYXhpcyxzPXRoaXMuX2lzTnVtYmVyKGUud2lkdGgpJiZ0Lm1heFdpZHRoJiZ0Lm1heFdpZHRoPGUud2lkdGgsbj10aGlzLl9pc051bWJlcihlLmhlaWdodCkmJnQubWF4SGVpZ2h0JiZ0Lm1heEhlaWdodDxlLmhlaWdodCxhPXRoaXMuX2lzTnVtYmVyKGUud2lkdGgpJiZ0Lm1pbldpZHRoJiZ0Lm1pbldpZHRoPmUud2lkdGgsbz10aGlzLl9pc051bWJlcihlLmhlaWdodCkmJnQubWluSGVpZ2h0JiZ0Lm1pbkhlaWdodD5lLmhlaWdodCxyPXRoaXMub3JpZ2luYWxQb3NpdGlvbi5sZWZ0K3RoaXMub3JpZ2luYWxTaXplLndpZHRoLGg9dGhpcy5wb3NpdGlvbi50b3ArdGhpcy5zaXplLmhlaWdodCxsPS9zd3xud3x3Ly50ZXN0KGkpLHU9L253fG5lfG4vLnRlc3QoaSk7cmV0dXJuIGEmJihlLndpZHRoPXQubWluV2lkdGgpLG8mJihlLmhlaWdodD10Lm1pbkhlaWdodCkscyYmKGUud2lkdGg9dC5tYXhXaWR0aCksbiYmKGUuaGVpZ2h0PXQubWF4SGVpZ2h0KSxhJiZsJiYoZS5sZWZ0PXItdC5taW5XaWR0aCkscyYmbCYmKGUubGVmdD1yLXQubWF4V2lkdGgpLG8mJnUmJihlLnRvcD1oLXQubWluSGVpZ2h0KSxuJiZ1JiYoZS50b3A9aC10Lm1heEhlaWdodCksZS53aWR0aHx8ZS5oZWlnaHR8fGUubGVmdHx8IWUudG9wP2Uud2lkdGh8fGUuaGVpZ2h0fHxlLnRvcHx8IWUubGVmdHx8KGUubGVmdD1udWxsKTplLnRvcD1udWxsLGV9LF9nZXRQYWRkaW5nUGx1c0JvcmRlckRpbWVuc2lvbnM6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsaT1bXSxzPVtlLmNzcygiYm9yZGVyVG9wV2lkdGgiKSxlLmNzcygiYm9yZGVyUmlnaHRXaWR0aCIpLGUuY3NzKCJib3JkZXJCb3R0b21XaWR0aCIpLGUuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKV0sbj1bZS5jc3MoInBhZGRpbmdUb3AiKSxlLmNzcygicGFkZGluZ1JpZ2h0IiksZS5jc3MoInBhZGRpbmdCb3R0b20iKSxlLmNzcygicGFkZGluZ0xlZnQiKV07ND50O3QrKylpW3RdPXBhcnNlSW50KHNbdF0sMTApfHwwLGlbdF0rPXBhcnNlSW50KG5bdF0sMTApfHwwO3JldHVybntoZWlnaHQ6aVswXStpWzJdLHdpZHRoOmlbMV0raVszXX19LF9wcm9wb3J0aW9uYWxseVJlc2l6ZTpmdW5jdGlvbigpe2lmKHRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplRWxlbWVudHMubGVuZ3RoKWZvcih2YXIgZSx0PTAsaT10aGlzLmhlbHBlcnx8dGhpcy5lbGVtZW50O3RoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplRWxlbWVudHMubGVuZ3RoPnQ7dCsrKWU9dGhpcy5fcHJvcG9ydGlvbmFsbHlSZXNpemVFbGVtZW50c1t0XSx0aGlzLm91dGVyRGltZW5zaW9uc3x8KHRoaXMub3V0ZXJEaW1lbnNpb25zPXRoaXMuX2dldFBhZGRpbmdQbHVzQm9yZGVyRGltZW5zaW9ucyhlKSksZS5jc3Moe2hlaWdodDppLmhlaWdodCgpLXRoaXMub3V0ZXJEaW1lbnNpb25zLmhlaWdodHx8MCx3aWR0aDppLndpZHRoKCktdGhpcy5vdXRlckRpbWVuc2lvbnMud2lkdGh8fDB9KX0sX3JlbmRlclByb3h5OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbGVtZW50LGk9dGhpcy5vcHRpb25zO3RoaXMuZWxlbWVudE9mZnNldD10Lm9mZnNldCgpLHRoaXMuX2hlbHBlcj8odGhpcy5oZWxwZXI9dGhpcy5oZWxwZXJ8fGUoIjxkaXYgc3R5bGU9J292ZXJmbG93OmhpZGRlbjsnPjwvZGl2PiIpLHRoaXMuaGVscGVyLmFkZENsYXNzKHRoaXMuX2hlbHBlcikuY3NzKHt3aWR0aDp0aGlzLmVsZW1lbnQub3V0ZXJXaWR0aCgpLTEsaGVpZ2h0OnRoaXMuZWxlbWVudC5vdXRlckhlaWdodCgpLTEscG9zaXRpb246ImFic29sdXRlIixsZWZ0OnRoaXMuZWxlbWVudE9mZnNldC5sZWZ0KyJweCIsdG9wOnRoaXMuZWxlbWVudE9mZnNldC50b3ArInB4Iix6SW5kZXg6KytpLnpJbmRleH0pLHRoaXMuaGVscGVyLmFwcGVuZFRvKCJib2R5IikuZGlzYWJsZVNlbGVjdGlvbigpKTp0aGlzLmhlbHBlcj10aGlzLmVsZW1lbnR9LF9jaGFuZ2U6e2U6ZnVuY3Rpb24oZSx0KXtyZXR1cm57d2lkdGg6dGhpcy5vcmlnaW5hbFNpemUud2lkdGgrdH19LHc6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLm9yaWdpbmFsU2l6ZSxzPXRoaXMub3JpZ2luYWxQb3NpdGlvbjtyZXR1cm57bGVmdDpzLmxlZnQrdCx3aWR0aDppLndpZHRoLXR9fSxuOmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz10aGlzLm9yaWdpbmFsU2l6ZSxuPXRoaXMub3JpZ2luYWxQb3NpdGlvbjtyZXR1cm57dG9wOm4udG9wK2ksaGVpZ2h0OnMuaGVpZ2h0LWl9fSxzOmZ1bmN0aW9uKGUsdCxpKXtyZXR1cm57aGVpZ2h0OnRoaXMub3JpZ2luYWxTaXplLmhlaWdodCtpfX0sc2U6ZnVuY3Rpb24odCxpLHMpe3JldHVybiBlLmV4dGVuZCh0aGlzLl9jaGFuZ2Uucy5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5fY2hhbmdlLmUuYXBwbHkodGhpcyxbdCxpLHNdKSl9LHN3OmZ1bmN0aW9uKHQsaSxzKXtyZXR1cm4gZS5leHRlbmQodGhpcy5fY2hhbmdlLnMuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX2NoYW5nZS53LmFwcGx5KHRoaXMsW3QsaSxzXSkpfSxuZTpmdW5jdGlvbih0LGkscyl7cmV0dXJuIGUuZXh0ZW5kKHRoaXMuX2NoYW5nZS5uLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9jaGFuZ2UuZS5hcHBseSh0aGlzLFt0LGksc10pKX0sbnc6ZnVuY3Rpb24odCxpLHMpe3JldHVybiBlLmV4dGVuZCh0aGlzLl9jaGFuZ2Uubi5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5fY2hhbmdlLncuYXBwbHkodGhpcyxbdCxpLHNdKSl9fSxfcHJvcGFnYXRlOmZ1bmN0aW9uKHQsaSl7ZS51aS5wbHVnaW4uY2FsbCh0aGlzLHQsW2ksdGhpcy51aSgpXSksInJlc2l6ZSIhPT10JiZ0aGlzLl90cmlnZ2VyKHQsaSx0aGlzLnVpKCkpfSxwbHVnaW5zOnt9LHVpOmZ1bmN0aW9uKCl7cmV0dXJue29yaWdpbmFsRWxlbWVudDp0aGlzLm9yaWdpbmFsRWxlbWVudCxlbGVtZW50OnRoaXMuZWxlbWVudCxoZWxwZXI6dGhpcy5oZWxwZXIscG9zaXRpb246dGhpcy5wb3NpdGlvbixzaXplOnRoaXMuc2l6ZSxvcmlnaW5hbFNpemU6dGhpcy5vcmlnaW5hbFNpemUsb3JpZ2luYWxQb3NpdGlvbjp0aGlzLm9yaWdpbmFsUG9zaXRpb259fX0pLGUudWkucGx1Z2luLmFkZCgicmVzaXphYmxlIiwiYW5pbWF0ZSIse3N0b3A6ZnVuY3Rpb24odCl7dmFyIGk9ZSh0aGlzKS5yZXNpemFibGUoImluc3RhbmNlIikscz1pLm9wdGlvbnMsbj1pLl9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzLGE9bi5sZW5ndGgmJi90ZXh0YXJlYS9pLnRlc3QoblswXS5ub2RlTmFtZSksbz1hJiZpLl9oYXNTY3JvbGwoblswXSwibGVmdCIpPzA6aS5zaXplRGlmZi5oZWlnaHQscj1hPzA6aS5zaXplRGlmZi53aWR0aCxoPXt3aWR0aDppLnNpemUud2lkdGgtcixoZWlnaHQ6aS5zaXplLmhlaWdodC1vfSxsPXBhcnNlSW50KGkuZWxlbWVudC5jc3MoImxlZnQiKSwxMCkrKGkucG9zaXRpb24ubGVmdC1pLm9yaWdpbmFsUG9zaXRpb24ubGVmdCl8fG51bGwsdT1wYXJzZUludChpLmVsZW1lbnQuY3NzKCJ0b3AiKSwxMCkrKGkucG9zaXRpb24udG9wLWkub3JpZ2luYWxQb3NpdGlvbi50b3ApfHxudWxsO2kuZWxlbWVudC5hbmltYXRlKGUuZXh0ZW5kKGgsdSYmbD97dG9wOnUsbGVmdDpsfTp7fSkse2R1cmF0aW9uOnMuYW5pbWF0ZUR1cmF0aW9uLGVhc2luZzpzLmFuaW1hdGVFYXNpbmcsc3RlcDpmdW5jdGlvbigpe3ZhciBzPXt3aWR0aDpwYXJzZUludChpLmVsZW1lbnQuY3NzKCJ3aWR0aCIpLDEwKSxoZWlnaHQ6cGFyc2VJbnQoaS5lbGVtZW50LmNzcygiaGVpZ2h0IiksMTApLHRvcDpwYXJzZUludChpLmVsZW1lbnQuY3NzKCJ0b3AiKSwxMCksbGVmdDpwYXJzZUludChpLmVsZW1lbnQuY3NzKCJsZWZ0IiksMTApfTtuJiZuLmxlbmd0aCYmZShuWzBdKS5jc3Moe3dpZHRoOnMud2lkdGgsaGVpZ2h0OnMuaGVpZ2h0fSksaS5fdXBkYXRlQ2FjaGUocyksaS5fcHJvcGFnYXRlKCJyZXNpemUiLHQpfX0pfX0pLGUudWkucGx1Z2luLmFkZCgicmVzaXphYmxlIiwiY29udGFpbm1lbnQiLHtzdGFydDpmdW5jdGlvbigpe3ZhciB0LGkscyxuLGEsbyxyLGg9ZSh0aGlzKS5yZXNpemFibGUoImluc3RhbmNlIiksbD1oLm9wdGlvbnMsdT1oLmVsZW1lbnQsZD1sLmNvbnRhaW5tZW50LGM9ZCBpbnN0YW5jZW9mIGU/ZC5nZXQoMCk6L3BhcmVudC8udGVzdChkKT91LnBhcmVudCgpLmdldCgwKTpkO2MmJihoLmNvbnRhaW5lckVsZW1lbnQ9ZShjKSwvZG9jdW1lbnQvLnRlc3QoZCl8fGQ9PT1kb2N1bWVudD8oaC5jb250YWluZXJPZmZzZXQ9e2xlZnQ6MCx0b3A6MH0saC5jb250YWluZXJQb3NpdGlvbj17bGVmdDowLHRvcDowfSxoLnBhcmVudERhdGE9e2VsZW1lbnQ6ZShkb2N1bWVudCksbGVmdDowLHRvcDowLHdpZHRoOmUoZG9jdW1lbnQpLndpZHRoKCksaGVpZ2h0OmUoZG9jdW1lbnQpLmhlaWdodCgpfHxkb2N1bWVudC5ib2R5LnBhcmVudE5vZGUuc2Nyb2xsSGVpZ2h0fSk6KHQ9ZShjKSxpPVtdLGUoWyJUb3AiLCJSaWdodCIsIkxlZnQiLCJCb3R0b20iXSkuZWFjaChmdW5jdGlvbihlLHMpe2lbZV09aC5fbnVtKHQuY3NzKCJwYWRkaW5nIitzKSl9KSxoLmNvbnRhaW5lck9mZnNldD10Lm9mZnNldCgpLGguY29udGFpbmVyUG9zaXRpb249dC5wb3NpdGlvbigpLGguY29udGFpbmVyU2l6ZT17aGVpZ2h0OnQuaW5uZXJIZWlnaHQoKS1pWzNdLHdpZHRoOnQuaW5uZXJXaWR0aCgpLWlbMV19LHM9aC5jb250YWluZXJPZmZzZXQsbj1oLmNvbnRhaW5lclNpemUuaGVpZ2h0LGE9aC5jb250YWluZXJTaXplLndpZHRoLG89aC5faGFzU2Nyb2xsKGMsImxlZnQiKT9jLnNjcm9sbFdpZHRoOmEscj1oLl9oYXNTY3JvbGwoYyk/Yy5zY3JvbGxIZWlnaHQ6bixoLnBhcmVudERhdGE9e2VsZW1lbnQ6YyxsZWZ0OnMubGVmdCx0b3A6cy50b3Asd2lkdGg6byxoZWlnaHQ6cn0pKX0scmVzaXplOmZ1bmN0aW9uKHQpe3ZhciBpLHMsbixhLG89ZSh0aGlzKS5yZXNpemFibGUoImluc3RhbmNlIikscj1vLm9wdGlvbnMsaD1vLmNvbnRhaW5lck9mZnNldCxsPW8ucG9zaXRpb24sdT1vLl9hc3BlY3RSYXRpb3x8dC5zaGlmdEtleSxkPXt0b3A6MCxsZWZ0OjB9LGM9by5jb250YWluZXJFbGVtZW50LHA9ITA7Y1swXSE9PWRvY3VtZW50JiYvc3RhdGljLy50ZXN0KGMuY3NzKCJwb3NpdGlvbiIpKSYmKGQ9aCksbC5sZWZ0PChvLl9oZWxwZXI/aC5sZWZ0OjApJiYoby5zaXplLndpZHRoPW8uc2l6ZS53aWR0aCsoby5faGVscGVyP28ucG9zaXRpb24ubGVmdC1oLmxlZnQ6by5wb3NpdGlvbi5sZWZ0LWQubGVmdCksdSYmKG8uc2l6ZS5oZWlnaHQ9by5zaXplLndpZHRoL28uYXNwZWN0UmF0aW8scD0hMSksby5wb3NpdGlvbi5sZWZ0PXIuaGVscGVyP2gubGVmdDowKSxsLnRvcDwoby5faGVscGVyP2gudG9wOjApJiYoby5zaXplLmhlaWdodD1vLnNpemUuaGVpZ2h0KyhvLl9oZWxwZXI/by5wb3NpdGlvbi50b3AtaC50b3A6by5wb3NpdGlvbi50b3ApLHUmJihvLnNpemUud2lkdGg9by5zaXplLmhlaWdodCpvLmFzcGVjdFJhdGlvLHA9ITEpLG8ucG9zaXRpb24udG9wPW8uX2hlbHBlcj9oLnRvcDowKSxuPW8uY29udGFpbmVyRWxlbWVudC5nZXQoMCk9PT1vLmVsZW1lbnQucGFyZW50KCkuZ2V0KDApLGE9L3JlbGF0aXZlfGFic29sdXRlLy50ZXN0KG8uY29udGFpbmVyRWxlbWVudC5jc3MoInBvc2l0aW9uIikpLG4mJmE/KG8ub2Zmc2V0LmxlZnQ9by5wYXJlbnREYXRhLmxlZnQrby5wb3NpdGlvbi5sZWZ0LG8ub2Zmc2V0LnRvcD1vLnBhcmVudERhdGEudG9wK28ucG9zaXRpb24udG9wKTooby5vZmZzZXQubGVmdD1vLmVsZW1lbnQub2Zmc2V0KCkubGVmdCxvLm9mZnNldC50b3A9by5lbGVtZW50Lm9mZnNldCgpLnRvcCksaT1NYXRoLmFicyhvLnNpemVEaWZmLndpZHRoKyhvLl9oZWxwZXI/by5vZmZzZXQubGVmdC1kLmxlZnQ6by5vZmZzZXQubGVmdC1oLmxlZnQpKSxzPU1hdGguYWJzKG8uc2l6ZURpZmYuaGVpZ2h0KyhvLl9oZWxwZXI/by5vZmZzZXQudG9wLWQudG9wOm8ub2Zmc2V0LnRvcC1oLnRvcCkpLGkrby5zaXplLndpZHRoPj1vLnBhcmVudERhdGEud2lkdGgmJihvLnNpemUud2lkdGg9by5wYXJlbnREYXRhLndpZHRoLWksdSYmKG8uc2l6ZS5oZWlnaHQ9by5zaXplLndpZHRoL28uYXNwZWN0UmF0aW8scD0hMSkpLHMrby5zaXplLmhlaWdodD49by5wYXJlbnREYXRhLmhlaWdodCYmKG8uc2l6ZS5oZWlnaHQ9by5wYXJlbnREYXRhLmhlaWdodC1zLHUmJihvLnNpemUud2lkdGg9by5zaXplLmhlaWdodCpvLmFzcGVjdFJhdGlvLHA9ITEpKSxwfHwoby5wb3NpdGlvbi5sZWZ0PW8ucHJldlBvc2l0aW9uLmxlZnQsby5wb3NpdGlvbi50b3A9by5wcmV2UG9zaXRpb24udG9wLG8uc2l6ZS53aWR0aD1vLnByZXZTaXplLndpZHRoLG8uc2l6ZS5oZWlnaHQ9by5wcmV2U2l6ZS5oZWlnaHQpfSxzdG9wOmZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKS5yZXNpemFibGUoImluc3RhbmNlIiksaT10Lm9wdGlvbnMscz10LmNvbnRhaW5lck9mZnNldCxuPXQuY29udGFpbmVyUG9zaXRpb24sYT10LmNvbnRhaW5lckVsZW1lbnQsbz1lKHQuaGVscGVyKSxyPW8ub2Zmc2V0KCksaD1vLm91dGVyV2lkdGgoKS10LnNpemVEaWZmLndpZHRoLGw9by5vdXRlckhlaWdodCgpLXQuc2l6ZURpZmYuaGVpZ2h0O3QuX2hlbHBlciYmIWkuYW5pbWF0ZSYmL3JlbGF0aXZlLy50ZXN0KGEuY3NzKCJwb3NpdGlvbiIpKSYmZSh0aGlzKS5jc3Moe2xlZnQ6ci5sZWZ0LW4ubGVmdC1zLmxlZnQsd2lkdGg6aCxoZWlnaHQ6bH0pLHQuX2hlbHBlciYmIWkuYW5pbWF0ZSYmL3N0YXRpYy8udGVzdChhLmNzcygicG9zaXRpb24iKSkmJmUodGhpcykuY3NzKHtsZWZ0OnIubGVmdC1uLmxlZnQtcy5sZWZ0LHdpZHRoOmgsaGVpZ2h0Omx9KX19KSxlLnVpLnBsdWdpbi5hZGQoInJlc2l6YWJsZSIsImFsc29SZXNpemUiLHtzdGFydDpmdW5jdGlvbigpe3ZhciB0PWUodGhpcykucmVzaXphYmxlKCJpbnN0YW5jZSIpLGk9dC5vcHRpb25zO2UoaS5hbHNvUmVzaXplKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKTt0LmRhdGEoInVpLXJlc2l6YWJsZS1hbHNvcmVzaXplIix7d2lkdGg6cGFyc2VJbnQodC53aWR0aCgpLDEwKSxoZWlnaHQ6cGFyc2VJbnQodC5oZWlnaHQoKSwxMCksbGVmdDpwYXJzZUludCh0LmNzcygibGVmdCIpLDEwKSx0b3A6cGFyc2VJbnQodC5jc3MoInRvcCIpLDEwKX0pfSl9LHJlc2l6ZTpmdW5jdGlvbih0LGkpe3ZhciBzPWUodGhpcykucmVzaXphYmxlKCJpbnN0YW5jZSIpLG49cy5vcHRpb25zLGE9cy5vcmlnaW5hbFNpemUsbz1zLm9yaWdpbmFsUG9zaXRpb24scj17aGVpZ2h0OnMuc2l6ZS5oZWlnaHQtYS5oZWlnaHR8fDAsd2lkdGg6cy5zaXplLndpZHRoLWEud2lkdGh8fDAsdG9wOnMucG9zaXRpb24udG9wLW8udG9wfHwwLGxlZnQ6cy5wb3NpdGlvbi5sZWZ0LW8ubGVmdHx8MH07ZShuLmFsc29SZXNpemUpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLHM9ZSh0aGlzKS5kYXRhKCJ1aS1yZXNpemFibGUtYWxzb3Jlc2l6ZSIpLG49e30sYT10LnBhcmVudHMoaS5vcmlnaW5hbEVsZW1lbnRbMF0pLmxlbmd0aD9bIndpZHRoIiwiaGVpZ2h0Il06WyJ3aWR0aCIsImhlaWdodCIsInRvcCIsImxlZnQiXTtlLmVhY2goYSxmdW5jdGlvbihlLHQpe3ZhciBpPShzW3RdfHwwKSsoclt0XXx8MCk7aSYmaT49MCYmKG5bdF09aXx8bnVsbCl9KSx0LmNzcyhuKX0pfSxzdG9wOmZ1bmN0aW9uKCl7ZSh0aGlzKS5yZW1vdmVEYXRhKCJyZXNpemFibGUtYWxzb3Jlc2l6ZSIpfX0pLGUudWkucGx1Z2luLmFkZCgicmVzaXphYmxlIiwiZ2hvc3QiLHtzdGFydDpmdW5jdGlvbigpe3ZhciB0PWUodGhpcykucmVzaXphYmxlKCJpbnN0YW5jZSIpLGk9dC5vcHRpb25zLHM9dC5zaXplO3QuZ2hvc3Q9dC5vcmlnaW5hbEVsZW1lbnQuY2xvbmUoKSx0Lmdob3N0LmNzcyh7b3BhY2l0eTouMjUsZGlzcGxheToiYmxvY2siLHBvc2l0aW9uOiJyZWxhdGl2ZSIsaGVpZ2h0OnMuaGVpZ2h0LHdpZHRoOnMud2lkdGgsbWFyZ2luOjAsbGVmdDowLHRvcDowfSkuYWRkQ2xhc3MoInVpLXJlc2l6YWJsZS1naG9zdCIpLmFkZENsYXNzKCJzdHJpbmciPT10eXBlb2YgaS5naG9zdD9pLmdob3N0OiIiKSx0Lmdob3N0LmFwcGVuZFRvKHQuaGVscGVyKX0scmVzaXplOmZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKS5yZXNpemFibGUoImluc3RhbmNlIik7dC5naG9zdCYmdC5naG9zdC5jc3Moe3Bvc2l0aW9uOiJyZWxhdGl2ZSIsaGVpZ2h0OnQuc2l6ZS5oZWlnaHQsd2lkdGg6dC5zaXplLndpZHRofSl9LHN0b3A6ZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLnJlc2l6YWJsZSgiaW5zdGFuY2UiKTt0Lmdob3N0JiZ0LmhlbHBlciYmdC5oZWxwZXIuZ2V0KDApLnJlbW92ZUNoaWxkKHQuZ2hvc3QuZ2V0KDApKX19KSxlLnVpLnBsdWdpbi5hZGQoInJlc2l6YWJsZSIsImdyaWQiLHtyZXNpemU6ZnVuY3Rpb24oKXt2YXIgdCxpPWUodGhpcykucmVzaXphYmxlKCJpbnN0YW5jZSIpLHM9aS5vcHRpb25zLG49aS5zaXplLGE9aS5vcmlnaW5hbFNpemUsbz1pLm9yaWdpbmFsUG9zaXRpb24scj1pLmF4aXMsaD0ibnVtYmVyIj09dHlwZW9mIHMuZ3JpZD9bcy5ncmlkLHMuZ3JpZF06cy5ncmlkLGw9aFswXXx8MSx1PWhbMV18fDEsZD1NYXRoLnJvdW5kKChuLndpZHRoLWEud2lkdGgpL2wpKmwsYz1NYXRoLnJvdW5kKChuLmhlaWdodC1hLmhlaWdodCkvdSkqdSxwPWEud2lkdGgrZCxmPWEuaGVpZ2h0K2MsbT1zLm1heFdpZHRoJiZwPnMubWF4V2lkdGgsZz1zLm1heEhlaWdodCYmZj5zLm1heEhlaWdodCx2PXMubWluV2lkdGgmJnMubWluV2lkdGg+cCx5PXMubWluSGVpZ2h0JiZzLm1pbkhlaWdodD5mO3MuZ3JpZD1oLHYmJihwKz1sKSx5JiYoZis9dSksbSYmKHAtPWwpLGcmJihmLT11KSwvXihzZXxzfGUpJC8udGVzdChyKT8oaS5zaXplLndpZHRoPXAsaS5zaXplLmhlaWdodD1mKTovXihuZSkkLy50ZXN0KHIpPyhpLnNpemUud2lkdGg9cCxpLnNpemUuaGVpZ2h0PWYsaS5wb3NpdGlvbi50b3A9by50b3AtYyk6L14oc3cpJC8udGVzdChyKT8oaS5zaXplLndpZHRoPXAsaS5zaXplLmhlaWdodD1mLGkucG9zaXRpb24ubGVmdD1vLmxlZnQtZCk6KCgwPj1mLXV8fDA+PXAtbCkmJih0PWkuX2dldFBhZGRpbmdQbHVzQm9yZGVyRGltZW5zaW9ucyh0aGlzKSksZi11PjA/KGkuc2l6ZS5oZWlnaHQ9ZixpLnBvc2l0aW9uLnRvcD1vLnRvcC1jKTooZj11LXQuaGVpZ2h0LGkuc2l6ZS5oZWlnaHQ9ZixpLnBvc2l0aW9uLnRvcD1vLnRvcCthLmhlaWdodC1mKSxwLWw+MD8oaS5zaXplLndpZHRoPXAsaS5wb3NpdGlvbi5sZWZ0PW8ubGVmdC1kKToocD1sLXQud2lkdGgsaS5zaXplLndpZHRoPXAsaS5wb3NpdGlvbi5sZWZ0PW8ubGVmdCthLndpZHRoLXApKX19KSxlLnVpLnJlc2l6YWJsZSxlLndpZGdldCgidWkuc2VsZWN0YWJsZSIsZS51aS5tb3VzZSx7dmVyc2lvbjoiMS4xMS40IixvcHRpb25zOnthcHBlbmRUbzoiYm9keSIsYXV0b1JlZnJlc2g6ITAsZGlzdGFuY2U6MCxmaWx0ZXI6IioiLHRvbGVyYW5jZToidG91Y2giLHNlbGVjdGVkOm51bGwsc2VsZWN0aW5nOm51bGwsc3RhcnQ6bnVsbCxzdG9wOm51bGwsdW5zZWxlY3RlZDpudWxsLHVuc2VsZWN0aW5nOm51bGx9LF9jcmVhdGU6ZnVuY3Rpb24oKXt2YXIgdCxpPXRoaXM7dGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1zZWxlY3RhYmxlIiksdGhpcy5kcmFnZ2VkPSExLHRoaXMucmVmcmVzaD1mdW5jdGlvbigpe3Q9ZShpLm9wdGlvbnMuZmlsdGVyLGkuZWxlbWVudFswXSksdC5hZGRDbGFzcygidWktc2VsZWN0ZWUiKSx0LmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLGk9dC5vZmZzZXQoKTtlLmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIix7ZWxlbWVudDp0aGlzLCRlbGVtZW50OnQsbGVmdDppLmxlZnQsdG9wOmkudG9wLHJpZ2h0OmkubGVmdCt0Lm91dGVyV2lkdGgoKSxib3R0b206aS50b3ArdC5vdXRlckhlaWdodCgpLHN0YXJ0c2VsZWN0ZWQ6ITEsc2VsZWN0ZWQ6dC5oYXNDbGFzcygidWktc2VsZWN0ZWQiKSxzZWxlY3Rpbmc6dC5oYXNDbGFzcygidWktc2VsZWN0aW5nIiksdW5zZWxlY3Rpbmc6dC5oYXNDbGFzcygidWktdW5zZWxlY3RpbmciKX0pfSl9LHRoaXMucmVmcmVzaCgpLHRoaXMuc2VsZWN0ZWVzPXQuYWRkQ2xhc3MoInVpLXNlbGVjdGVlIiksdGhpcy5fbW91c2VJbml0KCksdGhpcy5oZWxwZXI9ZSgiPGRpdiBjbGFzcz0ndWktc2VsZWN0YWJsZS1oZWxwZXInPjwvZGl2PiIpfSxfZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWVzLnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RlZSIpLnJlbW92ZURhdGEoInNlbGVjdGFibGUtaXRlbSIpLHRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcygidWktc2VsZWN0YWJsZSB1aS1zZWxlY3RhYmxlLWRpc2FibGVkIiksdGhpcy5fbW91c2VEZXN0cm95KCl9LF9tb3VzZVN0YXJ0OmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMscz10aGlzLm9wdGlvbnM7dGhpcy5vcG9zPVt0LnBhZ2VYLHQucGFnZVldLHRoaXMub3B0aW9ucy5kaXNhYmxlZHx8KHRoaXMuc2VsZWN0ZWVzPWUocy5maWx0ZXIsdGhpcy5lbGVtZW50WzBdKSx0aGlzLl90cmlnZ2VyKCJzdGFydCIsdCksZShzLmFwcGVuZFRvKS5hcHBlbmQodGhpcy5oZWxwZXIpLHRoaXMuaGVscGVyLmNzcyh7bGVmdDp0LnBhZ2VYLHRvcDp0LnBhZ2VZLHdpZHRoOjAsaGVpZ2h0OjB9KSxzLmF1dG9SZWZyZXNoJiZ0aGlzLnJlZnJlc2goKSx0aGlzLnNlbGVjdGVlcy5maWx0ZXIoIi51aS1zZWxlY3RlZCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgcz1lLmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIik7cy5zdGFydHNlbGVjdGVkPSEwLHQubWV0YUtleXx8dC5jdHJsS2V5fHwocy4kZWxlbWVudC5yZW1vdmVDbGFzcygidWktc2VsZWN0ZWQiKSxzLnNlbGVjdGVkPSExLHMuJGVsZW1lbnQuYWRkQ2xhc3MoInVpLXVuc2VsZWN0aW5nIikscy51bnNlbGVjdGluZz0hMCxpLl90cmlnZ2VyKCJ1bnNlbGVjdGluZyIsdCx7dW5zZWxlY3Rpbmc6cy5lbGVtZW50fSkpfSksZSh0LnRhcmdldCkucGFyZW50cygpLmFkZEJhY2soKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHMsbj1lLmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIik7cmV0dXJuIG4/KHM9IXQubWV0YUtleSYmIXQuY3RybEtleXx8IW4uJGVsZW1lbnQuaGFzQ2xhc3MoInVpLXNlbGVjdGVkIiksbi4kZWxlbWVudC5yZW1vdmVDbGFzcyhzPyJ1aS11bnNlbGVjdGluZyI6InVpLXNlbGVjdGVkIikuYWRkQ2xhc3Mocz8idWktc2VsZWN0aW5nIjoidWktdW5zZWxlY3RpbmciKSxuLnVuc2VsZWN0aW5nPSFzLG4uc2VsZWN0aW5nPXMsbi5zZWxlY3RlZD1zLHM/aS5fdHJpZ2dlcigic2VsZWN0aW5nIix0LHtzZWxlY3Rpbmc6bi5lbGVtZW50fSk6aS5fdHJpZ2dlcigidW5zZWxlY3RpbmciLHQse3Vuc2VsZWN0aW5nOm4uZWxlbWVudH0pLCExKTp2b2lkIDB9KSl9LF9tb3VzZURyYWc6ZnVuY3Rpb24odCl7aWYodGhpcy5kcmFnZ2VkPSEwLCF0aGlzLm9wdGlvbnMuZGlzYWJsZWQpe3ZhciBpLHM9dGhpcyxuPXRoaXMub3B0aW9ucyxhPXRoaXMub3Bvc1swXSxvPXRoaXMub3Bvc1sxXSxyPXQucGFnZVgsaD10LnBhZ2VZO3JldHVybiBhPnImJihpPXIscj1hLGE9aSksbz5oJiYoaT1oLGg9byxvPWkpLHRoaXMuaGVscGVyLmNzcyh7bGVmdDphLHRvcDpvLHdpZHRoOnItYSxoZWlnaHQ6aC1vfSksdGhpcy5zZWxlY3RlZXMuZWFjaChmdW5jdGlvbigpe3ZhciBpPWUuZGF0YSh0aGlzLCJzZWxlY3RhYmxlLWl0ZW0iKSxsPSExOwppJiZpLmVsZW1lbnQhPT1zLmVsZW1lbnRbMF0mJigidG91Y2giPT09bi50b2xlcmFuY2U/bD0hKGkubGVmdD5yfHxhPmkucmlnaHR8fGkudG9wPmh8fG8+aS5ib3R0b20pOiJmaXQiPT09bi50b2xlcmFuY2UmJihsPWkubGVmdD5hJiZyPmkucmlnaHQmJmkudG9wPm8mJmg+aS5ib3R0b20pLGw/KGkuc2VsZWN0ZWQmJihpLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RlZCIpLGkuc2VsZWN0ZWQ9ITEpLGkudW5zZWxlY3RpbmcmJihpLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS11bnNlbGVjdGluZyIpLGkudW5zZWxlY3Rpbmc9ITEpLGkuc2VsZWN0aW5nfHwoaS4kZWxlbWVudC5hZGRDbGFzcygidWktc2VsZWN0aW5nIiksaS5zZWxlY3Rpbmc9ITAscy5fdHJpZ2dlcigic2VsZWN0aW5nIix0LHtzZWxlY3Rpbmc6aS5lbGVtZW50fSkpKTooaS5zZWxlY3RpbmcmJigodC5tZXRhS2V5fHx0LmN0cmxLZXkpJiZpLnN0YXJ0c2VsZWN0ZWQ/KGkuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXNlbGVjdGluZyIpLGkuc2VsZWN0aW5nPSExLGkuJGVsZW1lbnQuYWRkQ2xhc3MoInVpLXNlbGVjdGVkIiksaS5zZWxlY3RlZD0hMCk6KGkuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXNlbGVjdGluZyIpLGkuc2VsZWN0aW5nPSExLGkuc3RhcnRzZWxlY3RlZCYmKGkuJGVsZW1lbnQuYWRkQ2xhc3MoInVpLXVuc2VsZWN0aW5nIiksaS51bnNlbGVjdGluZz0hMCkscy5fdHJpZ2dlcigidW5zZWxlY3RpbmciLHQse3Vuc2VsZWN0aW5nOmkuZWxlbWVudH0pKSksaS5zZWxlY3RlZCYmKHQubWV0YUtleXx8dC5jdHJsS2V5fHxpLnN0YXJ0c2VsZWN0ZWR8fChpLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RlZCIpLGkuc2VsZWN0ZWQ9ITEsaS4kZWxlbWVudC5hZGRDbGFzcygidWktdW5zZWxlY3RpbmciKSxpLnVuc2VsZWN0aW5nPSEwLHMuX3RyaWdnZXIoInVuc2VsZWN0aW5nIix0LHt1bnNlbGVjdGluZzppLmVsZW1lbnR9KSkpKSl9KSwhMX19LF9tb3VzZVN0b3A6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcztyZXR1cm4gdGhpcy5kcmFnZ2VkPSExLGUoIi51aS11bnNlbGVjdGluZyIsdGhpcy5lbGVtZW50WzBdKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHM9ZS5kYXRhKHRoaXMsInNlbGVjdGFibGUtaXRlbSIpO3MuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXVuc2VsZWN0aW5nIikscy51bnNlbGVjdGluZz0hMSxzLnN0YXJ0c2VsZWN0ZWQ9ITEsaS5fdHJpZ2dlcigidW5zZWxlY3RlZCIsdCx7dW5zZWxlY3RlZDpzLmVsZW1lbnR9KX0pLGUoIi51aS1zZWxlY3RpbmciLHRoaXMuZWxlbWVudFswXSkuZWFjaChmdW5jdGlvbigpe3ZhciBzPWUuZGF0YSh0aGlzLCJzZWxlY3RhYmxlLWl0ZW0iKTtzLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RpbmciKS5hZGRDbGFzcygidWktc2VsZWN0ZWQiKSxzLnNlbGVjdGluZz0hMSxzLnNlbGVjdGVkPSEwLHMuc3RhcnRzZWxlY3RlZD0hMCxpLl90cmlnZ2VyKCJzZWxlY3RlZCIsdCx7c2VsZWN0ZWQ6cy5lbGVtZW50fSl9KSx0aGlzLl90cmlnZ2VyKCJzdG9wIix0KSx0aGlzLmhlbHBlci5yZW1vdmUoKSwhMX19KSxlLndpZGdldCgidWkuc29ydGFibGUiLGUudWkubW91c2Use3ZlcnNpb246IjEuMTEuNCIsd2lkZ2V0RXZlbnRQcmVmaXg6InNvcnQiLHJlYWR5OiExLG9wdGlvbnM6e2FwcGVuZFRvOiJwYXJlbnQiLGF4aXM6ITEsY29ubmVjdFdpdGg6ITEsY29udGFpbm1lbnQ6ITEsY3Vyc29yOiJhdXRvIixjdXJzb3JBdDohMSxkcm9wT25FbXB0eTohMCxmb3JjZVBsYWNlaG9sZGVyU2l6ZTohMSxmb3JjZUhlbHBlclNpemU6ITEsZ3JpZDohMSxoYW5kbGU6ITEsaGVscGVyOiJvcmlnaW5hbCIsaXRlbXM6Ij4gKiIsb3BhY2l0eTohMSxwbGFjZWhvbGRlcjohMSxyZXZlcnQ6ITEsc2Nyb2xsOiEwLHNjcm9sbFNlbnNpdGl2aXR5OjIwLHNjcm9sbFNwZWVkOjIwLHNjb3BlOiJkZWZhdWx0Iix0b2xlcmFuY2U6ImludGVyc2VjdCIsekluZGV4OjFlMyxhY3RpdmF0ZTpudWxsLGJlZm9yZVN0b3A6bnVsbCxjaGFuZ2U6bnVsbCxkZWFjdGl2YXRlOm51bGwsb3V0Om51bGwsb3ZlcjpudWxsLHJlY2VpdmU6bnVsbCxyZW1vdmU6bnVsbCxzb3J0Om51bGwsc3RhcnQ6bnVsbCxzdG9wOm51bGwsdXBkYXRlOm51bGx9LF9pc092ZXJBeGlzOmZ1bmN0aW9uKGUsdCxpKXtyZXR1cm4gZT49dCYmdCtpPmV9LF9pc0Zsb2F0aW5nOmZ1bmN0aW9uKGUpe3JldHVybi9sZWZ0fHJpZ2h0Ly50ZXN0KGUuY3NzKCJmbG9hdCIpKXx8L2lubGluZXx0YWJsZS1jZWxsLy50ZXN0KGUuY3NzKCJkaXNwbGF5IikpfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb250YWluZXJDYWNoZT17fSx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXNvcnRhYmxlIiksdGhpcy5yZWZyZXNoKCksdGhpcy5vZmZzZXQ9dGhpcy5lbGVtZW50Lm9mZnNldCgpLHRoaXMuX21vdXNlSW5pdCgpLHRoaXMuX3NldEhhbmRsZUNsYXNzTmFtZSgpLHRoaXMucmVhZHk9ITB9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXt0aGlzLl9zdXBlcihlLHQpLCJoYW5kbGUiPT09ZSYmdGhpcy5fc2V0SGFuZGxlQ2xhc3NOYW1lKCl9LF9zZXRIYW5kbGVDbGFzc05hbWU6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuZmluZCgiLnVpLXNvcnRhYmxlLWhhbmRsZSIpLnJlbW92ZUNsYXNzKCJ1aS1zb3J0YWJsZS1oYW5kbGUiKSxlLmVhY2godGhpcy5pdGVtcyxmdW5jdGlvbigpeyh0aGlzLmluc3RhbmNlLm9wdGlvbnMuaGFuZGxlP3RoaXMuaXRlbS5maW5kKHRoaXMuaW5zdGFuY2Uub3B0aW9ucy5oYW5kbGUpOnRoaXMuaXRlbSkuYWRkQ2xhc3MoInVpLXNvcnRhYmxlLWhhbmRsZSIpfSl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zb3J0YWJsZSB1aS1zb3J0YWJsZS1kaXNhYmxlZCIpLmZpbmQoIi51aS1zb3J0YWJsZS1oYW5kbGUiKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGFuZGxlIiksdGhpcy5fbW91c2VEZXN0cm95KCk7Zm9yKHZhciBlPXRoaXMuaXRlbXMubGVuZ3RoLTE7ZT49MDtlLS0pdGhpcy5pdGVtc1tlXS5pdGVtLnJlbW92ZURhdGEodGhpcy53aWRnZXROYW1lKyItaXRlbSIpO3JldHVybiB0aGlzfSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKHQsaSl7dmFyIHM9bnVsbCxuPSExLGE9dGhpcztyZXR1cm4gdGhpcy5yZXZlcnRpbmc/ITE6dGhpcy5vcHRpb25zLmRpc2FibGVkfHwic3RhdGljIj09PXRoaXMub3B0aW9ucy50eXBlPyExOih0aGlzLl9yZWZyZXNoSXRlbXModCksZSh0LnRhcmdldCkucGFyZW50cygpLmVhY2goZnVuY3Rpb24oKXtyZXR1cm4gZS5kYXRhKHRoaXMsYS53aWRnZXROYW1lKyItaXRlbSIpPT09YT8ocz1lKHRoaXMpLCExKTp2b2lkIDB9KSxlLmRhdGEodC50YXJnZXQsYS53aWRnZXROYW1lKyItaXRlbSIpPT09YSYmKHM9ZSh0LnRhcmdldCkpLHM/IXRoaXMub3B0aW9ucy5oYW5kbGV8fGl8fChlKHRoaXMub3B0aW9ucy5oYW5kbGUscykuZmluZCgiKiIpLmFkZEJhY2soKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcz09PXQudGFyZ2V0JiYobj0hMCl9KSxuKT8odGhpcy5jdXJyZW50SXRlbT1zLHRoaXMuX3JlbW92ZUN1cnJlbnRzRnJvbUl0ZW1zKCksITApOiExOiExKX0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24odCxpLHMpe3ZhciBuLGEsbz10aGlzLm9wdGlvbnM7aWYodGhpcy5jdXJyZW50Q29udGFpbmVyPXRoaXMsdGhpcy5yZWZyZXNoUG9zaXRpb25zKCksdGhpcy5oZWxwZXI9dGhpcy5fY3JlYXRlSGVscGVyKHQpLHRoaXMuX2NhY2hlSGVscGVyUHJvcG9ydGlvbnMoKSx0aGlzLl9jYWNoZU1hcmdpbnMoKSx0aGlzLnNjcm9sbFBhcmVudD10aGlzLmhlbHBlci5zY3JvbGxQYXJlbnQoKSx0aGlzLm9mZnNldD10aGlzLmN1cnJlbnRJdGVtLm9mZnNldCgpLHRoaXMub2Zmc2V0PXt0b3A6dGhpcy5vZmZzZXQudG9wLXRoaXMubWFyZ2lucy50b3AsbGVmdDp0aGlzLm9mZnNldC5sZWZ0LXRoaXMubWFyZ2lucy5sZWZ0fSxlLmV4dGVuZCh0aGlzLm9mZnNldCx7Y2xpY2s6e2xlZnQ6dC5wYWdlWC10aGlzLm9mZnNldC5sZWZ0LHRvcDp0LnBhZ2VZLXRoaXMub2Zmc2V0LnRvcH0scGFyZW50OnRoaXMuX2dldFBhcmVudE9mZnNldCgpLHJlbGF0aXZlOnRoaXMuX2dldFJlbGF0aXZlT2Zmc2V0KCl9KSx0aGlzLmhlbHBlci5jc3MoInBvc2l0aW9uIiwiYWJzb2x1dGUiKSx0aGlzLmNzc1Bvc2l0aW9uPXRoaXMuaGVscGVyLmNzcygicG9zaXRpb24iKSx0aGlzLm9yaWdpbmFsUG9zaXRpb249dGhpcy5fZ2VuZXJhdGVQb3NpdGlvbih0KSx0aGlzLm9yaWdpbmFsUGFnZVg9dC5wYWdlWCx0aGlzLm9yaWdpbmFsUGFnZVk9dC5wYWdlWSxvLmN1cnNvckF0JiZ0aGlzLl9hZGp1c3RPZmZzZXRGcm9tSGVscGVyKG8uY3Vyc29yQXQpLHRoaXMuZG9tUG9zaXRpb249e3ByZXY6dGhpcy5jdXJyZW50SXRlbS5wcmV2KClbMF0scGFyZW50OnRoaXMuY3VycmVudEl0ZW0ucGFyZW50KClbMF19LHRoaXMuaGVscGVyWzBdIT09dGhpcy5jdXJyZW50SXRlbVswXSYmdGhpcy5jdXJyZW50SXRlbS5oaWRlKCksdGhpcy5fY3JlYXRlUGxhY2Vob2xkZXIoKSxvLmNvbnRhaW5tZW50JiZ0aGlzLl9zZXRDb250YWlubWVudCgpLG8uY3Vyc29yJiYiYXV0byIhPT1vLmN1cnNvciYmKGE9dGhpcy5kb2N1bWVudC5maW5kKCJib2R5IiksdGhpcy5zdG9yZWRDdXJzb3I9YS5jc3MoImN1cnNvciIpLGEuY3NzKCJjdXJzb3IiLG8uY3Vyc29yKSx0aGlzLnN0b3JlZFN0eWxlc2hlZXQ9ZSgiPHN0eWxlPip7IGN1cnNvcjogIitvLmN1cnNvcisiICFpbXBvcnRhbnQ7IH08L3N0eWxlPiIpLmFwcGVuZFRvKGEpKSxvLm9wYWNpdHkmJih0aGlzLmhlbHBlci5jc3MoIm9wYWNpdHkiKSYmKHRoaXMuX3N0b3JlZE9wYWNpdHk9dGhpcy5oZWxwZXIuY3NzKCJvcGFjaXR5IikpLHRoaXMuaGVscGVyLmNzcygib3BhY2l0eSIsby5vcGFjaXR5KSksby56SW5kZXgmJih0aGlzLmhlbHBlci5jc3MoInpJbmRleCIpJiYodGhpcy5fc3RvcmVkWkluZGV4PXRoaXMuaGVscGVyLmNzcygiekluZGV4IikpLHRoaXMuaGVscGVyLmNzcygiekluZGV4IixvLnpJbmRleCkpLHRoaXMuc2Nyb2xsUGFyZW50WzBdIT09dGhpcy5kb2N1bWVudFswXSYmIkhUTUwiIT09dGhpcy5zY3JvbGxQYXJlbnRbMF0udGFnTmFtZSYmKHRoaXMub3ZlcmZsb3dPZmZzZXQ9dGhpcy5zY3JvbGxQYXJlbnQub2Zmc2V0KCkpLHRoaXMuX3RyaWdnZXIoInN0YXJ0Iix0LHRoaXMuX3VpSGFzaCgpKSx0aGlzLl9wcmVzZXJ2ZUhlbHBlclByb3BvcnRpb25zfHx0aGlzLl9jYWNoZUhlbHBlclByb3BvcnRpb25zKCksIXMpZm9yKG49dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO24+PTA7bi0tKXRoaXMuY29udGFpbmVyc1tuXS5fdHJpZ2dlcigiYWN0aXZhdGUiLHQsdGhpcy5fdWlIYXNoKHRoaXMpKTtyZXR1cm4gZS51aS5kZG1hbmFnZXImJihlLnVpLmRkbWFuYWdlci5jdXJyZW50PXRoaXMpLGUudWkuZGRtYW5hZ2VyJiYhby5kcm9wQmVoYXZpb3VyJiZlLnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyh0aGlzLHQpLHRoaXMuZHJhZ2dpbmc9ITAsdGhpcy5oZWxwZXIuYWRkQ2xhc3MoInVpLXNvcnRhYmxlLWhlbHBlciIpLHRoaXMuX21vdXNlRHJhZyh0KSwhMH0sX21vdXNlRHJhZzpmdW5jdGlvbih0KXt2YXIgaSxzLG4sYSxvPXRoaXMub3B0aW9ucyxyPSExO2Zvcih0aGlzLnBvc2l0aW9uPXRoaXMuX2dlbmVyYXRlUG9zaXRpb24odCksdGhpcy5wb3NpdGlvbkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1dGUiKSx0aGlzLmxhc3RQb3NpdGlvbkFic3x8KHRoaXMubGFzdFBvc2l0aW9uQWJzPXRoaXMucG9zaXRpb25BYnMpLHRoaXMub3B0aW9ucy5zY3JvbGwmJih0aGlzLnNjcm9sbFBhcmVudFswXSE9PXRoaXMuZG9jdW1lbnRbMF0mJiJIVE1MIiE9PXRoaXMuc2Nyb2xsUGFyZW50WzBdLnRhZ05hbWU/KHRoaXMub3ZlcmZsb3dPZmZzZXQudG9wK3RoaXMuc2Nyb2xsUGFyZW50WzBdLm9mZnNldEhlaWdodC10LnBhZ2VZPG8uc2Nyb2xsU2Vuc2l0aXZpdHk/dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wPXI9dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wK28uc2Nyb2xsU3BlZWQ6dC5wYWdlWS10aGlzLm92ZXJmbG93T2Zmc2V0LnRvcDxvLnNjcm9sbFNlbnNpdGl2aXR5JiYodGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wPXI9dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wLW8uc2Nyb2xsU3BlZWQpLHRoaXMub3ZlcmZsb3dPZmZzZXQubGVmdCt0aGlzLnNjcm9sbFBhcmVudFswXS5vZmZzZXRXaWR0aC10LnBhZ2VYPG8uc2Nyb2xsU2Vuc2l0aXZpdHk/dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdD1yPXRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbExlZnQrby5zY3JvbGxTcGVlZDp0LnBhZ2VYLXRoaXMub3ZlcmZsb3dPZmZzZXQubGVmdDxvLnNjcm9sbFNlbnNpdGl2aXR5JiYodGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdD1yPXRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbExlZnQtby5zY3JvbGxTcGVlZCkpOih0LnBhZ2VZLXRoaXMuZG9jdW1lbnQuc2Nyb2xsVG9wKCk8by5zY3JvbGxTZW5zaXRpdml0eT9yPXRoaXMuZG9jdW1lbnQuc2Nyb2xsVG9wKHRoaXMuZG9jdW1lbnQuc2Nyb2xsVG9wKCktby5zY3JvbGxTcGVlZCk6dGhpcy53aW5kb3cuaGVpZ2h0KCktKHQucGFnZVktdGhpcy5kb2N1bWVudC5zY3JvbGxUb3AoKSk8by5zY3JvbGxTZW5zaXRpdml0eSYmKHI9dGhpcy5kb2N1bWVudC5zY3JvbGxUb3AodGhpcy5kb2N1bWVudC5zY3JvbGxUb3AoKStvLnNjcm9sbFNwZWVkKSksdC5wYWdlWC10aGlzLmRvY3VtZW50LnNjcm9sbExlZnQoKTxvLnNjcm9sbFNlbnNpdGl2aXR5P3I9dGhpcy5kb2N1bWVudC5zY3JvbGxMZWZ0KHRoaXMuZG9jdW1lbnQuc2Nyb2xsTGVmdCgpLW8uc2Nyb2xsU3BlZWQpOnRoaXMud2luZG93LndpZHRoKCktKHQucGFnZVgtdGhpcy5kb2N1bWVudC5zY3JvbGxMZWZ0KCkpPG8uc2Nyb2xsU2Vuc2l0aXZpdHkmJihyPXRoaXMuZG9jdW1lbnQuc2Nyb2xsTGVmdCh0aGlzLmRvY3VtZW50LnNjcm9sbExlZnQoKStvLnNjcm9sbFNwZWVkKSkpLHIhPT0hMSYmZS51aS5kZG1hbmFnZXImJiFvLmRyb3BCZWhhdmlvdXImJmUudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHRoaXMsdCkpLHRoaXMucG9zaXRpb25BYnM9dGhpcy5fY29udmVydFBvc2l0aW9uVG8oImFic29sdXRlIiksdGhpcy5vcHRpb25zLmF4aXMmJiJ5Ij09PXRoaXMub3B0aW9ucy5heGlzfHwodGhpcy5oZWxwZXJbMF0uc3R5bGUubGVmdD10aGlzLnBvc2l0aW9uLmxlZnQrInB4IiksdGhpcy5vcHRpb25zLmF4aXMmJiJ4Ij09PXRoaXMub3B0aW9ucy5heGlzfHwodGhpcy5oZWxwZXJbMF0uc3R5bGUudG9wPXRoaXMucG9zaXRpb24udG9wKyJweCIpLGk9dGhpcy5pdGVtcy5sZW5ndGgtMTtpPj0wO2ktLSlpZihzPXRoaXMuaXRlbXNbaV0sbj1zLml0ZW1bMF0sYT10aGlzLl9pbnRlcnNlY3RzV2l0aFBvaW50ZXIocyksYSYmcy5pbnN0YW5jZT09PXRoaXMuY3VycmVudENvbnRhaW5lciYmbiE9PXRoaXMuY3VycmVudEl0ZW1bMF0mJnRoaXMucGxhY2Vob2xkZXJbMT09PWE/Im5leHQiOiJwcmV2Il0oKVswXSE9PW4mJiFlLmNvbnRhaW5zKHRoaXMucGxhY2Vob2xkZXJbMF0sbikmJigic2VtaS1keW5hbWljIj09PXRoaXMub3B0aW9ucy50eXBlPyFlLmNvbnRhaW5zKHRoaXMuZWxlbWVudFswXSxuKTohMCkpe2lmKHRoaXMuZGlyZWN0aW9uPTE9PT1hPyJkb3duIjoidXAiLCJwb2ludGVyIiE9PXRoaXMub3B0aW9ucy50b2xlcmFuY2UmJiF0aGlzLl9pbnRlcnNlY3RzV2l0aFNpZGVzKHMpKWJyZWFrO3RoaXMuX3JlYXJyYW5nZSh0LHMpLHRoaXMuX3RyaWdnZXIoImNoYW5nZSIsdCx0aGlzLl91aUhhc2goKSk7YnJlYWt9cmV0dXJuIHRoaXMuX2NvbnRhY3RDb250YWluZXJzKHQpLGUudWkuZGRtYW5hZ2VyJiZlLnVpLmRkbWFuYWdlci5kcmFnKHRoaXMsdCksdGhpcy5fdHJpZ2dlcigic29ydCIsdCx0aGlzLl91aUhhc2goKSksdGhpcy5sYXN0UG9zaXRpb25BYnM9dGhpcy5wb3NpdGlvbkFicywhMX0sX21vdXNlU3RvcDpmdW5jdGlvbih0LGkpe2lmKHQpe2lmKGUudWkuZGRtYW5hZ2VyJiYhdGhpcy5vcHRpb25zLmRyb3BCZWhhdmlvdXImJmUudWkuZGRtYW5hZ2VyLmRyb3AodGhpcyx0KSx0aGlzLm9wdGlvbnMucmV2ZXJ0KXt2YXIgcz10aGlzLG49dGhpcy5wbGFjZWhvbGRlci5vZmZzZXQoKSxhPXRoaXMub3B0aW9ucy5heGlzLG89e307YSYmIngiIT09YXx8KG8ubGVmdD1uLmxlZnQtdGhpcy5vZmZzZXQucGFyZW50LmxlZnQtdGhpcy5tYXJnaW5zLmxlZnQrKHRoaXMub2Zmc2V0UGFyZW50WzBdPT09dGhpcy5kb2N1bWVudFswXS5ib2R5PzA6dGhpcy5vZmZzZXRQYXJlbnRbMF0uc2Nyb2xsTGVmdCkpLGEmJiJ5IiE9PWF8fChvLnRvcD1uLnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wLXRoaXMubWFyZ2lucy50b3ArKHRoaXMub2Zmc2V0UGFyZW50WzBdPT09dGhpcy5kb2N1bWVudFswXS5ib2R5PzA6dGhpcy5vZmZzZXRQYXJlbnRbMF0uc2Nyb2xsVG9wKSksdGhpcy5yZXZlcnRpbmc9ITAsZSh0aGlzLmhlbHBlcikuYW5pbWF0ZShvLHBhcnNlSW50KHRoaXMub3B0aW9ucy5yZXZlcnQsMTApfHw1MDAsZnVuY3Rpb24oKXtzLl9jbGVhcih0KX0pfWVsc2UgdGhpcy5fY2xlYXIodCxpKTtyZXR1cm4hMX19LGNhbmNlbDpmdW5jdGlvbigpe2lmKHRoaXMuZHJhZ2dpbmcpe3RoaXMuX21vdXNlVXAoe3RhcmdldDpudWxsfSksIm9yaWdpbmFsIj09PXRoaXMub3B0aW9ucy5oZWxwZXI/dGhpcy5jdXJyZW50SXRlbS5jc3ModGhpcy5fc3RvcmVkQ1NTKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGVscGVyIik6dGhpcy5jdXJyZW50SXRlbS5zaG93KCk7Zm9yKHZhciB0PXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTt0Pj0wO3QtLSl0aGlzLmNvbnRhaW5lcnNbdF0uX3RyaWdnZXIoImRlYWN0aXZhdGUiLG51bGwsdGhpcy5fdWlIYXNoKHRoaXMpKSx0aGlzLmNvbnRhaW5lcnNbdF0uY29udGFpbmVyQ2FjaGUub3ZlciYmKHRoaXMuY29udGFpbmVyc1t0XS5fdHJpZ2dlcigib3V0IixudWxsLHRoaXMuX3VpSGFzaCh0aGlzKSksdGhpcy5jb250YWluZXJzW3RdLmNvbnRhaW5lckNhY2hlLm92ZXI9MCl9cmV0dXJuIHRoaXMucGxhY2Vob2xkZXImJih0aGlzLnBsYWNlaG9sZGVyWzBdLnBhcmVudE5vZGUmJnRoaXMucGxhY2Vob2xkZXJbMF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnBsYWNlaG9sZGVyWzBdKSwib3JpZ2luYWwiIT09dGhpcy5vcHRpb25zLmhlbHBlciYmdGhpcy5oZWxwZXImJnRoaXMuaGVscGVyWzBdLnBhcmVudE5vZGUmJnRoaXMuaGVscGVyLnJlbW92ZSgpLGUuZXh0ZW5kKHRoaXMse2hlbHBlcjpudWxsLGRyYWdnaW5nOiExLHJldmVydGluZzohMSxfbm9GaW5hbFNvcnQ6bnVsbH0pLHRoaXMuZG9tUG9zaXRpb24ucHJldj9lKHRoaXMuZG9tUG9zaXRpb24ucHJldikuYWZ0ZXIodGhpcy5jdXJyZW50SXRlbSk6ZSh0aGlzLmRvbVBvc2l0aW9uLnBhcmVudCkucHJlcGVuZCh0aGlzLmN1cnJlbnRJdGVtKSksdGhpc30sc2VyaWFsaXplOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMuX2dldEl0ZW1zQXNqUXVlcnkodCYmdC5jb25uZWN0ZWQpLHM9W107cmV0dXJuIHQ9dHx8e30sZShpKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9KGUodC5pdGVtfHx0aGlzKS5hdHRyKHQuYXR0cmlidXRlfHwiaWQiKXx8IiIpLm1hdGNoKHQuZXhwcmVzc2lvbnx8LyguKylbXC09X10oLispLyk7aSYmcy5wdXNoKCh0LmtleXx8aVsxXSsiW10iKSsiPSIrKHQua2V5JiZ0LmV4cHJlc3Npb24/aVsxXTppWzJdKSl9KSwhcy5sZW5ndGgmJnQua2V5JiZzLnB1c2godC5rZXkrIj0iKSxzLmpvaW4oIiYiKX0sdG9BcnJheTpmdW5jdGlvbih0KXt2YXIgaT10aGlzLl9nZXRJdGVtc0FzalF1ZXJ5KHQmJnQuY29ubmVjdGVkKSxzPVtdO3JldHVybiB0PXR8fHt9LGkuZWFjaChmdW5jdGlvbigpe3MucHVzaChlKHQuaXRlbXx8dGhpcykuYXR0cih0LmF0dHJpYnV0ZXx8ImlkIil8fCIiKX0pLHN9LF9pbnRlcnNlY3RzV2l0aDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnBvc2l0aW9uQWJzLmxlZnQsaT10K3RoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgscz10aGlzLnBvc2l0aW9uQWJzLnRvcCxuPXMrdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQsYT1lLmxlZnQsbz1hK2Uud2lkdGgscj1lLnRvcCxoPXIrZS5oZWlnaHQsbD10aGlzLm9mZnNldC5jbGljay50b3AsdT10aGlzLm9mZnNldC5jbGljay5sZWZ0LGQ9IngiPT09dGhpcy5vcHRpb25zLmF4aXN8fHMrbD5yJiZoPnMrbCxjPSJ5Ij09PXRoaXMub3B0aW9ucy5heGlzfHx0K3U+YSYmbz50K3UscD1kJiZjO3JldHVybiJwb2ludGVyIj09PXRoaXMub3B0aW9ucy50b2xlcmFuY2V8fHRoaXMub3B0aW9ucy5mb3JjZVBvaW50ZXJGb3JDb250YWluZXJzfHwicG9pbnRlciIhPT10aGlzLm9wdGlvbnMudG9sZXJhbmNlJiZ0aGlzLmhlbHBlclByb3BvcnRpb25zW3RoaXMuZmxvYXRpbmc/IndpZHRoIjoiaGVpZ2h0Il0+ZVt0aGlzLmZsb2F0aW5nPyJ3aWR0aCI6ImhlaWdodCJdP3A6dCt0aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLzI+YSYmbz5pLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgvMiYmcyt0aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC8yPnImJmg+bi10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC8yfSxfaW50ZXJzZWN0c1dpdGhQb2ludGVyOmZ1bmN0aW9uKGUpe3ZhciB0PSJ4Ij09PXRoaXMub3B0aW9ucy5heGlzfHx0aGlzLl9pc092ZXJBeGlzKHRoaXMucG9zaXRpb25BYnMudG9wK3RoaXMub2Zmc2V0LmNsaWNrLnRvcCxlLnRvcCxlLmhlaWdodCksaT0ieSI9PT10aGlzLm9wdGlvbnMuYXhpc3x8dGhpcy5faXNPdmVyQXhpcyh0aGlzLnBvc2l0aW9uQWJzLmxlZnQrdGhpcy5vZmZzZXQuY2xpY2subGVmdCxlLmxlZnQsZS53aWR0aCkscz10JiZpLG49dGhpcy5fZ2V0RHJhZ1ZlcnRpY2FsRGlyZWN0aW9uKCksYT10aGlzLl9nZXREcmFnSG9yaXpvbnRhbERpcmVjdGlvbigpO3JldHVybiBzP3RoaXMuZmxvYXRpbmc/YSYmInJpZ2h0Ij09PWF8fCJkb3duIj09PW4/MjoxOm4mJigiZG93biI9PT1uPzI6MSk6ITF9LF9pbnRlcnNlY3RzV2l0aFNpZGVzOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2lzT3ZlckF4aXModGhpcy5wb3NpdGlvbkFicy50b3ArdGhpcy5vZmZzZXQuY2xpY2sudG9wLGUudG9wK2UuaGVpZ2h0LzIsZS5oZWlnaHQpLGk9dGhpcy5faXNPdmVyQXhpcyh0aGlzLnBvc2l0aW9uQWJzLmxlZnQrdGhpcy5vZmZzZXQuY2xpY2subGVmdCxlLmxlZnQrZS53aWR0aC8yLGUud2lkdGgpLHM9dGhpcy5fZ2V0RHJhZ1ZlcnRpY2FsRGlyZWN0aW9uKCksbj10aGlzLl9nZXREcmFnSG9yaXpvbnRhbERpcmVjdGlvbigpO3JldHVybiB0aGlzLmZsb2F0aW5nJiZuPyJyaWdodCI9PT1uJiZpfHwibGVmdCI9PT1uJiYhaTpzJiYoImRvd24iPT09cyYmdHx8InVwIj09PXMmJiF0KX0sX2dldERyYWdWZXJ0aWNhbERpcmVjdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMucG9zaXRpb25BYnMudG9wLXRoaXMubGFzdFBvc2l0aW9uQWJzLnRvcDtyZXR1cm4gMCE9PWUmJihlPjA/ImRvd24iOiJ1cCIpfSxfZ2V0RHJhZ0hvcml6b250YWxEaXJlY3Rpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnBvc2l0aW9uQWJzLmxlZnQtdGhpcy5sYXN0UG9zaXRpb25BYnMubGVmdDtyZXR1cm4gMCE9PWUmJihlPjA/InJpZ2h0IjoibGVmdCIpfSxyZWZyZXNoOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9yZWZyZXNoSXRlbXMoZSksdGhpcy5fc2V0SGFuZGxlQ2xhc3NOYW1lKCksdGhpcy5yZWZyZXNoUG9zaXRpb25zKCksdGhpc30sX2Nvbm5lY3RXaXRoOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zO3JldHVybiBlLmNvbm5lY3RXaXRoLmNvbnN0cnVjdG9yPT09U3RyaW5nP1tlLmNvbm5lY3RXaXRoXTplLmNvbm5lY3RXaXRofSxfZ2V0SXRlbXNBc2pRdWVyeTpmdW5jdGlvbih0KXtmdW5jdGlvbiBpKCl7ci5wdXNoKHRoaXMpfXZhciBzLG4sYSxvLHI9W10saD1bXSxsPXRoaXMuX2Nvbm5lY3RXaXRoKCk7aWYobCYmdClmb3Iocz1sLmxlbmd0aC0xO3M+PTA7cy0tKWZvcihhPWUobFtzXSx0aGlzLmRvY3VtZW50WzBdKSxuPWEubGVuZ3RoLTE7bj49MDtuLS0pbz1lLmRhdGEoYVtuXSx0aGlzLndpZGdldEZ1bGxOYW1lKSxvJiZvIT09dGhpcyYmIW8ub3B0aW9ucy5kaXNhYmxlZCYmaC5wdXNoKFtlLmlzRnVuY3Rpb24oby5vcHRpb25zLml0ZW1zKT9vLm9wdGlvbnMuaXRlbXMuY2FsbChvLmVsZW1lbnQpOmUoby5vcHRpb25zLml0ZW1zLG8uZWxlbWVudCkubm90KCIudWktc29ydGFibGUtaGVscGVyIikubm90KCIudWktc29ydGFibGUtcGxhY2Vob2xkZXIiKSxvXSk7Zm9yKGgucHVzaChbZS5pc0Z1bmN0aW9uKHRoaXMub3B0aW9ucy5pdGVtcyk/dGhpcy5vcHRpb25zLml0ZW1zLmNhbGwodGhpcy5lbGVtZW50LG51bGwse29wdGlvbnM6dGhpcy5vcHRpb25zLGl0ZW06dGhpcy5jdXJyZW50SXRlbX0pOmUodGhpcy5vcHRpb25zLml0ZW1zLHRoaXMuZWxlbWVudCkubm90KCIudWktc29ydGFibGUtaGVscGVyIikubm90KCIudWktc29ydGFibGUtcGxhY2Vob2xkZXIiKSx0aGlzXSkscz1oLmxlbmd0aC0xO3M+PTA7cy0tKWhbc11bMF0uZWFjaChpKTtyZXR1cm4gZShyKX0sX3JlbW92ZUN1cnJlbnRzRnJvbUl0ZW1zOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jdXJyZW50SXRlbS5maW5kKCI6ZGF0YSgiK3RoaXMud2lkZ2V0TmFtZSsiLWl0ZW0pIik7dGhpcy5pdGVtcz1lLmdyZXAodGhpcy5pdGVtcyxmdW5jdGlvbihlKXtmb3IodmFyIGk9MDt0Lmxlbmd0aD5pO2krKylpZih0W2ldPT09ZS5pdGVtWzBdKXJldHVybiExO3JldHVybiEwfSl9LF9yZWZyZXNoSXRlbXM6ZnVuY3Rpb24odCl7dGhpcy5pdGVtcz1bXSx0aGlzLmNvbnRhaW5lcnM9W3RoaXNdO3ZhciBpLHMsbixhLG8scixoLGwsdT10aGlzLml0ZW1zLGQ9W1tlLmlzRnVuY3Rpb24odGhpcy5vcHRpb25zLml0ZW1zKT90aGlzLm9wdGlvbnMuaXRlbXMuY2FsbCh0aGlzLmVsZW1lbnRbMF0sdCx7aXRlbTp0aGlzLmN1cnJlbnRJdGVtfSk6ZSh0aGlzLm9wdGlvbnMuaXRlbXMsdGhpcy5lbGVtZW50KSx0aGlzXV0sYz10aGlzLl9jb25uZWN0V2l0aCgpO2lmKGMmJnRoaXMucmVhZHkpZm9yKGk9Yy5sZW5ndGgtMTtpPj0wO2ktLSlmb3Iobj1lKGNbaV0sdGhpcy5kb2N1bWVudFswXSkscz1uLmxlbmd0aC0xO3M+PTA7cy0tKWE9ZS5kYXRhKG5bc10sdGhpcy53aWRnZXRGdWxsTmFtZSksYSYmYSE9PXRoaXMmJiFhLm9wdGlvbnMuZGlzYWJsZWQmJihkLnB1c2goW2UuaXNGdW5jdGlvbihhLm9wdGlvbnMuaXRlbXMpP2Eub3B0aW9ucy5pdGVtcy5jYWxsKGEuZWxlbWVudFswXSx0LHtpdGVtOnRoaXMuY3VycmVudEl0ZW19KTplKGEub3B0aW9ucy5pdGVtcyxhLmVsZW1lbnQpLGFdKSx0aGlzLmNvbnRhaW5lcnMucHVzaChhKSk7Zm9yKGk9ZC5sZW5ndGgtMTtpPj0wO2ktLSlmb3Iobz1kW2ldWzFdLHI9ZFtpXVswXSxzPTAsbD1yLmxlbmd0aDtsPnM7cysrKWg9ZShyW3NdKSxoLmRhdGEodGhpcy53aWRnZXROYW1lKyItaXRlbSIsbyksdS5wdXNoKHtpdGVtOmgsaW5zdGFuY2U6byx3aWR0aDowLGhlaWdodDowLGxlZnQ6MCx0b3A6MH0pfSxyZWZyZXNoUG9zaXRpb25zOmZ1bmN0aW9uKHQpe3RoaXMuZmxvYXRpbmc9dGhpcy5pdGVtcy5sZW5ndGg/IngiPT09dGhpcy5vcHRpb25zLmF4aXN8fHRoaXMuX2lzRmxvYXRpbmcodGhpcy5pdGVtc1swXS5pdGVtKTohMSx0aGlzLm9mZnNldFBhcmVudCYmdGhpcy5oZWxwZXImJih0aGlzLm9mZnNldC5wYXJlbnQ9dGhpcy5fZ2V0UGFyZW50T2Zmc2V0KCkpO3ZhciBpLHMsbixhO2ZvcihpPXRoaXMuaXRlbXMubGVuZ3RoLTE7aT49MDtpLS0pcz10aGlzLml0ZW1zW2ldLHMuaW5zdGFuY2UhPT10aGlzLmN1cnJlbnRDb250YWluZXImJnRoaXMuY3VycmVudENvbnRhaW5lciYmcy5pdGVtWzBdIT09dGhpcy5jdXJyZW50SXRlbVswXXx8KG49dGhpcy5vcHRpb25zLnRvbGVyYW5jZUVsZW1lbnQ/ZSh0aGlzLm9wdGlvbnMudG9sZXJhbmNlRWxlbWVudCxzLml0ZW0pOnMuaXRlbSx0fHwocy53aWR0aD1uLm91dGVyV2lkdGgoKSxzLmhlaWdodD1uLm91dGVySGVpZ2h0KCkpLGE9bi5vZmZzZXQoKSxzLmxlZnQ9YS5sZWZ0LHMudG9wPWEudG9wKTtpZih0aGlzLm9wdGlvbnMuY3VzdG9tJiZ0aGlzLm9wdGlvbnMuY3VzdG9tLnJlZnJlc2hDb250YWluZXJzKXRoaXMub3B0aW9ucy5jdXN0b20ucmVmcmVzaENvbnRhaW5lcnMuY2FsbCh0aGlzKTtlbHNlIGZvcihpPXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTtpPj0wO2ktLSlhPXRoaXMuY29udGFpbmVyc1tpXS5lbGVtZW50Lm9mZnNldCgpLHRoaXMuY29udGFpbmVyc1tpXS5jb250YWluZXJDYWNoZS5sZWZ0PWEubGVmdCx0aGlzLmNvbnRhaW5lcnNbaV0uY29udGFpbmVyQ2FjaGUudG9wPWEudG9wLHRoaXMuY29udGFpbmVyc1tpXS5jb250YWluZXJDYWNoZS53aWR0aD10aGlzLmNvbnRhaW5lcnNbaV0uZWxlbWVudC5vdXRlcldpZHRoKCksdGhpcy5jb250YWluZXJzW2ldLmNvbnRhaW5lckNhY2hlLmhlaWdodD10aGlzLmNvbnRhaW5lcnNbaV0uZWxlbWVudC5vdXRlckhlaWdodCgpO3JldHVybiB0aGlzfSxfY3JlYXRlUGxhY2Vob2xkZXI6ZnVuY3Rpb24odCl7dD10fHx0aGlzO3ZhciBpLHM9dC5vcHRpb25zO3MucGxhY2Vob2xkZXImJnMucGxhY2Vob2xkZXIuY29uc3RydWN0b3IhPT1TdHJpbmd8fChpPXMucGxhY2Vob2xkZXIscy5wbGFjZWhvbGRlcj17ZWxlbWVudDpmdW5jdGlvbigpe3ZhciBzPXQuY3VycmVudEl0ZW1bMF0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxuPWUoIjwiK3MrIj4iLHQuZG9jdW1lbnRbMF0pLmFkZENsYXNzKGl8fHQuY3VycmVudEl0ZW1bMF0uY2xhc3NOYW1lKyIgdWktc29ydGFibGUtcGxhY2Vob2xkZXIiKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGVscGVyIik7cmV0dXJuInRib2R5Ij09PXM/dC5fY3JlYXRlVHJQbGFjZWhvbGRlcih0LmN1cnJlbnRJdGVtLmZpbmQoInRyIikuZXEoMCksZSgiPHRyPiIsdC5kb2N1bWVudFswXSkuYXBwZW5kVG8obikpOiJ0ciI9PT1zP3QuX2NyZWF0ZVRyUGxhY2Vob2xkZXIodC5jdXJyZW50SXRlbSxuKToiaW1nIj09PXMmJm4uYXR0cigic3JjIix0LmN1cnJlbnRJdGVtLmF0dHIoInNyYyIpKSxpfHxuLmNzcygidmlzaWJpbGl0eSIsImhpZGRlbiIpLG59LHVwZGF0ZTpmdW5jdGlvbihlLG4peyghaXx8cy5mb3JjZVBsYWNlaG9sZGVyU2l6ZSkmJihuLmhlaWdodCgpfHxuLmhlaWdodCh0LmN1cnJlbnRJdGVtLmlubmVySGVpZ2h0KCktcGFyc2VJbnQodC5jdXJyZW50SXRlbS5jc3MoInBhZGRpbmdUb3AiKXx8MCwxMCktcGFyc2VJbnQodC5jdXJyZW50SXRlbS5jc3MoInBhZGRpbmdCb3R0b20iKXx8MCwxMCkpLG4ud2lkdGgoKXx8bi53aWR0aCh0LmN1cnJlbnRJdGVtLmlubmVyV2lkdGgoKS1wYXJzZUludCh0LmN1cnJlbnRJdGVtLmNzcygicGFkZGluZ0xlZnQiKXx8MCwxMCktcGFyc2VJbnQodC5jdXJyZW50SXRlbS5jc3MoInBhZGRpbmdSaWdodCIpfHwwLDEwKSkpfX0pLHQucGxhY2Vob2xkZXI9ZShzLnBsYWNlaG9sZGVyLmVsZW1lbnQuY2FsbCh0LmVsZW1lbnQsdC5jdXJyZW50SXRlbSkpLHQuY3VycmVudEl0ZW0uYWZ0ZXIodC5wbGFjZWhvbGRlcikscy5wbGFjZWhvbGRlci51cGRhdGUodCx0LnBsYWNlaG9sZGVyKX0sX2NyZWF0ZVRyUGxhY2Vob2xkZXI6ZnVuY3Rpb24odCxpKXt2YXIgcz10aGlzO3QuY2hpbGRyZW4oKS5lYWNoKGZ1bmN0aW9uKCl7ZSgiPHRkPiYjMTYwOzwvdGQ+IixzLmRvY3VtZW50WzBdKS5hdHRyKCJjb2xzcGFuIixlKHRoaXMpLmF0dHIoImNvbHNwYW4iKXx8MSkuYXBwZW5kVG8oaSl9KX0sX2NvbnRhY3RDb250YWluZXJzOmZ1bmN0aW9uKHQpe3ZhciBpLHMsbixhLG8scixoLGwsdSxkLGM9bnVsbCxwPW51bGw7Zm9yKGk9dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO2k+PTA7aS0tKWlmKCFlLmNvbnRhaW5zKHRoaXMuY3VycmVudEl0ZW1bMF0sdGhpcy5jb250YWluZXJzW2ldLmVsZW1lbnRbMF0pKWlmKHRoaXMuX2ludGVyc2VjdHNXaXRoKHRoaXMuY29udGFpbmVyc1tpXS5jb250YWluZXJDYWNoZSkpe2lmKGMmJmUuY29udGFpbnModGhpcy5jb250YWluZXJzW2ldLmVsZW1lbnRbMF0sYy5lbGVtZW50WzBdKSljb250aW51ZTtjPXRoaXMuY29udGFpbmVyc1tpXSxwPWl9ZWxzZSB0aGlzLmNvbnRhaW5lcnNbaV0uY29udGFpbmVyQ2FjaGUub3ZlciYmKHRoaXMuY29udGFpbmVyc1tpXS5fdHJpZ2dlcigib3V0Iix0LHRoaXMuX3VpSGFzaCh0aGlzKSksdGhpcy5jb250YWluZXJzW2ldLmNvbnRhaW5lckNhY2hlLm92ZXI9MCk7aWYoYylpZigxPT09dGhpcy5jb250YWluZXJzLmxlbmd0aCl0aGlzLmNvbnRhaW5lcnNbcF0uY29udGFpbmVyQ2FjaGUub3Zlcnx8KHRoaXMuY29udGFpbmVyc1twXS5fdHJpZ2dlcigib3ZlciIsdCx0aGlzLl91aUhhc2godGhpcykpLHRoaXMuY29udGFpbmVyc1twXS5jb250YWluZXJDYWNoZS5vdmVyPTEpO2Vsc2V7Zm9yKG49MWU0LGE9bnVsbCx1PWMuZmxvYXRpbmd8fHRoaXMuX2lzRmxvYXRpbmcodGhpcy5jdXJyZW50SXRlbSksbz11PyJsZWZ0IjoidG9wIixyPXU/IndpZHRoIjoiaGVpZ2h0IixkPXU/ImNsaWVudFgiOiJjbGllbnRZIixzPXRoaXMuaXRlbXMubGVuZ3RoLTE7cz49MDtzLS0pZS5jb250YWlucyh0aGlzLmNvbnRhaW5lcnNbcF0uZWxlbWVudFswXSx0aGlzLml0ZW1zW3NdLml0ZW1bMF0pJiZ0aGlzLml0ZW1zW3NdLml0ZW1bMF0hPT10aGlzLmN1cnJlbnRJdGVtWzBdJiYoaD10aGlzLml0ZW1zW3NdLml0ZW0ub2Zmc2V0KClbb10sbD0hMSx0W2RdLWg+dGhpcy5pdGVtc1tzXVtyXS8yJiYobD0hMCksbj5NYXRoLmFicyh0W2RdLWgpJiYobj1NYXRoLmFicyh0W2RdLWgpLGE9dGhpcy5pdGVtc1tzXSx0aGlzLmRpcmVjdGlvbj1sPyJ1cCI6ImRvd24iKSk7aWYoIWEmJiF0aGlzLm9wdGlvbnMuZHJvcE9uRW1wdHkpcmV0dXJuO2lmKHRoaXMuY3VycmVudENvbnRhaW5lcj09PXRoaXMuY29udGFpbmVyc1twXSlyZXR1cm4gdGhpcy5jdXJyZW50Q29udGFpbmVyLmNvbnRhaW5lckNhY2hlLm92ZXJ8fCh0aGlzLmNvbnRhaW5lcnNbcF0uX3RyaWdnZXIoIm92ZXIiLHQsdGhpcy5fdWlIYXNoKCkpLHRoaXMuY3VycmVudENvbnRhaW5lci5jb250YWluZXJDYWNoZS5vdmVyPTEpLHZvaWQgMDthP3RoaXMuX3JlYXJyYW5nZSh0LGEsbnVsbCwhMCk6dGhpcy5fcmVhcnJhbmdlKHQsbnVsbCx0aGlzLmNvbnRhaW5lcnNbcF0uZWxlbWVudCwhMCksdGhpcy5fdHJpZ2dlcigiY2hhbmdlIix0LHRoaXMuX3VpSGFzaCgpKSx0aGlzLmNvbnRhaW5lcnNbcF0uX3RyaWdnZXIoImNoYW5nZSIsdCx0aGlzLl91aUhhc2godGhpcykpLHRoaXMuY3VycmVudENvbnRhaW5lcj10aGlzLmNvbnRhaW5lcnNbcF0sdGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyLnVwZGF0ZSh0aGlzLmN1cnJlbnRDb250YWluZXIsdGhpcy5wbGFjZWhvbGRlciksdGhpcy5jb250YWluZXJzW3BdLl90cmlnZ2VyKCJvdmVyIix0LHRoaXMuX3VpSGFzaCh0aGlzKSksdGhpcy5jb250YWluZXJzW3BdLmNvbnRhaW5lckNhY2hlLm92ZXI9MX19LF9jcmVhdGVIZWxwZXI6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5vcHRpb25zLHM9ZS5pc0Z1bmN0aW9uKGkuaGVscGVyKT9lKGkuaGVscGVyLmFwcGx5KHRoaXMuZWxlbWVudFswXSxbdCx0aGlzLmN1cnJlbnRJdGVtXSkpOiJjbG9uZSI9PT1pLmhlbHBlcj90aGlzLmN1cnJlbnRJdGVtLmNsb25lKCk6dGhpcy5jdXJyZW50SXRlbTtyZXR1cm4gcy5wYXJlbnRzKCJib2R5IikubGVuZ3RofHxlKCJwYXJlbnQiIT09aS5hcHBlbmRUbz9pLmFwcGVuZFRvOnRoaXMuY3VycmVudEl0ZW1bMF0ucGFyZW50Tm9kZSlbMF0uYXBwZW5kQ2hpbGQoc1swXSksc1swXT09PXRoaXMuY3VycmVudEl0ZW1bMF0mJih0aGlzLl9zdG9yZWRDU1M9e3dpZHRoOnRoaXMuY3VycmVudEl0ZW1bMF0uc3R5bGUud2lkdGgsaGVpZ2h0OnRoaXMuY3VycmVudEl0ZW1bMF0uc3R5bGUuaGVpZ2h0LHBvc2l0aW9uOnRoaXMuY3VycmVudEl0ZW0uY3NzKCJwb3NpdGlvbiIpLHRvcDp0aGlzLmN1cnJlbnRJdGVtLmNzcygidG9wIiksbGVmdDp0aGlzLmN1cnJlbnRJdGVtLmNzcygibGVmdCIpfSksKCFzWzBdLnN0eWxlLndpZHRofHxpLmZvcmNlSGVscGVyU2l6ZSkmJnMud2lkdGgodGhpcy5jdXJyZW50SXRlbS53aWR0aCgpKSwoIXNbMF0uc3R5bGUuaGVpZ2h0fHxpLmZvcmNlSGVscGVyU2l6ZSkmJnMuaGVpZ2h0KHRoaXMuY3VycmVudEl0ZW0uaGVpZ2h0KCkpLHN9LF9hZGp1c3RPZmZzZXRGcm9tSGVscGVyOmZ1bmN0aW9uKHQpeyJzdHJpbmciPT10eXBlb2YgdCYmKHQ9dC5zcGxpdCgiICIpKSxlLmlzQXJyYXkodCkmJih0PXtsZWZ0Oit0WzBdLHRvcDordFsxXXx8MH0pLCJsZWZ0ImluIHQmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PXQubGVmdCt0aGlzLm1hcmdpbnMubGVmdCksInJpZ2h0ImluIHQmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdC5yaWdodCt0aGlzLm1hcmdpbnMubGVmdCksInRvcCJpbiB0JiYodGhpcy5vZmZzZXQuY2xpY2sudG9wPXQudG9wK3RoaXMubWFyZ2lucy50b3ApLCJib3R0b20iaW4gdCYmKHRoaXMub2Zmc2V0LmNsaWNrLnRvcD10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC10LmJvdHRvbSt0aGlzLm1hcmdpbnMudG9wKX0sX2dldFBhcmVudE9mZnNldDpmdW5jdGlvbigpe3RoaXMub2Zmc2V0UGFyZW50PXRoaXMuaGVscGVyLm9mZnNldFBhcmVudCgpO3ZhciB0PXRoaXMub2Zmc2V0UGFyZW50Lm9mZnNldCgpO3JldHVybiJhYnNvbHV0ZSI9PT10aGlzLmNzc1Bvc2l0aW9uJiZ0aGlzLnNjcm9sbFBhcmVudFswXSE9PXRoaXMuZG9jdW1lbnRbMF0mJmUuY29udGFpbnModGhpcy5zY3JvbGxQYXJlbnRbMF0sdGhpcy5vZmZzZXRQYXJlbnRbMF0pJiYodC5sZWZ0Kz10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCksdC50b3ArPXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpKSwodGhpcy5vZmZzZXRQYXJlbnRbMF09PT10aGlzLmRvY3VtZW50WzBdLmJvZHl8fHRoaXMub2Zmc2V0UGFyZW50WzBdLnRhZ05hbWUmJiJodG1sIj09PXRoaXMub2Zmc2V0UGFyZW50WzBdLnRhZ05hbWUudG9Mb3dlckNhc2UoKSYmZS51aS5pZSkmJih0PXt0b3A6MCxsZWZ0OjB9KSx7dG9wOnQudG9wKyhwYXJzZUludCh0aGlzLm9mZnNldFBhcmVudC5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKSxsZWZ0OnQubGVmdCsocGFyc2VJbnQodGhpcy5vZmZzZXRQYXJlbnQuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApfX0sX2dldFJlbGF0aXZlT2Zmc2V0OmZ1bmN0aW9uKCl7aWYoInJlbGF0aXZlIj09PXRoaXMuY3NzUG9zaXRpb24pe3ZhciBlPXRoaXMuY3VycmVudEl0ZW0ucG9zaXRpb24oKTtyZXR1cm57dG9wOmUudG9wLShwYXJzZUludCh0aGlzLmhlbHBlci5jc3MoInRvcCIpLDEwKXx8MCkrdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCksbGVmdDplLmxlZnQtKHBhcnNlSW50KHRoaXMuaGVscGVyLmNzcygibGVmdCIpLDEwKXx8MCkrdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpfX1yZXR1cm57dG9wOjAsbGVmdDowfX0sX2NhY2hlTWFyZ2luczpmdW5jdGlvbigpe3RoaXMubWFyZ2lucz17bGVmdDpwYXJzZUludCh0aGlzLmN1cnJlbnRJdGVtLmNzcygibWFyZ2luTGVmdCIpLDEwKXx8MCx0b3A6cGFyc2VJbnQodGhpcy5jdXJyZW50SXRlbS5jc3MoIm1hcmdpblRvcCIpLDEwKXx8MH19LF9jYWNoZUhlbHBlclByb3BvcnRpb25zOmZ1bmN0aW9uKCl7dGhpcy5oZWxwZXJQcm9wb3J0aW9ucz17d2lkdGg6dGhpcy5oZWxwZXIub3V0ZXJXaWR0aCgpLGhlaWdodDp0aGlzLmhlbHBlci5vdXRlckhlaWdodCgpfX0sX3NldENvbnRhaW5tZW50OmZ1bmN0aW9uKCl7dmFyIHQsaSxzLG49dGhpcy5vcHRpb25zOyJwYXJlbnQiPT09bi5jb250YWlubWVudCYmKG4uY29udGFpbm1lbnQ9dGhpcy5oZWxwZXJbMF0ucGFyZW50Tm9kZSksKCJkb2N1bWVudCI9PT1uLmNvbnRhaW5tZW50fHwid2luZG93Ij09PW4uY29udGFpbm1lbnQpJiYodGhpcy5jb250YWlubWVudD1bMC10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0LDAtdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wLXRoaXMub2Zmc2V0LnBhcmVudC50b3AsImRvY3VtZW50Ij09PW4uY29udGFpbm1lbnQ/dGhpcy5kb2N1bWVudC53aWR0aCgpOnRoaXMud2luZG93LndpZHRoKCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC10aGlzLm1hcmdpbnMubGVmdCwoImRvY3VtZW50Ij09PW4uY29udGFpbm1lbnQ/dGhpcy5kb2N1bWVudC53aWR0aCgpOnRoaXMud2luZG93LmhlaWdodCgpfHx0aGlzLmRvY3VtZW50WzBdLmJvZHkucGFyZW50Tm9kZS5zY3JvbGxIZWlnaHQpLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3BdKSwvXihkb2N1bWVudHx3aW5kb3d8cGFyZW50KSQvLnRlc3Qobi5jb250YWlubWVudCl8fCh0PWUobi5jb250YWlubWVudClbMF0saT1lKG4uY29udGFpbm1lbnQpLm9mZnNldCgpLHM9ImhpZGRlbiIhPT1lKHQpLmNzcygib3ZlcmZsb3ciKSx0aGlzLmNvbnRhaW5tZW50PVtpLmxlZnQrKHBhcnNlSW50KGUodCkuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApKyhwYXJzZUludChlKHQpLmNzcygicGFkZGluZ0xlZnQiKSwxMCl8fDApLXRoaXMubWFyZ2lucy5sZWZ0LGkudG9wKyhwYXJzZUludChlKHQpLmNzcygiYm9yZGVyVG9wV2lkdGgiKSwxMCl8fDApKyhwYXJzZUludChlKHQpLmNzcygicGFkZGluZ1RvcCIpLDEwKXx8MCktdGhpcy5tYXJnaW5zLnRvcCxpLmxlZnQrKHM/TWF0aC5tYXgodC5zY3JvbGxXaWR0aCx0Lm9mZnNldFdpZHRoKTp0Lm9mZnNldFdpZHRoKS0ocGFyc2VJbnQoZSh0KS5jc3MoImJvcmRlckxlZnRXaWR0aCIpLDEwKXx8MCktKHBhcnNlSW50KGUodCkuY3NzKCJwYWRkaW5nUmlnaHQiKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5tYXJnaW5zLmxlZnQsaS50b3ArKHM/TWF0aC5tYXgodC5zY3JvbGxIZWlnaHQsdC5vZmZzZXRIZWlnaHQpOnQub2Zmc2V0SGVpZ2h0KS0ocGFyc2VJbnQoZSh0KS5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoZSh0KS5jc3MoInBhZGRpbmdCb3R0b20iKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3BdKX0sX2NvbnZlcnRQb3NpdGlvblRvOmZ1bmN0aW9uKHQsaSl7aXx8KGk9dGhpcy5wb3NpdGlvbik7dmFyIHM9ImFic29sdXRlIj09PXQ/MTotMSxuPSJhYnNvbHV0ZSIhPT10aGlzLmNzc1Bvc2l0aW9ufHx0aGlzLnNjcm9sbFBhcmVudFswXSE9PXRoaXMuZG9jdW1lbnRbMF0mJmUuY29udGFpbnModGhpcy5zY3JvbGxQYXJlbnRbMF0sdGhpcy5vZmZzZXRQYXJlbnRbMF0pP3RoaXMuc2Nyb2xsUGFyZW50OnRoaXMub2Zmc2V0UGFyZW50LGE9LyhodG1sfGJvZHkpL2kudGVzdChuWzBdLnRhZ05hbWUpO3JldHVybnt0b3A6aS50b3ArdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wKnMrdGhpcy5vZmZzZXQucGFyZW50LnRvcCpzLSgiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlvbj8tdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCk6YT8wOm4uc2Nyb2xsVG9wKCkpKnMsbGVmdDppLmxlZnQrdGhpcy5vZmZzZXQucmVsYXRpdmUubGVmdCpzK3RoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KnMtKCJmaXhlZCI9PT10aGlzLmNzc1Bvc2l0aW9uPy10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCk6YT8wOm4uc2Nyb2xsTGVmdCgpKSpzfX0sX2dlbmVyYXRlUG9zaXRpb246ZnVuY3Rpb24odCl7dmFyIGkscyxuPXRoaXMub3B0aW9ucyxhPXQucGFnZVgsbz10LnBhZ2VZLHI9ImFic29sdXRlIiE9PXRoaXMuY3NzUG9zaXRpb258fHRoaXMuc2Nyb2xsUGFyZW50WzBdIT09dGhpcy5kb2N1bWVudFswXSYmZS5jb250YWlucyh0aGlzLnNjcm9sbFBhcmVudFswXSx0aGlzLm9mZnNldFBhcmVudFswXSk/dGhpcy5zY3JvbGxQYXJlbnQ6dGhpcy5vZmZzZXRQYXJlbnQsaD0vKGh0bWx8Ym9keSkvaS50ZXN0KHJbMF0udGFnTmFtZSk7cmV0dXJuInJlbGF0aXZlIiE9PXRoaXMuY3NzUG9zaXRpb258fHRoaXMuc2Nyb2xsUGFyZW50WzBdIT09dGhpcy5kb2N1bWVudFswXSYmdGhpcy5zY3JvbGxQYXJlbnRbMF0hPT10aGlzLm9mZnNldFBhcmVudFswXXx8KHRoaXMub2Zmc2V0LnJlbGF0aXZlPXRoaXMuX2dldFJlbGF0aXZlT2Zmc2V0KCkpLHRoaXMub3JpZ2luYWxQb3NpdGlvbiYmKHRoaXMuY29udGFpbm1lbnQmJih0LnBhZ2VYLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ8dGhpcy5jb250YWlubWVudFswXSYmKGE9dGhpcy5jb250YWlubWVudFswXSt0aGlzLm9mZnNldC5jbGljay5sZWZ0KSx0LnBhZ2VZLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDx0aGlzLmNvbnRhaW5tZW50WzFdJiYobz10aGlzLmNvbnRhaW5tZW50WzFdK3RoaXMub2Zmc2V0LmNsaWNrLnRvcCksdC5wYWdlWC10aGlzLm9mZnNldC5jbGljay5sZWZ0PnRoaXMuY29udGFpbm1lbnRbMl0mJihhPXRoaXMuY29udGFpbm1lbnRbMl0rdGhpcy5vZmZzZXQuY2xpY2subGVmdCksdC5wYWdlWS10aGlzLm9mZnNldC5jbGljay50b3A+dGhpcy5jb250YWlubWVudFszXSYmKG89dGhpcy5jb250YWlubWVudFszXSt0aGlzLm9mZnNldC5jbGljay50b3ApKSxuLmdyaWQmJihpPXRoaXMub3JpZ2luYWxQYWdlWStNYXRoLnJvdW5kKChvLXRoaXMub3JpZ2luYWxQYWdlWSkvbi5ncmlkWzFdKSpuLmdyaWRbMV0sbz10aGlzLmNvbnRhaW5tZW50P2ktdGhpcy5vZmZzZXQuY2xpY2sudG9wPj10aGlzLmNvbnRhaW5tZW50WzFdJiZpLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDw9dGhpcy5jb250YWlubWVudFszXT9pOmktdGhpcy5vZmZzZXQuY2xpY2sudG9wPj10aGlzLmNvbnRhaW5tZW50WzFdP2ktbi5ncmlkWzFdOmkrbi5ncmlkWzFdOmkscz10aGlzLm9yaWdpbmFsUGFnZVgrTWF0aC5yb3VuZCgoYS10aGlzLm9yaWdpbmFsUGFnZVgpL24uZ3JpZFswXSkqbi5ncmlkWzBdLGE9dGhpcy5jb250YWlubWVudD9zLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+PXRoaXMuY29udGFpbm1lbnRbMF0mJnMtdGhpcy5vZmZzZXQuY2xpY2subGVmdDw9dGhpcy5jb250YWlubWVudFsyXT9zOnMtdGhpcy5vZmZzZXQuY2xpY2subGVmdD49dGhpcy5jb250YWlubWVudFswXT9zLW4uZ3JpZFswXTpzK24uZ3JpZFswXTpzKSkse3RvcDpvLXRoaXMub2Zmc2V0LmNsaWNrLnRvcC10aGlzLm9mZnNldC5yZWxhdGl2ZS50b3AtdGhpcy5vZmZzZXQucGFyZW50LnRvcCsoImZpeGVkIj09PXRoaXMuY3NzUG9zaXRpb24/LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpOmg/MDpyLnNjcm9sbFRvcCgpKSxsZWZ0OmEtdGhpcy5vZmZzZXQuY2xpY2subGVmdC10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KygiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlvbj8tdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpOmg/MDpyLnNjcm9sbExlZnQoKSl9fSxfcmVhcnJhbmdlOmZ1bmN0aW9uKGUsdCxpLHMpe2k/aVswXS5hcHBlbmRDaGlsZCh0aGlzLnBsYWNlaG9sZGVyWzBdKTp0Lml0ZW1bMF0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5wbGFjZWhvbGRlclswXSwiZG93biI9PT10aGlzLmRpcmVjdGlvbj90Lml0ZW1bMF06dC5pdGVtWzBdLm5leHRTaWJsaW5nKSx0aGlzLmNvdW50ZXI9dGhpcy5jb3VudGVyPysrdGhpcy5jb3VudGVyOjE7dmFyIG49dGhpcy5jb3VudGVyO3RoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7bj09PXRoaXMuY291bnRlciYmdGhpcy5yZWZyZXNoUG9zaXRpb25zKCFzKX0pfSxfY2xlYXI6ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBpKGUsdCxpKXtyZXR1cm4gZnVuY3Rpb24ocyl7aS5fdHJpZ2dlcihlLHMsdC5fdWlIYXNoKHQpKX19dGhpcy5yZXZlcnRpbmc9ITE7dmFyIHMsbj1bXTtpZighdGhpcy5fbm9GaW5hbFNvcnQmJnRoaXMuY3VycmVudEl0ZW0ucGFyZW50KCkubGVuZ3RoJiZ0aGlzLnBsYWNlaG9sZGVyLmJlZm9yZSh0aGlzLmN1cnJlbnRJdGVtKSx0aGlzLl9ub0ZpbmFsU29ydD1udWxsLHRoaXMuaGVscGVyWzBdPT09dGhpcy5jdXJyZW50SXRlbVswXSl7Zm9yKHMgaW4gdGhpcy5fc3RvcmVkQ1NTKSgiYXV0byI9PT10aGlzLl9zdG9yZWRDU1Nbc118fCJzdGF0aWMiPT09dGhpcy5fc3RvcmVkQ1NTW3NdKSYmKHRoaXMuX3N0b3JlZENTU1tzXT0iIik7dGhpcy5jdXJyZW50SXRlbS5jc3ModGhpcy5fc3RvcmVkQ1NTKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGVscGVyIil9ZWxzZSB0aGlzLmN1cnJlbnRJdGVtLnNob3coKTtmb3IodGhpcy5mcm9tT3V0c2lkZSYmIXQmJm4ucHVzaChmdW5jdGlvbihlKXt0aGlzLl90cmlnZ2VyKCJyZWNlaXZlIixlLHRoaXMuX3VpSGFzaCh0aGlzLmZyb21PdXRzaWRlKSl9KSwhdGhpcy5mcm9tT3V0c2lkZSYmdGhpcy5kb21Qb3NpdGlvbi5wcmV2PT09dGhpcy5jdXJyZW50SXRlbS5wcmV2KCkubm90KCIudWktc29ydGFibGUtaGVscGVyIilbMF0mJnRoaXMuZG9tUG9zaXRpb24ucGFyZW50PT09dGhpcy5jdXJyZW50SXRlbS5wYXJlbnQoKVswXXx8dHx8bi5wdXNoKGZ1bmN0aW9uKGUpe3RoaXMuX3RyaWdnZXIoInVwZGF0ZSIsZSx0aGlzLl91aUhhc2goKSl9KSx0aGlzIT09dGhpcy5jdXJyZW50Q29udGFpbmVyJiYodHx8KG4ucHVzaChmdW5jdGlvbihlKXt0aGlzLl90cmlnZ2VyKCJyZW1vdmUiLGUsdGhpcy5fdWlIYXNoKCkpfSksbi5wdXNoKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtlLl90cmlnZ2VyKCJyZWNlaXZlIix0LHRoaXMuX3VpSGFzaCh0aGlzKSl9fS5jYWxsKHRoaXMsdGhpcy5jdXJyZW50Q29udGFpbmVyKSksbi5wdXNoKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtlLl90cmlnZ2VyKCJ1cGRhdGUiLHQsdGhpcy5fdWlIYXNoKHRoaXMpKX19LmNhbGwodGhpcyx0aGlzLmN1cnJlbnRDb250YWluZXIpKSkpLHM9dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO3M+PTA7cy0tKXR8fG4ucHVzaChpKCJkZWFjdGl2YXRlIix0aGlzLHRoaXMuY29udGFpbmVyc1tzXSkpLHRoaXMuY29udGFpbmVyc1tzXS5jb250YWluZXJDYWNoZS5vdmVyJiYobi5wdXNoKGkoIm91dCIsdGhpcyx0aGlzLmNvbnRhaW5lcnNbc10pKSx0aGlzLmNvbnRhaW5lcnNbc10uY29udGFpbmVyQ2FjaGUub3Zlcj0wKTtpZih0aGlzLnN0b3JlZEN1cnNvciYmKHRoaXMuZG9jdW1lbnQuZmluZCgiYm9keSIpLmNzcygiY3Vyc29yIix0aGlzLnN0b3JlZEN1cnNvciksdGhpcy5zdG9yZWRTdHlsZXNoZWV0LnJlbW92ZSgpKSx0aGlzLl9zdG9yZWRPcGFjaXR5JiZ0aGlzLmhlbHBlci5jc3MoIm9wYWNpdHkiLHRoaXMuX3N0b3JlZE9wYWNpdHkpLHRoaXMuX3N0b3JlZFpJbmRleCYmdGhpcy5oZWxwZXIuY3NzKCJ6SW5kZXgiLCJhdXRvIj09PXRoaXMuX3N0b3JlZFpJbmRleD8iIjp0aGlzLl9zdG9yZWRaSW5kZXgpLHRoaXMuZHJhZ2dpbmc9ITEsdHx8dGhpcy5fdHJpZ2dlcigiYmVmb3JlU3RvcCIsZSx0aGlzLl91aUhhc2goKSksdGhpcy5wbGFjZWhvbGRlclswXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMucGxhY2Vob2xkZXJbMF0pLHRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbHx8KHRoaXMuaGVscGVyWzBdIT09dGhpcy5jdXJyZW50SXRlbVswXSYmdGhpcy5oZWxwZXIucmVtb3ZlKCksdGhpcy5oZWxwZXI9bnVsbCksIXQpe2ZvcihzPTA7bi5sZW5ndGg+cztzKyspbltzXS5jYWxsKHRoaXMsZSk7dGhpcy5fdHJpZ2dlcigic3RvcCIsZSx0aGlzLl91aUhhc2goKSl9cmV0dXJuIHRoaXMuZnJvbU91dHNpZGU9ITEsIXRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbH0sX3RyaWdnZXI6ZnVuY3Rpb24oKXtlLldpZGdldC5wcm90b3R5cGUuX3RyaWdnZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpPT09ITEmJnRoaXMuY2FuY2VsKCl9LF91aUhhc2g6ZnVuY3Rpb24odCl7dmFyIGk9dHx8dGhpcztyZXR1cm57aGVscGVyOmkuaGVscGVyLHBsYWNlaG9sZGVyOmkucGxhY2Vob2xkZXJ8fGUoW10pLHBvc2l0aW9uOmkucG9zaXRpb24sb3JpZ2luYWxQb3NpdGlvbjppLm9yaWdpbmFsUG9zaXRpb24sb2Zmc2V0OmkucG9zaXRpb25BYnMsaXRlbTppLmN1cnJlbnRJdGVtLHNlbmRlcjp0P3QuZWxlbWVudDpudWxsfX19KSxlLndpZGdldCgidWkuYWNjb3JkaW9uIix7dmVyc2lvbjoiMS4xMS40IixvcHRpb25zOnthY3RpdmU6MCxhbmltYXRlOnt9LGNvbGxhcHNpYmxlOiExLGV2ZW50OiJjbGljayIsaGVhZGVyOiI+IGxpID4gOmZpcnN0LWNoaWxkLD4gOm5vdChsaSk6ZXZlbiIsaGVpZ2h0U3R5bGU6ImF1dG8iLGljb25zOnthY3RpdmVIZWFkZXI6InVpLWljb24tdHJpYW5nbGUtMS1zIixoZWFkZXI6InVpLWljb24tdHJpYW5nbGUtMS1lIn0sYWN0aXZhdGU6bnVsbCxiZWZvcmVBY3RpdmF0ZTpudWxsfSxoaWRlUHJvcHM6e2JvcmRlclRvcFdpZHRoOiJoaWRlIixib3JkZXJCb3R0b21XaWR0aDoiaGlkZSIscGFkZGluZ1RvcDoiaGlkZSIscGFkZGluZ0JvdHRvbToiaGlkZSIsaGVpZ2h0OiJoaWRlIn0sc2hvd1Byb3BzOntib3JkZXJUb3BXaWR0aDoic2hvdyIsYm9yZGVyQm90dG9tV2lkdGg6InNob3ciLHBhZGRpbmdUb3A6InNob3ciLHBhZGRpbmdCb3R0b206InNob3ciLGhlaWdodDoic2hvdyJ9LF9jcmVhdGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnM7dGhpcy5wcmV2U2hvdz10aGlzLnByZXZIaWRlPWUoKSx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLWFjY29yZGlvbiB1aS13aWRnZXQgdWktaGVscGVyLXJlc2V0IikuYXR0cigicm9sZSIsInRhYmxpc3QiKSx0LmNvbGxhcHNpYmxlfHx0LmFjdGl2ZSE9PSExJiZudWxsIT10LmFjdGl2ZXx8KHQuYWN0aXZlPTApLHRoaXMuX3Byb2Nlc3NQYW5lbHMoKSwwPnQuYWN0aXZlJiYodC5hY3RpdmUrPXRoaXMuaGVhZGVycy5sZW5ndGgpLHRoaXMuX3JlZnJlc2goKX0sX2dldENyZWF0ZUV2ZW50RGF0YTpmdW5jdGlvbigpe3JldHVybntoZWFkZXI6dGhpcy5hY3RpdmUscGFuZWw6dGhpcy5hY3RpdmUubGVuZ3RoP3RoaXMuYWN0aXZlLm5leHQoKTplKCl9fSxfY3JlYXRlSWNvbnM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMuaWNvbnM7dCYmKGUoIjxzcGFuPiIpLmFkZENsYXNzKCJ1aS1hY2NvcmRpb24taGVhZGVyLWljb24gdWktaWNvbiAiK3QuaGVhZGVyKS5wcmVwZW5kVG8odGhpcy5oZWFkZXJzKSx0aGlzLmFjdGl2ZS5jaGlsZHJlbigiLnVpLWFjY29yZGlvbi1oZWFkZXItaWNvbiIpLnJlbW92ZUNsYXNzKHQuaGVhZGVyKS5hZGRDbGFzcyh0LmFjdGl2ZUhlYWRlciksdGhpcy5oZWFkZXJzLmFkZENsYXNzKCJ1aS1hY2NvcmRpb24taWNvbnMiKSl9LF9kZXN0cm95SWNvbnM6ZnVuY3Rpb24oKXt0aGlzLmhlYWRlcnMucmVtb3ZlQ2xhc3MoInVpLWFjY29yZGlvbi1pY29ucyIpLmNoaWxkcmVuKCIudWktYWNjb3JkaW9uLWhlYWRlci1pY29uIikucmVtb3ZlKCl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dmFyIGU7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1hY2NvcmRpb24gdWktd2lkZ2V0IHVpLWhlbHBlci1yZXNldCIpLnJlbW92ZUF0dHIoInJvbGUiKSx0aGlzLmhlYWRlcnMucmVtb3ZlQ2xhc3MoInVpLWFjY29yZGlvbi1oZWFkZXIgdWktYWNjb3JkaW9uLWhlYWRlci1hY3RpdmUgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIHVpLXN0YXRlLWFjdGl2ZSB1aS1zdGF0ZS1kaXNhYmxlZCB1aS1jb3JuZXItdG9wIikucmVtb3ZlQXR0cigicm9sZSIpLnJlbW92ZUF0dHIoImFyaWEtZXhwYW5kZWQiKS5yZW1vdmVBdHRyKCJhcmlhLXNlbGVjdGVkIikucmVtb3ZlQXR0cigiYXJpYS1jb250cm9scyIpLnJlbW92ZUF0dHIoInRhYkluZGV4IikucmVtb3ZlVW5pcXVlSWQoKSx0aGlzLl9kZXN0cm95SWNvbnMoKSxlPXRoaXMuaGVhZGVycy5uZXh0KCkucmVtb3ZlQ2xhc3MoInVpLWhlbHBlci1yZXNldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYm90dG9tIHVpLWFjY29yZGlvbi1jb250ZW50IHVpLWFjY29yZGlvbi1jb250ZW50LWFjdGl2ZSB1aS1zdGF0ZS1kaXNhYmxlZCIpLmNzcygiZGlzcGxheSIsIiIpLnJlbW92ZUF0dHIoInJvbGUiKS5yZW1vdmVBdHRyKCJhcmlhLWhpZGRlbiIpLnJlbW92ZUF0dHIoImFyaWEtbGFiZWxsZWRieSIpLnJlbW92ZVVuaXF1ZUlkKCksImNvbnRlbnQiIT09dGhpcy5vcHRpb25zLmhlaWdodFN0eWxlJiZlLmNzcygiaGVpZ2h0IiwiIil9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXtyZXR1cm4iYWN0aXZlIj09PWU/KHRoaXMuX2FjdGl2YXRlKHQpLHZvaWQgMCk6KCJldmVudCI9PT1lJiYodGhpcy5vcHRpb25zLmV2ZW50JiZ0aGlzLl9vZmYodGhpcy5oZWFkZXJzLHRoaXMub3B0aW9ucy5ldmVudCksdGhpcy5fc2V0dXBFdmVudHModCkpLHRoaXMuX3N1cGVyKGUsdCksImNvbGxhcHNpYmxlIiE9PWV8fHR8fHRoaXMub3B0aW9ucy5hY3RpdmUhPT0hMXx8dGhpcy5fYWN0aXZhdGUoMCksImljb25zIj09PWUmJih0aGlzLl9kZXN0cm95SWNvbnMoKSx0JiZ0aGlzLl9jcmVhdGVJY29ucygpKSwiZGlzYWJsZWQiPT09ZSYmKHRoaXMuZWxlbWVudC50b2dnbGVDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiLCEhdCkuYXR0cigiYXJpYS1kaXNhYmxlZCIsdCksdGhpcy5oZWFkZXJzLmFkZCh0aGlzLmhlYWRlcnMubmV4dCgpKS50b2dnbGVDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiLCEhdCkpLHZvaWQgMCl9LF9rZXlkb3duOmZ1bmN0aW9uKHQpe2lmKCF0LmFsdEtleSYmIXQuY3RybEtleSl7dmFyIGk9ZS51aS5rZXlDb2RlLHM9dGhpcy5oZWFkZXJzLmxlbmd0aCxuPXRoaXMuaGVhZGVycy5pbmRleCh0LnRhcmdldCksYT0hMTtzd2l0Y2godC5rZXlDb2RlKXtjYXNlIGkuUklHSFQ6Y2FzZSBpLkRPV046YT10aGlzLmhlYWRlcnNbKG4rMSklc107YnJlYWs7Y2FzZSBpLkxFRlQ6Y2FzZSBpLlVQOmE9dGhpcy5oZWFkZXJzWyhuLTErcyklc107YnJlYWs7Y2FzZSBpLlNQQUNFOmNhc2UgaS5FTlRFUjp0aGlzLl9ldmVudEhhbmRsZXIodCk7YnJlYWs7Y2FzZSBpLkhPTUU6YT10aGlzLmhlYWRlcnNbMF07YnJlYWs7Y2FzZSBpLkVORDphPXRoaXMuaGVhZGVyc1tzLTFdfWEmJihlKHQudGFyZ2V0KS5hdHRyKCJ0YWJJbmRleCIsLTEpLGUoYSkuYXR0cigidGFiSW5kZXgiLDApLGEuZm9jdXMoKSx0LnByZXZlbnREZWZhdWx0KCkpfX0sX3BhbmVsS2V5RG93bjpmdW5jdGlvbih0KXt0LmtleUNvZGU9PT1lLnVpLmtleUNvZGUuVVAmJnQuY3RybEtleSYmZSh0LmN1cnJlbnRUYXJnZXQpLnByZXYoKS5mb2N1cygpfSxyZWZyZXNoOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zO3RoaXMuX3Byb2Nlc3NQYW5lbHMoKSx0LmFjdGl2ZT09PSExJiZ0LmNvbGxhcHNpYmxlPT09ITB8fCF0aGlzLmhlYWRlcnMubGVuZ3RoPyh0LmFjdGl2ZT0hMSx0aGlzLmFjdGl2ZT1lKCkpOnQuYWN0aXZlPT09ITE/dGhpcy5fYWN0aXZhdGUoMCk6dGhpcy5hY3RpdmUubGVuZ3RoJiYhZS5jb250YWlucyh0aGlzLmVsZW1lbnRbMF0sdGhpcy5hY3RpdmVbMF0pP3RoaXMuaGVhZGVycy5sZW5ndGg9PT10aGlzLmhlYWRlcnMuZmluZCgiLnVpLXN0YXRlLWRpc2FibGVkIikubGVuZ3RoPyh0LmFjdGl2ZT0hMSx0aGlzLmFjdGl2ZT1lKCkpOnRoaXMuX2FjdGl2YXRlKE1hdGgubWF4KDAsdC5hY3RpdmUtMSkpOnQuYWN0aXZlPXRoaXMuaGVhZGVycy5pbmRleCh0aGlzLmFjdGl2ZSksdGhpcy5fZGVzdHJveUljb25zKCksdGhpcy5fcmVmcmVzaCgpfSxfcHJvY2Vzc1BhbmVsczpmdW5jdGlvbigpe3ZhciBlPXRoaXMuaGVhZGVycyx0PXRoaXMucGFuZWxzO3RoaXMuaGVhZGVycz10aGlzLmVsZW1lbnQuZmluZCh0aGlzLm9wdGlvbnMuaGVhZGVyKS5hZGRDbGFzcygidWktYWNjb3JkaW9uLWhlYWRlciB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwiKSx0aGlzLnBhbmVscz10aGlzLmhlYWRlcnMubmV4dCgpLmFkZENsYXNzKCJ1aS1hY2NvcmRpb24tY29udGVudCB1aS1oZWxwZXItcmVzZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWJvdHRvbSIpLmZpbHRlcigiOm5vdCgudWktYWNjb3JkaW9uLWNvbnRlbnQtYWN0aXZlKSIpLmhpZGUoKSx0JiYodGhpcy5fb2ZmKGUubm90KHRoaXMuaGVhZGVycykpLHRoaXMuX29mZih0Lm5vdCh0aGlzLnBhbmVscykpKX0sX3JlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgdCxpPXRoaXMub3B0aW9ucyxzPWkuaGVpZ2h0U3R5bGUsbj10aGlzLmVsZW1lbnQucGFyZW50KCk7dGhpcy5hY3RpdmU9dGhpcy5fZmluZEFjdGl2ZShpLmFjdGl2ZSkuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1oZWFkZXItYWN0aXZlIHVpLXN0YXRlLWFjdGl2ZSB1aS1jb3JuZXItdG9wIikucmVtb3ZlQ2xhc3MoInVpLWNvcm5lci1hbGwiKSx0aGlzLmFjdGl2ZS5uZXh0KCkuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1jb250ZW50LWFjdGl2ZSIpLnNob3coKSx0aGlzLmhlYWRlcnMuYXR0cigicm9sZSIsInRhYiIpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLGk9dC51bmlxdWVJZCgpLmF0dHIoImlkIikscz10Lm5leHQoKSxuPXMudW5pcXVlSWQoKS5hdHRyKCJpZCIpO3QuYXR0cigiYXJpYS1jb250cm9scyIsbikscy5hdHRyKCJhcmlhLWxhYmVsbGVkYnkiLGkpfSkubmV4dCgpLmF0dHIoInJvbGUiLCJ0YWJwYW5lbCIpLHRoaXMuaGVhZGVycy5ub3QodGhpcy5hY3RpdmUpLmF0dHIoeyJhcmlhLXNlbGVjdGVkIjoiZmFsc2UiLCJhcmlhLWV4cGFuZGVkIjoiZmFsc2UiLHRhYkluZGV4Oi0xfSkubmV4dCgpLmF0dHIoeyJhcmlhLWhpZGRlbiI6InRydWUifSkuaGlkZSgpLHRoaXMuYWN0aXZlLmxlbmd0aD90aGlzLmFjdGl2ZS5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6InRydWUiLCJhcmlhLWV4cGFuZGVkIjoidHJ1ZSIsdGFiSW5kZXg6MH0pLm5leHQoKS5hdHRyKHsiYXJpYS1oaWRkZW4iOiJmYWxzZSJ9KTp0aGlzLmhlYWRlcnMuZXEoMCkuYXR0cigidGFiSW5kZXgiLDApLHRoaXMuX2NyZWF0ZUljb25zKCksdGhpcy5fc2V0dXBFdmVudHMoaS5ldmVudCksImZpbGwiPT09cz8odD1uLmhlaWdodCgpLHRoaXMuZWxlbWVudC5zaWJsaW5ncygiOnZpc2libGUiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9ZSh0aGlzKSxzPWkuY3NzKCJwb3NpdGlvbiIpOyJhYnNvbHV0ZSIhPT1zJiYiZml4ZWQiIT09cyYmKHQtPWkub3V0ZXJIZWlnaHQoITApKX0pLHRoaXMuaGVhZGVycy5lYWNoKGZ1bmN0aW9uKCl7dC09ZSh0aGlzKS5vdXRlckhlaWdodCghMCl9KSx0aGlzLmhlYWRlcnMubmV4dCgpLmVhY2goZnVuY3Rpb24oKXtlKHRoaXMpLmhlaWdodChNYXRoLm1heCgwLHQtZSh0aGlzKS5pbm5lckhlaWdodCgpK2UodGhpcykuaGVpZ2h0KCkpKX0pLmNzcygib3ZlcmZsb3ciLCJhdXRvIikpOiJhdXRvIj09PXMmJih0PTAsdGhpcy5oZWFkZXJzLm5leHQoKS5lYWNoKGZ1bmN0aW9uKCl7dD1NYXRoLm1heCh0LGUodGhpcykuY3NzKCJoZWlnaHQiLCIiKS5oZWlnaHQoKSl9KS5oZWlnaHQodCkpfSxfYWN0aXZhdGU6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5fZmluZEFjdGl2ZSh0KVswXTtpIT09dGhpcy5hY3RpdmVbMF0mJihpPWl8fHRoaXMuYWN0aXZlWzBdLHRoaXMuX2V2ZW50SGFuZGxlcih7dGFyZ2V0OmksY3VycmVudFRhcmdldDppLHByZXZlbnREZWZhdWx0OmUubm9vcH0pKX0sX2ZpbmRBY3RpdmU6ZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0P3RoaXMuaGVhZGVycy5lcSh0KTplKCl9LF9zZXR1cEV2ZW50czpmdW5jdGlvbih0KXt2YXIgaT17a2V5ZG93bjoiX2tleWRvd24ifTt0JiZlLmVhY2godC5zcGxpdCgiICIpLGZ1bmN0aW9uKGUsdCl7aVt0XT0iX2V2ZW50SGFuZGxlciJ9KSx0aGlzLl9vZmYodGhpcy5oZWFkZXJzLmFkZCh0aGlzLmhlYWRlcnMubmV4dCgpKSksdGhpcy5fb24odGhpcy5oZWFkZXJzLGkpLHRoaXMuX29uKHRoaXMuaGVhZGVycy5uZXh0KCkse2tleWRvd246Il9wYW5lbEtleURvd24ifSksdGhpcy5faG92ZXJhYmxlKHRoaXMuaGVhZGVycyksdGhpcy5fZm9jdXNhYmxlKHRoaXMuaGVhZGVycyl9LF9ldmVudEhhbmRsZXI6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5vcHRpb25zLHM9dGhpcy5hY3RpdmUsbj1lKHQuY3VycmVudFRhcmdldCksYT1uWzBdPT09c1swXSxvPWEmJmkuY29sbGFwc2libGUscj1vP2UoKTpuLm5leHQoKSxoPXMubmV4dCgpLGw9e29sZEhlYWRlcjpzLG9sZFBhbmVsOmgsbmV3SGVhZGVyOm8/ZSgpOm4sbmV3UGFuZWw6cn07CnQucHJldmVudERlZmF1bHQoKSxhJiYhaS5jb2xsYXBzaWJsZXx8dGhpcy5fdHJpZ2dlcigiYmVmb3JlQWN0aXZhdGUiLHQsbCk9PT0hMXx8KGkuYWN0aXZlPW8/ITE6dGhpcy5oZWFkZXJzLmluZGV4KG4pLHRoaXMuYWN0aXZlPWE/ZSgpOm4sdGhpcy5fdG9nZ2xlKGwpLHMucmVtb3ZlQ2xhc3MoInVpLWFjY29yZGlvbi1oZWFkZXItYWN0aXZlIHVpLXN0YXRlLWFjdGl2ZSIpLGkuaWNvbnMmJnMuY2hpbGRyZW4oIi51aS1hY2NvcmRpb24taGVhZGVyLWljb24iKS5yZW1vdmVDbGFzcyhpLmljb25zLmFjdGl2ZUhlYWRlcikuYWRkQ2xhc3MoaS5pY29ucy5oZWFkZXIpLGF8fChuLnJlbW92ZUNsYXNzKCJ1aS1jb3JuZXItYWxsIikuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1oZWFkZXItYWN0aXZlIHVpLXN0YXRlLWFjdGl2ZSB1aS1jb3JuZXItdG9wIiksaS5pY29ucyYmbi5jaGlsZHJlbigiLnVpLWFjY29yZGlvbi1oZWFkZXItaWNvbiIpLnJlbW92ZUNsYXNzKGkuaWNvbnMuaGVhZGVyKS5hZGRDbGFzcyhpLmljb25zLmFjdGl2ZUhlYWRlciksbi5uZXh0KCkuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1jb250ZW50LWFjdGl2ZSIpKSl9LF90b2dnbGU6ZnVuY3Rpb24odCl7dmFyIGk9dC5uZXdQYW5lbCxzPXRoaXMucHJldlNob3cubGVuZ3RoP3RoaXMucHJldlNob3c6dC5vbGRQYW5lbDt0aGlzLnByZXZTaG93LmFkZCh0aGlzLnByZXZIaWRlKS5zdG9wKCEwLCEwKSx0aGlzLnByZXZTaG93PWksdGhpcy5wcmV2SGlkZT1zLHRoaXMub3B0aW9ucy5hbmltYXRlP3RoaXMuX2FuaW1hdGUoaSxzLHQpOihzLmhpZGUoKSxpLnNob3coKSx0aGlzLl90b2dnbGVDb21wbGV0ZSh0KSkscy5hdHRyKHsiYXJpYS1oaWRkZW4iOiJ0cnVlIn0pLHMucHJldigpLmF0dHIoeyJhcmlhLXNlbGVjdGVkIjoiZmFsc2UiLCJhcmlhLWV4cGFuZGVkIjoiZmFsc2UifSksaS5sZW5ndGgmJnMubGVuZ3RoP3MucHJldigpLmF0dHIoe3RhYkluZGV4Oi0xLCJhcmlhLWV4cGFuZGVkIjoiZmFsc2UifSk6aS5sZW5ndGgmJnRoaXMuaGVhZGVycy5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gMD09PXBhcnNlSW50KGUodGhpcykuYXR0cigidGFiSW5kZXgiKSwxMCl9KS5hdHRyKCJ0YWJJbmRleCIsLTEpLGkuYXR0cigiYXJpYS1oaWRkZW4iLCJmYWxzZSIpLnByZXYoKS5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6InRydWUiLCJhcmlhLWV4cGFuZGVkIjoidHJ1ZSIsdGFiSW5kZXg6MH0pfSxfYW5pbWF0ZTpmdW5jdGlvbihlLHQsaSl7dmFyIHMsbixhLG89dGhpcyxyPTAsaD1lLmNzcygiYm94LXNpemluZyIpLGw9ZS5sZW5ndGgmJighdC5sZW5ndGh8fGUuaW5kZXgoKTx0LmluZGV4KCkpLHU9dGhpcy5vcHRpb25zLmFuaW1hdGV8fHt9LGQ9bCYmdS5kb3dufHx1LGM9ZnVuY3Rpb24oKXtvLl90b2dnbGVDb21wbGV0ZShpKX07cmV0dXJuIm51bWJlciI9PXR5cGVvZiBkJiYoYT1kKSwic3RyaW5nIj09dHlwZW9mIGQmJihuPWQpLG49bnx8ZC5lYXNpbmd8fHUuZWFzaW5nLGE9YXx8ZC5kdXJhdGlvbnx8dS5kdXJhdGlvbix0Lmxlbmd0aD9lLmxlbmd0aD8ocz1lLnNob3coKS5vdXRlckhlaWdodCgpLHQuYW5pbWF0ZSh0aGlzLmhpZGVQcm9wcyx7ZHVyYXRpb246YSxlYXNpbmc6bixzdGVwOmZ1bmN0aW9uKGUsdCl7dC5ub3c9TWF0aC5yb3VuZChlKX19KSxlLmhpZGUoKS5hbmltYXRlKHRoaXMuc2hvd1Byb3BzLHtkdXJhdGlvbjphLGVhc2luZzpuLGNvbXBsZXRlOmMsc3RlcDpmdW5jdGlvbihlLGkpe2kubm93PU1hdGgucm91bmQoZSksImhlaWdodCIhPT1pLnByb3A/ImNvbnRlbnQtYm94Ij09PWgmJihyKz1pLm5vdyk6ImNvbnRlbnQiIT09by5vcHRpb25zLmhlaWdodFN0eWxlJiYoaS5ub3c9TWF0aC5yb3VuZChzLXQub3V0ZXJIZWlnaHQoKS1yKSxyPTApfX0pLHZvaWQgMCk6dC5hbmltYXRlKHRoaXMuaGlkZVByb3BzLGEsbixjKTplLmFuaW1hdGUodGhpcy5zaG93UHJvcHMsYSxuLGMpfSxfdG9nZ2xlQ29tcGxldGU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vbGRQYW5lbDt0LnJlbW92ZUNsYXNzKCJ1aS1hY2NvcmRpb24tY29udGVudC1hY3RpdmUiKS5wcmV2KCkucmVtb3ZlQ2xhc3MoInVpLWNvcm5lci10b3AiKS5hZGRDbGFzcygidWktY29ybmVyLWFsbCIpLHQubGVuZ3RoJiYodC5wYXJlbnQoKVswXS5jbGFzc05hbWU9dC5wYXJlbnQoKVswXS5jbGFzc05hbWUpLHRoaXMuX3RyaWdnZXIoImFjdGl2YXRlIixudWxsLGUpfX0pLGUud2lkZ2V0KCJ1aS5tZW51Iix7dmVyc2lvbjoiMS4xMS40IixkZWZhdWx0RWxlbWVudDoiPHVsPiIsZGVsYXk6MzAwLG9wdGlvbnM6e2ljb25zOntzdWJtZW51OiJ1aS1pY29uLWNhcmF0LTEtZSJ9LGl0ZW1zOiI+ICoiLG1lbnVzOiJ1bCIscG9zaXRpb246e215OiJsZWZ0LTEgdG9wIixhdDoicmlnaHQgdG9wIn0scm9sZToibWVudSIsYmx1cjpudWxsLGZvY3VzOm51bGwsc2VsZWN0Om51bGx9LF9jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmFjdGl2ZU1lbnU9dGhpcy5lbGVtZW50LHRoaXMubW91c2VIYW5kbGVkPSExLHRoaXMuZWxlbWVudC51bmlxdWVJZCgpLmFkZENsYXNzKCJ1aS1tZW51IHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCIpLnRvZ2dsZUNsYXNzKCJ1aS1tZW51LWljb25zIiwhIXRoaXMuZWxlbWVudC5maW5kKCIudWktaWNvbiIpLmxlbmd0aCkuYXR0cih7cm9sZTp0aGlzLm9wdGlvbnMucm9sZSx0YWJJbmRleDowfSksdGhpcy5vcHRpb25zLmRpc2FibGVkJiZ0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIikuYXR0cigiYXJpYS1kaXNhYmxlZCIsInRydWUiKSx0aGlzLl9vbih7Im1vdXNlZG93biAudWktbWVudS1pdGVtIjpmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCl9LCJjbGljayAudWktbWVudS1pdGVtIjpmdW5jdGlvbih0KXt2YXIgaT1lKHQudGFyZ2V0KTshdGhpcy5tb3VzZUhhbmRsZWQmJmkubm90KCIudWktc3RhdGUtZGlzYWJsZWQiKS5sZW5ndGgmJih0aGlzLnNlbGVjdCh0KSx0LmlzUHJvcGFnYXRpb25TdG9wcGVkKCl8fCh0aGlzLm1vdXNlSGFuZGxlZD0hMCksaS5oYXMoIi51aS1tZW51IikubGVuZ3RoP3RoaXMuZXhwYW5kKHQpOiF0aGlzLmVsZW1lbnQuaXMoIjpmb2N1cyIpJiZlKHRoaXMuZG9jdW1lbnRbMF0uYWN0aXZlRWxlbWVudCkuY2xvc2VzdCgiLnVpLW1lbnUiKS5sZW5ndGgmJih0aGlzLmVsZW1lbnQudHJpZ2dlcigiZm9jdXMiLFshMF0pLHRoaXMuYWN0aXZlJiYxPT09dGhpcy5hY3RpdmUucGFyZW50cygiLnVpLW1lbnUiKS5sZW5ndGgmJmNsZWFyVGltZW91dCh0aGlzLnRpbWVyKSkpfSwibW91c2VlbnRlciAudWktbWVudS1pdGVtIjpmdW5jdGlvbih0KXtpZighdGhpcy5wcmV2aW91c0ZpbHRlcil7dmFyIGk9ZSh0LmN1cnJlbnRUYXJnZXQpO2kuc2libGluZ3MoIi51aS1zdGF0ZS1hY3RpdmUiKS5yZW1vdmVDbGFzcygidWktc3RhdGUtYWN0aXZlIiksdGhpcy5mb2N1cyh0LGkpfX0sbW91c2VsZWF2ZToiY29sbGFwc2VBbGwiLCJtb3VzZWxlYXZlIC51aS1tZW51IjoiY29sbGFwc2VBbGwiLGZvY3VzOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy5hY3RpdmV8fHRoaXMuZWxlbWVudC5maW5kKHRoaXMub3B0aW9ucy5pdGVtcykuZXEoMCk7dHx8dGhpcy5mb2N1cyhlLGkpfSxibHVyOmZ1bmN0aW9uKHQpe3RoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7ZS5jb250YWlucyh0aGlzLmVsZW1lbnRbMF0sdGhpcy5kb2N1bWVudFswXS5hY3RpdmVFbGVtZW50KXx8dGhpcy5jb2xsYXBzZUFsbCh0KX0pfSxrZXlkb3duOiJfa2V5ZG93biJ9KSx0aGlzLnJlZnJlc2goKSx0aGlzLl9vbih0aGlzLmRvY3VtZW50LHtjbGljazpmdW5jdGlvbihlKXt0aGlzLl9jbG9zZU9uRG9jdW1lbnRDbGljayhlKSYmdGhpcy5jb2xsYXBzZUFsbChlKSx0aGlzLm1vdXNlSGFuZGxlZD0hMX19KX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQucmVtb3ZlQXR0cigiYXJpYS1hY3RpdmVkZXNjZW5kYW50IikuZmluZCgiLnVpLW1lbnUiKS5hZGRCYWNrKCkucmVtb3ZlQ2xhc3MoInVpLW1lbnUgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLW1lbnUtaWNvbnMgdWktZnJvbnQiKS5yZW1vdmVBdHRyKCJyb2xlIikucmVtb3ZlQXR0cigidGFiSW5kZXgiKS5yZW1vdmVBdHRyKCJhcmlhLWxhYmVsbGVkYnkiKS5yZW1vdmVBdHRyKCJhcmlhLWV4cGFuZGVkIikucmVtb3ZlQXR0cigiYXJpYS1oaWRkZW4iKS5yZW1vdmVBdHRyKCJhcmlhLWRpc2FibGVkIikucmVtb3ZlVW5pcXVlSWQoKS5zaG93KCksdGhpcy5lbGVtZW50LmZpbmQoIi51aS1tZW51LWl0ZW0iKS5yZW1vdmVDbGFzcygidWktbWVudS1pdGVtIikucmVtb3ZlQXR0cigicm9sZSIpLnJlbW92ZUF0dHIoImFyaWEtZGlzYWJsZWQiKS5yZW1vdmVVbmlxdWVJZCgpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpLnJlbW92ZUF0dHIoInRhYkluZGV4IikucmVtb3ZlQXR0cigicm9sZSIpLnJlbW92ZUF0dHIoImFyaWEtaGFzcG9wdXAiKS5jaGlsZHJlbigpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpO3QuZGF0YSgidWktbWVudS1zdWJtZW51LWNhcmF0IikmJnQucmVtb3ZlKCl9KSx0aGlzLmVsZW1lbnQuZmluZCgiLnVpLW1lbnUtZGl2aWRlciIpLnJlbW92ZUNsYXNzKCJ1aS1tZW51LWRpdmlkZXIgdWktd2lkZ2V0LWNvbnRlbnQiKX0sX2tleWRvd246ZnVuY3Rpb24odCl7dmFyIGkscyxuLGEsbz0hMDtzd2l0Y2godC5rZXlDb2RlKXtjYXNlIGUudWkua2V5Q29kZS5QQUdFX1VQOnRoaXMucHJldmlvdXNQYWdlKHQpO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLlBBR0VfRE9XTjp0aGlzLm5leHRQYWdlKHQpO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkhPTUU6dGhpcy5fbW92ZSgiZmlyc3QiLCJmaXJzdCIsdCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuRU5EOnRoaXMuX21vdmUoImxhc3QiLCJsYXN0Iix0KTticmVhaztjYXNlIGUudWkua2V5Q29kZS5VUDp0aGlzLnByZXZpb3VzKHQpO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkRPV046dGhpcy5uZXh0KHQpO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkxFRlQ6dGhpcy5jb2xsYXBzZSh0KTticmVhaztjYXNlIGUudWkua2V5Q29kZS5SSUdIVDp0aGlzLmFjdGl2ZSYmIXRoaXMuYWN0aXZlLmlzKCIudWktc3RhdGUtZGlzYWJsZWQiKSYmdGhpcy5leHBhbmQodCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuRU5URVI6Y2FzZSBlLnVpLmtleUNvZGUuU1BBQ0U6dGhpcy5fYWN0aXZhdGUodCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuRVNDQVBFOnRoaXMuY29sbGFwc2UodCk7YnJlYWs7ZGVmYXVsdDpvPSExLHM9dGhpcy5wcmV2aW91c0ZpbHRlcnx8IiIsbj1TdHJpbmcuZnJvbUNoYXJDb2RlKHQua2V5Q29kZSksYT0hMSxjbGVhclRpbWVvdXQodGhpcy5maWx0ZXJUaW1lciksbj09PXM/YT0hMDpuPXMrbixpPXRoaXMuX2ZpbHRlck1lbnVJdGVtcyhuKSxpPWEmJi0xIT09aS5pbmRleCh0aGlzLmFjdGl2ZS5uZXh0KCkpP3RoaXMuYWN0aXZlLm5leHRBbGwoIi51aS1tZW51LWl0ZW0iKTppLGkubGVuZ3RofHwobj1TdHJpbmcuZnJvbUNoYXJDb2RlKHQua2V5Q29kZSksaT10aGlzLl9maWx0ZXJNZW51SXRlbXMobikpLGkubGVuZ3RoPyh0aGlzLmZvY3VzKHQsaSksdGhpcy5wcmV2aW91c0ZpbHRlcj1uLHRoaXMuZmlsdGVyVGltZXI9dGhpcy5fZGVsYXkoZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5wcmV2aW91c0ZpbHRlcn0sMWUzKSk6ZGVsZXRlIHRoaXMucHJldmlvdXNGaWx0ZXJ9byYmdC5wcmV2ZW50RGVmYXVsdCgpfSxfYWN0aXZhdGU6ZnVuY3Rpb24oZSl7dGhpcy5hY3RpdmUuaXMoIi51aS1zdGF0ZS1kaXNhYmxlZCIpfHwodGhpcy5hY3RpdmUuaXMoIlthcmlhLWhhc3BvcHVwPSd0cnVlJ10iKT90aGlzLmV4cGFuZChlKTp0aGlzLnNlbGVjdChlKSl9LHJlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgdCxpLHM9dGhpcyxuPXRoaXMub3B0aW9ucy5pY29ucy5zdWJtZW51LGE9dGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25zLm1lbnVzKTt0aGlzLmVsZW1lbnQudG9nZ2xlQ2xhc3MoInVpLW1lbnUtaWNvbnMiLCEhdGhpcy5lbGVtZW50LmZpbmQoIi51aS1pY29uIikubGVuZ3RoKSxhLmZpbHRlcigiOm5vdCgudWktbWVudSkiKS5hZGRDbGFzcygidWktbWVudSB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktZnJvbnQiKS5oaWRlKCkuYXR0cih7cm9sZTp0aGlzLm9wdGlvbnMucm9sZSwiYXJpYS1oaWRkZW4iOiJ0cnVlIiwiYXJpYS1leHBhbmRlZCI6ImZhbHNlIn0pLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLGk9dC5wYXJlbnQoKSxzPWUoIjxzcGFuPiIpLmFkZENsYXNzKCJ1aS1tZW51LWljb24gdWktaWNvbiAiK24pLmRhdGEoInVpLW1lbnUtc3VibWVudS1jYXJhdCIsITApO2kuYXR0cigiYXJpYS1oYXNwb3B1cCIsInRydWUiKS5wcmVwZW5kKHMpLHQuYXR0cigiYXJpYS1sYWJlbGxlZGJ5IixpLmF0dHIoImlkIikpfSksdD1hLmFkZCh0aGlzLmVsZW1lbnQpLGk9dC5maW5kKHRoaXMub3B0aW9ucy5pdGVtcyksaS5ub3QoIi51aS1tZW51LWl0ZW0iKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKTtzLl9pc0RpdmlkZXIodCkmJnQuYWRkQ2xhc3MoInVpLXdpZGdldC1jb250ZW50IHVpLW1lbnUtZGl2aWRlciIpfSksaS5ub3QoIi51aS1tZW51LWl0ZW0sIC51aS1tZW51LWRpdmlkZXIiKS5hZGRDbGFzcygidWktbWVudS1pdGVtIikudW5pcXVlSWQoKS5hdHRyKHt0YWJJbmRleDotMSxyb2xlOnRoaXMuX2l0ZW1Sb2xlKCl9KSxpLmZpbHRlcigiLnVpLXN0YXRlLWRpc2FibGVkIikuYXR0cigiYXJpYS1kaXNhYmxlZCIsInRydWUiKSx0aGlzLmFjdGl2ZSYmIWUuY29udGFpbnModGhpcy5lbGVtZW50WzBdLHRoaXMuYWN0aXZlWzBdKSYmdGhpcy5ibHVyKCl9LF9pdGVtUm9sZTpmdW5jdGlvbigpe3JldHVybnttZW51OiJtZW51aXRlbSIsbGlzdGJveDoib3B0aW9uIn1bdGhpcy5vcHRpb25zLnJvbGVdfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7Imljb25zIj09PWUmJnRoaXMuZWxlbWVudC5maW5kKCIudWktbWVudS1pY29uIikucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmljb25zLnN1Ym1lbnUpLmFkZENsYXNzKHQuc3VibWVudSksImRpc2FibGVkIj09PWUmJnRoaXMuZWxlbWVudC50b2dnbGVDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiLCEhdCkuYXR0cigiYXJpYS1kaXNhYmxlZCIsdCksdGhpcy5fc3VwZXIoZSx0KX0sZm9jdXM6ZnVuY3Rpb24oZSx0KXt2YXIgaSxzO3RoaXMuYmx1cihlLGUmJiJmb2N1cyI9PT1lLnR5cGUpLHRoaXMuX3Njcm9sbEludG9WaWV3KHQpLHRoaXMuYWN0aXZlPXQuZmlyc3QoKSxzPXRoaXMuYWN0aXZlLmFkZENsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKSx0aGlzLm9wdGlvbnMucm9sZSYmdGhpcy5lbGVtZW50LmF0dHIoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIscy5hdHRyKCJpZCIpKSx0aGlzLmFjdGl2ZS5wYXJlbnQoKS5jbG9zZXN0KCIudWktbWVudS1pdGVtIikuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLGUmJiJrZXlkb3duIj09PWUudHlwZT90aGlzLl9jbG9zZSgpOnRoaXMudGltZXI9dGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt0aGlzLl9jbG9zZSgpfSx0aGlzLmRlbGF5KSxpPXQuY2hpbGRyZW4oIi51aS1tZW51IiksaS5sZW5ndGgmJmUmJi9ebW91c2UvLnRlc3QoZS50eXBlKSYmdGhpcy5fc3RhcnRPcGVuaW5nKGkpLHRoaXMuYWN0aXZlTWVudT10LnBhcmVudCgpLHRoaXMuX3RyaWdnZXIoImZvY3VzIixlLHtpdGVtOnR9KX0sX3Njcm9sbEludG9WaWV3OmZ1bmN0aW9uKHQpe3ZhciBpLHMsbixhLG8scjt0aGlzLl9oYXNTY3JvbGwoKSYmKGk9cGFyc2VGbG9hdChlLmNzcyh0aGlzLmFjdGl2ZU1lbnVbMF0sImJvcmRlclRvcFdpZHRoIikpfHwwLHM9cGFyc2VGbG9hdChlLmNzcyh0aGlzLmFjdGl2ZU1lbnVbMF0sInBhZGRpbmdUb3AiKSl8fDAsbj10Lm9mZnNldCgpLnRvcC10aGlzLmFjdGl2ZU1lbnUub2Zmc2V0KCkudG9wLWktcyxhPXRoaXMuYWN0aXZlTWVudS5zY3JvbGxUb3AoKSxvPXRoaXMuYWN0aXZlTWVudS5oZWlnaHQoKSxyPXQub3V0ZXJIZWlnaHQoKSwwPm4/dGhpcy5hY3RpdmVNZW51LnNjcm9sbFRvcChhK24pOm4rcj5vJiZ0aGlzLmFjdGl2ZU1lbnUuc2Nyb2xsVG9wKGErbi1vK3IpKX0sYmx1cjpmdW5jdGlvbihlLHQpe3R8fGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKSx0aGlzLmFjdGl2ZSYmKHRoaXMuYWN0aXZlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpLHRoaXMuYWN0aXZlPW51bGwsdGhpcy5fdHJpZ2dlcigiYmx1ciIsZSx7aXRlbTp0aGlzLmFjdGl2ZX0pKX0sX3N0YXJ0T3BlbmluZzpmdW5jdGlvbihlKXtjbGVhclRpbWVvdXQodGhpcy50aW1lciksInRydWUiPT09ZS5hdHRyKCJhcmlhLWhpZGRlbiIpJiYodGhpcy50aW1lcj10aGlzLl9kZWxheShmdW5jdGlvbigpe3RoaXMuX2Nsb3NlKCksdGhpcy5fb3BlbihlKX0sdGhpcy5kZWxheSkpfSxfb3BlbjpmdW5jdGlvbih0KXt2YXIgaT1lLmV4dGVuZCh7b2Y6dGhpcy5hY3RpdmV9LHRoaXMub3B0aW9ucy5wb3NpdGlvbik7Y2xlYXJUaW1lb3V0KHRoaXMudGltZXIpLHRoaXMuZWxlbWVudC5maW5kKCIudWktbWVudSIpLm5vdCh0LnBhcmVudHMoIi51aS1tZW51IikpLmhpZGUoKS5hdHRyKCJhcmlhLWhpZGRlbiIsInRydWUiKSx0LnNob3coKS5yZW1vdmVBdHRyKCJhcmlhLWhpZGRlbiIpLmF0dHIoImFyaWEtZXhwYW5kZWQiLCJ0cnVlIikucG9zaXRpb24oaSl9LGNvbGxhcHNlQWxsOmZ1bmN0aW9uKHQsaSl7Y2xlYXJUaW1lb3V0KHRoaXMudGltZXIpLHRoaXMudGltZXI9dGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt2YXIgcz1pP3RoaXMuZWxlbWVudDplKHQmJnQudGFyZ2V0KS5jbG9zZXN0KHRoaXMuZWxlbWVudC5maW5kKCIudWktbWVudSIpKTtzLmxlbmd0aHx8KHM9dGhpcy5lbGVtZW50KSx0aGlzLl9jbG9zZShzKSx0aGlzLmJsdXIodCksdGhpcy5hY3RpdmVNZW51PXN9LHRoaXMuZGVsYXkpfSxfY2xvc2U6ZnVuY3Rpb24oZSl7ZXx8KGU9dGhpcy5hY3RpdmU/dGhpcy5hY3RpdmUucGFyZW50KCk6dGhpcy5lbGVtZW50KSxlLmZpbmQoIi51aS1tZW51IikuaGlkZSgpLmF0dHIoImFyaWEtaGlkZGVuIiwidHJ1ZSIpLmF0dHIoImFyaWEtZXhwYW5kZWQiLCJmYWxzZSIpLmVuZCgpLmZpbmQoIi51aS1zdGF0ZS1hY3RpdmUiKS5ub3QoIi51aS1zdGF0ZS1mb2N1cyIpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKX0sX2Nsb3NlT25Eb2N1bWVudENsaWNrOmZ1bmN0aW9uKHQpe3JldHVybiFlKHQudGFyZ2V0KS5jbG9zZXN0KCIudWktbWVudSIpLmxlbmd0aH0sX2lzRGl2aWRlcjpmdW5jdGlvbihlKXtyZXR1cm4hL1teXC1cdTIwMTRcdTIwMTNcc10vLnRlc3QoZS50ZXh0KCkpfSxjb2xsYXBzZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmFjdGl2ZSYmdGhpcy5hY3RpdmUucGFyZW50KCkuY2xvc2VzdCgiLnVpLW1lbnUtaXRlbSIsdGhpcy5lbGVtZW50KTt0JiZ0Lmxlbmd0aCYmKHRoaXMuX2Nsb3NlKCksdGhpcy5mb2N1cyhlLHQpKX0sZXhwYW5kOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuYWN0aXZlJiZ0aGlzLmFjdGl2ZS5jaGlsZHJlbigiLnVpLW1lbnUgIikuZmluZCh0aGlzLm9wdGlvbnMuaXRlbXMpLmZpcnN0KCk7dCYmdC5sZW5ndGgmJih0aGlzLl9vcGVuKHQucGFyZW50KCkpLHRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dGhpcy5mb2N1cyhlLHQpfSkpfSxuZXh0OmZ1bmN0aW9uKGUpe3RoaXMuX21vdmUoIm5leHQiLCJmaXJzdCIsZSl9LHByZXZpb3VzOmZ1bmN0aW9uKGUpe3RoaXMuX21vdmUoInByZXYiLCJsYXN0IixlKX0saXNGaXJzdEl0ZW06ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hY3RpdmUmJiF0aGlzLmFjdGl2ZS5wcmV2QWxsKCIudWktbWVudS1pdGVtIikubGVuZ3RofSxpc0xhc3RJdGVtOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWN0aXZlJiYhdGhpcy5hY3RpdmUubmV4dEFsbCgiLnVpLW1lbnUtaXRlbSIpLmxlbmd0aH0sX21vdmU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzO3RoaXMuYWN0aXZlJiYocz0iZmlyc3QiPT09ZXx8Imxhc3QiPT09ZT90aGlzLmFjdGl2ZVsiZmlyc3QiPT09ZT8icHJldkFsbCI6Im5leHRBbGwiXSgiLnVpLW1lbnUtaXRlbSIpLmVxKC0xKTp0aGlzLmFjdGl2ZVtlKyJBbGwiXSgiLnVpLW1lbnUtaXRlbSIpLmVxKDApKSxzJiZzLmxlbmd0aCYmdGhpcy5hY3RpdmV8fChzPXRoaXMuYWN0aXZlTWVudS5maW5kKHRoaXMub3B0aW9ucy5pdGVtcylbdF0oKSksdGhpcy5mb2N1cyhpLHMpfSxuZXh0UGFnZTpmdW5jdGlvbih0KXt2YXIgaSxzLG47cmV0dXJuIHRoaXMuYWN0aXZlPyh0aGlzLmlzTGFzdEl0ZW0oKXx8KHRoaXMuX2hhc1Njcm9sbCgpPyhzPXRoaXMuYWN0aXZlLm9mZnNldCgpLnRvcCxuPXRoaXMuZWxlbWVudC5oZWlnaHQoKSx0aGlzLmFjdGl2ZS5uZXh0QWxsKCIudWktbWVudS1pdGVtIikuZWFjaChmdW5jdGlvbigpe3JldHVybiBpPWUodGhpcyksMD5pLm9mZnNldCgpLnRvcC1zLW59KSx0aGlzLmZvY3VzKHQsaSkpOnRoaXMuZm9jdXModCx0aGlzLmFjdGl2ZU1lbnUuZmluZCh0aGlzLm9wdGlvbnMuaXRlbXMpW3RoaXMuYWN0aXZlPyJsYXN0IjoiZmlyc3QiXSgpKSksdm9pZCAwKToodGhpcy5uZXh0KHQpLHZvaWQgMCl9LHByZXZpb3VzUGFnZTpmdW5jdGlvbih0KXt2YXIgaSxzLG47cmV0dXJuIHRoaXMuYWN0aXZlPyh0aGlzLmlzRmlyc3RJdGVtKCl8fCh0aGlzLl9oYXNTY3JvbGwoKT8ocz10aGlzLmFjdGl2ZS5vZmZzZXQoKS50b3Asbj10aGlzLmVsZW1lbnQuaGVpZ2h0KCksdGhpcy5hY3RpdmUucHJldkFsbCgiLnVpLW1lbnUtaXRlbSIpLmVhY2goZnVuY3Rpb24oKXtyZXR1cm4gaT1lKHRoaXMpLGkub2Zmc2V0KCkudG9wLXMrbj4wfSksdGhpcy5mb2N1cyh0LGkpKTp0aGlzLmZvY3VzKHQsdGhpcy5hY3RpdmVNZW51LmZpbmQodGhpcy5vcHRpb25zLml0ZW1zKS5maXJzdCgpKSksdm9pZCAwKToodGhpcy5uZXh0KHQpLHZvaWQgMCl9LF9oYXNTY3JvbGw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50Lm91dGVySGVpZ2h0KCk8dGhpcy5lbGVtZW50LnByb3AoInNjcm9sbEhlaWdodCIpfSxzZWxlY3Q6ZnVuY3Rpb24odCl7dGhpcy5hY3RpdmU9dGhpcy5hY3RpdmV8fGUodC50YXJnZXQpLmNsb3Nlc3QoIi51aS1tZW51LWl0ZW0iKTt2YXIgaT17aXRlbTp0aGlzLmFjdGl2ZX07dGhpcy5hY3RpdmUuaGFzKCIudWktbWVudSIpLmxlbmd0aHx8dGhpcy5jb2xsYXBzZUFsbCh0LCEwKSx0aGlzLl90cmlnZ2VyKCJzZWxlY3QiLHQsaSl9LF9maWx0ZXJNZW51SXRlbXM6ZnVuY3Rpb24odCl7dmFyIGk9dC5yZXBsYWNlKC9bXC1cW1xde30oKSorPy4sXFxcXiR8I1xzXS9nLCJcXCQmIikscz1SZWdFeHAoIl4iK2ksImkiKTtyZXR1cm4gdGhpcy5hY3RpdmVNZW51LmZpbmQodGhpcy5vcHRpb25zLml0ZW1zKS5maWx0ZXIoIi51aS1tZW51LWl0ZW0iKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gcy50ZXN0KGUudHJpbShlKHRoaXMpLnRleHQoKSkpfSl9fSksZS53aWRnZXQoInVpLmF1dG9jb21wbGV0ZSIse3ZlcnNpb246IjEuMTEuNCIsZGVmYXVsdEVsZW1lbnQ6IjxpbnB1dD4iLG9wdGlvbnM6e2FwcGVuZFRvOm51bGwsYXV0b0ZvY3VzOiExLGRlbGF5OjMwMCxtaW5MZW5ndGg6MSxwb3NpdGlvbjp7bXk6ImxlZnQgdG9wIixhdDoibGVmdCBib3R0b20iLGNvbGxpc2lvbjoibm9uZSJ9LHNvdXJjZTpudWxsLGNoYW5nZTpudWxsLGNsb3NlOm51bGwsZm9jdXM6bnVsbCxvcGVuOm51bGwscmVzcG9uc2U6bnVsbCxzZWFyY2g6bnVsbCxzZWxlY3Q6bnVsbH0scmVxdWVzdEluZGV4OjAscGVuZGluZzowLF9jcmVhdGU6ZnVuY3Rpb24oKXt2YXIgdCxpLHMsbj10aGlzLmVsZW1lbnRbMF0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxhPSJ0ZXh0YXJlYSI9PT1uLG89ImlucHV0Ij09PW47dGhpcy5pc011bHRpTGluZT1hPyEwOm8/ITE6dGhpcy5lbGVtZW50LnByb3AoImlzQ29udGVudEVkaXRhYmxlIiksdGhpcy52YWx1ZU1ldGhvZD10aGlzLmVsZW1lbnRbYXx8bz8idmFsIjoidGV4dCJdLHRoaXMuaXNOZXdNZW51PSEwLHRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktYXV0b2NvbXBsZXRlLWlucHV0IikuYXR0cigiYXV0b2NvbXBsZXRlIiwib2ZmIiksdGhpcy5fb24odGhpcy5lbGVtZW50LHtrZXlkb3duOmZ1bmN0aW9uKG4pe2lmKHRoaXMuZWxlbWVudC5wcm9wKCJyZWFkT25seSIpKXJldHVybiB0PSEwLHM9ITAsaT0hMCx2b2lkIDA7dD0hMSxzPSExLGk9ITE7dmFyIGE9ZS51aS5rZXlDb2RlO3N3aXRjaChuLmtleUNvZGUpe2Nhc2UgYS5QQUdFX1VQOnQ9ITAsdGhpcy5fbW92ZSgicHJldmlvdXNQYWdlIixuKTticmVhaztjYXNlIGEuUEFHRV9ET1dOOnQ9ITAsdGhpcy5fbW92ZSgibmV4dFBhZ2UiLG4pO2JyZWFrO2Nhc2UgYS5VUDp0PSEwLHRoaXMuX2tleUV2ZW50KCJwcmV2aW91cyIsbik7YnJlYWs7Y2FzZSBhLkRPV046dD0hMCx0aGlzLl9rZXlFdmVudCgibmV4dCIsbik7YnJlYWs7Y2FzZSBhLkVOVEVSOnRoaXMubWVudS5hY3RpdmUmJih0PSEwLG4ucHJldmVudERlZmF1bHQoKSx0aGlzLm1lbnUuc2VsZWN0KG4pKTticmVhaztjYXNlIGEuVEFCOnRoaXMubWVudS5hY3RpdmUmJnRoaXMubWVudS5zZWxlY3Qobik7YnJlYWs7Y2FzZSBhLkVTQ0FQRTp0aGlzLm1lbnUuZWxlbWVudC5pcygiOnZpc2libGUiKSYmKHRoaXMuaXNNdWx0aUxpbmV8fHRoaXMuX3ZhbHVlKHRoaXMudGVybSksdGhpcy5jbG9zZShuKSxuLnByZXZlbnREZWZhdWx0KCkpO2JyZWFrO2RlZmF1bHQ6aT0hMCx0aGlzLl9zZWFyY2hUaW1lb3V0KG4pfX0sa2V5cHJlc3M6ZnVuY3Rpb24ocyl7aWYodClyZXR1cm4gdD0hMSwoIXRoaXMuaXNNdWx0aUxpbmV8fHRoaXMubWVudS5lbGVtZW50LmlzKCI6dmlzaWJsZSIpKSYmcy5wcmV2ZW50RGVmYXVsdCgpLHZvaWQgMDtpZighaSl7dmFyIG49ZS51aS5rZXlDb2RlO3N3aXRjaChzLmtleUNvZGUpe2Nhc2Ugbi5QQUdFX1VQOnRoaXMuX21vdmUoInByZXZpb3VzUGFnZSIscyk7YnJlYWs7Y2FzZSBuLlBBR0VfRE9XTjp0aGlzLl9tb3ZlKCJuZXh0UGFnZSIscyk7YnJlYWs7Y2FzZSBuLlVQOnRoaXMuX2tleUV2ZW50KCJwcmV2aW91cyIscyk7YnJlYWs7Y2FzZSBuLkRPV046dGhpcy5fa2V5RXZlbnQoIm5leHQiLHMpfX19LGlucHV0OmZ1bmN0aW9uKGUpe3JldHVybiBzPyhzPSExLGUucHJldmVudERlZmF1bHQoKSx2b2lkIDApOih0aGlzLl9zZWFyY2hUaW1lb3V0KGUpLHZvaWQgMCl9LGZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZEl0ZW09bnVsbCx0aGlzLnByZXZpb3VzPXRoaXMuX3ZhbHVlKCl9LGJsdXI6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY2FuY2VsQmx1cj8oZGVsZXRlIHRoaXMuY2FuY2VsQmx1cix2b2lkIDApOihjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hpbmcpLHRoaXMuY2xvc2UoZSksdGhpcy5fY2hhbmdlKGUpLHZvaWQgMCl9fSksdGhpcy5faW5pdFNvdXJjZSgpLHRoaXMubWVudT1lKCI8dWw+IikuYWRkQ2xhc3MoInVpLWF1dG9jb21wbGV0ZSB1aS1mcm9udCIpLmFwcGVuZFRvKHRoaXMuX2FwcGVuZFRvKCkpLm1lbnUoe3JvbGU6bnVsbH0pLmhpZGUoKS5tZW51KCJpbnN0YW5jZSIpLHRoaXMuX29uKHRoaXMubWVudS5lbGVtZW50LHttb3VzZWRvd246ZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuY2FuY2VsQmx1cj0hMCx0aGlzLl9kZWxheShmdW5jdGlvbigpe2RlbGV0ZSB0aGlzLmNhbmNlbEJsdXJ9KTt2YXIgaT10aGlzLm1lbnUuZWxlbWVudFswXTtlKHQudGFyZ2V0KS5jbG9zZXN0KCIudWktbWVudS1pdGVtIikubGVuZ3RofHx0aGlzLl9kZWxheShmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5kb2N1bWVudC5vbmUoIm1vdXNlZG93biIsZnVuY3Rpb24ocyl7cy50YXJnZXQ9PT10LmVsZW1lbnRbMF18fHMudGFyZ2V0PT09aXx8ZS5jb250YWlucyhpLHMudGFyZ2V0KXx8dC5jbG9zZSgpfSl9KX0sbWVudWZvY3VzOmZ1bmN0aW9uKHQsaSl7dmFyIHMsbjtyZXR1cm4gdGhpcy5pc05ld01lbnUmJih0aGlzLmlzTmV3TWVudT0hMSx0Lm9yaWdpbmFsRXZlbnQmJi9ebW91c2UvLnRlc3QodC5vcmlnaW5hbEV2ZW50LnR5cGUpKT8odGhpcy5tZW51LmJsdXIoKSx0aGlzLmRvY3VtZW50Lm9uZSgibW91c2Vtb3ZlIixmdW5jdGlvbigpe2UodC50YXJnZXQpLnRyaWdnZXIodC5vcmlnaW5hbEV2ZW50KX0pLHZvaWQgMCk6KG49aS5pdGVtLmRhdGEoInVpLWF1dG9jb21wbGV0ZS1pdGVtIiksITEhPT10aGlzLl90cmlnZ2VyKCJmb2N1cyIsdCx7aXRlbTpufSkmJnQub3JpZ2luYWxFdmVudCYmL15rZXkvLnRlc3QodC5vcmlnaW5hbEV2ZW50LnR5cGUpJiZ0aGlzLl92YWx1ZShuLnZhbHVlKSxzPWkuaXRlbS5hdHRyKCJhcmlhLWxhYmVsIil8fG4udmFsdWUscyYmZS50cmltKHMpLmxlbmd0aCYmKHRoaXMubGl2ZVJlZ2lvbi5jaGlsZHJlbigpLmhpZGUoKSxlKCI8ZGl2PiIpLnRleHQocykuYXBwZW5kVG8odGhpcy5saXZlUmVnaW9uKSksdm9pZCAwKX0sbWVudXNlbGVjdDpmdW5jdGlvbihlLHQpe3ZhciBpPXQuaXRlbS5kYXRhKCJ1aS1hdXRvY29tcGxldGUtaXRlbSIpLHM9dGhpcy5wcmV2aW91czt0aGlzLmVsZW1lbnRbMF0hPT10aGlzLmRvY3VtZW50WzBdLmFjdGl2ZUVsZW1lbnQmJih0aGlzLmVsZW1lbnQuZm9jdXMoKSx0aGlzLnByZXZpb3VzPXMsdGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt0aGlzLnByZXZpb3VzPXMsdGhpcy5zZWxlY3RlZEl0ZW09aX0pKSwhMSE9PXRoaXMuX3RyaWdnZXIoInNlbGVjdCIsZSx7aXRlbTppfSkmJnRoaXMuX3ZhbHVlKGkudmFsdWUpLHRoaXMudGVybT10aGlzLl92YWx1ZSgpLHRoaXMuY2xvc2UoZSksdGhpcy5zZWxlY3RlZEl0ZW09aX19KSx0aGlzLmxpdmVSZWdpb249ZSgiPHNwYW4+Iix7cm9sZToic3RhdHVzIiwiYXJpYS1saXZlIjoiYXNzZXJ0aXZlIiwiYXJpYS1yZWxldmFudCI6ImFkZGl0aW9ucyJ9KS5hZGRDbGFzcygidWktaGVscGVyLWhpZGRlbi1hY2Nlc3NpYmxlIikuYXBwZW5kVG8odGhpcy5kb2N1bWVudFswXS5ib2R5KSx0aGlzLl9vbih0aGlzLndpbmRvdyx7YmVmb3JldW5sb2FkOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUF0dHIoImF1dG9jb21wbGV0ZSIpfX0pfSxfZGVzdHJveTpmdW5jdGlvbigpe2NsZWFyVGltZW91dCh0aGlzLnNlYXJjaGluZyksdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1hdXRvY29tcGxldGUtaW5wdXQiKS5yZW1vdmVBdHRyKCJhdXRvY29tcGxldGUiKSx0aGlzLm1lbnUuZWxlbWVudC5yZW1vdmUoKSx0aGlzLmxpdmVSZWdpb24ucmVtb3ZlKCl9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXt0aGlzLl9zdXBlcihlLHQpLCJzb3VyY2UiPT09ZSYmdGhpcy5faW5pdFNvdXJjZSgpLCJhcHBlbmRUbyI9PT1lJiZ0aGlzLm1lbnUuZWxlbWVudC5hcHBlbmRUbyh0aGlzLl9hcHBlbmRUbygpKSwiZGlzYWJsZWQiPT09ZSYmdCYmdGhpcy54aHImJnRoaXMueGhyLmFib3J0KCl9LF9hcHBlbmRUbzpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucy5hcHBlbmRUbztyZXR1cm4gdCYmKHQ9dC5qcXVlcnl8fHQubm9kZVR5cGU/ZSh0KTp0aGlzLmRvY3VtZW50LmZpbmQodCkuZXEoMCkpLHQmJnRbMF18fCh0PXRoaXMuZWxlbWVudC5jbG9zZXN0KCIudWktZnJvbnQiKSksdC5sZW5ndGh8fCh0PXRoaXMuZG9jdW1lbnRbMF0uYm9keSksdH0sX2luaXRTb3VyY2U6ZnVuY3Rpb24oKXt2YXIgdCxpLHM9dGhpcztlLmlzQXJyYXkodGhpcy5vcHRpb25zLnNvdXJjZSk/KHQ9dGhpcy5vcHRpb25zLnNvdXJjZSx0aGlzLnNvdXJjZT1mdW5jdGlvbihpLHMpe3MoZS51aS5hdXRvY29tcGxldGUuZmlsdGVyKHQsaS50ZXJtKSl9KToic3RyaW5nIj09dHlwZW9mIHRoaXMub3B0aW9ucy5zb3VyY2U/KGk9dGhpcy5vcHRpb25zLnNvdXJjZSx0aGlzLnNvdXJjZT1mdW5jdGlvbih0LG4pe3MueGhyJiZzLnhoci5hYm9ydCgpLHMueGhyPWUuYWpheCh7dXJsOmksZGF0YTp0LGRhdGFUeXBlOiJqc29uIixzdWNjZXNzOmZ1bmN0aW9uKGUpe24oZSl9LGVycm9yOmZ1bmN0aW9uKCl7bihbXSl9fSl9KTp0aGlzLnNvdXJjZT10aGlzLm9wdGlvbnMuc291cmNlfSxfc2VhcmNoVGltZW91dDpmdW5jdGlvbihlKXtjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hpbmcpLHRoaXMuc2VhcmNoaW5nPXRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy50ZXJtPT09dGhpcy5fdmFsdWUoKSxpPXRoaXMubWVudS5lbGVtZW50LmlzKCI6dmlzaWJsZSIpLHM9ZS5hbHRLZXl8fGUuY3RybEtleXx8ZS5tZXRhS2V5fHxlLnNoaWZ0S2V5OyghdHx8dCYmIWkmJiFzKSYmKHRoaXMuc2VsZWN0ZWRJdGVtPW51bGwsdGhpcy5zZWFyY2gobnVsbCxlKSl9LHRoaXMub3B0aW9ucy5kZWxheSl9LHNlYXJjaDpmdW5jdGlvbihlLHQpe3JldHVybiBlPW51bGwhPWU/ZTp0aGlzLl92YWx1ZSgpLHRoaXMudGVybT10aGlzLl92YWx1ZSgpLGUubGVuZ3RoPHRoaXMub3B0aW9ucy5taW5MZW5ndGg/dGhpcy5jbG9zZSh0KTp0aGlzLl90cmlnZ2VyKCJzZWFyY2giLHQpIT09ITE/dGhpcy5fc2VhcmNoKGUpOnZvaWQgMH0sX3NlYXJjaDpmdW5jdGlvbihlKXt0aGlzLnBlbmRpbmcrKyx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLWF1dG9jb21wbGV0ZS1sb2FkaW5nIiksdGhpcy5jYW5jZWxTZWFyY2g9ITEsdGhpcy5zb3VyY2Uoe3Rlcm06ZX0sdGhpcy5fcmVzcG9uc2UoKSl9LF9yZXNwb25zZTpmdW5jdGlvbigpe3ZhciB0PSsrdGhpcy5yZXF1ZXN0SW5kZXg7cmV0dXJuIGUucHJveHkoZnVuY3Rpb24oZSl7dD09PXRoaXMucmVxdWVzdEluZGV4JiZ0aGlzLl9fcmVzcG9uc2UoZSksdGhpcy5wZW5kaW5nLS0sdGhpcy5wZW5kaW5nfHx0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWF1dG9jb21wbGV0ZS1sb2FkaW5nIil9LHRoaXMpfSxfX3Jlc3BvbnNlOmZ1bmN0aW9uKGUpe2UmJihlPXRoaXMuX25vcm1hbGl6ZShlKSksdGhpcy5fdHJpZ2dlcigicmVzcG9uc2UiLG51bGwse2NvbnRlbnQ6ZX0pLCF0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJmUmJmUubGVuZ3RoJiYhdGhpcy5jYW5jZWxTZWFyY2g/KHRoaXMuX3N1Z2dlc3QoZSksdGhpcy5fdHJpZ2dlcigib3BlbiIpKTp0aGlzLl9jbG9zZSgpfSxjbG9zZTpmdW5jdGlvbihlKXt0aGlzLmNhbmNlbFNlYXJjaD0hMCx0aGlzLl9jbG9zZShlKX0sX2Nsb3NlOmZ1bmN0aW9uKGUpe3RoaXMubWVudS5lbGVtZW50LmlzKCI6dmlzaWJsZSIpJiYodGhpcy5tZW51LmVsZW1lbnQuaGlkZSgpLHRoaXMubWVudS5ibHVyKCksdGhpcy5pc05ld01lbnU9ITAsdGhpcy5fdHJpZ2dlcigiY2xvc2UiLGUpKX0sX2NoYW5nZTpmdW5jdGlvbihlKXt0aGlzLnByZXZpb3VzIT09dGhpcy5fdmFsdWUoKSYmdGhpcy5fdHJpZ2dlcigiY2hhbmdlIixlLHtpdGVtOnRoaXMuc2VsZWN0ZWRJdGVtfSl9LF9ub3JtYWxpemU6ZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RoJiZ0WzBdLmxhYmVsJiZ0WzBdLnZhbHVlP3Q6ZS5tYXAodCxmdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/e2xhYmVsOnQsdmFsdWU6dH06ZS5leHRlbmQoe30sdCx7bGFiZWw6dC5sYWJlbHx8dC52YWx1ZSx2YWx1ZTp0LnZhbHVlfHx0LmxhYmVsfSl9KX0sX3N1Z2dlc3Q6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5tZW51LmVsZW1lbnQuZW1wdHkoKTt0aGlzLl9yZW5kZXJNZW51KGksdCksdGhpcy5pc05ld01lbnU9ITAsdGhpcy5tZW51LnJlZnJlc2goKSxpLnNob3coKSx0aGlzLl9yZXNpemVNZW51KCksaS5wb3NpdGlvbihlLmV4dGVuZCh7b2Y6dGhpcy5lbGVtZW50fSx0aGlzLm9wdGlvbnMucG9zaXRpb24pKSx0aGlzLm9wdGlvbnMuYXV0b0ZvY3VzJiZ0aGlzLm1lbnUubmV4dCgpfSxfcmVzaXplTWVudTpmdW5jdGlvbigpe3ZhciBlPXRoaXMubWVudS5lbGVtZW50O2Uub3V0ZXJXaWR0aChNYXRoLm1heChlLndpZHRoKCIiKS5vdXRlcldpZHRoKCkrMSx0aGlzLmVsZW1lbnQub3V0ZXJXaWR0aCgpKSl9LF9yZW5kZXJNZW51OmZ1bmN0aW9uKHQsaSl7dmFyIHM9dGhpcztlLmVhY2goaSxmdW5jdGlvbihlLGkpe3MuX3JlbmRlckl0ZW1EYXRhKHQsaSl9KX0sX3JlbmRlckl0ZW1EYXRhOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX3JlbmRlckl0ZW0oZSx0KS5kYXRhKCJ1aS1hdXRvY29tcGxldGUtaXRlbSIsdCl9LF9yZW5kZXJJdGVtOmZ1bmN0aW9uKHQsaSl7cmV0dXJuIGUoIjxsaT4iKS50ZXh0KGkubGFiZWwpLmFwcGVuZFRvKHQpfSxfbW92ZTpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLm1lbnUuZWxlbWVudC5pcygiOnZpc2libGUiKT90aGlzLm1lbnUuaXNGaXJzdEl0ZW0oKSYmL15wcmV2aW91cy8udGVzdChlKXx8dGhpcy5tZW51LmlzTGFzdEl0ZW0oKSYmL15uZXh0Ly50ZXN0KGUpPyh0aGlzLmlzTXVsdGlMaW5lfHx0aGlzLl92YWx1ZSh0aGlzLnRlcm0pLHRoaXMubWVudS5ibHVyKCksdm9pZCAwKToodGhpcy5tZW51W2VdKHQpLHZvaWQgMCk6KHRoaXMuc2VhcmNoKG51bGwsdCksdm9pZCAwKX0sd2lkZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVudS5lbGVtZW50fSxfdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZU1ldGhvZC5hcHBseSh0aGlzLmVsZW1lbnQsYXJndW1lbnRzKX0sX2tleUV2ZW50OmZ1bmN0aW9uKGUsdCl7KCF0aGlzLmlzTXVsdGlMaW5lfHx0aGlzLm1lbnUuZWxlbWVudC5pcygiOnZpc2libGUiKSkmJih0aGlzLl9tb3ZlKGUsdCksdC5wcmV2ZW50RGVmYXVsdCgpKX19KSxlLmV4dGVuZChlLnVpLmF1dG9jb21wbGV0ZSx7ZXNjYXBlUmVnZXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvW1wtXFtcXXt9KCkqKz8uLFxcXF4kfCNcc10vZywiXFwkJiIpfSxmaWx0ZXI6ZnVuY3Rpb24odCxpKXt2YXIgcz1SZWdFeHAoZS51aS5hdXRvY29tcGxldGUuZXNjYXBlUmVnZXgoaSksImkiKTtyZXR1cm4gZS5ncmVwKHQsZnVuY3Rpb24oZSl7cmV0dXJuIHMudGVzdChlLmxhYmVsfHxlLnZhbHVlfHxlKX0pfX0pLGUud2lkZ2V0KCJ1aS5hdXRvY29tcGxldGUiLGUudWkuYXV0b2NvbXBsZXRlLHtvcHRpb25zOnttZXNzYWdlczp7bm9SZXN1bHRzOiJObyBzZWFyY2ggcmVzdWx0cy4iLHJlc3VsdHM6ZnVuY3Rpb24oZSl7cmV0dXJuIGUrKGU+MT8iIHJlc3VsdHMgYXJlIjoiIHJlc3VsdCBpcyIpKyIgYXZhaWxhYmxlLCB1c2UgdXAgYW5kIGRvd24gYXJyb3cga2V5cyB0byBuYXZpZ2F0ZS4ifX19LF9fcmVzcG9uc2U6ZnVuY3Rpb24odCl7dmFyIGk7dGhpcy5fc3VwZXJBcHBseShhcmd1bWVudHMpLHRoaXMub3B0aW9ucy5kaXNhYmxlZHx8dGhpcy5jYW5jZWxTZWFyY2h8fChpPXQmJnQubGVuZ3RoP3RoaXMub3B0aW9ucy5tZXNzYWdlcy5yZXN1bHRzKHQubGVuZ3RoKTp0aGlzLm9wdGlvbnMubWVzc2FnZXMubm9SZXN1bHRzLHRoaXMubGl2ZVJlZ2lvbi5jaGlsZHJlbigpLmhpZGUoKSxlKCI8ZGl2PiIpLnRleHQoaSkuYXBwZW5kVG8odGhpcy5saXZlUmVnaW9uKSl9fSksZS51aS5hdXRvY29tcGxldGU7dmFyIHIsaD0idWktYnV0dG9uIHVpLXdpZGdldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwiLGw9InVpLWJ1dHRvbi1pY29ucy1vbmx5IHVpLWJ1dHRvbi1pY29uLW9ubHkgdWktYnV0dG9uLXRleHQtaWNvbnMgdWktYnV0dG9uLXRleHQtaWNvbi1wcmltYXJ5IHVpLWJ1dHRvbi10ZXh0LWljb24tc2Vjb25kYXJ5IHVpLWJ1dHRvbi10ZXh0LW9ubHkiLHU9ZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0LmZpbmQoIjp1aS1idXR0b24iKS5idXR0b24oInJlZnJlc2giKX0sMSl9LGQ9ZnVuY3Rpb24odCl7dmFyIGk9dC5uYW1lLHM9dC5mb3JtLG49ZShbXSk7cmV0dXJuIGkmJihpPWkucmVwbGFjZSgvJy9nLCJcXCciKSxuPXM/ZShzKS5maW5kKCJbbmFtZT0nIitpKyInXVt0eXBlPXJhZGlvXSIpOmUoIltuYW1lPSciK2krIiddW3R5cGU9cmFkaW9dIix0Lm93bmVyRG9jdW1lbnQpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiF0aGlzLmZvcm19KSksbn07ZS53aWRnZXQoInVpLmJ1dHRvbiIse3ZlcnNpb246IjEuMTEuNCIsZGVmYXVsdEVsZW1lbnQ6IjxidXR0b24+IixvcHRpb25zOntkaXNhYmxlZDpudWxsLHRleHQ6ITAsbGFiZWw6bnVsbCxpY29uczp7cHJpbWFyeTpudWxsLHNlY29uZGFyeTpudWxsfX0sX2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5jbG9zZXN0KCJmb3JtIikudW5iaW5kKCJyZXNldCIrdGhpcy5ldmVudE5hbWVzcGFjZSkuYmluZCgicmVzZXQiK3RoaXMuZXZlbnROYW1lc3BhY2UsdSksImJvb2xlYW4iIT10eXBlb2YgdGhpcy5vcHRpb25zLmRpc2FibGVkP3RoaXMub3B0aW9ucy5kaXNhYmxlZD0hIXRoaXMuZWxlbWVudC5wcm9wKCJkaXNhYmxlZCIpOnRoaXMuZWxlbWVudC5wcm9wKCJkaXNhYmxlZCIsdGhpcy5vcHRpb25zLmRpc2FibGVkKSx0aGlzLl9kZXRlcm1pbmVCdXR0b25UeXBlKCksdGhpcy5oYXNUaXRsZT0hIXRoaXMuYnV0dG9uRWxlbWVudC5hdHRyKCJ0aXRsZSIpO3ZhciB0PXRoaXMsaT10aGlzLm9wdGlvbnMscz0iY2hlY2tib3giPT09dGhpcy50eXBlfHwicmFkaW8iPT09dGhpcy50eXBlLG49cz8iIjoidWktc3RhdGUtYWN0aXZlIjtudWxsPT09aS5sYWJlbCYmKGkubGFiZWw9ImlucHV0Ij09PXRoaXMudHlwZT90aGlzLmJ1dHRvbkVsZW1lbnQudmFsKCk6dGhpcy5idXR0b25FbGVtZW50Lmh0bWwoKSksdGhpcy5faG92ZXJhYmxlKHRoaXMuYnV0dG9uRWxlbWVudCksdGhpcy5idXR0b25FbGVtZW50LmFkZENsYXNzKGgpLmF0dHIoInJvbGUiLCJidXR0b24iKS5iaW5kKCJtb3VzZWVudGVyIit0aGlzLmV2ZW50TmFtZXNwYWNlLGZ1bmN0aW9uKCl7aS5kaXNhYmxlZHx8dGhpcz09PXImJmUodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpfSkuYmluZCgibW91c2VsZWF2ZSIrdGhpcy5ldmVudE5hbWVzcGFjZSxmdW5jdGlvbigpe2kuZGlzYWJsZWR8fGUodGhpcykucmVtb3ZlQ2xhc3Mobil9KS5iaW5kKCJjbGljayIrdGhpcy5ldmVudE5hbWVzcGFjZSxmdW5jdGlvbihlKXtpLmRpc2FibGVkJiYoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkpfSksdGhpcy5fb24oe2ZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5idXR0b25FbGVtZW50LmFkZENsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpfSxibHVyOmZ1bmN0aW9uKCl7dGhpcy5idXR0b25FbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpfX0pLHMmJnRoaXMuZWxlbWVudC5iaW5kKCJjaGFuZ2UiK3RoaXMuZXZlbnROYW1lc3BhY2UsZnVuY3Rpb24oKXt0LnJlZnJlc2goKX0pLCJjaGVja2JveCI9PT10aGlzLnR5cGU/dGhpcy5idXR0b25FbGVtZW50LmJpbmQoImNsaWNrIit0aGlzLmV2ZW50TmFtZXNwYWNlLGZ1bmN0aW9uKCl7cmV0dXJuIGkuZGlzYWJsZWQ/ITE6dm9pZCAwfSk6InJhZGlvIj09PXRoaXMudHlwZT90aGlzLmJ1dHRvbkVsZW1lbnQuYmluZCgiY2xpY2siK3RoaXMuZXZlbnROYW1lc3BhY2UsZnVuY3Rpb24oKXtpZihpLmRpc2FibGVkKXJldHVybiExO2UodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLHQuYnV0dG9uRWxlbWVudC5hdHRyKCJhcmlhLXByZXNzZWQiLCJ0cnVlIik7dmFyIHM9dC5lbGVtZW50WzBdO2Qocykubm90KHMpLm1hcChmdW5jdGlvbigpe3JldHVybiBlKHRoaXMpLmJ1dHRvbigid2lkZ2V0IilbMF19KS5yZW1vdmVDbGFzcygidWktc3RhdGUtYWN0aXZlIikuYXR0cigiYXJpYS1wcmVzc2VkIiwiZmFsc2UiKX0pOih0aGlzLmJ1dHRvbkVsZW1lbnQuYmluZCgibW91c2Vkb3duIit0aGlzLmV2ZW50TmFtZXNwYWNlLGZ1bmN0aW9uKCl7cmV0dXJuIGkuZGlzYWJsZWQ/ITE6KGUodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLHI9dGhpcyx0LmRvY3VtZW50Lm9uZSgibW91c2V1cCIsZnVuY3Rpb24oKXtyPW51bGx9KSx2b2lkIDApfSkuYmluZCgibW91c2V1cCIrdGhpcy5ldmVudE5hbWVzcGFjZSxmdW5jdGlvbigpe3JldHVybiBpLmRpc2FibGVkPyExOihlKHRoaXMpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKSx2b2lkIDApfSkuYmluZCgia2V5ZG93biIrdGhpcy5ldmVudE5hbWVzcGFjZSxmdW5jdGlvbih0KXtyZXR1cm4gaS5kaXNhYmxlZD8hMTooKHQua2V5Q29kZT09PWUudWkua2V5Q29kZS5TUEFDRXx8dC5rZXlDb2RlPT09ZS51aS5rZXlDb2RlLkVOVEVSKSYmZSh0aGlzKS5hZGRDbGFzcygidWktc3RhdGUtYWN0aXZlIiksdm9pZCAwKX0pLmJpbmQoImtleXVwIit0aGlzLmV2ZW50TmFtZXNwYWNlKyIgYmx1ciIrdGhpcy5ldmVudE5hbWVzcGFjZSxmdW5jdGlvbigpe2UodGhpcykucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpfSksdGhpcy5idXR0b25FbGVtZW50LmlzKCJhIikmJnRoaXMuYnV0dG9uRWxlbWVudC5rZXl1cChmdW5jdGlvbih0KXt0LmtleUNvZGU9PT1lLnVpLmtleUNvZGUuU1BBQ0UmJmUodGhpcykuY2xpY2soKX0pKSx0aGlzLl9zZXRPcHRpb24oImRpc2FibGVkIixpLmRpc2FibGVkKSx0aGlzLl9yZXNldEJ1dHRvbigpfSxfZGV0ZXJtaW5lQnV0dG9uVHlwZTpmdW5jdGlvbigpe3ZhciBlLHQsaTt0aGlzLnR5cGU9dGhpcy5lbGVtZW50LmlzKCJbdHlwZT1jaGVja2JveF0iKT8iY2hlY2tib3giOnRoaXMuZWxlbWVudC5pcygiW3R5cGU9cmFkaW9dIik/InJhZGlvIjp0aGlzLmVsZW1lbnQuaXMoImlucHV0Iik/ImlucHV0IjoiYnV0dG9uIiwiY2hlY2tib3giPT09dGhpcy50eXBlfHwicmFkaW8iPT09dGhpcy50eXBlPyhlPXRoaXMuZWxlbWVudC5wYXJlbnRzKCkubGFzdCgpLHQ9ImxhYmVsW2Zvcj0nIit0aGlzLmVsZW1lbnQuYXR0cigiaWQiKSsiJ10iLHRoaXMuYnV0dG9uRWxlbWVudD1lLmZpbmQodCksdGhpcy5idXR0b25FbGVtZW50Lmxlbmd0aHx8KGU9ZS5sZW5ndGg/ZS5zaWJsaW5ncygpOnRoaXMuZWxlbWVudC5zaWJsaW5ncygpLHRoaXMuYnV0dG9uRWxlbWVudD1lLmZpbHRlcih0KSx0aGlzLmJ1dHRvbkVsZW1lbnQubGVuZ3RofHwodGhpcy5idXR0b25FbGVtZW50PWUuZmluZCh0KSkpLHRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktaGVscGVyLWhpZGRlbi1hY2Nlc3NpYmxlIiksaT10aGlzLmVsZW1lbnQuaXMoIjpjaGVja2VkIiksaSYmdGhpcy5idXR0b25FbGVtZW50LmFkZENsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKSx0aGlzLmJ1dHRvbkVsZW1lbnQucHJvcCgiYXJpYS1wcmVzc2VkIixpKSk6dGhpcy5idXR0b25FbGVtZW50PXRoaXMuZWxlbWVudH0sd2lkZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYnV0dG9uRWxlbWVudH0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWhlbHBlci1oaWRkZW4tYWNjZXNzaWJsZSIpLHRoaXMuYnV0dG9uRWxlbWVudC5yZW1vdmVDbGFzcyhoKyIgdWktc3RhdGUtYWN0aXZlICIrbCkucmVtb3ZlQXR0cigicm9sZSIpLnJlbW92ZUF0dHIoImFyaWEtcHJlc3NlZCIpLmh0bWwodGhpcy5idXR0b25FbGVtZW50LmZpbmQoIi51aS1idXR0b24tdGV4dCIpLmh0bWwoKSksdGhpcy5oYXNUaXRsZXx8dGhpcy5idXR0b25FbGVtZW50LnJlbW92ZUF0dHIoInRpdGxlIil9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fc3VwZXIoZSx0KSwiZGlzYWJsZWQiPT09ZT8odGhpcy53aWRnZXQoKS50b2dnbGVDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiLCEhdCksdGhpcy5lbGVtZW50LnByb3AoImRpc2FibGVkIiwhIXQpLHQmJigiY2hlY2tib3giPT09dGhpcy50eXBlfHwicmFkaW8iPT09dGhpcy50eXBlP3RoaXMuYnV0dG9uRWxlbWVudC5yZW1vdmVDbGFzcygidWktc3RhdGUtZm9jdXMiKTp0aGlzLmJ1dHRvbkVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWZvY3VzIHVpLXN0YXRlLWFjdGl2ZSIpKSx2b2lkIDApOih0aGlzLl9yZXNldEJ1dHRvbigpLHZvaWQgMCl9LHJlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsZW1lbnQuaXMoImlucHV0LCBidXR0b24iKT90aGlzLmVsZW1lbnQuaXMoIjpkaXNhYmxlZCIpOnRoaXMuZWxlbWVudC5oYXNDbGFzcygidWktYnV0dG9uLWRpc2FibGVkIik7dCE9PXRoaXMub3B0aW9ucy5kaXNhYmxlZCYmdGhpcy5fc2V0T3B0aW9uKCJkaXNhYmxlZCIsdCksInJhZGlvIj09PXRoaXMudHlwZT9kKHRoaXMuZWxlbWVudFswXSkuZWFjaChmdW5jdGlvbigpe2UodGhpcykuaXMoIjpjaGVja2VkIik/ZSh0aGlzKS5idXR0b24oIndpZGdldCIpLmFkZENsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKS5hdHRyKCJhcmlhLXByZXNzZWQiLCJ0cnVlIik6ZSh0aGlzKS5idXR0b24oIndpZGdldCIpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKS5hdHRyKCJhcmlhLXByZXNzZWQiLCJmYWxzZSIpfSk6ImNoZWNrYm94Ij09PXRoaXMudHlwZSYmKHRoaXMuZWxlbWVudC5pcygiOmNoZWNrZWQiKT90aGlzLmJ1dHRvbkVsZW1lbnQuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLmF0dHIoImFyaWEtcHJlc3NlZCIsInRydWUiKTp0aGlzLmJ1dHRvbkVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLmF0dHIoImFyaWEtcHJlc3NlZCIsImZhbHNlIikpfSxfcmVzZXRCdXR0b246ZnVuY3Rpb24oKXtpZigiaW5wdXQiPT09dGhpcy50eXBlKXJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwmJnRoaXMuZWxlbWVudC52YWwodGhpcy5vcHRpb25zLmxhYmVsKSx2b2lkIDA7dmFyIHQ9dGhpcy5idXR0b25FbGVtZW50LnJlbW92ZUNsYXNzKGwpLGk9ZSgiPHNwYW4+PC9zcGFuPiIsdGhpcy5kb2N1bWVudFswXSkuYWRkQ2xhc3MoInVpLWJ1dHRvbi10ZXh0IikuaHRtbCh0aGlzLm9wdGlvbnMubGFiZWwpLmFwcGVuZFRvKHQuZW1wdHkoKSkudGV4dCgpLHM9dGhpcy5vcHRpb25zLmljb25zLG49cy5wcmltYXJ5JiZzLnNlY29uZGFyeSxhPVtdO3MucHJpbWFyeXx8cy5zZWNvbmRhcnk/KHRoaXMub3B0aW9ucy50ZXh0JiZhLnB1c2goInVpLWJ1dHRvbi10ZXh0LWljb24iKyhuPyJzIjpzLnByaW1hcnk/Ii1wcmltYXJ5IjoiLXNlY29uZGFyeSIpKSxzLnByaW1hcnkmJnQucHJlcGVuZCgiPHNwYW4gY2xhc3M9J3VpLWJ1dHRvbi1pY29uLXByaW1hcnkgdWktaWNvbiAiK3MucHJpbWFyeSsiJz48L3NwYW4+Iikscy5zZWNvbmRhcnkmJnQuYXBwZW5kKCI8c3BhbiBjbGFzcz0ndWktYnV0dG9uLWljb24tc2Vjb25kYXJ5IHVpLWljb24gIitzLnNlY29uZGFyeSsiJz48L3NwYW4+IiksdGhpcy5vcHRpb25zLnRleHR8fChhLnB1c2gobj8idWktYnV0dG9uLWljb25zLW9ubHkiOiJ1aS1idXR0b24taWNvbi1vbmx5IiksdGhpcy5oYXNUaXRsZXx8dC5hdHRyKCJ0aXRsZSIsZS50cmltKGkpKSkpOmEucHVzaCgidWktYnV0dG9uLXRleHQtb25seSIpLHQuYWRkQ2xhc3MoYS5qb2luKCIgIikpfX0pLGUud2lkZ2V0KCJ1aS5idXR0b25zZXQiLHt2ZXJzaW9uOiIxLjExLjQiLG9wdGlvbnM6e2l0ZW1zOiJidXR0b24sIGlucHV0W3R5cGU9YnV0dG9uXSwgaW5wdXRbdHlwZT1zdWJtaXRdLCBpbnB1dFt0eXBlPXJlc2V0XSwgaW5wdXRbdHlwZT1jaGVja2JveF0sIGlucHV0W3R5cGU9cmFkaW9dLCBhLCA6ZGF0YSh1aS1idXR0b24pIn0sX2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5hZGRDbGFzcygidWktYnV0dG9uc2V0Iil9LF9pbml0OmZ1bmN0aW9uKCl7dGhpcy5yZWZyZXNoKCl9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXsiZGlzYWJsZWQiPT09ZSYmdGhpcy5idXR0b25zLmJ1dHRvbigib3B0aW9uIixlLHQpLHRoaXMuX3N1cGVyKGUsdCl9LHJlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgdD0icnRsIj09PXRoaXMuZWxlbWVudC5jc3MoImRpcmVjdGlvbiIpLGk9dGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25zLml0ZW1zKSxzPWkuZmlsdGVyKCI6dWktYnV0dG9uIik7aS5ub3QoIjp1aS1idXR0b24iKS5idXR0b24oKSxzLmJ1dHRvbigicmVmcmVzaCIpLHRoaXMuYnV0dG9ucz1pLm1hcChmdW5jdGlvbigpe3JldHVybiBlKHRoaXMpLmJ1dHRvbigid2lkZ2V0IilbMF19KS5yZW1vdmVDbGFzcygidWktY29ybmVyLWFsbCB1aS1jb3JuZXItbGVmdCB1aS1jb3JuZXItcmlnaHQiKS5maWx0ZXIoIjpmaXJzdCIpLmFkZENsYXNzKHQ/InVpLWNvcm5lci1yaWdodCI6InVpLWNvcm5lci1sZWZ0IikuZW5kKCkuZmlsdGVyKCI6bGFzdCIpLmFkZENsYXNzKHQ/InVpLWNvcm5lci1sZWZ0IjoidWktY29ybmVyLXJpZ2h0IikuZW5kKCkuZW5kKCl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1idXR0b25zZXQiKSx0aGlzLmJ1dHRvbnMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcykuYnV0dG9uKCJ3aWRnZXQiKVswXX0pLnJlbW92ZUNsYXNzKCJ1aS1jb3JuZXItbGVmdCB1aS1jb3JuZXItcmlnaHQiKS5lbmQoKS5idXR0b24oImRlc3Ryb3kiKX19KSxlLnVpLmJ1dHRvbixlLndpZGdldCgidWkuZGlhbG9nIix7dmVyc2lvbjoiMS4xMS40IixvcHRpb25zOnthcHBlbmRUbzoiYm9keSIsYXV0b09wZW46ITAsYnV0dG9uczpbXSxjbG9zZU9uRXNjYXBlOiEwLGNsb3NlVGV4dDoiQ2xvc2UiLGRpYWxvZ0NsYXNzOiIiLGRyYWdnYWJsZTohMCxoaWRlOm51bGwsaGVpZ2h0OiJhdXRvIixtYXhIZWlnaHQ6bnVsbCxtYXhXaWR0aDpudWxsLG1pbkhlaWdodDoxNTAsbWluV2lkdGg6MTUwLG1vZGFsOiExLHBvc2l0aW9uOntteToiY2VudGVyIixhdDoiY2VudGVyIixvZjp3aW5kb3csY29sbGlzaW9uOiJmaXQiLHVzaW5nOmZ1bmN0aW9uKHQpe3ZhciBpPWUodGhpcykuY3NzKHQpLm9mZnNldCgpLnRvcDswPmkmJmUodGhpcykuY3NzKCJ0b3AiLHQudG9wLWkpfX0scmVzaXphYmxlOiEwLHNob3c6bnVsbCx0aXRsZTpudWxsLHdpZHRoOjMwMCxiZWZvcmVDbG9zZTpudWxsLGNsb3NlOm51bGwsZHJhZzpudWxsLGRyYWdTdGFydDpudWxsLGRyYWdTdG9wOm51bGwsZm9jdXM6bnVsbCxvcGVuOm51bGwscmVzaXplOm51bGwscmVzaXplU3RhcnQ6bnVsbCxyZXNpemVTdG9wOm51bGx9LHNpemVSZWxhdGVkT3B0aW9uczp7YnV0dG9uczohMCxoZWlnaHQ6ITAsbWF4SGVpZ2h0OiEwLG1heFdpZHRoOiEwLG1pbkhlaWdodDohMCxtaW5XaWR0aDohMCx3aWR0aDohMH0scmVzaXphYmxlUmVsYXRlZE9wdGlvbnM6e21heEhlaWdodDohMCxtYXhXaWR0aDohMCxtaW5IZWlnaHQ6ITAsbWluV2lkdGg6ITB9LF9jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLm9yaWdpbmFsQ3NzPXtkaXNwbGF5OnRoaXMuZWxlbWVudFswXS5zdHlsZS5kaXNwbGF5LHdpZHRoOnRoaXMuZWxlbWVudFswXS5zdHlsZS53aWR0aCxtaW5IZWlnaHQ6dGhpcy5lbGVtZW50WzBdLnN0eWxlLm1pbkhlaWdodCxtYXhIZWlnaHQ6dGhpcy5lbGVtZW50WzBdLnN0eWxlLm1heEhlaWdodCxoZWlnaHQ6dGhpcy5lbGVtZW50WzBdLnN0eWxlLmhlaWdodH0sdGhpcy5vcmlnaW5hbFBvc2l0aW9uPXtwYXJlbnQ6dGhpcy5lbGVtZW50LnBhcmVudCgpLGluZGV4OnRoaXMuZWxlbWVudC5wYXJlbnQoKS5jaGlsZHJlbigpLmluZGV4KHRoaXMuZWxlbWVudCl9LHRoaXMub3JpZ2luYWxUaXRsZT10aGlzLmVsZW1lbnQuYXR0cigidGl0bGUiKSx0aGlzLm9wdGlvbnMudGl0bGU9dGhpcy5vcHRpb25zLnRpdGxlfHx0aGlzLm9yaWdpbmFsVGl0bGUsdGhpcy5fY3JlYXRlV3JhcHBlcigpLHRoaXMuZWxlbWVudC5zaG93KCkucmVtb3ZlQXR0cigidGl0bGUiKS5hZGRDbGFzcygidWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiKS5hcHBlbmRUbyh0aGlzLnVpRGlhbG9nKSx0aGlzLl9jcmVhdGVUaXRsZWJhcigpLHRoaXMuX2NyZWF0ZUJ1dHRvblBhbmUoKSx0aGlzLm9wdGlvbnMuZHJhZ2dhYmxlJiZlLmZuLmRyYWdnYWJsZSYmdGhpcy5fbWFrZURyYWdnYWJsZSgpLHRoaXMub3B0aW9ucy5yZXNpemFibGUmJmUuZm4ucmVzaXphYmxlJiZ0aGlzLl9tYWtlUmVzaXphYmxlKCksdGhpcy5faXNPcGVuPSExLHRoaXMuX3RyYWNrRm9jdXMoKX0sX2luaXQ6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuYXV0b09wZW4mJnRoaXMub3BlbigpfSxfYXBwZW5kVG86ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMuYXBwZW5kVG87cmV0dXJuIHQmJih0LmpxdWVyeXx8dC5ub2RlVHlwZSk/ZSh0KTp0aGlzLmRvY3VtZW50LmZpbmQodHx8ImJvZHkiKS5lcSgwKX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMub3JpZ2luYWxQb3NpdGlvbjt0aGlzLl91bnRyYWNrSW5zdGFuY2UoKSx0aGlzLl9kZXN0cm95T3ZlcmxheSgpLHRoaXMuZWxlbWVudC5yZW1vdmVVbmlxdWVJZCgpLnJlbW92ZUNsYXNzKCJ1aS1kaWFsb2ctY29udGVudCB1aS13aWRnZXQtY29udGVudCIpLmNzcyh0aGlzLm9yaWdpbmFsQ3NzKS5kZXRhY2goKSx0aGlzLnVpRGlhbG9nLnN0b3AoITAsITApLnJlbW92ZSgpLHRoaXMub3JpZ2luYWxUaXRsZSYmdGhpcy5lbGVtZW50LmF0dHIoInRpdGxlIix0aGlzLm9yaWdpbmFsVGl0bGUpLGU9dC5wYXJlbnQuY2hpbGRyZW4oKS5lcSh0LmluZGV4KSxlLmxlbmd0aCYmZVswXSE9PXRoaXMuZWxlbWVudFswXT9lLmJlZm9yZSh0aGlzLmVsZW1lbnQpOnQucGFyZW50LmFwcGVuZCh0aGlzLmVsZW1lbnQpfSx3aWRnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51aURpYWxvZ30sZGlzYWJsZTplLm5vb3AsZW5hYmxlOmUubm9vcCxjbG9zZTpmdW5jdGlvbih0KXt2YXIgaSxzPXRoaXM7aWYodGhpcy5faXNPcGVuJiZ0aGlzLl90cmlnZ2VyKCJiZWZvcmVDbG9zZSIsdCkhPT0hMSl7aWYodGhpcy5faXNPcGVuPSExLHRoaXMuX2ZvY3VzZWRFbGVtZW50PW51bGwsdGhpcy5fZGVzdHJveU92ZXJsYXkoKSx0aGlzLl91bnRyYWNrSW5zdGFuY2UoKSwhdGhpcy5vcGVuZXIuZmlsdGVyKCI6Zm9jdXNhYmxlIikuZm9jdXMoKS5sZW5ndGgpdHJ5e2k9dGhpcy5kb2N1bWVudFswXS5hY3RpdmVFbGVtZW50LGkmJiJib2R5IiE9PWkubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmZShpKS5ibHVyKCl9Y2F0Y2gobil7fXRoaXMuX2hpZGUodGhpcy51aURpYWxvZyx0aGlzLm9wdGlvbnMuaGlkZSxmdW5jdGlvbigpe3MuX3RyaWdnZXIoImNsb3NlIix0KX0pfX0saXNPcGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzT3Blbn0sbW92ZVRvVG9wOmZ1bmN0aW9uKCl7dGhpcy5fbW92ZVRvVG9wKCl9LF9tb3ZlVG9Ub3A6ZnVuY3Rpb24odCxpKXt2YXIgcz0hMSxuPXRoaXMudWlEaWFsb2cuc2libGluZ3MoIi51aS1mcm9udDp2aXNpYmxlIikubWFwKGZ1bmN0aW9uKCl7cmV0dXJuK2UodGhpcykuY3NzKCJ6LWluZGV4Iil9KS5nZXQoKSxhPU1hdGgubWF4LmFwcGx5KG51bGwsbik7cmV0dXJuIGE+PSt0aGlzLnVpRGlhbG9nLmNzcygiei1pbmRleCIpJiYodGhpcy51aURpYWxvZy5jc3MoInotaW5kZXgiLGErMSkscz0hMCkscyYmIWkmJnRoaXMuX3RyaWdnZXIoImZvY3VzIix0KSxzfSxvcGVuOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5faXNPcGVuPyh0aGlzLl9tb3ZlVG9Ub3AoKSYmdGhpcy5fZm9jdXNUYWJiYWJsZSgpLHZvaWQgMCk6KHRoaXMuX2lzT3Blbj0hMCx0aGlzLm9wZW5lcj1lKHRoaXMuZG9jdW1lbnRbMF0uYWN0aXZlRWxlbWVudCksdGhpcy5fc2l6ZSgpLHRoaXMuX3Bvc2l0aW9uKCksdGhpcy5fY3JlYXRlT3ZlcmxheSgpLHRoaXMuX21vdmVUb1RvcChudWxsLCEwKSx0aGlzLm92ZXJsYXkmJnRoaXMub3ZlcmxheS5jc3MoInotaW5kZXgiLHRoaXMudWlEaWFsb2cuY3NzKCJ6LWluZGV4IiktMSksdGhpcy5fc2hvdyh0aGlzLnVpRGlhbG9nLHRoaXMub3B0aW9ucy5zaG93LGZ1bmN0aW9uKCl7dC5fZm9jdXNUYWJiYWJsZSgpLHQuX3RyaWdnZXIoImZvY3VzIil9KSx0aGlzLl9tYWtlRm9jdXNUYXJnZXQoKSx0aGlzLl90cmlnZ2VyKCJvcGVuIiksdm9pZCAwKX0sX2ZvY3VzVGFiYmFibGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9mb2N1c2VkRWxlbWVudDtlfHwoZT10aGlzLmVsZW1lbnQuZmluZCgiW2F1dG9mb2N1c10iKSksZS5sZW5ndGh8fChlPXRoaXMuZWxlbWVudC5maW5kKCI6dGFiYmFibGUiKSksZS5sZW5ndGh8fChlPXRoaXMudWlEaWFsb2dCdXR0b25QYW5lLmZpbmQoIjp0YWJiYWJsZSIpKSxlLmxlbmd0aHx8KGU9dGhpcy51aURpYWxvZ1RpdGxlYmFyQ2xvc2UuZmlsdGVyKCI6dGFiYmFibGUiKSksZS5sZW5ndGh8fChlPXRoaXMudWlEaWFsb2cpLGUuZXEoMCkuZm9jdXMoKX0sX2tlZXBGb2N1czpmdW5jdGlvbih0KXtmdW5jdGlvbiBpKCl7dmFyIHQ9dGhpcy5kb2N1bWVudFswXS5hY3RpdmVFbGVtZW50LGk9dGhpcy51aURpYWxvZ1swXT09PXR8fGUuY29udGFpbnModGhpcy51aURpYWxvZ1swXSx0KTtpfHx0aGlzLl9mb2N1c1RhYmJhYmxlKCl9dC5wcmV2ZW50RGVmYXVsdCgpLGkuY2FsbCh0aGlzKSx0aGlzLl9kZWxheShpKX0sX2NyZWF0ZVdyYXBwZXI6ZnVuY3Rpb24oKXt0aGlzLnVpRGlhbG9nPWUoIjxkaXY+IikuYWRkQ2xhc3MoInVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1mcm9udCAiK3RoaXMub3B0aW9ucy5kaWFsb2dDbGFzcykuaGlkZSgpLmF0dHIoe3RhYkluZGV4Oi0xLHJvbGU6ImRpYWxvZyJ9KS5hcHBlbmRUbyh0aGlzLl9hcHBlbmRUbygpKSx0aGlzLl9vbih0aGlzLnVpRGlhbG9nLHtrZXlkb3duOmZ1bmN0aW9uKHQpe2lmKHRoaXMub3B0aW9ucy5jbG9zZU9uRXNjYXBlJiYhdC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmdC5rZXlDb2RlJiZ0LmtleUNvZGU9PT1lLnVpLmtleUNvZGUuRVNDQVBFKXJldHVybiB0LnByZXZlbnREZWZhdWx0KCksdGhpcy5jbG9zZSh0KSx2b2lkIDA7aWYodC5rZXlDb2RlPT09ZS51aS5rZXlDb2RlLlRBQiYmIXQuaXNEZWZhdWx0UHJldmVudGVkKCkpe3ZhciBpPXRoaXMudWlEaWFsb2cuZmluZCgiOnRhYmJhYmxlIikscz1pLmZpbHRlcigiOmZpcnN0Iiksbj1pLmZpbHRlcigiOmxhc3QiKTt0LnRhcmdldCE9PW5bMF0mJnQudGFyZ2V0IT09dGhpcy51aURpYWxvZ1swXXx8dC5zaGlmdEtleT90LnRhcmdldCE9PXNbMF0mJnQudGFyZ2V0IT09dGhpcy51aURpYWxvZ1swXXx8IXQuc2hpZnRLZXl8fCh0aGlzLl9kZWxheShmdW5jdGlvbigpe24uZm9jdXMoKX0pLHQucHJldmVudERlZmF1bHQoKSk6KHRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7cy5mb2N1cygpfSksdC5wcmV2ZW50RGVmYXVsdCgpKX19LG1vdXNlZG93bjpmdW5jdGlvbihlKXt0aGlzLl9tb3ZlVG9Ub3AoZSkmJnRoaXMuX2ZvY3VzVGFiYmFibGUoKX19KSx0aGlzLmVsZW1lbnQuZmluZCgiW2FyaWEtZGVzY3JpYmVkYnldIikubGVuZ3RofHx0aGlzLnVpRGlhbG9nLmF0dHIoeyJhcmlhLWRlc2NyaWJlZGJ5Ijp0aGlzLmVsZW1lbnQudW5pcXVlSWQoKS5hdHRyKCJpZCIpfSl9LF9jcmVhdGVUaXRsZWJhcjpmdW5jdGlvbigpe3ZhciB0O3RoaXMudWlEaWFsb2dUaXRsZWJhcj1lKCI8ZGl2PiIpLmFkZENsYXNzKCJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1jb3JuZXItYWxsIHVpLWhlbHBlci1jbGVhcmZpeCIpLnByZXBlbmRUbyh0aGlzLnVpRGlhbG9nKSx0aGlzLl9vbih0aGlzLnVpRGlhbG9nVGl0bGViYXIse21vdXNlZG93bjpmdW5jdGlvbih0KXtlKHQudGFyZ2V0KS5jbG9zZXN0KCIudWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIil8fHRoaXMudWlEaWFsb2cuZm9jdXMoKX19KSx0aGlzLnVpRGlhbG9nVGl0bGViYXJDbG9zZT1lKCI8YnV0dG9uIHR5cGU9J2J1dHRvbic+PC9idXR0b24+IikuYnV0dG9uKHtsYWJlbDp0aGlzLm9wdGlvbnMuY2xvc2VUZXh0LGljb25zOntwcmltYXJ5OiJ1aS1pY29uLWNsb3NldGhpY2sifSx0ZXh0OiExfSkuYWRkQ2xhc3MoInVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSIpLmFwcGVuZFRvKHRoaXMudWlEaWFsb2dUaXRsZWJhciksdGhpcy5fb24odGhpcy51aURpYWxvZ1RpdGxlYmFyQ2xvc2Use2NsaWNrOmZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSx0aGlzLmNsb3NlKGUpfX0pLHQ9ZSgiPHNwYW4+IikudW5pcXVlSWQoKS5hZGRDbGFzcygidWktZGlhbG9nLXRpdGxlIikucHJlcGVuZFRvKHRoaXMudWlEaWFsb2dUaXRsZWJhciksdGhpcy5fdGl0bGUodCksdGhpcy51aURpYWxvZy5hdHRyKHsiYXJpYS1sYWJlbGxlZGJ5Ijp0LmF0dHIoImlkIil9KX0sX3RpdGxlOmZ1bmN0aW9uKGUpe3RoaXMub3B0aW9ucy50aXRsZXx8ZS5odG1sKCImIzE2MDsiKSxlLnRleHQodGhpcy5vcHRpb25zLnRpdGxlKQp9LF9jcmVhdGVCdXR0b25QYW5lOmZ1bmN0aW9uKCl7dGhpcy51aURpYWxvZ0J1dHRvblBhbmU9ZSgiPGRpdj4iKS5hZGRDbGFzcygidWktZGlhbG9nLWJ1dHRvbnBhbmUgdWktd2lkZ2V0LWNvbnRlbnQgdWktaGVscGVyLWNsZWFyZml4IiksdGhpcy51aUJ1dHRvblNldD1lKCI8ZGl2PiIpLmFkZENsYXNzKCJ1aS1kaWFsb2ctYnV0dG9uc2V0IikuYXBwZW5kVG8odGhpcy51aURpYWxvZ0J1dHRvblBhbmUpLHRoaXMuX2NyZWF0ZUJ1dHRvbnMoKX0sX2NyZWF0ZUJ1dHRvbnM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGk9dGhpcy5vcHRpb25zLmJ1dHRvbnM7cmV0dXJuIHRoaXMudWlEaWFsb2dCdXR0b25QYW5lLnJlbW92ZSgpLHRoaXMudWlCdXR0b25TZXQuZW1wdHkoKSxlLmlzRW1wdHlPYmplY3QoaSl8fGUuaXNBcnJheShpKSYmIWkubGVuZ3RoPyh0aGlzLnVpRGlhbG9nLnJlbW92ZUNsYXNzKCJ1aS1kaWFsb2ctYnV0dG9ucyIpLHZvaWQgMCk6KGUuZWFjaChpLGZ1bmN0aW9uKGkscyl7dmFyIG4sYTtzPWUuaXNGdW5jdGlvbihzKT97Y2xpY2s6cyx0ZXh0Oml9OnMscz1lLmV4dGVuZCh7dHlwZToiYnV0dG9uIn0scyksbj1zLmNsaWNrLHMuY2xpY2s9ZnVuY3Rpb24oKXtuLmFwcGx5KHQuZWxlbWVudFswXSxhcmd1bWVudHMpfSxhPXtpY29uczpzLmljb25zLHRleHQ6cy5zaG93VGV4dH0sZGVsZXRlIHMuaWNvbnMsZGVsZXRlIHMuc2hvd1RleHQsZSgiPGJ1dHRvbj48L2J1dHRvbj4iLHMpLmJ1dHRvbihhKS5hcHBlbmRUbyh0LnVpQnV0dG9uU2V0KX0pLHRoaXMudWlEaWFsb2cuYWRkQ2xhc3MoInVpLWRpYWxvZy1idXR0b25zIiksdGhpcy51aURpYWxvZ0J1dHRvblBhbmUuYXBwZW5kVG8odGhpcy51aURpYWxvZyksdm9pZCAwKX0sX21ha2VEcmFnZ2FibGU6ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3JldHVybntwb3NpdGlvbjplLnBvc2l0aW9uLG9mZnNldDplLm9mZnNldH19dmFyIGk9dGhpcyxzPXRoaXMub3B0aW9uczt0aGlzLnVpRGlhbG9nLmRyYWdnYWJsZSh7Y2FuY2VsOiIudWktZGlhbG9nLWNvbnRlbnQsIC51aS1kaWFsb2ctdGl0bGViYXItY2xvc2UiLGhhbmRsZToiLnVpLWRpYWxvZy10aXRsZWJhciIsY29udGFpbm1lbnQ6ImRvY3VtZW50IixzdGFydDpmdW5jdGlvbihzLG4pe2UodGhpcykuYWRkQ2xhc3MoInVpLWRpYWxvZy1kcmFnZ2luZyIpLGkuX2Jsb2NrRnJhbWVzKCksaS5fdHJpZ2dlcigiZHJhZ1N0YXJ0IixzLHQobikpfSxkcmFnOmZ1bmN0aW9uKGUscyl7aS5fdHJpZ2dlcigiZHJhZyIsZSx0KHMpKX0sc3RvcDpmdW5jdGlvbihuLGEpe3ZhciBvPWEub2Zmc2V0LmxlZnQtaS5kb2N1bWVudC5zY3JvbGxMZWZ0KCkscj1hLm9mZnNldC50b3AtaS5kb2N1bWVudC5zY3JvbGxUb3AoKTtzLnBvc2l0aW9uPXtteToibGVmdCB0b3AiLGF0OiJsZWZ0Iisobz49MD8iKyI6IiIpK28rIiAiKyJ0b3AiKyhyPj0wPyIrIjoiIikrcixvZjppLndpbmRvd30sZSh0aGlzKS5yZW1vdmVDbGFzcygidWktZGlhbG9nLWRyYWdnaW5nIiksaS5fdW5ibG9ja0ZyYW1lcygpLGkuX3RyaWdnZXIoImRyYWdTdG9wIixuLHQoYSkpfX0pfSxfbWFrZVJlc2l6YWJsZTpmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7cmV0dXJue29yaWdpbmFsUG9zaXRpb246ZS5vcmlnaW5hbFBvc2l0aW9uLG9yaWdpbmFsU2l6ZTplLm9yaWdpbmFsU2l6ZSxwb3NpdGlvbjplLnBvc2l0aW9uLHNpemU6ZS5zaXplfX12YXIgaT10aGlzLHM9dGhpcy5vcHRpb25zLG49cy5yZXNpemFibGUsYT10aGlzLnVpRGlhbG9nLmNzcygicG9zaXRpb24iKSxvPSJzdHJpbmciPT10eXBlb2Ygbj9uOiJuLGUscyx3LHNlLHN3LG5lLG53Ijt0aGlzLnVpRGlhbG9nLnJlc2l6YWJsZSh7Y2FuY2VsOiIudWktZGlhbG9nLWNvbnRlbnQiLGNvbnRhaW5tZW50OiJkb2N1bWVudCIsYWxzb1Jlc2l6ZTp0aGlzLmVsZW1lbnQsbWF4V2lkdGg6cy5tYXhXaWR0aCxtYXhIZWlnaHQ6cy5tYXhIZWlnaHQsbWluV2lkdGg6cy5taW5XaWR0aCxtaW5IZWlnaHQ6dGhpcy5fbWluSGVpZ2h0KCksaGFuZGxlczpvLHN0YXJ0OmZ1bmN0aW9uKHMsbil7ZSh0aGlzKS5hZGRDbGFzcygidWktZGlhbG9nLXJlc2l6aW5nIiksaS5fYmxvY2tGcmFtZXMoKSxpLl90cmlnZ2VyKCJyZXNpemVTdGFydCIscyx0KG4pKX0scmVzaXplOmZ1bmN0aW9uKGUscyl7aS5fdHJpZ2dlcigicmVzaXplIixlLHQocykpfSxzdG9wOmZ1bmN0aW9uKG4sYSl7dmFyIG89aS51aURpYWxvZy5vZmZzZXQoKSxyPW8ubGVmdC1pLmRvY3VtZW50LnNjcm9sbExlZnQoKSxoPW8udG9wLWkuZG9jdW1lbnQuc2Nyb2xsVG9wKCk7cy5oZWlnaHQ9aS51aURpYWxvZy5oZWlnaHQoKSxzLndpZHRoPWkudWlEaWFsb2cud2lkdGgoKSxzLnBvc2l0aW9uPXtteToibGVmdCB0b3AiLGF0OiJsZWZ0Iisocj49MD8iKyI6IiIpK3IrIiAiKyJ0b3AiKyhoPj0wPyIrIjoiIikraCxvZjppLndpbmRvd30sZSh0aGlzKS5yZW1vdmVDbGFzcygidWktZGlhbG9nLXJlc2l6aW5nIiksaS5fdW5ibG9ja0ZyYW1lcygpLGkuX3RyaWdnZXIoInJlc2l6ZVN0b3AiLG4sdChhKSl9fSkuY3NzKCJwb3NpdGlvbiIsYSl9LF90cmFja0ZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5fb24odGhpcy53aWRnZXQoKSx7Zm9jdXNpbjpmdW5jdGlvbih0KXt0aGlzLl9tYWtlRm9jdXNUYXJnZXQoKSx0aGlzLl9mb2N1c2VkRWxlbWVudD1lKHQudGFyZ2V0KX19KX0sX21ha2VGb2N1c1RhcmdldDpmdW5jdGlvbigpe3RoaXMuX3VudHJhY2tJbnN0YW5jZSgpLHRoaXMuX3RyYWNraW5nSW5zdGFuY2VzKCkudW5zaGlmdCh0aGlzKX0sX3VudHJhY2tJbnN0YW5jZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3RyYWNraW5nSW5zdGFuY2VzKCksaT1lLmluQXJyYXkodGhpcyx0KTstMSE9PWkmJnQuc3BsaWNlKGksMSl9LF90cmFja2luZ0luc3RhbmNlczpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZG9jdW1lbnQuZGF0YSgidWktZGlhbG9nLWluc3RhbmNlcyIpO3JldHVybiBlfHwoZT1bXSx0aGlzLmRvY3VtZW50LmRhdGEoInVpLWRpYWxvZy1pbnN0YW5jZXMiLGUpKSxlfSxfbWluSGVpZ2h0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zO3JldHVybiJhdXRvIj09PWUuaGVpZ2h0P2UubWluSGVpZ2h0Ok1hdGgubWluKGUubWluSGVpZ2h0LGUuaGVpZ2h0KX0sX3Bvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy51aURpYWxvZy5pcygiOnZpc2libGUiKTtlfHx0aGlzLnVpRGlhbG9nLnNob3coKSx0aGlzLnVpRGlhbG9nLnBvc2l0aW9uKHRoaXMub3B0aW9ucy5wb3NpdGlvbiksZXx8dGhpcy51aURpYWxvZy5oaWRlKCl9LF9zZXRPcHRpb25zOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMscz0hMSxuPXt9O2UuZWFjaCh0LGZ1bmN0aW9uKGUsdCl7aS5fc2V0T3B0aW9uKGUsdCksZSBpbiBpLnNpemVSZWxhdGVkT3B0aW9ucyYmKHM9ITApLGUgaW4gaS5yZXNpemFibGVSZWxhdGVkT3B0aW9ucyYmKG5bZV09dCl9KSxzJiYodGhpcy5fc2l6ZSgpLHRoaXMuX3Bvc2l0aW9uKCkpLHRoaXMudWlEaWFsb2cuaXMoIjpkYXRhKHVpLXJlc2l6YWJsZSkiKSYmdGhpcy51aURpYWxvZy5yZXNpemFibGUoIm9wdGlvbiIsbil9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXt2YXIgaSxzLG49dGhpcy51aURpYWxvZzsiZGlhbG9nQ2xhc3MiPT09ZSYmbi5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuZGlhbG9nQ2xhc3MpLmFkZENsYXNzKHQpLCJkaXNhYmxlZCIhPT1lJiYodGhpcy5fc3VwZXIoZSx0KSwiYXBwZW5kVG8iPT09ZSYmdGhpcy51aURpYWxvZy5hcHBlbmRUbyh0aGlzLl9hcHBlbmRUbygpKSwiYnV0dG9ucyI9PT1lJiZ0aGlzLl9jcmVhdGVCdXR0b25zKCksImNsb3NlVGV4dCI9PT1lJiZ0aGlzLnVpRGlhbG9nVGl0bGViYXJDbG9zZS5idXR0b24oe2xhYmVsOiIiK3R9KSwiZHJhZ2dhYmxlIj09PWUmJihpPW4uaXMoIjpkYXRhKHVpLWRyYWdnYWJsZSkiKSxpJiYhdCYmbi5kcmFnZ2FibGUoImRlc3Ryb3kiKSwhaSYmdCYmdGhpcy5fbWFrZURyYWdnYWJsZSgpKSwicG9zaXRpb24iPT09ZSYmdGhpcy5fcG9zaXRpb24oKSwicmVzaXphYmxlIj09PWUmJihzPW4uaXMoIjpkYXRhKHVpLXJlc2l6YWJsZSkiKSxzJiYhdCYmbi5yZXNpemFibGUoImRlc3Ryb3kiKSxzJiYic3RyaW5nIj09dHlwZW9mIHQmJm4ucmVzaXphYmxlKCJvcHRpb24iLCJoYW5kbGVzIix0KSxzfHx0PT09ITF8fHRoaXMuX21ha2VSZXNpemFibGUoKSksInRpdGxlIj09PWUmJnRoaXMuX3RpdGxlKHRoaXMudWlEaWFsb2dUaXRsZWJhci5maW5kKCIudWktZGlhbG9nLXRpdGxlIikpKX0sX3NpemU6ZnVuY3Rpb24oKXt2YXIgZSx0LGkscz10aGlzLm9wdGlvbnM7dGhpcy5lbGVtZW50LnNob3coKS5jc3Moe3dpZHRoOiJhdXRvIixtaW5IZWlnaHQ6MCxtYXhIZWlnaHQ6Im5vbmUiLGhlaWdodDowfSkscy5taW5XaWR0aD5zLndpZHRoJiYocy53aWR0aD1zLm1pbldpZHRoKSxlPXRoaXMudWlEaWFsb2cuY3NzKHtoZWlnaHQ6ImF1dG8iLHdpZHRoOnMud2lkdGh9KS5vdXRlckhlaWdodCgpLHQ9TWF0aC5tYXgoMCxzLm1pbkhlaWdodC1lKSxpPSJudW1iZXIiPT10eXBlb2Ygcy5tYXhIZWlnaHQ/TWF0aC5tYXgoMCxzLm1heEhlaWdodC1lKToibm9uZSIsImF1dG8iPT09cy5oZWlnaHQ/dGhpcy5lbGVtZW50LmNzcyh7bWluSGVpZ2h0OnQsbWF4SGVpZ2h0OmksaGVpZ2h0OiJhdXRvIn0pOnRoaXMuZWxlbWVudC5oZWlnaHQoTWF0aC5tYXgoMCxzLmhlaWdodC1lKSksdGhpcy51aURpYWxvZy5pcygiOmRhdGEodWktcmVzaXphYmxlKSIpJiZ0aGlzLnVpRGlhbG9nLnJlc2l6YWJsZSgib3B0aW9uIiwibWluSGVpZ2h0Iix0aGlzLl9taW5IZWlnaHQoKSl9LF9ibG9ja0ZyYW1lczpmdW5jdGlvbigpe3RoaXMuaWZyYW1lQmxvY2tzPXRoaXMuZG9jdW1lbnQuZmluZCgiaWZyYW1lIikubWFwKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKTtyZXR1cm4gZSgiPGRpdj4iKS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsd2lkdGg6dC5vdXRlcldpZHRoKCksaGVpZ2h0OnQub3V0ZXJIZWlnaHQoKX0pLmFwcGVuZFRvKHQucGFyZW50KCkpLm9mZnNldCh0Lm9mZnNldCgpKVswXX0pfSxfdW5ibG9ja0ZyYW1lczpmdW5jdGlvbigpe3RoaXMuaWZyYW1lQmxvY2tzJiYodGhpcy5pZnJhbWVCbG9ja3MucmVtb3ZlKCksZGVsZXRlIHRoaXMuaWZyYW1lQmxvY2tzKX0sX2FsbG93SW50ZXJhY3Rpb246ZnVuY3Rpb24odCl7cmV0dXJuIGUodC50YXJnZXQpLmNsb3Nlc3QoIi51aS1kaWFsb2ciKS5sZW5ndGg/ITA6ISFlKHQudGFyZ2V0KS5jbG9zZXN0KCIudWktZGF0ZXBpY2tlciIpLmxlbmd0aH0sX2NyZWF0ZU92ZXJsYXk6ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMubW9kYWwpe3ZhciB0PSEwO3RoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dD0hMX0pLHRoaXMuZG9jdW1lbnQuZGF0YSgidWktZGlhbG9nLW92ZXJsYXlzIil8fHRoaXMuX29uKHRoaXMuZG9jdW1lbnQse2ZvY3VzaW46ZnVuY3Rpb24oZSl7dHx8dGhpcy5fYWxsb3dJbnRlcmFjdGlvbihlKXx8KGUucHJldmVudERlZmF1bHQoKSx0aGlzLl90cmFja2luZ0luc3RhbmNlcygpWzBdLl9mb2N1c1RhYmJhYmxlKCkpfX0pLHRoaXMub3ZlcmxheT1lKCI8ZGl2PiIpLmFkZENsYXNzKCJ1aS13aWRnZXQtb3ZlcmxheSB1aS1mcm9udCIpLmFwcGVuZFRvKHRoaXMuX2FwcGVuZFRvKCkpLHRoaXMuX29uKHRoaXMub3ZlcmxheSx7bW91c2Vkb3duOiJfa2VlcEZvY3VzIn0pLHRoaXMuZG9jdW1lbnQuZGF0YSgidWktZGlhbG9nLW92ZXJsYXlzIiwodGhpcy5kb2N1bWVudC5kYXRhKCJ1aS1kaWFsb2ctb3ZlcmxheXMiKXx8MCkrMSl9fSxfZGVzdHJveU92ZXJsYXk6ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMubW9kYWwmJnRoaXMub3ZlcmxheSl7dmFyIGU9dGhpcy5kb2N1bWVudC5kYXRhKCJ1aS1kaWFsb2ctb3ZlcmxheXMiKS0xO2U/dGhpcy5kb2N1bWVudC5kYXRhKCJ1aS1kaWFsb2ctb3ZlcmxheXMiLGUpOnRoaXMuZG9jdW1lbnQudW5iaW5kKCJmb2N1c2luIikucmVtb3ZlRGF0YSgidWktZGlhbG9nLW92ZXJsYXlzIiksdGhpcy5vdmVybGF5LnJlbW92ZSgpLHRoaXMub3ZlcmxheT1udWxsfX19KSxlLndpZGdldCgidWkucHJvZ3Jlc3NiYXIiLHt2ZXJzaW9uOiIxLjExLjQiLG9wdGlvbnM6e21heDoxMDAsdmFsdWU6MCxjaGFuZ2U6bnVsbCxjb21wbGV0ZTpudWxsfSxtaW46MCxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5vbGRWYWx1ZT10aGlzLm9wdGlvbnMudmFsdWU9dGhpcy5fY29uc3RyYWluZWRWYWx1ZSgpLHRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktcHJvZ3Jlc3NiYXIgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiKS5hdHRyKHtyb2xlOiJwcm9ncmVzc2JhciIsImFyaWEtdmFsdWVtaW4iOnRoaXMubWlufSksdGhpcy52YWx1ZURpdj1lKCI8ZGl2IGNsYXNzPSd1aS1wcm9ncmVzc2Jhci12YWx1ZSB1aS13aWRnZXQtaGVhZGVyIHVpLWNvcm5lci1sZWZ0Jz48L2Rpdj4iKS5hcHBlbmRUbyh0aGlzLmVsZW1lbnQpLHRoaXMuX3JlZnJlc2hWYWx1ZSgpfSxfZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5yZW1vdmVDbGFzcygidWktcHJvZ3Jlc3NiYXIgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiKS5yZW1vdmVBdHRyKCJyb2xlIikucmVtb3ZlQXR0cigiYXJpYS12YWx1ZW1pbiIpLnJlbW92ZUF0dHIoImFyaWEtdmFsdWVtYXgiKS5yZW1vdmVBdHRyKCJhcmlhLXZhbHVlbm93IiksdGhpcy52YWx1ZURpdi5yZW1vdmUoKX0sdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWU/dGhpcy5vcHRpb25zLnZhbHVlOih0aGlzLm9wdGlvbnMudmFsdWU9dGhpcy5fY29uc3RyYWluZWRWYWx1ZShlKSx0aGlzLl9yZWZyZXNoVmFsdWUoKSx2b2lkIDApfSxfY29uc3RyYWluZWRWYWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9dGhpcy5vcHRpb25zLnZhbHVlKSx0aGlzLmluZGV0ZXJtaW5hdGU9ZT09PSExLCJudW1iZXIiIT10eXBlb2YgZSYmKGU9MCksdGhpcy5pbmRldGVybWluYXRlPyExOk1hdGgubWluKHRoaXMub3B0aW9ucy5tYXgsTWF0aC5tYXgodGhpcy5taW4sZSkpfSxfc2V0T3B0aW9uczpmdW5jdGlvbihlKXt2YXIgdD1lLnZhbHVlO2RlbGV0ZSBlLnZhbHVlLHRoaXMuX3N1cGVyKGUpLHRoaXMub3B0aW9ucy52YWx1ZT10aGlzLl9jb25zdHJhaW5lZFZhbHVlKHQpLHRoaXMuX3JlZnJlc2hWYWx1ZSgpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7Im1heCI9PT1lJiYodD1NYXRoLm1heCh0aGlzLm1pbix0KSksImRpc2FibGVkIj09PWUmJnRoaXMuZWxlbWVudC50b2dnbGVDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiLCEhdCkuYXR0cigiYXJpYS1kaXNhYmxlZCIsdCksdGhpcy5fc3VwZXIoZSx0KX0sX3BlcmNlbnRhZ2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbmRldGVybWluYXRlPzEwMDoxMDAqKHRoaXMub3B0aW9ucy52YWx1ZS10aGlzLm1pbikvKHRoaXMub3B0aW9ucy5tYXgtdGhpcy5taW4pfSxfcmVmcmVzaFZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLnZhbHVlLGk9dGhpcy5fcGVyY2VudGFnZSgpO3RoaXMudmFsdWVEaXYudG9nZ2xlKHRoaXMuaW5kZXRlcm1pbmF0ZXx8dD50aGlzLm1pbikudG9nZ2xlQ2xhc3MoInVpLWNvcm5lci1yaWdodCIsdD09PXRoaXMub3B0aW9ucy5tYXgpLndpZHRoKGkudG9GaXhlZCgwKSsiJSIpLHRoaXMuZWxlbWVudC50b2dnbGVDbGFzcygidWktcHJvZ3Jlc3NiYXItaW5kZXRlcm1pbmF0ZSIsdGhpcy5pbmRldGVybWluYXRlKSx0aGlzLmluZGV0ZXJtaW5hdGU/KHRoaXMuZWxlbWVudC5yZW1vdmVBdHRyKCJhcmlhLXZhbHVlbm93IiksdGhpcy5vdmVybGF5RGl2fHwodGhpcy5vdmVybGF5RGl2PWUoIjxkaXYgY2xhc3M9J3VpLXByb2dyZXNzYmFyLW92ZXJsYXknPjwvZGl2PiIpLmFwcGVuZFRvKHRoaXMudmFsdWVEaXYpKSk6KHRoaXMuZWxlbWVudC5hdHRyKHsiYXJpYS12YWx1ZW1heCI6dGhpcy5vcHRpb25zLm1heCwiYXJpYS12YWx1ZW5vdyI6dH0pLHRoaXMub3ZlcmxheURpdiYmKHRoaXMub3ZlcmxheURpdi5yZW1vdmUoKSx0aGlzLm92ZXJsYXlEaXY9bnVsbCkpLHRoaXMub2xkVmFsdWUhPT10JiYodGhpcy5vbGRWYWx1ZT10LHRoaXMuX3RyaWdnZXIoImNoYW5nZSIpKSx0PT09dGhpcy5vcHRpb25zLm1heCYmdGhpcy5fdHJpZ2dlcigiY29tcGxldGUiKX19KSxlLndpZGdldCgidWkuc2VsZWN0bWVudSIse3ZlcnNpb246IjEuMTEuNCIsZGVmYXVsdEVsZW1lbnQ6IjxzZWxlY3Q+IixvcHRpb25zOnthcHBlbmRUbzpudWxsLGRpc2FibGVkOm51bGwsaWNvbnM6e2J1dHRvbjoidWktaWNvbi10cmlhbmdsZS0xLXMifSxwb3NpdGlvbjp7bXk6ImxlZnQgdG9wIixhdDoibGVmdCBib3R0b20iLGNvbGxpc2lvbjoibm9uZSJ9LHdpZHRoOm51bGwsY2hhbmdlOm51bGwsY2xvc2U6bnVsbCxmb2N1czpudWxsLG9wZW46bnVsbCxzZWxlY3Q6bnVsbH0sX2NyZWF0ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZWxlbWVudC51bmlxdWVJZCgpLmF0dHIoImlkIik7dGhpcy5pZHM9e2VsZW1lbnQ6ZSxidXR0b246ZSsiLWJ1dHRvbiIsbWVudTplKyItbWVudSJ9LHRoaXMuX2RyYXdCdXR0b24oKSx0aGlzLl9kcmF3TWVudSgpLHRoaXMub3B0aW9ucy5kaXNhYmxlZCYmdGhpcy5kaXNhYmxlKCl9LF9kcmF3QnV0dG9uOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmxhYmVsPWUoImxhYmVsW2Zvcj0nIit0aGlzLmlkcy5lbGVtZW50KyInXSIpLmF0dHIoImZvciIsdGhpcy5pZHMuYnV0dG9uKSx0aGlzLl9vbih0aGlzLmxhYmVsLHtjbGljazpmdW5jdGlvbihlKXt0aGlzLmJ1dHRvbi5mb2N1cygpLGUucHJldmVudERlZmF1bHQoKX19KSx0aGlzLmVsZW1lbnQuaGlkZSgpLHRoaXMuYnV0dG9uPWUoIjxzcGFuPiIseyJjbGFzcyI6InVpLXNlbGVjdG1lbnUtYnV0dG9uIHVpLXdpZGdldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwiLHRhYmluZGV4OnRoaXMub3B0aW9ucy5kaXNhYmxlZD8tMTowLGlkOnRoaXMuaWRzLmJ1dHRvbixyb2xlOiJjb21ib2JveCIsImFyaWEtZXhwYW5kZWQiOiJmYWxzZSIsImFyaWEtYXV0b2NvbXBsZXRlIjoibGlzdCIsImFyaWEtb3ducyI6dGhpcy5pZHMubWVudSwiYXJpYS1oYXNwb3B1cCI6InRydWUifSkuaW5zZXJ0QWZ0ZXIodGhpcy5lbGVtZW50KSxlKCI8c3Bhbj4iLHsiY2xhc3MiOiJ1aS1pY29uICIrdGhpcy5vcHRpb25zLmljb25zLmJ1dHRvbn0pLnByZXBlbmRUbyh0aGlzLmJ1dHRvbiksdGhpcy5idXR0b25UZXh0PWUoIjxzcGFuPiIseyJjbGFzcyI6InVpLXNlbGVjdG1lbnUtdGV4dCJ9KS5hcHBlbmRUbyh0aGlzLmJ1dHRvbiksdGhpcy5fc2V0VGV4dCh0aGlzLmJ1dHRvblRleHQsdGhpcy5lbGVtZW50LmZpbmQoIm9wdGlvbjpzZWxlY3RlZCIpLnRleHQoKSksdGhpcy5fcmVzaXplQnV0dG9uKCksdGhpcy5fb24odGhpcy5idXR0b24sdGhpcy5fYnV0dG9uRXZlbnRzKSx0aGlzLmJ1dHRvbi5vbmUoImZvY3VzaW4iLGZ1bmN0aW9uKCl7dC5tZW51SXRlbXN8fHQuX3JlZnJlc2hNZW51KCl9KSx0aGlzLl9ob3ZlcmFibGUodGhpcy5idXR0b24pLHRoaXMuX2ZvY3VzYWJsZSh0aGlzLmJ1dHRvbil9LF9kcmF3TWVudTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5tZW51PWUoIjx1bD4iLHsiYXJpYS1oaWRkZW4iOiJ0cnVlIiwiYXJpYS1sYWJlbGxlZGJ5Ijp0aGlzLmlkcy5idXR0b24saWQ6dGhpcy5pZHMubWVudX0pLHRoaXMubWVudVdyYXA9ZSgiPGRpdj4iLHsiY2xhc3MiOiJ1aS1zZWxlY3RtZW51LW1lbnUgdWktZnJvbnQifSkuYXBwZW5kKHRoaXMubWVudSkuYXBwZW5kVG8odGhpcy5fYXBwZW5kVG8oKSksdGhpcy5tZW51SW5zdGFuY2U9dGhpcy5tZW51Lm1lbnUoe3JvbGU6Imxpc3Rib3giLHNlbGVjdDpmdW5jdGlvbihlLGkpe2UucHJldmVudERlZmF1bHQoKSx0Ll9zZXRTZWxlY3Rpb24oKSx0Ll9zZWxlY3QoaS5pdGVtLmRhdGEoInVpLXNlbGVjdG1lbnUtaXRlbSIpLGUpfSxmb2N1czpmdW5jdGlvbihlLGkpe3ZhciBzPWkuaXRlbS5kYXRhKCJ1aS1zZWxlY3RtZW51LWl0ZW0iKTtudWxsIT10LmZvY3VzSW5kZXgmJnMuaW5kZXghPT10LmZvY3VzSW5kZXgmJih0Ll90cmlnZ2VyKCJmb2N1cyIsZSx7aXRlbTpzfSksdC5pc09wZW58fHQuX3NlbGVjdChzLGUpKSx0LmZvY3VzSW5kZXg9cy5pbmRleCx0LmJ1dHRvbi5hdHRyKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiLHQubWVudUl0ZW1zLmVxKHMuaW5kZXgpLmF0dHIoImlkIikpfX0pLm1lbnUoImluc3RhbmNlIiksdGhpcy5tZW51LmFkZENsYXNzKCJ1aS1jb3JuZXItYm90dG9tIikucmVtb3ZlQ2xhc3MoInVpLWNvcm5lci1hbGwiKSx0aGlzLm1lbnVJbnN0YW5jZS5fb2ZmKHRoaXMubWVudSwibW91c2VsZWF2ZSIpLHRoaXMubWVudUluc3RhbmNlLl9jbG9zZU9uRG9jdW1lbnRDbGljaz1mdW5jdGlvbigpe3JldHVybiExfSx0aGlzLm1lbnVJbnN0YW5jZS5faXNEaXZpZGVyPWZ1bmN0aW9uKCl7cmV0dXJuITF9fSxyZWZyZXNoOmZ1bmN0aW9uKCl7dGhpcy5fcmVmcmVzaE1lbnUoKSx0aGlzLl9zZXRUZXh0KHRoaXMuYnV0dG9uVGV4dCx0aGlzLl9nZXRTZWxlY3RlZEl0ZW0oKS50ZXh0KCkpLHRoaXMub3B0aW9ucy53aWR0aHx8dGhpcy5fcmVzaXplQnV0dG9uKCl9LF9yZWZyZXNoTWVudTpmdW5jdGlvbigpe3RoaXMubWVudS5lbXB0eSgpO3ZhciBlLHQ9dGhpcy5lbGVtZW50LmZpbmQoIm9wdGlvbiIpO3QubGVuZ3RoJiYodGhpcy5fcGFyc2VPcHRpb25zKHQpLHRoaXMuX3JlbmRlck1lbnUodGhpcy5tZW51LHRoaXMuaXRlbXMpLHRoaXMubWVudUluc3RhbmNlLnJlZnJlc2goKSx0aGlzLm1lbnVJdGVtcz10aGlzLm1lbnUuZmluZCgibGkiKS5ub3QoIi51aS1zZWxlY3RtZW51LW9wdGdyb3VwIiksZT10aGlzLl9nZXRTZWxlY3RlZEl0ZW0oKSx0aGlzLm1lbnVJbnN0YW5jZS5mb2N1cyhudWxsLGUpLHRoaXMuX3NldEFyaWEoZS5kYXRhKCJ1aS1zZWxlY3RtZW51LWl0ZW0iKSksdGhpcy5fc2V0T3B0aW9uKCJkaXNhYmxlZCIsdGhpcy5lbGVtZW50LnByb3AoImRpc2FibGVkIikpKX0sb3BlbjpmdW5jdGlvbihlKXt0aGlzLm9wdGlvbnMuZGlzYWJsZWR8fCh0aGlzLm1lbnVJdGVtcz8odGhpcy5tZW51LmZpbmQoIi51aS1zdGF0ZS1mb2N1cyIpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpLHRoaXMubWVudUluc3RhbmNlLmZvY3VzKG51bGwsdGhpcy5fZ2V0U2VsZWN0ZWRJdGVtKCkpKTp0aGlzLl9yZWZyZXNoTWVudSgpLHRoaXMuaXNPcGVuPSEwLHRoaXMuX3RvZ2dsZUF0dHIoKSx0aGlzLl9yZXNpemVNZW51KCksdGhpcy5fcG9zaXRpb24oKSx0aGlzLl9vbih0aGlzLmRvY3VtZW50LHRoaXMuX2RvY3VtZW50Q2xpY2spLHRoaXMuX3RyaWdnZXIoIm9wZW4iLGUpKX0sX3Bvc2l0aW9uOmZ1bmN0aW9uKCl7dGhpcy5tZW51V3JhcC5wb3NpdGlvbihlLmV4dGVuZCh7b2Y6dGhpcy5idXR0b259LHRoaXMub3B0aW9ucy5wb3NpdGlvbikpfSxjbG9zZTpmdW5jdGlvbihlKXt0aGlzLmlzT3BlbiYmKHRoaXMuaXNPcGVuPSExLHRoaXMuX3RvZ2dsZUF0dHIoKSx0aGlzLnJhbmdlPW51bGwsdGhpcy5fb2ZmKHRoaXMuZG9jdW1lbnQpLHRoaXMuX3RyaWdnZXIoImNsb3NlIixlKSl9LHdpZGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmJ1dHRvbn0sbWVudVdpZGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1lbnV9LF9yZW5kZXJNZW51OmZ1bmN0aW9uKHQsaSl7dmFyIHM9dGhpcyxuPSIiO2UuZWFjaChpLGZ1bmN0aW9uKGksYSl7YS5vcHRncm91cCE9PW4mJihlKCI8bGk+Iix7ImNsYXNzIjoidWktc2VsZWN0bWVudS1vcHRncm91cCB1aS1tZW51LWRpdmlkZXIiKyhhLmVsZW1lbnQucGFyZW50KCJvcHRncm91cCIpLnByb3AoImRpc2FibGVkIik/IiB1aS1zdGF0ZS1kaXNhYmxlZCI6IiIpLHRleHQ6YS5vcHRncm91cH0pLmFwcGVuZFRvKHQpLG49YS5vcHRncm91cCkscy5fcmVuZGVySXRlbURhdGEodCxhKX0pfSxfcmVuZGVySXRlbURhdGE6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fcmVuZGVySXRlbShlLHQpLmRhdGEoInVpLXNlbGVjdG1lbnUtaXRlbSIsdCl9LF9yZW5kZXJJdGVtOmZ1bmN0aW9uKHQsaSl7dmFyIHM9ZSgiPGxpPiIpO3JldHVybiBpLmRpc2FibGVkJiZzLmFkZENsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpLHRoaXMuX3NldFRleHQocyxpLmxhYmVsKSxzLmFwcGVuZFRvKHQpfSxfc2V0VGV4dDpmdW5jdGlvbihlLHQpe3Q/ZS50ZXh0KHQpOmUuaHRtbCgiJiMxNjA7Iil9LF9tb3ZlOmZ1bmN0aW9uKGUsdCl7dmFyIGkscyxuPSIudWktbWVudS1pdGVtIjt0aGlzLmlzT3Blbj9pPXRoaXMubWVudUl0ZW1zLmVxKHRoaXMuZm9jdXNJbmRleCk6KGk9dGhpcy5tZW51SXRlbXMuZXEodGhpcy5lbGVtZW50WzBdLnNlbGVjdGVkSW5kZXgpLG4rPSI6bm90KC51aS1zdGF0ZS1kaXNhYmxlZCkiKSxzPSJmaXJzdCI9PT1lfHwibGFzdCI9PT1lP2lbImZpcnN0Ij09PWU/InByZXZBbGwiOiJuZXh0QWxsIl0obikuZXEoLTEpOmlbZSsiQWxsIl0obikuZXEoMCkscy5sZW5ndGgmJnRoaXMubWVudUluc3RhbmNlLmZvY3VzKHQscyl9LF9nZXRTZWxlY3RlZEl0ZW06ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZW51SXRlbXMuZXEodGhpcy5lbGVtZW50WzBdLnNlbGVjdGVkSW5kZXgpfSxfdG9nZ2xlOmZ1bmN0aW9uKGUpe3RoaXNbdGhpcy5pc09wZW4/ImNsb3NlIjoib3BlbiJdKGUpfSxfc2V0U2VsZWN0aW9uOmZ1bmN0aW9uKCl7dmFyIGU7dGhpcy5yYW5nZSYmKHdpbmRvdy5nZXRTZWxlY3Rpb24/KGU9d2luZG93LmdldFNlbGVjdGlvbigpLGUucmVtb3ZlQWxsUmFuZ2VzKCksZS5hZGRSYW5nZSh0aGlzLnJhbmdlKSk6dGhpcy5yYW5nZS5zZWxlY3QoKSx0aGlzLmJ1dHRvbi5mb2N1cygpKX0sX2RvY3VtZW50Q2xpY2s6e21vdXNlZG93bjpmdW5jdGlvbih0KXt0aGlzLmlzT3BlbiYmKGUodC50YXJnZXQpLmNsb3Nlc3QoIi51aS1zZWxlY3RtZW51LW1lbnUsICMiK3RoaXMuaWRzLmJ1dHRvbikubGVuZ3RofHx0aGlzLmNsb3NlKHQpKX19LF9idXR0b25FdmVudHM6e21vdXNlZG93bjpmdW5jdGlvbigpe3ZhciBlO3dpbmRvdy5nZXRTZWxlY3Rpb24/KGU9d2luZG93LmdldFNlbGVjdGlvbigpLGUucmFuZ2VDb3VudCYmKHRoaXMucmFuZ2U9ZS5nZXRSYW5nZUF0KDApKSk6dGhpcy5yYW5nZT1kb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKX0sY2xpY2s6ZnVuY3Rpb24oZSl7dGhpcy5fc2V0U2VsZWN0aW9uKCksdGhpcy5fdG9nZ2xlKGUpfSxrZXlkb3duOmZ1bmN0aW9uKHQpe3ZhciBpPSEwO3N3aXRjaCh0LmtleUNvZGUpe2Nhc2UgZS51aS5rZXlDb2RlLlRBQjpjYXNlIGUudWkua2V5Q29kZS5FU0NBUEU6dGhpcy5jbG9zZSh0KSxpPSExO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkVOVEVSOnRoaXMuaXNPcGVuJiZ0aGlzLl9zZWxlY3RGb2N1c2VkSXRlbSh0KTticmVhaztjYXNlIGUudWkua2V5Q29kZS5VUDp0LmFsdEtleT90aGlzLl90b2dnbGUodCk6dGhpcy5fbW92ZSgicHJldiIsdCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuRE9XTjp0LmFsdEtleT90aGlzLl90b2dnbGUodCk6dGhpcy5fbW92ZSgibmV4dCIsdCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuU1BBQ0U6dGhpcy5pc09wZW4/dGhpcy5fc2VsZWN0Rm9jdXNlZEl0ZW0odCk6dGhpcy5fdG9nZ2xlKHQpO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkxFRlQ6dGhpcy5fbW92ZSgicHJldiIsdCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuUklHSFQ6dGhpcy5fbW92ZSgibmV4dCIsdCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuSE9NRTpjYXNlIGUudWkua2V5Q29kZS5QQUdFX1VQOnRoaXMuX21vdmUoImZpcnN0Iix0KTticmVhaztjYXNlIGUudWkua2V5Q29kZS5FTkQ6Y2FzZSBlLnVpLmtleUNvZGUuUEFHRV9ET1dOOnRoaXMuX21vdmUoImxhc3QiLHQpO2JyZWFrO2RlZmF1bHQ6dGhpcy5tZW51LnRyaWdnZXIodCksaT0hMX1pJiZ0LnByZXZlbnREZWZhdWx0KCl9fSxfc2VsZWN0Rm9jdXNlZEl0ZW06ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5tZW51SXRlbXMuZXEodGhpcy5mb2N1c0luZGV4KTt0Lmhhc0NsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpfHx0aGlzLl9zZWxlY3QodC5kYXRhKCJ1aS1zZWxlY3RtZW51LWl0ZW0iKSxlKX0sX3NlbGVjdDpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMuZWxlbWVudFswXS5zZWxlY3RlZEluZGV4O3RoaXMuZWxlbWVudFswXS5zZWxlY3RlZEluZGV4PWUuaW5kZXgsdGhpcy5fc2V0VGV4dCh0aGlzLmJ1dHRvblRleHQsZS5sYWJlbCksdGhpcy5fc2V0QXJpYShlKSx0aGlzLl90cmlnZ2VyKCJzZWxlY3QiLHQse2l0ZW06ZX0pLGUuaW5kZXghPT1pJiZ0aGlzLl90cmlnZ2VyKCJjaGFuZ2UiLHQse2l0ZW06ZX0pLHRoaXMuY2xvc2UodCl9LF9zZXRBcmlhOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMubWVudUl0ZW1zLmVxKGUuaW5kZXgpLmF0dHIoImlkIik7dGhpcy5idXR0b24uYXR0cih7ImFyaWEtbGFiZWxsZWRieSI6dCwiYXJpYS1hY3RpdmVkZXNjZW5kYW50Ijp0fSksdGhpcy5tZW51LmF0dHIoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsdCl9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXsiaWNvbnMiPT09ZSYmdGhpcy5idXR0b24uZmluZCgic3Bhbi51aS1pY29uIikucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmljb25zLmJ1dHRvbikuYWRkQ2xhc3ModC5idXR0b24pLHRoaXMuX3N1cGVyKGUsdCksImFwcGVuZFRvIj09PWUmJnRoaXMubWVudVdyYXAuYXBwZW5kVG8odGhpcy5fYXBwZW5kVG8oKSksImRpc2FibGVkIj09PWUmJih0aGlzLm1lbnVJbnN0YW5jZS5vcHRpb24oImRpc2FibGVkIix0KSx0aGlzLmJ1dHRvbi50b2dnbGVDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiLHQpLmF0dHIoImFyaWEtZGlzYWJsZWQiLHQpLHRoaXMuZWxlbWVudC5wcm9wKCJkaXNhYmxlZCIsdCksdD8odGhpcy5idXR0b24uYXR0cigidGFiaW5kZXgiLC0xKSx0aGlzLmNsb3NlKCkpOnRoaXMuYnV0dG9uLmF0dHIoInRhYmluZGV4IiwwKSksIndpZHRoIj09PWUmJnRoaXMuX3Jlc2l6ZUJ1dHRvbigpfSxfYXBwZW5kVG86ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMuYXBwZW5kVG87cmV0dXJuIHQmJih0PXQuanF1ZXJ5fHx0Lm5vZGVUeXBlP2UodCk6dGhpcy5kb2N1bWVudC5maW5kKHQpLmVxKDApKSx0JiZ0WzBdfHwodD10aGlzLmVsZW1lbnQuY2xvc2VzdCgiLnVpLWZyb250IikpLHQubGVuZ3RofHwodD10aGlzLmRvY3VtZW50WzBdLmJvZHkpLHR9LF90b2dnbGVBdHRyOmZ1bmN0aW9uKCl7dGhpcy5idXR0b24udG9nZ2xlQ2xhc3MoInVpLWNvcm5lci10b3AiLHRoaXMuaXNPcGVuKS50b2dnbGVDbGFzcygidWktY29ybmVyLWFsbCIsIXRoaXMuaXNPcGVuKS5hdHRyKCJhcmlhLWV4cGFuZGVkIix0aGlzLmlzT3BlbiksdGhpcy5tZW51V3JhcC50b2dnbGVDbGFzcygidWktc2VsZWN0bWVudS1vcGVuIix0aGlzLmlzT3BlbiksdGhpcy5tZW51LmF0dHIoImFyaWEtaGlkZGVuIiwhdGhpcy5pc09wZW4pfSxfcmVzaXplQnV0dG9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLndpZHRoO2V8fChlPXRoaXMuZWxlbWVudC5zaG93KCkub3V0ZXJXaWR0aCgpLHRoaXMuZWxlbWVudC5oaWRlKCkpLHRoaXMuYnV0dG9uLm91dGVyV2lkdGgoZSl9LF9yZXNpemVNZW51OmZ1bmN0aW9uKCl7dGhpcy5tZW51Lm91dGVyV2lkdGgoTWF0aC5tYXgodGhpcy5idXR0b24ub3V0ZXJXaWR0aCgpLHRoaXMubWVudS53aWR0aCgiIikub3V0ZXJXaWR0aCgpKzEpKX0sX2dldENyZWF0ZU9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm57ZGlzYWJsZWQ6dGhpcy5lbGVtZW50LnByb3AoImRpc2FibGVkIil9fSxfcGFyc2VPcHRpb25zOmZ1bmN0aW9uKHQpe3ZhciBpPVtdO3QuZWFjaChmdW5jdGlvbih0LHMpe3ZhciBuPWUocyksYT1uLnBhcmVudCgib3B0Z3JvdXAiKTtpLnB1c2goe2VsZW1lbnQ6bixpbmRleDp0LHZhbHVlOm4udmFsKCksbGFiZWw6bi50ZXh0KCksb3B0Z3JvdXA6YS5hdHRyKCJsYWJlbCIpfHwiIixkaXNhYmxlZDphLnByb3AoImRpc2FibGVkIil8fG4ucHJvcCgiZGlzYWJsZWQiKX0pfSksdGhpcy5pdGVtcz1pfSxfZGVzdHJveTpmdW5jdGlvbigpe3RoaXMubWVudVdyYXAucmVtb3ZlKCksdGhpcy5idXR0b24ucmVtb3ZlKCksdGhpcy5lbGVtZW50LnNob3coKSx0aGlzLmVsZW1lbnQucmVtb3ZlVW5pcXVlSWQoKSx0aGlzLmxhYmVsLmF0dHIoImZvciIsdGhpcy5pZHMuZWxlbWVudCl9fSksZS53aWRnZXQoInVpLnNsaWRlciIsZS51aS5tb3VzZSx7dmVyc2lvbjoiMS4xMS40Iix3aWRnZXRFdmVudFByZWZpeDoic2xpZGUiLG9wdGlvbnM6e2FuaW1hdGU6ITEsZGlzdGFuY2U6MCxtYXg6MTAwLG1pbjowLG9yaWVudGF0aW9uOiJob3Jpem9udGFsIixyYW5nZTohMSxzdGVwOjEsdmFsdWU6MCx2YWx1ZXM6bnVsbCxjaGFuZ2U6bnVsbCxzbGlkZTpudWxsLHN0YXJ0Om51bGwsc3RvcDpudWxsfSxudW1QYWdlczo1LF9jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLl9rZXlTbGlkaW5nPSExLHRoaXMuX21vdXNlU2xpZGluZz0hMSx0aGlzLl9hbmltYXRlT2ZmPSEwLHRoaXMuX2hhbmRsZUluZGV4PW51bGwsdGhpcy5fZGV0ZWN0T3JpZW50YXRpb24oKSx0aGlzLl9tb3VzZUluaXQoKSx0aGlzLl9jYWxjdWxhdGVOZXdNYXgoKSx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXNsaWRlciB1aS1zbGlkZXItIit0aGlzLm9yaWVudGF0aW9uKyIgdWktd2lkZ2V0IisiIHVpLXdpZGdldC1jb250ZW50IisiIHVpLWNvcm5lci1hbGwiKSx0aGlzLl9yZWZyZXNoKCksdGhpcy5fc2V0T3B0aW9uKCJkaXNhYmxlZCIsdGhpcy5vcHRpb25zLmRpc2FibGVkKSx0aGlzLl9hbmltYXRlT2ZmPSExfSxfcmVmcmVzaDpmdW5jdGlvbigpe3RoaXMuX2NyZWF0ZVJhbmdlKCksdGhpcy5fY3JlYXRlSGFuZGxlcygpLHRoaXMuX3NldHVwRXZlbnRzKCksdGhpcy5fcmVmcmVzaFZhbHVlKCl9LF9jcmVhdGVIYW5kbGVzOmZ1bmN0aW9uKCl7dmFyIHQsaSxzPXRoaXMub3B0aW9ucyxuPXRoaXMuZWxlbWVudC5maW5kKCIudWktc2xpZGVyLWhhbmRsZSIpLmFkZENsYXNzKCJ1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwiKSxhPSI8c3BhbiBjbGFzcz0ndWktc2xpZGVyLWhhbmRsZSB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwnIHRhYmluZGV4PScwJz48L3NwYW4+IixvPVtdO2ZvcihpPXMudmFsdWVzJiZzLnZhbHVlcy5sZW5ndGh8fDEsbi5sZW5ndGg+aSYmKG4uc2xpY2UoaSkucmVtb3ZlKCksbj1uLnNsaWNlKDAsaSkpLHQ9bi5sZW5ndGg7aT50O3QrKylvLnB1c2goYSk7dGhpcy5oYW5kbGVzPW4uYWRkKGUoby5qb2luKCIiKSkuYXBwZW5kVG8odGhpcy5lbGVtZW50KSksdGhpcy5oYW5kbGU9dGhpcy5oYW5kbGVzLmVxKDApLHRoaXMuaGFuZGxlcy5lYWNoKGZ1bmN0aW9uKHQpe2UodGhpcykuZGF0YSgidWktc2xpZGVyLWhhbmRsZS1pbmRleCIsdCl9KX0sX2NyZWF0ZVJhbmdlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLGk9IiI7dC5yYW5nZT8odC5yYW5nZT09PSEwJiYodC52YWx1ZXM/dC52YWx1ZXMubGVuZ3RoJiYyIT09dC52YWx1ZXMubGVuZ3RoP3QudmFsdWVzPVt0LnZhbHVlc1swXSx0LnZhbHVlc1swXV06ZS5pc0FycmF5KHQudmFsdWVzKSYmKHQudmFsdWVzPXQudmFsdWVzLnNsaWNlKDApKTp0LnZhbHVlcz1bdGhpcy5fdmFsdWVNaW4oKSx0aGlzLl92YWx1ZU1pbigpXSksdGhpcy5yYW5nZSYmdGhpcy5yYW5nZS5sZW5ndGg/dGhpcy5yYW5nZS5yZW1vdmVDbGFzcygidWktc2xpZGVyLXJhbmdlLW1pbiB1aS1zbGlkZXItcmFuZ2UtbWF4IikuY3NzKHtsZWZ0OiIiLGJvdHRvbToiIn0pOih0aGlzLnJhbmdlPWUoIjxkaXY+PC9kaXY+IikuYXBwZW5kVG8odGhpcy5lbGVtZW50KSxpPSJ1aS1zbGlkZXItcmFuZ2UgdWktd2lkZ2V0LWhlYWRlciB1aS1jb3JuZXItYWxsIiksdGhpcy5yYW5nZS5hZGRDbGFzcyhpKygibWluIj09PXQucmFuZ2V8fCJtYXgiPT09dC5yYW5nZT8iIHVpLXNsaWRlci1yYW5nZS0iK3QucmFuZ2U6IiIpKSk6KHRoaXMucmFuZ2UmJnRoaXMucmFuZ2UucmVtb3ZlKCksdGhpcy5yYW5nZT1udWxsKX0sX3NldHVwRXZlbnRzOmZ1bmN0aW9uKCl7dGhpcy5fb2ZmKHRoaXMuaGFuZGxlcyksdGhpcy5fb24odGhpcy5oYW5kbGVzLHRoaXMuX2hhbmRsZUV2ZW50cyksdGhpcy5faG92ZXJhYmxlKHRoaXMuaGFuZGxlcyksdGhpcy5fZm9jdXNhYmxlKHRoaXMuaGFuZGxlcyl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5oYW5kbGVzLnJlbW92ZSgpLHRoaXMucmFuZ2UmJnRoaXMucmFuZ2UucmVtb3ZlKCksdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zbGlkZXIgdWktc2xpZGVyLWhvcml6b250YWwgdWktc2xpZGVyLXZlcnRpY2FsIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIiksdGhpcy5fbW91c2VEZXN0cm95KCl9LF9tb3VzZUNhcHR1cmU6ZnVuY3Rpb24odCl7dmFyIGkscyxuLGEsbyxyLGgsbCx1PXRoaXMsZD10aGlzLm9wdGlvbnM7cmV0dXJuIGQuZGlzYWJsZWQ/ITE6KHRoaXMuZWxlbWVudFNpemU9e3dpZHRoOnRoaXMuZWxlbWVudC5vdXRlcldpZHRoKCksaGVpZ2h0OnRoaXMuZWxlbWVudC5vdXRlckhlaWdodCgpfSx0aGlzLmVsZW1lbnRPZmZzZXQ9dGhpcy5lbGVtZW50Lm9mZnNldCgpLGk9e3g6dC5wYWdlWCx5OnQucGFnZVl9LHM9dGhpcy5fbm9ybVZhbHVlRnJvbU1vdXNlKGkpLG49dGhpcy5fdmFsdWVNYXgoKS10aGlzLl92YWx1ZU1pbigpKzEsdGhpcy5oYW5kbGVzLmVhY2goZnVuY3Rpb24odCl7dmFyIGk9TWF0aC5hYnMocy11LnZhbHVlcyh0KSk7KG4+aXx8bj09PWkmJih0PT09dS5fbGFzdENoYW5nZWRWYWx1ZXx8dS52YWx1ZXModCk9PT1kLm1pbikpJiYobj1pLGE9ZSh0aGlzKSxvPXQpfSkscj10aGlzLl9zdGFydCh0LG8pLHI9PT0hMT8hMToodGhpcy5fbW91c2VTbGlkaW5nPSEwLHRoaXMuX2hhbmRsZUluZGV4PW8sYS5hZGRDbGFzcygidWktc3RhdGUtYWN0aXZlIikuZm9jdXMoKSxoPWEub2Zmc2V0KCksbD0hZSh0LnRhcmdldCkucGFyZW50cygpLmFkZEJhY2soKS5pcygiLnVpLXNsaWRlci1oYW5kbGUiKSx0aGlzLl9jbGlja09mZnNldD1sP3tsZWZ0OjAsdG9wOjB9OntsZWZ0OnQucGFnZVgtaC5sZWZ0LWEud2lkdGgoKS8yLHRvcDp0LnBhZ2VZLWgudG9wLWEuaGVpZ2h0KCkvMi0ocGFyc2VJbnQoYS5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoYS5jc3MoImJvcmRlckJvdHRvbVdpZHRoIiksMTApfHwwKSsocGFyc2VJbnQoYS5jc3MoIm1hcmdpblRvcCIpLDEwKXx8MCl9LHRoaXMuaGFuZGxlcy5oYXNDbGFzcygidWktc3RhdGUtaG92ZXIiKXx8dGhpcy5fc2xpZGUodCxvLHMpLHRoaXMuX2FuaW1hdGVPZmY9ITAsITApKX0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sX21vdXNlRHJhZzpmdW5jdGlvbihlKXt2YXIgdD17eDplLnBhZ2VYLHk6ZS5wYWdlWX0saT10aGlzLl9ub3JtVmFsdWVGcm9tTW91c2UodCk7cmV0dXJuIHRoaXMuX3NsaWRlKGUsdGhpcy5faGFuZGxlSW5kZXgsaSksITF9LF9tb3VzZVN0b3A6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaGFuZGxlcy5yZW1vdmVDbGFzcygidWktc3RhdGUtYWN0aXZlIiksdGhpcy5fbW91c2VTbGlkaW5nPSExLHRoaXMuX3N0b3AoZSx0aGlzLl9oYW5kbGVJbmRleCksdGhpcy5fY2hhbmdlKGUsdGhpcy5faGFuZGxlSW5kZXgpLHRoaXMuX2hhbmRsZUluZGV4PW51bGwsdGhpcy5fY2xpY2tPZmZzZXQ9bnVsbCx0aGlzLl9hbmltYXRlT2ZmPSExLCExfSxfZGV0ZWN0T3JpZW50YXRpb246ZnVuY3Rpb24oKXt0aGlzLm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCI9PT10aGlzLm9wdGlvbnMub3JpZW50YXRpb24/InZlcnRpY2FsIjoiaG9yaXpvbnRhbCJ9LF9ub3JtVmFsdWVGcm9tTW91c2U6ZnVuY3Rpb24oZSl7dmFyIHQsaSxzLG4sYTtyZXR1cm4iaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uPyh0PXRoaXMuZWxlbWVudFNpemUud2lkdGgsaT1lLngtdGhpcy5lbGVtZW50T2Zmc2V0LmxlZnQtKHRoaXMuX2NsaWNrT2Zmc2V0P3RoaXMuX2NsaWNrT2Zmc2V0LmxlZnQ6MCkpOih0PXRoaXMuZWxlbWVudFNpemUuaGVpZ2h0LGk9ZS55LXRoaXMuZWxlbWVudE9mZnNldC50b3AtKHRoaXMuX2NsaWNrT2Zmc2V0P3RoaXMuX2NsaWNrT2Zmc2V0LnRvcDowKSkscz1pL3Qscz4xJiYocz0xKSwwPnMmJihzPTApLCJ2ZXJ0aWNhbCI9PT10aGlzLm9yaWVudGF0aW9uJiYocz0xLXMpLG49dGhpcy5fdmFsdWVNYXgoKS10aGlzLl92YWx1ZU1pbigpLGE9dGhpcy5fdmFsdWVNaW4oKStzKm4sdGhpcy5fdHJpbUFsaWduVmFsdWUoYSl9LF9zdGFydDpmdW5jdGlvbihlLHQpe3ZhciBpPXtoYW5kbGU6dGhpcy5oYW5kbGVzW3RdLHZhbHVlOnRoaXMudmFsdWUoKX07cmV0dXJuIHRoaXMub3B0aW9ucy52YWx1ZXMmJnRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoJiYoaS52YWx1ZT10aGlzLnZhbHVlcyh0KSxpLnZhbHVlcz10aGlzLnZhbHVlcygpKSx0aGlzLl90cmlnZ2VyKCJzdGFydCIsZSxpKX0sX3NsaWRlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgcyxuLGE7dGhpcy5vcHRpb25zLnZhbHVlcyYmdGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGg/KHM9dGhpcy52YWx1ZXModD8wOjEpLDI9PT10aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aCYmdGhpcy5vcHRpb25zLnJhbmdlPT09ITAmJigwPT09dCYmaT5zfHwxPT09dCYmcz5pKSYmKGk9cyksaSE9PXRoaXMudmFsdWVzKHQpJiYobj10aGlzLnZhbHVlcygpLG5bdF09aSxhPXRoaXMuX3RyaWdnZXIoInNsaWRlIixlLHtoYW5kbGU6dGhpcy5oYW5kbGVzW3RdLHZhbHVlOmksdmFsdWVzOm59KSxzPXRoaXMudmFsdWVzKHQ/MDoxKSxhIT09ITEmJnRoaXMudmFsdWVzKHQsaSkpKTppIT09dGhpcy52YWx1ZSgpJiYoYT10aGlzLl90cmlnZ2VyKCJzbGlkZSIsZSx7aGFuZGxlOnRoaXMuaGFuZGxlc1t0XSx2YWx1ZTppfSksYSE9PSExJiZ0aGlzLnZhbHVlKGkpKX0sX3N0b3A6ZnVuY3Rpb24oZSx0KXt2YXIgaT17aGFuZGxlOnRoaXMuaGFuZGxlc1t0XSx2YWx1ZTp0aGlzLnZhbHVlKCl9O3RoaXMub3B0aW9ucy52YWx1ZXMmJnRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoJiYoaS52YWx1ZT10aGlzLnZhbHVlcyh0KSxpLnZhbHVlcz10aGlzLnZhbHVlcygpKSx0aGlzLl90cmlnZ2VyKCJzdG9wIixlLGkpfSxfY2hhbmdlOmZ1bmN0aW9uKGUsdCl7aWYoIXRoaXMuX2tleVNsaWRpbmcmJiF0aGlzLl9tb3VzZVNsaWRpbmcpe3ZhciBpPXtoYW5kbGU6dGhpcy5oYW5kbGVzW3RdLHZhbHVlOnRoaXMudmFsdWUoKX07dGhpcy5vcHRpb25zLnZhbHVlcyYmdGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGgmJihpLnZhbHVlPXRoaXMudmFsdWVzKHQpLGkudmFsdWVzPXRoaXMudmFsdWVzKCkpLHRoaXMuX2xhc3RDaGFuZ2VkVmFsdWU9dCx0aGlzLl90cmlnZ2VyKCJjaGFuZ2UiLGUsaSl9fSx2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odGhpcy5vcHRpb25zLnZhbHVlPXRoaXMuX3RyaW1BbGlnblZhbHVlKGUpLHRoaXMuX3JlZnJlc2hWYWx1ZSgpLHRoaXMuX2NoYW5nZShudWxsLDApLHZvaWQgMCk6dGhpcy5fdmFsdWUoKX0sdmFsdWVzOmZ1bmN0aW9uKHQsaSl7dmFyIHMsbixhO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlyZXR1cm4gdGhpcy5vcHRpb25zLnZhbHVlc1t0XT10aGlzLl90cmltQWxpZ25WYWx1ZShpKSx0aGlzLl9yZWZyZXNoVmFsdWUoKSx0aGlzLl9jaGFuZ2UobnVsbCx0KSx2b2lkIDA7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuX3ZhbHVlcygpO2lmKCFlLmlzQXJyYXkoYXJndW1lbnRzWzBdKSlyZXR1cm4gdGhpcy5vcHRpb25zLnZhbHVlcyYmdGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGg/dGhpcy5fdmFsdWVzKHQpOnRoaXMudmFsdWUoKTtmb3Iocz10aGlzLm9wdGlvbnMudmFsdWVzLG49YXJndW1lbnRzWzBdLGE9MDtzLmxlbmd0aD5hO2ErPTEpc1thXT10aGlzLl90cmltQWxpZ25WYWx1ZShuW2FdKSx0aGlzLl9jaGFuZ2UobnVsbCxhKTt0aGlzLl9yZWZyZXNoVmFsdWUoKX0sX3NldE9wdGlvbjpmdW5jdGlvbih0LGkpe3ZhciBzLG49MDtzd2l0Y2goInJhbmdlIj09PXQmJnRoaXMub3B0aW9ucy5yYW5nZT09PSEwJiYoIm1pbiI9PT1pPyh0aGlzLm9wdGlvbnMudmFsdWU9dGhpcy5fdmFsdWVzKDApLHRoaXMub3B0aW9ucy52YWx1ZXM9bnVsbCk6Im1heCI9PT1pJiYodGhpcy5vcHRpb25zLnZhbHVlPXRoaXMuX3ZhbHVlcyh0aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aC0xKSx0aGlzLm9wdGlvbnMudmFsdWVzPW51bGwpKSxlLmlzQXJyYXkodGhpcy5vcHRpb25zLnZhbHVlcykmJihuPXRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoKSwiZGlzYWJsZWQiPT09dCYmdGhpcy5lbGVtZW50LnRvZ2dsZUNsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIsISFpKSx0aGlzLl9zdXBlcih0LGkpLHQpe2Nhc2Uib3JpZW50YXRpb24iOnRoaXMuX2RldGVjdE9yaWVudGF0aW9uKCksdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zbGlkZXItaG9yaXpvbnRhbCB1aS1zbGlkZXItdmVydGljYWwiKS5hZGRDbGFzcygidWktc2xpZGVyLSIrdGhpcy5vcmllbnRhdGlvbiksdGhpcy5fcmVmcmVzaFZhbHVlKCksdGhpcy5oYW5kbGVzLmNzcygiaG9yaXpvbnRhbCI9PT1pPyJib3R0b20iOiJsZWZ0IiwiIik7YnJlYWs7Y2FzZSJ2YWx1ZSI6dGhpcy5fYW5pbWF0ZU9mZj0hMCx0aGlzLl9yZWZyZXNoVmFsdWUoKSx0aGlzLl9jaGFuZ2UobnVsbCwwKSx0aGlzLl9hbmltYXRlT2ZmPSExO2JyZWFrO2Nhc2UidmFsdWVzIjpmb3IodGhpcy5fYW5pbWF0ZU9mZj0hMCx0aGlzLl9yZWZyZXNoVmFsdWUoKSxzPTA7bj5zO3MrPTEpdGhpcy5fY2hhbmdlKG51bGwscyk7dGhpcy5fYW5pbWF0ZU9mZj0hMTticmVhaztjYXNlInN0ZXAiOmNhc2UibWluIjpjYXNlIm1heCI6dGhpcy5fYW5pbWF0ZU9mZj0hMCx0aGlzLl9jYWxjdWxhdGVOZXdNYXgoKSx0aGlzLl9yZWZyZXNoVmFsdWUoKSx0aGlzLl9hbmltYXRlT2ZmPSExO2JyZWFrO2Nhc2UicmFuZ2UiOnRoaXMuX2FuaW1hdGVPZmY9ITAsdGhpcy5fcmVmcmVzaCgpLHRoaXMuX2FuaW1hdGVPZmY9ITF9fSxfdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnMudmFsdWU7cmV0dXJuIGU9dGhpcy5fdHJpbUFsaWduVmFsdWUoZSl9LF92YWx1ZXM6ZnVuY3Rpb24oZSl7dmFyIHQsaSxzO2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHQ9dGhpcy5vcHRpb25zLnZhbHVlc1tlXSx0PXRoaXMuX3RyaW1BbGlnblZhbHVlKHQpO2lmKHRoaXMub3B0aW9ucy52YWx1ZXMmJnRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoKXtmb3IoaT10aGlzLm9wdGlvbnMudmFsdWVzLnNsaWNlKCkscz0wO2kubGVuZ3RoPnM7cys9MSlpW3NdPXRoaXMuX3RyaW1BbGlnblZhbHVlKGlbc10pO3JldHVybiBpfXJldHVybltdfSxfdHJpbUFsaWduVmFsdWU6ZnVuY3Rpb24oZSl7aWYodGhpcy5fdmFsdWVNaW4oKT49ZSlyZXR1cm4gdGhpcy5fdmFsdWVNaW4oKTtpZihlPj10aGlzLl92YWx1ZU1heCgpKXJldHVybiB0aGlzLl92YWx1ZU1heCgpO3ZhciB0PXRoaXMub3B0aW9ucy5zdGVwPjA/dGhpcy5vcHRpb25zLnN0ZXA6MSxpPShlLXRoaXMuX3ZhbHVlTWluKCkpJXQscz1lLWk7cmV0dXJuIDIqTWF0aC5hYnMoaSk+PXQmJihzKz1pPjA/dDotdCkscGFyc2VGbG9hdChzLnRvRml4ZWQoNSkpfSxfY2FsY3VsYXRlTmV3TWF4OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLm1heCx0PXRoaXMuX3ZhbHVlTWluKCksaT10aGlzLm9wdGlvbnMuc3RlcCxzPU1hdGguZmxvb3IoKyhlLXQpLnRvRml4ZWQodGhpcy5fcHJlY2lzaW9uKCkpL2kpKmk7ZT1zK3QsdGhpcy5tYXg9cGFyc2VGbG9hdChlLnRvRml4ZWQodGhpcy5fcHJlY2lzaW9uKCkpKX0sX3ByZWNpc2lvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3ByZWNpc2lvbk9mKHRoaXMub3B0aW9ucy5zdGVwKTtyZXR1cm4gbnVsbCE9PXRoaXMub3B0aW9ucy5taW4mJihlPU1hdGgubWF4KGUsdGhpcy5fcHJlY2lzaW9uT2YodGhpcy5vcHRpb25zLm1pbikpKSxlfSxfcHJlY2lzaW9uT2Y6ZnVuY3Rpb24oZSl7dmFyIHQ9IiIrZSxpPXQuaW5kZXhPZigiLiIpO3JldHVybi0xPT09aT8wOnQubGVuZ3RoLWktMX0sX3ZhbHVlTWluOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5taW59LF92YWx1ZU1heDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1heH0sX3JlZnJlc2hWYWx1ZTpmdW5jdGlvbigpe3ZhciB0LGkscyxuLGEsbz10aGlzLm9wdGlvbnMucmFuZ2Uscj10aGlzLm9wdGlvbnMsaD10aGlzLGw9dGhpcy5fYW5pbWF0ZU9mZj8hMTpyLmFuaW1hdGUsdT17fTt0aGlzLm9wdGlvbnMudmFsdWVzJiZ0aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aD90aGlzLmhhbmRsZXMuZWFjaChmdW5jdGlvbihzKXtpPTEwMCooKGgudmFsdWVzKHMpLWguX3ZhbHVlTWluKCkpLyhoLl92YWx1ZU1heCgpLWguX3ZhbHVlTWluKCkpKSx1WyJob3Jpem9udGFsIj09PWgub3JpZW50YXRpb24/ImxlZnQiOiJib3R0b20iXT1pKyIlIixlKHRoaXMpLnN0b3AoMSwxKVtsPyJhbmltYXRlIjoiY3NzIl0odSxyLmFuaW1hdGUpLGgub3B0aW9ucy5yYW5nZT09PSEwJiYoImhvcml6b250YWwiPT09aC5vcmllbnRhdGlvbj8oMD09PXMmJmgucmFuZ2Uuc3RvcCgxLDEpW2w/ImFuaW1hdGUiOiJjc3MiXSh7bGVmdDppKyIlIn0sci5hbmltYXRlKSwxPT09cyYmaC5yYW5nZVtsPyJhbmltYXRlIjoiY3NzIl0oe3dpZHRoOmktdCsiJSJ9LHtxdWV1ZTohMSxkdXJhdGlvbjpyLmFuaW1hdGV9KSk6KDA9PT1zJiZoLnJhbmdlLnN0b3AoMSwxKVtsPyJhbmltYXRlIjoiY3NzIl0oe2JvdHRvbTppKyIlIn0sci5hbmltYXRlKSwxPT09cyYmaC5yYW5nZVtsPyJhbmltYXRlIjoiY3NzIl0oe2hlaWdodDppLXQrIiUifSx7cXVldWU6ITEsZHVyYXRpb246ci5hbmltYXRlfSkpKSx0PWl9KToocz10aGlzLnZhbHVlKCksbj10aGlzLl92YWx1ZU1pbigpLGE9dGhpcy5fdmFsdWVNYXgoKSxpPWEhPT1uPzEwMCooKHMtbikvKGEtbikpOjAsdVsiaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uPyJsZWZ0IjoiYm90dG9tIl09aSsiJSIsdGhpcy5oYW5kbGUuc3RvcCgxLDEpW2w/ImFuaW1hdGUiOiJjc3MiXSh1LHIuYW5pbWF0ZSksIm1pbiI9PT1vJiYiaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uJiZ0aGlzLnJhbmdlLnN0b3AoMSwxKVtsPyJhbmltYXRlIjoiY3NzIl0oe3dpZHRoOmkrIiUifSxyLmFuaW1hdGUpLCJtYXgiPT09byYmImhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbiYmdGhpcy5yYW5nZVtsPyJhbmltYXRlIjoiY3NzIl0oe3dpZHRoOjEwMC1pKyIlIn0se3F1ZXVlOiExLGR1cmF0aW9uOnIuYW5pbWF0ZX0pLCJtaW4iPT09byYmInZlcnRpY2FsIj09PXRoaXMub3JpZW50YXRpb24mJnRoaXMucmFuZ2Uuc3RvcCgxLDEpW2w/ImFuaW1hdGUiOiJjc3MiXSh7aGVpZ2h0OmkrIiUifSxyLmFuaW1hdGUpLCJtYXgiPT09byYmInZlcnRpY2FsIj09PXRoaXMub3JpZW50YXRpb24mJnRoaXMucmFuZ2VbbD8iYW5pbWF0ZSI6ImNzcyJdKHtoZWlnaHQ6MTAwLWkrIiUifSx7cXVldWU6ITEsZHVyYXRpb246ci5hbmltYXRlfSkpfSxfaGFuZGxlRXZlbnRzOntrZXlkb3duOmZ1bmN0aW9uKHQpe3ZhciBpLHMsbixhLG89ZSh0LnRhcmdldCkuZGF0YSgidWktc2xpZGVyLWhhbmRsZS1pbmRleCIpO3N3aXRjaCh0LmtleUNvZGUpe2Nhc2UgZS51aS5rZXlDb2RlLkhPTUU6Y2FzZSBlLnVpLmtleUNvZGUuRU5EOmNhc2UgZS51aS5rZXlDb2RlLlBBR0VfVVA6Y2FzZSBlLnVpLmtleUNvZGUuUEFHRV9ET1dOOmNhc2UgZS51aS5rZXlDb2RlLlVQOmNhc2UgZS51aS5rZXlDb2RlLlJJR0hUOmNhc2UgZS51aS5rZXlDb2RlLkRPV046Y2FzZSBlLnVpLmtleUNvZGUuTEVGVDppZih0LnByZXZlbnREZWZhdWx0KCksIXRoaXMuX2tleVNsaWRpbmcmJih0aGlzLl9rZXlTbGlkaW5nPSEwLGUodC50YXJnZXQpLmFkZENsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKSxpPXRoaXMuX3N0YXJ0KHQsbyksaT09PSExKSlyZXR1cm59c3dpdGNoKGE9dGhpcy5vcHRpb25zLnN0ZXAscz1uPXRoaXMub3B0aW9ucy52YWx1ZXMmJnRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoP3RoaXMudmFsdWVzKG8pOnRoaXMudmFsdWUoKSx0LmtleUNvZGUpe2Nhc2UgZS51aS5rZXlDb2RlLkhPTUU6bj10aGlzLl92YWx1ZU1pbigpO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkVORDpuPXRoaXMuX3ZhbHVlTWF4KCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuUEFHRV9VUDpuPXRoaXMuX3RyaW1BbGlnblZhbHVlKHMrKHRoaXMuX3ZhbHVlTWF4KCktdGhpcy5fdmFsdWVNaW4oKSkvdGhpcy5udW1QYWdlcyk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuUEFHRV9ET1dOOm49dGhpcy5fdHJpbUFsaWduVmFsdWUocy0odGhpcy5fdmFsdWVNYXgoKS10aGlzLl92YWx1ZU1pbigpKS90aGlzLm51bVBhZ2VzKTticmVhaztjYXNlIGUudWkua2V5Q29kZS5VUDpjYXNlIGUudWkua2V5Q29kZS5SSUdIVDppZihzPT09dGhpcy5fdmFsdWVNYXgoKSlyZXR1cm47bj10aGlzLl90cmltQWxpZ25WYWx1ZShzK2EpO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkRPV046Y2FzZSBlLnVpLmtleUNvZGUuTEVGVDppZihzPT09dGhpcy5fdmFsdWVNaW4oKSlyZXR1cm47bj10aGlzLl90cmltQWxpZ25WYWx1ZShzLWEpfXRoaXMuX3NsaWRlKHQsbyxuKX0sa2V5dXA6ZnVuY3Rpb24odCl7dmFyIGk9ZSh0LnRhcmdldCkuZGF0YSgidWktc2xpZGVyLWhhbmRsZS1pbmRleCIpO3RoaXMuX2tleVNsaWRpbmcmJih0aGlzLl9rZXlTbGlkaW5nPSExLHRoaXMuX3N0b3AodCxpKSx0aGlzLl9jaGFuZ2UodCxpKSxlKHQudGFyZ2V0KS5yZW1vdmVDbGFzcygidWktc3RhdGUtYWN0aXZlIikpfX19KSxlLndpZGdldCgidWkuc3Bpbm5lciIse3ZlcnNpb246IjEuMTEuNCIsZGVmYXVsdEVsZW1lbnQ6IjxpbnB1dD4iLHdpZGdldEV2ZW50UHJlZml4OiJzcGluIixvcHRpb25zOntjdWx0dXJlOm51bGwsaWNvbnM6e2Rvd246InVpLWljb24tdHJpYW5nbGUtMS1zIix1cDoidWktaWNvbi10cmlhbmdsZS0xLW4ifSxpbmNyZW1lbnRhbDohMCxtYXg6bnVsbCxtaW46bnVsbCxudW1iZXJGb3JtYXQ6bnVsbCxwYWdlOjEwLHN0ZXA6MSxjaGFuZ2U6bnVsbCxzcGluOm51bGwsc3RhcnQ6bnVsbCxzdG9wOm51bGx9LF9jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLl9zZXRPcHRpb24oIm1heCIsdGhpcy5vcHRpb25zLm1heCksdGhpcy5fc2V0T3B0aW9uKCJtaW4iLHRoaXMub3B0aW9ucy5taW4pLHRoaXMuX3NldE9wdGlvbigic3RlcCIsdGhpcy5vcHRpb25zLnN0ZXApLCIiIT09dGhpcy52YWx1ZSgpJiZ0aGlzLl92YWx1ZSh0aGlzLmVsZW1lbnQudmFsKCksITApLHRoaXMuX2RyYXcoKSx0aGlzLl9vbih0aGlzLl9ldmVudHMpLHRoaXMuX3JlZnJlc2goKSx0aGlzLl9vbih0aGlzLndpbmRvdyx7YmVmb3JldW5sb2FkOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUF0dHIoImF1dG9jb21wbGV0ZSIpfX0pfSxfZ2V0Q3JlYXRlT3B0aW9uczpmdW5jdGlvbigpe3ZhciB0PXt9LGk9dGhpcy5lbGVtZW50O3JldHVybiBlLmVhY2goWyJtaW4iLCJtYXgiLCJzdGVwIl0sZnVuY3Rpb24oZSxzKXt2YXIgbj1pLmF0dHIocyk7dm9pZCAwIT09biYmbi5sZW5ndGgmJih0W3NdPW4pfSksdH0sX2V2ZW50czp7a2V5ZG93bjpmdW5jdGlvbihlKXt0aGlzLl9zdGFydChlKSYmdGhpcy5fa2V5ZG93bihlKSYmZS5wcmV2ZW50RGVmYXVsdCgpfSxrZXl1cDoiX3N0b3AiLGZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5wcmV2aW91cz10aGlzLmVsZW1lbnQudmFsKCl9LGJsdXI6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY2FuY2VsQmx1cj8oZGVsZXRlIHRoaXMuY2FuY2VsQmx1cix2b2lkIDApOih0aGlzLl9zdG9wKCksdGhpcy5fcmVmcmVzaCgpLHRoaXMucHJldmlvdXMhPT10aGlzLmVsZW1lbnQudmFsKCkmJnRoaXMuX3RyaWdnZXIoImNoYW5nZSIsZSksdm9pZCAwKX0sbW91c2V3aGVlbDpmdW5jdGlvbihlLHQpe2lmKHQpe2lmKCF0aGlzLnNwaW5uaW5nJiYhdGhpcy5fc3RhcnQoZSkpcmV0dXJuITE7dGhpcy5fc3BpbigodD4wPzE6LTEpKnRoaXMub3B0aW9ucy5zdGVwLGUpLGNsZWFyVGltZW91dCh0aGlzLm1vdXNld2hlZWxUaW1lciksdGhpcy5tb3VzZXdoZWVsVGltZXI9dGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt0aGlzLnNwaW5uaW5nJiZ0aGlzLl9zdG9wKGUpfSwxMDApLGUucHJldmVudERlZmF1bHQoKX19LCJtb3VzZWRvd24gLnVpLXNwaW5uZXItYnV0dG9uIjpmdW5jdGlvbih0KXtmdW5jdGlvbiBpKCl7dmFyIGU9dGhpcy5lbGVtZW50WzBdPT09dGhpcy5kb2N1bWVudFswXS5hY3RpdmVFbGVtZW50O2V8fCh0aGlzLmVsZW1lbnQuZm9jdXMoKSx0aGlzLnByZXZpb3VzPXMsdGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt0aGlzLnByZXZpb3VzPXN9KSl9dmFyIHM7cz10aGlzLmVsZW1lbnRbMF09PT10aGlzLmRvY3VtZW50WzBdLmFjdGl2ZUVsZW1lbnQ/dGhpcy5wcmV2aW91czp0aGlzLmVsZW1lbnQudmFsKCksdC5wcmV2ZW50RGVmYXVsdCgpLGkuY2FsbCh0aGlzKSx0aGlzLmNhbmNlbEJsdXI9ITAsdGhpcy5fZGVsYXkoZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5jYW5jZWxCbHVyLGkuY2FsbCh0aGlzKX0pLHRoaXMuX3N0YXJ0KHQpIT09ITEmJnRoaXMuX3JlcGVhdChudWxsLGUodC5jdXJyZW50VGFyZ2V0KS5oYXNDbGFzcygidWktc3Bpbm5lci11cCIpPzE6LTEsdCl9LCJtb3VzZXVwIC51aS1zcGlubmVyLWJ1dHRvbiI6Il9zdG9wIiwibW91c2VlbnRlciAudWktc3Bpbm5lci1idXR0b24iOmZ1bmN0aW9uKHQpe3JldHVybiBlKHQuY3VycmVudFRhcmdldCkuaGFzQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpP3RoaXMuX3N0YXJ0KHQpPT09ITE/ITE6KHRoaXMuX3JlcGVhdChudWxsLGUodC5jdXJyZW50VGFyZ2V0KS5oYXNDbGFzcygidWktc3Bpbm5lci11cCIpPzE6LTEsdCksdm9pZCAwKTp2b2lkIDB9LCJtb3VzZWxlYXZlIC51aS1zcGlubmVyLWJ1dHRvbiI6Il9zdG9wIn0sX2RyYXc6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnVpU3Bpbm5lcj10aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXNwaW5uZXItaW5wdXQiKS5hdHRyKCJhdXRvY29tcGxldGUiLCJvZmYiKS53cmFwKHRoaXMuX3VpU3Bpbm5lckh0bWwoKSkucGFyZW50KCkuYXBwZW5kKHRoaXMuX2J1dHRvbkh0bWwoKSk7dGhpcy5lbGVtZW50LmF0dHIoInJvbGUiLCJzcGluYnV0dG9uIiksdGhpcy5idXR0b25zPWUuZmluZCgiLnVpLXNwaW5uZXItYnV0dG9uIikuYXR0cigidGFiSW5kZXgiLC0xKS5idXR0b24oKS5yZW1vdmVDbGFzcygidWktY29ybmVyLWFsbCIpLHRoaXMuYnV0dG9ucy5oZWlnaHQoKT5NYXRoLmNlaWwoLjUqZS5oZWlnaHQoKSkmJmUuaGVpZ2h0KCk+MCYmZS5oZWlnaHQoZS5oZWlnaHQoKSksdGhpcy5vcHRpb25zLmRpc2FibGVkJiZ0aGlzLmRpc2FibGUoKX0sX2tleWRvd246ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5vcHRpb25zLHM9ZS51aS5rZXlDb2RlO3N3aXRjaCh0LmtleUNvZGUpe2Nhc2Ugcy5VUDpyZXR1cm4gdGhpcy5fcmVwZWF0KG51bGwsMSx0KSwhMDtjYXNlIHMuRE9XTjpyZXR1cm4gdGhpcy5fcmVwZWF0KG51bGwsLTEsdCksITA7Y2FzZSBzLlBBR0VfVVA6cmV0dXJuIHRoaXMuX3JlcGVhdChudWxsLGkucGFnZSx0KSwhMDtjYXNlIHMuUEFHRV9ET1dOOnJldHVybiB0aGlzLl9yZXBlYXQobnVsbCwtaS5wYWdlLHQpLCEwfXJldHVybiExfSxfdWlTcGlubmVySHRtbDpmdW5jdGlvbigpe3JldHVybiI8c3BhbiBjbGFzcz0ndWktc3Bpbm5lciB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCc+PC9zcGFuPiJ9LF9idXR0b25IdG1sOmZ1bmN0aW9uKCl7cmV0dXJuIjxhIGNsYXNzPSd1aS1zcGlubmVyLWJ1dHRvbiB1aS1zcGlubmVyLXVwIHVpLWNvcm5lci10cic+PHNwYW4gY2xhc3M9J3VpLWljb24gIit0aGlzLm9wdGlvbnMuaWNvbnMudXArIic+JiM5NjUwOzwvc3Bhbj4iKyI8L2E+IisiPGEgY2xhc3M9J3VpLXNwaW5uZXItYnV0dG9uIHVpLXNwaW5uZXItZG93biB1aS1jb3JuZXItYnInPiIrIjxzcGFuIGNsYXNzPSd1aS1pY29uICIrdGhpcy5vcHRpb25zLmljb25zLmRvd24rIic+JiM5NjYwOzwvc3Bhbj4iKyI8L2E+In0sX3N0YXJ0OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNwaW5uaW5nfHx0aGlzLl90cmlnZ2VyKCJzdGFydCIsZSkhPT0hMT8odGhpcy5jb3VudGVyfHwodGhpcy5jb3VudGVyPTEpLHRoaXMuc3Bpbm5pbmc9ITAsITApOiExfSxfcmVwZWF0OmZ1bmN0aW9uKGUsdCxpKXtlPWV8fDUwMCxjbGVhclRpbWVvdXQodGhpcy50aW1lciksdGhpcy50aW1lcj10aGlzLl9kZWxheShmdW5jdGlvbigpe3RoaXMuX3JlcGVhdCg0MCx0LGkpfSxlKSx0aGlzLl9zcGluKHQqdGhpcy5vcHRpb25zLnN0ZXAsaSl9LF9zcGluOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy52YWx1ZSgpfHwwO3RoaXMuY291bnRlcnx8KHRoaXMuY291bnRlcj0xKSxpPXRoaXMuX2FkanVzdFZhbHVlKGkrZSp0aGlzLl9pbmNyZW1lbnQodGhpcy5jb3VudGVyKSksdGhpcy5zcGlubmluZyYmdGhpcy5fdHJpZ2dlcigic3BpbiIsdCx7dmFsdWU6aX0pPT09ITF8fCh0aGlzLl92YWx1ZShpKSx0aGlzLmNvdW50ZXIrKyl9LF9pbmNyZW1lbnQ6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5vcHRpb25zLmluY3JlbWVudGFsO3JldHVybiBpP2UuaXNGdW5jdGlvbihpKT9pKHQpOk1hdGguZmxvb3IodCp0KnQvNWU0LXQqdC81MDArMTcqdC8yMDArMSk6MX0sX3ByZWNpc2lvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3ByZWNpc2lvbk9mKHRoaXMub3B0aW9ucy5zdGVwKTtyZXR1cm4gbnVsbCE9PXRoaXMub3B0aW9ucy5taW4mJihlPU1hdGgubWF4KGUsdGhpcy5fcHJlY2lzaW9uT2YodGhpcy5vcHRpb25zLm1pbikpKSxlfSxfcHJlY2lzaW9uT2Y6ZnVuY3Rpb24oZSl7dmFyIHQ9IiIrZSxpPXQuaW5kZXhPZigiLiIpO3JldHVybi0xPT09aT8wOnQubGVuZ3RoLWktMX0sX2FkanVzdFZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LGkscz10aGlzLm9wdGlvbnM7cmV0dXJuIHQ9bnVsbCE9PXMubWluP3MubWluOjAsaT1lLXQsaT1NYXRoLnJvdW5kKGkvcy5zdGVwKSpzLnN0ZXAsZT10K2ksZT1wYXJzZUZsb2F0KGUudG9GaXhlZCh0aGlzLl9wcmVjaXNpb24oKSkpLG51bGwhPT1zLm1heCYmZT5zLm1heD9zLm1heDpudWxsIT09cy5taW4mJnMubWluPmU/cy5taW46ZX0sX3N0b3A6ZnVuY3Rpb24oZSl7dGhpcy5zcGlubmluZyYmKGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKSxjbGVhclRpbWVvdXQodGhpcy5tb3VzZXdoZWVsVGltZXIpLHRoaXMuY291bnRlcj0wLHRoaXMuc3Bpbm5pbmc9ITEsdGhpcy5fdHJpZ2dlcigic3RvcCIsZSkpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7aWYoImN1bHR1cmUiPT09ZXx8Im51bWJlckZvcm1hdCI9PT1lKXt2YXIgaT10aGlzLl9wYXJzZSh0aGlzLmVsZW1lbnQudmFsKCkpO3JldHVybiB0aGlzLm9wdGlvbnNbZV09dCx0aGlzLmVsZW1lbnQudmFsKHRoaXMuX2Zvcm1hdChpKSksdm9pZCAwfSgibWF4Ij09PWV8fCJtaW4iPT09ZXx8InN0ZXAiPT09ZSkmJiJzdHJpbmciPT10eXBlb2YgdCYmKHQ9dGhpcy5fcGFyc2UodCkpLCJpY29ucyI9PT1lJiYodGhpcy5idXR0b25zLmZpcnN0KCkuZmluZCgiLnVpLWljb24iKS5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuaWNvbnMudXApLmFkZENsYXNzKHQudXApLHRoaXMuYnV0dG9ucy5sYXN0KCkuZmluZCgiLnVpLWljb24iKS5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuaWNvbnMuZG93bikuYWRkQ2xhc3ModC5kb3duKSksdGhpcy5fc3VwZXIoZSx0KSwiZGlzYWJsZWQiPT09ZSYmKHRoaXMud2lkZ2V0KCkudG9nZ2xlQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIiwhIXQpLHRoaXMuZWxlbWVudC5wcm9wKCJkaXNhYmxlZCIsISF0KSx0aGlzLmJ1dHRvbnMuYnV0dG9uKHQ/ImRpc2FibGUiOiJlbmFibGUiKSl9LF9zZXRPcHRpb25zOnMoZnVuY3Rpb24oZSl7dGhpcy5fc3VwZXIoZSl9KSxfcGFyc2U6ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlJiYiIiE9PWUmJihlPXdpbmRvdy5HbG9iYWxpemUmJnRoaXMub3B0aW9ucy5udW1iZXJGb3JtYXQ/R2xvYmFsaXplLnBhcnNlRmxvYXQoZSwxMCx0aGlzLm9wdGlvbnMuY3VsdHVyZSk6K2UpLCIiPT09ZXx8aXNOYU4oZSk/bnVsbDplCn0sX2Zvcm1hdDpmdW5jdGlvbihlKXtyZXR1cm4iIj09PWU/IiI6d2luZG93Lkdsb2JhbGl6ZSYmdGhpcy5vcHRpb25zLm51bWJlckZvcm1hdD9HbG9iYWxpemUuZm9ybWF0KGUsdGhpcy5vcHRpb25zLm51bWJlckZvcm1hdCx0aGlzLm9wdGlvbnMuY3VsdHVyZSk6ZX0sX3JlZnJlc2g6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuYXR0cih7ImFyaWEtdmFsdWVtaW4iOnRoaXMub3B0aW9ucy5taW4sImFyaWEtdmFsdWVtYXgiOnRoaXMub3B0aW9ucy5tYXgsImFyaWEtdmFsdWVub3ciOnRoaXMuX3BhcnNlKHRoaXMuZWxlbWVudC52YWwoKSl9KX0saXNWYWxpZDpmdW5jdGlvbigpe3ZhciBlPXRoaXMudmFsdWUoKTtyZXR1cm4gbnVsbD09PWU/ITE6ZT09PXRoaXMuX2FkanVzdFZhbHVlKGUpfSxfdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaTsiIiE9PWUmJihpPXRoaXMuX3BhcnNlKGUpLG51bGwhPT1pJiYodHx8KGk9dGhpcy5fYWRqdXN0VmFsdWUoaSkpLGU9dGhpcy5fZm9ybWF0KGkpKSksdGhpcy5lbGVtZW50LnZhbChlKSx0aGlzLl9yZWZyZXNoKCl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zcGlubmVyLWlucHV0IikucHJvcCgiZGlzYWJsZWQiLCExKS5yZW1vdmVBdHRyKCJhdXRvY29tcGxldGUiKS5yZW1vdmVBdHRyKCJyb2xlIikucmVtb3ZlQXR0cigiYXJpYS12YWx1ZW1pbiIpLnJlbW92ZUF0dHIoImFyaWEtdmFsdWVtYXgiKS5yZW1vdmVBdHRyKCJhcmlhLXZhbHVlbm93IiksdGhpcy51aVNwaW5uZXIucmVwbGFjZVdpdGgodGhpcy5lbGVtZW50KX0sc3RlcFVwOnMoZnVuY3Rpb24oZSl7dGhpcy5fc3RlcFVwKGUpfSksX3N0ZXBVcDpmdW5jdGlvbihlKXt0aGlzLl9zdGFydCgpJiYodGhpcy5fc3BpbigoZXx8MSkqdGhpcy5vcHRpb25zLnN0ZXApLHRoaXMuX3N0b3AoKSl9LHN0ZXBEb3duOnMoZnVuY3Rpb24oZSl7dGhpcy5fc3RlcERvd24oZSl9KSxfc3RlcERvd246ZnVuY3Rpb24oZSl7dGhpcy5fc3RhcnQoKSYmKHRoaXMuX3NwaW4oKGV8fDEpKi10aGlzLm9wdGlvbnMuc3RlcCksdGhpcy5fc3RvcCgpKX0scGFnZVVwOnMoZnVuY3Rpb24oZSl7dGhpcy5fc3RlcFVwKChlfHwxKSp0aGlzLm9wdGlvbnMucGFnZSl9KSxwYWdlRG93bjpzKGZ1bmN0aW9uKGUpe3RoaXMuX3N0ZXBEb3duKChlfHwxKSp0aGlzLm9wdGlvbnMucGFnZSl9KSx2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocyh0aGlzLl92YWx1ZSkuY2FsbCh0aGlzLGUpLHZvaWQgMCk6dGhpcy5fcGFyc2UodGhpcy5lbGVtZW50LnZhbCgpKX0sd2lkZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudWlTcGlubmVyfX0pLGUud2lkZ2V0KCJ1aS50YWJzIix7dmVyc2lvbjoiMS4xMS40IixkZWxheTozMDAsb3B0aW9uczp7YWN0aXZlOm51bGwsY29sbGFwc2libGU6ITEsZXZlbnQ6ImNsaWNrIixoZWlnaHRTdHlsZToiY29udGVudCIsaGlkZTpudWxsLHNob3c6bnVsbCxhY3RpdmF0ZTpudWxsLGJlZm9yZUFjdGl2YXRlOm51bGwsYmVmb3JlTG9hZDpudWxsLGxvYWQ6bnVsbH0sX2lzTG9jYWw6ZnVuY3Rpb24oKXt2YXIgZT0vIy4qJC87cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBpLHM7dD10LmNsb25lTm9kZSghMSksaT10LmhyZWYucmVwbGFjZShlLCIiKSxzPWxvY2F0aW9uLmhyZWYucmVwbGFjZShlLCIiKTt0cnl7aT1kZWNvZGVVUklDb21wb25lbnQoaSl9Y2F0Y2gobil7fXRyeXtzPWRlY29kZVVSSUNvbXBvbmVudChzKX1jYXRjaChuKXt9cmV0dXJuIHQuaGFzaC5sZW5ndGg+MSYmaT09PXN9fSgpLF9jcmVhdGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGk9dGhpcy5vcHRpb25zO3RoaXMucnVubmluZz0hMSx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXRhYnMgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiKS50b2dnbGVDbGFzcygidWktdGFicy1jb2xsYXBzaWJsZSIsaS5jb2xsYXBzaWJsZSksdGhpcy5fcHJvY2Vzc1RhYnMoKSxpLmFjdGl2ZT10aGlzLl9pbml0aWFsQWN0aXZlKCksZS5pc0FycmF5KGkuZGlzYWJsZWQpJiYoaS5kaXNhYmxlZD1lLnVuaXF1ZShpLmRpc2FibGVkLmNvbmNhdChlLm1hcCh0aGlzLnRhYnMuZmlsdGVyKCIudWktc3RhdGUtZGlzYWJsZWQiKSxmdW5jdGlvbihlKXtyZXR1cm4gdC50YWJzLmluZGV4KGUpfSkpKS5zb3J0KCkpLHRoaXMuYWN0aXZlPXRoaXMub3B0aW9ucy5hY3RpdmUhPT0hMSYmdGhpcy5hbmNob3JzLmxlbmd0aD90aGlzLl9maW5kQWN0aXZlKGkuYWN0aXZlKTplKCksdGhpcy5fcmVmcmVzaCgpLHRoaXMuYWN0aXZlLmxlbmd0aCYmdGhpcy5sb2FkKGkuYWN0aXZlKX0sX2luaXRpYWxBY3RpdmU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMuYWN0aXZlLGk9dGhpcy5vcHRpb25zLmNvbGxhcHNpYmxlLHM9bG9jYXRpb24uaGFzaC5zdWJzdHJpbmcoMSk7cmV0dXJuIG51bGw9PT10JiYocyYmdGhpcy50YWJzLmVhY2goZnVuY3Rpb24oaSxuKXtyZXR1cm4gZShuKS5hdHRyKCJhcmlhLWNvbnRyb2xzIik9PT1zPyh0PWksITEpOnZvaWQgMH0pLG51bGw9PT10JiYodD10aGlzLnRhYnMuaW5kZXgodGhpcy50YWJzLmZpbHRlcigiLnVpLXRhYnMtYWN0aXZlIikpKSwobnVsbD09PXR8fC0xPT09dCkmJih0PXRoaXMudGFicy5sZW5ndGg/MDohMSkpLHQhPT0hMSYmKHQ9dGhpcy50YWJzLmluZGV4KHRoaXMudGFicy5lcSh0KSksLTE9PT10JiYodD1pPyExOjApKSwhaSYmdD09PSExJiZ0aGlzLmFuY2hvcnMubGVuZ3RoJiYodD0wKSx0fSxfZ2V0Q3JlYXRlRXZlbnREYXRhOmZ1bmN0aW9uKCl7cmV0dXJue3RhYjp0aGlzLmFjdGl2ZSxwYW5lbDp0aGlzLmFjdGl2ZS5sZW5ndGg/dGhpcy5fZ2V0UGFuZWxGb3JUYWIodGhpcy5hY3RpdmUpOmUoKX19LF90YWJLZXlkb3duOmZ1bmN0aW9uKHQpe3ZhciBpPWUodGhpcy5kb2N1bWVudFswXS5hY3RpdmVFbGVtZW50KS5jbG9zZXN0KCJsaSIpLHM9dGhpcy50YWJzLmluZGV4KGkpLG49ITA7aWYoIXRoaXMuX2hhbmRsZVBhZ2VOYXYodCkpe3N3aXRjaCh0LmtleUNvZGUpe2Nhc2UgZS51aS5rZXlDb2RlLlJJR0hUOmNhc2UgZS51aS5rZXlDb2RlLkRPV046cysrO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLlVQOmNhc2UgZS51aS5rZXlDb2RlLkxFRlQ6bj0hMSxzLS07YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuRU5EOnM9dGhpcy5hbmNob3JzLmxlbmd0aC0xO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkhPTUU6cz0wO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLlNQQUNFOnJldHVybiB0LnByZXZlbnREZWZhdWx0KCksY2xlYXJUaW1lb3V0KHRoaXMuYWN0aXZhdGluZyksdGhpcy5fYWN0aXZhdGUocyksdm9pZCAwO2Nhc2UgZS51aS5rZXlDb2RlLkVOVEVSOnJldHVybiB0LnByZXZlbnREZWZhdWx0KCksY2xlYXJUaW1lb3V0KHRoaXMuYWN0aXZhdGluZyksdGhpcy5fYWN0aXZhdGUocz09PXRoaXMub3B0aW9ucy5hY3RpdmU/ITE6cyksdm9pZCAwO2RlZmF1bHQ6cmV0dXJufXQucHJldmVudERlZmF1bHQoKSxjbGVhclRpbWVvdXQodGhpcy5hY3RpdmF0aW5nKSxzPXRoaXMuX2ZvY3VzTmV4dFRhYihzLG4pLHQuY3RybEtleXx8dC5tZXRhS2V5fHwoaS5hdHRyKCJhcmlhLXNlbGVjdGVkIiwiZmFsc2UiKSx0aGlzLnRhYnMuZXEocykuYXR0cigiYXJpYS1zZWxlY3RlZCIsInRydWUiKSx0aGlzLmFjdGl2YXRpbmc9dGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt0aGlzLm9wdGlvbigiYWN0aXZlIixzKX0sdGhpcy5kZWxheSkpfX0sX3BhbmVsS2V5ZG93bjpmdW5jdGlvbih0KXt0aGlzLl9oYW5kbGVQYWdlTmF2KHQpfHx0LmN0cmxLZXkmJnQua2V5Q29kZT09PWUudWkua2V5Q29kZS5VUCYmKHQucHJldmVudERlZmF1bHQoKSx0aGlzLmFjdGl2ZS5mb2N1cygpKX0sX2hhbmRsZVBhZ2VOYXY6ZnVuY3Rpb24odCl7cmV0dXJuIHQuYWx0S2V5JiZ0LmtleUNvZGU9PT1lLnVpLmtleUNvZGUuUEFHRV9VUD8odGhpcy5fYWN0aXZhdGUodGhpcy5fZm9jdXNOZXh0VGFiKHRoaXMub3B0aW9ucy5hY3RpdmUtMSwhMSkpLCEwKTp0LmFsdEtleSYmdC5rZXlDb2RlPT09ZS51aS5rZXlDb2RlLlBBR0VfRE9XTj8odGhpcy5fYWN0aXZhdGUodGhpcy5fZm9jdXNOZXh0VGFiKHRoaXMub3B0aW9ucy5hY3RpdmUrMSwhMCkpLCEwKTp2b2lkIDB9LF9maW5kTmV4dFRhYjpmdW5jdGlvbih0LGkpe2Z1bmN0aW9uIHMoKXtyZXR1cm4gdD5uJiYodD0wKSwwPnQmJih0PW4pLHR9Zm9yKHZhciBuPXRoaXMudGFicy5sZW5ndGgtMTstMSE9PWUuaW5BcnJheShzKCksdGhpcy5vcHRpb25zLmRpc2FibGVkKTspdD1pP3QrMTp0LTE7cmV0dXJuIHR9LF9mb2N1c05leHRUYWI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT10aGlzLl9maW5kTmV4dFRhYihlLHQpLHRoaXMudGFicy5lcShlKS5mb2N1cygpLGV9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXtyZXR1cm4iYWN0aXZlIj09PWU/KHRoaXMuX2FjdGl2YXRlKHQpLHZvaWQgMCk6ImRpc2FibGVkIj09PWU/KHRoaXMuX3NldHVwRGlzYWJsZWQodCksdm9pZCAwKToodGhpcy5fc3VwZXIoZSx0KSwiY29sbGFwc2libGUiPT09ZSYmKHRoaXMuZWxlbWVudC50b2dnbGVDbGFzcygidWktdGFicy1jb2xsYXBzaWJsZSIsdCksdHx8dGhpcy5vcHRpb25zLmFjdGl2ZSE9PSExfHx0aGlzLl9hY3RpdmF0ZSgwKSksImV2ZW50Ij09PWUmJnRoaXMuX3NldHVwRXZlbnRzKHQpLCJoZWlnaHRTdHlsZSI9PT1lJiZ0aGlzLl9zZXR1cEhlaWdodFN0eWxlKHQpLHZvaWQgMCl9LF9zYW5pdGl6ZVNlbGVjdG9yOmZ1bmN0aW9uKGUpe3JldHVybiBlP2UucmVwbGFjZSgvWyEiJCUmJygpKissLlwvOjs8PT4/QFxbXF1cXmB7fH1+XS9nLCJcXCQmIik6IiJ9LHJlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMsaT10aGlzLnRhYmxpc3QuY2hpbGRyZW4oIjpoYXMoYVtocmVmXSkiKTt0LmRpc2FibGVkPWUubWFwKGkuZmlsdGVyKCIudWktc3RhdGUtZGlzYWJsZWQiKSxmdW5jdGlvbihlKXtyZXR1cm4gaS5pbmRleChlKX0pLHRoaXMuX3Byb2Nlc3NUYWJzKCksdC5hY3RpdmUhPT0hMSYmdGhpcy5hbmNob3JzLmxlbmd0aD90aGlzLmFjdGl2ZS5sZW5ndGgmJiFlLmNvbnRhaW5zKHRoaXMudGFibGlzdFswXSx0aGlzLmFjdGl2ZVswXSk/dGhpcy50YWJzLmxlbmd0aD09PXQuZGlzYWJsZWQubGVuZ3RoPyh0LmFjdGl2ZT0hMSx0aGlzLmFjdGl2ZT1lKCkpOnRoaXMuX2FjdGl2YXRlKHRoaXMuX2ZpbmROZXh0VGFiKE1hdGgubWF4KDAsdC5hY3RpdmUtMSksITEpKTp0LmFjdGl2ZT10aGlzLnRhYnMuaW5kZXgodGhpcy5hY3RpdmUpOih0LmFjdGl2ZT0hMSx0aGlzLmFjdGl2ZT1lKCkpLHRoaXMuX3JlZnJlc2goKX0sX3JlZnJlc2g6ZnVuY3Rpb24oKXt0aGlzLl9zZXR1cERpc2FibGVkKHRoaXMub3B0aW9ucy5kaXNhYmxlZCksdGhpcy5fc2V0dXBFdmVudHModGhpcy5vcHRpb25zLmV2ZW50KSx0aGlzLl9zZXR1cEhlaWdodFN0eWxlKHRoaXMub3B0aW9ucy5oZWlnaHRTdHlsZSksdGhpcy50YWJzLm5vdCh0aGlzLmFjdGl2ZSkuYXR0cih7ImFyaWEtc2VsZWN0ZWQiOiJmYWxzZSIsImFyaWEtZXhwYW5kZWQiOiJmYWxzZSIsdGFiSW5kZXg6LTF9KSx0aGlzLnBhbmVscy5ub3QodGhpcy5fZ2V0UGFuZWxGb3JUYWIodGhpcy5hY3RpdmUpKS5oaWRlKCkuYXR0cih7ImFyaWEtaGlkZGVuIjoidHJ1ZSJ9KSx0aGlzLmFjdGl2ZS5sZW5ndGg/KHRoaXMuYWN0aXZlLmFkZENsYXNzKCJ1aS10YWJzLWFjdGl2ZSB1aS1zdGF0ZS1hY3RpdmUiKS5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6InRydWUiLCJhcmlhLWV4cGFuZGVkIjoidHJ1ZSIsdGFiSW5kZXg6MH0pLHRoaXMuX2dldFBhbmVsRm9yVGFiKHRoaXMuYWN0aXZlKS5zaG93KCkuYXR0cih7ImFyaWEtaGlkZGVuIjoiZmFsc2UifSkpOnRoaXMudGFicy5lcSgwKS5hdHRyKCJ0YWJJbmRleCIsMCl9LF9wcm9jZXNzVGFiczpmdW5jdGlvbigpe3ZhciB0PXRoaXMsaT10aGlzLnRhYnMscz10aGlzLmFuY2hvcnMsbj10aGlzLnBhbmVsczt0aGlzLnRhYmxpc3Q9dGhpcy5fZ2V0TGlzdCgpLmFkZENsYXNzKCJ1aS10YWJzLW5hdiB1aS1oZWxwZXItcmVzZXQgdWktaGVscGVyLWNsZWFyZml4IHVpLXdpZGdldC1oZWFkZXIgdWktY29ybmVyLWFsbCIpLmF0dHIoInJvbGUiLCJ0YWJsaXN0IikuZGVsZWdhdGUoIj4gbGkiLCJtb3VzZWRvd24iK3RoaXMuZXZlbnROYW1lc3BhY2UsZnVuY3Rpb24odCl7ZSh0aGlzKS5pcygiLnVpLXN0YXRlLWRpc2FibGVkIikmJnQucHJldmVudERlZmF1bHQoKX0pLmRlbGVnYXRlKCIudWktdGFicy1hbmNob3IiLCJmb2N1cyIrdGhpcy5ldmVudE5hbWVzcGFjZSxmdW5jdGlvbigpe2UodGhpcykuY2xvc2VzdCgibGkiKS5pcygiLnVpLXN0YXRlLWRpc2FibGVkIikmJnRoaXMuYmx1cigpfSksdGhpcy50YWJzPXRoaXMudGFibGlzdC5maW5kKCI+IGxpOmhhcyhhW2hyZWZdKSIpLmFkZENsYXNzKCJ1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci10b3AiKS5hdHRyKHtyb2xlOiJ0YWIiLHRhYkluZGV4Oi0xfSksdGhpcy5hbmNob3JzPXRoaXMudGFicy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gZSgiYSIsdGhpcylbMF19KS5hZGRDbGFzcygidWktdGFicy1hbmNob3IiKS5hdHRyKHtyb2xlOiJwcmVzZW50YXRpb24iLHRhYkluZGV4Oi0xfSksdGhpcy5wYW5lbHM9ZSgpLHRoaXMuYW5jaG9ycy5lYWNoKGZ1bmN0aW9uKGkscyl7dmFyIG4sYSxvLHI9ZShzKS51bmlxdWVJZCgpLmF0dHIoImlkIiksaD1lKHMpLmNsb3Nlc3QoImxpIiksbD1oLmF0dHIoImFyaWEtY29udHJvbHMiKTt0Ll9pc0xvY2FsKHMpPyhuPXMuaGFzaCxvPW4uc3Vic3RyaW5nKDEpLGE9dC5lbGVtZW50LmZpbmQodC5fc2FuaXRpemVTZWxlY3RvcihuKSkpOihvPWguYXR0cigiYXJpYS1jb250cm9scyIpfHxlKHt9KS51bmlxdWVJZCgpWzBdLmlkLG49IiMiK28sYT10LmVsZW1lbnQuZmluZChuKSxhLmxlbmd0aHx8KGE9dC5fY3JlYXRlUGFuZWwobyksYS5pbnNlcnRBZnRlcih0LnBhbmVsc1tpLTFdfHx0LnRhYmxpc3QpKSxhLmF0dHIoImFyaWEtbGl2ZSIsInBvbGl0ZSIpKSxhLmxlbmd0aCYmKHQucGFuZWxzPXQucGFuZWxzLmFkZChhKSksbCYmaC5kYXRhKCJ1aS10YWJzLWFyaWEtY29udHJvbHMiLGwpLGguYXR0cih7ImFyaWEtY29udHJvbHMiOm8sImFyaWEtbGFiZWxsZWRieSI6cn0pLGEuYXR0cigiYXJpYS1sYWJlbGxlZGJ5IixyKX0pLHRoaXMucGFuZWxzLmFkZENsYXNzKCJ1aS10YWJzLXBhbmVsIHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1ib3R0b20iKS5hdHRyKCJyb2xlIiwidGFicGFuZWwiKSxpJiYodGhpcy5fb2ZmKGkubm90KHRoaXMudGFicykpLHRoaXMuX29mZihzLm5vdCh0aGlzLmFuY2hvcnMpKSx0aGlzLl9vZmYobi5ub3QodGhpcy5wYW5lbHMpKSl9LF9nZXRMaXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGFibGlzdHx8dGhpcy5lbGVtZW50LmZpbmQoIm9sLHVsIikuZXEoMCl9LF9jcmVhdGVQYW5lbDpmdW5jdGlvbih0KXtyZXR1cm4gZSgiPGRpdj4iKS5hdHRyKCJpZCIsdCkuYWRkQ2xhc3MoInVpLXRhYnMtcGFuZWwgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWJvdHRvbSIpLmRhdGEoInVpLXRhYnMtZGVzdHJveSIsITApfSxfc2V0dXBEaXNhYmxlZDpmdW5jdGlvbih0KXtlLmlzQXJyYXkodCkmJih0Lmxlbmd0aD90Lmxlbmd0aD09PXRoaXMuYW5jaG9ycy5sZW5ndGgmJih0PSEwKTp0PSExKTtmb3IodmFyIGkscz0wO2k9dGhpcy50YWJzW3NdO3MrKyl0PT09ITB8fC0xIT09ZS5pbkFycmF5KHMsdCk/ZShpKS5hZGRDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiKS5hdHRyKCJhcmlhLWRpc2FibGVkIiwidHJ1ZSIpOmUoaSkucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIikucmVtb3ZlQXR0cigiYXJpYS1kaXNhYmxlZCIpO3RoaXMub3B0aW9ucy5kaXNhYmxlZD10fSxfc2V0dXBFdmVudHM6ZnVuY3Rpb24odCl7dmFyIGk9e307dCYmZS5lYWNoKHQuc3BsaXQoIiAiKSxmdW5jdGlvbihlLHQpe2lbdF09Il9ldmVudEhhbmRsZXIifSksdGhpcy5fb2ZmKHRoaXMuYW5jaG9ycy5hZGQodGhpcy50YWJzKS5hZGQodGhpcy5wYW5lbHMpKSx0aGlzLl9vbighMCx0aGlzLmFuY2hvcnMse2NsaWNrOmZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKX19KSx0aGlzLl9vbih0aGlzLmFuY2hvcnMsaSksdGhpcy5fb24odGhpcy50YWJzLHtrZXlkb3duOiJfdGFiS2V5ZG93biJ9KSx0aGlzLl9vbih0aGlzLnBhbmVscyx7a2V5ZG93bjoiX3BhbmVsS2V5ZG93biJ9KSx0aGlzLl9mb2N1c2FibGUodGhpcy50YWJzKSx0aGlzLl9ob3ZlcmFibGUodGhpcy50YWJzKX0sX3NldHVwSGVpZ2h0U3R5bGU6ZnVuY3Rpb24odCl7dmFyIGkscz10aGlzLmVsZW1lbnQucGFyZW50KCk7ImZpbGwiPT09dD8oaT1zLmhlaWdodCgpLGktPXRoaXMuZWxlbWVudC5vdXRlckhlaWdodCgpLXRoaXMuZWxlbWVudC5oZWlnaHQoKSx0aGlzLmVsZW1lbnQuc2libGluZ3MoIjp2aXNpYmxlIikuZWFjaChmdW5jdGlvbigpe3ZhciB0PWUodGhpcykscz10LmNzcygicG9zaXRpb24iKTsiYWJzb2x1dGUiIT09cyYmImZpeGVkIiE9PXMmJihpLT10Lm91dGVySGVpZ2h0KCEwKSl9KSx0aGlzLmVsZW1lbnQuY2hpbGRyZW4oKS5ub3QodGhpcy5wYW5lbHMpLmVhY2goZnVuY3Rpb24oKXtpLT1lKHRoaXMpLm91dGVySGVpZ2h0KCEwKX0pLHRoaXMucGFuZWxzLmVhY2goZnVuY3Rpb24oKXtlKHRoaXMpLmhlaWdodChNYXRoLm1heCgwLGktZSh0aGlzKS5pbm5lckhlaWdodCgpK2UodGhpcykuaGVpZ2h0KCkpKX0pLmNzcygib3ZlcmZsb3ciLCJhdXRvIikpOiJhdXRvIj09PXQmJihpPTAsdGhpcy5wYW5lbHMuZWFjaChmdW5jdGlvbigpe2k9TWF0aC5tYXgoaSxlKHRoaXMpLmhlaWdodCgiIikuaGVpZ2h0KCkpfSkuaGVpZ2h0KGkpKX0sX2V2ZW50SGFuZGxlcjpmdW5jdGlvbih0KXt2YXIgaT10aGlzLm9wdGlvbnMscz10aGlzLmFjdGl2ZSxuPWUodC5jdXJyZW50VGFyZ2V0KSxhPW4uY2xvc2VzdCgibGkiKSxvPWFbMF09PT1zWzBdLHI9byYmaS5jb2xsYXBzaWJsZSxoPXI/ZSgpOnRoaXMuX2dldFBhbmVsRm9yVGFiKGEpLGw9cy5sZW5ndGg/dGhpcy5fZ2V0UGFuZWxGb3JUYWIocyk6ZSgpLHU9e29sZFRhYjpzLG9sZFBhbmVsOmwsbmV3VGFiOnI/ZSgpOmEsbmV3UGFuZWw6aH07dC5wcmV2ZW50RGVmYXVsdCgpLGEuaGFzQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIil8fGEuaGFzQ2xhc3MoInVpLXRhYnMtbG9hZGluZyIpfHx0aGlzLnJ1bm5pbmd8fG8mJiFpLmNvbGxhcHNpYmxlfHx0aGlzLl90cmlnZ2VyKCJiZWZvcmVBY3RpdmF0ZSIsdCx1KT09PSExfHwoaS5hY3RpdmU9cj8hMTp0aGlzLnRhYnMuaW5kZXgoYSksdGhpcy5hY3RpdmU9bz9lKCk6YSx0aGlzLnhociYmdGhpcy54aHIuYWJvcnQoKSxsLmxlbmd0aHx8aC5sZW5ndGh8fGUuZXJyb3IoImpRdWVyeSBVSSBUYWJzOiBNaXNtYXRjaGluZyBmcmFnbWVudCBpZGVudGlmaWVyLiIpLGgubGVuZ3RoJiZ0aGlzLmxvYWQodGhpcy50YWJzLmluZGV4KGEpLHQpLHRoaXMuX3RvZ2dsZSh0LHUpKX0sX3RvZ2dsZTpmdW5jdGlvbih0LGkpe2Z1bmN0aW9uIHMoKXthLnJ1bm5pbmc9ITEsYS5fdHJpZ2dlcigiYWN0aXZhdGUiLHQsaSl9ZnVuY3Rpb24gbigpe2kubmV3VGFiLmNsb3Nlc3QoImxpIikuYWRkQ2xhc3MoInVpLXRhYnMtYWN0aXZlIHVpLXN0YXRlLWFjdGl2ZSIpLG8ubGVuZ3RoJiZhLm9wdGlvbnMuc2hvdz9hLl9zaG93KG8sYS5vcHRpb25zLnNob3cscyk6KG8uc2hvdygpLHMoKSl9dmFyIGE9dGhpcyxvPWkubmV3UGFuZWwscj1pLm9sZFBhbmVsO3RoaXMucnVubmluZz0hMCxyLmxlbmd0aCYmdGhpcy5vcHRpb25zLmhpZGU/dGhpcy5faGlkZShyLHRoaXMub3B0aW9ucy5oaWRlLGZ1bmN0aW9uKCl7aS5vbGRUYWIuY2xvc2VzdCgibGkiKS5yZW1vdmVDbGFzcygidWktdGFicy1hY3RpdmUgdWktc3RhdGUtYWN0aXZlIiksbigpfSk6KGkub2xkVGFiLmNsb3Nlc3QoImxpIikucmVtb3ZlQ2xhc3MoInVpLXRhYnMtYWN0aXZlIHVpLXN0YXRlLWFjdGl2ZSIpLHIuaGlkZSgpLG4oKSksci5hdHRyKCJhcmlhLWhpZGRlbiIsInRydWUiKSxpLm9sZFRhYi5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6ImZhbHNlIiwiYXJpYS1leHBhbmRlZCI6ImZhbHNlIn0pLG8ubGVuZ3RoJiZyLmxlbmd0aD9pLm9sZFRhYi5hdHRyKCJ0YWJJbmRleCIsLTEpOm8ubGVuZ3RoJiZ0aGlzLnRhYnMuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIDA9PT1lKHRoaXMpLmF0dHIoInRhYkluZGV4Iil9KS5hdHRyKCJ0YWJJbmRleCIsLTEpLG8uYXR0cigiYXJpYS1oaWRkZW4iLCJmYWxzZSIpLGkubmV3VGFiLmF0dHIoeyJhcmlhLXNlbGVjdGVkIjoidHJ1ZSIsImFyaWEtZXhwYW5kZWQiOiJ0cnVlIix0YWJJbmRleDowfSl9LF9hY3RpdmF0ZTpmdW5jdGlvbih0KXt2YXIgaSxzPXRoaXMuX2ZpbmRBY3RpdmUodCk7c1swXSE9PXRoaXMuYWN0aXZlWzBdJiYocy5sZW5ndGh8fChzPXRoaXMuYWN0aXZlKSxpPXMuZmluZCgiLnVpLXRhYnMtYW5jaG9yIilbMF0sdGhpcy5fZXZlbnRIYW5kbGVyKHt0YXJnZXQ6aSxjdXJyZW50VGFyZ2V0OmkscHJldmVudERlZmF1bHQ6ZS5ub29wfSkpfSxfZmluZEFjdGl2ZTpmdW5jdGlvbih0KXtyZXR1cm4gdD09PSExP2UoKTp0aGlzLnRhYnMuZXEodCl9LF9nZXRJbmRleDpmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGUmJihlPXRoaXMuYW5jaG9ycy5pbmRleCh0aGlzLmFuY2hvcnMuZmlsdGVyKCJbaHJlZiQ9JyIrZSsiJ10iKSkpLGV9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy54aHImJnRoaXMueGhyLmFib3J0KCksdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS10YWJzIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIHVpLXRhYnMtY29sbGFwc2libGUiKSx0aGlzLnRhYmxpc3QucmVtb3ZlQ2xhc3MoInVpLXRhYnMtbmF2IHVpLWhlbHBlci1yZXNldCB1aS1oZWxwZXItY2xlYXJmaXggdWktd2lkZ2V0LWhlYWRlciB1aS1jb3JuZXItYWxsIikucmVtb3ZlQXR0cigicm9sZSIpLHRoaXMuYW5jaG9ycy5yZW1vdmVDbGFzcygidWktdGFicy1hbmNob3IiKS5yZW1vdmVBdHRyKCJyb2xlIikucmVtb3ZlQXR0cigidGFiSW5kZXgiKS5yZW1vdmVVbmlxdWVJZCgpLHRoaXMudGFibGlzdC51bmJpbmQodGhpcy5ldmVudE5hbWVzcGFjZSksdGhpcy50YWJzLmFkZCh0aGlzLnBhbmVscykuZWFjaChmdW5jdGlvbigpe2UuZGF0YSh0aGlzLCJ1aS10YWJzLWRlc3Ryb3kiKT9lKHRoaXMpLnJlbW92ZSgpOmUodGhpcykucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWRlZmF1bHQgdWktc3RhdGUtYWN0aXZlIHVpLXN0YXRlLWRpc2FibGVkIHVpLWNvcm5lci10b3AgdWktY29ybmVyLWJvdHRvbSB1aS13aWRnZXQtY29udGVudCB1aS10YWJzLWFjdGl2ZSB1aS10YWJzLXBhbmVsIikucmVtb3ZlQXR0cigidGFiSW5kZXgiKS5yZW1vdmVBdHRyKCJhcmlhLWxpdmUiKS5yZW1vdmVBdHRyKCJhcmlhLWJ1c3kiKS5yZW1vdmVBdHRyKCJhcmlhLXNlbGVjdGVkIikucmVtb3ZlQXR0cigiYXJpYS1sYWJlbGxlZGJ5IikucmVtb3ZlQXR0cigiYXJpYS1oaWRkZW4iKS5yZW1vdmVBdHRyKCJhcmlhLWV4cGFuZGVkIikucmVtb3ZlQXR0cigicm9sZSIpfSksdGhpcy50YWJzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLGk9dC5kYXRhKCJ1aS10YWJzLWFyaWEtY29udHJvbHMiKTtpP3QuYXR0cigiYXJpYS1jb250cm9scyIsaSkucmVtb3ZlRGF0YSgidWktdGFicy1hcmlhLWNvbnRyb2xzIik6dC5yZW1vdmVBdHRyKCJhcmlhLWNvbnRyb2xzIil9KSx0aGlzLnBhbmVscy5zaG93KCksImNvbnRlbnQiIT09dGhpcy5vcHRpb25zLmhlaWdodFN0eWxlJiZ0aGlzLnBhbmVscy5jc3MoImhlaWdodCIsIiIpfSxlbmFibGU6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5vcHRpb25zLmRpc2FibGVkO2khPT0hMSYmKHZvaWQgMD09PXQ/aT0hMToodD10aGlzLl9nZXRJbmRleCh0KSxpPWUuaXNBcnJheShpKT9lLm1hcChpLGZ1bmN0aW9uKGUpe3JldHVybiBlIT09dD9lOm51bGx9KTplLm1hcCh0aGlzLnRhYnMsZnVuY3Rpb24oZSxpKXtyZXR1cm4gaSE9PXQ/aTpudWxsfSkpLHRoaXMuX3NldHVwRGlzYWJsZWQoaSkpfSxkaXNhYmxlOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMub3B0aW9ucy5kaXNhYmxlZDtpZihpIT09ITApe2lmKHZvaWQgMD09PXQpaT0hMDtlbHNle2lmKHQ9dGhpcy5fZ2V0SW5kZXgodCksLTEhPT1lLmluQXJyYXkodCxpKSlyZXR1cm47aT1lLmlzQXJyYXkoaSk/ZS5tZXJnZShbdF0saSkuc29ydCgpOlt0XX10aGlzLl9zZXR1cERpc2FibGVkKGkpfX0sbG9hZDpmdW5jdGlvbih0LGkpe3Q9dGhpcy5fZ2V0SW5kZXgodCk7dmFyIHM9dGhpcyxuPXRoaXMudGFicy5lcSh0KSxhPW4uZmluZCgiLnVpLXRhYnMtYW5jaG9yIiksbz10aGlzLl9nZXRQYW5lbEZvclRhYihuKSxyPXt0YWI6bixwYW5lbDpvfSxoPWZ1bmN0aW9uKGUsdCl7ImFib3J0Ij09PXQmJnMucGFuZWxzLnN0b3AoITEsITApLG4ucmVtb3ZlQ2xhc3MoInVpLXRhYnMtbG9hZGluZyIpLG8ucmVtb3ZlQXR0cigiYXJpYS1idXN5IiksZT09PXMueGhyJiZkZWxldGUgcy54aHJ9O3RoaXMuX2lzTG9jYWwoYVswXSl8fCh0aGlzLnhocj1lLmFqYXgodGhpcy5fYWpheFNldHRpbmdzKGEsaSxyKSksdGhpcy54aHImJiJjYW5jZWxlZCIhPT10aGlzLnhoci5zdGF0dXNUZXh0JiYobi5hZGRDbGFzcygidWktdGFicy1sb2FkaW5nIiksby5hdHRyKCJhcmlhLWJ1c3kiLCJ0cnVlIiksdGhpcy54aHIuZG9uZShmdW5jdGlvbihlLHQsbil7c2V0VGltZW91dChmdW5jdGlvbigpe28uaHRtbChlKSxzLl90cmlnZ2VyKCJsb2FkIixpLHIpLGgobix0KX0sMSl9KS5mYWlsKGZ1bmN0aW9uKGUsdCl7c2V0VGltZW91dChmdW5jdGlvbigpe2goZSx0KX0sMSl9KSkpfSxfYWpheFNldHRpbmdzOmZ1bmN0aW9uKHQsaSxzKXt2YXIgbj10aGlzO3JldHVybnt1cmw6dC5hdHRyKCJocmVmIiksYmVmb3JlU2VuZDpmdW5jdGlvbih0LGEpe3JldHVybiBuLl90cmlnZ2VyKCJiZWZvcmVMb2FkIixpLGUuZXh0ZW5kKHtqcVhIUjp0LGFqYXhTZXR0aW5nczphfSxzKSl9fX0sX2dldFBhbmVsRm9yVGFiOmZ1bmN0aW9uKHQpe3ZhciBpPWUodCkuYXR0cigiYXJpYS1jb250cm9scyIpO3JldHVybiB0aGlzLmVsZW1lbnQuZmluZCh0aGlzLl9zYW5pdGl6ZVNlbGVjdG9yKCIjIitpKSl9fSksZS53aWRnZXQoInVpLnRvb2x0aXAiLHt2ZXJzaW9uOiIxLjExLjQiLG9wdGlvbnM6e2NvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLmF0dHIoInRpdGxlIil8fCIiO3JldHVybiBlKCI8YT4iKS50ZXh0KHQpLmh0bWwoKX0saGlkZTohMCxpdGVtczoiW3RpdGxlXTpub3QoW2Rpc2FibGVkXSkiLHBvc2l0aW9uOntteToibGVmdCB0b3ArMTUiLGF0OiJsZWZ0IGJvdHRvbSIsY29sbGlzaW9uOiJmbGlwZml0IGZsaXAifSxzaG93OiEwLHRvb2x0aXBDbGFzczpudWxsLHRyYWNrOiExLGNsb3NlOm51bGwsb3BlbjpudWxsfSxfYWRkRGVzY3JpYmVkQnk6ZnVuY3Rpb24odCxpKXt2YXIgcz0odC5hdHRyKCJhcmlhLWRlc2NyaWJlZGJ5Iil8fCIiKS5zcGxpdCgvXHMrLyk7cy5wdXNoKGkpLHQuZGF0YSgidWktdG9vbHRpcC1pZCIsaSkuYXR0cigiYXJpYS1kZXNjcmliZWRieSIsZS50cmltKHMuam9pbigiICIpKSl9LF9yZW1vdmVEZXNjcmliZWRCeTpmdW5jdGlvbih0KXt2YXIgaT10LmRhdGEoInVpLXRvb2x0aXAtaWQiKSxzPSh0LmF0dHIoImFyaWEtZGVzY3JpYmVkYnkiKXx8IiIpLnNwbGl0KC9ccysvKSxuPWUuaW5BcnJheShpLHMpOy0xIT09biYmcy5zcGxpY2UobiwxKSx0LnJlbW92ZURhdGEoInVpLXRvb2x0aXAtaWQiKSxzPWUudHJpbShzLmpvaW4oIiAiKSkscz90LmF0dHIoImFyaWEtZGVzY3JpYmVkYnkiLHMpOnQucmVtb3ZlQXR0cigiYXJpYS1kZXNjcmliZWRieSIpfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5fb24oe21vdXNlb3Zlcjoib3BlbiIsZm9jdXNpbjoib3BlbiJ9KSx0aGlzLnRvb2x0aXBzPXt9LHRoaXMucGFyZW50cz17fSx0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJnRoaXMuX2Rpc2FibGUoKSx0aGlzLmxpdmVSZWdpb249ZSgiPGRpdj4iKS5hdHRyKHtyb2xlOiJsb2ciLCJhcmlhLWxpdmUiOiJhc3NlcnRpdmUiLCJhcmlhLXJlbGV2YW50IjoiYWRkaXRpb25zIn0pLmFkZENsYXNzKCJ1aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2libGUiKS5hcHBlbmRUbyh0aGlzLmRvY3VtZW50WzBdLmJvZHkpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKHQsaSl7dmFyIHM9dGhpcztyZXR1cm4iZGlzYWJsZWQiPT09dD8odGhpc1tpPyJfZGlzYWJsZSI6Il9lbmFibGUiXSgpLHRoaXMub3B0aW9uc1t0XT1pLHZvaWQgMCk6KHRoaXMuX3N1cGVyKHQsaSksImNvbnRlbnQiPT09dCYmZS5lYWNoKHRoaXMudG9vbHRpcHMsZnVuY3Rpb24oZSx0KXtzLl91cGRhdGVDb250ZW50KHQuZWxlbWVudCl9KSx2b2lkIDApfSxfZGlzYWJsZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7ZS5lYWNoKHRoaXMudG9vbHRpcHMsZnVuY3Rpb24oaSxzKXt2YXIgbj1lLkV2ZW50KCJibHVyIik7bi50YXJnZXQ9bi5jdXJyZW50VGFyZ2V0PXMuZWxlbWVudFswXSx0LmNsb3NlKG4sITApfSksdGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25zLml0ZW1zKS5hZGRCYWNrKCkuZWFjaChmdW5jdGlvbigpe3ZhciB0PWUodGhpcyk7dC5pcygiW3RpdGxlXSIpJiZ0LmRhdGEoInVpLXRvb2x0aXAtdGl0bGUiLHQuYXR0cigidGl0bGUiKSkucmVtb3ZlQXR0cigidGl0bGUiKX0pfSxfZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25zLml0ZW1zKS5hZGRCYWNrKCkuZWFjaChmdW5jdGlvbigpe3ZhciB0PWUodGhpcyk7dC5kYXRhKCJ1aS10b29sdGlwLXRpdGxlIikmJnQuYXR0cigidGl0bGUiLHQuZGF0YSgidWktdG9vbHRpcC10aXRsZSIpKX0pfSxvcGVuOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMscz1lKHQ/dC50YXJnZXQ6dGhpcy5lbGVtZW50KS5jbG9zZXN0KHRoaXMub3B0aW9ucy5pdGVtcyk7cy5sZW5ndGgmJiFzLmRhdGEoInVpLXRvb2x0aXAtaWQiKSYmKHMuYXR0cigidGl0bGUiKSYmcy5kYXRhKCJ1aS10b29sdGlwLXRpdGxlIixzLmF0dHIoInRpdGxlIikpLHMuZGF0YSgidWktdG9vbHRpcC1vcGVuIiwhMCksdCYmIm1vdXNlb3ZlciI9PT10LnR5cGUmJnMucGFyZW50cygpLmVhY2goZnVuY3Rpb24oKXt2YXIgdCxzPWUodGhpcyk7cy5kYXRhKCJ1aS10b29sdGlwLW9wZW4iKSYmKHQ9ZS5FdmVudCgiYmx1ciIpLHQudGFyZ2V0PXQuY3VycmVudFRhcmdldD10aGlzLGkuY2xvc2UodCwhMCkpLHMuYXR0cigidGl0bGUiKSYmKHMudW5pcXVlSWQoKSxpLnBhcmVudHNbdGhpcy5pZF09e2VsZW1lbnQ6dGhpcyx0aXRsZTpzLmF0dHIoInRpdGxlIil9LHMuYXR0cigidGl0bGUiLCIiKSl9KSx0aGlzLl9yZWdpc3RlckNsb3NlSGFuZGxlcnModCxzKSx0aGlzLl91cGRhdGVDb250ZW50KHMsdCkpfSxfdXBkYXRlQ29udGVudDpmdW5jdGlvbihlLHQpe3ZhciBpLHM9dGhpcy5vcHRpb25zLmNvbnRlbnQsbj10aGlzLGE9dD90LnR5cGU6bnVsbDtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHM/dGhpcy5fb3Blbih0LGUscyk6KGk9cy5jYWxsKGVbMF0sZnVuY3Rpb24oaSl7bi5fZGVsYXkoZnVuY3Rpb24oKXtlLmRhdGEoInVpLXRvb2x0aXAtb3BlbiIpJiYodCYmKHQudHlwZT1hKSx0aGlzLl9vcGVuKHQsZSxpKSl9KX0pLGkmJnRoaXMuX29wZW4odCxlLGkpLHZvaWQgMCl9LF9vcGVuOmZ1bmN0aW9uKHQsaSxzKXtmdW5jdGlvbiBuKGUpe2wub2Y9ZSxvLmlzKCI6aGlkZGVuIil8fG8ucG9zaXRpb24obCl9dmFyIGEsbyxyLGgsbD1lLmV4dGVuZCh7fSx0aGlzLm9wdGlvbnMucG9zaXRpb24pO2lmKHMpe2lmKGE9dGhpcy5fZmluZChpKSlyZXR1cm4gYS50b29sdGlwLmZpbmQoIi51aS10b29sdGlwLWNvbnRlbnQiKS5odG1sKHMpLHZvaWQgMDtpLmlzKCJbdGl0bGVdIikmJih0JiYibW91c2VvdmVyIj09PXQudHlwZT9pLmF0dHIoInRpdGxlIiwiIik6aS5yZW1vdmVBdHRyKCJ0aXRsZSIpKSxhPXRoaXMuX3Rvb2x0aXAoaSksbz1hLnRvb2x0aXAsdGhpcy5fYWRkRGVzY3JpYmVkQnkoaSxvLmF0dHIoImlkIikpLG8uZmluZCgiLnVpLXRvb2x0aXAtY29udGVudCIpLmh0bWwocyksdGhpcy5saXZlUmVnaW9uLmNoaWxkcmVuKCkuaGlkZSgpLHMuY2xvbmU/KGg9cy5jbG9uZSgpLGgucmVtb3ZlQXR0cigiaWQiKS5maW5kKCJbaWRdIikucmVtb3ZlQXR0cigiaWQiKSk6aD1zLGUoIjxkaXY+IikuaHRtbChoKS5hcHBlbmRUbyh0aGlzLmxpdmVSZWdpb24pLHRoaXMub3B0aW9ucy50cmFjayYmdCYmL15tb3VzZS8udGVzdCh0LnR5cGUpPyh0aGlzLl9vbih0aGlzLmRvY3VtZW50LHttb3VzZW1vdmU6bn0pLG4odCkpOm8ucG9zaXRpb24oZS5leHRlbmQoe29mOml9LHRoaXMub3B0aW9ucy5wb3NpdGlvbikpLG8uaGlkZSgpLHRoaXMuX3Nob3cobyx0aGlzLm9wdGlvbnMuc2hvdyksdGhpcy5vcHRpb25zLnNob3cmJnRoaXMub3B0aW9ucy5zaG93LmRlbGF5JiYocj10aGlzLmRlbGF5ZWRTaG93PXNldEludGVydmFsKGZ1bmN0aW9uKCl7by5pcygiOnZpc2libGUiKSYmKG4obC5vZiksY2xlYXJJbnRlcnZhbChyKSl9LGUuZnguaW50ZXJ2YWwpKSx0aGlzLl90cmlnZ2VyKCJvcGVuIix0LHt0b29sdGlwOm99KX19LF9yZWdpc3RlckNsb3NlSGFuZGxlcnM6ZnVuY3Rpb24odCxpKXt2YXIgcz17a2V5dXA6ZnVuY3Rpb24odCl7aWYodC5rZXlDb2RlPT09ZS51aS5rZXlDb2RlLkVTQ0FQRSl7dmFyIHM9ZS5FdmVudCh0KTtzLmN1cnJlbnRUYXJnZXQ9aVswXSx0aGlzLmNsb3NlKHMsITApfX19O2lbMF0hPT10aGlzLmVsZW1lbnRbMF0mJihzLnJlbW92ZT1mdW5jdGlvbigpe3RoaXMuX3JlbW92ZVRvb2x0aXAodGhpcy5fZmluZChpKS50b29sdGlwKX0pLHQmJiJtb3VzZW92ZXIiIT09dC50eXBlfHwocy5tb3VzZWxlYXZlPSJjbG9zZSIpLHQmJiJmb2N1c2luIiE9PXQudHlwZXx8KHMuZm9jdXNvdXQ9ImNsb3NlIiksdGhpcy5fb24oITAsaSxzKX0sY2xvc2U6ZnVuY3Rpb24odCl7dmFyIGkscz10aGlzLG49ZSh0P3QuY3VycmVudFRhcmdldDp0aGlzLmVsZW1lbnQpLGE9dGhpcy5fZmluZChuKTtyZXR1cm4gYT8oaT1hLnRvb2x0aXAsYS5jbG9zaW5nfHwoY2xlYXJJbnRlcnZhbCh0aGlzLmRlbGF5ZWRTaG93KSxuLmRhdGEoInVpLXRvb2x0aXAtdGl0bGUiKSYmIW4uYXR0cigidGl0bGUiKSYmbi5hdHRyKCJ0aXRsZSIsbi5kYXRhKCJ1aS10b29sdGlwLXRpdGxlIikpLHRoaXMuX3JlbW92ZURlc2NyaWJlZEJ5KG4pLGEuaGlkaW5nPSEwLGkuc3RvcCghMCksdGhpcy5faGlkZShpLHRoaXMub3B0aW9ucy5oaWRlLGZ1bmN0aW9uKCl7cy5fcmVtb3ZlVG9vbHRpcChlKHRoaXMpKX0pLG4ucmVtb3ZlRGF0YSgidWktdG9vbHRpcC1vcGVuIiksdGhpcy5fb2ZmKG4sIm1vdXNlbGVhdmUgZm9jdXNvdXQga2V5dXAiKSxuWzBdIT09dGhpcy5lbGVtZW50WzBdJiZ0aGlzLl9vZmYobiwicmVtb3ZlIiksdGhpcy5fb2ZmKHRoaXMuZG9jdW1lbnQsIm1vdXNlbW92ZSIpLHQmJiJtb3VzZWxlYXZlIj09PXQudHlwZSYmZS5lYWNoKHRoaXMucGFyZW50cyxmdW5jdGlvbih0LGkpe2UoaS5lbGVtZW50KS5hdHRyKCJ0aXRsZSIsaS50aXRsZSksZGVsZXRlIHMucGFyZW50c1t0XX0pLGEuY2xvc2luZz0hMCx0aGlzLl90cmlnZ2VyKCJjbG9zZSIsdCx7dG9vbHRpcDppfSksYS5oaWRpbmd8fChhLmNsb3Npbmc9ITEpKSx2b2lkIDApOihuLnJlbW92ZURhdGEoInVpLXRvb2x0aXAtb3BlbiIpLHZvaWQgMCl9LF90b29sdGlwOmZ1bmN0aW9uKHQpe3ZhciBpPWUoIjxkaXY+IikuYXR0cigicm9sZSIsInRvb2x0aXAiKS5hZGRDbGFzcygidWktdG9vbHRpcCB1aS13aWRnZXQgdWktY29ybmVyLWFsbCB1aS13aWRnZXQtY29udGVudCAiKyh0aGlzLm9wdGlvbnMudG9vbHRpcENsYXNzfHwiIikpLHM9aS51bmlxdWVJZCgpLmF0dHIoImlkIik7cmV0dXJuIGUoIjxkaXY+IikuYWRkQ2xhc3MoInVpLXRvb2x0aXAtY29udGVudCIpLmFwcGVuZFRvKGkpLGkuYXBwZW5kVG8odGhpcy5kb2N1bWVudFswXS5ib2R5KSx0aGlzLnRvb2x0aXBzW3NdPXtlbGVtZW50OnQsdG9vbHRpcDppfX0sX2ZpbmQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhKCJ1aS10b29sdGlwLWlkIik7cmV0dXJuIHQ/dGhpcy50b29sdGlwc1t0XTpudWxsfSxfcmVtb3ZlVG9vbHRpcDpmdW5jdGlvbihlKXtlLnJlbW92ZSgpLGRlbGV0ZSB0aGlzLnRvb2x0aXBzW2UuYXR0cigiaWQiKV19LF9kZXN0cm95OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztlLmVhY2godGhpcy50b29sdGlwcyxmdW5jdGlvbihpLHMpe3ZhciBuPWUuRXZlbnQoImJsdXIiKSxhPXMuZWxlbWVudDtuLnRhcmdldD1uLmN1cnJlbnRUYXJnZXQ9YVswXSx0LmNsb3NlKG4sITApLGUoIiMiK2kpLnJlbW92ZSgpLGEuZGF0YSgidWktdG9vbHRpcC10aXRsZSIpJiYoYS5hdHRyKCJ0aXRsZSIpfHxhLmF0dHIoInRpdGxlIixhLmRhdGEoInVpLXRvb2x0aXAtdGl0bGUiKSksYS5yZW1vdmVEYXRhKCJ1aS10b29sdGlwLXRpdGxlIikpfSksdGhpcy5saXZlUmVnaW9uLnJlbW92ZSgpfX0pO3ZhciBjPSJ1aS1lZmZlY3RzLSIscD1lO2UuZWZmZWN0cz17ZWZmZWN0Ont9fSxmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIGkoZSx0LGkpe3ZhciBzPWRbdC50eXBlXXx8e307cmV0dXJuIG51bGw9PWU/aXx8IXQuZGVmP251bGw6dC5kZWY6KGU9cy5mbG9vcj9+fmU6cGFyc2VGbG9hdChlKSxpc05hTihlKT90LmRlZjpzLm1vZD8oZStzLm1vZCklcy5tb2Q6MD5lPzA6ZT5zLm1heD9zLm1heDplKX1mdW5jdGlvbiBzKGkpe3ZhciBzPWwoKSxuPXMuX3JnYmE9W107cmV0dXJuIGk9aS50b0xvd2VyQ2FzZSgpLGYoaCxmdW5jdGlvbihlLGEpe3ZhciBvLHI9YS5yZS5leGVjKGkpLGg9ciYmYS5wYXJzZShyKSxsPWEuc3BhY2V8fCJyZ2JhIjtyZXR1cm4gaD8obz1zW2xdKGgpLHNbdVtsXS5jYWNoZV09b1t1W2xdLmNhY2hlXSxuPXMuX3JnYmE9by5fcmdiYSwhMSk6dH0pLG4ubGVuZ3RoPygiMCwwLDAsMCI9PT1uLmpvaW4oKSYmZS5leHRlbmQobixhLnRyYW5zcGFyZW50KSxzKTphW2ldfWZ1bmN0aW9uIG4oZSx0LGkpe3JldHVybiBpPShpKzEpJTEsMT42Kmk/ZSs2Kih0LWUpKmk6MT4yKmk/dDoyPjMqaT9lKzYqKHQtZSkqKDIvMy1pKTplfXZhciBhLG89ImJhY2tncm91bmRDb2xvciBib3JkZXJCb3R0b21Db2xvciBib3JkZXJMZWZ0Q29sb3IgYm9yZGVyUmlnaHRDb2xvciBib3JkZXJUb3BDb2xvciBjb2xvciBjb2x1bW5SdWxlQ29sb3Igb3V0bGluZUNvbG9yIHRleHREZWNvcmF0aW9uQ29sb3IgdGV4dEVtcGhhc2lzQ29sb3IiLHI9L14oW1wtK10pPVxzKihcZCtcLj9cZCopLyxoPVt7cmU6L3JnYmE/XChccyooXGR7MSwzfSlccyosXHMqKFxkezEsM30pXHMqLFxzKihcZHsxLDN9KVxzKig/OixccyooXGQ/KD86XC5cZCspPylccyopP1wpLyxwYXJzZTpmdW5jdGlvbihlKXtyZXR1cm5bZVsxXSxlWzJdLGVbM10sZVs0XV19fSx7cmU6L3JnYmE/XChccyooXGQrKD86XC5cZCspPylcJVxzKixccyooXGQrKD86XC5cZCspPylcJVxzKixccyooXGQrKD86XC5cZCspPylcJVxzKig/OixccyooXGQ/KD86XC5cZCspPylccyopP1wpLyxwYXJzZTpmdW5jdGlvbihlKXtyZXR1cm5bMi41NSplWzFdLDIuNTUqZVsyXSwyLjU1KmVbM10sZVs0XV19fSx7cmU6LyMoW2EtZjAtOV17Mn0pKFthLWYwLTldezJ9KShbYS1mMC05XXsyfSkvLHBhcnNlOmZ1bmN0aW9uKGUpe3JldHVybltwYXJzZUludChlWzFdLDE2KSxwYXJzZUludChlWzJdLDE2KSxwYXJzZUludChlWzNdLDE2KV19fSx7cmU6LyMoW2EtZjAtOV0pKFthLWYwLTldKShbYS1mMC05XSkvLHBhcnNlOmZ1bmN0aW9uKGUpe3JldHVybltwYXJzZUludChlWzFdK2VbMV0sMTYpLHBhcnNlSW50KGVbMl0rZVsyXSwxNikscGFyc2VJbnQoZVszXStlWzNdLDE2KV19fSx7cmU6L2hzbGE/XChccyooXGQrKD86XC5cZCspPylccyosXHMqKFxkKyg/OlwuXGQrKT8pXCVccyosXHMqKFxkKyg/OlwuXGQrKT8pXCVccyooPzosXHMqKFxkPyg/OlwuXGQrKT8pXHMqKT9cKS8sc3BhY2U6ImhzbGEiLHBhcnNlOmZ1bmN0aW9uKGUpe3JldHVybltlWzFdLGVbMl0vMTAwLGVbM10vMTAwLGVbNF1dfX1dLGw9ZS5Db2xvcj1mdW5jdGlvbih0LGkscyxuKXtyZXR1cm4gbmV3IGUuQ29sb3IuZm4ucGFyc2UodCxpLHMsbil9LHU9e3JnYmE6e3Byb3BzOntyZWQ6e2lkeDowLHR5cGU6ImJ5dGUifSxncmVlbjp7aWR4OjEsdHlwZToiYnl0ZSJ9LGJsdWU6e2lkeDoyLHR5cGU6ImJ5dGUifX19LGhzbGE6e3Byb3BzOntodWU6e2lkeDowLHR5cGU6ImRlZ3JlZXMifSxzYXR1cmF0aW9uOntpZHg6MSx0eXBlOiJwZXJjZW50In0sbGlnaHRuZXNzOntpZHg6Mix0eXBlOiJwZXJjZW50In19fX0sZD17ImJ5dGUiOntmbG9vcjohMCxtYXg6MjU1fSxwZXJjZW50OnttYXg6MX0sZGVncmVlczp7bW9kOjM2MCxmbG9vcjohMH19LGM9bC5zdXBwb3J0PXt9LHA9ZSgiPHA+IilbMF0sZj1lLmVhY2g7cC5zdHlsZS5jc3NUZXh0PSJiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMSwxLDEsLjUpIixjLnJnYmE9cC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IuaW5kZXhPZigicmdiYSIpPi0xLGYodSxmdW5jdGlvbihlLHQpe3QuY2FjaGU9Il8iK2UsdC5wcm9wcy5hbHBoYT17aWR4OjMsdHlwZToicGVyY2VudCIsZGVmOjF9fSksbC5mbj1lLmV4dGVuZChsLnByb3RvdHlwZSx7cGFyc2U6ZnVuY3Rpb24obixvLHIsaCl7aWYobj09PXQpcmV0dXJuIHRoaXMuX3JnYmE9W251bGwsbnVsbCxudWxsLG51bGxdLHRoaXM7KG4uanF1ZXJ5fHxuLm5vZGVUeXBlKSYmKG49ZShuKS5jc3Mobyksbz10KTt2YXIgZD10aGlzLGM9ZS50eXBlKG4pLHA9dGhpcy5fcmdiYT1bXTtyZXR1cm4gbyE9PXQmJihuPVtuLG8scixoXSxjPSJhcnJheSIpLCJzdHJpbmciPT09Yz90aGlzLnBhcnNlKHMobil8fGEuX2RlZmF1bHQpOiJhcnJheSI9PT1jPyhmKHUucmdiYS5wcm9wcyxmdW5jdGlvbihlLHQpe3BbdC5pZHhdPWkoblt0LmlkeF0sdCl9KSx0aGlzKToib2JqZWN0Ij09PWM/KG4gaW5zdGFuY2VvZiBsP2YodSxmdW5jdGlvbihlLHQpe25bdC5jYWNoZV0mJihkW3QuY2FjaGVdPW5bdC5jYWNoZV0uc2xpY2UoKSl9KTpmKHUsZnVuY3Rpb24odCxzKXt2YXIgYT1zLmNhY2hlO2Yocy5wcm9wcyxmdW5jdGlvbihlLHQpe2lmKCFkW2FdJiZzLnRvKXtpZigiYWxwaGEiPT09ZXx8bnVsbD09bltlXSlyZXR1cm47ZFthXT1zLnRvKGQuX3JnYmEpfWRbYV1bdC5pZHhdPWkobltlXSx0LCEwKX0pLGRbYV0mJjA+ZS5pbkFycmF5KG51bGwsZFthXS5zbGljZSgwLDMpKSYmKGRbYV1bM109MSxzLmZyb20mJihkLl9yZ2JhPXMuZnJvbShkW2FdKSkpfSksdGhpcyk6dH0saXM6ZnVuY3Rpb24oZSl7dmFyIGk9bChlKSxzPSEwLG49dGhpcztyZXR1cm4gZih1LGZ1bmN0aW9uKGUsYSl7dmFyIG8scj1pW2EuY2FjaGVdO3JldHVybiByJiYobz1uW2EuY2FjaGVdfHxhLnRvJiZhLnRvKG4uX3JnYmEpfHxbXSxmKGEucHJvcHMsZnVuY3Rpb24oZSxpKXtyZXR1cm4gbnVsbCE9cltpLmlkeF0/cz1yW2kuaWR4XT09PW9baS5pZHhdOnR9KSksc30pLHN9LF9zcGFjZTpmdW5jdGlvbigpe3ZhciBlPVtdLHQ9dGhpcztyZXR1cm4gZih1LGZ1bmN0aW9uKGkscyl7dFtzLmNhY2hlXSYmZS5wdXNoKGkpfSksZS5wb3AoKX0sdHJhbnNpdGlvbjpmdW5jdGlvbihlLHQpe3ZhciBzPWwoZSksbj1zLl9zcGFjZSgpLGE9dVtuXSxvPTA9PT10aGlzLmFscGhhKCk/bCgidHJhbnNwYXJlbnQiKTp0aGlzLHI9b1thLmNhY2hlXXx8YS50byhvLl9yZ2JhKSxoPXIuc2xpY2UoKTtyZXR1cm4gcz1zW2EuY2FjaGVdLGYoYS5wcm9wcyxmdW5jdGlvbihlLG4pe3ZhciBhPW4uaWR4LG89clthXSxsPXNbYV0sdT1kW24udHlwZV18fHt9O251bGwhPT1sJiYobnVsbD09PW8/aFthXT1sOih1Lm1vZCYmKGwtbz51Lm1vZC8yP28rPXUubW9kOm8tbD51Lm1vZC8yJiYoby09dS5tb2QpKSxoW2FdPWkoKGwtbykqdCtvLG4pKSl9KSx0aGlzW25dKGgpfSxibGVuZDpmdW5jdGlvbih0KXtpZigxPT09dGhpcy5fcmdiYVszXSlyZXR1cm4gdGhpczt2YXIgaT10aGlzLl9yZ2JhLnNsaWNlKCkscz1pLnBvcCgpLG49bCh0KS5fcmdiYTtyZXR1cm4gbChlLm1hcChpLGZ1bmN0aW9uKGUsdCl7cmV0dXJuKDEtcykqblt0XStzKmV9KSl9LHRvUmdiYVN0cmluZzpmdW5jdGlvbigpe3ZhciB0PSJyZ2JhKCIsaT1lLm1hcCh0aGlzLl9yZ2JhLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWU/dD4yPzE6MDplfSk7cmV0dXJuIDE9PT1pWzNdJiYoaS5wb3AoKSx0PSJyZ2IoIiksdCtpLmpvaW4oKSsiKSJ9LHRvSHNsYVN0cmluZzpmdW5jdGlvbigpe3ZhciB0PSJoc2xhKCIsaT1lLm1hcCh0aGlzLmhzbGEoKSxmdW5jdGlvbihlLHQpe3JldHVybiBudWxsPT1lJiYoZT10PjI/MTowKSx0JiYzPnQmJihlPU1hdGgucm91bmQoMTAwKmUpKyIlIiksZX0pO3JldHVybiAxPT09aVszXSYmKGkucG9wKCksdD0iaHNsKCIpLHQraS5qb2luKCkrIikifSx0b0hleFN0cmluZzpmdW5jdGlvbih0KXt2YXIgaT10aGlzLl9yZ2JhLnNsaWNlKCkscz1pLnBvcCgpO3JldHVybiB0JiZpLnB1c2gofn4oMjU1KnMpKSwiIyIrZS5tYXAoaSxmdW5jdGlvbihlKXtyZXR1cm4gZT0oZXx8MCkudG9TdHJpbmcoMTYpLDE9PT1lLmxlbmd0aD8iMCIrZTplfSkuam9pbigiIil9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLl9yZ2JhWzNdPyJ0cmFuc3BhcmVudCI6dGhpcy50b1JnYmFTdHJpbmcoKX19KSxsLmZuLnBhcnNlLnByb3RvdHlwZT1sLmZuLHUuaHNsYS50bz1mdW5jdGlvbihlKXtpZihudWxsPT1lWzBdfHxudWxsPT1lWzFdfHxudWxsPT1lWzJdKXJldHVybltudWxsLG51bGwsbnVsbCxlWzNdXTt2YXIgdCxpLHM9ZVswXS8yNTUsbj1lWzFdLzI1NSxhPWVbMl0vMjU1LG89ZVszXSxyPU1hdGgubWF4KHMsbixhKSxoPU1hdGgubWluKHMsbixhKSxsPXItaCx1PXIraCxkPS41KnU7cmV0dXJuIHQ9aD09PXI/MDpzPT09cj82MCoobi1hKS9sKzM2MDpuPT09cj82MCooYS1zKS9sKzEyMDo2MCoocy1uKS9sKzI0MCxpPTA9PT1sPzA6LjU+PWQ/bC91OmwvKDItdSksW01hdGgucm91bmQodCklMzYwLGksZCxudWxsPT1vPzE6b119LHUuaHNsYS5mcm9tPWZ1bmN0aW9uKGUpe2lmKG51bGw9PWVbMF18fG51bGw9PWVbMV18fG51bGw9PWVbMl0pcmV0dXJuW251bGwsbnVsbCxudWxsLGVbM11dO3ZhciB0PWVbMF0vMzYwLGk9ZVsxXSxzPWVbMl0sYT1lWzNdLG89LjU+PXM/cyooMStpKTpzK2ktcyppLHI9MipzLW87cmV0dXJuW01hdGgucm91bmQoMjU1Km4ocixvLHQrMS8zKSksTWF0aC5yb3VuZCgyNTUqbihyLG8sdCkpLE1hdGgucm91bmQoMjU1Km4ocixvLHQtMS8zKSksYV19LGYodSxmdW5jdGlvbihzLG4pe3ZhciBhPW4ucHJvcHMsbz1uLmNhY2hlLGg9bi50byx1PW4uZnJvbTtsLmZuW3NdPWZ1bmN0aW9uKHMpe2lmKGgmJiF0aGlzW29dJiYodGhpc1tvXT1oKHRoaXMuX3JnYmEpKSxzPT09dClyZXR1cm4gdGhpc1tvXS5zbGljZSgpO3ZhciBuLHI9ZS50eXBlKHMpLGQ9ImFycmF5Ij09PXJ8fCJvYmplY3QiPT09cj9zOmFyZ3VtZW50cyxjPXRoaXNbb10uc2xpY2UoKTtyZXR1cm4gZihhLGZ1bmN0aW9uKGUsdCl7dmFyIHM9ZFsib2JqZWN0Ij09PXI/ZTp0LmlkeF07bnVsbD09cyYmKHM9Y1t0LmlkeF0pLGNbdC5pZHhdPWkocyx0KX0pLHU/KG49bCh1KGMpKSxuW29dPWMsbik6bChjKX0sZihhLGZ1bmN0aW9uKHQsaSl7bC5mblt0XXx8KGwuZm5bdF09ZnVuY3Rpb24obil7dmFyIGEsbz1lLnR5cGUobiksaD0iYWxwaGEiPT09dD90aGlzLl9oc2xhPyJoc2xhIjoicmdiYSI6cyxsPXRoaXNbaF0oKSx1PWxbaS5pZHhdO3JldHVybiJ1bmRlZmluZWQiPT09bz91OigiZnVuY3Rpb24iPT09byYmKG49bi5jYWxsKHRoaXMsdSksbz1lLnR5cGUobikpLG51bGw9PW4mJmkuZW1wdHk/dGhpczooInN0cmluZyI9PT1vJiYoYT1yLmV4ZWMobiksYSYmKG49dStwYXJzZUZsb2F0KGFbMl0pKigiKyI9PT1hWzFdPzE6LTEpKSksbFtpLmlkeF09bix0aGlzW2hdKGwpKSl9KX0pfSksbC5ob29rPWZ1bmN0aW9uKHQpe3ZhciBpPXQuc3BsaXQoIiAiKTtmKGksZnVuY3Rpb24odCxpKXtlLmNzc0hvb2tzW2ldPXtzZXQ6ZnVuY3Rpb24odCxuKXt2YXIgYSxvLHI9IiI7aWYoInRyYW5zcGFyZW50IiE9PW4mJigic3RyaW5nIiE9PWUudHlwZShuKXx8KGE9cyhuKSkpKXtpZihuPWwoYXx8biksIWMucmdiYSYmMSE9PW4uX3JnYmFbM10pe2ZvcihvPSJiYWNrZ3JvdW5kQ29sb3IiPT09aT90LnBhcmVudE5vZGU6dDsoIiI9PT1yfHwidHJhbnNwYXJlbnQiPT09cikmJm8mJm8uc3R5bGU7KXRyeXtyPWUuY3NzKG8sImJhY2tncm91bmRDb2xvciIpLG89by5wYXJlbnROb2RlfWNhdGNoKGgpe31uPW4uYmxlbmQociYmInRyYW5zcGFyZW50IiE9PXI/cjoiX2RlZmF1bHQiKX1uPW4udG9SZ2JhU3RyaW5nKCl9dHJ5e3Quc3R5bGVbaV09bn1jYXRjaChoKXt9fX0sZS5meC5zdGVwW2ldPWZ1bmN0aW9uKHQpe3QuY29sb3JJbml0fHwodC5zdGFydD1sKHQuZWxlbSxpKSx0LmVuZD1sKHQuZW5kKSx0LmNvbG9ySW5pdD0hMCksZS5jc3NIb29rc1tpXS5zZXQodC5lbGVtLHQuc3RhcnQudHJhbnNpdGlvbih0LmVuZCx0LnBvcykpfX0pfSxsLmhvb2sobyksZS5jc3NIb29rcy5ib3JkZXJDb2xvcj17ZXhwYW5kOmZ1bmN0aW9uKGUpe3ZhciB0PXt9O3JldHVybiBmKFsiVG9wIiwiUmlnaHQiLCJCb3R0b20iLCJMZWZ0Il0sZnVuY3Rpb24oaSxzKXt0WyJib3JkZXIiK3MrIkNvbG9yIl09ZX0pLHR9fSxhPWUuQ29sb3IubmFtZXM9e2FxdWE6IiMwMGZmZmYiLGJsYWNrOiIjMDAwMDAwIixibHVlOiIjMDAwMGZmIixmdWNoc2lhOiIjZmYwMGZmIixncmF5OiIjODA4MDgwIixncmVlbjoiIzAwODAwMCIsbGltZToiIzAwZmYwMCIsbWFyb29uOiIjODAwMDAwIixuYXZ5OiIjMDAwMDgwIixvbGl2ZToiIzgwODAwMCIscHVycGxlOiIjODAwMDgwIixyZWQ6IiNmZjAwMDAiLHNpbHZlcjoiI2MwYzBjMCIsdGVhbDoiIzAwODA4MCIsd2hpdGU6IiNmZmZmZmYiLHllbGxvdzoiI2ZmZmYwMCIsdHJhbnNwYXJlbnQ6W251bGwsbnVsbCxudWxsLDBdLF9kZWZhdWx0OiIjZmZmZmZmIn19KHApLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2YXIgaSxzLG49dC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3P3Qub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCk6dC5jdXJyZW50U3R5bGUsYT17fTtpZihuJiZuLmxlbmd0aCYmblswXSYmbltuWzBdXSlmb3Iocz1uLmxlbmd0aDtzLS07KWk9bltzXSwic3RyaW5nIj09dHlwZW9mIG5baV0mJihhW2UuY2FtZWxDYXNlKGkpXT1uW2ldKTtlbHNlIGZvcihpIGluIG4pInN0cmluZyI9PXR5cGVvZiBuW2ldJiYoYVtpXT1uW2ldKTtyZXR1cm4gYX1mdW5jdGlvbiBpKHQsaSl7dmFyIHMsYSxvPXt9O2ZvcihzIGluIGkpYT1pW3NdLHRbc10hPT1hJiYobltzXXx8KGUuZnguc3RlcFtzXXx8IWlzTmFOKHBhcnNlRmxvYXQoYSkpKSYmKG9bc109YSkpO3JldHVybiBvfXZhciBzPVsiYWRkIiwicmVtb3ZlIiwidG9nZ2xlIl0sbj17Ym9yZGVyOjEsYm9yZGVyQm90dG9tOjEsYm9yZGVyQ29sb3I6MSxib3JkZXJMZWZ0OjEsYm9yZGVyUmlnaHQ6MSxib3JkZXJUb3A6MSxib3JkZXJXaWR0aDoxLG1hcmdpbjoxLHBhZGRpbmc6MX07ZS5lYWNoKFsiYm9yZGVyTGVmdFN0eWxlIiwiYm9yZGVyUmlnaHRTdHlsZSIsImJvcmRlckJvdHRvbVN0eWxlIiwiYm9yZGVyVG9wU3R5bGUiXSxmdW5jdGlvbih0LGkpe2UuZnguc3RlcFtpXT1mdW5jdGlvbihlKXsoIm5vbmUiIT09ZS5lbmQmJiFlLnNldEF0dHJ8fDE9PT1lLnBvcyYmIWUuc2V0QXR0cikmJihwLnN0eWxlKGUuZWxlbSxpLGUuZW5kKSxlLnNldEF0dHI9ITApfX0pLGUuZm4uYWRkQmFja3x8KGUuZm4uYWRkQmFjaz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09ZT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihlKSl9KSxlLmVmZmVjdHMuYW5pbWF0ZUNsYXNzPWZ1bmN0aW9uKG4sYSxvLHIpe3ZhciBoPWUuc3BlZWQoYSxvLHIpO3JldHVybiB0aGlzLnF1ZXVlKGZ1bmN0aW9uKCl7dmFyIGEsbz1lKHRoaXMpLHI9by5hdHRyKCJjbGFzcyIpfHwiIixsPWguY2hpbGRyZW4/by5maW5kKCIqIikuYWRkQmFjaygpOm87bD1sLm1hcChmdW5jdGlvbigpe3ZhciBpPWUodGhpcyk7cmV0dXJue2VsOmksc3RhcnQ6dCh0aGlzKX19KSxhPWZ1bmN0aW9uKCl7ZS5lYWNoKHMsZnVuY3Rpb24oZSx0KXtuW3RdJiZvW3QrIkNsYXNzIl0oblt0XSl9KX0sYSgpLGw9bC5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmQ9dCh0aGlzLmVsWzBdKSx0aGlzLmRpZmY9aSh0aGlzLnN0YXJ0LHRoaXMuZW5kKSx0aGlzfSksby5hdHRyKCJjbGFzcyIsciksbD1sLm1hcChmdW5jdGlvbigpe3ZhciB0PXRoaXMsaT1lLkRlZmVycmVkKCkscz1lLmV4dGVuZCh7fSxoLHtxdWV1ZTohMSxjb21wbGV0ZTpmdW5jdGlvbigpe2kucmVzb2x2ZSh0KX19KTtyZXR1cm4gdGhpcy5lbC5hbmltYXRlKHRoaXMuZGlmZixzKSxpLnByb21pc2UoKX0pLGUud2hlbi5hcHBseShlLGwuZ2V0KCkpLmRvbmUoZnVuY3Rpb24oKXthKCksZS5lYWNoKGFyZ3VtZW50cyxmdW5jdGlvbigpe3ZhciB0PXRoaXMuZWw7ZS5lYWNoKHRoaXMuZGlmZixmdW5jdGlvbihlKXt0LmNzcyhlLCIiKX0pfSksaC5jb21wbGV0ZS5jYWxsKG9bMF0pfSl9KX0sZS5mbi5leHRlbmQoe2FkZENsYXNzOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihpLHMsbixhKXtyZXR1cm4gcz9lLmVmZmVjdHMuYW5pbWF0ZUNsYXNzLmNhbGwodGhpcyx7YWRkOml9LHMsbixhKTp0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KGUuZm4uYWRkQ2xhc3MpLHJlbW92ZUNsYXNzOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihpLHMsbixhKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP2UuZWZmZWN0cy5hbmltYXRlQ2xhc3MuY2FsbCh0aGlzLHtyZW1vdmU6aX0scyxuLGEpOnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oZS5mbi5yZW1vdmVDbGFzcyksdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGkscyxuLGEsbyl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2Ygc3x8dm9pZCAwPT09cz9uP2UuZWZmZWN0cy5hbmltYXRlQ2xhc3MuY2FsbCh0aGlzLHM/e2FkZDppfTp7cmVtb3ZlOml9LG4sYSxvKTp0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTplLmVmZmVjdHMuYW5pbWF0ZUNsYXNzLmNhbGwodGhpcyx7dG9nZ2xlOml9LHMsbixhKX19KGUuZm4udG9nZ2xlQ2xhc3MpLHN3aXRjaENsYXNzOmZ1bmN0aW9uKHQsaSxzLG4sYSl7cmV0dXJuIGUuZWZmZWN0cy5hbmltYXRlQ2xhc3MuY2FsbCh0aGlzLHthZGQ6aSxyZW1vdmU6dH0scyxuLGEpfX0pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGkscyxuKXtyZXR1cm4gZS5pc1BsYWluT2JqZWN0KHQpJiYoaT10LHQ9dC5lZmZlY3QpLHQ9e2VmZmVjdDp0fSxudWxsPT1pJiYoaT17fSksZS5pc0Z1bmN0aW9uKGkpJiYobj1pLHM9bnVsbCxpPXt9KSwoIm51bWJlciI9PXR5cGVvZiBpfHxlLmZ4LnNwZWVkc1tpXSkmJihuPXMscz1pLGk9e30pLGUuaXNGdW5jdGlvbihzKSYmKG49cyxzPW51bGwpLGkmJmUuZXh0ZW5kKHQsaSkscz1zfHxpLmR1cmF0aW9uLHQuZHVyYXRpb249ZS5meC5vZmY/MDoibnVtYmVyIj09dHlwZW9mIHM/czpzIGluIGUuZnguc3BlZWRzP2UuZnguc3BlZWRzW3NdOmUuZnguc3BlZWRzLl9kZWZhdWx0LHQuY29tcGxldGU9bnx8aS5jb21wbGV0ZSx0fWZ1bmN0aW9uIGkodCl7cmV0dXJuIXR8fCJudW1iZXIiPT10eXBlb2YgdHx8ZS5meC5zcGVlZHNbdF0/ITA6InN0cmluZyIhPXR5cGVvZiB0fHxlLmVmZmVjdHMuZWZmZWN0W3RdP2UuaXNGdW5jdGlvbih0KT8hMDoib2JqZWN0IiE9dHlwZW9mIHR8fHQuZWZmZWN0PyExOiEwOiEwfWUuZXh0ZW5kKGUuZWZmZWN0cyx7dmVyc2lvbjoiMS4xMS40IixzYXZlOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBpPTA7dC5sZW5ndGg+aTtpKyspbnVsbCE9PXRbaV0mJmUuZGF0YShjK3RbaV0sZVswXS5zdHlsZVt0W2ldXSl9LHJlc3RvcmU6ZnVuY3Rpb24oZSx0KXt2YXIgaSxzO2ZvcihzPTA7dC5sZW5ndGg+cztzKyspbnVsbCE9PXRbc10mJihpPWUuZGF0YShjK3Rbc10pLHZvaWQgMD09PWkmJihpPSIiKSxlLmNzcyh0W3NdLGkpKX0sc2V0TW9kZTpmdW5jdGlvbihlLHQpe3JldHVybiJ0b2dnbGUiPT09dCYmKHQ9ZS5pcygiOmhpZGRlbiIpPyJzaG93IjoiaGlkZSIpLHR9LGdldEJhc2VsaW5lOmZ1bmN0aW9uKGUsdCl7dmFyIGkscztzd2l0Y2goZVswXSl7Y2FzZSJ0b3AiOmk9MDticmVhaztjYXNlIm1pZGRsZSI6aT0uNTticmVhaztjYXNlImJvdHRvbSI6aT0xO2JyZWFrO2RlZmF1bHQ6aT1lWzBdL3QuaGVpZ2h0fXN3aXRjaChlWzFdKXtjYXNlImxlZnQiOnM9MDticmVhaztjYXNlImNlbnRlciI6cz0uNTticmVhaztjYXNlInJpZ2h0IjpzPTE7YnJlYWs7ZGVmYXVsdDpzPWVbMV0vdC53aWR0aH1yZXR1cm57eDpzLHk6aX19LGNyZWF0ZVdyYXBwZXI6ZnVuY3Rpb24odCl7aWYodC5wYXJlbnQoKS5pcygiLnVpLWVmZmVjdHMtd3JhcHBlciIpKXJldHVybiB0LnBhcmVudCgpO3ZhciBpPXt3aWR0aDp0Lm91dGVyV2lkdGgoITApLGhlaWdodDp0Lm91dGVySGVpZ2h0KCEwKSwiZmxvYXQiOnQuY3NzKCJmbG9hdCIpfSxzPWUoIjxkaXY+PC9kaXY+IikuYWRkQ2xhc3MoInVpLWVmZmVjdHMtd3JhcHBlciIpLmNzcyh7Zm9udFNpemU6IjEwMCUiLGJhY2tncm91bmQ6InRyYW5zcGFyZW50Iixib3JkZXI6Im5vbmUiLG1hcmdpbjowLHBhZGRpbmc6MH0pLG49e3dpZHRoOnQud2lkdGgoKSxoZWlnaHQ6dC5oZWlnaHQoKX0sYT1kb2N1bWVudC5hY3RpdmVFbGVtZW50O3RyeXthLmlkfWNhdGNoKG8pe2E9ZG9jdW1lbnQuYm9keX1yZXR1cm4gdC53cmFwKHMpLCh0WzBdPT09YXx8ZS5jb250YWlucyh0WzBdLGEpKSYmZShhKS5mb2N1cygpLHM9dC5wYXJlbnQoKSwic3RhdGljIj09PXQuY3NzKCJwb3NpdGlvbiIpPyhzLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIn0pLHQuY3NzKHtwb3NpdGlvbjoicmVsYXRpdmUifSkpOihlLmV4dGVuZChpLHtwb3NpdGlvbjp0LmNzcygicG9zaXRpb24iKSx6SW5kZXg6dC5jc3MoInotaW5kZXgiKX0pLGUuZWFjaChbInRvcCIsImxlZnQiLCJib3R0b20iLCJyaWdodCJdLGZ1bmN0aW9uKGUscyl7aVtzXT10LmNzcyhzKSxpc05hTihwYXJzZUludChpW3NdLDEwKSkmJihpW3NdPSJhdXRvIil9KSx0LmNzcyh7cG9zaXRpb246InJlbGF0aXZlIix0b3A6MCxsZWZ0OjAscmlnaHQ6ImF1dG8iLGJvdHRvbToiYXV0byJ9KSksdC5jc3Mobikscy5jc3MoaSkuc2hvdygpfSxyZW1vdmVXcmFwcGVyOmZ1bmN0aW9uKHQpe3ZhciBpPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7cmV0dXJuIHQucGFyZW50KCkuaXMoIi51aS1lZmZlY3RzLXdyYXBwZXIiKSYmKHQucGFyZW50KCkucmVwbGFjZVdpdGgodCksKHRbMF09PT1pfHxlLmNvbnRhaW5zKHRbMF0saSkpJiZlKGkpLmZvY3VzKCkpLHR9LHNldFRyYW5zaXRpb246ZnVuY3Rpb24odCxpLHMsbil7cmV0dXJuIG49bnx8e30sZS5lYWNoKGksZnVuY3Rpb24oZSxpKXt2YXIgYT10LmNzc1VuaXQoaSk7YVswXT4wJiYobltpXT1hWzBdKnMrYVsxXSl9KSxufX0pLGUuZm4uZXh0ZW5kKHtlZmZlY3Q6ZnVuY3Rpb24oKXtmdW5jdGlvbiBpKHQpe2Z1bmN0aW9uIGkoKXtlLmlzRnVuY3Rpb24oYSkmJmEuY2FsbChuWzBdKSxlLmlzRnVuY3Rpb24odCkmJnQoKX12YXIgbj1lKHRoaXMpLGE9cy5jb21wbGV0ZSxyPXMubW9kZTsobi5pcygiOmhpZGRlbiIpPyJoaWRlIj09PXI6InNob3ciPT09cik/KG5bcl0oKSxpKCkpOm8uY2FsbChuWzBdLHMsaSl9dmFyIHM9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksbj1zLm1vZGUsYT1zLnF1ZXVlLG89ZS5lZmZlY3RzLmVmZmVjdFtzLmVmZmVjdF07cmV0dXJuIGUuZngub2ZmfHwhbz9uP3RoaXNbbl0ocy5kdXJhdGlvbixzLmNvbXBsZXRlKTp0aGlzLmVhY2goZnVuY3Rpb24oKXtzLmNvbXBsZXRlJiZzLmNvbXBsZXRlLmNhbGwodGhpcyl9KTphPT09ITE/dGhpcy5lYWNoKGkpOnRoaXMucXVldWUoYXx8ImZ4IixpKX0sc2hvdzpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24ocyl7aWYoaShzKSlyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIG49dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG4ubW9kZT0ic2hvdyIsdGhpcy5lZmZlY3QuY2FsbCh0aGlzLG4pfX0oZS5mbi5zaG93KSxoaWRlOmZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihzKXtpZihpKHMpKXJldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt2YXIgbj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gbi5tb2RlPSJoaWRlIix0aGlzLmVmZmVjdC5jYWxsKHRoaXMsbil9fShlLmZuLmhpZGUpLHRvZ2dsZTpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24ocyl7aWYoaShzKXx8ImJvb2xlYW4iPT10eXBlb2YgcylyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIG49dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG4ubW9kZT0idG9nZ2xlIix0aGlzLmVmZmVjdC5jYWxsKHRoaXMsbil9fShlLmZuLnRvZ2dsZSksY3NzVW5pdDpmdW5jdGlvbih0KXt2YXIgaT10aGlzLmNzcyh0KSxzPVtdO3JldHVybiBlLmVhY2goWyJlbSIsInB4IiwiJSIsInB0Il0sZnVuY3Rpb24oZSx0KXtpLmluZGV4T2YodCk+MCYmKHM9W3BhcnNlRmxvYXQoaSksdF0pfSksc319KX0oKSxmdW5jdGlvbigpe3ZhciB0PXt9O2UuZWFjaChbIlF1YWQiLCJDdWJpYyIsIlF1YXJ0IiwiUXVpbnQiLCJFeHBvIl0sZnVuY3Rpb24oZSxpKXt0W2ldPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnBvdyh0LGUrMil9fSksZS5leHRlbmQodCx7U2luZTpmdW5jdGlvbihlKXtyZXR1cm4gMS1NYXRoLmNvcyhlKk1hdGguUEkvMil9LENpcmM6ZnVuY3Rpb24oZSl7cmV0dXJuIDEtTWF0aC5zcXJ0KDEtZSplKX0sRWxhc3RpYzpmdW5jdGlvbihlKXtyZXR1cm4gMD09PWV8fDE9PT1lP2U6LU1hdGgucG93KDIsOCooZS0xKSkqTWF0aC5zaW4oKDgwKihlLTEpLTcuNSkqTWF0aC5QSS8xNSl9LEJhY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIGUqZSooMyplLTIpfSxCb3VuY2U6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LGk9NDsoKHQ9TWF0aC5wb3coMiwtLWkpKS0xKS8xMT5lOyk7cmV0dXJuIDEvTWF0aC5wb3coNCwzLWkpLTcuNTYyNSpNYXRoLnBvdygoMyp0LTIpLzIyLWUsMil9fSksZS5lYWNoKHQsZnVuY3Rpb24odCxpKXtlLmVhc2luZ1siZWFzZUluIit0XT1pLGUuZWFzaW5nWyJlYXNlT3V0Iit0XT1mdW5jdGlvbihlKXtyZXR1cm4gMS1pKDEtZSl9LGUuZWFzaW5nWyJlYXNlSW5PdXQiK3RdPWZ1bmN0aW9uKGUpe3JldHVybi41PmU/aSgyKmUpLzI6MS1pKC0yKmUrMikvMn19KX0oKSxlLmVmZmVjdHMsZS5lZmZlY3RzLmVmZmVjdC5ibGluZD1mdW5jdGlvbih0LGkpe3ZhciBzLG4sYSxvPWUodGhpcykscj0vdXB8ZG93bnx2ZXJ0aWNhbC8saD0vdXB8bGVmdHx2ZXJ0aWNhbHxob3Jpem9udGFsLyxsPVsicG9zaXRpb24iLCJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJoZWlnaHQiLCJ3aWR0aCJdLHU9ZS5lZmZlY3RzLnNldE1vZGUobyx0Lm1vZGV8fCJoaWRlIiksZD10LmRpcmVjdGlvbnx8InVwIixjPXIudGVzdChkKSxwPWM/ImhlaWdodCI6IndpZHRoIixmPWM/InRvcCI6ImxlZnQiLG09aC50ZXN0KGQpLGc9e30sdj0ic2hvdyI9PT11O28ucGFyZW50KCkuaXMoIi51aS1lZmZlY3RzLXdyYXBwZXIiKT9lLmVmZmVjdHMuc2F2ZShvLnBhcmVudCgpLGwpOmUuZWZmZWN0cy5zYXZlKG8sbCksby5zaG93KCkscz1lLmVmZmVjdHMuY3JlYXRlV3JhcHBlcihvKS5jc3Moe292ZXJmbG93OiJoaWRkZW4ifSksbj1zW3BdKCksYT1wYXJzZUZsb2F0KHMuY3NzKGYpKXx8MCxnW3BdPXY/bjowLG18fChvLmNzcyhjPyJib3R0b20iOiJyaWdodCIsMCkuY3NzKGM/InRvcCI6ImxlZnQiLCJhdXRvIikuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUifSksZ1tmXT12P2E6bithKSx2JiYocy5jc3MocCwwKSxtfHxzLmNzcyhmLGErbikpLHMuYW5pbWF0ZShnLHtkdXJhdGlvbjp0LmR1cmF0aW9uLGVhc2luZzp0LmVhc2luZyxxdWV1ZTohMSxjb21wbGV0ZTpmdW5jdGlvbigpeyJoaWRlIj09PXUmJm8uaGlkZSgpLGUuZWZmZWN0cy5yZXN0b3JlKG8sbCksZS5lZmZlY3RzLnJlbW92ZVdyYXBwZXIobyksaSgpCn19KX0sZS5lZmZlY3RzLmVmZmVjdC5ib3VuY2U9ZnVuY3Rpb24odCxpKXt2YXIgcyxuLGEsbz1lKHRoaXMpLHI9WyJwb3NpdGlvbiIsInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCIsImhlaWdodCIsIndpZHRoIl0saD1lLmVmZmVjdHMuc2V0TW9kZShvLHQubW9kZXx8ImVmZmVjdCIpLGw9ImhpZGUiPT09aCx1PSJzaG93Ij09PWgsZD10LmRpcmVjdGlvbnx8InVwIixjPXQuZGlzdGFuY2UscD10LnRpbWVzfHw1LGY9MipwKyh1fHxsPzE6MCksbT10LmR1cmF0aW9uL2YsZz10LmVhc2luZyx2PSJ1cCI9PT1kfHwiZG93biI9PT1kPyJ0b3AiOiJsZWZ0Iix5PSJ1cCI9PT1kfHwibGVmdCI9PT1kLGI9by5xdWV1ZSgpLF89Yi5sZW5ndGg7Zm9yKCh1fHxsKSYmci5wdXNoKCJvcGFjaXR5IiksZS5lZmZlY3RzLnNhdmUobyxyKSxvLnNob3coKSxlLmVmZmVjdHMuY3JlYXRlV3JhcHBlcihvKSxjfHwoYz1vWyJ0b3AiPT09dj8ib3V0ZXJIZWlnaHQiOiJvdXRlcldpZHRoIl0oKS8zKSx1JiYoYT17b3BhY2l0eToxfSxhW3ZdPTAsby5jc3MoIm9wYWNpdHkiLDApLmNzcyh2LHk/MiotYzoyKmMpLmFuaW1hdGUoYSxtLGcpKSxsJiYoYy89TWF0aC5wb3coMixwLTEpKSxhPXt9LGFbdl09MCxzPTA7cD5zO3MrKyluPXt9LG5bdl09KHk/Ii09IjoiKz0iKStjLG8uYW5pbWF0ZShuLG0sZykuYW5pbWF0ZShhLG0sZyksYz1sPzIqYzpjLzI7bCYmKG49e29wYWNpdHk6MH0sblt2XT0oeT8iLT0iOiIrPSIpK2Msby5hbmltYXRlKG4sbSxnKSksby5xdWV1ZShmdW5jdGlvbigpe2wmJm8uaGlkZSgpLGUuZWZmZWN0cy5yZXN0b3JlKG8sciksZS5lZmZlY3RzLnJlbW92ZVdyYXBwZXIobyksaSgpfSksXz4xJiZiLnNwbGljZS5hcHBseShiLFsxLDBdLmNvbmNhdChiLnNwbGljZShfLGYrMSkpKSxvLmRlcXVldWUoKX0sZS5lZmZlY3RzLmVmZmVjdC5jbGlwPWZ1bmN0aW9uKHQsaSl7dmFyIHMsbixhLG89ZSh0aGlzKSxyPVsicG9zaXRpb24iLCJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJoZWlnaHQiLCJ3aWR0aCJdLGg9ZS5lZmZlY3RzLnNldE1vZGUobyx0Lm1vZGV8fCJoaWRlIiksbD0ic2hvdyI9PT1oLHU9dC5kaXJlY3Rpb258fCJ2ZXJ0aWNhbCIsZD0idmVydGljYWwiPT09dSxjPWQ/ImhlaWdodCI6IndpZHRoIixwPWQ/InRvcCI6ImxlZnQiLGY9e307ZS5lZmZlY3RzLnNhdmUobyxyKSxvLnNob3coKSxzPWUuZWZmZWN0cy5jcmVhdGVXcmFwcGVyKG8pLmNzcyh7b3ZlcmZsb3c6ImhpZGRlbiJ9KSxuPSJJTUciPT09b1swXS50YWdOYW1lP3M6byxhPW5bY10oKSxsJiYobi5jc3MoYywwKSxuLmNzcyhwLGEvMikpLGZbY109bD9hOjAsZltwXT1sPzA6YS8yLG4uYW5pbWF0ZShmLHtxdWV1ZTohMSxkdXJhdGlvbjp0LmR1cmF0aW9uLGVhc2luZzp0LmVhc2luZyxjb21wbGV0ZTpmdW5jdGlvbigpe2x8fG8uaGlkZSgpLGUuZWZmZWN0cy5yZXN0b3JlKG8sciksZS5lZmZlY3RzLnJlbW92ZVdyYXBwZXIobyksaSgpfX0pfSxlLmVmZmVjdHMuZWZmZWN0LmRyb3A9ZnVuY3Rpb24odCxpKXt2YXIgcyxuPWUodGhpcyksYT1bInBvc2l0aW9uIiwidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0Iiwib3BhY2l0eSIsImhlaWdodCIsIndpZHRoIl0sbz1lLmVmZmVjdHMuc2V0TW9kZShuLHQubW9kZXx8ImhpZGUiKSxyPSJzaG93Ij09PW8saD10LmRpcmVjdGlvbnx8ImxlZnQiLGw9InVwIj09PWh8fCJkb3duIj09PWg/InRvcCI6ImxlZnQiLHU9InVwIj09PWh8fCJsZWZ0Ij09PWg/InBvcyI6Im5lZyIsZD17b3BhY2l0eTpyPzE6MH07ZS5lZmZlY3RzLnNhdmUobixhKSxuLnNob3coKSxlLmVmZmVjdHMuY3JlYXRlV3JhcHBlcihuKSxzPXQuZGlzdGFuY2V8fG5bInRvcCI9PT1sPyJvdXRlckhlaWdodCI6Im91dGVyV2lkdGgiXSghMCkvMixyJiZuLmNzcygib3BhY2l0eSIsMCkuY3NzKGwsInBvcyI9PT11Py1zOnMpLGRbbF09KHI/InBvcyI9PT11PyIrPSI6Ii09IjoicG9zIj09PXU/Ii09IjoiKz0iKStzLG4uYW5pbWF0ZShkLHtxdWV1ZTohMSxkdXJhdGlvbjp0LmR1cmF0aW9uLGVhc2luZzp0LmVhc2luZyxjb21wbGV0ZTpmdW5jdGlvbigpeyJoaWRlIj09PW8mJm4uaGlkZSgpLGUuZWZmZWN0cy5yZXN0b3JlKG4sYSksZS5lZmZlY3RzLnJlbW92ZVdyYXBwZXIobiksaSgpfX0pfSxlLmVmZmVjdHMuZWZmZWN0LmV4cGxvZGU9ZnVuY3Rpb24odCxpKXtmdW5jdGlvbiBzKCl7Yi5wdXNoKHRoaXMpLGIubGVuZ3RoPT09ZCpjJiZuKCl9ZnVuY3Rpb24gbigpe3AuY3NzKHt2aXNpYmlsaXR5OiJ2aXNpYmxlIn0pLGUoYikucmVtb3ZlKCksbXx8cC5oaWRlKCksaSgpfXZhciBhLG8scixoLGwsdSxkPXQucGllY2VzP01hdGgucm91bmQoTWF0aC5zcXJ0KHQucGllY2VzKSk6MyxjPWQscD1lKHRoaXMpLGY9ZS5lZmZlY3RzLnNldE1vZGUocCx0Lm1vZGV8fCJoaWRlIiksbT0ic2hvdyI9PT1mLGc9cC5zaG93KCkuY3NzKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIikub2Zmc2V0KCksdj1NYXRoLmNlaWwocC5vdXRlcldpZHRoKCkvYykseT1NYXRoLmNlaWwocC5vdXRlckhlaWdodCgpL2QpLGI9W107Zm9yKGE9MDtkPmE7YSsrKWZvcihoPWcudG9wK2EqeSx1PWEtKGQtMSkvMixvPTA7Yz5vO28rKylyPWcubGVmdCtvKnYsbD1vLShjLTEpLzIscC5jbG9uZSgpLmFwcGVuZFRvKCJib2R5Iikud3JhcCgiPGRpdj48L2Rpdj4iKS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToidmlzaWJsZSIsbGVmdDotbyp2LHRvcDotYSp5fSkucGFyZW50KCkuYWRkQ2xhc3MoInVpLWVmZmVjdHMtZXhwbG9kZSIpLmNzcyh7cG9zaXRpb246ImFic29sdXRlIixvdmVyZmxvdzoiaGlkZGVuIix3aWR0aDp2LGhlaWdodDp5LGxlZnQ6cisobT9sKnY6MCksdG9wOmgrKG0/dSp5OjApLG9wYWNpdHk6bT8wOjF9KS5hbmltYXRlKHtsZWZ0OnIrKG0/MDpsKnYpLHRvcDpoKyhtPzA6dSp5KSxvcGFjaXR5Om0/MTowfSx0LmR1cmF0aW9ufHw1MDAsdC5lYXNpbmcscyl9LGUuZWZmZWN0cy5lZmZlY3QuZmFkZT1mdW5jdGlvbih0LGkpe3ZhciBzPWUodGhpcyksbj1lLmVmZmVjdHMuc2V0TW9kZShzLHQubW9kZXx8InRvZ2dsZSIpO3MuYW5pbWF0ZSh7b3BhY2l0eTpufSx7cXVldWU6ITEsZHVyYXRpb246dC5kdXJhdGlvbixlYXNpbmc6dC5lYXNpbmcsY29tcGxldGU6aX0pfSxlLmVmZmVjdHMuZWZmZWN0LmZvbGQ9ZnVuY3Rpb24odCxpKXt2YXIgcyxuLGE9ZSh0aGlzKSxvPVsicG9zaXRpb24iLCJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJoZWlnaHQiLCJ3aWR0aCJdLHI9ZS5lZmZlY3RzLnNldE1vZGUoYSx0Lm1vZGV8fCJoaWRlIiksaD0ic2hvdyI9PT1yLGw9ImhpZGUiPT09cix1PXQuc2l6ZXx8MTUsZD0vKFswLTldKyklLy5leGVjKHUpLGM9ISF0Lmhvcml6Rmlyc3QscD1oIT09YyxmPXA/WyJ3aWR0aCIsImhlaWdodCJdOlsiaGVpZ2h0Iiwid2lkdGgiXSxtPXQuZHVyYXRpb24vMixnPXt9LHY9e307ZS5lZmZlY3RzLnNhdmUoYSxvKSxhLnNob3coKSxzPWUuZWZmZWN0cy5jcmVhdGVXcmFwcGVyKGEpLmNzcyh7b3ZlcmZsb3c6ImhpZGRlbiJ9KSxuPXA/W3Mud2lkdGgoKSxzLmhlaWdodCgpXTpbcy5oZWlnaHQoKSxzLndpZHRoKCldLGQmJih1PXBhcnNlSW50KGRbMV0sMTApLzEwMCpuW2w/MDoxXSksaCYmcy5jc3MoYz97aGVpZ2h0OjAsd2lkdGg6dX06e2hlaWdodDp1LHdpZHRoOjB9KSxnW2ZbMF1dPWg/blswXTp1LHZbZlsxXV09aD9uWzFdOjAscy5hbmltYXRlKGcsbSx0LmVhc2luZykuYW5pbWF0ZSh2LG0sdC5lYXNpbmcsZnVuY3Rpb24oKXtsJiZhLmhpZGUoKSxlLmVmZmVjdHMucmVzdG9yZShhLG8pLGUuZWZmZWN0cy5yZW1vdmVXcmFwcGVyKGEpLGkoKX0pfSxlLmVmZmVjdHMuZWZmZWN0LmhpZ2hsaWdodD1mdW5jdGlvbih0LGkpe3ZhciBzPWUodGhpcyksbj1bImJhY2tncm91bmRJbWFnZSIsImJhY2tncm91bmRDb2xvciIsIm9wYWNpdHkiXSxhPWUuZWZmZWN0cy5zZXRNb2RlKHMsdC5tb2RlfHwic2hvdyIpLG89e2JhY2tncm91bmRDb2xvcjpzLmNzcygiYmFja2dyb3VuZENvbG9yIil9OyJoaWRlIj09PWEmJihvLm9wYWNpdHk9MCksZS5lZmZlY3RzLnNhdmUocyxuKSxzLnNob3coKS5jc3Moe2JhY2tncm91bmRJbWFnZToibm9uZSIsYmFja2dyb3VuZENvbG9yOnQuY29sb3J8fCIjZmZmZjk5In0pLmFuaW1hdGUobyx7cXVldWU6ITEsZHVyYXRpb246dC5kdXJhdGlvbixlYXNpbmc6dC5lYXNpbmcsY29tcGxldGU6ZnVuY3Rpb24oKXsiaGlkZSI9PT1hJiZzLmhpZGUoKSxlLmVmZmVjdHMucmVzdG9yZShzLG4pLGkoKX19KX0sZS5lZmZlY3RzLmVmZmVjdC5zaXplPWZ1bmN0aW9uKHQsaSl7dmFyIHMsbixhLG89ZSh0aGlzKSxyPVsicG9zaXRpb24iLCJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJ3aWR0aCIsImhlaWdodCIsIm92ZXJmbG93Iiwib3BhY2l0eSJdLGg9WyJwb3NpdGlvbiIsInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCIsIm92ZXJmbG93Iiwib3BhY2l0eSJdLGw9WyJ3aWR0aCIsImhlaWdodCIsIm92ZXJmbG93Il0sdT1bImZvbnRTaXplIl0sZD1bImJvcmRlclRvcFdpZHRoIiwiYm9yZGVyQm90dG9tV2lkdGgiLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSJdLGM9WyJib3JkZXJMZWZ0V2lkdGgiLCJib3JkZXJSaWdodFdpZHRoIiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiXSxwPWUuZWZmZWN0cy5zZXRNb2RlKG8sdC5tb2RlfHwiZWZmZWN0IiksZj10LnJlc3RvcmV8fCJlZmZlY3QiIT09cCxtPXQuc2NhbGV8fCJib3RoIixnPXQub3JpZ2lufHxbIm1pZGRsZSIsImNlbnRlciJdLHY9by5jc3MoInBvc2l0aW9uIikseT1mP3I6aCxiPXtoZWlnaHQ6MCx3aWR0aDowLG91dGVySGVpZ2h0OjAsb3V0ZXJXaWR0aDowfTsic2hvdyI9PT1wJiZvLnNob3coKSxzPXtoZWlnaHQ6by5oZWlnaHQoKSx3aWR0aDpvLndpZHRoKCksb3V0ZXJIZWlnaHQ6by5vdXRlckhlaWdodCgpLG91dGVyV2lkdGg6by5vdXRlcldpZHRoKCl9LCJ0b2dnbGUiPT09dC5tb2RlJiYic2hvdyI9PT1wPyhvLmZyb209dC50b3x8YixvLnRvPXQuZnJvbXx8cyk6KG8uZnJvbT10LmZyb218fCgic2hvdyI9PT1wP2I6cyksby50bz10LnRvfHwoImhpZGUiPT09cD9iOnMpKSxhPXtmcm9tOnt5Om8uZnJvbS5oZWlnaHQvcy5oZWlnaHQseDpvLmZyb20ud2lkdGgvcy53aWR0aH0sdG86e3k6by50by5oZWlnaHQvcy5oZWlnaHQseDpvLnRvLndpZHRoL3Mud2lkdGh9fSwoImJveCI9PT1tfHwiYm90aCI9PT1tKSYmKGEuZnJvbS55IT09YS50by55JiYoeT15LmNvbmNhdChkKSxvLmZyb209ZS5lZmZlY3RzLnNldFRyYW5zaXRpb24obyxkLGEuZnJvbS55LG8uZnJvbSksby50bz1lLmVmZmVjdHMuc2V0VHJhbnNpdGlvbihvLGQsYS50by55LG8udG8pKSxhLmZyb20ueCE9PWEudG8ueCYmKHk9eS5jb25jYXQoYyksby5mcm9tPWUuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKG8sYyxhLmZyb20ueCxvLmZyb20pLG8udG89ZS5lZmZlY3RzLnNldFRyYW5zaXRpb24obyxjLGEudG8ueCxvLnRvKSkpLCgiY29udGVudCI9PT1tfHwiYm90aCI9PT1tKSYmYS5mcm9tLnkhPT1hLnRvLnkmJih5PXkuY29uY2F0KHUpLmNvbmNhdChsKSxvLmZyb209ZS5lZmZlY3RzLnNldFRyYW5zaXRpb24obyx1LGEuZnJvbS55LG8uZnJvbSksby50bz1lLmVmZmVjdHMuc2V0VHJhbnNpdGlvbihvLHUsYS50by55LG8udG8pKSxlLmVmZmVjdHMuc2F2ZShvLHkpLG8uc2hvdygpLGUuZWZmZWN0cy5jcmVhdGVXcmFwcGVyKG8pLG8uY3NzKCJvdmVyZmxvdyIsImhpZGRlbiIpLmNzcyhvLmZyb20pLGcmJihuPWUuZWZmZWN0cy5nZXRCYXNlbGluZShnLHMpLG8uZnJvbS50b3A9KHMub3V0ZXJIZWlnaHQtby5vdXRlckhlaWdodCgpKSpuLnksby5mcm9tLmxlZnQ9KHMub3V0ZXJXaWR0aC1vLm91dGVyV2lkdGgoKSkqbi54LG8udG8udG9wPShzLm91dGVySGVpZ2h0LW8udG8ub3V0ZXJIZWlnaHQpKm4ueSxvLnRvLmxlZnQ9KHMub3V0ZXJXaWR0aC1vLnRvLm91dGVyV2lkdGgpKm4ueCksby5jc3Moby5mcm9tKSwoImNvbnRlbnQiPT09bXx8ImJvdGgiPT09bSkmJihkPWQuY29uY2F0KFsibWFyZ2luVG9wIiwibWFyZ2luQm90dG9tIl0pLmNvbmNhdCh1KSxjPWMuY29uY2F0KFsibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0Il0pLGw9ci5jb25jYXQoZCkuY29uY2F0KGMpLG8uZmluZCgiKlt3aWR0aF0iKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9ZSh0aGlzKSxzPXtoZWlnaHQ6aS5oZWlnaHQoKSx3aWR0aDppLndpZHRoKCksb3V0ZXJIZWlnaHQ6aS5vdXRlckhlaWdodCgpLG91dGVyV2lkdGg6aS5vdXRlcldpZHRoKCl9O2YmJmUuZWZmZWN0cy5zYXZlKGksbCksaS5mcm9tPXtoZWlnaHQ6cy5oZWlnaHQqYS5mcm9tLnksd2lkdGg6cy53aWR0aCphLmZyb20ueCxvdXRlckhlaWdodDpzLm91dGVySGVpZ2h0KmEuZnJvbS55LG91dGVyV2lkdGg6cy5vdXRlcldpZHRoKmEuZnJvbS54fSxpLnRvPXtoZWlnaHQ6cy5oZWlnaHQqYS50by55LHdpZHRoOnMud2lkdGgqYS50by54LG91dGVySGVpZ2h0OnMuaGVpZ2h0KmEudG8ueSxvdXRlcldpZHRoOnMud2lkdGgqYS50by54fSxhLmZyb20ueSE9PWEudG8ueSYmKGkuZnJvbT1lLmVmZmVjdHMuc2V0VHJhbnNpdGlvbihpLGQsYS5mcm9tLnksaS5mcm9tKSxpLnRvPWUuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKGksZCxhLnRvLnksaS50bykpLGEuZnJvbS54IT09YS50by54JiYoaS5mcm9tPWUuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKGksYyxhLmZyb20ueCxpLmZyb20pLGkudG89ZS5lZmZlY3RzLnNldFRyYW5zaXRpb24oaSxjLGEudG8ueCxpLnRvKSksaS5jc3MoaS5mcm9tKSxpLmFuaW1hdGUoaS50byx0LmR1cmF0aW9uLHQuZWFzaW5nLGZ1bmN0aW9uKCl7ZiYmZS5lZmZlY3RzLnJlc3RvcmUoaSxsKX0pfSkpLG8uYW5pbWF0ZShvLnRvLHtxdWV1ZTohMSxkdXJhdGlvbjp0LmR1cmF0aW9uLGVhc2luZzp0LmVhc2luZyxjb21wbGV0ZTpmdW5jdGlvbigpezA9PT1vLnRvLm9wYWNpdHkmJm8uY3NzKCJvcGFjaXR5IixvLmZyb20ub3BhY2l0eSksImhpZGUiPT09cCYmby5oaWRlKCksZS5lZmZlY3RzLnJlc3RvcmUobyx5KSxmfHwoInN0YXRpYyI9PT12P28uY3NzKHtwb3NpdGlvbjoicmVsYXRpdmUiLHRvcDpvLnRvLnRvcCxsZWZ0Om8udG8ubGVmdH0pOmUuZWFjaChbInRvcCIsImxlZnQiXSxmdW5jdGlvbihlLHQpe28uY3NzKHQsZnVuY3Rpb24odCxpKXt2YXIgcz1wYXJzZUludChpLDEwKSxuPWU/by50by5sZWZ0Om8udG8udG9wO3JldHVybiJhdXRvIj09PWk/bisicHgiOnMrbisicHgifSl9KSksZS5lZmZlY3RzLnJlbW92ZVdyYXBwZXIobyksaSgpfX0pfSxlLmVmZmVjdHMuZWZmZWN0LnNjYWxlPWZ1bmN0aW9uKHQsaSl7dmFyIHM9ZSh0aGlzKSxuPWUuZXh0ZW5kKCEwLHt9LHQpLGE9ZS5lZmZlY3RzLnNldE1vZGUocyx0Lm1vZGV8fCJlZmZlY3QiKSxvPXBhcnNlSW50KHQucGVyY2VudCwxMCl8fCgwPT09cGFyc2VJbnQodC5wZXJjZW50LDEwKT8wOiJoaWRlIj09PWE/MDoxMDApLHI9dC5kaXJlY3Rpb258fCJib3RoIixoPXQub3JpZ2luLGw9e2hlaWdodDpzLmhlaWdodCgpLHdpZHRoOnMud2lkdGgoKSxvdXRlckhlaWdodDpzLm91dGVySGVpZ2h0KCksb3V0ZXJXaWR0aDpzLm91dGVyV2lkdGgoKX0sdT17eToiaG9yaXpvbnRhbCIhPT1yP28vMTAwOjEseDoidmVydGljYWwiIT09cj9vLzEwMDoxfTtuLmVmZmVjdD0ic2l6ZSIsbi5xdWV1ZT0hMSxuLmNvbXBsZXRlPWksImVmZmVjdCIhPT1hJiYobi5vcmlnaW49aHx8WyJtaWRkbGUiLCJjZW50ZXIiXSxuLnJlc3RvcmU9ITApLG4uZnJvbT10LmZyb218fCgic2hvdyI9PT1hP3toZWlnaHQ6MCx3aWR0aDowLG91dGVySGVpZ2h0OjAsb3V0ZXJXaWR0aDowfTpsKSxuLnRvPXtoZWlnaHQ6bC5oZWlnaHQqdS55LHdpZHRoOmwud2lkdGgqdS54LG91dGVySGVpZ2h0Omwub3V0ZXJIZWlnaHQqdS55LG91dGVyV2lkdGg6bC5vdXRlcldpZHRoKnUueH0sbi5mYWRlJiYoInNob3ciPT09YSYmKG4uZnJvbS5vcGFjaXR5PTAsbi50by5vcGFjaXR5PTEpLCJoaWRlIj09PWEmJihuLmZyb20ub3BhY2l0eT0xLG4udG8ub3BhY2l0eT0wKSkscy5lZmZlY3Qobil9LGUuZWZmZWN0cy5lZmZlY3QucHVmZj1mdW5jdGlvbih0LGkpe3ZhciBzPWUodGhpcyksbj1lLmVmZmVjdHMuc2V0TW9kZShzLHQubW9kZXx8ImhpZGUiKSxhPSJoaWRlIj09PW4sbz1wYXJzZUludCh0LnBlcmNlbnQsMTApfHwxNTAscj1vLzEwMCxoPXtoZWlnaHQ6cy5oZWlnaHQoKSx3aWR0aDpzLndpZHRoKCksb3V0ZXJIZWlnaHQ6cy5vdXRlckhlaWdodCgpLG91dGVyV2lkdGg6cy5vdXRlcldpZHRoKCl9O2UuZXh0ZW5kKHQse2VmZmVjdDoic2NhbGUiLHF1ZXVlOiExLGZhZGU6ITAsbW9kZTpuLGNvbXBsZXRlOmkscGVyY2VudDphP286MTAwLGZyb206YT9oOntoZWlnaHQ6aC5oZWlnaHQqcix3aWR0aDpoLndpZHRoKnIsb3V0ZXJIZWlnaHQ6aC5vdXRlckhlaWdodCpyLG91dGVyV2lkdGg6aC5vdXRlcldpZHRoKnJ9fSkscy5lZmZlY3QodCl9LGUuZWZmZWN0cy5lZmZlY3QucHVsc2F0ZT1mdW5jdGlvbih0LGkpe3ZhciBzLG49ZSh0aGlzKSxhPWUuZWZmZWN0cy5zZXRNb2RlKG4sdC5tb2RlfHwic2hvdyIpLG89InNob3ciPT09YSxyPSJoaWRlIj09PWEsaD1vfHwiaGlkZSI9PT1hLGw9MioodC50aW1lc3x8NSkrKGg/MTowKSx1PXQuZHVyYXRpb24vbCxkPTAsYz1uLnF1ZXVlKCkscD1jLmxlbmd0aDtmb3IoKG98fCFuLmlzKCI6dmlzaWJsZSIpKSYmKG4uY3NzKCJvcGFjaXR5IiwwKS5zaG93KCksZD0xKSxzPTE7bD5zO3MrKyluLmFuaW1hdGUoe29wYWNpdHk6ZH0sdSx0LmVhc2luZyksZD0xLWQ7bi5hbmltYXRlKHtvcGFjaXR5OmR9LHUsdC5lYXNpbmcpLG4ucXVldWUoZnVuY3Rpb24oKXtyJiZuLmhpZGUoKSxpKCl9KSxwPjEmJmMuc3BsaWNlLmFwcGx5KGMsWzEsMF0uY29uY2F0KGMuc3BsaWNlKHAsbCsxKSkpLG4uZGVxdWV1ZSgpfSxlLmVmZmVjdHMuZWZmZWN0LnNoYWtlPWZ1bmN0aW9uKHQsaSl7dmFyIHMsbj1lKHRoaXMpLGE9WyJwb3NpdGlvbiIsInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCIsImhlaWdodCIsIndpZHRoIl0sbz1lLmVmZmVjdHMuc2V0TW9kZShuLHQubW9kZXx8ImVmZmVjdCIpLHI9dC5kaXJlY3Rpb258fCJsZWZ0IixoPXQuZGlzdGFuY2V8fDIwLGw9dC50aW1lc3x8Myx1PTIqbCsxLGQ9TWF0aC5yb3VuZCh0LmR1cmF0aW9uL3UpLGM9InVwIj09PXJ8fCJkb3duIj09PXI/InRvcCI6ImxlZnQiLHA9InVwIj09PXJ8fCJsZWZ0Ij09PXIsZj17fSxtPXt9LGc9e30sdj1uLnF1ZXVlKCkseT12Lmxlbmd0aDtmb3IoZS5lZmZlY3RzLnNhdmUobixhKSxuLnNob3coKSxlLmVmZmVjdHMuY3JlYXRlV3JhcHBlcihuKSxmW2NdPShwPyItPSI6Iis9IikraCxtW2NdPShwPyIrPSI6Ii09IikrMipoLGdbY109KHA/Ii09IjoiKz0iKSsyKmgsbi5hbmltYXRlKGYsZCx0LmVhc2luZykscz0xO2w+cztzKyspbi5hbmltYXRlKG0sZCx0LmVhc2luZykuYW5pbWF0ZShnLGQsdC5lYXNpbmcpO24uYW5pbWF0ZShtLGQsdC5lYXNpbmcpLmFuaW1hdGUoZixkLzIsdC5lYXNpbmcpLnF1ZXVlKGZ1bmN0aW9uKCl7ImhpZGUiPT09byYmbi5oaWRlKCksZS5lZmZlY3RzLnJlc3RvcmUobixhKSxlLmVmZmVjdHMucmVtb3ZlV3JhcHBlcihuKSxpKCl9KSx5PjEmJnYuc3BsaWNlLmFwcGx5KHYsWzEsMF0uY29uY2F0KHYuc3BsaWNlKHksdSsxKSkpLG4uZGVxdWV1ZSgpfSxlLmVmZmVjdHMuZWZmZWN0LnNsaWRlPWZ1bmN0aW9uKHQsaSl7dmFyIHMsbj1lKHRoaXMpLGE9WyJwb3NpdGlvbiIsInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCIsIndpZHRoIiwiaGVpZ2h0Il0sbz1lLmVmZmVjdHMuc2V0TW9kZShuLHQubW9kZXx8InNob3ciKSxyPSJzaG93Ij09PW8saD10LmRpcmVjdGlvbnx8ImxlZnQiLGw9InVwIj09PWh8fCJkb3duIj09PWg/InRvcCI6ImxlZnQiLHU9InVwIj09PWh8fCJsZWZ0Ij09PWgsZD17fTtlLmVmZmVjdHMuc2F2ZShuLGEpLG4uc2hvdygpLHM9dC5kaXN0YW5jZXx8blsidG9wIj09PWw/Im91dGVySGVpZ2h0Ijoib3V0ZXJXaWR0aCJdKCEwKSxlLmVmZmVjdHMuY3JlYXRlV3JhcHBlcihuKS5jc3Moe292ZXJmbG93OiJoaWRkZW4ifSksciYmbi5jc3MobCx1P2lzTmFOKHMpPyItIitzOi1zOnMpLGRbbF09KHI/dT8iKz0iOiItPSI6dT8iLT0iOiIrPSIpK3Msbi5hbmltYXRlKGQse3F1ZXVlOiExLGR1cmF0aW9uOnQuZHVyYXRpb24sZWFzaW5nOnQuZWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7ImhpZGUiPT09byYmbi5oaWRlKCksZS5lZmZlY3RzLnJlc3RvcmUobixhKSxlLmVmZmVjdHMucmVtb3ZlV3JhcHBlcihuKSxpKCl9fSl9LGUuZWZmZWN0cy5lZmZlY3QudHJhbnNmZXI9ZnVuY3Rpb24odCxpKXt2YXIgcz1lKHRoaXMpLG49ZSh0LnRvKSxhPSJmaXhlZCI9PT1uLmNzcygicG9zaXRpb24iKSxvPWUoImJvZHkiKSxyPWE/by5zY3JvbGxUb3AoKTowLGg9YT9vLnNjcm9sbExlZnQoKTowLGw9bi5vZmZzZXQoKSx1PXt0b3A6bC50b3AtcixsZWZ0OmwubGVmdC1oLGhlaWdodDpuLmlubmVySGVpZ2h0KCksd2lkdGg6bi5pbm5lcldpZHRoKCl9LGQ9cy5vZmZzZXQoKSxjPWUoIjxkaXYgY2xhc3M9J3VpLWVmZmVjdHMtdHJhbnNmZXInPjwvZGl2PiIpLmFwcGVuZFRvKGRvY3VtZW50LmJvZHkpLmFkZENsYXNzKHQuY2xhc3NOYW1lKS5jc3Moe3RvcDpkLnRvcC1yLGxlZnQ6ZC5sZWZ0LWgsaGVpZ2h0OnMuaW5uZXJIZWlnaHQoKSx3aWR0aDpzLmlubmVyV2lkdGgoKSxwb3NpdGlvbjphPyJmaXhlZCI6ImFic29sdXRlIn0pLmFuaW1hdGUodSx0LmR1cmF0aW9uLHQuZWFzaW5nLGZ1bmN0aW9uKCl7Yy5yZW1vdmUoKSxpKCl9KX19KTs="></script>
<link href="data:text/css,%0A%0A%2Etocify%20%7B%0Awidth%3A%2020%25%3B%0Amax%2Dheight%3A%2090%25%3B%0Aoverflow%3A%20auto%3B%0Amargin%2Dleft%3A%202%25%3B%0Aposition%3A%20fixed%3B%0Aborder%3A%201px%20solid%20%23ccc%3B%0Aborder%2Dradius%3A%206px%3B%0A%7D%0A%0A%2Etocify%20ul%2C%20%2Etocify%20li%20%7B%0Alist%2Dstyle%3A%20none%3B%0Amargin%3A%200%3B%0Apadding%3A%200%3B%0Aborder%3A%20none%3B%0Aline%2Dheight%3A%2030px%3B%0A%7D%0A%0A%2Etocify%2Dheader%20%7B%0Atext%2Dindent%3A%2010px%3B%0A%7D%0A%0A%2Etocify%2Dsubheader%20%7B%0Atext%2Dindent%3A%2020px%3B%0Adisplay%3A%20none%3B%0A%7D%0A%0A%2Etocify%2Dsubheader%20li%20%7B%0Afont%2Dsize%3A%2012px%3B%0A%7D%0A%0A%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%7B%0Atext%2Dindent%3A%2030px%3B%0A%7D%0A%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%7B%0Atext%2Dindent%3A%2040px%3B%0A%7D%0A%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%7B%0Atext%2Dindent%3A%2050px%3B%0A%7D%0A%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%7B%0Atext%2Dindent%3A%2060px%3B%0A%7D%0A%0A%2Etocify%20%2Etocify%2Ditem%20%3E%20a%2C%20%2Etocify%20%2Enav%2Dlist%20%2Enav%2Dheader%20%7B%0Amargin%3A%200px%3B%0A%7D%0A%0A%2Etocify%20%2Etocify%2Ditem%20a%2C%20%2Etocify%20%2Elist%2Dgroup%2Ditem%20%7B%0Apadding%3A%205px%3B%0A%7D%0A%2Etocify%20%2Enav%2Dpills%20%3E%20li%20%7B%0Afloat%3A%20none%3B%0A%7D%0A%0A%0A" rel="stylesheet" />
<script src="data:application/javascript;base64,LyoganF1ZXJ5IFRvY2lmeSAtIHYxLjkuMSAtIDIwMTMtMTAtMjIKICogaHR0cDovL3d3dy5ncmVnZnJhbmtvLmNvbS9qcXVlcnkudG9jaWZ5LmpzLwogKiBDb3B5cmlnaHQgKGMpIDIwMTMgR3JlZyBGcmFua287IExpY2Vuc2VkIE1JVCAqLwoKLy8gSW1tZWRpYXRlbHktSW52b2tlZCBGdW5jdGlvbiBFeHByZXNzaW9uIChJSUZFKSBbQmVuIEFsbWFuIEJsb2cgUG9zdF0oaHR0cDovL2JlbmFsbWFuLmNvbS9uZXdzLzIwMTAvMTEvaW1tZWRpYXRlbHktaW52b2tlZC1mdW5jdGlvbi1leHByZXNzaW9uLykgdGhhdCBjYWxscyBhbm90aGVyIElJRkUgdGhhdCBjb250YWlucyBhbGwgb2YgdGhlIHBsdWdpbiBsb2dpYy4gIEkgdXNlZCB0aGlzIHBhdHRlcm4gc28gdGhhdCBhbnlvbmUgdmlld2luZyB0aGlzIGNvZGUgd291bGQgbm90IGhhdmUgdG8gc2Nyb2xsIHRvIHRoZSBib3R0b20gb2YgdGhlIHBhZ2UgdG8gdmlldyB0aGUgbG9jYWwgcGFyYW1ldGVycyB0aGF0IHdlcmUgcGFzc2VkIHRvIHRoZSBtYWluIElJRkUuCihmdW5jdGlvbih0b2NpZnkpIHsKCiAgICAvLyBFQ01BU2NyaXB0IDUgU3RyaWN0IE1vZGU6IFtKb2huIFJlc2lnIEJsb2cgUG9zdF0oaHR0cDovL2Vqb2huLm9yZy9ibG9nL2VjbWFzY3JpcHQtNS1zdHJpY3QtbW9kZS1qc29uLWFuZC1tb3JlLykKICAgICJ1c2Ugc3RyaWN0IjsKCiAgICAvLyBDYWxscyB0aGUgc2Vjb25kIElJRkUgYW5kIGxvY2FsbHkgcGFzc2VzIGluIHRoZSBnbG9iYWwgalF1ZXJ5LCB3aW5kb3csIGFuZCBkb2N1bWVudCBvYmplY3RzCiAgICB0b2NpZnkod2luZG93LmpRdWVyeSwgd2luZG93LCBkb2N1bWVudCk7CgogIH0KCiAgLy8gTG9jYWxseSBwYXNzZXMgaW4gYGpRdWVyeWAsIHRoZSBgd2luZG93YCBvYmplY3QsIHRoZSBgZG9jdW1lbnRgIG9iamVjdCwgYW5kIGFuIGB1bmRlZmluZWRgIHZhcmlhYmxlLiAgVGhlIGBqUXVlcnlgLCBgd2luZG93YCBhbmQgYGRvY3VtZW50YCBvYmplY3RzIGFyZSBwYXNzZWQgaW4gbG9jYWxseSwgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZSwgc2luY2UgamF2YXNjcmlwdCBmaXJzdCBzZWFyY2hlcyBmb3IgYSB2YXJpYWJsZSBtYXRjaCB3aXRoaW4gdGhlIGxvY2FsIHZhcmlhYmxlcyBzZXQgYmVmb3JlIHNlYXJjaGluZyB0aGUgZ2xvYmFsIHZhcmlhYmxlcyBzZXQuICBBbGwgb2YgdGhlIGdsb2JhbCB2YXJpYWJsZXMgYXJlIGFsc28gcGFzc2VkIGluIGxvY2FsbHkgdG8gYmUgbWluaWZpZXIgZnJpZW5kbHkuIGB1bmRlZmluZWRgIGNhbiBiZSBwYXNzZWQgaW4gbG9jYWxseSwgYmVjYXVzZSBpdCBpcyBub3QgYSByZXNlcnZlZCB3b3JkIGluIEphdmFTY3JpcHQuCiAgKGZ1bmN0aW9uKCQsIHdpbmRvdywgZG9jdW1lbnQsIHVuZGVmaW5lZCkgewoKICAgIC8vIEVDTUFTY3JpcHQgNSBTdHJpY3QgTW9kZTogW0pvaG4gUmVzaWcgQmxvZyBQb3N0XShodHRwOi8vZWpvaG4ub3JnL2Jsb2cvZWNtYXNjcmlwdC01LXN0cmljdC1tb2RlLWpzb24tYW5kLW1vcmUvKQogICAgInVzZSBzdHJpY3QiOwoKICAgIHZhciB0b2NDbGFzc05hbWUgPSAidG9jaWZ5IiwKICAgICAgdG9jQ2xhc3MgPSAiLiIgKyB0b2NDbGFzc05hbWUsCiAgICAgIHRvY0ZvY3VzQ2xhc3NOYW1lID0gInRvY2lmeS1mb2N1cyIsCiAgICAgIHRvY0hvdmVyQ2xhc3NOYW1lID0gInRvY2lmeS1ob3ZlciIsCiAgICAgIGhpZGVUb2NDbGFzc05hbWUgPSAidG9jaWZ5LWhpZGUiLAogICAgICBoaWRlVG9jQ2xhc3MgPSAiLiIgKyBoaWRlVG9jQ2xhc3NOYW1lLAogICAgICBoZWFkZXJDbGFzc05hbWUgPSAidG9jaWZ5LWhlYWRlciIsCiAgICAgIGhlYWRlckNsYXNzID0gIi4iICsgaGVhZGVyQ2xhc3NOYW1lLAogICAgICBzdWJoZWFkZXJDbGFzc05hbWUgPSAidG9jaWZ5LXN1YmhlYWRlciIsCiAgICAgIHN1YmhlYWRlckNsYXNzID0gIi4iICsgc3ViaGVhZGVyQ2xhc3NOYW1lLAogICAgICBpdGVtQ2xhc3NOYW1lID0gInRvY2lmeS1pdGVtIiwKICAgICAgaXRlbUNsYXNzID0gIi4iICsgaXRlbUNsYXNzTmFtZSwKICAgICAgZXh0ZW5kUGFnZUNsYXNzTmFtZSA9ICJ0b2NpZnktZXh0ZW5kLXBhZ2UiLAogICAgICBleHRlbmRQYWdlQ2xhc3MgPSAiLiIgKyBleHRlbmRQYWdlQ2xhc3NOYW1lOwoKICAgIC8vIENhbGxpbmcgdGhlIGpRdWVyeVVJIFdpZGdldCBGYWN0b3J5IE1ldGhvZAogICAgJC53aWRnZXQoInRvYy50b2NpZnkiLCB7CgogICAgICAvL1BsdWdpbiB2ZXJzaW9uCiAgICAgIHZlcnNpb246ICIxLjkuMSIsCgogICAgICAvLyBUaGVzZSBvcHRpb25zIHdpbGwgYmUgdXNlZCBhcyBkZWZhdWx0cwogICAgICBvcHRpb25zOiB7CgogICAgICAgIC8vICoqY29udGV4dCoqOiBBY2NlcHRzIFN0cmluZzogQW55IGpRdWVyeSBzZWxlY3RvcgogICAgICAgIC8vIFRoZSBjb250YWluZXIgZWxlbWVudCB0aGF0IGhvbGRzIGFsbCBvZiB0aGUgZWxlbWVudHMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgdGFibGUgb2YgY29udGVudHMKICAgICAgICBjb250ZXh0OiAiYm9keSIsCgogICAgICAgIC8vICoqaWdub3JlU2VsZWN0b3IqKjogQWNjZXB0cyBTdHJpbmc6IEFueSBqUXVlcnkgc2VsZWN0b3IKICAgICAgICAvLyBBIHNlbGVjdG9yIHRvIGFueSBlbGVtZW50IHRoYXQgd291bGQgYmUgbWF0Y2hlZCBieSBzZWxlY3RvcnMgdGhhdCB5b3Ugd2lzaCB0byBiZSBpZ25vcmVkCiAgICAgICAgaWdub3JlU2VsZWN0b3I6IG51bGwsCgogICAgICAgIC8vICoqc2VsZWN0b3JzKio6IEFjY2VwdHMgYW4gQXJyYXkgb2YgU3RyaW5nczogQW55IGpRdWVyeSBzZWxlY3RvcnMKICAgICAgICAvLyBUaGUgZWxlbWVudCdzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHRhYmxlIG9mIGNvbnRlbnRzLiAgVGhlIG9yZGVyIGlzIHZlcnkgaW1wb3J0YW50IHNpbmNlIGl0IHdpbGwgZGV0ZXJtaW5lIHRoZSB0YWJsZSBvZiBjb250ZW50J3MgbmVzdGluZyBzdHJ1Y3R1cmUKICAgICAgICBzZWxlY3RvcnM6ICJoMSwgaDIsIGgzIiwKCiAgICAgICAgLy8gKipzaG93QW5kSGlkZSoqOiBBY2NlcHRzIGEgYm9vbGVhbjogdHJ1ZSBvciBmYWxzZQogICAgICAgIC8vIFVzZWQgdG8gZGV0ZXJtaW5lIGlmIGVsZW1lbnRzIHNob3VsZCBiZSBzaG93biBhbmQgaGlkZGVuCiAgICAgICAgc2hvd0FuZEhpZGU6IHRydWUsCgogICAgICAgIC8vICoqc2hvd0VmZmVjdCoqOiBBY2NlcHRzIFN0cmluZzogIm5vbmUiLCAiZmFkZUluIiwgInNob3ciLCBvciAic2xpZGVEb3duIgogICAgICAgIC8vIFVzZWQgdG8gZGlzcGxheSBhbnkgb2YgdGhlIHRhYmxlIG9mIGNvbnRlbnRzIG5lc3RlZCBpdGVtcwogICAgICAgIHNob3dFZmZlY3Q6ICJzbGlkZURvd24iLAoKICAgICAgICAvLyAqKnNob3dFZmZlY3RTcGVlZCoqOiBBY2NlcHRzIE51bWJlciAobWlsbGlzZWNvbmRzKSBvciBTdHJpbmc6ICJzbG93IiwgIm1lZGl1bSIsIG9yICJmYXN0IgogICAgICAgIC8vIFRoZSB0aW1lIGR1cmF0aW9uIG9mIHRoZSBzaG93IGFuaW1hdGlvbgogICAgICAgIHNob3dFZmZlY3RTcGVlZDogIm1lZGl1bSIsCgogICAgICAgIC8vICoqaGlkZUVmZmVjdCoqOiBBY2NlcHRzIFN0cmluZzogIm5vbmUiLCAiZmFkZU91dCIsICJoaWRlIiwgb3IgInNsaWRlVXAiCiAgICAgICAgLy8gVXNlZCB0byBoaWRlIGFueSBvZiB0aGUgdGFibGUgb2YgY29udGVudHMgbmVzdGVkIGl0ZW1zCiAgICAgICAgaGlkZUVmZmVjdDogInNsaWRlVXAiLAoKICAgICAgICAvLyAqKmhpZGVFZmZlY3RTcGVlZCoqOiBBY2NlcHRzIE51bWJlciAobWlsbGlzZWNvbmRzKSBvciBTdHJpbmc6ICJzbG93IiwgIm1lZGl1bSIsIG9yICJmYXN0IgogICAgICAgIC8vIFRoZSB0aW1lIGR1cmF0aW9uIG9mIHRoZSBoaWRlIGFuaW1hdGlvbgogICAgICAgIGhpZGVFZmZlY3RTcGVlZDogIm1lZGl1bSIsCgogICAgICAgIC8vICoqc21vb3RoU2Nyb2xsKio6IEFjY2VwdHMgYSBib29sZWFuOiB0cnVlIG9yIGZhbHNlCiAgICAgICAgLy8gRGV0ZXJtaW5lcyBpZiBhIGpRdWVyeSBhbmltYXRpb24gc2hvdWxkIGJlIHVzZWQgdG8gc2Nyb2xsIHRvIHNwZWNpZmljIHRhYmxlIG9mIGNvbnRlbnRzIGl0ZW1zIG9uIHRoZSBwYWdlCiAgICAgICAgc21vb3RoU2Nyb2xsOiB0cnVlLAoKICAgICAgICAvLyAqKnNtb290aFNjcm9sbFNwZWVkKio6IEFjY2VwdHMgTnVtYmVyIChtaWxsaXNlY29uZHMpIG9yIFN0cmluZzogInNsb3ciLCAibWVkaXVtIiwgb3IgImZhc3QiCiAgICAgICAgLy8gVGhlIHRpbWUgZHVyYXRpb24gb2YgdGhlIHNtb290aFNjcm9sbCBhbmltYXRpb24KICAgICAgICBzbW9vdGhTY3JvbGxTcGVlZDogIm1lZGl1bSIsCgogICAgICAgIC8vICoqc2Nyb2xsVG8qKjogQWNjZXB0cyBOdW1iZXIgKHBpeGVscykKICAgICAgICAvLyBUaGUgYW1vdW50IG9mIHNwYWNlIGJldHdlZW4gdGhlIHRvcCBvZiBwYWdlIGFuZCB0aGUgc2VsZWN0ZWQgdGFibGUgb2YgY29udGVudHMgaXRlbSBhZnRlciB0aGUgcGFnZSBoYXMgYmVlbiBzY3JvbGxlZAogICAgICAgIHNjcm9sbFRvOiAwLAoKICAgICAgICAvLyAqKnNob3dBbmRIaWRlT25TY3JvbGwqKjogQWNjZXB0cyBhIGJvb2xlYW46IHRydWUgb3IgZmFsc2UKICAgICAgICAvLyBEZXRlcm1pbmVzIGlmIHRhYmxlIG9mIGNvbnRlbnRzIG5lc3RlZCBpdGVtcyBzaG91bGQgYmUgc2hvd24gYW5kIGhpZGRlbiB3aGlsZSBzY3JvbGxpbmcKICAgICAgICBzaG93QW5kSGlkZU9uU2Nyb2xsOiB0cnVlLAoKICAgICAgICAvLyAqKmhpZ2hsaWdodE9uU2Nyb2xsKio6IEFjY2VwdHMgYSBib29sZWFuOiB0cnVlIG9yIGZhbHNlCiAgICAgICAgLy8gRGV0ZXJtaW5lcyBpZiB0YWJsZSBvZiBjb250ZW50cyBuZXN0ZWQgaXRlbXMgc2hvdWxkIGJlIGhpZ2hsaWdodGVkIChzZXQgdG8gYSBkaWZmZXJlbnQgY29sb3IpIHdoaWxlIHNjcm9sbGluZwogICAgICAgIGhpZ2hsaWdodE9uU2Nyb2xsOiB0cnVlLAoKICAgICAgICAvLyAqKmhpZ2hsaWdodE9mZnNldCoqOiBBY2NlcHRzIGEgbnVtYmVyCiAgICAgICAgLy8gVGhlIG9mZnNldCBkaXN0YW5jZSBpbiBwaXhlbHMgdG8gdHJpZ2dlciB0aGUgbmV4dCBhY3RpdmUgdGFibGUgb2YgY29udGVudHMgaXRlbQogICAgICAgIGhpZ2hsaWdodE9mZnNldDogNDAsCgogICAgICAgIC8vICoqdGhlbWUqKjogQWNjZXB0cyBhIHN0cmluZzogImJvb3RzdHJhcCIsICJqcXVlcnl1aSIsIG9yICJub25lIgogICAgICAgIC8vIERldGVybWluZXMgaWYgVHdpdHRlciBCb290c3RyYXAsIGpRdWVyeVVJLCBvciBUb2NpZnkgY2xhc3NlcyBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIHRhYmxlIG9mIGNvbnRlbnRzCiAgICAgICAgdGhlbWU6ICJib290c3RyYXAiLAoKICAgICAgICAvLyAqKmV4dGVuZFBhZ2UqKjogQWNjZXB0cyBhIGJvb2xlYW46IHRydWUgb3IgZmFsc2UKICAgICAgICAvLyBJZiBhIHVzZXIgc2Nyb2xscyB0byB0aGUgYm90dG9tIG9mIHRoZSBwYWdlIGFuZCB0aGUgcGFnZSBpcyBub3QgdGFsbCBlbm91Z2ggdG8gc2Nyb2xsIHRvIHRoZSBsYXN0IHRhYmxlIG9mIGNvbnRlbnRzIGl0ZW0sIHRoZW4gdGhlIHBhZ2UgaGVpZ2h0IGlzIGluY3JlYXNlZAogICAgICAgIGV4dGVuZFBhZ2U6IHRydWUsCgogICAgICAgIC8vICoqZXh0ZW5kUGFnZU9mZnNldCoqOiBBY2NlcHRzIGEgbnVtYmVyOiBwaXhlbHMKICAgICAgICAvLyBIb3cgY2xvc2UgdG8gdGhlIGJvdHRvbSBvZiB0aGUgcGFnZSBhIHVzZXIgbXVzdCBzY3JvbGwgYmVmb3JlIHRoZSBwYWdlIGlzIGV4dGVuZGVkCiAgICAgICAgZXh0ZW5kUGFnZU9mZnNldDogMTAwLAoKICAgICAgICAvLyAqKmhpc3RvcnkqKjogQWNjZXB0cyBhIGJvb2xlYW46IHRydWUgb3IgZmFsc2UKICAgICAgICAvLyBBZGRzIGEgaGFzaCB0byB0aGUgcGFnZSB1cmwgdG8gbWFpbnRhaW4gaGlzdG9yeQogICAgICAgIGhpc3Rvcnk6IHRydWUsCgogICAgICAgIC8vICoqc2Nyb2xsSGlzdG9yeSoqOiBBY2NlcHRzIGEgYm9vbGVhbjogdHJ1ZSBvciBmYWxzZQogICAgICAgIC8vIEFkZHMgYSBoYXNoIHRvIHRoZSBwYWdlIHVybCwgdG8gbWFpbnRhaW4gaGlzdG9yeSwgd2hlbiBzY3JvbGxpbmcgdG8gYSBUT0MgaXRlbQogICAgICAgIHNjcm9sbEhpc3Rvcnk6IGZhbHNlLAoKICAgICAgICAvLyAqKmhhc2hHZW5lcmF0b3IqKjogSG93IHRoZSBoYXNoIHZhbHVlICh0aGUgYW5jaG9yIHNlZ21lbnQgb2YgdGhlIFVSTCwgZm9sbG93aW5nIHRoZQogICAgICAgIC8vICMgY2hhcmFjdGVyKSB3aWxsIGJlIGdlbmVyYXRlZC4KICAgICAgICAvLwogICAgICAgIC8vICJjb21wYWN0IiAoZGVmYXVsdCkgLSAjQ29tcHJlc3Nlc0V2ZXJ5dGhpbmdUb2dldGhlcgogICAgICAgIC8vICJwcmV0dHkiIC0gI2xvb2tzLWxpa2UtYS1uaWNlLXVybC1hbmQtaXMtZWFzaWx5LXJlYWRhYmxlCiAgICAgICAgLy8gZnVuY3Rpb24odGV4dCwgZWxlbWVudCl7fSAtIFlvdXIgb3duIGhhc2ggZ2VuZXJhdGlvbiBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdGhlIHRleHQgYXMgYW4KICAgICAgICAvLyBhcmd1bWVudCwgYW5kIHJldHVybnMgdGhlIGhhc2ggdmFsdWUuCiAgICAgICAgaGFzaEdlbmVyYXRvcjogImNvbXBhY3QiLAoKICAgICAgICAvLyAqKmhpZ2hsaWdodERlZmF1bHQqKjogQWNjZXB0cyBhIGJvb2xlYW46IHRydWUgb3IgZmFsc2UKICAgICAgICAvLyBTZXQncyB0aGUgZmlyc3QgVE9DIGl0ZW0gYXMgYWN0aXZlIGlmIG5vIG90aGVyIFRPQyBpdGVtIGlzIGFjdGl2ZS4KICAgICAgICBoaWdobGlnaHREZWZhdWx0OiB0cnVlCgogICAgICB9LAoKICAgICAgLy8gX0NyZWF0ZQogICAgICAvLyAtLS0tLS0tCiAgICAgIC8vICAgICAgQ29uc3RydWN0cyB0aGUgcGx1Z2luLiAgT25seSBjYWxsZWQgb25jZS4KICAgICAgX2NyZWF0ZTogZnVuY3Rpb24oKSB7CgogICAgICAgIHZhciBzZWxmID0gdGhpczsKCiAgICAgICAgc2VsZi5leHRlbmRQYWdlU2Nyb2xsID0gdHJ1ZTsKCiAgICAgICAgLy8gSW50ZXJuYWwgYXJyYXkgdGhhdCBrZWVwcyB0cmFjayBvZiBhbGwgVE9DIGl0ZW1zIChIZWxwcyB0byByZWNvZ25pemUgaWYgdGhlcmUgYXJlIGR1cGxpY2F0ZSBUT0MgaXRlbSBzdHJpbmdzKQogICAgICAgIHNlbGYuaXRlbXMgPSBbXTsKCiAgICAgICAgLy8gR2VuZXJhdGVzIHRoZSBIVE1MIGZvciB0aGUgZHluYW1pYyB0YWJsZSBvZiBjb250ZW50cwogICAgICAgIHNlbGYuX2dlbmVyYXRlVG9jKCk7CgogICAgICAgIC8vIEFkZHMgQ1NTIGNsYXNzZXMgdG8gdGhlIG5ld2x5IGdlbmVyYXRlZCB0YWJsZSBvZiBjb250ZW50cyBIVE1MCiAgICAgICAgc2VsZi5fYWRkQ1NTQ2xhc3NlcygpOwoKICAgICAgICBzZWxmLndlYmtpdCA9IChmdW5jdGlvbigpIHsKCiAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIHdpbmRvdykgewoKICAgICAgICAgICAgaWYgKHByb3ApIHsKCiAgICAgICAgICAgICAgaWYgKHByb3AudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJ3ZWJraXQiKSAhPT0gLTEpIHsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKCiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgICAgIH0oKSk7CgogICAgICAgIC8vIEFkZHMgalF1ZXJ5IGV2ZW50IGhhbmRsZXJzIHRvIHRoZSBuZXdseSBnZW5lcmF0ZWQgdGFibGUgb2YgY29udGVudHMKICAgICAgICBzZWxmLl9zZXRFdmVudEhhbmRsZXJzKCk7CgogICAgICAgIC8vIEJpbmRpbmcgdG8gdGhlIFdpbmRvdyBsb2FkIGV2ZW50IHRvIG1ha2Ugc3VyZSB0aGUgY29ycmVjdCBzY3JvbGxUb3AgaXMgY2FsY3VsYXRlZAogICAgICAgICQod2luZG93KS5vbigibG9hZCIsIGZ1bmN0aW9uKCkgewoKICAgICAgICAgIC8vIFNldHMgdGhlIGFjdGl2ZSBUT0MgaXRlbQogICAgICAgICAgc2VsZi5fc2V0QWN0aXZlRWxlbWVudCh0cnVlKTsKCiAgICAgICAgICAvLyBPbmNlIGFsbCBhbmltYXRpb25zIG9uIHRoZSBwYWdlIGFyZSBjb21wbGV0ZSwgdGhpcyBjYWxsYmFjayBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZAogICAgICAgICAgJCgiaHRtbCwgYm9keSIpLnByb21pc2UoKS5kb25lKGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgc2VsZi5leHRlbmRQYWdlU2Nyb2xsID0gZmFsc2U7CgogICAgICAgICAgICB9LCAwKTsKCiAgICAgICAgICB9KTsKCiAgICAgICAgfSk7CgogICAgICB9LAoKICAgICAgLy8gX2dlbmVyYXRlVG9jCiAgICAgIC8vIC0tLS0tLS0tLS0tLQogICAgICAvLyAgICAgIEdlbmVyYXRlcyB0aGUgSFRNTCBmb3IgdGhlIGR5bmFtaWMgdGFibGUgb2YgY29udGVudHMKICAgICAgX2dlbmVyYXRlVG9jOiBmdW5jdGlvbigpIHsKCiAgICAgICAgLy8gX0xvY2FsIHZhcmlhYmxlc18KCiAgICAgICAgLy8gU3RvcmVzIHRoZSBwbHVnaW4gY29udGV4dCBpbiB0aGUgc2VsZiB2YXJpYWJsZQogICAgICAgIHZhciBzZWxmID0gdGhpcywKCiAgICAgICAgICAvLyBBbGwgb2YgdGhlIEhUTUwgdGFncyBmb3VuZCB3aXRoaW4gdGhlIGNvbnRleHQgcHJvdmlkZWQgKGkuZS4gYm9keSkgdGhhdCBtYXRjaCB0aGUgdG9wIGxldmVsIGpRdWVyeSBzZWxlY3RvciBhYm92ZQogICAgICAgICAgZmlyc3RFbGVtLAoKICAgICAgICAgIC8vIEluc3RhbnRpYXRlZCB2YXJpYWJsZSB0aGF0IHdpbGwgc3RvcmUgdGhlIHRvcCBsZXZlbCBuZXdseSBjcmVhdGVkIHVub3JkZXJlZCBsaXN0IERPTSBlbGVtZW50CiAgICAgICAgICB1bCwKICAgICAgICAgIGlnbm9yZVNlbGVjdG9yID0gc2VsZi5vcHRpb25zLmlnbm9yZVNlbGVjdG9yOwoKCiAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBlbGVtZW50IHRvIHN0YXJ0IHRoZSB0b2Mgd2l0aAogICAgICAgIC8vIGdldCBhbGwgdGhlIHRvcCBsZXZlbCBzZWxlY3RvcnMKICAgICAgICBmaXJzdEVsZW0gPSBbXTsKICAgICAgICB2YXIgc2VsZWN0b3JzID0gdGhpcy5vcHRpb25zLnNlbGVjdG9ycy5yZXBsYWNlKC8gL2csICIiKS5zcGxpdCgiLCIpOwogICAgICAgIC8vIGZpbmQgdGhlIGZpcnN0IHNldCB0aGF0IGhhdmUgYXQgbGVhc3Qgb25lIG5vbi1pZ25vcmVkIGVsZW1lbnQKICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2VsZWN0b3JzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB2YXIgZm91bmRTZWxlY3RvcnMgPSAkKHRoaXMub3B0aW9ucy5jb250ZXh0KS5maW5kKHNlbGVjdG9yc1tpXSk7CiAgICAgICAgICBmb3IgKHZhciBzID0gMDsgcyA8IGZvdW5kU2VsZWN0b3JzLmxlbmd0aDsgcysrKSB7CiAgICAgICAgICAgIGlmICghJChmb3VuZFNlbGVjdG9yc1tzXSkuaXMoaWdub3JlU2VsZWN0b3IpKSB7CiAgICAgICAgICAgICAgZmlyc3RFbGVtID0gZm91bmRTZWxlY3RvcnM7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChmaXJzdEVsZW0ubGVuZ3RoPiAwKQogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIGlmICghZmlyc3RFbGVtLmxlbmd0aCkgewoKICAgICAgICAgIHNlbGYuZWxlbWVudC5hZGRDbGFzcyhoaWRlVG9jQ2xhc3NOYW1lKTsKCiAgICAgICAgICByZXR1cm47CgogICAgICAgIH0KCiAgICAgICAgc2VsZi5lbGVtZW50LmFkZENsYXNzKHRvY0NsYXNzTmFtZSk7CgogICAgICAgIC8vIExvb3BzIHRocm91Z2ggZWFjaCB0b3AgbGV2ZWwgc2VsZWN0b3IKICAgICAgICBmaXJzdEVsZW0uZWFjaChmdW5jdGlvbihpbmRleCkgewoKICAgICAgICAgIC8vSWYgdGhlIGVsZW1lbnQgbWF0Y2hlcyB0aGUgaWdub3JlU2VsZWN0b3IgdGhlbiB3ZSBza2lwIGl0CiAgICAgICAgICBpZiAoJCh0aGlzKS5pcyhpZ25vcmVTZWxlY3RvcikpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIENyZWF0ZXMgYW4gdW5vcmRlcmVkIGxpc3QgSFRNTCBlbGVtZW50IGFuZCBhZGRzIGEgZHluYW1pYyBJRCBhbmQgc3RhbmRhcmQgY2xhc3MgbmFtZQogICAgICAgICAgdWwgPSAkKCI8dWwvPiIsIHsKICAgICAgICAgICAgImlkIjogaGVhZGVyQ2xhc3NOYW1lICsgaW5kZXgsCiAgICAgICAgICAgICJjbGFzcyI6IGhlYWRlckNsYXNzTmFtZQogICAgICAgICAgfSkuCgogICAgICAgICAgLy8gQXBwZW5kcyBhIHRvcCBsZXZlbCBsaXN0IGl0ZW0gSFRNTCBlbGVtZW50IHRvIHRoZSBwcmV2aW91c2x5IGNyZWF0ZWQgSFRNTCBoZWFkZXIKICAgICAgICAgIGFwcGVuZChzZWxmLl9uZXN0RWxlbWVudHMoJCh0aGlzKSwgaW5kZXgpKTsKCiAgICAgICAgICAvLyBBZGQgdGhlIGNyZWF0ZWQgdW5vcmRlcmVkIGxpc3QgZWxlbWVudCB0byB0aGUgSFRNTCBlbGVtZW50IGNhbGxpbmcgdGhlIHBsdWdpbgogICAgICAgICAgc2VsZi5lbGVtZW50LmFwcGVuZCh1bCk7CgogICAgICAgICAgLy8gRmluZHMgYWxsIG9mIHRoZSBIVE1MIHRhZ3MgYmV0d2VlbiB0aGUgaGVhZGVyIGFuZCBzdWJoZWFkZXIgZWxlbWVudHMKICAgICAgICAgICQodGhpcykubmV4dFVudGlsKHRoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkuZWFjaChmdW5jdGlvbigpIHsKCiAgICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBubyBuZXN0ZWQgc3ViaGVhZGVyIGVsZW1lbWVudHMKICAgICAgICAgICAgaWYgKCQodGhpcykuZmluZChzZWxmLm9wdGlvbnMuc2VsZWN0b3JzKS5sZW5ndGggPT09IDApIHsKCiAgICAgICAgICAgICAgLy8gTG9vcHMgdGhyb3VnaCBhbGwgb2YgdGhlIHN1YmhlYWRlciBlbGVtZW50cwogICAgICAgICAgICAgICQodGhpcykuZmlsdGVyKHNlbGYub3B0aW9ucy5zZWxlY3RvcnMpLmVhY2goZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAgICAgLy9JZiB0aGUgZWxlbWVudCBtYXRjaGVzIHRoZSBpZ25vcmVTZWxlY3RvciB0aGVuIHdlIHNraXAgaXQKICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmlzKGlnbm9yZVNlbGVjdG9yKSkgewogICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgc2VsZi5fYXBwZW5kU3ViaGVhZGVycy5jYWxsKHRoaXMsIHNlbGYsIHVsKTsKCiAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbmVzdGVkIHN1YmhlYWRlciBlbGVtZW50cwogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgLy8gTG9vcHMgdGhyb3VnaCBhbGwgb2YgdGhlIHN1YmhlYWRlciBlbGVtZW50cwogICAgICAgICAgICAgICQodGhpcykuZmluZChzZWxmLm9wdGlvbnMuc2VsZWN0b3JzKS5lYWNoKGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgICAgIC8vSWYgdGhlIGVsZW1lbnQgbWF0Y2hlcyB0aGUgaWdub3JlU2VsZWN0b3IgdGhlbiB3ZSBza2lwIGl0CiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5pcyhpZ25vcmVTZWxlY3RvcikpIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHNlbGYuX2FwcGVuZFN1YmhlYWRlcnMuY2FsbCh0aGlzLCBzZWxmLCB1bCk7CgogICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgfQoKICAgICAgICAgIH0pOwoKICAgICAgICB9KTsKCiAgICAgIH0sCgogICAgICBfc2V0QWN0aXZlRWxlbWVudDogZnVuY3Rpb24ocGFnZWxvYWQpIHsKCiAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAoKICAgICAgICAgIGhhc2ggPSB3aW5kb3cubG9jYXRpb24uaGFzaC5zdWJzdHJpbmcoMSksCgogICAgICAgICAgZWxlbSA9IHNlbGYuZWxlbWVudC5maW5kKCdsaVtkYXRhLXVuaXF1ZT0iJyArIGhhc2ggKyAnIl0nKTsKCiAgICAgICAgaWYgKGhhc2gubGVuZ3RoKSB7CgogICAgICAgICAgLy8gUmVtb3ZlcyBoaWdobGlnaHRpbmcgZnJvbSBhbGwgb2YgdGhlIGxpc3QgaXRlbSdzCiAgICAgICAgICBzZWxmLmVsZW1lbnQuZmluZCgiLiIgKyBzZWxmLmZvY3VzQ2xhc3MpLnJlbW92ZUNsYXNzKHNlbGYuZm9jdXNDbGFzcyk7CgogICAgICAgICAgLy8gSGlnaGxpZ2h0cyB0aGUgY3VycmVudCBsaXN0IGl0ZW0gdGhhdCB3YXMgY2xpY2tlZAogICAgICAgICAgZWxlbS5hZGRDbGFzcyhzZWxmLmZvY3VzQ2xhc3MpOwoKICAgICAgICAgIC8vIFRyaWdnZXJzIHRoZSBjbGljayBldmVudCBvbiB0aGUgY3VycmVudGx5IGZvY3VzZWQgVE9DIGl0ZW0KICAgICAgICAgIGVsZW0uY2xpY2soKTsKCiAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAvLyBSZW1vdmVzIGhpZ2hsaWdodGluZyBmcm9tIGFsbCBvZiB0aGUgbGlzdCBpdGVtJ3MKICAgICAgICAgIHNlbGYuZWxlbWVudC5maW5kKCIuIiArIHNlbGYuZm9jdXNDbGFzcykucmVtb3ZlQ2xhc3Moc2VsZi5mb2N1c0NsYXNzKTsKCiAgICAgICAgICBpZiAoIWhhc2gubGVuZ3RoICYmIHBhZ2Vsb2FkICYmIHNlbGYub3B0aW9ucy5oaWdobGlnaHREZWZhdWx0KSB7CgogICAgICAgICAgICAvLyBIaWdobGlnaHRzIHRoZSBmaXJzdCBUT0MgaXRlbSBpZiBubyBvdGhlciBpdGVtcyBhcmUgaGlnaGxpZ2h0ZWQKICAgICAgICAgICAgc2VsZi5lbGVtZW50LmZpbmQoaXRlbUNsYXNzKS5maXJzdCgpLmFkZENsYXNzKHNlbGYuZm9jdXNDbGFzcyk7CgogICAgICAgICAgfQoKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOwoKICAgICAgfSwKCiAgICAgIC8vIF9uZXN0RWxlbWVudHMKICAgICAgLy8gLS0tLS0tLS0tLS0tLQogICAgICAvLyAgICAgIEhlbHBzIGNyZWF0ZSB0aGUgdGFibGUgb2YgY29udGVudHMgbGlzdCBieSBhcHBlbmRpbmcgbmVzdGVkIGxpc3QgaXRlbXMKICAgICAgX25lc3RFbGVtZW50czogZnVuY3Rpb24oc2VsZiwgaW5kZXgpIHsKCiAgICAgICAgdmFyIGFyciwgaXRlbSwgaGFzaFZhbHVlOwoKICAgICAgICBhcnIgPSAkLmdyZXAodGhpcy5pdGVtcywgZnVuY3Rpb24oaXRlbSkgewoKICAgICAgICAgIHJldHVybiBpdGVtID09PSBzZWxmLnRleHQoKTsKCiAgICAgICAgfSk7CgogICAgICAgIC8vIElmIHRoZXJlIGlzIGFscmVhZHkgYSBkdXBsaWNhdGUgVE9DIGl0ZW0KICAgICAgICBpZiAoYXJyLmxlbmd0aCkgewoKICAgICAgICAgIC8vIEFkZHMgdGhlIGN1cnJlbnQgVE9DIGl0ZW0gdGV4dCBhbmQgaW5kZXggKGZvciBzbGlnaHQgcmFuZG9taXphdGlvbikgdG8gdGhlIGludGVybmFsIGFycmF5CiAgICAgICAgICB0aGlzLml0ZW1zLnB1c2goc2VsZi50ZXh0KCkgKyBpbmRleCk7CgogICAgICAgIH0KCiAgICAgICAgLy8gSWYgdGhlcmUgbm90IGEgZHVwbGljYXRlIFRPQyBpdGVtCiAgICAgICAgZWxzZSB7CgogICAgICAgICAgLy8gQWRkcyB0aGUgY3VycmVudCBUT0MgaXRlbSB0ZXh0IHRvIHRoZSBpbnRlcm5hbCBhcnJheQogICAgICAgICAgdGhpcy5pdGVtcy5wdXNoKHNlbGYudGV4dCgpKTsKCiAgICAgICAgfQoKICAgICAgICBoYXNoVmFsdWUgPSB0aGlzLl9nZW5lcmF0ZUhhc2hWYWx1ZShhcnIsIHNlbGYsIGluZGV4KTsKCiAgICAgICAgLy8gQXBwZW5kcyBhIGxpc3QgaXRlbSBIVE1MIGVsZW1lbnQgdG8gdGhlIGxhc3QgdW5vcmRlcmVkIGxpc3QgSFRNTCBlbGVtZW50IGZvdW5kIHdpdGhpbiB0aGUgSFRNTCBlbGVtZW50IGNhbGxpbmcgdGhlIHBsdWdpbgogICAgICAgIGl0ZW0gPSAkKCI8bGkvPiIsIHsKCiAgICAgICAgICAvLyBTZXRzIGEgY29tbW9uIGNsYXNzIG5hbWUgdG8gdGhlIGxpc3QgaXRlbQogICAgICAgICAgImNsYXNzIjogaXRlbUNsYXNzTmFtZSwKCiAgICAgICAgICAiZGF0YS11bmlxdWUiOiBoYXNoVmFsdWUKCiAgICAgICAgfSk7CgogICAgICAgIGlmICh0aGlzLm9wdGlvbnMudGhlbWUgIT09ICJib290c3RyYXAzIikgewoKICAgICAgICAgIGl0ZW0uYXBwZW5kKCQoIjxhLz4iLCB7CgogICAgICAgICAgICAiaHRtbCI6IHNlbGYuaHRtbCgpCgogICAgICAgICAgfSkpOwoKICAgICAgICB9IGVsc2UgewoKICAgICAgICAgIGl0ZW0uaHRtbChzZWxmLmh0bWwoKSk7CgogICAgICAgIH0KCiAgICAgICAgLy8gQWRkcyBhbiBIVE1MIGFuY2hvciB0YWcgYmVmb3JlIHRoZSBjdXJyZW50bHkgdHJhdmVyc2VkIEhUTUwgZWxlbWVudAogICAgICAgIHNlbGYuYmVmb3JlKCQoIjxkaXYvPiIsIHsKCiAgICAgICAgICAvLyBTZXRzIGEgbmFtZSBhdHRyaWJ1dGUgb24gdGhlIGFuY2hvciB0YWcgdG8gdGhlIHRleHQgb2YgdGhlIGN1cnJlbnRseSB0cmF2ZXJzZWQgSFRNTCBlbGVtZW50IChhbHNvIG1ha2luZyBzdXJlIHRoYXQgYWxsIHdoaXRlc3BhY2UgaXMgcmVwbGFjZWQgd2l0aCBhbiB1bmRlcnNjb3JlKQogICAgICAgICAgIm5hbWUiOiBoYXNoVmFsdWUsCgogICAgICAgICAgImRhdGEtdW5pcXVlIjogaGFzaFZhbHVlCgogICAgICAgIH0pKTsKCiAgICAgICAgcmV0dXJuIGl0ZW07CgogICAgICB9LAoKICAgICAgLy8gX2dlbmVyYXRlSGFzaFZhbHVlCiAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAvLyAgICAgIEdlbmVyYXRlcyB0aGUgaGFzaCB2YWx1ZSB0aGF0IHdpbGwgYmUgdXNlZCB0byByZWZlciB0byBlYWNoIGl0ZW0uCiAgICAgIF9nZW5lcmF0ZUhhc2hWYWx1ZTogZnVuY3Rpb24oYXJyLCBzZWxmLCBpbmRleCkgewoKICAgICAgICB2YXIgaGFzaFZhbHVlID0gIiIsCiAgICAgICAgICBoYXNoR2VuZXJhdG9yT3B0aW9uID0gdGhpcy5vcHRpb25zLmhhc2hHZW5lcmF0b3I7CgogICAgICAgIGlmIChoYXNoR2VuZXJhdG9yT3B0aW9uID09PSAicHJldHR5IikgewoKICAgICAgICAgIC8vIHByZXR0aWZ5IHRoZSB0ZXh0CiAgICAgICAgICBoYXNoVmFsdWUgPSBzZWxmLnRleHQoKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xzL2csICItIik7CgogICAgICAgICAgLy8gZml4IGRvdWJsZSBoeXBoZW5zCiAgICAgICAgICB3aGlsZSAoaGFzaFZhbHVlLmluZGV4T2YoIi0tIikgPiAtMSkgewogICAgICAgICAgICBoYXNoVmFsdWUgPSBoYXNoVmFsdWUucmVwbGFjZSgvLS0vZywgIi0iKTsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyBmaXggY29sb24tc3BhY2UgaW5zdGFuY2VzCiAgICAgICAgICB3aGlsZSAoaGFzaFZhbHVlLmluZGV4T2YoIjotIikgPiAtMSkgewogICAgICAgICAgICBoYXNoVmFsdWUgPSBoYXNoVmFsdWUucmVwbGFjZSgvOi0vZywgIi0iKTsKICAgICAgICAgIH0KCiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaGFzaEdlbmVyYXRvck9wdGlvbiA9PT0gImZ1bmN0aW9uIikgewoKICAgICAgICAgIC8vIGNhbGwgdGhlIGZ1bmN0aW9uCiAgICAgICAgICBoYXNoVmFsdWUgPSBoYXNoR2VuZXJhdG9yT3B0aW9uKHNlbGYudGV4dCgpLCBzZWxmKTsKCiAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAvLyBjb21wYWN0IC0gdGhlIGRlZmF1bHQKICAgICAgICAgIGhhc2hWYWx1ZSA9IHNlbGYudGV4dCgpLnJlcGxhY2UoL1xzL2csICIiKTsKCiAgICAgICAgfQoKICAgICAgICAvLyBhZGQgdGhlIGluZGV4IGlmIHdlIG5lZWQgdG8KICAgICAgICBpZiAoYXJyLmxlbmd0aCkgewogICAgICAgICAgaGFzaFZhbHVlICs9ICIiICsgaW5kZXg7CiAgICAgICAgfQoKICAgICAgICAvLyByZXR1cm4gdGhlIHZhbHVlCiAgICAgICAgcmV0dXJuIGhhc2hWYWx1ZTsKCiAgICAgIH0sCgogICAgICAvLyBfYXBwZW5kRWxlbWVudHMKICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tCiAgICAgIC8vICAgICAgSGVscHMgY3JlYXRlIHRoZSB0YWJsZSBvZiBjb250ZW50cyBsaXN0IGJ5IGFwcGVuZGluZyBzdWJoZWFkZXIgZWxlbWVudHMKCiAgICAgIF9hcHBlbmRTdWJoZWFkZXJzOiBmdW5jdGlvbihzZWxmLCB1bCkgewoKICAgICAgICAvLyBUaGUgY3VycmVudCBlbGVtZW50IGluZGV4CiAgICAgICAgdmFyIGluZGV4ID0gJCh0aGlzKS5pbmRleChzZWxmLm9wdGlvbnMuc2VsZWN0b3JzKSwKCiAgICAgICAgICAvLyBGaW5kcyB0aGUgcHJldmlvdXMgaGVhZGVyIERPTSBlbGVtZW50CiAgICAgICAgICBwcmV2aW91c0hlYWRlciA9ICQoc2VsZi5vcHRpb25zLnNlbGVjdG9ycykuZXEoaW5kZXggLSAxKSwKCiAgICAgICAgICBjdXJyZW50VGFnTmFtZSA9ICskKHRoaXMpLnByb3AoInRhZ05hbWUiKS5jaGFyQXQoMSksCgogICAgICAgICAgcHJldmlvdXNUYWdOYW1lID0gK3ByZXZpb3VzSGVhZGVyLnByb3AoInRhZ05hbWUiKS5jaGFyQXQoMSksCgogICAgICAgICAgbGFzdFN1YmhlYWRlcjsKCiAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgaGVhZGVyIERPTSBlbGVtZW50IGlzIHNtYWxsZXIgdGhhbiB0aGUgcHJldmlvdXMgaGVhZGVyIERPTSBlbGVtZW50IG9yIHRoZSBmaXJzdCBzdWJoZWFkZXIKICAgICAgICBpZiAoY3VycmVudFRhZ05hbWUgPCBwcmV2aW91c1RhZ05hbWUpIHsKCiAgICAgICAgICAvLyBTZWxlY3RzIHRoZSBsYXN0IHVub3JkZXJlZCBsaXN0IEhUTUwgZm91bmQgd2l0aGluIHRoZSBIVE1MIGVsZW1lbnQgY2FsbGluZyB0aGUgcGx1Z2luCiAgICAgICAgICBzZWxmLmVsZW1lbnQuZmluZChzdWJoZWFkZXJDbGFzcyArICJbZGF0YS10YWc9IiArIGN1cnJlbnRUYWdOYW1lICsgIl0iKS5sYXN0KCkuYXBwZW5kKHNlbGYuX25lc3RFbGVtZW50cygkKHRoaXMpLCBpbmRleCkpOwoKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGhlYWRlciBET00gZWxlbWVudCBpcyB0aGUgc2FtZSB0eXBlIG9mIGhlYWRlcihlZy4gaDQpIGFzIHRoZSBwcmV2aW91cyBoZWFkZXIgRE9NIGVsZW1lbnQKICAgICAgICBlbHNlIGlmIChjdXJyZW50VGFnTmFtZSA9PT0gcHJldmlvdXNUYWdOYW1lKSB7CgogICAgICAgICAgdWwuZmluZChpdGVtQ2xhc3MpLmxhc3QoKS5hZnRlcihzZWxmLl9uZXN0RWxlbWVudHMoJCh0aGlzKSwgaW5kZXgpKTsKCiAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAvLyBTZWxlY3RzIHRoZSBsYXN0IHVub3JkZXJlZCBsaXN0IEhUTUwgZm91bmQgd2l0aGluIHRoZSBIVE1MIGVsZW1lbnQgY2FsbGluZyB0aGUgcGx1Z2luCiAgICAgICAgICB1bC5maW5kKGl0ZW1DbGFzcykubGFzdCgpLgoKICAgICAgICAgIC8vIEFwcGVuZHMgYW4gdW5vcmRlcmVkTGlzdCBIVE1MIGVsZW1lbnQgdG8gdGhlIGR5bmFtaWMgYHVub3JkZXJlZExpc3RgIHZhcmlhYmxlIGFuZCBzZXRzIGEgY29tbW9uIGNsYXNzIG5hbWUKICAgICAgICAgIGFmdGVyKCQoIjx1bC8+IiwgewoKICAgICAgICAgICAgImNsYXNzIjogc3ViaGVhZGVyQ2xhc3NOYW1lLAoKICAgICAgICAgICAgImRhdGEtdGFnIjogY3VycmVudFRhZ05hbWUKCiAgICAgICAgICB9KSkubmV4dChzdWJoZWFkZXJDbGFzcykuCgogICAgICAgICAgLy8gQXBwZW5kcyBhIGxpc3QgaXRlbSBIVE1MIGVsZW1lbnQgdG8gdGhlIGxhc3QgdW5vcmRlcmVkIGxpc3QgSFRNTCBlbGVtZW50IGZvdW5kIHdpdGhpbiB0aGUgSFRNTCBlbGVtZW50IGNhbGxpbmcgdGhlIHBsdWdpbgogICAgICAgICAgYXBwZW5kKHNlbGYuX25lc3RFbGVtZW50cygkKHRoaXMpLCBpbmRleCkpOwogICAgICAgIH0KCiAgICAgIH0sCgogICAgICAvLyBfc2V0RXZlbnRIYW5kbGVycwogICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tCiAgICAgIC8vICAgICAgQWRkcyBqUXVlcnkgZXZlbnQgaGFuZGxlcnMgdG8gdGhlIG5ld2x5IGdlbmVyYXRlZCB0YWJsZSBvZiBjb250ZW50cwogICAgICBfc2V0RXZlbnRIYW5kbGVyczogZnVuY3Rpb24oKSB7CgogICAgICAgIC8vIF9Mb2NhbCB2YXJpYWJsZXNfCgogICAgICAgIC8vIFN0b3JlcyB0aGUgcGx1Z2luIGNvbnRleHQgaW4gdGhlIHNlbGYgdmFyaWFibGUKICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCgogICAgICAgICAgLy8gSW5zdGFudGlhdGVzIGEgbmV3IHZhcmlhYmxlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGhvbGQgYSBzcGVjaWZpYyBlbGVtZW50J3MgY29udGV4dAogICAgICAgICAgJHNlbGYsCgogICAgICAgICAgLy8gSW5zdGFudGlhdGVzIGEgbmV3IHZhcmlhYmxlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgc21vb3RoU2Nyb2xsIGFuaW1hdGlvbiB0aW1lIGR1cmF0aW9uCiAgICAgICAgICBkdXJhdGlvbjsKCiAgICAgICAgLy8gRXZlbnQgZGVsZWdhdGlvbiB0aGF0IGxvb2tzIGZvciBhbnkgY2xpY2tzIG9uIGxpc3QgaXRlbSBlbGVtZW50cyBpbnNpZGUgb2YgdGhlIEhUTUwgZWxlbWVudCBjYWxsaW5nIHRoZSBwbHVnaW4KICAgICAgICB0aGlzLmVsZW1lbnQub24oImNsaWNrLnRvY2lmeSIsICJsaSIsIGZ1bmN0aW9uKGV2ZW50KSB7CgogICAgICAgICAgaWYgKHNlbGYub3B0aW9ucy5oaXN0b3J5KSB7CgogICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaGFzaCA9ICQodGhpcykuYXR0cigiZGF0YS11bmlxdWUiKTsKCiAgICAgICAgICB9CgogICAgICAgICAgLy8gUmVtb3ZlcyBoaWdobGlnaHRpbmcgZnJvbSBhbGwgb2YgdGhlIGxpc3QgaXRlbSdzCiAgICAgICAgICBzZWxmLmVsZW1lbnQuZmluZCgiLiIgKyBzZWxmLmZvY3VzQ2xhc3MpLnJlbW92ZUNsYXNzKHNlbGYuZm9jdXNDbGFzcyk7CgogICAgICAgICAgLy8gSGlnaGxpZ2h0cyB0aGUgY3VycmVudCBsaXN0IGl0ZW0gdGhhdCB3YXMgY2xpY2tlZAogICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcyhzZWxmLmZvY3VzQ2xhc3MpOwoKICAgICAgICAgIC8vIElmIHRoZSBzaG93QW5kSGlkZSBvcHRpb24gaXMgdHJ1ZQogICAgICAgICAgaWYgKHNlbGYub3B0aW9ucy5zaG93QW5kSGlkZSkgewoKICAgICAgICAgICAgdmFyIGVsZW0gPSAkKCdsaVtkYXRhLXVuaXF1ZT0iJyArICQodGhpcykuYXR0cigiZGF0YS11bmlxdWUiKSArICciXScpOwoKICAgICAgICAgICAgc2VsZi5fdHJpZ2dlclNob3coZWxlbSk7CgogICAgICAgICAgfQoKICAgICAgICAgIHNlbGYuX3Njcm9sbFRvKCQodGhpcykpOwoKICAgICAgICB9KTsKCiAgICAgICAgLy8gTW91c2VlbnRlciBhbmQgTW91c2VsZWF2ZSBldmVudCBoYW5kbGVycyBmb3IgdGhlIGxpc3QgaXRlbSdzIHdpdGhpbiB0aGUgSFRNTCBlbGVtZW50IGNhbGxpbmcgdGhlIHBsdWdpbgogICAgICAgIHRoaXMuZWxlbWVudC5maW5kKCJsaSIpLm9uKHsKCiAgICAgICAgICAvLyBNb3VzZWVudGVyIGV2ZW50IGhhbmRsZXIKICAgICAgICAgICJtb3VzZWVudGVyLnRvY2lmeSI6IGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgLy8gQWRkcyBhIGhvdmVyIENTUyBjbGFzcyB0byB0aGUgY3VycmVudCBsaXN0IGl0ZW0KICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcyhzZWxmLmhvdmVyQ2xhc3MpOwoKICAgICAgICAgICAgLy8gTWFrZXMgc3VyZSB0aGUgY3Vyc29yIGlzIHNldCB0byB0aGUgcG9pbnRlciBpY29uCiAgICAgICAgICAgICQodGhpcykuY3NzKCJjdXJzb3IiLCAicG9pbnRlciIpOwoKICAgICAgICAgIH0sCgogICAgICAgICAgLy8gTW91c2VsZWF2ZSBldmVudCBoYW5kbGVyCiAgICAgICAgICAibW91c2VsZWF2ZS50b2NpZnkiOiBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgIGlmIChzZWxmLm9wdGlvbnMudGhlbWUgIT09ICJib290c3RyYXAiKSB7CgogICAgICAgICAgICAgIC8vIFJlbW92ZXMgdGhlIGhvdmVyIENTUyBjbGFzcyBmcm9tIHRoZSBjdXJyZW50IGxpc3QgaXRlbQogICAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3Moc2VsZi5ob3ZlckNsYXNzKTsKCiAgICAgICAgICAgIH0KCiAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIC8vIG9ubHkgYXR0YWNoIGhhbmRsZXIgaWYgbmVlZGVkIChleHBlbnNpdmUgaW4gSUUpCiAgICAgICAgaWYgKHNlbGYub3B0aW9ucy5leHRlbmRQYWdlIHx8IHNlbGYub3B0aW9ucy5oaWdobGlnaHRPblNjcm9sbCB8fCBzZWxmLm9wdGlvbnMuc2Nyb2xsSGlzdG9yeSB8fCBzZWxmLm9wdGlvbnMuc2hvd0FuZEhpZGVPblNjcm9sbCkgewogICAgICAgICAgLy8gV2luZG93IHNjcm9sbCBldmVudCBoYW5kbGVyCiAgICAgICAgICAkKHdpbmRvdykub24oInNjcm9sbC50b2NpZnkiLCBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgIC8vIE9uY2UgYWxsIGFuaW1hdGlvbnMgb24gdGhlIHBhZ2UgYXJlIGNvbXBsZXRlLCB0aGlzIGNhbGxiYWNrIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkCiAgICAgICAgICAgICQoImh0bWwsIGJvZHkiKS5wcm9taXNlKCkuZG9uZShmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgLy8gTG9jYWwgdmFyaWFibGVzCgogICAgICAgICAgICAgIC8vIFN0b3JlcyBob3cgZmFyIHRoZSB1c2VyIGhhcyBzY3JvbGxlZAogICAgICAgICAgICAgIHZhciB3aW5TY3JvbGxUb3AgPSAkKHdpbmRvdykuc2Nyb2xsVG9wKCksCgogICAgICAgICAgICAgICAgLy8gU3RvcmVzIHRoZSBoZWlnaHQgb2YgdGhlIHdpbmRvdwogICAgICAgICAgICAgICAgd2luSGVpZ2h0ID0gJCh3aW5kb3cpLmhlaWdodCgpLAoKICAgICAgICAgICAgICAgIC8vIFN0b3JlcyB0aGUgaGVpZ2h0IG9mIHRoZSBkb2N1bWVudAogICAgICAgICAgICAgICAgZG9jSGVpZ2h0ID0gJChkb2N1bWVudCkuaGVpZ2h0KCksCgogICAgICAgICAgICAgICAgc2Nyb2xsSGVpZ2h0ID0gJCgiYm9keSIpWzBdLnNjcm9sbEhlaWdodCwKCiAgICAgICAgICAgICAgICAvLyBJbnN0YW50aWF0ZXMgYSB2YXJpYWJsZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBob2xkIGEgc2VsZWN0ZWQgSFRNTCBlbGVtZW50CiAgICAgICAgICAgICAgICBlbGVtLAoKICAgICAgICAgICAgICAgIGxhc3RFbGVtLAoKICAgICAgICAgICAgICAgIGxhc3RFbGVtT2Zmc2V0LAoKICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtOwoKICAgICAgICAgICAgICBpZiAoc2VsZi5vcHRpb25zLmV4dGVuZFBhZ2UpIHsKCiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgdXNlciBoYXMgc2Nyb2xsZWQgdG8gdGhlIGJvdHRvbSBvZiB0aGUgcGFnZSBhbmQgdGhlIGxhc3QgdG9jIGl0ZW0gaXMgbm90IGZvY3VzZWQKICAgICAgICAgICAgICAgIGlmICgoc2VsZi53ZWJraXQgJiYgd2luU2Nyb2xsVG9wID49IHNjcm9sbEhlaWdodCAtIHdpbkhlaWdodCAtIHNlbGYub3B0aW9ucy5leHRlbmRQYWdlT2Zmc2V0KSB8fCAoIXNlbGYud2Via2l0ICYmIHdpbkhlaWdodCArIHdpblNjcm9sbFRvcCA+IGRvY0hlaWdodCAtIHNlbGYub3B0aW9ucy5leHRlbmRQYWdlT2Zmc2V0KSkgewoKICAgICAgICAgICAgICAgICAgaWYgKCEkKGV4dGVuZFBhZ2VDbGFzcykubGVuZ3RoKSB7CgogICAgICAgICAgICAgICAgICAgIGxhc3RFbGVtID0gJCgnZGl2W2RhdGEtdW5pcXVlPSInICsgJChpdGVtQ2xhc3MpLmxhc3QoKS5hdHRyKCJkYXRhLXVuaXF1ZSIpICsgJyJdJyk7CgogICAgICAgICAgICAgICAgICAgIGlmICghbGFzdEVsZW0ubGVuZ3RoKSByZXR1cm47CgogICAgICAgICAgICAgICAgICAgIC8vIEdldHMgdGhlIHRvcCBvZmZzZXQgb2YgdGhlIHBhZ2UgaGVhZGVyIHRoYXQgaXMgbGlua2VkIHRvIHRoZSBsYXN0IHRvYyBpdGVtCiAgICAgICAgICAgICAgICAgICAgbGFzdEVsZW1PZmZzZXQgPSBsYXN0RWxlbS5vZmZzZXQoKS50b3A7CgogICAgICAgICAgICAgICAgICAgIC8vIEFwcGVuZHMgYSBkaXYgdG8gdGhlIGJvdHRvbSBvZiB0aGUgcGFnZSBhbmQgc2V0cyB0aGUgaGVpZ2h0IHRvIHRoZSBkaWZmZXJlbmNlIG9mIHRoZSB3aW5kb3cgc2Nyb2xsVG9wIGFuZCB0aGUgbGFzdCBlbGVtZW50J3MgcG9zaXRpb24gdG9wIG9mZnNldAogICAgICAgICAgICAgICAgICAgICQoc2VsZi5vcHRpb25zLmNvbnRleHQpLmFwcGVuZCgkKCI8ZGl2Lz4iLCB7CgogICAgICAgICAgICAgICAgICAgICAgImNsYXNzIjogZXh0ZW5kUGFnZUNsYXNzTmFtZSwKCiAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogTWF0aC5hYnMobGFzdEVsZW1PZmZzZXQgLSB3aW5TY3JvbGxUb3ApICsgInB4IiwKCiAgICAgICAgICAgICAgICAgICAgICAiZGF0YS11bmlxdWUiOiBleHRlbmRQYWdlQ2xhc3NOYW1lCgogICAgICAgICAgICAgICAgICAgIH0pKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuZXh0ZW5kUGFnZVNjcm9sbCkgewoKICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtID0gc2VsZi5lbGVtZW50LmZpbmQoJ2xpLicgKyBzZWxmLmZvY3VzQ2xhc3MpOwoKICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Njcm9sbFRvKCQoJ2RpdltkYXRhLXVuaXF1ZT0iJyArIGN1cnJlbnRFbGVtLmF0dHIoImRhdGEtdW5pcXVlIikgKyAnIl0nKSk7CgogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgLy8gVGhlIHplcm8gdGltZW91dCBlbnN1cmVzIHRoZSBmb2xsb3dpbmcgY29kZSBpcyBydW4gYWZ0ZXIgdGhlIHNjcm9sbCBldmVudHMKICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgICAgIC8vIF9Mb2NhbCB2YXJpYWJsZXNfCgogICAgICAgICAgICAgICAgLy8gU3RvcmVzIHRoZSBkaXN0YW5jZSB0byB0aGUgY2xvc2VzdCBhbmNob3IKICAgICAgICAgICAgICAgIHZhciBjbG9zZXN0QW5jaG9yRGlzdGFuY2UgPSBudWxsLAoKICAgICAgICAgICAgICAgICAgLy8gU3RvcmVzIHRoZSBpbmRleCBvZiB0aGUgY2xvc2VzdCBhbmNob3IKICAgICAgICAgICAgICAgICAgY2xvc2VzdEFuY2hvcklkeCA9IG51bGwsCgogICAgICAgICAgICAgICAgICAvLyBLZWVwcyBhIHJlZmVyZW5jZSB0byBhbGwgYW5jaG9ycwogICAgICAgICAgICAgICAgICBhbmNob3JzID0gJChzZWxmLm9wdGlvbnMuY29udGV4dCkuZmluZCgiZGl2W2RhdGEtdW5pcXVlXSIpLAoKICAgICAgICAgICAgICAgICAgYW5jaG9yVGV4dDsKCiAgICAgICAgICAgICAgICAvLyBEZXRlcm1pbmVzIHRoZSBpbmRleCBvZiB0aGUgY2xvc2VzdCBhbmNob3IKICAgICAgICAgICAgICAgIGFuY2hvcnMuZWFjaChmdW5jdGlvbihpZHgpIHsKICAgICAgICAgICAgICAgICAgdmFyIGRpc3RhbmNlID0gTWF0aC5hYnMoKCQodGhpcykubmV4dCgpLmxlbmd0aCA/ICQodGhpcykubmV4dCgpIDogJCh0aGlzKSkub2Zmc2V0KCkudG9wIC0gd2luU2Nyb2xsVG9wIC0gc2VsZi5vcHRpb25zLmhpZ2hsaWdodE9mZnNldCk7CiAgICAgICAgICAgICAgICAgIGlmIChjbG9zZXN0QW5jaG9yRGlzdGFuY2UgPT0gbnVsbCB8fCBkaXN0YW5jZSA8IGNsb3Nlc3RBbmNob3JEaXN0YW5jZSkgewogICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RBbmNob3JEaXN0YW5jZSA9IGRpc3RhbmNlOwogICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RBbmNob3JJZHggPSBpZHg7CiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICBhbmNob3JUZXh0ID0gJChhbmNob3JzW2Nsb3Nlc3RBbmNob3JJZHhdKS5hdHRyKCJkYXRhLXVuaXF1ZSIpOwoKICAgICAgICAgICAgICAgIC8vIFN0b3JlcyB0aGUgbGlzdCBpdGVtIEhUTUwgZWxlbWVudCB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50bHkgdHJhdmVyc2VkIGFuY2hvciB0YWcKICAgICAgICAgICAgICAgIGVsZW0gPSAkKCdsaVtkYXRhLXVuaXF1ZT0iJyArIGFuY2hvclRleHQgKyAnIl0nKTsKCiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYGhpZ2hsaWdodE9uU2Nyb2xsYCBvcHRpb24gaXMgdHJ1ZSBhbmQgYSBuZXh0IGVsZW1lbnQgaXMgZm91bmQKICAgICAgICAgICAgICAgIGlmIChzZWxmLm9wdGlvbnMuaGlnaGxpZ2h0T25TY3JvbGwgJiYgZWxlbS5sZW5ndGgpIHsKCiAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZXMgaGlnaGxpZ2h0aW5nIGZyb20gYWxsIG9mIHRoZSBsaXN0IGl0ZW0ncwogICAgICAgICAgICAgICAgICBzZWxmLmVsZW1lbnQuZmluZCgiLiIgKyBzZWxmLmZvY3VzQ2xhc3MpLnJlbW92ZUNsYXNzKHNlbGYuZm9jdXNDbGFzcyk7CgogICAgICAgICAgICAgICAgICAvLyBIaWdobGlnaHRzIHRoZSBjb3JyZXNwb25kaW5nIGxpc3QgaXRlbQogICAgICAgICAgICAgICAgICBlbGVtLmFkZENsYXNzKHNlbGYuZm9jdXNDbGFzcyk7CgogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChzZWxmLm9wdGlvbnMuc2Nyb2xsSGlzdG9yeSkgewoKICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5oYXNoICE9PSAiIyIgKyBhbmNob3JUZXh0KSB7CgogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKCIjIiArIGFuY2hvclRleHQpOwoKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIElmIHRoZSBgc2hvd0FuZEhpZGVPblNjcm9sbGAgb3B0aW9uIGlzIHRydWUKICAgICAgICAgICAgICAgIGlmIChzZWxmLm9wdGlvbnMuc2hvd0FuZEhpZGVPblNjcm9sbCAmJiBzZWxmLm9wdGlvbnMuc2hvd0FuZEhpZGUpIHsKCiAgICAgICAgICAgICAgICAgIHNlbGYuX3RyaWdnZXJTaG93KGVsZW0sIHRydWUpOwoKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgfSwgMCk7CgogICAgICAgICAgICB9KTsKCiAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICB9LAoKICAgICAgLy8gU2hvdwogICAgICAvLyAtLS0tCiAgICAgIC8vICAgICAgT3BlbnMgdGhlIGN1cnJlbnQgc3ViLWhlYWRlcgogICAgICBzaG93OiBmdW5jdGlvbihlbGVtLCBzY3JvbGwpIHsKCiAgICAgICAgLy8gU3RvcmVzIHRoZSBwbHVnaW4gY29udGV4dCBpbiB0aGUgYHNlbGZgIHZhcmlhYmxlCiAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAogICAgICAgICAgZWxlbWVudCA9IGVsZW07CgogICAgICAgIC8vIElmIHRoZSBzdWItaGVhZGVyIGlzIG5vdCBhbHJlYWR5IHZpc2libGUKICAgICAgICBpZiAoIWVsZW0uaXMoIjp2aXNpYmxlIikpIHsKCiAgICAgICAgICAvLyBJZiB0aGUgY3VycmVudCBlbGVtZW50IGRvZXMgbm90IGhhdmUgYW55IG5lc3RlZCBzdWJoZWFkZXJzLCBpcyBub3QgYSBoZWFkZXIsIGFuZCBpdHMgcGFyZW50IGlzIG5vdCB2aXNpYmxlCiAgICAgICAgICBpZiAoIWVsZW0uZmluZChzdWJoZWFkZXJDbGFzcykubGVuZ3RoICYmICFlbGVtLnBhcmVudCgpLmlzKGhlYWRlckNsYXNzKSAmJiAhZWxlbS5wYXJlbnQoKS5pcygiOnZpc2libGUiKSkgewoKICAgICAgICAgICAgLy8gU2V0cyB0aGUgY3VycmVudCBlbGVtZW50IHRvIGFsbCBvZiB0aGUgc3ViaGVhZGVycyB3aXRoaW4gdGhlIGN1cnJlbnQgaGVhZGVyCiAgICAgICAgICAgIGVsZW0gPSBlbGVtLnBhcmVudHMoc3ViaGVhZGVyQ2xhc3MpLmFkZChlbGVtKTsKCiAgICAgICAgICB9CgogICAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGFueSBuZXN0ZWQgc3ViaGVhZGVycyBhbmQgaXMgbm90IGEgaGVhZGVyCiAgICAgICAgICBlbHNlIGlmICghZWxlbS5jaGlsZHJlbihzdWJoZWFkZXJDbGFzcykubGVuZ3RoICYmICFlbGVtLnBhcmVudCgpLmlzKGhlYWRlckNsYXNzKSkgewoKICAgICAgICAgICAgLy8gU2V0cyB0aGUgY3VycmVudCBlbGVtZW50IHRvIHRoZSBjbG9zZXN0IHN1YmhlYWRlcgogICAgICAgICAgICBlbGVtID0gZWxlbS5jbG9zZXN0KHN1YmhlYWRlckNsYXNzKTsKCiAgICAgICAgICB9CgogICAgICAgICAgLy9EZXRlcm1pbmVzIHdoYXQgalF1ZXJ5IGVmZmVjdCB0byB1c2UKICAgICAgICAgIHN3aXRjaCAoc2VsZi5vcHRpb25zLnNob3dFZmZlY3QpIHsKCiAgICAgICAgICAgIC8vVXNlcyBgbm8gZWZmZWN0YAogICAgICAgICAgICBjYXNlICJub25lIjoKCiAgICAgICAgICAgICAgZWxlbS5zaG93KCk7CgogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAvL1VzZXMgdGhlIGpRdWVyeSBgc2hvd2Agc3BlY2lhbCBlZmZlY3QKICAgICAgICAgICAgY2FzZSAic2hvdyI6CgogICAgICAgICAgICAgIGVsZW0uc2hvdyhzZWxmLm9wdGlvbnMuc2hvd0VmZmVjdFNwZWVkKTsKCiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgIC8vVXNlcyB0aGUgalF1ZXJ5IGBzbGlkZURvd25gIHNwZWNpYWwgZWZmZWN0CiAgICAgICAgICAgIGNhc2UgInNsaWRlRG93biI6CgogICAgICAgICAgICAgIGVsZW0uc2xpZGVEb3duKHNlbGYub3B0aW9ucy5zaG93RWZmZWN0U3BlZWQpOwoKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgLy9Vc2VzIHRoZSBqUXVlcnkgYGZhZGVJbmAgc3BlY2lhbCBlZmZlY3QKICAgICAgICAgICAgY2FzZSAiZmFkZUluIjoKCiAgICAgICAgICAgICAgZWxlbS5mYWRlSW4oc2VsZi5vcHRpb25zLnNob3dFZmZlY3RTcGVlZCk7CgogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAvL0lmIG5vbmUgb2YgdGhlIGFib3ZlIG9wdGlvbnMgd2VyZSBwYXNzZWQsIHRoZW4gYSBgalF1ZXJ5VUkgc2hvdyBlZmZlY3RgIGlzIGV4cGVjdGVkCiAgICAgICAgICAgIGRlZmF1bHQ6CgogICAgICAgICAgICAgIGVsZW0uc2hvdygpOwoKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICB9CgogICAgICAgIH0KCiAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgc3ViaGVhZGVyIHBhcmVudCBlbGVtZW50IGlzIGEgaGVhZGVyCiAgICAgICAgaWYgKGVsZW0ucGFyZW50KCkuaXMoaGVhZGVyQ2xhc3MpKSB7CgogICAgICAgICAgLy8gSGlkZXMgYWxsIG5vbi1hY3RpdmUgc3ViLWhlYWRlcnMKICAgICAgICAgIHNlbGYuaGlkZSgkKHN1YmhlYWRlckNsYXNzKS5ub3QoZWxlbSkpOwoKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZSBjdXJyZW50IHN1YmhlYWRlciBwYXJlbnQgZWxlbWVudCBpcyBub3QgYSBoZWFkZXIKICAgICAgICBlbHNlIHsKCiAgICAgICAgICAvLyBIaWRlcyBhbGwgbm9uLWFjdGl2ZSBzdWItaGVhZGVycwogICAgICAgICAgc2VsZi5oaWRlKCQoc3ViaGVhZGVyQ2xhc3MpLm5vdChlbGVtLmNsb3Nlc3QoaGVhZGVyQ2xhc3MpLmZpbmQoc3ViaGVhZGVyQ2xhc3MpLm5vdChlbGVtLnNpYmxpbmdzKCkpKSk7CgogICAgICAgIH0KCiAgICAgICAgLy8gTWFpbnRhaW5zIGNoYWluYWJsaXR5CiAgICAgICAgcmV0dXJuIHNlbGY7CgogICAgICB9LAoKICAgICAgLy8gSGlkZQogICAgICAvLyAtLS0tCiAgICAgIC8vICAgICAgQ2xvc2VzIHRoZSBjdXJyZW50IHN1Yi1oZWFkZXIKICAgICAgaGlkZTogZnVuY3Rpb24oZWxlbSkgewoKICAgICAgICAvLyBTdG9yZXMgdGhlIHBsdWdpbiBjb250ZXh0IGluIHRoZSBgc2VsZmAgdmFyaWFibGUKICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CgogICAgICAgIC8vRGV0ZXJtaW5lcyB3aGF0IGpRdWVyeSBlZmZlY3QgdG8gdXNlCiAgICAgICAgc3dpdGNoIChzZWxmLm9wdGlvbnMuaGlkZUVmZmVjdCkgewoKICAgICAgICAgIC8vIFVzZXMgYG5vIGVmZmVjdGAKICAgICAgICAgIGNhc2UgIm5vbmUiOgoKICAgICAgICAgICAgZWxlbS5oaWRlKCk7CgogICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIC8vIFVzZXMgdGhlIGpRdWVyeSBgaGlkZWAgc3BlY2lhbCBlZmZlY3QKICAgICAgICAgIGNhc2UgImhpZGUiOgoKICAgICAgICAgICAgZWxlbS5oaWRlKHNlbGYub3B0aW9ucy5oaWRlRWZmZWN0U3BlZWQpOwoKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAvLyBVc2VzIHRoZSBqUXVlcnkgYHNsaWRlVXBgIHNwZWNpYWwgZWZmZWN0CiAgICAgICAgICBjYXNlICJzbGlkZVVwIjoKCiAgICAgICAgICAgIGVsZW0uc2xpZGVVcChzZWxmLm9wdGlvbnMuaGlkZUVmZmVjdFNwZWVkKTsKCiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgLy8gVXNlcyB0aGUgalF1ZXJ5IGBmYWRlT3V0YCBzcGVjaWFsIGVmZmVjdAogICAgICAgICAgY2FzZSAiZmFkZU91dCI6CgogICAgICAgICAgICBlbGVtLmZhZGVPdXQoc2VsZi5vcHRpb25zLmhpZGVFZmZlY3RTcGVlZCk7CgogICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIC8vIElmIG5vbmUgb2YgdGhlIGFib3ZlIG9wdGlvbnMgd2VyZSBwYXNzZWQsIHRoZW4gYSBganF1ZXJ5VUkgaGlkZSBlZmZlY3RgIGlzIGV4cGVjdGVkCiAgICAgICAgICBkZWZhdWx0OgoKICAgICAgICAgICAgZWxlbS5oaWRlKCk7CgogICAgICAgICAgICBicmVhazsKCiAgICAgICAgfQoKICAgICAgICAvLyBNYWludGFpbnMgY2hhaW5hYmxpdHkKICAgICAgICByZXR1cm4gc2VsZjsKICAgICAgfSwKCiAgICAgIC8vIF90cmlnZ2VyU2hvdwogICAgICAvLyAtLS0tLS0tLS0tLS0KICAgICAgLy8gICAgICBEZXRlcm1pbmVzIHdoYXQgZWxlbWVudHMgZ2V0IHNob3duIG9uIHNjcm9sbCBhbmQgY2xpY2sKICAgICAgX3RyaWdnZXJTaG93OiBmdW5jdGlvbihlbGVtLCBzY3JvbGwpIHsKCiAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgICAgICAvLyBJZiB0aGUgY3VycmVudCBlbGVtZW50J3MgcGFyZW50IGlzIGEgaGVhZGVyIGVsZW1lbnQgb3IgdGhlIG5leHQgZWxlbWVudCBpcyBhIG5lc3RlZCBzdWJoZWFkZXIgZWxlbWVudAogICAgICAgIGlmIChlbGVtLnBhcmVudCgpLmlzKGhlYWRlckNsYXNzKSB8fCBlbGVtLm5leHQoKS5pcyhzdWJoZWFkZXJDbGFzcykpIHsKCiAgICAgICAgICAvLyBTaG93cyB0aGUgbmV4dCBzdWItaGVhZGVyIGVsZW1lbnQKICAgICAgICAgIHNlbGYuc2hvdyhlbGVtLm5leHQoc3ViaGVhZGVyQ2xhc3MpLCBzY3JvbGwpOwoKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGVsZW1lbnQncyBwYXJlbnQgaXMgYSBzdWJoZWFkZXIgZWxlbWVudAogICAgICAgIGVsc2UgaWYgKGVsZW0ucGFyZW50KCkuaXMoc3ViaGVhZGVyQ2xhc3MpKSB7CgogICAgICAgICAgLy8gU2hvd3MgdGhlIHBhcmVudCBzdWItaGVhZGVyIGVsZW1lbnQKICAgICAgICAgIHNlbGYuc2hvdyhlbGVtLnBhcmVudCgpLCBzY3JvbGwpOwoKICAgICAgICB9CgogICAgICAgIC8vIE1haW50YWlucyBjaGFpbmFiaWxpdHkKICAgICAgICByZXR1cm4gc2VsZjsKCiAgICAgIH0sCgogICAgICAvLyBfYWRkQ1NTQ2xhc3NlcwogICAgICAvLyAtLS0tLS0tLS0tLS0tLQogICAgICAvLyAgICAgIEFkZHMgQ1NTIGNsYXNzZXMgdG8gdGhlIG5ld2x5IGdlbmVyYXRlZCB0YWJsZSBvZiBjb250ZW50cyBIVE1MCiAgICAgIF9hZGRDU1NDbGFzc2VzOiBmdW5jdGlvbigpIHsKCiAgICAgICAgLy8gSWYgdGhlIHVzZXIgd2FudHMgYSBqcXVlcnlVSSB0aGVtZQogICAgICAgIGlmICh0aGlzLm9wdGlvbnMudGhlbWUgPT09ICJqcXVlcnl1aSIpIHsKCiAgICAgICAgICB0aGlzLmZvY3VzQ2xhc3MgPSAidWktc3RhdGUtZGVmYXVsdCI7CgogICAgICAgICAgdGhpcy5ob3ZlckNsYXNzID0gInVpLXN0YXRlLWhvdmVyIjsKCiAgICAgICAgICAvL0FkZHMgdGhlIGRlZmF1bHQgc3R5bGluZyB0byB0aGUgZHJvcGRvd24gbGlzdAogICAgICAgICAgdGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS13aWRnZXQiKS5maW5kKCIudG9jLXRpdGxlIikuYWRkQ2xhc3MoInVpLXdpZGdldC1oZWFkZXIiKS5lbmQoKS5maW5kKCJsaSIpLmFkZENsYXNzKCJ1aS13aWRnZXQtY29udGVudCIpOwoKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZSB1c2VyIHdhbnRzIGEgdHdpdHRlckJvb3RzdHJhcCB0aGVtZQogICAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy50aGVtZSA9PT0gImJvb3RzdHJhcCIpIHsKCiAgICAgICAgICB0aGlzLmVsZW1lbnQuZmluZChoZWFkZXJDbGFzcyArICIsIiArIHN1YmhlYWRlckNsYXNzKS5hZGRDbGFzcygibmF2IG5hdi1saXN0Iik7CgogICAgICAgICAgdGhpcy5mb2N1c0NsYXNzID0gImFjdGl2ZSI7CgogICAgICAgIH0KCiAgICAgICAgLy8gSWYgdGhlIHVzZXIgd2FudHMgYSB0d2l0dGVyQm9vdHN0cmFwIHRoZW1lCiAgICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnRoZW1lID09PSAiYm9vdHN0cmFwMyIpIHsKCiAgICAgICAgICB0aGlzLmVsZW1lbnQuZmluZChoZWFkZXJDbGFzcyArICIsIiArIHN1YmhlYWRlckNsYXNzKS5hZGRDbGFzcygibGlzdC1ncm91cCIpOwoKICAgICAgICAgIHRoaXMuZWxlbWVudC5maW5kKGl0ZW1DbGFzcykuYWRkQ2xhc3MoImxpc3QtZ3JvdXAtaXRlbSIpOwoKICAgICAgICAgIHRoaXMuZm9jdXNDbGFzcyA9ICJhY3RpdmUiOwoKICAgICAgICB9CgogICAgICAgIC8vIElmIGEgdXNlciBkb2VzIG5vdCB3YW50IGEgcHJlYnVpbHQgdGhlbWUKICAgICAgICBlbHNlIHsKCiAgICAgICAgICAvLyBBZGRzIG1vcmUgbmV1dHJhbCBjbGFzc2VzIChpbnN0ZWFkIG9mIGpxdWVyeXVpKQoKICAgICAgICAgIHRoaXMuZm9jdXNDbGFzcyA9IHRvY0ZvY3VzQ2xhc3NOYW1lOwoKICAgICAgICAgIHRoaXMuaG92ZXJDbGFzcyA9IHRvY0hvdmVyQ2xhc3NOYW1lOwoKICAgICAgICB9CgogICAgICAgIC8vTWFpbnRhaW5zIGNoYWluYWJpbGl0eQogICAgICAgIHJldHVybiB0aGlzOwoKICAgICAgfSwKCiAgICAgIC8vIHNldE9wdGlvbgogICAgICAvLyAtLS0tLS0tLS0KICAgICAgLy8gICAgICBTZXRzIGEgc2luZ2xlIFRvY2lmeSBvcHRpb24gYWZ0ZXIgdGhlIHBsdWdpbiBpcyBpbnZva2VkCiAgICAgIHNldE9wdGlvbjogZnVuY3Rpb24oKSB7CgogICAgICAgIC8vIENhbGxzIHRoZSBqUXVlcnlVSSBXaWRnZXQgRmFjdG9yeSBzZXRPcHRpb24gbWV0aG9kCiAgICAgICAgJC5XaWRnZXQucHJvdG90eXBlLl9zZXRPcHRpb24uYXBwbHkodGhpcywgYXJndW1lbnRzKTsKCiAgICAgIH0sCgogICAgICAvLyBzZXRPcHRpb25zCiAgICAgIC8vIC0tLS0tLS0tLS0KICAgICAgLy8gICAgICBTZXRzIGEgc2luZ2xlIG9yIG11bHRpcGxlIFRvY2lmeSBvcHRpb25zIGFmdGVyIHRoZSBwbHVnaW4gaXMgaW52b2tlZAogICAgICBzZXRPcHRpb25zOiBmdW5jdGlvbigpIHsKCiAgICAgICAgLy8gQ2FsbHMgdGhlIGpRdWVyeVVJIFdpZGdldCBGYWN0b3J5IHNldE9wdGlvbnMgbWV0aG9kCiAgICAgICAgJC5XaWRnZXQucHJvdG90eXBlLl9zZXRPcHRpb25zLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CgogICAgICB9LAoKICAgICAgLy8gX3Njcm9sbFRvCiAgICAgIC8vIC0tLS0tLS0tLQogICAgICAvLyAgICAgIFNjcm9sbHMgdG8gYSBzcGVjaWZpYyBlbGVtZW50CiAgICAgIF9zY3JvbGxUbzogZnVuY3Rpb24oZWxlbSkgewoKICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCiAgICAgICAgICBkdXJhdGlvbiA9IHNlbGYub3B0aW9ucy5zbW9vdGhTY3JvbGwgfHwgMCwKICAgICAgICAgIHNjcm9sbFRvID0gc2VsZi5vcHRpb25zLnNjcm9sbFRvLAogICAgICAgICAgY3VycmVudERpdiA9ICQoJ2RpdltkYXRhLXVuaXF1ZT0iJyArIGVsZW0uYXR0cigiZGF0YS11bmlxdWUiKSArICciXScpOwoKICAgICAgICBpZiAoIWN1cnJlbnREaXYubGVuZ3RoKSB7CgogICAgICAgICAgcmV0dXJuIHNlbGY7CgogICAgICAgIH0KCiAgICAgICAgLy8gT25jZSBhbGwgYW5pbWF0aW9ucyBvbiB0aGUgcGFnZSBhcmUgY29tcGxldGUsIHRoaXMgY2FsbGJhY2sgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQKICAgICAgICAkKCJodG1sLCBib2R5IikucHJvbWlzZSgpLmRvbmUoZnVuY3Rpb24oKSB7CgogICAgICAgICAgLy8gQW5pbWF0ZXMgdGhlIGh0bWwgYW5kIGJvZHkgZWxlbWVudCBzY3JvbGx0b3BzCiAgICAgICAgICAkKCJodG1sLCBib2R5IikuYW5pbWF0ZSh7CgogICAgICAgICAgICAvLyBTZXRzIHRoZSBqUXVlcnkgYHNjcm9sbFRvcGAgdG8gdGhlIHRvcCBvZmZzZXQgb2YgdGhlIEhUTUwgZGl2IHRhZyB0aGF0IG1hdGNoZXMgdGhlIGN1cnJlbnQgbGlzdCBpdGVtJ3MgYGRhdGEtdW5pcXVlYCB0YWcKICAgICAgICAgICAgInNjcm9sbFRvcCI6IGN1cnJlbnREaXYub2Zmc2V0KCkudG9wIC0gKCQuaXNGdW5jdGlvbihzY3JvbGxUbykgPyBzY3JvbGxUby5jYWxsKCkgOiBzY3JvbGxUbykgKyAicHgiCgogICAgICAgICAgfSwgewoKICAgICAgICAgICAgLy8gU2V0cyB0aGUgc21vb3RoU2Nyb2xsIGFuaW1hdGlvbiB0aW1lIGR1cmF0aW9uIHRvIHRoZSBzbW9vdGhTY3JvbGxTcGVlZCBvcHRpb24KICAgICAgICAgICAgImR1cmF0aW9uIjogZHVyYXRpb24KCiAgICAgICAgICB9KTsKCiAgICAgICAgfSk7CgogICAgICAgIC8vIE1haW50YWlucyBjaGFpbmFiaWxpdHkKICAgICAgICByZXR1cm4gc2VsZjsKCiAgICAgIH0KCiAgICB9KTsKCiAgfSkpOyAvL2VuZCBvZiBwbHVnaW4K"></script>
<script src="data:application/javascript;base64,CgovKioKICogalF1ZXJ5IFBsdWdpbjogU3RpY2t5IFRhYnMKICoKICogQGF1dGhvciBBaWRhbiBMaXN0ZXIgPGFpZGFuQHBocC5uZXQ+CiAqIGFkYXB0ZWQgYnkgUnViZW4gQXJzbGFuIHRvIGFjdGl2YXRlIHBhcmVudCB0YWJzIHRvbwogKiBodHRwOi8vd3d3LmFpZGFubGlzdGVyLmNvbS8yMDE0LzAzL3BlcnNpc3RpbmctdGhlLXRhYi1zdGF0ZS1pbi1ib290c3RyYXAvCiAqLwooZnVuY3Rpb24oJCkgewogICJ1c2Ugc3RyaWN0IjsKICAkLmZuLnJtYXJrZG93blN0aWNreVRhYnMgPSBmdW5jdGlvbigpIHsKICAgIHZhciBjb250ZXh0ID0gdGhpczsKICAgIC8vIFNob3cgdGhlIHRhYiBjb3JyZXNwb25kaW5nIHdpdGggdGhlIGhhc2ggaW4gdGhlIFVSTCwgb3IgdGhlIGZpcnN0IHRhYgogICAgdmFyIHNob3dTdHVmZkZyb21IYXNoID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBoYXNoID0gd2luZG93LmxvY2F0aW9uLmhhc2g7CiAgICAgIHZhciBzZWxlY3RvciA9IGhhc2ggPyAnYVtocmVmPSInICsgaGFzaCArICciXScgOiAnbGkuYWN0aXZlID4gYSc7CiAgICAgIHZhciAkc2VsZWN0b3IgPSAkKHNlbGVjdG9yLCBjb250ZXh0KTsKICAgICAgaWYoJHNlbGVjdG9yLmRhdGEoJ3RvZ2dsZScpID09PSAidGFiIikgewogICAgICAgICRzZWxlY3Rvci50YWIoJ3Nob3cnKTsKICAgICAgICAvLyB3YWxrIHVwIHRoZSBhbmNlc3RvcnMgb2YgdGhpcyBlbGVtZW50LCBzaG93IGFueSBoaWRkZW4gdGFicwogICAgICAgICRzZWxlY3Rvci5wYXJlbnRzKCcuc2VjdGlvbi50YWJzZXQnKS5lYWNoKGZ1bmN0aW9uKGksIGVsbSkgewogICAgICAgICAgdmFyIGxpbmsgPSAkKCdhW2hyZWY9IiMnICsgJChlbG0pLmF0dHIoJ2lkJykgKyAnIl0nKTsKICAgICAgICAgIGlmKGxpbmsuZGF0YSgndG9nZ2xlJykgPT09ICJ0YWIiKSB7CiAgICAgICAgICAgIGxpbmsudGFiKCJzaG93Iik7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH07CgoKICAgIC8vIFNldCB0aGUgY29ycmVjdCB0YWIgd2hlbiB0aGUgcGFnZSBsb2FkcwogICAgc2hvd1N0dWZmRnJvbUhhc2goY29udGV4dCk7CgogICAgLy8gU2V0IHRoZSBjb3JyZWN0IHRhYiB3aGVuIGEgdXNlciB1c2VzIHRoZWlyIGJhY2svZm9yd2FyZCBidXR0b24KICAgICQod2luZG93KS5vbignaGFzaGNoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgICBzaG93U3R1ZmZGcm9tSGFzaChjb250ZXh0KTsKICAgIH0pOwoKICAgIC8vIENoYW5nZSB0aGUgVVJMIHdoZW4gdGFicyBhcmUgY2xpY2tlZAogICAgJCgnYScsIGNvbnRleHQpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgdGhpcy5ocmVmKTsKICAgICAgc2hvd1N0dWZmRnJvbUhhc2goY29udGV4dCk7CiAgICB9KTsKCiAgICByZXR1cm4gdGhpczsKICB9Owp9KGpRdWVyeSkpOwoKd2luZG93LmJ1aWxkVGFic2V0cyA9IGZ1bmN0aW9uKHRvY0lEKSB7CgogIC8vIGJ1aWxkIGEgdGFic2V0IGZyb20gYSBzZWN0aW9uIGRpdiB3aXRoIHRoZSAudGFic2V0IGNsYXNzCiAgZnVuY3Rpb24gYnVpbGRUYWJzZXQodGFic2V0KSB7CgogICAgLy8gY2hlY2sgZm9yIGZhZGUgYW5kIHBpbGxzIG9wdGlvbnMKICAgIHZhciBmYWRlID0gdGFic2V0Lmhhc0NsYXNzKCJ0YWJzZXQtZmFkZSIpOwogICAgdmFyIHBpbGxzID0gdGFic2V0Lmhhc0NsYXNzKCJ0YWJzZXQtcGlsbHMiKTsKICAgIHZhciBuYXZDbGFzcyA9IHBpbGxzID8gIm5hdi1waWxscyIgOiAibmF2LXRhYnMiOwoKICAgIC8vIGRldGVybWluZSB0aGUgaGVhZGluZyBsZXZlbCBvZiB0aGUgdGFic2V0IGFuZCB0YWJzCiAgICB2YXIgbWF0Y2ggPSB0YWJzZXQuYXR0cignY2xhc3MnKS5tYXRjaCgvbGV2ZWwoXGQpIC8pOwogICAgaWYgKG1hdGNoID09PSBudWxsKQogICAgICByZXR1cm47CiAgICB2YXIgdGFic2V0TGV2ZWwgPSBOdW1iZXIobWF0Y2hbMV0pOwogICAgdmFyIHRhYkxldmVsID0gdGFic2V0TGV2ZWwgKyAxOwoKICAgIC8vIGZpbmQgYWxsIHN1YmhlYWRpbmdzIGltbWVkaWF0ZWx5IGJlbG93CiAgICB2YXIgdGFicyA9IHRhYnNldC5maW5kKCJkaXYuc2VjdGlvbi5sZXZlbCIgKyB0YWJMZXZlbCk7CiAgICBpZiAoIXRhYnMubGVuZ3RoKQogICAgICByZXR1cm47CgogICAgLy8gY3JlYXRlIHRhYmxpc3QgYW5kIHRhYi1jb250ZW50IGVsZW1lbnRzCiAgICB2YXIgdGFiTGlzdCA9ICQoJzx1bCBjbGFzcz0ibmF2ICcgKyBuYXZDbGFzcyArICciIHJvbGU9InRhYmxpc3QiPjwvdWw+Jyk7CiAgICAkKHRhYnNbMF0pLmJlZm9yZSh0YWJMaXN0KTsKICAgIHZhciB0YWJDb250ZW50ID0gJCgnPGRpdiBjbGFzcz0idGFiLWNvbnRlbnQiPjwvZGl2PicpOwogICAgJCh0YWJzWzBdKS5iZWZvcmUodGFiQ29udGVudCk7CgogICAgLy8gYnVpbGQgdGhlIHRhYnNldAogICAgdmFyIGFjdGl2ZVRhYiA9IDA7CiAgICB0YWJzLmVhY2goZnVuY3Rpb24oaSkgewoKICAgICAgLy8gZ2V0IHRoZSB0YWIgZGl2CiAgICAgIHZhciB0YWIgPSAkKHRhYnNbaV0pOwoKICAgICAgLy8gZ2V0IHRoZSBpZCB0aGVuIHNhbml0aXplIGl0IGZvciB1c2Ugd2l0aCBib290c3RyYXAgdGFicwogICAgICB2YXIgaWQgPSB0YWIuYXR0cignaWQnKTsKCiAgICAgIC8vIHNlZSBpZiB0aGlzIGlzIG1hcmtlZCBhcyB0aGUgYWN0aXZlIHRhYgogICAgICBpZiAodGFiLmhhc0NsYXNzKCdhY3RpdmUnKSkKICAgICAgICBhY3RpdmVUYWIgPSBpOwoKICAgICAgLy8gcmVtb3ZlIGFueSB0YWJsZSBvZiBjb250ZW50cyBlbnRyaWVzIGFzc29jaWF0ZWQgd2l0aAogICAgICAvLyB0aGlzIElEIChzaW5jZSB3ZSdsbCBiZSByZW1vdmluZyB0aGUgaGVhZGluZyBlbGVtZW50KQogICAgICAkKCJkaXYjIiArIHRvY0lEICsgIiBsaSBhW2hyZWY9JyMiICsgaWQgKyAiJ10iKS5wYXJlbnQoKS5yZW1vdmUoKTsKCiAgICAgIC8vIHNhbml0aXplIHRoZSBpZCBmb3IgdXNlIHdpdGggYm9vdHN0cmFwIHRhYnMKICAgICAgaWQgPSBpZC5yZXBsYWNlKC9bLlwvPyYhIzw+XS9nLCAnJykucmVwbGFjZSgvXHMvZywgJ18nKTsKICAgICAgdGFiLmF0dHIoJ2lkJywgaWQpOwoKICAgICAgLy8gZ2V0IHRoZSBoZWFkaW5nIGVsZW1lbnQgd2l0aGluIGl0LCBncmFiIGl0J3MgdGV4dCwgdGhlbiByZW1vdmUgaXQKICAgICAgdmFyIGhlYWRpbmcgPSB0YWIuZmluZCgnaCcgKyB0YWJMZXZlbCArICc6Zmlyc3QnKTsKICAgICAgdmFyIGhlYWRpbmdUZXh0ID0gaGVhZGluZy5odG1sKCk7CiAgICAgIGhlYWRpbmcucmVtb3ZlKCk7CgogICAgICAvLyBidWlsZCBhbmQgYXBwZW5kIHRoZSB0YWIgbGlzdCBpdGVtCiAgICAgIHZhciBhID0gJCgnPGEgcm9sZT0idGFiIiBkYXRhLXRvZ2dsZT0idGFiIj4nICsgaGVhZGluZ1RleHQgKyAnPC9hPicpOwogICAgICBhLmF0dHIoJ2hyZWYnLCAnIycgKyBpZCk7CiAgICAgIGEuYXR0cignYXJpYS1jb250cm9scycsIGlkKTsKICAgICAgdmFyIGxpID0gJCgnPGxpIHJvbGU9InByZXNlbnRhdGlvbiI+PC9saT4nKTsKICAgICAgbGkuYXBwZW5kKGEpOwogICAgICB0YWJMaXN0LmFwcGVuZChsaSk7CgogICAgICAvLyBzZXQgaXQncyBhdHRyaWJ1dGVzCiAgICAgIHRhYi5hdHRyKCdyb2xlJywgJ3RhYnBhbmVsJyk7CiAgICAgIHRhYi5hZGRDbGFzcygndGFiLXBhbmUnKTsKICAgICAgdGFiLmFkZENsYXNzKCd0YWJiZWQtcGFuZScpOwogICAgICBpZiAoZmFkZSkKICAgICAgICB0YWIuYWRkQ2xhc3MoJ2ZhZGUnKTsKCiAgICAgIC8vIG1vdmUgaXQgaW50byB0aGUgdGFiIGNvbnRlbnQgZGl2CiAgICAgIHRhYi5kZXRhY2goKS5hcHBlbmRUbyh0YWJDb250ZW50KTsKICAgIH0pOwoKICAgIC8vIHNldCBhY3RpdmUgdGFiCiAgICAkKHRhYkxpc3QuY2hpbGRyZW4oJ2xpJylbYWN0aXZlVGFiXSkuYWRkQ2xhc3MoJ2FjdGl2ZScpOwogICAgdmFyIGFjdGl2ZSA9ICQodGFiQ29udGVudC5jaGlsZHJlbignZGl2LnNlY3Rpb24nKVthY3RpdmVUYWJdKTsKICAgIGFjdGl2ZS5hZGRDbGFzcygnYWN0aXZlJyk7CiAgICBpZiAoZmFkZSkKICAgICAgYWN0aXZlLmFkZENsYXNzKCdpbicpOwoKICAgIGlmICh0YWJzZXQuaGFzQ2xhc3MoInRhYnNldC1zdGlja3kiKSkKICAgICAgdGFic2V0LnJtYXJrZG93blN0aWNreVRhYnMoKTsKICB9CgogIC8vIGNvbnZlcnQgc2VjdGlvbiBkaXZzIHdpdGggdGhlIC50YWJzZXQgY2xhc3MgdG8gdGFic2V0cwogIHZhciB0YWJzZXRzID0gJCgiZGl2LnNlY3Rpb24udGFic2V0Iik7CiAgdGFic2V0cy5lYWNoKGZ1bmN0aW9uKGkpIHsKICAgIGJ1aWxkVGFic2V0KCQodGFic2V0c1tpXSkpOwogIH0pOwp9OwoK"></script>
<script src="data:application/javascript;base64,KGZ1bmN0aW9uKCkgewogIC8vIElmIHdpbmRvdy5IVE1MV2lkZ2V0cyBpcyBhbHJlYWR5IGRlZmluZWQsIHRoZW4gdXNlIGl0OyBvdGhlcndpc2UgY3JlYXRlIGEKICAvLyBuZXcgb2JqZWN0LiBUaGlzIGFsbG93cyBwcmVjZWRpbmcgY29kZSB0byBzZXQgb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUKICAvLyBpbml0aWFsaXphdGlvbiBwcm9jZXNzICh0aG91Z2ggbm9uZSBjdXJyZW50bHkgZXhpc3QpLgogIHdpbmRvdy5IVE1MV2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cyB8fCB7fTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSB2aWV3ZXIgcGFuZS4gSWYgbm90LCB3ZSdyZSBpbiBhIHdlYiBicm93c2VyLgogIHZhciB2aWV3ZXJNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnZpZXdlck1vZGUgPQogICAgICAvXGJ2aWV3ZXJfcGFuZT0xXGIvLnRlc3Qod2luZG93LmxvY2F0aW9uKTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gU2hpbnkgbW9kZS4gSWYgbm90LCBpdCdzIGEgc3RhdGljIGRvY3VtZW50LgogIC8vIE5vdGUgdGhhdCBzdGF0aWMgd2lkZ2V0cyBjYW4gYXBwZWFyIGluIGJvdGggU2hpbnkgYW5kIHN0YXRpYyBtb2RlcywgYnV0CiAgLy8gb2J2aW91c2x5LCBTaGlueSB3aWRnZXRzIGNhbiBvbmx5IGFwcGVhciBpbiBTaGlueSBhcHBzL2RvY3VtZW50cy4KICB2YXIgc2hpbnlNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnNoaW55TW9kZSA9CiAgICAgIHR5cGVvZih3aW5kb3cuU2hpbnkpICE9PSAidW5kZWZpbmVkIiAmJiAhIXdpbmRvdy5TaGlueS5vdXRwdXRCaW5kaW5nczsKCiAgLy8gV2UgY2FuJ3QgY291bnQgb24galF1ZXJ5IGJlaW5nIGF2YWlsYWJsZSwgc28gd2UgaW1wbGVtZW50IG91ciBvd24KICAvLyB2ZXJzaW9uIGlmIG5lY2Vzc2FyeS4KICBmdW5jdGlvbiBxdWVyeVNlbGVjdG9yQWxsKHNjb3BlLCBzZWxlY3RvcikgewogICAgaWYgKHR5cGVvZihqUXVlcnkpICE9PSAidW5kZWZpbmVkIiAmJiBzY29wZSBpbnN0YW5jZW9mIGpRdWVyeSkgewogICAgICByZXR1cm4gc2NvcGUuZmluZChzZWxlY3Rvcik7CiAgICB9CiAgICBpZiAoc2NvcGUucXVlcnlTZWxlY3RvckFsbCkgewogICAgICByZXR1cm4gc2NvcGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBhc0FycmF5KHZhbHVlKSB7CiAgICBpZiAodmFsdWUgPT09IG51bGwpCiAgICAgIHJldHVybiBbXTsKICAgIGlmICgkLmlzQXJyYXkodmFsdWUpKQogICAgICByZXR1cm4gdmFsdWU7CiAgICByZXR1cm4gW3ZhbHVlXTsKICB9CgogIC8vIEltcGxlbWVudCBqUXVlcnkncyBleHRlbmQKICBmdW5jdGlvbiBleHRlbmQodGFyZ2V0IC8qLCAuLi4gKi8pIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgcmV0dXJuIHRhcmdldDsKICAgIH0KICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07CiAgICAgIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7CiAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgewogICAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIHRhcmdldDsKICB9CgogIC8vIElFOCBkb2Vzbid0IHN1cHBvcnQgQXJyYXkuZm9yRWFjaC4KICBmdW5jdGlvbiBmb3JFYWNoKHZhbHVlcywgY2FsbGJhY2ssIHRoaXNBcmcpIHsKICAgIGlmICh2YWx1ZXMuZm9yRWFjaCkgewogICAgICB2YWx1ZXMuZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZyk7CiAgICB9IGVsc2UgewogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgewogICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdmFsdWVzW2ldLCBpLCB2YWx1ZXMpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBSZXBsYWNlcyB0aGUgc3BlY2lmaWVkIG1ldGhvZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgZnVuY1NvdXJjZS4KICAvLwogIC8vIE5vdGUgdGhhdCBmdW5jU291cmNlIHNob3VsZCBub3QgQkUgdGhlIG5ldyBtZXRob2QsIGl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uCiAgLy8gdGhhdCBSRVRVUk5TIHRoZSBuZXcgbWV0aG9kLiBmdW5jU291cmNlIHJlY2VpdmVzIGEgc2luZ2xlIGFyZ3VtZW50IHRoYXQgaXMKICAvLyB0aGUgb3ZlcnJpZGRlbiBtZXRob2QsIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGUgbmV3IG1ldGhvZC4gVGhlIG92ZXJyaWRkZW4KICAvLyBtZXRob2QgY2FuIGJlIGNhbGxlZCBsaWtlIGEgcmVndWxhciBmdW5jdGlvbiwgaXQgaGFzIHRoZSB0YXJnZXQgcGVybWFuZW50bHkKICAvLyBib3VuZCB0byBpdCBzbyAidGhpcyIgd2lsbCB3b3JrIGNvcnJlY3RseS4KICBmdW5jdGlvbiBvdmVycmlkZU1ldGhvZCh0YXJnZXQsIG1ldGhvZE5hbWUsIGZ1bmNTb3VyY2UpIHsKICAgIHZhciBzdXBlckZ1bmMgPSB0YXJnZXRbbWV0aG9kTmFtZV0gfHwgZnVuY3Rpb24oKSB7fTsKICAgIHZhciBzdXBlckZ1bmNCb3VuZCA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gc3VwZXJGdW5jLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTsKICAgIH07CiAgICB0YXJnZXRbbWV0aG9kTmFtZV0gPSBmdW5jU291cmNlKHN1cGVyRnVuY0JvdW5kKTsKICB9CgogIC8vIEFkZCBhIG1ldGhvZCB0byBkZWxlZ2F0b3IgdGhhdCwgd2hlbiBpbnZva2VkLCBjYWxscwogIC8vIGRlbGVnYXRlZS5tZXRob2ROYW1lLiBJZiB0aGVyZSBpcyBubyBzdWNoIG1ldGhvZCBvbgogIC8vIHRoZSBkZWxlZ2F0ZWUsIGJ1dCB0aGVyZSB3YXMgb25lIG9uIGRlbGVnYXRvciBiZWZvcmUKICAvLyBkZWxlZ2F0ZU1ldGhvZCB3YXMgY2FsbGVkLCB0aGVuIHRoZSBvcmlnaW5hbCB2ZXJzaW9uCiAgLy8gaXMgaW52b2tlZCBpbnN0ZWFkLgogIC8vIEZvciBleGFtcGxlOgogIC8vCiAgLy8gdmFyIGEgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2ExJyk7IH0KICAvLyAgIG1ldGhvZDI6IGZ1bmN0aW9uKCkgeyBjb25zb2xlLmxvZygnYTInKTsgfQogIC8vIH07CiAgLy8gdmFyIGIgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2IxJyk7IH0KICAvLyB9OwogIC8vIGRlbGVnYXRlTWV0aG9kKGEsIGIsICJtZXRob2QxIik7CiAgLy8gZGVsZWdhdGVNZXRob2QoYSwgYiwgIm1ldGhvZDIiKTsKICAvLyBhLm1ldGhvZDEoKTsKICAvLyBhLm1ldGhvZDIoKTsKICAvLwogIC8vIFRoZSBvdXRwdXQgd291bGQgYmUgImIxIiwgImEyIi4KICBmdW5jdGlvbiBkZWxlZ2F0ZU1ldGhvZChkZWxlZ2F0b3IsIGRlbGVnYXRlZSwgbWV0aG9kTmFtZSkgewogICAgdmFyIGluaGVyaXRlZCA9IGRlbGVnYXRvclttZXRob2ROYW1lXTsKICAgIGRlbGVnYXRvclttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgdGFyZ2V0ID0gZGVsZWdhdGVlOwogICAgICB2YXIgbWV0aG9kID0gZGVsZWdhdGVlW21ldGhvZE5hbWVdOwoKICAgICAgLy8gVGhlIG1ldGhvZCBkb2Vzbid0IGV4aXN0IG9uIHRoZSBkZWxlZ2F0ZWUuIEluc3RlYWQsCiAgICAgIC8vIGNhbGwgdGhlIG1ldGhvZCBvbiB0aGUgZGVsZWdhdG9yLCBpZiBpdCBleGlzdHMuCiAgICAgIGlmICghbWV0aG9kKSB7CiAgICAgICAgdGFyZ2V0ID0gZGVsZWdhdG9yOwogICAgICAgIG1ldGhvZCA9IGluaGVyaXRlZDsKICAgICAgfQoKICAgICAgaWYgKG1ldGhvZCkgewogICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGFyZ2V0LCBhcmd1bWVudHMpOwogICAgICB9CiAgICB9OwogIH0KCiAgLy8gSW1wbGVtZW50IGEgdmFndWUgZmFjc2ltaWxpZSBvZiBqUXVlcnkncyBkYXRhIG1ldGhvZAogIGZ1bmN0aW9uIGVsZW1lbnREYXRhKGVsLCBuYW1lLCB2YWx1ZSkgewogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMikgewogICAgICByZXR1cm4gZWxbImh0bWx3aWRnZXRfZGF0YV8iICsgbmFtZV07CiAgICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMykgewogICAgICBlbFsiaHRtbHdpZGdldF9kYXRhXyIgKyBuYW1lXSA9IHZhbHVlOwogICAgICByZXR1cm4gZWw7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGVsZW1lbnREYXRhOiAiICsKICAgICAgICBhcmd1bWVudHMubGVuZ3RoKTsKICAgIH0KICB9CgogIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzQ0NjE3MC9lc2NhcGUtc3RyaW5nLWZvci11c2UtaW4tamF2YXNjcmlwdC1yZWdleAogIGZ1bmN0aW9uIGVzY2FwZVJlZ0V4cChzdHIpIHsKICAgIHJldHVybiBzdHIucmVwbGFjZSgvW1wtXFtcXVwvXHtcfVwoXClcKlwrXD9cLlxcXF5cJFx8XS9nLCAiXFwkJiIpOwogIH0KCiAgZnVuY3Rpb24gaGFzQ2xhc3MoZWwsIGNsYXNzTmFtZSkgewogICAgdmFyIHJlID0gbmV3IFJlZ0V4cCgiXFxiIiArIGVzY2FwZVJlZ0V4cChjbGFzc05hbWUpICsgIlxcYiIpOwogICAgcmV0dXJuIHJlLnRlc3QoZWwuY2xhc3NOYW1lKTsKICB9CgogIC8vIGVsZW1lbnRzIC0gYXJyYXkgKG9yIGFycmF5LWxpa2Ugb2JqZWN0KSBvZiBIVE1MIGVsZW1lbnRzCiAgLy8gY2xhc3NOYW1lIC0gY2xhc3MgbmFtZSB0byB0ZXN0IGZvcgogIC8vIGluY2x1ZGUgLSBpZiB0cnVlLCBvbmx5IHJldHVybiBlbGVtZW50cyB3aXRoIGdpdmVuIGNsYXNzTmFtZTsKICAvLyAgIGlmIGZhbHNlLCBvbmx5IHJldHVybiBlbGVtZW50cyAqd2l0aG91dCogZ2l2ZW4gY2xhc3NOYW1lCiAgZnVuY3Rpb24gZmlsdGVyQnlDbGFzcyhlbGVtZW50cywgY2xhc3NOYW1lLCBpbmNsdWRlKSB7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICBpZiAoaGFzQ2xhc3MoZWxlbWVudHNbaV0sIGNsYXNzTmFtZSkgPT0gaW5jbHVkZSkKICAgICAgICByZXN1bHRzLnB1c2goZWxlbWVudHNbaV0pOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfQoKICBmdW5jdGlvbiBvbihvYmosIGV2ZW50TmFtZSwgZnVuYykgewogICAgaWYgKG9iai5hZGRFdmVudExpc3RlbmVyKSB7CiAgICAgIG9iai5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZnVuYywgZmFsc2UpOwogICAgfSBlbHNlIGlmIChvYmouYXR0YWNoRXZlbnQpIHsKICAgICAgb2JqLmF0dGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBvZmYob2JqLCBldmVudE5hbWUsIGZ1bmMpIHsKICAgIGlmIChvYmoucmVtb3ZlRXZlbnRMaXN0ZW5lcikKICAgICAgb2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBmdW5jLCBmYWxzZSk7CiAgICBlbHNlIGlmIChvYmouZGV0YWNoRXZlbnQpIHsKICAgICAgb2JqLmRldGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICAvLyBUcmFuc2xhdGUgYXJyYXkgb2YgdmFsdWVzIHRvIHRvcC9yaWdodC9ib3R0b20vbGVmdCwgYXMgdXN1YWwgd2l0aAogIC8vIHRoZSAicGFkZGluZyIgQ1NTIHByb3BlcnR5CiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3BhZGRpbmcKICBmdW5jdGlvbiB1bnBhY2tQYWRkaW5nKHZhbHVlKSB7CiAgICBpZiAodHlwZW9mKHZhbHVlKSA9PT0gIm51bWJlciIpCiAgICAgIHZhbHVlID0gW3ZhbHVlXTsKICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDEpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMF0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzBdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDIpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDMpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDQpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzNdfTsKICAgIH0KICB9CgogIC8vIENvbnZlcnQgYW4gdW5wYWNrZWQgcGFkZGluZyBvYmplY3QgdG8gYSBDU1MgdmFsdWUKICBmdW5jdGlvbiBwYWRkaW5nVG9Dc3MocGFkZGluZ09iaikgewogICAgcmV0dXJuIHBhZGRpbmdPYmoudG9wICsgInB4ICIgKyBwYWRkaW5nT2JqLnJpZ2h0ICsgInB4ICIgKyBwYWRkaW5nT2JqLmJvdHRvbSArICJweCAiICsgcGFkZGluZ09iai5sZWZ0ICsgInB4IjsKICB9CgogIC8vIE1ha2VzIGEgbnVtYmVyIHN1aXRhYmxlIGZvciBDU1MKICBmdW5jdGlvbiBweCh4KSB7CiAgICBpZiAodHlwZW9mKHgpID09PSAibnVtYmVyIikKICAgICAgcmV0dXJuIHggKyAicHgiOwogICAgZWxzZQogICAgICByZXR1cm4geDsKICB9CgogIC8vIFJldHJpZXZlcyBydW50aW1lIHdpZGdldCBzaXppbmcgaW5mb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQuCiAgLy8gVGhlIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbnVsbCwgb3IgYW4gb2JqZWN0IHdpdGggZmlsbCwgcGFkZGluZywKICAvLyBkZWZhdWx0V2lkdGgsIGRlZmF1bHRIZWlnaHQgZmllbGRzLgogIGZ1bmN0aW9uIHNpemluZ1BvbGljeShlbCkgewogICAgdmFyIHNpemluZ0VsID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2NyaXB0W2RhdGEtZm9yPSciICsgZWwuaWQgKyAiJ11bdHlwZT0nYXBwbGljYXRpb24vaHRtbHdpZGdldC1zaXppbmcnXSIpOwogICAgaWYgKCFzaXppbmdFbCkKICAgICAgcmV0dXJuIG51bGw7CiAgICB2YXIgc3AgPSBKU09OLnBhcnNlKHNpemluZ0VsLnRleHRDb250ZW50IHx8IHNpemluZ0VsLnRleHQgfHwgInt9Iik7CiAgICBpZiAodmlld2VyTW9kZSkgewogICAgICByZXR1cm4gc3Audmlld2VyOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIHNwLmJyb3dzZXI7CiAgICB9CiAgfQoKICAvLyBAcGFyYW0gdGFza3MgQXJyYXkgb2Ygc3RyaW5ncyAob3IgZmFsc3kgdmFsdWUsIGluIHdoaWNoIGNhc2Ugbm8tb3ApLgogIC8vICAgRWFjaCBlbGVtZW50IG11c3QgYmUgYSB2YWxpZCBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCB5aWVsZHMgYQogIC8vICAgZnVuY3Rpb24uIE9yLCBjYW4gYmUgYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoICJjb2RlIiBhbmQgImRhdGEiCiAgLy8gICBwcm9wZXJ0aWVzOyBpbiB0aGlzIGNhc2UsIHRoZSAiY29kZSIgcHJvcGVydHkgc2hvdWxkIGJlIGEgc3RyaW5nCiAgLy8gICBvZiBKUyB0aGF0J3MgYW4gZXhwciB0aGF0IHlpZWxkcyBhIGZ1bmN0aW9uLCBhbmQgImRhdGEiIHNob3VsZCBiZQogIC8vICAgYW4gb2JqZWN0IHRoYXQgd2lsbCBiZSBhZGRlZCBhcyBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IHdoZW4gdGhhdAogIC8vICAgZnVuY3Rpb24gaXMgY2FsbGVkLgogIC8vIEBwYXJhbSB0YXJnZXQgVGhlIG9iamVjdCB0aGF0IHdpbGwgYmUgInRoaXMiIGZvciBlYWNoIGZ1bmN0aW9uCiAgLy8gICBleGVjdXRpb24uCiAgLy8gQHBhcmFtIGFyZ3MgQXJyYXkgb2YgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb25zLiAoVGhlCiAgLy8gICBzYW1lIGFyZ3VtZW50cyB3aWxsIGJlIHBhc3NlZCB0byBhbGwgZnVuY3Rpb25zLikKICBmdW5jdGlvbiBldmFsQW5kUnVuKHRhc2tzLCB0YXJnZXQsIGFyZ3MpIHsKICAgIGlmICh0YXNrcykgewogICAgICBmb3JFYWNoKHRhc2tzLCBmdW5jdGlvbih0YXNrKSB7CiAgICAgICAgdmFyIHRoZXNlQXJncyA9IGFyZ3M7CiAgICAgICAgaWYgKHR5cGVvZih0YXNrKSA9PT0gIm9iamVjdCIpIHsKICAgICAgICAgIHRoZXNlQXJncyA9IHRoZXNlQXJncy5jb25jYXQoW3Rhc2suZGF0YV0pOwogICAgICAgICAgdGFzayA9IHRhc2suY29kZTsKICAgICAgICB9CiAgICAgICAgdmFyIHRhc2tGdW5jID0gdHJ5RXZhbCh0YXNrKTsKICAgICAgICBpZiAodHlwZW9mKHRhc2tGdW5jKSAhPT0gImZ1bmN0aW9uIikgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUYXNrIG11c3QgYmUgYSBmdW5jdGlvbiEgU291cmNlOlxuIiArIHRhc2spOwogICAgICAgIH0KICAgICAgICB0YXNrRnVuYy5hcHBseSh0YXJnZXQsIHRoZXNlQXJncyk7CiAgICAgIH0pOwogICAgfQogIH0KCiAgLy8gQXR0ZW1wdCBldmFsKCkgYm90aCB3aXRoIGFuZCB3aXRob3V0IGVuY2xvc2luZyBpbiBwYXJlbnRoZXNlcy4KICAvLyBOb3RlIHRoYXQgZW5jbG9zaW5nIGNvZXJjZXMgYSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBpbnRvCiAgLy8gYW4gZXhwcmVzc2lvbiB0aGF0IGV2YWwoKSBjYW4gcGFyc2UKICAvLyAob3RoZXJ3aXNlLCBhIFN5bnRheEVycm9yIGlzIHRocm93bikKICBmdW5jdGlvbiB0cnlFdmFsKGNvZGUpIHsKICAgIHZhciByZXN1bHQgPSBudWxsOwogICAgdHJ5IHsKICAgICAgcmVzdWx0ID0gZXZhbCgiKCIgKyBjb2RlICsgIikiKTsKICAgIH0gY2F0Y2goZXJyb3IpIHsKICAgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikpIHsKICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgfQogICAgICB0cnkgewogICAgICAgIHJlc3VsdCA9IGV2YWwoY29kZSk7CiAgICAgIH0gY2F0Y2goZSkgewogICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpIHsKICAgICAgICAgIHRocm93IGVycm9yOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aHJvdyBlOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIHJlc3VsdDsKICB9CgogIGZ1bmN0aW9uIGluaXRTaXppbmcoZWwpIHsKICAgIHZhciBzaXppbmcgPSBzaXppbmdQb2xpY3koZWwpOwogICAgaWYgKCFzaXppbmcpCiAgICAgIHJldHVybjsKCiAgICB2YXIgY2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImh0bWx3aWRnZXRfY29udGFpbmVyIik7CiAgICBpZiAoIWNlbCkKICAgICAgcmV0dXJuOwoKICAgIGlmICh0eXBlb2Yoc2l6aW5nLnBhZGRpbmcpICE9PSAidW5kZWZpbmVkIikgewogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm1hcmdpbiA9ICIwIjsKICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nID0gcGFkZGluZ1RvQ3NzKHVucGFja1BhZGRpbmcoc2l6aW5nLnBhZGRpbmcpKTsKICAgIH0KCiAgICBpZiAoc2l6aW5nLmZpbGwpIHsKICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4iOwogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLndpZHRoID0gIjEwMCUiOwogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmhlaWdodCA9ICIxMDAlIjsKICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLndpZHRoID0gIjEwMCUiOwogICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOwogICAgICBpZiAoY2VsKSB7CiAgICAgICAgY2VsLnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIjsKICAgICAgICB2YXIgcGFkID0gdW5wYWNrUGFkZGluZyhzaXppbmcucGFkZGluZyk7CiAgICAgICAgY2VsLnN0eWxlLnRvcCA9IHBhZC50b3AgKyAicHgiOwogICAgICAgIGNlbC5zdHlsZS5yaWdodCA9IHBhZC5yaWdodCArICJweCI7CiAgICAgICAgY2VsLnN0eWxlLmJvdHRvbSA9IHBhZC5ib3R0b20gKyAicHgiOwogICAgICAgIGNlbC5zdHlsZS5sZWZ0ID0gcGFkLmxlZnQgKyAicHgiOwogICAgICAgIGVsLnN0eWxlLndpZHRoID0gIjEwMCUiOwogICAgICAgIGVsLnN0eWxlLmhlaWdodCA9ICIxMDAlIjsKICAgICAgfQoKICAgICAgcmV0dXJuIHsKICAgICAgICBnZXRXaWR0aDogZnVuY3Rpb24oKSB7IHJldHVybiBjZWwub2Zmc2V0V2lkdGg7IH0sCiAgICAgICAgZ2V0SGVpZ2h0OiBmdW5jdGlvbigpIHsgcmV0dXJuIGNlbC5vZmZzZXRIZWlnaHQ7IH0KICAgICAgfTsKCiAgICB9IGVsc2UgewogICAgICBlbC5zdHlsZS53aWR0aCA9IHB4KHNpemluZy53aWR0aCk7CiAgICAgIGVsLnN0eWxlLmhlaWdodCA9IHB4KHNpemluZy5oZWlnaHQpOwoKICAgICAgcmV0dXJuIHsKICAgICAgICBnZXRXaWR0aDogZnVuY3Rpb24oKSB7IHJldHVybiBlbC5vZmZzZXRXaWR0aDsgfSwKICAgICAgICBnZXRIZWlnaHQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gZWwub2Zmc2V0SGVpZ2h0OyB9CiAgICAgIH07CiAgICB9CiAgfQoKICAvLyBEZWZhdWx0IGltcGxlbWVudGF0aW9ucyBmb3IgbWV0aG9kcwogIHZhciBkZWZhdWx0cyA9IHsKICAgIGZpbmQ6IGZ1bmN0aW9uKHNjb3BlKSB7CiAgICAgIHJldHVybiBxdWVyeVNlbGVjdG9yQWxsKHNjb3BlLCAiLiIgKyB0aGlzLm5hbWUpOwogICAgfSwKICAgIHJlbmRlckVycm9yOiBmdW5jdGlvbihlbCwgZXJyKSB7CiAgICAgIHZhciAkZWwgPSAkKGVsKTsKCiAgICAgIHRoaXMuY2xlYXJFcnJvcihlbCk7CgogICAgICAvLyBBZGQgYWxsIHRoZXNlIGVycm9yIGNsYXNzZXMsIGFzIFNoaW55IGRvZXMKICAgICAgdmFyIGVyckNsYXNzID0gInNoaW55LW91dHB1dC1lcnJvciI7CiAgICAgIGlmIChlcnIudHlwZSAhPT0gbnVsbCkgewogICAgICAgIC8vIHVzZSB0aGUgY2xhc3NlcyBvZiB0aGUgZXJyb3IgY29uZGl0aW9uIGFzIENTUyBjbGFzcyBuYW1lcwogICAgICAgIGVyckNsYXNzID0gZXJyQ2xhc3MgKyAiICIgKyAkLm1hcChhc0FycmF5KGVyci50eXBlKSwgZnVuY3Rpb24odHlwZSkgewogICAgICAgICAgcmV0dXJuIGVyckNsYXNzICsgIi0iICsgdHlwZTsKICAgICAgICB9KS5qb2luKCIgIik7CiAgICAgIH0KICAgICAgZXJyQ2xhc3MgPSBlcnJDbGFzcyArICIgaHRtbHdpZGdldHMtZXJyb3IiOwoKICAgICAgLy8gSXMgZWwgaW5saW5lIG9yIGJsb2NrPyBJZiBpbmxpbmUgb3IgaW5saW5lLWJsb2NrLCBqdXN0IGRpc3BsYXk6bm9uZSBpdAogICAgICAvLyBhbmQgYWRkIGFuIGlubGluZSBlcnJvci4KICAgICAgdmFyIGRpc3BsYXkgPSAkZWwuY3NzKCJkaXNwbGF5Iik7CiAgICAgICRlbC5kYXRhKCJyZXN0b3JlLWRpc3BsYXktbW9kZSIsIGRpc3BsYXkpOwoKICAgICAgaWYgKGRpc3BsYXkgPT09ICJpbmxpbmUiIHx8IGRpc3BsYXkgPT09ICJpbmxpbmUtYmxvY2siKSB7CiAgICAgICAgJGVsLmhpZGUoKTsKICAgICAgICBpZiAoZXJyLm1lc3NhZ2UgIT09ICIiKSB7CiAgICAgICAgICB2YXIgZXJyb3JTcGFuID0gJCgiPHNwYW4+IikuYWRkQ2xhc3MoZXJyQ2xhc3MpOwogICAgICAgICAgZXJyb3JTcGFuLnRleHQoZXJyLm1lc3NhZ2UpOwogICAgICAgICAgJGVsLmFmdGVyKGVycm9yU3Bhbik7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGRpc3BsYXkgPT09ICJibG9jayIpIHsKICAgICAgICAvLyBJZiBibG9jaywgYWRkIGFuIGVycm9yIGp1c3QgYWZ0ZXIgdGhlIGVsLCBzZXQgdmlzaWJpbGl0eTpub25lIG9uIHRoZQogICAgICAgIC8vIGVsLCBhbmQgcG9zaXRpb24gdGhlIGVycm9yIHRvIGJlIG9uIHRvcCBvZiB0aGUgZWwuCiAgICAgICAgLy8gTWFyayBpdCB3aXRoIGEgdW5pcXVlIElEIGFuZCBDU1MgY2xhc3Mgc28gd2UgY2FuIHJlbW92ZSBpdCBsYXRlci4KICAgICAgICAkZWwuY3NzKCJ2aXNpYmlsaXR5IiwgImhpZGRlbiIpOwogICAgICAgIGlmIChlcnIubWVzc2FnZSAhPT0gIiIpIHsKICAgICAgICAgIHZhciBlcnJvckRpdiA9ICQoIjxkaXY+IikuYWRkQ2xhc3MoZXJyQ2xhc3MpLmNzcygicG9zaXRpb24iLCAiYWJzb2x1dGUiKQogICAgICAgICAgICAuY3NzKCJ0b3AiLCBlbC5vZmZzZXRUb3ApCiAgICAgICAgICAgIC5jc3MoImxlZnQiLCBlbC5vZmZzZXRMZWZ0KQogICAgICAgICAgICAvLyBzZXR0aW5nIHdpZHRoIGNhbiBwdXNoIG91dCB0aGUgcGFnZSBzaXplLCBmb3JjaW5nIG90aGVyd2lzZQogICAgICAgICAgICAvLyB1bm5lY2Vzc2FyeSBzY3JvbGxiYXJzIHRvIGFwcGVhciBhbmQgbWFraW5nIGl0IGltcG9zc2libGUgZm9yCiAgICAgICAgICAgIC8vIHRoZSBlbGVtZW50IHRvIHNocmluazsgc28gdXNlIG1heC13aWR0aCBpbnN0ZWFkCiAgICAgICAgICAgIC5jc3MoIm1heFdpZHRoIiwgZWwub2Zmc2V0V2lkdGgpCiAgICAgICAgICAgIC5jc3MoImhlaWdodCIsIGVsLm9mZnNldEhlaWdodCk7CiAgICAgICAgICBlcnJvckRpdi50ZXh0KGVyci5tZXNzYWdlKTsKICAgICAgICAgICRlbC5hZnRlcihlcnJvckRpdik7CgogICAgICAgICAgLy8gUmVhbGx5IGR1bWIgd2F5IHRvIGtlZXAgdGhlIHNpemUvcG9zaXRpb24gb2YgdGhlIGVycm9yIGluIHN5bmMgd2l0aAogICAgICAgICAgLy8gdGhlIHBhcmVudCBlbGVtZW50IGFzIHRoZSB3aW5kb3cgaXMgcmVzaXplZCBvciB3aGF0ZXZlci4KICAgICAgICAgIHZhciBpbnRJZCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAoIWVycm9yRGl2WzBdLnBhcmVudEVsZW1lbnQpIHsKICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludElkKTsKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZXJyb3JEaXYKICAgICAgICAgICAgICAuY3NzKCJ0b3AiLCBlbC5vZmZzZXRUb3ApCiAgICAgICAgICAgICAgLmNzcygibGVmdCIsIGVsLm9mZnNldExlZnQpCiAgICAgICAgICAgICAgLmNzcygibWF4V2lkdGgiLCBlbC5vZmZzZXRXaWR0aCkKICAgICAgICAgICAgICAuY3NzKCJoZWlnaHQiLCBlbC5vZmZzZXRIZWlnaHQpOwogICAgICAgICAgfSwgNTAwKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICBjbGVhckVycm9yOiBmdW5jdGlvbihlbCkgewogICAgICB2YXIgJGVsID0gJChlbCk7CiAgICAgIHZhciBkaXNwbGF5ID0gJGVsLmRhdGEoInJlc3RvcmUtZGlzcGxheS1tb2RlIik7CiAgICAgICRlbC5kYXRhKCJyZXN0b3JlLWRpc3BsYXktbW9kZSIsIG51bGwpOwoKICAgICAgaWYgKGRpc3BsYXkgPT09ICJpbmxpbmUiIHx8IGRpc3BsYXkgPT09ICJpbmxpbmUtYmxvY2siKSB7CiAgICAgICAgaWYgKGRpc3BsYXkpCiAgICAgICAgICAkZWwuY3NzKCJkaXNwbGF5IiwgZGlzcGxheSk7CiAgICAgICAgJChlbC5uZXh0U2libGluZykuZmlsdGVyKCIuaHRtbHdpZGdldHMtZXJyb3IiKS5yZW1vdmUoKTsKICAgICAgfSBlbHNlIGlmIChkaXNwbGF5ID09PSAiYmxvY2siKXsKICAgICAgICAkZWwuY3NzKCJ2aXNpYmlsaXR5IiwgImluaGVyaXQiKTsKICAgICAgICAkKGVsLm5leHRTaWJsaW5nKS5maWx0ZXIoIi5odG1sd2lkZ2V0cy1lcnJvciIpLnJlbW92ZSgpOwogICAgICB9CiAgICB9LAogICAgc2l6aW5nOiB7fQogIH07CgogIC8vIENhbGxlZCBieSB3aWRnZXQgYmluZGluZ3MgdG8gcmVnaXN0ZXIgYSBuZXcgdHlwZSBvZiB3aWRnZXQuIFRoZSBkZWZpbml0aW9uCiAgLy8gb2JqZWN0IGNhbiBjb250YWluIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKICAvLyAtIG5hbWUgKHJlcXVpcmVkKSAtIEEgc3RyaW5nIGluZGljYXRpbmcgdGhlIGJpbmRpbmcgbmFtZSwgd2hpY2ggd2lsbCBiZQogIC8vICAgdXNlZCBieSBkZWZhdWx0IGFzIHRoZSBDU1MgY2xhc3NuYW1lIHRvIGxvb2sgZm9yLgogIC8vIC0gaW5pdGlhbGl6ZSAob3B0aW9uYWwpIC0gQSBmdW5jdGlvbihlbCkgdGhhdCB3aWxsIGJlIGNhbGxlZCBvbmNlIHBlcgogIC8vICAgd2lkZ2V0IGVsZW1lbnQ7IGlmIGEgdmFsdWUgaXMgcmV0dXJuZWQsIGl0IHdpbGwgYmUgcGFzc2VkIGFzIHRoZSB0aGlyZAogIC8vICAgdmFsdWUgdG8gcmVuZGVyVmFsdWUuCiAgLy8gLSByZW5kZXJWYWx1ZSAocmVxdWlyZWQpIC0gQSBmdW5jdGlvbihlbCwgZGF0YSwgaW5pdFZhbHVlKSB0aGF0IHdpbGwgYmUKICAvLyAgIGNhbGxlZCB3aXRoIGRhdGEuIFN0YXRpYyBjb250ZXh0cyB3aWxsIGNhdXNlIHRoaXMgdG8gYmUgY2FsbGVkIG9uY2UgcGVyCiAgLy8gICBlbGVtZW50OyBTaGlueSBhcHBzIHdpbGwgY2F1c2UgdGhpcyB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgcGVyCiAgLy8gICBlbGVtZW50LCBhcyB0aGUgZGF0YSBjaGFuZ2VzLgogIHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXQgPSBmdW5jdGlvbihkZWZpbml0aW9uKSB7CiAgICBpZiAoIWRlZmluaXRpb24ubmFtZSkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldpZGdldCBtdXN0IGhhdmUgYSBuYW1lIik7CiAgICB9CiAgICBpZiAoIWRlZmluaXRpb24udHlwZSkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldpZGdldCBtdXN0IGhhdmUgYSB0eXBlIik7CiAgICB9CiAgICAvLyBDdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IG91dHB1dCB3aWRnZXRzCiAgICBpZiAoZGVmaW5pdGlvbi50eXBlICE9PSAib3V0cHV0IikgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB3aWRnZXQgdHlwZSAnIiArIGRlZmluaXRpb24udHlwZSArICInIik7CiAgICB9CiAgICAvLyBUT0RPOiBWZXJpZnkgdGhhdCAubmFtZSBpcyBhIHZhbGlkIENTUyBjbGFzc25hbWUKCiAgICAvLyBTdXBwb3J0IG5ldy1zdHlsZSBpbnN0YW5jZS1ib3VuZCBkZWZpbml0aW9ucy4gT2xkLXN0eWxlIGNsYXNzLWJvdW5kCiAgICAvLyBkZWZpbml0aW9ucyBoYXZlIG9uZSB3aWRnZXQgIm9iamVjdCIgcGVyIHdpZGdldCBwZXIgdHlwZS9jbGFzcyBvZgogICAgLy8gd2lkZ2V0OyB0aGUgcmVuZGVyVmFsdWUgYW5kIHJlc2l6ZSBtZXRob2RzIG9uIHN1Y2ggd2lkZ2V0IG9iamVjdHMKICAgIC8vIHRha2UgZWwgYW5kIGluc3RhbmNlIGFyZ3VtZW50cywgYmVjYXVzZSB0aGUgd2lkZ2V0IG9iamVjdCBjYW4ndAogICAgLy8gc3RvcmUgdGhlbS4gTmV3LXN0eWxlIGluc3RhbmNlLWJvdW5kIGRlZmluaXRpb25zIGhhdmUgb25lIHdpZGdldAogICAgLy8gb2JqZWN0IHBlciB3aWRnZXQgaW5zdGFuY2U7IHRoZSBkZWZpbml0aW9uIHRoYXQncyBwYXNzZWQgaW4gZG9lc24ndAogICAgLy8gcHJvdmlkZSByZW5kZXJWYWx1ZSBvciByZXNpemUgbWV0aG9kcyBhdCBhbGwsIGp1c3QgdGhlIHNpbmdsZSBtZXRob2QKICAgIC8vICAgZmFjdG9yeShlbCwgd2lkdGgsIGhlaWdodCkKICAgIC8vIHdoaWNoIHJldHVybnMgYW4gb2JqZWN0IHRoYXQgaGFzIHJlbmRlclZhbHVlKHgpIGFuZCByZXNpemUodywgaCkuCiAgICAvLyBUaGlzIGVuYWJsZXMgYSBmYXIgbW9yZSBuYXR1cmFsIHByb2dyYW1taW5nIHN0eWxlIGZvciB0aGUgd2lkZ2V0CiAgICAvLyBhdXRob3IsIHdobyBjYW4gc3RvcmUgcGVyLWluc3RhbmNlIHN0YXRlIHVzaW5nIGVpdGhlciBPTy1zdHlsZQogICAgLy8gaW5zdGFuY2UgZmllbGRzIG9yIGZ1bmN0aW9uYWwtc3R5bGUgY2xvc3VyZSB2YXJpYWJsZXMgKEkgZ3Vlc3MgdGhpcwogICAgLy8gaXMgaW4gY29udHJhc3QgdG8gd2hhdCBjYW4gb25seSBiZSBjYWxsZWQgQy1zdHlsZSBwc2V1ZG8tT08gd2hpY2ggaXMKICAgIC8vIHdoYXQgd2UgcmVxdWlyZWQgYmVmb3JlKS4KICAgIGlmIChkZWZpbml0aW9uLmZhY3RvcnkpIHsKICAgICAgZGVmaW5pdGlvbiA9IGNyZWF0ZUxlZ2FjeURlZmluaXRpb25BZGFwdGVyKGRlZmluaXRpb24pOwogICAgfQoKICAgIGlmICghZGVmaW5pdGlvbi5yZW5kZXJWYWx1ZSkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldpZGdldCBtdXN0IGhhdmUgYSByZW5kZXJWYWx1ZSBmdW5jdGlvbiIpOwogICAgfQoKICAgIC8vIEZvciBzdGF0aWMgcmVuZGVyaW5nIChub24tU2hpbnkpLCB1c2UgYSBzaW1wbGUgd2lkZ2V0IHJlZ2lzdHJhdGlvbgogICAgLy8gc2NoZW1lLiBXZSBhbHNvIHVzZSB0aGlzIHNjaGVtZSBmb3IgU2hpbnkgYXBwcy9kb2N1bWVudHMgdGhhdCBhbHNvCiAgICAvLyBjb250YWluIHN0YXRpYyB3aWRnZXRzLgogICAgd2luZG93LkhUTUxXaWRnZXRzLndpZGdldHMgPSB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cyB8fCBbXTsKICAgIC8vIE1lcmdlIGRlZmF1bHRzIGludG8gdGhlIGRlZmluaXRpb247IGRvbid0IG11dGF0ZSB0aGUgb3JpZ2luYWwgZGVmaW5pdGlvbi4KICAgIHZhciBzdGF0aWNCaW5kaW5nID0gZXh0ZW5kKHt9LCBkZWZhdWx0cywgZGVmaW5pdGlvbik7CiAgICBvdmVycmlkZU1ldGhvZChzdGF0aWNCaW5kaW5nLCAiZmluZCIsIGZ1bmN0aW9uKHN1cGVyZnVuYykgewogICAgICByZXR1cm4gZnVuY3Rpb24oc2NvcGUpIHsKICAgICAgICB2YXIgcmVzdWx0cyA9IHN1cGVyZnVuYyhzY29wZSk7CiAgICAgICAgLy8gRmlsdGVyIG91dCBTaGlueSBvdXRwdXRzLCB3ZSBvbmx5IHdhbnQgdGhlIHN0YXRpYyBraW5kCiAgICAgICAgcmV0dXJuIGZpbHRlckJ5Q2xhc3MocmVzdWx0cywgImh0bWwtd2lkZ2V0LW91dHB1dCIsIGZhbHNlKTsKICAgICAgfTsKICAgIH0pOwogICAgd2luZG93LkhUTUxXaWRnZXRzLndpZGdldHMucHVzaChzdGF0aWNCaW5kaW5nKTsKCiAgICBpZiAoc2hpbnlNb2RlKSB7CiAgICAgIC8vIFNoaW55IGlzIHJ1bm5pbmcuIFJlZ2lzdGVyIHRoZSBkZWZpbml0aW9uIHdpdGggYW4gb3V0cHV0IGJpbmRpbmcuCiAgICAgIC8vIFRoZSBkZWZpbml0aW9uIGl0c2VsZiB3aWxsIG5vdCBiZSB0aGUgb3V0cHV0IGJpbmRpbmcsIGluc3RlYWQKICAgICAgLy8gd2Ugd2lsbCBtYWtlIGFuIG91dHB1dCBiaW5kaW5nIG9iamVjdCB0aGF0IGRlbGVnYXRlcyB0byB0aGUKICAgICAgLy8gZGVmaW5pdGlvbi4gVGhpcyBpcyBiZWNhdXNlIHdlIGZvb2xpc2hseSB1c2VkIHRoZSBzYW1lIG1ldGhvZAogICAgICAvLyBuYW1lIChyZW5kZXJWYWx1ZSkgZm9yIGh0bWx3aWRnZXRzIGRlZmluaXRpb24gYW5kIFNoaW55IGJpbmRpbmdzCiAgICAgIC8vIGJ1dCB0aGV5IGFjdHVhbGx5IGhhdmUgcXVpdGUgZGlmZmVyZW50IHNlbWFudGljcyAodGhlIFNoaW55CiAgICAgIC8vIGJpbmRpbmdzIHJlY2VpdmUgZGF0YSB0aGF0IGluY2x1ZGVzIGxvdHMgb2YgbWV0YWRhdGEgdGhhdCBpdAogICAgICAvLyBzdHJpcHMgb2ZmIGJlZm9yZSBjYWxsaW5nIGh0bWx3aWRnZXRzIHJlbmRlclZhbHVlKS4gV2UgY2FuJ3QKICAgICAgLy8ganVzdCBpZ25vcmUgdGhlIGRpZmZlcmVuY2UgYmVjYXVzZSBpbiBzb21lIHdpZGdldHMgaXQncyBoZWxwZnVsCiAgICAgIC8vIHRvIGNhbGwgdGhpcy5yZW5kZXJWYWx1ZSgpIGZyb20gaW5zaWRlIG9mIHJlc2l6ZSgpLCBhbmQgaWYKICAgICAgLy8gd2UncmUgbm90IGRlbGVnYXRpbmcsIHRoZW4gdGhhdCBjYWxsIHdpbGwgZ28gdG8gdGhlIFNoaW55CiAgICAgIC8vIHZlcnNpb24gaW5zdGVhZCBvZiB0aGUgaHRtbHdpZGdldHMgdmVyc2lvbi4KCiAgICAgIC8vIE1lcmdlIGRlZmF1bHRzIHdpdGggZGVmaW5pdGlvbiwgd2l0aG91dCBtdXRhdGluZyBlaXRoZXIuCiAgICAgIHZhciBiaW5kaW5nRGVmID0gZXh0ZW5kKHt9LCBkZWZhdWx0cywgZGVmaW5pdGlvbik7CgogICAgICAvLyBUaGlzIG9iamVjdCB3aWxsIGJlIG91ciBhY3R1YWwgU2hpbnkgYmluZGluZy4KICAgICAgdmFyIHNoaW55QmluZGluZyA9IG5ldyBTaGlueS5PdXRwdXRCaW5kaW5nKCk7CgogICAgICAvLyBXaXRoIGEgZmV3IGV4Y2VwdGlvbnMsIHdlJ2xsIHdhbnQgdG8gc2ltcGx5IHVzZSB0aGUgYmluZGluZ0RlZidzCiAgICAgIC8vIHZlcnNpb24gb2YgbWV0aG9kcyBpZiB0aGV5IGFyZSBhdmFpbGFibGUsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8KICAgICAgLy8gU2hpbnkncyBkZWZhdWx0cy4gTk9URTogSWYgU2hpbnkncyBvdXRwdXQgYmluZGluZ3MgZ2FpbiBhZGRpdGlvbmFsCiAgICAgIC8vIG1ldGhvZHMgaW4gdGhlIGZ1dHVyZSwgYW5kIHdlIHdhbnQgdGhlbSB0byBiZSBvdmVycmlkZWFibGUgYnkKICAgICAgLy8gSFRNTFdpZGdldCBiaW5kaW5nIGRlZmluaXRpb25zLCB0aGVuIHdlJ2xsIG5lZWQgdG8gYWRkIHRoZW0gdG8gdGhpcwogICAgICAvLyBsaXN0LgogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJnZXRJZCIpOwogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJvblZhbHVlQ2hhbmdlIik7CiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgIm9uVmFsdWVFcnJvciIpOwogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJyZW5kZXJFcnJvciIpOwogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJjbGVhckVycm9yIik7CiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgInNob3dQcm9ncmVzcyIpOwoKICAgICAgLy8gVGhlIGZpbmQsIHJlbmRlclZhbHVlLCBhbmQgcmVzaXplIGFyZSBoYW5kbGVkIGRpZmZlcmVudGx5LCBiZWNhdXNlIHdlCiAgICAgIC8vIHdhbnQgdG8gYWN0dWFsbHkgZGVjb3JhdGUgdGhlIGJlaGF2aW9yIG9mIHRoZSBiaW5kaW5nRGVmIG1ldGhvZHMuCgogICAgICBzaGlueUJpbmRpbmcuZmluZCA9IGZ1bmN0aW9uKHNjb3BlKSB7CiAgICAgICAgdmFyIHJlc3VsdHMgPSBiaW5kaW5nRGVmLmZpbmQoc2NvcGUpOwoKICAgICAgICAvLyBPbmx5IHJldHVybiBlbGVtZW50cyB0aGF0IGFyZSBTaGlueSBvdXRwdXRzLCBub3Qgc3RhdGljIG9uZXMKICAgICAgICB2YXIgZHluYW1pY1Jlc3VsdHMgPSByZXN1bHRzLmZpbHRlcigiLmh0bWwtd2lkZ2V0LW91dHB1dCIpOwoKICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgd2hhdGV2ZXIgY2F1c2VkIFNoaW55IHRvIHRoaW5rIHRoZXJlIG1pZ2h0IGJlCiAgICAgICAgLy8gbmV3IGR5bmFtaWMgb3V0cHV0cywgYWxzbyBjYXVzZWQgdGhlcmUgdG8gYmUgbmV3IHN0YXRpYyBvdXRwdXRzLgogICAgICAgIC8vIFNpbmNlIHRoZXJlIG1pZ2h0IGJlIGxvdHMgb2YgZGlmZmVyZW50IGh0bWx3aWRnZXRzIGJpbmRpbmdzLCB3ZQogICAgICAgIC8vIHNjaGVkdWxlIGV4ZWN1dGlvbiBmb3IgbGF0ZXItLW5vIG5lZWQgdG8gc3RhdGljUmVuZGVyIG11bHRpcGxlCiAgICAgICAgLy8gdGltZXMuCiAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSBkeW5hbWljUmVzdWx0cy5sZW5ndGgpCiAgICAgICAgICBzY2hlZHVsZVN0YXRpY1JlbmRlcigpOwoKICAgICAgICByZXR1cm4gZHluYW1pY1Jlc3VsdHM7CiAgICAgIH07CgogICAgICAvLyBXcmFwIHJlbmRlclZhbHVlIHRvIGhhbmRsZSBpbml0aWFsaXphdGlvbiwgd2hpY2ggdW5mb3J0dW5hdGVseSBpc24ndAogICAgICAvLyBzdXBwb3J0ZWQgbmF0aXZlbHkgYnkgU2hpbnkgYXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLgoKICAgICAgc2hpbnlCaW5kaW5nLnJlbmRlclZhbHVlID0gZnVuY3Rpb24oZWwsIGRhdGEpIHsKICAgICAgICBTaGlueS5yZW5kZXJEZXBlbmRlbmNpZXMoZGF0YS5kZXBzKTsKICAgICAgICAvLyBSZXNvbHZlIHN0cmluZ3MgbWFya2VkIGFzIGphdmFzY3JpcHQgbGl0ZXJhbHMgdG8gb2JqZWN0cwogICAgICAgIGlmICghKGRhdGEuZXZhbHMgaW5zdGFuY2VvZiBBcnJheSkpIGRhdGEuZXZhbHMgPSBbZGF0YS5ldmFsc107CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGRhdGEuZXZhbHMgJiYgaSA8IGRhdGEuZXZhbHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5ldmFsdWF0ZVN0cmluZ01lbWJlcihkYXRhLngsIGRhdGEuZXZhbHNbaV0pOwogICAgICAgIH0KICAgICAgICBpZiAoIWJpbmRpbmdEZWYucmVuZGVyT25OdWxsVmFsdWUpIHsKICAgICAgICAgIGlmIChkYXRhLnggPT09IG51bGwpIHsKICAgICAgICAgICAgZWwuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlbC5zdHlsZS52aXNpYmlsaXR5ID0gImluaGVyaXQiOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoIWVsZW1lbnREYXRhKGVsLCAiaW5pdGlhbGl6ZWQiKSkgewogICAgICAgICAgaW5pdFNpemluZyhlbCk7CgogICAgICAgICAgZWxlbWVudERhdGEoZWwsICJpbml0aWFsaXplZCIsIHRydWUpOwogICAgICAgICAgaWYgKGJpbmRpbmdEZWYuaW5pdGlhbGl6ZSkgewogICAgICAgICAgICB2YXIgcmVzdWx0ID0gYmluZGluZ0RlZi5pbml0aWFsaXplKGVsLCBlbC5vZmZzZXRXaWR0aCwKICAgICAgICAgICAgICBlbC5vZmZzZXRIZWlnaHQpOwogICAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiwgcmVzdWx0KTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgYmluZGluZ0RlZi5yZW5kZXJWYWx1ZShlbCwgZGF0YS54LCBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IikpOwogICAgICAgIGV2YWxBbmRSdW4oZGF0YS5qc0hvb2tzLnJlbmRlciwgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpLCBbZWwsIGRhdGEueF0pOwogICAgICB9OwoKICAgICAgLy8gT25seSBvdmVycmlkZSByZXNpemUgaWYgYmluZGluZ0RlZiBpbXBsZW1lbnRzIGl0CiAgICAgIGlmIChiaW5kaW5nRGVmLnJlc2l6ZSkgewogICAgICAgIHNoaW55QmluZGluZy5yZXNpemUgPSBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCkgewogICAgICAgICAgLy8gU2hpbnkgY2FuIGNhbGwgcmVzaXplIGJlZm9yZSBpbml0aWFsaXplL3JlbmRlclZhbHVlIGhhdmUgYmVlbgogICAgICAgICAgLy8gY2FsbGVkLCB3aGljaCBkb2Vzbid0IG1ha2Ugc2Vuc2UgZm9yIHdpZGdldHMuCiAgICAgICAgICBpZiAoZWxlbWVudERhdGEoZWwsICJpbml0aWFsaXplZCIpKSB7CiAgICAgICAgICAgIGJpbmRpbmdEZWYucmVzaXplKGVsLCB3aWR0aCwgaGVpZ2h0LCBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IikpOwogICAgICAgICAgfQogICAgICAgIH07CiAgICAgIH0KCiAgICAgIFNoaW55Lm91dHB1dEJpbmRpbmdzLnJlZ2lzdGVyKHNoaW55QmluZGluZywgYmluZGluZ0RlZi5uYW1lKTsKICAgIH0KICB9OwoKICB2YXIgc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkID0gbnVsbDsKICBmdW5jdGlvbiBzY2hlZHVsZVN0YXRpY1JlbmRlcigpIHsKICAgIGlmICghc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkKSB7CiAgICAgIHNjaGVkdWxlU3RhdGljUmVuZGVyVGltZXJJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkID0gbnVsbDsKICAgICAgICB3aW5kb3cuSFRNTFdpZGdldHMuc3RhdGljUmVuZGVyKCk7CiAgICAgIH0sIDEpOwogICAgfQogIH0KCiAgLy8gUmVuZGVyIHN0YXRpYyB3aWRnZXRzIGFmdGVyIHRoZSBkb2N1bWVudCBmaW5pc2hlcyBsb2FkaW5nCiAgLy8gU3RhdGljYWxseSByZW5kZXIgYWxsIGVsZW1lbnRzIHRoYXQgYXJlIG9mIHRoaXMgd2lkZ2V0J3MgY2xhc3MKICB3aW5kb3cuSFRNTFdpZGdldHMuc3RhdGljUmVuZGVyID0gZnVuY3Rpb24oKSB7CiAgICB2YXIgYmluZGluZ3MgPSB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cyB8fCBbXTsKICAgIGZvckVhY2goYmluZGluZ3MsIGZ1bmN0aW9uKGJpbmRpbmcpIHsKICAgICAgdmFyIG1hdGNoZXMgPSBiaW5kaW5nLmZpbmQoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTsKICAgICAgZm9yRWFjaChtYXRjaGVzLCBmdW5jdGlvbihlbCkgewogICAgICAgIHZhciBzaXplT2JqID0gaW5pdFNpemluZyhlbCwgYmluZGluZyk7CgogICAgICAgIGlmIChoYXNDbGFzcyhlbCwgImh0bWwtd2lkZ2V0LXN0YXRpYy1ib3VuZCIpKQogICAgICAgICAgcmV0dXJuOwogICAgICAgIGVsLmNsYXNzTmFtZSA9IGVsLmNsYXNzTmFtZSArICIgaHRtbC13aWRnZXQtc3RhdGljLWJvdW5kIjsKCiAgICAgICAgdmFyIGluaXRSZXN1bHQ7CiAgICAgICAgaWYgKGJpbmRpbmcuaW5pdGlhbGl6ZSkgewogICAgICAgICAgaW5pdFJlc3VsdCA9IGJpbmRpbmcuaW5pdGlhbGl6ZShlbCwKICAgICAgICAgICAgc2l6ZU9iaiA/IHNpemVPYmouZ2V0V2lkdGgoKSA6IGVsLm9mZnNldFdpZHRoLAogICAgICAgICAgICBzaXplT2JqID8gc2l6ZU9iai5nZXRIZWlnaHQoKSA6IGVsLm9mZnNldEhlaWdodAogICAgICAgICAgKTsKICAgICAgICAgIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiLCBpbml0UmVzdWx0KTsKICAgICAgICB9CgogICAgICAgIGlmIChiaW5kaW5nLnJlc2l6ZSkgewogICAgICAgICAgdmFyIGxhc3RTaXplID0gewogICAgICAgICAgICB3OiBzaXplT2JqID8gc2l6ZU9iai5nZXRXaWR0aCgpIDogZWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgIGg6IHNpemVPYmogPyBzaXplT2JqLmdldEhlaWdodCgpIDogZWwub2Zmc2V0SGVpZ2h0CiAgICAgICAgICB9OwogICAgICAgICAgdmFyIHJlc2l6ZUhhbmRsZXIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBzaXplID0gewogICAgICAgICAgICAgIHc6IHNpemVPYmogPyBzaXplT2JqLmdldFdpZHRoKCkgOiBlbC5vZmZzZXRXaWR0aCwKICAgICAgICAgICAgICBoOiBzaXplT2JqID8gc2l6ZU9iai5nZXRIZWlnaHQoKSA6IGVsLm9mZnNldEhlaWdodAogICAgICAgICAgICB9OwogICAgICAgICAgICBpZiAoc2l6ZS53ID09PSAwICYmIHNpemUuaCA9PT0gMCkKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIGlmIChzaXplLncgPT09IGxhc3RTaXplLncgJiYgc2l6ZS5oID09PSBsYXN0U2l6ZS5oKQogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgbGFzdFNpemUgPSBzaXplOwogICAgICAgICAgICBiaW5kaW5nLnJlc2l6ZShlbCwgc2l6ZS53LCBzaXplLmgsIGluaXRSZXN1bHQpOwogICAgICAgICAgfTsKCiAgICAgICAgICBvbih3aW5kb3csICJyZXNpemUiLCByZXNpemVIYW5kbGVyKTsKCiAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBmb3IgY2FzZXMgd2hlcmUgd2UncmUgcnVubmluZyBpbiBhIFNoaW55CiAgICAgICAgICAvLyBhcHAsIGJ1dCB0aGUgd2lkZ2V0IGl0c2VsZiBpcyBub3QgYSBTaGlueSBvdXRwdXQsIGJ1dAogICAgICAgICAgLy8gcmF0aGVyIGEgc2ltcGxlIHN0YXRpYyB3aWRnZXQuIE9uZSBleGFtcGxlIG9mIHRoaXMgaXMKICAgICAgICAgIC8vIGFuIHJtYXJrZG93biBkb2N1bWVudCB0aGF0IGhhcyBydW50aW1lOnNoaW55IGFuZCB3aWRnZXQKICAgICAgICAgIC8vIHRoYXQgaXNuJ3QgaW4gYSByZW5kZXIgZnVuY3Rpb24uIFNoaW55IG9ubHkga25vd3MgdG8KICAgICAgICAgIC8vIGNhbGwgcmVzaXplIGhhbmRsZXJzIGZvciBTaGlueSBvdXRwdXRzLCBub3QgZm9yIHN0YXRpYwogICAgICAgICAgLy8gd2lkZ2V0cywgc28gd2UgZG8gaXQgb3Vyc2VsdmVzLgogICAgICAgICAgaWYgKHdpbmRvdy5qUXVlcnkpIHsKICAgICAgICAgICAgd2luZG93LmpRdWVyeShkb2N1bWVudCkub24oCiAgICAgICAgICAgICAgInNob3duLmh0bWx3aWRnZXRzIHNob3duLmJzLnRhYi5odG1sd2lkZ2V0cyBzaG93bi5icy5jb2xsYXBzZS5odG1sd2lkZ2V0cyIsCiAgICAgICAgICAgICAgcmVzaXplSGFuZGxlcgogICAgICAgICAgICApOwogICAgICAgICAgICB3aW5kb3cualF1ZXJ5KGRvY3VtZW50KS5vbigKICAgICAgICAgICAgICAiaGlkZGVuLmh0bWx3aWRnZXRzIGhpZGRlbi5icy50YWIuaHRtbHdpZGdldHMgaGlkZGVuLmJzLmNvbGxhcHNlLmh0bWx3aWRnZXRzIiwKICAgICAgICAgICAgICByZXNpemVIYW5kbGVyCiAgICAgICAgICAgICk7CiAgICAgICAgICB9CgogICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBzcGVjaWZpYyBjYXNlIG9mIGlvc2xpZGVzLCB3aGljaAogICAgICAgICAgLy8gZmxpcHMgc2xpZGVzIGJldHdlZW4gZGlzcGxheTpub25lIGFuZCBkaXNwbGF5OmJsb2NrLgogICAgICAgICAgLy8gSWRlYWxseSB3ZSB3b3VsZCBub3QgaGF2ZSB0byBoYXZlIGlvc2xpZGUtc3BlY2lmaWMgY29kZQogICAgICAgICAgLy8gaGVyZSwgYnV0IHJhdGhlciBoYXZlIGlvc2xpZGVzIHJhaXNlIGEgZ2VuZXJpYyBldmVudCwKICAgICAgICAgIC8vIGJ1dCB0aGUgcm1hcmtkb3duIHBhY2thZ2UganVzdCB3ZW50IHRvIENSQU4gc28gdGhlCiAgICAgICAgICAvLyB3aW5kb3cgdG8gZ2V0dGluZyB0aGF0IGZpeGVkIG1heSBiZSBsb25nLgogICAgICAgICAgaWYgKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKSB7CiAgICAgICAgICAgIC8vIEl0J3MgT0sgdG8gbGltaXQgdGhpcyB0byB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcgogICAgICAgICAgICAvLyBicm93c2VycyBiZWNhdXNlIGlvc2xpZGVzIGl0c2VsZiBvbmx5IHN1cHBvcnRzCiAgICAgICAgICAgIC8vIHN1Y2ggYnJvd3NlcnMuCiAgICAgICAgICAgIG9uKGRvY3VtZW50LCAic2xpZGVlbnRlciIsIHJlc2l6ZUhhbmRsZXIpOwogICAgICAgICAgICBvbihkb2N1bWVudCwgInNsaWRlbGVhdmUiLCByZXNpemVIYW5kbGVyKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHZhciBzY3JpcHREYXRhID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2NyaXB0W2RhdGEtZm9yPSciICsgZWwuaWQgKyAiJ11bdHlwZT0nYXBwbGljYXRpb24vanNvbiddIik7CiAgICAgICAgaWYgKHNjcmlwdERhdGEpIHsKICAgICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShzY3JpcHREYXRhLnRleHRDb250ZW50IHx8IHNjcmlwdERhdGEudGV4dCk7CiAgICAgICAgICAvLyBSZXNvbHZlIHN0cmluZ3MgbWFya2VkIGFzIGphdmFzY3JpcHQgbGl0ZXJhbHMgdG8gb2JqZWN0cwogICAgICAgICAgaWYgKCEoZGF0YS5ldmFscyBpbnN0YW5jZW9mIEFycmF5KSkgZGF0YS5ldmFscyA9IFtkYXRhLmV2YWxzXTsKICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBkYXRhLmV2YWxzICYmIGsgPCBkYXRhLmV2YWxzLmxlbmd0aDsgaysrKSB7CiAgICAgICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5ldmFsdWF0ZVN0cmluZ01lbWJlcihkYXRhLngsIGRhdGEuZXZhbHNba10pOwogICAgICAgICAgfQogICAgICAgICAgYmluZGluZy5yZW5kZXJWYWx1ZShlbCwgZGF0YS54LCBpbml0UmVzdWx0KTsKICAgICAgICAgIGV2YWxBbmRSdW4oZGF0YS5qc0hvb2tzLnJlbmRlciwgaW5pdFJlc3VsdCwgW2VsLCBkYXRhLnhdKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSk7CgogICAgaW52b2tlUG9zdFJlbmRlckhhbmRsZXJzKCk7CiAgfQoKCiAgZnVuY3Rpb24gaGFzX2pRdWVyeTMoKSB7CiAgICBpZiAoIXdpbmRvdy5qUXVlcnkpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgdmFyICR2ZXJzaW9uID0gd2luZG93LmpRdWVyeS5mbi5qcXVlcnk7CiAgICB2YXIgJG1ham9yX3ZlcnNpb24gPSBwYXJzZUludCgkdmVyc2lvbi5zcGxpdCgiLiIpWzBdKTsKICAgIHJldHVybiAkbWFqb3JfdmVyc2lvbiA+PSAzOwogIH0KCiAgLyoKICAvIFNoaW55IDEuNCBidW1wZWQgalF1ZXJ5IGZyb20gMS54IHRvIDMueCB3aGljaCBtZWFucyBqUXVlcnkncwogIC8gb24tcmVhZHkgaGFuZGxlciAoaS5lLiwgJChmbikpIGlzIG5vdyBhc3luY3Jvbm91cyAoaS5lLiwgaXQgbm93CiAgLyByZWFsbHkgbWVhbnMgJChzZXRUaW1lb3V0KGZuKSkuCiAgLyBodHRwczovL2pxdWVyeS5jb20vdXBncmFkZS1ndWlkZS8zLjAvI2JyZWFraW5nLWNoYW5nZS1kb2N1bWVudC1yZWFkeS1oYW5kbGVycy1hcmUtbm93LWFzeW5jaHJvbm91cwogIC8KICAvIFNpbmNlIFNoaW55IHVzZXMgJCgpIHRvIHNjaGVkdWxlIGluaXRTaGlueSwgc2hpbnk+PTEuNCBjYWxscyBpbml0U2hpbnkKICAvIG9uZSB0aWNrIGxhdGVyIHRoYW4gaXQgZGlkIGJlZm9yZSwgd2hpY2ggbWVhbnMgc3RhdGljUmVuZGVyKCkgaXMKICAvIGNhbGxlZCByZW5kZXJWYWx1ZSgpIGVhcmxpZXIgdGhhbiAoYWR2YW5jZWQpIHdpZGdldCBhdXRob3JzIG1pZ2h0IGJlIGV4cGVjdGluZy4KICAvIGh0dHBzOi8vZ2l0aHViLmNvbS9yc3R1ZGlvL3NoaW55L2lzc3Vlcy8yNjMwCiAgLwogIC8gRm9yIGEgY29uY3JldGUgZXhhbXBsZSwgbGVhZmxldCBoYXMgc29tZSBtZXRob2RzIChlLmcuLCB1cGRhdGVCb3VuZHMpCiAgLyB3aGljaCByZWZlcmVuY2UgU2hpbnkgbWV0aG9kcyByZWdpc3RlcmVkIGluIGluaXRTaGlueSAoZS5nLiwgc2V0SW5wdXRWYWx1ZSkuCiAgLyBTaW5jZSBsZWFmbGV0IGlzIHByaXZ5IHRvIHRoaXMgbGlmZS1jeWNsZSwgaXQga25vd3MgdG8gdXNlIHNldFRpbWVvdXQoKSB0bwogIC8gZGVsYXkgZXhlY3V0aW9uIG9mIHRob3NlIG1ldGhvZHMgKHVudGlsIFNoaW55IG1ldGhvZHMgYXJlIHJlYWR5KQogIC8gaHR0cHM6Ly9naXRodWIuY29tL3JzdHVkaW8vbGVhZmxldC9ibG9iLzE4ZWM5ODEvamF2YXNjcmlwdC9zcmMvaW5kZXguanMjTDI2Ni1MMjY4CiAgLwogIC8gSWRlYWxseSB3aWRnZXQgYXV0aG9ycyB3b3VsZG4ndCBuZWVkIHRvIHVzZSB0aGlzIHNldFRpbWVvdXQoKSBoYWNrIHRoYXQKICAvIGxlYWZsZXQgdXNlcyB0byBjYWxsIFNoaW55IG1ldGhvZHMgb24gYSBzdGF0aWNSZW5kZXIoKS4gSW4gdGhlIGxvbmcgcnVuLAogIC8gdGhlIGxvZ2ljIGluaXRTaGlueSBzaG91bGQgYmUgYnJva2VuIHVwIHNvIHRoYXQgbWV0aG9kIHJlZ2lzdHJhdGlvbiBoYXBwZW5zCiAgLyByaWdodCBhd2F5LCBidXQgYmluZGluZyBoYXBwZW5zIGxhdGVyLgogICovCiAgZnVuY3Rpb24gbWF5YmVTdGF0aWNSZW5kZXJMYXRlcigpIHsKICAgIGlmIChzaGlueU1vZGUgJiYgaGFzX2pRdWVyeTMoKSkgewogICAgICB3aW5kb3cualF1ZXJ5KHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIpOwogICAgfSBlbHNlIHsKICAgICAgd2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlcigpOwogICAgfQogIH0KCiAgaWYgKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBmdW5jdGlvbigpIHsKICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGFyZ3VtZW50cy5jYWxsZWUsIGZhbHNlKTsKICAgICAgbWF5YmVTdGF0aWNSZW5kZXJMYXRlcigpOwogICAgfSwgZmFsc2UpOwogIH0gZWxzZSBpZiAoZG9jdW1lbnQuYXR0YWNoRXZlbnQpIHsKICAgIGRvY3VtZW50LmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCBmdW5jdGlvbigpIHsKICAgICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICJjb21wbGV0ZSIpIHsKICAgICAgICBkb2N1bWVudC5kZXRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIiwgYXJndW1lbnRzLmNhbGxlZSk7CiAgICAgICAgbWF5YmVTdGF0aWNSZW5kZXJMYXRlcigpOwogICAgICB9CiAgICB9KTsKICB9CgoKICB3aW5kb3cuSFRNTFdpZGdldHMuZ2V0QXR0YWNobWVudFVybCA9IGZ1bmN0aW9uKGRlcG5hbWUsIGtleSkgewogICAgLy8gSWYgbm8ga2V5LCBkZWZhdWx0IHRvIHRoZSBmaXJzdCBpdGVtCiAgICBpZiAodHlwZW9mKGtleSkgPT09ICJ1bmRlZmluZWQiKQogICAgICBrZXkgPSAxOwoKICAgIHZhciBsaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGVwbmFtZSArICItIiArIGtleSArICItYXR0YWNobWVudCIpOwogICAgaWYgKCFsaW5rKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiQXR0YWNobWVudCAiICsgZGVwbmFtZSArICIvIiArIGtleSArICIgbm90IGZvdW5kIGluIGRvY3VtZW50Iik7CiAgICB9CiAgICByZXR1cm4gbGluay5nZXRBdHRyaWJ1dGUoImhyZWYiKTsKICB9OwoKICB3aW5kb3cuSFRNTFdpZGdldHMuZGF0YWZyYW1lVG9EMyA9IGZ1bmN0aW9uKGRmKSB7CiAgICB2YXIgbmFtZXMgPSBbXTsKICAgIHZhciBsZW5ndGg7CiAgICBmb3IgKHZhciBuYW1lIGluIGRmKSB7CiAgICAgICAgaWYgKGRmLmhhc093blByb3BlcnR5KG5hbWUpKQogICAgICAgICAgICBuYW1lcy5wdXNoKG5hbWUpOwogICAgICAgIGlmICh0eXBlb2YoZGZbbmFtZV0pICE9PSAib2JqZWN0IiB8fCB0eXBlb2YoZGZbbmFtZV0ubGVuZ3RoKSA9PT0gInVuZGVmaW5lZCIpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBbGwgZmllbGRzIG11c3QgYmUgYXJyYXlzIik7CiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YobGVuZ3RoKSAhPT0gInVuZGVmaW5lZCIgJiYgbGVuZ3RoICE9PSBkZltuYW1lXS5sZW5ndGgpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBbGwgZmllbGRzIG11c3QgYmUgYXJyYXlzIG9mIHRoZSBzYW1lIGxlbmd0aCIpOwogICAgICAgIH0KICAgICAgICBsZW5ndGggPSBkZltuYW1lXS5sZW5ndGg7CiAgICB9CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgdmFyIGl0ZW07CiAgICBmb3IgKHZhciByb3cgPSAwOyByb3cgPCBsZW5ndGg7IHJvdysrKSB7CiAgICAgICAgaXRlbSA9IHt9OwogICAgICAgIGZvciAodmFyIGNvbCA9IDA7IGNvbCA8IG5hbWVzLmxlbmd0aDsgY29sKyspIHsKICAgICAgICAgICAgaXRlbVtuYW1lc1tjb2xdXSA9IGRmW25hbWVzW2NvbF1dW3Jvd107CiAgICAgICAgfQogICAgICAgIHJlc3VsdHMucHVzaChpdGVtKTsKICAgIH0KICAgIHJldHVybiByZXN1bHRzOwogIH07CgogIHdpbmRvdy5IVE1MV2lkZ2V0cy50cmFuc3Bvc2VBcnJheTJEID0gZnVuY3Rpb24oYXJyYXkpIHsKICAgICAgaWYgKGFycmF5Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIGFycmF5OwogICAgICB2YXIgbmV3QXJyYXkgPSBhcnJheVswXS5tYXAoZnVuY3Rpb24oY29sLCBpKSB7CiAgICAgICAgICByZXR1cm4gYXJyYXkubWFwKGZ1bmN0aW9uKHJvdykgewogICAgICAgICAgICAgIHJldHVybiByb3dbaV0KICAgICAgICAgIH0pCiAgICAgIH0pOwogICAgICByZXR1cm4gbmV3QXJyYXk7CiAgfTsKICAvLyBTcGxpdCB2YWx1ZSBhdCBzcGxpdENoYXIsIGJ1dCBhbGxvdyBzcGxpdENoYXIgdG8gYmUgZXNjYXBlZAogIC8vIHVzaW5nIGVzY2FwZUNoYXIuIEFueSBvdGhlciBjaGFyYWN0ZXJzIGVzY2FwZWQgYnkgZXNjYXBlQ2hhcgogIC8vIHdpbGwgYmUgaW5jbHVkZWQgYXMgdXN1YWwgKGluY2x1ZGluZyBlc2NhcGVDaGFyIGl0c2VsZikuCiAgZnVuY3Rpb24gc3BsaXRXaXRoRXNjYXBlKHZhbHVlLCBzcGxpdENoYXIsIGVzY2FwZUNoYXIpIHsKICAgIHZhciByZXN1bHRzID0gW107CiAgICB2YXIgZXNjYXBlTW9kZSA9IGZhbHNlOwogICAgdmFyIGN1cnJlbnRSZXN1bHQgPSAiIjsKICAgIGZvciAodmFyIHBvcyA9IDA7IHBvcyA8IHZhbHVlLmxlbmd0aDsgcG9zKyspIHsKICAgICAgaWYgKCFlc2NhcGVNb2RlKSB7CiAgICAgICAgaWYgKHZhbHVlW3Bvc10gPT09IHNwbGl0Q2hhcikgewogICAgICAgICAgcmVzdWx0cy5wdXNoKGN1cnJlbnRSZXN1bHQpOwogICAgICAgICAgY3VycmVudFJlc3VsdCA9ICIiOwogICAgICAgIH0gZWxzZSBpZiAodmFsdWVbcG9zXSA9PT0gZXNjYXBlQ2hhcikgewogICAgICAgICAgZXNjYXBlTW9kZSA9IHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGN1cnJlbnRSZXN1bHQgKz0gdmFsdWVbcG9zXTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY3VycmVudFJlc3VsdCArPSB2YWx1ZVtwb3NdOwogICAgICAgIGVzY2FwZU1vZGUgPSBmYWxzZTsKICAgICAgfQogICAgfQogICAgaWYgKGN1cnJlbnRSZXN1bHQgIT09ICIiKSB7CiAgICAgIHJlc3VsdHMucHVzaChjdXJyZW50UmVzdWx0KTsKICAgIH0KICAgIHJldHVybiByZXN1bHRzOwogIH0KICAvLyBGdW5jdGlvbiBhdXRob3JlZCBieSBZaWh1aS9KSiBBbGxhaXJlCiAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyID0gZnVuY3Rpb24obywgbWVtYmVyKSB7CiAgICB2YXIgcGFydHMgPSBzcGxpdFdpdGhFc2NhcGUobWVtYmVyLCAnLicsICdcXCcpOwogICAgZm9yICh2YXIgaSA9IDAsIGwgPSBwYXJ0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKICAgICAgdmFyIHBhcnQgPSBwYXJ0c1tpXTsKICAgICAgLy8gcGFydCBtYXkgYmUgYSBjaGFyYWN0ZXIgb3IgJ251bWVyaWMnIG1lbWJlciBuYW1lCiAgICAgIGlmIChvICE9PSBudWxsICYmIHR5cGVvZiBvID09PSAib2JqZWN0IiAmJiBwYXJ0IGluIG8pIHsKICAgICAgICBpZiAoaSA9PSAobCAtIDEpKSB7IC8vIGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lIHRoZW4gZXZhbHVsYXRlCiAgICAgICAgICBpZiAodHlwZW9mIG9bcGFydF0gPT09ICJzdHJpbmciKQogICAgICAgICAgICBvW3BhcnRdID0gdHJ5RXZhbChvW3BhcnRdKTsKICAgICAgICB9IGVsc2UgeyAvLyBvdGhlcndpc2UgY29udGludWUgdG8gbmV4dCBlbWJlZGRlZCBvYmplY3QKICAgICAgICAgIG8gPSBvW3BhcnRdOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH07CgogIC8vIFJldHJpZXZlIHRoZSBIVE1MV2lkZ2V0IGluc3RhbmNlIChpLmUuIHRoZSByZXR1cm4gdmFsdWUgb2YgYW4KICAvLyBIVE1MV2lkZ2V0IGJpbmRpbmcncyBpbml0aWFsaXplKCkgb3IgZmFjdG9yeSgpIGZ1bmN0aW9uKQogIC8vIGFzc29jaWF0ZWQgd2l0aCBhbiBlbGVtZW50LCBvciBudWxsIGlmIG5vbmUuCiAgd2luZG93LkhUTUxXaWRnZXRzLmdldEluc3RhbmNlID0gZnVuY3Rpb24oZWwpIHsKICAgIHJldHVybiBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0Iik7CiAgfTsKCiAgLy8gRmluZHMgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIHNjb3BlIHRoYXQgbWF0Y2hlcyB0aGUgc2VsZWN0b3IsCiAgLy8gYW5kIHJldHVybnMgdGhlIEhUTUxXaWRnZXQgaW5zdGFuY2UgKGkuZS4gdGhlIHJldHVybiB2YWx1ZSBvZgogIC8vIGFuIEhUTUxXaWRnZXQgYmluZGluZydzIGluaXRpYWxpemUoKSBvciBmYWN0b3J5KCkgZnVuY3Rpb24pCiAgLy8gYXNzb2NpYXRlZCB3aXRoIHRoYXQgZWxlbWVudCwgaWYgYW55LiBJZiBubyBlbGVtZW50IG1hdGNoZXMgdGhlCiAgLy8gc2VsZWN0b3IsIG9yIHRoZSBmaXJzdCBtYXRjaGluZyBlbGVtZW50IGhhcyBubyBIVE1MV2lkZ2V0CiAgLy8gaW5zdGFuY2UgYXNzb2NpYXRlZCB3aXRoIGl0LCB0aGVuIG51bGwgaXMgcmV0dXJuZWQuCiAgLy8KICAvLyBUaGUgc2NvcGUgYXJndW1lbnQgaXMgb3B0aW9uYWwsIGFuZCBkZWZhdWx0cyB0byB3aW5kb3cuZG9jdW1lbnQuCiAgd2luZG93LkhUTUxXaWRnZXRzLmZpbmQgPSBmdW5jdGlvbihzY29wZSwgc2VsZWN0b3IpIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgc2VsZWN0b3IgPSBzY29wZTsKICAgICAgc2NvcGUgPSBkb2N1bWVudDsKICAgIH0KCiAgICB2YXIgZWwgPSBzY29wZS5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKICAgIGlmIChlbCA9PT0gbnVsbCkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiB3aW5kb3cuSFRNTFdpZGdldHMuZ2V0SW5zdGFuY2UoZWwpOwogICAgfQogIH07CgogIC8vIEZpbmRzIGFsbCBlbGVtZW50cyBpbiB0aGUgc2NvcGUgdGhhdCBtYXRjaCB0aGUgc2VsZWN0b3IsIGFuZAogIC8vIHJldHVybnMgdGhlIEhUTUxXaWRnZXQgaW5zdGFuY2VzIChpLmUuIHRoZSByZXR1cm4gdmFsdWVzIG9mCiAgLy8gYW4gSFRNTFdpZGdldCBiaW5kaW5nJ3MgaW5pdGlhbGl6ZSgpIG9yIGZhY3RvcnkoKSBmdW5jdGlvbikKICAvLyBhc3NvY2lhdGVkIHdpdGggdGhlIGVsZW1lbnRzLCBpbiBhbiBhcnJheS4gSWYgZWxlbWVudHMgdGhhdAogIC8vIG1hdGNoIHRoZSBzZWxlY3RvciBkb24ndCBoYXZlIGFuIGFzc29jaWF0ZWQgSFRNTFdpZGdldAogIC8vIGluc3RhbmNlLCB0aGUgcmV0dXJuZWQgYXJyYXkgd2lsbCBjb250YWluIG51bGxzLgogIC8vCiAgLy8gVGhlIHNjb3BlIGFyZ3VtZW50IGlzIG9wdGlvbmFsLCBhbmQgZGVmYXVsdHMgdG8gd2luZG93LmRvY3VtZW50LgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5maW5kQWxsID0gZnVuY3Rpb24oc2NvcGUsIHNlbGVjdG9yKSB7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSB7CiAgICAgIHNlbGVjdG9yID0gc2NvcGU7CiAgICAgIHNjb3BlID0gZG9jdW1lbnQ7CiAgICB9CgogICAgdmFyIG5vZGVzID0gc2NvcGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykgewogICAgICByZXN1bHRzLnB1c2god2luZG93LkhUTUxXaWRnZXRzLmdldEluc3RhbmNlKG5vZGVzW2ldKSk7CiAgICB9CiAgICByZXR1cm4gcmVzdWx0czsKICB9OwoKICB2YXIgcG9zdFJlbmRlckhhbmRsZXJzID0gW107CiAgZnVuY3Rpb24gaW52b2tlUG9zdFJlbmRlckhhbmRsZXJzKCkgewogICAgd2hpbGUgKHBvc3RSZW5kZXJIYW5kbGVycy5sZW5ndGgpIHsKICAgICAgdmFyIGhhbmRsZXIgPSBwb3N0UmVuZGVySGFuZGxlcnMuc2hpZnQoKTsKICAgICAgaWYgKGhhbmRsZXIpIHsKICAgICAgICBoYW5kbGVyKCk7CiAgICAgIH0KICAgIH0KICB9CgogIC8vIFJlZ2lzdGVyIHRoZSBnaXZlbiBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBpbnZva2VkIGFmdGVyIHRoZQogIC8vIG5leHQgdGltZSBzdGF0aWMgd2lkZ2V0cyBhcmUgcmVuZGVyZWQuCiAgd2luZG93LkhUTUxXaWRnZXRzLmFkZFBvc3RSZW5kZXJIYW5kbGVyID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgIHBvc3RSZW5kZXJIYW5kbGVycy5wdXNoKGNhbGxiYWNrKTsKICB9OwoKICAvLyBUYWtlcyBhIG5ldy1zdHlsZSBpbnN0YW5jZS1ib3VuZCBkZWZpbml0aW9uLCBhbmQgcmV0dXJucyBhbgogIC8vIG9sZC1zdHlsZSBjbGFzcy1ib3VuZCBkZWZpbml0aW9uLiBUaGlzIHNhdmVzIHVzIGZyb20gaGF2aW5nCiAgLy8gdG8gcmV3cml0ZSBhbGwgdGhlIGxvZ2ljIGluIHRoaXMgZmlsZSB0byBhY2NvbW9kYXRlIGJvdGgKICAvLyB0eXBlcyBvZiBkZWZpbml0aW9ucy4KICBmdW5jdGlvbiBjcmVhdGVMZWdhY3lEZWZpbml0aW9uQWRhcHRlcihkZWZuKSB7CiAgICB2YXIgcmVzdWx0ID0gewogICAgICBuYW1lOiBkZWZuLm5hbWUsCiAgICAgIHR5cGU6IGRlZm4udHlwZSwKICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQpIHsKICAgICAgICByZXR1cm4gZGVmbi5mYWN0b3J5KGVsLCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgfSwKICAgICAgcmVuZGVyVmFsdWU6IGZ1bmN0aW9uKGVsLCB4LCBpbnN0YW5jZSkgewogICAgICAgIHJldHVybiBpbnN0YW5jZS5yZW5kZXJWYWx1ZSh4KTsKICAgICAgfSwKICAgICAgcmVzaXplOiBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCwgaW5zdGFuY2UpIHsKICAgICAgICByZXR1cm4gaW5zdGFuY2UucmVzaXplKHdpZHRoLCBoZWlnaHQpOwogICAgICB9CiAgICB9OwoKICAgIGlmIChkZWZuLmZpbmQpCiAgICAgIHJlc3VsdC5maW5kID0gZGVmbi5maW5kOwogICAgaWYgKGRlZm4ucmVuZGVyRXJyb3IpCiAgICAgIHJlc3VsdC5yZW5kZXJFcnJvciA9IGRlZm4ucmVuZGVyRXJyb3I7CiAgICBpZiAoZGVmbi5jbGVhckVycm9yKQogICAgICByZXN1bHQuY2xlYXJFcnJvciA9IGRlZm4uY2xlYXJFcnJvcjsKCiAgICByZXR1cm4gcmVzdWx0OwogIH0KfSkoKTsKCg=="></script>
<script src="data:application/javascript;base64,IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLHQpe3JldHVybiB0Pm4/LTE6bj50PzE6bj49dD8wOjAvMH1mdW5jdGlvbiB0KG4pe3JldHVybiBudWxsPT09bj8wLzA6K259ZnVuY3Rpb24gZShuKXtyZXR1cm4haXNOYU4obil9ZnVuY3Rpb24gcihuKXtyZXR1cm57bGVmdDpmdW5jdGlvbih0LGUscix1KXtmb3IoYXJndW1lbnRzLmxlbmd0aDwzJiYocj0wKSxhcmd1bWVudHMubGVuZ3RoPDQmJih1PXQubGVuZ3RoKTt1PnI7KXt2YXIgaT1yK3U+Pj4xO24odFtpXSxlKTwwP3I9aSsxOnU9aX1yZXR1cm4gcn0scmlnaHQ6ZnVuY3Rpb24odCxlLHIsdSl7Zm9yKGFyZ3VtZW50cy5sZW5ndGg8MyYmKHI9MCksYXJndW1lbnRzLmxlbmd0aDw0JiYodT10Lmxlbmd0aCk7dT5yOyl7dmFyIGk9cit1Pj4+MTtuKHRbaV0sZSk+MD91PWk6cj1pKzF9cmV0dXJuIHJ9fX1mdW5jdGlvbiB1KG4pe3JldHVybiBuLmxlbmd0aH1mdW5jdGlvbiBpKG4pe2Zvcih2YXIgdD0xO24qdCUxOyl0Kj0xMDtyZXR1cm4gdH1mdW5jdGlvbiBvKG4sdCl7Zm9yKHZhciBlIGluIHQpT2JqZWN0LmRlZmluZVByb3BlcnR5KG4ucHJvdG90eXBlLGUse3ZhbHVlOnRbZV0sZW51bWVyYWJsZTohMX0pfWZ1bmN0aW9uIGEoKXt0aGlzLl89T2JqZWN0LmNyZWF0ZShudWxsKX1mdW5jdGlvbiBjKG4pe3JldHVybihuKz0iIik9PT1kYXx8blswXT09PW1hP21hK246bn1mdW5jdGlvbiBsKG4pe3JldHVybihuKz0iIilbMF09PT1tYT9uLnNsaWNlKDEpOm59ZnVuY3Rpb24gcyhuKXtyZXR1cm4gYyhuKWluIHRoaXMuX31mdW5jdGlvbiBmKG4pe3JldHVybihuPWMobikpaW4gdGhpcy5fJiZkZWxldGUgdGhpcy5fW25dfWZ1bmN0aW9uIGgoKXt2YXIgbj1bXTtmb3IodmFyIHQgaW4gdGhpcy5fKW4ucHVzaChsKHQpKTtyZXR1cm4gbn1mdW5jdGlvbiBnKCl7dmFyIG49MDtmb3IodmFyIHQgaW4gdGhpcy5fKSsrbjtyZXR1cm4gbn1mdW5jdGlvbiBwKCl7Zm9yKHZhciBuIGluIHRoaXMuXylyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiB2KCl7dGhpcy5fPU9iamVjdC5jcmVhdGUobnVsbCl9ZnVuY3Rpb24gZChuLHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9ZS5hcHBseSh0LGFyZ3VtZW50cyk7cmV0dXJuIHI9PT10P246cn19ZnVuY3Rpb24gbShuLHQpe2lmKHQgaW4gbilyZXR1cm4gdDt0PXQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKTtmb3IodmFyIGU9MCxyPXlhLmxlbmd0aDtyPmU7KytlKXt2YXIgdT15YVtlXSt0O2lmKHUgaW4gbilyZXR1cm4gdX19ZnVuY3Rpb24geSgpe31mdW5jdGlvbiBNKCl7fWZ1bmN0aW9uIHgobil7ZnVuY3Rpb24gdCgpe2Zvcih2YXIgdCxyPWUsdT0tMSxpPXIubGVuZ3RoOysrdTxpOykodD1yW3VdLm9uKSYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG59dmFyIGU9W10scj1uZXcgYTtyZXR1cm4gdC5vbj1mdW5jdGlvbih0LHUpe3ZhciBpLG89ci5nZXQodCk7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9vJiZvLm9uOihvJiYoby5vbj1udWxsLGU9ZS5zbGljZSgwLGk9ZS5pbmRleE9mKG8pKS5jb25jYXQoZS5zbGljZShpKzEpKSxyLnJlbW92ZSh0KSksdSYmZS5wdXNoKHIuc2V0KHQse29uOnV9KSksbil9LHR9ZnVuY3Rpb24gYigpe3RhLmV2ZW50LnByZXZlbnREZWZhdWx0KCl9ZnVuY3Rpb24gXygpe2Zvcih2YXIgbix0PXRhLmV2ZW50O249dC5zb3VyY2VFdmVudDspdD1uO3JldHVybiB0fWZ1bmN0aW9uIHcobil7Zm9yKHZhciB0PW5ldyBNLGU9MCxyPWFyZ3VtZW50cy5sZW5ndGg7KytlPHI7KXRbYXJndW1lbnRzW2VdXT14KHQpO3JldHVybiB0Lm9mPWZ1bmN0aW9uKGUscil7cmV0dXJuIGZ1bmN0aW9uKHUpe3RyeXt2YXIgaT11LnNvdXJjZUV2ZW50PXRhLmV2ZW50O3UudGFyZ2V0PW4sdGEuZXZlbnQ9dSx0W3UudHlwZV0uYXBwbHkoZSxyKX1maW5hbGx5e3RhLmV2ZW50PWl9fX0sdH1mdW5jdGlvbiBTKG4pe3JldHVybiB4YShuLGthKSxufWZ1bmN0aW9uIGsobil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpmdW5jdGlvbigpe3JldHVybiBiYShuLHRoaXMpfX1mdW5jdGlvbiBFKG4pe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuP246ZnVuY3Rpb24oKXtyZXR1cm4gX2Eobix0aGlzKX19ZnVuY3Rpb24gQShuLHQpe2Z1bmN0aW9uIGUoKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZShuKX1mdW5jdGlvbiByKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwpfWZ1bmN0aW9uIHUoKXt0aGlzLnNldEF0dHJpYnV0ZShuLHQpfWZ1bmN0aW9uIGkoKXt0aGlzLnNldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCx0KX1mdW5jdGlvbiBvKCl7dmFyIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09ZT90aGlzLnJlbW92ZUF0dHJpYnV0ZShuKTp0aGlzLnNldEF0dHJpYnV0ZShuLGUpfWZ1bmN0aW9uIGEoKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1lP3RoaXMucmVtb3ZlQXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCxlKX1yZXR1cm4gbj10YS5ucy5xdWFsaWZ5KG4pLG51bGw9PXQ/bi5sb2NhbD9yOmU6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/bi5sb2NhbD9hOm86bi5sb2NhbD9pOnV9ZnVuY3Rpb24gTihuKXtyZXR1cm4gbi50cmltKCkucmVwbGFjZSgvXHMrL2csIiAiKX1mdW5jdGlvbiBDKG4pe3JldHVybiBuZXcgUmVnRXhwKCIoPzpefFxccyspIit0YS5yZXF1b3RlKG4pKyIoPzpcXHMrfCQpIiwiZyIpfWZ1bmN0aW9uIHoobil7cmV0dXJuKG4rIiIpLnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiBxKG4sdCl7ZnVuY3Rpb24gZSgpe2Zvcih2YXIgZT0tMTsrK2U8dTspbltlXSh0aGlzLHQpfWZ1bmN0aW9uIHIoKXtmb3IodmFyIGU9LTEscj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTsrK2U8dTspbltlXSh0aGlzLHIpfW49eihuKS5tYXAoTCk7dmFyIHU9bi5sZW5ndGg7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/cjplfWZ1bmN0aW9uIEwobil7dmFyIHQ9QyhuKTtyZXR1cm4gZnVuY3Rpb24oZSxyKXtpZih1PWUuY2xhc3NMaXN0KXJldHVybiByP3UuYWRkKG4pOnUucmVtb3ZlKG4pO3ZhciB1PWUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIjtyPyh0Lmxhc3RJbmRleD0wLHQudGVzdCh1KXx8ZS5zZXRBdHRyaWJ1dGUoImNsYXNzIixOKHUrIiAiK24pKSk6ZS5zZXRBdHRyaWJ1dGUoImNsYXNzIixOKHUucmVwbGFjZSh0LCIgIikpKX19ZnVuY3Rpb24gVChuLHQsZSl7ZnVuY3Rpb24gcigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobil9ZnVuY3Rpb24gdSgpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkobix0LGUpfWZ1bmN0aW9uIGkoKXt2YXIgcj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1yP3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobik6dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShuLHIsZSl9cmV0dXJuIG51bGw9PXQ/cjoiZnVuY3Rpb24iPT10eXBlb2YgdD9pOnV9ZnVuY3Rpb24gUihuLHQpe2Z1bmN0aW9uIGUoKXtkZWxldGUgdGhpc1tuXX1mdW5jdGlvbiByKCl7dGhpc1tuXT10fWZ1bmN0aW9uIHUoKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1lP2RlbGV0ZSB0aGlzW25dOnRoaXNbbl09ZX1yZXR1cm4gbnVsbD09dD9lOiJmdW5jdGlvbiI9PXR5cGVvZiB0P3U6cn1mdW5jdGlvbiBEKG4pe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuP246KG49dGEubnMucXVhbGlmeShuKSkubG9jYWw/ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuLnNwYWNlLG4ubG9jYWwpfTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHRoaXMubmFtZXNwYWNlVVJJLG4pfX1mdW5jdGlvbiBQKCl7dmFyIG49dGhpcy5wYXJlbnROb2RlO24mJm4ucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gVShuKXtyZXR1cm57X19kYXRhX186bn19ZnVuY3Rpb24gaihuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gU2EodGhpcyxuKX19ZnVuY3Rpb24gRih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aHx8KHQ9biksZnVuY3Rpb24obixlKXtyZXR1cm4gbiYmZT90KG4uX19kYXRhX18sZS5fX2RhdGFfXyk6IW4tIWV9fWZ1bmN0aW9uIEgobix0KXtmb3IodmFyIGU9MCxyPW4ubGVuZ3RoO3I+ZTtlKyspZm9yKHZhciB1LGk9bltlXSxvPTAsYT1pLmxlbmd0aDthPm87bysrKSh1PWlbb10pJiZ0KHUsbyxlKTtyZXR1cm4gbn1mdW5jdGlvbiBPKG4pe3JldHVybiB4YShuLEFhKSxufWZ1bmN0aW9uIFkobil7dmFyIHQsZTtyZXR1cm4gZnVuY3Rpb24ocix1LGkpe3ZhciBvLGE9bltpXS51cGRhdGUsYz1hLmxlbmd0aDtmb3IoaSE9ZSYmKGU9aSx0PTApLHU+PXQmJih0PXUrMSk7IShvPWFbdF0pJiYrK3Q8YzspO3JldHVybiBvfX1mdW5jdGlvbiBJKG4sdCxlKXtmdW5jdGlvbiByKCl7dmFyIHQ9dGhpc1tvXTt0JiYodGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG4sdCx0LiQpLGRlbGV0ZSB0aGlzW29dKX1mdW5jdGlvbiB1KCl7dmFyIHU9Yyh0LHJhKGFyZ3VtZW50cykpO3IuY2FsbCh0aGlzKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIobix0aGlzW29dPXUsdS4kPWUpLHUuXz10fWZ1bmN0aW9uIGkoKXt2YXIgdCxlPW5ldyBSZWdFeHAoIl5fX29uKFteLl0rKSIrdGEucmVxdW90ZShuKSsiJCIpO2Zvcih2YXIgciBpbiB0aGlzKWlmKHQ9ci5tYXRjaChlKSl7dmFyIHU9dGhpc1tyXTt0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIodFsxXSx1LHUuJCksZGVsZXRlIHRoaXNbcl19fXZhciBvPSJfX29uIituLGE9bi5pbmRleE9mKCIuIiksYz1aO2E+MCYmKG49bi5zbGljZSgwLGEpKTt2YXIgbD1DYS5nZXQobik7cmV0dXJuIGwmJihuPWwsYz1WKSxhP3Q/dTpyOnQ/eTppfWZ1bmN0aW9uIFoobix0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHI9dGEuZXZlbnQ7dGEuZXZlbnQ9ZSx0WzBdPXRoaXMuX19kYXRhX187dHJ5e24uYXBwbHkodGhpcyx0KX1maW5hbGx5e3RhLmV2ZW50PXJ9fX1mdW5jdGlvbiBWKG4sdCl7dmFyIGU9WihuLHQpO3JldHVybiBmdW5jdGlvbihuKXt2YXIgdD10aGlzLHI9bi5yZWxhdGVkVGFyZ2V0O3ImJihyPT09dHx8OCZyLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpKXx8ZS5jYWxsKHQsbil9fWZ1bmN0aW9uIFgoKXt2YXIgbj0iLmRyYWdzdXBwcmVzcy0iKyArK3FhLHQ9ImNsaWNrIituLGU9dGEuc2VsZWN0KG9hKS5vbigidG91Y2htb3ZlIituLGIpLm9uKCJkcmFnc3RhcnQiK24sYikub24oInNlbGVjdHN0YXJ0IituLGIpO2lmKHphKXt2YXIgcj1pYS5zdHlsZSx1PXJbemFdO3JbemFdPSJub25lIn1yZXR1cm4gZnVuY3Rpb24oaSl7aWYoZS5vbihuLG51bGwpLHphJiYoclt6YV09dSksaSl7dmFyIG89ZnVuY3Rpb24oKXtlLm9uKHQsbnVsbCl9O2Uub24odCxmdW5jdGlvbigpe2IoKSxvKCl9LCEwKSxzZXRUaW1lb3V0KG8sMCl9fX1mdW5jdGlvbiAkKG4sdCl7dC5jaGFuZ2VkVG91Y2hlcyYmKHQ9dC5jaGFuZ2VkVG91Y2hlc1swXSk7dmFyIGU9bi5vd25lclNWR0VsZW1lbnR8fG47aWYoZS5jcmVhdGVTVkdQb2ludCl7dmFyIHI9ZS5jcmVhdGVTVkdQb2ludCgpO2lmKDA+TGEmJihvYS5zY3JvbGxYfHxvYS5zY3JvbGxZKSl7ZT10YS5zZWxlY3QoImJvZHkiKS5hcHBlbmQoInN2ZyIpLnN0eWxlKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDowLGxlZnQ6MCxtYXJnaW46MCxwYWRkaW5nOjAsYm9yZGVyOiJub25lIn0sImltcG9ydGFudCIpO3ZhciB1PWVbMF1bMF0uZ2V0U2NyZWVuQ1RNKCk7TGE9ISh1LmZ8fHUuZSksZS5yZW1vdmUoKX1yZXR1cm4gTGE/KHIueD10LnBhZ2VYLHIueT10LnBhZ2VZKTooci54PXQuY2xpZW50WCxyLnk9dC5jbGllbnRZKSxyPXIubWF0cml4VHJhbnNmb3JtKG4uZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpKSxbci54LHIueV19dmFyIGk9bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm5bdC5jbGllbnRYLWkubGVmdC1uLmNsaWVudExlZnQsdC5jbGllbnRZLWkudG9wLW4uY2xpZW50VG9wXX1mdW5jdGlvbiBCKCl7cmV0dXJuIHRhLmV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmlkZW50aWZpZXJ9ZnVuY3Rpb24gVygpe3JldHVybiB0YS5ldmVudC50YXJnZXR9ZnVuY3Rpb24gSigpe3JldHVybiBvYX1mdW5jdGlvbiBHKG4pe3JldHVybiBuPjA/MTowPm4/LTE6MH1mdW5jdGlvbiBLKG4sdCxlKXtyZXR1cm4odFswXS1uWzBdKSooZVsxXS1uWzFdKS0odFsxXS1uWzFdKSooZVswXS1uWzBdKX1mdW5jdGlvbiBRKG4pe3JldHVybiBuPjE/MDotMT5uP0RhOk1hdGguYWNvcyhuKX1mdW5jdGlvbiBudChuKXtyZXR1cm4gbj4xP2phOi0xPm4/LWphOk1hdGguYXNpbihuKX1mdW5jdGlvbiB0dChuKXtyZXR1cm4oKG49TWF0aC5leHAobikpLTEvbikvMn1mdW5jdGlvbiBldChuKXtyZXR1cm4oKG49TWF0aC5leHAobikpKzEvbikvMn1mdW5jdGlvbiBydChuKXtyZXR1cm4oKG49TWF0aC5leHAoMipuKSktMSkvKG4rMSl9ZnVuY3Rpb24gdXQobil7cmV0dXJuKG49TWF0aC5zaW4obi8yKSkqbn1mdW5jdGlvbiBpdCgpe31mdW5jdGlvbiBvdChuLHQsZSl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBvdD8odGhpcy5oPStuLHRoaXMucz0rdCx2b2lkKHRoaXMubD0rZSkpOmFyZ3VtZW50cy5sZW5ndGg8Mj9uIGluc3RhbmNlb2Ygb3Q/bmV3IG90KG4uaCxuLnMsbi5sKTp4dCgiIituLGJ0LG90KTpuZXcgb3Qobix0LGUpfWZ1bmN0aW9uIGF0KG4sdCxlKXtmdW5jdGlvbiByKG4pe3JldHVybiBuPjM2MD9uLT0zNjA6MD5uJiYobis9MzYwKSw2MD5uP2krKG8taSkqbi82MDoxODA+bj9vOjI0MD5uP2krKG8taSkqKDI0MC1uKS82MDppfWZ1bmN0aW9uIHUobil7cmV0dXJuIE1hdGgucm91bmQoMjU1KnIobikpfXZhciBpLG87cmV0dXJuIG49aXNOYU4obik/MDoobiU9MzYwKTwwP24rMzYwOm4sdD1pc05hTih0KT8wOjA+dD8wOnQ+MT8xOnQsZT0wPmU/MDplPjE/MTplLG89LjU+PWU/ZSooMSt0KTplK3QtZSp0LGk9MiplLW8sbmV3IGR0KHUobisxMjApLHUobiksdShuLTEyMCkpfWZ1bmN0aW9uIGN0KG4sdCxlKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGN0Pyh0aGlzLmg9K24sdGhpcy5jPSt0LHZvaWQodGhpcy5sPStlKSk6YXJndW1lbnRzLmxlbmd0aDwyP24gaW5zdGFuY2VvZiBjdD9uZXcgY3Qobi5oLG4uYyxuLmwpOm4gaW5zdGFuY2VvZiBzdD9odChuLmwsbi5hLG4uYik6aHQoKG49X3QoKG49dGEucmdiKG4pKS5yLG4uZyxuLmIpKS5sLG4uYSxuLmIpOm5ldyBjdChuLHQsZSl9ZnVuY3Rpb24gbHQobix0LGUpe3JldHVybiBpc05hTihuKSYmKG49MCksaXNOYU4odCkmJih0PTApLG5ldyBzdChlLE1hdGguY29zKG4qPUZhKSp0LE1hdGguc2luKG4pKnQpfWZ1bmN0aW9uIHN0KG4sdCxlKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIHN0Pyh0aGlzLmw9K24sdGhpcy5hPSt0LHZvaWQodGhpcy5iPStlKSk6YXJndW1lbnRzLmxlbmd0aDwyP24gaW5zdGFuY2VvZiBzdD9uZXcgc3Qobi5sLG4uYSxuLmIpOm4gaW5zdGFuY2VvZiBjdD9sdChuLmgsbi5jLG4ubCk6X3QoKG49ZHQobikpLnIsbi5nLG4uYik6bmV3IHN0KG4sdCxlKX1mdW5jdGlvbiBmdChuLHQsZSl7dmFyIHI9KG4rMTYpLzExNix1PXIrdC81MDAsaT1yLWUvMjAwO3JldHVybiB1PWd0KHUpKkphLHI9Z3QocikqR2EsaT1ndChpKSpLYSxuZXcgZHQodnQoMy4yNDA0NTQyKnUtMS41MzcxMzg1KnItLjQ5ODUzMTQqaSksdnQoLS45NjkyNjYqdSsxLjg3NjAxMDgqcisuMDQxNTU2KmkpLHZ0KC4wNTU2NDM0KnUtLjIwNDAyNTkqcisxLjA1NzIyNTIqaSkpfWZ1bmN0aW9uIGh0KG4sdCxlKXtyZXR1cm4gbj4wP25ldyBjdChNYXRoLmF0YW4yKGUsdCkqSGEsTWF0aC5zcXJ0KHQqdCtlKmUpLG4pOm5ldyBjdCgwLzAsMC8wLG4pfWZ1bmN0aW9uIGd0KG4pe3JldHVybiBuPi4yMDY4OTMwMzQ/bipuKm46KG4tNC8yOSkvNy43ODcwMzd9ZnVuY3Rpb24gcHQobil7cmV0dXJuIG4+LjAwODg1Nj9NYXRoLnBvdyhuLDEvMyk6Ny43ODcwMzcqbis0LzI5fWZ1bmN0aW9uIHZ0KG4pe3JldHVybiBNYXRoLnJvdW5kKDI1NSooLjAwMzA0Pj1uPzEyLjkyKm46MS4wNTUqTWF0aC5wb3cobiwxLzIuNCktLjA1NSkpfWZ1bmN0aW9uIGR0KG4sdCxlKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGR0Pyh0aGlzLnI9fn5uLHRoaXMuZz1+fnQsdm9pZCh0aGlzLmI9fn5lKSk6YXJndW1lbnRzLmxlbmd0aDwyP24gaW5zdGFuY2VvZiBkdD9uZXcgZHQobi5yLG4uZyxuLmIpOnh0KCIiK24sZHQsYXQpOm5ldyBkdChuLHQsZSl9ZnVuY3Rpb24gbXQobil7cmV0dXJuIG5ldyBkdChuPj4xNiwyNTUmbj4+OCwyNTUmbil9ZnVuY3Rpb24geXQobil7cmV0dXJuIG10KG4pKyIifWZ1bmN0aW9uIE10KG4pe3JldHVybiAxNj5uPyIwIitNYXRoLm1heCgwLG4pLnRvU3RyaW5nKDE2KTpNYXRoLm1pbigyNTUsbikudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIHh0KG4sdCxlKXt2YXIgcix1LGksbz0wLGE9MCxjPTA7aWYocj0vKFthLXpdKylcKCguKilcKS9pLmV4ZWMobikpc3dpdGNoKHU9clsyXS5zcGxpdCgiLCIpLHJbMV0pe2Nhc2UiaHNsIjpyZXR1cm4gZShwYXJzZUZsb2F0KHVbMF0pLHBhcnNlRmxvYXQodVsxXSkvMTAwLHBhcnNlRmxvYXQodVsyXSkvMTAwKTtjYXNlInJnYiI6cmV0dXJuIHQoU3QodVswXSksU3QodVsxXSksU3QodVsyXSkpfXJldHVybihpPXRjLmdldChuKSk/dChpLnIsaS5nLGkuYik6KG51bGw9PW58fCIjIiE9PW4uY2hhckF0KDApfHxpc05hTihpPXBhcnNlSW50KG4uc2xpY2UoMSksMTYpKXx8KDQ9PT1uLmxlbmd0aD8obz0oMzg0MCZpKT4+NCxvPW8+PjR8byxhPTI0MCZpLGE9YT4+NHxhLGM9MTUmaSxjPWM8PDR8Yyk6Nz09PW4ubGVuZ3RoJiYobz0oMTY3MTE2ODAmaSk+PjE2LGE9KDY1MjgwJmkpPj44LGM9MjU1JmkpKSx0KG8sYSxjKSl9ZnVuY3Rpb24gYnQobix0LGUpe3ZhciByLHUsaT1NYXRoLm1pbihuLz0yNTUsdC89MjU1LGUvPTI1NSksbz1NYXRoLm1heChuLHQsZSksYT1vLWksYz0obytpKS8yO3JldHVybiBhPyh1PS41PmM/YS8obytpKTphLygyLW8taSkscj1uPT1vPyh0LWUpL2ErKGU+dD82OjApOnQ9PW8/KGUtbikvYSsyOihuLXQpL2ErNCxyKj02MCk6KHI9MC8wLHU9Yz4wJiYxPmM/MDpyKSxuZXcgb3Qocix1LGMpfWZ1bmN0aW9uIF90KG4sdCxlKXtuPXd0KG4pLHQ9d3QodCksZT13dChlKTt2YXIgcj1wdCgoLjQxMjQ1NjQqbisuMzU3NTc2MSp0Ky4xODA0Mzc1KmUpL0phKSx1PXB0KCguMjEyNjcyOSpuKy43MTUxNTIyKnQrLjA3MjE3NSplKS9HYSksaT1wdCgoLjAxOTMzMzkqbisuMTE5MTkyKnQrLjk1MDMwNDEqZSkvS2EpO3JldHVybiBzdCgxMTYqdS0xNiw1MDAqKHItdSksMjAwKih1LWkpKX1mdW5jdGlvbiB3dChuKXtyZXR1cm4obi89MjU1KTw9LjA0MDQ1P24vMTIuOTI6TWF0aC5wb3coKG4rLjA1NSkvMS4wNTUsMi40KX1mdW5jdGlvbiBTdChuKXt2YXIgdD1wYXJzZUZsb2F0KG4pO3JldHVybiIlIj09PW4uY2hhckF0KG4ubGVuZ3RoLTEpP01hdGgucm91bmQoMi41NSp0KTp0fWZ1bmN0aW9uIGt0KG4pe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuP246ZnVuY3Rpb24oKXtyZXR1cm4gbn19ZnVuY3Rpb24gRXQobil7cmV0dXJuIG59ZnVuY3Rpb24gQXQobil7cmV0dXJuIGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gMj09PWFyZ3VtZW50cy5sZW5ndGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBlJiYocj1lLGU9bnVsbCksTnQodCxlLG4scil9fWZ1bmN0aW9uIE50KG4sdCxlLHIpe2Z1bmN0aW9uIHUoKXt2YXIgbix0PWMuc3RhdHVzO2lmKCF0JiZ6dChjKXx8dD49MjAwJiYzMDA+dHx8MzA0PT09dCl7dHJ5e249ZS5jYWxsKGksYyl9Y2F0Y2gocil7cmV0dXJuIG8uZXJyb3IuY2FsbChpLHIpLHZvaWQgMH1vLmxvYWQuY2FsbChpLG4pfWVsc2Ugby5lcnJvci5jYWxsKGksYyl9dmFyIGk9e30sbz10YS5kaXNwYXRjaCgiYmVmb3Jlc2VuZCIsInByb2dyZXNzIiwibG9hZCIsImVycm9yIiksYT17fSxjPW5ldyBYTUxIdHRwUmVxdWVzdCxsPW51bGw7cmV0dXJuIW9hLlhEb21haW5SZXF1ZXN0fHwid2l0aENyZWRlbnRpYWxzImluIGN8fCEvXihodHRwKHMpPzopP1wvXC8vLnRlc3Qobil8fChjPW5ldyBYRG9tYWluUmVxdWVzdCksIm9ubG9hZCJpbiBjP2Mub25sb2FkPWMub25lcnJvcj11OmMub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7Yy5yZWFkeVN0YXRlPjMmJnUoKX0sYy5vbnByb2dyZXNzPWZ1bmN0aW9uKG4pe3ZhciB0PXRhLmV2ZW50O3RhLmV2ZW50PW47dHJ5e28ucHJvZ3Jlc3MuY2FsbChpLGMpfWZpbmFsbHl7dGEuZXZlbnQ9dH19LGkuaGVhZGVyPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG49KG4rIiIpLnRvTG93ZXJDYXNlKCksYXJndW1lbnRzLmxlbmd0aDwyP2Fbbl06KG51bGw9PXQ/ZGVsZXRlIGFbbl06YVtuXT10KyIiLGkpfSxpLm1pbWVUeXBlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW51bGw9PW4/bnVsbDpuKyIiLGkpOnR9LGkucmVzcG9uc2VUeXBlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPW4saSk6bH0saS5yZXNwb25zZT1mdW5jdGlvbihuKXtyZXR1cm4gZT1uLGl9LFsiZ2V0IiwicG9zdCJdLmZvckVhY2goZnVuY3Rpb24obil7aVtuXT1mdW5jdGlvbigpe3JldHVybiBpLnNlbmQuYXBwbHkoaSxbbl0uY29uY2F0KHJhKGFyZ3VtZW50cykpKX19KSxpLnNlbmQ9ZnVuY3Rpb24oZSxyLHUpe2lmKDI9PT1hcmd1bWVudHMubGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2YgciYmKHU9cixyPW51bGwpLGMub3BlbihlLG4sITApLG51bGw9PXR8fCJhY2NlcHQiaW4gYXx8KGEuYWNjZXB0PXQrIiwqLyoiKSxjLnNldFJlcXVlc3RIZWFkZXIpZm9yKHZhciBzIGluIGEpYy5zZXRSZXF1ZXN0SGVhZGVyKHMsYVtzXSk7cmV0dXJuIG51bGwhPXQmJmMub3ZlcnJpZGVNaW1lVHlwZSYmYy5vdmVycmlkZU1pbWVUeXBlKHQpLG51bGwhPWwmJihjLnJlc3BvbnNlVHlwZT1sKSxudWxsIT11JiZpLm9uKCJlcnJvciIsdSkub24oImxvYWQiLGZ1bmN0aW9uKG4pe3UobnVsbCxuKX0pLG8uYmVmb3Jlc2VuZC5jYWxsKGksYyksYy5zZW5kKG51bGw9PXI/bnVsbDpyKSxpfSxpLmFib3J0PWZ1bmN0aW9uKCl7cmV0dXJuIGMuYWJvcnQoKSxpfSx0YS5yZWJpbmQoaSxvLCJvbiIpLG51bGw9PXI/aTppLmdldChDdChyKSl9ZnVuY3Rpb24gQ3Qobil7cmV0dXJuIDE9PT1uLmxlbmd0aD9mdW5jdGlvbih0LGUpe24obnVsbD09dD9lOm51bGwpfTpufWZ1bmN0aW9uIHp0KG4pe3ZhciB0PW4ucmVzcG9uc2VUeXBlO3JldHVybiB0JiYidGV4dCIhPT10P24ucmVzcG9uc2U6bi5yZXNwb25zZVRleHR9ZnVuY3Rpb24gcXQoKXt2YXIgbj1MdCgpLHQ9VHQoKS1uO3Q+MjQ/KGlzRmluaXRlKHQpJiYoY2xlYXJUaW1lb3V0KGljKSxpYz1zZXRUaW1lb3V0KHF0LHQpKSx1Yz0wKToodWM9MSxhYyhxdCkpfWZ1bmN0aW9uIEx0KCl7dmFyIG49RGF0ZS5ub3coKTtmb3Iob2M9ZWM7b2M7KW4+PW9jLnQmJihvYy5mPW9jLmMobi1vYy50KSksb2M9b2MubjtyZXR1cm4gbn1mdW5jdGlvbiBUdCgpe2Zvcih2YXIgbix0PWVjLGU9MS8wO3Q7KXQuZj90PW4/bi5uPXQubjplYz10Lm46KHQudDxlJiYoZT10LnQpLHQ9KG49dCkubik7cmV0dXJuIHJjPW4sZX1mdW5jdGlvbiBSdChuLHQpe3JldHVybiB0LShuP01hdGguY2VpbChNYXRoLmxvZyhuKS9NYXRoLkxOMTApOjEpfWZ1bmN0aW9uIER0KG4sdCl7dmFyIGU9TWF0aC5wb3coMTAsMyp2YSg4LXQpKTtyZXR1cm57c2NhbGU6dD44P2Z1bmN0aW9uKG4pe3JldHVybiBuL2V9OmZ1bmN0aW9uKG4pe3JldHVybiBuKmV9LHN5bWJvbDpufX1mdW5jdGlvbiBQdChuKXt2YXIgdD1uLmRlY2ltYWwsZT1uLnRob3VzYW5kcyxyPW4uZ3JvdXBpbmcsdT1uLmN1cnJlbmN5LGk9ciYmZT9mdW5jdGlvbihuLHQpe2Zvcih2YXIgdT1uLmxlbmd0aCxpPVtdLG89MCxhPXJbMF0sYz0wO3U+MCYmYT4wJiYoYythKzE+dCYmKGE9TWF0aC5tYXgoMSx0LWMpKSxpLnB1c2gobi5zdWJzdHJpbmcodS09YSx1K2EpKSwhKChjKz1hKzEpPnQpKTspYT1yW289KG8rMSklci5sZW5ndGhdO3JldHVybiBpLnJldmVyc2UoKS5qb2luKGUpfTpFdDtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGU9bGMuZXhlYyhuKSxyPWVbMV18fCIgIixvPWVbMl18fCI+IixhPWVbM118fCItIixjPWVbNF18fCIiLGw9ZVs1XSxzPStlWzZdLGY9ZVs3XSxoPWVbOF0sZz1lWzldLHA9MSx2PSIiLGQ9IiIsbT0hMSx5PSEwO3N3aXRjaChoJiYoaD0raC5zdWJzdHJpbmcoMSkpLChsfHwiMCI9PT1yJiYiPSI9PT1vKSYmKGw9cj0iMCIsbz0iPSIpLGcpe2Nhc2UibiI6Zj0hMCxnPSJnIjticmVhaztjYXNlIiUiOnA9MTAwLGQ9IiUiLGc9ImYiO2JyZWFrO2Nhc2UicCI6cD0xMDAsZD0iJSIsZz0iciI7YnJlYWs7Y2FzZSJiIjpjYXNlIm8iOmNhc2UieCI6Y2FzZSJYIjoiIyI9PT1jJiYodj0iMCIrZy50b0xvd2VyQ2FzZSgpKTtjYXNlImMiOnk9ITE7Y2FzZSJkIjptPSEwLGg9MDticmVhaztjYXNlInMiOnA9LTEsZz0iciJ9IiQiPT09YyYmKHY9dVswXSxkPXVbMV0pLCJyIiE9Z3x8aHx8KGc9ImciKSxudWxsIT1oJiYoImciPT1nP2g9TWF0aC5tYXgoMSxNYXRoLm1pbigyMSxoKSk6KCJlIj09Z3x8ImYiPT1nKSYmKGg9TWF0aC5tYXgoMCxNYXRoLm1pbigyMCxoKSkpKSxnPXNjLmdldChnKXx8VXQ7dmFyIE09bCYmZjtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGU9ZDtpZihtJiZuJTEpcmV0dXJuIiI7dmFyIHU9MD5ufHwwPT09biYmMD4xL24/KG49LW4sIi0iKToiLSI9PT1hPyIiOmE7aWYoMD5wKXt2YXIgYz10YS5mb3JtYXRQcmVmaXgobixoKTtuPWMuc2NhbGUobiksZT1jLnN5bWJvbCtkfWVsc2Ugbio9cDtuPWcobixoKTt2YXIgeCxiLF89bi5sYXN0SW5kZXhPZigiLiIpO2lmKDA+Xyl7dmFyIHc9eT9uLmxhc3RJbmRleE9mKCJlIik6LTE7MD53Pyh4PW4sYj0iIik6KHg9bi5zdWJzdHJpbmcoMCx3KSxiPW4uc3Vic3RyaW5nKHcpKX1lbHNlIHg9bi5zdWJzdHJpbmcoMCxfKSxiPXQrbi5zdWJzdHJpbmcoXysxKTshbCYmZiYmKHg9aSh4LDEvMCkpO3ZhciBTPXYubGVuZ3RoK3gubGVuZ3RoK2IubGVuZ3RoKyhNPzA6dS5sZW5ndGgpLGs9cz5TP25ldyBBcnJheShTPXMtUysxKS5qb2luKHIpOiIiO3JldHVybiBNJiYoeD1pKGsreCxrLmxlbmd0aD9zLWIubGVuZ3RoOjEvMCkpLHUrPXYsbj14K2IsKCI8Ij09PW8/dStuK2s6Ij4iPT09bz9rK3UrbjoiXiI9PT1vP2suc3Vic3RyaW5nKDAsUz4+PTEpK3UrbitrLnN1YnN0cmluZyhTKTp1KyhNP246aytuKSkrZX19fWZ1bmN0aW9uIFV0KG4pe3JldHVybiBuKyIifWZ1bmN0aW9uIGp0KCl7dGhpcy5fPW5ldyBEYXRlKGFyZ3VtZW50cy5sZW5ndGg+MT9EYXRlLlVUQy5hcHBseSh0aGlzLGFyZ3VtZW50cyk6YXJndW1lbnRzWzBdKX1mdW5jdGlvbiBGdChuLHQsZSl7ZnVuY3Rpb24gcih0KXt2YXIgZT1uKHQpLHI9aShlLDEpO3JldHVybiByLXQ+dC1lP2U6cn1mdW5jdGlvbiB1KGUpe3JldHVybiB0KGU9bihuZXcgaGMoZS0xKSksMSksZX1mdW5jdGlvbiBpKG4sZSl7cmV0dXJuIHQobj1uZXcgaGMoK24pLGUpLG59ZnVuY3Rpb24gbyhuLHIsaSl7dmFyIG89dShuKSxhPVtdO2lmKGk+MSlmb3IoO3I+bzspZShvKSVpfHxhLnB1c2gobmV3IERhdGUoK28pKSx0KG8sMSk7ZWxzZSBmb3IoO3I+bzspYS5wdXNoKG5ldyBEYXRlKCtvKSksdChvLDEpO3JldHVybiBhfWZ1bmN0aW9uIGEobix0LGUpe3RyeXtoYz1qdDt2YXIgcj1uZXcganQ7cmV0dXJuIHIuXz1uLG8ocix0LGUpfWZpbmFsbHl7aGM9RGF0ZX19bi5mbG9vcj1uLG4ucm91bmQ9cixuLmNlaWw9dSxuLm9mZnNldD1pLG4ucmFuZ2U9bzt2YXIgYz1uLnV0Yz1IdChuKTtyZXR1cm4gYy5mbG9vcj1jLGMucm91bmQ9SHQociksYy5jZWlsPUh0KHUpLGMub2Zmc2V0PUh0KGkpLGMucmFuZ2U9YSxufWZ1bmN0aW9uIEh0KG4pe3JldHVybiBmdW5jdGlvbih0LGUpe3RyeXtoYz1qdDt2YXIgcj1uZXcganQ7cmV0dXJuIHIuXz10LG4ocixlKS5ffWZpbmFsbHl7aGM9RGF0ZX19fWZ1bmN0aW9uIE90KG4pe2Z1bmN0aW9uIHQobil7ZnVuY3Rpb24gdCh0KXtmb3IodmFyIGUsdSxpLG89W10sYT0tMSxjPTA7KythPHI7KTM3PT09bi5jaGFyQ29kZUF0KGEpJiYoby5wdXNoKG4uc2xpY2UoYyxhKSksbnVsbCE9KHU9cGNbZT1uLmNoYXJBdCgrK2EpXSkmJihlPW4uY2hhckF0KCsrYSkpLChpPU5bZV0pJiYoZT1pKHQsbnVsbD09dT8iZSI9PT1lPyIgIjoiMCI6dSkpLG8ucHVzaChlKSxjPWErMSk7cmV0dXJuIG8ucHVzaChuLnNsaWNlKGMsYSkpLG8uam9pbigiIil9dmFyIHI9bi5sZW5ndGg7cmV0dXJuIHQucGFyc2U9ZnVuY3Rpb24odCl7dmFyIHI9e3k6MTkwMCxtOjAsZDoxLEg6MCxNOjAsUzowLEw6MCxaOm51bGx9LHU9ZShyLG4sdCwwKTtpZih1IT10Lmxlbmd0aClyZXR1cm4gbnVsbDsicCJpbiByJiYoci5IPXIuSCUxMisxMipyLnApO3ZhciBpPW51bGwhPXIuWiYmaGMhPT1qdCxvPW5ldyhpP2p0OmhjKTtyZXR1cm4iaiJpbiByP28uc2V0RnVsbFllYXIoci55LDAsci5qKToidyJpbiByJiYoIlciaW4gcnx8IlUiaW4gcik/KG8uc2V0RnVsbFllYXIoci55LDAsMSksby5zZXRGdWxsWWVhcihyLnksMCwiVyJpbiByPyhyLncrNiklNys3KnIuVy0oby5nZXREYXkoKSs1KSU3OnIudys3KnIuVS0oby5nZXREYXkoKSs2KSU3KSk6by5zZXRGdWxsWWVhcihyLnksci5tLHIuZCksby5zZXRIb3VycyhyLkgrKDB8ci5aLzEwMCksci5NK3IuWiUxMDAsci5TLHIuTCksaT9vLl86b30sdC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBufSx0fWZ1bmN0aW9uIGUobix0LGUscil7Zm9yKHZhciB1LGksbyxhPTAsYz10Lmxlbmd0aCxsPWUubGVuZ3RoO2M+YTspe2lmKHI+PWwpcmV0dXJuLTE7aWYodT10LmNoYXJDb2RlQXQoYSsrKSwzNz09PXUpe2lmKG89dC5jaGFyQXQoYSsrKSxpPUNbbyBpbiBwYz90LmNoYXJBdChhKyspOm9dLCFpfHwocj1pKG4sZSxyKSk8MClyZXR1cm4tMX1lbHNlIGlmKHUhPWUuY2hhckNvZGVBdChyKyspKXJldHVybi0xfXJldHVybiByfWZ1bmN0aW9uIHIobix0LGUpe18ubGFzdEluZGV4PTA7dmFyIHI9Xy5leGVjKHQuc2xpY2UoZSkpO3JldHVybiByPyhuLnc9dy5nZXQoclswXS50b0xvd2VyQ2FzZSgpKSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB1KG4sdCxlKXt4Lmxhc3RJbmRleD0wO3ZhciByPXguZXhlYyh0LnNsaWNlKGUpKTtyZXR1cm4gcj8obi53PWIuZ2V0KHJbMF0udG9Mb3dlckNhc2UoKSksZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gaShuLHQsZSl7RS5sYXN0SW5kZXg9MDt2YXIgcj1FLmV4ZWModC5zbGljZShlKSk7cmV0dXJuIHI/KG4ubT1BLmdldChyWzBdLnRvTG93ZXJDYXNlKCkpLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIG8obix0LGUpe1MubGFzdEluZGV4PTA7dmFyIHI9Uy5leGVjKHQuc2xpY2UoZSkpO3JldHVybiByPyhuLm09ay5nZXQoclswXS50b0xvd2VyQ2FzZSgpKSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBhKG4sdCxyKXtyZXR1cm4gZShuLE4uYy50b1N0cmluZygpLHQscil9ZnVuY3Rpb24gYyhuLHQscil7cmV0dXJuIGUobixOLngudG9TdHJpbmcoKSx0LHIpfWZ1bmN0aW9uIGwobix0LHIpe3JldHVybiBlKG4sTi5YLnRvU3RyaW5nKCksdCxyKX1mdW5jdGlvbiBzKG4sdCxlKXt2YXIgcj1NLmdldCh0LnNsaWNlKGUsZSs9MikudG9Mb3dlckNhc2UoKSk7cmV0dXJuIG51bGw9PXI/LTE6KG4ucD1yLGUpfXZhciBmPW4uZGF0ZVRpbWUsaD1uLmRhdGUsZz1uLnRpbWUscD1uLnBlcmlvZHMsdj1uLmRheXMsZD1uLnNob3J0RGF5cyxtPW4ubW9udGhzLHk9bi5zaG9ydE1vbnRoczt0LnV0Yz1mdW5jdGlvbihuKXtmdW5jdGlvbiBlKG4pe3RyeXtoYz1qdDt2YXIgdD1uZXcgaGM7cmV0dXJuIHQuXz1uLHIodCl9ZmluYWxseXtoYz1EYXRlfX12YXIgcj10KG4pO3JldHVybiBlLnBhcnNlPWZ1bmN0aW9uKG4pe3RyeXtoYz1qdDt2YXIgdD1yLnBhcnNlKG4pO3JldHVybiB0JiZ0Ll99ZmluYWxseXtoYz1EYXRlfX0sZS50b1N0cmluZz1yLnRvU3RyaW5nLGV9LHQubXVsdGk9dC51dGMubXVsdGk9YWU7dmFyIE09dGEubWFwKCkseD1JdCh2KSxiPVp0KHYpLF89SXQoZCksdz1adChkKSxTPUl0KG0pLGs9WnQobSksRT1JdCh5KSxBPVp0KHkpO3AuZm9yRWFjaChmdW5jdGlvbihuLHQpe00uc2V0KG4udG9Mb3dlckNhc2UoKSx0KX0pO3ZhciBOPXthOmZ1bmN0aW9uKG4pe3JldHVybiBkW24uZ2V0RGF5KCldfSxBOmZ1bmN0aW9uKG4pe3JldHVybiB2W24uZ2V0RGF5KCldfSxiOmZ1bmN0aW9uKG4pe3JldHVybiB5W24uZ2V0TW9udGgoKV19LEI6ZnVuY3Rpb24obil7cmV0dXJuIG1bbi5nZXRNb250aCgpXX0sYzp0KGYpLGQ6ZnVuY3Rpb24obix0KXtyZXR1cm4gWXQobi5nZXREYXRlKCksdCwyKX0sZTpmdW5jdGlvbihuLHQpe3JldHVybiBZdChuLmdldERhdGUoKSx0LDIpfSxIOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIFl0KG4uZ2V0SG91cnMoKSx0LDIpfSxJOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIFl0KG4uZ2V0SG91cnMoKSUxMnx8MTIsdCwyKX0sajpmdW5jdGlvbihuLHQpe3JldHVybiBZdCgxK2ZjLmRheU9mWWVhcihuKSx0LDMpfSxMOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIFl0KG4uZ2V0TWlsbGlzZWNvbmRzKCksdCwzKX0sbTpmdW5jdGlvbihuLHQpe3JldHVybiBZdChuLmdldE1vbnRoKCkrMSx0LDIpfSxNOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIFl0KG4uZ2V0TWludXRlcygpLHQsMil9LHA6ZnVuY3Rpb24obil7cmV0dXJuIHBbKyhuLmdldEhvdXJzKCk+PTEyKV19LFM6ZnVuY3Rpb24obix0KXtyZXR1cm4gWXQobi5nZXRTZWNvbmRzKCksdCwyKX0sVTpmdW5jdGlvbihuLHQpe3JldHVybiBZdChmYy5zdW5kYXlPZlllYXIobiksdCwyKX0sdzpmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXREYXkoKX0sVzpmdW5jdGlvbihuLHQpe3JldHVybiBZdChmYy5tb25kYXlPZlllYXIobiksdCwyKX0seDp0KGgpLFg6dChnKSx5OmZ1bmN0aW9uKG4sdCl7cmV0dXJuIFl0KG4uZ2V0RnVsbFllYXIoKSUxMDAsdCwyKX0sWTpmdW5jdGlvbihuLHQpe3JldHVybiBZdChuLmdldEZ1bGxZZWFyKCklMWU0LHQsNCl9LFo6aWUsIiUiOmZ1bmN0aW9uKCl7cmV0dXJuIiUifX0sQz17YTpyLEE6dSxiOmksQjpvLGM6YSxkOlF0LGU6UXQsSDp0ZSxJOnRlLGo6bmUsTDp1ZSxtOkt0LE06ZWUscDpzLFM6cmUsVTpYdCx3OlZ0LFc6JHQseDpjLFg6bCx5Old0LFk6QnQsWjpKdCwiJSI6b2V9O3JldHVybiB0fWZ1bmN0aW9uIFl0KG4sdCxlKXt2YXIgcj0wPm4/Ii0iOiIiLHU9KHI/LW46bikrIiIsaT11Lmxlbmd0aDtyZXR1cm4gcisoZT5pP25ldyBBcnJheShlLWkrMSkuam9pbih0KSt1OnUpfWZ1bmN0aW9uIEl0KG4pe3JldHVybiBuZXcgUmVnRXhwKCJeKD86IituLm1hcCh0YS5yZXF1b3RlKS5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24gWnQobil7Zm9yKHZhciB0PW5ldyBhLGU9LTEscj1uLmxlbmd0aDsrK2U8cjspdC5zZXQobltlXS50b0xvd2VyQ2FzZSgpLGUpO3JldHVybiB0fWZ1bmN0aW9uIFZ0KG4sdCxlKXt2Yy5sYXN0SW5kZXg9MDt2YXIgcj12Yy5leGVjKHQuc2xpY2UoZSxlKzEpKTtyZXR1cm4gcj8obi53PStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFh0KG4sdCxlKXt2Yy5sYXN0SW5kZXg9MDt2YXIgcj12Yy5leGVjKHQuc2xpY2UoZSkpO3JldHVybiByPyhuLlU9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gJHQobix0LGUpe3ZjLmxhc3RJbmRleD0wO3ZhciByPXZjLmV4ZWModC5zbGljZShlKSk7cmV0dXJuIHI/KG4uVz0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBCdChuLHQsZSl7dmMubGFzdEluZGV4PTA7dmFyIHI9dmMuZXhlYyh0LnNsaWNlKGUsZSs0KSk7cmV0dXJuIHI/KG4ueT0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBXdChuLHQsZSl7dmMubGFzdEluZGV4PTA7dmFyIHI9dmMuZXhlYyh0LnNsaWNlKGUsZSsyKSk7cmV0dXJuIHI/KG4ueT1HdCgrclswXSksZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gSnQobix0LGUpe3JldHVybi9eWystXVxkezR9JC8udGVzdCh0PXQuc2xpY2UoZSxlKzUpKT8obi5aPS10LGUrNSk6LTF9ZnVuY3Rpb24gR3Qobil7cmV0dXJuIG4rKG4+Njg/MTkwMDoyZTMpfWZ1bmN0aW9uIEt0KG4sdCxlKXt2Yy5sYXN0SW5kZXg9MDt2YXIgcj12Yy5leGVjKHQuc2xpY2UoZSxlKzIpKTtyZXR1cm4gcj8obi5tPXJbMF0tMSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBRdChuLHQsZSl7dmMubGFzdEluZGV4PTA7dmFyIHI9dmMuZXhlYyh0LnNsaWNlKGUsZSsyKSk7cmV0dXJuIHI/KG4uZD0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBuZShuLHQsZSl7dmMubGFzdEluZGV4PTA7dmFyIHI9dmMuZXhlYyh0LnNsaWNlKGUsZSszKSk7cmV0dXJuIHI/KG4uaj0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB0ZShuLHQsZSl7dmMubGFzdEluZGV4PTA7dmFyIHI9dmMuZXhlYyh0LnNsaWNlKGUsZSsyKSk7cmV0dXJuIHI/KG4uSD0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBlZShuLHQsZSl7dmMubGFzdEluZGV4PTA7dmFyIHI9dmMuZXhlYyh0LnNsaWNlKGUsZSsyKSk7cmV0dXJuIHI/KG4uTT0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiByZShuLHQsZSl7dmMubGFzdEluZGV4PTA7dmFyIHI9dmMuZXhlYyh0LnNsaWNlKGUsZSsyKSk7cmV0dXJuIHI/KG4uUz0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB1ZShuLHQsZSl7dmMubGFzdEluZGV4PTA7dmFyIHI9dmMuZXhlYyh0LnNsaWNlKGUsZSszKSk7cmV0dXJuIHI/KG4uTD0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBpZShuKXt2YXIgdD1uLmdldFRpbWV6b25lT2Zmc2V0KCksZT10PjA/Ii0iOiIrIixyPTB8dmEodCkvNjAsdT12YSh0KSU2MDtyZXR1cm4gZStZdChyLCIwIiwyKStZdCh1LCIwIiwyKX1mdW5jdGlvbiBvZShuLHQsZSl7ZGMubGFzdEluZGV4PTA7dmFyIHI9ZGMuZXhlYyh0LnNsaWNlKGUsZSsxKSk7cmV0dXJuIHI/ZStyWzBdLmxlbmd0aDotMX1mdW5jdGlvbiBhZShuKXtmb3IodmFyIHQ9bi5sZW5ndGgsZT0tMTsrK2U8dDspbltlXVswXT10aGlzKG5bZV1bMF0pO3JldHVybiBmdW5jdGlvbih0KXtmb3IodmFyIGU9MCxyPW5bZV07IXJbMV0odCk7KXI9blsrK2VdO3JldHVybiByWzBdKHQpfX1mdW5jdGlvbiBjZSgpe31mdW5jdGlvbiBsZShuLHQsZSl7dmFyIHI9ZS5zPW4rdCx1PXItbixpPXItdTtlLnQ9bi1pKyh0LXUpfWZ1bmN0aW9uIHNlKG4sdCl7biYmeGMuaGFzT3duUHJvcGVydHkobi50eXBlKSYmeGNbbi50eXBlXShuLHQpfWZ1bmN0aW9uIGZlKG4sdCxlKXt2YXIgcix1PS0xLGk9bi5sZW5ndGgtZTtmb3IodC5saW5lU3RhcnQoKTsrK3U8aTspcj1uW3VdLHQucG9pbnQoclswXSxyWzFdLHJbMl0pO3QubGluZUVuZCgpfWZ1bmN0aW9uIGhlKG4sdCl7dmFyIGU9LTEscj1uLmxlbmd0aDtmb3IodC5wb2x5Z29uU3RhcnQoKTsrK2U8cjspZmUobltlXSx0LDEpO3QucG9seWdvbkVuZCgpfWZ1bmN0aW9uIGdlKCl7ZnVuY3Rpb24gbihuLHQpe24qPUZhLHQ9dCpGYS8yK0RhLzQ7dmFyIGU9bi1yLG89ZT49MD8xOi0xLGE9byplLGM9TWF0aC5jb3ModCksbD1NYXRoLnNpbih0KSxzPWkqbCxmPXUqYytzKk1hdGguY29zKGEpLGg9cypvKk1hdGguc2luKGEpO19jLmFkZChNYXRoLmF0YW4yKGgsZikpLHI9bix1PWMsaT1sfXZhciB0LGUscix1LGk7d2MucG9pbnQ9ZnVuY3Rpb24obyxhKXt3Yy5wb2ludD1uLHI9KHQ9bykqRmEsdT1NYXRoLmNvcyhhPShlPWEpKkZhLzIrRGEvNCksaT1NYXRoLnNpbihhKX0sd2MubGluZUVuZD1mdW5jdGlvbigpe24odCxlKX19ZnVuY3Rpb24gcGUobil7dmFyIHQ9blswXSxlPW5bMV0scj1NYXRoLmNvcyhlKTtyZXR1cm5bcipNYXRoLmNvcyh0KSxyKk1hdGguc2luKHQpLE1hdGguc2luKGUpXX1mdW5jdGlvbiB2ZShuLHQpe3JldHVybiBuWzBdKnRbMF0rblsxXSp0WzFdK25bMl0qdFsyXX1mdW5jdGlvbiBkZShuLHQpe3JldHVybltuWzFdKnRbMl0tblsyXSp0WzFdLG5bMl0qdFswXS1uWzBdKnRbMl0sblswXSp0WzFdLW5bMV0qdFswXV19ZnVuY3Rpb24gbWUobix0KXtuWzBdKz10WzBdLG5bMV0rPXRbMV0sblsyXSs9dFsyXX1mdW5jdGlvbiB5ZShuLHQpe3JldHVybltuWzBdKnQsblsxXSp0LG5bMl0qdF19ZnVuY3Rpb24gTWUobil7dmFyIHQ9TWF0aC5zcXJ0KG5bMF0qblswXStuWzFdKm5bMV0rblsyXSpuWzJdKTtuWzBdLz10LG5bMV0vPXQsblsyXS89dH1mdW5jdGlvbiB4ZShuKXtyZXR1cm5bTWF0aC5hdGFuMihuWzFdLG5bMF0pLG50KG5bMl0pXX1mdW5jdGlvbiBiZShuLHQpe3JldHVybiB2YShuWzBdLXRbMF0pPFRhJiZ2YShuWzFdLXRbMV0pPFRhfWZ1bmN0aW9uIF9lKG4sdCl7bio9RmE7dmFyIGU9TWF0aC5jb3ModCo9RmEpO3dlKGUqTWF0aC5jb3MobiksZSpNYXRoLnNpbihuKSxNYXRoLnNpbih0KSl9ZnVuY3Rpb24gd2Uobix0LGUpeysrU2MsRWMrPShuLUVjKS9TYyxBYys9KHQtQWMpL1NjLE5jKz0oZS1OYykvU2N9ZnVuY3Rpb24gU2UoKXtmdW5jdGlvbiBuKG4sdSl7bio9RmE7dmFyIGk9TWF0aC5jb3ModSo9RmEpLG89aSpNYXRoLmNvcyhuKSxhPWkqTWF0aC5zaW4obiksYz1NYXRoLnNpbih1KSxsPU1hdGguYXRhbjIoTWF0aC5zcXJ0KChsPWUqYy1yKmEpKmwrKGw9cipvLXQqYykqbCsobD10KmEtZSpvKSpsKSx0Km8rZSphK3IqYyk7a2MrPWwsQ2MrPWwqKHQrKHQ9bykpLHpjKz1sKihlKyhlPWEpKSxxYys9bCoocisocj1jKSksd2UodCxlLHIpfXZhciB0LGUscjtEYy5wb2ludD1mdW5jdGlvbih1LGkpe3UqPUZhO3ZhciBvPU1hdGguY29zKGkqPUZhKTt0PW8qTWF0aC5jb3ModSksZT1vKk1hdGguc2luKHUpLHI9TWF0aC5zaW4oaSksRGMucG9pbnQ9bix3ZSh0LGUscil9fWZ1bmN0aW9uIGtlKCl7RGMucG9pbnQ9X2V9ZnVuY3Rpb24gRWUoKXtmdW5jdGlvbiBuKG4sdCl7bio9RmE7dmFyIGU9TWF0aC5jb3ModCo9RmEpLG89ZSpNYXRoLmNvcyhuKSxhPWUqTWF0aC5zaW4obiksYz1NYXRoLnNpbih0KSxsPXUqYy1pKmEscz1pKm8tcipjLGY9ciphLXUqbyxoPU1hdGguc3FydChsKmwrcypzK2YqZiksZz1yKm8rdSphK2kqYyxwPWgmJi1RKGcpL2gsdj1NYXRoLmF0YW4yKGgsZyk7TGMrPXAqbCxUYys9cCpzLFJjKz1wKmYsa2MrPXYsQ2MrPXYqKHIrKHI9bykpLHpjKz12Kih1Kyh1PWEpKSxxYys9diooaSsoaT1jKSksd2Uocix1LGkpfXZhciB0LGUscix1LGk7RGMucG9pbnQ9ZnVuY3Rpb24obyxhKXt0PW8sZT1hLERjLnBvaW50PW4sbyo9RmE7dmFyIGM9TWF0aC5jb3MoYSo9RmEpO3I9YypNYXRoLmNvcyhvKSx1PWMqTWF0aC5zaW4obyksaT1NYXRoLnNpbihhKSx3ZShyLHUsaSl9LERjLmxpbmVFbmQ9ZnVuY3Rpb24oKXtuKHQsZSksRGMubGluZUVuZD1rZSxEYy5wb2ludD1fZX19ZnVuY3Rpb24gQWUobix0KXtmdW5jdGlvbiBlKGUscil7cmV0dXJuIGU9bihlLHIpLHQoZVswXSxlWzFdKX1yZXR1cm4gbi5pbnZlcnQmJnQuaW52ZXJ0JiYoZS5pbnZlcnQ9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gZT10LmludmVydChlLHIpLGUmJm4uaW52ZXJ0KGVbMF0sZVsxXSl9KSxlfWZ1bmN0aW9uIE5lKCl7cmV0dXJuITB9ZnVuY3Rpb24gQ2Uobix0LGUscix1KXt2YXIgaT1bXSxvPVtdO2lmKG4uZm9yRWFjaChmdW5jdGlvbihuKXtpZighKCh0PW4ubGVuZ3RoLTEpPD0wKSl7dmFyIHQsZT1uWzBdLHI9blt0XTtpZihiZShlLHIpKXt1LmxpbmVTdGFydCgpO2Zvcih2YXIgYT0wO3Q+YTsrK2EpdS5wb2ludCgoZT1uW2FdKVswXSxlWzFdKTtyZXR1cm4gdS5saW5lRW5kKCksdm9pZCAwfXZhciBjPW5ldyBxZShlLG4sbnVsbCwhMCksbD1uZXcgcWUoZSxudWxsLGMsITEpO2Mubz1sLGkucHVzaChjKSxvLnB1c2gobCksYz1uZXcgcWUocixuLG51bGwsITEpLGw9bmV3IHFlKHIsbnVsbCxjLCEwKSxjLm89bCxpLnB1c2goYyksby5wdXNoKGwpfX0pLG8uc29ydCh0KSx6ZShpKSx6ZShvKSxpLmxlbmd0aCl7Zm9yKHZhciBhPTAsYz1lLGw9by5sZW5ndGg7bD5hOysrYSlvW2FdLmU9Yz0hYztmb3IodmFyIHMsZixoPWlbMF07Oyl7Zm9yKHZhciBnPWgscD0hMDtnLnY7KWlmKChnPWcubik9PT1oKXJldHVybjtzPWcueix1LmxpbmVTdGFydCgpO2Rve2lmKGcudj1nLm8udj0hMCxnLmUpe2lmKHApZm9yKHZhciBhPTAsbD1zLmxlbmd0aDtsPmE7KythKXUucG9pbnQoKGY9c1thXSlbMF0sZlsxXSk7ZWxzZSByKGcueCxnLm4ueCwxLHUpO2c9Zy5ufWVsc2V7aWYocCl7cz1nLnAuejtmb3IodmFyIGE9cy5sZW5ndGgtMTthPj0wOy0tYSl1LnBvaW50KChmPXNbYV0pWzBdLGZbMV0pfWVsc2UgcihnLngsZy5wLngsLTEsdSk7Zz1nLnB9Zz1nLm8scz1nLnoscD0hcH13aGlsZSghZy52KTt1LmxpbmVFbmQoKX19fWZ1bmN0aW9uIHplKG4pe2lmKHQ9bi5sZW5ndGgpe2Zvcih2YXIgdCxlLHI9MCx1PW5bMF07KytyPHQ7KXUubj1lPW5bcl0sZS5wPXUsdT1lO3Uubj1lPW5bMF0sZS5wPXV9fWZ1bmN0aW9uIHFlKG4sdCxlLHIpe3RoaXMueD1uLHRoaXMuej10LHRoaXMubz1lLHRoaXMuZT1yLHRoaXMudj0hMSx0aGlzLm49dGhpcy5wPW51bGx9ZnVuY3Rpb24gTGUobix0LGUscil7cmV0dXJuIGZ1bmN0aW9uKHUsaSl7ZnVuY3Rpb24gbyh0LGUpe3ZhciByPXUodCxlKTtuKHQ9clswXSxlPXJbMV0pJiZpLnBvaW50KHQsZSl9ZnVuY3Rpb24gYShuLHQpe3ZhciBlPXUobix0KTtkLnBvaW50KGVbMF0sZVsxXSl9ZnVuY3Rpb24gYygpe3kucG9pbnQ9YSxkLmxpbmVTdGFydCgpfWZ1bmN0aW9uIGwoKXt5LnBvaW50PW8sZC5saW5lRW5kKCl9ZnVuY3Rpb24gcyhuLHQpe3YucHVzaChbbix0XSk7dmFyIGU9dShuLHQpO3gucG9pbnQoZVswXSxlWzFdKX1mdW5jdGlvbiBmKCl7eC5saW5lU3RhcnQoKSx2PVtdfWZ1bmN0aW9uIGgoKXtzKHZbMF1bMF0sdlswXVsxXSkseC5saW5lRW5kKCk7dmFyIG4sdD14LmNsZWFuKCksZT1NLmJ1ZmZlcigpLHI9ZS5sZW5ndGg7aWYodi5wb3AoKSxwLnB1c2godiksdj1udWxsLHIpaWYoMSZ0KXtuPWVbMF07dmFyIHUscj1uLmxlbmd0aC0xLG89LTE7aWYocj4wKXtmb3IoYnx8KGkucG9seWdvblN0YXJ0KCksYj0hMCksaS5saW5lU3RhcnQoKTsrK288cjspaS5wb2ludCgodT1uW29dKVswXSx1WzFdKTtpLmxpbmVFbmQoKX19ZWxzZSByPjEmJjImdCYmZS5wdXNoKGUucG9wKCkuY29uY2F0KGUuc2hpZnQoKSkpLGcucHVzaChlLmZpbHRlcihUZSkpfXZhciBnLHAsdixkPXQoaSksbT11LmludmVydChyWzBdLHJbMV0pLHk9e3BvaW50Om8sbGluZVN0YXJ0OmMsbGluZUVuZDpsLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3kucG9pbnQ9cyx5LmxpbmVTdGFydD1mLHkubGluZUVuZD1oLGc9W10scD1bXX0scG9seWdvbkVuZDpmdW5jdGlvbigpe3kucG9pbnQ9byx5LmxpbmVTdGFydD1jLHkubGluZUVuZD1sLGc9dGEubWVyZ2UoZyk7dmFyIG49RmUobSxwKTtnLmxlbmd0aD8oYnx8KGkucG9seWdvblN0YXJ0KCksYj0hMCksQ2UoZyxEZSxuLGUsaSkpOm4mJihifHwoaS5wb2x5Z29uU3RhcnQoKSxiPSEwKSxpLmxpbmVTdGFydCgpLGUobnVsbCxudWxsLDEsaSksaS5saW5lRW5kKCkpLGImJihpLnBvbHlnb25FbmQoKSxiPSExKSxnPXA9bnVsbH0sc3BoZXJlOmZ1bmN0aW9uKCl7aS5wb2x5Z29uU3RhcnQoKSxpLmxpbmVTdGFydCgpLGUobnVsbCxudWxsLDEsaSksaS5saW5lRW5kKCksaS5wb2x5Z29uRW5kKCl9fSxNPVJlKCkseD10KE0pLGI9ITE7cmV0dXJuIHl9fWZ1bmN0aW9uIFRlKG4pe3JldHVybiBuLmxlbmd0aD4xfWZ1bmN0aW9uIFJlKCl7dmFyIG4sdD1bXTtyZXR1cm57bGluZVN0YXJ0OmZ1bmN0aW9uKCl7dC5wdXNoKG49W10pfSxwb2ludDpmdW5jdGlvbih0LGUpe24ucHVzaChbdCxlXSl9LGxpbmVFbmQ6eSxidWZmZXI6ZnVuY3Rpb24oKXt2YXIgZT10O3JldHVybiB0PVtdLG49bnVsbCxlfSxyZWpvaW46ZnVuY3Rpb24oKXt0Lmxlbmd0aD4xJiZ0LnB1c2godC5wb3AoKS5jb25jYXQodC5zaGlmdCgpKSl9fX1mdW5jdGlvbiBEZShuLHQpe3JldHVybigobj1uLngpWzBdPDA/blsxXS1qYS1UYTpqYS1uWzFdKS0oKHQ9dC54KVswXTwwP3RbMV0tamEtVGE6amEtdFsxXSl9ZnVuY3Rpb24gUGUobil7dmFyIHQsZT0wLzAscj0wLzAsdT0wLzA7cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe24ubGluZVN0YXJ0KCksdD0xfSxwb2ludDpmdW5jdGlvbihpLG8pe3ZhciBhPWk+MD9EYTotRGEsYz12YShpLWUpO3ZhKGMtRGEpPFRhPyhuLnBvaW50KGUscj0ocitvKS8yPjA/amE6LWphKSxuLnBvaW50KHUsciksbi5saW5lRW5kKCksbi5saW5lU3RhcnQoKSxuLnBvaW50KGEsciksbi5wb2ludChpLHIpLHQ9MCk6dSE9PWEmJmM+PURhJiYodmEoZS11KTxUYSYmKGUtPXUqVGEpLHZhKGktYSk8VGEmJihpLT1hKlRhKSxyPVVlKGUscixpLG8pLG4ucG9pbnQodSxyKSxuLmxpbmVFbmQoKSxuLmxpbmVTdGFydCgpLG4ucG9pbnQoYSxyKSx0PTApLG4ucG9pbnQoZT1pLHI9byksdT1hfSxsaW5lRW5kOmZ1bmN0aW9uKCl7bi5saW5lRW5kKCksZT1yPTAvMH0sY2xlYW46ZnVuY3Rpb24oKXtyZXR1cm4gMi10fX19ZnVuY3Rpb24gVWUobix0LGUscil7dmFyIHUsaSxvPU1hdGguc2luKG4tZSk7cmV0dXJuIHZhKG8pPlRhP01hdGguYXRhbigoTWF0aC5zaW4odCkqKGk9TWF0aC5jb3MocikpKk1hdGguc2luKGUpLU1hdGguc2luKHIpKih1PU1hdGguY29zKHQpKSpNYXRoLnNpbihuKSkvKHUqaSpvKSk6KHQrcikvMn1mdW5jdGlvbiBqZShuLHQsZSxyKXt2YXIgdTtpZihudWxsPT1uKXU9ZSpqYSxyLnBvaW50KC1EYSx1KSxyLnBvaW50KDAsdSksci5wb2ludChEYSx1KSxyLnBvaW50KERhLDApLHIucG9pbnQoRGEsLXUpLHIucG9pbnQoMCwtdSksci5wb2ludCgtRGEsLXUpLHIucG9pbnQoLURhLDApLHIucG9pbnQoLURhLHUpO2Vsc2UgaWYodmEoblswXS10WzBdKT5UYSl7dmFyIGk9blswXTx0WzBdP0RhOi1EYTt1PWUqaS8yLHIucG9pbnQoLWksdSksci5wb2ludCgwLHUpLHIucG9pbnQoaSx1KX1lbHNlIHIucG9pbnQodFswXSx0WzFdKX1mdW5jdGlvbiBGZShuLHQpe3ZhciBlPW5bMF0scj1uWzFdLHU9W01hdGguc2luKGUpLC1NYXRoLmNvcyhlKSwwXSxpPTAsbz0wO19jLnJlc2V0KCk7Zm9yKHZhciBhPTAsYz10Lmxlbmd0aDtjPmE7KythKXt2YXIgbD10W2FdLHM9bC5sZW5ndGg7aWYocylmb3IodmFyIGY9bFswXSxoPWZbMF0sZz1mWzFdLzIrRGEvNCxwPU1hdGguc2luKGcpLHY9TWF0aC5jb3MoZyksZD0xOzspe2Q9PT1zJiYoZD0wKSxuPWxbZF07dmFyIG09blswXSx5PW5bMV0vMitEYS80LE09TWF0aC5zaW4oeSkseD1NYXRoLmNvcyh5KSxiPW0taCxfPWI+PTA/MTotMSx3PV8qYixTPXc+RGEsaz1wKk07aWYoX2MuYWRkKE1hdGguYXRhbjIoaypfKk1hdGguc2luKHcpLHYqeCtrKk1hdGguY29zKHcpKSksaSs9Uz9iK18qUGE6YixTXmg+PWVebT49ZSl7dmFyIEU9ZGUocGUoZikscGUobikpO01lKEUpO3ZhciBBPWRlKHUsRSk7TWUoQSk7dmFyIE49KFNeYj49MD8tMToxKSpudChBWzJdKTsocj5OfHxyPT09TiYmKEVbMF18fEVbMV0pKSYmKG8rPVNeYj49MD8xOi0xKX1pZighZCsrKWJyZWFrO2g9bSxwPU0sdj14LGY9bn19cmV0dXJuKC1UYT5pfHxUYT5pJiYwPl9jKV4xJm99ZnVuY3Rpb24gSGUobil7ZnVuY3Rpb24gdChuLHQpe3JldHVybiBNYXRoLmNvcyhuKSpNYXRoLmNvcyh0KT5pfWZ1bmN0aW9uIGUobil7dmFyIGUsaSxjLGwscztyZXR1cm57bGluZVN0YXJ0OmZ1bmN0aW9uKCl7bD1jPSExLHM9MX0scG9pbnQ6ZnVuY3Rpb24oZixoKXt2YXIgZyxwPVtmLGhdLHY9dChmLGgpLGQ9bz92PzA6dShmLGgpOnY/dShmKygwPmY/RGE6LURhKSxoKTowO2lmKCFlJiYobD1jPXYpJiZuLmxpbmVTdGFydCgpLHYhPT1jJiYoZz1yKGUscCksKGJlKGUsZyl8fGJlKHAsZykpJiYocFswXSs9VGEscFsxXSs9VGEsdj10KHBbMF0scFsxXSkpKSx2IT09YylzPTAsdj8obi5saW5lU3RhcnQoKSxnPXIocCxlKSxuLnBvaW50KGdbMF0sZ1sxXSkpOihnPXIoZSxwKSxuLnBvaW50KGdbMF0sZ1sxXSksbi5saW5lRW5kKCkpLGU9ZztlbHNlIGlmKGEmJmUmJm9edil7dmFyIG07ZCZpfHwhKG09cihwLGUsITApKXx8KHM9MCxvPyhuLmxpbmVTdGFydCgpLG4ucG9pbnQobVswXVswXSxtWzBdWzFdKSxuLnBvaW50KG1bMV1bMF0sbVsxXVsxXSksbi5saW5lRW5kKCkpOihuLnBvaW50KG1bMV1bMF0sbVsxXVsxXSksbi5saW5lRW5kKCksbi5saW5lU3RhcnQoKSxuLnBvaW50KG1bMF1bMF0sbVswXVsxXSkpKX0hdnx8ZSYmYmUoZSxwKXx8bi5wb2ludChwWzBdLHBbMV0pLGU9cCxjPXYsaT1kfSxsaW5lRW5kOmZ1bmN0aW9uKCl7YyYmbi5saW5lRW5kKCksZT1udWxsfSxjbGVhbjpmdW5jdGlvbigpe3JldHVybiBzfChsJiZjKTw8MX19fWZ1bmN0aW9uIHIobix0LGUpe3ZhciByPXBlKG4pLHU9cGUodCksbz1bMSwwLDBdLGE9ZGUocix1KSxjPXZlKGEsYSksbD1hWzBdLHM9Yy1sKmw7aWYoIXMpcmV0dXJuIWUmJm47dmFyIGY9aSpjL3MsaD0taSpsL3MsZz1kZShvLGEpLHA9eWUobyxmKSx2PXllKGEsaCk7bWUocCx2KTt2YXIgZD1nLG09dmUocCxkKSx5PXZlKGQsZCksTT1tKm0teSoodmUocCxwKS0xKTtpZighKDA+TSkpe3ZhciB4PU1hdGguc3FydChNKSxiPXllKGQsKC1tLXgpL3kpO2lmKG1lKGIscCksYj14ZShiKSwhZSlyZXR1cm4gYjt2YXIgXyx3PW5bMF0sUz10WzBdLGs9blsxXSxFPXRbMV07dz5TJiYoXz13LHc9UyxTPV8pO3ZhciBBPVMtdyxOPXZhKEEtRGEpPFRhLEM9Tnx8VGE+QTtpZighTiYmaz5FJiYoXz1rLGs9RSxFPV8pLEM/Tj9rK0U+MF5iWzFdPCh2YShiWzBdLXcpPFRhP2s6RSk6azw9YlsxXSYmYlsxXTw9RTpBPkRhXih3PD1iWzBdJiZiWzBdPD1TKSl7dmFyIHo9eWUoZCwoLW0reCkveSk7cmV0dXJuIG1lKHoscCksW2IseGUoeildfX19ZnVuY3Rpb24gdSh0LGUpe3ZhciByPW8/bjpEYS1uLHU9MDtyZXR1cm4tcj50P3V8PTE6dD5yJiYodXw9MiksLXI+ZT91fD00OmU+ciYmKHV8PTgpLHV9dmFyIGk9TWF0aC5jb3Mobiksbz1pPjAsYT12YShpKT5UYSxjPWdyKG4sNipGYSk7cmV0dXJuIExlKHQsZSxjLG8/WzAsLW5dOlstRGEsbi1EYV0pfWZ1bmN0aW9uIE9lKG4sdCxlLHIpe3JldHVybiBmdW5jdGlvbih1KXt2YXIgaSxvPXUuYSxhPXUuYixjPW8ueCxsPW8ueSxzPWEueCxmPWEueSxoPTAsZz0xLHA9cy1jLHY9Zi1sO2lmKGk9bi1jLHB8fCEoaT4wKSl7aWYoaS89cCwwPnApe2lmKGg+aSlyZXR1cm47Zz5pJiYoZz1pKX1lbHNlIGlmKHA+MCl7aWYoaT5nKXJldHVybjtpPmgmJihoPWkpfWlmKGk9ZS1jLHB8fCEoMD5pKSl7aWYoaS89cCwwPnApe2lmKGk+ZylyZXR1cm47aT5oJiYoaD1pKX1lbHNlIGlmKHA+MCl7aWYoaD5pKXJldHVybjtnPmkmJihnPWkpfWlmKGk9dC1sLHZ8fCEoaT4wKSl7aWYoaS89diwwPnYpe2lmKGg+aSlyZXR1cm47Zz5pJiYoZz1pKX1lbHNlIGlmKHY+MCl7aWYoaT5nKXJldHVybjtpPmgmJihoPWkpfWlmKGk9ci1sLHZ8fCEoMD5pKSl7aWYoaS89diwwPnYpe2lmKGk+ZylyZXR1cm47aT5oJiYoaD1pKX1lbHNlIGlmKHY+MCl7aWYoaD5pKXJldHVybjtnPmkmJihnPWkpfXJldHVybiBoPjAmJih1LmE9e3g6YytoKnAseTpsK2gqdn0pLDE+ZyYmKHUuYj17eDpjK2cqcCx5OmwrZyp2fSksdX19fX19fWZ1bmN0aW9uIFllKG4sdCxlLHIpe2Z1bmN0aW9uIHUocix1KXtyZXR1cm4gdmEoclswXS1uKTxUYT91PjA/MDozOnZhKHJbMF0tZSk8VGE/dT4wPzI6MTp2YShyWzFdLXQpPFRhP3U+MD8xOjA6dT4wPzM6Mn1mdW5jdGlvbiBpKG4sdCl7cmV0dXJuIG8obi54LHQueCl9ZnVuY3Rpb24gbyhuLHQpe3ZhciBlPXUobiwxKSxyPXUodCwxKTtyZXR1cm4gZSE9PXI/ZS1yOjA9PT1lP3RbMV0tblsxXToxPT09ZT9uWzBdLXRbMF06Mj09PWU/blsxXS10WzFdOnRbMF0tblswXX1yZXR1cm4gZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYyhuKXtmb3IodmFyIHQ9MCxlPWQubGVuZ3RoLHI9blsxXSx1PTA7ZT51OysrdSlmb3IodmFyIGksbz0xLGE9ZFt1XSxjPWEubGVuZ3RoLGw9YVswXTtjPm87KytvKWk9YVtvXSxsWzFdPD1yP2lbMV0+ciYmSyhsLGksbik+MCYmKyt0OmlbMV08PXImJksobCxpLG4pPDAmJi0tdCxsPWk7cmV0dXJuIDAhPT10fWZ1bmN0aW9uIGwoaSxhLGMsbCl7dmFyIHM9MCxmPTA7aWYobnVsbD09aXx8KHM9dShpLGMpKSE9PShmPXUoYSxjKSl8fG8oaSxhKTwwXmM+MCl7ZG8gbC5wb2ludCgwPT09c3x8Mz09PXM/bjplLHM+MT9yOnQpO3doaWxlKChzPShzK2MrNCklNCkhPT1mKX1lbHNlIGwucG9pbnQoYVswXSxhWzFdKX1mdW5jdGlvbiBzKHUsaSl7cmV0dXJuIHU+PW4mJmU+PXUmJmk+PXQmJnI+PWl9ZnVuY3Rpb24gZihuLHQpe3Mobix0KSYmYS5wb2ludChuLHQpfWZ1bmN0aW9uIGgoKXtDLnBvaW50PXAsZCYmZC5wdXNoKG09W10pLFM9ITAsdz0hMSxiPV89MC8wfWZ1bmN0aW9uIGcoKXt2JiYocCh5LE0pLHgmJncmJkEucmVqb2luKCksdi5wdXNoKEEuYnVmZmVyKCkpKSxDLnBvaW50PWYsdyYmYS5saW5lRW5kKCl9ZnVuY3Rpb24gcChuLHQpe249TWF0aC5tYXgoLVVjLE1hdGgubWluKFVjLG4pKSx0PU1hdGgubWF4KC1VYyxNYXRoLm1pbihVYyx0KSk7dmFyIGU9cyhuLHQpO2lmKGQmJm0ucHVzaChbbix0XSksUyl5PW4sTT10LHg9ZSxTPSExLGUmJihhLmxpbmVTdGFydCgpLGEucG9pbnQobix0KSk7ZWxzZSBpZihlJiZ3KWEucG9pbnQobix0KTtlbHNle3ZhciByPXthOnt4OmIseTpffSxiOnt4Om4seTp0fX07TihyKT8od3x8KGEubGluZVN0YXJ0KCksYS5wb2ludChyLmEueCxyLmEueSkpLGEucG9pbnQoci5iLngsci5iLnkpLGV8fGEubGluZUVuZCgpLGs9ITEpOmUmJihhLmxpbmVTdGFydCgpLGEucG9pbnQobix0KSxrPSExKX1iPW4sXz10LHc9ZX12YXIgdixkLG0seSxNLHgsYixfLHcsUyxrLEU9YSxBPVJlKCksTj1PZShuLHQsZSxyKSxDPXtwb2ludDpmLGxpbmVTdGFydDpoLGxpbmVFbmQ6Zyxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXthPUEsdj1bXSxkPVtdLGs9ITB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXthPUUsdj10YS5tZXJnZSh2KTt2YXIgdD1jKFtuLHJdKSxlPWsmJnQsdT12Lmxlbmd0aDsoZXx8dSkmJihhLnBvbHlnb25TdGFydCgpLGUmJihhLmxpbmVTdGFydCgpLGwobnVsbCxudWxsLDEsYSksYS5saW5lRW5kKCkpLHUmJkNlKHYsaSx0LGwsYSksYS5wb2x5Z29uRW5kKCkpLHY9ZD1tPW51bGx9fTtyZXR1cm4gQ319ZnVuY3Rpb24gSWUobil7dmFyIHQ9MCxlPURhLzMscj1pcihuKSx1PXIodCxlKTtyZXR1cm4gdS5wYXJhbGxlbHM9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/cih0PW5bMF0qRGEvMTgwLGU9blsxXSpEYS8xODApOlsxODAqKHQvRGEpLDE4MCooZS9EYSldfSx1fWZ1bmN0aW9uIFplKG4sdCl7ZnVuY3Rpb24gZShuLHQpe3ZhciBlPU1hdGguc3FydChpLTIqdSpNYXRoLnNpbih0KSkvdTtyZXR1cm5bZSpNYXRoLnNpbihuKj11KSxvLWUqTWF0aC5jb3MobildfXZhciByPU1hdGguc2luKG4pLHU9KHIrTWF0aC5zaW4odCkpLzIsaT0xK3IqKDIqdS1yKSxvPU1hdGguc3FydChpKS91O3JldHVybiBlLmludmVydD1mdW5jdGlvbihuLHQpe3ZhciBlPW8tdDtyZXR1cm5bTWF0aC5hdGFuMihuLGUpL3UsbnQoKGktKG4qbitlKmUpKnUqdSkvKDIqdSkpXX0sZX1mdW5jdGlvbiBWZSgpe2Z1bmN0aW9uIG4obix0KXtGYys9dSpuLXIqdCxyPW4sdT10fXZhciB0LGUscix1O1pjLnBvaW50PWZ1bmN0aW9uKGksbyl7WmMucG9pbnQ9bix0PXI9aSxlPXU9b30sWmMubGluZUVuZD1mdW5jdGlvbigpe24odCxlKX19ZnVuY3Rpb24gWGUobix0KXtIYz5uJiYoSGM9biksbj5ZYyYmKFljPW4pLE9jPnQmJihPYz10KSx0PkljJiYoSWM9dCl9ZnVuY3Rpb24gJGUoKXtmdW5jdGlvbiBuKG4sdCl7by5wdXNoKCJNIixuLCIsIix0LGkpfWZ1bmN0aW9uIHQobix0KXtvLnB1c2goIk0iLG4sIiwiLHQpLGEucG9pbnQ9ZX1mdW5jdGlvbiBlKG4sdCl7by5wdXNoKCJMIixuLCIsIix0KX1mdW5jdGlvbiByKCl7YS5wb2ludD1ufWZ1bmN0aW9uIHUoKXtvLnB1c2goIloiKX12YXIgaT1CZSg0LjUpLG89W10sYT17cG9pbnQ6bixsaW5lU3RhcnQ6ZnVuY3Rpb24oKXthLnBvaW50PXR9LGxpbmVFbmQ6cixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXthLmxpbmVFbmQ9dX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2EubGluZUVuZD1yLGEucG9pbnQ9bn0scG9pbnRSYWRpdXM6ZnVuY3Rpb24obil7cmV0dXJuIGk9QmUobiksYX0scmVzdWx0OmZ1bmN0aW9uKCl7aWYoby5sZW5ndGgpe3ZhciBuPW8uam9pbigiIik7cmV0dXJuIG89W10sbn19fTtyZXR1cm4gYX1mdW5jdGlvbiBCZShuKXtyZXR1cm4ibTAsIituKyJhIituKyIsIituKyIgMCAxLDEgMCwiKy0yKm4rImEiK24rIiwiK24rIiAwIDEsMSAwLCIrMipuKyJ6In1mdW5jdGlvbiBXZShuLHQpe0VjKz1uLEFjKz10LCsrTmN9ZnVuY3Rpb24gSmUoKXtmdW5jdGlvbiBuKG4scil7dmFyIHU9bi10LGk9ci1lLG89TWF0aC5zcXJ0KHUqdStpKmkpO0NjKz1vKih0K24pLzIsemMrPW8qKGUrcikvMixxYys9byxXZSh0PW4sZT1yKX12YXIgdCxlO1hjLnBvaW50PWZ1bmN0aW9uKHIsdSl7WGMucG9pbnQ9bixXZSh0PXIsZT11KX19ZnVuY3Rpb24gR2UoKXtYYy5wb2ludD1XZX1mdW5jdGlvbiBLZSgpe2Z1bmN0aW9uIG4obix0KXt2YXIgZT1uLXIsaT10LXUsbz1NYXRoLnNxcnQoZSplK2kqaSk7Q2MrPW8qKHIrbikvMix6Yys9byoodSt0KS8yLHFjKz1vLG89dSpuLXIqdCxMYys9byoocituKSxUYys9byoodSt0KSxSYys9MypvLFdlKHI9bix1PXQpfXZhciB0LGUscix1O1hjLnBvaW50PWZ1bmN0aW9uKGksbyl7WGMucG9pbnQ9bixXZSh0PXI9aSxlPXU9byl9LFhjLmxpbmVFbmQ9ZnVuY3Rpb24oKXtuKHQsZSl9fWZ1bmN0aW9uIFFlKG4pe2Z1bmN0aW9uIHQodCxlKXtuLm1vdmVUbyh0K28sZSksbi5hcmModCxlLG8sMCxQYSl9ZnVuY3Rpb24gZSh0LGUpe24ubW92ZVRvKHQsZSksYS5wb2ludD1yfWZ1bmN0aW9uIHIodCxlKXtuLmxpbmVUbyh0LGUpfWZ1bmN0aW9uIHUoKXthLnBvaW50PXR9ZnVuY3Rpb24gaSgpe24uY2xvc2VQYXRoKCl9dmFyIG89NC41LGE9e3BvaW50OnQsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7YS5wb2ludD1lfSxsaW5lRW5kOnUscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7YS5saW5lRW5kPWl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXthLmxpbmVFbmQ9dSxhLnBvaW50PXR9LHBvaW50UmFkaXVzOmZ1bmN0aW9uKG4pe3JldHVybiBvPW4sYX0scmVzdWx0Onl9O3JldHVybiBhfWZ1bmN0aW9uIG5yKG4pe2Z1bmN0aW9uIHQobil7cmV0dXJuKGE/cjplKShuKX1mdW5jdGlvbiBlKHQpe3JldHVybiBycih0LGZ1bmN0aW9uKGUscil7ZT1uKGUsciksdC5wb2ludChlWzBdLGVbMV0pfSl9ZnVuY3Rpb24gcih0KXtmdW5jdGlvbiBlKGUscil7ZT1uKGUsciksdC5wb2ludChlWzBdLGVbMV0pfWZ1bmN0aW9uIHIoKXtNPTAvMCxTLnBvaW50PWksdC5saW5lU3RhcnQoKX1mdW5jdGlvbiBpKGUscil7dmFyIGk9cGUoW2Uscl0pLG89bihlLHIpO3UoTSx4LHksYixfLHcsTT1vWzBdLHg9b1sxXSx5PWUsYj1pWzBdLF89aVsxXSx3PWlbMl0sYSx0KSx0LnBvaW50KE0seCl9ZnVuY3Rpb24gbygpe1MucG9pbnQ9ZSx0LmxpbmVFbmQoKX1mdW5jdGlvbiBjKCl7cigpLFMucG9pbnQ9bCxTLmxpbmVFbmQ9c31mdW5jdGlvbiBsKG4sdCl7aShmPW4saD10KSxnPU0scD14LHY9YixkPV8sbT13LFMucG9pbnQ9aX1mdW5jdGlvbiBzKCl7dShNLHgseSxiLF8sdyxnLHAsZix2LGQsbSxhLHQpLFMubGluZUVuZD1vLG8oKX12YXIgZixoLGcscCx2LGQsbSx5LE0seCxiLF8sdyxTPXtwb2ludDplLGxpbmVTdGFydDpyLGxpbmVFbmQ6byxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt0LnBvbHlnb25TdGFydCgpLFMubGluZVN0YXJ0PWN9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt0LnBvbHlnb25FbmQoKSxTLmxpbmVTdGFydD1yfX07cmV0dXJuIFN9ZnVuY3Rpb24gdSh0LGUscixhLGMsbCxzLGYsaCxnLHAsdixkLG0pe3ZhciB5PXMtdCxNPWYtZSx4PXkqeStNKk07aWYoeD40KmkmJmQtLSl7dmFyIGI9YStnLF89YytwLHc9bCt2LFM9TWF0aC5zcXJ0KGIqYitfKl8rdyp3KSxrPU1hdGguYXNpbih3Lz1TKSxFPXZhKHZhKHcpLTEpPFRhfHx2YShyLWgpPFRhPyhyK2gpLzI6TWF0aC5hdGFuMihfLGIpLEE9bihFLGspLE49QVswXSxDPUFbMV0sej1OLXQscT1DLWUsTD1NKnoteSpxOwooTCpML3g+aXx8dmEoKHkqeitNKnEpL3gtLjUpPi4zfHxvPmEqZytjKnArbCp2KSYmKHUodCxlLHIsYSxjLGwsTixDLEUsYi89UyxfLz1TLHcsZCxtKSxtLnBvaW50KE4sQyksdShOLEMsRSxiLF8sdyxzLGYsaCxnLHAsdixkLG0pKX19dmFyIGk9LjUsbz1NYXRoLmNvcygzMCpGYSksYT0xNjtyZXR1cm4gdC5wcmVjaXNpb249ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9KGk9bipuKT4wJiYxNix0KTpNYXRoLnNxcnQoaSl9LHR9ZnVuY3Rpb24gdHIobil7dmFyIHQ9bnIoZnVuY3Rpb24odCxlKXtyZXR1cm4gbihbdCpIYSxlKkhhXSl9KTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIG9yKHQobikpfX1mdW5jdGlvbiBlcihuKXt0aGlzLnN0cmVhbT1ufWZ1bmN0aW9uIHJyKG4sdCl7cmV0dXJue3BvaW50OnQsc3BoZXJlOmZ1bmN0aW9uKCl7bi5zcGhlcmUoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7bi5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe24ubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtuLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7bi5wb2x5Z29uRW5kKCl9fX1mdW5jdGlvbiB1cihuKXtyZXR1cm4gaXIoZnVuY3Rpb24oKXtyZXR1cm4gbn0pKCl9ZnVuY3Rpb24gaXIobil7ZnVuY3Rpb24gdChuKXtyZXR1cm4gbj1hKG5bMF0qRmEsblsxXSpGYSksW25bMF0qaCtjLGwtblsxXSpoXX1mdW5jdGlvbiBlKG4pe3JldHVybiBuPWEuaW52ZXJ0KChuWzBdLWMpL2gsKGwtblsxXSkvaCksbiYmW25bMF0qSGEsblsxXSpIYV19ZnVuY3Rpb24gcigpe2E9QWUobz1scihtLHksTSksaSk7dmFyIG49aSh2LGQpO3JldHVybiBjPWctblswXSpoLGw9cCtuWzFdKmgsdSgpfWZ1bmN0aW9uIHUoKXtyZXR1cm4gcyYmKHMudmFsaWQ9ITEscz1udWxsKSx0fXZhciBpLG8sYSxjLGwscyxmPW5yKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG49aShuLHQpLFtuWzBdKmgrYyxsLW5bMV0qaF19KSxoPTE1MCxnPTQ4MCxwPTI1MCx2PTAsZD0wLG09MCx5PTAsTT0wLHg9UGMsYj1FdCxfPW51bGwsdz1udWxsO3JldHVybiB0LnN0cmVhbT1mdW5jdGlvbihuKXtyZXR1cm4gcyYmKHMudmFsaWQ9ITEpLHM9b3IoeChvLGYoYihuKSkpKSxzLnZhbGlkPSEwLHN9LHQuY2xpcEFuZ2xlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh4PW51bGw9PW4/KF89bixQYyk6SGUoKF89K24pKkZhKSx1KCkpOl99LHQuY2xpcEV4dGVudD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odz1uLGI9bj9ZZShuWzBdWzBdLG5bMF1bMV0sblsxXVswXSxuWzFdWzFdKTpFdCx1KCkpOnd9LHQuc2NhbGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9K24scigpKTpofSx0LnRyYW5zbGF0ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0rblswXSxwPStuWzFdLHIoKSk6W2cscF19LHQuY2VudGVyPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PW5bMF0lMzYwKkZhLGQ9blsxXSUzNjAqRmEscigpKTpbdipIYSxkKkhhXX0sdC5yb3RhdGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09blswXSUzNjAqRmEseT1uWzFdJTM2MCpGYSxNPW4ubGVuZ3RoPjI/blsyXSUzNjAqRmE6MCxyKCkpOlttKkhhLHkqSGEsTSpIYV19LHRhLnJlYmluZCh0LGYsInByZWNpc2lvbiIpLGZ1bmN0aW9uKCl7cmV0dXJuIGk9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyksdC5pbnZlcnQ9aS5pbnZlcnQmJmUscigpfX1mdW5jdGlvbiBvcihuKXtyZXR1cm4gcnIobixmdW5jdGlvbih0LGUpe24ucG9pbnQodCpGYSxlKkZhKX0pfWZ1bmN0aW9uIGFyKG4sdCl7cmV0dXJuW24sdF19ZnVuY3Rpb24gY3Iobix0KXtyZXR1cm5bbj5EYT9uLVBhOi1EYT5uP24rUGE6bix0XX1mdW5jdGlvbiBscihuLHQsZSl7cmV0dXJuIG4/dHx8ZT9BZShmcihuKSxocih0LGUpKTpmcihuKTp0fHxlP2hyKHQsZSk6Y3J9ZnVuY3Rpb24gc3Iobil7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrPW4sW3Q+RGE/dC1QYTotRGE+dD90K1BhOnQsZV19fWZ1bmN0aW9uIGZyKG4pe3ZhciB0PXNyKG4pO3JldHVybiB0LmludmVydD1zcigtbiksdH1mdW5jdGlvbiBocihuLHQpe2Z1bmN0aW9uIGUobix0KXt2YXIgZT1NYXRoLmNvcyh0KSxhPU1hdGguY29zKG4pKmUsYz1NYXRoLnNpbihuKSplLGw9TWF0aC5zaW4odCkscz1sKnIrYSp1O3JldHVybltNYXRoLmF0YW4yKGMqaS1zKm8sYSpyLWwqdSksbnQocyppK2MqbyldfXZhciByPU1hdGguY29zKG4pLHU9TWF0aC5zaW4obiksaT1NYXRoLmNvcyh0KSxvPU1hdGguc2luKHQpO3JldHVybiBlLmludmVydD1mdW5jdGlvbihuLHQpe3ZhciBlPU1hdGguY29zKHQpLGE9TWF0aC5jb3MobikqZSxjPU1hdGguc2luKG4pKmUsbD1NYXRoLnNpbih0KSxzPWwqaS1jKm87cmV0dXJuW01hdGguYXRhbjIoYyppK2wqbyxhKnIrcyp1KSxudChzKnItYSp1KV19LGV9ZnVuY3Rpb24gZ3Iobix0KXt2YXIgZT1NYXRoLmNvcyhuKSxyPU1hdGguc2luKG4pO3JldHVybiBmdW5jdGlvbih1LGksbyxhKXt2YXIgYz1vKnQ7bnVsbCE9dT8odT1wcihlLHUpLGk9cHIoZSxpKSwobz4wP2k+dTp1PmkpJiYodSs9bypQYSkpOih1PW4rbypQYSxpPW4tLjUqYyk7Zm9yKHZhciBsLHM9dTtvPjA/cz5pOmk+cztzLT1jKWEucG9pbnQoKGw9eGUoW2UsLXIqTWF0aC5jb3MocyksLXIqTWF0aC5zaW4ocyldKSlbMF0sbFsxXSl9fWZ1bmN0aW9uIHByKG4sdCl7dmFyIGU9cGUodCk7ZVswXS09bixNZShlKTt2YXIgcj1RKC1lWzFdKTtyZXR1cm4oKC1lWzJdPDA/LXI6cikrMipNYXRoLlBJLVRhKSUoMipNYXRoLlBJKX1mdW5jdGlvbiB2cihuLHQsZSl7dmFyIHI9dGEucmFuZ2Uobix0LVRhLGUpLmNvbmNhdCh0KTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHIubWFwKGZ1bmN0aW9uKHQpe3JldHVybltuLHRdfSl9fWZ1bmN0aW9uIGRyKG4sdCxlKXt2YXIgcj10YS5yYW5nZShuLHQtVGEsZSkuY29uY2F0KHQpO3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gci5tYXAoZnVuY3Rpb24odCl7cmV0dXJuW3Qsbl19KX19ZnVuY3Rpb24gbXIobil7cmV0dXJuIG4uc291cmNlfWZ1bmN0aW9uIHlyKG4pe3JldHVybiBuLnRhcmdldH1mdW5jdGlvbiBNcihuLHQsZSxyKXt2YXIgdT1NYXRoLmNvcyh0KSxpPU1hdGguc2luKHQpLG89TWF0aC5jb3MociksYT1NYXRoLnNpbihyKSxjPXUqTWF0aC5jb3MobiksbD11Kk1hdGguc2luKG4pLHM9bypNYXRoLmNvcyhlKSxmPW8qTWF0aC5zaW4oZSksaD0yKk1hdGguYXNpbihNYXRoLnNxcnQodXQoci10KSt1Km8qdXQoZS1uKSkpLGc9MS9NYXRoLnNpbihoKSxwPWg/ZnVuY3Rpb24obil7dmFyIHQ9TWF0aC5zaW4obio9aCkqZyxlPU1hdGguc2luKGgtbikqZyxyPWUqYyt0KnMsdT1lKmwrdCpmLG89ZSppK3QqYTtyZXR1cm5bTWF0aC5hdGFuMih1LHIpKkhhLE1hdGguYXRhbjIobyxNYXRoLnNxcnQocipyK3UqdSkpKkhhXX06ZnVuY3Rpb24oKXtyZXR1cm5bbipIYSx0KkhhXX07cmV0dXJuIHAuZGlzdGFuY2U9aCxwfWZ1bmN0aW9uIHhyKCl7ZnVuY3Rpb24gbihuLHUpe3ZhciBpPU1hdGguc2luKHUqPUZhKSxvPU1hdGguY29zKHUpLGE9dmEoKG4qPUZhKS10KSxjPU1hdGguY29zKGEpOyRjKz1NYXRoLmF0YW4yKE1hdGguc3FydCgoYT1vKk1hdGguc2luKGEpKSphKyhhPXIqaS1lKm8qYykqYSksZSppK3IqbypjKSx0PW4sZT1pLHI9b312YXIgdCxlLHI7QmMucG9pbnQ9ZnVuY3Rpb24odSxpKXt0PXUqRmEsZT1NYXRoLnNpbihpKj1GYSkscj1NYXRoLmNvcyhpKSxCYy5wb2ludD1ufSxCYy5saW5lRW5kPWZ1bmN0aW9uKCl7QmMucG9pbnQ9QmMubGluZUVuZD15fX1mdW5jdGlvbiBicihuLHQpe2Z1bmN0aW9uIGUodCxlKXt2YXIgcj1NYXRoLmNvcyh0KSx1PU1hdGguY29zKGUpLGk9bihyKnUpO3JldHVybltpKnUqTWF0aC5zaW4odCksaSpNYXRoLnNpbihlKV19cmV0dXJuIGUuaW52ZXJ0PWZ1bmN0aW9uKG4sZSl7dmFyIHI9TWF0aC5zcXJ0KG4qbitlKmUpLHU9dChyKSxpPU1hdGguc2luKHUpLG89TWF0aC5jb3ModSk7cmV0dXJuW01hdGguYXRhbjIobippLHIqbyksTWF0aC5hc2luKHImJmUqaS9yKV19LGV9ZnVuY3Rpb24gX3Iobix0KXtmdW5jdGlvbiBlKG4sdCl7bz4wPy1qYStUYT50JiYodD0tamErVGEpOnQ+amEtVGEmJih0PWphLVRhKTt2YXIgZT1vL01hdGgucG93KHUodCksaSk7cmV0dXJuW2UqTWF0aC5zaW4oaSpuKSxvLWUqTWF0aC5jb3MoaSpuKV19dmFyIHI9TWF0aC5jb3MobiksdT1mdW5jdGlvbihuKXtyZXR1cm4gTWF0aC50YW4oRGEvNCtuLzIpfSxpPW49PT10P01hdGguc2luKG4pOk1hdGgubG9nKHIvTWF0aC5jb3ModCkpL01hdGgubG9nKHUodCkvdShuKSksbz1yKk1hdGgucG93KHUobiksaSkvaTtyZXR1cm4gaT8oZS5pbnZlcnQ9ZnVuY3Rpb24obix0KXt2YXIgZT1vLXQscj1HKGkpKk1hdGguc3FydChuKm4rZSplKTtyZXR1cm5bTWF0aC5hdGFuMihuLGUpL2ksMipNYXRoLmF0YW4oTWF0aC5wb3coby9yLDEvaSkpLWphXX0sZSk6U3J9ZnVuY3Rpb24gd3Iobix0KXtmdW5jdGlvbiBlKG4sdCl7dmFyIGU9aS10O3JldHVybltlKk1hdGguc2luKHUqbiksaS1lKk1hdGguY29zKHUqbildfXZhciByPU1hdGguY29zKG4pLHU9bj09PXQ/TWF0aC5zaW4obik6KHItTWF0aC5jb3ModCkpLyh0LW4pLGk9ci91K247cmV0dXJuIHZhKHUpPFRhP2FyOihlLmludmVydD1mdW5jdGlvbihuLHQpe3ZhciBlPWktdDtyZXR1cm5bTWF0aC5hdGFuMihuLGUpL3UsaS1HKHUpKk1hdGguc3FydChuKm4rZSplKV19LGUpfWZ1bmN0aW9uIFNyKG4sdCl7cmV0dXJuW24sTWF0aC5sb2coTWF0aC50YW4oRGEvNCt0LzIpKV19ZnVuY3Rpb24ga3Iobil7dmFyIHQsZT11cihuKSxyPWUuc2NhbGUsdT1lLnRyYW5zbGF0ZSxpPWUuY2xpcEV4dGVudDtyZXR1cm4gZS5zY2FsZT1mdW5jdGlvbigpe3ZhciBuPXIuYXBwbHkoZSxhcmd1bWVudHMpO3JldHVybiBuPT09ZT90P2UuY2xpcEV4dGVudChudWxsKTplOm59LGUudHJhbnNsYXRlPWZ1bmN0aW9uKCl7dmFyIG49dS5hcHBseShlLGFyZ3VtZW50cyk7cmV0dXJuIG49PT1lP3Q/ZS5jbGlwRXh0ZW50KG51bGwpOmU6bn0sZS5jbGlwRXh0ZW50PWZ1bmN0aW9uKG4pe3ZhciBvPWkuYXBwbHkoZSxhcmd1bWVudHMpO2lmKG89PT1lKXtpZih0PW51bGw9PW4pe3ZhciBhPURhKnIoKSxjPXUoKTtpKFtbY1swXS1hLGNbMV0tYV0sW2NbMF0rYSxjWzFdK2FdXSl9fWVsc2UgdCYmKG89bnVsbCk7cmV0dXJuIG99LGUuY2xpcEV4dGVudChudWxsKX1mdW5jdGlvbiBFcihuLHQpe3JldHVybltNYXRoLmxvZyhNYXRoLnRhbihEYS80K3QvMikpLC1uXX1mdW5jdGlvbiBBcihuKXtyZXR1cm4gblswXX1mdW5jdGlvbiBOcihuKXtyZXR1cm4gblsxXX1mdW5jdGlvbiBDcihuKXtmb3IodmFyIHQ9bi5sZW5ndGgsZT1bMCwxXSxyPTIsdT0yO3Q+dTt1Kyspe2Zvcig7cj4xJiZLKG5bZVtyLTJdXSxuW2Vbci0xXV0sblt1XSk8PTA7KS0tcjtlW3IrK109dX1yZXR1cm4gZS5zbGljZSgwLHIpfWZ1bmN0aW9uIHpyKG4sdCl7cmV0dXJuIG5bMF0tdFswXXx8blsxXS10WzFdfWZ1bmN0aW9uIHFyKG4sdCxlKXtyZXR1cm4oZVswXS10WzBdKSooblsxXS10WzFdKTwoZVsxXS10WzFdKSooblswXS10WzBdKX1mdW5jdGlvbiBMcihuLHQsZSxyKXt2YXIgdT1uWzBdLGk9ZVswXSxvPXRbMF0tdSxhPXJbMF0taSxjPW5bMV0sbD1lWzFdLHM9dFsxXS1jLGY9clsxXS1sLGg9KGEqKGMtbCktZioodS1pKSkvKGYqby1hKnMpO3JldHVyblt1K2gqbyxjK2gqc119ZnVuY3Rpb24gVHIobil7dmFyIHQ9blswXSxlPW5bbi5sZW5ndGgtMV07cmV0dXJuISh0WzBdLWVbMF18fHRbMV0tZVsxXSl9ZnVuY3Rpb24gUnIoKXt0dSh0aGlzKSx0aGlzLmVkZ2U9dGhpcy5zaXRlPXRoaXMuY2lyY2xlPW51bGx9ZnVuY3Rpb24gRHIobil7dmFyIHQ9b2wucG9wKCl8fG5ldyBScjtyZXR1cm4gdC5zaXRlPW4sdH1mdW5jdGlvbiBQcihuKXtYcihuKSxybC5yZW1vdmUobiksb2wucHVzaChuKSx0dShuKX1mdW5jdGlvbiBVcihuKXt2YXIgdD1uLmNpcmNsZSxlPXQueCxyPXQuY3ksdT17eDplLHk6cn0saT1uLlAsbz1uLk4sYT1bbl07UHIobik7Zm9yKHZhciBjPWk7Yy5jaXJjbGUmJnZhKGUtYy5jaXJjbGUueCk8VGEmJnZhKHItYy5jaXJjbGUuY3kpPFRhOylpPWMuUCxhLnVuc2hpZnQoYyksUHIoYyksYz1pO2EudW5zaGlmdChjKSxYcihjKTtmb3IodmFyIGw9bztsLmNpcmNsZSYmdmEoZS1sLmNpcmNsZS54KTxUYSYmdmEoci1sLmNpcmNsZS5jeSk8VGE7KW89bC5OLGEucHVzaChsKSxQcihsKSxsPW87YS5wdXNoKGwpLFhyKGwpO3ZhciBzLGY9YS5sZW5ndGg7Zm9yKHM9MTtmPnM7KytzKWw9YVtzXSxjPWFbcy0xXSxLcihsLmVkZ2UsYy5zaXRlLGwuc2l0ZSx1KTtjPWFbMF0sbD1hW2YtMV0sbC5lZGdlPUpyKGMuc2l0ZSxsLnNpdGUsbnVsbCx1KSxWcihjKSxWcihsKX1mdW5jdGlvbiBqcihuKXtmb3IodmFyIHQsZSxyLHUsaT1uLngsbz1uLnksYT1ybC5fO2E7KWlmKHI9RnIoYSxvKS1pLHI+VGEpYT1hLkw7ZWxzZXtpZih1PWktSHIoYSxvKSwhKHU+VGEpKXtyPi1UYT8odD1hLlAsZT1hKTp1Pi1UYT8odD1hLGU9YS5OKTp0PWU9YTticmVha31pZighYS5SKXt0PWE7YnJlYWt9YT1hLlJ9dmFyIGM9RHIobik7aWYocmwuaW5zZXJ0KHQsYyksdHx8ZSl7aWYodD09PWUpcmV0dXJuIFhyKHQpLGU9RHIodC5zaXRlKSxybC5pbnNlcnQoYyxlKSxjLmVkZ2U9ZS5lZGdlPUpyKHQuc2l0ZSxjLnNpdGUpLFZyKHQpLFZyKGUpLHZvaWQgMDtpZighZSlyZXR1cm4gYy5lZGdlPUpyKHQuc2l0ZSxjLnNpdGUpLHZvaWQgMDtYcih0KSxYcihlKTt2YXIgbD10LnNpdGUscz1sLngsZj1sLnksaD1uLngtcyxnPW4ueS1mLHA9ZS5zaXRlLHY9cC54LXMsZD1wLnktZixtPTIqKGgqZC1nKnYpLHk9aCpoK2cqZyxNPXYqditkKmQseD17eDooZCp5LWcqTSkvbStzLHk6KGgqTS12KnkpL20rZn07S3IoZS5lZGdlLGwscCx4KSxjLmVkZ2U9SnIobCxuLG51bGwseCksZS5lZGdlPUpyKG4scCxudWxsLHgpLFZyKHQpLFZyKGUpfX1mdW5jdGlvbiBGcihuLHQpe3ZhciBlPW4uc2l0ZSxyPWUueCx1PWUueSxpPXUtdDtpZighaSlyZXR1cm4gcjt2YXIgbz1uLlA7aWYoIW8pcmV0dXJuLTEvMDtlPW8uc2l0ZTt2YXIgYT1lLngsYz1lLnksbD1jLXQ7aWYoIWwpcmV0dXJuIGE7dmFyIHM9YS1yLGY9MS9pLTEvbCxoPXMvbDtyZXR1cm4gZj8oLWgrTWF0aC5zcXJ0KGgqaC0yKmYqKHMqcy8oLTIqbCktYytsLzIrdS1pLzIpKSkvZityOihyK2EpLzJ9ZnVuY3Rpb24gSHIobix0KXt2YXIgZT1uLk47aWYoZSlyZXR1cm4gRnIoZSx0KTt2YXIgcj1uLnNpdGU7cmV0dXJuIHIueT09PXQ/ci54OjEvMH1mdW5jdGlvbiBPcihuKXt0aGlzLnNpdGU9bix0aGlzLmVkZ2VzPVtdfWZ1bmN0aW9uIFlyKG4pe2Zvcih2YXIgdCxlLHIsdSxpLG8sYSxjLGwscyxmPW5bMF1bMF0saD1uWzFdWzBdLGc9blswXVsxXSxwPW5bMV1bMV0sdj1lbCxkPXYubGVuZ3RoO2QtLTspaWYoaT12W2RdLGkmJmkucHJlcGFyZSgpKWZvcihhPWkuZWRnZXMsYz1hLmxlbmd0aCxvPTA7Yz5vOylzPWFbb10uZW5kKCkscj1zLngsdT1zLnksbD1hWysrbyVjXS5zdGFydCgpLHQ9bC54LGU9bC55LCh2YShyLXQpPlRhfHx2YSh1LWUpPlRhKSYmKGEuc3BsaWNlKG8sMCxuZXcgUXIoR3IoaS5zaXRlLHMsdmEoci1mKTxUYSYmcC11PlRhP3t4OmYseTp2YSh0LWYpPFRhP2U6cH06dmEodS1wKTxUYSYmaC1yPlRhP3t4OnZhKGUtcCk8VGE/dDpoLHk6cH06dmEoci1oKTxUYSYmdS1nPlRhP3t4OmgseTp2YSh0LWgpPFRhP2U6Z306dmEodS1nKTxUYSYmci1mPlRhP3t4OnZhKGUtZyk8VGE/dDpmLHk6Z306bnVsbCksaS5zaXRlLG51bGwpKSwrK2MpfWZ1bmN0aW9uIElyKG4sdCl7cmV0dXJuIHQuYW5nbGUtbi5hbmdsZX1mdW5jdGlvbiBacigpe3R1KHRoaXMpLHRoaXMueD10aGlzLnk9dGhpcy5hcmM9dGhpcy5zaXRlPXRoaXMuY3k9bnVsbH1mdW5jdGlvbiBWcihuKXt2YXIgdD1uLlAsZT1uLk47aWYodCYmZSl7dmFyIHI9dC5zaXRlLHU9bi5zaXRlLGk9ZS5zaXRlO2lmKHIhPT1pKXt2YXIgbz11LngsYT11LnksYz1yLngtbyxsPXIueS1hLHM9aS54LW8sZj1pLnktYSxoPTIqKGMqZi1sKnMpO2lmKCEoaD49LVJhKSl7dmFyIGc9YypjK2wqbCxwPXMqcytmKmYsdj0oZipnLWwqcCkvaCxkPShjKnAtcypnKS9oLGY9ZCthLG09YWwucG9wKCl8fG5ldyBacjttLmFyYz1uLG0uc2l0ZT11LG0ueD12K28sbS55PWYrTWF0aC5zcXJ0KHYqditkKmQpLG0uY3k9ZixuLmNpcmNsZT1tO2Zvcih2YXIgeT1udWxsLE09aWwuXztNOylpZihtLnk8TS55fHxtLnk9PT1NLnkmJm0ueDw9TS54KXtpZighTS5MKXt5PU0uUDticmVha31NPU0uTH1lbHNle2lmKCFNLlIpe3k9TTticmVha31NPU0uUn1pbC5pbnNlcnQoeSxtKSx5fHwodWw9bSl9fX19ZnVuY3Rpb24gWHIobil7dmFyIHQ9bi5jaXJjbGU7dCYmKHQuUHx8KHVsPXQuTiksaWwucmVtb3ZlKHQpLGFsLnB1c2godCksdHUodCksbi5jaXJjbGU9bnVsbCl9ZnVuY3Rpb24gJHIobil7Zm9yKHZhciB0LGU9dGwscj1PZShuWzBdWzBdLG5bMF1bMV0sblsxXVswXSxuWzFdWzFdKSx1PWUubGVuZ3RoO3UtLTspdD1lW3VdLCghQnIodCxuKXx8IXIodCl8fHZhKHQuYS54LXQuYi54KTxUYSYmdmEodC5hLnktdC5iLnkpPFRhKSYmKHQuYT10LmI9bnVsbCxlLnNwbGljZSh1LDEpKX1mdW5jdGlvbiBCcihuLHQpe3ZhciBlPW4uYjtpZihlKXJldHVybiEwO3ZhciByLHUsaT1uLmEsbz10WzBdWzBdLGE9dFsxXVswXSxjPXRbMF1bMV0sbD10WzFdWzFdLHM9bi5sLGY9bi5yLGg9cy54LGc9cy55LHA9Zi54LHY9Zi55LGQ9KGgrcCkvMixtPShnK3YpLzI7aWYodj09PWcpe2lmKG8+ZHx8ZD49YSlyZXR1cm47aWYoaD5wKXtpZihpKXtpZihpLnk+PWwpcmV0dXJufWVsc2UgaT17eDpkLHk6Y307ZT17eDpkLHk6bH19ZWxzZXtpZihpKXtpZihpLnk8YylyZXR1cm59ZWxzZSBpPXt4OmQseTpsfTtlPXt4OmQseTpjfX19ZWxzZSBpZihyPShoLXApLyh2LWcpLHU9bS1yKmQsLTE+cnx8cj4xKWlmKGg+cCl7aWYoaSl7aWYoaS55Pj1sKXJldHVybn1lbHNlIGk9e3g6KGMtdSkvcix5OmN9O2U9e3g6KGwtdSkvcix5Omx9fWVsc2V7aWYoaSl7aWYoaS55PGMpcmV0dXJufWVsc2UgaT17eDoobC11KS9yLHk6bH07ZT17eDooYy11KS9yLHk6Y319ZWxzZSBpZih2Pmcpe2lmKGkpe2lmKGkueD49YSlyZXR1cm59ZWxzZSBpPXt4Om8seTpyKm8rdX07ZT17eDphLHk6ciphK3V9fWVsc2V7aWYoaSl7aWYoaS54PG8pcmV0dXJufWVsc2UgaT17eDphLHk6ciphK3V9O2U9e3g6byx5OnIqbyt1fX1yZXR1cm4gbi5hPWksbi5iPWUsITB9ZnVuY3Rpb24gV3Iobix0KXt0aGlzLmw9bix0aGlzLnI9dCx0aGlzLmE9dGhpcy5iPW51bGx9ZnVuY3Rpb24gSnIobix0LGUscil7dmFyIHU9bmV3IFdyKG4sdCk7cmV0dXJuIHRsLnB1c2godSksZSYmS3IodSxuLHQsZSksciYmS3IodSx0LG4sciksZWxbbi5pXS5lZGdlcy5wdXNoKG5ldyBRcih1LG4sdCkpLGVsW3QuaV0uZWRnZXMucHVzaChuZXcgUXIodSx0LG4pKSx1fWZ1bmN0aW9uIEdyKG4sdCxlKXt2YXIgcj1uZXcgV3IobixudWxsKTtyZXR1cm4gci5hPXQsci5iPWUsdGwucHVzaChyKSxyfWZ1bmN0aW9uIEtyKG4sdCxlLHIpe24uYXx8bi5iP24ubD09PWU/bi5iPXI6bi5hPXI6KG4uYT1yLG4ubD10LG4ucj1lKX1mdW5jdGlvbiBRcihuLHQsZSl7dmFyIHI9bi5hLHU9bi5iO3RoaXMuZWRnZT1uLHRoaXMuc2l0ZT10LHRoaXMuYW5nbGU9ZT9NYXRoLmF0YW4yKGUueS10LnksZS54LXQueCk6bi5sPT09dD9NYXRoLmF0YW4yKHUueC1yLngsci55LXUueSk6TWF0aC5hdGFuMihyLngtdS54LHUueS1yLnkpfWZ1bmN0aW9uIG51KCl7dGhpcy5fPW51bGx9ZnVuY3Rpb24gdHUobil7bi5VPW4uQz1uLkw9bi5SPW4uUD1uLk49bnVsbH1mdW5jdGlvbiBldShuLHQpe3ZhciBlPXQscj10LlIsdT1lLlU7dT91Lkw9PT1lP3UuTD1yOnUuUj1yOm4uXz1yLHIuVT11LGUuVT1yLGUuUj1yLkwsZS5SJiYoZS5SLlU9ZSksci5MPWV9ZnVuY3Rpb24gcnUobix0KXt2YXIgZT10LHI9dC5MLHU9ZS5VO3U/dS5MPT09ZT91Lkw9cjp1LlI9cjpuLl89cixyLlU9dSxlLlU9cixlLkw9ci5SLGUuTCYmKGUuTC5VPWUpLHIuUj1lfWZ1bmN0aW9uIHV1KG4pe2Zvcig7bi5MOyluPW4uTDtyZXR1cm4gbn1mdW5jdGlvbiBpdShuLHQpe3ZhciBlLHIsdSxpPW4uc29ydChvdSkucG9wKCk7Zm9yKHRsPVtdLGVsPW5ldyBBcnJheShuLmxlbmd0aCkscmw9bmV3IG51LGlsPW5ldyBudTs7KWlmKHU9dWwsaSYmKCF1fHxpLnk8dS55fHxpLnk9PT11LnkmJmkueDx1LngpKShpLnghPT1lfHxpLnkhPT1yKSYmKGVsW2kuaV09bmV3IE9yKGkpLGpyKGkpLGU9aS54LHI9aS55KSxpPW4ucG9wKCk7ZWxzZXtpZighdSlicmVhaztVcih1LmFyYyl9dCYmKCRyKHQpLFlyKHQpKTt2YXIgbz17Y2VsbHM6ZWwsZWRnZXM6dGx9O3JldHVybiBybD1pbD10bD1lbD1udWxsLG99ZnVuY3Rpb24gb3Uobix0KXtyZXR1cm4gdC55LW4ueXx8dC54LW4ueH1mdW5jdGlvbiBhdShuLHQsZSl7cmV0dXJuKG4ueC1lLngpKih0Lnktbi55KS0obi54LXQueCkqKGUueS1uLnkpfWZ1bmN0aW9uIGN1KG4pe3JldHVybiBuLnh9ZnVuY3Rpb24gbHUobil7cmV0dXJuIG4ueX1mdW5jdGlvbiBzdSgpe3JldHVybntsZWFmOiEwLG5vZGVzOltdLHBvaW50Om51bGwseDpudWxsLHk6bnVsbH19ZnVuY3Rpb24gZnUobix0LGUscix1LGkpe2lmKCFuKHQsZSxyLHUsaSkpe3ZhciBvPS41KihlK3UpLGE9LjUqKHIraSksYz10Lm5vZGVzO2NbMF0mJmZ1KG4sY1swXSxlLHIsbyxhKSxjWzFdJiZmdShuLGNbMV0sbyxyLHUsYSksY1syXSYmZnUobixjWzJdLGUsYSxvLGkpLGNbM10mJmZ1KG4sY1szXSxvLGEsdSxpKX19ZnVuY3Rpb24gaHUobix0LGUscix1LGksbyl7dmFyIGEsYz0xLzA7cmV0dXJuIGZ1bmN0aW9uIGwobixzLGYsaCxnKXtpZighKHM+aXx8Zj5vfHxyPmh8fHU+Zykpe2lmKHA9bi5wb2ludCl7dmFyIHAsdj10LXBbMF0sZD1lLXBbMV0sbT12KnYrZCpkO2lmKGM+bSl7dmFyIHk9TWF0aC5zcXJ0KGM9bSk7cj10LXksdT1lLXksaT10K3ksbz1lK3ksYT1wfX1mb3IodmFyIE09bi5ub2Rlcyx4PS41KihzK2gpLGI9LjUqKGYrZyksXz10Pj14LHc9ZT49YixTPXc8PDF8XyxrPVMrNDtrPlM7KytTKWlmKG49TVszJlNdKXN3aXRjaCgzJlMpe2Nhc2UgMDpsKG4scyxmLHgsYik7YnJlYWs7Y2FzZSAxOmwobix4LGYsaCxiKTticmVhaztjYXNlIDI6bChuLHMsYix4LGcpO2JyZWFrO2Nhc2UgMzpsKG4seCxiLGgsZyl9fX0obixyLHUsaSxvKSxhfWZ1bmN0aW9uIGd1KG4sdCl7bj10YS5yZ2IobiksdD10YS5yZ2IodCk7dmFyIGU9bi5yLHI9bi5nLHU9bi5iLGk9dC5yLWUsbz10LmctcixhPXQuYi11O3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4iIyIrTXQoTWF0aC5yb3VuZChlK2kqbikpK010KE1hdGgucm91bmQocitvKm4pKStNdChNYXRoLnJvdW5kKHUrYSpuKSl9fWZ1bmN0aW9uIHB1KG4sdCl7dmFyIGUscj17fSx1PXt9O2ZvcihlIGluIG4pZSBpbiB0P3JbZV09bXUobltlXSx0W2VdKTp1W2VdPW5bZV07Zm9yKGUgaW4gdCllIGluIG58fCh1W2VdPXRbZV0pO3JldHVybiBmdW5jdGlvbihuKXtmb3IoZSBpbiByKXVbZV09cltlXShuKTtyZXR1cm4gdX19ZnVuY3Rpb24gdnUobix0KXtyZXR1cm4gbj0rbix0PSt0LGZ1bmN0aW9uKGUpe3JldHVybiBuKigxLWUpK3QqZX19ZnVuY3Rpb24gZHUobix0KXt2YXIgZSxyLHUsaT1sbC5sYXN0SW5kZXg9c2wubGFzdEluZGV4PTAsbz0tMSxhPVtdLGM9W107Zm9yKG4rPSIiLHQrPSIiOyhlPWxsLmV4ZWMobikpJiYocj1zbC5leGVjKHQpKTspKHU9ci5pbmRleCk+aSYmKHU9dC5zbGljZShpLHUpLGFbb10/YVtvXSs9dTphWysrb109dSksKGU9ZVswXSk9PT0ocj1yWzBdKT9hW29dP2Fbb10rPXI6YVsrK29dPXI6KGFbKytvXT1udWxsLGMucHVzaCh7aTpvLHg6dnUoZSxyKX0pKSxpPXNsLmxhc3RJbmRleDtyZXR1cm4gaTx0Lmxlbmd0aCYmKHU9dC5zbGljZShpKSxhW29dP2Fbb10rPXU6YVsrK29dPXUpLGEubGVuZ3RoPDI/Y1swXT8odD1jWzBdLngsZnVuY3Rpb24obil7cmV0dXJuIHQobikrIiJ9KTpmdW5jdGlvbigpe3JldHVybiB0fToodD1jLmxlbmd0aCxmdW5jdGlvbihuKXtmb3IodmFyIGUscj0wO3Q+cjsrK3IpYVsoZT1jW3JdKS5pXT1lLngobik7cmV0dXJuIGEuam9pbigiIil9KX1mdW5jdGlvbiBtdShuLHQpe2Zvcih2YXIgZSxyPXRhLmludGVycG9sYXRvcnMubGVuZ3RoOy0tcj49MCYmIShlPXRhLmludGVycG9sYXRvcnNbcl0obix0KSk7KTtyZXR1cm4gZX1mdW5jdGlvbiB5dShuLHQpe3ZhciBlLHI9W10sdT1bXSxpPW4ubGVuZ3RoLG89dC5sZW5ndGgsYT1NYXRoLm1pbihuLmxlbmd0aCx0Lmxlbmd0aCk7Zm9yKGU9MDthPmU7KytlKXIucHVzaChtdShuW2VdLHRbZV0pKTtmb3IoO2k+ZTsrK2UpdVtlXT1uW2VdO2Zvcig7bz5lOysrZSl1W2VdPXRbZV07cmV0dXJuIGZ1bmN0aW9uKG4pe2ZvcihlPTA7YT5lOysrZSl1W2VdPXJbZV0obik7cmV0dXJuIHV9fWZ1bmN0aW9uIE11KG4pe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gMD49dD8wOnQ+PTE/MTpuKHQpfX1mdW5jdGlvbiB4dShuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIDEtbigxLXQpfX1mdW5jdGlvbiBidShuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuLjUqKC41PnQ/bigyKnQpOjItbigyLTIqdCkpfX1mdW5jdGlvbiBfdShuKXtyZXR1cm4gbipufWZ1bmN0aW9uIHd1KG4pe3JldHVybiBuKm4qbn1mdW5jdGlvbiBTdShuKXtpZigwPj1uKXJldHVybiAwO2lmKG4+PTEpcmV0dXJuIDE7dmFyIHQ9bipuLGU9dCpuO3JldHVybiA0KiguNT5uP2U6Myoobi10KStlLS43NSl9ZnVuY3Rpb24ga3Uobil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnBvdyh0LG4pfX1mdW5jdGlvbiBFdShuKXtyZXR1cm4gMS1NYXRoLmNvcyhuKmphKX1mdW5jdGlvbiBBdShuKXtyZXR1cm4gTWF0aC5wb3coMiwxMCoobi0xKSl9ZnVuY3Rpb24gTnUobil7cmV0dXJuIDEtTWF0aC5zcXJ0KDEtbipuKX1mdW5jdGlvbiBDdShuLHQpe3ZhciBlO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDImJih0PS40NSksYXJndW1lbnRzLmxlbmd0aD9lPXQvUGEqTWF0aC5hc2luKDEvbik6KG49MSxlPXQvNCksZnVuY3Rpb24ocil7cmV0dXJuIDErbipNYXRoLnBvdygyLC0xMCpyKSpNYXRoLnNpbigoci1lKSpQYS90KX19ZnVuY3Rpb24genUobil7cmV0dXJuIG58fChuPTEuNzAxNTgpLGZ1bmN0aW9uKHQpe3JldHVybiB0KnQqKChuKzEpKnQtbil9fWZ1bmN0aW9uIHF1KG4pe3JldHVybiAxLzIuNzU+bj83LjU2MjUqbipuOjIvMi43NT5uPzcuNTYyNSoobi09MS41LzIuNzUpKm4rLjc1OjIuNS8yLjc1Pm4/Ny41NjI1KihuLT0yLjI1LzIuNzUpKm4rLjkzNzU6Ny41NjI1KihuLT0yLjYyNS8yLjc1KSpuKy45ODQzNzV9ZnVuY3Rpb24gTHUobix0KXtuPXRhLmhjbChuKSx0PXRhLmhjbCh0KTt2YXIgZT1uLmgscj1uLmMsdT1uLmwsaT10LmgtZSxvPXQuYy1yLGE9dC5sLXU7cmV0dXJuIGlzTmFOKG8pJiYobz0wLHI9aXNOYU4ocik/dC5jOnIpLGlzTmFOKGkpPyhpPTAsZT1pc05hTihlKT90Lmg6ZSk6aT4xODA/aS09MzYwOi0xODA+aSYmKGkrPTM2MCksZnVuY3Rpb24obil7cmV0dXJuIGx0KGUraSpuLHIrbypuLHUrYSpuKSsiIn19ZnVuY3Rpb24gVHUobix0KXtuPXRhLmhzbChuKSx0PXRhLmhzbCh0KTt2YXIgZT1uLmgscj1uLnMsdT1uLmwsaT10LmgtZSxvPXQucy1yLGE9dC5sLXU7cmV0dXJuIGlzTmFOKG8pJiYobz0wLHI9aXNOYU4ocik/dC5zOnIpLGlzTmFOKGkpPyhpPTAsZT1pc05hTihlKT90Lmg6ZSk6aT4xODA/aS09MzYwOi0xODA+aSYmKGkrPTM2MCksZnVuY3Rpb24obil7cmV0dXJuIGF0KGUraSpuLHIrbypuLHUrYSpuKSsiIn19ZnVuY3Rpb24gUnUobix0KXtuPXRhLmxhYihuKSx0PXRhLmxhYih0KTt2YXIgZT1uLmwscj1uLmEsdT1uLmIsaT10LmwtZSxvPXQuYS1yLGE9dC5iLXU7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBmdChlK2kqbixyK28qbix1K2EqbikrIiJ9fWZ1bmN0aW9uIER1KG4sdCl7cmV0dXJuIHQtPW4sZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucm91bmQobit0KmUpfX1mdW5jdGlvbiBQdShuKXt2YXIgdD1bbi5hLG4uYl0sZT1bbi5jLG4uZF0scj1qdSh0KSx1PVV1KHQsZSksaT1qdShGdShlLHQsLXUpKXx8MDt0WzBdKmVbMV08ZVswXSp0WzFdJiYodFswXSo9LTEsdFsxXSo9LTEscio9LTEsdSo9LTEpLHRoaXMucm90YXRlPShyP01hdGguYXRhbjIodFsxXSx0WzBdKTpNYXRoLmF0YW4yKC1lWzBdLGVbMV0pKSpIYSx0aGlzLnRyYW5zbGF0ZT1bbi5lLG4uZl0sdGhpcy5zY2FsZT1bcixpXSx0aGlzLnNrZXc9aT9NYXRoLmF0YW4yKHUsaSkqSGE6MH1mdW5jdGlvbiBVdShuLHQpe3JldHVybiBuWzBdKnRbMF0rblsxXSp0WzFdfWZ1bmN0aW9uIGp1KG4pe3ZhciB0PU1hdGguc3FydChVdShuLG4pKTtyZXR1cm4gdCYmKG5bMF0vPXQsblsxXS89dCksdH1mdW5jdGlvbiBGdShuLHQsZSl7cmV0dXJuIG5bMF0rPWUqdFswXSxuWzFdKz1lKnRbMV0sbn1mdW5jdGlvbiBIdShuLHQpe3ZhciBlLHI9W10sdT1bXSxpPXRhLnRyYW5zZm9ybShuKSxvPXRhLnRyYW5zZm9ybSh0KSxhPWkudHJhbnNsYXRlLGM9by50cmFuc2xhdGUsbD1pLnJvdGF0ZSxzPW8ucm90YXRlLGY9aS5za2V3LGg9by5za2V3LGc9aS5zY2FsZSxwPW8uc2NhbGU7cmV0dXJuIGFbMF0hPWNbMF18fGFbMV0hPWNbMV0/KHIucHVzaCgidHJhbnNsYXRlKCIsbnVsbCwiLCIsbnVsbCwiKSIpLHUucHVzaCh7aToxLHg6dnUoYVswXSxjWzBdKX0se2k6Myx4OnZ1KGFbMV0sY1sxXSl9KSk6Y1swXXx8Y1sxXT9yLnB1c2goInRyYW5zbGF0ZSgiK2MrIikiKTpyLnB1c2goIiIpLGwhPXM/KGwtcz4xODA/cys9MzYwOnMtbD4xODAmJihsKz0zNjApLHUucHVzaCh7aTpyLnB1c2goci5wb3AoKSsicm90YXRlKCIsbnVsbCwiKSIpLTIseDp2dShsLHMpfSkpOnMmJnIucHVzaChyLnBvcCgpKyJyb3RhdGUoIitzKyIpIiksZiE9aD91LnB1c2goe2k6ci5wdXNoKHIucG9wKCkrInNrZXdYKCIsbnVsbCwiKSIpLTIseDp2dShmLGgpfSk6aCYmci5wdXNoKHIucG9wKCkrInNrZXdYKCIraCsiKSIpLGdbMF0hPXBbMF18fGdbMV0hPXBbMV0/KGU9ci5wdXNoKHIucG9wKCkrInNjYWxlKCIsbnVsbCwiLCIsbnVsbCwiKSIpLHUucHVzaCh7aTplLTQseDp2dShnWzBdLHBbMF0pfSx7aTplLTIseDp2dShnWzFdLHBbMV0pfSkpOigxIT1wWzBdfHwxIT1wWzFdKSYmci5wdXNoKHIucG9wKCkrInNjYWxlKCIrcCsiKSIpLGU9dS5sZW5ndGgsZnVuY3Rpb24obil7Zm9yKHZhciB0LGk9LTE7KytpPGU7KXJbKHQ9dVtpXSkuaV09dC54KG4pO3JldHVybiByLmpvaW4oIiIpfX1mdW5jdGlvbiBPdShuLHQpe3JldHVybiB0PSh0LT1uPStuKXx8MS90LGZ1bmN0aW9uKGUpe3JldHVybihlLW4pL3R9fWZ1bmN0aW9uIFl1KG4sdCl7cmV0dXJuIHQ9KHQtPW49K24pfHwxL3QsZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5taW4oMSwoZS1uKS90KSl9fWZ1bmN0aW9uIEl1KG4pe2Zvcih2YXIgdD1uLnNvdXJjZSxlPW4udGFyZ2V0LHI9VnUodCxlKSx1PVt0XTt0IT09cjspdD10LnBhcmVudCx1LnB1c2godCk7Zm9yKHZhciBpPXUubGVuZ3RoO2UhPT1yOyl1LnNwbGljZShpLDAsZSksZT1lLnBhcmVudDtyZXR1cm4gdX1mdW5jdGlvbiBadShuKXtmb3IodmFyIHQ9W10sZT1uLnBhcmVudDtudWxsIT1lOyl0LnB1c2gobiksbj1lLGU9ZS5wYXJlbnQ7cmV0dXJuIHQucHVzaChuKSx0fWZ1bmN0aW9uIFZ1KG4sdCl7aWYobj09PXQpcmV0dXJuIG47Zm9yKHZhciBlPVp1KG4pLHI9WnUodCksdT1lLnBvcCgpLGk9ci5wb3AoKSxvPW51bGw7dT09PWk7KW89dSx1PWUucG9wKCksaT1yLnBvcCgpO3JldHVybiBvfWZ1bmN0aW9uIFh1KG4pe24uZml4ZWR8PTJ9ZnVuY3Rpb24gJHUobil7bi5maXhlZCY9LTd9ZnVuY3Rpb24gQnUobil7bi5maXhlZHw9NCxuLnB4PW4ueCxuLnB5PW4ueX1mdW5jdGlvbiBXdShuKXtuLmZpeGVkJj0tNX1mdW5jdGlvbiBKdShuLHQsZSl7dmFyIHI9MCx1PTA7aWYobi5jaGFyZ2U9MCwhbi5sZWFmKWZvcih2YXIgaSxvPW4ubm9kZXMsYT1vLmxlbmd0aCxjPS0xOysrYzxhOylpPW9bY10sbnVsbCE9aSYmKEp1KGksdCxlKSxuLmNoYXJnZSs9aS5jaGFyZ2Uscis9aS5jaGFyZ2UqaS5jeCx1Kz1pLmNoYXJnZSppLmN5KTtpZihuLnBvaW50KXtuLmxlYWZ8fChuLnBvaW50LngrPU1hdGgucmFuZG9tKCktLjUsbi5wb2ludC55Kz1NYXRoLnJhbmRvbSgpLS41KTt2YXIgbD10KmVbbi5wb2ludC5pbmRleF07bi5jaGFyZ2UrPW4ucG9pbnRDaGFyZ2U9bCxyKz1sKm4ucG9pbnQueCx1Kz1sKm4ucG9pbnQueX1uLmN4PXIvbi5jaGFyZ2Usbi5jeT11L24uY2hhcmdlfWZ1bmN0aW9uIEd1KG4sdCl7cmV0dXJuIHRhLnJlYmluZChuLHQsInNvcnQiLCJjaGlsZHJlbiIsInZhbHVlIiksbi5ub2Rlcz1uLG4ubGlua3M9cmksbn1mdW5jdGlvbiBLdShuLHQpe2Zvcih2YXIgZT1bbl07bnVsbCE9KG49ZS5wb3AoKSk7KWlmKHQobiksKHU9bi5jaGlsZHJlbikmJihyPXUubGVuZ3RoKSlmb3IodmFyIHIsdTstLXI+PTA7KWUucHVzaCh1W3JdKX1mdW5jdGlvbiBRdShuLHQpe2Zvcih2YXIgZT1bbl0scj1bXTtudWxsIT0obj1lLnBvcCgpKTspaWYoci5wdXNoKG4pLChpPW4uY2hpbGRyZW4pJiYodT1pLmxlbmd0aCkpZm9yKHZhciB1LGksbz0tMTsrK288dTspZS5wdXNoKGlbb10pO2Zvcig7bnVsbCE9KG49ci5wb3AoKSk7KXQobil9ZnVuY3Rpb24gbmkobil7cmV0dXJuIG4uY2hpbGRyZW59ZnVuY3Rpb24gdGkobil7cmV0dXJuIG4udmFsdWV9ZnVuY3Rpb24gZWkobix0KXtyZXR1cm4gdC52YWx1ZS1uLnZhbHVlfWZ1bmN0aW9uIHJpKG4pe3JldHVybiB0YS5tZXJnZShuLm1hcChmdW5jdGlvbihuKXtyZXR1cm4obi5jaGlsZHJlbnx8W10pLm1hcChmdW5jdGlvbih0KXtyZXR1cm57c291cmNlOm4sdGFyZ2V0OnR9fSl9KSl9ZnVuY3Rpb24gdWkobil7cmV0dXJuIG4ueH1mdW5jdGlvbiBpaShuKXtyZXR1cm4gbi55fWZ1bmN0aW9uIG9pKG4sdCxlKXtuLnkwPXQsbi55PWV9ZnVuY3Rpb24gYWkobil7cmV0dXJuIHRhLnJhbmdlKG4ubGVuZ3RoKX1mdW5jdGlvbiBjaShuKXtmb3IodmFyIHQ9LTEsZT1uWzBdLmxlbmd0aCxyPVtdOysrdDxlOylyW3RdPTA7cmV0dXJuIHJ9ZnVuY3Rpb24gbGkobil7Zm9yKHZhciB0LGU9MSxyPTAsdT1uWzBdWzFdLGk9bi5sZW5ndGg7aT5lOysrZSkodD1uW2VdWzFdKT51JiYocj1lLHU9dCk7cmV0dXJuIHJ9ZnVuY3Rpb24gc2kobil7cmV0dXJuIG4ucmVkdWNlKGZpLDApfWZ1bmN0aW9uIGZpKG4sdCl7cmV0dXJuIG4rdFsxXX1mdW5jdGlvbiBoaShuLHQpe3JldHVybiBnaShuLE1hdGguY2VpbChNYXRoLmxvZyh0Lmxlbmd0aCkvTWF0aC5MTjIrMSkpfWZ1bmN0aW9uIGdpKG4sdCl7Zm9yKHZhciBlPS0xLHI9K25bMF0sdT0oblsxXS1yKS90LGk9W107KytlPD10OylpW2VdPXUqZStyO3JldHVybiBpfWZ1bmN0aW9uIHBpKG4pe3JldHVyblt0YS5taW4obiksdGEubWF4KG4pXX1mdW5jdGlvbiB2aShuLHQpe3JldHVybiBuLnZhbHVlLXQudmFsdWV9ZnVuY3Rpb24gZGkobix0KXt2YXIgZT1uLl9wYWNrX25leHQ7bi5fcGFja19uZXh0PXQsdC5fcGFja19wcmV2PW4sdC5fcGFja19uZXh0PWUsZS5fcGFja19wcmV2PXR9ZnVuY3Rpb24gbWkobix0KXtuLl9wYWNrX25leHQ9dCx0Ll9wYWNrX3ByZXY9bn1mdW5jdGlvbiB5aShuLHQpe3ZhciBlPXQueC1uLngscj10Lnktbi55LHU9bi5yK3QucjtyZXR1cm4uOTk5KnUqdT5lKmUrcipyfWZ1bmN0aW9uIE1pKG4pe2Z1bmN0aW9uIHQobil7cz1NYXRoLm1pbihuLngtbi5yLHMpLGY9TWF0aC5tYXgobi54K24ucixmKSxoPU1hdGgubWluKG4ueS1uLnIsaCksZz1NYXRoLm1heChuLnkrbi5yLGcpfWlmKChlPW4uY2hpbGRyZW4pJiYobD1lLmxlbmd0aCkpe3ZhciBlLHIsdSxpLG8sYSxjLGwscz0xLzAsZj0tMS8wLGg9MS8wLGc9LTEvMDtpZihlLmZvckVhY2goeGkpLHI9ZVswXSxyLng9LXIucixyLnk9MCx0KHIpLGw+MSYmKHU9ZVsxXSx1Lng9dS5yLHUueT0wLHQodSksbD4yKSlmb3IoaT1lWzJdLHdpKHIsdSxpKSx0KGkpLGRpKHIsaSksci5fcGFja19wcmV2PWksZGkoaSx1KSx1PXIuX3BhY2tfbmV4dCxvPTM7bD5vO28rKyl7d2kocix1LGk9ZVtvXSk7dmFyIHA9MCx2PTEsZD0xO2ZvcihhPXUuX3BhY2tfbmV4dDthIT09dTthPWEuX3BhY2tfbmV4dCx2KyspaWYoeWkoYSxpKSl7cD0xO2JyZWFrfWlmKDE9PXApZm9yKGM9ci5fcGFja19wcmV2O2MhPT1hLl9wYWNrX3ByZXYmJiF5aShjLGkpO2M9Yy5fcGFja19wcmV2LGQrKyk7cD8oZD52fHx2PT1kJiZ1LnI8ci5yP21pKHIsdT1hKTptaShyPWMsdSksby0tKTooZGkocixpKSx1PWksdChpKSl9dmFyIG09KHMrZikvMix5PShoK2cpLzIsTT0wO2ZvcihvPTA7bD5vO28rKylpPWVbb10saS54LT1tLGkueS09eSxNPU1hdGgubWF4KE0saS5yK01hdGguc3FydChpLngqaS54K2kueSppLnkpKTtuLnI9TSxlLmZvckVhY2goYmkpfX1mdW5jdGlvbiB4aShuKXtuLl9wYWNrX25leHQ9bi5fcGFja19wcmV2PW59ZnVuY3Rpb24gYmkobil7ZGVsZXRlIG4uX3BhY2tfbmV4dCxkZWxldGUgbi5fcGFja19wcmV2fWZ1bmN0aW9uIF9pKG4sdCxlLHIpe3ZhciB1PW4uY2hpbGRyZW47aWYobi54PXQrPXIqbi54LG4ueT1lKz1yKm4ueSxuLnIqPXIsdSlmb3IodmFyIGk9LTEsbz11Lmxlbmd0aDsrK2k8bzspX2kodVtpXSx0LGUscil9ZnVuY3Rpb24gd2kobix0LGUpe3ZhciByPW4ucitlLnIsdT10Lngtbi54LGk9dC55LW4ueTtpZihyJiYodXx8aSkpe3ZhciBvPXQucitlLnIsYT11KnUraSppO28qPW8scio9cjt2YXIgYz0uNSsoci1vKS8oMiphKSxsPU1hdGguc3FydChNYXRoLm1heCgwLDIqbyoocithKS0oci09YSkqci1vKm8pKS8oMiphKTtlLng9bi54K2MqdStsKmksZS55PW4ueStjKmktbCp1fWVsc2UgZS54PW4ueCtyLGUueT1uLnl9ZnVuY3Rpb24gU2kobix0KXtyZXR1cm4gbi5wYXJlbnQ9PXQucGFyZW50PzE6Mn1mdW5jdGlvbiBraShuKXt2YXIgdD1uLmNoaWxkcmVuO3JldHVybiB0Lmxlbmd0aD90WzBdOm4udH1mdW5jdGlvbiBFaShuKXt2YXIgdCxlPW4uY2hpbGRyZW47cmV0dXJuKHQ9ZS5sZW5ndGgpP2VbdC0xXTpuLnR9ZnVuY3Rpb24gQWkobix0LGUpe3ZhciByPWUvKHQuaS1uLmkpO3QuYy09cix0LnMrPWUsbi5jKz1yLHQueis9ZSx0Lm0rPWV9ZnVuY3Rpb24gTmkobil7Zm9yKHZhciB0LGU9MCxyPTAsdT1uLmNoaWxkcmVuLGk9dS5sZW5ndGg7LS1pPj0wOyl0PXVbaV0sdC56Kz1lLHQubSs9ZSxlKz10LnMrKHIrPXQuYyl9ZnVuY3Rpb24gQ2kobix0LGUpe3JldHVybiBuLmEucGFyZW50PT09dC5wYXJlbnQ/bi5hOmV9ZnVuY3Rpb24gemkobil7cmV0dXJuIDErdGEubWF4KG4sZnVuY3Rpb24obil7cmV0dXJuIG4ueX0pfWZ1bmN0aW9uIHFpKG4pe3JldHVybiBuLnJlZHVjZShmdW5jdGlvbihuLHQpe3JldHVybiBuK3QueH0sMCkvbi5sZW5ndGh9ZnVuY3Rpb24gTGkobil7dmFyIHQ9bi5jaGlsZHJlbjtyZXR1cm4gdCYmdC5sZW5ndGg/TGkodFswXSk6bn1mdW5jdGlvbiBUaShuKXt2YXIgdCxlPW4uY2hpbGRyZW47cmV0dXJuIGUmJih0PWUubGVuZ3RoKT9UaShlW3QtMV0pOm59ZnVuY3Rpb24gUmkobil7cmV0dXJue3g6bi54LHk6bi55LGR4Om4uZHgsZHk6bi5keX19ZnVuY3Rpb24gRGkobix0KXt2YXIgZT1uLngrdFszXSxyPW4ueSt0WzBdLHU9bi5keC10WzFdLXRbM10saT1uLmR5LXRbMF0tdFsyXTtyZXR1cm4gMD51JiYoZSs9dS8yLHU9MCksMD5pJiYocis9aS8yLGk9MCkse3g6ZSx5OnIsZHg6dSxkeTppfX1mdW5jdGlvbiBQaShuKXt2YXIgdD1uWzBdLGU9bltuLmxlbmd0aC0xXTtyZXR1cm4gZT50P1t0LGVdOltlLHRdfWZ1bmN0aW9uIFVpKG4pe3JldHVybiBuLnJhbmdlRXh0ZW50P24ucmFuZ2VFeHRlbnQoKTpQaShuLnJhbmdlKCkpfWZ1bmN0aW9uIGppKG4sdCxlLHIpe3ZhciB1PWUoblswXSxuWzFdKSxpPXIodFswXSx0WzFdKTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGkodShuKSl9fWZ1bmN0aW9uIEZpKG4sdCl7dmFyIGUscj0wLHU9bi5sZW5ndGgtMSxpPW5bcl0sbz1uW3VdO3JldHVybiBpPm8mJihlPXIscj11LHU9ZSxlPWksaT1vLG89ZSksbltyXT10LmZsb29yKGkpLG5bdV09dC5jZWlsKG8pLG59ZnVuY3Rpb24gSGkobil7cmV0dXJuIG4/e2Zsb29yOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmZsb29yKHQvbikqbn0sY2VpbDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5jZWlsKHQvbikqbn19OmJsfWZ1bmN0aW9uIE9pKG4sdCxlLHIpe3ZhciB1PVtdLGk9W10sbz0wLGE9TWF0aC5taW4obi5sZW5ndGgsdC5sZW5ndGgpLTE7Zm9yKG5bYV08blswXSYmKG49bi5zbGljZSgpLnJldmVyc2UoKSx0PXQuc2xpY2UoKS5yZXZlcnNlKCkpOysrbzw9YTspdS5wdXNoKGUobltvLTFdLG5bb10pKSxpLnB1c2gocih0W28tMV0sdFtvXSkpO3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT10YS5iaXNlY3Qobix0LDEsYSktMTtyZXR1cm4gaVtlXSh1W2VdKHQpKX19ZnVuY3Rpb24gWWkobix0LGUscil7ZnVuY3Rpb24gdSgpe3ZhciB1PU1hdGgubWluKG4ubGVuZ3RoLHQubGVuZ3RoKT4yP09pOmppLGM9cj9ZdTpPdTtyZXR1cm4gbz11KG4sdCxjLGUpLGE9dSh0LG4sYyxtdSksaX1mdW5jdGlvbiBpKG4pe3JldHVybiBvKG4pfXZhciBvLGE7cmV0dXJuIGkuaW52ZXJ0PWZ1bmN0aW9uKG4pe3JldHVybiBhKG4pfSxpLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10Lm1hcChOdW1iZXIpLHUoKSk6bn0saS5yYW5nZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1uLHUoKSk6dH0saS5yYW5nZVJvdW5kPWZ1bmN0aW9uKG4pe3JldHVybiBpLnJhbmdlKG4pLmludGVycG9sYXRlKER1KX0saS5jbGFtcD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1uLHUoKSk6cn0saS5pbnRlcnBvbGF0ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1uLHUoKSk6ZX0saS50aWNrcz1mdW5jdGlvbih0KXtyZXR1cm4gWGkobix0KX0saS50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuICRpKG4sdCxlKX0saS5uaWNlPWZ1bmN0aW9uKHQpe3JldHVybiBaaShuLHQpLHUoKX0saS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFlpKG4sdCxlLHIpfSx1KCl9ZnVuY3Rpb24gSWkobix0KXtyZXR1cm4gdGEucmViaW5kKG4sdCwicmFuZ2UiLCJyYW5nZVJvdW5kIiwiaW50ZXJwb2xhdGUiLCJjbGFtcCIpfWZ1bmN0aW9uIFppKG4sdCl7cmV0dXJuIEZpKG4sSGkoVmkobix0KVsyXSkpfWZ1bmN0aW9uIFZpKG4sdCl7bnVsbD09dCYmKHQ9MTApO3ZhciBlPVBpKG4pLHI9ZVsxXS1lWzBdLHU9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhyL3QpL01hdGguTE4xMCkpLGk9dC9yKnU7cmV0dXJuLjE1Pj1pP3UqPTEwOi4zNT49aT91Kj01Oi43NT49aSYmKHUqPTIpLGVbMF09TWF0aC5jZWlsKGVbMF0vdSkqdSxlWzFdPU1hdGguZmxvb3IoZVsxXS91KSp1Ky41KnUsZVsyXT11LGV9ZnVuY3Rpb24gWGkobix0KXtyZXR1cm4gdGEucmFuZ2UuYXBwbHkodGEsVmkobix0KSl9ZnVuY3Rpb24gJGkobix0LGUpe3ZhciByPVZpKG4sdCk7aWYoZSl7dmFyIHU9bGMuZXhlYyhlKTtpZih1LnNoaWZ0KCksInMiPT09dVs4XSl7dmFyIGk9dGEuZm9ybWF0UHJlZml4KE1hdGgubWF4KHZhKHJbMF0pLHZhKHJbMV0pKSk7cmV0dXJuIHVbN118fCh1WzddPSIuIitCaShpLnNjYWxlKHJbMl0pKSksdVs4XT0iZiIsZT10YS5mb3JtYXQodS5qb2luKCIiKSksZnVuY3Rpb24obil7cmV0dXJuIGUoaS5zY2FsZShuKSkraS5zeW1ib2x9fXVbN118fCh1WzddPSIuIitXaSh1WzhdLHIpKSxlPXUuam9pbigiIil9ZWxzZSBlPSIsLiIrQmkoclsyXSkrImYiO3JldHVybiB0YS5mb3JtYXQoZSl9ZnVuY3Rpb24gQmkobil7cmV0dXJuLU1hdGguZmxvb3IoTWF0aC5sb2cobikvTWF0aC5MTjEwKy4wMSl9ZnVuY3Rpb24gV2kobix0KXt2YXIgZT1CaSh0WzJdKTtyZXR1cm4gbiBpbiBfbD9NYXRoLmFicyhlLUJpKE1hdGgubWF4KHZhKHRbMF0pLHZhKHRbMV0pKSkpKyArKCJlIiE9PW4pOmUtMiooIiUiPT09bil9ZnVuY3Rpb24gSmkobix0LGUscil7ZnVuY3Rpb24gdShuKXtyZXR1cm4oZT9NYXRoLmxvZygwPm4/MDpuKTotTWF0aC5sb2cobj4wPzA6LW4pKS9NYXRoLmxvZyh0KX1mdW5jdGlvbiBpKG4pe3JldHVybiBlP01hdGgucG93KHQsbik6LU1hdGgucG93KHQsLW4pfWZ1bmN0aW9uIG8odCl7cmV0dXJuIG4odSh0KSl9cmV0dXJuIG8uaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiBpKG4uaW52ZXJ0KHQpKX0sby5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dFswXT49MCxuLmRvbWFpbigocj10Lm1hcChOdW1iZXIpKS5tYXAodSkpLG8pOnJ9LG8uYmFzZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rZSxuLmRvbWFpbihyLm1hcCh1KSksbyk6dH0sby5uaWNlPWZ1bmN0aW9uKCl7dmFyIHQ9Rmkoci5tYXAodSksZT9NYXRoOlNsKTtyZXR1cm4gbi5kb21haW4odCkscj10Lm1hcChpKSxvfSxvLnRpY2tzPWZ1bmN0aW9uKCl7dmFyIG49UGkociksbz1bXSxhPW5bMF0sYz1uWzFdLGw9TWF0aC5mbG9vcih1KGEpKSxzPU1hdGguY2VpbCh1KGMpKSxmPXQlMT8yOnQ7aWYoaXNGaW5pdGUocy1sKSl7aWYoZSl7Zm9yKDtzPmw7bCsrKWZvcih2YXIgaD0xO2Y+aDtoKyspby5wdXNoKGkobCkqaCk7by5wdXNoKGkobCkpfWVsc2UgZm9yKG8ucHVzaChpKGwpKTtsKys8czspZm9yKHZhciBoPWYtMTtoPjA7aC0tKW8ucHVzaChpKGwpKmgpO2ZvcihsPTA7b1tsXTxhO2wrKyk7Zm9yKHM9by5sZW5ndGg7b1tzLTFdPmM7cy0tKTtvPW8uc2xpY2UobCxzKX1yZXR1cm4gb30sby50aWNrRm9ybWF0PWZ1bmN0aW9uKG4sdCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHdsO2FyZ3VtZW50cy5sZW5ndGg8Mj90PXdsOiJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD10YS5mb3JtYXQodCkpO3ZhciByLGE9TWF0aC5tYXgoLjEsbi9vLnRpY2tzKCkubGVuZ3RoKSxjPWU/KHI9MWUtMTIsTWF0aC5jZWlsKToocj0tMWUtMTIsTWF0aC5mbG9vcik7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBuL2koYyh1KG4pK3IpKTw9YT90KG4pOiIifX0sby5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEppKG4uY29weSgpLHQsZSxyKX0sSWkobyxuKX1mdW5jdGlvbiBHaShuLHQsZSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gbih1KHQpKX12YXIgdT1LaSh0KSxpPUtpKDEvdCk7cmV0dXJuIHIuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiBpKG4uaW52ZXJ0KHQpKX0sci5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG4uZG9tYWluKChlPXQubWFwKE51bWJlcikpLm1hcCh1KSkscik6ZX0sci50aWNrcz1mdW5jdGlvbihuKXtyZXR1cm4gWGkoZSxuKX0sci50aWNrRm9ybWF0PWZ1bmN0aW9uKG4sdCl7cmV0dXJuICRpKGUsbix0KX0sci5uaWNlPWZ1bmN0aW9uKG4pe3JldHVybiByLmRvbWFpbihaaShlLG4pKX0sci5leHBvbmVudD1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1LaSh0PW8pLGk9S2koMS90KSxuLmRvbWFpbihlLm1hcCh1KSkscik6dH0sci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEdpKG4uY29weSgpLHQsZSl9LElpKHIsbil9ZnVuY3Rpb24gS2kobil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiAwPnQ/LU1hdGgucG93KC10LG4pOk1hdGgucG93KHQsbil9fWZ1bmN0aW9uIFFpKG4sdCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gaVsoKHUuZ2V0KGUpfHwoInJhbmdlIj09PXQudD91LnNldChlLG4ucHVzaChlKSk6MC8wKSktMSklaS5sZW5ndGhdfWZ1bmN0aW9uIHIodCxlKXtyZXR1cm4gdGEucmFuZ2Uobi5sZW5ndGgpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gdCtlKm59KX12YXIgdSxpLG87cmV0dXJuIGUuZG9tYWluPWZ1bmN0aW9uKHIpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBuO249W10sdT1uZXcgYTtmb3IodmFyIGksbz0tMSxjPXIubGVuZ3RoOysrbzxjOyl1LmhhcyhpPXJbb10pfHx1LnNldChpLG4ucHVzaChpKSk7cmV0dXJuIGVbdC50XS5hcHBseShlLHQuYSl9LGUucmFuZ2U9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bixvPTAsdD17dDoicmFuZ2UiLGE6YXJndW1lbnRzfSxlKTppfSxlLnJhbmdlUG9pbnRzPWZ1bmN0aW9uKHUsYSl7YXJndW1lbnRzLmxlbmd0aDwyJiYoYT0wKTt2YXIgYz11WzBdLGw9dVsxXSxzPW4ubGVuZ3RoPDI/KGM9KGMrbCkvMiwwKToobC1jKS8obi5sZW5ndGgtMSthKTtyZXR1cm4gaT1yKGMrcyphLzIscyksbz0wLHQ9e3Q6InJhbmdlUG9pbnRzIixhOmFyZ3VtZW50c30sZX0sZS5yYW5nZVJvdW5kUG9pbnRzPWZ1bmN0aW9uKHUsYSl7YXJndW1lbnRzLmxlbmd0aDwyJiYoYT0wKTt2YXIgYz11WzBdLGw9dVsxXSxzPW4ubGVuZ3RoPDI/KGM9bD1NYXRoLnJvdW5kKChjK2wpLzIpLDApOjB8KGwtYykvKG4ubGVuZ3RoLTErYSk7cmV0dXJuIGk9cihjK01hdGgucm91bmQocyphLzIrKGwtYy0obi5sZW5ndGgtMSthKSpzKS8yKSxzKSxvPTAsdD17dDoicmFuZ2VSb3VuZFBvaW50cyIsYTphcmd1bWVudHN9LGV9LGUucmFuZ2VCYW5kcz1mdW5jdGlvbih1LGEsYyl7YXJndW1lbnRzLmxlbmd0aDwyJiYoYT0wKSxhcmd1bWVudHMubGVuZ3RoPDMmJihjPWEpO3ZhciBsPXVbMV08dVswXSxzPXVbbC0wXSxmPXVbMS1sXSxoPShmLXMpLyhuLmxlbmd0aC1hKzIqYyk7cmV0dXJuIGk9cihzK2gqYyxoKSxsJiZpLnJldmVyc2UoKSxvPWgqKDEtYSksdD17dDoicmFuZ2VCYW5kcyIsYTphcmd1bWVudHN9LGV9LGUucmFuZ2VSb3VuZEJhbmRzPWZ1bmN0aW9uKHUsYSxjKXthcmd1bWVudHMubGVuZ3RoPDImJihhPTApLGFyZ3VtZW50cy5sZW5ndGg8MyYmKGM9YSk7dmFyIGw9dVsxXTx1WzBdLHM9dVtsLTBdLGY9dVsxLWxdLGg9TWF0aC5mbG9vcigoZi1zKS8obi5sZW5ndGgtYSsyKmMpKTtyZXR1cm4gaT1yKHMrTWF0aC5yb3VuZCgoZi1zLShuLmxlbmd0aC1hKSpoKS8yKSxoKSxsJiZpLnJldmVyc2UoKSxvPU1hdGgucm91bmQoaCooMS1hKSksdD17dDoicmFuZ2VSb3VuZEJhbmRzIixhOmFyZ3VtZW50c30sZX0sZS5yYW5nZUJhbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gb30sZS5yYW5nZUV4dGVudD1mdW5jdGlvbigpe3JldHVybiBQaSh0LmFbMF0pfSxlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gUWkobix0KX0sZS5kb21haW4obil9ZnVuY3Rpb24gbm8ocix1KXtmdW5jdGlvbiBpKCl7dmFyIG49MCx0PXUubGVuZ3RoO2ZvcihhPVtdOysrbjx0OylhW24tMV09dGEucXVhbnRpbGUocixuL3QpO3JldHVybiBvfWZ1bmN0aW9uIG8obil7cmV0dXJuIGlzTmFOKG49K24pP3ZvaWQgMDp1W3RhLmJpc2VjdChhLG4pXX12YXIgYTtyZXR1cm4gby5kb21haW49ZnVuY3Rpb24odSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dS5tYXAodCkuZmlsdGVyKGUpLnNvcnQobiksaSgpKTpyfSxvLnJhbmdlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PW4saSgpKTp1fSxvLnF1YW50aWxlcz1mdW5jdGlvbigpe3JldHVybiBhfSxvLmludmVydEV4dGVudD1mdW5jdGlvbihuKXtyZXR1cm4gbj11LmluZGV4T2YobiksMD5uP1swLzAsMC8wXTpbbj4wP2Fbbi0xXTpyWzBdLG48YS5sZW5ndGg/YVtuXTpyW3IubGVuZ3RoLTFdXX0sby5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIG5vKHIsdSl9LGkoKX1mdW5jdGlvbiB0byhuLHQsZSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gZVtNYXRoLm1heCgwLE1hdGgubWluKG8sTWF0aC5mbG9vcihpKih0LW4pKSkpXX1mdW5jdGlvbiB1KCl7cmV0dXJuIGk9ZS5sZW5ndGgvKHQtbiksbz1lLmxlbmd0aC0xLHJ9dmFyIGksbztyZXR1cm4gci5kb21haW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K2VbMF0sdD0rZVtlLmxlbmd0aC0xXSx1KCkpOltuLHRdfSxyLnJhbmdlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW4sdSgpKTplfSxyLmludmVydEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gdD1lLmluZGV4T2YodCksdD0wPnQ/MC8wOnQvaStuLFt0LHQrMS9pXX0sci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHRvKG4sdCxlKX0sdSgpfWZ1bmN0aW9uIGVvKG4sdCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gZT49ZT90W3RhLmJpc2VjdChuLGUpXTp2b2lkIDB9cmV0dXJuIGUuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsZSk6bn0sZS5yYW5nZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1uLGUpOnR9LGUuaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKGUpe3JldHVybiBlPXQuaW5kZXhPZihlKSxbbltlLTFdLG5bZV1dfSxlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gZW8obix0KX0sZX1mdW5jdGlvbiBybyhuKXtmdW5jdGlvbiB0KG4pe3JldHVybitufXJldHVybiB0LmludmVydD10LHQuZG9tYWluPXQucmFuZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ZS5tYXAodCksdCk6bn0sdC50aWNrcz1mdW5jdGlvbih0KXtyZXR1cm4gWGkobix0KX0sdC50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuICRpKG4sdCxlKX0sdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHJvKG4pfSx0fWZ1bmN0aW9uIHVvKCl7cmV0dXJuIDB9ZnVuY3Rpb24gaW8obil7cmV0dXJuIG4uaW5uZXJSYWRpdXN9ZnVuY3Rpb24gb28obil7cmV0dXJuIG4ub3V0ZXJSYWRpdXN9ZnVuY3Rpb24gYW8obil7cmV0dXJuIG4uc3RhcnRBbmdsZX1mdW5jdGlvbiBjbyhuKXtyZXR1cm4gbi5lbmRBbmdsZX1mdW5jdGlvbiBsbyhuKXtyZXR1cm4gbiYmbi5wYWRBbmdsZX1mdW5jdGlvbiBzbyhuLHQsZSxyKXtyZXR1cm4obi1lKSp0LSh0LXIpKm4+MD8wOjF9ZnVuY3Rpb24gZm8obix0LGUscix1KXt2YXIgaT1uWzBdLXRbMF0sbz1uWzFdLXRbMV0sYT0odT9yOi1yKS9NYXRoLnNxcnQoaSppK28qbyksYz1hKm8sbD0tYSppLHM9blswXStjLGY9blsxXStsLGg9dFswXStjLGc9dFsxXStsLHA9KHMraCkvMix2PShmK2cpLzIsZD1oLXMsbT1nLWYseT1kKmQrbSptLE09ZS1yLHg9cypnLWgqZixiPSgwPm0/LTE6MSkqTWF0aC5zcXJ0KE0qTSp5LXgqeCksXz0oeCptLWQqYikveSx3PSgteCpkLW0qYikveSxTPSh4Km0rZCpiKS95LGs9KC14KmQrbSpiKS95LEU9Xy1wLEE9dy12LE49Uy1wLEM9ay12O3JldHVybiBFKkUrQSpBPk4qTitDKkMmJihfPVMsdz1rKSxbW18tYyx3LWxdLFtfKmUvTSx3KmUvTV1dfWZ1bmN0aW9uIGhvKG4pe2Z1bmN0aW9uIHQodCl7ZnVuY3Rpb24gbygpe2wucHVzaCgiTSIsaShuKHMpLGEpKX1mb3IodmFyIGMsbD1bXSxzPVtdLGY9LTEsaD10Lmxlbmd0aCxnPWt0KGUpLHA9a3Qocik7KytmPGg7KXUuY2FsbCh0aGlzLGM9dFtmXSxmKT9zLnB1c2goWytnLmNhbGwodGhpcyxjLGYpLCtwLmNhbGwodGhpcyxjLGYpXSk6cy5sZW5ndGgmJihvKCkscz1bXSk7cmV0dXJuIHMubGVuZ3RoJiZvKCksbC5sZW5ndGg/bC5qb2luKCIiKTpudWxsfXZhciBlPUFyLHI9TnIsdT1OZSxpPWdvLG89aS5rZXksYT0uNztyZXR1cm4gdC54PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW4sdCk6ZX0sdC55PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW4sdCk6cn0sdC5kZWZpbmVkPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PW4sdCk6dX0sdC5pbnRlcnBvbGF0ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2Ygbj9pPW46KGk9emwuZ2V0KG4pfHxnbykua2V5LHQpOm99LHQudGVuc2lvbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1uLHQpOmF9LHR9ZnVuY3Rpb24gZ28obil7cmV0dXJuIG4uam9pbigiTCIpfWZ1bmN0aW9uIHBvKG4pe3JldHVybiBnbyhuKSsiWiJ9ZnVuY3Rpb24gdm8obil7Zm9yKHZhciB0PTAsZT1uLmxlbmd0aCxyPW5bMF0sdT1bclswXSwiLCIsclsxXV07Kyt0PGU7KXUucHVzaCgiSCIsKHJbMF0rKHI9blt0XSlbMF0pLzIsIlYiLHJbMV0pO3JldHVybiBlPjEmJnUucHVzaCgiSCIsclswXSksdS5qb2luKCIiKX1mdW5jdGlvbiBtbyhuKXtmb3IodmFyIHQ9MCxlPW4ubGVuZ3RoLHI9blswXSx1PVtyWzBdLCIsIixyWzFdXTsrK3Q8ZTspdS5wdXNoKCJWIiwocj1uW3RdKVsxXSwiSCIsclswXSk7cmV0dXJuIHUuam9pbigiIil9ZnVuY3Rpb24geW8obil7Zm9yKHZhciB0PTAsZT1uLmxlbmd0aCxyPW5bMF0sdT1bclswXSwiLCIsclsxXV07Kyt0PGU7KXUucHVzaCgiSCIsKHI9blt0XSlbMF0sIlYiLHJbMV0pO3JldHVybiB1LmpvaW4oIiIpfWZ1bmN0aW9uIE1vKG4sdCl7cmV0dXJuIG4ubGVuZ3RoPDQ/Z28obik6blsxXStfbyhuLnNsaWNlKDEsLTEpLHdvKG4sdCkpfWZ1bmN0aW9uIHhvKG4sdCl7cmV0dXJuIG4ubGVuZ3RoPDM/Z28obik6blswXStfbygobi5wdXNoKG5bMF0pLG4pLHdvKFtuW24ubGVuZ3RoLTJdXS5jb25jYXQobixbblsxXV0pLHQpKX1mdW5jdGlvbiBibyhuLHQpe3JldHVybiBuLmxlbmd0aDwzP2dvKG4pOm5bMF0rX28obix3byhuLHQpKX1mdW5jdGlvbiBfbyhuLHQpe2lmKHQubGVuZ3RoPDF8fG4ubGVuZ3RoIT10Lmxlbmd0aCYmbi5sZW5ndGghPXQubGVuZ3RoKzIpcmV0dXJuIGdvKG4pO3ZhciBlPW4ubGVuZ3RoIT10Lmxlbmd0aCxyPSIiLHU9blswXSxpPW5bMV0sbz10WzBdLGE9byxjPTE7aWYoZSYmKHIrPSJRIisoaVswXS0yKm9bMF0vMykrIiwiKyhpWzFdLTIqb1sxXS8zKSsiLCIraVswXSsiLCIraVsxXSx1PW5bMV0sYz0yKSx0Lmxlbmd0aD4xKXthPXRbMV0saT1uW2NdLGMrKyxyKz0iQyIrKHVbMF0rb1swXSkrIiwiKyh1WzFdK29bMV0pKyIsIisoaVswXS1hWzBdKSsiLCIrKGlbMV0tYVsxXSkrIiwiK2lbMF0rIiwiK2lbMV07Zm9yKHZhciBsPTI7bDx0Lmxlbmd0aDtsKyssYysrKWk9bltjXSxhPXRbbF0scis9IlMiKyhpWzBdLWFbMF0pKyIsIisoaVsxXS1hWzFdKSsiLCIraVswXSsiLCIraVsxXX1pZihlKXt2YXIgcz1uW2NdO3IrPSJRIisoaVswXSsyKmFbMF0vMykrIiwiKyhpWzFdKzIqYVsxXS8zKSsiLCIrc1swXSsiLCIrc1sxXX1yZXR1cm4gcn1mdW5jdGlvbiB3byhuLHQpe2Zvcih2YXIgZSxyPVtdLHU9KDEtdCkvMixpPW5bMF0sbz1uWzFdLGE9MSxjPW4ubGVuZ3RoOysrYTxjOyllPWksaT1vLG89blthXSxyLnB1c2goW3UqKG9bMF0tZVswXSksdSoob1sxXS1lWzFdKV0pO3JldHVybiByfWZ1bmN0aW9uIFNvKG4pe2lmKG4ubGVuZ3RoPDMpcmV0dXJuIGdvKG4pO3ZhciB0PTEsZT1uLmxlbmd0aCxyPW5bMF0sdT1yWzBdLGk9clsxXSxvPVt1LHUsdSwocj1uWzFdKVswXV0sYT1baSxpLGksclsxXV0sYz1bdSwiLCIsaSwiTCIsTm8oVGwsbyksIiwiLE5vKFRsLGEpXTtmb3Iobi5wdXNoKG5bZS0xXSk7Kyt0PD1lOylyPW5bdF0sby5zaGlmdCgpLG8ucHVzaChyWzBdKSxhLnNoaWZ0KCksYS5wdXNoKHJbMV0pLENvKGMsbyxhKTtyZXR1cm4gbi5wb3AoKSxjLnB1c2goIkwiLHIpLGMuam9pbigiIil9ZnVuY3Rpb24ga28obil7aWYobi5sZW5ndGg8NClyZXR1cm4gZ28obik7Zm9yKHZhciB0LGU9W10scj0tMSx1PW4ubGVuZ3RoLGk9WzBdLG89WzBdOysrcjwzOyl0PW5bcl0saS5wdXNoKHRbMF0pLG8ucHVzaCh0WzFdKTtmb3IoZS5wdXNoKE5vKFRsLGkpKyIsIitObyhUbCxvKSksLS1yOysrcjx1Oyl0PW5bcl0saS5zaGlmdCgpLGkucHVzaCh0WzBdKSxvLnNoaWZ0KCksby5wdXNoKHRbMV0pLENvKGUsaSxvKTtyZXR1cm4gZS5qb2luKCIiKX1mdW5jdGlvbiBFbyhuKXtmb3IodmFyIHQsZSxyPS0xLHU9bi5sZW5ndGgsaT11KzQsbz1bXSxhPVtdOysrcjw0OyllPW5bciV1XSxvLnB1c2goZVswXSksYS5wdXNoKGVbMV0pO2Zvcih0PVtObyhUbCxvKSwiLCIsTm8oVGwsYSldLC0tcjsrK3I8aTspZT1uW3IldV0sby5zaGlmdCgpLG8ucHVzaChlWzBdKSxhLnNoaWZ0KCksYS5wdXNoKGVbMV0pLENvKHQsbyxhKTtyZXR1cm4gdC5qb2luKCIiKX1mdW5jdGlvbiBBbyhuLHQpe3ZhciBlPW4ubGVuZ3RoLTE7aWYoZSlmb3IodmFyIHIsdSxpPW5bMF1bMF0sbz1uWzBdWzFdLGE9bltlXVswXS1pLGM9bltlXVsxXS1vLGw9LTE7KytsPD1lOylyPW5bbF0sdT1sL2UsclswXT10KnJbMF0rKDEtdCkqKGkrdSphKSxyWzFdPXQqclsxXSsoMS10KSoobyt1KmMpO3JldHVybiBTbyhuKX1mdW5jdGlvbiBObyhuLHQpe3JldHVybiBuWzBdKnRbMF0rblsxXSp0WzFdK25bMl0qdFsyXStuWzNdKnRbM119ZnVuY3Rpb24gQ28obix0LGUpe24ucHVzaCgiQyIsTm8ocWwsdCksIiwiLE5vKHFsLGUpLCIsIixObyhMbCx0KSwiLCIsTm8oTGwsZSksIiwiLE5vKFRsLHQpLCIsIixObyhUbCxlKSl9ZnVuY3Rpb24gem8obix0KXtyZXR1cm4odFsxXS1uWzFdKS8odFswXS1uWzBdKX1mdW5jdGlvbiBxbyhuKXtmb3IodmFyIHQ9MCxlPW4ubGVuZ3RoLTEscj1bXSx1PW5bMF0saT1uWzFdLG89clswXT16byh1LGkpOysrdDxlOylyW3RdPShvKyhvPXpvKHU9aSxpPW5bdCsxXSkpKS8yO3JldHVybiByW3RdPW8scn1mdW5jdGlvbiBMbyhuKXtmb3IodmFyIHQsZSxyLHUsaT1bXSxvPXFvKG4pLGE9LTEsYz1uLmxlbmd0aC0xOysrYTxjOyl0PXpvKG5bYV0sblthKzFdKSx2YSh0KTxUYT9vW2FdPW9bYSsxXT0wOihlPW9bYV0vdCxyPW9bYSsxXS90LHU9ZSplK3Iqcix1PjkmJih1PTMqdC9NYXRoLnNxcnQodSksb1thXT11KmUsb1thKzFdPXUqcikpO2ZvcihhPS0xOysrYTw9YzspdT0obltNYXRoLm1pbihjLGErMSldWzBdLW5bTWF0aC5tYXgoMCxhLTEpXVswXSkvKDYqKDErb1thXSpvW2FdKSksaS5wdXNoKFt1fHwwLG9bYV0qdXx8MF0pO3JldHVybiBpfWZ1bmN0aW9uIFRvKG4pe3JldHVybiBuLmxlbmd0aDwzP2dvKG4pOm5bMF0rX28obixMbyhuKSl9ZnVuY3Rpb24gUm8obil7Zm9yKHZhciB0LGUscix1PS0xLGk9bi5sZW5ndGg7Kyt1PGk7KXQ9blt1XSxlPXRbMF0scj10WzFdLWphLHRbMF09ZSpNYXRoLmNvcyhyKSx0WzFdPWUqTWF0aC5zaW4ocik7cmV0dXJuIG59ZnVuY3Rpb24gRG8obil7ZnVuY3Rpb24gdCh0KXtmdW5jdGlvbiBjKCl7di5wdXNoKCJNIixhKG4obSksZikscyxsKG4oZC5yZXZlcnNlKCkpLGYpLCJaIil9Zm9yKHZhciBoLGcscCx2PVtdLGQ9W10sbT1bXSx5PS0xLE09dC5sZW5ndGgseD1rdChlKSxiPWt0KHUpLF89ZT09PXI/ZnVuY3Rpb24oKXtyZXR1cm4gZ306a3Qociksdz11PT09aT9mdW5jdGlvbigpe3JldHVybiBwfTprdChpKTsrK3k8TTspby5jYWxsKHRoaXMsaD10W3ldLHkpPyhkLnB1c2goW2c9K3guY2FsbCh0aGlzLGgseSkscD0rYi5jYWxsKHRoaXMsaCx5KV0pLG0ucHVzaChbK18uY2FsbCh0aGlzLGgseSksK3cuY2FsbCh0aGlzLGgseSldKSk6ZC5sZW5ndGgmJihjKCksZD1bXSxtPVtdKTtyZXR1cm4gZC5sZW5ndGgmJmMoKSx2Lmxlbmd0aD92LmpvaW4oIiIpOm51bGx9dmFyIGU9QXIscj1Bcix1PTAsaT1OcixvPU5lLGE9Z28sYz1hLmtleSxsPWEscz0iTCIsZj0uNztyZXR1cm4gdC54PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXI9bix0KTpyfSx0LngwPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW4sdCk6ZX0sdC54MT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1uLHQpOnJ9LHQueT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1pPW4sdCk6aX0sdC55MD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1uLHQpOnV9LHQueTE9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bix0KTppfSx0LmRlZmluZWQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89bix0KTpvfSx0LmludGVycG9sYXRlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPSJmdW5jdGlvbiI9PXR5cGVvZiBuP2E9bjooYT16bC5nZXQobil8fGdvKS5rZXksbD1hLnJldmVyc2V8fGEscz1hLmNsb3NlZD8iTSI6IkwiLHQpOmMKfSx0LnRlbnNpb249ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9bix0KTpmfSx0fWZ1bmN0aW9uIFBvKG4pe3JldHVybiBuLnJhZGl1c31mdW5jdGlvbiBVbyhuKXtyZXR1cm5bbi54LG4ueV19ZnVuY3Rpb24gam8obil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyksZT10WzBdLHI9dFsxXS1qYTtyZXR1cm5bZSpNYXRoLmNvcyhyKSxlKk1hdGguc2luKHIpXX19ZnVuY3Rpb24gRm8oKXtyZXR1cm4gNjR9ZnVuY3Rpb24gSG8oKXtyZXR1cm4iY2lyY2xlIn1mdW5jdGlvbiBPbyhuKXt2YXIgdD1NYXRoLnNxcnQobi9EYSk7cmV0dXJuIk0wLCIrdCsiQSIrdCsiLCIrdCsiIDAgMSwxIDAsIistdCsiQSIrdCsiLCIrdCsiIDAgMSwxIDAsIit0KyJaIn1mdW5jdGlvbiBZbyhuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdCxlOyh0PXRoaXNbbl0pJiYoZT10W3QuYWN0aXZlXSkmJigtLXQuY291bnQ/KGRlbGV0ZSB0W3QuYWN0aXZlXSx0LmFjdGl2ZSs9LjUpOmRlbGV0ZSB0aGlzW25dLGUuZXZlbnQmJmUuZXZlbnQuaW50ZXJydXB0LmNhbGwodGhpcyx0aGlzLl9fZGF0YV9fLGUuaW5kZXgpKX19ZnVuY3Rpb24gSW8obix0LGUpe3JldHVybiB4YShuLEhsKSxuLm5hbWVzcGFjZT10LG4uaWQ9ZSxufWZ1bmN0aW9uIFpvKG4sdCxlLHIpe3ZhciB1PW4uaWQsaT1uLm5hbWVzcGFjZTtyZXR1cm4gSChuLCJmdW5jdGlvbiI9PXR5cGVvZiBlP2Z1bmN0aW9uKG4sbyxhKXtuW2ldW3VdLnR3ZWVuLnNldCh0LHIoZS5jYWxsKG4sbi5fX2RhdGFfXyxvLGEpKSl9OihlPXIoZSksZnVuY3Rpb24obil7bltpXVt1XS50d2Vlbi5zZXQodCxlKX0pKX1mdW5jdGlvbiBWbyhuKXtyZXR1cm4gbnVsbD09biYmKG49IiIpLGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD1ufX1mdW5jdGlvbiBYbyhuKXtyZXR1cm4gbnVsbD09bj8iX190cmFuc2l0aW9uX18iOiJfX3RyYW5zaXRpb25fIituKyJfXyJ9ZnVuY3Rpb24gJG8obix0LGUscix1KXt2YXIgaT1uW2VdfHwobltlXT17YWN0aXZlOjAsY291bnQ6MH0pLG89aVtyXTtpZighbyl7dmFyIGM9dS50aW1lO289aVtyXT17dHdlZW46bmV3IGEsdGltZTpjLGRlbGF5OnUuZGVsYXksZHVyYXRpb246dS5kdXJhdGlvbixlYXNlOnUuZWFzZSxpbmRleDp0fSx1PW51bGwsKytpLmNvdW50LHRhLnRpbWVyKGZ1bmN0aW9uKHUpe2Z1bmN0aW9uIGEoZSl7aWYoaS5hY3RpdmU+cilyZXR1cm4gcygpO3ZhciB1PWlbaS5hY3RpdmVdO3UmJigtLWkuY291bnQsZGVsZXRlIGlbaS5hY3RpdmVdLHUuZXZlbnQmJnUuZXZlbnQuaW50ZXJydXB0LmNhbGwobixuLl9fZGF0YV9fLHUuaW5kZXgpKSxpLmFjdGl2ZT1yLG8uZXZlbnQmJm8uZXZlbnQuc3RhcnQuY2FsbChuLG4uX19kYXRhX18sdCksby50d2Vlbi5mb3JFYWNoKGZ1bmN0aW9uKGUscil7KHI9ci5jYWxsKG4sbi5fX2RhdGFfXyx0KSkmJnYucHVzaChyKX0pLGg9by5lYXNlLGY9by5kdXJhdGlvbix0YS50aW1lcihmdW5jdGlvbigpe3JldHVybiBwLmM9bChlfHwxKT9OZTpsLDF9LDAsYyl9ZnVuY3Rpb24gbChlKXtpZihpLmFjdGl2ZSE9PXIpcmV0dXJuIDE7Zm9yKHZhciB1PWUvZixhPWgodSksYz12Lmxlbmd0aDtjPjA7KXZbLS1jXS5jYWxsKG4sYSk7cmV0dXJuIHU+PTE/KG8uZXZlbnQmJm8uZXZlbnQuZW5kLmNhbGwobixuLl9fZGF0YV9fLHQpLHMoKSk6dm9pZCAwfWZ1bmN0aW9uIHMoKXtyZXR1cm4tLWkuY291bnQ/ZGVsZXRlIGlbcl06ZGVsZXRlIG5bZV0sMX12YXIgZixoLGc9by5kZWxheSxwPW9jLHY9W107cmV0dXJuIHAudD1nK2MsdT49Zz9hKHUtZyk6KHAuYz1hLHZvaWQgMCl9LDAsYyl9fWZ1bmN0aW9uIEJvKG4sdCxlKXtuLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24obil7dmFyIHI9dChuKTtyZXR1cm4idHJhbnNsYXRlKCIrKGlzRmluaXRlKHIpP3I6ZShuKSkrIiwwKSJ9KX1mdW5jdGlvbiBXbyhuLHQsZSl7bi5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKG4pe3ZhciByPXQobik7cmV0dXJuInRyYW5zbGF0ZSgwLCIrKGlzRmluaXRlKHIpP3I6ZShuKSkrIikifSl9ZnVuY3Rpb24gSm8obil7cmV0dXJuIG4udG9JU09TdHJpbmcoKX1mdW5jdGlvbiBHbyhuLHQsZSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gbih0KX1mdW5jdGlvbiB1KG4sZSl7dmFyIHI9blsxXS1uWzBdLHU9ci9lLGk9dGEuYmlzZWN0KFdsLHUpO3JldHVybiBpPT1XbC5sZW5ndGg/W3QueWVhcixWaShuLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi8zMTUzNmU2fSksZSlbMl1dOmk/dFt1L1dsW2ktMV08V2xbaV0vdT9pLTE6aV06W0tsLFZpKG4sZSlbMl1dfXJldHVybiByLmludmVydD1mdW5jdGlvbih0KXtyZXR1cm4gS28obi5pbnZlcnQodCkpfSxyLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obi5kb21haW4odCkscik6bi5kb21haW4oKS5tYXAoS28pfSxyLm5pY2U9ZnVuY3Rpb24obix0KXtmdW5jdGlvbiBlKGUpe3JldHVybiFpc05hTihlKSYmIW4ucmFuZ2UoZSxLbygrZSsxKSx0KS5sZW5ndGh9dmFyIGk9ci5kb21haW4oKSxvPVBpKGkpLGE9bnVsbD09bj91KG8sMTApOiJudW1iZXIiPT10eXBlb2YgbiYmdShvLG4pO3JldHVybiBhJiYobj1hWzBdLHQ9YVsxXSksci5kb21haW4oRmkoaSx0PjE/e2Zsb29yOmZ1bmN0aW9uKHQpe2Zvcig7ZSh0PW4uZmxvb3IodCkpOyl0PUtvKHQtMSk7cmV0dXJuIHR9LGNlaWw6ZnVuY3Rpb24odCl7Zm9yKDtlKHQ9bi5jZWlsKHQpKTspdD1LbygrdCsxKTtyZXR1cm4gdH19Om4pKX0sci50aWNrcz1mdW5jdGlvbihuLHQpe3ZhciBlPVBpKHIuZG9tYWluKCkpLGk9bnVsbD09bj91KGUsMTApOiJudW1iZXIiPT10eXBlb2Ygbj91KGUsbik6IW4ucmFuZ2UmJlt7cmFuZ2U6bn0sdF07cmV0dXJuIGkmJihuPWlbMF0sdD1pWzFdKSxuLnJhbmdlKGVbMF0sS28oK2VbMV0rMSksMT50PzE6dCl9LHIudGlja0Zvcm1hdD1mdW5jdGlvbigpe3JldHVybiBlfSxyLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gR28obi5jb3B5KCksdCxlKX0sSWkocixuKX1mdW5jdGlvbiBLbyhuKXtyZXR1cm4gbmV3IERhdGUobil9ZnVuY3Rpb24gUW8obil7cmV0dXJuIEpTT04ucGFyc2Uobi5yZXNwb25zZVRleHQpfWZ1bmN0aW9uIG5hKG4pe3ZhciB0PXVhLmNyZWF0ZVJhbmdlKCk7cmV0dXJuIHQuc2VsZWN0Tm9kZSh1YS5ib2R5KSx0LmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChuLnJlc3BvbnNlVGV4dCl9dmFyIHRhPXt2ZXJzaW9uOiIzLjUuMiJ9O0RhdGUubm93fHwoRGF0ZS5ub3c9ZnVuY3Rpb24oKXtyZXR1cm4rbmV3IERhdGV9KTt2YXIgZWE9W10uc2xpY2UscmE9ZnVuY3Rpb24obil7cmV0dXJuIGVhLmNhbGwobil9LHVhPWRvY3VtZW50LGlhPXVhLmRvY3VtZW50RWxlbWVudCxvYT13aW5kb3c7dHJ5e3JhKGlhLmNoaWxkTm9kZXMpWzBdLm5vZGVUeXBlfWNhdGNoKGFhKXtyYT1mdW5jdGlvbihuKXtmb3IodmFyIHQ9bi5sZW5ndGgsZT1uZXcgQXJyYXkodCk7dC0tOyllW3RdPW5bdF07cmV0dXJuIGV9fXRyeXt1YS5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZS5zZXRQcm9wZXJ0eSgib3BhY2l0eSIsMCwiIil9Y2F0Y2goY2Epe3ZhciBsYT1vYS5FbGVtZW50LnByb3RvdHlwZSxzYT1sYS5zZXRBdHRyaWJ1dGUsZmE9bGEuc2V0QXR0cmlidXRlTlMsaGE9b2EuQ1NTU3R5bGVEZWNsYXJhdGlvbi5wcm90b3R5cGUsZ2E9aGEuc2V0UHJvcGVydHk7bGEuc2V0QXR0cmlidXRlPWZ1bmN0aW9uKG4sdCl7c2EuY2FsbCh0aGlzLG4sdCsiIil9LGxhLnNldEF0dHJpYnV0ZU5TPWZ1bmN0aW9uKG4sdCxlKXtmYS5jYWxsKHRoaXMsbix0LGUrIiIpfSxoYS5zZXRQcm9wZXJ0eT1mdW5jdGlvbihuLHQsZSl7Z2EuY2FsbCh0aGlzLG4sdCsiIixlKX19dGEuYXNjZW5kaW5nPW4sdGEuZGVzY2VuZGluZz1mdW5jdGlvbihuLHQpe3JldHVybiBuPnQ/LTE6dD5uPzE6dD49bj8wOjAvMH0sdGEubWluPWZ1bmN0aW9uKG4sdCl7dmFyIGUscix1PS0xLGk9bi5sZW5ndGg7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpe2Zvcig7Kyt1PGk7KWlmKG51bGwhPShyPW5bdV0pJiZyPj1yKXtlPXI7YnJlYWt9Zm9yKDsrK3U8aTspbnVsbCE9KHI9blt1XSkmJmU+ciYmKGU9cil9ZWxzZXtmb3IoOysrdTxpOylpZihudWxsIT0ocj10LmNhbGwobixuW3VdLHUpKSYmcj49cil7ZT1yO2JyZWFrfWZvcig7Kyt1PGk7KW51bGwhPShyPXQuY2FsbChuLG5bdV0sdSkpJiZlPnImJihlPXIpfXJldHVybiBlfSx0YS5tYXg9ZnVuY3Rpb24obix0KXt2YXIgZSxyLHU9LTEsaT1uLmxlbmd0aDtpZigxPT09YXJndW1lbnRzLmxlbmd0aCl7Zm9yKDsrK3U8aTspaWYobnVsbCE9KHI9blt1XSkmJnI+PXIpe2U9cjticmVha31mb3IoOysrdTxpOyludWxsIT0ocj1uW3VdKSYmcj5lJiYoZT1yKX1lbHNle2Zvcig7Kyt1PGk7KWlmKG51bGwhPShyPXQuY2FsbChuLG5bdV0sdSkpJiZyPj1yKXtlPXI7YnJlYWt9Zm9yKDsrK3U8aTspbnVsbCE9KHI9dC5jYWxsKG4sblt1XSx1KSkmJnI+ZSYmKGU9cil9cmV0dXJuIGV9LHRhLmV4dGVudD1mdW5jdGlvbihuLHQpe3ZhciBlLHIsdSxpPS0xLG89bi5sZW5ndGg7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpe2Zvcig7KytpPG87KWlmKG51bGwhPShyPW5baV0pJiZyPj1yKXtlPXU9cjticmVha31mb3IoOysraTxvOyludWxsIT0ocj1uW2ldKSYmKGU+ciYmKGU9cikscj51JiYodT1yKSl9ZWxzZXtmb3IoOysraTxvOylpZihudWxsIT0ocj10LmNhbGwobixuW2ldLGkpKSYmcj49cil7ZT11PXI7YnJlYWt9Zm9yKDsrK2k8bzspbnVsbCE9KHI9dC5jYWxsKG4sbltpXSxpKSkmJihlPnImJihlPXIpLHI+dSYmKHU9cikpfXJldHVybltlLHVdfSx0YS5zdW09ZnVuY3Rpb24obix0KXt2YXIgcix1PTAsaT1uLmxlbmd0aCxvPS0xO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKWZvcig7KytvPGk7KWUocj0rbltvXSkmJih1Kz1yKTtlbHNlIGZvcig7KytvPGk7KWUocj0rdC5jYWxsKG4sbltvXSxvKSkmJih1Kz1yKTtyZXR1cm4gdX0sdGEubWVhbj1mdW5jdGlvbihuLHIpe3ZhciB1LGk9MCxvPW4ubGVuZ3RoLGE9LTEsYz1vO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKWZvcig7KythPG87KWUodT10KG5bYV0pKT9pKz11Oi0tYztlbHNlIGZvcig7KythPG87KWUodT10KHIuY2FsbChuLG5bYV0sYSkpKT9pKz11Oi0tYztyZXR1cm4gYz9pL2M6dm9pZCAwfSx0YS5xdWFudGlsZT1mdW5jdGlvbihuLHQpe3ZhciBlPShuLmxlbmd0aC0xKSp0KzEscj1NYXRoLmZsb29yKGUpLHU9K25bci0xXSxpPWUtcjtyZXR1cm4gaT91K2kqKG5bcl0tdSk6dX0sdGEubWVkaWFuPWZ1bmN0aW9uKHIsdSl7dmFyIGksbz1bXSxhPXIubGVuZ3RoLGM9LTE7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKDsrK2M8YTspZShpPXQocltjXSkpJiZvLnB1c2goaSk7ZWxzZSBmb3IoOysrYzxhOyllKGk9dCh1LmNhbGwocixyW2NdLGMpKSkmJm8ucHVzaChpKTtyZXR1cm4gby5sZW5ndGg/dGEucXVhbnRpbGUoby5zb3J0KG4pLC41KTp2b2lkIDB9LHRhLnZhcmlhbmNlPWZ1bmN0aW9uKG4scil7dmFyIHUsaSxvPW4ubGVuZ3RoLGE9MCxjPTAsbD0tMSxzPTA7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKDsrK2w8bzspZSh1PXQobltsXSkpJiYoaT11LWEsYSs9aS8rK3MsYys9aSoodS1hKSk7ZWxzZSBmb3IoOysrbDxvOyllKHU9dChyLmNhbGwobixuW2xdLGwpKSkmJihpPXUtYSxhKz1pLysrcyxjKz1pKih1LWEpKTtyZXR1cm4gcz4xP2MvKHMtMSk6dm9pZCAwfSx0YS5kZXZpYXRpb249ZnVuY3Rpb24oKXt2YXIgbj10YS52YXJpYW5jZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG4/TWF0aC5zcXJ0KG4pOm59O3ZhciBwYT1yKG4pO3RhLmJpc2VjdExlZnQ9cGEubGVmdCx0YS5iaXNlY3Q9dGEuYmlzZWN0UmlnaHQ9cGEucmlnaHQsdGEuYmlzZWN0b3I9ZnVuY3Rpb24odCl7cmV0dXJuIHIoMT09PXQubGVuZ3RoP2Z1bmN0aW9uKGUscil7cmV0dXJuIG4odChlKSxyKX06dCl9LHRhLnNodWZmbGU9ZnVuY3Rpb24obix0LGUpeyhpPWFyZ3VtZW50cy5sZW5ndGgpPDMmJihlPW4ubGVuZ3RoLDI+aSYmKHQ9MCkpO2Zvcih2YXIgcix1LGk9ZS10O2k7KXU9MHxNYXRoLnJhbmRvbSgpKmktLSxyPW5baSt0XSxuW2krdF09blt1K3RdLG5bdSt0XT1yO3JldHVybiBufSx0YS5wZXJtdXRlPWZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlPXQubGVuZ3RoLHI9bmV3IEFycmF5KGUpO2UtLTspcltlXT1uW3RbZV1dO3JldHVybiByfSx0YS5wYWlycz1mdW5jdGlvbihuKXtmb3IodmFyIHQsZT0wLHI9bi5sZW5ndGgtMSx1PW5bMF0saT1uZXcgQXJyYXkoMD5yPzA6cik7cj5lOylpW2VdPVt0PXUsdT1uWysrZV1dO3JldHVybiBpfSx0YS56aXA9ZnVuY3Rpb24oKXtpZighKHI9YXJndW1lbnRzLmxlbmd0aCkpcmV0dXJuW107Zm9yKHZhciBuPS0xLHQ9dGEubWluKGFyZ3VtZW50cyx1KSxlPW5ldyBBcnJheSh0KTsrK248dDspZm9yKHZhciByLGk9LTEsbz1lW25dPW5ldyBBcnJheShyKTsrK2k8cjspb1tpXT1hcmd1bWVudHNbaV1bbl07cmV0dXJuIGV9LHRhLnRyYW5zcG9zZT1mdW5jdGlvbihuKXtyZXR1cm4gdGEuemlwLmFwcGx5KHRhLG4pfSx0YS5rZXlzPWZ1bmN0aW9uKG4pe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiBuKXQucHVzaChlKTtyZXR1cm4gdH0sdGEudmFsdWVzPWZ1bmN0aW9uKG4pe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiBuKXQucHVzaChuW2VdKTtyZXR1cm4gdH0sdGEuZW50cmllcz1mdW5jdGlvbihuKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gbil0LnB1c2goe2tleTplLHZhbHVlOm5bZV19KTtyZXR1cm4gdH0sdGEubWVyZ2U9ZnVuY3Rpb24obil7Zm9yKHZhciB0LGUscix1PW4ubGVuZ3RoLGk9LTEsbz0wOysraTx1OylvKz1uW2ldLmxlbmd0aDtmb3IoZT1uZXcgQXJyYXkobyk7LS11Pj0wOylmb3Iocj1uW3VdLHQ9ci5sZW5ndGg7LS10Pj0wOyllWy0tb109clt0XTtyZXR1cm4gZX07dmFyIHZhPU1hdGguYWJzO3RhLnJhbmdlPWZ1bmN0aW9uKG4sdCxlKXtpZihhcmd1bWVudHMubGVuZ3RoPDMmJihlPTEsYXJndW1lbnRzLmxlbmd0aDwyJiYodD1uLG49MCkpLDEvMD09PSh0LW4pL2UpdGhyb3cgbmV3IEVycm9yKCJpbmZpbml0ZSByYW5nZSIpO3ZhciByLHU9W10sbz1pKHZhKGUpKSxhPS0xO2lmKG4qPW8sdCo9byxlKj1vLDA+ZSlmb3IoOyhyPW4rZSorK2EpPnQ7KXUucHVzaChyL28pO2Vsc2UgZm9yKDsocj1uK2UqKythKTx0Oyl1LnB1c2goci9vKTtyZXR1cm4gdX0sdGEubWFwPWZ1bmN0aW9uKG4sdCl7dmFyIGU9bmV3IGE7aWYobiBpbnN0YW5jZW9mIGEpbi5mb3JFYWNoKGZ1bmN0aW9uKG4sdCl7ZS5zZXQobix0KX0pO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShuKSl7dmFyIHIsdT0tMSxpPW4ubGVuZ3RoO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKWZvcig7Kyt1PGk7KWUuc2V0KHUsblt1XSk7ZWxzZSBmb3IoOysrdTxpOyllLnNldCh0LmNhbGwobixyPW5bdV0sdSkscil9ZWxzZSBmb3IodmFyIG8gaW4gbillLnNldChvLG5bb10pO3JldHVybiBlfTt2YXIgZGE9Il9fcHJvdG9fXyIsbWE9Ilx4MDAiO28oYSx7aGFzOnMsZ2V0OmZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLl9bYyhuKV19LHNldDpmdW5jdGlvbihuLHQpe3JldHVybiB0aGlzLl9bYyhuKV09dH0scmVtb3ZlOmYsa2V5czpoLHZhbHVlczpmdW5jdGlvbigpe3ZhciBuPVtdO2Zvcih2YXIgdCBpbiB0aGlzLl8pbi5wdXNoKHRoaXMuX1t0XSk7cmV0dXJuIG59LGVudHJpZXM6ZnVuY3Rpb24oKXt2YXIgbj1bXTtmb3IodmFyIHQgaW4gdGhpcy5fKW4ucHVzaCh7a2V5OmwodCksdmFsdWU6dGhpcy5fW3RdfSk7cmV0dXJuIG59LHNpemU6ZyxlbXB0eTpwLGZvckVhY2g6ZnVuY3Rpb24obil7Zm9yKHZhciB0IGluIHRoaXMuXyluLmNhbGwodGhpcyxsKHQpLHRoaXMuX1t0XSl9fSksdGEubmVzdD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4odCxvLGMpe2lmKGM+PWkubGVuZ3RoKXJldHVybiByP3IuY2FsbCh1LG8pOmU/by5zb3J0KGUpOm87Zm9yKHZhciBsLHMsZixoLGc9LTEscD1vLmxlbmd0aCx2PWlbYysrXSxkPW5ldyBhOysrZzxwOykoaD1kLmdldChsPXYocz1vW2ddKSkpP2gucHVzaChzKTpkLnNldChsLFtzXSk7cmV0dXJuIHQ/KHM9dCgpLGY9ZnVuY3Rpb24oZSxyKXtzLnNldChlLG4odCxyLGMpKX0pOihzPXt9LGY9ZnVuY3Rpb24oZSxyKXtzW2VdPW4odCxyLGMpfSksZC5mb3JFYWNoKGYpLHN9ZnVuY3Rpb24gdChuLGUpe2lmKGU+PWkubGVuZ3RoKXJldHVybiBuO3ZhciByPVtdLHU9b1tlKytdO3JldHVybiBuLmZvckVhY2goZnVuY3Rpb24obix1KXtyLnB1c2goe2tleTpuLHZhbHVlczp0KHUsZSl9KX0pLHU/ci5zb3J0KGZ1bmN0aW9uKG4sdCl7cmV0dXJuIHUobi5rZXksdC5rZXkpfSk6cn12YXIgZSxyLHU9e30saT1bXSxvPVtdO3JldHVybiB1Lm1hcD1mdW5jdGlvbih0LGUpe3JldHVybiBuKGUsdCwwKX0sdS5lbnRyaWVzPWZ1bmN0aW9uKGUpe3JldHVybiB0KG4odGEubWFwLGUsMCksMCl9LHUua2V5PWZ1bmN0aW9uKG4pe3JldHVybiBpLnB1c2gobiksdX0sdS5zb3J0S2V5cz1mdW5jdGlvbihuKXtyZXR1cm4gb1tpLmxlbmd0aC0xXT1uLHV9LHUuc29ydFZhbHVlcz1mdW5jdGlvbihuKXtyZXR1cm4gZT1uLHV9LHUucm9sbHVwPWZ1bmN0aW9uKG4pe3JldHVybiByPW4sdX0sdX0sdGEuc2V0PWZ1bmN0aW9uKG4pe3ZhciB0PW5ldyB2O2lmKG4pZm9yKHZhciBlPTAscj1uLmxlbmd0aDtyPmU7KytlKXQuYWRkKG5bZV0pO3JldHVybiB0fSxvKHYse2hhczpzLGFkZDpmdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5fW2Mobis9IiIpXT0hMCxufSxyZW1vdmU6Zix2YWx1ZXM6aCxzaXplOmcsZW1wdHk6cCxmb3JFYWNoOmZ1bmN0aW9uKG4pe2Zvcih2YXIgdCBpbiB0aGlzLl8pbi5jYWxsKHRoaXMsbCh0KSl9fSksdGEuYmVoYXZpb3I9e30sdGEucmViaW5kPWZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlLHI9MSx1PWFyZ3VtZW50cy5sZW5ndGg7KytyPHU7KW5bZT1hcmd1bWVudHNbcl1dPWQobix0LHRbZV0pO3JldHVybiBufTt2YXIgeWE9WyJ3ZWJraXQiLCJtcyIsIm1veiIsIk1veiIsIm8iLCJPIl07dGEuZGlzcGF0Y2g9ZnVuY3Rpb24oKXtmb3IodmFyIG49bmV3IE0sdD0tMSxlPWFyZ3VtZW50cy5sZW5ndGg7Kyt0PGU7KW5bYXJndW1lbnRzW3RdXT14KG4pO3JldHVybiBufSxNLnByb3RvdHlwZS5vbj1mdW5jdGlvbihuLHQpe3ZhciBlPW4uaW5kZXhPZigiLiIpLHI9IiI7aWYoZT49MCYmKHI9bi5zbGljZShlKzEpLG49bi5zbGljZSgwLGUpKSxuKXJldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/dGhpc1tuXS5vbihyKTp0aGlzW25dLm9uKHIsdCk7aWYoMj09PWFyZ3VtZW50cy5sZW5ndGgpe2lmKG51bGw9PXQpZm9yKG4gaW4gdGhpcyl0aGlzLmhhc093blByb3BlcnR5KG4pJiZ0aGlzW25dLm9uKHIsbnVsbCk7cmV0dXJuIHRoaXN9fSx0YS5ldmVudD1udWxsLHRhLnJlcXVvdGU9ZnVuY3Rpb24obil7cmV0dXJuIG4ucmVwbGFjZShNYSwiXFwkJiIpfTt2YXIgTWE9L1tcXFxeXCRcKlwrXD9cfFxbXF1cKFwpXC5ce1x9XS9nLHhhPXt9Ll9fcHJvdG9fXz9mdW5jdGlvbihuLHQpe24uX19wcm90b19fPXR9OmZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlIGluIHQpbltlXT10W2VdfSxiYT1mdW5jdGlvbihuLHQpe3JldHVybiB0LnF1ZXJ5U2VsZWN0b3Iobil9LF9hPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQucXVlcnlTZWxlY3RvckFsbChuKX0sd2E9aWEubWF0Y2hlc3x8aWFbbShpYSwibWF0Y2hlc1NlbGVjdG9yIildLFNhPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIHdhLmNhbGwobix0KX07ImZ1bmN0aW9uIj09dHlwZW9mIFNpenpsZSYmKGJhPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIFNpenpsZShuLHQpWzBdfHxudWxsfSxfYT1TaXp6bGUsU2E9U2l6emxlLm1hdGNoZXNTZWxlY3RvciksdGEuc2VsZWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIE5hfTt2YXIga2E9dGEuc2VsZWN0aW9uLnByb3RvdHlwZT1bXTtrYS5zZWxlY3Q9ZnVuY3Rpb24obil7dmFyIHQsZSxyLHUsaT1bXTtuPWsobik7Zm9yKHZhciBvPS0xLGE9dGhpcy5sZW5ndGg7KytvPGE7KXtpLnB1c2godD1bXSksdC5wYXJlbnROb2RlPShyPXRoaXNbb10pLnBhcmVudE5vZGU7Zm9yKHZhciBjPS0xLGw9ci5sZW5ndGg7KytjPGw7KSh1PXJbY10pPyh0LnB1c2goZT1uLmNhbGwodSx1Ll9fZGF0YV9fLGMsbykpLGUmJiJfX2RhdGFfXyJpbiB1JiYoZS5fX2RhdGFfXz11Ll9fZGF0YV9fKSk6dC5wdXNoKG51bGwpfXJldHVybiBTKGkpfSxrYS5zZWxlY3RBbGw9ZnVuY3Rpb24obil7dmFyIHQsZSxyPVtdO249RShuKTtmb3IodmFyIHU9LTEsaT10aGlzLmxlbmd0aDsrK3U8aTspZm9yKHZhciBvPXRoaXNbdV0sYT0tMSxjPW8ubGVuZ3RoOysrYTxjOykoZT1vW2FdKSYmKHIucHVzaCh0PXJhKG4uY2FsbChlLGUuX19kYXRhX18sYSx1KSkpLHQucGFyZW50Tm9kZT1lKTtyZXR1cm4gUyhyKX07dmFyIEVhPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifTt0YS5ucz17cHJlZml4OkVhLHF1YWxpZnk6ZnVuY3Rpb24obil7dmFyIHQ9bi5pbmRleE9mKCI6IiksZT1uO3JldHVybiB0Pj0wJiYoZT1uLnNsaWNlKDAsdCksbj1uLnNsaWNlKHQrMSkpLEVhLmhhc093blByb3BlcnR5KGUpP3tzcGFjZTpFYVtlXSxsb2NhbDpufTpufX0sa2EuYXR0cj1mdW5jdGlvbihuLHQpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7aWYoInN0cmluZyI9PXR5cGVvZiBuKXt2YXIgZT10aGlzLm5vZGUoKTtyZXR1cm4gbj10YS5ucy5xdWFsaWZ5KG4pLG4ubG9jYWw/ZS5nZXRBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwpOmUuZ2V0QXR0cmlidXRlKG4pfWZvcih0IGluIG4pdGhpcy5lYWNoKEEodCxuW3RdKSk7cmV0dXJuIHRoaXN9cmV0dXJuIHRoaXMuZWFjaChBKG4sdCkpfSxrYS5jbGFzc2VkPWZ1bmN0aW9uKG4sdCl7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtpZigic3RyaW5nIj09dHlwZW9mIG4pe3ZhciBlPXRoaXMubm9kZSgpLHI9KG49eihuKSkubGVuZ3RoLHU9LTE7aWYodD1lLmNsYXNzTGlzdCl7Zm9yKDsrK3U8cjspaWYoIXQuY29udGFpbnMoblt1XSkpcmV0dXJuITF9ZWxzZSBmb3IodD1lLmdldEF0dHJpYnV0ZSgiY2xhc3MiKTsrK3U8cjspaWYoIUMoblt1XSkudGVzdCh0KSlyZXR1cm4hMTtyZXR1cm4hMH1mb3IodCBpbiBuKXRoaXMuZWFjaChxKHQsblt0XSkpO3JldHVybiB0aGlzfXJldHVybiB0aGlzLmVhY2gocShuLHQpKX0sa2Euc3R5bGU9ZnVuY3Rpb24obix0LGUpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg7aWYoMz5yKXtpZigic3RyaW5nIiE9dHlwZW9mIG4pezI+ciYmKHQ9IiIpO2ZvcihlIGluIG4pdGhpcy5lYWNoKFQoZSxuW2VdLHQpKTtyZXR1cm4gdGhpc31pZigyPnIpcmV0dXJuIG9hLmdldENvbXB1dGVkU3R5bGUodGhpcy5ub2RlKCksbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShuKTtlPSIifXJldHVybiB0aGlzLmVhY2goVChuLHQsZSkpfSxrYS5wcm9wZXJ0eT1mdW5jdGlvbihuLHQpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7aWYoInN0cmluZyI9PXR5cGVvZiBuKXJldHVybiB0aGlzLm5vZGUoKVtuXTtmb3IodCBpbiBuKXRoaXMuZWFjaChSKHQsblt0XSkpO3JldHVybiB0aGlzfXJldHVybiB0aGlzLmVhY2goUihuLHQpKX0sa2EudGV4dD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goImZ1bmN0aW9uIj09dHlwZW9mIG4/ZnVuY3Rpb24oKXt2YXIgdD1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PXQ/IiI6dH06bnVsbD09bj9mdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9IiJ9OmZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD1ufSk6dGhpcy5ub2RlKCkudGV4dENvbnRlbnR9LGthLmh0bWw9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCJmdW5jdGlvbiI9PXR5cGVvZiBuP2Z1bmN0aW9uKCl7dmFyIHQ9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5pbm5lckhUTUw9bnVsbD09dD8iIjp0fTpudWxsPT1uP2Z1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9IiJ9OmZ1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9bn0pOnRoaXMubm9kZSgpLmlubmVySFRNTH0sa2EuYXBwZW5kPWZ1bmN0aW9uKG4pe3JldHVybiBuPUQobiksdGhpcy5zZWxlY3QoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZChuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KX0sa2EuaW5zZXJ0PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG49RChuKSx0PWsodCksdGhpcy5zZWxlY3QoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUobi5hcHBseSh0aGlzLGFyZ3VtZW50cyksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSl9LGthLnJlbW92ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goUCl9LGthLmRhdGE9ZnVuY3Rpb24obix0KXtmdW5jdGlvbiBlKG4sZSl7dmFyIHIsdSxpLG89bi5sZW5ndGgsZj1lLmxlbmd0aCxoPU1hdGgubWluKG8sZiksZz1uZXcgQXJyYXkoZikscD1uZXcgQXJyYXkoZiksdj1uZXcgQXJyYXkobyk7aWYodCl7dmFyIGQsbT1uZXcgYSx5PW5ldyBBcnJheShvKTtmb3Iocj0tMTsrK3I8bzspbS5oYXMoZD10LmNhbGwodT1uW3JdLHUuX19kYXRhX18scikpP3Zbcl09dTptLnNldChkLHUpLHlbcl09ZDtmb3Iocj0tMTsrK3I8ZjspKHU9bS5nZXQoZD10LmNhbGwoZSxpPWVbcl0scikpKT91IT09ITAmJihnW3JdPXUsdS5fX2RhdGFfXz1pKTpwW3JdPVUoaSksbS5zZXQoZCwhMCk7Zm9yKHI9LTE7KytyPG87KW0uZ2V0KHlbcl0pIT09ITAmJih2W3JdPW5bcl0pfWVsc2V7Zm9yKHI9LTE7KytyPGg7KXU9bltyXSxpPWVbcl0sdT8odS5fX2RhdGFfXz1pLGdbcl09dSk6cFtyXT1VKGkpO2Zvcig7Zj5yOysrcilwW3JdPVUoZVtyXSk7Zm9yKDtvPnI7KytyKXZbcl09bltyXX1wLnVwZGF0ZT1nLHAucGFyZW50Tm9kZT1nLnBhcmVudE5vZGU9di5wYXJlbnROb2RlPW4ucGFyZW50Tm9kZSxjLnB1c2gocCksbC5wdXNoKGcpLHMucHVzaCh2KX12YXIgcix1LGk9LTEsbz10aGlzLmxlbmd0aDtpZighYXJndW1lbnRzLmxlbmd0aCl7Zm9yKG49bmV3IEFycmF5KG89KHI9dGhpc1swXSkubGVuZ3RoKTsrK2k8bzspKHU9cltpXSkmJihuW2ldPXUuX19kYXRhX18pO3JldHVybiBufXZhciBjPU8oW10pLGw9UyhbXSkscz1TKFtdKTtpZigiZnVuY3Rpb24iPT10eXBlb2Ygbilmb3IoOysraTxvOyllKHI9dGhpc1tpXSxuLmNhbGwocixyLnBhcmVudE5vZGUuX19kYXRhX18saSkpO2Vsc2UgZm9yKDsrK2k8bzspZShyPXRoaXNbaV0sbik7cmV0dXJuIGwuZW50ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gY30sbC5leGl0PWZ1bmN0aW9uKCl7cmV0dXJuIHN9LGx9LGthLmRhdHVtPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMucHJvcGVydHkoIl9fZGF0YV9fIixuKTp0aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIpfSxrYS5maWx0ZXI9ZnVuY3Rpb24obil7dmFyIHQsZSxyLHU9W107ImZ1bmN0aW9uIiE9dHlwZW9mIG4mJihuPWoobikpO2Zvcih2YXIgaT0wLG89dGhpcy5sZW5ndGg7bz5pO2krKyl7dS5wdXNoKHQ9W10pLHQucGFyZW50Tm9kZT0oZT10aGlzW2ldKS5wYXJlbnROb2RlO2Zvcih2YXIgYT0wLGM9ZS5sZW5ndGg7Yz5hO2ErKykocj1lW2FdKSYmbi5jYWxsKHIsci5fX2RhdGFfXyxhLGkpJiZ0LnB1c2gocil9cmV0dXJuIFModSl9LGthLm9yZGVyPWZ1bmN0aW9uKCl7Zm9yKHZhciBuPS0xLHQ9dGhpcy5sZW5ndGg7KytuPHQ7KWZvcih2YXIgZSxyPXRoaXNbbl0sdT1yLmxlbmd0aC0xLGk9clt1XTstLXU+PTA7KShlPXJbdV0pJiYoaSYmaSE9PWUubmV4dFNpYmxpbmcmJmkucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSxpKSxpPWUpO3JldHVybiB0aGlzfSxrYS5zb3J0PWZ1bmN0aW9uKG4pe249Ri5hcHBseSh0aGlzLGFyZ3VtZW50cyk7Zm9yKHZhciB0PS0xLGU9dGhpcy5sZW5ndGg7Kyt0PGU7KXRoaXNbdF0uc29ydChuKTtyZXR1cm4gdGhpcy5vcmRlcigpfSxrYS5lYWNoPWZ1bmN0aW9uKG4pe3JldHVybiBIKHRoaXMsZnVuY3Rpb24odCxlLHIpe24uY2FsbCh0LHQuX19kYXRhX18sZSxyKX0pfSxrYS5jYWxsPWZ1bmN0aW9uKG4pe3ZhciB0PXJhKGFyZ3VtZW50cyk7cmV0dXJuIG4uYXBwbHkodFswXT10aGlzLHQpLHRoaXN9LGthLmVtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMubm9kZSgpfSxrYS5ub2RlPWZ1bmN0aW9uKCl7Zm9yKHZhciBuPTAsdD10aGlzLmxlbmd0aDt0Pm47bisrKWZvcih2YXIgZT10aGlzW25dLHI9MCx1PWUubGVuZ3RoO3U+cjtyKyspe3ZhciBpPWVbcl07aWYoaSlyZXR1cm4gaX1yZXR1cm4gbnVsbH0sa2Euc2l6ZT1mdW5jdGlvbigpe3ZhciBuPTA7cmV0dXJuIEgodGhpcyxmdW5jdGlvbigpeysrbn0pLG59O3ZhciBBYT1bXTt0YS5zZWxlY3Rpb24uZW50ZXI9Tyx0YS5zZWxlY3Rpb24uZW50ZXIucHJvdG90eXBlPUFhLEFhLmFwcGVuZD1rYS5hcHBlbmQsQWEuZW1wdHk9a2EuZW1wdHksQWEubm9kZT1rYS5ub2RlLEFhLmNhbGw9a2EuY2FsbCxBYS5zaXplPWthLnNpemUsQWEuc2VsZWN0PWZ1bmN0aW9uKG4pe2Zvcih2YXIgdCxlLHIsdSxpLG89W10sYT0tMSxjPXRoaXMubGVuZ3RoOysrYTxjOyl7cj0odT10aGlzW2FdKS51cGRhdGUsby5wdXNoKHQ9W10pLHQucGFyZW50Tm9kZT11LnBhcmVudE5vZGU7Zm9yKHZhciBsPS0xLHM9dS5sZW5ndGg7KytsPHM7KShpPXVbbF0pPyh0LnB1c2gocltsXT1lPW4uY2FsbCh1LnBhcmVudE5vZGUsaS5fX2RhdGFfXyxsLGEpKSxlLl9fZGF0YV9fPWkuX19kYXRhX18pOnQucHVzaChudWxsKX1yZXR1cm4gUyhvKX0sQWEuaW5zZXJ0PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MiYmKHQ9WSh0aGlzKSksa2EuaW5zZXJ0LmNhbGwodGhpcyxuLHQpfSx0YS5zZWxlY3Q9ZnVuY3Rpb24obil7dmFyIHQ9WyJzdHJpbmciPT10eXBlb2Ygbj9iYShuLHVhKTpuXTtyZXR1cm4gdC5wYXJlbnROb2RlPWlhLFMoW3RdKX0sdGEuc2VsZWN0QWxsPWZ1bmN0aW9uKG4pe3ZhciB0PXJhKCJzdHJpbmciPT10eXBlb2Ygbj9fYShuLHVhKTpuKTtyZXR1cm4gdC5wYXJlbnROb2RlPWlhLFMoW3RdKX07dmFyIE5hPXRhLnNlbGVjdChpYSk7a2Eub249ZnVuY3Rpb24obix0LGUpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg7aWYoMz5yKXtpZigic3RyaW5nIiE9dHlwZW9mIG4pezI+ciYmKHQ9ITEpO2ZvcihlIGluIG4pdGhpcy5lYWNoKEkoZSxuW2VdLHQpKTtyZXR1cm4gdGhpc31pZigyPnIpcmV0dXJuKHI9dGhpcy5ub2RlKClbIl9fb24iK25dKSYmci5fO2U9ITF9cmV0dXJuIHRoaXMuZWFjaChJKG4sdCxlKSl9O3ZhciBDYT10YS5tYXAoe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSk7Q2EuZm9yRWFjaChmdW5jdGlvbihuKXsib24iK24gaW4gdWEmJkNhLnJlbW92ZShuKX0pO3ZhciB6YT0ib25zZWxlY3RzdGFydCJpbiB1YT9udWxsOm0oaWEuc3R5bGUsInVzZXJTZWxlY3QiKSxxYT0wO3RhLm1vdXNlPWZ1bmN0aW9uKG4pe3JldHVybiAkKG4sXygpKX07dmFyIExhPS9XZWJLaXQvLnRlc3Qob2EubmF2aWdhdG9yLnVzZXJBZ2VudCk/LTE6MDt0YS50b3VjaD1mdW5jdGlvbihuLHQsZSl7aWYoYXJndW1lbnRzLmxlbmd0aDwzJiYoZT10LHQ9XygpLmNoYW5nZWRUb3VjaGVzKSx0KWZvcih2YXIgcix1PTAsaT10Lmxlbmd0aDtpPnU7Kyt1KWlmKChyPXRbdV0pLmlkZW50aWZpZXI9PT1lKXJldHVybiAkKG4scil9LHRhLmJlaGF2aW9yLmRyYWc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7dGhpcy5vbigibW91c2Vkb3duLmRyYWciLHUpLm9uKCJ0b3VjaHN0YXJ0LmRyYWciLGkpfWZ1bmN0aW9uIHQobix0LHUsaSxvKXtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7dmFyIG4sZSxyPXQoaCx2KTtyJiYobj1yWzBdLU1bMF0sZT1yWzFdLU1bMV0scHw9bnxlLE09cixnKHt0eXBlOiJkcmFnIix4OnJbMF0rbFswXSx5OnJbMV0rbFsxXSxkeDpuLGR5OmV9KSl9ZnVuY3Rpb24gYygpe3QoaCx2KSYmKG0ub24oaStkLG51bGwpLm9uKG8rZCxudWxsKSx5KHAmJnRhLmV2ZW50LnRhcmdldD09PWYpLGcoe3R5cGU6ImRyYWdlbmQifSkpfXZhciBsLHM9dGhpcyxmPXRhLmV2ZW50LnRhcmdldCxoPXMucGFyZW50Tm9kZSxnPWUub2Yocyxhcmd1bWVudHMpLHA9MCx2PW4oKSxkPSIuZHJhZyIrKG51bGw9PXY/IiI6Ii0iK3YpLG09dGEuc2VsZWN0KHUoKSkub24oaStkLGEpLm9uKG8rZCxjKSx5PVgoKSxNPXQoaCx2KTtyPyhsPXIuYXBwbHkocyxhcmd1bWVudHMpLGw9W2wueC1NWzBdLGwueS1NWzFdXSk6bD1bMCwwXSxnKHt0eXBlOiJkcmFnc3RhcnQifSl9fXZhciBlPXcobiwiZHJhZyIsImRyYWdzdGFydCIsImRyYWdlbmQiKSxyPW51bGwsdT10KHksdGEubW91c2UsSiwibW91c2Vtb3ZlIiwibW91c2V1cCIpLGk9dChCLHRhLnRvdWNoLFcsInRvdWNobW92ZSIsInRvdWNoZW5kIik7cmV0dXJuIG4ub3JpZ2luPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsbik6cn0sdGEucmViaW5kKG4sZSwib24iKX0sdGEudG91Y2hlcz1mdW5jdGlvbihuLHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDImJih0PV8oKS50b3VjaGVzKSx0P3JhKHQpLm1hcChmdW5jdGlvbih0KXt2YXIgZT0kKG4sdCk7cmV0dXJuIGUuaWRlbnRpZmllcj10LmlkZW50aWZpZXIsZX0pOltdfTt2YXIgVGE9MWUtNixSYT1UYSpUYSxEYT1NYXRoLlBJLFBhPTIqRGEsVWE9UGEtVGEsamE9RGEvMixGYT1EYS8xODAsSGE9MTgwL0RhLE9hPU1hdGguU1FSVDIsWWE9MixJYT00O3RhLmludGVycG9sYXRlWm9vbT1mdW5jdGlvbihuLHQpe2Z1bmN0aW9uIGUobil7dmFyIHQ9bip5O2lmKG0pe3ZhciBlPWV0KHYpLG89aS8oWWEqaCkqKGUqcnQoT2EqdCt2KS10dCh2KSk7cmV0dXJuW3IrbypsLHUrbypzLGkqZS9ldChPYSp0K3YpXX1yZXR1cm5bcituKmwsdStuKnMsaSpNYXRoLmV4cChPYSp0KV19dmFyIHI9blswXSx1PW5bMV0saT1uWzJdLG89dFswXSxhPXRbMV0sYz10WzJdLGw9by1yLHM9YS11LGY9bCpsK3MqcyxoPU1hdGguc3FydChmKSxnPShjKmMtaSppK0lhKmYpLygyKmkqWWEqaCkscD0oYypjLWkqaS1JYSpmKS8oMipjKllhKmgpLHY9TWF0aC5sb2coTWF0aC5zcXJ0KGcqZysxKS1nKSxkPU1hdGgubG9nKE1hdGguc3FydChwKnArMSktcCksbT1kLXYseT0obXx8TWF0aC5sb2coYy9pKSkvT2E7cmV0dXJuIGUuZHVyYXRpb249MWUzKnksZX0sdGEuYmVoYXZpb3Iuem9vbT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obil7bi5vbih6LHMpLm9uKFhhKyIuem9vbSIsaCkub24oImRibGNsaWNrLnpvb20iLGcpLm9uKFQsZil9ZnVuY3Rpb24gdChuKXtyZXR1cm5bKG5bMF0tay54KS9rLmssKG5bMV0tay55KS9rLmtdfWZ1bmN0aW9uIGUobil7cmV0dXJuW25bMF0qay5rK2sueCxuWzFdKmsuaytrLnldfWZ1bmN0aW9uIHIobil7ay5rPU1hdGgubWF4KEFbMF0sTWF0aC5taW4oQVsxXSxuKSl9ZnVuY3Rpb24gdShuLHQpe3Q9ZSh0KSxrLngrPW5bMF0tdFswXSxrLnkrPW5bMV0tdFsxXX1mdW5jdGlvbiBpKHQsZSxpLG8pe3QuX19jaGFydF9fPXt4OmsueCx5OmsueSxrOmsua30scihNYXRoLnBvdygyLG8pKSx1KHY9ZSxpKSx0PXRhLnNlbGVjdCh0KSxOPjAmJih0PXQudHJhbnNpdGlvbigpLmR1cmF0aW9uKE4pKSx0LmNhbGwobi5ldmVudCl9ZnVuY3Rpb24gbygpe3gmJnguZG9tYWluKE0ucmFuZ2UoKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuKG4tay54KS9rLmt9KS5tYXAoTS5pbnZlcnQpKSxTJiZTLmRvbWFpbihfLnJhbmdlKCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybihuLWsueSkvay5rfSkubWFwKF8uaW52ZXJ0KSl9ZnVuY3Rpb24gYShuKXtDKyt8fG4oe3R5cGU6Inpvb21zdGFydCJ9KX1mdW5jdGlvbiBjKG4pe28oKSxuKHt0eXBlOiJ6b29tIixzY2FsZTprLmssdHJhbnNsYXRlOltrLngsay55XX0pfWZ1bmN0aW9uIGwobil7LS1DfHxuKHt0eXBlOiJ6b29tZW5kIn0pLHY9bnVsbH1mdW5jdGlvbiBzKCl7ZnVuY3Rpb24gbigpe3M9MSx1KHRhLm1vdXNlKHIpLGgpLGMobyl9ZnVuY3Rpb24gZSgpe2Yub24ocSxudWxsKS5vbihMLG51bGwpLGcocyYmdGEuZXZlbnQudGFyZ2V0PT09aSksbChvKX12YXIgcj10aGlzLGk9dGEuZXZlbnQudGFyZ2V0LG89Ui5vZihyLGFyZ3VtZW50cykscz0wLGY9dGEuc2VsZWN0KG9hKS5vbihxLG4pLm9uKEwsZSksaD10KHRhLm1vdXNlKHIpKSxnPVgoKTtGbC5jYWxsKHIpLGEobyl9ZnVuY3Rpb24gZigpe2Z1bmN0aW9uIG4oKXt2YXIgbj10YS50b3VjaGVzKHApO3JldHVybiBnPWsuayxuLmZvckVhY2goZnVuY3Rpb24obil7bi5pZGVudGlmaWVyIGluIGQmJihkW24uaWRlbnRpZmllcl09dChuKSl9KSxufWZ1bmN0aW9uIGUoKXt2YXIgdD10YS5ldmVudC50YXJnZXQ7dGEuc2VsZWN0KHQpLm9uKHgsbykub24oXyxoKSx3LnB1c2godCk7Zm9yKHZhciBlPXRhLmV2ZW50LmNoYW5nZWRUb3VjaGVzLHI9MCx1PWUubGVuZ3RoO3U+cjsrK3IpZFtlW3JdLmlkZW50aWZpZXJdPW51bGw7dmFyIGE9bigpLGM9RGF0ZS5ub3coKTtpZigxPT09YS5sZW5ndGgpe2lmKDUwMD5jLXkpe3ZhciBsPWFbMF07aShwLGwsZFtsLmlkZW50aWZpZXJdLE1hdGguZmxvb3IoTWF0aC5sb2coay5rKS9NYXRoLkxOMikrMSksYigpfXk9Y31lbHNlIGlmKGEubGVuZ3RoPjEpe3ZhciBsPWFbMF0scz1hWzFdLGY9bFswXS1zWzBdLGc9bFsxXS1zWzFdO209ZipmK2cqZ319ZnVuY3Rpb24gbygpe3ZhciBuLHQsZSxpLG89dGEudG91Y2hlcyhwKTtGbC5jYWxsKHApO2Zvcih2YXIgYT0wLGw9by5sZW5ndGg7bD5hOysrYSxpPW51bGwpaWYoZT1vW2FdLGk9ZFtlLmlkZW50aWZpZXJdKXtpZih0KWJyZWFrO249ZSx0PWl9aWYoaSl7dmFyIHM9KHM9ZVswXS1uWzBdKSpzKyhzPWVbMV0tblsxXSkqcyxmPW0mJk1hdGguc3FydChzL20pO249WyhuWzBdK2VbMF0pLzIsKG5bMV0rZVsxXSkvMl0sdD1bKHRbMF0raVswXSkvMiwodFsxXStpWzFdKS8yXSxyKGYqZyl9eT1udWxsLHUobix0KSxjKHYpfWZ1bmN0aW9uIGgoKXtpZih0YS5ldmVudC50b3VjaGVzLmxlbmd0aCl7Zm9yKHZhciB0PXRhLmV2ZW50LmNoYW5nZWRUb3VjaGVzLGU9MCxyPXQubGVuZ3RoO3I+ZTsrK2UpZGVsZXRlIGRbdFtlXS5pZGVudGlmaWVyXTtmb3IodmFyIHUgaW4gZClyZXR1cm4gdm9pZCBuKCl9dGEuc2VsZWN0QWxsKHcpLm9uKE0sbnVsbCksUy5vbih6LHMpLm9uKFQsZiksRSgpLGwodil9dmFyIGcscD10aGlzLHY9Ui5vZihwLGFyZ3VtZW50cyksZD17fSxtPTAsTT0iLnpvb20tIit0YS5ldmVudC5jaGFuZ2VkVG91Y2hlc1swXS5pZGVudGlmaWVyLHg9InRvdWNobW92ZSIrTSxfPSJ0b3VjaGVuZCIrTSx3PVtdLFM9dGEuc2VsZWN0KHApLEU9WCgpO2UoKSxhKHYpLFMub24oeixudWxsKS5vbihULGUpfWZ1bmN0aW9uIGgoKXt2YXIgbj1SLm9mKHRoaXMsYXJndW1lbnRzKTttP2NsZWFyVGltZW91dChtKToocD10KHY9ZHx8dGEubW91c2UodGhpcykpLEZsLmNhbGwodGhpcyksYShuKSksbT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bT1udWxsLGwobil9LDUwKSxiKCkscihNYXRoLnBvdygyLC4wMDIqWmEoKSkqay5rKSx1KHYscCksYyhuKX1mdW5jdGlvbiBnKCl7dmFyIG49dGEubW91c2UodGhpcyksZT1NYXRoLmxvZyhrLmspL01hdGguTE4yO2kodGhpcyxuLHQobiksdGEuZXZlbnQuc2hpZnRLZXk/TWF0aC5jZWlsKGUpLTE6TWF0aC5mbG9vcihlKSsxKX12YXIgcCx2LGQsbSx5LE0seCxfLFMsaz17eDowLHk6MCxrOjF9LEU9Wzk2MCw1MDBdLEE9VmEsTj0yNTAsQz0wLHo9Im1vdXNlZG93bi56b29tIixxPSJtb3VzZW1vdmUuem9vbSIsTD0ibW91c2V1cC56b29tIixUPSJ0b3VjaHN0YXJ0Lnpvb20iLFI9dyhuLCJ6b29tc3RhcnQiLCJ6b29tIiwiem9vbWVuZCIpO3JldHVybiBuLmV2ZW50PWZ1bmN0aW9uKG4pe24uZWFjaChmdW5jdGlvbigpe3ZhciBuPVIub2YodGhpcyxhcmd1bWVudHMpLHQ9aztVbD90YS5zZWxlY3QodGhpcykudHJhbnNpdGlvbigpLmVhY2goInN0YXJ0Lnpvb20iLGZ1bmN0aW9uKCl7az10aGlzLl9fY2hhcnRfX3x8e3g6MCx5OjAsazoxfSxhKG4pfSkudHdlZW4oInpvb206em9vbSIsZnVuY3Rpb24oKXt2YXIgZT1FWzBdLHI9RVsxXSx1PXY/dlswXTplLzIsaT12P3ZbMV06ci8yLG89dGEuaW50ZXJwb2xhdGVab29tKFsodS1rLngpL2suaywoaS1rLnkpL2suayxlL2sua10sWyh1LXQueCkvdC5rLChpLXQueSkvdC5rLGUvdC5rXSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciByPW8odCksYT1lL3JbMl07dGhpcy5fX2NoYXJ0X189az17eDp1LXJbMF0qYSx5OmktclsxXSphLGs6YX0sYyhuKX19KS5lYWNoKCJpbnRlcnJ1cHQuem9vbSIsZnVuY3Rpb24oKXtsKG4pfSkuZWFjaCgiZW5kLnpvb20iLGZ1bmN0aW9uKCl7bChuKX0pOih0aGlzLl9fY2hhcnRfXz1rLGEobiksYyhuKSxsKG4pKX0pfSxuLnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaz17eDordFswXSx5Oit0WzFdLGs6ay5rfSxvKCksbik6W2sueCxrLnldfSxuLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhrPXt4OmsueCx5OmsueSxrOit0fSxvKCksbik6ay5rfSxuLnNjYWxlRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhBPW51bGw9PXQ/VmE6Wyt0WzBdLCt0WzFdXSxuKTpBfSxuLmNlbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD10JiZbK3RbMF0sK3RbMV1dLG4pOmR9LG4uc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT10JiZbK3RbMF0sK3RbMV1dLG4pOkV9LG4uZHVyYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KE49K3Qsbik6Tn0sbi54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh4PXQsTT10LmNvcHkoKSxrPXt4OjAseTowLGs6MX0sbik6eH0sbi55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhTPXQsXz10LmNvcHkoKSxrPXt4OjAseTowLGs6MX0sbik6U30sdGEucmViaW5kKG4sUiwib24iKX07dmFyIFphLFZhPVswLDEvMF0sWGE9Im9ud2hlZWwiaW4gdWE/KFphPWZ1bmN0aW9uKCl7cmV0dXJuLXRhLmV2ZW50LmRlbHRhWSoodGEuZXZlbnQuZGVsdGFNb2RlPzEyMDoxKX0sIndoZWVsIik6Im9ubW91c2V3aGVlbCJpbiB1YT8oWmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGEuZXZlbnQud2hlZWxEZWx0YX0sIm1vdXNld2hlZWwiKTooWmE9ZnVuY3Rpb24oKXtyZXR1cm4tdGEuZXZlbnQuZGV0YWlsfSwiTW96TW91c2VQaXhlbFNjcm9sbCIpO3RhLmNvbG9yPWl0LGl0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpKyIifSx0YS5oc2w9b3Q7dmFyICRhPW90LnByb3RvdHlwZT1uZXcgaXQ7JGEuYnJpZ2h0ZXI9ZnVuY3Rpb24obil7cmV0dXJuIG49TWF0aC5wb3coLjcsYXJndW1lbnRzLmxlbmd0aD9uOjEpLG5ldyBvdCh0aGlzLmgsdGhpcy5zLHRoaXMubC9uKX0sJGEuZGFya2VyPWZ1bmN0aW9uKG4pe3JldHVybiBuPU1hdGgucG93KC43LGFyZ3VtZW50cy5sZW5ndGg/bjoxKSxuZXcgb3QodGhpcy5oLHRoaXMucyxuKnRoaXMubCl9LCRhLnJnYj1mdW5jdGlvbigpe3JldHVybiBhdCh0aGlzLmgsdGhpcy5zLHRoaXMubCl9LHRhLmhjbD1jdDt2YXIgQmE9Y3QucHJvdG90eXBlPW5ldyBpdDtCYS5icmlnaHRlcj1mdW5jdGlvbihuKXtyZXR1cm4gbmV3IGN0KHRoaXMuaCx0aGlzLmMsTWF0aC5taW4oMTAwLHRoaXMubCtXYSooYXJndW1lbnRzLmxlbmd0aD9uOjEpKSl9LEJhLmRhcmtlcj1mdW5jdGlvbihuKXtyZXR1cm4gbmV3IGN0KHRoaXMuaCx0aGlzLmMsTWF0aC5tYXgoMCx0aGlzLmwtV2EqKGFyZ3VtZW50cy5sZW5ndGg/bjoxKSkpfSxCYS5yZ2I9ZnVuY3Rpb24oKXtyZXR1cm4gbHQodGhpcy5oLHRoaXMuYyx0aGlzLmwpLnJnYigpfSx0YS5sYWI9c3Q7dmFyIFdhPTE4LEphPS45NTA0NyxHYT0xLEthPTEuMDg4ODMsUWE9c3QucHJvdG90eXBlPW5ldyBpdDtRYS5icmlnaHRlcj1mdW5jdGlvbihuKXtyZXR1cm4gbmV3IHN0KE1hdGgubWluKDEwMCx0aGlzLmwrV2EqKGFyZ3VtZW50cy5sZW5ndGg/bjoxKSksdGhpcy5hLHRoaXMuYil9LFFhLmRhcmtlcj1mdW5jdGlvbihuKXtyZXR1cm4gbmV3IHN0KE1hdGgubWF4KDAsdGhpcy5sLVdhKihhcmd1bWVudHMubGVuZ3RoP246MSkpLHRoaXMuYSx0aGlzLmIpfSxRYS5yZ2I9ZnVuY3Rpb24oKXtyZXR1cm4gZnQodGhpcy5sLHRoaXMuYSx0aGlzLmIpfSx0YS5yZ2I9ZHQ7dmFyIG5jPWR0LnByb3RvdHlwZT1uZXcgaXQ7bmMuYnJpZ2h0ZXI9ZnVuY3Rpb24obil7bj1NYXRoLnBvdyguNyxhcmd1bWVudHMubGVuZ3RoP246MSk7dmFyIHQ9dGhpcy5yLGU9dGhpcy5nLHI9dGhpcy5iLHU9MzA7cmV0dXJuIHR8fGV8fHI/KHQmJnU+dCYmKHQ9dSksZSYmdT5lJiYoZT11KSxyJiZ1PnImJihyPXUpLG5ldyBkdChNYXRoLm1pbigyNTUsdC9uKSxNYXRoLm1pbigyNTUsZS9uKSxNYXRoLm1pbigyNTUsci9uKSkpOm5ldyBkdCh1LHUsdSl9LG5jLmRhcmtlcj1mdW5jdGlvbihuKXtyZXR1cm4gbj1NYXRoLnBvdyguNyxhcmd1bWVudHMubGVuZ3RoP246MSksbmV3IGR0KG4qdGhpcy5yLG4qdGhpcy5nLG4qdGhpcy5iKX0sbmMuaHNsPWZ1bmN0aW9uKCl7cmV0dXJuIGJ0KHRoaXMucix0aGlzLmcsdGhpcy5iKX0sbmMudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iIyIrTXQodGhpcy5yKStNdCh0aGlzLmcpK010KHRoaXMuYil9O3ZhciB0Yz10YS5tYXAoe2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fSk7dGMuZm9yRWFjaChmdW5jdGlvbihuLHQpe3RjLnNldChuLG10KHQpKX0pLHRhLmZ1bmN0b3I9a3QsdGEueGhyPUF0KEV0KSx0YS5kc3Y9ZnVuY3Rpb24obix0KXtmdW5jdGlvbiBlKG4sZSxpKXthcmd1bWVudHMubGVuZ3RoPDMmJihpPWUsZT1udWxsKTt2YXIgbz1OdChuLHQsbnVsbD09ZT9yOnUoZSksaSk7cmV0dXJuIG8ucm93PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP28ucmVzcG9uc2UobnVsbD09KGU9bik/cjp1KG4pKTplfSxvfWZ1bmN0aW9uIHIobil7cmV0dXJuIGUucGFyc2Uobi5yZXNwb25zZVRleHQpfWZ1bmN0aW9uIHUobil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLnBhcnNlKHQucmVzcG9uc2VUZXh0LG4pfX1mdW5jdGlvbiBpKHQpe3JldHVybiB0Lm1hcChvKS5qb2luKG4pfWZ1bmN0aW9uIG8obil7cmV0dXJuIGEudGVzdChuKT8nIicrbi5yZXBsYWNlKC9cIi9nLCciIicpKyciJzpufXZhciBhPW5ldyBSZWdFeHAoJ1siJytuKyJcbl0iKSxjPW4uY2hhckNvZGVBdCgwKTtyZXR1cm4gZS5wYXJzZT1mdW5jdGlvbihuLHQpe3ZhciByO3JldHVybiBlLnBhcnNlUm93cyhuLGZ1bmN0aW9uKG4sZSl7aWYocilyZXR1cm4gcihuLGUtMSk7dmFyIHU9bmV3IEZ1bmN0aW9uKCJkIiwicmV0dXJuIHsiK24ubWFwKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KG4pKyI6IGRbIit0KyJdIn0pLmpvaW4oIiwiKSsifSIpO3I9dD9mdW5jdGlvbihuLGUpe3JldHVybiB0KHUobiksZSl9OnV9KX0sZS5wYXJzZVJvd3M9ZnVuY3Rpb24obix0KXtmdW5jdGlvbiBlKCl7aWYocz49bClyZXR1cm4gbztpZih1KXJldHVybiB1PSExLGk7dmFyIHQ9cztpZigzND09PW4uY2hhckNvZGVBdCh0KSl7Zm9yKHZhciBlPXQ7ZSsrPGw7KWlmKDM0PT09bi5jaGFyQ29kZUF0KGUpKXtpZigzNCE9PW4uY2hhckNvZGVBdChlKzEpKWJyZWFrOysrZX1zPWUrMjt2YXIgcj1uLmNoYXJDb2RlQXQoZSsxKTtyZXR1cm4gMTM9PT1yPyh1PSEwLDEwPT09bi5jaGFyQ29kZUF0KGUrMikmJisrcyk6MTA9PT1yJiYodT0hMCksbi5zbGljZSh0KzEsZSkucmVwbGFjZSgvIiIvZywnIicpfWZvcig7bD5zOyl7dmFyIHI9bi5jaGFyQ29kZUF0KHMrKyksYT0xO2lmKDEwPT09cil1PSEwO2Vsc2UgaWYoMTM9PT1yKXU9ITAsMTA9PT1uLmNoYXJDb2RlQXQocykmJigrK3MsKythKTtlbHNlIGlmKHIhPT1jKWNvbnRpbnVlO3JldHVybiBuLnNsaWNlKHQscy1hKX1yZXR1cm4gbi5zbGljZSh0KX1mb3IodmFyIHIsdSxpPXt9LG89e30sYT1bXSxsPW4ubGVuZ3RoLHM9MCxmPTA7KHI9ZSgpKSE9PW87KXtmb3IodmFyIGg9W107ciE9PWkmJnIhPT1vOyloLnB1c2gocikscj1lKCk7dCYmbnVsbD09KGg9dChoLGYrKykpfHxhLnB1c2goaCl9cmV0dXJuIGF9LGUuZm9ybWF0PWZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodFswXSkpcmV0dXJuIGUuZm9ybWF0Um93cyh0KTt2YXIgcj1uZXcgdix1PVtdO3JldHVybiB0LmZvckVhY2goZnVuY3Rpb24obil7Zm9yKHZhciB0IGluIG4pci5oYXModCl8fHUucHVzaChyLmFkZCh0KSl9KSxbdS5tYXAobykuam9pbihuKV0uY29uY2F0KHQubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB1Lm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbyh0W25dKX0pLmpvaW4obil9KSkuam9pbigiXG4iKX0sZS5mb3JtYXRSb3dzPWZ1bmN0aW9uKG4pe3JldHVybiBuLm1hcChpKS5qb2luKCJcbiIpfSxlfSx0YS5jc3Y9dGEuZHN2KCIsIiwidGV4dC9jc3YiKSx0YS50c3Y9dGEuZHN2KCIJIiwidGV4dC90YWItc2VwYXJhdGVkLXZhbHVlcyIpO3ZhciBlYyxyYyx1YyxpYyxvYyxhYz1vYVttKG9hLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiKV18fGZ1bmN0aW9uKG4pe3NldFRpbWVvdXQobiwxNyl9O3RhLnRpbWVyPWZ1bmN0aW9uKG4sdCxlKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoOzI+ciYmKHQ9MCksMz5yJiYoZT1EYXRlLm5vdygpKTt2YXIgdT1lK3QsaT17YzpuLHQ6dSxmOiExLG46bnVsbH07cmM/cmMubj1pOmVjPWkscmM9aSx1Y3x8KGljPWNsZWFyVGltZW91dChpYyksdWM9MSxhYyhxdCkpfSx0YS50aW1lci5mbHVzaD1mdW5jdGlvbigpe0x0KCksVHQoKX0sdGEucm91bmQ9ZnVuY3Rpb24obix0KXtyZXR1cm4gdD9NYXRoLnJvdW5kKG4qKHQ9TWF0aC5wb3coMTAsdCkpKS90Ok1hdGgucm91bmQobil9O3ZhciBjYz1bInkiLCJ6IiwiYSIsImYiLCJwIiwibiIsIlx4YjUiLCJtIiwiIiwiayIsIk0iLCJHIiwiVCIsIlAiLCJFIiwiWiIsIlkiXS5tYXAoRHQpO3RhLmZvcm1hdFByZWZpeD1mdW5jdGlvbihuLHQpe3ZhciBlPTA7cmV0dXJuIG4mJigwPm4mJihuKj0tMSksdCYmKG49dGEucm91bmQobixSdChuLHQpKSksZT0xK01hdGguZmxvb3IoMWUtMTIrTWF0aC5sb2cobikvTWF0aC5MTjEwKSxlPU1hdGgubWF4KC0yNCxNYXRoLm1pbigyNCwzKk1hdGguZmxvb3IoKGUtMSkvMykpKSksY2NbOCtlLzNdfTt2YXIgbGM9Lyg/OihbXntdKT8oWzw+PV5dKSk/KFsrXC0gXSk/KFskI10pPygwKT8oXGQrKT8oLCk/KFwuLT9cZCspPyhbYS16JV0pPy9pLHNjPXRhLm1hcCh7YjpmdW5jdGlvbihuKXtyZXR1cm4gbi50b1N0cmluZygyKX0sYzpmdW5jdGlvbihuKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShuKX0sbzpmdW5jdGlvbihuKXtyZXR1cm4gbi50b1N0cmluZyg4KX0seDpmdW5jdGlvbihuKXtyZXR1cm4gbi50b1N0cmluZygxNil9LFg6ZnVuY3Rpb24obil7cmV0dXJuIG4udG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9LGc6ZnVuY3Rpb24obix0KXtyZXR1cm4gbi50b1ByZWNpc2lvbih0KX0sZTpmdW5jdGlvbihuLHQpe3JldHVybiBuLnRvRXhwb25lbnRpYWwodCl9LGY6ZnVuY3Rpb24obix0KXtyZXR1cm4gbi50b0ZpeGVkKHQpfSxyOmZ1bmN0aW9uKG4sdCl7cmV0dXJuKG49dGEucm91bmQobixSdChuLHQpKSkudG9GaXhlZChNYXRoLm1heCgwLE1hdGgubWluKDIwLFJ0KG4qKDErMWUtMTUpLHQpKSkpfX0pLGZjPXRhLnRpbWU9e30saGM9RGF0ZTtqdC5wcm90b3R5cGU9e2dldERhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdldFVUQ0RhdGUoKX0sZ2V0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5nZXRVVENEYXkoKX0sZ2V0RnVsbFllYXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdldFVUQ0Z1bGxZZWFyKCl9LGdldEhvdXJzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5nZXRVVENIb3VycygpfSxnZXRNaWxsaXNlY29uZHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdldFVUQ01pbGxpc2Vjb25kcygpfSxnZXRNaW51dGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5nZXRVVENNaW51dGVzKCl9LGdldE1vbnRoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5nZXRVVENNb250aCgpfSxnZXRTZWNvbmRzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5nZXRVVENTZWNvbmRzKCl9LGdldFRpbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdldFRpbWUoKX0sZ2V0VGltZXpvbmVPZmZzZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMH0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8udmFsdWVPZigpfSxzZXREYXRlOmZ1bmN0aW9uKCl7Z2Muc2V0VVRDRGF0ZS5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0RGF5OmZ1bmN0aW9uKCl7Z2Muc2V0VVRDRGF5LmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfSxzZXRGdWxsWWVhcjpmdW5jdGlvbigpe2djLnNldFVUQ0Z1bGxZZWFyLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfSxzZXRIb3VyczpmdW5jdGlvbigpe2djLnNldFVUQ0hvdXJzLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfSxzZXRNaWxsaXNlY29uZHM6ZnVuY3Rpb24oKXtnYy5zZXRVVENNaWxsaXNlY29uZHMuYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9LHNldE1pbnV0ZXM6ZnVuY3Rpb24oKXtnYy5zZXRVVENNaW51dGVzLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfSxzZXRNb250aDpmdW5jdGlvbigpe2djLnNldFVUQ01vbnRoLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfSxzZXRTZWNvbmRzOmZ1bmN0aW9uKCl7Z2Muc2V0VVRDU2Vjb25kcy5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0VGltZTpmdW5jdGlvbigpe2djLnNldFRpbWUuYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9fTt2YXIgZ2M9RGF0ZS5wcm90b3R5cGU7ZmMueWVhcj1GdChmdW5jdGlvbihuKXtyZXR1cm4gbj1mYy5kYXkobiksbi5zZXRNb250aCgwLDEpLG59LGZ1bmN0aW9uKG4sdCl7bi5zZXRGdWxsWWVhcihuLmdldEZ1bGxZZWFyKCkrdCl9LGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldEZ1bGxZZWFyKCl9KSxmYy55ZWFycz1mYy55ZWFyLnJhbmdlLGZjLnllYXJzLnV0Yz1mYy55ZWFyLnV0Yy5yYW5nZSxmYy5kYXk9RnQoZnVuY3Rpb24obil7dmFyIHQ9bmV3IGhjKDJlMywwKTtyZXR1cm4gdC5zZXRGdWxsWWVhcihuLmdldEZ1bGxZZWFyKCksbi5nZXRNb250aCgpLG4uZ2V0RGF0ZSgpKSx0fSxmdW5jdGlvbihuLHQpe24uc2V0RGF0ZShuLmdldERhdGUoKSt0KX0sZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0RGF0ZSgpLTF9KSxmYy5kYXlzPWZjLmRheS5yYW5nZSxmYy5kYXlzLnV0Yz1mYy5kYXkudXRjLnJhbmdlLGZjLmRheU9mWWVhcj1mdW5jdGlvbihuKXt2YXIgdD1mYy55ZWFyKG4pO3JldHVybiBNYXRoLmZsb29yKChuLXQtNmU0KihuLmdldFRpbWV6b25lT2Zmc2V0KCktdC5nZXRUaW1lem9uZU9mZnNldCgpKSkvODY0ZTUpfSxbInN1bmRheSIsIm1vbmRheSIsInR1ZXNkYXkiLCJ3ZWRuZXNkYXkiLCJ0aHVyc2RheSIsImZyaWRheSIsInNhdHVyZGF5Il0uZm9yRWFjaChmdW5jdGlvbihuLHQpe3Q9Ny10O3ZhciBlPWZjW25dPUZ0KGZ1bmN0aW9uKG4pe3JldHVybihuPWZjLmRheShuKSkuc2V0RGF0ZShuLmdldERhdGUoKS0obi5nZXREYXkoKSt0KSU3KSxufSxmdW5jdGlvbihuLHQpe24uc2V0RGF0ZShuLmdldERhdGUoKSs3Kk1hdGguZmxvb3IodCkpfSxmdW5jdGlvbihuKXt2YXIgZT1mYy55ZWFyKG4pLmdldERheSgpO3JldHVybiBNYXRoLmZsb29yKChmYy5kYXlPZlllYXIobikrKGUrdCklNykvNyktKGUhPT10KX0pO2ZjW24rInMiXT1lLnJhbmdlLGZjW24rInMiXS51dGM9ZS51dGMucmFuZ2UsZmNbbisiT2ZZZWFyIl09ZnVuY3Rpb24obil7dmFyIGU9ZmMueWVhcihuKS5nZXREYXkoKTtyZXR1cm4gTWF0aC5mbG9vcigoZmMuZGF5T2ZZZWFyKG4pKyhlK3QpJTcpLzcpfX0pLGZjLndlZWs9ZmMuc3VuZGF5LGZjLndlZWtzPWZjLnN1bmRheS5yYW5nZSxmYy53ZWVrcy51dGM9ZmMuc3VuZGF5LnV0Yy5yYW5nZSxmYy53ZWVrT2ZZZWFyPWZjLnN1bmRheU9mWWVhcjt2YXIgcGM9eyItIjoiIixfOiIgIiwwOiIwIn0sdmM9L15ccypcZCsvLGRjPS9eJS87dGEubG9jYWxlPWZ1bmN0aW9uKG4pe3JldHVybntudW1iZXJGb3JtYXQ6UHQobiksdGltZUZvcm1hdDpPdChuKX19O3ZhciBtYz10YS5sb2NhbGUoe2RlY2ltYWw6Ii4iLHRob3VzYW5kczoiLCIsZ3JvdXBpbmc6WzNdLGN1cnJlbmN5OlsiJCIsIiJdLGRhdGVUaW1lOiIlYSAlYiAlZSAlWCAlWSIsZGF0ZToiJW0vJWQvJVkiLHRpbWU6IiVIOiVNOiVTIixwZXJpb2RzOlsiQU0iLCJQTSJdLGRheXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLHNob3J0RGF5czpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLG1vbnRoczpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sc2hvcnRNb250aHM6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXX0pO3RhLmZvcm1hdD1tYy5udW1iZXJGb3JtYXQsdGEuZ2VvPXt9LGNlLnByb3RvdHlwZT17czowLHQ6MCxhZGQ6ZnVuY3Rpb24obil7bGUobix0aGlzLnQseWMpLGxlKHljLnMsdGhpcy5zLHRoaXMpLHRoaXMucz90aGlzLnQrPXljLnQ6dGhpcy5zPXljLnR9LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5zPXRoaXMudD0wfSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc319O3ZhciB5Yz1uZXcgY2U7dGEuZ2VvLnN0cmVhbT1mdW5jdGlvbihuLHQpe24mJk1jLmhhc093blByb3BlcnR5KG4udHlwZSk/TWNbbi50eXBlXShuLHQpOnNlKG4sdCl9O3ZhciBNYz17RmVhdHVyZTpmdW5jdGlvbihuLHQpe3NlKG4uZ2VvbWV0cnksdCl9LEZlYXR1cmVDb2xsZWN0aW9uOmZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlPW4uZmVhdHVyZXMscj0tMSx1PWUubGVuZ3RoOysrcjx1OylzZShlW3JdLmdlb21ldHJ5LHQpfX0seGM9e1NwaGVyZTpmdW5jdGlvbihuLHQpe3Quc3BoZXJlKCl9LFBvaW50OmZ1bmN0aW9uKG4sdCl7bj1uLmNvb3JkaW5hdGVzLHQucG9pbnQoblswXSxuWzFdLG5bMl0pfSxNdWx0aVBvaW50OmZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlPW4uY29vcmRpbmF0ZXMscj0tMSx1PWUubGVuZ3RoOysrcjx1OyluPWVbcl0sdC5wb2ludChuWzBdLG5bMV0sblsyXSkKfSxMaW5lU3RyaW5nOmZ1bmN0aW9uKG4sdCl7ZmUobi5jb29yZGluYXRlcyx0LDApfSxNdWx0aUxpbmVTdHJpbmc6ZnVuY3Rpb24obix0KXtmb3IodmFyIGU9bi5jb29yZGluYXRlcyxyPS0xLHU9ZS5sZW5ndGg7KytyPHU7KWZlKGVbcl0sdCwwKX0sUG9seWdvbjpmdW5jdGlvbihuLHQpe2hlKG4uY29vcmRpbmF0ZXMsdCl9LE11bHRpUG9seWdvbjpmdW5jdGlvbihuLHQpe2Zvcih2YXIgZT1uLmNvb3JkaW5hdGVzLHI9LTEsdT1lLmxlbmd0aDsrK3I8dTspaGUoZVtyXSx0KX0sR2VvbWV0cnlDb2xsZWN0aW9uOmZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlPW4uZ2VvbWV0cmllcyxyPS0xLHU9ZS5sZW5ndGg7KytyPHU7KXNlKGVbcl0sdCl9fTt0YS5nZW8uYXJlYT1mdW5jdGlvbihuKXtyZXR1cm4gYmM9MCx0YS5nZW8uc3RyZWFtKG4sd2MpLGJjfTt2YXIgYmMsX2M9bmV3IGNlLHdjPXtzcGhlcmU6ZnVuY3Rpb24oKXtiYys9NCpEYX0scG9pbnQ6eSxsaW5lU3RhcnQ6eSxsaW5lRW5kOnkscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7X2MucmVzZXQoKSx3Yy5saW5lU3RhcnQ9Z2V9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt2YXIgbj0yKl9jO2JjKz0wPm4/NCpEYStuOm4sd2MubGluZVN0YXJ0PXdjLmxpbmVFbmQ9d2MucG9pbnQ9eX19O3RhLmdlby5ib3VuZHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4sdCl7TS5wdXNoKHg9W3M9bixoPW5dKSxmPnQmJihmPXQpLHQ+ZyYmKGc9dCl9ZnVuY3Rpb24gdCh0LGUpe3ZhciByPXBlKFt0KkZhLGUqRmFdKTtpZihtKXt2YXIgdT1kZShtLHIpLGk9W3VbMV0sLXVbMF0sMF0sbz1kZShpLHUpO01lKG8pLG89eGUobyk7dmFyIGM9dC1wLGw9Yz4wPzE6LTEsdj1vWzBdKkhhKmwsZD12YShjKT4xODA7aWYoZF4odj5sKnAmJmwqdD52KSl7dmFyIHk9b1sxXSpIYTt5PmcmJihnPXkpfWVsc2UgaWYodj0odiszNjApJTM2MC0xODAsZF4odj5sKnAmJmwqdD52KSl7dmFyIHk9LW9bMV0qSGE7Zj55JiYoZj15KX1lbHNlIGY+ZSYmKGY9ZSksZT5nJiYoZz1lKTtkP3A+dD9hKHMsdCk+YShzLGgpJiYoaD10KTphKHQsaCk+YShzLGgpJiYocz10KTpoPj1zPyhzPnQmJihzPXQpLHQ+aCYmKGg9dCkpOnQ+cD9hKHMsdCk+YShzLGgpJiYoaD10KTphKHQsaCk+YShzLGgpJiYocz10KX1lbHNlIG4odCxlKTttPXIscD10fWZ1bmN0aW9uIGUoKXtiLnBvaW50PXR9ZnVuY3Rpb24gcigpe3hbMF09cyx4WzFdPWgsYi5wb2ludD1uLG09bnVsbH1mdW5jdGlvbiB1KG4sZSl7aWYobSl7dmFyIHI9bi1wO3krPXZhKHIpPjE4MD9yKyhyPjA/MzYwOi0zNjApOnJ9ZWxzZSB2PW4sZD1lO3djLnBvaW50KG4sZSksdChuLGUpfWZ1bmN0aW9uIGkoKXt3Yy5saW5lU3RhcnQoKX1mdW5jdGlvbiBvKCl7dSh2LGQpLHdjLmxpbmVFbmQoKSx2YSh5KT5UYSYmKHM9LShoPTE4MCkpLHhbMF09cyx4WzFdPWgsbT1udWxsfWZ1bmN0aW9uIGEobix0KXtyZXR1cm4odC09bik8MD90KzM2MDp0fWZ1bmN0aW9uIGMobix0KXtyZXR1cm4gblswXS10WzBdfWZ1bmN0aW9uIGwobix0KXtyZXR1cm4gdFswXTw9dFsxXT90WzBdPD1uJiZuPD10WzFdOm48dFswXXx8dFsxXTxufXZhciBzLGYsaCxnLHAsdixkLG0seSxNLHgsYj17cG9pbnQ6bixsaW5lU3RhcnQ6ZSxsaW5lRW5kOnIscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7Yi5wb2ludD11LGIubGluZVN0YXJ0PWksYi5saW5lRW5kPW8seT0wLHdjLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7d2MucG9seWdvbkVuZCgpLGIucG9pbnQ9bixiLmxpbmVTdGFydD1lLGIubGluZUVuZD1yLDA+X2M/KHM9LShoPTE4MCksZj0tKGc9OTApKTp5PlRhP2c9OTA6LVRhPnkmJihmPS05MCkseFswXT1zLHhbMV09aH19O3JldHVybiBmdW5jdGlvbihuKXtnPWg9LShzPWY9MS8wKSxNPVtdLHRhLmdlby5zdHJlYW0obixiKTt2YXIgdD1NLmxlbmd0aDtpZih0KXtNLnNvcnQoYyk7Zm9yKHZhciBlLHI9MSx1PU1bMF0saT1bdV07dD5yOysrcillPU1bcl0sbChlWzBdLHUpfHxsKGVbMV0sdSk/KGEodVswXSxlWzFdKT5hKHVbMF0sdVsxXSkmJih1WzFdPWVbMV0pLGEoZVswXSx1WzFdKT5hKHVbMF0sdVsxXSkmJih1WzBdPWVbMF0pKTppLnB1c2godT1lKTtmb3IodmFyIG8sZSxwPS0xLzAsdD1pLmxlbmd0aC0xLHI9MCx1PWlbdF07dD49cjt1PWUsKytyKWU9aVtyXSwobz1hKHVbMV0sZVswXSkpPnAmJihwPW8scz1lWzBdLGg9dVsxXSl9cmV0dXJuIE09eD1udWxsLDEvMD09PXN8fDEvMD09PWY/W1swLzAsMC8wXSxbMC8wLDAvMF1dOltbcyxmXSxbaCxnXV19fSgpLHRhLmdlby5jZW50cm9pZD1mdW5jdGlvbihuKXtTYz1rYz1FYz1BYz1OYz1DYz16Yz1xYz1MYz1UYz1SYz0wLHRhLmdlby5zdHJlYW0obixEYyk7dmFyIHQ9TGMsZT1UYyxyPVJjLHU9dCp0K2UqZStyKnI7cmV0dXJuIFJhPnUmJih0PUNjLGU9emMscj1xYyxUYT5rYyYmKHQ9RWMsZT1BYyxyPU5jKSx1PXQqdCtlKmUrcipyLFJhPnUpP1swLzAsMC8wXTpbTWF0aC5hdGFuMihlLHQpKkhhLG50KHIvTWF0aC5zcXJ0KHUpKSpIYV19O3ZhciBTYyxrYyxFYyxBYyxOYyxDYyx6YyxxYyxMYyxUYyxSYyxEYz17c3BoZXJlOnkscG9pbnQ6X2UsbGluZVN0YXJ0OlNlLGxpbmVFbmQ6a2UscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7RGMubGluZVN0YXJ0PUVlfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7RGMubGluZVN0YXJ0PVNlfX0sUGM9TGUoTmUsUGUsamUsWy1EYSwtRGEvMl0pLFVjPTFlOTt0YS5nZW8uY2xpcEV4dGVudD1mdW5jdGlvbigpe3ZhciBuLHQsZSxyLHUsaSxvPXtzdHJlYW06ZnVuY3Rpb24obil7cmV0dXJuIHUmJih1LnZhbGlkPSExKSx1PWkobiksdS52YWxpZD0hMCx1fSxleHRlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9WWUobj0rYVswXVswXSx0PSthWzBdWzFdLGU9K2FbMV1bMF0scj0rYVsxXVsxXSksdSYmKHUudmFsaWQ9ITEsdT1udWxsKSxvKTpbW24sdF0sW2Uscl1dfX07cmV0dXJuIG8uZXh0ZW50KFtbMCwwXSxbOTYwLDUwMF1dKX0sKHRhLmdlby5jb25pY0VxdWFsQXJlYT1mdW5jdGlvbigpe3JldHVybiBJZShaZSl9KS5yYXc9WmUsdGEuZ2VvLmFsYmVycz1mdW5jdGlvbigpe3JldHVybiB0YS5nZW8uY29uaWNFcXVhbEFyZWEoKS5yb3RhdGUoWzk2LDBdKS5jZW50ZXIoWy0uNiwzOC43XSkucGFyYWxsZWxzKFsyOS41LDQ1LjVdKS5zY2FsZSgxMDcwKX0sdGEuZ2VvLmFsYmVyc1VzYT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obil7dmFyIGk9blswXSxvPW5bMV07cmV0dXJuIHQ9bnVsbCxlKGksbyksdHx8KHIoaSxvKSx0KXx8dShpLG8pLHR9dmFyIHQsZSxyLHUsaT10YS5nZW8uYWxiZXJzKCksbz10YS5nZW8uY29uaWNFcXVhbEFyZWEoKS5yb3RhdGUoWzE1NCwwXSkuY2VudGVyKFstMiw1OC41XSkucGFyYWxsZWxzKFs1NSw2NV0pLGE9dGEuZ2VvLmNvbmljRXF1YWxBcmVhKCkucm90YXRlKFsxNTcsMF0pLmNlbnRlcihbLTMsMTkuOV0pLnBhcmFsbGVscyhbOCwxOF0pLGM9e3BvaW50OmZ1bmN0aW9uKG4sZSl7dD1bbixlXX19O3JldHVybiBuLmludmVydD1mdW5jdGlvbihuKXt2YXIgdD1pLnNjYWxlKCksZT1pLnRyYW5zbGF0ZSgpLHI9KG5bMF0tZVswXSkvdCx1PShuWzFdLWVbMV0pL3Q7cmV0dXJuKHU+PS4xMiYmLjIzND51JiZyPj0tLjQyNSYmLS4yMTQ+cj9vOnU+PS4xNjYmJi4yMzQ+dSYmcj49LS4yMTQmJi0uMTE1PnI/YTppKS5pbnZlcnQobil9LG4uc3RyZWFtPWZ1bmN0aW9uKG4pe3ZhciB0PWkuc3RyZWFtKG4pLGU9by5zdHJlYW0obikscj1hLnN0cmVhbShuKTtyZXR1cm57cG9pbnQ6ZnVuY3Rpb24obix1KXt0LnBvaW50KG4sdSksZS5wb2ludChuLHUpLHIucG9pbnQobix1KX0sc3BoZXJlOmZ1bmN0aW9uKCl7dC5zcGhlcmUoKSxlLnNwaGVyZSgpLHIuc3BoZXJlKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe3QubGluZVN0YXJ0KCksZS5saW5lU3RhcnQoKSxyLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dC5saW5lRW5kKCksZS5saW5lRW5kKCksci5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3QucG9seWdvblN0YXJ0KCksZS5wb2x5Z29uU3RhcnQoKSxyLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dC5wb2x5Z29uRW5kKCksZS5wb2x5Z29uRW5kKCksci5wb2x5Z29uRW5kKCl9fX0sbi5wcmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGkucHJlY2lzaW9uKHQpLG8ucHJlY2lzaW9uKHQpLGEucHJlY2lzaW9uKHQpLG4pOmkucHJlY2lzaW9uKCl9LG4uc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGkuc2NhbGUodCksby5zY2FsZSguMzUqdCksYS5zY2FsZSh0KSxuLnRyYW5zbGF0ZShpLnRyYW5zbGF0ZSgpKSk6aS5zY2FsZSgpfSxuLnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gaS50cmFuc2xhdGUoKTt2YXIgbD1pLnNjYWxlKCkscz0rdFswXSxmPSt0WzFdO3JldHVybiBlPWkudHJhbnNsYXRlKHQpLmNsaXBFeHRlbnQoW1tzLS40NTUqbCxmLS4yMzgqbF0sW3MrLjQ1NSpsLGYrLjIzOCpsXV0pLnN0cmVhbShjKS5wb2ludCxyPW8udHJhbnNsYXRlKFtzLS4zMDcqbCxmKy4yMDEqbF0pLmNsaXBFeHRlbnQoW1tzLS40MjUqbCtUYSxmKy4xMipsK1RhXSxbcy0uMjE0KmwtVGEsZisuMjM0KmwtVGFdXSkuc3RyZWFtKGMpLnBvaW50LHU9YS50cmFuc2xhdGUoW3MtLjIwNSpsLGYrLjIxMipsXSkuY2xpcEV4dGVudChbW3MtLjIxNCpsK1RhLGYrLjE2NipsK1RhXSxbcy0uMTE1KmwtVGEsZisuMjM0KmwtVGFdXSkuc3RyZWFtKGMpLnBvaW50LG59LG4uc2NhbGUoMTA3MCl9O3ZhciBqYyxGYyxIYyxPYyxZYyxJYyxaYz17cG9pbnQ6eSxsaW5lU3RhcnQ6eSxsaW5lRW5kOnkscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7RmM9MCxaYy5saW5lU3RhcnQ9VmV9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtaYy5saW5lU3RhcnQ9WmMubGluZUVuZD1aYy5wb2ludD15LGpjKz12YShGYy8yKX19LFZjPXtwb2ludDpYZSxsaW5lU3RhcnQ6eSxsaW5lRW5kOnkscG9seWdvblN0YXJ0OnkscG9seWdvbkVuZDp5fSxYYz17cG9pbnQ6V2UsbGluZVN0YXJ0OkplLGxpbmVFbmQ6R2UscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7WGMubGluZVN0YXJ0PUtlfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7WGMucG9pbnQ9V2UsWGMubGluZVN0YXJ0PUplLFhjLmxpbmVFbmQ9R2V9fTt0YS5nZW8ucGF0aD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obil7cmV0dXJuIG4mJigiZnVuY3Rpb24iPT10eXBlb2YgYSYmaS5wb2ludFJhZGl1cygrYS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLG8mJm8udmFsaWR8fChvPXUoaSkpLHRhLmdlby5zdHJlYW0obixvKSksaS5yZXN1bHQoKX1mdW5jdGlvbiB0KCl7cmV0dXJuIG89bnVsbCxufXZhciBlLHIsdSxpLG8sYT00LjU7cmV0dXJuIG4uYXJlYT1mdW5jdGlvbihuKXtyZXR1cm4gamM9MCx0YS5nZW8uc3RyZWFtKG4sdShaYykpLGpjfSxuLmNlbnRyb2lkPWZ1bmN0aW9uKG4pe3JldHVybiBFYz1BYz1OYz1DYz16Yz1xYz1MYz1UYz1SYz0wLHRhLmdlby5zdHJlYW0obix1KFhjKSksUmM/W0xjL1JjLFRjL1JjXTpxYz9bQ2MvcWMsemMvcWNdOk5jP1tFYy9OYyxBYy9OY106WzAvMCwwLzBdfSxuLmJvdW5kcz1mdW5jdGlvbihuKXtyZXR1cm4gWWM9SWM9LShIYz1PYz0xLzApLHRhLmdlby5zdHJlYW0obix1KFZjKSksW1tIYyxPY10sW1ljLEljXV19LG4ucHJvamVjdGlvbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0oZT1uKT9uLnN0cmVhbXx8dHIobik6RXQsdCgpKTplfSxuLmNvbnRleHQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bnVsbD09KHI9bik/bmV3ICRlOm5ldyBRZShuKSwiZnVuY3Rpb24iIT10eXBlb2YgYSYmaS5wb2ludFJhZGl1cyhhKSx0KCkpOnJ9LG4ucG9pbnRSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDooaS5wb2ludFJhZGl1cygrdCksK3QpLG4pOmF9LG4ucHJvamVjdGlvbih0YS5nZW8uYWxiZXJzVXNhKCkpLmNvbnRleHQobnVsbCl9LHRhLmdlby50cmFuc2Zvcm09ZnVuY3Rpb24obil7cmV0dXJue3N0cmVhbTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgZXIodCk7Zm9yKHZhciByIGluIG4pZVtyXT1uW3JdO3JldHVybiBlfX19LGVyLnByb3RvdHlwZT17cG9pbnQ6ZnVuY3Rpb24obix0KXt0aGlzLnN0cmVhbS5wb2ludChuLHQpfSxzcGhlcmU6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5zcGhlcmUoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ucG9seWdvbkVuZCgpfX0sdGEuZ2VvLnByb2plY3Rpb249dXIsdGEuZ2VvLnByb2plY3Rpb25NdXRhdG9yPWlyLCh0YS5nZW8uZXF1aXJlY3Rhbmd1bGFyPWZ1bmN0aW9uKCl7cmV0dXJuIHVyKGFyKX0pLnJhdz1hci5pbnZlcnQ9YXIsdGEuZ2VvLnJvdGF0aW9uPWZ1bmN0aW9uKG4pe2Z1bmN0aW9uIHQodCl7cmV0dXJuIHQ9bih0WzBdKkZhLHRbMV0qRmEpLHRbMF0qPUhhLHRbMV0qPUhhLHR9cmV0dXJuIG49bHIoblswXSUzNjAqRmEsblsxXSpGYSxuLmxlbmd0aD4yP25bMl0qRmE6MCksdC5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bi5pbnZlcnQodFswXSpGYSx0WzFdKkZhKSx0WzBdKj1IYSx0WzFdKj1IYSx0fSx0fSxjci5pbnZlcnQ9YXIsdGEuZ2VvLmNpcmNsZT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2Ygcj9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpyLHQ9bHIoLW5bMF0qRmEsLW5bMV0qRmEsMCkuaW52ZXJ0LHU9W107cmV0dXJuIGUobnVsbCxudWxsLDEse3BvaW50OmZ1bmN0aW9uKG4sZSl7dS5wdXNoKG49dChuLGUpKSxuWzBdKj1IYSxuWzFdKj1IYX19KSx7dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6W3VdfX12YXIgdCxlLHI9WzAsMF0sdT02O3JldHVybiBuLm9yaWdpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG4pOnJ9LG4uYW5nbGU9ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9Z3IoKHQ9K3IpKkZhLHUqRmEpLG4pOnR9LG4ucHJlY2lzaW9uPWZ1bmN0aW9uKHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWdyKHQqRmEsKHU9K3IpKkZhKSxuKTp1fSxuLmFuZ2xlKDkwKX0sdGEuZ2VvLmRpc3RhbmNlPWZ1bmN0aW9uKG4sdCl7dmFyIGUscj0odFswXS1uWzBdKSpGYSx1PW5bMV0qRmEsaT10WzFdKkZhLG89TWF0aC5zaW4ociksYT1NYXRoLmNvcyhyKSxjPU1hdGguc2luKHUpLGw9TWF0aC5jb3ModSkscz1NYXRoLnNpbihpKSxmPU1hdGguY29zKGkpO3JldHVybiBNYXRoLmF0YW4yKE1hdGguc3FydCgoZT1mKm8pKmUrKGU9bCpzLWMqZiphKSplKSxjKnMrbCpmKmEpfSx0YS5nZW8uZ3JhdGljdWxlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbigpe3JldHVybnt0eXBlOiJNdWx0aUxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOnQoKX19ZnVuY3Rpb24gdCgpe3JldHVybiB0YS5yYW5nZShNYXRoLmNlaWwoaS9kKSpkLHUsZCkubWFwKGgpLmNvbmNhdCh0YS5yYW5nZShNYXRoLmNlaWwobC9tKSptLGMsbSkubWFwKGcpKS5jb25jYXQodGEucmFuZ2UoTWF0aC5jZWlsKHIvcCkqcCxlLHApLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4gdmEobiVkKT5UYX0pLm1hcChzKSkuY29uY2F0KHRhLnJhbmdlKE1hdGguY2VpbChhL3YpKnYsbyx2KS5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJuIHZhKG4lbSk+VGF9KS5tYXAoZikpfXZhciBlLHIsdSxpLG8sYSxjLGwscyxmLGgsZyxwPTEwLHY9cCxkPTkwLG09MzYwLHk9Mi41O3JldHVybiBuLmxpbmVzPWZ1bmN0aW9uKCl7cmV0dXJuIHQoKS5tYXAoZnVuY3Rpb24obil7cmV0dXJue3R5cGU6IkxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOm59fSl9LG4ub3V0bGluZT1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczpbaChpKS5jb25jYXQoZyhjKS5zbGljZSgxKSxoKHUpLnJldmVyc2UoKS5zbGljZSgxKSxnKGwpLnJldmVyc2UoKS5zbGljZSgxKSldfX0sbi5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bi5tYWpvckV4dGVudCh0KS5taW5vckV4dGVudCh0KTpuLm1pbm9yRXh0ZW50KCl9LG4ubWFqb3JFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9K3RbMF1bMF0sdT0rdFsxXVswXSxsPSt0WzBdWzFdLGM9K3RbMV1bMV0saT51JiYodD1pLGk9dSx1PXQpLGw+YyYmKHQ9bCxsPWMsYz10KSxuLnByZWNpc2lvbih5KSk6W1tpLGxdLFt1LGNdXX0sbi5taW5vckV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0rdFswXVswXSxlPSt0WzFdWzBdLGE9K3RbMF1bMV0sbz0rdFsxXVsxXSxyPmUmJih0PXIscj1lLGU9dCksYT5vJiYodD1hLGE9byxvPXQpLG4ucHJlY2lzaW9uKHkpKTpbW3IsYV0sW2Usb11dfSxuLnN0ZXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bi5tYWpvclN0ZXAodCkubWlub3JTdGVwKHQpOm4ubWlub3JTdGVwKCl9LG4ubWFqb3JTdGVwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPSt0WzBdLG09K3RbMV0sbik6W2QsbV19LG4ubWlub3JTdGVwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPSt0WzBdLHY9K3RbMV0sbik6W3Asdl19LG4ucHJlY2lzaW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PSt0LHM9dnIoYSxvLDkwKSxmPWRyKHIsZSx5KSxoPXZyKGwsYyw5MCksZz1kcihpLHUseSksbik6eX0sbi5tYWpvckV4dGVudChbWy0xODAsLTkwK1RhXSxbMTgwLDkwLVRhXV0pLm1pbm9yRXh0ZW50KFtbLTE4MCwtODAtVGFdLFsxODAsODArVGFdXSl9LHRhLmdlby5ncmVhdEFyYz1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oKXtyZXR1cm57dHlwZToiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6W3R8fHIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGV8fHUuYXBwbHkodGhpcyxhcmd1bWVudHMpXX19dmFyIHQsZSxyPW1yLHU9eXI7cmV0dXJuIG4uZGlzdGFuY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGEuZ2VvLmRpc3RhbmNlKHR8fHIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGV8fHUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sbi5zb3VyY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ZSx0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP251bGw6ZSxuKTpyfSxuLnRhcmdldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT10LGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/bnVsbDp0LG4pOnV9LG4ucHJlY2lzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bjowfSxufSx0YS5nZW8uaW50ZXJwb2xhdGU9ZnVuY3Rpb24obix0KXtyZXR1cm4gTXIoblswXSpGYSxuWzFdKkZhLHRbMF0qRmEsdFsxXSpGYSl9LHRhLmdlby5sZW5ndGg9ZnVuY3Rpb24obil7cmV0dXJuICRjPTAsdGEuZ2VvLnN0cmVhbShuLEJjKSwkY307dmFyICRjLEJjPXtzcGhlcmU6eSxwb2ludDp5LGxpbmVTdGFydDp4cixsaW5lRW5kOnkscG9seWdvblN0YXJ0OnkscG9seWdvbkVuZDp5fSxXYz1icihmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5zcXJ0KDIvKDErbikpfSxmdW5jdGlvbihuKXtyZXR1cm4gMipNYXRoLmFzaW4obi8yKX0pOyh0YS5nZW8uYXppbXV0aGFsRXF1YWxBcmVhPWZ1bmN0aW9uKCl7cmV0dXJuIHVyKFdjKX0pLnJhdz1XYzt2YXIgSmM9YnIoZnVuY3Rpb24obil7dmFyIHQ9TWF0aC5hY29zKG4pO3JldHVybiB0JiZ0L01hdGguc2luKHQpfSxFdCk7KHRhLmdlby5hemltdXRoYWxFcXVpZGlzdGFudD1mdW5jdGlvbigpe3JldHVybiB1cihKYyl9KS5yYXc9SmMsKHRhLmdlby5jb25pY0NvbmZvcm1hbD1mdW5jdGlvbigpe3JldHVybiBJZShfcil9KS5yYXc9X3IsKHRhLmdlby5jb25pY0VxdWlkaXN0YW50PWZ1bmN0aW9uKCl7cmV0dXJuIEllKHdyKX0pLnJhdz13cjt2YXIgR2M9YnIoZnVuY3Rpb24obil7cmV0dXJuIDEvbn0sTWF0aC5hdGFuKTsodGEuZ2VvLmdub21vbmljPWZ1bmN0aW9uKCl7cmV0dXJuIHVyKEdjKX0pLnJhdz1HYyxTci5pbnZlcnQ9ZnVuY3Rpb24obix0KXtyZXR1cm5bbiwyKk1hdGguYXRhbihNYXRoLmV4cCh0KSktamFdfSwodGEuZ2VvLm1lcmNhdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIGtyKFNyKX0pLnJhdz1Tcjt2YXIgS2M9YnIoZnVuY3Rpb24oKXtyZXR1cm4gMX0sTWF0aC5hc2luKTsodGEuZ2VvLm9ydGhvZ3JhcGhpYz1mdW5jdGlvbigpe3JldHVybiB1cihLYyl9KS5yYXc9S2M7dmFyIFFjPWJyKGZ1bmN0aW9uKG4pe3JldHVybiAxLygxK24pfSxmdW5jdGlvbihuKXtyZXR1cm4gMipNYXRoLmF0YW4obil9KTsodGEuZ2VvLnN0ZXJlb2dyYXBoaWM9ZnVuY3Rpb24oKXtyZXR1cm4gdXIoUWMpfSkucmF3PVFjLEVyLmludmVydD1mdW5jdGlvbihuLHQpe3JldHVyblstdCwyKk1hdGguYXRhbihNYXRoLmV4cChuKSktamFdfSwodGEuZ2VvLnRyYW5zdmVyc2VNZXJjYXRvcj1mdW5jdGlvbigpe3ZhciBuPWtyKEVyKSx0PW4uY2VudGVyLGU9bi5yb3RhdGU7cmV0dXJuIG4uY2VudGVyPWZ1bmN0aW9uKG4pe3JldHVybiBuP3QoWy1uWzFdLG5bMF1dKToobj10KCksW25bMV0sLW5bMF1dKX0sbi5yb3RhdGU9ZnVuY3Rpb24obil7cmV0dXJuIG4/ZShbblswXSxuWzFdLG4ubGVuZ3RoPjI/blsyXSs5MDo5MF0pOihuPWUoKSxbblswXSxuWzFdLG5bMl0tOTBdKX0sZShbMCwwLDkwXSl9KS5yYXc9RXIsdGEuZ2VvbT17fSx0YS5nZW9tLmh1bGw9ZnVuY3Rpb24obil7ZnVuY3Rpb24gdChuKXtpZihuLmxlbmd0aDwzKXJldHVybltdO3ZhciB0LHU9a3QoZSksaT1rdChyKSxvPW4ubGVuZ3RoLGE9W10sYz1bXTtmb3IodD0wO28+dDt0KyspYS5wdXNoKFsrdS5jYWxsKHRoaXMsblt0XSx0KSwraS5jYWxsKHRoaXMsblt0XSx0KSx0XSk7Zm9yKGEuc29ydCh6ciksdD0wO28+dDt0KyspYy5wdXNoKFthW3RdWzBdLC1hW3RdWzFdXSk7dmFyIGw9Q3IoYSkscz1DcihjKSxmPXNbMF09PT1sWzBdLGg9c1tzLmxlbmd0aC0xXT09PWxbbC5sZW5ndGgtMV0sZz1bXTtmb3IodD1sLmxlbmd0aC0xO3Q+PTA7LS10KWcucHVzaChuW2FbbFt0XV1bMl1dKTtmb3IodD0rZjt0PHMubGVuZ3RoLWg7Kyt0KWcucHVzaChuW2Fbc1t0XV1bMl1dKTtyZXR1cm4gZ312YXIgZT1BcixyPU5yO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3Qobik6KHQueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1uLHQpOmV9LHQueT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1uLHQpOnJ9LHQpfSx0YS5nZW9tLnBvbHlnb249ZnVuY3Rpb24obil7cmV0dXJuIHhhKG4sbmwpLG59O3ZhciBubD10YS5nZW9tLnBvbHlnb24ucHJvdG90eXBlPVtdO25sLmFyZWE9ZnVuY3Rpb24oKXtmb3IodmFyIG4sdD0tMSxlPXRoaXMubGVuZ3RoLHI9dGhpc1tlLTFdLHU9MDsrK3Q8ZTspbj1yLHI9dGhpc1t0XSx1Kz1uWzFdKnJbMF0tblswXSpyWzFdO3JldHVybi41KnV9LG5sLmNlbnRyb2lkPWZ1bmN0aW9uKG4pe3ZhciB0LGUscj0tMSx1PXRoaXMubGVuZ3RoLGk9MCxvPTAsYT10aGlzW3UtMV07Zm9yKGFyZ3VtZW50cy5sZW5ndGh8fChuPS0xLyg2KnRoaXMuYXJlYSgpKSk7KytyPHU7KXQ9YSxhPXRoaXNbcl0sZT10WzBdKmFbMV0tYVswXSp0WzFdLGkrPSh0WzBdK2FbMF0pKmUsbys9KHRbMV0rYVsxXSkqZTtyZXR1cm5baSpuLG8qbl19LG5sLmNsaXA9ZnVuY3Rpb24obil7Zm9yKHZhciB0LGUscix1LGksbyxhPVRyKG4pLGM9LTEsbD10aGlzLmxlbmd0aC1Ucih0aGlzKSxzPXRoaXNbbC0xXTsrK2M8bDspe2Zvcih0PW4uc2xpY2UoKSxuLmxlbmd0aD0wLHU9dGhpc1tjXSxpPXRbKHI9dC5sZW5ndGgtYSktMV0sZT0tMTsrK2U8cjspbz10W2VdLHFyKG8scyx1KT8ocXIoaSxzLHUpfHxuLnB1c2goTHIoaSxvLHMsdSkpLG4ucHVzaChvKSk6cXIoaSxzLHUpJiZuLnB1c2goTHIoaSxvLHMsdSkpLGk9bzthJiZuLnB1c2goblswXSkscz11fXJldHVybiBufTt2YXIgdGwsZWwscmwsdWwsaWwsb2w9W10sYWw9W107T3IucHJvdG90eXBlLnByZXBhcmU9ZnVuY3Rpb24oKXtmb3IodmFyIG4sdD10aGlzLmVkZ2VzLGU9dC5sZW5ndGg7ZS0tOyluPXRbZV0uZWRnZSxuLmImJm4uYXx8dC5zcGxpY2UoZSwxKTtyZXR1cm4gdC5zb3J0KElyKSx0Lmxlbmd0aH0sUXIucHJvdG90eXBlPXtzdGFydDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZ2UubD09PXRoaXMuc2l0ZT90aGlzLmVkZ2UuYTp0aGlzLmVkZ2UuYn0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRnZS5sPT09dGhpcy5zaXRlP3RoaXMuZWRnZS5iOnRoaXMuZWRnZS5hfX0sbnUucHJvdG90eXBlPXtpbnNlcnQ6ZnVuY3Rpb24obix0KXt2YXIgZSxyLHU7aWYobil7aWYodC5QPW4sdC5OPW4uTixuLk4mJihuLk4uUD10KSxuLk49dCxuLlIpe2ZvcihuPW4uUjtuLkw7KW49bi5MO24uTD10fWVsc2Ugbi5SPXQ7ZT1ufWVsc2UgdGhpcy5fPyhuPXV1KHRoaXMuXyksdC5QPW51bGwsdC5OPW4sbi5QPW4uTD10LGU9bik6KHQuUD10Lk49bnVsbCx0aGlzLl89dCxlPW51bGwpO2Zvcih0Lkw9dC5SPW51bGwsdC5VPWUsdC5DPSEwLG49dDtlJiZlLkM7KXI9ZS5VLGU9PT1yLkw/KHU9ci5SLHUmJnUuQz8oZS5DPXUuQz0hMSxyLkM9ITAsbj1yKToobj09PWUuUiYmKGV1KHRoaXMsZSksbj1lLGU9bi5VKSxlLkM9ITEsci5DPSEwLHJ1KHRoaXMscikpKToodT1yLkwsdSYmdS5DPyhlLkM9dS5DPSExLHIuQz0hMCxuPXIpOihuPT09ZS5MJiYocnUodGhpcyxlKSxuPWUsZT1uLlUpLGUuQz0hMSxyLkM9ITAsZXUodGhpcyxyKSkpLGU9bi5VO3RoaXMuXy5DPSExfSxyZW1vdmU6ZnVuY3Rpb24obil7bi5OJiYobi5OLlA9bi5QKSxuLlAmJihuLlAuTj1uLk4pLG4uTj1uLlA9bnVsbDt2YXIgdCxlLHIsdT1uLlUsaT1uLkwsbz1uLlI7aWYoZT1pP28/dXUobyk6aTpvLHU/dS5MPT09bj91Lkw9ZTp1LlI9ZTp0aGlzLl89ZSxpJiZvPyhyPWUuQyxlLkM9bi5DLGUuTD1pLGkuVT1lLGUhPT1vPyh1PWUuVSxlLlU9bi5VLG49ZS5SLHUuTD1uLGUuUj1vLG8uVT1lKTooZS5VPXUsdT1lLG49ZS5SKSk6KHI9bi5DLG49ZSksbiYmKG4uVT11KSwhcil7aWYobiYmbi5DKXJldHVybiBuLkM9ITEsdm9pZCAwO2Rve2lmKG49PT10aGlzLl8pYnJlYWs7aWYobj09PXUuTCl7aWYodD11LlIsdC5DJiYodC5DPSExLHUuQz0hMCxldSh0aGlzLHUpLHQ9dS5SKSx0LkwmJnQuTC5DfHx0LlImJnQuUi5DKXt0LlImJnQuUi5DfHwodC5MLkM9ITEsdC5DPSEwLHJ1KHRoaXMsdCksdD11LlIpLHQuQz11LkMsdS5DPXQuUi5DPSExLGV1KHRoaXMsdSksbj10aGlzLl87YnJlYWt9fWVsc2UgaWYodD11LkwsdC5DJiYodC5DPSExLHUuQz0hMCxydSh0aGlzLHUpLHQ9dS5MKSx0LkwmJnQuTC5DfHx0LlImJnQuUi5DKXt0LkwmJnQuTC5DfHwodC5SLkM9ITEsdC5DPSEwLGV1KHRoaXMsdCksdD11LkwpLHQuQz11LkMsdS5DPXQuTC5DPSExLHJ1KHRoaXMsdSksbj10aGlzLl87YnJlYWt9dC5DPSEwLG49dSx1PXUuVX13aGlsZSghbi5DKTtuJiYobi5DPSExKX19fSx0YS5nZW9tLnZvcm9ub2k9ZnVuY3Rpb24obil7ZnVuY3Rpb24gdChuKXt2YXIgdD1uZXcgQXJyYXkobi5sZW5ndGgpLHI9YVswXVswXSx1PWFbMF1bMV0saT1hWzFdWzBdLG89YVsxXVsxXTtyZXR1cm4gaXUoZShuKSxhKS5jZWxscy5mb3JFYWNoKGZ1bmN0aW9uKGUsYSl7dmFyIGM9ZS5lZGdlcyxsPWUuc2l0ZSxzPXRbYV09Yy5sZW5ndGg/Yy5tYXAoZnVuY3Rpb24obil7dmFyIHQ9bi5zdGFydCgpO3JldHVyblt0LngsdC55XX0pOmwueD49ciYmbC54PD1pJiZsLnk+PXUmJmwueTw9bz9bW3Isb10sW2ksb10sW2ksdV0sW3IsdV1dOltdO3MucG9pbnQ9blthXX0pLHR9ZnVuY3Rpb24gZShuKXtyZXR1cm4gbi5tYXAoZnVuY3Rpb24obix0KXtyZXR1cm57eDpNYXRoLnJvdW5kKGkobix0KS9UYSkqVGEseTpNYXRoLnJvdW5kKG8obix0KS9UYSkqVGEsaTp0fX0pfXZhciByPUFyLHU9TnIsaT1yLG89dSxhPWNsO3JldHVybiBuP3Qobik6KHQubGlua3M9ZnVuY3Rpb24obil7cmV0dXJuIGl1KGUobikpLmVkZ2VzLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4gbi5sJiZuLnJ9KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJue3NvdXJjZTpuW3QubC5pXSx0YXJnZXQ6blt0LnIuaV19fSl9LHQudHJpYW5nbGVzPWZ1bmN0aW9uKG4pe3ZhciB0PVtdO3JldHVybiBpdShlKG4pKS5jZWxscy5mb3JFYWNoKGZ1bmN0aW9uKGUscil7Zm9yKHZhciB1LGksbz1lLnNpdGUsYT1lLmVkZ2VzLnNvcnQoSXIpLGM9LTEsbD1hLmxlbmd0aCxzPWFbbC0xXS5lZGdlLGY9cy5sPT09bz9zLnI6cy5sOysrYzxsOyl1PXMsaT1mLHM9YVtjXS5lZGdlLGY9cy5sPT09bz9zLnI6cy5sLHI8aS5pJiZyPGYuaSYmYXUobyxpLGYpPDAmJnQucHVzaChbbltyXSxuW2kuaV0sbltmLmldXSl9KSx0fSx0Lng9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9a3Qocj1uKSx0KTpyfSx0Lnk9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89a3QodT1uKSx0KTp1fSx0LmNsaXBFeHRlbnQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9bnVsbD09bj9jbDpuLHQpOmE9PT1jbD9udWxsOmF9LHQuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90LmNsaXBFeHRlbnQobiYmW1swLDBdLG5dKTphPT09Y2w/bnVsbDphJiZhWzFdfSx0KX07dmFyIGNsPVtbLTFlNiwtMWU2XSxbMWU2LDFlNl1dO3RhLmdlb20uZGVsYXVuYXk9ZnVuY3Rpb24obil7cmV0dXJuIHRhLmdlb20udm9yb25vaSgpLnRyaWFuZ2xlcyhuKX0sdGEuZ2VvbS5xdWFkdHJlZT1mdW5jdGlvbihuLHQsZSxyLHUpe2Z1bmN0aW9uIGkobil7ZnVuY3Rpb24gaShuLHQsZSxyLHUsaSxvLGEpe2lmKCFpc05hTihlKSYmIWlzTmFOKHIpKWlmKG4ubGVhZil7dmFyIGM9bi54LHM9bi55O2lmKG51bGwhPWMpaWYodmEoYy1lKSt2YShzLXIpPC4wMSlsKG4sdCxlLHIsdSxpLG8sYSk7ZWxzZXt2YXIgZj1uLnBvaW50O24ueD1uLnk9bi5wb2ludD1udWxsLGwobixmLGMscyx1LGksbyxhKSxsKG4sdCxlLHIsdSxpLG8sYSl9ZWxzZSBuLng9ZSxuLnk9cixuLnBvaW50PXR9ZWxzZSBsKG4sdCxlLHIsdSxpLG8sYSl9ZnVuY3Rpb24gbChuLHQsZSxyLHUsbyxhLGMpe3ZhciBsPS41Kih1K2EpLHM9LjUqKG8rYyksZj1lPj1sLGg9cj49cyxnPWg8PDF8ZjtuLmxlYWY9ITEsbj1uLm5vZGVzW2ddfHwobi5ub2Rlc1tnXT1zdSgpKSxmP3U9bDphPWwsaD9vPXM6Yz1zLGkobix0LGUscix1LG8sYSxjKX12YXIgcyxmLGgsZyxwLHYsZCxtLHksTT1rdChhKSx4PWt0KGMpO2lmKG51bGwhPXQpdj10LGQ9ZSxtPXIseT11O2Vsc2UgaWYobT15PS0odj1kPTEvMCksZj1bXSxoPVtdLHA9bi5sZW5ndGgsbylmb3IoZz0wO3A+ZzsrK2cpcz1uW2ddLHMueDx2JiYodj1zLngpLHMueTxkJiYoZD1zLnkpLHMueD5tJiYobT1zLngpLHMueT55JiYoeT1zLnkpLGYucHVzaChzLngpLGgucHVzaChzLnkpO2Vsc2UgZm9yKGc9MDtwPmc7KytnKXt2YXIgYj0rTShzPW5bZ10sZyksXz0reChzLGcpO3Y+YiYmKHY9YiksZD5fJiYoZD1fKSxiPm0mJihtPWIpLF8+eSYmKHk9XyksZi5wdXNoKGIpLGgucHVzaChfKX12YXIgdz1tLXYsUz15LWQ7dz5TP3k9ZCt3Om09ditTO3ZhciBrPXN1KCk7aWYoay5hZGQ9ZnVuY3Rpb24obil7aShrLG4sK00obiwrK2cpLCt4KG4sZyksdixkLG0seSl9LGsudmlzaXQ9ZnVuY3Rpb24obil7ZnUobixrLHYsZCxtLHkpfSxrLmZpbmQ9ZnVuY3Rpb24obil7cmV0dXJuIGh1KGssblswXSxuWzFdLHYsZCxtLHkpfSxnPS0xLG51bGw9PXQpe2Zvcig7KytnPHA7KWkoayxuW2ddLGZbZ10saFtnXSx2LGQsbSx5KTstLWd9ZWxzZSBuLmZvckVhY2goay5hZGQpO3JldHVybiBmPWg9bj1zPW51bGwsa312YXIgbyxhPUFyLGM9TnI7cmV0dXJuKG89YXJndW1lbnRzLmxlbmd0aCk/KGE9Y3UsYz1sdSwzPT09byYmKHU9ZSxyPXQsZT10PTApLGkobikpOihpLng9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9bixpKTphfSxpLnk9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9bixpKTpjfSxpLmV4dGVudD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09bj90PWU9cj11PW51bGw6KHQ9K25bMF1bMF0sZT0rblswXVsxXSxyPStuWzFdWzBdLHU9K25bMV1bMV0pLGkpOm51bGw9PXQ/bnVsbDpbW3QsZV0sW3IsdV1dfSxpLnNpemU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PW4/dD1lPXI9dT1udWxsOih0PWU9MCxyPStuWzBdLHU9K25bMV0pLGkpOm51bGw9PXQ/bnVsbDpbci10LHUtZV19LGkpfSx0YS5pbnRlcnBvbGF0ZVJnYj1ndSx0YS5pbnRlcnBvbGF0ZU9iamVjdD1wdSx0YS5pbnRlcnBvbGF0ZU51bWJlcj12dSx0YS5pbnRlcnBvbGF0ZVN0cmluZz1kdTt2YXIgbGw9L1stK10/KD86XGQrXC4/XGQqfFwuP1xkKykoPzpbZUVdWy0rXT9cZCspPy9nLHNsPW5ldyBSZWdFeHAobGwuc291cmNlLCJnIik7dGEuaW50ZXJwb2xhdGU9bXUsdGEuaW50ZXJwb2xhdG9ycz1bZnVuY3Rpb24obix0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4oInN0cmluZyI9PT1lP3RjLmhhcyh0KXx8L14oI3xyZ2JcKHxoc2xcKCkvLnRlc3QodCk/Z3U6ZHU6dCBpbnN0YW5jZW9mIGl0P2d1OkFycmF5LmlzQXJyYXkodCk/eXU6Im9iamVjdCI9PT1lJiZpc05hTih0KT9wdTp2dSkobix0KX1dLHRhLmludGVycG9sYXRlQXJyYXk9eXU7dmFyIGZsPWZ1bmN0aW9uKCl7cmV0dXJuIEV0fSxobD10YS5tYXAoe2xpbmVhcjpmbCxwb2x5Omt1LHF1YWQ6ZnVuY3Rpb24oKXtyZXR1cm4gX3V9LGN1YmljOmZ1bmN0aW9uKCl7cmV0dXJuIHd1fSxzaW46ZnVuY3Rpb24oKXtyZXR1cm4gRXV9LGV4cDpmdW5jdGlvbigpe3JldHVybiBBdX0sY2lyY2xlOmZ1bmN0aW9uKCl7cmV0dXJuIE51fSxlbGFzdGljOkN1LGJhY2s6enUsYm91bmNlOmZ1bmN0aW9uKCl7cmV0dXJuIHF1fX0pLGdsPXRhLm1hcCh7ImluIjpFdCxvdXQ6eHUsImluLW91dCI6YnUsIm91dC1pbiI6ZnVuY3Rpb24obil7cmV0dXJuIGJ1KHh1KG4pKX19KTt0YS5lYXNlPWZ1bmN0aW9uKG4pe3ZhciB0PW4uaW5kZXhPZigiLSIpLGU9dD49MD9uLnNsaWNlKDAsdCk6bixyPXQ+PTA/bi5zbGljZSh0KzEpOiJpbiI7cmV0dXJuIGU9aGwuZ2V0KGUpfHxmbCxyPWdsLmdldChyKXx8RXQsTXUocihlLmFwcGx5KG51bGwsZWEuY2FsbChhcmd1bWVudHMsMSkpKSl9LHRhLmludGVycG9sYXRlSGNsPUx1LHRhLmludGVycG9sYXRlSHNsPVR1LHRhLmludGVycG9sYXRlTGFiPVJ1LHRhLmludGVycG9sYXRlUm91bmQ9RHUsdGEudHJhbnNmb3JtPWZ1bmN0aW9uKG4pe3ZhciB0PXVhLmNyZWF0ZUVsZW1lbnROUyh0YS5ucy5wcmVmaXguc3ZnLCJnIik7cmV0dXJuKHRhLnRyYW5zZm9ybT1mdW5jdGlvbihuKXtpZihudWxsIT1uKXt0LnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIixuKTt2YXIgZT10LnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCl9cmV0dXJuIG5ldyBQdShlP2UubWF0cml4OnBsKX0pKG4pfSxQdS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4idHJhbnNsYXRlKCIrdGhpcy50cmFuc2xhdGUrIilyb3RhdGUoIit0aGlzLnJvdGF0ZSsiKXNrZXdYKCIrdGhpcy5za2V3KyIpc2NhbGUoIit0aGlzLnNjYWxlKyIpIn07dmFyIHBsPXthOjEsYjowLGM6MCxkOjEsZTowLGY6MH07dGEuaW50ZXJwb2xhdGVUcmFuc2Zvcm09SHUsdGEubGF5b3V0PXt9LHRhLmxheW91dC5idW5kbGU9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24obil7Zm9yKHZhciB0PVtdLGU9LTEscj1uLmxlbmd0aDsrK2U8cjspdC5wdXNoKEl1KG5bZV0pKTtyZXR1cm4gdH19LHRhLmxheW91dC5jaG9yZD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oKXt2YXIgbixsLGYsaCxnLHA9e30sdj1bXSxkPXRhLnJhbmdlKGkpLG09W107Zm9yKGU9W10scj1bXSxuPTAsaD0tMTsrK2g8aTspe2ZvcihsPTAsZz0tMTsrK2c8aTspbCs9dVtoXVtnXTt2LnB1c2gobCksbS5wdXNoKHRhLnJhbmdlKGkpKSxuKz1sfWZvcihvJiZkLnNvcnQoZnVuY3Rpb24obix0KXtyZXR1cm4gbyh2W25dLHZbdF0pfSksYSYmbS5mb3JFYWNoKGZ1bmN0aW9uKG4sdCl7bi5zb3J0KGZ1bmN0aW9uKG4sZSl7cmV0dXJuIGEodVt0XVtuXSx1W3RdW2VdKX0pfSksbj0oUGEtcyppKS9uLGw9MCxoPS0xOysraDxpOyl7Zm9yKGY9bCxnPS0xOysrZzxpOyl7dmFyIHk9ZFtoXSxNPW1beV1bZ10seD11W3ldW01dLGI9bCxfPWwrPXgqbjtwW3krIi0iK01dPXtpbmRleDp5LHN1YmluZGV4Ok0sc3RhcnRBbmdsZTpiLGVuZEFuZ2xlOl8sdmFsdWU6eH19clt5XT17aW5kZXg6eSxzdGFydEFuZ2xlOmYsZW5kQW5nbGU6bCx2YWx1ZToobC1mKS9ufSxsKz1zfWZvcihoPS0xOysraDxpOylmb3IoZz1oLTE7KytnPGk7KXt2YXIgdz1wW2grIi0iK2ddLFM9cFtnKyItIitoXTsody52YWx1ZXx8Uy52YWx1ZSkmJmUucHVzaCh3LnZhbHVlPFMudmFsdWU/e3NvdXJjZTpTLHRhcmdldDp3fTp7c291cmNlOncsdGFyZ2V0OlN9KX1jJiZ0KCl9ZnVuY3Rpb24gdCgpe2Uuc29ydChmdW5jdGlvbihuLHQpe3JldHVybiBjKChuLnNvdXJjZS52YWx1ZStuLnRhcmdldC52YWx1ZSkvMiwodC5zb3VyY2UudmFsdWUrdC50YXJnZXQudmFsdWUpLzIpfSl9dmFyIGUscix1LGksbyxhLGMsbD17fSxzPTA7cmV0dXJuIGwubWF0cml4PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSh1PW4pJiZ1Lmxlbmd0aCxlPXI9bnVsbCxsKTp1fSxsLnBhZGRpbmc9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9bixlPXI9bnVsbCxsKTpzfSxsLnNvcnRHcm91cHM9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89bixlPXI9bnVsbCxsKTpvfSxsLnNvcnRTdWJncm91cHM9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9bixlPW51bGwsbCk6YX0sbC5zb3J0Q2hvcmRzPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPW4sZSYmdCgpLGwpOmN9LGwuY2hvcmRzPWZ1bmN0aW9uKCl7cmV0dXJuIGV8fG4oKSxlfSxsLmdyb3Vwcz1mdW5jdGlvbigpe3JldHVybiByfHxuKCkscn0sbH0sdGEubGF5b3V0LmZvcmNlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuKXtyZXR1cm4gZnVuY3Rpb24odCxlLHIsdSl7aWYodC5wb2ludCE9PW4pe3ZhciBpPXQuY3gtbi54LG89dC5jeS1uLnksYT11LWUsYz1pKmkrbypvO2lmKGM+YSphL2Qpe2lmKHA+Yyl7dmFyIGw9dC5jaGFyZ2UvYztuLnB4LT1pKmwsbi5weS09bypsfXJldHVybiEwfWlmKHQucG9pbnQmJmMmJnA+Yyl7dmFyIGw9dC5wb2ludENoYXJnZS9jO24ucHgtPWkqbCxuLnB5LT1vKmx9fXJldHVybiF0LmNoYXJnZX19ZnVuY3Rpb24gdChuKXtuLnB4PXRhLmV2ZW50Lngsbi5weT10YS5ldmVudC55LGEucmVzdW1lKCl9dmFyIGUscix1LGksbyxhPXt9LGM9dGEuZGlzcGF0Y2goInN0YXJ0IiwidGljayIsImVuZCIpLGw9WzEsMV0scz0uOSxmPXZsLGg9ZGwsZz0tMzAscD1tbCx2PS4xLGQ9LjY0LG09W10seT1bXTtyZXR1cm4gYS50aWNrPWZ1bmN0aW9uKCl7aWYoKHIqPS45OSk8LjAwNSlyZXR1cm4gYy5lbmQoe3R5cGU6ImVuZCIsYWxwaGE6cj0wfSksITA7dmFyIHQsZSxhLGYsaCxwLGQsTSx4LGI9bS5sZW5ndGgsXz15Lmxlbmd0aDtmb3IoZT0wO18+ZTsrK2UpYT15W2VdLGY9YS5zb3VyY2UsaD1hLnRhcmdldCxNPWgueC1mLngseD1oLnktZi55LChwPU0qTSt4KngpJiYocD1yKmlbZV0qKChwPU1hdGguc3FydChwKSktdVtlXSkvcCxNKj1wLHgqPXAsaC54LT1NKihkPWYud2VpZ2h0LyhoLndlaWdodCtmLndlaWdodCkpLGgueS09eCpkLGYueCs9TSooZD0xLWQpLGYueSs9eCpkKTtpZigoZD1yKnYpJiYoTT1sWzBdLzIseD1sWzFdLzIsZT0tMSxkKSlmb3IoOysrZTxiOylhPW1bZV0sYS54Kz0oTS1hLngpKmQsYS55Kz0oeC1hLnkpKmQ7aWYoZylmb3IoSnUodD10YS5nZW9tLnF1YWR0cmVlKG0pLHIsbyksZT0tMTsrK2U8YjspKGE9bVtlXSkuZml4ZWR8fHQudmlzaXQobihhKSk7Zm9yKGU9LTE7KytlPGI7KWE9bVtlXSxhLmZpeGVkPyhhLng9YS5weCxhLnk9YS5weSk6KGEueC09KGEucHgtKGEucHg9YS54KSkqcyxhLnktPShhLnB5LShhLnB5PWEueSkpKnMpO2MudGljayh7dHlwZToidGljayIsYWxwaGE6cn0pfSxhLm5vZGVzPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPW4sYSk6bX0sYS5saW5rcz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT1uLGEpOnl9LGEuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD1uLGEpOmx9LGEubGlua0Rpc3RhbmNlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246K24sYSk6Zn0sYS5kaXN0YW5jZT1hLmxpbmtEaXN0YW5jZSxhLmxpbmtTdHJlbmd0aD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOituLGEpOmh9LGEuZnJpY3Rpb249ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9K24sYSk6c30sYS5jaGFyZ2U9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjorbixhKTpnfSxhLmNoYXJnZURpc3RhbmNlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPW4qbixhKTpNYXRoLnNxcnQocCl9LGEuZ3Jhdml0eT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj0rbixhKTp2fSxhLnRoZXRhPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPW4qbixhKTpNYXRoLnNxcnQoZCl9LGEuYWxwaGE9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K24scj9yPW4+MD9uOjA6bj4wJiYoYy5zdGFydCh7dHlwZToic3RhcnQiLGFscGhhOnI9bn0pLHRhLnRpbWVyKGEudGljaykpLGEpOnJ9LGEuc3RhcnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4scil7aWYoIWUpe2ZvcihlPW5ldyBBcnJheShjKSxhPTA7Yz5hOysrYSllW2FdPVtdO2ZvcihhPTA7bD5hOysrYSl7dmFyIHU9eVthXTtlW3Uuc291cmNlLmluZGV4XS5wdXNoKHUudGFyZ2V0KSxlW3UudGFyZ2V0LmluZGV4XS5wdXNoKHUuc291cmNlKX19Zm9yKHZhciBpLG89ZVt0XSxhPS0xLGw9by5sZW5ndGg7KythPGw7KWlmKCFpc05hTihpPW9bYV1bbl0pKXJldHVybiBpO3JldHVybiBNYXRoLnJhbmRvbSgpKnJ9dmFyIHQsZSxyLGM9bS5sZW5ndGgscz15Lmxlbmd0aCxwPWxbMF0sdj1sWzFdO2Zvcih0PTA7Yz50OysrdCkocj1tW3RdKS5pbmRleD10LHIud2VpZ2h0PTA7Zm9yKHQ9MDtzPnQ7Kyt0KXI9eVt0XSwibnVtYmVyIj09dHlwZW9mIHIuc291cmNlJiYoci5zb3VyY2U9bVtyLnNvdXJjZV0pLCJudW1iZXIiPT10eXBlb2Ygci50YXJnZXQmJihyLnRhcmdldD1tW3IudGFyZ2V0XSksKytyLnNvdXJjZS53ZWlnaHQsKytyLnRhcmdldC53ZWlnaHQ7Zm9yKHQ9MDtjPnQ7Kyt0KXI9bVt0XSxpc05hTihyLngpJiYoci54PW4oIngiLHApKSxpc05hTihyLnkpJiYoci55PW4oInkiLHYpKSxpc05hTihyLnB4KSYmKHIucHg9ci54KSxpc05hTihyLnB5KSYmKHIucHk9ci55KTtpZih1PVtdLCJmdW5jdGlvbiI9PXR5cGVvZiBmKWZvcih0PTA7cz50OysrdCl1W3RdPStmLmNhbGwodGhpcyx5W3RdLHQpO2Vsc2UgZm9yKHQ9MDtzPnQ7Kyt0KXVbdF09ZjtpZihpPVtdLCJmdW5jdGlvbiI9PXR5cGVvZiBoKWZvcih0PTA7cz50OysrdClpW3RdPStoLmNhbGwodGhpcyx5W3RdLHQpO2Vsc2UgZm9yKHQ9MDtzPnQ7Kyt0KWlbdF09aDtpZihvPVtdLCJmdW5jdGlvbiI9PXR5cGVvZiBnKWZvcih0PTA7Yz50OysrdClvW3RdPStnLmNhbGwodGhpcyxtW3RdLHQpO2Vsc2UgZm9yKHQ9MDtjPnQ7Kyt0KW9bdF09ZztyZXR1cm4gYS5yZXN1bWUoKX0sYS5yZXN1bWU9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hbHBoYSguMSl9LGEuc3RvcD1mdW5jdGlvbigpe3JldHVybiBhLmFscGhhKDApfSxhLmRyYWc9ZnVuY3Rpb24oKXtyZXR1cm4gZXx8KGU9dGEuYmVoYXZpb3IuZHJhZygpLm9yaWdpbihFdCkub24oImRyYWdzdGFydC5mb3JjZSIsWHUpLm9uKCJkcmFnLmZvcmNlIix0KS5vbigiZHJhZ2VuZC5mb3JjZSIsJHUpKSxhcmd1bWVudHMubGVuZ3RoPyh0aGlzLm9uKCJtb3VzZW92ZXIuZm9yY2UiLEJ1KS5vbigibW91c2VvdXQuZm9yY2UiLFd1KS5jYWxsKGUpLHZvaWQgMCk6ZX0sdGEucmViaW5kKGEsYywib24iKX07dmFyIHZsPTIwLGRsPTEsbWw9MS8wO3RhLmxheW91dC5oaWVyYXJjaHk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKHUpe3ZhciBpLG89W3VdLGE9W107Zm9yKHUuZGVwdGg9MDtudWxsIT0oaT1vLnBvcCgpKTspaWYoYS5wdXNoKGkpLChsPWUuY2FsbChuLGksaS5kZXB0aCkpJiYoYz1sLmxlbmd0aCkpe2Zvcih2YXIgYyxsLHM7LS1jPj0wOylvLnB1c2gocz1sW2NdKSxzLnBhcmVudD1pLHMuZGVwdGg9aS5kZXB0aCsxO3ImJihpLnZhbHVlPTApLGkuY2hpbGRyZW49bH1lbHNlIHImJihpLnZhbHVlPStyLmNhbGwobixpLGkuZGVwdGgpfHwwKSxkZWxldGUgaS5jaGlsZHJlbjtyZXR1cm4gUXUodSxmdW5jdGlvbihuKXt2YXIgZSx1O3QmJihlPW4uY2hpbGRyZW4pJiZlLnNvcnQodCksciYmKHU9bi5wYXJlbnQpJiYodS52YWx1ZSs9bi52YWx1ZSl9KSxhfXZhciB0PWVpLGU9bmkscj10aTtyZXR1cm4gbi5zb3J0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsbik6dH0sbi5jaGlsZHJlbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG4pOmV9LG4udmFsdWU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxuKTpyfSxuLnJldmFsdWU9ZnVuY3Rpb24odCl7cmV0dXJuIHImJihLdSh0LGZ1bmN0aW9uKG4pe24uY2hpbGRyZW4mJihuLnZhbHVlPTApfSksUXUodCxmdW5jdGlvbih0KXt2YXIgZTt0LmNoaWxkcmVufHwodC52YWx1ZT0rci5jYWxsKG4sdCx0LmRlcHRoKXx8MCksKGU9dC5wYXJlbnQpJiYoZS52YWx1ZSs9dC52YWx1ZSl9KSksdH0sbn0sdGEubGF5b3V0LnBhcnRpdGlvbj1mdW5jdGlvbigpe2Z1bmN0aW9uIG4odCxlLHIsdSl7dmFyIGk9dC5jaGlsZHJlbjtpZih0Lng9ZSx0Lnk9dC5kZXB0aCp1LHQuZHg9cix0LmR5PXUsaSYmKG89aS5sZW5ndGgpKXt2YXIgbyxhLGMsbD0tMTtmb3Iocj10LnZhbHVlP3IvdC52YWx1ZTowOysrbDxvOyluKGE9aVtsXSxlLGM9YS52YWx1ZSpyLHUpLGUrPWN9fWZ1bmN0aW9uIHQobil7dmFyIGU9bi5jaGlsZHJlbixyPTA7aWYoZSYmKHU9ZS5sZW5ndGgpKWZvcih2YXIgdSxpPS0xOysraTx1OylyPU1hdGgubWF4KHIsdChlW2ldKSk7cmV0dXJuIDErcn1mdW5jdGlvbiBlKGUsaSl7dmFyIG89ci5jYWxsKHRoaXMsZSxpKTtyZXR1cm4gbihvWzBdLDAsdVswXSx1WzFdL3Qob1swXSkpLG99dmFyIHI9dGEubGF5b3V0LmhpZXJhcmNoeSgpLHU9WzEsMV07cmV0dXJuIGUuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1uLGUpOnV9LEd1KGUscil9LHRhLmxheW91dC5waWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG8pe3ZhciBhLGM9by5sZW5ndGgsbD1vLm1hcChmdW5jdGlvbihlLHIpe3JldHVybit0LmNhbGwobixlLHIpfSkscz0rKCJmdW5jdGlvbiI9PXR5cGVvZiByP3IuYXBwbHkodGhpcyxhcmd1bWVudHMpOnIpLGY9KCJmdW5jdGlvbiI9PXR5cGVvZiB1P3UuYXBwbHkodGhpcyxhcmd1bWVudHMpOnUpLXMsaD1NYXRoLm1pbihNYXRoLmFicyhmKS9jLCsoImZ1bmN0aW9uIj09dHlwZW9mIGk/aS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6aSkpLGc9aCooMD5mPy0xOjEpLHA9KGYtYypnKS90YS5zdW0obCksdj10YS5yYW5nZShjKSxkPVtdO3JldHVybiBudWxsIT1lJiZ2LnNvcnQoZT09PXlsP2Z1bmN0aW9uKG4sdCl7cmV0dXJuIGxbdF0tbFtuXX06ZnVuY3Rpb24obix0KXtyZXR1cm4gZShvW25dLG9bdF0pfSksdi5mb3JFYWNoKGZ1bmN0aW9uKG4pe2Rbbl09e2RhdGE6b1tuXSx2YWx1ZTphPWxbbl0sc3RhcnRBbmdsZTpzLGVuZEFuZ2xlOnMrPWEqcCtnLHBhZEFuZ2xlOmh9fSksZH12YXIgdD1OdW1iZXIsZT15bCxyPTAsdT1QYSxpPTA7cmV0dXJuIG4udmFsdWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxuKTp0fSxuLnNvcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxuKTplfSxuLnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxuKTpyfSxuLmVuZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PXQsbik6dX0sbi5wYWRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LG4pOml9LG59O3ZhciB5bD17fTt0YS5sYXlvdXQuc3RhY2s9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKGEsYyl7aWYoIShoPWEubGVuZ3RoKSlyZXR1cm4gYTt2YXIgbD1hLm1hcChmdW5jdGlvbihlLHIpe3JldHVybiB0LmNhbGwobixlLHIpfSkscz1sLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm5baS5jYWxsKG4sdCxlKSxvLmNhbGwobix0LGUpXX0pfSksZj1lLmNhbGwobixzLGMpO2w9dGEucGVybXV0ZShsLGYpLHM9dGEucGVybXV0ZShzLGYpO3ZhciBoLGcscCx2LGQ9ci5jYWxsKG4scyxjKSxtPWxbMF0ubGVuZ3RoO2ZvcihwPTA7bT5wOysrcClmb3IodS5jYWxsKG4sbFswXVtwXSx2PWRbcF0sc1swXVtwXVsxXSksZz0xO2g+ZzsrK2cpdS5jYWxsKG4sbFtnXVtwXSx2Kz1zW2ctMV1bcF1bMV0sc1tnXVtwXVsxXSk7cmV0dXJuIGF9dmFyIHQ9RXQsZT1haSxyPWNpLHU9b2ksaT11aSxvPWlpO3JldHVybiBuLnZhbHVlcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLG4pOnR9LG4ub3JkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpNbC5nZXQodCl8fGFpLG4pOmV9LG4ub2Zmc2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6eGwuZ2V0KHQpfHxjaSxuKTpyfSxuLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dCxuKTppfSxuLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89dCxuKTpvfSxuLm91dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT10LG4pOnV9LG59O3ZhciBNbD10YS5tYXAoeyJpbnNpZGUtb3V0IjpmdW5jdGlvbihuKXt2YXIgdCxlLHI9bi5sZW5ndGgsdT1uLm1hcChsaSksaT1uLm1hcChzaSksbz10YS5yYW5nZShyKS5zb3J0KGZ1bmN0aW9uKG4sdCl7cmV0dXJuIHVbbl0tdVt0XX0pLGE9MCxjPTAsbD1bXSxzPVtdO2Zvcih0PTA7cj50OysrdCllPW9bdF0sYz5hPyhhKz1pW2VdLGwucHVzaChlKSk6KGMrPWlbZV0scy5wdXNoKGUpKTtyZXR1cm4gcy5yZXZlcnNlKCkuY29uY2F0KGwpfSxyZXZlcnNlOmZ1bmN0aW9uKG4pe3JldHVybiB0YS5yYW5nZShuLmxlbmd0aCkucmV2ZXJzZSgpfSwiZGVmYXVsdCI6YWl9KSx4bD10YS5tYXAoe3NpbGhvdWV0dGU6ZnVuY3Rpb24obil7dmFyIHQsZSxyLHU9bi5sZW5ndGgsaT1uWzBdLmxlbmd0aCxvPVtdLGE9MCxjPVtdO2ZvcihlPTA7aT5lOysrZSl7Zm9yKHQ9MCxyPTA7dT50O3QrKylyKz1uW3RdW2VdWzFdO3I+YSYmKGE9ciksby5wdXNoKHIpfWZvcihlPTA7aT5lOysrZSljW2VdPShhLW9bZV0pLzI7cmV0dXJuIGN9LHdpZ2dsZTpmdW5jdGlvbihuKXt2YXIgdCxlLHIsdSxpLG8sYSxjLGwscz1uLmxlbmd0aCxmPW5bMF0saD1mLmxlbmd0aCxnPVtdO2ZvcihnWzBdPWM9bD0wLGU9MTtoPmU7KytlKXtmb3IodD0wLHU9MDtzPnQ7Kyt0KXUrPW5bdF1bZV1bMV07Zm9yKHQ9MCxpPTAsYT1mW2VdWzBdLWZbZS0xXVswXTtzPnQ7Kyt0KXtmb3Iocj0wLG89KG5bdF1bZV1bMV0tblt0XVtlLTFdWzFdKS8oMiphKTt0PnI7KytyKW8rPShuW3JdW2VdWzFdLW5bcl1bZS0xXVsxXSkvYTtpKz1vKm5bdF1bZV1bMV19Z1tlXT1jLT11P2kvdSphOjAsbD5jJiYobD1jKX1mb3IoZT0wO2g+ZTsrK2UpZ1tlXS09bDtyZXR1cm4gZ30sZXhwYW5kOmZ1bmN0aW9uKG4pe3ZhciB0LGUscix1PW4ubGVuZ3RoLGk9blswXS5sZW5ndGgsbz0xL3UsYT1bXTtmb3IoZT0wO2k+ZTsrK2Upe2Zvcih0PTAscj0wO3U+dDt0Kyspcis9blt0XVtlXVsxXTtpZihyKWZvcih0PTA7dT50O3QrKyluW3RdW2VdWzFdLz1yO2Vsc2UgZm9yKHQ9MDt1PnQ7dCsrKW5bdF1bZV1bMV09b31mb3IoZT0wO2k+ZTsrK2UpYVtlXT0wO3JldHVybiBhfSx6ZXJvOmNpfSk7dGEubGF5b3V0Lmhpc3RvZ3JhbT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obixpKXtmb3IodmFyIG8sYSxjPVtdLGw9bi5tYXAoZSx0aGlzKSxzPXIuY2FsbCh0aGlzLGwsaSksZj11LmNhbGwodGhpcyxzLGwsaSksaT0tMSxoPWwubGVuZ3RoLGc9Zi5sZW5ndGgtMSxwPXQ/MToxL2g7KytpPGc7KW89Y1tpXT1bXSxvLmR4PWZbaSsxXS0oby54PWZbaV0pLG8ueT0wO2lmKGc+MClmb3IoaT0tMTsrK2k8aDspYT1sW2ldLGE+PXNbMF0mJmE8PXNbMV0mJihvPWNbdGEuYmlzZWN0KGYsYSwxLGcpLTFdLG8ueSs9cCxvLnB1c2gobltpXSkpO3JldHVybiBjfXZhciB0PSEwLGU9TnVtYmVyLHI9cGksdT1oaTtyZXR1cm4gbi52YWx1ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG4pOmV9LG4ucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9a3QodCksbik6cn0sbi5iaW5zPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSJudW1iZXIiPT10eXBlb2YgdD9mdW5jdGlvbihuKXtyZXR1cm4gZ2kobix0KX06a3QodCksbik6dX0sbi5mcmVxdWVuY3k9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ISFlLG4pOnR9LG59LHRhLmxheW91dC5wYWNrPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLGkpe3ZhciBvPWUuY2FsbCh0aGlzLG4saSksYT1vWzBdLGM9dVswXSxsPXVbMV0scz1udWxsPT10P01hdGguc3FydDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OmZ1bmN0aW9uKCl7cmV0dXJuIHR9O2lmKGEueD1hLnk9MCxRdShhLGZ1bmN0aW9uKG4pe24ucj0rcyhuLnZhbHVlKX0pLFF1KGEsTWkpLHIpe3ZhciBmPXIqKHQ/MTpNYXRoLm1heCgyKmEuci9jLDIqYS5yL2wpKS8yO1F1KGEsZnVuY3Rpb24obil7bi5yKz1mfSksUXUoYSxNaSksUXUoYSxmdW5jdGlvbihuKXtuLnItPWZ9KX1yZXR1cm4gX2koYSxjLzIsbC8yLHQ/MToxL01hdGgubWF4KDIqYS5yL2MsMiphLnIvbCkpLG99dmFyIHQsZT10YS5sYXlvdXQuaGllcmFyY2h5KCkuc29ydCh2aSkscj0wLHU9WzEsMV07cmV0dXJuIG4uc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT10LG4pOnV9LG4ucmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW51bGw9PWV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6K2Usbik6dH0sbi5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0LG4pOnJ9LEd1KG4sZSl9LHRhLmxheW91dC50cmVlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLHUpe3ZhciBzPW8uY2FsbCh0aGlzLG4sdSksZj1zWzBdLGg9dChmKTtpZihRdShoLGUpLGgucGFyZW50Lm09LWgueixLdShoLHIpLGwpS3UoZixpKTtlbHNle3ZhciBnPWYscD1mLHY9ZjtLdShmLGZ1bmN0aW9uKG4pe24ueDxnLngmJihnPW4pLG4ueD5wLngmJihwPW4pLG4uZGVwdGg+di5kZXB0aCYmKHY9bil9KTt2YXIgZD1hKGcscCkvMi1nLngsbT1jWzBdLyhwLngrYShwLGcpLzIrZCkseT1jWzFdLyh2LmRlcHRofHwxKTtLdShmLGZ1bmN0aW9uKG4pe24ueD0obi54K2QpKm0sbi55PW4uZGVwdGgqeX0pfXJldHVybiBzfWZ1bmN0aW9uIHQobil7Zm9yKHZhciB0LGU9e0E6bnVsbCxjaGlsZHJlbjpbbl19LHI9W2VdO251bGwhPSh0PXIucG9wKCkpOylmb3IodmFyIHUsaT10LmNoaWxkcmVuLG89MCxhPWkubGVuZ3RoO2E+bzsrK28pci5wdXNoKChpW29dPXU9e186aVtvXSxwYXJlbnQ6dCxjaGlsZHJlbjoodT1pW29dLmNoaWxkcmVuKSYmdS5zbGljZSgpfHxbXSxBOm51bGwsYTpudWxsLHo6MCxtOjAsYzowLHM6MCx0Om51bGwsaTpvfSkuYT11KTtyZXR1cm4gZS5jaGlsZHJlblswXX1mdW5jdGlvbiBlKG4pe3ZhciB0PW4uY2hpbGRyZW4sZT1uLnBhcmVudC5jaGlsZHJlbixyPW4uaT9lW24uaS0xXTpudWxsO2lmKHQubGVuZ3RoKXtOaShuKTt2YXIgaT0odFswXS56K3RbdC5sZW5ndGgtMV0ueikvMjtyPyhuLno9ci56K2Eobi5fLHIuXyksbi5tPW4uei1pKTpuLno9aX1lbHNlIHImJihuLno9ci56K2Eobi5fLHIuXykpO24ucGFyZW50LkE9dShuLHIsbi5wYXJlbnQuQXx8ZVswXSl9ZnVuY3Rpb24gcihuKXtuLl8ueD1uLnorbi5wYXJlbnQubSxuLm0rPW4ucGFyZW50Lm19ZnVuY3Rpb24gdShuLHQsZSl7aWYodCl7Zm9yKHZhciByLHU9bixpPW4sbz10LGM9dS5wYXJlbnQuY2hpbGRyZW5bMF0sbD11Lm0scz1pLm0sZj1vLm0saD1jLm07bz1FaShvKSx1PWtpKHUpLG8mJnU7KWM9a2koYyksaT1FaShpKSxpLmE9bixyPW8ueitmLXUuei1sK2Eoby5fLHUuXykscj4wJiYoQWkoQ2kobyxuLGUpLG4sciksbCs9cixzKz1yKSxmKz1vLm0sbCs9dS5tLGgrPWMubSxzKz1pLm07byYmIUVpKGkpJiYoaS50PW8saS5tKz1mLXMpLHUmJiFraShjKSYmKGMudD11LGMubSs9bC1oLGU9bil9cmV0dXJuIGV9ZnVuY3Rpb24gaShuKXtuLngqPWNbMF0sbi55PW4uZGVwdGgqY1sxXX12YXIgbz10YS5sYXlvdXQuaGllcmFyY2h5KCkuc29ydChudWxsKS52YWx1ZShudWxsKSxhPVNpLGM9WzEsMV0sbD1udWxsO3JldHVybiBuLnNlcGFyYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dCxuKTphfSxuLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9bnVsbD09KGM9dCk/aTpudWxsLG4pOmw/bnVsbDpjfSxuLm5vZGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPW51bGw9PShjPXQpP251bGw6aSxuKTpsP2M6bnVsbH0sR3UobixvKX0sdGEubGF5b3V0LmNsdXN0ZXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4saSl7dmFyIG8sYT10LmNhbGwodGhpcyxuLGkpLGM9YVswXSxsPTA7UXUoYyxmdW5jdGlvbihuKXt2YXIgdD1uLmNoaWxkcmVuO3QmJnQubGVuZ3RoPyhuLng9cWkodCksbi55PXppKHQpKToobi54PW8/bCs9ZShuLG8pOjAsbi55PTAsbz1uKX0pO3ZhciBzPUxpKGMpLGY9VGkoYyksaD1zLngtZShzLGYpLzIsZz1mLngrZShmLHMpLzI7cmV0dXJuIFF1KGMsdT9mdW5jdGlvbihuKXtuLng9KG4ueC1jLngpKnJbMF0sbi55PShjLnktbi55KSpyWzFdfTpmdW5jdGlvbihuKXtuLng9KG4ueC1oKS8oZy1oKSpyWzBdLG4ueT0oMS0oYy55P24ueS9jLnk6MSkpKnJbMV19KSxhfXZhciB0PXRhLmxheW91dC5oaWVyYXJjaHkoKS5zb3J0KG51bGwpLnZhbHVlKG51bGwpLGU9U2kscj1bMSwxXSx1PSExO3JldHVybiBuLnNlcGFyYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxuKTplfSxuLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9bnVsbD09KHI9dCksbik6dT9udWxsOnJ9LG4ubm9kZVNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9bnVsbCE9KHI9dCksbik6dT9yOm51bGx9LEd1KG4sdCl9LHRhLmxheW91dC50cmVlbWFwPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLHQpe2Zvcih2YXIgZSxyLHU9LTEsaT1uLmxlbmd0aDsrK3U8aTspcj0oZT1uW3VdKS52YWx1ZSooMD50PzA6dCksZS5hcmVhPWlzTmFOKHIpfHwwPj1yPzA6cn1mdW5jdGlvbiB0KGUpe3ZhciBpPWUuY2hpbGRyZW47aWYoaSYmaS5sZW5ndGgpe3ZhciBvLGEsYyxsPWYoZSkscz1bXSxoPWkuc2xpY2UoKSxwPTEvMCx2PSJzbGljZSI9PT1nP2wuZHg6ImRpY2UiPT09Zz9sLmR5OiJzbGljZS1kaWNlIj09PWc/MSZlLmRlcHRoP2wuZHk6bC5keDpNYXRoLm1pbihsLmR4LGwuZHkpO2ZvcihuKGgsbC5keCpsLmR5L2UudmFsdWUpLHMuYXJlYT0wOyhjPWgubGVuZ3RoKT4wOylzLnB1c2gobz1oW2MtMV0pLHMuYXJlYSs9by5hcmVhLCJzcXVhcmlmeSIhPT1nfHwoYT1yKHMsdikpPD1wPyhoLnBvcCgpLHA9YSk6KHMuYXJlYS09cy5wb3AoKS5hcmVhLHUocyx2LGwsITEpLHY9TWF0aC5taW4obC5keCxsLmR5KSxzLmxlbmd0aD1zLmFyZWE9MCxwPTEvMCk7cy5sZW5ndGgmJih1KHMsdixsLCEwKSxzLmxlbmd0aD1zLmFyZWE9MCksaS5mb3JFYWNoKHQpfX1mdW5jdGlvbiBlKHQpe3ZhciByPXQuY2hpbGRyZW47aWYociYmci5sZW5ndGgpe3ZhciBpLG89Zih0KSxhPXIuc2xpY2UoKSxjPVtdO2ZvcihuKGEsby5keCpvLmR5L3QudmFsdWUpLGMuYXJlYT0wO2k9YS5wb3AoKTspYy5wdXNoKGkpLGMuYXJlYSs9aS5hcmVhLG51bGwhPWkueiYmKHUoYyxpLno/by5keDpvLmR5LG8sIWEubGVuZ3RoKSxjLmxlbmd0aD1jLmFyZWE9MCk7ci5mb3JFYWNoKGUpfX1mdW5jdGlvbiByKG4sdCl7Zm9yKHZhciBlLHI9bi5hcmVhLHU9MCxpPTEvMCxvPS0xLGE9bi5sZW5ndGg7KytvPGE7KShlPW5bb10uYXJlYSkmJihpPmUmJihpPWUpLGU+dSYmKHU9ZSkpO3JldHVybiByKj1yLHQqPXQscj9NYXRoLm1heCh0KnUqcC9yLHIvKHQqaSpwKSk6MS8wfWZ1bmN0aW9uIHUobix0LGUscil7dmFyIHUsaT0tMSxvPW4ubGVuZ3RoLGE9ZS54LGw9ZS55LHM9dD9jKG4uYXJlYS90KTowO2lmKHQ9PWUuZHgpe2Zvcigocnx8cz5lLmR5KSYmKHM9ZS5keSk7KytpPG87KXU9bltpXSx1Lng9YSx1Lnk9bCx1LmR5PXMsYSs9dS5keD1NYXRoLm1pbihlLngrZS5keC1hLHM/Yyh1LmFyZWEvcyk6MCk7dS56PSEwLHUuZHgrPWUueCtlLmR4LWEsZS55Kz1zLGUuZHktPXN9ZWxzZXtmb3IoKHJ8fHM+ZS5keCkmJihzPWUuZHgpOysraTxvOyl1PW5baV0sdS54PWEsdS55PWwsdS5keD1zLGwrPXUuZHk9TWF0aC5taW4oZS55K2UuZHktbCxzP2ModS5hcmVhL3MpOjApO3Uuej0hMSx1LmR5Kz1lLnkrZS5keS1sLGUueCs9cyxlLmR4LT1zfX1mdW5jdGlvbiBpKHIpe3ZhciB1PW98fGEociksaT11WzBdO3JldHVybiBpLng9MCxpLnk9MCxpLmR4PWxbMF0saS5keT1sWzFdLG8mJmEucmV2YWx1ZShpKSxuKFtpXSxpLmR4KmkuZHkvaS52YWx1ZSksKG8/ZTp0KShpKSxoJiYobz11KSx1fXZhciBvLGE9dGEubGF5b3V0LmhpZXJhcmNoeSgpLGM9TWF0aC5yb3VuZCxsPVsxLDFdLHM9bnVsbCxmPVJpLGg9ITEsZz0ic3F1YXJpZnkiLHA9LjUqKDErTWF0aC5zcXJ0KDUpKTtyZXR1cm4gaS5zaXplPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPW4saSk6bH0saS5wYWRkaW5nPWZ1bmN0aW9uKG4pe2Z1bmN0aW9uIHQodCl7dmFyIGU9bi5jYWxsKGksdCx0LmRlcHRoKTtyZXR1cm4gbnVsbD09ZT9SaSh0KTpEaSh0LCJudW1iZXIiPT10eXBlb2YgZT9bZSxlLGUsZV06ZSl9ZnVuY3Rpb24gZSh0KXtyZXR1cm4gRGkodCxuKX1pZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gczt2YXIgcjtyZXR1cm4gZj1udWxsPT0ocz1uKT9SaToiZnVuY3Rpb24iPT0ocj10eXBlb2Ygbik/dDoibnVtYmVyIj09PXI/KG49W24sbixuLG5dLGUpOmUsaX0saS5yb3VuZD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1uP01hdGgucm91bmQ6TnVtYmVyLGkpOmMhPU51bWJlcn0saS5zdGlja3k9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9bixvPW51bGwsaSk6aAp9LGkucmF0aW89ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9bixpKTpwfSxpLm1vZGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9bisiIixpKTpnfSxHdShpLGEpfSx0YS5yYW5kb209e25vcm1hbDpmdW5jdGlvbihuLHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg7cmV0dXJuIDI+ZSYmKHQ9MSksMT5lJiYobj0wKSxmdW5jdGlvbigpe3ZhciBlLHIsdTtkbyBlPTIqTWF0aC5yYW5kb20oKS0xLHI9MipNYXRoLnJhbmRvbSgpLTEsdT1lKmUrcipyO3doaWxlKCF1fHx1PjEpO3JldHVybiBuK3QqZSpNYXRoLnNxcnQoLTIqTWF0aC5sb2codSkvdSl9fSxsb2dOb3JtYWw6ZnVuY3Rpb24oKXt2YXIgbj10YS5yYW5kb20ubm9ybWFsLmFwcGx5KHRhLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZXhwKG4oKSl9fSxiYXRlczpmdW5jdGlvbihuKXt2YXIgdD10YS5yYW5kb20uaXJ3aW5IYWxsKG4pO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0KCkvbn19LGlyd2luSGFsbDpmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHQ9MCxlPTA7bj5lO2UrKyl0Kz1NYXRoLnJhbmRvbSgpO3JldHVybiB0fX19LHRhLnNjYWxlPXt9O3ZhciBibD17Zmxvb3I6RXQsY2VpbDpFdH07dGEuc2NhbGUubGluZWFyPWZ1bmN0aW9uKCl7cmV0dXJuIFlpKFswLDFdLFswLDFdLG11LCExKX07dmFyIF9sPXtzOjEsZzoxLHA6MSxyOjEsZToxfTt0YS5zY2FsZS5sb2c9ZnVuY3Rpb24oKXtyZXR1cm4gSmkodGEuc2NhbGUubGluZWFyKCkuZG9tYWluKFswLDFdKSwxMCwhMCxbMSwxMF0pfTt2YXIgd2w9dGEuZm9ybWF0KCIuMGUiKSxTbD17Zmxvb3I6ZnVuY3Rpb24obil7cmV0dXJuLU1hdGguY2VpbCgtbil9LGNlaWw6ZnVuY3Rpb24obil7cmV0dXJuLU1hdGguZmxvb3IoLW4pfX07dGEuc2NhbGUucG93PWZ1bmN0aW9uKCl7cmV0dXJuIEdpKHRhLnNjYWxlLmxpbmVhcigpLDEsWzAsMV0pfSx0YS5zY2FsZS5zcXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIHRhLnNjYWxlLnBvdygpLmV4cG9uZW50KC41KX0sdGEuc2NhbGUub3JkaW5hbD1mdW5jdGlvbigpe3JldHVybiBRaShbXSx7dDoicmFuZ2UiLGE6W1tdXX0pfSx0YS5zY2FsZS5jYXRlZ29yeTEwPWZ1bmN0aW9uKCl7cmV0dXJuIHRhLnNjYWxlLm9yZGluYWwoKS5yYW5nZShrbCl9LHRhLnNjYWxlLmNhdGVnb3J5MjA9ZnVuY3Rpb24oKXtyZXR1cm4gdGEuc2NhbGUub3JkaW5hbCgpLnJhbmdlKEVsKX0sdGEuc2NhbGUuY2F0ZWdvcnkyMGI9ZnVuY3Rpb24oKXtyZXR1cm4gdGEuc2NhbGUub3JkaW5hbCgpLnJhbmdlKEFsKX0sdGEuc2NhbGUuY2F0ZWdvcnkyMGM9ZnVuY3Rpb24oKXtyZXR1cm4gdGEuc2NhbGUub3JkaW5hbCgpLnJhbmdlKE5sKX07dmFyIGtsPVsyMDYyMjYwLDE2NzQ0MjA2LDI5MjQ1ODgsMTQwMzQ3MjgsOTcyNTg4NSw5MTk3MTMxLDE0OTA3MzMwLDgzNTU3MTEsMTIzNjkxODYsMTU1NjE3NV0ubWFwKHl0KSxFbD1bMjA2MjI2MCwxMTQ1NDQ0MCwxNjc0NDIwNiwxNjc1OTY3MiwyOTI0NTg4LDEwMDE4Njk4LDE0MDM0NzI4LDE2NzUwNzQyLDk3MjU4ODUsMTI5NTU4NjEsOTE5NzEzMSwxMjg4NTE0MCwxNDkwNzMzMCwxNjIzNDE5NCw4MzU1NzExLDEzMDkyODA3LDEyMzY5MTg2LDE0NDA4NTg5LDE1NTYxNzUsMTA0MTA3MjVdLm1hcCh5dCksQWw9WzM3NTA3NzcsNTM5NTYxOSw3MDQwNzE5LDEwMjY0Mjg2LDY1MTkwOTcsOTIxNjU5NCwxMTkxNTExNSwxMzU1NjYzNiw5MjAyOTkzLDEyNDI2ODA5LDE1MTg2NTE0LDE1MTkwOTMyLDg2NjYxNjksMTEzNTY0OTAsMTQwNDk2NDMsMTUxNzczNzIsODA3NzY4MywxMDgzNDMyNCwxMzUyODUwOSwxNDU4OTY1NF0ubWFwKHl0KSxObD1bMzI0NDczMyw3MDU3MTEwLDEwNDA2NjI1LDEzMDMyNDMxLDE1MDk1MDUzLDE2NjE2NzY0LDE2NjI1MjU5LDE2NjM0MDE4LDMyNTMwNzYsNzY1MjQ3MCwxMDYwNzAwMywxMzEwMTUwNCw3Njk1MjgxLDEwMzk0MzEyLDEyMzY5MzcyLDE0MzQyODkxLDY1MTM1MDcsOTg2ODk1MCwxMjQzNDg3NywxNDI3NzA4MV0ubWFwKHl0KTt0YS5zY2FsZS5xdWFudGlsZT1mdW5jdGlvbigpe3JldHVybiBubyhbXSxbXSl9LHRhLnNjYWxlLnF1YW50aXplPWZ1bmN0aW9uKCl7cmV0dXJuIHRvKDAsMSxbMCwxXSl9LHRhLnNjYWxlLnRocmVzaG9sZD1mdW5jdGlvbigpe3JldHVybiBlbyhbLjVdLFswLDFdKX0sdGEuc2NhbGUuaWRlbnRpdHk9ZnVuY3Rpb24oKXtyZXR1cm4gcm8oWzAsMV0pfSx0YS5zdmc9e30sdGEuc3ZnLmFyYz1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oKXt2YXIgbj1NYXRoLm1heCgwLCtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksbD1NYXRoLm1heCgwLCtyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkscz1vLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1qYSxmPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpLWphLGg9TWF0aC5hYnMoZi1zKSxnPXM+Zj8wOjE7aWYobj5sJiYocD1sLGw9bixuPXApLGg+PVVhKXJldHVybiB0KGwsZykrKG4/dChuLDEtZyk6IiIpKyJaIjt2YXIgcCx2LGQsbSx5LE0seCxiLF8sdyxTLGssRT0wLEE9MCxOPVtdO2lmKChtPSgrYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fDApLzIpJiYoZD1pPT09Q2w/TWF0aC5zcXJ0KG4qbitsKmwpOitpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxnfHwoQSo9LTEpLGwmJihBPW50KGQvbCpNYXRoLnNpbihtKSkpLG4mJihFPW50KGQvbipNYXRoLnNpbihtKSkpKSxsKXt5PWwqTWF0aC5jb3MocytBKSxNPWwqTWF0aC5zaW4ocytBKSx4PWwqTWF0aC5jb3MoZi1BKSxiPWwqTWF0aC5zaW4oZi1BKTt2YXIgQz1NYXRoLmFicyhmLXMtMipBKTw9RGE/MDoxO2lmKEEmJnNvKHksTSx4LGIpPT09Z15DKXt2YXIgej0ocytmKS8yO3k9bCpNYXRoLmNvcyh6KSxNPWwqTWF0aC5zaW4oeikseD1iPW51bGx9fWVsc2UgeT1NPTA7aWYobil7Xz1uKk1hdGguY29zKGYtRSksdz1uKk1hdGguc2luKGYtRSksUz1uKk1hdGguY29zKHMrRSksaz1uKk1hdGguc2luKHMrRSk7dmFyIHE9TWF0aC5hYnMocy1mKzIqRSk8PURhPzA6MTtpZihFJiZzbyhfLHcsUyxrKT09PTEtZ15xKXt2YXIgTD0ocytmKS8yO189bipNYXRoLmNvcyhMKSx3PW4qTWF0aC5zaW4oTCksUz1rPW51bGx9fWVsc2UgXz13PTA7aWYoKHA9TWF0aC5taW4oTWF0aC5hYnMobC1uKS8yLCt1LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkpPi4wMDEpe3Y9bD5uXmc/MDoxO3ZhciBUPW51bGw9PVM/W18sd106bnVsbD09eD9beSxNXTpMcihbeSxNXSxbUyxrXSxbeCxiXSxbXyx3XSksUj15LVRbMF0sRD1NLVRbMV0sUD14LVRbMF0sVT1iLVRbMV0saj0xL01hdGguc2luKE1hdGguYWNvcygoUipQK0QqVSkvKE1hdGguc3FydChSKlIrRCpEKSpNYXRoLnNxcnQoUCpQK1UqVSkpKS8yKSxGPU1hdGguc3FydChUWzBdKlRbMF0rVFsxXSpUWzFdKTtpZihudWxsIT14KXt2YXIgSD1NYXRoLm1pbihwLChsLUYpLyhqKzEpKSxPPWZvKG51bGw9PVM/W18sd106W1Msa10sW3ksTV0sbCxILGcpLFk9Zm8oW3gsYl0sW18sd10sbCxILGcpO3A9PT1IP04ucHVzaCgiTSIsT1swXSwiQSIsSCwiLCIsSCwiIDAgMCwiLHYsIiAiLE9bMV0sIkEiLGwsIiwiLGwsIiAwICIsMS1nXnNvKE9bMV1bMF0sT1sxXVsxXSxZWzFdWzBdLFlbMV1bMV0pLCIsIixnLCIgIixZWzFdLCJBIixILCIsIixILCIgMCAwLCIsdiwiICIsWVswXSk6Ti5wdXNoKCJNIixPWzBdLCJBIixILCIsIixILCIgMCAxLCIsdiwiICIsWVswXSl9ZWxzZSBOLnB1c2goIk0iLHksIiwiLE0pO2lmKG51bGwhPVMpe3ZhciBJPU1hdGgubWluKHAsKG4tRikvKGotMSkpLFo9Zm8oW3ksTV0sW1Msa10sbiwtSSxnKSxWPWZvKFtfLHddLG51bGw9PXg/W3ksTV06W3gsYl0sbiwtSSxnKTtwPT09ST9OLnB1c2goIkwiLFZbMF0sIkEiLEksIiwiLEksIiAwIDAsIix2LCIgIixWWzFdLCJBIixuLCIsIixuLCIgMCAiLGdec28oVlsxXVswXSxWWzFdWzFdLFpbMV1bMF0sWlsxXVsxXSksIiwiLDEtZywiICIsWlsxXSwiQSIsSSwiLCIsSSwiIDAgMCwiLHYsIiAiLFpbMF0pOk4ucHVzaCgiTCIsVlswXSwiQSIsSSwiLCIsSSwiIDAgMCwiLHYsIiAiLFpbMF0pfWVsc2UgTi5wdXNoKCJMIixfLCIsIix3KX1lbHNlIE4ucHVzaCgiTSIseSwiLCIsTSksbnVsbCE9eCYmTi5wdXNoKCJBIixsLCIsIixsLCIgMCAiLEMsIiwiLGcsIiAiLHgsIiwiLGIpLE4ucHVzaCgiTCIsXywiLCIsdyksbnVsbCE9UyYmTi5wdXNoKCJBIixuLCIsIixuLCIgMCAiLHEsIiwiLDEtZywiICIsUywiLCIsayk7cmV0dXJuIE4ucHVzaCgiWiIpLE4uam9pbigiIil9ZnVuY3Rpb24gdChuLHQpe3JldHVybiJNMCwiK24rIkEiK24rIiwiK24rIiAwIDEsIit0KyIgMCwiKy1uKyJBIituKyIsIituKyIgMCAxLCIrdCsiIDAsIitufXZhciBlPWlvLHI9b28sdT11byxpPUNsLG89YW8sYT1jbyxjPWxvO3JldHVybiBuLmlubmVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWt0KHQpLG4pOmV9LG4ub3V0ZXJSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9a3QodCksbik6cn0sbi5jb3JuZXJSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9a3QodCksbik6dX0sbi5wYWRSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dD09Q2w/Q2w6a3QodCksbik6aX0sbi5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWt0KHQpLG4pOm99LG4uZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9a3QodCksbik6YX0sbi5wYWRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1rdCh0KSxuKTpjfSxuLmNlbnRyb2lkPWZ1bmN0aW9uKCl7dmFyIG49KCtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSsgK3IuYXBwbHkodGhpcyxhcmd1bWVudHMpKS8yLHQ9KCtvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSsgK2EuYXBwbHkodGhpcyxhcmd1bWVudHMpKS8yLWphO3JldHVybltNYXRoLmNvcyh0KSpuLE1hdGguc2luKHQpKm5dfSxufTt2YXIgQ2w9ImF1dG8iO3RhLnN2Zy5saW5lPWZ1bmN0aW9uKCl7cmV0dXJuIGhvKEV0KX07dmFyIHpsPXRhLm1hcCh7bGluZWFyOmdvLCJsaW5lYXItY2xvc2VkIjpwbyxzdGVwOnZvLCJzdGVwLWJlZm9yZSI6bW8sInN0ZXAtYWZ0ZXIiOnlvLGJhc2lzOlNvLCJiYXNpcy1vcGVuIjprbywiYmFzaXMtY2xvc2VkIjpFbyxidW5kbGU6QW8sY2FyZGluYWw6Ym8sImNhcmRpbmFsLW9wZW4iOk1vLCJjYXJkaW5hbC1jbG9zZWQiOnhvLG1vbm90b25lOlRvfSk7emwuZm9yRWFjaChmdW5jdGlvbihuLHQpe3Qua2V5PW4sdC5jbG9zZWQ9Ly1jbG9zZWQkLy50ZXN0KG4pfSk7dmFyIHFsPVswLDIvMywxLzMsMF0sTGw9WzAsMS8zLDIvMywwXSxUbD1bMCwxLzYsMi8zLDEvNl07dGEuc3ZnLmxpbmUucmFkaWFsPWZ1bmN0aW9uKCl7dmFyIG49aG8oUm8pO3JldHVybiBuLnJhZGl1cz1uLngsZGVsZXRlIG4ueCxuLmFuZ2xlPW4ueSxkZWxldGUgbi55LG59LG1vLnJldmVyc2U9eW8seW8ucmV2ZXJzZT1tbyx0YS5zdmcuYXJlYT1mdW5jdGlvbigpe3JldHVybiBEbyhFdCl9LHRhLnN2Zy5hcmVhLnJhZGlhbD1mdW5jdGlvbigpe3ZhciBuPURvKFJvKTtyZXR1cm4gbi5yYWRpdXM9bi54LGRlbGV0ZSBuLngsbi5pbm5lclJhZGl1cz1uLngwLGRlbGV0ZSBuLngwLG4ub3V0ZXJSYWRpdXM9bi54MSxkZWxldGUgbi54MSxuLmFuZ2xlPW4ueSxkZWxldGUgbi55LG4uc3RhcnRBbmdsZT1uLnkwLGRlbGV0ZSBuLnkwLG4uZW5kQW5nbGU9bi55MSxkZWxldGUgbi55MSxufSx0YS5zdmcuY2hvcmQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4sYSl7dmFyIGM9dCh0aGlzLGksbixhKSxsPXQodGhpcyxvLG4sYSk7cmV0dXJuIk0iK2MucDArcihjLnIsYy5wMSxjLmExLWMuYTApKyhlKGMsbCk/dShjLnIsYy5wMSxjLnIsYy5wMCk6dShjLnIsYy5wMSxsLnIsbC5wMCkrcihsLnIsbC5wMSxsLmExLWwuYTApK3UobC5yLGwucDEsYy5yLGMucDApKSsiWiJ9ZnVuY3Rpb24gdChuLHQsZSxyKXt2YXIgdT10LmNhbGwobixlLHIpLGk9YS5jYWxsKG4sdSxyKSxvPWMuY2FsbChuLHUsciktamEscz1sLmNhbGwobix1LHIpLWphO3JldHVybntyOmksYTA6byxhMTpzLHAwOltpKk1hdGguY29zKG8pLGkqTWF0aC5zaW4obyldLHAxOltpKk1hdGguY29zKHMpLGkqTWF0aC5zaW4ocyldfX1mdW5jdGlvbiBlKG4sdCl7cmV0dXJuIG4uYTA9PXQuYTAmJm4uYTE9PXQuYTF9ZnVuY3Rpb24gcihuLHQsZSl7cmV0dXJuIkEiK24rIiwiK24rIiAwICIrICsoZT5EYSkrIiwxICIrdH1mdW5jdGlvbiB1KG4sdCxlLHIpe3JldHVybiJRIDAsMCAiK3J9dmFyIGk9bXIsbz15cixhPVBvLGM9YW8sbD1jbztyZXR1cm4gbi5yYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9a3QodCksbik6YX0sbi5zb3VyY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9a3QodCksbik6aX0sbi50YXJnZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89a3QodCksbik6b30sbi5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPWt0KHQpLG4pOmN9LG4uZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9a3QodCksbik6bH0sbn0sdGEuc3ZnLmRpYWdvbmFsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLHUpe3ZhciBpPXQuY2FsbCh0aGlzLG4sdSksbz1lLmNhbGwodGhpcyxuLHUpLGE9KGkueStvLnkpLzIsYz1baSx7eDppLngseTphfSx7eDpvLngseTphfSxvXTtyZXR1cm4gYz1jLm1hcChyKSwiTSIrY1swXSsiQyIrY1sxXSsiICIrY1syXSsiICIrY1szXX12YXIgdD1tcixlPXlyLHI9VW87cmV0dXJuIG4uc291cmNlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWt0KGUpLG4pOnR9LG4udGFyZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWt0KHQpLG4pOmV9LG4ucHJvamVjdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG4pOnJ9LG59LHRhLnN2Zy5kaWFnb25hbC5yYWRpYWw9ZnVuY3Rpb24oKXt2YXIgbj10YS5zdmcuZGlhZ29uYWwoKSx0PVVvLGU9bi5wcm9qZWN0aW9uO3JldHVybiBuLnByb2plY3Rpb249ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZShqbyh0PW4pKTp0fSxufSx0YS5zdmcuc3ltYm9sPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLHIpe3JldHVybihSbC5nZXQodC5jYWxsKHRoaXMsbixyKSl8fE9vKShlLmNhbGwodGhpcyxuLHIpKX12YXIgdD1IbyxlPUZvO3JldHVybiBuLnR5cGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9a3QoZSksbik6dH0sbi5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWt0KHQpLG4pOmV9LG59O3ZhciBSbD10YS5tYXAoe2NpcmNsZTpPbyxjcm9zczpmdW5jdGlvbihuKXt2YXIgdD1NYXRoLnNxcnQobi81KS8yO3JldHVybiJNIistMyp0KyIsIistdCsiSCIrLXQrIlYiKy0zKnQrIkgiK3QrIlYiKy10KyJIIiszKnQrIlYiK3QrIkgiK3QrIlYiKzMqdCsiSCIrLXQrIlYiK3QrIkgiKy0zKnQrIloifSxkaWFtb25kOmZ1bmN0aW9uKG4pe3ZhciB0PU1hdGguc3FydChuLygyKlBsKSksZT10KlBsO3JldHVybiJNMCwiKy10KyJMIitlKyIsMCIrIiAwLCIrdCsiICIrLWUrIiwwIisiWiJ9LHNxdWFyZTpmdW5jdGlvbihuKXt2YXIgdD1NYXRoLnNxcnQobikvMjtyZXR1cm4iTSIrLXQrIiwiKy10KyJMIit0KyIsIistdCsiICIrdCsiLCIrdCsiICIrLXQrIiwiK3QrIloifSwidHJpYW5nbGUtZG93biI6ZnVuY3Rpb24obil7dmFyIHQ9TWF0aC5zcXJ0KG4vRGwpLGU9dCpEbC8yO3JldHVybiJNMCwiK2UrIkwiK3QrIiwiKy1lKyIgIistdCsiLCIrLWUrIloifSwidHJpYW5nbGUtdXAiOmZ1bmN0aW9uKG4pe3ZhciB0PU1hdGguc3FydChuL0RsKSxlPXQqRGwvMjtyZXR1cm4iTTAsIistZSsiTCIrdCsiLCIrZSsiICIrLXQrIiwiK2UrIloifX0pO3RhLnN2Zy5zeW1ib2xUeXBlcz1SbC5rZXlzKCk7dmFyIERsPU1hdGguc3FydCgzKSxQbD1NYXRoLnRhbigzMCpGYSk7a2EudHJhbnNpdGlvbj1mdW5jdGlvbihuKXtmb3IodmFyIHQsZSxyPVVsfHwrK09sLHU9WG8obiksaT1bXSxvPWpsfHx7dGltZTpEYXRlLm5vdygpLGVhc2U6U3UsZGVsYXk6MCxkdXJhdGlvbjoyNTB9LGE9LTEsYz10aGlzLmxlbmd0aDsrK2E8Yzspe2kucHVzaCh0PVtdKTtmb3IodmFyIGw9dGhpc1thXSxzPS0xLGY9bC5sZW5ndGg7KytzPGY7KShlPWxbc10pJiYkbyhlLHMsdSxyLG8pLHQucHVzaChlKX1yZXR1cm4gSW8oaSx1LHIpfSxrYS5pbnRlcnJ1cHQ9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuZWFjaChudWxsPT1uP0ZsOllvKFhvKG4pKSl9O3ZhciBVbCxqbCxGbD1ZbyhYbygpKSxIbD1bXSxPbD0wO0hsLmNhbGw9a2EuY2FsbCxIbC5lbXB0eT1rYS5lbXB0eSxIbC5ub2RlPWthLm5vZGUsSGwuc2l6ZT1rYS5zaXplLHRhLnRyYW5zaXRpb249ZnVuY3Rpb24obix0KXtyZXR1cm4gbiYmbi50cmFuc2l0aW9uP1VsP24udHJhbnNpdGlvbih0KTpuOk5hLnRyYW5zaXRpb24obil9LHRhLnRyYW5zaXRpb24ucHJvdG90eXBlPUhsLEhsLnNlbGVjdD1mdW5jdGlvbihuKXt2YXIgdCxlLHIsdT10aGlzLmlkLGk9dGhpcy5uYW1lc3BhY2Usbz1bXTtuPWsobik7Zm9yKHZhciBhPS0xLGM9dGhpcy5sZW5ndGg7KythPGM7KXtvLnB1c2godD1bXSk7Zm9yKHZhciBsPXRoaXNbYV0scz0tMSxmPWwubGVuZ3RoOysrczxmOykocj1sW3NdKSYmKGU9bi5jYWxsKHIsci5fX2RhdGFfXyxzLGEpKT8oIl9fZGF0YV9fImluIHImJihlLl9fZGF0YV9fPXIuX19kYXRhX18pLCRvKGUscyxpLHUscltpXVt1XSksdC5wdXNoKGUpKTp0LnB1c2gobnVsbCl9cmV0dXJuIElvKG8saSx1KX0sSGwuc2VsZWN0QWxsPWZ1bmN0aW9uKG4pe3ZhciB0LGUscix1LGksbz10aGlzLmlkLGE9dGhpcy5uYW1lc3BhY2UsYz1bXTtuPUUobik7Zm9yKHZhciBsPS0xLHM9dGhpcy5sZW5ndGg7KytsPHM7KWZvcih2YXIgZj10aGlzW2xdLGg9LTEsZz1mLmxlbmd0aDsrK2g8ZzspaWYocj1mW2hdKXtpPXJbYV1bb10sZT1uLmNhbGwocixyLl9fZGF0YV9fLGgsbCksYy5wdXNoKHQ9W10pO2Zvcih2YXIgcD0tMSx2PWUubGVuZ3RoOysrcDx2OykodT1lW3BdKSYmJG8odSxwLGEsbyxpKSx0LnB1c2godSl9cmV0dXJuIElvKGMsYSxvKX0sSGwuZmlsdGVyPWZ1bmN0aW9uKG4pe3ZhciB0LGUscix1PVtdOyJmdW5jdGlvbiIhPXR5cGVvZiBuJiYobj1qKG4pKTtmb3IodmFyIGk9MCxvPXRoaXMubGVuZ3RoO28+aTtpKyspe3UucHVzaCh0PVtdKTtmb3IodmFyIGU9dGhpc1tpXSxhPTAsYz1lLmxlbmd0aDtjPmE7YSsrKShyPWVbYV0pJiZuLmNhbGwocixyLl9fZGF0YV9fLGEsaSkmJnQucHVzaChyKX1yZXR1cm4gSW8odSx0aGlzLm5hbWVzcGFjZSx0aGlzLmlkKX0sSGwudHdlZW49ZnVuY3Rpb24obix0KXt2YXIgZT10aGlzLmlkLHI9dGhpcy5uYW1lc3BhY2U7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj90aGlzLm5vZGUoKVtyXVtlXS50d2Vlbi5nZXQobik6SCh0aGlzLG51bGw9PXQ/ZnVuY3Rpb24odCl7dFtyXVtlXS50d2Vlbi5yZW1vdmUobil9OmZ1bmN0aW9uKHUpe3Vbcl1bZV0udHdlZW4uc2V0KG4sdCl9KX0sSGwuYXR0cj1mdW5jdGlvbihuLHQpe2Z1bmN0aW9uIGUoKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZShhKX1mdW5jdGlvbiByKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhhLnNwYWNlLGEubG9jYWwpfWZ1bmN0aW9uIHUobil7cmV0dXJuIG51bGw9PW4/ZToobis9IiIsZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMuZ2V0QXR0cmlidXRlKGEpO3JldHVybiBlIT09biYmKHQ9byhlLG4pLGZ1bmN0aW9uKG4pe3RoaXMuc2V0QXR0cmlidXRlKGEsdChuKSl9KX0pfWZ1bmN0aW9uIGkobil7cmV0dXJuIG51bGw9PW4/cjoobis9IiIsZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMuZ2V0QXR0cmlidXRlTlMoYS5zcGFjZSxhLmxvY2FsKTtyZXR1cm4gZSE9PW4mJih0PW8oZSxuKSxmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZU5TKGEuc3BhY2UsYS5sb2NhbCx0KG4pKX0pfSl9aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodCBpbiBuKXRoaXMuYXR0cih0LG5bdF0pO3JldHVybiB0aGlzfXZhciBvPSJ0cmFuc2Zvcm0iPT1uP0h1Om11LGE9dGEubnMucXVhbGlmeShuKTtyZXR1cm4gWm8odGhpcywiYXR0ci4iK24sdCxhLmxvY2FsP2k6dSl9LEhsLmF0dHJUd2Vlbj1mdW5jdGlvbihuLHQpe2Z1bmN0aW9uIGUobixlKXt2YXIgcj10LmNhbGwodGhpcyxuLGUsdGhpcy5nZXRBdHRyaWJ1dGUodSkpO3JldHVybiByJiZmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZSh1LHIobikpfX1mdW5jdGlvbiByKG4sZSl7dmFyIHI9dC5jYWxsKHRoaXMsbixlLHRoaXMuZ2V0QXR0cmlidXRlTlModS5zcGFjZSx1LmxvY2FsKSk7cmV0dXJuIHImJmZ1bmN0aW9uKG4pe3RoaXMuc2V0QXR0cmlidXRlTlModS5zcGFjZSx1LmxvY2FsLHIobikpfX12YXIgdT10YS5ucy5xdWFsaWZ5KG4pO3JldHVybiB0aGlzLnR3ZWVuKCJhdHRyLiIrbix1LmxvY2FsP3I6ZSl9LEhsLnN0eWxlPWZ1bmN0aW9uKG4sdCxlKXtmdW5jdGlvbiByKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShuKX1mdW5jdGlvbiB1KHQpe3JldHVybiBudWxsPT10P3I6KHQrPSIiLGZ1bmN0aW9uKCl7dmFyIHIsdT1vYS5nZXRDb21wdXRlZFN0eWxlKHRoaXMsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShuKTtyZXR1cm4gdSE9PXQmJihyPW11KHUsdCksZnVuY3Rpb24odCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShuLHIodCksZSl9KX0pfXZhciBpPWFyZ3VtZW50cy5sZW5ndGg7aWYoMz5pKXtpZigic3RyaW5nIiE9dHlwZW9mIG4pezI+aSYmKHQ9IiIpO2ZvcihlIGluIG4pdGhpcy5zdHlsZShlLG5bZV0sdCk7cmV0dXJuIHRoaXN9ZT0iIn1yZXR1cm4gWm8odGhpcywic3R5bGUuIituLHQsdSl9LEhsLnN0eWxlVHdlZW49ZnVuY3Rpb24obix0LGUpe2Z1bmN0aW9uIHIocix1KXt2YXIgaT10LmNhbGwodGhpcyxyLHUsb2EuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLG51bGwpLmdldFByb3BlcnR5VmFsdWUobikpO3JldHVybiBpJiZmdW5jdGlvbih0KXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KG4saSh0KSxlKX19cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MyYmKGU9IiIpLHRoaXMudHdlZW4oInN0eWxlLiIrbixyKX0sSGwudGV4dD1mdW5jdGlvbihuKXtyZXR1cm4gWm8odGhpcywidGV4dCIsbixWbyl9LEhsLnJlbW92ZT1mdW5jdGlvbigpe3ZhciBuPXRoaXMubmFtZXNwYWNlO3JldHVybiB0aGlzLmVhY2goImVuZC50cmFuc2l0aW9uIixmdW5jdGlvbigpe3ZhciB0O3RoaXNbbl0uY291bnQ8MiYmKHQ9dGhpcy5wYXJlbnROb2RlKSYmdC5yZW1vdmVDaGlsZCh0aGlzKX0pfSxIbC5lYXNlPWZ1bmN0aW9uKG4pe3ZhciB0PXRoaXMuaWQsZT10aGlzLm5hbWVzcGFjZTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwxP3RoaXMubm9kZSgpW2VdW3RdLmVhc2U6KCJmdW5jdGlvbiIhPXR5cGVvZiBuJiYobj10YS5lYXNlLmFwcGx5KHRhLGFyZ3VtZW50cykpLEgodGhpcyxmdW5jdGlvbihyKXtyW2VdW3RdLmVhc2U9bn0pKX0sSGwuZGVsYXk9ZnVuY3Rpb24obil7dmFyIHQ9dGhpcy5pZCxlPXRoaXMubmFtZXNwYWNlO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDE/dGhpcy5ub2RlKClbZV1bdF0uZGVsYXk6SCh0aGlzLCJmdW5jdGlvbiI9PXR5cGVvZiBuP2Z1bmN0aW9uKHIsdSxpKXtyW2VdW3RdLmRlbGF5PStuLmNhbGwocixyLl9fZGF0YV9fLHUsaSl9OihuPStuLGZ1bmN0aW9uKHIpe3JbZV1bdF0uZGVsYXk9bn0pKX0sSGwuZHVyYXRpb249ZnVuY3Rpb24obil7dmFyIHQ9dGhpcy5pZCxlPXRoaXMubmFtZXNwYWNlO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDE/dGhpcy5ub2RlKClbZV1bdF0uZHVyYXRpb246SCh0aGlzLCJmdW5jdGlvbiI9PXR5cGVvZiBuP2Z1bmN0aW9uKHIsdSxpKXtyW2VdW3RdLmR1cmF0aW9uPU1hdGgubWF4KDEsbi5jYWxsKHIsci5fX2RhdGFfXyx1LGkpKX06KG49TWF0aC5tYXgoMSxuKSxmdW5jdGlvbihyKXtyW2VdW3RdLmR1cmF0aW9uPW59KSl9LEhsLmVhY2g9ZnVuY3Rpb24obix0KXt2YXIgZT10aGlzLmlkLHI9dGhpcy5uYW1lc3BhY2U7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXt2YXIgdT1qbCxpPVVsO3RyeXtVbD1lLEgodGhpcyxmdW5jdGlvbih0LHUsaSl7amw9dFtyXVtlXSxuLmNhbGwodCx0Ll9fZGF0YV9fLHUsaSl9KX1maW5hbGx5e2psPXUsVWw9aX19ZWxzZSBIKHRoaXMsZnVuY3Rpb24odSl7dmFyIGk9dVtyXVtlXTsoaS5ldmVudHx8KGkuZXZlbnQ9dGEuZGlzcGF0Y2goInN0YXJ0IiwiZW5kIiwiaW50ZXJydXB0IikpKS5vbihuLHQpfSk7cmV0dXJuIHRoaXN9LEhsLnRyYW5zaXRpb249ZnVuY3Rpb24oKXtmb3IodmFyIG4sdCxlLHIsdT10aGlzLmlkLGk9KytPbCxvPXRoaXMubmFtZXNwYWNlLGE9W10sYz0wLGw9dGhpcy5sZW5ndGg7bD5jO2MrKyl7YS5wdXNoKG49W10pO2Zvcih2YXIgdD10aGlzW2NdLHM9MCxmPXQubGVuZ3RoO2Y+cztzKyspKGU9dFtzXSkmJihyPWVbb11bdV0sJG8oZSxzLG8saSx7dGltZTpyLnRpbWUsZWFzZTpyLmVhc2UsZGVsYXk6ci5kZWxheStyLmR1cmF0aW9uLGR1cmF0aW9uOnIuZHVyYXRpb259KSksbi5wdXNoKGUpfXJldHVybiBJbyhhLG8saSl9LHRhLnN2Zy5heGlzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuKXtuLmVhY2goZnVuY3Rpb24oKXt2YXIgbixsPXRhLnNlbGVjdCh0aGlzKSxzPXRoaXMuX19jaGFydF9ffHxlLGY9dGhpcy5fX2NoYXJ0X189ZS5jb3B5KCksaD1udWxsPT1jP2YudGlja3M/Zi50aWNrcy5hcHBseShmLGEpOmYuZG9tYWluKCk6YyxnPW51bGw9PXQ/Zi50aWNrRm9ybWF0P2YudGlja0Zvcm1hdC5hcHBseShmLGEpOkV0OnQscD1sLnNlbGVjdEFsbCgiLnRpY2siKS5kYXRhKGgsZiksdj1wLmVudGVyKCkuaW5zZXJ0KCJnIiwiLmRvbWFpbiIpLmF0dHIoImNsYXNzIiwidGljayIpLnN0eWxlKCJvcGFjaXR5IixUYSksZD10YS50cmFuc2l0aW9uKHAuZXhpdCgpKS5zdHlsZSgib3BhY2l0eSIsVGEpLnJlbW92ZSgpLG09dGEudHJhbnNpdGlvbihwLm9yZGVyKCkpLnN0eWxlKCJvcGFjaXR5IiwxKSx5PU1hdGgubWF4KHUsMCkrbyxNPVVpKGYpLHg9bC5zZWxlY3RBbGwoIi5kb21haW4iKS5kYXRhKFswXSksYj0oeC5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwiZG9tYWluIiksdGEudHJhbnNpdGlvbih4KSk7di5hcHBlbmQoImxpbmUiKSx2LmFwcGVuZCgidGV4dCIpO3ZhciBfLHcsUyxrLEU9di5zZWxlY3QoImxpbmUiKSxBPW0uc2VsZWN0KCJsaW5lIiksTj1wLnNlbGVjdCgidGV4dCIpLnRleHQoZyksQz12LnNlbGVjdCgidGV4dCIpLHo9bS5zZWxlY3QoInRleHQiKSxxPSJ0b3AiPT09cnx8ImxlZnQiPT09cj8tMToxO2lmKCJib3R0b20iPT09cnx8InRvcCI9PT1yPyhuPUJvLF89IngiLFM9InkiLHc9IngyIixrPSJ5MiIsTi5hdHRyKCJkeSIsMD5xPyIwZW0iOiIuNzFlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLGIuYXR0cigiZCIsIk0iK01bMF0rIiwiK3EqaSsiVjBIIitNWzFdKyJWIitxKmkpKToobj1XbyxfPSJ5IixTPSJ4Iix3PSJ5MiIsaz0ieDIiLE4uYXR0cigiZHkiLCIuMzJlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsMD5xPyJlbmQiOiJzdGFydCIpLGIuYXR0cigiZCIsIk0iK3EqaSsiLCIrTVswXSsiSDBWIitNWzFdKyJIIitxKmkpKSxFLmF0dHIoayxxKnUpLEMuYXR0cihTLHEqeSksQS5hdHRyKHcsMCkuYXR0cihrLHEqdSksei5hdHRyKF8sMCkuYXR0cihTLHEqeSksZi5yYW5nZUJhbmQpe3ZhciBMPWYsVD1MLnJhbmdlQmFuZCgpLzI7cz1mPWZ1bmN0aW9uKG4pe3JldHVybiBMKG4pK1R9fWVsc2Ugcy5yYW5nZUJhbmQ/cz1mOmQuY2FsbChuLGYscyk7di5jYWxsKG4scyxmKSxtLmNhbGwobixmLGYpfSl9dmFyIHQsZT10YS5zY2FsZS5saW5lYXIoKSxyPVlsLHU9NixpPTYsbz0zLGE9WzEwXSxjPW51bGw7cmV0dXJuIG4uc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxuKTplfSxuLm9yaWVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10IGluIElsP3QrIiI6WWwsbik6cn0sbi50aWNrcz1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPWFyZ3VtZW50cyxuKTphfSxuLnRpY2tWYWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9dCxuKTpjfSxuLnRpY2tGb3JtYXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxuKTp0fSxuLnRpY2tTaXplPWZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg7cmV0dXJuIGU/KHU9K3QsaT0rYXJndW1lbnRzW2UtMV0sbik6dX0sbi5pbm5lclRpY2tTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSt0LG4pOnV9LG4ub3V0ZXJUaWNrU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCxuKTppfSxuLnRpY2tQYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSt0LG4pOm99LG4udGlja1N1YmRpdmlkZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoJiZufSxufTt2YXIgWWw9ImJvdHRvbSIsSWw9e3RvcDoxLHJpZ2h0OjEsYm90dG9tOjEsbGVmdDoxfTt0YS5zdmcuYnJ1c2g9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKGkpe2kuZWFjaChmdW5jdGlvbigpe3ZhciBpPXRhLnNlbGVjdCh0aGlzKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJhbGwiKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpLm9uKCJtb3VzZWRvd24uYnJ1c2giLHUpLm9uKCJ0b3VjaHN0YXJ0LmJydXNoIix1KSxvPWkuc2VsZWN0QWxsKCIuYmFja2dyb3VuZCIpLmRhdGEoWzBdKTtvLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJiYWNrZ3JvdW5kIikuc3R5bGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKS5zdHlsZSgiY3Vyc29yIiwiY3Jvc3NoYWlyIiksaS5zZWxlY3RBbGwoIi5leHRlbnQiKS5kYXRhKFswXSkuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsImV4dGVudCIpLnN0eWxlKCJjdXJzb3IiLCJtb3ZlIik7dmFyIGE9aS5zZWxlY3RBbGwoIi5yZXNpemUiKS5kYXRhKHAsRXQpO2EuZXhpdCgpLnJlbW92ZSgpLGEuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24obil7cmV0dXJuInJlc2l6ZSAiK259KS5zdHlsZSgiY3Vyc29yIixmdW5jdGlvbihuKXtyZXR1cm4gWmxbbl19KS5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4IixmdW5jdGlvbihuKXtyZXR1cm4vW2V3XSQvLnRlc3Qobik/LTM6bnVsbH0pLmF0dHIoInkiLGZ1bmN0aW9uKG4pe3JldHVybi9eW25zXS8udGVzdChuKT8tMzpudWxsfSkuYXR0cigid2lkdGgiLDYpLmF0dHIoImhlaWdodCIsNikuc3R5bGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKSxhLnN0eWxlKCJkaXNwbGF5IixuLmVtcHR5KCk/Im5vbmUiOm51bGwpO3ZhciBzLGY9dGEudHJhbnNpdGlvbihpKSxoPXRhLnRyYW5zaXRpb24obyk7YyYmKHM9VWkoYyksaC5hdHRyKCJ4IixzWzBdKS5hdHRyKCJ3aWR0aCIsc1sxXS1zWzBdKSxlKGYpKSxsJiYocz1VaShsKSxoLmF0dHIoInkiLHNbMF0pLmF0dHIoImhlaWdodCIsc1sxXS1zWzBdKSxyKGYpKSx0KGYpfSl9ZnVuY3Rpb24gdChuKXtuLnNlbGVjdEFsbCgiLnJlc2l6ZSIpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24obil7cmV0dXJuInRyYW5zbGF0ZSgiK3NbKy9lJC8udGVzdChuKV0rIiwiK2ZbKy9ecy8udGVzdChuKV0rIikifSl9ZnVuY3Rpb24gZShuKXtuLnNlbGVjdCgiLmV4dGVudCIpLmF0dHIoIngiLHNbMF0pLG4uc2VsZWN0QWxsKCIuZXh0ZW50LC5uPnJlY3QsLnM+cmVjdCIpLmF0dHIoIndpZHRoIixzWzFdLXNbMF0pfWZ1bmN0aW9uIHIobil7bi5zZWxlY3QoIi5leHRlbnQiKS5hdHRyKCJ5IixmWzBdKSxuLnNlbGVjdEFsbCgiLmV4dGVudCwuZT5yZWN0LC53PnJlY3QiKS5hdHRyKCJoZWlnaHQiLGZbMV0tZlswXSl9ZnVuY3Rpb24gdSgpe2Z1bmN0aW9uIHUoKXszMj09dGEuZXZlbnQua2V5Q29kZSYmKE58fCh5PW51bGwselswXS09c1sxXSx6WzFdLT1mWzFdLE49MiksYigpKX1mdW5jdGlvbiBwKCl7MzI9PXRhLmV2ZW50LmtleUNvZGUmJjI9PU4mJih6WzBdKz1zWzFdLHpbMV0rPWZbMV0sTj0wLGIoKSl9ZnVuY3Rpb24gdigpe3ZhciBuPXRhLm1vdXNlKHgpLHU9ITE7TSYmKG5bMF0rPU1bMF0sblsxXSs9TVsxXSksTnx8KHRhLmV2ZW50LmFsdEtleT8oeXx8KHk9WyhzWzBdK3NbMV0pLzIsKGZbMF0rZlsxXSkvMl0pLHpbMF09c1srKG5bMF08eVswXSldLHpbMV09ZlsrKG5bMV08eVsxXSldKTp5PW51bGwpLEUmJmQobixjLDApJiYoZShTKSx1PSEwKSxBJiZkKG4sbCwxKSYmKHIoUyksdT0hMCksdSYmKHQoUyksdyh7dHlwZToiYnJ1c2giLG1vZGU6Tj8ibW92ZSI6InJlc2l6ZSJ9KSl9ZnVuY3Rpb24gZChuLHQsZSl7dmFyIHIsdSxhPVVpKHQpLGM9YVswXSxsPWFbMV0scD16W2VdLHY9ZT9mOnMsZD12WzFdLXZbMF07cmV0dXJuIE4mJihjLT1wLGwtPWQrcCkscj0oZT9nOmgpP01hdGgubWF4KGMsTWF0aC5taW4obCxuW2VdKSk6bltlXSxOP3U9KHIrPXApK2Q6KHkmJihwPU1hdGgubWF4KGMsTWF0aC5taW4obCwyKnlbZV0tcikpKSxyPnA/KHU9cixyPXApOnU9cCksdlswXSE9cnx8dlsxXSE9dT8oZT9vPW51bGw6aT1udWxsLHZbMF09cix2WzFdPXUsITApOnZvaWQgMH1mdW5jdGlvbiBtKCl7digpLFMuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxsIikuc2VsZWN0QWxsKCIucmVzaXplIikuc3R5bGUoImRpc3BsYXkiLG4uZW1wdHkoKT8ibm9uZSI6bnVsbCksdGEuc2VsZWN0KCJib2R5Iikuc3R5bGUoImN1cnNvciIsbnVsbCkscS5vbigibW91c2Vtb3ZlLmJydXNoIixudWxsKS5vbigibW91c2V1cC5icnVzaCIsbnVsbCkub24oInRvdWNobW92ZS5icnVzaCIsbnVsbCkub24oInRvdWNoZW5kLmJydXNoIixudWxsKS5vbigia2V5ZG93bi5icnVzaCIsbnVsbCkub24oImtleXVwLmJydXNoIixudWxsKSxDKCksdyh7dHlwZToiYnJ1c2hlbmQifSl9dmFyIHksTSx4PXRoaXMsXz10YS5zZWxlY3QodGEuZXZlbnQudGFyZ2V0KSx3PWEub2YoeCxhcmd1bWVudHMpLFM9dGEuc2VsZWN0KHgpLGs9Xy5kYXR1bSgpLEU9IS9eKG58cykkLy50ZXN0KGspJiZjLEE9IS9eKGV8dykkLy50ZXN0KGspJiZsLE49Xy5jbGFzc2VkKCJleHRlbnQiKSxDPVgoKSx6PXRhLm1vdXNlKHgpLHE9dGEuc2VsZWN0KG9hKS5vbigia2V5ZG93bi5icnVzaCIsdSkub24oImtleXVwLmJydXNoIixwKTtpZih0YS5ldmVudC5jaGFuZ2VkVG91Y2hlcz9xLm9uKCJ0b3VjaG1vdmUuYnJ1c2giLHYpLm9uKCJ0b3VjaGVuZC5icnVzaCIsbSk6cS5vbigibW91c2Vtb3ZlLmJydXNoIix2KS5vbigibW91c2V1cC5icnVzaCIsbSksUy5pbnRlcnJ1cHQoKS5zZWxlY3RBbGwoIioiKS5pbnRlcnJ1cHQoKSxOKXpbMF09c1swXS16WzBdLHpbMV09ZlswXS16WzFdO2Vsc2UgaWYoayl7dmFyIEw9Ky93JC8udGVzdChrKSxUPSsvXm4vLnRlc3Qoayk7TT1bc1sxLUxdLXpbMF0sZlsxLVRdLXpbMV1dLHpbMF09c1tMXSx6WzFdPWZbVF19ZWxzZSB0YS5ldmVudC5hbHRLZXkmJih5PXouc2xpY2UoKSk7Uy5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJub25lIikuc2VsZWN0QWxsKCIucmVzaXplIikuc3R5bGUoImRpc3BsYXkiLG51bGwpLHRhLnNlbGVjdCgiYm9keSIpLnN0eWxlKCJjdXJzb3IiLF8uc3R5bGUoImN1cnNvciIpKSx3KHt0eXBlOiJicnVzaHN0YXJ0In0pLHYoKX12YXIgaSxvLGE9dyhuLCJicnVzaHN0YXJ0IiwiYnJ1c2giLCJicnVzaGVuZCIpLGM9bnVsbCxsPW51bGwscz1bMCwwXSxmPVswLDBdLGg9ITAsZz0hMCxwPVZsWzBdO3JldHVybiBuLmV2ZW50PWZ1bmN0aW9uKG4pe24uZWFjaChmdW5jdGlvbigpe3ZhciBuPWEub2YodGhpcyxhcmd1bWVudHMpLHQ9e3g6cyx5OmYsaTppLGo6b30sZT10aGlzLl9fY2hhcnRfX3x8dDt0aGlzLl9fY2hhcnRfXz10LFVsP3RhLnNlbGVjdCh0aGlzKS50cmFuc2l0aW9uKCkuZWFjaCgic3RhcnQuYnJ1c2giLGZ1bmN0aW9uKCl7aT1lLmksbz1lLmoscz1lLngsZj1lLnksbih7dHlwZToiYnJ1c2hzdGFydCJ9KX0pLnR3ZWVuKCJicnVzaDpicnVzaCIsZnVuY3Rpb24oKXt2YXIgZT15dShzLHQueCkscj15dShmLHQueSk7cmV0dXJuIGk9bz1udWxsLGZ1bmN0aW9uKHUpe3M9dC54PWUodSksZj10Lnk9cih1KSxuKHt0eXBlOiJicnVzaCIsbW9kZToicmVzaXplIn0pfX0pLmVhY2goImVuZC5icnVzaCIsZnVuY3Rpb24oKXtpPXQuaSxvPXQuaixuKHt0eXBlOiJicnVzaCIsbW9kZToicmVzaXplIn0pLG4oe3R5cGU6ImJydXNoZW5kIn0pfSk6KG4oe3R5cGU6ImJydXNoc3RhcnQifSksbih7dHlwZToiYnJ1c2giLG1vZGU6InJlc2l6ZSJ9KSxuKHt0eXBlOiJicnVzaGVuZCJ9KSl9KX0sbi54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPXQscD1WbFshYzw8MXwhbF0sbik6Y30sbi55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPXQscD1WbFshYzw8MXwhbF0sbik6bH0sbi5jbGFtcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYyYmbD8oaD0hIXRbMF0sZz0hIXRbMV0pOmM/aD0hIXQ6bCYmKGc9ISF0KSxuKTpjJiZsP1toLGddOmM/aDpsP2c6bnVsbH0sbi5leHRlbnQ9ZnVuY3Rpb24odCl7dmFyIGUscix1LGEsaDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYyYmKGU9dFswXSxyPXRbMV0sbCYmKGU9ZVswXSxyPXJbMF0pLGk9W2Uscl0sYy5pbnZlcnQmJihlPWMoZSkscj1jKHIpKSxlPnImJihoPWUsZT1yLHI9aCksKGUhPXNbMF18fHIhPXNbMV0pJiYocz1bZSxyXSkpLGwmJih1PXRbMF0sYT10WzFdLGMmJih1PXVbMV0sYT1hWzFdKSxvPVt1LGFdLGwuaW52ZXJ0JiYodT1sKHUpLGE9bChhKSksdT5hJiYoaD11LHU9YSxhPWgpLCh1IT1mWzBdfHxhIT1mWzFdKSYmKGY9W3UsYV0pKSxuKTooYyYmKGk/KGU9aVswXSxyPWlbMV0pOihlPXNbMF0scj1zWzFdLGMuaW52ZXJ0JiYoZT1jLmludmVydChlKSxyPWMuaW52ZXJ0KHIpKSxlPnImJihoPWUsZT1yLHI9aCkpKSxsJiYobz8odT1vWzBdLGE9b1sxXSk6KHU9ZlswXSxhPWZbMV0sbC5pbnZlcnQmJih1PWwuaW52ZXJ0KHUpLGE9bC5pbnZlcnQoYSkpLHU+YSYmKGg9dSx1PWEsYT1oKSkpLGMmJmw/W1tlLHVdLFtyLGFdXTpjP1tlLHJdOmwmJlt1LGFdKX0sbi5jbGVhcj1mdW5jdGlvbigpe3JldHVybiBuLmVtcHR5KCl8fChzPVswLDBdLGY9WzAsMF0saT1vPW51bGwpLG59LG4uZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hIWMmJnNbMF09PXNbMV18fCEhbCYmZlswXT09ZlsxXX0sdGEucmViaW5kKG4sYSwib24iKX07dmFyIFpsPXtuOiJucy1yZXNpemUiLGU6ImV3LXJlc2l6ZSIsczoibnMtcmVzaXplIix3OiJldy1yZXNpemUiLG53OiJud3NlLXJlc2l6ZSIsbmU6Im5lc3ctcmVzaXplIixzZToibndzZS1yZXNpemUiLHN3OiJuZXN3LXJlc2l6ZSJ9LFZsPVtbIm4iLCJlIiwicyIsInciLCJudyIsIm5lIiwic2UiLCJzdyJdLFsiZSIsInciXSxbIm4iLCJzIl0sW11dLFhsPWZjLmZvcm1hdD1tYy50aW1lRm9ybWF0LCRsPVhsLnV0YyxCbD0kbCgiJVktJW0tJWRUJUg6JU06JVMuJUxaIik7WGwuaXNvPURhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nJiYrbmV3IERhdGUoIjIwMDAtMDEtMDFUMDA6MDA6MDAuMDAwWiIpP0pvOkJsLEpvLnBhcnNlPWZ1bmN0aW9uKG4pe3ZhciB0PW5ldyBEYXRlKG4pO3JldHVybiBpc05hTih0KT9udWxsOnR9LEpvLnRvU3RyaW5nPUJsLnRvU3RyaW5nLGZjLnNlY29uZD1GdChmdW5jdGlvbihuKXtyZXR1cm4gbmV3IGhjKDFlMypNYXRoLmZsb29yKG4vMWUzKSl9LGZ1bmN0aW9uKG4sdCl7bi5zZXRUaW1lKG4uZ2V0VGltZSgpKzFlMypNYXRoLmZsb29yKHQpKX0sZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0U2Vjb25kcygpfSksZmMuc2Vjb25kcz1mYy5zZWNvbmQucmFuZ2UsZmMuc2Vjb25kcy51dGM9ZmMuc2Vjb25kLnV0Yy5yYW5nZSxmYy5taW51dGU9RnQoZnVuY3Rpb24obil7cmV0dXJuIG5ldyBoYyg2ZTQqTWF0aC5mbG9vcihuLzZlNCkpfSxmdW5jdGlvbihuLHQpe24uc2V0VGltZShuLmdldFRpbWUoKSs2ZTQqTWF0aC5mbG9vcih0KSl9LGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldE1pbnV0ZXMoKX0pLGZjLm1pbnV0ZXM9ZmMubWludXRlLnJhbmdlLGZjLm1pbnV0ZXMudXRjPWZjLm1pbnV0ZS51dGMucmFuZ2UsZmMuaG91cj1GdChmdW5jdGlvbihuKXt2YXIgdD1uLmdldFRpbWV6b25lT2Zmc2V0KCkvNjA7cmV0dXJuIG5ldyBoYygzNmU1KihNYXRoLmZsb29yKG4vMzZlNS10KSt0KSl9LGZ1bmN0aW9uKG4sdCl7bi5zZXRUaW1lKG4uZ2V0VGltZSgpKzM2ZTUqTWF0aC5mbG9vcih0KSl9LGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldEhvdXJzKCl9KSxmYy5ob3Vycz1mYy5ob3VyLnJhbmdlLGZjLmhvdXJzLnV0Yz1mYy5ob3VyLnV0Yy5yYW5nZSxmYy5tb250aD1GdChmdW5jdGlvbihuKXtyZXR1cm4gbj1mYy5kYXkobiksbi5zZXREYXRlKDEpLG59LGZ1bmN0aW9uKG4sdCl7bi5zZXRNb250aChuLmdldE1vbnRoKCkrdCl9LGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldE1vbnRoKCl9KSxmYy5tb250aHM9ZmMubW9udGgucmFuZ2UsZmMubW9udGhzLnV0Yz1mYy5tb250aC51dGMucmFuZ2U7dmFyIFdsPVsxZTMsNWUzLDE1ZTMsM2U0LDZlNCwzZTUsOWU1LDE4ZTUsMzZlNSwxMDhlNSwyMTZlNSw0MzJlNSw4NjRlNSwxNzI4ZTUsNjA0OGU1LDI1OTJlNiw3Nzc2ZTYsMzE1MzZlNl0sSmw9W1tmYy5zZWNvbmQsMV0sW2ZjLnNlY29uZCw1XSxbZmMuc2Vjb25kLDE1XSxbZmMuc2Vjb25kLDMwXSxbZmMubWludXRlLDFdLFtmYy5taW51dGUsNV0sW2ZjLm1pbnV0ZSwxNV0sW2ZjLm1pbnV0ZSwzMF0sW2ZjLmhvdXIsMV0sW2ZjLmhvdXIsM10sW2ZjLmhvdXIsNl0sW2ZjLmhvdXIsMTJdLFtmYy5kYXksMV0sW2ZjLmRheSwyXSxbZmMud2VlaywxXSxbZmMubW9udGgsMV0sW2ZjLm1vbnRoLDNdLFtmYy55ZWFyLDFdXSxHbD1YbC5tdWx0aShbWyIuJUwiLGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldE1pbGxpc2Vjb25kcygpfV0sWyI6JVMiLGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldFNlY29uZHMoKX1dLFsiJUk6JU0iLGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldE1pbnV0ZXMoKX1dLFsiJUkgJXAiLGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldEhvdXJzKCl9XSxbIiVhICVkIixmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXREYXkoKSYmMSE9bi5nZXREYXRlKCl9XSxbIiViICVkIixmdW5jdGlvbihuKXtyZXR1cm4gMSE9bi5nZXREYXRlKCl9XSxbIiVCIixmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRNb250aCgpfV0sWyIlWSIsTmVdXSksS2w9e3JhbmdlOmZ1bmN0aW9uKG4sdCxlKXtyZXR1cm4gdGEucmFuZ2UoTWF0aC5jZWlsKG4vZSkqZSwrdCxlKS5tYXAoS28pfSxmbG9vcjpFdCxjZWlsOkV0fTtKbC55ZWFyPWZjLnllYXIsZmMuc2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gR28odGEuc2NhbGUubGluZWFyKCksSmwsR2wpfTt2YXIgUWw9SmwubWFwKGZ1bmN0aW9uKG4pe3JldHVybltuWzBdLnV0YyxuWzFdXX0pLG5zPSRsLm11bHRpKFtbIi4lTCIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0VVRDTWlsbGlzZWNvbmRzKCl9XSxbIjolUyIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0VVRDU2Vjb25kcygpfV0sWyIlSTolTSIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0VVRDTWludXRlcygpfV0sWyIlSSAlcCIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0VVRDSG91cnMoKX1dLFsiJWEgJWQiLGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldFVUQ0RheSgpJiYxIT1uLmdldFVUQ0RhdGUoKX1dLFsiJWIgJWQiLGZ1bmN0aW9uKG4pe3JldHVybiAxIT1uLmdldFVUQ0RhdGUoKX1dLFsiJUIiLGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldFVUQ01vbnRoKCl9XSxbIiVZIixOZV1dKTtRbC55ZWFyPWZjLnllYXIudXRjLGZjLnNjYWxlLnV0Yz1mdW5jdGlvbigpe3JldHVybiBHbyh0YS5zY2FsZS5saW5lYXIoKSxRbCxucyl9LHRhLnRleHQ9QXQoZnVuY3Rpb24obil7cmV0dXJuIG4ucmVzcG9uc2VUZXh0fSksdGEuanNvbj1mdW5jdGlvbihuLHQpe3JldHVybiBOdChuLCJhcHBsaWNhdGlvbi9qc29uIixRbyx0KX0sdGEuaHRtbD1mdW5jdGlvbihuLHQpe3JldHVybiBOdChuLCJ0ZXh0L2h0bWwiLG5hLHQpfSx0YS54bWw9QXQoZnVuY3Rpb24obil7cmV0dXJuIG4ucmVzcG9uc2VYTUx9KSwiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSh0YSk6Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzJiYobW9kdWxlLmV4cG9ydHM9dGEpLHRoaXMuZDM9dGF9KCk7"></script>
<script src="data:application/javascript;base64,Ly8gV29yZCBjbG91ZCBsYXlvdXQgYnkgSmFzb24gRGF2aWVzLCBodHRwOi8vd3d3Lmphc29uZGF2aWVzLmNvbS93b3JkLWNsb3VkLwovLyBBbGdvcml0aG0gZHVlIHRvIEpvbmF0aGFuIEZlaW5iZXJnLCBodHRwOi8vc3RhdGljLm1yZmVpbmJlcmcuY29tL2J2X2NoMDMucGRmCihmdW5jdGlvbigpIHsKICBmdW5jdGlvbiBjbG91ZCgpIHsKICAgIHZhciBzaXplID0gWzI1NiwgMjU2XSwKICAgICAgICB0ZXh0ID0gY2xvdWRUZXh0LAogICAgICAgIGZvbnQgPSBjbG91ZEZvbnQsCiAgICAgICAgZm9udFNpemUgPSBjbG91ZEZvbnRTaXplLAogICAgICAgIGZvbnRTdHlsZSA9IGNsb3VkRm9udE5vcm1hbCwKICAgICAgICBmb250V2VpZ2h0ID0gY2xvdWRGb250Tm9ybWFsLAogICAgICAgIHJvdGF0ZSA9IGNsb3VkUm90YXRlLAogICAgICAgIHBhZGRpbmcgPSBjbG91ZFBhZGRpbmcsCiAgICAgICAgc3BpcmFsID0gYXJjaGltZWRlYW5TcGlyYWwsCiAgICAgICAgd29yZHMgPSBbXSwKICAgICAgICB0aW1lSW50ZXJ2YWwgPSBJbmZpbml0eSwKICAgICAgICBldmVudCA9IGQzLmRpc3BhdGNoKCJ3b3JkIiwgImVuZCIpLAogICAgICAgIHRpbWVyID0gbnVsbCwKICAgICAgICBjbG91ZCA9IHt9OwoKICAgIGNsb3VkLnN0YXJ0ID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBib2FyZCA9IHplcm9BcnJheSgoc2l6ZVswXSA+PiA1KSAqIHNpemVbMV0pLAogICAgICAgICAgYm91bmRzID0gbnVsbCwKICAgICAgICAgIG4gPSB3b3Jkcy5sZW5ndGgsCiAgICAgICAgICBpID0gLTEsCiAgICAgICAgICB0YWdzID0gW10sCiAgICAgICAgICBkYXRhID0gd29yZHMubWFwKGZ1bmN0aW9uKGQsIGkpIHsKICAgICAgICAgICAgZC50ZXh0ID0gdGV4dC5jYWxsKHRoaXMsIGQsIGkpOwogICAgICAgICAgICBkLmZvbnQgPSBmb250LmNhbGwodGhpcywgZCwgaSk7CiAgICAgICAgICAgIGQuc3R5bGUgPSBmb250U3R5bGUuY2FsbCh0aGlzLCBkLCBpKTsKICAgICAgICAgICAgZC53ZWlnaHQgPSBmb250V2VpZ2h0LmNhbGwodGhpcywgZCwgaSk7CiAgICAgICAgICAgIGQucm90YXRlID0gcm90YXRlLmNhbGwodGhpcywgZCwgaSk7CiAgICAgICAgICAgIGQuc2l6ZSA9IH5+Zm9udFNpemUuY2FsbCh0aGlzLCBkLCBpKTsKICAgICAgICAgICAgZC5wYWRkaW5nID0gcGFkZGluZy5jYWxsKHRoaXMsIGQsIGkpOwogICAgICAgICAgICByZXR1cm4gZDsKICAgICAgICAgIH0pLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYi5zaXplIC0gYS5zaXplOyB9KTsKCiAgICAgIGlmICh0aW1lcikgY2xlYXJJbnRlcnZhbCh0aW1lcik7CiAgICAgIHRpbWVyID0gc2V0SW50ZXJ2YWwoc3RlcCwgMCk7CiAgICAgIHN0ZXAoKTsKCiAgICAgIHJldHVybiBjbG91ZDsKCiAgICAgIGZ1bmN0aW9uIHN0ZXAoKSB7CiAgICAgICAgdmFyIHN0YXJ0ID0gK25ldyBEYXRlLAogICAgICAgICAgICBkOwogICAgICAgIHdoaWxlICgrbmV3IERhdGUgLSBzdGFydCA8IHRpbWVJbnRlcnZhbCAmJiArK2kgPCBuICYmIHRpbWVyKSB7CiAgICAgICAgICBkID0gZGF0YVtpXTsKICAgICAgICAgIGQueCA9IChzaXplWzBdICogKE1hdGgucmFuZG9tKCkgKyAuNSkpID4+IDE7CiAgICAgICAgICBkLnkgPSAoc2l6ZVsxXSAqIChNYXRoLnJhbmRvbSgpICsgLjUpKSA+PiAxOwogICAgICAgICAgY2xvdWRTcHJpdGUoZCwgZGF0YSwgaSk7CiAgICAgICAgICBpZiAoZC5oYXNUZXh0ICYmIHBsYWNlKGJvYXJkLCBkLCBib3VuZHMpKSB7CiAgICAgICAgICAgIHRhZ3MucHVzaChkKTsKICAgICAgICAgICAgZXZlbnQud29yZChkKTsKICAgICAgICAgICAgaWYgKGJvdW5kcykgY2xvdWRCb3VuZHMoYm91bmRzLCBkKTsKICAgICAgICAgICAgZWxzZSBib3VuZHMgPSBbe3g6IGQueCArIGQueDAsIHk6IGQueSArIGQueTB9LCB7eDogZC54ICsgZC54MSwgeTogZC55ICsgZC55MX1dOwogICAgICAgICAgICAvLyBUZW1wb3JhcnkgaGFjawogICAgICAgICAgICBkLnggLT0gc2l6ZVswXSA+PiAxOwogICAgICAgICAgICBkLnkgLT0gc2l6ZVsxXSA+PiAxOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoaSA+PSBuKSB7CiAgICAgICAgICBjbG91ZC5zdG9wKCk7CiAgICAgICAgICBldmVudC5lbmQodGFncywgYm91bmRzKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICBjbG91ZC5zdG9wID0gZnVuY3Rpb24oKSB7CiAgICAgIGlmICh0aW1lcikgewogICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpOwogICAgICAgIHRpbWVyID0gbnVsbDsKICAgICAgfQogICAgICByZXR1cm4gY2xvdWQ7CiAgICB9OwoKICAgIGNsb3VkLnRpbWVJbnRlcnZhbCA9IGZ1bmN0aW9uKHgpIHsKICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gdGltZUludGVydmFsOwogICAgICB0aW1lSW50ZXJ2YWwgPSB4ID09IG51bGwgPyBJbmZpbml0eSA6IHg7CiAgICAgIHJldHVybiBjbG91ZDsKICAgIH07CgogICAgZnVuY3Rpb24gcGxhY2UoYm9hcmQsIHRhZywgYm91bmRzKSB7CiAgICAgIHZhciBwZXJpbWV0ZXIgPSBbe3g6IDAsIHk6IDB9LCB7eDogc2l6ZVswXSwgeTogc2l6ZVsxXX1dLAogICAgICAgICAgc3RhcnRYID0gdGFnLngsCiAgICAgICAgICBzdGFydFkgPSB0YWcueSwKICAgICAgICAgIG1heERlbHRhID0gTWF0aC5zcXJ0KHNpemVbMF0gKiBzaXplWzBdICsgc2l6ZVsxXSAqIHNpemVbMV0pLAogICAgICAgICAgcyA9IHNwaXJhbChzaXplKSwKICAgICAgICAgIGR0ID0gTWF0aC5yYW5kb20oKSA8IC41ID8gMSA6IC0xLAogICAgICAgICAgdCA9IC1kdCwKICAgICAgICAgIGR4ZHksCiAgICAgICAgICBkeCwKICAgICAgICAgIGR5OwoKICAgICAgd2hpbGUgKGR4ZHkgPSBzKHQgKz0gZHQpKSB7CiAgICAgICAgZHggPSB+fmR4ZHlbMF07CiAgICAgICAgZHkgPSB+fmR4ZHlbMV07CgogICAgICAgIGlmIChNYXRoLm1pbihkeCwgZHkpID4gbWF4RGVsdGEpIGJyZWFrOwoKICAgICAgICB0YWcueCA9IHN0YXJ0WCArIGR4OwogICAgICAgIHRhZy55ID0gc3RhcnRZICsgZHk7CgogICAgICAgIGlmICh0YWcueCArIHRhZy54MCA8IDAgfHwgdGFnLnkgKyB0YWcueTAgPCAwIHx8CiAgICAgICAgICAgIHRhZy54ICsgdGFnLngxID4gc2l6ZVswXSB8fCB0YWcueSArIHRhZy55MSA+IHNpemVbMV0pIGNvbnRpbnVlOwogICAgICAgIC8vIFRPRE8gb25seSBjaGVjayBmb3IgY29sbGlzaW9ucyB3aXRoaW4gY3VycmVudCBib3VuZHMuCiAgICAgICAgaWYgKCFib3VuZHMgfHwgIWNsb3VkQ29sbGlkZSh0YWcsIGJvYXJkLCBzaXplWzBdKSkgewogICAgICAgICAgaWYgKCFib3VuZHMgfHwgY29sbGlkZVJlY3RzKHRhZywgYm91bmRzKSkgewogICAgICAgICAgICB2YXIgc3ByaXRlID0gdGFnLnNwcml0ZSwKICAgICAgICAgICAgICAgIHcgPSB0YWcud2lkdGggPj4gNSwKICAgICAgICAgICAgICAgIHN3ID0gc2l6ZVswXSA+PiA1LAogICAgICAgICAgICAgICAgbHggPSB0YWcueCAtICh3IDw8IDQpLAogICAgICAgICAgICAgICAgc3ggPSBseCAmIDB4N2YsCiAgICAgICAgICAgICAgICBtc3ggPSAzMiAtIHN4LAogICAgICAgICAgICAgICAgaCA9IHRhZy55MSAtIHRhZy55MCwKICAgICAgICAgICAgICAgIHggPSAodGFnLnkgKyB0YWcueTApICogc3cgKyAobHggPj4gNSksCiAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGg7IGorKykgewogICAgICAgICAgICAgIGxhc3QgPSAwOwogICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDw9IHc7IGkrKykgewogICAgICAgICAgICAgICAgYm9hcmRbeCArIGldIHw9IChsYXN0IDw8IG1zeCkgfCAoaSA8IHcgPyAobGFzdCA9IHNwcml0ZVtqICogdyArIGldKSA+Pj4gc3ggOiAwKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgeCArPSBzdzsKICAgICAgICAgICAgfQogICAgICAgICAgICBkZWxldGUgdGFnLnNwcml0ZTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBjbG91ZC53b3JkcyA9IGZ1bmN0aW9uKHgpIHsKICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gd29yZHM7CiAgICAgIHdvcmRzID0geDsKICAgICAgcmV0dXJuIGNsb3VkOwogICAgfTsKCiAgICBjbG91ZC5zaXplID0gZnVuY3Rpb24oeCkgewogICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBzaXplOwogICAgICBzaXplID0gWyt4WzBdLCAreFsxXV07CiAgICAgIHJldHVybiBjbG91ZDsKICAgIH07CgogICAgY2xvdWQuZm9udCA9IGZ1bmN0aW9uKHgpIHsKICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gZm9udDsKICAgICAgZm9udCA9IGQzLmZ1bmN0b3IoeCk7CiAgICAgIHJldHVybiBjbG91ZDsKICAgIH07CgogICAgY2xvdWQuZm9udFN0eWxlID0gZnVuY3Rpb24oeCkgewogICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBmb250U3R5bGU7CiAgICAgIGZvbnRTdHlsZSA9IGQzLmZ1bmN0b3IoeCk7CiAgICAgIHJldHVybiBjbG91ZDsKICAgIH07CgogICAgY2xvdWQuZm9udFdlaWdodCA9IGZ1bmN0aW9uKHgpIHsKICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gZm9udFdlaWdodDsKICAgICAgZm9udFdlaWdodCA9IGQzLmZ1bmN0b3IoeCk7CiAgICAgIHJldHVybiBjbG91ZDsKICAgIH07CgogICAgY2xvdWQucm90YXRlID0gZnVuY3Rpb24oeCkgewogICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiByb3RhdGU7CiAgICAgIHJvdGF0ZSA9IGQzLmZ1bmN0b3IoeCk7CiAgICAgIHJldHVybiBjbG91ZDsKICAgIH07CgogICAgY2xvdWQudGV4dCA9IGZ1bmN0aW9uKHgpIHsKICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gdGV4dDsKICAgICAgdGV4dCA9IGQzLmZ1bmN0b3IoeCk7CiAgICAgIHJldHVybiBjbG91ZDsKICAgIH07CgogICAgY2xvdWQuc3BpcmFsID0gZnVuY3Rpb24oeCkgewogICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBzcGlyYWw7CiAgICAgIHNwaXJhbCA9IHNwaXJhbHNbeCArICIiXSB8fCB4OwogICAgICByZXR1cm4gY2xvdWQ7CiAgICB9OwoKICAgIGNsb3VkLmZvbnRTaXplID0gZnVuY3Rpb24oeCkgewogICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBmb250U2l6ZTsKICAgICAgZm9udFNpemUgPSBkMy5mdW5jdG9yKHgpOwogICAgICByZXR1cm4gY2xvdWQ7CiAgICB9OwoKICAgIGNsb3VkLnBhZGRpbmcgPSBmdW5jdGlvbih4KSB7CiAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIHBhZGRpbmc7CiAgICAgIHBhZGRpbmcgPSBkMy5mdW5jdG9yKHgpOwogICAgICByZXR1cm4gY2xvdWQ7CiAgICB9OwoKICAgIHJldHVybiBkMy5yZWJpbmQoY2xvdWQsIGV2ZW50LCAib24iKTsKICB9CgogIGZ1bmN0aW9uIGNsb3VkVGV4dChkKSB7CiAgICByZXR1cm4gZC50ZXh0OwogIH0KCiAgZnVuY3Rpb24gY2xvdWRGb250KCkgewogICAgcmV0dXJuICJzZXJpZiI7CiAgfQoKICBmdW5jdGlvbiBjbG91ZEZvbnROb3JtYWwoKSB7CiAgICByZXR1cm4gIm5vcm1hbCI7CiAgfQoKICBmdW5jdGlvbiBjbG91ZEZvbnRTaXplKGQpIHsKICAgIHJldHVybiBNYXRoLnNxcnQoZC52YWx1ZSk7CiAgfQoKICBmdW5jdGlvbiBjbG91ZFJvdGF0ZSgpIHsKICAgIHJldHVybiAofn4oTWF0aC5yYW5kb20oKSAqIDYpIC0gMykgKiAzMDsKICB9CgogIGZ1bmN0aW9uIGNsb3VkUGFkZGluZygpIHsKICAgIHJldHVybiAxOwogIH0KCiAgLy8gRmV0Y2hlcyBhIG1vbm9jaHJvbWUgc3ByaXRlIGJpdG1hcCBmb3IgdGhlIHNwZWNpZmllZCB0ZXh0LgogIC8vIExvYWQgaW4gYmF0Y2hlcyBmb3Igc3BlZWQuCiAgZnVuY3Rpb24gY2xvdWRTcHJpdGUoZCwgZGF0YSwgZGkpIHsKICAgIGlmIChkLnNwcml0ZSkgcmV0dXJuOwogICAgYy5jbGVhclJlY3QoMCwgMCwgKGN3IDw8IDUpIC8gcmF0aW8sIGNoIC8gcmF0aW8pOwogICAgdmFyIHggPSAwLAogICAgICAgIHkgPSAwLAogICAgICAgIG1heGggPSAwLAogICAgICAgIG4gPSBkYXRhLmxlbmd0aDsKICAgIC0tZGk7CiAgICB3aGlsZSAoKytkaSA8IG4pIHsKICAgICAgZCA9IGRhdGFbZGldOwogICAgICBjLnNhdmUoKTsKICAgICAgYy5mb250ID0gZC5zdHlsZSArICIgIiArIGQud2VpZ2h0ICsgIiAiICsgfn4oKGQuc2l6ZSArIDEpIC8gcmF0aW8pICsgInB4ICIgKyBkLmZvbnQ7CiAgICAgIHZhciB3ID0gYy5tZWFzdXJlVGV4dChkLnRleHQgKyAibSIpLndpZHRoICogcmF0aW8sCiAgICAgICAgICBoID0gZC5zaXplIDw8IDE7CiAgICAgIGlmIChkLnJvdGF0ZSkgewogICAgICAgIHZhciBzciA9IE1hdGguc2luKGQucm90YXRlICogY2xvdWRSYWRpYW5zKSwKICAgICAgICAgICAgY3IgPSBNYXRoLmNvcyhkLnJvdGF0ZSAqIGNsb3VkUmFkaWFucyksCiAgICAgICAgICAgIHdjciA9IHcgKiBjciwKICAgICAgICAgICAgd3NyID0gdyAqIHNyLAogICAgICAgICAgICBoY3IgPSBoICogY3IsCiAgICAgICAgICAgIGhzciA9IGggKiBzcjsKICAgICAgICB3ID0gKE1hdGgubWF4KE1hdGguYWJzKHdjciArIGhzciksIE1hdGguYWJzKHdjciAtIGhzcikpICsgMHgxZikgPj4gNSA8PCA1OwogICAgICAgIGggPSB+fk1hdGgubWF4KE1hdGguYWJzKHdzciArIGhjciksIE1hdGguYWJzKHdzciAtIGhjcikpOwogICAgICB9IGVsc2UgewogICAgICAgIHcgPSAodyArIDB4MWYpID4+IDUgPDwgNTsKICAgICAgfQogICAgICBpZiAoaCA+IG1heGgpIG1heGggPSBoOwogICAgICBpZiAoeCArIHcgPj0gKGN3IDw8IDUpKSB7CiAgICAgICAgeCA9IDA7CiAgICAgICAgeSArPSBtYXhoOwogICAgICAgIG1heGggPSAwOwogICAgICB9CiAgICAgIGlmICh5ICsgaCA+PSBjaCkgYnJlYWs7CiAgICAgIGMudHJhbnNsYXRlKCh4ICsgKHcgPj4gMSkpIC8gcmF0aW8sICh5ICsgKGggPj4gMSkpIC8gcmF0aW8pOwogICAgICBpZiAoZC5yb3RhdGUpIGMucm90YXRlKGQucm90YXRlICogY2xvdWRSYWRpYW5zKTsKICAgICAgYy5maWxsVGV4dChkLnRleHQsIDAsIDApOwogICAgICBpZiAoZC5wYWRkaW5nKSBjLmxpbmVXaWR0aCA9IDIgKiBkLnBhZGRpbmcsIGMuc3Ryb2tlVGV4dChkLnRleHQsIDAsIDApOwogICAgICBjLnJlc3RvcmUoKTsKICAgICAgZC53aWR0aCA9IHc7CiAgICAgIGQuaGVpZ2h0ID0gaDsKICAgICAgZC54b2ZmID0geDsKICAgICAgZC55b2ZmID0geTsKICAgICAgZC54MSA9IHcgPj4gMTsKICAgICAgZC55MSA9IGggPj4gMTsKICAgICAgZC54MCA9IC1kLngxOwogICAgICBkLnkwID0gLWQueTE7CiAgICAgIGQuaGFzVGV4dCA9IHRydWU7CiAgICAgIHggKz0gdzsKICAgIH0KICAgIHZhciBwaXhlbHMgPSBjLmdldEltYWdlRGF0YSgwLCAwLCAoY3cgPDwgNSkgLyByYXRpbywgY2ggLyByYXRpbykuZGF0YSwKICAgICAgICBzcHJpdGUgPSBbXTsKICAgIHdoaWxlICgtLWRpID49IDApIHsKICAgICAgZCA9IGRhdGFbZGldOwogICAgICBpZiAoIWQuaGFzVGV4dCkgY29udGludWU7CiAgICAgIHZhciB3ID0gZC53aWR0aCwKICAgICAgICAgIHczMiA9IHcgPj4gNSwKICAgICAgICAgIGggPSBkLnkxIC0gZC55MDsKICAgICAgLy8gWmVybyB0aGUgYnVmZmVyCiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaCAqIHczMjsgaSsrKSBzcHJpdGVbaV0gPSAwOwogICAgICB4ID0gZC54b2ZmOwogICAgICBpZiAoeCA9PSBudWxsKSByZXR1cm47CiAgICAgIHkgPSBkLnlvZmY7CiAgICAgIHZhciBzZWVuID0gMCwKICAgICAgICAgIHNlZW5Sb3cgPSAtMTsKICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBoOyBqKyspIHsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHc7IGkrKykgewogICAgICAgICAgdmFyIGsgPSB3MzIgKiBqICsgKGkgPj4gNSksCiAgICAgICAgICAgICAgbSA9IHBpeGVsc1soKHkgKyBqKSAqIChjdyA8PCA1KSArICh4ICsgaSkpIDw8IDJdID8gMSA8PCAoMzEgLSAoaSAlIDMyKSkgOiAwOwogICAgICAgICAgc3ByaXRlW2tdIHw9IG07CiAgICAgICAgICBzZWVuIHw9IG07CiAgICAgICAgfQogICAgICAgIGlmIChzZWVuKSBzZWVuUm93ID0gajsKICAgICAgICBlbHNlIHsKICAgICAgICAgIGQueTArKzsKICAgICAgICAgIGgtLTsKICAgICAgICAgIGotLTsKICAgICAgICAgIHkrKzsKICAgICAgICB9CiAgICAgIH0KICAgICAgZC55MSA9IGQueTAgKyBzZWVuUm93OwogICAgICBkLnNwcml0ZSA9IHNwcml0ZS5zbGljZSgwLCAoZC55MSAtIGQueTApICogdzMyKTsKICAgIH0KICB9CgogIC8vIFVzZSBtYXNrLWJhc2VkIGNvbGxpc2lvbiBkZXRlY3Rpb24uCiAgZnVuY3Rpb24gY2xvdWRDb2xsaWRlKHRhZywgYm9hcmQsIHN3KSB7CiAgICBzdyA+Pj0gNTsKICAgIHZhciBzcHJpdGUgPSB0YWcuc3ByaXRlLAogICAgICAgIHcgPSB0YWcud2lkdGggPj4gNSwKICAgICAgICBseCA9IHRhZy54IC0gKHcgPDwgNCksCiAgICAgICAgc3ggPSBseCAmIDB4N2YsCiAgICAgICAgbXN4ID0gMzIgLSBzeCwKICAgICAgICBoID0gdGFnLnkxIC0gdGFnLnkwLAogICAgICAgIHggPSAodGFnLnkgKyB0YWcueTApICogc3cgKyAobHggPj4gNSksCiAgICAgICAgbGFzdDsKICAgIGZvciAodmFyIGogPSAwOyBqIDwgaDsgaisrKSB7CiAgICAgIGxhc3QgPSAwOwogICAgICBmb3IgKHZhciBpID0gMDsgaSA8PSB3OyBpKyspIHsKICAgICAgICBpZiAoKChsYXN0IDw8IG1zeCkgfCAoaSA8IHcgPyAobGFzdCA9IHNwcml0ZVtqICogdyArIGldKSA+Pj4gc3ggOiAwKSkKICAgICAgICAgICAgJiBib2FyZFt4ICsgaV0pIHJldHVybiB0cnVlOwogICAgICB9CiAgICAgIHggKz0gc3c7CiAgICB9CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICBmdW5jdGlvbiBjbG91ZEJvdW5kcyhib3VuZHMsIGQpIHsKICAgIHZhciBiMCA9IGJvdW5kc1swXSwKICAgICAgICBiMSA9IGJvdW5kc1sxXTsKICAgIGlmIChkLnggKyBkLngwIDwgYjAueCkgYjAueCA9IGQueCArIGQueDA7CiAgICBpZiAoZC55ICsgZC55MCA8IGIwLnkpIGIwLnkgPSBkLnkgKyBkLnkwOwogICAgaWYgKGQueCArIGQueDEgPiBiMS54KSBiMS54ID0gZC54ICsgZC54MTsKICAgIGlmIChkLnkgKyBkLnkxID4gYjEueSkgYjEueSA9IGQueSArIGQueTE7CiAgfQoKICBmdW5jdGlvbiBjb2xsaWRlUmVjdHMoYSwgYikgewogICAgcmV0dXJuIGEueCArIGEueDEgPiBiWzBdLnggJiYgYS54ICsgYS54MCA8IGJbMV0ueCAmJiBhLnkgKyBhLnkxID4gYlswXS55ICYmIGEueSArIGEueTAgPCBiWzFdLnk7CiAgfQoKICBmdW5jdGlvbiBhcmNoaW1lZGVhblNwaXJhbChzaXplKSB7CiAgICB2YXIgZSA9IHNpemVbMF0gLyBzaXplWzFdOwogICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHsKICAgICAgcmV0dXJuIFtlICogKHQgKj0gLjEpICogTWF0aC5jb3ModCksIHQgKiBNYXRoLnNpbih0KV07CiAgICB9OwogIH0KCiAgZnVuY3Rpb24gcmVjdGFuZ3VsYXJTcGlyYWwoc2l6ZSkgewogICAgdmFyIGR5ID0gNCwKICAgICAgICBkeCA9IGR5ICogc2l6ZVswXSAvIHNpemVbMV0sCiAgICAgICAgeCA9IDAsCiAgICAgICAgeSA9IDA7CiAgICByZXR1cm4gZnVuY3Rpb24odCkgewogICAgICB2YXIgc2lnbiA9IHQgPCAwID8gLTEgOiAxOwogICAgICAvLyBTZWUgdHJpYW5ndWxhciBudW1iZXJzOiBUX24gPSBuICogKG4gKyAxKSAvIDIuCiAgICAgIHN3aXRjaCAoKE1hdGguc3FydCgxICsgNCAqIHNpZ24gKiB0KSAtIHNpZ24pICYgMykgewogICAgICAgIGNhc2UgMDogIHggKz0gZHg7IGJyZWFrOwogICAgICAgIGNhc2UgMTogIHkgKz0gZHk7IGJyZWFrOwogICAgICAgIGNhc2UgMjogIHggLT0gZHg7IGJyZWFrOwogICAgICAgIGRlZmF1bHQ6IHkgLT0gZHk7IGJyZWFrOwogICAgICB9CiAgICAgIHJldHVybiBbeCwgeV07CiAgICB9OwogIH0KCiAgLy8gVE9ETyByZXVzZSBhcnJheXM/CiAgZnVuY3Rpb24gemVyb0FycmF5KG4pIHsKICAgIHZhciBhID0gW10sCiAgICAgICAgaSA9IC0xOwogICAgd2hpbGUgKCsraSA8IG4pIGFbaV0gPSAwOwogICAgcmV0dXJuIGE7CiAgfQoKICB2YXIgY2xvdWRSYWRpYW5zID0gTWF0aC5QSSAvIDE4MCwKICAgICAgY3cgPSAxIDw8IDExID4+IDUsCiAgICAgIGNoID0gMSA8PCAxMSwKICAgICAgY2FudmFzLAogICAgICByYXRpbyA9IDE7CgogIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICJ1bmRlZmluZWQiKSB7CiAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKICAgIGNhbnZhcy53aWR0aCA9IDE7CiAgICBjYW52YXMuaGVpZ2h0ID0gMTsKICAgIHJhdGlvID0gTWF0aC5zcXJ0KGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxKS5kYXRhLmxlbmd0aCA+PiAyKTsKICAgIGNhbnZhcy53aWR0aCA9IChjdyA8PCA1KSAvIHJhdGlvOwogICAgY2FudmFzLmhlaWdodCA9IGNoIC8gcmF0aW87CiAgfSBlbHNlIHsKICAgIC8vIEF0dGVtcHQgdG8gdXNlIG5vZGUtY2FudmFzLgogICAgY2FudmFzID0gbmV3IENhbnZhcyhjdyA8PCA1LCBjaCk7CiAgfQoKICB2YXIgYyA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpLAogICAgICBzcGlyYWxzID0gewogICAgICAgIGFyY2hpbWVkZWFuOiBhcmNoaW1lZGVhblNwaXJhbCwKICAgICAgICByZWN0YW5ndWxhcjogcmVjdGFuZ3VsYXJTcGlyYWwKICAgICAgfTsKICBjLmZpbGxTdHlsZSA9IGMuc3Ryb2tlU3R5bGUgPSAicmVkIjsKICBjLnRleHRBbGlnbiA9ICJjZW50ZXIiOwoKICBpZiAodHlwZW9mIG1vZHVsZSA9PT0gIm9iamVjdCIgJiYgbW9kdWxlLmV4cG9ydHMpIG1vZHVsZS5leHBvcnRzID0gY2xvdWQ7CiAgZWxzZSAoZDMubGF5b3V0IHx8IChkMy5sYXlvdXQgPSB7fSkpLmNsb3VkID0gY2xvdWQ7Cn0pKCk7Cg=="></script>
<script src="data:application/javascript;base64,SFRNTFdpZGdldHMud2lkZ2V0KHsKCiAgbmFtZTogJ2Qzd29yZGNsb3VkJywKCiAgdHlwZTogJ291dHB1dCcsCgogIGRyYXdXb3JkQ2xvdWQ6IGZ1bmN0aW9uKGVsLCBpbnN0YW5jZSkgewoKICAgIHZhciB4ID0gaW5zdGFuY2UueDsKCiAgICBjb25zb2xlLmxvZyh4LnBhcnMpOwogICAgY29uc29sZS5sb2coeC5kYXRhKTsKCiAgICB2YXIgZGF0YSA9IEhUTUxXaWRnZXRzLmRhdGFmcmFtZVRvRDMoeC5kYXRhKTsKCiAgICB2YXIgdyA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoOwogICAgdmFyIGggPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7CgogICAgaW5zdGFuY2Uuc3ZnLmF0dHIoIndpZHRoIiwgdykuYXR0cigiaGVpZ2h0IiwgaCk7CiAgICBpbnN0YW5jZS52aXMuYXR0cigidHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgiICsgW3cgPj4gMSwgaCA+PiAxXSArICIpIik7CgogICAgaWYoIWluc3RhbmNlLmRyYXduKXsKICAgICAgZDMuc2VsZWN0KCJoZWFkIikKICAgICAgICAuYXBwZW5kKCJsaW5rIikKICAgICAgICAuYXR0cigiaHJlZiIsICJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9IiArIHgucGFycy5mb250KQogICAgICAgIC5hdHRyKCJyZWwiLCAic3R5bGVzaGVldCIpOwogICAgfQoKICAgIHZhciBzaXplc2NhbGU7CiAgICBzd2l0Y2ggKHgucGFycy5zaXplc2NhbGUpIHsKICAgICAgICBjYXNlICJsb2ciOgogICAgICAgICAgICBzaXplc2NhbGUgPSBkMy5zY2FsZS5sb2coKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAic3FydCI6CiAgICAgICAgICAgIHNpemVzY2FsZSA9IGQzLnNjYWxlLnNxcnQoKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAibGluZWFyIjoKICAgICAgICAgICAgc2l6ZXNjYWxlID0gZDMuc2NhbGUubGluZWFyKCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHNpemVzY2FsZSA9IGQzLnNjYWxlLmxvZygpOwogICAgfQoKICAgIHZhciBzaXplc2NhbGUgPSBzaXplc2NhbGUKICAgICAgLmRvbWFpbihbZDMubWluKGRhdGEsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQuc2l6ZTsgfSksCiAgICAgICAgICAgICAgIGQzLm1heChkYXRhLCBmdW5jdGlvbihkKSB7IHJldHVybiBkLnNpemU7IH0pXSkKICAgICAgLnJhbmdlKHgucGFycy5yYW5nZXNpemVmb250KTsKCiAgICB2YXIgY29sb3JzY2FsZTsKICAgIHN3aXRjaCAoeC5wYXJzLmNvbG9yc2NhbGUpIHsKICAgICAgICBjYXNlICJsb2ciOgogICAgICAgICAgICBjb2xvcnNjYWxlID0gZDMuc2NhbGUubG9nKCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgInNxcnQiOgogICAgICAgICAgICBjb2xvcnNjYWxlID0gZDMuc2NhbGUuc3FydCgpOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICJsaW5lYXIiOgogICAgICAgICAgICBjb2xvcnNjYWxlID0gZDMuc2NhbGUubGluZWFyKCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIGNvbG9yc2NhbGUgPSBkMy5zY2FsZS5sb2coKTsKICAgIH0KCiAgICBpZigheC5wYXJzLm1pc3NpbmdfY29sb3JzKXsKICAgICAgaWYoeC5wYXJzLmV2ZXJ5X3dvcmRfaGFzX293bl9jb2xvcil7CiAgICAgICAgY29sb3JzY2FsZSA9IGQzLnNjYWxlLm9yZGluYWwoKQogICAgICAgICAgLmRvbWFpbih4LmRhdGEudGV4dCkKICAgICAgICAgIC5yYW5nZSh4LmRhdGEuY29sb3IpOwoKICAgICAgfSBlbHNlIHsKCiAgICAgICAgbWluc2l6ZSA9IGQzLm1pbihkYXRhLCBmdW5jdGlvbihkKSB7IHJldHVybiBkLnNpemU7IH0pOwogICAgICAgIG1heHNpemUgPSBkMy5tYXgoZGF0YSwgZnVuY3Rpb24oZCkgeyByZXR1cm4gZC5zaXplOyB9KTsKCiAgICAgICAgY29sb3JzY2FsZSA9IGNvbG9yc2NhbGUKICAgICAgICAgIC5kb21haW4oZDMucmFuZ2UobWluc2l6ZSwgbWF4c2l6ZSwgKG1heHNpemUtbWluc2l6ZSkveC5wYXJzLmNvbG9ycy5sZW5ndGgpKQogICAgICAgICAgLnJhbmdlKHgucGFycy5jb2xvcnMpOwoKICAgICAgfQoKICAgIH0gZWxzZSB7CgogICAgICBjb2xvcnNjYWxlID0gZDMuc2NhbGUuY2F0ZWdvcnkyMGIoKTsKCiAgICB9CgogICAgdmFyIHNwaXJhbDsKICAgIHN3aXRjaCAoeC5wYXJzLnNwaXJhbCkgewogICAgICAgIGNhc2UgInJlY3Rhbmd1bGFyIjoKICAgICAgICAgICAgc3BpcmFsID0gInJlY3Rhbmd1bGFyIjsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAiYXJjaGltZWRlYW4iOgogICAgICAgICAgICBzcGlyYWwgPSAiYXJjaGltZWRlYW4iOwogICAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICBzcGlyYWwgPSAiYXJjaGltZWRlYW4iOwogICAgfQoKICAgIC8vIGJhaWwgaWYgd2lkdGggb3IgaGVpZ2h0IGlzIDAKICAgIC8vICBzaW5jZSB0aGlzIHdpbGwgY2F1c2Ugd29yZGNsb3VkIHRvIGVudGVyIGluZmluaXRlIGxvb3AKICAgIGlmKHc9PT0wIHx8IGg9PT0wKXsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIGluc3RhbmNlLmNsb3VkCiAgICAgIC5zaXplKFt3LCBoXSkKICAgICAgLndvcmRzKGRhdGEpCiAgICAgIC5wYWRkaW5nKHgucGFycy5wYWRkaW5nKQogICAgICAucm90YXRlKGZ1bmN0aW9uKCkgeyByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKHgucGFycy5yb3RtYXggLSB4LnBhcnMucm90bWluKSkgKyB4LnBhcnMucm90bWluOyB9KQogICAgICAuZm9udCh4LnBhcnMuZm9udCkKICAgICAgLmZvbnRTaXplKGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHNpemVzY2FsZShkLnNpemUpOyB9KQogICAgICAuc3BpcmFsKHNwaXJhbCkKICAgICAgLm9uKCJlbmQiLCBkcmF3KQogICAgICAuc3RhcnQoKTsKCiAgICBmdW5jdGlvbiBkcmF3KHdvcmRzKSB7CiAgICAgIGluc3RhbmNlLmRyYXduID0gdHJ1ZTsKCiAgICAgIHZhciB0ZXh0ID0gaW5zdGFuY2UudmlzLnNlbGVjdEFsbCgidGV4dCIpCiAgICAgICAgLmRhdGEod29yZHMsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudGV4dC50b0xvd2VyQ2FzZSgpOyB9KTsKCiAgICAgIHRleHQudHJhbnNpdGlvbigpCiAgICAgICAgLmR1cmF0aW9uKDEwMDApCiAgICAgICAgLmF0dHIoInRyYW5zZm9ybSIsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuICJ0cmFuc2xhdGUoIiArIFtkLngsIGQueV0gKyAiKXJvdGF0ZSgiICsgZC5yb3RhdGUgKyAiKSI7IH0pCiAgICAgICAgLnN0eWxlKCJmb250LXNpemUiLCBmdW5jdGlvbihkKSB7IHJldHVybiBkLnNpemUgKyAicHgiOyB9KTsKCiAgICAgIHRleHQuZW50ZXIoKS5hcHBlbmQoInRleHQiKQogICAgICAgIC5hdHRyKCJ0ZXh0LWFuY2hvciIsICJtaWRkbGUiKQogICAgICAgIC5hdHRyKCJ0cmFuc2Zvcm0iLCBmdW5jdGlvbihkKSB7IHJldHVybiAidHJhbnNsYXRlKCIgKyBbZC54LCBkLnldICsgIilyb3RhdGUoIiArIGQucm90YXRlICsgIikiOyB9KQogICAgICAgIC5zdHlsZSgiZm9udC1zaXplIiwgIjFweCIpCiAgICAgICAgLnRyYW5zaXRpb24oKQogICAgICAgIC5kdXJhdGlvbigxMDAwKQogICAgICAgIC5zdHlsZSgiZm9udC1zaXplIiwgZnVuY3Rpb24oZCkgeyByZXR1cm4gZC5zaXplICsgInB4IjsgfSkKICAgICAgICAuc3R5bGUoImN1cnNvciIsICJwb2ludGVyIik7CgogICAgICB0ZXh0LnN0eWxlKCJmb250LWZhbWlseSIsIHgucGFycy5mb250KQogICAgICAgIC5zdHlsZSgiZmlsbCIsIGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICBpZiAoeC5wYXJzLmV2ZXJ5X3dvcmRfaGFzX293bl9jb2xvcikgewogICAgICAgICAgICAgcmV0dXJuIGQuY29sb3I7CiAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICByZXR1cm4gY29sb3JzY2FsZShkLnNpemUpOwogICAgICAgICAgIH0KICAgICAgICB9KQogICAgICAgIC5hdHRyKCJkYXRhLXRvZ2dsZSIsICJ0b29sdGlwIikKICAgICAgICAudGV4dChmdW5jdGlvbihkKSB7IHJldHVybiBkLnRleHQ7IH0pCiAgICAgICAgLm9uKCJjbGljayIsIGZ1bmN0aW9uKGQpIHsgCiAgICAgICAgICAgIGNvbnNvbGUubG9nKCJTZWxlY3RlZCB3b3JkczoiK2QudGV4dCk7ICAKCQkJaWYgKHR5cGVvZiBTaGlueSAhPSAndW5kZWZpbmVkJykgewoJCQlTaGlueS5vbklucHV0Q2hhbmdlKCdkM3dvcmRjbG91ZF9jbGljaycsZC50ZXh0KSB9CgkJfSk7OwoKICAgICAgdmFyIGV4aXRHcm91cCA9IGluc3RhbmNlLmJhY2tncm91bmQuc2VsZWN0QWxsKCJnIikuZGF0YShbMF0pOwoKICAgICAgZXhpdEdyb3VwLmFwcGVuZCgiZyIpCiAgICAgICAgLmF0dHIoInRyYW5zZm9ybSIsIGluc3RhbmNlLnZpcy5hdHRyKCJ0cmFuc2Zvcm0iKSk7CgogICAgICB2YXIgZXhpdEdyb3VwTm9kZSA9IGV4aXRHcm91cC5ub2RlKCk7CgogICAgICB0ZXh0LmV4aXQoKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgIGV4aXRHcm91cE5vZGUuYXBwZW5kQ2hpbGQodGhpcyk7CiAgICAgIH0pOwoKICAgICAgZXhpdEdyb3VwLnRyYW5zaXRpb24oKQogICAgICAgIC5kdXJhdGlvbigxMDAwKQogICAgICAgIC5zdHlsZSgib3BhY2l0eSIsIDFlLTYpCiAgICAgICAgLnJlbW92ZSgpOwoKICAgICAgaW5zdGFuY2UudmlzLnRyYW5zaXRpb24oKQogICAgICAgIC5kZWxheSgxMDAwKQogICAgICAgIC5kdXJhdGlvbig3NTApCiAgICAgICAgLmF0dHIoInRyYW5zZm9ybSIsICJ0cmFuc2xhdGUoIiArIFt3ID4+IDEsIGggPj4gMV0gKyAiKXNjYWxlKCIgKyAxICsgIikiKTsKCiAgICAgIGlmKHgucGFycy50b29sdGlwKSB7CiAgICAgICAgICB2YXIgdG9vbHRpcCA9IGQzLnNlbGVjdChlbCkuc2VsZWN0QWxsKCcuZDN3b3JkY2xvdWQtdG9vbHRpcCcpLmRhdGEoWzBdKTsKCiAgICAgICAgICB0b29sdGlwLmVudGVyKCkKICAgICAgICAgICAgLmFwcGVuZCgiZGl2IikKICAgICAgICAgICAgLmF0dHIoImNsYXNzIiwgImQzd29yZGNsb3VkLXRvb2x0aXAiKQogICAgICAgICAgICAuc3R5bGUoImZvbnQtZmFtaWx5IiwgeC5wYXJzLmZvbnQpCiAgICAgICAgICAgIC5zdHlsZSgicG9zaXRpb24iLCAiYWJzb2x1dGUiKQogICAgICAgICAgICAuc3R5bGUoInBvc2l0aW9uIiwgImFic29sdXRlIikKICAgICAgICAgICAgLnN0eWxlKCJ0ZXh0LWFsaWduIiwgInJpZ2h0IikKICAgICAgICAgICAgLnN0eWxlKCJiYWNrZ3JvdW5kIiwgIiMzMzMiKQogICAgICAgICAgICAuc3R5bGUoIm1hcmdpbiIsICIzcHgiKQogICAgICAgICAgICAuc3R5bGUoImNvbG9yIiwid2hpdGUiKQogICAgICAgICAgICAuc3R5bGUoInBhZGRpbmciLCIzcHgiKQogICAgICAgICAgICAuc3R5bGUoImJvcmRlciIsIjBweCIpCiAgICAgICAgICAgIC5zdHlsZSgiYm9yZGVyLXJhZGl1cyIsIjNweCIpIC8vIDNweCBydWxlCiAgICAgICAgICAgIC5zdHlsZSgib3BhY2l0eSIsMCkKICAgICAgICAgICAgLnN0eWxlKCJjdXJzb3IiLCAiZGVmYXVsdCIpOwoKICAgICAgICAgIHRleHQKICAgICAgICAgICAgLm9uKCJtb3VzZW92ZXIiLCBtb3VzZW92ZXIpCiAgICAgICAgICAgIC5vbigibW91c2VvdXQiLCBtb3VzZW91dCkKCQkJLy8ub24oIm1vdXNlZG93biIsIG1vdXNlZG93bikKICAgICAgICAgICAgLm9uKCJtb3VzZW1vdmUiLCBtb3VzZW1vdmUpOwoKICAgICAgICAgIGZ1bmN0aW9uIG1vdXNlb3ZlcihkKXsKICAgICAgICAgICAgdG9vbHRpcC50cmFuc2l0aW9uKCkuZHVyYXRpb24oMTAwKS5zdHlsZSgib3BhY2l0eSIsIDEpOwogICAgICAgICAgICB0eHQgPSAoeC5wYXJzLmxhYmVsID09PSBudWxsKSA/IGQudGV4dCArICI6ICIgKyBkLmZyZXE6IGQubGFiZWwgKyAiOiAiICsgZC5mcmVxOwogICAgICAgICAgICBjb25zb2xlLmxvZyhkKTsKICAgICAgICAgICAgdG9vbHRpcC5odG1sKHR4dCk7CiAgICAgICAgICB9CgogICAgICAgICAgZnVuY3Rpb24gbW91c2VvdXQoZCl7CiAgICAgICAgICAgIHRvb2x0aXAudHJhbnNpdGlvbigpLmR1cmF0aW9uKDEwMCkuc3R5bGUoIm9wYWNpdHkiLCAwKTsKICAgICAgICAgICAgZDMuc2VsZWN0KGVsKS5zZWxlY3RBbGwoInRleHQiKS50cmFuc2l0aW9uKCkuZHVyYXRpb24oMTAwKS5zdHlsZSgib3BhY2l0eSIsIDEpOwogICAgICAgICAgfQogICAgICAgICAgZnVuY3Rpb24gbW91c2Vtb3ZlKGQpewogICAgICAgICAgICB0b29sdGlwCiAgICAgICAgICAgICAgLnN0eWxlKCJsZWZ0IiwgKGQzLmV2ZW50LnBhZ2VYICsgMCApICsgInB4IikKICAgICAgICAgICAgICAuc3R5bGUoInRvcCIsIChkMy5ldmVudC5wYWdlWSArIC0gNzApICsgInB4Iik7CgogICAgICAgICAgfQoJCSAgLy9mdW5jdGlvbiBtb3VzZWRvd24oZCl7CiAgICAgICAgICAvLyAgICB3aW5kb3cub3BlbihkLnRleHQgKyAnLmh0bWwnLCAiX2JsYW5rIik7CiAgICAgICAgICAvL30KCgogICAgICB9CgogICAgfQogIH0sCgogIGluaXRpYWxpemU6IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0KSB7CgogICAgdmFyIHcgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDsKICAgIHZhciBoID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0OwoKICAgIHZhciBjbG91ZCA9IGQzLmxheW91dC5jbG91ZCgpOwogICAgdmFyIHN2ZyA9IGQzLnNlbGVjdChlbCkuYXBwZW5kKCJzdmciKS5hdHRyKCJ3aWR0aCIsIHcpLmF0dHIoImhlaWdodCIsIGgpOwogICAgdmFyIGJhY2tncm91bmQgPSBzdmcuYXBwZW5kKCJnIik7CiAgICB2YXIgdmlzID0gc3ZnLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsICJ0cmFuc2xhdGUoIiArIFt3ID4+IDEsIGggPj4gMV0gKyAiKSIpOwoKICAgIHJldHVybiB7CiAgICAgIGNsb3VkOiBjbG91ZCwKICAgICAgc3ZnOiBzdmcsCiAgICAgIGJhY2tncm91bmQ6IGJhY2tncm91bmQsCiAgICAgIHZpczogdmlzCiAgICB9OwoKICB9LAoKICByZW5kZXJWYWx1ZTogZnVuY3Rpb24oZWwsIHgsIGluc3RhbmNlKSB7CgogICAgaW5zdGFuY2UueCA9IHg7CiAgICBpbnN0YW5jZS5kcmF3biA9IGZhbHNlOwogICAgdGhpcy5kcmF3V29yZENsb3VkKGVsLGluc3RhbmNlKTsKCiAgfSwKCiAgcmVzaXplOiBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCwgaW5zdGFuY2UpIHsKCiAgICB0aGlzLmRyYXdXb3JkQ2xvdWQoZWwsaW5zdGFuY2UpOwoKICB9Cgp9KTsK"></script>
<script src="data:application/javascript;base64,IWZ1bmN0aW9uKGEpe2lmKCJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9YSgpO2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10sYSk7ZWxzZXt2YXIgYjtiPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6dGhpcyxiLnByb2o0PWEoKX19KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGEoYixjLGQpe2Z1bmN0aW9uIGUoZyxoKXtpZighY1tnXSl7aWYoIWJbZ10pe3ZhciBpPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFoJiZpKXJldHVybiBpKGcsITApO2lmKGYpcmV0dXJuIGYoZywhMCk7dmFyIGo9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrZysiJyIpO3Rocm93IGouY29kZT0iTU9EVUxFX05PVF9GT1VORCIsan12YXIgaz1jW2ddPXtleHBvcnRzOnt9fTtiW2ddWzBdLmNhbGwoay5leHBvcnRzLGZ1bmN0aW9uKGEpe3ZhciBjPWJbZ11bMV1bYV07cmV0dXJuIGUoYz9jOmEpfSxrLGsuZXhwb3J0cyxhLGIsYyxkKX1yZXR1cm4gY1tnXS5leHBvcnRzfWZvcih2YXIgZj0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxnPTA7ZzxkLmxlbmd0aDtnKyspZShkW2ddKTtyZXR1cm4gZX0oeyIuL2luY2x1ZGVkUHJvamVjdGlvbnMiOltmdW5jdGlvbihhLGIsYyl7dmFyIGQ9W2EoIi4vbGliL3Byb2plY3Rpb25zL3RtZXJjIiksYSgiLi9saWIvcHJvamVjdGlvbnMvdXRtIiksYSgiLi9saWIvcHJvamVjdGlvbnMvc3RlcmVhIiksYSgiLi9saWIvcHJvamVjdGlvbnMvc3RlcmUiKSxhKCIuL2xpYi9wcm9qZWN0aW9ucy9zb21lcmMiKSxhKCIuL2xpYi9wcm9qZWN0aW9ucy9vbWVyYyIpLGEoIi4vbGliL3Byb2plY3Rpb25zL2xjYyIpLGEoIi4vbGliL3Byb2plY3Rpb25zL2tyb3ZhayIpLGEoIi4vbGliL3Byb2plY3Rpb25zL2Nhc3MiKSxhKCIuL2xpYi9wcm9qZWN0aW9ucy9sYWVhIiksYSgiLi9saWIvcHJvamVjdGlvbnMvYWVhIiksYSgiLi9saWIvcHJvamVjdGlvbnMvZ25vbSIpLGEoIi4vbGliL3Byb2plY3Rpb25zL2NlYSIpLGEoIi4vbGliL3Byb2plY3Rpb25zL2VxYyIpLGEoIi4vbGliL3Byb2plY3Rpb25zL3BvbHkiKSxhKCIuL2xpYi9wcm9qZWN0aW9ucy9uem1nIiksYSgiLi9saWIvcHJvamVjdGlvbnMvbWlsbCIpLGEoIi4vbGliL3Byb2plY3Rpb25zL3NpbnUiKSxhKCIuL2xpYi9wcm9qZWN0aW9ucy9tb2xsIiksYSgiLi9saWIvcHJvamVjdGlvbnMvZXFkYyIpLGEoIi4vbGliL3Byb2plY3Rpb25zL3ZhbmRnIiksYSgiLi9saWIvcHJvamVjdGlvbnMvYWVxZCIpLGEoIi4vbGliL3Byb2plY3Rpb25zL29ydGhvIildO2IuZXhwb3J0cz1mdW5jdGlvbihwcm9qNCl7ZC5mb3JFYWNoKGZ1bmN0aW9uKGEpe3Byb2o0LlByb2oucHJvamVjdGlvbnMuYWRkKGEpfSl9fSx7Ii4vbGliL3Byb2plY3Rpb25zL2FlYSI6NDAsIi4vbGliL3Byb2plY3Rpb25zL2FlcWQiOjQxLCIuL2xpYi9wcm9qZWN0aW9ucy9jYXNzIjo0MiwiLi9saWIvcHJvamVjdGlvbnMvY2VhIjo0MywiLi9saWIvcHJvamVjdGlvbnMvZXFjIjo0NCwiLi9saWIvcHJvamVjdGlvbnMvZXFkYyI6NDUsIi4vbGliL3Byb2plY3Rpb25zL2dub20iOjQ3LCIuL2xpYi9wcm9qZWN0aW9ucy9rcm92YWsiOjQ4LCIuL2xpYi9wcm9qZWN0aW9ucy9sYWVhIjo0OSwiLi9saWIvcHJvamVjdGlvbnMvbGNjIjo1MCwiLi9saWIvcHJvamVjdGlvbnMvbWlsbCI6NTMsIi4vbGliL3Byb2plY3Rpb25zL21vbGwiOjU0LCIuL2xpYi9wcm9qZWN0aW9ucy9uem1nIjo1NSwiLi9saWIvcHJvamVjdGlvbnMvb21lcmMiOjU2LCIuL2xpYi9wcm9qZWN0aW9ucy9vcnRobyI6NTcsIi4vbGliL3Byb2plY3Rpb25zL3BvbHkiOjU4LCIuL2xpYi9wcm9qZWN0aW9ucy9zaW51Ijo1OSwiLi9saWIvcHJvamVjdGlvbnMvc29tZXJjIjo2MCwiLi9saWIvcHJvamVjdGlvbnMvc3RlcmUiOjYxLCIuL2xpYi9wcm9qZWN0aW9ucy9zdGVyZWEiOjYyLCIuL2xpYi9wcm9qZWN0aW9ucy90bWVyYyI6NjMsIi4vbGliL3Byb2plY3Rpb25zL3V0bSI6NjQsIi4vbGliL3Byb2plY3Rpb25zL3ZhbmRnIjo2NX1dLDE6W2Z1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBQb2ludChhLGIsYyl7aWYoISh0aGlzIGluc3RhbmNlb2YgUG9pbnQpKXJldHVybiBuZXcgUG9pbnQoYSxiLGMpO2lmKEFycmF5LmlzQXJyYXkoYSkpdGhpcy54PWFbMF0sdGhpcy55PWFbMV0sdGhpcy56PWFbMl18fDA7ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIGEpdGhpcy54PWEueCx0aGlzLnk9YS55LHRoaXMuej1hLnp8fDA7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGEmJiJ1bmRlZmluZWQiPT10eXBlb2YgYil7dmFyIGQ9YS5zcGxpdCgiLCIpO3RoaXMueD1wYXJzZUZsb2F0KGRbMF0sMTApLHRoaXMueT1wYXJzZUZsb2F0KGRbMV0sMTApLHRoaXMuej1wYXJzZUZsb2F0KGRbMl0sMTApfHwwfWVsc2UgdGhpcy54PWEsdGhpcy55PWIsdGhpcy56PWN8fDA7Y29uc29sZS53YXJuKCJwcm9qNC5Qb2ludCB3aWxsIGJlIHJlbW92ZWQgaW4gdmVyc2lvbiAzLCB1c2UgcHJvajQudG9Qb2ludCIpfXZhciBkPWEoIm1ncnMiKTtQb2ludC5mcm9tTUdSUz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IFBvaW50KGQudG9Qb2ludChhKSl9LFBvaW50LnByb3RvdHlwZS50b01HUlM9ZnVuY3Rpb24oYSl7cmV0dXJuIGQuZm9yd2FyZChbdGhpcy54LHRoaXMueV0sYSl9LGIuZXhwb3J0cz1Qb2ludH0se21ncnM6Njh9XSwyOltmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gUHJvamVjdGlvbihhLGIpe2lmKCEodGhpcyBpbnN0YW5jZW9mIFByb2plY3Rpb24pKXJldHVybiBuZXcgUHJvamVjdGlvbihhKTtiPWJ8fGZ1bmN0aW9uKGEpe2lmKGEpdGhyb3cgYX07dmFyIGM9ZChhKTtpZigib2JqZWN0IiE9dHlwZW9mIGMpcmV0dXJuIHZvaWQgYihhKTt2YXIgZj1nKGMpLGg9UHJvamVjdGlvbi5wcm9qZWN0aW9ucy5nZXQoZi5wcm9qTmFtZSk7aD8oZSh0aGlzLGYpLGUodGhpcyxoKSx0aGlzLmluaXQoKSxiKG51bGwsdGhpcykpOmIoYSl9dmFyIGQ9YSgiLi9wYXJzZUNvZGUiKSxlPWEoIi4vZXh0ZW5kIiksZj1hKCIuL3Byb2plY3Rpb25zIiksZz1hKCIuL2Rlcml2ZUNvbnN0YW50cyIpO1Byb2plY3Rpb24ucHJvamVjdGlvbnM9ZixQcm9qZWN0aW9uLnByb2plY3Rpb25zLnN0YXJ0KCksYi5leHBvcnRzPVByb2plY3Rpb259LHsiLi9kZXJpdmVDb25zdGFudHMiOjMzLCIuL2V4dGVuZCI6MzQsIi4vcGFyc2VDb2RlIjozNywiLi9wcm9qZWN0aW9ucyI6Mzl9XSwzOltmdW5jdGlvbihhLGIsYyl7Yi5leHBvcnRzPWZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZz1jLngsaD1jLnksaT1jLnp8fDA7Zm9yKGY9MDszPmY7ZisrKWlmKCFifHwyIT09Znx8dm9pZCAwIT09Yy56KXN3aXRjaCgwPT09Zj8oZD1nLGU9IngiKToxPT09Zj8oZD1oLGU9InkiKTooZD1pLGU9InoiKSxhLmF4aXNbZl0pe2Nhc2UiZSI6Y1tlXT1kO2JyZWFrO2Nhc2UidyI6Y1tlXT0tZDticmVhaztjYXNlIm4iOmNbZV09ZDticmVhaztjYXNlInMiOmNbZV09LWQ7YnJlYWs7Y2FzZSJ1Ijp2b2lkIDAhPT1jW2VdJiYoYy56PWQpO2JyZWFrO2Nhc2UiZCI6dm9pZCAwIT09Y1tlXSYmKGMuej0tZCk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gbnVsbH1yZXR1cm4gY319LHt9XSw0OltmdW5jdGlvbihhLGIsYyl7dmFyIGQ9TWF0aC5QSS8yLGU9YSgiLi9zaWduIik7Yi5leHBvcnRzPWZ1bmN0aW9uKGEpe3JldHVybiBNYXRoLmFicyhhKTxkP2E6YS1lKGEpKk1hdGguUEl9fSx7Ii4vc2lnbiI6MjF9XSw1OltmdW5jdGlvbihhLGIsYyl7dmFyIGQ9MipNYXRoLlBJLGU9My4xNDE1OTI2NTM1OSxmPWEoIi4vc2lnbiIpO2IuZXhwb3J0cz1mdW5jdGlvbihhKXtyZXR1cm4gTWF0aC5hYnMoYSk8PWU/YTphLWYoYSkqZH19LHsiLi9zaWduIjoyMX1dLDY6W2Z1bmN0aW9uKGEsYixjKXtiLmV4cG9ydHM9ZnVuY3Rpb24oYSl7cmV0dXJuIE1hdGguYWJzKGEpPjEmJihhPWE+MT8xOi0xKSxNYXRoLmFzaW4oYSl9fSx7fV0sNzpbZnVuY3Rpb24oYSxiLGMpe2IuZXhwb3J0cz1mdW5jdGlvbihhKXtyZXR1cm4gMS0uMjUqYSooMSthLzE2KigzKzEuMjUqYSkpfX0se31dLDg6W2Z1bmN0aW9uKGEsYixjKXtiLmV4cG9ydHM9ZnVuY3Rpb24oYSl7cmV0dXJuLjM3NSphKigxKy4yNSphKigxKy40Njg3NSphKSl9fSx7fV0sOTpbZnVuY3Rpb24oYSxiLGMpe2IuZXhwb3J0cz1mdW5jdGlvbihhKXtyZXR1cm4uMDU4NTkzNzUqYSphKigxKy43NSphKX19LHt9XSwxMDpbZnVuY3Rpb24oYSxiLGMpe2IuZXhwb3J0cz1mdW5jdGlvbihhKXtyZXR1cm4gYSphKmEqKDM1LzMwNzIpfX0se31dLDExOltmdW5jdGlvbihhLGIsYyl7Yi5leHBvcnRzPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1iKmM7cmV0dXJuIGEvTWF0aC5zcXJ0KDEtZCpkKX19LHt9XSwxMjpbZnVuY3Rpb24oYSxiLGMpe2IuZXhwb3J0cz1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGc7Zj1hL2I7Zm9yKHZhciBoPTA7MTU+aDtoKyspaWYoZz0oYS0oYipmLWMqTWF0aC5zaW4oMipmKStkKk1hdGguc2luKDQqZiktZSpNYXRoLnNpbig2KmYpKSkvKGItMipjKk1hdGguY29zKDIqZikrNCpkKk1hdGguY29zKDQqZiktNiplKk1hdGguY29zKDYqZikpLGYrPWcsTWF0aC5hYnMoZyk8PTFlLTEwKXJldHVybiBmO3JldHVybiBOYU59fSx7fV0sMTM6W2Z1bmN0aW9uKGEsYixjKXt2YXIgZD1NYXRoLlBJLzI7Yi5leHBvcnRzPWZ1bmN0aW9uKGEsYil7dmFyIGM9MS0oMS1hKmEpLygyKmEpKk1hdGgubG9nKCgxLWEpLygxK2EpKTtpZihNYXRoLmFicyhNYXRoLmFicyhiKS1jKTwxZS02KXJldHVybiAwPmI/LTEqZDpkO2Zvcih2YXIgZSxmLGcsaCxpPU1hdGguYXNpbiguNSpiKSxqPTA7MzA+ajtqKyspaWYoZj1NYXRoLnNpbihpKSxnPU1hdGguY29zKGkpLGg9YSpmLGU9TWF0aC5wb3coMS1oKmgsMikvKDIqZykqKGIvKDEtYSphKS1mLygxLWgqaCkrLjUvYSpNYXRoLmxvZygoMS1oKS8oMStoKSkpLGkrPWUsTWF0aC5hYnMoZSk8PTFlLTEwKXJldHVybiBpO3JldHVybiBOYU59fSx7fV0sMTQ6W2Z1bmN0aW9uKGEsYixjKXtiLmV4cG9ydHM9ZnVuY3Rpb24oYSxiLGMsZCxlKXtyZXR1cm4gYSplLWIqTWF0aC5zaW4oMiplKStjKk1hdGguc2luKDQqZSktZCpNYXRoLnNpbig2KmUpfX0se31dLDE1OltmdW5jdGlvbihhLGIsYyl7Yi5leHBvcnRzPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKmI7cmV0dXJuIGMvTWF0aC5zcXJ0KDEtZCpkKX19LHt9XSwxNjpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPU1hdGguUEkvMjtiLmV4cG9ydHM9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGMsZSxmPS41KmEsZz1kLTIqTWF0aC5hdGFuKGIpLGg9MDsxNT49aDtoKyspaWYoYz1hKk1hdGguc2luKGcpLGU9ZC0yKk1hdGguYXRhbihiKk1hdGgucG93KCgxLWMpLygxK2MpLGYpKS1nLGcrPWUsTWF0aC5hYnMoZSk8PTFlLTEwKXJldHVybiBnO3JldHVybi05OTk5fX0se31dLDE3OltmdW5jdGlvbihhLGIsYyl7dmFyIGQ9MSxlPS4yNSxmPS4wNDY4NzUsZz0uMDE5NTMxMjUsaD0uMDEwNjgxMTUyMzQzNzUsaT0uNzUsaj0uNDY4NzUsaz0uMDEzMDIwODMzMzMzMzMzMzM0LGw9LjAwNzEyMDc2ODIyOTE2NjY2NyxtPS4zNjQ1ODMzMzMzMzMzMzMzLG49LjAwNTY5NjYxNDU4MzMzMzMzMyxvPS4zMDc2MTcxODc1O2IuZXhwb3J0cz1mdW5jdGlvbihhKXt2YXIgYj1bXTtiWzBdPWQtYSooZSthKihmK2EqKGcrYSpoKSkpLGJbMV09YSooaS1hKihmK2EqKGcrYSpoKSkpO3ZhciBjPWEqYTtyZXR1cm4gYlsyXT1jKihqLWEqKGsrYSpsKSksYyo9YSxiWzNdPWMqKG0tYSpuKSxiWzRdPWMqYSpvLGJ9fSx7fV0sMTg6W2Z1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuL3BqX21sZm4iKSxlPTFlLTEwLGY9MjA7Yi5leHBvcnRzPWZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGc9MS8oMS1iKSxoPWEsaT1mO2k7LS1pKXt2YXIgaj1NYXRoLnNpbihoKSxrPTEtYipqKmo7aWYoaz0oZChoLGosTWF0aC5jb3MoaCksYyktYSkqKGsqTWF0aC5zcXJ0KGspKSpnLGgtPWssTWF0aC5hYnMoayk8ZSlyZXR1cm4gaH1yZXR1cm4gaH19LHsiLi9wal9tbGZuIjoxOX1dLDE5OltmdW5jdGlvbihhLGIsYyl7Yi5leHBvcnRzPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBjKj1iLGIqPWIsZFswXSphLWMqKGRbMV0rYiooZFsyXStiKihkWzNdK2IqZFs0XSkpKX19LHt9XSwyMDpbZnVuY3Rpb24oYSxiLGMpe2IuZXhwb3J0cz1mdW5jdGlvbihhLGIpe3ZhciBjO3JldHVybiBhPjFlLTc/KGM9YSpiLCgxLWEqYSkqKGIvKDEtYypjKS0uNS9hKk1hdGgubG9nKCgxLWMpLygxK2MpKSkpOjIqYn19LHt9XSwyMTpbZnVuY3Rpb24oYSxiLGMpe2IuZXhwb3J0cz1mdW5jdGlvbihhKXtyZXR1cm4gMD5hPy0xOjF9fSx7fV0sMjI6W2Z1bmN0aW9uKGEsYixjKXtiLmV4cG9ydHM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gTWF0aC5wb3coKDEtYSkvKDErYSksYil9fSx7fV0sMjM6W2Z1bmN0aW9uKGEsYixjKXtiLmV4cG9ydHM9ZnVuY3Rpb24oYSl7dmFyIGI9e3g6YVswXSx5OmFbMV19O3JldHVybiBhLmxlbmd0aD4yJiYoYi56PWFbMl0pLGEubGVuZ3RoPjMmJihiLm09YVszXSksYn19LHt9XSwyNDpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPU1hdGguUEkvMjtiLmV4cG9ydHM9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPWEqYyxmPS41KmE7cmV0dXJuIGU9TWF0aC5wb3coKDEtZSkvKDErZSksZiksTWF0aC50YW4oLjUqKGQtYikpL2V9fSx7fV0sMjU6W2Z1bmN0aW9uKGEsYixjKXtjLndnczg0PXt0b3dnczg0OiIwLDAsMCIsZWxsaXBzZToiV0dTODQiLGRhdHVtTmFtZToiV0dTODQifSxjLmNoMTkwMz17dG93Z3M4NDoiNjc0LjM3NCwxNS4wNTYsNDA1LjM0NiIsZWxsaXBzZToiYmVzc2VsIixkYXR1bU5hbWU6InN3aXNzIn0sYy5nZ3JzODc9e3Rvd2dzODQ6Ii0xOTkuODcsNzQuNzksMjQ2LjYyIixlbGxpcHNlOiJHUlM4MCIsZGF0dW1OYW1lOiJHcmVla19HZW9kZXRpY19SZWZlcmVuY2VfU3lzdGVtXzE5ODcifSxjLm5hZDgzPXt0b3dnczg0OiIwLDAsMCIsZWxsaXBzZToiR1JTODAiLGRhdHVtTmFtZToiTm9ydGhfQW1lcmljYW5fRGF0dW1fMTk4MyJ9LGMubmFkMjc9e25hZGdyaWRzOiJAY29udXMsQGFsYXNrYSxAbnR2Ml8wLmdzYixAbnR2MV9jYW4uZGF0IixlbGxpcHNlOiJjbHJrNjYiLGRhdHVtTmFtZToiTm9ydGhfQW1lcmljYW5fRGF0dW1fMTkyNyJ9LGMucG90c2RhbT17dG93Z3M4NDoiNjA2LjAsMjMuMCw0MTMuMCIsZWxsaXBzZToiYmVzc2VsIixkYXR1bU5hbWU6IlBvdHNkYW0gUmF1ZW5iZXJnIDE5NTAgREhETiJ9LGMuY2FydGhhZ2U9e3Rvd2dzODQ6Ii0yNjMuMCw2LjAsNDMxLjAiLGVsbGlwc2U6ImNsYXJrODAiLGRhdHVtTmFtZToiQ2FydGhhZ2UgMTkzNCBUdW5pc2lhIn0sYy5oZXJtYW5uc2tvZ2VsPXt0b3dnczg0OiI2NTMuMCwtMjEyLjAsNDQ5LjAiLGVsbGlwc2U6ImJlc3NlbCIsZGF0dW1OYW1lOiJIZXJtYW5uc2tvZ2VsIn0sYy5pcmU2NT17dG93Z3M4NDoiNDgyLjUzMCwtMTMwLjU5Niw1NjQuNTU3LC0xLjA0MiwtMC4yMTQsLTAuNjMxLDguMTUiLGVsbGlwc2U6Im1vZF9haXJ5IixkYXR1bU5hbWU6IklyZWxhbmQgMTk2NSJ9LGMucmFzc2FkaXJhbj17dG93Z3M4NDoiLTEzMy42MywtMTU3LjUsLTE1OC42MiIsZWxsaXBzZToiaW50bCIsZGF0dW1OYW1lOiJSYXNzYWRpcmFuIn0sYy5uemdkNDk9e3Rvd2dzODQ6IjU5LjQ3LC01LjA0LDE4Ny40NCwwLjQ3LC0wLjEsMS4wMjQsLTQuNTk5MyIsZWxsaXBzZToiaW50bCIsZGF0dW1OYW1lOiJOZXcgWmVhbGFuZCBHZW9kZXRpYyBEYXR1bSAxOTQ5In0sYy5vc2diMzY9e3Rvd2dzODQ6IjQ0Ni40NDgsLTEyNS4xNTcsNTQyLjA2MCwwLjE1MDIsMC4yNDcwLDAuODQyMSwtMjAuNDg5NCIsZWxsaXBzZToiYWlyeSIsZGF0dW1OYW1lOiJBaXJ5IDE4MzAifSxjLnNfanRzaz17dG93Z3M4NDoiNTg5LDc2LDQ4MCIsZWxsaXBzZToiYmVzc2VsIixkYXR1bU5hbWU6IlMtSlRTSyAoRmVycm8pIn0sYy5iZWR1YXJhbT17dG93Z3M4NDoiLTEwNiwtODcsMTg4IixlbGxpcHNlOiJjbHJrODAiLGRhdHVtTmFtZToiQmVkdWFyYW0ifSxjLmd1bnVuZ19zZWdhcmE9e3Rvd2dzODQ6Ii00MDMsNjg0LDQxIixlbGxpcHNlOiJiZXNzZWwiLGRhdHVtTmFtZToiR3VudW5nIFNlZ2FyYSBKYWthcnRhIn0sYy5ybmI3Mj17dG93Z3M4NDoiMTA2Ljg2OSwtNTIuMjk3OCwxMDMuNzI0LC0wLjMzNjU3LDAuNDU2OTU1LC0xLjg0MjE4LDEiLGVsbGlwc2U6ImludGwiLGRhdHVtTmFtZToiUmVzZWF1IE5hdGlvbmFsIEJlbGdlIDE5NzIifX0se31dLDI2OltmdW5jdGlvbihhLGIsYyl7Yy5NRVJJVD17YTo2Mzc4MTM3LHJmOjI5OC4yNTcsZWxsaXBzZU5hbWU6Ik1FUklUIDE5ODMifSxjLlNHUzg1PXthOjYzNzgxMzYscmY6Mjk4LjI1NyxlbGxpcHNlTmFtZToiU292aWV0IEdlb2RldGljIFN5c3RlbSA4NSJ9LGMuR1JTODA9e2E6NjM3ODEzNyxyZjoyOTguMjU3MjIyMTAxLGVsbGlwc2VOYW1lOiJHUlMgMTk4MChJVUdHLCAxOTgwKSJ9LGMuSUFVNzY9e2E6NjM3ODE0MCxyZjoyOTguMjU3LGVsbGlwc2VOYW1lOiJJQVUgMTk3NiJ9LGMuYWlyeT17YTo2Mzc3NTYzLjM5NixiOjYzNTYyNTYuOTEsZWxsaXBzZU5hbWU6IkFpcnkgMTgzMCJ9LGMuQVBMND17YTo2Mzc4MTM3LHJmOjI5OC4yNSxlbGxpcHNlTmFtZToiQXBwbC4gUGh5c2ljcy4gMTk2NSJ9LGMuTldMOUQ9e2E6NjM3ODE0NSxyZjoyOTguMjUsZWxsaXBzZU5hbWU6Ik5hdmFsIFdlYXBvbnMgTGFiLiwgMTk2NSJ9LGMubW9kX2Fpcnk9e2E6NjM3NzM0MC4xODksYjo2MzU2MDM0LjQ0NixlbGxpcHNlTmFtZToiTW9kaWZpZWQgQWlyeSJ9LGMuYW5kcmFlPXthOjYzNzcxMDQuNDMscmY6MzAwLGVsbGlwc2VOYW1lOiJBbmRyYWUgMTg3NiAoRGVuLiwgSWNsbmQuKSJ9LGMuYXVzdF9TQT17YTo2Mzc4MTYwLHJmOjI5OC4yNSxlbGxpcHNlTmFtZToiQXVzdHJhbGlhbiBOYXRsICYgUy4gQW1lci4gMTk2OSJ9LGMuR1JTNjc9e2E6NjM3ODE2MCxyZjoyOTguMjQ3MTY3NDI3LGVsbGlwc2VOYW1lOiJHUlMgNjcoSVVHRyAxOTY3KSJ9LGMuYmVzc2VsPXthOjYzNzczOTcuMTU1LHJmOjI5OS4xNTI4MTI4LGVsbGlwc2VOYW1lOiJCZXNzZWwgMTg0MSJ9LGMuYmVzc19uYW09e2E6NjM3NzQ4My44NjUscmY6Mjk5LjE1MjgxMjgsZWxsaXBzZU5hbWU6IkJlc3NlbCAxODQxIChOYW1pYmlhKSJ9LGMuY2xyazY2PXthOjYzNzgyMDYuNCxiOjYzNTY1ODMuOCxlbGxpcHNlTmFtZToiQ2xhcmtlIDE4NjYifSxjLmNscms4MD17YTo2Mzc4MjQ5LjE0NSxyZjoyOTMuNDY2MyxlbGxpcHNlTmFtZToiQ2xhcmtlIDE4ODAgbW9kLiJ9LGMuY2xyazU4PXthOjYzNzgyOTMuNjQ1MjA4NzU5LHJmOjI5NC4yNjA2NzYzNjkyNjU0LGVsbGlwc2VOYW1lOiJDbGFya2UgMTg1OCJ9LGMuQ1BNPXthOjYzNzU3MzguNyxyZjozMzQuMjksZWxsaXBzZU5hbWU6IkNvbW0uIGRlcyBQb2lkcyBldCBNZXN1cmVzIDE3OTkifSxjLmRlbG1icj17YTo2Mzc2NDI4LHJmOjMxMS41LGVsbGlwc2VOYW1lOiJEZWxhbWJyZSAxODEwIChCZWxnaXVtKSJ9LGMuZW5nZWxpcz17YTo2Mzc4MTM2LjA1LHJmOjI5OC4yNTY2LGVsbGlwc2VOYW1lOiJFbmdlbGlzIDE5ODUifSxjLmV2cnN0MzA9e2E6NjM3NzI3Ni4zNDUscmY6MzAwLjgwMTcsZWxsaXBzZU5hbWU6IkV2ZXJlc3QgMTgzMCJ9LGMuZXZyc3Q0OD17YTo2Mzc3MzA0LjA2MyxyZjozMDAuODAxNyxlbGxpcHNlTmFtZToiRXZlcmVzdCAxOTQ4In0sYy5ldnJzdDU2PXthOjYzNzczMDEuMjQzLHJmOjMwMC44MDE3LGVsbGlwc2VOYW1lOiJFdmVyZXN0IDE5NTYifSxjLmV2cnN0Njk9e2E6NjM3NzI5NS42NjQscmY6MzAwLjgwMTcsZWxsaXBzZU5hbWU6IkV2ZXJlc3QgMTk2OSJ9LGMuZXZyc3RTUz17YTo2Mzc3Mjk4LjU1NixyZjozMDAuODAxNyxlbGxpcHNlTmFtZToiRXZlcmVzdCAoU2FiYWggJiBTYXJhd2FrKSJ9LGMuZnNjaHI2MD17YTo2Mzc4MTY2LHJmOjI5OC4zLGVsbGlwc2VOYW1lOiJGaXNjaGVyIChNZXJjdXJ5IERhdHVtKSAxOTYwIn0sYy5mc2NocjYwbT17YTo2Mzc4MTU1LHJmOjI5OC4zLGVsbGlwc2VOYW1lOiJGaXNjaGVyIDE5NjAifSxjLmZzY2hyNjg9e2E6NjM3ODE1MCxyZjoyOTguMyxlbGxpcHNlTmFtZToiRmlzY2hlciAxOTY4In0sYy5oZWxtZXJ0PXthOjYzNzgyMDAscmY6Mjk4LjMsZWxsaXBzZU5hbWU6IkhlbG1lcnQgMTkwNiJ9LGMuaG91Z2g9e2E6NjM3ODI3MCxyZjoyOTcsZWxsaXBzZU5hbWU6IkhvdWdoIn0sYy5pbnRsPXthOjYzNzgzODgscmY6Mjk3LGVsbGlwc2VOYW1lOiJJbnRlcm5hdGlvbmFsIDE5MDkgKEhheWZvcmQpIn0sYy5rYXVsYT17YTo2Mzc4MTYzLHJmOjI5OC4yNCxlbGxpcHNlTmFtZToiS2F1bGEgMTk2MSJ9LGMubGVyY2g9e2E6NjM3ODEzOSxyZjoyOTguMjU3LGVsbGlwc2VOYW1lOiJMZXJjaCAxOTc5In0sYy5tcHJ0cz17YTo2Mzk3MzAwLHJmOjE5MSxlbGxpcHNlTmFtZToiTWF1cGVydGl1cyAxNzM4In0sYy5uZXdfaW50bD17YTo2Mzc4MTU3LjUsYjo2MzU2NzcyLjIsZWxsaXBzZU5hbWU6Ik5ldyBJbnRlcm5hdGlvbmFsIDE5NjcifSxjLnBsZXNzaXM9e2E6NjM3NjUyMyxyZjo2MzU1ODYzLGVsbGlwc2VOYW1lOiJQbGVzc2lzIDE4MTcgKEZyYW5jZSkifSxjLmtyYXNzPXthOjYzNzgyNDUscmY6Mjk4LjMsZWxsaXBzZU5hbWU6IktyYXNzb3Zza3ksIDE5NDIifSxjLlNFYXNpYT17YTo2Mzc4MTU1LGI6NjM1Njc3My4zMjA1LGVsbGlwc2VOYW1lOiJTb3V0aGVhc3QgQXNpYSJ9LGMud2FsYmVjaz17YTo2Mzc2ODk2LGI6NjM1NTgzNC44NDY3LGVsbGlwc2VOYW1lOiJXYWxiZWNrIn0sYy5XR1M2MD17YTo2Mzc4MTY1LHJmOjI5OC4zLGVsbGlwc2VOYW1lOiJXR1MgNjAifSxjLldHUzY2PXthOjYzNzgxNDUscmY6Mjk4LjI1LGVsbGlwc2VOYW1lOiJXR1MgNjYifSxjLldHUzc9e2E6NjM3ODEzNSxyZjoyOTguMjYsZWxsaXBzZU5hbWU6IldHUyA3MiJ9LGMuV0dTODQ9e2E6NjM3ODEzNyxyZjoyOTguMjU3MjIzNTYzLGVsbGlwc2VOYW1lOiJXR1MgODQifSxjLnNwaGVyZT17YTo2MzcwOTk3LGI6NjM3MDk5NyxlbGxpcHNlTmFtZToiTm9ybWFsIFNwaGVyZSAocj02MzcwOTk3KSJ9fSx7fV0sMjc6W2Z1bmN0aW9uKGEsYixjKXtjLmdyZWVud2ljaD0wLGMubGlzYm9uPS05LjEzMTkwNjExMTExMSxjLnBhcmlzPTIuMzM3MjI5MTY2NjY3LGMuYm9nb3RhPS03NC4wODA5MTY2NjY2NjcsYy5tYWRyaWQ9LTMuNjg3OTM4ODg4ODg5LGMucm9tZT0xMi40NTIzMzMzMzMzMzMsYy5iZXJuPTcuNDM5NTgzMzMzMzMzLGMuamFrYXJ0YT0xMDYuODA3NzE5NDQ0NDQ0LGMuZmVycm89LTE3LjY2NjY2NjY2NjY2NyxjLmJydXNzZWxzPTQuMzY3OTc1LGMuc3RvY2tob2xtPTE4LjA1ODI3Nzc3Nzc3OCxjLmF0aGVucz0yMy43MTYzMzc1LGMub3Nsbz0xMC43MjI5MTY2NjY2Njd9LHt9XSwyODpbZnVuY3Rpb24oYSxiLGMpe2MuZnQ9e3RvX21ldGVyOi4zMDQ4fSxjWyJ1cy1mdCJdPXt0b19tZXRlcjoxMjAwLzM5Mzd9fSx7fV0sMjk6W2Z1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGEsYixjKXt2YXIgZDtyZXR1cm4gQXJyYXkuaXNBcnJheShjKT8oZD1nKGEsYixjKSwzPT09Yy5sZW5ndGg/W2QueCxkLnksZC56XTpbZC54LGQueV0pOmcoYSxiLGMpfWZ1bmN0aW9uIGUoYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBmP2E6YS5vUHJvaj9hLm9Qcm9qOmYoYSl9ZnVuY3Rpb24gcHJvajQoYSxiLGMpe2E9ZShhKTt2YXIgZixnPSExO3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgYj8oYj1hLGE9aCxnPSEwKTooInVuZGVmaW5lZCIhPXR5cGVvZiBiLnh8fEFycmF5LmlzQXJyYXkoYikpJiYoYz1iLGI9YSxhPWgsZz0hMCksYj1lKGIpLGM/ZChhLGIsYyk6KGY9e2ZvcndhcmQ6ZnVuY3Rpb24oYyl7cmV0dXJuIGQoYSxiLGMpfSxpbnZlcnNlOmZ1bmN0aW9uKGMpe3JldHVybiBkKGIsYSxjKX19LGcmJihmLm9Qcm9qPWIpLGYpfXZhciBmPWEoIi4vUHJvaiIpLGc9YSgiLi90cmFuc2Zvcm0iKSxoPWYoIldHUzg0Iik7Yi5leHBvcnRzPXByb2o0fSx7Ii4vUHJvaiI6MiwiLi90cmFuc2Zvcm0iOjY2fV0sMzA6W2Z1bmN0aW9uKGEsYixjKXt2YXIgZD1NYXRoLlBJLzIsZT0xLGY9MixnPTMsaD00LGk9NSxqPTQ4NDgxMzY4MTEwOTUzNmUtMjAsaz0xLjAwMjYsbD0uMzgyNjgzNDMyMzY1MDg5OCxtPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgbT8odGhpcy5kYXR1bV90eXBlPWgsdm9pZChhJiYoYS5kYXR1bUNvZGUmJiJub25lIj09PWEuZGF0dW1Db2RlJiYodGhpcy5kYXR1bV90eXBlPWkpLGEuZGF0dW1fcGFyYW1zJiYodGhpcy5kYXR1bV9wYXJhbXM9YS5kYXR1bV9wYXJhbXMubWFwKHBhcnNlRmxvYXQpLDA9PT10aGlzLmRhdHVtX3BhcmFtc1swXSYmMD09PXRoaXMuZGF0dW1fcGFyYW1zWzFdJiYwPT09dGhpcy5kYXR1bV9wYXJhbXNbMl18fCh0aGlzLmRhdHVtX3R5cGU9ZSksdGhpcy5kYXR1bV9wYXJhbXMubGVuZ3RoPjMmJigwPT09dGhpcy5kYXR1bV9wYXJhbXNbM10mJjA9PT10aGlzLmRhdHVtX3BhcmFtc1s0XSYmMD09PXRoaXMuZGF0dW1fcGFyYW1zWzVdJiYwPT09dGhpcy5kYXR1bV9wYXJhbXNbNl18fCh0aGlzLmRhdHVtX3R5cGU9Zix0aGlzLmRhdHVtX3BhcmFtc1szXSo9aix0aGlzLmRhdHVtX3BhcmFtc1s0XSo9aix0aGlzLmRhdHVtX3BhcmFtc1s1XSo9aix0aGlzLmRhdHVtX3BhcmFtc1s2XT10aGlzLmRhdHVtX3BhcmFtc1s2XS8xZTYrMSkpKSx0aGlzLmRhdHVtX3R5cGU9YS5ncmlkcz9nOnRoaXMuZGF0dW1fdHlwZSx0aGlzLmE9YS5hLHRoaXMuYj1hLmIsdGhpcy5lcz1hLmVzLHRoaXMuZXAyPWEuZXAyLHRoaXMuZGF0dW1fdHlwZT09PWcmJih0aGlzLmdyaWRzPWEuZ3JpZHMpKSkpOm5ldyBtKGEpfTttLnByb3RvdHlwZT17Y29tcGFyZV9kYXR1bXM6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZGF0dW1fdHlwZSE9PWEuZGF0dW1fdHlwZT8hMTp0aGlzLmEhPT1hLmF8fE1hdGguYWJzKHRoaXMuZXMtYS5lcyk+NWUtMTE/ITE6dGhpcy5kYXR1bV90eXBlPT09ZT90aGlzLmRhdHVtX3BhcmFtc1swXT09PWEuZGF0dW1fcGFyYW1zWzBdJiZ0aGlzLmRhdHVtX3BhcmFtc1sxXT09PWEuZGF0dW1fcGFyYW1zWzFdJiZ0aGlzLmRhdHVtX3BhcmFtc1syXT09PWEuZGF0dW1fcGFyYW1zWzJdOnRoaXMuZGF0dW1fdHlwZT09PWY/dGhpcy5kYXR1bV9wYXJhbXNbMF09PT1hLmRhdHVtX3BhcmFtc1swXSYmdGhpcy5kYXR1bV9wYXJhbXNbMV09PT1hLmRhdHVtX3BhcmFtc1sxXSYmdGhpcy5kYXR1bV9wYXJhbXNbMl09PT1hLmRhdHVtX3BhcmFtc1syXSYmdGhpcy5kYXR1bV9wYXJhbXNbM109PT1hLmRhdHVtX3BhcmFtc1szXSYmdGhpcy5kYXR1bV9wYXJhbXNbNF09PT1hLmRhdHVtX3BhcmFtc1s0XSYmdGhpcy5kYXR1bV9wYXJhbXNbNV09PT1hLmRhdHVtX3BhcmFtc1s1XSYmdGhpcy5kYXR1bV9wYXJhbXNbNl09PT1hLmRhdHVtX3BhcmFtc1s2XTp0aGlzLmRhdHVtX3R5cGU9PT1nfHxhLmRhdHVtX3R5cGU9PT1nP3RoaXMubmFkZ3JpZHM9PT1hLm5hZGdyaWRzOiEwfSxnZW9kZXRpY190b19nZW9jZW50cmljOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZSxmLGcsaCxpLGo9YS54LGs9YS55LGw9YS56P2EuejowLG09MDtpZigtZD5rJiZrPi0xLjAwMSpkKWs9LWQ7ZWxzZSBpZihrPmQmJjEuMDAxKmQ+aylrPWQ7ZWxzZSBpZigtZD5rfHxrPmQpcmV0dXJuIG51bGw7cmV0dXJuIGo+TWF0aC5QSSYmKGotPTIqTWF0aC5QSSksZz1NYXRoLnNpbihrKSxpPU1hdGguY29zKGspLGg9ZypnLGY9dGhpcy5hL01hdGguc3FydCgxLXRoaXMuZXMqaCksYj0oZitsKSppKk1hdGguY29zKGopLGM9KGYrbCkqaSpNYXRoLnNpbihqKSxlPShmKigxLXRoaXMuZXMpK2wpKmcsYS54PWIsYS55PWMsYS56PWUsbX0sZ2VvY2VudHJpY190b19nZW9kZXRpYzpmdW5jdGlvbihhKXt2YXIgYixjLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQ9MWUtMTIsdT10KnQsdj0zMCx3PWEueCx4PWEueSx5PWEuej9hLno6MDtpZihvPSExLGI9TWF0aC5zcXJ0KHcqdyt4KngpLGM9TWF0aC5zcXJ0KHcqdyt4KngreSp5KSxiL3RoaXMuYTx0KXtpZihvPSEwLHE9MCxjL3RoaXMuYTx0KXJldHVybiByPWQsdm9pZChzPS10aGlzLmIpfWVsc2UgcT1NYXRoLmF0YW4yKHgsdyk7ZT15L2MsZj1iL2MsZz0xL01hdGguc3FydCgxLXRoaXMuZXMqKDItdGhpcy5lcykqZipmKSxqPWYqKDEtdGhpcy5lcykqZyxrPWUqZyxwPTA7ZG8gcCsrLGk9dGhpcy5hL01hdGguc3FydCgxLXRoaXMuZXMqayprKSxzPWIqait5KmstaSooMS10aGlzLmVzKmsqayksaD10aGlzLmVzKmkvKGkrcyksZz0xL01hdGguc3FydCgxLWgqKDItaCkqZipmKSxsPWYqKDEtaCkqZyxtPWUqZyxuPW0qai1sKmssaj1sLGs9bTt3aGlsZShuKm4+dSYmdj5wKTtyZXR1cm4gcj1NYXRoLmF0YW4obS9NYXRoLmFicyhsKSksYS54PXEsYS55PXIsYS56PXMsYX0sZ2VvY2VudHJpY190b19nZW9kZXRpY19ub25pdGVyOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZSxmLGcsaCxpLGosbSxuLG8scCxxLHIscyx0LHUsdj1hLngsdz1hLnkseD1hLno/YS56OjA7aWYodj1wYXJzZUZsb2F0KHYpLHc9cGFyc2VGbG9hdCh3KSx4PXBhcnNlRmxvYXQoeCksdT0hMSwwIT09diliPU1hdGguYXRhbjIodyx2KTtlbHNlIGlmKHc+MCliPWQ7ZWxzZSBpZigwPncpYj0tZDtlbHNlIGlmKHU9ITAsYj0wLHg+MCljPWQ7ZWxzZXtpZighKDA+eCkpcmV0dXJuIGM9ZCx2b2lkKGU9LXRoaXMuYik7Yz0tZH1yZXR1cm4gZz12KnYrdyp3LGY9TWF0aC5zcXJ0KGcpLGg9eCprLGo9TWF0aC5zcXJ0KGgqaCtnKSxuPWgvaixwPWYvaixvPW4qbipuLGk9eCt0aGlzLmIqdGhpcy5lcDIqbyx0PWYtdGhpcy5hKnRoaXMuZXMqcCpwKnAsbT1NYXRoLnNxcnQoaSppK3QqdCkscT1pL20scj10L20scz10aGlzLmEvTWF0aC5zcXJ0KDEtdGhpcy5lcypxKnEpLGU9cj49bD9mL3ItczotbD49cj9mLy1yLXM6eC9xK3MqKHRoaXMuZXMtMSksdT09PSExJiYoYz1NYXRoLmF0YW4ocS9yKSksYS54PWIsYS55PWMsYS56PWUsYX0sZ2VvY2VudHJpY190b193Z3M4NDpmdW5jdGlvbihhKXtpZih0aGlzLmRhdHVtX3R5cGU9PT1lKWEueCs9dGhpcy5kYXR1bV9wYXJhbXNbMF0sYS55Kz10aGlzLmRhdHVtX3BhcmFtc1sxXSxhLnorPXRoaXMuZGF0dW1fcGFyYW1zWzJdO2Vsc2UgaWYodGhpcy5kYXR1bV90eXBlPT09Zil7dmFyIGI9dGhpcy5kYXR1bV9wYXJhbXNbMF0sYz10aGlzLmRhdHVtX3BhcmFtc1sxXSxkPXRoaXMuZGF0dW1fcGFyYW1zWzJdLGc9dGhpcy5kYXR1bV9wYXJhbXNbM10saD10aGlzLmRhdHVtX3BhcmFtc1s0XSxpPXRoaXMuZGF0dW1fcGFyYW1zWzVdLGo9dGhpcy5kYXR1bV9wYXJhbXNbNl0saz1qKihhLngtaSphLnkraCphLnopK2IsbD1qKihpKmEueCthLnktZyphLnopK2MsbT1qKigtaCphLngrZyphLnkrYS56KStkO2EueD1rLGEueT1sLGEuej1tfX0sZ2VvY2VudHJpY19mcm9tX3dnczg0OmZ1bmN0aW9uKGEpe2lmKHRoaXMuZGF0dW1fdHlwZT09PWUpYS54LT10aGlzLmRhdHVtX3BhcmFtc1swXSxhLnktPXRoaXMuZGF0dW1fcGFyYW1zWzFdLGEuei09dGhpcy5kYXR1bV9wYXJhbXNbMl07ZWxzZSBpZih0aGlzLmRhdHVtX3R5cGU9PT1mKXt2YXIgYj10aGlzLmRhdHVtX3BhcmFtc1swXSxjPXRoaXMuZGF0dW1fcGFyYW1zWzFdLGQ9dGhpcy5kYXR1bV9wYXJhbXNbMl0sZz10aGlzLmRhdHVtX3BhcmFtc1szXSxoPXRoaXMuZGF0dW1fcGFyYW1zWzRdLGk9dGhpcy5kYXR1bV9wYXJhbXNbNV0saj10aGlzLmRhdHVtX3BhcmFtc1s2XSxrPShhLngtYikvaixsPShhLnktYykvaixtPShhLnotZCkvajthLng9aytpKmwtaCptLGEueT0taSprK2wrZyptLGEuej1oKmstZypsK219fX0sYi5leHBvcnRzPW19LHt9XSwzMTpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPTEsZT0yLGY9MyxnPTUsaD02Mzc4MTM3LGk9LjAwNjY5NDM3OTk5MDE0MTMxNjtiLmV4cG9ydHM9ZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGooYSl7cmV0dXJuIGE9PT1kfHxhPT09ZX12YXIgayxsLG07aWYoYS5jb21wYXJlX2RhdHVtcyhiKSlyZXR1cm4gYztpZihhLmRhdHVtX3R5cGU9PT1nfHxiLmRhdHVtX3R5cGU9PT1nKXJldHVybiBjO3ZhciBuPWEuYSxvPWEuZXMscD1iLmEscT1iLmVzLHI9YS5kYXR1bV90eXBlO2lmKHI9PT1mKWlmKDA9PT10aGlzLmFwcGx5X2dyaWRzaGlmdChhLDAsYykpYS5hPWgsYS5lcz1pO2Vsc2V7aWYoIWEuZGF0dW1fcGFyYW1zKXJldHVybiBhLmE9bixhLmVzPWEuZXMsYztmb3Ioaz0xLGw9MCxtPWEuZGF0dW1fcGFyYW1zLmxlbmd0aDttPmw7bCsrKWsqPWEuZGF0dW1fcGFyYW1zW2xdO2lmKDA9PT1rKXJldHVybiBhLmE9bixhLmVzPWEuZXMsYztyPWEuZGF0dW1fcGFyYW1zLmxlbmd0aD4zP2U6ZH1yZXR1cm4gYi5kYXR1bV90eXBlPT09ZiYmKGIuYT1oLGIuZXM9aSksKGEuZXMhPT1iLmVzfHxhLmEhPT1iLmF8fGoocil8fGooYi5kYXR1bV90eXBlKSkmJihhLmdlb2RldGljX3RvX2dlb2NlbnRyaWMoYyksaihhLmRhdHVtX3R5cGUpJiZhLmdlb2NlbnRyaWNfdG9fd2dzODQoYyksaihiLmRhdHVtX3R5cGUpJiZiLmdlb2NlbnRyaWNfZnJvbV93Z3M4NChjKSxiLmdlb2NlbnRyaWNfdG9fZ2VvZGV0aWMoYykpLGIuZGF0dW1fdHlwZT09PWYmJnRoaXMuYXBwbHlfZ3JpZHNoaWZ0KGIsMSxjKSxhLmE9bixhLmVzPW8sYi5hPXAsYi5lcz1xLGN9fSx7fV0sMzI6W2Z1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGEpe3ZhciBiPXRoaXM7aWYoMj09PWFyZ3VtZW50cy5sZW5ndGgpe3ZhciBjPWFyZ3VtZW50c1sxXTsic3RyaW5nIj09dHlwZW9mIGM/IisiPT09Yy5jaGFyQXQoMCk/ZFthXT1mKGFyZ3VtZW50c1sxXSk6ZFthXT1nKGFyZ3VtZW50c1sxXSk6ZFthXT1jfWVsc2UgaWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpe2lmKEFycmF5LmlzQXJyYXkoYSkpcmV0dXJuIGEubWFwKGZ1bmN0aW9uKGEpe0FycmF5LmlzQXJyYXkoYSk/ZC5hcHBseShiLGEpOmQoYSl9KTtpZigic3RyaW5nIj09dHlwZW9mIGEpe2lmKGEgaW4gZClyZXR1cm4gZFthXX1lbHNlIkVQU0ciaW4gYT9kWyJFUFNHOiIrYS5FUFNHXT1hOiJFU1JJImluIGE/ZFsiRVNSSToiK2EuRVNSSV09YToiSUFVMjAwMCJpbiBhP2RbIklBVTIwMDA6IithLklBVTIwMDBdPWE6Y29uc29sZS5sb2coYSk7cmV0dXJufX12YXIgZT1hKCIuL2dsb2JhbCIpLGY9YSgiLi9wcm9qU3RyaW5nIiksZz1hKCIuL3drdCIpO2UoZCksYi5leHBvcnRzPWR9LHsiLi9nbG9iYWwiOjM1LCIuL3Byb2pTdHJpbmciOjM4LCIuL3drdCI6Njd9XSwzMzpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4vY29uc3RhbnRzL0RhdHVtIiksZT1hKCIuL2NvbnN0YW50cy9FbGxpcHNvaWQiKSxmPWEoIi4vZXh0ZW5kIiksZz1hKCIuL2RhdHVtIiksaD0xZS0xMCxpPS4xNjY2NjY2NjY2NjY2NjY2NixqPS4wNDcyMjIyMjIyMjIyMjIyMixrPS4wMjIxNTYwODQ2NTYwODQ2NTU7Yi5leHBvcnRzPWZ1bmN0aW9uKGEpe2lmKGEuZGF0dW1Db2RlJiYibm9uZSIhPT1hLmRhdHVtQ29kZSl7dmFyIGI9ZFthLmRhdHVtQ29kZV07YiYmKGEuZGF0dW1fcGFyYW1zPWIudG93Z3M4ND9iLnRvd2dzODQuc3BsaXQoIiwiKTpudWxsLGEuZWxscHM9Yi5lbGxpcHNlLGEuZGF0dW1OYW1lPWIuZGF0dW1OYW1lP2IuZGF0dW1OYW1lOmEuZGF0dW1Db2RlKX1pZighYS5hKXt2YXIgYz1lW2EuZWxscHNdP2VbYS5lbGxwc106ZS5XR1M4NDtmKGEsYyl9cmV0dXJuIGEucmYmJiFhLmImJihhLmI9KDEtMS9hLnJmKSphLmEpLCgwPT09YS5yZnx8TWF0aC5hYnMoYS5hLWEuYik8aCkmJihhLnNwaGVyZT0hMCxhLmI9YS5hKSxhLmEyPWEuYSphLmEsYS5iMj1hLmIqYS5iLGEuZXM9KGEuYTItYS5iMikvYS5hMixhLmU9TWF0aC5zcXJ0KGEuZXMpLGEuUl9BJiYoYS5hKj0xLWEuZXMqKGkrYS5lcyooaithLmVzKmspKSxhLmEyPWEuYSphLmEsYS5iMj1hLmIqYS5iLGEuZXM9MCksYS5lcDI9KGEuYTItYS5iMikvYS5iMixhLmswfHwoYS5rMD0xKSxhLmF4aXN8fChhLmF4aXM9ImVudSIpLGEuZGF0dW18fChhLmRhdHVtPWcoYSkpLGF9fSx7Ii4vY29uc3RhbnRzL0RhdHVtIjoyNSwiLi9jb25zdGFudHMvRWxsaXBzb2lkIjoyNiwiLi9kYXR1bSI6MzAsIi4vZXh0ZW5kIjozNH1dLDM0OltmdW5jdGlvbihhLGIsYyl7Yi5leHBvcnRzPWZ1bmN0aW9uKGEsYil7YT1hfHx7fTt2YXIgYyxkO2lmKCFiKXJldHVybiBhO2ZvcihkIGluIGIpYz1iW2RdLHZvaWQgMCE9PWMmJihhW2RdPWMpO3JldHVybiBhfX0se31dLDM1OltmdW5jdGlvbihhLGIsYyl7Yi5leHBvcnRzPWZ1bmN0aW9uKGEpe2EoIkVQU0c6NDMyNiIsIit0aXRsZT1XR1MgODQgKGxvbmcvbGF0KSArcHJvaj1sb25nbGF0ICtlbGxwcz1XR1M4NCArZGF0dW09V0dTODQgK3VuaXRzPWRlZ3JlZXMiKSxhKCJFUFNHOjQyNjkiLCIrdGl0bGU9TkFEODMgKGxvbmcvbGF0KSArcHJvaj1sb25nbGF0ICthPTYzNzgxMzcuMCArYj02MzU2NzUyLjMxNDE0MDM2ICtlbGxwcz1HUlM4MCArZGF0dW09TkFEODMgK3VuaXRzPWRlZ3JlZXMiKSxhKCJFUFNHOjM4NTciLCIrdGl0bGU9V0dTIDg0IC8gUHNldWRvLU1lcmNhdG9yICtwcm9qPW1lcmMgK2E9NjM3ODEzNyArYj02Mzc4MTM3ICtsYXRfdHM9MC4wICtsb25fMD0wLjAgK3hfMD0wLjAgK3lfMD0wICtrPTEuMCArdW5pdHM9bSArbmFkZ3JpZHM9QG51bGwgK25vX2RlZnMiKSxhLldHUzg0PWFbIkVQU0c6NDMyNiJdLGFbIkVQU0c6Mzc4NSJdPWFbIkVQU0c6Mzg1NyJdLGEuR09PR0xFPWFbIkVQU0c6Mzg1NyJdLGFbIkVQU0c6OTAwOTEzIl09YVsiRVBTRzozODU3Il0sYVsiRVBTRzoxMDIxMTMiXT1hWyJFUFNHOjM4NTciXX19LHt9XSwzNjpbZnVuY3Rpb24oYSxiLGMpe3ZhciBwcm9qND1hKCIuL2NvcmUiKTtwcm9qNC5kZWZhdWx0RGF0dW09IldHUzg0Iixwcm9qNC5Qcm9qPWEoIi4vUHJvaiIpLHByb2o0LldHUzg0PW5ldyBwcm9qNC5Qcm9qKCJXR1M4NCIpLHByb2o0LlBvaW50PWEoIi4vUG9pbnQiKSxwcm9qNC50b1BvaW50PWEoIi4vY29tbW9uL3RvUG9pbnQiKSxwcm9qNC5kZWZzPWEoIi4vZGVmcyIpLHByb2o0LnRyYW5zZm9ybT1hKCIuL3RyYW5zZm9ybSIpLHByb2o0Lm1ncnM9YSgibWdycyIpLHByb2o0LnZlcnNpb249YSgiLi4vcGFja2FnZS5qc29uIikudmVyc2lvbixhKCIuL2luY2x1ZGVkUHJvamVjdGlvbnMiKShwcm9qNCksYi5leHBvcnRzPXByb2o0fSx7Ii4uL3BhY2thZ2UuanNvbiI6NjksIi4vUG9pbnQiOjEsIi4vUHJvaiI6MiwiLi9jb21tb24vdG9Qb2ludCI6MjMsIi4vY29yZSI6MjksIi4vZGVmcyI6MzIsIi4vaW5jbHVkZWRQcm9qZWN0aW9ucyI6Ii4vaW5jbHVkZWRQcm9qZWN0aW9ucyIsIi4vdHJhbnNmb3JtIjo2NixtZ3JzOjY4fV0sMzc6W2Z1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGEpe3JldHVybiJzdHJpbmciPT10eXBlb2YgYX1mdW5jdGlvbiBlKGEpe3JldHVybiBhIGluIGl9ZnVuY3Rpb24gZihhKXt2YXIgYj1bIkdFT0dDUyIsIkdFT0NDUyIsIlBST0pDUyIsIkxPQ0FMX0NTIl07cmV0dXJuIGIucmVkdWNlKGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGIrMSthLmluZGV4T2YoYyl9LDApfWZ1bmN0aW9uIGcoYSl7cmV0dXJuIisiPT09YVswXX1mdW5jdGlvbiBoKGEpe3JldHVybiBkKGEpP2UoYSk/aVthXTpmKGEpP2ooYSk6ZyhhKT9rKGEpOnZvaWQgMDphfXZhciBpPWEoIi4vZGVmcyIpLGo9YSgiLi93a3QiKSxrPWEoIi4vcHJvalN0cmluZyIpO2IuZXhwb3J0cz1ofSx7Ii4vZGVmcyI6MzIsIi4vcHJvalN0cmluZyI6MzgsIi4vd2t0Ijo2N31dLDM4OltmdW5jdGlvbihhLGIsYyl7dmFyIGQ9LjAxNzQ1MzI5MjUxOTk0MzI5NSxlPWEoIi4vY29uc3RhbnRzL1ByaW1lTWVyaWRpYW4iKSxmPWEoIi4vY29uc3RhbnRzL3VuaXRzIik7Yi5leHBvcnRzPWZ1bmN0aW9uKGEpe3ZhciBiPXt9LGM9e307YS5zcGxpdCgiKyIpLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gYS50cmltKCl9KS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIGF9KS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWEuc3BsaXQoIj0iKTtiLnB1c2goITApLGNbYlswXS50b0xvd2VyQ2FzZSgpXT1iWzFdfSk7dmFyIGcsaCxpLGo9e3Byb2o6InByb2pOYW1lIixkYXR1bToiZGF0dW1Db2RlIixyZjpmdW5jdGlvbihhKXtiLnJmPXBhcnNlRmxvYXQoYSl9LGxhdF8wOmZ1bmN0aW9uKGEpe2IubGF0MD1hKmR9LGxhdF8xOmZ1bmN0aW9uKGEpe2IubGF0MT1hKmR9LGxhdF8yOmZ1bmN0aW9uKGEpe2IubGF0Mj1hKmR9LGxhdF90czpmdW5jdGlvbihhKXtiLmxhdF90cz1hKmR9LGxvbl8wOmZ1bmN0aW9uKGEpe2IubG9uZzA9YSpkfSxsb25fMTpmdW5jdGlvbihhKXtiLmxvbmcxPWEqZH0sbG9uXzI6ZnVuY3Rpb24oYSl7Yi5sb25nMj1hKmR9LGFscGhhOmZ1bmN0aW9uKGEpe2IuYWxwaGE9cGFyc2VGbG9hdChhKSpkfSxsb25jOmZ1bmN0aW9uKGEpe2IubG9uZ2M9YSpkfSx4XzA6ZnVuY3Rpb24oYSl7Yi54MD1wYXJzZUZsb2F0KGEpfSx5XzA6ZnVuY3Rpb24oYSl7Yi55MD1wYXJzZUZsb2F0KGEpfSxrXzA6ZnVuY3Rpb24oYSl7Yi5rMD1wYXJzZUZsb2F0KGEpfSxrOmZ1bmN0aW9uKGEpe2IuazA9cGFyc2VGbG9hdChhKX0sYTpmdW5jdGlvbihhKXtiLmE9cGFyc2VGbG9hdChhKX0sYjpmdW5jdGlvbihhKXtiLmI9cGFyc2VGbG9hdChhKX0scl9hOmZ1bmN0aW9uKCl7Yi5SX0E9ITB9LHpvbmU6ZnVuY3Rpb24oYSl7Yi56b25lPXBhcnNlSW50KGEsMTApfSxzb3V0aDpmdW5jdGlvbigpe2IudXRtU291dGg9ITB9LHRvd2dzODQ6ZnVuY3Rpb24oYSl7Yi5kYXR1bV9wYXJhbXM9YS5zcGxpdCgiLCIpLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gcGFyc2VGbG9hdChhKX0pfSx0b19tZXRlcjpmdW5jdGlvbihhKXtiLnRvX21ldGVyPXBhcnNlRmxvYXQoYSl9LHVuaXRzOmZ1bmN0aW9uKGEpe2IudW5pdHM9YSxmW2FdJiYoYi50b19tZXRlcj1mW2FdLnRvX21ldGVyKX0sZnJvbV9ncmVlbndpY2g6ZnVuY3Rpb24oYSl7Yi5mcm9tX2dyZWVud2ljaD1hKmR9LHBtOmZ1bmN0aW9uKGEpe2IuZnJvbV9ncmVlbndpY2g9KGVbYV0/ZVthXTpwYXJzZUZsb2F0KGEpKSpkfSxuYWRncmlkczpmdW5jdGlvbihhKXsiQG51bGwiPT09YT9iLmRhdHVtQ29kZT0ibm9uZSI6Yi5uYWRncmlkcz1hfSxheGlzOmZ1bmN0aW9uKGEpe3ZhciBjPSJld25zdWQiOzM9PT1hLmxlbmd0aCYmLTEhPT1jLmluZGV4T2YoYS5zdWJzdHIoMCwxKSkmJi0xIT09Yy5pbmRleE9mKGEuc3Vic3RyKDEsMSkpJiYtMSE9PWMuaW5kZXhPZihhLnN1YnN0cigyLDEpKSYmKGIuYXhpcz1hKX19O2ZvcihnIGluIGMpaD1jW2ddLGcgaW4gaj8oaT1qW2ddLCJmdW5jdGlvbiI9PXR5cGVvZiBpP2koaCk6YltpXT1oKTpiW2ddPWg7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBiLmRhdHVtQ29kZSYmIldHUzg0IiE9PWIuZGF0dW1Db2RlJiYoYi5kYXR1bUNvZGU9Yi5kYXR1bUNvZGUudG9Mb3dlckNhc2UoKSksYn19LHsiLi9jb25zdGFudHMvUHJpbWVNZXJpZGlhbiI6MjcsIi4vY29uc3RhbnRzL3VuaXRzIjoyOH1dLDM5OltmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChhLGIpe3ZhciBjPWcubGVuZ3RoO3JldHVybiBhLm5hbWVzPyhnW2NdPWEsYS5uYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2ZbYS50b0xvd2VyQ2FzZSgpXT1jfSksdGhpcyk6KGNvbnNvbGUubG9nKGIpLCEwKX12YXIgZT1bYSgiLi9wcm9qZWN0aW9ucy9tZXJjIiksYSgiLi9wcm9qZWN0aW9ucy9sb25nbGF0IildLGY9e30sZz1bXTtjLmFkZD1kLGMuZ2V0PWZ1bmN0aW9uKGEpe2lmKCFhKXJldHVybiExO3ZhciBiPWEudG9Mb3dlckNhc2UoKTtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGZbYl0mJmdbZltiXV0/Z1tmW2JdXTp2b2lkIDB9LGMuc3RhcnQ9ZnVuY3Rpb24oKXtlLmZvckVhY2goZCl9fSx7Ii4vcHJvamVjdGlvbnMvbG9uZ2xhdCI6NTEsIi4vcHJvamVjdGlvbnMvbWVyYyI6NTJ9XSw0MDpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPTFlLTEwLGU9YSgiLi4vY29tbW9uL21zZm56IiksZj1hKCIuLi9jb21tb24vcXNmbnoiKSxnPWEoIi4uL2NvbW1vbi9hZGp1c3RfbG9uIiksaD1hKCIuLi9jb21tb24vYXNpbnoiKTtjLmluaXQ9ZnVuY3Rpb24oKXtNYXRoLmFicyh0aGlzLmxhdDErdGhpcy5sYXQyKTxkfHwodGhpcy50ZW1wPXRoaXMuYi90aGlzLmEsdGhpcy5lcz0xLU1hdGgucG93KHRoaXMudGVtcCwyKSx0aGlzLmUzPU1hdGguc3FydCh0aGlzLmVzKSx0aGlzLnNpbl9wbz1NYXRoLnNpbih0aGlzLmxhdDEpLHRoaXMuY29zX3BvPU1hdGguY29zKHRoaXMubGF0MSksdGhpcy50MT10aGlzLnNpbl9wbyx0aGlzLmNvbj10aGlzLnNpbl9wbyx0aGlzLm1zMT1lKHRoaXMuZTMsdGhpcy5zaW5fcG8sdGhpcy5jb3NfcG8pLHRoaXMucXMxPWYodGhpcy5lMyx0aGlzLnNpbl9wbyx0aGlzLmNvc19wbyksdGhpcy5zaW5fcG89TWF0aC5zaW4odGhpcy5sYXQyKSx0aGlzLmNvc19wbz1NYXRoLmNvcyh0aGlzLmxhdDIpLHRoaXMudDI9dGhpcy5zaW5fcG8sdGhpcy5tczI9ZSh0aGlzLmUzLHRoaXMuc2luX3BvLHRoaXMuY29zX3BvKSx0aGlzLnFzMj1mKHRoaXMuZTMsdGhpcy5zaW5fcG8sdGhpcy5jb3NfcG8pLHRoaXMuc2luX3BvPU1hdGguc2luKHRoaXMubGF0MCksdGhpcy5jb3NfcG89TWF0aC5jb3ModGhpcy5sYXQwKSx0aGlzLnQzPXRoaXMuc2luX3BvLHRoaXMucXMwPWYodGhpcy5lMyx0aGlzLnNpbl9wbyx0aGlzLmNvc19wbyksTWF0aC5hYnModGhpcy5sYXQxLXRoaXMubGF0Mik+ZD90aGlzLm5zMD0odGhpcy5tczEqdGhpcy5tczEtdGhpcy5tczIqdGhpcy5tczIpLyh0aGlzLnFzMi10aGlzLnFzMSk6dGhpcy5uczA9dGhpcy5jb24sdGhpcy5jPXRoaXMubXMxKnRoaXMubXMxK3RoaXMubnMwKnRoaXMucXMxLHRoaXMucmg9dGhpcy5hKk1hdGguc3FydCh0aGlzLmMtdGhpcy5uczAqdGhpcy5xczApL3RoaXMubnMwKX0sYy5mb3J3YXJkPWZ1bmN0aW9uKGEpe3ZhciBiPWEueCxjPWEueTt0aGlzLnNpbl9waGk9TWF0aC5zaW4oYyksdGhpcy5jb3NfcGhpPU1hdGguY29zKGMpO3ZhciBkPWYodGhpcy5lMyx0aGlzLnNpbl9waGksdGhpcy5jb3NfcGhpKSxlPXRoaXMuYSpNYXRoLnNxcnQodGhpcy5jLXRoaXMubnMwKmQpL3RoaXMubnMwLGg9dGhpcy5uczAqZyhiLXRoaXMubG9uZzApLGk9ZSpNYXRoLnNpbihoKSt0aGlzLngwLGo9dGhpcy5yaC1lKk1hdGguY29zKGgpK3RoaXMueTA7cmV0dXJuIGEueD1pLGEueT1qLGF9LGMuaW52ZXJzZT1mdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGg7cmV0dXJuIGEueC09dGhpcy54MCxhLnk9dGhpcy5yaC1hLnkrdGhpcy55MCx0aGlzLm5zMD49MD8oYj1NYXRoLnNxcnQoYS54KmEueCthLnkqYS55KSxkPTEpOihiPS1NYXRoLnNxcnQoYS54KmEueCthLnkqYS55KSxkPS0xKSxlPTAsMCE9PWImJihlPU1hdGguYXRhbjIoZCphLngsZCphLnkpKSxkPWIqdGhpcy5uczAvdGhpcy5hLHRoaXMuc3BoZXJlP2g9TWF0aC5hc2luKCh0aGlzLmMtZCpkKS8oMip0aGlzLm5zMCkpOihjPSh0aGlzLmMtZCpkKS90aGlzLm5zMCxoPXRoaXMucGhpMXoodGhpcy5lMyxjKSksZj1nKGUvdGhpcy5uczArdGhpcy5sb25nMCksYS54PWYsYS55PWgsYX0sYy5waGkxej1mdW5jdGlvbihhLGIpe3ZhciBjLGUsZixnLGksaj1oKC41KmIpO2lmKGQ+YSlyZXR1cm4gajtmb3IodmFyIGs9YSphLGw9MTsyNT49bDtsKyspaWYoYz1NYXRoLnNpbihqKSxlPU1hdGguY29zKGopLGY9YSpjLGc9MS1mKmYsaT0uNSpnKmcvZSooYi8oMS1rKS1jL2crLjUvYSpNYXRoLmxvZygoMS1mKS8oMStmKSkpLGorPWksTWF0aC5hYnMoaSk8PTFlLTcpcmV0dXJuIGo7cmV0dXJuIG51bGx9LGMubmFtZXM9WyJBbGJlcnNfQ29uaWNfRXF1YWxfQXJlYSIsIkFsYmVycyIsImFlYSJdfSx7Ii4uL2NvbW1vbi9hZGp1c3RfbG9uIjo1LCIuLi9jb21tb24vYXNpbnoiOjYsIi4uL2NvbW1vbi9tc2ZueiI6MTUsIi4uL2NvbW1vbi9xc2ZueiI6MjB9XSw0MTpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2NvbW1vbi9hZGp1c3RfbG9uIiksZT1NYXRoLlBJLzIsZj0xZS0xMCxnPWEoIi4uL2NvbW1vbi9tbGZuIiksaD1hKCIuLi9jb21tb24vZTBmbiIpLGk9YSgiLi4vY29tbW9uL2UxZm4iKSxqPWEoIi4uL2NvbW1vbi9lMmZuIiksaz1hKCIuLi9jb21tb24vZTNmbiIpLGw9YSgiLi4vY29tbW9uL2dOIiksbT1hKCIuLi9jb21tb24vYXNpbnoiKSxuPWEoIi4uL2NvbW1vbi9pbWxmbiIpO2MuaW5pdD1mdW5jdGlvbigpe3RoaXMuc2luX3AxMj1NYXRoLnNpbih0aGlzLmxhdDApLHRoaXMuY29zX3AxMj1NYXRoLmNvcyh0aGlzLmxhdDApfSxjLmZvcndhcmQ9ZnVuY3Rpb24oYSl7dmFyIGIsYyxtLG4sbyxwLHEscixzLHQsdSx2LHcseCx5LHosQSxCLEMsRCxFLEYsRyxIPWEueCxJPWEueSxKPU1hdGguc2luKGEueSksSz1NYXRoLmNvcyhhLnkpLEw9ZChILXRoaXMubG9uZzApO3JldHVybiB0aGlzLnNwaGVyZT9NYXRoLmFicyh0aGlzLnNpbl9wMTItMSk8PWY/KGEueD10aGlzLngwK3RoaXMuYSooZS1JKSpNYXRoLnNpbihMKSxhLnk9dGhpcy55MC10aGlzLmEqKGUtSSkqTWF0aC5jb3MoTCksYSk6TWF0aC5hYnModGhpcy5zaW5fcDEyKzEpPD1mPyhhLng9dGhpcy54MCt0aGlzLmEqKGUrSSkqTWF0aC5zaW4oTCksYS55PXRoaXMueTArdGhpcy5hKihlK0kpKk1hdGguY29zKEwpLGEpOihCPXRoaXMuc2luX3AxMipKK3RoaXMuY29zX3AxMipLKk1hdGguY29zKEwpLHo9TWF0aC5hY29zKEIpLEE9ei9NYXRoLnNpbih6KSxhLng9dGhpcy54MCt0aGlzLmEqQSpLKk1hdGguc2luKEwpLGEueT10aGlzLnkwK3RoaXMuYSpBKih0aGlzLmNvc19wMTIqSi10aGlzLnNpbl9wMTIqSypNYXRoLmNvcyhMKSksYSk6KGI9aCh0aGlzLmVzKSxjPWkodGhpcy5lcyksbT1qKHRoaXMuZXMpLG49ayh0aGlzLmVzKSxNYXRoLmFicyh0aGlzLnNpbl9wMTItMSk8PWY/KG89dGhpcy5hKmcoYixjLG0sbixlKSxwPXRoaXMuYSpnKGIsYyxtLG4sSSksYS54PXRoaXMueDArKG8tcCkqTWF0aC5zaW4oTCksYS55PXRoaXMueTAtKG8tcCkqTWF0aC5jb3MoTCksYSk6TWF0aC5hYnModGhpcy5zaW5fcDEyKzEpPD1mPyhvPXRoaXMuYSpnKGIsYyxtLG4sZSkscD10aGlzLmEqZyhiLGMsbSxuLEkpLGEueD10aGlzLngwKyhvK3ApKk1hdGguc2luKEwpLGEueT10aGlzLnkwKyhvK3ApKk1hdGguY29zKEwpLGEpOihxPUovSyxyPWwodGhpcy5hLHRoaXMuZSx0aGlzLnNpbl9wMTIpLHM9bCh0aGlzLmEsdGhpcy5lLEopLHQ9TWF0aC5hdGFuKCgxLXRoaXMuZXMpKnErdGhpcy5lcypyKnRoaXMuc2luX3AxMi8ocypLKSksdT1NYXRoLmF0YW4yKE1hdGguc2luKEwpLHRoaXMuY29zX3AxMipNYXRoLnRhbih0KS10aGlzLnNpbl9wMTIqTWF0aC5jb3MoTCkpLEM9MD09PXU/TWF0aC5hc2luKHRoaXMuY29zX3AxMipNYXRoLnNpbih0KS10aGlzLnNpbl9wMTIqTWF0aC5jb3ModCkpOk1hdGguYWJzKE1hdGguYWJzKHUpLU1hdGguUEkpPD1mPy1NYXRoLmFzaW4odGhpcy5jb3NfcDEyKk1hdGguc2luKHQpLXRoaXMuc2luX3AxMipNYXRoLmNvcyh0KSk6TWF0aC5hc2luKE1hdGguc2luKEwpKk1hdGguY29zKHQpL01hdGguc2luKHUpKSx2PXRoaXMuZSp0aGlzLnNpbl9wMTIvTWF0aC5zcXJ0KDEtdGhpcy5lcyksdz10aGlzLmUqdGhpcy5jb3NfcDEyKk1hdGguY29zKHUpL01hdGguc3FydCgxLXRoaXMuZXMpLHg9dip3LHk9dyp3LEQ9QypDLEU9RCpDLEY9RSpDLEc9RipDLHo9cipDKigxLUQqeSooMS15KS82K0UvOCp4KigxLTIqeSkrRi8xMjAqKHkqKDQtNyp5KS0zKnYqdiooMS03KnkpKS1HLzQ4KngpLGEueD10aGlzLngwK3oqTWF0aC5zaW4odSksYS55PXRoaXMueTAreipNYXRoLmNvcyh1KSxhKSl9LGMuaW52ZXJzZT1mdW5jdGlvbihhKXthLngtPXRoaXMueDAsYS55LT10aGlzLnkwO3ZhciBiLGMsbyxwLHEscixzLHQsdSx2LHcseCx5LHosQSxCLEMsRCxFLEYsRyxILEk7aWYodGhpcy5zcGhlcmUpe2lmKGI9TWF0aC5zcXJ0KGEueCphLngrYS55KmEueSksYj4yKmUqdGhpcy5hKXJldHVybjtyZXR1cm4gYz1iL3RoaXMuYSxvPU1hdGguc2luKGMpLHA9TWF0aC5jb3MoYykscT10aGlzLmxvbmcwLE1hdGguYWJzKGIpPD1mP3I9dGhpcy5sYXQwOihyPW0ocCp0aGlzLnNpbl9wMTIrYS55Km8qdGhpcy5jb3NfcDEyL2IpLHM9TWF0aC5hYnModGhpcy5sYXQwKS1lLHE9ZChNYXRoLmFicyhzKTw9Zj90aGlzLmxhdDA+PTA/dGhpcy5sb25nMCtNYXRoLmF0YW4yKGEueCwtYS55KTp0aGlzLmxvbmcwLU1hdGguYXRhbjIoLWEueCxhLnkpOnRoaXMubG9uZzArTWF0aC5hdGFuMihhLngqbyxiKnRoaXMuY29zX3AxMipwLWEueSp0aGlzLnNpbl9wMTIqbykpKSxhLng9cSxhLnk9cixhfXJldHVybiB0PWgodGhpcy5lcyksdT1pKHRoaXMuZXMpLHY9aih0aGlzLmVzKSx3PWsodGhpcy5lcyksTWF0aC5hYnModGhpcy5zaW5fcDEyLTEpPD1mPyh4PXRoaXMuYSpnKHQsdSx2LHcsZSksYj1NYXRoLnNxcnQoYS54KmEueCthLnkqYS55KSx5PXgtYixyPW4oeS90aGlzLmEsdCx1LHYsdykscT1kKHRoaXMubG9uZzArTWF0aC5hdGFuMihhLngsLTEqYS55KSksYS54PXEsYS55PXIsYSk6TWF0aC5hYnModGhpcy5zaW5fcDEyKzEpPD1mPyh4PXRoaXMuYSpnKHQsdSx2LHcsZSksYj1NYXRoLnNxcnQoYS54KmEueCthLnkqYS55KSx5PWIteCxyPW4oeS90aGlzLmEsdCx1LHYsdykscT1kKHRoaXMubG9uZzArTWF0aC5hdGFuMihhLngsYS55KSksYS54PXEsYS55PXIsYSk6KGI9TWF0aC5zcXJ0KGEueCphLngrYS55KmEueSksQj1NYXRoLmF0YW4yKGEueCxhLnkpLHo9bCh0aGlzLmEsdGhpcy5lLHRoaXMuc2luX3AxMiksQz1NYXRoLmNvcyhCKSxEPXRoaXMuZSp0aGlzLmNvc19wMTIqQyxFPS1EKkQvKDEtdGhpcy5lcyksRj0zKnRoaXMuZXMqKDEtRSkqdGhpcy5zaW5fcDEyKnRoaXMuY29zX3AxMipDLygxLXRoaXMuZXMpLEc9Yi96LEg9Ry1FKigxK0UpKk1hdGgucG93KEcsMykvNi1GKigxKzMqRSkqTWF0aC5wb3coRyw0KS8yNCxJPTEtRSpIKkgvMi1HKkgqSCpILzYsQT1NYXRoLmFzaW4odGhpcy5zaW5fcDEyKk1hdGguY29zKEgpK3RoaXMuY29zX3AxMipNYXRoLnNpbihIKSpDKSxxPWQodGhpcy5sb25nMCtNYXRoLmFzaW4oTWF0aC5zaW4oQikqTWF0aC5zaW4oSCkvTWF0aC5jb3MoQSkpKSxyPU1hdGguYXRhbigoMS10aGlzLmVzKkkqdGhpcy5zaW5fcDEyL01hdGguc2luKEEpKSpNYXRoLnRhbihBKS8oMS10aGlzLmVzKSksYS54PXEsYS55PXIsYSl9LGMubmFtZXM9WyJBemltdXRoYWxfRXF1aWRpc3RhbnQiLCJhZXFkIl19LHsiLi4vY29tbW9uL2FkanVzdF9sb24iOjUsIi4uL2NvbW1vbi9hc2lueiI6NiwiLi4vY29tbW9uL2UwZm4iOjcsIi4uL2NvbW1vbi9lMWZuIjo4LCIuLi9jb21tb24vZTJmbiI6OSwiLi4vY29tbW9uL2UzZm4iOjEwLCIuLi9jb21tb24vZ04iOjExLCIuLi9jb21tb24vaW1sZm4iOjEyLCIuLi9jb21tb24vbWxmbiI6MTR9XSw0MjpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2NvbW1vbi9tbGZuIiksZT1hKCIuLi9jb21tb24vZTBmbiIpLGY9YSgiLi4vY29tbW9uL2UxZm4iKSxnPWEoIi4uL2NvbW1vbi9lMmZuIiksaD1hKCIuLi9jb21tb24vZTNmbiIpLGk9YSgiLi4vY29tbW9uL2dOIiksaj1hKCIuLi9jb21tb24vYWRqdXN0X2xvbiIpLGs9YSgiLi4vY29tbW9uL2FkanVzdF9sYXQiKSxsPWEoIi4uL2NvbW1vbi9pbWxmbiIpLG09TWF0aC5QSS8yLG49MWUtMTA7Yy5pbml0PWZ1bmN0aW9uKCl7dGhpcy5zcGhlcmV8fCh0aGlzLmUwPWUodGhpcy5lcyksdGhpcy5lMT1mKHRoaXMuZXMpLHRoaXMuZTI9Zyh0aGlzLmVzKSx0aGlzLmUzPWgodGhpcy5lcyksdGhpcy5tbDA9dGhpcy5hKmQodGhpcy5lMCx0aGlzLmUxLHRoaXMuZTIsdGhpcy5lMyx0aGlzLmxhdDApKX0sYy5mb3J3YXJkPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZT1hLngsZj1hLnk7aWYoZT1qKGUtdGhpcy5sb25nMCksdGhpcy5zcGhlcmUpYj10aGlzLmEqTWF0aC5hc2luKE1hdGguY29zKGYpKk1hdGguc2luKGUpKSxjPXRoaXMuYSooTWF0aC5hdGFuMihNYXRoLnRhbihmKSxNYXRoLmNvcyhlKSktdGhpcy5sYXQwKTtlbHNle3ZhciBnPU1hdGguc2luKGYpLGg9TWF0aC5jb3MoZiksaz1pKHRoaXMuYSx0aGlzLmUsZyksbD1NYXRoLnRhbihmKSpNYXRoLnRhbihmKSxtPWUqTWF0aC5jb3MoZiksbj1tKm0sbz10aGlzLmVzKmgqaC8oMS10aGlzLmVzKSxwPXRoaXMuYSpkKHRoaXMuZTAsdGhpcy5lMSx0aGlzLmUyLHRoaXMuZTMsZik7Yj1rKm0qKDEtbipsKigxLzYtKDgtbCs4Km8pKm4vMTIwKSksYz1wLXRoaXMubWwwK2sqZy9oKm4qKC41Kyg1LWwrNipvKSpuLzI0KX1yZXR1cm4gYS54PWIrdGhpcy54MCxhLnk9Yyt0aGlzLnkwLGF9LGMuaW52ZXJzZT1mdW5jdGlvbihhKXthLngtPXRoaXMueDAsYS55LT10aGlzLnkwO3ZhciBiLGMsZD1hLngvdGhpcy5hLGU9YS55L3RoaXMuYTtpZih0aGlzLnNwaGVyZSl7dmFyIGY9ZSt0aGlzLmxhdDA7Yj1NYXRoLmFzaW4oTWF0aC5zaW4oZikqTWF0aC5jb3MoZCkpLGM9TWF0aC5hdGFuMihNYXRoLnRhbihkKSxNYXRoLmNvcyhmKSl9ZWxzZXt2YXIgZz10aGlzLm1sMC90aGlzLmErZSxoPWwoZyx0aGlzLmUwLHRoaXMuZTEsdGhpcy5lMix0aGlzLmUzKTtpZihNYXRoLmFicyhNYXRoLmFicyhoKS1tKTw9bilyZXR1cm4gYS54PXRoaXMubG9uZzAsYS55PW0sMD5lJiYoYS55Kj0tMSksYTt2YXIgbz1pKHRoaXMuYSx0aGlzLmUsTWF0aC5zaW4oaCkpLHA9bypvKm8vdGhpcy5hL3RoaXMuYSooMS10aGlzLmVzKSxxPU1hdGgucG93KE1hdGgudGFuKGgpLDIpLHI9ZCp0aGlzLmEvbyxzPXIqcjtiPWgtbypNYXRoLnRhbihoKS9wKnIqciooLjUtKDErMypxKSpyKnIvMjQpLGM9ciooMS1zKihxLzMrKDErMypxKSpxKnMvMTUpKS9NYXRoLmNvcyhoKX1yZXR1cm4gYS54PWooYyt0aGlzLmxvbmcwKSxhLnk9ayhiKSxhfSxjLm5hbWVzPVsiQ2Fzc2luaSIsIkNhc3NpbmlfU29sZG5lciIsImNhc3MiXX0seyIuLi9jb21tb24vYWRqdXN0X2xhdCI6NCwiLi4vY29tbW9uL2FkanVzdF9sb24iOjUsIi4uL2NvbW1vbi9lMGZuIjo3LCIuLi9jb21tb24vZTFmbiI6OCwiLi4vY29tbW9uL2UyZm4iOjksIi4uL2NvbW1vbi9lM2ZuIjoxMCwiLi4vY29tbW9uL2dOIjoxMSwiLi4vY29tbW9uL2ltbGZuIjoxMiwiLi4vY29tbW9uL21sZm4iOjE0fV0sNDM6W2Z1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9jb21tb24vYWRqdXN0X2xvbiIpLGU9YSgiLi4vY29tbW9uL3FzZm56IiksZj1hKCIuLi9jb21tb24vbXNmbnoiKSxnPWEoIi4uL2NvbW1vbi9pcXNmbnoiKTtjLmluaXQ9ZnVuY3Rpb24oKXt0aGlzLnNwaGVyZXx8KHRoaXMuazA9Zih0aGlzLmUsTWF0aC5zaW4odGhpcy5sYXRfdHMpLE1hdGguY29zKHRoaXMubGF0X3RzKSkpfSxjLmZvcndhcmQ9ZnVuY3Rpb24oYSl7dmFyIGIsYyxmPWEueCxnPWEueSxoPWQoZi10aGlzLmxvbmcwKTtpZih0aGlzLnNwaGVyZSliPXRoaXMueDArdGhpcy5hKmgqTWF0aC5jb3ModGhpcy5sYXRfdHMpLGM9dGhpcy55MCt0aGlzLmEqTWF0aC5zaW4oZykvTWF0aC5jb3ModGhpcy5sYXRfdHMpO2Vsc2V7dmFyIGk9ZSh0aGlzLmUsTWF0aC5zaW4oZykpO2I9dGhpcy54MCt0aGlzLmEqdGhpcy5rMCpoLGM9dGhpcy55MCt0aGlzLmEqaSouNS90aGlzLmswfXJldHVybiBhLng9YixhLnk9YyxhfSxjLmludmVyc2U9ZnVuY3Rpb24oYSl7YS54LT10aGlzLngwLGEueS09dGhpcy55MDt2YXIgYixjO3JldHVybiB0aGlzLnNwaGVyZT8oYj1kKHRoaXMubG9uZzArYS54L3RoaXMuYS9NYXRoLmNvcyh0aGlzLmxhdF90cykpLGM9TWF0aC5hc2luKGEueS90aGlzLmEqTWF0aC5jb3ModGhpcy5sYXRfdHMpKSk6KGM9Zyh0aGlzLmUsMiphLnkqdGhpcy5rMC90aGlzLmEpLGI9ZCh0aGlzLmxvbmcwK2EueC8odGhpcy5hKnRoaXMuazApKSksYS54PWIsYS55PWMsYX0sYy5uYW1lcz1bImNlYSJdfSx7Ii4uL2NvbW1vbi9hZGp1c3RfbG9uIjo1LCIuLi9jb21tb24vaXFzZm56IjoxMywiLi4vY29tbW9uL21zZm56IjoxNSwiLi4vY29tbW9uL3FzZm56IjoyMH1dLDQ0OltmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vY29tbW9uL2FkanVzdF9sb24iKSxlPWEoIi4uL2NvbW1vbi9hZGp1c3RfbGF0Iik7Yy5pbml0PWZ1bmN0aW9uKCl7dGhpcy54MD10aGlzLngwfHwwLHRoaXMueTA9dGhpcy55MHx8MCx0aGlzLmxhdDA9dGhpcy5sYXQwfHwwLHRoaXMubG9uZzA9dGhpcy5sb25nMHx8MCx0aGlzLmxhdF90cz10aGlzLmxhdF90c3x8MCx0aGlzLnRpdGxlPXRoaXMudGl0bGV8fCJFcXVpZGlzdGFudCBDeWxpbmRyaWNhbCAoUGxhdGUgQ2FycmUpIix0aGlzLnJjPU1hdGguY29zKHRoaXMubGF0X3RzKX0sYy5mb3J3YXJkPWZ1bmN0aW9uKGEpe3ZhciBiPWEueCxjPWEueSxmPWQoYi10aGlzLmxvbmcwKSxnPWUoYy10aGlzLmxhdDApO3JldHVybiBhLng9dGhpcy54MCt0aGlzLmEqZip0aGlzLnJjLGEueT10aGlzLnkwK3RoaXMuYSpnLGF9LGMuaW52ZXJzZT1mdW5jdGlvbihhKXt2YXIgYj1hLngsYz1hLnk7cmV0dXJuIGEueD1kKHRoaXMubG9uZzArKGItdGhpcy54MCkvKHRoaXMuYSp0aGlzLnJjKSksYS55PWUodGhpcy5sYXQwKyhjLXRoaXMueTApL3RoaXMuYSksYX0sYy5uYW1lcz1bIkVxdWlyZWN0YW5ndWxhciIsIkVxdWlkaXN0YW50X0N5bGluZHJpY2FsIiwiZXFjIl19LHsiLi4vY29tbW9uL2FkanVzdF9sYXQiOjQsIi4uL2NvbW1vbi9hZGp1c3RfbG9uIjo1fV0sNDU6W2Z1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9jb21tb24vZTBmbiIpLGU9YSgiLi4vY29tbW9uL2UxZm4iKSxmPWEoIi4uL2NvbW1vbi9lMmZuIiksZz1hKCIuLi9jb21tb24vZTNmbiIpLGg9YSgiLi4vY29tbW9uL21zZm56IiksaT1hKCIuLi9jb21tb24vbWxmbiIpLGo9YSgiLi4vY29tbW9uL2FkanVzdF9sb24iKSxrPWEoIi4uL2NvbW1vbi9hZGp1c3RfbGF0IiksbD1hKCIuLi9jb21tb24vaW1sZm4iKSxtPTFlLTEwO2MuaW5pdD1mdW5jdGlvbigpe01hdGguYWJzKHRoaXMubGF0MSt0aGlzLmxhdDIpPG18fCh0aGlzLmxhdDI9dGhpcy5sYXQyfHx0aGlzLmxhdDEsdGhpcy50ZW1wPXRoaXMuYi90aGlzLmEsdGhpcy5lcz0xLU1hdGgucG93KHRoaXMudGVtcCwyKSx0aGlzLmU9TWF0aC5zcXJ0KHRoaXMuZXMpLHRoaXMuZTA9ZCh0aGlzLmVzKSx0aGlzLmUxPWUodGhpcy5lcyksdGhpcy5lMj1mKHRoaXMuZXMpLHRoaXMuZTM9Zyh0aGlzLmVzKSx0aGlzLnNpbnBoaT1NYXRoLnNpbih0aGlzLmxhdDEpLHRoaXMuY29zcGhpPU1hdGguY29zKHRoaXMubGF0MSksdGhpcy5tczE9aCh0aGlzLmUsdGhpcy5zaW5waGksdGhpcy5jb3NwaGkpLHRoaXMubWwxPWkodGhpcy5lMCx0aGlzLmUxLHRoaXMuZTIsdGhpcy5lMyx0aGlzLmxhdDEpLE1hdGguYWJzKHRoaXMubGF0MS10aGlzLmxhdDIpPG0/dGhpcy5ucz10aGlzLnNpbnBoaToodGhpcy5zaW5waGk9TWF0aC5zaW4odGhpcy5sYXQyKSx0aGlzLmNvc3BoaT1NYXRoLmNvcyh0aGlzLmxhdDIpLHRoaXMubXMyPWgodGhpcy5lLHRoaXMuc2lucGhpLHRoaXMuY29zcGhpKSx0aGlzLm1sMj1pKHRoaXMuZTAsdGhpcy5lMSx0aGlzLmUyLHRoaXMuZTMsdGhpcy5sYXQyKSx0aGlzLm5zPSh0aGlzLm1zMS10aGlzLm1zMikvKHRoaXMubWwyLXRoaXMubWwxKSksdGhpcy5nPXRoaXMubWwxK3RoaXMubXMxL3RoaXMubnMsdGhpcy5tbDA9aSh0aGlzLmUwLHRoaXMuZTEsdGhpcy5lMix0aGlzLmUzLHRoaXMubGF0MCksdGhpcy5yaD10aGlzLmEqKHRoaXMuZy10aGlzLm1sMCkpfSxjLmZvcndhcmQ9ZnVuY3Rpb24oYSl7dmFyIGIsYz1hLngsZD1hLnk7aWYodGhpcy5zcGhlcmUpYj10aGlzLmEqKHRoaXMuZy1kKTtlbHNle3ZhciBlPWkodGhpcy5lMCx0aGlzLmUxLHRoaXMuZTIsdGhpcy5lMyxkKTtiPXRoaXMuYSoodGhpcy5nLWUpfXZhciBmPXRoaXMubnMqaihjLXRoaXMubG9uZzApLGc9dGhpcy54MCtiKk1hdGguc2luKGYpLGg9dGhpcy55MCt0aGlzLnJoLWIqTWF0aC5jb3MoZik7cmV0dXJuIGEueD1nLGEueT1oLGF9LGMuaW52ZXJzZT1mdW5jdGlvbihhKXthLngtPXRoaXMueDAsYS55PXRoaXMucmgtYS55K3RoaXMueTA7dmFyIGIsYyxkLGU7dGhpcy5ucz49MD8oYz1NYXRoLnNxcnQoYS54KmEueCthLnkqYS55KSwNCmI9MSk6KGM9LU1hdGguc3FydChhLngqYS54K2EueSphLnkpLGI9LTEpO3ZhciBmPTA7aWYoMCE9PWMmJihmPU1hdGguYXRhbjIoYiphLngsYiphLnkpKSx0aGlzLnNwaGVyZSlyZXR1cm4gZT1qKHRoaXMubG9uZzArZi90aGlzLm5zKSxkPWsodGhpcy5nLWMvdGhpcy5hKSxhLng9ZSxhLnk9ZCxhO3ZhciBnPXRoaXMuZy1jL3RoaXMuYTtyZXR1cm4gZD1sKGcsdGhpcy5lMCx0aGlzLmUxLHRoaXMuZTIsdGhpcy5lMyksZT1qKHRoaXMubG9uZzArZi90aGlzLm5zKSxhLng9ZSxhLnk9ZCxhfSxjLm5hbWVzPVsiRXF1aWRpc3RhbnRfQ29uaWMiLCJlcWRjIl19LHsiLi4vY29tbW9uL2FkanVzdF9sYXQiOjQsIi4uL2NvbW1vbi9hZGp1c3RfbG9uIjo1LCIuLi9jb21tb24vZTBmbiI6NywiLi4vY29tbW9uL2UxZm4iOjgsIi4uL2NvbW1vbi9lMmZuIjo5LCIuLi9jb21tb24vZTNmbiI6MTAsIi4uL2NvbW1vbi9pbWxmbiI6MTIsIi4uL2NvbW1vbi9tbGZuIjoxNCwiLi4vY29tbW9uL21zZm56IjoxNX1dLDQ2OltmdW5jdGlvbihhLGIsYyl7dmFyIGQ9TWF0aC5QSS80LGU9YSgiLi4vY29tbW9uL3NyYXQiKSxmPU1hdGguUEkvMixnPTIwO2MuaW5pdD1mdW5jdGlvbigpe3ZhciBhPU1hdGguc2luKHRoaXMubGF0MCksYj1NYXRoLmNvcyh0aGlzLmxhdDApO2IqPWIsdGhpcy5yYz1NYXRoLnNxcnQoMS10aGlzLmVzKS8oMS10aGlzLmVzKmEqYSksdGhpcy5DPU1hdGguc3FydCgxK3RoaXMuZXMqYipiLygxLXRoaXMuZXMpKSx0aGlzLnBoaWMwPU1hdGguYXNpbihhL3RoaXMuQyksdGhpcy5yYXRleHA9LjUqdGhpcy5DKnRoaXMuZSx0aGlzLks9TWF0aC50YW4oLjUqdGhpcy5waGljMCtkKS8oTWF0aC5wb3coTWF0aC50YW4oLjUqdGhpcy5sYXQwK2QpLHRoaXMuQykqZSh0aGlzLmUqYSx0aGlzLnJhdGV4cCkpfSxjLmZvcndhcmQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS54LGM9YS55O3JldHVybiBhLnk9MipNYXRoLmF0YW4odGhpcy5LKk1hdGgucG93KE1hdGgudGFuKC41KmMrZCksdGhpcy5DKSplKHRoaXMuZSpNYXRoLnNpbihjKSx0aGlzLnJhdGV4cCkpLWYsYS54PXRoaXMuQypiLGF9LGMuaW52ZXJzZT1mdW5jdGlvbihhKXtmb3IodmFyIGI9MWUtMTQsYz1hLngvdGhpcy5DLGg9YS55LGk9TWF0aC5wb3coTWF0aC50YW4oLjUqaCtkKS90aGlzLkssMS90aGlzLkMpLGo9ZztqPjAmJihoPTIqTWF0aC5hdGFuKGkqZSh0aGlzLmUqTWF0aC5zaW4oYS55KSwtLjUqdGhpcy5lKSktZiwhKE1hdGguYWJzKGgtYS55KTxiKSk7LS1qKWEueT1oO3JldHVybiBqPyhhLng9YyxhLnk9aCxhKTpudWxsfSxjLm5hbWVzPVsiZ2F1c3MiXX0seyIuLi9jb21tb24vc3JhdCI6MjJ9XSw0NzpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2NvbW1vbi9hZGp1c3RfbG9uIiksZT0xZS0xMCxmPWEoIi4uL2NvbW1vbi9hc2lueiIpO2MuaW5pdD1mdW5jdGlvbigpe3RoaXMuc2luX3AxND1NYXRoLnNpbih0aGlzLmxhdDApLHRoaXMuY29zX3AxND1NYXRoLmNvcyh0aGlzLmxhdDApLHRoaXMuaW5maW5pdHlfZGlzdD0xZTMqdGhpcy5hLHRoaXMucmM9MX0sYy5mb3J3YXJkPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZixnLGgsaSxqLGssbD1hLngsbT1hLnk7cmV0dXJuIGY9ZChsLXRoaXMubG9uZzApLGI9TWF0aC5zaW4obSksYz1NYXRoLmNvcyhtKSxnPU1hdGguY29zKGYpLGk9dGhpcy5zaW5fcDE0KmIrdGhpcy5jb3NfcDE0KmMqZyxoPTEsaT4wfHxNYXRoLmFicyhpKTw9ZT8oaj10aGlzLngwK3RoaXMuYSpoKmMqTWF0aC5zaW4oZikvaSxrPXRoaXMueTArdGhpcy5hKmgqKHRoaXMuY29zX3AxNCpiLXRoaXMuc2luX3AxNCpjKmcpL2kpOihqPXRoaXMueDArdGhpcy5pbmZpbml0eV9kaXN0KmMqTWF0aC5zaW4oZiksaz10aGlzLnkwK3RoaXMuaW5maW5pdHlfZGlzdCoodGhpcy5jb3NfcDE0KmItdGhpcy5zaW5fcDE0KmMqZykpLGEueD1qLGEueT1rLGF9LGMuaW52ZXJzZT1mdW5jdGlvbihhKXt2YXIgYixjLGUsZyxoLGk7cmV0dXJuIGEueD0oYS54LXRoaXMueDApL3RoaXMuYSxhLnk9KGEueS10aGlzLnkwKS90aGlzLmEsYS54Lz10aGlzLmswLGEueS89dGhpcy5rMCwoYj1NYXRoLnNxcnQoYS54KmEueCthLnkqYS55KSk/KGc9TWF0aC5hdGFuMihiLHRoaXMucmMpLGM9TWF0aC5zaW4oZyksZT1NYXRoLmNvcyhnKSxpPWYoZSp0aGlzLnNpbl9wMTQrYS55KmMqdGhpcy5jb3NfcDE0L2IpLGg9TWF0aC5hdGFuMihhLngqYyxiKnRoaXMuY29zX3AxNCplLWEueSp0aGlzLnNpbl9wMTQqYyksaD1kKHRoaXMubG9uZzAraCkpOihpPXRoaXMucGhpYzAsaD0wKSxhLng9aCxhLnk9aSxhfSxjLm5hbWVzPVsiZ25vbSJdfSx7Ii4uL2NvbW1vbi9hZGp1c3RfbG9uIjo1LCIuLi9jb21tb24vYXNpbnoiOjZ9XSw0ODpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2NvbW1vbi9hZGp1c3RfbG9uIik7Yy5pbml0PWZ1bmN0aW9uKCl7dGhpcy5hPTYzNzczOTcuMTU1LHRoaXMuZXM9LjAwNjY3NDM3MjIzMDYxNCx0aGlzLmU9TWF0aC5zcXJ0KHRoaXMuZXMpLHRoaXMubGF0MHx8KHRoaXMubGF0MD0uODYzOTM3OTc5NzM3MTkzKSx0aGlzLmxvbmcwfHwodGhpcy5sb25nMD0uNDMzNDIzNDMwOTExOTI1MSksdGhpcy5rMHx8KHRoaXMuazA9Ljk5OTkpLHRoaXMuczQ1PS43ODUzOTgxNjMzOTc0NDgsdGhpcy5zOTA9Mip0aGlzLnM0NSx0aGlzLmZpMD10aGlzLmxhdDAsdGhpcy5lMj10aGlzLmVzLHRoaXMuZT1NYXRoLnNxcnQodGhpcy5lMiksdGhpcy5hbGZhPU1hdGguc3FydCgxK3RoaXMuZTIqTWF0aC5wb3coTWF0aC5jb3ModGhpcy5maTApLDQpLygxLXRoaXMuZTIpKSx0aGlzLnVxPTEuMDQyMTY4NTYzODA0NzQsdGhpcy51MD1NYXRoLmFzaW4oTWF0aC5zaW4odGhpcy5maTApL3RoaXMuYWxmYSksdGhpcy5nPU1hdGgucG93KCgxK3RoaXMuZSpNYXRoLnNpbih0aGlzLmZpMCkpLygxLXRoaXMuZSpNYXRoLnNpbih0aGlzLmZpMCkpLHRoaXMuYWxmYSp0aGlzLmUvMiksdGhpcy5rPU1hdGgudGFuKHRoaXMudTAvMit0aGlzLnM0NSkvTWF0aC5wb3coTWF0aC50YW4odGhpcy5maTAvMit0aGlzLnM0NSksdGhpcy5hbGZhKSp0aGlzLmcsdGhpcy5rMT10aGlzLmswLHRoaXMubjA9dGhpcy5hKk1hdGguc3FydCgxLXRoaXMuZTIpLygxLXRoaXMuZTIqTWF0aC5wb3coTWF0aC5zaW4odGhpcy5maTApLDIpKSx0aGlzLnMwPTEuMzcwMDgzNDYyODE1NTUsdGhpcy5uPU1hdGguc2luKHRoaXMuczApLHRoaXMucm8wPXRoaXMuazEqdGhpcy5uMC9NYXRoLnRhbih0aGlzLnMwKSx0aGlzLmFkPXRoaXMuczkwLXRoaXMudXF9LGMuZm9yd2FyZD1mdW5jdGlvbihhKXt2YXIgYixjLGUsZixnLGgsaSxqPWEueCxrPWEueSxsPWQoai10aGlzLmxvbmcwKTtyZXR1cm4gYj1NYXRoLnBvdygoMSt0aGlzLmUqTWF0aC5zaW4oaykpLygxLXRoaXMuZSpNYXRoLnNpbihrKSksdGhpcy5hbGZhKnRoaXMuZS8yKSxjPTIqKE1hdGguYXRhbih0aGlzLmsqTWF0aC5wb3coTWF0aC50YW4oay8yK3RoaXMuczQ1KSx0aGlzLmFsZmEpL2IpLXRoaXMuczQ1KSxlPS1sKnRoaXMuYWxmYSxmPU1hdGguYXNpbihNYXRoLmNvcyh0aGlzLmFkKSpNYXRoLnNpbihjKStNYXRoLnNpbih0aGlzLmFkKSpNYXRoLmNvcyhjKSpNYXRoLmNvcyhlKSksZz1NYXRoLmFzaW4oTWF0aC5jb3MoYykqTWF0aC5zaW4oZSkvTWF0aC5jb3MoZikpLGg9dGhpcy5uKmcsaT10aGlzLnJvMCpNYXRoLnBvdyhNYXRoLnRhbih0aGlzLnMwLzIrdGhpcy5zNDUpLHRoaXMubikvTWF0aC5wb3coTWF0aC50YW4oZi8yK3RoaXMuczQ1KSx0aGlzLm4pLGEueT1pKk1hdGguY29zKGgpLzEsYS54PWkqTWF0aC5zaW4oaCkvMSx0aGlzLmN6ZWNofHwoYS55Kj0tMSxhLngqPS0xKSxhfSxjLmludmVyc2U9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqPWEueDthLng9YS55LGEueT1qLHRoaXMuY3plY2h8fChhLnkqPS0xLGEueCo9LTEpLGc9TWF0aC5zcXJ0KGEueCphLngrYS55KmEueSksZj1NYXRoLmF0YW4yKGEueSxhLngpLGU9Zi9NYXRoLnNpbih0aGlzLnMwKSxkPTIqKE1hdGguYXRhbihNYXRoLnBvdyh0aGlzLnJvMC9nLDEvdGhpcy5uKSpNYXRoLnRhbih0aGlzLnMwLzIrdGhpcy5zNDUpKS10aGlzLnM0NSksYj1NYXRoLmFzaW4oTWF0aC5jb3ModGhpcy5hZCkqTWF0aC5zaW4oZCktTWF0aC5zaW4odGhpcy5hZCkqTWF0aC5jb3MoZCkqTWF0aC5jb3MoZSkpLGM9TWF0aC5hc2luKE1hdGguY29zKGQpKk1hdGguc2luKGUpL01hdGguY29zKGIpKSxhLng9dGhpcy5sb25nMC1jL3RoaXMuYWxmYSxoPWIsaT0wO3ZhciBrPTA7ZG8gYS55PTIqKE1hdGguYXRhbihNYXRoLnBvdyh0aGlzLmssLTEvdGhpcy5hbGZhKSpNYXRoLnBvdyhNYXRoLnRhbihiLzIrdGhpcy5zNDUpLDEvdGhpcy5hbGZhKSpNYXRoLnBvdygoMSt0aGlzLmUqTWF0aC5zaW4oaCkpLygxLXRoaXMuZSpNYXRoLnNpbihoKSksdGhpcy5lLzIpKS10aGlzLnM0NSksTWF0aC5hYnMoaC1hLnkpPDFlLTEwJiYoaT0xKSxoPWEueSxrKz0xO3doaWxlKDA9PT1pJiYxNT5rKTtyZXR1cm4gaz49MTU/bnVsbDphfSxjLm5hbWVzPVsiS3JvdmFrIiwia3JvdmFrIl19LHsiLi4vY29tbW9uL2FkanVzdF9sb24iOjV9XSw0OTpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPU1hdGguUEkvMixlPU1hdGguUEkvNCxmPTFlLTEwLGc9YSgiLi4vY29tbW9uL3FzZm56IiksaD1hKCIuLi9jb21tb24vYWRqdXN0X2xvbiIpO2MuU19QT0xFPTEsYy5OX1BPTEU9MixjLkVRVUlUPTMsYy5PQkxJUT00LGMuaW5pdD1mdW5jdGlvbigpe3ZhciBhPU1hdGguYWJzKHRoaXMubGF0MCk7aWYoTWF0aC5hYnMoYS1kKTxmP3RoaXMubW9kZT10aGlzLmxhdDA8MD90aGlzLlNfUE9MRTp0aGlzLk5fUE9MRTpNYXRoLmFicyhhKTxmP3RoaXMubW9kZT10aGlzLkVRVUlUOnRoaXMubW9kZT10aGlzLk9CTElRLHRoaXMuZXM+MCl7dmFyIGI7c3dpdGNoKHRoaXMucXA9Zyh0aGlzLmUsMSksdGhpcy5tbWY9LjUvKDEtdGhpcy5lcyksdGhpcy5hcGE9dGhpcy5hdXRoc2V0KHRoaXMuZXMpLHRoaXMubW9kZSl7Y2FzZSB0aGlzLk5fUE9MRTp0aGlzLmRkPTE7YnJlYWs7Y2FzZSB0aGlzLlNfUE9MRTp0aGlzLmRkPTE7YnJlYWs7Y2FzZSB0aGlzLkVRVUlUOnRoaXMucnE9TWF0aC5zcXJ0KC41KnRoaXMucXApLHRoaXMuZGQ9MS90aGlzLnJxLHRoaXMueG1mPTEsdGhpcy55bWY9LjUqdGhpcy5xcDticmVhaztjYXNlIHRoaXMuT0JMSVE6dGhpcy5ycT1NYXRoLnNxcnQoLjUqdGhpcy5xcCksYj1NYXRoLnNpbih0aGlzLmxhdDApLHRoaXMuc2luYjE9Zyh0aGlzLmUsYikvdGhpcy5xcCx0aGlzLmNvc2IxPU1hdGguc3FydCgxLXRoaXMuc2luYjEqdGhpcy5zaW5iMSksdGhpcy5kZD1NYXRoLmNvcyh0aGlzLmxhdDApLyhNYXRoLnNxcnQoMS10aGlzLmVzKmIqYikqdGhpcy5ycSp0aGlzLmNvc2IxKSx0aGlzLnltZj0odGhpcy54bWY9dGhpcy5ycSkvdGhpcy5kZCx0aGlzLnhtZio9dGhpcy5kZH19ZWxzZSB0aGlzLm1vZGU9PT10aGlzLk9CTElRJiYodGhpcy5zaW5waDA9TWF0aC5zaW4odGhpcy5sYXQwKSx0aGlzLmNvc3BoMD1NYXRoLmNvcyh0aGlzLmxhdDApKX0sYy5mb3J3YXJkPWZ1bmN0aW9uKGEpe3ZhciBiLGMsaSxqLGssbCxtLG4sbyxwLHE9YS54LHI9YS55O2lmKHE9aChxLXRoaXMubG9uZzApLHRoaXMuc3BoZXJlKXtpZihrPU1hdGguc2luKHIpLHA9TWF0aC5jb3MociksaT1NYXRoLmNvcyhxKSx0aGlzLm1vZGU9PT10aGlzLk9CTElRfHx0aGlzLm1vZGU9PT10aGlzLkVRVUlUKXtpZihjPXRoaXMubW9kZT09PXRoaXMuRVFVSVQ/MStwKmk6MSt0aGlzLnNpbnBoMCprK3RoaXMuY29zcGgwKnAqaSxmPj1jKXJldHVybiBudWxsO2M9TWF0aC5zcXJ0KDIvYyksYj1jKnAqTWF0aC5zaW4ocSksYyo9dGhpcy5tb2RlPT09dGhpcy5FUVVJVD9rOnRoaXMuY29zcGgwKmstdGhpcy5zaW5waDAqcCppfWVsc2UgaWYodGhpcy5tb2RlPT09dGhpcy5OX1BPTEV8fHRoaXMubW9kZT09PXRoaXMuU19QT0xFKXtpZih0aGlzLm1vZGU9PT10aGlzLk5fUE9MRSYmKGk9LWkpLE1hdGguYWJzKHIrdGhpcy5waGkwKTxmKXJldHVybiBudWxsO2M9ZS0uNSpyLGM9MioodGhpcy5tb2RlPT09dGhpcy5TX1BPTEU/TWF0aC5jb3MoYyk6TWF0aC5zaW4oYykpLGI9YypNYXRoLnNpbihxKSxjKj1pfX1lbHNle3N3aXRjaChtPTAsbj0wLG89MCxpPU1hdGguY29zKHEpLGo9TWF0aC5zaW4ocSksaz1NYXRoLnNpbihyKSxsPWcodGhpcy5lLGspLHRoaXMubW9kZSE9PXRoaXMuT0JMSVEmJnRoaXMubW9kZSE9PXRoaXMuRVFVSVR8fChtPWwvdGhpcy5xcCxuPU1hdGguc3FydCgxLW0qbSkpLHRoaXMubW9kZSl7Y2FzZSB0aGlzLk9CTElROm89MSt0aGlzLnNpbmIxKm0rdGhpcy5jb3NiMSpuKmk7YnJlYWs7Y2FzZSB0aGlzLkVRVUlUOm89MStuKmk7YnJlYWs7Y2FzZSB0aGlzLk5fUE9MRTpvPWQrcixsPXRoaXMucXAtbDticmVhaztjYXNlIHRoaXMuU19QT0xFOm89ci1kLGw9dGhpcy5xcCtsfWlmKE1hdGguYWJzKG8pPGYpcmV0dXJuIG51bGw7c3dpdGNoKHRoaXMubW9kZSl7Y2FzZSB0aGlzLk9CTElROmNhc2UgdGhpcy5FUVVJVDpvPU1hdGguc3FydCgyL28pLGM9dGhpcy5tb2RlPT09dGhpcy5PQkxJUT90aGlzLnltZipvKih0aGlzLmNvc2IxKm0tdGhpcy5zaW5iMSpuKmkpOihvPU1hdGguc3FydCgyLygxK24qaSkpKSptKnRoaXMueW1mLGI9dGhpcy54bWYqbypuKmo7YnJlYWs7Y2FzZSB0aGlzLk5fUE9MRTpjYXNlIHRoaXMuU19QT0xFOmw+PTA/KGI9KG89TWF0aC5zcXJ0KGwpKSpqLGM9aSoodGhpcy5tb2RlPT09dGhpcy5TX1BPTEU/bzotbykpOmI9Yz0wfX1yZXR1cm4gYS54PXRoaXMuYSpiK3RoaXMueDAsYS55PXRoaXMuYSpjK3RoaXMueTAsYX0sYy5pbnZlcnNlPWZ1bmN0aW9uKGEpe2EueC09dGhpcy54MCxhLnktPXRoaXMueTA7dmFyIGIsYyxlLGcsaSxqLGssbD1hLngvdGhpcy5hLG09YS55L3RoaXMuYTtpZih0aGlzLnNwaGVyZSl7dmFyIG4sbz0wLHA9MDtpZihuPU1hdGguc3FydChsKmwrbSptKSxjPS41Km4sYz4xKXJldHVybiBudWxsO3N3aXRjaChjPTIqTWF0aC5hc2luKGMpLHRoaXMubW9kZSE9PXRoaXMuT0JMSVEmJnRoaXMubW9kZSE9PXRoaXMuRVFVSVR8fChwPU1hdGguc2luKGMpLG89TWF0aC5jb3MoYykpLHRoaXMubW9kZSl7Y2FzZSB0aGlzLkVRVUlUOmM9TWF0aC5hYnMobik8PWY/MDpNYXRoLmFzaW4obSpwL24pLGwqPXAsbT1vKm47YnJlYWs7Y2FzZSB0aGlzLk9CTElROmM9TWF0aC5hYnMobik8PWY/dGhpcy5waGkwOk1hdGguYXNpbihvKnRoaXMuc2lucGgwK20qcCp0aGlzLmNvc3BoMC9uKSxsKj1wKnRoaXMuY29zcGgwLG09KG8tTWF0aC5zaW4oYykqdGhpcy5zaW5waDApKm47YnJlYWs7Y2FzZSB0aGlzLk5fUE9MRTptPS1tLGM9ZC1jO2JyZWFrO2Nhc2UgdGhpcy5TX1BPTEU6Yy09ZH1iPTAhPT1tfHx0aGlzLm1vZGUhPT10aGlzLkVRVUlUJiZ0aGlzLm1vZGUhPT10aGlzLk9CTElRP01hdGguYXRhbjIobCxtKTowfWVsc2V7aWYoaz0wLHRoaXMubW9kZT09PXRoaXMuT0JMSVF8fHRoaXMubW9kZT09PXRoaXMuRVFVSVQpe2lmKGwvPXRoaXMuZGQsbSo9dGhpcy5kZCxqPU1hdGguc3FydChsKmwrbSptKSxmPmopcmV0dXJuIGEueD0wLGEueT10aGlzLnBoaTAsYTtnPTIqTWF0aC5hc2luKC41KmovdGhpcy5ycSksZT1NYXRoLmNvcyhnKSxsKj1nPU1hdGguc2luKGcpLHRoaXMubW9kZT09PXRoaXMuT0JMSVE/KGs9ZSp0aGlzLnNpbmIxK20qZyp0aGlzLmNvc2IxL2osaT10aGlzLnFwKmssbT1qKnRoaXMuY29zYjEqZS1tKnRoaXMuc2luYjEqZyk6KGs9bSpnL2osaT10aGlzLnFwKmssbT1qKmUpfWVsc2UgaWYodGhpcy5tb2RlPT09dGhpcy5OX1BPTEV8fHRoaXMubW9kZT09PXRoaXMuU19QT0xFKXtpZih0aGlzLm1vZGU9PT10aGlzLk5fUE9MRSYmKG09LW0pLGk9bCpsK20qbSwhaSlyZXR1cm4gYS54PTAsYS55PXRoaXMucGhpMCxhO2s9MS1pL3RoaXMucXAsdGhpcy5tb2RlPT09dGhpcy5TX1BPTEUmJihrPS1rKX1iPU1hdGguYXRhbjIobCxtKSxjPXRoaXMuYXV0aGxhdChNYXRoLmFzaW4oayksdGhpcy5hcGEpfXJldHVybiBhLng9aCh0aGlzLmxvbmcwK2IpLGEueT1jLGF9LGMuUDAwPS4zMzMzMzMzMzMzMzMzMzMzLGMuUDAxPS4xNzIyMjIyMjIyMjIyMjIyMixjLlAwMj0uMTAyNTc5MzY1MDc5MzY1MDgsYy5QMTA9LjA2Mzg4ODg4ODg4ODg4ODg4LGMuUDExPS4wNjY0MDIxMTY0MDIxMTY0LGMuUDIwPS4wMTY0MTUwMTI5NDIxOTE1NDMsYy5hdXRoc2V0PWZ1bmN0aW9uKGEpe3ZhciBiLGM9W107cmV0dXJuIGNbMF09YSp0aGlzLlAwMCxiPWEqYSxjWzBdKz1iKnRoaXMuUDAxLGNbMV09Yip0aGlzLlAxMCxiKj1hLGNbMF0rPWIqdGhpcy5QMDIsY1sxXSs9Yip0aGlzLlAxMSxjWzJdPWIqdGhpcy5QMjAsY30sYy5hdXRobGF0PWZ1bmN0aW9uKGEsYil7dmFyIGM9YSthO3JldHVybiBhK2JbMF0qTWF0aC5zaW4oYykrYlsxXSpNYXRoLnNpbihjK2MpK2JbMl0qTWF0aC5zaW4oYytjK2MpfSxjLm5hbWVzPVsiTGFtYmVydCBBemltdXRoYWwgRXF1YWwgQXJlYSIsIkxhbWJlcnRfQXppbXV0aGFsX0VxdWFsX0FyZWEiLCJsYWVhIl19LHsiLi4vY29tbW9uL2FkanVzdF9sb24iOjUsIi4uL2NvbW1vbi9xc2ZueiI6MjB9XSw1MDpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPTFlLTEwLGU9YSgiLi4vY29tbW9uL21zZm56IiksZj1hKCIuLi9jb21tb24vdHNmbnoiKSxnPU1hdGguUEkvMixoPWEoIi4uL2NvbW1vbi9zaWduIiksaT1hKCIuLi9jb21tb24vYWRqdXN0X2xvbiIpLGo9YSgiLi4vY29tbW9uL3BoaTJ6Iik7Yy5pbml0PWZ1bmN0aW9uKCl7aWYodGhpcy5sYXQyfHwodGhpcy5sYXQyPXRoaXMubGF0MSksdGhpcy5rMHx8KHRoaXMuazA9MSksdGhpcy54MD10aGlzLngwfHwwLHRoaXMueTA9dGhpcy55MHx8MCwhKE1hdGguYWJzKHRoaXMubGF0MSt0aGlzLmxhdDIpPGQpKXt2YXIgYT10aGlzLmIvdGhpcy5hO3RoaXMuZT1NYXRoLnNxcnQoMS1hKmEpO3ZhciBiPU1hdGguc2luKHRoaXMubGF0MSksYz1NYXRoLmNvcyh0aGlzLmxhdDEpLGc9ZSh0aGlzLmUsYixjKSxoPWYodGhpcy5lLHRoaXMubGF0MSxiKSxpPU1hdGguc2luKHRoaXMubGF0Miksaj1NYXRoLmNvcyh0aGlzLmxhdDIpLGs9ZSh0aGlzLmUsaSxqKSxsPWYodGhpcy5lLHRoaXMubGF0MixpKSxtPWYodGhpcy5lLHRoaXMubGF0MCxNYXRoLnNpbih0aGlzLmxhdDApKTtNYXRoLmFicyh0aGlzLmxhdDEtdGhpcy5sYXQyKT5kP3RoaXMubnM9TWF0aC5sb2coZy9rKS9NYXRoLmxvZyhoL2wpOnRoaXMubnM9Yixpc05hTih0aGlzLm5zKSYmKHRoaXMubnM9YiksdGhpcy5mMD1nLyh0aGlzLm5zKk1hdGgucG93KGgsdGhpcy5ucykpLHRoaXMucmg9dGhpcy5hKnRoaXMuZjAqTWF0aC5wb3cobSx0aGlzLm5zKSx0aGlzLnRpdGxlfHwodGhpcy50aXRsZT0iTGFtYmVydCBDb25mb3JtYWwgQ29uaWMiKX19LGMuZm9yd2FyZD1mdW5jdGlvbihhKXt2YXIgYj1hLngsYz1hLnk7TWF0aC5hYnMoMipNYXRoLmFicyhjKS1NYXRoLlBJKTw9ZCYmKGM9aChjKSooZy0yKmQpKTt2YXIgZSxqLGs9TWF0aC5hYnMoTWF0aC5hYnMoYyktZyk7aWYoaz5kKWU9Zih0aGlzLmUsYyxNYXRoLnNpbihjKSksaj10aGlzLmEqdGhpcy5mMCpNYXRoLnBvdyhlLHRoaXMubnMpO2Vsc2V7aWYoaz1jKnRoaXMubnMsMD49aylyZXR1cm4gbnVsbDtqPTB9dmFyIGw9dGhpcy5ucyppKGItdGhpcy5sb25nMCk7cmV0dXJuIGEueD10aGlzLmswKihqKk1hdGguc2luKGwpKSt0aGlzLngwLGEueT10aGlzLmswKih0aGlzLnJoLWoqTWF0aC5jb3MobCkpK3RoaXMueTAsYX0sYy5pbnZlcnNlPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsaD0oYS54LXRoaXMueDApL3RoaXMuazAsaz10aGlzLnJoLShhLnktdGhpcy55MCkvdGhpcy5rMDt0aGlzLm5zPjA/KGI9TWF0aC5zcXJ0KGgqaCtrKmspLGM9MSk6KGI9LU1hdGguc3FydChoKmgrayprKSxjPS0xKTt2YXIgbD0wO2lmKDAhPT1iJiYobD1NYXRoLmF0YW4yKGMqaCxjKmspKSwwIT09Ynx8dGhpcy5ucz4wKXtpZihjPTEvdGhpcy5ucyxkPU1hdGgucG93KGIvKHRoaXMuYSp0aGlzLmYwKSxjKSxlPWoodGhpcy5lLGQpLC05OTk5PT09ZSlyZXR1cm4gbnVsbH1lbHNlIGU9LWc7cmV0dXJuIGY9aShsL3RoaXMubnMrdGhpcy5sb25nMCksYS54PWYsYS55PWUsYX0sYy5uYW1lcz1bIkxhbWJlcnQgVGFuZ2VudGlhbCBDb25mb3JtYWwgQ29uaWMgUHJvamVjdGlvbiIsIkxhbWJlcnRfQ29uZm9ybWFsX0NvbmljIiwiTGFtYmVydF9Db25mb3JtYWxfQ29uaWNfMlNQIiwibGNjIl19LHsiLi4vY29tbW9uL2FkanVzdF9sb24iOjUsIi4uL2NvbW1vbi9tc2ZueiI6MTUsIi4uL2NvbW1vbi9waGkyeiI6MTYsIi4uL2NvbW1vbi9zaWduIjoyMSwiLi4vY29tbW9uL3RzZm56IjoyNH1dLDUxOltmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChhKXtyZXR1cm4gYX1jLmluaXQ9ZnVuY3Rpb24oKXt9LGMuZm9yd2FyZD1kLGMuaW52ZXJzZT1kLGMubmFtZXM9WyJsb25nbGF0IiwiaWRlbnRpdHkiXX0se31dLDUyOltmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vY29tbW9uL21zZm56IiksZT1NYXRoLlBJLzIsZj0xZS0xMCxnPTU3LjI5NTc3OTUxMzA4MjMyLGg9YSgiLi4vY29tbW9uL2FkanVzdF9sb24iKSxpPU1hdGguUEkvNCxqPWEoIi4uL2NvbW1vbi90c2ZueiIpLGs9YSgiLi4vY29tbW9uL3BoaTJ6Iik7Yy5pbml0PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5iL3RoaXMuYTt0aGlzLmVzPTEtYSphLCJ4MCJpbiB0aGlzfHwodGhpcy54MD0wKSwieTAiaW4gdGhpc3x8KHRoaXMueTA9MCksdGhpcy5lPU1hdGguc3FydCh0aGlzLmVzKSx0aGlzLmxhdF90cz90aGlzLnNwaGVyZT90aGlzLmswPU1hdGguY29zKHRoaXMubGF0X3RzKTp0aGlzLmswPWQodGhpcy5lLE1hdGguc2luKHRoaXMubGF0X3RzKSxNYXRoLmNvcyh0aGlzLmxhdF90cykpOnRoaXMuazB8fCh0aGlzLms/dGhpcy5rMD10aGlzLms6dGhpcy5rMD0xKX0sYy5mb3J3YXJkPWZ1bmN0aW9uKGEpe3ZhciBiPWEueCxjPWEueTtpZihjKmc+OTAmJi05MD5jKmcmJmIqZz4xODAmJi0xODA+YipnKXJldHVybiBudWxsO3ZhciBkLGs7aWYoTWF0aC5hYnMoTWF0aC5hYnMoYyktZSk8PWYpcmV0dXJuIG51bGw7aWYodGhpcy5zcGhlcmUpZD10aGlzLngwK3RoaXMuYSp0aGlzLmswKmgoYi10aGlzLmxvbmcwKSxrPXRoaXMueTArdGhpcy5hKnRoaXMuazAqTWF0aC5sb2coTWF0aC50YW4oaSsuNSpjKSk7ZWxzZXt2YXIgbD1NYXRoLnNpbihjKSxtPWoodGhpcy5lLGMsbCk7ZD10aGlzLngwK3RoaXMuYSp0aGlzLmswKmgoYi10aGlzLmxvbmcwKSxrPXRoaXMueTAtdGhpcy5hKnRoaXMuazAqTWF0aC5sb2cobSl9cmV0dXJuIGEueD1kLGEueT1rLGF9LGMuaW52ZXJzZT1mdW5jdGlvbihhKXt2YXIgYixjLGQ9YS54LXRoaXMueDAsZj1hLnktdGhpcy55MDtpZih0aGlzLnNwaGVyZSljPWUtMipNYXRoLmF0YW4oTWF0aC5leHAoLWYvKHRoaXMuYSp0aGlzLmswKSkpO2Vsc2V7dmFyIGc9TWF0aC5leHAoLWYvKHRoaXMuYSp0aGlzLmswKSk7aWYoYz1rKHRoaXMuZSxnKSwtOTk5OT09PWMpcmV0dXJuIG51bGx9cmV0dXJuIGI9aCh0aGlzLmxvbmcwK2QvKHRoaXMuYSp0aGlzLmswKSksYS54PWIsYS55PWMsYX0sYy5uYW1lcz1bIk1lcmNhdG9yIiwiUG9wdWxhciBWaXN1YWxpc2F0aW9uIFBzZXVkbyBNZXJjYXRvciIsIk1lcmNhdG9yXzFTUCIsIk1lcmNhdG9yX0F1eGlsaWFyeV9TcGhlcmUiLCJtZXJjIl19LHsiLi4vY29tbW9uL2FkanVzdF9sb24iOjUsIi4uL2NvbW1vbi9tc2ZueiI6MTUsIi4uL2NvbW1vbi9waGkyeiI6MTYsIi4uL2NvbW1vbi90c2ZueiI6MjR9XSw1MzpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2NvbW1vbi9hZGp1c3RfbG9uIik7Yy5pbml0PWZ1bmN0aW9uKCl7fSxjLmZvcndhcmQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS54LGM9YS55LGU9ZChiLXRoaXMubG9uZzApLGY9dGhpcy54MCt0aGlzLmEqZSxnPXRoaXMueTArdGhpcy5hKk1hdGgubG9nKE1hdGgudGFuKE1hdGguUEkvNCtjLzIuNSkpKjEuMjU7cmV0dXJuIGEueD1mLGEueT1nLGF9LGMuaW52ZXJzZT1mdW5jdGlvbihhKXthLngtPXRoaXMueDAsYS55LT10aGlzLnkwO3ZhciBiPWQodGhpcy5sb25nMCthLngvdGhpcy5hKSxjPTIuNSooTWF0aC5hdGFuKE1hdGguZXhwKC44KmEueS90aGlzLmEpKS1NYXRoLlBJLzQpO3JldHVybiBhLng9YixhLnk9YyxhfSxjLm5hbWVzPVsiTWlsbGVyX0N5bGluZHJpY2FsIiwibWlsbCJdfSx7Ii4uL2NvbW1vbi9hZGp1c3RfbG9uIjo1fV0sNTQ6W2Z1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9jb21tb24vYWRqdXN0X2xvbiIpLGU9MWUtMTA7Yy5pbml0PWZ1bmN0aW9uKCl7fSxjLmZvcndhcmQ9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPWEueCxjPWEueSxmPWQoYi10aGlzLmxvbmcwKSxnPWMsaD1NYXRoLlBJKk1hdGguc2luKGMpLGk9MDshMDtpKyspe3ZhciBqPS0oZytNYXRoLnNpbihnKS1oKS8oMStNYXRoLmNvcyhnKSk7aWYoZys9aixNYXRoLmFicyhqKTxlKWJyZWFrfWcvPTIsTWF0aC5QSS8yLU1hdGguYWJzKGMpPGUmJihmPTApO3ZhciBrPS45MDAzMTYzMTYxNTgqdGhpcy5hKmYqTWF0aC5jb3MoZykrdGhpcy54MCxsPTEuNDE0MjEzNTYyMzczMSp0aGlzLmEqTWF0aC5zaW4oZykrdGhpcy55MDtyZXR1cm4gYS54PWssYS55PWwsYX0sYy5pbnZlcnNlPWZ1bmN0aW9uKGEpe3ZhciBiLGM7YS54LT10aGlzLngwLGEueS09dGhpcy55MCxjPWEueS8oMS40MTQyMTM1NjIzNzMxKnRoaXMuYSksTWF0aC5hYnMoYyk+Ljk5OTk5OTk5OTk5OSYmKGM9Ljk5OTk5OTk5OTk5OSksYj1NYXRoLmFzaW4oYyk7dmFyIGU9ZCh0aGlzLmxvbmcwK2EueC8oLjkwMDMxNjMxNjE1OCp0aGlzLmEqTWF0aC5jb3MoYikpKTtlPC1NYXRoLlBJJiYoZT0tTWF0aC5QSSksZT5NYXRoLlBJJiYoZT1NYXRoLlBJKSxjPSgyKmIrTWF0aC5zaW4oMipiKSkvTWF0aC5QSSxNYXRoLmFicyhjKT4xJiYoYz0xKTt2YXIgZj1NYXRoLmFzaW4oYyk7cmV0dXJuIGEueD1lLGEueT1mLGF9LGMubmFtZXM9WyJNb2xsd2VpZGUiLCJtb2xsIl19LHsiLi4vY29tbW9uL2FkanVzdF9sb24iOjV9XSw1NTpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPTQ4NDgxMzY4MTEwOTUzNmUtMjA7Yy5pdGVyYXRpb25zPTEsYy5pbml0PWZ1bmN0aW9uKCl7dGhpcy5BPVtdLHRoaXMuQVsxXT0uNjM5OTE3NTA3Myx0aGlzLkFbMl09LS4xMzU4Nzk3NjEzLHRoaXMuQVszXT0uMDYzMjk0NDA5LHRoaXMuQVs0XT0tLjAyNTI2ODUzLHRoaXMuQVs1XT0uMDExNzg3OSx0aGlzLkFbNl09LS4wMDU1MTYxLHRoaXMuQVs3XT0uMDAyNjkwNix0aGlzLkFbOF09LS4wMDEzMzMsdGhpcy5BWzldPTY3ZS01LHRoaXMuQVsxMF09LTM0ZS01LHRoaXMuQl9yZT1bXSx0aGlzLkJfaW09W10sdGhpcy5CX3JlWzFdPS43NTU3ODUzMjI4LHRoaXMuQl9pbVsxXT0wLHRoaXMuQl9yZVsyXT0uMjQ5MjA0NjQ2LHRoaXMuQl9pbVsyXT0uMDAzMzcxNTA3LHRoaXMuQl9yZVszXT0tLjAwMTU0MTczOSx0aGlzLkJfaW1bM109LjA0MTA1ODU2LHRoaXMuQl9yZVs0XT0tLjEwMTYyOTA3LHRoaXMuQl9pbVs0XT0uMDE3Mjc2MDksdGhpcy5CX3JlWzVdPS0uMjY2MjM0ODksdGhpcy5CX2ltWzVdPS0uMzYyNDkyMTgsdGhpcy5CX3JlWzZdPS0uNjg3MDk4Myx0aGlzLkJfaW1bNl09LTEuMTY1MTk2Nyx0aGlzLkNfcmU9W10sdGhpcy5DX2ltPVtdLHRoaXMuQ19yZVsxXT0xLjMyMzEyNzA0MzksdGhpcy5DX2ltWzFdPTAsdGhpcy5DX3JlWzJdPS0uNTc3MjQ1Nzg5LHRoaXMuQ19pbVsyXT0tLjAwNzgwOTU5OCx0aGlzLkNfcmVbM109LjUwODMwNzUxMyx0aGlzLkNfaW1bM109LS4xMTIyMDg5NTIsdGhpcy5DX3JlWzRdPS0uMTUwOTQ3NjIsdGhpcy5DX2ltWzRdPS4xODIwMDYwMix0aGlzLkNfcmVbNV09MS4wMTQxODE3OSx0aGlzLkNfaW1bNV09MS42NDQ5NzY5Nix0aGlzLkNfcmVbNl09MS45NjYwNTQ5LHRoaXMuQ19pbVs2XT0yLjUxMjc2NDUsdGhpcy5EPVtdLHRoaXMuRFsxXT0xLjU2MjcwMTQyNDMsdGhpcy5EWzJdPS41MTg1NDA2Mzk4LHRoaXMuRFszXT0tLjAzMzMzMDk4LHRoaXMuRFs0XT0tLjEwNTI5MDYsdGhpcy5EWzVdPS0uMDM2ODU5NCx0aGlzLkRbNl09LjAwNzMxNyx0aGlzLkRbN109LjAxMjIsdGhpcy5EWzhdPS4wMDM5NCx0aGlzLkRbOV09LS4wMDEzfSxjLmZvcndhcmQ9ZnVuY3Rpb24oYSl7dmFyIGIsYz1hLngsZT1hLnksZj1lLXRoaXMubGF0MCxnPWMtdGhpcy5sb25nMCxoPWYvZCoxZS01LGk9ZyxqPTEsaz0wO2ZvcihiPTE7MTA+PWI7YisrKWoqPWgsays9dGhpcy5BW2JdKmo7dmFyIGwsbSxuPWssbz1pLHA9MSxxPTAscj0wLHM9MDtmb3IoYj0xOzY+PWI7YisrKWw9cCpuLXEqbyxtPXEqbitwKm8scD1sLHE9bSxyPXIrdGhpcy5CX3JlW2JdKnAtdGhpcy5CX2ltW2JdKnEscz1zK3RoaXMuQl9pbVtiXSpwK3RoaXMuQl9yZVtiXSpxO3JldHVybiBhLng9cyp0aGlzLmErdGhpcy54MCxhLnk9cip0aGlzLmErdGhpcy55MCxhfSxjLmludmVyc2U9ZnVuY3Rpb24oYSl7dmFyIGIsYyxlLGY9YS54LGc9YS55LGg9Zi10aGlzLngwLGk9Zy10aGlzLnkwLGo9aS90aGlzLmEsaz1oL3RoaXMuYSxsPTEsbT0wLG49MCxvPTA7Zm9yKGI9MTs2Pj1iO2IrKyljPWwqai1tKmssZT1tKmorbCprLGw9YyxtPWUsbj1uK3RoaXMuQ19yZVtiXSpsLXRoaXMuQ19pbVtiXSptLG89byt0aGlzLkNfaW1bYl0qbCt0aGlzLkNfcmVbYl0qbTtmb3IodmFyIHA9MDtwPHRoaXMuaXRlcmF0aW9ucztwKyspe3ZhciBxLHIscz1uLHQ9byx1PWosdj1rO2ZvcihiPTI7Nj49YjtiKyspcT1zKm4tdCpvLHI9dCpuK3MqbyxzPXEsdD1yLHUrPShiLTEpKih0aGlzLkJfcmVbYl0qcy10aGlzLkJfaW1bYl0qdCksdis9KGItMSkqKHRoaXMuQl9pbVtiXSpzK3RoaXMuQl9yZVtiXSp0KTtzPTEsdD0wO3ZhciB3PXRoaXMuQl9yZVsxXSx4PXRoaXMuQl9pbVsxXTtmb3IoYj0yOzY+PWI7YisrKXE9cypuLXQqbyxyPXQqbitzKm8scz1xLHQ9cix3Kz1iKih0aGlzLkJfcmVbYl0qcy10aGlzLkJfaW1bYl0qdCkseCs9YioodGhpcy5CX2ltW2JdKnMrdGhpcy5CX3JlW2JdKnQpO3ZhciB5PXcqdyt4Kng7bj0odSp3K3YqeCkveSxvPSh2KnctdSp4KS95fXZhciB6PW4sQT1vLEI9MSxDPTA7Zm9yKGI9MTs5Pj1iO2IrKylCKj16LEMrPXRoaXMuRFtiXSpCO3ZhciBEPXRoaXMubGF0MCtDKmQqMWU1LEU9dGhpcy5sb25nMCtBO3JldHVybiBhLng9RSxhLnk9RCxhfSxjLm5hbWVzPVsiTmV3X1plYWxhbmRfTWFwX0dyaWQiLCJuem1nIl19LHt9XSw1NjpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2NvbW1vbi90c2ZueiIpLGU9YSgiLi4vY29tbW9uL2FkanVzdF9sb24iKSxmPWEoIi4uL2NvbW1vbi9waGkyeiIpLGc9TWF0aC5QSS8yLGg9TWF0aC5QSS80LGk9MWUtMTA7Yy5pbml0PWZ1bmN0aW9uKCl7dGhpcy5ub19vZmY9dGhpcy5ub19vZmZ8fCExLHRoaXMubm9fcm90PXRoaXMubm9fcm90fHwhMSxpc05hTih0aGlzLmswKSYmKHRoaXMuazA9MSk7dmFyIGE9TWF0aC5zaW4odGhpcy5sYXQwKSxiPU1hdGguY29zKHRoaXMubGF0MCksYz10aGlzLmUqYTt0aGlzLmJsPU1hdGguc3FydCgxK3RoaXMuZXMvKDEtdGhpcy5lcykqTWF0aC5wb3coYiw0KSksdGhpcy5hbD10aGlzLmEqdGhpcy5ibCp0aGlzLmswKk1hdGguc3FydCgxLXRoaXMuZXMpLygxLWMqYyk7dmFyIGY9ZCh0aGlzLmUsdGhpcy5sYXQwLGEpLGc9dGhpcy5ibC9iKk1hdGguc3FydCgoMS10aGlzLmVzKS8oMS1jKmMpKTsxPmcqZyYmKGc9MSk7dmFyIGgsaTtpZihpc05hTih0aGlzLmxvbmdjKSl7dmFyIGo9ZCh0aGlzLmUsdGhpcy5sYXQxLE1hdGguc2luKHRoaXMubGF0MSkpLGs9ZCh0aGlzLmUsdGhpcy5sYXQyLE1hdGguc2luKHRoaXMubGF0MikpO3RoaXMubGF0MD49MD90aGlzLmVsPShnK01hdGguc3FydChnKmctMSkpKk1hdGgucG93KGYsdGhpcy5ibCk6dGhpcy5lbD0oZy1NYXRoLnNxcnQoZypnLTEpKSpNYXRoLnBvdyhmLHRoaXMuYmwpO3ZhciBsPU1hdGgucG93KGosdGhpcy5ibCksbT1NYXRoLnBvdyhrLHRoaXMuYmwpO2g9dGhpcy5lbC9sLGk9LjUqKGgtMS9oKTt2YXIgbj0odGhpcy5lbCp0aGlzLmVsLW0qbCkvKHRoaXMuZWwqdGhpcy5lbCttKmwpLG89KG0tbCkvKG0rbCkscD1lKHRoaXMubG9uZzEtdGhpcy5sb25nMik7dGhpcy5sb25nMD0uNSoodGhpcy5sb25nMSt0aGlzLmxvbmcyKS1NYXRoLmF0YW4obipNYXRoLnRhbiguNSp0aGlzLmJsKnApL28pL3RoaXMuYmwsdGhpcy5sb25nMD1lKHRoaXMubG9uZzApO3ZhciBxPWUodGhpcy5sb25nMS10aGlzLmxvbmcwKTt0aGlzLmdhbW1hMD1NYXRoLmF0YW4oTWF0aC5zaW4odGhpcy5ibCpxKS9pKSx0aGlzLmFscGhhPU1hdGguYXNpbihnKk1hdGguc2luKHRoaXMuZ2FtbWEwKSl9ZWxzZSBoPXRoaXMubGF0MD49MD9nK01hdGguc3FydChnKmctMSk6Zy1NYXRoLnNxcnQoZypnLTEpLHRoaXMuZWw9aCpNYXRoLnBvdyhmLHRoaXMuYmwpLGk9LjUqKGgtMS9oKSx0aGlzLmdhbW1hMD1NYXRoLmFzaW4oTWF0aC5zaW4odGhpcy5hbHBoYSkvZyksdGhpcy5sb25nMD10aGlzLmxvbmdjLU1hdGguYXNpbihpKk1hdGgudGFuKHRoaXMuZ2FtbWEwKSkvdGhpcy5ibDt0aGlzLm5vX29mZj90aGlzLnVjPTA6dGhpcy5sYXQwPj0wP3RoaXMudWM9dGhpcy5hbC90aGlzLmJsKk1hdGguYXRhbjIoTWF0aC5zcXJ0KGcqZy0xKSxNYXRoLmNvcyh0aGlzLmFscGhhKSk6dGhpcy51Yz0tMSp0aGlzLmFsL3RoaXMuYmwqTWF0aC5hdGFuMihNYXRoLnNxcnQoZypnLTEpLE1hdGguY29zKHRoaXMuYWxwaGEpKX0sYy5mb3J3YXJkPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZixqPWEueCxrPWEueSxsPWUoai10aGlzLmxvbmcwKTtpZihNYXRoLmFicyhNYXRoLmFicyhrKS1nKTw9aSlmPWs+MD8tMToxLGM9dGhpcy5hbC90aGlzLmJsKk1hdGgubG9nKE1hdGgudGFuKGgrZip0aGlzLmdhbW1hMCouNSkpLGI9LTEqZipnKnRoaXMuYWwvdGhpcy5ibDtlbHNle3ZhciBtPWQodGhpcy5lLGssTWF0aC5zaW4oaykpLG49dGhpcy5lbC9NYXRoLnBvdyhtLHRoaXMuYmwpLG89LjUqKG4tMS9uKSxwPS41KihuKzEvbikscT1NYXRoLnNpbih0aGlzLmJsKmwpLHI9KG8qTWF0aC5zaW4odGhpcy5nYW1tYTApLXEqTWF0aC5jb3ModGhpcy5nYW1tYTApKS9wO2M9TWF0aC5hYnMoTWF0aC5hYnMociktMSk8PWk/TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZOi41KnRoaXMuYWwqTWF0aC5sb2coKDEtcikvKDErcikpL3RoaXMuYmwsYj1NYXRoLmFicyhNYXRoLmNvcyh0aGlzLmJsKmwpKTw9aT90aGlzLmFsKnRoaXMuYmwqbDp0aGlzLmFsKk1hdGguYXRhbjIobypNYXRoLmNvcyh0aGlzLmdhbW1hMCkrcSpNYXRoLnNpbih0aGlzLmdhbW1hMCksTWF0aC5jb3ModGhpcy5ibCpsKSkvdGhpcy5ibH1yZXR1cm4gdGhpcy5ub19yb3Q/KGEueD10aGlzLngwK2IsYS55PXRoaXMueTArYyk6KGItPXRoaXMudWMsYS54PXRoaXMueDArYypNYXRoLmNvcyh0aGlzLmFscGhhKStiKk1hdGguc2luKHRoaXMuYWxwaGEpLGEueT10aGlzLnkwK2IqTWF0aC5jb3ModGhpcy5hbHBoYSktYypNYXRoLnNpbih0aGlzLmFscGhhKSksYX0sYy5pbnZlcnNlPWZ1bmN0aW9uKGEpe3ZhciBiLGM7dGhpcy5ub19yb3Q/KGM9YS55LXRoaXMueTAsYj1hLngtdGhpcy54MCk6KGM9KGEueC10aGlzLngwKSpNYXRoLmNvcyh0aGlzLmFscGhhKS0oYS55LXRoaXMueTApKk1hdGguc2luKHRoaXMuYWxwaGEpLGI9KGEueS10aGlzLnkwKSpNYXRoLmNvcyh0aGlzLmFscGhhKSsoYS54LXRoaXMueDApKk1hdGguc2luKHRoaXMuYWxwaGEpLGIrPXRoaXMudWMpO3ZhciBkPU1hdGguZXhwKC0xKnRoaXMuYmwqYy90aGlzLmFsKSxoPS41KihkLTEvZCksaj0uNSooZCsxL2QpLGs9TWF0aC5zaW4odGhpcy5ibCpiL3RoaXMuYWwpLGw9KGsqTWF0aC5jb3ModGhpcy5nYW1tYTApK2gqTWF0aC5zaW4odGhpcy5nYW1tYTApKS9qLG09TWF0aC5wb3codGhpcy5lbC9NYXRoLnNxcnQoKDErbCkvKDEtbCkpLDEvdGhpcy5ibCk7cmV0dXJuIE1hdGguYWJzKGwtMSk8aT8oYS54PXRoaXMubG9uZzAsYS55PWcpOk1hdGguYWJzKGwrMSk8aT8oYS54PXRoaXMubG9uZzAsYS55PS0xKmcpOihhLnk9Zih0aGlzLmUsbSksYS54PWUodGhpcy5sb25nMC1NYXRoLmF0YW4yKGgqTWF0aC5jb3ModGhpcy5nYW1tYTApLWsqTWF0aC5zaW4odGhpcy5nYW1tYTApLE1hdGguY29zKHRoaXMuYmwqYi90aGlzLmFsKSkvdGhpcy5ibCkpLGF9LGMubmFtZXM9WyJIb3RpbmVfT2JsaXF1ZV9NZXJjYXRvciIsIkhvdGluZSBPYmxpcXVlIE1lcmNhdG9yIiwiSG90aW5lX09ibGlxdWVfTWVyY2F0b3JfQXppbXV0aF9OYXR1cmFsX09yaWdpbiIsIkhvdGluZV9PYmxpcXVlX01lcmNhdG9yX0F6aW11dGhfQ2VudGVyIiwib21lcmMiXX0seyIuLi9jb21tb24vYWRqdXN0X2xvbiI6NSwiLi4vY29tbW9uL3BoaTJ6IjoxNiwiLi4vY29tbW9uL3RzZm56IjoyNH1dLDU3OltmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vY29tbW9uL2FkanVzdF9sb24iKSxlPTFlLTEwLGY9YSgiLi4vY29tbW9uL2FzaW56IiksZz1NYXRoLlBJLzI7Yy5pbml0PWZ1bmN0aW9uKCl7dGhpcy5zaW5fcDE0PU1hdGguc2luKHRoaXMubGF0MCksdGhpcy5jb3NfcDE0PU1hdGguY29zKHRoaXMubGF0MCl9LGMuZm9yd2FyZD1mdW5jdGlvbihhKXt2YXIgYixjLGYsZyxoLGksaixrLGw9YS54LG09YS55O3JldHVybiBmPWQobC10aGlzLmxvbmcwKSxiPU1hdGguc2luKG0pLGM9TWF0aC5jb3MobSksZz1NYXRoLmNvcyhmKSxpPXRoaXMuc2luX3AxNCpiK3RoaXMuY29zX3AxNCpjKmcsaD0xLChpPjB8fE1hdGguYWJzKGkpPD1lKSYmKGo9dGhpcy5hKmgqYypNYXRoLnNpbihmKSxrPXRoaXMueTArdGhpcy5hKmgqKHRoaXMuY29zX3AxNCpiLXRoaXMuc2luX3AxNCpjKmcpKSxhLng9aixhLnk9ayxhfSxjLmludmVyc2U9ZnVuY3Rpb24oYSl7dmFyIGIsYyxoLGksaixrLGw7cmV0dXJuIGEueC09dGhpcy54MCxhLnktPXRoaXMueTAsYj1NYXRoLnNxcnQoYS54KmEueCthLnkqYS55KSxjPWYoYi90aGlzLmEpLGg9TWF0aC5zaW4oYyksaT1NYXRoLmNvcyhjKSxrPXRoaXMubG9uZzAsTWF0aC5hYnMoYik8PWU/KGw9dGhpcy5sYXQwLGEueD1rLGEueT1sLGEpOihsPWYoaSp0aGlzLnNpbl9wMTQrYS55KmgqdGhpcy5jb3NfcDE0L2IpLGo9TWF0aC5hYnModGhpcy5sYXQwKS1nLE1hdGguYWJzKGopPD1lPyhrPWQodGhpcy5sYXQwPj0wP3RoaXMubG9uZzArTWF0aC5hdGFuMihhLngsLWEueSk6dGhpcy5sb25nMC1NYXRoLmF0YW4yKC1hLngsYS55KSksYS54PWssYS55PWwsYSk6KGs9ZCh0aGlzLmxvbmcwK01hdGguYXRhbjIoYS54KmgsYip0aGlzLmNvc19wMTQqaS1hLnkqdGhpcy5zaW5fcDE0KmgpKSxhLng9ayxhLnk9bCxhKSl9LGMubmFtZXM9WyJvcnRobyJdfSx7Ii4uL2NvbW1vbi9hZGp1c3RfbG9uIjo1LCIuLi9jb21tb24vYXNpbnoiOjZ9XSw1ODpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2NvbW1vbi9lMGZuIiksZT1hKCIuLi9jb21tb24vZTFmbiIpLGY9YSgiLi4vY29tbW9uL2UyZm4iKSxnPWEoIi4uL2NvbW1vbi9lM2ZuIiksaD1hKCIuLi9jb21tb24vYWRqdXN0X2xvbiIpLGk9YSgiLi4vY29tbW9uL2FkanVzdF9sYXQiKSxqPWEoIi4uL2NvbW1vbi9tbGZuIiksaz0xZS0xMCxsPWEoIi4uL2NvbW1vbi9nTiIpLG09MjA7Yy5pbml0PWZ1bmN0aW9uKCl7dGhpcy50ZW1wPXRoaXMuYi90aGlzLmEsdGhpcy5lcz0xLU1hdGgucG93KHRoaXMudGVtcCwyKSx0aGlzLmU9TWF0aC5zcXJ0KHRoaXMuZXMpLHRoaXMuZTA9ZCh0aGlzLmVzKSx0aGlzLmUxPWUodGhpcy5lcyksdGhpcy5lMj1mKHRoaXMuZXMpLHRoaXMuZTM9Zyh0aGlzLmVzKSx0aGlzLm1sMD10aGlzLmEqaih0aGlzLmUwLHRoaXMuZTEsdGhpcy5lMix0aGlzLmUzLHRoaXMubGF0MCl9LGMuZm9yd2FyZD1mdW5jdGlvbihhKXt2YXIgYixjLGQsZT1hLngsZj1hLnksZz1oKGUtdGhpcy5sb25nMCk7aWYoZD1nKk1hdGguc2luKGYpLHRoaXMuc3BoZXJlKU1hdGguYWJzKGYpPD1rPyhiPXRoaXMuYSpnLGM9LTEqdGhpcy5hKnRoaXMubGF0MCk6KGI9dGhpcy5hKk1hdGguc2luKGQpL01hdGgudGFuKGYpLGM9dGhpcy5hKihpKGYtdGhpcy5sYXQwKSsoMS1NYXRoLmNvcyhkKSkvTWF0aC50YW4oZikpKTtlbHNlIGlmKE1hdGguYWJzKGYpPD1rKWI9dGhpcy5hKmcsYz0tMSp0aGlzLm1sMDtlbHNle3ZhciBtPWwodGhpcy5hLHRoaXMuZSxNYXRoLnNpbihmKSkvTWF0aC50YW4oZik7Yj1tKk1hdGguc2luKGQpLGM9dGhpcy5hKmoodGhpcy5lMCx0aGlzLmUxLHRoaXMuZTIsdGhpcy5lMyxmKS10aGlzLm1sMCttKigxLU1hdGguY29zKGQpKX1yZXR1cm4gYS54PWIrdGhpcy54MCxhLnk9Yyt0aGlzLnkwLGF9LGMuaW52ZXJzZT1mdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaSxsLG47aWYoZD1hLngtdGhpcy54MCxlPWEueS10aGlzLnkwLHRoaXMuc3BoZXJlKWlmKE1hdGguYWJzKGUrdGhpcy5hKnRoaXMubGF0MCk8PWspYj1oKGQvdGhpcy5hK3RoaXMubG9uZzApLGM9MDtlbHNle2c9dGhpcy5sYXQwK2UvdGhpcy5hLGk9ZCpkL3RoaXMuYS90aGlzLmErZypnLGw9Zzt2YXIgbztmb3IoZj1tO2Y7LS1mKWlmKG89TWF0aC50YW4obCksbj0tMSooZyoobCpvKzEpLWwtLjUqKGwqbCtpKSpvKS8oKGwtZykvby0xKSxsKz1uLE1hdGguYWJzKG4pPD1rKXtjPWw7YnJlYWt9Yj1oKHRoaXMubG9uZzArTWF0aC5hc2luKGQqTWF0aC50YW4obCkvdGhpcy5hKS9NYXRoLnNpbihjKSl9ZWxzZSBpZihNYXRoLmFicyhlK3RoaXMubWwwKTw9ayljPTAsYj1oKHRoaXMubG9uZzArZC90aGlzLmEpO2Vsc2V7Zz0odGhpcy5tbDArZSkvdGhpcy5hLGk9ZCpkL3RoaXMuYS90aGlzLmErZypnLGw9Zzt2YXIgcCxxLHIscyx0O2ZvcihmPW07ZjstLWYpaWYodD10aGlzLmUqTWF0aC5zaW4obCkscD1NYXRoLnNxcnQoMS10KnQpKk1hdGgudGFuKGwpLHE9dGhpcy5hKmoodGhpcy5lMCx0aGlzLmUxLHRoaXMuZTIsdGhpcy5lMyxsKSxyPXRoaXMuZTAtMip0aGlzLmUxKk1hdGguY29zKDIqbCkrNCp0aGlzLmUyKk1hdGguY29zKDQqbCktNip0aGlzLmUzKk1hdGguY29zKDYqbCkscz1xL3RoaXMuYSxuPShnKihwKnMrMSktcy0uNSpwKihzKnMraSkpLyh0aGlzLmVzKk1hdGguc2luKDIqbCkqKHMqcytpLTIqZypzKS8oNCpwKSsoZy1zKSoocCpyLTIvTWF0aC5zaW4oMipsKSktciksbC09bixNYXRoLmFicyhuKTw9ayl7Yz1sO2JyZWFrfXA9TWF0aC5zcXJ0KDEtdGhpcy5lcypNYXRoLnBvdyhNYXRoLnNpbihjKSwyKSkqTWF0aC50YW4oYyksYj1oKHRoaXMubG9uZzArTWF0aC5hc2luKGQqcC90aGlzLmEpL01hdGguc2luKGMpKX1yZXR1cm4gYS54PWIsYS55PWMsYX0sYy5uYW1lcz1bIlBvbHljb25pYyIsInBvbHkiXX0seyIuLi9jb21tb24vYWRqdXN0X2xhdCI6NCwiLi4vY29tbW9uL2FkanVzdF9sb24iOjUsIi4uL2NvbW1vbi9lMGZuIjo3LCIuLi9jb21tb24vZTFmbiI6OCwiLi4vY29tbW9uL2UyZm4iOjksIi4uL2NvbW1vbi9lM2ZuIjoxMCwiLi4vY29tbW9uL2dOIjoxMSwiLi4vY29tbW9uL21sZm4iOjE0fV0sNTk6W2Z1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9jb21tb24vYWRqdXN0X2xvbiIpLGU9YSgiLi4vY29tbW9uL2FkanVzdF9sYXQiKSxmPWEoIi4uL2NvbW1vbi9wal9lbmZuIiksZz0yMCxoPWEoIi4uL2NvbW1vbi9wal9tbGZuIiksaT1hKCIuLi9jb21tb24vcGpfaW52X21sZm4iKSxqPU1hdGguUEkvMixrPTFlLTEwLGw9YSgiLi4vY29tbW9uL2FzaW56Iik7Yy5pbml0PWZ1bmN0aW9uKCl7dGhpcy5zcGhlcmU/KHRoaXMubj0xLHRoaXMubT0wLHRoaXMuZXM9MCx0aGlzLkNfeT1NYXRoLnNxcnQoKHRoaXMubSsxKS90aGlzLm4pLHRoaXMuQ194PXRoaXMuQ195Lyh0aGlzLm0rMSkpOnRoaXMuZW49Zih0aGlzLmVzKX0sYy5mb3J3YXJkPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZT1hLngsZj1hLnk7aWYoZT1kKGUtdGhpcy5sb25nMCksdGhpcy5zcGhlcmUpe2lmKHRoaXMubSlmb3IodmFyIGk9dGhpcy5uKk1hdGguc2luKGYpLGo9ZztqOy0tail7dmFyIGw9KHRoaXMubSpmK01hdGguc2luKGYpLWkpLyh0aGlzLm0rTWF0aC5jb3MoZikpO2lmKGYtPWwsTWF0aC5hYnMobCk8aylicmVha31lbHNlIGY9MSE9PXRoaXMubj9NYXRoLmFzaW4odGhpcy5uKk1hdGguc2luKGYpKTpmO2I9dGhpcy5hKnRoaXMuQ194KmUqKHRoaXMubStNYXRoLmNvcyhmKSksYz10aGlzLmEqdGhpcy5DX3kqZn1lbHNle3ZhciBtPU1hdGguc2luKGYpLG49TWF0aC5jb3MoZik7Yz10aGlzLmEqaChmLG0sbix0aGlzLmVuKSxiPXRoaXMuYSplKm4vTWF0aC5zcXJ0KDEtdGhpcy5lcyptKm0pfXJldHVybiBhLng9YixhLnk9YyxhfSxjLmludmVyc2U9ZnVuY3Rpb24oYSl7dmFyIGIsYyxmLGc7cmV0dXJuIGEueC09dGhpcy54MCxmPWEueC90aGlzLmEsYS55LT10aGlzLnkwLGI9YS55L3RoaXMuYSx0aGlzLnNwaGVyZT8oYi89dGhpcy5DX3ksZi89dGhpcy5DX3gqKHRoaXMubStNYXRoLmNvcyhiKSksdGhpcy5tP2I9bCgodGhpcy5tKmIrTWF0aC5zaW4oYikpL3RoaXMubik6MSE9PXRoaXMubiYmKGI9bChNYXRoLnNpbihiKS90aGlzLm4pKSxmPWQoZit0aGlzLmxvbmcwKSxiPWUoYikpOihiPWkoYS55L3RoaXMuYSx0aGlzLmVzLHRoaXMuZW4pLGc9TWF0aC5hYnMoYiksaj5nPyhnPU1hdGguc2luKGIpLGM9dGhpcy5sb25nMCthLngqTWF0aC5zcXJ0KDEtdGhpcy5lcypnKmcpLyh0aGlzLmEqTWF0aC5jb3MoYikpLGY9ZChjKSk6aj5nLWsmJihmPXRoaXMubG9uZzApKSxhLng9ZixhLnk9YixhfSxjLm5hbWVzPVsiU2ludXNvaWRhbCIsInNpbnUiXX0seyIuLi9jb21tb24vYWRqdXN0X2xhdCI6NCwiLi4vY29tbW9uL2FkanVzdF9sb24iOjUsIi4uL2NvbW1vbi9hc2lueiI6NiwiLi4vY29tbW9uL3BqX2VuZm4iOjE3LCIuLi9jb21tb24vcGpfaW52X21sZm4iOjE4LCIuLi9jb21tb24vcGpfbWxmbiI6MTl9XSw2MDpbZnVuY3Rpb24oYSxiLGMpe2MuaW5pdD1mdW5jdGlvbigpe3ZhciBhPXRoaXMubGF0MDt0aGlzLmxhbWJkYTA9dGhpcy5sb25nMDt2YXIgYj1NYXRoLnNpbihhKSxjPXRoaXMuYSxkPXRoaXMucmYsZT0xL2QsZj0yKmUtTWF0aC5wb3coZSwyKSxnPXRoaXMuZT1NYXRoLnNxcnQoZik7dGhpcy5SPXRoaXMuazAqYypNYXRoLnNxcnQoMS1mKS8oMS1mKk1hdGgucG93KGIsMikpLHRoaXMuYWxwaGE9TWF0aC5zcXJ0KDErZi8oMS1mKSpNYXRoLnBvdyhNYXRoLmNvcyhhKSw0KSksdGhpcy5iMD1NYXRoLmFzaW4oYi90aGlzLmFscGhhKTt2YXIgaD1NYXRoLmxvZyhNYXRoLnRhbihNYXRoLlBJLzQrdGhpcy5iMC8yKSksaT1NYXRoLmxvZyhNYXRoLnRhbihNYXRoLlBJLzQrYS8yKSksaj1NYXRoLmxvZygoMStnKmIpLygxLWcqYikpO3RoaXMuSz1oLXRoaXMuYWxwaGEqaSt0aGlzLmFscGhhKmcvMipqfSxjLmZvcndhcmQ9ZnVuY3Rpb24oYSl7dmFyIGI9TWF0aC5sb2coTWF0aC50YW4oTWF0aC5QSS80LWEueS8yKSksYz10aGlzLmUvMipNYXRoLmxvZygoMSt0aGlzLmUqTWF0aC5zaW4oYS55KSkvKDEtdGhpcy5lKk1hdGguc2luKGEueSkpKSxkPS10aGlzLmFscGhhKihiK2MpK3RoaXMuSyxlPTIqKE1hdGguYXRhbihNYXRoLmV4cChkKSktTWF0aC5QSS80KSxmPXRoaXMuYWxwaGEqKGEueC10aGlzLmxhbWJkYTApLGc9TWF0aC5hdGFuKE1hdGguc2luKGYpLyhNYXRoLnNpbih0aGlzLmIwKSpNYXRoLnRhbihlKStNYXRoLmNvcyh0aGlzLmIwKSpNYXRoLmNvcyhmKSkpLGg9TWF0aC5hc2luKE1hdGguY29zKHRoaXMuYjApKk1hdGguc2luKGUpLU1hdGguc2luKHRoaXMuYjApKk1hdGguY29zKGUpKk1hdGguY29zKGYpKTtyZXR1cm4gYS55PXRoaXMuUi8yKk1hdGgubG9nKCgxK01hdGguc2luKGgpKS8oMS1NYXRoLnNpbihoKSkpK3RoaXMueTAsYS54PXRoaXMuUipnK3RoaXMueDAsYX0sYy5pbnZlcnNlPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1hLngtdGhpcy54MCxjPWEueS10aGlzLnkwLGQ9Yi90aGlzLlIsZT0yKihNYXRoLmF0YW4oTWF0aC5leHAoYy90aGlzLlIpKS1NYXRoLlBJLzQpLGY9TWF0aC5hc2luKE1hdGguY29zKHRoaXMuYjApKk1hdGguc2luKGUpK01hdGguc2luKHRoaXMuYjApKk1hdGguY29zKGUpKk1hdGguY29zKGQpKSxnPU1hdGguYXRhbihNYXRoLnNpbihkKS8oTWF0aC5jb3ModGhpcy5iMCkqTWF0aC5jb3MoZCktTWF0aC5zaW4odGhpcy5iMCkqTWF0aC50YW4oZSkpKSxoPXRoaXMubGFtYmRhMCtnL3RoaXMuYWxwaGEsaT0wLGo9ZixrPS0xZTMsbD0wO01hdGguYWJzKGotayk+MWUtNzspe2lmKCsrbD4yMClyZXR1cm47aT0xL3RoaXMuYWxwaGEqKE1hdGgubG9nKE1hdGgudGFuKE1hdGguUEkvNCtmLzIpKS10aGlzLkspK3RoaXMuZSpNYXRoLmxvZyhNYXRoLnRhbihNYXRoLlBJLzQrTWF0aC5hc2luKHRoaXMuZSpNYXRoLnNpbihqKSkvMikpLGs9aixqPTIqTWF0aC5hdGFuKE1hdGguZXhwKGkpKS1NYXRoLlBJLzJ9cmV0dXJuIGEueD1oLGEueT1qLGF9LGMubmFtZXM9WyJzb21lcmMiXX0se31dLDYxOltmdW5jdGlvbihhLGIsYyl7dmFyIGQ9TWF0aC5QSS8yLGU9MWUtMTAsZj1hKCIuLi9jb21tb24vc2lnbiIpLGc9YSgiLi4vY29tbW9uL21zZm56IiksaD1hKCIuLi9jb21tb24vdHNmbnoiKSxpPWEoIi4uL2NvbW1vbi9waGkyeiIpLGo9YSgiLi4vY29tbW9uL2FkanVzdF9sb24iKTtjLnNzZm5fPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYio9YyxNYXRoLnRhbiguNSooZCthKSkqTWF0aC5wb3coKDEtYikvKDErYiksLjUqYyl9LGMuaW5pdD1mdW5jdGlvbigpe3RoaXMuY29zbGF0MD1NYXRoLmNvcyh0aGlzLmxhdDApLHRoaXMuc2lubGF0MD1NYXRoLnNpbih0aGlzLmxhdDApLHRoaXMuc3BoZXJlPzE9PT10aGlzLmswJiYhaXNOYU4odGhpcy5sYXRfdHMpJiZNYXRoLmFicyh0aGlzLmNvc2xhdDApPD1lJiYodGhpcy5rMD0uNSooMStmKHRoaXMubGF0MCkqTWF0aC5zaW4odGhpcy5sYXRfdHMpKSk6KE1hdGguYWJzKHRoaXMuY29zbGF0MCk8PWUmJih0aGlzLmxhdDA+MD90aGlzLmNvbj0xOnRoaXMuY29uPS0xKSx0aGlzLmNvbnM9TWF0aC5zcXJ0KE1hdGgucG93KDErdGhpcy5lLDErdGhpcy5lKSpNYXRoLnBvdygxLXRoaXMuZSwxLXRoaXMuZSkpLDE9PT10aGlzLmswJiYhaXNOYU4odGhpcy5sYXRfdHMpJiZNYXRoLmFicyh0aGlzLmNvc2xhdDApPD1lJiYodGhpcy5rMD0uNSp0aGlzLmNvbnMqZyh0aGlzLmUsTWF0aC5zaW4odGhpcy5sYXRfdHMpLE1hdGguY29zKHRoaXMubGF0X3RzKSkvaCh0aGlzLmUsdGhpcy5jb24qdGhpcy5sYXRfdHMsdGhpcy5jb24qTWF0aC5zaW4odGhpcy5sYXRfdHMpKSksdGhpcy5tczE9Zyh0aGlzLmUsdGhpcy5zaW5sYXQwLHRoaXMuY29zbGF0MCksdGhpcy5YMD0yKk1hdGguYXRhbih0aGlzLnNzZm5fKHRoaXMubGF0MCx0aGlzLnNpbmxhdDAsdGhpcy5lKSktZCx0aGlzLmNvc1gwPU1hdGguY29zKHRoaXMuWDApLHRoaXMuc2luWDA9TWF0aC5zaW4odGhpcy5YMCkpfSxjLmZvcndhcmQ9ZnVuY3Rpb24oYSl7dmFyIGIsYyxmLGcsaSxrLGw9YS54LG09YS55LG49TWF0aC5zaW4obSksbz1NYXRoLmNvcyhtKSxwPWoobC10aGlzLmxvbmcwKTtyZXR1cm4gTWF0aC5hYnMoTWF0aC5hYnMobC10aGlzLmxvbmcwKS1NYXRoLlBJKTw9ZSYmTWF0aC5hYnMobSt0aGlzLmxhdDApPD1lPyhhLng9TmFOLGEueT1OYU4sYSk6dGhpcy5zcGhlcmU/KGI9Mip0aGlzLmswLygxK3RoaXMuc2lubGF0MCpuK3RoaXMuY29zbGF0MCpvKk1hdGguY29zKHApKSxhLng9dGhpcy5hKmIqbypNYXRoLnNpbihwKSt0aGlzLngwLGEueT10aGlzLmEqYioodGhpcy5jb3NsYXQwKm4tdGhpcy5zaW5sYXQwKm8qTWF0aC5jb3MocCkpK3RoaXMueTAsYSk6KGM9MipNYXRoLmF0YW4odGhpcy5zc2ZuXyhtLG4sdGhpcy5lKSktZCxnPU1hdGguY29zKGMpLGY9TWF0aC5zaW4oYyksTWF0aC5hYnModGhpcy5jb3NsYXQwKTw9ZT8oaT1oKHRoaXMuZSxtKnRoaXMuY29uLHRoaXMuY29uKm4pLGs9Mip0aGlzLmEqdGhpcy5rMCppL3RoaXMuY29ucyxhLng9dGhpcy54MCtrKk1hdGguc2luKGwtdGhpcy5sb25nMCksYS55PXRoaXMueTAtdGhpcy5jb24qaypNYXRoLmNvcyhsLXRoaXMubG9uZzApLGEpOihNYXRoLmFicyh0aGlzLnNpbmxhdDApPGU/KGI9Mip0aGlzLmEqdGhpcy5rMC8oMStnKk1hdGguY29zKHApKSxhLnk9YipmKTooYj0yKnRoaXMuYSp0aGlzLmswKnRoaXMubXMxLyh0aGlzLmNvc1gwKigxK3RoaXMuc2luWDAqZit0aGlzLmNvc1gwKmcqTWF0aC5jb3MocCkpKSxhLnk9YioodGhpcy5jb3NYMCpmLXRoaXMuc2luWDAqZypNYXRoLmNvcyhwKSkrdGhpcy55MCksYS54PWIqZypNYXRoLnNpbihwKSt0aGlzLngwLGEpKX0sYy5pbnZlcnNlPWZ1bmN0aW9uKGEpe2EueC09dGhpcy54MCxhLnktPXRoaXMueTA7dmFyIGIsYyxmLGcsaCxrPU1hdGguc3FydChhLngqYS54K2EueSphLnkpO2lmKHRoaXMuc3BoZXJlKXt2YXIgbD0yKk1hdGguYXRhbihrLyguNSp0aGlzLmEqdGhpcy5rMCkpO3JldHVybiBiPXRoaXMubG9uZzAsYz10aGlzLmxhdDAsZT49az8oYS54PWIsYS55PWMsYSk6KGM9TWF0aC5hc2luKE1hdGguY29zKGwpKnRoaXMuc2lubGF0MCthLnkqTWF0aC5zaW4obCkqdGhpcy5jb3NsYXQwL2spLGI9aihNYXRoLmFicyh0aGlzLmNvc2xhdDApPGU/dGhpcy5sYXQwPjA/dGhpcy5sb25nMCtNYXRoLmF0YW4yKGEueCwtMSphLnkpOnRoaXMubG9uZzArTWF0aC5hdGFuMihhLngsYS55KTp0aGlzLmxvbmcwK01hdGguYXRhbjIoYS54Kk1hdGguc2luKGwpLGsqdGhpcy5jb3NsYXQwKk1hdGguY29zKGwpLWEueSp0aGlzLnNpbmxhdDAqTWF0aC5zaW4obCkpKSxhLng9YixhLnk9YyxhKX1pZihNYXRoLmFicyh0aGlzLmNvc2xhdDApPD1lKXtpZihlPj1rKXJldHVybiBjPXRoaXMubGF0MCxiPXRoaXMubG9uZzAsYS54PWIsYS55PWMsYTthLngqPXRoaXMuY29uLGEueSo9dGhpcy5jb24sZj1rKnRoaXMuY29ucy8oMip0aGlzLmEqdGhpcy5rMCksYz10aGlzLmNvbippKHRoaXMuZSxmKSxiPXRoaXMuY29uKmoodGhpcy5jb24qdGhpcy5sb25nMCtNYXRoLmF0YW4yKGEueCwtMSphLnkpKX1lbHNlIGc9MipNYXRoLmF0YW4oayp0aGlzLmNvc1gwLygyKnRoaXMuYSp0aGlzLmswKnRoaXMubXMxKSksYj10aGlzLmxvbmcwLGU+PWs/aD10aGlzLlgwOihoPU1hdGguYXNpbihNYXRoLmNvcyhnKSp0aGlzLnNpblgwK2EueSpNYXRoLnNpbihnKSp0aGlzLmNvc1gwL2spLGI9aih0aGlzLmxvbmcwK01hdGguYXRhbjIoYS54Kk1hdGguc2luKGcpLGsqdGhpcy5jb3NYMCpNYXRoLmNvcyhnKS1hLnkqdGhpcy5zaW5YMCpNYXRoLnNpbihnKSkpKSxjPS0xKmkodGhpcy5lLE1hdGgudGFuKC41KihkK2gpKSk7cmV0dXJuIGEueD1iLGEueT1jLGF9LGMubmFtZXM9WyJzdGVyZSIsIlN0ZXJlb2dyYXBoaWNfU291dGhfUG9sZSIsIlBvbGFyIFN0ZXJlb2dyYXBoaWMgKHZhcmlhbnQgQikiXX0seyIuLi9jb21tb24vYWRqdXN0X2xvbiI6NSwiLi4vY29tbW9uL21zZm56IjoxNSwiLi4vY29tbW9uL3BoaTJ6IjoxNiwiLi4vY29tbW9uL3NpZ24iOjIxLCIuLi9jb21tb24vdHNmbnoiOjI0fV0sNjI6W2Z1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuL2dhdXNzIiksZT1hKCIuLi9jb21tb24vYWRqdXN0X2xvbiIpO2MuaW5pdD1mdW5jdGlvbigpe2QuaW5pdC5hcHBseSh0aGlzKSx0aGlzLnJjJiYodGhpcy5zaW5jMD1NYXRoLnNpbih0aGlzLnBoaWMwKSx0aGlzLmNvc2MwPU1hdGguY29zKHRoaXMucGhpYzApLHRoaXMuUjI9Mip0aGlzLnJjLHRoaXMudGl0bGV8fCh0aGlzLnRpdGxlPSJPYmxpcXVlIFN0ZXJlb2dyYXBoaWMgQWx0ZXJuYXRpdmUiKSl9LGMuZm9yd2FyZD1mdW5jdGlvbihhKXt2YXIgYixjLGYsZztyZXR1cm4gYS54PWUoYS54LXRoaXMubG9uZzApLGQuZm9yd2FyZC5hcHBseSh0aGlzLFthXSksYj1NYXRoLnNpbihhLnkpLGM9TWF0aC5jb3MoYS55KSxmPU1hdGguY29zKGEueCksZz10aGlzLmswKnRoaXMuUjIvKDErdGhpcy5zaW5jMCpiK3RoaXMuY29zYzAqYypmKSxhLng9ZypjKk1hdGguc2luKGEueCksYS55PWcqKHRoaXMuY29zYzAqYi10aGlzLnNpbmMwKmMqZiksYS54PXRoaXMuYSphLngrdGhpcy54MCxhLnk9dGhpcy5hKmEueSt0aGlzLnkwLGF9LGMuaW52ZXJzZT1mdW5jdGlvbihhKXt2YXIgYixjLGYsZyxoO2lmKGEueD0oYS54LXRoaXMueDApL3RoaXMuYSxhLnk9KGEueS10aGlzLnkwKS90aGlzLmEsYS54Lz10aGlzLmswLGEueS89dGhpcy5rMCxoPU1hdGguc3FydChhLngqYS54K2EueSphLnkpKXt2YXIgaT0yKk1hdGguYXRhbjIoaCx0aGlzLlIyKTtiPU1hdGguc2luKGkpLGM9TWF0aC5jb3MoaSksZz1NYXRoLmFzaW4oYyp0aGlzLnNpbmMwK2EueSpiKnRoaXMuY29zYzAvaCksZj1NYXRoLmF0YW4yKGEueCpiLGgqdGhpcy5jb3NjMCpjLWEueSp0aGlzLnNpbmMwKmIpfWVsc2UgZz10aGlzLnBoaWMwLGY9MDtyZXR1cm4gYS54PWYsYS55PWcsZC5pbnZlcnNlLmFwcGx5KHRoaXMsW2FdKSxhLng9ZShhLngrdGhpcy5sb25nMCksYX0sYy5uYW1lcz1bIlN0ZXJlb2dyYXBoaWNfTm9ydGhfUG9sZSIsIk9ibGlxdWVfU3RlcmVvZ3JhcGhpYyIsIlBvbGFyX1N0ZXJlb2dyYXBoaWMiLCJzdGVyZWEiLCJPYmxpcXVlIFN0ZXJlb2dyYXBoaWMgQWx0ZXJuYXRpdmUiXX0seyIuLi9jb21tb24vYWRqdXN0X2xvbiI6NSwiLi9nYXVzcyI6NDZ9XSw2MzpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2NvbW1vbi9lMGZuIiksZT1hKCIuLi9jb21tb24vZTFmbiIpLGY9YSgiLi4vY29tbW9uL2UyZm4iKSxnPWEoIi4uL2NvbW1vbi9lM2ZuIiksaD1hKCIuLi9jb21tb24vbWxmbiIpLGk9YSgiLi4vY29tbW9uL2FkanVzdF9sb24iKSxqPU1hdGguUEkvMixrPTFlLTEwLGw9YSgiLi4vY29tbW9uL3NpZ24iKSxtPWEoIi4uL2NvbW1vbi9hc2lueiIpO2MuaW5pdD1mdW5jdGlvbigpe3RoaXMuZTA9ZCh0aGlzLmVzKSx0aGlzLmUxPWUodGhpcy5lcyksdGhpcy5lMj1mKHRoaXMuZXMpLHRoaXMuZTM9Zyh0aGlzLmVzKSx0aGlzLm1sMD10aGlzLmEqaCh0aGlzLmUwLHRoaXMuZTEsdGhpcy5lMix0aGlzLmUzLHRoaXMubGF0MCl9LGMuZm9yd2FyZD1mdW5jdGlvbihhKXt2YXIgYixjLGQsZT1hLngsZj1hLnksZz1pKGUtdGhpcy5sb25nMCksaj1NYXRoLnNpbihmKSxrPU1hdGguY29zKGYpO2lmKHRoaXMuc3BoZXJlKXt2YXIgbD1rKk1hdGguc2luKGcpO2lmKE1hdGguYWJzKE1hdGguYWJzKGwpLTEpPDFlLTEwKXJldHVybiA5MztjPS41KnRoaXMuYSp0aGlzLmswKk1hdGgubG9nKCgxK2wpLygxLWwpKSxiPU1hdGguYWNvcyhrKk1hdGguY29zKGcpL01hdGguc3FydCgxLWwqbCkpLDA+ZiYmKGI9LWIpLGQ9dGhpcy5hKnRoaXMuazAqKGItdGhpcy5sYXQwKX1lbHNle3ZhciBtPWsqZyxuPU1hdGgucG93KG0sMiksbz10aGlzLmVwMipNYXRoLnBvdyhrLDIpLHA9TWF0aC50YW4oZikscT1NYXRoLnBvdyhwLDIpO2I9MS10aGlzLmVzKk1hdGgucG93KGosMik7dmFyIHI9dGhpcy5hL01hdGguc3FydChiKSxzPXRoaXMuYSpoKHRoaXMuZTAsdGhpcy5lMSx0aGlzLmUyLHRoaXMuZTMsZik7Yz10aGlzLmswKnIqbSooMStuLzYqKDEtcStvK24vMjAqKDUtMTgqcStNYXRoLnBvdyhxLDIpKzcyKm8tNTgqdGhpcy5lcDIpKSkrdGhpcy54MCxkPXRoaXMuazAqKHMtdGhpcy5tbDArcipwKihuKiguNStuLzI0Kig1LXErOSpvKzQqTWF0aC5wb3cobywyKStuLzMwKig2MS01OCpxK01hdGgucG93KHEsMikrNjAwKm8tMzMwKnRoaXMuZXAyKSkpKSkrdGhpcy55MH1yZXR1cm4gYS54PWMsYS55PWQsYX0sYy5pbnZlcnNlPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoPTY7aWYodGhpcy5zcGhlcmUpe3ZhciBuPU1hdGguZXhwKGEueC8odGhpcy5hKnRoaXMuazApKSxvPS41KihuLTEvbikscD10aGlzLmxhdDArYS55Lyh0aGlzLmEqdGhpcy5rMCkscT1NYXRoLmNvcyhwKTtiPU1hdGguc3FydCgoMS1xKnEpLygxK28qbykpLGY9bShiKSwwPnAmJihmPS1mKSxnPTA9PT1vJiYwPT09cT90aGlzLmxvbmcwOmkoTWF0aC5hdGFuMihvLHEpK3RoaXMubG9uZzApfWVsc2V7dmFyIHI9YS54LXRoaXMueDAscz1hLnktdGhpcy55MDtmb3IoYj0odGhpcy5tbDArcy90aGlzLmswKS90aGlzLmEsYz1iLGU9MDshMCYmKGQ9KGIrdGhpcy5lMSpNYXRoLnNpbigyKmMpLXRoaXMuZTIqTWF0aC5zaW4oNCpjKSt0aGlzLmUzKk1hdGguc2luKDYqYykpL3RoaXMuZTAtYyxjKz1kLCEoTWF0aC5hYnMoZCk8PWspKTtlKyspaWYoZT49aClyZXR1cm4gOTU7aWYoTWF0aC5hYnMoYyk8ail7dmFyIHQ9TWF0aC5zaW4oYyksdT1NYXRoLmNvcyhjKSx2PU1hdGgudGFuKGMpLHc9dGhpcy5lcDIqTWF0aC5wb3codSwyKSx4PU1hdGgucG93KHcsMikseT1NYXRoLnBvdyh2LDIpLHo9TWF0aC5wb3coeSwyKTtiPTEtdGhpcy5lcypNYXRoLnBvdyh0LDIpO3ZhciBBPXRoaXMuYS9NYXRoLnNxcnQoYiksQj1BKigxLXRoaXMuZXMpL2IsQz1yLyhBKnRoaXMuazApLEQ9TWF0aC5wb3coQywyKTtmPWMtQSp2KkQvQiooLjUtRC8yNCooNSszKnkrMTAqdy00KngtOSp0aGlzLmVwMi1ELzMwKig2MSs5MCp5KzI5OCp3KzQ1KnotMjUyKnRoaXMuZXAyLTMqeCkpKSxnPWkodGhpcy5sb25nMCtDKigxLUQvNiooMSsyKnkrdy1ELzIwKig1LTIqdysyOCp5LTMqeCs4KnRoaXMuZXAyKzI0KnopKSkvdSl9ZWxzZSBmPWoqbChzKSxnPXRoaXMubG9uZzB9cmV0dXJuIGEueD1nLGEueT1mLGF9LGMubmFtZXM9WyJUcmFuc3ZlcnNlX01lcmNhdG9yIiwiVHJhbnN2ZXJzZSBNZXJjYXRvciIsInRtZXJjIl19LHsiLi4vY29tbW9uL2FkanVzdF9sb24iOjUsIi4uL2NvbW1vbi9hc2lueiI6NiwiLi4vY29tbW9uL2UwZm4iOjcsIi4uL2NvbW1vbi9lMWZuIjo4LCIuLi9jb21tb24vZTJmbiI6OSwiLi4vY29tbW9uL2UzZm4iOjEwLCIuLi9jb21tb24vbWxmbiI6MTQsIi4uL2NvbW1vbi9zaWduIjoyMX1dLDY0OltmdW5jdGlvbihhLGIsYyl7dmFyIGQ9LjAxNzQ1MzI5MjUxOTk0MzI5NSxlPWEoIi4vdG1lcmMiKTtjLmRlcGVuZHNPbj0idG1lcmMiLGMuaW5pdD1mdW5jdGlvbigpe3RoaXMuem9uZSYmKHRoaXMubGF0MD0wLHRoaXMubG9uZzA9KDYqTWF0aC5hYnModGhpcy56b25lKS0xODMpKmQsdGhpcy54MD01ZTUsdGhpcy55MD10aGlzLnV0bVNvdXRoPzFlNzowLHRoaXMuazA9Ljk5OTYsZS5pbml0LmFwcGx5KHRoaXMpLHRoaXMuZm9yd2FyZD1lLmZvcndhcmQsdGhpcy5pbnZlcnNlPWUuaW52ZXJzZSl9LGMubmFtZXM9WyJVbml2ZXJzYWwgVHJhbnN2ZXJzZSBNZXJjYXRvciBTeXN0ZW0iLCJ1dG0iXX0seyIuL3RtZXJjIjo2M31dLDY1OltmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vY29tbW9uL2FkanVzdF9sb24iKSxlPU1hdGguUEkvMixmPTFlLTEwLGc9YSgiLi4vY29tbW9uL2FzaW56Iik7Yy5pbml0PWZ1bmN0aW9uKCl7dGhpcy5SPXRoaXMuYX0sYy5mb3J3YXJkPWZ1bmN0aW9uKGEpe3ZhciBiLGMsaD1hLngsaT1hLnksaj1kKGgtdGhpcy5sb25nMCk7TWF0aC5hYnMoaSk8PWYmJihiPXRoaXMueDArdGhpcy5SKmosYz10aGlzLnkwKTt2YXIgaz1nKDIqTWF0aC5hYnMoaS9NYXRoLlBJKSk7KE1hdGguYWJzKGopPD1mfHxNYXRoLmFicyhNYXRoLmFicyhpKS1lKTw9ZikmJihiPXRoaXMueDAsYz1pPj0wP3RoaXMueTArTWF0aC5QSSp0aGlzLlIqTWF0aC50YW4oLjUqayk6dGhpcy55MCtNYXRoLlBJKnRoaXMuUiotTWF0aC50YW4oLjUqaykpO3ZhciBsPS41Kk1hdGguYWJzKE1hdGguUEkvai1qL01hdGguUEkpLG09bCpsLG49TWF0aC5zaW4oayksbz1NYXRoLmNvcyhrKSxwPW8vKG4rby0xKSxxPXAqcCxyPXAqKDIvbi0xKSxzPXIqcix0PU1hdGguUEkqdGhpcy5SKihsKihwLXMpK01hdGguc3FydChtKihwLXMpKihwLXMpLShzK20pKihxLXMpKSkvKHMrbSk7MD5qJiYodD0tdCksYj10aGlzLngwK3Q7dmFyIHU9bStwO3JldHVybiB0PU1hdGguUEkqdGhpcy5SKihyKnUtbCpNYXRoLnNxcnQoKHMrbSkqKG0rMSktdSp1KSkvKHMrbSksYz1pPj0wP3RoaXMueTArdDp0aGlzLnkwLXQsYS54PWIsYS55PWMsYX0sYy5pbnZlcnNlPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZSxnLGgsaSxqLGssbCxtLG4sbyxwO3JldHVybiBhLngtPXRoaXMueDAsYS55LT10aGlzLnkwLG49TWF0aC5QSSp0aGlzLlIsZT1hLngvbixnPWEueS9uLGg9ZSplK2cqZyxpPS1NYXRoLmFicyhnKSooMStoKSwNCmo9aS0yKmcqZytlKmUsaz0tMippKzErMipnKmcraCpoLHA9ZypnL2srKDIqaipqKmovay9rL2stOSppKmovay9rKS8yNyxsPShpLWoqai8zL2spL2ssbT0yKk1hdGguc3FydCgtbC8zKSxuPTMqcC9sL20sTWF0aC5hYnMobik+MSYmKG49bj49MD8xOi0xKSxvPU1hdGguYWNvcyhuKS8zLGM9YS55Pj0wPygtbSpNYXRoLmNvcyhvK01hdGguUEkvMyktai8zL2spKk1hdGguUEk6LSgtbSpNYXRoLmNvcyhvK01hdGguUEkvMyktai8zL2spKk1hdGguUEksYj1NYXRoLmFicyhlKTxmP3RoaXMubG9uZzA6ZCh0aGlzLmxvbmcwK01hdGguUEkqKGgtMStNYXRoLnNxcnQoMSsyKihlKmUtZypnKStoKmgpKS8yL2UpLGEueD1iLGEueT1jLGF9LGMubmFtZXM9WyJWYW5fZGVyX0dyaW50ZW5fSSIsIlZhbkRlckdyaW50ZW4iLCJ2YW5kZyJdfSx7Ii4uL2NvbW1vbi9hZGp1c3RfbG9uIjo1LCIuLi9jb21tb24vYXNpbnoiOjZ9XSw2NjpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPS4wMTc0NTMyOTI1MTk5NDMyOTUsZT01Ny4yOTU3Nzk1MTMwODIzMixmPTEsZz0yLGg9YSgiLi9kYXR1bV90cmFuc2Zvcm0iKSxpPWEoIi4vYWRqdXN0X2F4aXMiKSxqPWEoIi4vUHJvaiIpLGs9YSgiLi9jb21tb24vdG9Qb2ludCIpO2IuZXhwb3J0cz1mdW5jdGlvbiBsKGEsYixjKXtmdW5jdGlvbiBtKGEsYil7cmV0dXJuKGEuZGF0dW0uZGF0dW1fdHlwZT09PWZ8fGEuZGF0dW0uZGF0dW1fdHlwZT09PWcpJiYiV0dTODQiIT09Yi5kYXR1bUNvZGV9dmFyIG47cmV0dXJuIEFycmF5LmlzQXJyYXkoYykmJihjPWsoYykpLGEuZGF0dW0mJmIuZGF0dW0mJihtKGEsYil8fG0oYixhKSkmJihuPW5ldyBqKCJXR1M4NCIpLGwoYSxuLGMpLGE9biksImVudSIhPT1hLmF4aXMmJmkoYSwhMSxjKSwibG9uZ2xhdCI9PT1hLnByb2pOYW1lPyhjLngqPWQsYy55Kj1kKTooYS50b19tZXRlciYmKGMueCo9YS50b19tZXRlcixjLnkqPWEudG9fbWV0ZXIpLGEuaW52ZXJzZShjKSksYS5mcm9tX2dyZWVud2ljaCYmKGMueCs9YS5mcm9tX2dyZWVud2ljaCksYz1oKGEuZGF0dW0sYi5kYXR1bSxjKSxiLmZyb21fZ3JlZW53aWNoJiYoYy54LT1iLmZyb21fZ3JlZW53aWNoKSwibG9uZ2xhdCI9PT1iLnByb2pOYW1lPyhjLngqPWUsYy55Kj1lKTooYi5mb3J3YXJkKGMpLGIudG9fbWV0ZXImJihjLngvPWIudG9fbWV0ZXIsYy55Lz1iLnRvX21ldGVyKSksImVudSIhPT1iLmF4aXMmJmkoYiwhMCxjKSxjfX0seyIuL1Byb2oiOjIsIi4vYWRqdXN0X2F4aXMiOjMsIi4vY29tbW9uL3RvUG9pbnQiOjIzLCIuL2RhdHVtX3RyYW5zZm9ybSI6MzF9XSw2NzpbZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYSxiLGMpe2FbYl09Yy5tYXAoZnVuY3Rpb24oYSl7dmFyIGI9e307cmV0dXJuIGUoYSxiKSxifSkucmVkdWNlKGZ1bmN0aW9uKGEsYil7cmV0dXJuIGooYSxiKX0se30pfWZ1bmN0aW9uIGUoYSxiKXt2YXIgYztyZXR1cm4gQXJyYXkuaXNBcnJheShhKT8oYz1hLnNoaWZ0KCksIlBBUkFNRVRFUiI9PT1jJiYoYz1hLnNoaWZ0KCkpLDE9PT1hLmxlbmd0aD9BcnJheS5pc0FycmF5KGFbMF0pPyhiW2NdPXt9LGUoYVswXSxiW2NdKSk6YltjXT1hWzBdOmEubGVuZ3RoPyJUT1dHUzg0Ij09PWM/YltjXT1hOihiW2NdPXt9LFsiVU5JVCIsIlBSSU1FTSIsIlZFUlRfREFUVU0iXS5pbmRleE9mKGMpPi0xPyhiW2NdPXtuYW1lOmFbMF0udG9Mb3dlckNhc2UoKSxjb252ZXJ0OmFbMV19LDM9PT1hLmxlbmd0aCYmKGJbY10uYXV0aD1hWzJdKSk6IlNQSEVST0lEIj09PWM/KGJbY109e25hbWU6YVswXSxhOmFbMV0scmY6YVsyXX0sND09PWEubGVuZ3RoJiYoYltjXS5hdXRoPWFbM10pKTpbIkdFT0dDUyIsIkdFT0NDUyIsIkRBVFVNIiwiVkVSVF9DUyIsIkNPTVBEX0NTIiwiTE9DQUxfQ1MiLCJGSVRURURfQ1MiLCJMT0NBTF9EQVRVTSJdLmluZGV4T2YoYyk+LTE/KGFbMF09WyJuYW1lIixhWzBdXSxkKGIsYyxhKSk6YS5ldmVyeShmdW5jdGlvbihhKXtyZXR1cm4gQXJyYXkuaXNBcnJheShhKX0pP2QoYixjLGEpOmUoYSxiW2NdKSk6YltjXT0hMCx2b2lkIDApOnZvaWQoYlthXT0hMCl9ZnVuY3Rpb24gZihhLGIpe3ZhciBjPWJbMF0sZD1iWzFdOyEoYyBpbiBhKSYmZCBpbiBhJiYoYVtjXT1hW2RdLDM9PT1iLmxlbmd0aCYmKGFbY109YlsyXShhW2NdKSkpfWZ1bmN0aW9uIGcoYSl7cmV0dXJuIGEqaX1mdW5jdGlvbiBoKGEpe2Z1bmN0aW9uIGIoYil7dmFyIGM9YS50b19tZXRlcnx8MTtyZXR1cm4gcGFyc2VGbG9hdChiLDEwKSpjfSJHRU9HQ1MiPT09YS50eXBlP2EucHJvak5hbWU9ImxvbmdsYXQiOiJMT0NBTF9DUyI9PT1hLnR5cGU/KGEucHJvak5hbWU9ImlkZW50aXR5IixhLmxvY2FsPSEwKToib2JqZWN0Ij09dHlwZW9mIGEuUFJPSkVDVElPTj9hLnByb2pOYW1lPU9iamVjdC5rZXlzKGEuUFJPSkVDVElPTilbMF06YS5wcm9qTmFtZT1hLlBST0pFQ1RJT04sYS5VTklUJiYoYS51bml0cz1hLlVOSVQubmFtZS50b0xvd2VyQ2FzZSgpLCJtZXRyZSI9PT1hLnVuaXRzJiYoYS51bml0cz0ibWV0ZXIiKSxhLlVOSVQuY29udmVydCYmKCJHRU9HQ1MiPT09YS50eXBlP2EuREFUVU0mJmEuREFUVU0uU1BIRVJPSUQmJihhLnRvX21ldGVyPXBhcnNlRmxvYXQoYS5VTklULmNvbnZlcnQsMTApKmEuREFUVU0uU1BIRVJPSUQuYSk6YS50b19tZXRlcj1wYXJzZUZsb2F0KGEuVU5JVC5jb252ZXJ0LDEwKSkpLGEuR0VPR0NTJiYoYS5HRU9HQ1MuREFUVU0/YS5kYXR1bUNvZGU9YS5HRU9HQ1MuREFUVU0ubmFtZS50b0xvd2VyQ2FzZSgpOmEuZGF0dW1Db2RlPWEuR0VPR0NTLm5hbWUudG9Mb3dlckNhc2UoKSwiZF8iPT09YS5kYXR1bUNvZGUuc2xpY2UoMCwyKSYmKGEuZGF0dW1Db2RlPWEuZGF0dW1Db2RlLnNsaWNlKDIpKSwibmV3X3plYWxhbmRfZ2VvZGV0aWNfZGF0dW1fMTk0OSIhPT1hLmRhdHVtQ29kZSYmIm5ld196ZWFsYW5kXzE5NDkiIT09YS5kYXR1bUNvZGV8fChhLmRhdHVtQ29kZT0ibnpnZDQ5IiksIndnc18xOTg0Ij09PWEuZGF0dW1Db2RlJiYoIk1lcmNhdG9yX0F1eGlsaWFyeV9TcGhlcmUiPT09YS5QUk9KRUNUSU9OJiYoYS5zcGhlcmU9ITApLGEuZGF0dW1Db2RlPSJ3Z3M4NCIpLCJfZmVycm8iPT09YS5kYXR1bUNvZGUuc2xpY2UoLTYpJiYoYS5kYXR1bUNvZGU9YS5kYXR1bUNvZGUuc2xpY2UoMCwtNikpLCJfamFrYXJ0YSI9PT1hLmRhdHVtQ29kZS5zbGljZSgtOCkmJihhLmRhdHVtQ29kZT1hLmRhdHVtQ29kZS5zbGljZSgwLC04KSksfmEuZGF0dW1Db2RlLmluZGV4T2YoImJlbGdlIikmJihhLmRhdHVtQ29kZT0icm5iNzIiKSxhLkdFT0dDUy5EQVRVTSYmYS5HRU9HQ1MuREFUVU0uU1BIRVJPSUQmJihhLmVsbHBzPWEuR0VPR0NTLkRBVFVNLlNQSEVST0lELm5hbWUucmVwbGFjZSgiXzE5IiwiIikucmVwbGFjZSgvW0NjXWxhcmtlXF8xOC8sImNscmsiKSwiaW50ZXJuYXRpb25hbCI9PT1hLmVsbHBzLnRvTG93ZXJDYXNlKCkuc2xpY2UoMCwxMykmJihhLmVsbHBzPSJpbnRsIiksYS5hPWEuR0VPR0NTLkRBVFVNLlNQSEVST0lELmEsYS5yZj1wYXJzZUZsb2F0KGEuR0VPR0NTLkRBVFVNLlNQSEVST0lELnJmLDEwKSksfmEuZGF0dW1Db2RlLmluZGV4T2YoIm9zZ2JfMTkzNiIpJiYoYS5kYXR1bUNvZGU9Im9zZ2IzNiIpKSxhLmImJiFpc0Zpbml0ZShhLmIpJiYoYS5iPWEuYSk7dmFyIGM9ZnVuY3Rpb24oYil7cmV0dXJuIGYoYSxiKX0sZD1bWyJzdGFuZGFyZF9wYXJhbGxlbF8xIiwiU3RhbmRhcmRfUGFyYWxsZWxfMSJdLFsic3RhbmRhcmRfcGFyYWxsZWxfMiIsIlN0YW5kYXJkX1BhcmFsbGVsXzIiXSxbImZhbHNlX2Vhc3RpbmciLCJGYWxzZV9FYXN0aW5nIl0sWyJmYWxzZV9ub3J0aGluZyIsIkZhbHNlX05vcnRoaW5nIl0sWyJjZW50cmFsX21lcmlkaWFuIiwiQ2VudHJhbF9NZXJpZGlhbiJdLFsibGF0aXR1ZGVfb2Zfb3JpZ2luIiwiTGF0aXR1ZGVfT2ZfT3JpZ2luIl0sWyJsYXRpdHVkZV9vZl9vcmlnaW4iLCJDZW50cmFsX1BhcmFsbGVsIl0sWyJzY2FsZV9mYWN0b3IiLCJTY2FsZV9GYWN0b3IiXSxbImswIiwic2NhbGVfZmFjdG9yIl0sWyJsYXRpdHVkZV9vZl9jZW50ZXIiLCJMYXRpdHVkZV9vZl9jZW50ZXIiXSxbImxhdDAiLCJsYXRpdHVkZV9vZl9jZW50ZXIiLGddLFsibG9uZ2l0dWRlX29mX2NlbnRlciIsIkxvbmdpdHVkZV9PZl9DZW50ZXIiXSxbImxvbmdjIiwibG9uZ2l0dWRlX29mX2NlbnRlciIsZ10sWyJ4MCIsImZhbHNlX2Vhc3RpbmciLGJdLFsieTAiLCJmYWxzZV9ub3J0aGluZyIsYl0sWyJsb25nMCIsImNlbnRyYWxfbWVyaWRpYW4iLGddLFsibGF0MCIsImxhdGl0dWRlX29mX29yaWdpbiIsZ10sWyJsYXQwIiwic3RhbmRhcmRfcGFyYWxsZWxfMSIsZ10sWyJsYXQxIiwic3RhbmRhcmRfcGFyYWxsZWxfMSIsZ10sWyJsYXQyIiwic3RhbmRhcmRfcGFyYWxsZWxfMiIsZ10sWyJhbHBoYSIsImF6aW11dGgiLGddLFsic3JzQ29kZSIsIm5hbWUiXV07ZC5mb3JFYWNoKGMpLGEubG9uZzB8fCFhLmxvbmdjfHwiQWxiZXJzX0NvbmljX0VxdWFsX0FyZWEiIT09YS5wcm9qTmFtZSYmIkxhbWJlcnRfQXppbXV0aGFsX0VxdWFsX0FyZWEiIT09YS5wcm9qTmFtZXx8KGEubG9uZzA9YS5sb25nYyksYS5sYXRfdHN8fCFhLmxhdDF8fCJTdGVyZW9ncmFwaGljX1NvdXRoX1BvbGUiIT09YS5wcm9qTmFtZSYmIlBvbGFyIFN0ZXJlb2dyYXBoaWMgKHZhcmlhbnQgQikiIT09YS5wcm9qTmFtZXx8KGEubGF0MD1nKGEubGF0MT4wPzkwOi05MCksYS5sYXRfdHM9YS5sYXQxKX12YXIgaT0uMDE3NDUzMjkyNTE5OTQzMjk1LGo9YSgiLi9leHRlbmQiKTtiLmV4cG9ydHM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1KU09OLnBhcnNlKCgiLCIrYSkucmVwbGFjZSgvXHMqXCxccyooW0EtWl8wLTldKz8pKFxbKS9nLCcsWyIkMSIsJykuc2xpY2UoMSkucmVwbGFjZSgvXHMqXCxccyooW0EtWl8wLTldKz8pXF0vZywnLCIkMSJdJykucmVwbGFjZSgvLFxbIlZFUlRDUyIuKy8sIiIpKSxkPWMuc2hpZnQoKSxmPWMuc2hpZnQoKTtjLnVuc2hpZnQoWyJuYW1lIixmXSksYy51bnNoaWZ0KFsidHlwZSIsZF0pLGMudW5zaGlmdCgib3V0cHV0Iik7dmFyIGc9e307cmV0dXJuIGUoYyxnKSxoKGcub3V0cHV0KSxqKGIsZy5vdXRwdXQpfX0seyIuL2V4dGVuZCI6MzR9XSw2ODpbZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYSl7cmV0dXJuIGEqKE1hdGguUEkvMTgwKX1mdW5jdGlvbiBlKGEpe3JldHVybiAxODAqKGEvTWF0aC5QSSl9ZnVuY3Rpb24gZihhKXt2YXIgYixjLGUsZixnLGksaixrLGwsbT1hLmxhdCxuPWEubG9uLG89NjM3ODEzNyxwPS4wMDY2OTQzOCxxPS45OTk2LHI9ZChtKSxzPWQobik7bD1NYXRoLmZsb29yKChuKzE4MCkvNikrMSwxODA9PT1uJiYobD02MCksbT49NTYmJjY0Pm0mJm4+PTMmJjEyPm4mJihsPTMyKSxtPj03MiYmODQ+bSYmKG4+PTAmJjk+bj9sPTMxOm4+PTkmJjIxPm4/bD0zMzpuPj0yMSYmMzM+bj9sPTM1Om4+PTMzJiY0Mj5uJiYobD0zNykpLGI9NioobC0xKS0xODArMyxrPWQoYiksYz1wLygxLXApLGU9by9NYXRoLnNxcnQoMS1wKk1hdGguc2luKHIpKk1hdGguc2luKHIpKSxmPU1hdGgudGFuKHIpKk1hdGgudGFuKHIpLGc9YypNYXRoLmNvcyhyKSpNYXRoLmNvcyhyKSxpPU1hdGguY29zKHIpKihzLWspLGo9byooKDEtcC80LTMqcCpwLzY0LTUqcCpwKnAvMjU2KSpyLSgzKnAvOCszKnAqcC8zMis0NSpwKnAqcC8xMDI0KSpNYXRoLnNpbigyKnIpKygxNSpwKnAvMjU2KzQ1KnAqcCpwLzEwMjQpKk1hdGguc2luKDQqciktMzUqcCpwKnAvMzA3MipNYXRoLnNpbig2KnIpKTt2YXIgdD1xKmUqKGkrKDEtZitnKSppKmkqaS82Kyg1LTE4KmYrZipmKzcyKmctNTgqYykqaSppKmkqaSppLzEyMCkrNWU1LHU9cSooaitlKk1hdGgudGFuKHIpKihpKmkvMisoNS1mKzkqZys0KmcqZykqaSppKmkqaS8yNCsoNjEtNTgqZitmKmYrNjAwKmctMzMwKmMpKmkqaSppKmkqaSppLzcyMCkpO3JldHVybiAwPm0mJih1Kz0xZTcpLHtub3J0aGluZzpNYXRoLnJvdW5kKHUpLGVhc3Rpbmc6TWF0aC5yb3VuZCh0KSx6b25lTnVtYmVyOmwsem9uZUxldHRlcjpoKG0pfX1mdW5jdGlvbiBnKGEpe3ZhciBiPWEubm9ydGhpbmcsYz1hLmVhc3RpbmcsZD1hLnpvbmVMZXR0ZXIsZj1hLnpvbmVOdW1iZXI7aWYoMD5mfHxmPjYwKXJldHVybiBudWxsO3ZhciBoLGksaixrLGwsbSxuLG8scCxxLHI9Ljk5OTYscz02Mzc4MTM3LHQ9LjAwNjY5NDM4LHU9KDEtTWF0aC5zcXJ0KDEtdCkpLygxK01hdGguc3FydCgxLXQpKSx2PWMtNWU1LHc9YjsiTiI+ZCYmKHctPTFlNyksbz02KihmLTEpLTE4MCszLGg9dC8oMS10KSxuPXcvcixwPW4vKHMqKDEtdC80LTMqdCp0LzY0LTUqdCp0KnQvMjU2KSkscT1wKygzKnUvMi0yNyp1KnUqdS8zMikqTWF0aC5zaW4oMipwKSsoMjEqdSp1LzE2LTU1KnUqdSp1KnUvMzIpKk1hdGguc2luKDQqcCkrMTUxKnUqdSp1Lzk2Kk1hdGguc2luKDYqcCksaT1zL01hdGguc3FydCgxLXQqTWF0aC5zaW4ocSkqTWF0aC5zaW4ocSkpLGo9TWF0aC50YW4ocSkqTWF0aC50YW4ocSksaz1oKk1hdGguY29zKHEpKk1hdGguY29zKHEpLGw9cyooMS10KS9NYXRoLnBvdygxLXQqTWF0aC5zaW4ocSkqTWF0aC5zaW4ocSksMS41KSxtPXYvKGkqcik7dmFyIHg9cS1pKk1hdGgudGFuKHEpL2wqKG0qbS8yLSg1KzMqaisxMCprLTQqayprLTkqaCkqbSptKm0qbS8yNCsoNjErOTAqaisyOTgqays0NSpqKmotMjUyKmgtMyprKmspKm0qbSptKm0qbSptLzcyMCk7eD1lKHgpO3ZhciB5PShtLSgxKzIqaitrKSptKm0qbS82Kyg1LTIqaysyOCpqLTMqayprKzgqaCsyNCpqKmopKm0qbSptKm0qbS8xMjApL01hdGguY29zKHEpO3k9bytlKHkpO3ZhciB6O2lmKGEuYWNjdXJhY3kpe3ZhciBBPWcoe25vcnRoaW5nOmEubm9ydGhpbmcrYS5hY2N1cmFjeSxlYXN0aW5nOmEuZWFzdGluZythLmFjY3VyYWN5LHpvbmVMZXR0ZXI6YS56b25lTGV0dGVyLHpvbmVOdW1iZXI6YS56b25lTnVtYmVyfSk7ej17dG9wOkEubGF0LHJpZ2h0OkEubG9uLGJvdHRvbTp4LGxlZnQ6eX19ZWxzZSB6PXtsYXQ6eCxsb246eX07cmV0dXJuIHp9ZnVuY3Rpb24gaChhKXt2YXIgYj0iWiI7cmV0dXJuIDg0Pj1hJiZhPj03Mj9iPSJYIjo3Mj5hJiZhPj02ND9iPSJXIjo2ND5hJiZhPj01Nj9iPSJWIjo1Nj5hJiZhPj00OD9iPSJVIjo0OD5hJiZhPj00MD9iPSJUIjo0MD5hJiZhPj0zMj9iPSJTIjozMj5hJiZhPj0yND9iPSJSIjoyND5hJiZhPj0xNj9iPSJRIjoxNj5hJiZhPj04P2I9IlAiOjg+YSYmYT49MD9iPSJOIjowPmEmJmE+PS04P2I9Ik0iOi04PmEmJmE+PS0xNj9iPSJMIjotMTY+YSYmYT49LTI0P2I9IksiOi0yND5hJiZhPj0tMzI/Yj0iSiI6LTMyPmEmJmE+PS00MD9iPSJIIjotNDA+YSYmYT49LTQ4P2I9IkciOi00OD5hJiZhPj0tNTY/Yj0iRiI6LTU2PmEmJmE+PS02ND9iPSJFIjotNjQ+YSYmYT49LTcyP2I9IkQiOi03Mj5hJiZhPj0tODAmJihiPSJDIiksYn1mdW5jdGlvbiBpKGEsYil7dmFyIGM9IjAwMDAwIithLmVhc3RpbmcsZD0iMDAwMDAiK2Eubm9ydGhpbmc7cmV0dXJuIGEuem9uZU51bWJlcithLnpvbmVMZXR0ZXIraihhLmVhc3RpbmcsYS5ub3J0aGluZyxhLnpvbmVOdW1iZXIpK2Muc3Vic3RyKGMubGVuZ3RoLTUsYikrZC5zdWJzdHIoZC5sZW5ndGgtNSxiKX1mdW5jdGlvbiBqKGEsYixjKXt2YXIgZD1rKGMpLGU9TWF0aC5mbG9vcihhLzFlNSksZj1NYXRoLmZsb29yKGIvMWU1KSUyMDtyZXR1cm4gbChlLGYsZCl9ZnVuY3Rpb24gayhhKXt2YXIgYj1hJXE7cmV0dXJuIDA9PT1iJiYoYj1xKSxifWZ1bmN0aW9uIGwoYSxiLGMpe3ZhciBkPWMtMSxlPXIuY2hhckNvZGVBdChkKSxmPXMuY2hhckNvZGVBdChkKSxnPWUrYS0xLGg9ZitiLGk9ITE7Zz54JiYoZz1nLXgrdC0xLGk9ITApLChnPT09dXx8dT5lJiZnPnV8fChnPnV8fHU+ZSkmJmkpJiZnKyssKGc9PT12fHx2PmUmJmc+dnx8KGc+dnx8dj5lKSYmaSkmJihnKyssZz09PXUmJmcrKyksZz54JiYoZz1nLXgrdC0xKSxoPnc/KGg9aC13K3QtMSxpPSEwKTppPSExLChoPT09dXx8dT5mJiZoPnV8fChoPnV8fHU+ZikmJmkpJiZoKyssKGg9PT12fHx2PmYmJmg+dnx8KGg+dnx8dj5mKSYmaSkmJihoKyssaD09PXUmJmgrKyksaD53JiYoaD1oLXcrdC0xKTt2YXIgaj1TdHJpbmcuZnJvbUNoYXJDb2RlKGcpK1N0cmluZy5mcm9tQ2hhckNvZGUoaCk7cmV0dXJuIGp9ZnVuY3Rpb24gbShhKXtpZihhJiYwPT09YS5sZW5ndGgpdGhyb3ciTUdSU1BvaW50IGNvdmVydGluZyBmcm9tIG5vdGhpbmciO2Zvcih2YXIgYixjPWEubGVuZ3RoLGQ9bnVsbCxlPSIiLGY9MDshL1tBLVpdLy50ZXN0KGI9YS5jaGFyQXQoZikpOyl7aWYoZj49Mil0aHJvdyJNR1JTUG9pbnQgYmFkIGNvbnZlcnNpb24gZnJvbTogIithO2UrPWIsZisrfXZhciBnPXBhcnNlSW50KGUsMTApO2lmKDA9PT1mfHxmKzM+Yyl0aHJvdyJNR1JTUG9pbnQgYmFkIGNvbnZlcnNpb24gZnJvbTogIithO3ZhciBoPWEuY2hhckF0KGYrKyk7aWYoIkEiPj1ofHwiQiI9PT1ofHwiWSI9PT1ofHxoPj0iWiJ8fCJJIj09PWh8fCJPIj09PWgpdGhyb3ciTUdSU1BvaW50IHpvbmUgbGV0dGVyICIraCsiIG5vdCBoYW5kbGVkOiAiK2E7ZD1hLnN1YnN0cmluZyhmLGYrPTIpO2Zvcih2YXIgaT1rKGcpLGo9bihkLmNoYXJBdCgwKSxpKSxsPW8oZC5jaGFyQXQoMSksaSk7bDxwKGgpOylsKz0yZTY7dmFyIG09Yy1mO2lmKG0lMiE9PTApdGhyb3ciTUdSU1BvaW50IGhhcyB0byBoYXZlIGFuIGV2ZW4gbnVtYmVyIFxub2YgZGlnaXRzIGFmdGVyIHRoZSB6b25lIGxldHRlciBhbmQgdHdvIDEwMGttIGxldHRlcnMgLSBmcm9udCBcbmhhbGYgZm9yIGVhc3RpbmcgbWV0ZXJzLCBzZWNvbmQgaGFsZiBmb3IgXG5ub3J0aGluZyBtZXRlcnMiK2E7dmFyIHEscixzLHQsdSx2PW0vMix3PTAseD0wO3JldHVybiB2PjAmJihxPTFlNS9NYXRoLnBvdygxMCx2KSxyPWEuc3Vic3RyaW5nKGYsZit2KSx3PXBhcnNlRmxvYXQocikqcSxzPWEuc3Vic3RyaW5nKGYrdikseD1wYXJzZUZsb2F0KHMpKnEpLHQ9dytqLHU9eCtsLHtlYXN0aW5nOnQsbm9ydGhpbmc6dSx6b25lTGV0dGVyOmgsem9uZU51bWJlcjpnLGFjY3VyYWN5OnF9fWZ1bmN0aW9uIG4oYSxiKXtmb3IodmFyIGM9ci5jaGFyQ29kZUF0KGItMSksZD0xZTUsZT0hMTtjIT09YS5jaGFyQ29kZUF0KDApOyl7aWYoYysrLGM9PT11JiZjKyssYz09PXYmJmMrKyxjPngpe2lmKGUpdGhyb3ciQmFkIGNoYXJhY3RlcjogIithO2M9dCxlPSEwfWQrPTFlNX1yZXR1cm4gZH1mdW5jdGlvbiBvKGEsYil7aWYoYT4iViIpdGhyb3ciTUdSU1BvaW50IGdpdmVuIGludmFsaWQgTm9ydGhpbmcgIithO2Zvcih2YXIgYz1zLmNoYXJDb2RlQXQoYi0xKSxkPTAsZT0hMTtjIT09YS5jaGFyQ29kZUF0KDApOyl7aWYoYysrLGM9PT11JiZjKyssYz09PXYmJmMrKyxjPncpe2lmKGUpdGhyb3ciQmFkIGNoYXJhY3RlcjogIithO2M9dCxlPSEwfWQrPTFlNX1yZXR1cm4gZH1mdW5jdGlvbiBwKGEpe3ZhciBiO3N3aXRjaChhKXtjYXNlIkMiOmI9MTFlNTticmVhaztjYXNlIkQiOmI9MmU2O2JyZWFrO2Nhc2UiRSI6Yj0yOGU1O2JyZWFrO2Nhc2UiRiI6Yj0zN2U1O2JyZWFrO2Nhc2UiRyI6Yj00NmU1O2JyZWFrO2Nhc2UiSCI6Yj01NWU1O2JyZWFrO2Nhc2UiSiI6Yj02NGU1O2JyZWFrO2Nhc2UiSyI6Yj03M2U1O2JyZWFrO2Nhc2UiTCI6Yj04MmU1O2JyZWFrO2Nhc2UiTSI6Yj05MWU1O2JyZWFrO2Nhc2UiTiI6Yj0wO2JyZWFrO2Nhc2UiUCI6Yj04ZTU7YnJlYWs7Y2FzZSJRIjpiPTE3ZTU7YnJlYWs7Y2FzZSJSIjpiPTI2ZTU7YnJlYWs7Y2FzZSJTIjpiPTM1ZTU7YnJlYWs7Y2FzZSJUIjpiPTQ0ZTU7YnJlYWs7Y2FzZSJVIjpiPTUzZTU7YnJlYWs7Y2FzZSJWIjpiPTYyZTU7YnJlYWs7Y2FzZSJXIjpiPTdlNjticmVhaztjYXNlIlgiOmI9NzllNTticmVhaztkZWZhdWx0OmI9LTF9aWYoYj49MClyZXR1cm4gYjt0aHJvdyJJbnZhbGlkIHpvbmUgbGV0dGVyOiAiK2F9dmFyIHE9NixyPSJBSlNBSlMiLHM9IkFGQUZBRiIsdD02NSx1PTczLHY9Nzksdz04Nix4PTkwO2MuZm9yd2FyZD1mdW5jdGlvbihhLGIpe3JldHVybiBiPWJ8fDUsaShmKHtsYXQ6YVsxXSxsb246YVswXX0pLGIpfSxjLmludmVyc2U9ZnVuY3Rpb24oYSl7dmFyIGI9ZyhtKGEudG9VcHBlckNhc2UoKSkpO3JldHVybiBiLmxhdCYmYi5sb24/W2IubG9uLGIubGF0LGIubG9uLGIubGF0XTpbYi5sZWZ0LGIuYm90dG9tLGIucmlnaHQsYi50b3BdfSxjLnRvUG9pbnQ9ZnVuY3Rpb24oYSl7dmFyIGI9ZyhtKGEudG9VcHBlckNhc2UoKSkpO3JldHVybiBiLmxhdCYmYi5sb24/W2IubG9uLGIubGF0XTpbKGIubGVmdCtiLnJpZ2h0KS8yLChiLnRvcCtiLmJvdHRvbSkvMl19fSx7fV0sNjk6W2Z1bmN0aW9uKGEsYixjKXtiLmV4cG9ydHM9e25hbWU6InByb2o0Iix2ZXJzaW9uOiIyLjMuMTUiLGRlc2NyaXB0aW9uOiJQcm9qNGpzIGlzIGEgSmF2YVNjcmlwdCBsaWJyYXJ5IHRvIHRyYW5zZm9ybSBwb2ludCBjb29yZGluYXRlcyBmcm9tIG9uZSBjb29yZGluYXRlIHN5c3RlbSB0byBhbm90aGVyLCBpbmNsdWRpbmcgZGF0dW0gdHJhbnNmb3JtYXRpb25zLiIsbWFpbjoibGliL2luZGV4LmpzIixkaXJlY3Rvcmllczp7dGVzdDoidGVzdCIsZG9jOiJkb2NzIn0sc2NyaXB0czp7dGVzdDoiLi9ub2RlX21vZHVsZXMvaXN0YW5idWwvbGliL2NsaS5qcyB0ZXN0IC4vbm9kZV9tb2R1bGVzL21vY2hhL2Jpbi9fbW9jaGEgdGVzdC90ZXN0LmpzIn0scmVwb3NpdG9yeTp7dHlwZToiZ2l0Iix1cmw6ImdpdDovL2dpdGh1Yi5jb20vcHJvajRqcy9wcm9qNGpzLmdpdCJ9LGF1dGhvcjoiIixsaWNlbnNlOiJNSVQiLGphbTp7bWFpbjoiZGlzdC9wcm9qNC5qcyIsaW5jbHVkZTpbImRpc3QvcHJvajQuanMiLCJSRUFETUUubWQiLCJBVVRIT1JTIiwiTElDRU5TRS5tZCJdfSxkZXZEZXBlbmRlbmNpZXM6eyJncnVudC1jbGkiOiJ+MC4xLjEzIixncnVudDoifjAuNC4yIiwiZ3J1bnQtY29udHJpYi1jb25uZWN0IjoifjAuNi4wIiwiZ3J1bnQtY29udHJpYi1qc2hpbnQiOiJ+MC44LjAiLGNoYWk6In4xLjguMSIsbW9jaGE6In4xLjE3LjEiLCJncnVudC1tb2NoYS1waGFudG9tanMiOiJ+MC40LjAiLGJyb3dzZXJpZnk6In4xMi4wLjEiLCJncnVudC1icm93c2VyaWZ5IjoifjQuMC4xIiwiZ3J1bnQtY29udHJpYi11Z2xpZnkiOiJ+MC4xMS4xIixjdXJsOiJnaXQ6Ly9naXRodWIuY29tL2N1am9qcy9jdXJsLmdpdCIsaXN0YW5idWw6In4wLjIuNCIsdGluOiJ+MC40LjAifSxkZXBlbmRlbmNpZXM6e21ncnM6In4wLjAuMiJ9fX0se31dfSx7fSxbMzZdKSgzNil9KTs="></script>
<link href="data:text/css,%2Eloading%20%7Bmargin%2Dtop%3A%2010em%3Btext%2Dalign%3A%20center%3Bcolor%3A%20gray%3B%7D%23play%2Dcontrols%20%7Bposition%3A%20absolute%3Bbottom%3A%200%3Btext%2Dalign%3A%20center%3Bmin%2Dwidth%3A%20310px%3Bmax%2Dwidth%3A%20800px%3Bmargin%3A%200%20auto%3Bpadding%3A%205px%200%201em%200%3B%7D%23play%2Dcontrols%20%2A%20%7Bdisplay%3A%20inline%2Dblock%3Bvertical%2Dalign%3A%20middle%3B%7D%23play%2Dpause%2Dbutton%20%7Bcolor%3A%20%23666666%3Bwidth%3A%2030px%3Bheight%3A%2030px%3Btext%2Dalign%3A%20center%3Bfont%2Dsize%3A%2015px%3Bcursor%3A%20pointer%3Bborder%3A%201px%20solid%20silver%3Bborder%2Dradius%3A%203px%3Bbackground%3A%20%23f8f8f8%3B%7D%23play%2Drange%20%7Bmargin%3A%202%2E5%25%3Bwidth%3A%2070%25%3B%7D%23play%2Doutput%20%7Bcolor%3A%20%23666666%3Bfont%2Dfamily%3A%20Arial%2C%20Helvetica%2C%20sans%2Dserif%3B%7D" rel="stylesheet" />
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIChjKSAyMDA5LTIwMTggVG9yc3RlaW4gSG9uc2kKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24oVCxPKXsib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzPyhPWyJkZWZhdWx0Il09Tyxtb2R1bGUuZXhwb3J0cz1ULmRvY3VtZW50P08oVCk6Tyk6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL2hpZ2hjaGFydHMiLGZ1bmN0aW9uKCl7cmV0dXJuIE8oVCl9KTooVC5IaWdoY2hhcnRzJiZULkhpZ2hjaGFydHMuZXJyb3IoMTYsITApLFQuSGlnaGNoYXJ0cz1PKFQpKX0pKCJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihUKXtmdW5jdGlvbiBPKGcsYyxSLHkpe2cuaGFzT3duUHJvcGVydHkoYyl8fChnW2NdPXkuYXBwbHkobnVsbCxSKSl9dmFyIHE9e307TyhxLCJwYXJ0cy9HbG9iYWxzLmpzIixbXSxmdW5jdGlvbigpe3ZhciBnPSJ1bmRlZmluZWQiIT09dHlwZW9mIFQ/VDoidW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3c/d2luZG93Ont9LGM9Zy5kb2N1bWVudCwKUj1nLm5hdmlnYXRvciYmZy5uYXZpZ2F0b3IudXNlckFnZW50fHwiIix5PWMmJmMuY3JlYXRlRWxlbWVudE5TJiYhIWMuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInN2ZyIpLmNyZWF0ZVNWR1JlY3QscT0vKGVkZ2V8bXNpZXx0cmlkZW50KS9pLnRlc3QoUikmJiFnLm9wZXJhLEg9LTEhPT1SLmluZGV4T2YoIkZpcmVmb3giKSxEPS0xIT09Ui5pbmRleE9mKCJDaHJvbWUiKSxKPUgmJjQ+cGFyc2VJbnQoUi5zcGxpdCgiRmlyZWZveC8iKVsxXSwxMCk7cmV0dXJue3Byb2R1Y3Q6IkhpZ2hjaGFydHMiLHZlcnNpb246IjguMS4yIixkZWcycmFkOjIqTWF0aC5QSS8zNjAsZG9jOmMsaGFzQmlkaUJ1ZzpKLGhhc1RvdWNoOiEhZy5Ub3VjaEV2ZW50LGlzTVM6cSxpc1dlYktpdDotMSE9PVIuaW5kZXhPZigiQXBwbGVXZWJLaXQiKSxpc0ZpcmVmb3g6SCxpc0Nocm9tZTpELGlzU2FmYXJpOiFEJiYtMSE9PVIuaW5kZXhPZigiU2FmYXJpIiksaXNUb3VjaERldmljZTovKE1vYmlsZXxBbmRyb2lkfFdpbmRvd3MgUGhvbmUpLy50ZXN0KFIpLApTVkdfTlM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGFydENvdW50OjAsc2VyaWVzVHlwZXM6e30sc3ltYm9sU2l6ZXM6e30sc3ZnOnksd2luOmcsbWFyZ2luTmFtZXM6WyJwbG90VG9wIiwibWFyZ2luUmlnaHQiLCJtYXJnaW5Cb3R0b20iLCJwbG90TGVmdCJdLG5vb3A6ZnVuY3Rpb24oKXt9LGNoYXJ0czpbXSxkYXRlRm9ybWF0czp7fX19KTtPKHEsInBhcnRzL1V0aWxpdGllcy5qcyIsW3FbInBhcnRzL0dsb2JhbHMuanMiXV0sZnVuY3Rpb24oZyl7ZnVuY3Rpb24gYyhiLGgsZSx6KXt2YXIgYT1oPyJIaWdoY2hhcnRzIGVycm9yIjoiSGlnaGNoYXJ0cyB3YXJuaW5nIjszMj09PWImJihiPWErIjogRGVwcmVjYXRlZCBtZW1iZXIiKTt2YXIgeD1JKGIpLGY9eD9hKyIgIyIrYisiOiB3d3cuaGlnaGNoYXJ0cy5jb20vZXJyb3JzLyIrYisiLyI6Yi50b1N0cmluZygpO2E9ZnVuY3Rpb24oKXtpZihoKXRocm93IEVycm9yKGYpO0cuY29uc29sZSYmLTE9PT1jLm1lc3NhZ2VzLmluZGV4T2YoZikmJgpjb25zb2xlLmxvZyhmKX07aWYoInVuZGVmaW5lZCIhPT10eXBlb2Ygeil7dmFyIGQ9IiI7eCYmKGYrPSI/Iik7Vyh6LGZ1bmN0aW9uKGIsaCl7ZCs9IlxuIC0gIitoKyI6ICIrYjt4JiYoZis9ZW5jb2RlVVJJKGgpKyI9IitlbmNvZGVVUkkoYikpfSk7Zis9ZH1lP2RhKGUsImRpc3BsYXlFcnJvciIse2NvZGU6YixtZXNzYWdlOmYscGFyYW1zOnp9LGEpOmEoKTtjLm1lc3NhZ2VzLnB1c2goZil9ZnVuY3Rpb24gUigpe3ZhciBiLGg9YXJndW1lbnRzLGU9e30sej1mdW5jdGlvbihiLGgpeyJvYmplY3QiIT09dHlwZW9mIGImJihiPXt9KTtXKGgsZnVuY3Rpb24oZSxhKXsheShlLCEwKXx8QyhlKXx8cihlKT9iW2FdPWhbYV06YlthXT16KGJbYV18fHt9LGUpfSk7cmV0dXJuIGJ9OyEwPT09aFswXSYmKGU9aFsxXSxoPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGgsMikpO3ZhciBhPWgubGVuZ3RoO2ZvcihiPTA7YjxhO2IrKyllPXooZSxoW2JdKTtyZXR1cm4gZX1mdW5jdGlvbiB5KGIsCmgpe3JldHVybiEhYiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKCFofHwhbihiKSl9ZnVuY3Rpb24gcShiLGgsZSl7dmFyIGE7SyhoKT9tKGUpP2Iuc2V0QXR0cmlidXRlKGgsZSk6YiYmYi5nZXRBdHRyaWJ1dGUmJigoYT1iLmdldEF0dHJpYnV0ZShoKSl8fCJjbGFzcyIhPT1ofHwoYT1iLmdldEF0dHJpYnV0ZShoKyJOYW1lIikpKTpXKGgsZnVuY3Rpb24oaCxlKXtiLnNldEF0dHJpYnV0ZShlLGgpfSk7cmV0dXJuIGF9ZnVuY3Rpb24gSCgpe2Zvcih2YXIgYj1hcmd1bWVudHMsaD1iLmxlbmd0aCxlPTA7ZTxoO2UrKyl7dmFyIGE9YltlXTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBhJiZudWxsIT09YSlyZXR1cm4gYX19ZnVuY3Rpb24gRChiLGgpe2lmKCFiKXJldHVybiBoO3ZhciBlPWIuc3BsaXQoIi4iKS5yZXZlcnNlKCk7aWYoMT09PWUubGVuZ3RoKXJldHVybiBoW2JdO2ZvcihiPWUucG9wKCk7InVuZGVmaW5lZCIhPT10eXBlb2YgYiYmInVuZGVmaW5lZCIhPT10eXBlb2YgaCYmbnVsbCE9PQpoOyloPWhbYl0sYj1lLnBvcCgpO3JldHVybiBofWcudGltZXJzPVtdO3ZhciBKPWcuY2hhcnRzLHQ9Zy5kb2MsRz1nLndpbjsoY3x8KGM9e30pKS5tZXNzYWdlcz1bXTtnLmVycm9yPWM7dmFyIEw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBiKGIsaCxlKXt0aGlzLm9wdGlvbnM9aDt0aGlzLmVsZW09Yjt0aGlzLnByb3A9ZX1iLnByb3RvdHlwZS5kU2V0dGVyPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5wYXRocyxoPWImJmJbMF07Yj1iJiZiWzFdO3ZhciBlPVtdLGE9dGhpcy5ub3d8fDA7aWYoMSE9PWEmJmgmJmIpaWYoaC5sZW5ndGg9PT1iLmxlbmd0aCYmMT5hKWZvcih2YXIgej0wO3o8Yi5sZW5ndGg7eisrKXtmb3IodmFyIHg9aFt6XSxmPWJbel0sZD1bXSxrPTA7azxmLmxlbmd0aDtrKyspe3ZhciBOPXhba10sbD1mW2tdO2Rba109Im51bWJlciI9PT10eXBlb2YgTiYmIm51bWJlciI9PT10eXBlb2YgbCYmKCJBIiE9PWZbMF18fDQhPT1rJiY1IT09ayk/TithKihsLU4pOmx9ZS5wdXNoKGQpfWVsc2UgZT0KYjtlbHNlIGU9dGhpcy50b0R8fFtdO3RoaXMuZWxlbS5hdHRyKCJkIixlLHZvaWQgMCwhMCl9O2IucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbigpe3ZhciBiPXRoaXMuZWxlbSxoPXRoaXMucHJvcCxlPXRoaXMubm93LGE9dGhpcy5vcHRpb25zLnN0ZXA7aWYodGhpc1toKyJTZXR0ZXIiXSl0aGlzW2grIlNldHRlciJdKCk7ZWxzZSBiLmF0dHI/Yi5lbGVtZW50JiZiLmF0dHIoaCxlLG51bGwsITApOmIuc3R5bGVbaF09ZSt0aGlzLnVuaXQ7YSYmYS5jYWxsKGIsZSx0aGlzKX07Yi5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKGIsaCxlKXt2YXIgYT10aGlzLHo9YS5vcHRpb25zLHg9ZnVuY3Rpb24oYil7cmV0dXJuIHguc3RvcHBlZD8hMTphLnN0ZXAoYil9LGY9Ry5yZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fGZ1bmN0aW9uKGIpe3NldFRpbWVvdXQoYiwxMyl9LGQ9ZnVuY3Rpb24oKXtmb3IodmFyIGI9MDtiPGcudGltZXJzLmxlbmd0aDtiKyspZy50aW1lcnNbYl0oKXx8Zy50aW1lcnMuc3BsaWNlKGItLSwKMSk7Zy50aW1lcnMubGVuZ3RoJiZmKGQpfTtiIT09aHx8dGhpcy5lbGVtWyJmb3JjZUFuaW1hdGU6Iit0aGlzLnByb3BdPyh0aGlzLnN0YXJ0VGltZT0rbmV3IERhdGUsdGhpcy5zdGFydD1iLHRoaXMuZW5kPWgsdGhpcy51bml0PWUsdGhpcy5ub3c9dGhpcy5zdGFydCx0aGlzLnBvcz0wLHguZWxlbT10aGlzLmVsZW0seC5wcm9wPXRoaXMucHJvcCx4KCkmJjE9PT1nLnRpbWVycy5wdXNoKHgpJiZmKGQpKTooZGVsZXRlIHouY3VyQW5pbVt0aGlzLnByb3BdLHouY29tcGxldGUmJjA9PT1PYmplY3Qua2V5cyh6LmN1ckFuaW0pLmxlbmd0aCYmei5jb21wbGV0ZS5jYWxsKHRoaXMuZWxlbSkpfTtiLnByb3RvdHlwZS5zdGVwPWZ1bmN0aW9uKGIpe3ZhciBoPStuZXcgRGF0ZSxlPXRoaXMub3B0aW9ucyxhPXRoaXMuZWxlbSx6PWUuY29tcGxldGUseD1lLmR1cmF0aW9uLGY9ZS5jdXJBbmltO2lmKGEuYXR0ciYmIWEuZWxlbWVudCliPSExO2Vsc2UgaWYoYnx8aD49eCt0aGlzLnN0YXJ0VGltZSl7dGhpcy5ub3c9CnRoaXMuZW5kO3RoaXMucG9zPTE7dGhpcy51cGRhdGUoKTt2YXIgZD1mW3RoaXMucHJvcF09ITA7VyhmLGZ1bmN0aW9uKGIpeyEwIT09YiYmKGQ9ITEpfSk7ZCYmeiYmei5jYWxsKGEpO2I9ITF9ZWxzZSB0aGlzLnBvcz1lLmVhc2luZygoaC10aGlzLnN0YXJ0VGltZSkveCksdGhpcy5ub3c9dGhpcy5zdGFydCsodGhpcy5lbmQtdGhpcy5zdGFydCkqdGhpcy5wb3MsdGhpcy51cGRhdGUoKSxiPSEwO3JldHVybiBifTtiLnByb3RvdHlwZS5pbml0UGF0aD1mdW5jdGlvbihiLGgsZSl7ZnVuY3Rpb24gYShiLGgpe2Zvcig7Yi5sZW5ndGg8dTspe3ZhciBlPWJbMF0sYT1oW3UtYi5sZW5ndGhdO2EmJiJNIj09PWVbMF0mJihiWzBdPSJDIj09PWFbMF0/WyJDIixlWzFdLGVbMl0sZVsxXSxlWzJdLGVbMV0sZVsyXV06WyJMIixlWzFdLGVbMl1dKTtiLnVuc2hpZnQoZSk7ZCYmYi5wdXNoKGJbYi5sZW5ndGgtMV0pfX1mdW5jdGlvbiB6KGIsaCl7Zm9yKDtiLmxlbmd0aDx1OylpZihoPWJbYi5sZW5ndGgvCmstMV0uc2xpY2UoKSwiQyI9PT1oWzBdJiYoaFsxXT1oWzVdLGhbMl09aFs2XSksZCl7dmFyIGU9YltiLmxlbmd0aC9rXS5zbGljZSgpO2Iuc3BsaWNlKGIubGVuZ3RoLzIsMCxoLGUpfWVsc2UgYi5wdXNoKGgpfXZhciB4PWIuc3RhcnRYLGY9Yi5lbmRYO2g9aCYmaC5zbGljZSgpO2U9ZS5zbGljZSgpO3ZhciBkPWIuaXNBcmVhLGs9ZD8yOjE7aWYoIWgpcmV0dXJuW2UsZV07aWYoeCYmZil7Zm9yKGI9MDtiPHgubGVuZ3RoO2IrKylpZih4W2JdPT09ZlswXSl7dmFyIE49YjticmVha31lbHNlIGlmKHhbMF09PT1mW2YubGVuZ3RoLXgubGVuZ3RoK2JdKXtOPWI7dmFyIGw9ITA7YnJlYWt9ZWxzZSBpZih4W3gubGVuZ3RoLTFdPT09ZltmLmxlbmd0aC14Lmxlbmd0aCtiXSl7Tj14Lmxlbmd0aC1iO2JyZWFrfSJ1bmRlZmluZWQiPT09dHlwZW9mIE4mJihoPVtdKX1pZihoLmxlbmd0aCYmSShOKSl7dmFyIHU9ZS5sZW5ndGgrTiprO2w/KGEoaCxlKSx6KGUsaCkpOihhKGUsaCkseihoLGUpKX1yZXR1cm5baCwKZV19O2IucHJvdG90eXBlLmZpbGxTZXR0ZXI9ZnVuY3Rpb24oKXtiLnByb3RvdHlwZS5zdHJva2VTZXR0ZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtiLnByb3RvdHlwZS5zdHJva2VTZXR0ZXI9ZnVuY3Rpb24oKXt0aGlzLmVsZW0uYXR0cih0aGlzLnByb3AsZy5jb2xvcih0aGlzLnN0YXJ0KS50d2VlblRvKGcuY29sb3IodGhpcy5lbmQpLHRoaXMucG9zKSxudWxsLCEwKX07cmV0dXJuIGJ9KCk7Zy5GeD1MO2cubWVyZ2U9Ujt2YXIgdj1nLnBJbnQ9ZnVuY3Rpb24oYixoKXtyZXR1cm4gcGFyc2VJbnQoYixofHwxMCl9LEs9Zy5pc1N0cmluZz1mdW5jdGlvbihiKXtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBifSxuPWcuaXNBcnJheT1mdW5jdGlvbihiKXtiPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChiKTtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09Ynx8IltvYmplY3QgQXJyYXkgSXRlcmF0b3JdIj09PWJ9O2cuaXNPYmplY3Q9eTt2YXIgcj1nLmlzRE9NRWxlbWVudD1mdW5jdGlvbihiKXtyZXR1cm4geShiKSYmCiJudW1iZXIiPT09dHlwZW9mIGIubm9kZVR5cGV9LEM9Zy5pc0NsYXNzPWZ1bmN0aW9uKGIpe3ZhciBoPWImJmIuY29uc3RydWN0b3I7cmV0dXJuISgheShiLCEwKXx8cihiKXx8IWh8fCFoLm5hbWV8fCJPYmplY3QiPT09aC5uYW1lKX0sST1nLmlzTnVtYmVyPWZ1bmN0aW9uKGIpe3JldHVybiJudW1iZXIiPT09dHlwZW9mIGImJiFpc05hTihiKSYmSW5maW5pdHk+YiYmLUluZmluaXR5PGJ9LHA9Zy5lcmFzZT1mdW5jdGlvbihiLGgpe2Zvcih2YXIgZT1iLmxlbmd0aDtlLS07KWlmKGJbZV09PT1oKXtiLnNwbGljZShlLDEpO2JyZWFrfX0sbT1nLmRlZmluZWQ9ZnVuY3Rpb24oYil7cmV0dXJuInVuZGVmaW5lZCIhPT10eXBlb2YgYiYmbnVsbCE9PWJ9O2cuYXR0cj1xO3ZhciBkPWcuc3BsYXQ9ZnVuY3Rpb24oYil7cmV0dXJuIG4oYik/YjpbYl19LGw9Zy5zeW5jVGltZW91dD1mdW5jdGlvbihiLGgsZSl7aWYoMDxoKXJldHVybiBzZXRUaW1lb3V0KGIsaCxlKTtiLmNhbGwoMCxlKTtyZXR1cm4tMX0sCms9Zy5jbGVhclRpbWVvdXQ9ZnVuY3Rpb24oYil7bShiKSYmY2xlYXJUaW1lb3V0KGIpfSxmPWcuZXh0ZW5kPWZ1bmN0aW9uKGIsaCl7dmFyIGU7Ynx8KGI9e30pO2ZvcihlIGluIGgpYltlXT1oW2VdO3JldHVybiBifTtnLnBpY2s9SDt2YXIgYT1nLmNzcz1mdW5jdGlvbihiLGgpe2cuaXNNUyYmIWcuc3ZnJiZoJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBoLm9wYWNpdHkmJihoLmZpbHRlcj0iYWxwaGEob3BhY2l0eT0iKzEwMCpoLm9wYWNpdHkrIikiKTtmKGIuc3R5bGUsaCl9LEE9Zy5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGIsaCxlLHoseCl7Yj10LmNyZWF0ZUVsZW1lbnQoYik7aCYmZihiLGgpO3gmJmEoYix7cGFkZGluZzoiMCIsYm9yZGVyOiJub25lIixtYXJnaW46IjAifSk7ZSYmYShiLGUpO3omJnouYXBwZW5kQ2hpbGQoYik7cmV0dXJuIGJ9LHU9Zy5leHRlbmRDbGFzcz1mdW5jdGlvbihiLGgpe3ZhciBlPWZ1bmN0aW9uKCl7fTtlLnByb3RvdHlwZT1uZXcgYjtmKGUucHJvdG90eXBlLApoKTtyZXR1cm4gZX0sRT1nLnBhZD1mdW5jdGlvbihiLGgsZSl7cmV0dXJuIEFycmF5KChofHwyKSsxLVN0cmluZyhiKS5yZXBsYWNlKCItIiwiIikubGVuZ3RoKS5qb2luKGV8fCIwIikrYn0sUD1nLnJlbGF0aXZlTGVuZ3RoPWZ1bmN0aW9uKGIsaCxlKXtyZXR1cm4vJSQvLnRlc3QoYik/aCpwYXJzZUZsb2F0KGIpLzEwMCsoZXx8MCk6cGFyc2VGbG9hdChiKX0sdz1nLndyYXA9ZnVuY3Rpb24oYixoLGUpe3ZhciBhPWJbaF07YltoXT1mdW5jdGlvbigpe3ZhciBiPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyksaD1hcmd1bWVudHMsej10aGlzO3oucHJvY2VlZD1mdW5jdGlvbigpe2EuYXBwbHkoeixhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50czpoKX07Yi51bnNoaWZ0KGEpO2I9ZS5hcHBseSh0aGlzLGIpO3oucHJvY2VlZD1udWxsO3JldHVybiBifX0sTT1nLmZvcm1hdD1mdW5jdGlvbihiLGgsZSl7dmFyIGE9InsiLHo9ITEseD1bXSxmPS9mJC8sZD0vXC4oWzAtOV0pLywKaz1nLmRlZmF1bHRPcHRpb25zLmxhbmcsTj1lJiZlLnRpbWV8fGcudGltZTtmb3IoZT1lJiZlLm51bWJlckZvcm1hdHRlcnx8WTtiOyl7dmFyIGw9Yi5pbmRleE9mKGEpO2lmKC0xPT09bClicmVhazt2YXIgdT1iLnNsaWNlKDAsbCk7aWYoeil7dT11LnNwbGl0KCI6Iik7YT1EKHUuc2hpZnQoKXx8IiIsaCk7aWYodS5sZW5ndGgmJiJudW1iZXIiPT09dHlwZW9mIGEpaWYodT11LmpvaW4oIjoiKSxmLnRlc3QodSkpe3ZhciBtPXBhcnNlSW50KCh1Lm1hdGNoKGQpfHxbIiIsIi0xIl0pWzFdLDEwKTtudWxsIT09YSYmKGE9ZShhLG0say5kZWNpbWFsUG9pbnQsLTE8dS5pbmRleE9mKCIsIik/ay50aG91c2FuZHNTZXA6IiIpKX1lbHNlIGE9Ti5kYXRlRm9ybWF0KHUsYSk7eC5wdXNoKGEpfWVsc2UgeC5wdXNoKHUpO2I9Yi5zbGljZShsKzEpO2E9KHo9IXopPyJ9IjoieyJ9eC5wdXNoKGIpO3JldHVybiB4LmpvaW4oIiIpfSxGPWcuZ2V0TWFnbml0dWRlPWZ1bmN0aW9uKGIpe3JldHVybiBNYXRoLnBvdygxMCwKTWF0aC5mbG9vcihNYXRoLmxvZyhiKS9NYXRoLkxOMTApKX0sUT1nLm5vcm1hbGl6ZVRpY2tJbnRlcnZhbD1mdW5jdGlvbihiLGgsZSxhLHope3ZhciB4PWI7ZT1IKGUsMSk7dmFyIGY9Yi9lO2h8fChoPXo/WzEsMS4yLDEuNSwyLDIuNSwzLDQsNSw2LDgsMTBdOlsxLDIsMi41LDUsMTBdLCExPT09YSYmKDE9PT1lP2g9aC5maWx0ZXIoZnVuY3Rpb24oYil7cmV0dXJuIDA9PT1iJTF9KTouMT49ZSYmKGg9WzEvZV0pKSk7Zm9yKGE9MDthPGgubGVuZ3RoJiYhKHg9aFthXSx6JiZ4KmU+PWJ8fCF6JiZmPD0oaFthXSsoaFthKzFdfHxoW2FdKSkvMik7YSsrKTtyZXR1cm4geD1OKHgqZSwtTWF0aC5yb3VuZChNYXRoLmxvZyguMDAxKS9NYXRoLkxOMTApKX0sZT1nLnN0YWJsZVNvcnQ9ZnVuY3Rpb24oYixoKXt2YXIgZT1iLmxlbmd0aCxhLHo7Zm9yKHo9MDt6PGU7eisrKWJbel0uc2FmZUk9ejtiLnNvcnQoZnVuY3Rpb24oYixlKXthPWgoYixlKTtyZXR1cm4gMD09PWE/Yi5zYWZlSS1lLnNhZmVJOgphfSk7Zm9yKHo9MDt6PGU7eisrKWRlbGV0ZSBiW3pdLnNhZmVJfSxiPWcuYXJyYXlNaW49ZnVuY3Rpb24oYil7Zm9yKHZhciBoPWIubGVuZ3RoLGU9YlswXTtoLS07KWJbaF08ZSYmKGU9YltoXSk7cmV0dXJuIGV9LGg9Zy5hcnJheU1heD1mdW5jdGlvbihiKXtmb3IodmFyIGg9Yi5sZW5ndGgsZT1iWzBdO2gtLTspYltoXT5lJiYoZT1iW2hdKTtyZXR1cm4gZX0sej1nLmRlc3Ryb3lPYmplY3RQcm9wZXJ0aWVzPWZ1bmN0aW9uKGIsaCl7VyhiLGZ1bmN0aW9uKGUsYSl7ZSYmZSE9PWgmJmUuZGVzdHJveSYmZS5kZXN0cm95KCk7ZGVsZXRlIGJbYV19KX0seD1nLmRpc2NhcmRFbGVtZW50PWZ1bmN0aW9uKGIpe3ZhciBoPWcuZ2FyYmFnZUJpbjtofHwoaD1BKCJkaXYiKSk7YiYmaC5hcHBlbmRDaGlsZChiKTtoLmlubmVySFRNTD0iIn0sTj1nLmNvcnJlY3RGbG9hdD1mdW5jdGlvbihiLGgpe3JldHVybiBwYXJzZUZsb2F0KGIudG9QcmVjaXNpb24oaHx8MTQpKX0sYWE9Zy5zZXRBbmltYXRpb249CmZ1bmN0aW9uKGIsaCl7aC5yZW5kZXJlci5nbG9iYWxBbmltYXRpb249SChiLGgub3B0aW9ucy5jaGFydC5hbmltYXRpb24sITApfSxaPWcuYW5pbU9iamVjdD1mdW5jdGlvbihiKXtyZXR1cm4geShiKT9SKGIpOntkdXJhdGlvbjpiPzUwMDowfX0sVj1nLnRpbWVVbml0cz17bWlsbGlzZWNvbmQ6MSxzZWNvbmQ6MUUzLG1pbnV0ZTo2RTQsaG91cjozNkU1LGRheTo4NjRFNSx3ZWVrOjYwNDhFNSxtb250aDoyNDE5MkU1LHllYXI6MzE0NDk2RTV9LFk9Zy5udW1iZXJGb3JtYXQ9ZnVuY3Rpb24oYixoLGUsYSl7Yj0rYnx8MDtoPStoO3ZhciB6PWcuZGVmYXVsdE9wdGlvbnMubGFuZyx4PShiLnRvU3RyaW5nKCkuc3BsaXQoIi4iKVsxXXx8IiIpLnNwbGl0KCJlIilbMF0ubGVuZ3RoLGY9Yi50b1N0cmluZygpLnNwbGl0KCJlIik7aWYoLTE9PT1oKWg9TWF0aC5taW4oeCwyMCk7ZWxzZSBpZighSShoKSloPTI7ZWxzZSBpZihoJiZmWzFdJiYwPmZbMV0pe3ZhciBkPWgrICtmWzFdOzA8PWQ/KGZbMF09CigrZlswXSkudG9FeHBvbmVudGlhbChkKS5zcGxpdCgiZSIpWzBdLGg9ZCk6KGZbMF09ZlswXS5zcGxpdCgiLiIpWzBdfHwwLGI9MjA+aD8oZlswXSpNYXRoLnBvdygxMCxmWzFdKSkudG9GaXhlZChoKTowLGZbMV09MCl9dmFyIGs9KE1hdGguYWJzKGZbMV0/ZlswXTpiKStNYXRoLnBvdygxMCwtTWF0aC5tYXgoaCx4KS0xKSkudG9GaXhlZChoKTt4PVN0cmluZyh2KGspKTtkPTM8eC5sZW5ndGg/eC5sZW5ndGglMzowO2U9SChlLHouZGVjaW1hbFBvaW50KTthPUgoYSx6LnRob3VzYW5kc1NlcCk7Yj0oMD5iPyItIjoiIikrKGQ/eC5zdWJzdHIoMCxkKSthOiIiKTtiKz14LnN1YnN0cihkKS5yZXBsYWNlKC8oXGR7M30pKD89XGQpL2csIiQxIithKTtoJiYoYis9ZStrLnNsaWNlKC1oKSk7ZlsxXSYmMCE9PStiJiYoYis9ImUiK2ZbMV0pO3JldHVybiBifTtNYXRoLmVhc2VJbk91dFNpbmU9ZnVuY3Rpb24oYil7cmV0dXJuLS41KihNYXRoLmNvcyhNYXRoLlBJKmIpLTEpfTt2YXIgYmE9Zy5nZXRTdHlsZT0KZnVuY3Rpb24oYixoLGUpe2lmKCJ3aWR0aCI9PT1oKXJldHVybiBoPU1hdGgubWluKGIub2Zmc2V0V2lkdGgsYi5zY3JvbGxXaWR0aCksZT1iLmdldEJvdW5kaW5nQ2xpZW50UmVjdCYmYi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCxlPGgmJmU+PWgtMSYmKGg9TWF0aC5mbG9vcihlKSksTWF0aC5tYXgoMCxoLWcuZ2V0U3R5bGUoYiwicGFkZGluZy1sZWZ0IiktZy5nZXRTdHlsZShiLCJwYWRkaW5nLXJpZ2h0IikpO2lmKCJoZWlnaHQiPT09aClyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLm1pbihiLm9mZnNldEhlaWdodCxiLnNjcm9sbEhlaWdodCktZy5nZXRTdHlsZShiLCJwYWRkaW5nLXRvcCIpLWcuZ2V0U3R5bGUoYiwicGFkZGluZy1ib3R0b20iKSk7Ry5nZXRDb21wdXRlZFN0eWxlfHxjKDI3LCEwKTtpZihiPUcuZ2V0Q29tcHV0ZWRTdHlsZShiLHZvaWQgMCkpYj1iLmdldFByb3BlcnR5VmFsdWUoaCksSChlLCJvcGFjaXR5IiE9PWgpJiYoYj12KGIpKTtyZXR1cm4gYn0sClU9Zy5pbkFycmF5PWZ1bmN0aW9uKGIsaCxlKXtjKDMyLCExLHZvaWQgMCx7IkhpZ2hjaGFydHMuaW5BcnJheSI6InVzZSBBcnJheS5pbmRleE9mIn0pO3JldHVybiBoLmluZGV4T2YoYixlKX0sWD1nLmZpbmQ9QXJyYXkucHJvdG90eXBlLmZpbmQ/ZnVuY3Rpb24oYixoKXtyZXR1cm4gYi5maW5kKGgpfTpmdW5jdGlvbihiLGgpe3ZhciBlLGE9Yi5sZW5ndGg7Zm9yKGU9MDtlPGE7ZSsrKWlmKGgoYltlXSxlKSlyZXR1cm4gYltlXX07Zy5rZXlzPWZ1bmN0aW9uKGIpe2MoMzIsITEsdm9pZCAwLHsiSGlnaGNoYXJ0cy5rZXlzIjoidXNlIE9iamVjdC5rZXlzIn0pO3JldHVybiBPYmplY3Qua2V5cyhiKX07dmFyIGlhPWcub2Zmc2V0PWZ1bmN0aW9uKGIpe3ZhciBoPXQuZG9jdW1lbnRFbGVtZW50O2I9Yi5wYXJlbnRFbGVtZW50fHxiLnBhcmVudE5vZGU/Yi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTp7dG9wOjAsbGVmdDowfTtyZXR1cm57dG9wOmIudG9wKyhHLnBhZ2VZT2Zmc2V0fHxoLnNjcm9sbFRvcCktCihoLmNsaWVudFRvcHx8MCksbGVmdDpiLmxlZnQrKEcucGFnZVhPZmZzZXR8fGguc2Nyb2xsTGVmdCktKGguY2xpZW50TGVmdHx8MCl9fSxTPWcuc3RvcD1mdW5jdGlvbihiLGgpe2Zvcih2YXIgZT1nLnRpbWVycy5sZW5ndGg7ZS0tOylnLnRpbWVyc1tlXS5lbGVtIT09Ynx8aCYmaCE9PWcudGltZXJzW2VdLnByb3B8fChnLnRpbWVyc1tlXS5zdG9wcGVkPSEwKX0sVz1nLm9iamVjdEVhY2g9ZnVuY3Rpb24oYixoLGUpe2Zvcih2YXIgYSBpbiBiKU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsYSkmJmguY2FsbChlfHxiW2FdLGJbYV0sYSxiKX07Vyh7bWFwOiJtYXAiLGVhY2g6ImZvckVhY2giLGdyZXA6ImZpbHRlciIscmVkdWNlOiJyZWR1Y2UiLHNvbWU6InNvbWUifSxmdW5jdGlvbihiLGgpe2dbaF09ZnVuY3Rpb24oZSl7dmFyIGE7YygzMiwhMSx2b2lkIDAsKGE9e30sYVsiSGlnaGNoYXJ0cy4iK2hdPSJ1c2UgQXJyYXkuIitiLGEpKTtyZXR1cm4gQXJyYXkucHJvdG90eXBlW2JdLmFwcGx5KGUsCltdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKX19KTt2YXIgamE9Zy5hZGRFdmVudD1mdW5jdGlvbihiLGgsZSxhKXt2b2lkIDA9PT1hJiYoYT17fSk7dmFyIHo9Yi5hZGRFdmVudExpc3RlbmVyfHxnLmFkZEV2ZW50TGlzdGVuZXJQb2x5ZmlsbDt2YXIgeD0iZnVuY3Rpb24iPT09dHlwZW9mIGImJmIucHJvdG90eXBlP2IucHJvdG90eXBlLnByb3RvRXZlbnRzPWIucHJvdG90eXBlLnByb3RvRXZlbnRzfHx7fTpiLmhjRXZlbnRzPWIuaGNFdmVudHN8fHt9O2cuUG9pbnQmJmIgaW5zdGFuY2VvZiBnLlBvaW50JiZiLnNlcmllcyYmYi5zZXJpZXMuY2hhcnQmJihiLnNlcmllcy5jaGFydC5ydW5UcmFja2VyQ2xpY2s9ITApO3omJnouY2FsbChiLGgsZSwhMSk7eFtoXXx8KHhbaF09W10pO3hbaF0ucHVzaCh7Zm46ZSxvcmRlcjoibnVtYmVyIj09PXR5cGVvZiBhLm9yZGVyP2Eub3JkZXI6SW5maW5pdHl9KTt4W2hdLnNvcnQoZnVuY3Rpb24oYixoKXtyZXR1cm4gYi5vcmRlci1oLm9yZGVyfSk7CnJldHVybiBmdW5jdGlvbigpe2VhKGIsaCxlKX19LGVhPWcucmVtb3ZlRXZlbnQ9ZnVuY3Rpb24oYixoLGUpe2Z1bmN0aW9uIGEoaCxlKXt2YXIgYT1iLnJlbW92ZUV2ZW50TGlzdGVuZXJ8fGcucmVtb3ZlRXZlbnRMaXN0ZW5lclBvbHlmaWxsO2EmJmEuY2FsbChiLGgsZSwhMSl9ZnVuY3Rpb24geihlKXt2YXIgejtpZihiLm5vZGVOYW1lKXtpZihoKXt2YXIgeD17fTt4W2hdPSEwfWVsc2UgeD1lO1coeCxmdW5jdGlvbihiLGgpe2lmKGVbaF0pZm9yKHo9ZVtoXS5sZW5ndGg7ei0tOylhKGgsZVtoXVt6XS5mbil9KX19dmFyIHg7WyJwcm90b0V2ZW50cyIsImhjRXZlbnRzIl0uZm9yRWFjaChmdW5jdGlvbihmLGQpe3ZhciBrPShkPWQ/YjpiLnByb3RvdHlwZSkmJmRbZl07ayYmKGg/KHg9a1toXXx8W10sZT8oa1toXT14LmZpbHRlcihmdW5jdGlvbihiKXtyZXR1cm4gZSE9PWIuZm59KSxhKGgsZSkpOih6KGspLGtbaF09W10pKTooeihrKSxkW2ZdPXt9KSl9KX0sZGE9Zy5maXJlRXZlbnQ9CmZ1bmN0aW9uKGIsaCxlLGEpe3ZhciB6O2U9ZXx8e307aWYodC5jcmVhdGVFdmVudCYmKGIuZGlzcGF0Y2hFdmVudHx8Yi5maXJlRXZlbnQpKXt2YXIgeD10LmNyZWF0ZUV2ZW50KCJFdmVudHMiKTt4LmluaXRFdmVudChoLCEwLCEwKTtmKHgsZSk7Yi5kaXNwYXRjaEV2ZW50P2IuZGlzcGF0Y2hFdmVudCh4KTpiLmZpcmVFdmVudChoLHgpfWVsc2UgZS50YXJnZXR8fGYoZSx7cHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXtlLmRlZmF1bHRQcmV2ZW50ZWQ9ITB9LHRhcmdldDpiLHR5cGU6aH0pLGZ1bmN0aW9uKGgsYSl7dm9pZCAwPT09aCYmKGg9W10pO3ZvaWQgMD09PWEmJihhPVtdKTt2YXIgeD0wLGY9MCxkPWgubGVuZ3RoK2EubGVuZ3RoO2Zvcih6PTA7ejxkO3orKykhMT09PShoW3hdP2FbZl0/aFt4XS5vcmRlcjw9YVtmXS5vcmRlcj9oW3grK106YVtmKytdOmhbeCsrXTphW2YrK10pLmZuLmNhbGwoYixlKSYmZS5wcmV2ZW50RGVmYXVsdCgpfShiLnByb3RvRXZlbnRzJiZiLnByb3RvRXZlbnRzW2hdLApiLmhjRXZlbnRzJiZiLmhjRXZlbnRzW2hdKTthJiYhZS5kZWZhdWx0UHJldmVudGVkJiZhLmNhbGwoYixlKX0sa2E9Zy5hbmltYXRlPWZ1bmN0aW9uKGIsaCxlKXt2YXIgYSx6PSIiLHgsZjtpZigheShlKSl7dmFyIGQ9YXJndW1lbnRzO2U9e2R1cmF0aW9uOmRbMl0sZWFzaW5nOmRbM10sY29tcGxldGU6ZFs0XX19SShlLmR1cmF0aW9uKXx8KGUuZHVyYXRpb249NDAwKTtlLmVhc2luZz0iZnVuY3Rpb24iPT09dHlwZW9mIGUuZWFzaW5nP2UuZWFzaW5nOk1hdGhbZS5lYXNpbmddfHxNYXRoLmVhc2VJbk91dFNpbmU7ZS5jdXJBbmltPVIoaCk7VyhoLGZ1bmN0aW9uKGQsayl7UyhiLGspO2Y9bmV3IEwoYixlLGspO3g9bnVsbDsiZCI9PT1rJiZuKGguZCk/KGYucGF0aHM9Zi5pbml0UGF0aChiLGIucGF0aEFycmF5LGguZCksZi50b0Q9aC5kLGE9MCx4PTEpOmIuYXR0cj9hPWIuYXR0cihrKTooYT1wYXJzZUZsb2F0KGJhKGIsaykpfHwwLCJvcGFjaXR5IiE9PWsmJih6PSJweCIpKTt4fHwKKHg9ZCk7eCYmeC5tYXRjaCYmeC5tYXRjaCgicHgiKSYmKHg9eC5yZXBsYWNlKC9weC9nLCIiKSk7Zi5ydW4oYSx4LHopfSl9LGxhPWcuc2VyaWVzVHlwZT1mdW5jdGlvbihiLGgsZSxhLHgpe3ZhciB6PWZhKCksZj1nLnNlcmllc1R5cGVzO3oucGxvdE9wdGlvbnNbYl09Uih6LnBsb3RPcHRpb25zW2hdLGUpO2ZbYl09dShmW2hdfHxmdW5jdGlvbigpe30sYSk7ZltiXS5wcm90b3R5cGUudHlwZT1iO3gmJihmW2JdLnByb3RvdHlwZS5wb2ludENsYXNzPXUoZy5Qb2ludCx4KSk7cmV0dXJuIGZbYl19LGNhLGhhPWcudW5pcXVlS2V5PWZ1bmN0aW9uKCl7dmFyIGI9TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsOSkrIi0iLGg9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4iaGlnaGNoYXJ0cy0iKyhjYT8iIjpiKStoKyt9fSgpLG1hPWcudXNlU2VyaWFsSWRzPWZ1bmN0aW9uKGIpe3JldHVybiBjYT1IKGIsY2EpfSxPPWcuaXNGdW5jdGlvbj1mdW5jdGlvbihiKXtyZXR1cm4iZnVuY3Rpb24iPT09CnR5cGVvZiBifSxmYT1nLmdldE9wdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gZy5kZWZhdWx0T3B0aW9uc30sbmE9Zy5zZXRPcHRpb25zPWZ1bmN0aW9uKGIpe2cuZGVmYXVsdE9wdGlvbnM9UighMCxnLmRlZmF1bHRPcHRpb25zLGIpOyhiLnRpbWV8fGIuZ2xvYmFsKSYmZy50aW1lLnVwZGF0ZShSKGcuZGVmYXVsdE9wdGlvbnMuZ2xvYmFsLGcuZGVmYXVsdE9wdGlvbnMudGltZSxiLmdsb2JhbCxiLnRpbWUpKTtyZXR1cm4gZy5kZWZhdWx0T3B0aW9uc307Ry5qUXVlcnkmJihHLmpRdWVyeS5mbi5oaWdoY2hhcnRzPWZ1bmN0aW9uKCl7dmFyIGI9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpO2lmKHRoaXNbMF0pcmV0dXJuIGJbMF0/KG5ldyAoZ1tLKGJbMF0pP2Iuc2hpZnQoKToiQ2hhcnQiXSkodGhpc1swXSxiWzBdLGJbMV0pLHRoaXMpOkpbcSh0aGlzWzBdLCJkYXRhLWhpZ2hjaGFydHMtY2hhcnQiKV19KTtyZXR1cm57Rng6Zy5GeCxhZGRFdmVudDpqYSxhbmltYXRlOmthLGFuaW1PYmplY3Q6WiwKYXJyYXlNYXg6aCxhcnJheU1pbjpiLGF0dHI6cSxjbGFtcDpmdW5jdGlvbihiLGgsZSl7cmV0dXJuIGI+aD9iPGU/YjplOmh9LGNsZWFyVGltZW91dDprLGNvcnJlY3RGbG9hdDpOLGNyZWF0ZUVsZW1lbnQ6QSxjc3M6YSxkZWZpbmVkOm0sZGVzdHJveU9iamVjdFByb3BlcnRpZXM6eixkaXNjYXJkRWxlbWVudDp4LGVyYXNlOnAsZXJyb3I6YyxleHRlbmQ6ZixleHRlbmRDbGFzczp1LGZpbmQ6WCxmaXJlRXZlbnQ6ZGEsZm9ybWF0Ok0sZ2V0TWFnbml0dWRlOkYsZ2V0TmVzdGVkUHJvcGVydHk6RCxnZXRPcHRpb25zOmZhLGdldFN0eWxlOmJhLGluQXJyYXk6VSxpc0FycmF5Om4saXNDbGFzczpDLGlzRE9NRWxlbWVudDpyLGlzRnVuY3Rpb246Tyxpc051bWJlcjpJLGlzT2JqZWN0OnksaXNTdHJpbmc6SyxtZXJnZTpSLG5vcm1hbGl6ZVRpY2tJbnRlcnZhbDpRLG51bWJlckZvcm1hdDpZLG9iamVjdEVhY2g6VyxvZmZzZXQ6aWEscGFkOkUscGljazpILHBJbnQ6dixyZWxhdGl2ZUxlbmd0aDpQLApyZW1vdmVFdmVudDplYSxzZXJpZXNUeXBlOmxhLHNldEFuaW1hdGlvbjphYSxzZXRPcHRpb25zOm5hLHNwbGF0OmQsc3RhYmxlU29ydDplLHN0b3A6UyxzeW5jVGltZW91dDpsLHRpbWVVbml0czpWLHVuaXF1ZUtleTpoYSx1c2VTZXJpYWxJZHM6bWEsd3JhcDp3fX0pO08ocSwicGFydHMvQ29sb3IuanMiLFtxWyJwYXJ0cy9HbG9iYWxzLmpzIl0scVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGcsYyl7dmFyIFI9Yy5pc051bWJlcix5PWMubWVyZ2UscT1jLnBJbnQ7Yz1mdW5jdGlvbigpe2Z1bmN0aW9uIGMoZyl7dGhpcy5wYXJzZXJzPVt7cmVnZXg6L3JnYmFcKFxzKihbMC05XXsxLDN9KVxzKixccyooWzAtOV17MSwzfSlccyosXHMqKFswLTldezEsM30pXHMqLFxzKihbMC05XT8oPzpcLlswLTldKyk/KVxzKlwpLyxwYXJzZTpmdW5jdGlvbihjKXtyZXR1cm5bcShjWzFdKSxxKGNbMl0pLHEoY1szXSkscGFyc2VGbG9hdChjWzRdLDEwKV19fSx7cmVnZXg6L3JnYlwoXHMqKFswLTldezEsM30pXHMqLFxzKihbMC05XXsxLDN9KVxzKixccyooWzAtOV17MSwzfSlccypcKS8sCnBhcnNlOmZ1bmN0aW9uKGMpe3JldHVybltxKGNbMV0pLHEoY1syXSkscShjWzNdKSwxXX19XTt0aGlzLnJnYmE9W107aWYoISh0aGlzIGluc3RhbmNlb2YgYykpcmV0dXJuIG5ldyBjKGcpO3RoaXMuaW5pdChnKX1jLnBhcnNlPWZ1bmN0aW9uKGcpe3JldHVybiBuZXcgYyhnKX07Yy5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihnKXt2YXIgSix0O2lmKCh0aGlzLmlucHV0PWc9Yy5uYW1lc1tnJiZnLnRvTG93ZXJDYXNlP2cudG9Mb3dlckNhc2UoKToiIl18fGcpJiZnLnN0b3BzKXRoaXMuc3RvcHM9Zy5zdG9wcy5tYXAoZnVuY3Rpb24odil7cmV0dXJuIG5ldyBjKHZbMV0pfSk7ZWxzZXtpZihnJiZnLmNoYXJBdCYmIiMiPT09Zy5jaGFyQXQoKSl7dmFyIEc9Zy5sZW5ndGg7Zz1wYXJzZUludChnLnN1YnN0cigxKSwxNik7Nz09PUc/Sj1bKGcmMTY3MTE2ODApPj4xNiwoZyY2NTI4MCk+PjgsZyYyNTUsMV06ND09PUcmJihKPVsoZyYzODQwKT4+NHwoZyYzODQwKT4+OCwoZyYyNDApPj40fApnJjI0MCwoZyYxNSk8PDR8ZyYxNSwxXSl9aWYoIUopZm9yKHQ9dGhpcy5wYXJzZXJzLmxlbmd0aDt0LS0mJiFKOyl7dmFyIEw9dGhpcy5wYXJzZXJzW3RdOyhHPUwucmVnZXguZXhlYyhnKSkmJihKPUwucGFyc2UoRykpfX10aGlzLnJnYmE9Snx8W119O2MucHJvdG90eXBlLmdldD1mdW5jdGlvbihjKXt2YXIgZz10aGlzLmlucHV0LHQ9dGhpcy5yZ2JhO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIHRoaXMuc3RvcHMpe3ZhciBHPXkoZyk7Ry5zdG9wcz1bXS5jb25jYXQoRy5zdG9wcyk7dGhpcy5zdG9wcy5mb3JFYWNoKGZ1bmN0aW9uKGcsdil7Ry5zdG9wc1t2XT1bRy5zdG9wc1t2XVswXSxnLmdldChjKV19KX1lbHNlIEc9dCYmUih0WzBdKT8icmdiIj09PWN8fCFjJiYxPT09dFszXT8icmdiKCIrdFswXSsiLCIrdFsxXSsiLCIrdFsyXSsiKSI6ImEiPT09Yz90WzNdOiJyZ2JhKCIrdC5qb2luKCIsIikrIikiOmc7cmV0dXJuIEd9O2MucHJvdG90eXBlLmJyaWdodGVuPWZ1bmN0aW9uKGMpe3ZhciBnLAp0PXRoaXMucmdiYTtpZih0aGlzLnN0b3BzKXRoaXMuc3RvcHMuZm9yRWFjaChmdW5jdGlvbihnKXtnLmJyaWdodGVuKGMpfSk7ZWxzZSBpZihSKGMpJiYwIT09Yylmb3IoZz0wOzM+ZztnKyspdFtnXSs9cSgyNTUqYyksMD50W2ddJiYodFtnXT0wKSwyNTU8dFtnXSYmKHRbZ109MjU1KTtyZXR1cm4gdGhpc307Yy5wcm90b3R5cGUuc2V0T3BhY2l0eT1mdW5jdGlvbihjKXt0aGlzLnJnYmFbM109YztyZXR1cm4gdGhpc307Yy5wcm90b3R5cGUudHdlZW5Ubz1mdW5jdGlvbihjLGcpe3ZhciB0PXRoaXMucmdiYSxHPWMucmdiYTtHLmxlbmd0aCYmdCYmdC5sZW5ndGg/KGM9MSE9PUdbM118fDEhPT10WzNdLGc9KGM/InJnYmEoIjoicmdiKCIpK01hdGgucm91bmQoR1swXSsodFswXS1HWzBdKSooMS1nKSkrIiwiK01hdGgucm91bmQoR1sxXSsodFsxXS1HWzFdKSooMS1nKSkrIiwiK01hdGgucm91bmQoR1syXSsodFsyXS1HWzJdKSooMS1nKSkrKGM/IiwiKyhHWzNdKyh0WzNdLUdbM10pKigxLQpnKSk6IiIpKyIpIik6Zz1jLmlucHV0fHwibm9uZSI7cmV0dXJuIGd9O2MubmFtZXM9e3doaXRlOiIjZmZmZmZmIixibGFjazoiIzAwMDAwMCJ9O3JldHVybiBjfSgpO2cuQ29sb3I9YztnLmNvbG9yPWMucGFyc2U7cmV0dXJuIGcuQ29sb3J9KTtPKHEsInBhcnRzL1NWR0VsZW1lbnQuanMiLFtxWyJwYXJ0cy9Db2xvci5qcyJdLHFbInBhcnRzL0dsb2JhbHMuanMiXSxxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyxjLHEpe3ZhciB5PWMuZGVnMnJhZCxCPWMuZG9jLEg9Yy5oYXNUb3VjaCxEPWMuaXNGaXJlZm94LEo9Yy5ub29wLHQ9Yy5zdmcsRz1jLlNWR19OUyxMPWMud2luLHY9cS5hbmltYXRlLEs9cS5hbmltT2JqZWN0LG49cS5hdHRyLHI9cS5jcmVhdGVFbGVtZW50LEM9cS5jc3MsST1xLmRlZmluZWQscD1xLmVyYXNlLG09cS5leHRlbmQsZD1xLmZpcmVFdmVudCxsPXEuaXNBcnJheSxrPXEuaXNGdW5jdGlvbixmPXEuaXNOdW1iZXIsYT1xLmlzU3RyaW5nLEE9cS5tZXJnZSwKdT1xLm9iamVjdEVhY2gsRT1xLnBpY2ssUD1xLnBJbnQsdz1xLnN0b3AsTT1xLnVuaXF1ZUtleTsiIjtxPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gRigpe3RoaXMuaGVpZ2h0PXRoaXMuZWxlbWVudD12b2lkIDA7dGhpcy5vcGFjaXR5PTE7dGhpcy5yZW5kZXJlcj12b2lkIDA7dGhpcy5TVkdfTlM9Rzt0aGlzLnN5bWJvbEN1c3RvbUF0dHJpYnM9InggeSB3aWR0aCBoZWlnaHQgciBzdGFydCBlbmQgaW5uZXJSIGFuY2hvclggYW5jaG9yWSByb3VuZGVkIi5zcGxpdCgiICIpO3RoaXMud2lkdGg9dm9pZCAwfUYucHJvdG90eXBlLl9kZWZhdWx0R2V0dGVyPWZ1bmN0aW9uKGEpe2E9RSh0aGlzW2ErIlZhbHVlIl0sdGhpc1thXSx0aGlzLmVsZW1lbnQ/dGhpcy5lbGVtZW50LmdldEF0dHJpYnV0ZShhKTpudWxsLDApOy9eW1wtMC05XC5dKyQvLnRlc3QoYSkmJihhPXBhcnNlRmxvYXQoYSkpO3JldHVybiBhfTtGLnByb3RvdHlwZS5fZGVmYXVsdFNldHRlcj1mdW5jdGlvbihhLGUsYil7Yi5zZXRBdHRyaWJ1dGUoZSwKYSl9O0YucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhKXt2YXIgZT10aGlzLnJlbmRlcmVyLGI9dGhpcy5lbGVtZW50O2EmJih0aGlzLnBhcmVudEdyb3VwPWEpO3RoaXMucGFyZW50SW52ZXJ0ZWQ9YSYmYS5pbnZlcnRlZDsidW5kZWZpbmVkIiE9PXR5cGVvZiB0aGlzLnRleHRTdHImJiJ0ZXh0Ij09PXRoaXMuZWxlbWVudC5ub2RlTmFtZSYmZS5idWlsZFRleHQodGhpcyk7dGhpcy5hZGRlZD0hMDtpZighYXx8YS5oYW5kbGVafHx0aGlzLnpJbmRleCl2YXIgaD10aGlzLnpJbmRleFNldHRlcigpO2h8fChhP2EuZWxlbWVudDplLmJveCkuYXBwZW5kQ2hpbGQoYik7aWYodGhpcy5vbkFkZCl0aGlzLm9uQWRkKCk7cmV0dXJuIHRoaXN9O0YucHJvdG90eXBlLmFkZENsYXNzPWZ1bmN0aW9uKGEsZSl7dmFyIGI9ZT8iIjp0aGlzLmF0dHIoImNsYXNzIil8fCIiO2E9KGF8fCIiKS5zcGxpdCgvIC9nKS5yZWR1Y2UoZnVuY3Rpb24oaCxlKXstMT09PWIuaW5kZXhPZihlKSYmaC5wdXNoKGUpO3JldHVybiBofSwKYj9bYl06W10pLmpvaW4oIiAiKTthIT09YiYmdGhpcy5hdHRyKCJjbGFzcyIsYSk7cmV0dXJuIHRoaXN9O0YucHJvdG90eXBlLmFmdGVyU2V0dGVycz1mdW5jdGlvbigpe3RoaXMuZG9UcmFuc2Zvcm0mJih0aGlzLnVwZGF0ZVRyYW5zZm9ybSgpLHRoaXMuZG9UcmFuc2Zvcm09ITEpfTtGLnByb3RvdHlwZS5hbGlnbj1mdW5jdGlvbihmLGUsYil7dmFyIGgsej17fTt2YXIgeD10aGlzLnJlbmRlcmVyO3ZhciBkPXguYWxpZ25lZE9iamVjdHM7dmFyIGssbDtpZihmKXtpZih0aGlzLmFsaWduT3B0aW9ucz1mLHRoaXMuYWxpZ25CeVRyYW5zbGF0ZT1lLCFifHxhKGIpKXRoaXMuYWxpZ25Ubz1oPWJ8fCJyZW5kZXJlciIscChkLHRoaXMpLGQucHVzaCh0aGlzKSxiPXZvaWQgMH1lbHNlIGY9dGhpcy5hbGlnbk9wdGlvbnMsZT10aGlzLmFsaWduQnlUcmFuc2xhdGUsaD10aGlzLmFsaWduVG87Yj1FKGIseFtoXSx4KTtoPWYuYWxpZ247eD1mLnZlcnRpY2FsQWxpZ247ZD0oYi54fHwwKSsoZi54fHwKMCk7dmFyIHU9KGIueXx8MCkrKGYueXx8MCk7InJpZ2h0Ij09PWg/az0xOiJjZW50ZXIiPT09aCYmKGs9Mik7ayYmKGQrPShiLndpZHRoLShmLndpZHRofHwwKSkvayk7eltlPyJ0cmFuc2xhdGVYIjoieCJdPU1hdGgucm91bmQoZCk7ImJvdHRvbSI9PT14P2w9MToibWlkZGxlIj09PXgmJihsPTIpO2wmJih1Kz0oYi5oZWlnaHQtKGYuaGVpZ2h0fHwwKSkvbCk7eltlPyJ0cmFuc2xhdGVZIjoieSJdPU1hdGgucm91bmQodSk7dGhpc1t0aGlzLnBsYWNlZD8iYW5pbWF0ZSI6ImF0dHIiXSh6KTt0aGlzLnBsYWNlZD0hMDt0aGlzLmFsaWduQXR0cj16O3JldHVybiB0aGlzfTtGLnByb3RvdHlwZS5hbGlnblNldHRlcj1mdW5jdGlvbihhKXt2YXIgZT17bGVmdDoic3RhcnQiLGNlbnRlcjoibWlkZGxlIixyaWdodDoiZW5kIn07ZVthXSYmKHRoaXMuYWxpZ25WYWx1ZT1hLHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInRleHQtYW5jaG9yIixlW2FdKSl9O0YucHJvdG90eXBlLmFuaW1hdGU9CmZ1bmN0aW9uKGEsZSxiKXt2YXIgaD1LKEUoZSx0aGlzLnJlbmRlcmVyLmdsb2JhbEFuaW1hdGlvbiwhMCkpO0UoQi5oaWRkZW4sQi5tc0hpZGRlbixCLndlYmtpdEhpZGRlbiwhMSkmJihoLmR1cmF0aW9uPTApOzAhPT1oLmR1cmF0aW9uPyhiJiYoaC5jb21wbGV0ZT1iKSx2KHRoaXMsYSxoKSk6KHRoaXMuYXR0cihhLHZvaWQgMCxiKSx1KGEsZnVuY3Rpb24oYixlKXtoLnN0ZXAmJmguc3RlcC5jYWxsKHRoaXMsYix7cHJvcDplLHBvczoxfSl9LHRoaXMpKTtyZXR1cm4gdGhpc307Ri5wcm90b3R5cGUuYXBwbHlUZXh0T3V0bGluZT1mdW5jdGlvbihhKXt2YXIgZT10aGlzLmVsZW1lbnQsYjstMSE9PWEuaW5kZXhPZigiY29udHJhc3QiKSYmKGE9YS5yZXBsYWNlKC9jb250cmFzdC9nLHRoaXMucmVuZGVyZXIuZ2V0Q29udHJhc3QoZS5zdHlsZS5maWxsKSkpO2E9YS5zcGxpdCgiICIpO3ZhciBoPWFbYS5sZW5ndGgtMV07aWYoKGI9YVswXSkmJiJub25lIiE9PWImJmMuc3ZnKXt0aGlzLmZha2VUUz0KITA7YT1bXS5zbGljZS5jYWxsKGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRzcGFuIikpO3RoaXMueVNldHRlcj10aGlzLnhTZXR0ZXI7Yj1iLnJlcGxhY2UoLyheW1xkXC5dKykoLio/KSQvZyxmdW5jdGlvbihiLGgsZSl7cmV0dXJuIDIqaCtlfSk7dGhpcy5yZW1vdmVUZXh0T3V0bGluZShhKTt2YXIgej1lLnRleHRDb250ZW50Py9eW1x1MDU5MS1cdTA2NUZcdTA2NkEtXHUwN0ZGXHVGQjFELVx1RkRGRFx1RkU3MC1cdUZFRkNdLy50ZXN0KGUudGV4dENvbnRlbnQpOiExO3ZhciB4PWUuZmlyc3RDaGlsZDthLmZvckVhY2goZnVuY3Rpb24oYSxmKXswPT09ZiYmKGEuc2V0QXR0cmlidXRlKCJ4IixlLmdldEF0dHJpYnV0ZSgieCIpKSxmPWUuZ2V0QXR0cmlidXRlKCJ5IiksYS5zZXRBdHRyaWJ1dGUoInkiLGZ8fDApLG51bGw9PT1mJiZlLnNldEF0dHJpYnV0ZSgieSIsMCkpO2Y9YS5jbG9uZU5vZGUoITApO24oeiYmIUQ/YTpmLHsiY2xhc3MiOiJoaWdoY2hhcnRzLXRleHQtb3V0bGluZSIsCmZpbGw6aCxzdHJva2U6aCwic3Ryb2tlLXdpZHRoIjpiLCJzdHJva2UtbGluZWpvaW4iOiJyb3VuZCJ9KTtlLmluc2VydEJlZm9yZShmLHgpfSk7eiYmRCYmYVswXSYmKGE9YVswXS5jbG9uZU5vZGUoITApLGEudGV4dENvbnRlbnQ9IiAiLGUuaW5zZXJ0QmVmb3JlKGEseCkpfX07Ri5wcm90b3R5cGUuYXR0cj1mdW5jdGlvbihhLGUsYixoKXt2YXIgej10aGlzLmVsZW1lbnQseCxmPXRoaXMsZCxrLGw9dGhpcy5zeW1ib2xDdXN0b21BdHRyaWJzO2lmKCJzdHJpbmciPT09dHlwZW9mIGEmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGUpe3ZhciBtPWE7YT17fTthW21dPWV9InN0cmluZyI9PT10eXBlb2YgYT9mPSh0aGlzW2ErIkdldHRlciJdfHx0aGlzLl9kZWZhdWx0R2V0dGVyKS5jYWxsKHRoaXMsYSx6KToodShhLGZ1bmN0aW9uKGIsZSl7ZD0hMTtofHx3KHRoaXMsZSk7dGhpcy5zeW1ib2xOYW1lJiYtMSE9PWwuaW5kZXhPZihlKSYmKHh8fCh0aGlzLnN5bWJvbEF0dHIoYSkseD0hMCksZD0KITApOyF0aGlzLnJvdGF0aW9ufHwieCIhPT1lJiYieSIhPT1lfHwodGhpcy5kb1RyYW5zZm9ybT0hMCk7ZHx8KGs9dGhpc1tlKyJTZXR0ZXIiXXx8dGhpcy5fZGVmYXVsdFNldHRlcixrLmNhbGwodGhpcyxiLGUseiksIXRoaXMuc3R5bGVkTW9kZSYmdGhpcy5zaGFkb3dzJiYvXih3aWR0aHxoZWlnaHR8dmlzaWJpbGl0eXx4fHl8ZHx0cmFuc2Zvcm18Y3h8Y3l8cikkLy50ZXN0KGUpJiZ0aGlzLnVwZGF0ZVNoYWRvd3MoZSxiLGspKX0sdGhpcyksdGhpcy5hZnRlclNldHRlcnMoKSk7YiYmYi5jYWxsKHRoaXMpO3JldHVybiBmfTtGLnByb3RvdHlwZS5jbGlwPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmF0dHIoImNsaXAtcGF0aCIsYT8idXJsKCIrdGhpcy5yZW5kZXJlci51cmwrIiMiK2EuaWQrIikiOiJub25lIil9O0YucHJvdG90eXBlLmNyaXNwPWZ1bmN0aW9uKGEsZSl7ZT1lfHxhLnN0cm9rZVdpZHRofHwwO3ZhciBiPU1hdGgucm91bmQoZSklMi8yO2EueD1NYXRoLmZsb29yKGEueHx8CnRoaXMueHx8MCkrYjthLnk9TWF0aC5mbG9vcihhLnl8fHRoaXMueXx8MCkrYjthLndpZHRoPU1hdGguZmxvb3IoKGEud2lkdGh8fHRoaXMud2lkdGh8fDApLTIqYik7YS5oZWlnaHQ9TWF0aC5mbG9vcigoYS5oZWlnaHR8fHRoaXMuaGVpZ2h0fHwwKS0yKmIpO0koYS5zdHJva2VXaWR0aCkmJihhLnN0cm9rZVdpZHRoPWUpO3JldHVybiBhfTtGLnByb3RvdHlwZS5jb21wbGV4Q29sb3I9ZnVuY3Rpb24oYSxlLGIpe3ZhciBoPXRoaXMucmVuZGVyZXIseix4LGYsayxtLHAsdyxDLFEscixFPVtdLFM7ZCh0aGlzLnJlbmRlcmVyLCJjb21wbGV4Q29sb3IiLHthcmdzOmFyZ3VtZW50c30sZnVuY3Rpb24oKXthLnJhZGlhbEdyYWRpZW50P3g9InJhZGlhbEdyYWRpZW50IjphLmxpbmVhckdyYWRpZW50JiYoeD0ibGluZWFyR3JhZGllbnQiKTtpZih4KXtmPWFbeF07bT1oLmdyYWRpZW50cztwPWEuc3RvcHM7UT1iLnJhZGlhbFJlZmVyZW5jZTtsKGYpJiYoYVt4XT1mPXt4MTpmWzBdLHkxOmZbMV0sCngyOmZbMl0seTI6ZlszXSxncmFkaWVudFVuaXRzOiJ1c2VyU3BhY2VPblVzZSJ9KTsicmFkaWFsR3JhZGllbnQiPT09eCYmUSYmIUkoZi5ncmFkaWVudFVuaXRzKSYmKGs9ZixmPUEoZixoLmdldFJhZGlhbEF0dHIoUSxrKSx7Z3JhZGllbnRVbml0czoidXNlclNwYWNlT25Vc2UifSkpO3UoZixmdW5jdGlvbihiLGgpeyJpZCIhPT1oJiZFLnB1c2goaCxiKX0pO3UocCxmdW5jdGlvbihiKXtFLnB1c2goYil9KTtFPUUuam9pbigiLCIpO2lmKG1bRV0pcj1tW0VdLmF0dHIoImlkIik7ZWxzZXtmLmlkPXI9TSgpO3ZhciBkPW1bRV09aC5jcmVhdGVFbGVtZW50KHgpLmF0dHIoZikuYWRkKGguZGVmcyk7ZC5yYWRBdHRyPWs7ZC5zdG9wcz1bXTtwLmZvckVhY2goZnVuY3Rpb24oYil7MD09PWJbMV0uaW5kZXhPZigicmdiYSIpPyh6PWcucGFyc2UoYlsxXSksdz16LmdldCgicmdiIiksQz16LmdldCgiYSIpKToodz1iWzFdLEM9MSk7Yj1oLmNyZWF0ZUVsZW1lbnQoInN0b3AiKS5hdHRyKHtvZmZzZXQ6YlswXSwKInN0b3AtY29sb3IiOncsInN0b3Atb3BhY2l0eSI6Q30pLmFkZChkKTtkLnN0b3BzLnB1c2goYil9KX1TPSJ1cmwoIitoLnVybCsiIyIrcisiKSI7Yi5zZXRBdHRyaWJ1dGUoZSxTKTtiLmdyYWRpZW50PUU7YS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBTfX19KX07Ri5wcm90b3R5cGUuY3NzPWZ1bmN0aW9uKGEpe3ZhciBlPXRoaXMuc3R5bGVzLGI9e30saD10aGlzLmVsZW1lbnQsej0iIix4PSFlLGY9WyJ0ZXh0T3V0bGluZSIsInRleHRPdmVyZmxvdyIsIndpZHRoIl07YSYmYS5jb2xvciYmKGEuZmlsbD1hLmNvbG9yKTtlJiZ1KGEsZnVuY3Rpb24oaCxhKXtlJiZlW2FdIT09aCYmKGJbYV09aCx4PSEwKX0pO2lmKHgpe2UmJihhPW0oZSxiKSk7aWYoYSlpZihudWxsPT09YS53aWR0aHx8ImF1dG8iPT09YS53aWR0aClkZWxldGUgdGhpcy50ZXh0V2lkdGg7ZWxzZSBpZigidGV4dCI9PT1oLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJmEud2lkdGgpdmFyIGQ9dGhpcy50ZXh0V2lkdGg9ClAoYS53aWR0aCk7dGhpcy5zdHlsZXM9YTtkJiYhdCYmdGhpcy5yZW5kZXJlci5mb3JFeHBvcnQmJmRlbGV0ZSBhLndpZHRoO2lmKGgubmFtZXNwYWNlVVJJPT09dGhpcy5TVkdfTlMpe3ZhciBrPWZ1bmN0aW9uKGIsaCl7cmV0dXJuIi0iK2gudG9Mb3dlckNhc2UoKX07dShhLGZ1bmN0aW9uKGIsaCl7LTE9PT1mLmluZGV4T2YoaCkmJih6Kz1oLnJlcGxhY2UoLyhbQS1aXSkvZyxrKSsiOiIrYisiOyIpfSk7eiYmbihoLCJzdHlsZSIseil9ZWxzZSBDKGgsYSk7dGhpcy5hZGRlZCYmKCJ0ZXh0Ij09PXRoaXMuZWxlbWVudC5ub2RlTmFtZSYmdGhpcy5yZW5kZXJlci5idWlsZFRleHQodGhpcyksYSYmYS50ZXh0T3V0bGluZSYmdGhpcy5hcHBseVRleHRPdXRsaW5lKGEudGV4dE91dGxpbmUpKX1yZXR1cm4gdGhpc307Ri5wcm90b3R5cGUuZGFzaHN0eWxlU2V0dGVyPWZ1bmN0aW9uKGEpe3ZhciBlPXRoaXNbInN0cm9rZS13aWR0aCJdOyJpbmhlcml0Ij09PWUmJihlPTEpO2lmKGE9YSYmYS50b0xvd2VyQ2FzZSgpKXt2YXIgYj0KYS5yZXBsYWNlKCJzaG9ydGRhc2hkb3Rkb3QiLCIzLDEsMSwxLDEsMSwiKS5yZXBsYWNlKCJzaG9ydGRhc2hkb3QiLCIzLDEsMSwxIikucmVwbGFjZSgic2hvcnRkb3QiLCIxLDEsIikucmVwbGFjZSgic2hvcnRkYXNoIiwiMywxLCIpLnJlcGxhY2UoImxvbmdkYXNoIiwiOCwzLCIpLnJlcGxhY2UoL2RvdC9nLCIxLDMsIikucmVwbGFjZSgiZGFzaCIsIjQsMywiKS5yZXBsYWNlKC8sJC8sIiIpLnNwbGl0KCIsIik7Zm9yKGE9Yi5sZW5ndGg7YS0tOyliW2FdPSIiK1AoYlthXSkqRShlLE5hTik7YT1iLmpvaW4oIiwiKS5yZXBsYWNlKC9OYU4vZywibm9uZSIpO3RoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInN0cm9rZS1kYXNoYXJyYXkiLGEpfX07Ri5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3ZhciBhPXRoaXMsZT1hLmVsZW1lbnR8fHt9LGI9YS5yZW5kZXJlcixoPWIuaXNTVkcmJiJTUEFOIj09PWUubm9kZU5hbWUmJmEucGFyZW50R3JvdXB8fHZvaWQgMCx6PWUub3duZXJTVkdFbGVtZW50OwplLm9uY2xpY2s9ZS5vbm1vdXNlb3V0PWUub25tb3VzZW92ZXI9ZS5vbm1vdXNlbW92ZT1lLnBvaW50PW51bGw7dyhhKTtpZihhLmNsaXBQYXRoJiZ6KXt2YXIgeD1hLmNsaXBQYXRoO1tdLmZvckVhY2guY2FsbCh6LnF1ZXJ5U2VsZWN0b3JBbGwoIltjbGlwLXBhdGhdLFtDTElQLVBBVEhdIiksZnVuY3Rpb24oYil7LTE8Yi5nZXRBdHRyaWJ1dGUoImNsaXAtcGF0aCIpLmluZGV4T2YoeC5lbGVtZW50LmlkKSYmYi5yZW1vdmVBdHRyaWJ1dGUoImNsaXAtcGF0aCIpfSk7YS5jbGlwUGF0aD14LmRlc3Ryb3koKX1pZihhLnN0b3BzKXtmb3Ioej0wO3o8YS5zdG9wcy5sZW5ndGg7eisrKWEuc3RvcHNbel0uZGVzdHJveSgpO2Euc3RvcHMubGVuZ3RoPTA7YS5zdG9wcz12b2lkIDB9YS5zYWZlUmVtb3ZlQ2hpbGQoZSk7Zm9yKGIuc3R5bGVkTW9kZXx8YS5kZXN0cm95U2hhZG93cygpO2gmJmguZGl2JiYwPT09aC5kaXYuY2hpbGROb2Rlcy5sZW5ndGg7KWU9aC5wYXJlbnRHcm91cCxhLnNhZmVSZW1vdmVDaGlsZChoLmRpdiksCmRlbGV0ZSBoLmRpdixoPWU7YS5hbGlnblRvJiZwKGIuYWxpZ25lZE9iamVjdHMsYSk7dShhLGZ1bmN0aW9uKGIsaCl7YVtoXSYmYVtoXS5wYXJlbnRHcm91cD09PWEmJmFbaF0uZGVzdHJveSYmYVtoXS5kZXN0cm95KCk7ZGVsZXRlIGFbaF19KX07Ri5wcm90b3R5cGUuZGVzdHJveVNoYWRvd3M9ZnVuY3Rpb24oKXsodGhpcy5zaGFkb3dzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihhKXt0aGlzLnNhZmVSZW1vdmVDaGlsZChhKX0sdGhpcyk7dGhpcy5zaGFkb3dzPXZvaWQgMH07Ri5wcm90b3R5cGUuZGVzdHJveVRleHRQYXRoPWZ1bmN0aW9uKGEsZSl7dmFyIGI9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdO2lmKGIpe2lmKGIucmVtb3ZlQXR0cmlidXRlKCJkeCIpLGIucmVtb3ZlQXR0cmlidXRlKCJkeSIpLGUuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImlkIiwiIiksdGhpcy50ZXh0UGF0aFdyYXBwZXImJmIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIikubGVuZ3RoKXtmb3IoYT0KdGhpcy50ZXh0UGF0aFdyYXBwZXIuZWxlbWVudC5jaGlsZE5vZGVzO2EubGVuZ3RoOyliLmFwcGVuZENoaWxkKGFbMF0pO2IucmVtb3ZlQ2hpbGQodGhpcy50ZXh0UGF0aFdyYXBwZXIuZWxlbWVudCl9fWVsc2UgaWYoYS5nZXRBdHRyaWJ1dGUoImR4Iil8fGEuZ2V0QXR0cmlidXRlKCJkeSIpKWEucmVtb3ZlQXR0cmlidXRlKCJkeCIpLGEucmVtb3ZlQXR0cmlidXRlKCJkeSIpO3RoaXMudGV4dFBhdGhXcmFwcGVyJiYodGhpcy50ZXh0UGF0aFdyYXBwZXI9dGhpcy50ZXh0UGF0aFdyYXBwZXIuZGVzdHJveSgpKX07Ri5wcm90b3R5cGUuZFNldHRlcj1mdW5jdGlvbihhLGUsYil7bChhKSYmKCJzdHJpbmciPT09dHlwZW9mIGFbMF0mJihhPXRoaXMucmVuZGVyZXIucGF0aFRvU2VnbWVudHMoYSkpLHRoaXMucGF0aEFycmF5PWEsYT1hLnJlZHVjZShmdW5jdGlvbihiLGEsZSl7cmV0dXJuIGEmJmEuam9pbj8oZT9iKyIgIjoiIikrYS5qb2luKCIgIik6KGF8fCIiKS50b1N0cmluZygpfSwiIikpOwovKE5hTnwgezJ9fF4kKS8udGVzdChhKSYmKGE9Ik0gMCAwIik7dGhpc1tlXSE9PWEmJihiLnNldEF0dHJpYnV0ZShlLGEpLHRoaXNbZV09YSl9O0YucHJvdG90eXBlLmZhZGVPdXQ9ZnVuY3Rpb24oYSl7dmFyIGU9dGhpcztlLmFuaW1hdGUoe29wYWNpdHk6MH0se2R1cmF0aW9uOkUoYSwxNTApLGNvbXBsZXRlOmZ1bmN0aW9uKCl7ZS5hdHRyKHt5Oi05OTk5fSkuaGlkZSgpfX0pfTtGLnByb3RvdHlwZS5maWxsU2V0dGVyPWZ1bmN0aW9uKGEsZSxiKXsic3RyaW5nIj09PXR5cGVvZiBhP2Iuc2V0QXR0cmlidXRlKGUsYSk6YSYmdGhpcy5jb21wbGV4Q29sb3IoYSxlLGIpfTtGLnByb3RvdHlwZS5nZXRCQm94PWZ1bmN0aW9uKGEsZSl7dmFyIGIsaD10aGlzLnJlbmRlcmVyLHo9dGhpcy5lbGVtZW50LHg9dGhpcy5zdHlsZXMsZj10aGlzLnRleHRTdHIsZD1oLmNhY2hlLGw9aC5jYWNoZUtleXMsdT16Lm5hbWVzcGFjZVVSST09PXRoaXMuU1ZHX05TO2U9RShlLHRoaXMucm90YXRpb24sMCk7CnZhciBBPWguc3R5bGVkTW9kZT96JiZGLnByb3RvdHlwZS5nZXRTdHlsZS5jYWxsKHosImZvbnQtc2l6ZSIpOngmJnguZm9udFNpemU7aWYoSShmKSl7dmFyIHA9Zi50b1N0cmluZygpOy0xPT09cC5pbmRleE9mKCI8IikmJihwPXAucmVwbGFjZSgvWzAtOV0vZywiMCIpKTtwKz1bIiIsZSxBLHRoaXMudGV4dFdpZHRoLHgmJngudGV4dE92ZXJmbG93LHgmJnguZm9udFdlaWdodF0uam9pbigpfXAmJiFhJiYoYj1kW3BdKTtpZighYil7aWYodXx8aC5mb3JFeHBvcnQpe3RyeXt2YXIgdz10aGlzLmZha2VUUyYmZnVuY3Rpb24oYil7W10uZm9yRWFjaC5jYWxsKHoucXVlcnlTZWxlY3RvckFsbCgiLmhpZ2hjaGFydHMtdGV4dC1vdXRsaW5lIiksZnVuY3Rpb24oaCl7aC5zdHlsZS5kaXNwbGF5PWJ9KX07ayh3KSYmdygibm9uZSIpO2I9ei5nZXRCQm94P20oe30sei5nZXRCQm94KCkpOnt3aWR0aDp6Lm9mZnNldFdpZHRoLGhlaWdodDp6Lm9mZnNldEhlaWdodH07ayh3KSYmdygiIil9Y2F0Y2goWCl7IiJ9aWYoIWJ8fAowPmIud2lkdGgpYj17d2lkdGg6MCxoZWlnaHQ6MH19ZWxzZSBiPXRoaXMuaHRtbEdldEJCb3goKTtoLmlzU1ZHJiYoYT1iLndpZHRoLGg9Yi5oZWlnaHQsdSYmKGIuaGVpZ2h0PWg9eyIxMXB4LDE3IjoxNCwiMTNweCwyMCI6MTZ9W3gmJnguZm9udFNpemUrIiwiK01hdGgucm91bmQoaCldfHxoKSxlJiYoeD1lKnksYi53aWR0aD1NYXRoLmFicyhoKk1hdGguc2luKHgpKStNYXRoLmFicyhhKk1hdGguY29zKHgpKSxiLmhlaWdodD1NYXRoLmFicyhoKk1hdGguY29zKHgpKStNYXRoLmFicyhhKk1hdGguc2luKHgpKSkpO2lmKHAmJjA8Yi5oZWlnaHQpe2Zvcig7MjUwPGwubGVuZ3RoOylkZWxldGUgZFtsLnNoaWZ0KCldO2RbcF18fGwucHVzaChwKTtkW3BdPWJ9fXJldHVybiBifTtGLnByb3RvdHlwZS5nZXRTdHlsZT1mdW5jdGlvbihhKXtyZXR1cm4gTC5nZXRDb21wdXRlZFN0eWxlKHRoaXMuZWxlbWVudHx8dGhpcywiIikuZ2V0UHJvcGVydHlWYWx1ZShhKX07Ri5wcm90b3R5cGUuaGFzQ2xhc3M9CmZ1bmN0aW9uKGEpe3JldHVybi0xIT09KCIiK3RoaXMuYXR0cigiY2xhc3MiKSkuc3BsaXQoIiAiKS5pbmRleE9mKGEpfTtGLnByb3RvdHlwZS5oaWRlPWZ1bmN0aW9uKGEpe2E/dGhpcy5hdHRyKHt5Oi05OTk5fSk6dGhpcy5hdHRyKHt2aXNpYmlsaXR5OiJoaWRkZW4ifSk7cmV0dXJuIHRoaXN9O0YucHJvdG90eXBlLmh0bWxHZXRCQm94PWZ1bmN0aW9uKCl7cmV0dXJue2hlaWdodDowLHdpZHRoOjAseDowLHk6MH19O0YucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oYSxlKXt0aGlzLmVsZW1lbnQ9InNwYW4iPT09ZT9yKGUpOkIuY3JlYXRlRWxlbWVudE5TKHRoaXMuU1ZHX05TLGUpO3RoaXMucmVuZGVyZXI9YTtkKHRoaXMsImFmdGVySW5pdCIpfTtGLnByb3RvdHlwZS5pbnZlcnQ9ZnVuY3Rpb24oYSl7dGhpcy5pbnZlcnRlZD1hO3RoaXMudXBkYXRlVHJhbnNmb3JtKCk7cmV0dXJuIHRoaXN9O0YucHJvdG90eXBlLm9uPWZ1bmN0aW9uKGEsZSl7dmFyIGIsaCx6PXRoaXMuZWxlbWVudCwKeDtIJiYiY2xpY2siPT09YT8oei5vbnRvdWNoc3RhcnQ9ZnVuY3Rpb24oYSl7Yj1hLnRvdWNoZXNbMF0uY2xpZW50WDtoPWEudG91Y2hlc1swXS5jbGllbnRZfSx6Lm9udG91Y2hlbmQ9ZnVuY3Rpb24oYSl7YiYmNDw9TWF0aC5zcXJ0KE1hdGgucG93KGItYS5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRYLDIpK01hdGgucG93KGgtYS5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZLDIpKXx8ZS5jYWxsKHosYSk7eD0hMDthLnByZXZlbnREZWZhdWx0KCl9LHoub25jbGljaz1mdW5jdGlvbihiKXt4fHxlLmNhbGwoeixiKX0pOnpbIm9uIithXT1lO3JldHVybiB0aGlzfTtGLnByb3RvdHlwZS5vcGFjaXR5U2V0dGVyPWZ1bmN0aW9uKGEsZSxiKXt0aGlzW2VdPWE7Yi5zZXRBdHRyaWJ1dGUoZSxhKX07Ri5wcm90b3R5cGUucmVtb3ZlQ2xhc3M9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuYXR0cigiY2xhc3MiLCgiIit0aGlzLmF0dHIoImNsYXNzIikpLnJlcGxhY2UoYShmKT9uZXcgUmVnRXhwKCIoXnwgKSIrCmYrIiggfCQpIik6ZiwiICIpLnJlcGxhY2UoLyArL2csIiAiKS50cmltKCkpfTtGLnByb3RvdHlwZS5yZW1vdmVUZXh0T3V0bGluZT1mdW5jdGlvbihhKXtmb3IodmFyIGU9YS5sZW5ndGgsYjtlLS07KWI9YVtlXSwiaGlnaGNoYXJ0cy10ZXh0LW91dGxpbmUiPT09Yi5nZXRBdHRyaWJ1dGUoImNsYXNzIikmJnAoYSx0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGQoYikpfTtGLnByb3RvdHlwZS5zYWZlUmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24oYSl7dmFyIGU9YS5wYXJlbnROb2RlO2UmJmUucmVtb3ZlQ2hpbGQoYSl9O0YucHJvdG90eXBlLnNldFJhZGlhbFJlZmVyZW5jZT1mdW5jdGlvbihhKXt2YXIgZT10aGlzLmVsZW1lbnQuZ3JhZGllbnQmJnRoaXMucmVuZGVyZXIuZ3JhZGllbnRzW3RoaXMuZWxlbWVudC5ncmFkaWVudF07dGhpcy5lbGVtZW50LnJhZGlhbFJlZmVyZW5jZT1hO2UmJmUucmFkQXR0ciYmZS5hbmltYXRlKHRoaXMucmVuZGVyZXIuZ2V0UmFkaWFsQXR0cihhLGUucmFkQXR0cikpOwpyZXR1cm4gdGhpc307Ri5wcm90b3R5cGUuc2V0VGV4dFBhdGg9ZnVuY3Rpb24oYSxlKXt2YXIgYj10aGlzLmVsZW1lbnQsaD17dGV4dEFuY2hvcjoidGV4dC1hbmNob3IifSx6PSExLHg9dGhpcy50ZXh0UGF0aFdyYXBwZXIsZD0heDtlPUEoITAse2VuYWJsZWQ6ITAsYXR0cmlidXRlczp7ZHk6LTUsc3RhcnRPZmZzZXQ6IjUwJSIsdGV4dEFuY2hvcjoibWlkZGxlIn19LGUpO3ZhciBrPWUuYXR0cmlidXRlcztpZihhJiZlJiZlLmVuYWJsZWQpe3gmJm51bGw9PT14LmVsZW1lbnQucGFyZW50Tm9kZT8oZD0hMCx4PXguZGVzdHJveSgpKTp4JiZ0aGlzLnJlbW92ZVRleHRPdXRsaW5lLmNhbGwoeC5wYXJlbnRHcm91cCxbXS5zbGljZS5jYWxsKGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRzcGFuIikpKTt0aGlzLm9wdGlvbnMmJnRoaXMub3B0aW9ucy5wYWRkaW5nJiYoay5keD0tdGhpcy5vcHRpb25zLnBhZGRpbmcpO3h8fCh0aGlzLnRleHRQYXRoV3JhcHBlcj14PXRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgidGV4dFBhdGgiKSwKej0hMCk7dmFyIGw9eC5lbGVtZW50OyhlPWEuZWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikpfHxhLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJpZCIsZT1NKCkpO2lmKGQpZm9yKGE9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgidHNwYW4iKTthLmxlbmd0aDspYVswXS5zZXRBdHRyaWJ1dGUoInkiLDApLGYoay5keCkmJmFbMF0uc2V0QXR0cmlidXRlKCJ4Iiwtay5keCksbC5hcHBlbmRDaGlsZChhWzBdKTt6JiZ4JiZ4LmFkZCh7ZWxlbWVudDp0aGlzLnRleHQ/dGhpcy50ZXh0LmVsZW1lbnQ6Yn0pO2wuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCJocmVmIix0aGlzLnJlbmRlcmVyLnVybCsiIyIrZSk7SShrLmR5KSYmKGwucGFyZW50Tm9kZS5zZXRBdHRyaWJ1dGUoImR5IixrLmR5KSxkZWxldGUgay5keSk7SShrLmR4KSYmKGwucGFyZW50Tm9kZS5zZXRBdHRyaWJ1dGUoImR4IixrLmR4KSxkZWxldGUgay5keCk7dShrLGZ1bmN0aW9uKGIsYSl7bC5zZXRBdHRyaWJ1dGUoaFthXXx8CmEsYil9KTtiLnJlbW92ZUF0dHJpYnV0ZSgidHJhbnNmb3JtIik7dGhpcy5yZW1vdmVUZXh0T3V0bGluZS5jYWxsKHgsW10uc2xpY2UuY2FsbChiLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0c3BhbiIpKSk7dGhpcy50ZXh0JiYhdGhpcy5yZW5kZXJlci5zdHlsZWRNb2RlJiZ0aGlzLmF0dHIoe2ZpbGw6Im5vbmUiLCJzdHJva2Utd2lkdGgiOjB9KTt0aGlzLmFwcGx5VGV4dE91dGxpbmU9dGhpcy51cGRhdGVUcmFuc2Zvcm09Sn1lbHNlIHgmJihkZWxldGUgdGhpcy51cGRhdGVUcmFuc2Zvcm0sZGVsZXRlIHRoaXMuYXBwbHlUZXh0T3V0bGluZSx0aGlzLmRlc3Ryb3lUZXh0UGF0aChiLGEpLHRoaXMudXBkYXRlVHJhbnNmb3JtKCksdGhpcy5vcHRpb25zJiZ0aGlzLm9wdGlvbnMucm90YXRpb24mJnRoaXMuYXBwbHlUZXh0T3V0bGluZSh0aGlzLm9wdGlvbnMuc3R5bGUudGV4dE91dGxpbmUpKTtyZXR1cm4gdGhpc307Ri5wcm90b3R5cGUuc2hhZG93PWZ1bmN0aW9uKGEsZSxiKXt2YXIgaD0KW10sej10aGlzLmVsZW1lbnQseD0hMSxmPXRoaXMub2xkU2hhZG93T3B0aW9uczt2YXIgZD17Y29sb3I6IiMwMDAwMDAiLG9mZnNldFg6MSxvZmZzZXRZOjEsb3BhY2l0eTouMTUsd2lkdGg6M307dmFyIGs7ITA9PT1hP2s9ZDoib2JqZWN0Ij09PXR5cGVvZiBhJiYoaz1tKGQsYSkpO2smJihrJiZmJiZ1KGssZnVuY3Rpb24oYixoKXtiIT09ZltoXSYmKHg9ITApfSkseCYmdGhpcy5kZXN0cm95U2hhZG93cygpLHRoaXMub2xkU2hhZG93T3B0aW9ucz1rKTtpZighayl0aGlzLmRlc3Ryb3lTaGFkb3dzKCk7ZWxzZSBpZighdGhpcy5zaGFkb3dzKXt2YXIgbD1rLm9wYWNpdHkvay53aWR0aDt2YXIgQT10aGlzLnBhcmVudEludmVydGVkPyJ0cmFuc2xhdGUoLTEsLTEpIjoidHJhbnNsYXRlKCIray5vZmZzZXRYKyIsICIray5vZmZzZXRZKyIpIjtmb3IoZD0xO2Q8PWsud2lkdGg7ZCsrKXt2YXIgcD16LmNsb25lTm9kZSghMSk7dmFyIHc9MiprLndpZHRoKzEtMipkO24ocCx7c3Ryb2tlOmEuY29sb3J8fAoiIzAwMDAwMCIsInN0cm9rZS1vcGFjaXR5IjpsKmQsInN0cm9rZS13aWR0aCI6dyx0cmFuc2Zvcm06QSxmaWxsOiJub25lIn0pO3Auc2V0QXR0cmlidXRlKCJjbGFzcyIsKHAuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIikrIiBoaWdoY2hhcnRzLXNoYWRvdyIpO2ImJihuKHAsImhlaWdodCIsTWF0aC5tYXgobihwLCJoZWlnaHQiKS13LDApKSxwLmN1dEhlaWdodD13KTtlP2UuZWxlbWVudC5hcHBlbmRDaGlsZChwKTp6LnBhcmVudE5vZGUmJnoucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocCx6KTtoLnB1c2gocCl9dGhpcy5zaGFkb3dzPWh9cmV0dXJuIHRoaXN9O0YucHJvdG90eXBlLnNob3c9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYXR0cih7dmlzaWJpbGl0eTphPyJpbmhlcml0IjoidmlzaWJsZSJ9KX07Ri5wcm90b3R5cGUuc3Ryb2tlU2V0dGVyPWZ1bmN0aW9uKGEsZSxiKXt0aGlzW2VdPWE7dGhpcy5zdHJva2UmJnRoaXNbInN0cm9rZS13aWR0aCJdPyhGLnByb3RvdHlwZS5maWxsU2V0dGVyLmNhbGwodGhpcywKdGhpcy5zdHJva2UsInN0cm9rZSIsYiksYi5zZXRBdHRyaWJ1dGUoInN0cm9rZS13aWR0aCIsdGhpc1sic3Ryb2tlLXdpZHRoIl0pLHRoaXMuaGFzU3Ryb2tlPSEwKToic3Ryb2tlLXdpZHRoIj09PWUmJjA9PT1hJiZ0aGlzLmhhc1N0cm9rZT8oYi5yZW1vdmVBdHRyaWJ1dGUoInN0cm9rZSIpLHRoaXMuaGFzU3Ryb2tlPSExKTp0aGlzLnJlbmRlcmVyLnN0eWxlZE1vZGUmJnRoaXNbInN0cm9rZS13aWR0aCJdJiYoYi5zZXRBdHRyaWJ1dGUoInN0cm9rZS13aWR0aCIsdGhpc1sic3Ryb2tlLXdpZHRoIl0pLHRoaXMuaGFzU3Ryb2tlPSEwKX07Ri5wcm90b3R5cGUuc3Ryb2tlV2lkdGg9ZnVuY3Rpb24oKXtpZighdGhpcy5yZW5kZXJlci5zdHlsZWRNb2RlKXJldHVybiB0aGlzWyJzdHJva2Utd2lkdGgiXXx8MDt2YXIgYT10aGlzLmdldFN0eWxlKCJzdHJva2Utd2lkdGgiKSxlPTA7aWYoYS5pbmRleE9mKCJweCIpPT09YS5sZW5ndGgtMillPVAoYSk7ZWxzZSBpZigiIiE9PWEpe3ZhciBiPQpCLmNyZWF0ZUVsZW1lbnROUyhHLCJyZWN0Iik7bihiLHt3aWR0aDphLCJzdHJva2Utd2lkdGgiOjB9KTt0aGlzLmVsZW1lbnQucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChiKTtlPWIuZ2V0QkJveCgpLndpZHRoO2IucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKX1yZXR1cm4gZX07Ri5wcm90b3R5cGUuc3ltYm9sQXR0cj1mdW5jdGlvbihhKXt2YXIgZT10aGlzOyJ4IHkgciBzdGFydCBlbmQgd2lkdGggaGVpZ2h0IGlubmVyUiBhbmNob3JYIGFuY2hvclkgY2xvY2t3aXNlIi5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24oYil7ZVtiXT1FKGFbYl0sZVtiXSl9KTtlLmF0dHIoe2Q6ZS5yZW5kZXJlci5zeW1ib2xzW2Uuc3ltYm9sTmFtZV0oZS54LGUueSxlLndpZHRoLGUuaGVpZ2h0LGUpfSl9O0YucHJvdG90eXBlLnRleHRTZXR0ZXI9ZnVuY3Rpb24oYSl7YSE9PXRoaXMudGV4dFN0ciYmKGRlbGV0ZSB0aGlzLnRleHRQeExlbmd0aCx0aGlzLnRleHRTdHI9YSx0aGlzLmFkZGVkJiZ0aGlzLnJlbmRlcmVyLmJ1aWxkVGV4dCh0aGlzKSl9OwpGLnByb3RvdHlwZS50aXRsZVNldHRlcj1mdW5jdGlvbihhKXt2YXIgZT10aGlzLmVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRpdGxlIilbMF07ZXx8KGU9Qi5jcmVhdGVFbGVtZW50TlModGhpcy5TVkdfTlMsInRpdGxlIiksdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGUpKTtlLmZpcnN0Q2hpbGQmJmUucmVtb3ZlQ2hpbGQoZS5maXJzdENoaWxkKTtlLmFwcGVuZENoaWxkKEIuY3JlYXRlVGV4dE5vZGUoU3RyaW5nKEUoYSwiIikpLnJlcGxhY2UoLzxbXj5dKj4vZywiIikucmVwbGFjZSgvJmx0Oy9nLCI8IikucmVwbGFjZSgvJmd0Oy9nLCI+IikpKX07Ri5wcm90b3R5cGUudG9Gcm9udD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuZWxlbWVudDthLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoYSk7cmV0dXJuIHRoaXN9O0YucHJvdG90eXBlLnRyYW5zbGF0ZT1mdW5jdGlvbihhLGUpe3JldHVybiB0aGlzLmF0dHIoe3RyYW5zbGF0ZVg6YSx0cmFuc2xhdGVZOmV9KX07Ri5wcm90b3R5cGUudXBkYXRlU2hhZG93cz0KZnVuY3Rpb24oYSxlLGIpe3ZhciBoPXRoaXMuc2hhZG93cztpZihoKWZvcih2YXIgej1oLmxlbmd0aDt6LS07KWIuY2FsbChoW3pdLCJoZWlnaHQiPT09YT9NYXRoLm1heChlLShoW3pdLmN1dEhlaWdodHx8MCksMCk6ImQiPT09YT90aGlzLmQ6ZSxhLGhbel0pfTtGLnByb3RvdHlwZS51cGRhdGVUcmFuc2Zvcm09ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnRyYW5zbGF0ZVh8fDAsZT10aGlzLnRyYW5zbGF0ZVl8fDAsYj10aGlzLnNjYWxlWCxoPXRoaXMuc2NhbGVZLHo9dGhpcy5pbnZlcnRlZCx4PXRoaXMucm90YXRpb24sZj10aGlzLm1hdHJpeCxkPXRoaXMuZWxlbWVudDt6JiYoYSs9dGhpcy53aWR0aCxlKz10aGlzLmhlaWdodCk7YT1bInRyYW5zbGF0ZSgiK2ErIiwiK2UrIikiXTtJKGYpJiZhLnB1c2goIm1hdHJpeCgiK2Yuam9pbigiLCIpKyIpIik7ej9hLnB1c2goInJvdGF0ZSg5MCkgc2NhbGUoLTEsMSkiKTp4JiZhLnB1c2goInJvdGF0ZSgiK3grIiAiK0UodGhpcy5yb3RhdGlvbk9yaWdpblgsCmQuZ2V0QXR0cmlidXRlKCJ4IiksMCkrIiAiK0UodGhpcy5yb3RhdGlvbk9yaWdpblksZC5nZXRBdHRyaWJ1dGUoInkiKXx8MCkrIikiKTsoSShiKXx8SShoKSkmJmEucHVzaCgic2NhbGUoIitFKGIsMSkrIiAiK0UoaCwxKSsiKSIpO2EubGVuZ3RoJiZkLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIixhLmpvaW4oIiAiKSl9O0YucHJvdG90eXBlLnZpc2liaWxpdHlTZXR0ZXI9ZnVuY3Rpb24oYSxlLGIpeyJpbmhlcml0Ij09PWE/Yi5yZW1vdmVBdHRyaWJ1dGUoZSk6dGhpc1tlXSE9PWEmJmIuc2V0QXR0cmlidXRlKGUsYSk7dGhpc1tlXT1hfTtGLnByb3RvdHlwZS54R2V0dGVyPWZ1bmN0aW9uKGEpeyJjaXJjbGUiPT09dGhpcy5lbGVtZW50Lm5vZGVOYW1lJiYoIngiPT09YT9hPSJjeCI6InkiPT09YSYmKGE9ImN5IikpO3JldHVybiB0aGlzLl9kZWZhdWx0R2V0dGVyKGEpfTtGLnByb3RvdHlwZS56SW5kZXhTZXR0ZXI9ZnVuY3Rpb24oYSxlKXt2YXIgYj10aGlzLnJlbmRlcmVyLGg9dGhpcy5wYXJlbnRHcm91cCwKej0oaHx8YikuZWxlbWVudHx8Yi5ib3gseD10aGlzLmVsZW1lbnQsZj0hMTtiPXo9PT1iLmJveDt2YXIgZD10aGlzLmFkZGVkO3ZhciBrO0koYSk/KHguc2V0QXR0cmlidXRlKCJkYXRhLXotaW5kZXgiLGEpLGE9K2EsdGhpc1tlXT09PWEmJihkPSExKSk6SSh0aGlzW2VdKSYmeC5yZW1vdmVBdHRyaWJ1dGUoImRhdGEtei1pbmRleCIpO3RoaXNbZV09YTtpZihkKXsoYT10aGlzLnpJbmRleCkmJmgmJihoLmhhbmRsZVo9ITApO2U9ei5jaGlsZE5vZGVzO2ZvcihrPWUubGVuZ3RoLTE7MDw9ayYmIWY7ay0tKXtoPWVba107ZD1oLmdldEF0dHJpYnV0ZSgiZGF0YS16LWluZGV4Iik7dmFyIGw9IUkoZCk7aWYoaCE9PXgpaWYoMD5hJiZsJiYhYiYmIWspei5pbnNlcnRCZWZvcmUoeCxlW2tdKSxmPSEwO2Vsc2UgaWYoUChkKTw9YXx8bCYmKCFJKGEpfHwwPD1hKSl6Lmluc2VydEJlZm9yZSh4LGVbaysxXXx8bnVsbCksZj0hMH1mfHwoei5pbnNlcnRCZWZvcmUoeCxlW2I/MzowXXx8bnVsbCksCmY9ITApfXJldHVybiBmfTtyZXR1cm4gRn0oKTtxLnByb3RvdHlwZVsic3Ryb2tlLXdpZHRoU2V0dGVyIl09cS5wcm90b3R5cGUuc3Ryb2tlU2V0dGVyO3EucHJvdG90eXBlLnlHZXR0ZXI9cS5wcm90b3R5cGUueEdldHRlcjtxLnByb3RvdHlwZS5tYXRyaXhTZXR0ZXI9cS5wcm90b3R5cGUucm90YXRpb25PcmlnaW5YU2V0dGVyPXEucHJvdG90eXBlLnJvdGF0aW9uT3JpZ2luWVNldHRlcj1xLnByb3RvdHlwZS5yb3RhdGlvblNldHRlcj1xLnByb3RvdHlwZS5zY2FsZVhTZXR0ZXI9cS5wcm90b3R5cGUuc2NhbGVZU2V0dGVyPXEucHJvdG90eXBlLnRyYW5zbGF0ZVhTZXR0ZXI9cS5wcm90b3R5cGUudHJhbnNsYXRlWVNldHRlcj1xLnByb3RvdHlwZS52ZXJ0aWNhbEFsaWduU2V0dGVyPWZ1bmN0aW9uKGEsZil7dGhpc1tmXT1hO3RoaXMuZG9UcmFuc2Zvcm09ITB9O2MuU1ZHRWxlbWVudD1xO3JldHVybiBjLlNWR0VsZW1lbnR9KTtPKHEsInBhcnRzL1NWR0xhYmVsLmpzIixbcVsicGFydHMvU1ZHRWxlbWVudC5qcyJdLApxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyxjKXt2YXIgcT10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgYz1mdW5jdGlvbihnLEwpe2M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGMsZyl7Yy5fX3Byb3RvX189Z318fGZ1bmN0aW9uKGMsZyl7Zm9yKHZhciBuIGluIGcpZy5oYXNPd25Qcm9wZXJ0eShuKSYmKGNbbl09Z1tuXSl9O3JldHVybiBjKGcsTCl9O3JldHVybiBmdW5jdGlvbihnLEwpe2Z1bmN0aW9uIHYoKXt0aGlzLmNvbnN0cnVjdG9yPWd9YyhnLEwpO2cucHJvdG90eXBlPW51bGw9PT1MP09iamVjdC5jcmVhdGUoTCk6KHYucHJvdG90eXBlPUwucHJvdG90eXBlLG5ldyB2KX19KCkseT1jLmRlZmluZWQsQj1jLmV4dGVuZCxIPWMuaXNOdW1iZXIsRD1jLm1lcmdlLEo9Yy5yZW1vdmVFdmVudDtyZXR1cm4gZnVuY3Rpb24oYyl7ZnVuY3Rpb24gdChnLHYsSyxuLHIsQywKSSxwLG0sZCl7dmFyIGw9Yy5jYWxsKHRoaXMpfHx0aGlzO2wuaW5pdChnLCJnIik7bC50ZXh0U3RyPXY7bC54PUs7bC55PW47bC5hbmNob3JYPUM7bC5hbmNob3JZPUk7bC5iYXNlbGluZT1tO2wuY2xhc3NOYW1lPWQ7ImJ1dHRvbiIhPT1kJiZsLmFkZENsYXNzKCJoaWdoY2hhcnRzLWxhYmVsIik7ZCYmbC5hZGRDbGFzcygiaGlnaGNoYXJ0cy0iK2QpO2wudGV4dD1nLnRleHQoIiIsMCwwLHApLmF0dHIoe3pJbmRleDoxfSk7aWYoInN0cmluZyI9PT10eXBlb2Ygcil7dmFyIGs9L151cmxcKCguKj8pXCkkLy50ZXN0KHIpO2lmKGwucmVuZGVyZXIuc3ltYm9sc1tyXXx8aylsLnN5bWJvbEtleT1yfWwuYkJveD10LmVtcHR5QkJveDtsLnBhZGRpbmc9MztsLnBhZGRpbmdMZWZ0PTA7bC5iYXNlbGluZU9mZnNldD0wO2wubmVlZHNCb3g9Zy5zdHlsZWRNb2RlfHxrO2wuZGVmZXJyZWRBdHRyPXt9O2wuYWxpZ25GYWN0b3I9MDtyZXR1cm4gbH1xKHQsYyk7dC5wcm90b3R5cGUuYWxpZ25TZXR0ZXI9CmZ1bmN0aW9uKGMpe2M9e2xlZnQ6MCxjZW50ZXI6LjUscmlnaHQ6MX1bY107YyE9PXRoaXMuYWxpZ25GYWN0b3ImJih0aGlzLmFsaWduRmFjdG9yPWMsdGhpcy5iQm94JiZIKHRoaXMueFNldHRpbmcpJiZ0aGlzLmF0dHIoe3g6dGhpcy54U2V0dGluZ30pKX07dC5wcm90b3R5cGUuYW5jaG9yWFNldHRlcj1mdW5jdGlvbihjLGcpe3RoaXMuYW5jaG9yWD1jO3RoaXMuYm94QXR0cihnLE1hdGgucm91bmQoYyktdGhpcy5nZXRDcmlzcEFkanVzdCgpLXRoaXMueFNldHRpbmcpfTt0LnByb3RvdHlwZS5hbmNob3JZU2V0dGVyPWZ1bmN0aW9uKGMsZyl7dGhpcy5hbmNob3JZPWM7dGhpcy5ib3hBdHRyKGcsYy10aGlzLnlTZXR0aW5nKX07dC5wcm90b3R5cGUuYm94QXR0cj1mdW5jdGlvbihjLGcpe3RoaXMuYm94P3RoaXMuYm94LmF0dHIoYyxnKTp0aGlzLmRlZmVycmVkQXR0cltjXT1nfTt0LnByb3RvdHlwZS5jc3M9ZnVuY3Rpb24oYyl7aWYoYyl7dmFyIHY9e307Yz1EKGMpO3QudGV4dFByb3BzLmZvckVhY2goZnVuY3Rpb24obil7InVuZGVmaW5lZCIhPT0KdHlwZW9mIGNbbl0mJih2W25dPWNbbl0sZGVsZXRlIGNbbl0pfSk7dGhpcy50ZXh0LmNzcyh2KTt2YXIgTD0iZm9udFNpemUiaW4gdnx8ImZvbnRXZWlnaHQiaW4gdjtpZigid2lkdGgiaW4gdnx8TCl0aGlzLnVwZGF0ZUJveFNpemUoKSxMJiZ0aGlzLnVwZGF0ZVRleHRQYWRkaW5nKCl9cmV0dXJuIGcucHJvdG90eXBlLmNzcy5jYWxsKHRoaXMsYyl9O3QucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtKKHRoaXMuZWxlbWVudCwibW91c2VlbnRlciIpO0oodGhpcy5lbGVtZW50LCJtb3VzZWxlYXZlIik7dGhpcy50ZXh0JiZ0aGlzLnRleHQuZGVzdHJveSgpO3RoaXMuYm94JiYodGhpcy5ib3g9dGhpcy5ib3guZGVzdHJveSgpKTtnLnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyl9O3QucHJvdG90eXBlLmZpbGxTZXR0ZXI9ZnVuY3Rpb24oYyxnKXtjJiYodGhpcy5uZWVkc0JveD0hMCk7dGhpcy5maWxsPWM7dGhpcy5ib3hBdHRyKGcsYyl9O3QucHJvdG90eXBlLmdldEJCb3g9CmZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5iQm94LGc9dGhpcy5wYWRkaW5nO3JldHVybnt3aWR0aDpjLndpZHRoKzIqZyxoZWlnaHQ6Yy5oZWlnaHQrMipnLHg6Yy54LWcseTpjLnktZ319O3QucHJvdG90eXBlLmdldENyaXNwQWRqdXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVuZGVyZXIuc3R5bGVkTW9kZSYmdGhpcy5ib3g/dGhpcy5ib3guc3Ryb2tlV2lkdGgoKSUyLzI6KHRoaXNbInN0cm9rZS13aWR0aCJdP3BhcnNlSW50KHRoaXNbInN0cm9rZS13aWR0aCJdLDEwKTowKSUyLzJ9O3QucHJvdG90eXBlLmhlaWdodFNldHRlcj1mdW5jdGlvbihjKXt0aGlzLmhlaWdodFNldHRpbmc9Y307dC5wcm90b3R5cGUub249ZnVuY3Rpb24oYyx2KXt2YXIgdD10aGlzLG49dC50ZXh0LHI9biYmIlNQQU4iPT09bi5lbGVtZW50LnRhZ05hbWU/bjp2b2lkIDA7aWYocil7dmFyIEM9ZnVuY3Rpb24oQyl7KCJtb3VzZWVudGVyIj09PWN8fCJtb3VzZWxlYXZlIj09PWMpJiZDLnJlbGF0ZWRUYXJnZXQgaW5zdGFuY2VvZgpFbGVtZW50JiYodC5lbGVtZW50LmNvbnRhaW5zKEMucmVsYXRlZFRhcmdldCl8fHIuZWxlbWVudC5jb250YWlucyhDLnJlbGF0ZWRUYXJnZXQpKXx8di5jYWxsKHQuZWxlbWVudCxDKX07ci5vbihjLEMpfWcucHJvdG90eXBlLm9uLmNhbGwodCxjLEN8fHYpO3JldHVybiB0fTt0LnByb3RvdHlwZS5vbkFkZD1mdW5jdGlvbigpe3ZhciBjPXRoaXMudGV4dFN0cjt0aGlzLnRleHQuYWRkKHRoaXMpO3RoaXMuYXR0cih7dGV4dDp5KGMpP2M6IiIseDp0aGlzLngseTp0aGlzLnl9KTt0aGlzLmJveCYmeSh0aGlzLmFuY2hvclgpJiZ0aGlzLmF0dHIoe2FuY2hvclg6dGhpcy5hbmNob3JYLGFuY2hvclk6dGhpcy5hbmNob3JZfSl9O3QucHJvdG90eXBlLnBhZGRpbmdTZXR0ZXI9ZnVuY3Rpb24oYyl7eShjKSYmYyE9PXRoaXMucGFkZGluZyYmKHRoaXMucGFkZGluZz1jLHRoaXMudXBkYXRlVGV4dFBhZGRpbmcoKSl9O3QucHJvdG90eXBlLnBhZGRpbmdMZWZ0U2V0dGVyPWZ1bmN0aW9uKGMpe3koYykmJgpjIT09dGhpcy5wYWRkaW5nTGVmdCYmKHRoaXMucGFkZGluZ0xlZnQ9Yyx0aGlzLnVwZGF0ZVRleHRQYWRkaW5nKCkpfTt0LnByb3RvdHlwZS5yU2V0dGVyPWZ1bmN0aW9uKGMsZyl7dGhpcy5ib3hBdHRyKGcsYyl9O3QucHJvdG90eXBlLnNoYWRvdz1mdW5jdGlvbihjKXtjJiYhdGhpcy5yZW5kZXJlci5zdHlsZWRNb2RlJiYodGhpcy51cGRhdGVCb3hTaXplKCksdGhpcy5ib3gmJnRoaXMuYm94LnNoYWRvdyhjKSk7cmV0dXJuIHRoaXN9O3QucHJvdG90eXBlLnN0cm9rZVNldHRlcj1mdW5jdGlvbihjLGcpe3RoaXMuc3Ryb2tlPWM7dGhpcy5ib3hBdHRyKGcsYyl9O3QucHJvdG90eXBlWyJzdHJva2Utd2lkdGhTZXR0ZXIiXT1mdW5jdGlvbihjLGcpe2MmJih0aGlzLm5lZWRzQm94PSEwKTt0aGlzWyJzdHJva2Utd2lkdGgiXT1jO3RoaXMuYm94QXR0cihnLGMpfTt0LnByb3RvdHlwZVsidGV4dC1hbGlnblNldHRlciJdPWZ1bmN0aW9uKGMpe3RoaXMudGV4dEFsaWduPWN9O3QucHJvdG90eXBlLnRleHRTZXR0ZXI9CmZ1bmN0aW9uKGMpeyJ1bmRlZmluZWQiIT09dHlwZW9mIGMmJnRoaXMudGV4dC5hdHRyKHt0ZXh0OmN9KTt0aGlzLnVwZGF0ZUJveFNpemUoKTt0aGlzLnVwZGF0ZVRleHRQYWRkaW5nKCl9O3QucHJvdG90eXBlLnVwZGF0ZUJveFNpemU9ZnVuY3Rpb24oKXt2YXIgYz10aGlzLnRleHQuZWxlbWVudC5zdHlsZSxnPXt9LEc9dGhpcy5wYWRkaW5nLG49dGhpcy5wYWRkaW5nTGVmdCxyPUgodGhpcy53aWR0aFNldHRpbmcpJiZIKHRoaXMuaGVpZ2h0U2V0dGluZykmJiF0aGlzLnRleHRBbGlnbnx8IXkodGhpcy50ZXh0LnRleHRTdHIpP3QuZW1wdHlCQm94OnRoaXMudGV4dC5nZXRCQm94KCk7dGhpcy53aWR0aD0odGhpcy53aWR0aFNldHRpbmd8fHIud2lkdGh8fDApKzIqRytuO3RoaXMuaGVpZ2h0PSh0aGlzLmhlaWdodFNldHRpbmd8fHIuaGVpZ2h0fHwwKSsyKkc7dGhpcy5iYXNlbGluZU9mZnNldD1HK01hdGgubWluKHRoaXMucmVuZGVyZXIuZm9udE1ldHJpY3MoYyYmYy5mb250U2l6ZSwKdGhpcy50ZXh0KS5iLHIuaGVpZ2h0fHxJbmZpbml0eSk7dGhpcy5uZWVkc0JveCYmKHRoaXMuYm94fHwoYz10aGlzLmJveD10aGlzLnN5bWJvbEtleT90aGlzLnJlbmRlcmVyLnN5bWJvbCh0aGlzLnN5bWJvbEtleSk6dGhpcy5yZW5kZXJlci5yZWN0KCksYy5hZGRDbGFzcygoImJ1dHRvbiI9PT10aGlzLmNsYXNzTmFtZT8iIjoiaGlnaGNoYXJ0cy1sYWJlbC1ib3giKSsodGhpcy5jbGFzc05hbWU/IiBoaWdoY2hhcnRzLSIrdGhpcy5jbGFzc05hbWUrIi1ib3giOiIiKSksYy5hZGQodGhpcyksYz10aGlzLmdldENyaXNwQWRqdXN0KCksZy54PWMsZy55PSh0aGlzLmJhc2VsaW5lPy10aGlzLmJhc2VsaW5lT2Zmc2V0OjApK2MpLGcud2lkdGg9TWF0aC5yb3VuZCh0aGlzLndpZHRoKSxnLmhlaWdodD1NYXRoLnJvdW5kKHRoaXMuaGVpZ2h0KSx0aGlzLmJveC5hdHRyKEIoZyx0aGlzLmRlZmVycmVkQXR0cikpLHRoaXMuZGVmZXJyZWRBdHRyPXt9KTt0aGlzLmJCb3g9cn07dC5wcm90b3R5cGUudXBkYXRlVGV4dFBhZGRpbmc9CmZ1bmN0aW9uKCl7dmFyIGM9dGhpcy50ZXh0LGc9dGhpcy5iYXNlbGluZT8wOnRoaXMuYmFzZWxpbmVPZmZzZXQsdD10aGlzLnBhZGRpbmdMZWZ0K3RoaXMucGFkZGluZzt5KHRoaXMud2lkdGhTZXR0aW5nKSYmdGhpcy5iQm94JiYoImNlbnRlciI9PT10aGlzLnRleHRBbGlnbnx8InJpZ2h0Ij09PXRoaXMudGV4dEFsaWduKSYmKHQrPXtjZW50ZXI6LjUscmlnaHQ6MX1bdGhpcy50ZXh0QWxpZ25dKih0aGlzLndpZHRoU2V0dGluZy10aGlzLmJCb3gud2lkdGgpKTtpZih0IT09Yy54fHxnIT09Yy55KWMuYXR0cigieCIsdCksYy5oYXNCb3hXaWR0aENoYW5nZWQmJih0aGlzLmJCb3g9Yy5nZXRCQm94KCEwKSx0aGlzLnVwZGF0ZUJveFNpemUoKSksInVuZGVmaW5lZCIhPT10eXBlb2YgZyYmYy5hdHRyKCJ5IixnKTtjLng9dDtjLnk9Z307dC5wcm90b3R5cGUud2lkdGhTZXR0ZXI9ZnVuY3Rpb24oYyl7dGhpcy53aWR0aFNldHRpbmc9SChjKT9jOnZvaWQgMH07dC5wcm90b3R5cGUueFNldHRlcj0KZnVuY3Rpb24oYyl7dGhpcy54PWM7dGhpcy5hbGlnbkZhY3RvciYmKGMtPXRoaXMuYWxpZ25GYWN0b3IqKCh0aGlzLndpZHRoU2V0dGluZ3x8dGhpcy5iQm94LndpZHRoKSsyKnRoaXMucGFkZGluZyksdGhpc1siZm9yY2VBbmltYXRlOngiXT0hMCk7dGhpcy54U2V0dGluZz1NYXRoLnJvdW5kKGMpO3RoaXMuYXR0cigidHJhbnNsYXRlWCIsdGhpcy54U2V0dGluZyl9O3QucHJvdG90eXBlLnlTZXR0ZXI9ZnVuY3Rpb24oYyl7dGhpcy55U2V0dGluZz10aGlzLnk9TWF0aC5yb3VuZChjKTt0aGlzLmF0dHIoInRyYW5zbGF0ZVkiLHRoaXMueVNldHRpbmcpfTt0LmVtcHR5QkJveD17d2lkdGg6MCxoZWlnaHQ6MCx4OjAseTowfTt0LnRleHRQcm9wcz0iY29sb3IgY3Vyc29yIGRpcmVjdGlvbiBmb250RmFtaWx5IGZvbnRTaXplIGZvbnRTdHlsZSBmb250V2VpZ2h0IGxpbmVIZWlnaHQgdGV4dEFsaWduIHRleHREZWNvcmF0aW9uIHRleHRPdXRsaW5lIHRleHRPdmVyZmxvdyB3aWR0aCIuc3BsaXQoIiAiKTsKcmV0dXJuIHR9KGcpfSk7TyhxLCJwYXJ0cy9TVkdSZW5kZXJlci5qcyIsW3FbInBhcnRzL0NvbG9yLmpzIl0scVsicGFydHMvR2xvYmFscy5qcyJdLHFbInBhcnRzL1NWR0VsZW1lbnQuanMiXSxxWyJwYXJ0cy9TVkdMYWJlbC5qcyJdLHFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihnLGMscSx5LEIpe3ZhciBIPUIuYWRkRXZlbnQsRD1CLmF0dHIsSj1CLmNyZWF0ZUVsZW1lbnQsdD1CLmNzcyxHPUIuZGVmaW5lZCxMPUIuZGVzdHJveU9iamVjdFByb3BlcnRpZXMsdj1CLmV4dGVuZCxLPUIuaXNBcnJheSxuPUIuaXNOdW1iZXIscj1CLmlzT2JqZWN0LEM9Qi5pc1N0cmluZyxJPUIubWVyZ2UscD1CLm9iamVjdEVhY2gsbT1CLnBpY2ssZD1CLnBJbnQsbD1CLnNwbGF0LGs9Qi51bmlxdWVLZXksZj1jLmNoYXJ0cyxhPWMuZGVnMnJhZCxBPWMuZG9jLHU9Yy5pc0ZpcmVmb3gsRT1jLmlzTVMsUD1jLmlzV2ViS2l0O0I9Yy5ub29wO3ZhciB3PWMuc3ZnLE09Yy5TVkdfTlMsRj1jLnN5bWJvbFNpemVzLApRPWMud2luLGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBiKGIsYSxlLGYsZCxrLGwpe3RoaXMud2lkdGg9dGhpcy51cmw9dGhpcy5zdHlsZT10aGlzLmlzU1ZHPXRoaXMuaW1nQ291bnQ9dGhpcy5oZWlnaHQ9dGhpcy5ncmFkaWVudHM9dGhpcy5nbG9iYWxBbmltYXRpb249dGhpcy5kZWZzPXRoaXMuY2hhcnRJbmRleD10aGlzLmNhY2hlS2V5cz10aGlzLmNhY2hlPXRoaXMuYm94V3JhcHBlcj10aGlzLmJveD10aGlzLmFsaWduZWRPYmplY3RzPXZvaWQgMDt0aGlzLmluaXQoYixhLGUsZixkLGssbCl9Yi5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihiLGEsZSxmLGQsayxsKXt2YXIgaD10aGlzLmNyZWF0ZUVsZW1lbnQoInN2ZyIpLmF0dHIoe3ZlcnNpb246IjEuMSIsImNsYXNzIjoiaGlnaGNoYXJ0cy1yb290In0pO2x8fGguY3NzKHRoaXMuZ2V0U3R5bGUoZikpO2Y9aC5lbGVtZW50O2IuYXBwZW5kQ2hpbGQoZik7RChiLCJkaXIiLCJsdHIiKTstMT09PWIuaW5uZXJIVE1MLmluZGV4T2YoInhtbG5zIikmJgpEKGYsInhtbG5zIix0aGlzLlNWR19OUyk7dGhpcy5pc1NWRz0hMDt0aGlzLmJveD1mO3RoaXMuYm94V3JhcHBlcj1oO3RoaXMuYWxpZ25lZE9iamVjdHM9W107dGhpcy51cmw9KHV8fFApJiZBLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJiYXNlIikubGVuZ3RoP1EubG9jYXRpb24uaHJlZi5zcGxpdCgiIyIpWzBdLnJlcGxhY2UoLzxbXj5dKj4vZywiIikucmVwbGFjZSgvKFtcKCdcKV0pL2csIlxcJDEiKS5yZXBsYWNlKC8gL2csIiUyMCIpOiIiO3RoaXMuY3JlYXRlRWxlbWVudCgiZGVzYyIpLmFkZCgpLmVsZW1lbnQuYXBwZW5kQ2hpbGQoQS5jcmVhdGVUZXh0Tm9kZSgiQ3JlYXRlZCB3aXRoIEhpZ2hjaGFydHMgOC4xLjIiKSk7dGhpcy5kZWZzPXRoaXMuY3JlYXRlRWxlbWVudCgiZGVmcyIpLmFkZCgpO3RoaXMuYWxsb3dIVE1MPWs7dGhpcy5mb3JFeHBvcnQ9ZDt0aGlzLnN0eWxlZE1vZGU9bDt0aGlzLmdyYWRpZW50cz17fTt0aGlzLmNhY2hlPXt9O3RoaXMuY2FjaGVLZXlzPVtdO3RoaXMuaW1nQ291bnQ9CjA7dGhpcy5zZXRTaXplKGEsZSwhMSk7dmFyIHg7dSYmYi5nZXRCb3VuZGluZ0NsaWVudFJlY3QmJihhPWZ1bmN0aW9uKCl7dChiLHtsZWZ0OjAsdG9wOjB9KTt4PWIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dChiLHtsZWZ0Ok1hdGguY2VpbCh4LmxlZnQpLXgubGVmdCsicHgiLHRvcDpNYXRoLmNlaWwoeC50b3ApLXgudG9wKyJweCJ9KX0sYSgpLHRoaXMudW5TdWJQaXhlbEZpeD1IKFEsInJlc2l6ZSIsYSkpfTtiLnByb3RvdHlwZS5kZWZpbml0aW9uPWZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGgoYixlKXt2YXIgZjtsKGIpLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIHg9YS5jcmVhdGVFbGVtZW50KGIudGFnTmFtZSksej17fTtwKGIsZnVuY3Rpb24oYixoKXsidGFnTmFtZSIhPT1oJiYiY2hpbGRyZW4iIT09aCYmInRleHRDb250ZW50IiE9PWgmJih6W2hdPWIpfSk7eC5hdHRyKHopO3guYWRkKGV8fGEuZGVmcyk7Yi50ZXh0Q29udGVudCYmeC5lbGVtZW50LmFwcGVuZENoaWxkKEEuY3JlYXRlVGV4dE5vZGUoYi50ZXh0Q29udGVudCkpOwpoKGIuY2hpbGRyZW58fFtdLHgpO2Y9eH0pO3JldHVybiBmfXZhciBhPXRoaXM7cmV0dXJuIGgoYil9O2IucHJvdG90eXBlLmdldFN0eWxlPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLnN0eWxlPXYoe2ZvbnRGYW1pbHk6JyJMdWNpZGEgR3JhbmRlIiwgIkx1Y2lkYSBTYW5zIFVuaWNvZGUiLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmJyxmb250U2l6ZToiMTJweCJ9LGIpfTtiLnByb3RvdHlwZS5zZXRTdHlsZT1mdW5jdGlvbihiKXt0aGlzLmJveFdyYXBwZXIuY3NzKHRoaXMuZ2V0U3R5bGUoYikpfTtiLnByb3RvdHlwZS5pc0hpZGRlbj1mdW5jdGlvbigpe3JldHVybiF0aGlzLmJveFdyYXBwZXIuZ2V0QkJveCgpLndpZHRofTtiLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5kZWZzO3RoaXMuYm94PW51bGw7dGhpcy5ib3hXcmFwcGVyPXRoaXMuYm94V3JhcHBlci5kZXN0cm95KCk7TCh0aGlzLmdyYWRpZW50c3x8e30pO3RoaXMuZ3JhZGllbnRzPW51bGw7CmImJih0aGlzLmRlZnM9Yi5kZXN0cm95KCkpO3RoaXMudW5TdWJQaXhlbEZpeCYmdGhpcy51blN1YlBpeGVsRml4KCk7cmV0dXJuIHRoaXMuYWxpZ25lZE9iamVjdHM9bnVsbH07Yi5wcm90b3R5cGUuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihiKXt2YXIgaD1uZXcgdGhpcy5FbGVtZW50O2guaW5pdCh0aGlzLGIpO3JldHVybiBofTtiLnByb3RvdHlwZS5nZXRSYWRpYWxBdHRyPWZ1bmN0aW9uKGIsYSl7cmV0dXJue2N4OmJbMF0tYlsyXS8yK2EuY3gqYlsyXSxjeTpiWzFdLWJbMl0vMithLmN5KmJbMl0scjphLnIqYlsyXX19O2IucHJvdG90eXBlLnRydW5jYXRlPWZ1bmN0aW9uKGIsYSxlLGYsZCxrLGwpe3ZhciBoPXRoaXMseD1iLnJvdGF0aW9uLHosdT1mPzE6MCxOPShlfHxmKS5sZW5ndGgsbT1OLHA9W10sdz1mdW5jdGlvbihiKXthLmZpcnN0Q2hpbGQmJmEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKTtiJiZhLmFwcGVuZENoaWxkKEEuY3JlYXRlVGV4dE5vZGUoYikpfSxjPWZ1bmN0aW9uKHgsCnope3o9enx8eDtpZigidW5kZWZpbmVkIj09PXR5cGVvZiBwW3pdKWlmKGEuZ2V0U3ViU3RyaW5nTGVuZ3RoKXRyeXtwW3pdPWQrYS5nZXRTdWJTdHJpbmdMZW5ndGgoMCxmP3orMTp6KX1jYXRjaChoYSl7IiJ9ZWxzZSBoLmdldFNwYW5XaWR0aCYmKHcobChlfHxmLHgpKSxwW3pdPWQraC5nZXRTcGFuV2lkdGgoYixhKSk7cmV0dXJuIHBbel19LEM7Yi5yb3RhdGlvbj0wO3ZhciByPWMoYS50ZXh0Q29udGVudC5sZW5ndGgpO2lmKEM9ZCtyPmspe2Zvcig7dTw9TjspbT1NYXRoLmNlaWwoKHUrTikvMiksZiYmKHo9bChmLG0pKSxyPWMobSx6JiZ6Lmxlbmd0aC0xKSx1PT09Tj91PU4rMTpyPms/Tj1tLTE6dT1tOzA9PT1OP3coIiIpOmUmJk49PT1lLmxlbmd0aC0xfHx3KHp8fGwoZXx8ZixtKSl9ZiYmZi5zcGxpY2UoMCxtKTtiLmFjdHVhbFdpZHRoPXI7Yi5yb3RhdGlvbj14O3JldHVybiBDfTtiLnByb3RvdHlwZS5idWlsZFRleHQ9ZnVuY3Rpb24oYil7dmFyIGg9Yi5lbGVtZW50LGE9dGhpcywKZT1hLmZvckV4cG9ydCxmPW0oYi50ZXh0U3RyLCIiKS50b1N0cmluZygpLGs9LTEhPT1mLmluZGV4T2YoIjwiKSxsPWguY2hpbGROb2Rlcyx1LGM9RChoLCJ4Iikscj1iLnN0eWxlcyxFPWIudGV4dFdpZHRoLG49ciYmci5saW5lSGVpZ2h0LFM9ciYmci50ZXh0T3V0bGluZSxnPXImJiJlbGxpcHNpcyI9PT1yLnRleHRPdmVyZmxvdyxJPXImJiJub3dyYXAiPT09ci53aGl0ZVNwYWNlLEY9ciYmci5mb250U2l6ZSxQLHY9bC5sZW5ndGg7cj1FJiYhYi5hZGRlZCYmdGhpcy5ib3g7dmFyIEc9ZnVuY3Rpb24oYil7dmFyIGU7YS5zdHlsZWRNb2RlfHwoZT0vKHB4fGVtKSQvLnRlc3QoYiYmYi5zdHlsZS5mb250U2l6ZSk/Yi5zdHlsZS5mb250U2l6ZTpGfHxhLnN0eWxlLmZvbnRTaXplfHwxMik7cmV0dXJuIG4/ZChuKTphLmZvbnRNZXRyaWNzKGUsYi5nZXRBdHRyaWJ1dGUoInN0eWxlIik/YjpoKS5ofSxRPWZ1bmN0aW9uKGIsaCl7cChhLmVzY2FwZXMsZnVuY3Rpb24oYSxlKXtoJiYtMSE9PQpoLmluZGV4T2YoYSl8fChiPWIudG9TdHJpbmcoKS5yZXBsYWNlKG5ldyBSZWdFeHAoYSwiZyIpLGUpKX0pO3JldHVybiBifSxxPWZ1bmN0aW9uKGIsaCl7dmFyIGE9Yi5pbmRleE9mKCI8Iik7Yj1iLnN1YnN0cmluZyhhLGIuaW5kZXhPZigiPiIpLWEpO2E9Yi5pbmRleE9mKGgrIj0iKTtpZigtMSE9PWEmJihhPWEraC5sZW5ndGgrMSxoPWIuY2hhckF0KGEpLCciJz09PWh8fCInIj09PWgpKXJldHVybiBiPWIuc3Vic3RyaW5nKGErMSksYi5zdWJzdHJpbmcoMCxiLmluZGV4T2YoaCkpfSxLPS88YnIuKj8+L2c7dmFyIEo9W2YsZyxJLG4sUyxGLEVdLmpvaW4oKTtpZihKIT09Yi50ZXh0Q2FjaGUpe2ZvcihiLnRleHRDYWNoZT1KO3YtLTspaC5yZW1vdmVDaGlsZChsW3ZdKTtrfHxTfHxnfHxFfHwtMSE9PWYuaW5kZXhPZigiICIpJiYoIUl8fEsudGVzdChmKSk/KHImJnIuYXBwZW5kQ2hpbGQoaCksaz8oZj1hLnN0eWxlZE1vZGU/Zi5yZXBsYWNlKC88KGJ8c3Ryb25nKT4vZywnPHNwYW4gY2xhc3M9ImhpZ2hjaGFydHMtc3Ryb25nIj4nKS5yZXBsYWNlKC88KGl8ZW0pPi9nLAonPHNwYW4gY2xhc3M9ImhpZ2hjaGFydHMtZW1waGFzaXplZCI+Jyk6Zi5yZXBsYWNlKC88KGJ8c3Ryb25nKT4vZywnPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OmJvbGQiPicpLnJlcGxhY2UoLzwoaXxlbSk+L2csJzxzcGFuIHN0eWxlPSJmb250LXN0eWxlOml0YWxpYyI+JyksZj1mLnJlcGxhY2UoLzxhL2csIjxzcGFuIikucmVwbGFjZSgvPFwvKGJ8c3Ryb25nfGl8ZW18YSk+L2csIjwvc3Bhbj4iKS5zcGxpdChLKSk6Zj1bZl0sZj1mLmZpbHRlcihmdW5jdGlvbihiKXtyZXR1cm4iIiE9PWJ9KSxmLmZvckVhY2goZnVuY3Rpb24oZix4KXt2YXIgej0wLGQ9MDtmPWYucmVwbGFjZSgvXlxzK3xccyskL2csIiIpLnJlcGxhY2UoLzxzcGFuL2csInx8fDxzcGFuIikucmVwbGFjZSgvPFwvc3Bhbj4vZywiPC9zcGFuPnx8fCIpO3ZhciBrPWYuc3BsaXQoInx8fCIpO2suZm9yRWFjaChmdW5jdGlvbihmKXtpZigiIiE9PWZ8fDE9PT1rLmxlbmd0aCl7dmFyIGw9e30sTj1BLmNyZWF0ZUVsZW1lbnROUyhhLlNWR19OUywKInRzcGFuIiksbSxwOyhtPXEoZiwiY2xhc3MiKSkmJkQoTiwiY2xhc3MiLG0pO2lmKG09cShmLCJzdHlsZSIpKW09bS5yZXBsYWNlKC8oO3wgfF4pY29sb3IoWyA6XSkvLCIkMWZpbGwkMiIpLEQoTiwic3R5bGUiLG0pO2lmKChwPXEoZiwiaHJlZiIpKSYmIWUmJi0xPT09cC5zcGxpdCgiOiIpWzBdLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiamF2YXNjcmlwdCIpKXt2YXIgQz1BLmNyZWF0ZUVsZW1lbnROUyhhLlNWR19OUywiYSIpO0QoQywiaHJlZiIscCk7RChOLCJjbGFzcyIsImhpZ2hjaGFydHMtYW5jaG9yIik7Qy5hcHBlbmRDaGlsZChOKTthLnN0eWxlZE1vZGV8fHQoTix7Y3Vyc29yOiJwb2ludGVyIn0pfWY9UShmLnJlcGxhY2UoLzxbYS16QS1aXC9dKC58XG4pKj8+L2csIiIpfHwiICIpO2lmKCIgIiE9PWYpe04uYXBwZW5kQ2hpbGQoQS5jcmVhdGVUZXh0Tm9kZShmKSk7ej9sLmR4PTA6eCYmbnVsbCE9PWMmJihsLng9Yyk7RChOLGwpO2guYXBwZW5kQ2hpbGQoQ3x8Tik7IXomJgpQJiYoIXcmJmUmJnQoTix7ZGlzcGxheToiYmxvY2sifSksRChOLCJkeSIsRyhOKSkpO2lmKEUpe3ZhciByPWYucmVwbGFjZSgvKFteXF5dKS0vZywiJDEtICIpLnNwbGl0KCIgIik7bD0hSSYmKDE8ay5sZW5ndGh8fHh8fDE8ci5sZW5ndGgpO0M9MDtwPUcoTik7aWYoZyl1PWEudHJ1bmNhdGUoYixOLGYsdm9pZCAwLDAsTWF0aC5tYXgoMCxFLXBhcnNlSW50KEZ8fDEyLDEwKSksZnVuY3Rpb24oYixoKXtyZXR1cm4gYi5zdWJzdHJpbmcoMCxoKSsiXHUyMDI2In0pO2Vsc2UgaWYobClmb3IoO3IubGVuZ3RoOylyLmxlbmd0aCYmIUkmJjA8QyYmKE49QS5jcmVhdGVFbGVtZW50TlMoTSwidHNwYW4iKSxEKE4se2R5OnAseDpjfSksbSYmRChOLCJzdHlsZSIsbSksTi5hcHBlbmRDaGlsZChBLmNyZWF0ZVRleHROb2RlKHIuam9pbigiICIpLnJlcGxhY2UoLy0gL2csIi0iKSkpLGguYXBwZW5kQ2hpbGQoTikpLGEudHJ1bmNhdGUoYixOLG51bGwsciwwPT09Qz9kOjAsRSxmdW5jdGlvbihiLGgpe3JldHVybiByLnNsaWNlKDAsCmgpLmpvaW4oIiAiKS5yZXBsYWNlKC8tIC9nLCItIil9KSxkPWIuYWN0dWFsV2lkdGgsQysrfXorK319fSk7UD1QfHxoLmNoaWxkTm9kZXMubGVuZ3RofSksZyYmdSYmYi5hdHRyKCJ0aXRsZSIsUShiLnRleHRTdHJ8fCIiLFsiJmx0OyIsIiZndDsiXSkpLHImJnIucmVtb3ZlQ2hpbGQoaCksQyhTKSYmYi5hcHBseVRleHRPdXRsaW5lJiZiLmFwcGx5VGV4dE91dGxpbmUoUykpOmguYXBwZW5kQ2hpbGQoQS5jcmVhdGVUZXh0Tm9kZShRKGYpKSl9fTtiLnByb3RvdHlwZS5nZXRDb250cmFzdD1mdW5jdGlvbihiKXtiPWcucGFyc2UoYikucmdiYTtiWzBdKj0xO2JbMV0qPTEuMjtiWzJdKj0uNTtyZXR1cm4gNDU5PGJbMF0rYlsxXStiWzJdPyIjMDAwMDAwIjoiI0ZGRkZGRiJ9O2IucHJvdG90eXBlLmJ1dHRvbj1mdW5jdGlvbihiLGEsZSxmLGQsayxsLHUsbSxwKXt2YXIgaD10aGlzLmxhYmVsKGIsYSxlLG0sdm9pZCAwLHZvaWQgMCxwLHZvaWQgMCwiYnV0dG9uIikseD0wLHo9dGhpcy5zdHlsZWRNb2RlOwpiPWQmJmQuc3R5bGV8fHt9O2QmJmQuc3R5bGUmJmRlbGV0ZSBkLnN0eWxlO2guYXR0cihJKHtwYWRkaW5nOjgscjoyfSxkKSk7aWYoIXope2Q9SSh7ZmlsbDoiI2Y3ZjdmNyIsc3Ryb2tlOiIjY2NjY2NjIiwic3Ryb2tlLXdpZHRoIjoxLHN0eWxlOntjb2xvcjoiIzMzMzMzMyIsY3Vyc29yOiJwb2ludGVyIixmb250V2VpZ2h0OiJub3JtYWwifX0se3N0eWxlOmJ9LGQpO3ZhciBOPWQuc3R5bGU7ZGVsZXRlIGQuc3R5bGU7az1JKGQse2ZpbGw6IiNlNmU2ZTYifSxrKTt2YXIgQT1rLnN0eWxlO2RlbGV0ZSBrLnN0eWxlO2w9SShkLHtmaWxsOiIjZTZlYmY1IixzdHlsZTp7Y29sb3I6IiMwMDAwMDAiLGZvbnRXZWlnaHQ6ImJvbGQifX0sbCk7dmFyIHc9bC5zdHlsZTtkZWxldGUgbC5zdHlsZTt1PUkoZCx7c3R5bGU6e2NvbG9yOiIjY2NjY2NjIn19LHUpO3ZhciBjPXUuc3R5bGU7ZGVsZXRlIHUuc3R5bGV9SChoLmVsZW1lbnQsRT8ibW91c2VvdmVyIjoibW91c2VlbnRlciIsZnVuY3Rpb24oKXszIT09CngmJmguc2V0U3RhdGUoMSl9KTtIKGguZWxlbWVudCxFPyJtb3VzZW91dCI6Im1vdXNlbGVhdmUiLGZ1bmN0aW9uKCl7MyE9PXgmJmguc2V0U3RhdGUoeCl9KTtoLnNldFN0YXRlPWZ1bmN0aW9uKGIpezEhPT1iJiYoaC5zdGF0ZT14PWIpO2gucmVtb3ZlQ2xhc3MoL2hpZ2hjaGFydHMtYnV0dG9uLShub3JtYWx8aG92ZXJ8cHJlc3NlZHxkaXNhYmxlZCkvKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1idXR0b24tIitbIm5vcm1hbCIsImhvdmVyIiwicHJlc3NlZCIsImRpc2FibGVkIl1bYnx8MF0pO3p8fGguYXR0cihbZCxrLGwsdV1bYnx8MF0pLmNzcyhbTixBLHcsY11bYnx8MF0pfTt6fHxoLmF0dHIoZCkuY3NzKHYoe2N1cnNvcjoiZGVmYXVsdCJ9LE4pKTtyZXR1cm4gaC5vbigiY2xpY2siLGZ1bmN0aW9uKGIpezMhPT14JiZmLmNhbGwoaCxiKX0pfTtiLnByb3RvdHlwZS5jcmlzcExpbmU9ZnVuY3Rpb24oYixhLGUpe3ZvaWQgMD09PWUmJihlPSJyb3VuZCIpO3ZhciBoPWJbMF0sZj1iWzFdOwpoWzFdPT09ZlsxXSYmKGhbMV09ZlsxXT1NYXRoW2VdKGhbMV0pLWElMi8yKTtoWzJdPT09ZlsyXSYmKGhbMl09ZlsyXT1NYXRoW2VdKGhbMl0pK2ElMi8yKTtyZXR1cm4gYn07Yi5wcm90b3R5cGUucGF0aD1mdW5jdGlvbihiKXt2YXIgaD10aGlzLnN0eWxlZE1vZGU/e306e2ZpbGw6Im5vbmUifTtLKGIpP2guZD1iOnIoYikmJnYoaCxiKTtyZXR1cm4gdGhpcy5jcmVhdGVFbGVtZW50KCJwYXRoIikuYXR0cihoKX07Yi5wcm90b3R5cGUuY2lyY2xlPWZ1bmN0aW9uKGIsYSxlKXtiPXIoYik/YjoidW5kZWZpbmVkIj09PXR5cGVvZiBiP3t9Ont4OmIseTphLHI6ZX07YT10aGlzLmNyZWF0ZUVsZW1lbnQoImNpcmNsZSIpO2EueFNldHRlcj1hLnlTZXR0ZXI9ZnVuY3Rpb24oYixoLGEpe2Euc2V0QXR0cmlidXRlKCJjIitoLGIpfTtyZXR1cm4gYS5hdHRyKGIpfTtiLnByb3RvdHlwZS5hcmM9ZnVuY3Rpb24oYixhLGUsZixkLGspe3IoYik/KGY9YixhPWYueSxlPWYucixiPWYueCk6Zj17aW5uZXJSOmYsCnN0YXJ0OmQsZW5kOmt9O2I9dGhpcy5zeW1ib2woImFyYyIsYixhLGUsZSxmKTtiLnI9ZTtyZXR1cm4gYn07Yi5wcm90b3R5cGUucmVjdD1mdW5jdGlvbihiLGEsZSxmLGQsayl7ZD1yKGIpP2IucjpkO3ZhciBoPXRoaXMuY3JlYXRlRWxlbWVudCgicmVjdCIpO2I9cihiKT9iOiJ1bmRlZmluZWQiPT09dHlwZW9mIGI/e306e3g6Yix5OmEsd2lkdGg6TWF0aC5tYXgoZSwwKSxoZWlnaHQ6TWF0aC5tYXgoZiwwKX07dGhpcy5zdHlsZWRNb2RlfHwoInVuZGVmaW5lZCIhPT10eXBlb2YgayYmKGIuc3Ryb2tlV2lkdGg9ayxiPWguY3Jpc3AoYikpLGIuZmlsbD0ibm9uZSIpO2QmJihiLnI9ZCk7aC5yU2V0dGVyPWZ1bmN0aW9uKGIsYSxlKXtoLnI9YjtEKGUse3J4OmIscnk6Yn0pfTtoLnJHZXR0ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gaC5yfTtyZXR1cm4gaC5hdHRyKGIpfTtiLnByb3RvdHlwZS5zZXRTaXplPWZ1bmN0aW9uKGIsYSxlKXt2YXIgaD10aGlzLmFsaWduZWRPYmplY3RzLGY9aC5sZW5ndGg7CnRoaXMud2lkdGg9Yjt0aGlzLmhlaWdodD1hO2Zvcih0aGlzLmJveFdyYXBwZXIuYW5pbWF0ZSh7d2lkdGg6YixoZWlnaHQ6YX0se3N0ZXA6ZnVuY3Rpb24oKXt0aGlzLmF0dHIoe3ZpZXdCb3g6IjAgMCAiK3RoaXMuYXR0cigid2lkdGgiKSsiICIrdGhpcy5hdHRyKCJoZWlnaHQiKX0pfSxkdXJhdGlvbjptKGUsITApP3ZvaWQgMDowfSk7Zi0tOyloW2ZdLmFsaWduKCl9O2IucHJvdG90eXBlLmc9ZnVuY3Rpb24oYil7dmFyIGg9dGhpcy5jcmVhdGVFbGVtZW50KCJnIik7cmV0dXJuIGI/aC5hdHRyKHsiY2xhc3MiOiJoaWdoY2hhcnRzLSIrYn0pOmh9O2IucHJvdG90eXBlLmltYWdlPWZ1bmN0aW9uKGIsYSxlLGYsZCxrKXt2YXIgaD17cHJlc2VydmVBc3BlY3RSYXRpbzoibm9uZSJ9LHg9ZnVuY3Rpb24oYixoKXtiLnNldEF0dHJpYnV0ZU5TP2Iuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCJocmVmIixoKTpiLnNldEF0dHJpYnV0ZSgiaGMtc3ZnLWhyZWYiLApoKX0sej1mdW5jdGlvbihoKXt4KGwuZWxlbWVudCxiKTtrLmNhbGwobCxoKX07MTxhcmd1bWVudHMubGVuZ3RoJiZ2KGgse3g6YSx5OmUsd2lkdGg6ZixoZWlnaHQ6ZH0pO3ZhciBsPXRoaXMuY3JlYXRlRWxlbWVudCgiaW1hZ2UiKS5hdHRyKGgpO2s/KHgobC5lbGVtZW50LCJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUFBQUFDSDVCQUVLQUFFQUxBQUFBQUFCQUFFQUFBSUNUQUVBT3c9PSIpLGg9bmV3IFEuSW1hZ2UsSChoLCJsb2FkIix6KSxoLnNyYz1iLGguY29tcGxldGUmJnooe30pKTp4KGwuZWxlbWVudCxiKTtyZXR1cm4gbH07Yi5wcm90b3R5cGUuc3ltYm9sPWZ1bmN0aW9uKGIsYSxlLGQsayxsKXt2YXIgaD10aGlzLHg9L151cmxcKCguKj8pXCkkLyx6PXgudGVzdChiKSx1PSF6JiYodGhpcy5zeW1ib2xzW2JdP2I6ImNpcmNsZSIpLE49dSYmdGhpcy5zeW1ib2xzW3VdLHA7aWYoTil7Im51bWJlciI9PT10eXBlb2YgYSYmKHA9Ti5jYWxsKHRoaXMuc3ltYm9scywKTWF0aC5yb3VuZChhfHwwKSxNYXRoLnJvdW5kKGV8fDApLGR8fDAsa3x8MCxsKSk7dmFyIHc9dGhpcy5wYXRoKHApO2guc3R5bGVkTW9kZXx8dy5hdHRyKCJmaWxsIiwibm9uZSIpO3Yodyx7c3ltYm9sTmFtZTp1LHg6YSx5OmUsd2lkdGg6ZCxoZWlnaHQ6a30pO2wmJnYodyxsKX1lbHNlIGlmKHope3ZhciBjPWIubWF0Y2goeClbMV07dz10aGlzLmltYWdlKGMpO3cuaW1nd2lkdGg9bShGW2NdJiZGW2NdLndpZHRoLGwmJmwud2lkdGgpO3cuaW1naGVpZ2h0PW0oRltjXSYmRltjXS5oZWlnaHQsbCYmbC5oZWlnaHQpO3ZhciBDPWZ1bmN0aW9uKCl7dy5hdHRyKHt3aWR0aDp3LndpZHRoLGhlaWdodDp3LmhlaWdodH0pfTtbIndpZHRoIiwiaGVpZ2h0Il0uZm9yRWFjaChmdW5jdGlvbihiKXt3W2IrIlNldHRlciJdPWZ1bmN0aW9uKGIsaCl7dmFyIGE9e30sZT10aGlzWyJpbWciK2hdLGY9IndpZHRoIj09PWg/InRyYW5zbGF0ZVgiOiJ0cmFuc2xhdGVZIjt0aGlzW2hdPWI7RyhlKSYmKGwmJgoid2l0aGluIj09PWwuYmFja2dyb3VuZFNpemUmJnRoaXMud2lkdGgmJnRoaXMuaGVpZ2h0JiYoZT1NYXRoLnJvdW5kKGUqTWF0aC5taW4odGhpcy53aWR0aC90aGlzLmltZ3dpZHRoLHRoaXMuaGVpZ2h0L3RoaXMuaW1naGVpZ2h0KSkpLHRoaXMuZWxlbWVudCYmdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZShoLGUpLHRoaXMuYWxpZ25CeVRyYW5zbGF0ZXx8KGFbZl09KCh0aGlzW2hdfHwwKS1lKS8yLHRoaXMuYXR0cihhKSkpfX0pO0coYSkmJncuYXR0cih7eDphLHk6ZX0pO3cuaXNJbWc9ITA7Ryh3LmltZ3dpZHRoKSYmRyh3LmltZ2hlaWdodCk/QygpOih3LmF0dHIoe3dpZHRoOjAsaGVpZ2h0OjB9KSxKKCJpbWciLHtvbmxvYWQ6ZnVuY3Rpb24oKXt2YXIgYj1mW2guY2hhcnRJbmRleF07MD09PXRoaXMud2lkdGgmJih0KHRoaXMse3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOiItOTk5ZW0ifSksQS5ib2R5LmFwcGVuZENoaWxkKHRoaXMpKTtGW2NdPXt3aWR0aDp0aGlzLndpZHRoLGhlaWdodDp0aGlzLmhlaWdodH07CncuaW1nd2lkdGg9dGhpcy53aWR0aDt3LmltZ2hlaWdodD10aGlzLmhlaWdodDt3LmVsZW1lbnQmJkMoKTt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzKTtoLmltZ0NvdW50LS07aWYoIWguaW1nQ291bnQmJmImJiFiLmhhc0xvYWRlZCliLm9ubG9hZCgpfSxzcmM6Y30pLHRoaXMuaW1nQ291bnQrKyl9cmV0dXJuIHd9O2IucHJvdG90eXBlLmNsaXBSZWN0PWZ1bmN0aW9uKGIsYSxlLGYpe3ZhciBoPWsoKSsiLSIseD10aGlzLmNyZWF0ZUVsZW1lbnQoImNsaXBQYXRoIikuYXR0cih7aWQ6aH0pLmFkZCh0aGlzLmRlZnMpO2I9dGhpcy5yZWN0KGIsYSxlLGYsMCkuYWRkKHgpO2IuaWQ9aDtiLmNsaXBQYXRoPXg7Yi5jb3VudD0wO3JldHVybiBifTtiLnByb3RvdHlwZS50ZXh0PWZ1bmN0aW9uKGIsYSxlLGYpe3ZhciBoPXt9O2lmKGYmJih0aGlzLmFsbG93SFRNTHx8IXRoaXMuZm9yRXhwb3J0KSlyZXR1cm4gdGhpcy5odG1sKGIsYSxlKTtoLng9TWF0aC5yb3VuZChhfHwKMCk7ZSYmKGgueT1NYXRoLnJvdW5kKGUpKTtHKGIpJiYoaC50ZXh0PWIpO2I9dGhpcy5jcmVhdGVFbGVtZW50KCJ0ZXh0IikuYXR0cihoKTtmfHwoYi54U2V0dGVyPWZ1bmN0aW9uKGIsaCxhKXt2YXIgZT1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0c3BhbiIpLGY9YS5nZXRBdHRyaWJ1dGUoaCkseDtmb3IoeD0wO3g8ZS5sZW5ndGg7eCsrKXt2YXIgZD1lW3hdO2QuZ2V0QXR0cmlidXRlKGgpPT09ZiYmZC5zZXRBdHRyaWJ1dGUoaCxiKX1hLnNldEF0dHJpYnV0ZShoLGIpfSk7cmV0dXJuIGJ9O2IucHJvdG90eXBlLmZvbnRNZXRyaWNzPWZ1bmN0aW9uKGIsYSl7Yj0hdGhpcy5zdHlsZWRNb2RlJiYvcHgvLnRlc3QoYil8fCFRLmdldENvbXB1dGVkU3R5bGU/Ynx8YSYmYS5zdHlsZSYmYS5zdHlsZS5mb250U2l6ZXx8dGhpcy5zdHlsZSYmdGhpcy5zdHlsZS5mb250U2l6ZTphJiZxLnByb3RvdHlwZS5nZXRTdHlsZS5jYWxsKGEsImZvbnQtc2l6ZSIpO2I9L3B4Ly50ZXN0KGIpP2QoYik6CjEyO2E9MjQ+Yj9iKzM6TWF0aC5yb3VuZCgxLjIqYik7cmV0dXJue2g6YSxiOk1hdGgucm91bmQoLjgqYSksZjpifX07Yi5wcm90b3R5cGUucm90Q29ycj1mdW5jdGlvbihiLGUsZil7dmFyIGg9YjtlJiZmJiYoaD1NYXRoLm1heChoKk1hdGguY29zKGUqYSksNCkpO3JldHVybnt4Oi1iLzMqTWF0aC5zaW4oZSphKSx5Omh9fTtiLnByb3RvdHlwZS5wYXRoVG9TZWdtZW50cz1mdW5jdGlvbihiKXtmb3IodmFyIGg9W10sYT1bXSxlPXtBOjgsQzo3LEg6MixMOjMsTTozLFE6NSxTOjUsVDozLFY6Mn0sZj0wO2Y8Yi5sZW5ndGg7ZisrKUMoYVswXSkmJm4oYltmXSkmJmEubGVuZ3RoPT09ZVthWzBdLnRvVXBwZXJDYXNlKCldJiZiLnNwbGljZShmLDAsYVswXS5yZXBsYWNlKCJNIiwiTCIpLnJlcGxhY2UoIm0iLCJsIikpLCJzdHJpbmciPT09dHlwZW9mIGJbZl0mJihhLmxlbmd0aCYmaC5wdXNoKGEuc2xpY2UoMCkpLGEubGVuZ3RoPTApLGEucHVzaChiW2ZdKTtoLnB1c2goYS5zbGljZSgwKSk7CnJldHVybiBofTtiLnByb3RvdHlwZS5sYWJlbD1mdW5jdGlvbihiLGEsZSxmLGQsayxsLHUsbSl7cmV0dXJuIG5ldyB5KHRoaXMsYixhLGUsZixkLGssbCx1LG0pfTtyZXR1cm4gYn0oKTtlLnByb3RvdHlwZS5FbGVtZW50PXE7ZS5wcm90b3R5cGUuU1ZHX05TPU07ZS5wcm90b3R5cGUuZHJhdz1CO2UucHJvdG90eXBlLmVzY2FwZXM9eyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwiJyI6IiYjMzk7IiwnIic6IiZxdW90OyJ9O2UucHJvdG90eXBlLnN5bWJvbHM9e2NpcmNsZTpmdW5jdGlvbihiLGgsYSxlKXtyZXR1cm4gdGhpcy5hcmMoYithLzIsaCtlLzIsYS8yLGUvMix7c3RhcnQ6LjUqTWF0aC5QSSxlbmQ6Mi41Kk1hdGguUEksb3BlbjohMX0pfSxzcXVhcmU6ZnVuY3Rpb24oYixoLGEsZSl7cmV0dXJuW1siTSIsYixoXSxbIkwiLGIrYSxoXSxbIkwiLGIrYSxoK2VdLFsiTCIsYixoK2VdLFsiWiJdXX0sdHJpYW5nbGU6ZnVuY3Rpb24oYixoLGEsZSl7cmV0dXJuW1siTSIsCmIrYS8yLGhdLFsiTCIsYithLGgrZV0sWyJMIixiLGgrZV0sWyJaIl1dfSwidHJpYW5nbGUtZG93biI6ZnVuY3Rpb24oYixoLGEsZSl7cmV0dXJuW1siTSIsYixoXSxbIkwiLGIrYSxoXSxbIkwiLGIrYS8yLGgrZV0sWyJaIl1dfSxkaWFtb25kOmZ1bmN0aW9uKGIsaCxhLGUpe3JldHVybltbIk0iLGIrYS8yLGhdLFsiTCIsYithLGgrZS8yXSxbIkwiLGIrYS8yLGgrZV0sWyJMIixiLGgrZS8yXSxbIloiXV19LGFyYzpmdW5jdGlvbihiLGgsYSxlLGYpe3ZhciBkPVtdO2lmKGYpe3ZhciB4PWYuc3RhcnR8fDAsaz1mLmVuZHx8MCx6PWYucnx8YTthPWYucnx8ZXx8YTt2YXIgbD0uMDAxPk1hdGguYWJzKGsteC0yKk1hdGguUEkpO2stPS4wMDE7ZT1mLmlubmVyUjtsPW0oZi5vcGVuLGwpO3ZhciB1PU1hdGguY29zKHgpLHA9TWF0aC5zaW4oeCksTj1NYXRoLmNvcyhrKSxBPU1hdGguc2luKGspO3g9bShmLmxvbmdBcmMsLjAwMT5rLXgtTWF0aC5QST8wOjEpO2QucHVzaChbIk0iLGIreip1LApoK2EqcF0sWyJBIix6LGEsMCx4LG0oZi5jbG9ja3dpc2UsMSksYit6Kk4saCthKkFdKTtHKGUpJiZkLnB1c2gobD9bIk0iLGIrZSpOLGgrZSpBXTpbIkwiLGIrZSpOLGgrZSpBXSxbIkEiLGUsZSwwLHgsRyhmLmNsb2Nrd2lzZSk/MS1mLmNsb2Nrd2lzZTowLGIrZSp1LGgrZSpwXSk7bHx8ZC5wdXNoKFsiWiJdKX1yZXR1cm4gZH0sY2FsbG91dDpmdW5jdGlvbihiLGgsYSxlLGYpe3ZhciBkPU1hdGgubWluKGYmJmYucnx8MCxhLGUpLGs9ZCs2LHg9ZiYmZi5hbmNob3JYfHwwO2Y9ZiYmZi5hbmNob3JZfHwwO3ZhciB6PVtbIk0iLGIrZCxoXSxbIkwiLGIrYS1kLGhdLFsiQyIsYithLGgsYithLGgsYithLGgrZF0sWyJMIixiK2EsaCtlLWRdLFsiQyIsYithLGgrZSxiK2EsaCtlLGIrYS1kLGgrZV0sWyJMIixiK2QsaCtlXSxbIkMiLGIsaCtlLGIsaCtlLGIsaCtlLWRdLFsiTCIsYixoK2RdLFsiQyIsYixoLGIsaCxiK2QsaF1dO3gmJng+YT9mPmgrayYmZjxoK2Utaz96LnNwbGljZSgzLDEsClsiTCIsYithLGYtNl0sWyJMIixiK2ErNixmXSxbIkwiLGIrYSxmKzZdLFsiTCIsYithLGgrZS1kXSk6ei5zcGxpY2UoMywxLFsiTCIsYithLGUvMl0sWyJMIix4LGZdLFsiTCIsYithLGUvMl0sWyJMIixiK2EsaCtlLWRdKTp4JiYwPng/Zj5oK2smJmY8aCtlLWs/ei5zcGxpY2UoNywxLFsiTCIsYixmKzZdLFsiTCIsYi02LGZdLFsiTCIsYixmLTZdLFsiTCIsYixoK2RdKTp6LnNwbGljZSg3LDEsWyJMIixiLGUvMl0sWyJMIix4LGZdLFsiTCIsYixlLzJdLFsiTCIsYixoK2RdKTpmJiZmPmUmJng+YitrJiZ4PGIrYS1rP3ouc3BsaWNlKDUsMSxbIkwiLHgrNixoK2VdLFsiTCIseCxoK2UrNl0sWyJMIix4LTYsaCtlXSxbIkwiLGIrZCxoK2VdKTpmJiYwPmYmJng+YitrJiZ4PGIrYS1rJiZ6LnNwbGljZSgxLDEsWyJMIix4LTYsaF0sWyJMIix4LGgtNl0sWyJMIix4KzYsaF0sWyJMIixhLWQsaF0pO3JldHVybiB6fX07Yy5TVkdSZW5kZXJlcj1lO2MuUmVuZGVyZXI9Yy5TVkdSZW5kZXJlcjsKcmV0dXJuIGMuUmVuZGVyZXJ9KTtPKHEsInBhcnRzL0h0bWwuanMiLFtxWyJwYXJ0cy9HbG9iYWxzLmpzIl0scVsicGFydHMvU1ZHRWxlbWVudC5qcyJdLHFbInBhcnRzL1NWR1JlbmRlcmVyLmpzIl0scVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGcsYyxxLHkpe3ZhciBCPXkuYXR0cixIPXkuY3JlYXRlRWxlbWVudCxEPXkuY3NzLEo9eS5kZWZpbmVkLHQ9eS5leHRlbmQsRz15LnBpY2ssTD15LnBJbnQsdj1nLmlzRmlyZWZveCxLPWcuaXNNUyxuPWcuaXNXZWJLaXQscj1nLndpbjt0KGMucHJvdG90eXBlLHtodG1sQ3NzOmZ1bmN0aW9uKGMpe3ZhciByPSJTUEFOIj09PXRoaXMuZWxlbWVudC50YWdOYW1lJiZjJiYid2lkdGgiaW4gYyxwPUcociYmYy53aWR0aCx2b2lkIDApO2lmKHIpe2RlbGV0ZSBjLndpZHRoO3RoaXMudGV4dFdpZHRoPXA7dmFyIG09ITB9YyYmImVsbGlwc2lzIj09PWMudGV4dE92ZXJmbG93JiYoYy53aGl0ZVNwYWNlPSJub3dyYXAiLGMub3ZlcmZsb3c9CiJoaWRkZW4iKTt0aGlzLnN0eWxlcz10KHRoaXMuc3R5bGVzLGMpO0QodGhpcy5lbGVtZW50LGMpO20mJnRoaXMuaHRtbFVwZGF0ZVRyYW5zZm9ybSgpO3JldHVybiB0aGlzfSxodG1sR2V0QkJveDpmdW5jdGlvbigpe3ZhciBjPXRoaXMuZWxlbWVudDtyZXR1cm57eDpjLm9mZnNldExlZnQseTpjLm9mZnNldFRvcCx3aWR0aDpjLm9mZnNldFdpZHRoLGhlaWdodDpjLm9mZnNldEhlaWdodH19LGh0bWxVcGRhdGVUcmFuc2Zvcm06ZnVuY3Rpb24oKXtpZih0aGlzLmFkZGVkKXt2YXIgYz10aGlzLnJlbmRlcmVyLHI9dGhpcy5lbGVtZW50LHA9dGhpcy50cmFuc2xhdGVYfHwwLG09dGhpcy50cmFuc2xhdGVZfHwwLGQ9dGhpcy54fHwwLGw9dGhpcy55fHwwLGs9dGhpcy50ZXh0QWxpZ258fCJsZWZ0IixmPXtsZWZ0OjAsY2VudGVyOi41LHJpZ2h0OjF9W2tdLGE9dGhpcy5zdHlsZXMsQT1hJiZhLndoaXRlU3BhY2U7RChyLHttYXJnaW5MZWZ0OnAsbWFyZ2luVG9wOm19KTshYy5zdHlsZWRNb2RlJiYKdGhpcy5zaGFkb3dzJiZ0aGlzLnNoYWRvd3MuZm9yRWFjaChmdW5jdGlvbihhKXtEKGEse21hcmdpbkxlZnQ6cCsxLG1hcmdpblRvcDptKzF9KX0pO3RoaXMuaW52ZXJ0ZWQmJltdLmZvckVhY2guY2FsbChyLmNoaWxkTm9kZXMsZnVuY3Rpb24oYSl7Yy5pbnZlcnRDaGlsZChhLHIpfSk7aWYoIlNQQU4iPT09ci50YWdOYW1lKXthPXRoaXMucm90YXRpb247dmFyIHU9dGhpcy50ZXh0V2lkdGgmJkwodGhpcy50ZXh0V2lkdGgpLEU9W2EsayxyLmlubmVySFRNTCx0aGlzLnRleHRXaWR0aCx0aGlzLnRleHRBbGlnbl0uam9pbigpLG47KG49dSE9PXRoaXMub2xkVGV4dFdpZHRoKSYmIShuPXU+dGhpcy5vbGRUZXh0V2lkdGgpJiYoKG49dGhpcy50ZXh0UHhMZW5ndGgpfHwoRChyLHt3aWR0aDoiIix3aGl0ZVNwYWNlOkF8fCJub3dyYXAifSksbj1yLm9mZnNldFdpZHRoKSxuPW4+dSk7biYmKC9bIFwtXS8udGVzdChyLnRleHRDb250ZW50fHxyLmlubmVyVGV4dCl8fCJlbGxpcHNpcyI9PT1yLnN0eWxlLnRleHRPdmVyZmxvdyk/CihEKHIse3dpZHRoOnUrInB4IixkaXNwbGF5OiJibG9jayIsd2hpdGVTcGFjZTpBfHwibm9ybWFsIn0pLHRoaXMub2xkVGV4dFdpZHRoPXUsdGhpcy5oYXNCb3hXaWR0aENoYW5nZWQ9ITApOnRoaXMuaGFzQm94V2lkdGhDaGFuZ2VkPSExO0UhPT10aGlzLmNUVCYmKEE9Yy5mb250TWV0cmljcyhyLnN0eWxlLmZvbnRTaXplLHIpLmIsIUooYSl8fGE9PT0odGhpcy5vbGRSb3RhdGlvbnx8MCkmJms9PT10aGlzLm9sZEFsaWdufHx0aGlzLnNldFNwYW5Sb3RhdGlvbihhLGYsQSksdGhpcy5nZXRTcGFuQ29ycmVjdGlvbighSihhKSYmdGhpcy50ZXh0UHhMZW5ndGh8fHIub2Zmc2V0V2lkdGgsQSxmLGEsaykpO0Qocix7bGVmdDpkKyh0aGlzLnhDb3JyfHwwKSsicHgiLHRvcDpsKyh0aGlzLnlDb3JyfHwwKSsicHgifSk7dGhpcy5jVFQ9RTt0aGlzLm9sZFJvdGF0aW9uPWE7dGhpcy5vbGRBbGlnbj1rfX1lbHNlIHRoaXMuYWxpZ25PbkFkZD0hMH0sc2V0U3BhblJvdGF0aW9uOmZ1bmN0aW9uKGMsCnIscCl7dmFyIG09e30sZD10aGlzLnJlbmRlcmVyLmdldFRyYW5zZm9ybUtleSgpO21bZF09bS50cmFuc2Zvcm09InJvdGF0ZSgiK2MrImRlZykiO21bZCsodj8iT3JpZ2luIjoiLW9yaWdpbiIpXT1tLnRyYW5zZm9ybU9yaWdpbj0xMDAqcisiJSAiK3ArInB4IjtEKHRoaXMuZWxlbWVudCxtKX0sZ2V0U3BhbkNvcnJlY3Rpb246ZnVuY3Rpb24oYyxyLHApe3RoaXMueENvcnI9LWMqcDt0aGlzLnlDb3JyPS1yfX0pO3QocS5wcm90b3R5cGUse2dldFRyYW5zZm9ybUtleTpmdW5jdGlvbigpe3JldHVybiBLJiYhL0VkZ2UvLnRlc3Qoci5uYXZpZ2F0b3IudXNlckFnZW50KT8iLW1zLXRyYW5zZm9ybSI6bj8iLXdlYmtpdC10cmFuc2Zvcm0iOnY/Ik1velRyYW5zZm9ybSI6ci5vcGVyYT8iLW8tdHJhbnNmb3JtIjoiIn0saHRtbDpmdW5jdGlvbihyLG4scCl7dmFyIG09dGhpcy5jcmVhdGVFbGVtZW50KCJzcGFuIiksZD1tLmVsZW1lbnQsbD1tLnJlbmRlcmVyLGs9bC5pc1NWRyxmPWZ1bmN0aW9uKGEsCmYpe1sib3BhY2l0eSIsInZpc2liaWxpdHkiXS5mb3JFYWNoKGZ1bmN0aW9uKGQpe2FbZCsiU2V0dGVyIl09ZnVuY3Rpb24oayxsLHUpe3ZhciBtPWEuZGl2P2EuZGl2LnN0eWxlOmY7Yy5wcm90b3R5cGVbZCsiU2V0dGVyIl0uY2FsbCh0aGlzLGssbCx1KTttJiYobVtsXT1rKX19KTthLmFkZGVkU2V0dGVycz0hMH07bS50ZXh0U2V0dGVyPWZ1bmN0aW9uKGEpe2EhPT1kLmlubmVySFRNTCYmKGRlbGV0ZSB0aGlzLmJCb3gsZGVsZXRlIHRoaXMub2xkVGV4dFdpZHRoKTt0aGlzLnRleHRTdHI9YTtkLmlubmVySFRNTD1HKGEsIiIpO20uZG9UcmFuc2Zvcm09ITB9O2smJmYobSxtLmVsZW1lbnQuc3R5bGUpO20ueFNldHRlcj1tLnlTZXR0ZXI9bS5hbGlnblNldHRlcj1tLnJvdGF0aW9uU2V0dGVyPWZ1bmN0aW9uKGEsZil7ImFsaWduIj09PWYmJihmPSJ0ZXh0QWxpZ24iKTttW2ZdPWE7bS5kb1RyYW5zZm9ybT0hMH07bS5hZnRlclNldHRlcnM9ZnVuY3Rpb24oKXt0aGlzLmRvVHJhbnNmb3JtJiYKKHRoaXMuaHRtbFVwZGF0ZVRyYW5zZm9ybSgpLHRoaXMuZG9UcmFuc2Zvcm09ITEpfTttLmF0dHIoe3RleHQ6cix4Ok1hdGgucm91bmQobikseTpNYXRoLnJvdW5kKHApfSkuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUifSk7bC5zdHlsZWRNb2RlfHxtLmNzcyh7Zm9udEZhbWlseTp0aGlzLnN0eWxlLmZvbnRGYW1pbHksZm9udFNpemU6dGhpcy5zdHlsZS5mb250U2l6ZX0pO2Quc3R5bGUud2hpdGVTcGFjZT0ibm93cmFwIjttLmNzcz1tLmh0bWxDc3M7ayYmKG0uYWRkPWZ1bmN0aW9uKGEpe3ZhciBrPWwuYm94LnBhcmVudE5vZGUsdT1bXTtpZih0aGlzLnBhcmVudEdyb3VwPWEpe3ZhciBwPWEuZGl2O2lmKCFwKXtmb3IoO2E7KXUucHVzaChhKSxhPWEucGFyZW50R3JvdXA7dS5yZXZlcnNlKCkuZm9yRWFjaChmdW5jdGlvbihhKXtmdW5jdGlvbiBkKGYsZSl7YVtlXT1mOyJ0cmFuc2xhdGVYIj09PWU/QS5sZWZ0PWYrInB4IjpBLnRvcD1mKyJweCI7YS5kb1RyYW5zZm9ybT0hMH12YXIgbD0KQihhLmVsZW1lbnQsImNsYXNzIik7cD1hLmRpdj1hLmRpdnx8SCgiZGl2IixsP3tjbGFzc05hbWU6bH06dm9pZCAwLHtwb3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6KGEudHJhbnNsYXRlWHx8MCkrInB4Iix0b3A6KGEudHJhbnNsYXRlWXx8MCkrInB4IixkaXNwbGF5OmEuZGlzcGxheSxvcGFjaXR5OmEub3BhY2l0eSxwb2ludGVyRXZlbnRzOmEuc3R5bGVzJiZhLnN0eWxlcy5wb2ludGVyRXZlbnRzfSxwfHxrKTt2YXIgQT1wLnN0eWxlO3QoYSx7Y2xhc3NTZXR0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3RoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImNsYXNzIixlKTthLmNsYXNzTmFtZT1lfX0ocCksb246ZnVuY3Rpb24oKXt1WzBdLmRpdiYmbS5vbi5hcHBseSh7ZWxlbWVudDp1WzBdLmRpdn0sYXJndW1lbnRzKTtyZXR1cm4gYX0sdHJhbnNsYXRlWFNldHRlcjpkLHRyYW5zbGF0ZVlTZXR0ZXI6ZH0pO2EuYWRkZWRTZXR0ZXJzfHxmKGEpfSl9fWVsc2UgcD1rO3AuYXBwZW5kQ2hpbGQoZCk7Cm0uYWRkZWQ9ITA7bS5hbGlnbk9uQWRkJiZtLmh0bWxVcGRhdGVUcmFuc2Zvcm0oKTtyZXR1cm4gbX0pO3JldHVybiBtfX0pfSk7TyhxLCJwYXJ0cy9UaWNrLmpzIixbcVsicGFydHMvR2xvYmFscy5qcyJdLHFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihnLGMpe3ZhciBxPWMuY2xhbXAseT1jLmNvcnJlY3RGbG9hdCxCPWMuZGVmaW5lZCxIPWMuZGVzdHJveU9iamVjdFByb3BlcnRpZXMsRD1jLmV4dGVuZCxKPWMuZmlyZUV2ZW50LHQ9Yy5pc051bWJlcixHPWMubWVyZ2UsTD1jLm9iamVjdEVhY2gsdj1jLnBpY2ssSz1nLmRlZzJyYWQ7Yz1mdW5jdGlvbigpe2Z1bmN0aW9uIGMoYyxDLG4scCxtKXt0aGlzLmlzTmV3TGFiZWw9dGhpcy5pc05ldz0hMDt0aGlzLmF4aXM9Yzt0aGlzLnBvcz1DO3RoaXMudHlwZT1ufHwiIjt0aGlzLnBhcmFtZXRlcnM9bXx8e307dGhpcy50aWNrbWFya09mZnNldD10aGlzLnBhcmFtZXRlcnMudGlja21hcmtPZmZzZXQ7dGhpcy5vcHRpb25zPQp0aGlzLnBhcmFtZXRlcnMub3B0aW9ucztKKHRoaXMsImluaXQiKTtufHxwfHx0aGlzLmFkZExhYmVsKCl9Yy5wcm90b3R5cGUuYWRkTGFiZWw9ZnVuY3Rpb24oKXt2YXIgYz10aGlzLEM9Yy5heGlzLG49Qy5vcHRpb25zLHA9Qy5jaGFydCxtPUMuY2F0ZWdvcmllcyxkPUMubG9nYXJpdGhtaWMsbD1DLm5hbWVzLGs9Yy5wb3MsZj12KGMub3B0aW9ucyYmYy5vcHRpb25zLmxhYmVscyxuLmxhYmVscyksYT1DLnRpY2tQb3NpdGlvbnMsQT1rPT09YVswXSx1PWs9PT1hW2EubGVuZ3RoLTFdO2w9dGhpcy5wYXJhbWV0ZXJzLmNhdGVnb3J5fHwobT92KG1ba10sbFtrXSxrKTprKTt2YXIgRT1jLmxhYmVsO209KCFmLnN0ZXB8fDE9PT1mLnN0ZXApJiYxPT09Qy50aWNrSW50ZXJ2YWw7YT1hLmluZm87dmFyIGcsdztpZihDLmRhdGVUaW1lJiZhKXt2YXIgTT1wLnRpbWUucmVzb2x2ZURUTEZvcm1hdChuLmRhdGVUaW1lTGFiZWxGb3JtYXRzWyFuLmdyaWQmJmEuaGlnaGVyUmFua3Nba118fGEudW5pdE5hbWVdKTsKdmFyIEY9TS5tYWlufWMuaXNGaXJzdD1BO2MuaXNMYXN0PXU7Yy5mb3JtYXRDdHg9e2F4aXM6QyxjaGFydDpwLGlzRmlyc3Q6QSxpc0xhc3Q6dSxkYXRlVGltZUxhYmVsRm9ybWF0OkYsdGlja1Bvc2l0aW9uSW5mbzphLHZhbHVlOmQ/eShkLmxpbjJsb2cobCkpOmwscG9zOmt9O249Qy5sYWJlbEZvcm1hdHRlci5jYWxsKGMuZm9ybWF0Q3R4LHRoaXMuZm9ybWF0Q3R4KTtpZih3PU0mJk0ubGlzdCljLnNob3J0ZW5MYWJlbD1mdW5jdGlvbigpe2ZvcihnPTA7Zzx3Lmxlbmd0aDtnKyspaWYoRS5hdHRyKHt0ZXh0OkMubGFiZWxGb3JtYXR0ZXIuY2FsbChEKGMuZm9ybWF0Q3R4LHtkYXRlVGltZUxhYmVsRm9ybWF0OndbZ119KSl9KSxFLmdldEJCb3goKS53aWR0aDxDLmdldFNsb3RXaWR0aChjKS0yKnYoZi5wYWRkaW5nLDUpKXJldHVybjtFLmF0dHIoe3RleHQ6IiJ9KX07bSYmQy5fYWRkZWRQbG90TEImJkMuaXNYQXhpcyYmYy5tb3ZlTGFiZWwobixmKTtCKEUpfHxjLm1vdmVkTGFiZWw/CkUmJkUudGV4dFN0ciE9PW4mJiFtJiYoIUUudGV4dFdpZHRofHxmLnN0eWxlJiZmLnN0eWxlLndpZHRofHxFLnN0eWxlcy53aWR0aHx8RS5jc3Moe3dpZHRoOm51bGx9KSxFLmF0dHIoe3RleHQ6bn0pLEUudGV4dFB4TGVuZ3RoPUUuZ2V0QkJveCgpLndpZHRoKTooYy5sYWJlbD1FPWMuY3JlYXRlTGFiZWwoe3g6MCx5OjB9LG4sZiksYy5yb3RhdGlvbj0wKX07Yy5wcm90b3R5cGUuY3JlYXRlTGFiZWw9ZnVuY3Rpb24oYyxDLG4pe3ZhciBwPXRoaXMuYXhpcyxtPXAuY2hhcnQ7aWYoYz1CKEMpJiZuLmVuYWJsZWQ/bS5yZW5kZXJlci50ZXh0KEMsYy54LGMueSxuLnVzZUhUTUwpLmFkZChwLmxhYmVsR3JvdXApOm51bGwpbS5zdHlsZWRNb2RlfHxjLmNzcyhHKG4uc3R5bGUpKSxjLnRleHRQeExlbmd0aD1jLmdldEJCb3goKS53aWR0aDtyZXR1cm4gY307Yy5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe0godGhpcyx0aGlzLmF4aXMpfTtjLnByb3RvdHlwZS5nZXRQb3NpdGlvbj1mdW5jdGlvbihjLApDLG4scCl7dmFyIG09dGhpcy5heGlzLGQ9bS5jaGFydCxsPXAmJmQub2xkQ2hhcnRIZWlnaHR8fGQuY2hhcnRIZWlnaHQ7Yz17eDpjP3kobS50cmFuc2xhdGUoQytuLG51bGwsbnVsbCxwKSttLnRyYW5zQik6bS5sZWZ0K20ub2Zmc2V0KyhtLm9wcG9zaXRlPyhwJiZkLm9sZENoYXJ0V2lkdGh8fGQuY2hhcnRXaWR0aCktbS5yaWdodC1tLmxlZnQ6MCkseTpjP2wtbS5ib3R0b20rbS5vZmZzZXQtKG0ub3Bwb3NpdGU/bS5oZWlnaHQ6MCk6eShsLW0udHJhbnNsYXRlKEMrbixudWxsLG51bGwscCktbS50cmFuc0IpfTtjLnk9cShjLnksLTFFNSwxRTUpO0oodGhpcywiYWZ0ZXJHZXRQb3NpdGlvbiIse3BvczpjfSk7cmV0dXJuIGN9O2MucHJvdG90eXBlLmdldExhYmVsUG9zaXRpb249ZnVuY3Rpb24oYyxDLG4scCxtLGQsbCxrKXt2YXIgZj10aGlzLmF4aXMsYT1mLnRyYW5zQSxBPWYuaXNMaW5rZWQmJmYubGlua2VkUGFyZW50P2YubGlua2VkUGFyZW50LnJldmVyc2VkOmYucmV2ZXJzZWQsCnU9Zi5zdGFnZ2VyTGluZXMscj1mLnRpY2tSb3RDb3JyfHx7eDowLHk6MH0sZz1tLnksdz1wfHxmLnJlc2VydmVTcGFjZURlZmF1bHQ/MDotZi5sYWJlbE9mZnNldCooImNlbnRlciI9PT1mLmxhYmVsQWxpZ24/LjU6MSksTT17fTtCKGcpfHwoZz0wPT09Zi5zaWRlP24ucm90YXRpb24/LTg6LW4uZ2V0QkJveCgpLmhlaWdodDoyPT09Zi5zaWRlP3IueSs4Ok1hdGguY29zKG4ucm90YXRpb24qSykqKHIueS1uLmdldEJCb3goITEsMCkuaGVpZ2h0LzIpKTtjPWMrbS54K3crci54LShkJiZwP2QqYSooQT8tMToxKTowKTtDPUMrZy0oZCYmIXA/ZCphKihBPzE6LTEpOjApO3UmJihuPWwvKGt8fDEpJXUsZi5vcHBvc2l0ZSYmKG49dS1uLTEpLEMrPWYubGFiZWxPZmZzZXQvdSpuKTtNLng9YztNLnk9TWF0aC5yb3VuZChDKTtKKHRoaXMsImFmdGVyR2V0TGFiZWxQb3NpdGlvbiIse3BvczpNLHRpY2ttYXJrT2Zmc2V0OmQsaW5kZXg6bH0pO3JldHVybiBNfTtjLnByb3RvdHlwZS5nZXRMYWJlbFNpemU9CmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGFiZWw/dGhpcy5sYWJlbC5nZXRCQm94KClbdGhpcy5heGlzLmhvcml6PyJoZWlnaHQiOiJ3aWR0aCJdOjB9O2MucHJvdG90eXBlLmdldE1hcmtQYXRoPWZ1bmN0aW9uKGMsQyxuLHAsbSxkKXtyZXR1cm4gZC5jcmlzcExpbmUoW1siTSIsYyxDXSxbIkwiLGMrKG0/MDotbiksQysobT9uOjApXV0scCl9O2MucHJvdG90eXBlLmhhbmRsZU92ZXJmbG93PWZ1bmN0aW9uKGMpe3ZhciByPXRoaXMuYXhpcyxuPXIub3B0aW9ucy5sYWJlbHMscD1jLngsbT1yLmNoYXJ0LmNoYXJ0V2lkdGgsZD1yLmNoYXJ0LnNwYWNpbmcsbD12KHIubGFiZWxMZWZ0LE1hdGgubWluKHIucG9zLGRbM10pKTtkPXYoci5sYWJlbFJpZ2h0LE1hdGgubWF4KHIuaXNSYWRpYWw/MDpyLnBvcytyLmxlbixtLWRbMV0pKTt2YXIgaz10aGlzLmxhYmVsLGY9dGhpcy5yb3RhdGlvbixhPXtsZWZ0OjAsY2VudGVyOi41LHJpZ2h0OjF9W3IubGFiZWxBbGlnbnx8ay5hdHRyKCJhbGlnbiIpXSwKQT1rLmdldEJCb3goKS53aWR0aCx1PXIuZ2V0U2xvdFdpZHRoKHRoaXMpLEU9dSxnPTEsdyxNPXt9O2lmKGZ8fCJqdXN0aWZ5IiE9PXYobi5vdmVyZmxvdywianVzdGlmeSIpKTA+ZiYmcC1hKkE8bD93PU1hdGgucm91bmQocC9NYXRoLmNvcyhmKkspLWwpOjA8ZiYmcCthKkE+ZCYmKHc9TWF0aC5yb3VuZCgobS1wKS9NYXRoLmNvcyhmKkspKSk7ZWxzZSBpZihtPXArKDEtYSkqQSxwLWEqQTxsP0U9Yy54K0UqKDEtYSktbDptPmQmJihFPWQtYy54K0UqYSxnPS0xKSxFPU1hdGgubWluKHUsRSksRTx1JiYiY2VudGVyIj09PXIubGFiZWxBbGlnbiYmKGMueCs9ZyoodS1FLWEqKHUtTWF0aC5taW4oQSxFKSkpKSxBPkV8fHIuYXV0b1JvdGF0aW9uJiYoay5zdHlsZXN8fHt9KS53aWR0aCl3PUU7dyYmKHRoaXMuc2hvcnRlbkxhYmVsP3RoaXMuc2hvcnRlbkxhYmVsKCk6KE0ud2lkdGg9TWF0aC5mbG9vcih3KSsicHgiLChuLnN0eWxlfHx7fSkudGV4dE92ZXJmbG93fHwoTS50ZXh0T3ZlcmZsb3c9CiJlbGxpcHNpcyIpLGsuY3NzKE0pKSl9O2MucHJvdG90eXBlLm1vdmVMYWJlbD1mdW5jdGlvbihjLEMpe3ZhciByPXRoaXMscD1yLmxhYmVsLG09ITEsZD1yLmF4aXMsbD1kLnJldmVyc2VkLGs9ZC5jaGFydC5pbnZlcnRlZDtwJiZwLnRleHRTdHI9PT1jPyhyLm1vdmVkTGFiZWw9cCxtPSEwLGRlbGV0ZSByLmxhYmVsKTpMKGQudGlja3MsZnVuY3Rpb24oYSl7bXx8YS5pc05ld3x8YT09PXJ8fCFhLmxhYmVsfHxhLmxhYmVsLnRleHRTdHIhPT1jfHwoci5tb3ZlZExhYmVsPWEubGFiZWwsbT0hMCxhLmxhYmVsUG9zPXIubW92ZWRMYWJlbC54eSxkZWxldGUgYS5sYWJlbCl9KTtpZighbSYmKHIubGFiZWxQb3N8fHApKXt2YXIgZj1yLmxhYmVsUG9zfHxwLnh5O3A9az9mLng6bD8wOmQud2lkdGgrZC5sZWZ0O2Q9az9sP2Qud2lkdGgrZC5sZWZ0OjA6Zi55O3IubW92ZWRMYWJlbD1yLmNyZWF0ZUxhYmVsKHt4OnAseTpkfSxjLEMpO3IubW92ZWRMYWJlbCYmci5tb3ZlZExhYmVsLmF0dHIoe29wYWNpdHk6MH0pfX07CmMucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihjLEMsbil7dmFyIHA9dGhpcy5heGlzLG09cC5ob3JpeixkPXRoaXMucG9zLGw9dih0aGlzLnRpY2ttYXJrT2Zmc2V0LHAudGlja21hcmtPZmZzZXQpO2Q9dGhpcy5nZXRQb3NpdGlvbihtLGQsbCxDKTtsPWQueDt2YXIgaz1kLnk7cD1tJiZsPT09cC5wb3MrcC5sZW58fCFtJiZrPT09cC5wb3M/LTE6MTtuPXYobiwxKTt0aGlzLmlzQWN0aXZlPSEwO3RoaXMucmVuZGVyR3JpZExpbmUoQyxuLHApO3RoaXMucmVuZGVyTWFyayhkLG4scCk7dGhpcy5yZW5kZXJMYWJlbChkLEMsbixjKTt0aGlzLmlzTmV3PSExO0oodGhpcywiYWZ0ZXJSZW5kZXIiKX07Yy5wcm90b3R5cGUucmVuZGVyR3JpZExpbmU9ZnVuY3Rpb24oYyxDLG4pe3ZhciBwPXRoaXMuYXhpcyxtPXAub3B0aW9ucyxkPXRoaXMuZ3JpZExpbmUsbD17fSxrPXRoaXMucG9zLGY9dGhpcy50eXBlLGE9dih0aGlzLnRpY2ttYXJrT2Zmc2V0LHAudGlja21hcmtPZmZzZXQpLEE9cC5jaGFydC5yZW5kZXJlciwKdT1mP2YrIkdyaWQiOiJncmlkIixyPW1bdSsiTGluZVdpZHRoIl0sZz1tW3UrIkxpbmVDb2xvciJdO209bVt1KyJMaW5lRGFzaFN0eWxlIl07ZHx8KHAuY2hhcnQuc3R5bGVkTW9kZXx8KGwuc3Ryb2tlPWcsbFsic3Ryb2tlLXdpZHRoIl09cixtJiYobC5kYXNoc3R5bGU9bSkpLGZ8fChsLnpJbmRleD0xKSxjJiYoQz0wKSx0aGlzLmdyaWRMaW5lPWQ9QS5wYXRoKCkuYXR0cihsKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy0iKyhmP2YrIi0iOiIiKSsiZ3JpZC1saW5lIikuYWRkKHAuZ3JpZEdyb3VwKSk7aWYoZCYmKG49cC5nZXRQbG90TGluZVBhdGgoe3ZhbHVlOmsrYSxsaW5lV2lkdGg6ZC5zdHJva2VXaWR0aCgpKm4sZm9yY2U6InBhc3MiLG9sZDpjfSkpKWRbY3x8dGhpcy5pc05ldz8iYXR0ciI6ImFuaW1hdGUiXSh7ZDpuLG9wYWNpdHk6Q30pfTtjLnByb3RvdHlwZS5yZW5kZXJNYXJrPWZ1bmN0aW9uKGMsbixnKXt2YXIgcD10aGlzLmF4aXMsbT1wLm9wdGlvbnMsZD1wLmNoYXJ0LnJlbmRlcmVyLApsPXRoaXMudHlwZSxrPWw/bCsiVGljayI6InRpY2siLGY9cC50aWNrU2l6ZShrKSxhPXRoaXMubWFyayxBPSFhLHU9Yy54O2M9Yy55O3ZhciByPXYobVtrKyJXaWR0aCJdLCFsJiZwLmlzWEF4aXM/MTowKTttPW1baysiQ29sb3IiXTtmJiYocC5vcHBvc2l0ZSYmKGZbMF09LWZbMF0pLEEmJih0aGlzLm1hcms9YT1kLnBhdGgoKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy0iKyhsP2wrIi0iOiIiKSsidGljayIpLmFkZChwLmF4aXNHcm91cCkscC5jaGFydC5zdHlsZWRNb2RlfHxhLmF0dHIoe3N0cm9rZTptLCJzdHJva2Utd2lkdGgiOnJ9KSksYVtBPyJhdHRyIjoiYW5pbWF0ZSJdKHtkOnRoaXMuZ2V0TWFya1BhdGgodSxjLGZbMF0sYS5zdHJva2VXaWR0aCgpKmcscC5ob3JpeixkKSxvcGFjaXR5Om59KSl9O2MucHJvdG90eXBlLnJlbmRlckxhYmVsPWZ1bmN0aW9uKGMsbixnLHApe3ZhciBtPXRoaXMuYXhpcyxkPW0uaG9yaXosbD1tLm9wdGlvbnMsaz10aGlzLmxhYmVsLGY9bC5sYWJlbHMsCmE9Zi5zdGVwO209dih0aGlzLnRpY2ttYXJrT2Zmc2V0LG0udGlja21hcmtPZmZzZXQpO3ZhciBBPSEwLHU9Yy54O2M9Yy55O2smJnQodSkmJihrLnh5PWM9dGhpcy5nZXRMYWJlbFBvc2l0aW9uKHUsYyxrLGQsZixtLHAsYSksdGhpcy5pc0ZpcnN0JiYhdGhpcy5pc0xhc3QmJiF2KGwuc2hvd0ZpcnN0TGFiZWwsMSl8fHRoaXMuaXNMYXN0JiYhdGhpcy5pc0ZpcnN0JiYhdihsLnNob3dMYXN0TGFiZWwsMSk/QT0hMTohZHx8Zi5zdGVwfHxmLnJvdGF0aW9ufHxufHwwPT09Z3x8dGhpcy5oYW5kbGVPdmVyZmxvdyhjKSxhJiZwJWEmJihBPSExKSxBJiZ0KGMueSk/KGMub3BhY2l0eT1nLGtbdGhpcy5pc05ld0xhYmVsPyJhdHRyIjoiYW5pbWF0ZSJdKGMpLHRoaXMuaXNOZXdMYWJlbD0hMSk6KGsuYXR0cigieSIsLTk5OTkpLHRoaXMuaXNOZXdMYWJlbD0hMCkpfTtjLnByb3RvdHlwZS5yZXBsYWNlTW92ZWRMYWJlbD1mdW5jdGlvbigpe3ZhciBjPXRoaXMubGFiZWwsbj10aGlzLmF4aXMsZz0Kbi5yZXZlcnNlZCxwPXRoaXMuYXhpcy5jaGFydC5pbnZlcnRlZDtpZihjJiYhdGhpcy5pc05ldyl7dmFyIG09cD9jLnh5Lng6Zz9uLmxlZnQ6bi53aWR0aCtuLmxlZnQ7Zz1wP2c/bi53aWR0aCtuLnRvcDpuLnRvcDpjLnh5Lnk7Yy5hbmltYXRlKHt4Om0seTpnLG9wYWNpdHk6MH0sdm9pZCAwLGMuZGVzdHJveSk7ZGVsZXRlIHRoaXMubGFiZWx9bi5pc0RpcnR5PSEwO3RoaXMubGFiZWw9dGhpcy5tb3ZlZExhYmVsO2RlbGV0ZSB0aGlzLm1vdmVkTGFiZWx9O3JldHVybiBjfSgpO2cuVGljaz1jO3JldHVybiBnLlRpY2t9KTtPKHEsInBhcnRzL1RpbWUuanMiLFtxWyJwYXJ0cy9HbG9iYWxzLmpzIl0scVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGcsYyl7dmFyIHE9Yy5kZWZpbmVkLHk9Yy5lcnJvcixCPWMuZXh0ZW5kLEg9Yy5pc09iamVjdCxEPWMubWVyZ2UsSj1jLm9iamVjdEVhY2gsdD1jLnBhZCxHPWMucGljayxMPWMuc3BsYXQsdj1jLnRpbWVVbml0cyxLPWcud2luOwpjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhjKXt0aGlzLm9wdGlvbnM9e307dGhpcy52YXJpYWJsZVRpbWV6b25lPXRoaXMudXNlVVRDPSExO3RoaXMuRGF0ZT1LLkRhdGU7dGhpcy5nZXRUaW1lem9uZU9mZnNldD10aGlzLnRpbWV6b25lT2Zmc2V0RnVuY3Rpb24oKTt0aGlzLnVwZGF0ZShjKX1jLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oYyxuKXtpZih0aGlzLnZhcmlhYmxlVGltZXpvbmV8fHRoaXMudGltZXpvbmVPZmZzZXQpe3ZhciByPW4uZ2V0VGltZSgpLHA9ci10aGlzLmdldFRpbWV6b25lT2Zmc2V0KG4pO24uc2V0VGltZShwKTtjPW5bImdldFVUQyIrY10oKTtuLnNldFRpbWUocik7cmV0dXJuIGN9cmV0dXJuIHRoaXMudXNlVVRDP25bImdldFVUQyIrY10oKTpuWyJnZXQiK2NdKCl9O2MucHJvdG90eXBlLnNldD1mdW5jdGlvbihjLG4sZyl7aWYodGhpcy52YXJpYWJsZVRpbWV6b25lfHx0aGlzLnRpbWV6b25lT2Zmc2V0KXtpZigiTWlsbGlzZWNvbmRzIj09PWN8fCJTZWNvbmRzIj09PQpjfHwiTWludXRlcyI9PT1jKXJldHVybiBuWyJzZXRVVEMiK2NdKGcpO3ZhciBwPXRoaXMuZ2V0VGltZXpvbmVPZmZzZXQobik7cD1uLmdldFRpbWUoKS1wO24uc2V0VGltZShwKTtuWyJzZXRVVEMiK2NdKGcpO2M9dGhpcy5nZXRUaW1lem9uZU9mZnNldChuKTtwPW4uZ2V0VGltZSgpK2M7cmV0dXJuIG4uc2V0VGltZShwKX1yZXR1cm4gdGhpcy51c2VVVEM/blsic2V0VVRDIitjXShnKTpuWyJzZXQiK2NdKGcpfTtjLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oYyl7dmFyIG49RyhjJiZjLnVzZVVUQywhMCk7dGhpcy5vcHRpb25zPWM9RCghMCx0aGlzLm9wdGlvbnN8fHt9LGMpO3RoaXMuRGF0ZT1jLkRhdGV8fEsuRGF0ZXx8RGF0ZTt0aGlzLnRpbWV6b25lT2Zmc2V0PSh0aGlzLnVzZVVUQz1uKSYmYy50aW1lem9uZU9mZnNldDt0aGlzLmdldFRpbWV6b25lT2Zmc2V0PXRoaXMudGltZXpvbmVPZmZzZXRGdW5jdGlvbigpO3RoaXMudmFyaWFibGVUaW1lem9uZT0hKG4mJiFjLmdldFRpbWV6b25lT2Zmc2V0JiYKIWMudGltZXpvbmUpfTtjLnByb3RvdHlwZS5tYWtlVGltZT1mdW5jdGlvbihjLG4sdCxwLG0sZCl7aWYodGhpcy51c2VVVEMpe3ZhciBsPXRoaXMuRGF0ZS5VVEMuYXBwbHkoMCxhcmd1bWVudHMpO3ZhciBrPXRoaXMuZ2V0VGltZXpvbmVPZmZzZXQobCk7bCs9azt2YXIgZj10aGlzLmdldFRpbWV6b25lT2Zmc2V0KGwpO2shPT1mP2wrPWYtazprLTM2RTUhPT10aGlzLmdldFRpbWV6b25lT2Zmc2V0KGwtMzZFNSl8fGcuaXNTYWZhcml8fChsLT0zNkU1KX1lbHNlIGw9KG5ldyB0aGlzLkRhdGUoYyxuLEcodCwxKSxHKHAsMCksRyhtLDApLEcoZCwwKSkpLmdldFRpbWUoKTtyZXR1cm4gbH07Yy5wcm90b3R5cGUudGltZXpvbmVPZmZzZXRGdW5jdGlvbj1mdW5jdGlvbigpe3ZhciBjPXRoaXMsbj10aGlzLm9wdGlvbnMsZz1LLm1vbWVudDtpZighdGhpcy51c2VVVEMpcmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiA2RTQqKG5ldyBEYXRlKGMudG9TdHJpbmcoKSkpLmdldFRpbWV6b25lT2Zmc2V0KCl9OwppZihuLnRpbWV6b25lKXtpZihnKXJldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gNkU0Ki1nLnR6KGMsbi50aW1lem9uZSkudXRjT2Zmc2V0KCl9O3koMjUpfXJldHVybiB0aGlzLnVzZVVUQyYmbi5nZXRUaW1lem9uZU9mZnNldD9mdW5jdGlvbihjKXtyZXR1cm4gNkU0Km4uZ2V0VGltZXpvbmVPZmZzZXQoYy52YWx1ZU9mKCkpfTpmdW5jdGlvbigpe3JldHVybiA2RTQqKGMudGltZXpvbmVPZmZzZXR8fDApfX07Yy5wcm90b3R5cGUuZGF0ZUZvcm1hdD1mdW5jdGlvbihjLG4sdil7dmFyIHA7aWYoIXEobil8fGlzTmFOKG4pKXJldHVybihudWxsPT09KHA9Zy5kZWZhdWx0T3B0aW9ucy5sYW5nKXx8dm9pZCAwPT09cD92b2lkIDA6cC5pbnZhbGlkRGF0ZSl8fCIiO2M9RyhjLCIlWS0lbS0lZCAlSDolTTolUyIpO3ZhciBtPXRoaXM7cD1uZXcgdGhpcy5EYXRlKG4pO3ZhciBkPXRoaXMuZ2V0KCJIb3VycyIscCksbD10aGlzLmdldCgiRGF5IixwKSxrPXRoaXMuZ2V0KCJEYXRlIixwKSxmPXRoaXMuZ2V0KCJNb250aCIsCnApLGE9dGhpcy5nZXQoIkZ1bGxZZWFyIixwKSxBPWcuZGVmYXVsdE9wdGlvbnMubGFuZyx1PW51bGw9PT1BfHx2b2lkIDA9PT1BP3ZvaWQgMDpBLndlZWtkYXlzLEU9bnVsbD09PUF8fHZvaWQgMD09PUE/dm9pZCAwOkEuc2hvcnRXZWVrZGF5cztwPUIoe2E6RT9FW2xdOnVbbF0uc3Vic3RyKDAsMyksQTp1W2xdLGQ6dChrKSxlOnQoaywyLCIgIiksdzpsLGI6QS5zaG9ydE1vbnRoc1tmXSxCOkEubW9udGhzW2ZdLG06dChmKzEpLG86ZisxLHk6YS50b1N0cmluZygpLnN1YnN0cigyLDIpLFk6YSxIOnQoZCksazpkLEk6dChkJTEyfHwxMiksbDpkJTEyfHwxMixNOnQodGhpcy5nZXQoIk1pbnV0ZXMiLHApKSxwOjEyPmQ/IkFNIjoiUE0iLFA6MTI+ZD8iYW0iOiJwbSIsUzp0KHAuZ2V0U2Vjb25kcygpKSxMOnQoTWF0aC5mbG9vcihuJTFFMyksMyl9LGcuZGF0ZUZvcm1hdHMpO0oocCxmdW5jdGlvbihhLGYpe2Zvcig7LTEhPT1jLmluZGV4T2YoIiUiK2YpOyljPWMucmVwbGFjZSgiJSIrZiwKImZ1bmN0aW9uIj09PXR5cGVvZiBhP2EuY2FsbChtLG4pOmEpfSk7cmV0dXJuIHY/Yy5zdWJzdHIoMCwxKS50b1VwcGVyQ2FzZSgpK2Muc3Vic3RyKDEpOmN9O2MucHJvdG90eXBlLnJlc29sdmVEVExGb3JtYXQ9ZnVuY3Rpb24oYyl7cmV0dXJuIEgoYywhMCk/YzooYz1MKGMpLHttYWluOmNbMF0sZnJvbTpjWzFdLHRvOmNbMl19KX07Yy5wcm90b3R5cGUuZ2V0VGltZVRpY2tzPWZ1bmN0aW9uKGMsbixnLHApe3ZhciBtPXRoaXMsZD1bXSxsPXt9O3ZhciBrPW5ldyBtLkRhdGUobik7dmFyIGY9Yy51bml0UmFuZ2UsYT1jLmNvdW50fHwxLEE7cD1HKHAsMSk7aWYocShuKSl7bS5zZXQoIk1pbGxpc2Vjb25kcyIsayxmPj12LnNlY29uZD8wOmEqTWF0aC5mbG9vcihtLmdldCgiTWlsbGlzZWNvbmRzIixrKS9hKSk7Zj49di5zZWNvbmQmJm0uc2V0KCJTZWNvbmRzIixrLGY+PXYubWludXRlPzA6YSpNYXRoLmZsb29yKG0uZ2V0KCJTZWNvbmRzIixrKS9hKSk7Zj49di5taW51dGUmJm0uc2V0KCJNaW51dGVzIiwKayxmPj12LmhvdXI/MDphKk1hdGguZmxvb3IobS5nZXQoIk1pbnV0ZXMiLGspL2EpKTtmPj12LmhvdXImJm0uc2V0KCJIb3VycyIsayxmPj12LmRheT8wOmEqTWF0aC5mbG9vcihtLmdldCgiSG91cnMiLGspL2EpKTtmPj12LmRheSYmbS5zZXQoIkRhdGUiLGssZj49di5tb250aD8xOk1hdGgubWF4KDEsYSpNYXRoLmZsb29yKG0uZ2V0KCJEYXRlIixrKS9hKSkpO2lmKGY+PXYubW9udGgpe20uc2V0KCJNb250aCIsayxmPj12LnllYXI/MDphKk1hdGguZmxvb3IobS5nZXQoIk1vbnRoIixrKS9hKSk7dmFyIHU9bS5nZXQoIkZ1bGxZZWFyIixrKX1mPj12LnllYXImJm0uc2V0KCJGdWxsWWVhciIsayx1LXUlYSk7Zj09PXYud2VlayYmKHU9bS5nZXQoIkRheSIsayksbS5zZXQoIkRhdGUiLGssbS5nZXQoIkRhdGUiLGspLXUrcCsodTxwPy03OjApKSk7dT1tLmdldCgiRnVsbFllYXIiLGspO3A9bS5nZXQoIk1vbnRoIixrKTt2YXIgRT1tLmdldCgiRGF0ZSIsaykscj1tLmdldCgiSG91cnMiLAprKTtuPWsuZ2V0VGltZSgpO20udmFyaWFibGVUaW1lem9uZSYmKEE9Zy1uPjQqdi5tb250aHx8bS5nZXRUaW1lem9uZU9mZnNldChuKSE9PW0uZ2V0VGltZXpvbmVPZmZzZXQoZykpO249ay5nZXRUaW1lKCk7Zm9yKGs9MTtuPGc7KWQucHVzaChuKSxuPWY9PT12LnllYXI/bS5tYWtlVGltZSh1K2sqYSwwKTpmPT09di5tb250aD9tLm1ha2VUaW1lKHUscCtrKmEpOiFBfHxmIT09di5kYXkmJmYhPT12LndlZWs/QSYmZj09PXYuaG91ciYmMTxhP20ubWFrZVRpbWUodSxwLEUscitrKmEpOm4rZiphOm0ubWFrZVRpbWUodSxwLEUrayphKihmPT09di5kYXk/MTo3KSksaysrO2QucHVzaChuKTtmPD12LmhvdXImJjFFND5kLmxlbmd0aCYmZC5mb3JFYWNoKGZ1bmN0aW9uKGEpezA9PT1hJTE4RTUmJiIwMDAwMDAwMDAiPT09bS5kYXRlRm9ybWF0KCIlSCVNJVMlTCIsYSkmJihsW2FdPSJkYXkiKX0pfWQuaW5mbz1CKGMse2hpZ2hlclJhbmtzOmwsdG90YWxSYW5nZTpmKmF9KTtyZXR1cm4gZH07CnJldHVybiBjfSgpO2cuVGltZT1jO3JldHVybiBnLlRpbWV9KTtPKHEsInBhcnRzL09wdGlvbnMuanMiLFtxWyJwYXJ0cy9HbG9iYWxzLmpzIl0scVsicGFydHMvVGltZS5qcyJdLHFbInBhcnRzL0NvbG9yLmpzIl0scVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGcsYyxxLHkpe3E9cS5wYXJzZTt5PXkubWVyZ2U7Zy5kZWZhdWx0T3B0aW9ucz17Y29sb3JzOiIjN2NiNWVjICM0MzQzNDggIzkwZWQ3ZCAjZjdhMzVjICM4MDg1ZTkgI2YxNWM4MCAjZTRkMzU0ICMyYjkwOGYgI2Y0NWI1YiAjOTFlOGUxIi5zcGxpdCgiICIpLHN5bWJvbHM6WyJjaXJjbGUiLCJkaWFtb25kIiwic3F1YXJlIiwidHJpYW5nbGUiLCJ0cmlhbmdsZS1kb3duIl0sbGFuZzp7bG9hZGluZzoiTG9hZGluZy4uLiIsbW9udGhzOiJKYW51YXJ5IEZlYnJ1YXJ5IE1hcmNoIEFwcmlsIE1heSBKdW5lIEp1bHkgQXVndXN0IFNlcHRlbWJlciBPY3RvYmVyIE5vdmVtYmVyIERlY2VtYmVyIi5zcGxpdCgiICIpLApzaG9ydE1vbnRoczoiSmFuIEZlYiBNYXIgQXByIE1heSBKdW4gSnVsIEF1ZyBTZXAgT2N0IE5vdiBEZWMiLnNwbGl0KCIgIiksd2Vla2RheXM6IlN1bmRheSBNb25kYXkgVHVlc2RheSBXZWRuZXNkYXkgVGh1cnNkYXkgRnJpZGF5IFNhdHVyZGF5Ii5zcGxpdCgiICIpLGRlY2ltYWxQb2ludDoiLiIsbnVtZXJpY1N5bWJvbHM6ImtNR1RQRSIuc3BsaXQoIiIpLHJlc2V0Wm9vbToiUmVzZXQgem9vbSIscmVzZXRab29tVGl0bGU6IlJlc2V0IHpvb20gbGV2ZWwgMToxIix0aG91c2FuZHNTZXA6IiAifSxnbG9iYWw6e30sdGltZTp7RGF0ZTp2b2lkIDAsZ2V0VGltZXpvbmVPZmZzZXQ6dm9pZCAwLHRpbWV6b25lOnZvaWQgMCx0aW1lem9uZU9mZnNldDowLHVzZVVUQzohMH0sY2hhcnQ6e3N0eWxlZE1vZGU6ITEsYm9yZGVyUmFkaXVzOjAsY29sb3JDb3VudDoxMCxkZWZhdWx0U2VyaWVzVHlwZToibGluZSIsaWdub3JlSGlkZGVuU2VyaWVzOiEwLHNwYWNpbmc6WzEwLDEwLDE1LDEwXSxyZXNldFpvb21CdXR0b246e3RoZW1lOnt6SW5kZXg6Nn0sCnBvc2l0aW9uOnthbGlnbjoicmlnaHQiLHg6LTEwLHk6MTB9fSx3aWR0aDpudWxsLGhlaWdodDpudWxsLGJvcmRlckNvbG9yOiIjMzM1Y2FkIixiYWNrZ3JvdW5kQ29sb3I6IiNmZmZmZmYiLHBsb3RCb3JkZXJDb2xvcjoiI2NjY2NjYyJ9LHRpdGxlOnt0ZXh0OiJDaGFydCB0aXRsZSIsYWxpZ246ImNlbnRlciIsbWFyZ2luOjE1LHdpZHRoQWRqdXN0Oi00NH0sc3VidGl0bGU6e3RleHQ6IiIsYWxpZ246ImNlbnRlciIsd2lkdGhBZGp1c3Q6LTQ0fSxjYXB0aW9uOnttYXJnaW46MTUsdGV4dDoiIixhbGlnbjoibGVmdCIsdmVydGljYWxBbGlnbjoiYm90dG9tIn0scGxvdE9wdGlvbnM6e30sbGFiZWxzOntzdHlsZTp7cG9zaXRpb246ImFic29sdXRlIixjb2xvcjoiIzMzMzMzMyJ9fSxsZWdlbmQ6e2VuYWJsZWQ6ITAsYWxpZ246ImNlbnRlciIsYWxpZ25Db2x1bW5zOiEwLGxheW91dDoiaG9yaXpvbnRhbCIsbGFiZWxGb3JtYXR0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYW1lfSxib3JkZXJDb2xvcjoiIzk5OTk5OSIsCmJvcmRlclJhZGl1czowLG5hdmlnYXRpb246e2FjdGl2ZUNvbG9yOiIjMDAzMzk5IixpbmFjdGl2ZUNvbG9yOiIjY2NjY2NjIn0saXRlbVN0eWxlOntjb2xvcjoiIzMzMzMzMyIsY3Vyc29yOiJwb2ludGVyIixmb250U2l6ZToiMTJweCIsZm9udFdlaWdodDoiYm9sZCIsdGV4dE92ZXJmbG93OiJlbGxpcHNpcyJ9LGl0ZW1Ib3ZlclN0eWxlOntjb2xvcjoiIzAwMDAwMCJ9LGl0ZW1IaWRkZW5TdHlsZTp7Y29sb3I6IiNjY2NjY2MifSxzaGFkb3c6ITEsaXRlbUNoZWNrYm94U3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsd2lkdGg6IjEzcHgiLGhlaWdodDoiMTNweCJ9LHNxdWFyZVN5bWJvbDohMCxzeW1ib2xQYWRkaW5nOjUsdmVydGljYWxBbGlnbjoiYm90dG9tIix4OjAseTowLHRpdGxlOntzdHlsZTp7Zm9udFdlaWdodDoiYm9sZCJ9fX0sbG9hZGluZzp7bGFiZWxTdHlsZTp7Zm9udFdlaWdodDoiYm9sZCIscG9zaXRpb246InJlbGF0aXZlIix0b3A6IjQ1JSJ9LHN0eWxlOntwb3NpdGlvbjoiYWJzb2x1dGUiLApiYWNrZ3JvdW5kQ29sb3I6IiNmZmZmZmYiLG9wYWNpdHk6LjUsdGV4dEFsaWduOiJjZW50ZXIifX0sdG9vbHRpcDp7ZW5hYmxlZDohMCxhbmltYXRpb246Zy5zdmcsYm9yZGVyUmFkaXVzOjMsZGF0ZVRpbWVMYWJlbEZvcm1hdHM6e21pbGxpc2Vjb25kOiIlQSwgJWIgJWUsICVIOiVNOiVTLiVMIixzZWNvbmQ6IiVBLCAlYiAlZSwgJUg6JU06JVMiLG1pbnV0ZToiJUEsICViICVlLCAlSDolTSIsaG91cjoiJUEsICViICVlLCAlSDolTSIsZGF5OiIlQSwgJWIgJWUsICVZIix3ZWVrOiJXZWVrIGZyb20gJUEsICViICVlLCAlWSIsbW9udGg6IiVCICVZIix5ZWFyOiIlWSJ9LGZvb3RlckZvcm1hdDoiIixwYWRkaW5nOjgsc25hcDpnLmlzVG91Y2hEZXZpY2U/MjU6MTAsaGVhZGVyRm9ybWF0Oic8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB4Ij57cG9pbnQua2V5fTwvc3Bhbj48YnIvPicscG9pbnRGb3JtYXQ6JzxzcGFuIHN0eWxlPSJjb2xvcjp7cG9pbnQuY29sb3J9Ij5cdTI1Y2Y8L3NwYW4+IHtzZXJpZXMubmFtZX06IDxiPntwb2ludC55fTwvYj48YnIvPicsCmJhY2tncm91bmRDb2xvcjpxKCIjZjdmN2Y3Iikuc2V0T3BhY2l0eSguODUpLmdldCgpLGJvcmRlcldpZHRoOjEsc2hhZG93OiEwLHN0eWxlOntjb2xvcjoiIzMzMzMzMyIsY3Vyc29yOiJkZWZhdWx0Iixmb250U2l6ZToiMTJweCIsd2hpdGVTcGFjZToibm93cmFwIn19LGNyZWRpdHM6e2VuYWJsZWQ6ITAsaHJlZjoiaHR0cHM6Ly93d3cuaGlnaGNoYXJ0cy5jb20/Y3JlZGl0cyIscG9zaXRpb246e2FsaWduOiJyaWdodCIseDotMTAsdmVydGljYWxBbGlnbjoiYm90dG9tIix5Oi01fSxzdHlsZTp7Y3Vyc29yOiJwb2ludGVyIixjb2xvcjoiIzk5OTk5OSIsZm9udFNpemU6IjlweCJ9LHRleHQ6IkhpZ2hjaGFydHMuY29tIn19OyIiO2cudGltZT1uZXcgYyh5KGcuZGVmYXVsdE9wdGlvbnMuZ2xvYmFsLGcuZGVmYXVsdE9wdGlvbnMudGltZSkpO2cuZGF0ZUZvcm1hdD1mdW5jdGlvbihjLHEseSl7cmV0dXJuIGcudGltZS5kYXRlRm9ybWF0KGMscSx5KX07cmV0dXJue2RhdGVGb3JtYXQ6Zy5kYXRlRm9ybWF0LApkZWZhdWx0T3B0aW9uczpnLmRlZmF1bHRPcHRpb25zLHRpbWU6Zy50aW1lfX0pO08ocSwicGFydHMvQXhpcy5qcyIsW3FbInBhcnRzL0NvbG9yLmpzIl0scVsicGFydHMvR2xvYmFscy5qcyJdLHFbInBhcnRzL1RpY2suanMiXSxxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXSxxWyJwYXJ0cy9PcHRpb25zLmpzIl1dLGZ1bmN0aW9uKGcsYyxxLHksQil7dmFyIEg9eS5hZGRFdmVudCxEPXkuYW5pbU9iamVjdCxKPXkuYXJyYXlNYXgsdD15LmFycmF5TWluLEc9eS5jbGFtcCxMPXkuY29ycmVjdEZsb2F0LHY9eS5kZWZpbmVkLEs9eS5kZXN0cm95T2JqZWN0UHJvcGVydGllcyxuPXkuZXJyb3Iscj15LmV4dGVuZCxDPXkuZmlyZUV2ZW50LEk9eS5mb3JtYXQscD15LmdldE1hZ25pdHVkZSxtPXkuaXNBcnJheSxkPXkuaXNGdW5jdGlvbixsPXkuaXNOdW1iZXIsaz15LmlzU3RyaW5nLGY9eS5tZXJnZSxhPXkubm9ybWFsaXplVGlja0ludGVydmFsLEE9eS5vYmplY3RFYWNoLHU9eS5waWNrLEU9eS5yZWxhdGl2ZUxlbmd0aCwKUD15LnJlbW92ZUV2ZW50LHc9eS5zcGxhdCxNPXkuc3luY1RpbWVvdXQsRj1CLmRlZmF1bHRPcHRpb25zLFE9Yy5kZWcycmFkO3k9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGIsYSl7dGhpcy56b29tRW5hYmxlZD10aGlzLndpZHRoPXRoaXMudmlzaWJsZT10aGlzLnVzZXJPcHRpb25zPXRoaXMudHJhbnNsYXRpb25TbG9wZT10aGlzLnRyYW5zQj10aGlzLnRyYW5zQT10aGlzLnRvcD10aGlzLnRpY2tzPXRoaXMudGlja1JvdENvcnI9dGhpcy50aWNrUG9zaXRpb25zPXRoaXMudGlja21hcmtPZmZzZXQ9dGhpcy50aWNrSW50ZXJ2YWw9dGhpcy50aWNrQW1vdW50PXRoaXMuc2lkZT10aGlzLnNlcmllcz10aGlzLnJpZ2h0PXRoaXMucG9zaXRpdmVWYWx1ZXNPbmx5PXRoaXMucG9zPXRoaXMucG9pbnRSYW5nZVBhZGRpbmc9dGhpcy5wb2ludFJhbmdlPXRoaXMucGxvdExpbmVzQW5kQmFuZHNHcm91cHM9dGhpcy5wbG90TGluZXNBbmRCYW5kcz10aGlzLnBhZGRlZFRpY2tzPXRoaXMub3ZlcmxhcD0KdGhpcy5vcHRpb25zPXRoaXMub2xkTWluPXRoaXMub2xkTWF4PXRoaXMub2Zmc2V0PXRoaXMubmFtZXM9dGhpcy5taW5QaXhlbFBhZGRpbmc9dGhpcy5taW5vclRpY2tzPXRoaXMubWlub3JUaWNrSW50ZXJ2YWw9dGhpcy5taW49dGhpcy5tYXhMYWJlbExlbmd0aD10aGlzLm1heD10aGlzLmxlbj10aGlzLmxlZnQ9dGhpcy5sYWJlbEZvcm1hdHRlcj10aGlzLmxhYmVsRWRnZT10aGlzLmlzTGlua2VkPXRoaXMuaGVpZ2h0PXRoaXMuaGFzVmlzaWJsZVNlcmllcz10aGlzLmhhc05hbWVzPXRoaXMuY29sbD10aGlzLmNsb3Nlc3RQb2ludFJhbmdlPXRoaXMuY2hhcnQ9dGhpcy5jYXRlZ29yaWVzPXRoaXMuYm90dG9tPXRoaXMuYWx0ZXJuYXRlQmFuZHM9dm9pZCAwO3RoaXMuaW5pdChiLGEpfWUucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oYixhKXt2YXIgaD1hLmlzWCxlPXRoaXM7ZS5jaGFydD1iO2UuaG9yaXo9Yi5pbnZlcnRlZCYmIWUuaXNaQXhpcz8haDpoO2UuaXNYQXhpcz1oO2UuY29sbD0KZS5jb2xsfHwoaD8ieEF4aXMiOiJ5QXhpcyIpO0ModGhpcywiaW5pdCIse3VzZXJPcHRpb25zOmF9KTtlLm9wcG9zaXRlPWEub3Bwb3NpdGU7ZS5zaWRlPWEuc2lkZXx8KGUuaG9yaXo/ZS5vcHBvc2l0ZT8wOjI6ZS5vcHBvc2l0ZT8xOjMpO2Uuc2V0T3B0aW9ucyhhKTt2YXIgZj10aGlzLm9wdGlvbnMsaz1mLnR5cGU7ZS5sYWJlbEZvcm1hdHRlcj1mLmxhYmVscy5mb3JtYXR0ZXJ8fGUuZGVmYXVsdExhYmVsRm9ybWF0dGVyO2UudXNlck9wdGlvbnM9YTtlLm1pblBpeGVsUGFkZGluZz0wO2UucmV2ZXJzZWQ9Zi5yZXZlcnNlZDtlLnZpc2libGU9ITEhPT1mLnZpc2libGU7ZS56b29tRW5hYmxlZD0hMSE9PWYuem9vbUVuYWJsZWQ7ZS5oYXNOYW1lcz0iY2F0ZWdvcnkiPT09a3x8ITA9PT1mLmNhdGVnb3JpZXM7ZS5jYXRlZ29yaWVzPWYuY2F0ZWdvcmllc3x8ZS5oYXNOYW1lcztlLm5hbWVzfHwoZS5uYW1lcz1bXSxlLm5hbWVzLmtleXM9e30pO2UucGxvdExpbmVzQW5kQmFuZHNHcm91cHM9Cnt9O2UucG9zaXRpdmVWYWx1ZXNPbmx5PSEoIWUubG9nYXJpdGhtaWN8fGYuYWxsb3dOZWdhdGl2ZUxvZyk7ZS5pc0xpbmtlZD12KGYubGlua2VkVG8pO2UudGlja3M9e307ZS5sYWJlbEVkZ2U9W107ZS5taW5vclRpY2tzPXt9O2UucGxvdExpbmVzQW5kQmFuZHM9W107ZS5hbHRlcm5hdGVCYW5kcz17fTtlLmxlbj0wO2UubWluUmFuZ2U9ZS51c2VyTWluUmFuZ2U9Zi5taW5SYW5nZXx8Zi5tYXhab29tO2UucmFuZ2U9Zi5yYW5nZTtlLm9mZnNldD1mLm9mZnNldHx8MDtlLm1heD1udWxsO2UubWluPW51bGw7ZS5jcm9zc2hhaXI9dShmLmNyb3NzaGFpcix3KGIub3B0aW9ucy50b29sdGlwLmNyb3NzaGFpcnMpW2g/MDoxXSwhMSk7YT1lLm9wdGlvbnMuZXZlbnRzOy0xPT09Yi5heGVzLmluZGV4T2YoZSkmJihoP2IuYXhlcy5zcGxpY2UoYi54QXhpcy5sZW5ndGgsMCxlKTpiLmF4ZXMucHVzaChlKSxiW2UuY29sbF0ucHVzaChlKSk7ZS5zZXJpZXM9ZS5zZXJpZXN8fFtdO2IuaW52ZXJ0ZWQmJgohZS5pc1pBeGlzJiZoJiYidW5kZWZpbmVkIj09PXR5cGVvZiBlLnJldmVyc2VkJiYoZS5yZXZlcnNlZD0hMCk7ZS5sYWJlbFJvdGF0aW9uPWUub3B0aW9ucy5sYWJlbHMucm90YXRpb247QShhLGZ1bmN0aW9uKGIsYSl7ZChiKSYmSChlLGEsYil9KTtDKHRoaXMsImFmdGVySW5pdCIpfTtlLnByb3RvdHlwZS5zZXRPcHRpb25zPWZ1bmN0aW9uKGIpe3RoaXMub3B0aW9ucz1mKGUuZGVmYXVsdE9wdGlvbnMsInlBeGlzIj09PXRoaXMuY29sbCYmZS5kZWZhdWx0WUF4aXNPcHRpb25zLFtlLmRlZmF1bHRUb3BBeGlzT3B0aW9ucyxlLmRlZmF1bHRSaWdodEF4aXNPcHRpb25zLGUuZGVmYXVsdEJvdHRvbUF4aXNPcHRpb25zLGUuZGVmYXVsdExlZnRBeGlzT3B0aW9uc11bdGhpcy5zaWRlXSxmKEZbdGhpcy5jb2xsXSxiKSk7Qyh0aGlzLCJhZnRlclNldE9wdGlvbnMiLHt1c2VyT3B0aW9uczpifSl9O2UucHJvdG90eXBlLmRlZmF1bHRMYWJlbEZvcm1hdHRlcj1mdW5jdGlvbigpe3ZhciBiPXRoaXMuYXhpcywKYT1sKHRoaXMudmFsdWUpP3RoaXMudmFsdWU6TmFOLGU9Yi5jaGFydC50aW1lLGY9Yi5jYXRlZ29yaWVzLGQ9dGhpcy5kYXRlVGltZUxhYmVsRm9ybWF0LGs9Ri5sYW5nLGM9ay5udW1lcmljU3ltYm9scztrPWsubnVtZXJpY1N5bWJvbE1hZ25pdHVkZXx8MUUzO3ZhciB1PWMmJmMubGVuZ3RoLG09Yi5vcHRpb25zLmxhYmVscy5mb3JtYXQ7Yj1iLmxvZ2FyaXRobWljP01hdGguYWJzKGEpOmIudGlja0ludGVydmFsO3ZhciBwPXRoaXMuY2hhcnQsQT1wLm51bWJlckZvcm1hdHRlcjtpZihtKXZhciB3PUkobSx0aGlzLHApO2Vsc2UgaWYoZil3PSIiK3RoaXMudmFsdWU7ZWxzZSBpZihkKXc9ZS5kYXRlRm9ybWF0KGQsYSk7ZWxzZSBpZih1JiYxRTM8PWIpZm9yKDt1LS0mJiJ1bmRlZmluZWQiPT09dHlwZW9mIHc7KWU9TWF0aC5wb3coayx1KzEpLGI+PWUmJjA9PT0xMCphJWUmJm51bGwhPT1jW3VdJiYwIT09YSYmKHc9QShhL2UsLTEpK2NbdV0pOyJ1bmRlZmluZWQiPT09dHlwZW9mIHcmJgoodz0xRTQ8PU1hdGguYWJzKGEpP0EoYSwtMSk6QShhLC0xLHZvaWQgMCwiIikpO3JldHVybiB3fTtlLnByb3RvdHlwZS5nZXRTZXJpZXNFeHRyZW1lcz1mdW5jdGlvbigpe3ZhciBiPXRoaXMsYT1iLmNoYXJ0LGU7Qyh0aGlzLCJnZXRTZXJpZXNFeHRyZW1lcyIsbnVsbCxmdW5jdGlvbigpe2IuaGFzVmlzaWJsZVNlcmllcz0hMTtiLmRhdGFNaW49Yi5kYXRhTWF4PWIudGhyZXNob2xkPW51bGw7Yi5zb2Z0VGhyZXNob2xkPSFiLmlzWEF4aXM7Yi5zdGFja2luZyYmYi5zdGFja2luZy5idWlsZFN0YWNrcygpO2Iuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oaCl7aWYoaC52aXNpYmxlfHwhYS5vcHRpb25zLmNoYXJ0Lmlnbm9yZUhpZGRlblNlcmllcyl7dmFyIGY9aC5vcHRpb25zLGQ9Zi50aHJlc2hvbGQ7Yi5oYXNWaXNpYmxlU2VyaWVzPSEwO2IucG9zaXRpdmVWYWx1ZXNPbmx5JiYwPj1kJiYoZD1udWxsKTtpZihiLmlzWEF4aXMpe2lmKGY9aC54RGF0YSxmLmxlbmd0aCl7ZT1oLmdldFhFeHRyZW1lcyhmKTsKdmFyIGs9ZS5taW47dmFyIHg9ZS5tYXg7bChrKXx8ayBpbnN0YW5jZW9mIERhdGV8fChmPWYuZmlsdGVyKGwpLGU9aC5nZXRYRXh0cmVtZXMoZiksaz1lLm1pbix4PWUubWF4KTtmLmxlbmd0aCYmKGIuZGF0YU1pbj1NYXRoLm1pbih1KGIuZGF0YU1pbixrKSxrKSxiLmRhdGFNYXg9TWF0aC5tYXgodShiLmRhdGFNYXgseCkseCkpfX1lbHNlIGlmKGg9aC5hcHBseUV4dHJlbWVzKCksbChoLmRhdGFNaW4pJiYoaz1oLmRhdGFNaW4sYi5kYXRhTWluPU1hdGgubWluKHUoYi5kYXRhTWluLGspLGspKSxsKGguZGF0YU1heCkmJih4PWguZGF0YU1heCxiLmRhdGFNYXg9TWF0aC5tYXgodShiLmRhdGFNYXgseCkseCkpLHYoZCkmJihiLnRocmVzaG9sZD1kKSwhZi5zb2Z0VGhyZXNob2xkfHxiLnBvc2l0aXZlVmFsdWVzT25seSliLnNvZnRUaHJlc2hvbGQ9ITF9fSl9KTtDKHRoaXMsImFmdGVyR2V0U2VyaWVzRXh0cmVtZXMiKX07ZS5wcm90b3R5cGUudHJhbnNsYXRlPWZ1bmN0aW9uKGIsYSxlLApmLGQsayl7dmFyIGg9dGhpcy5saW5rZWRQYXJlbnR8fHRoaXMseD0xLHo9MCxjPWY/aC5vbGRUcmFuc0E6aC50cmFuc0E7Zj1mP2gub2xkTWluOmgubWluO3ZhciB1PWgubWluUGl4ZWxQYWRkaW5nO2Q9KGguaXNPcmRpbmFsfHxoLmJyb2tlbkF4aXMmJmguYnJva2VuQXhpcy5oYXNCcmVha3N8fGgubG9nYXJpdGhtaWMmJmQpJiZoLmxpbjJ2YWw7Y3x8KGM9aC50cmFuc0EpO2UmJih4Kj0tMSx6PWgubGVuKTtoLnJldmVyc2VkJiYoeCo9LTEsei09eCooaC5zZWN0b3J8fGgubGVuKSk7YT8oYj0oYip4K3otdSkvYytmLGQmJihiPWgubGluMnZhbChiKSkpOihkJiYoYj1oLnZhbDJsaW4oYikpLGI9bChmKT94KihiLWYpKmMreit4KnUrKGwoayk/YyprOjApOnZvaWQgMCk7cmV0dXJuIGJ9O2UucHJvdG90eXBlLnRvUGl4ZWxzPWZ1bmN0aW9uKGIsYSl7cmV0dXJuIHRoaXMudHJhbnNsYXRlKGIsITEsIXRoaXMuaG9yaXosbnVsbCwhMCkrKGE/MDp0aGlzLnBvcyl9O2UucHJvdG90eXBlLnRvVmFsdWU9CmZ1bmN0aW9uKGIsYSl7cmV0dXJuIHRoaXMudHJhbnNsYXRlKGItKGE/MDp0aGlzLnBvcyksITAsIXRoaXMuaG9yaXosbnVsbCwhMCl9O2UucHJvdG90eXBlLmdldFBsb3RMaW5lUGF0aD1mdW5jdGlvbihiKXtmdW5jdGlvbiBhKGIsYSxoKXtpZigicGFzcyIhPT13JiZiPGF8fGI+aCl3P2I9RyhiLGEsaCk6dD0hMDtyZXR1cm4gYn12YXIgZT10aGlzLGY9ZS5jaGFydCxkPWUubGVmdCxrPWUudG9wLGM9Yi5vbGQsbT1iLnZhbHVlLHA9Yi50cmFuc2xhdGVkVmFsdWUsQT1iLmxpbmVXaWR0aCx3PWIuZm9yY2UsbixnLEUscixNPWMmJmYub2xkQ2hhcnRIZWlnaHR8fGYuY2hhcnRIZWlnaHQsRj1jJiZmLm9sZENoYXJ0V2lkdGh8fGYuY2hhcnRXaWR0aCx0LHY9ZS50cmFuc0I7Yj17dmFsdWU6bSxsaW5lV2lkdGg6QSxvbGQ6Yyxmb3JjZTp3LGFjcm9zc1BhbmVzOmIuYWNyb3NzUGFuZXMsdHJhbnNsYXRlZFZhbHVlOnB9O0ModGhpcywiZ2V0UGxvdExpbmVQYXRoIixiLGZ1bmN0aW9uKGIpe3A9CnUocCxlLnRyYW5zbGF0ZShtLG51bGwsbnVsbCxjKSk7cD1HKHAsLTFFNSwxRTUpO249RT1NYXRoLnJvdW5kKHArdik7Zz1yPU1hdGgucm91bmQoTS1wLXYpO2wocCk/ZS5ob3Jpej8oZz1rLHI9TS1lLmJvdHRvbSxuPUU9YShuLGQsZCtlLndpZHRoKSk6KG49ZCxFPUYtZS5yaWdodCxnPXI9YShnLGssaytlLmhlaWdodCkpOih0PSEwLHc9ITEpO2IucGF0aD10JiYhdz9udWxsOmYucmVuZGVyZXIuY3Jpc3BMaW5lKFtbIk0iLG4sZ10sWyJMIixFLHJdXSxBfHwxKX0pO3JldHVybiBiLnBhdGh9O2UucHJvdG90eXBlLmdldExpbmVhclRpY2tQb3NpdGlvbnM9ZnVuY3Rpb24oYixhLGUpe3ZhciBoPUwoTWF0aC5mbG9vcihhL2IpKmIpO2U9TChNYXRoLmNlaWwoZS9iKSpiKTt2YXIgZj1bXSxkO0woaCtiKT09PWgmJihkPTIwKTtpZih0aGlzLnNpbmdsZSlyZXR1cm5bYV07Zm9yKGE9aDthPD1lOyl7Zi5wdXNoKGEpO2E9TChhK2IsZCk7aWYoYT09PWspYnJlYWs7dmFyIGs9YX1yZXR1cm4gZn07CmUucHJvdG90eXBlLmdldE1pbm9yVGlja0ludGVydmFsPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5vcHRpb25zO3JldHVybiEwPT09Yi5taW5vclRpY2tzP3UoYi5taW5vclRpY2tJbnRlcnZhbCwiYXV0byIpOiExPT09Yi5taW5vclRpY2tzP251bGw6Yi5taW5vclRpY2tJbnRlcnZhbH07ZS5wcm90b3R5cGUuZ2V0TWlub3JUaWNrUG9zaXRpb25zPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5vcHRpb25zLGE9dGhpcy50aWNrUG9zaXRpb25zLGU9dGhpcy5taW5vclRpY2tJbnRlcnZhbCxmPVtdLGQ9dGhpcy5wb2ludFJhbmdlUGFkZGluZ3x8MCxrPXRoaXMubWluLWQ7ZD10aGlzLm1heCtkO3ZhciBjPWQtaztpZihjJiZjL2U8dGhpcy5sZW4vMyl7dmFyIGw9dGhpcy5sb2dhcml0aG1pYztpZihsKXRoaXMucGFkZGVkVGlja3MuZm9yRWFjaChmdW5jdGlvbihiLGEsaCl7YSYmZi5wdXNoLmFwcGx5KGYsbC5nZXRMb2dUaWNrUG9zaXRpb25zKGUsaFthLTFdLGhbYV0sITApKX0pO2Vsc2UgaWYodGhpcy5kYXRlVGltZSYmCiJhdXRvIj09PXRoaXMuZ2V0TWlub3JUaWNrSW50ZXJ2YWwoKSlmPWYuY29uY2F0KHRoaXMuZ2V0VGltZVRpY2tzKHRoaXMuZGF0ZVRpbWUubm9ybWFsaXplVGltZVRpY2tJbnRlcnZhbChlKSxrLGQsYi5zdGFydE9mV2VlaykpO2Vsc2UgZm9yKGI9aysoYVswXS1rKSVlO2I8PWQmJmIhPT1mWzBdO2IrPWUpZi5wdXNoKGIpfTAhPT1mLmxlbmd0aCYmdGhpcy50cmltVGlja3MoZik7cmV0dXJuIGZ9O2UucHJvdG90eXBlLmFkanVzdEZvck1pblJhbmdlPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5vcHRpb25zLGE9dGhpcy5taW4sZT10aGlzLm1heCxmPXRoaXMubG9nYXJpdGhtaWMsZCxrLGMsbCxtO3RoaXMuaXNYQXhpcyYmInVuZGVmaW5lZCI9PT10eXBlb2YgdGhpcy5taW5SYW5nZSYmIWYmJih2KGIubWluKXx8dihiLm1heCk/dGhpcy5taW5SYW5nZT1udWxsOih0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2w9Yi54RGF0YTtmb3Ioaz1tPWIueEluY3JlbWVudD8xOmwubGVuZ3RoLQoxOzA8aztrLS0paWYoYz1sW2tdLWxbay0xXSwidW5kZWZpbmVkIj09PXR5cGVvZiBkfHxjPGQpZD1jfSksdGhpcy5taW5SYW5nZT1NYXRoLm1pbig1KmQsdGhpcy5kYXRhTWF4LXRoaXMuZGF0YU1pbikpKTtpZihlLWE8dGhpcy5taW5SYW5nZSl7dmFyIHA9dGhpcy5kYXRhTWF4LXRoaXMuZGF0YU1pbj49dGhpcy5taW5SYW5nZTt2YXIgQT10aGlzLm1pblJhbmdlO3ZhciB3PShBLWUrYSkvMjt3PVthLXcsdShiLm1pbixhLXcpXTtwJiYod1syXT10aGlzLmxvZ2FyaXRobWljP3RoaXMubG9nYXJpdGhtaWMubG9nMmxpbih0aGlzLmRhdGFNaW4pOnRoaXMuZGF0YU1pbik7YT1KKHcpO2U9W2ErQSx1KGIubWF4LGErQSldO3AmJihlWzJdPWY/Zi5sb2cybGluKHRoaXMuZGF0YU1heCk6dGhpcy5kYXRhTWF4KTtlPXQoZSk7ZS1hPEEmJih3WzBdPWUtQSx3WzFdPXUoYi5taW4sZS1BKSxhPUoodykpfXRoaXMubWluPWE7dGhpcy5tYXg9ZX07ZS5wcm90b3R5cGUuZ2V0Q2xvc2VzdD1mdW5jdGlvbigpe3ZhciBiOwp0aGlzLmNhdGVnb3JpZXM/Yj0xOnRoaXMuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGg9YS5jbG9zZXN0UG9pbnRSYW5nZSxlPWEudmlzaWJsZXx8IWEuY2hhcnQub3B0aW9ucy5jaGFydC5pZ25vcmVIaWRkZW5TZXJpZXM7IWEubm9TaGFyZWRUb29sdGlwJiZ2KGgpJiZlJiYoYj12KGIpP01hdGgubWluKGIsaCk6aCl9KTtyZXR1cm4gYn07ZS5wcm90b3R5cGUubmFtZVRvWD1mdW5jdGlvbihiKXt2YXIgYT1tKHRoaXMuY2F0ZWdvcmllcyksZT1hP3RoaXMuY2F0ZWdvcmllczp0aGlzLm5hbWVzLGY9Yi5vcHRpb25zLng7Yi5zZXJpZXMucmVxdWlyZVNvcnRpbmc9ITE7dihmKXx8KGY9ITE9PT10aGlzLm9wdGlvbnMudW5pcXVlTmFtZXM/Yi5zZXJpZXMuYXV0b0luY3JlbWVudCgpOmE/ZS5pbmRleE9mKGIubmFtZSk6dShlLmtleXNbYi5uYW1lXSwtMSkpO2lmKC0xPT09Zil7aWYoIWEpdmFyIGQ9ZS5sZW5ndGh9ZWxzZSBkPWY7InVuZGVmaW5lZCIhPT10eXBlb2YgZCYmKHRoaXMubmFtZXNbZF09CmIubmFtZSx0aGlzLm5hbWVzLmtleXNbYi5uYW1lXT1kKTtyZXR1cm4gZH07ZS5wcm90b3R5cGUudXBkYXRlTmFtZXM9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLGE9dGhpcy5uYW1lczswPGEubGVuZ3RoJiYoT2JqZWN0LmtleXMoYS5rZXlzKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2RlbGV0ZSBhLmtleXNbYl19KSxhLmxlbmd0aD0wLHRoaXMubWluUmFuZ2U9dGhpcy51c2VyTWluUmFuZ2UsKHRoaXMuc2VyaWVzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihhKXthLnhJbmNyZW1lbnQ9bnVsbDtpZighYS5wb2ludHN8fGEuaXNEaXJ0eURhdGEpYi5tYXg9TWF0aC5tYXgoYi5tYXgsYS54RGF0YS5sZW5ndGgtMSksYS5wcm9jZXNzRGF0YSgpLGEuZ2VuZXJhdGVQb2ludHMoKTthLmRhdGEuZm9yRWFjaChmdW5jdGlvbihoLGUpe2lmKGgmJmgub3B0aW9ucyYmInVuZGVmaW5lZCIhPT10eXBlb2YgaC5uYW1lKXt2YXIgZj1iLm5hbWVUb1goaCk7InVuZGVmaW5lZCIhPT10eXBlb2YgZiYmZiE9PWgueCYmCihoLng9ZixhLnhEYXRhW2VdPWYpfX0pfSkpfTtlLnByb3RvdHlwZS5zZXRBeGlzVHJhbnNsYXRpb249ZnVuY3Rpb24oYil7dmFyIGE9dGhpcyxlPWEubWF4LWEubWluLGY9YS5heGlzUG9pbnRSYW5nZXx8MCxkPTAsYz0wLGw9YS5saW5rZWRQYXJlbnQsbT0hIWEuY2F0ZWdvcmllcyxwPWEudHJhbnNBLEE9YS5pc1hBeGlzO2lmKEF8fG18fGYpe3ZhciB3PWEuZ2V0Q2xvc2VzdCgpO2w/KGQ9bC5taW5Qb2ludE9mZnNldCxjPWwucG9pbnRSYW5nZVBhZGRpbmcpOmEuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIGg9bT8xOkE/dShiLm9wdGlvbnMucG9pbnRSYW5nZSx3LDApOmEuYXhpc1BvaW50UmFuZ2V8fDAsZT1iLm9wdGlvbnMucG9pbnRQbGFjZW1lbnQ7Zj1NYXRoLm1heChmLGgpO2lmKCFhLnNpbmdsZXx8bSliPWIuaXMoInhyYW5nZSIpPyFBOkEsZD1NYXRoLm1heChkLGImJmsoZSk/MDpoLzIpLGM9TWF0aC5tYXgoYyxiJiYib24iPT09ZT8wOmgpfSk7bD1hLm9yZGluYWwmJgphLm9yZGluYWwuc2xvcGUmJnc/YS5vcmRpbmFsLnNsb3BlL3c6MTthLm1pblBvaW50T2Zmc2V0PWQqPWw7YS5wb2ludFJhbmdlUGFkZGluZz1jKj1sO2EucG9pbnRSYW5nZT1NYXRoLm1pbihmLGEuc2luZ2xlJiZtPzE6ZSk7QSYmKGEuY2xvc2VzdFBvaW50UmFuZ2U9dyl9YiYmKGEub2xkVHJhbnNBPXApO2EudHJhbnNsYXRpb25TbG9wZT1hLnRyYW5zQT1wPWEuc3RhdGljU2NhbGV8fGEubGVuLyhlK2N8fDEpO2EudHJhbnNCPWEuaG9yaXo/YS5sZWZ0OmEuYm90dG9tO2EubWluUGl4ZWxQYWRkaW5nPXAqZDtDKHRoaXMsImFmdGVyU2V0QXhpc1RyYW5zbGF0aW9uIil9O2UucHJvdG90eXBlLm1pbkZyb21SYW5nZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1heC10aGlzLnJhbmdlfTtlLnByb3RvdHlwZS5zZXRUaWNrSW50ZXJ2YWw9ZnVuY3Rpb24oYil7dmFyIGg9dGhpcyxlPWguY2hhcnQsZj1oLmxvZ2FyaXRobWljLGQ9aC5vcHRpb25zLGs9aC5pc1hBeGlzLGM9aC5pc0xpbmtlZCwKbT1kLm1heFBhZGRpbmcsQT1kLm1pblBhZGRpbmcsdz1kLnRpY2tJbnRlcnZhbCxnPWQudGlja1BpeGVsSW50ZXJ2YWwsRT1oLmNhdGVnb3JpZXMscj1sKGgudGhyZXNob2xkKT9oLnRocmVzaG9sZDpudWxsLFM9aC5zb2Z0VGhyZXNob2xkO2guZGF0ZVRpbWV8fEV8fGN8fHRoaXMuZ2V0VGlja0Ftb3VudCgpO3ZhciBNPXUoaC51c2VyTWluLGQubWluKTt2YXIgRj11KGgudXNlck1heCxkLm1heCk7aWYoYyl7aC5saW5rZWRQYXJlbnQ9ZVtoLmNvbGxdW2QubGlua2VkVG9dO3ZhciB0PWgubGlua2VkUGFyZW50LmdldEV4dHJlbWVzKCk7aC5taW49dSh0Lm1pbix0LmRhdGFNaW4pO2gubWF4PXUodC5tYXgsdC5kYXRhTWF4KTtkLnR5cGUhPT1oLmxpbmtlZFBhcmVudC5vcHRpb25zLnR5cGUmJm4oMTEsMSxlKX1lbHNle2lmKCFTJiZ2KHIpKWlmKGguZGF0YU1pbj49cil0PXIsQT0wO2Vsc2UgaWYoaC5kYXRhTWF4PD1yKXt2YXIgUD1yO209MH1oLm1pbj11KE0sdCxoLmRhdGFNaW4pO2gubWF4PQp1KEYsUCxoLmRhdGFNYXgpfWYmJihoLnBvc2l0aXZlVmFsdWVzT25seSYmIWImJjA+PU1hdGgubWluKGgubWluLHUoaC5kYXRhTWluLGgubWluKSkmJm4oMTAsMSxlKSxoLm1pbj1MKGYubG9nMmxpbihoLm1pbiksMTYpLGgubWF4PUwoZi5sb2cybGluKGgubWF4KSwxNikpO2gucmFuZ2UmJnYoaC5tYXgpJiYoaC51c2VyTWluPWgubWluPU09TWF0aC5tYXgoaC5kYXRhTWluLGgubWluRnJvbVJhbmdlKCkpLGgudXNlck1heD1GPWgubWF4LGgucmFuZ2U9bnVsbCk7QyhoLCJmb3VuZEV4dHJlbWVzIik7aC5iZWZvcmVQYWRkaW5nJiZoLmJlZm9yZVBhZGRpbmcoKTtoLmFkanVzdEZvck1pblJhbmdlKCk7IShFfHxoLmF4aXNQb2ludFJhbmdlfHxoLnN0YWNraW5nJiZoLnN0YWNraW5nLnVzZVBlcmNlbnRhZ2V8fGMpJiZ2KGgubWluKSYmdihoLm1heCkmJihlPWgubWF4LWgubWluKSYmKCF2KE0pJiZBJiYoaC5taW4tPWUqQSksIXYoRikmJm0mJihoLm1heCs9ZSptKSk7bChoLnVzZXJNaW4pfHwKKGwoZC5zb2Z0TWluKSYmZC5zb2Z0TWluPGgubWluJiYoaC5taW49TT1kLnNvZnRNaW4pLGwoZC5mbG9vcikmJihoLm1pbj1NYXRoLm1heChoLm1pbixkLmZsb29yKSkpO2woaC51c2VyTWF4KXx8KGwoZC5zb2Z0TWF4KSYmZC5zb2Z0TWF4PmgubWF4JiYoaC5tYXg9Rj1kLnNvZnRNYXgpLGwoZC5jZWlsaW5nKSYmKGgubWF4PU1hdGgubWluKGgubWF4LGQuY2VpbGluZykpKTtTJiZ2KGguZGF0YU1pbikmJihyPXJ8fDAsIXYoTSkmJmgubWluPHImJmguZGF0YU1pbj49cj9oLm1pbj1oLm9wdGlvbnMubWluUmFuZ2U/TWF0aC5taW4ocixoLm1heC1oLm1pblJhbmdlKTpyOiF2KEYpJiZoLm1heD5yJiZoLmRhdGFNYXg8PXImJihoLm1heD1oLm9wdGlvbnMubWluUmFuZ2U/TWF0aC5tYXgocixoLm1pbitoLm1pblJhbmdlKTpyKSk7aC50aWNrSW50ZXJ2YWw9aC5taW49PT1oLm1heHx8InVuZGVmaW5lZCI9PT10eXBlb2YgaC5taW58fCJ1bmRlZmluZWQiPT09dHlwZW9mIGgubWF4PzE6YyYmCiF3JiZnPT09aC5saW5rZWRQYXJlbnQub3B0aW9ucy50aWNrUGl4ZWxJbnRlcnZhbD93PWgubGlua2VkUGFyZW50LnRpY2tJbnRlcnZhbDp1KHcsdGhpcy50aWNrQW1vdW50PyhoLm1heC1oLm1pbikvTWF0aC5tYXgodGhpcy50aWNrQW1vdW50LTEsMSk6dm9pZCAwLEU/MTooaC5tYXgtaC5taW4pKmcvTWF0aC5tYXgoaC5sZW4sZykpO2smJiFiJiZoLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IucHJvY2Vzc0RhdGEoaC5taW4hPT1oLm9sZE1pbnx8aC5tYXghPT1oLm9sZE1heCl9KTtoLnNldEF4aXNUcmFuc2xhdGlvbighMCk7Qyh0aGlzLCJpbml0aWFsQXhpc1RyYW5zbGF0aW9uIik7aC5wb2ludFJhbmdlJiYhdyYmKGgudGlja0ludGVydmFsPU1hdGgubWF4KGgucG9pbnRSYW5nZSxoLnRpY2tJbnRlcnZhbCkpO2I9dShkLm1pblRpY2tJbnRlcnZhbCxoLmRhdGVUaW1lJiYhaC5zZXJpZXMuc29tZShmdW5jdGlvbihiKXtyZXR1cm4gYi5ub1NoYXJlZFRvb2x0aXB9KT9oLmNsb3Nlc3RQb2ludFJhbmdlOgowKTshdyYmaC50aWNrSW50ZXJ2YWw8YiYmKGgudGlja0ludGVydmFsPWIpO2guZGF0ZVRpbWV8fGgubG9nYXJpdGhtaWN8fHd8fChoLnRpY2tJbnRlcnZhbD1hKGgudGlja0ludGVydmFsLHZvaWQgMCxwKGgudGlja0ludGVydmFsKSx1KGQuYWxsb3dEZWNpbWFscywuNT5oLnRpY2tJbnRlcnZhbHx8dm9pZCAwIT09dGhpcy50aWNrQW1vdW50KSwhIXRoaXMudGlja0Ftb3VudCkpO3RoaXMudGlja0Ftb3VudHx8KGgudGlja0ludGVydmFsPWgudW5zcXVpc2goKSk7dGhpcy5zZXRUaWNrUG9zaXRpb25zKCl9O2UucHJvdG90eXBlLnNldFRpY2tQb3NpdGlvbnM9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLm9wdGlvbnMsYT1iLnRpY2tQb3NpdGlvbnM7dmFyIGU9dGhpcy5nZXRNaW5vclRpY2tJbnRlcnZhbCgpO3ZhciBmPWIudGlja1Bvc2l0aW9uZXIsZD10aGlzLmhhc1ZlcnRpY2FsUGFubmluZygpLGs9ImNvbG9yQXhpcyI9PT10aGlzLmNvbGwsYz0oa3x8IWQpJiZiLnN0YXJ0T25UaWNrO2Q9CihrfHwhZCkmJmIuZW5kT25UaWNrO3RoaXMudGlja21hcmtPZmZzZXQ9dGhpcy5jYXRlZ29yaWVzJiYiYmV0d2VlbiI9PT1iLnRpY2ttYXJrUGxhY2VtZW50JiYxPT09dGhpcy50aWNrSW50ZXJ2YWw/LjU6MDt0aGlzLm1pbm9yVGlja0ludGVydmFsPSJhdXRvIj09PWUmJnRoaXMudGlja0ludGVydmFsP3RoaXMudGlja0ludGVydmFsLzU6ZTt0aGlzLnNpbmdsZT10aGlzLm1pbj09PXRoaXMubWF4JiZ2KHRoaXMubWluKSYmIXRoaXMudGlja0Ftb3VudCYmKHBhcnNlSW50KHRoaXMubWluLDEwKT09PXRoaXMubWlufHwhMSE9PWIuYWxsb3dEZWNpbWFscyk7dGhpcy50aWNrUG9zaXRpb25zPWU9YSYmYS5zbGljZSgpOyFlJiYodGhpcy5vcmRpbmFsJiZ0aGlzLm9yZGluYWwucG9zaXRpb25zfHwhKCh0aGlzLm1heC10aGlzLm1pbikvdGhpcy50aWNrSW50ZXJ2YWw+TWF0aC5tYXgoMip0aGlzLmxlbiwyMDApKT9lPXRoaXMuZGF0ZVRpbWU/dGhpcy5nZXRUaW1lVGlja3ModGhpcy5kYXRlVGltZS5ub3JtYWxpemVUaW1lVGlja0ludGVydmFsKHRoaXMudGlja0ludGVydmFsLApiLnVuaXRzKSx0aGlzLm1pbix0aGlzLm1heCxiLnN0YXJ0T2ZXZWVrLHRoaXMub3JkaW5hbCYmdGhpcy5vcmRpbmFsLnBvc2l0aW9ucyx0aGlzLmNsb3Nlc3RQb2ludFJhbmdlLCEwKTp0aGlzLmxvZ2FyaXRobWljP3RoaXMubG9nYXJpdGhtaWMuZ2V0TG9nVGlja1Bvc2l0aW9ucyh0aGlzLnRpY2tJbnRlcnZhbCx0aGlzLm1pbix0aGlzLm1heCk6dGhpcy5nZXRMaW5lYXJUaWNrUG9zaXRpb25zKHRoaXMudGlja0ludGVydmFsLHRoaXMubWluLHRoaXMubWF4KTooZT1bdGhpcy5taW4sdGhpcy5tYXhdLG4oMTksITEsdGhpcy5jaGFydCkpLGUubGVuZ3RoPnRoaXMubGVuJiYoZT1bZVswXSxlLnBvcCgpXSxlWzBdPT09ZVsxXSYmKGUubGVuZ3RoPTEpKSx0aGlzLnRpY2tQb3NpdGlvbnM9ZSxmJiYoZj1mLmFwcGx5KHRoaXMsW3RoaXMubWluLHRoaXMubWF4XSkpKSYmKHRoaXMudGlja1Bvc2l0aW9ucz1lPWYpO3RoaXMucGFkZGVkVGlja3M9ZS5zbGljZSgwKTt0aGlzLnRyaW1UaWNrcyhlLApjLGQpO3RoaXMuaXNMaW5rZWR8fCh0aGlzLnNpbmdsZSYmMj5lLmxlbmd0aCYmIXRoaXMuY2F0ZWdvcmllcyYmIXRoaXMuc2VyaWVzLnNvbWUoZnVuY3Rpb24oYil7cmV0dXJuIGIuaXMoImhlYXRtYXAiKSYmImJldHdlZW4iPT09Yi5vcHRpb25zLnBvaW50UGxhY2VtZW50fSkmJih0aGlzLm1pbi09LjUsdGhpcy5tYXgrPS41KSxhfHxmfHx0aGlzLmFkanVzdFRpY2tBbW91bnQoKSk7Qyh0aGlzLCJhZnRlclNldFRpY2tQb3NpdGlvbnMiKX07ZS5wcm90b3R5cGUudHJpbVRpY2tzPWZ1bmN0aW9uKGIsYSxlKXt2YXIgaD1iWzBdLGY9YltiLmxlbmd0aC0xXSxkPSF0aGlzLmlzT3JkaW5hbCYmdGhpcy5taW5Qb2ludE9mZnNldHx8MDtDKHRoaXMsInRyaW1UaWNrcyIpO2lmKCF0aGlzLmlzTGlua2VkKXtpZihhJiYtSW5maW5pdHkhPT1oKXRoaXMubWluPWg7ZWxzZSBmb3IoO3RoaXMubWluLWQ+YlswXTspYi5zaGlmdCgpO2lmKGUpdGhpcy5tYXg9ZjtlbHNlIGZvcig7dGhpcy5tYXgrZDwKYltiLmxlbmd0aC0xXTspYi5wb3AoKTswPT09Yi5sZW5ndGgmJnYoaCkmJiF0aGlzLm9wdGlvbnMudGlja1Bvc2l0aW9ucyYmYi5wdXNoKChmK2gpLzIpfX07ZS5wcm90b3R5cGUuYWxpZ25Ub090aGVycz1mdW5jdGlvbigpe3ZhciBiPXt9LGEsZT10aGlzLm9wdGlvbnM7ITE9PT10aGlzLmNoYXJ0Lm9wdGlvbnMuY2hhcnQuYWxpZ25UaWNrc3x8ITE9PT1lLmFsaWduVGlja3N8fCExPT09ZS5zdGFydE9uVGlja3x8ITE9PT1lLmVuZE9uVGlja3x8dGhpcy5sb2dhcml0aG1pY3x8dGhpcy5jaGFydFt0aGlzLmNvbGxdLmZvckVhY2goZnVuY3Rpb24oaCl7dmFyIGU9aC5vcHRpb25zO2U9W2guaG9yaXo/ZS5sZWZ0OmUudG9wLGUud2lkdGgsZS5oZWlnaHQsZS5wYW5lXS5qb2luKCk7aC5zZXJpZXMubGVuZ3RoJiYoYltlXT9hPSEwOmJbZV09MSl9KTtyZXR1cm4gYX07ZS5wcm90b3R5cGUuZ2V0VGlja0Ftb3VudD1mdW5jdGlvbigpe3ZhciBiPXRoaXMub3B0aW9ucyxhPWIudGlja0Ftb3VudCwKZT1iLnRpY2tQaXhlbEludGVydmFsOyF2KGIudGlja0ludGVydmFsKSYmIWEmJnRoaXMubGVuPGUmJiF0aGlzLmlzUmFkaWFsJiYhdGhpcy5sb2dhcml0aG1pYyYmYi5zdGFydE9uVGljayYmYi5lbmRPblRpY2smJihhPTIpOyFhJiZ0aGlzLmFsaWduVG9PdGhlcnMoKSYmKGE9TWF0aC5jZWlsKHRoaXMubGVuL2UpKzEpOzQ+YSYmKHRoaXMuZmluYWxUaWNrQW10PWEsYT01KTt0aGlzLnRpY2tBbW91bnQ9YX07ZS5wcm90b3R5cGUuYWRqdXN0VGlja0Ftb3VudD1mdW5jdGlvbigpe3ZhciBiPXRoaXMub3B0aW9ucyxhPXRoaXMudGlja0ludGVydmFsLGU9dGhpcy50aWNrUG9zaXRpb25zLGY9dGhpcy50aWNrQW1vdW50LGQ9dGhpcy5maW5hbFRpY2tBbXQsaz1lJiZlLmxlbmd0aCxjPXUodGhpcy50aHJlc2hvbGQsdGhpcy5zb2Z0VGhyZXNob2xkPzA6bnVsbCksbDtpZih0aGlzLmhhc0RhdGEoKSl7aWYoazxmKXtmb3IobD10aGlzLm1pbjtlLmxlbmd0aDxmOyllLmxlbmd0aCUyfHxsPT09CmM/ZS5wdXNoKEwoZVtlLmxlbmd0aC0xXSthKSk6ZS51bnNoaWZ0KEwoZVswXS1hKSk7dGhpcy50cmFuc0EqPShrLTEpLyhmLTEpO3RoaXMubWluPWIuc3RhcnRPblRpY2s/ZVswXTpNYXRoLm1pbih0aGlzLm1pbixlWzBdKTt0aGlzLm1heD1iLmVuZE9uVGljaz9lW2UubGVuZ3RoLTFdOk1hdGgubWF4KHRoaXMubWF4LGVbZS5sZW5ndGgtMV0pfWVsc2Ugaz5mJiYodGhpcy50aWNrSW50ZXJ2YWwqPTIsdGhpcy5zZXRUaWNrUG9zaXRpb25zKCkpO2lmKHYoZCkpe2ZvcihhPWI9ZS5sZW5ndGg7YS0tOykoMz09PWQmJjE9PT1hJTJ8fDI+PWQmJjA8YSYmYTxiLTEpJiZlLnNwbGljZShhLDEpO3RoaXMuZmluYWxUaWNrQW10PXZvaWQgMH19fTtlLnByb3RvdHlwZS5zZXRTY2FsZT1mdW5jdGlvbigpe3ZhciBiLGE9ITEsZT0hMTt0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZhciBoO2E9YXx8Yi5pc0RpcnR5RGF0YXx8Yi5pc0RpcnR5O2U9ZXx8KG51bGw9PT0oaD1iLnhBeGlzKXx8CnZvaWQgMD09PWg/dm9pZCAwOmguaXNEaXJ0eSl8fCExfSk7dGhpcy5vbGRNaW49dGhpcy5taW47dGhpcy5vbGRNYXg9dGhpcy5tYXg7dGhpcy5vbGRBeGlzTGVuZ3RoPXRoaXMubGVuO3RoaXMuc2V0QXhpc1NpemUoKTsoYj10aGlzLmxlbiE9PXRoaXMub2xkQXhpc0xlbmd0aCl8fGF8fGV8fHRoaXMuaXNMaW5rZWR8fHRoaXMuZm9yY2VSZWRyYXd8fHRoaXMudXNlck1pbiE9PXRoaXMub2xkVXNlck1pbnx8dGhpcy51c2VyTWF4IT09dGhpcy5vbGRVc2VyTWF4fHx0aGlzLmFsaWduVG9PdGhlcnMoKT8odGhpcy5zdGFja2luZyYmdGhpcy5zdGFja2luZy5yZXNldFN0YWNrcygpLHRoaXMuZm9yY2VSZWRyYXc9ITEsdGhpcy5nZXRTZXJpZXNFeHRyZW1lcygpLHRoaXMuc2V0VGlja0ludGVydmFsKCksdGhpcy5vbGRVc2VyTWluPXRoaXMudXNlck1pbix0aGlzLm9sZFVzZXJNYXg9dGhpcy51c2VyTWF4LHRoaXMuaXNEaXJ0eXx8KHRoaXMuaXNEaXJ0eT1ifHx0aGlzLm1pbiE9PXRoaXMub2xkTWlufHwKdGhpcy5tYXghPT10aGlzLm9sZE1heCkpOnRoaXMuc3RhY2tpbmcmJnRoaXMuc3RhY2tpbmcuY2xlYW5TdGFja3MoKTthJiZ0aGlzLnBhbm5pbmdTdGF0ZSYmKHRoaXMucGFubmluZ1N0YXRlLmlzRGlydHk9ITApO0ModGhpcywiYWZ0ZXJTZXRTY2FsZSIpfTtlLnByb3RvdHlwZS5zZXRFeHRyZW1lcz1mdW5jdGlvbihiLGEsZSxmLGQpe3ZhciBoPXRoaXMsaz1oLmNoYXJ0O2U9dShlLCEwKTtoLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2RlbGV0ZSBiLmtkVHJlZX0pO2Q9cihkLHttaW46YixtYXg6YX0pO0MoaCwic2V0RXh0cmVtZXMiLGQsZnVuY3Rpb24oKXtoLnVzZXJNaW49YjtoLnVzZXJNYXg9YTtoLmV2ZW50QXJncz1kO2UmJmsucmVkcmF3KGYpfSl9O2UucHJvdG90eXBlLnpvb209ZnVuY3Rpb24oYixhKXt2YXIgZT10aGlzLGg9dGhpcy5kYXRhTWluLGY9dGhpcy5kYXRhTWF4LGQ9dGhpcy5vcHRpb25zLGs9TWF0aC5taW4oaCx1KGQubWluLGgpKSxjPU1hdGgubWF4KGYsCnUoZC5tYXgsZikpO2I9e25ld01pbjpiLG5ld01heDphfTtDKHRoaXMsInpvb20iLGIsZnVuY3Rpb24oYil7dmFyIGE9Yi5uZXdNaW4sZD1iLm5ld01heDtpZihhIT09ZS5taW58fGQhPT1lLm1heCllLmFsbG93Wm9vbU91dHNpZGV8fCh2KGgpJiYoYTxrJiYoYT1rKSxhPmMmJihhPWMpKSx2KGYpJiYoZDxrJiYoZD1rKSxkPmMmJihkPWMpKSksZS5kaXNwbGF5QnRuPSJ1bmRlZmluZWQiIT09dHlwZW9mIGF8fCJ1bmRlZmluZWQiIT09dHlwZW9mIGQsZS5zZXRFeHRyZW1lcyhhLGQsITEsdm9pZCAwLHt0cmlnZ2VyOiJ6b29tIn0pO2Iuem9vbWVkPSEwfSk7cmV0dXJuIGIuem9vbWVkfTtlLnByb3RvdHlwZS5zZXRBeGlzU2l6ZT1mdW5jdGlvbigpe3ZhciBiPXRoaXMuY2hhcnQsYT10aGlzLm9wdGlvbnMsZT1hLm9mZnNldHN8fFswLDAsMCwwXSxmPXRoaXMuaG9yaXosZD10aGlzLndpZHRoPU1hdGgucm91bmQoRSh1KGEud2lkdGgsYi5wbG90V2lkdGgtZVszXStlWzFdKSxiLnBsb3RXaWR0aCkpLAprPXRoaXMuaGVpZ2h0PU1hdGgucm91bmQoRSh1KGEuaGVpZ2h0LGIucGxvdEhlaWdodC1lWzBdK2VbMl0pLGIucGxvdEhlaWdodCkpLGM9dGhpcy50b3A9TWF0aC5yb3VuZChFKHUoYS50b3AsYi5wbG90VG9wK2VbMF0pLGIucGxvdEhlaWdodCxiLnBsb3RUb3ApKTthPXRoaXMubGVmdD1NYXRoLnJvdW5kKEUodShhLmxlZnQsYi5wbG90TGVmdCtlWzNdKSxiLnBsb3RXaWR0aCxiLnBsb3RMZWZ0KSk7dGhpcy5ib3R0b209Yi5jaGFydEhlaWdodC1rLWM7dGhpcy5yaWdodD1iLmNoYXJ0V2lkdGgtZC1hO3RoaXMubGVuPU1hdGgubWF4KGY/ZDprLDApO3RoaXMucG9zPWY/YTpjfTtlLnByb3RvdHlwZS5nZXRFeHRyZW1lcz1mdW5jdGlvbigpe3ZhciBiPXRoaXMubG9nYXJpdGhtaWM7cmV0dXJue21pbjpiP0woYi5saW4ybG9nKHRoaXMubWluKSk6dGhpcy5taW4sbWF4OmI/TChiLmxpbjJsb2codGhpcy5tYXgpKTp0aGlzLm1heCxkYXRhTWluOnRoaXMuZGF0YU1pbixkYXRhTWF4OnRoaXMuZGF0YU1heCwKdXNlck1pbjp0aGlzLnVzZXJNaW4sdXNlck1heDp0aGlzLnVzZXJNYXh9fTtlLnByb3RvdHlwZS5nZXRUaHJlc2hvbGQ9ZnVuY3Rpb24oYil7dmFyIGE9dGhpcy5sb2dhcml0aG1pYyxlPWE/YS5saW4ybG9nKHRoaXMubWluKTp0aGlzLm1pbjthPWE/YS5saW4ybG9nKHRoaXMubWF4KTp0aGlzLm1heDtudWxsPT09Ynx8LUluZmluaXR5PT09Yj9iPWU6SW5maW5pdHk9PT1iP2I9YTplPmI/Yj1lOmE8YiYmKGI9YSk7cmV0dXJuIHRoaXMudHJhbnNsYXRlKGIsMCwxLDAsMSl9O2UucHJvdG90eXBlLmF1dG9MYWJlbEFsaWduPWZ1bmN0aW9uKGIpe3ZhciBhPSh1KGIsMCktOTAqdGhpcy5zaWRlKzcyMCklMzYwO2I9e2FsaWduOiJjZW50ZXIifTtDKHRoaXMsImF1dG9MYWJlbEFsaWduIixiLGZ1bmN0aW9uKGIpezE1PGEmJjE2NT5hP2IuYWxpZ249InJpZ2h0IjoxOTU8YSYmMzQ1PmEmJihiLmFsaWduPSJsZWZ0Iil9KTtyZXR1cm4gYi5hbGlnbn07ZS5wcm90b3R5cGUudGlja1NpemU9ZnVuY3Rpb24oYil7dmFyIGE9CnRoaXMub3B0aW9ucyxlPWFbInRpY2siPT09Yj8idGlja0xlbmd0aCI6Im1pbm9yVGlja0xlbmd0aCJdLGY9dShhWyJ0aWNrIj09PWI/InRpY2tXaWR0aCI6Im1pbm9yVGlja1dpZHRoIl0sInRpY2siPT09YiYmdGhpcy5pc1hBeGlzJiYhdGhpcy5jYXRlZ29yaWVzPzE6MCk7aWYoZiYmZSl7Imluc2lkZSI9PT1hW2IrIlBvc2l0aW9uIl0mJihlPS1lKTt2YXIgZD1bZSxmXX1iPXt0aWNrU2l6ZTpkfTtDKHRoaXMsImFmdGVyVGlja1NpemUiLGIpO3JldHVybiBiLnRpY2tTaXplfTtlLnByb3RvdHlwZS5sYWJlbE1ldHJpY3M9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLnRpY2tQb3NpdGlvbnMmJnRoaXMudGlja1Bvc2l0aW9uc1swXXx8MDtyZXR1cm4gdGhpcy5jaGFydC5yZW5kZXJlci5mb250TWV0cmljcyh0aGlzLm9wdGlvbnMubGFiZWxzLnN0eWxlJiZ0aGlzLm9wdGlvbnMubGFiZWxzLnN0eWxlLmZvbnRTaXplLHRoaXMudGlja3NbYl0mJnRoaXMudGlja3NbYl0ubGFiZWwpfTtlLnByb3RvdHlwZS51bnNxdWlzaD0KZnVuY3Rpb24oKXt2YXIgYj10aGlzLm9wdGlvbnMubGFiZWxzLGE9dGhpcy5ob3JpeixlPXRoaXMudGlja0ludGVydmFsLGY9ZSxkPXRoaXMubGVuLygoKHRoaXMuY2F0ZWdvcmllcz8xOjApK3RoaXMubWF4LXRoaXMubWluKS9lKSxrLGM9Yi5yb3RhdGlvbixsPXRoaXMubGFiZWxNZXRyaWNzKCksbSxwPU51bWJlci5NQVhfVkFMVUUsQSx3PXRoaXMubWF4LXRoaXMubWluLG49ZnVuY3Rpb24oYil7dmFyIGE9Yi8oZHx8MSk7YT0xPGE/TWF0aC5jZWlsKGEpOjE7YSplPncmJkluZmluaXR5IT09YiYmSW5maW5pdHkhPT1kJiZ3JiYoYT1NYXRoLmNlaWwody9lKSk7cmV0dXJuIEwoYSplKX07YT8oQT0hYi5zdGFnZ2VyTGluZXMmJiFiLnN0ZXAmJih2KGMpP1tjXTpkPHUoYi5hdXRvUm90YXRpb25MaW1pdCw4MCkmJmIuYXV0b1JvdGF0aW9uKSkmJkEuZm9yRWFjaChmdW5jdGlvbihiKXtpZihiPT09Y3x8YiYmLTkwPD1iJiY5MD49Yil7bT1uKE1hdGguYWJzKGwuaC9NYXRoLnNpbihRKmIpKSk7CnZhciBhPW0rTWF0aC5hYnMoYi8zNjApO2E8cCYmKHA9YSxrPWIsZj1tKX19KTpiLnN0ZXB8fChmPW4obC5oKSk7dGhpcy5hdXRvUm90YXRpb249QTt0aGlzLmxhYmVsUm90YXRpb249dShrLGMpO3JldHVybiBmfTtlLnByb3RvdHlwZS5nZXRTbG90V2lkdGg9ZnVuY3Rpb24oYil7dmFyIGEsZT10aGlzLmNoYXJ0LGY9dGhpcy5ob3JpeixkPXRoaXMub3B0aW9ucy5sYWJlbHMsaz1NYXRoLm1heCh0aGlzLnRpY2tQb3NpdGlvbnMubGVuZ3RoLSh0aGlzLmNhdGVnb3JpZXM/MDoxKSwxKSxjPWUubWFyZ2luWzNdO2lmKGImJmwoYi5zbG90V2lkdGgpKXJldHVybiBiLnNsb3RXaWR0aDtpZihmJiZkJiYyPihkLnN0ZXB8fDApKXJldHVybiBkLnJvdGF0aW9uPzA6KHRoaXMuc3RhZ2dlckxpbmVzfHwxKSp0aGlzLmxlbi9rO2lmKCFmKXtiPW51bGw9PT0oYT1udWxsPT09ZHx8dm9pZCAwPT09ZD92b2lkIDA6ZC5zdHlsZSl8fHZvaWQgMD09PWE/dm9pZCAwOmEud2lkdGg7aWYodm9pZCAwIT09YilyZXR1cm4gcGFyc2VJbnQoYiwKMTApO2lmKGMpcmV0dXJuIGMtZS5zcGFjaW5nWzNdfXJldHVybi4zMyplLmNoYXJ0V2lkdGh9O2UucHJvdG90eXBlLnJlbmRlclVuc3F1aXNoPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5jaGFydCxhPWIucmVuZGVyZXIsZT10aGlzLnRpY2tQb3NpdGlvbnMsZj10aGlzLnRpY2tzLGQ9dGhpcy5vcHRpb25zLmxhYmVscyxjPWQmJmQuc3R5bGV8fHt9LGw9dGhpcy5ob3Jpeix1PXRoaXMuZ2V0U2xvdFdpZHRoKCksbT1NYXRoLm1heCgxLE1hdGgucm91bmQodS0yKihkLnBhZGRpbmd8fDUpKSkscD17fSxBPXRoaXMubGFiZWxNZXRyaWNzKCksdz1kLnN0eWxlJiZkLnN0eWxlLnRleHRPdmVyZmxvdyxuPTA7ayhkLnJvdGF0aW9uKXx8KHAucm90YXRpb249ZC5yb3RhdGlvbnx8MCk7ZS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2I9ZltiXTtiLm1vdmVkTGFiZWwmJmIucmVwbGFjZU1vdmVkTGFiZWwoKTtiJiZiLmxhYmVsJiZiLmxhYmVsLnRleHRQeExlbmd0aD5uJiYobj1iLmxhYmVsLnRleHRQeExlbmd0aCl9KTsKdGhpcy5tYXhMYWJlbExlbmd0aD1uO2lmKHRoaXMuYXV0b1JvdGF0aW9uKW4+bSYmbj5BLmg/cC5yb3RhdGlvbj10aGlzLmxhYmVsUm90YXRpb246dGhpcy5sYWJlbFJvdGF0aW9uPTA7ZWxzZSBpZih1KXt2YXIgZz1tO2lmKCF3KXt2YXIgRT0iY2xpcCI7Zm9yKG09ZS5sZW5ndGg7IWwmJm0tLTspe3ZhciByPWVbbV07aWYocj1mW3JdLmxhYmVsKXIuc3R5bGVzJiYiZWxsaXBzaXMiPT09ci5zdHlsZXMudGV4dE92ZXJmbG93P3IuY3NzKHt0ZXh0T3ZlcmZsb3c6ImNsaXAifSk6ci50ZXh0UHhMZW5ndGg+dSYmci5jc3Moe3dpZHRoOnUrInB4In0pLHIuZ2V0QkJveCgpLmhlaWdodD50aGlzLmxlbi9lLmxlbmd0aC0oQS5oLUEuZikmJihyLnNwZWNpZmljVGV4dE92ZXJmbG93PSJlbGxpcHNpcyIpfX19cC5yb3RhdGlvbiYmKGc9bj4uNSpiLmNoYXJ0SGVpZ2h0Py4zMypiLmNoYXJ0SGVpZ2h0Om4sd3x8KEU9ImVsbGlwc2lzIikpO2lmKHRoaXMubGFiZWxBbGlnbj1kLmFsaWdufHx0aGlzLmF1dG9MYWJlbEFsaWduKHRoaXMubGFiZWxSb3RhdGlvbikpcC5hbGlnbj0KdGhpcy5sYWJlbEFsaWduO2UuZm9yRWFjaChmdW5jdGlvbihiKXt2YXIgYT0oYj1mW2JdKSYmYi5sYWJlbCxlPWMud2lkdGgsaD17fTthJiYoYS5hdHRyKHApLGIuc2hvcnRlbkxhYmVsP2Iuc2hvcnRlbkxhYmVsKCk6ZyYmIWUmJiJub3dyYXAiIT09Yy53aGl0ZVNwYWNlJiYoZzxhLnRleHRQeExlbmd0aHx8IlNQQU4iPT09YS5lbGVtZW50LnRhZ05hbWUpPyhoLndpZHRoPWcrInB4Iix3fHwoaC50ZXh0T3ZlcmZsb3c9YS5zcGVjaWZpY1RleHRPdmVyZmxvd3x8RSksYS5jc3MoaCkpOmEuc3R5bGVzJiZhLnN0eWxlcy53aWR0aCYmIWgud2lkdGgmJiFlJiZhLmNzcyh7d2lkdGg6bnVsbH0pLGRlbGV0ZSBhLnNwZWNpZmljVGV4dE92ZXJmbG93LGIucm90YXRpb249cC5yb3RhdGlvbil9LHRoaXMpO3RoaXMudGlja1JvdENvcnI9YS5yb3RDb3JyKEEuYix0aGlzLmxhYmVsUm90YXRpb258fDAsMCE9PXRoaXMuc2lkZSl9O2UucHJvdG90eXBlLmhhc0RhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZXJpZXMuc29tZShmdW5jdGlvbihiKXtyZXR1cm4gYi5oYXNEYXRhKCl9KXx8CnRoaXMub3B0aW9ucy5zaG93RW1wdHkmJnYodGhpcy5taW4pJiZ2KHRoaXMubWF4KX07ZS5wcm90b3R5cGUuYWRkVGl0bGU9ZnVuY3Rpb24oYil7dmFyIGE9dGhpcy5jaGFydC5yZW5kZXJlcixlPXRoaXMuaG9yaXosZD10aGlzLm9wcG9zaXRlLGs9dGhpcy5vcHRpb25zLnRpdGxlLGMsbD10aGlzLmNoYXJ0LnN0eWxlZE1vZGU7dGhpcy5heGlzVGl0bGV8fCgoYz1rLnRleHRBbGlnbil8fChjPShlP3tsb3c6ImxlZnQiLG1pZGRsZToiY2VudGVyIixoaWdoOiJyaWdodCJ9Ontsb3c6ZD8icmlnaHQiOiJsZWZ0IixtaWRkbGU6ImNlbnRlciIsaGlnaDpkPyJsZWZ0IjoicmlnaHQifSlbay5hbGlnbl0pLHRoaXMuYXhpc1RpdGxlPWEudGV4dChrLnRleHQsMCwwLGsudXNlSFRNTCkuYXR0cih7ekluZGV4Ojcscm90YXRpb246ay5yb3RhdGlvbnx8MCxhbGlnbjpjfSkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtYXhpcy10aXRsZSIpLGx8fHRoaXMuYXhpc1RpdGxlLmNzcyhmKGsuc3R5bGUpKSx0aGlzLmF4aXNUaXRsZS5hZGQodGhpcy5heGlzR3JvdXApLAp0aGlzLmF4aXNUaXRsZS5pc05ldz0hMCk7bHx8ay5zdHlsZS53aWR0aHx8dGhpcy5pc1JhZGlhbHx8dGhpcy5heGlzVGl0bGUuY3NzKHt3aWR0aDp0aGlzLmxlbisicHgifSk7dGhpcy5heGlzVGl0bGVbYj8ic2hvdyI6ImhpZGUiXShiKX07ZS5wcm90b3R5cGUuZ2VuZXJhdGVUaWNrPWZ1bmN0aW9uKGIpe3ZhciBhPXRoaXMudGlja3M7YVtiXT9hW2JdLmFkZExhYmVsKCk6YVtiXT1uZXcgcSh0aGlzLGIpfTtlLnByb3RvdHlwZS5nZXRPZmZzZXQ9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLGE9Yi5jaGFydCxlPWEucmVuZGVyZXIsZj1iLm9wdGlvbnMsZD1iLnRpY2tQb3NpdGlvbnMsaz1iLnRpY2tzLGM9Yi5ob3JpeixsPWIuc2lkZSxtPWEuaW52ZXJ0ZWQmJiFiLmlzWkF4aXM/WzEsMCwzLDJdW2xdOmwscCx3PTAsbj0wLGc9Zi50aXRsZSxFPWYubGFiZWxzLHI9MCxNPWEuYXhpc09mZnNldDthPWEuY2xpcE9mZnNldDt2YXIgRj1bLTEsMSwxLC0xXVtsXSx0PWYuY2xhc3NOYW1lLFA9Yi5heGlzUGFyZW50Owp2YXIgST1iLmhhc0RhdGEoKTtiLnNob3dBeGlzPXA9SXx8dShmLnNob3dFbXB0eSwhMCk7Yi5zdGFnZ2VyTGluZXM9Yi5ob3JpeiYmRS5zdGFnZ2VyTGluZXM7Yi5heGlzR3JvdXB8fChiLmdyaWRHcm91cD1lLmcoImdyaWQiKS5hdHRyKHt6SW5kZXg6Zi5ncmlkWkluZGV4fHwxfSkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtIit0aGlzLmNvbGwudG9Mb3dlckNhc2UoKSsiLWdyaWQgIisodHx8IiIpKS5hZGQoUCksYi5heGlzR3JvdXA9ZS5nKCJheGlzIikuYXR0cih7ekluZGV4OmYuekluZGV4fHwyfSkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtIit0aGlzLmNvbGwudG9Mb3dlckNhc2UoKSsiICIrKHR8fCIiKSkuYWRkKFApLGIubGFiZWxHcm91cD1lLmcoImF4aXMtbGFiZWxzIikuYXR0cih7ekluZGV4OkUuekluZGV4fHw3fSkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtIitiLmNvbGwudG9Mb3dlckNhc2UoKSsiLWxhYmVscyAiKyh0fHwiIikpLmFkZChQKSk7SXx8Yi5pc0xpbmtlZD8oZC5mb3JFYWNoKGZ1bmN0aW9uKGEsCmUpe2IuZ2VuZXJhdGVUaWNrKGEsZSl9KSxiLnJlbmRlclVuc3F1aXNoKCksYi5yZXNlcnZlU3BhY2VEZWZhdWx0PTA9PT1sfHwyPT09bHx8ezE6ImxlZnQiLDM6InJpZ2h0In1bbF09PT1iLmxhYmVsQWxpZ24sdShFLnJlc2VydmVTcGFjZSwiY2VudGVyIj09PWIubGFiZWxBbGlnbj8hMDpudWxsLGIucmVzZXJ2ZVNwYWNlRGVmYXVsdCkmJmQuZm9yRWFjaChmdW5jdGlvbihiKXtyPU1hdGgubWF4KGtbYl0uZ2V0TGFiZWxTaXplKCkscil9KSxiLnN0YWdnZXJMaW5lcyYmKHIqPWIuc3RhZ2dlckxpbmVzKSxiLmxhYmVsT2Zmc2V0PXIqKGIub3Bwb3NpdGU/LTE6MSkpOkEoayxmdW5jdGlvbihiLGEpe2IuZGVzdHJveSgpO2RlbGV0ZSBrW2FdfSk7aWYoZyYmZy50ZXh0JiYhMSE9PWcuZW5hYmxlZCYmKGIuYWRkVGl0bGUocCkscCYmITEhPT1nLnJlc2VydmVTcGFjZSkpe2IudGl0bGVPZmZzZXQ9dz1iLmF4aXNUaXRsZS5nZXRCQm94KClbYz8iaGVpZ2h0Ijoid2lkdGgiXTt2YXIgcT1nLm9mZnNldDsKbj12KHEpPzA6dShnLm1hcmdpbixjPzU6MTApfWIucmVuZGVyTGluZSgpO2Iub2Zmc2V0PUYqdShmLm9mZnNldCxNW2xdP01bbF0rKGYubWFyZ2lufHwwKTowKTtiLnRpY2tSb3RDb3JyPWIudGlja1JvdENvcnJ8fHt4OjAseTowfTtlPTA9PT1sPy1iLmxhYmVsTWV0cmljcygpLmg6Mj09PWw/Yi50aWNrUm90Q29yci55OjA7bj1NYXRoLmFicyhyKStuO3ImJihuPW4tZStGKihjP3UoRS55LGIudGlja1JvdENvcnIueSs4KkYpOkUueCkpO2IuYXhpc1RpdGxlTWFyZ2luPXUocSxuKTtiLmdldE1heExhYmVsRGltZW5zaW9ucyYmKGIubWF4TGFiZWxEaW1lbnNpb25zPWIuZ2V0TWF4TGFiZWxEaW1lbnNpb25zKGssZCkpO2M9dGhpcy50aWNrU2l6ZSgidGljayIpO01bbF09TWF0aC5tYXgoTVtsXSxiLmF4aXNUaXRsZU1hcmdpbit3K0YqYi5vZmZzZXQsbixkJiZkLmxlbmd0aCYmYz9jWzBdK0YqYi5vZmZzZXQ6MCk7Zj1mLm9mZnNldD8wOjIqTWF0aC5mbG9vcihiLmF4aXNMaW5lLnN0cm9rZVdpZHRoKCkvCjIpO2FbbV09TWF0aC5tYXgoYVttXSxmKTtDKHRoaXMsImFmdGVyR2V0T2Zmc2V0Iil9O2UucHJvdG90eXBlLmdldExpbmVQYXRoPWZ1bmN0aW9uKGIpe3ZhciBhPXRoaXMuY2hhcnQsZT10aGlzLm9wcG9zaXRlLGY9dGhpcy5vZmZzZXQsZD10aGlzLmhvcml6LGs9dGhpcy5sZWZ0KyhlP3RoaXMud2lkdGg6MCkrZjtmPWEuY2hhcnRIZWlnaHQtdGhpcy5ib3R0b20tKGU/dGhpcy5oZWlnaHQ6MCkrZjtlJiYoYio9LTEpO3JldHVybiBhLnJlbmRlcmVyLmNyaXNwTGluZShbWyJNIixkP3RoaXMubGVmdDprLGQ/Zjp0aGlzLnRvcF0sWyJMIixkP2EuY2hhcnRXaWR0aC10aGlzLnJpZ2h0OmssZD9mOmEuY2hhcnRIZWlnaHQtdGhpcy5ib3R0b21dXSxiKX07ZS5wcm90b3R5cGUucmVuZGVyTGluZT1mdW5jdGlvbigpe3RoaXMuYXhpc0xpbmV8fCh0aGlzLmF4aXNMaW5lPXRoaXMuY2hhcnQucmVuZGVyZXIucGF0aCgpLmFkZENsYXNzKCJoaWdoY2hhcnRzLWF4aXMtbGluZSIpLmFkZCh0aGlzLmF4aXNHcm91cCksCnRoaXMuY2hhcnQuc3R5bGVkTW9kZXx8dGhpcy5heGlzTGluZS5hdHRyKHtzdHJva2U6dGhpcy5vcHRpb25zLmxpbmVDb2xvciwic3Ryb2tlLXdpZHRoIjp0aGlzLm9wdGlvbnMubGluZVdpZHRoLHpJbmRleDo3fSkpfTtlLnByb3RvdHlwZS5nZXRUaXRsZVBvc2l0aW9uPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5ob3JpeixhPXRoaXMubGVmdCxlPXRoaXMudG9wLGY9dGhpcy5sZW4sZD10aGlzLm9wdGlvbnMudGl0bGUsaz1iP2E6ZSxjPXRoaXMub3Bwb3NpdGUsbD10aGlzLm9mZnNldCx1PWQueHx8MCxtPWQueXx8MCxwPXRoaXMuYXhpc1RpdGxlLEE9dGhpcy5jaGFydC5yZW5kZXJlci5mb250TWV0cmljcyhkLnN0eWxlJiZkLnN0eWxlLmZvbnRTaXplLHApO3A9TWF0aC5tYXgocC5nZXRCQm94KG51bGwsMCkuaGVpZ2h0LUEuaC0xLDApO2Y9e2xvdzprKyhiPzA6ZiksbWlkZGxlOmsrZi8yLGhpZ2g6aysoYj9mOjApfVtkLmFsaWduXTthPShiP2UrdGhpcy5oZWlnaHQ6YSkrKGI/MTotMSkqCihjPy0xOjEpKnRoaXMuYXhpc1RpdGxlTWFyZ2luK1stcCxwLEEuZiwtcF1bdGhpcy5zaWRlXTtiPXt4OmI/Zit1OmErKGM/dGhpcy53aWR0aDowKStsK3UseTpiP2ErbS0oYz90aGlzLmhlaWdodDowKStsOmYrbX07Qyh0aGlzLCJhZnRlckdldFRpdGxlUG9zaXRpb24iLHt0aXRsZVBvc2l0aW9uOmJ9KTtyZXR1cm4gYn07ZS5wcm90b3R5cGUucmVuZGVyTWlub3JUaWNrPWZ1bmN0aW9uKGIpe3ZhciBhPXRoaXMuY2hhcnQuaGFzUmVuZGVyZWQmJmwodGhpcy5vbGRNaW4pLGU9dGhpcy5taW5vclRpY2tzO2VbYl18fChlW2JdPW5ldyBxKHRoaXMsYiwibWlub3IiKSk7YSYmZVtiXS5pc05ldyYmZVtiXS5yZW5kZXIobnVsbCwhMCk7ZVtiXS5yZW5kZXIobnVsbCwhMSwxKX07ZS5wcm90b3R5cGUucmVuZGVyVGljaz1mdW5jdGlvbihiLGEpe3ZhciBlPXRoaXMuaXNMaW5rZWQsaD10aGlzLnRpY2tzLGY9dGhpcy5jaGFydC5oYXNSZW5kZXJlZCYmbCh0aGlzLm9sZE1pbik7aWYoIWV8fGI+PQp0aGlzLm1pbiYmYjw9dGhpcy5tYXgpaFtiXXx8KGhbYl09bmV3IHEodGhpcyxiKSksZiYmaFtiXS5pc05ldyYmaFtiXS5yZW5kZXIoYSwhMCwtMSksaFtiXS5yZW5kZXIoYSl9O2UucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBiPXRoaXMsYT1iLmNoYXJ0LGU9Yi5sb2dhcml0aG1pYyxmPWIub3B0aW9ucyxkPWIuaXNMaW5rZWQsaz1iLnRpY2tQb3NpdGlvbnMsdT1iLmF4aXNUaXRsZSxtPWIudGlja3MscD1iLm1pbm9yVGlja3Msdz1iLmFsdGVybmF0ZUJhbmRzLG49Zi5zdGFja0xhYmVscyxnPWYuYWx0ZXJuYXRlR3JpZENvbG9yLEU9Yi50aWNrbWFya09mZnNldCxyPWIuYXhpc0xpbmUsRj1iLnNob3dBeGlzLHQ9RChhLnJlbmRlcmVyLmdsb2JhbEFuaW1hdGlvbiksdixQO2IubGFiZWxFZGdlLmxlbmd0aD0wO2Iub3ZlcmxhcD0hMTtbbSxwLHddLmZvckVhY2goZnVuY3Rpb24oYil7QShiLGZ1bmN0aW9uKGIpe2IuaXNBY3RpdmU9ITF9KX0pO2lmKGIuaGFzRGF0YSgpfHwKZCliLm1pbm9yVGlja0ludGVydmFsJiYhYi5jYXRlZ29yaWVzJiZiLmdldE1pbm9yVGlja1Bvc2l0aW9ucygpLmZvckVhY2goZnVuY3Rpb24oYSl7Yi5yZW5kZXJNaW5vclRpY2soYSl9KSxrLmxlbmd0aCYmKGsuZm9yRWFjaChmdW5jdGlvbihhLGUpe2IucmVuZGVyVGljayhhLGUpfSksRSYmKDA9PT1iLm1pbnx8Yi5zaW5nbGUpJiYobVstMV18fChtWy0xXT1uZXcgcShiLC0xLG51bGwsITApKSxtWy0xXS5yZW5kZXIoLTEpKSksZyYmay5mb3JFYWNoKGZ1bmN0aW9uKGgsZil7UD0idW5kZWZpbmVkIiE9PXR5cGVvZiBrW2YrMV0/a1tmKzFdK0U6Yi5tYXgtRTswPT09ZiUyJiZoPGIubWF4JiZQPD1iLm1heCsoYS5wb2xhcj8tRTpFKSYmKHdbaF18fCh3W2hdPW5ldyBjLlBsb3RMaW5lT3JCYW5kKGIpKSx2PWgrRSx3W2hdLm9wdGlvbnM9e2Zyb206ZT9lLmxpbjJsb2codik6dix0bzplP2UubGluMmxvZyhQKTpQLGNvbG9yOmcsY2xhc3NOYW1lOiJoaWdoY2hhcnRzLWFsdGVybmF0ZS1ncmlkIn0sCndbaF0ucmVuZGVyKCksd1toXS5pc0FjdGl2ZT0hMCl9KSxiLl9hZGRlZFBsb3RMQnx8KChmLnBsb3RMaW5lc3x8W10pLmNvbmNhdChmLnBsb3RCYW5kc3x8W10pLmZvckVhY2goZnVuY3Rpb24oYSl7Yi5hZGRQbG90QmFuZE9yTGluZShhKX0pLGIuX2FkZGVkUGxvdExCPSEwKTtbbSxwLHddLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIGUsaD1bXSxmPXQuZHVyYXRpb247QShiLGZ1bmN0aW9uKGIsYSl7Yi5pc0FjdGl2ZXx8KGIucmVuZGVyKGEsITEsMCksYi5pc0FjdGl2ZT0hMSxoLnB1c2goYSkpfSk7TShmdW5jdGlvbigpe2ZvcihlPWgubGVuZ3RoO2UtLTspYltoW2VdXSYmIWJbaFtlXV0uaXNBY3RpdmUmJihiW2hbZV1dLmRlc3Ryb3koKSxkZWxldGUgYltoW2VdXSl9LGIhPT13JiZhLmhhc1JlbmRlcmVkJiZmP2Y6MCl9KTtyJiYocltyLmlzUGxhY2VkPyJhbmltYXRlIjoiYXR0ciJdKHtkOnRoaXMuZ2V0TGluZVBhdGgoci5zdHJva2VXaWR0aCgpKX0pLHIuaXNQbGFjZWQ9ITAscltGPwoic2hvdyI6ImhpZGUiXShGKSk7dSYmRiYmKGY9Yi5nZXRUaXRsZVBvc2l0aW9uKCksbChmLnkpPyh1W3UuaXNOZXc/ImF0dHIiOiJhbmltYXRlIl0oZiksdS5pc05ldz0hMSk6KHUuYXR0cigieSIsLTk5OTkpLHUuaXNOZXc9ITApKTtuJiZuLmVuYWJsZWQmJmIuc3RhY2tpbmcmJmIuc3RhY2tpbmcucmVuZGVyU3RhY2tUb3RhbHMoKTtiLmlzRGlydHk9ITE7Qyh0aGlzLCJhZnRlclJlbmRlciIpfTtlLnByb3RvdHlwZS5yZWRyYXc9ZnVuY3Rpb24oKXt0aGlzLnZpc2libGUmJih0aGlzLnJlbmRlcigpLHRoaXMucGxvdExpbmVzQW5kQmFuZHMuZm9yRWFjaChmdW5jdGlvbihiKXtiLnJlbmRlcigpfSkpO3RoaXMuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYil7Yi5pc0RpcnR5PSEwfSl9O2UucHJvdG90eXBlLmdldEtlZXBQcm9wcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmtlZXBQcm9wc3x8ZS5rZWVwUHJvcHN9O2UucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oYil7dmFyIGE9dGhpcywKZT1hLnBsb3RMaW5lc0FuZEJhbmRzLGY7Qyh0aGlzLCJkZXN0cm95Iix7a2VlcEV2ZW50czpifSk7Ynx8UChhKTtbYS50aWNrcyxhLm1pbm9yVGlja3MsYS5hbHRlcm5hdGVCYW5kc10uZm9yRWFjaChmdW5jdGlvbihiKXtLKGIpfSk7aWYoZSlmb3IoYj1lLmxlbmd0aDtiLS07KWVbYl0uZGVzdHJveSgpOyJheGlzTGluZSBheGlzVGl0bGUgYXhpc0dyb3VwIGdyaWRHcm91cCBsYWJlbEdyb3VwIGNyb3NzIHNjcm9sbGJhciIuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2FbYl0mJihhW2JdPWFbYl0uZGVzdHJveSgpKX0pO2ZvcihmIGluIGEucGxvdExpbmVzQW5kQmFuZHNHcm91cHMpYS5wbG90TGluZXNBbmRCYW5kc0dyb3Vwc1tmXT1hLnBsb3RMaW5lc0FuZEJhbmRzR3JvdXBzW2ZdLmRlc3Ryb3koKTtBKGEsZnVuY3Rpb24oYixlKXstMT09PWEuZ2V0S2VlcFByb3BzKCkuaW5kZXhPZihlKSYmZGVsZXRlIGFbZV19KX07ZS5wcm90b3R5cGUuZHJhd0Nyb3NzaGFpcj1mdW5jdGlvbihiLAphKXt2YXIgZT10aGlzLmNyb3NzaGFpcixoPXUoZS5zbmFwLCEwKSxmLGQ9dGhpcy5jcm9zcyxrPXRoaXMuY2hhcnQ7Qyh0aGlzLCJkcmF3Q3Jvc3NoYWlyIix7ZTpiLHBvaW50OmF9KTtifHwoYj10aGlzLmNyb3NzJiZ0aGlzLmNyb3NzLmUpO2lmKHRoaXMuY3Jvc3NoYWlyJiYhMSE9PSh2KGEpfHwhaCkpe2g/dihhKSYmKGY9dSgiY29sb3JBeGlzIiE9PXRoaXMuY29sbD9hLmNyb3NzaGFpclBvczpudWxsLHRoaXMuaXNYQXhpcz9hLnBsb3RYOnRoaXMubGVuLWEucGxvdFkpKTpmPWImJih0aGlzLmhvcml6P2IuY2hhcnRYLXRoaXMucG9zOnRoaXMubGVuLWIuY2hhcnRZK3RoaXMucG9zKTtpZih2KGYpKXt2YXIgYz17dmFsdWU6YSYmKHRoaXMuaXNYQXhpcz9hLng6dShhLnN0YWNrWSxhLnkpKSx0cmFuc2xhdGVkVmFsdWU6Zn07ay5wb2xhciYmcihjLHtpc0Nyb3NzaGFpcjohMCxjaGFydFg6YiYmYi5jaGFydFgsY2hhcnRZOmImJmIuY2hhcnRZLHBvaW50OmF9KTtjPXRoaXMuZ2V0UGxvdExpbmVQYXRoKGMpfHwKbnVsbH1pZighdihjKSl7dGhpcy5oaWRlQ3Jvc3NoYWlyKCk7cmV0dXJufWg9dGhpcy5jYXRlZ29yaWVzJiYhdGhpcy5pc1JhZGlhbDtkfHwodGhpcy5jcm9zcz1kPWsucmVuZGVyZXIucGF0aCgpLmFkZENsYXNzKCJoaWdoY2hhcnRzLWNyb3NzaGFpciBoaWdoY2hhcnRzLWNyb3NzaGFpci0iKyhoPyJjYXRlZ29yeSAiOiJ0aGluICIpK2UuY2xhc3NOYW1lKS5hdHRyKHt6SW5kZXg6dShlLnpJbmRleCwyKX0pLmFkZCgpLGsuc3R5bGVkTW9kZXx8KGQuYXR0cih7c3Ryb2tlOmUuY29sb3J8fChoP2cucGFyc2UoIiNjY2Q2ZWIiKS5zZXRPcGFjaXR5KC4yNSkuZ2V0KCk6IiNjY2NjY2MiKSwic3Ryb2tlLXdpZHRoIjp1KGUud2lkdGgsMSl9KS5jc3MoeyJwb2ludGVyLWV2ZW50cyI6Im5vbmUifSksZS5kYXNoU3R5bGUmJmQuYXR0cih7ZGFzaHN0eWxlOmUuZGFzaFN0eWxlfSkpKTtkLnNob3coKS5hdHRyKHtkOmN9KTtoJiYhZS53aWR0aCYmZC5hdHRyKHsic3Ryb2tlLXdpZHRoIjp0aGlzLnRyYW5zQX0pOwp0aGlzLmNyb3NzLmU9Yn1lbHNlIHRoaXMuaGlkZUNyb3NzaGFpcigpO0ModGhpcywiYWZ0ZXJEcmF3Q3Jvc3NoYWlyIix7ZTpiLHBvaW50OmF9KX07ZS5wcm90b3R5cGUuaGlkZUNyb3NzaGFpcj1mdW5jdGlvbigpe3RoaXMuY3Jvc3MmJnRoaXMuY3Jvc3MuaGlkZSgpO0ModGhpcywiYWZ0ZXJIaWRlQ3Jvc3NoYWlyIil9O2UucHJvdG90eXBlLmhhc1ZlcnRpY2FsUGFubmluZz1mdW5jdGlvbigpe3ZhciBiLGE7cmV0dXJuL3kvLnRlc3QoKG51bGw9PT0oYT1udWxsPT09KGI9dGhpcy5jaGFydC5vcHRpb25zLmNoYXJ0KXx8dm9pZCAwPT09Yj92b2lkIDA6Yi5wYW5uaW5nKXx8dm9pZCAwPT09YT92b2lkIDA6YS50eXBlKXx8IiIpfTtlLmRlZmF1bHRPcHRpb25zPXtkYXRlVGltZUxhYmVsRm9ybWF0czp7bWlsbGlzZWNvbmQ6e21haW46IiVIOiVNOiVTLiVMIixyYW5nZTohMX0sc2Vjb25kOnttYWluOiIlSDolTTolUyIscmFuZ2U6ITF9LG1pbnV0ZTp7bWFpbjoiJUg6JU0iLHJhbmdlOiExfSwKaG91cjp7bWFpbjoiJUg6JU0iLHJhbmdlOiExfSxkYXk6e21haW46IiVlLiAlYiJ9LHdlZWs6e21haW46IiVlLiAlYiJ9LG1vbnRoOnttYWluOiIlYiAnJXkifSx5ZWFyOnttYWluOiIlWSJ9fSxlbmRPblRpY2s6ITEsbGFiZWxzOntlbmFibGVkOiEwLGluZGVudGF0aW9uOjEwLHg6MCxzdHlsZTp7Y29sb3I6IiM2NjY2NjYiLGN1cnNvcjoiZGVmYXVsdCIsZm9udFNpemU6IjExcHgifX0sbWF4UGFkZGluZzouMDEsbWlub3JUaWNrTGVuZ3RoOjIsbWlub3JUaWNrUG9zaXRpb246Im91dHNpZGUiLG1pblBhZGRpbmc6LjAxLHNob3dFbXB0eTohMCxzdGFydE9mV2VlazoxLHN0YXJ0T25UaWNrOiExLHRpY2tMZW5ndGg6MTAsdGlja1BpeGVsSW50ZXJ2YWw6MTAwLHRpY2ttYXJrUGxhY2VtZW50OiJiZXR3ZWVuIix0aWNrUG9zaXRpb246Im91dHNpZGUiLHRpdGxlOnthbGlnbjoibWlkZGxlIixzdHlsZTp7Y29sb3I6IiM2NjY2NjYifX0sdHlwZToibGluZWFyIixtaW5vckdyaWRMaW5lQ29sb3I6IiNmMmYyZjIiLAptaW5vckdyaWRMaW5lV2lkdGg6MSxtaW5vclRpY2tDb2xvcjoiIzk5OTk5OSIsbGluZUNvbG9yOiIjY2NkNmViIixsaW5lV2lkdGg6MSxncmlkTGluZUNvbG9yOiIjZTZlNmU2Iix0aWNrQ29sb3I6IiNjY2Q2ZWIifTtlLmRlZmF1bHRZQXhpc09wdGlvbnM9e2VuZE9uVGljazohMCxtYXhQYWRkaW5nOi4wNSxtaW5QYWRkaW5nOi4wNSx0aWNrUGl4ZWxJbnRlcnZhbDo3MixzaG93TGFzdExhYmVsOiEwLGxhYmVsczp7eDotOH0sc3RhcnRPblRpY2s6ITAsdGl0bGU6e3JvdGF0aW9uOjI3MCx0ZXh0OiJWYWx1ZXMifSxzdGFja0xhYmVsczp7YWxsb3dPdmVybGFwOiExLGVuYWJsZWQ6ITEsY3JvcDohMCxvdmVyZmxvdzoianVzdGlmeSIsZm9ybWF0dGVyOmZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5heGlzLmNoYXJ0Lm51bWJlckZvcm1hdHRlcjtyZXR1cm4gYih0aGlzLnRvdGFsLC0xKX0sc3R5bGU6e2NvbG9yOiIjMDAwMDAwIixmb250U2l6ZToiMTFweCIsZm9udFdlaWdodDoiYm9sZCIsdGV4dE91dGxpbmU6IjFweCBjb250cmFzdCJ9fSwKZ3JpZExpbmVXaWR0aDoxLGxpbmVXaWR0aDowfTtlLmRlZmF1bHRMZWZ0QXhpc09wdGlvbnM9e2xhYmVsczp7eDotMTV9LHRpdGxlOntyb3RhdGlvbjoyNzB9fTtlLmRlZmF1bHRSaWdodEF4aXNPcHRpb25zPXtsYWJlbHM6e3g6MTV9LHRpdGxlOntyb3RhdGlvbjo5MH19O2UuZGVmYXVsdEJvdHRvbUF4aXNPcHRpb25zPXtsYWJlbHM6e2F1dG9Sb3RhdGlvbjpbLTQ1XSx4OjB9LG1hcmdpbjoxNSx0aXRsZTp7cm90YXRpb246MH19O2UuZGVmYXVsdFRvcEF4aXNPcHRpb25zPXtsYWJlbHM6e2F1dG9Sb3RhdGlvbjpbLTQ1XSx4OjB9LG1hcmdpbjoxNSx0aXRsZTp7cm90YXRpb246MH19O2Uua2VlcFByb3BzPSJleHRLZXkgaGNFdmVudHMgbmFtZXMgc2VyaWVzIHVzZXJNYXggdXNlck1pbiIuc3BsaXQoIiAiKTtyZXR1cm4gZX0oKTtjLkF4aXM9eTtyZXR1cm4gYy5BeGlzfSk7TyhxLCJwYXJ0cy9EYXRlVGltZUF4aXMuanMiLFtxWyJwYXJ0cy9BeGlzLmpzIl0scVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLApmdW5jdGlvbihnLGMpe3ZhciBxPWMuYWRkRXZlbnQseT1jLmdldE1hZ25pdHVkZSxCPWMubm9ybWFsaXplVGlja0ludGVydmFsLEg9Yy50aW1lVW5pdHMsRD1mdW5jdGlvbigpe2Z1bmN0aW9uIGMoYyl7dGhpcy5heGlzPWN9Yy5wcm90b3R5cGUubm9ybWFsaXplVGltZVRpY2tJbnRlcnZhbD1mdW5jdGlvbihjLGcpe3ZhciB0PWd8fFtbIm1pbGxpc2Vjb25kIixbMSwyLDUsMTAsMjAsMjUsNTAsMTAwLDIwMCw1MDBdXSxbInNlY29uZCIsWzEsMiw1LDEwLDE1LDMwXV0sWyJtaW51dGUiLFsxLDIsNSwxMCwxNSwzMF1dLFsiaG91ciIsWzEsMiwzLDQsNiw4LDEyXV0sWyJkYXkiLFsxLDJdXSxbIndlZWsiLFsxLDJdXSxbIm1vbnRoIixbMSwyLDMsNCw2XV0sWyJ5ZWFyIixudWxsXV07Zz10W3QubGVuZ3RoLTFdO3ZhciB2PUhbZ1swXV0scT1nWzFdLG47Zm9yKG49MDtuPHQubGVuZ3RoJiYhKGc9dFtuXSx2PUhbZ1swXV0scT1nWzFdLHRbbisxXSYmYzw9KHYqcVtxLmxlbmd0aC0xXStIW3RbbisKMV1bMF1dKS8yKTtuKyspO3Y9PT1ILnllYXImJmM8NSp2JiYocT1bMSwyLDVdKTtjPUIoYy92LHEsInllYXIiPT09Z1swXT9NYXRoLm1heCh5KGMvdiksMSk6MSk7cmV0dXJue3VuaXRSYW5nZTp2LGNvdW50OmMsdW5pdE5hbWU6Z1swXX19O3JldHVybiBjfSgpO2M9ZnVuY3Rpb24oKXtmdW5jdGlvbiBjKCl7fWMuY29tcG9zZT1mdW5jdGlvbihjKXtjLmtlZXBQcm9wcy5wdXNoKCJkYXRlVGltZSIpO2MucHJvdG90eXBlLmdldFRpbWVUaWNrcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNoYXJ0LnRpbWUuZ2V0VGltZVRpY2tzLmFwcGx5KHRoaXMuY2hhcnQudGltZSxhcmd1bWVudHMpfTtxKGMsImluaXQiLGZ1bmN0aW9uKGMpeyJkYXRldGltZSIhPT1jLnVzZXJPcHRpb25zLnR5cGU/dGhpcy5kYXRlVGltZT12b2lkIDA6dGhpcy5kYXRlVGltZXx8KHRoaXMuZGF0ZVRpbWU9bmV3IEQodGhpcykpfSl9O2MuQWRkaXRpb25zQ2xhc3M9RDtyZXR1cm4gY30oKTtjLmNvbXBvc2UoZyk7cmV0dXJuIGN9KTsKTyhxLCJwYXJ0cy9Mb2dhcml0aG1pY0F4aXMuanMiLFtxWyJwYXJ0cy9BeGlzLmpzIl0scVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGcsYyl7dmFyIHE9Yy5hZGRFdmVudCx5PWMuZ2V0TWFnbml0dWRlLEI9Yy5ub3JtYWxpemVUaWNrSW50ZXJ2YWwsSD1jLnBpY2ssRD1mdW5jdGlvbigpe2Z1bmN0aW9uIGMoYyl7dGhpcy5heGlzPWN9Yy5wcm90b3R5cGUuZ2V0TG9nVGlja1Bvc2l0aW9ucz1mdW5jdGlvbihjLGcscSx2KXt2YXIgdD10aGlzLmF4aXMsbj10LmxlbixyPXQub3B0aW9ucyxDPVtdO3Z8fCh0aGlzLm1pbm9yQXV0b0ludGVydmFsPXZvaWQgMCk7aWYoLjU8PWMpYz1NYXRoLnJvdW5kKGMpLEM9dC5nZXRMaW5lYXJUaWNrUG9zaXRpb25zKGMsZyxxKTtlbHNlIGlmKC4wODw9Yyl7cj1NYXRoLmZsb29yKGcpO3ZhciBJLHA7Zm9yKG49LjM8Yz9bMSwyLDRdOi4xNTxjP1sxLDIsNCw2LDhdOlsxLDIsMyw0LDUsNiw3LDgsOV07cjxxKzEmJiFwO3IrKyl7dmFyIG09Cm4ubGVuZ3RoO2ZvcihJPTA7STxtJiYhcDtJKyspe3ZhciBkPXRoaXMubG9nMmxpbih0aGlzLmxpbjJsb2cocikqbltJXSk7ZD5nJiYoIXZ8fGw8PXEpJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBsJiZDLnB1c2gobCk7bD5xJiYocD0hMCk7dmFyIGw9ZH19fWVsc2UgZz10aGlzLmxpbjJsb2coZykscT10aGlzLmxpbjJsb2cocSksYz12P3QuZ2V0TWlub3JUaWNrSW50ZXJ2YWwoKTpyLnRpY2tJbnRlcnZhbCxjPUgoImF1dG8iPT09Yz9udWxsOmMsdGhpcy5taW5vckF1dG9JbnRlcnZhbCxyLnRpY2tQaXhlbEludGVydmFsLyh2PzU6MSkqKHEtZykvKCh2P24vdC50aWNrUG9zaXRpb25zLmxlbmd0aDpuKXx8MSkpLGM9QihjLHZvaWQgMCx5KGMpKSxDPXQuZ2V0TGluZWFyVGlja1Bvc2l0aW9ucyhjLGcscSkubWFwKHRoaXMubG9nMmxpbiksdnx8KHRoaXMubWlub3JBdXRvSW50ZXJ2YWw9Yy81KTt2fHwodC50aWNrSW50ZXJ2YWw9Yyk7cmV0dXJuIEN9O2MucHJvdG90eXBlLmxpbjJsb2c9ZnVuY3Rpb24oYyl7cmV0dXJuIE1hdGgucG93KDEwLApjKX07Yy5wcm90b3R5cGUubG9nMmxpbj1mdW5jdGlvbihjKXtyZXR1cm4gTWF0aC5sb2coYykvTWF0aC5MTjEwfTtyZXR1cm4gY30oKTtjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYygpe31jLmNvbXBvc2U9ZnVuY3Rpb24oYyl7Yy5rZWVwUHJvcHMucHVzaCgibG9nYXJpdGhtaWMiKTt2YXIgZz1jLnByb3RvdHlwZSx0PUQucHJvdG90eXBlO2cubG9nMmxpbj10LmxvZzJsaW47Zy5saW4ybG9nPXQubGluMmxvZztxKGMsImluaXQiLGZ1bmN0aW9uKGMpe3ZhciBnPXRoaXMubG9nYXJpdGhtaWM7ImxvZ2FyaXRobWljIiE9PWMudXNlck9wdGlvbnMudHlwZT90aGlzLmxvZ2FyaXRobWljPXZvaWQgMDooZ3x8KGc9dGhpcy5sb2dhcml0aG1pYz1uZXcgRCh0aGlzKSksdGhpcy5sb2cybGluIT09Zy5sb2cybGluJiYoZy5sb2cybGluPXRoaXMubG9nMmxpbi5iaW5kKHRoaXMpKSx0aGlzLmxpbjJsb2chPT1nLmxpbjJsb2cmJihnLmxpbjJsb2c9dGhpcy5saW4ybG9nLmJpbmQodGhpcykpKX0pO3EoYywKImFmdGVySW5pdCIsZnVuY3Rpb24oKXt2YXIgYz10aGlzLmxvZ2FyaXRobWljO2MmJih0aGlzLmxpbjJ2YWw9ZnVuY3Rpb24oZyl7cmV0dXJuIGMubGluMmxvZyhnKX0sdGhpcy52YWwybGluPWZ1bmN0aW9uKGcpe3JldHVybiBjLmxvZzJsaW4oZyl9KX0pfTtyZXR1cm4gY30oKTtjLmNvbXBvc2UoZyk7cmV0dXJuIGN9KTtPKHEsInBhcnRzL1Bsb3RMaW5lT3JCYW5kLmpzIixbcVsicGFydHMvQXhpcy5qcyJdLHFbInBhcnRzL0dsb2JhbHMuanMiXSxxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyxjLHEpe3ZhciB5PXEuYXJyYXlNYXgsQj1xLmFycmF5TWluLEg9cS5kZWZpbmVkLEQ9cS5kZXN0cm95T2JqZWN0UHJvcGVydGllcyxKPXEuZXJhc2UsdD1xLmV4dGVuZCxHPXEubWVyZ2UsTD1xLm9iamVjdEVhY2gsdj1xLnBpY2ssSz1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oYyxuKXt0aGlzLmF4aXM9YztuJiYodGhpcy5vcHRpb25zPW4sdGhpcy5pZD1uLmlkKX1uLnByb3RvdHlwZS5yZW5kZXI9CmZ1bmN0aW9uKCl7Yy5maXJlRXZlbnQodGhpcywicmVuZGVyIik7dmFyIG49dGhpcyxnPW4uYXhpcyx0PWcuaG9yaXoscD1nLmxvZ2FyaXRobWljLG09bi5vcHRpb25zLGQ9bS5sYWJlbCxsPW4ubGFiZWwsaz1tLnRvLGY9bS5mcm9tLGE9bS52YWx1ZSxBPUgoZikmJkgoayksdT1IKGEpLEU9bi5zdmdFbGVtLFA9IUUsdz1bXSxNPW0uY29sb3IsRj12KG0uekluZGV4LDApLHE9bS5ldmVudHM7dz17ImNsYXNzIjoiaGlnaGNoYXJ0cy1wbG90LSIrKEE/ImJhbmQgIjoibGluZSAiKSsobS5jbGFzc05hbWV8fCIiKX07dmFyIGU9e30sYj1nLmNoYXJ0LnJlbmRlcmVyLGg9QT8iYmFuZHMiOiJsaW5lcyI7cCYmKGY9cC5sb2cybGluKGYpLGs9cC5sb2cybGluKGspLGE9cC5sb2cybGluKGEpKTtnLmNoYXJ0LnN0eWxlZE1vZGV8fCh1Pyh3LnN0cm9rZT1NfHwiIzk5OTk5OSIsd1sic3Ryb2tlLXdpZHRoIl09dihtLndpZHRoLDEpLG0uZGFzaFN0eWxlJiYody5kYXNoc3R5bGU9bS5kYXNoU3R5bGUpKToKQSYmKHcuZmlsbD1NfHwiI2U2ZWJmNSIsbS5ib3JkZXJXaWR0aCYmKHcuc3Ryb2tlPW0uYm9yZGVyQ29sb3Isd1sic3Ryb2tlLXdpZHRoIl09bS5ib3JkZXJXaWR0aCkpKTtlLnpJbmRleD1GO2grPSItIitGOyhwPWcucGxvdExpbmVzQW5kQmFuZHNHcm91cHNbaF0pfHwoZy5wbG90TGluZXNBbmRCYW5kc0dyb3Vwc1toXT1wPWIuZygicGxvdC0iK2gpLmF0dHIoZSkuYWRkKCkpO1AmJihuLnN2Z0VsZW09RT1iLnBhdGgoKS5hdHRyKHcpLmFkZChwKSk7aWYodSl3PWcuZ2V0UGxvdExpbmVQYXRoKHt2YWx1ZTphLGxpbmVXaWR0aDpFLnN0cm9rZVdpZHRoKCksYWNyb3NzUGFuZXM6bS5hY3Jvc3NQYW5lc30pO2Vsc2UgaWYoQSl3PWcuZ2V0UGxvdEJhbmRQYXRoKGYsayxtKTtlbHNlIHJldHVybjshbi5ldmVudHNBZGRlZCYmcSYmKEwocSxmdW5jdGlvbihiLGEpe0Uub24oYSxmdW5jdGlvbihiKXtxW2FdLmFwcGx5KG4sW2JdKX0pfSksbi5ldmVudHNBZGRlZD0hMCk7KFB8fCFFLmQpJiZ3JiYKdy5sZW5ndGg/RS5hdHRyKHtkOnd9KTpFJiYodz8oRS5zaG93KCEwKSxFLmFuaW1hdGUoe2Q6d30pKTpFLmQmJihFLmhpZGUoKSxsJiYobi5sYWJlbD1sPWwuZGVzdHJveSgpKSkpO2QmJihIKGQudGV4dCl8fEgoZC5mb3JtYXR0ZXIpKSYmdyYmdy5sZW5ndGgmJjA8Zy53aWR0aCYmMDxnLmhlaWdodCYmIXcuaXNGbGF0PyhkPUcoe2FsaWduOnQmJkEmJiJjZW50ZXIiLHg6dD8hQSYmNDoxMCx2ZXJ0aWNhbEFsaWduOiF0JiZBJiYibWlkZGxlIix5OnQ/QT8xNjoxMDpBPzY6LTQscm90YXRpb246dCYmIUEmJjkwfSxkKSx0aGlzLnJlbmRlckxhYmVsKGQsdyxBLEYpKTpsJiZsLmhpZGUoKTtyZXR1cm4gbn07bi5wcm90b3R5cGUucmVuZGVyTGFiZWw9ZnVuY3Rpb24oYyxuLGcscCl7dmFyIG09dGhpcy5sYWJlbCxkPXRoaXMuYXhpcy5jaGFydC5yZW5kZXJlcjttfHwobT17YWxpZ246Yy50ZXh0QWxpZ258fGMuYWxpZ24scm90YXRpb246Yy5yb3RhdGlvbiwiY2xhc3MiOiJoaWdoY2hhcnRzLXBsb3QtIisKKGc/ImJhbmQiOiJsaW5lIikrIi1sYWJlbCAiKyhjLmNsYXNzTmFtZXx8IiIpfSxtLnpJbmRleD1wLHA9dGhpcy5nZXRMYWJlbFRleHQoYyksdGhpcy5sYWJlbD1tPWQudGV4dChwLDAsMCxjLnVzZUhUTUwpLmF0dHIobSkuYWRkKCksdGhpcy5heGlzLmNoYXJ0LnN0eWxlZE1vZGV8fG0uY3NzKGMuc3R5bGUpKTtkPW4ueEJvdW5kc3x8W25bMF1bMV0sblsxXVsxXSxnP25bMl1bMV06blswXVsxXV07bj1uLnlCb3VuZHN8fFtuWzBdWzJdLG5bMV1bMl0sZz9uWzJdWzJdOm5bMF1bMl1dO2c9QihkKTtwPUIobik7bS5hbGlnbihjLCExLHt4OmcseTpwLHdpZHRoOnkoZCktZyxoZWlnaHQ6eShuKS1wfSk7bS5zaG93KCEwKX07bi5wcm90b3R5cGUuZ2V0TGFiZWxUZXh0PWZ1bmN0aW9uKGMpe3JldHVybiBIKGMuZm9ybWF0dGVyKT9jLmZvcm1hdHRlci5jYWxsKHRoaXMpOmMudGV4dH07bi5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe0oodGhpcy5heGlzLnBsb3RMaW5lc0FuZEJhbmRzLAp0aGlzKTtkZWxldGUgdGhpcy5heGlzO0QodGhpcyl9O3JldHVybiBufSgpO3QoZy5wcm90b3R5cGUse2dldFBsb3RCYW5kUGF0aDpmdW5jdGlvbihjLGcpe3ZhciBuPXRoaXMuZ2V0UGxvdExpbmVQYXRoKHt2YWx1ZTpnLGZvcmNlOiEwLGFjcm9zc1BhbmVzOnRoaXMub3B0aW9ucy5hY3Jvc3NQYW5lc30pLHI9dGhpcy5nZXRQbG90TGluZVBhdGgoe3ZhbHVlOmMsZm9yY2U6ITAsYWNyb3NzUGFuZXM6dGhpcy5vcHRpb25zLmFjcm9zc1BhbmVzfSkscD1bXSxtPXRoaXMuaG9yaXosZD0xO2M9Yzx0aGlzLm1pbiYmZzx0aGlzLm1pbnx8Yz50aGlzLm1heCYmZz50aGlzLm1heDtpZihyJiZuKXtpZihjKXt2YXIgbD1yLnRvU3RyaW5nKCk9PT1uLnRvU3RyaW5nKCk7ZD0wfWZvcihjPTA7YzxyLmxlbmd0aDtjKz0yKXtnPXJbY107dmFyIGs9cltjKzFdLGY9bltjXSxhPW5bYysxXTsiTSIhPT1nWzBdJiYiTCIhPT1nWzBdfHwiTSIhPT1rWzBdJiYiTCIhPT1rWzBdfHwiTSIhPT1mWzBdJiYiTCIhPT0KZlswXXx8Ik0iIT09YVswXSYmIkwiIT09YVswXXx8KG0mJmZbMV09PT1nWzFdPyhmWzFdKz1kLGFbMV0rPWQpOm18fGZbMl0hPT1nWzJdfHwoZlsyXSs9ZCxhWzJdKz1kKSxwLnB1c2goWyJNIixnWzFdLGdbMl1dLFsiTCIsa1sxXSxrWzJdXSxbIkwiLGFbMV0sYVsyXV0sWyJMIixmWzFdLGZbMl1dLFsiWiJdKSk7cC5pc0ZsYXQ9bH19cmV0dXJuIHB9LGFkZFBsb3RCYW5kOmZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmFkZFBsb3RCYW5kT3JMaW5lKGMsInBsb3RCYW5kcyIpfSxhZGRQbG90TGluZTpmdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5hZGRQbG90QmFuZE9yTGluZShjLCJwbG90TGluZXMiKX0sYWRkUGxvdEJhbmRPckxpbmU6ZnVuY3Rpb24oYyxnKXt2YXIgbj0obmV3IEsodGhpcyxjKSkucmVuZGVyKCkscj10aGlzLnVzZXJPcHRpb25zO2lmKG4pe2lmKGcpe3ZhciBwPXJbZ118fFtdO3AucHVzaChjKTtyW2ddPXB9dGhpcy5wbG90TGluZXNBbmRCYW5kcy5wdXNoKG4pO3RoaXMuX2FkZGVkUGxvdExCPQohMH1yZXR1cm4gbn0scmVtb3ZlUGxvdEJhbmRPckxpbmU6ZnVuY3Rpb24oYyl7Zm9yKHZhciBuPXRoaXMucGxvdExpbmVzQW5kQmFuZHMsZz10aGlzLm9wdGlvbnMsdD10aGlzLnVzZXJPcHRpb25zLHA9bi5sZW5ndGg7cC0tOyluW3BdLmlkPT09YyYmbltwXS5kZXN0cm95KCk7W2cucGxvdExpbmVzfHxbXSx0LnBsb3RMaW5lc3x8W10sZy5wbG90QmFuZHN8fFtdLHQucGxvdEJhbmRzfHxbXV0uZm9yRWFjaChmdW5jdGlvbihtKXtmb3IocD1tLmxlbmd0aDtwLS07KShtW3BdfHx7fSkuaWQ9PT1jJiZKKG0sbVtwXSl9KX0scmVtb3ZlUGxvdEJhbmQ6ZnVuY3Rpb24oYyl7dGhpcy5yZW1vdmVQbG90QmFuZE9yTGluZShjKX0scmVtb3ZlUGxvdExpbmU6ZnVuY3Rpb24oYyl7dGhpcy5yZW1vdmVQbG90QmFuZE9yTGluZShjKX19KTtjLlBsb3RMaW5lT3JCYW5kPUs7cmV0dXJuIGMuUGxvdExpbmVPckJhbmR9KTtPKHEsInBhcnRzL1Rvb2x0aXAuanMiLFtxWyJwYXJ0cy9HbG9iYWxzLmpzIl0sCnFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihnLGMpe3ZhciBxPWcuZG9jLHk9Yy5jbGFtcCxCPWMuY3NzLEg9Yy5kZWZpbmVkLEQ9Yy5kaXNjYXJkRWxlbWVudCxKPWMuZXh0ZW5kLHQ9Yy5maXJlRXZlbnQsRz1jLmZvcm1hdCxMPWMuaXNOdW1iZXIsdj1jLmlzU3RyaW5nLEs9Yy5tZXJnZSxuPWMucGljayxyPWMuc3BsYXQsQz1jLnN5bmNUaW1lb3V0LEk9Yy50aW1lVW5pdHM7IiI7dmFyIHA9ZnVuY3Rpb24oKXtmdW5jdGlvbiBtKGQsYyl7dGhpcy5jb250YWluZXI9dm9pZCAwO3RoaXMuY3Jvc3NoYWlycz1bXTt0aGlzLmRpc3RhbmNlPTA7dGhpcy5pc0hpZGRlbj0hMDt0aGlzLmlzU3RpY2t5PSExO3RoaXMubm93PXt9O3RoaXMub3B0aW9ucz17fTt0aGlzLm91dHNpZGU9ITE7dGhpcy5jaGFydD1kO3RoaXMuaW5pdChkLGMpfW0ucHJvdG90eXBlLmFwcGx5RmlsdGVyPWZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5jaGFydDtkLnJlbmRlcmVyLmRlZmluaXRpb24oe3RhZ05hbWU6ImZpbHRlciIsCmlkOiJkcm9wLXNoYWRvdy0iK2QuaW5kZXgsb3BhY2l0eTouNSxjaGlsZHJlbjpbe3RhZ05hbWU6ImZlR2F1c3NpYW5CbHVyIiwiaW4iOiJTb3VyY2VBbHBoYSIsc3RkRGV2aWF0aW9uOjF9LHt0YWdOYW1lOiJmZU9mZnNldCIsZHg6MSxkeToxfSx7dGFnTmFtZToiZmVDb21wb25lbnRUcmFuc2ZlciIsY2hpbGRyZW46W3t0YWdOYW1lOiJmZUZ1bmNBIix0eXBlOiJsaW5lYXIiLHNsb3BlOi4zfV19LHt0YWdOYW1lOiJmZU1lcmdlIixjaGlsZHJlbjpbe3RhZ05hbWU6ImZlTWVyZ2VOb2RlIn0se3RhZ05hbWU6ImZlTWVyZ2VOb2RlIiwiaW4iOiJTb3VyY2VHcmFwaGljIn1dfV19KTtkLnJlbmRlcmVyLmRlZmluaXRpb24oe3RhZ05hbWU6InN0eWxlIix0ZXh0Q29udGVudDoiLmhpZ2hjaGFydHMtdG9vbHRpcC0iK2QuaW5kZXgrIntmaWx0ZXI6dXJsKCNkcm9wLXNoYWRvdy0iK2QuaW5kZXgrIil9In0pfTttLnByb3RvdHlwZS5ib2R5Rm9ybWF0dGVyPWZ1bmN0aW9uKGQpe3JldHVybiBkLm1hcChmdW5jdGlvbihkKXt2YXIgaz0KZC5zZXJpZXMudG9vbHRpcE9wdGlvbnM7cmV0dXJuKGtbKGQucG9pbnQuZm9ybWF0UHJlZml4fHwicG9pbnQiKSsiRm9ybWF0dGVyIl18fGQucG9pbnQudG9vbHRpcEZvcm1hdHRlcikuY2FsbChkLnBvaW50LGtbKGQucG9pbnQuZm9ybWF0UHJlZml4fHwicG9pbnQiKSsiRm9ybWF0Il18fCIiKX0pfTttLnByb3RvdHlwZS5jbGVhblNwbGl0PWZ1bmN0aW9uKGQpe3RoaXMuY2hhcnQuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIGs9YyYmYy50dDtrJiYoIWsuaXNBY3RpdmV8fGQ/Yy50dD1rLmRlc3Ryb3koKTprLmlzQWN0aXZlPSExKX0pfTttLnByb3RvdHlwZS5kZWZhdWx0Rm9ybWF0dGVyPWZ1bmN0aW9uKGQpe3ZhciBjPXRoaXMucG9pbnRzfHxyKHRoaXMpO3ZhciBrPVtkLnRvb2x0aXBGb290ZXJIZWFkZXJGb3JtYXR0ZXIoY1swXSldO2s9ay5jb25jYXQoZC5ib2R5Rm9ybWF0dGVyKGMpKTtrLnB1c2goZC50b29sdGlwRm9vdGVySGVhZGVyRm9ybWF0dGVyKGNbMF0sITApKTsKcmV0dXJuIGt9O20ucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmxhYmVsJiYodGhpcy5sYWJlbD10aGlzLmxhYmVsLmRlc3Ryb3koKSk7dGhpcy5zcGxpdCYmdGhpcy50dCYmKHRoaXMuY2xlYW5TcGxpdCh0aGlzLmNoYXJ0LCEwKSx0aGlzLnR0PXRoaXMudHQuZGVzdHJveSgpKTt0aGlzLnJlbmRlcmVyJiYodGhpcy5yZW5kZXJlcj10aGlzLnJlbmRlcmVyLmRlc3Ryb3koKSxEKHRoaXMuY29udGFpbmVyKSk7Yy5jbGVhclRpbWVvdXQodGhpcy5oaWRlVGltZXIpO2MuY2xlYXJUaW1lb3V0KHRoaXMudG9vbHRpcFRpbWVvdXQpfTttLnByb3RvdHlwZS5nZXRBbmNob3I9ZnVuY3Rpb24oZCxjKXt2YXIgaz10aGlzLmNoYXJ0LGY9ay5wb2ludGVyLGE9ay5pbnZlcnRlZCxsPWsucGxvdFRvcCx1PWsucGxvdExlZnQsbT0wLHA9MCx3LG47ZD1yKGQpO3RoaXMuZm9sbG93UG9pbnRlciYmYz8oInVuZGVmaW5lZCI9PT10eXBlb2YgYy5jaGFydFgmJihjPWYubm9ybWFsaXplKGMpKSwKZD1bYy5jaGFydFgtdSxjLmNoYXJ0WS1sXSk6ZFswXS50b29sdGlwUG9zP2Q9ZFswXS50b29sdGlwUG9zOihkLmZvckVhY2goZnVuY3Rpb24oZil7dz1mLnNlcmllcy55QXhpcztuPWYuc2VyaWVzLnhBeGlzO20rPWYucGxvdFgrKCFhJiZuP24ubGVmdC11OjApO3ArPShmLnBsb3RMb3c/KGYucGxvdExvdytmLnBsb3RIaWdoKS8yOmYucGxvdFkpKyghYSYmdz93LnRvcC1sOjApfSksbS89ZC5sZW5ndGgscC89ZC5sZW5ndGgsZD1bYT9rLnBsb3RXaWR0aC1wOm0sdGhpcy5zaGFyZWQmJiFhJiYxPGQubGVuZ3RoJiZjP2MuY2hhcnRZLWw6YT9rLnBsb3RIZWlnaHQtbTpwXSk7cmV0dXJuIGQubWFwKE1hdGgucm91bmQpfTttLnByb3RvdHlwZS5nZXREYXRlRm9ybWF0PWZ1bmN0aW9uKGQsYyxrLGYpe3ZhciBhPXRoaXMuY2hhcnQudGltZSxsPWEuZGF0ZUZvcm1hdCgiJW0tJWQgJUg6JU06JVMuJUwiLGMpLHU9e21pbGxpc2Vjb25kOjE1LHNlY29uZDoxMixtaW51dGU6OSxob3VyOjYsZGF5OjN9LAptPSJtaWxsaXNlY29uZCI7Zm9yKHAgaW4gSSl7aWYoZD09PUkud2VlayYmK2EuZGF0ZUZvcm1hdCgiJXciLGMpPT09ayYmIjAwOjAwOjAwLjAwMCI9PT1sLnN1YnN0cig2KSl7dmFyIHA9IndlZWsiO2JyZWFrfWlmKElbcF0+ZCl7cD1tO2JyZWFrfWlmKHVbcF0mJmwuc3Vic3RyKHVbcF0pIT09IjAxLTAxIDAwOjAwOjAwLjAwMCIuc3Vic3RyKHVbcF0pKWJyZWFrOyJ3ZWVrIiE9PXAmJihtPXApfWlmKHApdmFyIHc9YS5yZXNvbHZlRFRMRm9ybWF0KGZbcF0pLm1haW47cmV0dXJuIHd9O20ucHJvdG90eXBlLmdldExhYmVsPWZ1bmN0aW9uKCl7dmFyIGQsYyxrPXRoaXMsZj10aGlzLmNoYXJ0LnJlbmRlcmVyLGE9dGhpcy5jaGFydC5zdHlsZWRNb2RlLG09dGhpcy5vcHRpb25zLHU9InRvb2x0aXAiKyhIKG0uY2xhc3NOYW1lKT8iICIrbS5jbGFzc05hbWU6IiIpLHA9KG51bGw9PT0oZD1tLnN0eWxlKXx8dm9pZCAwPT09ZD92b2lkIDA6ZC5wb2ludGVyRXZlbnRzKXx8KCF0aGlzLmZvbGxvd1BvaW50ZXImJgptLnN0aWNrT25Db250YWN0PyJhdXRvIjoibm9uZSIpLG47ZD1mdW5jdGlvbigpe2suaW5Db250YWN0PSEwfTt2YXIgdz1mdW5jdGlvbigpe3ZhciBhPWsuY2hhcnQuaG92ZXJTZXJpZXM7ay5pbkNvbnRhY3Q9ITE7aWYoYSYmYS5vbk1vdXNlT3V0KWEub25Nb3VzZU91dCgpfTtpZighdGhpcy5sYWJlbCl7dGhpcy5vdXRzaWRlJiYodGhpcy5jb250YWluZXI9bj1nLmRvYy5jcmVhdGVFbGVtZW50KCJkaXYiKSxuLmNsYXNzTmFtZT0iaGlnaGNoYXJ0cy10b29sdGlwLWNvbnRhaW5lciIsQihuLHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDoiMXB4Iixwb2ludGVyRXZlbnRzOnAsekluZGV4OjN9KSxnLmRvYy5ib2R5LmFwcGVuZENoaWxkKG4pLHRoaXMucmVuZGVyZXI9Zj1uZXcgZy5SZW5kZXJlcihuLDAsMCxudWxsPT09KGM9dGhpcy5jaGFydC5vcHRpb25zLmNoYXJ0KXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5zdHlsZSx2b2lkIDAsdm9pZCAwLGYuc3R5bGVkTW9kZSkpO3RoaXMuc3BsaXQ/CnRoaXMubGFiZWw9Zi5nKHUpOih0aGlzLmxhYmVsPWYubGFiZWwoIiIsMCwwLG0uc2hhcGV8fCJjYWxsb3V0IixudWxsLG51bGwsbS51c2VIVE1MLG51bGwsdSkuYXR0cih7cGFkZGluZzptLnBhZGRpbmcscjptLmJvcmRlclJhZGl1c30pLGF8fHRoaXMubGFiZWwuYXR0cih7ZmlsbDptLmJhY2tncm91bmRDb2xvciwic3Ryb2tlLXdpZHRoIjptLmJvcmRlcldpZHRofSkuY3NzKG0uc3R5bGUpLmNzcyh7cG9pbnRlckV2ZW50czpwfSkuc2hhZG93KG0uc2hhZG93KSk7YSYmKHRoaXMuYXBwbHlGaWx0ZXIoKSx0aGlzLmxhYmVsLmFkZENsYXNzKCJoaWdoY2hhcnRzLXRvb2x0aXAtIit0aGlzLmNoYXJ0LmluZGV4KSk7aWYoay5vdXRzaWRlJiYhay5zcGxpdCl7dmFyIHI9dGhpcy5sYWJlbCxGPXIueFNldHRlcix0PXIueVNldHRlcjtyLnhTZXR0ZXI9ZnVuY3Rpb24oYSl7Ri5jYWxsKHIsay5kaXN0YW5jZSk7bi5zdHlsZS5sZWZ0PWErInB4In07ci55U2V0dGVyPWZ1bmN0aW9uKGEpe3QuY2FsbChyLAprLmRpc3RhbmNlKTtuLnN0eWxlLnRvcD1hKyJweCJ9fXRoaXMubGFiZWwub24oIm1vdXNlZW50ZXIiLGQpLm9uKCJtb3VzZWxlYXZlIix3KS5hdHRyKHt6SW5kZXg6OH0pLmFkZCgpfXJldHVybiB0aGlzLmxhYmVsfTttLnByb3RvdHlwZS5nZXRQb3NpdGlvbj1mdW5jdGlvbihkLGMsayl7dmFyIGY9dGhpcy5jaGFydCxhPXRoaXMuZGlzdGFuY2UsbD17fSxtPWYuaW52ZXJ0ZWQmJmsuaHx8MCxwLGc9dGhpcy5vdXRzaWRlLHc9Zz9xLmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aC0yKmE6Zi5jaGFydFdpZHRoLHI9Zz9NYXRoLm1heChxLmJvZHkuc2Nyb2xsSGVpZ2h0LHEuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodCxxLmJvZHkub2Zmc2V0SGVpZ2h0LHEuZG9jdW1lbnRFbGVtZW50Lm9mZnNldEhlaWdodCxxLmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpOmYuY2hhcnRIZWlnaHQsRj1mLnBvaW50ZXIuZ2V0Q2hhcnRQb3NpdGlvbigpLHQ9Zi5jb250YWluZXJTY2FsaW5nLAplPWZ1bmN0aW9uKGIpe3JldHVybiB0P2IqdC5zY2FsZVg6Yn0sYj1mdW5jdGlvbihiKXtyZXR1cm4gdD9iKnQuc2NhbGVZOmJ9LGg9ZnVuY3Rpb24oaCl7dmFyIGw9IngiPT09aDtyZXR1cm5baCxsP3c6cixsP2Q6Y10uY29uY2F0KGc/W2w/ZShkKTpiKGMpLGw/Ri5sZWZ0LWErZShrLnBsb3RYK2YucGxvdExlZnQpOkYudG9wLWErYihrLnBsb3RZK2YucGxvdFRvcCksMCxsP3c6cl06W2w/ZDpjLGw/ay5wbG90WCtmLnBsb3RMZWZ0OmsucGxvdFkrZi5wbG90VG9wLGw/Zi5wbG90TGVmdDpmLnBsb3RUb3AsbD9mLnBsb3RMZWZ0K2YucGxvdFdpZHRoOmYucGxvdFRvcCtmLnBsb3RIZWlnaHRdKX0sej1oKCJ5IikseD1oKCJ4IiksQz0hdGhpcy5mb2xsb3dQb2ludGVyJiZuKGsudHRCZWxvdywhZi5pbnZlcnRlZD09PSEhay5uZWdhdGl2ZSksdj1mdW5jdGlvbihoLGYsZCxjLGssdSxwKXt2YXIgeD0ieSI9PT1oP2IoYSk6ZShhKSx3PShkLWMpLzIsbj1jPGstYSxBPWsrYStjPGYsZz1rLXgtCmQrdztrPWsreC13O2lmKEMmJkEpbFtoXT1rO2Vsc2UgaWYoIUMmJm4pbFtoXT1nO2Vsc2UgaWYobilsW2hdPU1hdGgubWluKHAtYywwPmctbT9nOmctbSk7ZWxzZSBpZihBKWxbaF09TWF0aC5tYXgodSxrK20rZD5mP2s6ayttKTtlbHNlIHJldHVybiExfSxJPWZ1bmN0aW9uKGIsZSxoLGYsZCl7dmFyIGM7ZDxhfHxkPmUtYT9jPSExOmxbYl09ZDxoLzI/MTpkPmUtZi8yP2UtZi0yOmQtaC8yO3JldHVybiBjfSxWPWZ1bmN0aW9uKGIpe3ZhciBhPXo7ej14O3g9YTtwPWJ9LEc9ZnVuY3Rpb24oKXshMSE9PXYuYXBwbHkoMCx6KT8hMSE9PUkuYXBwbHkoMCx4KXx8cHx8KFYoITApLEcoKSk6cD9sLng9bC55PTA6KFYoITApLEcoKSl9OyhmLmludmVydGVkfHwxPHRoaXMubGVuKSYmVigpO0coKTtyZXR1cm4gbH07bS5wcm90b3R5cGUuZ2V0WERhdGVGb3JtYXQ9ZnVuY3Rpb24oZCxjLGspe2M9Yy5kYXRlVGltZUxhYmVsRm9ybWF0czt2YXIgZj1rJiZrLmNsb3Nlc3RQb2ludFJhbmdlO3JldHVybihmPwp0aGlzLmdldERhdGVGb3JtYXQoZixkLngsay5vcHRpb25zLnN0YXJ0T2ZXZWVrLGMpOmMuZGF5KXx8Yy55ZWFyfTttLnByb3RvdHlwZS5oaWRlPWZ1bmN0aW9uKGQpe3ZhciBsPXRoaXM7Yy5jbGVhclRpbWVvdXQodGhpcy5oaWRlVGltZXIpO2Q9bihkLHRoaXMub3B0aW9ucy5oaWRlRGVsYXksNTAwKTt0aGlzLmlzSGlkZGVufHwodGhpcy5oaWRlVGltZXI9QyhmdW5jdGlvbigpe2wuZ2V0TGFiZWwoKS5mYWRlT3V0KGQ/dm9pZCAwOmQpO2wuaXNIaWRkZW49ITB9LGQpKX07bS5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihkLGMpe3RoaXMuY2hhcnQ9ZDt0aGlzLm9wdGlvbnM9Yzt0aGlzLmNyb3NzaGFpcnM9W107dGhpcy5ub3c9e3g6MCx5OjB9O3RoaXMuaXNIaWRkZW49ITA7dGhpcy5zcGxpdD1jLnNwbGl0JiYhZC5pbnZlcnRlZCYmIWQucG9sYXI7dGhpcy5zaGFyZWQ9Yy5zaGFyZWR8fHRoaXMuc3BsaXQ7dGhpcy5vdXRzaWRlPW4oYy5vdXRzaWRlLCEoIWQuc2Nyb2xsYWJsZVBpeGVsc1gmJgohZC5zY3JvbGxhYmxlUGl4ZWxzWSkpfTttLnByb3RvdHlwZS5pc1N0aWNreU9uQ29udGFjdD1mdW5jdGlvbigpe3JldHVybiEodGhpcy5mb2xsb3dQb2ludGVyfHwhdGhpcy5vcHRpb25zLnN0aWNrT25Db250YWN0fHwhdGhpcy5pbkNvbnRhY3QpfTttLnByb3RvdHlwZS5tb3ZlPWZ1bmN0aW9uKGQsbCxrLGYpe3ZhciBhPXRoaXMsbT1hLm5vdyx1PSExIT09YS5vcHRpb25zLmFuaW1hdGlvbiYmIWEuaXNIaWRkZW4mJigxPE1hdGguYWJzKGQtbS54KXx8MTxNYXRoLmFicyhsLW0ueSkpLHA9YS5mb2xsb3dQb2ludGVyfHwxPGEubGVuO0oobSx7eDp1PygyKm0ueCtkKS8zOmQseTp1PyhtLnkrbCkvMjpsLGFuY2hvclg6cD92b2lkIDA6dT8oMiptLmFuY2hvclgraykvMzprLGFuY2hvclk6cD92b2lkIDA6dT8obS5hbmNob3JZK2YpLzI6Zn0pO2EuZ2V0TGFiZWwoKS5hdHRyKG0pO2EuZHJhd1RyYWNrZXIoKTt1JiYoYy5jbGVhclRpbWVvdXQodGhpcy50b29sdGlwVGltZW91dCksdGhpcy50b29sdGlwVGltZW91dD0Kc2V0VGltZW91dChmdW5jdGlvbigpe2EmJmEubW92ZShkLGwsayxmKX0sMzIpKX07bS5wcm90b3R5cGUucmVmcmVzaD1mdW5jdGlvbihkLGwpe3ZhciBrPXRoaXMuY2hhcnQsZj10aGlzLm9wdGlvbnMsYT1kLG09e30sdT1bXSxwPWYuZm9ybWF0dGVyfHx0aGlzLmRlZmF1bHRGb3JtYXR0ZXI7bT10aGlzLnNoYXJlZDt2YXIgZz1rLnN0eWxlZE1vZGU7aWYoZi5lbmFibGVkKXtjLmNsZWFyVGltZW91dCh0aGlzLmhpZGVUaW1lcik7dGhpcy5mb2xsb3dQb2ludGVyPXIoYSlbMF0uc2VyaWVzLnRvb2x0aXBPcHRpb25zLmZvbGxvd1BvaW50ZXI7dmFyIHc9dGhpcy5nZXRBbmNob3IoYSxsKTtsPXdbMF07dmFyIE09d1sxXTshbXx8YS5zZXJpZXMmJmEuc2VyaWVzLm5vU2hhcmVkVG9vbHRpcD9tPWEuZ2V0TGFiZWxDb25maWcoKTooay5wb2ludGVyLmFwcGx5SW5hY3RpdmVTdGF0ZShhKSxhLmZvckVhY2goZnVuY3Rpb24oYSl7YS5zZXRTdGF0ZSgiaG92ZXIiKTt1LnB1c2goYS5nZXRMYWJlbENvbmZpZygpKX0pLAptPXt4OmFbMF0uY2F0ZWdvcnkseTphWzBdLnl9LG0ucG9pbnRzPXUsYT1hWzBdKTt0aGlzLmxlbj11Lmxlbmd0aDtrPXAuY2FsbChtLHRoaXMpO3A9YS5zZXJpZXM7dGhpcy5kaXN0YW5jZT1uKHAudG9vbHRpcE9wdGlvbnMuZGlzdGFuY2UsMTYpOyExPT09az90aGlzLmhpZGUoKToodGhpcy5zcGxpdD90aGlzLnJlbmRlclNwbGl0KGsscihkKSk6KGQ9dGhpcy5nZXRMYWJlbCgpLGYuc3R5bGUud2lkdGgmJiFnfHxkLmNzcyh7d2lkdGg6dGhpcy5jaGFydC5zcGFjaW5nQm94LndpZHRoKyJweCJ9KSxkLmF0dHIoe3RleHQ6ayYmay5qb2luP2suam9pbigiIik6a30pLGQucmVtb3ZlQ2xhc3MoL2hpZ2hjaGFydHMtY29sb3ItW1xkXSsvZykuYWRkQ2xhc3MoImhpZ2hjaGFydHMtY29sb3ItIituKGEuY29sb3JJbmRleCxwLmNvbG9ySW5kZXgpKSxnfHxkLmF0dHIoe3N0cm9rZTpmLmJvcmRlckNvbG9yfHxhLmNvbG9yfHxwLmNvbG9yfHwiIzY2NjY2NiJ9KSx0aGlzLnVwZGF0ZVBvc2l0aW9uKHtwbG90WDpsLApwbG90WTpNLG5lZ2F0aXZlOmEubmVnYXRpdmUsdHRCZWxvdzphLnR0QmVsb3csaDp3WzJdfHwwfSkpLHRoaXMuaXNIaWRkZW4mJnRoaXMubGFiZWwmJnRoaXMubGFiZWwuYXR0cih7b3BhY2l0eToxfSkuc2hvdygpLHRoaXMuaXNIaWRkZW49ITEpO3QodGhpcywicmVmcmVzaCIpfX07bS5wcm90b3R5cGUucmVuZGVyU3BsaXQ9ZnVuY3Rpb24oZCxjKXtmdW5jdGlvbiBrKGIsYSxlLGgsZil7dm9pZCAwPT09ZiYmKGY9ITApO2U/KGE9Vj8wOkQsYj15KGItaC8yLHEubGVmdCxxLnJpZ2h0LWgpKTooYS09RyxiPWY/Yi1oLXo6Yit6LGI9eShiLGY/YjpxLmxlZnQscS5yaWdodCkpO3JldHVybnt4OmIseTphfX12YXIgZj10aGlzLGE9Zi5jaGFydCxsPWYuY2hhcnQsbT1sLnBsb3RIZWlnaHQscD1sLnBsb3RMZWZ0LHI9bC5wbG90VG9wLHc9bC5wb2ludGVyLE09bC5yZW5kZXJlcixGPWwuc2Nyb2xsYWJsZVBpeGVsc1ksdD12b2lkIDA9PT1GPzA6RjtGPWwuc2Nyb2xsaW5nQ29udGFpbmVyO0Y9CnZvaWQgMD09PUY/e3Njcm9sbExlZnQ6MCxzY3JvbGxUb3A6MH06Rjt2YXIgZT1GLnNjcm9sbExlZnQsYj1GLnNjcm9sbFRvcCxoPWwuc3R5bGVkTW9kZSx6PWYuZGlzdGFuY2UseD1mLm9wdGlvbnMsQz1mLm9wdGlvbnMucG9zaXRpb25lcixxPXtsZWZ0OmUscmlnaHQ6ZStsLmNoYXJ0V2lkdGgsdG9wOmIsYm90dG9tOmIrbC5jaGFydEhlaWdodH0sST1mLmdldExhYmVsKCksVj0hKCFhLnhBeGlzWzBdfHwhYS54QXhpc1swXS5vcHBvc2l0ZSksRz1yK2IsSz0wLEQ9bS10O3YoZCkmJihkPVshMSxkXSk7ZD1kLnNsaWNlKDAsYy5sZW5ndGgrMSkucmVkdWNlKGZ1bmN0aW9uKGEsZSxkKXtpZighMSE9PWUmJiIiIT09ZSl7ZD1jW2QtMV18fHtpc0hlYWRlcjohMCxwbG90WDpjWzBdLnBsb3RYLHBsb3RZOm0sc2VyaWVzOnt9fTt2YXIgbD1kLmlzSGVhZGVyLHU9bD9mOmQuc2VyaWVzLHc9dS50dCxnPWQuaXNIZWFkZXI7dmFyIEE9ZC5zZXJpZXM7dmFyIEU9ImhpZ2hjaGFydHMtY29sb3ItIisKbihkLmNvbG9ySW5kZXgsQS5jb2xvckluZGV4LCJub25lIik7d3x8KHc9e3BhZGRpbmc6eC5wYWRkaW5nLHI6eC5ib3JkZXJSYWRpdXN9LGh8fCh3LmZpbGw9eC5iYWNrZ3JvdW5kQ29sb3Isd1sic3Ryb2tlLXdpZHRoIl09eC5ib3JkZXJXaWR0aCksdz1NLmxhYmVsKCIiLDAsMCx4W2c/ImhlYWRlclNoYXBlIjoic2hhcGUiXXx8ImNhbGxvdXQiLHZvaWQgMCx2b2lkIDAseC51c2VIVE1MKS5hZGRDbGFzcygoZz8iaGlnaGNoYXJ0cy10b29sdGlwLWhlYWRlciAiOiIiKSsiaGlnaGNoYXJ0cy10b29sdGlwLWJveCAiK0UpLmF0dHIodykuYWRkKEkpKTt3LmlzQWN0aXZlPSEwO3cuYXR0cih7dGV4dDplfSk7aHx8dy5jc3MoeC5zdHlsZSkuc2hhZG93KHguc2hhZG93KS5hdHRyKHtzdHJva2U6eC5ib3JkZXJDb2xvcnx8ZC5jb2xvcnx8QS5jb2xvcnx8IiMzMzMzMzMifSk7ZT11LnR0PXc7Zz1lLmdldEJCb3goKTt1PWcud2lkdGgrZS5zdHJva2VXaWR0aCgpO2wmJihLPWcuaGVpZ2h0LEQrPQpLLFYmJihHLT1LKSk7QT1kLnBsb3RYO0E9dm9pZCAwPT09QT8wOkE7RT1kLnBsb3RZO0U9dm9pZCAwPT09RT8wOkU7dmFyIEY9ZC5zZXJpZXM7aWYoZC5pc0hlYWRlcil7QT1wK0E7dmFyIFM9cittLzJ9ZWxzZSB3PUYueEF4aXMsRj1GLnlBeGlzLEE9dy5wb3MreShBLC16LHcubGVuK3opLEYucG9zK0U+PWIrciYmRi5wb3MrRTw9YityK20tdCYmKFM9Ri5wb3MrRSk7QT15KEEscS5sZWZ0LXoscS5yaWdodCt6KTsibnVtYmVyIj09PXR5cGVvZiBTPyhnPWcuaGVpZ2h0KzEsRT1DP0MuY2FsbChmLHUsZyxkKTprKEEsUyxsLHUpLGEucHVzaCh7YWxpZ246Qz8wOnZvaWQgMCxhbmNob3JYOkEsYW5jaG9yWTpTLGJveFdpZHRoOnUscG9pbnQ6ZCxyYW5rOm4oRS5yYW5rLGw/MTowKSxzaXplOmcsdGFyZ2V0OkUueSx0dDplLHg6RS54fSkpOmUuaXNBY3RpdmU9ITF9cmV0dXJuIGF9LFtdKTshQyYmZC5zb21lKGZ1bmN0aW9uKGIpe3JldHVybiBiLng8cS5sZWZ0fSkmJihkPWQubWFwKGZ1bmN0aW9uKGIpe3ZhciBhPQprKGIuYW5jaG9yWCxiLmFuY2hvclksYi5wb2ludC5pc0hlYWRlcixiLmJveFdpZHRoLCExKTtyZXR1cm4gSihiLHt0YXJnZXQ6YS55LHg6YS54fSl9KSk7Zi5jbGVhblNwbGl0KCk7Zy5kaXN0cmlidXRlKGQsRCk7ZC5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZhciBhPWIucG9zO2IudHQuYXR0cih7dmlzaWJpbGl0eToidW5kZWZpbmVkIj09PXR5cGVvZiBhPyJoaWRkZW4iOiJpbmhlcml0Iix4OmIueCx5OmErRyxhbmNob3JYOmIuYW5jaG9yWCxhbmNob3JZOmIuYW5jaG9yWX0pfSk7ZD1mLmNvbnRhaW5lcjthPWYucmVuZGVyZXI7Zi5vdXRzaWRlJiZkJiZhJiYobD1JLmdldEJCb3goKSxhLnNldFNpemUobC53aWR0aCtsLngsbC5oZWlnaHQrbC55LCExKSx3PXcuZ2V0Q2hhcnRQb3NpdGlvbigpLGQuc3R5bGUubGVmdD13LmxlZnQrInB4IixkLnN0eWxlLnRvcD13LnRvcCsicHgiKX07bS5wcm90b3R5cGUuZHJhd1RyYWNrZXI9ZnVuY3Rpb24oKXtpZih0aGlzLmZvbGxvd1BvaW50ZXJ8fCF0aGlzLm9wdGlvbnMuc3RpY2tPbkNvbnRhY3QpdGhpcy50cmFja2VyJiYKdGhpcy50cmFja2VyLmRlc3Ryb3koKTtlbHNle3ZhciBkPXRoaXMuY2hhcnQsYz10aGlzLmxhYmVsLGs9ZC5ob3ZlclBvaW50O2lmKGMmJmspe3ZhciBmPXt4OjAseTowLHdpZHRoOjAsaGVpZ2h0OjB9O2s9dGhpcy5nZXRBbmNob3Ioayk7dmFyIGE9Yy5nZXRCQm94KCk7a1swXSs9ZC5wbG90TGVmdC1jLnRyYW5zbGF0ZVg7a1sxXSs9ZC5wbG90VG9wLWMudHJhbnNsYXRlWTtmLng9TWF0aC5taW4oMCxrWzBdKTtmLnk9TWF0aC5taW4oMCxrWzFdKTtmLndpZHRoPTA+a1swXT9NYXRoLm1heChNYXRoLmFicyhrWzBdKSxhLndpZHRoLWtbMF0pOk1hdGgubWF4KE1hdGguYWJzKGtbMF0pLGEud2lkdGgpO2YuaGVpZ2h0PTA+a1sxXT9NYXRoLm1heChNYXRoLmFicyhrWzFdKSxhLmhlaWdodC1NYXRoLmFicyhrWzFdKSk6TWF0aC5tYXgoTWF0aC5hYnMoa1sxXSksYS5oZWlnaHQpO3RoaXMudHJhY2tlcj90aGlzLnRyYWNrZXIuYXR0cihmKToodGhpcy50cmFja2VyPWMucmVuZGVyZXIucmVjdChmKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy10cmFja2VyIikuYWRkKGMpLApkLnN0eWxlZE1vZGV8fHRoaXMudHJhY2tlci5hdHRyKHtmaWxsOiJyZ2JhKDAsMCwwLDApIn0pKX19fTttLnByb3RvdHlwZS5zdHlsZWRNb2RlRm9ybWF0PWZ1bmN0aW9uKGQpe3JldHVybiBkLnJlcGxhY2UoJ3N0eWxlPSJmb250LXNpemU6IDEwcHgiJywnY2xhc3M9ImhpZ2hjaGFydHMtaGVhZGVyIicpLnJlcGxhY2UoL3N0eWxlPSJjb2xvcjp7KHBvaW50fHNlcmllcylcLmNvbG9yfSIvZywnY2xhc3M9ImhpZ2hjaGFydHMtY29sb3IteyQxLmNvbG9ySW5kZXh9IicpfTttLnByb3RvdHlwZS50b29sdGlwRm9vdGVySGVhZGVyRm9ybWF0dGVyPWZ1bmN0aW9uKGQsYyl7dmFyIGs9Yz8iZm9vdGVyIjoiaGVhZGVyIixmPWQuc2VyaWVzLGE9Zi50b29sdGlwT3B0aW9ucyxsPWEueERhdGVGb3JtYXQsbT1mLnhBeGlzLHA9bSYmImRhdGV0aW1lIj09PW0ub3B0aW9ucy50eXBlJiZMKGQua2V5KSxuPWFbaysiRm9ybWF0Il07Yz17aXNGb290ZXI6YyxsYWJlbENvbmZpZzpkfTt0KHRoaXMsImhlYWRlckZvcm1hdHRlciIsCmMsZnVuY3Rpb24oYyl7cCYmIWwmJihsPXRoaXMuZ2V0WERhdGVGb3JtYXQoZCxhLG0pKTtwJiZsJiYoZC5wb2ludCYmZC5wb2ludC50b29sdGlwRGF0ZUtleXN8fFsia2V5Il0pLmZvckVhY2goZnVuY3Rpb24oYSl7bj1uLnJlcGxhY2UoIntwb2ludC4iK2ErIn0iLCJ7cG9pbnQuIithKyI6IitsKyJ9Iil9KTtmLmNoYXJ0LnN0eWxlZE1vZGUmJihuPXRoaXMuc3R5bGVkTW9kZUZvcm1hdChuKSk7Yy50ZXh0PUcobix7cG9pbnQ6ZCxzZXJpZXM6Zn0sdGhpcy5jaGFydCl9KTtyZXR1cm4gYy50ZXh0fTttLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZCl7dGhpcy5kZXN0cm95KCk7SyghMCx0aGlzLmNoYXJ0Lm9wdGlvbnMudG9vbHRpcC51c2VyT3B0aW9ucyxkKTt0aGlzLmluaXQodGhpcy5jaGFydCxLKCEwLHRoaXMub3B0aW9ucyxkKSl9O20ucHJvdG90eXBlLnVwZGF0ZVBvc2l0aW9uPWZ1bmN0aW9uKGQpe3ZhciBjPXRoaXMuY2hhcnQsaz1jLnBvaW50ZXIsZj10aGlzLmdldExhYmVsKCksCmE9ZC5wbG90WCtjLnBsb3RMZWZ0LG09ZC5wbG90WStjLnBsb3RUb3A7az1rLmdldENoYXJ0UG9zaXRpb24oKTtkPSh0aGlzLm9wdGlvbnMucG9zaXRpb25lcnx8dGhpcy5nZXRQb3NpdGlvbikuY2FsbCh0aGlzLGYud2lkdGgsZi5oZWlnaHQsZCk7aWYodGhpcy5vdXRzaWRlKXt2YXIgcD0odGhpcy5vcHRpb25zLmJvcmRlcldpZHRofHwwKSsyKnRoaXMuZGlzdGFuY2U7dGhpcy5yZW5kZXJlci5zZXRTaXplKGYud2lkdGgrcCxmLmhlaWdodCtwLCExKTtpZihjPWMuY29udGFpbmVyU2NhbGluZylCKHRoaXMuY29udGFpbmVyLHt0cmFuc2Zvcm06InNjYWxlKCIrYy5zY2FsZVgrIiwgIitjLnNjYWxlWSsiKSJ9KSxhKj1jLnNjYWxlWCxtKj1jLnNjYWxlWTthKz1rLmxlZnQtZC54O20rPWsudG9wLWQueX10aGlzLm1vdmUoTWF0aC5yb3VuZChkLngpLE1hdGgucm91bmQoZC55fHwwKSxhLG0pfTtyZXR1cm4gbX0oKTtnLlRvb2x0aXA9cDtyZXR1cm4gZy5Ub29sdGlwfSk7TyhxLCJwYXJ0cy9Qb2ludGVyLmpzIiwKW3FbInBhcnRzL0NvbG9yLmpzIl0scVsicGFydHMvR2xvYmFscy5qcyJdLHFbInBhcnRzL1Rvb2x0aXAuanMiXSxxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyxjLHEseSl7dmFyIEI9Zy5wYXJzZSxIPWMuY2hhcnRzLEQ9Yy5ub29wLEo9eS5hZGRFdmVudCx0PXkuYXR0cixHPXkuY3NzLEw9eS5kZWZpbmVkLHY9eS5leHRlbmQsSz15LmZpbmQsbj15LmZpcmVFdmVudCxyPXkuaXNOdW1iZXIsQz15LmlzT2JqZWN0LEk9eS5vYmplY3RFYWNoLHA9eS5vZmZzZXQsbT15LnBpY2ssZD15LnNwbGF0OyIiO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGQsZil7dGhpcy5sYXN0VmFsaWRUb3VjaD17fTt0aGlzLnBpbmNoRG93bj1bXTt0aGlzLnJ1bkNoYXJ0Q2xpY2s9ITE7dGhpcy5jaGFydD1kO3RoaXMuaGFzRHJhZ2dlZD0hMTt0aGlzLm9wdGlvbnM9Zjt0aGlzLnVuYmluZENvbnRhaW5lck1vdXNlTGVhdmU9ZnVuY3Rpb24oKXt9O3RoaXMuaW5pdChkLGYpfWwucHJvdG90eXBlLmFwcGx5SW5hY3RpdmVTdGF0ZT0KZnVuY3Rpb24oZCl7dmFyIGY9W10sYTsoZHx8W10pLmZvckVhY2goZnVuY3Rpb24oZCl7YT1kLnNlcmllcztmLnB1c2goYSk7YS5saW5rZWRQYXJlbnQmJmYucHVzaChhLmxpbmtlZFBhcmVudCk7YS5saW5rZWRTZXJpZXMmJihmPWYuY29uY2F0KGEubGlua2VkU2VyaWVzKSk7YS5uYXZpZ2F0b3JTZXJpZXMmJmYucHVzaChhLm5hdmlnYXRvclNlcmllcyl9KTt0aGlzLmNoYXJ0LnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpey0xPT09Zi5pbmRleE9mKGEpP2Euc2V0U3RhdGUoImluYWN0aXZlIiwhMCk6YS5vcHRpb25zLmluYWN0aXZlT3RoZXJQb2ludHMmJmEuc2V0QWxsUG9pbnRzVG9TdGF0ZSgiaW5hY3RpdmUiKX0pfTtsLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dmFyIGQ9dGhpczsidW5kZWZpbmVkIiE9PXR5cGVvZiBkLnVuRG9jTW91c2VNb3ZlJiZkLnVuRG9jTW91c2VNb3ZlKCk7dGhpcy51bmJpbmRDb250YWluZXJNb3VzZUxlYXZlKCk7Yy5jaGFydENvdW50fHwoYy51bmJpbmREb2N1bWVudE1vdXNlVXAmJgooYy51bmJpbmREb2N1bWVudE1vdXNlVXA9Yy51bmJpbmREb2N1bWVudE1vdXNlVXAoKSksYy51bmJpbmREb2N1bWVudFRvdWNoRW5kJiYoYy51bmJpbmREb2N1bWVudFRvdWNoRW5kPWMudW5iaW5kRG9jdW1lbnRUb3VjaEVuZCgpKSk7Y2xlYXJJbnRlcnZhbChkLnRvb2x0aXBUaW1lb3V0KTtJKGQsZnVuY3Rpb24oZixhKXtkW2FdPXZvaWQgMH0pfTtsLnByb3RvdHlwZS5kcmFnPWZ1bmN0aW9uKGQpe3ZhciBmPXRoaXMuY2hhcnQsYT1mLm9wdGlvbnMuY2hhcnQsYz1kLmNoYXJ0WCxrPWQuY2hhcnRZLGw9dGhpcy56b29tSG9yLG09dGhpcy56b29tVmVydCxwPWYucGxvdExlZnQsbj1mLnBsb3RUb3AsZz1mLnBsb3RXaWR0aCxyPWYucGxvdEhlaWdodCxlPXRoaXMuc2VsZWN0aW9uTWFya2VyLGI9dGhpcy5tb3VzZURvd25YfHwwLGg9dGhpcy5tb3VzZURvd25ZfHwwLHo9QyhhLnBhbm5pbmcpP2EucGFubmluZyYmYS5wYW5uaW5nLmVuYWJsZWQ6YS5wYW5uaW5nLHg9YS5wYW5LZXkmJmRbYS5wYW5LZXkrCiJLZXkiXTtpZighZXx8IWUudG91Y2gpaWYoYzxwP2M9cDpjPnArZyYmKGM9cCtnKSxrPG4/az1uOms+bityJiYoaz1uK3IpLHRoaXMuaGFzRHJhZ2dlZD1NYXRoLnNxcnQoTWF0aC5wb3coYi1jLDIpK01hdGgucG93KGgtaywyKSksMTA8dGhpcy5oYXNEcmFnZ2VkKXt2YXIgdD1mLmlzSW5zaWRlUGxvdChiLXAsaC1uKTtmLmhhc0NhcnRlc2lhblNlcmllcyYmKHRoaXMuem9vbVh8fHRoaXMuem9vbVkpJiZ0JiYheCYmIWUmJih0aGlzLnNlbGVjdGlvbk1hcmtlcj1lPWYucmVuZGVyZXIucmVjdChwLG4sbD8xOmcsbT8xOnIsMCkuYXR0cih7ImNsYXNzIjoiaGlnaGNoYXJ0cy1zZWxlY3Rpb24tbWFya2VyIix6SW5kZXg6N30pLmFkZCgpLGYuc3R5bGVkTW9kZXx8ZS5hdHRyKHtmaWxsOmEuc2VsZWN0aW9uTWFya2VyRmlsbHx8QigiIzMzNWNhZCIpLnNldE9wYWNpdHkoLjI1KS5nZXQoKX0pKTtlJiZsJiYoYy09YixlLmF0dHIoe3dpZHRoOk1hdGguYWJzKGMpLHg6KDA8Yz8wOmMpK2J9KSk7CmUmJm0mJihjPWstaCxlLmF0dHIoe2hlaWdodDpNYXRoLmFicyhjKSx5OigwPGM/MDpjKStofSkpO3QmJiFlJiZ6JiZmLnBhbihkLGEucGFubmluZyl9fTtsLnByb3RvdHlwZS5kcmFnU3RhcnQ9ZnVuY3Rpb24oZCl7dmFyIGY9dGhpcy5jaGFydDtmLm1vdXNlSXNEb3duPWQudHlwZTtmLmNhbmNlbENsaWNrPSExO2YubW91c2VEb3duWD10aGlzLm1vdXNlRG93blg9ZC5jaGFydFg7Zi5tb3VzZURvd25ZPXRoaXMubW91c2VEb3duWT1kLmNoYXJ0WX07bC5wcm90b3R5cGUuZHJvcD1mdW5jdGlvbihkKXt2YXIgZj10aGlzLGE9dGhpcy5jaGFydCxjPXRoaXMuaGFzUGluY2hlZDtpZih0aGlzLnNlbGVjdGlvbk1hcmtlcil7dmFyIGs9e29yaWdpbmFsRXZlbnQ6ZCx4QXhpczpbXSx5QXhpczpbXX0sbD10aGlzLnNlbGVjdGlvbk1hcmtlcixtPWwuYXR0cj9sLmF0dHIoIngiKTpsLngscD1sLmF0dHI/bC5hdHRyKCJ5Iik6bC55LGc9bC5hdHRyP2wuYXR0cigid2lkdGgiKTpsLndpZHRoLEY9bC5hdHRyPwpsLmF0dHIoImhlaWdodCIpOmwuaGVpZ2h0LHQ7aWYodGhpcy5oYXNEcmFnZ2VkfHxjKWEuYXhlcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2lmKGEuem9vbUVuYWJsZWQmJkwoYS5taW4pJiYoY3x8Zlt7eEF4aXM6Inpvb21YIix5QXhpczoiem9vbVkifVthLmNvbGxdXSkmJnIobSkmJnIocCkpe3ZhciBiPWEuaG9yaXosZT0idG91Y2hlbmQiPT09ZC50eXBlP2EubWluUGl4ZWxQYWRkaW5nOjAsbD1hLnRvVmFsdWUoKGI/bTpwKStlKTtiPWEudG9WYWx1ZSgoYj9tK2c6cCtGKS1lKTtrW2EuY29sbF0ucHVzaCh7YXhpczphLG1pbjpNYXRoLm1pbihsLGIpLG1heDpNYXRoLm1heChsLGIpfSk7dD0hMH19KSx0JiZuKGEsInNlbGVjdGlvbiIsayxmdW5jdGlvbihlKXthLnpvb20odihlLGM/e2FuaW1hdGlvbjohMX06bnVsbCkpfSk7cihhLmluZGV4KSYmKHRoaXMuc2VsZWN0aW9uTWFya2VyPXRoaXMuc2VsZWN0aW9uTWFya2VyLmRlc3Ryb3koKSk7YyYmdGhpcy5zY2FsZUdyb3VwcygpfWEmJnIoYS5pbmRleCkmJgooRyhhLmNvbnRhaW5lcix7Y3Vyc29yOmEuX2N1cnNvcn0pLGEuY2FuY2VsQ2xpY2s9MTA8dGhpcy5oYXNEcmFnZ2VkLGEubW91c2VJc0Rvd249dGhpcy5oYXNEcmFnZ2VkPXRoaXMuaGFzUGluY2hlZD0hMSx0aGlzLnBpbmNoRG93bj1bXSl9O2wucHJvdG90eXBlLmZpbmROZWFyZXN0S0RQb2ludD1mdW5jdGlvbihkLGYsYSl7dmFyIGM9dGhpcy5jaGFydCxrPWMuaG92ZXJQb2ludDtjPWMudG9vbHRpcDtpZihrJiZjJiZjLmlzU3RpY2t5T25Db250YWN0KCkpcmV0dXJuIGs7dmFyIGw7ZC5mb3JFYWNoKGZ1bmN0aW9uKGQpe3ZhciBjPSEoZC5ub1NoYXJlZFRvb2x0aXAmJmYpJiYwPmQub3B0aW9ucy5maW5kTmVhcmVzdFBvaW50QnkuaW5kZXhPZigieSIpO2Q9ZC5zZWFyY2hQb2ludChhLGMpO2lmKChjPUMoZCwhMCkpJiYhKGM9IUMobCwhMCkpKXtjPWwuZGlzdFgtZC5kaXN0WDt2YXIgaz1sLmRpc3QtZC5kaXN0LG09KGQuc2VyaWVzLmdyb3VwJiZkLnNlcmllcy5ncm91cC56SW5kZXgpLQoobC5zZXJpZXMuZ3JvdXAmJmwuc2VyaWVzLmdyb3VwLnpJbmRleCk7Yz0wPCgwIT09YyYmZj9jOjAhPT1rP2s6MCE9PW0/bTpsLnNlcmllcy5pbmRleD5kLnNlcmllcy5pbmRleD8tMToxKX1jJiYobD1kKX0pO3JldHVybiBsfTtsLnByb3RvdHlwZS5nZXRDaGFydENvb3JkaW5hdGVzRnJvbVBvaW50PWZ1bmN0aW9uKGQsZil7dmFyIGE9ZC5zZXJpZXMsYz1hLnhBeGlzO2E9YS55QXhpczt2YXIgaz1tKGQuY2xpZW50WCxkLnBsb3RYKSxsPWQuc2hhcGVBcmdzO2lmKGMmJmEpcmV0dXJuIGY/e2NoYXJ0WDpjLmxlbitjLnBvcy1rLGNoYXJ0WTphLmxlbithLnBvcy1kLnBsb3RZfTp7Y2hhcnRYOmsrYy5wb3MsY2hhcnRZOmQucGxvdFkrYS5wb3N9O2lmKGwmJmwueCYmbC55KXJldHVybntjaGFydFg6bC54LGNoYXJ0WTpsLnl9fTtsLnByb3RvdHlwZS5nZXRDaGFydFBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hhcnRQb3NpdGlvbnx8KHRoaXMuY2hhcnRQb3NpdGlvbj1wKHRoaXMuY2hhcnQuY29udGFpbmVyKSl9OwpsLnByb3RvdHlwZS5nZXRDb29yZGluYXRlcz1mdW5jdGlvbihkKXt2YXIgZj17eEF4aXM6W10seUF4aXM6W119O3RoaXMuY2hhcnQuYXhlcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2ZbYS5pc1hBeGlzPyJ4QXhpcyI6InlBeGlzIl0ucHVzaCh7YXhpczphLHZhbHVlOmEudG9WYWx1ZShkW2EuaG9yaXo/ImNoYXJ0WCI6ImNoYXJ0WSJdKX0pfSk7cmV0dXJuIGZ9O2wucHJvdG90eXBlLmdldEhvdmVyRGF0YT1mdW5jdGlvbihkLGYsYSxjLGwscCl7dmFyIGssdT1bXTtjPSEoIWN8fCFkKTt2YXIgZz1mJiYhZi5zdGlja3lUcmFja2luZyxBPXtjaGFydFg6cD9wLmNoYXJ0WDp2b2lkIDAsY2hhcnRZOnA/cC5jaGFydFk6dm9pZCAwLHNoYXJlZDpsfTtuKHRoaXMsImJlZm9yZUdldEhvdmVyRGF0YSIsQSk7Zz1nP1tmXTphLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gQS5maWx0ZXI/QS5maWx0ZXIoYSk6YS52aXNpYmxlJiYhKCFsJiZhLmRpcmVjdFRvdWNoKSYmbShhLm9wdGlvbnMuZW5hYmxlTW91c2VUcmFja2luZywKITApJiZhLnN0aWNreVRyYWNraW5nfSk7Zj0oaz1jfHwhcD9kOnRoaXMuZmluZE5lYXJlc3RLRFBvaW50KGcsbCxwKSkmJmsuc2VyaWVzO2smJihsJiYhZi5ub1NoYXJlZFRvb2x0aXA/KGc9YS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIEEuZmlsdGVyP0EuZmlsdGVyKGEpOmEudmlzaWJsZSYmISghbCYmYS5kaXJlY3RUb3VjaCkmJm0oYS5vcHRpb25zLmVuYWJsZU1vdXNlVHJhY2tpbmcsITApJiYhYS5ub1NoYXJlZFRvb2x0aXB9KSxnLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGU9SyhhLnBvaW50cyxmdW5jdGlvbihiKXtyZXR1cm4gYi54PT09ay54JiYhYi5pc051bGx9KTtDKGUpJiYoYS5jaGFydC5pc0Jvb3N0aW5nJiYoZT1hLmdldFBvaW50KGUpKSx1LnB1c2goZSkpfSkpOnUucHVzaChrKSk7QT17aG92ZXJQb2ludDprfTtuKHRoaXMsImFmdGVyR2V0SG92ZXJEYXRhIixBKTtyZXR1cm57aG92ZXJQb2ludDpBLmhvdmVyUG9pbnQsaG92ZXJTZXJpZXM6Zixob3ZlclBvaW50czp1fX07CmwucHJvdG90eXBlLmdldFBvaW50RnJvbUV2ZW50PWZ1bmN0aW9uKGQpe2Q9ZC50YXJnZXQ7Zm9yKHZhciBmO2QmJiFmOylmPWQucG9pbnQsZD1kLnBhcmVudE5vZGU7cmV0dXJuIGZ9O2wucHJvdG90eXBlLm9uVHJhY2tlck1vdXNlT3V0PWZ1bmN0aW9uKGQpe2Q9ZC5yZWxhdGVkVGFyZ2V0fHxkLnRvRWxlbWVudDt2YXIgZj10aGlzLmNoYXJ0LmhvdmVyU2VyaWVzO3RoaXMuaXNEaXJlY3RUb3VjaD0hMTtpZighKCFmfHwhZHx8Zi5zdGlja3lUcmFja2luZ3x8dGhpcy5pbkNsYXNzKGQsImhpZ2hjaGFydHMtdG9vbHRpcCIpfHx0aGlzLmluQ2xhc3MoZCwiaGlnaGNoYXJ0cy1zZXJpZXMtIitmLmluZGV4KSYmdGhpcy5pbkNsYXNzKGQsImhpZ2hjaGFydHMtdHJhY2tlciIpKSlmLm9uTW91c2VPdXQoKX07bC5wcm90b3R5cGUuaW5DbGFzcz1mdW5jdGlvbihkLGYpe2Zvcih2YXIgYTtkOyl7aWYoYT10KGQsImNsYXNzIikpe2lmKC0xIT09YS5pbmRleE9mKGYpKXJldHVybiEwO2lmKC0xIT09CmEuaW5kZXhPZigiaGlnaGNoYXJ0cy1jb250YWluZXIiKSlyZXR1cm4hMX1kPWQucGFyZW50Tm9kZX19O2wucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oZCxmKXt0aGlzLm9wdGlvbnM9Zjt0aGlzLmNoYXJ0PWQ7dGhpcy5ydW5DaGFydENsaWNrPWYuY2hhcnQuZXZlbnRzJiYhIWYuY2hhcnQuZXZlbnRzLmNsaWNrO3RoaXMucGluY2hEb3duPVtdO3RoaXMubGFzdFZhbGlkVG91Y2g9e307cSYmKGQudG9vbHRpcD1uZXcgcShkLGYudG9vbHRpcCksdGhpcy5mb2xsb3dUb3VjaE1vdmU9bShmLnRvb2x0aXAuZm9sbG93VG91Y2hNb3ZlLCEwKSk7dGhpcy5zZXRET01FdmVudHMoKX07bC5wcm90b3R5cGUubm9ybWFsaXplPWZ1bmN0aW9uKGQsZil7dmFyIGE9ZC50b3VjaGVzLGM9YT9hLmxlbmd0aD9hLml0ZW0oMCk6bShhLmNoYW5nZWRUb3VjaGVzLGQuY2hhbmdlZFRvdWNoZXMpWzBdOmQ7Znx8KGY9dGhpcy5nZXRDaGFydFBvc2l0aW9uKCkpO2E9Yy5wYWdlWC1mLmxlZnQ7Zj1jLnBhZ2VZLQpmLnRvcDtpZihjPXRoaXMuY2hhcnQuY29udGFpbmVyU2NhbGluZylhLz1jLnNjYWxlWCxmLz1jLnNjYWxlWTtyZXR1cm4gdihkLHtjaGFydFg6TWF0aC5yb3VuZChhKSxjaGFydFk6TWF0aC5yb3VuZChmKX0pfTtsLnByb3RvdHlwZS5vbkNvbnRhaW5lckNsaWNrPWZ1bmN0aW9uKGQpe3ZhciBmPXRoaXMuY2hhcnQsYT1mLmhvdmVyUG9pbnQ7ZD10aGlzLm5vcm1hbGl6ZShkKTt2YXIgYz1mLnBsb3RMZWZ0LGs9Zi5wbG90VG9wO2YuY2FuY2VsQ2xpY2t8fChhJiZ0aGlzLmluQ2xhc3MoZC50YXJnZXQsImhpZ2hjaGFydHMtdHJhY2tlciIpPyhuKGEuc2VyaWVzLCJjbGljayIsdihkLHtwb2ludDphfSkpLGYuaG92ZXJQb2ludCYmYS5maXJlUG9pbnRFdmVudCgiY2xpY2siLGQpKToodihkLHRoaXMuZ2V0Q29vcmRpbmF0ZXMoZCkpLGYuaXNJbnNpZGVQbG90KGQuY2hhcnRYLWMsZC5jaGFydFktaykmJm4oZiwiY2xpY2siLGQpKSl9O2wucHJvdG90eXBlLm9uQ29udGFpbmVyTW91c2VEb3duPQpmdW5jdGlvbihkKXtkPXRoaXMubm9ybWFsaXplKGQpO2lmKGMuaXNGaXJlZm94JiYwIT09ZC5idXR0b24pdGhpcy5vbkNvbnRhaW5lck1vdXNlTW92ZShkKTtpZigidW5kZWZpbmVkIj09PXR5cGVvZiBkLmJ1dHRvbnx8MT09PSgoZC5idXR0b25zfHxkLmJ1dHRvbikmMSkpdGhpcy56b29tT3B0aW9uKGQpLHRoaXMuZHJhZ1N0YXJ0KGQpfTtsLnByb3RvdHlwZS5vbkNvbnRhaW5lck1vdXNlTGVhdmU9ZnVuY3Rpb24oZCl7dmFyIGY9SFttKGMuaG92ZXJDaGFydEluZGV4LC0xKV0sYT10aGlzLmNoYXJ0LnRvb2x0aXA7ZD10aGlzLm5vcm1hbGl6ZShkKTtmJiYoZC5yZWxhdGVkVGFyZ2V0fHxkLnRvRWxlbWVudCkmJihmLnBvaW50ZXIucmVzZXQoKSxmLnBvaW50ZXIuY2hhcnRQb3NpdGlvbj12b2lkIDApO2EmJiFhLmlzSGlkZGVuJiZ0aGlzLnJlc2V0KCl9O2wucHJvdG90eXBlLm9uQ29udGFpbmVyTW91c2VNb3ZlPWZ1bmN0aW9uKGQpe3ZhciBmPXRoaXMuY2hhcnQ7ZD10aGlzLm5vcm1hbGl6ZShkKTsKdGhpcy5zZXRIb3ZlckNoYXJ0SW5kZXgoKTtkLnByZXZlbnREZWZhdWx0fHwoZC5yZXR1cm5WYWx1ZT0hMSk7Im1vdXNlZG93biI9PT1mLm1vdXNlSXNEb3duJiZ0aGlzLmRyYWcoZCk7Zi5vcGVuTWVudXx8IXRoaXMuaW5DbGFzcyhkLnRhcmdldCwiaGlnaGNoYXJ0cy10cmFja2VyIikmJiFmLmlzSW5zaWRlUGxvdChkLmNoYXJ0WC1mLnBsb3RMZWZ0LGQuY2hhcnRZLWYucGxvdFRvcCl8fHRoaXMucnVuUG9pbnRBY3Rpb25zKGQpfTtsLnByb3RvdHlwZS5vbkRvY3VtZW50VG91Y2hFbmQ9ZnVuY3Rpb24oZCl7SFtjLmhvdmVyQ2hhcnRJbmRleF0mJkhbYy5ob3ZlckNoYXJ0SW5kZXhdLnBvaW50ZXIuZHJvcChkKX07bC5wcm90b3R5cGUub25Db250YWluZXJUb3VjaE1vdmU9ZnVuY3Rpb24oZCl7dGhpcy50b3VjaChkKX07bC5wcm90b3R5cGUub25Db250YWluZXJUb3VjaFN0YXJ0PWZ1bmN0aW9uKGQpe3RoaXMuem9vbU9wdGlvbihkKTt0aGlzLnRvdWNoKGQsITApfTtsLnByb3RvdHlwZS5vbkRvY3VtZW50TW91c2VNb3ZlPQpmdW5jdGlvbihkKXt2YXIgZj10aGlzLmNoYXJ0LGE9dGhpcy5jaGFydFBvc2l0aW9uO2Q9dGhpcy5ub3JtYWxpemUoZCxhKTt2YXIgYz1mLnRvb2x0aXA7IWF8fGMmJmMuaXNTdGlja3lPbkNvbnRhY3QoKXx8Zi5pc0luc2lkZVBsb3QoZC5jaGFydFgtZi5wbG90TGVmdCxkLmNoYXJ0WS1mLnBsb3RUb3ApfHx0aGlzLmluQ2xhc3MoZC50YXJnZXQsImhpZ2hjaGFydHMtdHJhY2tlciIpfHx0aGlzLnJlc2V0KCl9O2wucHJvdG90eXBlLm9uRG9jdW1lbnRNb3VzZVVwPWZ1bmN0aW9uKGQpe3ZhciBmPUhbbShjLmhvdmVyQ2hhcnRJbmRleCwtMSldO2YmJmYucG9pbnRlci5kcm9wKGQpfTtsLnByb3RvdHlwZS5waW5jaD1mdW5jdGlvbihkKXt2YXIgZj10aGlzLGE9Zi5jaGFydCxjPWYucGluY2hEb3duLGs9ZC50b3VjaGVzfHxbXSxsPWsubGVuZ3RoLHA9Zi5sYXN0VmFsaWRUb3VjaCxuPWYuaGFzWm9vbSxnPWYuc2VsZWN0aW9uTWFya2VyLHI9e30sdD0xPT09bCYmKGYuaW5DbGFzcyhkLnRhcmdldCwKImhpZ2hjaGFydHMtdHJhY2tlciIpJiZhLnJ1blRyYWNrZXJDbGlja3x8Zi5ydW5DaGFydENsaWNrKSxlPXt9OzE8bCYmKGYuaW5pdGlhdGVkPSEwKTtuJiZmLmluaXRpYXRlZCYmIXQmJmQucHJldmVudERlZmF1bHQoKTtbXS5tYXAuY2FsbChrLGZ1bmN0aW9uKGIpe3JldHVybiBmLm5vcm1hbGl6ZShiKX0pOyJ0b3VjaHN0YXJ0Ij09PWQudHlwZT8oW10uZm9yRWFjaC5jYWxsKGssZnVuY3Rpb24oYixhKXtjW2FdPXtjaGFydFg6Yi5jaGFydFgsY2hhcnRZOmIuY2hhcnRZfX0pLHAueD1bY1swXS5jaGFydFgsY1sxXSYmY1sxXS5jaGFydFhdLHAueT1bY1swXS5jaGFydFksY1sxXSYmY1sxXS5jaGFydFldLGEuYXhlcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2lmKGIuem9vbUVuYWJsZWQpe3ZhciBlPWEuYm91bmRzW2IuaG9yaXo/ImgiOiJ2Il0sZj1iLm1pblBpeGVsUGFkZGluZyxkPWIudG9QaXhlbHMoTWF0aC5taW4obShiLm9wdGlvbnMubWluLGIuZGF0YU1pbiksYi5kYXRhTWluKSksCmM9Yi50b1BpeGVscyhNYXRoLm1heChtKGIub3B0aW9ucy5tYXgsYi5kYXRhTWF4KSxiLmRhdGFNYXgpKSxrPU1hdGgubWF4KGQsYyk7ZS5taW49TWF0aC5taW4oYi5wb3MsTWF0aC5taW4oZCxjKS1mKTtlLm1heD1NYXRoLm1heChiLnBvcytiLmxlbixrK2YpfX0pLGYucmVzPSEwKTpmLmZvbGxvd1RvdWNoTW92ZSYmMT09PWw/dGhpcy5ydW5Qb2ludEFjdGlvbnMoZi5ub3JtYWxpemUoZCkpOmMubGVuZ3RoJiYoZ3x8KGYuc2VsZWN0aW9uTWFya2VyPWc9dih7ZGVzdHJveTpELHRvdWNoOiEwfSxhLnBsb3RCb3gpKSxmLnBpbmNoVHJhbnNsYXRlKGMsayxyLGcsZSxwKSxmLmhhc1BpbmNoZWQ9bixmLnNjYWxlR3JvdXBzKHIsZSksZi5yZXMmJihmLnJlcz0hMSx0aGlzLnJlc2V0KCExLDApKSl9O2wucHJvdG90eXBlLnBpbmNoVHJhbnNsYXRlPWZ1bmN0aW9uKGQsZixhLGMsbCxtKXt0aGlzLnpvb21Ib3ImJnRoaXMucGluY2hUcmFuc2xhdGVEaXJlY3Rpb24oITAsZCxmLGEsYyxsLG0pOwp0aGlzLnpvb21WZXJ0JiZ0aGlzLnBpbmNoVHJhbnNsYXRlRGlyZWN0aW9uKCExLGQsZixhLGMsbCxtKX07bC5wcm90b3R5cGUucGluY2hUcmFuc2xhdGVEaXJlY3Rpb249ZnVuY3Rpb24oZCxmLGEsYyxsLG0scCxuKXt2YXIgaz10aGlzLmNoYXJ0LHU9ZD8ieCI6InkiLGc9ZD8iWCI6IlkiLGU9ImNoYXJ0IitnLGI9ZD8id2lkdGgiOiJoZWlnaHQiLGg9a1sicGxvdCIrKGQ/IkxlZnQiOiJUb3AiKV0sdyx4LEE9bnx8MSxyPWsuaW52ZXJ0ZWQsRT1rLmJvdW5kc1tkPyJoIjoidiJdLHQ9MT09PWYubGVuZ3RoLEM9ZlswXVtlXSx2PWFbMF1bZV0scT0hdCYmZlsxXVtlXSxJPSF0JiZhWzFdW2VdO2E9ZnVuY3Rpb24oKXsibnVtYmVyIj09PXR5cGVvZiBJJiYyMDxNYXRoLmFicyhDLXEpJiYoQT1ufHxNYXRoLmFicyh2LUkpL01hdGguYWJzKEMtcSkpO3g9KGgtdikvQStDO3c9a1sicGxvdCIrKGQ/IldpZHRoIjoiSGVpZ2h0IildL0F9O2EoKTtmPXg7aWYoZjxFLm1pbil7Zj1FLm1pbjt2YXIgUD0KITB9ZWxzZSBmK3c+RS5tYXgmJihmPUUubWF4LXcsUD0hMCk7UD8odi09LjgqKHYtcFt1XVswXSksIm51bWJlciI9PT10eXBlb2YgSSYmKEktPS44KihJLXBbdV1bMV0pKSxhKCkpOnBbdV09W3YsSV07cnx8KG1bdV09eC1oLG1bYl09dyk7bT1yPzEvQTpBO2xbYl09dztsW3VdPWY7Y1tyP2Q/InNjYWxlWSI6InNjYWxlWCI6InNjYWxlIitnXT1BO2NbInRyYW5zbGF0ZSIrZ109bSpoKyh2LW0qQyl9O2wucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKGMsZil7dmFyIGE9dGhpcy5jaGFydCxrPWEuaG92ZXJTZXJpZXMsbD1hLmhvdmVyUG9pbnQsbT1hLmhvdmVyUG9pbnRzLHA9YS50b29sdGlwLG49cCYmcC5zaGFyZWQ/bTpsO2MmJm4mJmQobikuZm9yRWFjaChmdW5jdGlvbihhKXthLnNlcmllcy5pc0NhcnRlc2lhbiYmInVuZGVmaW5lZCI9PT10eXBlb2YgYS5wbG90WCYmKGM9ITEpfSk7aWYoYylwJiZuJiZkKG4pLmxlbmd0aCYmKHAucmVmcmVzaChuKSxwLnNoYXJlZCYmbT9tLmZvckVhY2goZnVuY3Rpb24oYSl7YS5zZXRTdGF0ZShhLnN0YXRlLAohMCk7YS5zZXJpZXMuaXNDYXJ0ZXNpYW4mJihhLnNlcmllcy54QXhpcy5jcm9zc2hhaXImJmEuc2VyaWVzLnhBeGlzLmRyYXdDcm9zc2hhaXIobnVsbCxhKSxhLnNlcmllcy55QXhpcy5jcm9zc2hhaXImJmEuc2VyaWVzLnlBeGlzLmRyYXdDcm9zc2hhaXIobnVsbCxhKSl9KTpsJiYobC5zZXRTdGF0ZShsLnN0YXRlLCEwKSxhLmF4ZXMuZm9yRWFjaChmdW5jdGlvbihhKXthLmNyb3NzaGFpciYmbC5zZXJpZXNbYS5jb2xsXT09PWEmJmEuZHJhd0Nyb3NzaGFpcihudWxsLGwpfSkpKTtlbHNle2lmKGwpbC5vbk1vdXNlT3V0KCk7bSYmbS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2Euc2V0U3RhdGUoKX0pO2lmKGspay5vbk1vdXNlT3V0KCk7cCYmcC5oaWRlKGYpO3RoaXMudW5Eb2NNb3VzZU1vdmUmJih0aGlzLnVuRG9jTW91c2VNb3ZlPXRoaXMudW5Eb2NNb3VzZU1vdmUoKSk7YS5heGVzLmZvckVhY2goZnVuY3Rpb24oYSl7YS5oaWRlQ3Jvc3NoYWlyKCl9KTt0aGlzLmhvdmVyWD1hLmhvdmVyUG9pbnRzPQphLmhvdmVyUG9pbnQ9bnVsbH19O2wucHJvdG90eXBlLnJ1blBvaW50QWN0aW9ucz1mdW5jdGlvbihkLGYpe3ZhciBhPXRoaXMuY2hhcnQsaz1hLnRvb2x0aXAmJmEudG9vbHRpcC5vcHRpb25zLmVuYWJsZWQ/YS50b29sdGlwOnZvaWQgMCxsPWs/ay5zaGFyZWQ6ITEscD1mfHxhLmhvdmVyUG9pbnQsbj1wJiZwLnNlcmllc3x8YS5ob3ZlclNlcmllcztuPXRoaXMuZ2V0SG92ZXJEYXRhKHAsbixhLnNlcmllcywoIWR8fCJ0b3VjaG1vdmUiIT09ZC50eXBlKSYmKCEhZnx8biYmbi5kaXJlY3RUb3VjaCYmdGhpcy5pc0RpcmVjdFRvdWNoKSxsLGQpO3A9bi5ob3ZlclBvaW50O3ZhciBnPW4uaG92ZXJQb2ludHM7Zj0obj1uLmhvdmVyU2VyaWVzKSYmbi50b29sdGlwT3B0aW9ucy5mb2xsb3dQb2ludGVyO2w9bCYmbiYmIW4ubm9TaGFyZWRUb29sdGlwO2lmKHAmJihwIT09YS5ob3ZlclBvaW50fHxrJiZrLmlzSGlkZGVuKSl7KGEuaG92ZXJQb2ludHN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGEpey0xPT09CmcuaW5kZXhPZihhKSYmYS5zZXRTdGF0ZSgpfSk7aWYoYS5ob3ZlclNlcmllcyE9PW4pbi5vbk1vdXNlT3ZlcigpO3RoaXMuYXBwbHlJbmFjdGl2ZVN0YXRlKGcpOyhnfHxbXSkuZm9yRWFjaChmdW5jdGlvbihhKXthLnNldFN0YXRlKCJob3ZlciIpfSk7YS5ob3ZlclBvaW50JiZhLmhvdmVyUG9pbnQuZmlyZVBvaW50RXZlbnQoIm1vdXNlT3V0Iik7aWYoIXAuc2VyaWVzKXJldHVybjthLmhvdmVyUG9pbnRzPWc7YS5ob3ZlclBvaW50PXA7cC5maXJlUG9pbnRFdmVudCgibW91c2VPdmVyIik7ayYmay5yZWZyZXNoKGw/ZzpwLGQpfWVsc2UgZiYmayYmIWsuaXNIaWRkZW4mJihwPWsuZ2V0QW5jaG9yKFt7fV0sZCksay51cGRhdGVQb3NpdGlvbih7cGxvdFg6cFswXSxwbG90WTpwWzFdfSkpO3RoaXMudW5Eb2NNb3VzZU1vdmV8fCh0aGlzLnVuRG9jTW91c2VNb3ZlPUooYS5jb250YWluZXIub3duZXJEb2N1bWVudCwibW91c2Vtb3ZlIixmdW5jdGlvbihhKXt2YXIgZj1IW2MuaG92ZXJDaGFydEluZGV4XTsKaWYoZilmLnBvaW50ZXIub25Eb2N1bWVudE1vdXNlTW92ZShhKX0pKTthLmF4ZXMuZm9yRWFjaChmdW5jdGlvbihmKXt2YXIgYz1tKChmLmNyb3NzaGFpcnx8e30pLnNuYXAsITApLGs7YyYmKChrPWEuaG92ZXJQb2ludCkmJmsuc2VyaWVzW2YuY29sbF09PT1mfHwoaz1LKGcsZnVuY3Rpb24oYSl7cmV0dXJuIGEuc2VyaWVzW2YuY29sbF09PT1mfSkpKTtrfHwhYz9mLmRyYXdDcm9zc2hhaXIoZCxrKTpmLmhpZGVDcm9zc2hhaXIoKX0pfTtsLnByb3RvdHlwZS5zY2FsZUdyb3Vwcz1mdW5jdGlvbihkLGYpe3ZhciBhPXRoaXMuY2hhcnQsYzthLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGspe2M9ZHx8ay5nZXRQbG90Qm94KCk7ay54QXhpcyYmay54QXhpcy56b29tRW5hYmxlZCYmay5ncm91cCYmKGsuZ3JvdXAuYXR0cihjKSxrLm1hcmtlckdyb3VwJiYoay5tYXJrZXJHcm91cC5hdHRyKGMpLGsubWFya2VyR3JvdXAuY2xpcChmP2EuY2xpcFJlY3Q6bnVsbCkpLGsuZGF0YUxhYmVsc0dyb3VwJiYKay5kYXRhTGFiZWxzR3JvdXAuYXR0cihjKSl9KTthLmNsaXBSZWN0LmF0dHIoZnx8YS5jbGlwQm94KX07bC5wcm90b3R5cGUuc2V0RE9NRXZlbnRzPWZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5jaGFydC5jb250YWluZXIsZj1kLm93bmVyRG9jdW1lbnQ7ZC5vbm1vdXNlZG93bj10aGlzLm9uQ29udGFpbmVyTW91c2VEb3duLmJpbmQodGhpcyk7ZC5vbm1vdXNlbW92ZT10aGlzLm9uQ29udGFpbmVyTW91c2VNb3ZlLmJpbmQodGhpcyk7ZC5vbmNsaWNrPXRoaXMub25Db250YWluZXJDbGljay5iaW5kKHRoaXMpO3RoaXMudW5iaW5kQ29udGFpbmVyTW91c2VMZWF2ZT1KKGQsIm1vdXNlbGVhdmUiLHRoaXMub25Db250YWluZXJNb3VzZUxlYXZlLmJpbmQodGhpcykpO2MudW5iaW5kRG9jdW1lbnRNb3VzZVVwfHwoYy51bmJpbmREb2N1bWVudE1vdXNlVXA9SihmLCJtb3VzZXVwIix0aGlzLm9uRG9jdW1lbnRNb3VzZVVwLmJpbmQodGhpcykpKTtjLmhhc1RvdWNoJiYoSihkLCJ0b3VjaHN0YXJ0IiwKdGhpcy5vbkNvbnRhaW5lclRvdWNoU3RhcnQuYmluZCh0aGlzKSksSihkLCJ0b3VjaG1vdmUiLHRoaXMub25Db250YWluZXJUb3VjaE1vdmUuYmluZCh0aGlzKSksYy51bmJpbmREb2N1bWVudFRvdWNoRW5kfHwoYy51bmJpbmREb2N1bWVudFRvdWNoRW5kPUooZiwidG91Y2hlbmQiLHRoaXMub25Eb2N1bWVudFRvdWNoRW5kLmJpbmQodGhpcykpKSl9O2wucHJvdG90eXBlLnNldEhvdmVyQ2hhcnRJbmRleD1mdW5jdGlvbigpe3ZhciBkPXRoaXMuY2hhcnQsZj1jLmNoYXJ0c1ttKGMuaG92ZXJDaGFydEluZGV4LC0xKV07aWYoZiYmZiE9PWQpZi5wb2ludGVyLm9uQ29udGFpbmVyTW91c2VMZWF2ZSh7cmVsYXRlZFRhcmdldDohMH0pO2YmJmYubW91c2VJc0Rvd258fChjLmhvdmVyQ2hhcnRJbmRleD1kLmluZGV4KX07bC5wcm90b3R5cGUudG91Y2g9ZnVuY3Rpb24oZCxmKXt2YXIgYT10aGlzLmNoYXJ0LGM7dGhpcy5zZXRIb3ZlckNoYXJ0SW5kZXgoKTtpZigxPT09ZC50b3VjaGVzLmxlbmd0aClpZihkPQp0aGlzLm5vcm1hbGl6ZShkKSwoYz1hLmlzSW5zaWRlUGxvdChkLmNoYXJ0WC1hLnBsb3RMZWZ0LGQuY2hhcnRZLWEucGxvdFRvcCkpJiYhYS5vcGVuTWVudSl7ZiYmdGhpcy5ydW5Qb2ludEFjdGlvbnMoZCk7aWYoInRvdWNobW92ZSI9PT1kLnR5cGUpe2Y9dGhpcy5waW5jaERvd247dmFyIGs9ZlswXT80PD1NYXRoLnNxcnQoTWF0aC5wb3coZlswXS5jaGFydFgtZC5jaGFydFgsMikrTWF0aC5wb3coZlswXS5jaGFydFktZC5jaGFydFksMikpOiExfW0oaywhMCkmJnRoaXMucGluY2goZCl9ZWxzZSBmJiZ0aGlzLnJlc2V0KCk7ZWxzZSAyPT09ZC50b3VjaGVzLmxlbmd0aCYmdGhpcy5waW5jaChkKX07bC5wcm90b3R5cGUuem9vbU9wdGlvbj1mdW5jdGlvbihkKXt2YXIgZj10aGlzLmNoYXJ0LGE9Zi5vcHRpb25zLmNoYXJ0LGM9YS56b29tVHlwZXx8IiI7Zj1mLmludmVydGVkOy90b3VjaC8udGVzdChkLnR5cGUpJiYoYz1tKGEucGluY2hUeXBlLGMpKTt0aGlzLnpvb21YPWQ9L3gvLnRlc3QoYyk7CnRoaXMuem9vbVk9Yz0veS8udGVzdChjKTt0aGlzLnpvb21Ib3I9ZCYmIWZ8fGMmJmY7dGhpcy56b29tVmVydD1jJiYhZnx8ZCYmZjt0aGlzLmhhc1pvb209ZHx8Y307cmV0dXJuIGx9KCk7cmV0dXJuIGMuUG9pbnRlcj1nfSk7TyhxLCJwYXJ0cy9NU1BvaW50ZXIuanMiLFtxWyJwYXJ0cy9HbG9iYWxzLmpzIl0scVsicGFydHMvUG9pbnRlci5qcyJdLHFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihnLGMscSl7ZnVuY3Rpb24geSgpe3ZhciBjPVtdO2MuaXRlbT1mdW5jdGlvbihjKXtyZXR1cm4gdGhpc1tjXX07dihuLGZ1bmN0aW9uKG4pe2MucHVzaCh7cGFnZVg6bi5wYWdlWCxwYWdlWTpuLnBhZ2VZLHRhcmdldDpuLnRhcmdldH0pfSk7cmV0dXJuIGN9ZnVuY3Rpb24gQihjLG4scCxtKXsidG91Y2giIT09Yy5wb2ludGVyVHlwZSYmYy5wb2ludGVyVHlwZSE9PWMuTVNQT0lOVEVSX1RZUEVfVE9VQ0h8fCFEW2cuaG92ZXJDaGFydEluZGV4XXx8KG0oYyksbT1EW2cuaG92ZXJDaGFydEluZGV4XS5wb2ludGVyLAptW25dKHt0eXBlOnAsdGFyZ2V0OmMuY3VycmVudFRhcmdldCxwcmV2ZW50RGVmYXVsdDp0LHRvdWNoZXM6eSgpfSkpfXZhciBIPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBjPWZ1bmN0aW9uKG4scCl7Yz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oYyxkKXtjLl9fcHJvdG9fXz1kfXx8ZnVuY3Rpb24oYyxkKXtmb3IodmFyIGwgaW4gZClkLmhhc093blByb3BlcnR5KGwpJiYoY1tsXT1kW2xdKX07cmV0dXJuIGMobixwKX07cmV0dXJuIGZ1bmN0aW9uKG4scCl7ZnVuY3Rpb24gbSgpe3RoaXMuY29uc3RydWN0b3I9bn1jKG4scCk7bi5wcm90b3R5cGU9bnVsbD09PXA/T2JqZWN0LmNyZWF0ZShwKToobS5wcm90b3R5cGU9cC5wcm90b3R5cGUsbmV3IG0pfX0oKSxEPWcuY2hhcnRzLEo9Zy5kb2MsdD1nLm5vb3AsRz1xLmFkZEV2ZW50LEw9cS5jc3Msdj1xLm9iamVjdEVhY2gsSz1xLnJlbW92ZUV2ZW50LApuPXt9LHI9ISFnLndpbi5Qb2ludGVyRXZlbnQ7cmV0dXJuIGZ1bmN0aW9uKGMpe2Z1bmN0aW9uIGcoKXtyZXR1cm4gbnVsbCE9PWMmJmMuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfUgoZyxjKTtnLnByb3RvdHlwZS5iYXRjaE1TRXZlbnRzPWZ1bmN0aW9uKGMpe2ModGhpcy5jaGFydC5jb250YWluZXIscj8icG9pbnRlcmRvd24iOiJNU1BvaW50ZXJEb3duIix0aGlzLm9uQ29udGFpbmVyUG9pbnRlckRvd24pO2ModGhpcy5jaGFydC5jb250YWluZXIscj8icG9pbnRlcm1vdmUiOiJNU1BvaW50ZXJNb3ZlIix0aGlzLm9uQ29udGFpbmVyUG9pbnRlck1vdmUpO2MoSixyPyJwb2ludGVydXAiOiJNU1BvaW50ZXJVcCIsdGhpcy5vbkRvY3VtZW50UG9pbnRlclVwKX07Zy5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuYmF0Y2hNU0V2ZW50cyhLKTtjLnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyl9O2cucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24ocCxtKXtjLnByb3RvdHlwZS5pbml0LmNhbGwodGhpcywKcCxtKTt0aGlzLmhhc1pvb20mJkwocC5jb250YWluZXIseyItbXMtdG91Y2gtYWN0aW9uIjoibm9uZSIsInRvdWNoLWFjdGlvbiI6Im5vbmUifSl9O2cucHJvdG90eXBlLm9uQ29udGFpbmVyUG9pbnRlckRvd249ZnVuY3Rpb24oYyl7QihjLCJvbkNvbnRhaW5lclRvdWNoU3RhcnQiLCJ0b3VjaHN0YXJ0IixmdW5jdGlvbihjKXtuW2MucG9pbnRlcklkXT17cGFnZVg6Yy5wYWdlWCxwYWdlWTpjLnBhZ2VZLHRhcmdldDpjLmN1cnJlbnRUYXJnZXR9fSl9O2cucHJvdG90eXBlLm9uQ29udGFpbmVyUG9pbnRlck1vdmU9ZnVuY3Rpb24oYyl7QihjLCJvbkNvbnRhaW5lclRvdWNoTW92ZSIsInRvdWNobW92ZSIsZnVuY3Rpb24oYyl7bltjLnBvaW50ZXJJZF09e3BhZ2VYOmMucGFnZVgscGFnZVk6Yy5wYWdlWX07bltjLnBvaW50ZXJJZF0udGFyZ2V0fHwobltjLnBvaW50ZXJJZF0udGFyZ2V0PWMuY3VycmVudFRhcmdldCl9KX07Zy5wcm90b3R5cGUub25Eb2N1bWVudFBvaW50ZXJVcD1mdW5jdGlvbihjKXtCKGMsCiJvbkRvY3VtZW50VG91Y2hFbmQiLCJ0b3VjaGVuZCIsZnVuY3Rpb24oYyl7ZGVsZXRlIG5bYy5wb2ludGVySWRdfSl9O2cucHJvdG90eXBlLnNldERPTUV2ZW50cz1mdW5jdGlvbigpe2MucHJvdG90eXBlLnNldERPTUV2ZW50cy5jYWxsKHRoaXMpOyh0aGlzLmhhc1pvb218fHRoaXMuZm9sbG93VG91Y2hNb3ZlKSYmdGhpcy5iYXRjaE1TRXZlbnRzKEcpfTtyZXR1cm4gZ30oYyl9KTtPKHEsInBhcnRzL0xlZ2VuZC5qcyIsW3FbInBhcnRzL0dsb2JhbHMuanMiXSxxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyxjKXt2YXIgcT1jLmFkZEV2ZW50LHk9Yy5hbmltT2JqZWN0LEI9Yy5jc3MsSD1jLmRlZmluZWQsRD1jLmRpc2NhcmRFbGVtZW50LEo9Yy5maW5kLHQ9Yy5maXJlRXZlbnQsRz1jLmZvcm1hdCxMPWMuaXNOdW1iZXIsdj1jLm1lcmdlLEs9Yy5waWNrLG49Yy5yZWxhdGl2ZUxlbmd0aCxyPWMuc2V0QW5pbWF0aW9uLEM9Yy5zdGFibGVTb3J0LEk9Yy5zeW5jVGltZW91dDsKYz1jLndyYXA7dmFyIHA9Zy5pc0ZpcmVmb3gsbT1nLm1hcmdpbk5hbWVzLGQ9Zy53aW4sbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZCxhKXt0aGlzLmFsbEl0ZW1zPVtdO3RoaXMuY29udGVudEdyb3VwPXRoaXMuYm94PXZvaWQgMDt0aGlzLmRpc3BsYXk9ITE7dGhpcy5ncm91cD12b2lkIDA7dGhpcy5vZmZzZXRXaWR0aD10aGlzLm1heExlZ2VuZFdpZHRoPXRoaXMubWF4SXRlbVdpZHRoPXRoaXMubGVnZW5kV2lkdGg9dGhpcy5sZWdlbmRIZWlnaHQ9dGhpcy5sYXN0TGluZUhlaWdodD10aGlzLmxhc3RJdGVtWT10aGlzLml0ZW1ZPXRoaXMuaXRlbVg9dGhpcy5pdGVtTWFyZ2luVG9wPXRoaXMuaXRlbU1hcmdpbkJvdHRvbT10aGlzLml0ZW1IZWlnaHQ9dGhpcy5pbml0aWFsSXRlbVk9MDt0aGlzLm9wdGlvbnM9e307dGhpcy5wYWRkaW5nPTA7dGhpcy5wYWdlcz1bXTt0aGlzLnByb3hpbWF0ZT0hMTt0aGlzLnNjcm9sbEdyb3VwPXZvaWQgMDt0aGlzLndpZHRoT3B0aW9uPXRoaXMudG90YWxJdGVtV2lkdGg9CnRoaXMudGl0bGVIZWlnaHQ9dGhpcy5zeW1ib2xXaWR0aD10aGlzLnN5bWJvbEhlaWdodD0wO3RoaXMuY2hhcnQ9ZDt0aGlzLmluaXQoZCxhKX1kLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGQsYSl7dGhpcy5jaGFydD1kO3RoaXMuc2V0T3B0aW9ucyhhKTthLmVuYWJsZWQmJih0aGlzLnJlbmRlcigpLHEodGhpcy5jaGFydCwiZW5kUmVzaXplIixmdW5jdGlvbigpe3RoaXMubGVnZW5kLnBvc2l0aW9uQ2hlY2tib3hlcygpfSksdGhpcy5wcm94aW1hdGU/dGhpcy51bmNoYXJ0cmVuZGVyPXEodGhpcy5jaGFydCwicmVuZGVyIixmdW5jdGlvbigpe3RoaXMubGVnZW5kLnByb3hpbWF0ZVBvc2l0aW9ucygpO3RoaXMubGVnZW5kLnBvc2l0aW9uSXRlbXMoKX0pOnRoaXMudW5jaGFydHJlbmRlciYmdGhpcy51bmNoYXJ0cmVuZGVyKCkpfTtkLnByb3RvdHlwZS5zZXRPcHRpb25zPWZ1bmN0aW9uKGQpe3ZhciBhPUsoZC5wYWRkaW5nLDgpO3RoaXMub3B0aW9ucz1kO3RoaXMuY2hhcnQuc3R5bGVkTW9kZXx8Cih0aGlzLml0ZW1TdHlsZT1kLml0ZW1TdHlsZSx0aGlzLml0ZW1IaWRkZW5TdHlsZT12KHRoaXMuaXRlbVN0eWxlLGQuaXRlbUhpZGRlblN0eWxlKSk7dGhpcy5pdGVtTWFyZ2luVG9wPWQuaXRlbU1hcmdpblRvcHx8MDt0aGlzLml0ZW1NYXJnaW5Cb3R0b209ZC5pdGVtTWFyZ2luQm90dG9tfHwwO3RoaXMucGFkZGluZz1hO3RoaXMuaW5pdGlhbEl0ZW1ZPWEtNTt0aGlzLnN5bWJvbFdpZHRoPUsoZC5zeW1ib2xXaWR0aCwxNik7dGhpcy5wYWdlcz1bXTt0aGlzLnByb3hpbWF0ZT0icHJveGltYXRlIj09PWQubGF5b3V0JiYhdGhpcy5jaGFydC5pbnZlcnRlZDt0aGlzLmJhc2VsaW5lPXZvaWQgMH07ZC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGQsYSl7dmFyIGY9dGhpcy5jaGFydDt0aGlzLnNldE9wdGlvbnModighMCx0aGlzLm9wdGlvbnMsZCkpO3RoaXMuZGVzdHJveSgpO2YuaXNEaXJ0eUxlZ2VuZD1mLmlzRGlydHlCb3g9ITA7SyhhLCEwKSYmZi5yZWRyYXcoKTt0KHRoaXMsImFmdGVyVXBkYXRlIil9OwpkLnByb3RvdHlwZS5jb2xvcml6ZUl0ZW09ZnVuY3Rpb24oZCxhKXtkLmxlZ2VuZEdyb3VwW2E/InJlbW92ZUNsYXNzIjoiYWRkQ2xhc3MiXSgiaGlnaGNoYXJ0cy1sZWdlbmQtaXRlbS1oaWRkZW4iKTtpZighdGhpcy5jaGFydC5zdHlsZWRNb2RlKXt2YXIgZj10aGlzLm9wdGlvbnMsYz1kLmxlZ2VuZEl0ZW0sbD1kLmxlZ2VuZExpbmUsaz1kLmxlZ2VuZFN5bWJvbCxtPXRoaXMuaXRlbUhpZGRlblN0eWxlLmNvbG9yO2Y9YT9mLml0ZW1TdHlsZS5jb2xvcjptO3ZhciBwPWE/ZC5jb2xvcnx8bTptLG49ZC5vcHRpb25zJiZkLm9wdGlvbnMubWFya2VyLGc9e2ZpbGw6cH07YyYmYy5jc3Moe2ZpbGw6Zixjb2xvcjpmfSk7bCYmbC5hdHRyKHtzdHJva2U6cH0pO2smJihuJiZrLmlzTWFya2VyJiYoZz1kLnBvaW50QXR0cmlicygpLGF8fChnLnN0cm9rZT1nLmZpbGw9bSkpLGsuYXR0cihnKSl9dCh0aGlzLCJhZnRlckNvbG9yaXplSXRlbSIse2l0ZW06ZCx2aXNpYmxlOmF9KX07ZC5wcm90b3R5cGUucG9zaXRpb25JdGVtcz0KZnVuY3Rpb24oKXt0aGlzLmFsbEl0ZW1zLmZvckVhY2godGhpcy5wb3NpdGlvbkl0ZW0sdGhpcyk7dGhpcy5jaGFydC5pc1Jlc2l6aW5nfHx0aGlzLnBvc2l0aW9uQ2hlY2tib3hlcygpfTtkLnByb3RvdHlwZS5wb3NpdGlvbkl0ZW09ZnVuY3Rpb24oZCl7dmFyIGE9dGhpcyxmPXRoaXMub3B0aW9ucyxjPWYuc3ltYm9sUGFkZGluZyxrPSFmLnJ0bCxsPWQuX2xlZ2VuZEl0ZW1Qb3M7Zj1sWzBdO2w9bFsxXTt2YXIgbT1kLmNoZWNrYm94LHA9ZC5sZWdlbmRHcm91cDtwJiZwLmVsZW1lbnQmJihjPXt0cmFuc2xhdGVYOms/Zjp0aGlzLmxlZ2VuZFdpZHRoLWYtMipjLTQsdHJhbnNsYXRlWTpsfSxrPWZ1bmN0aW9uKCl7dChhLCJhZnRlclBvc2l0aW9uSXRlbSIse2l0ZW06ZH0pfSxIKHAudHJhbnNsYXRlWSk/cC5hbmltYXRlKGMse2NvbXBsZXRlOmt9KToocC5hdHRyKGMpLGsoKSkpO20mJihtLng9ZixtLnk9bCl9O2QucHJvdG90eXBlLmRlc3Ryb3lJdGVtPWZ1bmN0aW9uKGQpe3ZhciBhPQpkLmNoZWNrYm94O1sibGVnZW5kSXRlbSIsImxlZ2VuZExpbmUiLCJsZWdlbmRTeW1ib2wiLCJsZWdlbmRHcm91cCJdLmZvckVhY2goZnVuY3Rpb24oYSl7ZFthXSYmKGRbYV09ZFthXS5kZXN0cm95KCkpfSk7YSYmRChkLmNoZWNrYm94KX07ZC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoYSl7dGhpc1thXSYmKHRoaXNbYV09dGhpc1thXS5kZXN0cm95KCkpfXRoaXMuZ2V0QWxsSXRlbXMoKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe1sibGVnZW5kSXRlbSIsImxlZ2VuZEdyb3VwIl0uZm9yRWFjaChkLGEpfSk7ImNsaXBSZWN0IHVwIGRvd24gcGFnZXIgbmF2IGJveCB0aXRsZSBncm91cCIuc3BsaXQoIiAiKS5mb3JFYWNoKGQsdGhpcyk7dGhpcy5kaXNwbGF5PW51bGx9O2QucHJvdG90eXBlLnBvc2l0aW9uQ2hlY2tib3hlcz1mdW5jdGlvbigpe3ZhciBkPXRoaXMuZ3JvdXAmJnRoaXMuZ3JvdXAuYWxpZ25BdHRyLGE9dGhpcy5jbGlwSGVpZ2h0fHx0aGlzLmxlZ2VuZEhlaWdodCwKYz10aGlzLnRpdGxlSGVpZ2h0O2lmKGQpe3ZhciBsPWQudHJhbnNsYXRlWTt0aGlzLmFsbEl0ZW1zLmZvckVhY2goZnVuY3Rpb24oZil7dmFyIGs9Zi5jaGVja2JveDtpZihrKXt2YXIgbT1sK2Mray55Kyh0aGlzLnNjcm9sbE9mZnNldHx8MCkrMztCKGsse2xlZnQ6ZC50cmFuc2xhdGVYK2YuY2hlY2tib3hPZmZzZXQray54LTIwKyJweCIsdG9wOm0rInB4IixkaXNwbGF5OnRoaXMucHJveGltYXRlfHxtPmwtNiYmbTxsK2EtNj8iIjoibm9uZSJ9KX19LHRoaXMpfX07ZC5wcm90b3R5cGUucmVuZGVyVGl0bGU9ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm9wdGlvbnMsYT10aGlzLnBhZGRpbmcsYz1kLnRpdGxlLGs9MDtjLnRleHQmJih0aGlzLnRpdGxlfHwodGhpcy50aXRsZT10aGlzLmNoYXJ0LnJlbmRlcmVyLmxhYmVsKGMudGV4dCxhLTMsYS00LG51bGwsbnVsbCxudWxsLGQudXNlSFRNTCxudWxsLCJsZWdlbmQtdGl0bGUiKS5hdHRyKHt6SW5kZXg6MX0pLHRoaXMuY2hhcnQuc3R5bGVkTW9kZXx8CnRoaXMudGl0bGUuY3NzKGMuc3R5bGUpLHRoaXMudGl0bGUuYWRkKHRoaXMuZ3JvdXApKSxjLndpZHRofHx0aGlzLnRpdGxlLmNzcyh7d2lkdGg6dGhpcy5tYXhMZWdlbmRXaWR0aCsicHgifSksZD10aGlzLnRpdGxlLmdldEJCb3goKSxrPWQuaGVpZ2h0LHRoaXMub2Zmc2V0V2lkdGg9ZC53aWR0aCx0aGlzLmNvbnRlbnRHcm91cC5hdHRyKHt0cmFuc2xhdGVZOmt9KSk7dGhpcy50aXRsZUhlaWdodD1rfTtkLnByb3RvdHlwZS5zZXRUZXh0PWZ1bmN0aW9uKGQpe3ZhciBhPXRoaXMub3B0aW9ucztkLmxlZ2VuZEl0ZW0uYXR0cih7dGV4dDphLmxhYmVsRm9ybWF0P0coYS5sYWJlbEZvcm1hdCxkLHRoaXMuY2hhcnQpOmEubGFiZWxGb3JtYXR0ZXIuY2FsbChkKX0pfTtkLnByb3RvdHlwZS5yZW5kZXJJdGVtPWZ1bmN0aW9uKGQpe3ZhciBhPXRoaXMuY2hhcnQsZj1hLnJlbmRlcmVyLGM9dGhpcy5vcHRpb25zLGs9dGhpcy5zeW1ib2xXaWR0aCxsPWMuc3ltYm9sUGFkZGluZyxtPXRoaXMuaXRlbVN0eWxlLApwPXRoaXMuaXRlbUhpZGRlblN0eWxlLG49Imhvcml6b250YWwiPT09Yy5sYXlvdXQ/SyhjLml0ZW1EaXN0YW5jZSwyMCk6MCxnPSFjLnJ0bCxlPWQubGVnZW5kSXRlbSxiPSFkLnNlcmllcyxoPSFiJiZkLnNlcmllcy5kcmF3TGVnZW5kU3ltYm9sP2Quc2VyaWVzOmQsej1oLm9wdGlvbnM7ej10aGlzLmNyZWF0ZUNoZWNrYm94Rm9ySXRlbSYmeiYmei5zaG93Q2hlY2tib3g7bj1rK2wrbisoej8yMDowKTt2YXIgeD1jLnVzZUhUTUwscj1kLm9wdGlvbnMuY2xhc3NOYW1lO2V8fChkLmxlZ2VuZEdyb3VwPWYuZygibGVnZW5kLWl0ZW0iKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy0iK2gudHlwZSsiLXNlcmllcyBoaWdoY2hhcnRzLWNvbG9yLSIrZC5jb2xvckluZGV4KyhyPyIgIityOiIiKSsoYj8iIGhpZ2hjaGFydHMtc2VyaWVzLSIrZC5pbmRleDoiIikpLmF0dHIoe3pJbmRleDoxfSkuYWRkKHRoaXMuc2Nyb2xsR3JvdXApLGQubGVnZW5kSXRlbT1lPWYudGV4dCgiIixnP2srbDotbCx0aGlzLmJhc2VsaW5lfHwKMCx4KSxhLnN0eWxlZE1vZGV8fGUuY3NzKHYoZC52aXNpYmxlP206cCkpLGUuYXR0cih7YWxpZ246Zz8ibGVmdCI6InJpZ2h0Iix6SW5kZXg6Mn0pLmFkZChkLmxlZ2VuZEdyb3VwKSx0aGlzLmJhc2VsaW5lfHwodGhpcy5mb250TWV0cmljcz1mLmZvbnRNZXRyaWNzKGEuc3R5bGVkTW9kZT8xMjptLmZvbnRTaXplLGUpLHRoaXMuYmFzZWxpbmU9dGhpcy5mb250TWV0cmljcy5mKzMrdGhpcy5pdGVtTWFyZ2luVG9wLGUuYXR0cigieSIsdGhpcy5iYXNlbGluZSkpLHRoaXMuc3ltYm9sSGVpZ2h0PWMuc3ltYm9sSGVpZ2h0fHx0aGlzLmZvbnRNZXRyaWNzLmYsaC5kcmF3TGVnZW5kU3ltYm9sKHRoaXMsZCksdGhpcy5zZXRJdGVtRXZlbnRzJiZ0aGlzLnNldEl0ZW1FdmVudHMoZCxlLHgpKTt6JiYhZC5jaGVja2JveCYmdGhpcy5jcmVhdGVDaGVja2JveEZvckl0ZW0mJnRoaXMuY3JlYXRlQ2hlY2tib3hGb3JJdGVtKGQpO3RoaXMuY29sb3JpemVJdGVtKGQsZC52aXNpYmxlKTshYS5zdHlsZWRNb2RlJiYKbS53aWR0aHx8ZS5jc3Moe3dpZHRoOihjLml0ZW1XaWR0aHx8dGhpcy53aWR0aE9wdGlvbnx8YS5zcGFjaW5nQm94LndpZHRoKS1uKyJweCJ9KTt0aGlzLnNldFRleHQoZCk7YT1lLmdldEJCb3goKTtkLml0ZW1XaWR0aD1kLmNoZWNrYm94T2Zmc2V0PWMuaXRlbVdpZHRofHxkLmxlZ2VuZEl0ZW1XaWR0aHx8YS53aWR0aCtuO3RoaXMubWF4SXRlbVdpZHRoPU1hdGgubWF4KHRoaXMubWF4SXRlbVdpZHRoLGQuaXRlbVdpZHRoKTt0aGlzLnRvdGFsSXRlbVdpZHRoKz1kLml0ZW1XaWR0aDt0aGlzLml0ZW1IZWlnaHQ9ZC5pdGVtSGVpZ2h0PU1hdGgucm91bmQoZC5sZWdlbmRJdGVtSGVpZ2h0fHxhLmhlaWdodHx8dGhpcy5zeW1ib2xIZWlnaHQpfTtkLnByb3RvdHlwZS5sYXlvdXRJdGVtPWZ1bmN0aW9uKGQpe3ZhciBhPXRoaXMub3B0aW9ucyxmPXRoaXMucGFkZGluZyxjPSJob3Jpem9udGFsIj09PWEubGF5b3V0LGs9ZC5pdGVtSGVpZ2h0LGw9dGhpcy5pdGVtTWFyZ2luQm90dG9tLG09CnRoaXMuaXRlbU1hcmdpblRvcCxwPWM/SyhhLml0ZW1EaXN0YW5jZSwyMCk6MCxuPXRoaXMubWF4TGVnZW5kV2lkdGg7YT1hLmFsaWduQ29sdW1ucyYmdGhpcy50b3RhbEl0ZW1XaWR0aD5uP3RoaXMubWF4SXRlbVdpZHRoOmQuaXRlbVdpZHRoO2MmJnRoaXMuaXRlbVgtZithPm4mJih0aGlzLml0ZW1YPWYsdGhpcy5sYXN0TGluZUhlaWdodCYmKHRoaXMuaXRlbVkrPW0rdGhpcy5sYXN0TGluZUhlaWdodCtsKSx0aGlzLmxhc3RMaW5lSGVpZ2h0PTApO3RoaXMubGFzdEl0ZW1ZPW0rdGhpcy5pdGVtWStsO3RoaXMubGFzdExpbmVIZWlnaHQ9TWF0aC5tYXgoayx0aGlzLmxhc3RMaW5lSGVpZ2h0KTtkLl9sZWdlbmRJdGVtUG9zPVt0aGlzLml0ZW1YLHRoaXMuaXRlbVldO2M/dGhpcy5pdGVtWCs9YToodGhpcy5pdGVtWSs9bStrK2wsdGhpcy5sYXN0TGluZUhlaWdodD1rKTt0aGlzLm9mZnNldFdpZHRoPXRoaXMud2lkdGhPcHRpb258fE1hdGgubWF4KChjP3RoaXMuaXRlbVgtZi0oZC5jaGVja2JveD8KMDpwKTphKStmLHRoaXMub2Zmc2V0V2lkdGgpfTtkLnByb3RvdHlwZS5nZXRBbGxJdGVtcz1mdW5jdGlvbigpe3ZhciBkPVtdO3RoaXMuY2hhcnQuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGY9YSYmYS5vcHRpb25zO2EmJksoZi5zaG93SW5MZWdlbmQsSChmLmxpbmtlZFRvKT8hMTp2b2lkIDAsITApJiYoZD1kLmNvbmNhdChhLmxlZ2VuZEl0ZW1zfHwoInBvaW50Ij09PWYubGVnZW5kVHlwZT9hLmRhdGE6YSkpKX0pO3QodGhpcywiYWZ0ZXJHZXRBbGxJdGVtcyIse2FsbEl0ZW1zOmR9KTtyZXR1cm4gZH07ZC5wcm90b3R5cGUuZ2V0QWxpZ25tZW50PWZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5vcHRpb25zO3JldHVybiB0aGlzLnByb3hpbWF0ZT9kLmFsaWduLmNoYXJBdCgwKSsidHYiOmQuZmxvYXRpbmc/IiI6ZC5hbGlnbi5jaGFyQXQoMCkrZC52ZXJ0aWNhbEFsaWduLmNoYXJBdCgwKStkLmxheW91dC5jaGFyQXQoMCl9O2QucHJvdG90eXBlLmFkanVzdE1hcmdpbnM9ZnVuY3Rpb24oZCwKYSl7dmFyIGM9dGhpcy5jaGFydCxmPXRoaXMub3B0aW9ucyxrPXRoaXMuZ2V0QWxpZ25tZW50KCk7ayYmWy8obHRofGN0fHJ0aCkvLC8ocnR2fHJtfHJidikvLC8ocmJofGNifGxiaCkvLC8obGJ2fGxtfGx0dikvXS5mb3JFYWNoKGZ1bmN0aW9uKGwscCl7bC50ZXN0KGspJiYhSChkW3BdKSYmKGNbbVtwXV09TWF0aC5tYXgoY1ttW3BdXSxjLmxlZ2VuZFsocCsxKSUyPyJsZWdlbmRIZWlnaHQiOiJsZWdlbmRXaWR0aCJdK1sxLC0xLC0xLDFdW3BdKmZbcCUyPyJ4IjoieSJdK0soZi5tYXJnaW4sMTIpK2FbcF0rKGMudGl0bGVPZmZzZXRbcF18fDApKSl9KX07ZC5wcm90b3R5cGUucHJveGltYXRlUG9zaXRpb25zPWZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5jaGFydCxhPVtdLGM9ImxlZnQiPT09dGhpcy5vcHRpb25zLmFsaWduO3RoaXMuYWxsSXRlbXMuZm9yRWFjaChmdW5jdGlvbihmKXt2YXIgaz1jO2lmKGYueUF4aXMmJmYucG9pbnRzKXtmLnhBeGlzLm9wdGlvbnMucmV2ZXJzZWQmJihrPQohayk7dmFyIGw9SihrP2YucG9pbnRzOmYucG9pbnRzLnNsaWNlKDApLnJldmVyc2UoKSxmdW5jdGlvbihhKXtyZXR1cm4gTChhLnBsb3RZKX0pO2s9dGhpcy5pdGVtTWFyZ2luVG9wK2YubGVnZW5kSXRlbS5nZXRCQm94KCkuaGVpZ2h0K3RoaXMuaXRlbU1hcmdpbkJvdHRvbTt2YXIgbT1mLnlBeGlzLnRvcC1kLnBsb3RUb3A7Zi52aXNpYmxlPyhsPWw/bC5wbG90WTpmLnlBeGlzLmhlaWdodCxsKz1tLS4zKmspOmw9bStmLnlBeGlzLmhlaWdodDthLnB1c2goe3RhcmdldDpsLHNpemU6ayxpdGVtOmZ9KX19LHRoaXMpO2cuZGlzdHJpYnV0ZShhLGQucGxvdEhlaWdodCk7YS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuaXRlbS5fbGVnZW5kSXRlbVBvc1sxXT1kLnBsb3RUb3AtZC5zcGFjaW5nWzBdK2EucG9zfSl9O2QucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBkPXRoaXMuY2hhcnQsYT1kLnJlbmRlcmVyLGM9dGhpcy5ncm91cCxrPXRoaXMuYm94LGw9dGhpcy5vcHRpb25zLG09CnRoaXMucGFkZGluZzt0aGlzLml0ZW1YPW07dGhpcy5pdGVtWT10aGlzLmluaXRpYWxJdGVtWTt0aGlzLmxhc3RJdGVtWT10aGlzLm9mZnNldFdpZHRoPTA7dGhpcy53aWR0aE9wdGlvbj1uKGwud2lkdGgsZC5zcGFjaW5nQm94LndpZHRoLW0pO3ZhciBwPWQuc3BhY2luZ0JveC53aWR0aC0yKm0tbC54Oy0xPFsicm0iLCJsbSJdLmluZGV4T2YodGhpcy5nZXRBbGlnbm1lbnQoKS5zdWJzdHJpbmcoMCwyKSkmJihwLz0yKTt0aGlzLm1heExlZ2VuZFdpZHRoPXRoaXMud2lkdGhPcHRpb258fHA7Y3x8KHRoaXMuZ3JvdXA9Yz1hLmcoImxlZ2VuZCIpLmF0dHIoe3pJbmRleDo3fSkuYWRkKCksdGhpcy5jb250ZW50R3JvdXA9YS5nKCkuYXR0cih7ekluZGV4OjF9KS5hZGQoYyksdGhpcy5zY3JvbGxHcm91cD1hLmcoKS5hZGQodGhpcy5jb250ZW50R3JvdXApKTt0aGlzLnJlbmRlclRpdGxlKCk7dmFyIGc9dGhpcy5nZXRBbGxJdGVtcygpO0MoZyxmdW5jdGlvbihhLGUpe3JldHVybihhLm9wdGlvbnMmJgphLm9wdGlvbnMubGVnZW5kSW5kZXh8fDApLShlLm9wdGlvbnMmJmUub3B0aW9ucy5sZWdlbmRJbmRleHx8MCl9KTtsLnJldmVyc2VkJiZnLnJldmVyc2UoKTt0aGlzLmFsbEl0ZW1zPWc7dGhpcy5kaXNwbGF5PXA9ISFnLmxlbmd0aDt0aGlzLml0ZW1IZWlnaHQ9dGhpcy50b3RhbEl0ZW1XaWR0aD10aGlzLm1heEl0ZW1XaWR0aD10aGlzLmxhc3RMaW5lSGVpZ2h0PTA7Zy5mb3JFYWNoKHRoaXMucmVuZGVySXRlbSx0aGlzKTtnLmZvckVhY2godGhpcy5sYXlvdXRJdGVtLHRoaXMpO2c9KHRoaXMud2lkdGhPcHRpb258fHRoaXMub2Zmc2V0V2lkdGgpK207dmFyIHI9dGhpcy5sYXN0SXRlbVkrdGhpcy5sYXN0TGluZUhlaWdodCt0aGlzLnRpdGxlSGVpZ2h0O3I9dGhpcy5oYW5kbGVPdmVyZmxvdyhyKTtyKz1tO2t8fCh0aGlzLmJveD1rPWEucmVjdCgpLmFkZENsYXNzKCJoaWdoY2hhcnRzLWxlZ2VuZC1ib3giKS5hdHRyKHtyOmwuYm9yZGVyUmFkaXVzfSkuYWRkKGMpLGsuaXNOZXc9ITApOwpkLnN0eWxlZE1vZGV8fGsuYXR0cih7c3Ryb2tlOmwuYm9yZGVyQ29sb3IsInN0cm9rZS13aWR0aCI6bC5ib3JkZXJXaWR0aHx8MCxmaWxsOmwuYmFja2dyb3VuZENvbG9yfHwibm9uZSJ9KS5zaGFkb3cobC5zaGFkb3cpOzA8ZyYmMDxyJiYoa1trLmlzTmV3PyJhdHRyIjoiYW5pbWF0ZSJdKGsuY3Jpc3AuY2FsbCh7fSx7eDowLHk6MCx3aWR0aDpnLGhlaWdodDpyfSxrLnN0cm9rZVdpZHRoKCkpKSxrLmlzTmV3PSExKTtrW3A/InNob3ciOiJoaWRlIl0oKTtkLnN0eWxlZE1vZGUmJiJub25lIj09PWMuZ2V0U3R5bGUoImRpc3BsYXkiKSYmKGc9cj0wKTt0aGlzLmxlZ2VuZFdpZHRoPWc7dGhpcy5sZWdlbmRIZWlnaHQ9cjtwJiZ0aGlzLmFsaWduKCk7dGhpcy5wcm94aW1hdGV8fHRoaXMucG9zaXRpb25JdGVtcygpO3QodGhpcywiYWZ0ZXJSZW5kZXIiKX07ZC5wcm90b3R5cGUuYWxpZ249ZnVuY3Rpb24oZCl7dm9pZCAwPT09ZCYmKGQ9dGhpcy5jaGFydC5zcGFjaW5nQm94KTt2YXIgYT0KdGhpcy5jaGFydCxjPXRoaXMub3B0aW9ucyxmPWQueTsvKGx0aHxjdHxydGgpLy50ZXN0KHRoaXMuZ2V0QWxpZ25tZW50KCkpJiYwPGEudGl0bGVPZmZzZXRbMF0/Zis9YS50aXRsZU9mZnNldFswXTovKGxiaHxjYnxyYmgpLy50ZXN0KHRoaXMuZ2V0QWxpZ25tZW50KCkpJiYwPGEudGl0bGVPZmZzZXRbMl0mJihmLT1hLnRpdGxlT2Zmc2V0WzJdKTtmIT09ZC55JiYoZD12KGQse3k6Zn0pKTt0aGlzLmdyb3VwLmFsaWduKHYoYyx7d2lkdGg6dGhpcy5sZWdlbmRXaWR0aCxoZWlnaHQ6dGhpcy5sZWdlbmRIZWlnaHQsdmVydGljYWxBbGlnbjp0aGlzLnByb3hpbWF0ZT8idG9wIjpjLnZlcnRpY2FsQWxpZ259KSwhMCxkKX07ZC5wcm90b3R5cGUuaGFuZGxlT3ZlcmZsb3c9ZnVuY3Rpb24oZCl7dmFyIGE9dGhpcyxjPXRoaXMuY2hhcnQsZj1jLnJlbmRlcmVyLGs9dGhpcy5vcHRpb25zLGw9ay55LG09dGhpcy5wYWRkaW5nO2w9Yy5zcGFjaW5nQm94LmhlaWdodCsoInRvcCI9PT1rLnZlcnRpY2FsQWxpZ24/Ci1sOmwpLW07dmFyIHA9ay5tYXhIZWlnaHQsbixnPXRoaXMuY2xpcFJlY3QsZT1rLm5hdmlnYXRpb24sYj1LKGUuYW5pbWF0aW9uLCEwKSxoPWUuYXJyb3dTaXplfHwxMix6PXRoaXMubmF2LHg9dGhpcy5wYWdlcyxyLHQ9dGhpcy5hbGxJdGVtcyx2PWZ1bmN0aW9uKGIpeyJudW1iZXIiPT09dHlwZW9mIGI/Zy5hdHRyKHtoZWlnaHQ6Yn0pOmcmJihhLmNsaXBSZWN0PWcuZGVzdHJveSgpLGEuY29udGVudEdyb3VwLmNsaXAoKSk7YS5jb250ZW50R3JvdXAuZGl2JiYoYS5jb250ZW50R3JvdXAuZGl2LnN0eWxlLmNsaXA9Yj8icmVjdCgiK20rInB4LDk5OTlweCwiKyhtK2IpKyJweCwwKSI6ImF1dG8iKX0scT1mdW5jdGlvbihiKXthW2JdPWYuY2lyY2xlKDAsMCwxLjMqaCkudHJhbnNsYXRlKGgvMixoLzIpLmFkZCh6KTtjLnN0eWxlZE1vZGV8fGFbYl0uYXR0cigiZmlsbCIsInJnYmEoMCwwLDAsMC4wMDAxKSIpO3JldHVybiBhW2JdfTsiaG9yaXpvbnRhbCIhPT1rLmxheW91dHx8Im1pZGRsZSI9PT0Kay52ZXJ0aWNhbEFsaWdufHxrLmZsb2F0aW5nfHwobC89Mik7cCYmKGw9TWF0aC5taW4obCxwKSk7eC5sZW5ndGg9MDtkPmwmJiExIT09ZS5lbmFibGVkPyh0aGlzLmNsaXBIZWlnaHQ9bj1NYXRoLm1heChsLTIwLXRoaXMudGl0bGVIZWlnaHQtbSwwKSx0aGlzLmN1cnJlbnRQYWdlPUsodGhpcy5jdXJyZW50UGFnZSwxKSx0aGlzLmZ1bGxIZWlnaHQ9ZCx0LmZvckVhY2goZnVuY3Rpb24oYixhKXt2YXIgZT1iLl9sZWdlbmRJdGVtUG9zWzFdLGQ9TWF0aC5yb3VuZChiLmxlZ2VuZEl0ZW0uZ2V0QkJveCgpLmhlaWdodCksaD14Lmxlbmd0aDtpZighaHx8ZS14W2gtMV0+biYmKHJ8fGUpIT09eFtoLTFdKXgucHVzaChyfHxlKSxoKys7Yi5wYWdlSXg9aC0xO3ImJih0W2EtMV0ucGFnZUl4PWgtMSk7YT09PXQubGVuZ3RoLTEmJmUrZC14W2gtMV0+biYmZSE9PXImJih4LnB1c2goZSksYi5wYWdlSXg9aCk7ZSE9PXImJihyPWUpfSksZ3x8KGc9YS5jbGlwUmVjdD1mLmNsaXBSZWN0KDAsbSw5OTk5LAowKSxhLmNvbnRlbnRHcm91cC5jbGlwKGcpKSx2KG4pLHp8fCh0aGlzLm5hdj16PWYuZygpLmF0dHIoe3pJbmRleDoxfSkuYWRkKHRoaXMuZ3JvdXApLHRoaXMudXA9Zi5zeW1ib2woInRyaWFuZ2xlIiwwLDAsaCxoKS5hZGQoeikscSgidXBUcmFja2VyIikub24oImNsaWNrIixmdW5jdGlvbigpe2Euc2Nyb2xsKC0xLGIpfSksdGhpcy5wYWdlcj1mLnRleHQoIiIsMTUsMTApLmFkZENsYXNzKCJoaWdoY2hhcnRzLWxlZ2VuZC1uYXZpZ2F0aW9uIiksYy5zdHlsZWRNb2RlfHx0aGlzLnBhZ2VyLmNzcyhlLnN0eWxlKSx0aGlzLnBhZ2VyLmFkZCh6KSx0aGlzLmRvd249Zi5zeW1ib2woInRyaWFuZ2xlLWRvd24iLDAsMCxoLGgpLmFkZCh6KSxxKCJkb3duVHJhY2tlciIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXthLnNjcm9sbCgxLGIpfSkpLGEuc2Nyb2xsKDApLGQ9bCk6eiYmKHYoKSx0aGlzLm5hdj16LmRlc3Ryb3koKSx0aGlzLnNjcm9sbEdyb3VwLmF0dHIoe3RyYW5zbGF0ZVk6MX0pLHRoaXMuY2xpcEhlaWdodD0KMCk7cmV0dXJuIGR9O2QucHJvdG90eXBlLnNjcm9sbD1mdW5jdGlvbihkLGEpe3ZhciBjPXRoaXMsZj10aGlzLmNoYXJ0LGs9dGhpcy5wYWdlcyxsPWsubGVuZ3RoLG09dGhpcy5jdXJyZW50UGFnZStkO2Q9dGhpcy5jbGlwSGVpZ2h0O3ZhciBwPXRoaXMub3B0aW9ucy5uYXZpZ2F0aW9uLG49dGhpcy5wYWdlcixnPXRoaXMucGFkZGluZzttPmwmJihtPWwpOzA8bSYmKCJ1bmRlZmluZWQiIT09dHlwZW9mIGEmJnIoYSxmKSx0aGlzLm5hdi5hdHRyKHt0cmFuc2xhdGVYOmcsdHJhbnNsYXRlWTpkK3RoaXMucGFkZGluZys3K3RoaXMudGl0bGVIZWlnaHQsdmlzaWJpbGl0eToidmlzaWJsZSJ9KSxbdGhpcy51cCx0aGlzLnVwVHJhY2tlcl0uZm9yRWFjaChmdW5jdGlvbihhKXthLmF0dHIoeyJjbGFzcyI6MT09PW0/ImhpZ2hjaGFydHMtbGVnZW5kLW5hdi1pbmFjdGl2ZSI6ImhpZ2hjaGFydHMtbGVnZW5kLW5hdi1hY3RpdmUifSl9KSxuLmF0dHIoe3RleHQ6bSsiLyIrbH0pLFt0aGlzLmRvd24sCnRoaXMuZG93blRyYWNrZXJdLmZvckVhY2goZnVuY3Rpb24oYSl7YS5hdHRyKHt4OjE4K3RoaXMucGFnZXIuZ2V0QkJveCgpLndpZHRoLCJjbGFzcyI6bT09PWw/ImhpZ2hjaGFydHMtbGVnZW5kLW5hdi1pbmFjdGl2ZSI6ImhpZ2hjaGFydHMtbGVnZW5kLW5hdi1hY3RpdmUifSl9LHRoaXMpLGYuc3R5bGVkTW9kZXx8KHRoaXMudXAuYXR0cih7ZmlsbDoxPT09bT9wLmluYWN0aXZlQ29sb3I6cC5hY3RpdmVDb2xvcn0pLHRoaXMudXBUcmFja2VyLmNzcyh7Y3Vyc29yOjE9PT1tPyJkZWZhdWx0IjoicG9pbnRlciJ9KSx0aGlzLmRvd24uYXR0cih7ZmlsbDptPT09bD9wLmluYWN0aXZlQ29sb3I6cC5hY3RpdmVDb2xvcn0pLHRoaXMuZG93blRyYWNrZXIuY3NzKHtjdXJzb3I6bT09PWw/ImRlZmF1bHQiOiJwb2ludGVyIn0pKSx0aGlzLnNjcm9sbE9mZnNldD0ta1ttLTFdK3RoaXMuaW5pdGlhbEl0ZW1ZLHRoaXMuc2Nyb2xsR3JvdXAuYW5pbWF0ZSh7dHJhbnNsYXRlWTp0aGlzLnNjcm9sbE9mZnNldH0pLAp0aGlzLmN1cnJlbnRQYWdlPW0sdGhpcy5wb3NpdGlvbkNoZWNrYm94ZXMoKSxhPXkoSyhhLGYucmVuZGVyZXIuZ2xvYmFsQW5pbWF0aW9uLCEwKSksSShmdW5jdGlvbigpe3QoYywiYWZ0ZXJTY3JvbGwiLHtjdXJyZW50UGFnZTptfSl9LGEuZHVyYXRpb258fDApKX07cmV0dXJuIGR9KCk7KC9UcmlkZW50XC83XC4wLy50ZXN0KGQubmF2aWdhdG9yJiZkLm5hdmlnYXRvci51c2VyQWdlbnQpfHxwKSYmYyhsLnByb3RvdHlwZSwicG9zaXRpb25JdGVtIixmdW5jdGlvbihkLGMpe3ZhciBhPXRoaXMsZj1mdW5jdGlvbigpe2MuX2xlZ2VuZEl0ZW1Qb3MmJmQuY2FsbChhLGMpfTtmKCk7YS5idWJibGVMZWdlbmR8fHNldFRpbWVvdXQoZil9KTtnLkxlZ2VuZD1sO3JldHVybiBnLkxlZ2VuZH0pO08ocSwicGFydHMvQ2hhcnQuanMiLFtxWyJwYXJ0cy9BeGlzLmpzIl0scVsicGFydHMvR2xvYmFscy5qcyJdLHFbInBhcnRzL0xlZ2VuZC5qcyJdLHFbInBhcnRzL01TUG9pbnRlci5qcyJdLHFbInBhcnRzL09wdGlvbnMuanMiXSwKcVsicGFydHMvUG9pbnRlci5qcyJdLHFbInBhcnRzL1RpbWUuanMiXSxxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyxjLHEseSxCLEgsRCxKKXt2YXIgdD1jLmNoYXJ0cyxHPWMuZG9jLEw9Yy5zZXJpZXNUeXBlcyx2PWMud2luLEs9Qi5kZWZhdWx0T3B0aW9ucyxuPUouYWRkRXZlbnQscj1KLmFuaW1hdGUsQz1KLmFuaW1PYmplY3QsST1KLmF0dHIscD1KLmNyZWF0ZUVsZW1lbnQsbT1KLmNzcyxkPUouZGVmaW5lZCxsPUouZGlzY2FyZEVsZW1lbnQsaz1KLmVyYXNlLGY9Si5lcnJvcixhPUouZXh0ZW5kLEE9Si5maW5kLHU9Si5maXJlRXZlbnQsRT1KLmdldFN0eWxlLFA9Si5pc0FycmF5LHc9Si5pc0Z1bmN0aW9uLE09Si5pc051bWJlcixGPUouaXNPYmplY3QsUT1KLmlzU3RyaW5nLGU9Si5tZXJnZSxiPUoubnVtYmVyRm9ybWF0LGg9Si5vYmplY3RFYWNoLHo9Si5waWNrLHg9Si5wSW50LE49Si5yZWxhdGl2ZUxlbmd0aCxhYT1KLnJlbW92ZUV2ZW50LFo9Si5zZXRBbmltYXRpb24sClY9Si5zcGxhdCxZPUouc3luY1RpbWVvdXQsYmE9Si51bmlxdWVLZXksVT1jLm1hcmdpbk5hbWVzLFg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBCKGIsYSxlKXt0aGlzLnlBeGlzPXRoaXMueEF4aXM9dGhpcy51c2VyT3B0aW9ucz10aGlzLnRpdGxlT2Zmc2V0PXRoaXMudGltZT10aGlzLnN5bWJvbENvdW50ZXI9dGhpcy5zcGFjaW5nQm94PXRoaXMuc3BhY2luZz10aGlzLnNlcmllcz10aGlzLnJlbmRlclRvPXRoaXMucmVuZGVyZXI9dGhpcy5wb2ludGVyPXRoaXMucG9pbnRDb3VudD10aGlzLnBsb3RXaWR0aD10aGlzLnBsb3RUb3A9dGhpcy5wbG90TGVmdD10aGlzLnBsb3RIZWlnaHQ9dGhpcy5wbG90Qm94PXRoaXMub3B0aW9ucz10aGlzLm51bWJlckZvcm1hdHRlcj10aGlzLm1hcmdpbj10aGlzLmxlZ2VuZD10aGlzLmxhYmVsQ29sbGVjdG9ycz10aGlzLmlzUmVzaXppbmc9dGhpcy5pbmRleD10aGlzLmNvbnRhaW5lcj10aGlzLmNvbG9yQ291bnRlcj10aGlzLmNsaXBCb3g9dGhpcy5jaGFydFdpZHRoPQp0aGlzLmNoYXJ0SGVpZ2h0PXRoaXMuYm91bmRzPXRoaXMuYXhpc09mZnNldD10aGlzLmF4ZXM9dm9pZCAwO3RoaXMuZ2V0QXJncyhiLGEsZSl9Qi5wcm90b3R5cGUuZ2V0QXJncz1mdW5jdGlvbihiLGEsZSl7UShiKXx8Yi5ub2RlTmFtZT8odGhpcy5yZW5kZXJUbz1iLHRoaXMuaW5pdChhLGUpKTp0aGlzLmluaXQoYixhKX07Qi5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihhLGQpe3ZhciBmLGw9YS5zZXJpZXMsaz1hLnBsb3RPcHRpb25zfHx7fTt1KHRoaXMsImluaXQiLHthcmdzOmFyZ3VtZW50c30sZnVuY3Rpb24oKXthLnNlcmllcz1udWxsO2Y9ZShLLGEpO3ZhciBtPWYuY2hhcnR8fHt9O2goZi5wbG90T3B0aW9ucyxmdW5jdGlvbihiLGEpe0YoYikmJihiLnRvb2x0aXA9a1thXSYmZShrW2FdLnRvb2x0aXApfHx2b2lkIDApfSk7Zi50b29sdGlwLnVzZXJPcHRpb25zPWEuY2hhcnQmJmEuY2hhcnQuZm9yRXhwb3J0JiZhLnRvb2x0aXAudXNlck9wdGlvbnN8fGEudG9vbHRpcDtmLnNlcmllcz0KYS5zZXJpZXM9bDt0aGlzLnVzZXJPcHRpb25zPWE7dmFyIHA9bS5ldmVudHM7dGhpcy5tYXJnaW49W107dGhpcy5zcGFjaW5nPVtdO3RoaXMuYm91bmRzPXtoOnt9LHY6e319O3RoaXMubGFiZWxDb2xsZWN0b3JzPVtdO3RoaXMuY2FsbGJhY2s9ZDt0aGlzLmlzUmVzaXppbmc9MDt0aGlzLm9wdGlvbnM9Zjt0aGlzLmF4ZXM9W107dGhpcy5zZXJpZXM9W107dGhpcy50aW1lPWEudGltZSYmT2JqZWN0LmtleXMoYS50aW1lKS5sZW5ndGg/bmV3IEQoYS50aW1lKTpjLnRpbWU7dGhpcy5udW1iZXJGb3JtYXR0ZXI9bS5udW1iZXJGb3JtYXR0ZXJ8fGI7dGhpcy5zdHlsZWRNb2RlPW0uc3R5bGVkTW9kZTt0aGlzLmhhc0NhcnRlc2lhblNlcmllcz1tLnNob3dBeGVzO3ZhciBnPXRoaXM7Zy5pbmRleD10Lmxlbmd0aDt0LnB1c2goZyk7Yy5jaGFydENvdW50Kys7cCYmaChwLGZ1bmN0aW9uKGIsYSl7dyhiKSYmbihnLGEsYil9KTtnLnhBeGlzPVtdO2cueUF4aXM9W107Zy5wb2ludENvdW50PWcuY29sb3JDb3VudGVyPQpnLnN5bWJvbENvdW50ZXI9MDt1KGcsImFmdGVySW5pdCIpO2cuZmlyc3RSZW5kZXIoKX0pfTtCLnByb3RvdHlwZS5pbml0U2VyaWVzPWZ1bmN0aW9uKGIpe3ZhciBhPXRoaXMub3B0aW9ucy5jaGFydDthPWIudHlwZXx8YS50eXBlfHxhLmRlZmF1bHRTZXJpZXNUeXBlO3ZhciBlPUxbYV07ZXx8ZigxNywhMCx0aGlzLHttaXNzaW5nTW9kdWxlRm9yOmF9KTthPW5ldyBlO2EuaW5pdCh0aGlzLGIpO3JldHVybiBhfTtCLnByb3RvdHlwZS5zZXRTZXJpZXNEYXRhPWZ1bmN0aW9uKCl7dGhpcy5nZXRTZXJpZXNPcmRlckJ5TGlua3MoKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IucG9pbnRzfHxiLmRhdGF8fCFiLmVuYWJsZWREYXRhU29ydGluZ3x8Yi5zZXREYXRhKGIub3B0aW9ucy5kYXRhLCExKX0pfTtCLnByb3RvdHlwZS5nZXRTZXJpZXNPcmRlckJ5TGlua3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZXJpZXMuY29uY2F0KCkuc29ydChmdW5jdGlvbihiLGEpe3JldHVybiBiLmxpbmtlZFNlcmllcy5sZW5ndGh8fAphLmxpbmtlZFNlcmllcy5sZW5ndGg/YS5saW5rZWRTZXJpZXMubGVuZ3RoLWIubGlua2VkU2VyaWVzLmxlbmd0aDowfSl9O0IucHJvdG90eXBlLm9yZGVyU2VyaWVzPWZ1bmN0aW9uKGIpe3ZhciBhPXRoaXMuc2VyaWVzO2ZvcihiPWJ8fDA7YjxhLmxlbmd0aDtiKyspYVtiXSYmKGFbYl0uaW5kZXg9YixhW2JdLm5hbWU9YVtiXS5nZXROYW1lKCkpfTtCLnByb3RvdHlwZS5pc0luc2lkZVBsb3Q9ZnVuY3Rpb24oYixhLGUpe3ZhciBkPWU/YTpiO2I9ZT9iOmE7ZD17eDpkLHk6Yixpc0luc2lkZVBsb3Q6MDw9ZCYmZDw9dGhpcy5wbG90V2lkdGgmJjA8PWImJmI8PXRoaXMucGxvdEhlaWdodH07dSh0aGlzLCJhZnRlcklzSW5zaWRlUGxvdCIsZCk7cmV0dXJuIGQuaXNJbnNpZGVQbG90fTtCLnByb3RvdHlwZS5yZWRyYXc9ZnVuY3Rpb24oYil7dSh0aGlzLCJiZWZvcmVSZWRyYXciKTt2YXIgZT10aGlzLGQ9ZS5heGVzLGg9ZS5zZXJpZXMsYz1lLnBvaW50ZXIsZj1lLmxlZ2VuZCxsPWUudXNlck9wdGlvbnMubGVnZW5kLAprPWUuaXNEaXJ0eUxlZ2VuZCxtPWUuaGFzQ2FydGVzaWFuU2VyaWVzLHA9ZS5pc0RpcnR5Qm94LGc9ZS5yZW5kZXJlcixuPWcuaXNIaWRkZW4oKSx4PVtdO2Uuc2V0UmVzcG9uc2l2ZSYmZS5zZXRSZXNwb25zaXZlKCExKTtaKGUuaGFzUmVuZGVyZWQ/YjohMSxlKTtuJiZlLnRlbXBvcmFyeURpc3BsYXkoKTtlLmxheU91dFRpdGxlcygpO2ZvcihiPWgubGVuZ3RoO2ItLTspe3ZhciB6PWhbYl07aWYoei5vcHRpb25zLnN0YWNraW5nKXt2YXIgdz0hMDtpZih6LmlzRGlydHkpe3ZhciByPSEwO2JyZWFrfX19aWYocilmb3IoYj1oLmxlbmd0aDtiLS07KXo9aFtiXSx6Lm9wdGlvbnMuc3RhY2tpbmcmJih6LmlzRGlydHk9ITApO2guZm9yRWFjaChmdW5jdGlvbihiKXtiLmlzRGlydHkmJigicG9pbnQiPT09Yi5vcHRpb25zLmxlZ2VuZFR5cGU/KGIudXBkYXRlVG90YWxzJiZiLnVwZGF0ZVRvdGFscygpLGs9ITApOmwmJihsLmxhYmVsRm9ybWF0dGVyfHxsLmxhYmVsRm9ybWF0KSYmKGs9ITApKTsKYi5pc0RpcnR5RGF0YSYmdShiLCJ1cGRhdGVkRGF0YSIpfSk7ayYmZiYmZi5vcHRpb25zLmVuYWJsZWQmJihmLnJlbmRlcigpLGUuaXNEaXJ0eUxlZ2VuZD0hMSk7dyYmZS5nZXRTdGFja3MoKTttJiZkLmZvckVhY2goZnVuY3Rpb24oYil7ZS5pc1Jlc2l6aW5nJiZNKGIubWluKXx8KGIudXBkYXRlTmFtZXMoKSxiLnNldFNjYWxlKCkpfSk7ZS5nZXRNYXJnaW5zKCk7bSYmKGQuZm9yRWFjaChmdW5jdGlvbihiKXtiLmlzRGlydHkmJihwPSEwKX0pLGQuZm9yRWFjaChmdW5jdGlvbihiKXt2YXIgZT1iLm1pbisiLCIrYi5tYXg7Yi5leHRLZXkhPT1lJiYoYi5leHRLZXk9ZSx4LnB1c2goZnVuY3Rpb24oKXt1KGIsImFmdGVyU2V0RXh0cmVtZXMiLGEoYi5ldmVudEFyZ3MsYi5nZXRFeHRyZW1lcygpKSk7ZGVsZXRlIGIuZXZlbnRBcmdzfSkpOyhwfHx3KSYmYi5yZWRyYXcoKX0pKTtwJiZlLmRyYXdDaGFydEJveCgpO3UoZSwicHJlZHJhdyIpO2guZm9yRWFjaChmdW5jdGlvbihiKXsocHx8CmIuaXNEaXJ0eSkmJmIudmlzaWJsZSYmYi5yZWRyYXcoKTtiLmlzRGlydHlEYXRhPSExfSk7YyYmYy5yZXNldCghMCk7Zy5kcmF3KCk7dShlLCJyZWRyYXciKTt1KGUsInJlbmRlciIpO24mJmUudGVtcG9yYXJ5RGlzcGxheSghMCk7eC5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuY2FsbCgpfSl9O0IucHJvdG90eXBlLmdldD1mdW5jdGlvbihiKXtmdW5jdGlvbiBhKGEpe3JldHVybiBhLmlkPT09Ynx8YS5vcHRpb25zJiZhLm9wdGlvbnMuaWQ9PT1ifXZhciBlPXRoaXMuc2VyaWVzLGQ7dmFyIGg9QSh0aGlzLmF4ZXMsYSl8fEEodGhpcy5zZXJpZXMsYSk7Zm9yKGQ9MDshaCYmZDxlLmxlbmd0aDtkKyspaD1BKGVbZF0ucG9pbnRzfHxbXSxhKTtyZXR1cm4gaH07Qi5wcm90b3R5cGUuZ2V0QXhlcz1mdW5jdGlvbigpe3ZhciBiPXRoaXMsYT10aGlzLm9wdGlvbnMsZT1hLnhBeGlzPVYoYS54QXhpc3x8e30pO2E9YS55QXhpcz1WKGEueUF4aXN8fHt9KTt1KHRoaXMsImdldEF4ZXMiKTtlLmZvckVhY2goZnVuY3Rpb24oYiwKYSl7Yi5pbmRleD1hO2IuaXNYPSEwfSk7YS5mb3JFYWNoKGZ1bmN0aW9uKGIsYSl7Yi5pbmRleD1hfSk7ZS5jb25jYXQoYSkuZm9yRWFjaChmdW5jdGlvbihhKXtuZXcgZyhiLGEpfSk7dSh0aGlzLCJhZnRlckdldEF4ZXMiKX07Qi5wcm90b3R5cGUuZ2V0U2VsZWN0ZWRQb2ludHM9ZnVuY3Rpb24oKXt2YXIgYj1bXTt0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2I9Yi5jb25jYXQoYS5nZXRQb2ludHNDb2xsZWN0aW9uKCkuZmlsdGVyKGZ1bmN0aW9uKGIpe3JldHVybiB6KGIuc2VsZWN0ZWRTdGFnaW5nLGIuc2VsZWN0ZWQpfSkpfSk7cmV0dXJuIGJ9O0IucHJvdG90eXBlLmdldFNlbGVjdGVkU2VyaWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VyaWVzLmZpbHRlcihmdW5jdGlvbihiKXtyZXR1cm4gYi5zZWxlY3RlZH0pfTtCLnByb3RvdHlwZS5zZXRUaXRsZT1mdW5jdGlvbihiLGEsZSl7dGhpcy5hcHBseURlc2NyaXB0aW9uKCJ0aXRsZSIsYik7dGhpcy5hcHBseURlc2NyaXB0aW9uKCJzdWJ0aXRsZSIsCmEpO3RoaXMuYXBwbHlEZXNjcmlwdGlvbigiY2FwdGlvbiIsdm9pZCAwKTt0aGlzLmxheU91dFRpdGxlcyhlKX07Qi5wcm90b3R5cGUuYXBwbHlEZXNjcmlwdGlvbj1mdW5jdGlvbihiLGEpe3ZhciBkPXRoaXMsaD0idGl0bGUiPT09Yj97Y29sb3I6IiMzMzMzMzMiLGZvbnRTaXplOnRoaXMub3B0aW9ucy5pc1N0b2NrPyIxNnB4IjoiMThweCJ9Ontjb2xvcjoiIzY2NjY2NiJ9O2g9dGhpcy5vcHRpb25zW2JdPWUoIXRoaXMuc3R5bGVkTW9kZSYme3N0eWxlOmh9LHRoaXMub3B0aW9uc1tiXSxhKTt2YXIgYz10aGlzW2JdO2MmJmEmJih0aGlzW2JdPWM9Yy5kZXN0cm95KCkpO2gmJiFjJiYoYz10aGlzLnJlbmRlcmVyLnRleHQoaC50ZXh0LDAsMCxoLnVzZUhUTUwpLmF0dHIoe2FsaWduOmguYWxpZ24sImNsYXNzIjoiaGlnaGNoYXJ0cy0iK2IsekluZGV4OmguekluZGV4fHw0fSkuYWRkKCksYy51cGRhdGU9ZnVuY3Rpb24oYSl7ZFt7dGl0bGU6InNldFRpdGxlIixzdWJ0aXRsZToic2V0U3VidGl0bGUiLApjYXB0aW9uOiJzZXRDYXB0aW9uIn1bYl1dKGEpfSx0aGlzLnN0eWxlZE1vZGV8fGMuY3NzKGguc3R5bGUpLHRoaXNbYl09Yyl9O0IucHJvdG90eXBlLmxheU91dFRpdGxlcz1mdW5jdGlvbihiKXt2YXIgZT1bMCwwLDBdLGQ9dGhpcy5yZW5kZXJlcixoPXRoaXMuc3BhY2luZ0JveDtbInRpdGxlIiwic3VidGl0bGUiLCJjYXB0aW9uIl0uZm9yRWFjaChmdW5jdGlvbihiKXt2YXIgYz10aGlzW2JdLGY9dGhpcy5vcHRpb25zW2JdLGw9Zi52ZXJ0aWNhbEFsaWdufHwidG9wIjtiPSJ0aXRsZSI9PT1iPy0zOiJ0b3AiPT09bD9lWzBdKzI6MDtpZihjKXtpZighdGhpcy5zdHlsZWRNb2RlKXZhciBrPWYuc3R5bGUuZm9udFNpemU7az1kLmZvbnRNZXRyaWNzKGssYykuYjtjLmNzcyh7d2lkdGg6KGYud2lkdGh8fGgud2lkdGgrKGYud2lkdGhBZGp1c3R8fDApKSsicHgifSk7dmFyIG09TWF0aC5yb3VuZChjLmdldEJCb3goZi51c2VIVE1MKS5oZWlnaHQpO2MuYWxpZ24oYSh7eToiYm90dG9tIj09PQpsP2s6YitrLGhlaWdodDptfSxmKSwhMSwic3BhY2luZ0JveCIpO2YuZmxvYXRpbmd8fCgidG9wIj09PWw/ZVswXT1NYXRoLmNlaWwoZVswXSttKToiYm90dG9tIj09PWwmJihlWzJdPU1hdGguY2VpbChlWzJdK20pKSl9fSx0aGlzKTtlWzBdJiYidG9wIj09PSh0aGlzLm9wdGlvbnMudGl0bGUudmVydGljYWxBbGlnbnx8InRvcCIpJiYoZVswXSs9dGhpcy5vcHRpb25zLnRpdGxlLm1hcmdpbik7ZVsyXSYmImJvdHRvbSI9PT10aGlzLm9wdGlvbnMuY2FwdGlvbi52ZXJ0aWNhbEFsaWduJiYoZVsyXSs9dGhpcy5vcHRpb25zLmNhcHRpb24ubWFyZ2luKTt2YXIgYz0hdGhpcy50aXRsZU9mZnNldHx8dGhpcy50aXRsZU9mZnNldC5qb2luKCIsIikhPT1lLmpvaW4oIiwiKTt0aGlzLnRpdGxlT2Zmc2V0PWU7dSh0aGlzLCJhZnRlckxheU91dFRpdGxlcyIpOyF0aGlzLmlzRGlydHlCb3gmJmMmJih0aGlzLmlzRGlydHlCb3g9dGhpcy5pc0RpcnR5TGVnZW5kPWMsdGhpcy5oYXNSZW5kZXJlZCYmCnooYiwhMCkmJnRoaXMuaXNEaXJ0eUJveCYmdGhpcy5yZWRyYXcoKSl9O0IucHJvdG90eXBlLmdldENoYXJ0U2l6ZT1mdW5jdGlvbigpe3ZhciBiPXRoaXMub3B0aW9ucy5jaGFydCxhPWIud2lkdGg7Yj1iLmhlaWdodDt2YXIgZT10aGlzLnJlbmRlclRvO2QoYSl8fCh0aGlzLmNvbnRhaW5lcldpZHRoPUUoZSwid2lkdGgiKSk7ZChiKXx8KHRoaXMuY29udGFpbmVySGVpZ2h0PUUoZSwiaGVpZ2h0IikpO3RoaXMuY2hhcnRXaWR0aD1NYXRoLm1heCgwLGF8fHRoaXMuY29udGFpbmVyV2lkdGh8fDYwMCk7dGhpcy5jaGFydEhlaWdodD1NYXRoLm1heCgwLE4oYix0aGlzLmNoYXJ0V2lkdGgpfHwoMTx0aGlzLmNvbnRhaW5lckhlaWdodD90aGlzLmNvbnRhaW5lckhlaWdodDo0MDApKX07Qi5wcm90b3R5cGUudGVtcG9yYXJ5RGlzcGxheT1mdW5jdGlvbihiKXt2YXIgYT10aGlzLnJlbmRlclRvO2lmKGIpZm9yKDthJiZhLnN0eWxlOylhLmhjT3JpZ1N0eWxlJiYobShhLGEuaGNPcmlnU3R5bGUpLApkZWxldGUgYS5oY09yaWdTdHlsZSksYS5oY09yaWdEZXRhY2hlZCYmKEcuYm9keS5yZW1vdmVDaGlsZChhKSxhLmhjT3JpZ0RldGFjaGVkPSExKSxhPWEucGFyZW50Tm9kZTtlbHNlIGZvcig7YSYmYS5zdHlsZTspe0cuYm9keS5jb250YWlucyhhKXx8YS5wYXJlbnROb2RlfHwoYS5oY09yaWdEZXRhY2hlZD0hMCxHLmJvZHkuYXBwZW5kQ2hpbGQoYSkpO2lmKCJub25lIj09PUUoYSwiZGlzcGxheSIsITEpfHxhLmhjT3JpY0RldGFjaGVkKWEuaGNPcmlnU3R5bGU9e2Rpc3BsYXk6YS5zdHlsZS5kaXNwbGF5LGhlaWdodDphLnN0eWxlLmhlaWdodCxvdmVyZmxvdzphLnN0eWxlLm92ZXJmbG93fSxiPXtkaXNwbGF5OiJibG9jayIsb3ZlcmZsb3c6ImhpZGRlbiJ9LGEhPT10aGlzLnJlbmRlclRvJiYoYi5oZWlnaHQ9MCksbShhLGIpLGEub2Zmc2V0V2lkdGh8fGEuc3R5bGUuc2V0UHJvcGVydHkoImRpc3BsYXkiLCJibG9jayIsImltcG9ydGFudCIpO2E9YS5wYXJlbnROb2RlO2lmKGE9PT0KRy5ib2R5KWJyZWFrfX07Qi5wcm90b3R5cGUuc2V0Q2xhc3NOYW1lPWZ1bmN0aW9uKGIpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0iaGlnaGNoYXJ0cy1jb250YWluZXIgIisoYnx8IiIpfTtCLnByb3RvdHlwZS5nZXRDb250YWluZXI9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLm9wdGlvbnMsZT1iLmNoYXJ0O3ZhciBkPXRoaXMucmVuZGVyVG87dmFyIGg9YmEoKSxsLGs7ZHx8KHRoaXMucmVuZGVyVG89ZD1lLnJlbmRlclRvKTtRKGQpJiYodGhpcy5yZW5kZXJUbz1kPUcuZ2V0RWxlbWVudEJ5SWQoZCkpO2R8fGYoMTMsITAsdGhpcyk7dmFyIGc9eChJKGQsImRhdGEtaGlnaGNoYXJ0cy1jaGFydCIpKTtNKGcpJiZ0W2ddJiZ0W2ddLmhhc1JlbmRlcmVkJiZ0W2ddLmRlc3Ryb3koKTtJKGQsImRhdGEtaGlnaGNoYXJ0cy1jaGFydCIsdGhpcy5pbmRleCk7ZC5pbm5lckhUTUw9IiI7ZS5za2lwQ2xvbmV8fGQub2Zmc2V0V2lkdGh8fHRoaXMudGVtcG9yYXJ5RGlzcGxheSgpO3RoaXMuZ2V0Q2hhcnRTaXplKCk7Cmc9dGhpcy5jaGFydFdpZHRoO3ZhciBuPXRoaXMuY2hhcnRIZWlnaHQ7bShkLHtvdmVyZmxvdzoiaGlkZGVuIn0pO3RoaXMuc3R5bGVkTW9kZXx8KGw9YSh7cG9zaXRpb246InJlbGF0aXZlIixvdmVyZmxvdzoiaGlkZGVuIix3aWR0aDpnKyJweCIsaGVpZ2h0Om4rInB4Iix0ZXh0QWxpZ246ImxlZnQiLGxpbmVIZWlnaHQ6Im5vcm1hbCIsekluZGV4OjAsIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciI6InJnYmEoMCwwLDAsMCkiLHVzZXJTZWxlY3Q6Im5vbmUifSxlLnN0eWxlKSk7dGhpcy5jb250YWluZXI9ZD1wKCJkaXYiLHtpZDpofSxsLGQpO3RoaXMuX2N1cnNvcj1kLnN0eWxlLmN1cnNvcjt0aGlzLnJlbmRlcmVyPW5ldyAoY1tlLnJlbmRlcmVyXXx8Yy5SZW5kZXJlcikoZCxnLG4sbnVsbCxlLmZvckV4cG9ydCxiLmV4cG9ydGluZyYmYi5leHBvcnRpbmcuYWxsb3dIVE1MLHRoaXMuc3R5bGVkTW9kZSk7Wih2b2lkIDAsdGhpcyk7dGhpcy5zZXRDbGFzc05hbWUoZS5jbGFzc05hbWUpOwppZih0aGlzLnN0eWxlZE1vZGUpZm9yKGsgaW4gYi5kZWZzKXRoaXMucmVuZGVyZXIuZGVmaW5pdGlvbihiLmRlZnNba10pO2Vsc2UgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlLnN0eWxlKTt0aGlzLnJlbmRlcmVyLmNoYXJ0SW5kZXg9dGhpcy5pbmRleDt1KHRoaXMsImFmdGVyR2V0Q29udGFpbmVyIil9O0IucHJvdG90eXBlLmdldE1hcmdpbnM9ZnVuY3Rpb24oYil7dmFyIGE9dGhpcy5zcGFjaW5nLGU9dGhpcy5tYXJnaW4saD10aGlzLnRpdGxlT2Zmc2V0O3RoaXMucmVzZXRNYXJnaW5zKCk7aFswXSYmIWQoZVswXSkmJih0aGlzLnBsb3RUb3A9TWF0aC5tYXgodGhpcy5wbG90VG9wLGhbMF0rYVswXSkpO2hbMl0mJiFkKGVbMl0pJiYodGhpcy5tYXJnaW5Cb3R0b209TWF0aC5tYXgodGhpcy5tYXJnaW5Cb3R0b20saFsyXSthWzJdKSk7dGhpcy5sZWdlbmQmJnRoaXMubGVnZW5kLmRpc3BsYXkmJnRoaXMubGVnZW5kLmFkanVzdE1hcmdpbnMoZSxhKTt1KHRoaXMsImdldE1hcmdpbnMiKTsKYnx8dGhpcy5nZXRBeGlzTWFyZ2lucygpfTtCLnByb3RvdHlwZS5nZXRBeGlzTWFyZ2lucz1mdW5jdGlvbigpe3ZhciBiPXRoaXMsYT1iLmF4aXNPZmZzZXQ9WzAsMCwwLDBdLGU9Yi5jb2xvckF4aXMsaD1iLm1hcmdpbixjPWZ1bmN0aW9uKGIpe2IuZm9yRWFjaChmdW5jdGlvbihiKXtiLnZpc2libGUmJmIuZ2V0T2Zmc2V0KCl9KX07Yi5oYXNDYXJ0ZXNpYW5TZXJpZXM/YyhiLmF4ZXMpOmUmJmUubGVuZ3RoJiZjKGUpO1UuZm9yRWFjaChmdW5jdGlvbihlLGMpe2QoaFtjXSl8fChiW2VdKz1hW2NdKX0pO2Iuc2V0Q2hhcnRTaXplKCl9O0IucHJvdG90eXBlLnJlZmxvdz1mdW5jdGlvbihiKXt2YXIgYT10aGlzLGU9YS5vcHRpb25zLmNoYXJ0LGg9YS5yZW5kZXJUbyxjPWQoZS53aWR0aCkmJmQoZS5oZWlnaHQpLGY9ZS53aWR0aHx8RShoLCJ3aWR0aCIpO2U9ZS5oZWlnaHR8fEUoaCwiaGVpZ2h0Iik7aD1iP2IudGFyZ2V0OnY7aWYoIWMmJiFhLmlzUHJpbnRpbmcmJmYmJmUmJihoPT09CnZ8fGg9PT1HKSl7aWYoZiE9PWEuY29udGFpbmVyV2lkdGh8fGUhPT1hLmNvbnRhaW5lckhlaWdodClKLmNsZWFyVGltZW91dChhLnJlZmxvd1RpbWVvdXQpLGEucmVmbG93VGltZW91dD1ZKGZ1bmN0aW9uKCl7YS5jb250YWluZXImJmEuc2V0U2l6ZSh2b2lkIDAsdm9pZCAwLCExKX0sYj8xMDA6MCk7YS5jb250YWluZXJXaWR0aD1mO2EuY29udGFpbmVySGVpZ2h0PWV9fTtCLnByb3RvdHlwZS5zZXRSZWZsb3c9ZnVuY3Rpb24oYil7dmFyIGE9dGhpczshMT09PWJ8fHRoaXMudW5iaW5kUmVmbG93PyExPT09YiYmdGhpcy51bmJpbmRSZWZsb3cmJih0aGlzLnVuYmluZFJlZmxvdz10aGlzLnVuYmluZFJlZmxvdygpKToodGhpcy51bmJpbmRSZWZsb3c9bih2LCJyZXNpemUiLGZ1bmN0aW9uKGIpe2Eub3B0aW9ucyYmYS5yZWZsb3coYil9KSxuKHRoaXMsImRlc3Ryb3kiLHRoaXMudW5iaW5kUmVmbG93KSl9O0IucHJvdG90eXBlLnNldFNpemU9ZnVuY3Rpb24oYixhLGUpe3ZhciBkPXRoaXMsCmg9ZC5yZW5kZXJlcjtkLmlzUmVzaXppbmcrPTE7WihlLGQpO2U9aC5nbG9iYWxBbmltYXRpb247ZC5vbGRDaGFydEhlaWdodD1kLmNoYXJ0SGVpZ2h0O2Qub2xkQ2hhcnRXaWR0aD1kLmNoYXJ0V2lkdGg7InVuZGVmaW5lZCIhPT10eXBlb2YgYiYmKGQub3B0aW9ucy5jaGFydC53aWR0aD1iKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBhJiYoZC5vcHRpb25zLmNoYXJ0LmhlaWdodD1hKTtkLmdldENoYXJ0U2l6ZSgpO2Quc3R5bGVkTW9kZXx8KGU/cjptKShkLmNvbnRhaW5lcix7d2lkdGg6ZC5jaGFydFdpZHRoKyJweCIsaGVpZ2h0OmQuY2hhcnRIZWlnaHQrInB4In0sZSk7ZC5zZXRDaGFydFNpemUoITApO2guc2V0U2l6ZShkLmNoYXJ0V2lkdGgsZC5jaGFydEhlaWdodCxlKTtkLmF4ZXMuZm9yRWFjaChmdW5jdGlvbihiKXtiLmlzRGlydHk9ITA7Yi5zZXRTY2FsZSgpfSk7ZC5pc0RpcnR5TGVnZW5kPSEwO2QuaXNEaXJ0eUJveD0hMDtkLmxheU91dFRpdGxlcygpO2QuZ2V0TWFyZ2lucygpOwpkLnJlZHJhdyhlKTtkLm9sZENoYXJ0SGVpZ2h0PW51bGw7dShkLCJyZXNpemUiKTtZKGZ1bmN0aW9uKCl7ZCYmdShkLCJlbmRSZXNpemUiLG51bGwsZnVuY3Rpb24oKXstLWQuaXNSZXNpemluZ30pfSxDKGUpLmR1cmF0aW9ufHwwKX07Qi5wcm90b3R5cGUuc2V0Q2hhcnRTaXplPWZ1bmN0aW9uKGIpe3ZhciBhPXRoaXMuaW52ZXJ0ZWQsZT10aGlzLnJlbmRlcmVyLGQ9dGhpcy5jaGFydFdpZHRoLGg9dGhpcy5jaGFydEhlaWdodCxjPXRoaXMub3B0aW9ucy5jaGFydCxmPXRoaXMuc3BhY2luZyxsPXRoaXMuY2xpcE9mZnNldCxrLG0scCxnO3RoaXMucGxvdExlZnQ9az1NYXRoLnJvdW5kKHRoaXMucGxvdExlZnQpO3RoaXMucGxvdFRvcD1tPU1hdGgucm91bmQodGhpcy5wbG90VG9wKTt0aGlzLnBsb3RXaWR0aD1wPU1hdGgubWF4KDAsTWF0aC5yb3VuZChkLWstdGhpcy5tYXJnaW5SaWdodCkpO3RoaXMucGxvdEhlaWdodD1nPU1hdGgubWF4KDAsTWF0aC5yb3VuZChoLW0tdGhpcy5tYXJnaW5Cb3R0b20pKTsKdGhpcy5wbG90U2l6ZVg9YT9nOnA7dGhpcy5wbG90U2l6ZVk9YT9wOmc7dGhpcy5wbG90Qm9yZGVyV2lkdGg9Yy5wbG90Qm9yZGVyV2lkdGh8fDA7dGhpcy5zcGFjaW5nQm94PWUuc3BhY2luZ0JveD17eDpmWzNdLHk6ZlswXSx3aWR0aDpkLWZbM10tZlsxXSxoZWlnaHQ6aC1mWzBdLWZbMl19O3RoaXMucGxvdEJveD1lLnBsb3RCb3g9e3g6ayx5Om0sd2lkdGg6cCxoZWlnaHQ6Z307ZD0yKk1hdGguZmxvb3IodGhpcy5wbG90Qm9yZGVyV2lkdGgvMik7YT1NYXRoLmNlaWwoTWF0aC5tYXgoZCxsWzNdKS8yKTtlPU1hdGguY2VpbChNYXRoLm1heChkLGxbMF0pLzIpO3RoaXMuY2xpcEJveD17eDphLHk6ZSx3aWR0aDpNYXRoLmZsb29yKHRoaXMucGxvdFNpemVYLU1hdGgubWF4KGQsbFsxXSkvMi1hKSxoZWlnaHQ6TWF0aC5tYXgoMCxNYXRoLmZsb29yKHRoaXMucGxvdFNpemVZLU1hdGgubWF4KGQsbFsyXSkvMi1lKSl9O2J8fHRoaXMuYXhlcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2Iuc2V0QXhpc1NpemUoKTsKYi5zZXRBeGlzVHJhbnNsYXRpb24oKX0pO3UodGhpcywiYWZ0ZXJTZXRDaGFydFNpemUiLHtza2lwQXhlczpifSl9O0IucHJvdG90eXBlLnJlc2V0TWFyZ2lucz1mdW5jdGlvbigpe3UodGhpcywicmVzZXRNYXJnaW5zIik7dmFyIGI9dGhpcyxhPWIub3B0aW9ucy5jaGFydDtbIm1hcmdpbiIsInNwYWNpbmciXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciBkPWFbZV0saD1GKGQpP2Q6W2QsZCxkLGRdO1siVG9wIiwiUmlnaHQiLCJCb3R0b20iLCJMZWZ0Il0uZm9yRWFjaChmdW5jdGlvbihkLGMpe2JbZV1bY109eihhW2UrZF0saFtjXSl9KX0pO1UuZm9yRWFjaChmdW5jdGlvbihhLGUpe2JbYV09eihiLm1hcmdpbltlXSxiLnNwYWNpbmdbZV0pfSk7Yi5heGlzT2Zmc2V0PVswLDAsMCwwXTtiLmNsaXBPZmZzZXQ9WzAsMCwwLDBdfTtCLnByb3RvdHlwZS5kcmF3Q2hhcnRCb3g9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLm9wdGlvbnMuY2hhcnQsYT10aGlzLnJlbmRlcmVyLGU9dGhpcy5jaGFydFdpZHRoLApkPXRoaXMuY2hhcnRIZWlnaHQsaD10aGlzLmNoYXJ0QmFja2dyb3VuZCxjPXRoaXMucGxvdEJhY2tncm91bmQsZj10aGlzLnBsb3RCb3JkZXIsbD10aGlzLnN0eWxlZE1vZGUsaz10aGlzLnBsb3RCR0ltYWdlLG09Yi5iYWNrZ3JvdW5kQ29sb3IscD1iLnBsb3RCYWNrZ3JvdW5kQ29sb3IsZz1iLnBsb3RCYWNrZ3JvdW5kSW1hZ2Usbix4PXRoaXMucGxvdExlZnQsej10aGlzLnBsb3RUb3Asdz10aGlzLnBsb3RXaWR0aCxyPXRoaXMucGxvdEhlaWdodCx0PXRoaXMucGxvdEJveCxBPXRoaXMuY2xpcFJlY3Qsdj10aGlzLmNsaXBCb3gscT0iYW5pbWF0ZSI7aHx8KHRoaXMuY2hhcnRCYWNrZ3JvdW5kPWg9YS5yZWN0KCkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtYmFja2dyb3VuZCIpLmFkZCgpLHE9ImF0dHIiKTtpZihsKXZhciBDPW49aC5zdHJva2VXaWR0aCgpO2Vsc2V7Qz1iLmJvcmRlcldpZHRofHwwO249QysoYi5zaGFkb3c/ODowKTttPXtmaWxsOm18fCJub25lIn07aWYoQ3x8aFsic3Ryb2tlLXdpZHRoIl0pbS5zdHJva2U9CmIuYm9yZGVyQ29sb3IsbVsic3Ryb2tlLXdpZHRoIl09QztoLmF0dHIobSkuc2hhZG93KGIuc2hhZG93KX1oW3FdKHt4Om4vMix5Om4vMix3aWR0aDplLW4tQyUyLGhlaWdodDpkLW4tQyUyLHI6Yi5ib3JkZXJSYWRpdXN9KTtxPSJhbmltYXRlIjtjfHwocT0iYXR0ciIsdGhpcy5wbG90QmFja2dyb3VuZD1jPWEucmVjdCgpLmFkZENsYXNzKCJoaWdoY2hhcnRzLXBsb3QtYmFja2dyb3VuZCIpLmFkZCgpKTtjW3FdKHQpO2x8fChjLmF0dHIoe2ZpbGw6cHx8Im5vbmUifSkuc2hhZG93KGIucGxvdFNoYWRvdyksZyYmKGs/KGchPT1rLmF0dHIoImhyZWYiKSYmay5hdHRyKCJocmVmIixnKSxrLmFuaW1hdGUodCkpOnRoaXMucGxvdEJHSW1hZ2U9YS5pbWFnZShnLHgseix3LHIpLmFkZCgpKSk7QT9BLmFuaW1hdGUoe3dpZHRoOnYud2lkdGgsaGVpZ2h0OnYuaGVpZ2h0fSk6dGhpcy5jbGlwUmVjdD1hLmNsaXBSZWN0KHYpO3E9ImFuaW1hdGUiO2Z8fChxPSJhdHRyIix0aGlzLnBsb3RCb3JkZXI9CmY9YS5yZWN0KCkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtcGxvdC1ib3JkZXIiKS5hdHRyKHt6SW5kZXg6MX0pLmFkZCgpKTtsfHxmLmF0dHIoe3N0cm9rZTpiLnBsb3RCb3JkZXJDb2xvciwic3Ryb2tlLXdpZHRoIjpiLnBsb3RCb3JkZXJXaWR0aHx8MCxmaWxsOiJub25lIn0pO2ZbcV0oZi5jcmlzcCh7eDp4LHk6eix3aWR0aDp3LGhlaWdodDpyfSwtZi5zdHJva2VXaWR0aCgpKSk7dGhpcy5pc0RpcnR5Qm94PSExO3UodGhpcywiYWZ0ZXJEcmF3Q2hhcnRCb3giKX07Qi5wcm90b3R5cGUucHJvcEZyb21TZXJpZXM9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLGE9Yi5vcHRpb25zLmNoYXJ0LGUsZD1iLm9wdGlvbnMuc2VyaWVzLGgsYztbImludmVydGVkIiwiYW5ndWxhciIsInBvbGFyIl0uZm9yRWFjaChmdW5jdGlvbihmKXtlPUxbYS50eXBlfHxhLmRlZmF1bHRTZXJpZXNUeXBlXTtjPWFbZl18fGUmJmUucHJvdG90eXBlW2ZdO2ZvcihoPWQmJmQubGVuZ3RoOyFjJiZoLS07KShlPUxbZFtoXS50eXBlXSkmJgplLnByb3RvdHlwZVtmXSYmKGM9ITApO2JbZl09Y30pfTtCLnByb3RvdHlwZS5saW5rU2VyaWVzPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxhPWIuc2VyaWVzO2EuZm9yRWFjaChmdW5jdGlvbihiKXtiLmxpbmtlZFNlcmllcy5sZW5ndGg9MH0pO2EuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgZT1hLm9wdGlvbnMubGlua2VkVG87UShlKSYmKGU9IjpwcmV2aW91cyI9PT1lP2Iuc2VyaWVzW2EuaW5kZXgtMV06Yi5nZXQoZSkpJiZlLmxpbmtlZFBhcmVudCE9PWEmJihlLmxpbmtlZFNlcmllcy5wdXNoKGEpLGEubGlua2VkUGFyZW50PWUsZS5lbmFibGVkRGF0YVNvcnRpbmcmJmEuc2V0RGF0YVNvcnRpbmdPcHRpb25zKCksYS52aXNpYmxlPXooYS5vcHRpb25zLnZpc2libGUsZS5vcHRpb25zLnZpc2libGUsYS52aXNpYmxlKSl9KTt1KHRoaXMsImFmdGVyTGlua1NlcmllcyIpfTtCLnByb3RvdHlwZS5yZW5kZXJTZXJpZXM9ZnVuY3Rpb24oKXt0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IudHJhbnNsYXRlKCk7CmIucmVuZGVyKCl9KX07Qi5wcm90b3R5cGUucmVuZGVyTGFiZWxzPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxlPWIub3B0aW9ucy5sYWJlbHM7ZS5pdGVtcyYmZS5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKGQpe3ZhciBoPWEoZS5zdHlsZSxkLnN0eWxlKSxjPXgoaC5sZWZ0KStiLnBsb3RMZWZ0LGY9eChoLnRvcCkrYi5wbG90VG9wKzEyO2RlbGV0ZSBoLmxlZnQ7ZGVsZXRlIGgudG9wO2IucmVuZGVyZXIudGV4dChkLmh0bWwsYyxmKS5hdHRyKHt6SW5kZXg6Mn0pLmNzcyhoKS5hZGQoKX0pfTtCLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLmF4ZXMsYT10aGlzLmNvbG9yQXhpcyxlPXRoaXMucmVuZGVyZXIsZD10aGlzLm9wdGlvbnMsaD0wLGM9ZnVuY3Rpb24oYil7Yi5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IudmlzaWJsZSYmYi5yZW5kZXIoKX0pfTt0aGlzLnNldFRpdGxlKCk7dGhpcy5sZWdlbmQ9bmV3IHEodGhpcyxkLmxlZ2VuZCk7dGhpcy5nZXRTdGFja3MmJgp0aGlzLmdldFN0YWNrcygpO3RoaXMuZ2V0TWFyZ2lucyghMCk7dGhpcy5zZXRDaGFydFNpemUoKTtkPXRoaXMucGxvdFdpZHRoO2Iuc29tZShmdW5jdGlvbihiKXtpZihiLmhvcml6JiZiLnZpc2libGUmJmIub3B0aW9ucy5sYWJlbHMuZW5hYmxlZCYmYi5zZXJpZXMubGVuZ3RoKXJldHVybiBoPTIxLCEwfSk7dmFyIGY9dGhpcy5wbG90SGVpZ2h0PU1hdGgubWF4KHRoaXMucGxvdEhlaWdodC1oLDApO2IuZm9yRWFjaChmdW5jdGlvbihiKXtiLnNldFNjYWxlKCl9KTt0aGlzLmdldEF4aXNNYXJnaW5zKCk7dmFyIGw9MS4xPGQvdGhpcy5wbG90V2lkdGg7dmFyIGs9MS4wNTxmL3RoaXMucGxvdEhlaWdodDtpZihsfHxrKWIuZm9yRWFjaChmdW5jdGlvbihiKXsoYi5ob3JpeiYmbHx8IWIuaG9yaXomJmspJiZiLnNldFRpY2tJbnRlcnZhbCghMCl9KSx0aGlzLmdldE1hcmdpbnMoKTt0aGlzLmRyYXdDaGFydEJveCgpO3RoaXMuaGFzQ2FydGVzaWFuU2VyaWVzP2MoYik6YSYmYS5sZW5ndGgmJgpjKGEpO3RoaXMuc2VyaWVzR3JvdXB8fCh0aGlzLnNlcmllc0dyb3VwPWUuZygic2VyaWVzLWdyb3VwIikuYXR0cih7ekluZGV4OjN9KS5hZGQoKSk7dGhpcy5yZW5kZXJTZXJpZXMoKTt0aGlzLnJlbmRlckxhYmVscygpO3RoaXMuYWRkQ3JlZGl0cygpO3RoaXMuc2V0UmVzcG9uc2l2ZSYmdGhpcy5zZXRSZXNwb25zaXZlKCk7dGhpcy51cGRhdGVDb250YWluZXJTY2FsaW5nKCk7dGhpcy5oYXNSZW5kZXJlZD0hMH07Qi5wcm90b3R5cGUuYWRkQ3JlZGl0cz1mdW5jdGlvbihiKXt2YXIgYT10aGlzLGQ9ZSghMCx0aGlzLm9wdGlvbnMuY3JlZGl0cyxiKTtkLmVuYWJsZWQmJiF0aGlzLmNyZWRpdHMmJih0aGlzLmNyZWRpdHM9dGhpcy5yZW5kZXJlci50ZXh0KGQudGV4dCsodGhpcy5tYXBDcmVkaXRzfHwiIiksMCwwKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1jcmVkaXRzIikub24oImNsaWNrIixmdW5jdGlvbigpe2QuaHJlZiYmKHYubG9jYXRpb24uaHJlZj1kLmhyZWYpfSkuYXR0cih7YWxpZ246ZC5wb3NpdGlvbi5hbGlnbiwKekluZGV4Ojh9KSxhLnN0eWxlZE1vZGV8fHRoaXMuY3JlZGl0cy5jc3MoZC5zdHlsZSksdGhpcy5jcmVkaXRzLmFkZCgpLmFsaWduKGQucG9zaXRpb24pLHRoaXMuY3JlZGl0cy51cGRhdGU9ZnVuY3Rpb24oYil7YS5jcmVkaXRzPWEuY3JlZGl0cy5kZXN0cm95KCk7YS5hZGRDcmVkaXRzKGIpfSl9O0IucHJvdG90eXBlLnVwZGF0ZUNvbnRhaW5lclNjYWxpbmc9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLmNvbnRhaW5lcjtpZigyPGIub2Zmc2V0V2lkdGgmJjI8Yi5vZmZzZXRIZWlnaHQmJmIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KXt2YXIgYT1iLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGU9YS53aWR0aC9iLm9mZnNldFdpZHRoO2I9YS5oZWlnaHQvYi5vZmZzZXRIZWlnaHQ7MSE9PWV8fDEhPT1iP3RoaXMuY29udGFpbmVyU2NhbGluZz17c2NhbGVYOmUsc2NhbGVZOmJ9OmRlbGV0ZSB0aGlzLmNvbnRhaW5lclNjYWxpbmd9fTtCLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dmFyIGI9CnRoaXMsYT1iLmF4ZXMsZT1iLnNlcmllcyxkPWIuY29udGFpbmVyLGYsbT1kJiZkLnBhcmVudE5vZGU7dShiLCJkZXN0cm95Iik7Yi5yZW5kZXJlci5mb3JFeHBvcnQ/ayh0LGIpOnRbYi5pbmRleF09dm9pZCAwO2MuY2hhcnRDb3VudC0tO2IucmVuZGVyVG8ucmVtb3ZlQXR0cmlidXRlKCJkYXRhLWhpZ2hjaGFydHMtY2hhcnQiKTthYShiKTtmb3IoZj1hLmxlbmd0aDtmLS07KWFbZl09YVtmXS5kZXN0cm95KCk7dGhpcy5zY3JvbGxlciYmdGhpcy5zY3JvbGxlci5kZXN0cm95JiZ0aGlzLnNjcm9sbGVyLmRlc3Ryb3koKTtmb3IoZj1lLmxlbmd0aDtmLS07KWVbZl09ZVtmXS5kZXN0cm95KCk7InRpdGxlIHN1YnRpdGxlIGNoYXJ0QmFja2dyb3VuZCBwbG90QmFja2dyb3VuZCBwbG90QkdJbWFnZSBwbG90Qm9yZGVyIHNlcmllc0dyb3VwIGNsaXBSZWN0IGNyZWRpdHMgcG9pbnRlciByYW5nZVNlbGVjdG9yIGxlZ2VuZCByZXNldFpvb21CdXR0b24gdG9vbHRpcCByZW5kZXJlciIuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBlPQpiW2FdO2UmJmUuZGVzdHJveSYmKGJbYV09ZS5kZXN0cm95KCkpfSk7ZCYmKGQuaW5uZXJIVE1MPSIiLGFhKGQpLG0mJmwoZCkpO2goYixmdW5jdGlvbihhLGUpe2RlbGV0ZSBiW2VdfSl9O0IucHJvdG90eXBlLmZpcnN0UmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxhPWIub3B0aW9ucztpZighYi5pc1JlYWR5VG9SZW5kZXJ8fGIuaXNSZWFkeVRvUmVuZGVyKCkpe2IuZ2V0Q29udGFpbmVyKCk7Yi5yZXNldE1hcmdpbnMoKTtiLnNldENoYXJ0U2l6ZSgpO2IucHJvcEZyb21TZXJpZXMoKTtiLmdldEF4ZXMoKTsoUChhLnNlcmllcyk/YS5zZXJpZXM6W10pLmZvckVhY2goZnVuY3Rpb24oYSl7Yi5pbml0U2VyaWVzKGEpfSk7Yi5saW5rU2VyaWVzKCk7Yi5zZXRTZXJpZXNEYXRhKCk7dShiLCJiZWZvcmVSZW5kZXIiKTtIJiYoYi5wb2ludGVyPWMuaGFzVG91Y2h8fCF2LlBvaW50ZXJFdmVudCYmIXYuTVNQb2ludGVyRXZlbnQ/bmV3IEgoYixhKTpuZXcgeShiLGEpKTtiLnJlbmRlcigpOwppZighYi5yZW5kZXJlci5pbWdDb3VudCYmIWIuaGFzTG9hZGVkKWIub25sb2FkKCk7Yi50ZW1wb3JhcnlEaXNwbGF5KCEwKX19O0IucHJvdG90eXBlLm9ubG9hZD1mdW5jdGlvbigpe3RoaXMuY2FsbGJhY2tzLmNvbmNhdChbdGhpcy5jYWxsYmFja10pLmZvckVhY2goZnVuY3Rpb24oYil7YiYmInVuZGVmaW5lZCIhPT10eXBlb2YgdGhpcy5pbmRleCYmYi5hcHBseSh0aGlzLFt0aGlzXSl9LHRoaXMpO3UodGhpcywibG9hZCIpO3UodGhpcywicmVuZGVyIik7ZCh0aGlzLmluZGV4KSYmdGhpcy5zZXRSZWZsb3codGhpcy5vcHRpb25zLmNoYXJ0LnJlZmxvdyk7dGhpcy5oYXNMb2FkZWQ9ITB9O3JldHVybiBCfSgpO1gucHJvdG90eXBlLmNhbGxiYWNrcz1bXTtjLmNoYXJ0PWZ1bmN0aW9uKGIsYSxlKXtyZXR1cm4gbmV3IFgoYixhLGUpfTtyZXR1cm4gYy5DaGFydD1YfSk7TyhxLCJwYXJ0cy9TY3JvbGxhYmxlUGxvdEFyZWEuanMiLFtxWyJwYXJ0cy9DaGFydC5qcyJdLHFbInBhcnRzL0dsb2JhbHMuanMiXSwKcVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGcsYyxxKXt2YXIgeT1xLmFkZEV2ZW50LEI9cS5jcmVhdGVFbGVtZW50LEg9cS5waWNrLEQ9cS5zdG9wOyIiO3koZywiYWZ0ZXJTZXRDaGFydFNpemUiLGZ1bmN0aW9uKGcpe3ZhciB0PXRoaXMub3B0aW9ucy5jaGFydC5zY3JvbGxhYmxlUGxvdEFyZWEscT10JiZ0Lm1pbldpZHRoO3Q9dCYmdC5taW5IZWlnaHQ7aWYoIXRoaXMucmVuZGVyZXIuZm9yRXhwb3J0KXtpZihxKXtpZih0aGlzLnNjcm9sbGFibGVQaXhlbHNYPXE9TWF0aC5tYXgoMCxxLXRoaXMuY2hhcnRXaWR0aCkpe3RoaXMucGxvdFdpZHRoKz1xO3RoaXMuaW52ZXJ0ZWQ/KHRoaXMuY2xpcEJveC5oZWlnaHQrPXEsdGhpcy5wbG90Qm94LmhlaWdodCs9cSk6KHRoaXMuY2xpcEJveC53aWR0aCs9cSx0aGlzLnBsb3RCb3gud2lkdGgrPXEpO3ZhciB5PXsxOntuYW1lOiJyaWdodCIsdmFsdWU6cX19fX1lbHNlIHQmJih0aGlzLnNjcm9sbGFibGVQaXhlbHNZPXE9TWF0aC5tYXgoMCwKdC10aGlzLmNoYXJ0SGVpZ2h0KSkmJih0aGlzLnBsb3RIZWlnaHQrPXEsdGhpcy5pbnZlcnRlZD8odGhpcy5jbGlwQm94LndpZHRoKz1xLHRoaXMucGxvdEJveC53aWR0aCs9cSk6KHRoaXMuY2xpcEJveC5oZWlnaHQrPXEsdGhpcy5wbG90Qm94LmhlaWdodCs9cSkseT17Mjp7bmFtZToiYm90dG9tIix2YWx1ZTpxfX0pO3kmJiFnLnNraXBBeGVzJiZ0aGlzLmF4ZXMuZm9yRWFjaChmdW5jdGlvbihnKXt5W2cuc2lkZV0/Zy5nZXRQbG90TGluZVBhdGg9ZnVuY3Rpb24oKXt2YXIgdD15W2cuc2lkZV0ubmFtZSxuPXRoaXNbdF07dGhpc1t0XT1uLXlbZy5zaWRlXS52YWx1ZTt2YXIgcj1jLkF4aXMucHJvdG90eXBlLmdldFBsb3RMaW5lUGF0aC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpc1t0XT1uO3JldHVybiByfTooZy5zZXRBeGlzU2l6ZSgpLGcuc2V0QXhpc1RyYW5zbGF0aW9uKCkpfSl9fSk7eShnLCJyZW5kZXIiLGZ1bmN0aW9uKCl7dGhpcy5zY3JvbGxhYmxlUGl4ZWxzWHx8dGhpcy5zY3JvbGxhYmxlUGl4ZWxzWT8KKHRoaXMuc2V0VXBTY3JvbGxpbmcmJnRoaXMuc2V0VXBTY3JvbGxpbmcoKSx0aGlzLmFwcGx5Rml4ZWQoKSk6dGhpcy5maXhlZERpdiYmdGhpcy5hcHBseUZpeGVkKCl9KTtnLnByb3RvdHlwZS5zZXRVcFNjcm9sbGluZz1mdW5jdGlvbigpe3ZhciBjPXRoaXMsZz17V2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc6InRvdWNoIixvdmVyZmxvd1g6ImhpZGRlbiIsb3ZlcmZsb3dZOiJoaWRkZW4ifTt0aGlzLnNjcm9sbGFibGVQaXhlbHNYJiYoZy5vdmVyZmxvd1g9ImF1dG8iKTt0aGlzLnNjcm9sbGFibGVQaXhlbHNZJiYoZy5vdmVyZmxvd1k9ImF1dG8iKTt0aGlzLnNjcm9sbGluZ0NvbnRhaW5lcj1CKCJkaXYiLHtjbGFzc05hbWU6ImhpZ2hjaGFydHMtc2Nyb2xsaW5nIn0sZyx0aGlzLnJlbmRlclRvKTt5KHRoaXMuc2Nyb2xsaW5nQ29udGFpbmVyLCJzY3JvbGwiLGZ1bmN0aW9uKCl7Yy5wb2ludGVyJiZkZWxldGUgYy5wb2ludGVyLmNoYXJ0UG9zaXRpb259KTt0aGlzLmlubmVyQ29udGFpbmVyPQpCKCJkaXYiLHtjbGFzc05hbWU6ImhpZ2hjaGFydHMtaW5uZXItY29udGFpbmVyIn0sbnVsbCx0aGlzLnNjcm9sbGluZ0NvbnRhaW5lcik7dGhpcy5pbm5lckNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLmNvbnRhaW5lcik7dGhpcy5zZXRVcFNjcm9sbGluZz1udWxsfTtnLnByb3RvdHlwZS5tb3ZlRml4ZWRFbGVtZW50cz1mdW5jdGlvbigpe3ZhciBjPXRoaXMuY29udGFpbmVyLGc9dGhpcy5maXhlZFJlbmRlcmVyLHE9Ii5oaWdoY2hhcnRzLWNvbnRleHRidXR0b24gLmhpZ2hjaGFydHMtY3JlZGl0cyAuaGlnaGNoYXJ0cy1sZWdlbmQgLmhpZ2hjaGFydHMtbGVnZW5kLWNoZWNrYm94IC5oaWdoY2hhcnRzLW5hdmlnYXRvci1zZXJpZXMgLmhpZ2hjaGFydHMtbmF2aWdhdG9yLXhheGlzIC5oaWdoY2hhcnRzLW5hdmlnYXRvci15YXhpcyAuaGlnaGNoYXJ0cy1uYXZpZ2F0b3IgLmhpZ2hjaGFydHMtcmVzZXQtem9vbSAuaGlnaGNoYXJ0cy1zY3JvbGxiYXIgLmhpZ2hjaGFydHMtc3VidGl0bGUgLmhpZ2hjaGFydHMtdGl0bGUiLnNwbGl0KCIgIiksCnk7dGhpcy5zY3JvbGxhYmxlUGl4ZWxzWCYmIXRoaXMuaW52ZXJ0ZWQ/eT0iLmhpZ2hjaGFydHMteWF4aXMiOnRoaXMuc2Nyb2xsYWJsZVBpeGVsc1gmJnRoaXMuaW52ZXJ0ZWQ/eT0iLmhpZ2hjaGFydHMteGF4aXMiOnRoaXMuc2Nyb2xsYWJsZVBpeGVsc1kmJiF0aGlzLmludmVydGVkP3k9Ii5oaWdoY2hhcnRzLXhheGlzIjp0aGlzLnNjcm9sbGFibGVQaXhlbHNZJiZ0aGlzLmludmVydGVkJiYoeT0iLmhpZ2hjaGFydHMteWF4aXMiKTtxLnB1c2goeSx5KyItbGFiZWxzIik7cS5mb3JFYWNoKGZ1bmN0aW9uKHQpe1tdLmZvckVhY2guY2FsbChjLnF1ZXJ5U2VsZWN0b3JBbGwodCksZnVuY3Rpb24oYyl7KGMubmFtZXNwYWNlVVJJPT09Zy5TVkdfTlM/Zy5ib3g6Zy5ib3gucGFyZW50Tm9kZSkuYXBwZW5kQ2hpbGQoYyk7Yy5zdHlsZS5wb2ludGVyRXZlbnRzPSJhdXRvIn0pfSl9O2cucHJvdG90eXBlLmFwcGx5Rml4ZWQ9ZnVuY3Rpb24oKXt2YXIgZyx0LHE9IXRoaXMuZml4ZWREaXYsTD0KdGhpcy5vcHRpb25zLmNoYXJ0LnNjcm9sbGFibGVQbG90QXJlYTtxPyh0aGlzLmZpeGVkRGl2PUIoImRpdiIse2NsYXNzTmFtZToiaGlnaGNoYXJ0cy1maXhlZCJ9LHtwb3NpdGlvbjoiYWJzb2x1dGUiLG92ZXJmbG93OiJoaWRkZW4iLHBvaW50ZXJFdmVudHM6Im5vbmUiLHpJbmRleDoyfSxudWxsLCEwKSx0aGlzLnJlbmRlclRvLmluc2VydEJlZm9yZSh0aGlzLmZpeGVkRGl2LHRoaXMucmVuZGVyVG8uZmlyc3RDaGlsZCksdGhpcy5yZW5kZXJUby5zdHlsZS5vdmVyZmxvdz0idmlzaWJsZSIsdGhpcy5maXhlZFJlbmRlcmVyPXQ9bmV3IGMuUmVuZGVyZXIodGhpcy5maXhlZERpdix0aGlzLmNoYXJ0V2lkdGgsdGhpcy5jaGFydEhlaWdodCxudWxsPT09KGc9dGhpcy5vcHRpb25zLmNoYXJ0KXx8dm9pZCAwPT09Zz92b2lkIDA6Zy5zdHlsZSksdGhpcy5zY3JvbGxhYmxlTWFzaz10LnBhdGgoKS5hdHRyKHtmaWxsOnRoaXMub3B0aW9ucy5jaGFydC5iYWNrZ3JvdW5kQ29sb3J8fCIjZmZmIiwKImZpbGwtb3BhY2l0eSI6SChMLm9wYWNpdHksLjg1KSx6SW5kZXg6LTF9KS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1zY3JvbGxhYmxlLW1hc2siKS5hZGQoKSx0aGlzLm1vdmVGaXhlZEVsZW1lbnRzKCkseSh0aGlzLCJhZnRlclNob3dSZXNldFpvb20iLHRoaXMubW92ZUZpeGVkRWxlbWVudHMpLHkodGhpcywiYWZ0ZXJMYXlPdXRUaXRsZXMiLHRoaXMubW92ZUZpeGVkRWxlbWVudHMpKTp0aGlzLmZpeGVkUmVuZGVyZXIuc2V0U2l6ZSh0aGlzLmNoYXJ0V2lkdGgsdGhpcy5jaGFydEhlaWdodCk7Zz10aGlzLmNoYXJ0V2lkdGgrKHRoaXMuc2Nyb2xsYWJsZVBpeGVsc1h8fDApO3Q9dGhpcy5jaGFydEhlaWdodCsodGhpcy5zY3JvbGxhYmxlUGl4ZWxzWXx8MCk7RCh0aGlzLmNvbnRhaW5lcik7dGhpcy5jb250YWluZXIuc3R5bGUud2lkdGg9ZysicHgiO3RoaXMuY29udGFpbmVyLnN0eWxlLmhlaWdodD10KyJweCI7dGhpcy5yZW5kZXJlci5ib3hXcmFwcGVyLmF0dHIoe3dpZHRoOmcsaGVpZ2h0OnQsCnZpZXdCb3g6WzAsMCxnLHRdLmpvaW4oIiAiKX0pO3RoaXMuY2hhcnRCYWNrZ3JvdW5kLmF0dHIoe3dpZHRoOmcsaGVpZ2h0OnR9KTt0aGlzLnNjcm9sbGluZ0NvbnRhaW5lci5zdHlsZS5oZWlnaHQ9dGhpcy5jaGFydEhlaWdodCsicHgiO3EmJihMLnNjcm9sbFBvc2l0aW9uWCYmKHRoaXMuc2Nyb2xsaW5nQ29udGFpbmVyLnNjcm9sbExlZnQ9dGhpcy5zY3JvbGxhYmxlUGl4ZWxzWCpMLnNjcm9sbFBvc2l0aW9uWCksTC5zY3JvbGxQb3NpdGlvblkmJih0aGlzLnNjcm9sbGluZ0NvbnRhaW5lci5zY3JvbGxUb3A9dGhpcy5zY3JvbGxhYmxlUGl4ZWxzWSpMLnNjcm9sbFBvc2l0aW9uWSkpO3Q9dGhpcy5heGlzT2Zmc2V0O3E9dGhpcy5wbG90VG9wLXRbMF0tMTtMPXRoaXMucGxvdExlZnQtdFszXS0xO2c9dGhpcy5wbG90VG9wK3RoaXMucGxvdEhlaWdodCt0WzJdKzE7dD10aGlzLnBsb3RMZWZ0K3RoaXMucGxvdFdpZHRoK3RbMV0rMTt2YXIgdj10aGlzLnBsb3RMZWZ0K3RoaXMucGxvdFdpZHRoLQoodGhpcy5zY3JvbGxhYmxlUGl4ZWxzWHx8MCksSz10aGlzLnBsb3RUb3ArdGhpcy5wbG90SGVpZ2h0LSh0aGlzLnNjcm9sbGFibGVQaXhlbHNZfHwwKTtxPXRoaXMuc2Nyb2xsYWJsZVBpeGVsc1g/W1siTSIsMCxxXSxbIkwiLHRoaXMucGxvdExlZnQtMSxxXSxbIkwiLHRoaXMucGxvdExlZnQtMSxnXSxbIkwiLDAsZ10sWyJaIl0sWyJNIix2LHFdLFsiTCIsdGhpcy5jaGFydFdpZHRoLHFdLFsiTCIsdGhpcy5jaGFydFdpZHRoLGddLFsiTCIsdixnXSxbIloiXV06dGhpcy5zY3JvbGxhYmxlUGl4ZWxzWT9bWyJNIixMLDBdLFsiTCIsTCx0aGlzLnBsb3RUb3AtMV0sWyJMIix0LHRoaXMucGxvdFRvcC0xXSxbIkwiLHQsMF0sWyJaIl0sWyJNIixMLEtdLFsiTCIsTCx0aGlzLmNoYXJ0SGVpZ2h0XSxbIkwiLHQsdGhpcy5jaGFydEhlaWdodF0sWyJMIix0LEtdLFsiWiJdXTpbWyJNIiwwLDBdXTsiYWRqdXN0SGVpZ2h0IiE9PXRoaXMucmVkcmF3VHJpZ2dlciYmdGhpcy5zY3JvbGxhYmxlTWFzay5hdHRyKHtkOnF9KX19KTsKTyhxLCJwYXJ0cy9TdGFja2luZ0F4aXMuanMiLFtxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyl7dmFyIGM9Zy5hZGRFdmVudCxxPWcuZGVzdHJveU9iamVjdFByb3BlcnRpZXMseT1nLmZpcmVFdmVudCxCPWcub2JqZWN0RWFjaCxIPWcucGljayxEPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhjKXt0aGlzLm9sZFN0YWNrcz17fTt0aGlzLnN0YWNrcz17fTt0aGlzLnN0YWNrc1RvdWNoZWQ9MDt0aGlzLmF4aXM9Y31jLnByb3RvdHlwZS5idWlsZFN0YWNrcz1mdW5jdGlvbigpe3ZhciBjPXRoaXMuYXhpcyxnPWMuc2VyaWVzLHE9SChjLm9wdGlvbnMucmV2ZXJzZWRTdGFja3MsITApLHY9Zy5sZW5ndGgsRDtpZighYy5pc1hBeGlzKXt0aGlzLnVzZVBlcmNlbnRhZ2U9ITE7Zm9yKEQ9djtELS07KXt2YXIgbj1nW3E/RDp2LUQtMV07bi5zZXRTdGFja2VkUG9pbnRzKCk7bi5zZXRHcm91cGVkUG9pbnRzKCl9Zm9yKEQ9MDtEPHY7RCsrKWdbRF0ubW9kaWZ5U3RhY2tzKCk7eShjLAoiYWZ0ZXJCdWlsZFN0YWNrcyIpfX07Yy5wcm90b3R5cGUuY2xlYW5TdGFja3M9ZnVuY3Rpb24oKXtpZighdGhpcy5heGlzLmlzWEF4aXMpe2lmKHRoaXMub2xkU3RhY2tzKXZhciBjPXRoaXMuc3RhY2tzPXRoaXMub2xkU3RhY2tzO0IoYyxmdW5jdGlvbihjKXtCKGMsZnVuY3Rpb24oYyl7Yy5jdW11bGF0aXZlPWMudG90YWx9KX0pfX07Yy5wcm90b3R5cGUucmVzZXRTdGFja3M9ZnVuY3Rpb24oKXt2YXIgYz10aGlzLGc9Yy5zdGFja3M7Yy5heGlzLmlzWEF4aXN8fEIoZyxmdW5jdGlvbihnKXtCKGcsZnVuY3Rpb24ocSx0KXtxLnRvdWNoZWQ8Yy5zdGFja3NUb3VjaGVkPyhxLmRlc3Ryb3koKSxkZWxldGUgZ1t0XSk6KHEudG90YWw9bnVsbCxxLmN1bXVsYXRpdmU9bnVsbCl9KX0pfTtjLnByb3RvdHlwZS5yZW5kZXJTdGFja1RvdGFscz1mdW5jdGlvbigpe3ZhciBjPXRoaXMuYXhpcy5jaGFydCxnPWMucmVuZGVyZXIscT10aGlzLnN0YWNrcyx2PXRoaXMuc3RhY2tUb3RhbEdyb3VwPXRoaXMuc3RhY2tUb3RhbEdyb3VwfHwKZy5nKCJzdGFjay1sYWJlbHMiKS5hdHRyKHt2aXNpYmlsaXR5OiJ2aXNpYmxlIix6SW5kZXg6Nn0pLmFkZCgpO3YudHJhbnNsYXRlKGMucGxvdExlZnQsYy5wbG90VG9wKTtCKHEsZnVuY3Rpb24oYyl7QihjLGZ1bmN0aW9uKGMpe2MucmVuZGVyKHYpfSl9KX07cmV0dXJuIGN9KCk7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZygpe31nLmNvbXBvc2U9ZnVuY3Rpb24ocSl7YyhxLCJpbml0IixnLm9uSW5pdCk7YyhxLCJkZXN0cm95IixnLm9uRGVzdHJveSl9O2cub25EZXN0cm95PWZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5zdGFja2luZztpZihjKXt2YXIgZz1jLnN0YWNrcztCKGcsZnVuY3Rpb24oYyx0KXtxKGMpO2dbdF09bnVsbH0pO2MmJmMuc3RhY2tUb3RhbEdyb3VwJiZjLnN0YWNrVG90YWxHcm91cC5kZXN0cm95KCl9fTtnLm9uSW5pdD1mdW5jdGlvbigpe3RoaXMuc3RhY2tpbmd8fCh0aGlzLnN0YWNraW5nPW5ldyBEKHRoaXMpKX07cmV0dXJuIGd9KCl9KTtPKHEsIm1peGlucy9sZWdlbmQtc3ltYm9sLmpzIiwKW3FbInBhcnRzL0dsb2JhbHMuanMiXSxxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyxjKXt2YXIgcT1jLm1lcmdlLHk9Yy5waWNrO2cuTGVnZW5kU3ltYm9sTWl4aW49e2RyYXdSZWN0YW5nbGU6ZnVuY3Rpb24oYyxnKXt2YXIgcT1jLnN5bWJvbEhlaWdodCxCPWMub3B0aW9ucy5zcXVhcmVTeW1ib2w7Zy5sZWdlbmRTeW1ib2w9dGhpcy5jaGFydC5yZW5kZXJlci5yZWN0KEI/KGMuc3ltYm9sV2lkdGgtcSkvMjowLGMuYmFzZWxpbmUtcSsxLEI/cTpjLnN5bWJvbFdpZHRoLHEseShjLm9wdGlvbnMuc3ltYm9sUmFkaXVzLHEvMikpLmFkZENsYXNzKCJoaWdoY2hhcnRzLXBvaW50IikuYXR0cih7ekluZGV4OjN9KS5hZGQoZy5sZWdlbmRHcm91cCl9LGRyYXdMaW5lTWFya2VyOmZ1bmN0aW9uKGMpe3ZhciBnPXRoaXMub3B0aW9ucyxEPWcubWFya2VyLEI9Yy5zeW1ib2xXaWR0aCx0PWMuc3ltYm9sSGVpZ2h0LEc9dC8yLEw9dGhpcy5jaGFydC5yZW5kZXJlcix2PXRoaXMubGVnZW5kR3JvdXA7CmM9Yy5iYXNlbGluZS1NYXRoLnJvdW5kKC4zKmMuZm9udE1ldHJpY3MuYik7dmFyIEs9e307dGhpcy5jaGFydC5zdHlsZWRNb2RlfHwoSz17InN0cm9rZS13aWR0aCI6Zy5saW5lV2lkdGh8fDB9LGcuZGFzaFN0eWxlJiYoSy5kYXNoc3R5bGU9Zy5kYXNoU3R5bGUpKTt0aGlzLmxlZ2VuZExpbmU9TC5wYXRoKFsiTSIsMCxjLCJMIixCLGNdKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1ncmFwaCIpLmF0dHIoSykuYWRkKHYpO0QmJiExIT09RC5lbmFibGVkJiZCJiYoZz1NYXRoLm1pbih5KEQucmFkaXVzLEcpLEcpLDA9PT10aGlzLnN5bWJvbC5pbmRleE9mKCJ1cmwiKSYmKEQ9cShELHt3aWR0aDp0LGhlaWdodDp0fSksZz0wKSx0aGlzLmxlZ2VuZFN5bWJvbD1EPUwuc3ltYm9sKHRoaXMuc3ltYm9sLEIvMi1nLGMtZywyKmcsMipnLEQpLmFkZENsYXNzKCJoaWdoY2hhcnRzLXBvaW50IikuYWRkKHYpLEQuaXNNYXJrZXI9ITApfX07cmV0dXJuIGcuTGVnZW5kU3ltYm9sTWl4aW59KTtPKHEsInBhcnRzL1BvaW50LmpzIiwKW3FbInBhcnRzL0dsb2JhbHMuanMiXSxxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyxjKXt2YXIgcT1jLmFuaW1PYmplY3QseT1jLmRlZmluZWQsQj1jLmVyYXNlLEg9Yy5leHRlbmQsRD1jLmZpcmVFdmVudCxKPWMuZm9ybWF0LHQ9Yy5nZXROZXN0ZWRQcm9wZXJ0eSxHPWMuaXNBcnJheSxMPWMuaXNOdW1iZXIsdj1jLmlzT2JqZWN0LEs9Yy5zeW5jVGltZW91dCxuPWMucGljayxyPWMucmVtb3ZlRXZlbnQsQz1jLnVuaXF1ZUtleTsiIjtjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYygpe3RoaXMuY29sb3JJbmRleD10aGlzLmNhdGVnb3J5PXZvaWQgMDt0aGlzLmZvcm1hdFByZWZpeD0icG9pbnQiO3RoaXMuaWQ9dm9pZCAwO3RoaXMuaXNOdWxsPSExO3RoaXMucGVyY2VudGFnZT10aGlzLm9wdGlvbnM9dGhpcy5uYW1lPXZvaWQgMDt0aGlzLnNlbGVjdGVkPSExO3RoaXMudG90YWw9dGhpcy5zZXJpZXM9dm9pZCAwO3RoaXMudmlzaWJsZT0hMDt0aGlzLng9dm9pZCAwfWMucHJvdG90eXBlLmFuaW1hdGVCZWZvcmVEZXN0cm95PQpmdW5jdGlvbigpe3ZhciBjPXRoaXMsbT17eDpjLnN0YXJ0WFBvcyxvcGFjaXR5OjB9LGQsbD1jLmdldEdyYXBoaWNhbFByb3BzKCk7bC5zaW5ndWxhci5mb3JFYWNoKGZ1bmN0aW9uKGwpe2Q9ImRhdGFMYWJlbCI9PT1sO2NbbF09Y1tsXS5hbmltYXRlKGQ/e3g6Y1tsXS5zdGFydFhQb3MseTpjW2xdLnN0YXJ0WVBvcyxvcGFjaXR5OjB9Om0pfSk7bC5wbHVyYWwuZm9yRWFjaChmdW5jdGlvbihkKXtjW2RdLmZvckVhY2goZnVuY3Rpb24oZCl7ZC5lbGVtZW50JiZkLmFuaW1hdGUoSCh7eDpjLnN0YXJ0WFBvc30sZC5zdGFydFlQb3M/e3g6ZC5zdGFydFhQb3MseTpkLnN0YXJ0WVBvc306e30pKX0pfSl9O2MucHJvdG90eXBlLmFwcGx5T3B0aW9ucz1mdW5jdGlvbihwLG0pe3ZhciBkPXRoaXMuc2VyaWVzLGw9ZC5vcHRpb25zLnBvaW50VmFsS2V5fHxkLnBvaW50VmFsS2V5O3A9Yy5wcm90b3R5cGUub3B0aW9uc1RvT2JqZWN0LmNhbGwodGhpcyxwKTtIKHRoaXMscCk7dGhpcy5vcHRpb25zPQp0aGlzLm9wdGlvbnM/SCh0aGlzLm9wdGlvbnMscCk6cDtwLmdyb3VwJiZkZWxldGUgdGhpcy5ncm91cDtwLmRhdGFMYWJlbHMmJmRlbGV0ZSB0aGlzLmRhdGFMYWJlbHM7bCYmKHRoaXMueT1jLnByb3RvdHlwZS5nZXROZXN0ZWRQcm9wZXJ0eS5jYWxsKHRoaXMsbCkpO3RoaXMuZm9ybWF0UHJlZml4PSh0aGlzLmlzTnVsbD1uKHRoaXMuaXNWYWxpZCYmIXRoaXMuaXNWYWxpZCgpLG51bGw9PT10aGlzLnh8fCFMKHRoaXMueSkpKT8ibnVsbCI6InBvaW50Ijt0aGlzLnNlbGVjdGVkJiYodGhpcy5zdGF0ZT0ic2VsZWN0Iik7Im5hbWUiaW4gdGhpcyYmInVuZGVmaW5lZCI9PT10eXBlb2YgbSYmZC54QXhpcyYmZC54QXhpcy5oYXNOYW1lcyYmKHRoaXMueD1kLnhBeGlzLm5hbWVUb1godGhpcykpOyJ1bmRlZmluZWQiPT09dHlwZW9mIHRoaXMueCYmZCYmKHRoaXMueD0idW5kZWZpbmVkIj09PXR5cGVvZiBtP2QuYXV0b0luY3JlbWVudCh0aGlzKTptKTtyZXR1cm4gdGhpc307Yy5wcm90b3R5cGUuZGVzdHJveT0KZnVuY3Rpb24oKXtmdW5jdGlvbiBjKCl7aWYobS5ncmFwaGljfHxtLmRhdGFMYWJlbHx8bS5kYXRhTGFiZWxzKXIobSksbS5kZXN0cm95RWxlbWVudHMoKTtmb3IoYSBpbiBtKW1bYV09bnVsbH12YXIgbT10aGlzLGQ9bS5zZXJpZXMsbD1kLmNoYXJ0O2Q9ZC5vcHRpb25zLmRhdGFTb3J0aW5nO3ZhciBrPWwuaG92ZXJQb2ludHMsZj1xKG0uc2VyaWVzLmNoYXJ0LnJlbmRlcmVyLmdsb2JhbEFuaW1hdGlvbiksYTttLmxlZ2VuZEl0ZW0mJmwubGVnZW5kLmRlc3Ryb3lJdGVtKG0pO2smJihtLnNldFN0YXRlKCksQihrLG0pLGsubGVuZ3RofHwobC5ob3ZlclBvaW50cz1udWxsKSk7aWYobT09PWwuaG92ZXJQb2ludCltLm9uTW91c2VPdXQoKTtkJiZkLmVuYWJsZWQ/KHRoaXMuYW5pbWF0ZUJlZm9yZURlc3Ryb3koKSxLKGMsZi5kdXJhdGlvbikpOmMoKTtsLnBvaW50Q291bnQtLX07Yy5wcm90b3R5cGUuZGVzdHJveUVsZW1lbnRzPWZ1bmN0aW9uKGMpe3ZhciBtPXRoaXM7Yz1tLmdldEdyYXBoaWNhbFByb3BzKGMpOwpjLnNpbmd1bGFyLmZvckVhY2goZnVuY3Rpb24oZCl7bVtkXT1tW2RdLmRlc3Ryb3koKX0pO2MucGx1cmFsLmZvckVhY2goZnVuY3Rpb24oZCl7bVtkXS5mb3JFYWNoKGZ1bmN0aW9uKGQpe2QuZWxlbWVudCYmZC5kZXN0cm95KCl9KTtkZWxldGUgbVtkXX0pfTtjLnByb3RvdHlwZS5maXJlUG9pbnRFdmVudD1mdW5jdGlvbihjLG0sZCl7dmFyIGw9dGhpcyxrPXRoaXMuc2VyaWVzLm9wdGlvbnM7KGsucG9pbnQuZXZlbnRzW2NdfHxsLm9wdGlvbnMmJmwub3B0aW9ucy5ldmVudHMmJmwub3B0aW9ucy5ldmVudHNbY10pJiZsLmltcG9ydEV2ZW50cygpOyJjbGljayI9PT1jJiZrLmFsbG93UG9pbnRTZWxlY3QmJihkPWZ1bmN0aW9uKGQpe2wuc2VsZWN0JiZsLnNlbGVjdChudWxsLGQuY3RybEtleXx8ZC5tZXRhS2V5fHxkLnNoaWZ0S2V5KX0pO0QobCxjLG0sZCl9O2MucHJvdG90eXBlLmdldENsYXNzTmFtZT1mdW5jdGlvbigpe3JldHVybiJoaWdoY2hhcnRzLXBvaW50IisodGhpcy5zZWxlY3RlZD8KIiBoaWdoY2hhcnRzLXBvaW50LXNlbGVjdCI6IiIpKyh0aGlzLm5lZ2F0aXZlPyIgaGlnaGNoYXJ0cy1uZWdhdGl2ZSI6IiIpKyh0aGlzLmlzTnVsbD8iIGhpZ2hjaGFydHMtbnVsbC1wb2ludCI6IiIpKygidW5kZWZpbmVkIiE9PXR5cGVvZiB0aGlzLmNvbG9ySW5kZXg/IiBoaWdoY2hhcnRzLWNvbG9yLSIrdGhpcy5jb2xvckluZGV4OiIiKSsodGhpcy5vcHRpb25zLmNsYXNzTmFtZT8iICIrdGhpcy5vcHRpb25zLmNsYXNzTmFtZToiIikrKHRoaXMuem9uZSYmdGhpcy56b25lLmNsYXNzTmFtZT8iICIrdGhpcy56b25lLmNsYXNzTmFtZS5yZXBsYWNlKCJoaWdoY2hhcnRzLW5lZ2F0aXZlIiwiIik6IiIpfTtjLnByb3RvdHlwZS5nZXRHcmFwaGljYWxQcm9wcz1mdW5jdGlvbihjKXt2YXIgbT10aGlzLGQ9W10sbCxrPXtzaW5ndWxhcjpbXSxwbHVyYWw6W119O2M9Y3x8e2dyYXBoaWM6MSxkYXRhTGFiZWw6MX07Yy5ncmFwaGljJiZkLnB1c2goImdyYXBoaWMiLCJzaGFkb3dHcm91cCIpOwpjLmRhdGFMYWJlbCYmZC5wdXNoKCJkYXRhTGFiZWwiLCJkYXRhTGFiZWxVcHBlciIsImNvbm5lY3RvciIpO2ZvcihsPWQubGVuZ3RoO2wtLTspe3ZhciBmPWRbbF07bVtmXSYmay5zaW5ndWxhci5wdXNoKGYpfVsiZGF0YUxhYmVsIiwiY29ubmVjdG9yIl0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgZD1hKyJzIjtjW2FdJiZtW2RdJiZrLnBsdXJhbC5wdXNoKGQpfSk7cmV0dXJuIGt9O2MucHJvdG90eXBlLmdldExhYmVsQ29uZmlnPWZ1bmN0aW9uKCl7cmV0dXJue3g6dGhpcy5jYXRlZ29yeSx5OnRoaXMueSxjb2xvcjp0aGlzLmNvbG9yLGNvbG9ySW5kZXg6dGhpcy5jb2xvckluZGV4LGtleTp0aGlzLm5hbWV8fHRoaXMuY2F0ZWdvcnksc2VyaWVzOnRoaXMuc2VyaWVzLHBvaW50OnRoaXMscGVyY2VudGFnZTp0aGlzLnBlcmNlbnRhZ2UsdG90YWw6dGhpcy50b3RhbHx8dGhpcy5zdGFja1RvdGFsfX07Yy5wcm90b3R5cGUuZ2V0TmVzdGVkUHJvcGVydHk9ZnVuY3Rpb24oYyl7aWYoYylyZXR1cm4gMD09PQpjLmluZGV4T2YoImN1c3RvbS4iKT90KGMsdGhpcy5vcHRpb25zKTp0aGlzW2NdfTtjLnByb3RvdHlwZS5nZXRab25lPWZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5zZXJpZXMsbT1jLnpvbmVzO2M9Yy56b25lQXhpc3x8InkiO3ZhciBkPTAsbDtmb3IobD1tW2RdO3RoaXNbY10+PWwudmFsdWU7KWw9bVsrK2RdO3RoaXMubm9uWm9uZWRDb2xvcnx8KHRoaXMubm9uWm9uZWRDb2xvcj10aGlzLmNvbG9yKTt0aGlzLmNvbG9yPWwmJmwuY29sb3ImJiF0aGlzLm9wdGlvbnMuY29sb3I/bC5jb2xvcjp0aGlzLm5vblpvbmVkQ29sb3I7cmV0dXJuIGx9O2MucHJvdG90eXBlLmhhc05ld1NoYXBlVHlwZT1mdW5jdGlvbigpe3JldHVybih0aGlzLmdyYXBoaWMmJih0aGlzLmdyYXBoaWMuc3ltYm9sTmFtZXx8dGhpcy5ncmFwaGljLmVsZW1lbnQubm9kZU5hbWUpKSE9PXRoaXMuc2hhcGVUeXBlfTtjLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGMsbSxkKXt0aGlzLnNlcmllcz1jO3RoaXMuYXBwbHlPcHRpb25zKG0sCmQpO3RoaXMuaWQ9eSh0aGlzLmlkKT90aGlzLmlkOkMoKTt0aGlzLnJlc29sdmVDb2xvcigpO2MuY2hhcnQucG9pbnRDb3VudCsrO0QodGhpcywiYWZ0ZXJJbml0Iik7cmV0dXJuIHRoaXN9O2MucHJvdG90eXBlLm9wdGlvbnNUb09iamVjdD1mdW5jdGlvbihnKXt2YXIgbT17fSxkPXRoaXMuc2VyaWVzLGw9ZC5vcHRpb25zLmtleXMsaz1sfHxkLnBvaW50QXJyYXlNYXB8fFsieSJdLGY9ay5sZW5ndGgsYT0wLHA9MDtpZihMKGcpfHxudWxsPT09ZyltW2tbMF1dPWc7ZWxzZSBpZihHKGcpKWZvcighbCYmZy5sZW5ndGg+ZiYmKGQ9dHlwZW9mIGdbMF0sInN0cmluZyI9PT1kP20ubmFtZT1nWzBdOiJudW1iZXIiPT09ZCYmKG0ueD1nWzBdKSxhKyspO3A8ZjspbCYmInVuZGVmaW5lZCI9PT10eXBlb2YgZ1thXXx8KDA8a1twXS5pbmRleE9mKCIuIik/Yy5wcm90b3R5cGUuc2V0TmVzdGVkUHJvcGVydHkobSxnW2FdLGtbcF0pOm1ba1twXV09Z1thXSksYSsrLHArKztlbHNlIm9iamVjdCI9PT0KdHlwZW9mIGcmJihtPWcsZy5kYXRhTGFiZWxzJiYoZC5faGFzUG9pbnRMYWJlbHM9ITApLGcubWFya2VyJiYoZC5faGFzUG9pbnRNYXJrZXJzPSEwKSk7cmV0dXJuIG19O2MucHJvdG90eXBlLnJlc29sdmVDb2xvcj1mdW5jdGlvbigpe3ZhciBjPXRoaXMuc2VyaWVzO3ZhciBtPWMuY2hhcnQub3B0aW9ucy5jaGFydC5jb2xvckNvdW50O3ZhciBkPWMuY2hhcnQuc3R5bGVkTW9kZTtkZWxldGUgdGhpcy5ub25ab25lZENvbG9yO2R8fHRoaXMub3B0aW9ucy5jb2xvcnx8KHRoaXMuY29sb3I9Yy5jb2xvcik7Yy5vcHRpb25zLmNvbG9yQnlQb2ludD8oZHx8KG09Yy5vcHRpb25zLmNvbG9yc3x8Yy5jaGFydC5vcHRpb25zLmNvbG9ycyx0aGlzLmNvbG9yPXRoaXMuY29sb3J8fG1bYy5jb2xvckNvdW50ZXJdLG09bS5sZW5ndGgpLGQ9Yy5jb2xvckNvdW50ZXIsYy5jb2xvckNvdW50ZXIrKyxjLmNvbG9yQ291bnRlcj09PW0mJihjLmNvbG9yQ291bnRlcj0wKSk6ZD1jLmNvbG9ySW5kZXg7dGhpcy5jb2xvckluZGV4PQpuKHRoaXMuY29sb3JJbmRleCxkKX07Yy5wcm90b3R5cGUuc2V0TmVzdGVkUHJvcGVydHk9ZnVuY3Rpb24oYyxtLGQpe2Quc3BsaXQoIi4iKS5yZWR1Y2UoZnVuY3Rpb24oZCxjLGYsYSl7ZFtjXT1hLmxlbmd0aC0xPT09Zj9tOnYoZFtjXSwhMCk/ZFtjXTp7fTtyZXR1cm4gZFtjXX0sYyk7cmV0dXJuIGN9O2MucHJvdG90eXBlLnRvb2x0aXBGb3JtYXR0ZXI9ZnVuY3Rpb24oYyl7dmFyIG09dGhpcy5zZXJpZXMsZD1tLnRvb2x0aXBPcHRpb25zLGw9bihkLnZhbHVlRGVjaW1hbHMsIiIpLGs9ZC52YWx1ZVByZWZpeHx8IiIsZj1kLnZhbHVlU3VmZml4fHwiIjttLmNoYXJ0LnN0eWxlZE1vZGUmJihjPW0uY2hhcnQudG9vbHRpcC5zdHlsZWRNb2RlRm9ybWF0KGMpKTsobS5wb2ludEFycmF5TWFwfHxbInkiXSkuZm9yRWFjaChmdW5jdGlvbihhKXthPSJ7cG9pbnQuIithO2lmKGt8fGYpYz1jLnJlcGxhY2UoUmVnRXhwKGErIn0iLCJnIiksaythKyJ9IitmKTtjPWMucmVwbGFjZShSZWdFeHAoYSsKIn0iLCJnIiksYSsiOiwuIitsKyJmfSIpfSk7cmV0dXJuIEooYyx7cG9pbnQ6dGhpcyxzZXJpZXM6dGhpcy5zZXJpZXN9LG0uY2hhcnQpfTtyZXR1cm4gY30oKTtyZXR1cm4gZy5Qb2ludD1jfSk7TyhxLCJwYXJ0cy9TZXJpZXMuanMiLFtxWyJwYXJ0cy9HbG9iYWxzLmpzIl0scVsibWl4aW5zL2xlZ2VuZC1zeW1ib2wuanMiXSxxWyJwYXJ0cy9PcHRpb25zLmpzIl0scVsicGFydHMvUG9pbnQuanMiXSxxWyJwYXJ0cy9TVkdFbGVtZW50LmpzIl0scVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGcsYyxxLHksQixIKXt2YXIgRD1xLmRlZmF1bHRPcHRpb25zLEo9SC5hZGRFdmVudCx0PUguYW5pbU9iamVjdCxHPUguYXJyYXlNYXgsTD1ILmFycmF5TWluLHY9SC5jbGFtcCxLPUguY29ycmVjdEZsb2F0LG49SC5kZWZpbmVkLHI9SC5lcmFzZSxDPUguZXJyb3IsST1ILmV4dGVuZCxwPUguZmluZCxtPUguZmlyZUV2ZW50LGQ9SC5nZXROZXN0ZWRQcm9wZXJ0eSxsPUguaXNBcnJheSwKaz1ILmlzRnVuY3Rpb24sZj1ILmlzTnVtYmVyLGE9SC5pc1N0cmluZyxBPUgubWVyZ2UsdT1ILm9iamVjdEVhY2gsRT1ILnBpY2ssUD1ILnJlbW92ZUV2ZW50O3E9SC5zZXJpZXNUeXBlO3ZhciB3PUguc3BsYXQsTT1ILnN5bmNUaW1lb3V0OyIiO3ZhciBGPWcuc2VyaWVzVHlwZXMsUT1nLndpbjtnLlNlcmllcz1xKCJsaW5lIixudWxsLHtsaW5lV2lkdGg6MixhbGxvd1BvaW50U2VsZWN0OiExLGNyaXNwOiEwLHNob3dDaGVja2JveDohMSxhbmltYXRpb246e2R1cmF0aW9uOjFFM30sZXZlbnRzOnt9LG1hcmtlcjp7ZW5hYmxlZFRocmVzaG9sZDoyLGxpbmVDb2xvcjoiI2ZmZmZmZiIsbGluZVdpZHRoOjAscmFkaXVzOjQsc3RhdGVzOntub3JtYWw6e2FuaW1hdGlvbjohMH0saG92ZXI6e2FuaW1hdGlvbjp7ZHVyYXRpb246NTB9LGVuYWJsZWQ6ITAscmFkaXVzUGx1czoyLGxpbmVXaWR0aFBsdXM6MX0sc2VsZWN0OntmaWxsQ29sb3I6IiNjY2NjY2MiLGxpbmVDb2xvcjoiIzAwMDAwMCIsCmxpbmVXaWR0aDoyfX19LHBvaW50OntldmVudHM6e319LGRhdGFMYWJlbHM6e2FsaWduOiJjZW50ZXIiLGZvcm1hdHRlcjpmdW5jdGlvbigpe3ZhciBhPXRoaXMuc2VyaWVzLmNoYXJ0Lm51bWJlckZvcm1hdHRlcjtyZXR1cm4ibnVtYmVyIiE9PXR5cGVvZiB0aGlzLnk/IiI6YSh0aGlzLnksLTEpfSxwYWRkaW5nOjUsc3R5bGU6e2ZvbnRTaXplOiIxMXB4Iixmb250V2VpZ2h0OiJib2xkIixjb2xvcjoiY29udHJhc3QiLHRleHRPdXRsaW5lOiIxcHggY29udHJhc3QifSx2ZXJ0aWNhbEFsaWduOiJib3R0b20iLHg6MCx5OjB9LGNyb3BUaHJlc2hvbGQ6MzAwLG9wYWNpdHk6MSxwb2ludFJhbmdlOjAsc29mdFRocmVzaG9sZDohMCxzdGF0ZXM6e25vcm1hbDp7YW5pbWF0aW9uOiEwfSxob3Zlcjp7YW5pbWF0aW9uOntkdXJhdGlvbjo1MH0sbGluZVdpZHRoUGx1czoxLG1hcmtlcjp7fSxoYWxvOntzaXplOjEwLG9wYWNpdHk6LjI1fX0sc2VsZWN0OnthbmltYXRpb246e2R1cmF0aW9uOjB9fSwKaW5hY3RpdmU6e2FuaW1hdGlvbjp7ZHVyYXRpb246NTB9LG9wYWNpdHk6LjJ9fSxzdGlja3lUcmFja2luZzohMCx0dXJib1RocmVzaG9sZDoxRTMsZmluZE5lYXJlc3RQb2ludEJ5OiJ4In0se2F4aXNUeXBlczpbInhBeGlzIiwieUF4aXMiXSxjb2xsOiJzZXJpZXMiLGNvbG9yQ291bnRlcjowLGNyb3BTaG91bGRlcjoxLGRpcmVjdFRvdWNoOiExLGV2ZW50c1RvVW5iaW5kOltdLGlzQ2FydGVzaWFuOiEwLHBhcmFsbGVsQXJyYXlzOlsieCIsInkiXSxwb2ludENsYXNzOnkscmVxdWlyZVNvcnRpbmc6ITAsc29ydGVkOiEwLGluaXQ6ZnVuY3Rpb24oYSxiKXttKHRoaXMsImluaXQiLHtvcHRpb25zOmJ9KTt2YXIgZT10aGlzLGQ9YS5zZXJpZXMsYzt0aGlzLmV2ZW50T3B0aW9ucz10aGlzLmV2ZW50T3B0aW9uc3x8e307ZS5jaGFydD1hO2Uub3B0aW9ucz1iPWUuc2V0T3B0aW9ucyhiKTtlLmxpbmtlZFNlcmllcz1bXTtlLmJpbmRBeGVzKCk7SShlLHtuYW1lOmIubmFtZSxzdGF0ZToiIix2aXNpYmxlOiExIT09CmIudmlzaWJsZSxzZWxlY3RlZDohMD09PWIuc2VsZWN0ZWR9KTt2YXIgZj1iLmV2ZW50czt1KGYsZnVuY3Rpb24oYixhKXtrKGIpJiZlLmV2ZW50T3B0aW9uc1thXSE9PWImJihrKGUuZXZlbnRPcHRpb25zW2FdKSYmUChlLGEsZS5ldmVudE9wdGlvbnNbYV0pLGUuZXZlbnRPcHRpb25zW2FdPWIsSihlLGEsYikpfSk7aWYoZiYmZi5jbGlja3x8Yi5wb2ludCYmYi5wb2ludC5ldmVudHMmJmIucG9pbnQuZXZlbnRzLmNsaWNrfHxiLmFsbG93UG9pbnRTZWxlY3QpYS5ydW5UcmFja2VyQ2xpY2s9ITA7ZS5nZXRDb2xvcigpO2UuZ2V0U3ltYm9sKCk7ZS5wYXJhbGxlbEFycmF5cy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2VbYisiRGF0YSJdfHwoZVtiKyJEYXRhIl09W10pfSk7ZS5pc0NhcnRlc2lhbiYmKGEuaGFzQ2FydGVzaWFuU2VyaWVzPSEwKTtkLmxlbmd0aCYmKGM9ZFtkLmxlbmd0aC0xXSk7ZS5faT1FKGMmJmMuX2ksLTEpKzE7ZS5vcGFjaXR5PWUub3B0aW9ucy5vcGFjaXR5O2Eub3JkZXJTZXJpZXModGhpcy5pbnNlcnQoZCkpOwpiLmRhdGFTb3J0aW5nJiZiLmRhdGFTb3J0aW5nLmVuYWJsZWQ/ZS5zZXREYXRhU29ydGluZ09wdGlvbnMoKTplLnBvaW50c3x8ZS5kYXRhfHxlLnNldERhdGEoYi5kYXRhLCExKTttKHRoaXMsImFmdGVySW5pdCIpfSxpczpmdW5jdGlvbihhKXtyZXR1cm4gRlthXSYmdGhpcyBpbnN0YW5jZW9mIEZbYV19LGluc2VydDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLm9wdGlvbnMuaW5kZXgsZTtpZihmKGIpKXtmb3IoZT1hLmxlbmd0aDtlLS07KWlmKGI+PUUoYVtlXS5vcHRpb25zLmluZGV4LGFbZV0uX2kpKXthLnNwbGljZShlKzEsMCx0aGlzKTticmVha30tMT09PWUmJmEudW5zaGlmdCh0aGlzKTtlKz0xfWVsc2UgYS5wdXNoKHRoaXMpO3JldHVybiBFKGUsYS5sZW5ndGgtMSl9LGJpbmRBeGVzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPWEub3B0aW9ucyxkPWEuY2hhcnQsYzttKHRoaXMsImJpbmRBeGVzIixudWxsLGZ1bmN0aW9uKCl7KGEuYXhpc1R5cGVzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihlKXtkW2VdLmZvckVhY2goZnVuY3Rpb24oZCl7Yz0KZC5vcHRpb25zO2lmKGJbZV09PT1jLmluZGV4fHwidW5kZWZpbmVkIiE9PXR5cGVvZiBiW2VdJiZiW2VdPT09Yy5pZHx8InVuZGVmaW5lZCI9PT10eXBlb2YgYltlXSYmMD09PWMuaW5kZXgpYS5pbnNlcnQoZC5zZXJpZXMpLGFbZV09ZCxkLmlzRGlydHk9ITB9KTthW2VdfHxhLm9wdGlvbmFsQXhpcz09PWV8fEMoMTgsITAsZCl9KX0pO20odGhpcywiYWZ0ZXJCaW5kQXhlcyIpfSx1cGRhdGVQYXJhbGxlbEFycmF5czpmdW5jdGlvbihhLGIpe3ZhciBlPWEuc2VyaWVzLGQ9YXJndW1lbnRzLGM9ZihiKT9mdW5jdGlvbihkKXt2YXIgYz0ieSI9PT1kJiZlLnRvWURhdGE/ZS50b1lEYXRhKGEpOmFbZF07ZVtkKyJEYXRhIl1bYl09Y306ZnVuY3Rpb24oYSl7QXJyYXkucHJvdG90eXBlW2JdLmFwcGx5KGVbYSsiRGF0YSJdLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGQsMikpfTtlLnBhcmFsbGVsQXJyYXlzLmZvckVhY2goYyl9LGhhc0RhdGE6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52aXNpYmxlJiYKInVuZGVmaW5lZCIhPT10eXBlb2YgdGhpcy5kYXRhTWF4JiYidW5kZWZpbmVkIiE9PXR5cGVvZiB0aGlzLmRhdGFNaW58fHRoaXMudmlzaWJsZSYmdGhpcy55RGF0YSYmMDx0aGlzLnlEYXRhLmxlbmd0aH0sYXV0b0luY3JlbWVudDpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucyxiPXRoaXMueEluY3JlbWVudCxkLGM9YS5wb2ludEludGVydmFsVW5pdCxmPXRoaXMuY2hhcnQudGltZTtiPUUoYixhLnBvaW50U3RhcnQsMCk7dGhpcy5wb2ludEludGVydmFsPWQ9RSh0aGlzLnBvaW50SW50ZXJ2YWwsYS5wb2ludEludGVydmFsLDEpO2MmJihhPW5ldyBmLkRhdGUoYiksImRheSI9PT1jP2Yuc2V0KCJEYXRlIixhLGYuZ2V0KCJEYXRlIixhKStkKToibW9udGgiPT09Yz9mLnNldCgiTW9udGgiLGEsZi5nZXQoIk1vbnRoIixhKStkKToieWVhciI9PT1jJiZmLnNldCgiRnVsbFllYXIiLGEsZi5nZXQoIkZ1bGxZZWFyIixhKStkKSxkPWEuZ2V0VGltZSgpLWIpO3RoaXMueEluY3JlbWVudD0KYitkO3JldHVybiBifSxzZXREYXRhU29ydGluZ09wdGlvbnM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnM7SSh0aGlzLHtyZXF1aXJlU29ydGluZzohMSxzb3J0ZWQ6ITEsZW5hYmxlZERhdGFTb3J0aW5nOiEwLGFsbG93REc6ITF9KTtuKGEucG9pbnRSYW5nZSl8fChhLnBvaW50UmFuZ2U9MSl9LHNldE9wdGlvbnM6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5jaGFydCxlPWIub3B0aW9ucyxkPWUucGxvdE9wdGlvbnMsYz1iLnVzZXJPcHRpb25zfHx7fTthPUEoYSk7Yj1iLnN0eWxlZE1vZGU7dmFyIGY9e3Bsb3RPcHRpb25zOmQsdXNlck9wdGlvbnM6YX07bSh0aGlzLCJzZXRPcHRpb25zIixmKTt2YXIgbD1mLnBsb3RPcHRpb25zW3RoaXMudHlwZV0saz1jLnBsb3RPcHRpb25zfHx7fTt0aGlzLnVzZXJPcHRpb25zPWYudXNlck9wdGlvbnM7Yz1BKGwsZC5zZXJpZXMsYy5wbG90T3B0aW9ucyYmYy5wbG90T3B0aW9uc1t0aGlzLnR5cGVdLGEpO3RoaXMudG9vbHRpcE9wdGlvbnM9CkEoRC50b29sdGlwLEQucGxvdE9wdGlvbnMuc2VyaWVzJiZELnBsb3RPcHRpb25zLnNlcmllcy50b29sdGlwLEQucGxvdE9wdGlvbnNbdGhpcy50eXBlXS50b29sdGlwLGUudG9vbHRpcC51c2VyT3B0aW9ucyxkLnNlcmllcyYmZC5zZXJpZXMudG9vbHRpcCxkW3RoaXMudHlwZV0udG9vbHRpcCxhLnRvb2x0aXApO3RoaXMuc3RpY2t5VHJhY2tpbmc9RShhLnN0aWNreVRyYWNraW5nLGtbdGhpcy50eXBlXSYma1t0aGlzLnR5cGVdLnN0aWNreVRyYWNraW5nLGsuc2VyaWVzJiZrLnNlcmllcy5zdGlja3lUcmFja2luZyx0aGlzLnRvb2x0aXBPcHRpb25zLnNoYXJlZCYmIXRoaXMubm9TaGFyZWRUb29sdGlwPyEwOmMuc3RpY2t5VHJhY2tpbmcpO251bGw9PT1sLm1hcmtlciYmZGVsZXRlIGMubWFya2VyO3RoaXMuem9uZUF4aXM9Yy56b25lQXhpcztlPXRoaXMuem9uZXM9KGMuem9uZXN8fFtdKS5zbGljZSgpOyFjLm5lZ2F0aXZlQ29sb3ImJiFjLm5lZ2F0aXZlRmlsbENvbG9yfHxjLnpvbmVzfHwKKGQ9e3ZhbHVlOmNbdGhpcy56b25lQXhpcysiVGhyZXNob2xkIl18fGMudGhyZXNob2xkfHwwLGNsYXNzTmFtZToiaGlnaGNoYXJ0cy1uZWdhdGl2ZSJ9LGJ8fChkLmNvbG9yPWMubmVnYXRpdmVDb2xvcixkLmZpbGxDb2xvcj1jLm5lZ2F0aXZlRmlsbENvbG9yKSxlLnB1c2goZCkpO2UubGVuZ3RoJiZuKGVbZS5sZW5ndGgtMV0udmFsdWUpJiZlLnB1c2goYj97fTp7Y29sb3I6dGhpcy5jb2xvcixmaWxsQ29sb3I6dGhpcy5maWxsQ29sb3J9KTttKHRoaXMsImFmdGVyU2V0T3B0aW9ucyIse29wdGlvbnM6Y30pO3JldHVybiBjfSxnZXROYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5vcHRpb25zLm5hbWUsIlNlcmllcyAiKyh0aGlzLmluZGV4KzEpKX0sZ2V0Q3ljbGljOmZ1bmN0aW9uKGEsYixkKXt2YXIgZT10aGlzLmNoYXJ0LGM9dGhpcy51c2VyT3B0aW9ucyxoPWErIkluZGV4IixmPWErIkNvdW50ZXIiLGw9ZD9kLmxlbmd0aDpFKGUub3B0aW9ucy5jaGFydFthKyJDb3VudCJdLAplW2ErIkNvdW50Il0pO2lmKCFiKXt2YXIgaz1FKGNbaF0sY1siXyIraF0pO24oayl8fChlLnNlcmllcy5sZW5ndGh8fChlW2ZdPTApLGNbIl8iK2hdPWs9ZVtmXSVsLGVbZl0rPTEpO2QmJihiPWRba10pfSJ1bmRlZmluZWQiIT09dHlwZW9mIGsmJih0aGlzW2hdPWspO3RoaXNbYV09Yn0sZ2V0Q29sb3I6ZnVuY3Rpb24oKXt0aGlzLmNoYXJ0LnN0eWxlZE1vZGU/dGhpcy5nZXRDeWNsaWMoImNvbG9yIik6dGhpcy5vcHRpb25zLmNvbG9yQnlQb2ludD90aGlzLm9wdGlvbnMuY29sb3I9bnVsbDp0aGlzLmdldEN5Y2xpYygiY29sb3IiLHRoaXMub3B0aW9ucy5jb2xvcnx8RC5wbG90T3B0aW9uc1t0aGlzLnR5cGVdLmNvbG9yLHRoaXMuY2hhcnQub3B0aW9ucy5jb2xvcnMpfSxnZXRQb2ludHNDb2xsZWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuaGFzR3JvdXBlZERhdGE/dGhpcy5wb2ludHM6dGhpcy5kYXRhKXx8W119LGdldFN5bWJvbDpmdW5jdGlvbigpe3RoaXMuZ2V0Q3ljbGljKCJzeW1ib2wiLAp0aGlzLm9wdGlvbnMubWFya2VyLnN5bWJvbCx0aGlzLmNoYXJ0Lm9wdGlvbnMuc3ltYm9scyl9LGZpbmRQb2ludEluZGV4OmZ1bmN0aW9uKGEsYil7dmFyIGU9YS5pZCxkPWEueCxjPXRoaXMucG9pbnRzLGwsaz10aGlzLm9wdGlvbnMuZGF0YVNvcnRpbmc7aWYoZSl2YXIgbT10aGlzLmNoYXJ0LmdldChlKTtlbHNlIGlmKHRoaXMubGlua2VkUGFyZW50fHx0aGlzLmVuYWJsZWREYXRhU29ydGluZyl7dmFyIGc9ayYmay5tYXRjaEJ5TmFtZT8ibmFtZSI6ImluZGV4IjttPXAoYyxmdW5jdGlvbihiKXtyZXR1cm4hYi50b3VjaGVkJiZiW2ddPT09YVtnXX0pO2lmKCFtKXJldHVybn1pZihtKXt2YXIgbj1tJiZtLmluZGV4OyJ1bmRlZmluZWQiIT09dHlwZW9mIG4mJihsPSEwKX0idW5kZWZpbmVkIj09PXR5cGVvZiBuJiZmKGQpJiYobj10aGlzLnhEYXRhLmluZGV4T2YoZCxiKSk7LTEhPT1uJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBuJiZ0aGlzLmNyb3BwZWQmJihuPW4+PXRoaXMuY3JvcFN0YXJ0PwpuLXRoaXMuY3JvcFN0YXJ0Om4pOyFsJiZjW25dJiZjW25dLnRvdWNoZWQmJihuPXZvaWQgMCk7cmV0dXJuIG59LGRyYXdMZWdlbmRTeW1ib2w6Yy5kcmF3TGluZU1hcmtlcix1cGRhdGVEYXRhOmZ1bmN0aW9uKGEsYil7dmFyIGU9dGhpcy5vcHRpb25zLGQ9ZS5kYXRhU29ydGluZyxjPXRoaXMucG9pbnRzLGw9W10sayxtLGcscD10aGlzLnJlcXVpcmVTb3J0aW5nLHU9YS5sZW5ndGg9PT1jLmxlbmd0aCx3PSEwO3RoaXMueEluY3JlbWVudD1udWxsO2EuZm9yRWFjaChmdW5jdGlvbihiLGEpe3ZhciBoPW4oYikmJnRoaXMucG9pbnRDbGFzcy5wcm90b3R5cGUub3B0aW9uc1RvT2JqZWN0LmNhbGwoe3Nlcmllczp0aGlzfSxiKXx8e307dmFyIG09aC54O2lmKGguaWR8fGYobSkpe2lmKG09dGhpcy5maW5kUG9pbnRJbmRleChoLGcpLC0xPT09bXx8InVuZGVmaW5lZCI9PT10eXBlb2YgbT9sLnB1c2goYik6Y1ttXSYmYiE9PWUuZGF0YVttXT8oY1ttXS51cGRhdGUoYiwhMSxudWxsLCExKSwKY1ttXS50b3VjaGVkPSEwLHAmJihnPW0rMSkpOmNbbV0mJihjW21dLnRvdWNoZWQ9ITApLCF1fHxhIT09bXx8ZCYmZC5lbmFibGVkfHx0aGlzLmhhc0Rlcml2ZWREYXRhKWs9ITB9ZWxzZSBsLnB1c2goYil9LHRoaXMpO2lmKGspZm9yKGE9Yy5sZW5ndGg7YS0tOykobT1jW2FdKSYmIW0udG91Y2hlZCYmbS5yZW1vdmUmJm0ucmVtb3ZlKCExLGIpO2Vsc2UhdXx8ZCYmZC5lbmFibGVkP3c9ITE6KGEuZm9yRWFjaChmdW5jdGlvbihiLGEpe2NbYV0udXBkYXRlJiZiIT09Y1thXS55JiZjW2FdLnVwZGF0ZShiLCExLG51bGwsITEpfSksbC5sZW5ndGg9MCk7Yy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2ImJihiLnRvdWNoZWQ9ITEpfSk7aWYoIXcpcmV0dXJuITE7bC5mb3JFYWNoKGZ1bmN0aW9uKGIpe3RoaXMuYWRkUG9pbnQoYiwhMSxudWxsLG51bGwsITEpfSx0aGlzKTtudWxsPT09dGhpcy54SW5jcmVtZW50JiZ0aGlzLnhEYXRhJiZ0aGlzLnhEYXRhLmxlbmd0aCYmKHRoaXMueEluY3JlbWVudD0KRyh0aGlzLnhEYXRhKSx0aGlzLmF1dG9JbmNyZW1lbnQoKSk7cmV0dXJuITB9LHNldERhdGE6ZnVuY3Rpb24oZSxiLGQsYyl7dmFyIGg9dGhpcyxrPWgucG9pbnRzLG09ayYmay5sZW5ndGh8fDAsZyxwPWgub3B0aW9ucyxuPWguY2hhcnQsdT1wLmRhdGFTb3J0aW5nLHc9bnVsbCx6PWgueEF4aXM7dz1wLnR1cmJvVGhyZXNob2xkO3ZhciByPXRoaXMueERhdGEscT10aGlzLnlEYXRhLEE9KGc9aC5wb2ludEFycmF5TWFwKSYmZy5sZW5ndGgsdD1wLmtleXMsdj0wLEY9MSxNO2U9ZXx8W107Zz1lLmxlbmd0aDtiPUUoYiwhMCk7dSYmdS5lbmFibGVkJiYoZT10aGlzLnNvcnREYXRhKGUpKTshMSE9PWMmJmcmJm0mJiFoLmNyb3BwZWQmJiFoLmhhc0dyb3VwZWREYXRhJiZoLnZpc2libGUmJiFoLmlzU2VyaWVzQm9vc3RpbmcmJihNPXRoaXMudXBkYXRlRGF0YShlLGQpKTtpZighTSl7aC54SW5jcmVtZW50PW51bGw7aC5jb2xvckNvdW50ZXI9MDt0aGlzLnBhcmFsbGVsQXJyYXlzLmZvckVhY2goZnVuY3Rpb24oYil7aFtiKwoiRGF0YSJdLmxlbmd0aD0wfSk7aWYodyYmZz53KWlmKHc9aC5nZXRGaXJzdFZhbGlkUG9pbnQoZSksZih3KSlmb3IoZD0wO2Q8ZztkKyspcltkXT10aGlzLmF1dG9JbmNyZW1lbnQoKSxxW2RdPWVbZF07ZWxzZSBpZihsKHcpKWlmKEEpZm9yKGQ9MDtkPGc7ZCsrKWM9ZVtkXSxyW2RdPWNbMF0scVtkXT1jLnNsaWNlKDEsQSsxKTtlbHNlIGZvcih0JiYodj10LmluZGV4T2YoIngiKSxGPXQuaW5kZXhPZigieSIpLHY9MDw9dj92OjAsRj0wPD1GP0Y6MSksZD0wO2Q8ZztkKyspYz1lW2RdLHJbZF09Y1t2XSxxW2RdPWNbRl07ZWxzZSBDKDEyLCExLG4pO2Vsc2UgZm9yKGQ9MDtkPGc7ZCsrKSJ1bmRlZmluZWQiIT09dHlwZW9mIGVbZF0mJihjPXtzZXJpZXM6aH0saC5wb2ludENsYXNzLnByb3RvdHlwZS5hcHBseU9wdGlvbnMuYXBwbHkoYyxbZVtkXV0pLGgudXBkYXRlUGFyYWxsZWxBcnJheXMoYyxkKSk7cSYmYShxWzBdKSYmQygxNCwhMCxuKTtoLmRhdGE9W107aC5vcHRpb25zLmRhdGE9CmgudXNlck9wdGlvbnMuZGF0YT1lO2ZvcihkPW07ZC0tOylrW2RdJiZrW2RdLmRlc3Ryb3kmJmtbZF0uZGVzdHJveSgpO3omJih6Lm1pblJhbmdlPXoudXNlck1pblJhbmdlKTtoLmlzRGlydHk9bi5pc0RpcnR5Qm94PSEwO2guaXNEaXJ0eURhdGE9ISFrO2Q9ITF9InBvaW50Ij09PXAubGVnZW5kVHlwZSYmKHRoaXMucHJvY2Vzc0RhdGEoKSx0aGlzLmdlbmVyYXRlUG9pbnRzKCkpO2ImJm4ucmVkcmF3KGQpfSxzb3J0RGF0YTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLGU9Yi5vcHRpb25zLmRhdGFTb3J0aW5nLnNvcnRLZXl8fCJ5IixjPWZ1bmN0aW9uKGIsYSl7cmV0dXJuIG4oYSkmJmIucG9pbnRDbGFzcy5wcm90b3R5cGUub3B0aW9uc1RvT2JqZWN0LmNhbGwoe3NlcmllczpifSxhKXx8e319O2EuZm9yRWFjaChmdW5jdGlvbihlLGQpe2FbZF09YyhiLGUpO2FbZF0uaW5kZXg9ZH0sdGhpcyk7YS5jb25jYXQoKS5zb3J0KGZ1bmN0aW9uKGIsYSl7Yj1kKGUsYik7YT1kKGUsYSk7cmV0dXJuIGE8CmI/LTE6YT5iPzE6MH0pLmZvckVhY2goZnVuY3Rpb24oYixhKXtiLng9YX0sdGhpcyk7Yi5saW5rZWRTZXJpZXMmJmIubGlua2VkU2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIGU9Yi5vcHRpb25zLGQ9ZS5kYXRhO2UuZGF0YVNvcnRpbmcmJmUuZGF0YVNvcnRpbmcuZW5hYmxlZHx8IWR8fChkLmZvckVhY2goZnVuY3Rpb24oZSxoKXtkW2hdPWMoYixlKTthW2hdJiYoZFtoXS54PWFbaF0ueCxkW2hdLmluZGV4PWgpfSksYi5zZXREYXRhKGQsITEpKX0pO3JldHVybiBhfSxnZXRQcm9jZXNzZWREYXRhOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMueERhdGEsZT10aGlzLnlEYXRhLGQ9Yi5sZW5ndGg7dmFyIGM9MDt2YXIgZj10aGlzLnhBeGlzLGw9dGhpcy5vcHRpb25zO3ZhciBrPWwuY3JvcFRocmVzaG9sZDt2YXIgbT1hfHx0aGlzLmdldEV4dHJlbWVzRnJvbUFsbHx8bC5nZXRFeHRyZW1lc0Zyb21BbGwsZz10aGlzLmlzQ2FydGVzaWFuO2E9ZiYmZi52YWwybGluO2w9ISghZnx8IWYubG9nYXJpdGhtaWMpOwp2YXIgcD10aGlzLnJlcXVpcmVTb3J0aW5nO2lmKGYpe2Y9Zi5nZXRFeHRyZW1lcygpO3ZhciBuPWYubWluO3ZhciB3PWYubWF4fWlmKGcmJnRoaXMuc29ydGVkJiYhbSYmKCFrfHxkPmt8fHRoaXMuZm9yY2VDcm9wKSlpZihiW2QtMV08bnx8YlswXT53KWI9W10sZT1bXTtlbHNlIGlmKHRoaXMueURhdGEmJihiWzBdPG58fGJbZC0xXT53KSl7Yz10aGlzLmNyb3BEYXRhKHRoaXMueERhdGEsdGhpcy55RGF0YSxuLHcpO2I9Yy54RGF0YTtlPWMueURhdGE7Yz1jLnN0YXJ0O3ZhciB1PSEwfWZvcihrPWIubGVuZ3RofHwxOy0tazspaWYoZD1sP2EoYltrXSktYShiW2stMV0pOmJba10tYltrLTFdLDA8ZCYmKCJ1bmRlZmluZWQiPT09dHlwZW9mIHJ8fGQ8cikpdmFyIHI9ZDtlbHNlIDA+ZCYmcCYmKEMoMTUsITEsdGhpcy5jaGFydCkscD0hMSk7cmV0dXJue3hEYXRhOmIseURhdGE6ZSxjcm9wcGVkOnUsY3JvcFN0YXJ0OmMsY2xvc2VzdFBvaW50UmFuZ2U6cn19LHByb2Nlc3NEYXRhOmZ1bmN0aW9uKGEpe3ZhciBiPQp0aGlzLnhBeGlzO2lmKHRoaXMuaXNDYXJ0ZXNpYW4mJiF0aGlzLmlzRGlydHkmJiFiLmlzRGlydHkmJiF0aGlzLnlBeGlzLmlzRGlydHkmJiFhKXJldHVybiExO2E9dGhpcy5nZXRQcm9jZXNzZWREYXRhKCk7dGhpcy5jcm9wcGVkPWEuY3JvcHBlZDt0aGlzLmNyb3BTdGFydD1hLmNyb3BTdGFydDt0aGlzLnByb2Nlc3NlZFhEYXRhPWEueERhdGE7dGhpcy5wcm9jZXNzZWRZRGF0YT1hLnlEYXRhO3RoaXMuY2xvc2VzdFBvaW50UmFuZ2U9dGhpcy5iYXNlUG9pbnRSYW5nZT1hLmNsb3Nlc3RQb2ludFJhbmdlfSxjcm9wRGF0YTpmdW5jdGlvbihhLGIsZCxjLGYpe3ZhciBlPWEubGVuZ3RoLGg9MCxrPWUsbDtmPUUoZix0aGlzLmNyb3BTaG91bGRlcik7Zm9yKGw9MDtsPGU7bCsrKWlmKGFbbF0+PWQpe2g9TWF0aC5tYXgoMCxsLWYpO2JyZWFrfWZvcihkPWw7ZDxlO2QrKylpZihhW2RdPmMpe2s9ZCtmO2JyZWFrfXJldHVybnt4RGF0YTphLnNsaWNlKGgsaykseURhdGE6Yi5zbGljZShoLGspLApzdGFydDpoLGVuZDprfX0sZ2VuZXJhdGVQb2ludHM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnMsYj1hLmRhdGEsZD10aGlzLmRhdGEsYyxmPXRoaXMucHJvY2Vzc2VkWERhdGEsaz10aGlzLnByb2Nlc3NlZFlEYXRhLGw9dGhpcy5wb2ludENsYXNzLGc9Zi5sZW5ndGgscD10aGlzLmNyb3BTdGFydHx8MCxuPXRoaXMuaGFzR3JvdXBlZERhdGE7YT1hLmtleXM7dmFyIHU9W10scjtkfHxufHwoZD1bXSxkLmxlbmd0aD1iLmxlbmd0aCxkPXRoaXMuZGF0YT1kKTthJiZuJiYodGhpcy5vcHRpb25zLmtleXM9ITEpO2ZvcihyPTA7cjxnO3IrKyl7dmFyIHE9cCtyO2lmKG4pe3ZhciBBPShuZXcgbCkuaW5pdCh0aGlzLFtmW3JdXS5jb25jYXQodyhrW3JdKSkpO0EuZGF0YUdyb3VwPXRoaXMuZ3JvdXBNYXBbcl07QS5kYXRhR3JvdXAub3B0aW9ucyYmKEEub3B0aW9ucz1BLmRhdGFHcm91cC5vcHRpb25zLEkoQSxBLmRhdGFHcm91cC5vcHRpb25zKSxkZWxldGUgQS5kYXRhTGFiZWxzKX1lbHNlKEE9CmRbcV0pfHwidW5kZWZpbmVkIj09PXR5cGVvZiBiW3FdfHwoZFtxXT1BPShuZXcgbCkuaW5pdCh0aGlzLGJbcV0sZltyXSkpO0EmJihBLmluZGV4PXEsdVtyXT1BKX10aGlzLm9wdGlvbnMua2V5cz1hO2lmKGQmJihnIT09KGM9ZC5sZW5ndGgpfHxuKSlmb3Iocj0wO3I8YztyKyspciE9PXB8fG58fChyKz1nKSxkW3JdJiYoZFtyXS5kZXN0cm95RWxlbWVudHMoKSxkW3JdLnBsb3RYPXZvaWQgMCk7dGhpcy5kYXRhPWQ7dGhpcy5wb2ludHM9dTttKHRoaXMsImFmdGVyR2VuZXJhdGVQb2ludHMiKX0sZ2V0WEV4dHJlbWVzOmZ1bmN0aW9uKGEpe3JldHVybnttaW46TChhKSxtYXg6RyhhKX19LGdldEV4dHJlbWVzOmZ1bmN0aW9uKGEsYil7dmFyIGQ9dGhpcy54QXhpcyxlPXRoaXMueUF4aXMsYz10aGlzLnByb2Nlc3NlZFhEYXRhfHx0aGlzLnhEYXRhLGs9W10sZz0wLHA9MDt2YXIgbj0wO3ZhciB3PXRoaXMucmVxdWlyZVNvcnRpbmc/dGhpcy5jcm9wU2hvdWxkZXI6MCx1PWU/ZS5wb3NpdGl2ZVZhbHVlc09ubHk6CiExLHI7YT1hfHx0aGlzLnN0YWNrZWRZRGF0YXx8dGhpcy5wcm9jZXNzZWRZRGF0YXx8W107ZT1hLmxlbmd0aDtkJiYobj1kLmdldEV4dHJlbWVzKCkscD1uLm1pbixuPW4ubWF4KTtmb3Iocj0wO3I8ZTtyKyspe3ZhciBxPWNbcl07dmFyIEE9YVtyXTt2YXIgdD0oZihBKXx8bChBKSkmJihBLmxlbmd0aHx8MDxBfHwhdSk7cT1ifHx0aGlzLmdldEV4dHJlbWVzRnJvbUFsbHx8dGhpcy5vcHRpb25zLmdldEV4dHJlbWVzRnJvbUFsbHx8dGhpcy5jcm9wcGVkfHwhZHx8KGNbcit3XXx8cSk+PXAmJihjW3Itd118fHEpPD1uO2lmKHQmJnEpaWYodD1BLmxlbmd0aClmb3IoO3QtLTspZihBW3RdKSYmKGtbZysrXT1BW3RdKTtlbHNlIGtbZysrXT1BfWE9e2RhdGFNaW46TChrKSxkYXRhTWF4Okcoayl9O20odGhpcywiYWZ0ZXJHZXRFeHRyZW1lcyIse2RhdGFFeHRyZW1lczphfSk7cmV0dXJuIGF9LGFwcGx5RXh0cmVtZXM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldEV4dHJlbWVzKCk7dGhpcy5kYXRhTWluPQphLmRhdGFNaW47dGhpcy5kYXRhTWF4PWEuZGF0YU1heDtyZXR1cm4gYX0sZ2V0Rmlyc3RWYWxpZFBvaW50OmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1udWxsLGQ9YS5sZW5ndGgsZT0wO251bGw9PT1iJiZlPGQ7KWI9YVtlXSxlKys7cmV0dXJuIGJ9LHRyYW5zbGF0ZTpmdW5jdGlvbigpe3RoaXMucHJvY2Vzc2VkWERhdGF8fHRoaXMucHJvY2Vzc0RhdGEoKTt0aGlzLmdlbmVyYXRlUG9pbnRzKCk7dmFyIGE9dGhpcy5vcHRpb25zLGI9YS5zdGFja2luZyxkPXRoaXMueEF4aXMsYz1kLmNhdGVnb3JpZXMsaz10aGlzLmVuYWJsZWREYXRhU29ydGluZyxnPXRoaXMueUF4aXMscD10aGlzLnBvaW50cyx3PXAubGVuZ3RoLHU9ISF0aGlzLm1vZGlmeVZhbHVlLHIscT10aGlzLnBvaW50UGxhY2VtZW50VG9YVmFsdWUoKSxBPSEhcSx0PWEudGhyZXNob2xkLEM9YS5zdGFydEZyb21UaHJlc2hvbGQ/dDowLEYsTT10aGlzLnpvbmVBeGlzfHwieSIseT1OdW1iZXIuTUFYX1ZBTFVFO2ZvcihyPTA7cjwKdztyKyspe3ZhciBJPXBbcl0sRD1JLngsQj1JLnksRz1JLmxvdyxQPWImJmcuc3RhY2tpbmcmJmcuc3RhY2tpbmcuc3RhY2tzWyh0aGlzLm5lZ1N0YWNrcyYmQjwoQz8wOnQpPyItIjoiIikrdGhpcy5zdGFja0tleV07Zy5wb3NpdGl2ZVZhbHVlc09ubHkmJm51bGwhPT1CJiYwPj1CJiYoSS5pc051bGw9ITApO0kucGxvdFg9Rj1LKHYoZC50cmFuc2xhdGUoRCwwLDAsMCwxLHEsImZsYWdzIj09PXRoaXMudHlwZSksLTFFNSwxRTUpKTtpZihiJiZ0aGlzLnZpc2libGUmJlAmJlBbRF0pe3ZhciBIPXRoaXMuZ2V0U3RhY2tJbmRpY2F0b3IoSCxELHRoaXMuaW5kZXgpO2lmKCFJLmlzTnVsbCl7dmFyIFE9UFtEXTt2YXIgSj1RLnBvaW50c1tILmtleV19fWwoSikmJihHPUpbMF0sQj1KWzFdLEc9PT1DJiZILmtleT09PVBbRF0uYmFzZSYmKEc9RShmKHQpJiZ0LGcubWluKSksZy5wb3NpdGl2ZVZhbHVlc09ubHkmJjA+PUcmJihHPW51bGwpLEkudG90YWw9SS5zdGFja1RvdGFsPVEudG90YWwsCkkucGVyY2VudGFnZT1RLnRvdGFsJiZJLnkvUS50b3RhbCoxMDAsSS5zdGFja1k9Qix0aGlzLmlycmVndWxhcldpZHRoc3x8US5zZXRPZmZzZXQodGhpcy5wb2ludFhPZmZzZXR8fDAsdGhpcy5iYXJXfHwwKSk7SS55Qm90dG9tPW4oRyk/dihnLnRyYW5zbGF0ZShHLDAsMSwwLDEpLC0xRTUsMUU1KTpudWxsO3UmJihCPXRoaXMubW9kaWZ5VmFsdWUoQixJKSk7SS5wbG90WT0ibnVtYmVyIj09PXR5cGVvZiBCJiZJbmZpbml0eSE9PUI/dihnLnRyYW5zbGF0ZShCLDAsMSwwLDEpLC0xRTUsMUU1KTp2b2lkIDA7SS5pc0luc2lkZT10aGlzLmlzUG9pbnRJbnNpZGUoSSk7SS5jbGllbnRYPUE/SyhkLnRyYW5zbGF0ZShELDAsMCwwLDEscSkpOkY7SS5uZWdhdGl2ZT1JW01dPChhW00rIlRocmVzaG9sZCJdfHx0fHwwKTtJLmNhdGVnb3J5PWMmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGNbSS54XT9jW0kueF06SS54O2lmKCFJLmlzTnVsbCYmITEhPT1JLnZpc2libGUpeyJ1bmRlZmluZWQiIT09dHlwZW9mIEwmJgooeT1NYXRoLm1pbih5LE1hdGguYWJzKEYtTCkpKTt2YXIgTD1GfUkuem9uZT10aGlzLnpvbmVzLmxlbmd0aCYmSS5nZXRab25lKCk7IUkuZ3JhcGhpYyYmdGhpcy5ncm91cCYmayYmKEkuaXNOZXc9ITApfXRoaXMuY2xvc2VzdFBvaW50UmFuZ2VQeD15O20odGhpcywiYWZ0ZXJUcmFuc2xhdGUiKX0sZ2V0VmFsaWRQb2ludHM6ZnVuY3Rpb24oYSxiLGQpe3ZhciBlPXRoaXMuY2hhcnQ7cmV0dXJuKGF8fHRoaXMucG9pbnRzfHxbXSkuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBiJiYhZS5pc0luc2lkZVBsb3QoYS5wbG90WCxhLnBsb3RZLGUuaW52ZXJ0ZWQpPyExOiExIT09YS52aXNpYmxlJiYoZHx8IWEuaXNOdWxsKX0pfSxnZXRDbGlwQm94OmZ1bmN0aW9uKGEsYil7dmFyIGQ9dGhpcy5vcHRpb25zLGU9dGhpcy5jaGFydCxjPWUuaW52ZXJ0ZWQsZj10aGlzLnhBeGlzLGs9ZiYmdGhpcy55QXhpcyxsPWUub3B0aW9ucy5jaGFydC5zY3JvbGxhYmxlUGxvdEFyZWF8fHt9O2EmJiExPT09CmQuY2xpcCYmaz9hPWM/e3k6LWUuY2hhcnRXaWR0aCtrLmxlbitrLnBvcyxoZWlnaHQ6ZS5jaGFydFdpZHRoLHdpZHRoOmUuY2hhcnRIZWlnaHQseDotZS5jaGFydEhlaWdodCtmLmxlbitmLnBvc306e3k6LWsucG9zLGhlaWdodDplLmNoYXJ0SGVpZ2h0LHdpZHRoOmUuY2hhcnRXaWR0aCx4Oi1mLnBvc306KGE9dGhpcy5jbGlwQm94fHxlLmNsaXBCb3gsYiYmKGEud2lkdGg9ZS5wbG90U2l6ZVgsYS54PShlLnNjcm9sbGFibGVQaXhlbHNYfHwwKSoobC5zY3JvbGxQb3NpdGlvblh8fDApKSk7cmV0dXJuIGI/e3dpZHRoOmEud2lkdGgseDphLnh9OmF9LHNldENsaXA6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5jaGFydCxkPXRoaXMub3B0aW9ucyxlPWIucmVuZGVyZXIsYz1iLmludmVydGVkLGY9dGhpcy5jbGlwQm94LGs9dGhpcy5nZXRDbGlwQm94KGEpLGw9dGhpcy5zaGFyZWRDbGlwS2V5fHxbIl9zaGFyZWRDbGlwIixhJiZhLmR1cmF0aW9uLGEmJmEuZWFzaW5nLGsuaGVpZ2h0LGQueEF4aXMsCmQueUF4aXNdLmpvaW4oKSxtPWJbbF0sZz1iW2wrIm0iXTthJiYoay53aWR0aD0wLGMmJihrLng9Yi5wbG90SGVpZ2h0KyghMSE9PWQuY2xpcD8wOmIucGxvdFRvcCkpKTttP2IuaGFzTG9hZGVkfHxtLmF0dHIoayk6KGEmJihiW2wrIm0iXT1nPWUuY2xpcFJlY3QoYz9iLnBsb3RTaXplWCs5OTotOTksYz8tYi5wbG90TGVmdDotYi5wbG90VG9wLDk5LGM/Yi5jaGFydFdpZHRoOmIuY2hhcnRIZWlnaHQpKSxiW2xdPW09ZS5jbGlwUmVjdChrKSxtLmNvdW50PXtsZW5ndGg6MH0pO2EmJiFtLmNvdW50W3RoaXMuaW5kZXhdJiYobS5jb3VudFt0aGlzLmluZGV4XT0hMCxtLmNvdW50Lmxlbmd0aCs9MSk7aWYoITEhPT1kLmNsaXB8fGEpdGhpcy5ncm91cC5jbGlwKGF8fGY/bTpiLmNsaXBSZWN0KSx0aGlzLm1hcmtlckdyb3VwLmNsaXAoZyksdGhpcy5zaGFyZWRDbGlwS2V5PWw7YXx8KG0uY291bnRbdGhpcy5pbmRleF0mJihkZWxldGUgbS5jb3VudFt0aGlzLmluZGV4XSwtLW0uY291bnQubGVuZ3RoKSwKMD09PW0uY291bnQubGVuZ3RoJiZsJiZiW2xdJiYoZnx8KGJbbF09YltsXS5kZXN0cm95KCkpLGJbbCsibSJdJiYoYltsKyJtIl09YltsKyJtIl0uZGVzdHJveSgpKSkpfSxhbmltYXRlOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY2hhcnQsZD10KHRoaXMub3B0aW9ucy5hbmltYXRpb24pO2lmKCFiLmhhc1JlbmRlcmVkKWlmKGEpdGhpcy5zZXRDbGlwKGQpO2Vsc2V7dmFyIGU9dGhpcy5zaGFyZWRDbGlwS2V5O2E9YltlXTt2YXIgYz10aGlzLmdldENsaXBCb3goZCwhMCk7YSYmYS5hbmltYXRlKGMsZCk7YltlKyJtIl0mJmJbZSsibSJdLmFuaW1hdGUoe3dpZHRoOmMud2lkdGgrOTkseDpjLngtKGIuaW52ZXJ0ZWQ/MDo5OSl9LGQpfX0sYWZ0ZXJBbmltYXRlOmZ1bmN0aW9uKCl7dGhpcy5zZXRDbGlwKCk7bSh0aGlzLCJhZnRlckFuaW1hdGUiKTt0aGlzLmZpbmlzaGVkQW5pbWF0aW5nPSEwfSxkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5wb2ludHMsYj10aGlzLmNoYXJ0LApkLGMsZj10aGlzLm9wdGlvbnMubWFya2VyLGs9dGhpc1t0aGlzLnNwZWNpYWxHcm91cF18fHRoaXMubWFya2VyR3JvdXAsbD10aGlzLnhBeGlzLG09RShmLmVuYWJsZWQsIWx8fGwuaXNSYWRpYWw/ITA6bnVsbCx0aGlzLmNsb3Nlc3RQb2ludFJhbmdlUHg+PWYuZW5hYmxlZFRocmVzaG9sZCpmLnJhZGl1cyk7aWYoITEhPT1mLmVuYWJsZWR8fHRoaXMuX2hhc1BvaW50TWFya2Vycylmb3IoZD0wO2Q8YS5sZW5ndGg7ZCsrKXt2YXIgZz1hW2RdO3ZhciBwPShjPWcuZ3JhcGhpYyk/ImFuaW1hdGUiOiJhdHRyIjt2YXIgbj1nLm1hcmtlcnx8e307dmFyIHc9ISFnLm1hcmtlcjtpZigobSYmInVuZGVmaW5lZCI9PT10eXBlb2Ygbi5lbmFibGVkfHxuLmVuYWJsZWQpJiYhZy5pc051bGwmJiExIT09Zy52aXNpYmxlKXt2YXIgdT1FKG4uc3ltYm9sLHRoaXMuc3ltYm9sKTt2YXIgcj10aGlzLm1hcmtlckF0dHJpYnMoZyxnLnNlbGVjdGVkJiYic2VsZWN0Iik7dGhpcy5lbmFibGVkRGF0YVNvcnRpbmcmJgooZy5zdGFydFhQb3M9bC5yZXZlcnNlZD8tci53aWR0aDpsLndpZHRoKTt2YXIgcT0hMSE9PWcuaXNJbnNpZGU7Yz9jW3E/InNob3ciOiJoaWRlIl0ocSkuYW5pbWF0ZShyKTpxJiYoMDxyLndpZHRofHxnLmhhc0ltYWdlKSYmKGcuZ3JhcGhpYz1jPWIucmVuZGVyZXIuc3ltYm9sKHUsci54LHIueSxyLndpZHRoLHIuaGVpZ2h0LHc/bjpmKS5hZGQoayksdGhpcy5lbmFibGVkRGF0YVNvcnRpbmcmJmIuaGFzUmVuZGVyZWQmJihjLmF0dHIoe3g6Zy5zdGFydFhQb3N9KSxwPSJhbmltYXRlIikpO2MmJiJhbmltYXRlIj09PXAmJmNbcT8ic2hvdyI6ImhpZGUiXShxKS5hbmltYXRlKHIpO2lmKGMmJiFiLnN0eWxlZE1vZGUpY1twXSh0aGlzLnBvaW50QXR0cmlicyhnLGcuc2VsZWN0ZWQmJiJzZWxlY3QiKSk7YyYmYy5hZGRDbGFzcyhnLmdldENsYXNzTmFtZSgpLCEwKX1lbHNlIGMmJihnLmdyYXBoaWM9Yy5kZXN0cm95KCkpfX0sbWFya2VyQXR0cmliczpmdW5jdGlvbihhLGIpe3ZhciBkPXRoaXMub3B0aW9ucywKZT1kLm1hcmtlcixjPWEubWFya2VyfHx7fSxmPWMuc3ltYm9sfHxlLnN5bWJvbCxrPUUoYy5yYWRpdXMsZS5yYWRpdXMpO2ImJihlPWUuc3RhdGVzW2JdLGI9Yy5zdGF0ZXMmJmMuc3RhdGVzW2JdLGs9RShiJiZiLnJhZGl1cyxlJiZlLnJhZGl1cyxrKyhlJiZlLnJhZGl1c1BsdXN8fDApKSk7YS5oYXNJbWFnZT1mJiYwPT09Zi5pbmRleE9mKCJ1cmwiKTthLmhhc0ltYWdlJiYoaz0wKTthPXt4OmQuY3Jpc3A/TWF0aC5mbG9vcihhLnBsb3RYKS1rOmEucGxvdFgtayx5OmEucGxvdFkta307ayYmKGEud2lkdGg9YS5oZWlnaHQ9MiprKTtyZXR1cm4gYX0scG9pbnRBdHRyaWJzOmZ1bmN0aW9uKGEsYil7dmFyIGQ9dGhpcy5vcHRpb25zLm1hcmtlcixlPWEmJmEub3B0aW9ucyxjPWUmJmUubWFya2VyfHx7fSxmPXRoaXMuY29sb3Isaz1lJiZlLmNvbG9yLGw9YSYmYS5jb2xvcjtlPUUoYy5saW5lV2lkdGgsZC5saW5lV2lkdGgpO3ZhciBtPWEmJmEuem9uZSYmYS56b25lLmNvbG9yO2E9MTtmPQprfHxtfHxsfHxmO2s9Yy5maWxsQ29sb3J8fGQuZmlsbENvbG9yfHxmO2Y9Yy5saW5lQ29sb3J8fGQubGluZUNvbG9yfHxmO2I9Ynx8Im5vcm1hbCI7ZD1kLnN0YXRlc1tiXTtiPWMuc3RhdGVzJiZjLnN0YXRlc1tiXXx8e307ZT1FKGIubGluZVdpZHRoLGQubGluZVdpZHRoLGUrRShiLmxpbmVXaWR0aFBsdXMsZC5saW5lV2lkdGhQbHVzLDApKTtrPWIuZmlsbENvbG9yfHxkLmZpbGxDb2xvcnx8aztmPWIubGluZUNvbG9yfHxkLmxpbmVDb2xvcnx8ZjthPUUoYi5vcGFjaXR5LGQub3BhY2l0eSxhKTtyZXR1cm57c3Ryb2tlOmYsInN0cm9rZS13aWR0aCI6ZSxmaWxsOmssb3BhY2l0eTphfX0sZGVzdHJveTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLGQ9Yi5jaGFydCxlPS9BcHBsZVdlYktpdFwvNTMzLy50ZXN0KFEubmF2aWdhdG9yLnVzZXJBZ2VudCksYyxmLGs9Yi5kYXRhfHxbXSxsLGc7bShiLCJkZXN0cm95Iik7dGhpcy5yZW1vdmVFdmVudHMoYSk7KGIuYXhpc1R5cGVzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihhKXsoZz0KYlthXSkmJmcuc2VyaWVzJiYocihnLnNlcmllcyxiKSxnLmlzRGlydHk9Zy5mb3JjZVJlZHJhdz0hMCl9KTtiLmxlZ2VuZEl0ZW0mJmIuY2hhcnQubGVnZW5kLmRlc3Ryb3lJdGVtKGIpO2ZvcihmPWsubGVuZ3RoO2YtLTspKGw9a1tmXSkmJmwuZGVzdHJveSYmbC5kZXN0cm95KCk7Yi5wb2ludHM9bnVsbDtILmNsZWFyVGltZW91dChiLmFuaW1hdGlvblRpbWVvdXQpO3UoYixmdW5jdGlvbihiLGEpe2IgaW5zdGFuY2VvZiBCJiYhYi5zdXJ2aXZlJiYoYz1lJiYiZ3JvdXAiPT09YT8iaGlkZSI6ImRlc3Ryb3kiLGJbY10oKSl9KTtkLmhvdmVyU2VyaWVzPT09YiYmKGQuaG92ZXJTZXJpZXM9bnVsbCk7cihkLnNlcmllcyxiKTtkLm9yZGVyU2VyaWVzKCk7dShiLGZ1bmN0aW9uKGQsZSl7YSYmImhjRXZlbnRzIj09PWV8fGRlbGV0ZSBiW2VdfSl9LGdldEdyYXBoUGF0aDpmdW5jdGlvbihhLGIsZCl7dmFyIGU9dGhpcyxjPWUub3B0aW9ucyxmPWMuc3RlcCxoLGs9W10sbD1bXSxtO2E9YXx8CmUucG9pbnRzOyhoPWEucmV2ZXJzZWQpJiZhLnJldmVyc2UoKTsoZj17cmlnaHQ6MSxjZW50ZXI6Mn1bZl18fGYmJjMpJiZoJiYoZj00LWYpO2E9dGhpcy5nZXRWYWxpZFBvaW50cyhhLCExLCEoYy5jb25uZWN0TnVsbHMmJiFiJiYhZCkpO2EuZm9yRWFjaChmdW5jdGlvbihoLGcpe3ZhciBwPWgucGxvdFgscj1oLnBsb3RZLHc9YVtnLTFdOyhoLmxlZnRDbGlmZnx8dyYmdy5yaWdodENsaWZmKSYmIWQmJihtPSEwKTtoLmlzTnVsbCYmIW4oYikmJjA8Zz9tPSFjLmNvbm5lY3ROdWxsczpoLmlzTnVsbCYmIWI/bT0hMDooMD09PWd8fG0/Zz1bWyJNIixoLnBsb3RYLGgucGxvdFldXTplLmdldFBvaW50U3BsaW5lP2c9W2UuZ2V0UG9pbnRTcGxpbmUoYSxoLGcpXTpmPyhnPTE9PT1mP1tbIkwiLHcucGxvdFgscl1dOjI9PT1mP1tbIkwiLCh3LnBsb3RYK3ApLzIsdy5wbG90WV0sWyJMIiwody5wbG90WCtwKS8yLHJdXTpbWyJMIixwLHcucGxvdFldXSxnLnB1c2goWyJMIixwLHJdKSk6Zz1bWyJMIiwKcCxyXV0sbC5wdXNoKGgueCksZiYmKGwucHVzaChoLngpLDI9PT1mJiZsLnB1c2goaC54KSksay5wdXNoLmFwcGx5KGssZyksbT0hMSl9KTtrLnhNYXA9bDtyZXR1cm4gZS5ncmFwaFBhdGg9a30sZHJhd0dyYXBoOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPXRoaXMub3B0aW9ucyxkPSh0aGlzLmdhcHBlZFBhdGh8fHRoaXMuZ2V0R3JhcGhQYXRoKS5jYWxsKHRoaXMpLGM9dGhpcy5jaGFydC5zdHlsZWRNb2RlLGY9W1siZ3JhcGgiLCJoaWdoY2hhcnRzLWdyYXBoIl1dO2N8fGZbMF0ucHVzaChiLmxpbmVDb2xvcnx8dGhpcy5jb2xvcnx8IiNjY2NjY2MiLGIuZGFzaFN0eWxlKTtmPWEuZ2V0Wm9uZXNHcmFwaHMoZik7Zi5mb3JFYWNoKGZ1bmN0aW9uKGUsZil7dmFyIGg9ZVswXSxrPWFbaF0sbD1rPyJhbmltYXRlIjoiYXR0ciI7az8oay5lbmRYPWEucHJldmVudEdyYXBoQW5pbWF0aW9uP251bGw6ZC54TWFwLGsuYW5pbWF0ZSh7ZDpkfSkpOmQubGVuZ3RoJiYoYVtoXT1rPWEuY2hhcnQucmVuZGVyZXIucGF0aChkKS5hZGRDbGFzcyhlWzFdKS5hdHRyKHt6SW5kZXg6MX0pLmFkZChhLmdyb3VwKSk7CmsmJiFjJiYoaD17c3Ryb2tlOmVbMl0sInN0cm9rZS13aWR0aCI6Yi5saW5lV2lkdGgsZmlsbDphLmZpbGxHcmFwaCYmYS5jb2xvcnx8Im5vbmUifSxlWzNdP2guZGFzaHN0eWxlPWVbM106InNxdWFyZSIhPT1iLmxpbmVjYXAmJihoWyJzdHJva2UtbGluZWNhcCJdPWhbInN0cm9rZS1saW5lam9pbiJdPSJyb3VuZCIpLGtbbF0oaCkuc2hhZG93KDI+ZiYmYi5zaGFkb3cpKTtrJiYoay5zdGFydFg9ZC54TWFwLGsuaXNBcmVhPWQuaXNBcmVhKX0pfSxnZXRab25lc0dyYXBoczpmdW5jdGlvbihhKXt0aGlzLnpvbmVzLmZvckVhY2goZnVuY3Rpb24oYixkKXtkPVsiem9uZS1ncmFwaC0iK2QsImhpZ2hjaGFydHMtZ3JhcGggaGlnaGNoYXJ0cy16b25lLWdyYXBoLSIrZCsiICIrKGIuY2xhc3NOYW1lfHwiIildO3RoaXMuY2hhcnQuc3R5bGVkTW9kZXx8ZC5wdXNoKGIuY29sb3J8fHRoaXMuY29sb3IsYi5kYXNoU3R5bGV8fHRoaXMub3B0aW9ucy5kYXNoU3R5bGUpO2EucHVzaChkKX0sdGhpcyk7CnJldHVybiBhfSxhcHBseVpvbmVzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPXRoaXMuY2hhcnQsZD1iLnJlbmRlcmVyLGM9dGhpcy56b25lcyxmLGssbD10aGlzLmNsaXBzfHxbXSxtLGc9dGhpcy5ncmFwaCxwPXRoaXMuYXJlYSxuPU1hdGgubWF4KGIuY2hhcnRXaWR0aCxiLmNoYXJ0SGVpZ2h0KSxyPXRoaXNbKHRoaXMuem9uZUF4aXN8fCJ5IikrIkF4aXMiXSx3PWIuaW52ZXJ0ZWQsdSxxLEEsdD0hMSxDLEY7aWYoYy5sZW5ndGgmJihnfHxwKSYmciYmInVuZGVmaW5lZCIhPT10eXBlb2Ygci5taW4pe3ZhciBNPXIucmV2ZXJzZWQ7dmFyIEk9ci5ob3JpejtnJiYhdGhpcy5zaG93TGluZSYmZy5oaWRlKCk7cCYmcC5oaWRlKCk7dmFyIHk9ci5nZXRFeHRyZW1lcygpO2MuZm9yRWFjaChmdW5jdGlvbihlLGMpe2Y9TT9JP2IucGxvdFdpZHRoOjA6ST8wOnIudG9QaXhlbHMoeS5taW4pfHwwO2Y9dihFKGssZiksMCxuKTtrPXYoTWF0aC5yb3VuZChyLnRvUGl4ZWxzKEUoZS52YWx1ZSx5Lm1heCksCiEwKXx8MCksMCxuKTt0JiYoZj1rPXIudG9QaXhlbHMoeS5tYXgpKTt1PU1hdGguYWJzKGYtayk7cT1NYXRoLm1pbihmLGspO0E9TWF0aC5tYXgoZixrKTtyLmlzWEF4aXM/KG09e3g6dz9BOnEseTowLHdpZHRoOnUsaGVpZ2h0Om59LEl8fChtLng9Yi5wbG90SGVpZ2h0LW0ueCkpOihtPXt4OjAseTp3P0E6cSx3aWR0aDpuLGhlaWdodDp1fSxJJiYobS55PWIucGxvdFdpZHRoLW0ueSkpO3cmJmQuaXNWTUwmJihtPXIuaXNYQXhpcz97eDowLHk6TT9xOkEsaGVpZ2h0Om0ud2lkdGgsd2lkdGg6Yi5jaGFydFdpZHRofTp7eDptLnktYi5wbG90TGVmdC1iLnNwYWNpbmdCb3gueCx5OjAsd2lkdGg6bS5oZWlnaHQsaGVpZ2h0OmIuY2hhcnRIZWlnaHR9KTtsW2NdP2xbY10uYW5pbWF0ZShtKTpsW2NdPWQuY2xpcFJlY3QobSk7Qz1hWyJ6b25lLWFyZWEtIitjXTtGPWFbInpvbmUtZ3JhcGgtIitjXTtnJiZGJiZGLmNsaXAobFtjXSk7cCYmQyYmQy5jbGlwKGxbY10pO3Q9ZS52YWx1ZT55Lm1heDsKYS5yZXNldFpvbmVzJiYwPT09ayYmKGs9dm9pZCAwKX0pO3RoaXMuY2xpcHM9bH1lbHNlIGEudmlzaWJsZSYmKGcmJmcuc2hvdyghMCkscCYmcC5zaG93KCEwKSl9LGludmVydEdyb3VwczpmdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7WyJncm91cCIsIm1hcmtlckdyb3VwIl0uZm9yRWFjaChmdW5jdGlvbihiKXtkW2JdJiYoZS5yZW5kZXJlci5pc1ZNTCYmZFtiXS5hdHRyKHt3aWR0aDpkLnlBeGlzLmxlbixoZWlnaHQ6ZC54QXhpcy5sZW59KSxkW2JdLndpZHRoPWQueUF4aXMubGVuLGRbYl0uaGVpZ2h0PWQueEF4aXMubGVuLGRbYl0uaW52ZXJ0KGQuaXNSYWRpYWxTZXJpZXM/ITE6YSkpfSl9dmFyIGQ9dGhpcyxlPWQuY2hhcnQ7ZC54QXhpcyYmKGQuZXZlbnRzVG9VbmJpbmQucHVzaChKKGUsInJlc2l6ZSIsYikpLGIoKSxkLmludmVydEdyb3Vwcz1iKX0scGxvdEdyb3VwOmZ1bmN0aW9uKGEsYixkLGMsZil7dmFyIGU9dGhpc1thXSxoPSFlO2Q9e3Zpc2liaWxpdHk6ZCx6SW5kZXg6Y3x8Ci4xfTsidW5kZWZpbmVkIj09PXR5cGVvZiB0aGlzLm9wYWNpdHl8fHRoaXMuY2hhcnQuc3R5bGVkTW9kZXx8KGQub3BhY2l0eT10aGlzLm9wYWNpdHkpO2gmJih0aGlzW2FdPWU9dGhpcy5jaGFydC5yZW5kZXJlci5nKCkuYWRkKGYpKTtlLmFkZENsYXNzKCJoaWdoY2hhcnRzLSIrYisiIGhpZ2hjaGFydHMtc2VyaWVzLSIrdGhpcy5pbmRleCsiIGhpZ2hjaGFydHMtIit0aGlzLnR5cGUrIi1zZXJpZXMgIisobih0aGlzLmNvbG9ySW5kZXgpPyJoaWdoY2hhcnRzLWNvbG9yLSIrdGhpcy5jb2xvckluZGV4KyIgIjoiIikrKHRoaXMub3B0aW9ucy5jbGFzc05hbWV8fCIiKSsoZS5oYXNDbGFzcygiaGlnaGNoYXJ0cy10cmFja2VyIik/IiBoaWdoY2hhcnRzLXRyYWNrZXIiOiIiKSwhMCk7ZS5hdHRyKGQpW2g/ImF0dHIiOiJhbmltYXRlIl0odGhpcy5nZXRQbG90Qm94KCkpO3JldHVybiBlfSxnZXRQbG90Qm94OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jaGFydCxiPXRoaXMueEF4aXMsZD10aGlzLnlBeGlzOwphLmludmVydGVkJiYoYj1kLGQ9dGhpcy54QXhpcyk7cmV0dXJue3RyYW5zbGF0ZVg6Yj9iLmxlZnQ6YS5wbG90TGVmdCx0cmFuc2xhdGVZOmQ/ZC50b3A6YS5wbG90VG9wLHNjYWxlWDoxLHNjYWxlWToxfX0scmVtb3ZlRXZlbnRzOmZ1bmN0aW9uKGEpe2E/dGhpcy5ldmVudHNUb1VuYmluZC5sZW5ndGgmJih0aGlzLmV2ZW50c1RvVW5iaW5kLmZvckVhY2goZnVuY3Rpb24oYil7YigpfSksdGhpcy5ldmVudHNUb1VuYmluZC5sZW5ndGg9MCk6UCh0aGlzKX0scmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPWEuY2hhcnQsZD1hLm9wdGlvbnMsYz0hYS5maW5pc2hlZEFuaW1hdGluZyYmYi5yZW5kZXJlci5pc1NWRyYmdChkLmFuaW1hdGlvbikuZHVyYXRpb24sZj1hLnZpc2libGU/ImluaGVyaXQiOiJoaWRkZW4iLGs9ZC56SW5kZXgsbD1hLmhhc1JlbmRlcmVkLGc9Yi5zZXJpZXNHcm91cCxwPWIuaW52ZXJ0ZWQ7bSh0aGlzLCJyZW5kZXIiKTt2YXIgbj1hLnBsb3RHcm91cCgiZ3JvdXAiLAoic2VyaWVzIixmLGssZyk7YS5tYXJrZXJHcm91cD1hLnBsb3RHcm91cCgibWFya2VyR3JvdXAiLCJtYXJrZXJzIixmLGssZyk7YyYmYS5hbmltYXRlJiZhLmFuaW1hdGUoITApO24uaW52ZXJ0ZWQ9YS5pc0NhcnRlc2lhbnx8YS5pbnZlcnRhYmxlP3A6ITE7YS5kcmF3R3JhcGgmJihhLmRyYXdHcmFwaCgpLGEuYXBwbHlab25lcygpKTthLnZpc2libGUmJmEuZHJhd1BvaW50cygpO2EuZHJhd0RhdGFMYWJlbHMmJmEuZHJhd0RhdGFMYWJlbHMoKTthLnJlZHJhd1BvaW50cyYmYS5yZWRyYXdQb2ludHMoKTthLmRyYXdUcmFja2VyJiYhMSE9PWEub3B0aW9ucy5lbmFibGVNb3VzZVRyYWNraW5nJiZhLmRyYXdUcmFja2VyKCk7YS5pbnZlcnRHcm91cHMocCk7ITE9PT1kLmNsaXB8fGEuc2hhcmVkQ2xpcEtleXx8bHx8bi5jbGlwKGIuY2xpcFJlY3QpO2MmJmEuYW5pbWF0ZSYmYS5hbmltYXRlKCk7bHx8KGEuYW5pbWF0aW9uVGltZW91dD1NKGZ1bmN0aW9uKCl7YS5hZnRlckFuaW1hdGUoKX0sCmN8fDApKTthLmlzRGlydHk9ITE7YS5oYXNSZW5kZXJlZD0hMDttKGEsImFmdGVyUmVuZGVyIil9LHJlZHJhdzpmdW5jdGlvbigpe3ZhciBhPXRoaXMuY2hhcnQsYj10aGlzLmlzRGlydHl8fHRoaXMuaXNEaXJ0eURhdGEsZD10aGlzLmdyb3VwLGM9dGhpcy54QXhpcyxmPXRoaXMueUF4aXM7ZCYmKGEuaW52ZXJ0ZWQmJmQuYXR0cih7d2lkdGg6YS5wbG90V2lkdGgsaGVpZ2h0OmEucGxvdEhlaWdodH0pLGQuYW5pbWF0ZSh7dHJhbnNsYXRlWDpFKGMmJmMubGVmdCxhLnBsb3RMZWZ0KSx0cmFuc2xhdGVZOkUoZiYmZi50b3AsYS5wbG90VG9wKX0pKTt0aGlzLnRyYW5zbGF0ZSgpO3RoaXMucmVuZGVyKCk7YiYmZGVsZXRlIHRoaXMua2RUcmVlfSxrZEF4aXNBcnJheTpbImNsaWVudFgiLCJwbG90WSJdLHNlYXJjaFBvaW50OmZ1bmN0aW9uKGEsYil7dmFyIGQ9dGhpcy54QXhpcyxlPXRoaXMueUF4aXMsYz10aGlzLmNoYXJ0LmludmVydGVkO3JldHVybiB0aGlzLnNlYXJjaEtEVHJlZSh7Y2xpZW50WDpjPwpkLmxlbi1hLmNoYXJ0WStkLnBvczphLmNoYXJ0WC1kLnBvcyxwbG90WTpjP2UubGVuLWEuY2hhcnRYK2UucG9zOmEuY2hhcnRZLWUucG9zfSxiLGEpfSxidWlsZEtEVHJlZTpmdW5jdGlvbihhKXtmdW5jdGlvbiBiKGEsZSxjKXt2YXIgZjtpZihmPWEmJmEubGVuZ3RoKXt2YXIgaD1kLmtkQXhpc0FycmF5W2UlY107YS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGFbaF0tYltoXX0pO2Y9TWF0aC5mbG9vcihmLzIpO3JldHVybntwb2ludDphW2ZdLGxlZnQ6YihhLnNsaWNlKDAsZiksZSsxLGMpLHJpZ2h0OmIoYS5zbGljZShmKzEpLGUrMSxjKX19fXRoaXMuYnVpbGRpbmdLZFRyZWU9ITA7dmFyIGQ9dGhpcyxlPS0xPGQub3B0aW9ucy5maW5kTmVhcmVzdFBvaW50QnkuaW5kZXhPZigieSIpPzI6MTtkZWxldGUgZC5rZFRyZWU7TShmdW5jdGlvbigpe2Qua2RUcmVlPWIoZC5nZXRWYWxpZFBvaW50cyhudWxsLCFkLmRpcmVjdFRvdWNoKSxlLGUpO2QuYnVpbGRpbmdLZFRyZWU9ITF9LGQub3B0aW9ucy5rZE5vd3x8CmEmJiJ0b3VjaHN0YXJ0Ij09PWEudHlwZT8wOjEpfSxzZWFyY2hLRFRyZWU6ZnVuY3Rpb24oYSxiLGQpe2Z1bmN0aW9uIGUoYSxiLGQsbCl7dmFyIG09Yi5wb2ludCxnPWMua2RBeGlzQXJyYXlbZCVsXSxwPW07dmFyIHI9bihhW2ZdKSYmbihtW2ZdKT9NYXRoLnBvdyhhW2ZdLW1bZl0sMik6bnVsbDt2YXIgdz1uKGFbaF0pJiZuKG1baF0pP01hdGgucG93KGFbaF0tbVtoXSwyKTpudWxsO3c9KHJ8fDApKyh3fHwwKTttLmRpc3Q9bih3KT9NYXRoLnNxcnQodyk6TnVtYmVyLk1BWF9WQUxVRTttLmRpc3RYPW4ocik/TWF0aC5zcXJ0KHIpOk51bWJlci5NQVhfVkFMVUU7Zz1hW2ddLW1bZ107dz0wPmc/ImxlZnQiOiJyaWdodCI7cj0wPmc/InJpZ2h0IjoibGVmdCI7Ylt3XSYmKHc9ZShhLGJbd10sZCsxLGwpLHA9d1trXTxwW2tdP3c6bSk7YltyXSYmTWF0aC5zcXJ0KGcqZyk8cFtrXSYmKGE9ZShhLGJbcl0sZCsxLGwpLHA9YVtrXTxwW2tdP2E6cCk7cmV0dXJuIHB9dmFyIGM9dGhpcyxmPQp0aGlzLmtkQXhpc0FycmF5WzBdLGg9dGhpcy5rZEF4aXNBcnJheVsxXSxrPWI/ImRpc3RYIjoiZGlzdCI7Yj0tMTxjLm9wdGlvbnMuZmluZE5lYXJlc3RQb2ludEJ5LmluZGV4T2YoInkiKT8yOjE7dGhpcy5rZFRyZWV8fHRoaXMuYnVpbGRpbmdLZFRyZWV8fHRoaXMuYnVpbGRLRFRyZWUoZCk7aWYodGhpcy5rZFRyZWUpcmV0dXJuIGUoYSx0aGlzLmtkVHJlZSxiLGIpfSxwb2ludFBsYWNlbWVudFRvWFZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25zLGI9YS5wb2ludFJhbmdlLGQ9dGhpcy54QXhpczthPWEucG9pbnRQbGFjZW1lbnQ7ImJldHdlZW4iPT09YSYmKGE9ZC5yZXZlcnNlZD8tLjU6LjUpO3JldHVybiBmKGEpP2EqRShiLGQucG9pbnRSYW5nZSk6MH0saXNQb2ludEluc2lkZTpmdW5jdGlvbihhKXtyZXR1cm4idW5kZWZpbmVkIiE9PXR5cGVvZiBhLnBsb3RZJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBhLnBsb3RYJiYwPD1hLnBsb3RZJiZhLnBsb3RZPD10aGlzLnlBeGlzLmxlbiYmCjA8PWEucGxvdFgmJmEucGxvdFg8PXRoaXMueEF4aXMubGVufX0pOyIifSk7TyhxLCJwYXJ0cy9TdGFja2luZy5qcyIsW3FbInBhcnRzL0F4aXMuanMiXSxxWyJwYXJ0cy9DaGFydC5qcyJdLHFbInBhcnRzL0dsb2JhbHMuanMiXSxxWyJwYXJ0cy9TdGFja2luZ0F4aXMuanMiXSxxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyxjLHEseSxCKXt2YXIgSD1CLmNvcnJlY3RGbG9hdCxEPUIuZGVmaW5lZCxKPUIuZGVzdHJveU9iamVjdFByb3BlcnRpZXMsdD1CLmZvcm1hdCxHPUIuaXNOdW1iZXIsTD1CLnBpY2s7IiI7dmFyIHY9cS5TZXJpZXMsSz1mdW5jdGlvbigpe2Z1bmN0aW9uIGMoYyxnLG4scCxtKXt2YXIgZD1jLmNoYXJ0LmludmVydGVkO3RoaXMuYXhpcz1jO3RoaXMuaXNOZWdhdGl2ZT1uO3RoaXMub3B0aW9ucz1nPWd8fHt9O3RoaXMueD1wO3RoaXMudG90YWw9bnVsbDt0aGlzLnBvaW50cz17fTt0aGlzLmhhc1ZhbGlkUG9pbnRzPSExO3RoaXMuc3RhY2s9bTt0aGlzLnJpZ2h0Q2xpZmY9CnRoaXMubGVmdENsaWZmPTA7dGhpcy5hbGlnbk9wdGlvbnM9e2FsaWduOmcuYWxpZ258fChkP24/ImxlZnQiOiJyaWdodCI6ImNlbnRlciIpLHZlcnRpY2FsQWxpZ246Zy52ZXJ0aWNhbEFsaWdufHwoZD8ibWlkZGxlIjpuPyJib3R0b20iOiJ0b3AiKSx5OmcueSx4OmcueH07dGhpcy50ZXh0QWxpZ249Zy50ZXh0QWxpZ258fChkP24/InJpZ2h0IjoibGVmdCI6ImNlbnRlciIpfWMucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtKKHRoaXMsdGhpcy5heGlzKX07Yy5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGMpe3ZhciBnPXRoaXMuYXhpcy5jaGFydCxuPXRoaXMub3B0aW9ucyxwPW4uZm9ybWF0O3A9cD90KHAsdGhpcyxnKTpuLmZvcm1hdHRlci5jYWxsKHRoaXMpO3RoaXMubGFiZWw/dGhpcy5sYWJlbC5hdHRyKHt0ZXh0OnAsdmlzaWJpbGl0eToiaGlkZGVuIn0pOih0aGlzLmxhYmVsPWcucmVuZGVyZXIubGFiZWwocCxudWxsLG51bGwsbi5zaGFwZSxudWxsLG51bGwsbi51c2VIVE1MLAohMSwic3RhY2stbGFiZWxzIikscD17cjpuLmJvcmRlclJhZGl1c3x8MCx0ZXh0OnAscm90YXRpb246bi5yb3RhdGlvbixwYWRkaW5nOkwobi5wYWRkaW5nLDUpLHZpc2liaWxpdHk6ImhpZGRlbiJ9LGcuc3R5bGVkTW9kZXx8KHAuZmlsbD1uLmJhY2tncm91bmRDb2xvcixwLnN0cm9rZT1uLmJvcmRlckNvbG9yLHBbInN0cm9rZS13aWR0aCJdPW4uYm9yZGVyV2lkdGgsdGhpcy5sYWJlbC5jc3Mobi5zdHlsZSkpLHRoaXMubGFiZWwuYXR0cihwKSx0aGlzLmxhYmVsLmFkZGVkfHx0aGlzLmxhYmVsLmFkZChjKSk7dGhpcy5sYWJlbC5sYWJlbHJhbms9Zy5wbG90SGVpZ2h0fTtjLnByb3RvdHlwZS5zZXRPZmZzZXQ9ZnVuY3Rpb24oYyxnLG4scCxtKXt2YXIgZD10aGlzLmF4aXMsbD1kLmNoYXJ0O3A9ZC50cmFuc2xhdGUoZC5zdGFja2luZy51c2VQZXJjZW50YWdlPzEwMDpwP3A6dGhpcy50b3RhbCwwLDAsMCwxKTtuPWQudHJhbnNsYXRlKG4/bjowKTtuPUQocCkmJk1hdGguYWJzKHAtbik7CmM9TChtLGwueEF4aXNbMF0udHJhbnNsYXRlKHRoaXMueCkpK2M7ZD1EKHApJiZ0aGlzLmdldFN0YWNrQm94KGwsdGhpcyxjLHAsZyxuLGQpO2c9dGhpcy5sYWJlbDtuPXRoaXMuaXNOZWdhdGl2ZTtjPSJqdXN0aWZ5Ij09PUwodGhpcy5vcHRpb25zLm92ZXJmbG93LCJqdXN0aWZ5Iik7dmFyIGs9dGhpcy50ZXh0QWxpZ247ZyYmZCYmKG09Zy5nZXRCQm94KCkscD1nLnBhZGRpbmcsaz0ibGVmdCI9PT1rP2wuaW52ZXJ0ZWQ/LXA6cDoicmlnaHQiPT09az9tLndpZHRoOmwuaW52ZXJ0ZWQmJiJjZW50ZXIiPT09az9tLndpZHRoLzI6bC5pbnZlcnRlZD9uP20ud2lkdGgrcDotcDptLndpZHRoLzIsbj1sLmludmVydGVkP20uaGVpZ2h0LzI6bj8tcDptLmhlaWdodCx0aGlzLmFsaWduT3B0aW9ucy54PUwodGhpcy5vcHRpb25zLngsMCksdGhpcy5hbGlnbk9wdGlvbnMueT1MKHRoaXMub3B0aW9ucy55LDApLGQueC09ayxkLnktPW4sZy5hbGlnbih0aGlzLmFsaWduT3B0aW9ucyxudWxsLGQpLApsLmlzSW5zaWRlUGxvdChnLmFsaWduQXR0ci54K2stdGhpcy5hbGlnbk9wdGlvbnMueCxnLmFsaWduQXR0ci55K24tdGhpcy5hbGlnbk9wdGlvbnMueSk/Zy5zaG93KCk6KGcuYWxpZ25BdHRyLnk9LTk5OTksYz0hMSksYyYmdi5wcm90b3R5cGUuanVzdGlmeURhdGFMYWJlbC5jYWxsKHRoaXMuYXhpcyxnLHRoaXMuYWxpZ25PcHRpb25zLGcuYWxpZ25BdHRyLG0sZCksZy5hdHRyKHt4OmcuYWxpZ25BdHRyLngseTpnLmFsaWduQXR0ci55fSksTCghYyYmdGhpcy5vcHRpb25zLmNyb3AsITApJiYoKGw9RyhnLngpJiZHKGcueSkmJmwuaXNJbnNpZGVQbG90KGcueC1wK2cud2lkdGgsZy55KSYmbC5pc0luc2lkZVBsb3QoZy54K3AsZy55KSl8fGcuaGlkZSgpKSl9O2MucHJvdG90eXBlLmdldFN0YWNrQm94PWZ1bmN0aW9uKGMsZyxuLHAsbSxkLGwpe3ZhciBrPWcuYXhpcy5yZXZlcnNlZCxmPWMuaW52ZXJ0ZWQsYT1sLmhlaWdodCtsLnBvcy0oZj9jLnBsb3RMZWZ0OmMucGxvdFRvcCk7Zz0KZy5pc05lZ2F0aXZlJiYha3x8IWcuaXNOZWdhdGl2ZSYmaztyZXR1cm57eDpmP2c/cC1sLnJpZ2h0OnAtZCtsLnBvcy1jLnBsb3RMZWZ0Om4rYy54QXhpc1swXS50cmFuc0ItYy5wbG90TGVmdCx5OmY/bC5oZWlnaHQtbi1tOmc/YS1wLWQ6YS1wLHdpZHRoOmY/ZDptLGhlaWdodDpmP206ZH19O3JldHVybiBjfSgpO2MucHJvdG90eXBlLmdldFN0YWNrcz1mdW5jdGlvbigpe3ZhciBjPXRoaXMsZz1jLmludmVydGVkO2MueUF4aXMuZm9yRWFjaChmdW5jdGlvbihjKXtjLnN0YWNraW5nJiZjLnN0YWNraW5nLnN0YWNrcyYmYy5oYXNWaXNpYmxlU2VyaWVzJiYoYy5zdGFja2luZy5vbGRTdGFja3M9Yy5zdGFja2luZy5zdGFja3MpfSk7Yy5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgcj1uLnhBeGlzJiZuLnhBeGlzLm9wdGlvbnN8fHt9OyFuLm9wdGlvbnMuc3RhY2tpbmd8fCEwIT09bi52aXNpYmxlJiYhMSE9PWMub3B0aW9ucy5jaGFydC5pZ25vcmVIaWRkZW5TZXJpZXN8fChuLnN0YWNrS2V5PQpbbi50eXBlLEwobi5vcHRpb25zLnN0YWNrLCIiKSxnP3IudG9wOnIubGVmdCxnP3IuaGVpZ2h0OnIud2lkdGhdLmpvaW4oKSl9KX07eS5jb21wb3NlKGcpO3YucHJvdG90eXBlLnNldEdyb3VwZWRQb2ludHM9ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuY2VudGVySW5DYXRlZ29yeSYmKHRoaXMuaXMoImNvbHVtbiIpfHx0aGlzLmlzKCJjb2x1bW5yYW5nZSIpKSYmIXRoaXMub3B0aW9ucy5zdGFja2luZyYmMTx0aGlzLmNoYXJ0LnNlcmllcy5sZW5ndGgmJnYucHJvdG90eXBlLnNldFN0YWNrZWRQb2ludHMuY2FsbCh0aGlzLCJncm91cCIpfTt2LnByb3RvdHlwZS5zZXRTdGFja2VkUG9pbnRzPWZ1bmN0aW9uKGMpe3ZhciBnPWN8fHRoaXMub3B0aW9ucy5zdGFja2luZztpZihnJiYoITA9PT10aGlzLnZpc2libGV8fCExPT09dGhpcy5jaGFydC5vcHRpb25zLmNoYXJ0Lmlnbm9yZUhpZGRlblNlcmllcykpe3ZhciBuPXRoaXMucHJvY2Vzc2VkWERhdGEscT10aGlzLnByb2Nlc3NlZFlEYXRhLApwPVtdLG09cS5sZW5ndGgsZD10aGlzLm9wdGlvbnMsbD1kLnRocmVzaG9sZCxrPUwoZC5zdGFydEZyb21UaHJlc2hvbGQmJmwsMCk7ZD1kLnN0YWNrO2M9Yz90aGlzLnR5cGUrIiwiK2c6dGhpcy5zdGFja0tleTt2YXIgZj0iLSIrYyxhPXRoaXMubmVnU3RhY2tzLEE9dGhpcy55QXhpcyx1PUEuc3RhY2tpbmcuc3RhY2tzLHQ9QS5zdGFja2luZy5vbGRTdGFja3Msdix3O0Euc3RhY2tpbmcuc3RhY2tzVG91Y2hlZCs9MTtmb3Iodz0wO3c8bTt3Kyspe3ZhciBNPW5bd107dmFyIEY9cVt3XTt2YXIgeT10aGlzLmdldFN0YWNrSW5kaWNhdG9yKHksTSx0aGlzLmluZGV4KTt2YXIgZT15LmtleTt2YXIgYj0odj1hJiZGPChrPzA6bCkpP2Y6Yzt1W2JdfHwodVtiXT17fSk7dVtiXVtNXXx8KHRbYl0mJnRbYl1bTV0/KHVbYl1bTV09dFtiXVtNXSx1W2JdW01dLnRvdGFsPW51bGwpOnVbYl1bTV09bmV3IEsoQSxBLm9wdGlvbnMuc3RhY2tMYWJlbHMsdixNLGQpKTtiPXVbYl1bTV07bnVsbCE9PUY/CihiLnBvaW50c1tlXT1iLnBvaW50c1t0aGlzLmluZGV4XT1bTChiLmN1bXVsYXRpdmUsayldLEQoYi5jdW11bGF0aXZlKXx8KGIuYmFzZT1lKSxiLnRvdWNoZWQ9QS5zdGFja2luZy5zdGFja3NUb3VjaGVkLDA8eS5pbmRleCYmITE9PT10aGlzLnNpbmdsZVN0YWNrcyYmKGIucG9pbnRzW2VdWzBdPWIucG9pbnRzW3RoaXMuaW5kZXgrIiwiK00rIiwwIl1bMF0pKTpiLnBvaW50c1tlXT1iLnBvaW50c1t0aGlzLmluZGV4XT1udWxsOyJwZXJjZW50Ij09PWc/KHY9dj9jOmYsYSYmdVt2XSYmdVt2XVtNXT8odj11W3ZdW01dLGIudG90YWw9di50b3RhbD1NYXRoLm1heCh2LnRvdGFsLGIudG90YWwpK01hdGguYWJzKEYpfHwwKTpiLnRvdGFsPUgoYi50b3RhbCsoTWF0aC5hYnMoRil8fDApKSk6Imdyb3VwIj09PWc/bnVsbCE9PUYmJihiLnRvdGFsPShiLnRvdGFsfHwwKSsxKTpiLnRvdGFsPUgoYi50b3RhbCsoRnx8MCkpO2IuY3VtdWxhdGl2ZT0iZ3JvdXAiPT09Zz8oYi50b3RhbHx8MSktMToKTChiLmN1bXVsYXRpdmUsaykrKEZ8fDApO251bGwhPT1GJiYoYi5wb2ludHNbZV0ucHVzaChiLmN1bXVsYXRpdmUpLHBbd109Yi5jdW11bGF0aXZlLGIuaGFzVmFsaWRQb2ludHM9ITApfSJwZXJjZW50Ij09PWcmJihBLnN0YWNraW5nLnVzZVBlcmNlbnRhZ2U9ITApOyJncm91cCIhPT1nJiYodGhpcy5zdGFja2VkWURhdGE9cCk7QS5zdGFja2luZy5vbGRTdGFja3M9e319fTt2LnByb3RvdHlwZS5tb2RpZnlTdGFja3M9ZnVuY3Rpb24oKXt2YXIgYz10aGlzLGc9Yy5zdGFja0tleSxxPWMueUF4aXMuc3RhY2tpbmcuc3RhY2tzLHQ9Yy5wcm9jZXNzZWRYRGF0YSxwLG09Yy5vcHRpb25zLnN0YWNraW5nO2NbbSsiU3RhY2tlciJdJiZbZywiLSIrZ10uZm9yRWFjaChmdW5jdGlvbihkKXtmb3IodmFyIGw9dC5sZW5ndGgsayxmO2wtLTspaWYoaz10W2xdLHA9Yy5nZXRTdGFja0luZGljYXRvcihwLGssYy5pbmRleCxkKSxmPShrPXFbZF0mJnFbZF1ba10pJiZrLnBvaW50c1twLmtleV0pY1ttKwoiU3RhY2tlciJdKGYsayxsKX0pfTt2LnByb3RvdHlwZS5wZXJjZW50U3RhY2tlcj1mdW5jdGlvbihjLGcscSl7Zz1nLnRvdGFsPzEwMC9nLnRvdGFsOjA7Y1swXT1IKGNbMF0qZyk7Y1sxXT1IKGNbMV0qZyk7dGhpcy5zdGFja2VkWURhdGFbcV09Y1sxXX07di5wcm90b3R5cGUuZ2V0U3RhY2tJbmRpY2F0b3I9ZnVuY3Rpb24oYyxnLHEsdCl7IUQoYyl8fGMueCE9PWd8fHQmJmMua2V5IT09dD9jPXt4OmcsaW5kZXg6MCxrZXk6dH06Yy5pbmRleCsrO2Mua2V5PVtxLGcsYy5pbmRleF0uam9pbigpO3JldHVybiBjfTtxLlN0YWNrSXRlbT1LO3JldHVybiBxLlN0YWNrSXRlbX0pO08ocSwicGFydHMvRHluYW1pY3MuanMiLFtxWyJwYXJ0cy9BeGlzLmpzIl0scVsicGFydHMvQ2hhcnQuanMiXSxxWyJwYXJ0cy9HbG9iYWxzLmpzIl0scVsicGFydHMvT3B0aW9ucy5qcyJdLHFbInBhcnRzL1BvaW50LmpzIl0scVsicGFydHMvVGltZS5qcyJdLHFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihnLApjLHEseSxCLEgsRCl7dmFyIEo9eS50aW1lLHQ9RC5hZGRFdmVudCxHPUQuYW5pbWF0ZSxMPUQuY3JlYXRlRWxlbWVudCx2PUQuY3NzLEs9RC5kZWZpbmVkLG49RC5lcmFzZSxyPUQuZXJyb3IsQz1ELmV4dGVuZCxJPUQuZmlyZUV2ZW50LHA9RC5pc0FycmF5LG09RC5pc051bWJlcixkPUQuaXNPYmplY3QsbD1ELmlzU3RyaW5nLGs9RC5tZXJnZSxmPUQub2JqZWN0RWFjaCxhPUQucGljayxBPUQucmVsYXRpdmVMZW5ndGgsdT1ELnNldEFuaW1hdGlvbixFPUQuc3BsYXQ7eT1xLlNlcmllczt2YXIgUD1xLnNlcmllc1R5cGVzO3EuY2xlYW5SZWN1cnNpdmVseT1mdW5jdGlvbihhLGMpe3ZhciBrPXt9O2YoYSxmdW5jdGlvbihmLGUpe2lmKGQoYVtlXSwhMCkmJiFhLm5vZGVUeXBlJiZjW2VdKWY9cS5jbGVhblJlY3Vyc2l2ZWx5KGFbZV0sY1tlXSksT2JqZWN0LmtleXMoZikubGVuZ3RoJiYoa1tlXT1mKTtlbHNlIGlmKGQoYVtlXSl8fGFbZV0hPT1jW2VdKWtbZV09YVtlXX0pO3JldHVybiBrfTsKQyhjLnByb3RvdHlwZSx7YWRkU2VyaWVzOmZ1bmN0aW9uKGQsYyxmKXt2YXIgayxlPXRoaXM7ZCYmKGM9YShjLCEwKSxJKGUsImFkZFNlcmllcyIse29wdGlvbnM6ZH0sZnVuY3Rpb24oKXtrPWUuaW5pdFNlcmllcyhkKTtlLmlzRGlydHlMZWdlbmQ9ITA7ZS5saW5rU2VyaWVzKCk7ay5lbmFibGVkRGF0YVNvcnRpbmcmJmsuc2V0RGF0YShkLmRhdGEsITEpO0koZSwiYWZ0ZXJBZGRTZXJpZXMiLHtzZXJpZXM6a30pO2MmJmUucmVkcmF3KGYpfSkpO3JldHVybiBrfSxhZGRBeGlzOmZ1bmN0aW9uKGEsZCxjLGYpe3JldHVybiB0aGlzLmNyZWF0ZUF4aXMoZD8ieEF4aXMiOiJ5QXhpcyIse2F4aXM6YSxyZWRyYXc6YyxhbmltYXRpb246Zn0pfSxhZGRDb2xvckF4aXM6ZnVuY3Rpb24oYSxkLGMpe3JldHVybiB0aGlzLmNyZWF0ZUF4aXMoImNvbG9yQXhpcyIse2F4aXM6YSxyZWRyYXc6ZCxhbmltYXRpb246Y30pfSxjcmVhdGVBeGlzOmZ1bmN0aW9uKGQsYyl7dmFyIGY9dGhpcy5vcHRpb25zLApsPSJjb2xvckF4aXMiPT09ZCxlPWMucmVkcmF3LGI9Yy5hbmltYXRpb247Yz1rKGMuYXhpcyx7aW5kZXg6dGhpc1tkXS5sZW5ndGgsaXNYOiJ4QXhpcyI9PT1kfSk7dmFyIGg9bD9uZXcgcS5Db2xvckF4aXModGhpcyxjKTpuZXcgZyh0aGlzLGMpO2ZbZF09RShmW2RdfHx7fSk7ZltkXS5wdXNoKGMpO2wmJih0aGlzLmlzRGlydHlMZWdlbmQ9ITAsdGhpcy5heGVzLmZvckVhY2goZnVuY3Rpb24oYSl7YS5zZXJpZXM9W119KSx0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuYmluZEF4ZXMoKTthLmlzRGlydHlEYXRhPSEwfSkpO2EoZSwhMCkmJnRoaXMucmVkcmF3KGIpO3JldHVybiBofSxzaG93TG9hZGluZzpmdW5jdGlvbihkKXt2YXIgYz10aGlzLGY9Yy5vcHRpb25zLGs9Yy5sb2FkaW5nRGl2LGU9Zi5sb2FkaW5nLGI9ZnVuY3Rpb24oKXtrJiZ2KGsse2xlZnQ6Yy5wbG90TGVmdCsicHgiLHRvcDpjLnBsb3RUb3ArInB4Iix3aWR0aDpjLnBsb3RXaWR0aCsicHgiLGhlaWdodDpjLnBsb3RIZWlnaHQrCiJweCJ9KX07a3x8KGMubG9hZGluZ0Rpdj1rPUwoImRpdiIse2NsYXNzTmFtZToiaGlnaGNoYXJ0cy1sb2FkaW5nIGhpZ2hjaGFydHMtbG9hZGluZy1oaWRkZW4ifSxudWxsLGMuY29udGFpbmVyKSxjLmxvYWRpbmdTcGFuPUwoInNwYW4iLHtjbGFzc05hbWU6ImhpZ2hjaGFydHMtbG9hZGluZy1pbm5lciJ9LG51bGwsayksdChjLCJyZWRyYXciLGIpKTtrLmNsYXNzTmFtZT0iaGlnaGNoYXJ0cy1sb2FkaW5nIjtjLmxvYWRpbmdTcGFuLmlubmVySFRNTD1hKGQsZi5sYW5nLmxvYWRpbmcsIiIpO2Muc3R5bGVkTW9kZXx8KHYoayxDKGUuc3R5bGUse3pJbmRleDoxMH0pKSx2KGMubG9hZGluZ1NwYW4sZS5sYWJlbFN0eWxlKSxjLmxvYWRpbmdTaG93bnx8KHYoayx7b3BhY2l0eTowLGRpc3BsYXk6IiJ9KSxHKGsse29wYWNpdHk6ZS5zdHlsZS5vcGFjaXR5fHwuNX0se2R1cmF0aW9uOmUuc2hvd0R1cmF0aW9ufHwwfSkpKTtjLmxvYWRpbmdTaG93bj0hMDtiKCl9LGhpZGVMb2FkaW5nOmZ1bmN0aW9uKCl7dmFyIGE9CnRoaXMub3B0aW9ucyxkPXRoaXMubG9hZGluZ0RpdjtkJiYoZC5jbGFzc05hbWU9ImhpZ2hjaGFydHMtbG9hZGluZyBoaWdoY2hhcnRzLWxvYWRpbmctaGlkZGVuIix0aGlzLnN0eWxlZE1vZGV8fEcoZCx7b3BhY2l0eTowfSx7ZHVyYXRpb246YS5sb2FkaW5nLmhpZGVEdXJhdGlvbnx8MTAwLGNvbXBsZXRlOmZ1bmN0aW9uKCl7dihkLHtkaXNwbGF5OiJub25lIn0pfX0pKTt0aGlzLmxvYWRpbmdTaG93bj0hMX0scHJvcHNSZXF1aXJlRGlydHlCb3g6ImJhY2tncm91bmRDb2xvciBib3JkZXJDb2xvciBib3JkZXJXaWR0aCBib3JkZXJSYWRpdXMgcGxvdEJhY2tncm91bmRDb2xvciBwbG90QmFja2dyb3VuZEltYWdlIHBsb3RCb3JkZXJDb2xvciBwbG90Qm9yZGVyV2lkdGggcGxvdFNoYWRvdyBzaGFkb3ciLnNwbGl0KCIgIikscHJvcHNSZXF1aXJlUmVmbG93OiJtYXJnaW4gbWFyZ2luVG9wIG1hcmdpblJpZ2h0IG1hcmdpbkJvdHRvbSBtYXJnaW5MZWZ0IHNwYWNpbmcgc3BhY2luZ1RvcCBzcGFjaW5nUmlnaHQgc3BhY2luZ0JvdHRvbSBzcGFjaW5nTGVmdCIuc3BsaXQoIiAiKSwKcHJvcHNSZXF1aXJlVXBkYXRlU2VyaWVzOiJjaGFydC5pbnZlcnRlZCBjaGFydC5wb2xhciBjaGFydC5pZ25vcmVIaWRkZW5TZXJpZXMgY2hhcnQudHlwZSBjb2xvcnMgcGxvdE9wdGlvbnMgdGltZSB0b29sdGlwIi5zcGxpdCgiICIpLGNvbGxlY3Rpb25zV2l0aFVwZGF0ZTpbInhBeGlzIiwieUF4aXMiLCJ6QXhpcyIsInNlcmllcyJdLHVwZGF0ZTpmdW5jdGlvbihkLGMsZyxwKXt2YXIgZT10aGlzLGI9e2NyZWRpdHM6ImFkZENyZWRpdHMiLHRpdGxlOiJzZXRUaXRsZSIsc3VidGl0bGU6InNldFN1YnRpdGxlIixjYXB0aW9uOiJzZXRDYXB0aW9uIn0saCxuLHUscj1kLmlzUmVzcG9uc2l2ZU9wdGlvbnMsdz1bXTtJKGUsInVwZGF0ZSIse29wdGlvbnM6ZH0pO3J8fGUuc2V0UmVzcG9uc2l2ZSghMSwhMCk7ZD1xLmNsZWFuUmVjdXJzaXZlbHkoZCxlLm9wdGlvbnMpO2soITAsZS51c2VyT3B0aW9ucyxkKTtpZihoPWQuY2hhcnQpe2soITAsZS5vcHRpb25zLmNoYXJ0LGgpOyJjbGFzc05hbWUiaW4KaCYmZS5zZXRDbGFzc05hbWUoaC5jbGFzc05hbWUpOyJyZWZsb3ciaW4gaCYmZS5zZXRSZWZsb3coaC5yZWZsb3cpO2lmKCJpbnZlcnRlZCJpbiBofHwicG9sYXIiaW4gaHx8InR5cGUiaW4gaCl7ZS5wcm9wRnJvbVNlcmllcygpO3ZhciB0PSEwfSJhbGlnblRpY2tzImluIGgmJih0PSEwKTtmKGgsZnVuY3Rpb24oYSxiKXstMSE9PWUucHJvcHNSZXF1aXJlVXBkYXRlU2VyaWVzLmluZGV4T2YoImNoYXJ0LiIrYikmJihuPSEwKTstMSE9PWUucHJvcHNSZXF1aXJlRGlydHlCb3guaW5kZXhPZihiKSYmKGUuaXNEaXJ0eUJveD0hMCk7LTEhPT1lLnByb3BzUmVxdWlyZVJlZmxvdy5pbmRleE9mKGIpJiYocj9lLmlzRGlydHlCb3g9ITA6dT0hMCl9KTshZS5zdHlsZWRNb2RlJiYic3R5bGUiaW4gaCYmZS5yZW5kZXJlci5zZXRTdHlsZShoLnN0eWxlKX0hZS5zdHlsZWRNb2RlJiZkLmNvbG9ycyYmKHRoaXMub3B0aW9ucy5jb2xvcnM9ZC5jb2xvcnMpO2QucGxvdE9wdGlvbnMmJmsoITAsdGhpcy5vcHRpb25zLnBsb3RPcHRpb25zLApkLnBsb3RPcHRpb25zKTtkLnRpbWUmJnRoaXMudGltZT09PUomJih0aGlzLnRpbWU9bmV3IEgoZC50aW1lKSk7ZihkLGZ1bmN0aW9uKGEsZCl7aWYoZVtkXSYmImZ1bmN0aW9uIj09PXR5cGVvZiBlW2RdLnVwZGF0ZSllW2RdLnVwZGF0ZShhLCExKTtlbHNlIGlmKCJmdW5jdGlvbiI9PT10eXBlb2YgZVtiW2RdXSllW2JbZF1dKGEpOyJjaGFydCIhPT1kJiYtMSE9PWUucHJvcHNSZXF1aXJlVXBkYXRlU2VyaWVzLmluZGV4T2YoZCkmJihuPSEwKX0pO3RoaXMuY29sbGVjdGlvbnNXaXRoVXBkYXRlLmZvckVhY2goZnVuY3Rpb24oYil7aWYoZFtiXSl7aWYoInNlcmllcyI9PT1iKXt2YXIgYz1bXTtlW2JdLmZvckVhY2goZnVuY3Rpb24oYixkKXtiLm9wdGlvbnMuaXNJbnRlcm5hbHx8Yy5wdXNoKGEoYi5vcHRpb25zLmluZGV4LGQpKX0pfUUoZFtiXSkuZm9yRWFjaChmdW5jdGlvbihhLGQpe3ZhciBmPUsoYS5pZCksaDtmJiYoaD1lLmdldChhLmlkKSk7aHx8KGg9ZVtiXVtjP2NbZF06ZF0pJiYKZiYmSyhoLm9wdGlvbnMuaWQpJiYoaD12b2lkIDApO2gmJmguY29sbD09PWImJihoLnVwZGF0ZShhLCExKSxnJiYoaC50b3VjaGVkPSEwKSk7IWgmJmcmJmUuY29sbGVjdGlvbnNXaXRoSW5pdFtiXSYmKGUuY29sbGVjdGlvbnNXaXRoSW5pdFtiXVswXS5hcHBseShlLFthXS5jb25jYXQoZS5jb2xsZWN0aW9uc1dpdGhJbml0W2JdWzFdfHxbXSkuY29uY2F0KFshMV0pKS50b3VjaGVkPSEwKX0pO2cmJmVbYl0uZm9yRWFjaChmdW5jdGlvbihhKXthLnRvdWNoZWR8fGEub3B0aW9ucy5pc0ludGVybmFsP2RlbGV0ZSBhLnRvdWNoZWQ6dy5wdXNoKGEpfSl9fSk7dy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EucmVtb3ZlJiZhLnJlbW92ZSghMSl9KTt0JiZlLmF4ZXMuZm9yRWFjaChmdW5jdGlvbihhKXthLnVwZGF0ZSh7fSwhMSl9KTtuJiZlLmdldFNlcmllc09yZGVyQnlMaW5rcygpLmZvckVhY2goZnVuY3Rpb24oYSl7YS5jaGFydCYmYS51cGRhdGUoe30sITEpfSx0aGlzKTtkLmxvYWRpbmcmJgprKCEwLGUub3B0aW9ucy5sb2FkaW5nLGQubG9hZGluZyk7dD1oJiZoLndpZHRoO2g9aCYmaC5oZWlnaHQ7bChoKSYmKGg9QShoLHR8fGUuY2hhcnRXaWR0aCkpO3V8fG0odCkmJnQhPT1lLmNoYXJ0V2lkdGh8fG0oaCkmJmghPT1lLmNoYXJ0SGVpZ2h0P2Uuc2V0U2l6ZSh0LGgscCk6YShjLCEwKSYmZS5yZWRyYXcocCk7SShlLCJhZnRlclVwZGF0ZSIse29wdGlvbnM6ZCxyZWRyYXc6YyxhbmltYXRpb246cH0pfSxzZXRTdWJ0aXRsZTpmdW5jdGlvbihhLGQpe3RoaXMuYXBwbHlEZXNjcmlwdGlvbigic3VidGl0bGUiLGEpO3RoaXMubGF5T3V0VGl0bGVzKGQpfSxzZXRDYXB0aW9uOmZ1bmN0aW9uKGEsZCl7dGhpcy5hcHBseURlc2NyaXB0aW9uKCJjYXB0aW9uIixhKTt0aGlzLmxheU91dFRpdGxlcyhkKX19KTtjLnByb3RvdHlwZS5jb2xsZWN0aW9uc1dpdGhJbml0PXt4QXhpczpbYy5wcm90b3R5cGUuYWRkQXhpcyxbITBdXSx5QXhpczpbYy5wcm90b3R5cGUuYWRkQXhpcyxbITFdXSwKc2VyaWVzOltjLnByb3RvdHlwZS5hZGRTZXJpZXNdfTtDKEIucHJvdG90eXBlLHt1cGRhdGU6ZnVuY3Rpb24oYyxmLGssbCl7ZnVuY3Rpb24gZSgpe2IuYXBwbHlPcHRpb25zKGMpO3ZhciBlPWcmJmIuaGFzRHVtbXlHcmFwaGljO2U9bnVsbD09PWIueT8hZTplO2cmJmUmJihiLmdyYXBoaWM9Zy5kZXN0cm95KCksZGVsZXRlIGIuaGFzRHVtbXlHcmFwaGljKTtkKGMsITApJiYoZyYmZy5lbGVtZW50JiZjJiZjLm1hcmtlciYmInVuZGVmaW5lZCIhPT10eXBlb2YgYy5tYXJrZXIuc3ltYm9sJiYoYi5ncmFwaGljPWcuZGVzdHJveSgpKSxjJiZjLmRhdGFMYWJlbHMmJmIuZGF0YUxhYmVsJiYoYi5kYXRhTGFiZWw9Yi5kYXRhTGFiZWwuZGVzdHJveSgpKSxiLmNvbm5lY3RvciYmKGIuY29ubmVjdG9yPWIuY29ubmVjdG9yLmRlc3Ryb3koKSkpO209Yi5pbmRleDtoLnVwZGF0ZVBhcmFsbGVsQXJyYXlzKGIsbSk7bi5kYXRhW21dPWQobi5kYXRhW21dLCEwKXx8ZChjLCEwKT9iLm9wdGlvbnM6CmEoYyxuLmRhdGFbbV0pO2guaXNEaXJ0eT1oLmlzRGlydHlEYXRhPSEwOyFoLmZpeGVkQm94JiZoLmhhc0NhcnRlc2lhblNlcmllcyYmKHAuaXNEaXJ0eUJveD0hMCk7InBvaW50Ij09PW4ubGVnZW5kVHlwZSYmKHAuaXNEaXJ0eUxlZ2VuZD0hMCk7ZiYmcC5yZWRyYXcoayl9dmFyIGI9dGhpcyxoPWIuc2VyaWVzLGc9Yi5ncmFwaGljLG0scD1oLmNoYXJ0LG49aC5vcHRpb25zO2Y9YShmLCEwKTshMT09PWw/ZSgpOmIuZmlyZVBvaW50RXZlbnQoInVwZGF0ZSIse29wdGlvbnM6Y30sZSl9LHJlbW92ZTpmdW5jdGlvbihhLGQpe3RoaXMuc2VyaWVzLnJlbW92ZVBvaW50KHRoaXMuc2VyaWVzLmRhdGEuaW5kZXhPZih0aGlzKSxhLGQpfX0pO0MoeS5wcm90b3R5cGUse2FkZFBvaW50OmZ1bmN0aW9uKGQsYyxmLGssZSl7dmFyIGI9dGhpcy5vcHRpb25zLGg9dGhpcy5kYXRhLGw9dGhpcy5jaGFydCxnPXRoaXMueEF4aXM7Zz1nJiZnLmhhc05hbWVzJiZnLm5hbWVzO3ZhciBtPWIuZGF0YSxwPQp0aGlzLnhEYXRhLG47Yz1hKGMsITApO3ZhciB1PXtzZXJpZXM6dGhpc307dGhpcy5wb2ludENsYXNzLnByb3RvdHlwZS5hcHBseU9wdGlvbnMuYXBwbHkodSxbZF0pO3ZhciByPXUueDt2YXIgdz1wLmxlbmd0aDtpZih0aGlzLnJlcXVpcmVTb3J0aW5nJiZyPHBbdy0xXSlmb3Iobj0hMDt3JiZwW3ctMV0+cjspdy0tO3RoaXMudXBkYXRlUGFyYWxsZWxBcnJheXModSwic3BsaWNlIix3LDAsMCk7dGhpcy51cGRhdGVQYXJhbGxlbEFycmF5cyh1LHcpO2cmJnUubmFtZSYmKGdbcl09dS5uYW1lKTttLnNwbGljZSh3LDAsZCk7biYmKHRoaXMuZGF0YS5zcGxpY2UodywwLG51bGwpLHRoaXMucHJvY2Vzc0RhdGEoKSk7InBvaW50Ij09PWIubGVnZW5kVHlwZSYmdGhpcy5nZW5lcmF0ZVBvaW50cygpO2YmJihoWzBdJiZoWzBdLnJlbW92ZT9oWzBdLnJlbW92ZSghMSk6KGguc2hpZnQoKSx0aGlzLnVwZGF0ZVBhcmFsbGVsQXJyYXlzKHUsInNoaWZ0IiksbS5zaGlmdCgpKSk7ITEhPT1lJiZJKHRoaXMsCiJhZGRQb2ludCIse3BvaW50OnV9KTt0aGlzLmlzRGlydHlEYXRhPXRoaXMuaXNEaXJ0eT0hMDtjJiZsLnJlZHJhdyhrKX0scmVtb3ZlUG9pbnQ6ZnVuY3Rpb24oZCxjLGYpe3ZhciBrPXRoaXMsZT1rLmRhdGEsYj1lW2RdLGg9ay5wb2ludHMsbD1rLmNoYXJ0LGc9ZnVuY3Rpb24oKXtoJiZoLmxlbmd0aD09PWUubGVuZ3RoJiZoLnNwbGljZShkLDEpO2Uuc3BsaWNlKGQsMSk7ay5vcHRpb25zLmRhdGEuc3BsaWNlKGQsMSk7ay51cGRhdGVQYXJhbGxlbEFycmF5cyhifHx7c2VyaWVzOmt9LCJzcGxpY2UiLGQsMSk7YiYmYi5kZXN0cm95KCk7ay5pc0RpcnR5PSEwO2suaXNEaXJ0eURhdGE9ITA7YyYmbC5yZWRyYXcoKX07dShmLGwpO2M9YShjLCEwKTtiP2IuZmlyZVBvaW50RXZlbnQoInJlbW92ZSIsbnVsbCxnKTpnKCl9LHJlbW92ZTpmdW5jdGlvbihkLGMsZixrKXtmdW5jdGlvbiBlKCl7Yi5kZXN0cm95KGspO2IucmVtb3ZlPW51bGw7aC5pc0RpcnR5TGVnZW5kPWguaXNEaXJ0eUJveD0KITA7aC5saW5rU2VyaWVzKCk7YShkLCEwKSYmaC5yZWRyYXcoYyl9dmFyIGI9dGhpcyxoPWIuY2hhcnQ7ITEhPT1mP0koYiwicmVtb3ZlIixudWxsLGUpOmUoKX0sdXBkYXRlOmZ1bmN0aW9uKGQsYyl7ZD1xLmNsZWFuUmVjdXJzaXZlbHkoZCx0aGlzLnVzZXJPcHRpb25zKTtJKHRoaXMsInVwZGF0ZSIse29wdGlvbnM6ZH0pO3ZhciBmPXRoaXMsbD1mLmNoYXJ0LGU9Zi51c2VyT3B0aW9ucyxiPWYuaW5pdGlhbFR5cGV8fGYudHlwZSxoPWQudHlwZXx8ZS50eXBlfHxsLm9wdGlvbnMuY2hhcnQudHlwZSxnPSEodGhpcy5oYXNEZXJpdmVkRGF0YXx8ZC5kYXRhR3JvdXBpbmd8fGgmJmghPT10aGlzLnR5cGV8fCJ1bmRlZmluZWQiIT09dHlwZW9mIGQucG9pbnRTdGFydHx8ZC5wb2ludEludGVydmFsfHxkLnBvaW50SW50ZXJ2YWxVbml0fHxkLmtleXMpLG09UFtiXS5wcm90b3R5cGUscCxuPVsiZXZlbnRPcHRpb25zIiwibmF2aWdhdG9yU2VyaWVzIiwiYmFzZVNlcmllcyJdLHU9Zi5maW5pc2hlZEFuaW1hdGluZyYmCnthbmltYXRpb246ITF9LHc9e307ZyYmKG4ucHVzaCgiZGF0YSIsImlzRGlydHlEYXRhIiwicG9pbnRzIiwicHJvY2Vzc2VkWERhdGEiLCJwcm9jZXNzZWRZRGF0YSIsInhJbmNyZW1lbnQiLCJjcm9wcGVkIiwiX2hhc1BvaW50TWFya2VycyIsIl9oYXNQb2ludExhYmVscyIsIm1hcE1hcCIsIm1hcERhdGEiLCJtaW5ZIiwibWF4WSIsIm1pblgiLCJtYXhYIiksITEhPT1kLnZpc2libGUmJm4ucHVzaCgiYXJlYSIsImdyYXBoIiksZi5wYXJhbGxlbEFycmF5cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe24ucHVzaChhKyJEYXRhIil9KSxkLmRhdGEmJihkLmRhdGFTb3J0aW5nJiZDKGYub3B0aW9ucy5kYXRhU29ydGluZyxkLmRhdGFTb3J0aW5nKSx0aGlzLnNldERhdGEoZC5kYXRhLCExKSkpO2Q9ayhlLHUse2luZGV4OiJ1bmRlZmluZWQiPT09dHlwZW9mIGUuaW5kZXg/Zi5pbmRleDplLmluZGV4LHBvaW50U3RhcnQ6YShlLnBvaW50U3RhcnQsZi54RGF0YVswXSl9LCFnJiZ7ZGF0YTpmLm9wdGlvbnMuZGF0YX0sCmQpO2cmJmQuZGF0YSYmKGQuZGF0YT1mLm9wdGlvbnMuZGF0YSk7bj1bImdyb3VwIiwibWFya2VyR3JvdXAiLCJkYXRhTGFiZWxzR3JvdXAiLCJ0cmFuc2Zvcm1Hcm91cCJdLmNvbmNhdChuKTtuLmZvckVhY2goZnVuY3Rpb24oYSl7blthXT1mW2FdO2RlbGV0ZSBmW2FdfSk7Zi5yZW1vdmUoITEsbnVsbCwhMSwhMCk7Zm9yKHAgaW4gbSlmW3BdPXZvaWQgMDtQW2h8fGJdP0MoZixQW2h8fGJdLnByb3RvdHlwZSk6cigxNywhMCxsLHttaXNzaW5nTW9kdWxlRm9yOmh8fGJ9KTtuLmZvckVhY2goZnVuY3Rpb24oYSl7ZlthXT1uW2FdfSk7Zi5pbml0KGwsZCk7aWYoZyYmdGhpcy5wb2ludHMpe3ZhciBBPWYub3B0aW9uczshMT09PUEudmlzaWJsZT8ody5ncmFwaGljPTEsdy5kYXRhTGFiZWw9MSk6Zi5faGFzUG9pbnRMYWJlbHN8fChkPUEubWFya2VyLGU9QS5kYXRhTGFiZWxzLGQmJighMT09PWQuZW5hYmxlZHx8InN5bWJvbCJpbiBkKSYmKHcuZ3JhcGhpYz0xKSxlJiYhMT09PWUuZW5hYmxlZCYmCih3LmRhdGFMYWJlbD0xKSk7dGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihhKXthJiZhLnNlcmllcyYmKGEucmVzb2x2ZUNvbG9yKCksT2JqZWN0LmtleXModykubGVuZ3RoJiZhLmRlc3Ryb3lFbGVtZW50cyh3KSwhMT09PUEuc2hvd0luTGVnZW5kJiZhLmxlZ2VuZEl0ZW0mJmwubGVnZW5kLmRlc3Ryb3lJdGVtKGEpKX0sdGhpcyl9Zi5pbml0aWFsVHlwZT1iO2wubGlua1NlcmllcygpO0kodGhpcywiYWZ0ZXJVcGRhdGUiKTthKGMsITApJiZsLnJlZHJhdyhnP3ZvaWQgMDohMSl9LHNldE5hbWU6ZnVuY3Rpb24oYSl7dGhpcy5uYW1lPXRoaXMub3B0aW9ucy5uYW1lPXRoaXMudXNlck9wdGlvbnMubmFtZT1hO3RoaXMuY2hhcnQuaXNEaXJ0eUxlZ2VuZD0hMH19KTtDKGcucHJvdG90eXBlLHt1cGRhdGU6ZnVuY3Rpb24oZCxjKXt2YXIgbD10aGlzLmNoYXJ0LGc9ZCYmZC5ldmVudHN8fHt9O2Q9ayh0aGlzLnVzZXJPcHRpb25zLGQpO2wub3B0aW9uc1t0aGlzLmNvbGxdLmluZGV4T2YmJgoobC5vcHRpb25zW3RoaXMuY29sbF1bbC5vcHRpb25zW3RoaXMuY29sbF0uaW5kZXhPZih0aGlzLnVzZXJPcHRpb25zKV09ZCk7ZihsLm9wdGlvbnNbdGhpcy5jb2xsXS5ldmVudHMsZnVuY3Rpb24oYSxiKXsidW5kZWZpbmVkIj09PXR5cGVvZiBnW2JdJiYoZ1tiXT12b2lkIDApfSk7dGhpcy5kZXN0cm95KCEwKTt0aGlzLmluaXQobCxDKGQse2V2ZW50czpnfSkpO2wuaXNEaXJ0eUJveD0hMDthKGMsITApJiZsLnJlZHJhdygpfSxyZW1vdmU6ZnVuY3Rpb24oZCl7Zm9yKHZhciBjPXRoaXMuY2hhcnQsZj10aGlzLmNvbGwsaz10aGlzLnNlcmllcyxlPWsubGVuZ3RoO2UtLTspa1tlXSYma1tlXS5yZW1vdmUoITEpO24oYy5heGVzLHRoaXMpO24oY1tmXSx0aGlzKTtwKGMub3B0aW9uc1tmXSk/Yy5vcHRpb25zW2ZdLnNwbGljZSh0aGlzLm9wdGlvbnMuaW5kZXgsMSk6ZGVsZXRlIGMub3B0aW9uc1tmXTtjW2ZdLmZvckVhY2goZnVuY3Rpb24oYSxkKXthLm9wdGlvbnMuaW5kZXg9YS51c2VyT3B0aW9ucy5pbmRleD0KZH0pO3RoaXMuZGVzdHJveSgpO2MuaXNEaXJ0eUJveD0hMDthKGQsITApJiZjLnJlZHJhdygpfSxzZXRUaXRsZTpmdW5jdGlvbihhLGQpe3RoaXMudXBkYXRlKHt0aXRsZTphfSxkKX0sc2V0Q2F0ZWdvcmllczpmdW5jdGlvbihhLGQpe3RoaXMudXBkYXRlKHtjYXRlZ29yaWVzOmF9LGQpfX0pfSk7TyhxLCJwYXJ0cy9BcmVhU2VyaWVzLmpzIixbcVsicGFydHMvR2xvYmFscy5qcyJdLHFbInBhcnRzL0NvbG9yLmpzIl0scVsibWl4aW5zL2xlZ2VuZC1zeW1ib2wuanMiXSxxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyxjLHEseSl7dmFyIEI9Yy5wYXJzZSxIPXkub2JqZWN0RWFjaCxEPXkucGljaztjPXkuc2VyaWVzVHlwZTt2YXIgSj1nLlNlcmllcztjKCJhcmVhIiwibGluZSIse3NvZnRUaHJlc2hvbGQ6ITEsdGhyZXNob2xkOjB9LHtzaW5nbGVTdGFja3M6ITEsZ2V0U3RhY2tQb2ludHM6ZnVuY3Rpb24oYyl7dmFyIGc9W10scT1bXSx0PXRoaXMueEF4aXMseT10aGlzLnlBeGlzLApuPXkuc3RhY2tpbmcuc3RhY2tzW3RoaXMuc3RhY2tLZXldLHI9e30sQz10aGlzLmluZGV4LEk9eS5zZXJpZXMscD1JLmxlbmd0aCxtPUQoeS5vcHRpb25zLnJldmVyc2VkU3RhY2tzLCEwKT8xOi0xLGQ7Yz1jfHx0aGlzLnBvaW50cztpZih0aGlzLm9wdGlvbnMuc3RhY2tpbmcpe2ZvcihkPTA7ZDxjLmxlbmd0aDtkKyspY1tkXS5sZWZ0TnVsbD1jW2RdLnJpZ2h0TnVsbD12b2lkIDAscltjW2RdLnhdPWNbZF07SChuLGZ1bmN0aW9uKGQsYyl7bnVsbCE9PWQudG90YWwmJnEucHVzaChjKX0pO3Euc29ydChmdW5jdGlvbihkLGMpe3JldHVybiBkLWN9KTt2YXIgbD1JLm1hcChmdW5jdGlvbihkKXtyZXR1cm4gZC52aXNpYmxlfSk7cS5mb3JFYWNoKGZ1bmN0aW9uKGMsZil7dmFyIGE9MCxrLHU7aWYocltjXSYmIXJbY10uaXNOdWxsKWcucHVzaChyW2NdKSxbLTEsMV0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgZz0xPT09YT8icmlnaHROdWxsIjoibGVmdE51bGwiLHc9MCxBPW5bcVtmK2FdXTsKaWYoQSlmb3IoZD1DOzA8PWQmJmQ8cDspaz1BLnBvaW50c1tkXSxrfHwoZD09PUM/cltjXVtnXT0hMDpsW2RdJiYodT1uW2NdLnBvaW50c1tkXSkmJih3LT11WzFdLXVbMF0pKSxkKz1tO3JbY11bMT09PWE/InJpZ2h0Q2xpZmYiOiJsZWZ0Q2xpZmYiXT13fSk7ZWxzZXtmb3IoZD1DOzA8PWQmJmQ8cDspe2lmKGs9bltjXS5wb2ludHNbZF0pe2E9a1sxXTticmVha31kKz1tfWE9eS50cmFuc2xhdGUoYSwwLDEsMCwxKTtnLnB1c2goe2lzTnVsbDohMCxwbG90WDp0LnRyYW5zbGF0ZShjLDAsMCwwLDEpLHg6YyxwbG90WTphLHlCb3R0b206YX0pfX0pfXJldHVybiBnfSxnZXRHcmFwaFBhdGg6ZnVuY3Rpb24oYyl7dmFyIGc9Si5wcm90b3R5cGUuZ2V0R3JhcGhQYXRoLHE9dGhpcy5vcHRpb25zLHQ9cS5zdGFja2luZyx5PXRoaXMueUF4aXMsbixyPVtdLEM9W10sST10aGlzLmluZGV4LHA9eS5zdGFja2luZy5zdGFja3NbdGhpcy5zdGFja0tleV0sbT1xLnRocmVzaG9sZCxkPU1hdGgucm91bmQoeS5nZXRUaHJlc2hvbGQocS50aHJlc2hvbGQpKTsKcT1EKHEuY29ubmVjdE51bGxzLCJwZXJjZW50Ij09PXQpO3ZhciBsPWZ1bmN0aW9uKGEsayxsKXt2YXIgZz1jW2FdO2E9dCYmcFtnLnhdLnBvaW50c1tJXTt2YXIgbj1nW2wrIk51bGwiXXx8MDtsPWdbbCsiQ2xpZmYiXXx8MDtnPSEwO2lmKGx8fG4pe3ZhciB1PShuP2FbMF06YVsxXSkrbDt2YXIgcT1hWzBdK2w7Zz0hIW59ZWxzZSF0JiZjW2tdJiZjW2tdLmlzTnVsbCYmKHU9cT1tKTsidW5kZWZpbmVkIiE9PXR5cGVvZiB1JiYoQy5wdXNoKHtwbG90WDpmLHBsb3RZOm51bGw9PT11P2Q6eS5nZXRUaHJlc2hvbGQodSksaXNOdWxsOmcsaXNDbGlmZjohMH0pLHIucHVzaCh7cGxvdFg6ZixwbG90WTpudWxsPT09cT9kOnkuZ2V0VGhyZXNob2xkKHEpLGRvQ3VydmU6ITF9KSl9O2M9Y3x8dGhpcy5wb2ludHM7dCYmKGM9dGhpcy5nZXRTdGFja1BvaW50cyhjKSk7Zm9yKG49MDtuPGMubGVuZ3RoO24rKyl7dHx8KGNbbl0ubGVmdENsaWZmPWNbbl0ucmlnaHRDbGlmZj1jW25dLmxlZnROdWxsPQpjW25dLnJpZ2h0TnVsbD12b2lkIDApO3ZhciBrPWNbbl0uaXNOdWxsO3ZhciBmPUQoY1tuXS5yZWN0UGxvdFgsY1tuXS5wbG90WCk7dmFyIGE9RChjW25dLnlCb3R0b20sZCk7aWYoIWt8fHEpcXx8bChuLG4tMSwibGVmdCIpLGsmJiF0JiZxfHwoQy5wdXNoKGNbbl0pLHIucHVzaCh7eDpuLHBsb3RYOmYscGxvdFk6YX0pKSxxfHxsKG4sbisxLCJyaWdodCIpfW49Zy5jYWxsKHRoaXMsQywhMCwhMCk7ci5yZXZlcnNlZD0hMDtrPWcuY2FsbCh0aGlzLHIsITAsITApOyhhPWtbMF0pJiYiTSI9PT1hWzBdJiYoa1swXT1bIkwiLGFbMV0sYVsyXV0pO2s9bi5jb25jYXQoayk7Zz1nLmNhbGwodGhpcyxDLCExLHEpO2sueE1hcD1uLnhNYXA7dGhpcy5hcmVhUGF0aD1rO3JldHVybiBnfSxkcmF3R3JhcGg6ZnVuY3Rpb24oKXt0aGlzLmFyZWFQYXRoPVtdO0oucHJvdG90eXBlLmRyYXdHcmFwaC5hcHBseSh0aGlzKTt2YXIgYz10aGlzLGc9dGhpcy5hcmVhUGF0aCxxPXRoaXMub3B0aW9ucyx2PVtbImFyZWEiLAoiaGlnaGNoYXJ0cy1hcmVhIix0aGlzLmNvbG9yLHEuZmlsbENvbG9yXV07dGhpcy56b25lcy5mb3JFYWNoKGZ1bmN0aW9uKGcsbil7di5wdXNoKFsiem9uZS1hcmVhLSIrbiwiaGlnaGNoYXJ0cy1hcmVhIGhpZ2hjaGFydHMtem9uZS1hcmVhLSIrbisiICIrZy5jbGFzc05hbWUsZy5jb2xvcnx8Yy5jb2xvcixnLmZpbGxDb2xvcnx8cS5maWxsQ29sb3JdKX0pO3YuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgbj10WzBdLHI9Y1tuXSx2PXI/ImFuaW1hdGUiOiJhdHRyIix5PXt9O3I/KHIuZW5kWD1jLnByZXZlbnRHcmFwaEFuaW1hdGlvbj9udWxsOmcueE1hcCxyLmFuaW1hdGUoe2Q6Z30pKTooeS56SW5kZXg9MCxyPWNbbl09Yy5jaGFydC5yZW5kZXJlci5wYXRoKGcpLmFkZENsYXNzKHRbMV0pLmFkZChjLmdyb3VwKSxyLmlzQXJlYT0hMCk7Yy5jaGFydC5zdHlsZWRNb2RlfHwoeS5maWxsPUQodFszXSxCKHRbMl0pLnNldE9wYWNpdHkoRChxLmZpbGxPcGFjaXR5LC43NSkpLmdldCgpKSk7CnJbdl0oeSk7ci5zdGFydFg9Zy54TWFwO3Iuc2hpZnRVbml0PXEuc3RlcD8yOjF9KX0sZHJhd0xlZ2VuZFN5bWJvbDpxLmRyYXdSZWN0YW5nbGV9KTsiIn0pO08ocSwicGFydHMvU3BsaW5lU2VyaWVzLmpzIixbcVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGcpe3ZhciBjPWcucGljaztnPWcuc2VyaWVzVHlwZTtnKCJzcGxpbmUiLCJsaW5lIix7fSx7Z2V0UG9pbnRTcGxpbmU6ZnVuY3Rpb24oZyxxLEIpe3ZhciB5PXEucGxvdFh8fDAsRD1xLnBsb3RZfHwwLEo9Z1tCLTFdO0I9Z1tCKzFdO2lmKEomJiFKLmlzTnVsbCYmITEhPT1KLmRvQ3VydmUmJiFxLmlzQ2xpZmYmJkImJiFCLmlzTnVsbCYmITEhPT1CLmRvQ3VydmUmJiFxLmlzQ2xpZmYpe2c9Si5wbG90WXx8MDt2YXIgdD1CLnBsb3RYfHwwO0I9Qi5wbG90WXx8MDt2YXIgRz0wO3ZhciBMPSgxLjUqeSsoSi5wbG90WHx8MCkpLzIuNTt2YXIgdj0oMS41KkQrZykvMi41O3Q9KDEuNSp5K3QpLzIuNTt2YXIgSz0oMS41KgpEK0IpLzIuNTt0IT09TCYmKEc9KEstdikqKHQteSkvKHQtTCkrRC1LKTt2Kz1HO0srPUc7dj5nJiZ2PkQ/KHY9TWF0aC5tYXgoZyxEKSxLPTIqRC12KTp2PGcmJnY8RCYmKHY9TWF0aC5taW4oZyxEKSxLPTIqRC12KTtLPkImJks+RD8oSz1NYXRoLm1heChCLEQpLHY9MipELUspOks8QiYmSzxEJiYoSz1NYXRoLm1pbihCLEQpLHY9MipELUspO3EucmlnaHRDb250WD10O3EucmlnaHRDb250WT1LfXE9WyJDIixjKEoucmlnaHRDb250WCxKLnBsb3RYLDApLGMoSi5yaWdodENvbnRZLEoucGxvdFksMCksYyhMLHksMCksYyh2LEQsMCkseSxEXTtKLnJpZ2h0Q29udFg9Si5yaWdodENvbnRZPXZvaWQgMDtyZXR1cm4gcX19KTsiIn0pO08ocSwicGFydHMvQXJlYVNwbGluZVNlcmllcy5qcyIsW3FbInBhcnRzL0dsb2JhbHMuanMiXSxxWyJtaXhpbnMvbGVnZW5kLXN5bWJvbC5qcyJdLHFbInBhcnRzL09wdGlvbnMuanMiXSxxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyxjLHEsCnkpe3k9eS5zZXJpZXNUeXBlO2c9Zy5zZXJpZXNUeXBlcy5hcmVhLnByb3RvdHlwZTt5KCJhcmVhc3BsaW5lIiwic3BsaW5lIixxLmRlZmF1bHRPcHRpb25zLnBsb3RPcHRpb25zLmFyZWEse2dldFN0YWNrUG9pbnRzOmcuZ2V0U3RhY2tQb2ludHMsZ2V0R3JhcGhQYXRoOmcuZ2V0R3JhcGhQYXRoLGRyYXdHcmFwaDpnLmRyYXdHcmFwaCxkcmF3TGVnZW5kU3ltYm9sOmMuZHJhd1JlY3RhbmdsZX0pOyIifSk7TyhxLCJwYXJ0cy9Db2x1bW5TZXJpZXMuanMiLFtxWyJwYXJ0cy9HbG9iYWxzLmpzIl0scVsicGFydHMvQ29sb3IuanMiXSxxWyJtaXhpbnMvbGVnZW5kLXN5bWJvbC5qcyJdLHFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihnLGMscSx5KXsiIjt2YXIgQj1jLnBhcnNlLEg9eS5hbmltT2JqZWN0LEQ9eS5jbGFtcCxKPXkuZGVmaW5lZCx0PXkuZXh0ZW5kLEc9eS5pc051bWJlcixMPXkubWVyZ2Usdj15LnBpY2s7Yz15LnNlcmllc1R5cGU7dmFyIEs9Zy5TZXJpZXM7YygiY29sdW1uIiwKImxpbmUiLHtib3JkZXJSYWRpdXM6MCxjZW50ZXJJbkNhdGVnb3J5OiExLGdyb3VwUGFkZGluZzouMixtYXJrZXI6bnVsbCxwb2ludFBhZGRpbmc6LjEsbWluUG9pbnRMZW5ndGg6MCxjcm9wVGhyZXNob2xkOjUwLHBvaW50UmFuZ2U6bnVsbCxzdGF0ZXM6e2hvdmVyOntoYWxvOiExLGJyaWdodG5lc3M6LjF9LHNlbGVjdDp7Y29sb3I6IiNjY2NjY2MiLGJvcmRlckNvbG9yOiIjMDAwMDAwIn19LGRhdGFMYWJlbHM6e2FsaWduOnZvaWQgMCx2ZXJ0aWNhbEFsaWduOnZvaWQgMCx5OnZvaWQgMH0sc29mdFRocmVzaG9sZDohMSxzdGFydEZyb21UaHJlc2hvbGQ6ITAsc3RpY2t5VHJhY2tpbmc6ITEsdG9vbHRpcDp7ZGlzdGFuY2U6Nn0sdGhyZXNob2xkOjAsYm9yZGVyQ29sb3I6IiNmZmZmZmYifSx7Y3JvcFNob3VsZGVyOjAsZGlyZWN0VG91Y2g6ITAsdHJhY2tlckdyb3VwczpbImdyb3VwIiwiZGF0YUxhYmVsc0dyb3VwIl0sbmVnU3RhY2tzOiEwLGluaXQ6ZnVuY3Rpb24oKXtLLnByb3RvdHlwZS5pbml0LmFwcGx5KHRoaXMsCmFyZ3VtZW50cyk7dmFyIGM9dGhpcyxnPWMuY2hhcnQ7Zy5oYXNSZW5kZXJlZCYmZy5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihnKXtnLnR5cGU9PT1jLnR5cGUmJihnLmlzRGlydHk9ITApfSl9LGdldENvbHVtbk1ldHJpY3M6ZnVuY3Rpb24oKXt2YXIgYz10aGlzLGc9Yy5vcHRpb25zLHE9Yy54QXhpcyx0PWMueUF4aXMscD1xLm9wdGlvbnMucmV2ZXJzZWRTdGFja3M7cD1xLnJldmVyc2VkJiYhcHx8IXEucmV2ZXJzZWQmJnA7dmFyIG0sZD17fSxsPTA7ITE9PT1nLmdyb3VwaW5nP2w9MTpjLmNoYXJ0LnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBmPWEueUF4aXMsaz1hLm9wdGlvbnM7aWYoYS50eXBlPT09Yy50eXBlJiYoYS52aXNpYmxlfHwhYy5jaGFydC5vcHRpb25zLmNoYXJ0Lmlnbm9yZUhpZGRlblNlcmllcykmJnQubGVuPT09Zi5sZW4mJnQucG9zPT09Zi5wb3Mpe2lmKGsuc3RhY2tpbmcmJiJncm91cCIhPT1rLnN0YWNraW5nKXttPWEuc3RhY2tLZXk7InVuZGVmaW5lZCI9PT0KdHlwZW9mIGRbbV0mJihkW21dPWwrKyk7dmFyIGc9ZFttXX1lbHNlITEhPT1rLmdyb3VwaW5nJiYoZz1sKyspO2EuY29sdW1uSW5kZXg9Z319KTt2YXIgaz1NYXRoLm1pbihNYXRoLmFicyhxLnRyYW5zQSkqKHEub3JkaW5hbCYmcS5vcmRpbmFsLnNsb3BlfHxnLnBvaW50UmFuZ2V8fHEuY2xvc2VzdFBvaW50UmFuZ2V8fHEudGlja0ludGVydmFsfHwxKSxxLmxlbiksZj1rKmcuZ3JvdXBQYWRkaW5nLGE9KGstMipmKS8obHx8MSk7Zz1NYXRoLm1pbihnLm1heFBvaW50V2lkdGh8fHEubGVuLHYoZy5wb2ludFdpZHRoLGEqKDEtMipnLnBvaW50UGFkZGluZykpKTtjLmNvbHVtbk1ldHJpY3M9e3dpZHRoOmcsb2Zmc2V0OihhLWcpLzIrKGYrKChjLmNvbHVtbkluZGV4fHwwKSsocD8xOjApKSphLWsvMikqKHA/LTE6MSkscGFkZGVkV2lkdGg6YSxjb2x1bW5Db3VudDpsfTtyZXR1cm4gYy5jb2x1bW5NZXRyaWNzfSxjcmlzcENvbDpmdW5jdGlvbihjLGcscSx0KXt2YXIgcD10aGlzLmNoYXJ0LAptPXRoaXMuYm9yZGVyV2lkdGgsZD0tKG0lMj8uNTowKTttPW0lMj8uNToxO3AuaW52ZXJ0ZWQmJnAucmVuZGVyZXIuaXNWTUwmJihtKz0xKTt0aGlzLm9wdGlvbnMuY3Jpc3AmJihxPU1hdGgucm91bmQoYytxKStkLGM9TWF0aC5yb3VuZChjKStkLHEtPWMpO3Q9TWF0aC5yb3VuZChnK3QpK207ZD0uNT49TWF0aC5hYnMoZykmJi41PHQ7Zz1NYXRoLnJvdW5kKGcpK207dC09ZztkJiZ0JiYoLS1nLHQrPTEpO3JldHVybnt4OmMseTpnLHdpZHRoOnEsaGVpZ2h0OnR9fSxhZGp1c3RGb3JNaXNzaW5nQ29sdW1uczpmdW5jdGlvbihjLHEsdCx2KXt2YXIgcD10aGlzLG09dGhpcy5vcHRpb25zLnN0YWNraW5nO2lmKCF0LmlzTnVsbCYmMTx2LmNvbHVtbkNvdW50KXt2YXIgZD0wLGw9MDtIaWdoY2hhcnRzLm9iamVjdEVhY2godGhpcy55QXhpcy5zdGFja2luZyYmdGhpcy55QXhpcy5zdGFja2luZy5zdGFja3MsZnVuY3Rpb24oYyl7aWYoIm51bWJlciI9PT10eXBlb2YgdC54JiYoYz1jW3QueC50b1N0cmluZygpXSkpe3ZhciBmPQpjLnBvaW50c1twLmluZGV4XSxhPWMudG90YWw7bT8oZiYmKGQ9bCksYy5oYXNWYWxpZFBvaW50cyYmbCsrKTpnLmlzQXJyYXkoZikmJihkPWZbMV0sbD1hfHwwKX19KTtjPSh0LnBsb3RYfHwwKSsoKGwtMSkqdi5wYWRkZWRXaWR0aCtxKS8yLXEtZCp2LnBhZGRlZFdpZHRofXJldHVybiBjfSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXt2YXIgYz10aGlzLGc9Yy5jaGFydCxxPWMub3B0aW9ucyx0PWMuZGVuc2U9Mj5jLmNsb3Nlc3RQb2ludFJhbmdlKmMueEF4aXMudHJhbnNBO3Q9Yy5ib3JkZXJXaWR0aD12KHEuYm9yZGVyV2lkdGgsdD8wOjEpO3ZhciBwPWMueEF4aXMsbT1jLnlBeGlzLGQ9cS50aHJlc2hvbGQsbD1jLnRyYW5zbGF0ZWRUaHJlc2hvbGQ9bS5nZXRUaHJlc2hvbGQoZCksaz12KHEubWluUG9pbnRMZW5ndGgsNSksZj1jLmdldENvbHVtbk1ldHJpY3MoKSxhPWYud2lkdGgsQT1jLmJhclc9TWF0aC5tYXgoYSwxKzIqdCksdT1jLnBvaW50WE9mZnNldD1mLm9mZnNldCxFPWMuZGF0YU1pbiwKeT1jLmRhdGFNYXg7Zy5pbnZlcnRlZCYmKGwtPS41KTtxLnBvaW50UGFkZGluZyYmKEE9TWF0aC5jZWlsKEEpKTtLLnByb3RvdHlwZS50cmFuc2xhdGUuYXBwbHkoYyk7Yy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgcj12KG4ueUJvdHRvbSxsKSx3PTk5OStNYXRoLmFicyhyKSx0PWEsZT1uLnBsb3RYfHwwO3c9RChuLnBsb3RZLC13LG0ubGVuK3cpO3ZhciBiPWUrdSxoPUEsej1NYXRoLm1pbih3LHIpLHg9TWF0aC5tYXgodyxyKS16O2lmKGsmJk1hdGguYWJzKHgpPGspe3g9azt2YXIgQz0hbS5yZXZlcnNlZCYmIW4ubmVnYXRpdmV8fG0ucmV2ZXJzZWQmJm4ubmVnYXRpdmU7RyhkKSYmRyh5KSYmbi55PT09ZCYmeTw9ZCYmKG0ubWlufHwwKTxkJiZFIT09eSYmKEM9IUMpO3o9TWF0aC5hYnMoei1sKT5rP3ItazpsLShDP2s6MCl9SihuLm9wdGlvbnMucG9pbnRXaWR0aCkmJih0PWg9TWF0aC5jZWlsKG4ub3B0aW9ucy5wb2ludFdpZHRoKSxiLT1NYXRoLnJvdW5kKCh0LWEpLwoyKSk7cS5jZW50ZXJJbkNhdGVnb3J5JiYoYj1jLmFkanVzdEZvck1pc3NpbmdDb2x1bW5zKGIsdCxuLGYpKTtuLmJhclg9YjtuLnBvaW50V2lkdGg9dDtuLnRvb2x0aXBQb3M9Zy5pbnZlcnRlZD9bbS5sZW4rbS5wb3MtZy5wbG90TGVmdC13LHAubGVuK3AucG9zLWcucGxvdFRvcC0oZXx8MCktdS1oLzIseF06W2IraC8yLHcrbS5wb3MtZy5wbG90VG9wLHhdO24uc2hhcGVUeXBlPWMucG9pbnRDbGFzcy5wcm90b3R5cGUuc2hhcGVUeXBlfHwicmVjdCI7bi5zaGFwZUFyZ3M9Yy5jcmlzcENvbC5hcHBseShjLG4uaXNOdWxsP1tiLGwsaCwwXTpbYix6LGgseF0pfSl9LGdldFN5bWJvbDpnLm5vb3AsZHJhd0xlZ2VuZFN5bWJvbDpxLmRyYXdSZWN0YW5nbGUsZHJhd0dyYXBoOmZ1bmN0aW9uKCl7dGhpcy5ncm91cFt0aGlzLmRlbnNlPyJhZGRDbGFzcyI6InJlbW92ZUNsYXNzIl0oImhpZ2hjaGFydHMtZGVuc2UtZGF0YSIpfSxwb2ludEF0dHJpYnM6ZnVuY3Rpb24oYyxnKXt2YXIgbj10aGlzLm9wdGlvbnMsCnE9dGhpcy5wb2ludEF0dHJUb09wdGlvbnN8fHt9O3ZhciBwPXEuc3Ryb2tlfHwiYm9yZGVyQ29sb3IiO3ZhciBtPXFbInN0cm9rZS13aWR0aCJdfHwiYm9yZGVyV2lkdGgiLGQ9YyYmYy5jb2xvcnx8dGhpcy5jb2xvcixsPWMmJmNbcF18fG5bcF18fHRoaXMuY29sb3J8fGQsaz1jJiZjW21dfHxuW21dfHx0aGlzW21dfHwwO3E9YyYmYy5vcHRpb25zLmRhc2hTdHlsZXx8bi5kYXNoU3R5bGU7dmFyIGY9dihjJiZjLm9wYWNpdHksbi5vcGFjaXR5LDEpO2lmKGMmJnRoaXMuem9uZXMubGVuZ3RoKXt2YXIgYT1jLmdldFpvbmUoKTtkPWMub3B0aW9ucy5jb2xvcnx8YSYmKGEuY29sb3J8fGMubm9uWm9uZWRDb2xvcil8fHRoaXMuY29sb3I7YSYmKGw9YS5ib3JkZXJDb2xvcnx8bCxxPWEuZGFzaFN0eWxlfHxxLGs9YS5ib3JkZXJXaWR0aHx8ayl9ZyYmYyYmKGM9TChuLnN0YXRlc1tnXSxjLm9wdGlvbnMuc3RhdGVzJiZjLm9wdGlvbnMuc3RhdGVzW2ddfHx7fSksZz1jLmJyaWdodG5lc3MsZD0KYy5jb2xvcnx8InVuZGVmaW5lZCIhPT10eXBlb2YgZyYmQihkKS5icmlnaHRlbihjLmJyaWdodG5lc3MpLmdldCgpfHxkLGw9Y1twXXx8bCxrPWNbbV18fGsscT1jLmRhc2hTdHlsZXx8cSxmPXYoYy5vcGFjaXR5LGYpKTtwPXtmaWxsOmQsc3Ryb2tlOmwsInN0cm9rZS13aWR0aCI6ayxvcGFjaXR5OmZ9O3EmJihwLmRhc2hzdHlsZT1xKTtyZXR1cm4gcH0sZHJhd1BvaW50czpmdW5jdGlvbigpe3ZhciBjPXRoaXMsZz10aGlzLmNoYXJ0LHE9Yy5vcHRpb25zLHQ9Zy5yZW5kZXJlcixwPXEuYW5pbWF0aW9uTGltaXR8fDI1MCxtO2MucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oZCl7dmFyIGw9ZC5ncmFwaGljLGs9ISFsLGY9bCYmZy5wb2ludENvdW50PHA/ImFuaW1hdGUiOiJhdHRyIjtpZihHKGQucGxvdFkpJiZudWxsIT09ZC55KXttPWQuc2hhcGVBcmdzO2wmJmQuaGFzTmV3U2hhcGVUeXBlKCkmJihsPWwuZGVzdHJveSgpKTtjLmVuYWJsZWREYXRhU29ydGluZyYmKGQuc3RhcnRYUG9zPQpjLnhBeGlzLnJldmVyc2VkPy0obT9tLndpZHRoOjApOmMueEF4aXMud2lkdGgpO2x8fChkLmdyYXBoaWM9bD10W2Quc2hhcGVUeXBlXShtKS5hZGQoZC5ncm91cHx8Yy5ncm91cCkpJiZjLmVuYWJsZWREYXRhU29ydGluZyYmZy5oYXNSZW5kZXJlZCYmZy5wb2ludENvdW50PHAmJihsLmF0dHIoe3g6ZC5zdGFydFhQb3N9KSxrPSEwLGY9ImFuaW1hdGUiKTtpZihsJiZrKWxbZl0oTChtKSk7aWYocS5ib3JkZXJSYWRpdXMpbFtmXSh7cjpxLmJvcmRlclJhZGl1c30pO2cuc3R5bGVkTW9kZXx8bFtmXShjLnBvaW50QXR0cmlicyhkLGQuc2VsZWN0ZWQmJiJzZWxlY3QiKSkuc2hhZG93KCExIT09ZC5hbGxvd1NoYWRvdyYmcS5zaGFkb3csbnVsbCxxLnN0YWNraW5nJiYhcS5ib3JkZXJSYWRpdXMpO2wuYWRkQ2xhc3MoZC5nZXRDbGFzc05hbWUoKSwhMCl9ZWxzZSBsJiYoZC5ncmFwaGljPWwuZGVzdHJveSgpKX0pfSxhbmltYXRlOmZ1bmN0aW9uKGMpe3ZhciBnPXRoaXMsbj10aGlzLnlBeGlzLApxPWcub3B0aW9ucyxwPXRoaXMuY2hhcnQuaW52ZXJ0ZWQsbT17fSxkPXA/InRyYW5zbGF0ZVgiOiJ0cmFuc2xhdGVZIjtpZihjKW0uc2NhbGVZPS4wMDEsYz1EKG4udG9QaXhlbHMocS50aHJlc2hvbGQpLG4ucG9zLG4ucG9zK24ubGVuKSxwP20udHJhbnNsYXRlWD1jLW4ubGVuOm0udHJhbnNsYXRlWT1jLGcuY2xpcEJveCYmZy5zZXRDbGlwKCksZy5ncm91cC5hdHRyKG0pO2Vsc2V7dmFyIGw9Zy5ncm91cC5hdHRyKGQpO2cuZ3JvdXAuYW5pbWF0ZSh7c2NhbGVZOjF9LHQoSChnLm9wdGlvbnMuYW5pbWF0aW9uKSx7c3RlcDpmdW5jdGlvbihjLGYpe2cuZ3JvdXAmJihtW2RdPWwrZi5wb3MqKG4ucG9zLWwpLGcuZ3JvdXAuYXR0cihtKSl9fSkpfX0scmVtb3ZlOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcyxnPWMuY2hhcnQ7Zy5oYXNSZW5kZXJlZCYmZy5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihnKXtnLnR5cGU9PT1jLnR5cGUmJihnLmlzRGlydHk9ITApfSk7Sy5wcm90b3R5cGUucmVtb3ZlLmFwcGx5KGMsCmFyZ3VtZW50cyl9fSk7IiJ9KTtPKHEsInBhcnRzL0JhclNlcmllcy5qcyIsW3FbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihnKXtnPWcuc2VyaWVzVHlwZTtnKCJiYXIiLCJjb2x1bW4iLG51bGwse2ludmVydGVkOiEwfSk7IiJ9KTtPKHEsInBhcnRzL1NjYXR0ZXJTZXJpZXMuanMiLFtxWyJwYXJ0cy9HbG9iYWxzLmpzIl0scVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGcsYyl7dmFyIHE9Yy5hZGRFdmVudDtjPWMuc2VyaWVzVHlwZTt2YXIgeT1nLlNlcmllcztjKCJzY2F0dGVyIiwibGluZSIse2xpbmVXaWR0aDowLGZpbmROZWFyZXN0UG9pbnRCeToieHkiLGppdHRlcjp7eDowLHk6MH0sbWFya2VyOntlbmFibGVkOiEwfSx0b29sdGlwOntoZWFkZXJGb3JtYXQ6JzxzcGFuIHN0eWxlPSJjb2xvcjp7cG9pbnQuY29sb3J9Ij5cdTI1Y2Y8L3NwYW4+IDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHgiPiB7c2VyaWVzLm5hbWV9PC9zcGFuPjxici8+Jyxwb2ludEZvcm1hdDoieDogPGI+e3BvaW50Lnh9PC9iPjxici8+eTogPGI+e3BvaW50Lnl9PC9iPjxici8+In19LAp7c29ydGVkOiExLHJlcXVpcmVTb3J0aW5nOiExLG5vU2hhcmVkVG9vbHRpcDohMCx0cmFja2VyR3JvdXBzOlsiZ3JvdXAiLCJtYXJrZXJHcm91cCIsImRhdGFMYWJlbHNHcm91cCJdLHRha2VPcmRpbmFsUG9zaXRpb246ITEsZHJhd0dyYXBoOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLmxpbmVXaWR0aCYmeS5wcm90b3R5cGUuZHJhd0dyYXBoLmNhbGwodGhpcyl9LGFwcGx5Sml0dGVyOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcyxnPXRoaXMub3B0aW9ucy5qaXR0ZXIscT10aGlzLnBvaW50cy5sZW5ndGg7ZyYmdGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbih5LHQpe1sieCIsInkiXS5mb3JFYWNoKGZ1bmN0aW9uKEQsQil7dmFyIHY9InBsb3QiK0QudG9VcHBlckNhc2UoKTtpZihnW0RdJiYheS5pc051bGwpe3ZhciBHPWNbRCsiQXhpcyJdO3ZhciBuPWdbRF0qRy50cmFuc0E7aWYoRyYmIUcuaXNMb2cpe3ZhciByPU1hdGgubWF4KDAseVt2XS1uKTtHPU1hdGgubWluKEcubGVuLHlbdl0rCm4pO0I9MUU0Kk1hdGguc2luKHQrQipxKTt5W3ZdPXIrKEctcikqKEItTWF0aC5mbG9vcihCKSk7IngiPT09RCYmKHkuY2xpZW50WD15LnBsb3RYKX19fSl9KX19KTtxKHksImFmdGVyVHJhbnNsYXRlIixmdW5jdGlvbigpe3RoaXMuYXBwbHlKaXR0ZXImJnRoaXMuYXBwbHlKaXR0ZXIoKX0pOyIifSk7TyhxLCJtaXhpbnMvY2VudGVyZWQtc2VyaWVzLmpzIixbcVsicGFydHMvR2xvYmFscy5qcyJdLHFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihnLGMpe3ZhciBxPWMuaXNOdW1iZXIseT1jLnBpY2ssQj1jLnJlbGF0aXZlTGVuZ3RoLEg9Zy5kZWcycmFkO2cuQ2VudGVyZWRTZXJpZXNNaXhpbj17Z2V0Q2VudGVyOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5vcHRpb25zLHE9dGhpcy5jaGFydCx0PTIqKGMuc2xpY2VkT2Zmc2V0fHwwKSxHPXEucGxvdFdpZHRoLTIqdCxIPXEucGxvdEhlaWdodC0yKnQsdj1jLmNlbnRlcixLPU1hdGgubWluKEcsSCksbj1jLnNpemUscj1jLmlubmVyU2l6ZXx8CjA7InN0cmluZyI9PT10eXBlb2YgbiYmKG49cGFyc2VGbG9hdChuKSk7InN0cmluZyI9PT10eXBlb2YgciYmKHI9cGFyc2VGbG9hdChyKSk7Yz1beSh2WzBdLCI1MCUiKSx5KHZbMV0sIjUwJSIpLHkobiYmMD5uP3ZvaWQgMDpjLnNpemUsIjEwMCUiKSx5KHImJjA+cj92b2lkIDA6Yy5pbm5lclNpemV8fDAsIjAlIildOyFxLmFuZ3VsYXJ8fHRoaXMgaW5zdGFuY2VvZiBnLlNlcmllc3x8KGNbM109MCk7Zm9yKHY9MDs0PnY7Kyt2KW49Y1t2XSxxPTI+dnx8Mj09PXYmJi8lJC8udGVzdChuKSxjW3ZdPUIobixbRyxILEssY1syXV1bdl0pKyhxP3Q6MCk7Y1szXT5jWzJdJiYoY1szXT1jWzJdKTtyZXR1cm4gY30sZ2V0U3RhcnRBbmRFbmRSYWRpYW5zOmZ1bmN0aW9uKGMsZyl7Yz1xKGMpP2M6MDtnPXEoZykmJmc+YyYmMzYwPmctYz9nOmMrMzYwO3JldHVybntzdGFydDpIKihjKy05MCksZW5kOkgqKGcrLTkwKX19fX0pO08ocSwicGFydHMvUGllU2VyaWVzLmpzIixbcVsicGFydHMvR2xvYmFscy5qcyJdLApxWyJtaXhpbnMvbGVnZW5kLXN5bWJvbC5qcyJdLHFbInBhcnRzL1BvaW50LmpzIl0scVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGcsYyxxLHkpe3ZhciBCPXkuYWRkRXZlbnQsSD15LmNsYW1wLEQ9eS5kZWZpbmVkLEo9eS5maXJlRXZlbnQsdD15LmlzTnVtYmVyLEc9eS5tZXJnZSxMPXkucGljayx2PXkucmVsYXRpdmVMZW5ndGgsSz15LnNlcmllc1R5cGUsbj15LnNldEFuaW1hdGlvbjt5PWcuQ2VudGVyZWRTZXJpZXNNaXhpbjt2YXIgcj15LmdldFN0YXJ0QW5kRW5kUmFkaWFucyxDPWcubm9vcCxJPWcuU2VyaWVzO0soInBpZSIsImxpbmUiLHtjZW50ZXI6W251bGwsbnVsbF0sY2xpcDohMSxjb2xvckJ5UG9pbnQ6ITAsZGF0YUxhYmVsczp7YWxsb3dPdmVybGFwOiEwLGNvbm5lY3RvclBhZGRpbmc6NSxjb25uZWN0b3JTaGFwZToiZml4ZWRPZmZzZXQiLGNyb29rRGlzdGFuY2U6IjcwJSIsZGlzdGFuY2U6MzAsZW5hYmxlZDohMCxmb3JtYXR0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wb2ludC5pc051bGw/CnZvaWQgMDp0aGlzLnBvaW50Lm5hbWV9LHNvZnRDb25uZWN0b3I6ITAseDowfSxmaWxsQ29sb3I6dm9pZCAwLGlnbm9yZUhpZGRlblBvaW50OiEwLGluYWN0aXZlT3RoZXJQb2ludHM6ITAsbGVnZW5kVHlwZToicG9pbnQiLG1hcmtlcjpudWxsLHNpemU6bnVsbCxzaG93SW5MZWdlbmQ6ITEsc2xpY2VkT2Zmc2V0OjEwLHN0aWNreVRyYWNraW5nOiExLHRvb2x0aXA6e2ZvbGxvd1BvaW50ZXI6ITB9LGJvcmRlckNvbG9yOiIjZmZmZmZmIixib3JkZXJXaWR0aDoxLGxpbmVXaWR0aDp2b2lkIDAsc3RhdGVzOntob3Zlcjp7YnJpZ2h0bmVzczouMX19fSx7aXNDYXJ0ZXNpYW46ITEscmVxdWlyZVNvcnRpbmc6ITEsZGlyZWN0VG91Y2g6ITAsbm9TaGFyZWRUb29sdGlwOiEwLHRyYWNrZXJHcm91cHM6WyJncm91cCIsImRhdGFMYWJlbHNHcm91cCJdLGF4aXNUeXBlczpbXSxwb2ludEF0dHJpYnM6Zy5zZXJpZXNUeXBlcy5jb2x1bW4ucHJvdG90eXBlLnBvaW50QXR0cmlicyxhbmltYXRlOmZ1bmN0aW9uKGMpe3ZhciBnPQp0aGlzLGQ9Zy5wb2ludHMsbD1nLnN0YXJ0QW5nbGVSYWQ7Y3x8ZC5mb3JFYWNoKGZ1bmN0aW9uKGQpe3ZhciBjPWQuZ3JhcGhpYyxhPWQuc2hhcGVBcmdzO2MmJmEmJihjLmF0dHIoe3I6TChkLnN0YXJ0UixnLmNlbnRlciYmZy5jZW50ZXJbM10vMiksc3RhcnQ6bCxlbmQ6bH0pLGMuYW5pbWF0ZSh7cjphLnIsc3RhcnQ6YS5zdGFydCxlbmQ6YS5lbmR9LGcub3B0aW9ucy5hbmltYXRpb24pKX0pfSxoYXNEYXRhOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLnByb2Nlc3NlZFhEYXRhLmxlbmd0aH0sdXBkYXRlVG90YWxzOmZ1bmN0aW9uKCl7dmFyIGMsZz0wLGQ9dGhpcy5wb2ludHMsbD1kLmxlbmd0aCxrPXRoaXMub3B0aW9ucy5pZ25vcmVIaWRkZW5Qb2ludDtmb3IoYz0wO2M8bDtjKyspe3ZhciBmPWRbY107Zys9ayYmIWYudmlzaWJsZT8wOmYuaXNOdWxsPzA6Zi55fXRoaXMudG90YWw9Zztmb3IoYz0wO2M8bDtjKyspZj1kW2NdLGYucGVyY2VudGFnZT0wPGcmJihmLnZpc2libGV8fCFrKT8KZi55L2cqMTAwOjAsZi50b3RhbD1nfSxnZW5lcmF0ZVBvaW50czpmdW5jdGlvbigpe0kucHJvdG90eXBlLmdlbmVyYXRlUG9pbnRzLmNhbGwodGhpcyk7dGhpcy51cGRhdGVUb3RhbHMoKX0sZ2V0WDpmdW5jdGlvbihjLGcsZCl7dmFyIGw9dGhpcy5jZW50ZXIsaz10aGlzLnJhZGlpP3RoaXMucmFkaWlbZC5pbmRleF06bFsyXS8yO2M9TWF0aC5hc2luKEgoKGMtbFsxXSkvKGsrZC5sYWJlbERpc3RhbmNlKSwtMSwxKSk7cmV0dXJuIGxbMF0rKGc/LTE6MSkqTWF0aC5jb3MoYykqKGsrZC5sYWJlbERpc3RhbmNlKSsoMDxkLmxhYmVsRGlzdGFuY2U/KGc/LTE6MSkqdGhpcy5vcHRpb25zLmRhdGFMYWJlbHMucGFkZGluZzowKX0sdHJhbnNsYXRlOmZ1bmN0aW9uKGMpe3RoaXMuZ2VuZXJhdGVQb2ludHMoKTt2YXIgZz0wLGQ9dGhpcy5vcHRpb25zLGw9ZC5zbGljZWRPZmZzZXQsaz1sKyhkLmJvcmRlcldpZHRofHwwKSxmPXIoZC5zdGFydEFuZ2xlLGQuZW5kQW5nbGUpLGE9dGhpcy5zdGFydEFuZ2xlUmFkPQpmLnN0YXJ0O2Y9KHRoaXMuZW5kQW5nbGVSYWQ9Zi5lbmQpLWE7dmFyIHA9dGhpcy5wb2ludHMsbj1kLmRhdGFMYWJlbHMuZGlzdGFuY2U7ZD1kLmlnbm9yZUhpZGRlblBvaW50O3ZhciBxLHQ9cC5sZW5ndGg7Y3x8KHRoaXMuY2VudGVyPWM9dGhpcy5nZXRDZW50ZXIoKSk7Zm9yKHE9MDtxPHQ7cSsrKXt2YXIgdz1wW3FdO3ZhciB5PWErZypmO2lmKCFkfHx3LnZpc2libGUpZys9dy5wZXJjZW50YWdlLzEwMDt2YXIgRj1hK2cqZjt3LnNoYXBlVHlwZT0iYXJjIjt3LnNoYXBlQXJncz17eDpjWzBdLHk6Y1sxXSxyOmNbMl0vMixpbm5lclI6Y1szXS8yLHN0YXJ0Ok1hdGgucm91bmQoMUUzKnkpLzFFMyxlbmQ6TWF0aC5yb3VuZCgxRTMqRikvMUUzfTt3LmxhYmVsRGlzdGFuY2U9TCh3Lm9wdGlvbnMuZGF0YUxhYmVscyYmdy5vcHRpb25zLmRhdGFMYWJlbHMuZGlzdGFuY2Usbik7dy5sYWJlbERpc3RhbmNlPXYody5sYWJlbERpc3RhbmNlLHcuc2hhcGVBcmdzLnIpO3RoaXMubWF4TGFiZWxEaXN0YW5jZT0KTWF0aC5tYXgodGhpcy5tYXhMYWJlbERpc3RhbmNlfHwwLHcubGFiZWxEaXN0YW5jZSk7Rj0oRit5KS8yO0Y+MS41Kk1hdGguUEk/Ri09MipNYXRoLlBJOkY8LU1hdGguUEkvMiYmKEYrPTIqTWF0aC5QSSk7dy5zbGljZWRUcmFuc2xhdGlvbj17dHJhbnNsYXRlWDpNYXRoLnJvdW5kKE1hdGguY29zKEYpKmwpLHRyYW5zbGF0ZVk6TWF0aC5yb3VuZChNYXRoLnNpbihGKSpsKX07dmFyIEM9TWF0aC5jb3MoRikqY1syXS8yO3ZhciBlPU1hdGguc2luKEYpKmNbMl0vMjt3LnRvb2x0aXBQb3M9W2NbMF0rLjcqQyxjWzFdKy43KmVdO3cuaGFsZj1GPC1NYXRoLlBJLzJ8fEY+TWF0aC5QSS8yPzE6MDt3LmFuZ2xlPUY7eT1NYXRoLm1pbihrLHcubGFiZWxEaXN0YW5jZS81KTt3LmxhYmVsUG9zaXRpb249e25hdHVyYWw6e3g6Y1swXStDK01hdGguY29zKEYpKncubGFiZWxEaXN0YW5jZSx5OmNbMV0rZStNYXRoLnNpbihGKSp3LmxhYmVsRGlzdGFuY2V9LCJmaW5hbCI6e30sYWxpZ25tZW50OjA+CncubGFiZWxEaXN0YW5jZT8iY2VudGVyIjp3LmhhbGY/InJpZ2h0IjoibGVmdCIsY29ubmVjdG9yUG9zaXRpb246e2JyZWFrQXQ6e3g6Y1swXStDK01hdGguY29zKEYpKnkseTpjWzFdK2UrTWF0aC5zaW4oRikqeX0sdG91Y2hpbmdTbGljZUF0Ont4OmNbMF0rQyx5OmNbMV0rZX19fX1KKHRoaXMsImFmdGVyVHJhbnNsYXRlIil9LGRyYXdFbXB0eTpmdW5jdGlvbigpe3ZhciBjPXRoaXMuc3RhcnRBbmdsZVJhZCxnPXRoaXMuZW5kQW5nbGVSYWQsZD10aGlzLm9wdGlvbnM7aWYoMD09PXRoaXMudG90YWwpe3ZhciBsPXRoaXMuY2VudGVyWzBdO3ZhciBrPXRoaXMuY2VudGVyWzFdO3RoaXMuZ3JhcGh8fCh0aGlzLmdyYXBoPXRoaXMuY2hhcnQucmVuZGVyZXIuYXJjKGwsayx0aGlzLmNlbnRlclsxXS8yLDAsYyxnKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1lbXB0eS1zZXJpZXMiKS5hZGQodGhpcy5ncm91cCkpO3RoaXMuZ3JhcGguYXR0cih7ZDpIaWdoY2hhcnRzLlNWR1JlbmRlcmVyLnByb3RvdHlwZS5zeW1ib2xzLmFyYyhsLAprLHRoaXMuY2VudGVyWzJdLzIsMCx7c3RhcnQ6YyxlbmQ6Zyxpbm5lclI6dGhpcy5jZW50ZXJbM10vMn0pfSk7dGhpcy5jaGFydC5zdHlsZWRNb2RlfHx0aGlzLmdyYXBoLmF0dHIoeyJzdHJva2Utd2lkdGgiOmQuYm9yZGVyV2lkdGgsZmlsbDpkLmZpbGxDb2xvcnx8Im5vbmUiLHN0cm9rZTpkLmNvbG9yfHwiI2NjY2NjYyJ9KX1lbHNlIHRoaXMuZ3JhcGgmJih0aGlzLmdyYXBoPXRoaXMuZ3JhcGguZGVzdHJveSgpKX0scmVkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcyxnPWMuY2hhcnQsZD1nLnJlbmRlcmVyLGwsayxmLGEsbj1jLm9wdGlvbnMuc2hhZG93O3RoaXMuZHJhd0VtcHR5KCk7IW58fGMuc2hhZG93R3JvdXB8fGcuc3R5bGVkTW9kZXx8KGMuc2hhZG93R3JvdXA9ZC5nKCJzaGFkb3ciKS5hdHRyKHt6SW5kZXg6LTF9KS5hZGQoYy5ncm91cCkpO2MucG9pbnRzLmZvckVhY2goZnVuY3Rpb24obSl7dmFyIHA9e307az1tLmdyYXBoaWM7aWYoIW0uaXNOdWxsJiZrKXthPQptLnNoYXBlQXJncztsPW0uZ2V0VHJhbnNsYXRlKCk7aWYoIWcuc3R5bGVkTW9kZSl7dmFyIHE9bS5zaGFkb3dHcm91cDtuJiYhcSYmKHE9bS5zaGFkb3dHcm91cD1kLmcoInNoYWRvdyIpLmFkZChjLnNoYWRvd0dyb3VwKSk7cSYmcS5hdHRyKGwpO2Y9Yy5wb2ludEF0dHJpYnMobSxtLnNlbGVjdGVkJiYic2VsZWN0Iil9bS5kZWxheWVkUmVuZGVyaW5nPyhrLnNldFJhZGlhbFJlZmVyZW5jZShjLmNlbnRlcikuYXR0cihhKS5hdHRyKGwpLGcuc3R5bGVkTW9kZXx8ay5hdHRyKGYpLmF0dHIoeyJzdHJva2UtbGluZWpvaW4iOiJyb3VuZCJ9KS5zaGFkb3cobixxKSxtLmRlbGF5ZWRSZW5kZXJpbmc9ITEpOihrLnNldFJhZGlhbFJlZmVyZW5jZShjLmNlbnRlciksZy5zdHlsZWRNb2RlfHxHKCEwLHAsZiksRyghMCxwLGEsbCksay5hbmltYXRlKHApKTtrLmF0dHIoe3Zpc2liaWxpdHk6bS52aXNpYmxlPyJpbmhlcml0IjoiaGlkZGVuIn0pO2suYWRkQ2xhc3MobS5nZXRDbGFzc05hbWUoKSl9ZWxzZSBrJiYKKG0uZ3JhcGhpYz1rLmRlc3Ryb3koKSl9KX0sZHJhd1BvaW50czpmdW5jdGlvbigpe3ZhciBjPXRoaXMuY2hhcnQucmVuZGVyZXI7dGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihnKXtnLmdyYXBoaWMmJmcuaGFzTmV3U2hhcGVUeXBlKCkmJihnLmdyYXBoaWM9Zy5ncmFwaGljLmRlc3Ryb3koKSk7Zy5ncmFwaGljfHwoZy5ncmFwaGljPWNbZy5zaGFwZVR5cGVdKGcuc2hhcGVBcmdzKS5hZGQoZy5zZXJpZXMuZ3JvdXApLGcuZGVsYXllZFJlbmRlcmluZz0hMCl9KX0sc2VhcmNoUG9pbnQ6Qyxzb3J0QnlBbmdsZTpmdW5jdGlvbihjLGcpe2Muc29ydChmdW5jdGlvbihjLGwpe3JldHVybiJ1bmRlZmluZWQiIT09dHlwZW9mIGMuYW5nbGUmJihsLmFuZ2xlLWMuYW5nbGUpKmd9KX0sZHJhd0xlZ2VuZFN5bWJvbDpjLmRyYXdSZWN0YW5nbGUsZ2V0Q2VudGVyOnkuZ2V0Q2VudGVyLGdldFN5bWJvbDpDLGRyYXdHcmFwaDpudWxsfSx7aW5pdDpmdW5jdGlvbigpe3EucHJvdG90eXBlLmluaXQuYXBwbHkodGhpcywKYXJndW1lbnRzKTt2YXIgYz10aGlzO2MubmFtZT1MKGMubmFtZSwiU2xpY2UiKTt2YXIgZz1mdW5jdGlvbihkKXtjLnNsaWNlKCJzZWxlY3QiPT09ZC50eXBlKX07QihjLCJzZWxlY3QiLGcpO0IoYywidW5zZWxlY3QiLGcpO3JldHVybiBjfSxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcy55KSYmMDw9dGhpcy55fSxzZXRWaXNpYmxlOmZ1bmN0aW9uKGMsZyl7dmFyIGQ9dGhpcyxsPWQuc2VyaWVzLGs9bC5jaGFydCxmPWwub3B0aW9ucy5pZ25vcmVIaWRkZW5Qb2ludDtnPUwoZyxmKTtjIT09ZC52aXNpYmxlJiYoZC52aXNpYmxlPWQub3B0aW9ucy52aXNpYmxlPWM9InVuZGVmaW5lZCI9PT10eXBlb2YgYz8hZC52aXNpYmxlOmMsbC5vcHRpb25zLmRhdGFbbC5kYXRhLmluZGV4T2YoZCldPWQub3B0aW9ucyxbImdyYXBoaWMiLCJkYXRhTGFiZWwiLCJjb25uZWN0b3IiLCJzaGFkb3dHcm91cCJdLmZvckVhY2goZnVuY3Rpb24oYSl7aWYoZFthXSlkW2FdW2M/InNob3ciOiJoaWRlIl0oITApfSksCmQubGVnZW5kSXRlbSYmay5sZWdlbmQuY29sb3JpemVJdGVtKGQsYyksY3x8ImhvdmVyIiE9PWQuc3RhdGV8fGQuc2V0U3RhdGUoIiIpLGYmJihsLmlzRGlydHk9ITApLGcmJmsucmVkcmF3KCkpfSxzbGljZTpmdW5jdGlvbihjLGcsZCl7dmFyIGw9dGhpcy5zZXJpZXM7bihkLGwuY2hhcnQpO0woZywhMCk7dGhpcy5zbGljZWQ9dGhpcy5vcHRpb25zLnNsaWNlZD1EKGMpP2M6IXRoaXMuc2xpY2VkO2wub3B0aW9ucy5kYXRhW2wuZGF0YS5pbmRleE9mKHRoaXMpXT10aGlzLm9wdGlvbnM7dGhpcy5ncmFwaGljJiZ0aGlzLmdyYXBoaWMuYW5pbWF0ZSh0aGlzLmdldFRyYW5zbGF0ZSgpKTt0aGlzLnNoYWRvd0dyb3VwJiZ0aGlzLnNoYWRvd0dyb3VwLmFuaW1hdGUodGhpcy5nZXRUcmFuc2xhdGUoKSl9LGdldFRyYW5zbGF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNsaWNlZD90aGlzLnNsaWNlZFRyYW5zbGF0aW9uOnt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowfX0saGFsb1BhdGg6ZnVuY3Rpb24oYyl7dmFyIGc9CnRoaXMuc2hhcGVBcmdzO3JldHVybiB0aGlzLnNsaWNlZHx8IXRoaXMudmlzaWJsZT9bXTp0aGlzLnNlcmllcy5jaGFydC5yZW5kZXJlci5zeW1ib2xzLmFyYyhnLngsZy55LGcucitjLGcucitjLHtpbm5lclI6Zy5yLTEsc3RhcnQ6Zy5zdGFydCxlbmQ6Zy5lbmR9KX0sY29ubmVjdG9yU2hhcGVzOntmaXhlZE9mZnNldDpmdW5jdGlvbihjLGcsZCl7dmFyIGw9Zy5icmVha0F0O2c9Zy50b3VjaGluZ1NsaWNlQXQ7cmV0dXJuW1siTSIsYy54LGMueV0sZC5zb2Z0Q29ubmVjdG9yP1siQyIsYy54KygibGVmdCI9PT1jLmFsaWdubWVudD8tNTo1KSxjLnksMipsLngtZy54LDIqbC55LWcueSxsLngsbC55XTpbIkwiLGwueCxsLnldLFsiTCIsZy54LGcueV1dfSxzdHJhaWdodDpmdW5jdGlvbihjLGcpe2c9Zy50b3VjaGluZ1NsaWNlQXQ7cmV0dXJuW1siTSIsYy54LGMueV0sWyJMIixnLngsZy55XV19LGNyb29rZWRMaW5lOmZ1bmN0aW9uKGMsZyxkKXtnPWcudG91Y2hpbmdTbGljZUF0O3ZhciBsPQp0aGlzLnNlcmllcyxrPWwuY2VudGVyWzBdLGY9bC5jaGFydC5wbG90V2lkdGgsYT1sLmNoYXJ0LnBsb3RMZWZ0O2w9Yy5hbGlnbm1lbnQ7dmFyIG09dGhpcy5zaGFwZUFyZ3MucjtkPXYoZC5jcm9va0Rpc3RhbmNlLDEpO2Y9ImxlZnQiPT09bD9rK20rKGYrYS1rLW0pKigxLWQpOmErKGstbSkqZDtkPVsiTCIsZixjLnldO2s9ITA7aWYoImxlZnQiPT09bD9mPmMueHx8ZjxnLng6ZjxjLnh8fGY+Zy54KWs9ITE7Yz1bWyJNIixjLngsYy55XV07ayYmYy5wdXNoKGQpO2MucHVzaChbIkwiLGcueCxnLnldKTtyZXR1cm4gY319LGdldENvbm5lY3RvclBhdGg6ZnVuY3Rpb24oKXt2YXIgYz10aGlzLmxhYmVsUG9zaXRpb24sZz10aGlzLnNlcmllcy5vcHRpb25zLmRhdGFMYWJlbHMsZD1nLmNvbm5lY3RvclNoYXBlLGw9dGhpcy5jb25uZWN0b3JTaGFwZXM7bFtkXSYmKGQ9bFtkXSk7cmV0dXJuIGQuY2FsbCh0aGlzLHt4OmMuZmluYWwueCx5OmMuZmluYWwueSxhbGlnbm1lbnQ6Yy5hbGlnbm1lbnR9LApjLmNvbm5lY3RvclBvc2l0aW9uLGcpfX0pOyIifSk7TyhxLCJwYXJ0cy9EYXRhTGFiZWxzLmpzIixbcVsicGFydHMvR2xvYmFscy5qcyJdLHFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihnLGMpe3ZhciBxPWcubm9vcCx5PWcuc2VyaWVzVHlwZXMsQj1jLmFuaW1PYmplY3QsSD1jLmFycmF5TWF4LEQ9Yy5jbGFtcCxKPWMuZGVmaW5lZCx0PWMuZXh0ZW5kLEc9Yy5maXJlRXZlbnQsTD1jLmZvcm1hdCx2PWMuaXNBcnJheSxLPWMubWVyZ2Usbj1jLm9iamVjdEVhY2gscj1jLnBpY2ssQz1jLnJlbGF0aXZlTGVuZ3RoLEk9Yy5zcGxhdCxwPWMuc3RhYmxlU29ydCxtPWcuU2VyaWVzO2cuZGlzdHJpYnV0ZT1mdW5jdGlvbihjLGwsayl7ZnVuY3Rpb24gZChhLGMpe3JldHVybiBhLnRhcmdldC1jLnRhcmdldH12YXIgYSxtPSEwLG49YyxxPVtdO3ZhciB0PTA7dmFyIHc9bi5yZWR1Y2VkTGVufHxsO2ZvcihhPWMubGVuZ3RoO2EtLTspdCs9Y1thXS5zaXplO2lmKHQ+dyl7cChjLGZ1bmN0aW9uKGEsCmMpe3JldHVybihjLnJhbmt8fDApLShhLnJhbmt8fDApfSk7Zm9yKHQ9YT0wO3Q8PXc7KXQrPWNbYV0uc2l6ZSxhKys7cT1jLnNwbGljZShhLTEsYy5sZW5ndGgpfXAoYyxkKTtmb3IoYz1jLm1hcChmdW5jdGlvbihhKXtyZXR1cm57c2l6ZTphLnNpemUsdGFyZ2V0czpbYS50YXJnZXRdLGFsaWduOnIoYS5hbGlnbiwuNSl9fSk7bTspe2ZvcihhPWMubGVuZ3RoO2EtLTspbT1jW2FdLHQ9KE1hdGgubWluLmFwcGx5KDAsbS50YXJnZXRzKStNYXRoLm1heC5hcHBseSgwLG0udGFyZ2V0cykpLzIsbS5wb3M9RCh0LW0uc2l6ZSptLmFsaWduLDAsbC1tLnNpemUpO2E9Yy5sZW5ndGg7Zm9yKG09ITE7YS0tOykwPGEmJmNbYS0xXS5wb3MrY1thLTFdLnNpemU+Y1thXS5wb3MmJihjW2EtMV0uc2l6ZSs9Y1thXS5zaXplLGNbYS0xXS50YXJnZXRzPWNbYS0xXS50YXJnZXRzLmNvbmNhdChjW2FdLnRhcmdldHMpLGNbYS0xXS5hbGlnbj0uNSxjW2EtMV0ucG9zK2NbYS0xXS5zaXplPmwmJihjW2EtMV0ucG9zPQpsLWNbYS0xXS5zaXplKSxjLnNwbGljZShhLDEpLG09ITApfW4ucHVzaC5hcHBseShuLHEpO2E9MDtjLnNvbWUoZnVuY3Rpb24oYyl7dmFyIGQ9MDtpZihjLnRhcmdldHMuc29tZShmdW5jdGlvbigpe25bYV0ucG9zPWMucG9zK2Q7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgayYmTWF0aC5hYnMoblthXS5wb3MtblthXS50YXJnZXQpPmspcmV0dXJuIG4uc2xpY2UoMCxhKzEpLmZvckVhY2goZnVuY3Rpb24oYSl7ZGVsZXRlIGEucG9zfSksbi5yZWR1Y2VkTGVuPShuLnJlZHVjZWRMZW58fGwpLS4xKmwsbi5yZWR1Y2VkTGVuPi4xKmwmJmcuZGlzdHJpYnV0ZShuLGwsayksITA7ZCs9blthXS5zaXplO2ErK30pKXJldHVybiEwfSk7cChuLGQpfTttLnByb3RvdHlwZS5kcmF3RGF0YUxhYmVscz1mdW5jdGlvbigpe2Z1bmN0aW9uIGMoYSxjKXt2YXIgYj1jLmZpbHRlcjtyZXR1cm4gYj8oYz1iLm9wZXJhdG9yLGE9YVtiLnByb3BlcnR5XSxiPWIudmFsdWUsIj4iPT09YyYmYT5ifHwiPCI9PT0KYyYmYTxifHwiPj0iPT09YyYmYT49Ynx8Ijw9Ij09PWMmJmE8PWJ8fCI9PSI9PT1jJiZhPT1ifHwiPT09Ij09PWMmJmE9PT1iPyEwOiExKTohMH1mdW5jdGlvbiBnKGEsYyl7dmFyIGI9W10sZDtpZih2KGEpJiYhdihjKSliPWEubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBLKGEsYyl9KTtlbHNlIGlmKHYoYykmJiF2KGEpKWI9Yy5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIEsoYSxiKX0pO2Vsc2UgaWYodihhKXx8dihjKSlmb3IoZD1NYXRoLm1heChhLmxlbmd0aCxjLmxlbmd0aCk7ZC0tOyliW2RdPUsoYVtkXSxjW2RdKTtlbHNlIGI9SyhhLGMpO3JldHVybiBifXZhciBrPXRoaXMsZj1rLmNoYXJ0LGE9ay5vcHRpb25zLG09YS5kYXRhTGFiZWxzLHA9ay5wb2ludHMscSx0PWsuaGFzUmVuZGVyZWR8fDAsdz1CKGEuYW5pbWF0aW9uKS5kdXJhdGlvbix5PU1hdGgubWluKHcsMjAwKSxGPSFmLnJlbmRlcmVyLmZvckV4cG9ydCYmcihtLmRlZmVyLDA8eSksQz1mLnJlbmRlcmVyO209ZyhnKGYub3B0aW9ucy5wbG90T3B0aW9ucyYmCmYub3B0aW9ucy5wbG90T3B0aW9ucy5zZXJpZXMmJmYub3B0aW9ucy5wbG90T3B0aW9ucy5zZXJpZXMuZGF0YUxhYmVscyxmLm9wdGlvbnMucGxvdE9wdGlvbnMmJmYub3B0aW9ucy5wbG90T3B0aW9uc1trLnR5cGVdJiZmLm9wdGlvbnMucGxvdE9wdGlvbnNbay50eXBlXS5kYXRhTGFiZWxzKSxtKTtHKHRoaXMsImRyYXdEYXRhTGFiZWxzIik7aWYodihtKXx8bS5lbmFibGVkfHxrLl9oYXNQb2ludExhYmVscyl7dmFyIGU9ay5wbG90R3JvdXAoImRhdGFMYWJlbHNHcm91cCIsImRhdGEtbGFiZWxzIixGJiYhdD8iaGlkZGVuIjoiaW5oZXJpdCIsbS56SW5kZXh8fDYpO0YmJihlLmF0dHIoe29wYWNpdHk6K3R9KSx0fHxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGI9ay5kYXRhTGFiZWxzR3JvdXA7YiYmKGsudmlzaWJsZSYmZS5zaG93KCEwKSxiW2EuYW5pbWF0aW9uPyJhbmltYXRlIjoiYXR0ciJdKHtvcGFjaXR5OjF9LHtkdXJhdGlvbjp5fSkpfSx3LXkpKTtwLmZvckVhY2goZnVuY3Rpb24oYil7cT0KSShnKG0sYi5kbE9wdGlvbnN8fGIub3B0aW9ucyYmYi5vcHRpb25zLmRhdGFMYWJlbHMpKTtxLmZvckVhY2goZnVuY3Rpb24oZCxnKXt2YXIgaD1kLmVuYWJsZWQmJighYi5pc051bGx8fGIuZGF0YUxhYmVsT25OdWxsKSYmYyhiLGQpLGw9Yi5kYXRhTGFiZWxzP2IuZGF0YUxhYmVsc1tnXTpiLmRhdGFMYWJlbCxtPWIuY29ubmVjdG9ycz9iLmNvbm5lY3RvcnNbZ106Yi5jb25uZWN0b3IscD1yKGQuZGlzdGFuY2UsYi5sYWJlbERpc3RhbmNlKSxxPSFsO2lmKGgpe3ZhciB1PWIuZ2V0TGFiZWxDb25maWcoKTt2YXIgdz1yKGRbYi5mb3JtYXRQcmVmaXgrIkZvcm1hdCJdLGQuZm9ybWF0KTt1PUoodyk/TCh3LHUsZik6KGRbYi5mb3JtYXRQcmVmaXgrIkZvcm1hdHRlciJdfHxkLmZvcm1hdHRlcikuY2FsbCh1LGQpO3c9ZC5zdHlsZTt2YXIgdD1kLnJvdGF0aW9uO2Yuc3R5bGVkTW9kZXx8KHcuY29sb3I9cihkLmNvbG9yLHcuY29sb3Isay5jb2xvciwiIzAwMDAwMCIpLCJjb250cmFzdCI9PT0Kdy5jb2xvcj8oYi5jb250cmFzdENvbG9yPUMuZ2V0Q29udHJhc3QoYi5jb2xvcnx8ay5jb2xvciksdy5jb2xvcj0hSihwKSYmZC5pbnNpZGV8fDA+cHx8YS5zdGFja2luZz9iLmNvbnRyYXN0Q29sb3I6IiMwMDAwMDAiKTpkZWxldGUgYi5jb250cmFzdENvbG9yLGEuY3Vyc29yJiYody5jdXJzb3I9YS5jdXJzb3IpKTt2YXIgQT17cjpkLmJvcmRlclJhZGl1c3x8MCxyb3RhdGlvbjp0LHBhZGRpbmc6ZC5wYWRkaW5nLHpJbmRleDoxfTtmLnN0eWxlZE1vZGV8fChBLmZpbGw9ZC5iYWNrZ3JvdW5kQ29sb3IsQS5zdHJva2U9ZC5ib3JkZXJDb2xvcixBWyJzdHJva2Utd2lkdGgiXT1kLmJvcmRlcldpZHRoKTtuKEEsZnVuY3Rpb24oYSxiKXsidW5kZWZpbmVkIj09PXR5cGVvZiBhJiZkZWxldGUgQVtiXX0pfSFsfHxoJiZKKHUpP2gmJkoodSkmJihsP0EudGV4dD11OihiLmRhdGFMYWJlbHM9Yi5kYXRhTGFiZWxzfHxbXSxsPWIuZGF0YUxhYmVsc1tnXT10P0MudGV4dCh1LDAsLTk5OTksZC51c2VIVE1MKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1kYXRhLWxhYmVsIik6CkMubGFiZWwodSwwLC05OTk5LGQuc2hhcGUsbnVsbCxudWxsLGQudXNlSFRNTCxudWxsLCJkYXRhLWxhYmVsIiksZ3x8KGIuZGF0YUxhYmVsPWwpLGwuYWRkQ2xhc3MoIiBoaWdoY2hhcnRzLWRhdGEtbGFiZWwtY29sb3ItIitiLmNvbG9ySW5kZXgrIiAiKyhkLmNsYXNzTmFtZXx8IiIpKyhkLnVzZUhUTUw/IiBoaWdoY2hhcnRzLXRyYWNrZXIiOiIiKSkpLGwub3B0aW9ucz1kLGwuYXR0cihBKSxmLnN0eWxlZE1vZGV8fGwuY3NzKHcpLnNoYWRvdyhkLnNoYWRvdyksbC5hZGRlZHx8bC5hZGQoZSksZC50ZXh0UGF0aCYmIWQudXNlSFRNTCYmKGwuc2V0VGV4dFBhdGgoYi5nZXREYXRhTGFiZWxQYXRoJiZiLmdldERhdGFMYWJlbFBhdGgobCl8fGIuZ3JhcGhpYyxkLnRleHRQYXRoKSxiLmRhdGFMYWJlbFBhdGgmJiFkLnRleHRQYXRoLmVuYWJsZWQmJihiLmRhdGFMYWJlbFBhdGg9Yi5kYXRhTGFiZWxQYXRoLmRlc3Ryb3koKSkpLGsuYWxpZ25EYXRhTGFiZWwoYixsLGQsbnVsbCxxKSk6KGIuZGF0YUxhYmVsPQpiLmRhdGFMYWJlbCYmYi5kYXRhTGFiZWwuZGVzdHJveSgpLGIuZGF0YUxhYmVscyYmKDE9PT1iLmRhdGFMYWJlbHMubGVuZ3RoP2RlbGV0ZSBiLmRhdGFMYWJlbHM6ZGVsZXRlIGIuZGF0YUxhYmVsc1tnXSksZ3x8ZGVsZXRlIGIuZGF0YUxhYmVsLG0mJihiLmNvbm5lY3Rvcj1iLmNvbm5lY3Rvci5kZXN0cm95KCksYi5jb25uZWN0b3JzJiYoMT09PWIuY29ubmVjdG9ycy5sZW5ndGg/ZGVsZXRlIGIuY29ubmVjdG9yczpkZWxldGUgYi5jb25uZWN0b3JzW2ddKSkpfSl9KX1HKHRoaXMsImFmdGVyRHJhd0RhdGFMYWJlbHMiKX07bS5wcm90b3R5cGUuYWxpZ25EYXRhTGFiZWw9ZnVuY3Rpb24oYyxnLGssZixhKXt2YXIgZD10aGlzLGw9dGhpcy5jaGFydCxtPXRoaXMuaXNDYXJ0ZXNpYW4mJmwuaW52ZXJ0ZWQsbj10aGlzLmVuYWJsZWREYXRhU29ydGluZyxwPXIoYy5kbEJveCYmYy5kbEJveC5jZW50ZXJYLGMucGxvdFgsLTk5OTkpLHE9cihjLnBsb3RZLC05OTk5KSx2PWcuZ2V0QkJveCgpLAp5PWsucm90YXRpb24sZT1rLmFsaWduLGI9bC5pc0luc2lkZVBsb3QocCxNYXRoLnJvdW5kKHEpLG0pLGg9Imp1c3RpZnkiPT09cihrLm92ZXJmbG93LG4/Im5vbmUiOiJqdXN0aWZ5Iiksej10aGlzLnZpc2libGUmJiExIT09Yy52aXNpYmxlJiYoYy5zZXJpZXMuZm9yY2VETHx8biYmIWh8fGJ8fGsuaW5zaWRlJiZmJiZsLmlzSW5zaWRlUGxvdChwLG0/Zi54KzE6Zi55K2YuaGVpZ2h0LTEsbSkpO3ZhciB4PWZ1bmN0aW9uKGUpe24mJmQueEF4aXMmJiFoJiZkLnNldERhdGFMYWJlbFN0YXJ0UG9zKGMsZyxhLGIsZSl9O2lmKHope3ZhciBDPWwucmVuZGVyZXIuZm9udE1ldHJpY3MobC5zdHlsZWRNb2RlP3ZvaWQgMDprLnN0eWxlLmZvbnRTaXplLGcpLmI7Zj10KHt4Om0/dGhpcy55QXhpcy5sZW4tcTpwLHk6TWF0aC5yb3VuZChtP3RoaXMueEF4aXMubGVuLXA6cSksd2lkdGg6MCxoZWlnaHQ6MH0sZik7dChrLHt3aWR0aDp2LndpZHRoLGhlaWdodDp2LmhlaWdodH0pO3k/KGg9ITEscD0KbC5yZW5kZXJlci5yb3RDb3JyKEMseSkscD17eDpmLngrKGsueHx8MCkrZi53aWR0aC8yK3AueCx5OmYueSsoay55fHwwKSt7dG9wOjAsbWlkZGxlOi41LGJvdHRvbToxfVtrLnZlcnRpY2FsQWxpZ25dKmYuaGVpZ2h0fSx4KHApLGdbYT8iYXR0ciI6ImFuaW1hdGUiXShwKS5hdHRyKHthbGlnbjplfSkseD0oeSs3MjApJTM2MCx4PTE4MDx4JiYzNjA+eCwibGVmdCI9PT1lP3AueS09eD92LmhlaWdodDowOiJjZW50ZXIiPT09ZT8ocC54LT12LndpZHRoLzIscC55LT12LmhlaWdodC8yKToicmlnaHQiPT09ZSYmKHAueC09di53aWR0aCxwLnktPXg/MDp2LmhlaWdodCksZy5wbGFjZWQ9ITAsZy5hbGlnbkF0dHI9cCk6KHgoZiksZy5hbGlnbihrLG51bGwsZikscD1nLmFsaWduQXR0cik7aCYmMDw9Zi5oZWlnaHQ/dGhpcy5qdXN0aWZ5RGF0YUxhYmVsKGcsayxwLHYsZixhKTpyKGsuY3JvcCwhMCkmJih6PWwuaXNJbnNpZGVQbG90KHAueCxwLnkpJiZsLmlzSW5zaWRlUGxvdChwLngrdi53aWR0aCwKcC55K3YuaGVpZ2h0KSk7aWYoay5zaGFwZSYmIXkpZ1thPyJhdHRyIjoiYW5pbWF0ZSJdKHthbmNob3JYOm0/bC5wbG90V2lkdGgtYy5wbG90WTpjLnBsb3RYLGFuY2hvclk6bT9sLnBsb3RIZWlnaHQtYy5wbG90WDpjLnBsb3RZfSl9YSYmbiYmKGcucGxhY2VkPSExKTt6fHxuJiYhaHx8KGcuaGlkZSghMCksZy5wbGFjZWQ9ITEpfTttLnByb3RvdHlwZS5zZXREYXRhTGFiZWxTdGFydFBvcz1mdW5jdGlvbihjLGcsayxmLGEpe3ZhciBkPXRoaXMuY2hhcnQsbD1kLmludmVydGVkLG09dGhpcy54QXhpcyxuPW0ucmV2ZXJzZWQscD1sP2cuaGVpZ2h0LzI6Zy53aWR0aC8yO2M9KGM9Yy5wb2ludFdpZHRoKT9jLzI6MDttPWw/YS54Om4/LXAtYzptLndpZHRoLXArYzthPWw/bj90aGlzLnlBeGlzLmhlaWdodC1wK2M6LXAtYzphLnk7Zy5zdGFydFhQb3M9bTtnLnN0YXJ0WVBvcz1hO2Y/ImhpZGRlbiI9PT1nLnZpc2liaWxpdHkmJihnLnNob3coKSxnLmF0dHIoe29wYWNpdHk6MH0pLmFuaW1hdGUoe29wYWNpdHk6MX0pKToKZy5hdHRyKHtvcGFjaXR5OjF9KS5hbmltYXRlKHtvcGFjaXR5OjB9LHZvaWQgMCxnLmhpZGUpO2QuaGFzUmVuZGVyZWQmJihrJiZnLmF0dHIoe3g6Zy5zdGFydFhQb3MseTpnLnN0YXJ0WVBvc30pLGcucGxhY2VkPSEwKX07bS5wcm90b3R5cGUuanVzdGlmeURhdGFMYWJlbD1mdW5jdGlvbihjLGcsayxmLGEsbSl7dmFyIGQ9dGhpcy5jaGFydCxsPWcuYWxpZ24sbj1nLnZlcnRpY2FsQWxpZ24scD1jLmJveD8wOmMucGFkZGluZ3x8MCxxPWcueDtxPXZvaWQgMD09PXE/MDpxO3ZhciByPWcueTt2YXIgdD12b2lkIDA9PT1yPzA6cjtyPWsueCtwO2lmKDA+cil7InJpZ2h0Ij09PWwmJjA8PXE/KGcuYWxpZ249ImxlZnQiLGcuaW5zaWRlPSEwKTpxLT1yO3ZhciBlPSEwfXI9ay54K2Yud2lkdGgtcDtyPmQucGxvdFdpZHRoJiYoImxlZnQiPT09bCYmMD49cT8oZy5hbGlnbj0icmlnaHQiLGcuaW5zaWRlPSEwKTpxKz1kLnBsb3RXaWR0aC1yLGU9ITApO3I9ay55K3A7MD5yJiYoImJvdHRvbSI9PT0KbiYmMDw9dD8oZy52ZXJ0aWNhbEFsaWduPSJ0b3AiLGcuaW5zaWRlPSEwKTp0LT1yLGU9ITApO3I9ay55K2YuaGVpZ2h0LXA7cj5kLnBsb3RIZWlnaHQmJigidG9wIj09PW4mJjA+PXQ/KGcudmVydGljYWxBbGlnbj0iYm90dG9tIixnLmluc2lkZT0hMCk6dCs9ZC5wbG90SGVpZ2h0LXIsZT0hMCk7ZSYmKGcueD1xLGcueT10LGMucGxhY2VkPSFtLGMuYWxpZ24oZyx2b2lkIDAsYSkpO3JldHVybiBlfTt5LnBpZSYmKHkucGllLnByb3RvdHlwZS5kYXRhTGFiZWxQb3NpdGlvbmVycz17cmFkaWFsRGlzdHJpYnV0aW9uWTpmdW5jdGlvbihjKXtyZXR1cm4gYy50b3ArYy5kaXN0cmlidXRlQm94LnBvc30scmFkaWFsRGlzdHJpYnV0aW9uWDpmdW5jdGlvbihjLGcsayxmKXtyZXR1cm4gYy5nZXRYKGs8Zy50b3ArMnx8az5nLmJvdHRvbS0yP2Y6ayxnLmhhbGYsZyl9LGp1c3RpZnk6ZnVuY3Rpb24oYyxnLGspe3JldHVybiBrWzBdKyhjLmhhbGY/LTE6MSkqKGcrYy5sYWJlbERpc3RhbmNlKX0sCmFsaWduVG9QbG90RWRnZXM6ZnVuY3Rpb24oYyxnLGssZil7Yz1jLmdldEJCb3goKS53aWR0aDtyZXR1cm4gZz9jK2Y6ay1jLWZ9LGFsaWduVG9Db25uZWN0b3JzOmZ1bmN0aW9uKGMsZyxrLGYpe3ZhciBhPTAsZDtjLmZvckVhY2goZnVuY3Rpb24oYyl7ZD1jLmRhdGFMYWJlbC5nZXRCQm94KCkud2lkdGg7ZD5hJiYoYT1kKX0pO3JldHVybiBnP2ErZjprLWEtZn19LHkucGllLnByb3RvdHlwZS5kcmF3RGF0YUxhYmVscz1mdW5jdGlvbigpe3ZhciBjPXRoaXMsbD1jLmRhdGEsayxmPWMuY2hhcnQsYT1jLm9wdGlvbnMuZGF0YUxhYmVsc3x8e30sbj1hLmNvbm5lY3RvclBhZGRpbmcscCxxPWYucGxvdFdpZHRoLHQ9Zi5wbG90SGVpZ2h0LHc9Zi5wbG90TGVmdCx2PU1hdGgucm91bmQoZi5jaGFydFdpZHRoLzMpLHksQz1jLmNlbnRlcixlPUNbMl0vMixiPUNbMV0saCx6LHgsQixEPVtbXSxbXV0sRyxJLEwsTyxVPVswLDAsMCwwXSxSPWMuZGF0YUxhYmVsUG9zaXRpb25lcnMsVDtjLnZpc2libGUmJgooYS5lbmFibGVkfHxjLl9oYXNQb2ludExhYmVscykmJihsLmZvckVhY2goZnVuY3Rpb24oYSl7YS5kYXRhTGFiZWwmJmEudmlzaWJsZSYmYS5kYXRhTGFiZWwuc2hvcnRlbmVkJiYoYS5kYXRhTGFiZWwuYXR0cih7d2lkdGg6ImF1dG8ifSkuY3NzKHt3aWR0aDoiYXV0byIsdGV4dE92ZXJmbG93OiJjbGlwIn0pLGEuZGF0YUxhYmVsLnNob3J0ZW5lZD0hMSl9KSxtLnByb3RvdHlwZS5kcmF3RGF0YUxhYmVscy5hcHBseShjKSxsLmZvckVhY2goZnVuY3Rpb24oYil7Yi5kYXRhTGFiZWwmJihiLnZpc2libGU/KERbYi5oYWxmXS5wdXNoKGIpLGIuZGF0YUxhYmVsLl9wb3M9bnVsbCwhSihhLnN0eWxlLndpZHRoKSYmIUooYi5vcHRpb25zLmRhdGFMYWJlbHMmJmIub3B0aW9ucy5kYXRhTGFiZWxzLnN0eWxlJiZiLm9wdGlvbnMuZGF0YUxhYmVscy5zdHlsZS53aWR0aCkmJmIuZGF0YUxhYmVsLmdldEJCb3goKS53aWR0aD52JiYoYi5kYXRhTGFiZWwuY3NzKHt3aWR0aDpNYXRoLnJvdW5kKC43Kgp2KSsicHgifSksYi5kYXRhTGFiZWwuc2hvcnRlbmVkPSEwKSk6KGIuZGF0YUxhYmVsPWIuZGF0YUxhYmVsLmRlc3Ryb3koKSxiLmRhdGFMYWJlbHMmJjE9PT1iLmRhdGFMYWJlbHMubGVuZ3RoJiZkZWxldGUgYi5kYXRhTGFiZWxzKSl9KSxELmZvckVhY2goZnVuY3Rpb24oZCxsKXt2YXIgbT1kLmxlbmd0aCxwPVtdLHU7aWYobSl7Yy5zb3J0QnlBbmdsZShkLGwtLjUpO2lmKDA8Yy5tYXhMYWJlbERpc3RhbmNlKXt2YXIgdj1NYXRoLm1heCgwLGItZS1jLm1heExhYmVsRGlzdGFuY2UpO3ZhciBBPU1hdGgubWluKGIrZStjLm1heExhYmVsRGlzdGFuY2UsZi5wbG90SGVpZ2h0KTtkLmZvckVhY2goZnVuY3Rpb24oYSl7MDxhLmxhYmVsRGlzdGFuY2UmJmEuZGF0YUxhYmVsJiYoYS50b3A9TWF0aC5tYXgoMCxiLWUtYS5sYWJlbERpc3RhbmNlKSxhLmJvdHRvbT1NYXRoLm1pbihiK2UrYS5sYWJlbERpc3RhbmNlLGYucGxvdEhlaWdodCksdT1hLmRhdGFMYWJlbC5nZXRCQm94KCkuaGVpZ2h0fHwKMjEsYS5kaXN0cmlidXRlQm94PXt0YXJnZXQ6YS5sYWJlbFBvc2l0aW9uLm5hdHVyYWwueS1hLnRvcCt1LzIsc2l6ZTp1LHJhbms6YS55fSxwLnB1c2goYS5kaXN0cmlidXRlQm94KSl9KTt2PUErdS12O2cuZGlzdHJpYnV0ZShwLHYsdi81KX1mb3IoTz0wO088bTtPKyspe2s9ZFtPXTt4PWsubGFiZWxQb3NpdGlvbjtoPWsuZGF0YUxhYmVsO0w9ITE9PT1rLnZpc2libGU/ImhpZGRlbiI6ImluaGVyaXQiO0k9dj14Lm5hdHVyYWwueTtwJiZKKGsuZGlzdHJpYnV0ZUJveCkmJigidW5kZWZpbmVkIj09PXR5cGVvZiBrLmRpc3RyaWJ1dGVCb3gucG9zP0w9ImhpZGRlbiI6KEI9ay5kaXN0cmlidXRlQm94LnNpemUsST1SLnJhZGlhbERpc3RyaWJ1dGlvblkoaykpKTtkZWxldGUgay5wb3NpdGlvbkluZGV4O2lmKGEuanVzdGlmeSlHPVIuanVzdGlmeShrLGUsQyk7ZWxzZSBzd2l0Y2goYS5hbGlnblRvKXtjYXNlICJjb25uZWN0b3JzIjpHPVIuYWxpZ25Ub0Nvbm5lY3RvcnMoZCxsLHEsdyk7CmJyZWFrO2Nhc2UgInBsb3RFZGdlcyI6Rz1SLmFsaWduVG9QbG90RWRnZXMoaCxsLHEsdyk7YnJlYWs7ZGVmYXVsdDpHPVIucmFkaWFsRGlzdHJpYnV0aW9uWChjLGssSSx2KX1oLl9hdHRyPXt2aXNpYmlsaXR5OkwsYWxpZ246eC5hbGlnbm1lbnR9O1Q9ay5vcHRpb25zLmRhdGFMYWJlbHN8fHt9O2guX3Bvcz17eDpHK3IoVC54LGEueCkrKHtsZWZ0Om4scmlnaHQ6LW59W3guYWxpZ25tZW50XXx8MCkseTpJK3IoVC55LGEueSktMTB9O3guZmluYWwueD1HO3guZmluYWwueT1JO3IoYS5jcm9wLCEwKSYmKHo9aC5nZXRCQm94KCkud2lkdGgsdj1udWxsLEctejxuJiYxPT09bD8odj1NYXRoLnJvdW5kKHotRytuKSxVWzNdPU1hdGgubWF4KHYsVVszXSkpOkcrej5xLW4mJjA9PT1sJiYodj1NYXRoLnJvdW5kKEcrei1xK24pLFVbMV09TWF0aC5tYXgodixVWzFdKSksMD5JLUIvMj9VWzBdPU1hdGgubWF4KE1hdGgucm91bmQoLUkrQi8yKSxVWzBdKTpJK0IvMj50JiYoVVsyXT1NYXRoLm1heChNYXRoLnJvdW5kKEkrCkIvMi10KSxVWzJdKSksaC5zaWRlT3ZlcmZsb3c9dil9fX0pLDA9PT1IKFUpfHx0aGlzLnZlcmlmeURhdGFMYWJlbE92ZXJmbG93KFUpKSYmKHRoaXMucGxhY2VEYXRhTGFiZWxzKCksdGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihiKXtUPUsoYSxiLm9wdGlvbnMuZGF0YUxhYmVscyk7aWYocD1yKFQuY29ubmVjdG9yV2lkdGgsMSkpe3ZhciBkO3k9Yi5jb25uZWN0b3I7aWYoKGg9Yi5kYXRhTGFiZWwpJiZoLl9wb3MmJmIudmlzaWJsZSYmMDxiLmxhYmVsRGlzdGFuY2Upe0w9aC5fYXR0ci52aXNpYmlsaXR5O2lmKGQ9IXkpYi5jb25uZWN0b3I9eT1mLnJlbmRlcmVyLnBhdGgoKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1kYXRhLWxhYmVsLWNvbm5lY3RvciAgaGlnaGNoYXJ0cy1jb2xvci0iK2IuY29sb3JJbmRleCsoYi5jbGFzc05hbWU/IiAiK2IuY2xhc3NOYW1lOiIiKSkuYWRkKGMuZGF0YUxhYmVsc0dyb3VwKSxmLnN0eWxlZE1vZGV8fHkuYXR0cih7InN0cm9rZS13aWR0aCI6cCwKc3Ryb2tlOlQuY29ubmVjdG9yQ29sb3J8fGIuY29sb3J8fCIjNjY2NjY2In0pO3lbZD8iYXR0ciI6ImFuaW1hdGUiXSh7ZDpiLmdldENvbm5lY3RvclBhdGgoKX0pO3kuYXR0cigidmlzaWJpbGl0eSIsTCl9ZWxzZSB5JiYoYi5jb25uZWN0b3I9eS5kZXN0cm95KCkpfX0pKX0seS5waWUucHJvdG90eXBlLnBsYWNlRGF0YUxhYmVscz1mdW5jdGlvbigpe3RoaXMucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIGQ9Yy5kYXRhTGFiZWwsZztkJiZjLnZpc2libGUmJigoZz1kLl9wb3MpPyhkLnNpZGVPdmVyZmxvdyYmKGQuX2F0dHIud2lkdGg9TWF0aC5tYXgoZC5nZXRCQm94KCkud2lkdGgtZC5zaWRlT3ZlcmZsb3csMCksZC5jc3Moe3dpZHRoOmQuX2F0dHIud2lkdGgrInB4Iix0ZXh0T3ZlcmZsb3c6KHRoaXMub3B0aW9ucy5kYXRhTGFiZWxzLnN0eWxlfHx7fSkudGV4dE92ZXJmbG93fHwiZWxsaXBzaXMifSksZC5zaG9ydGVuZWQ9ITApLGQuYXR0cihkLl9hdHRyKSxkW2QubW92ZWQ/CiJhbmltYXRlIjoiYXR0ciJdKGcpLGQubW92ZWQ9ITApOmQmJmQuYXR0cih7eTotOTk5OX0pKTtkZWxldGUgYy5kaXN0cmlidXRlQm94fSx0aGlzKX0seS5waWUucHJvdG90eXBlLmFsaWduRGF0YUxhYmVsPXEseS5waWUucHJvdG90eXBlLnZlcmlmeURhdGFMYWJlbE92ZXJmbG93PWZ1bmN0aW9uKGMpe3ZhciBkPXRoaXMuY2VudGVyLGc9dGhpcy5vcHRpb25zLGY9Zy5jZW50ZXIsYT1nLm1pblNpemV8fDgwLG09bnVsbCE9PWcuc2l6ZTtpZighbSl7aWYobnVsbCE9PWZbMF0pdmFyIG49TWF0aC5tYXgoZFsyXS1NYXRoLm1heChjWzFdLGNbM10pLGEpO2Vsc2Ugbj1NYXRoLm1heChkWzJdLWNbMV0tY1szXSxhKSxkWzBdKz0oY1szXS1jWzFdKS8yO251bGwhPT1mWzFdP249RChuLGEsZFsyXS1NYXRoLm1heChjWzBdLGNbMl0pKToobj1EKG4sYSxkWzJdLWNbMF0tY1syXSksZFsxXSs9KGNbMF0tY1syXSkvMik7bjxkWzJdPyhkWzJdPW4sZFszXT1NYXRoLm1pbihDKGcuaW5uZXJTaXplfHwKMCxuKSxuKSx0aGlzLnRyYW5zbGF0ZShkKSx0aGlzLmRyYXdEYXRhTGFiZWxzJiZ0aGlzLmRyYXdEYXRhTGFiZWxzKCkpOm09ITB9cmV0dXJuIG19KTt5LmNvbHVtbiYmKHkuY29sdW1uLnByb3RvdHlwZS5hbGlnbkRhdGFMYWJlbD1mdW5jdGlvbihjLGcsayxmLGEpe3ZhciBkPXRoaXMuY2hhcnQuaW52ZXJ0ZWQsbD1jLnNlcmllcyxuPWMuZGxCb3h8fGMuc2hhcGVBcmdzLHA9cihjLmJlbG93LGMucGxvdFk+cih0aGlzLnRyYW5zbGF0ZWRUaHJlc2hvbGQsbC55QXhpcy5sZW4pKSxxPXIoay5pbnNpZGUsISF0aGlzLm9wdGlvbnMuc3RhY2tpbmcpO24mJihmPUsobiksMD5mLnkmJihmLmhlaWdodCs9Zi55LGYueT0wKSxuPWYueStmLmhlaWdodC1sLnlBeGlzLmxlbiwwPG4mJm48Zi5oZWlnaHQmJihmLmhlaWdodC09biksZCYmKGY9e3g6bC55QXhpcy5sZW4tZi55LWYuaGVpZ2h0LHk6bC54QXhpcy5sZW4tZi54LWYud2lkdGgsd2lkdGg6Zi5oZWlnaHQsaGVpZ2h0OmYud2lkdGh9KSxxfHwKKGQ/KGYueCs9cD8wOmYud2lkdGgsZi53aWR0aD0wKTooZi55Kz1wP2YuaGVpZ2h0OjAsZi5oZWlnaHQ9MCkpKTtrLmFsaWduPXIoay5hbGlnbiwhZHx8cT8iY2VudGVyIjpwPyJyaWdodCI6ImxlZnQiKTtrLnZlcnRpY2FsQWxpZ249cihrLnZlcnRpY2FsQWxpZ24sZHx8cT8ibWlkZGxlIjpwPyJ0b3AiOiJib3R0b20iKTttLnByb3RvdHlwZS5hbGlnbkRhdGFMYWJlbC5jYWxsKHRoaXMsYyxnLGssZixhKTtrLmluc2lkZSYmYy5jb250cmFzdENvbG9yJiZnLmNzcyh7Y29sb3I6Yy5jb250cmFzdENvbG9yfSl9KX0pO08ocSwibW9kdWxlcy9vdmVybGFwcGluZy1kYXRhbGFiZWxzLnNyYy5qcyIsW3FbInBhcnRzL0NoYXJ0LmpzIl0scVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGcsYyl7dmFyIHE9Yy5hZGRFdmVudCx5PWMuZmlyZUV2ZW50LEI9Yy5pc0FycmF5LEg9Yy5pc051bWJlcixEPWMub2JqZWN0RWFjaCxKPWMucGljaztxKGcsInJlbmRlciIsZnVuY3Rpb24oKXt2YXIgYz0KW107KHRoaXMubGFiZWxDb2xsZWN0b3JzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihnKXtjPWMuY29uY2F0KGcoKSl9KTsodGhpcy55QXhpc3x8W10pLmZvckVhY2goZnVuY3Rpb24oZyl7Zy5zdGFja2luZyYmZy5vcHRpb25zLnN0YWNrTGFiZWxzJiYhZy5vcHRpb25zLnN0YWNrTGFiZWxzLmFsbG93T3ZlcmxhcCYmRChnLnN0YWNraW5nLnN0YWNrcyxmdW5jdGlvbihnKXtEKGcsZnVuY3Rpb24oZyl7Yy5wdXNoKGcubGFiZWwpfSl9KX0pOyh0aGlzLnNlcmllc3x8W10pLmZvckVhY2goZnVuY3Rpb24oZyl7dmFyIHE9Zy5vcHRpb25zLmRhdGFMYWJlbHM7Zy52aXNpYmxlJiYoITEhPT1xLmVuYWJsZWR8fGcuX2hhc1BvaW50TGFiZWxzKSYmKGcubm9kZXN8fGcucG9pbnRzKS5mb3JFYWNoKGZ1bmN0aW9uKGcpe2cudmlzaWJsZSYmKEIoZy5kYXRhTGFiZWxzKT9nLmRhdGFMYWJlbHM6Zy5kYXRhTGFiZWw/W2cuZGF0YUxhYmVsXTpbXSkuZm9yRWFjaChmdW5jdGlvbihxKXt2YXIgbj1xLm9wdGlvbnM7CnEubGFiZWxyYW5rPUoobi5sYWJlbHJhbmssZy5sYWJlbHJhbmssZy5zaGFwZUFyZ3MmJmcuc2hhcGVBcmdzLmhlaWdodCk7bi5hbGxvd092ZXJsYXB8fGMucHVzaChxKX0pfSl9KTt0aGlzLmhpZGVPdmVybGFwcGluZ0xhYmVscyhjKX0pO2cucHJvdG90eXBlLmhpZGVPdmVybGFwcGluZ0xhYmVscz1mdW5jdGlvbihjKXt2YXIgZz10aGlzLHE9Yy5sZW5ndGgsdD1nLnJlbmRlcmVyLEIsbixyLEM9ITE7dmFyIEQ9ZnVuY3Rpb24oYyl7dmFyIGQsZz1jLmJveD8wOmMucGFkZGluZ3x8MCxmPWQ9MCxhO2lmKGMmJighYy5hbGlnbkF0dHJ8fGMucGxhY2VkKSl7dmFyIG09Yy5hbGlnbkF0dHJ8fHt4OmMuYXR0cigieCIpLHk6Yy5hdHRyKCJ5Iil9O3ZhciBuPWMucGFyZW50R3JvdXA7Yy53aWR0aHx8KGQ9Yy5nZXRCQm94KCksYy53aWR0aD1kLndpZHRoLGMuaGVpZ2h0PWQuaGVpZ2h0LGQ9dC5mb250TWV0cmljcyhudWxsLGMuZWxlbWVudCkuaCk7dmFyIHA9Yy53aWR0aC0yKmc7KGE9e2xlZnQ6IjAiLApjZW50ZXI6IjAuNSIscmlnaHQ6IjEifVtjLmFsaWduVmFsdWVdKT9mPSthKnA6SChjLngpJiZNYXRoLnJvdW5kKGMueCkhPT1jLnRyYW5zbGF0ZVgmJihmPWMueC1jLnRyYW5zbGF0ZVgpO3JldHVybnt4Om0ueCsobi50cmFuc2xhdGVYfHwwKStnLWYseTptLnkrKG4udHJhbnNsYXRlWXx8MCkrZy1kLHdpZHRoOmMud2lkdGgtMipnLGhlaWdodDpjLmhlaWdodC0yKmd9fX07Zm9yKG49MDtuPHE7bisrKWlmKEI9Y1tuXSlCLm9sZE9wYWNpdHk9Qi5vcGFjaXR5LEIubmV3T3BhY2l0eT0xLEIuYWJzb2x1dGVCb3g9RChCKTtjLnNvcnQoZnVuY3Rpb24oYyxnKXtyZXR1cm4oZy5sYWJlbHJhbmt8fDApLShjLmxhYmVscmFua3x8MCl9KTtmb3Iobj0wO248cTtuKyspe3ZhciBwPShEPWNbbl0pJiZELmFic29sdXRlQm94O2ZvcihCPW4rMTtCPHE7KytCKXt2YXIgbT0ocj1jW0JdKSYmci5hYnNvbHV0ZUJveDshcHx8IW18fEQ9PT1yfHwwPT09RC5uZXdPcGFjaXR5fHwwPT09ci5uZXdPcGFjaXR5fHwKbS54PnAueCtwLndpZHRofHxtLngrbS53aWR0aDxwLnh8fG0ueT5wLnkrcC5oZWlnaHR8fG0ueSttLmhlaWdodDxwLnl8fCgoRC5sYWJlbHJhbms8ci5sYWJlbHJhbms/RDpyKS5uZXdPcGFjaXR5PTApfX1jLmZvckVhY2goZnVuY3Rpb24oYyl7aWYoYyl7dmFyIGQ9Yy5uZXdPcGFjaXR5O2Mub2xkT3BhY2l0eSE9PWQmJihjLmFsaWduQXR0ciYmYy5wbGFjZWQ/KGNbZD8icmVtb3ZlQ2xhc3MiOiJhZGRDbGFzcyJdKCJoaWdoY2hhcnRzLWRhdGEtbGFiZWwtaGlkZGVuIiksQz0hMCxjLmFsaWduQXR0ci5vcGFjaXR5PWQsY1tjLmlzT2xkPyJhbmltYXRlIjoiYXR0ciJdKGMuYWxpZ25BdHRyLG51bGwsZnVuY3Rpb24oKXtnLnN0eWxlZE1vZGV8fGMuY3NzKHtwb2ludGVyRXZlbnRzOmQ/ImF1dG8iOiJub25lIn0pO2MudmlzaWJpbGl0eT1kPyJpbmhlcml0IjoiaGlkZGVuIjtjLnBsYWNlZD0hIWR9KSx5KGcsImFmdGVySGlkZU92ZXJsYXBwaW5nTGFiZWwiKSk6Yy5hdHRyKHtvcGFjaXR5OmR9KSk7CmMuaXNPbGQ9ITB9fSk7QyYmeShnLCJhZnRlckhpZGVBbGxPdmVybGFwcGluZ0xhYmVscyIpfX0pO08ocSwicGFydHMvSW50ZXJhY3Rpb24uanMiLFtxWyJwYXJ0cy9DaGFydC5qcyJdLHFbInBhcnRzL0dsb2JhbHMuanMiXSxxWyJwYXJ0cy9MZWdlbmQuanMiXSxxWyJwYXJ0cy9PcHRpb25zLmpzIl0scVsicGFydHMvUG9pbnQuanMiXSxxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyxjLHEseSxCLEgpe3ZhciBEPXkuZGVmYXVsdE9wdGlvbnMsSj1ILmFkZEV2ZW50LHQ9SC5jcmVhdGVFbGVtZW50LEc9SC5jc3MsTD1ILmRlZmluZWQsdj1ILmV4dGVuZCxLPUguZmlyZUV2ZW50LG49SC5pc0FycmF5LHI9SC5pc0Z1bmN0aW9uLEM9SC5pc051bWJlcixJPUguaXNPYmplY3QscD1ILm1lcmdlLG09SC5vYmplY3RFYWNoLGQ9SC5waWNrLGw9Yy5oYXNUb3VjaDt5PWMuU2VyaWVzO0g9Yy5zZXJpZXNUeXBlczt2YXIgaz1jLnN2Zzt2YXIgZj1jLlRyYWNrZXJNaXhpbj17ZHJhd1RyYWNrZXJQb2ludDpmdW5jdGlvbigpe3ZhciBhPQp0aGlzLGM9YS5jaGFydCxkPWMucG9pbnRlcixmPWZ1bmN0aW9uKGEpe3ZhciBjPWQuZ2V0UG9pbnRGcm9tRXZlbnQoYSk7InVuZGVmaW5lZCIhPT10eXBlb2YgYyYmKGQuaXNEaXJlY3RUb3VjaD0hMCxjLm9uTW91c2VPdmVyKGEpKX0sZzthLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2c9bihhLmRhdGFMYWJlbHMpP2EuZGF0YUxhYmVsczphLmRhdGFMYWJlbD9bYS5kYXRhTGFiZWxdOltdO2EuZ3JhcGhpYyYmKGEuZ3JhcGhpYy5lbGVtZW50LnBvaW50PWEpO2cuZm9yRWFjaChmdW5jdGlvbihjKXtjLmRpdj9jLmRpdi5wb2ludD1hOmMuZWxlbWVudC5wb2ludD1hfSl9KTthLl9oYXNUcmFja2luZ3x8KGEudHJhY2tlckdyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uKGcpe2lmKGFbZ10pe2FbZ10uYWRkQ2xhc3MoImhpZ2hjaGFydHMtdHJhY2tlciIpLm9uKCJtb3VzZW92ZXIiLGYpLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oYSl7ZC5vblRyYWNrZXJNb3VzZU91dChhKX0pO2lmKGwpYVtnXS5vbigidG91Y2hzdGFydCIsCmYpOyFjLnN0eWxlZE1vZGUmJmEub3B0aW9ucy5jdXJzb3ImJmFbZ10uY3NzKEcpLmNzcyh7Y3Vyc29yOmEub3B0aW9ucy5jdXJzb3J9KX19KSxhLl9oYXNUcmFja2luZz0hMCk7Syh0aGlzLCJhZnRlckRyYXdUcmFja2VyIil9LGRyYXdUcmFja2VyR3JhcGg6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGM9YS5vcHRpb25zLGQ9Yy50cmFja0J5QXJlYSxmPVtdLmNvbmNhdChkP2EuYXJlYVBhdGg6YS5ncmFwaFBhdGgpLGc9YS5jaGFydCxtPWcucG9pbnRlcixuPWcucmVuZGVyZXIscD1nLm9wdGlvbnMudG9vbHRpcC5zbmFwLHE9YS50cmFja2VyLGU9ZnVuY3Rpb24oYil7aWYoZy5ob3ZlclNlcmllcyE9PWEpYS5vbk1vdXNlT3ZlcigpfSxiPSJyZ2JhKDE5MiwxOTIsMTkyLCIrKGs/LjAwMDE6LjAwMikrIikiO3E/cS5hdHRyKHtkOmZ9KTphLmdyYXBoJiYoYS50cmFja2VyPW4ucGF0aChmKS5hdHRyKHt2aXNpYmlsaXR5OmEudmlzaWJsZT8idmlzaWJsZSI6ImhpZGRlbiIsekluZGV4OjJ9KS5hZGRDbGFzcyhkPwoiaGlnaGNoYXJ0cy10cmFja2VyLWFyZWEiOiJoaWdoY2hhcnRzLXRyYWNrZXItbGluZSIpLmFkZChhLmdyb3VwKSxnLnN0eWxlZE1vZGV8fGEudHJhY2tlci5hdHRyKHsic3Ryb2tlLWxpbmVjYXAiOiJyb3VuZCIsInN0cm9rZS1saW5lam9pbiI6InJvdW5kIixzdHJva2U6YixmaWxsOmQ/Yjoibm9uZSIsInN0cm9rZS13aWR0aCI6YS5ncmFwaC5zdHJva2VXaWR0aCgpKyhkPzA6MipwKX0pLFthLnRyYWNrZXIsYS5tYXJrZXJHcm91cF0uZm9yRWFjaChmdW5jdGlvbihhKXthLmFkZENsYXNzKCJoaWdoY2hhcnRzLXRyYWNrZXIiKS5vbigibW91c2VvdmVyIixlKS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKGEpe20ub25UcmFja2VyTW91c2VPdXQoYSl9KTtjLmN1cnNvciYmIWcuc3R5bGVkTW9kZSYmYS5jc3Moe2N1cnNvcjpjLmN1cnNvcn0pO2lmKGwpYS5vbigidG91Y2hzdGFydCIsZSl9KSk7Syh0aGlzLCJhZnRlckRyYXdUcmFja2VyIil9fTtILmNvbHVtbiYmKEguY29sdW1uLnByb3RvdHlwZS5kcmF3VHJhY2tlcj0KZi5kcmF3VHJhY2tlclBvaW50KTtILnBpZSYmKEgucGllLnByb3RvdHlwZS5kcmF3VHJhY2tlcj1mLmRyYXdUcmFja2VyUG9pbnQpO0guc2NhdHRlciYmKEguc2NhdHRlci5wcm90b3R5cGUuZHJhd1RyYWNrZXI9Zi5kcmF3VHJhY2tlclBvaW50KTt2KHEucHJvdG90eXBlLHtzZXRJdGVtRXZlbnRzOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZj10aGlzLGc9Zi5jaGFydC5yZW5kZXJlci5ib3hXcmFwcGVyLGs9YSBpbnN0YW5jZW9mIEIsbD0iaGlnaGNoYXJ0cy1sZWdlbmQtIisoaz8icG9pbnQiOiJzZXJpZXMiKSsiLWFjdGl2ZSIsbT1mLmNoYXJ0LnN0eWxlZE1vZGU7KGQ/W2MsYS5sZWdlbmRTeW1ib2xdOlthLmxlZ2VuZEdyb3VwXSkuZm9yRWFjaChmdW5jdGlvbihkKXtpZihkKWQub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oKXthLnZpc2libGUmJmYuYWxsSXRlbXMuZm9yRWFjaChmdW5jdGlvbihjKXthIT09YyYmYy5zZXRTdGF0ZSgiaW5hY3RpdmUiLCFrKX0pO2Euc2V0U3RhdGUoImhvdmVyIik7CmEudmlzaWJsZSYmZy5hZGRDbGFzcyhsKTttfHxjLmNzcyhmLm9wdGlvbnMuaXRlbUhvdmVyU3R5bGUpfSkub24oIm1vdXNlb3V0IixmdW5jdGlvbigpe2YuY2hhcnQuc3R5bGVkTW9kZXx8Yy5jc3MocChhLnZpc2libGU/Zi5pdGVtU3R5bGU6Zi5pdGVtSGlkZGVuU3R5bGUpKTtmLmFsbEl0ZW1zLmZvckVhY2goZnVuY3Rpb24oYyl7YSE9PWMmJmMuc2V0U3RhdGUoIiIsIWspfSk7Zy5yZW1vdmVDbGFzcyhsKTthLnNldFN0YXRlKCl9KS5vbigiY2xpY2siLGZ1bmN0aW9uKGMpe3ZhciBiPWZ1bmN0aW9uKCl7YS5zZXRWaXNpYmxlJiZhLnNldFZpc2libGUoKTtmLmFsbEl0ZW1zLmZvckVhY2goZnVuY3Rpb24oYil7YSE9PWImJmIuc2V0U3RhdGUoYS52aXNpYmxlPyJpbmFjdGl2ZSI6IiIsIWspfSl9O2cucmVtb3ZlQ2xhc3MobCk7Yz17YnJvd3NlckV2ZW50OmN9O2EuZmlyZVBvaW50RXZlbnQ/YS5maXJlUG9pbnRFdmVudCgibGVnZW5kSXRlbUNsaWNrIixjLGIpOksoYSwibGVnZW5kSXRlbUNsaWNrIiwKYyxiKX0pfSl9LGNyZWF0ZUNoZWNrYm94Rm9ySXRlbTpmdW5jdGlvbihhKXthLmNoZWNrYm94PXQoImlucHV0Iix7dHlwZToiY2hlY2tib3giLGNsYXNzTmFtZToiaGlnaGNoYXJ0cy1sZWdlbmQtY2hlY2tib3giLGNoZWNrZWQ6YS5zZWxlY3RlZCxkZWZhdWx0Q2hlY2tlZDphLnNlbGVjdGVkfSx0aGlzLm9wdGlvbnMuaXRlbUNoZWNrYm94U3R5bGUsdGhpcy5jaGFydC5jb250YWluZXIpO0ooYS5jaGVja2JveCwiY2xpY2siLGZ1bmN0aW9uKGMpe0soYS5zZXJpZXN8fGEsImNoZWNrYm94Q2xpY2siLHtjaGVja2VkOmMudGFyZ2V0LmNoZWNrZWQsaXRlbTphfSxmdW5jdGlvbigpe2Euc2VsZWN0KCl9KX0pfX0pO3YoZy5wcm90b3R5cGUse3Nob3dSZXNldFpvb206ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7Yy56b29tT3V0KCl9dmFyIGM9dGhpcyxkPUQubGFuZyxmPWMub3B0aW9ucy5jaGFydC5yZXNldFpvb21CdXR0b24sZz1mLnRoZW1lLGs9Zy5zdGF0ZXMsbD0iY2hhcnQiPT09Zi5yZWxhdGl2ZVRvfHwKInNwYWNlQm94Ij09PWYucmVsYXRpdmVUbz9udWxsOiJwbG90Qm94IjtLKHRoaXMsImJlZm9yZVNob3dSZXNldFpvb20iLG51bGwsZnVuY3Rpb24oKXtjLnJlc2V0Wm9vbUJ1dHRvbj1jLnJlbmRlcmVyLmJ1dHRvbihkLnJlc2V0Wm9vbSxudWxsLG51bGwsYSxnLGsmJmsuaG92ZXIpLmF0dHIoe2FsaWduOmYucG9zaXRpb24uYWxpZ24sdGl0bGU6ZC5yZXNldFpvb21UaXRsZX0pLmFkZENsYXNzKCJoaWdoY2hhcnRzLXJlc2V0LXpvb20iKS5hZGQoKS5hbGlnbihmLnBvc2l0aW9uLCExLGwpfSk7Syh0aGlzLCJhZnRlclNob3dSZXNldFpvb20iKX0sem9vbU91dDpmdW5jdGlvbigpe0sodGhpcywic2VsZWN0aW9uIix7cmVzZXRTZWxlY3Rpb246ITB9LHRoaXMuem9vbSl9LHpvb206ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcyxmLGc9Yy5wb2ludGVyLGs9ITEsbD1jLmludmVydGVkP2cubW91c2VEb3duWDpnLm1vdXNlRG93blk7IWF8fGEucmVzZXRTZWxlY3Rpb24/KGMuYXhlcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2Y9CmEuem9vbSgpfSksZy5pbml0aWF0ZWQ9ITEpOmEueEF4aXMuY29uY2F0KGEueUF4aXMpLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGQ9YS5heGlzLGU9Yy5pbnZlcnRlZD9kLmxlZnQ6ZC50b3AsYj1jLmludmVydGVkP2UrZC53aWR0aDplK2QuaGVpZ2h0LGg9ZC5pc1hBeGlzLG09ITE7aWYoIWgmJmw+PWUmJmw8PWJ8fGh8fCFMKGwpKW09ITA7Z1toPyJ6b29tWCI6Inpvb21ZIl0mJm0mJihmPWQuem9vbShhLm1pbixhLm1heCksZC5kaXNwbGF5QnRuJiYoaz0hMCkpfSk7dmFyIG09Yy5yZXNldFpvb21CdXR0b247ayYmIW0/Yy5zaG93UmVzZXRab29tKCk6IWsmJkkobSkmJihjLnJlc2V0Wm9vbUJ1dHRvbj1tLmRlc3Ryb3koKSk7ZiYmYy5yZWRyYXcoZChjLm9wdGlvbnMuY2hhcnQuYW5pbWF0aW9uLGEmJmEuYW5pbWF0aW9uLDEwMD5jLnBvaW50Q291bnQpKX0scGFuOmZ1bmN0aW9uKGEsZCl7dmFyIGY9dGhpcyxnPWYuaG92ZXJQb2ludHMsaz1mLm9wdGlvbnMuY2hhcnQsbD1mLm9wdGlvbnMubWFwTmF2aWdhdGlvbiYmCmYub3B0aW9ucy5tYXBOYXZpZ2F0aW9uLmVuYWJsZWQsbTtkPSJvYmplY3QiPT09dHlwZW9mIGQ/ZDp7ZW5hYmxlZDpkLHR5cGU6IngifTtrJiZrLnBhbm5pbmcmJihrLnBhbm5pbmc9ZCk7dmFyIG49ZC50eXBlO0sodGhpcywicGFuIix7b3JpZ2luYWxFdmVudDphfSxmdW5jdGlvbigpe2cmJmcuZm9yRWFjaChmdW5jdGlvbihhKXthLnNldFN0YXRlKCl9KTt2YXIgZD1bMV07Inh5Ij09PW4/ZD1bMSwwXToieSI9PT1uJiYoZD1bMF0pO2QuZm9yRWFjaChmdW5jdGlvbihkKXt2YXIgYj1mW2Q/InhBeGlzIjoieUF4aXMiXVswXSxlPWIuaG9yaXosZz1hW2U/ImNoYXJ0WCI6ImNoYXJ0WSJdO2U9ZT8ibW91c2VEb3duWCI6Im1vdXNlRG93blkiO3ZhciBrPWZbZV0scD0oYi5wb2ludFJhbmdlfHwwKS8yLHE9Yi5yZXZlcnNlZCYmIWYuaW52ZXJ0ZWR8fCFiLnJldmVyc2VkJiZmLmludmVydGVkPy0xOjEscj1iLmdldEV4dHJlbWVzKCksdT1iLnRvVmFsdWUoay1nLCEwKStwKnE7cT1iLnRvVmFsdWUoaysKYi5sZW4tZywhMCktcCpxO3ZhciB0PXE8dTtrPXQ/cTp1O3U9dD91OnE7dmFyIHc9Yi5oYXNWZXJ0aWNhbFBhbm5pbmcoKSx2PWIucGFubmluZ1N0YXRlO2Iuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYSl7aWYodyYmIWQmJighdnx8di5pc0RpcnR5KSl7dmFyIGI9YS5nZXRQcm9jZXNzZWREYXRhKCEwKTthPWEuZ2V0RXh0cmVtZXMoYi55RGF0YSwhMCk7dnx8KHY9e3N0YXJ0TWluOk51bWJlci5NQVhfVkFMVUUsc3RhcnRNYXg6LU51bWJlci5NQVhfVkFMVUV9KTtDKGEuZGF0YU1pbikmJkMoYS5kYXRhTWF4KSYmKHYuc3RhcnRNaW49TWF0aC5taW4oYS5kYXRhTWluLHYuc3RhcnRNaW4pLHYuc3RhcnRNYXg9TWF0aC5tYXgoYS5kYXRhTWF4LHYuc3RhcnRNYXgpKX19KTtxPU1hdGgubWluKGMucGljayhudWxsPT09dnx8dm9pZCAwPT09dj92b2lkIDA6di5zdGFydE1pbixyLmRhdGFNaW4pLHA/ci5taW46Yi50b1ZhbHVlKGIudG9QaXhlbHMoci5taW4pLWIubWluUGl4ZWxQYWRkaW5nKSk7CnA9TWF0aC5tYXgoYy5waWNrKG51bGw9PT12fHx2b2lkIDA9PT12P3ZvaWQgMDp2LnN0YXJ0TWF4LHIuZGF0YU1heCkscD9yLm1heDpiLnRvVmFsdWUoYi50b1BpeGVscyhyLm1heCkrYi5taW5QaXhlbFBhZGRpbmcpKTtiLnBhbm5pbmdTdGF0ZT12O2IuaXNPcmRpbmFsfHwodD1xLWssMDx0JiYodSs9dCxrPXEpLHQ9dS1wLDA8dCYmKHU9cCxrLT10KSxiLnNlcmllcy5sZW5ndGgmJmshPT1yLm1pbiYmdSE9PXIubWF4JiZrPj1xJiZ1PD1wJiYoYi5zZXRFeHRyZW1lcyhrLHUsITEsITEse3RyaWdnZXI6InBhbiJ9KSxmLnJlc2V0Wm9vbUJ1dHRvbnx8bHx8az09PXF8fHU9PT1wfHwhbi5tYXRjaCgieSIpfHwoZi5zaG93UmVzZXRab29tKCksYi5kaXNwbGF5QnRuPSExKSxtPSEwKSxmW2VdPWcpfSk7bSYmZi5yZWRyYXcoITEpO0coZi5jb250YWluZXIse2N1cnNvcjoibW92ZSJ9KX0pfX0pO3YoQi5wcm90b3R5cGUse3NlbGVjdDpmdW5jdGlvbihhLGMpe3ZhciBmPXRoaXMsZz1mLnNlcmllcywKaz1nLmNoYXJ0O3RoaXMuc2VsZWN0ZWRTdGFnaW5nPWE9ZChhLCFmLnNlbGVjdGVkKTtmLmZpcmVQb2ludEV2ZW50KGE/InNlbGVjdCI6InVuc2VsZWN0Iix7YWNjdW11bGF0ZTpjfSxmdW5jdGlvbigpe2Yuc2VsZWN0ZWQ9Zi5vcHRpb25zLnNlbGVjdGVkPWE7Zy5vcHRpb25zLmRhdGFbZy5kYXRhLmluZGV4T2YoZildPWYub3B0aW9ucztmLnNldFN0YXRlKGEmJiJzZWxlY3QiKTtjfHxrLmdldFNlbGVjdGVkUG9pbnRzKCkuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYz1hLnNlcmllczthLnNlbGVjdGVkJiZhIT09ZiYmKGEuc2VsZWN0ZWQ9YS5vcHRpb25zLnNlbGVjdGVkPSExLGMub3B0aW9ucy5kYXRhW2MuZGF0YS5pbmRleE9mKGEpXT1hLm9wdGlvbnMsYS5zZXRTdGF0ZShrLmhvdmVyUG9pbnRzJiZjLm9wdGlvbnMuaW5hY3RpdmVPdGhlclBvaW50cz8iaW5hY3RpdmUiOiIiKSxhLmZpcmVQb2ludEV2ZW50KCJ1bnNlbGVjdCIpKX0pfSk7ZGVsZXRlIHRoaXMuc2VsZWN0ZWRTdGFnaW5nfSwKb25Nb3VzZU92ZXI6ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5zZXJpZXMuY2hhcnQsZD1jLnBvaW50ZXI7YT1hP2Qubm9ybWFsaXplKGEpOmQuZ2V0Q2hhcnRDb29yZGluYXRlc0Zyb21Qb2ludCh0aGlzLGMuaW52ZXJ0ZWQpO2QucnVuUG9pbnRBY3Rpb25zKGEsdGhpcyl9LG9uTW91c2VPdXQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnNlcmllcy5jaGFydDt0aGlzLmZpcmVQb2ludEV2ZW50KCJtb3VzZU91dCIpO3RoaXMuc2VyaWVzLm9wdGlvbnMuaW5hY3RpdmVPdGhlclBvaW50c3x8KGEuaG92ZXJQb2ludHN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2Euc2V0U3RhdGUoKX0pO2EuaG92ZXJQb2ludHM9YS5ob3ZlclBvaW50PW51bGx9LGltcG9ydEV2ZW50czpmdW5jdGlvbigpe2lmKCF0aGlzLmhhc0ltcG9ydGVkRXZlbnRzKXt2YXIgYT10aGlzLGM9cChhLnNlcmllcy5vcHRpb25zLnBvaW50LGEub3B0aW9ucykuZXZlbnRzO2EuZXZlbnRzPWM7bShjLGZ1bmN0aW9uKGMsZCl7cihjKSYmCkooYSxkLGMpfSk7dGhpcy5oYXNJbXBvcnRlZEV2ZW50cz0hMH19LHNldFN0YXRlOmZ1bmN0aW9uKGEsYyl7dmFyIGY9dGhpcy5zZXJpZXMsZz10aGlzLnN0YXRlLGs9Zi5vcHRpb25zLnN0YXRlc1thfHwibm9ybWFsIl18fHt9LGw9RC5wbG90T3B0aW9uc1tmLnR5cGVdLm1hcmtlciYmZi5vcHRpb25zLm1hcmtlcixtPWwmJiExPT09bC5lbmFibGVkLG49bCYmbC5zdGF0ZXMmJmwuc3RhdGVzW2F8fCJub3JtYWwiXXx8e30scD0hMT09PW4uZW5hYmxlZCxlPWYuc3RhdGVNYXJrZXJHcmFwaGljLGI9dGhpcy5tYXJrZXJ8fHt9LGg9Zi5jaGFydCxxPWYuaGFsbyxyLHQ9bCYmZi5tYXJrZXJBdHRyaWJzO2E9YXx8IiI7aWYoIShhPT09dGhpcy5zdGF0ZSYmIWN8fHRoaXMuc2VsZWN0ZWQmJiJzZWxlY3QiIT09YXx8ITE9PT1rLmVuYWJsZWR8fGEmJihwfHxtJiYhMT09PW4uZW5hYmxlZCl8fGEmJmIuc3RhdGVzJiZiLnN0YXRlc1thXSYmITE9PT1iLnN0YXRlc1thXS5lbmFibGVkKSl7dGhpcy5zdGF0ZT0KYTt0JiYocj1mLm1hcmtlckF0dHJpYnModGhpcyxhKSk7aWYodGhpcy5ncmFwaGljKXtnJiZ0aGlzLmdyYXBoaWMucmVtb3ZlQ2xhc3MoImhpZ2hjaGFydHMtcG9pbnQtIitnKTthJiZ0aGlzLmdyYXBoaWMuYWRkQ2xhc3MoImhpZ2hjaGFydHMtcG9pbnQtIithKTtpZighaC5zdHlsZWRNb2RlKXt2YXIgeT1mLnBvaW50QXR0cmlicyh0aGlzLGEpO3ZhciBBPWQoaC5vcHRpb25zLmNoYXJ0LmFuaW1hdGlvbixrLmFuaW1hdGlvbik7Zi5vcHRpb25zLmluYWN0aXZlT3RoZXJQb2ludHMmJnkub3BhY2l0eSYmKCh0aGlzLmRhdGFMYWJlbHN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EmJmEuYW5pbWF0ZSh7b3BhY2l0eTp5Lm9wYWNpdHl9LEEpfSksdGhpcy5jb25uZWN0b3ImJnRoaXMuY29ubmVjdG9yLmFuaW1hdGUoe29wYWNpdHk6eS5vcGFjaXR5fSxBKSk7dGhpcy5ncmFwaGljLmFuaW1hdGUoeSxBKX1yJiZ0aGlzLmdyYXBoaWMuYW5pbWF0ZShyLGQoaC5vcHRpb25zLmNoYXJ0LmFuaW1hdGlvbiwKbi5hbmltYXRpb24sbC5hbmltYXRpb24pKTtlJiZlLmhpZGUoKX1lbHNle2lmKGEmJm4pe2c9Yi5zeW1ib2x8fGYuc3ltYm9sO2UmJmUuY3VycmVudFN5bWJvbCE9PWcmJihlPWUuZGVzdHJveSgpKTtpZihyKWlmKGUpZVtjPyJhbmltYXRlIjoiYXR0ciJdKHt4OnIueCx5OnIueX0pO2Vsc2UgZyYmKGYuc3RhdGVNYXJrZXJHcmFwaGljPWU9aC5yZW5kZXJlci5zeW1ib2woZyxyLngsci55LHIud2lkdGgsci5oZWlnaHQpLmFkZChmLm1hcmtlckdyb3VwKSxlLmN1cnJlbnRTeW1ib2w9Zyk7IWguc3R5bGVkTW9kZSYmZSYmZS5hdHRyKGYucG9pbnRBdHRyaWJzKHRoaXMsYSkpfWUmJihlW2EmJnRoaXMuaXNJbnNpZGU/InNob3ciOiJoaWRlIl0oKSxlLmVsZW1lbnQucG9pbnQ9dGhpcyl9YT1rLmhhbG87az0oZT10aGlzLmdyYXBoaWN8fGUpJiZlLnZpc2liaWxpdHl8fCJpbmhlcml0IjthJiZhLnNpemUmJmUmJiJoaWRkZW4iIT09ayYmIXRoaXMuaXNDbHVzdGVyPyhxfHwoZi5oYWxvPXE9CmgucmVuZGVyZXIucGF0aCgpLmFkZChlLnBhcmVudEdyb3VwKSkscS5zaG93KClbYz8iYW5pbWF0ZSI6ImF0dHIiXSh7ZDp0aGlzLmhhbG9QYXRoKGEuc2l6ZSl9KSxxLmF0dHIoeyJjbGFzcyI6ImhpZ2hjaGFydHMtaGFsbyBoaWdoY2hhcnRzLWNvbG9yLSIrZCh0aGlzLmNvbG9ySW5kZXgsZi5jb2xvckluZGV4KSsodGhpcy5jbGFzc05hbWU/IiAiK3RoaXMuY2xhc3NOYW1lOiIiKSx2aXNpYmlsaXR5OmssekluZGV4Oi0xfSkscS5wb2ludD10aGlzLGguc3R5bGVkTW9kZXx8cS5hdHRyKHYoe2ZpbGw6dGhpcy5jb2xvcnx8Zi5jb2xvciwiZmlsbC1vcGFjaXR5IjphLm9wYWNpdHl9LGEuYXR0cmlidXRlcykpKTpxJiZxLnBvaW50JiZxLnBvaW50LmhhbG9QYXRoJiZxLmFuaW1hdGUoe2Q6cS5wb2ludC5oYWxvUGF0aCgwKX0sbnVsbCxxLmhpZGUpO0sodGhpcywiYWZ0ZXJTZXRTdGF0ZSIpfX0saGFsb1BhdGg6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuc2VyaWVzLmNoYXJ0LnJlbmRlcmVyLnN5bWJvbHMuY2lyY2xlKE1hdGguZmxvb3IodGhpcy5wbG90WCktCmEsdGhpcy5wbG90WS1hLDIqYSwyKmEpfX0pO3YoeS5wcm90b3R5cGUse29uTW91c2VPdmVyOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jaGFydCxjPWEuaG92ZXJTZXJpZXM7YS5wb2ludGVyLnNldEhvdmVyQ2hhcnRJbmRleCgpO2lmKGMmJmMhPT10aGlzKWMub25Nb3VzZU91dCgpO3RoaXMub3B0aW9ucy5ldmVudHMubW91c2VPdmVyJiZLKHRoaXMsIm1vdXNlT3ZlciIpO3RoaXMuc2V0U3RhdGUoImhvdmVyIik7YS5ob3ZlclNlcmllcz10aGlzfSxvbk1vdXNlT3V0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25zLGM9dGhpcy5jaGFydCxkPWMudG9vbHRpcCxmPWMuaG92ZXJQb2ludDtjLmhvdmVyU2VyaWVzPW51bGw7aWYoZilmLm9uTW91c2VPdXQoKTt0aGlzJiZhLmV2ZW50cy5tb3VzZU91dCYmSyh0aGlzLCJtb3VzZU91dCIpOyFkfHx0aGlzLnN0aWNreVRyYWNraW5nfHxkLnNoYXJlZCYmIXRoaXMubm9TaGFyZWRUb29sdGlwfHxkLmhpZGUoKTtjLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2Euc2V0U3RhdGUoIiIsCiEwKX0pfSxzZXRTdGF0ZTpmdW5jdGlvbihhLGMpe3ZhciBmPXRoaXMsZz1mLm9wdGlvbnMsaz1mLmdyYXBoLGw9Zy5pbmFjdGl2ZU90aGVyUG9pbnRzLG09Zy5zdGF0ZXMsbj1nLmxpbmVXaWR0aCxwPWcub3BhY2l0eSxlPWQobVthfHwibm9ybWFsIl0mJm1bYXx8Im5vcm1hbCJdLmFuaW1hdGlvbixmLmNoYXJ0Lm9wdGlvbnMuY2hhcnQuYW5pbWF0aW9uKTtnPTA7YT1hfHwiIjtpZihmLnN0YXRlIT09YSYmKFtmLmdyb3VwLGYubWFya2VyR3JvdXAsZi5kYXRhTGFiZWxzR3JvdXBdLmZvckVhY2goZnVuY3Rpb24oYil7YiYmKGYuc3RhdGUmJmIucmVtb3ZlQ2xhc3MoImhpZ2hjaGFydHMtc2VyaWVzLSIrZi5zdGF0ZSksYSYmYi5hZGRDbGFzcygiaGlnaGNoYXJ0cy1zZXJpZXMtIithKSl9KSxmLnN0YXRlPWEsIWYuY2hhcnQuc3R5bGVkTW9kZSkpe2lmKG1bYV0mJiExPT09bVthXS5lbmFibGVkKXJldHVybjthJiYobj1tW2FdLmxpbmVXaWR0aHx8bisobVthXS5saW5lV2lkdGhQbHVzfHwKMCkscD1kKG1bYV0ub3BhY2l0eSxwKSk7aWYoayYmIWsuZGFzaHN0eWxlKWZvcihtPXsic3Ryb2tlLXdpZHRoIjpufSxrLmFuaW1hdGUobSxlKTtmWyJ6b25lLWdyYXBoLSIrZ107KWZbInpvbmUtZ3JhcGgtIitnXS5hdHRyKG0pLGcrPTE7bHx8W2YuZ3JvdXAsZi5tYXJrZXJHcm91cCxmLmRhdGFMYWJlbHNHcm91cCxmLmxhYmVsQnlTZXJpZXNdLmZvckVhY2goZnVuY3Rpb24oYSl7YSYmYS5hbmltYXRlKHtvcGFjaXR5OnB9LGUpfSl9YyYmbCYmZi5wb2ludHMmJmYuc2V0QWxsUG9pbnRzVG9TdGF0ZShhKX0sc2V0QWxsUG9pbnRzVG9TdGF0ZTpmdW5jdGlvbihhKXt0aGlzLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGMpe2Muc2V0U3RhdGUmJmMuc2V0U3RhdGUoYSl9KX0sc2V0VmlzaWJsZTpmdW5jdGlvbihhLGMpe3ZhciBkPXRoaXMsZj1kLmNoYXJ0LGc9ZC5sZWdlbmRJdGVtLGs9Zi5vcHRpb25zLmNoYXJ0Lmlnbm9yZUhpZGRlblNlcmllcyxsPWQudmlzaWJsZTt2YXIgbT0oZC52aXNpYmxlPQphPWQub3B0aW9ucy52aXNpYmxlPWQudXNlck9wdGlvbnMudmlzaWJsZT0idW5kZWZpbmVkIj09PXR5cGVvZiBhPyFsOmEpPyJzaG93IjoiaGlkZSI7WyJncm91cCIsImRhdGFMYWJlbHNHcm91cCIsIm1hcmtlckdyb3VwIiwidHJhY2tlciIsInR0Il0uZm9yRWFjaChmdW5jdGlvbihhKXtpZihkW2FdKWRbYV1bbV0oKX0pO2lmKGYuaG92ZXJTZXJpZXM9PT1kfHwoZi5ob3ZlclBvaW50JiZmLmhvdmVyUG9pbnQuc2VyaWVzKT09PWQpZC5vbk1vdXNlT3V0KCk7ZyYmZi5sZWdlbmQuY29sb3JpemVJdGVtKGQsYSk7ZC5pc0RpcnR5PSEwO2Qub3B0aW9ucy5zdGFja2luZyYmZi5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihhKXthLm9wdGlvbnMuc3RhY2tpbmcmJmEudmlzaWJsZSYmKGEuaXNEaXJ0eT0hMCl9KTtkLmxpbmtlZFNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGMpe2Muc2V0VmlzaWJsZShhLCExKX0pO2smJihmLmlzRGlydHlCb3g9ITApO0soZCxtKTshMSE9PWMmJmYucmVkcmF3KCl9LApzaG93OmZ1bmN0aW9uKCl7dGhpcy5zZXRWaXNpYmxlKCEwKX0saGlkZTpmdW5jdGlvbigpe3RoaXMuc2V0VmlzaWJsZSghMSl9LHNlbGVjdDpmdW5jdGlvbihhKXt0aGlzLnNlbGVjdGVkPWE9dGhpcy5vcHRpb25zLnNlbGVjdGVkPSJ1bmRlZmluZWQiPT09dHlwZW9mIGE/IXRoaXMuc2VsZWN0ZWQ6YTt0aGlzLmNoZWNrYm94JiYodGhpcy5jaGVja2JveC5jaGVja2VkPWEpO0sodGhpcyxhPyJzZWxlY3QiOiJ1bnNlbGVjdCIpfSxkcmF3VHJhY2tlcjpmLmRyYXdUcmFja2VyR3JhcGh9KX0pO08ocSwicGFydHMvUmVzcG9uc2l2ZS5qcyIsW3FbInBhcnRzL0NoYXJ0LmpzIl0scVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGcsYyl7dmFyIHE9Yy5maW5kLHk9Yy5pc0FycmF5LEI9Yy5pc09iamVjdCxIPWMubWVyZ2UsRD1jLm9iamVjdEVhY2gsSj1jLnBpY2ssdD1jLnNwbGF0LEc9Yy51bmlxdWVLZXk7Zy5wcm90b3R5cGUuc2V0UmVzcG9uc2l2ZT1mdW5jdGlvbihjLGcpe3ZhciB0PQp0aGlzLm9wdGlvbnMucmVzcG9uc2l2ZSxuPVtdLHI9dGhpcy5jdXJyZW50UmVzcG9uc2l2ZTshZyYmdCYmdC5ydWxlcyYmdC5ydWxlcy5mb3JFYWNoKGZ1bmN0aW9uKGMpeyJ1bmRlZmluZWQiPT09dHlwZW9mIGMuX2lkJiYoYy5faWQ9RygpKTt0aGlzLm1hdGNoUmVzcG9uc2l2ZVJ1bGUoYyxuKX0sdGhpcyk7Zz1ILmFwcGx5KDAsbi5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIHEodC5ydWxlcyxmdW5jdGlvbihnKXtyZXR1cm4gZy5faWQ9PT1jfSkuY2hhcnRPcHRpb25zfSkpO2cuaXNSZXNwb25zaXZlT3B0aW9ucz0hMDtuPW4udG9TdHJpbmcoKXx8dm9pZCAwO24hPT0ociYmci5ydWxlSWRzKSYmKHImJnRoaXMudXBkYXRlKHIudW5kb09wdGlvbnMsYywhMCksbj8ocj10aGlzLmN1cnJlbnRPcHRpb25zKGcpLHIuaXNSZXNwb25zaXZlT3B0aW9ucz0hMCx0aGlzLmN1cnJlbnRSZXNwb25zaXZlPXtydWxlSWRzOm4sbWVyZ2VkT3B0aW9uczpnLHVuZG9PcHRpb25zOnJ9LHRoaXMudXBkYXRlKGcsCmMsITApKTp0aGlzLmN1cnJlbnRSZXNwb25zaXZlPXZvaWQgMCl9O2cucHJvdG90eXBlLm1hdGNoUmVzcG9uc2l2ZVJ1bGU9ZnVuY3Rpb24oYyxnKXt2YXIgcT1jLmNvbmRpdGlvbjsocS5jYWxsYmFja3x8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaGFydFdpZHRoPD1KKHEubWF4V2lkdGgsTnVtYmVyLk1BWF9WQUxVRSkmJnRoaXMuY2hhcnRIZWlnaHQ8PUoocS5tYXhIZWlnaHQsTnVtYmVyLk1BWF9WQUxVRSkmJnRoaXMuY2hhcnRXaWR0aD49SihxLm1pbldpZHRoLDApJiZ0aGlzLmNoYXJ0SGVpZ2h0Pj1KKHEubWluSGVpZ2h0LDApfSkuY2FsbCh0aGlzKSYmZy5wdXNoKGMuX2lkKX07Zy5wcm90b3R5cGUuY3VycmVudE9wdGlvbnM9ZnVuY3Rpb24oYyl7ZnVuY3Rpb24gZyhjLG4sdixwKXt2YXIgbTtEKGMsZnVuY3Rpb24oYyxsKXtpZighcCYmLTE8cS5jb2xsZWN0aW9uc1dpdGhVcGRhdGUuaW5kZXhPZihsKSlmb3IoYz10KGMpLHZbbF09W10sbT0wO208TWF0aC5tYXgoYy5sZW5ndGgsCm5bbF0ubGVuZ3RoKTttKyspbltsXVttXSYmKHZvaWQgMD09PWNbbV0/dltsXVttXT1uW2xdW21dOih2W2xdW21dPXt9LGcoY1ttXSxuW2xdW21dLHZbbF1bbV0scCsxKSkpO2Vsc2UgQihjKT8odltsXT15KGMpP1tdOnt9LGcoYyxuW2xdfHx7fSx2W2xdLHArMSkpOnZbbF09InVuZGVmaW5lZCI9PT10eXBlb2YgbltsXT9udWxsOm5bbF19KX12YXIgcT10aGlzLG49e307ZyhjLHRoaXMub3B0aW9ucyxuLDApO3JldHVybiBufX0pO08ocSwibWFzdGVycy9oaWdoY2hhcnRzLnNyYy5qcyIsW3FbInBhcnRzL0dsb2JhbHMuanMiXV0sZnVuY3Rpb24oZyl7cmV0dXJuIGd9KTtxWyJtYXN0ZXJzL2hpZ2hjaGFydHMuc3JjLmpzIl0uX21vZHVsZXM9cTtyZXR1cm4gcVsibWFzdGVycy9oaWdoY2hhcnRzLnNyYy5qcyJdfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWhpZ2hjaGFydHMuanMubWFw"></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIDNEIGZlYXR1cmVzIGZvciBIaWdoY2hhcnRzIEpTCgogTGljZW5zZTogd3d3LmhpZ2hjaGFydHMuY29tL2xpY2Vuc2UKKi8KKGZ1bmN0aW9uKGIpeyJvYmplY3QiPT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/KGJbImRlZmF1bHQiXT1iLG1vZHVsZS5leHBvcnRzPWIpOiJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiaGlnaGNoYXJ0cy9oaWdoY2hhcnRzLTNkIixbImhpZ2hjaGFydHMiXSxmdW5jdGlvbihGKXtiKEYpO2IuSGlnaGNoYXJ0cz1GO3JldHVybiBifSk6YigidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIEYoYix0LGwsZCl7Yi5oYXNPd25Qcm9wZXJ0eSh0KXx8KGJbdF09ZC5hcHBseShudWxsLGwpKX1iPWI/Yi5fbW9kdWxlczp7fTtGKGIsInBhcnRzLTNkL01hdGguanMiLFtiWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYlsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGIsdCl7dmFyIGw9dC5waWNrLGQ9Yi5kZWcycmFkO2IucGVyc3BlY3RpdmUzRD1mdW5jdGlvbihkLApuLHEpe249MDxxJiZxPE51bWJlci5QT1NJVElWRV9JTkZJTklUWT9xLyhkLnorbi56K3EpOjE7cmV0dXJue3g6ZC54Km4seTpkLnkqbn19O2IucGVyc3BlY3RpdmU9ZnVuY3Rpb24odyxuLHEsRCl7dmFyIG09bi5vcHRpb25zLmNoYXJ0Lm9wdGlvbnMzZCx1PWwoRCxxP24uaW52ZXJ0ZWQ6ITEpLGc9e3g6bi5wbG90V2lkdGgvMix5Om4ucGxvdEhlaWdodC8yLHo6bS5kZXB0aC8yLHZkOmwobS5kZXB0aCwxKSpsKG0udmlld0Rpc3RhbmNlLDApfSxwPW4uc2NhbGUzZHx8MTtEPWQqbS5iZXRhKih1Py0xOjEpO209ZCptLmFscGhhKih1Py0xOjEpO3ZhciB0PU1hdGguY29zKG0pLHk9TWF0aC5jb3MoLUQpLGE9TWF0aC5zaW4obSksaz1NYXRoLnNpbigtRCk7cXx8KGcueCs9bi5wbG90TGVmdCxnLnkrPW4ucGxvdFRvcCk7cmV0dXJuIHcubWFwKGZ1bmN0aW9uKHgpe3ZhciBjPSh1P3gueTp4LngpLWcueDt2YXIgaD0odT94Lng6eC55KS1nLnk7eD0oeC56fHwwKS1nLno7Yz17eDp5KmMtayoKeCx5Oi1hKmsqYyt0KmgteSphKngsejp0KmsqYythKmgrdCp5Knh9O2g9Yi5wZXJzcGVjdGl2ZTNEKGMsZyxnLnZkKTtoLng9aC54KnArZy54O2gueT1oLnkqcCtnLnk7aC56PWMueipwK2cuejtyZXR1cm57eDp1P2gueTpoLngseTp1P2gueDpoLnksejpoLnp9fSl9O2IucG9pbnRDYW1lcmFEaXN0YW5jZT1mdW5jdGlvbihkLG4pe3ZhciBxPW4ub3B0aW9ucy5jaGFydC5vcHRpb25zM2QsYj1uLnBsb3RXaWR0aC8yO249bi5wbG90SGVpZ2h0LzI7cT1sKHEuZGVwdGgsMSkqbChxLnZpZXdEaXN0YW5jZSwwKStxLmRlcHRoO3JldHVybiBNYXRoLnNxcnQoTWF0aC5wb3coYi1sKGQucGxvdFgsZC54KSwyKStNYXRoLnBvdyhuLWwoZC5wbG90WSxkLnkpLDIpK01hdGgucG93KHEtbChkLnBsb3RaLGQueiksMikpfTtiLnNoYXBlQXJlYT1mdW5jdGlvbihkKXt2YXIgbj0wLHE7Zm9yKHE9MDtxPGQubGVuZ3RoO3ErKyl7dmFyIGI9KHErMSklZC5sZW5ndGg7bis9ZFtxXS54KmRbYl0ueS1kW2JdLngqCmRbcV0ueX1yZXR1cm4gbi8yfTtiLnNoYXBlQXJlYTNkPWZ1bmN0aW9uKGQsbixxKXtyZXR1cm4gYi5zaGFwZUFyZWEoYi5wZXJzcGVjdGl2ZShkLG4scSkpfX0pO0YoYiwicGFydHMtM2QvU1ZHUmVuZGVyZXIuanMiLFtiWyJwYXJ0cy9Db2xvci5qcyJdLGJbInBhcnRzL0dsb2JhbHMuanMiXSxiWyJwYXJ0cy9TVkdFbGVtZW50LmpzIl0sYlsicGFydHMvU1ZHUmVuZGVyZXIuanMiXSxiWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYix0LGwsZCx3KXtmdW5jdGlvbiBuKGEsayxlLEssYyxJLGgscil7dmFyIGY9W10sdj1JLWM7cmV0dXJuIEk+YyYmSS1jPk1hdGguUEkvMisuMDAwMT8oZj1mLmNvbmNhdChuKGEsayxlLEssYyxjK01hdGguUEkvMixoLHIpKSxmPWYuY29uY2F0KG4oYSxrLGUsSyxjK01hdGguUEkvMixJLGgscikpKTpJPGMmJmMtST5NYXRoLlBJLzIrLjAwMDE/KGY9Zi5jb25jYXQobihhLGssZSxLLGMsYy1NYXRoLlBJLzIsaCxyKSksZj1mLmNvbmNhdChuKGEsCmssZSxLLGMtTWF0aC5QSS8yLEksaCxyKSkpOltbIkMiLGErZSpNYXRoLmNvcyhjKS1lKkoqdipNYXRoLnNpbihjKStoLGsrSypNYXRoLnNpbihjKStLKkoqdipNYXRoLmNvcyhjKStyLGErZSpNYXRoLmNvcyhJKStlKkoqdipNYXRoLnNpbihJKStoLGsrSypNYXRoLnNpbihJKS1LKkoqdipNYXRoLmNvcyhJKStyLGErZSpNYXRoLmNvcyhJKStoLGsrSypNYXRoLnNpbihJKStyXV19dmFyIHE9Yi5wYXJzZSxEPXcuYW5pbU9iamVjdCxtPXcuZGVmaW5lZCx1PXcuZXh0ZW5kLGc9dy5tZXJnZSxwPXcub2JqZWN0RWFjaCxFPXcucGljayx5PU1hdGguY29zLGE9TWF0aC5QSSxrPU1hdGguc2luLHg9dC5jaGFydHMsYz10LmRlZzJyYWQsaD10LnBlcnNwZWN0aXZlO3ZhciBKPTQqKE1hdGguc3FydCgyKS0xKS8zLyhhLzIpO2QucHJvdG90eXBlLnRvTGluZVBhdGg9ZnVuY3Rpb24oYSxjKXt2YXIgZT1bXTthLmZvckVhY2goZnVuY3Rpb24oYSl7ZS5wdXNoKFsiTCIsYS54LGEueV0pfSk7YS5sZW5ndGgmJgooZVswXVswXT0iTSIsYyYmZS5wdXNoKFsiWiJdKSk7cmV0dXJuIGV9O2QucHJvdG90eXBlLnRvTGluZVNlZ21lbnRzPWZ1bmN0aW9uKGEpe3ZhciBmPVtdLGU9ITA7YS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2YucHVzaChlP1siTSIsYS54LGEueV06WyJMIixhLngsYS55XSk7ZT0hZX0pO3JldHVybiBmfTtkLnByb3RvdHlwZS5mYWNlM2Q9ZnVuY3Rpb24oYSl7dmFyIGY9dGhpcyxlPXRoaXMuY3JlYXRlRWxlbWVudCgicGF0aCIpO2UudmVydGV4ZXM9W107ZS5pbnNpZGVQbG90QXJlYT0hMTtlLmVuYWJsZWQ9ITA7ZS5hdHRyPWZ1bmN0aW9uKGEpe2lmKCJvYmplY3QiPT09dHlwZW9mIGEmJihtKGEuZW5hYmxlZCl8fG0oYS52ZXJ0ZXhlcyl8fG0oYS5pbnNpZGVQbG90QXJlYSkpKXt0aGlzLmVuYWJsZWQ9RShhLmVuYWJsZWQsdGhpcy5lbmFibGVkKTt0aGlzLnZlcnRleGVzPUUoYS52ZXJ0ZXhlcyx0aGlzLnZlcnRleGVzKTt0aGlzLmluc2lkZVBsb3RBcmVhPUUoYS5pbnNpZGVQbG90QXJlYSwKdGhpcy5pbnNpZGVQbG90QXJlYSk7ZGVsZXRlIGEuZW5hYmxlZDtkZWxldGUgYS52ZXJ0ZXhlcztkZWxldGUgYS5pbnNpZGVQbG90QXJlYTt2YXIgZT1oKHRoaXMudmVydGV4ZXMseFtmLmNoYXJ0SW5kZXhdLHRoaXMuaW5zaWRlUGxvdEFyZWEpLGM9Zi50b0xpbmVQYXRoKGUsITApO2U9dC5zaGFwZUFyZWEoZSk7ZT10aGlzLmVuYWJsZWQmJjA8ZT8idmlzaWJsZSI6ImhpZGRlbiI7YS5kPWM7YS52aXNpYmlsaXR5PWV9cmV0dXJuIGwucHJvdG90eXBlLmF0dHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtlLmFuaW1hdGU9ZnVuY3Rpb24oYSl7aWYoIm9iamVjdCI9PT10eXBlb2YgYSYmKG0oYS5lbmFibGVkKXx8bShhLnZlcnRleGVzKXx8bShhLmluc2lkZVBsb3RBcmVhKSkpe3RoaXMuZW5hYmxlZD1FKGEuZW5hYmxlZCx0aGlzLmVuYWJsZWQpO3RoaXMudmVydGV4ZXM9RShhLnZlcnRleGVzLHRoaXMudmVydGV4ZXMpO3RoaXMuaW5zaWRlUGxvdEFyZWE9RShhLmluc2lkZVBsb3RBcmVhLAp0aGlzLmluc2lkZVBsb3RBcmVhKTtkZWxldGUgYS5lbmFibGVkO2RlbGV0ZSBhLnZlcnRleGVzO2RlbGV0ZSBhLmluc2lkZVBsb3RBcmVhO3ZhciBlPWgodGhpcy52ZXJ0ZXhlcyx4W2YuY2hhcnRJbmRleF0sdGhpcy5pbnNpZGVQbG90QXJlYSksYz1mLnRvTGluZVBhdGgoZSwhMCk7ZT10LnNoYXBlQXJlYShlKTtlPXRoaXMuZW5hYmxlZCYmMDxlPyJ2aXNpYmxlIjoiaGlkZGVuIjthLmQ9Yzt0aGlzLmF0dHIoInZpc2liaWxpdHkiLGUpfXJldHVybiBsLnByb3RvdHlwZS5hbmltYXRlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07cmV0dXJuIGUuYXR0cihhKX07ZC5wcm90b3R5cGUucG9seWhlZHJvbj1mdW5jdGlvbihhKXt2YXIgZj10aGlzLGU9dGhpcy5nKCksYz1lLmRlc3Ryb3k7dGhpcy5zdHlsZWRNb2RlfHxlLmF0dHIoeyJzdHJva2UtbGluZWpvaW4iOiJyb3VuZCJ9KTtlLmZhY2VzPVtdO2UuZGVzdHJveT1mdW5jdGlvbigpe2Zvcih2YXIgYT0wO2E8ZS5mYWNlcy5sZW5ndGg7YSsrKWUuZmFjZXNbYV0uZGVzdHJveSgpOwpyZXR1cm4gYy5jYWxsKHRoaXMpfTtlLmF0dHI9ZnVuY3Rpb24oYSxjLGsscil7aWYoIm9iamVjdCI9PT10eXBlb2YgYSYmbShhLmZhY2VzKSl7Zm9yKDtlLmZhY2VzLmxlbmd0aD5hLmZhY2VzLmxlbmd0aDspZS5mYWNlcy5wb3AoKS5kZXN0cm95KCk7Zm9yKDtlLmZhY2VzLmxlbmd0aDxhLmZhY2VzLmxlbmd0aDspZS5mYWNlcy5wdXNoKGYuZmFjZTNkKCkuYWRkKGUpKTtmb3IodmFyIGg9MDtoPGEuZmFjZXMubGVuZ3RoO2grKylmLnN0eWxlZE1vZGUmJmRlbGV0ZSBhLmZhY2VzW2hdLmZpbGwsZS5mYWNlc1toXS5hdHRyKGEuZmFjZXNbaF0sbnVsbCxrLHIpO2RlbGV0ZSBhLmZhY2VzfXJldHVybiBsLnByb3RvdHlwZS5hdHRyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07ZS5hbmltYXRlPWZ1bmN0aW9uKGEsYyxrKXtpZihhJiZhLmZhY2VzKXtmb3IoO2UuZmFjZXMubGVuZ3RoPmEuZmFjZXMubGVuZ3RoOyllLmZhY2VzLnBvcCgpLmRlc3Ryb3koKTtmb3IoO2UuZmFjZXMubGVuZ3RoPGEuZmFjZXMubGVuZ3RoOyllLmZhY2VzLnB1c2goZi5mYWNlM2QoKS5hZGQoZSkpOwpmb3IodmFyIHI9MDtyPGEuZmFjZXMubGVuZ3RoO3IrKyllLmZhY2VzW3JdLmFuaW1hdGUoYS5mYWNlc1tyXSxjLGspO2RlbGV0ZSBhLmZhY2VzfXJldHVybiBsLnByb3RvdHlwZS5hbmltYXRlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07cmV0dXJuIGUuYXR0cihhKX07Yj17aW5pdEFyZ3M6ZnVuY3Rpb24oYSl7dmFyIGY9dGhpcyxlPWYucmVuZGVyZXIsYz1lW2YucGF0aFR5cGUrIlBhdGgiXShhKSxrPWMuekluZGV4ZXM7Zi5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2ZbYV09ZS5wYXRoKGNbYV0pLmF0dHIoeyJjbGFzcyI6ImhpZ2hjaGFydHMtM2QtIithLHpJbmRleDprW2FdfHwwfSkuYWRkKGYpfSk7Zi5hdHRyKHsic3Ryb2tlLWxpbmVqb2luIjoicm91bmQiLHpJbmRleDprLmdyb3VwfSk7Zi5vcmlnaW5hbERlc3Ryb3k9Zi5kZXN0cm95O2YuZGVzdHJveT1mLmRlc3Ryb3lQYXJ0cztmLmZvcmNlZFNpZGVzPWMuZm9yY2VkU2lkZXN9LHNpbmdsZVNldHRlckZvclBhcnRzOmZ1bmN0aW9uKGEsCmMsZSxrLGgsZCl7dmFyIGY9e307az1bbnVsbCxudWxsLGt8fCJhdHRyIixoLGRdO3ZhciByPWUmJmUuekluZGV4ZXM7ZT8ociYmci5ncm91cCYmdGhpcy5hdHRyKHt6SW5kZXg6ci5ncm91cH0pLHAoZSxmdW5jdGlvbihjLHYpe2Zbdl09e307Zlt2XVthXT1jO3ImJihmW3ZdLnpJbmRleD1lLnpJbmRleGVzW3ZdfHwwKX0pLGtbMV09Zik6KGZbYV09YyxrWzBdPWYpO3JldHVybiB0aGlzLnByb2Nlc3NQYXJ0cy5hcHBseSh0aGlzLGspfSxwcm9jZXNzUGFydHM6ZnVuY3Rpb24oYSxjLGUsayxoKXt2YXIgZj10aGlzO2YucGFydHMuZm9yRWFjaChmdW5jdGlvbihkKXtjJiYoYT1FKGNbZF0sITEpKTtpZighMSE9PWEpZltkXVtlXShhLGssaCl9KTtyZXR1cm4gZn0sZGVzdHJveVBhcnRzOmZ1bmN0aW9uKCl7dGhpcy5wcm9jZXNzUGFydHMobnVsbCxudWxsLCJkZXN0cm95Iik7cmV0dXJuIHRoaXMub3JpZ2luYWxEZXN0cm95KCl9fTt2YXIgTT1nKGIse3BhcnRzOlsiZnJvbnQiLCJ0b3AiLAoic2lkZSJdLHBhdGhUeXBlOiJjdWJvaWQiLGF0dHI6ZnVuY3Rpb24oYSxjLGUsayl7aWYoInN0cmluZyI9PT10eXBlb2YgYSYmInVuZGVmaW5lZCIhPT10eXBlb2YgYyl7dmFyIGY9YTthPXt9O2FbZl09Y31yZXR1cm4gYS5zaGFwZUFyZ3N8fG0oYS54KT90aGlzLnNpbmdsZVNldHRlckZvclBhcnRzKCJkIixudWxsLHRoaXMucmVuZGVyZXJbdGhpcy5wYXRoVHlwZSsiUGF0aCJdKGEuc2hhcGVBcmdzfHxhKSk6bC5wcm90b3R5cGUuYXR0ci5jYWxsKHRoaXMsYSx2b2lkIDAsZSxrKX0sYW5pbWF0ZTpmdW5jdGlvbihhLGMsZSl7aWYobShhLngpJiZtKGEueSkpe2E9dGhpcy5yZW5kZXJlclt0aGlzLnBhdGhUeXBlKyJQYXRoIl0oYSk7dmFyIGY9YS5mb3JjZWRTaWRlczt0aGlzLnNpbmdsZVNldHRlckZvclBhcnRzKCJkIixudWxsLGEsImFuaW1hdGUiLGMsZSk7dGhpcy5hdHRyKHt6SW5kZXg6YS56SW5kZXhlcy5ncm91cH0pO2YhPT10aGlzLmZvcmNlZFNpZGVzJiYodGhpcy5mb3JjZWRTaWRlcz0KZixNLmZpbGxTZXR0ZXIuY2FsbCh0aGlzLHRoaXMuZmlsbCkpfWVsc2UgbC5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMsYSxjLGUpO3JldHVybiB0aGlzfSxmaWxsU2V0dGVyOmZ1bmN0aW9uKGEpe3RoaXMuZm9yY2VkU2lkZXM9dGhpcy5mb3JjZWRTaWRlc3x8W107dGhpcy5zaW5nbGVTZXR0ZXJGb3JQYXJ0cygiZmlsbCIsbnVsbCx7ZnJvbnQ6YSx0b3A6cShhKS5icmlnaHRlbigwPD10aGlzLmZvcmNlZFNpZGVzLmluZGV4T2YoInRvcCIpPzA6LjEpLmdldCgpLHNpZGU6cShhKS5icmlnaHRlbigwPD10aGlzLmZvcmNlZFNpZGVzLmluZGV4T2YoInNpZGUiKT8wOi0uMSkuZ2V0KCl9KTt0aGlzLmNvbG9yPXRoaXMuZmlsbD1hO3JldHVybiB0aGlzfX0pO2QucHJvdG90eXBlLmVsZW1lbnRzM2Q9e2Jhc2U6YixjdWJvaWQ6TX07ZC5wcm90b3R5cGUuZWxlbWVudDNkPWZ1bmN0aW9uKGEsYyl7dmFyIGU9dGhpcy5nKCk7dShlLHRoaXMuZWxlbWVudHMzZFthXSk7ZS5pbml0QXJncyhjKTsKcmV0dXJuIGV9O2QucHJvdG90eXBlLmN1Ym9pZD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lbGVtZW50M2QoImN1Ym9pZCIsYSl9O2QucHJvdG90eXBlLmN1Ym9pZFBhdGg9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYyhhKXtyZXR1cm4gMD09PXkmJjE8YSYmNj5hP3t4OkJbYV0ueCx5OkJbYV0ueSsxMCx6OkJbYV0uen06QlswXS54PT09Qls3XS54JiY0PD1hP3t4OkJbYV0ueCsxMCx5OkJbYV0ueSx6OkJbYV0uen06MD09PUcmJjI+YXx8NTxhP3t4OkJbYV0ueCx5OkJbYV0ueSx6OkJbYV0ueisxMH06QlthXX1mdW5jdGlvbiBlKGEpe3JldHVybiBCW2FdfXZhciBmPWEueCxrPWEueSxkPWEuenx8MCx5PWEuaGVpZ2h0LHI9YS53aWR0aCxHPWEuZGVwdGgsdj14W3RoaXMuY2hhcnRJbmRleF0sej12Lm9wdGlvbnMuY2hhcnQub3B0aW9uczNkLmFscGhhLEg9MCxCPVt7eDpmLHk6ayx6OmR9LHt4OmYrcix5OmssejpkfSx7eDpmK3IseTprK3ksejpkfSx7eDpmLHk6ayt5LHo6ZH0se3g6Zix5OmsrCnksejpkK0d9LHt4OmYrcix5OmsreSx6OmQrR30se3g6ZityLHk6ayx6OmQrR30se3g6Zix5OmssejpkK0d9XSxOPVtdO0I9aChCLHYsYS5pbnNpZGVQbG90QXJlYSk7dmFyIEE9ZnVuY3Rpb24oYSx2LGYpe3ZhciBrPVtbXSwtMV0scj1hLm1hcChlKSx6PXYubWFwKGUpO2E9YS5tYXAoYyk7dj12Lm1hcChjKTswPnQuc2hhcGVBcmVhKHIpP2s9W3IsMF06MD50LnNoYXBlQXJlYSh6KT9rPVt6LDFdOmYmJihOLnB1c2goZiksaz0wPnQuc2hhcGVBcmVhKGEpP1tyLDBdOjA+dC5zaGFwZUFyZWEodik/W3osMV06W3IsMF0pO3JldHVybiBrfTt2YXIgQz1BKFszLDIsMSwwXSxbNyw2LDUsNF0sImZyb250Iik7YT1DWzBdO3ZhciBiPUNbMV07Qz1BKFsxLDYsNywwXSxbNCw1LDIsM10sInRvcCIpO3I9Q1swXTt2YXIgbj1DWzFdO0M9QShbMSwyLDUsNl0sWzAsNyw0LDNdLCJzaWRlIik7QT1DWzBdO0M9Q1sxXTsxPT09Qz9IKz0xRTYqKHYucGxvdFdpZHRoLWYpOkN8fChIKz0xRTYqZik7SCs9MTAqCighbnx8MDw9eiYmMTgwPj16fHwzNjA+eiYmMzU3LjU8ej92LnBsb3RIZWlnaHQtazoxMCtrKTsxPT09Yj9IKz0xMDAqZDpifHwoSCs9MTAwKigxRTMtZCkpO3JldHVybntmcm9udDp0aGlzLnRvTGluZVBhdGgoYSwhMCksdG9wOnRoaXMudG9MaW5lUGF0aChyLCEwKSxzaWRlOnRoaXMudG9MaW5lUGF0aChBLCEwKSx6SW5kZXhlczp7Z3JvdXA6TWF0aC5yb3VuZChIKX0sZm9yY2VkU2lkZXM6Tixpc0Zyb250OmIsaXNUb3A6bn19O2QucHJvdG90eXBlLmFyYzNkPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGsoYSl7dmFyIGU9ITEsaz17fSxjO2E9ZyhhKTtmb3IoYyBpbiBhKS0xIT09aC5pbmRleE9mKGMpJiYoa1tjXT1hW2NdLGRlbGV0ZSBhW2NdLGU9ITApO3JldHVybiBlP1trLGFdOiExfXZhciBlPXRoaXMuZygpLGY9ZS5yZW5kZXJlcixoPSJ4IHkgciBpbm5lclIgc3RhcnQgZW5kIGRlcHRoIi5zcGxpdCgiICIpO2E9ZyhhKTthLmFscGhhPShhLmFscGhhfHwwKSpjO2EuYmV0YT0oYS5iZXRhfHwKMCkqYztlLnRvcD1mLnBhdGgoKTtlLnNpZGUxPWYucGF0aCgpO2Uuc2lkZTI9Zi5wYXRoKCk7ZS5pbm49Zi5wYXRoKCk7ZS5vdXQ9Zi5wYXRoKCk7ZS5vbkFkZD1mdW5jdGlvbigpe3ZhciBhPWUucGFyZW50R3JvdXAsYz1lLmF0dHIoImNsYXNzIik7ZS50b3AuYWRkKGUpO1sib3V0IiwiaW5uIiwic2lkZTEiLCJzaWRlMiJdLmZvckVhY2goZnVuY3Rpb24oayl7ZVtrXS5hdHRyKHsiY2xhc3MiOmMrIiBoaWdoY2hhcnRzLTNkLXNpZGUifSkuYWRkKGEpfSl9O1siYWRkQ2xhc3MiLCJyZW1vdmVDbGFzcyJdLmZvckVhY2goZnVuY3Rpb24oYSl7ZVthXT1mdW5jdGlvbigpe3ZhciBjPWFyZ3VtZW50cztbInRvcCIsIm91dCIsImlubiIsInNpZGUxIiwic2lkZTIiXS5mb3JFYWNoKGZ1bmN0aW9uKGspe2Vba11bYV0uYXBwbHkoZVtrXSxjKX0pfX0pO2Uuc2V0UGF0aHM9ZnVuY3Rpb24oYSl7dmFyIGs9ZS5yZW5kZXJlci5hcmMzZFBhdGgoYSksYz0xMDAqay56VG9wO2UuYXR0cmlicz1hO2UudG9wLmF0dHIoe2Q6ay50b3AsCnpJbmRleDprLnpUb3B9KTtlLmlubi5hdHRyKHtkOmsuaW5uLHpJbmRleDprLnpJbm59KTtlLm91dC5hdHRyKHtkOmsub3V0LHpJbmRleDprLnpPdXR9KTtlLnNpZGUxLmF0dHIoe2Q6ay5zaWRlMSx6SW5kZXg6ay56U2lkZTF9KTtlLnNpZGUyLmF0dHIoe2Q6ay5zaWRlMix6SW5kZXg6ay56U2lkZTJ9KTtlLnpJbmRleD1jO2UuYXR0cih7ekluZGV4OmN9KTthLmNlbnRlciYmKGUudG9wLnNldFJhZGlhbFJlZmVyZW5jZShhLmNlbnRlciksZGVsZXRlIGEuY2VudGVyKX07ZS5zZXRQYXRocyhhKTtlLmZpbGxTZXR0ZXI9ZnVuY3Rpb24oYSl7dmFyIGU9cShhKS5icmlnaHRlbigtLjEpLmdldCgpO3RoaXMuZmlsbD1hO3RoaXMuc2lkZTEuYXR0cih7ZmlsbDplfSk7dGhpcy5zaWRlMi5hdHRyKHtmaWxsOmV9KTt0aGlzLmlubi5hdHRyKHtmaWxsOmV9KTt0aGlzLm91dC5hdHRyKHtmaWxsOmV9KTt0aGlzLnRvcC5hdHRyKHtmaWxsOmF9KTtyZXR1cm4gdGhpc307WyJvcGFjaXR5IiwidHJhbnNsYXRlWCIsCiJ0cmFuc2xhdGVZIiwidmlzaWJpbGl0eSJdLmZvckVhY2goZnVuY3Rpb24oYSl7ZVthKyJTZXR0ZXIiXT1mdW5jdGlvbihhLGspe2Vba109YTtbIm91dCIsImlubiIsInNpZGUxIiwic2lkZTIiLCJ0b3AiXS5mb3JFYWNoKGZ1bmN0aW9uKGMpe2VbY10uYXR0cihrLGEpfSl9fSk7ZS5hdHRyPWZ1bmN0aW9uKGEpe3ZhciBjO2lmKCJvYmplY3QiPT09dHlwZW9mIGEmJihjPWsoYSkpKXt2YXIgZj1jWzBdO2FyZ3VtZW50c1swXT1jWzFdO3UoZS5hdHRyaWJzLGYpO2Uuc2V0UGF0aHMoZS5hdHRyaWJzKX1yZXR1cm4gbC5wcm90b3R5cGUuYXR0ci5hcHBseShlLGFyZ3VtZW50cyl9O2UuYW5pbWF0ZT1mdW5jdGlvbihhLGMsZil7dmFyIHI9dGhpcy5hdHRyaWJzLHY9ImRhdGEtIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDI2KS5zdWJzdHJpbmcoMiw5KTtkZWxldGUgYS5jZW50ZXI7ZGVsZXRlIGEuejtkZWxldGUgYS5hbHBoYTtkZWxldGUgYS5iZXRhO3ZhciB6PUQoRShjLHRoaXMucmVuZGVyZXIuZ2xvYmFsQW5pbWF0aW9uKSk7CmlmKHouZHVyYXRpb24pe2M9ayhhKTtlW3ZdPTA7YVt2XT0xO2VbdisiU2V0dGVyIl09dC5ub29wO2lmKGMpe3ZhciBoPWNbMF07ei5zdGVwPWZ1bmN0aW9uKGEsZSl7ZnVuY3Rpb24gYyhhKXtyZXR1cm4gclthXSsoRShoW2FdLHJbYV0pLXJbYV0pKmUucG9zfWUucHJvcD09PXYmJmUuZWxlbS5zZXRQYXRocyhnKHIse3g6YygieCIpLHk6YygieSIpLHI6YygiciIpLGlubmVyUjpjKCJpbm5lclIiKSxzdGFydDpjKCJzdGFydCIpLGVuZDpjKCJlbmQiKSxkZXB0aDpjKCJkZXB0aCIpfSkpfX1jPXp9cmV0dXJuIGwucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzLGEsYyxmKX07ZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy50b3AuZGVzdHJveSgpO3RoaXMub3V0LmRlc3Ryb3koKTt0aGlzLmlubi5kZXN0cm95KCk7dGhpcy5zaWRlMS5kZXN0cm95KCk7dGhpcy5zaWRlMi5kZXN0cm95KCk7cmV0dXJuIGwucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKX07ZS5oaWRlPWZ1bmN0aW9uKCl7dGhpcy50b3AuaGlkZSgpOwp0aGlzLm91dC5oaWRlKCk7dGhpcy5pbm4uaGlkZSgpO3RoaXMuc2lkZTEuaGlkZSgpO3RoaXMuc2lkZTIuaGlkZSgpfTtlLnNob3c9ZnVuY3Rpb24oYSl7dGhpcy50b3Auc2hvdyhhKTt0aGlzLm91dC5zaG93KGEpO3RoaXMuaW5uLnNob3coYSk7dGhpcy5zaWRlMS5zaG93KGEpO3RoaXMuc2lkZTIuc2hvdyhhKX07cmV0dXJuIGV9O2QucHJvdG90eXBlLmFyYzNkUGF0aD1mdW5jdGlvbihjKXtmdW5jdGlvbiBmKGEpe2ElPTIqTWF0aC5QSTthPk1hdGguUEkmJihhPTIqTWF0aC5QSS1hKTtyZXR1cm4gYX12YXIgZT1jLngsaD1jLnksZD1jLnN0YXJ0LHg9Yy5lbmQtLjAwMDAxLGI9Yy5yLHI9Yy5pbm5lclJ8fDAsRz1jLmRlcHRofHwwLHY9Yy5hbHBoYSx6PWMuYmV0YSxIPU1hdGguY29zKGQpLEI9TWF0aC5zaW4oZCk7Yz1NYXRoLmNvcyh4KTt2YXIgcT1NYXRoLnNpbih4KSxBPWIqTWF0aC5jb3Moeik7Yio9TWF0aC5jb3Modik7dmFyIEM9cipNYXRoLmNvcyh6KSxwPXIqTWF0aC5jb3Modik7CnI9RypNYXRoLnNpbih6KTt2YXIgbT1HKk1hdGguc2luKHYpO0c9W1siTSIsZStBKkgsaCtiKkJdXTtHPUcuY29uY2F0KG4oZSxoLEEsYixkLHgsMCwwKSk7Ry5wdXNoKFsiTCIsZStDKmMsaCtwKnFdKTtHPUcuY29uY2F0KG4oZSxoLEMscCx4LGQsMCwwKSk7Ry5wdXNoKFsiWiJdKTt2YXIgdT0wPHo/TWF0aC5QSS8yOjA7ej0wPHY/MDpNYXRoLlBJLzI7dT1kPi11P2Q6eD4tdT8tdTpkO3ZhciBnPXg8YS16P3g6ZDxhLXo/YS16OngsbD0yKmEtejt2PVtbIk0iLGUrQSp5KHUpLGgrYiprKHUpXV07dj12LmNvbmNhdChuKGUsaCxBLGIsdSxnLDAsMCkpO3g+bCYmZDxsPyh2LnB1c2goWyJMIixlK0EqeShnKStyLGgrYiprKGcpK21dKSx2PXYuY29uY2F0KG4oZSxoLEEsYixnLGwscixtKSksdi5wdXNoKFsiTCIsZStBKnkobCksaCtiKmsobCldKSx2PXYuY29uY2F0KG4oZSxoLEEsYixsLHgsMCwwKSksdi5wdXNoKFsiTCIsZStBKnkoeCkrcixoK2Iqayh4KSttXSksdj12LmNvbmNhdChuKGUsCmgsQSxiLHgsbCxyLG0pKSx2LnB1c2goWyJMIixlK0EqeShsKSxoK2IqayhsKV0pLHY9di5jb25jYXQobihlLGgsQSxiLGwsZywwLDApKSk6eD5hLXomJmQ8YS16JiYodi5wdXNoKFsiTCIsZStBKk1hdGguY29zKGcpK3IsaCtiKk1hdGguc2luKGcpK21dKSx2PXYuY29uY2F0KG4oZSxoLEEsYixnLHgscixtKSksdi5wdXNoKFsiTCIsZStBKk1hdGguY29zKHgpLGgrYipNYXRoLnNpbih4KV0pLHY9di5jb25jYXQobihlLGgsQSxiLHgsZywwLDApKSk7di5wdXNoKFsiTCIsZStBKk1hdGguY29zKGcpK3IsaCtiKk1hdGguc2luKGcpK21dKTt2PXYuY29uY2F0KG4oZSxoLEEsYixnLHUscixtKSk7di5wdXNoKFsiWiJdKTt6PVtbIk0iLGUrQypILGgrcCpCXV07ej16LmNvbmNhdChuKGUsaCxDLHAsZCx4LDAsMCkpO3oucHVzaChbIkwiLGUrQypNYXRoLmNvcyh4KStyLGgrcCpNYXRoLnNpbih4KSttXSk7ej16LmNvbmNhdChuKGUsaCxDLHAseCxkLHIsbSkpO3oucHVzaChbIloiXSk7SD1bWyJNIiwKZStBKkgsaCtiKkJdLFsiTCIsZStBKkgrcixoK2IqQittXSxbIkwiLGUrQypIK3IsaCtwKkIrbV0sWyJMIixlK0MqSCxoK3AqQl0sWyJaIl1dO2U9W1siTSIsZStBKmMsaCtiKnFdLFsiTCIsZStBKmMrcixoK2IqcSttXSxbIkwiLGUrQypjK3IsaCtwKnErbV0sWyJMIixlK0MqYyxoK3AqcV0sWyJaIl1dO3E9TWF0aC5hdGFuMihtLC1yKTtoPU1hdGguYWJzKHgrcSk7Yz1NYXRoLmFicyhkK3EpO2Q9TWF0aC5hYnMoKGQreCkvMitxKTtoPWYoaCk7Yz1mKGMpO2Q9ZihkKTtkKj0xRTU7eD0xRTUqYztoKj0xRTU7cmV0dXJue3RvcDpHLHpUb3A6MUU1Kk1hdGguUEkrMSxvdXQ6dix6T3V0Ok1hdGgubWF4KGQseCxoKSxpbm46eix6SW5uOk1hdGgubWF4KGQseCxoKSxzaWRlMTpILHpTaWRlMTouOTkqaCxzaWRlMjplLHpTaWRlMjouOTkqeH19fSk7RihiLCJwYXJ0cy0zZC9UaWNrM0QuanMiLFtiWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYil7dmFyIHQ9Yi5hZGRFdmVudCxsPQpiLmV4dGVuZCxkPWIud3JhcDtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBiKCl7fWIuY29tcG9zZT1mdW5jdGlvbihuKXt0KG4sImFmdGVyR2V0TGFiZWxQb3NpdGlvbiIsYi5vbkFmdGVyR2V0TGFiZWxQb3NpdGlvbik7ZChuLnByb3RvdHlwZSwiZ2V0TWFya1BhdGgiLGIud3JhcEdldE1hcmtQYXRoKX07Yi5vbkFmdGVyR2V0TGFiZWxQb3NpdGlvbj1mdW5jdGlvbihkKXt2YXIgYj10aGlzLmF4aXMuYXhpczNEO2ImJmwoZC5wb3MsYi5maXgzZFBvc2l0aW9uKGQucG9zKSl9O2Iud3JhcEdldE1hcmtQYXRoPWZ1bmN0aW9uKGQpe3ZhciBiPXRoaXMuYXhpcy5heGlzM0Qsbj1kLmFwcGx5KHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpO2lmKGIpe3ZhciBtPW5bMF0sdT1uWzFdO2lmKCJNIj09PW1bMF0mJiJMIj09PXVbMF0pcmV0dXJuIGI9W2IuZml4M2RQb3NpdGlvbih7eDptWzFdLHk6bVsyXSx6OjB9KSxiLmZpeDNkUG9zaXRpb24oe3g6dVsxXSx5OnVbMl0sejowfSldLAp0aGlzLmF4aXMuY2hhcnQucmVuZGVyZXIudG9MaW5lU2VnbWVudHMoYil9cmV0dXJuIG59O3JldHVybiBifSgpfSk7RihiLCJwYXJ0cy0zZC9BeGlzM0QuanMiLFtiWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYlsicGFydHMvVGljay5qcyJdLGJbInBhcnRzLTNkL1RpY2szRC5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihiLHQsbCxkKXt2YXIgdz1kLmFkZEV2ZW50LG49ZC5tZXJnZSxxPWQucGljayxEPWQud3JhcCxtPWIuZGVnMnJhZCx1PWIucGVyc3BlY3RpdmUsZz1iLnBlcnNwZWN0aXZlM0QscD1iLnNoYXBlQXJlYSxFPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChhKXt0aGlzLmF4aXM9YX1kLnByb3RvdHlwZS5maXgzZFBvc2l0aW9uPWZ1bmN0aW9uKGEsayl7dmFyIGQ9dGhpcy5heGlzLGM9ZC5jaGFydDtpZigiY29sb3JBeGlzIj09PWQuY29sbHx8IWMuY2hhcnQzZHx8IWMuaXMzZCgpKXJldHVybiBhO3ZhciBoPW0qYy5vcHRpb25zLmNoYXJ0Lm9wdGlvbnMzZC5hbHBoYSwKYj1tKmMub3B0aW9ucy5jaGFydC5vcHRpb25zM2QuYmV0YSx5PXEoayYmZC5vcHRpb25zLnRpdGxlLnBvc2l0aW9uM2QsZC5vcHRpb25zLmxhYmVscy5wb3NpdGlvbjNkKTtrPXEoayYmZC5vcHRpb25zLnRpdGxlLnNrZXczZCxkLm9wdGlvbnMubGFiZWxzLnNrZXczZCk7dmFyIGY9Yy5jaGFydDNkLmZyYW1lM2QsZz1jLnBsb3RMZWZ0LGU9Yy5wbG90V2lkdGgrZyxuPWMucGxvdFRvcCxsPWMucGxvdEhlaWdodCtuO2M9ITE7dmFyIHQ9MCx3PTAscj17eDowLHk6MSx6OjB9O2E9ZC5heGlzM0Quc3dhcFooe3g6YS54LHk6YS55LHo6MH0pO2lmKGQuaXNaQXhpcylpZihkLm9wcG9zaXRlKXtpZihudWxsPT09Zi5heGVzLnoudG9wKXJldHVybnt9O3c9YS55LW47YS54PWYuYXhlcy56LnRvcC54O2EueT1mLmF4ZXMuei50b3AueTtnPWYuYXhlcy56LnRvcC54RGlyO2M9IWYudG9wLmZyb250RmFjaW5nfWVsc2V7aWYobnVsbD09PWYuYXhlcy56LmJvdHRvbSlyZXR1cm57fTt3PWEueS1sO2EueD0KZi5heGVzLnouYm90dG9tLng7YS55PWYuYXhlcy56LmJvdHRvbS55O2c9Zi5heGVzLnouYm90dG9tLnhEaXI7Yz0hZi5ib3R0b20uZnJvbnRGYWNpbmd9ZWxzZSBpZihkLmhvcml6KWlmKGQub3Bwb3NpdGUpe2lmKG51bGw9PT1mLmF4ZXMueC50b3ApcmV0dXJue307dz1hLnktbjthLnk9Zi5heGVzLngudG9wLnk7YS56PWYuYXhlcy54LnRvcC56O2c9Zi5heGVzLngudG9wLnhEaXI7Yz0hZi50b3AuZnJvbnRGYWNpbmd9ZWxzZXtpZihudWxsPT09Zi5heGVzLnguYm90dG9tKXJldHVybnt9O3c9YS55LWw7YS55PWYuYXhlcy54LmJvdHRvbS55O2Euej1mLmF4ZXMueC5ib3R0b20uejtnPWYuYXhlcy54LmJvdHRvbS54RGlyO2M9IWYuYm90dG9tLmZyb250RmFjaW5nfWVsc2UgaWYoZC5vcHBvc2l0ZSl7aWYobnVsbD09PWYuYXhlcy55LnJpZ2h0KXJldHVybnt9O3Q9YS54LWU7YS54PWYuYXhlcy55LnJpZ2h0Lng7YS56PWYuYXhlcy55LnJpZ2h0Lno7Zz1mLmF4ZXMueS5yaWdodC54RGlyOwpnPXt4Omcueix5OmcueSx6Oi1nLnh9fWVsc2V7aWYobnVsbD09PWYuYXhlcy55LmxlZnQpcmV0dXJue307dD1hLngtZzthLng9Zi5heGVzLnkubGVmdC54O2Euej1mLmF4ZXMueS5sZWZ0Lno7Zz1mLmF4ZXMueS5sZWZ0LnhEaXJ9ImNoYXJ0IiE9PXkmJigiZmxhcCI9PT15P2QuaG9yaXo/KGI9TWF0aC5zaW4oaCksaD1NYXRoLmNvcyhoKSxkLm9wcG9zaXRlJiYoYj0tYiksYyYmKGI9LWIpLHI9e3g6Zy56KmIseTpoLHo6LWcueCpifSk6Zz17eDpNYXRoLmNvcyhiKSx5OjAsejpNYXRoLnNpbihiKX06Im9ydGhvIj09PXk/ZC5ob3Jpej8ocj1NYXRoLmNvcyhoKSx5PU1hdGguc2luKGIpKnIsaD0tTWF0aC5zaW4oaCksYj0tcipNYXRoLmNvcyhiKSxyPXt4OmcueSpiLWcueipoLHk6Zy56KnktZy54KmIsejpnLngqaC1nLnkqeX0saD0xL01hdGguc3FydChyLngqci54K3IueSpyLnkrci56KnIueiksYyYmKGg9LWgpLHI9e3g6aCpyLngseTpoKnIueSx6Omgqci56fSk6Zz17eDpNYXRoLmNvcyhiKSwKeTowLHo6TWF0aC5zaW4oYil9OmQuaG9yaXo/cj17eDpNYXRoLnNpbihiKSpNYXRoLnNpbihoKSx5Ok1hdGguY29zKGgpLHo6LU1hdGguY29zKGIpKk1hdGguc2luKGgpfTpnPXt4Ok1hdGguY29zKGIpLHk6MCx6Ok1hdGguc2luKGIpfSk7YS54Kz10KmcueCt3KnIueDthLnkrPXQqZy55K3cqci55O2Eueis9dCpnLnordypyLno7Yz11KFthXSxkLmNoYXJ0KVswXTtrJiYoMD5wKHUoW2Ese3g6YS54K2cueCx5OmEueStnLnksejphLnorZy56fSx7eDphLngrci54LHk6YS55K3IueSx6OmEueityLnp9XSxkLmNoYXJ0KSkmJihnPXt4Oi1nLngseTotZy55LHo6LWcuen0pLGE9dShbe3g6YS54LHk6YS55LHo6YS56fSx7eDphLngrZy54LHk6YS55K2cueSx6OmEueitnLnp9LHt4OmEueCtyLngseTphLnkrci55LHo6YS56K3Iuen1dLGQuY2hhcnQpLGMubWF0cml4PVthWzFdLngtYVswXS54LGFbMV0ueS1hWzBdLnksYVsyXS54LWFbMF0ueCxhWzJdLnktYVswXS55LGMueCxjLnldLGMubWF0cml4WzRdLT0KYy54KmMubWF0cml4WzBdK2MueSpjLm1hdHJpeFsyXSxjLm1hdHJpeFs1XS09Yy54KmMubWF0cml4WzFdK2MueSpjLm1hdHJpeFszXSk7cmV0dXJuIGN9O2QucHJvdG90eXBlLnN3YXBaPWZ1bmN0aW9uKGEsayl7dmFyIGQ9dGhpcy5heGlzO3JldHVybiBkLmlzWkF4aXM/KGs9az8wOmQuY2hhcnQucGxvdExlZnQse3g6aythLnoseTphLnksejphLngta30pOmF9O3JldHVybiBkfSgpO3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIGQoKXt9ZC5jb21wb3NlPWZ1bmN0aW9uKGEpe24oITAsYS5kZWZhdWx0T3B0aW9ucyxkLmRlZmF1bHRPcHRpb25zKTthLmtlZXBQcm9wcy5wdXNoKCJheGlzM0QiKTt3KGEsImluaXQiLGQub25Jbml0KTt3KGEsImFmdGVyU2V0T3B0aW9ucyIsZC5vbkFmdGVyU2V0T3B0aW9ucyk7dyhhLCJkcmF3Q3Jvc3NoYWlyIixkLm9uRHJhd0Nyb3NzaGFpcik7dyhhLCJkZXN0cm95IixkLm9uRGVzdHJveSk7YT1hLnByb3RvdHlwZTtEKGEsImdldExpbmVQYXRoIixkLndyYXBHZXRMaW5lUGF0aCk7CkQoYSwiZ2V0UGxvdEJhbmRQYXRoIixkLndyYXBHZXRQbG90QmFuZFBhdGgpO0QoYSwiZ2V0UGxvdExpbmVQYXRoIixkLndyYXBHZXRQbG90TGluZVBhdGgpO0QoYSwiZ2V0U2xvdFdpZHRoIixkLndyYXBHZXRTbG90V2lkdGgpO0QoYSwiZ2V0VGl0bGVQb3NpdGlvbiIsZC53cmFwR2V0VGl0bGVQb3NpdGlvbik7bC5jb21wb3NlKHQpfTtkLm9uQWZ0ZXJTZXRPcHRpb25zPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jaGFydCxkPXRoaXMub3B0aW9uczthLmlzM2QmJmEuaXMzZCgpJiYiY29sb3JBeGlzIiE9PXRoaXMuY29sbCYmKGQudGlja1dpZHRoPXEoZC50aWNrV2lkdGgsMCksZC5ncmlkTGluZVdpZHRoPXEoZC5ncmlkTGluZVdpZHRoLDEpKX07ZC5vbkRlc3Ryb3k9ZnVuY3Rpb24oKXtbImJhY2tGcmFtZSIsImJvdHRvbUZyYW1lIiwic2lkZUZyYW1lIl0uZm9yRWFjaChmdW5jdGlvbihhKXt0aGlzW2FdJiYodGhpc1thXT10aGlzW2FdLmRlc3Ryb3koKSl9LHRoaXMpfTtkLm9uRHJhd0Nyb3NzaGFpcj0KZnVuY3Rpb24oYSl7dGhpcy5jaGFydC5pczNkKCkmJiJjb2xvckF4aXMiIT09dGhpcy5jb2xsJiZhLnBvaW50JiYoYS5wb2ludC5jcm9zc2hhaXJQb3M9dGhpcy5pc1hBeGlzP2EucG9pbnQuYXhpc1hwb3M6dGhpcy5sZW4tYS5wb2ludC5heGlzWXBvcyl9O2Qub25Jbml0PWZ1bmN0aW9uKCl7dGhpcy5heGlzM0R8fCh0aGlzLmF4aXMzRD1uZXcgRSh0aGlzKSl9O2Qud3JhcEdldExpbmVQYXRoPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmNoYXJ0LmlzM2QoKSYmImNvbG9yQXhpcyIhPT10aGlzLmNvbGw/W106YS5hcHBseSh0aGlzLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKX07ZC53cmFwR2V0UGxvdEJhbmRQYXRoPWZ1bmN0aW9uKGEpe2lmKCF0aGlzLmNoYXJ0LmlzM2QoKXx8ImNvbG9yQXhpcyI9PT10aGlzLmNvbGwpcmV0dXJuIGEuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSk7dmFyIGQ9YXJndW1lbnRzLGI9ZFsyXSxjPVtdO2Q9dGhpcy5nZXRQbG90TGluZVBhdGgoe3ZhbHVlOmRbMV19KTsKYj10aGlzLmdldFBsb3RMaW5lUGF0aCh7dmFsdWU6Yn0pO2lmKGQmJmIpZm9yKHZhciBoPTA7aDxkLmxlbmd0aDtoKz0yKXt2YXIgZz1kW2hdLHA9ZFtoKzFdLGY9YltoXSxtPWJbaCsxXTsiTSI9PT1nWzBdJiYiTCI9PT1wWzBdJiYiTSI9PT1mWzBdJiYiTCI9PT1tWzBdJiZjLnB1c2goZyxwLG0sWyJMIixmWzFdLGZbMl1dLFsiWiJdKX1yZXR1cm4gY307ZC53cmFwR2V0UGxvdExpbmVQYXRoPWZ1bmN0aW9uKGEpe3ZhciBkPXRoaXMuYXhpczNELGI9dGhpcy5jaGFydCxjPWEuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSk7aWYoImNvbG9yQXhpcyI9PT10aGlzLmNvbGx8fCFiLmNoYXJ0M2R8fCFiLmlzM2QoKXx8bnVsbD09PWMpcmV0dXJuIGM7dmFyIGg9Yi5vcHRpb25zLmNoYXJ0Lm9wdGlvbnMzZCxnPXRoaXMuaXNaQXhpcz9iLnBsb3RXaWR0aDpoLmRlcHRoO2g9Yi5jaGFydDNkLmZyYW1lM2Q7dmFyIHA9Y1swXSxmPWNbMV07Yz1bXTsiTSI9PT1wWzBdJiYiTCI9PT0KZlswXSYmKGQ9W2Quc3dhcFooe3g6cFsxXSx5OnBbMl0sejowfSksZC5zd2FwWih7eDpwWzFdLHk6cFsyXSx6Omd9KSxkLnN3YXBaKHt4OmZbMV0seTpmWzJdLHo6MH0pLGQuc3dhcFooe3g6ZlsxXSx5OmZbMl0sejpnfSldLHRoaXMuaG9yaXo/KHRoaXMuaXNaQXhpcz8oaC5sZWZ0LnZpc2libGUmJmMucHVzaChkWzBdLGRbMl0pLGgucmlnaHQudmlzaWJsZSYmYy5wdXNoKGRbMV0sZFszXSkpOihoLmZyb250LnZpc2libGUmJmMucHVzaChkWzBdLGRbMl0pLGguYmFjay52aXNpYmxlJiZjLnB1c2goZFsxXSxkWzNdKSksaC50b3AudmlzaWJsZSYmYy5wdXNoKGRbMF0sZFsxXSksaC5ib3R0b20udmlzaWJsZSYmYy5wdXNoKGRbMl0sZFszXSkpOihoLmZyb250LnZpc2libGUmJmMucHVzaChkWzBdLGRbMl0pLGguYmFjay52aXNpYmxlJiZjLnB1c2goZFsxXSxkWzNdKSxoLmxlZnQudmlzaWJsZSYmYy5wdXNoKGRbMF0sZFsxXSksaC5yaWdodC52aXNpYmxlJiZjLnB1c2goZFsyXSxkWzNdKSksCmM9dShjLHRoaXMuY2hhcnQsITEpKTtyZXR1cm4gYi5yZW5kZXJlci50b0xpbmVTZWdtZW50cyhjKX07ZC53cmFwR2V0U2xvdFdpZHRoPWZ1bmN0aW9uKGEsZCl7dmFyIGI9dGhpcy5jaGFydCxjPXRoaXMudGlja3MsaD10aGlzLmdyaWRHcm91cDtpZih0aGlzLmNhdGVnb3JpZXMmJmIuZnJhbWVTaGFwZXMmJmIuaXMzZCgpJiZoJiZkJiZkLmxhYmVsKXtoPWguZWxlbWVudC5jaGlsZE5vZGVzWzBdLmdldEJCb3goKTt2YXIgaz1iLmZyYW1lU2hhcGVzLmxlZnQuZ2V0QkJveCgpLHA9Yi5vcHRpb25zLmNoYXJ0Lm9wdGlvbnMzZDtiPXt4OmIucGxvdFdpZHRoLzIseTpiLnBsb3RIZWlnaHQvMix6OnAuZGVwdGgvMix2ZDpxKHAuZGVwdGgsMSkqcShwLnZpZXdEaXN0YW5jZSwwKX07dmFyIGYsbTtwPWQucG9zO3ZhciBlPWNbcC0xXTtjPWNbcCsxXTswIT09cCYmZSYmZS5sYWJlbC54eSYmKGY9Zyh7eDplLmxhYmVsLnh5LngseTplLmxhYmVsLnh5LnksejpudWxsfSxiLGIudmQpKTtjJiZjLmxhYmVsLnh5JiYKKG09Zyh7eDpjLmxhYmVsLnh5LngseTpjLmxhYmVsLnh5LnksejpudWxsfSxiLGIudmQpKTtjPXt4OmQubGFiZWwueHkueCx5OmQubGFiZWwueHkueSx6Om51bGx9O2M9ZyhjLGIsYi52ZCk7cmV0dXJuIE1hdGguYWJzKGY/Yy54LWYueDptP20ueC1jLng6aC54LWsueCl9cmV0dXJuIGEuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9O2Qud3JhcEdldFRpdGxlUG9zaXRpb249ZnVuY3Rpb24oYSl7dmFyIGQ9YS5hcHBseSh0aGlzLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKTtyZXR1cm4gdGhpcy5heGlzM0Q/dGhpcy5heGlzM0QuZml4M2RQb3NpdGlvbihkLCEwKTpkfTtkLmRlZmF1bHRPcHRpb25zPXtsYWJlbHM6e3Bvc2l0aW9uM2Q6Im9mZnNldCIsc2tldzNkOiExfSx0aXRsZTp7cG9zaXRpb24zZDpudWxsLHNrZXczZDpudWxsfX07cmV0dXJuIGR9KCl9KTtGKGIsInBhcnRzLTNkL1pBeGlzLmpzIixbYlsicGFydHMvQXhpcy5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdXSwKZnVuY3Rpb24oYix0KXt2YXIgbD10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZD1mdW5jdGlvbihiLHApe2Q9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsYil7ZC5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGQsYil7Zm9yKHZhciBhIGluIGIpYi5oYXNPd25Qcm9wZXJ0eShhKSYmKGRbYV09YlthXSl9O3JldHVybiBkKGIscCl9O3JldHVybiBmdW5jdGlvbihiLHApe2Z1bmN0aW9uIGcoKXt0aGlzLmNvbnN0cnVjdG9yPWJ9ZChiLHApO2IucHJvdG90eXBlPW51bGw9PT1wP09iamVjdC5jcmVhdGUocCk6KGcucHJvdG90eXBlPXAucHJvdG90eXBlLG5ldyBnKX19KCksZD10LmFkZEV2ZW50LHc9dC5tZXJnZSxuPXQucGljayxxPXQuc3BsYXQsRD1mdW5jdGlvbigpe2Z1bmN0aW9uIGIoKXt9Yi5jb21wb3NlPWZ1bmN0aW9uKGcpe2QoZywiYWZ0ZXJHZXRBeGVzIixiLm9uQWZ0ZXJHZXRBeGVzKTtnPQpnLnByb3RvdHlwZTtnLmFkZFpBeGlzPWIud3JhcEFkZFpBeGlzO2cuY29sbGVjdGlvbnNXaXRoSW5pdC56QXhpcz1bZy5hZGRaQXhpc107Zy5jb2xsZWN0aW9uc1dpdGhVcGRhdGUucHVzaCgiekF4aXMiKX07Yi5vbkFmdGVyR2V0QXhlcz1mdW5jdGlvbigpe3ZhciBkPXRoaXMsYj10aGlzLm9wdGlvbnM7Yj1iLnpBeGlzPXEoYi56QXhpc3x8e30pO2QuaXMzZCgpJiYoZC56QXhpcz1bXSxiLmZvckVhY2goZnVuY3Rpb24oYixnKXtiLmluZGV4PWc7Yi5pc1g9ITA7ZC5hZGRaQXhpcyhiKS5zZXRTY2FsZSgpfSkpfTtiLndyYXBBZGRaQXhpcz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3IG0odGhpcyxkKX07cmV0dXJuIGJ9KCksbT1mdW5jdGlvbihkKXtmdW5jdGlvbiBiKGIsZyl7Yj1kLmNhbGwodGhpcyxiLGcpfHx0aGlzO2IuaXNaQXhpcz0hMDtyZXR1cm4gYn1sKGIsZCk7Yi5wcm90b3R5cGUuZ2V0U2VyaWVzRXh0cmVtZXM9ZnVuY3Rpb24oKXt2YXIgZD10aGlzLGI9ZC5jaGFydDtkLmhhc1Zpc2libGVTZXJpZXM9CiExO2QuZGF0YU1pbj1kLmRhdGFNYXg9ZC5pZ25vcmVNaW5QYWRkaW5nPWQuaWdub3JlTWF4UGFkZGluZz12b2lkIDA7ZC5zdGFja2luZyYmZC5zdGFja2luZy5idWlsZFN0YWNrcygpO2Quc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZyl7IWcudmlzaWJsZSYmYi5vcHRpb25zLmNoYXJ0JiZiLm9wdGlvbnMuY2hhcnQuaWdub3JlSGlkZGVuU2VyaWVzfHwoZC5oYXNWaXNpYmxlU2VyaWVzPSEwLGc9Zy56RGF0YSxnLmxlbmd0aCYmKGQuZGF0YU1pbj1NYXRoLm1pbihuKGQuZGF0YU1pbixnWzBdKSxNYXRoLm1pbi5hcHBseShudWxsLGcpKSxkLmRhdGFNYXg9TWF0aC5tYXgobihkLmRhdGFNYXgsZ1swXSksTWF0aC5tYXguYXBwbHkobnVsbCxnKSkpKX0pfTtiLnByb3RvdHlwZS5zZXRBeGlzU2l6ZT1mdW5jdGlvbigpe3ZhciBiPXRoaXMuY2hhcnQ7ZC5wcm90b3R5cGUuc2V0QXhpc1NpemUuY2FsbCh0aGlzKTt0aGlzLndpZHRoPXRoaXMubGVuPWIub3B0aW9ucy5jaGFydCYmYi5vcHRpb25zLmNoYXJ0Lm9wdGlvbnMzZCYmCmIub3B0aW9ucy5jaGFydC5vcHRpb25zM2QuZGVwdGh8fDA7dGhpcy5yaWdodD1iLmNoYXJ0V2lkdGgtdGhpcy53aWR0aC10aGlzLmxlZnR9O2IucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24oYil7Yj13KHtvZmZzZXQ6MCxsaW5lV2lkdGg6MH0sYik7ZC5wcm90b3R5cGUuc2V0T3B0aW9ucy5jYWxsKHRoaXMsYik7dGhpcy5jb2xsPSJ6QXhpcyJ9O2IuWkNoYXJ0Q29tcG9zaXRpb249RDtyZXR1cm4gYn0oYik7cmV0dXJuIG19KTtGKGIsInBhcnRzLTNkL0NoYXJ0M0QuanMiLFtiWyJwYXJ0cy9BeGlzLmpzIl0sYlsicGFydHMtM2QvQXhpczNELmpzIl0sYlsicGFydHMvQ2hhcnQuanMiXSxiWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYlsicGFydHMvT3B0aW9ucy5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdLGJbInBhcnRzLTNkL1pBeGlzLmpzIl1dLGZ1bmN0aW9uKGIsdCxsLGQsdyxuLHEpe3ZhciBEPXcuZGVmYXVsdE9wdGlvbnMsbT1uLmFkZEV2ZW50O3c9bi5GeDt2YXIgdT0Kbi5pc0FycmF5LGc9bi5tZXJnZSxwPW4ucGljayxFPW4ud3JhcCx5PWQucGVyc3BlY3RpdmUsYTsoZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhKXt0aGlzLmlzM2QoKSYmInNjYXR0ZXIiPT09YS5vcHRpb25zLnR5cGUmJihhLm9wdGlvbnMudHlwZT0ic2NhdHRlcjNkIil9ZnVuY3Rpb24gYygpe2lmKHRoaXMuY2hhcnQzZCYmdGhpcy5pczNkKCkpe3ZhciBhPXRoaXMucmVuZGVyZXIsYj10aGlzLm9wdGlvbnMuY2hhcnQub3B0aW9uczNkLGM9dGhpcy5jaGFydDNkLmdldDNkRnJhbWUoKSxlPXRoaXMucGxvdExlZnQsaD10aGlzLnBsb3RMZWZ0K3RoaXMucGxvdFdpZHRoLGY9dGhpcy5wbG90VG9wLGs9dGhpcy5wbG90VG9wK3RoaXMucGxvdEhlaWdodDtiPWIuZGVwdGg7dmFyIGc9ZS0oYy5sZWZ0LnZpc2libGU/Yy5sZWZ0LnNpemU6MCksbT1oKyhjLnJpZ2h0LnZpc2libGU/Yy5yaWdodC5zaXplOjApLG49Zi0oYy50b3AudmlzaWJsZT9jLnRvcC5zaXplOjApLHE9aysoYy5ib3R0b20udmlzaWJsZT8KYy5ib3R0b20uc2l6ZTowKSxsPTAtKGMuZnJvbnQudmlzaWJsZT9jLmZyb250LnNpemU6MCkscD1iKyhjLmJhY2sudmlzaWJsZT9jLmJhY2suc2l6ZTowKSx5PXRoaXMuaGFzUmVuZGVyZWQ/ImFuaW1hdGUiOiJhdHRyIjt0aGlzLmNoYXJ0M2QuZnJhbWUzZD1jO3RoaXMuZnJhbWVTaGFwZXN8fCh0aGlzLmZyYW1lU2hhcGVzPXtib3R0b206YS5wb2x5aGVkcm9uKCkuYWRkKCksdG9wOmEucG9seWhlZHJvbigpLmFkZCgpLGxlZnQ6YS5wb2x5aGVkcm9uKCkuYWRkKCkscmlnaHQ6YS5wb2x5aGVkcm9uKCkuYWRkKCksYmFjazphLnBvbHloZWRyb24oKS5hZGQoKSxmcm9udDphLnBvbHloZWRyb24oKS5hZGQoKX0pO3RoaXMuZnJhbWVTaGFwZXMuYm90dG9tW3ldKHsiY2xhc3MiOiJoaWdoY2hhcnRzLTNkLWZyYW1lIGhpZ2hjaGFydHMtM2QtZnJhbWUtYm90dG9tIix6SW5kZXg6Yy5ib3R0b20uZnJvbnRGYWNpbmc/LTFFMzoxRTMsZmFjZXM6W3tmaWxsOmQuY29sb3IoYy5ib3R0b20uY29sb3IpLmJyaWdodGVuKC4xKS5nZXQoKSwKdmVydGV4ZXM6W3t4OmcseTpxLHo6bH0se3g6bSx5OnEsejpsfSx7eDptLHk6cSx6OnB9LHt4OmcseTpxLHo6cH1dLGVuYWJsZWQ6Yy5ib3R0b20udmlzaWJsZX0se2ZpbGw6ZC5jb2xvcihjLmJvdHRvbS5jb2xvcikuYnJpZ2h0ZW4oLjEpLmdldCgpLHZlcnRleGVzOlt7eDplLHk6ayx6OmJ9LHt4OmgseTprLHo6Yn0se3g6aCx5OmssejowfSx7eDplLHk6ayx6OjB9XSxlbmFibGVkOmMuYm90dG9tLnZpc2libGV9LHtmaWxsOmQuY29sb3IoYy5ib3R0b20uY29sb3IpLmJyaWdodGVuKC0uMSkuZ2V0KCksdmVydGV4ZXM6W3t4OmcseTpxLHo6bH0se3g6Zyx5OnEsejpwfSx7eDplLHk6ayx6OmJ9LHt4OmUseTprLHo6MH1dLGVuYWJsZWQ6Yy5ib3R0b20udmlzaWJsZSYmIWMubGVmdC52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMuYm90dG9tLmNvbG9yKS5icmlnaHRlbigtLjEpLmdldCgpLHZlcnRleGVzOlt7eDptLHk6cSx6OnB9LHt4Om0seTpxLHo6bH0se3g6aCx5OmssejowfSx7eDpoLAp5OmssejpifV0sZW5hYmxlZDpjLmJvdHRvbS52aXNpYmxlJiYhYy5yaWdodC52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMuYm90dG9tLmNvbG9yKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6bSx5OnEsejpsfSx7eDpnLHk6cSx6Omx9LHt4OmUseTprLHo6MH0se3g6aCx5OmssejowfV0sZW5hYmxlZDpjLmJvdHRvbS52aXNpYmxlJiYhYy5mcm9udC52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMuYm90dG9tLmNvbG9yKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6Zyx5OnEsejpwfSx7eDptLHk6cSx6OnB9LHt4OmgseTprLHo6Yn0se3g6ZSx5OmssejpifV0sZW5hYmxlZDpjLmJvdHRvbS52aXNpYmxlJiYhYy5iYWNrLnZpc2libGV9XX0pO3RoaXMuZnJhbWVTaGFwZXMudG9wW3ldKHsiY2xhc3MiOiJoaWdoY2hhcnRzLTNkLWZyYW1lIGhpZ2hjaGFydHMtM2QtZnJhbWUtdG9wIix6SW5kZXg6Yy50b3AuZnJvbnRGYWNpbmc/LTFFMzoxRTMsZmFjZXM6W3tmaWxsOmQuY29sb3IoYy50b3AuY29sb3IpLmJyaWdodGVuKC4xKS5nZXQoKSwKdmVydGV4ZXM6W3t4OmcseTpuLHo6cH0se3g6bSx5Om4sejpwfSx7eDptLHk6bix6Omx9LHt4OmcseTpuLHo6bH1dLGVuYWJsZWQ6Yy50b3AudmlzaWJsZX0se2ZpbGw6ZC5jb2xvcihjLnRvcC5jb2xvcikuYnJpZ2h0ZW4oLjEpLmdldCgpLHZlcnRleGVzOlt7eDplLHk6Zix6OjB9LHt4OmgseTpmLHo6MH0se3g6aCx5OmYsejpifSx7eDplLHk6Zix6OmJ9XSxlbmFibGVkOmMudG9wLnZpc2libGV9LHtmaWxsOmQuY29sb3IoYy50b3AuY29sb3IpLmJyaWdodGVuKC0uMSkuZ2V0KCksdmVydGV4ZXM6W3t4OmcseTpuLHo6cH0se3g6Zyx5Om4sejpsfSx7eDplLHk6Zix6OjB9LHt4OmUseTpmLHo6Yn1dLGVuYWJsZWQ6Yy50b3AudmlzaWJsZSYmIWMubGVmdC52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMudG9wLmNvbG9yKS5icmlnaHRlbigtLjEpLmdldCgpLHZlcnRleGVzOlt7eDptLHk6bix6Omx9LHt4Om0seTpuLHo6cH0se3g6aCx5OmYsejpifSx7eDpoLHk6Zix6OjB9XSxlbmFibGVkOmMudG9wLnZpc2libGUmJgohYy5yaWdodC52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMudG9wLmNvbG9yKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6Zyx5Om4sejpsfSx7eDptLHk6bix6Omx9LHt4OmgseTpmLHo6MH0se3g6ZSx5OmYsejowfV0sZW5hYmxlZDpjLnRvcC52aXNpYmxlJiYhYy5mcm9udC52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMudG9wLmNvbG9yKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6bSx5Om4sejpwfSx7eDpnLHk6bix6OnB9LHt4OmUseTpmLHo6Yn0se3g6aCx5OmYsejpifV0sZW5hYmxlZDpjLnRvcC52aXNpYmxlJiYhYy5iYWNrLnZpc2libGV9XX0pO3RoaXMuZnJhbWVTaGFwZXMubGVmdFt5XSh7ImNsYXNzIjoiaGlnaGNoYXJ0cy0zZC1mcmFtZSBoaWdoY2hhcnRzLTNkLWZyYW1lLWxlZnQiLHpJbmRleDpjLmxlZnQuZnJvbnRGYWNpbmc/LTFFMzoxRTMsZmFjZXM6W3tmaWxsOmQuY29sb3IoYy5sZWZ0LmNvbG9yKS5icmlnaHRlbiguMSkuZ2V0KCksdmVydGV4ZXM6W3t4OmcseTpxLHo6bH0se3g6ZSwKeTprLHo6MH0se3g6ZSx5OmssejpifSx7eDpnLHk6cSx6OnB9XSxlbmFibGVkOmMubGVmdC52aXNpYmxlJiYhYy5ib3R0b20udmlzaWJsZX0se2ZpbGw6ZC5jb2xvcihjLmxlZnQuY29sb3IpLmJyaWdodGVuKC4xKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6Zyx5Om4sejpwfSx7eDplLHk6Zix6OmJ9LHt4OmUseTpmLHo6MH0se3g6Zyx5Om4sejpsfV0sZW5hYmxlZDpjLmxlZnQudmlzaWJsZSYmIWMudG9wLnZpc2libGV9LHtmaWxsOmQuY29sb3IoYy5sZWZ0LmNvbG9yKS5icmlnaHRlbigtLjEpLmdldCgpLHZlcnRleGVzOlt7eDpnLHk6cSx6OnB9LHt4OmcseTpuLHo6cH0se3g6Zyx5Om4sejpsfSx7eDpnLHk6cSx6Omx9XSxlbmFibGVkOmMubGVmdC52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMubGVmdC5jb2xvcikuYnJpZ2h0ZW4oLS4xKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6ZSx5OmYsejpifSx7eDplLHk6ayx6OmJ9LHt4OmUseTprLHo6MH0se3g6ZSx5OmYsejowfV0sZW5hYmxlZDpjLmxlZnQudmlzaWJsZX0sCntmaWxsOmQuY29sb3IoYy5sZWZ0LmNvbG9yKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6Zyx5OnEsejpsfSx7eDpnLHk6bix6Omx9LHt4OmUseTpmLHo6MH0se3g6ZSx5OmssejowfV0sZW5hYmxlZDpjLmxlZnQudmlzaWJsZSYmIWMuZnJvbnQudmlzaWJsZX0se2ZpbGw6ZC5jb2xvcihjLmxlZnQuY29sb3IpLmdldCgpLHZlcnRleGVzOlt7eDpnLHk6bix6OnB9LHt4OmcseTpxLHo6cH0se3g6ZSx5OmssejpifSx7eDplLHk6Zix6OmJ9XSxlbmFibGVkOmMubGVmdC52aXNpYmxlJiYhYy5iYWNrLnZpc2libGV9XX0pO3RoaXMuZnJhbWVTaGFwZXMucmlnaHRbeV0oeyJjbGFzcyI6ImhpZ2hjaGFydHMtM2QtZnJhbWUgaGlnaGNoYXJ0cy0zZC1mcmFtZS1yaWdodCIsekluZGV4OmMucmlnaHQuZnJvbnRGYWNpbmc/LTFFMzoxRTMsZmFjZXM6W3tmaWxsOmQuY29sb3IoYy5yaWdodC5jb2xvcikuYnJpZ2h0ZW4oLjEpLmdldCgpLHZlcnRleGVzOlt7eDptLHk6cSx6OnB9LHt4OmgseTprLHo6Yn0se3g6aCwKeTprLHo6MH0se3g6bSx5OnEsejpsfV0sZW5hYmxlZDpjLnJpZ2h0LnZpc2libGUmJiFjLmJvdHRvbS52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMucmlnaHQuY29sb3IpLmJyaWdodGVuKC4xKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6bSx5Om4sejpsfSx7eDpoLHk6Zix6OjB9LHt4OmgseTpmLHo6Yn0se3g6bSx5Om4sejpwfV0sZW5hYmxlZDpjLnJpZ2h0LnZpc2libGUmJiFjLnRvcC52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMucmlnaHQuY29sb3IpLmJyaWdodGVuKC0uMSkuZ2V0KCksdmVydGV4ZXM6W3t4OmgseTpmLHo6MH0se3g6aCx5OmssejowfSx7eDpoLHk6ayx6OmJ9LHt4OmgseTpmLHo6Yn1dLGVuYWJsZWQ6Yy5yaWdodC52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMucmlnaHQuY29sb3IpLmJyaWdodGVuKC0uMSkuZ2V0KCksdmVydGV4ZXM6W3t4Om0seTpxLHo6bH0se3g6bSx5Om4sejpsfSx7eDptLHk6bix6OnB9LHt4Om0seTpxLHo6cH1dLGVuYWJsZWQ6Yy5yaWdodC52aXNpYmxlfSwKe2ZpbGw6ZC5jb2xvcihjLnJpZ2h0LmNvbG9yKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6bSx5Om4sejpsfSx7eDptLHk6cSx6Omx9LHt4OmgseTprLHo6MH0se3g6aCx5OmYsejowfV0sZW5hYmxlZDpjLnJpZ2h0LnZpc2libGUmJiFjLmZyb250LnZpc2libGV9LHtmaWxsOmQuY29sb3IoYy5yaWdodC5jb2xvcikuZ2V0KCksdmVydGV4ZXM6W3t4Om0seTpxLHo6cH0se3g6bSx5Om4sejpwfSx7eDpoLHk6Zix6OmJ9LHt4OmgseTprLHo6Yn1dLGVuYWJsZWQ6Yy5yaWdodC52aXNpYmxlJiYhYy5iYWNrLnZpc2libGV9XX0pO3RoaXMuZnJhbWVTaGFwZXMuYmFja1t5XSh7ImNsYXNzIjoiaGlnaGNoYXJ0cy0zZC1mcmFtZSBoaWdoY2hhcnRzLTNkLWZyYW1lLWJhY2siLHpJbmRleDpjLmJhY2suZnJvbnRGYWNpbmc/LTFFMzoxRTMsZmFjZXM6W3tmaWxsOmQuY29sb3IoYy5iYWNrLmNvbG9yKS5icmlnaHRlbiguMSkuZ2V0KCksdmVydGV4ZXM6W3t4Om0seTpxLHo6cH0se3g6Zyx5OnEsejpwfSx7eDplLAp5OmssejpifSx7eDpoLHk6ayx6OmJ9XSxlbmFibGVkOmMuYmFjay52aXNpYmxlJiYhYy5ib3R0b20udmlzaWJsZX0se2ZpbGw6ZC5jb2xvcihjLmJhY2suY29sb3IpLmJyaWdodGVuKC4xKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6Zyx5Om4sejpwfSx7eDptLHk6bix6OnB9LHt4OmgseTpmLHo6Yn0se3g6ZSx5OmYsejpifV0sZW5hYmxlZDpjLmJhY2sudmlzaWJsZSYmIWMudG9wLnZpc2libGV9LHtmaWxsOmQuY29sb3IoYy5iYWNrLmNvbG9yKS5icmlnaHRlbigtLjEpLmdldCgpLHZlcnRleGVzOlt7eDpnLHk6cSx6OnB9LHt4OmcseTpuLHo6cH0se3g6ZSx5OmYsejpifSx7eDplLHk6ayx6OmJ9XSxlbmFibGVkOmMuYmFjay52aXNpYmxlJiYhYy5sZWZ0LnZpc2libGV9LHtmaWxsOmQuY29sb3IoYy5iYWNrLmNvbG9yKS5icmlnaHRlbigtLjEpLmdldCgpLHZlcnRleGVzOlt7eDptLHk6bix6OnB9LHt4Om0seTpxLHo6cH0se3g6aCx5OmssejpifSx7eDpoLHk6Zix6OmJ9XSxlbmFibGVkOmMuYmFjay52aXNpYmxlJiYKIWMucmlnaHQudmlzaWJsZX0se2ZpbGw6ZC5jb2xvcihjLmJhY2suY29sb3IpLmdldCgpLHZlcnRleGVzOlt7eDplLHk6Zix6OmJ9LHt4OmgseTpmLHo6Yn0se3g6aCx5OmssejpifSx7eDplLHk6ayx6OmJ9XSxlbmFibGVkOmMuYmFjay52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMuYmFjay5jb2xvcikuZ2V0KCksdmVydGV4ZXM6W3t4OmcseTpxLHo6cH0se3g6bSx5OnEsejpwfSx7eDptLHk6bix6OnB9LHt4OmcseTpuLHo6cH1dLGVuYWJsZWQ6Yy5iYWNrLnZpc2libGV9XX0pO3RoaXMuZnJhbWVTaGFwZXMuZnJvbnRbeV0oeyJjbGFzcyI6ImhpZ2hjaGFydHMtM2QtZnJhbWUgaGlnaGNoYXJ0cy0zZC1mcmFtZS1mcm9udCIsekluZGV4OmMuZnJvbnQuZnJvbnRGYWNpbmc/LTFFMzoxRTMsZmFjZXM6W3tmaWxsOmQuY29sb3IoYy5mcm9udC5jb2xvcikuYnJpZ2h0ZW4oLjEpLmdldCgpLHZlcnRleGVzOlt7eDpnLHk6cSx6Omx9LHt4Om0seTpxLHo6bH0se3g6aCx5OmssejowfSx7eDplLAp5OmssejowfV0sZW5hYmxlZDpjLmZyb250LnZpc2libGUmJiFjLmJvdHRvbS52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMuZnJvbnQuY29sb3IpLmJyaWdodGVuKC4xKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6bSx5Om4sejpsfSx7eDpnLHk6bix6Omx9LHt4OmUseTpmLHo6MH0se3g6aCx5OmYsejowfV0sZW5hYmxlZDpjLmZyb250LnZpc2libGUmJiFjLnRvcC52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMuZnJvbnQuY29sb3IpLmJyaWdodGVuKC0uMSkuZ2V0KCksdmVydGV4ZXM6W3t4OmcseTpuLHo6bH0se3g6Zyx5OnEsejpsfSx7eDplLHk6ayx6OjB9LHt4OmUseTpmLHo6MH1dLGVuYWJsZWQ6Yy5mcm9udC52aXNpYmxlJiYhYy5sZWZ0LnZpc2libGV9LHtmaWxsOmQuY29sb3IoYy5mcm9udC5jb2xvcikuYnJpZ2h0ZW4oLS4xKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6bSx5OnEsejpsfSx7eDptLHk6bix6Omx9LHt4OmgseTpmLHo6MH0se3g6aCx5OmssejowfV0sZW5hYmxlZDpjLmZyb250LnZpc2libGUmJgohYy5yaWdodC52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMuZnJvbnQuY29sb3IpLmdldCgpLHZlcnRleGVzOlt7eDpoLHk6Zix6OjB9LHt4OmUseTpmLHo6MH0se3g6ZSx5OmssejowfSx7eDpoLHk6ayx6OjB9XSxlbmFibGVkOmMuZnJvbnQudmlzaWJsZX0se2ZpbGw6ZC5jb2xvcihjLmZyb250LmNvbG9yKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6bSx5OnEsejpsfSx7eDpnLHk6cSx6Omx9LHt4OmcseTpuLHo6bH0se3g6bSx5Om4sejpsfV0sZW5hYmxlZDpjLmZyb250LnZpc2libGV9XX0pfX1mdW5jdGlvbiBoKCl7dGhpcy5zdHlsZWRNb2RlJiYodGhpcy5yZW5kZXJlci5kZWZpbml0aW9uKHt0YWdOYW1lOiJzdHlsZSIsdGV4dENvbnRlbnQ6Ii5oaWdoY2hhcnRzLTNkLXRvcHtmaWx0ZXI6IHVybCgjaGlnaGNoYXJ0cy1icmlnaHRlcil9XG4uaGlnaGNoYXJ0cy0zZC1zaWRle2ZpbHRlcjogdXJsKCNoaWdoY2hhcnRzLWRhcmtlcil9XG4ifSksW3tuYW1lOiJkYXJrZXIiLHNsb3BlOi42fSwKe25hbWU6ImJyaWdodGVyIixzbG9wZToxLjR9XS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3RoaXMucmVuZGVyZXIuZGVmaW5pdGlvbih7dGFnTmFtZToiZmlsdGVyIixpZDoiaGlnaGNoYXJ0cy0iK2EubmFtZSxjaGlsZHJlbjpbe3RhZ05hbWU6ImZlQ29tcG9uZW50VHJhbnNmZXIiLGNoaWxkcmVuOlt7dGFnTmFtZToiZmVGdW5jUiIsdHlwZToibGluZWFyIixzbG9wZTphLnNsb3BlfSx7dGFnTmFtZToiZmVGdW5jRyIsdHlwZToibGluZWFyIixzbG9wZTphLnNsb3BlfSx7dGFnTmFtZToiZmVGdW5jQiIsdHlwZToibGluZWFyIixzbG9wZTphLnNsb3BlfV19XX0pfSx0aGlzKSl9ZnVuY3Rpb24gaygpe3ZhciBhPXRoaXMub3B0aW9uczt0aGlzLmlzM2QoKSYmKGEuc2VyaWVzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihjKXsic2NhdHRlciI9PT0oYy50eXBlfHxhLmNoYXJ0LnR5cGV8fGEuY2hhcnQuZGVmYXVsdFNlcmllc1R5cGUpJiYoYy50eXBlPSJzY2F0dGVyM2QiKX0pfWZ1bmN0aW9uIG4oKXt2YXIgYT0KdGhpcy5vcHRpb25zLmNoYXJ0Lm9wdGlvbnMzZDtpZih0aGlzLmNoYXJ0M2QmJnRoaXMuaXMzZCgpKXthJiYoYS5hbHBoYT1hLmFscGhhJTM2MCsoMDw9YS5hbHBoYT8wOjM2MCksYS5iZXRhPWEuYmV0YSUzNjArKDA8PWEuYmV0YT8wOjM2MCkpO3ZhciBjPXRoaXMuaW52ZXJ0ZWQsYj10aGlzLmNsaXBCb3gsZD10aGlzLm1hcmdpbjtiW2M/InkiOiJ4Il09LShkWzNdfHwwKTtiW2M/IngiOiJ5Il09LShkWzBdfHwwKTtiW2M/ImhlaWdodCI6IndpZHRoIl09dGhpcy5jaGFydFdpZHRoKyhkWzNdfHwwKSsoZFsxXXx8MCk7YltjPyJ3aWR0aCI6ImhlaWdodCJdPXRoaXMuY2hhcnRIZWlnaHQrKGRbMF18fDApKyhkWzJdfHwwKTt0aGlzLnNjYWxlM2Q9MTshMD09PWEuZml0VG9QbG90JiYodGhpcy5zY2FsZTNkPXRoaXMuY2hhcnQzZC5nZXRTY2FsZShhLmRlcHRoKSk7dGhpcy5jaGFydDNkLmZyYW1lM2Q9dGhpcy5jaGFydDNkLmdldDNkRnJhbWUoKX19ZnVuY3Rpb24gZigpe3RoaXMuaXMzZCgpJiYKKHRoaXMuaXNEaXJ0eUJveD0hMCl9ZnVuY3Rpb24gcSgpe3RoaXMuY2hhcnQzZCYmdGhpcy5pczNkKCkmJih0aGlzLmNoYXJ0M2QuZnJhbWUzZD10aGlzLmNoYXJ0M2QuZ2V0M2RGcmFtZSgpKX1mdW5jdGlvbiBlKCl7dGhpcy5jaGFydDNkfHwodGhpcy5jaGFydDNkPW5ldyBMKHRoaXMpKX1mdW5jdGlvbiBsKGEpe3JldHVybiB0aGlzLmlzM2QoKXx8YS5hcHBseSh0aGlzLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKX1mdW5jdGlvbiB3KGEpe3ZhciBjPXRoaXMuc2VyaWVzLmxlbmd0aDtpZih0aGlzLmlzM2QoKSlmb3IoO2MtLTspYT10aGlzLnNlcmllc1tjXSxhLnRyYW5zbGF0ZSgpLGEucmVuZGVyKCk7ZWxzZSBhLmNhbGwodGhpcyl9ZnVuY3Rpb24gdChhKXthLmFwcGx5KHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpO3RoaXMuaXMzZCgpJiYodGhpcy5jb250YWluZXIuY2xhc3NOYW1lKz0iIGhpZ2hjaGFydHMtM2QtY2hhcnQiKX12YXIgTD1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7dGhpcy5mcmFtZTNkPQp2b2lkIDA7dGhpcy5jaGFydD1hfWEucHJvdG90eXBlLmdldDNkRnJhbWU9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNoYXJ0LGM9YS5vcHRpb25zLmNoYXJ0Lm9wdGlvbnMzZCxiPWMuZnJhbWUsZT1hLnBsb3RMZWZ0LGg9YS5wbG90TGVmdCthLnBsb3RXaWR0aCxmPWEucGxvdFRvcCxrPWEucGxvdFRvcCthLnBsb3RIZWlnaHQsZz1jLmRlcHRoLG09ZnVuY3Rpb24oYyl7Yz1kLnNoYXBlQXJlYTNkKGMsYSk7cmV0dXJuLjU8Yz8xOi0uNT5jPy0xOjB9LG49bShbe3g6ZSx5OmssejpnfSx7eDpoLHk6ayx6Omd9LHt4OmgseTprLHo6MH0se3g6ZSx5OmssejowfV0pLHE9bShbe3g6ZSx5OmYsejowfSx7eDpoLHk6Zix6OjB9LHt4OmgseTpmLHo6Z30se3g6ZSx5OmYsejpnfV0pLGw9bShbe3g6ZSx5OmYsejowfSx7eDplLHk6Zix6Omd9LHt4OmUseTprLHo6Z30se3g6ZSx5OmssejowfV0pLHI9bShbe3g6aCx5OmYsejpnfSx7eDpoLHk6Zix6OjB9LHt4OmgseTprLHo6MH0se3g6aCx5OmssejpnfV0pLAp4PW0oW3t4OmUseTprLHo6MH0se3g6aCx5OmssejowfSx7eDpoLHk6Zix6OjB9LHt4OmUseTpmLHo6MH1dKTttPW0oW3t4OmUseTpmLHo6Z30se3g6aCx5OmYsejpnfSx7eDpoLHk6ayx6Omd9LHt4OmUseTprLHo6Z31dKTt2YXIgdT0hMSx3PSExLHQ9ITEsRD0hMTtbXS5jb25jYXQoYS54QXhpcyxhLnlBeGlzLGEuekF4aXMpLmZvckVhY2goZnVuY3Rpb24oYSl7YSYmKGEuaG9yaXo/YS5vcHBvc2l0ZT93PSEwOnU9ITA6YS5vcHBvc2l0ZT9EPSEwOnQ9ITApfSk7dmFyIEo9ZnVuY3Rpb24oYSxjLGIpe2Zvcih2YXIgZD1bInNpemUiLCJjb2xvciIsInZpc2libGUiXSxlPXt9LGg9MDtoPGQubGVuZ3RoO2grKylmb3IodmFyIGY9ZFtoXSxrPTA7azxhLmxlbmd0aDtrKyspaWYoIm9iamVjdCI9PT10eXBlb2YgYVtrXSl7dmFyIGc9YVtrXVtmXTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBnJiZudWxsIT09Zyl7ZVtmXT1nO2JyZWFrfX1hPWI7ITA9PT1lLnZpc2libGV8fCExPT09ZS52aXNpYmxlPwphPWUudmlzaWJsZToiYXV0byI9PT1lLnZpc2libGUmJihhPTA8Yyk7cmV0dXJue3NpemU6cChlLnNpemUsMSksY29sb3I6cChlLmNvbG9yLCJub25lIiksZnJvbnRGYWNpbmc6MDxjLHZpc2libGU6YX19O2I9e2F4ZXM6e30sYm90dG9tOkooW2IuYm90dG9tLGIudG9wLGJdLG4sdSksdG9wOkooW2IudG9wLGIuYm90dG9tLGJdLHEsdyksbGVmdDpKKFtiLmxlZnQsYi5yaWdodCxiLnNpZGUsYl0sbCx0KSxyaWdodDpKKFtiLnJpZ2h0LGIubGVmdCxiLnNpZGUsYl0scixEKSxiYWNrOkooW2IuYmFjayxiLmZyb250LGJdLG0sITApLGZyb250OkooW2IuZnJvbnQsYi5iYWNrLGJdLHgsITEpfTsiYXV0byI9PT1jLmF4aXNMYWJlbFBvc2l0aW9uPyhyPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIGEudmlzaWJsZSE9PWMudmlzaWJsZXx8YS52aXNpYmxlJiZjLnZpc2libGUmJmEuZnJvbnRGYWNpbmchPT1jLmZyb250RmFjaW5nfSxjPVtdLHIoYi5sZWZ0LGIuZnJvbnQpJiZjLnB1c2goe3k6KGYraykvCjIseDplLHo6MCx4RGlyOnt4OjEseTowLHo6MH19KSxyKGIubGVmdCxiLmJhY2spJiZjLnB1c2goe3k6KGYraykvMix4OmUsejpnLHhEaXI6e3g6MCx5OjAsejotMX19KSxyKGIucmlnaHQsYi5mcm9udCkmJmMucHVzaCh7eTooZitrKS8yLHg6aCx6OjAseERpcjp7eDowLHk6MCx6OjF9fSkscihiLnJpZ2h0LGIuYmFjaykmJmMucHVzaCh7eTooZitrKS8yLHg6aCx6OmcseERpcjp7eDotMSx5OjAsejowfX0pLG49W10scihiLmJvdHRvbSxiLmZyb250KSYmbi5wdXNoKHt4OihlK2gpLzIseTprLHo6MCx4RGlyOnt4OjEseTowLHo6MH19KSxyKGIuYm90dG9tLGIuYmFjaykmJm4ucHVzaCh7eDooZStoKS8yLHk6ayx6OmcseERpcjp7eDotMSx5OjAsejowfX0pLHE9W10scihiLnRvcCxiLmZyb250KSYmcS5wdXNoKHt4OihlK2gpLzIseTpmLHo6MCx4RGlyOnt4OjEseTowLHo6MH19KSxyKGIudG9wLGIuYmFjaykmJnEucHVzaCh7eDooZStoKS8yLHk6Zix6OmcseERpcjp7eDotMSx5OjAsejowfX0pLApsPVtdLHIoYi5ib3R0b20sYi5sZWZ0KSYmbC5wdXNoKHt6OigwK2cpLzIseTprLHg6ZSx4RGlyOnt4OjAseTowLHo6LTF9fSkscihiLmJvdHRvbSxiLnJpZ2h0KSYmbC5wdXNoKHt6OigwK2cpLzIseTprLHg6aCx4RGlyOnt4OjAseTowLHo6MX19KSxrPVtdLHIoYi50b3AsYi5sZWZ0KSYmay5wdXNoKHt6OigwK2cpLzIseTpmLHg6ZSx4RGlyOnt4OjAseTowLHo6LTF9fSkscihiLnRvcCxiLnJpZ2h0KSYmay5wdXNoKHt6OigwK2cpLzIseTpmLHg6aCx4RGlyOnt4OjAseTowLHo6MX19KSxlPWZ1bmN0aW9uKGMsYixkKXtpZigwPT09Yy5sZW5ndGgpcmV0dXJuIG51bGw7aWYoMT09PWMubGVuZ3RoKXJldHVybiBjWzBdO2Zvcih2YXIgZT0wLGg9eShjLGEsITEpLGY9MTtmPGgubGVuZ3RoO2YrKylkKmhbZl1bYl0+ZCpoW2VdW2JdP2U9ZjpkKmhbZl1bYl09PT1kKmhbZV1bYl0mJmhbZl0uejxoW2VdLnomJihlPWYpO3JldHVybiBjW2VdfSxiLmF4ZXM9e3k6e2xlZnQ6ZShjLCJ4IiwtMSksCnJpZ2h0OmUoYywieCIsMSl9LHg6e3RvcDplKHEsInkiLC0xKSxib3R0b206ZShuLCJ5IiwxKX0sejp7dG9wOmUoaywieSIsLTEpLGJvdHRvbTplKGwsInkiLDEpfX0pOmIuYXhlcz17eTp7bGVmdDp7eDplLHo6MCx4RGlyOnt4OjEseTowLHo6MH19LHJpZ2h0Ont4OmgsejowLHhEaXI6e3g6MCx5OjAsejoxfX19LHg6e3RvcDp7eTpmLHo6MCx4RGlyOnt4OjEseTowLHo6MH19LGJvdHRvbTp7eTprLHo6MCx4RGlyOnt4OjEseTowLHo6MH19fSx6Ont0b3A6e3g6dD9oOmUseTpmLHhEaXI6dD97eDowLHk6MCx6OjF9Ont4OjAseTowLHo6LTF9fSxib3R0b206e3g6dD9oOmUseTprLHhEaXI6dD97eDowLHk6MCx6OjF9Ont4OjAseTowLHo6LTF9fX19O3JldHVybiBifTthLnByb3RvdHlwZS5nZXRTY2FsZT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmNoYXJ0LGI9Yy5wbG90TGVmdCxkPWMucGxvdFdpZHRoK2IsZT1jLnBsb3RUb3AsaD1jLnBsb3RIZWlnaHQrZSxmPWIrYy5wbG90V2lkdGgvMiwKaz1lK2MucGxvdEhlaWdodC8yLGc9TnVtYmVyLk1BWF9WQUxVRSxtPS1OdW1iZXIuTUFYX1ZBTFVFLG49TnVtYmVyLk1BWF9WQUxVRSxxPS1OdW1iZXIuTUFYX1ZBTFVFLGw9MTt2YXIgcD1be3g6Yix5OmUsejowfSx7eDpiLHk6ZSx6OmF9XTtbMCwxXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3AucHVzaCh7eDpkLHk6cFthXS55LHo6cFthXS56fSl9KTtbMCwxLDIsM10uZm9yRWFjaChmdW5jdGlvbihhKXtwLnB1c2goe3g6cFthXS54LHk6aCx6OnBbYV0uen0pfSk7cD15KHAsYywhMSk7cC5mb3JFYWNoKGZ1bmN0aW9uKGEpe2c9TWF0aC5taW4oZyxhLngpO209TWF0aC5tYXgobSxhLngpO249TWF0aC5taW4obixhLnkpO3E9TWF0aC5tYXgocSxhLnkpfSk7Yj5nJiYobD1NYXRoLm1pbihsLDEtTWF0aC5hYnMoKGIrZikvKGcrZikpJTEpKTtkPG0mJihsPU1hdGgubWluKGwsKGQtZikvKG0tZikpKTtlPm4mJihsPTA+bj9NYXRoLm1pbihsLChlK2spLygtbitlK2spKTpNYXRoLm1pbihsLDEtCihlK2spLyhuK2spJTEpKTtoPHEmJihsPU1hdGgubWluKGwsTWF0aC5hYnMoKGgtaykvKHEtaykpKSk7cmV0dXJuIGx9O3JldHVybiBhfSgpO2EuQ29tcG9zaXRpb249TDthLmRlZmF1bHRPcHRpb25zPXtjaGFydDp7b3B0aW9uczNkOntlbmFibGVkOiExLGFscGhhOjAsYmV0YTowLGRlcHRoOjEwMCxmaXRUb1Bsb3Q6ITAsdmlld0Rpc3RhbmNlOjI1LGF4aXNMYWJlbFBvc2l0aW9uOm51bGwsZnJhbWU6e3Zpc2libGU6ImRlZmF1bHQiLHNpemU6MSxib3R0b206e30sdG9wOnt9LGxlZnQ6e30scmlnaHQ6e30sYmFjazp7fSxmcm9udDp7fX19fX07YS5jb21wb3NlPWZ1bmN0aW9uKHAseSl7dmFyIHI9cC5wcm90b3R5cGU7eT15LnByb3RvdHlwZTtyLmlzM2Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLmNoYXJ0Lm9wdGlvbnMzZCYmdGhpcy5vcHRpb25zLmNoYXJ0Lm9wdGlvbnMzZC5lbmFibGVkfTtyLnByb3BzUmVxdWlyZURpcnR5Qm94LnB1c2goImNoYXJ0Lm9wdGlvbnMzZCIpOwpyLnByb3BzUmVxdWlyZVVwZGF0ZVNlcmllcy5wdXNoKCJjaGFydC5vcHRpb25zM2QiKTt5Lm1hdHJpeFNldHRlcj1mdW5jdGlvbigpe2lmKDE+dGhpcy5wb3MmJih1KHRoaXMuc3RhcnQpfHx1KHRoaXMuZW5kKSkpe3ZhciBhPXRoaXMuc3RhcnR8fFsxLDAsMCwxLDAsMF0sYz10aGlzLmVuZHx8WzEsMCwwLDEsMCwwXTt2YXIgYj1bXTtmb3IodmFyIGQ9MDs2PmQ7ZCsrKWIucHVzaCh0aGlzLnBvcypjW2RdKygxLXRoaXMucG9zKSphW2RdKX1lbHNlIGI9dGhpcy5lbmQ7dGhpcy5lbGVtLmF0dHIodGhpcy5wcm9wLGIsbnVsbCwhMCl9O2coITAsRCxhLmRlZmF1bHRPcHRpb25zKTttKHAsImluaXQiLGUpO20ocCwiYWRkU2VyaWVzIixiKTttKHAsImFmdGVyRHJhd0NoYXJ0Qm94IixjKTttKHAsImFmdGVyR2V0Q29udGFpbmVyIixoKTttKHAsImFmdGVySW5pdCIsayk7bShwLCJhZnRlclNldENoYXJ0U2l6ZSIsbik7bShwLCJiZWZvcmVSZWRyYXciLGYpO20ocCwiYmVmb3JlUmVuZGVyIiwKcSk7RShkLkNoYXJ0LnByb3RvdHlwZSwiaXNJbnNpZGVQbG90IixsKTtFKHAsInJlbmRlclNlcmllcyIsdyk7RShwLCJzZXRDbGFzc05hbWUiLHQpfX0pKGF8fChhPXt9KSk7YS5jb21wb3NlKGwsdyk7cS5aQ2hhcnRDb21wb3NpdGlvbi5jb21wb3NlKGwpO3QuY29tcG9zZShiKTsiIjtyZXR1cm4gYX0pO0YoYiwicGFydHMtM2QvU2VyaWVzLmpzIixbYlsicGFydHMvR2xvYmFscy5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihiLHQpe3ZhciBsPXQuYWRkRXZlbnQsZD10LnBpY2ssdz1iLnBlcnNwZWN0aXZlO2woYi5TZXJpZXMsImFmdGVyVHJhbnNsYXRlIixmdW5jdGlvbigpe3RoaXMuY2hhcnQuaXMzZCgpJiZ0aGlzLnRyYW5zbGF0ZTNkUG9pbnRzKCl9KTtiLlNlcmllcy5wcm90b3R5cGUudHJhbnNsYXRlM2RQb2ludHM9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLmNoYXJ0LGw9ZCh0aGlzLnpBeGlzLGIub3B0aW9ucy56QXhpc1swXSksdD1bXSxtO2ZvcihtPTA7bTwKdGhpcy5kYXRhLmxlbmd0aDttKyspe3ZhciB1PXRoaXMuZGF0YVttXTtpZihsJiZsLnRyYW5zbGF0ZSl7dmFyIGc9bC5sb2dhcml0aG1pYyYmbC52YWwybGluP2wudmFsMmxpbih1LnopOnUuejt1LnBsb3RaPWwudHJhbnNsYXRlKGcpO3UuaXNJbnNpZGU9dS5pc0luc2lkZT9nPj1sLm1pbiYmZzw9bC5tYXg6ITF9ZWxzZSB1LnBsb3RaPTA7dS5heGlzWHBvcz11LnBsb3RYO3UuYXhpc1lwb3M9dS5wbG90WTt1LmF4aXNacG9zPXUucGxvdFo7dC5wdXNoKHt4OnUucGxvdFgseTp1LnBsb3RZLHo6dS5wbG90Wn0pfWI9dyh0LGIsITApO2ZvcihtPTA7bTx0aGlzLmRhdGEubGVuZ3RoO20rKyl1PXRoaXMuZGF0YVttXSxsPWJbbV0sdS5wbG90WD1sLngsdS5wbG90WT1sLnksdS5wbG90Wj1sLnp9fSk7RihiLCJwYXJ0cy0zZC9Db2x1bW4uanMiLFtiWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYlsicGFydHMvU3RhY2tpbmcuanMiXSxiWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYix0LApsKXtmdW5jdGlvbiBkKGIsYSl7dmFyIGQ9Yi5zZXJpZXMsZz17fSxjLGg9MTtkLmZvckVhY2goZnVuY3Rpb24oYil7Yz1tKGIub3B0aW9ucy5zdGFjayxhPzA6ZC5sZW5ndGgtMS1iLmluZGV4KTtnW2NdP2dbY10uc2VyaWVzLnB1c2goYik6KGdbY109e3NlcmllczpbYl0scG9zaXRpb246aH0saCsrKX0pO2cudG90YWxTdGFja3M9aCsxO3JldHVybiBnfWZ1bmN0aW9uIHcoYil7dmFyIGE9Yi5hcHBseSh0aGlzLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKTt0aGlzLmNoYXJ0LmlzM2QmJnRoaXMuY2hhcnQuaXMzZCgpJiYoYS5zdHJva2U9dGhpcy5vcHRpb25zLmVkZ2VDb2xvcnx8YS5maWxsLGFbInN0cm9rZS13aWR0aCJdPW0odGhpcy5vcHRpb25zLmVkZ2VXaWR0aCwxKSk7cmV0dXJuIGF9ZnVuY3Rpb24gbihiLGEsZCl7dmFyIGs9dGhpcy5jaGFydC5pczNkJiZ0aGlzLmNoYXJ0LmlzM2QoKTtrJiYodGhpcy5vcHRpb25zLmluYWN0aXZlT3RoZXJQb2ludHM9ITApO2IuY2FsbCh0aGlzLAphLGQpO2smJih0aGlzLm9wdGlvbnMuaW5hY3RpdmVPdGhlclBvaW50cz0hMSl9ZnVuY3Rpb24gcShiKXtmb3IodmFyIGE9W10sZD0xO2Q8YXJndW1lbnRzLmxlbmd0aDtkKyspYVtkLTFdPWFyZ3VtZW50c1tkXTtyZXR1cm4gdGhpcy5zZXJpZXMuY2hhcnQuaXMzZCgpP3RoaXMuZ3JhcGhpYyYmImciIT09dGhpcy5ncmFwaGljLmVsZW1lbnQubm9kZU5hbWU6Yi5hcHBseSh0aGlzLGEpfXZhciBEPWwuYWRkRXZlbnQsbT1sLnBpY2s7bD1sLndyYXA7dmFyIHU9Yi5wZXJzcGVjdGl2ZSxnPWIuU2VyaWVzLHA9Yi5zZXJpZXNUeXBlcyxFPWIuc3ZnO2wocC5jb2x1bW4ucHJvdG90eXBlLCJ0cmFuc2xhdGUiLGZ1bmN0aW9uKGIpe2IuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSk7dGhpcy5jaGFydC5pczNkKCkmJnRoaXMudHJhbnNsYXRlM2RTaGFwZXMoKX0pO2woYi5TZXJpZXMucHJvdG90eXBlLCJqdXN0aWZ5RGF0YUxhYmVsIixmdW5jdGlvbihiKXtyZXR1cm4gYXJndW1lbnRzWzJdLm91dHNpZGUzZFBsb3Q/CiExOmIuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9KTtwLmNvbHVtbi5wcm90b3R5cGUudHJhbnNsYXRlM2RQb2ludHM9ZnVuY3Rpb24oKXt9O3AuY29sdW1uLnByb3RvdHlwZS50cmFuc2xhdGUzZFNoYXBlcz1mdW5jdGlvbigpe3ZhciBiPXRoaXMsYT1iLmNoYXJ0LGQ9Yi5vcHRpb25zLGc9ZC5kZXB0aCxjPShkLnN0YWNraW5nP2Quc3RhY2t8fDA6Yi5pbmRleCkqKGcrKGQuZ3JvdXBaUGFkZGluZ3x8MSkpLGg9Yi5ib3JkZXJXaWR0aCUyPy41OjAsbDthLmludmVydGVkJiYhYi55QXhpcy5yZXZlcnNlZCYmKGgqPS0xKTshMSE9PWQuZ3JvdXBpbmcmJihjPTApO2MrPWQuZ3JvdXBaUGFkZGluZ3x8MTtiLmRhdGEuZm9yRWFjaChmdW5jdGlvbihkKXtkLm91dHNpZGUzZFBsb3Q9bnVsbDtpZihudWxsIT09ZC55KXt2YXIgZj1kLnNoYXBlQXJncyxrPWQudG9vbHRpcFBvcyxlO1tbIngiLCJ3aWR0aCJdLFsieSIsImhlaWdodCJdXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2U9CmZbYVswXV0taDswPmUmJihmW2FbMV1dKz1mW2FbMF1dK2gsZlthWzBdXT0taCxlPTApO2UrZlthWzFdXT5iW2FbMF0rIkF4aXMiXS5sZW4mJjAhPT1mW2FbMV1dJiYoZlthWzFdXT1iW2FbMF0rIkF4aXMiXS5sZW4tZlthWzBdXSk7aWYoMCE9PWZbYVsxXV0mJihmW2FbMF1dPj1iW2FbMF0rIkF4aXMiXS5sZW58fGZbYVswXV0rZlthWzFdXTw9aCkpe2Zvcih2YXIgYyBpbiBmKWZbY109MDtkLm91dHNpZGUzZFBsb3Q9ITB9fSk7InJlY3QiPT09ZC5zaGFwZVR5cGUmJihkLnNoYXBlVHlwZT0iY3Vib2lkIik7Zi56PWM7Zi5kZXB0aD1nO2YuaW5zaWRlUGxvdEFyZWE9ITA7bD17eDpmLngrZi53aWR0aC8yLHk6Zi55LHo6YytnLzJ9O2EuaW52ZXJ0ZWQmJihsLng9Zi5oZWlnaHQsbC55PWQuY2xpZW50WCk7ZC5wbG90M2Q9dShbbF0sYSwhMCwhMSlbMF07az11KFt7eDprWzBdLHk6a1sxXSx6OmMrZy8yfV0sYSwhMCwhMSlbMF07ZC50b29sdGlwUG9zPVtrLngsay55XX19KTtiLno9Y307bChwLmNvbHVtbi5wcm90b3R5cGUsCiJhbmltYXRlIixmdW5jdGlvbihiKXtpZih0aGlzLmNoYXJ0LmlzM2QoKSl7dmFyIGE9YXJndW1lbnRzWzFdLGQ9dGhpcy55QXhpcyxnPXRoaXMsYz10aGlzLnlBeGlzLnJldmVyc2VkO0UmJihhP2cuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGEpe251bGwhPT1hLnkmJihhLmhlaWdodD1hLnNoYXBlQXJncy5oZWlnaHQsYS5zaGFwZXk9YS5zaGFwZUFyZ3MueSxhLnNoYXBlQXJncy5oZWlnaHQ9MSxjfHwoYS5zaGFwZUFyZ3MueT1hLnN0YWNrWT9hLnBsb3RZK2QudHJhbnNsYXRlKGEuc3RhY2tZKTphLnBsb3RZKyhhLm5lZ2F0aXZlPy1hLmhlaWdodDphLmhlaWdodCkpKX0pOihnLmRhdGEuZm9yRWFjaChmdW5jdGlvbihhKXtudWxsIT09YS55JiYoYS5zaGFwZUFyZ3MuaGVpZ2h0PWEuaGVpZ2h0LGEuc2hhcGVBcmdzLnk9YS5zaGFwZXksYS5ncmFwaGljJiZhLmdyYXBoaWMuYW5pbWF0ZShhLnNoYXBlQXJncyxnLm9wdGlvbnMuYW5pbWF0aW9uKSl9KSx0aGlzLmRyYXdEYXRhTGFiZWxzKCkpKX1lbHNlIGIuYXBwbHkodGhpcywKW10uc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpfSk7bChwLmNvbHVtbi5wcm90b3R5cGUsInBsb3RHcm91cCIsZnVuY3Rpb24oYixhLGQsZyxjLGgpeyJkYXRhTGFiZWxzR3JvdXAiIT09YSYmdGhpcy5jaGFydC5pczNkKCkmJih0aGlzW2FdJiZkZWxldGUgdGhpc1thXSxoJiYodGhpcy5jaGFydC5jb2x1bW5Hcm91cHx8KHRoaXMuY2hhcnQuY29sdW1uR3JvdXA9dGhpcy5jaGFydC5yZW5kZXJlci5nKCJjb2x1bW5Hcm91cCIpLmFkZChoKSksdGhpc1thXT10aGlzLmNoYXJ0LmNvbHVtbkdyb3VwLHRoaXMuY2hhcnQuY29sdW1uR3JvdXAuYXR0cih0aGlzLmdldFBsb3RCb3goKSksdGhpc1thXS5zdXJ2aXZlPSEwLCJncm91cCI9PT1hfHwibWFya2VyR3JvdXAiPT09YSkpJiYoYXJndW1lbnRzWzNdPSJ2aXNpYmxlIik7cmV0dXJuIGIuYXBwbHkodGhpcyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpfSk7bChwLmNvbHVtbi5wcm90b3R5cGUsInNldFZpc2libGUiLApmdW5jdGlvbihiLGEpe3ZhciBkPXRoaXMsZztkLmNoYXJ0LmlzM2QoKSYmZC5kYXRhLmZvckVhY2goZnVuY3Rpb24oYil7Zz0oYi52aXNpYmxlPWIub3B0aW9ucy52aXNpYmxlPWE9InVuZGVmaW5lZCI9PT10eXBlb2YgYT8hbShkLnZpc2libGUsYi52aXNpYmxlKTphKT8idmlzaWJsZSI6ImhpZGRlbiI7ZC5vcHRpb25zLmRhdGFbZC5kYXRhLmluZGV4T2YoYildPWIub3B0aW9ucztiLmdyYXBoaWMmJmIuZ3JhcGhpYy5hdHRyKHt2aXNpYmlsaXR5Omd9KX0pO2IuYXBwbHkodGhpcyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpfSk7cC5jb2x1bW4ucHJvdG90eXBlLmhhbmRsZTNkR3JvdXBpbmc9ITA7RChnLCJhZnRlckluaXQiLGZ1bmN0aW9uKCl7aWYodGhpcy5jaGFydC5pczNkKCkmJnRoaXMuaGFuZGxlM2RHcm91cGluZyl7dmFyIGI9dGhpcy5vcHRpb25zLGE9Yi5ncm91cGluZyxnPWIuc3RhY2tpbmcsbD1tKHRoaXMueUF4aXMub3B0aW9ucy5yZXZlcnNlZFN0YWNrcywKITApLGM9MDtpZigidW5kZWZpbmVkIj09PXR5cGVvZiBhfHxhKXthPWQodGhpcy5jaGFydCxnKTtjPWIuc3RhY2t8fDA7Zm9yKGc9MDtnPGFbY10uc2VyaWVzLmxlbmd0aCYmYVtjXS5zZXJpZXNbZ10hPT10aGlzO2crKyk7Yz0xMCooYS50b3RhbFN0YWNrcy1hW2NdLnBvc2l0aW9uKSsobD9nOi1nKTt0aGlzLnhBeGlzLnJldmVyc2VkfHwoYz0xMCphLnRvdGFsU3RhY2tzLWMpfWIuZGVwdGg9Yi5kZXB0aHx8MjU7dGhpcy56PXRoaXMuenx8MDtiLnpJbmRleD1jfX0pO2wocC5jb2x1bW4ucHJvdG90eXBlLCJwb2ludEF0dHJpYnMiLHcpO2wocC5jb2x1bW4ucHJvdG90eXBlLCJzZXRTdGF0ZSIsbik7bChwLmNvbHVtbi5wcm90b3R5cGUucG9pbnRDbGFzcy5wcm90b3R5cGUsImhhc05ld1NoYXBlVHlwZSIscSk7cC5jb2x1bW5yYW5nZSYmKGwocC5jb2x1bW5yYW5nZS5wcm90b3R5cGUsInBvaW50QXR0cmlicyIsdyksbChwLmNvbHVtbnJhbmdlLnByb3RvdHlwZSwic2V0U3RhdGUiLG4pLApsKHAuY29sdW1ucmFuZ2UucHJvdG90eXBlLnBvaW50Q2xhc3MucHJvdG90eXBlLCJoYXNOZXdTaGFwZVR5cGUiLHEpLHAuY29sdW1ucmFuZ2UucHJvdG90eXBlLnBsb3RHcm91cD1wLmNvbHVtbi5wcm90b3R5cGUucGxvdEdyb3VwLHAuY29sdW1ucmFuZ2UucHJvdG90eXBlLnNldFZpc2libGU9cC5jb2x1bW4ucHJvdG90eXBlLnNldFZpc2libGUpO2woZy5wcm90b3R5cGUsImFsaWduRGF0YUxhYmVsIixmdW5jdGlvbihiLGEsZCxnLGMpe3ZhciBoPXRoaXMuY2hhcnQ7Zy5vdXRzaWRlM2RQbG90PWEub3V0c2lkZTNkUGxvdDtpZihoLmlzM2QoKSYmdGhpcy5pcygiY29sdW1uIikpe3ZhciBrPXRoaXMub3B0aW9ucyxsPW0oZy5pbnNpZGUsISF0aGlzLm9wdGlvbnMuc3RhY2tpbmcpLGY9aC5vcHRpb25zLmNoYXJ0Lm9wdGlvbnMzZCxuPWEucG9pbnRXaWR0aC8yfHwwO2s9e3g6Yy54K24seTpjLnksejp0aGlzLnoray5kZXB0aC8yfTtoLmludmVydGVkJiYobCYmKGMud2lkdGg9MCxrLngrPQphLnNoYXBlQXJncy5oZWlnaHQvMiksOTA8PWYuYWxwaGEmJjI3MD49Zi5hbHBoYSYmKGsueSs9YS5zaGFwZUFyZ3Mud2lkdGgpKTtrPXUoW2tdLGgsITAsITEpWzBdO2MueD1rLngtbjtjLnk9YS5vdXRzaWRlM2RQbG90Py05RTk6ay55fWIuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9KTtsKHQucHJvdG90eXBlLCJnZXRTdGFja0JveCIsZnVuY3Rpb24oYixhLGQsZyxjLGgsbCxtKXt2YXIgZj1iLmFwcGx5KHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpO2lmKGEuaXMzZCgpJiZkLmJhc2Upe3ZhciBrPStkLmJhc2Uuc3BsaXQoIiwiKVswXSxlPWEuc2VyaWVzW2tdO2s9YS5vcHRpb25zLmNoYXJ0Lm9wdGlvbnMzZDtlJiZlIGluc3RhbmNlb2YgcC5jb2x1bW4mJihlPXt4OmYueCsoYS5pbnZlcnRlZD9sOmgvMikseTpmLnksejplLm9wdGlvbnMuZGVwdGgvMn0sYS5pbnZlcnRlZCYmKGYud2lkdGg9MCw5MDw9ay5hbHBoYSYmMjcwPj1rLmFscGhhJiYKKGUueSs9aCkpLGU9dShbZV0sYSwhMCwhMSlbMF0sZi54PWUueC1oLzIsZi55PWUueSl9cmV0dXJuIGZ9KX0pO0YoYiwicGFydHMtM2QvUGllLmpzIixbYlsicGFydHMvR2xvYmFscy5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihiLHQpe3ZhciBsPXQucGljazt0PXQud3JhcDt2YXIgZD1iLmRlZzJyYWQsdz1iLnNlcmllc1R5cGVzLG49Yi5zdmc7dCh3LnBpZS5wcm90b3R5cGUsInRyYW5zbGF0ZSIsZnVuY3Rpb24oYil7Yi5hcHBseSh0aGlzLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKTtpZih0aGlzLmNoYXJ0LmlzM2QoKSl7dmFyIGw9dGhpcyxtPWwub3B0aW9ucyxuPW0uZGVwdGh8fDAsZz1sLmNoYXJ0Lm9wdGlvbnMuY2hhcnQub3B0aW9uczNkLHA9Zy5hbHBoYSxxPWcuYmV0YSx0PW0uc3RhY2tpbmc/KG0uc3RhY2t8fDApKm46bC5faSpuO3QrPW4vMjshMSE9PW0uZ3JvdXBpbmcmJih0PTApO2wuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPQphLnNoYXBlQXJnczthLnNoYXBlVHlwZT0iYXJjM2QiO2Iuej10O2IuZGVwdGg9Ljc1Km47Yi5hbHBoYT1wO2IuYmV0YT1xO2IuY2VudGVyPWwuY2VudGVyO2I9KGIuZW5kK2Iuc3RhcnQpLzI7YS5zbGljZWRUcmFuc2xhdGlvbj17dHJhbnNsYXRlWDpNYXRoLnJvdW5kKE1hdGguY29zKGIpKm0uc2xpY2VkT2Zmc2V0Kk1hdGguY29zKHAqZCkpLHRyYW5zbGF0ZVk6TWF0aC5yb3VuZChNYXRoLnNpbihiKSptLnNsaWNlZE9mZnNldCpNYXRoLmNvcyhwKmQpKX19KX19KTt0KHcucGllLnByb3RvdHlwZS5wb2ludENsYXNzLnByb3RvdHlwZSwiaGFsb1BhdGgiLGZ1bmN0aW9uKGIpe3ZhciBkPWFyZ3VtZW50cztyZXR1cm4gdGhpcy5zZXJpZXMuY2hhcnQuaXMzZCgpP1tdOmIuY2FsbCh0aGlzLGRbMV0pfSk7dCh3LnBpZS5wcm90b3R5cGUsInBvaW50QXR0cmlicyIsZnVuY3Rpb24oYixkLG0pe2I9Yi5jYWxsKHRoaXMsZCxtKTttPXRoaXMub3B0aW9uczt0aGlzLmNoYXJ0LmlzM2QoKSYmIXRoaXMuY2hhcnQuc3R5bGVkTW9kZSYmCihiLnN0cm9rZT1tLmVkZ2VDb2xvcnx8ZC5jb2xvcnx8dGhpcy5jb2xvcixiWyJzdHJva2Utd2lkdGgiXT1sKG0uZWRnZVdpZHRoLDEpKTtyZXR1cm4gYn0pO3Qody5waWUucHJvdG90eXBlLCJkcmF3RGF0YUxhYmVscyIsZnVuY3Rpb24oYil7aWYodGhpcy5jaGFydC5pczNkKCkpe3ZhciBsPXRoaXMuY2hhcnQub3B0aW9ucy5jaGFydC5vcHRpb25zM2Q7dGhpcy5kYXRhLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIG09Yi5zaGFwZUFyZ3MsZz1tLnIsbj0obS5zdGFydCttLmVuZCkvMjtiPWIubGFiZWxQb3NpdGlvbjt2YXIgcT1iLmNvbm5lY3RvclBvc2l0aW9uLHQ9LWcqKDEtTWF0aC5jb3MoKG0uYWxwaGF8fGwuYWxwaGEpKmQpKSpNYXRoLnNpbihuKSxhPWcqKE1hdGguY29zKChtLmJldGF8fGwuYmV0YSkqZCktMSkqTWF0aC5jb3Mobik7W2IubmF0dXJhbCxxLmJyZWFrQXQscS50b3VjaGluZ1NsaWNlQXRdLmZvckVhY2goZnVuY3Rpb24oYil7Yi54Kz1hO2IueSs9dH0pfSl9Yi5hcHBseSh0aGlzLApbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9KTt0KHcucGllLnByb3RvdHlwZSwiYWRkUG9pbnQiLGZ1bmN0aW9uKGIpe2IuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSk7dGhpcy5jaGFydC5pczNkKCkmJnRoaXMudXBkYXRlKHRoaXMudXNlck9wdGlvbnMsITApfSk7dCh3LnBpZS5wcm90b3R5cGUsImFuaW1hdGUiLGZ1bmN0aW9uKGIpe2lmKHRoaXMuY2hhcnQuaXMzZCgpKXt2YXIgZD1hcmd1bWVudHNbMV0sbT10aGlzLm9wdGlvbnMuYW5pbWF0aW9uLHE9dGhpcy5jZW50ZXIsZz10aGlzLmdyb3VwLHA9dGhpcy5tYXJrZXJHcm91cDtuJiYoITA9PT1tJiYobT17fSksZD8oZy5vbGR0cmFuc2xhdGVYPWwoZy5vbGR0cmFuc2xhdGVYLGcudHJhbnNsYXRlWCksZy5vbGR0cmFuc2xhdGVZPWwoZy5vbGR0cmFuc2xhdGVZLGcudHJhbnNsYXRlWSksZD17dHJhbnNsYXRlWDpxWzBdLHRyYW5zbGF0ZVk6cVsxXSxzY2FsZVg6LjAwMSxzY2FsZVk6LjAwMX0sZy5hdHRyKGQpLApwJiYocC5hdHRyU2V0dGVycz1nLmF0dHJTZXR0ZXJzLHAuYXR0cihkKSkpOihkPXt0cmFuc2xhdGVYOmcub2xkdHJhbnNsYXRlWCx0cmFuc2xhdGVZOmcub2xkdHJhbnNsYXRlWSxzY2FsZVg6MSxzY2FsZVk6MX0sZy5hbmltYXRlKGQsbSkscCYmcC5hbmltYXRlKGQsbSkpKX1lbHNlIGIuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9KX0pO0YoYiwicGFydHMtM2QvU2NhdHRlci5qcyIsW2JbInBhcnRzL0dsb2JhbHMuanMiXSxiWyJwYXJ0cy9Qb2ludC5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihiLHQsbCl7bD1sLnNlcmllc1R5cGU7dmFyIGQ9Yi5zZXJpZXNUeXBlcztsKCJzY2F0dGVyM2QiLCJzY2F0dGVyIix7dG9vbHRpcDp7cG9pbnRGb3JtYXQ6Ing6IDxiPntwb2ludC54fTwvYj48YnIvPnk6IDxiPntwb2ludC55fTwvYj48YnIvPno6IDxiPntwb2ludC56fTwvYj48YnIvPiJ9fSx7cG9pbnRBdHRyaWJzOmZ1bmN0aW9uKGwpe3ZhciBuPQpkLnNjYXR0ZXIucHJvdG90eXBlLnBvaW50QXR0cmlicy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5jaGFydC5pczNkKCkmJmwmJihuLnpJbmRleD1iLnBvaW50Q2FtZXJhRGlzdGFuY2UobCx0aGlzLmNoYXJ0KSk7cmV0dXJuIG59LGF4aXNUeXBlczpbInhBeGlzIiwieUF4aXMiLCJ6QXhpcyJdLHBvaW50QXJyYXlNYXA6WyJ4IiwieSIsInoiXSxwYXJhbGxlbEFycmF5czpbIngiLCJ5IiwieiJdLGRpcmVjdFRvdWNoOiEwfSx7YXBwbHlPcHRpb25zOmZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuYXBwbHlPcHRpb25zLmFwcGx5KHRoaXMsYXJndW1lbnRzKTsidW5kZWZpbmVkIj09PXR5cGVvZiB0aGlzLnomJih0aGlzLno9MCk7cmV0dXJuIHRoaXN9fSk7IiJ9KTtGKGIsInBhcnRzLTNkL1ZNTEF4aXMzRC5qcyIsW2JbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihiKXt2YXIgdD1iLmFkZEV2ZW50LGw9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYil7dGhpcy5heGlzPWJ9fSgpOwpyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBiKCl7fWIuY29tcG9zZT1mdW5jdGlvbihkKXtkLmtlZXBQcm9wcy5wdXNoKCJ2bWwiKTt0KGQsImluaXQiLGIub25Jbml0KTt0KGQsInJlbmRlciIsYi5vblJlbmRlcil9O2Iub25Jbml0PWZ1bmN0aW9uKCl7dGhpcy52bWx8fCh0aGlzLnZtbD1uZXcgbCh0aGlzKSl9O2Iub25SZW5kZXI9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLnZtbDtiLnNpZGVGcmFtZSYmKGIuc2lkZUZyYW1lLmNzcyh7ekluZGV4OjB9KSxiLnNpZGVGcmFtZS5mcm9udC5hdHRyKHtmaWxsOmIuc2lkZUZyYW1lLmNvbG9yfSkpO2IuYm90dG9tRnJhbWUmJihiLmJvdHRvbUZyYW1lLmNzcyh7ekluZGV4OjF9KSxiLmJvdHRvbUZyYW1lLmZyb250LmF0dHIoe2ZpbGw6Yi5ib3R0b21GcmFtZS5jb2xvcn0pKTtiLmJhY2tGcmFtZSYmKGIuYmFja0ZyYW1lLmNzcyh7ekluZGV4OjB9KSxiLmJhY2tGcmFtZS5mcm9udC5hdHRyKHtmaWxsOmIuYmFja0ZyYW1lLmNvbG9yfSkpfTsKcmV0dXJuIGJ9KCl9KTtGKGIsInBhcnRzLTNkL1ZNTFJlbmRlcmVyLmpzIixbYlsicGFydHMvQXhpcy5qcyJdLGJbInBhcnRzL0dsb2JhbHMuanMiXSxiWyJwYXJ0cy9TVkdSZW5kZXJlci5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdLGJbInBhcnRzLTNkL1ZNTEF4aXMzRC5qcyJdXSxmdW5jdGlvbihiLHQsbCxkLHcpe2Q9ZC5zZXRPcHRpb25zO3ZhciBuPXQuVk1MUmVuZGVyZXI7biYmKGQoe2FuaW1hdGU6ITF9KSxuLnByb3RvdHlwZS5mYWNlM2Q9bC5wcm90b3R5cGUuZmFjZTNkLG4ucHJvdG90eXBlLnBvbHloZWRyb249bC5wcm90b3R5cGUucG9seWhlZHJvbixuLnByb3RvdHlwZS5lbGVtZW50czNkPWwucHJvdG90eXBlLmVsZW1lbnRzM2Qsbi5wcm90b3R5cGUuZWxlbWVudDNkPWwucHJvdG90eXBlLmVsZW1lbnQzZCxuLnByb3RvdHlwZS5jdWJvaWQ9bC5wcm90b3R5cGUuY3Vib2lkLG4ucHJvdG90eXBlLmN1Ym9pZFBhdGg9bC5wcm90b3R5cGUuY3Vib2lkUGF0aCxuLnByb3RvdHlwZS50b0xpbmVQYXRoPQpsLnByb3RvdHlwZS50b0xpbmVQYXRoLG4ucHJvdG90eXBlLnRvTGluZVNlZ21lbnRzPWwucHJvdG90eXBlLnRvTGluZVNlZ21lbnRzLG4ucHJvdG90eXBlLmFyYzNkPWZ1bmN0aW9uKGIpe2I9bC5wcm90b3R5cGUuYXJjM2QuY2FsbCh0aGlzLGIpO2IuY3NzKHt6SW5kZXg6Yi56SW5kZXh9KTtyZXR1cm4gYn0sdC5WTUxSZW5kZXJlci5wcm90b3R5cGUuYXJjM2RQYXRoPWwucHJvdG90eXBlLmFyYzNkUGF0aCx3LmNvbXBvc2UoYikpfSk7RihiLCJtYXN0ZXJzL2hpZ2hjaGFydHMtM2Quc3JjLmpzIixbXSxmdW5jdGlvbigpe30pfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWhpZ2hjaGFydHMtM2QuanMubWFw"></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIChjKSAyMDA5LTIwMTggVG9yc3RlaW4gSG9uc2kKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24oZil7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8oZlsiZGVmYXVsdCJdPWYsbW9kdWxlLmV4cG9ydHM9Zik6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL2hpZ2hjaGFydHMtbW9yZSIsWyJoaWdoY2hhcnRzIl0sZnVuY3Rpb24oQyl7ZihDKTtmLkhpZ2hjaGFydHM9QztyZXR1cm4gZn0pOmYoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihmKXtmdW5jdGlvbiBDKGYsYSxiLGUpe2YuaGFzT3duUHJvcGVydHkoYSl8fChmW2FdPWUuYXBwbHkobnVsbCxiKSl9Zj1mP2YuX21vZHVsZXM6e307QyhmLCJwYXJ0cy1tb3JlL1BhbmUuanMiLFtmWyJwYXJ0cy9DaGFydC5qcyJdLGZbInBhcnRzL0dsb2JhbHMuanMiXSxmWyJwYXJ0cy9Qb2ludGVyLmpzIl0sZlsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGYsYSxiLGUpe2Z1bmN0aW9uIGgobCwKYyxwKXtyZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KGwtcFswXSwyKStNYXRoLnBvdyhjLXBbMV0sMikpPHBbMl0vMn12YXIgcT1lLmFkZEV2ZW50LHQ9ZS5leHRlbmQseD1lLm1lcmdlLEI9ZS5waWNrLHo9ZS5zcGxhdCxjPWEuQ2VudGVyZWRTZXJpZXNNaXhpbjtmLnByb3RvdHlwZS5jb2xsZWN0aW9uc1dpdGhVcGRhdGUucHVzaCgicGFuZSIpO2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGwsYyl7dGhpcy5vcHRpb25zPXRoaXMuY2hhcnQ9dGhpcy5jZW50ZXI9dGhpcy5iYWNrZ3JvdW5kPXZvaWQgMDt0aGlzLmNvbGw9InBhbmUiO3RoaXMuZGVmYXVsdE9wdGlvbnM9e2NlbnRlcjpbIjUwJSIsIjUwJSJdLHNpemU6Ijg1JSIsaW5uZXJTaXplOiIwJSIsc3RhcnRBbmdsZTowfTt0aGlzLmRlZmF1bHRCYWNrZ3JvdW5kT3B0aW9ucz17c2hhcGU6ImNpcmNsZSIsYm9yZGVyV2lkdGg6MSxib3JkZXJDb2xvcjoiI2NjY2NjYyIsYmFja2dyb3VuZENvbG9yOntsaW5lYXJHcmFkaWVudDp7eDE6MCwKeTE6MCx4MjowLHkyOjF9LHN0b3BzOltbMCwiI2ZmZmZmZiJdLFsxLCIjZTZlNmU2Il1dfSxmcm9tOi1OdW1iZXIuTUFYX1ZBTFVFLGlubmVyUmFkaXVzOjAsdG86TnVtYmVyLk1BWF9WQUxVRSxvdXRlclJhZGl1czoiMTA1JSJ9O3RoaXMuaW5pdChsLGMpfWwucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24obCxjKXt0aGlzLmNoYXJ0PWM7dGhpcy5iYWNrZ3JvdW5kPVtdO2MucGFuZS5wdXNoKHRoaXMpO3RoaXMuc2V0T3B0aW9ucyhsKX07bC5wcm90b3R5cGUuc2V0T3B0aW9ucz1mdW5jdGlvbihsKXt0aGlzLm9wdGlvbnM9eCh0aGlzLmRlZmF1bHRPcHRpb25zLHRoaXMuY2hhcnQuYW5ndWxhcj97YmFja2dyb3VuZDp7fX06dm9pZCAwLGwpfTtsLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgbD10aGlzLm9wdGlvbnMsYz10aGlzLm9wdGlvbnMuYmFja2dyb3VuZCxhPXRoaXMuY2hhcnQucmVuZGVyZXI7dGhpcy5ncm91cHx8KHRoaXMuZ3JvdXA9YS5nKCJwYW5lLWdyb3VwIikuYXR0cih7ekluZGV4OmwuekluZGV4fHwKMH0pLmFkZCgpKTt0aGlzLnVwZGF0ZUNlbnRlcigpO2lmKGMpZm9yKGM9eihjKSxsPU1hdGgubWF4KGMubGVuZ3RoLHRoaXMuYmFja2dyb3VuZC5sZW5ndGh8fDApLGE9MDthPGw7YSsrKWNbYV0mJnRoaXMuYXhpcz90aGlzLnJlbmRlckJhY2tncm91bmQoeCh0aGlzLmRlZmF1bHRCYWNrZ3JvdW5kT3B0aW9ucyxjW2FdKSxhKTp0aGlzLmJhY2tncm91bmRbYV0mJih0aGlzLmJhY2tncm91bmRbYV09dGhpcy5iYWNrZ3JvdW5kW2FdLmRlc3Ryb3koKSx0aGlzLmJhY2tncm91bmQuc3BsaWNlKGEsMSkpfTtsLnByb3RvdHlwZS5yZW5kZXJCYWNrZ3JvdW5kPWZ1bmN0aW9uKGwsYyl7dmFyIGE9ImFuaW1hdGUiLHA9eyJjbGFzcyI6ImhpZ2hjaGFydHMtcGFuZSAiKyhsLmNsYXNzTmFtZXx8IiIpfTt0aGlzLmNoYXJ0LnN0eWxlZE1vZGV8fHQocCx7ZmlsbDpsLmJhY2tncm91bmRDb2xvcixzdHJva2U6bC5ib3JkZXJDb2xvciwic3Ryb2tlLXdpZHRoIjpsLmJvcmRlcldpZHRofSk7dGhpcy5iYWNrZ3JvdW5kW2NdfHwKKHRoaXMuYmFja2dyb3VuZFtjXT10aGlzLmNoYXJ0LnJlbmRlcmVyLnBhdGgoKS5hZGQodGhpcy5ncm91cCksYT0iYXR0ciIpO3RoaXMuYmFja2dyb3VuZFtjXVthXSh7ZDp0aGlzLmF4aXMuZ2V0UGxvdEJhbmRQYXRoKGwuZnJvbSxsLnRvLGwpfSkuYXR0cihwKX07bC5wcm90b3R5cGUudXBkYXRlQ2VudGVyPWZ1bmN0aW9uKGwpe3RoaXMuY2VudGVyPShsfHx0aGlzLmF4aXN8fHt9KS5jZW50ZXI9Yy5nZXRDZW50ZXIuY2FsbCh0aGlzKX07bC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGwsYyl7eCghMCx0aGlzLm9wdGlvbnMsbCk7eCghMCx0aGlzLmNoYXJ0Lm9wdGlvbnMucGFuZSxsKTt0aGlzLnNldE9wdGlvbnModGhpcy5vcHRpb25zKTt0aGlzLnJlbmRlcigpO3RoaXMuY2hhcnQuYXhlcy5mb3JFYWNoKGZ1bmN0aW9uKGwpe2wucGFuZT09PXRoaXMmJihsLnBhbmU9bnVsbCxsLnVwZGF0ZSh7fSxjKSl9LHRoaXMpfTtyZXR1cm4gbH0oKTthLkNoYXJ0LnByb3RvdHlwZS5nZXRIb3ZlclBhbmU9CmZ1bmN0aW9uKGwpe3ZhciBjPXRoaXMsYTtsJiZjLnBhbmUuZm9yRWFjaChmdW5jdGlvbihwKXt2YXIgZT1sLmNoYXJ0WC1jLnBsb3RMZWZ0LG09bC5jaGFydFktYy5wbG90VG9wO2goYy5pbnZlcnRlZD9tOmUsYy5pbnZlcnRlZD9lOm0scC5jZW50ZXIpJiYoYT1wKX0pO3JldHVybiBhfTtxKGYsImFmdGVySXNJbnNpZGVQbG90IixmdW5jdGlvbihsKXt0aGlzLnBvbGFyJiYobC5pc0luc2lkZVBsb3Q9dGhpcy5wYW5lLnNvbWUoZnVuY3Rpb24oYyl7cmV0dXJuIGgobC54LGwueSxjLmNlbnRlcil9KSl9KTtxKGIsImJlZm9yZUdldEhvdmVyRGF0YSIsZnVuY3Rpb24obCl7dmFyIGM9dGhpcy5jaGFydDtjLnBvbGFyJiYoYy5ob3ZlclBhbmU9Yy5nZXRIb3ZlclBhbmUobCksbC5maWx0ZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIGEudmlzaWJsZSYmISghbC5zaGFyZWQmJmEuZGlyZWN0VG91Y2gpJiZCKGEub3B0aW9ucy5lbmFibGVNb3VzZVRyYWNraW5nLCEwKSYmKCFjLmhvdmVyUGFuZXx8YS54QXhpcy5wYW5lPT09CmMuaG92ZXJQYW5lKX0pfSk7cShiLCJhZnRlckdldEhvdmVyRGF0YSIsZnVuY3Rpb24oYyl7dmFyIGw9dGhpcy5jaGFydDtjLmhvdmVyUG9pbnQmJmMuaG92ZXJQb2ludC5wbG90WCYmYy5ob3ZlclBvaW50LnBsb3RZJiZsLmhvdmVyUGFuZSYmIWgoYy5ob3ZlclBvaW50LnBsb3RYLGMuaG92ZXJQb2ludC5wbG90WSxsLmhvdmVyUGFuZS5jZW50ZXIpJiYoYy5ob3ZlclBvaW50PXZvaWQgMCl9KTthLlBhbmU9ZTtyZXR1cm4gYS5QYW5lfSk7QyhmLCJwYXJ0cy1tb3JlL0hpZGRlbkF4aXMuanMiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZigpe31mLmluaXQ9ZnVuY3Rpb24oYSl7YS5nZXRPZmZzZXQ9ZnVuY3Rpb24oKXt9O2EucmVkcmF3PWZ1bmN0aW9uKCl7dGhpcy5pc0RpcnR5PSExfTthLnJlbmRlcj1mdW5jdGlvbigpe3RoaXMuaXNEaXJ0eT0hMX07YS5jcmVhdGVMYWJlbENvbGxlY3Rvcj1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319O2Euc2V0U2NhbGU9CmZ1bmN0aW9uKCl7fTthLnNldENhdGVnb3JpZXM9ZnVuY3Rpb24oKXt9O2Euc2V0VGl0bGU9ZnVuY3Rpb24oKXt9O2EuaXNIaWRkZW49ITB9O3JldHVybiBmfSgpfSk7QyhmLCJwYXJ0cy1tb3JlL1JhZGlhbEF4aXMuanMiLFtmWyJwYXJ0cy9BeGlzLmpzIl0sZlsicGFydHMvVGljay5qcyJdLGZbInBhcnRzLW1vcmUvSGlkZGVuQXhpcy5qcyJdLGZbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihmLGEsYixlKXt2YXIgaD1lLmFkZEV2ZW50LHE9ZS5jb3JyZWN0RmxvYXQsdD1lLmRlZmluZWQseD1lLmV4dGVuZCxCPWUuZmlyZUV2ZW50LHo9ZS5tZXJnZSxjPWUucGljayxsPWUucmVsYXRpdmVMZW5ndGgsdz1lLndyYXA7ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXt9YS5pbml0PWZ1bmN0aW9uKGEpe3ZhciBoPWYucHJvdG90eXBlO2Euc2V0T3B0aW9ucz1mdW5jdGlvbihtKXttPXRoaXMub3B0aW9ucz16KGEuY29uc3RydWN0b3IuZGVmYXVsdE9wdGlvbnMsdGhpcy5kZWZhdWx0UG9sYXJPcHRpb25zLAptKTttLnBsb3RCYW5kc3x8KG0ucGxvdEJhbmRzPVtdKTtCKHRoaXMsImFmdGVyU2V0T3B0aW9ucyIpfTthLmdldE9mZnNldD1mdW5jdGlvbigpe2guZ2V0T2Zmc2V0LmNhbGwodGhpcyk7dGhpcy5jaGFydC5heGlzT2Zmc2V0W3RoaXMuc2lkZV09MH07YS5nZXRMaW5lUGF0aD1mdW5jdGlvbihtLG4sZCl7bT10aGlzLnBhbmUuY2VudGVyO3ZhciBnPXRoaXMuY2hhcnQsaz1jKG4sbVsyXS8yLXRoaXMub2Zmc2V0KTsidW5kZWZpbmVkIj09PXR5cGVvZiBkJiYoZD10aGlzLmhvcml6PzA6dGhpcy5jZW50ZXImJi10aGlzLmNlbnRlclszXS8yKTtkJiYoays9ZCk7dGhpcy5pc0NpcmN1bGFyfHwidW5kZWZpbmVkIiE9PXR5cGVvZiBuPyhuPXRoaXMuY2hhcnQucmVuZGVyZXIuc3ltYm9scy5hcmModGhpcy5sZWZ0K21bMF0sdGhpcy50b3ArbVsxXSxrLGsse3N0YXJ0OnRoaXMuc3RhcnRBbmdsZVJhZCxlbmQ6dGhpcy5lbmRBbmdsZVJhZCxvcGVuOiEwLGlubmVyUjowfSksbi54Qm91bmRzPVt0aGlzLmxlZnQrCm1bMF1dLG4ueUJvdW5kcz1bdGhpcy50b3ArbVsxXS1rXSk6KG49dGhpcy5wb3N0VHJhbnNsYXRlKHRoaXMuYW5nbGVSYWQsayksbj1bWyJNIix0aGlzLmNlbnRlclswXStnLnBsb3RMZWZ0LHRoaXMuY2VudGVyWzFdK2cucGxvdFRvcF0sWyJMIixuLngsbi55XV0pO3JldHVybiBufTthLnNldEF4aXNUcmFuc2xhdGlvbj1mdW5jdGlvbigpe2guc2V0QXhpc1RyYW5zbGF0aW9uLmNhbGwodGhpcyk7dGhpcy5jZW50ZXImJih0aGlzLnRyYW5zQT10aGlzLmlzQ2lyY3VsYXI/KHRoaXMuZW5kQW5nbGVSYWQtdGhpcy5zdGFydEFuZ2xlUmFkKS8odGhpcy5tYXgtdGhpcy5taW58fDEpOih0aGlzLmNlbnRlclsyXS10aGlzLmNlbnRlclszXSkvMi8odGhpcy5tYXgtdGhpcy5taW58fDEpLHRoaXMubWluUGl4ZWxQYWRkaW5nPXRoaXMuaXNYQXhpcz90aGlzLnRyYW5zQSp0aGlzLm1pblBvaW50T2Zmc2V0OjApfTthLmJlZm9yZVNldFRpY2tQb3NpdGlvbnM9ZnVuY3Rpb24oKXt0aGlzLmF1dG9Db25uZWN0PQp0aGlzLmlzQ2lyY3VsYXImJiJ1bmRlZmluZWQiPT09dHlwZW9mIGModGhpcy51c2VyTWF4LHRoaXMub3B0aW9ucy5tYXgpJiZxKHRoaXMuZW5kQW5nbGVSYWQtdGhpcy5zdGFydEFuZ2xlUmFkKT09PXEoMipNYXRoLlBJKTshdGhpcy5pc0NpcmN1bGFyJiZ0aGlzLmNoYXJ0LmludmVydGVkJiZ0aGlzLm1heCsrO3RoaXMuYXV0b0Nvbm5lY3QmJih0aGlzLm1heCs9dGhpcy5jYXRlZ29yaWVzJiYxfHx0aGlzLnBvaW50UmFuZ2V8fHRoaXMuY2xvc2VzdFBvaW50UmFuZ2V8fDApfTthLnNldEF4aXNTaXplPWZ1bmN0aW9uKCl7aC5zZXRBeGlzU2l6ZS5jYWxsKHRoaXMpO2lmKHRoaXMuaXNSYWRpYWwpe3RoaXMucGFuZS51cGRhdGVDZW50ZXIodGhpcyk7dmFyIG09dGhpcy5jZW50ZXI9eChbXSx0aGlzLnBhbmUuY2VudGVyKTtpZih0aGlzLmlzQ2lyY3VsYXIpdGhpcy5zZWN0b3I9dGhpcy5lbmRBbmdsZVJhZC10aGlzLnN0YXJ0QW5nbGVSYWQ7ZWxzZXt2YXIgbj10aGlzLnBvc3RUcmFuc2xhdGUodGhpcy5hbmdsZVJhZCwKbVszXS8yKTttWzBdPW4ueC10aGlzLmNoYXJ0LnBsb3RMZWZ0O21bMV09bi55LXRoaXMuY2hhcnQucGxvdFRvcH10aGlzLmxlbj10aGlzLndpZHRoPXRoaXMuaGVpZ2h0PShtWzJdLW1bM10pKmModGhpcy5zZWN0b3IsMSkvMn19O2EuZ2V0UG9zaXRpb249ZnVuY3Rpb24obSxuKXttPXRoaXMudHJhbnNsYXRlKG0pO3JldHVybiB0aGlzLnBvc3RUcmFuc2xhdGUodGhpcy5pc0NpcmN1bGFyP206dGhpcy5hbmdsZVJhZCxjKHRoaXMuaXNDaXJjdWxhcj9uOjA+bT8wOm0sdGhpcy5jZW50ZXJbMl0vMiktdGhpcy5vZmZzZXQpfTthLnBvc3RUcmFuc2xhdGU9ZnVuY3Rpb24obSxuKXt2YXIgZD10aGlzLmNoYXJ0LGc9dGhpcy5jZW50ZXI7bT10aGlzLnN0YXJ0QW5nbGVSYWQrbTtyZXR1cm57eDpkLnBsb3RMZWZ0K2dbMF0rTWF0aC5jb3MobSkqbix5OmQucGxvdFRvcCtnWzFdK01hdGguc2luKG0pKm59fTthLmdldFBsb3RCYW5kUGF0aD1mdW5jdGlvbihtLG4sZCl7dmFyIGc9ZnVuY3Rpb24oZCl7aWYoInN0cmluZyI9PT0KdHlwZW9mIGQpe3ZhciBnPXBhcnNlSW50KGQsMTApO0QudGVzdChkKSYmKGc9ZypBLzEwMCk7cmV0dXJuIGd9cmV0dXJuIGR9LGs9dGhpcy5jZW50ZXIsdT10aGlzLnN0YXJ0QW5nbGVSYWQsQT1rWzJdLzIscj1NYXRoLm1pbih0aGlzLm9mZnNldCwwKSxEPS8lJC87dmFyIGw9dGhpcy5pc0NpcmN1bGFyO3ZhciBhPWMoZyhkLm91dGVyUmFkaXVzKSxBKSxoPWcoZC5pbm5lclJhZGl1cyk7Zz1jKGcoZC50aGlja25lc3MpLDEwKTtpZigicG9seWdvbiI9PT10aGlzLm9wdGlvbnMuZ3JpZExpbmVJbnRlcnBvbGF0aW9uKXI9dGhpcy5nZXRQbG90TGluZVBhdGgoe3ZhbHVlOm19KS5jb25jYXQodGhpcy5nZXRQbG90TGluZVBhdGgoe3ZhbHVlOm4scmV2ZXJzZTohMH0pKTtlbHNle209TWF0aC5tYXgobSx0aGlzLm1pbik7bj1NYXRoLm1pbihuLHRoaXMubWF4KTttPXRoaXMudHJhbnNsYXRlKG0pO249dGhpcy50cmFuc2xhdGUobik7bHx8KGE9bXx8MCxoPW58fDApO2lmKCJjaXJjbGUiIT09CmQuc2hhcGUmJmwpZD11KyhtfHwwKSx1Kz1ufHwwO2Vsc2V7ZD0tTWF0aC5QSS8yO3U9MS41Kk1hdGguUEk7dmFyIHA9ITB9YS09cjtyPXRoaXMuY2hhcnQucmVuZGVyZXIuc3ltYm9scy5hcmModGhpcy5sZWZ0K2tbMF0sdGhpcy50b3Ara1sxXSxhLGEse3N0YXJ0Ok1hdGgubWluKGQsdSksZW5kOk1hdGgubWF4KGQsdSksaW5uZXJSOmMoaCxhLShnLXIpKSxvcGVuOnB9KTtsJiYobD0odStkKS8yLHA9dGhpcy5sZWZ0K2tbMF0ra1syXS8yKk1hdGguY29zKGwpLHIueEJvdW5kcz1sPi1NYXRoLlBJLzImJmw8TWF0aC5QSS8yP1twLHRoaXMuY2hhcnQucGxvdFdpZHRoXTpbMCxwXSxyLnlCb3VuZHM9W3RoaXMudG9wK2tbMV0ra1syXS8yKk1hdGguc2luKGwpXSxyLnlCb3VuZHNbMF0rPWw+LU1hdGguUEkmJjA+bHx8bD5NYXRoLlBJPy0xMDoxMCl9cmV0dXJuIHJ9O2EuZ2V0Q3Jvc3NoYWlyUG9zaXRpb249ZnVuY3Rpb24obSxuLGQpe3ZhciBnPW0udmFsdWUsaz10aGlzLnBhbmUuY2VudGVyOwppZih0aGlzLmlzQ2lyY3VsYXIpe2lmKHQoZykpbS5wb2ludCYmKHU9bS5wb2ludC5zaGFwZUFyZ3N8fHt9LHUuc3RhcnQmJihnPXRoaXMuY2hhcnQuaW52ZXJ0ZWQ/dGhpcy50cmFuc2xhdGUobS5wb2ludC5yZWN0UGxvdFksITApOm0ucG9pbnQueCkpO2Vsc2V7dmFyIHU9bS5jaGFydFh8fDA7dmFyIEE9bS5jaGFydFl8fDA7Zz10aGlzLnRyYW5zbGF0ZShNYXRoLmF0YW4yKEEtZCx1LW4pLXRoaXMuc3RhcnRBbmdsZVJhZCwhMCl9bT10aGlzLmdldFBvc2l0aW9uKGcpO3U9bS54O0E9bS55fWVsc2UgdChnKXx8KHU9bS5jaGFydFgsQT1tLmNoYXJ0WSksdCh1KSYmdChBKSYmKGQ9a1sxXSt0aGlzLmNoYXJ0LnBsb3RUb3AsZz10aGlzLnRyYW5zbGF0ZShNYXRoLm1pbihNYXRoLnNxcnQoTWF0aC5wb3codS1uLDIpK01hdGgucG93KEEtZCwyKSksa1syXS8yKS1rWzNdLzIsITApKTtyZXR1cm5bZyx1fHwwLEF8fDBdfTthLmdldFBsb3RMaW5lUGF0aD1mdW5jdGlvbihtKXt2YXIgbj10aGlzLApkPW4ucGFuZS5jZW50ZXIsZz1uLmNoYXJ0LGs9Zy5pbnZlcnRlZCx1PW0udmFsdWUsQT1tLnJldmVyc2Uscj1uLmdldFBvc2l0aW9uKHUpLGM9bi5wYW5lLm9wdGlvbnMuYmFja2dyb3VuZD9uLnBhbmUub3B0aW9ucy5iYWNrZ3JvdW5kWzBdfHxuLnBhbmUub3B0aW9ucy5iYWNrZ3JvdW5kOnt9LGE9Yy5pbm5lclJhZGl1c3x8IjAlIixoPWMub3V0ZXJSYWRpdXN8fCIxMDAlIjtjPWRbMF0rZy5wbG90TGVmdDt2YXIgcD1kWzFdK2cucGxvdFRvcCxlPXIueCxiPXIueSx3PW4uaGVpZ2h0O3I9ZFszXS8yO3ZhciBxO20uaXNDcm9zc2hhaXImJihiPXRoaXMuZ2V0Q3Jvc3NoYWlyUG9zaXRpb24obSxjLHApLHU9YlswXSxlPWJbMV0sYj1iWzJdKTtpZihuLmlzQ2lyY3VsYXIpdT1NYXRoLnNxcnQoTWF0aC5wb3coZS1jLDIpK01hdGgucG93KGItcCwyKSksQT0ic3RyaW5nIj09PXR5cGVvZiBhP2woYSwxKTphL3UsZz0ic3RyaW5nIj09PXR5cGVvZiBoP2woaCwxKTpoL3UsZCYmciYmKHU9ci8KdSxBPHUmJihBPXUpLGc8dSYmKGc9dSkpLGQ9W1siTSIsYytBKihlLWMpLHAtQSoocC1iKV0sWyJMIixlLSgxLWcpKihlLWMpLGIrKDEtZykqKHAtYildXTtlbHNlIGlmKCh1PW4udHJhbnNsYXRlKHUpKSYmKDA+dXx8dT53KSYmKHU9MCksImNpcmNsZSI9PT1uLm9wdGlvbnMuZ3JpZExpbmVJbnRlcnBvbGF0aW9uKWQ9bi5nZXRMaW5lUGF0aCgwLHUscik7ZWxzZSBpZihkPVtdLGdbaz8ieUF4aXMiOiJ4QXhpcyJdLmZvckVhY2goZnVuY3Rpb24oZCl7ZC5wYW5lPT09bi5wYW5lJiYocT1kKX0pLHEpZm9yKGM9cS50aWNrUG9zaXRpb25zLHEuYXV0b0Nvbm5lY3QmJihjPWMuY29uY2F0KFtjWzBdXSkpLEEmJihjPWMuc2xpY2UoKS5yZXZlcnNlKCkpLHUmJih1Kz1yKSxlPTA7ZTxjLmxlbmd0aDtlKyspcD1xLmdldFBvc2l0aW9uKGNbZV0sdSksZC5wdXNoKGU/WyJMIixwLngscC55XTpbIk0iLHAueCxwLnldKTtyZXR1cm4gZH07YS5nZXRUaXRsZVBvc2l0aW9uPWZ1bmN0aW9uKCl7dmFyIGM9CnRoaXMuY2VudGVyLG49dGhpcy5jaGFydCxkPXRoaXMub3B0aW9ucy50aXRsZTtyZXR1cm57eDpuLnBsb3RMZWZ0K2NbMF0rKGQueHx8MCkseTpuLnBsb3RUb3ArY1sxXS17aGlnaDouNSxtaWRkbGU6LjI1LGxvdzowfVtkLmFsaWduXSpjWzJdKyhkLnl8fDApfX07YS5jcmVhdGVMYWJlbENvbGxlY3Rvcj1mdW5jdGlvbigpe3ZhciBjPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoYy5pc1JhZGlhbCYmYy50aWNrUG9zaXRpb25zJiYhMCE9PWMub3B0aW9ucy5sYWJlbHMuYWxsb3dPdmVybGFwKXJldHVybiBjLnRpY2tQb3NpdGlvbnMubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBjLnRpY2tzW25dJiZjLnRpY2tzW25dLmxhYmVsfSkuZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiEhbn0pfX19O2EuY29tcG9zZT1mdW5jdGlvbihwLGUpe2gocCwiaW5pdCIsZnVuY3Rpb24oYyl7dmFyIG49dGhpcy5jaGFydCxkPW4uaW52ZXJ0ZWQsZz1uLmFuZ3VsYXIsaz1uLnBvbGFyLHU9dGhpcy5pc1hBeGlzLApBPXRoaXMuY29sbCxyPWcmJnUsbCxtPW4ub3B0aW9ucztjPWMudXNlck9wdGlvbnMucGFuZXx8MDtjPXRoaXMucGFuZT1uLnBhbmUmJm4ucGFuZVtjXTtpZigiY29sb3JBeGlzIj09PUEpdGhpcy5pc1JhZGlhbD0hMTtlbHNle2lmKGcpe2lmKHI/Yi5pbml0KHRoaXMpOmEuaW5pdCh0aGlzKSxsPSF1KXRoaXMuZGVmYXVsdFBvbGFyT3B0aW9ucz1hLmRlZmF1bHRSYWRpYWxHYXVnZU9wdGlvbnN9ZWxzZSBrJiYoYS5pbml0KHRoaXMpLHRoaXMuZGVmYXVsdFBvbGFyT3B0aW9ucz0obD10aGlzLmhvcml6KT9hLmRlZmF1bHRDaXJjdWxhck9wdGlvbnM6eigieEF4aXMiPT09QT9wLmRlZmF1bHRPcHRpb25zOnAuZGVmYXVsdFlBeGlzT3B0aW9ucyxhLmRlZmF1bHRSYWRpYWxPcHRpb25zKSxkJiYieUF4aXMiPT09QSYmKHRoaXMuZGVmYXVsdFBvbGFyT3B0aW9ucy5zdGFja0xhYmVscz1wLmRlZmF1bHRZQXhpc09wdGlvbnMuc3RhY2tMYWJlbHMpKTtnfHxrPyh0aGlzLmlzUmFkaWFsPSEwLG0uY2hhcnQuem9vbVR5cGU9Cm51bGwsdGhpcy5sYWJlbENvbGxlY3Rvcnx8KHRoaXMubGFiZWxDb2xsZWN0b3I9dGhpcy5jcmVhdGVMYWJlbENvbGxlY3RvcigpKSx0aGlzLmxhYmVsQ29sbGVjdG9yJiZuLmxhYmVsQ29sbGVjdG9ycy5wdXNoKHRoaXMubGFiZWxDb2xsZWN0b3IpKTp0aGlzLmlzUmFkaWFsPSExO2MmJmwmJihjLmF4aXM9dGhpcyk7dGhpcy5pc0NpcmN1bGFyPWx9fSk7aChwLCJhZnRlckluaXQiLGZ1bmN0aW9uKCl7dmFyIGw9dGhpcy5jaGFydCxuPXRoaXMub3B0aW9ucyxkPXRoaXMucGFuZSxnPWQmJmQub3B0aW9ucztsLmFuZ3VsYXImJnRoaXMuaXNYQXhpc3x8IWR8fCFsLmFuZ3VsYXImJiFsLnBvbGFyfHwodGhpcy5hbmdsZVJhZD0obi5hbmdsZXx8MCkqTWF0aC5QSS8xODAsdGhpcy5zdGFydEFuZ2xlUmFkPShnLnN0YXJ0QW5nbGUtOTApKk1hdGguUEkvMTgwLHRoaXMuZW5kQW5nbGVSYWQ9KGMoZy5lbmRBbmdsZSxnLnN0YXJ0QW5nbGUrMzYwKS05MCkqTWF0aC5QSS8xODAsdGhpcy5vZmZzZXQ9Cm4ub2Zmc2V0fHwwKX0pO2gocCwiYXV0b0xhYmVsQWxpZ24iLGZ1bmN0aW9uKGMpe3RoaXMuaXNSYWRpYWwmJihjLmFsaWduPXZvaWQgMCxjLnByZXZlbnREZWZhdWx0KCkpfSk7aChwLCJkZXN0cm95IixmdW5jdGlvbigpe2lmKHRoaXMuY2hhcnQmJnRoaXMuY2hhcnQubGFiZWxDb2xsZWN0b3JzKXt2YXIgYz10aGlzLmxhYmVsQ29sbGVjdG9yP3RoaXMuY2hhcnQubGFiZWxDb2xsZWN0b3JzLmluZGV4T2YodGhpcy5sYWJlbENvbGxlY3Rvcik6LTE7MDw9YyYmdGhpcy5jaGFydC5sYWJlbENvbGxlY3RvcnMuc3BsaWNlKGMsMSl9fSk7aChwLCJpbml0aWFsQXhpc1RyYW5zbGF0aW9uIixmdW5jdGlvbigpe3RoaXMuaXNSYWRpYWwmJnRoaXMuYmVmb3JlU2V0VGlja1Bvc2l0aW9ucygpfSk7aChlLCJhZnRlckdldFBvc2l0aW9uIixmdW5jdGlvbihjKXt0aGlzLmF4aXMuZ2V0UG9zaXRpb24mJngoYy5wb3MsdGhpcy5heGlzLmdldFBvc2l0aW9uKHRoaXMucG9zKSl9KTtoKGUsImFmdGVyR2V0TGFiZWxQb3NpdGlvbiIsCmZ1bmN0aW9uKGEpe3ZhciBuPXRoaXMuYXhpcyxkPXRoaXMubGFiZWw7aWYoZCl7dmFyIGc9ZC5nZXRCQm94KCksaz1uLm9wdGlvbnMubGFiZWxzLHU9ay55LEE9MjAscj1rLmFsaWduLG09KG4udHJhbnNsYXRlKHRoaXMucG9zKStuLnN0YXJ0QW5nbGVSYWQrTWF0aC5QSS8yKS9NYXRoLlBJKjE4MCUzNjAscD1NYXRoLnJvdW5kKG0pLGg9ImVuZCIsZT0wPnA/cCszNjA6cCxiPWUsdz0wLHE9MCx2PW51bGw9PT1rLnk/LjMqLWcuaGVpZ2h0OjA7aWYobi5pc1JhZGlhbCl7dmFyIHk9bi5nZXRQb3NpdGlvbih0aGlzLnBvcyxuLmNlbnRlclsyXS8yK2woYyhrLmRpc3RhbmNlLC0yNSksbi5jZW50ZXJbMl0vMiwtbi5jZW50ZXJbMl0vMikpOyJhdXRvIj09PWsucm90YXRpb24/ZC5hdHRyKHtyb3RhdGlvbjptfSk6bnVsbD09PXUmJih1PW4uY2hhcnQucmVuZGVyZXIuZm9udE1ldHJpY3MoZC5zdHlsZXMmJmQuc3R5bGVzLmZvbnRTaXplKS5iLWcuaGVpZ2h0LzIpO251bGw9PT1yJiYobi5pc0NpcmN1bGFyPwooZy53aWR0aD5uLmxlbipuLnRpY2tJbnRlcnZhbC8obi5tYXgtbi5taW4pJiYoQT0wKSxyPW0+QSYmbTwxODAtQT8ibGVmdCI6bT4xODArQSYmbTwzNjAtQT8icmlnaHQiOiJjZW50ZXIiKTpyPSJjZW50ZXIiLGQuYXR0cih7YWxpZ246cn0pKTtpZigiYXV0byI9PT1yJiYyPT09bi50aWNrUG9zaXRpb25zLmxlbmd0aCYmbi5pc0NpcmN1bGFyKXs5MDxlJiYxODA+ZT9lPTE4MC1lOjI3MDxlJiYzNjA+PWUmJihlPTU0MC1lKTsxODA8YiYmMzYwPj1iJiYoYj0zNjAtYik7aWYobi5wYW5lLm9wdGlvbnMuc3RhcnRBbmdsZT09PXB8fG4ucGFuZS5vcHRpb25zLnN0YXJ0QW5nbGU9PT1wKzM2MHx8bi5wYW5lLm9wdGlvbnMuc3RhcnRBbmdsZT09PXAtMzYwKWg9InN0YXJ0IjtyPS05MDw9cCYmOTA+PXB8fC0zNjA8PXAmJi0yNzA+PXB8fDI3MDw9cCYmMzYwPj1wPyJzdGFydCI9PT1oPyJyaWdodCI6ImxlZnQiOiJzdGFydCI9PT1oPyJsZWZ0IjoicmlnaHQiOzcwPGImJjExMD5iJiYocj0iY2VudGVyIik7CjE1PmV8fDE4MDw9ZSYmMTk1PmU/dz0uMypnLmhlaWdodDoxNTw9ZSYmMzU+PWU/dz0ic3RhcnQiPT09aD8wOi43NSpnLmhlaWdodDoxOTU8PWUmJjIxNT49ZT93PSJzdGFydCI9PT1oPy43NSpnLmhlaWdodDowOjM1PGUmJjkwPj1lP3c9InN0YXJ0Ij09PWg/LjI1Ki1nLmhlaWdodDpnLmhlaWdodDoyMTU8ZSYmMjcwPj1lJiYodz0ic3RhcnQiPT09aD9nLmhlaWdodDouMjUqLWcuaGVpZ2h0KTsxNT5iP3E9InN0YXJ0Ij09PWg/LjE1Ki1nLmhlaWdodDouMTUqZy5oZWlnaHQ6MTY1PGImJjE4MD49YiYmKHE9InN0YXJ0Ij09PWg/LjE1KmcuaGVpZ2h0Oi4xNSotZy5oZWlnaHQpO2QuYXR0cih7YWxpZ246cn0pO2QudHJhbnNsYXRlKHEsdyt2KX1hLnBvcy54PXkueCtrLng7YS5wb3MueT15LnkrdX19fSk7dyhlLnByb3RvdHlwZSwiZ2V0TWFya1BhdGgiLGZ1bmN0aW9uKGMsbixkLGcsayx1LEEpe3ZhciByPXRoaXMuYXhpcztyLmlzUmFkaWFsPyhjPXIuZ2V0UG9zaXRpb24odGhpcy5wb3MsCnIuY2VudGVyWzJdLzIrZyksbj1bIk0iLG4sZCwiTCIsYy54LGMueV0pOm49Yy5jYWxsKHRoaXMsbixkLGcsayx1LEEpO3JldHVybiBufSl9O2EuZGVmYXVsdENpcmN1bGFyT3B0aW9ucz17Z3JpZExpbmVXaWR0aDoxLGxhYmVsczp7YWxpZ246bnVsbCxkaXN0YW5jZToxNSx4OjAseTpudWxsLHN0eWxlOnt0ZXh0T3ZlcmZsb3c6Im5vbmUifX0sbWF4UGFkZGluZzowLG1pblBhZGRpbmc6MCxzaG93TGFzdExhYmVsOiExLHRpY2tMZW5ndGg6MH07YS5kZWZhdWx0UmFkaWFsR2F1Z2VPcHRpb25zPXtsYWJlbHM6e2FsaWduOiJjZW50ZXIiLHg6MCx5Om51bGx9LG1pbm9yR3JpZExpbmVXaWR0aDowLG1pbm9yVGlja0ludGVydmFsOiJhdXRvIixtaW5vclRpY2tMZW5ndGg6MTAsbWlub3JUaWNrUG9zaXRpb246Imluc2lkZSIsbWlub3JUaWNrV2lkdGg6MSx0aWNrTGVuZ3RoOjEwLHRpY2tQb3NpdGlvbjoiaW5zaWRlIix0aWNrV2lkdGg6Mix0aXRsZTp7cm90YXRpb246MH0sekluZGV4OjJ9OwphLmRlZmF1bHRSYWRpYWxPcHRpb25zPXtncmlkTGluZUludGVycG9sYXRpb246ImNpcmNsZSIsZ3JpZExpbmVXaWR0aDoxLGxhYmVsczp7YWxpZ246InJpZ2h0Iix4Oi0zLHk6LTJ9LHNob3dMYXN0TGFiZWw6ITEsdGl0bGU6e3g6NCx0ZXh0Om51bGwscm90YXRpb246OTB9fTtyZXR1cm4gYX0oKTtlLmNvbXBvc2UoZixhKTtyZXR1cm4gZX0pO0MoZiwicGFydHMtbW9yZS9BcmVhUmFuZ2VTZXJpZXMuanMiLFtmWyJwYXJ0cy9HbG9iYWxzLmpzIl0sZlsicGFydHMvUG9pbnQuanMiXSxmWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZixhLGIpe3ZhciBlPWIuZGVmaW5lZCxoPWIuZXh0ZW5kLHE9Yi5pc0FycmF5LHQ9Yi5pc051bWJlcix4PWIucGljaztiPWIuc2VyaWVzVHlwZTt2YXIgQj1mLnNlcmllc1R5cGVzLHo9Zi5TZXJpZXMucHJvdG90eXBlLGM9YS5wcm90b3R5cGU7YigiYXJlYXJhbmdlIiwiYXJlYSIse2xpbmVXaWR0aDoxLHRocmVzaG9sZDpudWxsLHRvb2x0aXA6e3BvaW50Rm9ybWF0Oic8c3BhbiBzdHlsZT0iY29sb3I6e3Nlcmllcy5jb2xvcn0iPlx1MjVjZjwvc3Bhbj4ge3Nlcmllcy5uYW1lfTogPGI+e3BvaW50Lmxvd308L2I+IC0gPGI+e3BvaW50LmhpZ2h9PC9iPjxici8+J30sCnRyYWNrQnlBcmVhOiEwLGRhdGFMYWJlbHM6e2FsaWduOnZvaWQgMCx2ZXJ0aWNhbEFsaWduOnZvaWQgMCx4TG93OjAseEhpZ2g6MCx5TG93OjAseUhpZ2g6MH19LHtwb2ludEFycmF5TWFwOlsibG93IiwiaGlnaCJdLHBvaW50VmFsS2V5OiJsb3ciLGRlZmVyVHJhbnNsYXRlUG9sYXI6ITAsdG9ZRGF0YTpmdW5jdGlvbihjKXtyZXR1cm5bYy5sb3csYy5oaWdoXX0saGlnaFRvWFk6ZnVuY3Rpb24oYyl7dmFyIGw9dGhpcy5jaGFydCxhPXRoaXMueEF4aXMucG9zdFRyYW5zbGF0ZShjLnJlY3RQbG90WCx0aGlzLnlBeGlzLmxlbi1jLnBsb3RIaWdoKTtjLnBsb3RIaWdoWD1hLngtbC5wbG90TGVmdDtjLnBsb3RIaWdoPWEueS1sLnBsb3RUb3A7Yy5wbG90TG93WD1jLnBsb3RYfSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXt2YXIgYz10aGlzLGE9Yy55QXhpcyxwPSEhYy5tb2RpZnlWYWx1ZTtCLmFyZWEucHJvdG90eXBlLnRyYW5zbGF0ZS5hcHBseShjKTtjLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGwpe3ZhciBlPQpsLmhpZ2gsbT1sLnBsb3RZO2wuaXNOdWxsP2wucGxvdFk9bnVsbDoobC5wbG90TG93PW0sbC5wbG90SGlnaD1hLnRyYW5zbGF0ZShwP2MubW9kaWZ5VmFsdWUoZSxsKTplLDAsMSwwLDEpLHAmJihsLnlCb3R0b209bC5wbG90SGlnaCkpfSk7dGhpcy5jaGFydC5wb2xhciYmdGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihsKXtjLmhpZ2hUb1hZKGwpO2wudG9vbHRpcFBvcz1bKGwucGxvdEhpZ2hYK2wucGxvdExvd1gpLzIsKGwucGxvdEhpZ2grbC5wbG90TG93KS8yXX0pfSxnZXRHcmFwaFBhdGg6ZnVuY3Rpb24oYyl7dmFyIGE9W10sbD1bXSxlLGg9Qi5hcmVhLnByb3RvdHlwZS5nZXRHcmFwaFBhdGg7dmFyIG09dGhpcy5vcHRpb25zO3ZhciBuPXRoaXMuY2hhcnQucG9sYXImJiExIT09bS5jb25uZWN0RW5kcyxkPW0uY29ubmVjdE51bGxzLGc9bS5zdGVwO2M9Y3x8dGhpcy5wb2ludHM7Zm9yKGU9Yy5sZW5ndGg7ZS0tOyl7dmFyIGs9Y1tlXTtrLmlzTnVsbHx8bnx8ZHx8Y1tlKzFdJiYKIWNbZSsxXS5pc051bGx8fGwucHVzaCh7cGxvdFg6ay5wbG90WCxwbG90WTprLnBsb3RZLGRvQ3VydmU6ITF9KTt2YXIgdT17cG9sYXJQbG90WTprLnBvbGFyUGxvdFkscmVjdFBsb3RYOmsucmVjdFBsb3RYLHlCb3R0b206ay55Qm90dG9tLHBsb3RYOngoay5wbG90SGlnaFgsay5wbG90WCkscGxvdFk6ay5wbG90SGlnaCxpc051bGw6ay5pc051bGx9O2wucHVzaCh1KTthLnB1c2godSk7ay5pc051bGx8fG58fGR8fGNbZS0xXSYmIWNbZS0xXS5pc051bGx8fGwucHVzaCh7cGxvdFg6ay5wbG90WCxwbG90WTprLnBsb3RZLGRvQ3VydmU6ITF9KX1jPWguY2FsbCh0aGlzLGMpO2cmJighMD09PWcmJihnPSJsZWZ0IiksbS5zdGVwPXtsZWZ0OiJyaWdodCIsY2VudGVyOiJjZW50ZXIiLHJpZ2h0OiJsZWZ0In1bZ10pO2E9aC5jYWxsKHRoaXMsYSk7bD1oLmNhbGwodGhpcyxsKTttLnN0ZXA9ZzttPVtdLmNvbmNhdChjLGEpOyF0aGlzLmNoYXJ0LnBvbGFyJiZsWzBdJiYiTSI9PT1sWzBdWzBdJiYKKGxbMF09WyJMIixsWzBdWzFdLGxbMF1bMl1dKTt0aGlzLmdyYXBoUGF0aD1tO3RoaXMuYXJlYVBhdGg9Yy5jb25jYXQobCk7bS5pc0FyZWE9ITA7bS54TWFwPWMueE1hcDt0aGlzLmFyZWFQYXRoLnhNYXA9Yy54TWFwO3JldHVybiBtfSxkcmF3RGF0YUxhYmVsczpmdW5jdGlvbigpe3ZhciBjPXRoaXMucG9pbnRzLGE9Yy5sZW5ndGgsZSxiPVtdLGY9dGhpcy5vcHRpb25zLmRhdGFMYWJlbHMsbSxuPXRoaXMuY2hhcnQuaW52ZXJ0ZWQ7aWYocShmKSlpZigxPGYubGVuZ3RoKXt2YXIgZD1mWzBdO3ZhciBnPWZbMV19ZWxzZSBkPWZbMF0sZz17ZW5hYmxlZDohMX07ZWxzZSBkPWgoe30sZiksZC54PWYueEhpZ2gsZC55PWYueUhpZ2gsZz1oKHt9LGYpLGcueD1mLnhMb3csZy55PWYueUxvdztpZihkLmVuYWJsZWR8fHRoaXMuX2hhc1BvaW50TGFiZWxzKXtmb3IoZT1hO2UtLTspaWYobT1jW2VdKXt2YXIgaz1kLmluc2lkZT9tLnBsb3RIaWdoPG0ucGxvdExvdzptLnBsb3RIaWdoPm0ucGxvdExvdzsKbS55PW0uaGlnaDttLl9wbG90WT1tLnBsb3RZO20ucGxvdFk9bS5wbG90SGlnaDtiW2VdPW0uZGF0YUxhYmVsO20uZGF0YUxhYmVsPW0uZGF0YUxhYmVsVXBwZXI7bS5iZWxvdz1rO24/ZC5hbGlnbnx8KGQuYWxpZ249az8icmlnaHQiOiJsZWZ0Iik6ZC52ZXJ0aWNhbEFsaWdufHwoZC52ZXJ0aWNhbEFsaWduPWs/InRvcCI6ImJvdHRvbSIpfXRoaXMub3B0aW9ucy5kYXRhTGFiZWxzPWQ7ei5kcmF3RGF0YUxhYmVscyYmei5kcmF3RGF0YUxhYmVscy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7Zm9yKGU9YTtlLS07KWlmKG09Y1tlXSltLmRhdGFMYWJlbFVwcGVyPW0uZGF0YUxhYmVsLG0uZGF0YUxhYmVsPWJbZV0sZGVsZXRlIG0uZGF0YUxhYmVscyxtLnk9bS5sb3csbS5wbG90WT1tLl9wbG90WX1pZihnLmVuYWJsZWR8fHRoaXMuX2hhc1BvaW50TGFiZWxzKXtmb3IoZT1hO2UtLTspaWYobT1jW2VdKWs9Zy5pbnNpZGU/bS5wbG90SGlnaDxtLnBsb3RMb3c6bS5wbG90SGlnaD5tLnBsb3RMb3csCm0uYmVsb3c9IWssbj9nLmFsaWdufHwoZy5hbGlnbj1rPyJsZWZ0IjoicmlnaHQiKTpnLnZlcnRpY2FsQWxpZ258fChnLnZlcnRpY2FsQWxpZ249az8iYm90dG9tIjoidG9wIik7dGhpcy5vcHRpb25zLmRhdGFMYWJlbHM9Zzt6LmRyYXdEYXRhTGFiZWxzJiZ6LmRyYXdEYXRhTGFiZWxzLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1pZihkLmVuYWJsZWQpZm9yKGU9YTtlLS07KWlmKG09Y1tlXSltLmRhdGFMYWJlbHM9W20uZGF0YUxhYmVsVXBwZXIsbS5kYXRhTGFiZWxdLmZpbHRlcihmdW5jdGlvbihkKXtyZXR1cm4hIWR9KTt0aGlzLm9wdGlvbnMuZGF0YUxhYmVscz1mfSxhbGlnbkRhdGFMYWJlbDpmdW5jdGlvbigpe0IuY29sdW1uLnByb3RvdHlwZS5hbGlnbkRhdGFMYWJlbC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGRyYXdQb2ludHM6ZnVuY3Rpb24oKXt2YXIgYz10aGlzLnBvaW50cy5sZW5ndGgsYTt6LmRyYXdQb2ludHMuYXBwbHkodGhpcyxhcmd1bWVudHMpO2ZvcihhPTA7YTxjOyl7dmFyIGI9CnRoaXMucG9pbnRzW2FdO2Iub3JpZ1Byb3BzPXtwbG90WTpiLnBsb3RZLHBsb3RYOmIucGxvdFgsaXNJbnNpZGU6Yi5pc0luc2lkZSxuZWdhdGl2ZTpiLm5lZ2F0aXZlLHpvbmU6Yi56b25lLHk6Yi55fTtiLmxvd2VyR3JhcGhpYz1iLmdyYXBoaWM7Yi5ncmFwaGljPWIudXBwZXJHcmFwaGljO2IucGxvdFk9Yi5wbG90SGlnaDtlKGIucGxvdEhpZ2hYKSYmKGIucGxvdFg9Yi5wbG90SGlnaFgpO2IueT1iLmhpZ2g7Yi5uZWdhdGl2ZT1iLmhpZ2g8KHRoaXMub3B0aW9ucy50aHJlc2hvbGR8fDApO2Iuem9uZT10aGlzLnpvbmVzLmxlbmd0aCYmYi5nZXRab25lKCk7dGhpcy5jaGFydC5wb2xhcnx8KGIuaXNJbnNpZGU9Yi5pc1RvcEluc2lkZT0idW5kZWZpbmVkIiE9PXR5cGVvZiBiLnBsb3RZJiYwPD1iLnBsb3RZJiZiLnBsb3RZPD10aGlzLnlBeGlzLmxlbiYmMDw9Yi5wbG90WCYmYi5wbG90WDw9dGhpcy54QXhpcy5sZW4pO2ErK316LmRyYXdQb2ludHMuYXBwbHkodGhpcyxhcmd1bWVudHMpOwpmb3IoYT0wO2E8YzspYj10aGlzLnBvaW50c1thXSxiLnVwcGVyR3JhcGhpYz1iLmdyYXBoaWMsYi5ncmFwaGljPWIubG93ZXJHcmFwaGljLGgoYixiLm9yaWdQcm9wcyksZGVsZXRlIGIub3JpZ1Byb3BzLGErK30sc2V0U3RhY2tlZFBvaW50czpmLm5vb3B9LHtzZXRTdGF0ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuc3RhdGUsYj10aGlzLnNlcmllcyxoPWIuY2hhcnQucG9sYXI7ZSh0aGlzLnBsb3RIaWdoKXx8KHRoaXMucGxvdEhpZ2g9Yi55QXhpcy50b1BpeGVscyh0aGlzLmhpZ2gsITApKTtlKHRoaXMucGxvdExvdyl8fCh0aGlzLnBsb3RMb3c9dGhpcy5wbG90WT1iLnlBeGlzLnRvUGl4ZWxzKHRoaXMubG93LCEwKSk7Yi5zdGF0ZU1hcmtlckdyYXBoaWMmJihiLmxvd2VyU3RhdGVNYXJrZXJHcmFwaGljPWIuc3RhdGVNYXJrZXJHcmFwaGljLGIuc3RhdGVNYXJrZXJHcmFwaGljPWIudXBwZXJTdGF0ZU1hcmtlckdyYXBoaWMpO3RoaXMuZ3JhcGhpYz10aGlzLnVwcGVyR3JhcGhpYzsKdGhpcy5wbG90WT10aGlzLnBsb3RIaWdoO2gmJih0aGlzLnBsb3RYPXRoaXMucGxvdEhpZ2hYKTtjLnNldFN0YXRlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnN0YXRlPWE7dGhpcy5wbG90WT10aGlzLnBsb3RMb3c7dGhpcy5ncmFwaGljPXRoaXMubG93ZXJHcmFwaGljO2gmJih0aGlzLnBsb3RYPXRoaXMucGxvdExvd1gpO2Iuc3RhdGVNYXJrZXJHcmFwaGljJiYoYi51cHBlclN0YXRlTWFya2VyR3JhcGhpYz1iLnN0YXRlTWFya2VyR3JhcGhpYyxiLnN0YXRlTWFya2VyR3JhcGhpYz1iLmxvd2VyU3RhdGVNYXJrZXJHcmFwaGljLGIubG93ZXJTdGF0ZU1hcmtlckdyYXBoaWM9dm9pZCAwKTtjLnNldFN0YXRlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0saGFsb1BhdGg6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnNlcmllcy5jaGFydC5wb2xhcixiPVtdO3RoaXMucGxvdFk9dGhpcy5wbG90TG93O2EmJih0aGlzLnBsb3RYPXRoaXMucGxvdExvd1gpO3RoaXMuaXNJbnNpZGUmJihiPWMuaGFsb1BhdGguYXBwbHkodGhpcywKYXJndW1lbnRzKSk7dGhpcy5wbG90WT10aGlzLnBsb3RIaWdoO2EmJih0aGlzLnBsb3RYPXRoaXMucGxvdEhpZ2hYKTt0aGlzLmlzVG9wSW5zaWRlJiYoYj1iLmNvbmNhdChjLmhhbG9QYXRoLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkpO3JldHVybiBifSxkZXN0cm95RWxlbWVudHM6ZnVuY3Rpb24oKXtbImxvd2VyR3JhcGhpYyIsInVwcGVyR3JhcGhpYyJdLmZvckVhY2goZnVuY3Rpb24oYyl7dGhpc1tjXSYmKHRoaXNbY109dGhpc1tjXS5kZXN0cm95KCkpfSx0aGlzKTt0aGlzLmdyYXBoaWM9bnVsbDtyZXR1cm4gYy5kZXN0cm95RWxlbWVudHMuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcy5sb3cpJiZ0KHRoaXMuaGlnaCl9fSk7IiJ9KTtDKGYsInBhcnRzLW1vcmUvQXJlYVNwbGluZVJhbmdlU2VyaWVzLmpzIixbZlsicGFydHMvR2xvYmFscy5qcyJdLGZbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihmLGEpe2E9YS5zZXJpZXNUeXBlOwphKCJhcmVhc3BsaW5lcmFuZ2UiLCJhcmVhcmFuZ2UiLG51bGwse2dldFBvaW50U3BsaW5lOmYuc2VyaWVzVHlwZXMuc3BsaW5lLnByb3RvdHlwZS5nZXRQb2ludFNwbGluZX0pOyIifSk7QyhmLCJwYXJ0cy1tb3JlL0NvbHVtblJhbmdlU2VyaWVzLmpzIixbZlsicGFydHMvR2xvYmFscy5qcyJdLGZbInBhcnRzL09wdGlvbnMuanMiXSxmWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZixhLGIpe2E9YS5kZWZhdWx0T3B0aW9uczt2YXIgZT1iLmNsYW1wLGg9Yi5tZXJnZSxxPWIucGljaztiPWIuc2VyaWVzVHlwZTt2YXIgdD1mLm5vb3AseD1mLnNlcmllc1R5cGVzLmNvbHVtbi5wcm90b3R5cGU7YigiY29sdW1ucmFuZ2UiLCJhcmVhcmFuZ2UiLGgoYS5wbG90T3B0aW9ucy5jb2x1bW4sYS5wbG90T3B0aW9ucy5hcmVhcmFuZ2Use3BvaW50UmFuZ2U6bnVsbCxtYXJrZXI6bnVsbCxzdGF0ZXM6e2hvdmVyOntoYWxvOiExfX19KSx7dHJhbnNsYXRlOmZ1bmN0aW9uKCl7dmFyIGE9CnRoaXMsYj1hLnlBeGlzLGM9YS54QXhpcyxsPWMuc3RhcnRBbmdsZVJhZCxoLHA9YS5jaGFydCxmPWEueEF4aXMuaXNSYWRpYWwsdD1NYXRoLm1heChwLmNoYXJ0V2lkdGgscC5jaGFydEhlaWdodCkrOTk5LG07eC50cmFuc2xhdGUuYXBwbHkoYSk7YS5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgZD1uLnNoYXBlQXJncyxnPWEub3B0aW9ucy5taW5Qb2ludExlbmd0aDtuLnBsb3RIaWdoPW09ZShiLnRyYW5zbGF0ZShuLmhpZ2gsMCwxLDAsMSksLXQsdCk7bi5wbG90TG93PWUobi5wbG90WSwtdCx0KTt2YXIgaz1tO3ZhciB1PXEobi5yZWN0UGxvdFksbi5wbG90WSktbTtNYXRoLmFicyh1KTxnPyhnLT11LHUrPWcsay09Zy8yKTowPnUmJih1Kj0tMSxrLT11KTtmPyhoPW4uYmFyWCtsLG4uc2hhcGVUeXBlPSJhcmMiLG4uc2hhcGVBcmdzPWEucG9sYXJBcmMoayt1LGssaCxoK24ucG9pbnRXaWR0aCkpOihkLmhlaWdodD11LGQueT1rLG4udG9vbHRpcFBvcz1wLmludmVydGVkPwpbYi5sZW4rYi5wb3MtcC5wbG90TGVmdC1rLXUvMixjLmxlbitjLnBvcy1wLnBsb3RUb3AtZC54LWQud2lkdGgvMix1XTpbYy5sZWZ0LXAucGxvdExlZnQrZC54K2Qud2lkdGgvMixiLnBvcy1wLnBsb3RUb3Arayt1LzIsdV0pfSl9LGRpcmVjdFRvdWNoOiEwLHRyYWNrZXJHcm91cHM6WyJncm91cCIsImRhdGFMYWJlbHNHcm91cCJdLGRyYXdHcmFwaDp0LGdldFN5bWJvbDp0LGNyaXNwQ29sOmZ1bmN0aW9uKCl7cmV0dXJuIHguY3Jpc3BDb2wuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7cmV0dXJuIHguZHJhd1BvaW50cy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGRyYXdUcmFja2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHguZHJhd1RyYWNrZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxnZXRDb2x1bW5NZXRyaWNzOmZ1bmN0aW9uKCl7cmV0dXJuIHguZ2V0Q29sdW1uTWV0cmljcy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHBvaW50QXR0cmliczpmdW5jdGlvbigpe3JldHVybiB4LnBvaW50QXR0cmlicy5hcHBseSh0aGlzLAphcmd1bWVudHMpfSxhbmltYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHguYW5pbWF0ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHBvbGFyQXJjOmZ1bmN0aW9uKCl7cmV0dXJuIHgucG9sYXJBcmMuYXBwbHkodGhpcyxhcmd1bWVudHMpfSx0cmFuc2xhdGUzZFBvaW50czpmdW5jdGlvbigpe3JldHVybiB4LnRyYW5zbGF0ZTNkUG9pbnRzLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdHJhbnNsYXRlM2RTaGFwZXM6ZnVuY3Rpb24oKXtyZXR1cm4geC50cmFuc2xhdGUzZFNoYXBlcy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSx7c2V0U3RhdGU6eC5wb2ludENsYXNzLnByb3RvdHlwZS5zZXRTdGF0ZX0pOyIifSk7QyhmLCJwYXJ0cy1tb3JlL0NvbHVtblB5cmFtaWRTZXJpZXMuanMiLFtmWyJwYXJ0cy9HbG9iYWxzLmpzIl0sZlsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGYsYSl7dmFyIGI9YS5jbGFtcCxlPWEucGljazthPWEuc2VyaWVzVHlwZTt2YXIgaD1mLnNlcmllc1R5cGVzLmNvbHVtbi5wcm90b3R5cGU7CmEoImNvbHVtbnB5cmFtaWQiLCJjb2x1bW4iLHt9LHt0cmFuc2xhdGU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGY9YS5jaGFydCx4PWEub3B0aW9ucyxCPWEuZGVuc2U9Mj5hLmNsb3Nlc3RQb2ludFJhbmdlKmEueEF4aXMudHJhbnNBO0I9YS5ib3JkZXJXaWR0aD1lKHguYm9yZGVyV2lkdGgsQj8wOjEpO3ZhciB6PWEueUF4aXMsYz14LnRocmVzaG9sZCxsPWEudHJhbnNsYXRlZFRocmVzaG9sZD16LmdldFRocmVzaG9sZChjKSx3PWUoeC5taW5Qb2ludExlbmd0aCw1KSxwPWEuZ2V0Q29sdW1uTWV0cmljcygpLHk9cC53aWR0aCx2PWEuYmFyVz1NYXRoLm1heCh5LDErMipCKSxtPWEucG9pbnRYT2Zmc2V0PXAub2Zmc2V0O2YuaW52ZXJ0ZWQmJihsLT0uNSk7eC5wb2ludFBhZGRpbmcmJih2PU1hdGguY2VpbCh2KSk7aC50cmFuc2xhdGUuYXBwbHkoYSk7YS5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgZD1lKG4ueUJvdHRvbSxsKSxnPTk5OStNYXRoLmFicyhkKSxrPWIobi5wbG90WSwKLWcsei5sZW4rZyk7Zz1uLnBsb3RYK207dmFyIHU9di8yLEE9TWF0aC5taW4oayxkKTtkPU1hdGgubWF4KGssZCktQTt2YXIgcjtuLmJhclg9ZztuLnBvaW50V2lkdGg9eTtuLnRvb2x0aXBQb3M9Zi5pbnZlcnRlZD9bei5sZW4rei5wb3MtZi5wbG90TGVmdC1rLGEueEF4aXMubGVuLWctdSxkXTpbZyt1LGsrei5wb3MtZi5wbG90VG9wLGRdO2s9Yysobi50b3RhbHx8bi55KTsicGVyY2VudCI9PT14LnN0YWNraW5nJiYoaz1jKygwPm4ueSk/LTEwMDoxMDApO2s9ei50b1BpeGVscyhrLCEwKTt2YXIgRD0ocj1mLnBsb3RIZWlnaHQtay0oZi5wbG90SGVpZ2h0LWwpKT91KihBLWspL3I6MDt2YXIgaD1yP3UqKEErZC1rKS9yOjA7cj1nLUQrdTtEPWcrRCt1O3ZhciBwPWcraCt1O2g9Zy1oK3U7dmFyIHE9QS13O3ZhciBFPUErZDswPm4ueSYmKHE9QSxFPUErZCt3KTtmLmludmVydGVkJiYocD1mLnBsb3RXaWR0aC1BLHI9ay0oZi5wbG90V2lkdGgtbCksRD11KihrLXApL3IsaD11KihrLShwLQpkKSkvcixyPWcrdStELEQ9ci0yKkQscD1nLWgrdSxoPWcraCt1LHE9QSxFPUErZC13LDA+bi55JiYoRT1BK2QrdykpO24uc2hhcGVUeXBlPSJwYXRoIjtuLnNoYXBlQXJncz17eDpyLHk6cSx3aWR0aDpELXIsaGVpZ2h0OmQsZDpbWyJNIixyLHFdLFsiTCIsRCxxXSxbIkwiLHAsRV0sWyJMIixoLEVdLFsiWiJdXX19KX19KTsiIn0pO0MoZiwicGFydHMtbW9yZS9HYXVnZVNlcmllcy5qcyIsW2ZbInBhcnRzL0dsb2JhbHMuanMiXSxmWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZixhKXt2YXIgYj1hLmNsYW1wLGU9YS5pc051bWJlcixoPWEubWVyZ2UscT1hLnBpY2ssdD1hLnBJbnQ7YT1hLnNlcmllc1R5cGU7dmFyIHg9Zi5TZXJpZXMsQj1mLlRyYWNrZXJNaXhpbjthKCJnYXVnZSIsImxpbmUiLHtkYXRhTGFiZWxzOntib3JkZXJDb2xvcjoiI2NjY2NjYyIsYm9yZGVyUmFkaXVzOjMsYm9yZGVyV2lkdGg6MSxjcm9wOiExLGRlZmVyOiExLGVuYWJsZWQ6ITAsdmVydGljYWxBbGlnbjoidG9wIiwKeToxNSx6SW5kZXg6Mn0sZGlhbDp7fSxwaXZvdDp7fSx0b29sdGlwOntoZWFkZXJGb3JtYXQ6IiJ9LHNob3dJbkxlZ2VuZDohMX0se2FuZ3VsYXI6ITAsZGlyZWN0VG91Y2g6ITAsZHJhd0dyYXBoOmYubm9vcCxmaXhlZEJveDohMCxmb3JjZURMOiEwLG5vU2hhcmVkVG9vbHRpcDohMCx0cmFja2VyR3JvdXBzOlsiZ3JvdXAiLCJkYXRhTGFiZWxzR3JvdXAiXSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnlBeGlzLGM9dGhpcy5vcHRpb25zLGw9YS5jZW50ZXI7dGhpcy5nZW5lcmF0ZVBvaW50cygpO3RoaXMucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oZil7dmFyIHA9aChjLmRpYWwsZi5kaWFsKSx3PXQocShwLnJhZGl1cywiODAlIikpKmxbMl0vMjAwLHY9dChxKHAuYmFzZUxlbmd0aCwiNzAlIikpKncvMTAwLG09dChxKHAucmVhckxlbmd0aCwiMTAlIikpKncvMTAwLG49cC5iYXNlV2lkdGh8fDMsZD1wLnRvcFdpZHRofHwxLGc9Yy5vdmVyc2hvb3Qsaz1hLnN0YXJ0QW5nbGVSYWQrCmEudHJhbnNsYXRlKGYueSxudWxsLG51bGwsbnVsbCwhMCk7aWYoZShnKXx8ITE9PT1jLndyYXApZz1lKGcpP2cvMTgwKk1hdGguUEk6MCxrPWIoayxhLnN0YXJ0QW5nbGVSYWQtZyxhLmVuZEFuZ2xlUmFkK2cpO2s9MTgwKmsvTWF0aC5QSTtmLnNoYXBlVHlwZT0icGF0aCI7Zi5zaGFwZUFyZ3M9e2Q6cC5wYXRofHxbWyJNIiwtbSwtbi8yXSxbIkwiLHYsLW4vMl0sWyJMIix3LC1kLzJdLFsiTCIsdyxkLzJdLFsiTCIsdixuLzJdLFsiTCIsLW0sbi8yXSxbIloiXV0sdHJhbnNsYXRlWDpsWzBdLHRyYW5zbGF0ZVk6bFsxXSxyb3RhdGlvbjprfTtmLnBsb3RYPWxbMF07Zi5wbG90WT1sWzFdfSl9LGRyYXdQb2ludHM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGM9YS5jaGFydCxiPWEueUF4aXMuY2VudGVyLGU9YS5waXZvdCxmPWEub3B0aW9ucyx0PWYucGl2b3Qsdj1jLnJlbmRlcmVyO2EucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIG49Yi5ncmFwaGljLGQ9Yi5zaGFwZUFyZ3MsZz0KZC5kLGs9aChmLmRpYWwsYi5kaWFsKTtuPyhuLmFuaW1hdGUoZCksZC5kPWcpOmIuZ3JhcGhpYz12W2Iuc2hhcGVUeXBlXShkKS5hdHRyKHtyb3RhdGlvbjpkLnJvdGF0aW9uLHpJbmRleDoxfSkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtZGlhbCIpLmFkZChhLmdyb3VwKTtpZighYy5zdHlsZWRNb2RlKWIuZ3JhcGhpY1tuPyJhbmltYXRlIjoiYXR0ciJdKHtzdHJva2U6ay5ib3JkZXJDb2xvcnx8Im5vbmUiLCJzdHJva2Utd2lkdGgiOmsuYm9yZGVyV2lkdGh8fDAsZmlsbDprLmJhY2tncm91bmRDb2xvcnx8IiMwMDAwMDAifSl9KTtlP2UuYW5pbWF0ZSh7dHJhbnNsYXRlWDpiWzBdLHRyYW5zbGF0ZVk6YlsxXX0pOihhLnBpdm90PXYuY2lyY2xlKDAsMCxxKHQucmFkaXVzLDUpKS5hdHRyKHt6SW5kZXg6Mn0pLmFkZENsYXNzKCJoaWdoY2hhcnRzLXBpdm90IikudHJhbnNsYXRlKGJbMF0sYlsxXSkuYWRkKGEuZ3JvdXApLGMuc3R5bGVkTW9kZXx8YS5waXZvdC5hdHRyKHsic3Ryb2tlLXdpZHRoIjp0LmJvcmRlcldpZHRofHwKMCxzdHJva2U6dC5ib3JkZXJDb2xvcnx8IiNjY2NjY2MiLGZpbGw6dC5iYWNrZ3JvdW5kQ29sb3J8fCIjMDAwMDAwIn0pKX0sYW5pbWF0ZTpmdW5jdGlvbihhKXt2YXIgYz10aGlzO2F8fGMucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5ncmFwaGljO2ImJihiLmF0dHIoe3JvdGF0aW9uOjE4MCpjLnlBeGlzLnN0YXJ0QW5nbGVSYWQvTWF0aC5QSX0pLGIuYW5pbWF0ZSh7cm90YXRpb246YS5zaGFwZUFyZ3Mucm90YXRpb259LGMub3B0aW9ucy5hbmltYXRpb24pKX0pfSxyZW5kZXI6ZnVuY3Rpb24oKXt0aGlzLmdyb3VwPXRoaXMucGxvdEdyb3VwKCJncm91cCIsInNlcmllcyIsdGhpcy52aXNpYmxlPyJ2aXNpYmxlIjoiaGlkZGVuIix0aGlzLm9wdGlvbnMuekluZGV4LHRoaXMuY2hhcnQuc2VyaWVzR3JvdXApO3gucHJvdG90eXBlLnJlbmRlci5jYWxsKHRoaXMpO3RoaXMuZ3JvdXAuY2xpcCh0aGlzLmNoYXJ0LmNsaXBSZWN0KX0sc2V0RGF0YTpmdW5jdGlvbihhLGMpe3gucHJvdG90eXBlLnNldERhdGEuY2FsbCh0aGlzLAphLCExKTt0aGlzLnByb2Nlc3NEYXRhKCk7dGhpcy5nZW5lcmF0ZVBvaW50cygpO3EoYywhMCkmJnRoaXMuY2hhcnQucmVkcmF3KCl9LGhhc0RhdGE6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMucG9pbnRzLmxlbmd0aH0sZHJhd1RyYWNrZXI6QiYmQi5kcmF3VHJhY2tlclBvaW50fSx7c2V0U3RhdGU6ZnVuY3Rpb24oYSl7dGhpcy5zdGF0ZT1hfX0pOyIifSk7QyhmLCJwYXJ0cy1tb3JlL0JveFBsb3RTZXJpZXMuanMiLFtmWyJwYXJ0cy9HbG9iYWxzLmpzIl0sZlsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGYsYSl7dmFyIGI9YS5waWNrO2E9YS5zZXJpZXNUeXBlO3ZhciBlPWYubm9vcCxoPWYuc2VyaWVzVHlwZXM7YSgiYm94cGxvdCIsImNvbHVtbiIse3RocmVzaG9sZDpudWxsLHRvb2x0aXA6e3BvaW50Rm9ybWF0Oic8c3BhbiBzdHlsZT0iY29sb3I6e3BvaW50LmNvbG9yfSI+XHUyNWNmPC9zcGFuPiA8Yj4ge3Nlcmllcy5uYW1lfTwvYj48YnIvPk1heGltdW06IHtwb2ludC5oaWdofTxici8+VXBwZXIgcXVhcnRpbGU6IHtwb2ludC5xM308YnIvPk1lZGlhbjoge3BvaW50Lm1lZGlhbn08YnIvPkxvd2VyIHF1YXJ0aWxlOiB7cG9pbnQucTF9PGJyLz5NaW5pbXVtOiB7cG9pbnQubG93fTxici8+J30sCndoaXNrZXJMZW5ndGg6IjUwJSIsZmlsbENvbG9yOiIjZmZmZmZmIixsaW5lV2lkdGg6MSxtZWRpYW5XaWR0aDoyLHdoaXNrZXJXaWR0aDoyfSx7cG9pbnRBcnJheU1hcDpbImxvdyIsInExIiwibWVkaWFuIiwicTMiLCJoaWdoIl0sdG9ZRGF0YTpmdW5jdGlvbihhKXtyZXR1cm5bYS5sb3csYS5xMSxhLm1lZGlhbixhLnEzLGEuaGlnaF19LHBvaW50VmFsS2V5OiJoaWdoIixwb2ludEF0dHJpYnM6ZnVuY3Rpb24oKXtyZXR1cm57fX0sZHJhd0RhdGFMYWJlbHM6ZSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnlBeGlzLGI9dGhpcy5wb2ludEFycmF5TWFwO2guY29sdW1uLnByb3RvdHlwZS50cmFuc2xhdGUuYXBwbHkodGhpcyk7dGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihlKXtiLmZvckVhY2goZnVuY3Rpb24oYil7bnVsbCE9PWVbYl0mJihlW2IrIlBsb3QiXT1hLnRyYW5zbGF0ZShlW2JdLDAsMSwwLDEpKX0pO2UucGxvdEhpZ2g9ZS5oaWdoUGxvdH0pfSxkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGE9CnRoaXMsZT1hLm9wdGlvbnMsaD1hLmNoYXJ0LGY9aC5yZW5kZXJlcix6LGMsbCx3LHAseSx2PTAsbSxuLGQsZyxrPSExIT09YS5kb1F1YXJ0aWxlcyx1LEE9YS5vcHRpb25zLndoaXNrZXJMZW5ndGg7YS5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihyKXt2YXIgRD1yLmdyYXBoaWMsST1EPyJhbmltYXRlIjoiYXR0ciIscT1yLnNoYXBlQXJncyxHPXt9LEU9e30sRj17fSxIPXt9LHQ9ci5jb2xvcnx8YS5jb2xvcjsidW5kZWZpbmVkIiE9PXR5cGVvZiByLnBsb3RZJiYobT1NYXRoLnJvdW5kKHEud2lkdGgpLG49TWF0aC5mbG9vcihxLngpLGQ9bittLGc9TWF0aC5yb3VuZChtLzIpLHo9TWF0aC5mbG9vcihrP3IucTFQbG90OnIubG93UGxvdCksYz1NYXRoLmZsb29yKGs/ci5xM1Bsb3Q6ci5sb3dQbG90KSxsPU1hdGguZmxvb3Ioci5oaWdoUGxvdCksdz1NYXRoLmZsb29yKHIubG93UGxvdCksRHx8KHIuZ3JhcGhpYz1EPWYuZygicG9pbnQiKS5hZGQoYS5ncm91cCksci5zdGVtPWYucGF0aCgpLmFkZENsYXNzKCJoaWdoY2hhcnRzLWJveHBsb3Qtc3RlbSIpLmFkZChEKSwKQSYmKHIud2hpc2tlcnM9Zi5wYXRoKCkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtYm94cGxvdC13aGlza2VyIikuYWRkKEQpKSxrJiYoci5ib3g9Zi5wYXRoKHZvaWQgMCkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtYm94cGxvdC1ib3giKS5hZGQoRCkpLHIubWVkaWFuU2hhcGU9Zi5wYXRoKHZvaWQgMCkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtYm94cGxvdC1tZWRpYW4iKS5hZGQoRCkpLGguc3R5bGVkTW9kZXx8KEUuc3Ryb2tlPXIuc3RlbUNvbG9yfHxlLnN0ZW1Db2xvcnx8dCxFWyJzdHJva2Utd2lkdGgiXT1iKHIuc3RlbVdpZHRoLGUuc3RlbVdpZHRoLGUubGluZVdpZHRoKSxFLmRhc2hzdHlsZT1yLnN0ZW1EYXNoU3R5bGV8fGUuc3RlbURhc2hTdHlsZXx8ZS5kYXNoU3R5bGUsci5zdGVtLmF0dHIoRSksQSYmKEYuc3Ryb2tlPXIud2hpc2tlckNvbG9yfHxlLndoaXNrZXJDb2xvcnx8dCxGWyJzdHJva2Utd2lkdGgiXT1iKHIud2hpc2tlcldpZHRoLGUud2hpc2tlcldpZHRoLGUubGluZVdpZHRoKSwKRi5kYXNoc3R5bGU9ci53aGlza2VyRGFzaFN0eWxlfHxlLndoaXNrZXJEYXNoU3R5bGV8fGUuZGFzaFN0eWxlLHIud2hpc2tlcnMuYXR0cihGKSksayYmKEcuZmlsbD1yLmZpbGxDb2xvcnx8ZS5maWxsQ29sb3J8fHQsRy5zdHJva2U9ZS5saW5lQ29sb3J8fHQsR1sic3Ryb2tlLXdpZHRoIl09ZS5saW5lV2lkdGh8fDAsRy5kYXNoc3R5bGU9ci5ib3hEYXNoU3R5bGV8fGUuYm94RGFzaFN0eWxlfHxlLmRhc2hTdHlsZSxyLmJveC5hdHRyKEcpKSxILnN0cm9rZT1yLm1lZGlhbkNvbG9yfHxlLm1lZGlhbkNvbG9yfHx0LEhbInN0cm9rZS13aWR0aCJdPWIoci5tZWRpYW5XaWR0aCxlLm1lZGlhbldpZHRoLGUubGluZVdpZHRoKSxILmRhc2hzdHlsZT1yLm1lZGlhbkRhc2hTdHlsZXx8ZS5tZWRpYW5EYXNoU3R5bGV8fGUuZGFzaFN0eWxlLHIubWVkaWFuU2hhcGUuYXR0cihIKSkseT1yLnN0ZW0uc3Ryb2tlV2lkdGgoKSUyLzIsdj1uK2creSxEPVtbIk0iLHYsY10sWyJMIix2LGxdLFsiTSIsCnYsel0sWyJMIix2LHddXSxyLnN0ZW1bSV0oe2Q6RH0pLGsmJih5PXIuYm94LnN0cm9rZVdpZHRoKCklMi8yLHo9TWF0aC5mbG9vcih6KSt5LGM9TWF0aC5mbG9vcihjKSt5LG4rPXksZCs9eSxEPVtbIk0iLG4sY10sWyJMIixuLHpdLFsiTCIsZCx6XSxbIkwiLGQsY10sWyJMIixuLGNdLFsiWiJdXSxyLmJveFtJXSh7ZDpEfSkpLEEmJih5PXIud2hpc2tlcnMuc3Ryb2tlV2lkdGgoKSUyLzIsbCs9eSx3Kz15LHU9LyUkLy50ZXN0KEEpP2cqcGFyc2VGbG9hdChBKS8xMDA6QS8yLEQ9W1siTSIsdi11LGxdLFsiTCIsdit1LGxdLFsiTSIsdi11LHddLFsiTCIsdit1LHddXSxyLndoaXNrZXJzW0ldKHtkOkR9KSkscD1NYXRoLnJvdW5kKHIubWVkaWFuUGxvdCkseT1yLm1lZGlhblNoYXBlLnN0cm9rZVdpZHRoKCklMi8yLHArPXksRD1bWyJNIixuLHBdLFsiTCIsZCxwXV0sci5tZWRpYW5TaGFwZVtJXSh7ZDpEfSkpfSl9LHNldFN0YWNrZWRQb2ludHM6ZX0pOyIifSk7QyhmLCJwYXJ0cy1tb3JlL0Vycm9yQmFyU2VyaWVzLmpzIiwKW2ZbInBhcnRzL0dsb2JhbHMuanMiXSxmWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZixhKXthPWEuc2VyaWVzVHlwZTt2YXIgYj1mLm5vb3AsZT1mLnNlcmllc1R5cGVzO2EoImVycm9yYmFyIiwiYm94cGxvdCIse2NvbG9yOiIjMDAwMDAwIixncm91cGluZzohMSxsaW5rZWRUbzoiOnByZXZpb3VzIix0b29sdGlwOntwb2ludEZvcm1hdDonPHNwYW4gc3R5bGU9ImNvbG9yOntwb2ludC5jb2xvcn0iPlx1MjVjZjwvc3Bhbj4ge3Nlcmllcy5uYW1lfTogPGI+e3BvaW50Lmxvd308L2I+IC0gPGI+e3BvaW50LmhpZ2h9PC9iPjxici8+J30sd2hpc2tlcldpZHRoOm51bGx9LHt0eXBlOiJlcnJvcmJhciIscG9pbnRBcnJheU1hcDpbImxvdyIsImhpZ2giXSx0b1lEYXRhOmZ1bmN0aW9uKGEpe3JldHVyblthLmxvdyxhLmhpZ2hdfSxwb2ludFZhbEtleToiaGlnaCIsZG9RdWFydGlsZXM6ITEsZHJhd0RhdGFMYWJlbHM6ZS5hcmVhcmFuZ2U/ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnBvaW50VmFsS2V5OwplLmFyZWFyYW5nZS5wcm90b3R5cGUuZHJhd0RhdGFMYWJlbHMuY2FsbCh0aGlzKTt0aGlzLmRhdGEuZm9yRWFjaChmdW5jdGlvbihiKXtiLnk9YlthXX0pfTpiLGdldENvbHVtbk1ldHJpY3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5saW5rZWRQYXJlbnQmJnRoaXMubGlua2VkUGFyZW50LmNvbHVtbk1ldHJpY3N8fGUuY29sdW1uLnByb3RvdHlwZS5nZXRDb2x1bW5NZXRyaWNzLmNhbGwodGhpcyl9fSk7IiJ9KTtDKGYsInBhcnRzLW1vcmUvV2F0ZXJmYWxsU2VyaWVzLmpzIixbZlsicGFydHMvQXhpcy5qcyJdLGZbInBhcnRzL0NoYXJ0LmpzIl0sZlsicGFydHMvR2xvYmFscy5qcyJdLGZbInBhcnRzL1BvaW50LmpzIl0sZlsicGFydHMvU3RhY2tpbmcuanMiXSxmWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZixhLGIsZSxoLHEpe3ZhciB0PXEuYWRkRXZlbnQseD1xLmFycmF5TWF4LEI9cS5hcnJheU1pbix6PXEuY29ycmVjdEZsb2F0LGM9cS5pc051bWJlcixsPXEub2JqZWN0RWFjaCwKdz1xLnBpY2s7cT1xLnNlcmllc1R5cGU7dmFyIHA9Yi5TZXJpZXMseT1iLnNlcmllc1R5cGVzLHY7KGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGMoKXt2YXIgZD10aGlzLndhdGVyZmFsbC5zdGFja3M7ZCYmKGQuY2hhbmdlZD0hMSxkZWxldGUgZC5hbHJlYWR5Q2hhbmdlZCl9ZnVuY3Rpb24gZCgpe3ZhciBkPXRoaXMub3B0aW9ucy5zdGFja0xhYmVscztkJiZkLmVuYWJsZWQmJnRoaXMud2F0ZXJmYWxsLnN0YWNrcyYmdGhpcy53YXRlcmZhbGwucmVuZGVyU3RhY2tUb3RhbHMoKX1mdW5jdGlvbiBnKCl7Zm9yKHZhciBkPXRoaXMuYXhlcyxnPXRoaXMuc2VyaWVzLGs9Zy5sZW5ndGg7ay0tOylnW2tdLm9wdGlvbnMuc3RhY2tpbmcmJihkLmZvckVhY2goZnVuY3Rpb24oZCl7ZC5pc1hBeGlzfHwoZC53YXRlcmZhbGwuc3RhY2tzLmNoYW5nZWQ9ITApfSksaz0wKX1mdW5jdGlvbiBrKCl7dGhpcy53YXRlcmZhbGx8fCh0aGlzLndhdGVyZmFsbD1uZXcgdSh0aGlzKSl9dmFyIHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGQpe3RoaXMuYXhpcz0KZDt0aGlzLnN0YWNrcz17Y2hhbmdlZDohMX19ZC5wcm90b3R5cGUucmVuZGVyU3RhY2tUb3RhbHM9ZnVuY3Rpb24oKXt2YXIgZD10aGlzLmF4aXMsZz1kLndhdGVyZmFsbC5zdGFja3Msaz1kLnN0YWNraW5nJiZkLnN0YWNraW5nLnN0YWNrVG90YWxHcm91cCxhPW5ldyBoKGQsZC5vcHRpb25zLnN0YWNrTGFiZWxzLCExLDAsdm9pZCAwKTt0aGlzLmR1bW15U3RhY2tJdGVtPWE7bChnLGZ1bmN0aW9uKGQpe2woZCxmdW5jdGlvbihkKXthLnRvdGFsPWQuc3RhY2tUb3RhbDtkLmxhYmVsJiYoYS5sYWJlbD1kLmxhYmVsKTtoLnByb3RvdHlwZS5yZW5kZXIuY2FsbChhLGspO2QubGFiZWw9YS5sYWJlbDtkZWxldGUgYS5sYWJlbH0pfSk7YS50b3RhbD1udWxsfTtyZXR1cm4gZH0oKTthLkNvbXBvc2l0aW9uPXU7YS5jb21wb3NlPWZ1bmN0aW9uKGEscil7dChhLCJpbml0IixrKTt0KGEsImFmdGVyQnVpbGRTdGFja3MiLGMpO3QoYSwiYWZ0ZXJSZW5kZXIiLGQpO3QociwiYmVmb3JlUmVkcmF3IiwKZyl9fSkodnx8KHY9e30pKTtxKCJ3YXRlcmZhbGwiLCJjb2x1bW4iLHtkYXRhTGFiZWxzOntpbnNpZGU6ITB9LGxpbmVXaWR0aDoxLGxpbmVDb2xvcjoiIzMzMzMzMyIsZGFzaFN0eWxlOiJEb3QiLGJvcmRlckNvbG9yOiIjMzMzMzMzIixzdGF0ZXM6e2hvdmVyOntsaW5lV2lkdGhQbHVzOjB9fX0se3BvaW50VmFsS2V5OiJ5IixzaG93TGluZTohMCxnZW5lcmF0ZVBvaW50czpmdW5jdGlvbigpe3ZhciBhO3kuY29sdW1uLnByb3RvdHlwZS5nZW5lcmF0ZVBvaW50cy5hcHBseSh0aGlzKTt2YXIgYz0wO2ZvcihhPXRoaXMucG9pbnRzLmxlbmd0aDtjPGE7YysrKXt2YXIgZD10aGlzLnBvaW50c1tjXTt2YXIgZz10aGlzLnByb2Nlc3NlZFlEYXRhW2NdO2lmKGQuaXNJbnRlcm1lZGlhdGVTdW18fGQuaXNTdW0pZC55PXooZyl9fSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnMsYz10aGlzLnlBeGlzLGQsZz13KGEubWluUG9pbnRMZW5ndGgsNSksaz1nLzIsdT1hLnRocmVzaG9sZCwKQT1hLnN0YWNraW5nLHI9Yy53YXRlcmZhbGwuc3RhY2tzW3RoaXMuc3RhY2tLZXldO3kuY29sdW1uLnByb3RvdHlwZS50cmFuc2xhdGUuYXBwbHkodGhpcyk7dmFyIGI9ZD11O3ZhciBlPXRoaXMucG9pbnRzO3ZhciBsPTA7Zm9yKGE9ZS5sZW5ndGg7bDxhO2wrKyl7dmFyIGg9ZVtsXTt2YXIgZj10aGlzLnByb2Nlc3NlZFlEYXRhW2xdO3ZhciBwPWguc2hhcGVBcmdzO3ZhciBxPVswLGZdO3ZhciB2PWgueTtpZihBKXtpZihyKXtxPXJbbF07aWYoIm92ZXJsYXAiPT09QSl7dmFyIHQ9cS5zdGFja1N0YXRlW3Euc3RhdGVJbmRleC0tXTt0PTA8PXY/dDp0LXY7T2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwocSwiYWJzb2x1dGVQb3MiKSYmZGVsZXRlIHEuYWJzb2x1dGVQb3M7T2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwocSwiYWJzb2x1dGVOZWciKSYmZGVsZXRlIHEuYWJzb2x1dGVOZWd9ZWxzZSAwPD12Pyh0PXEudGhyZXNob2xkK3EucG9zVG90YWwscS5wb3NUb3RhbC09dik6KHQ9CnEudGhyZXNob2xkK3EubmVnVG90YWwscS5uZWdUb3RhbC09dix0LT12KSwhcS5wb3NUb3RhbCYmT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwocSwiYWJzb2x1dGVQb3MiKSYmKHEucG9zVG90YWw9cS5hYnNvbHV0ZVBvcyxkZWxldGUgcS5hYnNvbHV0ZVBvcyksIXEubmVnVG90YWwmJk9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHEsImFic29sdXRlTmVnIikmJihxLm5lZ1RvdGFsPXEuYWJzb2x1dGVOZWcsZGVsZXRlIHEuYWJzb2x1dGVOZWcpO2guaXNTdW18fChxLmNvbm5lY3RvclRocmVzaG9sZD1xLnRocmVzaG9sZCtxLnN0YWNrVG90YWwpO2MucmV2ZXJzZWQ/KGY9MDw9dj90LXY6dCt2LHY9dCk6KGY9dCx2PXQtdik7aC5iZWxvdz1mPD13KHUsMCk7cC55PWMudHJhbnNsYXRlKGYsMCwxLDAsMSk7cC5oZWlnaHQ9TWF0aC5hYnMocC55LWMudHJhbnNsYXRlKHYsMCwxLDAsMSkpfWlmKHY9Yy53YXRlcmZhbGwuZHVtbXlTdGFja0l0ZW0pdi54PWwsdi5sYWJlbD1yW2xdLmxhYmVsLAp2LnNldE9mZnNldCh0aGlzLnBvaW50WE9mZnNldHx8MCx0aGlzLmJhcld8fDAsdGhpcy5zdGFja2VkWU5lZ1tsXSx0aGlzLnN0YWNrZWRZUG9zW2xdKX1lbHNlIHQ9TWF0aC5tYXgoYixiK3YpK3FbMF0scC55PWMudHJhbnNsYXRlKHQsMCwxLDAsMSksaC5pc1N1bT8ocC55PWMudHJhbnNsYXRlKHFbMV0sMCwxLDAsMSkscC5oZWlnaHQ9TWF0aC5taW4oYy50cmFuc2xhdGUocVswXSwwLDEsMCwxKSxjLmxlbiktcC55KTpoLmlzSW50ZXJtZWRpYXRlU3VtPygwPD12PyhmPXFbMV0rZCx2PWQpOihmPWQsdj1xWzFdK2QpLGMucmV2ZXJzZWQmJihmXj12LHZePWYsZl49dikscC55PWMudHJhbnNsYXRlKGYsMCwxLDAsMSkscC5oZWlnaHQ9TWF0aC5hYnMocC55LU1hdGgubWluKGMudHJhbnNsYXRlKHYsMCwxLDAsMSksYy5sZW4pKSxkKz1xWzFdKToocC5oZWlnaHQ9MDxmP2MudHJhbnNsYXRlKGIsMCwxLDAsMSktcC55OmMudHJhbnNsYXRlKGIsMCwxLDAsMSktYy50cmFuc2xhdGUoYi1mLDAsCjEsMCwxKSxiKz1mLGguYmVsb3c9Yjx3KHUsMCkpLDA+cC5oZWlnaHQmJihwLnkrPXAuaGVpZ2h0LHAuaGVpZ2h0Kj0tMSk7aC5wbG90WT1wLnk9TWF0aC5yb3VuZChwLnkpLXRoaXMuYm9yZGVyV2lkdGglMi8yO3AuaGVpZ2h0PU1hdGgubWF4KE1hdGgucm91bmQocC5oZWlnaHQpLC4wMDEpO2gueUJvdHRvbT1wLnkrcC5oZWlnaHQ7cC5oZWlnaHQ8PWcmJiFoLmlzTnVsbD8ocC5oZWlnaHQ9ZyxwLnktPWssaC5wbG90WT1wLnksaC5taW5Qb2ludExlbmd0aE9mZnNldD0wPmgueT8tazprKTooaC5pc051bGwmJihwLndpZHRoPTApLGgubWluUG9pbnRMZW5ndGhPZmZzZXQ9MCk7cD1oLnBsb3RZKyhoLm5lZ2F0aXZlP3AuaGVpZ2h0OjApO3RoaXMuY2hhcnQuaW52ZXJ0ZWQ/aC50b29sdGlwUG9zWzBdPWMubGVuLXA6aC50b29sdGlwUG9zWzFdPXB9fSxwcm9jZXNzRGF0YTpmdW5jdGlvbihhKXt2YXIgYz10aGlzLm9wdGlvbnMsZD10aGlzLnlEYXRhLGc9Yy5kYXRhLGs9ZC5sZW5ndGgsdT0KYy50aHJlc2hvbGR8fDAsYixyLGUsbCxoO2ZvcihoPXI9Yj1lPWw9MDtoPGs7aCsrKXt2YXIgbT1kW2hdO3ZhciBmPWcmJmdbaF0/Z1toXTp7fTsic3VtIj09PW18fGYuaXNTdW0/ZFtoXT16KHIpOiJpbnRlcm1lZGlhdGVTdW0iPT09bXx8Zi5pc0ludGVybWVkaWF0ZVN1bT8oZFtoXT16KGIpLGI9MCk6KHIrPW0sYis9bSk7ZT1NYXRoLm1pbihyLGUpO2w9TWF0aC5tYXgocixsKX1wLnByb3RvdHlwZS5wcm9jZXNzRGF0YS5jYWxsKHRoaXMsYSk7Yy5zdGFja2luZ3x8KHRoaXMuZGF0YU1pbj1lK3UsdGhpcy5kYXRhTWF4PWwpfSx0b1lEYXRhOmZ1bmN0aW9uKGMpe3JldHVybiBjLmlzU3VtPyJzdW0iOmMuaXNJbnRlcm1lZGlhdGVTdW0/ImludGVybWVkaWF0ZVN1bSI6Yy55fSx1cGRhdGVQYXJhbGxlbEFycmF5czpmdW5jdGlvbihjLGEpe3AucHJvdG90eXBlLnVwZGF0ZVBhcmFsbGVsQXJyYXlzLmNhbGwodGhpcyxjLGEpO2lmKCJzdW0iPT09dGhpcy55RGF0YVswXXx8ImludGVybWVkaWF0ZVN1bSI9PT0KdGhpcy55RGF0YVswXSl0aGlzLnlEYXRhWzBdPW51bGx9LHBvaW50QXR0cmliczpmdW5jdGlvbihjLGEpe3ZhciBkPXRoaXMub3B0aW9ucy51cENvbG9yO2QmJiFjLm9wdGlvbnMuY29sb3ImJihjLmNvbG9yPTA8Yy55P2Q6bnVsbCk7Yz15LmNvbHVtbi5wcm90b3R5cGUucG9pbnRBdHRyaWJzLmNhbGwodGhpcyxjLGEpO2RlbGV0ZSBjLmRhc2hzdHlsZTtyZXR1cm4gY30sZ2V0R3JhcGhQYXRoOmZ1bmN0aW9uKCl7cmV0dXJuW1siTSIsMCwwXV19LGdldENyaXNwUGF0aDpmdW5jdGlvbigpe3ZhciBjPXRoaXMuZGF0YSxhPXRoaXMueUF4aXMsZD1jLmxlbmd0aCxnPU1hdGgucm91bmQodGhpcy5ncmFwaC5zdHJva2VXaWR0aCgpKSUyLzIsaz1NYXRoLnJvdW5kKHRoaXMuYm9yZGVyV2lkdGgpJTIvMix1PXRoaXMueEF4aXMucmV2ZXJzZWQsYj10aGlzLnlBeGlzLnJldmVyc2VkLHI9dGhpcy5vcHRpb25zLnN0YWNraW5nLGU9W10saDtmb3IoaD0xO2g8ZDtoKyspe3ZhciBsPWNbaF0uc2hhcGVBcmdzOwp2YXIgZj1jW2gtMV07dmFyIHA9Y1toLTFdLnNoYXBlQXJnczt2YXIgcT1hLndhdGVyZmFsbC5zdGFja3NbdGhpcy5zdGFja0tleV07dmFyIHY9MDxmLnk/LXAuaGVpZ2h0OjA7cSYmcCYmbCYmKHE9cVtoLTFdLHI/KHE9cS5jb25uZWN0b3JUaHJlc2hvbGQsdj1NYXRoLnJvdW5kKGEudHJhbnNsYXRlKHEsMCwxLDAsMSkrKGI/djowKSktZyk6dj1wLnkrZi5taW5Qb2ludExlbmd0aE9mZnNldCtrLWcsZS5wdXNoKFsiTSIsKHAueHx8MCkrKHU/MDpwLndpZHRofHwwKSx2XSxbIkwiLChsLnh8fDApKyh1P2wud2lkdGh8fDA6MCksdl0pKTshciYmZS5sZW5ndGgmJnAmJigwPmYueSYmIWJ8fDA8Zi55JiZiKSYmKGVbZS5sZW5ndGgtMl1bMl0rPXAuaGVpZ2h0LGVbZS5sZW5ndGgtMV1bMl0rPXAuaGVpZ2h0KX1yZXR1cm4gZX0sZHJhd0dyYXBoOmZ1bmN0aW9uKCl7cC5wcm90b3R5cGUuZHJhd0dyYXBoLmNhbGwodGhpcyk7dGhpcy5ncmFwaC5hdHRyKHtkOnRoaXMuZ2V0Q3Jpc3BQYXRoKCl9KX0sCnNldFN0YWNrZWRQb2ludHM6ZnVuY3Rpb24oKXtmdW5jdGlvbiBjKGQsZyxrLGMpe2lmKEIpZm9yKGs7azxCO2srKyl3LnN0YWNrU3RhdGVba10rPWM7ZWxzZSB3LnN0YWNrU3RhdGVbMF09ZCxCPXcuc3RhY2tTdGF0ZS5sZW5ndGg7dy5zdGFja1N0YXRlLnB1c2gody5zdGFja1N0YXRlW0ItMV0rZyl9dmFyIGE9dGhpcy5vcHRpb25zLGQ9dGhpcy55QXhpcy53YXRlcmZhbGwuc3RhY2tzLGc9YS50aHJlc2hvbGQsaz1nfHwwLHU9ayxiPXRoaXMuc3RhY2tLZXkscj10aGlzLnhEYXRhLGU9ci5sZW5ndGgsaCxsLGY7dGhpcy55QXhpcy5zdGFja2luZy51c2VQZXJjZW50YWdlPSExO3ZhciBwPWw9Zj1rO2lmKHRoaXMudmlzaWJsZXx8IXRoaXMuY2hhcnQub3B0aW9ucy5jaGFydC5pZ25vcmVIaWRkZW5TZXJpZXMpe3ZhciBxPWQuY2hhbmdlZDsoaD1kLmFscmVhZHlDaGFuZ2VkKSYmMD5oLmluZGV4T2YoYikmJihxPSEwKTtkW2JdfHwoZFtiXT17fSk7aD1kW2JdO2Zvcih2YXIgdj0wO3Y8ZTt2Kyspe3ZhciB0PQpyW3ZdO2lmKCFoW3RdfHxxKWhbdF09e25lZ1RvdGFsOjAscG9zVG90YWw6MCxzdGFja1RvdGFsOjAsdGhyZXNob2xkOjAsc3RhdGVJbmRleDowLHN0YWNrU3RhdGU6W10sbGFiZWw6cSYmaFt0XT9oW3RdLmxhYmVsOnZvaWQgMH07dmFyIHc9aFt0XTt2YXIgeT10aGlzLnlEYXRhW3ZdOzA8PXk/dy5wb3NUb3RhbCs9eTp3Lm5lZ1RvdGFsKz15O3ZhciB6PWEuZGF0YVt2XTt0PXcuYWJzb2x1dGVQb3M9dy5wb3NUb3RhbDt2YXIgeD13LmFic29sdXRlTmVnPXcubmVnVG90YWw7dy5zdGFja1RvdGFsPXQreDt2YXIgQj13LnN0YWNrU3RhdGUubGVuZ3RoO3omJnouaXNJbnRlcm1lZGlhdGVTdW0/KGMoZixsLDAsZiksZj1sLGw9ZyxrXj11LHVePWssa149dSk6eiYmei5pc1N1bT8oYyhnLHAsQiksaz1nKTooYyhrLHksMCxwKSx6JiYocCs9eSxsKz15KSk7dy5zdGF0ZUluZGV4Kys7dy50aHJlc2hvbGQ9aztrKz13LnN0YWNrVG90YWx9ZC5jaGFuZ2VkPSExO2QuYWxyZWFkeUNoYW5nZWR8fChkLmFscmVhZHlDaGFuZ2VkPQpbXSk7ZC5hbHJlYWR5Q2hhbmdlZC5wdXNoKGIpfX0sZ2V0RXh0cmVtZXM6ZnVuY3Rpb24oKXt2YXIgYz10aGlzLm9wdGlvbnMuc3RhY2tpbmc7aWYoYyl7dmFyIGE9dGhpcy55QXhpczthPWEud2F0ZXJmYWxsLnN0YWNrczt2YXIgZD10aGlzLnN0YWNrZWRZTmVnPVtdO3ZhciBnPXRoaXMuc3RhY2tlZFlQb3M9W107Im92ZXJsYXAiPT09Yz9sKGFbdGhpcy5zdGFja0tleV0sZnVuY3Rpb24oayl7ZC5wdXNoKEIoay5zdGFja1N0YXRlKSk7Zy5wdXNoKHgoay5zdGFja1N0YXRlKSl9KTpsKGFbdGhpcy5zdGFja0tleV0sZnVuY3Rpb24oayl7ZC5wdXNoKGsubmVnVG90YWwray50aHJlc2hvbGQpO2cucHVzaChrLnBvc1RvdGFsK2sudGhyZXNob2xkKX0pO3JldHVybntkYXRhTWluOkIoZCksZGF0YU1heDp4KGcpfX1yZXR1cm57ZGF0YU1pbjp0aGlzLmRhdGFNaW4sZGF0YU1heDp0aGlzLmRhdGFNYXh9fX0se2dldENsYXNzTmFtZTpmdW5jdGlvbigpe3ZhciBjPWUucHJvdG90eXBlLmdldENsYXNzTmFtZS5jYWxsKHRoaXMpOwp0aGlzLmlzU3VtP2MrPSIgaGlnaGNoYXJ0cy1zdW0iOnRoaXMuaXNJbnRlcm1lZGlhdGVTdW0mJihjKz0iIGhpZ2hjaGFydHMtaW50ZXJtZWRpYXRlLXN1bSIpO3JldHVybiBjfSxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIGModGhpcy55KXx8dGhpcy5pc1N1bXx8ISF0aGlzLmlzSW50ZXJtZWRpYXRlU3VtfX0pOyIiO3YuY29tcG9zZShmLGEpO3JldHVybiB2fSk7QyhmLCJwYXJ0cy1tb3JlL1BvbHlnb25TZXJpZXMuanMiLFtmWyJwYXJ0cy9HbG9iYWxzLmpzIl0sZlsibWl4aW5zL2xlZ2VuZC1zeW1ib2wuanMiXSxmWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZixhLGIpe2I9Yi5zZXJpZXNUeXBlO3ZhciBlPWYuU2VyaWVzLGg9Zi5zZXJpZXNUeXBlcztiKCJwb2x5Z29uIiwic2NhdHRlciIse21hcmtlcjp7ZW5hYmxlZDohMSxzdGF0ZXM6e2hvdmVyOntlbmFibGVkOiExfX19LHN0aWNreVRyYWNraW5nOiExLHRvb2x0aXA6e2ZvbGxvd1BvaW50ZXI6ITAscG9pbnRGb3JtYXQ6IiJ9LAp0cmFja0J5QXJlYTohMH0se3R5cGU6InBvbHlnb24iLGdldEdyYXBoUGF0aDpmdW5jdGlvbigpe2Zvcih2YXIgYT1lLnByb3RvdHlwZS5nZXRHcmFwaFBhdGguY2FsbCh0aGlzKSxiPWEubGVuZ3RoKzE7Yi0tOykoYj09PWEubGVuZ3RofHwiTSI9PT1hW2JdWzBdKSYmMDxiJiZhLnNwbGljZShiLDAsWyJaIl0pO3JldHVybiB0aGlzLmFyZWFQYXRoPWF9LGRyYXdHcmFwaDpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5maWxsQ29sb3I9dGhpcy5jb2xvcjtoLmFyZWEucHJvdG90eXBlLmRyYXdHcmFwaC5jYWxsKHRoaXMpfSxkcmF3TGVnZW5kU3ltYm9sOmEuZHJhd1JlY3RhbmdsZSxkcmF3VHJhY2tlcjplLnByb3RvdHlwZS5kcmF3VHJhY2tlcixzZXRTdGFja2VkUG9pbnRzOmYubm9vcH0pOyIifSk7QyhmLCJwYXJ0cy1tb3JlL0J1YmJsZUxlZ2VuZC5qcyIsW2ZbInBhcnRzL0NoYXJ0LmpzIl0sZlsicGFydHMvQ29sb3IuanMiXSxmWyJwYXJ0cy9HbG9iYWxzLmpzIl0sZlsicGFydHMvTGVnZW5kLmpzIl0sCmZbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihmLGEsYixlLGgpe3ZhciBxPWEucGFyc2U7YT1oLmFkZEV2ZW50O3ZhciB0PWguYXJyYXlNYXgseD1oLmFycmF5TWluLEI9aC5pc051bWJlcix6PWgubWVyZ2UsYz1oLm9iamVjdEVhY2gsbD1oLnBpY2ssdz1oLnNldE9wdGlvbnMscD1oLnN0YWJsZVNvcnQseT1oLndyYXA7IiI7dmFyIHY9Yi5TZXJpZXMsbT1iLm5vb3A7dyh7bGVnZW5kOntidWJibGVMZWdlbmQ6e2JvcmRlckNvbG9yOnZvaWQgMCxib3JkZXJXaWR0aDoyLGNsYXNzTmFtZTp2b2lkIDAsY29sb3I6dm9pZCAwLGNvbm5lY3RvckNsYXNzTmFtZTp2b2lkIDAsY29ubmVjdG9yQ29sb3I6dm9pZCAwLGNvbm5lY3RvckRpc3RhbmNlOjYwLGNvbm5lY3RvcldpZHRoOjEsZW5hYmxlZDohMSxsYWJlbHM6e2NsYXNzTmFtZTp2b2lkIDAsYWxsb3dPdmVybGFwOiExLGZvcm1hdDoiIixmb3JtYXR0ZXI6dm9pZCAwLGFsaWduOiJyaWdodCIsc3R5bGU6e2ZvbnRTaXplOjEwLApjb2xvcjp2b2lkIDB9LHg6MCx5OjB9LG1heFNpemU6NjAsbWluU2l6ZToxMCxsZWdlbmRJbmRleDowLHJhbmdlczp7dmFsdWU6dm9pZCAwLGJvcmRlckNvbG9yOnZvaWQgMCxjb2xvcjp2b2lkIDAsY29ubmVjdG9yQ29sb3I6dm9pZCAwfSxzaXplQnk6ImFyZWEiLHNpemVCeUFic29sdXRlVmFsdWU6ITEsekluZGV4OjEselRocmVzaG9sZDowfX19KTt3PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShkLGcpe3RoaXMub3B0aW9ucz10aGlzLnN5bWJvbHM9dGhpcy52aXNpYmxlPXRoaXMucmFuZ2VzPXRoaXMubW92ZW1lbnRYPXRoaXMubWF4TGFiZWw9dGhpcy5sZWdlbmRTeW1ib2w9dGhpcy5sZWdlbmRJdGVtV2lkdGg9dGhpcy5sZWdlbmRJdGVtSGVpZ2h0PXRoaXMubGVnZW5kSXRlbT10aGlzLmxlZ2VuZEdyb3VwPXRoaXMubGVnZW5kPXRoaXMuZm9udE1ldHJpY3M9dGhpcy5jaGFydD12b2lkIDA7dGhpcy5zZXRTdGF0ZT1tO3RoaXMuaW5pdChkLGcpfWEucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oZCwKZyl7dGhpcy5vcHRpb25zPWQ7dGhpcy52aXNpYmxlPSEwO3RoaXMuY2hhcnQ9Zy5jaGFydDt0aGlzLmxlZ2VuZD1nfTthLnByb3RvdHlwZS5hZGRUb0xlZ2VuZD1mdW5jdGlvbihkKXtkLnNwbGljZSh0aGlzLm9wdGlvbnMubGVnZW5kSW5kZXgsMCx0aGlzKX07YS5wcm90b3R5cGUuZHJhd0xlZ2VuZFN5bWJvbD1mdW5jdGlvbihkKXt2YXIgZz10aGlzLmNoYXJ0LGs9dGhpcy5vcHRpb25zLGE9bChkLm9wdGlvbnMuaXRlbURpc3RhbmNlLDIwKSxjPWsucmFuZ2VzO3ZhciByPWsuY29ubmVjdG9yRGlzdGFuY2U7dGhpcy5mb250TWV0cmljcz1nLnJlbmRlcmVyLmZvbnRNZXRyaWNzKGsubGFiZWxzLnN0eWxlLmZvbnRTaXplLnRvU3RyaW5nKCkrInB4Iik7YyYmYy5sZW5ndGgmJkIoY1swXS52YWx1ZSk/KHAoYyxmdW5jdGlvbihkLGcpe3JldHVybiBnLnZhbHVlLWQudmFsdWV9KSx0aGlzLnJhbmdlcz1jLHRoaXMuc2V0T3B0aW9ucygpLHRoaXMucmVuZGVyKCksZz10aGlzLmdldE1heExhYmVsU2l6ZSgpLApjPXRoaXMucmFuZ2VzWzBdLnJhZGl1cyxkPTIqYyxyPXItYytnLndpZHRoLHI9MDxyP3I6MCx0aGlzLm1heExhYmVsPWcsdGhpcy5tb3ZlbWVudFg9ImxlZnQiPT09ay5sYWJlbHMuYWxpZ24/cjowLHRoaXMubGVnZW5kSXRlbVdpZHRoPWQrcithLHRoaXMubGVnZW5kSXRlbUhlaWdodD1kK3RoaXMuZm9udE1ldHJpY3MuaC8yKTpkLm9wdGlvbnMuYnViYmxlTGVnZW5kLmF1dG9SYW5nZXM9ITB9O2EucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24oKXt2YXIgZD10aGlzLnJhbmdlcyxnPXRoaXMub3B0aW9ucyxrPXRoaXMuY2hhcnQuc2VyaWVzW2cuc2VyaWVzSW5kZXhdLGM9dGhpcy5sZWdlbmQuYmFzZWxpbmUsYT17InotaW5kZXgiOmcuekluZGV4LCJzdHJva2Utd2lkdGgiOmcuYm9yZGVyV2lkdGh9LHI9eyJ6LWluZGV4IjpnLnpJbmRleCwic3Ryb2tlLXdpZHRoIjpnLmNvbm5lY3RvcldpZHRofSxiPXRoaXMuZ2V0TGFiZWxTdHlsZXMoKSxlPWsub3B0aW9ucy5tYXJrZXIuZmlsbE9wYWNpdHksCmg9dGhpcy5jaGFydC5zdHlsZWRNb2RlO2QuZm9yRWFjaChmdW5jdGlvbih1LEEpe2h8fChhLnN0cm9rZT1sKHUuYm9yZGVyQ29sb3IsZy5ib3JkZXJDb2xvcixrLmNvbG9yKSxhLmZpbGw9bCh1LmNvbG9yLGcuY29sb3IsMSE9PWU/cShrLmNvbG9yKS5zZXRPcGFjaXR5KGUpLmdldCgicmdiYSIpOmsuY29sb3IpLHIuc3Ryb2tlPWwodS5jb25uZWN0b3JDb2xvcixnLmNvbm5lY3RvckNvbG9yLGsuY29sb3IpKTtkW0FdLnJhZGl1cz10aGlzLmdldFJhbmdlUmFkaXVzKHUudmFsdWUpO2RbQV09eihkW0FdLHtjZW50ZXI6ZFswXS5yYWRpdXMtZFtBXS5yYWRpdXMrY30pO2h8fHooITAsZFtBXSx7YnViYmxlU3R5bGU6eighMSxhKSxjb25uZWN0b3JTdHlsZTp6KCExLHIpLGxhYmVsU3R5bGU6Yn0pfSx0aGlzKX07YS5wcm90b3R5cGUuZ2V0TGFiZWxTdHlsZXM9ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm9wdGlvbnMsZz17fSxrPSJsZWZ0Ij09PWQubGFiZWxzLmFsaWduLGE9dGhpcy5sZWdlbmQub3B0aW9ucy5ydGw7CmMoZC5sYWJlbHMuc3R5bGUsZnVuY3Rpb24oZCxrKXsiY29sb3IiIT09ayYmImZvbnRTaXplIiE9PWsmJiJ6LWluZGV4IiE9PWsmJihnW2tdPWQpfSk7cmV0dXJuIHooITEsZyx7ImZvbnQtc2l6ZSI6ZC5sYWJlbHMuc3R5bGUuZm9udFNpemUsZmlsbDpsKGQubGFiZWxzLnN0eWxlLmNvbG9yLCIjMDAwMDAwIiksInotaW5kZXgiOmQuekluZGV4LGFsaWduOmF8fGs/InJpZ2h0IjoibGVmdCJ9KX07YS5wcm90b3R5cGUuZ2V0UmFuZ2VSYWRpdXM9ZnVuY3Rpb24oZCl7dmFyIGc9dGhpcy5vcHRpb25zO3JldHVybiB0aGlzLmNoYXJ0LnNlcmllc1t0aGlzLm9wdGlvbnMuc2VyaWVzSW5kZXhdLmdldFJhZGl1cy5jYWxsKHRoaXMsZy5yYW5nZXNbZy5yYW5nZXMubGVuZ3RoLTFdLnZhbHVlLGcucmFuZ2VzWzBdLnZhbHVlLGcubWluU2l6ZSxnLm1heFNpemUsZCl9O2EucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBkPXRoaXMuY2hhcnQucmVuZGVyZXIsZz10aGlzLm9wdGlvbnMuelRocmVzaG9sZDsKdGhpcy5zeW1ib2xzfHwodGhpcy5zeW1ib2xzPXtjb25uZWN0b3JzOltdLGJ1YmJsZUl0ZW1zOltdLGxhYmVsczpbXX0pO3RoaXMubGVnZW5kU3ltYm9sPWQuZygiYnViYmxlLWxlZ2VuZCIpO3RoaXMubGVnZW5kSXRlbT1kLmcoImJ1YmJsZS1sZWdlbmQtaXRlbSIpO3RoaXMubGVnZW5kU3ltYm9sLnRyYW5zbGF0ZVg9MDt0aGlzLmxlZ2VuZFN5bWJvbC50cmFuc2xhdGVZPTA7dGhpcy5yYW5nZXMuZm9yRWFjaChmdW5jdGlvbihkKXtkLnZhbHVlPj1nJiZ0aGlzLnJlbmRlclJhbmdlKGQpfSx0aGlzKTt0aGlzLmxlZ2VuZFN5bWJvbC5hZGQodGhpcy5sZWdlbmRJdGVtKTt0aGlzLmxlZ2VuZEl0ZW0uYWRkKHRoaXMubGVnZW5kR3JvdXApO3RoaXMuaGlkZU92ZXJsYXBwaW5nTGFiZWxzKCl9O2EucHJvdG90eXBlLnJlbmRlclJhbmdlPWZ1bmN0aW9uKGQpe3ZhciBnPXRoaXMub3B0aW9ucyxrPWcubGFiZWxzLGE9dGhpcy5jaGFydC5yZW5kZXJlcixjPXRoaXMuc3ltYm9scyxyPWMubGFiZWxzLApiPWQuY2VudGVyLGU9TWF0aC5hYnMoZC5yYWRpdXMpLGg9Zy5jb25uZWN0b3JEaXN0YW5jZXx8MCxsPWsuYWxpZ24sbj1rLnN0eWxlLmZvbnRTaXplO2g9dGhpcy5sZWdlbmQub3B0aW9ucy5ydGx8fCJsZWZ0Ij09PWw/LWg6aDtrPWcuY29ubmVjdG9yV2lkdGg7dmFyIGY9dGhpcy5yYW5nZXNbMF0ucmFkaXVzfHwwLHA9Yi1lLWcuYm9yZGVyV2lkdGgvMitrLzI7bj1uLzItKHRoaXMuZm9udE1ldHJpY3MuaC1uKS8yO3ZhciBtPWEuc3R5bGVkTW9kZTsiY2VudGVyIj09PWwmJihoPTAsZy5jb25uZWN0b3JEaXN0YW5jZT0wLGQubGFiZWxTdHlsZS5hbGlnbj0iY2VudGVyIik7bD1wK2cubGFiZWxzLnk7dmFyIHE9ZitoK2cubGFiZWxzLng7Yy5idWJibGVJdGVtcy5wdXNoKGEuY2lyY2xlKGYsYisoKHAlMT8xOi41KS0oayUyPzA6LjUpKSxlKS5hdHRyKG0/e306ZC5idWJibGVTdHlsZSkuYWRkQ2xhc3MoKG0/ImhpZ2hjaGFydHMtY29sb3ItIit0aGlzLm9wdGlvbnMuc2VyaWVzSW5kZXgrCiIgIjoiIikrImhpZ2hjaGFydHMtYnViYmxlLWxlZ2VuZC1zeW1ib2wgIisoZy5jbGFzc05hbWV8fCIiKSkuYWRkKHRoaXMubGVnZW5kU3ltYm9sKSk7Yy5jb25uZWN0b3JzLnB1c2goYS5wYXRoKGEuY3Jpc3BMaW5lKFtbIk0iLGYscF0sWyJMIixmK2gscF1dLGcuY29ubmVjdG9yV2lkdGgpKS5hdHRyKG0/e306ZC5jb25uZWN0b3JTdHlsZSkuYWRkQ2xhc3MoKG0/ImhpZ2hjaGFydHMtY29sb3ItIit0aGlzLm9wdGlvbnMuc2VyaWVzSW5kZXgrIiAiOiIiKSsiaGlnaGNoYXJ0cy1idWJibGUtbGVnZW5kLWNvbm5lY3RvcnMgIisoZy5jb25uZWN0b3JDbGFzc05hbWV8fCIiKSkuYWRkKHRoaXMubGVnZW5kU3ltYm9sKSk7ZD1hLnRleHQodGhpcy5mb3JtYXRMYWJlbChkKSxxLGwrbikuYXR0cihtP3t9OmQubGFiZWxTdHlsZSkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtYnViYmxlLWxlZ2VuZC1sYWJlbHMgIisoZy5sYWJlbHMuY2xhc3NOYW1lfHwiIikpLmFkZCh0aGlzLmxlZ2VuZFN5bWJvbCk7CnIucHVzaChkKTtkLnBsYWNlZD0hMDtkLmFsaWduQXR0cj17eDpxLHk6bCtufX07YS5wcm90b3R5cGUuZ2V0TWF4TGFiZWxTaXplPWZ1bmN0aW9uKCl7dmFyIGQsZzt0aGlzLnN5bWJvbHMubGFiZWxzLmZvckVhY2goZnVuY3Rpb24oayl7Zz1rLmdldEJCb3goITApO2Q9ZD9nLndpZHRoPmQud2lkdGg/ZzpkOmd9KTtyZXR1cm4gZHx8e319O2EucHJvdG90eXBlLmZvcm1hdExhYmVsPWZ1bmN0aW9uKGQpe3ZhciBnPXRoaXMub3B0aW9ucyxrPWcubGFiZWxzLmZvcm1hdHRlcjtnPWcubGFiZWxzLmZvcm1hdDt2YXIgYT10aGlzLmNoYXJ0Lm51bWJlckZvcm1hdHRlcjtyZXR1cm4gZz9oLmZvcm1hdChnLGQpOms/ay5jYWxsKGQpOmEoZC52YWx1ZSwxKX07YS5wcm90b3R5cGUuaGlkZU92ZXJsYXBwaW5nTGFiZWxzPWZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5jaGFydCxnPXRoaXMuc3ltYm9sczshdGhpcy5vcHRpb25zLmxhYmVscy5hbGxvd092ZXJsYXAmJmcmJihkLmhpZGVPdmVybGFwcGluZ0xhYmVscyhnLmxhYmVscyksCmcubGFiZWxzLmZvckVhY2goZnVuY3Rpb24oZCxhKXtkLm5ld09wYWNpdHk/ZC5uZXdPcGFjaXR5IT09ZC5vbGRPcGFjaXR5JiZnLmNvbm5lY3RvcnNbYV0uc2hvdygpOmcuY29ubmVjdG9yc1thXS5oaWRlKCl9KSl9O2EucHJvdG90eXBlLmdldFJhbmdlcz1mdW5jdGlvbigpe3ZhciBkPXRoaXMubGVnZW5kLmJ1YmJsZUxlZ2VuZCxnPWQub3B0aW9ucy5yYW5nZXMsayxhPU51bWJlci5NQVhfVkFMVUUsYz0tTnVtYmVyLk1BWF9WQUxVRTtkLmNoYXJ0LnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGQpe2QuaXNCdWJibGUmJiFkLmlnbm9yZVNlcmllcyYmKGs9ZC56RGF0YS5maWx0ZXIoQiksay5sZW5ndGgmJihhPWwoZC5vcHRpb25zLnpNaW4sTWF0aC5taW4oYSxNYXRoLm1heCh4KGspLCExPT09ZC5vcHRpb25zLmRpc3BsYXlOZWdhdGl2ZT9kLm9wdGlvbnMuelRocmVzaG9sZDotTnVtYmVyLk1BWF9WQUxVRSkpKSxjPWwoZC5vcHRpb25zLnpNYXgsTWF0aC5tYXgoYyx0KGspKSkpKX0pOwp2YXIgYj1hPT09Yz9be3ZhbHVlOmN9XTpbe3ZhbHVlOmF9LHt2YWx1ZTooYStjKS8yfSx7dmFsdWU6YyxhdXRvUmFuZ2VzOiEwfV07Zy5sZW5ndGgmJmdbMF0ucmFkaXVzJiZiLnJldmVyc2UoKTtiLmZvckVhY2goZnVuY3Rpb24oZCxrKXtnJiZnW2tdJiYoYltrXT16KCExLGdba10sZCkpfSk7cmV0dXJuIGJ9O2EucHJvdG90eXBlLnByZWRpY3RCdWJibGVTaXplcz1mdW5jdGlvbigpe3ZhciBkPXRoaXMuY2hhcnQsZz10aGlzLmZvbnRNZXRyaWNzLGs9ZC5sZWdlbmQub3B0aW9ucyxhPSJob3Jpem9udGFsIj09PWsubGF5b3V0LGM9YT9kLmxlZ2VuZC5sYXN0TGluZUhlaWdodDowLGI9ZC5wbG90U2l6ZVgsZT1kLnBsb3RTaXplWSxoPWQuc2VyaWVzW3RoaXMub3B0aW9ucy5zZXJpZXNJbmRleF07ZD1NYXRoLmNlaWwoaC5taW5QeFNpemUpO3ZhciBsPU1hdGguY2VpbChoLm1heFB4U2l6ZSk7aD1oLm9wdGlvbnMubWF4U2l6ZTt2YXIgbj1NYXRoLm1pbihlLGIpO2lmKGsuZmxvYXRpbmd8fAohLyUkLy50ZXN0KGgpKWc9bDtlbHNlIGlmKGg9cGFyc2VGbG9hdChoKSxnPShuK2MtZy5oLzIpKmgvMTAwLyhoLzEwMCsxKSxhJiZlLWc+PWJ8fCFhJiZiLWc+PWUpZz1sO3JldHVybltkLE1hdGguY2VpbChnKV19O2EucHJvdG90eXBlLnVwZGF0ZVJhbmdlcz1mdW5jdGlvbihkLGcpe3ZhciBrPXRoaXMubGVnZW5kLm9wdGlvbnMuYnViYmxlTGVnZW5kO2subWluU2l6ZT1kO2subWF4U2l6ZT1nO2sucmFuZ2VzPXRoaXMuZ2V0UmFuZ2VzKCl9O2EucHJvdG90eXBlLmNvcnJlY3RTaXplcz1mdW5jdGlvbigpe3ZhciBkPXRoaXMubGVnZW5kLGc9dGhpcy5jaGFydC5zZXJpZXNbdGhpcy5vcHRpb25zLnNlcmllc0luZGV4XTsxPE1hdGguYWJzKE1hdGguY2VpbChnLm1heFB4U2l6ZSktdGhpcy5vcHRpb25zLm1heFNpemUpJiYodGhpcy51cGRhdGVSYW5nZXModGhpcy5vcHRpb25zLm1pblNpemUsZy5tYXhQeFNpemUpLGQucmVuZGVyKCkpfTtyZXR1cm4gYX0oKTthKGUsImFmdGVyR2V0QWxsSXRlbXMiLApmdW5jdGlvbihhKXt2YXIgZD10aGlzLmJ1YmJsZUxlZ2VuZCxnPXRoaXMub3B0aW9ucyxrPWcuYnViYmxlTGVnZW5kLGM9dGhpcy5jaGFydC5nZXRWaXNpYmxlQnViYmxlU2VyaWVzSW5kZXgoKTtkJiZkLnJhbmdlcyYmZC5yYW5nZXMubGVuZ3RoJiYoay5yYW5nZXMubGVuZ3RoJiYoay5hdXRvUmFuZ2VzPSEhay5yYW5nZXNbMF0uYXV0b1JhbmdlcyksdGhpcy5kZXN0cm95SXRlbShkKSk7MDw9YyYmZy5lbmFibGVkJiZrLmVuYWJsZWQmJihrLnNlcmllc0luZGV4PWMsdGhpcy5idWJibGVMZWdlbmQ9bmV3IGIuQnViYmxlTGVnZW5kKGssdGhpcyksdGhpcy5idWJibGVMZWdlbmQuYWRkVG9MZWdlbmQoYS5hbGxJdGVtcykpfSk7Zi5wcm90b3R5cGUuZ2V0VmlzaWJsZUJ1YmJsZVNlcmllc0luZGV4PWZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMuc2VyaWVzLGQ9MDtkPGEubGVuZ3RoOyl7aWYoYVtkXSYmYVtkXS5pc0J1YmJsZSYmYVtkXS52aXNpYmxlJiZhW2RdLnpEYXRhLmxlbmd0aClyZXR1cm4gZDsKZCsrfXJldHVybi0xfTtlLnByb3RvdHlwZS5nZXRMaW5lc0hlaWdodHM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmFsbEl0ZW1zLGQ9W10sZz1hLmxlbmd0aCxrLGM9MDtmb3Ioaz0wO2s8ZztrKyspaWYoYVtrXS5sZWdlbmRJdGVtSGVpZ2h0JiYoYVtrXS5pdGVtSGVpZ2h0PWFba10ubGVnZW5kSXRlbUhlaWdodCksYVtrXT09PWFbZy0xXXx8YVtrKzFdJiZhW2tdLl9sZWdlbmRJdGVtUG9zWzFdIT09YVtrKzFdLl9sZWdlbmRJdGVtUG9zWzFdKXtkLnB1c2goe2hlaWdodDowfSk7dmFyIGI9ZFtkLmxlbmd0aC0xXTtmb3IoYztjPD1rO2MrKylhW2NdLml0ZW1IZWlnaHQ+Yi5oZWlnaHQmJihiLmhlaWdodD1hW2NdLml0ZW1IZWlnaHQpO2Iuc3RlcD1rfXJldHVybiBkfTtlLnByb3RvdHlwZS5yZXRyYW5zbGF0ZUl0ZW1zPWZ1bmN0aW9uKGEpe3ZhciBkLGcsayxjPXRoaXMub3B0aW9ucy5ydGwsYj0wO3RoaXMuYWxsSXRlbXMuZm9yRWFjaChmdW5jdGlvbihyLGUpe2Q9ci5sZWdlbmRHcm91cC50cmFuc2xhdGVYOwpnPXIuX2xlZ2VuZEl0ZW1Qb3NbMV07aWYoKGs9ci5tb3ZlbWVudFgpfHxjJiZyLnJhbmdlcylrPWM/ZC1yLm9wdGlvbnMubWF4U2l6ZS8yOmQrayxyLmxlZ2VuZEdyb3VwLmF0dHIoe3RyYW5zbGF0ZVg6a30pO2U+YVtiXS5zdGVwJiZiKys7ci5sZWdlbmRHcm91cC5hdHRyKHt0cmFuc2xhdGVZOk1hdGgucm91bmQoZythW2JdLmhlaWdodC8yKX0pO3IuX2xlZ2VuZEl0ZW1Qb3NbMV09ZythW2JdLmhlaWdodC8yfSl9O2EodiwibGVnZW5kSXRlbUNsaWNrIixmdW5jdGlvbigpe3ZhciBhPXRoaXMuY2hhcnQsZD10aGlzLnZpc2libGUsZz10aGlzLmNoYXJ0LmxlZ2VuZDtnJiZnLmJ1YmJsZUxlZ2VuZCYmKHRoaXMudmlzaWJsZT0hZCx0aGlzLmlnbm9yZVNlcmllcz1kLGE9MDw9YS5nZXRWaXNpYmxlQnViYmxlU2VyaWVzSW5kZXgoKSxnLmJ1YmJsZUxlZ2VuZC52aXNpYmxlIT09YSYmKGcudXBkYXRlKHtidWJibGVMZWdlbmQ6e2VuYWJsZWQ6YX19KSxnLmJ1YmJsZUxlZ2VuZC52aXNpYmxlPQphKSx0aGlzLnZpc2libGU9ZCl9KTt5KGYucHJvdG90eXBlLCJkcmF3Q2hhcnRCb3giLGZ1bmN0aW9uKGEsZCxnKXt2YXIgaz10aGlzLmxlZ2VuZCxiPTA8PXRoaXMuZ2V0VmlzaWJsZUJ1YmJsZVNlcmllc0luZGV4KCk7aWYoayYmay5vcHRpb25zLmVuYWJsZWQmJmsuYnViYmxlTGVnZW5kJiZrLm9wdGlvbnMuYnViYmxlTGVnZW5kLmF1dG9SYW5nZXMmJmIpe3ZhciBlPWsuYnViYmxlTGVnZW5kLm9wdGlvbnM7Yj1rLmJ1YmJsZUxlZ2VuZC5wcmVkaWN0QnViYmxlU2l6ZXMoKTtrLmJ1YmJsZUxlZ2VuZC51cGRhdGVSYW5nZXMoYlswXSxiWzFdKTtlLnBsYWNlZHx8KGsuZ3JvdXAucGxhY2VkPSExLGsuYWxsSXRlbXMuZm9yRWFjaChmdW5jdGlvbihkKXtkLmxlZ2VuZEdyb3VwLnRyYW5zbGF0ZVk9bnVsbH0pKTtrLnJlbmRlcigpO3RoaXMuZ2V0TWFyZ2lucygpO3RoaXMuYXhlcy5mb3JFYWNoKGZ1bmN0aW9uKGQpe2QudmlzaWJsZSYmZC5yZW5kZXIoKTtlLnBsYWNlZHx8KGQuc2V0U2NhbGUoKSwKZC51cGRhdGVOYW1lcygpLGMoZC50aWNrcyxmdW5jdGlvbihkKXtkLmlzTmV3PSEwO2QuaXNOZXdMYWJlbD0hMH0pKX0pO2UucGxhY2VkPSEwO3RoaXMuZ2V0TWFyZ2lucygpO2EuY2FsbCh0aGlzLGQsZyk7ay5idWJibGVMZWdlbmQuY29ycmVjdFNpemVzKCk7ay5yZXRyYW5zbGF0ZUl0ZW1zKGsuZ2V0TGluZXNIZWlnaHRzKCkpfWVsc2UgYS5jYWxsKHRoaXMsZCxnKSxrJiZrLm9wdGlvbnMuZW5hYmxlZCYmay5idWJibGVMZWdlbmQmJihrLnJlbmRlcigpLGsucmV0cmFuc2xhdGVJdGVtcyhrLmdldExpbmVzSGVpZ2h0cygpKSl9KTtiLkJ1YmJsZUxlZ2VuZD13O3JldHVybiBiLkJ1YmJsZUxlZ2VuZH0pO0MoZiwicGFydHMtbW9yZS9CdWJibGVTZXJpZXMuanMiLFtmWyJwYXJ0cy9HbG9iYWxzLmpzIl0sZlsicGFydHMvQ29sb3IuanMiXSxmWyJwYXJ0cy9Qb2ludC5qcyJdLGZbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihmLGEsYixlKXt2YXIgaD1hLnBhcnNlLHE9ZS5hcnJheU1heCwKdD1lLmFycmF5TWluLHg9ZS5jbGFtcCxCPWUuZXh0ZW5kLHo9ZS5pc051bWJlcixjPWUucGljayxsPWUucEludDthPWUuc2VyaWVzVHlwZTtlPWYuQXhpczt2YXIgdz1mLm5vb3AscD1mLlNlcmllcyx5PWYuc2VyaWVzVHlwZXM7YSgiYnViYmxlIiwic2NhdHRlciIse2RhdGFMYWJlbHM6e2Zvcm1hdHRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBvaW50Lnp9LGluc2lkZTohMCx2ZXJ0aWNhbEFsaWduOiJtaWRkbGUifSxhbmltYXRpb25MaW1pdDoyNTAsbWFya2VyOntsaW5lQ29sb3I6bnVsbCxsaW5lV2lkdGg6MSxmaWxsT3BhY2l0eTouNSxyYWRpdXM6bnVsbCxzdGF0ZXM6e2hvdmVyOntyYWRpdXNQbHVzOjB9fSxzeW1ib2w6ImNpcmNsZSJ9LG1pblNpemU6OCxtYXhTaXplOiIyMCUiLHNvZnRUaHJlc2hvbGQ6ITEsc3RhdGVzOntob3Zlcjp7aGFsbzp7c2l6ZTo1fX19LHRvb2x0aXA6e3BvaW50Rm9ybWF0OiIoe3BvaW50Lnh9LCB7cG9pbnQueX0pLCBTaXplOiB7cG9pbnQuen0ifSwKdHVyYm9UaHJlc2hvbGQ6MCx6VGhyZXNob2xkOjAsem9uZUF4aXM6InoifSx7cG9pbnRBcnJheU1hcDpbInkiLCJ6Il0scGFyYWxsZWxBcnJheXM6WyJ4IiwieSIsInoiXSx0cmFja2VyR3JvdXBzOlsiZ3JvdXAiLCJkYXRhTGFiZWxzR3JvdXAiXSxzcGVjaWFsR3JvdXA6Imdyb3VwIixidWJibGVQYWRkaW5nOiEwLHpvbmVBeGlzOiJ6IixkaXJlY3RUb3VjaDohMCxpc0J1YmJsZTohMCxwb2ludEF0dHJpYnM6ZnVuY3Rpb24oYSxjKXt2YXIgYj10aGlzLm9wdGlvbnMubWFya2VyLmZpbGxPcGFjaXR5O2E9cC5wcm90b3R5cGUucG9pbnRBdHRyaWJzLmNhbGwodGhpcyxhLGMpOzEhPT1iJiYoYS5maWxsPWgoYS5maWxsKS5zZXRPcGFjaXR5KGIpLmdldCgicmdiYSIpKTtyZXR1cm4gYX0sZ2V0UmFkaWk6ZnVuY3Rpb24oYSxjLGIpe3ZhciBkPXRoaXMuekRhdGEsZz10aGlzLnlEYXRhLGs9Yi5taW5QeFNpemUsZT1iLm1heFB4U2l6ZSxoPVtdO3ZhciByPTA7Zm9yKGI9ZC5sZW5ndGg7cjxiO3IrKyl7dmFyIGw9CmRbcl07aC5wdXNoKHRoaXMuZ2V0UmFkaXVzKGEsYyxrLGUsbCxnW3JdKSl9dGhpcy5yYWRpaT1ofSxnZXRSYWRpdXM6ZnVuY3Rpb24oYSxjLGIsZCxnLGspe3ZhciBlPXRoaXMub3B0aW9ucyxoPSJ3aWR0aCIhPT1lLnNpemVCeSxyPWUuelRocmVzaG9sZCxsPWMtYSxmPS41O2lmKG51bGw9PT1rfHxudWxsPT09ZylyZXR1cm4gbnVsbDtpZih6KGcpKXtlLnNpemVCeUFic29sdXRlVmFsdWUmJihnPU1hdGguYWJzKGctciksbD1NYXRoLm1heChjLXIsTWF0aC5hYnMoYS1yKSksYT0wKTtpZihnPGEpcmV0dXJuIGIvMi0xOzA8bCYmKGY9KGctYSkvbCl9aCYmMDw9ZiYmKGY9TWF0aC5zcXJ0KGYpKTtyZXR1cm4gTWF0aC5jZWlsKGIrZiooZC1iKSkvMn0sYW5pbWF0ZTpmdW5jdGlvbihhKXshYSYmdGhpcy5wb2ludHMubGVuZ3RoPHRoaXMub3B0aW9ucy5hbmltYXRpb25MaW1pdCYmdGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYz1hLmdyYXBoaWM7YyYmYy53aWR0aCYmKHRoaXMuaGFzUmVuZGVyZWR8fApjLmF0dHIoe3g6YS5wbG90WCx5OmEucGxvdFksd2lkdGg6MSxoZWlnaHQ6MX0pLGMuYW5pbWF0ZSh0aGlzLm1hcmtlckF0dHJpYnMoYSksdGhpcy5vcHRpb25zLmFuaW1hdGlvbikpfSx0aGlzKX0saGFzRGF0YTpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5wcm9jZXNzZWRYRGF0YS5sZW5ndGh9LHRyYW5zbGF0ZTpmdW5jdGlvbigpe3ZhciBhLGM9dGhpcy5kYXRhLGI9dGhpcy5yYWRpaTt5LnNjYXR0ZXIucHJvdG90eXBlLnRyYW5zbGF0ZS5jYWxsKHRoaXMpO2ZvcihhPWMubGVuZ3RoO2EtLTspe3ZhciBkPWNbYV07dmFyIGc9Yj9iW2FdOjA7eihnKSYmZz49dGhpcy5taW5QeFNpemUvMj8oZC5tYXJrZXI9QihkLm1hcmtlcix7cmFkaXVzOmcsd2lkdGg6MipnLGhlaWdodDoyKmd9KSxkLmRsQm94PXt4OmQucGxvdFgtZyx5OmQucGxvdFktZyx3aWR0aDoyKmcsaGVpZ2h0OjIqZ30pOmQuc2hhcGVBcmdzPWQucGxvdFk9ZC5kbEJveD12b2lkIDB9fSxhbGlnbkRhdGFMYWJlbDp5LmNvbHVtbi5wcm90b3R5cGUuYWxpZ25EYXRhTGFiZWwsCmJ1aWxkS0RUcmVlOncsYXBwbHlab25lczp3fSx7aGFsb1BhdGg6ZnVuY3Rpb24oYSl7cmV0dXJuIGIucHJvdG90eXBlLmhhbG9QYXRoLmNhbGwodGhpcywwPT09YT8wOih0aGlzLm1hcmtlcj90aGlzLm1hcmtlci5yYWRpdXN8fDA6MCkrYSl9LHR0QmVsb3c6ITF9KTtlLnByb3RvdHlwZS5iZWZvcmVQYWRkaW5nPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPXRoaXMubGVuLGU9dGhpcy5jaGFydCxkPTAsZz1iLGs9dGhpcy5pc1hBeGlzLGg9az8ieERhdGEiOiJ5RGF0YSIsZj10aGlzLm1pbixyPXt9LHA9TWF0aC5taW4oZS5wbG90V2lkdGgsZS5wbG90SGVpZ2h0KSx3PU51bWJlci5NQVhfVkFMVUUseT0tTnVtYmVyLk1BWF9WQUxVRSxCPXRoaXMubWF4LWYsRT1iL0IsRj1bXTt0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGQpe3ZhciBnPWQub3B0aW9uczshZC5idWJibGVQYWRkaW5nfHwhZC52aXNpYmxlJiZlLm9wdGlvbnMuY2hhcnQuaWdub3JlSGlkZGVuU2VyaWVzfHwoYS5hbGxvd1pvb21PdXRzaWRlPQohMCxGLnB1c2goZCksayYmKFsibWluU2l6ZSIsIm1heFNpemUiXS5mb3JFYWNoKGZ1bmN0aW9uKGQpe3ZhciBhPWdbZF0sYz0vJSQvLnRlc3QoYSk7YT1sKGEpO3JbZF09Yz9wKmEvMTAwOmF9KSxkLm1pblB4U2l6ZT1yLm1pblNpemUsZC5tYXhQeFNpemU9TWF0aC5tYXgoci5tYXhTaXplLHIubWluU2l6ZSksZD1kLnpEYXRhLmZpbHRlcih6KSxkLmxlbmd0aCYmKHc9YyhnLnpNaW4seCh0KGQpLCExPT09Zy5kaXNwbGF5TmVnYXRpdmU/Zy56VGhyZXNob2xkOi1OdW1iZXIuTUFYX1ZBTFVFLHcpKSx5PWMoZy56TWF4LE1hdGgubWF4KHkscShkKSkpKSkpfSk7Ri5mb3JFYWNoKGZ1bmN0aW9uKGMpe3ZhciBiPWNbaF0sZT1iLmxlbmd0aDtrJiZjLmdldFJhZGlpKHcseSxjKTtpZigwPEIpZm9yKDtlLS07KWlmKHooYltlXSkmJmEuZGF0YU1pbjw9YltlXSYmYltlXTw9YS5tYXgpe3ZhciByPWMucmFkaWk/Yy5yYWRpaVtlXTowO2Q9TWF0aC5taW4oKGJbZV0tZikqRS1yLGQpO2c9TWF0aC5tYXgoKGJbZV0tCmYpKkUrcixnKX19KTtGLmxlbmd0aCYmMDxCJiYhdGhpcy5sb2dhcml0aG1pYyYmKGctPWIsRSo9KGIrTWF0aC5tYXgoMCxkKS1NYXRoLm1pbihnLGIpKS9iLFtbIm1pbiIsInVzZXJNaW4iLGRdLFsibWF4IiwidXNlck1heCIsZ11dLmZvckVhY2goZnVuY3Rpb24oZCl7InVuZGVmaW5lZCI9PT10eXBlb2YgYyhhLm9wdGlvbnNbZFswXV0sYVtkWzFdXSkmJihhW2RbMF1dKz1kWzJdL0UpfSkpfTsiIn0pO0MoZiwibW9kdWxlcy9uZXR3b3JrZ3JhcGgvaW50ZWdyYXRpb25zLmpzIixbZlsicGFydHMvR2xvYmFscy5qcyJdXSxmdW5jdGlvbihmKXtmLm5ldHdvcmtncmFwaEludGVncmF0aW9ucz17dmVybGV0OnthdHRyYWN0aXZlRm9yY2VGdW5jdGlvbjpmdW5jdGlvbihhLGIpe3JldHVybihiLWEpL2F9LHJlcHVsc2l2ZUZvcmNlRnVuY3Rpb246ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYi1hKS9hKihiPmE/MTowKX0sYmFyeWNlbnRlcjpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucy5ncmF2aXRhdGlvbmFsQ29uc3RhbnQsCmI9dGhpcy5iYXJ5Y2VudGVyLnhGYWN0b3IsZT10aGlzLmJhcnljZW50ZXIueUZhY3RvcjtiPShiLSh0aGlzLmJveC5sZWZ0K3RoaXMuYm94LndpZHRoKS8yKSphO2U9KGUtKHRoaXMuYm94LnRvcCt0aGlzLmJveC5oZWlnaHQpLzIpKmE7dGhpcy5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuZml4ZWRQb3NpdGlvbnx8KGEucGxvdFgtPWIvYS5tYXNzL2EuZGVncmVlLGEucGxvdFktPWUvYS5tYXNzL2EuZGVncmVlKX0pfSxyZXB1bHNpdmU6ZnVuY3Rpb24oYSxiLGUpe2I9Yip0aGlzLmRpZmZUZW1wZXJhdHVyZS9hLm1hc3MvYS5kZWdyZWU7YS5maXhlZFBvc2l0aW9ufHwoYS5wbG90WCs9ZS54KmIsYS5wbG90WSs9ZS55KmIpfSxhdHRyYWN0aXZlOmZ1bmN0aW9uKGEsYixlKXt2YXIgaD1hLmdldE1hc3MoKSxmPS1lLngqYip0aGlzLmRpZmZUZW1wZXJhdHVyZTtiPS1lLnkqYip0aGlzLmRpZmZUZW1wZXJhdHVyZTthLmZyb21Ob2RlLmZpeGVkUG9zaXRpb258fChhLmZyb21Ob2RlLnBsb3RYLT0KZipoLmZyb21Ob2RlL2EuZnJvbU5vZGUuZGVncmVlLGEuZnJvbU5vZGUucGxvdFktPWIqaC5mcm9tTm9kZS9hLmZyb21Ob2RlLmRlZ3JlZSk7YS50b05vZGUuZml4ZWRQb3NpdGlvbnx8KGEudG9Ob2RlLnBsb3RYKz1mKmgudG9Ob2RlL2EudG9Ob2RlLmRlZ3JlZSxhLnRvTm9kZS5wbG90WSs9YipoLnRvTm9kZS9hLnRvTm9kZS5kZWdyZWUpfSxpbnRlZ3JhdGU6ZnVuY3Rpb24oYSxiKXt2YXIgZT0tYS5vcHRpb25zLmZyaWN0aW9uLGg9YS5vcHRpb25zLm1heFNwZWVkLGY9KGIucGxvdFgrYi5kaXNwWC1iLnByZXZYKSplO2UqPWIucGxvdFkrYi5kaXNwWS1iLnByZXZZO3ZhciB0PU1hdGguYWJzLHg9dChmKS8oZnx8MSk7dD10KGUpLyhlfHwxKTtmPXgqTWF0aC5taW4oaCxNYXRoLmFicyhmKSk7ZT10Kk1hdGgubWluKGgsTWF0aC5hYnMoZSkpO2IucHJldlg9Yi5wbG90WCtiLmRpc3BYO2IucHJldlk9Yi5wbG90WStiLmRpc3BZO2IucGxvdFgrPWY7Yi5wbG90WSs9ZTtiLnRlbXBlcmF0dXJlPQphLnZlY3Rvckxlbmd0aCh7eDpmLHk6ZX0pfSxnZXRLOmZ1bmN0aW9uKGEpe3JldHVybiBNYXRoLnBvdyhhLmJveC53aWR0aCphLmJveC5oZWlnaHQvYS5ub2Rlcy5sZW5ndGgsLjUpfX0sZXVsZXI6e2F0dHJhY3RpdmVGb3JjZUZ1bmN0aW9uOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEqYS9ifSxyZXB1bHNpdmVGb3JjZUZ1bmN0aW9uOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGIqYi9hfSxiYXJ5Y2VudGVyOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25zLmdyYXZpdGF0aW9uYWxDb25zdGFudCxiPXRoaXMuYmFyeWNlbnRlci54RmFjdG9yLGU9dGhpcy5iYXJ5Y2VudGVyLnlGYWN0b3I7dGhpcy5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKGgpe2lmKCFoLmZpeGVkUG9zaXRpb24pe3ZhciBmPWguZ2V0RGVncmVlKCk7Zio9MStmLzI7aC5kaXNwWCs9KGItaC5wbG90WCkqYSpmL2guZGVncmVlO2guZGlzcFkrPShlLWgucGxvdFkpKmEqZi9oLmRlZ3JlZX19KX0scmVwdWxzaXZlOmZ1bmN0aW9uKGEsCmIsZSxoKXthLmRpc3BYKz1lLngvaCpiL2EuZGVncmVlO2EuZGlzcFkrPWUueS9oKmIvYS5kZWdyZWV9LGF0dHJhY3RpdmU6ZnVuY3Rpb24oYSxiLGUsaCl7dmFyIGY9YS5nZXRNYXNzKCksdD1lLngvaCpiO2IqPWUueS9oO2EuZnJvbU5vZGUuZml4ZWRQb3NpdGlvbnx8KGEuZnJvbU5vZGUuZGlzcFgtPXQqZi5mcm9tTm9kZS9hLmZyb21Ob2RlLmRlZ3JlZSxhLmZyb21Ob2RlLmRpc3BZLT1iKmYuZnJvbU5vZGUvYS5mcm9tTm9kZS5kZWdyZWUpO2EudG9Ob2RlLmZpeGVkUG9zaXRpb258fChhLnRvTm9kZS5kaXNwWCs9dCpmLnRvTm9kZS9hLnRvTm9kZS5kZWdyZWUsYS50b05vZGUuZGlzcFkrPWIqZi50b05vZGUvYS50b05vZGUuZGVncmVlKX0saW50ZWdyYXRlOmZ1bmN0aW9uKGEsYil7Yi5kaXNwWCs9Yi5kaXNwWCphLm9wdGlvbnMuZnJpY3Rpb247Yi5kaXNwWSs9Yi5kaXNwWSphLm9wdGlvbnMuZnJpY3Rpb247dmFyIGU9Yi50ZW1wZXJhdHVyZT1hLnZlY3Rvckxlbmd0aCh7eDpiLmRpc3BYLAp5OmIuZGlzcFl9KTswIT09ZSYmKGIucGxvdFgrPWIuZGlzcFgvZSpNYXRoLm1pbihNYXRoLmFicyhiLmRpc3BYKSxhLnRlbXBlcmF0dXJlKSxiLnBsb3RZKz1iLmRpc3BZL2UqTWF0aC5taW4oTWF0aC5hYnMoYi5kaXNwWSksYS50ZW1wZXJhdHVyZSkpfSxnZXRLOmZ1bmN0aW9uKGEpe3JldHVybiBNYXRoLnBvdyhhLmJveC53aWR0aCphLmJveC5oZWlnaHQvYS5ub2Rlcy5sZW5ndGgsLjMpfX19fSk7QyhmLCJtb2R1bGVzL25ldHdvcmtncmFwaC9RdWFkVHJlZS5qcyIsW2ZbInBhcnRzL0dsb2JhbHMuanMiXSxmWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZixhKXthPWEuZXh0ZW5kO3ZhciBiPWYuUXVhZFRyZWVOb2RlPWZ1bmN0aW9uKGEpe3RoaXMuYm94PWE7dGhpcy5ib3hTaXplPU1hdGgubWluKGEud2lkdGgsYS5oZWlnaHQpO3RoaXMubm9kZXM9W107dGhpcy5ib2R5PXRoaXMuaXNJbnRlcm5hbD0hMTt0aGlzLmlzRW1wdHk9ITB9O2EoYi5wcm90b3R5cGUse2luc2VydDpmdW5jdGlvbihhLApoKXt0aGlzLmlzSW50ZXJuYWw/dGhpcy5ub2Rlc1t0aGlzLmdldEJveFBvc2l0aW9uKGEpXS5pbnNlcnQoYSxoLTEpOih0aGlzLmlzRW1wdHk9ITEsdGhpcy5ib2R5P2g/KHRoaXMuaXNJbnRlcm5hbD0hMCx0aGlzLmRpdmlkZUJveCgpLCEwIT09dGhpcy5ib2R5JiYodGhpcy5ub2Rlc1t0aGlzLmdldEJveFBvc2l0aW9uKHRoaXMuYm9keSldLmluc2VydCh0aGlzLmJvZHksaC0xKSx0aGlzLmJvZHk9ITApLHRoaXMubm9kZXNbdGhpcy5nZXRCb3hQb3NpdGlvbihhKV0uaW5zZXJ0KGEsaC0xKSk6KGg9bmV3IGIoe3RvcDphLnBsb3RYLGxlZnQ6YS5wbG90WSx3aWR0aDouMSxoZWlnaHQ6LjF9KSxoLmJvZHk9YSxoLmlzSW50ZXJuYWw9ITEsdGhpcy5ub2Rlcy5wdXNoKGgpKToodGhpcy5pc0ludGVybmFsPSExLHRoaXMuYm9keT1hKSl9LHVwZGF0ZU1hc3NBbmRDZW50ZXI6ZnVuY3Rpb24oKXt2YXIgYT0wLGI9MCxmPTA7dGhpcy5pc0ludGVybmFsPyh0aGlzLm5vZGVzLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5pc0VtcHR5fHwKKGErPWUubWFzcyxiKz1lLnBsb3RYKmUubWFzcyxmKz1lLnBsb3RZKmUubWFzcyl9KSxiLz1hLGYvPWEpOnRoaXMuYm9keSYmKGE9dGhpcy5ib2R5Lm1hc3MsYj10aGlzLmJvZHkucGxvdFgsZj10aGlzLmJvZHkucGxvdFkpO3RoaXMubWFzcz1hO3RoaXMucGxvdFg9Yjt0aGlzLnBsb3RZPWZ9LGRpdmlkZUJveDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuYm94LndpZHRoLzIsaD10aGlzLmJveC5oZWlnaHQvMjt0aGlzLm5vZGVzWzBdPW5ldyBiKHtsZWZ0OnRoaXMuYm94LmxlZnQsdG9wOnRoaXMuYm94LnRvcCx3aWR0aDphLGhlaWdodDpofSk7dGhpcy5ub2Rlc1sxXT1uZXcgYih7bGVmdDp0aGlzLmJveC5sZWZ0K2EsdG9wOnRoaXMuYm94LnRvcCx3aWR0aDphLGhlaWdodDpofSk7dGhpcy5ub2Rlc1syXT1uZXcgYih7bGVmdDp0aGlzLmJveC5sZWZ0K2EsdG9wOnRoaXMuYm94LnRvcCtoLHdpZHRoOmEsaGVpZ2h0Omh9KTt0aGlzLm5vZGVzWzNdPW5ldyBiKHtsZWZ0OnRoaXMuYm94LmxlZnQsCnRvcDp0aGlzLmJveC50b3AraCx3aWR0aDphLGhlaWdodDpofSl9LGdldEJveFBvc2l0aW9uOmZ1bmN0aW9uKGEpe3ZhciBiPWEucGxvdFk8dGhpcy5ib3gudG9wK3RoaXMuYm94LmhlaWdodC8yO3JldHVybiBhLnBsb3RYPHRoaXMuYm94LmxlZnQrdGhpcy5ib3gud2lkdGgvMj9iPzA6MzpiPzE6Mn19KTtmPWYuUXVhZFRyZWU9ZnVuY3Rpb24oYSxoLGYsdCl7dGhpcy5ib3g9e2xlZnQ6YSx0b3A6aCx3aWR0aDpmLGhlaWdodDp0fTt0aGlzLm1heERlcHRoPTI1O3RoaXMucm9vdD1uZXcgYih0aGlzLmJveCwiMCIpO3RoaXMucm9vdC5pc0ludGVybmFsPSEwO3RoaXMucm9vdC5pc1Jvb3Q9ITA7dGhpcy5yb290LmRpdmlkZUJveCgpfTthKGYucHJvdG90eXBlLHtpbnNlcnROb2RlczpmdW5jdGlvbihhKXthLmZvckVhY2goZnVuY3Rpb24oYSl7dGhpcy5yb290Lmluc2VydChhLHRoaXMubWF4RGVwdGgpfSx0aGlzKX0sdmlzaXROb2RlUmVjdXJzaXZlOmZ1bmN0aW9uKGEsYixmKXt2YXIgZTsKYXx8KGE9dGhpcy5yb290KTthPT09dGhpcy5yb290JiZiJiYoZT1iKGEpKTshMSE9PWUmJihhLm5vZGVzLmZvckVhY2goZnVuY3Rpb24oYSl7aWYoYS5pc0ludGVybmFsKXtiJiYoZT1iKGEpKTtpZighMT09PWUpcmV0dXJuO3RoaXMudmlzaXROb2RlUmVjdXJzaXZlKGEsYixmKX1lbHNlIGEuYm9keSYmYiYmYihhLmJvZHkpO2YmJmYoYSl9LHRoaXMpLGE9PT10aGlzLnJvb3QmJmYmJmYoYSkpfSxjYWxjdWxhdGVNYXNzQW5kQ2VudGVyOmZ1bmN0aW9uKCl7dGhpcy52aXNpdE5vZGVSZWN1cnNpdmUobnVsbCxudWxsLGZ1bmN0aW9uKGEpe2EudXBkYXRlTWFzc0FuZENlbnRlcigpfSl9fSl9KTtDKGYsIm1vZHVsZXMvbmV0d29ya2dyYXBoL2xheW91dHMuanMiLFtmWyJwYXJ0cy9DaGFydC5qcyJdLGZbInBhcnRzL0dsb2JhbHMuanMiXSxmWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZixhLGIpe3ZhciBlPWIuYWRkRXZlbnQsaD1iLmNsYW1wLHE9Yi5kZWZpbmVkLHQ9Yi5leHRlbmQsCng9Yi5pc0Z1bmN0aW9uLEI9Yi5waWNrLHo9Yi5zZXRBbmltYXRpb247YS5sYXlvdXRzPXsicmVpbmdvbGQtZnJ1Y2h0ZXJtYW4iOmZ1bmN0aW9uKCl7fX07dChhLmxheW91dHNbInJlaW5nb2xkLWZydWNodGVybWFuIl0ucHJvdG90eXBlLHtpbml0OmZ1bmN0aW9uKGMpe3RoaXMub3B0aW9ucz1jO3RoaXMubm9kZXM9W107dGhpcy5saW5rcz1bXTt0aGlzLnNlcmllcz1bXTt0aGlzLmJveD17eDowLHk6MCx3aWR0aDowLGhlaWdodDowfTt0aGlzLnNldEluaXRpYWxSZW5kZXJpbmcoITApO3RoaXMuaW50ZWdyYXRpb249YS5uZXR3b3JrZ3JhcGhJbnRlZ3JhdGlvbnNbYy5pbnRlZ3JhdGlvbl07dGhpcy5lbmFibGVTaW11bGF0aW9uPWMuZW5hYmxlU2ltdWxhdGlvbjt0aGlzLmF0dHJhY3RpdmVGb3JjZT1CKGMuYXR0cmFjdGl2ZUZvcmNlLHRoaXMuaW50ZWdyYXRpb24uYXR0cmFjdGl2ZUZvcmNlRnVuY3Rpb24pO3RoaXMucmVwdWxzaXZlRm9yY2U9QihjLnJlcHVsc2l2ZUZvcmNlLHRoaXMuaW50ZWdyYXRpb24ucmVwdWxzaXZlRm9yY2VGdW5jdGlvbik7CnRoaXMuYXBwcm94aW1hdGlvbj1jLmFwcHJveGltYXRpb259LHVwZGF0ZVNpbXVsYXRpb246ZnVuY3Rpb24oYSl7dGhpcy5lbmFibGVTaW11bGF0aW9uPUIoYSx0aGlzLm9wdGlvbnMuZW5hYmxlU2ltdWxhdGlvbil9LHN0YXJ0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5zZXJpZXMsYj10aGlzLm9wdGlvbnM7dGhpcy5jdXJyZW50U3RlcD0wO3RoaXMuZm9yY2VzPWFbMF0mJmFbMF0uZm9yY2VzfHxbXTt0aGlzLmNoYXJ0PWFbMF0mJmFbMF0uY2hhcnQ7dGhpcy5pbml0aWFsUmVuZGVyaW5nJiYodGhpcy5pbml0UG9zaXRpb25zKCksYS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuZmluaXNoZWRBbmltYXRpbmc9ITA7YS5yZW5kZXIoKX0pKTt0aGlzLnNldEsoKTt0aGlzLnJlc2V0U2ltdWxhdGlvbihiKTt0aGlzLmVuYWJsZVNpbXVsYXRpb24mJnRoaXMuc3RlcCgpfSxzdGVwOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcyxiPXRoaXMuc2VyaWVzO2MuY3VycmVudFN0ZXArKzsiYmFybmVzLWh1dCI9PT0KYy5hcHByb3hpbWF0aW9uJiYoYy5jcmVhdGVRdWFkVHJlZSgpLGMucXVhZFRyZWUuY2FsY3VsYXRlTWFzc0FuZENlbnRlcigpKTtjLmZvcmNlcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2NbYSsiRm9yY2VzIl0oYy50ZW1wZXJhdHVyZSl9KTtjLmFwcGx5TGltaXRzKGMudGVtcGVyYXR1cmUpO2MudGVtcGVyYXR1cmU9Yy5jb29sRG93bihjLnN0YXJ0VGVtcGVyYXR1cmUsYy5kaWZmVGVtcGVyYXR1cmUsYy5jdXJyZW50U3RlcCk7Yy5wcmV2U3lzdGVtVGVtcGVyYXR1cmU9Yy5zeXN0ZW1UZW1wZXJhdHVyZTtjLnN5c3RlbVRlbXBlcmF0dXJlPWMuZ2V0U3lzdGVtVGVtcGVyYXR1cmUoKTtjLmVuYWJsZVNpbXVsYXRpb24mJihiLmZvckVhY2goZnVuY3Rpb24oYSl7YS5jaGFydCYmYS5yZW5kZXIoKX0pLGMubWF4SXRlcmF0aW9ucy0tJiZpc0Zpbml0ZShjLnRlbXBlcmF0dXJlKSYmIWMuaXNTdGFibGUoKT8oYy5zaW11bGF0aW9uJiZhLndpbi5jYW5jZWxBbmltYXRpb25GcmFtZShjLnNpbXVsYXRpb24pLApjLnNpbXVsYXRpb249YS53aW4ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7Yy5zdGVwKCl9KSk6Yy5zaW11bGF0aW9uPSExKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuc2ltdWxhdGlvbiYmYS53aW4uY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5zaW11bGF0aW9uKX0sc2V0QXJlYTpmdW5jdGlvbihhLGIsZSxmKXt0aGlzLmJveD17bGVmdDphLHRvcDpiLHdpZHRoOmUsaGVpZ2h0OmZ9fSxzZXRLOmZ1bmN0aW9uKCl7dGhpcy5rPXRoaXMub3B0aW9ucy5saW5rTGVuZ3RofHx0aGlzLmludGVncmF0aW9uLmdldEsodGhpcyl9LGFkZEVsZW1lbnRzVG9Db2xsZWN0aW9uOmZ1bmN0aW9uKGEsYil7YS5mb3JFYWNoKGZ1bmN0aW9uKGEpey0xPT09Yi5pbmRleE9mKGEpJiZiLnB1c2goYSl9KX0scmVtb3ZlRWxlbWVudEZyb21Db2xsZWN0aW9uOmZ1bmN0aW9uKGEsYil7YT1iLmluZGV4T2YoYSk7LTEhPT1hJiZiLnNwbGljZShhLDEpfSxjbGVhcjpmdW5jdGlvbigpe3RoaXMubm9kZXMubGVuZ3RoPQowO3RoaXMubGlua3MubGVuZ3RoPTA7dGhpcy5zZXJpZXMubGVuZ3RoPTA7dGhpcy5yZXNldFNpbXVsYXRpb24oKX0scmVzZXRTaW11bGF0aW9uOmZ1bmN0aW9uKCl7dGhpcy5mb3JjZWRTdG9wPSExO3RoaXMuc3lzdGVtVGVtcGVyYXR1cmU9MDt0aGlzLnNldE1heEl0ZXJhdGlvbnMoKTt0aGlzLnNldFRlbXBlcmF0dXJlKCk7dGhpcy5zZXREaWZmVGVtcGVyYXR1cmUoKX0scmVzdGFydFNpbXVsYXRpb246ZnVuY3Rpb24oKXt0aGlzLnNpbXVsYXRpb24/dGhpcy5yZXNldFNpbXVsYXRpb24oKToodGhpcy5zZXRJbml0aWFsUmVuZGVyaW5nKCExKSx0aGlzLmVuYWJsZVNpbXVsYXRpb24/dGhpcy5zdGFydCgpOnRoaXMuc2V0TWF4SXRlcmF0aW9ucygxKSx0aGlzLmNoYXJ0JiZ0aGlzLmNoYXJ0LnJlZHJhdygpLHRoaXMuc2V0SW5pdGlhbFJlbmRlcmluZyghMCkpfSxzZXRNYXhJdGVyYXRpb25zOmZ1bmN0aW9uKGEpe3RoaXMubWF4SXRlcmF0aW9ucz1CKGEsdGhpcy5vcHRpb25zLm1heEl0ZXJhdGlvbnMpfSwKc2V0VGVtcGVyYXR1cmU6ZnVuY3Rpb24oKXt0aGlzLnRlbXBlcmF0dXJlPXRoaXMuc3RhcnRUZW1wZXJhdHVyZT1NYXRoLnNxcnQodGhpcy5ub2Rlcy5sZW5ndGgpfSxzZXREaWZmVGVtcGVyYXR1cmU6ZnVuY3Rpb24oKXt0aGlzLmRpZmZUZW1wZXJhdHVyZT10aGlzLnN0YXJ0VGVtcGVyYXR1cmUvKHRoaXMub3B0aW9ucy5tYXhJdGVyYXRpb25zKzEpfSxzZXRJbml0aWFsUmVuZGVyaW5nOmZ1bmN0aW9uKGEpe3RoaXMuaW5pdGlhbFJlbmRlcmluZz1hfSxjcmVhdGVRdWFkVHJlZTpmdW5jdGlvbigpe3RoaXMucXVhZFRyZWU9bmV3IGEuUXVhZFRyZWUodGhpcy5ib3gubGVmdCx0aGlzLmJveC50b3AsdGhpcy5ib3gud2lkdGgsdGhpcy5ib3guaGVpZ2h0KTt0aGlzLnF1YWRUcmVlLmluc2VydE5vZGVzKHRoaXMubm9kZXMpfSxpbml0UG9zaXRpb25zOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25zLmluaXRpYWxQb3NpdGlvbnM7eChhKT8oYS5jYWxsKHRoaXMpLHRoaXMubm9kZXMuZm9yRWFjaChmdW5jdGlvbihhKXtxKGEucHJldlgpfHwKKGEucHJldlg9YS5wbG90WCk7cShhLnByZXZZKXx8KGEucHJldlk9YS5wbG90WSk7YS5kaXNwWD0wO2EuZGlzcFk9MH0pKToiY2lyY2xlIj09PWE/dGhpcy5zZXRDaXJjdWxhclBvc2l0aW9ucygpOnRoaXMuc2V0UmFuZG9tUG9zaXRpb25zKCl9LHNldENpcmN1bGFyUG9zaXRpb25zOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShkKXtkLmxpbmtzRnJvbS5mb3JFYWNoKGZ1bmN0aW9uKGQpe21bZC50b05vZGUuaWRdfHwobVtkLnRvTm9kZS5pZF09ITAscS5wdXNoKGQudG9Ob2RlKSxhKGQudG9Ob2RlKSl9KX12YXIgYj10aGlzLmJveCxlPXRoaXMubm9kZXMsZj0yKk1hdGguUEkvKGUubGVuZ3RoKzEpLGg9ZS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIDA9PT1hLmxpbmtzVG8ubGVuZ3RofSkscT1bXSxtPXt9LG49dGhpcy5vcHRpb25zLmluaXRpYWxQb3NpdGlvblJhZGl1cztoLmZvckVhY2goZnVuY3Rpb24oZCl7cS5wdXNoKGQpO2EoZCl9KTtxLmxlbmd0aD9lLmZvckVhY2goZnVuY3Rpb24oYSl7LTE9PT0KcS5pbmRleE9mKGEpJiZxLnB1c2goYSl9KTpxPWU7cS5mb3JFYWNoKGZ1bmN0aW9uKGEsZyl7YS5wbG90WD1hLnByZXZYPUIoYS5wbG90WCxiLndpZHRoLzIrbipNYXRoLmNvcyhnKmYpKTthLnBsb3RZPWEucHJldlk9QihhLnBsb3RZLGIuaGVpZ2h0LzIrbipNYXRoLnNpbihnKmYpKTthLmRpc3BYPTA7YS5kaXNwWT0wfSl9LHNldFJhbmRvbVBvc2l0aW9uczpmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7YT1hKmEvTWF0aC5QSTtyZXR1cm4gYS09TWF0aC5mbG9vcihhKX12YXIgYj10aGlzLmJveCxlPXRoaXMubm9kZXMsZj1lLmxlbmd0aCsxO2UuZm9yRWFjaChmdW5jdGlvbihjLGUpe2MucGxvdFg9Yy5wcmV2WD1CKGMucGxvdFgsYi53aWR0aCphKGUpKTtjLnBsb3RZPWMucHJldlk9QihjLnBsb3RZLGIuaGVpZ2h0KmEoZitlKSk7Yy5kaXNwWD0wO2MuZGlzcFk9MH0pfSxmb3JjZTpmdW5jdGlvbihhKXt0aGlzLmludGVncmF0aW9uW2FdLmFwcGx5KHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLAoxKSl9LGJhcnljZW50ZXJGb3JjZXM6ZnVuY3Rpb24oKXt0aGlzLmdldEJhcnljZW50ZXIoKTt0aGlzLmZvcmNlKCJiYXJ5Y2VudGVyIil9LGdldEJhcnljZW50ZXI6ZnVuY3Rpb24oKXt2YXIgYT0wLGI9MCxlPTA7dGhpcy5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKGMpe2IrPWMucGxvdFgqYy5tYXNzO2UrPWMucGxvdFkqYy5tYXNzO2ErPWMubWFzc30pO3JldHVybiB0aGlzLmJhcnljZW50ZXI9e3g6Yix5OmUseEZhY3RvcjpiL2EseUZhY3RvcjplL2F9fSxiYXJuZXNIdXRBcHByb3hpbWF0aW9uOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5nZXREaXN0WFkoYSxiKSxlPXRoaXMudmVjdG9yTGVuZ3RoKGMpO2lmKGEhPT1iJiYwIT09ZSlpZihiLmlzSW50ZXJuYWwpaWYoYi5ib3hTaXplL2U8dGhpcy5vcHRpb25zLnRoZXRhJiYwIT09ZSl7dmFyIGY9dGhpcy5yZXB1bHNpdmVGb3JjZShlLHRoaXMuayk7dGhpcy5mb3JjZSgicmVwdWxzaXZlIixhLGYqYi5tYXNzLGMsZSk7dmFyIGg9ITF9ZWxzZSBoPQohMDtlbHNlIGY9dGhpcy5yZXB1bHNpdmVGb3JjZShlLHRoaXMuayksdGhpcy5mb3JjZSgicmVwdWxzaXZlIixhLGYqYi5tYXNzLGMsZSk7cmV0dXJuIGh9LHJlcHVsc2l2ZUZvcmNlczpmdW5jdGlvbigpe3ZhciBhPXRoaXM7ImJhcm5lcy1odXQiPT09YS5hcHByb3hpbWF0aW9uP2Eubm9kZXMuZm9yRWFjaChmdW5jdGlvbihjKXthLnF1YWRUcmVlLnZpc2l0Tm9kZVJlY3Vyc2l2ZShudWxsLGZ1bmN0aW9uKGIpe3JldHVybiBhLmJhcm5lc0h1dEFwcHJveGltYXRpb24oYyxiKX0pfSk6YS5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKGMpe2Eubm9kZXMuZm9yRWFjaChmdW5jdGlvbihiKXtpZihjIT09YiYmIWMuZml4ZWRQb3NpdGlvbil7dmFyIGU9YS5nZXREaXN0WFkoYyxiKTt2YXIgZj1hLnZlY3Rvckxlbmd0aChlKTtpZigwIT09Zil7dmFyIGg9YS5yZXB1bHNpdmVGb3JjZShmLGEuayk7YS5mb3JjZSgicmVwdWxzaXZlIixjLGgqYi5tYXNzLGUsZil9fX0pfSl9LGF0dHJhY3RpdmVGb3JjZXM6ZnVuY3Rpb24oKXt2YXIgYT0KdGhpcyxiLGUsZjthLmxpbmtzLmZvckVhY2goZnVuY3Rpb24oYyl7Yy5mcm9tTm9kZSYmYy50b05vZGUmJihiPWEuZ2V0RGlzdFhZKGMuZnJvbU5vZGUsYy50b05vZGUpLGU9YS52ZWN0b3JMZW5ndGgoYiksMCE9PWUmJihmPWEuYXR0cmFjdGl2ZUZvcmNlKGUsYS5rKSxhLmZvcmNlKCJhdHRyYWN0aXZlIixjLGYsYixlKSkpfSl9LGFwcGx5TGltaXRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpczthLm5vZGVzLmZvckVhY2goZnVuY3Rpb24oYyl7Yy5maXhlZFBvc2l0aW9ufHwoYS5pbnRlZ3JhdGlvbi5pbnRlZ3JhdGUoYSxjKSxhLmFwcGx5TGltaXRCb3goYyxhLmJveCksYy5kaXNwWD0wLGMuZGlzcFk9MCl9KX0sYXBwbHlMaW1pdEJveDpmdW5jdGlvbihhLGIpe3ZhciBjPWEucmFkaXVzO2EucGxvdFg9aChhLnBsb3RYLGIubGVmdCtjLGIud2lkdGgtYyk7YS5wbG90WT1oKGEucGxvdFksYi50b3ArYyxiLmhlaWdodC1jKX0sY29vbERvd246ZnVuY3Rpb24oYSxiLGUpe3JldHVybiBhLWIqCmV9LGlzU3RhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuLjAwMDAxPk1hdGguYWJzKHRoaXMuc3lzdGVtVGVtcGVyYXR1cmUtdGhpcy5wcmV2U3lzdGVtVGVtcGVyYXR1cmUpfHwwPj10aGlzLnRlbXBlcmF0dXJlfSxnZXRTeXN0ZW1UZW1wZXJhdHVyZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGVzLnJlZHVjZShmdW5jdGlvbihhLGIpe3JldHVybiBhK2IudGVtcGVyYXR1cmV9LDApfSx2ZWN0b3JMZW5ndGg6ZnVuY3Rpb24oYSl7cmV0dXJuIE1hdGguc3FydChhLngqYS54K2EueSphLnkpfSxnZXREaXN0UjpmdW5jdGlvbihhLGIpe2E9dGhpcy5nZXREaXN0WFkoYSxiKTtyZXR1cm4gdGhpcy52ZWN0b3JMZW5ndGgoYSl9LGdldERpc3RYWTpmdW5jdGlvbihhLGIpe3ZhciBjPWEucGxvdFgtYi5wbG90WDthPWEucGxvdFktYi5wbG90WTtyZXR1cm57eDpjLHk6YSxhYnNYOk1hdGguYWJzKGMpLGFic1k6TWF0aC5hYnMoYSl9fX0pO2UoZiwicHJlZHJhdyIsZnVuY3Rpb24oKXt0aGlzLmdyYXBoTGF5b3V0c0xvb2t1cCYmCnRoaXMuZ3JhcGhMYXlvdXRzTG9va3VwLmZvckVhY2goZnVuY3Rpb24oYSl7YS5zdG9wKCl9KX0pO2UoZiwicmVuZGVyIixmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7YS5tYXhJdGVyYXRpb25zLS0mJmlzRmluaXRlKGEudGVtcGVyYXR1cmUpJiYhYS5pc1N0YWJsZSgpJiYhYS5lbmFibGVTaW11bGF0aW9uJiYoYS5iZWZvcmVTdGVwJiZhLmJlZm9yZVN0ZXAoKSxhLnN0ZXAoKSxlPSExLGI9ITApfXZhciBiPSExO2lmKHRoaXMuZ3JhcGhMYXlvdXRzTG9va3VwKXt6KCExLHRoaXMpO2Zvcih0aGlzLmdyYXBoTGF5b3V0c0xvb2t1cC5mb3JFYWNoKGZ1bmN0aW9uKGEpe2Euc3RhcnQoKX0pOyFlOyl7dmFyIGU9ITA7dGhpcy5ncmFwaExheW91dHNMb29rdXAuZm9yRWFjaChhKX1iJiZ0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EmJmEubGF5b3V0JiZhLnJlbmRlcigpfSl9fSk7ZShmLCJiZWZvcmVQcmludCIsZnVuY3Rpb24oKXt0aGlzLmdyYXBoTGF5b3V0c0xvb2t1cCYmKHRoaXMuZ3JhcGhMYXlvdXRzTG9va3VwLmZvckVhY2goZnVuY3Rpb24oYSl7YS51cGRhdGVTaW11bGF0aW9uKCExKX0pLAp0aGlzLnJlZHJhdygpKX0pO2UoZiwiYWZ0ZXJQcmludCIsZnVuY3Rpb24oKXt0aGlzLmdyYXBoTGF5b3V0c0xvb2t1cCYmdGhpcy5ncmFwaExheW91dHNMb29rdXAuZm9yRWFjaChmdW5jdGlvbihhKXthLnVwZGF0ZVNpbXVsYXRpb24oKX0pO3RoaXMucmVkcmF3KCl9KX0pO0MoZiwibW9kdWxlcy9uZXR3b3JrZ3JhcGgvZHJhZ2dhYmxlLW5vZGVzLmpzIixbZlsicGFydHMvQ2hhcnQuanMiXSxmWyJwYXJ0cy9HbG9iYWxzLmpzIl0sZlsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGYsYSxiKXt2YXIgZT1iLmFkZEV2ZW50O2EuZHJhZ05vZGVzTWl4aW49e29uTW91c2VEb3duOmZ1bmN0aW9uKGEsYil7Yj10aGlzLmNoYXJ0LnBvaW50ZXIubm9ybWFsaXplKGIpO2EuZml4ZWRQb3NpdGlvbj17Y2hhcnRYOmIuY2hhcnRYLGNoYXJ0WTpiLmNoYXJ0WSxwbG90WDphLnBsb3RYLHBsb3RZOmEucGxvdFl9O2EuaW5EcmFnTW9kZT0hMH0sb25Nb3VzZU1vdmU6ZnVuY3Rpb24oYSxiKXtpZihhLmZpeGVkUG9zaXRpb24mJgphLmluRHJhZ01vZGUpe3ZhciBlPXRoaXMuY2hhcnQ7Yj1lLnBvaW50ZXIubm9ybWFsaXplKGIpO3ZhciBmPWEuZml4ZWRQb3NpdGlvbi5jaGFydFgtYi5jaGFydFgsaD1hLmZpeGVkUG9zaXRpb24uY2hhcnRZLWIuY2hhcnRZO2I9ZS5ncmFwaExheW91dHNMb29rdXA7aWYoNTxNYXRoLmFicyhmKXx8NTxNYXRoLmFicyhoKSlmPWEuZml4ZWRQb3NpdGlvbi5wbG90WC1mLGg9YS5maXhlZFBvc2l0aW9uLnBsb3RZLWgsZS5pc0luc2lkZVBsb3QoZixoKSYmKGEucGxvdFg9ZixhLnBsb3RZPWgsYS5oYXNEcmFnZ2VkPSEwLHRoaXMucmVkcmF3SGFsbyhhKSxiLmZvckVhY2goZnVuY3Rpb24oYSl7YS5yZXN0YXJ0U2ltdWxhdGlvbigpfSkpfX0sb25Nb3VzZVVwOmZ1bmN0aW9uKGEsYil7YS5maXhlZFBvc2l0aW9uJiZhLmhhc0RyYWdnZWQmJih0aGlzLmxheW91dC5lbmFibGVTaW11bGF0aW9uP3RoaXMubGF5b3V0LnN0YXJ0KCk6dGhpcy5jaGFydC5yZWRyYXcoKSxhLmluRHJhZ01vZGU9YS5oYXNEcmFnZ2VkPQohMSx0aGlzLm9wdGlvbnMuZml4ZWREcmFnZ2FibGV8fGRlbGV0ZSBhLmZpeGVkUG9zaXRpb24pfSxyZWRyYXdIYWxvOmZ1bmN0aW9uKGEpe2EmJnRoaXMuaGFsbyYmdGhpcy5oYWxvLmF0dHIoe2Q6YS5oYWxvUGF0aCh0aGlzLm9wdGlvbnMuc3RhdGVzLmhvdmVyLmhhbG8uc2l6ZSl9KX19O2UoZiwibG9hZCIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLGIsZix4O2EuY29udGFpbmVyJiYoYj1lKGEuY29udGFpbmVyLCJtb3VzZWRvd24iLGZ1bmN0aW9uKGIpe3ZhciBoPWEuaG92ZXJQb2ludDtoJiZoLnNlcmllcyYmaC5zZXJpZXMuaGFzRHJhZ2dhYmxlTm9kZXMmJmguc2VyaWVzLm9wdGlvbnMuZHJhZ2dhYmxlJiYoaC5zZXJpZXMub25Nb3VzZURvd24oaCxiKSxmPWUoYS5jb250YWluZXIsIm1vdXNlbW92ZSIsZnVuY3Rpb24oYSl7cmV0dXJuIGgmJmguc2VyaWVzJiZoLnNlcmllcy5vbk1vdXNlTW92ZShoLGEpfSkseD1lKGEuY29udGFpbmVyLm93bmVyRG9jdW1lbnQsIm1vdXNldXAiLGZ1bmN0aW9uKGEpe2YoKTsKeCgpO3JldHVybiBoJiZoLnNlcmllcyYmaC5zZXJpZXMub25Nb3VzZVVwKGgsYSl9KSl9KSk7ZShhLCJkZXN0cm95IixmdW5jdGlvbigpe2IoKX0pfSl9KTtDKGYsInBhcnRzLW1vcmUvUGFja2VkQnViYmxlU2VyaWVzLmpzIixbZlsicGFydHMvQ2hhcnQuanMiXSxmWyJwYXJ0cy9Db2xvci5qcyJdLGZbInBhcnRzL0dsb2JhbHMuanMiXSxmWyJwYXJ0cy9Qb2ludC5qcyJdLGZbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihmLGEsYixlLGgpe3ZhciBxPWEucGFyc2UsdD1oLmFkZEV2ZW50LHg9aC5jbGFtcCxCPWguZGVmaW5lZCx6PWguZXh0ZW5kO2E9aC5leHRlbmRDbGFzczt2YXIgYz1oLmZpcmVFdmVudCxsPWguaXNBcnJheSx3PWguaXNOdW1iZXIscD1oLm1lcmdlLHk9aC5waWNrO2g9aC5zZXJpZXNUeXBlO3ZhciB2PWIuU2VyaWVzLG09Yi5sYXlvdXRzWyJyZWluZ29sZC1mcnVjaHRlcm1hbiJdLG49Yi5kcmFnTm9kZXNNaXhpbjtmLnByb3RvdHlwZS5nZXRTZWxlY3RlZFBhcmVudE5vZGVzPQpmdW5jdGlvbigpe3ZhciBhPVtdO3RoaXMuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZCl7ZC5wYXJlbnROb2RlJiZkLnBhcmVudE5vZGUuc2VsZWN0ZWQmJmEucHVzaChkLnBhcmVudE5vZGUpfSk7cmV0dXJuIGF9O2IubmV0d29ya2dyYXBoSW50ZWdyYXRpb25zLnBhY2tlZGJ1YmJsZT17cmVwdWxzaXZlRm9yY2VGdW5jdGlvbjpmdW5jdGlvbihhLGcsYixjKXtyZXR1cm4gTWF0aC5taW4oYSwoYi5tYXJrZXIucmFkaXVzK2MubWFya2VyLnJhZGl1cykvMil9LGJhcnljZW50ZXI6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGc9YS5vcHRpb25zLmdyYXZpdGF0aW9uYWxDb25zdGFudCxiPWEuYm94LGM9YS5ub2RlcyxlLGY7Yy5mb3JFYWNoKGZ1bmN0aW9uKGQpe2Eub3B0aW9ucy5zcGxpdFNlcmllcyYmIWQuaXNQYXJlbnROb2RlPyhlPWQuc2VyaWVzLnBhcmVudE5vZGUucGxvdFgsZj1kLnNlcmllcy5wYXJlbnROb2RlLnBsb3RZKTooZT1iLndpZHRoLzIsZj1iLmhlaWdodC8yKTtkLmZpeGVkUG9zaXRpb258fAooZC5wbG90WC09KGQucGxvdFgtZSkqZy8oZC5tYXNzKk1hdGguc3FydChjLmxlbmd0aCkpLGQucGxvdFktPShkLnBsb3RZLWYpKmcvKGQubWFzcypNYXRoLnNxcnQoYy5sZW5ndGgpKSl9KX0scmVwdWxzaXZlOmZ1bmN0aW9uKGEsZyxiLGMpe3ZhciBkPWcqdGhpcy5kaWZmVGVtcGVyYXR1cmUvYS5tYXNzL2EuZGVncmVlO2c9Yi54KmQ7Yj1iLnkqZDthLmZpeGVkUG9zaXRpb258fChhLnBsb3RYKz1nLGEucGxvdFkrPWIpO2MuZml4ZWRQb3NpdGlvbnx8KGMucGxvdFgtPWcsYy5wbG90WS09Yil9LGludGVncmF0ZTpiLm5ldHdvcmtncmFwaEludGVncmF0aW9ucy52ZXJsZXQuaW50ZWdyYXRlLGdldEs6Yi5ub29wfTtiLmxheW91dHMucGFja2VkYnViYmxlPWEobSx7YmVmb3JlU3RlcDpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5tYXJrZXImJnRoaXMuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYSl7YSYmYS5jYWxjdWxhdGVQYXJlbnRSYWRpdXMoKX0pfSxzZXRDaXJjdWxhclBvc2l0aW9uczpmdW5jdGlvbigpe3ZhciBhPQp0aGlzLGc9YS5ib3gsYj1hLm5vZGVzLGM9MipNYXRoLlBJLyhiLmxlbmd0aCsxKSxlLGYsaD1hLm9wdGlvbnMuaW5pdGlhbFBvc2l0aW9uUmFkaXVzO2IuZm9yRWFjaChmdW5jdGlvbihkLGIpe2Eub3B0aW9ucy5zcGxpdFNlcmllcyYmIWQuaXNQYXJlbnROb2RlPyhlPWQuc2VyaWVzLnBhcmVudE5vZGUucGxvdFgsZj1kLnNlcmllcy5wYXJlbnROb2RlLnBsb3RZKTooZT1nLndpZHRoLzIsZj1nLmhlaWdodC8yKTtkLnBsb3RYPWQucHJldlg9eShkLnBsb3RYLGUraCpNYXRoLmNvcyhkLmluZGV4fHxiKmMpKTtkLnBsb3RZPWQucHJldlk9eShkLnBsb3RZLGYraCpNYXRoLnNpbihkLmluZGV4fHxiKmMpKTtkLmRpc3BYPTA7ZC5kaXNwWT0wfSl9LHJlcHVsc2l2ZUZvcmNlczpmdW5jdGlvbigpe3ZhciBhPXRoaXMsZyxiLGMsZT1hLm9wdGlvbnMuYnViYmxlUGFkZGluZzthLm5vZGVzLmZvckVhY2goZnVuY3Rpb24oZCl7ZC5kZWdyZWU9ZC5tYXNzO2QubmVpZ2hib3Vycz0wO2Eubm9kZXMuZm9yRWFjaChmdW5jdGlvbihrKXtnPQowO2Q9PT1rfHxkLmZpeGVkUG9zaXRpb258fCFhLm9wdGlvbnMuc2VyaWVzSW50ZXJhY3Rpb24mJmQuc2VyaWVzIT09ay5zZXJpZXN8fChjPWEuZ2V0RGlzdFhZKGQsayksYj1hLnZlY3Rvckxlbmd0aChjKS0oZC5tYXJrZXIucmFkaXVzK2subWFya2VyLnJhZGl1cytlKSwwPmImJihkLmRlZ3JlZSs9LjAxLGQubmVpZ2hib3VycysrLGc9YS5yZXB1bHNpdmVGb3JjZSgtYi9NYXRoLnNxcnQoZC5uZWlnaGJvdXJzKSxhLmssZCxrKSksYS5mb3JjZSgicmVwdWxzaXZlIixkLGcqay5tYXNzLGMsayxiKSl9KX0pfSxhcHBseUxpbWl0Qm94OmZ1bmN0aW9uKGEpe2lmKHRoaXMub3B0aW9ucy5zcGxpdFNlcmllcyYmIWEuaXNQYXJlbnROb2RlJiZ0aGlzLm9wdGlvbnMucGFyZW50Tm9kZUxpbWl0KXt2YXIgZD10aGlzLmdldERpc3RYWShhLGEuc2VyaWVzLnBhcmVudE5vZGUpO3ZhciBiPWEuc2VyaWVzLnBhcmVudE5vZGVSYWRpdXMtYS5tYXJrZXIucmFkaXVzLXRoaXMudmVjdG9yTGVuZ3RoKGQpOwowPmImJmI+LTIqYS5tYXJrZXIucmFkaXVzJiYoYS5wbG90WC09LjAxKmQueCxhLnBsb3RZLT0uMDEqZC55KX1tLnByb3RvdHlwZS5hcHBseUxpbWl0Qm94LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KTtoKCJwYWNrZWRidWJibGUiLCJidWJibGUiLHttaW5TaXplOiIxMCUiLG1heFNpemU6IjUwJSIsc2l6ZUJ5OiJhcmVhIix6b25lQXhpczoieSIsY3Jpc3A6ITEsdG9vbHRpcDp7cG9pbnRGb3JtYXQ6IlZhbHVlOiB7cG9pbnQudmFsdWV9In0sZHJhZ2dhYmxlOiEwLHVzZVNpbXVsYXRpb246ITAscGFyZW50Tm9kZTp7YWxsb3dQb2ludFNlbGVjdDohMX0sZGF0YUxhYmVsczp7Zm9ybWF0dGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9pbnQudmFsdWV9LHBhcmVudE5vZGVGb3JtYXR0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYW1lfSxwYXJlbnROb2RlVGV4dFBhdGg6e2VuYWJsZWQ6ITB9LHBhZGRpbmc6MCxzdHlsZTp7dHJhbnNpdGlvbjoib3BhY2l0eSAyMDAwbXMifX0sbGF5b3V0QWxnb3JpdGhtOntpbml0aWFsUG9zaXRpb25zOiJjaXJjbGUiLAppbml0aWFsUG9zaXRpb25SYWRpdXM6MjAsYnViYmxlUGFkZGluZzo1LHBhcmVudE5vZGVMaW1pdDohMSxzZXJpZXNJbnRlcmFjdGlvbjohMCxkcmFnQmV0d2VlblNlcmllczohMSxwYXJlbnROb2RlT3B0aW9uczp7bWF4SXRlcmF0aW9uczo0MDAsZ3Jhdml0YXRpb25hbENvbnN0YW50Oi4wMyxtYXhTcGVlZDo1MCxpbml0aWFsUG9zaXRpb25SYWRpdXM6MTAwLHNlcmllc0ludGVyYWN0aW9uOiEwLG1hcmtlcjp7ZmlsbENvbG9yOm51bGwsZmlsbE9wYWNpdHk6MSxsaW5lV2lkdGg6MSxsaW5lQ29sb3I6bnVsbCxzeW1ib2w6ImNpcmNsZSJ9fSxlbmFibGVTaW11bGF0aW9uOiEwLHR5cGU6InBhY2tlZGJ1YmJsZSIsaW50ZWdyYXRpb246InBhY2tlZGJ1YmJsZSIsbWF4SXRlcmF0aW9uczoxRTMsc3BsaXRTZXJpZXM6ITEsbWF4U3BlZWQ6NSxncmF2aXRhdGlvbmFsQ29uc3RhbnQ6LjAxLGZyaWN0aW9uOi0uOTgxfX0se2hhc0RyYWdnYWJsZU5vZGVzOiEwLGZvcmNlczpbImJhcnljZW50ZXIiLAoicmVwdWxzaXZlIl0scG9pbnRBcnJheU1hcDpbInZhbHVlIl0sdHJhY2tlckdyb3VwczpbImdyb3VwIiwiZGF0YUxhYmVsc0dyb3VwIiwicGFyZW50Tm9kZXNHcm91cCJdLHBvaW50VmFsS2V5OiJ2YWx1ZSIsaXNDYXJ0ZXNpYW46ITEscmVxdWlyZVNvcnRpbmc6ITEsZGlyZWN0VG91Y2g6ITAsYXhpc1R5cGVzOltdLG5vU2hhcmVkVG9vbHRpcDohMCxzZWFyY2hQb2ludDpiLm5vb3AsYWNjdW11bGF0ZUFsbFBvaW50czpmdW5jdGlvbihhKXt2YXIgZD1hLmNoYXJ0LGI9W10sYyxlO2ZvcihjPTA7YzxkLnNlcmllcy5sZW5ndGg7YysrKWlmKGE9ZC5zZXJpZXNbY10sYS5pcygicGFja2VkYnViYmxlIikmJmEudmlzaWJsZXx8IWQub3B0aW9ucy5jaGFydC5pZ25vcmVIaWRkZW5TZXJpZXMpZm9yKGU9MDtlPGEueURhdGEubGVuZ3RoO2UrKyliLnB1c2goW251bGwsbnVsbCxhLnlEYXRhW2VdLGEuaW5kZXgsZSx7aWQ6ZSxtYXJrZXI6e3JhZGl1czowfX1dKTtyZXR1cm4gYn0saW5pdDpmdW5jdGlvbigpe3YucHJvdG90eXBlLmluaXQuYXBwbHkodGhpcywKYXJndW1lbnRzKTt0KHRoaXMsInVwZGF0ZWREYXRhIixmdW5jdGlvbigpe3RoaXMuY2hhcnQuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYSl7YS50eXBlPT09dGhpcy50eXBlJiYoYS5pc0RpcnR5PSEwKX0sdGhpcyl9KTtyZXR1cm4gdGhpc30scmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGE9W107di5wcm90b3R5cGUucmVuZGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLm9wdGlvbnMuZGF0YUxhYmVscy5hbGxvd092ZXJsYXB8fCh0aGlzLmRhdGEuZm9yRWFjaChmdW5jdGlvbihkKXtsKGQuZGF0YUxhYmVscykmJmQuZGF0YUxhYmVscy5mb3JFYWNoKGZ1bmN0aW9uKGQpe2EucHVzaChkKX0pfSksdGhpcy5vcHRpb25zLnVzZVNpbXVsYXRpb24mJnRoaXMuY2hhcnQuaGlkZU92ZXJsYXBwaW5nTGFiZWxzKGEpKX0sc2V0VmlzaWJsZTpmdW5jdGlvbigpe3ZhciBhPXRoaXM7di5wcm90b3R5cGUuc2V0VmlzaWJsZS5hcHBseShhLGFyZ3VtZW50cyk7YS5wYXJlbnROb2RlTGF5b3V0JiZhLmdyYXBoPwphLnZpc2libGU/KGEuZ3JhcGguc2hvdygpLGEucGFyZW50Tm9kZS5kYXRhTGFiZWwmJmEucGFyZW50Tm9kZS5kYXRhTGFiZWwuc2hvdygpKTooYS5ncmFwaC5oaWRlKCksYS5wYXJlbnROb2RlTGF5b3V0LnJlbW92ZUVsZW1lbnRGcm9tQ29sbGVjdGlvbihhLnBhcmVudE5vZGUsYS5wYXJlbnROb2RlTGF5b3V0Lm5vZGVzKSxhLnBhcmVudE5vZGUuZGF0YUxhYmVsJiZhLnBhcmVudE5vZGUuZGF0YUxhYmVsLmhpZGUoKSk6YS5sYXlvdXQmJihhLnZpc2libGU/YS5sYXlvdXQuYWRkRWxlbWVudHNUb0NvbGxlY3Rpb24oYS5wb2ludHMsYS5sYXlvdXQubm9kZXMpOmEucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oZCl7YS5sYXlvdXQucmVtb3ZlRWxlbWVudEZyb21Db2xsZWN0aW9uKGQsYS5sYXlvdXQubm9kZXMpfSkpfSxkcmF3RGF0YUxhYmVsczpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucy5kYXRhTGFiZWxzLnRleHRQYXRoLGI9dGhpcy5wb2ludHM7di5wcm90b3R5cGUuZHJhd0RhdGFMYWJlbHMuYXBwbHkodGhpcywKYXJndW1lbnRzKTt0aGlzLnBhcmVudE5vZGUmJih0aGlzLnBhcmVudE5vZGUuZm9ybWF0UHJlZml4PSJwYXJlbnROb2RlIix0aGlzLnBvaW50cz1bdGhpcy5wYXJlbnROb2RlXSx0aGlzLm9wdGlvbnMuZGF0YUxhYmVscy50ZXh0UGF0aD10aGlzLm9wdGlvbnMuZGF0YUxhYmVscy5wYXJlbnROb2RlVGV4dFBhdGgsdi5wcm90b3R5cGUuZHJhd0RhdGFMYWJlbHMuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMucG9pbnRzPWIsdGhpcy5vcHRpb25zLmRhdGFMYWJlbHMudGV4dFBhdGg9YSl9LHNlcmllc0JveDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuY2hhcnQsYj1NYXRoLm1heCxjPU1hdGgubWluLGUsZj1bYS5wbG90TGVmdCxhLnBsb3RMZWZ0K2EucGxvdFdpZHRoLGEucGxvdFRvcCxhLnBsb3RUb3ArYS5wbG90SGVpZ2h0XTt0aGlzLmRhdGEuZm9yRWFjaChmdW5jdGlvbihhKXtCKGEucGxvdFgpJiZCKGEucGxvdFkpJiZhLm1hcmtlci5yYWRpdXMmJihlPWEubWFya2VyLnJhZGl1cyxmWzBdPQpjKGZbMF0sYS5wbG90WC1lKSxmWzFdPWIoZlsxXSxhLnBsb3RYK2UpLGZbMl09YyhmWzJdLGEucGxvdFktZSksZlszXT1iKGZbM10sYS5wbG90WStlKSl9KTtyZXR1cm4gdyhmLndpZHRoL2YuaGVpZ2h0KT9mOm51bGx9LGNhbGN1bGF0ZVBhcmVudFJhZGl1czpmdW5jdGlvbigpe3ZhciBhPXRoaXMuc2VyaWVzQm94KCk7dGhpcy5wYXJlbnROb2RlUmFkaXVzPXgoTWF0aC5zcXJ0KDIqdGhpcy5wYXJlbnROb2RlTWFzcy9NYXRoLlBJKSsyMCwyMCxhP01hdGgubWF4KE1hdGguc3FydChNYXRoLnBvdyhhLndpZHRoLDIpK01hdGgucG93KGEuaGVpZ2h0LDIpKS8yKzIwLDIwKTpNYXRoLnNxcnQoMip0aGlzLnBhcmVudE5vZGVNYXNzL01hdGguUEkpKzIwKTt0aGlzLnBhcmVudE5vZGUmJih0aGlzLnBhcmVudE5vZGUubWFya2VyLnJhZGl1cz10aGlzLnBhcmVudE5vZGUucmFkaXVzPXRoaXMucGFyZW50Tm9kZVJhZGl1cyl9LGRyYXdHcmFwaDpmdW5jdGlvbigpe2lmKHRoaXMubGF5b3V0JiYKdGhpcy5sYXlvdXQub3B0aW9ucy5zcGxpdFNlcmllcyl7dmFyIGE9dGhpcy5jaGFydCxiPXRoaXMubGF5b3V0Lm9wdGlvbnMucGFyZW50Tm9kZU9wdGlvbnMubWFya2VyO2I9e2ZpbGw6Yi5maWxsQ29sb3J8fHEodGhpcy5jb2xvcikuYnJpZ2h0ZW4oLjQpLmdldCgpLG9wYWNpdHk6Yi5maWxsT3BhY2l0eSxzdHJva2U6Yi5saW5lQ29sb3J8fHRoaXMuY29sb3IsInN0cm9rZS13aWR0aCI6Yi5saW5lV2lkdGh9O3ZhciBjPXRoaXMudmlzaWJsZT8iaW5oZXJpdCI6ImhpZGRlbiI7dGhpcy5wYXJlbnROb2Rlc0dyb3VwfHwodGhpcy5wYXJlbnROb2Rlc0dyb3VwPXRoaXMucGxvdEdyb3VwKCJwYXJlbnROb2Rlc0dyb3VwIiwicGFyZW50Tm9kZSIsYywuMSxhLnNlcmllc0dyb3VwKSx0aGlzLmdyb3VwLmF0dHIoe3pJbmRleDoyfSkpO3RoaXMuY2FsY3VsYXRlUGFyZW50UmFkaXVzKCk7Yz1wKHt4OnRoaXMucGFyZW50Tm9kZS5wbG90WC10aGlzLnBhcmVudE5vZGVSYWRpdXMseTp0aGlzLnBhcmVudE5vZGUucGxvdFktCnRoaXMucGFyZW50Tm9kZVJhZGl1cyx3aWR0aDoyKnRoaXMucGFyZW50Tm9kZVJhZGl1cyxoZWlnaHQ6Mip0aGlzLnBhcmVudE5vZGVSYWRpdXN9LGIpO3RoaXMucGFyZW50Tm9kZS5ncmFwaGljfHwodGhpcy5ncmFwaD10aGlzLnBhcmVudE5vZGUuZ3JhcGhpYz1hLnJlbmRlcmVyLnN5bWJvbChiLnN5bWJvbCkuYWRkKHRoaXMucGFyZW50Tm9kZXNHcm91cCkpO3RoaXMucGFyZW50Tm9kZS5ncmFwaGljLmF0dHIoYyl9fSxjcmVhdGVQYXJlbnROb2RlczpmdW5jdGlvbigpe3ZhciBhPXRoaXMsYj1hLmNoYXJ0LGM9YS5wYXJlbnROb2RlTGF5b3V0LGUsZj1hLnBhcmVudE5vZGUsaD1hLnBvaW50Q2xhc3M7YS5wYXJlbnROb2RlTWFzcz0wO2EucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oZCl7YS5wYXJlbnROb2RlTWFzcys9TWF0aC5QSSpNYXRoLnBvdyhkLm1hcmtlci5yYWRpdXMsMil9KTthLmNhbGN1bGF0ZVBhcmVudFJhZGl1cygpO2Mubm9kZXMuZm9yRWFjaChmdW5jdGlvbihkKXtkLnNlcmllc0luZGV4PT09CmEuaW5kZXgmJihlPSEwKX0pO2Muc2V0QXJlYSgwLDAsYi5wbG90V2lkdGgsYi5wbG90SGVpZ2h0KTtlfHwoZnx8KGY9KG5ldyBoKS5pbml0KHRoaXMse21hc3M6YS5wYXJlbnROb2RlUmFkaXVzLzIsbWFya2VyOntyYWRpdXM6YS5wYXJlbnROb2RlUmFkaXVzfSxkYXRhTGFiZWxzOntpbnNpZGU6ITF9LGRhdGFMYWJlbE9uTnVsbDohMCxkZWdyZWU6YS5wYXJlbnROb2RlUmFkaXVzLGlzUGFyZW50Tm9kZTohMCxzZXJpZXNJbmRleDphLmluZGV4fSkpLGEucGFyZW50Tm9kZSYmKGYucGxvdFg9YS5wYXJlbnROb2RlLnBsb3RYLGYucGxvdFk9YS5wYXJlbnROb2RlLnBsb3RZKSxhLnBhcmVudE5vZGU9ZixjLmFkZEVsZW1lbnRzVG9Db2xsZWN0aW9uKFthXSxjLnNlcmllcyksYy5hZGRFbGVtZW50c1RvQ29sbGVjdGlvbihbZl0sYy5ub2RlcykpfSxkcmF3VHJhY2tlcjpmdW5jdGlvbigpe3ZhciBhPXRoaXMucGFyZW50Tm9kZTtiLlRyYWNrZXJNaXhpbi5kcmF3VHJhY2tlclBvaW50LmNhbGwodGhpcyk7CmlmKGEpe3ZhciBnPWwoYS5kYXRhTGFiZWxzKT9hLmRhdGFMYWJlbHM6YS5kYXRhTGFiZWw/W2EuZGF0YUxhYmVsXTpbXTthLmdyYXBoaWMmJihhLmdyYXBoaWMuZWxlbWVudC5wb2ludD1hKTtnLmZvckVhY2goZnVuY3Rpb24oZCl7ZC5kaXY/ZC5kaXYucG9pbnQ9YTpkLmVsZW1lbnQucG9pbnQ9YX0pfX0sYWRkU2VyaWVzTGF5b3V0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25zLmxheW91dEFsZ29yaXRobSxnPXRoaXMuY2hhcnQuZ3JhcGhMYXlvdXRzU3RvcmFnZSxjPXRoaXMuY2hhcnQuZ3JhcGhMYXlvdXRzTG9va3VwLGU9cChhLGEucGFyZW50Tm9kZU9wdGlvbnMse2VuYWJsZVNpbXVsYXRpb246dGhpcy5sYXlvdXQub3B0aW9ucy5lbmFibGVTaW11bGF0aW9ufSk7dmFyIGY9Z1thLnR5cGUrIi1zZXJpZXMiXTtmfHwoZ1thLnR5cGUrIi1zZXJpZXMiXT1mPW5ldyBiLmxheW91dHNbYS50eXBlXSxmLmluaXQoZSksYy5zcGxpY2UoZi5pbmRleCwwLGYpKTt0aGlzLnBhcmVudE5vZGVMYXlvdXQ9CmY7dGhpcy5jcmVhdGVQYXJlbnROb2RlcygpfSxhZGRMYXlvdXQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnMubGF5b3V0QWxnb3JpdGhtLGc9dGhpcy5jaGFydC5ncmFwaExheW91dHNTdG9yYWdlLGM9dGhpcy5jaGFydC5ncmFwaExheW91dHNMb29rdXAsZT10aGlzLmNoYXJ0Lm9wdGlvbnMuY2hhcnQ7Z3x8KHRoaXMuY2hhcnQuZ3JhcGhMYXlvdXRzU3RvcmFnZT1nPXt9LHRoaXMuY2hhcnQuZ3JhcGhMYXlvdXRzTG9va3VwPWM9W10pO3ZhciBmPWdbYS50eXBlXTtmfHwoYS5lbmFibGVTaW11bGF0aW9uPUIoZS5mb3JFeHBvcnQpPyFlLmZvckV4cG9ydDphLmVuYWJsZVNpbXVsYXRpb24sZ1thLnR5cGVdPWY9bmV3IGIubGF5b3V0c1thLnR5cGVdLGYuaW5pdChhKSxjLnNwbGljZShmLmluZGV4LDAsZikpO3RoaXMubGF5b3V0PWY7dGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihhKXthLm1hc3M9MjthLmRlZ3JlZT0xO2EuY29sbGlzaW9uTm1iPTF9KTtmLnNldEFyZWEoMCwKMCx0aGlzLmNoYXJ0LnBsb3RXaWR0aCx0aGlzLmNoYXJ0LnBsb3RIZWlnaHQpO2YuYWRkRWxlbWVudHNUb0NvbGxlY3Rpb24oW3RoaXNdLGYuc2VyaWVzKTtmLmFkZEVsZW1lbnRzVG9Db2xsZWN0aW9uKHRoaXMucG9pbnRzLGYubm9kZXMpfSxkZWZlckxheW91dDpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucy5sYXlvdXRBbGdvcml0aG07dGhpcy52aXNpYmxlJiYodGhpcy5hZGRMYXlvdXQoKSxhLnNwbGl0U2VyaWVzJiZ0aGlzLmFkZFNlcmllc0xheW91dCgpKX0sdHJhbnNsYXRlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jaGFydCxiPXRoaXMuZGF0YSxrPXRoaXMuaW5kZXgsZSxmPXRoaXMub3B0aW9ucy51c2VTaW11bGF0aW9uO3RoaXMucHJvY2Vzc2VkWERhdGE9dGhpcy54RGF0YTt0aGlzLmdlbmVyYXRlUG9pbnRzKCk7QihhLmFsbERhdGFQb2ludHMpfHwoYS5hbGxEYXRhUG9pbnRzPXRoaXMuYWNjdW11bGF0ZUFsbFBvaW50cyh0aGlzKSx0aGlzLmdldFBvaW50UmFkaXVzKCkpOwppZihmKXZhciBoPWEuYWxsRGF0YVBvaW50cztlbHNlIGg9dGhpcy5wbGFjZUJ1YmJsZXMoYS5hbGxEYXRhUG9pbnRzKSx0aGlzLm9wdGlvbnMuZHJhZ2dhYmxlPSExO2ZvcihlPTA7ZTxoLmxlbmd0aDtlKyspaWYoaFtlXVszXT09PWspe3ZhciBsPWJbaFtlXVs0XV07dmFyIG09aFtlXVsyXTtmfHwobC5wbG90WD1oW2VdWzBdLWEucGxvdExlZnQrYS5kaWZmWCxsLnBsb3RZPWhbZV1bMV0tYS5wbG90VG9wK2EuZGlmZlkpO2wubWFya2VyPXoobC5tYXJrZXIse3JhZGl1czptLHdpZHRoOjIqbSxoZWlnaHQ6MiptfSk7bC5yYWRpdXM9bX1mJiZ0aGlzLmRlZmVyTGF5b3V0KCk7Yyh0aGlzLCJhZnRlclRyYW5zbGF0ZSIpfSxjaGVja092ZXJsYXA6ZnVuY3Rpb24oYSxiKXt2YXIgZD1hWzBdLWJbMF0sZz1hWzFdLWJbMV07cmV0dXJuLS4wMDE+TWF0aC5zcXJ0KGQqZCtnKmcpLU1hdGguYWJzKGFbMl0rYlsyXSl9LHBvc2l0aW9uQnViYmxlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1NYXRoLnNxcnQsCmc9TWF0aC5hc2luLGs9TWF0aC5hY29zLGU9TWF0aC5wb3csZj1NYXRoLmFicztkPWQoZShhWzBdLWJbMF0sMikrZShhWzFdLWJbMV0sMikpO2s9aygoZShkLDIpK2UoY1syXStiWzJdLDIpLWUoY1syXSthWzJdLDIpKS8oMiooY1syXStiWzJdKSpkKSk7Zz1nKGYoYVswXS1iWzBdKS9kKTthPSgwPmFbMV0tYlsxXT8wOk1hdGguUEkpK2srZyooMD4oYVswXS1iWzBdKSooYVsxXS1iWzFdKT8xOi0xKTtyZXR1cm5bYlswXSsoYlsyXStjWzJdKSpNYXRoLnNpbihhKSxiWzFdLShiWzJdK2NbMl0pKk1hdGguY29zKGEpLGNbMl0sY1szXSxjWzRdXX0scGxhY2VCdWJibGVzOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY2hlY2tPdmVybGFwLGQ9dGhpcy5wb3NpdGlvbkJ1YmJsZSxjPVtdLGU9MSxmPTAsaD0wO3ZhciBsPVtdO3ZhciBtO2E9YS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGJbMl0tYVsyXX0pO2lmKGEubGVuZ3RoKXtjLnB1c2goW1swLDAsYVswXVsyXSxhWzBdWzNdLGFbMF1bNF1dXSk7CmlmKDE8YS5sZW5ndGgpZm9yKGMucHVzaChbWzAsMC1hWzFdWzJdLWFbMF1bMl0sYVsxXVsyXSxhWzFdWzNdLGFbMV1bNF1dXSksbT0yO208YS5sZW5ndGg7bSsrKWFbbV1bMl09YVttXVsyXXx8MSxsPWQoY1tlXVtmXSxjW2UtMV1baF0sYVttXSksYihsLGNbZV1bMF0pPyhjLnB1c2goW10pLGg9MCxjW2UrMV0ucHVzaChkKGNbZV1bZl0sY1tlXVswXSxhW21dKSksZSsrLGY9MCk6MTxlJiZjW2UtMV1baCsxXSYmYihsLGNbZS0xXVtoKzFdKT8oaCsrLGNbZV0ucHVzaChkKGNbZV1bZl0sY1tlLTFdW2hdLGFbbV0pKSxmKyspOihmKyssY1tlXS5wdXNoKGwpKTt0aGlzLmNoYXJ0LnN0YWdlcz1jO3RoaXMuY2hhcnQucmF3UG9zaXRpb25zPVtdLmNvbmNhdC5hcHBseShbXSxjKTt0aGlzLnJlc2l6ZVJhZGl1cygpO2w9dGhpcy5jaGFydC5yYXdQb3NpdGlvbnN9cmV0dXJuIGx9LHJlc2l6ZVJhZGl1czpmdW5jdGlvbigpe3ZhciBhPXRoaXMuY2hhcnQsYj1hLnJhd1Bvc2l0aW9ucyxjPU1hdGgubWluLAplPU1hdGgubWF4LGY9YS5wbG90TGVmdCxoPWEucGxvdFRvcCxsPWEucGxvdEhlaWdodCxtPWEucGxvdFdpZHRoLG4scCxxO3ZhciB0PW49TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO3ZhciB2PXA9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO2ZvcihxPTA7cTxiLmxlbmd0aDtxKyspe3ZhciB3PWJbcV1bMl07dD1jKHQsYltxXVswXS13KTt2PWUodixiW3FdWzBdK3cpO249YyhuLGJbcV1bMV0tdyk7cD1lKHAsYltxXVsxXSt3KX1xPVt2LXQscC1uXTtjPWMuYXBwbHkoW10sWyhtLWYpL3FbMF0sKGwtaCkvcVsxXV0pO2lmKDFlLTEwPE1hdGguYWJzKGMtMSkpe2ZvcihxPTA7cTxiLmxlbmd0aDtxKyspYltxXVsyXSo9Yzt0aGlzLnBsYWNlQnViYmxlcyhiKX1lbHNlIGEuZGlmZlk9bC8yK2gtbi0ocC1uKS8yLGEuZGlmZlg9bS8yK2YtdC0odi10KS8yfSxjYWxjdWxhdGVaRXh0cmVtZXM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnMuek1pbixiPXRoaXMub3B0aW9ucy56TWF4LGM9CkluZmluaXR5LGU9LUluZmluaXR5O2lmKGEmJmIpcmV0dXJuW2EsYl07dGhpcy5jaGFydC5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihhKXthLnlEYXRhLmZvckVhY2goZnVuY3Rpb24oYSl7QihhKSYmKGE+ZSYmKGU9YSksYTxjJiYoYz1hKSl9KX0pO2E9eShhLGMpO2I9eShiLGUpO3JldHVyblthLGJdfSxnZXRQb2ludFJhZGl1czpmdW5jdGlvbigpe3ZhciBhPXRoaXMsYj1hLmNoYXJ0LGM9YS5vcHRpb25zLGU9Yy51c2VTaW11bGF0aW9uLGY9TWF0aC5taW4oYi5wbG90V2lkdGgsYi5wbG90SGVpZ2h0KSxoPXt9LGw9W10sbT1iLmFsbERhdGFQb2ludHMsbixwLHEsdDtbIm1pblNpemUiLCJtYXhTaXplIl0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1wYXJzZUludChjW2FdLDEwKSxkPS8lJC8udGVzdChjW2FdKTtoW2FdPWQ/ZipiLzEwMDpiKk1hdGguc3FydChtLmxlbmd0aCl9KTtiLm1pblJhZGl1cz1uPWgubWluU2l6ZS9NYXRoLnNxcnQobS5sZW5ndGgpO2IubWF4UmFkaXVzPQpwPWgubWF4U2l6ZS9NYXRoLnNxcnQobS5sZW5ndGgpO3ZhciB2PWU/YS5jYWxjdWxhdGVaRXh0cmVtZXMoKTpbbixwXTsobXx8W10pLmZvckVhY2goZnVuY3Rpb24oYixjKXtxPWU/eChiWzJdLHZbMF0sdlsxXSk6YlsyXTt0PWEuZ2V0UmFkaXVzKHZbMF0sdlsxXSxuLHAscSk7MD09PXQmJih0PW51bGwpO21bY11bMl09dDtsLnB1c2godCl9KTthLnJhZGlpPWx9LHJlZHJhd0hhbG86bi5yZWRyYXdIYWxvLG9uTW91c2VEb3duOm4ub25Nb3VzZURvd24sb25Nb3VzZU1vdmU6bi5vbk1vdXNlTW92ZSxvbk1vdXNlVXA6ZnVuY3Rpb24oYSl7aWYoYS5maXhlZFBvc2l0aW9uJiYhYS5yZW1vdmVkKXt2YXIgYixjLGQ9dGhpcy5sYXlvdXQsZT10aGlzLnBhcmVudE5vZGVMYXlvdXQ7ZSYmZC5vcHRpb25zLmRyYWdCZXR3ZWVuU2VyaWVzJiZlLm5vZGVzLmZvckVhY2goZnVuY3Rpb24oZyl7YSYmYS5tYXJrZXImJmchPT1hLnNlcmllcy5wYXJlbnROb2RlJiYoYj1kLmdldERpc3RYWShhLGcpLGM9CmQudmVjdG9yTGVuZ3RoKGIpLWcubWFya2VyLnJhZGl1cy1hLm1hcmtlci5yYWRpdXMsMD5jJiYoZy5zZXJpZXMuYWRkUG9pbnQocChhLm9wdGlvbnMse3Bsb3RYOmEucGxvdFgscGxvdFk6YS5wbG90WX0pLCExKSxkLnJlbW92ZUVsZW1lbnRGcm9tQ29sbGVjdGlvbihhLGQubm9kZXMpLGEucmVtb3ZlKCkpKX0pO24ub25Nb3VzZVVwLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmNoYXJ0LmdyYXBoTGF5b3V0c0xvb2t1cCYmdGhpcy5jaGFydC5ncmFwaExheW91dHNMb29rdXAuZm9yRWFjaChmdW5jdGlvbihhKXthLnJlbW92ZUVsZW1lbnRGcm9tQ29sbGVjdGlvbih0aGlzLGEuc2VyaWVzKX0sdGhpcyk7dGhpcy5wYXJlbnROb2RlJiYodGhpcy5wYXJlbnROb2RlTGF5b3V0LnJlbW92ZUVsZW1lbnRGcm9tQ29sbGVjdGlvbih0aGlzLnBhcmVudE5vZGUsdGhpcy5wYXJlbnROb2RlTGF5b3V0Lm5vZGVzKSx0aGlzLnBhcmVudE5vZGUuZGF0YUxhYmVsJiYKKHRoaXMucGFyZW50Tm9kZS5kYXRhTGFiZWw9dGhpcy5wYXJlbnROb2RlLmRhdGFMYWJlbC5kZXN0cm95KCkpKTtiLlNlcmllcy5wcm90b3R5cGUuZGVzdHJveS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGFsaWduRGF0YUxhYmVsOmIuU2VyaWVzLnByb3RvdHlwZS5hbGlnbkRhdGFMYWJlbH0se2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLnNlcmllcy5sYXlvdXQmJnRoaXMuc2VyaWVzLmxheW91dC5yZW1vdmVFbGVtZW50RnJvbUNvbGxlY3Rpb24odGhpcyx0aGlzLnNlcmllcy5sYXlvdXQubm9kZXMpO3JldHVybiBlLnByb3RvdHlwZS5kZXN0cm95LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZmlyZVBvaW50RXZlbnQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuc2VyaWVzLm9wdGlvbnM7aWYodGhpcy5pc1BhcmVudE5vZGUmJmQucGFyZW50Tm9kZSl7dmFyIGc9ZC5hbGxvd1BvaW50U2VsZWN0O2QuYWxsb3dQb2ludFNlbGVjdD1kLnBhcmVudE5vZGUuYWxsb3dQb2ludFNlbGVjdDtlLnByb3RvdHlwZS5maXJlUG9pbnRFdmVudC5hcHBseSh0aGlzLAphcmd1bWVudHMpO2QuYWxsb3dQb2ludFNlbGVjdD1nfWVsc2UgZS5wcm90b3R5cGUuZmlyZVBvaW50RXZlbnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxzZWxlY3Q6ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLnNlcmllcy5jaGFydDt0aGlzLmlzUGFyZW50Tm9kZT8oZC5nZXRTZWxlY3RlZFBvaW50cz1kLmdldFNlbGVjdGVkUGFyZW50Tm9kZXMsZS5wcm90b3R5cGUuc2VsZWN0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxkLmdldFNlbGVjdGVkUG9pbnRzPWIuQ2hhcnQucHJvdG90eXBlLmdldFNlbGVjdGVkUG9pbnRzKTplLnByb3RvdHlwZS5zZWxlY3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0pO3QoZiwiYmVmb3JlUmVkcmF3IixmdW5jdGlvbigpe3RoaXMuYWxsRGF0YVBvaW50cyYmZGVsZXRlIHRoaXMuYWxsRGF0YVBvaW50c30pOyIifSk7QyhmLCJwYXJ0cy1tb3JlL1BvbGFyLmpzIixbZlsicGFydHMvQ2hhcnQuanMiXSxmWyJwYXJ0cy9HbG9iYWxzLmpzIl0sZlsicGFydHMtbW9yZS9QYW5lLmpzIl0sCmZbInBhcnRzL1BvaW50ZXIuanMiXSxmWyJwYXJ0cy9TVkdSZW5kZXJlci5qcyJdLGZbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihmLGEsYixlLGgscSl7dmFyIHQ9cS5hZGRFdmVudCx4PXEuYW5pbU9iamVjdCxCPXEuZGVmaW5lZCx6PXEuZmluZCxjPXEuaXNOdW1iZXIsbD1xLnBpY2ssdz1xLnNwbGF0LHA9cS51bmlxdWVLZXkseT1xLndyYXAsdj1hLlNlcmllcyxtPWEuc2VyaWVzVHlwZXMsbj12LnByb3RvdHlwZTtlPWUucHJvdG90eXBlO24uc2VhcmNoUG9pbnRCeUFuZ2xlPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY2hhcnQsYz10aGlzLnhBeGlzLnBhbmUuY2VudGVyO3JldHVybiB0aGlzLnNlYXJjaEtEVHJlZSh7Y2xpZW50WDoxODArLTE4MC9NYXRoLlBJKk1hdGguYXRhbjIoYS5jaGFydFgtY1swXS1iLnBsb3RMZWZ0LGEuY2hhcnRZLWNbMV0tYi5wbG90VG9wKX0pfTtuLmdldENvbm5lY3RvcnM9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGc9ZD8xOjA7dmFyIGU9MDw9CmImJmI8PWEubGVuZ3RoLTE/YjowPmI/YS5sZW5ndGgtMStiOjA7Yj0wPmUtMT9hLmxlbmd0aC0oMStnKTplLTE7Zz1lKzE+YS5sZW5ndGgtMT9nOmUrMTt2YXIgZj1hW2JdO2c9YVtnXTt2YXIgaz1mLnBsb3RYO2Y9Zi5wbG90WTt2YXIgaD1nLnBsb3RYO3ZhciBsPWcucGxvdFk7Zz1hW2VdLnBsb3RYO2U9YVtlXS5wbG90WTtrPSgxLjUqZytrKS8yLjU7Zj0oMS41KmUrZikvMi41O2g9KDEuNSpnK2gpLzIuNTt2YXIgbT0oMS41KmUrbCkvMi41O2w9TWF0aC5zcXJ0KE1hdGgucG93KGstZywyKStNYXRoLnBvdyhmLWUsMikpO3ZhciBuPU1hdGguc3FydChNYXRoLnBvdyhoLWcsMikrTWF0aC5wb3cobS1lLDIpKTtrPU1hdGguYXRhbjIoZi1lLGstZyk7bT1NYXRoLlBJLzIrKGsrTWF0aC5hdGFuMihtLWUsaC1nKSkvMjtNYXRoLmFicyhrLW0pPk1hdGguUEkvMiYmKG0tPU1hdGguUEkpO2s9ZytNYXRoLmNvcyhtKSpsO2Y9ZStNYXRoLnNpbihtKSpsO2g9ZytNYXRoLmNvcyhNYXRoLlBJKwptKSpuO209ZStNYXRoLnNpbihNYXRoLlBJK20pKm47Zz17cmlnaHRDb250WDpoLHJpZ2h0Q29udFk6bSxsZWZ0Q29udFg6ayxsZWZ0Q29udFk6ZixwbG90WDpnLHBsb3RZOmV9O2MmJihnLnByZXZQb2ludENvbnQ9dGhpcy5nZXRDb25uZWN0b3JzKGEsYiwhMSxkKSk7cmV0dXJuIGd9O24udG9YWT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmNoYXJ0LGM9dGhpcy54QXhpczt2YXIgZD10aGlzLnlBeGlzO3ZhciBlPWEucGxvdFgsZz1hLnBsb3RZLGY9YS5zZXJpZXMsaD1iLmludmVydGVkLGw9YS55LG09aD9lOmQubGVuLWc7aCYmZiYmIWYuaXNSYWRpYWxCYXImJihhLnBsb3RZPWc9Im51bWJlciI9PT10eXBlb2YgbD9kLnRyYW5zbGF0ZShsKXx8MDowKTthLnJlY3RQbG90WD1lO2EucmVjdFBsb3RZPWc7ZC5jZW50ZXImJihtKz1kLmNlbnRlclszXS8yKTtkPWg/ZC5wb3N0VHJhbnNsYXRlKGcsbSk6Yy5wb3N0VHJhbnNsYXRlKGUsbSk7YS5wbG90WD1hLnBvbGFyUGxvdFg9ZC54LWIucGxvdExlZnQ7CmEucGxvdFk9YS5wb2xhclBsb3RZPWQueS1iLnBsb3RUb3A7dGhpcy5rZEJ5QW5nbGU/KGI9KGUvTWF0aC5QSSoxODArYy5wYW5lLm9wdGlvbnMuc3RhcnRBbmdsZSklMzYwLDA+YiYmKGIrPTM2MCksYS5jbGllbnRYPWIpOmEuY2xpZW50WD1hLnBsb3RYfTttLnNwbGluZSYmKHkobS5zcGxpbmUucHJvdG90eXBlLCJnZXRQb2ludFNwbGluZSIsZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy5jaGFydC5wb2xhcj9kPyhhPXRoaXMuZ2V0Q29ubmVjdG9ycyhiLGQsITAsdGhpcy5jb25uZWN0RW5kcyksYT1bIkMiLGEucHJldlBvaW50Q29udC5yaWdodENvbnRYLGEucHJldlBvaW50Q29udC5yaWdodENvbnRZLGEubGVmdENvbnRYLGEubGVmdENvbnRZLGEucGxvdFgsYS5wbG90WV0pOmE9WyJNIixjLnBsb3RYLGMucGxvdFldOmE9YS5jYWxsKHRoaXMsYixjLGQpO3JldHVybiBhfSksbS5hcmVhc3BsaW5lcmFuZ2UmJihtLmFyZWFzcGxpbmVyYW5nZS5wcm90b3R5cGUuZ2V0UG9pbnRTcGxpbmU9bS5zcGxpbmUucHJvdG90eXBlLmdldFBvaW50U3BsaW5lKSk7CnQodiwiYWZ0ZXJUcmFuc2xhdGUiLGZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5jaGFydDtpZihiLnBvbGFyJiZ0aGlzLnhBeGlzKXsodGhpcy5rZEJ5QW5nbGU9Yi50b29sdGlwJiZiLnRvb2x0aXAuc2hhcmVkKT90aGlzLnNlYXJjaFBvaW50PXRoaXMuc2VhcmNoUG9pbnRCeUFuZ2xlOnRoaXMub3B0aW9ucy5maW5kTmVhcmVzdFBvaW50Qnk9Inh5IjtpZighdGhpcy5wcmV2ZW50UG9zdFRyYW5zbGF0ZSlmb3IodmFyIGM9dGhpcy5wb2ludHMsZD1jLmxlbmd0aDtkLS07KXRoaXMudG9YWShjW2RdKSwhYi5oYXNQYXJhbGxlbENvb3JkaW5hdGVzJiYhdGhpcy55QXhpcy5yZXZlcnNlZCYmY1tkXS55PHRoaXMueUF4aXMubWluJiYoY1tkXS5pc051bGw9ITApO3RoaXMuaGFzQ2xpcENpcmNsZVNldHRlcnx8KHRoaXMuaGFzQ2xpcENpcmNsZVNldHRlcj0hIXRoaXMuZXZlbnRzVG9VbmJpbmQucHVzaCh0KHRoaXMsImFmdGVyUmVuZGVyIixmdW5jdGlvbigpe2lmKGIucG9sYXIpe3ZhciBjPXRoaXMueUF4aXMucGFuZS5jZW50ZXI7CnRoaXMuY2xpcENpcmNsZT90aGlzLmNsaXBDaXJjbGUuYW5pbWF0ZSh7eDpjWzBdLHk6Y1sxXSxyOmNbMl0vMixpbm5lclI6Y1szXS8yfSk6dGhpcy5jbGlwQ2lyY2xlPWIucmVuZGVyZXIuY2xpcENpcmNsZShjWzBdLGNbMV0sY1syXS8yLGNbM10vMik7dGhpcy5ncm91cC5jbGlwKHRoaXMuY2xpcENpcmNsZSk7dGhpcy5zZXRDbGlwPWEubm9vcH19KSkpfX0se29yZGVyOjJ9KTt5KG4sImdldEdyYXBoUGF0aCIsZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLGQ7aWYodGhpcy5jaGFydC5wb2xhcil7Yj1ifHx0aGlzLnBvaW50cztmb3IoZD0wO2Q8Yi5sZW5ndGg7ZCsrKWlmKCFiW2RdLmlzTnVsbCl7dmFyIGU9ZDticmVha31pZighMSE9PXRoaXMub3B0aW9ucy5jb25uZWN0RW5kcyYmInVuZGVmaW5lZCIhPT10eXBlb2YgZSl7dGhpcy5jb25uZWN0RW5kcz0hMDtiLnNwbGljZShiLmxlbmd0aCwwLGJbZV0pO3ZhciBnPSEwfWIuZm9yRWFjaChmdW5jdGlvbihhKXsidW5kZWZpbmVkIj09PQp0eXBlb2YgYS5wb2xhclBsb3RZJiZjLnRvWFkoYSl9KX1kPWEuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSk7ZyYmYi5wb3AoKTtyZXR1cm4gZH0pO3ZhciBkPWZ1bmN0aW9uKGIsYyl7dmFyIGQ9dGhpcyxlPXRoaXMuY2hhcnQsZj10aGlzLm9wdGlvbnMuYW5pbWF0aW9uLGc9dGhpcy5ncm91cCxrPXRoaXMubWFya2VyR3JvdXAsaD10aGlzLnhBeGlzLmNlbnRlcixtPWUucGxvdExlZnQsbj1lLnBsb3RUb3AscCxxLHQsdjtpZihlLnBvbGFyKWlmKGQuaXNSYWRpYWxCYXIpY3x8KGQuc3RhcnRBbmdsZVJhZD1sKGQudHJhbnNsYXRlZFRocmVzaG9sZCxkLnhBeGlzLnN0YXJ0QW5nbGVSYWQpLGEuc2VyaWVzVHlwZXMucGllLnByb3RvdHlwZS5hbmltYXRlLmNhbGwoZCxjKSk7ZWxzZXtpZihlLnJlbmRlcmVyLmlzU1ZHKWlmKGY9eChmKSxkLmlzKCJjb2x1bW4iKSl7aWYoIWMpe3ZhciB3PWhbM10vMjtkLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3A9YS5ncmFwaGljOwp0PShxPWEuc2hhcGVBcmdzKSYmcS5yO3Y9cSYmcS5pbm5lclI7cCYmcSYmKHAuYXR0cih7cjp3LGlubmVyUjp3fSkscC5hbmltYXRlKHtyOnQsaW5uZXJSOnZ9LGQub3B0aW9ucy5hbmltYXRpb24pKX0pfX1lbHNlIGM/KGI9e3RyYW5zbGF0ZVg6aFswXSttLHRyYW5zbGF0ZVk6aFsxXStuLHNjYWxlWDouMDAxLHNjYWxlWTouMDAxfSxnLmF0dHIoYiksayYmay5hdHRyKGIpKTooYj17dHJhbnNsYXRlWDptLHRyYW5zbGF0ZVk6bixzY2FsZVg6MSxzY2FsZVk6MX0sZy5hbmltYXRlKGIsZiksayYmay5hbmltYXRlKGIsZikpfWVsc2UgYi5jYWxsKHRoaXMsYyl9O3kobiwiYW5pbWF0ZSIsZCk7bS5jb2x1bW4mJih2PW0uYXJlYXJhbmdlLnByb3RvdHlwZSxtPW0uY29sdW1uLnByb3RvdHlwZSxtLnBvbGFyQXJjPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXRoaXMueEF4aXMuY2VudGVyLGY9dGhpcy55QXhpcy5sZW4sZz1lWzNdLzI7Yj1mLWIrZzthPWYtbChhLGYpK2c7dGhpcy55QXhpcy5yZXZlcnNlZCYmCigwPmImJihiPWcpLDA+YSYmKGE9ZykpO3JldHVybnt4OmVbMF0seTplWzFdLHI6Yixpbm5lclI6YSxzdGFydDpjLGVuZDpkfX0seShtLCJhbmltYXRlIixkKSx5KG0sInRyYW5zbGF0ZSIsZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5vcHRpb25zLGQ9Yi5zdGFja2luZyxlPXRoaXMuY2hhcnQsZj10aGlzLnhBeGlzLGc9dGhpcy55QXhpcyxoPWcucmV2ZXJzZWQsbD1nLmNlbnRlcixtPWYuc3RhcnRBbmdsZVJhZCxuPWYuZW5kQW5nbGVSYWQtbTt0aGlzLnByZXZlbnRQb3N0VHJhbnNsYXRlPSEwO2EuY2FsbCh0aGlzKTtpZihmLmlzUmFkaWFsKXthPXRoaXMucG9pbnRzO2Y9YS5sZW5ndGg7dmFyIHA9Zy50cmFuc2xhdGUoZy5taW4pO3ZhciB0PWcudHJhbnNsYXRlKGcubWF4KTtiPWIudGhyZXNob2xkfHwwO2lmKGUuaW52ZXJ0ZWQmJmMoYikpe3ZhciB2PWcudHJhbnNsYXRlKGIpO0IodikmJigwPnY/dj0wOnY+biYmKHY9biksdGhpcy50cmFuc2xhdGVkVGhyZXNob2xkPXYrbSl9Zm9yKDtmLS07KXtiPQphW2ZdO3ZhciB3PWIuYmFyWDt2YXIgej1iLng7dmFyIHk9Yi55O2Iuc2hhcGVUeXBlPSJhcmMiO2lmKGUuaW52ZXJ0ZWQpe2IucGxvdFk9Zy50cmFuc2xhdGUoeSk7aWYoZCYmZy5zdGFja2luZyl7aWYoeT1nLnN0YWNraW5nLnN0YWNrc1soMD55PyItIjoiIikrdGhpcy5zdGFja0tleV0sdGhpcy52aXNpYmxlJiZ5JiZ5W3pdJiYhYi5pc051bGwpe3ZhciB4PXlbel0ucG9pbnRzW3RoaXMuZ2V0U3RhY2tJbmRpY2F0b3Iodm9pZCAwLHosdGhpcy5pbmRleCkua2V5XTt2YXIgQz1nLnRyYW5zbGF0ZSh4WzBdKTt4PWcudHJhbnNsYXRlKHhbMV0pO0IoQykmJihDPXEuY2xhbXAoQywwLG4pKX19ZWxzZSBDPXYseD1iLnBsb3RZO0M+eCYmKHg9W0MsQz14XVswXSk7aWYoIWgpaWYoQzxwKUM9cDtlbHNlIGlmKHg+dCl4PXQ7ZWxzZXtpZih4PHB8fEM+dClDPXg9MH1lbHNlIGlmKHg+cCl4PXA7ZWxzZSBpZihDPHQpQz10O2Vsc2UgaWYoQz5wfHx4PHQpQz14PW47Zy5taW4+Zy5tYXgmJihDPXg9Cmg/bjowKTtDKz1tO3grPW07bCYmKGIuYmFyWD13Kz1sWzNdLzIpO3o9TWF0aC5tYXgodywwKTt5PU1hdGgubWF4KHcrYi5wb2ludFdpZHRoLDApO2Iuc2hhcGVBcmdzPXt4OmwmJmxbMF0seTpsJiZsWzFdLHI6eSxpbm5lclI6eixzdGFydDpDLGVuZDp4fTtiLm9wYWNpdHk9Qz09PXg/MDp2b2lkIDA7Yi5wbG90WT0oQih0aGlzLnRyYW5zbGF0ZWRUaHJlc2hvbGQpJiYoQzx0aGlzLnRyYW5zbGF0ZWRUaHJlc2hvbGQ/Qzp4KSktbX1lbHNlIEM9dyttLGIuc2hhcGVBcmdzPXRoaXMucG9sYXJBcmMoYi55Qm90dG9tLGIucGxvdFksQyxDK2IucG9pbnRXaWR0aCk7dGhpcy50b1hZKGIpO2UuaW52ZXJ0ZWQ/KHc9Zy5wb3N0VHJhbnNsYXRlKGIucmVjdFBsb3RZLHcrYi5wb2ludFdpZHRoLzIpLGIudG9vbHRpcFBvcz1bdy54LWUucGxvdExlZnQsdy55LWUucGxvdFRvcF0pOmIudG9vbHRpcFBvcz1bYi5wbG90WCxiLnBsb3RZXTtsJiYoYi50dEJlbG93PWIucGxvdFk+bFsxXSl9fX0pLG0uZmluZEFsaWdubWVudHM9CmZ1bmN0aW9uKGEsYil7bnVsbD09PWIuYWxpZ24mJihiLmFsaWduPTIwPGEmJjE2MD5hPyJsZWZ0IjoyMDA8YSYmMzQwPmE/InJpZ2h0IjoiY2VudGVyIik7bnVsbD09PWIudmVydGljYWxBbGlnbiYmKGIudmVydGljYWxBbGlnbj00NT5hfHwzMTU8YT8iYm90dG9tIjoxMzU8YSYmMjI1PmE/InRvcCI6Im1pZGRsZSIpO3JldHVybiBifSx2JiYodi5maW5kQWxpZ25tZW50cz1tLmZpbmRBbGlnbm1lbnRzKSx5KG0sImFsaWduRGF0YUxhYmVsIixmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9dGhpcy5jaGFydCxoPWwoZC5pbnNpZGUsISF0aGlzLm9wdGlvbnMuc3RhY2tpbmcpO2cucG9sYXI/KGE9Yi5yZWN0UGxvdFgvTWF0aC5QSSoxODAsZy5pbnZlcnRlZD8odGhpcy5mb3JjZURMPWcuaXNJbnNpZGVQbG90KGIucGxvdFgsTWF0aC5yb3VuZChiLnBsb3RZKSwhMSksaCYmYi5zaGFwZUFyZ3M/KGU9Yi5zaGFwZUFyZ3MsZT10aGlzLnlBeGlzLnBvc3RUcmFuc2xhdGUoKGUuc3RhcnQrZS5lbmQpLwoyLXRoaXMueEF4aXMuc3RhcnRBbmdsZVJhZCxiLmJhclgrYi5wb2ludFdpZHRoLzIpLGU9e3g6ZS54LWcucGxvdExlZnQseTplLnktZy5wbG90VG9wfSk6Yi50b29sdGlwUG9zJiYoZT17eDpiLnRvb2x0aXBQb3NbMF0seTpiLnRvb2x0aXBQb3NbMV19KSxkLmFsaWduPWwoZC5hbGlnbiwiY2VudGVyIiksZC52ZXJ0aWNhbEFsaWduPWwoZC52ZXJ0aWNhbEFsaWduLCJtaWRkbGUiKSk6dGhpcy5maW5kQWxpZ25tZW50cyYmKGQ9dGhpcy5maW5kQWxpZ25tZW50cyhhLGQpKSxuLmFsaWduRGF0YUxhYmVsLmNhbGwodGhpcyxiLGMsZCxlLGYpLHRoaXMuaXNSYWRpYWxCYXImJmIuc2hhcGVBcmdzJiZiLnNoYXBlQXJncy5zdGFydD09PWIuc2hhcGVBcmdzLmVuZCYmYy5oaWRlKCEwKSk6YS5jYWxsKHRoaXMsYixjLGQsZSxmKX0pKTt5KGUsImdldENvb3JkaW5hdGVzIixmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuY2hhcnQsZD17eEF4aXM6W10seUF4aXM6W119O2MucG9sYXI/Yy5heGVzLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGU9CmEuaXNYQXhpcyxmPWEuY2VudGVyO2lmKCJjb2xvckF4aXMiIT09YS5jb2xsKXt2YXIgZz1iLmNoYXJ0WC1mWzBdLWMucGxvdExlZnQ7Zj1iLmNoYXJ0WS1mWzFdLWMucGxvdFRvcDtkW2U/InhBeGlzIjoieUF4aXMiXS5wdXNoKHtheGlzOmEsdmFsdWU6YS50cmFuc2xhdGUoZT9NYXRoLlBJLU1hdGguYXRhbjIoZyxmKTpNYXRoLnNxcnQoTWF0aC5wb3coZywyKStNYXRoLnBvdyhmLDIpKSwhMCl9KX19KTpkPWEuY2FsbCh0aGlzLGIpO3JldHVybiBkfSk7aC5wcm90b3R5cGUuY2xpcENpcmNsZT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1wKCksZj10aGlzLmNyZWF0ZUVsZW1lbnQoImNsaXBQYXRoIikuYXR0cih7aWQ6ZX0pLmFkZCh0aGlzLmRlZnMpO2E9ZD90aGlzLmFyYyhhLGIsYyxkLDAsMipNYXRoLlBJKS5hZGQoZik6dGhpcy5jaXJjbGUoYSxiLGMpLmFkZChmKTthLmlkPWU7YS5jbGlwUGF0aD1mO3JldHVybiBhfTt0KGYsImdldEF4ZXMiLGZ1bmN0aW9uKCl7dGhpcy5wYW5lfHwKKHRoaXMucGFuZT1bXSk7dyh0aGlzLm9wdGlvbnMucGFuZSkuZm9yRWFjaChmdW5jdGlvbihhKXtuZXcgYihhLHRoaXMpfSx0aGlzKX0pO3QoZiwiYWZ0ZXJEcmF3Q2hhcnRCb3giLGZ1bmN0aW9uKCl7dGhpcy5wYW5lLmZvckVhY2goZnVuY3Rpb24oYSl7YS5yZW5kZXIoKX0pfSk7dChhLlNlcmllcywiYWZ0ZXJJbml0IixmdW5jdGlvbigpe3ZhciBhPXRoaXMuY2hhcnQ7YS5pbnZlcnRlZCYmYS5wb2xhciYmKHRoaXMuaXNSYWRpYWxTZXJpZXM9ITAsdGhpcy5pcygiY29sdW1uIikmJih0aGlzLmlzUmFkaWFsQmFyPSEwKSl9KTt5KGYucHJvdG90eXBlLCJnZXQiLGZ1bmN0aW9uKGEsYil7cmV0dXJuIHoodGhpcy5wYW5lLGZ1bmN0aW9uKGEpe3JldHVybiBhLm9wdGlvbnMuaWQ9PT1ifSl8fGEuY2FsbCh0aGlzLGIpfSl9KTtDKGYsIm1hc3RlcnMvaGlnaGNoYXJ0cy1tb3JlLnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1oaWdoY2hhcnRzLW1vcmUuanMubWFw"></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hzdG9jayBKUyB2OC4xLjIgKDIwMjAtMDYtMTYpCgogSGlnaHN0b2NrIGFzIGEgcGx1Z2luIGZvciBIaWdoY2hhcnRzCgogKGMpIDIwMTAtMjAxOSBUb3JzdGVpbiBIb25zaQoKIExpY2Vuc2U6IHd3dy5oaWdoY2hhcnRzLmNvbS9saWNlbnNlCiovCihmdW5jdGlvbihsKXsib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzPyhsWyJkZWZhdWx0Il09bCxtb2R1bGUuZXhwb3J0cz1sKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoImhpZ2hjaGFydHMvbW9kdWxlcy9zdG9jayIsWyJoaWdoY2hhcnRzIl0sZnVuY3Rpb24oSyl7bChLKTtsLkhpZ2hjaGFydHM9SztyZXR1cm4gbH0pOmwoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihsKXtmdW5jdGlvbiBLKGwsdSxCLHQpe2wuaGFzT3duUHJvcGVydHkodSl8fChsW3VdPXQuYXBwbHkobnVsbCxCKSl9bD1sP2wuX21vZHVsZXM6e307SyhsLCJwYXJ0cy9OYXZpZ2F0b3JBeGlzLmpzIixbbFsicGFydHMvR2xvYmFscy5qcyJdLGxbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihsLHUpe3ZhciBCPWwuaXNUb3VjaERldmljZSx0PXUuYWRkRXZlbnQsRT11LmNvcnJlY3RGbG9hdCwKZT11LmRlZmluZWQseD11LmlzTnVtYmVyLHE9dS5waWNrLGM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBjKGMpe3RoaXMuYXhpcz1jfWMucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmF4aXM9dm9pZCAwfTtjLnByb3RvdHlwZS50b0ZpeGVkUmFuZ2U9ZnVuY3Rpb24oYyx2LEMseil7dmFyIEE9dGhpcy5heGlzLG49QS5jaGFydDtuPW4mJm4uZml4ZWRSYW5nZTt2YXIgYT0oQS5wb2ludFJhbmdlfHwwKS8yO2M9cShDLEEudHJhbnNsYXRlKGMsITAsIUEuaG9yaXopKTt2PXEoeixBLnRyYW5zbGF0ZSh2LCEwLCFBLmhvcml6KSk7QT1uJiYodi1jKS9uO2UoQyl8fChjPUUoYythKSk7ZSh6KXx8KHY9RSh2LWEpKTsuNzxBJiYxLjM+QSYmKHo/Yz12LW46dj1jK24pO3goYykmJngodil8fChjPXY9dm9pZCAwKTtyZXR1cm57bWluOmMsbWF4OnZ9fTtyZXR1cm4gY30oKTtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBxKCl7fXEuY29tcG9zZT1mdW5jdGlvbihxKXtxLmtlZXBQcm9wcy5wdXNoKCJuYXZpZ2F0b3JBeGlzIik7CnQocSwiaW5pdCIsZnVuY3Rpb24oKXt0aGlzLm5hdmlnYXRvckF4aXN8fCh0aGlzLm5hdmlnYXRvckF4aXM9bmV3IGModGhpcykpfSk7dChxLCJ6b29tIixmdW5jdGlvbihjKXt2YXIgcT10aGlzLmNoYXJ0Lm9wdGlvbnMsej1xLm5hdmlnYXRvcixBPXRoaXMubmF2aWdhdG9yQXhpcyxuPXEuY2hhcnQucGluY2hUeXBlLGE9cS5yYW5nZVNlbGVjdG9yO3E9cS5jaGFydC56b29tVHlwZTt0aGlzLmlzWEF4aXMmJih6JiZ6LmVuYWJsZWR8fGEmJmEuZW5hYmxlZCkmJigieSI9PT1xP2Muem9vbWVkPSExOighQiYmInh5Ij09PXF8fEImJiJ4eSI9PT1uKSYmdGhpcy5vcHRpb25zLnJhbmdlJiYoej1BLnByZXZpb3VzWm9vbSxlKGMubmV3TWluKT9BLnByZXZpb3VzWm9vbT1bdGhpcy5taW4sdGhpcy5tYXhdOnomJihjLm5ld01pbj16WzBdLGMubmV3TWF4PXpbMV0sQS5wcmV2aW91c1pvb209dm9pZCAwKSkpOyJ1bmRlZmluZWQiIT09dHlwZW9mIGMuem9vbWVkJiZjLnByZXZlbnREZWZhdWx0KCl9KX07CnEuQWRkaXRpb25zQ2xhc3M9YztyZXR1cm4gcX0oKX0pO0sobCwicGFydHMvU2Nyb2xsYmFyQXhpcy5qcyIsW2xbInBhcnRzL0dsb2JhbHMuanMiXSxsWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24obCx1KXt2YXIgQj11LmFkZEV2ZW50LHQ9dS5kZWZpbmVkLEU9dS5waWNrO3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt9ZS5jb21wb3NlPWZ1bmN0aW9uKGUscSl7QihlLCJhZnRlckluaXQiLGZ1bmN0aW9uKCl7dmFyIGM9dGhpcztjLm9wdGlvbnMmJmMub3B0aW9ucy5zY3JvbGxiYXImJmMub3B0aW9ucy5zY3JvbGxiYXIuZW5hYmxlZCYmKGMub3B0aW9ucy5zY3JvbGxiYXIudmVydGljYWw9IWMuaG9yaXosYy5vcHRpb25zLnN0YXJ0T25UaWNrPWMub3B0aW9ucy5lbmRPblRpY2s9ITEsYy5zY3JvbGxiYXI9bmV3IHEoYy5jaGFydC5yZW5kZXJlcixjLm9wdGlvbnMuc2Nyb2xsYmFyLGMuY2hhcnQpLEIoYy5zY3JvbGxiYXIsImNoYW5nZWQiLGZ1bmN0aW9uKHEpe3ZhciBlPQpFKGMub3B0aW9ucyYmYy5vcHRpb25zLm1pbixjLm1pbiksdj1FKGMub3B0aW9ucyYmYy5vcHRpb25zLm1heCxjLm1heCksQz10KGMuZGF0YU1pbik/TWF0aC5taW4oZSxjLm1pbixjLmRhdGFNaW4pOmUsej0odChjLmRhdGFNYXgpP01hdGgubWF4KHYsYy5tYXgsYy5kYXRhTWF4KTp2KS1DO3QoZSkmJnQodikmJihjLmhvcml6JiYhYy5yZXZlcnNlZHx8IWMuaG9yaXomJmMucmV2ZXJzZWQ/KGU9Qyt6KnRoaXMudG8sQys9eip0aGlzLmZyb20pOihlPUMreiooMS10aGlzLmZyb20pLEMrPXoqKDEtdGhpcy50bykpLEUodGhpcy5vcHRpb25zLmxpdmVSZWRyYXcsbC5zdmcmJiFsLmlzVG91Y2hEZXZpY2UmJiF0aGlzLmNoYXJ0LmlzQm9vc3RpbmcpfHwibW91c2V1cCI9PT1xLkRPTVR5cGV8fCF0KHEuRE9NVHlwZSk/Yy5zZXRFeHRyZW1lcyhDLGUsITAsIm1vdXNlbW92ZSIhPT1xLkRPTVR5cGUscSk6dGhpcy5zZXRSYW5nZSh0aGlzLmZyb20sdGhpcy50bykpfSkpfSk7QihlLCJhZnRlclJlbmRlciIsCmZ1bmN0aW9uKCl7dmFyIGM9TWF0aC5taW4oRSh0aGlzLm9wdGlvbnMubWluLHRoaXMubWluKSx0aGlzLm1pbixFKHRoaXMuZGF0YU1pbix0aGlzLm1pbikpLHE9TWF0aC5tYXgoRSh0aGlzLm9wdGlvbnMubWF4LHRoaXMubWF4KSx0aGlzLm1heCxFKHRoaXMuZGF0YU1heCx0aGlzLm1heCkpLGU9dGhpcy5zY3JvbGxiYXIsbD10aGlzLmF4aXNUaXRsZU1hcmdpbisodGhpcy50aXRsZU9mZnNldHx8MCksQz10aGlzLmNoYXJ0LnNjcm9sbGJhcnNPZmZzZXRzLHo9dGhpcy5vcHRpb25zLm1hcmdpbnx8MDtlJiYodGhpcy5ob3Jpej8odGhpcy5vcHBvc2l0ZXx8KENbMV0rPWwpLGUucG9zaXRpb24odGhpcy5sZWZ0LHRoaXMudG9wK3RoaXMuaGVpZ2h0KzIrQ1sxXS0odGhpcy5vcHBvc2l0ZT96OjApLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpLHRoaXMub3Bwb3NpdGV8fChDWzFdKz16KSxsPTEpOih0aGlzLm9wcG9zaXRlJiYoQ1swXSs9bCksZS5wb3NpdGlvbih0aGlzLmxlZnQrdGhpcy53aWR0aCsKMitDWzBdLSh0aGlzLm9wcG9zaXRlPzA6eiksdGhpcy50b3AsdGhpcy53aWR0aCx0aGlzLmhlaWdodCksdGhpcy5vcHBvc2l0ZSYmKENbMF0rPXopLGw9MCksQ1tsXSs9ZS5zaXplK2Uub3B0aW9ucy5tYXJnaW4saXNOYU4oYyl8fGlzTmFOKHEpfHwhdCh0aGlzLm1pbil8fCF0KHRoaXMubWF4KXx8dGhpcy5taW49PT10aGlzLm1heD9lLnNldFJhbmdlKDAsMSk6KEM9KHRoaXMubWluLWMpLyhxLWMpLGM9KHRoaXMubWF4LWMpLyhxLWMpLHRoaXMuaG9yaXomJiF0aGlzLnJldmVyc2VkfHwhdGhpcy5ob3JpeiYmdGhpcy5yZXZlcnNlZD9lLnNldFJhbmdlKEMsYyk6ZS5zZXRSYW5nZSgxLWMsMS1DKSkpfSk7QihlLCJhZnRlckdldE9mZnNldCIsZnVuY3Rpb24oKXt2YXIgYz10aGlzLmhvcml6PzI6MSxlPXRoaXMuc2Nyb2xsYmFyO2UmJih0aGlzLmNoYXJ0LnNjcm9sbGJhcnNPZmZzZXRzPVswLDBdLHRoaXMuY2hhcnQuYXhpc09mZnNldFtjXSs9ZS5zaXplK2Uub3B0aW9ucy5tYXJnaW4pfSl9OwpyZXR1cm4gZX0oKX0pO0sobCwicGFydHMvU2Nyb2xsYmFyLmpzIixbbFsicGFydHMvQXhpcy5qcyJdLGxbInBhcnRzL0dsb2JhbHMuanMiXSxsWyJwYXJ0cy9TY3JvbGxiYXJBeGlzLmpzIl0sbFsicGFydHMvVXRpbGl0aWVzLmpzIl0sbFsicGFydHMvT3B0aW9ucy5qcyJdXSxmdW5jdGlvbihsLHUsQix0LEUpe3ZhciBlPXQuYWRkRXZlbnQseD10LmNvcnJlY3RGbG9hdCxxPXQuZGVmaW5lZCxjPXQuZGVzdHJveU9iamVjdFByb3BlcnRpZXMsdj10LmZpcmVFdmVudCxKPXQubWVyZ2UsRz10LnBpY2ssQz10LnJlbW92ZUV2ZW50O3Q9RS5kZWZhdWx0T3B0aW9uczt2YXIgej11Lmhhc1RvdWNoLEE9dS5pc1RvdWNoRGV2aWNlLG49dS5zd2FwWFk9ZnVuY3Rpb24oYSxoKXtoJiZhLmZvckVhY2goZnVuY3Rpb24oZyl7Zm9yKHZhciBoPWcubGVuZ3RoLGEsbT0wO208aDttKz0yKWE9Z1ttKzFdLCJudW1iZXIiPT09dHlwZW9mIGEmJihnW20rMV09Z1ttKzJdLGdbbSsyXT1hKX0pO3JldHVybiBhfTsKRT1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoaCxnLGEpe3RoaXMuX2V2ZW50cz1bXTt0aGlzLmZyb209dGhpcy5jaGFydFk9dGhpcy5jaGFydFg9MDt0aGlzLnNjcm9sbGJhcj10aGlzLmdyb3VwPXZvaWQgMDt0aGlzLnNjcm9sbGJhckJ1dHRvbnM9W107dGhpcy5zY3JvbGxiYXJHcm91cD12b2lkIDA7dGhpcy5zY3JvbGxiYXJMZWZ0PTA7dGhpcy5zY3JvbGxiYXJSaWZsZXM9dm9pZCAwO3RoaXMuc2Nyb2xsYmFyU3Ryb2tlV2lkdGg9MTt0aGlzLnRvPXRoaXMuc2l6ZT10aGlzLnNjcm9sbGJhclRvcD0wO3RoaXMudHJhY2s9dm9pZCAwO3RoaXMudHJhY2tCb3JkZXJXaWR0aD0xO3RoaXMudXNlck9wdGlvbnM9e307dGhpcy55PXRoaXMueD0wO3RoaXMuY2hhcnQ9YTt0aGlzLm9wdGlvbnM9Zzt0aGlzLnJlbmRlcmVyPWEucmVuZGVyZXI7dGhpcy5pbml0KGgsZyxhKX1hLnByb3RvdHlwZS5hZGRFdmVudHM9ZnVuY3Rpb24oKXt2YXIgaD10aGlzLm9wdGlvbnMuaW52ZXJ0ZWQ/WzEsMF06WzAsCjFdLGc9dGhpcy5zY3JvbGxiYXJCdXR0b25zLGE9dGhpcy5zY3JvbGxiYXJHcm91cC5lbGVtZW50LG49dGhpcy50cmFjay5lbGVtZW50LG09dGhpcy5tb3VzZURvd25IYW5kbGVyLmJpbmQodGhpcyksaz10aGlzLm1vdXNlTW92ZUhhbmRsZXIuYmluZCh0aGlzKSxkPXRoaXMubW91c2VVcEhhbmRsZXIuYmluZCh0aGlzKTtoPVtbZ1toWzBdXS5lbGVtZW50LCJjbGljayIsdGhpcy5idXR0b25Ub01pbkNsaWNrLmJpbmQodGhpcyldLFtnW2hbMV1dLmVsZW1lbnQsImNsaWNrIix0aGlzLmJ1dHRvblRvTWF4Q2xpY2suYmluZCh0aGlzKV0sW24sImNsaWNrIix0aGlzLnRyYWNrQ2xpY2suYmluZCh0aGlzKV0sW2EsIm1vdXNlZG93biIsbV0sW2Eub3duZXJEb2N1bWVudCwibW91c2Vtb3ZlIixrXSxbYS5vd25lckRvY3VtZW50LCJtb3VzZXVwIixkXV07eiYmaC5wdXNoKFthLCJ0b3VjaHN0YXJ0IixtXSxbYS5vd25lckRvY3VtZW50LCJ0b3VjaG1vdmUiLGtdLFthLm93bmVyRG9jdW1lbnQsInRvdWNoZW5kIiwKZF0pO2guZm9yRWFjaChmdW5jdGlvbihkKXtlLmFwcGx5KG51bGwsZCl9KTt0aGlzLl9ldmVudHM9aH07YS5wcm90b3R5cGUuYnV0dG9uVG9NYXhDbGljaz1mdW5jdGlvbihoKXt2YXIgZz0odGhpcy50by10aGlzLmZyb20pKkcodGhpcy5vcHRpb25zLnN0ZXAsLjIpO3RoaXMudXBkYXRlUG9zaXRpb24odGhpcy5mcm9tK2csdGhpcy50bytnKTt2KHRoaXMsImNoYW5nZWQiLHtmcm9tOnRoaXMuZnJvbSx0bzp0aGlzLnRvLHRyaWdnZXI6InNjcm9sbGJhciIsRE9NRXZlbnQ6aH0pfTthLnByb3RvdHlwZS5idXR0b25Ub01pbkNsaWNrPWZ1bmN0aW9uKGgpe3ZhciBnPXgodGhpcy50by10aGlzLmZyb20pKkcodGhpcy5vcHRpb25zLnN0ZXAsLjIpO3RoaXMudXBkYXRlUG9zaXRpb24oeCh0aGlzLmZyb20tZykseCh0aGlzLnRvLWcpKTt2KHRoaXMsImNoYW5nZWQiLHtmcm9tOnRoaXMuZnJvbSx0bzp0aGlzLnRvLHRyaWdnZXI6InNjcm9sbGJhciIsRE9NRXZlbnQ6aH0pfTthLnByb3RvdHlwZS5jdXJzb3JUb1Njcm9sbGJhclBvc2l0aW9uPQpmdW5jdGlvbihoKXt2YXIgZz10aGlzLm9wdGlvbnM7Zz1nLm1pbldpZHRoPnRoaXMuY2FsY3VsYXRlZFdpZHRoP2cubWluV2lkdGg6MDtyZXR1cm57Y2hhcnRYOihoLmNoYXJ0WC10aGlzLngtdGhpcy54T2Zmc2V0KS8odGhpcy5iYXJXaWR0aC1nKSxjaGFydFk6KGguY2hhcnRZLXRoaXMueS10aGlzLnlPZmZzZXQpLyh0aGlzLmJhcldpZHRoLWcpfX07YS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3ZhciBoPXRoaXMuY2hhcnQuc2Nyb2xsZXI7dGhpcy5yZW1vdmVFdmVudHMoKTtbInRyYWNrIiwic2Nyb2xsYmFyUmlmbGVzIiwic2Nyb2xsYmFyIiwic2Nyb2xsYmFyR3JvdXAiLCJncm91cCJdLmZvckVhY2goZnVuY3Rpb24oZyl7dGhpc1tnXSYmdGhpc1tnXS5kZXN0cm95JiYodGhpc1tnXT10aGlzW2ddLmRlc3Ryb3koKSl9LHRoaXMpO2gmJnRoaXM9PT1oLnNjcm9sbGJhciYmKGguc2Nyb2xsYmFyPW51bGwsYyhoLnNjcm9sbGJhckJ1dHRvbnMpKX07YS5wcm90b3R5cGUuZHJhd1Njcm9sbGJhckJ1dHRvbj0KZnVuY3Rpb24oaCl7dmFyIGc9dGhpcy5yZW5kZXJlcixhPXRoaXMuc2Nyb2xsYmFyQnV0dG9ucyxjPXRoaXMub3B0aW9ucyxtPXRoaXMuc2l6ZTt2YXIgaz1nLmcoKS5hZGQodGhpcy5ncm91cCk7YS5wdXNoKGspO2s9Zy5yZWN0KCkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtc2Nyb2xsYmFyLWJ1dHRvbiIpLmFkZChrKTt0aGlzLmNoYXJ0LnN0eWxlZE1vZGV8fGsuYXR0cih7c3Ryb2tlOmMuYnV0dG9uQm9yZGVyQ29sb3IsInN0cm9rZS13aWR0aCI6Yy5idXR0b25Cb3JkZXJXaWR0aCxmaWxsOmMuYnV0dG9uQmFja2dyb3VuZENvbG9yfSk7ay5hdHRyKGsuY3Jpc3Aoe3g6LS41LHk6LS41LHdpZHRoOm0rMSxoZWlnaHQ6bSsxLHI6Yy5idXR0b25Cb3JkZXJSYWRpdXN9LGsuc3Ryb2tlV2lkdGgoKSkpO2s9Zy5wYXRoKG4oW1siTSIsbS8yKyhoPy0xOjEpLG0vMi0zXSxbIkwiLG0vMisoaD8tMToxKSxtLzIrM10sWyJMIixtLzIrKGg/MjotMiksbS8yXV0sYy52ZXJ0aWNhbCkpLmFkZENsYXNzKCJoaWdoY2hhcnRzLXNjcm9sbGJhci1hcnJvdyIpLmFkZChhW2hdKTsKdGhpcy5jaGFydC5zdHlsZWRNb2RlfHxrLmF0dHIoe2ZpbGw6Yy5idXR0b25BcnJvd0NvbG9yfSl9O2EucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oaCxnLEkpe3RoaXMuc2Nyb2xsYmFyQnV0dG9ucz1bXTt0aGlzLnJlbmRlcmVyPWg7dGhpcy51c2VyT3B0aW9ucz1nO3RoaXMub3B0aW9ucz1KKGEuZGVmYXVsdE9wdGlvbnMsZyk7dGhpcy5jaGFydD1JO3RoaXMuc2l6ZT1HKHRoaXMub3B0aW9ucy5zaXplLHRoaXMub3B0aW9ucy5oZWlnaHQpO2cuZW5hYmxlZCYmKHRoaXMucmVuZGVyKCksdGhpcy5hZGRFdmVudHMoKSl9O2EucHJvdG90eXBlLm1vdXNlRG93bkhhbmRsZXI9ZnVuY3Rpb24oaCl7aD10aGlzLmNoYXJ0LnBvaW50ZXIubm9ybWFsaXplKGgpO2g9dGhpcy5jdXJzb3JUb1Njcm9sbGJhclBvc2l0aW9uKGgpO3RoaXMuY2hhcnRYPWguY2hhcnRYO3RoaXMuY2hhcnRZPWguY2hhcnRZO3RoaXMuaW5pdFBvc2l0aW9ucz1bdGhpcy5mcm9tLHRoaXMudG9dO3RoaXMuZ3JhYmJlZENlbnRlcj0KITB9O2EucHJvdG90eXBlLm1vdXNlTW92ZUhhbmRsZXI9ZnVuY3Rpb24oaCl7dmFyIGc9dGhpcy5jaGFydC5wb2ludGVyLm5vcm1hbGl6ZShoKSxhPXRoaXMub3B0aW9ucy52ZXJ0aWNhbD8iY2hhcnRZIjoiY2hhcnRYIixjPXRoaXMuaW5pdFBvc2l0aW9uc3x8W107IXRoaXMuZ3JhYmJlZENlbnRlcnx8aC50b3VjaGVzJiYwPT09aC50b3VjaGVzWzBdW2FdfHwoZz10aGlzLmN1cnNvclRvU2Nyb2xsYmFyUG9zaXRpb24oZylbYV0sYT10aGlzW2FdLGE9Zy1hLHRoaXMuaGFzRHJhZ2dlZD0hMCx0aGlzLnVwZGF0ZVBvc2l0aW9uKGNbMF0rYSxjWzFdK2EpLHRoaXMuaGFzRHJhZ2dlZCYmdih0aGlzLCJjaGFuZ2VkIix7ZnJvbTp0aGlzLmZyb20sdG86dGhpcy50byx0cmlnZ2VyOiJzY3JvbGxiYXIiLERPTVR5cGU6aC50eXBlLERPTUV2ZW50Omh9KSl9O2EucHJvdG90eXBlLm1vdXNlVXBIYW5kbGVyPWZ1bmN0aW9uKGEpe3RoaXMuaGFzRHJhZ2dlZCYmdih0aGlzLCJjaGFuZ2VkIix7ZnJvbTp0aGlzLmZyb20sCnRvOnRoaXMudG8sdHJpZ2dlcjoic2Nyb2xsYmFyIixET01UeXBlOmEudHlwZSxET01FdmVudDphfSk7dGhpcy5ncmFiYmVkQ2VudGVyPXRoaXMuaGFzRHJhZ2dlZD10aGlzLmNoYXJ0WD10aGlzLmNoYXJ0WT1udWxsfTthLnByb3RvdHlwZS5wb3NpdGlvbj1mdW5jdGlvbihhLGcsYyxuKXt2YXIgaD10aGlzLm9wdGlvbnMudmVydGljYWwsaz0wLGQ9dGhpcy5yZW5kZXJlZD8iYW5pbWF0ZSI6ImF0dHIiO3RoaXMueD1hO3RoaXMueT1nK3RoaXMudHJhY2tCb3JkZXJXaWR0aDt0aGlzLndpZHRoPWM7dGhpcy54T2Zmc2V0PXRoaXMuaGVpZ2h0PW47dGhpcy55T2Zmc2V0PWs7aD8odGhpcy53aWR0aD10aGlzLnlPZmZzZXQ9Yz1rPXRoaXMuc2l6ZSx0aGlzLnhPZmZzZXQ9Zz0wLHRoaXMuYmFyV2lkdGg9bi0yKmMsdGhpcy54PWErPXRoaXMub3B0aW9ucy5tYXJnaW4pOih0aGlzLmhlaWdodD10aGlzLnhPZmZzZXQ9bj1nPXRoaXMuc2l6ZSx0aGlzLmJhcldpZHRoPWMtMipuLHRoaXMueSs9dGhpcy5vcHRpb25zLm1hcmdpbik7CnRoaXMuZ3JvdXBbZF0oe3RyYW5zbGF0ZVg6YSx0cmFuc2xhdGVZOnRoaXMueX0pO3RoaXMudHJhY2tbZF0oe3dpZHRoOmMsaGVpZ2h0Om59KTt0aGlzLnNjcm9sbGJhckJ1dHRvbnNbMV1bZF0oe3RyYW5zbGF0ZVg6aD8wOmMtZyx0cmFuc2xhdGVZOmg/bi1rOjB9KX07YS5wcm90b3R5cGUucmVtb3ZlRXZlbnRzPWZ1bmN0aW9uKCl7dGhpcy5fZXZlbnRzLmZvckVhY2goZnVuY3Rpb24oYSl7Qy5hcHBseShudWxsLGEpfSk7dGhpcy5fZXZlbnRzLmxlbmd0aD0wfTthLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnJlbmRlcmVyLGc9dGhpcy5vcHRpb25zLGM9dGhpcy5zaXplLGU9dGhpcy5jaGFydC5zdHlsZWRNb2RlLG07dGhpcy5ncm91cD1tPWEuZygic2Nyb2xsYmFyIikuYXR0cih7ekluZGV4OmcuekluZGV4LHRyYW5zbGF0ZVk6LTk5OTk5fSkuYWRkKCk7dGhpcy50cmFjaz1hLnJlY3QoKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1zY3JvbGxiYXItdHJhY2siKS5hdHRyKHt4OjAsCnI6Zy50cmFja0JvcmRlclJhZGl1c3x8MCxoZWlnaHQ6Yyx3aWR0aDpjfSkuYWRkKG0pO2V8fHRoaXMudHJhY2suYXR0cih7ZmlsbDpnLnRyYWNrQmFja2dyb3VuZENvbG9yLHN0cm9rZTpnLnRyYWNrQm9yZGVyQ29sb3IsInN0cm9rZS13aWR0aCI6Zy50cmFja0JvcmRlcldpZHRofSk7dGhpcy50cmFja0JvcmRlcldpZHRoPXRoaXMudHJhY2suc3Ryb2tlV2lkdGgoKTt0aGlzLnRyYWNrLmF0dHIoe3k6LXRoaXMudHJhY2tCb3JkZXJXaWR0aCUyLzJ9KTt0aGlzLnNjcm9sbGJhckdyb3VwPWEuZygpLmFkZChtKTt0aGlzLnNjcm9sbGJhcj1hLnJlY3QoKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1zY3JvbGxiYXItdGh1bWIiKS5hdHRyKHtoZWlnaHQ6Yyx3aWR0aDpjLHI6Zy5iYXJCb3JkZXJSYWRpdXN8fDB9KS5hZGQodGhpcy5zY3JvbGxiYXJHcm91cCk7dGhpcy5zY3JvbGxiYXJSaWZsZXM9YS5wYXRoKG4oW1siTSIsLTMsYy80XSxbIkwiLC0zLDIqYy8zXSxbIk0iLDAsYy80XSxbIkwiLAowLDIqYy8zXSxbIk0iLDMsYy80XSxbIkwiLDMsMipjLzNdXSxnLnZlcnRpY2FsKSkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtc2Nyb2xsYmFyLXJpZmxlcyIpLmFkZCh0aGlzLnNjcm9sbGJhckdyb3VwKTtlfHwodGhpcy5zY3JvbGxiYXIuYXR0cih7ZmlsbDpnLmJhckJhY2tncm91bmRDb2xvcixzdHJva2U6Zy5iYXJCb3JkZXJDb2xvciwic3Ryb2tlLXdpZHRoIjpnLmJhckJvcmRlcldpZHRofSksdGhpcy5zY3JvbGxiYXJSaWZsZXMuYXR0cih7c3Ryb2tlOmcucmlmbGVDb2xvciwic3Ryb2tlLXdpZHRoIjoxfSkpO3RoaXMuc2Nyb2xsYmFyU3Ryb2tlV2lkdGg9dGhpcy5zY3JvbGxiYXIuc3Ryb2tlV2lkdGgoKTt0aGlzLnNjcm9sbGJhckdyb3VwLnRyYW5zbGF0ZSgtdGhpcy5zY3JvbGxiYXJTdHJva2VXaWR0aCUyLzIsLXRoaXMuc2Nyb2xsYmFyU3Ryb2tlV2lkdGglMi8yKTt0aGlzLmRyYXdTY3JvbGxiYXJCdXR0b24oMCk7dGhpcy5kcmF3U2Nyb2xsYmFyQnV0dG9uKDEpfTthLnByb3RvdHlwZS5zZXRSYW5nZT0KZnVuY3Rpb24oYSxnKXt2YXIgaD10aGlzLm9wdGlvbnMsYz1oLnZlcnRpY2FsLG09aC5taW5XaWR0aCxrPXRoaXMuYmFyV2lkdGgsZCxwPSF0aGlzLnJlbmRlcmVkfHx0aGlzLmhhc0RyYWdnZWR8fHRoaXMuY2hhcnQubmF2aWdhdG9yJiZ0aGlzLmNoYXJ0Lm5hdmlnYXRvci5oYXNEcmFnZ2VkPyJhdHRyIjoiYW5pbWF0ZSI7aWYocShrKSl7YT1NYXRoLm1heChhLDApO3ZhciByPU1hdGguY2VpbChrKmEpO3RoaXMuY2FsY3VsYXRlZFdpZHRoPWQ9eChrKk1hdGgubWluKGcsMSktcik7ZDxtJiYocj0oay1tK2QpKmEsZD1tKTttPU1hdGguZmxvb3Iocit0aGlzLnhPZmZzZXQrdGhpcy55T2Zmc2V0KTtrPWQvMi0uNTt0aGlzLmZyb209YTt0aGlzLnRvPWc7Yz8odGhpcy5zY3JvbGxiYXJHcm91cFtwXSh7dHJhbnNsYXRlWTptfSksdGhpcy5zY3JvbGxiYXJbcF0oe2hlaWdodDpkfSksdGhpcy5zY3JvbGxiYXJSaWZsZXNbcF0oe3RyYW5zbGF0ZVk6a30pLHRoaXMuc2Nyb2xsYmFyVG9wPW0sCnRoaXMuc2Nyb2xsYmFyTGVmdD0wKToodGhpcy5zY3JvbGxiYXJHcm91cFtwXSh7dHJhbnNsYXRlWDptfSksdGhpcy5zY3JvbGxiYXJbcF0oe3dpZHRoOmR9KSx0aGlzLnNjcm9sbGJhclJpZmxlc1twXSh7dHJhbnNsYXRlWDprfSksdGhpcy5zY3JvbGxiYXJMZWZ0PW0sdGhpcy5zY3JvbGxiYXJUb3A9MCk7MTI+PWQ/dGhpcy5zY3JvbGxiYXJSaWZsZXMuaGlkZSgpOnRoaXMuc2Nyb2xsYmFyUmlmbGVzLnNob3coITApOyExPT09aC5zaG93RnVsbCYmKDA+PWEmJjE8PWc/dGhpcy5ncm91cC5oaWRlKCk6dGhpcy5ncm91cC5zaG93KCkpO3RoaXMucmVuZGVyZWQ9ITB9fTthLnByb3RvdHlwZS50cmFja0NsaWNrPWZ1bmN0aW9uKGEpe3ZhciBnPXRoaXMuY2hhcnQucG9pbnRlci5ub3JtYWxpemUoYSksaD10aGlzLnRvLXRoaXMuZnJvbSxjPXRoaXMueSt0aGlzLnNjcm9sbGJhclRvcCxtPXRoaXMueCt0aGlzLnNjcm9sbGJhckxlZnQ7dGhpcy5vcHRpb25zLnZlcnRpY2FsJiZnLmNoYXJ0WT4KY3x8IXRoaXMub3B0aW9ucy52ZXJ0aWNhbCYmZy5jaGFydFg+bT90aGlzLnVwZGF0ZVBvc2l0aW9uKHRoaXMuZnJvbStoLHRoaXMudG8raCk6dGhpcy51cGRhdGVQb3NpdGlvbih0aGlzLmZyb20taCx0aGlzLnRvLWgpO3YodGhpcywiY2hhbmdlZCIse2Zyb206dGhpcy5mcm9tLHRvOnRoaXMudG8sdHJpZ2dlcjoic2Nyb2xsYmFyIixET01FdmVudDphfSl9O2EucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihhKXt0aGlzLmRlc3Ryb3koKTt0aGlzLmluaXQodGhpcy5jaGFydC5yZW5kZXJlcixKKCEwLHRoaXMub3B0aW9ucyxhKSx0aGlzLmNoYXJ0KX07YS5wcm90b3R5cGUudXBkYXRlUG9zaXRpb249ZnVuY3Rpb24oYSxnKXsxPGcmJihhPXgoMS14KGctYSkpLGc9MSk7MD5hJiYoZz14KGctYSksYT0wKTt0aGlzLmZyb209YTt0aGlzLnRvPWd9O2EuZGVmYXVsdE9wdGlvbnM9e2hlaWdodDpBPzIwOjE0LGJhckJvcmRlclJhZGl1czowLGJ1dHRvbkJvcmRlclJhZGl1czowLGxpdmVSZWRyYXc6dm9pZCAwLAptYXJnaW46MTAsbWluV2lkdGg6NixzdGVwOi4yLHpJbmRleDozLGJhckJhY2tncm91bmRDb2xvcjoiI2NjY2NjYyIsYmFyQm9yZGVyV2lkdGg6MSxiYXJCb3JkZXJDb2xvcjoiI2NjY2NjYyIsYnV0dG9uQXJyb3dDb2xvcjoiIzMzMzMzMyIsYnV0dG9uQmFja2dyb3VuZENvbG9yOiIjZTZlNmU2IixidXR0b25Cb3JkZXJDb2xvcjoiI2NjY2NjYyIsYnV0dG9uQm9yZGVyV2lkdGg6MSxyaWZsZUNvbG9yOiIjMzMzMzMzIix0cmFja0JhY2tncm91bmRDb2xvcjoiI2YyZjJmMiIsdHJhY2tCb3JkZXJDb2xvcjoiI2YyZjJmMiIsdHJhY2tCb3JkZXJXaWR0aDoxfTtyZXR1cm4gYX0oKTt1LlNjcm9sbGJhcnx8KHQuc2Nyb2xsYmFyPUooITAsRS5kZWZhdWx0T3B0aW9ucyx0LnNjcm9sbGJhciksdS5TY3JvbGxiYXI9RSxCLmNvbXBvc2UobCxFKSk7cmV0dXJuIHUuU2Nyb2xsYmFyfSk7SyhsLCJwYXJ0cy9OYXZpZ2F0b3IuanMiLFtsWyJwYXJ0cy9BeGlzLmpzIl0sbFsicGFydHMvQ2hhcnQuanMiXSwKbFsicGFydHMvQ29sb3IuanMiXSxsWyJwYXJ0cy9HbG9iYWxzLmpzIl0sbFsicGFydHMvTmF2aWdhdG9yQXhpcy5qcyJdLGxbInBhcnRzL09wdGlvbnMuanMiXSxsWyJwYXJ0cy9TY3JvbGxiYXIuanMiXSxsWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24obCx1LEIsdCxFLGUseCxxKXtCPUIucGFyc2U7dmFyIGM9ZS5kZWZhdWx0T3B0aW9ucyx2PXEuYWRkRXZlbnQsSj1xLmNsYW1wLEc9cS5jb3JyZWN0RmxvYXQsQz1xLmRlZmluZWQsej1xLmRlc3Ryb3lPYmplY3RQcm9wZXJ0aWVzLEE9cS5lcmFzZSxuPXEuZXh0ZW5kLGE9cS5maW5kLGg9cS5pc0FycmF5LGc9cS5pc051bWJlcixJPXEubWVyZ2UsRD1xLnBpY2ssbT1xLnJlbW92ZUV2ZW50LGs9cS5zcGxhdCxkPXQuaGFzVG91Y2gscD10LmlzVG91Y2hEZXZpY2U7ZT10LlNlcmllczt2YXIgcj1mdW5jdGlvbihiKXtmb3IodmFyIGY9W10seT0xO3k8YXJndW1lbnRzLmxlbmd0aDt5KyspZlt5LTFdPWFyZ3VtZW50c1t5XTtmPQpbXS5maWx0ZXIuY2FsbChmLGcpO2lmKGYubGVuZ3RoKXJldHVybiBNYXRoW2JdLmFwcGx5KDAsZil9O3E9InVuZGVmaW5lZCI9PT10eXBlb2YgdC5zZXJpZXNUeXBlcy5hcmVhc3BsaW5lPyJsaW5lIjoiYXJlYXNwbGluZSI7bihjLHtuYXZpZ2F0b3I6e2hlaWdodDo0MCxtYXJnaW46MjUsbWFza0luc2lkZTohMCxoYW5kbGVzOnt3aWR0aDo3LGhlaWdodDoxNSxzeW1ib2xzOlsibmF2aWdhdG9yLWhhbmRsZSIsIm5hdmlnYXRvci1oYW5kbGUiXSxlbmFibGVkOiEwLGxpbmVXaWR0aDoxLGJhY2tncm91bmRDb2xvcjoiI2YyZjJmMiIsYm9yZGVyQ29sb3I6IiM5OTk5OTkifSxtYXNrRmlsbDpCKCIjNjY4NWMyIikuc2V0T3BhY2l0eSguMykuZ2V0KCksb3V0bGluZUNvbG9yOiIjY2NjY2NjIixvdXRsaW5lV2lkdGg6MSxzZXJpZXM6e3R5cGU6cSxmaWxsT3BhY2l0eTouMDUsbGluZVdpZHRoOjEsY29tcGFyZTpudWxsLGRhdGFHcm91cGluZzp7YXBwcm94aW1hdGlvbjoiYXZlcmFnZSIsZW5hYmxlZDohMCwKZ3JvdXBQaXhlbFdpZHRoOjIsc21vb3RoZWQ6ITAsdW5pdHM6W1sibWlsbGlzZWNvbmQiLFsxLDIsNSwxMCwyMCwyNSw1MCwxMDAsMjAwLDUwMF1dLFsic2Vjb25kIixbMSwyLDUsMTAsMTUsMzBdXSxbIm1pbnV0ZSIsWzEsMiw1LDEwLDE1LDMwXV0sWyJob3VyIixbMSwyLDMsNCw2LDgsMTJdXSxbImRheSIsWzEsMiwzLDRdXSxbIndlZWsiLFsxLDIsM11dLFsibW9udGgiLFsxLDMsNl1dLFsieWVhciIsbnVsbF1dfSxkYXRhTGFiZWxzOntlbmFibGVkOiExLHpJbmRleDoyfSxpZDoiaGlnaGNoYXJ0cy1uYXZpZ2F0b3Itc2VyaWVzIixjbGFzc05hbWU6ImhpZ2hjaGFydHMtbmF2aWdhdG9yLXNlcmllcyIsbGluZUNvbG9yOm51bGwsbWFya2VyOntlbmFibGVkOiExfSx0aHJlc2hvbGQ6bnVsbH0seEF4aXM6e292ZXJzY3JvbGw6MCxjbGFzc05hbWU6ImhpZ2hjaGFydHMtbmF2aWdhdG9yLXhheGlzIix0aWNrTGVuZ3RoOjAsbGluZVdpZHRoOjAsZ3JpZExpbmVDb2xvcjoiI2U2ZTZlNiIsCmdyaWRMaW5lV2lkdGg6MSx0aWNrUGl4ZWxJbnRlcnZhbDoyMDAsbGFiZWxzOnthbGlnbjoibGVmdCIsc3R5bGU6e2NvbG9yOiIjOTk5OTk5In0seDozLHk6LTR9LGNyb3NzaGFpcjohMX0seUF4aXM6e2NsYXNzTmFtZToiaGlnaGNoYXJ0cy1uYXZpZ2F0b3IteWF4aXMiLGdyaWRMaW5lV2lkdGg6MCxzdGFydE9uVGljazohMSxlbmRPblRpY2s6ITEsbWluUGFkZGluZzouMSxtYXhQYWRkaW5nOi4xLGxhYmVsczp7ZW5hYmxlZDohMX0sY3Jvc3NoYWlyOiExLHRpdGxlOnt0ZXh0Om51bGx9LHRpY2tMZW5ndGg6MCx0aWNrV2lkdGg6MH19fSk7dC5SZW5kZXJlci5wcm90b3R5cGUuc3ltYm9sc1sibmF2aWdhdG9yLWhhbmRsZSJdPWZ1bmN0aW9uKGIsZix5LGQsYSl7Yj0oYSYmYS53aWR0aHx8MCkvMjtmPU1hdGgucm91bmQoYi8zKSsuNTthPWEmJmEuaGVpZ2h0fHwwO3JldHVybltbIk0iLC1iLTEsLjVdLFsiTCIsYiwuNV0sWyJMIixiLGErLjVdLFsiTCIsLWItMSxhKy41XSxbIkwiLC1iLQoxLC41XSxbIk0iLC1mLDRdLFsiTCIsLWYsYS0zXSxbIk0iLGYtMSw0XSxbIkwiLGYtMSxhLTNdXX07dmFyIHc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBiKGYpe3RoaXMuem9vbWVkTWluPXRoaXMuem9vbWVkTWF4PXRoaXMueUF4aXM9dGhpcy54QXhpcz10aGlzLnRvcD10aGlzLnNpemU9dGhpcy5zaGFkZXM9dGhpcy5yZW5kZXJlZD10aGlzLnJhbmdlPXRoaXMub3V0bGluZUhlaWdodD10aGlzLm91dGxpbmU9dGhpcy5vcHBvc2l0ZT10aGlzLm5hdmlnYXRvclNpemU9dGhpcy5uYXZpZ2F0b3JTZXJpZXM9dGhpcy5uYXZpZ2F0b3JPcHRpb25zPXRoaXMubmF2aWdhdG9yR3JvdXA9dGhpcy5uYXZpZ2F0b3JFbmFibGVkPXRoaXMubGVmdD10aGlzLmhlaWdodD10aGlzLmhhbmRsZXM9dGhpcy5jaGFydD10aGlzLmJhc2VTZXJpZXM9dm9pZCAwO3RoaXMuaW5pdChmKX1iLnByb3RvdHlwZS5kcmF3SGFuZGxlPWZ1bmN0aW9uKGYseSxiLGEpe3ZhciBkPXRoaXMubmF2aWdhdG9yT3B0aW9ucy5oYW5kbGVzLmhlaWdodDsKdGhpcy5oYW5kbGVzW3ldW2FdKGI/e3RyYW5zbGF0ZVg6TWF0aC5yb3VuZCh0aGlzLmxlZnQrdGhpcy5oZWlnaHQvMiksdHJhbnNsYXRlWTpNYXRoLnJvdW5kKHRoaXMudG9wK3BhcnNlSW50KGYsMTApKy41LWQpfTp7dHJhbnNsYXRlWDpNYXRoLnJvdW5kKHRoaXMubGVmdCtwYXJzZUludChmLDEwKSksdHJhbnNsYXRlWTpNYXRoLnJvdW5kKHRoaXMudG9wK3RoaXMuaGVpZ2h0LzItZC8yLTEpfSl9O2IucHJvdG90eXBlLmRyYXdPdXRsaW5lPWZ1bmN0aW9uKGYseSxiLGEpe3ZhciBkPXRoaXMubmF2aWdhdG9yT3B0aW9ucy5tYXNrSW5zaWRlLGc9dGhpcy5vdXRsaW5lLnN0cm9rZVdpZHRoKCkscD1nLzIsSD1nJTIvMjtnPXRoaXMub3V0bGluZUhlaWdodDt2YXIgcj10aGlzLnNjcm9sbGJhckhlaWdodHx8MCxGPXRoaXMuc2l6ZSxrPXRoaXMubGVmdC1yLHc9dGhpcy50b3A7Yj8oay09cCxiPXcreStILHk9dytmK0gsSD1bWyJNIixrK2csdy1yLUhdLFsiTCIsaytnLGJdLFsiTCIsayxiXSwKWyJMIixrLHldLFsiTCIsaytnLHldLFsiTCIsaytnLHcrRityXV0sZCYmSC5wdXNoKFsiTSIsaytnLGItcF0sWyJMIixrK2cseStwXSkpOihmKz1rK3ItSCx5Kz1rK3ItSCx3Kz1wLEg9W1siTSIsayx3XSxbIkwiLGYsd10sWyJMIixmLHcrZ10sWyJMIix5LHcrZ10sWyJMIix5LHddLFsiTCIsaytGKzIqcix3XV0sZCYmSC5wdXNoKFsiTSIsZi1wLHddLFsiTCIseStwLHddKSk7dGhpcy5vdXRsaW5lW2FdKHtkOkh9KX07Yi5wcm90b3R5cGUuZHJhd01hc2tzPWZ1bmN0aW9uKGYseSxiLGEpe3ZhciBkPXRoaXMubGVmdCxnPXRoaXMudG9wLHA9dGhpcy5oZWlnaHQ7aWYoYil7dmFyIEg9W2QsZCxkXTt2YXIgcj1bZyxnK2YsZyt5XTt2YXIgRj1bcCxwLHBdO3ZhciBrPVtmLHktZix0aGlzLnNpemUteV19ZWxzZSBIPVtkLGQrZixkK3ldLHI9W2csZyxnXSxGPVtmLHktZix0aGlzLnNpemUteV0saz1bcCxwLHBdO3RoaXMuc2hhZGVzLmZvckVhY2goZnVuY3Rpb24oZix5KXtmW2FdKHt4OkhbeV0sCnk6clt5XSx3aWR0aDpGW3ldLGhlaWdodDprW3ldfSl9KX07Yi5wcm90b3R5cGUucmVuZGVyRWxlbWVudHM9ZnVuY3Rpb24oKXt2YXIgZj10aGlzLHk9Zi5uYXZpZ2F0b3JPcHRpb25zLGI9eS5tYXNrSW5zaWRlLGQ9Zi5jaGFydCxhPWQucmVuZGVyZXIsZyxwPXtjdXJzb3I6ZC5pbnZlcnRlZD8ibnMtcmVzaXplIjoiZXctcmVzaXplIn07Zi5uYXZpZ2F0b3JHcm91cD1nPWEuZygibmF2aWdhdG9yIikuYXR0cih7ekluZGV4OjgsdmlzaWJpbGl0eToiaGlkZGVuIn0pLmFkZCgpO1shYixiLCFiXS5mb3JFYWNoKGZ1bmN0aW9uKGIsSCl7Zi5zaGFkZXNbSF09YS5yZWN0KCkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtbmF2aWdhdG9yLW1hc2siKygxPT09SD8iLWluc2lkZSI6Ii1vdXRzaWRlIikpLmFkZChnKTtkLnN0eWxlZE1vZGV8fGYuc2hhZGVzW0hdLmF0dHIoe2ZpbGw6Yj95Lm1hc2tGaWxsOiJyZ2JhKDAsMCwwLDApIn0pLmNzcygxPT09SCYmcCl9KTtmLm91dGxpbmU9YS5wYXRoKCkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtbmF2aWdhdG9yLW91dGxpbmUiKS5hZGQoZyk7CmQuc3R5bGVkTW9kZXx8Zi5vdXRsaW5lLmF0dHIoeyJzdHJva2Utd2lkdGgiOnkub3V0bGluZVdpZHRoLHN0cm9rZTp5Lm91dGxpbmVDb2xvcn0pO3kuaGFuZGxlcy5lbmFibGVkJiZbMCwxXS5mb3JFYWNoKGZ1bmN0aW9uKGIpe3kuaGFuZGxlcy5pbnZlcnRlZD1kLmludmVydGVkO2YuaGFuZGxlc1tiXT1hLnN5bWJvbCh5LmhhbmRsZXMuc3ltYm9sc1tiXSwteS5oYW5kbGVzLndpZHRoLzItMSwwLHkuaGFuZGxlcy53aWR0aCx5LmhhbmRsZXMuaGVpZ2h0LHkuaGFuZGxlcyk7Zi5oYW5kbGVzW2JdLmF0dHIoe3pJbmRleDo3LWJ9KS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1uYXZpZ2F0b3ItaGFuZGxlIGhpZ2hjaGFydHMtbmF2aWdhdG9yLWhhbmRsZS0iK1sibGVmdCIsInJpZ2h0Il1bYl0pLmFkZChnKTtpZighZC5zdHlsZWRNb2RlKXt2YXIgSD15LmhhbmRsZXM7Zi5oYW5kbGVzW2JdLmF0dHIoe2ZpbGw6SC5iYWNrZ3JvdW5kQ29sb3Isc3Ryb2tlOkguYm9yZGVyQ29sb3IsInN0cm9rZS13aWR0aCI6SC5saW5lV2lkdGh9KS5jc3MocCl9fSl9OwpiLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZil7KHRoaXMuc2VyaWVzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihmKXtmLmJhc2VTZXJpZXMmJmRlbGV0ZSBmLmJhc2VTZXJpZXMubmF2aWdhdG9yU2VyaWVzfSk7dGhpcy5kZXN0cm95KCk7SSghMCx0aGlzLmNoYXJ0Lm9wdGlvbnMubmF2aWdhdG9yLHRoaXMub3B0aW9ucyxmKTt0aGlzLmluaXQodGhpcy5jaGFydCl9O2IucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihmLHksYixkKXt2YXIgYT10aGlzLmNoYXJ0LHA9dGhpcy5zY3JvbGxiYXJIZWlnaHQsSCxyPXRoaXMueEF4aXMsaz1yLnBvaW50UmFuZ2V8fDA7dmFyIEY9ci5uYXZpZ2F0b3JBeGlzLmZha2U/YS54QXhpc1swXTpyO3ZhciB3PXRoaXMubmF2aWdhdG9yRW5hYmxlZCxoLGM9dGhpcy5yZW5kZXJlZDt2YXIgbT1hLmludmVydGVkO3ZhciBuPWEueEF4aXNbMF0ubWluUmFuZ2UsZT1hLnhBeGlzWzBdLm9wdGlvbnMubWF4UmFuZ2U7aWYoIXRoaXMuaGFzRHJhZ2dlZHx8QyhiKSl7Zj0KRyhmLWsvMik7eT1HKHkray8yKTtpZighZyhmKXx8IWcoeSkpaWYoYyliPTAsZD1EKHIud2lkdGgsRi53aWR0aCk7ZWxzZSByZXR1cm47dGhpcy5sZWZ0PUQoci5sZWZ0LGEucGxvdExlZnQrcCsobT9hLnBsb3RXaWR0aDowKSk7dGhpcy5zaXplPWg9SD1EKHIubGVuLChtP2EucGxvdEhlaWdodDphLnBsb3RXaWR0aCktMipwKTthPW0/cDpIKzIqcDtiPUQoYixyLnRvUGl4ZWxzKGYsITApKTtkPUQoZCxyLnRvUGl4ZWxzKHksITApKTtnKGIpJiZJbmZpbml0eSE9PU1hdGguYWJzKGIpfHwoYj0wLGQ9YSk7Zj1yLnRvVmFsdWUoYiwhMCk7eT1yLnRvVmFsdWUoZCwhMCk7dmFyIHo9TWF0aC5hYnMoRyh5LWYpKTt6PG4/dGhpcy5ncmFiYmVkTGVmdD9iPXIudG9QaXhlbHMoeS1uLWssITApOnRoaXMuZ3JhYmJlZFJpZ2h0JiYoZD1yLnRvUGl4ZWxzKGYrbitrLCEwKSk6QyhlKSYmRyh6LWspPmUmJih0aGlzLmdyYWJiZWRMZWZ0P2I9ci50b1BpeGVscyh5LWUtaywhMCk6dGhpcy5ncmFiYmVkUmlnaHQmJgooZD1yLnRvUGl4ZWxzKGYrZStrLCEwKSkpO3RoaXMuem9vbWVkTWF4PUooTWF0aC5tYXgoYixkKSwwLGgpO3RoaXMuem9vbWVkTWluPUoodGhpcy5maXhlZFdpZHRoP3RoaXMuem9vbWVkTWF4LXRoaXMuZml4ZWRXaWR0aDpNYXRoLm1pbihiLGQpLDAsaCk7dGhpcy5yYW5nZT10aGlzLnpvb21lZE1heC10aGlzLnpvb21lZE1pbjtoPU1hdGgucm91bmQodGhpcy56b29tZWRNYXgpO2I9TWF0aC5yb3VuZCh0aGlzLnpvb21lZE1pbik7dyYmKHRoaXMubmF2aWdhdG9yR3JvdXAuYXR0cih7dmlzaWJpbGl0eToidmlzaWJsZSJ9KSxjPWMmJiF0aGlzLmhhc0RyYWdnZWQ/ImFuaW1hdGUiOiJhdHRyIix0aGlzLmRyYXdNYXNrcyhiLGgsbSxjKSx0aGlzLmRyYXdPdXRsaW5lKGIsaCxtLGMpLHRoaXMubmF2aWdhdG9yT3B0aW9ucy5oYW5kbGVzLmVuYWJsZWQmJih0aGlzLmRyYXdIYW5kbGUoYiwwLG0sYyksdGhpcy5kcmF3SGFuZGxlKGgsMSxtLGMpKSk7dGhpcy5zY3JvbGxiYXImJihtPyhtPXRoaXMudG9wLQpwLEY9dGhpcy5sZWZ0LXArKHd8fCFGLm9wcG9zaXRlPzA6KEYudGl0bGVPZmZzZXR8fDApK0YuYXhpc1RpdGxlTWFyZ2luKSxwPUgrMipwKToobT10aGlzLnRvcCsodz90aGlzLmhlaWdodDotcCksRj10aGlzLmxlZnQtcCksdGhpcy5zY3JvbGxiYXIucG9zaXRpb24oRixtLGEscCksdGhpcy5zY3JvbGxiYXIuc2V0UmFuZ2UodGhpcy56b29tZWRNaW4vKEh8fDEpLHRoaXMuem9vbWVkTWF4LyhIfHwxKSkpO3RoaXMucmVuZGVyZWQ9ITB9fTtiLnByb3RvdHlwZS5hZGRNb3VzZUV2ZW50cz1mdW5jdGlvbigpe3ZhciBmPXRoaXMsYj1mLmNoYXJ0LGE9Yi5jb250YWluZXIscD1bXSxnLHI7Zi5tb3VzZU1vdmVIYW5kbGVyPWc9ZnVuY3Rpb24oYil7Zi5vbk1vdXNlTW92ZShiKX07Zi5tb3VzZVVwSGFuZGxlcj1yPWZ1bmN0aW9uKGIpe2Yub25Nb3VzZVVwKGIpfTtwPWYuZ2V0UGFydHNFdmVudHMoIm1vdXNlZG93biIpO3AucHVzaCh2KGIucmVuZGVyVG8sIm1vdXNlbW92ZSIsZyksdihhLm93bmVyRG9jdW1lbnQsCiJtb3VzZXVwIixyKSk7ZCYmKHAucHVzaCh2KGIucmVuZGVyVG8sInRvdWNobW92ZSIsZyksdihhLm93bmVyRG9jdW1lbnQsInRvdWNoZW5kIixyKSkscC5jb25jYXQoZi5nZXRQYXJ0c0V2ZW50cygidG91Y2hzdGFydCIpKSk7Zi5ldmVudHNUb1VuYmluZD1wO2Yuc2VyaWVzJiZmLnNlcmllc1swXSYmcC5wdXNoKHYoZi5zZXJpZXNbMF0ueEF4aXMsImZvdW5kRXh0cmVtZXMiLGZ1bmN0aW9uKCl7Yi5uYXZpZ2F0b3IubW9kaWZ5TmF2aWdhdG9yQXhpc0V4dHJlbWVzKCl9KSl9O2IucHJvdG90eXBlLmdldFBhcnRzRXZlbnRzPWZ1bmN0aW9uKGYpe3ZhciBiPXRoaXMsYT1bXTtbInNoYWRlcyIsImhhbmRsZXMiXS5mb3JFYWNoKGZ1bmN0aW9uKHkpe2JbeV0uZm9yRWFjaChmdW5jdGlvbihkLHApe2EucHVzaCh2KGQuZWxlbWVudCxmLGZ1bmN0aW9uKGYpe2JbeSsiTW91c2Vkb3duIl0oZixwKX0pKX0pfSk7cmV0dXJuIGF9O2IucHJvdG90eXBlLnNoYWRlc01vdXNlZG93bj1mdW5jdGlvbihmLApiKXtmPXRoaXMuY2hhcnQucG9pbnRlci5ub3JtYWxpemUoZik7dmFyIHk9dGhpcy5jaGFydCxhPXRoaXMueEF4aXMsZD10aGlzLnpvb21lZE1pbixwPXRoaXMubGVmdCxnPXRoaXMuc2l6ZSxyPXRoaXMucmFuZ2Usaz1mLmNoYXJ0WDt5LmludmVydGVkJiYoaz1mLmNoYXJ0WSxwPXRoaXMudG9wKTtpZigxPT09Yil0aGlzLmdyYWJiZWRDZW50ZXI9ayx0aGlzLmZpeGVkV2lkdGg9cix0aGlzLmRyYWdPZmZzZXQ9ay1kO2Vsc2V7Zj1rLXAtci8yO2lmKDA9PT1iKWY9TWF0aC5tYXgoMCxmKTtlbHNlIGlmKDI9PT1iJiZmK3I+PWcpaWYoZj1nLXIsdGhpcy5yZXZlcnNlZEV4dHJlbWVzKXtmLT1yO3ZhciB3PXRoaXMuZ2V0VW5pb25FeHRyZW1lcygpLmRhdGFNaW59ZWxzZSB2YXIgaD10aGlzLmdldFVuaW9uRXh0cmVtZXMoKS5kYXRhTWF4O2YhPT1kJiYodGhpcy5maXhlZFdpZHRoPXIsYj1hLm5hdmlnYXRvckF4aXMudG9GaXhlZFJhbmdlKGYsZityLHcsaCksQyhiLm1pbikmJnkueEF4aXNbMF0uc2V0RXh0cmVtZXMoTWF0aC5taW4oYi5taW4sCmIubWF4KSxNYXRoLm1heChiLm1pbixiLm1heCksITAsbnVsbCx7dHJpZ2dlcjoibmF2aWdhdG9yIn0pKX19O2IucHJvdG90eXBlLmhhbmRsZXNNb3VzZWRvd249ZnVuY3Rpb24oZixiKXt0aGlzLmNoYXJ0LnBvaW50ZXIubm9ybWFsaXplKGYpO2Y9dGhpcy5jaGFydDt2YXIgeT1mLnhBeGlzWzBdLGE9dGhpcy5yZXZlcnNlZEV4dHJlbWVzOzA9PT1iPyh0aGlzLmdyYWJiZWRMZWZ0PSEwLHRoaXMub3RoZXJIYW5kbGVQb3M9dGhpcy56b29tZWRNYXgsdGhpcy5maXhlZEV4dHJlbWU9YT95Lm1pbjp5Lm1heCk6KHRoaXMuZ3JhYmJlZFJpZ2h0PSEwLHRoaXMub3RoZXJIYW5kbGVQb3M9dGhpcy56b29tZWRNaW4sdGhpcy5maXhlZEV4dHJlbWU9YT95Lm1heDp5Lm1pbik7Zi5maXhlZFJhbmdlPW51bGx9O2IucHJvdG90eXBlLm9uTW91c2VNb3ZlPWZ1bmN0aW9uKGYpe3ZhciBiPXRoaXMsYT1iLmNoYXJ0LGQ9Yi5sZWZ0LGc9Yi5uYXZpZ2F0b3JTaXplLHI9Yi5yYW5nZSxrPWIuZHJhZ09mZnNldCwKdz1hLmludmVydGVkO2YudG91Y2hlcyYmMD09PWYudG91Y2hlc1swXS5wYWdlWHx8KGY9YS5wb2ludGVyLm5vcm1hbGl6ZShmKSxhPWYuY2hhcnRYLHcmJihkPWIudG9wLGE9Zi5jaGFydFkpLGIuZ3JhYmJlZExlZnQ/KGIuaGFzRHJhZ2dlZD0hMCxiLnJlbmRlcigwLDAsYS1kLGIub3RoZXJIYW5kbGVQb3MpKTpiLmdyYWJiZWRSaWdodD8oYi5oYXNEcmFnZ2VkPSEwLGIucmVuZGVyKDAsMCxiLm90aGVySGFuZGxlUG9zLGEtZCkpOmIuZ3JhYmJlZENlbnRlciYmKGIuaGFzRHJhZ2dlZD0hMCxhPGs/YT1rOmE+ZytrLXImJihhPWcray1yKSxiLnJlbmRlcigwLDAsYS1rLGEtaytyKSksYi5oYXNEcmFnZ2VkJiZiLnNjcm9sbGJhciYmRChiLnNjcm9sbGJhci5vcHRpb25zLmxpdmVSZWRyYXcsdC5zdmcmJiFwJiYhdGhpcy5jaGFydC5pc0Jvb3N0aW5nKSYmKGYuRE9NVHlwZT1mLnR5cGUsc2V0VGltZW91dChmdW5jdGlvbigpe2Iub25Nb3VzZVVwKGYpfSwwKSkpfTtiLnByb3RvdHlwZS5vbk1vdXNlVXA9CmZ1bmN0aW9uKGYpe3ZhciBiPXRoaXMuY2hhcnQsYT10aGlzLnhBeGlzLGQ9dGhpcy5zY3JvbGxiYXIscD1mLkRPTUV2ZW50fHxmLGc9Yi5pbnZlcnRlZCxyPXRoaXMucmVuZGVyZWQmJiF0aGlzLmhhc0RyYWdnZWQ/ImFuaW1hdGUiOiJhdHRyIixrPU1hdGgucm91bmQodGhpcy56b29tZWRNYXgpLHc9TWF0aC5yb3VuZCh0aGlzLnpvb21lZE1pbik7aWYodGhpcy5oYXNEcmFnZ2VkJiYoIWR8fCFkLmhhc0RyYWdnZWQpfHwic2Nyb2xsYmFyIj09PWYudHJpZ2dlcil7ZD10aGlzLmdldFVuaW9uRXh0cmVtZXMoKTtpZih0aGlzLnpvb21lZE1pbj09PXRoaXMub3RoZXJIYW5kbGVQb3MpdmFyIGg9dGhpcy5maXhlZEV4dHJlbWU7ZWxzZSBpZih0aGlzLnpvb21lZE1heD09PXRoaXMub3RoZXJIYW5kbGVQb3MpdmFyIGM9dGhpcy5maXhlZEV4dHJlbWU7dGhpcy56b29tZWRNYXg9PT10aGlzLnNpemUmJihjPXRoaXMucmV2ZXJzZWRFeHRyZW1lcz9kLmRhdGFNaW46ZC5kYXRhTWF4KTswPT09dGhpcy56b29tZWRNaW4mJgooaD10aGlzLnJldmVyc2VkRXh0cmVtZXM/ZC5kYXRhTWF4OmQuZGF0YU1pbik7YT1hLm5hdmlnYXRvckF4aXMudG9GaXhlZFJhbmdlKHRoaXMuem9vbWVkTWluLHRoaXMuem9vbWVkTWF4LGgsYyk7QyhhLm1pbikmJmIueEF4aXNbMF0uc2V0RXh0cmVtZXMoTWF0aC5taW4oYS5taW4sYS5tYXgpLE1hdGgubWF4KGEubWluLGEubWF4KSwhMCx0aGlzLmhhc0RyYWdnZWQ/ITE6bnVsbCx7dHJpZ2dlcjoibmF2aWdhdG9yIix0cmlnZ2VyT3A6Im5hdmlnYXRvci1kcmFnIixET01FdmVudDpwfSl9Im1vdXNlbW92ZSIhPT1mLkRPTVR5cGUmJiJ0b3VjaG1vdmUiIT09Zi5ET01UeXBlJiYodGhpcy5ncmFiYmVkTGVmdD10aGlzLmdyYWJiZWRSaWdodD10aGlzLmdyYWJiZWRDZW50ZXI9dGhpcy5maXhlZFdpZHRoPXRoaXMuZml4ZWRFeHRyZW1lPXRoaXMub3RoZXJIYW5kbGVQb3M9dGhpcy5oYXNEcmFnZ2VkPXRoaXMuZHJhZ09mZnNldD1udWxsKTt0aGlzLm5hdmlnYXRvckVuYWJsZWQmJih0aGlzLnNoYWRlcyYmCnRoaXMuZHJhd01hc2tzKHcsayxnLHIpLHRoaXMub3V0bGluZSYmdGhpcy5kcmF3T3V0bGluZSh3LGssZyxyKSx0aGlzLm5hdmlnYXRvck9wdGlvbnMuaGFuZGxlcy5lbmFibGVkJiZPYmplY3Qua2V5cyh0aGlzLmhhbmRsZXMpLmxlbmd0aD09PXRoaXMuaGFuZGxlcy5sZW5ndGgmJih0aGlzLmRyYXdIYW5kbGUodywwLGcsciksdGhpcy5kcmF3SGFuZGxlKGssMSxnLHIpKSl9O2IucHJvdG90eXBlLnJlbW92ZUV2ZW50cz1mdW5jdGlvbigpe3RoaXMuZXZlbnRzVG9VbmJpbmQmJih0aGlzLmV2ZW50c1RvVW5iaW5kLmZvckVhY2goZnVuY3Rpb24oZil7ZigpfSksdGhpcy5ldmVudHNUb1VuYmluZD12b2lkIDApO3RoaXMucmVtb3ZlQmFzZVNlcmllc0V2ZW50cygpfTtiLnByb3RvdHlwZS5yZW1vdmVCYXNlU2VyaWVzRXZlbnRzPWZ1bmN0aW9uKCl7dmFyIGY9dGhpcy5iYXNlU2VyaWVzfHxbXTt0aGlzLm5hdmlnYXRvckVuYWJsZWQmJmZbMF0mJighMSE9PXRoaXMubmF2aWdhdG9yT3B0aW9ucy5hZGFwdFRvVXBkYXRlZERhdGEmJgpmLmZvckVhY2goZnVuY3Rpb24oZil7bShmLCJ1cGRhdGVkRGF0YSIsdGhpcy51cGRhdGVkRGF0YUhhbmRsZXIpfSx0aGlzKSxmWzBdLnhBeGlzJiZtKGZbMF0ueEF4aXMsImZvdW5kRXh0cmVtZXMiLHRoaXMubW9kaWZ5QmFzZUF4aXNFeHRyZW1lcykpfTtiLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGYpe3ZhciBiPWYub3B0aW9ucyxhPWIubmF2aWdhdG9yLGQ9YS5lbmFibGVkLHA9Yi5zY3JvbGxiYXIsZz1wLmVuYWJsZWQ7Yj1kP2EuaGVpZ2h0OjA7dmFyIGs9Zz9wLmhlaWdodDowO3RoaXMuaGFuZGxlcz1bXTt0aGlzLnNoYWRlcz1bXTt0aGlzLmNoYXJ0PWY7dGhpcy5zZXRCYXNlU2VyaWVzKCk7dGhpcy5oZWlnaHQ9Yjt0aGlzLnNjcm9sbGJhckhlaWdodD1rO3RoaXMuc2Nyb2xsYmFyRW5hYmxlZD1nO3RoaXMubmF2aWdhdG9yRW5hYmxlZD1kO3RoaXMubmF2aWdhdG9yT3B0aW9ucz1hO3RoaXMuc2Nyb2xsYmFyT3B0aW9ucz1wO3RoaXMub3V0bGluZUhlaWdodD1iK2s7dGhpcy5vcHBvc2l0ZT0KRChhLm9wcG9zaXRlLCEoZHx8IWYuaW52ZXJ0ZWQpKTt2YXIgdz10aGlzO2Q9dy5iYXNlU2VyaWVzO3A9Zi54QXhpcy5sZW5ndGg7Zz1mLnlBeGlzLmxlbmd0aDt2YXIgaD1kJiZkWzBdJiZkWzBdLnhBeGlzfHxmLnhBeGlzWzBdfHx7b3B0aW9uczp7fX07Zi5pc0RpcnR5Qm94PSEwO3cubmF2aWdhdG9yRW5hYmxlZD8ody54QXhpcz1uZXcgbChmLEkoe2JyZWFrczpoLm9wdGlvbnMuYnJlYWtzLG9yZGluYWw6aC5vcHRpb25zLm9yZGluYWx9LGEueEF4aXMse2lkOiJuYXZpZ2F0b3IteC1heGlzIix5QXhpczoibmF2aWdhdG9yLXktYXhpcyIsaXNYOiEwLHR5cGU6ImRhdGV0aW1lIixpbmRleDpwLGlzSW50ZXJuYWw6ITAsb2Zmc2V0OjAsa2VlcE9yZGluYWxQYWRkaW5nOiEwLHN0YXJ0T25UaWNrOiExLGVuZE9uVGljazohMSxtaW5QYWRkaW5nOjAsbWF4UGFkZGluZzowLHpvb21FbmFibGVkOiExfSxmLmludmVydGVkP3tvZmZzZXRzOltrLDAsLWssMF0sd2lkdGg6Yn06e29mZnNldHM6WzAsCi1rLDAsa10saGVpZ2h0OmJ9KSksdy55QXhpcz1uZXcgbChmLEkoYS55QXhpcyx7aWQ6Im5hdmlnYXRvci15LWF4aXMiLGFsaWduVGlja3M6ITEsb2Zmc2V0OjAsaW5kZXg6Zyxpc0ludGVybmFsOiEwLHpvb21FbmFibGVkOiExfSxmLmludmVydGVkP3t3aWR0aDpifTp7aGVpZ2h0OmJ9KSksZHx8YS5zZXJpZXMuZGF0YT93LnVwZGF0ZU5hdmlnYXRvclNlcmllcyghMSk6MD09PWYuc2VyaWVzLmxlbmd0aCYmKHcudW5iaW5kUmVkcmF3PXYoZiwiYmVmb3JlUmVkcmF3IixmdW5jdGlvbigpezA8Zi5zZXJpZXMubGVuZ3RoJiYhdy5zZXJpZXMmJih3LnNldEJhc2VTZXJpZXMoKSx3LnVuYmluZFJlZHJhdygpKX0pKSx3LnJldmVyc2VkRXh0cmVtZXM9Zi5pbnZlcnRlZCYmIXcueEF4aXMucmV2ZXJzZWR8fCFmLmludmVydGVkJiZ3LnhBeGlzLnJldmVyc2VkLHcucmVuZGVyRWxlbWVudHMoKSx3LmFkZE1vdXNlRXZlbnRzKCkpOih3LnhBeGlzPXtjaGFydDpmLG5hdmlnYXRvckF4aXM6e2Zha2U6ITB9LAp0cmFuc2xhdGU6ZnVuY3Rpb24oYixhKXt2YXIgeT1mLnhBeGlzWzBdLGQ9eS5nZXRFeHRyZW1lcygpLHA9eS5sZW4tMiprLGc9cigibWluIix5Lm9wdGlvbnMubWluLGQuZGF0YU1pbik7eT1yKCJtYXgiLHkub3B0aW9ucy5tYXgsZC5kYXRhTWF4KS1nO3JldHVybiBhP2IqeS9wK2c6cCooYi1nKS95fSx0b1BpeGVsczpmdW5jdGlvbihmKXtyZXR1cm4gdGhpcy50cmFuc2xhdGUoZil9LHRvVmFsdWU6ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMudHJhbnNsYXRlKGYsITApfX0sdy54QXhpcy5uYXZpZ2F0b3JBeGlzLmF4aXM9dy54QXhpcyx3LnhBeGlzLm5hdmlnYXRvckF4aXMudG9GaXhlZFJhbmdlPUUuQWRkaXRpb25zQ2xhc3MucHJvdG90eXBlLnRvRml4ZWRSYW5nZS5iaW5kKHcueEF4aXMubmF2aWdhdG9yQXhpcykpO2Yub3B0aW9ucy5zY3JvbGxiYXIuZW5hYmxlZCYmKGYuc2Nyb2xsYmFyPXcuc2Nyb2xsYmFyPW5ldyB4KGYucmVuZGVyZXIsSShmLm9wdGlvbnMuc2Nyb2xsYmFyLHttYXJnaW46dy5uYXZpZ2F0b3JFbmFibGVkPwowOjEwLHZlcnRpY2FsOmYuaW52ZXJ0ZWR9KSxmKSx2KHcuc2Nyb2xsYmFyLCJjaGFuZ2VkIixmdW5jdGlvbihiKXt2YXIgYT13LnNpemUseT1hKnRoaXMudG87YSo9dGhpcy5mcm9tO3cuaGFzRHJhZ2dlZD13LnNjcm9sbGJhci5oYXNEcmFnZ2VkO3cucmVuZGVyKDAsMCxhLHkpOyhmLm9wdGlvbnMuc2Nyb2xsYmFyLmxpdmVSZWRyYXd8fCJtb3VzZW1vdmUiIT09Yi5ET01UeXBlJiYidG91Y2htb3ZlIiE9PWIuRE9NVHlwZSkmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXt3Lm9uTW91c2VVcChiKX0pfSkpO3cuYWRkQmFzZVNlcmllc0V2ZW50cygpO3cuYWRkQ2hhcnRFdmVudHMoKX07Yi5wcm90b3R5cGUuZ2V0VW5pb25FeHRyZW1lcz1mdW5jdGlvbihmKXt2YXIgYj10aGlzLmNoYXJ0LnhBeGlzWzBdLGE9dGhpcy54QXhpcyxkPWEub3B0aW9ucyxwPWIub3B0aW9ucyxnO2YmJm51bGw9PT1iLmRhdGFNaW58fChnPXtkYXRhTWluOkQoZCYmZC5taW4scigibWluIixwLm1pbixiLmRhdGFNaW4sCmEuZGF0YU1pbixhLm1pbikpLGRhdGFNYXg6RChkJiZkLm1heCxyKCJtYXgiLHAubWF4LGIuZGF0YU1heCxhLmRhdGFNYXgsYS5tYXgpKX0pO3JldHVybiBnfTtiLnByb3RvdHlwZS5zZXRCYXNlU2VyaWVzPWZ1bmN0aW9uKGYsYil7dmFyIGQ9dGhpcy5jaGFydCx5PXRoaXMuYmFzZVNlcmllcz1bXTtmPWZ8fGQub3B0aW9ucyYmZC5vcHRpb25zLm5hdmlnYXRvci5iYXNlU2VyaWVzfHwoZC5zZXJpZXMubGVuZ3RoP2EoZC5zZXJpZXMsZnVuY3Rpb24oZil7cmV0dXJuIWYub3B0aW9ucy5pc0ludGVybmFsfSkuaW5kZXg6MCk7KGQuc2VyaWVzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihiLGEpe2Iub3B0aW9ucy5pc0ludGVybmFsfHwhYi5vcHRpb25zLnNob3dJbk5hdmlnYXRvciYmKGEhPT1mJiZiLm9wdGlvbnMuaWQhPT1mfHwhMT09PWIub3B0aW9ucy5zaG93SW5OYXZpZ2F0b3IpfHx5LnB1c2goYil9KTt0aGlzLnhBeGlzJiYhdGhpcy54QXhpcy5uYXZpZ2F0b3JBeGlzLmZha2UmJnRoaXMudXBkYXRlTmF2aWdhdG9yU2VyaWVzKCEwLApiKX07Yi5wcm90b3R5cGUudXBkYXRlTmF2aWdhdG9yU2VyaWVzPWZ1bmN0aW9uKGIsYSl7dmFyIGY9dGhpcyxkPWYuY2hhcnQseT1mLmJhc2VTZXJpZXMscCxnLHI9Zi5uYXZpZ2F0b3JPcHRpb25zLnNlcmllcyx3LGU9e2VuYWJsZU1vdXNlVHJhY2tpbmc6ITEsaW5kZXg6bnVsbCxsaW5rZWRUbzpudWxsLGdyb3VwOiJuYXYiLHBhZFhBeGlzOiExLHhBeGlzOiJuYXZpZ2F0b3IteC1heGlzIix5QXhpczoibmF2aWdhdG9yLXktYXhpcyIsc2hvd0luTGVnZW5kOiExLHN0YWNraW5nOnZvaWQgMCxpc0ludGVybmFsOiEwLHN0YXRlczp7aW5hY3RpdmU6e29wYWNpdHk6MX19fSx6PWYuc2VyaWVzPShmLnNlcmllc3x8W10pLmZpbHRlcihmdW5jdGlvbihiKXt2YXIgYT1iLmJhc2VTZXJpZXM7cmV0dXJuIDA+eS5pbmRleE9mKGEpPyhhJiYobShhLCJ1cGRhdGVkRGF0YSIsZi51cGRhdGVkRGF0YUhhbmRsZXIpLGRlbGV0ZSBhLm5hdmlnYXRvclNlcmllcyksYi5jaGFydCYmYi5kZXN0cm95KCksCiExKTohMH0pO3kmJnkubGVuZ3RoJiZ5LmZvckVhY2goZnVuY3Rpb24oYil7dmFyIGs9Yi5uYXZpZ2F0b3JTZXJpZXMsbT1uKHtjb2xvcjpiLmNvbG9yLHZpc2libGU6Yi52aXNpYmxlfSxoKHIpP2MubmF2aWdhdG9yLnNlcmllczpyKTtrJiYhMT09PWYubmF2aWdhdG9yT3B0aW9ucy5hZGFwdFRvVXBkYXRlZERhdGF8fChlLm5hbWU9Ik5hdmlnYXRvciAiK3kubGVuZ3RoLHA9Yi5vcHRpb25zfHx7fSx3PXAubmF2aWdhdG9yT3B0aW9uc3x8e30sZz1JKHAsZSxtLHcpLGcucG9pbnRSYW5nZT1EKG0ucG9pbnRSYW5nZSx3LnBvaW50UmFuZ2UsYy5wbG90T3B0aW9uc1tnLnR5cGV8fCJsaW5lIl0ucG9pbnRSYW5nZSksbT13LmRhdGF8fG0uZGF0YSxmLmhhc05hdmlnYXRvckRhdGE9Zi5oYXNOYXZpZ2F0b3JEYXRhfHwhIW0sZy5kYXRhPW18fHAuZGF0YSYmcC5kYXRhLnNsaWNlKDApLGsmJmsub3B0aW9ucz9rLnVwZGF0ZShnLGEpOihiLm5hdmlnYXRvclNlcmllcz1kLmluaXRTZXJpZXMoZyksCmIubmF2aWdhdG9yU2VyaWVzLmJhc2VTZXJpZXM9Yix6LnB1c2goYi5uYXZpZ2F0b3JTZXJpZXMpKSl9KTtpZihyLmRhdGEmJigheXx8IXkubGVuZ3RoKXx8aChyKSlmLmhhc05hdmlnYXRvckRhdGE9ITEscj1rKHIpLHIuZm9yRWFjaChmdW5jdGlvbihiLGEpe2UubmFtZT0iTmF2aWdhdG9yICIrKHoubGVuZ3RoKzEpO2c9SShjLm5hdmlnYXRvci5zZXJpZXMse2NvbG9yOmQuc2VyaWVzW2FdJiYhZC5zZXJpZXNbYV0ub3B0aW9ucy5pc0ludGVybmFsJiZkLnNlcmllc1thXS5jb2xvcnx8ZC5vcHRpb25zLmNvbG9yc1thXXx8ZC5vcHRpb25zLmNvbG9yc1swXX0sZSxiKTtnLmRhdGE9Yi5kYXRhO2cuZGF0YSYmKGYuaGFzTmF2aWdhdG9yRGF0YT0hMCx6LnB1c2goZC5pbml0U2VyaWVzKGcpKSl9KTtiJiZ0aGlzLmFkZEJhc2VTZXJpZXNFdmVudHMoKX07Yi5wcm90b3R5cGUuYWRkQmFzZVNlcmllc0V2ZW50cz1mdW5jdGlvbigpe3ZhciBiPXRoaXMsYT1iLmJhc2VTZXJpZXN8fFtdO2FbMF0mJgphWzBdLnhBeGlzJiZ2KGFbMF0ueEF4aXMsImZvdW5kRXh0cmVtZXMiLHRoaXMubW9kaWZ5QmFzZUF4aXNFeHRyZW1lcyk7YS5mb3JFYWNoKGZ1bmN0aW9uKGYpe3YoZiwic2hvdyIsZnVuY3Rpb24oKXt0aGlzLm5hdmlnYXRvclNlcmllcyYmdGhpcy5uYXZpZ2F0b3JTZXJpZXMuc2V0VmlzaWJsZSghMCwhMSl9KTt2KGYsImhpZGUiLGZ1bmN0aW9uKCl7dGhpcy5uYXZpZ2F0b3JTZXJpZXMmJnRoaXMubmF2aWdhdG9yU2VyaWVzLnNldFZpc2libGUoITEsITEpfSk7ITEhPT10aGlzLm5hdmlnYXRvck9wdGlvbnMuYWRhcHRUb1VwZGF0ZWREYXRhJiZmLnhBeGlzJiZ2KGYsInVwZGF0ZWREYXRhIix0aGlzLnVwZGF0ZWREYXRhSGFuZGxlcik7dihmLCJyZW1vdmUiLGZ1bmN0aW9uKCl7dGhpcy5uYXZpZ2F0b3JTZXJpZXMmJihBKGIuc2VyaWVzLHRoaXMubmF2aWdhdG9yU2VyaWVzKSxDKHRoaXMubmF2aWdhdG9yU2VyaWVzLm9wdGlvbnMpJiZ0aGlzLm5hdmlnYXRvclNlcmllcy5yZW1vdmUoITEpLApkZWxldGUgdGhpcy5uYXZpZ2F0b3JTZXJpZXMpfSl9LHRoaXMpfTtiLnByb3RvdHlwZS5nZXRCYXNlU2VyaWVzTWluPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmJhc2VTZXJpZXMucmVkdWNlKGZ1bmN0aW9uKGIsZil7cmV0dXJuIE1hdGgubWluKGIsZi54RGF0YT9mLnhEYXRhWzBdOmIpfSxiKX07Yi5wcm90b3R5cGUubW9kaWZ5TmF2aWdhdG9yQXhpc0V4dHJlbWVzPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy54QXhpcyxhOyJ1bmRlZmluZWQiIT09dHlwZW9mIGIuZ2V0RXh0cmVtZXMmJighKGE9dGhpcy5nZXRVbmlvbkV4dHJlbWVzKCEwKSl8fGEuZGF0YU1pbj09PWIubWluJiZhLmRhdGFNYXg9PT1iLm1heHx8KGIubWluPWEuZGF0YU1pbixiLm1heD1hLmRhdGFNYXgpKX07Yi5wcm90b3R5cGUubW9kaWZ5QmFzZUF4aXNFeHRyZW1lcz1mdW5jdGlvbigpe3ZhciBiPXRoaXMuY2hhcnQubmF2aWdhdG9yLGE9dGhpcy5nZXRFeHRyZW1lcygpLGQ9YS5kYXRhTWluLHA9YS5kYXRhTWF4O2E9CmEubWF4LWEubWluO3ZhciByPWIuc3RpY2tUb01pbix3PWIuc3RpY2tUb01heCxrPUQodGhpcy5vcHRpb25zLm92ZXJzY3JvbGwsMCksaD1iLnNlcmllcyYmYi5zZXJpZXNbMF0sYz0hIXRoaXMuc2V0RXh0cmVtZXM7aWYoIXRoaXMuZXZlbnRBcmdzfHwicmFuZ2VTZWxlY3RvckJ1dHRvbiIhPT10aGlzLmV2ZW50QXJncy50cmlnZ2VyKXtpZihyKXt2YXIgbT1kO3ZhciBuPW0rYX13JiYobj1wK2sscnx8KG09TWF0aC5tYXgoZCxuLWEsYi5nZXRCYXNlU2VyaWVzTWluKGgmJmgueERhdGE/aC54RGF0YVswXTotTnVtYmVyLk1BWF9WQUxVRSkpKSk7YyYmKHJ8fHcpJiZnKG0pJiYodGhpcy5taW49dGhpcy51c2VyTWluPW0sdGhpcy5tYXg9dGhpcy51c2VyTWF4PW4pfWIuc3RpY2tUb01pbj1iLnN0aWNrVG9NYXg9bnVsbH07Yi5wcm90b3R5cGUudXBkYXRlZERhdGFIYW5kbGVyPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5jaGFydC5uYXZpZ2F0b3IsYT10aGlzLm5hdmlnYXRvclNlcmllcyxkPQpiLmdldEJhc2VTZXJpZXNNaW4odGhpcy54RGF0YVswXSk7Yi5zdGlja1RvTWF4PWIucmV2ZXJzZWRFeHRyZW1lcz8wPT09TWF0aC5yb3VuZChiLnpvb21lZE1pbik6TWF0aC5yb3VuZChiLnpvb21lZE1heCk+PU1hdGgucm91bmQoYi5zaXplKTtiLnN0aWNrVG9NaW49Zyh0aGlzLnhBeGlzLm1pbikmJnRoaXMueEF4aXMubWluPD1kJiYoIXRoaXMuY2hhcnQuZml4ZWRSYW5nZXx8IWIuc3RpY2tUb01heCk7YSYmIWIuaGFzTmF2aWdhdG9yRGF0YSYmKGEub3B0aW9ucy5wb2ludFN0YXJ0PXRoaXMueERhdGFbMF0sYS5zZXREYXRhKHRoaXMub3B0aW9ucy5kYXRhLCExLG51bGwsITEpKX07Yi5wcm90b3R5cGUuYWRkQ2hhcnRFdmVudHM9ZnVuY3Rpb24oKXt0aGlzLmV2ZW50c1RvVW5iaW5kfHwodGhpcy5ldmVudHNUb1VuYmluZD1bXSk7dGhpcy5ldmVudHNUb1VuYmluZC5wdXNoKHYodGhpcy5jaGFydCwicmVkcmF3IixmdW5jdGlvbigpe3ZhciBiPXRoaXMubmF2aWdhdG9yLGE9YiYmKGIuYmFzZVNlcmllcyYmCmIuYmFzZVNlcmllc1swXSYmYi5iYXNlU2VyaWVzWzBdLnhBeGlzfHx0aGlzLnhBeGlzWzBdKTthJiZiLnJlbmRlcihhLm1pbixhLm1heCl9KSx2KHRoaXMuY2hhcnQsImdldE1hcmdpbnMiLGZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5uYXZpZ2F0b3IsYT1iLm9wcG9zaXRlPyJwbG90VG9wIjoibWFyZ2luQm90dG9tIjt0aGlzLmludmVydGVkJiYoYT1iLm9wcG9zaXRlPyJtYXJnaW5SaWdodCI6InBsb3RMZWZ0Iik7dGhpc1thXT0odGhpc1thXXx8MCkrKGIubmF2aWdhdG9yRW5hYmxlZHx8IXRoaXMuaW52ZXJ0ZWQ/Yi5vdXRsaW5lSGVpZ2h0OjApK2IubmF2aWdhdG9yT3B0aW9ucy5tYXJnaW59KSl9O2IucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUV2ZW50cygpO3RoaXMueEF4aXMmJihBKHRoaXMuY2hhcnQueEF4aXMsdGhpcy54QXhpcyksQSh0aGlzLmNoYXJ0LmF4ZXMsdGhpcy54QXhpcykpO3RoaXMueUF4aXMmJihBKHRoaXMuY2hhcnQueUF4aXMsdGhpcy55QXhpcyksCkEodGhpcy5jaGFydC5heGVzLHRoaXMueUF4aXMpKTsodGhpcy5zZXJpZXN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuZGVzdHJveSYmYi5kZXN0cm95KCl9KTsic2VyaWVzIHhBeGlzIHlBeGlzIHNoYWRlcyBvdXRsaW5lIHNjcm9sbGJhclRyYWNrIHNjcm9sbGJhclJpZmxlcyBzY3JvbGxiYXJHcm91cCBzY3JvbGxiYXIgbmF2aWdhdG9yR3JvdXAgcmVuZGVyZWQiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihiKXt0aGlzW2JdJiZ0aGlzW2JdLmRlc3Ryb3kmJnRoaXNbYl0uZGVzdHJveSgpO3RoaXNbYl09bnVsbH0sdGhpcyk7W3RoaXMuaGFuZGxlc10uZm9yRWFjaChmdW5jdGlvbihiKXt6KGIpfSx0aGlzKX07cmV0dXJuIGJ9KCk7dC5OYXZpZ2F0b3J8fCh0Lk5hdmlnYXRvcj13LEUuY29tcG9zZShsKSx2KHUsImJlZm9yZVNob3dSZXNldFpvb20iLGZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5vcHRpb25zLGY9Yi5uYXZpZ2F0b3IsYT1iLnJhbmdlU2VsZWN0b3I7aWYoKGYmJgpmLmVuYWJsZWR8fGEmJmEuZW5hYmxlZCkmJighcCYmIngiPT09Yi5jaGFydC56b29tVHlwZXx8cCYmIngiPT09Yi5jaGFydC5waW5jaFR5cGUpKXJldHVybiExfSksdih1LCJiZWZvcmVSZW5kZXIiLGZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5vcHRpb25zO2lmKGIubmF2aWdhdG9yLmVuYWJsZWR8fGIuc2Nyb2xsYmFyLmVuYWJsZWQpdGhpcy5zY3JvbGxlcj10aGlzLm5hdmlnYXRvcj1uZXcgdyh0aGlzKX0pLHYodSwiYWZ0ZXJTZXRDaGFydFNpemUiLGZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5sZWdlbmQsZj10aGlzLm5hdmlnYXRvcjtpZihmKXt2YXIgYT1iJiZiLm9wdGlvbnM7dmFyIGQ9Zi54QXhpczt2YXIgcD1mLnlBeGlzO3ZhciBnPWYuc2Nyb2xsYmFySGVpZ2h0O3RoaXMuaW52ZXJ0ZWQ/KGYubGVmdD1mLm9wcG9zaXRlP3RoaXMuY2hhcnRXaWR0aC1nLWYuaGVpZ2h0OnRoaXMuc3BhY2luZ1szXStnLGYudG9wPXRoaXMucGxvdFRvcCtnKTooZi5sZWZ0PXRoaXMucGxvdExlZnQrZywKZi50b3A9Zi5uYXZpZ2F0b3JPcHRpb25zLnRvcHx8dGhpcy5jaGFydEhlaWdodC1mLmhlaWdodC1nLXRoaXMuc3BhY2luZ1syXS0odGhpcy5yYW5nZVNlbGVjdG9yJiZ0aGlzLmV4dHJhQm90dG9tTWFyZ2luP3RoaXMucmFuZ2VTZWxlY3Rvci5nZXRIZWlnaHQoKTowKS0oYSYmImJvdHRvbSI9PT1hLnZlcnRpY2FsQWxpZ24mJiJwcm94aW1hdGUiIT09YS5sYXlvdXQmJmEuZW5hYmxlZCYmIWEuZmxvYXRpbmc/Yi5sZWdlbmRIZWlnaHQrRChhLm1hcmdpbiwxMCk6MCktKHRoaXMudGl0bGVPZmZzZXQ/dGhpcy50aXRsZU9mZnNldFsyXTowKSk7ZCYmcCYmKHRoaXMuaW52ZXJ0ZWQ/ZC5vcHRpb25zLmxlZnQ9cC5vcHRpb25zLmxlZnQ9Zi5sZWZ0OmQub3B0aW9ucy50b3A9cC5vcHRpb25zLnRvcD1mLnRvcCxkLnNldEF4aXNTaXplKCkscC5zZXRBeGlzU2l6ZSgpKX19KSx2KHUsInVwZGF0ZSIsZnVuY3Rpb24oYil7dmFyIGY9Yi5vcHRpb25zLm5hdmlnYXRvcnx8e30sYT1iLm9wdGlvbnMuc2Nyb2xsYmFyfHwKe307dGhpcy5uYXZpZ2F0b3J8fHRoaXMuc2Nyb2xsZXJ8fCFmLmVuYWJsZWQmJiFhLmVuYWJsZWR8fChJKCEwLHRoaXMub3B0aW9ucy5uYXZpZ2F0b3IsZiksSSghMCx0aGlzLm9wdGlvbnMuc2Nyb2xsYmFyLGEpLGRlbGV0ZSBiLm9wdGlvbnMubmF2aWdhdG9yLGRlbGV0ZSBiLm9wdGlvbnMuc2Nyb2xsYmFyKX0pLHYodSwiYWZ0ZXJVcGRhdGUiLGZ1bmN0aW9uKGIpe3RoaXMubmF2aWdhdG9yfHx0aGlzLnNjcm9sbGVyfHwhdGhpcy5vcHRpb25zLm5hdmlnYXRvci5lbmFibGVkJiYhdGhpcy5vcHRpb25zLnNjcm9sbGJhci5lbmFibGVkfHwodGhpcy5zY3JvbGxlcj10aGlzLm5hdmlnYXRvcj1uZXcgdyh0aGlzKSxEKGIucmVkcmF3LCEwKSYmdGhpcy5yZWRyYXcoYi5hbmltYXRpb24pKX0pLHYodSwiYWZ0ZXJBZGRTZXJpZXMiLGZ1bmN0aW9uKCl7dGhpcy5uYXZpZ2F0b3ImJnRoaXMubmF2aWdhdG9yLnNldEJhc2VTZXJpZXMobnVsbCwhMSl9KSx2KGUsImFmdGVyVXBkYXRlIixmdW5jdGlvbigpe3RoaXMuY2hhcnQubmF2aWdhdG9yJiYKIXRoaXMub3B0aW9ucy5pc0ludGVybmFsJiZ0aGlzLmNoYXJ0Lm5hdmlnYXRvci5zZXRCYXNlU2VyaWVzKG51bGwsITEpfSksdS5wcm90b3R5cGUuY2FsbGJhY2tzLnB1c2goZnVuY3Rpb24oYil7dmFyIGY9Yi5uYXZpZ2F0b3I7ZiYmYi54QXhpc1swXSYmKGI9Yi54QXhpc1swXS5nZXRFeHRyZW1lcygpLGYucmVuZGVyKGIubWluLGIubWF4KSl9KSk7dC5OYXZpZ2F0b3I9dztyZXR1cm4gdC5OYXZpZ2F0b3J9KTtLKGwsInBhcnRzL09yZGluYWxBeGlzLmpzIixbbFsicGFydHMvQXhpcy5qcyJdLGxbInBhcnRzL0dsb2JhbHMuanMiXSxsWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24obCx1LEIpe3ZhciB0PUIuYWRkRXZlbnQsRT1CLmNzcyxlPUIuZGVmaW5lZCx4PUIucGljayxxPUIudGltZVVuaXRzO0I9dS5DaGFydDt2YXIgYz11LlNlcmllcyx2OyhmdW5jdGlvbihjKXt2YXIgbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGMoYyl7dGhpcy5pbmRleD17fTt0aGlzLmF4aXM9Y31jLnByb3RvdHlwZS5iZWZvcmVTZXRUaWNrUG9zaXRpb25zPQpmdW5jdGlvbigpe3ZhciBjPXRoaXMuYXhpcyxlPWMub3JkaW5hbCxuPVtdLGEsaD0hMSxnPWMuZ2V0RXh0cmVtZXMoKSxxPWcubWluLEQ9Zy5tYXgsbSxrPWMuaXNYQXhpcyYmISFjLm9wdGlvbnMuYnJlYWtzO2c9Yy5vcHRpb25zLm9yZGluYWw7dmFyIGQ9TnVtYmVyLk1BWF9WQUxVRSxwPWMuY2hhcnQub3B0aW9ucy5jaGFydC5pZ25vcmVIaWRkZW5TZXJpZXMscjtpZihnfHxrKXtjLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGIsZyl7YT1bXTtpZighKHAmJiExPT09Yi52aXNpYmxlfHwhMT09PWIudGFrZU9yZGluYWxQb3NpdGlvbiYmIWspJiYobj1uLmNvbmNhdChiLnByb2Nlc3NlZFhEYXRhKSx3PW4ubGVuZ3RoLG4uc29ydChmdW5jdGlvbihiLGYpe3JldHVybiBiLWZ9KSxkPU1hdGgubWluKGQseChiLmNsb3Nlc3RQb2ludFJhbmdlLGQpKSx3KSl7Zm9yKGc9MDtnPHctMTspbltnXSE9PW5bZysxXSYmYS5wdXNoKG5bZysxXSksZysrO2FbMF0hPT1uWzBdJiZhLnVuc2hpZnQoblswXSk7Cm49YX1iLmlzU2VyaWVzQm9vc3RpbmcmJihyPSEwKX0pO3ImJihuLmxlbmd0aD0wKTt2YXIgdz1uLmxlbmd0aDtpZigyPHcpe3ZhciBiPW5bMV0tblswXTtmb3IobT13LTE7bS0tJiYhaDspblttKzFdLW5bbV0hPT1iJiYoaD0hMCk7IWMub3B0aW9ucy5rZWVwT3JkaW5hbFBhZGRpbmcmJihuWzBdLXE+Ynx8RC1uW24ubGVuZ3RoLTFdPmIpJiYoaD0hMCl9ZWxzZSBjLm9wdGlvbnMub3ZlcnNjcm9sbCYmKDI9PT13P2Q9blsxXS1uWzBdOjE9PT13PyhkPWMub3B0aW9ucy5vdmVyc2Nyb2xsLG49W25bMF0sblswXStkXSk6ZD1lLm92ZXJzY3JvbGxQb2ludHNSYW5nZSk7aD8oYy5vcHRpb25zLm92ZXJzY3JvbGwmJihlLm92ZXJzY3JvbGxQb2ludHNSYW5nZT1kLG49bi5jb25jYXQoZS5nZXRPdmVyc2Nyb2xsUG9zaXRpb25zKCkpKSxlLnBvc2l0aW9ucz1uLGI9Yy5vcmRpbmFsMmxpbihNYXRoLm1heChxLG5bMF0pLCEwKSxtPU1hdGgubWF4KGMub3JkaW5hbDJsaW4oTWF0aC5taW4oRCxuW24ubGVuZ3RoLQoxXSksITApLDEpLGUuc2xvcGU9RD0oRC1xKS8obS1iKSxlLm9mZnNldD1xLWIqRCk6KGUub3ZlcnNjcm9sbFBvaW50c1JhbmdlPXgoYy5jbG9zZXN0UG9pbnRSYW5nZSxlLm92ZXJzY3JvbGxQb2ludHNSYW5nZSksZS5wb3NpdGlvbnM9Yy5vcmRpbmFsLnNsb3BlPWUub2Zmc2V0PXZvaWQgMCl9Yy5pc09yZGluYWw9ZyYmaDtlLmdyb3VwSW50ZXJ2YWxGYWN0b3I9bnVsbH07Yy5wcm90b3R5cGUuZ2V0RXh0ZW5kZWRQb3NpdGlvbnM9ZnVuY3Rpb24oKXt2YXIgYz10aGlzLGU9Yy5heGlzLG49ZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsYT1lLmNoYXJ0LGg9ZS5zZXJpZXNbMF0uY3VycmVudERhdGFHcm91cGluZyxnPWMuaW5kZXgscT1oP2guY291bnQraC51bml0TmFtZToicmF3IixEPWUub3B0aW9ucy5vdmVyc2Nyb2xsLG09ZS5nZXRFeHRyZW1lcygpLGs7Z3x8KGc9Yy5pbmRleD17fSk7aWYoIWdbcV0pe3ZhciBkPXtzZXJpZXM6W10sY2hhcnQ6YSxnZXRFeHRyZW1lczpmdW5jdGlvbigpe3JldHVybnttaW46bS5kYXRhTWluLAptYXg6bS5kYXRhTWF4K0R9fSxvcHRpb25zOntvcmRpbmFsOiEwfSxvcmRpbmFsOnt9LG9yZGluYWwybGluOm4ub3JkaW5hbDJsaW4sdmFsMmxpbjpuLnZhbDJsaW59O2Qub3JkaW5hbC5heGlzPWQ7ZS5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihnKXtrPXt4QXhpczpkLHhEYXRhOmcueERhdGEuc2xpY2UoKSxjaGFydDphLGRlc3Ryb3lHcm91cGVkRGF0YTp1Lm5vb3AsZ2V0UHJvY2Vzc2VkRGF0YTp1LlNlcmllcy5wcm90b3R5cGUuZ2V0UHJvY2Vzc2VkRGF0YX07ay54RGF0YT1rLnhEYXRhLmNvbmNhdChjLmdldE92ZXJzY3JvbGxQb3NpdGlvbnMoKSk7ay5vcHRpb25zPXtkYXRhR3JvdXBpbmc6aD97ZW5hYmxlZDohMCxmb3JjZWQ6ITAsYXBwcm94aW1hdGlvbjoib3BlbiIsdW5pdHM6W1toLnVuaXROYW1lLFtoLmNvdW50XV1dfTp7ZW5hYmxlZDohMX19O2cucHJvY2Vzc0RhdGEuYXBwbHkoayk7ZC5zZXJpZXMucHVzaChrKX0pO2Uub3JkaW5hbC5iZWZvcmVTZXRUaWNrUG9zaXRpb25zLmFwcGx5KHtheGlzOmR9KTsKZ1txXT1kLm9yZGluYWwucG9zaXRpb25zfXJldHVybiBnW3FdfTtjLnByb3RvdHlwZS5nZXRHcm91cEludGVydmFsRmFjdG9yPWZ1bmN0aW9uKGMsZSxuKXtuPW4ucHJvY2Vzc2VkWERhdGE7dmFyIGE9bi5sZW5ndGgsaD1bXTt2YXIgZz10aGlzLmdyb3VwSW50ZXJ2YWxGYWN0b3I7aWYoIWcpe2ZvcihnPTA7ZzxhLTE7ZysrKWhbZ109bltnKzFdLW5bZ107aC5zb3J0KGZ1bmN0aW9uKGEsZyl7cmV0dXJuIGEtZ30pO2g9aFtNYXRoLmZsb29yKGEvMildO2M9TWF0aC5tYXgoYyxuWzBdKTtlPU1hdGgubWluKGUsblthLTFdKTt0aGlzLmdyb3VwSW50ZXJ2YWxGYWN0b3I9Zz1hKmgvKGUtYyl9cmV0dXJuIGd9O2MucHJvdG90eXBlLmdldE92ZXJzY3JvbGxQb3NpdGlvbnM9ZnVuY3Rpb24oKXt2YXIgYz10aGlzLmF4aXMscT1jLm9wdGlvbnMub3ZlcnNjcm9sbCxuPXRoaXMub3ZlcnNjcm9sbFBvaW50c1JhbmdlLGE9W10saD1jLmRhdGFNYXg7aWYoZShuKSlmb3IoYS5wdXNoKGgpO2g8PWMuZGF0YU1heCsKcTspaCs9bixhLnB1c2goaCk7cmV0dXJuIGF9O2MucHJvdG90eXBlLnBvc3RQcm9jZXNzVGlja0ludGVydmFsPWZ1bmN0aW9uKGMpe3ZhciBlPXRoaXMuYXhpcyxuPXRoaXMuc2xvcGU7cmV0dXJuIG4/ZS5vcHRpb25zLmJyZWFrcz9lLmNsb3Nlc3RQb2ludFJhbmdlfHxjOmMvKG4vZS5jbG9zZXN0UG9pbnRSYW5nZSk6Y307cmV0dXJuIGN9KCk7Yy5Db21wb3NpdGlvbj1sO2MuY29tcG9zZT1mdW5jdGlvbihsLHosdil7bC5rZWVwUHJvcHMucHVzaCgib3JkaW5hbCIpO3ZhciBuPWwucHJvdG90eXBlO2wucHJvdG90eXBlLmdldFRpbWVUaWNrcz1mdW5jdGlvbihhLGMsZyxuLGwsbSxrKXt2b2lkIDA9PT1sJiYobD1bXSk7dm9pZCAwPT09bSYmKG09MCk7dmFyIGQ9MCxwLHIsdz17fSxiPVtdLGY9LU51bWJlci5NQVhfVkFMVUUseT10aGlzLm9wdGlvbnMudGlja1BpeGVsSW50ZXJ2YWwsaD10aGlzLmNoYXJ0LnRpbWUsRj1bXTtpZighdGhpcy5vcHRpb25zLm9yZGluYWwmJiF0aGlzLm9wdGlvbnMuYnJlYWtzfHwKIWx8fDM+bC5sZW5ndGh8fCJ1bmRlZmluZWQiPT09dHlwZW9mIGMpcmV0dXJuIGguZ2V0VGltZVRpY2tzLmFwcGx5KGgsYXJndW1lbnRzKTt2YXIgST1sLmxlbmd0aDtmb3IocD0wO3A8STtwKyspe3ZhciB6PXAmJmxbcC0xXT5nO2xbcF08YyYmKGQ9cCk7aWYocD09PUktMXx8bFtwKzFdLWxbcF0+NSptfHx6KXtpZihsW3BdPmYpe2ZvcihyPWguZ2V0VGltZVRpY2tzKGEsbFtkXSxsW3BdLG4pO3IubGVuZ3RoJiZyWzBdPD1mOylyLnNoaWZ0KCk7ci5sZW5ndGgmJihmPXJbci5sZW5ndGgtMV0pO0YucHVzaChiLmxlbmd0aCk7Yj1iLmNvbmNhdChyKX1kPXArMX1pZih6KWJyZWFrfXI9ci5pbmZvO2lmKGsmJnIudW5pdFJhbmdlPD1xLmhvdXIpe3A9Yi5sZW5ndGgtMTtmb3IoZD0xO2Q8cDtkKyspaWYoaC5kYXRlRm9ybWF0KCIlZCIsYltkXSkhPT1oLmRhdGVGb3JtYXQoIiVkIixiW2QtMV0pKXt3W2JbZF1dPSJkYXkiO3ZhciB2PSEwfXYmJih3W2JbMF1dPSJkYXkiKTtyLmhpZ2hlclJhbmtzPQp3fXIuc2VnbWVudFN0YXJ0cz1GO2IuaW5mbz1yO2lmKGsmJmUoeSkpe2Q9Rj1iLmxlbmd0aDt2PVtdO3ZhciBEO2ZvcihoPVtdO2QtLTspcD10aGlzLnRyYW5zbGF0ZShiW2RdKSxEJiYoaFtkXT1ELXApLHZbZF09RD1wO2guc29ydCgpO2g9aFtNYXRoLmZsb29yKGgubGVuZ3RoLzIpXTtoPC42KnkmJihoPW51bGwpO2Q9YltGLTFdPmc/Ri0xOkY7Zm9yKEQ9dm9pZCAwO2QtLTspcD12W2RdLEY9TWF0aC5hYnMoRC1wKSxEJiZGPC44KnkmJihudWxsPT09aHx8RjwuOCpoKT8od1tiW2RdXSYmIXdbYltkKzFdXT8oRj1kKzEsRD1wKTpGPWQsYi5zcGxpY2UoRiwxKSk6RD1wfXJldHVybiBifTtuLmxpbjJ2YWw9ZnVuY3Rpb24oYSxjKXt2YXIgZz10aGlzLm9yZGluYWwsaD1nLnBvc2l0aW9ucztpZihoKXt2YXIgZT1nLnNsb3BlLG09Zy5vZmZzZXQ7Zz1oLmxlbmd0aC0xO2lmKGMpaWYoMD5hKWE9aFswXTtlbHNlIGlmKGE+ZylhPWhbZ107ZWxzZXtnPU1hdGguZmxvb3IoYSk7dmFyIGs9YS0KZ31lbHNlIGZvcig7Zy0tOylpZihjPWUqZyttLGE+PWMpe2U9ZSooZysxKSttO2s9KGEtYykvKGUtYyk7YnJlYWt9cmV0dXJuInVuZGVmaW5lZCIhPT10eXBlb2YgayYmInVuZGVmaW5lZCIhPT10eXBlb2YgaFtnXT9oW2ddKyhrP2sqKGhbZysxXS1oW2ddKTowKTphfXJldHVybiBhfTtuLnZhbDJsaW49ZnVuY3Rpb24oYSxjKXt2YXIgZz10aGlzLm9yZGluYWwsaD1nLnBvc2l0aW9ucztpZihoKXt2YXIgZT1oLmxlbmd0aCxtO2ZvcihtPWU7bS0tOylpZihoW21dPT09YSl7dmFyIGs9bTticmVha31mb3IobT1lLTE7bS0tOylpZihhPmhbbV18fDA9PT1tKXthPShhLWhbbV0pLyhoW20rMV0taFttXSk7az1tK2E7YnJlYWt9Yz1jP2s6Zy5zbG9wZSooa3x8MCkrZy5vZmZzZXR9ZWxzZSBjPWE7cmV0dXJuIGN9O24ub3JkaW5hbDJsaW49bi52YWwybGluO3QobCwiYWZ0ZXJJbml0IixmdW5jdGlvbigpe3RoaXMub3JkaW5hbHx8KHRoaXMub3JkaW5hbD1uZXcgYy5Db21wb3NpdGlvbih0aGlzKSl9KTsKdChsLCJmb3VuZEV4dHJlbWVzIixmdW5jdGlvbigpe3RoaXMuaXNYQXhpcyYmZSh0aGlzLm9wdGlvbnMub3ZlcnNjcm9sbCkmJnRoaXMubWF4PT09dGhpcy5kYXRhTWF4JiYoIXRoaXMuY2hhcnQubW91c2VJc0Rvd258fHRoaXMuaXNJbnRlcm5hbCkmJighdGhpcy5ldmVudEFyZ3N8fHRoaXMuZXZlbnRBcmdzJiYibmF2aWdhdG9yIiE9PXRoaXMuZXZlbnRBcmdzLnRyaWdnZXIpJiYodGhpcy5tYXgrPXRoaXMub3B0aW9ucy5vdmVyc2Nyb2xsLCF0aGlzLmlzSW50ZXJuYWwmJmUodGhpcy51c2VyTWluKSYmKHRoaXMubWluKz10aGlzLm9wdGlvbnMub3ZlcnNjcm9sbCkpfSk7dChsLCJhZnRlclNldFNjYWxlIixmdW5jdGlvbigpe3RoaXMuaG9yaXomJiF0aGlzLmlzRGlydHkmJih0aGlzLmlzRGlydHk9dGhpcy5pc09yZGluYWwmJnRoaXMuY2hhcnQubmF2aWdhdG9yJiYhdGhpcy5jaGFydC5uYXZpZ2F0b3IuYWRhcHRUb1VwZGF0ZWREYXRhKX0pO3QobCwiaW5pdGlhbEF4aXNUcmFuc2xhdGlvbiIsCmZ1bmN0aW9uKCl7dGhpcy5vcmRpbmFsJiYodGhpcy5vcmRpbmFsLmJlZm9yZVNldFRpY2tQb3NpdGlvbnMoKSx0aGlzLnRpY2tJbnRlcnZhbD10aGlzLm9yZGluYWwucG9zdFByb2Nlc3NUaWNrSW50ZXJ2YWwodGhpcy50aWNrSW50ZXJ2YWwpKX0pO3QoeiwicGFuIixmdW5jdGlvbihhKXt2YXIgYz10aGlzLnhBeGlzWzBdLGc9Yy5vcHRpb25zLm92ZXJzY3JvbGwsZT1hLm9yaWdpbmFsRXZlbnQuY2hhcnRYLG49dGhpcy5vcHRpb25zLmNoYXJ0JiZ0aGlzLm9wdGlvbnMuY2hhcnQucGFubmluZyxtPSExO2lmKG4mJiJ5IiE9PW4udHlwZSYmYy5vcHRpb25zLm9yZGluYWwmJmMuc2VyaWVzLmxlbmd0aCl7dmFyIGs9dGhpcy5tb3VzZURvd25YLGQ9Yy5nZXRFeHRyZW1lcygpLHA9ZC5kYXRhTWF4LHI9ZC5taW4sdz1kLm1heCxiPXRoaXMuaG92ZXJQb2ludHMsZj1jLmNsb3Nlc3RQb2ludFJhbmdlfHxjLm9yZGluYWwmJmMub3JkaW5hbC5vdmVyc2Nyb2xsUG9pbnRzUmFuZ2U7az0oay1lKS8KKGMudHJhbnNsYXRpb25TbG9wZSooYy5vcmRpbmFsLnNsb3BlfHxmKSk7dmFyIHk9e29yZGluYWw6e3Bvc2l0aW9uczpjLm9yZGluYWwuZ2V0RXh0ZW5kZWRQb3NpdGlvbnMoKX19O2Y9Yy5saW4ydmFsO3ZhciBxPWMudmFsMmxpbjtpZigheS5vcmRpbmFsLnBvc2l0aW9ucyltPSEwO2Vsc2UgaWYoMTxNYXRoLmFicyhrKSl7YiYmYi5mb3JFYWNoKGZ1bmN0aW9uKGIpe2Iuc2V0U3RhdGUoKX0pO2lmKDA+ayl7Yj15O3ZhciBGPWMub3JkaW5hbC5wb3NpdGlvbnM/Yzp5fWVsc2UgYj1jLm9yZGluYWwucG9zaXRpb25zP2M6eSxGPXk7eT1GLm9yZGluYWwucG9zaXRpb25zO3A+eVt5Lmxlbmd0aC0xXSYmeS5wdXNoKHApO3RoaXMuZml4ZWRSYW5nZT13LXI7az1jLm5hdmlnYXRvckF4aXMudG9GaXhlZFJhbmdlKG51bGwsbnVsbCxmLmFwcGx5KGIsW3EuYXBwbHkoYixbciwhMF0pK2ssITBdKSxmLmFwcGx5KEYsW3EuYXBwbHkoRixbdywhMF0pK2ssITBdKSk7ay5taW4+PU1hdGgubWluKGQuZGF0YU1pbiwKcikmJmsubWF4PD1NYXRoLm1heChwLHcpK2cmJmMuc2V0RXh0cmVtZXMoay5taW4say5tYXgsITAsITEse3RyaWdnZXI6InBhbiJ9KTt0aGlzLm1vdXNlRG93blg9ZTtFKHRoaXMuY29udGFpbmVyLHtjdXJzb3I6Im1vdmUifSl9fWVsc2UgbT0hMDttfHxuJiYveS8udGVzdChuLnR5cGUpP2cmJihjLm1heD1jLmRhdGFNYXgrZyk6YS5wcmV2ZW50RGVmYXVsdCgpfSk7dCh2LCJ1cGRhdGVkRGF0YSIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLnhBeGlzO2EmJmEub3B0aW9ucy5vcmRpbmFsJiZkZWxldGUgYS5vcmRpbmFsLmluZGV4fSl9fSkodnx8KHY9e30pKTt2LmNvbXBvc2UobCxCLGMpO3JldHVybiB2fSk7SyhsLCJtb2R1bGVzL2Jyb2tlbi1heGlzLnNyYy5qcyIsW2xbInBhcnRzL0F4aXMuanMiXSxsWyJwYXJ0cy9HbG9iYWxzLmpzIl0sbFsicGFydHMvVXRpbGl0aWVzLmpzIl0sbFsicGFydHMvU3RhY2tpbmcuanMiXV0sZnVuY3Rpb24obCx1LEIsdCl7dmFyIEU9Qi5hZGRFdmVudCxlPQpCLmZpbmQseD1CLmZpcmVFdmVudCxxPUIuaXNBcnJheSxjPUIuaXNOdW1iZXIsdj1CLnBpY2ssSj11LlNlcmllcyxHPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhjKXt0aGlzLmhhc0JyZWFrcz0hMTt0aGlzLmF4aXM9Y31jLmlzSW5CcmVhaz1mdW5jdGlvbihjLGUpe3ZhciBuPWMucmVwZWF0fHxJbmZpbml0eSxhPWMuZnJvbSxoPWMudG8tYy5mcm9tO2U9ZT49YT8oZS1hKSVuOm4tKGEtZSklbjtyZXR1cm4gYy5pbmNsdXNpdmU/ZTw9aDplPGgmJjAhPT1lfTtjLmxpbjJWYWw9ZnVuY3Rpb24oZSl7dmFyIHE9dGhpcy5icm9rZW5BeGlzO3E9cSYmcS5icmVha0FycmF5O2lmKCFxKXJldHVybiBlO3ZhciBuO2ZvcihuPTA7bjxxLmxlbmd0aDtuKyspe3ZhciBhPXFbbl07aWYoYS5mcm9tPj1lKWJyZWFrO2Vsc2UgYS50bzxlP2UrPWEubGVuOmMuaXNJbkJyZWFrKGEsZSkmJihlKz1hLmxlbil9cmV0dXJuIGV9O2MudmFsMkxpbj1mdW5jdGlvbihlKXt2YXIgcT10aGlzLmJyb2tlbkF4aXM7cT0KcSYmcS5icmVha0FycmF5O2lmKCFxKXJldHVybiBlO3ZhciBuPWUsYTtmb3IoYT0wO2E8cS5sZW5ndGg7YSsrKXt2YXIgaD1xW2FdO2lmKGgudG88PWUpbi09aC5sZW47ZWxzZSBpZihoLmZyb20+PWUpYnJlYWs7ZWxzZSBpZihjLmlzSW5CcmVhayhoLGUpKXtuLT1lLWguZnJvbTticmVha319cmV0dXJuIG59O2MucHJvdG90eXBlLmZpbmRCcmVha0F0PWZ1bmN0aW9uKGMscSl7cmV0dXJuIGUocSxmdW5jdGlvbihlKXtyZXR1cm4gZS5mcm9tPGMmJmM8ZS50b30pfTtjLnByb3RvdHlwZS5pc0luQW55QnJlYWs9ZnVuY3Rpb24oZSxxKXt2YXIgbj10aGlzLmF4aXMsYT1uLm9wdGlvbnMuYnJlYWtzLGg9YSYmYS5sZW5ndGgsZztpZihoKXtmb3IoO2gtLTspaWYoYy5pc0luQnJlYWsoYVtoXSxlKSl7dmFyIGw9ITA7Z3x8KGc9dihhW2hdLnNob3dQb2ludHMsIW4uaXNYQXhpcykpfXZhciBEPWwmJnE/bCYmIWc6bH1yZXR1cm4gRH07Yy5wcm90b3R5cGUuc2V0QnJlYWtzPWZ1bmN0aW9uKGUsCnQpe3ZhciBuPXRoaXMsYT1uLmF4aXMsaD1xKGUpJiYhIWUubGVuZ3RoO2EuaXNEaXJ0eT1uLmhhc0JyZWFrcyE9PWg7bi5oYXNCcmVha3M9aDthLm9wdGlvbnMuYnJlYWtzPWEudXNlck9wdGlvbnMuYnJlYWtzPWU7YS5mb3JjZVJlZHJhdz0hMDthLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuaXNEaXJ0eT0hMH0pO2h8fGEudmFsMmxpbiE9PWMudmFsMkxpbnx8KGRlbGV0ZSBhLnZhbDJsaW4sZGVsZXRlIGEubGluMnZhbCk7aCYmKGEudXNlck9wdGlvbnMub3JkaW5hbD0hMSxhLmxpbjJ2YWw9Yy5saW4yVmFsLGEudmFsMmxpbj1jLnZhbDJMaW4sYS5zZXRFeHRyZW1lcz1mdW5jdGlvbihhLGMsZSxoLGspe2lmKG4uaGFzQnJlYWtzKXtmb3IodmFyIGQsZz10aGlzLm9wdGlvbnMuYnJlYWtzO2Q9bi5maW5kQnJlYWtBdChhLGcpOylhPWQudG87Zm9yKDtkPW4uZmluZEJyZWFrQXQoYyxnKTspYz1kLmZyb207YzxhJiYoYz1hKX1sLnByb3RvdHlwZS5zZXRFeHRyZW1lcy5jYWxsKHRoaXMsCmEsYyxlLGgsayl9LGEuc2V0QXhpc1RyYW5zbGF0aW9uPWZ1bmN0aW9uKGcpe2wucHJvdG90eXBlLnNldEF4aXNUcmFuc2xhdGlvbi5jYWxsKHRoaXMsZyk7bi51bml0TGVuZ3RoPW51bGw7aWYobi5oYXNCcmVha3Mpe2c9YS5vcHRpb25zLmJyZWFrc3x8W107dmFyIGU9W10saD1bXSxtPTAsayxkPWEudXNlck1pbnx8YS5taW4scD1hLnVzZXJNYXh8fGEubWF4LHI9dihhLnBvaW50UmFuZ2VQYWRkaW5nLDApLHc7Zy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2s9Yi5yZXBlYXR8fEluZmluaXR5O2MuaXNJbkJyZWFrKGIsZCkmJihkKz1iLnRvJWstZCVrKTtjLmlzSW5CcmVhayhiLHApJiYocC09cCVrLWIuZnJvbSVrKX0pO2cuZm9yRWFjaChmdW5jdGlvbihiKXtmPWIuZnJvbTtmb3Ioaz1iLnJlcGVhdHx8SW5maW5pdHk7Zi1rPmQ7KWYtPWs7Zm9yKDtmPGQ7KWYrPWs7Zm9yKHc9Zjt3PHA7dys9ayllLnB1c2goe3ZhbHVlOncsbW92ZToiaW4ifSksZS5wdXNoKHt2YWx1ZTp3KyhiLnRvLWIuZnJvbSksCm1vdmU6Im91dCIsc2l6ZTpiLmJyZWFrU2l6ZX0pfSk7ZS5zb3J0KGZ1bmN0aW9uKGIsZil7cmV0dXJuIGIudmFsdWU9PT1mLnZhbHVlPygiaW4iPT09Yi5tb3ZlPzA6MSktKCJpbiI9PT1mLm1vdmU/MDoxKTpiLnZhbHVlLWYudmFsdWV9KTt2YXIgYj0wO3ZhciBmPWQ7ZS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2IrPSJpbiI9PT1hLm1vdmU/MTotMTsxPT09YiYmImluIj09PWEubW92ZSYmKGY9YS52YWx1ZSk7MD09PWImJihoLnB1c2goe2Zyb206Zix0bzphLnZhbHVlLGxlbjphLnZhbHVlLWYtKGEuc2l6ZXx8MCl9KSxtKz1hLnZhbHVlLWYtKGEuc2l6ZXx8MCkpfSk7YS5icmVha0FycmF5PW4uYnJlYWtBcnJheT1oO24udW5pdExlbmd0aD1wLWQtbStyO3goYSwiYWZ0ZXJCcmVha3MiKTthLnN0YXRpY1NjYWxlP2EudHJhbnNBPWEuc3RhdGljU2NhbGU6bi51bml0TGVuZ3RoJiYoYS50cmFuc0EqPShwLWEubWluK3IpL24udW5pdExlbmd0aCk7ciYmKGEubWluUGl4ZWxQYWRkaW5nPWEudHJhbnNBKgphLm1pblBvaW50T2Zmc2V0KTthLm1pbj1kO2EubWF4PXB9fSk7dih0LCEwKSYmYS5jaGFydC5yZWRyYXcoKX07cmV0dXJuIGN9KCk7dT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt9ZS5jb21wb3NlPWZ1bmN0aW9uKGUscSl7ZS5rZWVwUHJvcHMucHVzaCgiYnJva2VuQXhpcyIpO3ZhciBuPUoucHJvdG90eXBlO24uZHJhd0JyZWFrcz1mdW5jdGlvbihhLGUpe3ZhciBnPXRoaXMsaD1nLnBvaW50cyxuLG0sayxkO2lmKGEmJmEuYnJva2VuQXhpcyYmYS5icm9rZW5BeGlzLmhhc0JyZWFrcyl7dmFyIHA9YS5icm9rZW5BeGlzO2UuZm9yRWFjaChmdW5jdGlvbihyKXtuPXAmJnAuYnJlYWtBcnJheXx8W107bT1hLmlzWEF4aXM/YS5taW46dihnLm9wdGlvbnMudGhyZXNob2xkLGEubWluKTtoLmZvckVhY2goZnVuY3Rpb24oZyl7ZD12KGdbInN0YWNrIityLnRvVXBwZXJDYXNlKCldLGdbcl0pO24uZm9yRWFjaChmdW5jdGlvbihiKXtpZihjKG0pJiZjKGQpKXtrPSExO2lmKG08Yi5mcm9tJiYKZD5iLnRvfHxtPmIuZnJvbSYmZDxiLmZyb20paz0icG9pbnRCcmVhayI7ZWxzZSBpZihtPGIuZnJvbSYmZD5iLmZyb20mJmQ8Yi50b3x8bT5iLmZyb20mJmQ+Yi50byYmZDxiLmZyb20paz0icG9pbnRJbkJyZWFrIjtrJiZ4KGEsayx7cG9pbnQ6Zyxicms6Yn0pfX0pfSl9KX19O24uZ2FwcGVkUGF0aD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuY3VycmVudERhdGFHcm91cGluZyxjPWEmJmEuZ2FwU2l6ZTthPXRoaXMub3B0aW9ucy5nYXBTaXplO3ZhciBnPXRoaXMucG9pbnRzLnNsaWNlKCksZT1nLmxlbmd0aC0xLG49dGhpcy55QXhpcyxtO2lmKGEmJjA8ZSlmb3IoInZhbHVlIiE9PXRoaXMub3B0aW9ucy5nYXBVbml0JiYoYSo9dGhpcy5iYXNlUG9pbnRSYW5nZSksYyYmYz5hJiZjPj10aGlzLmJhc2VQb2ludFJhbmdlJiYoYT1jKSxtPXZvaWQgMDtlLS07KW0mJiExIT09bS52aXNpYmxlfHwobT1nW2UrMV0pLGM9Z1tlXSwhMSE9PW0udmlzaWJsZSYmITEhPT1jLnZpc2libGUmJihtLngtCmMueD5hJiYobT0oYy54K20ueCkvMixnLnNwbGljZShlKzEsMCx7aXNOdWxsOiEwLHg6bX0pLG4uc3RhY2tpbmcmJnRoaXMub3B0aW9ucy5zdGFja2luZyYmKG09bi5zdGFja2luZy5zdGFja3NbdGhpcy5zdGFja0tleV1bbV09bmV3IHQobixuLm9wdGlvbnMuc3RhY2tMYWJlbHMsITEsbSx0aGlzLnN0YWNrKSxtLnRvdGFsPTApKSxtPWMpO3JldHVybiB0aGlzLmdldEdyYXBoUGF0aChnKX07RShlLCJpbml0IixmdW5jdGlvbigpe3RoaXMuYnJva2VuQXhpc3x8KHRoaXMuYnJva2VuQXhpcz1uZXcgRyh0aGlzKSl9KTtFKGUsImFmdGVySW5pdCIsZnVuY3Rpb24oKXsidW5kZWZpbmVkIiE9PXR5cGVvZiB0aGlzLmJyb2tlbkF4aXMmJnRoaXMuYnJva2VuQXhpcy5zZXRCcmVha3ModGhpcy5vcHRpb25zLmJyZWFrcywhMSl9KTtFKGUsImFmdGVyU2V0VGlja1Bvc2l0aW9ucyIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLmJyb2tlbkF4aXM7aWYoYSYmYS5oYXNCcmVha3Mpe3ZhciBjPXRoaXMudGlja1Bvc2l0aW9ucywKZz10aGlzLnRpY2tQb3NpdGlvbnMuaW5mbyxlPVtdLG47Zm9yKG49MDtuPGMubGVuZ3RoO24rKylhLmlzSW5BbnlCcmVhayhjW25dKXx8ZS5wdXNoKGNbbl0pO3RoaXMudGlja1Bvc2l0aW9ucz1lO3RoaXMudGlja1Bvc2l0aW9ucy5pbmZvPWd9fSk7RShlLCJhZnRlclNldE9wdGlvbnMiLGZ1bmN0aW9uKCl7dGhpcy5icm9rZW5BeGlzJiZ0aGlzLmJyb2tlbkF4aXMuaGFzQnJlYWtzJiYodGhpcy5vcHRpb25zLm9yZGluYWw9ITEpfSk7RShxLCJhZnRlckdlbmVyYXRlUG9pbnRzIixmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucy5jb25uZWN0TnVsbHMsYz10aGlzLnBvaW50cyxnPXRoaXMueEF4aXMsZT10aGlzLnlBeGlzO2lmKHRoaXMuaXNEaXJ0eSlmb3IodmFyIG49Yy5sZW5ndGg7bi0tOyl7dmFyIG09Y1tuXSxrPSEobnVsbD09PW0ueSYmITE9PT1hKSYmKGcmJmcuYnJva2VuQXhpcyYmZy5icm9rZW5BeGlzLmlzSW5BbnlCcmVhayhtLngsITApfHxlJiZlLmJyb2tlbkF4aXMmJgplLmJyb2tlbkF4aXMuaXNJbkFueUJyZWFrKG0ueSwhMCkpO20udmlzaWJsZT1rPyExOiExIT09bS5vcHRpb25zLnZpc2libGV9fSk7RShxLCJhZnRlclJlbmRlciIsZnVuY3Rpb24oKXt0aGlzLmRyYXdCcmVha3ModGhpcy54QXhpcyxbIngiXSk7dGhpcy5kcmF3QnJlYWtzKHRoaXMueUF4aXMsdih0aGlzLnBvaW50QXJyYXlNYXAsWyJ5Il0pKX0pfTtyZXR1cm4gZX0oKTt1LmNvbXBvc2UobCxKKTtyZXR1cm4gdX0pO0sobCwibWFzdGVycy9tb2R1bGVzL2Jyb2tlbi1heGlzLnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KTtLKGwsInBhcnRzL0RhdGFHcm91cGluZy5qcyIsW2xbInBhcnRzL0RhdGVUaW1lQXhpcy5qcyJdLGxbInBhcnRzL0dsb2JhbHMuanMiXSxsWyJwYXJ0cy9PcHRpb25zLmpzIl0sbFsicGFydHMvUG9pbnQuanMiXSxsWyJwYXJ0cy9Ub29sdGlwLmpzIl0sbFsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGwsdSxCLHQsRSxlKXsiIjt2YXIgeD1lLmFkZEV2ZW50LApxPWUuYXJyYXlNYXgsYz1lLmFycmF5TWluLHY9ZS5jb3JyZWN0RmxvYXQsSj1lLmRlZmluZWQsRz1lLmVycm9yLEM9ZS5leHRlbmQsej1lLmZvcm1hdCxBPWUuaXNOdW1iZXIsbj1lLm1lcmdlLGE9ZS5waWNrLGg9dS5BeGlzO2U9dS5TZXJpZXM7dmFyIGc9dS5hcHByb3hpbWF0aW9ucz17c3VtOmZ1bmN0aW9uKGIpe3ZhciBhPWIubGVuZ3RoO2lmKCFhJiZiLmhhc051bGxzKXZhciBkPW51bGw7ZWxzZSBpZihhKWZvcihkPTA7YS0tOylkKz1iW2FdO3JldHVybiBkfSxhdmVyYWdlOmZ1bmN0aW9uKGIpe3ZhciBhPWIubGVuZ3RoO2I9Zy5zdW0oYik7QShiKSYmYSYmKGI9dihiL2EpKTtyZXR1cm4gYn0sYXZlcmFnZXM6ZnVuY3Rpb24oKXt2YXIgYj1bXTtbXS5mb3JFYWNoLmNhbGwoYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2IucHVzaChnLmF2ZXJhZ2UoYSkpfSk7cmV0dXJuInVuZGVmaW5lZCI9PT10eXBlb2YgYlswXT92b2lkIDA6Yn0sb3BlbjpmdW5jdGlvbihiKXtyZXR1cm4gYi5sZW5ndGg/CmJbMF06Yi5oYXNOdWxscz9udWxsOnZvaWQgMH0saGlnaDpmdW5jdGlvbihiKXtyZXR1cm4gYi5sZW5ndGg/cShiKTpiLmhhc051bGxzP251bGw6dm9pZCAwfSxsb3c6ZnVuY3Rpb24oYil7cmV0dXJuIGIubGVuZ3RoP2MoYik6Yi5oYXNOdWxscz9udWxsOnZvaWQgMH0sY2xvc2U6ZnVuY3Rpb24oYil7cmV0dXJuIGIubGVuZ3RoP2JbYi5sZW5ndGgtMV06Yi5oYXNOdWxscz9udWxsOnZvaWQgMH0sb2hsYzpmdW5jdGlvbihiLGEsZCxjKXtiPWcub3BlbihiKTthPWcuaGlnaChhKTtkPWcubG93KGQpO2M9Zy5jbG9zZShjKTtpZihBKGIpfHxBKGEpfHxBKGQpfHxBKGMpKXJldHVybltiLGEsZCxjXX0scmFuZ2U6ZnVuY3Rpb24oYixhKXtiPWcubG93KGIpO2E9Zy5oaWdoKGEpO2lmKEEoYil8fEEoYSkpcmV0dXJuW2IsYV07aWYobnVsbD09PWImJm51bGw9PT1hKXJldHVybiBudWxsfX0sST1mdW5jdGlvbihiLGEsZCxjKXt2YXIgZj10aGlzLHA9Zi5kYXRhLHI9Zi5vcHRpb25zJiZmLm9wdGlvbnMuZGF0YSwKZT1bXSx3PVtdLGs9W10seT1iLmxlbmd0aCxoPSEhYSxtPVtdLHE9Zi5wb2ludEFycmF5TWFwLGw9cSYmcS5sZW5ndGgsSD1bIngiXS5jb25jYXQocXx8WyJ5Il0pLHY9MCx0PTAseDtjPSJmdW5jdGlvbiI9PT10eXBlb2YgYz9jOmdbY10/Z1tjXTpnW2YuZ2V0REdBcHByb3hpbWF0aW9uJiZmLmdldERHQXBwcm94aW1hdGlvbigpfHwiYXZlcmFnZSJdO2w/cS5mb3JFYWNoKGZ1bmN0aW9uKCl7bS5wdXNoKFtdKX0pOm0ucHVzaChbXSk7dmFyIEQ9bHx8MTtmb3IoeD0wO3g8PXkmJiEoYlt4XT49ZFswXSk7eCsrKTtmb3IoeDt4PD15O3grKyl7Zm9yKDsidW5kZWZpbmVkIiE9PXR5cGVvZiBkW3YrMV0mJmJbeF0+PWRbdisxXXx8eD09PXk7KXt2YXIgdT1kW3ZdO2YuZGF0YUdyb3VwSW5mbz17c3RhcnQ6Zi5jcm9wU3RhcnQrdCxsZW5ndGg6bVswXS5sZW5ndGh9O3ZhciB6PWMuYXBwbHkoZixtKTtmLnBvaW50Q2xhc3MmJiFKKGYuZGF0YUdyb3VwSW5mby5vcHRpb25zKSYmKGYuZGF0YUdyb3VwSW5mby5vcHRpb25zPQpuKGYucG9pbnRDbGFzcy5wcm90b3R5cGUub3B0aW9uc1RvT2JqZWN0LmNhbGwoe3NlcmllczpmfSxmLm9wdGlvbnMuZGF0YVtmLmNyb3BTdGFydCt0XSkpLEguZm9yRWFjaChmdW5jdGlvbihiKXtkZWxldGUgZi5kYXRhR3JvdXBJbmZvLm9wdGlvbnNbYl19KSk7InVuZGVmaW5lZCIhPT10eXBlb2YgeiYmKGUucHVzaCh1KSx3LnB1c2goeiksay5wdXNoKGYuZGF0YUdyb3VwSW5mbykpO3Q9eDtmb3IodT0wO3U8RDt1KyspbVt1XS5sZW5ndGg9MCxtW3VdLmhhc051bGxzPSExO3YrPTE7aWYoeD09PXkpYnJlYWt9aWYoeD09PXkpYnJlYWs7aWYocSlmb3IodT1mLmNyb3BTdGFydCt4LHo9cCYmcFt1XXx8Zi5wb2ludENsYXNzLnByb3RvdHlwZS5hcHBseU9wdGlvbnMuYXBwbHkoe3NlcmllczpmfSxbclt1XV0pLHU9MDt1PGw7dSsrKXt2YXIgRT16W3FbdV1dO0EoRSk/bVt1XS5wdXNoKEUpOm51bGw9PT1FJiYobVt1XS5oYXNOdWxscz0hMCl9ZWxzZSB1PWg/YVt4XTpudWxsLEEodSk/bVswXS5wdXNoKHUpOgpudWxsPT09dSYmKG1bMF0uaGFzTnVsbHM9ITApfXJldHVybntncm91cGVkWERhdGE6ZSxncm91cGVkWURhdGE6dyxncm91cE1hcDprfX0sRD17YXBwcm94aW1hdGlvbnM6Zyxncm91cERhdGE6SX0sbT1lLnByb3RvdHlwZSxrPW0ucHJvY2Vzc0RhdGEsZD1tLmdlbmVyYXRlUG9pbnRzLHA9e2dyb3VwUGl4ZWxXaWR0aDoyLGRhdGVUaW1lTGFiZWxGb3JtYXRzOnttaWxsaXNlY29uZDpbIiVBLCAlYiAlZSwgJUg6JU06JVMuJUwiLCIlQSwgJWIgJWUsICVIOiVNOiVTLiVMIiwiLSVIOiVNOiVTLiVMIl0sc2Vjb25kOlsiJUEsICViICVlLCAlSDolTTolUyIsIiVBLCAlYiAlZSwgJUg6JU06JVMiLCItJUg6JU06JVMiXSxtaW51dGU6WyIlQSwgJWIgJWUsICVIOiVNIiwiJUEsICViICVlLCAlSDolTSIsIi0lSDolTSJdLGhvdXI6WyIlQSwgJWIgJWUsICVIOiVNIiwiJUEsICViICVlLCAlSDolTSIsIi0lSDolTSJdLGRheTpbIiVBLCAlYiAlZSwgJVkiLCIlQSwgJWIgJWUiLCItJUEsICViICVlLCAlWSJdLAp3ZWVrOlsiV2VlayBmcm9tICVBLCAlYiAlZSwgJVkiLCIlQSwgJWIgJWUiLCItJUEsICViICVlLCAlWSJdLG1vbnRoOlsiJUIgJVkiLCIlQiIsIi0lQiAlWSJdLHllYXI6WyIlWSIsIiVZIiwiLSVZIl19fSxyPXtsaW5lOnt9LHNwbGluZTp7fSxhcmVhOnt9LGFyZWFzcGxpbmU6e30sYXJlYXJhbmdlOnt9LGNvbHVtbjp7Z3JvdXBQaXhlbFdpZHRoOjEwfSxjb2x1bW5yYW5nZTp7Z3JvdXBQaXhlbFdpZHRoOjEwfSxjYW5kbGVzdGljazp7Z3JvdXBQaXhlbFdpZHRoOjEwfSxvaGxjOntncm91cFBpeGVsV2lkdGg6NX19LHc9dS5kZWZhdWx0RGF0YUdyb3VwaW5nVW5pdHM9W1sibWlsbGlzZWNvbmQiLFsxLDIsNSwxMCwyMCwyNSw1MCwxMDAsMjAwLDUwMF1dLFsic2Vjb25kIixbMSwyLDUsMTAsMTUsMzBdXSxbIm1pbnV0ZSIsWzEsMiw1LDEwLDE1LDMwXV0sWyJob3VyIixbMSwyLDMsNCw2LDgsMTJdXSxbImRheSIsWzFdXSxbIndlZWsiLFsxXV0sWyJtb250aCIsWzEsMyw2XV0sWyJ5ZWFyIiwKbnVsbF1dO20uZ2V0REdBcHByb3hpbWF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXMoImFyZWFyYW5nZSIpPyJyYW5nZSI6dGhpcy5pcygib2hsYyIpPyJvaGxjIjp0aGlzLmlzKCJjb2x1bW4iKT8ic3VtIjoiYXZlcmFnZSJ9O20uZ3JvdXBEYXRhPUk7bS5wcm9jZXNzRGF0YT1mdW5jdGlvbigpe3ZhciBiPXRoaXMuY2hhcnQsZj10aGlzLm9wdGlvbnMuZGF0YUdyb3VwaW5nLGQ9ITEhPT10aGlzLmFsbG93REcmJmYmJmEoZi5lbmFibGVkLGIub3B0aW9ucy5pc1N0b2NrKSxjPXRoaXMudmlzaWJsZXx8IWIub3B0aW9ucy5jaGFydC5pZ25vcmVIaWRkZW5TZXJpZXMsZyxwPXRoaXMuY3VycmVudERhdGFHcm91cGluZyxyPSExO3RoaXMuZm9yY2VDcm9wPWQ7dGhpcy5ncm91cFBpeGVsV2lkdGg9bnVsbDt0aGlzLmhhc1Byb2Nlc3NlZD0hMDtkJiYhdGhpcy5yZXF1aXJlU29ydGluZyYmKHRoaXMucmVxdWlyZVNvcnRpbmc9cj0hMCk7ZD0hMT09PWsuYXBwbHkodGhpcyxhcmd1bWVudHMpfHwKIWQ7ciYmKHRoaXMucmVxdWlyZVNvcnRpbmc9ITEpO2lmKCFkKXt0aGlzLmRlc3Ryb3lHcm91cGVkRGF0YSgpO2Q9Zi5ncm91cEFsbD90aGlzLnhEYXRhOnRoaXMucHJvY2Vzc2VkWERhdGE7dmFyIGU9Zi5ncm91cEFsbD90aGlzLnlEYXRhOnRoaXMucHJvY2Vzc2VkWURhdGEsaD1iLnBsb3RTaXplWDtiPXRoaXMueEF4aXM7dmFyIG49Yi5vcHRpb25zLm9yZGluYWwscT10aGlzLmdyb3VwUGl4ZWxXaWR0aD1iLmdldEdyb3VwUGl4ZWxXaWR0aCYmYi5nZXRHcm91cFBpeGVsV2lkdGgoKTtpZihxKXt0aGlzLmlzRGlydHk9Zz0hMDt0aGlzLnBvaW50cz1udWxsO3I9Yi5nZXRFeHRyZW1lcygpO3ZhciB2PXIubWluO3I9ci5tYXg7bj1uJiZiLm9yZGluYWwmJmIub3JkaW5hbC5nZXRHcm91cEludGVydmFsRmFjdG9yKHYscix0aGlzKXx8MTtxPXEqKHItdikvaCpuO2g9Yi5nZXRUaW1lVGlja3MobC5BZGRpdGlvbnNDbGFzcy5wcm90b3R5cGUubm9ybWFsaXplVGltZVRpY2tJbnRlcnZhbChxLApmLnVuaXRzfHx3KSxNYXRoLm1pbih2LGRbMF0pLE1hdGgubWF4KHIsZFtkLmxlbmd0aC0xXSksYi5vcHRpb25zLnN0YXJ0T2ZXZWVrLGQsdGhpcy5jbG9zZXN0UG9pbnRSYW5nZSk7ZT1tLmdyb3VwRGF0YS5hcHBseSh0aGlzLFtkLGUsaCxmLmFwcHJveGltYXRpb25dKTtkPWUuZ3JvdXBlZFhEYXRhO249ZS5ncm91cGVkWURhdGE7dmFyIHU9MDtpZihmLnNtb290aGVkJiZkLmxlbmd0aCl7dmFyIHg9ZC5sZW5ndGgtMTtmb3IoZFt4XT1NYXRoLm1pbihkW3hdLHIpO3gtLSYmMDx4OylkW3hdKz1xLzI7ZFswXT1NYXRoLm1heChkWzBdLHYpfWZvcih4PTE7eDxoLmxlbmd0aDt4KyspaC5pbmZvLnNlZ21lbnRTdGFydHMmJi0xIT09aC5pbmZvLnNlZ21lbnRTdGFydHMuaW5kZXhPZih4KXx8KHU9TWF0aC5tYXgoaFt4XS1oW3gtMV0sdSkpO3Y9aC5pbmZvO3YuZ2FwU2l6ZT11O3RoaXMuY2xvc2VzdFBvaW50UmFuZ2U9aC5pbmZvLnRvdGFsUmFuZ2U7dGhpcy5ncm91cE1hcD1lLmdyb3VwTWFwOwppZihKKGRbMF0pJiZkWzBdPGIubWluJiZjKXtpZighSihiLm9wdGlvbnMubWluKSYmYi5taW48PWIuZGF0YU1pbnx8Yi5taW49PT1iLmRhdGFNaW4pYi5taW49TWF0aC5taW4oZFswXSxiLm1pbik7Yi5kYXRhTWluPU1hdGgubWluKGRbMF0sYi5kYXRhTWluKX1mLmdyb3VwQWxsJiYoZj10aGlzLmNyb3BEYXRhKGQsbixiLm1pbixiLm1heCwxKSxkPWYueERhdGEsbj1mLnlEYXRhKTt0aGlzLnByb2Nlc3NlZFhEYXRhPWQ7dGhpcy5wcm9jZXNzZWRZRGF0YT1ufWVsc2UgdGhpcy5ncm91cE1hcD1udWxsO3RoaXMuaGFzR3JvdXBlZERhdGE9Zzt0aGlzLmN1cnJlbnREYXRhR3JvdXBpbmc9djt0aGlzLnByZXZlbnRHcmFwaEFuaW1hdGlvbj0ocCYmcC50b3RhbFJhbmdlKSE9PSh2JiZ2LnRvdGFsUmFuZ2UpfX07bS5kZXN0cm95R3JvdXBlZERhdGE9ZnVuY3Rpb24oKXt0aGlzLmdyb3VwZWREYXRhJiYodGhpcy5ncm91cGVkRGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGIsYSl7YiYmKHRoaXMuZ3JvdXBlZERhdGFbYV09CmIuZGVzdHJveT9iLmRlc3Ryb3koKTpudWxsKX0sdGhpcyksdGhpcy5ncm91cGVkRGF0YS5sZW5ndGg9MCl9O20uZ2VuZXJhdGVQb2ludHM9ZnVuY3Rpb24oKXtkLmFwcGx5KHRoaXMpO3RoaXMuZGVzdHJveUdyb3VwZWREYXRhKCk7dGhpcy5ncm91cGVkRGF0YT10aGlzLmhhc0dyb3VwZWREYXRhP3RoaXMucG9pbnRzOm51bGx9O3godCwidXBkYXRlIixmdW5jdGlvbigpe2lmKHRoaXMuZGF0YUdyb3VwKXJldHVybiBHKDI0LCExLHRoaXMuc2VyaWVzLmNoYXJ0KSwhMX0pO3goRSwiaGVhZGVyRm9ybWF0dGVyIixmdW5jdGlvbihiKXt2YXIgYT10aGlzLmNoYXJ0LGQ9YS50aW1lLGM9Yi5sYWJlbENvbmZpZyxnPWMuc2VyaWVzLHI9Zy50b29sdGlwT3B0aW9ucyxlPWcub3B0aW9ucy5kYXRhR3JvdXBpbmcsdz1yLnhEYXRlRm9ybWF0LGs9Zy54QXhpcyxoPXJbKGIuaXNGb290ZXI/ImZvb3RlciI6ImhlYWRlciIpKyJGb3JtYXQiXTtpZihrJiYiZGF0ZXRpbWUiPT09ay5vcHRpb25zLnR5cGUmJgplJiZBKGMua2V5KSl7dmFyIG49Zy5jdXJyZW50RGF0YUdyb3VwaW5nO2U9ZS5kYXRlVGltZUxhYmVsRm9ybWF0c3x8cC5kYXRlVGltZUxhYmVsRm9ybWF0cztpZihuKWlmKHI9ZVtuLnVuaXROYW1lXSwxPT09bi5jb3VudCl3PXJbMF07ZWxzZXt3PXJbMV07dmFyIG09clsyXX1lbHNlIXcmJmUmJih3PXRoaXMuZ2V0WERhdGVGb3JtYXQoYyxyLGspKTt3PWQuZGF0ZUZvcm1hdCh3LGMua2V5KTttJiYodys9ZC5kYXRlRm9ybWF0KG0sYy5rZXkrbi50b3RhbFJhbmdlLTEpKTtnLmNoYXJ0LnN0eWxlZE1vZGUmJihoPXRoaXMuc3R5bGVkTW9kZUZvcm1hdChoKSk7Yi50ZXh0PXooaCx7cG9pbnQ6QyhjLnBvaW50LHtrZXk6d30pLHNlcmllczpnfSxhKTtiLnByZXZlbnREZWZhdWx0KCl9fSk7eChlLCJkZXN0cm95IixtLmRlc3Ryb3lHcm91cGVkRGF0YSk7eChlLCJhZnRlclNldE9wdGlvbnMiLGZ1bmN0aW9uKGIpe2I9Yi5vcHRpb25zO3ZhciBhPXRoaXMudHlwZSxkPXRoaXMuY2hhcnQub3B0aW9ucy5wbG90T3B0aW9ucywKYz1CLmRlZmF1bHRPcHRpb25zLnBsb3RPcHRpb25zW2FdLmRhdGFHcm91cGluZyxnPXRoaXMudXNlQ29tbW9uRGF0YUdyb3VwaW5nJiZwO2lmKHJbYV18fGcpY3x8KGM9bihwLHJbYV0pKSxiLmRhdGFHcm91cGluZz1uKGcsYyxkLnNlcmllcyYmZC5zZXJpZXMuZGF0YUdyb3VwaW5nLGRbYV0uZGF0YUdyb3VwaW5nLHRoaXMudXNlck9wdGlvbnMuZGF0YUdyb3VwaW5nKX0pO3goaCwiYWZ0ZXJTZXRTY2FsZSIsZnVuY3Rpb24oKXt0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuaGFzUHJvY2Vzc2VkPSExfSl9KTtoLnByb3RvdHlwZS5nZXRHcm91cFBpeGVsV2lkdGg9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLnNlcmllcyxmPWIubGVuZ3RoLGQsYz0wLGc9ITEscjtmb3IoZD1mO2QtLTspKHI9YltkXS5vcHRpb25zLmRhdGFHcm91cGluZykmJihjPU1hdGgubWF4KGMsYShyLmdyb3VwUGl4ZWxXaWR0aCxwLmdyb3VwUGl4ZWxXaWR0aCkpKTtmb3IoZD1mO2QtLTspKHI9YltkXS5vcHRpb25zLmRhdGFHcm91cGluZykmJgpiW2RdLmhhc1Byb2Nlc3NlZCYmKGY9KGJbZF0ucHJvY2Vzc2VkWERhdGF8fGJbZF0uZGF0YSkubGVuZ3RoLGJbZF0uZ3JvdXBQaXhlbFdpZHRofHxmPnRoaXMuY2hhcnQucGxvdFNpemVYL2N8fGYmJnIuZm9yY2VkKSYmKGc9ITApO3JldHVybiBnP2M6MH07aC5wcm90b3R5cGUuc2V0RGF0YUdyb3VwaW5nPWZ1bmN0aW9uKGIsZCl7dmFyIGY7ZD1hKGQsITApO2J8fChiPXtmb3JjZWQ6ITEsdW5pdHM6bnVsbH0pO2lmKHRoaXMgaW5zdGFuY2VvZiBoKWZvcihmPXRoaXMuc2VyaWVzLmxlbmd0aDtmLS07KXRoaXMuc2VyaWVzW2ZdLnVwZGF0ZSh7ZGF0YUdyb3VwaW5nOmJ9LCExKTtlbHNlIHRoaXMuY2hhcnQub3B0aW9ucy5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihhKXthLmRhdGFHcm91cGluZz1ifSwhMSk7dGhpcy5vcmRpbmFsJiYodGhpcy5vcmRpbmFsLnNsb3BlPXZvaWQgMCk7ZCYmdGhpcy5jaGFydC5yZWRyYXcoKX07dS5kYXRhR3JvdXBpbmc9RDsiIjtyZXR1cm4gRH0pO0sobCwKInBhcnRzL09ITENTZXJpZXMuanMiLFtsWyJwYXJ0cy9HbG9iYWxzLmpzIl0sbFsicGFydHMvUG9pbnQuanMiXSxsWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24obCx1LEIpe0I9Qi5zZXJpZXNUeXBlO3ZhciB0PWwuc2VyaWVzVHlwZXM7Qigib2hsYyIsImNvbHVtbiIse2xpbmVXaWR0aDoxLHRvb2x0aXA6e3BvaW50Rm9ybWF0Oic8c3BhbiBzdHlsZT0iY29sb3I6e3BvaW50LmNvbG9yfSI+XHUyNWNmPC9zcGFuPiA8Yj4ge3Nlcmllcy5uYW1lfTwvYj48YnIvPk9wZW46IHtwb2ludC5vcGVufTxici8+SGlnaDoge3BvaW50LmhpZ2h9PGJyLz5Mb3c6IHtwb2ludC5sb3d9PGJyLz5DbG9zZToge3BvaW50LmNsb3NlfTxici8+J30sdGhyZXNob2xkOm51bGwsc3RhdGVzOntob3Zlcjp7bGluZVdpZHRoOjN9fSxzdGlja3lUcmFja2luZzohMH0se2RpcmVjdFRvdWNoOiExLHBvaW50QXJyYXlNYXA6WyJvcGVuIiwiaGlnaCIsImxvdyIsImNsb3NlIl0sdG9ZRGF0YTpmdW5jdGlvbihsKXtyZXR1cm5bbC5vcGVuLApsLmhpZ2gsbC5sb3csbC5jbG9zZV19LHBvaW50VmFsS2V5OiJjbG9zZSIscG9pbnRBdHRyVG9PcHRpb25zOntzdHJva2U6ImNvbG9yIiwic3Ryb2tlLXdpZHRoIjoibGluZVdpZHRoIn0saW5pdDpmdW5jdGlvbigpe3QuY29sdW1uLnByb3RvdHlwZS5pbml0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLm9wdGlvbnMuc3RhY2tpbmc9dm9pZCAwfSxwb2ludEF0dHJpYnM6ZnVuY3Rpb24obCxlKXtlPXQuY29sdW1uLnByb3RvdHlwZS5wb2ludEF0dHJpYnMuY2FsbCh0aGlzLGwsZSk7dmFyIHg9dGhpcy5vcHRpb25zO2RlbGV0ZSBlLmZpbGw7IWwub3B0aW9ucy5jb2xvciYmeC51cENvbG9yJiZsLm9wZW48bC5jbG9zZSYmKGUuc3Ryb2tlPXgudXBDb2xvcik7cmV0dXJuIGV9LHRyYW5zbGF0ZTpmdW5jdGlvbigpe3ZhciBsPXRoaXMsZT1sLnlBeGlzLHg9ISFsLm1vZGlmeVZhbHVlLHE9WyJwbG90T3BlbiIsInBsb3RIaWdoIiwicGxvdExvdyIsInBsb3RDbG9zZSIsInlCb3R0b20iXTsKdC5jb2x1bW4ucHJvdG90eXBlLnRyYW5zbGF0ZS5hcHBseShsKTtsLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGMpe1tjLm9wZW4sYy5oaWdoLGMubG93LGMuY2xvc2UsYy5sb3ddLmZvckVhY2goZnVuY3Rpb24odix1KXtudWxsIT09diYmKHgmJih2PWwubW9kaWZ5VmFsdWUodikpLGNbcVt1XV09ZS50b1BpeGVscyh2LCEwKSl9KTtjLnRvb2x0aXBQb3NbMV09Yy5wbG90SGlnaCtlLnBvcy1sLmNoYXJ0LnBsb3RUb3B9KX0sZHJhd1BvaW50czpmdW5jdGlvbigpe3ZhciBsPXRoaXMsZT1sLmNoYXJ0LHg9ZnVuY3Rpb24oZSxjLGwpe3ZhciBxPWVbMF07ZT1lWzFdOyJudW1iZXIiPT09dHlwZW9mIHFbMl0mJihxWzJdPU1hdGgubWF4KGwrYyxxWzJdKSk7Im51bWJlciI9PT10eXBlb2YgZVsyXSYmKGVbMl09TWF0aC5taW4obC1jLGVbMl0pKX07bC5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihxKXt2YXIgYz1xLmdyYXBoaWMsdj0hYztpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBxLnBsb3RZKXtjfHwKKHEuZ3JhcGhpYz1jPWUucmVuZGVyZXIucGF0aCgpLmFkZChsLmdyb3VwKSk7ZS5zdHlsZWRNb2RlfHxjLmF0dHIobC5wb2ludEF0dHJpYnMocSxxLnNlbGVjdGVkJiYic2VsZWN0IikpO3ZhciB1PWMuc3Ryb2tlV2lkdGgoKTt2YXIgdD11JTIvMjt2YXIgQz1NYXRoLnJvdW5kKHEucGxvdFgpLXQ7dmFyIHo9TWF0aC5yb3VuZChxLnNoYXBlQXJncy53aWR0aC8yKTt2YXIgQT1bWyJNIixDLE1hdGgucm91bmQocS55Qm90dG9tKV0sWyJMIixDLE1hdGgucm91bmQocS5wbG90SGlnaCldXTtpZihudWxsIT09cS5vcGVuKXt2YXIgbj1NYXRoLnJvdW5kKHEucGxvdE9wZW4pK3Q7QS5wdXNoKFsiTSIsQyxuXSxbIkwiLEMteixuXSk7eChBLHUvMixuKX1udWxsIT09cS5jbG9zZSYmKG49TWF0aC5yb3VuZChxLnBsb3RDbG9zZSkrdCxBLnB1c2goWyJNIixDLG5dLFsiTCIsQyt6LG5dKSx4KEEsdS8yLG4pKTtjW3Y/ImF0dHIiOiJhbmltYXRlIl0oe2Q6QX0pLmFkZENsYXNzKHEuZ2V0Q2xhc3NOYW1lKCksCiEwKX19KX0sYW5pbWF0ZTpudWxsfSx7Z2V0Q2xhc3NOYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHUucHJvdG90eXBlLmdldENsYXNzTmFtZS5jYWxsKHRoaXMpKyh0aGlzLm9wZW48dGhpcy5jbG9zZT8iIGhpZ2hjaGFydHMtcG9pbnQtdXAiOiIgaGlnaGNoYXJ0cy1wb2ludC1kb3duIil9fSk7IiJ9KTtLKGwsInBhcnRzL0NhbmRsZXN0aWNrU2VyaWVzLmpzIixbbFsicGFydHMvR2xvYmFscy5qcyJdLGxbInBhcnRzL09wdGlvbnMuanMiXSxsWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24obCx1LEIpe3U9dS5kZWZhdWx0T3B0aW9uczt2YXIgdD1CLm1lcmdlO0I9Qi5zZXJpZXNUeXBlO3ZhciBFPWwuc2VyaWVzVHlwZXM7QigiY2FuZGxlc3RpY2siLCJvaGxjIix0KHUucGxvdE9wdGlvbnMuY29sdW1uLHtzdGF0ZXM6e2hvdmVyOntsaW5lV2lkdGg6Mn19LHRvb2x0aXA6dS5wbG90T3B0aW9ucy5vaGxjLnRvb2x0aXAsdGhyZXNob2xkOm51bGwsbGluZUNvbG9yOiIjMDAwMDAwIiwKbGluZVdpZHRoOjEsdXBDb2xvcjoiI2ZmZmZmZiIsc3RpY2t5VHJhY2tpbmc6ITB9KSx7cG9pbnRBdHRyaWJzOmZ1bmN0aW9uKGUsbCl7dmFyIHE9RS5jb2x1bW4ucHJvdG90eXBlLnBvaW50QXR0cmlicy5jYWxsKHRoaXMsZSxsKSxjPXRoaXMub3B0aW9ucyx2PWUub3BlbjxlLmNsb3NlLHU9Yy5saW5lQ29sb3J8fHRoaXMuY29sb3I7cVsic3Ryb2tlLXdpZHRoIl09Yy5saW5lV2lkdGg7cS5maWxsPWUub3B0aW9ucy5jb2xvcnx8KHY/Yy51cENvbG9yfHx0aGlzLmNvbG9yOnRoaXMuY29sb3IpO3Euc3Ryb2tlPWUub3B0aW9ucy5saW5lQ29sb3J8fCh2P2MudXBMaW5lQ29sb3J8fHU6dSk7bCYmKGU9Yy5zdGF0ZXNbbF0scS5maWxsPWUuY29sb3J8fHEuZmlsbCxxLnN0cm9rZT1lLmxpbmVDb2xvcnx8cS5zdHJva2UscVsic3Ryb2tlLXdpZHRoIl09ZS5saW5lV2lkdGh8fHFbInN0cm9rZS13aWR0aCJdKTtyZXR1cm4gcX0sZHJhd1BvaW50czpmdW5jdGlvbigpe3ZhciBlPXRoaXMsbD1lLmNoYXJ0LApxPWUueUF4aXMucmV2ZXJzZWQ7ZS5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihjKXt2YXIgdj1jLmdyYXBoaWMsdT0hdjtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBjLnBsb3RZKXt2fHwoYy5ncmFwaGljPXY9bC5yZW5kZXJlci5wYXRoKCkuYWRkKGUuZ3JvdXApKTtlLmNoYXJ0LnN0eWxlZE1vZGV8fHYuYXR0cihlLnBvaW50QXR0cmlicyhjLGMuc2VsZWN0ZWQmJiJzZWxlY3QiKSkuc2hhZG93KGUub3B0aW9ucy5zaGFkb3cpO3ZhciB4PXYuc3Ryb2tlV2lkdGgoKSUyLzI7dmFyIHQ9TWF0aC5yb3VuZChjLnBsb3RYKS14O3ZhciB6PWMucGxvdE9wZW47dmFyIEE9Yy5wbG90Q2xvc2U7dmFyIG49TWF0aC5taW4oeixBKTt6PU1hdGgubWF4KHosQSk7dmFyIGE9TWF0aC5yb3VuZChjLnNoYXBlQXJncy53aWR0aC8yKTtBPXE/eiE9PWMueUJvdHRvbTpNYXRoLnJvdW5kKG4pIT09TWF0aC5yb3VuZChjLnBsb3RIaWdoKTt2YXIgaD1xP01hdGgucm91bmQobikhPT1NYXRoLnJvdW5kKGMucGxvdEhpZ2gpOgp6IT09Yy55Qm90dG9tO249TWF0aC5yb3VuZChuKSt4O3o9TWF0aC5yb3VuZCh6KSt4O3g9W107eC5wdXNoKFsiTSIsdC1hLHpdLFsiTCIsdC1hLG5dLFsiTCIsdCthLG5dLFsiTCIsdCthLHpdLFsiWiJdLFsiTSIsdCxuXSxbIkwiLHQsQT9NYXRoLnJvdW5kKHE/Yy55Qm90dG9tOmMucGxvdEhpZ2gpOm5dLFsiTSIsdCx6XSxbIkwiLHQsaD9NYXRoLnJvdW5kKHE/Yy5wbG90SGlnaDpjLnlCb3R0b20pOnpdKTt2W3U/ImF0dHIiOiJhbmltYXRlIl0oe2Q6eH0pLmFkZENsYXNzKGMuZ2V0Q2xhc3NOYW1lKCksITApfX0pfX0pOyIifSk7SyhsLCJtaXhpbnMvb24tc2VyaWVzLmpzIixbbFsicGFydHMvR2xvYmFscy5qcyJdLGxbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihsLHUpe3ZhciBCPXUuZGVmaW5lZCx0PXUuc3RhYmxlU29ydCxFPWwuc2VyaWVzVHlwZXM7cmV0dXJue2dldFBsb3RCb3g6ZnVuY3Rpb24oKXtyZXR1cm4gbC5TZXJpZXMucHJvdG90eXBlLmdldFBsb3RCb3guY2FsbCh0aGlzLm9wdGlvbnMub25TZXJpZXMmJgp0aGlzLmNoYXJ0LmdldCh0aGlzLm9wdGlvbnMub25TZXJpZXMpfHx0aGlzKX0sdHJhbnNsYXRlOmZ1bmN0aW9uKCl7RS5jb2x1bW4ucHJvdG90eXBlLnRyYW5zbGF0ZS5hcHBseSh0aGlzKTt2YXIgZT10aGlzLGw9ZS5vcHRpb25zLHE9ZS5jaGFydCxjPWUucG9pbnRzLHY9Yy5sZW5ndGgtMSx1LEc9bC5vblNlcmllcztHPUcmJnEuZ2V0KEcpO2w9bC5vbktleXx8InkiO3ZhciBDPUcmJkcub3B0aW9ucy5zdGVwLHo9RyYmRy5wb2ludHMsQT16JiZ6Lmxlbmd0aCxuPXEuaW52ZXJ0ZWQsYT1lLnhBeGlzLGg9ZS55QXhpcyxnPTAsSTtpZihHJiZHLnZpc2libGUmJkEpe2c9KEcucG9pbnRYT2Zmc2V0fHwwKSsoRy5iYXJXfHwwKS8yO3E9Ry5jdXJyZW50RGF0YUdyb3VwaW5nO3ZhciBEPXpbQS0xXS54KyhxP3EudG90YWxSYW5nZTowKTt0KGMsZnVuY3Rpb24oYSxjKXtyZXR1cm4gYS54LWMueH0pO2ZvcihsPSJwbG90IitsWzBdLnRvVXBwZXJDYXNlKCkrbC5zdWJzdHIoMSk7QS0tJiZjW3ZdOyl7dmFyIG09CnpbQV07cT1jW3ZdO3EueT1tLnk7aWYobS54PD1xLngmJiJ1bmRlZmluZWQiIT09dHlwZW9mIG1bbF0pe2lmKHEueDw9RCYmKHEucGxvdFk9bVtsXSxtLng8cS54JiYhQyYmKEk9eltBKzFdKSYmInVuZGVmaW5lZCIhPT10eXBlb2YgSVtsXSkpe3ZhciBrPShxLngtbS54KS8oSS54LW0ueCk7cS5wbG90WSs9ayooSVtsXS1tW2xdKTtxLnkrPWsqKEkueS1tLnkpfXYtLTtBKys7aWYoMD52KWJyZWFrfX19Yy5mb3JFYWNoKGZ1bmN0aW9uKGQscCl7ZC5wbG90WCs9ZztpZigidW5kZWZpbmVkIj09PXR5cGVvZiBkLnBsb3RZfHxuKTA8PWQucGxvdFgmJmQucGxvdFg8PWEubGVuP24/KGQucGxvdFk9YS50cmFuc2xhdGUoZC54LDAsMSwwLDEpLGQucGxvdFg9QihkLnkpP2gudHJhbnNsYXRlKGQueSwwLDAsMCwxKTowKTpkLnBsb3RZPShhLm9wcG9zaXRlPzA6ZS55QXhpcy5sZW4pK2Eub2Zmc2V0OmQuc2hhcGVBcmdzPXt9O2lmKCh1PWNbcC0xXSkmJnUucGxvdFg9PT1kLnBsb3RYKXsidW5kZWZpbmVkIj09PQp0eXBlb2YgdS5zdGFja0luZGV4JiYodS5zdGFja0luZGV4PTApO3ZhciByPXUuc3RhY2tJbmRleCsxfWQuc3RhY2tJbmRleD1yfSk7dGhpcy5vblNlcmllcz1HfX19KTtLKGwsInBhcnRzL0ZsYWdzU2VyaWVzLmpzIixbbFsicGFydHMvR2xvYmFscy5qcyJdLGxbInBhcnRzL1NWR0VsZW1lbnQuanMiXSxsWyJwYXJ0cy9TVkdSZW5kZXJlci5qcyJdLGxbInBhcnRzL1V0aWxpdGllcy5qcyJdLGxbIm1peGlucy9vbi1zZXJpZXMuanMiXV0sZnVuY3Rpb24obCx1LEIsdCxFKXtmdW5jdGlvbiBlKGEpe2hbYSsicGluIl09ZnVuY3Rpb24oYyxnLGUsayxkKXt2YXIgcD1kJiZkLmFuY2hvclg7ZD1kJiZkLmFuY2hvclk7ImNpcmNsZSI9PT1hJiZrPmUmJihjLT1NYXRoLnJvdW5kKChrLWUpLzIpLGU9ayk7dmFyIHI9aFthXShjLGcsZSxrKTtpZihwJiZkKXt2YXIgdz1wOyJjaXJjbGUiPT09YT93PWMrZS8yOihjPXJbMF0sZT1yWzFdLCJNIj09PWNbMF0mJiJMIj09PWVbMF0mJih3PShjWzFdK2VbMV0pLwoyKSk7ci5wdXNoKFsiTSIsdyxnPmQ/ZzpnK2tdLFsiTCIscCxkXSk7cj1yLmNvbmNhdChoLmNpcmNsZShwLTEsZC0xLDIsMikpfXJldHVybiByfX12YXIgeD10LmFkZEV2ZW50LHE9dC5kZWZpbmVkLGM9dC5pc051bWJlcix2PXQubWVyZ2UsSj10Lm9iamVjdEVhY2gsRz10LnNlcmllc1R5cGUsQz10LndyYXA7dD1sLm5vb3A7dmFyIHo9bC5SZW5kZXJlcixBPWwuU2VyaWVzLG49bC5UcmFja2VyTWl4aW4sYT1sLlZNTFJlbmRlcmVyLGg9Qi5wcm90b3R5cGUuc3ltYm9scztHKCJmbGFncyIsImNvbHVtbiIse3BvaW50UmFuZ2U6MCxhbGxvd092ZXJsYXBYOiExLHNoYXBlOiJmbGFnIixzdGFja0Rpc3RhbmNlOjEyLHRleHRBbGlnbjoiY2VudGVyIix0b29sdGlwOntwb2ludEZvcm1hdDoie3BvaW50LnRleHR9PGJyLz4ifSx0aHJlc2hvbGQ6bnVsbCx5Oi0zMCxmaWxsQ29sb3I6IiNmZmZmZmYiLGxpbmVXaWR0aDoxLHN0YXRlczp7aG92ZXI6e2xpbmVDb2xvcjoiIzAwMDAwMCIsZmlsbENvbG9yOiIjY2NkNmViIn19LApzdHlsZTp7Zm9udFNpemU6IjExcHgiLGZvbnRXZWlnaHQ6ImJvbGQifX0se3NvcnRlZDohMSxub1NoYXJlZFRvb2x0aXA6ITAsYWxsb3dERzohMSx0YWtlT3JkaW5hbFBvc2l0aW9uOiExLHRyYWNrZXJHcm91cHM6WyJtYXJrZXJHcm91cCJdLGZvcmNlQ3JvcDohMCxpbml0OkEucHJvdG90eXBlLmluaXQscG9pbnRBdHRyaWJzOmZ1bmN0aW9uKGEsYyl7dmFyIGc9dGhpcy5vcHRpb25zLGU9YSYmYS5jb2xvcnx8dGhpcy5jb2xvcixrPWcubGluZUNvbG9yLGQ9YSYmYS5saW5lV2lkdGg7YT1hJiZhLmZpbGxDb2xvcnx8Zy5maWxsQ29sb3I7YyYmKGE9Zy5zdGF0ZXNbY10uZmlsbENvbG9yLGs9Zy5zdGF0ZXNbY10ubGluZUNvbG9yLGQ9Zy5zdGF0ZXNbY10ubGluZVdpZHRoKTtyZXR1cm57ZmlsbDphfHxlLHN0cm9rZTprfHxlLCJzdHJva2Utd2lkdGgiOmR8fGcubGluZVdpZHRofHwwfX0sdHJhbnNsYXRlOkUudHJhbnNsYXRlLGdldFBsb3RCb3g6RS5nZXRQbG90Qm94LGRyYXdQb2ludHM6ZnVuY3Rpb24oKXt2YXIgYT0KdGhpcy5wb2ludHMsYz10aGlzLmNoYXJ0LGU9Yy5yZW5kZXJlcixoPWMuaW52ZXJ0ZWQsaz10aGlzLm9wdGlvbnMsZD1rLnkscCxyPXRoaXMueUF4aXMsdz17fSxiPVtdO2ZvcihwPWEubGVuZ3RoO3AtLTspe3ZhciBmPWFbcF07dmFyIG49KGg/Zi5wbG90WTpmLnBsb3RYKT50aGlzLnhBeGlzLmxlbjt2YXIgSD1mLnBsb3RYO3ZhciBGPWYuc3RhY2tJbmRleDt2YXIgdD1mLm9wdGlvbnMuc2hhcGV8fGsuc2hhcGU7dmFyIHg9Zi5wbG90WTsidW5kZWZpbmVkIiE9PXR5cGVvZiB4JiYoeD1mLnBsb3RZK2QtKCJ1bmRlZmluZWQiIT09dHlwZW9mIEYmJkYqay5zdGFja0Rpc3RhbmNlKSk7Zi5hbmNob3JYPUY/dm9pZCAwOmYucGxvdFg7dmFyIHo9Rj92b2lkIDA6Zi5wbG90WTt2YXIgQT0iZmxhZyIhPT10O0Y9Zi5ncmFwaGljOyJ1bmRlZmluZWQiIT09dHlwZW9mIHgmJjA8PUgmJiFuPyhGfHwoRj1mLmdyYXBoaWM9ZS5sYWJlbCgiIixudWxsLG51bGwsdCxudWxsLG51bGwsay51c2VIVE1MKSwKYy5zdHlsZWRNb2RlfHxGLmF0dHIodGhpcy5wb2ludEF0dHJpYnMoZikpLmNzcyh2KGsuc3R5bGUsZi5zdHlsZSkpLEYuYXR0cih7YWxpZ246QT8iY2VudGVyIjoibGVmdCIsd2lkdGg6ay53aWR0aCxoZWlnaHQ6ay5oZWlnaHQsInRleHQtYWxpZ24iOmsudGV4dEFsaWdufSkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtcG9pbnQiKS5hZGQodGhpcy5tYXJrZXJHcm91cCksZi5ncmFwaGljLmRpdiYmKGYuZ3JhcGhpYy5kaXYucG9pbnQ9ZiksYy5zdHlsZWRNb2RlfHxGLnNoYWRvdyhrLnNoYWRvdyksRi5pc05ldz0hMCksMDxIJiYoSC09Ri5zdHJva2VXaWR0aCgpJTIpLHQ9e3k6eCxhbmNob3JZOnp9LGsuYWxsb3dPdmVybGFwWCYmKHQueD1ILHQuYW5jaG9yWD1mLmFuY2hvclgpLEYuYXR0cih7dGV4dDpmLm9wdGlvbnMudGl0bGV8fGsudGl0bGV8fCJBIn0pW0YuaXNOZXc/ImF0dHIiOiJhbmltYXRlIl0odCksay5hbGxvd092ZXJsYXBYfHwod1tmLnBsb3RYXT93W2YucGxvdFhdLnNpemU9Ck1hdGgubWF4KHdbZi5wbG90WF0uc2l6ZSxGLndpZHRoKTp3W2YucGxvdFhdPXthbGlnbjpBPy41OjAsc2l6ZTpGLndpZHRoLHRhcmdldDpILGFuY2hvclg6SH0pLGYudG9vbHRpcFBvcz1bSCx4K3IucG9zLWMucGxvdFRvcF0pOkYmJihmLmdyYXBoaWM9Ri5kZXN0cm95KCkpfWsuYWxsb3dPdmVybGFwWHx8KEoodyxmdW5jdGlvbihhKXthLnBsb3RYPWEuYW5jaG9yWDtiLnB1c2goYSl9KSxsLmRpc3RyaWJ1dGUoYixoP3IubGVuOnRoaXMueEF4aXMubGVuLDEwMCksYS5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZhciBhPWIuZ3JhcGhpYyYmd1tiLnBsb3RYXTthJiYoYi5ncmFwaGljW2IuZ3JhcGhpYy5pc05ldz8iYXR0ciI6ImFuaW1hdGUiXSh7eDphLnBvcythLmFsaWduKmEuc2l6ZSxhbmNob3JYOmIuYW5jaG9yWH0pLHEoYS5wb3MpP2IuZ3JhcGhpYy5pc05ldz0hMTooYi5ncmFwaGljLmF0dHIoe3g6LTk5OTksYW5jaG9yWDotOTk5OX0pLGIuZ3JhcGhpYy5pc05ldz0hMCkpfSkpO2sudXNlSFRNTCYmCkModGhpcy5tYXJrZXJHcm91cCwib24iLGZ1bmN0aW9uKGIpe3JldHVybiB1LnByb3RvdHlwZS5vbi5hcHBseShiLmFwcGx5KHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKX0pfSxkcmF3VHJhY2tlcjpmdW5jdGlvbigpe3ZhciBhPXRoaXMucG9pbnRzO24uZHJhd1RyYWNrZXJQb2ludC5hcHBseSh0aGlzKTthLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIGc9Yy5ncmFwaGljO2cmJngoZy5lbGVtZW50LCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7MDxjLnN0YWNrSW5kZXgmJiFjLnJhaXNlZCYmKGMuX3k9Zy55LGcuYXR0cih7eTpjLl95LTh9KSxjLnJhaXNlZD0hMCk7YS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EhPT1jJiZhLnJhaXNlZCYmYS5ncmFwaGljJiYoYS5ncmFwaGljLmF0dHIoe3k6YS5feX0pLGEucmFpc2VkPSExKX0pfSl9KX0sYW5pbWF0ZTpmdW5jdGlvbihhKXthJiZ0aGlzLnNldENsaXAoKX0sc2V0Q2xpcDpmdW5jdGlvbigpe0EucHJvdG90eXBlLnNldENsaXAuYXBwbHkodGhpcywKYXJndW1lbnRzKTshMSE9PXRoaXMub3B0aW9ucy5jbGlwJiZ0aGlzLnNoYXJlZENsaXBLZXkmJnRoaXMubWFya2VyR3JvdXAuY2xpcCh0aGlzLmNoYXJ0W3RoaXMuc2hhcmVkQ2xpcEtleV0pfSxidWlsZEtEVHJlZTp0LGludmVydEdyb3Vwczp0fSx7aXNWYWxpZDpmdW5jdGlvbigpe3JldHVybiBjKHRoaXMueSl8fCJ1bmRlZmluZWQiPT09dHlwZW9mIHRoaXMueX19KTtoLmZsYWc9ZnVuY3Rpb24oYSxjLGUsbCxrKXt2YXIgZD1rJiZrLmFuY2hvclh8fGE7az1rJiZrLmFuY2hvcll8fGM7dmFyIGc9aC5jaXJjbGUoZC0xLGstMSwyLDIpO2cucHVzaChbIk0iLGQsa10sWyJMIixhLGMrbF0sWyJMIixhLGNdLFsiTCIsYStlLGNdLFsiTCIsYStlLGMrbF0sWyJMIixhLGMrbF0sWyJaIl0pO3JldHVybiBnfTtlKCJjaXJjbGUiKTtlKCJzcXVhcmUiKTt6PT09YSYmWyJjaXJjbGVwaW4iLCJmbGFnIiwic3F1YXJlcGluIl0uZm9yRWFjaChmdW5jdGlvbihjKXthLnByb3RvdHlwZS5zeW1ib2xzW2NdPQpoW2NdfSk7IiJ9KTtLKGwsInBhcnRzL1JhbmdlU2VsZWN0b3IuanMiLFtsWyJwYXJ0cy9BeGlzLmpzIl0sbFsicGFydHMvQ2hhcnQuanMiXSxsWyJwYXJ0cy9HbG9iYWxzLmpzIl0sbFsicGFydHMvT3B0aW9ucy5qcyJdLGxbInBhcnRzL1NWR0VsZW1lbnQuanMiXSxsWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24obCx1LEIsdCxFLGUpe3ZhciB4PXQuZGVmYXVsdE9wdGlvbnMscT1lLmFkZEV2ZW50LGM9ZS5jcmVhdGVFbGVtZW50LHY9ZS5jc3MsSj1lLmRlZmluZWQsRz1lLmRlc3Ryb3lPYmplY3RQcm9wZXJ0aWVzLEM9ZS5kaXNjYXJkRWxlbWVudCx6PWUuZXh0ZW5kLEE9ZS5maXJlRXZlbnQsbj1lLmlzTnVtYmVyLGE9ZS5tZXJnZSxoPWUub2JqZWN0RWFjaCxnPWUucGljayxJPWUucEludCxEPWUuc3BsYXQ7eih4LHtyYW5nZVNlbGVjdG9yOnt2ZXJ0aWNhbEFsaWduOiJ0b3AiLGJ1dHRvblRoZW1lOnt3aWR0aDoyOCxoZWlnaHQ6MTgscGFkZGluZzoyLHpJbmRleDo3fSwKZmxvYXRpbmc6ITEseDowLHk6MCxoZWlnaHQ6dm9pZCAwLGlucHV0UG9zaXRpb246e2FsaWduOiJyaWdodCIseDowLHk6MH0sYnV0dG9uUG9zaXRpb246e2FsaWduOiJsZWZ0Iix4OjAseTowfSxsYWJlbFN0eWxlOntjb2xvcjoiIzY2NjY2NiJ9fX0pO3gubGFuZz1hKHgubGFuZyx7cmFuZ2VTZWxlY3Rvclpvb206Ilpvb20iLHJhbmdlU2VsZWN0b3JGcm9tOiJGcm9tIixyYW5nZVNlbGVjdG9yVG86IlRvIn0pO3ZhciBtPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShhKXt0aGlzLmJ1dHRvbnM9dm9pZCAwO3RoaXMuYnV0dG9uT3B0aW9ucz1lLnByb3RvdHlwZS5kZWZhdWx0QnV0dG9uczt0aGlzLm9wdGlvbnM9dm9pZCAwO3RoaXMuY2hhcnQ9YTt0aGlzLmluaXQoYSl9ZS5wcm90b3R5cGUuY2xpY2tCdXR0b249ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLmNoYXJ0LGU9dGhpcy5idXR0b25PcHRpb25zW2FdLGI9ZC54QXhpc1swXSxmPWQuc2Nyb2xsZXImJmQuc2Nyb2xsZXIuZ2V0VW5pb25FeHRyZW1lcygpfHwKYnx8e30scD1mLmRhdGFNaW4saz1mLmRhdGFNYXgsaD1iJiZNYXRoLnJvdW5kKE1hdGgubWluKGIubWF4LGcoayxiLm1heCkpKSxtPWUudHlwZTtmPWUuX3JhbmdlO3ZhciB2LHU9ZS5kYXRhR3JvdXBpbmc7aWYobnVsbCE9PXAmJm51bGwhPT1rKXtkLmZpeGVkUmFuZ2U9Zjt1JiYodGhpcy5mb3JjZWREYXRhR3JvdXBpbmc9ITAsbC5wcm90b3R5cGUuc2V0RGF0YUdyb3VwaW5nLmNhbGwoYnx8e2NoYXJ0OnRoaXMuY2hhcnR9LHUsITEpLHRoaXMuZnJvemVuU3RhdGVzPWUucHJlc2VydmVEYXRhR3JvdXBpbmcpO2lmKCJtb250aCI9PT1tfHwieWVhciI9PT1tKWlmKGIpe209e3JhbmdlOmUsbWF4OmgsY2hhcnQ6ZCxkYXRhTWluOnAsZGF0YU1heDprfTt2YXIgdD1iLm1pbkZyb21SYW5nZS5jYWxsKG0pO24obS5uZXdNYXgpJiYoaD1tLm5ld01heCl9ZWxzZSBmPWU7ZWxzZSBpZihmKXQ9TWF0aC5tYXgoaC1mLHApLGg9TWF0aC5taW4odCtmLGspO2Vsc2UgaWYoInl0ZCI9PT1tKWlmKGIpInVuZGVmaW5lZCI9PT0KdHlwZW9mIGsmJihwPU51bWJlci5NQVhfVkFMVUUsaz1OdW1iZXIuTUlOX1ZBTFVFLGQuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYil7Yj1iLnhEYXRhO3A9TWF0aC5taW4oYlswXSxwKTtrPU1hdGgubWF4KGJbYi5sZW5ndGgtMV0sayl9KSxjPSExKSxoPXRoaXMuZ2V0WVRERXh0cmVtZXMoayxwLGQudGltZS51c2VVVEMpLHQ9dj1oLm1pbixoPWgubWF4O2Vsc2V7dGhpcy5kZWZlcnJlZFlURENsaWNrPWE7cmV0dXJufWVsc2UiYWxsIj09PW0mJmImJih0PXAsaD1rKTt0Kz1lLl9vZmZzZXRNaW47aCs9ZS5fb2Zmc2V0TWF4O3RoaXMuc2V0U2VsZWN0ZWQoYSk7aWYoYiliLnNldEV4dHJlbWVzKHQsaCxnKGMsMSksbnVsbCx7dHJpZ2dlcjoicmFuZ2VTZWxlY3RvckJ1dHRvbiIscmFuZ2VTZWxlY3RvckJ1dHRvbjplfSk7ZWxzZXt2YXIgeD1EKGQub3B0aW9ucy54QXhpcylbMF07dmFyIHo9eC5yYW5nZTt4LnJhbmdlPWY7dmFyIEE9eC5taW47eC5taW49djtxKGQsImxvYWQiLGZ1bmN0aW9uKCl7eC5yYW5nZT0Kejt4Lm1pbj1BfSl9fX07ZS5wcm90b3R5cGUuc2V0U2VsZWN0ZWQ9ZnVuY3Rpb24oYSl7dGhpcy5zZWxlY3RlZD10aGlzLm9wdGlvbnMuc2VsZWN0ZWQ9YX07ZS5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLGQ9YS5vcHRpb25zLnJhbmdlU2VsZWN0b3IsZT1kLmJ1dHRvbnN8fGMuZGVmYXVsdEJ1dHRvbnMuc2xpY2UoKSxiPWQuc2VsZWN0ZWQsZj1mdW5jdGlvbigpe3ZhciBiPWMubWluSW5wdXQsYT1jLm1heElucHV0O2ImJmIuYmx1ciYmQShiLCJibHVyIik7YSYmYS5ibHVyJiZBKGEsImJsdXIiKX07Yy5jaGFydD1hO2Mub3B0aW9ucz1kO2MuYnV0dG9ucz1bXTtjLmJ1dHRvbk9wdGlvbnM9ZTt0aGlzLnVuTW91c2VEb3duPXEoYS5jb250YWluZXIsIm1vdXNlZG93biIsZik7dGhpcy51blJlc2l6ZT1xKGEsInJlc2l6ZSIsZik7ZS5mb3JFYWNoKGMuY29tcHV0ZUJ1dHRvblJhbmdlKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBiJiZlW2JdJiZ0aGlzLmNsaWNrQnV0dG9uKGIsCiExKTtxKGEsImxvYWQiLGZ1bmN0aW9uKCl7YS54QXhpcyYmYS54QXhpc1swXSYmcShhLnhBeGlzWzBdLCJzZXRFeHRyZW1lcyIsZnVuY3Rpb24oYil7dGhpcy5tYXgtdGhpcy5taW4hPT1hLmZpeGVkUmFuZ2UmJiJyYW5nZVNlbGVjdG9yQnV0dG9uIiE9PWIudHJpZ2dlciYmInVwZGF0ZWREYXRhIiE9PWIudHJpZ2dlciYmYy5mb3JjZWREYXRhR3JvdXBpbmcmJiFjLmZyb3plblN0YXRlcyYmdGhpcy5zZXREYXRhR3JvdXBpbmcoITEsITEpfSl9KX07ZS5wcm90b3R5cGUudXBkYXRlQnV0dG9uU3RhdGVzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxjPXRoaXMuY2hhcnQsZT1jLnhBeGlzWzBdLGc9TWF0aC5yb3VuZChlLm1heC1lLm1pbiksYj0hZS5oYXNWaXNpYmxlU2VyaWVzLGY9Yy5zY3JvbGxlciYmYy5zY3JvbGxlci5nZXRVbmlvbkV4dHJlbWVzKCl8fGUsaz1mLmRhdGFNaW4saD1mLmRhdGFNYXg7Yz1hLmdldFlUREV4dHJlbWVzKGgsayxjLnRpbWUudXNlVVRDKTt2YXIgbD1jLm1pbiwKbT1jLm1heCxxPWEuc2VsZWN0ZWQsdj1uKHEpLHU9YS5vcHRpb25zLmFsbEJ1dHRvbnNFbmFibGVkLHQ9YS5idXR0b25zO2EuYnV0dG9uT3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGMsZil7dmFyIGQ9Yy5fcmFuZ2UscD1jLnR5cGUscj1jLmNvdW50fHwxLHc9dFtmXSxuPTAseT1jLl9vZmZzZXRNYXgtYy5fb2Zmc2V0TWluO2M9Zj09PXE7dmFyIHg9ZD5oLWssRj1kPGUubWluUmFuZ2Usej0hMSxIPSExO2Q9ZD09PWc7KCJtb250aCI9PT1wfHwieWVhciI9PT1wKSYmZyszNkU1Pj04NjRFNSp7bW9udGg6MjgseWVhcjozNjV9W3BdKnIteSYmZy0zNkU1PD04NjRFNSp7bW9udGg6MzEseWVhcjozNjZ9W3BdKnIreT9kPSEwOiJ5dGQiPT09cD8oZD1tLWwreT09PWcsej0hYyk6ImFsbCI9PT1wJiYoZD1lLm1heC1lLm1pbj49aC1rLEg9IWMmJnYmJmQpO3A9IXUmJih4fHxGfHxIfHxiKTtyPWMmJmR8fGQmJiF2JiYhenx8YyYmYS5mcm96ZW5TdGF0ZXM7cD9uPTM6ciYmKHY9ITAsbj0yKTt3LnN0YXRlIT09Cm4mJih3LnNldFN0YXRlKG4pLDA9PT1uJiZxPT09ZiYmYS5zZXRTZWxlY3RlZChudWxsKSl9KX07ZS5wcm90b3R5cGUuY29tcHV0ZUJ1dHRvblJhbmdlPWZ1bmN0aW9uKGEpe3ZhciBjPWEudHlwZSxkPWEuY291bnR8fDEsZT17bWlsbGlzZWNvbmQ6MSxzZWNvbmQ6MUUzLG1pbnV0ZTo2RTQsaG91cjozNkU1LGRheTo4NjRFNSx3ZWVrOjYwNDhFNX07aWYoZVtjXSlhLl9yYW5nZT1lW2NdKmQ7ZWxzZSBpZigibW9udGgiPT09Y3x8InllYXIiPT09YylhLl9yYW5nZT04NjRFNSp7bW9udGg6MzAseWVhcjozNjV9W2NdKmQ7YS5fb2Zmc2V0TWluPWcoYS5vZmZzZXRNaW4sMCk7YS5fb2Zmc2V0TWF4PWcoYS5vZmZzZXRNYXgsMCk7YS5fcmFuZ2UrPWEuX29mZnNldE1heC1hLl9vZmZzZXRNaW59O2UucHJvdG90eXBlLnNldElucHV0VmFsdWU9ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLmNoYXJ0Lm9wdGlvbnMucmFuZ2VTZWxlY3RvcixlPXRoaXMuY2hhcnQudGltZSxiPXRoaXNbYSsiSW5wdXQiXTsKSihjKSYmKGIucHJldmlvdXNWYWx1ZT1iLkhDVGltZSxiLkhDVGltZT1jKTtiLnZhbHVlPWUuZGF0ZUZvcm1hdChkLmlucHV0RWRpdERhdGVGb3JtYXR8fCIlWS0lbS0lZCIsYi5IQ1RpbWUpO3RoaXNbYSsiRGF0ZUJveCJdLmF0dHIoe3RleHQ6ZS5kYXRlRm9ybWF0KGQuaW5wdXREYXRlRm9ybWF0fHwiJWIgJWUsICVZIixiLkhDVGltZSl9KX07ZS5wcm90b3R5cGUuc2hvd0lucHV0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuaW5wdXRHcm91cCxkPXRoaXNbYSsiRGF0ZUJveCJdO3YodGhpc1thKyJJbnB1dCJdLHtsZWZ0OmMudHJhbnNsYXRlWCtkLngrInB4Iix0b3A6Yy50cmFuc2xhdGVZKyJweCIsd2lkdGg6ZC53aWR0aC0yKyJweCIsaGVpZ2h0OmQuaGVpZ2h0LTIrInB4Iixib3JkZXI6IjJweCBzb2xpZCBzaWx2ZXIifSl9O2UucHJvdG90eXBlLmhpZGVJbnB1dD1mdW5jdGlvbihhKXt2KHRoaXNbYSsiSW5wdXQiXSx7Ym9yZGVyOjAsd2lkdGg6IjFweCIsaGVpZ2h0OiIxcHgifSk7CnRoaXMuc2V0SW5wdXRWYWx1ZShhKX07ZS5wcm90b3R5cGUuZHJhd0lucHV0PWZ1bmN0aW9uKGQpe2Z1bmN0aW9uIGUoKXt2YXIgYj1tLnZhbHVlLGE9KGguaW5wdXREYXRlUGFyc2VyfHxEYXRlLnBhcnNlKShiKSxjPWsueEF4aXNbMF0sZj1rLnNjcm9sbGVyJiZrLnNjcm9sbGVyLnhBeGlzP2suc2Nyb2xsZXIueEF4aXM6YyxkPWYuZGF0YU1pbjtmPWYuZGF0YU1heDthIT09bS5wcmV2aW91c1ZhbHVlJiYobS5wcmV2aW91c1ZhbHVlPWEsbihhKXx8KGE9Yi5zcGxpdCgiLSIpLGE9RGF0ZS5VVEMoSShhWzBdKSxJKGFbMV0pLTEsSShhWzJdKSkpLG4oYSkmJihrLnRpbWUudXNlVVRDfHwoYSs9NkU0KihuZXcgRGF0ZSkuZ2V0VGltZXpvbmVPZmZzZXQoKSkscT9hPmcubWF4SW5wdXQuSENUaW1lP2E9dm9pZCAwOmE8ZCYmKGE9ZCk6YTxnLm1pbklucHV0LkhDVGltZT9hPXZvaWQgMDphPmYmJihhPWYpLCJ1bmRlZmluZWQiIT09dHlwZW9mIGEmJmMuc2V0RXh0cmVtZXMocT9hOmMubWluLApxP2MubWF4OmEsdm9pZCAwLHZvaWQgMCx7dHJpZ2dlcjoicmFuZ2VTZWxlY3RvcklucHV0In0pKSl9dmFyIGc9dGhpcyxrPWcuY2hhcnQsYj1rLnJlbmRlcmVyLnN0eWxlfHx7fSxmPWsucmVuZGVyZXIsaD1rLm9wdGlvbnMucmFuZ2VTZWxlY3RvcixsPWcuZGl2LHE9Im1pbiI9PT1kLG0sdSx0PXRoaXMuaW5wdXRHcm91cDt0aGlzW2QrIkxhYmVsIl09dT1mLmxhYmVsKHgubGFuZ1txPyJyYW5nZVNlbGVjdG9yRnJvbSI6InJhbmdlU2VsZWN0b3JUbyJdLHRoaXMuaW5wdXRHcm91cC5vZmZzZXQpLmFkZENsYXNzKCJoaWdoY2hhcnRzLXJhbmdlLWxhYmVsIikuYXR0cih7cGFkZGluZzoyfSkuYWRkKHQpO3Qub2Zmc2V0Kz11LndpZHRoKzU7dGhpc1tkKyJEYXRlQm94Il09Zj1mLmxhYmVsKCIiLHQub2Zmc2V0KS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1yYW5nZS1pbnB1dCIpLmF0dHIoe3BhZGRpbmc6Mix3aWR0aDpoLmlucHV0Qm94V2lkdGh8fDkwLGhlaWdodDpoLmlucHV0Qm94SGVpZ2h0fHwKMTcsInRleHQtYWxpZ24iOiJjZW50ZXIifSkub24oImNsaWNrIixmdW5jdGlvbigpe2cuc2hvd0lucHV0KGQpO2dbZCsiSW5wdXQiXS5mb2N1cygpfSk7ay5zdHlsZWRNb2RlfHxmLmF0dHIoe3N0cm9rZTpoLmlucHV0Qm94Qm9yZGVyQ29sb3J8fCIjY2NjY2NjIiwic3Ryb2tlLXdpZHRoIjoxfSk7Zi5hZGQodCk7dC5vZmZzZXQrPWYud2lkdGgrKHE/MTA6MCk7dGhpc1tkKyJJbnB1dCJdPW09YygiaW5wdXQiLHtuYW1lOmQsY2xhc3NOYW1lOiJoaWdoY2hhcnRzLXJhbmdlLXNlbGVjdG9yIix0eXBlOiJ0ZXh0In0se3RvcDprLnBsb3RUb3ArInB4In0sbCk7ay5zdHlsZWRNb2RlfHwodS5jc3MoYShiLGgubGFiZWxTdHlsZSkpLGYuY3NzKGEoe2NvbG9yOiIjMzMzMzMzIn0sYixoLmlucHV0U3R5bGUpKSx2KG0seih7cG9zaXRpb246ImFic29sdXRlIixib3JkZXI6MCx3aWR0aDoiMXB4IixoZWlnaHQ6IjFweCIscGFkZGluZzowLHRleHRBbGlnbjoiY2VudGVyIixmb250U2l6ZTpiLmZvbnRTaXplLApmb250RmFtaWx5OmIuZm9udEZhbWlseSx0b3A6Ii05OTk5ZW0ifSxoLmlucHV0U3R5bGUpKSk7bS5vbmZvY3VzPWZ1bmN0aW9uKCl7Zy5zaG93SW5wdXQoZCl9O20ub25ibHVyPWZ1bmN0aW9uKCl7bT09PUIuZG9jLmFjdGl2ZUVsZW1lbnQmJmUoKTtnLmhpZGVJbnB1dChkKTttLmJsdXIoKX07bS5vbmNoYW5nZT1lO20ub25rZXlwcmVzcz1mdW5jdGlvbihhKXsxMz09PWEua2V5Q29kZSYmZSgpfX07ZS5wcm90b3R5cGUuZ2V0UG9zaXRpb249ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNoYXJ0LGM9YS5vcHRpb25zLnJhbmdlU2VsZWN0b3I7YT0idG9wIj09PWMudmVydGljYWxBbGlnbj9hLnBsb3RUb3AtYS5heGlzT2Zmc2V0WzBdOjA7cmV0dXJue2J1dHRvblRvcDphK2MuYnV0dG9uUG9zaXRpb24ueSxpbnB1dFRvcDphK2MuaW5wdXRQb3NpdGlvbi55LTEwfX07ZS5wcm90b3R5cGUuZ2V0WVRERXh0cmVtZXM9ZnVuY3Rpb24oYSxjLGUpe3ZhciBkPXRoaXMuY2hhcnQudGltZSxiPW5ldyBkLkRhdGUoYSksCmY9ZC5nZXQoIkZ1bGxZZWFyIixiKTtlPWU/ZC5EYXRlLlVUQyhmLDAsMSk6K25ldyBkLkRhdGUoZiwwLDEpO2M9TWF0aC5tYXgoY3x8MCxlKTtiPWIuZ2V0VGltZSgpO3JldHVybnttYXg6TWF0aC5taW4oYXx8YixiKSxtaW46Y319O2UucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihhLGUpe3ZhciBkPXRoaXMscD1kLmNoYXJ0LGI9cC5yZW5kZXJlcixmPXAuY29udGFpbmVyLGs9cC5vcHRpb25zLGg9ay5leHBvcnRpbmcmJiExIT09ay5leHBvcnRpbmcuZW5hYmxlZCYmay5uYXZpZ2F0aW9uJiZrLm5hdmlnYXRpb24uYnV0dG9uT3B0aW9ucyxsPXgubGFuZyxuPWQuZGl2LG09ay5yYW5nZVNlbGVjdG9yLHE9ZyhrLmNoYXJ0LnN0eWxlJiZrLmNoYXJ0LnN0eWxlLnpJbmRleCwwKSsxO2s9bS5mbG9hdGluZzt2YXIgdj1kLmJ1dHRvbnM7bj1kLmlucHV0R3JvdXA7dmFyIHU9bS5idXR0b25UaGVtZSx0PW0uYnV0dG9uUG9zaXRpb24sej1tLmlucHV0UG9zaXRpb24sQT1tLmlucHV0RW5hYmxlZCwKQj11JiZ1LnN0YXRlcyxDPXAucGxvdExlZnQsRD1kLmJ1dHRvbkdyb3VwLEUsRz1kLm9wdGlvbnMudmVydGljYWxBbGlnbixJPXAubGVnZW5kLEo9SSYmSS5vcHRpb25zLEs9dC55LE49ei55LE89cC5oYXNMb2FkZWQsUD1PPyJhbmltYXRlIjoiYXR0ciIsTT0wLEw9MDtpZighMSE9PW0uZW5hYmxlZCl7ZC5yZW5kZXJlZHx8KGQuZ3JvdXA9RT1iLmcoInJhbmdlLXNlbGVjdG9yLWdyb3VwIikuYXR0cih7ekluZGV4Ojd9KS5hZGQoKSxkLmJ1dHRvbkdyb3VwPUQ9Yi5nKCJyYW5nZS1zZWxlY3Rvci1idXR0b25zIikuYWRkKEUpLGQuem9vbVRleHQ9Yi50ZXh0KGwucmFuZ2VTZWxlY3Rvclpvb20sMCwxNSkuYWRkKEQpLHAuc3R5bGVkTW9kZXx8KGQuem9vbVRleHQuY3NzKG0ubGFiZWxTdHlsZSksdVsic3Ryb2tlLXdpZHRoIl09Zyh1WyJzdHJva2Utd2lkdGgiXSwwKSksZC5idXR0b25PcHRpb25zLmZvckVhY2goZnVuY3Rpb24oYSxjKXt2W2NdPWIuYnV0dG9uKGEudGV4dCwwLDAsZnVuY3Rpb24oYil7dmFyIGY9CmEuZXZlbnRzJiZhLmV2ZW50cy5jbGljayxlO2YmJihlPWYuY2FsbChhLGIpKTshMSE9PWUmJmQuY2xpY2tCdXR0b24oYyk7ZC5pc0FjdGl2ZT0hMH0sdSxCJiZCLmhvdmVyLEImJkIuc2VsZWN0LEImJkIuZGlzYWJsZWQpLmF0dHIoeyJ0ZXh0LWFsaWduIjoiY2VudGVyIn0pLmFkZChEKX0pLCExIT09QSYmKGQuZGl2PW49YygiZGl2IixudWxsLHtwb3NpdGlvbjoicmVsYXRpdmUiLGhlaWdodDowLHpJbmRleDpxfSksZi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShuLGYpLGQuaW5wdXRHcm91cD1uPWIuZygiaW5wdXQtZ3JvdXAiKS5hZGQoRSksbi5vZmZzZXQ9MCxkLmRyYXdJbnB1dCgibWluIiksZC5kcmF3SW5wdXQoIm1heCIpKSk7ZC56b29tVGV4dFtQXSh7eDpnKEMrdC54LEMpfSk7dmFyIFE9ZyhDK3QueCxDKStkLnpvb21UZXh0LmdldEJCb3goKS53aWR0aCs1O2QuYnV0dG9uT3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGEsYil7dltiXVtQXSh7eDpRfSk7USs9dltiXS53aWR0aCsKZyhtLmJ1dHRvblNwYWNpbmcsNSl9KTtDPXAucGxvdExlZnQtcC5zcGFjaW5nWzNdO2QudXBkYXRlQnV0dG9uU3RhdGVzKCk7aCYmdGhpcy50aXRsZUNvbGxpc2lvbihwKSYmInRvcCI9PT1HJiYicmlnaHQiPT09dC5hbGlnbiYmdC55K0QuZ2V0QkJveCgpLmhlaWdodC0xMjwoaC55fHwwKStoLmhlaWdodCYmKE09LTQwKTtmPXQueC1wLnNwYWNpbmdbM107InJpZ2h0Ij09PXQuYWxpZ24/Zis9TS1DOiJjZW50ZXIiPT09dC5hbGlnbiYmKGYtPUMvMik7RC5hbGlnbih7eTp0Lnksd2lkdGg6RC5nZXRCQm94KCkud2lkdGgsYWxpZ246dC5hbGlnbix4OmZ9LCEwLHAuc3BhY2luZ0JveCk7ZC5ncm91cC5wbGFjZWQ9TztkLmJ1dHRvbkdyb3VwLnBsYWNlZD1POyExIT09QSYmKE09aCYmdGhpcy50aXRsZUNvbGxpc2lvbihwKSYmInRvcCI9PT1HJiYicmlnaHQiPT09ei5hbGlnbiYmei55LW4uZ2V0QkJveCgpLmhlaWdodC0xMjwoaC55fHwwKStoLmhlaWdodCtwLnNwYWNpbmdbMF0/LTQwOjAsCiJsZWZ0Ij09PXouYWxpZ24/Zj1DOiJyaWdodCI9PT16LmFsaWduJiYoZj0tTWF0aC5tYXgocC5heGlzT2Zmc2V0WzFdLC1NKSksbi5hbGlnbih7eTp6Lnksd2lkdGg6bi5nZXRCQm94KCkud2lkdGgsYWxpZ246ei5hbGlnbix4OnoueCtmLTJ9LCEwLHAuc3BhY2luZ0JveCksaD1uLmFsaWduQXR0ci50cmFuc2xhdGVYK24uYWxpZ25PcHRpb25zLngtTStuLmdldEJCb3goKS54KzIsZj1uLmFsaWduT3B0aW9ucy53aWR0aCxsPUQuYWxpZ25BdHRyLnRyYW5zbGF0ZVgrRC5nZXRCQm94KCkueCxDPUQuZ2V0QkJveCgpLndpZHRoKzIwLCh6LmFsaWduPT09dC5hbGlnbnx8bCtDPmgmJmgrZj5sJiZLPE4rbi5nZXRCQm94KCkuaGVpZ2h0KSYmbi5hdHRyKHt0cmFuc2xhdGVYOm4uYWxpZ25BdHRyLnRyYW5zbGF0ZVgrKHAuYXhpc09mZnNldFsxXT49LU0/MDotTSksdHJhbnNsYXRlWTpuLmFsaWduQXR0ci50cmFuc2xhdGVZK0QuZ2V0QkJveCgpLmhlaWdodCsxMH0pLGQuc2V0SW5wdXRWYWx1ZSgibWluIiwKYSksZC5zZXRJbnB1dFZhbHVlKCJtYXgiLGUpLGQuaW5wdXRHcm91cC5wbGFjZWQ9Tyk7ZC5ncm91cC5hbGlnbih7dmVydGljYWxBbGlnbjpHfSwhMCxwLnNwYWNpbmdCb3gpO2E9ZC5ncm91cC5nZXRCQm94KCkuaGVpZ2h0KzIwO2U9ZC5ncm91cC5hbGlnbkF0dHIudHJhbnNsYXRlWTsiYm90dG9tIj09PUcmJihJPUomJiJib3R0b20iPT09Si52ZXJ0aWNhbEFsaWduJiZKLmVuYWJsZWQmJiFKLmZsb2F0aW5nP0kubGVnZW5kSGVpZ2h0K2coSi5tYXJnaW4sMTApOjAsYT1hK0ktMjAsTD1lLWEtKGs/MDptLnkpLShwLnRpdGxlT2Zmc2V0P3AudGl0bGVPZmZzZXRbMl06MCktMTApO2lmKCJ0b3AiPT09RylrJiYoTD0wKSxwLnRpdGxlT2Zmc2V0JiZwLnRpdGxlT2Zmc2V0WzBdJiYoTD1wLnRpdGxlT2Zmc2V0WzBdKSxMKz1wLm1hcmdpblswXS1wLnNwYWNpbmdbMF18fDA7ZWxzZSBpZigibWlkZGxlIj09PUcpaWYoTj09PUspTD0wPk4/ZSt2b2lkIDA6ZTtlbHNlIGlmKE58fEspTD0wPk58fAowPks/TC1NYXRoLm1pbihOLEspOmUtYStOYU47ZC5ncm91cC50cmFuc2xhdGUobS54LG0ueStNYXRoLmZsb29yKEwpKTshMSE9PUEmJihkLm1pbklucHV0LnN0eWxlLm1hcmdpblRvcD1kLmdyb3VwLnRyYW5zbGF0ZVkrInB4IixkLm1heElucHV0LnN0eWxlLm1hcmdpblRvcD1kLmdyb3VwLnRyYW5zbGF0ZVkrInB4Iik7ZC5yZW5kZXJlZD0hMH19O2UucHJvdG90eXBlLmdldEhlaWdodD1mdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucyxjPXRoaXMuZ3JvdXAsZT1hLnksZz1hLmJ1dHRvblBvc2l0aW9uLnksYj1hLmlucHV0UG9zaXRpb24ueTtpZihhLmhlaWdodClyZXR1cm4gYS5oZWlnaHQ7YT1jP2MuZ2V0QkJveCghMCkuaGVpZ2h0KzEzK2U6MDtjPU1hdGgubWluKGIsZyk7aWYoMD5iJiYwPmd8fDA8YiYmMDxnKWErPU1hdGguYWJzKGMpO3JldHVybiBhfTtlLnByb3RvdHlwZS50aXRsZUNvbGxpc2lvbj1mdW5jdGlvbihhKXtyZXR1cm4hKGEub3B0aW9ucy50aXRsZS50ZXh0fHwKYS5vcHRpb25zLnN1YnRpdGxlLnRleHQpfTtlLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oYyl7dmFyIGQ9dGhpcy5jaGFydDthKCEwLGQub3B0aW9ucy5yYW5nZVNlbGVjdG9yLGMpO3RoaXMuZGVzdHJveSgpO3RoaXMuaW5pdChkKTtkLnJhbmdlU2VsZWN0b3IucmVuZGVyKCl9O2UucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGM9YS5taW5JbnB1dCxnPWEubWF4SW5wdXQ7YS51bk1vdXNlRG93bigpO2EudW5SZXNpemUoKTtHKGEuYnV0dG9ucyk7YyYmKGMub25mb2N1cz1jLm9uYmx1cj1jLm9uY2hhbmdlPW51bGwpO2cmJihnLm9uZm9jdXM9Zy5vbmJsdXI9Zy5vbmNoYW5nZT1udWxsKTtoKGEsZnVuY3Rpb24oYyxiKXtjJiYiY2hhcnQiIT09YiYmKGMgaW5zdGFuY2VvZiBFP2MuZGVzdHJveSgpOmMgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQmJkMoYykpO2MhPT1lLnByb3RvdHlwZVtiXSYmKGFbYl09bnVsbCl9LHRoaXMpfTtyZXR1cm4gZX0oKTsKbS5wcm90b3R5cGUuZGVmYXVsdEJ1dHRvbnM9W3t0eXBlOiJtb250aCIsY291bnQ6MSx0ZXh0OiIxbSJ9LHt0eXBlOiJtb250aCIsY291bnQ6Myx0ZXh0OiIzbSJ9LHt0eXBlOiJtb250aCIsY291bnQ6Nix0ZXh0OiI2bSJ9LHt0eXBlOiJ5dGQiLHRleHQ6IllURCJ9LHt0eXBlOiJ5ZWFyIixjb3VudDoxLHRleHQ6IjF5In0se3R5cGU6ImFsbCIsdGV4dDoiQWxsIn1dO2wucHJvdG90eXBlLm1pbkZyb21SYW5nZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMucmFuZ2UsYz1hLnR5cGUsZT10aGlzLm1heCxoPXRoaXMuY2hhcnQudGltZSxsPWZ1bmN0aW9uKGEsYil7dmFyIGY9InllYXIiPT09Yz8iRnVsbFllYXIiOiJNb250aCIsZD1uZXcgaC5EYXRlKGEpLGU9aC5nZXQoZixkKTtoLnNldChmLGQsZStiKTtlPT09aC5nZXQoZixkKSYmaC5zZXQoIkRhdGUiLGQsMCk7cmV0dXJuIGQuZ2V0VGltZSgpLWF9O2lmKG4oYSkpe3ZhciBiPWUtYTt2YXIgZj1hfWVsc2UgYj1lK2woZSwtYS5jb3VudCksCnRoaXMuY2hhcnQmJih0aGlzLmNoYXJ0LmZpeGVkUmFuZ2U9ZS1iKTt2YXIgbT1nKHRoaXMuZGF0YU1pbixOdW1iZXIuTUlOX1ZBTFVFKTtuKGIpfHwoYj1tKTtiPD1tJiYoYj1tLCJ1bmRlZmluZWQiPT09dHlwZW9mIGYmJihmPWwoYixhLmNvdW50KSksdGhpcy5uZXdNYXg9TWF0aC5taW4oYitmLHRoaXMuZGF0YU1heCkpO24oZSl8fChiPXZvaWQgMCk7cmV0dXJuIGJ9O0IuUmFuZ2VTZWxlY3Rvcnx8KHEodSwiYWZ0ZXJHZXRDb250YWluZXIiLGZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLnJhbmdlU2VsZWN0b3IuZW5hYmxlZCYmKHRoaXMucmFuZ2VTZWxlY3Rvcj1uZXcgbSh0aGlzKSl9KSxxKHUsImJlZm9yZVJlbmRlciIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLmF4ZXMsYz10aGlzLnJhbmdlU2VsZWN0b3I7YyYmKG4oYy5kZWZlcnJlZFlURENsaWNrKSYmKGMuY2xpY2tCdXR0b24oYy5kZWZlcnJlZFlURENsaWNrKSxkZWxldGUgYy5kZWZlcnJlZFlURENsaWNrKSxhLmZvckVhY2goZnVuY3Rpb24oYSl7YS51cGRhdGVOYW1lcygpOwphLnNldFNjYWxlKCl9KSx0aGlzLmdldEF4aXNNYXJnaW5zKCksYy5yZW5kZXIoKSxhPWMub3B0aW9ucy52ZXJ0aWNhbEFsaWduLGMub3B0aW9ucy5mbG9hdGluZ3x8KCJib3R0b20iPT09YT90aGlzLmV4dHJhQm90dG9tTWFyZ2luPSEwOiJtaWRkbGUiIT09YSYmKHRoaXMuZXh0cmFUb3BNYXJnaW49ITApKSl9KSxxKHUsInVwZGF0ZSIsZnVuY3Rpb24oYSl7dmFyIGM9YS5vcHRpb25zLnJhbmdlU2VsZWN0b3I7YT10aGlzLnJhbmdlU2VsZWN0b3I7dmFyIGU9dGhpcy5leHRyYUJvdHRvbU1hcmdpbixnPXRoaXMuZXh0cmFUb3BNYXJnaW47YyYmYy5lbmFibGVkJiYhSihhKSYmKHRoaXMub3B0aW9ucy5yYW5nZVNlbGVjdG9yLmVuYWJsZWQ9ITAsdGhpcy5yYW5nZVNlbGVjdG9yPW5ldyBtKHRoaXMpKTt0aGlzLmV4dHJhVG9wTWFyZ2luPXRoaXMuZXh0cmFCb3R0b21NYXJnaW49ITE7YSYmKGEucmVuZGVyKCksYz1jJiZjLnZlcnRpY2FsQWxpZ258fGEub3B0aW9ucyYmYS5vcHRpb25zLnZlcnRpY2FsQWxpZ24sCmEub3B0aW9ucy5mbG9hdGluZ3x8KCJib3R0b20iPT09Yz90aGlzLmV4dHJhQm90dG9tTWFyZ2luPSEwOiJtaWRkbGUiIT09YyYmKHRoaXMuZXh0cmFUb3BNYXJnaW49ITApKSx0aGlzLmV4dHJhQm90dG9tTWFyZ2luIT09ZXx8dGhpcy5leHRyYVRvcE1hcmdpbiE9PWcpJiYodGhpcy5pc0RpcnR5Qm94PSEwKX0pLHEodSwicmVuZGVyIixmdW5jdGlvbigpe3ZhciBhPXRoaXMucmFuZ2VTZWxlY3RvcjthJiYhYS5vcHRpb25zLmZsb2F0aW5nJiYoYS5yZW5kZXIoKSxhPWEub3B0aW9ucy52ZXJ0aWNhbEFsaWduLCJib3R0b20iPT09YT90aGlzLmV4dHJhQm90dG9tTWFyZ2luPSEwOiJtaWRkbGUiIT09YSYmKHRoaXMuZXh0cmFUb3BNYXJnaW49ITApKX0pLHEodSwiZ2V0TWFyZ2lucyIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLnJhbmdlU2VsZWN0b3I7YSYmKGE9YS5nZXRIZWlnaHQoKSx0aGlzLmV4dHJhVG9wTWFyZ2luJiYodGhpcy5wbG90VG9wKz1hKSx0aGlzLmV4dHJhQm90dG9tTWFyZ2luJiYKKHRoaXMubWFyZ2luQm90dG9tKz1hKSl9KSx1LnByb3RvdHlwZS5jYWxsYmFja3MucHVzaChmdW5jdGlvbihjKXtmdW5jdGlvbiBkKCl7ZT1jLnhBeGlzWzBdLmdldEV4dHJlbWVzKCk7aD1jLmxlZ2VuZDtmPW51bGw9PT1nfHx2b2lkIDA9PT1nP3ZvaWQgMDpnLm9wdGlvbnMudmVydGljYWxBbGlnbjtuKGUubWluKSYmZy5yZW5kZXIoZS5taW4sZS5tYXgpO2cmJmguZGlzcGxheSYmInRvcCI9PT1mJiZmPT09aC5vcHRpb25zLnZlcnRpY2FsQWxpZ24mJihiPWEoYy5zcGFjaW5nQm94KSxiLnk9InZlcnRpY2FsIj09PWgub3B0aW9ucy5sYXlvdXQ/Yy5wbG90VG9wOmIueStnLmdldEhlaWdodCgpLGguZ3JvdXAucGxhY2VkPSExLGguYWxpZ24oYikpfXZhciBlLGc9Yy5yYW5nZVNlbGVjdG9yLGgsYixmO2lmKGcpe3ZhciBrPXEoYy54QXhpc1swXSwiYWZ0ZXJTZXRFeHRyZW1lcyIsZnVuY3Rpb24oYSl7Zy5yZW5kZXIoYS5taW4sYS5tYXgpfSk7dmFyIGw9cShjLCJyZWRyYXciLGQpO2QoKX1xKGMsCiJkZXN0cm95IixmdW5jdGlvbigpe2cmJihsKCksaygpKX0pfSksQi5SYW5nZVNlbGVjdG9yPW0pO3JldHVybiBCLlJhbmdlU2VsZWN0b3J9KTtLKGwsInBhcnRzL1N0b2NrQ2hhcnQuanMiLFtsWyJwYXJ0cy9BeGlzLmpzIl0sbFsicGFydHMvQ2hhcnQuanMiXSxsWyJwYXJ0cy9HbG9iYWxzLmpzIl0sbFsicGFydHMvUG9pbnQuanMiXSxsWyJwYXJ0cy9TVkdSZW5kZXJlci5qcyJdLGxbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihsLHUsQix0LEUsZSl7dmFyIHg9ZS5hZGRFdmVudCxxPWUuYXJyYXlNYXgsYz1lLmFycmF5TWluLHY9ZS5jbGFtcCxKPWUuZGVmaW5lZCxHPWUuZXh0ZW5kLEM9ZS5maW5kLHo9ZS5mb3JtYXQsQT1lLmdldE9wdGlvbnMsbj1lLmlzTnVtYmVyLGE9ZS5pc1N0cmluZyxoPWUubWVyZ2UsZz1lLnBpY2ssST1lLnNwbGF0O2U9Qi5TZXJpZXM7dmFyIEQ9ZS5wcm90b3R5cGUsbT1ELmluaXQsaz1ELnByb2Nlc3NEYXRhLGQ9dC5wcm90b3R5cGUudG9vbHRpcEZvcm1hdHRlcjsKQi5TdG9ja0NoYXJ0PUIuc3RvY2tDaGFydD1mdW5jdGlvbihjLGQsZSl7dmFyIGI9YShjKXx8Yy5ub2RlTmFtZSxmPWFyZ3VtZW50c1tiPzE6MF0scD1mLGw9Zi5zZXJpZXMsaz1BKCksbixtPWcoZi5uYXZpZ2F0b3ImJmYubmF2aWdhdG9yLmVuYWJsZWQsay5uYXZpZ2F0b3IuZW5hYmxlZCwhMCk7Zi54QXhpcz1JKGYueEF4aXN8fHt9KS5tYXAoZnVuY3Rpb24oYSxiKXtyZXR1cm4gaCh7bWluUGFkZGluZzowLG1heFBhZGRpbmc6MCxvdmVyc2Nyb2xsOjAsb3JkaW5hbDohMCx0aXRsZTp7dGV4dDpudWxsfSxsYWJlbHM6e292ZXJmbG93OiJqdXN0aWZ5In0sc2hvd0xhc3RMYWJlbDohMH0say54QXhpcyxrLnhBeGlzJiZrLnhBeGlzW2JdLGEse3R5cGU6ImRhdGV0aW1lIixjYXRlZ29yaWVzOm51bGx9LG0/e3N0YXJ0T25UaWNrOiExLGVuZE9uVGljazohMX06bnVsbCl9KTtmLnlBeGlzPUkoZi55QXhpc3x8e30pLm1hcChmdW5jdGlvbihhLGIpe249ZyhhLm9wcG9zaXRlLCEwKTtyZXR1cm4gaCh7bGFiZWxzOnt5Oi0yfSwKb3Bwb3NpdGU6bixzaG93TGFzdExhYmVsOiEoIWEuY2F0ZWdvcmllcyYmImNhdGVnb3J5IiE9PWEudHlwZSksdGl0bGU6e3RleHQ6bnVsbH19LGsueUF4aXMsay55QXhpcyYmay55QXhpc1tiXSxhKX0pO2Yuc2VyaWVzPW51bGw7Zj1oKHtjaGFydDp7cGFubmluZzp7ZW5hYmxlZDohMCx0eXBlOiJ4In0scGluY2hUeXBlOiJ4In0sbmF2aWdhdG9yOntlbmFibGVkOm19LHNjcm9sbGJhcjp7ZW5hYmxlZDpnKGsuc2Nyb2xsYmFyLmVuYWJsZWQsITApfSxyYW5nZVNlbGVjdG9yOntlbmFibGVkOmcoay5yYW5nZVNlbGVjdG9yLmVuYWJsZWQsITApfSx0aXRsZTp7dGV4dDpudWxsfSx0b29sdGlwOntzcGxpdDpnKGsudG9vbHRpcC5zcGxpdCwhMCksY3Jvc3NoYWlyczohMH0sbGVnZW5kOntlbmFibGVkOiExfX0sZix7aXNTdG9jazohMH0pO2Yuc2VyaWVzPXAuc2VyaWVzPWw7cmV0dXJuIGI/bmV3IHUoYyxmLGUpOm5ldyB1KGYsZCl9O3goZSwic2V0T3B0aW9ucyIsZnVuY3Rpb24oYSl7dmFyIGM7CnRoaXMuY2hhcnQub3B0aW9ucy5pc1N0b2NrJiYodGhpcy5pcygiY29sdW1uIil8fHRoaXMuaXMoImNvbHVtbnJhbmdlIik/Yz17Ym9yZGVyV2lkdGg6MCxzaGFkb3c6ITF9OnRoaXMuaXMoInNjYXR0ZXIiKXx8dGhpcy5pcygic21hIil8fChjPXttYXJrZXI6e2VuYWJsZWQ6ITEscmFkaXVzOjJ9fSksYyYmKGEucGxvdE9wdGlvbnNbdGhpcy50eXBlXT1oKGEucGxvdE9wdGlvbnNbdGhpcy50eXBlXSxjKSkpfSk7eChsLCJhdXRvTGFiZWxBbGlnbiIsZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5jaGFydCxkPXRoaXMub3B0aW9ucztjPWMuX2xhYmVsUGFuZXM9Yy5fbGFiZWxQYW5lc3x8e307dmFyIGI9dGhpcy5vcHRpb25zLmxhYmVsczt0aGlzLmNoYXJ0Lm9wdGlvbnMuaXNTdG9jayYmInlBeGlzIj09PXRoaXMuY29sbCYmKGQ9ZC50b3ArIiwiK2QuaGVpZ2h0LCFjW2RdJiZiLmVuYWJsZWQmJigxNT09PWIueCYmKGIueD0wKSwidW5kZWZpbmVkIj09PXR5cGVvZiBiLmFsaWduJiYoYi5hbGlnbj0KInJpZ2h0IiksY1tkXT10aGlzLGEuYWxpZ249InJpZ2h0IixhLnByZXZlbnREZWZhdWx0KCkpKX0pO3gobCwiZGVzdHJveSIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNoYXJ0LGM9dGhpcy5vcHRpb25zJiZ0aGlzLm9wdGlvbnMudG9wKyIsIit0aGlzLm9wdGlvbnMuaGVpZ2h0O2MmJmEuX2xhYmVsUGFuZXMmJmEuX2xhYmVsUGFuZXNbY109PT10aGlzJiZkZWxldGUgYS5fbGFiZWxQYW5lc1tjXX0pO3gobCwiZ2V0UGxvdExpbmVQYXRoIixmdW5jdGlvbihjKXtmdW5jdGlvbiBkKGMpe3ZhciBkPSJ4QXhpcyI9PT1jPyJ5QXhpcyI6InhBeGlzIjtjPWUub3B0aW9uc1tkXTtyZXR1cm4gbihjKT9bZltkXVtjXV06YShjKT9bZi5nZXQoYyldOmIubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhW2RdfSl9dmFyIGU9dGhpcyxiPXRoaXMuaXNMaW5rZWQmJiF0aGlzLnNlcmllcz90aGlzLmxpbmtlZFBhcmVudC5zZXJpZXM6dGhpcy5zZXJpZXMsZj1lLmNoYXJ0LGg9Zi5yZW5kZXJlcixwPWUubGVmdCwKaz1lLnRvcCxsLG0scSx0LHU9W10seD1bXSx6PWMudHJhbnNsYXRlZFZhbHVlLEE9Yy52YWx1ZSxCPWMuZm9yY2U7aWYoZi5vcHRpb25zLmlzU3RvY2smJiExIT09Yy5hY3Jvc3NQYW5lcyYmInhBeGlzIj09PWUuY29sbHx8InlBeGlzIj09PWUuY29sbCl7Yy5wcmV2ZW50RGVmYXVsdCgpO3g9ZChlLmNvbGwpO3ZhciBEPWUuaXNYQXhpcz9mLnlBeGlzOmYueEF4aXM7RC5mb3JFYWNoKGZ1bmN0aW9uKGEpe2lmKEooYS5vcHRpb25zLmlkKT8tMT09PWEub3B0aW9ucy5pZC5pbmRleE9mKCJuYXZpZ2F0b3IiKToxKXt2YXIgYj1hLmlzWEF4aXM/InlBeGlzIjoieEF4aXMiO2I9SihhLm9wdGlvbnNbYl0pP2ZbYl1bYS5vcHRpb25zW2JdXTpmW2JdWzBdO2U9PT1iJiZ4LnB1c2goYSl9fSk7dmFyIEU9eC5sZW5ndGg/W106W2UuaXNYQXhpcz9mLnlBeGlzWzBdOmYueEF4aXNbMF1dO3guZm9yRWFjaChmdW5jdGlvbihhKXstMSE9PUUuaW5kZXhPZihhKXx8QyhFLGZ1bmN0aW9uKGIpe3JldHVybiBiLnBvcz09PQphLnBvcyYmYi5sZW49PT1hLmxlbn0pfHxFLnB1c2goYSl9KTt2YXIgRz1nKHosZS50cmFuc2xhdGUoQSxudWxsLG51bGwsYy5vbGQpKTtuKEcpJiYoZS5ob3Jpej9FLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI7bT1hLnBvczt0PW0rYS5sZW47bD1xPU1hdGgucm91bmQoRytlLnRyYW5zQik7InBhc3MiIT09QiYmKGw8cHx8bD5wK2Uud2lkdGgpJiYoQj9sPXE9dihsLHAscCtlLndpZHRoKTpiPSEwKTtifHx1LnB1c2goWyJNIixsLG1dLFsiTCIscSx0XSl9KTpFLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI7bD1hLnBvcztxPWwrYS5sZW47bT10PU1hdGgucm91bmQoaytlLmhlaWdodC1HKTsicGFzcyIhPT1CJiYobTxrfHxtPmsrZS5oZWlnaHQpJiYoQj9tPXQ9dihtLGssaytlLmhlaWdodCk6Yj0hMCk7Ynx8dS5wdXNoKFsiTSIsbCxtXSxbIkwiLHEsdF0pfSkpO2MucGF0aD0wPHUubGVuZ3RoP2guY3Jpc3BQb2x5TGluZSh1LGMubGluZVdpZHRofHwxKTpudWxsfX0pO0UucHJvdG90eXBlLmNyaXNwUG9seUxpbmU9CmZ1bmN0aW9uKGEsYyl7Zm9yKHZhciBlPTA7ZTxhLmxlbmd0aDtlKz0yKXt2YXIgYj1hW2VdLGY9YVtlKzFdO2JbMV09PT1mWzFdJiYoYlsxXT1mWzFdPU1hdGgucm91bmQoYlsxXSktYyUyLzIpO2JbMl09PT1mWzJdJiYoYlsyXT1mWzJdPU1hdGgucm91bmQoYlsyXSkrYyUyLzIpfXJldHVybiBhfTt4KGwsImFmdGVySGlkZUNyb3NzaGFpciIsZnVuY3Rpb24oKXt0aGlzLmNyb3NzTGFiZWwmJih0aGlzLmNyb3NzTGFiZWw9dGhpcy5jcm9zc0xhYmVsLmhpZGUoKSl9KTt4KGwsImFmdGVyRHJhd0Nyb3NzaGFpciIsZnVuY3Rpb24oYSl7dmFyIGMsZTtpZihKKHRoaXMuY3Jvc3NoYWlyLmxhYmVsKSYmdGhpcy5jcm9zc2hhaXIubGFiZWwuZW5hYmxlZCYmdGhpcy5jcm9zcyl7dmFyIGI9dGhpcy5jaGFydCxmPXRoaXMubG9nYXJpdGhtaWMsZD10aGlzLm9wdGlvbnMuY3Jvc3NoYWlyLmxhYmVsLGg9dGhpcy5ob3JpeixrPXRoaXMub3Bwb3NpdGUsbD10aGlzLmxlZnQscD10aGlzLnRvcCxtPQp0aGlzLmNyb3NzTGFiZWwscT1kLmZvcm1hdCx0PSIiLHU9Imluc2lkZSI9PT10aGlzLm9wdGlvbnMudGlja1Bvc2l0aW9uLHY9ITEhPT10aGlzLmNyb3NzaGFpci5zbmFwLHg9MCxBPWEuZXx8dGhpcy5jcm9zcyYmdGhpcy5jcm9zcy5lLEI9YS5wb2ludDthPXRoaXMubWluO3ZhciBDPXRoaXMubWF4O2YmJihhPWYubGluMmxvZyhhKSxDPWYubGluMmxvZyhDKSk7Zj1oPyJjZW50ZXIiOms/InJpZ2h0Ij09PXRoaXMubGFiZWxBbGlnbj8icmlnaHQiOiJsZWZ0IjoibGVmdCI9PT10aGlzLmxhYmVsQWxpZ24/ImxlZnQiOiJjZW50ZXIiO218fChtPXRoaXMuY3Jvc3NMYWJlbD1iLnJlbmRlcmVyLmxhYmVsKG51bGwsbnVsbCxudWxsLGQuc2hhcGV8fCJjYWxsb3V0IikuYWRkQ2xhc3MoImhpZ2hjaGFydHMtY3Jvc3NoYWlyLWxhYmVsIisodGhpcy5zZXJpZXNbMF0mJiIgaGlnaGNoYXJ0cy1jb2xvci0iK3RoaXMuc2VyaWVzWzBdLmNvbG9ySW5kZXgpKS5hdHRyKHthbGlnbjpkLmFsaWdufHwKZixwYWRkaW5nOmcoZC5wYWRkaW5nLDgpLHI6ZyhkLmJvcmRlclJhZGl1cywzKSx6SW5kZXg6Mn0pLmFkZCh0aGlzLmxhYmVsR3JvdXApLGIuc3R5bGVkTW9kZXx8bS5hdHRyKHtmaWxsOmQuYmFja2dyb3VuZENvbG9yfHx0aGlzLnNlcmllc1swXSYmdGhpcy5zZXJpZXNbMF0uY29sb3J8fCIjNjY2NjY2IixzdHJva2U6ZC5ib3JkZXJDb2xvcnx8IiIsInN0cm9rZS13aWR0aCI6ZC5ib3JkZXJXaWR0aHx8MH0pLmNzcyhHKHtjb2xvcjoiI2ZmZmZmZiIsZm9udFdlaWdodDoibm9ybWFsIixmb250U2l6ZToiMTFweCIsdGV4dEFsaWduOiJjZW50ZXIifSxkLnN0eWxlKSkpO2g/KGY9dj9CLnBsb3RYK2w6QS5jaGFydFgscCs9az8wOnRoaXMuaGVpZ2h0KTooZj1rP3RoaXMud2lkdGgrbDowLHA9dj9CLnBsb3RZK3A6QS5jaGFydFkpO3F8fGQuZm9ybWF0dGVyfHwodGhpcy5kYXRlVGltZSYmKHQ9IiViICVkLCAlWSIpLHE9Int2YWx1ZSIrKHQ/IjoiK3Q6IiIpKyJ9Iik7dD12P0JbdGhpcy5pc1hBeGlzPwoieCI6InkiXTp0aGlzLnRvVmFsdWUoaD9BLmNoYXJ0WDpBLmNoYXJ0WSk7bS5hdHRyKHt0ZXh0OnE/eihxLHt2YWx1ZTp0fSxiKTpkLmZvcm1hdHRlci5jYWxsKHRoaXMsdCkseDpmLHk6cCx2aXNpYmlsaXR5OnQ8YXx8dD5DPyJoaWRkZW4iOiJ2aXNpYmxlIn0pO2Q9bS5nZXRCQm94KCk7aWYobihtLnkpKWlmKGgpe2lmKHUmJiFrfHwhdSYmaylwPW0ueS1kLmhlaWdodH1lbHNlIHA9bS55LWQuaGVpZ2h0LzI7aD8oYz1sLWQueCxlPWwrdGhpcy53aWR0aC1kLngpOihjPSJsZWZ0Ij09PXRoaXMubGFiZWxBbGlnbj9sOjAsZT0icmlnaHQiPT09dGhpcy5sYWJlbEFsaWduP2wrdGhpcy53aWR0aDpiLmNoYXJ0V2lkdGgpO20udHJhbnNsYXRlWDxjJiYoeD1jLW0udHJhbnNsYXRlWCk7bS50cmFuc2xhdGVYK2Qud2lkdGg+PWUmJih4PS0obS50cmFuc2xhdGVYK2Qud2lkdGgtZSkpO20uYXR0cih7eDpmK3gseTpwLGFuY2hvclg6aD9mOnRoaXMub3Bwb3NpdGU/MDpiLmNoYXJ0V2lkdGgsYW5jaG9yWTpoPwp0aGlzLm9wcG9zaXRlP2IuY2hhcnRIZWlnaHQ6MDpwK2QuaGVpZ2h0LzJ9KX19KTtELmluaXQ9ZnVuY3Rpb24oKXttLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnNldENvbXBhcmUodGhpcy5vcHRpb25zLmNvbXBhcmUpfTtELnNldENvbXBhcmU9ZnVuY3Rpb24oYSl7dGhpcy5tb2RpZnlWYWx1ZT0idmFsdWUiPT09YXx8InBlcmNlbnQiPT09YT9mdW5jdGlvbihjLGQpe3ZhciBiPXRoaXMuY29tcGFyZVZhbHVlO3JldHVybiJ1bmRlZmluZWQiIT09dHlwZW9mIGMmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGI/KGM9InZhbHVlIj09PWE/Yy1iOmMvYioxMDAtKDEwMD09PXRoaXMub3B0aW9ucy5jb21wYXJlQmFzZT8wOjEwMCksZCYmKGQuY2hhbmdlPWMpLGMpOjB9Om51bGw7dGhpcy51c2VyT3B0aW9ucy5jb21wYXJlPWE7dGhpcy5jaGFydC5oYXNSZW5kZXJlZCYmKHRoaXMuaXNEaXJ0eT0hMCl9O0QucHJvY2Vzc0RhdGE9ZnVuY3Rpb24oYSl7dmFyIGMsZD0tMSxiPSEwPT09dGhpcy5vcHRpb25zLmNvbXBhcmVTdGFydD8KMDoxO2suYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKHRoaXMueEF4aXMmJnRoaXMucHJvY2Vzc2VkWURhdGEpe3ZhciBmPXRoaXMucHJvY2Vzc2VkWERhdGE7dmFyIGU9dGhpcy5wcm9jZXNzZWRZRGF0YTt2YXIgZz1lLmxlbmd0aDt0aGlzLnBvaW50QXJyYXlNYXAmJihkPXRoaXMucG9pbnRBcnJheU1hcC5pbmRleE9mKHRoaXMub3B0aW9ucy5wb2ludFZhbEtleXx8dGhpcy5wb2ludFZhbEtleXx8InkiKSk7Zm9yKGM9MDtjPGctYjtjKyspe3ZhciBoPWVbY10mJi0xPGQ/ZVtjXVtkXTplW2NdO2lmKG4oaCkmJmZbYytiXT49dGhpcy54QXhpcy5taW4mJjAhPT1oKXt0aGlzLmNvbXBhcmVWYWx1ZT1oO2JyZWFrfX19fTt4KGUsImFmdGVyR2V0RXh0cmVtZXMiLGZ1bmN0aW9uKGEpe2E9YS5kYXRhRXh0cmVtZXM7aWYodGhpcy5tb2RpZnlWYWx1ZSYmYSl7dmFyIGQ9W3RoaXMubW9kaWZ5VmFsdWUoYS5kYXRhTWluKSx0aGlzLm1vZGlmeVZhbHVlKGEuZGF0YU1heCldO2EuZGF0YU1pbj1jKGQpOwphLmRhdGFNYXg9cShkKX19KTtsLnByb3RvdHlwZS5zZXRDb21wYXJlPWZ1bmN0aW9uKGEsYyl7dGhpcy5pc1hBeGlzfHwodGhpcy5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihjKXtjLnNldENvbXBhcmUoYSl9KSxnKGMsITApJiZ0aGlzLmNoYXJ0LnJlZHJhdygpKX07dC5wcm90b3R5cGUudG9vbHRpcEZvcm1hdHRlcj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLnNlcmllcy5jaGFydC5udW1iZXJGb3JtYXR0ZXI7YT1hLnJlcGxhY2UoIntwb2ludC5jaGFuZ2V9IiwoMDx0aGlzLmNoYW5nZT8iKyI6IiIpK2ModGhpcy5jaGFuZ2UsZyh0aGlzLnNlcmllcy50b29sdGlwT3B0aW9ucy5jaGFuZ2VEZWNpbWFscywyKSkpO3JldHVybiBkLmFwcGx5KHRoaXMsW2FdKX07eChlLCJyZW5kZXIiLGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jaGFydDtpZighKGEuaXMzZCYmYS5pczNkKCl8fGEucG9sYXIpJiZ0aGlzLnhBeGlzJiYhdGhpcy54QXhpcy5pc1JhZGlhbCl7dmFyIGM9dGhpcy55QXhpcy5sZW47CmlmKHRoaXMueEF4aXMuYXhpc0xpbmUpe3ZhciBkPWEucGxvdFRvcCthLnBsb3RIZWlnaHQtdGhpcy55QXhpcy5wb3MtdGhpcy55QXhpcy5sZW4sYj1NYXRoLmZsb29yKHRoaXMueEF4aXMuYXhpc0xpbmUuc3Ryb2tlV2lkdGgoKS8yKTswPD1kJiYoYy09TWF0aC5tYXgoYi1kLDApKX0hdGhpcy5jbGlwQm94JiZ0aGlzLmFuaW1hdGU/KHRoaXMuY2xpcEJveD1oKGEuY2xpcEJveCksdGhpcy5jbGlwQm94LndpZHRoPXRoaXMueEF4aXMubGVuLHRoaXMuY2xpcEJveC5oZWlnaHQ9Yyk6YVt0aGlzLnNoYXJlZENsaXBLZXldJiYoYVt0aGlzLnNoYXJlZENsaXBLZXldLmFuaW1hdGUoe3dpZHRoOnRoaXMueEF4aXMubGVuLGhlaWdodDpjfSksYVt0aGlzLnNoYXJlZENsaXBLZXkrIm0iXSYmYVt0aGlzLnNoYXJlZENsaXBLZXkrIm0iXS5hbmltYXRlKHt3aWR0aDp0aGlzLnhBeGlzLmxlbn0pKX19KTt4KHUsInVwZGF0ZSIsZnVuY3Rpb24oYSl7YT1hLm9wdGlvbnM7InNjcm9sbGJhciJpbiBhJiYKdGhpcy5uYXZpZ2F0b3ImJihoKCEwLHRoaXMub3B0aW9ucy5zY3JvbGxiYXIsYS5zY3JvbGxiYXIpLHRoaXMubmF2aWdhdG9yLnVwZGF0ZSh7fSwhMSksZGVsZXRlIGEuc2Nyb2xsYmFyKX0pfSk7SyhsLCJtYXN0ZXJzL21vZHVsZXMvc3RvY2suc3JjLmpzIixbXSxmdW5jdGlvbigpe30pfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXN0b2NrLmpzLm1hcA=="></script>
<script src="data:application/javascript;base64,LyoNCiBIaWdobWFwcyBKUyB2OC4xLjIgKDIwMjAtMDYtMTYpDQoNCiBIaWdobWFwcyBhcyBhIHBsdWdpbiBmb3IgSGlnaGNoYXJ0cyBvciBIaWdoc3RvY2suDQoNCiAoYykgMjAxMS0yMDE5IFRvcnN0ZWluIEhvbnNpDQoNCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQ0KKi8NCihmdW5jdGlvbihhKXsib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzPyhhWyJkZWZhdWx0Il09YSxtb2R1bGUuZXhwb3J0cz1hKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoImhpZ2hjaGFydHMvbW9kdWxlcy9tYXAiLFsiaGlnaGNoYXJ0cyJdLGZ1bmN0aW9uKHope2Eoeik7YS5IaWdoY2hhcnRzPXo7cmV0dXJuIGF9KTphKCJ1bmRlZmluZWQiIT09dHlwZW9mIEhpZ2hjaGFydHM/SGlnaGNoYXJ0czp2b2lkIDApfSkoZnVuY3Rpb24oYSl7ZnVuY3Rpb24geihhLHIsayxuKXthLmhhc093blByb3BlcnR5KHIpfHwoYVtyXT1uLmFwcGx5KG51bGwsaykpfWE9YT9hLl9tb2R1bGVzOnt9O3ooYSwicGFydHMtbWFwL01hcEF4aXMuanMiLFthWyJwYXJ0cy9BeGlzLmpzIl0sYVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGEscil7dmFyIGs9ci5hZGRFdmVudCxuPXIucGljayxjPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGMpe3RoaXMuYXhpcz0NCmN9fSgpO3I9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7fWEuY29tcG9zZT1mdW5jdGlvbihhKXthLmtlZXBQcm9wcy5wdXNoKCJtYXBBeGlzIik7ayhhLCJpbml0IixmdW5jdGlvbigpe3RoaXMubWFwQXhpc3x8KHRoaXMubWFwQXhpcz1uZXcgYyh0aGlzKSl9KTtrKGEsImdldFNlcmllc0V4dHJlbWVzIixmdW5jdGlvbigpe2lmKHRoaXMubWFwQXhpcyl7dmFyIGM9W107dGhpcy5pc1hBeGlzJiYodGhpcy5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihhLHUpe2EudXNlTWFwR2VvbWV0cnkmJihjW3VdPWEueERhdGEsYS54RGF0YT1bXSl9KSx0aGlzLm1hcEF4aXMuc2VyaWVzWERhdGE9Yyl9fSk7ayhhLCJhZnRlckdldFNlcmllc0V4dHJlbWVzIixmdW5jdGlvbigpe2lmKHRoaXMubWFwQXhpcyl7dmFyIGM9dGhpcy5tYXBBeGlzLnNlcmllc1hEYXRhfHxbXSxhO2lmKHRoaXMuaXNYQXhpcyl7dmFyIHU9bih0aGlzLmRhdGFNaW4sTnVtYmVyLk1BWF9WQUxVRSk7dmFyIGg9bih0aGlzLmRhdGFNYXgsDQotTnVtYmVyLk1BWF9WQUxVRSk7dGhpcy5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihmLHgpe2YudXNlTWFwR2VvbWV0cnkmJih1PU1hdGgubWluKHUsbihmLm1pblgsdSkpLGg9TWF0aC5tYXgoaCxuKGYubWF4WCxoKSksZi54RGF0YT1jW3hdLGE9ITApfSk7YSYmKHRoaXMuZGF0YU1pbj11LHRoaXMuZGF0YU1heD1oKTt0aGlzLm1hcEF4aXMuc2VyaWVzWERhdGE9dm9pZCAwfX19KTtrKGEsImFmdGVyU2V0QXhpc1RyYW5zbGF0aW9uIixmdW5jdGlvbigpe2lmKHRoaXMubWFwQXhpcyl7dmFyIGM9dGhpcy5jaGFydCxhPWMucGxvdFdpZHRoL2MucGxvdEhlaWdodDtjPWMueEF4aXNbMF07dmFyIHU7InlBeGlzIj09PXRoaXMuY29sbCYmInVuZGVmaW5lZCIhPT10eXBlb2YgYy50cmFuc0EmJnRoaXMuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYyl7Yy5wcmVzZXJ2ZUFzcGVjdFJhdGlvJiYodT0hMCl9KTtpZih1JiYodGhpcy50cmFuc0E9Yy50cmFuc0E9TWF0aC5taW4odGhpcy50cmFuc0EsDQpjLnRyYW5zQSksYS89KGMubWF4LWMubWluKS8odGhpcy5tYXgtdGhpcy5taW4pLGE9MT5hP3RoaXM6YyxjPShhLm1heC1hLm1pbikqYS50cmFuc0EsYS5tYXBBeGlzLnBpeGVsUGFkZGluZz1hLmxlbi1jLGEubWluUGl4ZWxQYWRkaW5nPWEubWFwQXhpcy5waXhlbFBhZGRpbmcvMixjPWEubWFwQXhpcy5maXhUbykpe2M9Y1sxXS1hLnRvVmFsdWUoY1swXSwhMCk7Yyo9YS50cmFuc0E7aWYoTWF0aC5hYnMoYyk+YS5taW5QaXhlbFBhZGRpbmd8fGEubWluPT09YS5kYXRhTWluJiZhLm1heD09PWEuZGF0YU1heCljPTA7YS5taW5QaXhlbFBhZGRpbmctPWN9fX0pO2soYSwicmVuZGVyIixmdW5jdGlvbigpe3RoaXMubWFwQXhpcyYmKHRoaXMubWFwQXhpcy5maXhUbz12b2lkIDApfSl9O3JldHVybiBhfSgpO3IuY29tcG9zZShhKTtyZXR1cm4gcn0pO3ooYSwicGFydHMtbWFwL0NvbG9yU2VyaWVzTWl4aW4uanMiLFthWyJwYXJ0cy9HbG9iYWxzLmpzIl1dLGZ1bmN0aW9uKGEpe2EuY29sb3JQb2ludE1peGluPQ0Ke3NldFZpc2libGU6ZnVuY3Rpb24oYSl7dmFyIGs9dGhpcyxuPWE/InNob3ciOiJoaWRlIjtrLnZpc2libGU9ay5vcHRpb25zLnZpc2libGU9ISFhO1siZ3JhcGhpYyIsImRhdGFMYWJlbCJdLmZvckVhY2goZnVuY3Rpb24oYyl7aWYoa1tjXSlrW2NdW25dKCl9KTt0aGlzLnNlcmllcy5idWlsZEtEVHJlZSgpfX07YS5jb2xvclNlcmllc01peGluPXtvcHRpb25hbEF4aXM6ImNvbG9yQXhpcyIsY29sb3JBeGlzOjAsdHJhbnNsYXRlQ29sb3JzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxrPXRoaXMub3B0aW9ucy5udWxsQ29sb3Isbj10aGlzLmNvbG9yQXhpcyxjPXRoaXMuY29sb3JLZXk7KHRoaXMuZGF0YS5sZW5ndGg/dGhpcy5kYXRhOnRoaXMucG9pbnRzKS5mb3JFYWNoKGZ1bmN0aW9uKEMpe3ZhciB3PUMuZ2V0TmVzdGVkUHJvcGVydHkoYyk7KHc9Qy5vcHRpb25zLmNvbG9yfHwoQy5pc051bGx8fG51bGw9PT1DLnZhbHVlP2s6biYmInVuZGVmaW5lZCIhPT10eXBlb2Ygdz9uLnRvQ29sb3IodywNCkMpOkMuY29sb3J8fGEuY29sb3IpKSYmQy5jb2xvciE9PXcmJihDLmNvbG9yPXcsInBvaW50Ij09PWEub3B0aW9ucy5sZWdlbmRUeXBlJiZDLmxlZ2VuZEl0ZW0mJmEuY2hhcnQubGVnZW5kLmNvbG9yaXplSXRlbShDLEMudmlzaWJsZSkpfSl9fX0pO3ooYSwicGFydHMtbWFwL0NvbG9yQXhpcy5qcyIsW2FbInBhcnRzL0F4aXMuanMiXSxhWyJwYXJ0cy9DaGFydC5qcyJdLGFbInBhcnRzL0NvbG9yLmpzIl0sYVsicGFydHMvR2xvYmFscy5qcyJdLGFbInBhcnRzL0xlZ2VuZC5qcyJdLGFbIm1peGlucy9sZWdlbmQtc3ltYm9sLmpzIl0sYVsicGFydHMvUG9pbnQuanMiXSxhWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxyLGssbixjLEMsRCxBKXt2YXIgdz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgYj1mdW5jdGlvbihlLGQpe2I9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGIsZSl7Yi5fX3Byb3RvX189DQplfXx8ZnVuY3Rpb24oYixlKXtmb3IodmFyIGQgaW4gZSllLmhhc093blByb3BlcnR5KGQpJiYoYltkXT1lW2RdKX07cmV0dXJuIGIoZSxkKX07cmV0dXJuIGZ1bmN0aW9uKGUsZCl7ZnVuY3Rpb24gdCgpe3RoaXMuY29uc3RydWN0b3I9ZX1iKGUsZCk7ZS5wcm90b3R5cGU9bnVsbD09PWQ/T2JqZWN0LmNyZWF0ZShkKToodC5wcm90b3R5cGU9ZC5wcm90b3R5cGUsbmV3IHQpfX0oKSx1PWsucGFyc2UsaD1uLm5vb3A7az1BLmFkZEV2ZW50O3ZhciBmPUEuZXJhc2UseD1BLmV4dGVuZCxsPUEuRngscT1BLmlzTnVtYmVyLHA9QS5tZXJnZSx5PUEucGljayxnPUEuc3BsYXQ7IiI7dmFyIGQ9bi5TZXJpZXM7QT1uLmNvbG9yUG9pbnRNaXhpbjt4KGQucHJvdG90eXBlLG4uY29sb3JTZXJpZXNNaXhpbik7eChELnByb3RvdHlwZSxBKTtyLnByb3RvdHlwZS5jb2xsZWN0aW9uc1dpdGhVcGRhdGUucHVzaCgiY29sb3JBeGlzIik7ci5wcm90b3R5cGUuY29sbGVjdGlvbnNXaXRoSW5pdC5jb2xvckF4aXM9DQpbci5wcm90b3R5cGUuYWRkQ29sb3JBeGlzXTt2YXIgYj1mdW5jdGlvbihiKXtmdW5jdGlvbiBlKGUsZCl7dmFyIHQ9Yi5jYWxsKHRoaXMsZSxkKXx8dGhpczt0LmJlZm9yZVBhZGRpbmc9ITE7dC5jaGFydD12b2lkIDA7dC5jb2xsPSJjb2xvckF4aXMiO3QuZGF0YUNsYXNzZXM9dm9pZCAwO3QubGVnZW5kSXRlbT12b2lkIDA7dC5sZWdlbmRJdGVtcz12b2lkIDA7dC5uYW1lPSIiO3Qub3B0aW9ucz12b2lkIDA7dC5zdG9wcz12b2lkIDA7dC52aXNpYmxlPSEwO3QuaW5pdChlLGQpO3JldHVybiB0fXcoZSxiKTtlLmJ1aWxkT3B0aW9ucz1mdW5jdGlvbihiLGUsZCl7Yj1iLm9wdGlvbnMubGVnZW5kfHx7fTt2YXIgdD1kLmxheW91dD8idmVydGljYWwiIT09ZC5sYXlvdXQ6InZlcnRpY2FsIiE9PWIubGF5b3V0O3JldHVybiBwKGUse3NpZGU6dD8yOjEscmV2ZXJzZWQ6IXR9LGQse29wcG9zaXRlOiF0LHNob3dFbXB0eTohMSx0aXRsZTpudWxsLHZpc2libGU6Yi5lbmFibGVkJiYoZD8hMSE9PQ0KZC52aXNpYmxlOiEwKX0pfTtlLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGQsdCl7dmFyIHY9ZS5idWlsZE9wdGlvbnMoZCxlLmRlZmF1bHRPcHRpb25zLHQpO3RoaXMuY29sbD0iY29sb3JBeGlzIjtiLnByb3RvdHlwZS5pbml0LmNhbGwodGhpcyxkLHYpO3QuZGF0YUNsYXNzZXMmJnRoaXMuaW5pdERhdGFDbGFzc2VzKHQpO3RoaXMuaW5pdFN0b3BzKCk7dGhpcy5ob3Jpej0hdi5vcHBvc2l0ZTt0aGlzLnpvb21FbmFibGVkPSExfTtlLnByb3RvdHlwZS5pbml0RGF0YUNsYXNzZXM9ZnVuY3Rpb24oYil7dmFyIGU9dGhpcy5jaGFydCxkLHY9MCxnPWUub3B0aW9ucy5jaGFydC5jb2xvckNvdW50LG09dGhpcy5vcHRpb25zLGY9Yi5kYXRhQ2xhc3Nlcy5sZW5ndGg7dGhpcy5kYXRhQ2xhc3Nlcz1kPVtdO3RoaXMubGVnZW5kSXRlbXM9W107Yi5kYXRhQ2xhc3Nlcy5mb3JFYWNoKGZ1bmN0aW9uKGIsdCl7Yj1wKGIpO2QucHVzaChiKTtpZihlLnN0eWxlZE1vZGV8fCFiLmNvbG9yKSJjYXRlZ29yeSI9PT0NCm0uZGF0YUNsYXNzQ29sb3I/KGUuc3R5bGVkTW9kZXx8KHQ9ZS5vcHRpb25zLmNvbG9ycyxnPXQubGVuZ3RoLGIuY29sb3I9dFt2XSksYi5jb2xvckluZGV4PXYsdisrLHY9PT1nJiYodj0wKSk6Yi5jb2xvcj11KG0ubWluQ29sb3IpLnR3ZWVuVG8odShtLm1heENvbG9yKSwyPmY/LjU6dC8oZi0xKSl9KX07ZS5wcm90b3R5cGUuaGFzRGF0YT1mdW5jdGlvbigpe3JldHVybiEhKHRoaXMudGlja1Bvc2l0aW9uc3x8W10pLmxlbmd0aH07ZS5wcm90b3R5cGUuc2V0VGlja1Bvc2l0aW9ucz1mdW5jdGlvbigpe2lmKCF0aGlzLmRhdGFDbGFzc2VzKXJldHVybiBiLnByb3RvdHlwZS5zZXRUaWNrUG9zaXRpb25zLmNhbGwodGhpcyl9O2UucHJvdG90eXBlLmluaXRTdG9wcz1mdW5jdGlvbigpe3RoaXMuc3RvcHM9dGhpcy5vcHRpb25zLnN0b3BzfHxbWzAsdGhpcy5vcHRpb25zLm1pbkNvbG9yXSxbMSx0aGlzLm9wdGlvbnMubWF4Q29sb3JdXTt0aGlzLnN0b3BzLmZvckVhY2goZnVuY3Rpb24oYil7Yi5jb2xvcj0NCnUoYlsxXSl9KX07ZS5wcm90b3R5cGUuc2V0T3B0aW9ucz1mdW5jdGlvbihlKXtiLnByb3RvdHlwZS5zZXRPcHRpb25zLmNhbGwodGhpcyxlKTt0aGlzLm9wdGlvbnMuY3Jvc3NoYWlyPXRoaXMub3B0aW9ucy5tYXJrZXJ9O2UucHJvdG90eXBlLnNldEF4aXNTaXplPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5sZWdlbmRTeW1ib2wsZD10aGlzLmNoYXJ0LGc9ZC5vcHRpb25zLmxlZ2VuZHx8e30sbSxmO2I/KHRoaXMubGVmdD1nPWIuYXR0cigieCIpLHRoaXMudG9wPW09Yi5hdHRyKCJ5IiksdGhpcy53aWR0aD1mPWIuYXR0cigid2lkdGgiKSx0aGlzLmhlaWdodD1iPWIuYXR0cigiaGVpZ2h0IiksdGhpcy5yaWdodD1kLmNoYXJ0V2lkdGgtZy1mLHRoaXMuYm90dG9tPWQuY2hhcnRIZWlnaHQtbS1iLHRoaXMubGVuPXRoaXMuaG9yaXo/ZjpiLHRoaXMucG9zPXRoaXMuaG9yaXo/ZzptKTp0aGlzLmxlbj0odGhpcy5ob3Jpej9nLnN5bWJvbFdpZHRoOmcuc3ltYm9sSGVpZ2h0KXx8ZS5kZWZhdWx0TGVnZW5kTGVuZ3RofTsNCmUucHJvdG90eXBlLm5vcm1hbGl6ZWRWYWx1ZT1mdW5jdGlvbihiKXt0aGlzLmxvZ2FyaXRobWljJiYoYj10aGlzLmxvZ2FyaXRobWljLmxvZzJsaW4oYikpO3JldHVybiAxLSh0aGlzLm1heC1iKS8odGhpcy5tYXgtdGhpcy5taW58fDEpfTtlLnByb3RvdHlwZS50b0NvbG9yPWZ1bmN0aW9uKGIsZSl7dmFyIGQ9dGhpcy5kYXRhQ2xhc3Nlcyx0PXRoaXMuc3RvcHMsZztpZihkKWZvcihnPWQubGVuZ3RoO2ctLTspe3ZhciBtPWRbZ107dmFyIHY9bS5mcm9tO3Q9bS50bztpZigoInVuZGVmaW5lZCI9PT10eXBlb2Ygdnx8Yj49dikmJigidW5kZWZpbmVkIj09PXR5cGVvZiB0fHxiPD10KSl7dmFyIGY9bS5jb2xvcjtlJiYoZS5kYXRhQ2xhc3M9ZyxlLmNvbG9ySW5kZXg9bS5jb2xvckluZGV4KTticmVha319ZWxzZXtiPXRoaXMubm9ybWFsaXplZFZhbHVlKGIpO2ZvcihnPXQubGVuZ3RoO2ctLSYmIShiPnRbZ11bMF0pOyk7dj10W2ddfHx0W2crMV07dD10W2crMV18fHY7Yj0xLSh0WzBdLQ0KYikvKHRbMF0tdlswXXx8MSk7Zj12LmNvbG9yLnR3ZWVuVG8odC5jb2xvcixiKX1yZXR1cm4gZn07ZS5wcm90b3R5cGUuZ2V0T2Zmc2V0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZWdlbmRHcm91cCxkPXRoaXMuY2hhcnQuYXhpc09mZnNldFt0aGlzLnNpZGVdO2UmJih0aGlzLmF4aXNQYXJlbnQ9ZSxiLnByb3RvdHlwZS5nZXRPZmZzZXQuY2FsbCh0aGlzKSx0aGlzLmFkZGVkfHwodGhpcy5hZGRlZD0hMCx0aGlzLmxhYmVsTGVmdD0wLHRoaXMubGFiZWxSaWdodD10aGlzLndpZHRoKSx0aGlzLmNoYXJ0LmF4aXNPZmZzZXRbdGhpcy5zaWRlXT1kKX07ZS5wcm90b3R5cGUuc2V0TGVnZW5kQ29sb3I9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLnJldmVyc2VkLGU9Yj8xOjA7Yj1iPzA6MTtlPXRoaXMuaG9yaXo/W2UsMCxiLDBdOlswLGIsMCxlXTt0aGlzLmxlZ2VuZENvbG9yPXtsaW5lYXJHcmFkaWVudDp7eDE6ZVswXSx5MTplWzFdLHgyOmVbMl0seTI6ZVszXX0sc3RvcHM6dGhpcy5zdG9wc319Ow0KZS5wcm90b3R5cGUuZHJhd0xlZ2VuZFN5bWJvbD1mdW5jdGlvbihiLGQpe3ZhciB0PWIucGFkZGluZyxnPWIub3B0aW9ucyxtPXRoaXMuaG9yaXosZj15KGcuc3ltYm9sV2lkdGgsbT9lLmRlZmF1bHRMZWdlbmRMZW5ndGg6MTIpLHY9eShnLnN5bWJvbEhlaWdodCxtPzEyOmUuZGVmYXVsdExlZ2VuZExlbmd0aCksYz15KGcubGFiZWxQYWRkaW5nLG0/MTY6MzApO2c9eShnLml0ZW1EaXN0YW5jZSwxMCk7dGhpcy5zZXRMZWdlbmRDb2xvcigpO2QubGVnZW5kU3ltYm9sPXRoaXMuY2hhcnQucmVuZGVyZXIucmVjdCgwLGIuYmFzZWxpbmUtMTEsZix2KS5hdHRyKHt6SW5kZXg6MX0pLmFkZChkLmxlZ2VuZEdyb3VwKTt0aGlzLmxlZ2VuZEl0ZW1XaWR0aD1mK3QrKG0/ZzpjKTt0aGlzLmxlZ2VuZEl0ZW1IZWlnaHQ9dit0KyhtP2M6MCl9O2UucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGIpe3RoaXMuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5zZXRTdGF0ZShiKX0pfTtlLnByb3RvdHlwZS5zZXRWaXNpYmxlPQ0KZnVuY3Rpb24oKXt9O2UucHJvdG90eXBlLmdldFNlcmllc0V4dHJlbWVzPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5zZXJpZXMsZT1iLmxlbmd0aCxnO3RoaXMuZGF0YU1pbj1JbmZpbml0eTtmb3IodGhpcy5kYXRhTWF4PS1JbmZpbml0eTtlLS07KXt2YXIgbT1iW2VdO3ZhciBmPW0uY29sb3JLZXk9eShtLm9wdGlvbnMuY29sb3JLZXksbS5jb2xvcktleSxtLnBvaW50VmFsS2V5LG0uem9uZUF4aXMsInkiKTt2YXIgYz1tLnBvaW50QXJyYXlNYXA7dmFyIGE9bVtmKyJNaW4iXSYmbVtmKyJNYXgiXTtpZihtW2YrIkRhdGEiXSl2YXIgbD1tW2YrIkRhdGEiXTtlbHNlIGlmKGMpe2w9W107Yz1jLmluZGV4T2YoZik7dmFyIGg9bS55RGF0YTtpZigwPD1jJiZoKWZvcihnPTA7ZzxoLmxlbmd0aDtnKyspbC5wdXNoKHkoaFtnXVtjXSxoW2ddKSl9ZWxzZSBsPW0ueURhdGE7YT8obS5taW5Db2xvclZhbHVlPW1bZisiTWluIl0sbS5tYXhDb2xvclZhbHVlPW1bZisiTWF4Il0pOihsPWQucHJvdG90eXBlLmdldEV4dHJlbWVzLmNhbGwobSwNCmwpLG0ubWluQ29sb3JWYWx1ZT1sLmRhdGFNaW4sbS5tYXhDb2xvclZhbHVlPWwuZGF0YU1heCk7InVuZGVmaW5lZCIhPT10eXBlb2YgbS5taW5Db2xvclZhbHVlJiYodGhpcy5kYXRhTWluPU1hdGgubWluKHRoaXMuZGF0YU1pbixtLm1pbkNvbG9yVmFsdWUpLHRoaXMuZGF0YU1heD1NYXRoLm1heCh0aGlzLmRhdGFNYXgsbS5tYXhDb2xvclZhbHVlKSk7YXx8ZC5wcm90b3R5cGUuYXBwbHlFeHRyZW1lcy5jYWxsKG0pfX07ZS5wcm90b3R5cGUuZHJhd0Nyb3NzaGFpcj1mdW5jdGlvbihlLGQpe3ZhciBtPWQmJmQucGxvdFgsZz1kJiZkLnBsb3RZLHQ9dGhpcy5wb3MsZj10aGlzLmxlbjtpZihkKXt2YXIgYz10aGlzLnRvUGl4ZWxzKGQuZ2V0TmVzdGVkUHJvcGVydHkoZC5zZXJpZXMuY29sb3JLZXkpKTtjPHQ/Yz10LTI6Yz50K2YmJihjPXQrZisyKTtkLnBsb3RYPWM7ZC5wbG90WT10aGlzLmxlbi1jO2IucHJvdG90eXBlLmRyYXdDcm9zc2hhaXIuY2FsbCh0aGlzLGUsZCk7ZC5wbG90WD0NCm07ZC5wbG90WT1nO3RoaXMuY3Jvc3MmJiF0aGlzLmNyb3NzLmFkZGVkVG9Db2xvckF4aXMmJnRoaXMubGVnZW5kR3JvdXAmJih0aGlzLmNyb3NzLmFkZENsYXNzKCJoaWdoY2hhcnRzLWNvbG9yYXhpcy1tYXJrZXIiKS5hZGQodGhpcy5sZWdlbmRHcm91cCksdGhpcy5jcm9zcy5hZGRlZFRvQ29sb3JBeGlzPSEwLCF0aGlzLmNoYXJ0LnN0eWxlZE1vZGUmJnRoaXMuY3Jvc3NoYWlyJiZ0aGlzLmNyb3NzLmF0dHIoe2ZpbGw6dGhpcy5jcm9zc2hhaXIuY29sb3J9KSl9fTtlLnByb3RvdHlwZS5nZXRQbG90TGluZVBhdGg9ZnVuY3Rpb24oZSl7dmFyIGQ9dGhpcy5sZWZ0LG09ZS50cmFuc2xhdGVkVmFsdWUsZz10aGlzLnRvcDtyZXR1cm4gcShtKT90aGlzLmhvcml6P1tbIk0iLG0tNCxnLTZdLFsiTCIsbSs0LGctNl0sWyJMIixtLGddLFsiWiJdXTpbWyJNIixkLG1dLFsiTCIsZC02LG0rNl0sWyJMIixkLTYsbS02XSxbIloiXV06Yi5wcm90b3R5cGUuZ2V0UGxvdExpbmVQYXRoLmNhbGwodGhpcywNCmUpfTtlLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZCxtKXt2YXIgZz10aGlzLmNoYXJ0LHQ9Zy5sZWdlbmQsZj1lLmJ1aWxkT3B0aW9ucyhnLHt9LGQpO3RoaXMuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYil7Yi5pc0RpcnR5RGF0YT0hMH0pOyhkLmRhdGFDbGFzc2VzJiZ0LmFsbEl0ZW1zfHx0aGlzLmRhdGFDbGFzc2VzKSYmdGhpcy5kZXN0cm95SXRlbXMoKTtnLm9wdGlvbnNbdGhpcy5jb2xsXT1wKHRoaXMudXNlck9wdGlvbnMsZik7Yi5wcm90b3R5cGUudXBkYXRlLmNhbGwodGhpcyxmLG0pO3RoaXMubGVnZW5kSXRlbSYmKHRoaXMuc2V0TGVnZW5kQ29sb3IoKSx0LmNvbG9yaXplSXRlbSh0aGlzLCEwKSl9O2UucHJvdG90eXBlLmRlc3Ryb3lJdGVtcz1mdW5jdGlvbigpe3ZhciBiPXRoaXMuY2hhcnQ7dGhpcy5sZWdlbmRJdGVtP2IubGVnZW5kLmRlc3Ryb3lJdGVtKHRoaXMpOnRoaXMubGVnZW5kSXRlbXMmJnRoaXMubGVnZW5kSXRlbXMuZm9yRWFjaChmdW5jdGlvbihlKXtiLmxlZ2VuZC5kZXN0cm95SXRlbShlKX0pOw0KYi5pc0RpcnR5TGVnZW5kPSEwfTtlLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oZSl7dGhpcy5kZXN0cm95SXRlbXMoKTtiLnByb3RvdHlwZS5yZW1vdmUuY2FsbCh0aGlzLGUpfTtlLnByb3RvdHlwZS5nZXREYXRhQ2xhc3NMZWdlbmRTeW1ib2xzPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxlPWIuY2hhcnQsZD1iLmxlZ2VuZEl0ZW1zLG09ZS5vcHRpb25zLmxlZ2VuZCxnPW0udmFsdWVEZWNpbWFscyxmPW0udmFsdWVTdWZmaXh8fCIiLGM7ZC5sZW5ndGh8fGIuZGF0YUNsYXNzZXMuZm9yRWFjaChmdW5jdGlvbihtLHQpe3ZhciBsPSEwLGE9bS5mcm9tLHY9bS50byxxPWUubnVtYmVyRm9ybWF0dGVyO2M9IiI7InVuZGVmaW5lZCI9PT10eXBlb2YgYT9jPSI8ICI6InVuZGVmaW5lZCI9PT10eXBlb2YgdiYmKGM9Ij4gIik7InVuZGVmaW5lZCIhPT10eXBlb2YgYSYmKGMrPXEoYSxnKStmKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBhJiYidW5kZWZpbmVkIiE9PXR5cGVvZiB2JiYoYys9IiAtICIpOw0KInVuZGVmaW5lZCIhPT10eXBlb2YgdiYmKGMrPXEodixnKStmKTtkLnB1c2goeCh7Y2hhcnQ6ZSxuYW1lOmMsb3B0aW9uczp7fSxkcmF3TGVnZW5kU3ltYm9sOkMuZHJhd1JlY3RhbmdsZSx2aXNpYmxlOiEwLHNldFN0YXRlOmgsaXNEYXRhQ2xhc3M6ITAsc2V0VmlzaWJsZTpmdW5jdGlvbigpe2w9Yi52aXNpYmxlPSFsO2Iuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYil7Yi5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihiKXtiLmRhdGFDbGFzcz09PXQmJmIuc2V0VmlzaWJsZShsKX0pfSk7ZS5sZWdlbmQuY29sb3JpemVJdGVtKHRoaXMsbCl9fSxtKSl9KTtyZXR1cm4gZH07ZS5kZWZhdWx0TGVnZW5kTGVuZ3RoPTIwMDtlLmRlZmF1bHRPcHRpb25zPXtsaW5lV2lkdGg6MCxtaW5QYWRkaW5nOjAsbWF4UGFkZGluZzowLGdyaWRMaW5lV2lkdGg6MSx0aWNrUGl4ZWxJbnRlcnZhbDo3MixzdGFydE9uVGljazohMCxlbmRPblRpY2s6ITAsb2Zmc2V0OjAsbWFya2VyOnthbmltYXRpb246e2R1cmF0aW9uOjUwfSwNCndpZHRoOi4wMSxjb2xvcjoiIzk5OTk5OSJ9LGxhYmVsczp7b3ZlcmZsb3c6Imp1c3RpZnkiLHJvdGF0aW9uOjB9LG1pbkNvbG9yOiIjZTZlYmY1IixtYXhDb2xvcjoiIzAwMzM5OSIsdGlja0xlbmd0aDo1LHNob3dJbkxlZ2VuZDohMH07ZS5rZWVwUHJvcHM9WyJsZWdlbmRHcm91cCIsImxlZ2VuZEl0ZW1IZWlnaHQiLCJsZWdlbmRJdGVtV2lkdGgiLCJsZWdlbmRJdGVtIiwibGVnZW5kU3ltYm9sIl07cmV0dXJuIGV9KGEpO0FycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGEua2VlcFByb3BzLGIua2VlcFByb3BzKTtuLkNvbG9yQXhpcz1iO1siZmlsbCIsInN0cm9rZSJdLmZvckVhY2goZnVuY3Rpb24oYil7bC5wcm90b3R5cGVbYisiU2V0dGVyIl09ZnVuY3Rpb24oKXt0aGlzLmVsZW0uYXR0cihiLHUodGhpcy5zdGFydCkudHdlZW5Ubyh1KHRoaXMuZW5kKSx0aGlzLnBvcyksbnVsbCwhMCl9fSk7ayhyLCJhZnRlckdldEF4ZXMiLGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxkPWUub3B0aW9uczsNCnRoaXMuY29sb3JBeGlzPVtdO2QuY29sb3JBeGlzJiYoZC5jb2xvckF4aXM9ZyhkLmNvbG9yQXhpcyksZC5jb2xvckF4aXMuZm9yRWFjaChmdW5jdGlvbihkLG0pe2QuaW5kZXg9bTtuZXcgYihlLGQpfSkpfSk7ayhkLCJiaW5kQXhlcyIsZnVuY3Rpb24oKXt2YXIgYj10aGlzLmF4aXNUeXBlcztiPy0xPT09Yi5pbmRleE9mKCJjb2xvckF4aXMiKSYmYi5wdXNoKCJjb2xvckF4aXMiKTp0aGlzLmF4aXNUeXBlcz1bImNvbG9yQXhpcyJdfSk7ayhjLCJhZnRlckdldEFsbEl0ZW1zIixmdW5jdGlvbihiKXt2YXIgZT1bXSxkLGc7KHRoaXMuY2hhcnQuY29sb3JBeGlzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihnKXsoZD1nLm9wdGlvbnMpJiZkLnNob3dJbkxlZ2VuZCYmKGQuZGF0YUNsYXNzZXMmJmQudmlzaWJsZT9lPWUuY29uY2F0KGcuZ2V0RGF0YUNsYXNzTGVnZW5kU3ltYm9scygpKTpkLnZpc2libGUmJmUucHVzaChnKSxnLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKCFlLm9wdGlvbnMuc2hvd0luTGVnZW5kfHwNCmQuZGF0YUNsYXNzZXMpInBvaW50Ij09PWUub3B0aW9ucy5sZWdlbmRUeXBlP2UucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oZSl7ZihiLmFsbEl0ZW1zLGUpfSk6ZihiLmFsbEl0ZW1zLGUpfSkpfSk7Zm9yKGc9ZS5sZW5ndGg7Zy0tOyliLmFsbEl0ZW1zLnVuc2hpZnQoZVtnXSl9KTtrKGMsImFmdGVyQ29sb3JpemVJdGVtIixmdW5jdGlvbihiKXtiLnZpc2libGUmJmIuaXRlbS5sZWdlbmRDb2xvciYmYi5pdGVtLmxlZ2VuZFN5bWJvbC5hdHRyKHtmaWxsOmIuaXRlbS5sZWdlbmRDb2xvcn0pfSk7ayhjLCJhZnRlclVwZGF0ZSIsZnVuY3Rpb24oKXt2YXIgYj10aGlzLmNoYXJ0LmNvbG9yQXhpcztiJiZiLmZvckVhY2goZnVuY3Rpb24oYixlLGQpe2IudXBkYXRlKHt9LGQpfSl9KTtrKGQsImFmdGVyVHJhbnNsYXRlIixmdW5jdGlvbigpeyh0aGlzLmNoYXJ0LmNvbG9yQXhpcyYmdGhpcy5jaGFydC5jb2xvckF4aXMubGVuZ3RofHx0aGlzLmNvbG9yQXR0cmlicykmJnRoaXMudHJhbnNsYXRlQ29sb3JzKCl9KTsNCnJldHVybiBifSk7eihhLCJwYXJ0cy1tYXAvQ29sb3JNYXBTZXJpZXNNaXhpbi5qcyIsW2FbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJwYXJ0cy9Qb2ludC5qcyJdLGFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihhLHIsayl7dmFyIG49ay5kZWZpbmVkO2s9YS5ub29wO3ZhciBjPWEuc2VyaWVzVHlwZXM7YS5jb2xvck1hcFBvaW50TWl4aW49e2RhdGFMYWJlbE9uTnVsbDohMCxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT10aGlzLnZhbHVlJiZJbmZpbml0eSE9PXRoaXMudmFsdWUmJi1JbmZpbml0eSE9PXRoaXMudmFsdWV9LHNldFN0YXRlOmZ1bmN0aW9uKGMpe3IucHJvdG90eXBlLnNldFN0YXRlLmNhbGwodGhpcyxjKTt0aGlzLmdyYXBoaWMmJnRoaXMuZ3JhcGhpYy5hdHRyKHt6SW5kZXg6ImhvdmVyIj09PWM/MTowfSl9fTthLmNvbG9yTWFwU2VyaWVzTWl4aW49e3BvaW50QXJyYXlNYXA6WyJ2YWx1ZSJdLGF4aXNUeXBlczpbInhBeGlzIiwieUF4aXMiLA0KImNvbG9yQXhpcyJdLHRyYWNrZXJHcm91cHM6WyJncm91cCIsIm1hcmtlckdyb3VwIiwiZGF0YUxhYmVsc0dyb3VwIl0sZ2V0U3ltYm9sOmsscGFyYWxsZWxBcnJheXM6WyJ4IiwieSIsInZhbHVlIl0sY29sb3JLZXk6InZhbHVlIixwb2ludEF0dHJpYnM6Yy5jb2x1bW4ucHJvdG90eXBlLnBvaW50QXR0cmlicyxjb2xvckF0dHJpYnM6ZnVuY3Rpb24oYyl7dmFyIGE9e307bihjLmNvbG9yKSYmKGFbdGhpcy5jb2xvclByb3B8fCJmaWxsIl09Yy5jb2xvcik7cmV0dXJuIGF9fX0pO3ooYSwicGFydHMtbWFwL01hcE5hdmlnYXRpb24uanMiLFthWyJwYXJ0cy9DaGFydC5qcyJdLGFbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxyLGspe2Z1bmN0aW9uIG4oZil7ZiYmKGYucHJldmVudERlZmF1bHQmJmYucHJldmVudERlZmF1bHQoKSxmLnN0b3BQcm9wYWdhdGlvbiYmZi5zdG9wUHJvcGFnYXRpb24oKSxmLmNhbmNlbEJ1YmJsZT0hMCl9DQpmdW5jdGlvbiBjKGYpe3RoaXMuaW5pdChmKX12YXIgQz1yLmRvYyx3PWsuYWRkRXZlbnQsQT1rLmV4dGVuZCxCPWsubWVyZ2UsdT1rLm9iamVjdEVhY2gsaD1rLnBpY2s7Yy5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihmKXt0aGlzLmNoYXJ0PWY7Zi5tYXBOYXZCdXR0b25zPVtdfTtjLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZil7dmFyIGM9dGhpcy5jaGFydCxhPWMub3B0aW9ucy5tYXBOYXZpZ2F0aW9uLHEscCx5LGcsZCxiPWZ1bmN0aW9uKGIpe3RoaXMuaGFuZGxlci5jYWxsKGMsYik7bihiKX0sZT1jLm1hcE5hdkJ1dHRvbnM7ZiYmKGE9Yy5vcHRpb25zLm1hcE5hdmlnYXRpb249QihjLm9wdGlvbnMubWFwTmF2aWdhdGlvbixmKSk7Zm9yKDtlLmxlbmd0aDspZS5wb3AoKS5kZXN0cm95KCk7aChhLmVuYWJsZUJ1dHRvbnMsYS5lbmFibGVkKSYmIWMucmVuZGVyZXIuZm9yRXhwb3J0JiZ1KGEuYnV0dG9ucyxmdW5jdGlvbihtLGYpe3E9QihhLmJ1dHRvbk9wdGlvbnMsbSk7Yy5zdHlsZWRNb2RlfHwNCihwPXEudGhlbWUscC5zdHlsZT1CKHEudGhlbWUuc3R5bGUscS5zdHlsZSksZz0oeT1wLnN0YXRlcykmJnkuaG92ZXIsZD15JiZ5LnNlbGVjdCk7bT1jLnJlbmRlcmVyLmJ1dHRvbihxLnRleHQsMCwwLGIscCxnLGQsMCwiem9vbUluIj09PWY/InRvcGJ1dHRvbiI6ImJvdHRvbWJ1dHRvbiIpLmFkZENsYXNzKCJoaWdoY2hhcnRzLW1hcC1uYXZpZ2F0aW9uIGhpZ2hjaGFydHMtIit7em9vbUluOiJ6b29tLWluIix6b29tT3V0OiJ6b29tLW91dCJ9W2ZdKS5hdHRyKHt3aWR0aDpxLndpZHRoLGhlaWdodDpxLmhlaWdodCx0aXRsZTpjLm9wdGlvbnMubGFuZ1tmXSxwYWRkaW5nOnEucGFkZGluZyx6SW5kZXg6NX0pLmFkZCgpO20uaGFuZGxlcj1xLm9uY2xpY2s7dyhtLmVsZW1lbnQsImRibGNsaWNrIixuKTtlLnB1c2gobSk7dmFyIHQ9cSxsPXcoYywibG9hZCIsZnVuY3Rpb24oKXttLmFsaWduKEEodCx7d2lkdGg6bS53aWR0aCxoZWlnaHQ6MiptLmhlaWdodH0pLG51bGwsdC5hbGlnblRvKTsNCmwoKX0pfSk7dGhpcy51cGRhdGVFdmVudHMoYSl9O2MucHJvdG90eXBlLnVwZGF0ZUV2ZW50cz1mdW5jdGlvbihjKXt2YXIgZj10aGlzLmNoYXJ0O2goYy5lbmFibGVEb3VibGVDbGlja1pvb20sYy5lbmFibGVkKXx8Yy5lbmFibGVEb3VibGVDbGlja1pvb21Ubz90aGlzLnVuYmluZERibENsaWNrPXRoaXMudW5iaW5kRGJsQ2xpY2t8fHcoZi5jb250YWluZXIsImRibGNsaWNrIixmdW5jdGlvbihjKXtmLnBvaW50ZXIub25Db250YWluZXJEYmxDbGljayhjKX0pOnRoaXMudW5iaW5kRGJsQ2xpY2smJih0aGlzLnVuYmluZERibENsaWNrPXRoaXMudW5iaW5kRGJsQ2xpY2soKSk7aChjLmVuYWJsZU1vdXNlV2hlZWxab29tLGMuZW5hYmxlZCk/dGhpcy51bmJpbmRNb3VzZVdoZWVsPXRoaXMudW5iaW5kTW91c2VXaGVlbHx8dyhmLmNvbnRhaW5lciwidW5kZWZpbmVkIj09PXR5cGVvZiBDLm9ubW91c2V3aGVlbD8iRE9NTW91c2VTY3JvbGwiOiJtb3VzZXdoZWVsIixmdW5jdGlvbihjKXtmLnBvaW50ZXIub25Db250YWluZXJNb3VzZVdoZWVsKGMpOw0KbihjKTtyZXR1cm4hMX0pOnRoaXMudW5iaW5kTW91c2VXaGVlbCYmKHRoaXMudW5iaW5kTW91c2VXaGVlbD10aGlzLnVuYmluZE1vdXNlV2hlZWwoKSl9O0EoYS5wcm90b3R5cGUse2ZpdFRvQm94OmZ1bmN0aW9uKGMsYSl7W1sieCIsIndpZHRoIl0sWyJ5IiwiaGVpZ2h0Il1dLmZvckVhY2goZnVuY3Rpb24oZil7dmFyIGw9ZlswXTtmPWZbMV07Y1tsXStjW2ZdPmFbbF0rYVtmXSYmKGNbZl0+YVtmXT8oY1tmXT1hW2ZdLGNbbF09YVtsXSk6Y1tsXT1hW2xdK2FbZl0tY1tmXSk7Y1tmXT5hW2ZdJiYoY1tmXT1hW2ZdKTtjW2xdPGFbbF0mJihjW2xdPWFbbF0pfSk7cmV0dXJuIGN9LG1hcFpvb206ZnVuY3Rpb24oYyxhLGwscSxwKXt2YXIgZj10aGlzLnhBeGlzWzBdLGc9Zi5tYXgtZi5taW4sZD1oKGEsZi5taW4rZy8yKSxiPWcqYztnPXRoaXMueUF4aXNbMF07dmFyIGU9Zy5tYXgtZy5taW4sbT1oKGwsZy5taW4rZS8yKTtlKj1jO2Q9dGhpcy5maXRUb0JveCh7eDpkLWIqKHE/KHEtZi5wb3MpLw0KZi5sZW46LjUpLHk6bS1lKihwPyhwLWcucG9zKS9nLmxlbjouNSksd2lkdGg6YixoZWlnaHQ6ZX0se3g6Zi5kYXRhTWluLHk6Zy5kYXRhTWluLHdpZHRoOmYuZGF0YU1heC1mLmRhdGFNaW4saGVpZ2h0OmcuZGF0YU1heC1nLmRhdGFNaW59KTtiPWQueDw9Zi5kYXRhTWluJiZkLndpZHRoPj1mLmRhdGFNYXgtZi5kYXRhTWluJiZkLnk8PWcuZGF0YU1pbiYmZC5oZWlnaHQ+PWcuZGF0YU1heC1nLmRhdGFNaW47cSYmZi5tYXBBeGlzJiYoZi5tYXBBeGlzLmZpeFRvPVtxLWYucG9zLGFdKTtwJiZnLm1hcEF4aXMmJihnLm1hcEF4aXMuZml4VG89W3AtZy5wb3MsbF0pOyJ1bmRlZmluZWQiPT09dHlwZW9mIGN8fGI/KGYuc2V0RXh0cmVtZXModm9pZCAwLHZvaWQgMCwhMSksZy5zZXRFeHRyZW1lcyh2b2lkIDAsdm9pZCAwLCExKSk6KGYuc2V0RXh0cmVtZXMoZC54LGQueCtkLndpZHRoLCExKSxnLnNldEV4dHJlbWVzKGQueSxkLnkrZC5oZWlnaHQsITEpKTt0aGlzLnJlZHJhdygpfX0pO3coYSwNCiJiZWZvcmVSZW5kZXIiLGZ1bmN0aW9uKCl7dGhpcy5tYXBOYXZpZ2F0aW9uPW5ldyBjKHRoaXMpO3RoaXMubWFwTmF2aWdhdGlvbi51cGRhdGUoKX0pO3IuTWFwTmF2aWdhdGlvbj1jfSk7eihhLCJwYXJ0cy1tYXAvTWFwUG9pbnRlci5qcyIsW2FbInBhcnRzL1BvaW50ZXIuanMiXSxhWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxyKXt2YXIgaz1yLmV4dGVuZCxuPXIucGljaztyPXIud3JhcDtrKGEucHJvdG90eXBlLHtvbkNvbnRhaW5lckRibENsaWNrOmZ1bmN0aW9uKGMpe3ZhciBhPXRoaXMuY2hhcnQ7Yz10aGlzLm5vcm1hbGl6ZShjKTthLm9wdGlvbnMubWFwTmF2aWdhdGlvbi5lbmFibGVEb3VibGVDbGlja1pvb21Ubz9hLnBvaW50ZXIuaW5DbGFzcyhjLnRhcmdldCwiaGlnaGNoYXJ0cy10cmFja2VyIikmJmEuaG92ZXJQb2ludCYmYS5ob3ZlclBvaW50Lnpvb21UbygpOmEuaXNJbnNpZGVQbG90KGMuY2hhcnRYLWEucGxvdExlZnQsYy5jaGFydFktYS5wbG90VG9wKSYmDQphLm1hcFpvb20oLjUsYS54QXhpc1swXS50b1ZhbHVlKGMuY2hhcnRYKSxhLnlBeGlzWzBdLnRvVmFsdWUoYy5jaGFydFkpLGMuY2hhcnRYLGMuY2hhcnRZKX0sb25Db250YWluZXJNb3VzZVdoZWVsOmZ1bmN0aW9uKGMpe3ZhciBhPXRoaXMuY2hhcnQ7Yz10aGlzLm5vcm1hbGl6ZShjKTt2YXIgaz1jLmRldGFpbHx8LShjLndoZWVsRGVsdGEvMTIwKTthLmlzSW5zaWRlUGxvdChjLmNoYXJ0WC1hLnBsb3RMZWZ0LGMuY2hhcnRZLWEucGxvdFRvcCkmJmEubWFwWm9vbShNYXRoLnBvdyhhLm9wdGlvbnMubWFwTmF2aWdhdGlvbi5tb3VzZVdoZWVsU2Vuc2l0aXZpdHksayksYS54QXhpc1swXS50b1ZhbHVlKGMuY2hhcnRYKSxhLnlBeGlzWzBdLnRvVmFsdWUoYy5jaGFydFkpLGMuY2hhcnRYLGMuY2hhcnRZKX19KTtyKGEucHJvdG90eXBlLCJ6b29tT3B0aW9uIixmdW5jdGlvbihjKXt2YXIgYT10aGlzLmNoYXJ0Lm9wdGlvbnMubWFwTmF2aWdhdGlvbjtuKGEuZW5hYmxlVG91Y2hab29tLGEuZW5hYmxlZCkmJg0KKHRoaXMuY2hhcnQub3B0aW9ucy5jaGFydC5waW5jaFR5cGU9Inh5Iik7Yy5hcHBseSh0aGlzLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKX0pO3IoYS5wcm90b3R5cGUsInBpbmNoVHJhbnNsYXRlIixmdW5jdGlvbihjLGEsayxuLHcsdSxoKXtjLmNhbGwodGhpcyxhLGssbix3LHUsaCk7Im1hcCI9PT10aGlzLmNoYXJ0Lm9wdGlvbnMuY2hhcnQudHlwZSYmdGhpcy5oYXNab29tJiYoYz1uLnNjYWxlWD5uLnNjYWxlWSx0aGlzLnBpbmNoVHJhbnNsYXRlRGlyZWN0aW9uKCFjLGEsayxuLHcsdSxoLGM/bi5zY2FsZVg6bi5zY2FsZVkpKX0pfSk7eihhLCJwYXJ0cy1tYXAvTWFwU2VyaWVzLmpzIixbYVsicGFydHMvR2xvYmFscy5qcyJdLGFbIm1peGlucy9sZWdlbmQtc3ltYm9sLmpzIl0sYVsicGFydHMvUG9pbnQuanMiXSxhWyJwYXJ0cy9TVkdSZW5kZXJlci5qcyJdLGFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihhLHIsayxuLGMpe3ZhciB3PWMuZXh0ZW5kLHo9Yy5maXJlRXZlbnQsDQpBPWMuZ2V0TmVzdGVkUHJvcGVydHksQj1jLmlzQXJyYXksdT1jLmlzTnVtYmVyLGg9Yy5tZXJnZSxmPWMub2JqZWN0RWFjaCx4PWMucGljayxsPWMuc2VyaWVzVHlwZSxxPWMuc3BsYXQscD1hLmNvbG9yTWFwUG9pbnRNaXhpbix5PWEubm9vcCxnPWEuU2VyaWVzLGQ9YS5zZXJpZXNUeXBlcztsKCJtYXAiLCJzY2F0dGVyIix7YW5pbWF0aW9uOiExLGRhdGFMYWJlbHM6e2Nyb3A6ITEsZm9ybWF0dGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9pbnQudmFsdWV9LGluc2lkZTohMCxvdmVyZmxvdzohMSxwYWRkaW5nOjAsdmVydGljYWxBbGlnbjoibWlkZGxlIn0sbWFya2VyOm51bGwsbnVsbENvbG9yOiIjZjdmN2Y3IixzdGlja3lUcmFja2luZzohMSx0b29sdGlwOntmb2xsb3dQb2ludGVyOiEwLHBvaW50Rm9ybWF0OiJ7cG9pbnQubmFtZX06IHtwb2ludC52YWx1ZX08YnIvPiJ9LHR1cmJvVGhyZXNob2xkOjAsYWxsQXJlYXM6ITAsYm9yZGVyQ29sb3I6IiNjY2NjY2MiLGJvcmRlcldpZHRoOjEsDQpqb2luQnk6ImhjLWtleSIsc3RhdGVzOntob3Zlcjp7aGFsbzpudWxsLGJyaWdodG5lc3M6LjJ9LG5vcm1hbDp7YW5pbWF0aW9uOiEwfSxzZWxlY3Q6e2NvbG9yOiIjY2NjY2NjIn0saW5hY3RpdmU6e29wYWNpdHk6MX19fSxoKGEuY29sb3JNYXBTZXJpZXNNaXhpbix7dHlwZToibWFwIixnZXRFeHRyZW1lc0Zyb21BbGw6ITAsdXNlTWFwR2VvbWV0cnk6ITAsZm9yY2VETDohMCxzZWFyY2hQb2ludDp5LGRpcmVjdFRvdWNoOiEwLHByZXNlcnZlQXNwZWN0UmF0aW86ITAscG9pbnRBcnJheU1hcDpbInZhbHVlIl0sc2V0T3B0aW9uczpmdW5jdGlvbihiKXtiPWcucHJvdG90eXBlLnNldE9wdGlvbnMuY2FsbCh0aGlzLGIpO3ZhciBlPWIuam9pbkJ5O251bGw9PT1lJiYoZT0iX2kiKTtlPXRoaXMuam9pbkJ5PXEoZSk7ZVsxXXx8KGVbMV09ZVswXSk7cmV0dXJuIGJ9LGdldEJveDpmdW5jdGlvbihiKXt2YXIgZT1OdW1iZXIuTUFYX1ZBTFVFLGQ9LWUsYz1lLGc9LWUsZj1lLGw9ZSxoPXRoaXMueEF4aXMsDQpwPXRoaXMueUF4aXMscTsoYnx8W10pLmZvckVhY2goZnVuY3Rpb24oYil7aWYoYi5wYXRoKXsic3RyaW5nIj09PXR5cGVvZiBiLnBhdGg/Yi5wYXRoPWEuc3BsaXRQYXRoKGIucGF0aCk6Ik0iPT09Yi5wYXRoWzBdJiYoYi5wYXRoPW4ucHJvdG90eXBlLnBhdGhUb1NlZ21lbnRzKGIucGF0aCkpO3ZhciBtPWIucGF0aHx8W10sdD0tZSxoPWUscD0tZSx2PWUsdT1iLnByb3BlcnRpZXM7Yi5fZm91bmRCb3h8fChtLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIGU9YltiLmxlbmd0aC0yXTtiPWJbYi5sZW5ndGgtMV07Im51bWJlciI9PT10eXBlb2YgZSYmIm51bWJlciI9PT10eXBlb2YgYiYmKGg9TWF0aC5taW4oaCxlKSx0PU1hdGgubWF4KHQsZSksdj1NYXRoLm1pbih2LGIpLHA9TWF0aC5tYXgocCxiKSl9KSxiLl9taWRYPWgrKHQtaCkqeChiLm1pZGRsZVgsdSYmdVsiaGMtbWlkZGxlLXgiXSwuNSksYi5fbWlkWT12KyhwLXYpKngoYi5taWRkbGVZLHUmJnVbImhjLW1pZGRsZS15Il0sLjUpLA0KYi5fbWF4WD10LGIuX21pblg9aCxiLl9tYXhZPXAsYi5fbWluWT12LGIubGFiZWxyYW5rPXgoYi5sYWJlbHJhbmssKHQtaCkqKHAtdikpLGIuX2ZvdW5kQm94PSEwKTtkPU1hdGgubWF4KGQsYi5fbWF4WCk7Yz1NYXRoLm1pbihjLGIuX21pblgpO2c9TWF0aC5tYXgoZyxiLl9tYXhZKTtmPU1hdGgubWluKGYsYi5fbWluWSk7bD1NYXRoLm1pbihiLl9tYXhYLWIuX21pblgsYi5fbWF4WS1iLl9taW5ZLGwpO3E9ITB9fSk7cSYmKHRoaXMubWluWT1NYXRoLm1pbihmLHgodGhpcy5taW5ZLGUpKSx0aGlzLm1heFk9TWF0aC5tYXgoZyx4KHRoaXMubWF4WSwtZSkpLHRoaXMubWluWD1NYXRoLm1pbihjLHgodGhpcy5taW5YLGUpKSx0aGlzLm1heFg9TWF0aC5tYXgoZCx4KHRoaXMubWF4WCwtZSkpLGgmJiJ1bmRlZmluZWQiPT09dHlwZW9mIGgub3B0aW9ucy5taW5SYW5nZSYmKGgubWluUmFuZ2U9TWF0aC5taW4oNSpsLCh0aGlzLm1heFgtdGhpcy5taW5YKS81LGgubWluUmFuZ2V8fGUpKSxwJiYNCiJ1bmRlZmluZWQiPT09dHlwZW9mIHAub3B0aW9ucy5taW5SYW5nZSYmKHAubWluUmFuZ2U9TWF0aC5taW4oNSpsLCh0aGlzLm1heFktdGhpcy5taW5ZKS81LHAubWluUmFuZ2V8fGUpKSl9LGhhc0RhdGE6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMucHJvY2Vzc2VkWERhdGEubGVuZ3RofSxnZXRFeHRyZW1lczpmdW5jdGlvbigpe3ZhciBiPWcucHJvdG90eXBlLmdldEV4dHJlbWVzLmNhbGwodGhpcyx0aGlzLnZhbHVlRGF0YSksZT1iLmRhdGFNaW47Yj1iLmRhdGFNYXg7dGhpcy5jaGFydC5oYXNSZW5kZXJlZCYmdGhpcy5pc0RpcnR5RGF0YSYmdGhpcy5nZXRCb3godGhpcy5vcHRpb25zLmRhdGEpO3UoZSkmJih0aGlzLnZhbHVlTWluPWUpO3UoYikmJih0aGlzLnZhbHVlTWF4PWIpO3JldHVybntkYXRhTWluOnRoaXMubWluWSxkYXRhTWF4OnRoaXMubWF4WX19LHRyYW5zbGF0ZVBhdGg6ZnVuY3Rpb24oYil7dmFyIGU9dGhpcy54QXhpcyxkPXRoaXMueUF4aXMsYT1lLm1pbixjPWUudHJhbnNBLA0KZz1lLm1pblBpeGVsUGFkZGluZyxmPWQubWluLGw9ZC50cmFuc0EsaD1kLm1pblBpeGVsUGFkZGluZyxwPVtdO2ImJmIuZm9yRWFjaChmdW5jdGlvbihiKXsiTSI9PT1iWzBdP3AucHVzaChbIk0iLChiWzFdLShhfHwwKSkqYytnLChiWzJdLShmfHwwKSkqbCtoXSk6IkwiPT09YlswXT9wLnB1c2goWyJMIiwoYlsxXS0oYXx8MCkpKmMrZywoYlsyXS0oZnx8MCkpKmwraF0pOiJDIj09PWJbMF0/cC5wdXNoKFsiQyIsKGJbMV0tKGF8fDApKSpjK2csKGJbMl0tKGZ8fDApKSpsK2gsKGJbM10tKGF8fDApKSpjK2csKGJbNF0tKGZ8fDApKSpsK2gsKGJbNV0tKGF8fDApKSpjK2csKGJbNl0tKGZ8fDApKSpsK2hdKToiUSI9PT1iWzBdP3AucHVzaChbIlEiLChiWzFdLShhfHwwKSkqYytnLChiWzJdLShmfHwwKSkqbCtoLChiWzNdLShhfHwwKSkqYytnLChiWzRdLShmfHwwKSkqbCtoXSk6IloiPT09YlswXSYmcC5wdXNoKFsiWiJdKX0pO3JldHVybiBwfSxzZXREYXRhOmZ1bmN0aW9uKGIsZSxkLA0KYyl7dmFyIG09dGhpcy5vcHRpb25zLGw9dGhpcy5jaGFydC5vcHRpb25zLmNoYXJ0LHA9bCYmbC5tYXAscT1tLm1hcERhdGEsdj10aGlzLmpvaW5CeSx5PW0ua2V5c3x8dGhpcy5wb2ludEFycmF5TWFwLG49W10seD17fSxyPXRoaXMuY2hhcnQubWFwVHJhbnNmb3JtczshcSYmcCYmKHE9InN0cmluZyI9PT10eXBlb2YgcD9hLm1hcHNbcF06cCk7YiYmYi5mb3JFYWNoKGZ1bmN0aW9uKGUsZCl7dmFyIGE9MDtpZih1KGUpKWJbZF09e3ZhbHVlOmV9O2Vsc2UgaWYoQihlKSl7YltkXT17fTshbS5rZXlzJiZlLmxlbmd0aD55Lmxlbmd0aCYmInN0cmluZyI9PT10eXBlb2YgZVswXSYmKGJbZF1bImhjLWtleSJdPWVbMF0sKythKTtmb3IodmFyIGM9MDtjPHkubGVuZ3RoOysrYywrK2EpeVtjXSYmInVuZGVmaW5lZCIhPT10eXBlb2YgZVthXSYmKDA8eVtjXS5pbmRleE9mKCIuIik/ay5wcm90b3R5cGUuc2V0TmVzdGVkUHJvcGVydHkoYltkXSxlW2FdLHlbY10pOmJbZF1beVtjXV09ZVthXSl9diYmDQoiX2kiPT09dlswXSYmKGJbZF0uX2k9ZCl9KTt0aGlzLmdldEJveChiKTsodGhpcy5jaGFydC5tYXBUcmFuc2Zvcm1zPXI9bCYmbC5tYXBUcmFuc2Zvcm1zfHxxJiZxWyJoYy10cmFuc2Zvcm0iXXx8cikmJmYocixmdW5jdGlvbihiKXtiLnJvdGF0aW9uJiYoYi5jb3NBbmdsZT1NYXRoLmNvcyhiLnJvdGF0aW9uKSxiLnNpbkFuZ2xlPU1hdGguc2luKGIucm90YXRpb24pKX0pO2lmKHEpeyJGZWF0dXJlQ29sbGVjdGlvbiI9PT1xLnR5cGUmJih0aGlzLm1hcFRpdGxlPXEudGl0bGUscT1hLmdlb2pzb24ocSx0aGlzLnR5cGUsdGhpcykpO3RoaXMubWFwRGF0YT1xO3RoaXMubWFwTWFwPXt9O2ZvcihyPTA7cjxxLmxlbmd0aDtyKyspbD1xW3JdLHA9bC5wcm9wZXJ0aWVzLGwuX2k9cix2WzBdJiZwJiZwW3ZbMF1dJiYobFt2WzBdXT1wW3ZbMF1dKSx4W2xbdlswXV1dPWw7dGhpcy5tYXBNYXA9eDtpZihiJiZ2WzFdKXt2YXIgdz12WzFdO2IuZm9yRWFjaChmdW5jdGlvbihiKXtiPUEodyxiKTsNCnhbYl0mJm4ucHVzaCh4W2JdKX0pfWlmKG0uYWxsQXJlYXMpe3RoaXMuZ2V0Qm94KHEpO2I9Ynx8W107aWYodlsxXSl7dmFyIEM9dlsxXTtiLmZvckVhY2goZnVuY3Rpb24oYil7bi5wdXNoKEEoQyxiKSl9KX1uPSJ8IituLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gYiYmYlt2WzBdXX0pLmpvaW4oInwiKSsifCI7cS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZbMF0mJi0xIT09bi5pbmRleE9mKCJ8IitlW3ZbMF1dKyJ8Iil8fChiLnB1c2goaChlLHt2YWx1ZTpudWxsfSkpLGM9ITEpfSl9ZWxzZSB0aGlzLmdldEJveChuKX1nLnByb3RvdHlwZS5zZXREYXRhLmNhbGwodGhpcyxiLGUsZCxjKX0sZHJhd0dyYXBoOnksZHJhd0RhdGFMYWJlbHM6eSxkb0Z1bGxUcmFuc2xhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0RpcnR5RGF0YXx8dGhpcy5jaGFydC5pc1Jlc2l6aW5nfHx0aGlzLmNoYXJ0LnJlbmRlcmVyLmlzVk1MfHwhdGhpcy5iYXNlVHJhbnN9LHRyYW5zbGF0ZTpmdW5jdGlvbigpe3ZhciBiPQ0KdGhpcyxlPWIueEF4aXMsZD1iLnlBeGlzLGE9Yi5kb0Z1bGxUcmFuc2xhdGUoKTtiLmdlbmVyYXRlUG9pbnRzKCk7Yi5kYXRhLmZvckVhY2goZnVuY3Rpb24oYyl7dShjLl9taWRYKSYmdShjLl9taWRZKSYmKGMucGxvdFg9ZS50b1BpeGVscyhjLl9taWRYLCEwKSxjLnBsb3RZPWQudG9QaXhlbHMoYy5fbWlkWSwhMCkpO2EmJihjLnNoYXBlVHlwZT0icGF0aCIsYy5zaGFwZUFyZ3M9e2Q6Yi50cmFuc2xhdGVQYXRoKGMucGF0aCl9KX0pO3ooYiwiYWZ0ZXJUcmFuc2xhdGUiKX0scG9pbnRBdHRyaWJzOmZ1bmN0aW9uKGIsZSl7ZT1iLnNlcmllcy5jaGFydC5zdHlsZWRNb2RlP3RoaXMuY29sb3JBdHRyaWJzKGIpOmQuY29sdW1uLnByb3RvdHlwZS5wb2ludEF0dHJpYnMuY2FsbCh0aGlzLGIsZSk7ZVsic3Ryb2tlLXdpZHRoIl09eChiLm9wdGlvbnNbdGhpcy5wb2ludEF0dHJUb09wdGlvbnMmJnRoaXMucG9pbnRBdHRyVG9PcHRpb25zWyJzdHJva2Utd2lkdGgiXXx8ImJvcmRlcldpZHRoIl0sDQoiaW5oZXJpdCIpO3JldHVybiBlfSxkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxlPWIueEF4aXMsYz1iLnlBeGlzLGE9Yi5ncm91cCxnPWIuY2hhcnQsZj1nLnJlbmRlcmVyLGw9dGhpcy5iYXNlVHJhbnM7Yi50cmFuc2Zvcm1Hcm91cHx8KGIudHJhbnNmb3JtR3JvdXA9Zi5nKCkuYXR0cih7c2NhbGVYOjEsc2NhbGVZOjF9KS5hZGQoYSksYi50cmFuc2Zvcm1Hcm91cC5zdXJ2aXZlPSEwKTtpZihiLmRvRnVsbFRyYW5zbGF0ZSgpKWcuaGFzUmVuZGVyZWQmJiFnLnN0eWxlZE1vZGUmJmIucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5zaGFwZUFyZ3MmJihlLnNoYXBlQXJncy5maWxsPWIucG9pbnRBdHRyaWJzKGUsZS5zdGF0ZSkuZmlsbCl9KSxiLmdyb3VwPWIudHJhbnNmb3JtR3JvdXAsZC5jb2x1bW4ucHJvdG90eXBlLmRyYXdQb2ludHMuYXBwbHkoYiksYi5ncm91cD1hLGIucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oZSl7aWYoZS5ncmFwaGljKXt2YXIgZD0iIjsNCmUubmFtZSYmKGQrPSJoaWdoY2hhcnRzLW5hbWUtIitlLm5hbWUucmVwbGFjZSgvIC9nLCItIikudG9Mb3dlckNhc2UoKSk7ZS5wcm9wZXJ0aWVzJiZlLnByb3BlcnRpZXNbImhjLWtleSJdJiYoZCs9IiBoaWdoY2hhcnRzLWtleS0iK2UucHJvcGVydGllc1siaGMta2V5Il0udG9Mb3dlckNhc2UoKSk7ZCYmZS5ncmFwaGljLmFkZENsYXNzKGQpO2cuc3R5bGVkTW9kZSYmZS5ncmFwaGljLmNzcyhiLnBvaW50QXR0cmlicyhlLGUuc2VsZWN0ZWQmJiJzZWxlY3QifHx2b2lkIDApKX19KSx0aGlzLmJhc2VUcmFucz17b3JpZ2luWDplLm1pbi1lLm1pblBpeGVsUGFkZGluZy9lLnRyYW5zQSxvcmlnaW5ZOmMubWluLWMubWluUGl4ZWxQYWRkaW5nL2MudHJhbnNBKyhjLnJldmVyc2VkPzA6Yy5sZW4vYy50cmFuc0EpLHRyYW5zQVg6ZS50cmFuc0EsdHJhbnNBWTpjLnRyYW5zQX0sdGhpcy50cmFuc2Zvcm1Hcm91cC5hbmltYXRlKHt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHNjYWxlWDoxLA0Kc2NhbGVZOjF9KTtlbHNle3ZhciBoPWUudHJhbnNBL2wudHJhbnNBWDt2YXIgcD1jLnRyYW5zQS9sLnRyYW5zQVk7dmFyIHE9ZS50b1BpeGVscyhsLm9yaWdpblgsITApO3ZhciB1PWMudG9QaXhlbHMobC5vcmlnaW5ZLCEwKTsuOTk8aCYmMS4wMT5oJiYuOTk8cCYmMS4wMT5wJiYocD1oPTEscT1NYXRoLnJvdW5kKHEpLHU9TWF0aC5yb3VuZCh1KSk7dmFyIHk9dGhpcy50cmFuc2Zvcm1Hcm91cDtpZihnLnJlbmRlcmVyLmdsb2JhbEFuaW1hdGlvbil7dmFyIG49eS5hdHRyKCJ0cmFuc2xhdGVYIik7dmFyIGs9eS5hdHRyKCJ0cmFuc2xhdGVZIik7dmFyIHI9eS5hdHRyKCJzY2FsZVgiKTt2YXIgdz15LmF0dHIoInNjYWxlWSIpO3kuYXR0cih7YW5pbWF0b3I6MH0pLmFuaW1hdGUoe2FuaW1hdG9yOjF9LHtzdGVwOmZ1bmN0aW9uKGIsZSl7eS5hdHRyKHt0cmFuc2xhdGVYOm4rKHEtbikqZS5wb3MsdHJhbnNsYXRlWTprKyh1LWspKmUucG9zLHNjYWxlWDpyKyhoLXIpKmUucG9zLHNjYWxlWTp3Kw0KKHAtdykqZS5wb3N9KX19KX1lbHNlIHkuYXR0cih7dHJhbnNsYXRlWDpxLHRyYW5zbGF0ZVk6dSxzY2FsZVg6aCxzY2FsZVk6cH0pfWcuc3R5bGVkTW9kZXx8YS5lbGVtZW50LnNldEF0dHJpYnV0ZSgic3Ryb2tlLXdpZHRoIix4KGIub3B0aW9uc1tiLnBvaW50QXR0clRvT3B0aW9ucyYmYi5wb2ludEF0dHJUb09wdGlvbnNbInN0cm9rZS13aWR0aCJdfHwiYm9yZGVyV2lkdGgiXSwxKS8oaHx8MSkpO3RoaXMuZHJhd01hcERhdGFMYWJlbHMoKX0sZHJhd01hcERhdGFMYWJlbHM6ZnVuY3Rpb24oKXtnLnByb3RvdHlwZS5kcmF3RGF0YUxhYmVscy5jYWxsKHRoaXMpO3RoaXMuZGF0YUxhYmVsc0dyb3VwJiZ0aGlzLmRhdGFMYWJlbHNHcm91cC5jbGlwKHRoaXMuY2hhcnQuY2xpcFJlY3QpfSxyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLGU9Zy5wcm90b3R5cGUucmVuZGVyO2IuY2hhcnQucmVuZGVyZXIuaXNWTUwmJjNFMzxiLmRhdGEubGVuZ3RoP3NldFRpbWVvdXQoZnVuY3Rpb24oKXtlLmNhbGwoYil9KToNCmUuY2FsbChiKX0sYW5pbWF0ZTpmdW5jdGlvbihiKXt2YXIgZT10aGlzLm9wdGlvbnMuYW5pbWF0aW9uLGQ9dGhpcy5ncm91cCxjPXRoaXMueEF4aXMsYT10aGlzLnlBeGlzLGc9Yy5wb3MsZj1hLnBvczt0aGlzLmNoYXJ0LnJlbmRlcmVyLmlzU1ZHJiYoITA9PT1lJiYoZT17ZHVyYXRpb246MUUzfSksYj9kLmF0dHIoe3RyYW5zbGF0ZVg6ZytjLmxlbi8yLHRyYW5zbGF0ZVk6ZithLmxlbi8yLHNjYWxlWDouMDAxLHNjYWxlWTouMDAxfSk6ZC5hbmltYXRlKHt0cmFuc2xhdGVYOmcsdHJhbnNsYXRlWTpmLHNjYWxlWDoxLHNjYWxlWToxfSxlKSl9LGFuaW1hdGVEcmlsbGRvd246ZnVuY3Rpb24oYil7dmFyIGU9dGhpcy5jaGFydC5wbG90Qm94LGQ9dGhpcy5jaGFydC5kcmlsbGRvd25MZXZlbHNbdGhpcy5jaGFydC5kcmlsbGRvd25MZXZlbHMubGVuZ3RoLTFdLGM9ZC5iQm94LGE9dGhpcy5jaGFydC5vcHRpb25zLmRyaWxsZG93bi5hbmltYXRpb247Ynx8KGI9TWF0aC5taW4oYy53aWR0aC8NCmUud2lkdGgsYy5oZWlnaHQvZS5oZWlnaHQpLGQuc2hhcGVBcmdzPXtzY2FsZVg6YixzY2FsZVk6Yix0cmFuc2xhdGVYOmMueCx0cmFuc2xhdGVZOmMueX0sdGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihiKXtiLmdyYXBoaWMmJmIuZ3JhcGhpYy5hdHRyKGQuc2hhcGVBcmdzKS5hbmltYXRlKHtzY2FsZVg6MSxzY2FsZVk6MSx0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowfSxhKX0pKX0sZHJhd0xlZ2VuZFN5bWJvbDpyLmRyYXdSZWN0YW5nbGUsYW5pbWF0ZURyaWxsdXBGcm9tOmZ1bmN0aW9uKGIpe2QuY29sdW1uLnByb3RvdHlwZS5hbmltYXRlRHJpbGx1cEZyb20uY2FsbCh0aGlzLGIpfSxhbmltYXRlRHJpbGx1cFRvOmZ1bmN0aW9uKGIpe2QuY29sdW1uLnByb3RvdHlwZS5hbmltYXRlRHJpbGx1cFRvLmNhbGwodGhpcyxiKX19KSx3KHthcHBseU9wdGlvbnM6ZnVuY3Rpb24oYixlKXt2YXIgZD10aGlzLnNlcmllcztiPWsucHJvdG90eXBlLmFwcGx5T3B0aW9ucy5jYWxsKHRoaXMsDQpiLGUpO2U9ZC5qb2luQnk7ZC5tYXBEYXRhJiZkLm1hcE1hcCYmKGU9ay5wcm90b3R5cGUuZ2V0TmVzdGVkUHJvcGVydHkuY2FsbChiLGVbMV0pLChlPSJ1bmRlZmluZWQiIT09dHlwZW9mIGUmJmQubWFwTWFwW2VdKT8oZC54eUZyb21TaGFwZSYmKGIueD1lLl9taWRYLGIueT1lLl9taWRZKSx3KGIsZSkpOmIudmFsdWU9Yi52YWx1ZXx8bnVsbCk7cmV0dXJuIGJ9LG9uTW91c2VPdmVyOmZ1bmN0aW9uKGIpe2MuY2xlYXJUaW1lb3V0KHRoaXMuY29sb3JJbnRlcnZhbCk7aWYobnVsbCE9PXRoaXMudmFsdWV8fHRoaXMuc2VyaWVzLm9wdGlvbnMubnVsbEludGVyYWN0aW9uKWsucHJvdG90eXBlLm9uTW91c2VPdmVyLmNhbGwodGhpcyxiKTtlbHNlIHRoaXMuc2VyaWVzLm9uTW91c2VPdXQoYil9LHpvb21UbzpmdW5jdGlvbigpe3ZhciBiPXRoaXMuc2VyaWVzO2IueEF4aXMuc2V0RXh0cmVtZXModGhpcy5fbWluWCx0aGlzLl9tYXhYLCExKTtiLnlBeGlzLnNldEV4dHJlbWVzKHRoaXMuX21pblksDQp0aGlzLl9tYXhZLCExKTtiLmNoYXJ0LnJlZHJhdygpfX0scCkpOyIifSk7eihhLCJwYXJ0cy1tYXAvTWFwTGluZVNlcmllcy5qcyIsW2FbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxyKXtyPXIuc2VyaWVzVHlwZTt2YXIgaz1hLnNlcmllc1R5cGVzO3IoIm1hcGxpbmUiLCJtYXAiLHtsaW5lV2lkdGg6MSxmaWxsQ29sb3I6Im5vbmUifSx7dHlwZToibWFwbGluZSIsY29sb3JQcm9wOiJzdHJva2UiLHBvaW50QXR0clRvT3B0aW9uczp7c3Ryb2tlOiJjb2xvciIsInN0cm9rZS13aWR0aCI6ImxpbmVXaWR0aCJ9LHBvaW50QXR0cmliczpmdW5jdGlvbihhLGMpe2E9ay5tYXAucHJvdG90eXBlLnBvaW50QXR0cmlicy5jYWxsKHRoaXMsYSxjKTthLmZpbGw9dGhpcy5vcHRpb25zLmZpbGxDb2xvcjtyZXR1cm4gYX0sZHJhd0xlZ2VuZFN5bWJvbDprLmxpbmUucHJvdG90eXBlLmRyYXdMZWdlbmRTeW1ib2x9KTsiIn0pO3ooYSwicGFydHMtbWFwL01hcFBvaW50U2VyaWVzLmpzIiwNClthWyJwYXJ0cy9HbG9iYWxzLmpzIl1dLGZ1bmN0aW9uKGEpe3ZhciByPWEubWVyZ2Usaz1hLlBvaW50LG49YS5TZXJpZXM7YT1hLnNlcmllc1R5cGU7YSgibWFwcG9pbnQiLCJzY2F0dGVyIix7ZGF0YUxhYmVsczp7Y3JvcDohMSxkZWZlcjohMSxlbmFibGVkOiEwLGZvcm1hdHRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBvaW50Lm5hbWV9LG92ZXJmbG93OiExLHN0eWxlOntjb2xvcjoiIzAwMDAwMCJ9fX0se3R5cGU6Im1hcHBvaW50Iixmb3JjZURMOiEwLGRyYXdEYXRhTGFiZWxzOmZ1bmN0aW9uKCl7bi5wcm90b3R5cGUuZHJhd0RhdGFMYWJlbHMuY2FsbCh0aGlzKTt0aGlzLmRhdGFMYWJlbHNHcm91cCYmdGhpcy5kYXRhTGFiZWxzR3JvdXAuY2xpcCh0aGlzLmNoYXJ0LmNsaXBSZWN0KX19LHthcHBseU9wdGlvbnM6ZnVuY3Rpb24oYyxhKXtjPSJ1bmRlZmluZWQiIT09dHlwZW9mIGMubGF0JiYidW5kZWZpbmVkIiE9PXR5cGVvZiBjLmxvbj9yKGMsdGhpcy5zZXJpZXMuY2hhcnQuZnJvbUxhdExvblRvUG9pbnQoYykpOg0KYztyZXR1cm4gay5wcm90b3R5cGUuYXBwbHlPcHRpb25zLmNhbGwodGhpcyxjLGEpfX0pOyIifSk7eihhLCJwYXJ0cy1tb3JlL0J1YmJsZUxlZ2VuZC5qcyIsW2FbInBhcnRzL0NoYXJ0LmpzIl0sYVsicGFydHMvQ29sb3IuanMiXSxhWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYVsicGFydHMvTGVnZW5kLmpzIl0sYVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGEscixrLG4sYyl7dmFyIHc9ci5wYXJzZTtyPWMuYWRkRXZlbnQ7dmFyIHo9Yy5hcnJheU1heCxBPWMuYXJyYXlNaW4sQj1jLmlzTnVtYmVyLHU9Yy5tZXJnZSxoPWMub2JqZWN0RWFjaCxmPWMucGljayx4PWMuc2V0T3B0aW9ucyxsPWMuc3RhYmxlU29ydCxxPWMud3JhcDsiIjt2YXIgcD1rLlNlcmllcyx5PWsubm9vcDt4KHtsZWdlbmQ6e2J1YmJsZUxlZ2VuZDp7Ym9yZGVyQ29sb3I6dm9pZCAwLGJvcmRlcldpZHRoOjIsY2xhc3NOYW1lOnZvaWQgMCxjb2xvcjp2b2lkIDAsY29ubmVjdG9yQ2xhc3NOYW1lOnZvaWQgMCwNCmNvbm5lY3RvckNvbG9yOnZvaWQgMCxjb25uZWN0b3JEaXN0YW5jZTo2MCxjb25uZWN0b3JXaWR0aDoxLGVuYWJsZWQ6ITEsbGFiZWxzOntjbGFzc05hbWU6dm9pZCAwLGFsbG93T3ZlcmxhcDohMSxmb3JtYXQ6IiIsZm9ybWF0dGVyOnZvaWQgMCxhbGlnbjoicmlnaHQiLHN0eWxlOntmb250U2l6ZToxMCxjb2xvcjp2b2lkIDB9LHg6MCx5OjB9LG1heFNpemU6NjAsbWluU2l6ZToxMCxsZWdlbmRJbmRleDowLHJhbmdlczp7dmFsdWU6dm9pZCAwLGJvcmRlckNvbG9yOnZvaWQgMCxjb2xvcjp2b2lkIDAsY29ubmVjdG9yQ29sb3I6dm9pZCAwfSxzaXplQnk6ImFyZWEiLHNpemVCeUFic29sdXRlVmFsdWU6ITEsekluZGV4OjEselRocmVzaG9sZDowfX19KTt4PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShkLGIpe3RoaXMub3B0aW9ucz10aGlzLnN5bWJvbHM9dGhpcy52aXNpYmxlPXRoaXMucmFuZ2VzPXRoaXMubW92ZW1lbnRYPXRoaXMubWF4TGFiZWw9dGhpcy5sZWdlbmRTeW1ib2w9dGhpcy5sZWdlbmRJdGVtV2lkdGg9DQp0aGlzLmxlZ2VuZEl0ZW1IZWlnaHQ9dGhpcy5sZWdlbmRJdGVtPXRoaXMubGVnZW5kR3JvdXA9dGhpcy5sZWdlbmQ9dGhpcy5mb250TWV0cmljcz10aGlzLmNoYXJ0PXZvaWQgMDt0aGlzLnNldFN0YXRlPXk7dGhpcy5pbml0KGQsYil9YS5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihkLGIpe3RoaXMub3B0aW9ucz1kO3RoaXMudmlzaWJsZT0hMDt0aGlzLmNoYXJ0PWIuY2hhcnQ7dGhpcy5sZWdlbmQ9Yn07YS5wcm90b3R5cGUuYWRkVG9MZWdlbmQ9ZnVuY3Rpb24oZCl7ZC5zcGxpY2UodGhpcy5vcHRpb25zLmxlZ2VuZEluZGV4LDAsdGhpcyl9O2EucHJvdG90eXBlLmRyYXdMZWdlbmRTeW1ib2w9ZnVuY3Rpb24oZCl7dmFyIGI9dGhpcy5jaGFydCxlPXRoaXMub3B0aW9ucyxhPWYoZC5vcHRpb25zLml0ZW1EaXN0YW5jZSwyMCksYz1lLnJhbmdlczt2YXIgZz1lLmNvbm5lY3RvckRpc3RhbmNlO3RoaXMuZm9udE1ldHJpY3M9Yi5yZW5kZXJlci5mb250TWV0cmljcyhlLmxhYmVscy5zdHlsZS5mb250U2l6ZS50b1N0cmluZygpKw0KInB4Iik7YyYmYy5sZW5ndGgmJkIoY1swXS52YWx1ZSk/KGwoYyxmdW5jdGlvbihiLGUpe3JldHVybiBlLnZhbHVlLWIudmFsdWV9KSx0aGlzLnJhbmdlcz1jLHRoaXMuc2V0T3B0aW9ucygpLHRoaXMucmVuZGVyKCksYj10aGlzLmdldE1heExhYmVsU2l6ZSgpLGM9dGhpcy5yYW5nZXNbMF0ucmFkaXVzLGQ9MipjLGc9Zy1jK2Iud2lkdGgsZz0wPGc/ZzowLHRoaXMubWF4TGFiZWw9Yix0aGlzLm1vdmVtZW50WD0ibGVmdCI9PT1lLmxhYmVscy5hbGlnbj9nOjAsdGhpcy5sZWdlbmRJdGVtV2lkdGg9ZCtnK2EsdGhpcy5sZWdlbmRJdGVtSGVpZ2h0PWQrdGhpcy5mb250TWV0cmljcy5oLzIpOmQub3B0aW9ucy5idWJibGVMZWdlbmQuYXV0b1Jhbmdlcz0hMH07YS5wcm90b3R5cGUuc2V0T3B0aW9ucz1mdW5jdGlvbigpe3ZhciBkPXRoaXMucmFuZ2VzLGI9dGhpcy5vcHRpb25zLGU9dGhpcy5jaGFydC5zZXJpZXNbYi5zZXJpZXNJbmRleF0sYT10aGlzLmxlZ2VuZC5iYXNlbGluZSxjPXsiei1pbmRleCI6Yi56SW5kZXgsDQoic3Ryb2tlLXdpZHRoIjpiLmJvcmRlcldpZHRofSxnPXsiei1pbmRleCI6Yi56SW5kZXgsInN0cm9rZS13aWR0aCI6Yi5jb25uZWN0b3JXaWR0aH0sbD10aGlzLmdldExhYmVsU3R5bGVzKCksaD1lLm9wdGlvbnMubWFya2VyLmZpbGxPcGFjaXR5LHA9dGhpcy5jaGFydC5zdHlsZWRNb2RlO2QuZm9yRWFjaChmdW5jdGlvbihtLHEpe3B8fChjLnN0cm9rZT1mKG0uYm9yZGVyQ29sb3IsYi5ib3JkZXJDb2xvcixlLmNvbG9yKSxjLmZpbGw9ZihtLmNvbG9yLGIuY29sb3IsMSE9PWg/dyhlLmNvbG9yKS5zZXRPcGFjaXR5KGgpLmdldCgicmdiYSIpOmUuY29sb3IpLGcuc3Ryb2tlPWYobS5jb25uZWN0b3JDb2xvcixiLmNvbm5lY3RvckNvbG9yLGUuY29sb3IpKTtkW3FdLnJhZGl1cz10aGlzLmdldFJhbmdlUmFkaXVzKG0udmFsdWUpO2RbcV09dShkW3FdLHtjZW50ZXI6ZFswXS5yYWRpdXMtZFtxXS5yYWRpdXMrYX0pO3B8fHUoITAsZFtxXSx7YnViYmxlU3R5bGU6dSghMSxjKSxjb25uZWN0b3JTdHlsZTp1KCExLA0KZyksbGFiZWxTdHlsZTpsfSl9LHRoaXMpfTthLnByb3RvdHlwZS5nZXRMYWJlbFN0eWxlcz1mdW5jdGlvbigpe3ZhciBkPXRoaXMub3B0aW9ucyxiPXt9LGU9ImxlZnQiPT09ZC5sYWJlbHMuYWxpZ24sYT10aGlzLmxlZ2VuZC5vcHRpb25zLnJ0bDtoKGQubGFiZWxzLnN0eWxlLGZ1bmN0aW9uKGUsZCl7ImNvbG9yIiE9PWQmJiJmb250U2l6ZSIhPT1kJiYiei1pbmRleCIhPT1kJiYoYltkXT1lKX0pO3JldHVybiB1KCExLGIseyJmb250LXNpemUiOmQubGFiZWxzLnN0eWxlLmZvbnRTaXplLGZpbGw6ZihkLmxhYmVscy5zdHlsZS5jb2xvciwiIzAwMDAwMCIpLCJ6LWluZGV4IjpkLnpJbmRleCxhbGlnbjphfHxlPyJyaWdodCI6ImxlZnQifSl9O2EucHJvdG90eXBlLmdldFJhbmdlUmFkaXVzPWZ1bmN0aW9uKGQpe3ZhciBiPXRoaXMub3B0aW9ucztyZXR1cm4gdGhpcy5jaGFydC5zZXJpZXNbdGhpcy5vcHRpb25zLnNlcmllc0luZGV4XS5nZXRSYWRpdXMuY2FsbCh0aGlzLGIucmFuZ2VzW2IucmFuZ2VzLmxlbmd0aC0NCjFdLnZhbHVlLGIucmFuZ2VzWzBdLnZhbHVlLGIubWluU2l6ZSxiLm1heFNpemUsZCl9O2EucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBkPXRoaXMuY2hhcnQucmVuZGVyZXIsYj10aGlzLm9wdGlvbnMuelRocmVzaG9sZDt0aGlzLnN5bWJvbHN8fCh0aGlzLnN5bWJvbHM9e2Nvbm5lY3RvcnM6W10sYnViYmxlSXRlbXM6W10sbGFiZWxzOltdfSk7dGhpcy5sZWdlbmRTeW1ib2w9ZC5nKCJidWJibGUtbGVnZW5kIik7dGhpcy5sZWdlbmRJdGVtPWQuZygiYnViYmxlLWxlZ2VuZC1pdGVtIik7dGhpcy5sZWdlbmRTeW1ib2wudHJhbnNsYXRlWD0wO3RoaXMubGVnZW5kU3ltYm9sLnRyYW5zbGF0ZVk9MDt0aGlzLnJhbmdlcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UudmFsdWU+PWImJnRoaXMucmVuZGVyUmFuZ2UoZSl9LHRoaXMpO3RoaXMubGVnZW5kU3ltYm9sLmFkZCh0aGlzLmxlZ2VuZEl0ZW0pO3RoaXMubGVnZW5kSXRlbS5hZGQodGhpcy5sZWdlbmRHcm91cCk7dGhpcy5oaWRlT3ZlcmxhcHBpbmdMYWJlbHMoKX07DQphLnByb3RvdHlwZS5yZW5kZXJSYW5nZT1mdW5jdGlvbihkKXt2YXIgYj10aGlzLm9wdGlvbnMsZT1iLmxhYmVscyxhPXRoaXMuY2hhcnQucmVuZGVyZXIsYz10aGlzLnN5bWJvbHMsZz1jLmxhYmVscyxmPWQuY2VudGVyLGw9TWF0aC5hYnMoZC5yYWRpdXMpLGg9Yi5jb25uZWN0b3JEaXN0YW5jZXx8MCxwPWUuYWxpZ24scT1lLnN0eWxlLmZvbnRTaXplO2g9dGhpcy5sZWdlbmQub3B0aW9ucy5ydGx8fCJsZWZ0Ij09PXA/LWg6aDtlPWIuY29ubmVjdG9yV2lkdGg7dmFyIHU9dGhpcy5yYW5nZXNbMF0ucmFkaXVzfHwwLHk9Zi1sLWIuYm9yZGVyV2lkdGgvMitlLzI7cT1xLzItKHRoaXMuZm9udE1ldHJpY3MuaC1xKS8yO3ZhciBrPWEuc3R5bGVkTW9kZTsiY2VudGVyIj09PXAmJihoPTAsYi5jb25uZWN0b3JEaXN0YW5jZT0wLGQubGFiZWxTdHlsZS5hbGlnbj0iY2VudGVyIik7cD15K2IubGFiZWxzLnk7dmFyIG49dStoK2IubGFiZWxzLng7Yy5idWJibGVJdGVtcy5wdXNoKGEuY2lyY2xlKHUsDQpmKygoeSUxPzE6LjUpLShlJTI/MDouNSkpLGwpLmF0dHIoaz97fTpkLmJ1YmJsZVN0eWxlKS5hZGRDbGFzcygoaz8iaGlnaGNoYXJ0cy1jb2xvci0iK3RoaXMub3B0aW9ucy5zZXJpZXNJbmRleCsiICI6IiIpKyJoaWdoY2hhcnRzLWJ1YmJsZS1sZWdlbmQtc3ltYm9sICIrKGIuY2xhc3NOYW1lfHwiIikpLmFkZCh0aGlzLmxlZ2VuZFN5bWJvbCkpO2MuY29ubmVjdG9ycy5wdXNoKGEucGF0aChhLmNyaXNwTGluZShbWyJNIix1LHldLFsiTCIsdStoLHldXSxiLmNvbm5lY3RvcldpZHRoKSkuYXR0cihrP3t9OmQuY29ubmVjdG9yU3R5bGUpLmFkZENsYXNzKChrPyJoaWdoY2hhcnRzLWNvbG9yLSIrdGhpcy5vcHRpb25zLnNlcmllc0luZGV4KyIgIjoiIikrImhpZ2hjaGFydHMtYnViYmxlLWxlZ2VuZC1jb25uZWN0b3JzICIrKGIuY29ubmVjdG9yQ2xhc3NOYW1lfHwiIikpLmFkZCh0aGlzLmxlZ2VuZFN5bWJvbCkpO2Q9YS50ZXh0KHRoaXMuZm9ybWF0TGFiZWwoZCksbixwK3EpLmF0dHIoaz8NCnt9OmQubGFiZWxTdHlsZSkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtYnViYmxlLWxlZ2VuZC1sYWJlbHMgIisoYi5sYWJlbHMuY2xhc3NOYW1lfHwiIikpLmFkZCh0aGlzLmxlZ2VuZFN5bWJvbCk7Zy5wdXNoKGQpO2QucGxhY2VkPSEwO2QuYWxpZ25BdHRyPXt4Om4seTpwK3F9fTthLnByb3RvdHlwZS5nZXRNYXhMYWJlbFNpemU9ZnVuY3Rpb24oKXt2YXIgZCxiO3RoaXMuc3ltYm9scy5sYWJlbHMuZm9yRWFjaChmdW5jdGlvbihlKXtiPWUuZ2V0QkJveCghMCk7ZD1kP2Iud2lkdGg+ZC53aWR0aD9iOmQ6Yn0pO3JldHVybiBkfHx7fX07YS5wcm90b3R5cGUuZm9ybWF0TGFiZWw9ZnVuY3Rpb24oZCl7dmFyIGI9dGhpcy5vcHRpb25zLGU9Yi5sYWJlbHMuZm9ybWF0dGVyO2I9Yi5sYWJlbHMuZm9ybWF0O3ZhciBhPXRoaXMuY2hhcnQubnVtYmVyRm9ybWF0dGVyO3JldHVybiBiP2MuZm9ybWF0KGIsZCk6ZT9lLmNhbGwoZCk6YShkLnZhbHVlLDEpfTthLnByb3RvdHlwZS5oaWRlT3ZlcmxhcHBpbmdMYWJlbHM9DQpmdW5jdGlvbigpe3ZhciBkPXRoaXMuY2hhcnQsYj10aGlzLnN5bWJvbHM7IXRoaXMub3B0aW9ucy5sYWJlbHMuYWxsb3dPdmVybGFwJiZiJiYoZC5oaWRlT3ZlcmxhcHBpbmdMYWJlbHMoYi5sYWJlbHMpLGIubGFiZWxzLmZvckVhY2goZnVuY3Rpb24oZSxkKXtlLm5ld09wYWNpdHk/ZS5uZXdPcGFjaXR5IT09ZS5vbGRPcGFjaXR5JiZiLmNvbm5lY3RvcnNbZF0uc2hvdygpOmIuY29ubmVjdG9yc1tkXS5oaWRlKCl9KSl9O2EucHJvdG90eXBlLmdldFJhbmdlcz1mdW5jdGlvbigpe3ZhciBkPXRoaXMubGVnZW5kLmJ1YmJsZUxlZ2VuZCxiPWQub3B0aW9ucy5yYW5nZXMsZSxhPU51bWJlci5NQVhfVkFMVUUsYz0tTnVtYmVyLk1BWF9WQUxVRTtkLmNoYXJ0LnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuaXNCdWJibGUmJiFiLmlnbm9yZVNlcmllcyYmKGU9Yi56RGF0YS5maWx0ZXIoQiksZS5sZW5ndGgmJihhPWYoYi5vcHRpb25zLnpNaW4sTWF0aC5taW4oYSxNYXRoLm1heChBKGUpLA0KITE9PT1iLm9wdGlvbnMuZGlzcGxheU5lZ2F0aXZlP2Iub3B0aW9ucy56VGhyZXNob2xkOi1OdW1iZXIuTUFYX1ZBTFVFKSkpLGM9ZihiLm9wdGlvbnMuek1heCxNYXRoLm1heChjLHooZSkpKSkpfSk7dmFyIGc9YT09PWM/W3t2YWx1ZTpjfV06W3t2YWx1ZTphfSx7dmFsdWU6KGErYykvMn0se3ZhbHVlOmMsYXV0b1JhbmdlczohMH1dO2IubGVuZ3RoJiZiWzBdLnJhZGl1cyYmZy5yZXZlcnNlKCk7Zy5mb3JFYWNoKGZ1bmN0aW9uKGUsZCl7YiYmYltkXSYmKGdbZF09dSghMSxiW2RdLGUpKX0pO3JldHVybiBnfTthLnByb3RvdHlwZS5wcmVkaWN0QnViYmxlU2l6ZXM9ZnVuY3Rpb24oKXt2YXIgZD10aGlzLmNoYXJ0LGI9dGhpcy5mb250TWV0cmljcyxlPWQubGVnZW5kLm9wdGlvbnMsYT0iaG9yaXpvbnRhbCI9PT1lLmxheW91dCxjPWE/ZC5sZWdlbmQubGFzdExpbmVIZWlnaHQ6MCxnPWQucGxvdFNpemVYLGY9ZC5wbG90U2l6ZVksbD1kLnNlcmllc1t0aGlzLm9wdGlvbnMuc2VyaWVzSW5kZXhdOw0KZD1NYXRoLmNlaWwobC5taW5QeFNpemUpO3ZhciBoPU1hdGguY2VpbChsLm1heFB4U2l6ZSk7bD1sLm9wdGlvbnMubWF4U2l6ZTt2YXIgcD1NYXRoLm1pbihmLGcpO2lmKGUuZmxvYXRpbmd8fCEvJSQvLnRlc3QobCkpYj1oO2Vsc2UgaWYobD1wYXJzZUZsb2F0KGwpLGI9KHArYy1iLmgvMikqbC8xMDAvKGwvMTAwKzEpLGEmJmYtYj49Z3x8IWEmJmctYj49ZiliPWg7cmV0dXJuW2QsTWF0aC5jZWlsKGIpXX07YS5wcm90b3R5cGUudXBkYXRlUmFuZ2VzPWZ1bmN0aW9uKGQsYil7dmFyIGU9dGhpcy5sZWdlbmQub3B0aW9ucy5idWJibGVMZWdlbmQ7ZS5taW5TaXplPWQ7ZS5tYXhTaXplPWI7ZS5yYW5nZXM9dGhpcy5nZXRSYW5nZXMoKX07YS5wcm90b3R5cGUuY29ycmVjdFNpemVzPWZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5sZWdlbmQsYj10aGlzLmNoYXJ0LnNlcmllc1t0aGlzLm9wdGlvbnMuc2VyaWVzSW5kZXhdOzE8TWF0aC5hYnMoTWF0aC5jZWlsKGIubWF4UHhTaXplKS10aGlzLm9wdGlvbnMubWF4U2l6ZSkmJg0KKHRoaXMudXBkYXRlUmFuZ2VzKHRoaXMub3B0aW9ucy5taW5TaXplLGIubWF4UHhTaXplKSxkLnJlbmRlcigpKX07cmV0dXJuIGF9KCk7cihuLCJhZnRlckdldEFsbEl0ZW1zIixmdW5jdGlvbihhKXt2YXIgZD10aGlzLmJ1YmJsZUxlZ2VuZCxiPXRoaXMub3B0aW9ucyxlPWIuYnViYmxlTGVnZW5kLGM9dGhpcy5jaGFydC5nZXRWaXNpYmxlQnViYmxlU2VyaWVzSW5kZXgoKTtkJiZkLnJhbmdlcyYmZC5yYW5nZXMubGVuZ3RoJiYoZS5yYW5nZXMubGVuZ3RoJiYoZS5hdXRvUmFuZ2VzPSEhZS5yYW5nZXNbMF0uYXV0b1JhbmdlcyksdGhpcy5kZXN0cm95SXRlbShkKSk7MDw9YyYmYi5lbmFibGVkJiZlLmVuYWJsZWQmJihlLnNlcmllc0luZGV4PWMsdGhpcy5idWJibGVMZWdlbmQ9bmV3IGsuQnViYmxlTGVnZW5kKGUsdGhpcyksdGhpcy5idWJibGVMZWdlbmQuYWRkVG9MZWdlbmQoYS5hbGxJdGVtcykpfSk7YS5wcm90b3R5cGUuZ2V0VmlzaWJsZUJ1YmJsZVNlcmllc0luZGV4PWZ1bmN0aW9uKCl7Zm9yKHZhciBhPQ0KdGhpcy5zZXJpZXMsZD0wO2Q8YS5sZW5ndGg7KXtpZihhW2RdJiZhW2RdLmlzQnViYmxlJiZhW2RdLnZpc2libGUmJmFbZF0uekRhdGEubGVuZ3RoKXJldHVybiBkO2QrK31yZXR1cm4tMX07bi5wcm90b3R5cGUuZ2V0TGluZXNIZWlnaHRzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5hbGxJdGVtcyxkPVtdLGI9YS5sZW5ndGgsZSxjPTA7Zm9yKGU9MDtlPGI7ZSsrKWlmKGFbZV0ubGVnZW5kSXRlbUhlaWdodCYmKGFbZV0uaXRlbUhlaWdodD1hW2VdLmxlZ2VuZEl0ZW1IZWlnaHQpLGFbZV09PT1hW2ItMV18fGFbZSsxXSYmYVtlXS5fbGVnZW5kSXRlbVBvc1sxXSE9PWFbZSsxXS5fbGVnZW5kSXRlbVBvc1sxXSl7ZC5wdXNoKHtoZWlnaHQ6MH0pO3ZhciBmPWRbZC5sZW5ndGgtMV07Zm9yKGM7Yzw9ZTtjKyspYVtjXS5pdGVtSGVpZ2h0PmYuaGVpZ2h0JiYoZi5oZWlnaHQ9YVtjXS5pdGVtSGVpZ2h0KTtmLnN0ZXA9ZX1yZXR1cm4gZH07bi5wcm90b3R5cGUucmV0cmFuc2xhdGVJdGVtcz1mdW5jdGlvbihhKXt2YXIgZCwNCmIsZSxjPXRoaXMub3B0aW9ucy5ydGwsZj0wO3RoaXMuYWxsSXRlbXMuZm9yRWFjaChmdW5jdGlvbihnLGwpe2Q9Zy5sZWdlbmRHcm91cC50cmFuc2xhdGVYO2I9Zy5fbGVnZW5kSXRlbVBvc1sxXTtpZigoZT1nLm1vdmVtZW50WCl8fGMmJmcucmFuZ2VzKWU9Yz9kLWcub3B0aW9ucy5tYXhTaXplLzI6ZCtlLGcubGVnZW5kR3JvdXAuYXR0cih7dHJhbnNsYXRlWDplfSk7bD5hW2ZdLnN0ZXAmJmYrKztnLmxlZ2VuZEdyb3VwLmF0dHIoe3RyYW5zbGF0ZVk6TWF0aC5yb3VuZChiK2FbZl0uaGVpZ2h0LzIpfSk7Zy5fbGVnZW5kSXRlbVBvc1sxXT1iK2FbZl0uaGVpZ2h0LzJ9KX07cihwLCJsZWdlbmRJdGVtQ2xpY2siLGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jaGFydCxkPXRoaXMudmlzaWJsZSxiPXRoaXMuY2hhcnQubGVnZW5kO2ImJmIuYnViYmxlTGVnZW5kJiYodGhpcy52aXNpYmxlPSFkLHRoaXMuaWdub3JlU2VyaWVzPWQsYT0wPD1hLmdldFZpc2libGVCdWJibGVTZXJpZXNJbmRleCgpLA0KYi5idWJibGVMZWdlbmQudmlzaWJsZSE9PWEmJihiLnVwZGF0ZSh7YnViYmxlTGVnZW5kOntlbmFibGVkOmF9fSksYi5idWJibGVMZWdlbmQudmlzaWJsZT1hKSx0aGlzLnZpc2libGU9ZCl9KTtxKGEucHJvdG90eXBlLCJkcmF3Q2hhcnRCb3giLGZ1bmN0aW9uKGEsZCxiKXt2YXIgZT10aGlzLmxlZ2VuZCxjPTA8PXRoaXMuZ2V0VmlzaWJsZUJ1YmJsZVNlcmllc0luZGV4KCk7aWYoZSYmZS5vcHRpb25zLmVuYWJsZWQmJmUuYnViYmxlTGVnZW5kJiZlLm9wdGlvbnMuYnViYmxlTGVnZW5kLmF1dG9SYW5nZXMmJmMpe3ZhciBmPWUuYnViYmxlTGVnZW5kLm9wdGlvbnM7Yz1lLmJ1YmJsZUxlZ2VuZC5wcmVkaWN0QnViYmxlU2l6ZXMoKTtlLmJ1YmJsZUxlZ2VuZC51cGRhdGVSYW5nZXMoY1swXSxjWzFdKTtmLnBsYWNlZHx8KGUuZ3JvdXAucGxhY2VkPSExLGUuYWxsSXRlbXMuZm9yRWFjaChmdW5jdGlvbihiKXtiLmxlZ2VuZEdyb3VwLnRyYW5zbGF0ZVk9bnVsbH0pKTtlLnJlbmRlcigpOw0KdGhpcy5nZXRNYXJnaW5zKCk7dGhpcy5heGVzLmZvckVhY2goZnVuY3Rpb24oYil7Yi52aXNpYmxlJiZiLnJlbmRlcigpO2YucGxhY2VkfHwoYi5zZXRTY2FsZSgpLGIudXBkYXRlTmFtZXMoKSxoKGIudGlja3MsZnVuY3Rpb24oYil7Yi5pc05ldz0hMDtiLmlzTmV3TGFiZWw9ITB9KSl9KTtmLnBsYWNlZD0hMDt0aGlzLmdldE1hcmdpbnMoKTthLmNhbGwodGhpcyxkLGIpO2UuYnViYmxlTGVnZW5kLmNvcnJlY3RTaXplcygpO2UucmV0cmFuc2xhdGVJdGVtcyhlLmdldExpbmVzSGVpZ2h0cygpKX1lbHNlIGEuY2FsbCh0aGlzLGQsYiksZSYmZS5vcHRpb25zLmVuYWJsZWQmJmUuYnViYmxlTGVnZW5kJiYoZS5yZW5kZXIoKSxlLnJldHJhbnNsYXRlSXRlbXMoZS5nZXRMaW5lc0hlaWdodHMoKSkpfSk7ay5CdWJibGVMZWdlbmQ9eDtyZXR1cm4gay5CdWJibGVMZWdlbmR9KTt6KGEsInBhcnRzLW1vcmUvQnViYmxlU2VyaWVzLmpzIixbYVsicGFydHMvR2xvYmFscy5qcyJdLGFbInBhcnRzL0NvbG9yLmpzIl0sDQphWyJwYXJ0cy9Qb2ludC5qcyJdLGFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihhLHIsayxuKXt2YXIgYz1yLnBhcnNlLHc9bi5hcnJheU1heCx6PW4uYXJyYXlNaW4sQT1uLmNsYW1wLEI9bi5leHRlbmQsdT1uLmlzTnVtYmVyLGg9bi5waWNrLGY9bi5wSW50O3I9bi5zZXJpZXNUeXBlO249YS5BeGlzO3ZhciB4PWEubm9vcCxsPWEuU2VyaWVzLHE9YS5zZXJpZXNUeXBlcztyKCJidWJibGUiLCJzY2F0dGVyIix7ZGF0YUxhYmVsczp7Zm9ybWF0dGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9pbnQuen0saW5zaWRlOiEwLHZlcnRpY2FsQWxpZ246Im1pZGRsZSJ9LGFuaW1hdGlvbkxpbWl0OjI1MCxtYXJrZXI6e2xpbmVDb2xvcjpudWxsLGxpbmVXaWR0aDoxLGZpbGxPcGFjaXR5Oi41LHJhZGl1czpudWxsLHN0YXRlczp7aG92ZXI6e3JhZGl1c1BsdXM6MH19LHN5bWJvbDoiY2lyY2xlIn0sbWluU2l6ZTo4LG1heFNpemU6IjIwJSIsc29mdFRocmVzaG9sZDohMSxzdGF0ZXM6e2hvdmVyOntoYWxvOntzaXplOjV9fX0sDQp0b29sdGlwOntwb2ludEZvcm1hdDoiKHtwb2ludC54fSwge3BvaW50Lnl9KSwgU2l6ZToge3BvaW50Lnp9In0sdHVyYm9UaHJlc2hvbGQ6MCx6VGhyZXNob2xkOjAsem9uZUF4aXM6InoifSx7cG9pbnRBcnJheU1hcDpbInkiLCJ6Il0scGFyYWxsZWxBcnJheXM6WyJ4IiwieSIsInoiXSx0cmFja2VyR3JvdXBzOlsiZ3JvdXAiLCJkYXRhTGFiZWxzR3JvdXAiXSxzcGVjaWFsR3JvdXA6Imdyb3VwIixidWJibGVQYWRkaW5nOiEwLHpvbmVBeGlzOiJ6IixkaXJlY3RUb3VjaDohMCxpc0J1YmJsZTohMCxwb2ludEF0dHJpYnM6ZnVuY3Rpb24oYSxmKXt2YXIgZz10aGlzLm9wdGlvbnMubWFya2VyLmZpbGxPcGFjaXR5O2E9bC5wcm90b3R5cGUucG9pbnRBdHRyaWJzLmNhbGwodGhpcyxhLGYpOzEhPT1nJiYoYS5maWxsPWMoYS5maWxsKS5zZXRPcGFjaXR5KGcpLmdldCgicmdiYSIpKTtyZXR1cm4gYX0sZ2V0UmFkaWk6ZnVuY3Rpb24oYSxjLGYpe3ZhciBkPXRoaXMuekRhdGEsYj10aGlzLnlEYXRhLA0KZT1mLm1pblB4U2l6ZSxnPWYubWF4UHhTaXplLGw9W107dmFyIGg9MDtmb3IoZj1kLmxlbmd0aDtoPGY7aCsrKXt2YXIgcD1kW2hdO2wucHVzaCh0aGlzLmdldFJhZGl1cyhhLGMsZSxnLHAsYltoXSkpfXRoaXMucmFkaWk9bH0sZ2V0UmFkaXVzOmZ1bmN0aW9uKGEsYyxmLGQsYixlKXt2YXIgZz10aGlzLm9wdGlvbnMsbD0id2lkdGgiIT09Zy5zaXplQnksaD1nLnpUaHJlc2hvbGQscD1jLWEscT0uNTtpZihudWxsPT09ZXx8bnVsbD09PWIpcmV0dXJuIG51bGw7aWYodShiKSl7Zy5zaXplQnlBYnNvbHV0ZVZhbHVlJiYoYj1NYXRoLmFicyhiLWgpLHA9TWF0aC5tYXgoYy1oLE1hdGguYWJzKGEtaCkpLGE9MCk7aWYoYjxhKXJldHVybiBmLzItMTswPHAmJihxPShiLWEpL3ApfWwmJjA8PXEmJihxPU1hdGguc3FydChxKSk7cmV0dXJuIE1hdGguY2VpbChmK3EqKGQtZikpLzJ9LGFuaW1hdGU6ZnVuY3Rpb24oYSl7IWEmJnRoaXMucG9pbnRzLmxlbmd0aDx0aGlzLm9wdGlvbnMuYW5pbWF0aW9uTGltaXQmJg0KdGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYz1hLmdyYXBoaWM7YyYmYy53aWR0aCYmKHRoaXMuaGFzUmVuZGVyZWR8fGMuYXR0cih7eDphLnBsb3RYLHk6YS5wbG90WSx3aWR0aDoxLGhlaWdodDoxfSksYy5hbmltYXRlKHRoaXMubWFya2VyQXR0cmlicyhhKSx0aGlzLm9wdGlvbnMuYW5pbWF0aW9uKSl9LHRoaXMpfSxoYXNEYXRhOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLnByb2Nlc3NlZFhEYXRhLmxlbmd0aH0sdHJhbnNsYXRlOmZ1bmN0aW9uKCl7dmFyIGEsYz10aGlzLmRhdGEsZj10aGlzLnJhZGlpO3Euc2NhdHRlci5wcm90b3R5cGUudHJhbnNsYXRlLmNhbGwodGhpcyk7Zm9yKGE9Yy5sZW5ndGg7YS0tOyl7dmFyIGQ9Y1thXTt2YXIgYj1mP2ZbYV06MDt1KGIpJiZiPj10aGlzLm1pblB4U2l6ZS8yPyhkLm1hcmtlcj1CKGQubWFya2VyLHtyYWRpdXM6Yix3aWR0aDoyKmIsaGVpZ2h0OjIqYn0pLGQuZGxCb3g9e3g6ZC5wbG90WC1iLHk6ZC5wbG90WS1iLHdpZHRoOjIqDQpiLGhlaWdodDoyKmJ9KTpkLnNoYXBlQXJncz1kLnBsb3RZPWQuZGxCb3g9dm9pZCAwfX0sYWxpZ25EYXRhTGFiZWw6cS5jb2x1bW4ucHJvdG90eXBlLmFsaWduRGF0YUxhYmVsLGJ1aWxkS0RUcmVlOngsYXBwbHlab25lczp4fSx7aGFsb1BhdGg6ZnVuY3Rpb24oYSl7cmV0dXJuIGsucHJvdG90eXBlLmhhbG9QYXRoLmNhbGwodGhpcywwPT09YT8wOih0aGlzLm1hcmtlcj90aGlzLm1hcmtlci5yYWRpdXN8fDA6MCkrYSl9LHR0QmVsb3c6ITF9KTtuLnByb3RvdHlwZS5iZWZvcmVQYWRkaW5nPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxjPXRoaXMubGVuLGc9dGhpcy5jaGFydCxkPTAsYj1jLGU9dGhpcy5pc1hBeGlzLGw9ZT8ieERhdGEiOiJ5RGF0YSIscT10aGlzLm1pbixrPXt9LG49TWF0aC5taW4oZy5wbG90V2lkdGgsZy5wbG90SGVpZ2h0KSx4PU51bWJlci5NQVhfVkFMVUUscj0tTnVtYmVyLk1BWF9WQUxVRSxDPXRoaXMubWF4LXEsQj1jL0MsRD1bXTt0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZhciBkPQ0KYi5vcHRpb25zOyFiLmJ1YmJsZVBhZGRpbmd8fCFiLnZpc2libGUmJmcub3B0aW9ucy5jaGFydC5pZ25vcmVIaWRkZW5TZXJpZXN8fChhLmFsbG93Wm9vbU91dHNpZGU9ITAsRC5wdXNoKGIpLGUmJihbIm1pblNpemUiLCJtYXhTaXplIl0uZm9yRWFjaChmdW5jdGlvbihiKXt2YXIgYT1kW2JdLGU9LyUkLy50ZXN0KGEpO2E9ZihhKTtrW2JdPWU/biphLzEwMDphfSksYi5taW5QeFNpemU9ay5taW5TaXplLGIubWF4UHhTaXplPU1hdGgubWF4KGsubWF4U2l6ZSxrLm1pblNpemUpLGI9Yi56RGF0YS5maWx0ZXIodSksYi5sZW5ndGgmJih4PWgoZC56TWluLEEoeihiKSwhMT09PWQuZGlzcGxheU5lZ2F0aXZlP2QuelRocmVzaG9sZDotTnVtYmVyLk1BWF9WQUxVRSx4KSkscj1oKGQuek1heCxNYXRoLm1heChyLHcoYikpKSkpKX0pO0QuZm9yRWFjaChmdW5jdGlvbihjKXt2YXIgZj1jW2xdLGc9Zi5sZW5ndGg7ZSYmYy5nZXRSYWRpaSh4LHIsYyk7aWYoMDxDKWZvcig7Zy0tOylpZih1KGZbZ10pJiYNCmEuZGF0YU1pbjw9ZltnXSYmZltnXTw9YS5tYXgpe3ZhciBoPWMucmFkaWk/Yy5yYWRpaVtnXTowO2Q9TWF0aC5taW4oKGZbZ10tcSkqQi1oLGQpO2I9TWF0aC5tYXgoKGZbZ10tcSkqQitoLGIpfX0pO0QubGVuZ3RoJiYwPEMmJiF0aGlzLmxvZ2FyaXRobWljJiYoYi09YyxCKj0oYytNYXRoLm1heCgwLGQpLU1hdGgubWluKGIsYykpL2MsW1sibWluIiwidXNlck1pbiIsZF0sWyJtYXgiLCJ1c2VyTWF4IixiXV0uZm9yRWFjaChmdW5jdGlvbihiKXsidW5kZWZpbmVkIj09PXR5cGVvZiBoKGEub3B0aW9uc1tiWzBdXSxhW2JbMV1dKSYmKGFbYlswXV0rPWJbMl0vQil9KSl9OyIifSk7eihhLCJwYXJ0cy1tYXAvTWFwQnViYmxlU2VyaWVzLmpzIixbYVsicGFydHMvR2xvYmFscy5qcyJdLGFbInBhcnRzL1BvaW50LmpzIl0sYVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGEscixrKXt2YXIgbj1rLm1lcmdlO2s9ay5zZXJpZXNUeXBlO3ZhciBjPWEuc2VyaWVzVHlwZXM7Yy5idWJibGUmJg0KaygibWFwYnViYmxlIiwiYnViYmxlIix7YW5pbWF0aW9uTGltaXQ6NTAwLHRvb2x0aXA6e3BvaW50Rm9ybWF0OiJ7cG9pbnQubmFtZX06IHtwb2ludC56fSJ9fSx7eHlGcm9tU2hhcGU6ITAsdHlwZToibWFwYnViYmxlIixwb2ludEFycmF5TWFwOlsieiJdLGdldE1hcERhdGE6Yy5tYXAucHJvdG90eXBlLmdldE1hcERhdGEsZ2V0Qm94OmMubWFwLnByb3RvdHlwZS5nZXRCb3gsc2V0RGF0YTpjLm1hcC5wcm90b3R5cGUuc2V0RGF0YSxzZXRPcHRpb25zOmMubWFwLnByb3RvdHlwZS5zZXRPcHRpb25zfSx7YXBwbHlPcHRpb25zOmZ1bmN0aW9uKGEsayl7cmV0dXJuIGEmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGEubGF0JiYidW5kZWZpbmVkIiE9PXR5cGVvZiBhLmxvbj9yLnByb3RvdHlwZS5hcHBseU9wdGlvbnMuY2FsbCh0aGlzLG4oYSx0aGlzLnNlcmllcy5jaGFydC5mcm9tTGF0TG9uVG9Qb2ludChhKSksayk6Yy5tYXAucHJvdG90eXBlLnBvaW50Q2xhc3MucHJvdG90eXBlLmFwcGx5T3B0aW9ucy5jYWxsKHRoaXMsDQphLGspfSxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIm51bWJlciI9PT10eXBlb2YgdGhpcy56fSx0dEJlbG93OiExfSk7IiJ9KTt6KGEsInBhcnRzLW1hcC9IZWF0bWFwU2VyaWVzLmpzIixbYVsicGFydHMvR2xvYmFscy5qcyJdLGFbIm1peGlucy9sZWdlbmQtc3ltYm9sLmpzIl0sYVsicGFydHMvU1ZHUmVuZGVyZXIuanMiXSxhWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxyLGssbil7dmFyIGM9bi5jbGFtcCx3PW4uZXh0ZW5kLHo9bi5maXJlRXZlbnQsQT1uLmlzTnVtYmVyLEI9bi5tZXJnZSx1PW4ucGljaztuPW4uc2VyaWVzVHlwZTsiIjt2YXIgaD1hLmNvbG9yTWFwUG9pbnRNaXhpbixmPWEuU2VyaWVzLHg9ay5wcm90b3R5cGUuc3ltYm9scztuKCJoZWF0bWFwIiwic2NhdHRlciIse2FuaW1hdGlvbjohMSxib3JkZXJXaWR0aDowLG51bGxDb2xvcjoiI2Y3ZjdmNyIsZGF0YUxhYmVsczp7Zm9ybWF0dGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9pbnQudmFsdWV9LA0KaW5zaWRlOiEwLHZlcnRpY2FsQWxpZ246Im1pZGRsZSIsY3JvcDohMSxvdmVyZmxvdzohMSxwYWRkaW5nOjB9LG1hcmtlcjp7c3ltYm9sOiJyZWN0IixyYWRpdXM6MCxsaW5lQ29sb3I6dm9pZCAwLHN0YXRlczp7aG92ZXI6e2xpbmVXaWR0aFBsdXM6MH0sc2VsZWN0Ont9fX0sY2xpcDohMCxwb2ludFJhbmdlOm51bGwsdG9vbHRpcDp7cG9pbnRGb3JtYXQ6Intwb2ludC54fSwge3BvaW50Lnl9OiB7cG9pbnQudmFsdWV9PGJyLz4ifSxzdGF0ZXM6e2hvdmVyOntoYWxvOiExLGJyaWdodG5lc3M6LjJ9fX0sQihhLmNvbG9yTWFwU2VyaWVzTWl4aW4se3BvaW50QXJyYXlNYXA6WyJ5IiwidmFsdWUiXSxoYXNQb2ludFNwZWNpZmljT3B0aW9uczohMCxnZXRFeHRyZW1lc0Zyb21BbGw6ITAsZGlyZWN0VG91Y2g6ITAsaW5pdDpmdW5jdGlvbigpe2YucHJvdG90eXBlLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBhPXRoaXMub3B0aW9uczthLnBvaW50UmFuZ2U9dShhLnBvaW50UmFuZ2UsDQphLmNvbHNpemV8fDEpO3RoaXMueUF4aXMuYXhpc1BvaW50UmFuZ2U9YS5yb3dzaXplfHwxO3coeCx7ZWxsaXBzZTp4LmNpcmNsZSxyZWN0Onguc3F1YXJlfSl9LGdldFN5bWJvbDpmLnByb3RvdHlwZS5nZXRTeW1ib2wsc2V0Q2xpcDpmdW5jdGlvbihhKXt2YXIgYz10aGlzLmNoYXJ0O2YucHJvdG90eXBlLnNldENsaXAuYXBwbHkodGhpcyxhcmd1bWVudHMpOyghMSE9PXRoaXMub3B0aW9ucy5jbGlwfHxhKSYmdGhpcy5tYXJrZXJHcm91cC5jbGlwKChhfHx0aGlzLmNsaXBCb3gpJiZ0aGlzLnNoYXJlZENsaXBLZXk/Y1t0aGlzLnNoYXJlZENsaXBLZXldOmMuY2xpcFJlY3QpfSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnMsYz1hLm1hcmtlciYmYS5tYXJrZXIuc3ltYm9sfHwiIixmPXhbY10/YzoicmVjdCI7YT10aGlzLm9wdGlvbnM7dmFyIGg9LTEhPT1bImNpcmNsZSIsInNxdWFyZSJdLmluZGV4T2YoZik7dGhpcy5nZW5lcmF0ZVBvaW50cygpO3RoaXMucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGQ9DQphLmdldENlbGxBdHRyaWJ1dGVzKCksYj17eDpNYXRoLm1pbihkLngxLGQueDIpLHk6TWF0aC5taW4oZC55MSxkLnkyKSx3aWR0aDpNYXRoLm1heChNYXRoLmFicyhkLngyLWQueDEpLDApLGhlaWdodDpNYXRoLm1heChNYXRoLmFicyhkLnkyLWQueTEpLDApfTt2YXIgZT1hLmhhc0ltYWdlPTA9PT0oYS5tYXJrZXImJmEubWFya2VyLnN5bWJvbHx8Y3x8IiIpLmluZGV4T2YoInVybCIpO2lmKGgpe3ZhciBnPU1hdGguYWJzKGIud2lkdGgtYi5oZWlnaHQpO2IueD1NYXRoLm1pbihkLngxLGQueDIpKyhiLndpZHRoPGIuaGVpZ2h0PzA6Zy8yKTtiLnk9TWF0aC5taW4oZC55MSxkLnkyKSsoYi53aWR0aDxiLmhlaWdodD9nLzI6MCk7Yi53aWR0aD1iLmhlaWdodD1NYXRoLm1pbihiLndpZHRoLGIuaGVpZ2h0KX1nPXtwbG90WDooZC54MStkLngyKS8yLHBsb3RZOihkLnkxK2QueTIpLzIsY2xpZW50WDooZC54MStkLngyKS8yLHNoYXBlVHlwZToicGF0aCIsc2hhcGVBcmdzOkIoITAsYix7ZDp4W2ZdKGIueCwNCmIueSxiLndpZHRoLGIuaGVpZ2h0KX0pfTtlJiYoYS5tYXJrZXI9e3dpZHRoOmIud2lkdGgsaGVpZ2h0OmIuaGVpZ2h0fSk7dyhhLGcpfSk7eih0aGlzLCJhZnRlclRyYW5zbGF0ZSIpfSxwb2ludEF0dHJpYnM6ZnVuY3Rpb24oYyxoKXt2YXIgbD1mLnByb3RvdHlwZS5wb2ludEF0dHJpYnMuY2FsbCh0aGlzLGMsaCkscT10aGlzLm9wdGlvbnN8fHt9LGc9dGhpcy5jaGFydC5vcHRpb25zLnBsb3RPcHRpb25zfHx7fSxkPWcuc2VyaWVzfHx7fSxiPWcuaGVhdG1hcHx8e307Zz1xLmJvcmRlckNvbG9yfHxiLmJvcmRlckNvbG9yfHxkLmJvcmRlckNvbG9yO2Q9cS5ib3JkZXJXaWR0aHx8Yi5ib3JkZXJXaWR0aHx8ZC5ib3JkZXJXaWR0aHx8bFsic3Ryb2tlLXdpZHRoIl07bC5zdHJva2U9YyYmYy5tYXJrZXImJmMubWFya2VyLmxpbmVDb2xvcnx8cS5tYXJrZXImJnEubWFya2VyLmxpbmVDb2xvcnx8Z3x8dGhpcy5jb2xvcjtsWyJzdHJva2Utd2lkdGgiXT1kO2gmJihjPUIocS5zdGF0ZXNbaF0sDQpxLm1hcmtlciYmcS5tYXJrZXIuc3RhdGVzW2hdLGMub3B0aW9ucy5zdGF0ZXMmJmMub3B0aW9ucy5zdGF0ZXNbaF18fHt9KSxoPWMuYnJpZ2h0bmVzcyxsLmZpbGw9Yy5jb2xvcnx8YS5jb2xvcihsLmZpbGwpLmJyaWdodGVuKGh8fDApLmdldCgpLGwuc3Ryb2tlPWMubGluZUNvbG9yKTtyZXR1cm4gbH0sbWFya2VyQXR0cmliczpmdW5jdGlvbihhLGMpe3ZhciBmPWEubWFya2VyfHx7fSxoPXRoaXMub3B0aW9ucy5tYXJrZXJ8fHt9LGc9YS5zaGFwZUFyZ3N8fHt9LGQ9e307aWYoYS5oYXNJbWFnZSlyZXR1cm57eDphLnBsb3RYLHk6YS5wbG90WX07aWYoYyl7dmFyIGI9aC5zdGF0ZXNbY118fHt9O3ZhciBlPWYuc3RhdGVzJiZmLnN0YXRlc1tjXXx8e307W1sid2lkdGgiLCJ4Il0sWyJoZWlnaHQiLCJ5Il1dLmZvckVhY2goZnVuY3Rpb24oYSl7ZFthWzBdXT0oZVthWzBdXXx8YlthWzBdXXx8Z1thWzBdXSkrKGVbYVswXSsiUGx1cyJdfHxiW2FbMF0rIlBsdXMiXXx8MCk7ZFthWzFdXT0NCmdbYVsxXV0rKGdbYVswXV0tZFthWzBdXSkvMn0pfXJldHVybiBjP2Q6Z30sZHJhd1BvaW50czpmdW5jdGlvbigpe3ZhciBhPXRoaXM7aWYoKHRoaXMub3B0aW9ucy5tYXJrZXJ8fHt9KS5lbmFibGVkfHx0aGlzLl9oYXNQb2ludE1hcmtlcnMpZi5wcm90b3R5cGUuZHJhd1BvaW50cy5jYWxsKHRoaXMpLHRoaXMucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYyl7Yy5ncmFwaGljJiZjLmdyYXBoaWNbYS5jaGFydC5zdHlsZWRNb2RlPyJjc3MiOiJhbmltYXRlIl0oYS5jb2xvckF0dHJpYnMoYykpfSl9LGhhc0RhdGE6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMucHJvY2Vzc2VkWERhdGEubGVuZ3RofSxnZXRWYWxpZFBvaW50czpmdW5jdGlvbihhLGMpe3JldHVybiBmLnByb3RvdHlwZS5nZXRWYWxpZFBvaW50cy5jYWxsKHRoaXMsYSxjLCEwKX0sZ2V0Qm94OmEubm9vcCxkcmF3TGVnZW5kU3ltYm9sOnIuZHJhd1JlY3RhbmdsZSxhbGlnbkRhdGFMYWJlbDphLnNlcmllc1R5cGVzLmNvbHVtbi5wcm90b3R5cGUuYWxpZ25EYXRhTGFiZWwsDQpnZXRFeHRyZW1lczpmdW5jdGlvbigpe3ZhciBhPWYucHJvdG90eXBlLmdldEV4dHJlbWVzLmNhbGwodGhpcyx0aGlzLnZhbHVlRGF0YSksYz1hLmRhdGFNaW47YT1hLmRhdGFNYXg7QShjKSYmKHRoaXMudmFsdWVNaW49Yyk7QShhKSYmKHRoaXMudmFsdWVNYXg9YSk7cmV0dXJuIGYucHJvdG90eXBlLmdldEV4dHJlbWVzLmNhbGwodGhpcyl9fSksQihoLHthcHBseU9wdGlvbnM6ZnVuY3Rpb24oYyxmKXtjPWEuUG9pbnQucHJvdG90eXBlLmFwcGx5T3B0aW9ucy5jYWxsKHRoaXMsYyxmKTtjLmZvcm1hdFByZWZpeD1jLmlzTnVsbHx8bnVsbD09PWMudmFsdWU/Im51bGwiOiJwb2ludCI7cmV0dXJuIGN9LGlzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gSW5maW5pdHkhPT10aGlzLnZhbHVlJiYtSW5maW5pdHkhPT10aGlzLnZhbHVlfSxoYWxvUGF0aDpmdW5jdGlvbihhKXtpZighYSlyZXR1cm5bXTt2YXIgYz10aGlzLnNoYXBlQXJncztyZXR1cm5bIk0iLGMueC1hLGMueS1hLCJMIixjLngtDQphLGMueStjLmhlaWdodCthLGMueCtjLndpZHRoK2EsYy55K2MuaGVpZ2h0K2EsYy54K2Mud2lkdGgrYSxjLnktYSwiWiJdfSxnZXRDZWxsQXR0cmlidXRlczpmdW5jdGlvbigpe3ZhciBhPXRoaXMuc2VyaWVzLGY9YS5vcHRpb25zLGg9KGYuY29sc2l6ZXx8MSkvMixrPShmLnJvd3NpemV8fDEpLzIsZz1hLnhBeGlzLGQ9YS55QXhpcyxiPXRoaXMub3B0aW9ucy5tYXJrZXJ8fGEub3B0aW9ucy5tYXJrZXI7YT1hLnBvaW50UGxhY2VtZW50VG9YVmFsdWUoKTt2YXIgZT11KHRoaXMucG9pbnRQYWRkaW5nLGYucG9pbnRQYWRkaW5nLDApLG09e3gxOmMoTWF0aC5yb3VuZChnLmxlbi0oZy50cmFuc2xhdGUodGhpcy54LWgsITEsITAsITEsITAsLWEpfHwwKSksLWcubGVuLDIqZy5sZW4pLHgyOmMoTWF0aC5yb3VuZChnLmxlbi0oZy50cmFuc2xhdGUodGhpcy54K2gsITEsITAsITEsITAsLWEpfHwwKSksLWcubGVuLDIqZy5sZW4pLHkxOmMoTWF0aC5yb3VuZChkLnRyYW5zbGF0ZSh0aGlzLnktDQprLCExLCEwLCExLCEwKXx8MCksLWQubGVuLDIqZC5sZW4pLHkyOmMoTWF0aC5yb3VuZChkLnRyYW5zbGF0ZSh0aGlzLnkraywhMSwhMCwhMSwhMCl8fDApLC1kLmxlbiwyKmQubGVuKX07W1sid2lkdGgiLCJ4Il0sWyJoZWlnaHQiLCJ5Il1dLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGM9YVswXTthPWFbMV07dmFyIGQ9YSsiMSIsZj1hKyIyIixnPU1hdGguYWJzKG1bZF0tbVtmXSksaD1iJiZiLmxpbmVXaWR0aHx8MCxsPU1hdGguYWJzKG1bZF0rbVtmXSkvMjtiW2NdJiZiW2NdPGcmJihtW2RdPWwtYltjXS8yLWgvMixtW2ZdPWwrYltjXS8yK2gvMik7ZSYmKCJ5Ij09PWEmJihkPWYsZj1hKyIxIiksbVtkXSs9ZSxtW2ZdLT1lKX0pO3JldHVybiBtfX0pKTsiIn0pO3ooYSwicGFydHMtbWFwL0dlb0pTT04uanMiLFthWyJwYXJ0cy9DaGFydC5qcyJdLGFbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxyLGspe2Z1bmN0aW9uIG4oYSwNCmMpe3ZhciBmLGg9ITEsbD1hLngscT1hLnk7YT0wO2ZvcihmPWMubGVuZ3RoLTE7YTxjLmxlbmd0aDtmPWErKyl7dmFyIHA9Y1thXVsxXT5xO3ZhciBrPWNbZl1bMV0+cTtwIT09ayYmbDwoY1tmXVswXS1jW2FdWzBdKSoocS1jW2FdWzFdKS8oY1tmXVsxXS1jW2FdWzFdKStjW2FdWzBdJiYoaD0haCl9cmV0dXJuIGh9dmFyIGM9ci53aW4sdz1rLmVycm9yLHo9ay5leHRlbmQsQT1rLmZvcm1hdCxCPWsubWVyZ2U7az1rLndyYXA7IiI7YS5wcm90b3R5cGUudHJhbnNmb3JtRnJvbUxhdExvbj1mdW5jdGlvbihhLGgpe3ZhciBmLGs9KG51bGw9PT0oZj10aGlzLnVzZXJPcHRpb25zLmNoYXJ0KXx8dm9pZCAwPT09Zj92b2lkIDA6Zi5wcm9qNCl8fGMucHJvajQ7aWYoIWspcmV0dXJuIHcoMjEsITEsdGhpcykse3g6MCx5Om51bGx9O2E9ayhoLmNycyxbYS5sb24sYS5sYXRdKTtmPWguY29zQW5nbGV8fGgucm90YXRpb24mJk1hdGguY29zKGgucm90YXRpb24pO2s9aC5zaW5BbmdsZXx8aC5yb3RhdGlvbiYmDQpNYXRoLnNpbihoLnJvdGF0aW9uKTthPWgucm90YXRpb24/W2FbMF0qZithWzFdKmssLWFbMF0qaythWzFdKmZdOmE7cmV0dXJue3g6KChhWzBdLShoLnhvZmZzZXR8fDApKSooaC5zY2FsZXx8MSkrKGgueHBhbnx8MCkpKihoLmpzb25yZXN8fDEpKyhoLmpzb25tYXJnaW5YfHwwKSx5OigoKGgueW9mZnNldHx8MCktYVsxXSkqKGguc2NhbGV8fDEpKyhoLnlwYW58fDApKSooaC5qc29ucmVzfHwxKS0oaC5qc29ubWFyZ2luWXx8MCl9fTthLnByb3RvdHlwZS50cmFuc2Zvcm1Ub0xhdExvbj1mdW5jdGlvbihhLGgpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGMucHJvajQpdygyMSwhMSx0aGlzKTtlbHNle2E9e3g6KChhLngtKGguanNvbm1hcmdpblh8fDApKS8oaC5qc29ucmVzfHwxKS0oaC54cGFufHwwKSkvKGguc2NhbGV8fDEpKyhoLnhvZmZzZXR8fDApLHk6KCgtYS55LShoLmpzb25tYXJnaW5ZfHwwKSkvKGguanNvbnJlc3x8MSkrKGgueXBhbnx8MCkpLyhoLnNjYWxlfHwxKSsoaC55b2Zmc2V0fHwNCjApfTt2YXIgZj1oLmNvc0FuZ2xlfHxoLnJvdGF0aW9uJiZNYXRoLmNvcyhoLnJvdGF0aW9uKSxrPWguc2luQW5nbGV8fGgucm90YXRpb24mJk1hdGguc2luKGgucm90YXRpb24pO2g9Yy5wcm9qNChoLmNycywiV0dTODQiLGgucm90YXRpb24/e3g6YS54KmYrYS55Ki1rLHk6YS54KmsrYS55KmZ9OmEpO3JldHVybntsYXQ6aC55LGxvbjpoLnh9fX07YS5wcm90b3R5cGUuZnJvbVBvaW50VG9MYXRMb249ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5tYXBUcmFuc2Zvcm1zLGY7aWYoYyl7Zm9yKGYgaW4gYylpZihPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChjLGYpJiZjW2ZdLmhpdFpvbmUmJm4oe3g6YS54LHk6LWEueX0sY1tmXS5oaXRab25lLmNvb3JkaW5hdGVzWzBdKSlyZXR1cm4gdGhpcy50cmFuc2Zvcm1Ub0xhdExvbihhLGNbZl0pO3JldHVybiB0aGlzLnRyYW5zZm9ybVRvTGF0TG9uKGEsY1siZGVmYXVsdCJdKX13KDIyLCExLHRoaXMpfTthLnByb3RvdHlwZS5mcm9tTGF0TG9uVG9Qb2ludD0NCmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMubWFwVHJhbnNmb3JtcyxmO2lmKCFjKXJldHVybiB3KDIyLCExLHRoaXMpLHt4OjAseTpudWxsfTtmb3IoZiBpbiBjKWlmKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKGMsZikmJmNbZl0uaGl0Wm9uZSl7dmFyIGs9dGhpcy50cmFuc2Zvcm1Gcm9tTGF0TG9uKGEsY1tmXSk7aWYobih7eDprLngseTotay55fSxjW2ZdLmhpdFpvbmUuY29vcmRpbmF0ZXNbMF0pKXJldHVybiBrfXJldHVybiB0aGlzLnRyYW5zZm9ybUZyb21MYXRMb24oYSxjWyJkZWZhdWx0Il0pfTtyLmdlb2pzb249ZnVuY3Rpb24oYSxjLGYpe3ZhciBoPVtdLGw9W10saz1mdW5jdGlvbihhKXthLmZvckVhY2goZnVuY3Rpb24oYSxjKXswPT09Yz9sLnB1c2goWyJNIixhWzBdLC1hWzFdXSk6bC5wdXNoKFsiTCIsYVswXSwtYVsxXV0pfSl9O2M9Y3x8Im1hcCI7YS5mZWF0dXJlcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBmPWEuZ2VvbWV0cnksZz1mLnR5cGU7Zj1mLmNvb3JkaW5hdGVzOw0KYT1hLnByb3BlcnRpZXM7dmFyIGQ7bD1bXTsibWFwIj09PWN8fCJtYXBidWJibGUiPT09Yz8oIlBvbHlnb24iPT09Zz8oZi5mb3JFYWNoKGspLGwucHVzaChbIloiXSkpOiJNdWx0aVBvbHlnb24iPT09ZyYmKGYuZm9yRWFjaChmdW5jdGlvbihhKXthLmZvckVhY2goayl9KSxsLnB1c2goWyJaIl0pKSxsLmxlbmd0aCYmKGQ9e3BhdGg6bH0pKToibWFwbGluZSI9PT1jPygiTGluZVN0cmluZyI9PT1nP2soZik6Ik11bHRpTGluZVN0cmluZyI9PT1nJiZmLmZvckVhY2goayksbC5sZW5ndGgmJihkPXtwYXRoOmx9KSk6Im1hcHBvaW50Ij09PWMmJiJQb2ludCI9PT1nJiYoZD17eDpmWzBdLHk6LWZbMV19KTtkJiZoLnB1c2goeihkLHtuYW1lOmEubmFtZXx8YS5OQU1FLHByb3BlcnRpZXM6YX0pKX0pO2YmJmEuY29weXJpZ2h0U2hvcnQmJihmLmNoYXJ0Lm1hcENyZWRpdHM9QShmLmNoYXJ0Lm9wdGlvbnMuY3JlZGl0cy5tYXBUZXh0LHtnZW9qc29uOmF9KSxmLmNoYXJ0Lm1hcENyZWRpdHNGdWxsPQ0KQShmLmNoYXJ0Lm9wdGlvbnMuY3JlZGl0cy5tYXBUZXh0RnVsbCx7Z2VvanNvbjphfSkpO3JldHVybiBofTtrKGEucHJvdG90eXBlLCJhZGRDcmVkaXRzIixmdW5jdGlvbihhLGMpe2M9QighMCx0aGlzLm9wdGlvbnMuY3JlZGl0cyxjKTt0aGlzLm1hcENyZWRpdHMmJihjLmhyZWY9bnVsbCk7YS5jYWxsKHRoaXMsYyk7dGhpcy5jcmVkaXRzJiZ0aGlzLm1hcENyZWRpdHNGdWxsJiZ0aGlzLmNyZWRpdHMuYXR0cih7dGl0bGU6dGhpcy5tYXBDcmVkaXRzRnVsbH0pfSl9KTt6KGEsInBhcnRzLW1hcC9NYXAuanMiLFthWyJwYXJ0cy9DaGFydC5qcyJdLGFbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJwYXJ0cy9PcHRpb25zLmpzIl0sYVsicGFydHMvU1ZHUmVuZGVyZXIuanMiXSxhWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxyLGssbixjKXtmdW5jdGlvbiB3KGEsYyxoLGsscCxuLGcsZCl7cmV0dXJuW1siTSIsYStwLGNdLFsiTCIsYStoLW4sY10sWyJDIixhK2gtbi8yLGMsDQphK2gsYytuLzIsYStoLGMrbl0sWyJMIixhK2gsYytrLWddLFsiQyIsYStoLGMray1nLzIsYStoLWcvMixjK2ssYStoLWcsYytrXSxbIkwiLGErZCxjK2tdLFsiQyIsYStkLzIsYytrLGEsYytrLWQvMixhLGMray1kXSxbIkwiLGEsYytwXSxbIkMiLGEsYytwLzIsYStwLzIsYyxhK3AsY10sWyJaIl1dfWs9ay5kZWZhdWx0T3B0aW9uczt2YXIgej1jLmV4dGVuZCxBPWMuZ2V0T3B0aW9ucyxCPWMubWVyZ2UsdT1jLnBpY2s7Yz1yLlJlbmRlcmVyO3ZhciBoPXIuVk1MUmVuZGVyZXI7eihrLmxhbmcse3pvb21JbjoiWm9vbSBpbiIsem9vbU91dDoiWm9vbSBvdXQifSk7ay5tYXBOYXZpZ2F0aW9uPXtidXR0b25PcHRpb25zOnthbGlnblRvOiJwbG90Qm94IixhbGlnbjoibGVmdCIsdmVydGljYWxBbGlnbjoidG9wIix4OjAsd2lkdGg6MTgsaGVpZ2h0OjE4LHBhZGRpbmc6NSxzdHlsZTp7Zm9udFNpemU6IjE1cHgiLGZvbnRXZWlnaHQ6ImJvbGQifSx0aGVtZTp7InN0cm9rZS13aWR0aCI6MSwNCiJ0ZXh0LWFsaWduIjoiY2VudGVyIn19LGJ1dHRvbnM6e3pvb21Jbjp7b25jbGljazpmdW5jdGlvbigpe3RoaXMubWFwWm9vbSguNSl9LHRleHQ6IisiLHk6MH0sem9vbU91dDp7b25jbGljazpmdW5jdGlvbigpe3RoaXMubWFwWm9vbSgyKX0sdGV4dDoiLSIseToyOH19LG1vdXNlV2hlZWxTZW5zaXRpdml0eToxLjF9O3Iuc3BsaXRQYXRoPWZ1bmN0aW9uKGEpeyJzdHJpbmciPT09dHlwZW9mIGEmJihhPWEucmVwbGFjZSgvKFtBLVphLXpdKS9nLCIgJDEgIikucmVwbGFjZSgvXlxzKi8sIiIpLnJlcGxhY2UoL1xzKiQvLCIiKSxhPWEuc3BsaXQoL1sgLDtdKy8pLm1hcChmdW5jdGlvbihhKXtyZXR1cm4vW0EtemEtel0vLnRlc3QoYSk/YTpwYXJzZUZsb2F0KGEpfSkpO3JldHVybiBuLnByb3RvdHlwZS5wYXRoVG9TZWdtZW50cyhhKX07ci5tYXBzPXt9O24ucHJvdG90eXBlLnN5bWJvbHMudG9wYnV0dG9uPWZ1bmN0aW9uKGEsYyxoLGsscCl7cD1wJiZwLnJ8fDA7cmV0dXJuIHcoYS0xLA0KYy0xLGgsayxwLHAsMCwwKX07bi5wcm90b3R5cGUuc3ltYm9scy5ib3R0b21idXR0b249ZnVuY3Rpb24oYSxjLGgsayxwKXtwPXAmJnAucnx8MDtyZXR1cm4gdyhhLTEsYy0xLGgsaywwLDAscCxwKX07Yz09PWgmJlsidG9wYnV0dG9uIiwiYm90dG9tYnV0dG9uIl0uZm9yRWFjaChmdW5jdGlvbihhKXtoLnByb3RvdHlwZS5zeW1ib2xzW2FdPW4ucHJvdG90eXBlLnN5bWJvbHNbYV19KTtyLk1hcD1yLm1hcENoYXJ0PWZ1bmN0aW9uKGMsaCxrKXt2YXIgZj0ic3RyaW5nIj09PXR5cGVvZiBjfHxjLm5vZGVOYW1lLGw9YXJndW1lbnRzW2Y/MTowXSxuPWwsZz17ZW5kT25UaWNrOiExLHZpc2libGU6ITEsbWluUGFkZGluZzowLG1heFBhZGRpbmc6MCxzdGFydE9uVGljazohMX0sZD1BKCkuY3JlZGl0czt2YXIgYj1sLnNlcmllcztsLnNlcmllcz1udWxsO2w9Qih7Y2hhcnQ6e3Bhbm5pbmc6e2VuYWJsZWQ6ITAsdHlwZToieHkifSx0eXBlOiJtYXAifSxjcmVkaXRzOnttYXBUZXh0OnUoZC5tYXBUZXh0LA0KJyBcdTAwYTkgPGEgaHJlZj0ie2dlb2pzb24uY29weXJpZ2h0VXJsfSI+e2dlb2pzb24uY29weXJpZ2h0U2hvcnR9PC9hPicpLG1hcFRleHRGdWxsOnUoZC5tYXBUZXh0RnVsbCwie2dlb2pzb24uY29weXJpZ2h0fSIpfSx0b29sdGlwOntmb2xsb3dUb3VjaE1vdmU6ITF9LHhBeGlzOmcseUF4aXM6QihnLHtyZXZlcnNlZDohMH0pfSxsLHtjaGFydDp7aW52ZXJ0ZWQ6ITEsYWxpZ25UaWNrczohMX19KTtsLnNlcmllcz1uLnNlcmllcz1iO3JldHVybiBmP25ldyBhKGMsbCxrKTpuZXcgYShsLGgpfX0pO3ooYSwibWFzdGVycy9tb2R1bGVzL21hcC5zcmMuanMiLFtdLGZ1bmN0aW9uKCl7fSl9KTsNCi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1hcC5qcy5tYXA="></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIEFubm90YXRpb25zIG1vZHVsZQoKIChjKSAyMDA5LTIwMTkgVG9yc3RlaW4gSG9uc2kKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24oYSl7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8oYVsiZGVmYXVsdCJdPWEsbW9kdWxlLmV4cG9ydHM9YSk6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL21vZHVsZXMvYW5ub3RhdGlvbnMiLFsiaGlnaGNoYXJ0cyJdLGZ1bmN0aW9uKHApe2EocCk7YS5IaWdoY2hhcnRzPXA7cmV0dXJuIGF9KTphKCJ1bmRlZmluZWQiIT09dHlwZW9mIEhpZ2hjaGFydHM/SGlnaGNoYXJ0czp2b2lkIDApfSkoZnVuY3Rpb24oYSl7ZnVuY3Rpb24gcChhLGQsbSxlKXthLmhhc093blByb3BlcnR5KGQpfHwoYVtkXT1lLmFwcGx5KG51bGwsbSkpfWE9YT9hLl9tb2R1bGVzOnt9O3AoYSwiYW5ub3RhdGlvbnMvZXZlbnRFbWl0dGVyTWl4aW4uanMiLFthWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGEsZCl7dmFyIHE9ZC5hZGRFdmVudCxlPWQuZmlyZUV2ZW50LAp2PWQuaW5BcnJheSxiPWQub2JqZWN0RWFjaCxBPWQucGljayx6PWQucmVtb3ZlRXZlbnQ7cmV0dXJue2FkZEV2ZW50czpmdW5jdGlvbigpe3ZhciBjPXRoaXMsaD1mdW5jdGlvbihoKXtxKGgsYS5pc1RvdWNoRGV2aWNlPyJ0b3VjaHN0YXJ0IjoibW91c2Vkb3duIixmdW5jdGlvbihoKXtjLm9uTW91c2VEb3duKGgpfSl9O2godGhpcy5ncmFwaGljLmVsZW1lbnQpOyhjLmxhYmVsc3x8W10pLmZvckVhY2goZnVuY3Rpb24oYyl7Yy5vcHRpb25zLnVzZUhUTUwmJmMuZ3JhcGhpYy50ZXh0JiZoKGMuZ3JhcGhpYy50ZXh0LmVsZW1lbnQpfSk7YihjLm9wdGlvbnMuZXZlbnRzLGZ1bmN0aW9uKGgsYil7dmFyIGs9ZnVuY3Rpb24oZyl7ImNsaWNrIj09PWImJmMuY2FuY2VsQ2xpY2t8fGguY2FsbChjLGMuY2hhcnQucG9pbnRlci5ub3JtYWxpemUoZyksYy50YXJnZXQpfTtpZigtMT09PXYoYixjLm5vbkRPTUV2ZW50c3x8W10pKWMuZ3JhcGhpYy5vbihiLGspO2Vsc2UgcShjLGIsayl9KTtpZihjLm9wdGlvbnMuZHJhZ2dhYmxlJiYKKHEoYyxhLmlzVG91Y2hEZXZpY2U/InRvdWNobW92ZSI6ImRyYWciLGMub25EcmFnKSwhYy5ncmFwaGljLnJlbmRlcmVyLnN0eWxlZE1vZGUpKXt2YXIgcj17Y3Vyc29yOnt4OiJldy1yZXNpemUiLHk6Im5zLXJlc2l6ZSIseHk6Im1vdmUifVtjLm9wdGlvbnMuZHJhZ2dhYmxlXX07Yy5ncmFwaGljLmNzcyhyKTsoYy5sYWJlbHN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGMpe2Mub3B0aW9ucy51c2VIVE1MJiZjLmdyYXBoaWMudGV4dCYmYy5ncmFwaGljLnRleHQuY3NzKHIpfSl9Yy5pc1VwZGF0aW5nfHxlKGMsImFkZCIpfSxyZW1vdmVEb2NFdmVudHM6ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZURyYWcmJih0aGlzLnJlbW92ZURyYWc9dGhpcy5yZW1vdmVEcmFnKCkpO3RoaXMucmVtb3ZlTW91c2VVcCYmKHRoaXMucmVtb3ZlTW91c2VVcD10aGlzLnJlbW92ZU1vdXNlVXAoKSl9LG9uTW91c2VEb3duOmZ1bmN0aW9uKGMpe3ZhciBoPXRoaXMsYj1oLmNoYXJ0LnBvaW50ZXI7Yy5wcmV2ZW50RGVmYXVsdCYmCmMucHJldmVudERlZmF1bHQoKTtpZigyIT09Yy5idXR0b24pe2M9Yi5ub3JtYWxpemUoYyk7dmFyIHg9Yy5jaGFydFg7dmFyIGs9Yy5jaGFydFk7aC5jYW5jZWxDbGljaz0hMTtoLmNoYXJ0Lmhhc0RyYWdnZWRBbm5vdGF0aW9uPSEwO2gucmVtb3ZlRHJhZz1xKGEuZG9jLGEuaXNUb3VjaERldmljZT8idG91Y2htb3ZlIjoibW91c2Vtb3ZlIixmdW5jdGlvbihjKXtoLmhhc0RyYWdnZWQ9ITA7Yz1iLm5vcm1hbGl6ZShjKTtjLnByZXZDaGFydFg9eDtjLnByZXZDaGFydFk9aztlKGgsImRyYWciLGMpO3g9Yy5jaGFydFg7az1jLmNoYXJ0WX0pO2gucmVtb3ZlTW91c2VVcD1xKGEuZG9jLGEuaXNUb3VjaERldmljZT8idG91Y2hlbmQiOiJtb3VzZXVwIixmdW5jdGlvbihjKXtoLmNhbmNlbENsaWNrPWguaGFzRHJhZ2dlZDtoLmhhc0RyYWdnZWQ9ITE7aC5jaGFydC5oYXNEcmFnZ2VkQW5ub3RhdGlvbj0hMTtlKEEoaC50YXJnZXQsaCksImFmdGVyVXBkYXRlIik7aC5vbk1vdXNlVXAoYyl9KX19LApvbk1vdXNlVXA6ZnVuY3Rpb24oYyl7dmFyIGg9dGhpcy5jaGFydDtjPXRoaXMudGFyZ2V0fHx0aGlzO3ZhciBiPWgub3B0aW9ucy5hbm5vdGF0aW9ucztoPWguYW5ub3RhdGlvbnMuaW5kZXhPZihjKTt0aGlzLnJlbW92ZURvY0V2ZW50cygpO2JbaF09Yy5vcHRpb25zfSxvbkRyYWc6ZnVuY3Rpb24oYyl7aWYodGhpcy5jaGFydC5pc0luc2lkZVBsb3QoYy5jaGFydFgtdGhpcy5jaGFydC5wbG90TGVmdCxjLmNoYXJ0WS10aGlzLmNoYXJ0LnBsb3RUb3ApKXt2YXIgYj10aGlzLm1vdXNlTW92ZVRvVHJhbnNsYXRpb24oYyk7IngiPT09dGhpcy5vcHRpb25zLmRyYWdnYWJsZSYmKGIueT0wKTsieSI9PT10aGlzLm9wdGlvbnMuZHJhZ2dhYmxlJiYoYi54PTApO3RoaXMucG9pbnRzLmxlbmd0aD90aGlzLnRyYW5zbGF0ZShiLngsYi55KToodGhpcy5zaGFwZXMuZm9yRWFjaChmdW5jdGlvbihjKXtjLnRyYW5zbGF0ZShiLngsYi55KX0pLHRoaXMubGFiZWxzLmZvckVhY2goZnVuY3Rpb24oYyl7Yy50cmFuc2xhdGUoYi54LApiLnkpfSkpO3RoaXMucmVkcmF3KCExKX19LG1vdXNlTW92ZVRvUmFkaWFuczpmdW5jdGlvbihjLGIsYSl7dmFyIGg9Yy5wcmV2Q2hhcnRZLWEsaz1jLnByZXZDaGFydFgtYjthPWMuY2hhcnRZLWE7Yz1jLmNoYXJ0WC1iO3RoaXMuY2hhcnQuaW52ZXJ0ZWQmJihiPWssaz1oLGg9YixiPWMsYz1hLGE9Yik7cmV0dXJuIE1hdGguYXRhbjIoYSxjKS1NYXRoLmF0YW4yKGgsayl9LG1vdXNlTW92ZVRvVHJhbnNsYXRpb246ZnVuY3Rpb24oYyl7dmFyIGI9Yy5jaGFydFgtYy5wcmV2Q2hhcnRYO2M9Yy5jaGFydFktYy5wcmV2Q2hhcnRZO2lmKHRoaXMuY2hhcnQuaW52ZXJ0ZWQpe3ZhciBhPWM7Yz1iO2I9YX1yZXR1cm57eDpiLHk6Y319LG1vdXNlTW92ZVRvU2NhbGU6ZnVuY3Rpb24oYyxiLGEpe2I9KGMuY2hhcnRYLWJ8fDEpLyhjLnByZXZDaGFydFgtYnx8MSk7Yz0oYy5jaGFydFktYXx8MSkvKGMucHJldkNoYXJ0WS1hfHwxKTt0aGlzLmNoYXJ0LmludmVydGVkJiYoYT1jLGM9YixiPWEpO3JldHVybnt4OmIsCnk6Y319LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZURvY0V2ZW50cygpO3oodGhpcyk7dGhpcy5oY0V2ZW50cz1udWxsfX19KTtwKGEsImFubm90YXRpb25zL0NvbnRyb2xQb2ludC5qcyIsW2FbInBhcnRzL1V0aWxpdGllcy5qcyJdLGFbImFubm90YXRpb25zL2V2ZW50RW1pdHRlck1peGluLmpzIl1dLGZ1bmN0aW9uKGEsZCl7dmFyIHE9YS5tZXJnZSxlPWEucGljaztyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYSx2LGMpe3RoaXMuYWRkRXZlbnRzPWQuYWRkRXZlbnRzO3RoaXMuZ3JhcGhpYz12b2lkIDA7dGhpcy5tb3VzZU1vdmVUb1JhZGlhbnM9ZC5tb3VzZU1vdmVUb1JhZGlhbnM7dGhpcy5tb3VzZU1vdmVUb1NjYWxlPWQubW91c2VNb3ZlVG9TY2FsZTt0aGlzLm1vdXNlTW92ZVRvVHJhbnNsYXRpb249ZC5tb3VzZU1vdmVUb1RyYW5zbGF0aW9uO3RoaXMub25EcmFnPWQub25EcmFnO3RoaXMub25Nb3VzZURvd249ZC5vbk1vdXNlRG93bjt0aGlzLm9uTW91c2VVcD0KZC5vbk1vdXNlVXA7dGhpcy5yZW1vdmVEb2NFdmVudHM9ZC5yZW1vdmVEb2NFdmVudHM7dGhpcy5ub25ET01FdmVudHM9WyJkcmFnIl07dGhpcy5jaGFydD1iO3RoaXMudGFyZ2V0PWE7dGhpcy5vcHRpb25zPXY7dGhpcy5pbmRleD1lKHYuaW5kZXgsYyl9YS5wcm90b3R5cGUuc2V0VmlzaWJpbGl0eT1mdW5jdGlvbihiKXt0aGlzLmdyYXBoaWMuYXR0cigidmlzaWJpbGl0eSIsYj8idmlzaWJsZSI6ImhpZGRlbiIpO3RoaXMub3B0aW9ucy52aXNpYmxlPWJ9O2EucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBiPXRoaXMuY2hhcnQsYT10aGlzLm9wdGlvbnM7dGhpcy5ncmFwaGljPWIucmVuZGVyZXIuc3ltYm9sKGEuc3ltYm9sLDAsMCxhLndpZHRoLGEuaGVpZ2h0KS5hZGQoYi5jb250cm9sUG9pbnRzR3JvdXApLmNzcyhhLnN0eWxlKTt0aGlzLnNldFZpc2liaWxpdHkoYS52aXNpYmxlKTt0aGlzLmFkZEV2ZW50cygpfTthLnByb3RvdHlwZS5yZWRyYXc9ZnVuY3Rpb24oYil7dGhpcy5ncmFwaGljW2I/CiJhbmltYXRlIjoiYXR0ciJdKHRoaXMub3B0aW9ucy5wb3NpdGlvbmVyLmNhbGwodGhpcyx0aGlzLnRhcmdldCkpfTthLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7ZC5kZXN0cm95LmNhbGwodGhpcyk7dGhpcy5ncmFwaGljJiYodGhpcy5ncmFwaGljPXRoaXMuZ3JhcGhpYy5kZXN0cm95KCkpO3RoaXMub3B0aW9ucz10aGlzLnRhcmdldD10aGlzLmNoYXJ0PW51bGx9O2EucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihiKXt2YXIgYT10aGlzLmNoYXJ0LGQ9dGhpcy50YXJnZXQsYz10aGlzLmluZGV4O2I9cSghMCx0aGlzLm9wdGlvbnMsYik7dGhpcy5kZXN0cm95KCk7dGhpcy5jb25zdHJ1Y3RvcihhLGQsYixjKTt0aGlzLnJlbmRlcihhLmNvbnRyb2xQb2ludHNHcm91cCk7dGhpcy5yZWRyYXcoKX07cmV0dXJuIGF9KCl9KTtwKGEsImFubm90YXRpb25zL01vY2tQb2ludC5qcyIsW2FbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSwKZCl7dmFyIHE9ZC5kZWZpbmVkLGU9ZC5maXJlRXZlbnQ7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChiLGQsZSl7dGhpcy55PXRoaXMueD10aGlzLnBsb3RZPXRoaXMucGxvdFg9dGhpcy5pc0luc2lkZT12b2lkIDA7dGhpcy5tb2NrPSEwO3RoaXMuc2VyaWVzPXt2aXNpYmxlOiEwLGNoYXJ0OmIsZ2V0UGxvdEJveDphLlNlcmllcy5wcm90b3R5cGUuZ2V0UGxvdEJveH07dGhpcy50YXJnZXQ9ZHx8bnVsbDt0aGlzLm9wdGlvbnM9ZTt0aGlzLmFwcGx5T3B0aW9ucyh0aGlzLmdldE9wdGlvbnMoKSl9ZC5mcm9tUG9pbnQ9ZnVuY3Rpb24oYil7cmV0dXJuIG5ldyBkKGIuc2VyaWVzLmNoYXJ0LG51bGwse3g6Yi54LHk6Yi55LHhBeGlzOmIuc2VyaWVzLnhBeGlzLHlBeGlzOmIuc2VyaWVzLnlBeGlzfSl9O2QucG9pbnRUb1BpeGVscz1mdW5jdGlvbihiLGEpe3ZhciBkPWIuc2VyaWVzLGM9ZC5jaGFydCxoPWIucGxvdFgscj1iLnBsb3RZO2MuaW52ZXJ0ZWQmJihiLm1vY2s/KGg9Yi5wbG90WSwKcj1iLnBsb3RYKTooaD1jLnBsb3RXaWR0aC1iLnBsb3RZLHI9Yy5wbG90SGVpZ2h0LWIucGxvdFgpKTtkJiYhYSYmKGI9ZC5nZXRQbG90Qm94KCksaCs9Yi50cmFuc2xhdGVYLHIrPWIudHJhbnNsYXRlWSk7cmV0dXJue3g6aCx5OnJ9fTtkLnBvaW50VG9PcHRpb25zPWZ1bmN0aW9uKGIpe3JldHVybnt4OmIueCx5OmIueSx4QXhpczpiLnNlcmllcy54QXhpcyx5QXhpczpiLnNlcmllcy55QXhpc319O2QucHJvdG90eXBlLmhhc0R5bmFtaWNPcHRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiB0aGlzLm9wdGlvbnN9O2QucHJvdG90eXBlLmdldE9wdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNEeW5hbWljT3B0aW9ucygpP3RoaXMub3B0aW9ucyh0aGlzLnRhcmdldCk6dGhpcy5vcHRpb25zfTtkLnByb3RvdHlwZS5hcHBseU9wdGlvbnM9ZnVuY3Rpb24oYil7dGhpcy5jb21tYW5kPWIuY29tbWFuZDt0aGlzLnNldEF4aXMoYiwieCIpO3RoaXMuc2V0QXhpcyhiLAoieSIpO3RoaXMucmVmcmVzaCgpfTtkLnByb3RvdHlwZS5zZXRBeGlzPWZ1bmN0aW9uKGIsZCl7ZCs9IkF4aXMiO2I9YltkXTt2YXIgZT10aGlzLnNlcmllcy5jaGFydDt0aGlzLnNlcmllc1tkXT1iIGluc3RhbmNlb2YgYS5BeGlzP2I6cShiKT9lW2RdW2JdfHxlLmdldChiKTpudWxsfTtkLnByb3RvdHlwZS50b0FuY2hvcj1mdW5jdGlvbigpe3ZhciBiPVt0aGlzLnBsb3RYLHRoaXMucGxvdFksMCwwXTt0aGlzLnNlcmllcy5jaGFydC5pbnZlcnRlZCYmKGJbMF09dGhpcy5wbG90WSxiWzFdPXRoaXMucGxvdFgpO3JldHVybiBifTtkLnByb3RvdHlwZS5nZXRMYWJlbENvbmZpZz1mdW5jdGlvbigpe3JldHVybnt4OnRoaXMueCx5OnRoaXMueSxwb2ludDp0aGlzfX07ZC5wcm90b3R5cGUuaXNJbnNpZGVQbG90PWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5wbG90WCxhPXRoaXMucGxvdFksZD10aGlzLnNlcmllcy54QXhpcyxjPXRoaXMuc2VyaWVzLnlBeGlzLGg9e3g6Yix5OmEsaXNJbnNpZGVQbG90OiEwfTsKZCYmKGguaXNJbnNpZGVQbG90PXEoYikmJjA8PWImJmI8PWQubGVuKTtjJiYoaC5pc0luc2lkZVBsb3Q9aC5pc0luc2lkZVBsb3QmJnEoYSkmJjA8PWEmJmE8PWMubGVuKTtlKHRoaXMuc2VyaWVzLmNoYXJ0LCJhZnRlcklzSW5zaWRlUGxvdCIsaCk7cmV0dXJuIGguaXNJbnNpZGVQbG90fTtkLnByb3RvdHlwZS5yZWZyZXNoPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5zZXJpZXMsYT1iLnhBeGlzO2I9Yi55QXhpczt2YXIgZD10aGlzLmdldE9wdGlvbnMoKTthPyh0aGlzLng9ZC54LHRoaXMucGxvdFg9YS50b1BpeGVscyhkLngsITApKToodGhpcy54PW51bGwsdGhpcy5wbG90WD1kLngpO2I/KHRoaXMueT1kLnksdGhpcy5wbG90WT1iLnRvUGl4ZWxzKGQueSwhMCkpOih0aGlzLnk9bnVsbCx0aGlzLnBsb3RZPWQueSk7dGhpcy5pc0luc2lkZT10aGlzLmlzSW5zaWRlUGxvdCgpfTtkLnByb3RvdHlwZS50cmFuc2xhdGU9ZnVuY3Rpb24oYixhLGQsYyl7dGhpcy5oYXNEeW5hbWljT3B0aW9ucygpfHwKKHRoaXMucGxvdFgrPWQsdGhpcy5wbG90WSs9Yyx0aGlzLnJlZnJlc2hPcHRpb25zKCkpfTtkLnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbihiLGEsZCxjKXtpZighdGhpcy5oYXNEeW5hbWljT3B0aW9ucygpKXt2YXIgaD10aGlzLnBsb3RZKmM7dGhpcy5wbG90WD0oMS1kKSpiK3RoaXMucGxvdFgqZDt0aGlzLnBsb3RZPSgxLWMpKmEraDt0aGlzLnJlZnJlc2hPcHRpb25zKCl9fTtkLnByb3RvdHlwZS5yb3RhdGU9ZnVuY3Rpb24oYixhLGQpe2lmKCF0aGlzLmhhc0R5bmFtaWNPcHRpb25zKCkpe3ZhciBjPU1hdGguY29zKGQpO2Q9TWF0aC5zaW4oZCk7dmFyIGg9dGhpcy5wbG90WCxlPXRoaXMucGxvdFk7aC09YjtlLT1hO3RoaXMucGxvdFg9aCpjLWUqZCtiO3RoaXMucGxvdFk9aCpkK2UqYythO3RoaXMucmVmcmVzaE9wdGlvbnMoKX19O2QucHJvdG90eXBlLnJlZnJlc2hPcHRpb25zPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5zZXJpZXMsYT1iLnhBeGlzO2I9Yi55QXhpczt0aGlzLng9CnRoaXMub3B0aW9ucy54PWE/dGhpcy5vcHRpb25zLng9YS50b1ZhbHVlKHRoaXMucGxvdFgsITApOnRoaXMucGxvdFg7dGhpcy55PXRoaXMub3B0aW9ucy55PWI/Yi50b1ZhbHVlKHRoaXMucGxvdFksITApOnRoaXMucGxvdFl9O3JldHVybiBkfSgpfSk7cChhLCJhbm5vdGF0aW9ucy9jb250cm9sbGFibGUvY29udHJvbGxhYmxlTWl4aW4uanMiLFthWyJhbm5vdGF0aW9ucy9Db250cm9sUG9pbnQuanMiXSxhWyJhbm5vdGF0aW9ucy9Nb2NrUG9pbnQuanMiXSxhWyJwYXJ0cy9Ub29sdGlwLmpzIl0sYVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGEsZCxtLGUpe3ZhciBxPWUuaXNPYmplY3QsYj1lLmlzU3RyaW5nLEE9ZS5tZXJnZSx6PWUuc3BsYXQ7cmV0dXJue2luaXQ6ZnVuY3Rpb24oYyxiLGEpe3RoaXMuYW5ub3RhdGlvbj1jO3RoaXMuY2hhcnQ9Yy5jaGFydDt0aGlzLm9wdGlvbnM9Yjt0aGlzLnBvaW50cz1bXTt0aGlzLmNvbnRyb2xQb2ludHM9W107dGhpcy5pbmRleD0KYTt0aGlzLmxpbmtQb2ludHMoKTt0aGlzLmFkZENvbnRyb2xQb2ludHMoKX0sYXR0cjpmdW5jdGlvbigpe3RoaXMuZ3JhcGhpYy5hdHRyLmFwcGx5KHRoaXMuZ3JhcGhpYyxhcmd1bWVudHMpfSxnZXRQb2ludHNPcHRpb25zOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5vcHRpb25zO3JldHVybiBjLnBvaW50c3x8Yy5wb2ludCYmeihjLnBvaW50KX0sYXR0cnNGcm9tT3B0aW9uczpmdW5jdGlvbihjKXt2YXIgYj10aGlzLmNvbnN0cnVjdG9yLmF0dHJzTWFwLGE9e30sZCxrPXRoaXMuY2hhcnQuc3R5bGVkTW9kZTtmb3IoZCBpbiBjKXt2YXIgZT1iW2RdOyFlfHxrJiYtMSE9PVsiZmlsbCIsInN0cm9rZSIsInN0cm9rZS13aWR0aCJdLmluZGV4T2YoZSl8fChhW2VdPWNbZF0pfXJldHVybiBhfSxhbmNob3I6ZnVuY3Rpb24oYyl7dmFyIGI9Yy5zZXJpZXMuZ2V0UGxvdEJveCgpO2M9Yy5tb2NrP2MudG9BbmNob3IoKTptLnByb3RvdHlwZS5nZXRBbmNob3IuY2FsbCh7Y2hhcnQ6Yy5zZXJpZXMuY2hhcnR9LApjKTtjPXt4OmNbMF0rKHRoaXMub3B0aW9ucy54fHwwKSx5OmNbMV0rKHRoaXMub3B0aW9ucy55fHwwKSxoZWlnaHQ6Y1syXXx8MCx3aWR0aDpjWzNdfHwwfTtyZXR1cm57cmVsYXRpdmVQb3NpdGlvbjpjLGFic29sdXRlUG9zaXRpb246QShjLHt4OmMueCtiLnRyYW5zbGF0ZVgseTpjLnkrYi50cmFuc2xhdGVZfSl9fSxwb2ludDpmdW5jdGlvbihjLGEpe2lmKGMmJmMuc2VyaWVzKXJldHVybiBjO2EmJm51bGwhPT1hLnNlcmllc3x8KHEoYyk/YT1uZXcgZCh0aGlzLmNoYXJ0LHRoaXMsYyk6YihjKT9hPXRoaXMuY2hhcnQuZ2V0KGMpfHxudWxsOiJmdW5jdGlvbiI9PT10eXBlb2YgYyYmKGE9Yy5jYWxsKGEsdGhpcyksYT1hLnNlcmllcz9hOm5ldyBkKHRoaXMuY2hhcnQsdGhpcyxjKSkpO3JldHVybiBhfSxsaW5rUG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5nZXRQb2ludHNPcHRpb25zKCksYj10aGlzLnBvaW50cyxhPWMmJmMubGVuZ3RofHwwLGQ7Zm9yKGQ9MDtkPGE7ZCsrKXt2YXIgaz0KdGhpcy5wb2ludChjW2RdLGJbZF0pO2lmKCFrKXtiLmxlbmd0aD0wO3JldHVybn1rLm1vY2smJmsucmVmcmVzaCgpO2JbZF09a31yZXR1cm4gYn0sYWRkQ29udHJvbFBvaW50czpmdW5jdGlvbigpe3ZhciBjPXRoaXMub3B0aW9ucy5jb250cm9sUG9pbnRzOyhjfHxbXSkuZm9yRWFjaChmdW5jdGlvbihiLGQpe2I9QSh0aGlzLm9wdGlvbnMuY29udHJvbFBvaW50T3B0aW9ucyxiKTtiLmluZGV4fHwoYi5pbmRleD1kKTtjW2RdPWI7dGhpcy5jb250cm9sUG9pbnRzLnB1c2gobmV3IGEodGhpcy5jaGFydCx0aGlzLGIpKX0sdGhpcyl9LHNob3VsZEJlRHJhd246ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMucG9pbnRzLmxlbmd0aH0scmVuZGVyOmZ1bmN0aW9uKGMpe3RoaXMuY29udHJvbFBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGMpe2MucmVuZGVyKCl9KX0scmVkcmF3OmZ1bmN0aW9uKGMpe3RoaXMuY29udHJvbFBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IucmVkcmF3KGMpfSl9LHRyYW5zZm9ybTpmdW5jdGlvbihjLApiLGEsZCxrKXtpZih0aGlzLmNoYXJ0LmludmVydGVkKXt2YXIgaD1iO2I9YTthPWh9dGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihnLGYpe3RoaXMudHJhbnNmb3JtUG9pbnQoYyxiLGEsZCxrLGYpfSx0aGlzKX0sdHJhbnNmb3JtUG9pbnQ6ZnVuY3Rpb24oYyxiLGEsZSxrLHkpe3ZhciBnPXRoaXMucG9pbnRzW3ldO2cubW9ja3x8KGc9dGhpcy5wb2ludHNbeV09ZC5mcm9tUG9pbnQoZykpO2dbY10oYixhLGUsayl9LHRyYW5zbGF0ZTpmdW5jdGlvbihjLGIpe3RoaXMudHJhbnNmb3JtKCJ0cmFuc2xhdGUiLG51bGwsbnVsbCxjLGIpfSx0cmFuc2xhdGVQb2ludDpmdW5jdGlvbihjLGIsYSl7dGhpcy50cmFuc2Zvcm1Qb2ludCgidHJhbnNsYXRlIixudWxsLG51bGwsYyxiLGEpfSx0cmFuc2xhdGVTaGFwZTpmdW5jdGlvbihjLGIpe3ZhciBhPXRoaXMuYW5ub3RhdGlvbi5jaGFydCxkPXRoaXMuYW5ub3RhdGlvbi51c2VyT3B0aW9ucyxrPWEuYW5ub3RhdGlvbnMuaW5kZXhPZih0aGlzLmFubm90YXRpb24pOwphPWEub3B0aW9ucy5hbm5vdGF0aW9uc1trXTt0aGlzLnRyYW5zbGF0ZVBvaW50KGMsYiwwKTthW3RoaXMuY29sbGVjdGlvbl1bdGhpcy5pbmRleF0ucG9pbnQ9dGhpcy5vcHRpb25zLnBvaW50O2RbdGhpcy5jb2xsZWN0aW9uXVt0aGlzLmluZGV4XS5wb2ludD10aGlzLm9wdGlvbnMucG9pbnR9LHJvdGF0ZTpmdW5jdGlvbihjLGIsYSl7dGhpcy50cmFuc2Zvcm0oInJvdGF0ZSIsYyxiLGEpfSxzY2FsZTpmdW5jdGlvbihjLGIsYSxkKXt0aGlzLnRyYW5zZm9ybSgic2NhbGUiLGMsYixhLGQpfSxzZXRDb250cm9sUG9pbnRzVmlzaWJpbGl0eTpmdW5jdGlvbihiKXt0aGlzLmNvbnRyb2xQb2ludHMuZm9yRWFjaChmdW5jdGlvbihjKXtjLnNldFZpc2liaWxpdHkoYil9KX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZ3JhcGhpYyYmKHRoaXMuZ3JhcGhpYz10aGlzLmdyYXBoaWMuZGVzdHJveSgpKTt0aGlzLnRyYWNrZXImJih0aGlzLnRyYWNrZXI9dGhpcy50cmFja2VyLmRlc3Ryb3koKSk7CnRoaXMuY29udHJvbFBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuZGVzdHJveSgpfSk7dGhpcy5vcHRpb25zPXRoaXMuY29udHJvbFBvaW50cz10aGlzLnBvaW50cz10aGlzLmNoYXJ0PW51bGw7dGhpcy5hbm5vdGF0aW9uJiYodGhpcy5hbm5vdGF0aW9uPW51bGwpfSx1cGRhdGU6ZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5hbm5vdGF0aW9uO2I9QSghMCx0aGlzLm9wdGlvbnMsYik7dmFyIGE9dGhpcy5ncmFwaGljLnBhcmVudEdyb3VwO3RoaXMuZGVzdHJveSgpO3RoaXMuY29uc3RydWN0b3IoYyxiKTt0aGlzLnJlbmRlcihhKTt0aGlzLnJlZHJhdygpfX19KTtwKGEsImFubm90YXRpb25zL2NvbnRyb2xsYWJsZS9tYXJrZXJNaXhpbi5qcyIsW2FbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxkKXt2YXIgcT1kLmFkZEV2ZW50LGU9ZC5kZWZpbmVkLHY9ZC5tZXJnZSxiPWQub2JqZWN0RWFjaCxBPWQudW5pcXVlS2V5LHo9e2Fycm93Ont0YWdOYW1lOiJtYXJrZXIiLApyZW5kZXI6ITEsaWQ6ImFycm93IixyZWZZOjUscmVmWDo5LG1hcmtlcldpZHRoOjEwLG1hcmtlckhlaWdodDoxMCxjaGlsZHJlbjpbe3RhZ05hbWU6InBhdGgiLGQ6Ik0gMCAwIEwgMTAgNSBMIDAgMTAgWiIsc3Ryb2tlV2lkdGg6MH1dfSwicmV2ZXJzZS1hcnJvdyI6e3RhZ05hbWU6Im1hcmtlciIscmVuZGVyOiExLGlkOiJyZXZlcnNlLWFycm93IixyZWZZOjUscmVmWDoxLG1hcmtlcldpZHRoOjEwLG1hcmtlckhlaWdodDoxMCxjaGlsZHJlbjpbe3RhZ05hbWU6InBhdGgiLGQ6Ik0gMCA1IEwgMTAgMCBMIDEwIDEwIFoiLHN0cm9rZVdpZHRoOjB9XX19O2EuU1ZHUmVuZGVyZXIucHJvdG90eXBlLmFkZE1hcmtlcj1mdW5jdGlvbihiLGEpe3ZhciBjPXtpZDpifSxkPXtzdHJva2U6YS5jb2xvcnx8Im5vbmUiLGZpbGw6YS5jb2xvcnx8InJnYmEoMCwgMCwgMCwgMC43NSkifTtjLmNoaWxkcmVuPWEuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uKGIpe3JldHVybiB2KGQsYil9KTthPXRoaXMuZGVmaW5pdGlvbih2KCEwLAp7bWFya2VyV2lkdGg6MjAsbWFya2VySGVpZ2h0OjIwLHJlZlg6MCxyZWZZOjAsb3JpZW50OiJhdXRvIn0sYSxjKSk7YS5pZD1iO3JldHVybiBhfTtkPWZ1bmN0aW9uKGIpe3JldHVybiBmdW5jdGlvbihjKXt0aGlzLmF0dHIoYiwidXJsKCMiK2MrIikiKX19O2Q9e21hcmtlckVuZFNldHRlcjpkKCJtYXJrZXItZW5kIiksbWFya2VyU3RhcnRTZXR0ZXI6ZCgibWFya2VyLXN0YXJ0Iiksc2V0SXRlbU1hcmtlcnM6ZnVuY3Rpb24oYil7dmFyIGM9Yi5vcHRpb25zLGE9Yi5jaGFydCxkPWEub3B0aW9ucy5kZWZzLGs9Yy5maWxsLHk9ZShrKSYmIm5vbmUiIT09az9rOmMuc3Ryb2tlO1sibWFya2VyU3RhcnQiLCJtYXJrZXJFbmQiXS5mb3JFYWNoKGZ1bmN0aW9uKGcpe3ZhciBmPWNbZ10saztpZihmKXtmb3IoayBpbiBkKXt2YXIgZT1kW2tdO2lmKGY9PT1lLmlkJiYibWFya2VyIj09PWUudGFnTmFtZSl7dmFyIGw9ZTticmVha319bCYmKGY9YltnXT1hLnJlbmRlcmVyLmFkZE1hcmtlcigoYy5pZHx8CkEoKSkrIi0iK2wuaWQsdihsLHtjb2xvcjp5fSkpLGIuYXR0cihnLGYuYXR0cigiaWQiKSkpfX0pfX07cShhLkNoYXJ0LCJhZnRlckdldENvbnRhaW5lciIsZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuZGVmcz12KHosdGhpcy5vcHRpb25zLmRlZnN8fHt9KTtiKHRoaXMub3B0aW9ucy5kZWZzLGZ1bmN0aW9uKGIpeyJtYXJrZXIiPT09Yi50YWdOYW1lJiYhMSE9PWIucmVuZGVyJiZ0aGlzLnJlbmRlcmVyLmFkZE1hcmtlcihiLmlkLGIpfSx0aGlzKX0pO3JldHVybiBkfSk7cChhLCJhbm5vdGF0aW9ucy9jb250cm9sbGFibGUvQ29udHJvbGxhYmxlUGF0aC5qcyIsW2FbImFubm90YXRpb25zL2NvbnRyb2xsYWJsZS9jb250cm9sbGFibGVNaXhpbi5qcyJdLGFbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJhbm5vdGF0aW9ucy9jb250cm9sbGFibGUvbWFya2VyTWl4aW4uanMiXSxhWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxkLG0sZSl7dmFyIHE9ZS5leHRlbmQ7ZT1lLm1lcmdlOwp2YXIgYj0icmdiYSgxOTIsMTkyLDE5MiwiKyhkLnN2Zz8uMDAwMTouMDAyKSsiKSI7ZD1mdW5jdGlvbihiLGEsYyl7dGhpcy5pbml0KGIsYSxjKTt0aGlzLmNvbGxlY3Rpb249InNoYXBlcyJ9O2QuYXR0cnNNYXA9e2Rhc2hTdHlsZToiZGFzaHN0eWxlIixzdHJva2VXaWR0aDoic3Ryb2tlLXdpZHRoIixzdHJva2U6InN0cm9rZSIsZmlsbDoiZmlsbCIsekluZGV4OiJ6SW5kZXgifTtlKCEwLGQucHJvdG90eXBlLGEse3R5cGU6InBhdGgiLHNldE1hcmtlcnM6bS5zZXRJdGVtTWFya2Vycyx0b0Q6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLm9wdGlvbnMuZDtpZihiKXJldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgYj9iLmNhbGwodGhpcyk6YjtiPXRoaXMucG9pbnRzO3ZhciBhPWIubGVuZ3RoLGM9YSxkPWJbMF0sZT1jJiZ0aGlzLmFuY2hvcihkKS5hYnNvbHV0ZVBvc2l0aW9uLHg9MCxrPVtdO2lmKGUpZm9yKGsucHVzaChbIk0iLGUueCxlLnldKTsrK3g8YSYmYzspZD1iW3hdLGM9ZC5jb21tYW5kfHwKIkwiLGU9dGhpcy5hbmNob3IoZCkuYWJzb2x1dGVQb3NpdGlvbiwiTSI9PT1jP2sucHVzaChbYyxlLngsZS55XSk6IkwiPT09Yz9rLnB1c2goW2MsZS54LGUueV0pOiJaIj09PWMmJmsucHVzaChbY10pLGM9ZC5zZXJpZXMudmlzaWJsZTtyZXR1cm4gYz90aGlzLmNoYXJ0LnJlbmRlcmVyLmNyaXNwTGluZShrLHRoaXMuZ3JhcGhpYy5zdHJva2VXaWR0aCgpKTpudWxsfSxzaG91bGRCZURyYXduOmZ1bmN0aW9uKCl7cmV0dXJuIGEuc2hvdWxkQmVEcmF3bi5jYWxsKHRoaXMpfHwhIXRoaXMub3B0aW9ucy5kfSxyZW5kZXI6ZnVuY3Rpb24oZCl7dmFyIGU9dGhpcy5vcHRpb25zLGM9dGhpcy5hdHRyc0Zyb21PcHRpb25zKGUpO3RoaXMuZ3JhcGhpYz10aGlzLmFubm90YXRpb24uY2hhcnQucmVuZGVyZXIucGF0aChbWyJNIiwwLDBdXSkuYXR0cihjKS5hZGQoZCk7ZS5jbGFzc05hbWUmJnRoaXMuZ3JhcGhpYy5hZGRDbGFzcyhlLmNsYXNzTmFtZSk7dGhpcy50cmFja2VyPXRoaXMuYW5ub3RhdGlvbi5jaGFydC5yZW5kZXJlci5wYXRoKFtbIk0iLAowLDBdXSkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtdHJhY2tlci1saW5lIikuYXR0cih7ekluZGV4OjJ9KS5hZGQoZCk7dGhpcy5hbm5vdGF0aW9uLmNoYXJ0LnN0eWxlZE1vZGV8fHRoaXMudHJhY2tlci5hdHRyKHsic3Ryb2tlLWxpbmVqb2luIjoicm91bmQiLHN0cm9rZTpiLGZpbGw6Yiwic3Ryb2tlLXdpZHRoIjp0aGlzLmdyYXBoaWMuc3Ryb2tlV2lkdGgoKSsyKmUuc25hcH0pO2EucmVuZGVyLmNhbGwodGhpcyk7cSh0aGlzLmdyYXBoaWMse21hcmtlclN0YXJ0U2V0dGVyOm0ubWFya2VyU3RhcnRTZXR0ZXIsbWFya2VyRW5kU2V0dGVyOm0ubWFya2VyRW5kU2V0dGVyfSk7dGhpcy5zZXRNYXJrZXJzKHRoaXMpfSxyZWRyYXc6ZnVuY3Rpb24oYil7dmFyIGQ9dGhpcy50b0QoKSxjPWI/ImFuaW1hdGUiOiJhdHRyIjtkPyh0aGlzLmdyYXBoaWNbY10oe2Q6ZH0pLHRoaXMudHJhY2tlcltjXSh7ZDpkfSkpOih0aGlzLmdyYXBoaWMuYXR0cih7ZDoiTSAwIC05MDAwMDAwMDAwIn0pLHRoaXMudHJhY2tlci5hdHRyKHtkOiJNIDAgLTkwMDAwMDAwMDAifSkpOwp0aGlzLmdyYXBoaWMucGxhY2VkPXRoaXMudHJhY2tlci5wbGFjZWQ9ISFkO2EucmVkcmF3LmNhbGwodGhpcyxiKX19KTtyZXR1cm4gZH0pO3AoYSwiYW5ub3RhdGlvbnMvY29udHJvbGxhYmxlL0NvbnRyb2xsYWJsZVJlY3QuanMiLFthWyJhbm5vdGF0aW9ucy9jb250cm9sbGFibGUvY29udHJvbGxhYmxlTWl4aW4uanMiXSxhWyJhbm5vdGF0aW9ucy9jb250cm9sbGFibGUvQ29udHJvbGxhYmxlUGF0aC5qcyJdLGFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihhLGQsbSl7bT1tLm1lcmdlO3ZhciBlPWZ1bmN0aW9uKGEsYixkKXt0aGlzLmluaXQoYSxiLGQpO3RoaXMuY29sbGVjdGlvbj0ic2hhcGVzIn07ZS5hdHRyc01hcD1tKGQuYXR0cnNNYXAse3dpZHRoOiJ3aWR0aCIsaGVpZ2h0OiJoZWlnaHQifSk7bSghMCxlLnByb3RvdHlwZSxhLHt0eXBlOiJyZWN0Iix0cmFuc2xhdGU6YS50cmFuc2xhdGVTaGFwZSxyZW5kZXI6ZnVuY3Rpb24oZCl7dmFyIGI9dGhpcy5hdHRyc0Zyb21PcHRpb25zKHRoaXMub3B0aW9ucyk7CnRoaXMuZ3JhcGhpYz10aGlzLmFubm90YXRpb24uY2hhcnQucmVuZGVyZXIucmVjdCgwLC05RTksMCwwKS5hdHRyKGIpLmFkZChkKTthLnJlbmRlci5jYWxsKHRoaXMpfSxyZWRyYXc6ZnVuY3Rpb24oZCl7dmFyIGI9dGhpcy5hbmNob3IodGhpcy5wb2ludHNbMF0pLmFic29sdXRlUG9zaXRpb247aWYoYil0aGlzLmdyYXBoaWNbZD8iYW5pbWF0ZSI6ImF0dHIiXSh7eDpiLngseTpiLnksd2lkdGg6dGhpcy5vcHRpb25zLndpZHRoLGhlaWdodDp0aGlzLm9wdGlvbnMuaGVpZ2h0fSk7ZWxzZSB0aGlzLmF0dHIoe3g6MCx5Oi05RTl9KTt0aGlzLmdyYXBoaWMucGxhY2VkPSEhYjthLnJlZHJhdy5jYWxsKHRoaXMsZCl9fSk7cmV0dXJuIGV9KTtwKGEsImFubm90YXRpb25zL2NvbnRyb2xsYWJsZS9Db250cm9sbGFibGVDaXJjbGUuanMiLFthWyJhbm5vdGF0aW9ucy9jb250cm9sbGFibGUvY29udHJvbGxhYmxlTWl4aW4uanMiXSxhWyJhbm5vdGF0aW9ucy9jb250cm9sbGFibGUvQ29udHJvbGxhYmxlUGF0aC5qcyJdLAphWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxkLG0pe209bS5tZXJnZTt2YXIgZT1mdW5jdGlvbihhLGIsZCl7dGhpcy5pbml0KGEsYixkKTt0aGlzLmNvbGxlY3Rpb249InNoYXBlcyJ9O2UuYXR0cnNNYXA9bShkLmF0dHJzTWFwLHtyOiJyIn0pO20oITAsZS5wcm90b3R5cGUsYSx7dHlwZToiY2lyY2xlIix0cmFuc2xhdGU6YS50cmFuc2xhdGVTaGFwZSxyZW5kZXI6ZnVuY3Rpb24oZCl7dmFyIGI9dGhpcy5hdHRyc0Zyb21PcHRpb25zKHRoaXMub3B0aW9ucyk7dGhpcy5ncmFwaGljPXRoaXMuYW5ub3RhdGlvbi5jaGFydC5yZW5kZXJlci5jaXJjbGUoMCwtOUU5LDApLmF0dHIoYikuYWRkKGQpO2EucmVuZGVyLmNhbGwodGhpcyl9LHJlZHJhdzpmdW5jdGlvbihkKXt2YXIgYj10aGlzLmFuY2hvcih0aGlzLnBvaW50c1swXSkuYWJzb2x1dGVQb3NpdGlvbjtpZihiKXRoaXMuZ3JhcGhpY1tkPyJhbmltYXRlIjoiYXR0ciJdKHt4OmIueCx5OmIueSxyOnRoaXMub3B0aW9ucy5yfSk7CmVsc2UgdGhpcy5ncmFwaGljLmF0dHIoe3g6MCx5Oi05RTl9KTt0aGlzLmdyYXBoaWMucGxhY2VkPSEhYjthLnJlZHJhdy5jYWxsKHRoaXMsZCl9LHNldFJhZGl1czpmdW5jdGlvbihhKXt0aGlzLm9wdGlvbnMucj1hfX0pO3JldHVybiBlfSk7cChhLCJhbm5vdGF0aW9ucy9jb250cm9sbGFibGUvQ29udHJvbGxhYmxlTGFiZWwuanMiLFthWyJhbm5vdGF0aW9ucy9jb250cm9sbGFibGUvY29udHJvbGxhYmxlTWl4aW4uanMiXSxhWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYVsiYW5ub3RhdGlvbnMvTW9ja1BvaW50LmpzIl0sYVsicGFydHMvVG9vbHRpcC5qcyJdLGFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihhLGQsbSxlLHYpe3ZhciBiPXYuZXh0ZW5kLHE9di5mb3JtYXQscD12LmlzTnVtYmVyLGM9di5tZXJnZSxoPXYucGljayxyPWZ1bmN0aW9uKGIsYSxjKXt0aGlzLmluaXQoYixhLGMpO3RoaXMuY29sbGVjdGlvbj0ibGFiZWxzIn07ci5zaGFwZXNXaXRob3V0QmFja2dyb3VuZD0KWyJjb25uZWN0b3IiXTtyLmFsaWduZWRQb3NpdGlvbj1mdW5jdGlvbihiLGEpe3ZhciBjPWIuYWxpZ24sZD1iLnZlcnRpY2FsQWxpZ24sZj0oYS54fHwwKSsoYi54fHwwKSxrPShhLnl8fDApKyhiLnl8fDApLGUsbDsicmlnaHQiPT09Yz9lPTE6ImNlbnRlciI9PT1jJiYoZT0yKTtlJiYoZis9KGEud2lkdGgtKGIud2lkdGh8fDApKS9lKTsiYm90dG9tIj09PWQ/bD0xOiJtaWRkbGUiPT09ZCYmKGw9Mik7bCYmKGsrPShhLmhlaWdodC0oYi5oZWlnaHR8fDApKS9sKTtyZXR1cm57eDpNYXRoLnJvdW5kKGYpLHk6TWF0aC5yb3VuZChrKX19O3IuanVzdGlmaWVkT3B0aW9ucz1mdW5jdGlvbihiLGEsYyxkKXt2YXIgZj1jLmFsaWduLGc9Yy52ZXJ0aWNhbEFsaWduLGU9YS5ib3g/MDphLnBhZGRpbmd8fDAsaz1hLmdldEJCb3goKTthPXthbGlnbjpmLHZlcnRpY2FsQWxpZ246Zyx4OmMueCx5OmMueSx3aWR0aDphLndpZHRoLGhlaWdodDphLmhlaWdodH07Yz1kLngtYi5wbG90TGVmdDt2YXIgdD0KZC55LWIucGxvdFRvcDtkPWMrZTswPmQmJigicmlnaHQiPT09Zj9hLmFsaWduPSJsZWZ0IjphLng9LWQpO2Q9YytrLndpZHRoLWU7ZD5iLnBsb3RXaWR0aCYmKCJsZWZ0Ij09PWY/YS5hbGlnbj0icmlnaHQiOmEueD1iLnBsb3RXaWR0aC1kKTtkPXQrZTswPmQmJigiYm90dG9tIj09PWc/YS52ZXJ0aWNhbEFsaWduPSJ0b3AiOmEueT0tZCk7ZD10K2suaGVpZ2h0LWU7ZD5iLnBsb3RIZWlnaHQmJigidG9wIj09PWc/YS52ZXJ0aWNhbEFsaWduPSJib3R0b20iOmEueT1iLnBsb3RIZWlnaHQtZCk7cmV0dXJuIGF9O3IuYXR0cnNNYXA9e2JhY2tncm91bmRDb2xvcjoiZmlsbCIsYm9yZGVyQ29sb3I6InN0cm9rZSIsYm9yZGVyV2lkdGg6InN0cm9rZS13aWR0aCIsekluZGV4OiJ6SW5kZXgiLGJvcmRlclJhZGl1czoiciIscGFkZGluZzoicGFkZGluZyJ9O2MoITAsci5wcm90b3R5cGUsYSx7dHJhbnNsYXRlUG9pbnQ6ZnVuY3Rpb24oYixjKXthLnRyYW5zbGF0ZVBvaW50LmNhbGwodGhpcyxiLApjLDApfSx0cmFuc2xhdGU6ZnVuY3Rpb24oYixhKXt2YXIgYz10aGlzLmFubm90YXRpb24uY2hhcnQsZD10aGlzLmFubm90YXRpb24udXNlck9wdGlvbnMsZj1jLmFubm90YXRpb25zLmluZGV4T2YodGhpcy5hbm5vdGF0aW9uKTtmPWMub3B0aW9ucy5hbm5vdGF0aW9uc1tmXTtjLmludmVydGVkJiYoYz1iLGI9YSxhPWMpO3RoaXMub3B0aW9ucy54Kz1iO3RoaXMub3B0aW9ucy55Kz1hO2ZbdGhpcy5jb2xsZWN0aW9uXVt0aGlzLmluZGV4XS54PXRoaXMub3B0aW9ucy54O2ZbdGhpcy5jb2xsZWN0aW9uXVt0aGlzLmluZGV4XS55PXRoaXMub3B0aW9ucy55O2RbdGhpcy5jb2xsZWN0aW9uXVt0aGlzLmluZGV4XS54PXRoaXMub3B0aW9ucy54O2RbdGhpcy5jb2xsZWN0aW9uXVt0aGlzLmluZGV4XS55PXRoaXMub3B0aW9ucy55fSxyZW5kZXI6ZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5vcHRpb25zLGQ9dGhpcy5hdHRyc0Zyb21PcHRpb25zKGMpLGc9Yy5zdHlsZTt0aGlzLmdyYXBoaWM9dGhpcy5hbm5vdGF0aW9uLmNoYXJ0LnJlbmRlcmVyLmxhYmVsKCIiLAowLC05OTk5LGMuc2hhcGUsbnVsbCxudWxsLGMudXNlSFRNTCxudWxsLCJhbm5vdGF0aW9uLWxhYmVsIikuYXR0cihkKS5hZGQoYik7dGhpcy5hbm5vdGF0aW9uLmNoYXJ0LnN0eWxlZE1vZGV8fCgiY29udHJhc3QiPT09Zy5jb2xvciYmKGcuY29sb3I9dGhpcy5hbm5vdGF0aW9uLmNoYXJ0LnJlbmRlcmVyLmdldENvbnRyYXN0KC0xPHIuc2hhcGVzV2l0aG91dEJhY2tncm91bmQuaW5kZXhPZihjLnNoYXBlKT8iI0ZGRkZGRiI6Yy5iYWNrZ3JvdW5kQ29sb3IpKSx0aGlzLmdyYXBoaWMuY3NzKGMuc3R5bGUpLnNoYWRvdyhjLnNoYWRvdykpO2MuY2xhc3NOYW1lJiZ0aGlzLmdyYXBoaWMuYWRkQ2xhc3MoYy5jbGFzc05hbWUpO3RoaXMuZ3JhcGhpYy5sYWJlbHJhbms9Yy5sYWJlbHJhbms7YS5yZW5kZXIuY2FsbCh0aGlzKX0scmVkcmF3OmZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMub3B0aW9ucyxkPXRoaXMudGV4dHx8Yy5mb3JtYXR8fGMudGV4dCxnPXRoaXMuZ3JhcGhpYyxmPXRoaXMucG9pbnRzWzBdOwpnLmF0dHIoe3RleHQ6ZD9xKGQsZi5nZXRMYWJlbENvbmZpZygpLHRoaXMuYW5ub3RhdGlvbi5jaGFydCk6Yy5mb3JtYXR0ZXIuY2FsbChmLHRoaXMpfSk7Yz10aGlzLmFuY2hvcihmKTsoZD10aGlzLnBvc2l0aW9uKGMpKT8oZy5hbGlnbkF0dHI9ZCxkLmFuY2hvclg9Yy5hYnNvbHV0ZVBvc2l0aW9uLngsZC5hbmNob3JZPWMuYWJzb2x1dGVQb3NpdGlvbi55LGdbYj8iYW5pbWF0ZSI6ImF0dHIiXShkKSk6Zy5hdHRyKHt4OjAseTotOTk5OX0pO2cucGxhY2VkPSEhZDthLnJlZHJhdy5jYWxsKHRoaXMsYil9LGFuY2hvcjpmdW5jdGlvbigpe3ZhciBiPWEuYW5jaG9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxjPXRoaXMub3B0aW9ucy54fHwwLGQ9dGhpcy5vcHRpb25zLnl8fDA7Yi5hYnNvbHV0ZVBvc2l0aW9uLngtPWM7Yi5hYnNvbHV0ZVBvc2l0aW9uLnktPWQ7Yi5yZWxhdGl2ZVBvc2l0aW9uLngtPWM7Yi5yZWxhdGl2ZVBvc2l0aW9uLnktPWQ7cmV0dXJuIGJ9LHBvc2l0aW9uOmZ1bmN0aW9uKGMpe3ZhciBhPQp0aGlzLmdyYXBoaWMsZD10aGlzLmFubm90YXRpb24uY2hhcnQsZz10aGlzLnBvaW50c1swXSxmPXRoaXMub3B0aW9ucyxuPWMuYWJzb2x1dGVQb3NpdGlvbix1PWMucmVsYXRpdmVQb3NpdGlvbjtpZihjPWcuc2VyaWVzLnZpc2libGUmJm0ucHJvdG90eXBlLmlzSW5zaWRlUGxvdC5jYWxsKGcpKXtpZihmLmRpc3RhbmNlKXZhciBsPWUucHJvdG90eXBlLmdldFBvc2l0aW9uLmNhbGwoe2NoYXJ0OmQsZGlzdGFuY2U6aChmLmRpc3RhbmNlLDE2KX0sYS53aWR0aCxhLmhlaWdodCx7cGxvdFg6dS54LHBsb3RZOnUueSxuZWdhdGl2ZTpnLm5lZ2F0aXZlLHR0QmVsb3c6Zy50dEJlbG93LGg6dS5oZWlnaHR8fHUud2lkdGh9KTtlbHNlIGYucG9zaXRpb25lcj9sPWYucG9zaXRpb25lci5jYWxsKHRoaXMpOihnPXt4Om4ueCx5Om4ueSx3aWR0aDowLGhlaWdodDowfSxsPXIuYWxpZ25lZFBvc2l0aW9uKGIoZix7d2lkdGg6YS53aWR0aCxoZWlnaHQ6YS5oZWlnaHR9KSxnKSwianVzdGlmeSI9PT0KdGhpcy5vcHRpb25zLm92ZXJmbG93JiYobD1yLmFsaWduZWRQb3NpdGlvbihyLmp1c3RpZmllZE9wdGlvbnMoZCxhLGYsbCksZykpKTtmLmNyb3AmJihmPWwueC1kLnBsb3RMZWZ0LGc9bC55LWQucGxvdFRvcCxjPWQuaXNJbnNpZGVQbG90KGYsZykmJmQuaXNJbnNpZGVQbG90KGYrYS53aWR0aCxnK2EuaGVpZ2h0KSl9cmV0dXJuIGM/bDpudWxsfX0pO2QuU1ZHUmVuZGVyZXIucHJvdG90eXBlLnN5bWJvbHMuY29ubmVjdG9yPWZ1bmN0aW9uKGIsYyxhLGQsZil7dmFyIGc9ZiYmZi5hbmNob3JYO2Y9ZiYmZi5hbmNob3JZO3ZhciBlPWEvMjtpZihwKGcpJiZwKGYpKXt2YXIgbD1bWyJNIixnLGZdXTt2YXIgdD1jLWY7MD50JiYodD0tZC10KTt0PGEmJihlPWc8YithLzI/dDphLXQpO2Y+YytkP2wucHVzaChbIkwiLGIrZSxjK2RdKTpmPGM/bC5wdXNoKFsiTCIsYitlLGNdKTpnPGI/bC5wdXNoKFsiTCIsYixjK2QvMl0pOmc+YithJiZsLnB1c2goWyJMIixiK2EsYytkLzJdKX1yZXR1cm4gbHx8CltdfTtyZXR1cm4gcn0pO3AoYSwiYW5ub3RhdGlvbnMvY29udHJvbGxhYmxlL0NvbnRyb2xsYWJsZUltYWdlLmpzIixbYVsiYW5ub3RhdGlvbnMvY29udHJvbGxhYmxlL0NvbnRyb2xsYWJsZUxhYmVsLmpzIl0sYVsiYW5ub3RhdGlvbnMvY29udHJvbGxhYmxlL2NvbnRyb2xsYWJsZU1peGluLmpzIl0sYVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGEsZCxtKXttPW0ubWVyZ2U7dmFyIGU9ZnVuY3Rpb24oYSxiLGQpe3RoaXMuaW5pdChhLGIsZCk7dGhpcy5jb2xsZWN0aW9uPSJzaGFwZXMifTtlLmF0dHJzTWFwPXt3aWR0aDoid2lkdGgiLGhlaWdodDoiaGVpZ2h0Iix6SW5kZXg6InpJbmRleCJ9O20oITAsZS5wcm90b3R5cGUsZCx7dHlwZToiaW1hZ2UiLHRyYW5zbGF0ZTpkLnRyYW5zbGF0ZVNoYXBlLHJlbmRlcjpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmF0dHJzRnJvbU9wdGlvbnModGhpcy5vcHRpb25zKSxlPXRoaXMub3B0aW9uczt0aGlzLmdyYXBoaWM9dGhpcy5hbm5vdGF0aW9uLmNoYXJ0LnJlbmRlcmVyLmltYWdlKGUuc3JjLAowLC05RTksZS53aWR0aCxlLmhlaWdodCkuYXR0cihiKS5hZGQoYSk7dGhpcy5ncmFwaGljLndpZHRoPWUud2lkdGg7dGhpcy5ncmFwaGljLmhlaWdodD1lLmhlaWdodDtkLnJlbmRlci5jYWxsKHRoaXMpfSxyZWRyYXc6ZnVuY3Rpb24oZSl7dmFyIGI9dGhpcy5hbmNob3IodGhpcy5wb2ludHNbMF0pO2lmKGI9YS5wcm90b3R5cGUucG9zaXRpb24uY2FsbCh0aGlzLGIpKXRoaXMuZ3JhcGhpY1tlPyJhbmltYXRlIjoiYXR0ciJdKHt4OmIueCx5OmIueX0pO2Vsc2UgdGhpcy5ncmFwaGljLmF0dHIoe3g6MCx5Oi05RTl9KTt0aGlzLmdyYXBoaWMucGxhY2VkPSEhYjtkLnJlZHJhdy5jYWxsKHRoaXMsZSl9fSk7cmV0dXJuIGV9KTtwKGEsImFubm90YXRpb25zL2Fubm90YXRpb25zLnNyYy5qcyIsW2FbInBhcnRzL0NoYXJ0LmpzIl0sYVsiYW5ub3RhdGlvbnMvY29udHJvbGxhYmxlL2NvbnRyb2xsYWJsZU1peGluLmpzIl0sYVsiYW5ub3RhdGlvbnMvY29udHJvbGxhYmxlL0NvbnRyb2xsYWJsZVJlY3QuanMiXSwKYVsiYW5ub3RhdGlvbnMvY29udHJvbGxhYmxlL0NvbnRyb2xsYWJsZUNpcmNsZS5qcyJdLGFbImFubm90YXRpb25zL2NvbnRyb2xsYWJsZS9Db250cm9sbGFibGVQYXRoLmpzIl0sYVsiYW5ub3RhdGlvbnMvY29udHJvbGxhYmxlL0NvbnRyb2xsYWJsZUltYWdlLmpzIl0sYVsiYW5ub3RhdGlvbnMvY29udHJvbGxhYmxlL0NvbnRyb2xsYWJsZUxhYmVsLmpzIl0sYVsiYW5ub3RhdGlvbnMvQ29udHJvbFBvaW50LmpzIl0sYVsiYW5ub3RhdGlvbnMvZXZlbnRFbWl0dGVyTWl4aW4uanMiXSxhWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYVsiYW5ub3RhdGlvbnMvTW9ja1BvaW50LmpzIl0sYVsicGFydHMvUG9pbnRlci5qcyJdLGFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihhLGQsbSxlLHYsYixwLHosYyxoLHIseCxrKXthPWEucHJvdG90eXBlO3ZhciBxPWsuYWRkRXZlbnQsZz1rLmRlZmluZWQsZj1rLmRlc3Ryb3lPYmplY3RQcm9wZXJ0aWVzLG49ay5lcmFzZSx1PWsuZXh0ZW5kLApsPWsuZmluZCx0PWsuZmlyZUV2ZW50LHc9ay5tZXJnZSxDPWsucGljayxEPWsuc3BsYXQ7az1rLndyYXA7dmFyIEI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEsYil7dGhpcy5hbm5vdGF0aW9uPXZvaWQgMDt0aGlzLmNvbGw9ImFubm90YXRpb25zIjt0aGlzLnNoYXBlc0dyb3VwPXRoaXMubGFiZWxzR3JvdXA9dGhpcy5sYWJlbENvbGxlY3Rvcj10aGlzLmdyb3VwPXRoaXMuZ3JhcGhpYz10aGlzLmNvbGxlY3Rpb249dm9pZCAwO3RoaXMuY2hhcnQ9YTt0aGlzLnBvaW50cz1bXTt0aGlzLmNvbnRyb2xQb2ludHM9W107dGhpcy5jb2xsPSJhbm5vdGF0aW9ucyI7dGhpcy5sYWJlbHM9W107dGhpcy5zaGFwZXM9W107dGhpcy5vcHRpb25zPXcodGhpcy5kZWZhdWx0T3B0aW9ucyxiKTt0aGlzLnVzZXJPcHRpb25zPWI7Yj10aGlzLmdldExhYmVsc0FuZFNoYXBlc09wdGlvbnModGhpcy5vcHRpb25zLGIpO3RoaXMub3B0aW9ucy5sYWJlbHM9Yi5sYWJlbHM7dGhpcy5vcHRpb25zLnNoYXBlcz0KYi5zaGFwZXM7dGhpcy5pbml0KGEsdGhpcy5vcHRpb25zKX1hLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7dGhpcy5saW5rUG9pbnRzKCk7dGhpcy5hZGRDb250cm9sUG9pbnRzKCk7dGhpcy5hZGRTaGFwZXMoKTt0aGlzLmFkZExhYmVscygpO3RoaXMuc2V0TGFiZWxDb2xsZWN0b3IoKX07YS5wcm90b3R5cGUuZ2V0TGFiZWxzQW5kU2hhcGVzT3B0aW9ucz1mdW5jdGlvbihhLGIpe3ZhciBjPXt9O1sibGFiZWxzIiwic2hhcGVzIl0uZm9yRWFjaChmdW5jdGlvbihkKXthW2RdJiYoY1tkXT1EKGJbZF0pLm1hcChmdW5jdGlvbihiLGMpe3JldHVybiB3KGFbZF1bY10sYil9KSl9KTtyZXR1cm4gY307YS5wcm90b3R5cGUuYWRkU2hhcGVzPWZ1bmN0aW9uKCl7KHRoaXMub3B0aW9ucy5zaGFwZXN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGEsYil7YT10aGlzLmluaXRTaGFwZShhLGIpO3coITAsdGhpcy5vcHRpb25zLnNoYXBlc1tiXSxhLm9wdGlvbnMpfSx0aGlzKX07YS5wcm90b3R5cGUuYWRkTGFiZWxzPQpmdW5jdGlvbigpeyh0aGlzLm9wdGlvbnMubGFiZWxzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihhLGIpe2E9dGhpcy5pbml0TGFiZWwoYSxiKTt3KCEwLHRoaXMub3B0aW9ucy5sYWJlbHNbYl0sYS5vcHRpb25zKX0sdGhpcyl9O2EucHJvdG90eXBlLmFkZENsaXBQYXRocz1mdW5jdGlvbigpe3RoaXMuc2V0Q2xpcEF4ZXMoKTt0aGlzLmNsaXBYQXhpcyYmdGhpcy5jbGlwWUF4aXMmJih0aGlzLmNsaXBSZWN0PXRoaXMuY2hhcnQucmVuZGVyZXIuY2xpcFJlY3QodGhpcy5nZXRDbGlwQm94KCkpKX07YS5wcm90b3R5cGUuc2V0Q2xpcEF4ZXM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNoYXJ0LnhBeGlzLGI9dGhpcy5jaGFydC55QXhpcyxjPSh0aGlzLm9wdGlvbnMubGFiZWxzfHxbXSkuY29uY2F0KHRoaXMub3B0aW9ucy5zaGFwZXN8fFtdKS5yZWR1Y2UoZnVuY3Rpb24oYyxkKXtyZXR1cm5bYVtkJiZkLnBvaW50JiZkLnBvaW50LnhBeGlzXXx8Y1swXSxiW2QmJmQucG9pbnQmJmQucG9pbnQueUF4aXNdfHwKY1sxXV19LFtdKTt0aGlzLmNsaXBYQXhpcz1jWzBdO3RoaXMuY2xpcFlBeGlzPWNbMV19O2EucHJvdG90eXBlLmdldENsaXBCb3g9ZnVuY3Rpb24oKXtpZih0aGlzLmNsaXBYQXhpcyYmdGhpcy5jbGlwWUF4aXMpcmV0dXJue3g6dGhpcy5jbGlwWEF4aXMubGVmdCx5OnRoaXMuY2xpcFlBeGlzLnRvcCx3aWR0aDp0aGlzLmNsaXBYQXhpcy53aWR0aCxoZWlnaHQ6dGhpcy5jbGlwWUF4aXMuaGVpZ2h0fX07YS5wcm90b3R5cGUuc2V0TGFiZWxDb2xsZWN0b3I9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO2EubGFiZWxDb2xsZWN0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gYS5sYWJlbHMucmVkdWNlKGZ1bmN0aW9uKGEsYil7Yi5vcHRpb25zLmFsbG93T3ZlcmxhcHx8YS5wdXNoKGIuZ3JhcGhpYyk7cmV0dXJuIGF9LFtdKX07YS5jaGFydC5sYWJlbENvbGxlY3RvcnMucHVzaChhLmxhYmVsQ29sbGVjdG9yKX07YS5wcm90b3R5cGUuc2V0T3B0aW9ucz1mdW5jdGlvbihhKXt0aGlzLm9wdGlvbnM9dyh0aGlzLmRlZmF1bHRPcHRpb25zLAphKX07YS5wcm90b3R5cGUucmVkcmF3PWZ1bmN0aW9uKGEpe3RoaXMubGlua1BvaW50cygpO3RoaXMuZ3JhcGhpY3x8dGhpcy5yZW5kZXIoKTt0aGlzLmNsaXBSZWN0JiZ0aGlzLmNsaXBSZWN0LmFuaW1hdGUodGhpcy5nZXRDbGlwQm94KCkpO3RoaXMucmVkcmF3SXRlbXModGhpcy5zaGFwZXMsYSk7dGhpcy5yZWRyYXdJdGVtcyh0aGlzLmxhYmVscyxhKTtkLnJlZHJhdy5jYWxsKHRoaXMsYSl9O2EucHJvdG90eXBlLnJlZHJhd0l0ZW1zPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPWEubGVuZ3RoO2MtLTspdGhpcy5yZWRyYXdJdGVtKGFbY10sYil9O2EucHJvdG90eXBlLnJlbmRlckl0ZW1zPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1hLmxlbmd0aDtiLS07KXRoaXMucmVuZGVySXRlbShhW2JdKX07YS5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jaGFydC5yZW5kZXJlcjt0aGlzLmdyYXBoaWM9YS5nKCJhbm5vdGF0aW9uIikuYXR0cih7ekluZGV4OnRoaXMub3B0aW9ucy56SW5kZXgsCnZpc2liaWxpdHk6dGhpcy5vcHRpb25zLnZpc2libGU/InZpc2libGUiOiJoaWRkZW4ifSkuYWRkKCk7dGhpcy5zaGFwZXNHcm91cD1hLmcoImFubm90YXRpb24tc2hhcGVzIikuYWRkKHRoaXMuZ3JhcGhpYykuY2xpcCh0aGlzLmNoYXJ0LnBsb3RCb3hDbGlwKTt0aGlzLmxhYmVsc0dyb3VwPWEuZygiYW5ub3RhdGlvbi1sYWJlbHMiKS5hdHRyKHt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowfSkuYWRkKHRoaXMuZ3JhcGhpYyk7dGhpcy5hZGRDbGlwUGF0aHMoKTt0aGlzLmNsaXBSZWN0JiZ0aGlzLmdyYXBoaWMuY2xpcCh0aGlzLmNsaXBSZWN0KTt0aGlzLnJlbmRlckl0ZW1zKHRoaXMuc2hhcGVzKTt0aGlzLnJlbmRlckl0ZW1zKHRoaXMubGFiZWxzKTt0aGlzLmFkZEV2ZW50cygpO2QucmVuZGVyLmNhbGwodGhpcyl9O2EucHJvdG90eXBlLnNldFZpc2liaWxpdHk9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5vcHRpb25zO2E9QyhhLCFiLnZpc2libGUpO3RoaXMuZ3JhcGhpYy5hdHRyKCJ2aXNpYmlsaXR5IiwKYT8idmlzaWJsZSI6ImhpZGRlbiIpO2F8fHRoaXMuc2V0Q29udHJvbFBvaW50c1Zpc2liaWxpdHkoITEpO2IudmlzaWJsZT1hfTthLnByb3RvdHlwZS5zZXRDb250cm9sUG9pbnRzVmlzaWJpbGl0eT1mdW5jdGlvbihhKXt2YXIgYj1mdW5jdGlvbihiKXtiLnNldENvbnRyb2xQb2ludHNWaXNpYmlsaXR5KGEpfTtkLnNldENvbnRyb2xQb2ludHNWaXNpYmlsaXR5LmNhbGwodGhpcyxhKTt0aGlzLnNoYXBlcy5mb3JFYWNoKGIpO3RoaXMubGFiZWxzLmZvckVhY2goYil9O2EucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNoYXJ0LGI9ZnVuY3Rpb24oYSl7YS5kZXN0cm95KCl9O3RoaXMubGFiZWxzLmZvckVhY2goYik7dGhpcy5zaGFwZXMuZm9yRWFjaChiKTt0aGlzLmNsaXBZQXhpcz10aGlzLmNsaXBYQXhpcz1udWxsO24oYS5sYWJlbENvbGxlY3RvcnMsdGhpcy5sYWJlbENvbGxlY3Rvcik7Yy5kZXN0cm95LmNhbGwodGhpcyk7ZC5kZXN0cm95LmNhbGwodGhpcyk7CmYodGhpcyxhKX07YS5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hhcnQucmVtb3ZlQW5ub3RhdGlvbih0aGlzKX07YS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jaGFydCxkPXRoaXMuZ2V0TGFiZWxzQW5kU2hhcGVzT3B0aW9ucyh0aGlzLnVzZXJPcHRpb25zLGEpLGY9Yy5hbm5vdGF0aW9ucy5pbmRleE9mKHRoaXMpO2E9dyghMCx0aGlzLnVzZXJPcHRpb25zLGEpO2EubGFiZWxzPWQubGFiZWxzO2Euc2hhcGVzPWQuc2hhcGVzO3RoaXMuZGVzdHJveSgpO3RoaXMuY29uc3RydWN0b3IoYyxhKTtjLm9wdGlvbnMuYW5ub3RhdGlvbnNbZl09YTt0aGlzLmlzVXBkYXRpbmc9ITA7QyhiLCEwKSYmYy5yZWRyYXcoKTt0KHRoaXMsImFmdGVyVXBkYXRlIik7dGhpcy5pc1VwZGF0aW5nPSExfTthLnByb3RvdHlwZS5pbml0U2hhcGU9ZnVuY3Rpb24oYixjKXtiPXcodGhpcy5vcHRpb25zLnNoYXBlT3B0aW9ucyx7Y29udHJvbFBvaW50T3B0aW9uczp0aGlzLm9wdGlvbnMuY29udHJvbFBvaW50T3B0aW9uc30sCmIpO2M9bmV3IGEuc2hhcGVzTWFwW2IudHlwZV0odGhpcyxiLGMpO2MuaXRlbVR5cGU9InNoYXBlIjt0aGlzLnNoYXBlcy5wdXNoKGMpO3JldHVybiBjfTthLnByb3RvdHlwZS5pbml0TGFiZWw9ZnVuY3Rpb24oYSxiKXthPXcodGhpcy5vcHRpb25zLmxhYmVsT3B0aW9ucyx7Y29udHJvbFBvaW50T3B0aW9uczp0aGlzLm9wdGlvbnMuY29udHJvbFBvaW50T3B0aW9uc30sYSk7Yj1uZXcgcCh0aGlzLGEsYik7Yi5pdGVtVHlwZT0ibGFiZWwiO3RoaXMubGFiZWxzLnB1c2goYik7cmV0dXJuIGJ9O2EucHJvdG90eXBlLnJlZHJhd0l0ZW09ZnVuY3Rpb24oYSxiKXthLmxpbmtQb2ludHMoKTthLnNob3VsZEJlRHJhd24oKT8oYS5ncmFwaGljfHx0aGlzLnJlbmRlckl0ZW0oYSksYS5yZWRyYXcoQyhiLCEwKSYmYS5ncmFwaGljLnBsYWNlZCksYS5wb2ludHMubGVuZ3RoJiZ0aGlzLmFkanVzdFZpc2liaWxpdHkoYSkpOnRoaXMuZGVzdHJveUl0ZW0oYSl9O2EucHJvdG90eXBlLmFkanVzdFZpc2liaWxpdHk9CmZ1bmN0aW9uKGEpe3ZhciBiPSExLGM9YS5ncmFwaGljO2EucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYSl7ITEhPT1hLnNlcmllcy52aXNpYmxlJiYhMSE9PWEudmlzaWJsZSYmKGI9ITApfSk7Yj8iaGlkZGVuIj09PWMudmlzaWJpbGl0eSYmYy5zaG93KCk6Yy5oaWRlKCl9O2EucHJvdG90eXBlLmRlc3Ryb3lJdGVtPWZ1bmN0aW9uKGEpe24odGhpc1thLml0ZW1UeXBlKyJzIl0sYSk7YS5kZXN0cm95KCl9O2EucHJvdG90eXBlLnJlbmRlckl0ZW09ZnVuY3Rpb24oYSl7YS5yZW5kZXIoImxhYmVsIj09PWEuaXRlbVR5cGU/dGhpcy5sYWJlbHNHcm91cDp0aGlzLnNoYXBlc0dyb3VwKX07YS5Db250cm9sUG9pbnQ9ejthLk1vY2tQb2ludD1yO2Euc2hhcGVzTWFwPXtyZWN0Om0sY2lyY2xlOmUscGF0aDp2LGltYWdlOmJ9O2EudHlwZXM9e307cmV0dXJuIGF9KCk7dyghMCxCLnByb3RvdHlwZSxkLGMsdyhCLnByb3RvdHlwZSx7bm9uRE9NRXZlbnRzOlsiYWRkIiwiYWZ0ZXJVcGRhdGUiLAoiZHJhZyIsInJlbW92ZSJdLGRlZmF1bHRPcHRpb25zOnt2aXNpYmxlOiEwLGRyYWdnYWJsZToieHkiLGxhYmVsT3B0aW9uczp7YWxpZ246ImNlbnRlciIsYWxsb3dPdmVybGFwOiExLGJhY2tncm91bmRDb2xvcjoicmdiYSgwLCAwLCAwLCAwLjc1KSIsYm9yZGVyQ29sb3I6ImJsYWNrIixib3JkZXJSYWRpdXM6Myxib3JkZXJXaWR0aDoxLGNsYXNzTmFtZToiIixjcm9wOiExLGZvcm1hdHRlcjpmdW5jdGlvbigpe3JldHVybiBnKHRoaXMueSk/dGhpcy55OiJBbm5vdGF0aW9uIGxhYmVsIn0sb3ZlcmZsb3c6Imp1c3RpZnkiLHBhZGRpbmc6NSxzaGFkb3c6ITEsc2hhcGU6ImNhbGxvdXQiLHN0eWxlOntmb250U2l6ZToiMTFweCIsZm9udFdlaWdodDoibm9ybWFsIixjb2xvcjoiY29udHJhc3QifSx1c2VIVE1MOiExLHZlcnRpY2FsQWxpZ246ImJvdHRvbSIseDowLHk6LTE2fSxzaGFwZU9wdGlvbnM6e3N0cm9rZToicmdiYSgwLCAwLCAwLCAwLjc1KSIsc3Ryb2tlV2lkdGg6MSxmaWxsOiJyZ2JhKDAsIDAsIDAsIDAuNzUpIiwKcjowLHNuYXA6Mn0sY29udHJvbFBvaW50T3B0aW9uczp7c3ltYm9sOiJjaXJjbGUiLHdpZHRoOjEwLGhlaWdodDoxMCxzdHlsZTp7c3Ryb2tlOiJibGFjayIsInN0cm9rZS13aWR0aCI6MixmaWxsOiJ3aGl0ZSJ9LHZpc2libGU6ITEsZXZlbnRzOnt9fSxldmVudHM6e30sekluZGV4OjZ9fSkpO2guZXh0ZW5kQW5ub3RhdGlvbj1mdW5jdGlvbihhLGIsYyxkKXtiPWJ8fEI7dyghMCxhLnByb3RvdHlwZSxiLnByb3RvdHlwZSxjKTthLnByb3RvdHlwZS5kZWZhdWx0T3B0aW9ucz13KGEucHJvdG90eXBlLmRlZmF1bHRPcHRpb25zLGR8fHt9KX07dShhLHtpbml0QW5ub3RhdGlvbjpmdW5jdGlvbihhKXthPW5ldyAoQi50eXBlc1thLnR5cGVdfHxCKSh0aGlzLGEpO3RoaXMuYW5ub3RhdGlvbnMucHVzaChhKTtyZXR1cm4gYX0sYWRkQW5ub3RhdGlvbjpmdW5jdGlvbihhLGIpe2E9dGhpcy5pbml0QW5ub3RhdGlvbihhKTt0aGlzLm9wdGlvbnMuYW5ub3RhdGlvbnMucHVzaChhLm9wdGlvbnMpOwpDKGIsITApJiZhLnJlZHJhdygpO3JldHVybiBhfSxyZW1vdmVBbm5vdGF0aW9uOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuYW5ub3RhdGlvbnMsYz0iYW5ub3RhdGlvbnMiPT09YS5jb2xsP2E6bChiLGZ1bmN0aW9uKGIpe3JldHVybiBiLm9wdGlvbnMuaWQ9PT1hfSk7YyYmKHQoYywicmVtb3ZlIiksbih0aGlzLm9wdGlvbnMuYW5ub3RhdGlvbnMsYy5vcHRpb25zKSxuKGIsYyksYy5kZXN0cm95KCkpfSxkcmF3QW5ub3RhdGlvbnM6ZnVuY3Rpb24oKXt0aGlzLnBsb3RCb3hDbGlwLmF0dHIodGhpcy5wbG90Qm94KTt0aGlzLmFubm90YXRpb25zLmZvckVhY2goZnVuY3Rpb24oYSl7YS5yZWRyYXcoKX0pfX0pO2EuY29sbGVjdGlvbnNXaXRoVXBkYXRlLnB1c2goImFubm90YXRpb25zIik7YS5jb2xsZWN0aW9uc1dpdGhJbml0LmFubm90YXRpb25zPVthLmFkZEFubm90YXRpb25dO2EuY2FsbGJhY2tzLnB1c2goZnVuY3Rpb24oYSl7YS5hbm5vdGF0aW9ucz1bXTthLm9wdGlvbnMuYW5ub3RhdGlvbnN8fAooYS5vcHRpb25zLmFubm90YXRpb25zPVtdKTthLnBsb3RCb3hDbGlwPXRoaXMucmVuZGVyZXIuY2xpcFJlY3QodGhpcy5wbG90Qm94KTthLmNvbnRyb2xQb2ludHNHcm91cD1hLnJlbmRlcmVyLmcoImNvbnRyb2wtcG9pbnRzIikuYXR0cih7ekluZGV4Ojk5fSkuY2xpcChhLnBsb3RCb3hDbGlwKS5hZGQoKTthLm9wdGlvbnMuYW5ub3RhdGlvbnMuZm9yRWFjaChmdW5jdGlvbihiLGMpe2I9YS5pbml0QW5ub3RhdGlvbihiKTthLm9wdGlvbnMuYW5ub3RhdGlvbnNbY109Yi5vcHRpb25zfSk7YS5kcmF3QW5ub3RhdGlvbnMoKTtxKGEsInJlZHJhdyIsYS5kcmF3QW5ub3RhdGlvbnMpO3EoYSwiZGVzdHJveSIsZnVuY3Rpb24oKXthLnBsb3RCb3hDbGlwLmRlc3Ryb3koKTthLmNvbnRyb2xQb2ludHNHcm91cC5kZXN0cm95KCl9KX0pO2soeC5wcm90b3R5cGUsIm9uQ29udGFpbmVyTW91c2VEb3duIixmdW5jdGlvbihhKXt0aGlzLmNoYXJ0Lmhhc0RyYWdnZWRBbm5vdGF0aW9ufHxhLmFwcGx5KHRoaXMsCkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9KTtyZXR1cm4gaC5Bbm5vdGF0aW9uPUJ9KTtwKGEsIm1peGlucy9uYXZpZ2F0aW9uLmpzIixbXSxmdW5jdGlvbigpe3JldHVybntpbml0VXBkYXRlOmZ1bmN0aW9uKGEpe2EubmF2aWdhdGlvbnx8KGEubmF2aWdhdGlvbj17dXBkYXRlczpbXSx1cGRhdGU6ZnVuY3Rpb24oYSxtKXt0aGlzLnVwZGF0ZXMuZm9yRWFjaChmdW5jdGlvbihkKXtkLnVwZGF0ZS5jYWxsKGQuY29udGV4dCxhLG0pfSl9fSl9LGFkZFVwZGF0ZTpmdW5jdGlvbihhLGQpe2QubmF2aWdhdGlvbnx8dGhpcy5pbml0VXBkYXRlKGQpO2QubmF2aWdhdGlvbi51cGRhdGVzLnB1c2goe3VwZGF0ZTphLGNvbnRleHQ6ZH0pfX19KTtwKGEsImFubm90YXRpb25zL25hdmlnYXRpb25CaW5kaW5ncy5qcyIsW2FbImFubm90YXRpb25zL2Fubm90YXRpb25zLnNyYy5qcyJdLGFbIm1peGlucy9uYXZpZ2F0aW9uLmpzIl0sYVsicGFydHMvR2xvYmFscy5qcyJdLAphWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxkLG0sZSl7ZnVuY3Rpb24gcShhKXt2YXIgYj1hLnByb3RvdHlwZS5kZWZhdWx0T3B0aW9ucy5ldmVudHMmJmEucHJvdG90eXBlLmRlZmF1bHRPcHRpb25zLmV2ZW50cy5jbGljazt5KCEwLGEucHJvdG90eXBlLmRlZmF1bHRPcHRpb25zLmV2ZW50cyx7Y2xpY2s6ZnVuY3Rpb24oYSl7dmFyIGQ9dGhpcyxmPWQuY2hhcnQubmF2aWdhdGlvbkJpbmRpbmdzLGc9Zi5hY3RpdmVBbm5vdGF0aW9uO2ImJmIuY2FsbChkLGEpO2chPT1kPyhmLmRlc2VsZWN0QW5ub3RhdGlvbigpLGYuYWN0aXZlQW5ub3RhdGlvbj1kLGQuc2V0Q29udHJvbFBvaW50c1Zpc2liaWxpdHkoITApLGMoZiwic2hvd1BvcHVwIix7YW5ub3RhdGlvbjpkLGZvcm1UeXBlOiJhbm5vdGF0aW9uLXRvb2xiYXIiLG9wdGlvbnM6Zi5hbm5vdGF0aW9uVG9GaWVsZHMoZCksb25TdWJtaXQ6ZnVuY3Rpb24oYSl7dmFyIGI9e307InJlbW92ZSI9PT1hLmFjdGlvblR5cGU/CihmLmFjdGl2ZUFubm90YXRpb249ITEsZi5jaGFydC5yZW1vdmVBbm5vdGF0aW9uKGQpKTooZi5maWVsZHNUb09wdGlvbnMoYS5maWVsZHMsYiksZi5kZXNlbGVjdEFubm90YXRpb24oKSxhPWIudHlwZU9wdGlvbnMsIm1lYXN1cmUiPT09ZC5vcHRpb25zLnR5cGUmJihhLmNyb3NzaGFpclkuZW5hYmxlZD0wIT09YS5jcm9zc2hhaXJZLnN0cm9rZVdpZHRoLGEuY3Jvc3NoYWlyWC5lbmFibGVkPTAhPT1hLmNyb3NzaGFpclguc3Ryb2tlV2lkdGgpLGQudXBkYXRlKGIpKX19KSk6KGYuZGVzZWxlY3RBbm5vdGF0aW9uKCksYyhmLCJjbG9zZVBvcHVwIikpO2EuYWN0aXZlQW5ub3RhdGlvbj0hMH19KX12YXIgYj1lLmFkZEV2ZW50LHA9ZS5hdHRyLHo9ZS5mb3JtYXQsYz1lLmZpcmVFdmVudCxoPWUuaXNBcnJheSxyPWUuaXNGdW5jdGlvbix4PWUuaXNOdW1iZXIsaz1lLmlzT2JqZWN0LHk9ZS5tZXJnZSxnPWUub2JqZWN0RWFjaCxmPWUucGljaztlPWUuc2V0T3B0aW9uczt2YXIgbj1tLmRvYywKdT1tLndpbixsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhLGIpe3RoaXMuc2VsZWN0ZWRCdXR0b249dGhpcy5ib3VuZENsYXNzTmFtZXM9dm9pZCAwO3RoaXMuY2hhcnQ9YTt0aGlzLm9wdGlvbnM9Yjt0aGlzLmV2ZW50c1RvVW5iaW5kPVtdO3RoaXMuY29udGFpbmVyPW4uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSh0aGlzLm9wdGlvbnMuYmluZGluZ3NDbGFzc05hbWV8fCIiKX1hLnByb3RvdHlwZS5pbml0RXZlbnRzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxjPWEuY2hhcnQsZD1hLmNvbnRhaW5lcixmPWEub3B0aW9uczthLmJvdW5kQ2xhc3NOYW1lcz17fTtnKGYuYmluZGluZ3N8fHt9LGZ1bmN0aW9uKGIpe2EuYm91bmRDbGFzc05hbWVzW2IuY2xhc3NOYW1lXT1ifSk7W10uZm9yRWFjaC5jYWxsKGQsZnVuY3Rpb24oYyl7YS5ldmVudHNUb1VuYmluZC5wdXNoKGIoYywiY2xpY2siLGZ1bmN0aW9uKGIpe3ZhciBkPWEuZ2V0QnV0dG9uRXZlbnRzKGMsYik7ZCYmYS5iaW5kaW5nc0J1dHRvbkNsaWNrKGQuYnV0dG9uLApkLmV2ZW50cyxiKX0pKX0pO2coZi5ldmVudHN8fHt9LGZ1bmN0aW9uKGMsZCl7cihjKSYmYS5ldmVudHNUb1VuYmluZC5wdXNoKGIoYSxkLGMpKX0pO2EuZXZlbnRzVG9VbmJpbmQucHVzaChiKGMuY29udGFpbmVyLCJjbGljayIsZnVuY3Rpb24oYil7IWMuY2FuY2VsQ2xpY2smJmMuaXNJbnNpZGVQbG90KGIuY2hhcnRYLWMucGxvdExlZnQsYi5jaGFydFktYy5wbG90VG9wKSYmYS5iaW5kaW5nc0NoYXJ0Q2xpY2sodGhpcyxiKX0pKTthLmV2ZW50c1RvVW5iaW5kLnB1c2goYihjLmNvbnRhaW5lcixtLmlzVG91Y2hEZXZpY2U/InRvdWNobW92ZSI6Im1vdXNlbW92ZSIsZnVuY3Rpb24oYil7YS5iaW5kaW5nc0NvbnRhaW5lck1vdXNlTW92ZSh0aGlzLGIpfSkpfTthLnByb3RvdHlwZS5pbml0VXBkYXRlPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcztkLmFkZFVwZGF0ZShmdW5jdGlvbihiKXthLnVwZGF0ZShiKX0sdGhpcy5jaGFydCl9O2EucHJvdG90eXBlLmJpbmRpbmdzQnV0dG9uQ2xpY2s9CmZ1bmN0aW9uKGEsYixkKXt2YXIgZj10aGlzLmNoYXJ0O3RoaXMuc2VsZWN0ZWRCdXR0b25FbGVtZW50JiYoYyh0aGlzLCJkZXNlbGVjdEJ1dHRvbiIse2J1dHRvbjp0aGlzLnNlbGVjdGVkQnV0dG9uRWxlbWVudH0pLHRoaXMubmV4dEV2ZW50JiYodGhpcy5jdXJyZW50VXNlckRldGFpbHMmJiJhbm5vdGF0aW9ucyI9PT10aGlzLmN1cnJlbnRVc2VyRGV0YWlscy5jb2xsJiZmLnJlbW92ZUFubm90YXRpb24odGhpcy5jdXJyZW50VXNlckRldGFpbHMpLHRoaXMubW91c2VNb3ZlRXZlbnQ9dGhpcy5uZXh0RXZlbnQ9ITEpKTt0aGlzLnNlbGVjdGVkQnV0dG9uPWI7dGhpcy5zZWxlY3RlZEJ1dHRvbkVsZW1lbnQ9YTtjKHRoaXMsInNlbGVjdEJ1dHRvbiIse2J1dHRvbjphfSk7Yi5pbml0JiZiLmluaXQuY2FsbCh0aGlzLGEsZCk7KGIuc3RhcnR8fGIuc3RlcHMpJiZmLnJlbmRlcmVyLmJveFdyYXBwZXIuYWRkQ2xhc3MoImhpZ2hjaGFydHMtZHJhdy1tb2RlIil9O2EucHJvdG90eXBlLmJpbmRpbmdzQ2hhcnRDbGljaz0KZnVuY3Rpb24oYSxiKXthPXRoaXMuY2hhcnQ7dmFyIGQ9dGhpcy5zZWxlY3RlZEJ1dHRvbjthPWEucmVuZGVyZXIuYm94V3JhcHBlcjt2YXIgZjtpZihmPXRoaXMuYWN0aXZlQW5ub3RhdGlvbiYmIWIuYWN0aXZlQW5ub3RhdGlvbiYmYi50YXJnZXQucGFyZW50Tm9kZSl7YTp7Zj1iLnRhcmdldDt2YXIgZz11LkVsZW1lbnQucHJvdG90eXBlLGU9Zy5tYXRjaGVzfHxnLm1zTWF0Y2hlc1NlbGVjdG9yfHxnLndlYmtpdE1hdGNoZXNTZWxlY3Rvcix0PW51bGw7aWYoZy5jbG9zZXN0KXQ9Zy5jbG9zZXN0LmNhbGwoZiwiLmhpZ2hjaGFydHMtcG9wdXAiKTtlbHNle2Rve2lmKGUuY2FsbChmLCIuaGlnaGNoYXJ0cy1wb3B1cCIpKWJyZWFrIGE7Zj1mLnBhcmVudEVsZW1lbnR8fGYucGFyZW50Tm9kZX13aGlsZShudWxsIT09ZiYmMT09PWYubm9kZVR5cGUpfWY9dH1mPSFmfWYmJihjKHRoaXMsImNsb3NlUG9wdXAiKSx0aGlzLmRlc2VsZWN0QW5ub3RhdGlvbigpKTtkJiZkLnN0YXJ0JiYodGhpcy5uZXh0RXZlbnQ/Cih0aGlzLm5leHRFdmVudChiLHRoaXMuY3VycmVudFVzZXJEZXRhaWxzKSx0aGlzLnN0ZXBzJiYodGhpcy5zdGVwSW5kZXgrKyxkLnN0ZXBzW3RoaXMuc3RlcEluZGV4XT90aGlzLm1vdXNlTW92ZUV2ZW50PXRoaXMubmV4dEV2ZW50PWQuc3RlcHNbdGhpcy5zdGVwSW5kZXhdOihjKHRoaXMsImRlc2VsZWN0QnV0dG9uIix7YnV0dG9uOnRoaXMuc2VsZWN0ZWRCdXR0b25FbGVtZW50fSksYS5yZW1vdmVDbGFzcygiaGlnaGNoYXJ0cy1kcmF3LW1vZGUiKSxkLmVuZCYmZC5lbmQuY2FsbCh0aGlzLGIsdGhpcy5jdXJyZW50VXNlckRldGFpbHMpLHRoaXMubW91c2VNb3ZlRXZlbnQ9dGhpcy5uZXh0RXZlbnQ9ITEsdGhpcy5zZWxlY3RlZEJ1dHRvbj1udWxsKSkpOih0aGlzLmN1cnJlbnRVc2VyRGV0YWlscz1kLnN0YXJ0LmNhbGwodGhpcyxiKSxkLnN0ZXBzPyh0aGlzLnN0ZXBJbmRleD0wLHRoaXMuc3RlcHM9ITAsdGhpcy5tb3VzZU1vdmVFdmVudD10aGlzLm5leHRFdmVudD1kLnN0ZXBzW3RoaXMuc3RlcEluZGV4XSk6CihjKHRoaXMsImRlc2VsZWN0QnV0dG9uIix7YnV0dG9uOnRoaXMuc2VsZWN0ZWRCdXR0b25FbGVtZW50fSksYS5yZW1vdmVDbGFzcygiaGlnaGNoYXJ0cy1kcmF3LW1vZGUiKSx0aGlzLnN0ZXBzPSExLHRoaXMuc2VsZWN0ZWRCdXR0b249bnVsbCxkLmVuZCYmZC5lbmQuY2FsbCh0aGlzLGIsdGhpcy5jdXJyZW50VXNlckRldGFpbHMpKSkpfTthLnByb3RvdHlwZS5iaW5kaW5nc0NvbnRhaW5lck1vdXNlTW92ZT1mdW5jdGlvbihhLGIpe3RoaXMubW91c2VNb3ZlRXZlbnQmJnRoaXMubW91c2VNb3ZlRXZlbnQoYix0aGlzLmN1cnJlbnRVc2VyRGV0YWlscyl9O2EucHJvdG90eXBlLmZpZWxkc1RvT3B0aW9ucz1mdW5jdGlvbihhLGIpe2coYSxmdW5jdGlvbihhLGMpe3ZhciBkPXBhcnNlRmxvYXQoYSksZz1jLnNwbGl0KCIuIiksZT1iLHQ9Zy5sZW5ndGgtMTsheChkKXx8YS5tYXRjaCgvcHgvZyl8fGMubWF0Y2goL2Zvcm1hdC9nKXx8KGE9ZCk7IiIhPT1hJiYidW5kZWZpbmVkIiE9PWEmJgpnLmZvckVhY2goZnVuY3Rpb24oYixjKXt2YXIgZD1mKGdbYysxXSwiIik7dD09PWM/ZVtiXT1hOihlW2JdfHwoZVtiXT1kLm1hdGNoKC9cZC9nKT9bXTp7fSksZT1lW2JdKX0pfSk7cmV0dXJuIGJ9O2EucHJvdG90eXBlLmRlc2VsZWN0QW5ub3RhdGlvbj1mdW5jdGlvbigpe3RoaXMuYWN0aXZlQW5ub3RhdGlvbiYmKHRoaXMuYWN0aXZlQW5ub3RhdGlvbi5zZXRDb250cm9sUG9pbnRzVmlzaWJpbGl0eSghMSksdGhpcy5hY3RpdmVBbm5vdGF0aW9uPSExKX07YS5wcm90b3R5cGUuYW5ub3RhdGlvblRvRmllbGRzPWZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGMoYSxkLGYsZSl7aWYoZiYmLTE9PT13LmluZGV4T2YoZCkmJigwPD0oZi5pbmRleE9mJiZmLmluZGV4T2YoZCkpfHxmW2RdfHwhMD09PWYpKWlmKGgoYSkpZVtkXT1bXSxhLmZvckVhY2goZnVuY3Rpb24oYSxiKXtrKGEpPyhlW2RdW2JdPXt9LGcoYSxmdW5jdGlvbihhLGYpe2MoYSxmLHRbZF0sZVtkXVtiXSl9KSk6YyhhLDAsdFtkXSwKZVtkXSl9KTtlbHNlIGlmKGsoYSkpe3ZhciBuPXt9O2goZSk/KGUucHVzaChuKSxuW2RdPXt9LG49bltkXSk6ZVtkXT1uO2coYSxmdW5jdGlvbihhLGIpe2MoYSxiLDA9PT1kP2Y6dFtkXSxuKX0pfWVsc2UiZm9ybWF0Ij09PWQ/ZVtkXT1beihhLGIubGFiZWxzWzBdLnBvaW50c1swXSkudG9TdHJpbmcoKSwidGV4dCJdOmgoZSk/ZS5wdXNoKFthLGwoYSldKTplW2RdPVthLGwoYSldfXZhciBkPWIub3B0aW9ucyxlPWEuYW5ub3RhdGlvbnNFZGl0YWJsZSx0PWUubmVzdGVkT3B0aW9ucyxsPXRoaXMudXRpbHMuZ2V0RmllbGRUeXBlLG49ZihkLnR5cGUsZC5zaGFwZXMmJmQuc2hhcGVzWzBdJiZkLnNoYXBlc1swXS50eXBlLGQubGFiZWxzJiZkLmxhYmVsc1swXSYmZC5sYWJlbHNbMF0uaXRlbVR5cGUsImxhYmVsIiksdz1hLmFubm90YXRpb25zTm9uRWRpdGFibGVbZC5sYW5nS2V5XXx8W10sdT17bGFuZ0tleTpkLmxhbmdLZXksdHlwZTpufTtnKGQsZnVuY3Rpb24oYSxiKXsidHlwZU9wdGlvbnMiPT09CmI/KHVbYl09e30sZyhkW2JdLGZ1bmN0aW9uKGEsZCl7YyhhLGQsdCx1W2JdLCEwKX0pKTpjKGEsYixlW25dLHUpfSk7cmV0dXJuIHV9O2EucHJvdG90eXBlLmdldENsaWNrZWRDbGFzc05hbWVzPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi50YXJnZXQ7Yj1bXTtmb3IodmFyIGQ7YyYmKChkPXAoYywiY2xhc3MiKSkmJihiPWIuY29uY2F0KGQuc3BsaXQoIiAiKS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuW2EsY119KSkpLGM9Yy5wYXJlbnROb2RlLGMhPT1hKTspO3JldHVybiBifTthLnByb3RvdHlwZS5nZXRCdXR0b25FdmVudHM9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLGQ7dGhpcy5nZXRDbGlja2VkQ2xhc3NOYW1lcyhhLGIpLmZvckVhY2goZnVuY3Rpb24oYSl7Yy5ib3VuZENsYXNzTmFtZXNbYVswXV0mJiFkJiYoZD17ZXZlbnRzOmMuYm91bmRDbGFzc05hbWVzW2FbMF1dLGJ1dHRvbjphWzFdfSl9KTtyZXR1cm4gZH07YS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGEpe3RoaXMub3B0aW9ucz0KeSghMCx0aGlzLm9wdGlvbnMsYSk7dGhpcy5yZW1vdmVFdmVudHMoKTt0aGlzLmluaXRFdmVudHMoKX07YS5wcm90b3R5cGUucmVtb3ZlRXZlbnRzPWZ1bmN0aW9uKCl7dGhpcy5ldmVudHNUb1VuYmluZC5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EoKX0pfTthLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVFdmVudHMoKX07YS5hbm5vdGF0aW9uc0VkaXRhYmxlPXtuZXN0ZWRPcHRpb25zOntsYWJlbE9wdGlvbnM6WyJzdHlsZSIsImZvcm1hdCIsImJhY2tncm91bmRDb2xvciJdLGxhYmVsczpbInN0eWxlIl0sbGFiZWw6WyJzdHlsZSJdLHN0eWxlOlsiZm9udFNpemUiLCJjb2xvciJdLGJhY2tncm91bmQ6WyJmaWxsIiwic3Ryb2tlV2lkdGgiLCJzdHJva2UiXSxpbm5lckJhY2tncm91bmQ6WyJmaWxsIiwic3Ryb2tlV2lkdGgiLCJzdHJva2UiXSxvdXRlckJhY2tncm91bmQ6WyJmaWxsIiwic3Ryb2tlV2lkdGgiLCJzdHJva2UiXSxzaGFwZU9wdGlvbnM6WyJmaWxsIiwKInN0cm9rZVdpZHRoIiwic3Ryb2tlIl0sc2hhcGVzOlsiZmlsbCIsInN0cm9rZVdpZHRoIiwic3Ryb2tlIl0sbGluZTpbInN0cm9rZVdpZHRoIiwic3Ryb2tlIl0sYmFja2dyb3VuZENvbG9yczpbITBdLGNvbm5lY3RvcjpbImZpbGwiLCJzdHJva2VXaWR0aCIsInN0cm9rZSJdLGNyb3NzaGFpclg6WyJzdHJva2VXaWR0aCIsInN0cm9rZSJdLGNyb3NzaGFpclk6WyJzdHJva2VXaWR0aCIsInN0cm9rZSJdfSxjaXJjbGU6WyJzaGFwZXMiXSx2ZXJ0aWNhbExpbmU6W10sbGFiZWw6WyJsYWJlbE9wdGlvbnMiXSxtZWFzdXJlOlsiYmFja2dyb3VuZCIsImNyb3NzaGFpclkiLCJjcm9zc2hhaXJYIl0sZmlib25hY2NpOltdLHR1bm5lbDpbImJhY2tncm91bmQiLCJsaW5lIiwiaGVpZ2h0Il0scGl0Y2hmb3JrOlsiaW5uZXJCYWNrZ3JvdW5kIiwib3V0ZXJCYWNrZ3JvdW5kIl0scmVjdDpbInNoYXBlcyJdLGNyb29rZWRMaW5lOltdLGJhc2ljQW5ub3RhdGlvbjpbXX07YS5hbm5vdGF0aW9uc05vbkVkaXRhYmxlPQp7cmVjdGFuZ2xlOlsiY3Jvc3NoYWlyWCIsImNyb3NzaGFpclkiLCJsYWJlbCJdfTtyZXR1cm4gYX0oKTtsLnByb3RvdHlwZS51dGlscz17dXBkYXRlUmVjdFNpemU6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLmNoYXJ0LGQ9Yi5vcHRpb25zLnR5cGVPcHRpb25zLGY9Yy5wb2ludGVyLmdldENvb3JkaW5hdGVzKGEpO2E9Zi54QXhpc1swXS52YWx1ZS1kLnBvaW50Lng7ZD1kLnBvaW50LnktZi55QXhpc1swXS52YWx1ZTtiLnVwZGF0ZSh7dHlwZU9wdGlvbnM6e2JhY2tncm91bmQ6e3dpZHRoOmMuaW52ZXJ0ZWQ/ZDphLGhlaWdodDpjLmludmVydGVkP2E6ZH19fSl9LGdldEZpZWxkVHlwZTpmdW5jdGlvbihhKXtyZXR1cm57c3RyaW5nOiJ0ZXh0IixudW1iZXI6Im51bWJlciIsImJvb2xlYW4iOiJjaGVja2JveCJ9W3R5cGVvZiBhXX19O20uQ2hhcnQucHJvdG90eXBlLmluaXROYXZpZ2F0aW9uQmluZGluZ3M9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnM7YSYmYS5uYXZpZ2F0aW9uJiYKYS5uYXZpZ2F0aW9uLmJpbmRpbmdzJiYodGhpcy5uYXZpZ2F0aW9uQmluZGluZ3M9bmV3IGwodGhpcyxhLm5hdmlnYXRpb24pLHRoaXMubmF2aWdhdGlvbkJpbmRpbmdzLmluaXRFdmVudHMoKSx0aGlzLm5hdmlnYXRpb25CaW5kaW5ncy5pbml0VXBkYXRlKCkpfTtiKG0uQ2hhcnQsImxvYWQiLGZ1bmN0aW9uKCl7dGhpcy5pbml0TmF2aWdhdGlvbkJpbmRpbmdzKCl9KTtiKG0uQ2hhcnQsImRlc3Ryb3kiLGZ1bmN0aW9uKCl7dGhpcy5uYXZpZ2F0aW9uQmluZGluZ3MmJnRoaXMubmF2aWdhdGlvbkJpbmRpbmdzLmRlc3Ryb3koKX0pO2IobCwiZGVzZWxlY3RCdXR0b24iLGZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZEJ1dHRvbkVsZW1lbnQ9bnVsbH0pO2IoYSwicmVtb3ZlIixmdW5jdGlvbigpe3RoaXMuY2hhcnQubmF2aWdhdGlvbkJpbmRpbmdzJiZ0aGlzLmNoYXJ0Lm5hdmlnYXRpb25CaW5kaW5ncy5kZXNlbGVjdEFubm90YXRpb24oKX0pO20uQW5ub3RhdGlvbiYmKHEoYSksZyhhLnR5cGVzLApmdW5jdGlvbihhKXtxKGEpfSkpO2Uoe2xhbmc6e25hdmlnYXRpb246e3BvcHVwOntzaW1wbGVTaGFwZXM6IlNpbXBsZSBzaGFwZXMiLGxpbmVzOiJMaW5lcyIsY2lyY2xlOiJDaXJjbGUiLHJlY3RhbmdsZToiUmVjdGFuZ2xlIixsYWJlbDoiTGFiZWwiLHNoYXBlT3B0aW9uczoiU2hhcGUgb3B0aW9ucyIsdHlwZU9wdGlvbnM6IkRldGFpbHMiLGZpbGw6IkZpbGwiLGZvcm1hdDoiVGV4dCIsc3Ryb2tlV2lkdGg6IkxpbmUgd2lkdGgiLHN0cm9rZToiTGluZSBjb2xvciIsdGl0bGU6IlRpdGxlIixuYW1lOiJOYW1lIixsYWJlbE9wdGlvbnM6IkxhYmVsIG9wdGlvbnMiLGxhYmVsczoiTGFiZWxzIixiYWNrZ3JvdW5kQ29sb3I6IkJhY2tncm91bmQgY29sb3IiLGJhY2tncm91bmRDb2xvcnM6IkJhY2tncm91bmQgY29sb3JzIixib3JkZXJDb2xvcjoiQm9yZGVyIGNvbG9yIixib3JkZXJSYWRpdXM6IkJvcmRlciByYWRpdXMiLGJvcmRlcldpZHRoOiJCb3JkZXIgd2lkdGgiLHN0eWxlOiJTdHlsZSIsCnBhZGRpbmc6IlBhZGRpbmciLGZvbnRTaXplOiJGb250IHNpemUiLGNvbG9yOiJDb2xvciIsaGVpZ2h0OiJIZWlnaHQiLHNoYXBlczoiU2hhcGUgb3B0aW9ucyJ9fX0sbmF2aWdhdGlvbjp7YmluZGluZ3NDbGFzc05hbWU6ImhpZ2hjaGFydHMtYmluZGluZ3MtY29udGFpbmVyIixiaW5kaW5nczp7Y2lyY2xlQW5ub3RhdGlvbjp7Y2xhc3NOYW1lOiJoaWdoY2hhcnRzLWNpcmNsZS1hbm5vdGF0aW9uIixzdGFydDpmdW5jdGlvbihhKXthPXRoaXMuY2hhcnQucG9pbnRlci5nZXRDb29yZGluYXRlcyhhKTt2YXIgYj10aGlzLmNoYXJ0Lm9wdGlvbnMubmF2aWdhdGlvbjtyZXR1cm4gdGhpcy5jaGFydC5hZGRBbm5vdGF0aW9uKHkoe2xhbmdLZXk6ImNpcmNsZSIsdHlwZToiYmFzaWNBbm5vdGF0aW9uIixzaGFwZXM6W3t0eXBlOiJjaXJjbGUiLHBvaW50Ont4QXhpczowLHlBeGlzOjAseDphLnhBeGlzWzBdLnZhbHVlLHk6YS55QXhpc1swXS52YWx1ZX0scjo1fV19LGIuYW5ub3RhdGlvbnNPcHRpb25zLApiLmJpbmRpbmdzLmNpcmNsZUFubm90YXRpb24uYW5ub3RhdGlvbnNPcHRpb25zKSl9LHN0ZXBzOltmdW5jdGlvbihhLGIpe3ZhciBjPWIub3B0aW9ucy5zaGFwZXNbMF0ucG9pbnQsZD10aGlzLmNoYXJ0LnhBeGlzWzBdLnRvUGl4ZWxzKGMueCk7Yz10aGlzLmNoYXJ0LnlBeGlzWzBdLnRvUGl4ZWxzKGMueSk7dmFyIGY9dGhpcy5jaGFydC5pbnZlcnRlZDtiLnVwZGF0ZSh7c2hhcGVzOlt7cjpNYXRoLm1heChNYXRoLnNxcnQoTWF0aC5wb3coZj9jLWEuY2hhcnRYOmQtYS5jaGFydFgsMikrTWF0aC5wb3coZj9kLWEuY2hhcnRZOmMtYS5jaGFydFksMikpLDUpfV19KX1dfSxyZWN0YW5nbGVBbm5vdGF0aW9uOntjbGFzc05hbWU6ImhpZ2hjaGFydHMtcmVjdGFuZ2xlLWFubm90YXRpb24iLHN0YXJ0OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY2hhcnQucG9pbnRlci5nZXRDb29yZGluYXRlcyhhKTthPXRoaXMuY2hhcnQub3B0aW9ucy5uYXZpZ2F0aW9uO3ZhciBjPWIueEF4aXNbMF0udmFsdWU7CmI9Yi55QXhpc1swXS52YWx1ZTtyZXR1cm4gdGhpcy5jaGFydC5hZGRBbm5vdGF0aW9uKHkoe2xhbmdLZXk6InJlY3RhbmdsZSIsdHlwZToiYmFzaWNBbm5vdGF0aW9uIixzaGFwZXM6W3t0eXBlOiJwYXRoIixwb2ludHM6W3t4QXhpczowLHlBeGlzOjAseDpjLHk6Yn0se3hBeGlzOjAseUF4aXM6MCx4OmMseTpifSx7eEF4aXM6MCx5QXhpczowLHg6Yyx5OmJ9LHt4QXhpczowLHlBeGlzOjAseDpjLHk6Yn1dfV19LGEuYW5ub3RhdGlvbnNPcHRpb25zLGEuYmluZGluZ3MucmVjdGFuZ2xlQW5ub3RhdGlvbi5hbm5vdGF0aW9uc09wdGlvbnMpKX0sc3RlcHM6W2Z1bmN0aW9uKGEsYil7dmFyIGM9Yi5vcHRpb25zLnNoYXBlc1swXS5wb2ludHMsZD10aGlzLmNoYXJ0LnBvaW50ZXIuZ2V0Q29vcmRpbmF0ZXMoYSk7YT1kLnhBeGlzWzBdLnZhbHVlO2Q9ZC55QXhpc1swXS52YWx1ZTtjWzFdLng9YTtjWzJdLng9YTtjWzJdLnk9ZDtjWzNdLnk9ZDtiLnVwZGF0ZSh7c2hhcGVzOlt7cG9pbnRzOmN9XX0pfV19LApsYWJlbEFubm90YXRpb246e2NsYXNzTmFtZToiaGlnaGNoYXJ0cy1sYWJlbC1hbm5vdGF0aW9uIixzdGFydDpmdW5jdGlvbihhKXthPXRoaXMuY2hhcnQucG9pbnRlci5nZXRDb29yZGluYXRlcyhhKTt2YXIgYj10aGlzLmNoYXJ0Lm9wdGlvbnMubmF2aWdhdGlvbjtyZXR1cm4gdGhpcy5jaGFydC5hZGRBbm5vdGF0aW9uKHkoe2xhbmdLZXk6ImxhYmVsIix0eXBlOiJiYXNpY0Fubm90YXRpb24iLGxhYmVsT3B0aW9uczp7Zm9ybWF0OiJ7eTouMmZ9In0sbGFiZWxzOlt7cG9pbnQ6e3hBeGlzOjAseUF4aXM6MCx4OmEueEF4aXNbMF0udmFsdWUseTphLnlBeGlzWzBdLnZhbHVlfSxvdmVyZmxvdzoibm9uZSIsY3JvcDohMH1dfSxiLmFubm90YXRpb25zT3B0aW9ucyxiLmJpbmRpbmdzLmxhYmVsQW5ub3RhdGlvbi5hbm5vdGF0aW9uc09wdGlvbnMpKX19fSxldmVudHM6e30sYW5ub3RhdGlvbnNPcHRpb25zOnt9fX0pO3JldHVybiBsfSk7cChhLCJhbm5vdGF0aW9ucy9wb3B1cC5qcyIsW2FbInBhcnRzL0dsb2JhbHMuanMiXSwKYVsiYW5ub3RhdGlvbnMvbmF2aWdhdGlvbkJpbmRpbmdzLmpzIl0sYVsicGFydHMvUG9pbnRlci5qcyJdLGFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihhLGQsbSxlKXt2YXIgcD1lLmFkZEV2ZW50LGI9ZS5jcmVhdGVFbGVtZW50LHE9ZS5kZWZpbmVkLHo9ZS5nZXRPcHRpb25zLGM9ZS5pc0FycmF5LGg9ZS5pc09iamVjdCxyPWUuaXNTdHJpbmcseD1lLm9iamVjdEVhY2gsaz1lLnBpY2s7ZT1lLndyYXA7dmFyIHk9L1xkL2c7ZShtLnByb3RvdHlwZSwib25Db250YWluZXJNb3VzZURvd24iLGZ1bmN0aW9uKGEsYil7dmFyIGM9Yi50YXJnZXQmJmIudGFyZ2V0LmNsYXNzTmFtZTtyKGMpJiYwPD1jLmluZGV4T2YoImhpZ2hjaGFydHMtcG9wdXAtZmllbGQiKXx8YS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9KTthLlBvcHVwPWZ1bmN0aW9uKGEsYil7dGhpcy5pbml0KGEsYil9O2EuUG9wdXAucHJvdG90eXBlPXtpbml0OmZ1bmN0aW9uKGEsCmMpe3RoaXMuY29udGFpbmVyPWIoImRpdiIse2NsYXNzTmFtZToiaGlnaGNoYXJ0cy1wb3B1cCJ9LG51bGwsYSk7dGhpcy5sYW5nPXRoaXMuZ2V0TGFuZ3BhY2soKTt0aGlzLmljb25zVVJMPWM7dGhpcy5hZGRDbG9zZUJ0bigpfSxhZGRDbG9zZUJ0bjpmdW5jdGlvbigpe3ZhciBhPXRoaXM7dmFyIGM9YigiZGl2Iix7Y2xhc3NOYW1lOiJoaWdoY2hhcnRzLXBvcHVwLWNsb3NlIn0sbnVsbCx0aGlzLmNvbnRhaW5lcik7Yy5zdHlsZVsiYmFja2dyb3VuZC1pbWFnZSJdPSJ1cmwoIit0aGlzLmljb25zVVJMKyJjbG9zZS5zdmcpIjtbImNsaWNrIiwidG91Y2hzdGFydCJdLmZvckVhY2goZnVuY3Rpb24oYil7cChjLGIsZnVuY3Rpb24oKXthLmNsb3NlUG9wdXAoKX0pfSl9LGFkZENvbHNDb250YWluZXI6ZnVuY3Rpb24oYSl7dmFyIGM9YigiZGl2Iix7Y2xhc3NOYW1lOiJoaWdoY2hhcnRzLXBvcHVwLWxocy1jb2wifSxudWxsLGEpO2E9YigiZGl2Iix7Y2xhc3NOYW1lOiJoaWdoY2hhcnRzLXBvcHVwLXJocy1jb2wifSwKbnVsbCxhKTtiKCJkaXYiLHtjbGFzc05hbWU6ImhpZ2hjaGFydHMtcG9wdXAtcmhzLWNvbC13cmFwcGVyIn0sbnVsbCxhKTtyZXR1cm57bGhzQ29sOmMscmhzQ29sOmF9fSxhZGRJbnB1dDpmdW5jdGlvbihhLGMsZCxlKXt2YXIgZj1hLnNwbGl0KCIuIik7Zj1mW2YubGVuZ3RoLTFdO3ZhciBnPXRoaXMubGFuZztjPSJoaWdoY2hhcnRzLSIrYysiLSIrZjtjLm1hdGNoKHkpfHxiKCJsYWJlbCIse2lubmVySFRNTDpnW2ZdfHxmLGh0bWxGb3I6Y30sbnVsbCxkKTtiKCJpbnB1dCIse25hbWU6Yyx2YWx1ZTplWzBdLHR5cGU6ZVsxXSxjbGFzc05hbWU6ImhpZ2hjaGFydHMtcG9wdXAtZmllbGQifSxudWxsLGQpLnNldEF0dHJpYnV0ZSgiaGlnaGNoYXJ0cy1kYXRhLW5hbWUiLGEpfSxhZGRCdXR0b246ZnVuY3Rpb24oYSxjLGQsZSxsKXt2YXIgZj10aGlzLGc9dGhpcy5jbG9zZVBvcHVwLG49dGhpcy5nZXRGaWVsZHM7dmFyIGg9YigiYnV0dG9uIix7aW5uZXJIVE1MOmN9LG51bGwsYSk7WyJjbGljayIsCiJ0b3VjaHN0YXJ0Il0uZm9yRWFjaChmdW5jdGlvbihhKXtwKGgsYSxmdW5jdGlvbigpe2cuY2FsbChmKTtyZXR1cm4gZShuKGwsZCkpfSl9KTtyZXR1cm4gaH0sZ2V0RmllbGRzOmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dCIpLGQ9YS5xdWVyeVNlbGVjdG9yQWxsKCIjaGlnaGNoYXJ0cy1zZWxlY3Qtc2VyaWVzID4gb3B0aW9uOmNoZWNrZWQiKVswXTthPWEucXVlcnlTZWxlY3RvckFsbCgiI2hpZ2hjaGFydHMtc2VsZWN0LXZvbHVtZSA+IG9wdGlvbjpjaGVja2VkIilbMF07dmFyIGYsZTt2YXIgZz17YWN0aW9uVHlwZTpiLGxpbmtlZFRvOmQmJmQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpLGZpZWxkczp7fX07W10uZm9yRWFjaC5jYWxsKGMsZnVuY3Rpb24oYSl7ZT1hLmdldEF0dHJpYnV0ZSgiaGlnaGNoYXJ0cy1kYXRhLW5hbWUiKTsoZj1hLmdldEF0dHJpYnV0ZSgiaGlnaGNoYXJ0cy1kYXRhLXNlcmllcy1pZCIpKT9nLnNlcmllc0lkPWEudmFsdWU6CmU/Zy5maWVsZHNbZV09YS52YWx1ZTpnLnR5cGU9YS52YWx1ZX0pO2EmJihnLmZpZWxkc1sicGFyYW1zLnZvbHVtZVNlcmllc0lEIl09YS5nZXRBdHRyaWJ1dGUoInZhbHVlIikpO3JldHVybiBnfSxzaG93UG9wdXA6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNvbnRhaW5lcixiPWEucXVlcnlTZWxlY3RvckFsbCgiLmhpZ2hjaGFydHMtcG9wdXAtY2xvc2UiKVswXTthLmlubmVySFRNTD0iIjswPD1hLmNsYXNzTmFtZS5pbmRleE9mKCJoaWdoY2hhcnRzLWFubm90YXRpb24tdG9vbGJhciIpJiYoYS5jbGFzc0xpc3QucmVtb3ZlKCJoaWdoY2hhcnRzLWFubm90YXRpb24tdG9vbGJhciIpLGEucmVtb3ZlQXR0cmlidXRlKCJzdHlsZSIpKTthLmFwcGVuZENoaWxkKGIpO2Euc3R5bGUuZGlzcGxheT0iYmxvY2sifSxjbG9zZVBvcHVwOmZ1bmN0aW9uKCl7dGhpcy5wb3B1cC5jb250YWluZXIuc3R5bGUuZGlzcGxheT0ibm9uZSJ9LHNob3dGb3JtOmZ1bmN0aW9uKGEsYixjLGQpe3RoaXMucG9wdXA9CmIubmF2aWdhdGlvbkJpbmRpbmdzLnBvcHVwO3RoaXMuc2hvd1BvcHVwKCk7ImluZGljYXRvcnMiPT09YSYmdGhpcy5pbmRpY2F0b3JzLmFkZEZvcm0uY2FsbCh0aGlzLGIsYyxkKTsiYW5ub3RhdGlvbi10b29sYmFyIj09PWEmJnRoaXMuYW5ub3RhdGlvbnMuYWRkVG9vbGJhci5jYWxsKHRoaXMsYixjLGQpOyJhbm5vdGF0aW9uLWVkaXQiPT09YSYmdGhpcy5hbm5vdGF0aW9ucy5hZGRGb3JtLmNhbGwodGhpcyxiLGMsZCk7ImZsYWciPT09YSYmdGhpcy5hbm5vdGF0aW9ucy5hZGRGb3JtLmNhbGwodGhpcyxiLGMsZCwhMCl9LGdldExhbmdwYWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHooKS5sYW5nLm5hdmlnYXRpb24ucG9wdXB9LGFubm90YXRpb25zOnthZGRUb29sYmFyOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZj10aGlzLGU9dGhpcy5sYW5nLGc9dGhpcy5wb3B1cC5jb250YWluZXIsaD10aGlzLnNob3dGb3JtOy0xPT09Zy5jbGFzc05hbWUuaW5kZXhPZigiaGlnaGNoYXJ0cy1hbm5vdGF0aW9uLXRvb2xiYXIiKSYmCihnLmNsYXNzTmFtZSs9IiBoaWdoY2hhcnRzLWFubm90YXRpb24tdG9vbGJhciIpO2cuc3R5bGUudG9wPWEucGxvdFRvcCsxMCsicHgiO2IoInNwYW4iLHtpbm5lckhUTUw6ayhlW2MubGFuZ0tleV18fGMubGFuZ0tleSxjLnNoYXBlcyYmYy5zaGFwZXNbMF0udHlwZSl9LG51bGwsZyk7dmFyIG49dGhpcy5hZGRCdXR0b24oZyxlLnJlbW92ZUJ1dHRvbnx8InJlbW92ZSIsInJlbW92ZSIsZCxnKTtuLmNsYXNzTmFtZSs9IiBoaWdoY2hhcnRzLWFubm90YXRpb24tcmVtb3ZlLWJ1dHRvbiI7bi5zdHlsZVsiYmFja2dyb3VuZC1pbWFnZSJdPSJ1cmwoIit0aGlzLmljb25zVVJMKyJkZXN0cm95LnN2ZykiO249dGhpcy5hZGRCdXR0b24oZyxlLmVkaXRCdXR0b258fCJlZGl0IiwiZWRpdCIsZnVuY3Rpb24oKXtoLmNhbGwoZiwiYW5ub3RhdGlvbi1lZGl0IixhLGMsZCl9LGcpO24uY2xhc3NOYW1lKz0iIGhpZ2hjaGFydHMtYW5ub3RhdGlvbi1lZGl0LWJ1dHRvbiI7bi5zdHlsZVsiYmFja2dyb3VuZC1pbWFnZSJdPQoidXJsKCIrdGhpcy5pY29uc1VSTCsiZWRpdC5zdmcpIn0sYWRkRm9ybTpmdW5jdGlvbihhLGMsZCxlKXt2YXIgZj10aGlzLnBvcHVwLmNvbnRhaW5lcixnPXRoaXMubGFuZztiKCJoMiIse2lubmVySFRNTDpnW2MubGFuZ0tleV18fGMubGFuZ0tleSxjbGFzc05hbWU6ImhpZ2hjaGFydHMtcG9wdXAtbWFpbi10aXRsZSJ9LG51bGwsZik7dmFyIG49YigiZGl2Iix7Y2xhc3NOYW1lOiJoaWdoY2hhcnRzLXBvcHVwLWxocy1jb2wgaGlnaGNoYXJ0cy1wb3B1cC1saHMtZnVsbCJ9LG51bGwsZik7dmFyIGg9YigiZGl2Iix7Y2xhc3NOYW1lOiJoaWdoY2hhcnRzLXBvcHVwLWJvdHRvbS1yb3cifSxudWxsLGYpO3RoaXMuYW5ub3RhdGlvbnMuYWRkRm9ybUZpZWxkcy5jYWxsKHRoaXMsbixhLCIiLGMsW10sITApO3RoaXMuYWRkQnV0dG9uKGgsZT9nLmFkZEJ1dHRvbnx8ImFkZCI6Zy5zYXZlQnV0dG9ufHwic2F2ZSIsZT8iYWRkIjoic2F2ZSIsZCxmKX0sYWRkRm9ybUZpZWxkczpmdW5jdGlvbihhLApkLGUsayxsLHQpe3ZhciBmPXRoaXMsZz10aGlzLmFubm90YXRpb25zLmFkZEZvcm1GaWVsZHMsbj10aGlzLmFkZElucHV0LHU9dGhpcy5sYW5nLG0scDt4KGssZnVuY3Rpb24oYixuKXttPSIiIT09ZT9lKyIuIituOm47aChiKSYmKCFjKGIpfHxjKGIpJiZoKGJbMF0pPyhwPXVbbl18fG4scC5tYXRjaCh5KXx8bC5wdXNoKFshMCxwLGFdKSxnLmNhbGwoZixhLGQsbSxiLGwsITEpKTpsLnB1c2goW2YsbSwiYW5ub3RhdGlvbiIsYSxiXSkpfSk7dCYmKGw9bC5zb3J0KGZ1bmN0aW9uKGEpe3JldHVybiBhWzFdLm1hdGNoKC9mb3JtYXQvZyk/LTE6MX0pLGwuZm9yRWFjaChmdW5jdGlvbihhKXshMD09PWFbMF0/Yigic3BhbiIse2NsYXNzTmFtZToiaGlnaGNoYXJ0cy1hbm5vdGF0aW9uLXRpdGxlIixpbm5lckhUTUw6YVsxXX0sbnVsbCxhWzJdKTpuLmFwcGx5KGFbMF0sYS5zcGxpY2UoMSkpfSkpfX0saW5kaWNhdG9yczp7YWRkRm9ybTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5pbmRpY2F0b3JzLApmPXRoaXMubGFuZzt0aGlzLnRhYnMuaW5pdC5jYWxsKHRoaXMsYSk7Yj10aGlzLnBvcHVwLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCIuaGlnaGNoYXJ0cy10YWItaXRlbS1jb250ZW50Iik7dGhpcy5hZGRDb2xzQ29udGFpbmVyKGJbMF0pO2QuYWRkSW5kaWNhdG9yTGlzdC5jYWxsKHRoaXMsYSxiWzBdLCJhZGQiKTt2YXIgZT1iWzBdLnF1ZXJ5U2VsZWN0b3JBbGwoIi5oaWdoY2hhcnRzLXBvcHVwLXJocy1jb2wiKVswXTt0aGlzLmFkZEJ1dHRvbihlLGYuYWRkQnV0dG9ufHwiYWRkIiwiYWRkIixjLGUpO3RoaXMuYWRkQ29sc0NvbnRhaW5lcihiWzFdKTtkLmFkZEluZGljYXRvckxpc3QuY2FsbCh0aGlzLGEsYlsxXSwiZWRpdCIpO2U9YlsxXS5xdWVyeVNlbGVjdG9yQWxsKCIuaGlnaGNoYXJ0cy1wb3B1cC1yaHMtY29sIilbMF07dGhpcy5hZGRCdXR0b24oZSxmLnNhdmVCdXR0b258fCJzYXZlIiwiZWRpdCIsYyxlKTt0aGlzLmFkZEJ1dHRvbihlLGYucmVtb3ZlQnV0dG9ufHwKInJlbW92ZSIsInJlbW92ZSIsYyxlKX0sYWRkSW5kaWNhdG9yTGlzdDpmdW5jdGlvbihhLGMsZCl7dmFyIGU9dGhpcyxmPWMucXVlcnlTZWxlY3RvckFsbCgiLmhpZ2hjaGFydHMtcG9wdXAtbGhzLWNvbCIpWzBdO2M9Yy5xdWVyeVNlbGVjdG9yQWxsKCIuaGlnaGNoYXJ0cy1wb3B1cC1yaHMtY29sIilbMF07dmFyIGc9ImVkaXQiPT09ZCxoPWc/YS5zZXJpZXM6YS5vcHRpb25zLnBsb3RPcHRpb25zLG49dGhpcy5pbmRpY2F0b3JzLmFkZEZvcm1GaWVsZHMsazt2YXIgbT1iKCJ1bCIse2NsYXNzTmFtZToiaGlnaGNoYXJ0cy1pbmRpY2F0b3ItbGlzdCJ9LG51bGwsZik7dmFyIHE9Yy5xdWVyeVNlbGVjdG9yQWxsKCIuaGlnaGNoYXJ0cy1wb3B1cC1yaHMtY29sLXdyYXBwZXIiKVswXTt4KGgsZnVuY3Rpb24oYyxkKXt2YXIgZj1jLm9wdGlvbnM7aWYoYy5wYXJhbXN8fGYmJmYucGFyYW1zKXt2YXIgbD1lLmluZGljYXRvcnMuZ2V0TmFtZVR5cGUoYyxkKSx1PWwudHlwZTtrPWIoImxpIix7Y2xhc3NOYW1lOiJoaWdoY2hhcnRzLWluZGljYXRvci1saXN0IiwKaW5uZXJIVE1MOmwubmFtZX0sbnVsbCxtKTtbImNsaWNrIiwidG91Y2hzdGFydCJdLmZvckVhY2goZnVuY3Rpb24oZCl7cChrLGQsZnVuY3Rpb24oKXtuLmNhbGwoZSxhLGc/YzpoW3VdLGwudHlwZSxxKTtnJiZjLm9wdGlvbnMmJmIoImlucHV0Iix7dHlwZToiaGlkZGVuIixuYW1lOiJoaWdoY2hhcnRzLWlkLSIrdSx2YWx1ZTpjLm9wdGlvbnMuaWR9LG51bGwscSkuc2V0QXR0cmlidXRlKCJoaWdoY2hhcnRzLWRhdGEtc2VyaWVzLWlkIixjLm9wdGlvbnMuaWQpfSl9KX19KTswPG0uY2hpbGROb2Rlcy5sZW5ndGgmJm0uY2hpbGROb2Rlc1swXS5jbGljaygpfSxnZXROYW1lVHlwZTpmdW5jdGlvbihiLGMpe3ZhciBkPWIub3B0aW9ucyxlPWEuc2VyaWVzVHlwZXM7ZT1lW2NdJiZlW2NdLnByb3RvdHlwZS5uYW1lQmFzZXx8Yy50b1VwcGVyQ2FzZSgpO2QmJmQudHlwZSYmKGM9Yi5vcHRpb25zLnR5cGUsZT1iLm5hbWUpO3JldHVybntuYW1lOmUsdHlwZTpjfX0sbGlzdEFsbFNlcmllczpmdW5jdGlvbihhLApjLGQsZSxoKXthPSJoaWdoY2hhcnRzLSIrYysiLXR5cGUtIithO3ZhciBmO2IoImxhYmVsIix7aW5uZXJIVE1MOnRoaXMubGFuZ1tjXXx8YyxodG1sRm9yOmF9LG51bGwsZSk7dmFyIGc9Yigic2VsZWN0Iix7bmFtZTphLGNsYXNzTmFtZToiaGlnaGNoYXJ0cy1wb3B1cC1maWVsZCJ9LG51bGwsZSk7Zy5zZXRBdHRyaWJ1dGUoImlkIiwiaGlnaGNoYXJ0cy1zZWxlY3QtIitjKTtkLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2Y9YS5vcHRpb25zOyFmLnBhcmFtcyYmZi5pZCYmImhpZ2hjaGFydHMtbmF2aWdhdG9yLXNlcmllcyIhPT1mLmlkJiZiKCJvcHRpb24iLHtpbm5lckhUTUw6Zi5uYW1lfHxmLmlkLHZhbHVlOmYuaWR9LG51bGwsZyl9KTtxKGgpJiYoZy52YWx1ZT1oKX0sYWRkRm9ybUZpZWxkczpmdW5jdGlvbihhLGMsZCxlKXt2YXIgZj1jLnBhcmFtc3x8Yy5vcHRpb25zLnBhcmFtcyxnPXRoaXMuaW5kaWNhdG9ycy5nZXROYW1lVHlwZTtlLmlubmVySFRNTD0iIjtiKCJoMyIsCntjbGFzc05hbWU6ImhpZ2hjaGFydHMtaW5kaWNhdG9yLXRpdGxlIixpbm5lckhUTUw6ZyhjLGQpLm5hbWV9LG51bGwsZSk7YigiaW5wdXQiLHt0eXBlOiJoaWRkZW4iLG5hbWU6ImhpZ2hjaGFydHMtdHlwZS0iK2QsdmFsdWU6ZH0sbnVsbCxlKTt0aGlzLmluZGljYXRvcnMubGlzdEFsbFNlcmllcy5jYWxsKHRoaXMsZCwic2VyaWVzIixhLGUsYy5saW5rZWRQYXJlbnQmJmYudm9sdW1lU2VyaWVzSUQpO2Yudm9sdW1lU2VyaWVzSUQmJnRoaXMuaW5kaWNhdG9ycy5saXN0QWxsU2VyaWVzLmNhbGwodGhpcyxkLCJ2b2x1bWUiLGEsZSxjLmxpbmtlZFBhcmVudCYmYy5saW5rZWRQYXJlbnQub3B0aW9ucy5pZCk7dGhpcy5pbmRpY2F0b3JzLmFkZFBhcmFtSW5wdXRzLmNhbGwodGhpcyxhLCJwYXJhbXMiLGYsZCxlKX0sYWRkUGFyYW1JbnB1dHM6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj10aGlzLGc9dGhpcy5pbmRpY2F0b3JzLmFkZFBhcmFtSW5wdXRzLGs9dGhpcy5hZGRJbnB1dCxuOwp4KGMsZnVuY3Rpb24oYyxsKXtuPWIrIi4iK2w7aChjKT9nLmNhbGwoZixhLG4sYyxkLGUpOiJwYXJhbXMudm9sdW1lU2VyaWVzSUQiIT09biYmay5jYWxsKGYsbixkLGUsW2MsInRleHQiXSl9KX0sZ2V0QW1vdW50OmZ1bmN0aW9uKCl7dmFyIGE9MDt0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPWIub3B0aW9uczsoYi5wYXJhbXN8fGMmJmMucGFyYW1zKSYmYSsrfSk7cmV0dXJuIGF9fSx0YWJzOntpbml0OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMudGFiczthPXRoaXMuaW5kaWNhdG9ycy5nZXRBbW91bnQuY2FsbChhKTt2YXIgYz1iLmFkZE1lbnVJdGVtLmNhbGwodGhpcywiYWRkIik7Yi5hZGRNZW51SXRlbS5jYWxsKHRoaXMsImVkaXQiLGEpO2IuYWRkQ29udGVudEl0ZW0uY2FsbCh0aGlzLCJhZGQiKTtiLmFkZENvbnRlbnRJdGVtLmNhbGwodGhpcywiZWRpdCIpO2Iuc3dpdGNoVGFicy5jYWxsKHRoaXMsYSk7Yi5zZWxlY3RUYWIuY2FsbCh0aGlzLGMsMCl9LGFkZE1lbnVJdGVtOmZ1bmN0aW9uKGEsCmMpe3ZhciBkPXRoaXMucG9wdXAuY29udGFpbmVyLGU9ImhpZ2hjaGFydHMtdGFiLWl0ZW0iLGY9dGhpcy5sYW5nOzA9PT1jJiYoZSs9IiBoaWdoY2hhcnRzLXRhYi1kaXNhYmxlZCIpO2M9Yigic3BhbiIse2lubmVySFRNTDpmW2ErIkJ1dHRvbiJdfHxhLGNsYXNzTmFtZTplfSxudWxsLGQpO2Muc2V0QXR0cmlidXRlKCJoaWdoY2hhcnRzLWRhdGEtdGFiLXR5cGUiLGEpO3JldHVybiBjfSxhZGRDb250ZW50SXRlbTpmdW5jdGlvbigpe3JldHVybiBiKCJkaXYiLHtjbGFzc05hbWU6ImhpZ2hjaGFydHMtdGFiLWl0ZW0tY29udGVudCJ9LG51bGwsdGhpcy5wb3B1cC5jb250YWluZXIpfSxzd2l0Y2hUYWJzOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsYzt0aGlzLnBvcHVwLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCIuaGlnaGNoYXJ0cy10YWItaXRlbSIpLmZvckVhY2goZnVuY3Rpb24oZCxlKXtjPWQuZ2V0QXR0cmlidXRlKCJoaWdoY2hhcnRzLWRhdGEtdGFiLXR5cGUiKTsiZWRpdCI9PT0KYyYmMD09PWF8fFsiY2xpY2siLCJ0b3VjaHN0YXJ0Il0uZm9yRWFjaChmdW5jdGlvbihhKXtwKGQsYSxmdW5jdGlvbigpe2IudGFicy5kZXNlbGVjdEFsbC5jYWxsKGIpO2IudGFicy5zZWxlY3RUYWIuY2FsbChiLHRoaXMsZSl9KX0pfSl9LHNlbGVjdFRhYjpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMucG9wdXAuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoIi5oaWdoY2hhcnRzLXRhYi1pdGVtLWNvbnRlbnQiKTthLmNsYXNzTmFtZSs9IiBoaWdoY2hhcnRzLXRhYi1pdGVtLWFjdGl2ZSI7Y1tiXS5jbGFzc05hbWUrPSIgaGlnaGNoYXJ0cy10YWItaXRlbS1zaG93In0sZGVzZWxlY3RBbGw6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnBvcHVwLmNvbnRhaW5lcixiPWEucXVlcnlTZWxlY3RvckFsbCgiLmhpZ2hjaGFydHMtdGFiLWl0ZW0iKTthPWEucXVlcnlTZWxlY3RvckFsbCgiLmhpZ2hjaGFydHMtdGFiLWl0ZW0tY29udGVudCIpO3ZhciBjO2ZvcihjPTA7YzxiLmxlbmd0aDtjKyspYltjXS5jbGFzc0xpc3QucmVtb3ZlKCJoaWdoY2hhcnRzLXRhYi1pdGVtLWFjdGl2ZSIpLAphW2NdLmNsYXNzTGlzdC5yZW1vdmUoImhpZ2hjaGFydHMtdGFiLWl0ZW0tc2hvdyIpfX19O3AoZCwic2hvd1BvcHVwIixmdW5jdGlvbihiKXt0aGlzLnBvcHVwfHwodGhpcy5wb3B1cD1uZXcgYS5Qb3B1cCh0aGlzLmNoYXJ0LmNvbnRhaW5lcix0aGlzLmNoYXJ0Lm9wdGlvbnMubmF2aWdhdGlvbi5pY29uc1VSTHx8dGhpcy5jaGFydC5vcHRpb25zLnN0b2NrVG9vbHMmJnRoaXMuY2hhcnQub3B0aW9ucy5zdG9ja1Rvb2xzLmd1aS5pY29uc1VSTHx8Imh0dHBzOi8vY29kZS5oaWdoY2hhcnRzLmNvbS84LjEuMi9nZngvc3RvY2staWNvbnMvIikpO3RoaXMucG9wdXAuc2hvd0Zvcm0oYi5mb3JtVHlwZSx0aGlzLmNoYXJ0LGIub3B0aW9ucyxiLm9uU3VibWl0KX0pO3AoZCwiY2xvc2VQb3B1cCIsZnVuY3Rpb24oKXt0aGlzLnBvcHVwJiZ0aGlzLnBvcHVwLmNsb3NlUG9wdXAoKX0pfSk7cChhLCJtYXN0ZXJzL21vZHVsZXMvYW5ub3RhdGlvbnMuc3JjLmpzIixbXSxmdW5jdGlvbigpe30pfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWFubm90YXRpb25zLmpzLm1hcA=="></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIERhdGEgbW9kdWxlCgogKGMpIDIwMTItMjAxOSBUb3JzdGVpbiBIb25zaQoKIExpY2Vuc2U6IHd3dy5oaWdoY2hhcnRzLmNvbS9saWNlbnNlCiovCihmdW5jdGlvbihiKXsib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzPyhiWyJkZWZhdWx0Il09Yixtb2R1bGUuZXhwb3J0cz1iKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoImhpZ2hjaGFydHMvbW9kdWxlcy9kYXRhIixbImhpZ2hjaGFydHMiXSxmdW5jdGlvbih2KXtiKHYpO2IuSGlnaGNoYXJ0cz12O3JldHVybiBifSk6YigidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIHYoYixsLHYsdCl7Yi5oYXNPd25Qcm9wZXJ0eShsKXx8KGJbbF09dC5hcHBseShudWxsLHYpKX1iPWI/Yi5fbW9kdWxlczp7fTt2KGIsIm1peGlucy9hamF4LmpzIixbYlsicGFydHMvR2xvYmFscy5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihiLGwpe3ZhciB2PWwubWVyZ2UsdD1sLm9iamVjdEVhY2g7Yi5hamF4PWZ1bmN0aW9uKGIpe3ZhciBwPQp2KCEwLHt1cmw6ITEsdHlwZToiZ2V0IixkYXRhVHlwZToianNvbiIsc3VjY2VzczohMSxlcnJvcjohMSxkYXRhOiExLGhlYWRlcnM6e319LGIpO2I9e2pzb246ImFwcGxpY2F0aW9uL2pzb24iLHhtbDoiYXBwbGljYXRpb24veG1sIix0ZXh0OiJ0ZXh0L3BsYWluIixvY3RldDoiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIn07dmFyIGw9bmV3IFhNTEh0dHBSZXF1ZXN0O2lmKCFwLnVybClyZXR1cm4hMTtsLm9wZW4ocC50eXBlLnRvVXBwZXJDYXNlKCkscC51cmwsITApO3AuaGVhZGVyc1siQ29udGVudC1UeXBlIl18fGwuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixiW3AuZGF0YVR5cGVdfHxiLnRleHQpO3QocC5oZWFkZXJzLGZ1bmN0aW9uKGIscCl7bC5zZXRSZXF1ZXN0SGVhZGVyKHAsYil9KTtsLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2lmKDQ9PT1sLnJlYWR5U3RhdGUpe2lmKDIwMD09PWwuc3RhdHVzKXt2YXIgYj1sLnJlc3BvbnNlVGV4dDtpZigianNvbiI9PT0KcC5kYXRhVHlwZSl0cnl7Yj1KU09OLnBhcnNlKGIpfWNhdGNoKEEpe3AuZXJyb3ImJnAuZXJyb3IobCxBKTtyZXR1cm59cmV0dXJuIHAuc3VjY2VzcyYmcC5zdWNjZXNzKGIpfXAuZXJyb3ImJnAuZXJyb3IobCxsLnJlc3BvbnNlVGV4dCl9fTt0cnl7cC5kYXRhPUpTT04uc3RyaW5naWZ5KHAuZGF0YSl9Y2F0Y2goRCl7fWwuc2VuZChwLmRhdGF8fCEwKX07Yi5nZXRKU09OPWZ1bmN0aW9uKGwscCl7Yi5hamF4KHt1cmw6bCxzdWNjZXNzOnAsZGF0YVR5cGU6Impzb24iLGhlYWRlcnM6eyJDb250ZW50LVR5cGUiOiJ0ZXh0L3BsYWluIn19KX19KTt2KGIsIm1vZHVsZXMvZGF0YS5zcmMuanMiLFtiWyJwYXJ0cy9DaGFydC5qcyJdLGJbInBhcnRzL0dsb2JhbHMuanMiXSxiWyJwYXJ0cy9Qb2ludC5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihiLGwsdix0KXt2YXIgRz10LmFkZEV2ZW50LHA9dC5kZWZpbmVkLEg9dC5leHRlbmQsRD10LmZpcmVFdmVudCxBPXQuaXNOdW1iZXIsCkI9dC5tZXJnZSxJPXQub2JqZWN0RWFjaCxKPXQucGljayxLPXQuc3BsYXQsRT1sLmFqYXgsTD1sLndpbi5kb2N1bWVudDt0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYihhLGMsZil7dGhpcy5vcHRpb25zPXRoaXMucmF3Q29sdW1ucz10aGlzLmZpcnN0Um93QXNOYW1lcz10aGlzLmNoYXJ0T3B0aW9ucz10aGlzLmNoYXJ0PXZvaWQgMDt0aGlzLmRhdGVGb3JtYXRzPXsiWVlZWS9tbS9kZCI6e3JlZ2V4Oi9eKFswLTldezR9KVtcLVwvXC5dKFswLTldezEsMn0pW1wtXC9cLl0oWzAtOV17MSwyfSkkLyxwYXJzZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/RGF0ZS5VVEMoK2FbMV0sYVsyXS0xLCthWzNdKTpOYU59fSwiZGQvbW0vWVlZWSI6e3JlZ2V4Oi9eKFswLTldezEsMn0pW1wtXC9cLl0oWzAtOV17MSwyfSlbXC1cL1wuXShbMC05XXs0fSkkLyxwYXJzZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/RGF0ZS5VVEMoK2FbM10sYVsyXS0xLCthWzFdKTpOYU59LGFsdGVybmF0aXZlOiJtbS9kZC9ZWVlZIn0sCiJtbS9kZC9ZWVlZIjp7cmVnZXg6L14oWzAtOV17MSwyfSlbXC1cL1wuXShbMC05XXsxLDJ9KVtcLVwvXC5dKFswLTldezR9KSQvLHBhcnNlcjpmdW5jdGlvbihhKXtyZXR1cm4gYT9EYXRlLlVUQygrYVszXSxhWzFdLTEsK2FbMl0pOk5hTn19LCJkZC9tbS9ZWSI6e3JlZ2V4Oi9eKFswLTldezEsMn0pW1wtXC9cLl0oWzAtOV17MSwyfSlbXC1cL1wuXShbMC05XXsyfSkkLyxwYXJzZXI6ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIE5hTjt2YXIgYz0rYVszXTtjPWM+KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpLTJFMz9jKzE5MDA6YysyRTM7cmV0dXJuIERhdGUuVVRDKGMsYVsyXS0xLCthWzFdKX0sYWx0ZXJuYXRpdmU6Im1tL2RkL1lZIn0sIm1tL2RkL1lZIjp7cmVnZXg6L14oWzAtOV17MSwyfSlbXC1cL1wuXShbMC05XXsxLDJ9KVtcLVwvXC5dKFswLTldezJ9KSQvLHBhcnNlcjpmdW5jdGlvbihhKXtyZXR1cm4gYT9EYXRlLlVUQygrYVszXSsyRTMsYVsxXS0xLCthWzJdKTpOYU59fX07CnRoaXMuaW5pdChhLGMsZil9Yi5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihhLGMsZil7dmFyIGQ9YS5kZWNpbWFsUG9pbnQ7YyYmKHRoaXMuY2hhcnRPcHRpb25zPWMpO2YmJih0aGlzLmNoYXJ0PWYpOyIuIiE9PWQmJiIsIiE9PWQmJihkPXZvaWQgMCk7dGhpcy5vcHRpb25zPWE7dGhpcy5jb2x1bW5zPWEuY29sdW1uc3x8dGhpcy5yb3dzVG9Db2x1bW5zKGEucm93cyl8fFtdO3RoaXMuZmlyc3RSb3dBc05hbWVzPUooYS5maXJzdFJvd0FzTmFtZXMsdGhpcy5maXJzdFJvd0FzTmFtZXMsITApO3RoaXMuZGVjaW1hbFJlZ2V4PWQmJm5ldyBSZWdFeHAoIl4oLT9bMC05XSspIitkKyIoWzAtOV0rKSQiKTt0aGlzLnJhd0NvbHVtbnM9W107aWYodGhpcy5jb2x1bW5zLmxlbmd0aCl7dGhpcy5kYXRhRm91bmQoKTt2YXIgZz0hMH10aGlzLmhhc1VSTE9wdGlvbihhKSYmKGNsZWFyVGltZW91dCh0aGlzLmxpdmVEYXRhVGltZW91dCksZz0hMSk7Z3x8KGc9dGhpcy5mZXRjaExpdmVEYXRhKCkpOwpnfHwoZz0hIXRoaXMucGFyc2VDU1YoKS5sZW5ndGgpO2d8fChnPSEhdGhpcy5wYXJzZVRhYmxlKCkubGVuZ3RoKTtnfHwoZz10aGlzLnBhcnNlR29vZ2xlU3ByZWFkc2hlZXQoKSk7IWcmJmEuYWZ0ZXJDb21wbGV0ZSYmYS5hZnRlckNvbXBsZXRlKCl9O2IucHJvdG90eXBlLmhhc1VSTE9wdGlvbj1mdW5jdGlvbihhKXtyZXR1cm4hKCFhfHwhKGEucm93c1VSTHx8YS5jc3ZVUkx8fGEuY29sdW1uc1VSTCkpfTtiLnByb3RvdHlwZS5nZXRDb2x1bW5EaXN0cmlidXRpb249ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNoYXJ0T3B0aW9ucyxjPXRoaXMub3B0aW9ucyxmPVtdLGQ9ZnVuY3Rpb24oYSl7cmV0dXJuKGwuc2VyaWVzVHlwZXNbYXx8ImxpbmUiXS5wcm90b3R5cGUucG9pbnRBcnJheU1hcHx8WzBdKS5sZW5ndGh9LGc9YSYmYS5jaGFydCYmYS5jaGFydC50eXBlLGU9W10sYj1bXSxoPTA7Yz1jJiZjLnNlcmllc01hcHBpbmd8fGEmJmEuc2VyaWVzJiZhLnNlcmllcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm57eDowfX0pfHwKW107dmFyIGs7KGEmJmEuc2VyaWVzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihhKXtlLnB1c2goZChhLnR5cGV8fGcpKX0pO2MuZm9yRWFjaChmdW5jdGlvbihhKXtmLnB1c2goYS54fHwwKX0pOzA9PT1mLmxlbmd0aCYmZi5wdXNoKDApO2MuZm9yRWFjaChmdW5jdGlvbihjKXt2YXIgZj1uZXcgRix1PWVbaF18fGQoZykscj0oYSYmYS5zZXJpZXN8fFtdKVtoXXx8e30sdz1sLnNlcmllc1R5cGVzW3IudHlwZXx8Z3x8ImxpbmUiXS5wcm90b3R5cGUucG9pbnRBcnJheU1hcCx6PXd8fFsieSJdOyhwKGMueCl8fHIuaXNDYXJ0ZXNpYW58fCF3KSYmZi5hZGRDb2x1bW5SZWFkZXIoYy54LCJ4Iik7SShjLGZ1bmN0aW9uKGEsYyl7IngiIT09YyYmZi5hZGRDb2x1bW5SZWFkZXIoYSxjKX0pO2ZvcihrPTA7azx1O2srKylmLmhhc1JlYWRlcih6W2tdKXx8Zi5hZGRDb2x1bW5SZWFkZXIodm9pZCAwLHpba10pO2IucHVzaChmKTtoKyt9KTtjPWwuc2VyaWVzVHlwZXNbZ3x8ImxpbmUiXS5wcm90b3R5cGUucG9pbnRBcnJheU1hcDsKInVuZGVmaW5lZCI9PT10eXBlb2YgYyYmKGM9WyJ5Il0pO3RoaXMudmFsdWVDb3VudD17Z2xvYmFsOmQoZykseENvbHVtbnM6ZixpbmRpdmlkdWFsOmUsc2VyaWVzQnVpbGRlcnM6YixnbG9iYWxQb2ludEFycmF5TWFwOmN9fTtiLnByb3RvdHlwZS5kYXRhRm91bmQ9ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuc3dpdGNoUm93c0FuZENvbHVtbnMmJih0aGlzLmNvbHVtbnM9dGhpcy5yb3dzVG9Db2x1bW5zKHRoaXMuY29sdW1ucykpO3RoaXMuZ2V0Q29sdW1uRGlzdHJpYnV0aW9uKCk7dGhpcy5wYXJzZVR5cGVzKCk7ITEhPT10aGlzLnBhcnNlZCgpJiZ0aGlzLmNvbXBsZXRlKCl9O2IucHJvdG90eXBlLnBhcnNlQ1NWPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGMoYSxjLGYsZCl7ZnVuY3Rpb24gZyhjKXtoPWFbY107bT1hW2MtMV07cj1hW2MrMV19ZnVuY3Rpb24gYihhKXt4Lmxlbmd0aDx1KzEmJngucHVzaChbYV0pO3hbdV1beFt1XS5sZW5ndGgtMV0hPT1hJiZ4W3VdLnB1c2goYSl9ZnVuY3Rpb24gZSgpe2s+Cnl8fHk+bD8oKyt5LHE9IiIpOighaXNOYU4ocGFyc2VGbG9hdChxKSkmJmlzRmluaXRlKHEpPyhxPXBhcnNlRmxvYXQocSksYigibnVtYmVyIikpOmlzTmFOKERhdGUucGFyc2UocSkpP2IoInN0cmluZyIpOihxPXEucmVwbGFjZSgvXC8vZywiLSIpLGIoImRhdGUiKSksdy5sZW5ndGg8dSsxJiZ3LnB1c2goW10pLGZ8fCh3W3VdW2NdPXEpLHE9IiIsKyt1LCsreSl9dmFyIG49MCxoPSIiLG09IiIscj0iIixxPSIiLHk9MCx1PTA7aWYoYS50cmltKCkubGVuZ3RoJiYiIyIhPT1hLnRyaW0oKVswXSl7Zm9yKDtuPGEubGVuZ3RoO24rKyl7ZyhuKTtpZigiIyI9PT1oKXtlKCk7cmV0dXJufWlmKCciJz09PWgpZm9yKGcoKytuKTtuPGEubGVuZ3RoJiYoJyInIT09aHx8JyInPT09bXx8JyInPT09cik7KXtpZignIichPT1ofHwnIic9PT1oJiYnIichPT1tKXErPWg7ZygrK24pfWVsc2UgZCYmZFtoXT9kW2hdKGgscSkmJmUoKTpoPT09ej9lKCk6cSs9aH1lKCl9fWZ1bmN0aW9uIGYoYSl7dmFyIGM9CjAsZj0wLGQ9ITE7YS5zb21lKGZ1bmN0aW9uKGEsZCl7dmFyIGc9ITEsYj0iIjtpZigxMzxkKXJldHVybiEwO2Zvcih2YXIgZT0wO2U8YS5sZW5ndGg7ZSsrKXtkPWFbZV07dmFyIGg9YVtlKzFdO3ZhciBrPWFbZS0xXTtpZigiIyI9PT1kKWJyZWFrO2lmKCciJz09PWQpaWYoZyl7aWYoJyInIT09ayYmJyInIT09aCl7Zm9yKDsiICI9PT1oJiZlPGEubGVuZ3RoOyloPWFbKytlXTsidW5kZWZpbmVkIiE9PXR5cGVvZiByW2hdJiZyW2hdKys7Zz0hMX19ZWxzZSBnPSEwO2Vsc2UidW5kZWZpbmVkIiE9PXR5cGVvZiByW2RdPyhiPWIudHJpbSgpLGlzTmFOKERhdGUucGFyc2UoYikpPyFpc05hTihiKSYmaXNGaW5pdGUoYil8fHJbZF0rKzpyW2RdKyssYj0iIik6Yis9ZDsiLCI9PT1kJiZmKys7Ii4iPT09ZCYmYysrfX0pO2Q9clsiOyJdPnJbIiwiXT8iOyI6IiwiO2UuZGVjaW1hbFBvaW50fHwoZS5kZWNpbWFsUG9pbnQ9Yz5mPyIuIjoiLCIsZy5kZWNpbWFsUmVnZXg9bmV3IFJlZ0V4cCgiXigtP1swLTldKykiKwplLmRlY2ltYWxQb2ludCsiKFswLTldKykkIikpO3JldHVybiBkfWZ1bmN0aW9uIGQoYSxjKXt2YXIgZD1bXSxmPTAsYj0hMSxoPVtdLGs9W10sbjtpZighY3x8Yz5hLmxlbmd0aCljPWEubGVuZ3RoO2Zvcig7ZjxjO2YrKylpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBhW2ZdJiZhW2ZdJiZhW2ZdLmxlbmd0aCl7dmFyIG09YVtmXS50cmltKCkucmVwbGFjZSgvXC8vZywiICIpLnJlcGxhY2UoL1wtL2csIiAiKS5yZXBsYWNlKC9cLi9nLCIgIikuc3BsaXQoIiAiKTtkPVsiIiwiIiwiIl07Zm9yKG49MDtuPG0ubGVuZ3RoO24rKyluPGQubGVuZ3RoJiYobVtuXT1wYXJzZUludChtW25dLDEwKSxtW25dJiYoa1tuXT0ha1tuXXx8a1tuXTxtW25dP21bbl06a1tuXSwidW5kZWZpbmVkIiE9PXR5cGVvZiBoW25dP2hbbl0hPT1tW25dJiYoaFtuXT0hMSk6aFtuXT1tW25dLDMxPG1bbl0/ZFtuXT0xMDA+bVtuXT8iWVkiOiJZWVlZIjoxMjxtW25dJiYzMT49bVtuXT8oZFtuXT0iZGQiLGI9ITApOmRbbl0ubGVuZ3RofHwKKGRbbl09Im1tIikpKX1pZihiKXtmb3Iobj0wO248aC5sZW5ndGg7bisrKSExIT09aFtuXT8xMjxrW25dJiYiWVkiIT09ZFtuXSYmIllZWVkiIT09ZFtuXSYmKGRbbl09IllZIik6MTI8a1tuXSYmIm1tIj09PWRbbl0mJihkW25dPSJkZCIpOzM9PT1kLmxlbmd0aCYmImRkIj09PWRbMV0mJiJkZCI9PT1kWzJdJiYoZFsyXT0iWVkiKTthPWQuam9pbigiLyIpO3JldHVybihlLmRhdGVGb3JtYXRzfHxnLmRhdGVGb3JtYXRzKVthXT9hOihEKCJkZWR1Y2VEYXRlRmFpbGVkIiksIllZWVkvbW0vZGQiKX1yZXR1cm4iWVlZWS9tbS9kZCJ9dmFyIGc9dGhpcyxlPWF8fHRoaXMub3B0aW9ucyxiPWUuY3N2O2E9InVuZGVmaW5lZCIhPT10eXBlb2YgZS5zdGFydFJvdyYmZS5zdGFydFJvdz9lLnN0YXJ0Um93OjA7dmFyIGg9ZS5lbmRSb3d8fE51bWJlci5NQVhfVkFMVUUsaz0idW5kZWZpbmVkIiE9PXR5cGVvZiBlLnN0YXJ0Q29sdW1uJiZlLnN0YXJ0Q29sdW1uP2Uuc3RhcnRDb2x1bW46MCxsPWUuZW5kQ29sdW1ufHwKTnVtYmVyLk1BWF9WQUxVRSxtPTAseD1bXSxyPXsiLCI6MCwiOyI6MCwiXHQiOjB9O3ZhciB3PXRoaXMuY29sdW1ucz1bXTtiJiZlLmJlZm9yZVBhcnNlJiYoYj1lLmJlZm9yZVBhcnNlLmNhbGwodGhpcyxiKSk7aWYoYil7Yj1iLnJlcGxhY2UoL1xyXG4vZywiXG4iKS5yZXBsYWNlKC9cci9nLCJcbiIpLnNwbGl0KGUubGluZURlbGltaXRlcnx8IlxuIik7aWYoIWF8fDA+YSlhPTA7aWYoIWh8fGg+PWIubGVuZ3RoKWg9Yi5sZW5ndGgtMTtpZihlLml0ZW1EZWxpbWl0ZXIpdmFyIHo9ZS5pdGVtRGVsaW1pdGVyO2Vsc2Ugej1udWxsLHo9ZihiKTt2YXIgeT0wO2ZvcihtPWE7bTw9aDttKyspIiMiPT09YlttXVswXT95Kys6YyhiW21dLG0tYS15KTtlLmNvbHVtblR5cGVzJiYwIT09ZS5jb2x1bW5UeXBlcy5sZW5ndGh8fCF4Lmxlbmd0aHx8IXhbMF0ubGVuZ3RofHwiZGF0ZSIhPT14WzBdWzFdfHxlLmRhdGVGb3JtYXR8fChlLmRhdGVGb3JtYXQ9ZCh3WzBdKSk7dGhpcy5kYXRhRm91bmQoKX1yZXR1cm4gd307CmIucHJvdG90eXBlLnBhcnNlVGFibGU9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnMsYz1hLnRhYmxlLGY9dGhpcy5jb2x1bW5zfHxbXSxkPWEuc3RhcnRSb3d8fDAsYj1hLmVuZFJvd3x8TnVtYmVyLk1BWF9WQUxVRSxlPWEuc3RhcnRDb2x1bW58fDAsdT1hLmVuZENvbHVtbnx8TnVtYmVyLk1BWF9WQUxVRTtjJiYoInN0cmluZyI9PT10eXBlb2YgYyYmKGM9TC5nZXRFbGVtZW50QnlJZChjKSksW10uZm9yRWFjaC5jYWxsKGMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRyIiksZnVuY3Rpb24oYSxjKXtjPj1kJiZjPD1iJiZbXS5mb3JFYWNoLmNhbGwoYS5jaGlsZHJlbixmdW5jdGlvbihhLGIpe3ZhciBnPWZbYi1lXSxoPTE7aWYoKCJURCI9PT1hLnRhZ05hbWV8fCJUSCI9PT1hLnRhZ05hbWUpJiZiPj1lJiZiPD11KWZvcihmW2ItZV18fChmW2ItZV09W10pLGZbYi1lXVtjLWRdPWEuaW5uZXJIVE1MO2MtZD49aCYmdm9pZCAwPT09Z1tjLWQtaF07KWdbYy1kLWhdPW51bGwsaCsrfSl9KSwKdGhpcy5kYXRhRm91bmQoKSk7cmV0dXJuIGZ9O2IucHJvdG90eXBlLmZldGNoTGl2ZURhdGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGcpe2Z1bmN0aW9uIGsoaCxrLGwpe2Z1bmN0aW9uIG0oKXtlJiZmLmxpdmVEYXRhVVJMPT09aCYmKGMubGl2ZURhdGFUaW1lb3V0PXNldFRpbWVvdXQoYSx1KSl9aWYoIWh8fDAhPT1oLmluZGV4T2YoImh0dHAiKSlyZXR1cm4gaCYmZC5lcnJvciYmZC5lcnJvcigiSW52YWxpZCBVUkwiKSwhMTtnJiYoY2xlYXJUaW1lb3V0KGMubGl2ZURhdGFUaW1lb3V0KSxmLmxpdmVEYXRhVVJMPWgpO0Uoe3VybDpoLGRhdGFUeXBlOmx8fCJqc29uIixzdWNjZXNzOmZ1bmN0aW9uKGEpe2YmJmYuc2VyaWVzJiZrKGEpO20oKX0sZXJyb3I6ZnVuY3Rpb24oYSxjKXszPisrYiYmbSgpO3JldHVybiBkLmVycm9yJiZkLmVycm9yKGMsYSl9fSk7cmV0dXJuITB9ayhoLmNzdlVSTCxmdW5jdGlvbihhKXtmLnVwZGF0ZSh7ZGF0YTp7Y3N2OmF9fSl9LCJ0ZXh0Iil8fGsoaC5yb3dzVVJMLApmdW5jdGlvbihhKXtmLnVwZGF0ZSh7ZGF0YTp7cm93czphfX0pfSl8fGsoaC5jb2x1bW5zVVJMLGZ1bmN0aW9uKGEpe2YudXBkYXRlKHtkYXRhOntjb2x1bW5zOmF9fSl9KX12YXIgYz10aGlzLGY9dGhpcy5jaGFydCxkPXRoaXMub3B0aW9ucyxiPTAsZT1kLmVuYWJsZVBvbGxpbmcsdT0xRTMqKGQuZGF0YVJlZnJlc2hSYXRlfHwyKSxoPUIoZCk7aWYoIXRoaXMuaGFzVVJMT3B0aW9uKGQpKXJldHVybiExOzFFMz51JiYodT0xRTMpO2RlbGV0ZSBkLmNzdlVSTDtkZWxldGUgZC5yb3dzVVJMO2RlbGV0ZSBkLmNvbHVtbnNVUkw7YSghMCk7cmV0dXJuIHRoaXMuaGFzVVJMT3B0aW9uKGQpfTtiLnByb3RvdHlwZS5wYXJzZUdvb2dsZVNwcmVhZHNoZWV0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShjKXt2YXIgYj1bImh0dHBzOi8vc3ByZWFkc2hlZXRzLmdvb2dsZS5jb20vZmVlZHMvY2VsbHMiLGQsZSwicHVibGljL3ZhbHVlcz9hbHQ9anNvbiJdLmpvaW4oIi8iKTtFKHt1cmw6YixkYXRhVHlwZToianNvbiIsCnN1Y2Nlc3M6ZnVuY3Rpb24oZCl7YyhkKTtmLmVuYWJsZVBvbGxpbmcmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXthKGMpfSwxRTMqKGYuZGF0YVJlZnJlc2hSYXRlfHwyKSl9LGVycm9yOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGYuZXJyb3ImJmYuZXJyb3IoYyxhKX19KX12YXIgYz10aGlzLGY9dGhpcy5vcHRpb25zLGQ9Zi5nb29nbGVTcHJlYWRzaGVldEtleSxiPXRoaXMuY2hhcnQsZT1mLmdvb2dsZVNwcmVhZHNoZWV0V29ya3NoZWV0fHwxLGw9Zi5zdGFydFJvd3x8MCxoPWYuZW5kUm93fHxOdW1iZXIuTUFYX1ZBTFVFLGs9Zi5zdGFydENvbHVtbnx8MCxwPWYuZW5kQ29sdW1ufHxOdW1iZXIuTUFYX1ZBTFVFLG09MUUzKihmLmRhdGFSZWZyZXNoUmF0ZXx8Mik7NEUzPm0mJihtPTRFMyk7ZCYmKGRlbGV0ZSBmLmdvb2dsZVNwcmVhZHNoZWV0S2V5LGEoZnVuY3Rpb24oYSl7dmFyIGQ9W107YT1hLmZlZWQuZW50cnk7dmFyIGY9KGF8fFtdKS5sZW5ndGgsZz0wLGU7aWYoIWF8fDA9PT1hLmxlbmd0aClyZXR1cm4hMTsKZm9yKGU9MDtlPGY7ZSsrKXt2YXIgbT1hW2VdO2c9TWF0aC5tYXgoZyxtLmdzJGNlbGwuY29sKX1mb3IoZT0wO2U8ZztlKyspZT49ayYmZTw9cCYmKGRbZS1rXT1bXSk7Zm9yKGU9MDtlPGY7ZSsrKXttPWFbZV07Zz1tLmdzJGNlbGwucm93LTE7dmFyIHU9bS5ncyRjZWxsLmNvbC0xO2lmKHU+PWsmJnU8PXAmJmc+PWwmJmc8PWgpe3ZhciBxPW0uZ3MkY2VsbHx8bS5jb250ZW50O209bnVsbDtxLm51bWVyaWNWYWx1ZT9tPTA8PXEuJHQuaW5kZXhPZigiLyIpfHwwPD1xLiR0LmluZGV4T2YoIi0iKT9xLiR0OjA8cS4kdC5pbmRleE9mKCIlIik/MTAwKnBhcnNlRmxvYXQocS5udW1lcmljVmFsdWUpOnBhcnNlRmxvYXQocS5udW1lcmljVmFsdWUpOnEuJHQmJnEuJHQubGVuZ3RoJiYobT1xLiR0KTtkW3Uta11bZy1sXT1tfX1kLmZvckVhY2goZnVuY3Rpb24oYSl7Zm9yKGU9MDtlPGEubGVuZ3RoO2UrKykidW5kZWZpbmVkIj09PXR5cGVvZiBhW2VdJiYoYVtlXT1udWxsKX0pO2ImJmIuc2VyaWVzPwpiLnVwZGF0ZSh7ZGF0YTp7Y29sdW1uczpkfX0pOihjLmNvbHVtbnM9ZCxjLmRhdGFGb3VuZCgpKX0pKTtyZXR1cm4hMX07Yi5wcm90b3R5cGUudHJpbT1mdW5jdGlvbihhLGMpeyJzdHJpbmciPT09dHlwZW9mIGEmJihhPWEucmVwbGFjZSgvXlxzK3xccyskL2csIiIpLGMmJi9eWzAtOVxzXSskLy50ZXN0KGEpJiYoYT1hLnJlcGxhY2UoL1xzL2csIiIpKSx0aGlzLmRlY2ltYWxSZWdleCYmKGE9YS5yZXBsYWNlKHRoaXMuZGVjaW1hbFJlZ2V4LCIkMS4kMiIpKSk7cmV0dXJuIGF9O2IucHJvdG90eXBlLnBhcnNlVHlwZXM9ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5jb2x1bW5zLGM9YS5sZW5ndGg7Yy0tOyl0aGlzLnBhcnNlQ29sdW1uKGFbY10sYyl9O2IucHJvdG90eXBlLnBhcnNlQ29sdW1uPWZ1bmN0aW9uKGEsYyl7dmFyIGY9dGhpcy5yYXdDb2x1bW5zLGQ9dGhpcy5jb2x1bW5zLGI9YS5sZW5ndGgsZT10aGlzLmZpcnN0Um93QXNOYW1lcyxsPS0xIT09dGhpcy52YWx1ZUNvdW50LnhDb2x1bW5zLmluZGV4T2YoYyksCmgsaz1bXSxwPXRoaXMuY2hhcnRPcHRpb25zLG0sdD0odGhpcy5vcHRpb25zLmNvbHVtblR5cGVzfHxbXSlbY107cD1sJiYocCYmcC54QXhpcyYmImNhdGVnb3J5Ij09PUsocC54QXhpcylbMF0udHlwZXx8InN0cmluZyI9PT10KTtmb3IoZltjXXx8KGZbY109W10pO2ItLTspe3ZhciByPWtbYl18fGFbYl07dmFyIHc9dGhpcy50cmltKHIpO3ZhciB2PXRoaXMudHJpbShyLCEwKTt2YXIgQz1wYXJzZUZsb2F0KHYpOyJ1bmRlZmluZWQiPT09dHlwZW9mIGZbY11bYl0mJihmW2NdW2JdPXcpO3B8fDA9PT1iJiZlP2FbYl09IiIrdzordj09PUM/KGFbYl09QywzMTUzNkU2PEMmJiJmbG9hdCIhPT10P2EuaXNEYXRldGltZT0hMDphLmlzTnVtZXJpYz0hMCwidW5kZWZpbmVkIiE9PXR5cGVvZiBhW2IrMV0mJihtPUM+YVtiKzFdKSk6KHcmJncubGVuZ3RoJiYoaD10aGlzLnBhcnNlRGF0ZShyKSksbCYmQShoKSYmImZsb2F0IiE9PXQ/KGtbYl09cixhW2JdPWgsYS5pc0RhdGV0aW1lPSEwLCJ1bmRlZmluZWQiIT09CnR5cGVvZiBhW2IrMV0mJihyPWg+YVtiKzFdLHIhPT1tJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBtJiYodGhpcy5hbHRlcm5hdGl2ZUZvcm1hdD8odGhpcy5kYXRlRm9ybWF0PXRoaXMuYWx0ZXJuYXRpdmVGb3JtYXQsYj1hLmxlbmd0aCx0aGlzLmFsdGVybmF0aXZlRm9ybWF0PXRoaXMuZGF0ZUZvcm1hdHNbdGhpcy5kYXRlRm9ybWF0XS5hbHRlcm5hdGl2ZSk6YS51bnNvcnRlZD0hMCksbT1yKSk6KGFbYl09IiI9PT13P251bGw6dywwIT09YiYmKGEuaXNEYXRldGltZXx8YS5pc051bWVyaWMpJiYoYS5taXhlZD0hMCkpKX1sJiZhLm1peGVkJiYoZFtjXT1mW2NdKTtpZihsJiZtJiZ0aGlzLm9wdGlvbnMuc29ydClmb3IoYz0wO2M8ZC5sZW5ndGg7YysrKWRbY10ucmV2ZXJzZSgpLGUmJmRbY10udW5zaGlmdChkW2NdLnBvcCgpKX07Yi5wcm90b3R5cGUucGFyc2VEYXRlPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMub3B0aW9ucy5wYXJzZURhdGUsYixkPXRoaXMub3B0aW9ucy5kYXRlRm9ybWF0fHwKdGhpcy5kYXRlRm9ybWF0LGc7aWYoYyl2YXIgZT1jKGEpO2Vsc2UgaWYoInN0cmluZyI9PT10eXBlb2YgYSl7aWYoZCkoYz10aGlzLmRhdGVGb3JtYXRzW2RdKXx8KGM9dGhpcy5kYXRlRm9ybWF0c1siWVlZWS9tbS9kZCJdKSwoZz1hLm1hdGNoKGMucmVnZXgpKSYmKGU9Yy5wYXJzZXIoZykpO2Vsc2UgZm9yKGIgaW4gdGhpcy5kYXRlRm9ybWF0cylpZihjPXRoaXMuZGF0ZUZvcm1hdHNbYl0sZz1hLm1hdGNoKGMucmVnZXgpKXt0aGlzLmRhdGVGb3JtYXQ9Yjt0aGlzLmFsdGVybmF0aXZlRm9ybWF0PWMuYWx0ZXJuYXRpdmU7ZT1jLnBhcnNlcihnKTticmVha31nfHwoZz1EYXRlLnBhcnNlKGEpLCJvYmplY3QiPT09dHlwZW9mIGcmJm51bGwhPT1nJiZnLmdldFRpbWU/ZT1nLmdldFRpbWUoKS02RTQqZy5nZXRUaW1lem9uZU9mZnNldCgpOkEoZykmJihlPWctNkU0KihuZXcgRGF0ZShnKSkuZ2V0VGltZXpvbmVPZmZzZXQoKSkpfXJldHVybiBlfTtiLnByb3RvdHlwZS5yb3dzVG9Db2x1bW5zPQpmdW5jdGlvbihhKXt2YXIgYyxiO2lmKGEpe3ZhciBkPVtdO3ZhciBnPWEubGVuZ3RoO2ZvcihjPTA7YzxnO2MrKyl7dmFyIGU9YVtjXS5sZW5ndGg7Zm9yKGI9MDtiPGU7YisrKWRbYl18fChkW2JdPVtdKSxkW2JdW2NdPWFbY11bYl19fXJldHVybiBkfTtiLnByb3RvdHlwZS5nZXREYXRhPWZ1bmN0aW9uKCl7aWYodGhpcy5jb2x1bW5zKXJldHVybiB0aGlzLnJvd3NUb0NvbHVtbnModGhpcy5jb2x1bW5zKS5zbGljZSgxKX07Yi5wcm90b3R5cGUucGFyc2VkPWZ1bmN0aW9uKCl7aWYodGhpcy5vcHRpb25zLnBhcnNlZClyZXR1cm4gdGhpcy5vcHRpb25zLnBhcnNlZC5jYWxsKHRoaXMsdGhpcy5jb2x1bW5zKX07Yi5wcm90b3R5cGUuZ2V0RnJlZUluZGV4ZXM9ZnVuY3Rpb24oYSxjKXt2YXIgYixkPVtdLGc9W107Zm9yKGI9MDtiPGE7Yis9MSlkLnB1c2goITApO2ZvcihhPTA7YTxjLmxlbmd0aDthKz0xKXt2YXIgZT1jW2FdLmdldFJlZmVyZW5jZWRDb2x1bW5JbmRleGVzKCk7Zm9yKGI9CjA7YjxlLmxlbmd0aDtiKz0xKWRbZVtiXV09ITF9Zm9yKGI9MDtiPGQubGVuZ3RoO2IrPTEpZFtiXSYmZy5wdXNoKGIpO3JldHVybiBnfTtiLnByb3RvdHlwZS5jb21wbGV0ZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMuY29sdW1ucyxjLGI9dGhpcy5vcHRpb25zLGQsZyxlPVtdO2lmKGIuY29tcGxldGV8fGIuYWZ0ZXJDb21wbGV0ZSl7aWYodGhpcy5maXJzdFJvd0FzTmFtZXMpZm9yKGQ9MDtkPGEubGVuZ3RoO2QrKylhW2RdLm5hbWU9YVtkXS5zaGlmdCgpO3ZhciBsPVtdO3ZhciBoPXRoaXMuZ2V0RnJlZUluZGV4ZXMoYS5sZW5ndGgsdGhpcy52YWx1ZUNvdW50LnNlcmllc0J1aWxkZXJzKTtmb3IoZD0wO2Q8dGhpcy52YWx1ZUNvdW50LnNlcmllc0J1aWxkZXJzLmxlbmd0aDtkKyspe3ZhciBrPXRoaXMudmFsdWVDb3VudC5zZXJpZXNCdWlsZGVyc1tkXTtrLnBvcHVsYXRlQ29sdW1ucyhoKSYmZS5wdXNoKGspfWZvcig7MDxoLmxlbmd0aDspe2s9bmV3IEY7ay5hZGRDb2x1bW5SZWFkZXIoMCwKIngiKTtkPWguaW5kZXhPZigwKTstMSE9PWQmJmguc3BsaWNlKGQsMSk7Zm9yKGQ9MDtkPHRoaXMudmFsdWVDb3VudC5nbG9iYWw7ZCsrKWsuYWRkQ29sdW1uUmVhZGVyKHZvaWQgMCx0aGlzLnZhbHVlQ291bnQuZ2xvYmFsUG9pbnRBcnJheU1hcFtkXSk7ay5wb3B1bGF0ZUNvbHVtbnMoaCkmJmUucHVzaChrKX0wPGUubGVuZ3RoJiYwPGVbMF0ucmVhZGVycy5sZW5ndGgmJihrPWFbZVswXS5yZWFkZXJzWzBdLmNvbHVtbkluZGV4XSwidW5kZWZpbmVkIiE9PXR5cGVvZiBrJiYoay5pc0RhdGV0aW1lP2M9ImRhdGV0aW1lIjprLmlzTnVtZXJpY3x8KGM9ImNhdGVnb3J5IikpKTtpZigiY2F0ZWdvcnkiPT09Yylmb3IoZD0wO2Q8ZS5sZW5ndGg7ZCsrKWZvcihrPWVbZF0saD0wO2g8ay5yZWFkZXJzLmxlbmd0aDtoKyspIngiPT09ay5yZWFkZXJzW2hdLmNvbmZpZ05hbWUmJihrLnJlYWRlcnNbaF0uY29uZmlnTmFtZT0ibmFtZSIpO2ZvcihkPTA7ZDxlLmxlbmd0aDtkKyspe2s9ZVtkXTtoPQpbXTtmb3IoZz0wO2c8YVswXS5sZW5ndGg7ZysrKWhbZ109ay5yZWFkKGEsZyk7bFtkXT17ZGF0YTpofTtrLm5hbWUmJihsW2RdLm5hbWU9ay5uYW1lKTsiY2F0ZWdvcnkiPT09YyYmKGxbZF0udHVyYm9UaHJlc2hvbGQ9MCl9YT17c2VyaWVzOmx9O2MmJihhLnhBeGlzPXt0eXBlOmN9LCJjYXRlZ29yeSI9PT1jJiYoYS54QXhpcy51bmlxdWVOYW1lcz0hMSkpO2IuY29tcGxldGUmJmIuY29tcGxldGUoYSk7Yi5hZnRlckNvbXBsZXRlJiZiLmFmdGVyQ29tcGxldGUoYSl9fTtiLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNoYXJ0O2EmJihhLmFmdGVyQ29tcGxldGU9ZnVuY3Rpb24oYSl7YSYmKGEueEF4aXMmJmMueEF4aXNbMF0mJmEueEF4aXMudHlwZT09PWMueEF4aXNbMF0ub3B0aW9ucy50eXBlJiZkZWxldGUgYS54QXhpcyxjLnVwZGF0ZShhLGIsITApKX0sQighMCxjLm9wdGlvbnMuZGF0YSxhKSx0aGlzLmluaXQoYy5vcHRpb25zLmRhdGEpKX07cmV0dXJuIGJ9KCk7CmwuZGF0YT1mdW5jdGlvbihiLGEsYyl7cmV0dXJuIG5ldyBsLkRhdGEoYixhLGMpfTtHKGIsImluaXQiLGZ1bmN0aW9uKGIpe3ZhciBhPXRoaXMsYz1iLmFyZ3NbMF18fHt9LGY9Yi5hcmdzWzFdO2MmJmMuZGF0YSYmIWEuaGFzRGF0YURlZiYmKGEuaGFzRGF0YURlZj0hMCxhLmRhdGE9bmV3IGwuRGF0YShIKGMuZGF0YSx7YWZ0ZXJDb21wbGV0ZTpmdW5jdGlvbihiKXt2YXIgZDtpZihPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChjLCJzZXJpZXMiKSlpZigib2JqZWN0Ij09PXR5cGVvZiBjLnNlcmllcylmb3IoZD1NYXRoLm1heChjLnNlcmllcy5sZW5ndGgsYiYmYi5zZXJpZXM/Yi5zZXJpZXMubGVuZ3RoOjApO2QtLTspe3ZhciBlPWMuc2VyaWVzW2RdfHx7fTtjLnNlcmllc1tkXT1CKGUsYiYmYi5zZXJpZXM/Yi5zZXJpZXNbZF06e30pfWVsc2UgZGVsZXRlIGMuc2VyaWVzO2M9QihiLGMpO2EuaW5pdChjLGYpfX0pLGMsYSksYi5wcmV2ZW50RGVmYXVsdCgpKX0pO3ZhciBGPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYigpe3RoaXMucmVhZGVycz0KW107dGhpcy5wb2ludElzQXJyYXk9ITA7dGhpcy5uYW1lPXZvaWQgMH1iLnByb3RvdHlwZS5wb3B1bGF0ZUNvbHVtbnM9ZnVuY3Rpb24oYSl7dmFyIGI9ITA7dGhpcy5yZWFkZXJzLmZvckVhY2goZnVuY3Rpb24oYil7InVuZGVmaW5lZCI9PT10eXBlb2YgYi5jb2x1bW5JbmRleCYmKGIuY29sdW1uSW5kZXg9YS5zaGlmdCgpKX0pO3RoaXMucmVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGEpeyJ1bmRlZmluZWQiPT09dHlwZW9mIGEuY29sdW1uSW5kZXgmJihiPSExKX0pO3JldHVybiBifTtiLnByb3RvdHlwZS5yZWFkPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5wb2ludElzQXJyYXksZD1jP1tdOnt9O3RoaXMucmVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciBmPWFbZS5jb2x1bW5JbmRleF1bYl07Yz9kLnB1c2goZik6MDxlLmNvbmZpZ05hbWUuaW5kZXhPZigiLiIpP3YucHJvdG90eXBlLnNldE5lc3RlZFByb3BlcnR5KGQsZixlLmNvbmZpZ05hbWUpOmRbZS5jb25maWdOYW1lXT0KZn0pO2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIHRoaXMubmFtZSYmMjw9dGhpcy5yZWFkZXJzLmxlbmd0aCl7dmFyIGc9dGhpcy5nZXRSZWZlcmVuY2VkQ29sdW1uSW5kZXhlcygpOzI8PWcubGVuZ3RoJiYoZy5zaGlmdCgpLGcuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhLWJ9KSx0aGlzLm5hbWU9YVtnLnNoaWZ0KCldLm5hbWUpfXJldHVybiBkfTtiLnByb3RvdHlwZS5hZGRDb2x1bW5SZWFkZXI9ZnVuY3Rpb24oYSxiKXt0aGlzLnJlYWRlcnMucHVzaCh7Y29sdW1uSW5kZXg6YSxjb25maWdOYW1lOmJ9KTsieCIhPT1iJiYieSIhPT1iJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBiJiYodGhpcy5wb2ludElzQXJyYXk9ITEpfTtiLnByb3RvdHlwZS5nZXRSZWZlcmVuY2VkQ29sdW1uSW5kZXhlcz1mdW5jdGlvbigpe3ZhciBhLGI9W107Zm9yKGE9MDthPHRoaXMucmVhZGVycy5sZW5ndGg7YSs9MSl7dmFyIGY9dGhpcy5yZWFkZXJzW2FdOyJ1bmRlZmluZWQiIT09dHlwZW9mIGYuY29sdW1uSW5kZXgmJgpiLnB1c2goZi5jb2x1bW5JbmRleCl9cmV0dXJuIGJ9O2IucHJvdG90eXBlLmhhc1JlYWRlcj1mdW5jdGlvbihhKXt2YXIgYjtmb3IoYj0wO2I8dGhpcy5yZWFkZXJzLmxlbmd0aDtiKz0xKXt2YXIgZj10aGlzLnJlYWRlcnNbYl07aWYoZi5jb25maWdOYW1lPT09YSlyZXR1cm4hMH19O3JldHVybiBifSgpO2wuRGF0YT10O3JldHVybiBsLkRhdGF9KTt2KGIsIm1hc3RlcnMvbW9kdWxlcy9kYXRhLnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhLmpzLm1hcA=="></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIEhpZ2hjaGFydHMgRHJpbGxkb3duIG1vZHVsZQoKIEF1dGhvcjogVG9yc3RlaW4gSG9uc2kKIExpY2Vuc2U6IHd3dy5oaWdoY2hhcnRzLmNvbS9saWNlbnNlCgoqLwooZnVuY3Rpb24oYyl7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8oY1siZGVmYXVsdCJdPWMsbW9kdWxlLmV4cG9ydHM9Yyk6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL21vZHVsZXMvZHJpbGxkb3duIixbImhpZ2hjaGFydHMiXSxmdW5jdGlvbihtKXtjKG0pO2MuSGlnaGNoYXJ0cz1tO3JldHVybiBjfSk6YygidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGMpe2Z1bmN0aW9uIG0oYyxtLHAsdCl7Yy5oYXNPd25Qcm9wZXJ0eShtKXx8KGNbbV09dC5hcHBseShudWxsLHApKX1jPWM/Yy5fbW9kdWxlczp7fTttKGMsIm1vZHVsZXMvZHJpbGxkb3duLnNyYy5qcyIsW2NbInBhcnRzL0NoYXJ0LmpzIl0sY1sicGFydHMvQ29sb3IuanMiXSxjWyJwYXJ0cy9HbG9iYWxzLmpzIl0sY1sicGFydHMvT3B0aW9ucy5qcyJdLGNbInBhcnRzL1BvaW50LmpzIl0sCmNbInBhcnRzL1NWR1JlbmRlcmVyLmpzIl0sY1sicGFydHMvVGljay5qcyJdLGNbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihjLG0scCx0LHksRSxBLGspe3Q9dC5kZWZhdWx0T3B0aW9uczt2YXIgbj1rLmFkZEV2ZW50LEY9ay5yZW1vdmVFdmVudCxCPWsuYW5pbU9iamVjdCx1PWsuZXh0ZW5kLHg9ay5maXJlRXZlbnQsRz1rLmZvcm1hdCx2PWsubWVyZ2UsQz1rLm9iamVjdEVhY2gsdz1rLnBpY2ssSD1rLnN5bmNUaW1lb3V0LEk9cC5ub29wLHE9cC5zZXJpZXNUeXBlcztrPXEucGllO3E9cS5jb2x1bW47dmFyIEQ9MTt1KHQubGFuZyx7ZHJpbGxVcFRleHQ6Ilx1MjVjMSBCYWNrIHRvIHtzZXJpZXMubmFtZX0ifSk7dC5kcmlsbGRvd249e2FjdGl2ZUF4aXNMYWJlbFN0eWxlOntjdXJzb3I6InBvaW50ZXIiLGNvbG9yOiIjMDAzMzk5Iixmb250V2VpZ2h0OiJib2xkIix0ZXh0RGVjb3JhdGlvbjoidW5kZXJsaW5lIn0sYWN0aXZlRGF0YUxhYmVsU3R5bGU6e2N1cnNvcjoicG9pbnRlciIsCmNvbG9yOiIjMDAzMzk5Iixmb250V2VpZ2h0OiJib2xkIix0ZXh0RGVjb3JhdGlvbjoidW5kZXJsaW5lIn0sYW5pbWF0aW9uOntkdXJhdGlvbjo1MDB9LGRyaWxsVXBCdXR0b246e3Bvc2l0aW9uOnthbGlnbjoicmlnaHQiLHg6LTEwLHk6MTB9fX07RS5wcm90b3R5cGUuRWxlbWVudC5wcm90b3R5cGUuZmFkZUluPWZ1bmN0aW9uKGEpe3RoaXMuYXR0cih7b3BhY2l0eTouMSx2aXNpYmlsaXR5OiJpbmhlcml0In0pLmFuaW1hdGUoe29wYWNpdHk6dyh0aGlzLm5ld09wYWNpdHksMSl9LGF8fHtkdXJhdGlvbjoyNTB9KX07Yy5wcm90b3R5cGUuYWRkU2VyaWVzQXNEcmlsbGRvd249ZnVuY3Rpb24oYSxiKXt0aGlzLmFkZFNpbmdsZVNlcmllc0FzRHJpbGxkb3duKGEsYik7dGhpcy5hcHBseURyaWxsZG93bigpfTtjLnByb3RvdHlwZS5hZGRTaW5nbGVTZXJpZXNBc0RyaWxsZG93bj1mdW5jdGlvbihhLGIpe3ZhciBkPWEuc2VyaWVzLGY9ZC54QXhpcyxlPWQueUF4aXMsZz1bXSxyPVtdLGg7dmFyIGw9CnRoaXMuc3R5bGVkTW9kZT97Y29sb3JJbmRleDp3KGEuY29sb3JJbmRleCxkLmNvbG9ySW5kZXgpfTp7Y29sb3I6YS5jb2xvcnx8ZC5jb2xvcn07dGhpcy5kcmlsbGRvd25MZXZlbHN8fCh0aGlzLmRyaWxsZG93bkxldmVscz1bXSk7dmFyIGM9ZC5vcHRpb25zLl9sZXZlbE51bWJlcnx8MDsoaD10aGlzLmRyaWxsZG93bkxldmVsc1t0aGlzLmRyaWxsZG93bkxldmVscy5sZW5ndGgtMV0pJiZoLmxldmVsTnVtYmVyIT09YyYmKGg9dm9pZCAwKTtiPXUodSh7X2RkU2VyaWVzSWQ6RCsrfSxsKSxiKTt2YXIgaz1kLnBvaW50cy5pbmRleE9mKGEpO2QuY2hhcnQuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYSl7YS54QXhpcyE9PWZ8fGEuaXNEcmlsbGluZ3x8KGEub3B0aW9ucy5fZGRTZXJpZXNJZD1hLm9wdGlvbnMuX2RkU2VyaWVzSWR8fEQrKyxhLm9wdGlvbnMuX2NvbG9ySW5kZXg9YS51c2VyT3B0aW9ucy5fY29sb3JJbmRleCxhLm9wdGlvbnMuX2xldmVsTnVtYmVyPWEub3B0aW9ucy5fbGV2ZWxOdW1iZXJ8fApjLGg/KGc9aC5sZXZlbFNlcmllcyxyPWgubGV2ZWxTZXJpZXNPcHRpb25zKTooZy5wdXNoKGEpLGEucHVyZ2VkT3B0aW9ucz12KHtfZGRTZXJpZXNJZDphLm9wdGlvbnMuX2RkU2VyaWVzSWQsX2xldmVsTnVtYmVyOmEub3B0aW9ucy5fbGV2ZWxOdW1iZXIsc2VsZWN0ZWQ6YS5vcHRpb25zLnNlbGVjdGVkfSxhLnVzZXJPcHRpb25zKSxyLnB1c2goYS5wdXJnZWRPcHRpb25zKSkpfSk7YT11KHtsZXZlbE51bWJlcjpjLHNlcmllc09wdGlvbnM6ZC5vcHRpb25zLHNlcmllc1B1cmdlZE9wdGlvbnM6ZC5wdXJnZWRPcHRpb25zLGxldmVsU2VyaWVzT3B0aW9uczpyLGxldmVsU2VyaWVzOmcsc2hhcGVBcmdzOmEuc2hhcGVBcmdzLGJCb3g6YS5ncmFwaGljP2EuZ3JhcGhpYy5nZXRCQm94KCk6e30sY29sb3I6YS5pc051bGw/KG5ldyBtKGwuY29sb3IpKS5zZXRPcGFjaXR5KDApLmdldCgpOmwuY29sb3IsbG93ZXJTZXJpZXNPcHRpb25zOmIscG9pbnRPcHRpb25zOmQub3B0aW9ucy5kYXRhW2tdLApwb2ludEluZGV4Omssb2xkRXh0cmVtZXM6e3hNaW46ZiYmZi51c2VyTWluLHhNYXg6ZiYmZi51c2VyTWF4LHlNaW46ZSYmZS51c2VyTWluLHlNYXg6ZSYmZS51c2VyTWF4fSxyZXNldFpvb21CdXR0b246dGhpcy5yZXNldFpvb21CdXR0b259LGwpO3RoaXMuZHJpbGxkb3duTGV2ZWxzLnB1c2goYSk7ZiYmZi5uYW1lcyYmKGYubmFtZXMubGVuZ3RoPTApO2I9YS5sb3dlclNlcmllcz10aGlzLmFkZFNlcmllcyhiLCExKTtiLm9wdGlvbnMuX2xldmVsTnVtYmVyPWMrMTtmJiYoZi5vbGRQb3M9Zi5wb3MsZi51c2VyTWluPWYudXNlck1heD1udWxsLGUudXNlck1pbj1lLnVzZXJNYXg9bnVsbCk7ZC50eXBlPT09Yi50eXBlJiYoYi5hbmltYXRlPWIuYW5pbWF0ZURyaWxsZG93bnx8SSxiLm9wdGlvbnMuYW5pbWF0aW9uPSEwKX07Yy5wcm90b3R5cGUuYXBwbHlEcmlsbGRvd249ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmRyaWxsZG93bkxldmVscztpZihhJiYwPGEubGVuZ3RoKXt2YXIgYj1hW2EubGVuZ3RoLQoxXS5sZXZlbE51bWJlcjt0aGlzLmRyaWxsZG93bkxldmVscy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EubGV2ZWxOdW1iZXI9PT1iJiZhLmxldmVsU2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYSl7YS5vcHRpb25zJiZhLm9wdGlvbnMuX2xldmVsTnVtYmVyPT09YiYmYS5yZW1vdmUoITEpfSl9KX10aGlzLnJlc2V0Wm9vbUJ1dHRvbiYmKHRoaXMucmVzZXRab29tQnV0dG9uLmhpZGUoKSxkZWxldGUgdGhpcy5yZXNldFpvb21CdXR0b24pO3RoaXMucG9pbnRlci5yZXNldCgpO3RoaXMucmVkcmF3KCk7dGhpcy5zaG93RHJpbGxVcEJ1dHRvbigpO3godGhpcywiYWZ0ZXJEcmlsbGRvd24iKX07Yy5wcm90b3R5cGUuZ2V0RHJpbGxkb3duQmFja1RleHQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmRyaWxsZG93bkxldmVscztpZihhJiYwPGEubGVuZ3RoKXJldHVybiBhPWFbYS5sZW5ndGgtMV0sYS5zZXJpZXM9YS5zZXJpZXNPcHRpb25zLEcodGhpcy5vcHRpb25zLmxhbmcuZHJpbGxVcFRleHQsYSl9OwpjLnByb3RvdHlwZS5zaG93RHJpbGxVcEJ1dHRvbj1mdW5jdGlvbigpe3ZhciBhPXRoaXMsYj10aGlzLmdldERyaWxsZG93bkJhY2tUZXh0KCksZD1hLm9wdGlvbnMuZHJpbGxkb3duLmRyaWxsVXBCdXR0b24sZjtpZih0aGlzLmRyaWxsVXBCdXR0b24pdGhpcy5kcmlsbFVwQnV0dG9uLmF0dHIoe3RleHQ6Yn0pLmFsaWduKCk7ZWxzZXt2YXIgZT0oZj1kLnRoZW1lKSYmZi5zdGF0ZXM7dGhpcy5kcmlsbFVwQnV0dG9uPXRoaXMucmVuZGVyZXIuYnV0dG9uKGIsbnVsbCxudWxsLGZ1bmN0aW9uKCl7YS5kcmlsbFVwKCl9LGYsZSYmZS5ob3ZlcixlJiZlLnNlbGVjdCkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtZHJpbGx1cC1idXR0b24iKS5hdHRyKHthbGlnbjpkLnBvc2l0aW9uLmFsaWduLHpJbmRleDo3fSkuYWRkKCkuYWxpZ24oZC5wb3NpdGlvbiwhMSxkLnJlbGF0aXZlVG98fCJwbG90Qm94Iil9fTtjLnByb3RvdHlwZS5kcmlsbFVwPWZ1bmN0aW9uKCl7aWYodGhpcy5kcmlsbGRvd25MZXZlbHMmJgowIT09dGhpcy5kcmlsbGRvd25MZXZlbHMubGVuZ3RoKXtmb3IodmFyIGE9dGhpcyxiPWEuZHJpbGxkb3duTGV2ZWxzLGQ9YltiLmxlbmd0aC0xXS5sZXZlbE51bWJlcixmPWIubGVuZ3RoLGU9YS5zZXJpZXMsZyxjLGgsbCxrPWZ1bmN0aW9uKGIpe2UuZm9yRWFjaChmdW5jdGlvbihhKXthLm9wdGlvbnMuX2RkU2VyaWVzSWQ9PT1iLl9kZFNlcmllc0lkJiYoZD1hKX0pO3ZhciBkPWR8fGEuYWRkU2VyaWVzKGIsITEpO2QudHlwZT09PWgudHlwZSYmZC5hbmltYXRlRHJpbGx1cFRvJiYoZC5hbmltYXRlPWQuYW5pbWF0ZURyaWxsdXBUbyk7Yj09PWMuc2VyaWVzUHVyZ2VkT3B0aW9ucyYmKGw9ZCl9O2YtLTspaWYoYz1iW2ZdLGMubGV2ZWxOdW1iZXI9PT1kKXtiLnBvcCgpO2g9Yy5sb3dlclNlcmllcztpZighaC5jaGFydClmb3IoZz1lLmxlbmd0aDtnLS07KWlmKGVbZ10ub3B0aW9ucy5pZD09PWMubG93ZXJTZXJpZXNPcHRpb25zLmlkJiZlW2ddLm9wdGlvbnMuX2xldmVsTnVtYmVyPT09CmQrMSl7aD1lW2ddO2JyZWFrfWgueERhdGE9W107Yy5sZXZlbFNlcmllc09wdGlvbnMuZm9yRWFjaChrKTt4KGEsImRyaWxsdXAiLHtzZXJpZXNPcHRpb25zOmMuc2VyaWVzUHVyZ2VkT3B0aW9uc3x8Yy5zZXJpZXNPcHRpb25zfSk7bC50eXBlPT09aC50eXBlJiYobC5kcmlsbGRvd25MZXZlbD1jLGwub3B0aW9ucy5hbmltYXRpb249YS5vcHRpb25zLmRyaWxsZG93bi5hbmltYXRpb24saC5hbmltYXRlRHJpbGx1cEZyb20mJmguY2hhcnQmJmguYW5pbWF0ZURyaWxsdXBGcm9tKGMpKTtsLm9wdGlvbnMuX2xldmVsTnVtYmVyPWQ7aC5yZW1vdmUoITEpO2wueEF4aXMmJihnPWMub2xkRXh0cmVtZXMsbC54QXhpcy5zZXRFeHRyZW1lcyhnLnhNaW4sZy54TWF4LCExKSxsLnlBeGlzLnNldEV4dHJlbWVzKGcueU1pbixnLnlNYXgsITEpKTtjLnJlc2V0Wm9vbUJ1dHRvbiYmKGEucmVzZXRab29tQnV0dG9uPWMucmVzZXRab29tQnV0dG9uLGEucmVzZXRab29tQnV0dG9uLnNob3coKSl9dGhpcy5yZWRyYXcoKTsKMD09PXRoaXMuZHJpbGxkb3duTGV2ZWxzLmxlbmd0aD90aGlzLmRyaWxsVXBCdXR0b249dGhpcy5kcmlsbFVwQnV0dG9uLmRlc3Ryb3koKTp0aGlzLmRyaWxsVXBCdXR0b24uYXR0cih7dGV4dDp0aGlzLmdldERyaWxsZG93bkJhY2tUZXh0KCl9KS5hbGlnbigpO3RoaXMuZGREdXBlcy5sZW5ndGg9W107eChhLCJkcmlsbHVwYWxsIil9fTtuKGMsImFmdGVySW5pdCIsZnVuY3Rpb24oKXt2YXIgYT10aGlzO2EuZHJpbGxkb3duPXt1cGRhdGU6ZnVuY3Rpb24oYixkKXt2KCEwLGEub3B0aW9ucy5kcmlsbGRvd24sYik7dyhkLCEwKSYmYS5yZWRyYXcoKX19fSk7bihjLCJiZWZvcmVTaG93UmVzZXRab29tIixmdW5jdGlvbigpe2lmKHRoaXMuZHJpbGxVcEJ1dHRvbilyZXR1cm4hMX0pO24oYywicmVuZGVyIixmdW5jdGlvbigpeyh0aGlzLnhBeGlzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihhKXthLmRkUG9pbnRzPXt9O2Euc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIGQsZj1iLnhEYXRhfHwKW10sZT1iLnBvaW50cztmb3IoZD0wO2Q8Zi5sZW5ndGg7ZCsrKXt2YXIgYz1iLm9wdGlvbnMuZGF0YVtkXTsibnVtYmVyIiE9PXR5cGVvZiBjJiYoYz1iLnBvaW50Q2xhc3MucHJvdG90eXBlLm9wdGlvbnNUb09iamVjdC5jYWxsKHtzZXJpZXM6Yn0sYyksYy5kcmlsbGRvd24mJihhLmRkUG9pbnRzW2ZbZF1dfHwoYS5kZFBvaW50c1tmW2RdXT1bXSksYS5kZFBvaW50c1tmW2RdXS5wdXNoKGU/ZVtkXTohMCkpKX19KTtDKGEudGlja3MsQS5wcm90b3R5cGUuZHJpbGxhYmxlKX0pfSk7cS5wcm90b3R5cGUuYW5pbWF0ZURyaWxsdXBUbz1mdW5jdGlvbihhKXtpZighYSl7dmFyIGI9dGhpcyxkPWIuZHJpbGxkb3duTGV2ZWw7dGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLmRhdGFMYWJlbDthLmdyYXBoaWMmJmEuZ3JhcGhpYy5oaWRlKCk7YiYmKGIuaGlkZGVuPSJoaWRkZW4iPT09Yi5hdHRyKCJ2aXNpYmlsaXR5IiksYi5oaWRkZW58fChiLmhpZGUoKSxhLmNvbm5lY3RvciYmCmEuY29ubmVjdG9yLmhpZGUoKSkpfSk7SChmdW5jdGlvbigpe2IucG9pbnRzJiZiLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEsYil7Yj1iPT09KGQmJmQucG9pbnRJbmRleCk/InNob3ciOiJmYWRlSW4iO3ZhciBjPSJzaG93Ij09PWI/ITA6dm9pZCAwLGY9YS5kYXRhTGFiZWw7aWYoYS5ncmFwaGljKWEuZ3JhcGhpY1tiXShjKTtmJiYhZi5oaWRkZW4mJihmLmZhZGVJbigpLGEuY29ubmVjdG9yJiZhLmNvbm5lY3Rvci5mYWRlSW4oKSl9KX0sTWF0aC5tYXgodGhpcy5jaGFydC5vcHRpb25zLmRyaWxsZG93bi5hbmltYXRpb24uZHVyYXRpb24tNTAsMCkpO2RlbGV0ZSB0aGlzLmFuaW1hdGV9fTtxLnByb3RvdHlwZS5hbmltYXRlRHJpbGxkb3duPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsZD10aGlzLmNoYXJ0LGM9ZC5kcmlsbGRvd25MZXZlbHMsZSxnPUIoZC5vcHRpb25zLmRyaWxsZG93bi5hbmltYXRpb24pLHI9dGhpcy54QXhpcyxoPWQuc3R5bGVkTW9kZTthfHwoYy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2Iub3B0aW9ucy5fZGRTZXJpZXNJZD09PQphLmxvd2VyU2VyaWVzT3B0aW9ucy5fZGRTZXJpZXNJZCYmKGU9YS5zaGFwZUFyZ3MsaHx8KGUuZmlsbD1hLmNvbG9yKSl9KSxlLngrPXcoci5vbGRQb3Msci5wb3MpLXIucG9zLHRoaXMucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGQ9YS5zaGFwZUFyZ3M7aHx8KGQuZmlsbD1hLmNvbG9yKTthLmdyYXBoaWMmJmEuZ3JhcGhpYy5hdHRyKGUpLmFuaW1hdGUodShhLnNoYXBlQXJncyx7ZmlsbDphLmNvbG9yfHxiLmNvbG9yfSksZyk7YS5kYXRhTGFiZWwmJmEuZGF0YUxhYmVsLmZhZGVJbihnKX0pLGRlbGV0ZSB0aGlzLmFuaW1hdGUpfTtxLnByb3RvdHlwZS5hbmltYXRlRHJpbGx1cEZyb209ZnVuY3Rpb24oYSl7dmFyIGI9Qih0aGlzLmNoYXJ0Lm9wdGlvbnMuZHJpbGxkb3duLmFuaW1hdGlvbiksZD10aGlzLmdyb3VwLGM9ZCE9PXRoaXMuY2hhcnQuY29sdW1uR3JvdXAsZT10aGlzO2UudHJhY2tlckdyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2lmKGVbYV0pZVthXS5vbigibW91c2VvdmVyIil9KTsKYyYmZGVsZXRlIHRoaXMuZ3JvdXA7dGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihmKXt2YXIgZz1mLmdyYXBoaWMsaD1hLnNoYXBlQXJncyxsPWZ1bmN0aW9uKCl7Zy5kZXN0cm95KCk7ZCYmYyYmKGQ9ZC5kZXN0cm95KCkpfTtnJiZoJiYoZGVsZXRlIGYuZ3JhcGhpYyxlLmNoYXJ0LnN0eWxlZE1vZGV8fChoLmZpbGw9YS5jb2xvciksYi5kdXJhdGlvbj9nLmFuaW1hdGUoaCx2KGIse2NvbXBsZXRlOmx9KSk6KGcuYXR0cihoKSxsKCkpKX0pfTtrJiZ1KGsucHJvdG90eXBlLHthbmltYXRlRHJpbGx1cFRvOnEucHJvdG90eXBlLmFuaW1hdGVEcmlsbHVwVG8sYW5pbWF0ZURyaWxsdXBGcm9tOnEucHJvdG90eXBlLmFuaW1hdGVEcmlsbHVwRnJvbSxhbmltYXRlRHJpbGxkb3duOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY2hhcnQuZHJpbGxkb3duTGV2ZWxzW3RoaXMuY2hhcnQuZHJpbGxkb3duTGV2ZWxzLmxlbmd0aC0xXSxkPXRoaXMuY2hhcnQub3B0aW9ucy5kcmlsbGRvd24uYW5pbWF0aW9uOwp0aGlzLmlzKCJpdGVtIikmJihkLmR1cmF0aW9uPTApO2lmKHRoaXMuY2VudGVyKXt2YXIgYz1iLnNoYXBlQXJncyxlPWMuc3RhcnQsZz0oYy5lbmQtZSkvdGhpcy5wb2ludHMubGVuZ3RoLGs9dGhpcy5jaGFydC5zdHlsZWRNb2RlO2F8fCh0aGlzLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEsZil7dmFyIGg9YS5zaGFwZUFyZ3M7a3x8KGMuZmlsbD1iLmNvbG9yLGguZmlsbD1hLmNvbG9yKTtpZihhLmdyYXBoaWMpYS5ncmFwaGljLmF0dHIodihjLHtzdGFydDplK2YqZyxlbmQ6ZSsoZisxKSpnfSkpW2Q/ImFuaW1hdGUiOiJhdHRyIl0oaCxkKX0pLGRlbGV0ZSB0aGlzLmFuaW1hdGUpfX19KTt5LnByb3RvdHlwZS5kb0RyaWxsZG93bj1mdW5jdGlvbihhLGIsZCl7dmFyIGM9dGhpcy5zZXJpZXMuY2hhcnQsZT1jLm9wdGlvbnMuZHJpbGxkb3duLGc9KGUuc2VyaWVzfHxbXSkubGVuZ3RoO2MuZGREdXBlc3x8KGMuZGREdXBlcz1bXSk7Zm9yKDtnLS0mJiFrOylpZihlLnNlcmllc1tnXS5pZD09PQp0aGlzLmRyaWxsZG93biYmLTE9PT1jLmRkRHVwZXMuaW5kZXhPZih0aGlzLmRyaWxsZG93bikpe3ZhciBrPWUuc2VyaWVzW2ddO2MuZGREdXBlcy5wdXNoKHRoaXMuZHJpbGxkb3duKX14KGMsImRyaWxsZG93biIse3BvaW50OnRoaXMsc2VyaWVzT3B0aW9uczprLGNhdGVnb3J5OmIsb3JpZ2luYWxFdmVudDpkLHBvaW50czoidW5kZWZpbmVkIiE9PXR5cGVvZiBiJiZ0aGlzLnNlcmllcy54QXhpcy5nZXRERFBvaW50cyhiKS5zbGljZSgwKX0sZnVuY3Rpb24oYil7dmFyIGQ9Yi5wb2ludC5zZXJpZXMmJmIucG9pbnQuc2VyaWVzLmNoYXJ0LGM9Yi5zZXJpZXNPcHRpb25zO2QmJmMmJihhP2QuYWRkU2luZ2xlU2VyaWVzQXNEcmlsbGRvd24oYi5wb2ludCxjKTpkLmFkZFNlcmllc0FzRHJpbGxkb3duKGIucG9pbnQsYykpfSl9O3AuQXhpcy5wcm90b3R5cGUuZHJpbGxkb3duQ2F0ZWdvcnk9ZnVuY3Rpb24oYSxiKXtDKHRoaXMuZ2V0RERQb2ludHMoYSksZnVuY3Rpb24oZCl7ZCYmZC5zZXJpZXMmJgpkLnNlcmllcy52aXNpYmxlJiZkLmRvRHJpbGxkb3duJiZkLmRvRHJpbGxkb3duKCEwLGEsYil9KTt0aGlzLmNoYXJ0LmFwcGx5RHJpbGxkb3duKCl9O3AuQXhpcy5wcm90b3R5cGUuZ2V0RERQb2ludHM9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZGRQb2ludHMmJnRoaXMuZGRQb2ludHNbYV19O0EucHJvdG90eXBlLmRyaWxsYWJsZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMucG9zLGI9dGhpcy5sYWJlbCxkPXRoaXMuYXhpcyxjPSJ4QXhpcyI9PT1kLmNvbGwmJmQuZ2V0RERQb2ludHMsZT1jJiZkLmdldEREUG9pbnRzKGEpLGc9ZC5jaGFydC5zdHlsZWRNb2RlO2MmJihiJiZlJiZlLmxlbmd0aD8oYi5kcmlsbGFibGU9ITAsYi5iYXNpY1N0eWxlc3x8Z3x8KGIuYmFzaWNTdHlsZXM9dihiLnN0eWxlcykpLGIuYWRkQ2xhc3MoImhpZ2hjaGFydHMtZHJpbGxkb3duLWF4aXMtbGFiZWwiKSxiLnJlbW92ZU9uRHJpbGxhYmxlQ2xpY2smJkYoYi5lbGVtZW50LCJjbGljayIpLGIucmVtb3ZlT25EcmlsbGFibGVDbGljaz0KbihiLmVsZW1lbnQsImNsaWNrIixmdW5jdGlvbihiKXtiLnByZXZlbnREZWZhdWx0KCk7ZC5kcmlsbGRvd25DYXRlZ29yeShhLGIpfSksZ3x8Yi5jc3MoZC5jaGFydC5vcHRpb25zLmRyaWxsZG93bi5hY3RpdmVBeGlzTGFiZWxTdHlsZSkpOmImJmIuZHJpbGxhYmxlJiZiLnJlbW92ZU9uRHJpbGxhYmxlQ2xpY2smJihnfHwoYi5zdHlsZXM9e30sYi5jc3MoYi5iYXNpY1N0eWxlcykpLGIucmVtb3ZlT25EcmlsbGFibGVDbGljaygpLGIucmVtb3ZlQ2xhc3MoImhpZ2hjaGFydHMtZHJpbGxkb3duLWF4aXMtbGFiZWwiKSkpfTtuKHksImFmdGVySW5pdCIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLGI9YS5zZXJpZXM7YS5kcmlsbGRvd24mJm4oYSwiY2xpY2siLGZ1bmN0aW9uKGMpe2IueEF4aXMmJiExPT09Yi5jaGFydC5vcHRpb25zLmRyaWxsZG93bi5hbGxvd1BvaW50RHJpbGxkb3duP2IueEF4aXMuZHJpbGxkb3duQ2F0ZWdvcnkoYS54LGMpOmEuZG9EcmlsbGRvd24odm9pZCAwLHZvaWQgMCwKYyl9KTtyZXR1cm4gYX0pO24ocC5TZXJpZXMsImFmdGVyRHJhd0RhdGFMYWJlbHMiLGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jaGFydC5vcHRpb25zLmRyaWxsZG93bi5hY3RpdmVEYXRhTGFiZWxTdHlsZSxiPXRoaXMuY2hhcnQucmVuZGVyZXIsYz10aGlzLmNoYXJ0LnN0eWxlZE1vZGU7dGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihkKXt2YXIgZT1kLm9wdGlvbnMuZGF0YUxhYmVscyxmPXcoZC5kbE9wdGlvbnMsZSYmZS5zdHlsZSx7fSk7ZC5kcmlsbGRvd24mJmQuZGF0YUxhYmVsJiYoImNvbnRyYXN0IiE9PWEuY29sb3J8fGN8fChmLmNvbG9yPWIuZ2V0Q29udHJhc3QoZC5jb2xvcnx8dGhpcy5jb2xvcikpLGUmJmUuY29sb3ImJihmLmNvbG9yPWUuY29sb3IpLGQuZGF0YUxhYmVsLmFkZENsYXNzKCJoaWdoY2hhcnRzLWRyaWxsZG93bi1kYXRhLWxhYmVsIiksY3x8ZC5kYXRhTGFiZWwuY3NzKGEpLmNzcyhmKSl9LHRoaXMpfSk7dmFyIHo9ZnVuY3Rpb24oYSxiLGMsZil7YVtjPwoiYWRkQ2xhc3MiOiJyZW1vdmVDbGFzcyJdKCJoaWdoY2hhcnRzLWRyaWxsZG93bi1wb2ludCIpO2Z8fGEuY3NzKHtjdXJzb3I6Yn0pfTtuKHAuU2VyaWVzLCJhZnRlckRyYXdUcmFja2VyIixmdW5jdGlvbigpe3ZhciBhPXRoaXMuY2hhcnQuc3R5bGVkTW9kZTt0aGlzLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuZHJpbGxkb3duJiZiLmdyYXBoaWMmJnooYi5ncmFwaGljLCJwb2ludGVyIiwhMCxhKX0pfSk7bih5LCJhZnRlclNldFN0YXRlIixmdW5jdGlvbigpe3ZhciBhPXRoaXMuc2VyaWVzLmNoYXJ0LnN0eWxlZE1vZGU7dGhpcy5kcmlsbGRvd24mJnRoaXMuc2VyaWVzLmhhbG8mJiJob3ZlciI9PT10aGlzLnN0YXRlP3oodGhpcy5zZXJpZXMuaGFsbywicG9pbnRlciIsITAsYSk6dGhpcy5zZXJpZXMuaGFsbyYmeih0aGlzLnNlcmllcy5oYWxvLCJhdXRvIiwhMSxhKX0pfSk7bShjLCJtYXN0ZXJzL21vZHVsZXMvZHJpbGxkb3duLnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1kcmlsbGRvd24uanMubWFw"></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIEl0ZW0gc2VyaWVzIHR5cGUgZm9yIEhpZ2hjaGFydHMKCiAoYykgMjAxOSBUb3JzdGVpbiBIb25zaQoKIExpY2Vuc2U6IHd3dy5oaWdoY2hhcnRzLmNvbS9saWNlbnNlCiovCihmdW5jdGlvbihiKXsib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzPyhiWyJkZWZhdWx0Il09Yixtb2R1bGUuZXhwb3J0cz1iKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoImhpZ2hjaGFydHMvbW9kdWxlcy9pdGVtLXNlcmllcyIsWyJoaWdoY2hhcnRzIl0sZnVuY3Rpb24oZCl7YihkKTtiLkhpZ2hjaGFydHM9ZDtyZXR1cm4gYn0pOmIoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihiKXtmdW5jdGlvbiBkKGIsZCxjLEMpe2IuaGFzT3duUHJvcGVydHkoZCl8fChiW2RdPUMuYXBwbHkobnVsbCxjKSl9Yj1iP2IuX21vZHVsZXM6e307ZChiLCJtb2R1bGVzL2l0ZW0tc2VyaWVzLnNyYy5qcyIsW2JbInBhcnRzL0dsb2JhbHMuanMiXSxiWyJwYXJ0cy9PcHRpb25zLmpzIl0sYlsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGIsZCxjKXt2YXIgQz1jLmRlZmluZWQsCkY9Yy5leHRlbmQsRz1jLmZpcmVFdmVudCxEPWMuaXNOdW1iZXIsSD1jLm1lcmdlLEk9Yy5vYmplY3RFYWNoLEo9Yy5waWNrO2M9Yy5zZXJpZXNUeXBlO3ZhciBtPWIuc2VyaWVzVHlwZXMucGllLnByb3RvdHlwZS5wb2ludENsYXNzLnByb3RvdHlwZTtjKCJpdGVtIiwicGllIix7ZW5kQW5nbGU6dm9pZCAwLGlubmVyU2l6ZToiNDAlIixpdGVtUGFkZGluZzouMSxsYXlvdXQ6InZlcnRpY2FsIixtYXJrZXI6SChkLmRlZmF1bHRPcHRpb25zLnBsb3RPcHRpb25zLmxpbmUubWFya2VyLHtyYWRpdXM6bnVsbH0pLHJvd3M6dm9pZCAwLGNyaXNwOiExLHNob3dJbkxlZ2VuZDohMCxzdGFydEFuZ2xlOnZvaWQgMH0se21hcmtlckF0dHJpYnM6dm9pZCAwLHRyYW5zbGF0ZTpmdW5jdGlvbihhKXswPT09dGhpcy50b3RhbCYmKHRoaXMuY2VudGVyPXRoaXMuZ2V0Q2VudGVyKCkpO3RoaXMuc2xvdHN8fCh0aGlzLnNsb3RzPVtdKTtEKHRoaXMub3B0aW9ucy5zdGFydEFuZ2xlKSYmRCh0aGlzLm9wdGlvbnMuZW5kQW5nbGUpPwooYi5zZXJpZXNUeXBlcy5waWUucHJvdG90eXBlLnRyYW5zbGF0ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5zbG90cz10aGlzLmdldFNsb3RzKCkpOih0aGlzLmdlbmVyYXRlUG9pbnRzKCksRyh0aGlzLCJhZnRlclRyYW5zbGF0ZSIpKX0sZ2V0U2xvdHM6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpezA8QiYmKGEucm93LmNvbENvdW50LS0sQi0tKX1mb3IodmFyIGI9dGhpcy5jZW50ZXIsYz1iWzJdLGQ9YlszXSx4LG49dGhpcy5zbG90cyxyLHksdCx1LHYsZixsLHcsaD0wLHAsej10aGlzLmVuZEFuZ2xlUmFkLXRoaXMuc3RhcnRBbmdsZVJhZCxxPU51bWJlci5NQVhfVkFMVUUsQSxlLGssZz10aGlzLm9wdGlvbnMucm93cyxtPShjLWQpL2MsRT0wPT09eiUoMipNYXRoLlBJKTtxPnRoaXMudG90YWwrKGUmJkU/ZS5sZW5ndGg6MCk7KWZvcihBPXEscT1uLmxlbmd0aD0wLGU9ayxrPVtdLGgrKyxwPWMvaC8yLGc/KGQ9KHAtZykvcCpjLDA8PWQ/cD1nOihkPTAsbT0xKSk6cD1NYXRoLmZsb29yKHAqCm0pLHg9cDswPHg7eC0tKXQ9KGQreC9wKihjLWQtaCkpLzIsdT16KnQsdj1NYXRoLmNlaWwodS9oKSxrLnB1c2goe3Jvd1JhZGl1czp0LHJvd0xlbmd0aDp1LGNvbENvdW50OnZ9KSxxKz12KzE7aWYoZSl7Zm9yKHZhciBCPUEtdGhpcy50b3RhbC0oRT9lLmxlbmd0aDowKTswPEI7KWUubWFwKGZ1bmN0aW9uKGEpe3JldHVybnthbmdsZTphLmNvbENvdW50L2Eucm93TGVuZ3RoLHJvdzphfX0pLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi5hbmdsZS1hLmFuZ2xlfSkuc2xpY2UoMCxNYXRoLm1pbihCLE1hdGguY2VpbChlLmxlbmd0aC8yKSkpLmZvckVhY2goYSk7ZS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBjPWEucm93UmFkaXVzO2Y9KGE9YS5jb2xDb3VudCk/ei9hOjA7Zm9yKHc9MDt3PD1hO3crPTEpbD10aGlzLnN0YXJ0QW5nbGVSYWQrdypmLHI9YlswXStNYXRoLmNvcyhsKSpjLHk9YlsxXStNYXRoLnNpbihsKSpjLG4ucHVzaCh7eDpyLHk6eSxhbmdsZTpsfSl9LHRoaXMpOwpuLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5hbmdsZS1iLmFuZ2xlfSk7dGhpcy5pdGVtU2l6ZT1oO3JldHVybiBufX0sZ2V0Um93czpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucy5yb3dzO2lmKCFhKXt2YXIgYj10aGlzLmNoYXJ0LnBsb3RXaWR0aC90aGlzLmNoYXJ0LnBsb3RIZWlnaHQ7YT1NYXRoLnNxcnQodGhpcy50b3RhbCk7aWYoMTxiKWZvcihhPU1hdGguY2VpbChhKTswPGE7KXt2YXIgYz10aGlzLnRvdGFsL2E7aWYoYy9hPmIpYnJlYWs7YS0tfWVsc2UgZm9yKGE9TWF0aC5mbG9vcihhKTthPHRoaXMudG90YWw7KXtjPXRoaXMudG90YWwvYTtpZihjL2E8YilicmVhazthKyt9fXJldHVybiBhfSxkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPXRoaXMub3B0aW9ucyxjPWEuY2hhcnQucmVuZGVyZXIsZD1iLm1hcmtlcixtPXRoaXMuYm9yZGVyV2lkdGglMj8uNToxLG49MCxyPXRoaXMuZ2V0Um93cygpLHk9TWF0aC5jZWlsKHRoaXMudG90YWwvciksCnQ9dGhpcy5jaGFydC5wbG90V2lkdGgveSx1PXRoaXMuY2hhcnQucGxvdEhlaWdodC9yLHY9dGhpcy5pdGVtU2l6ZXx8TWF0aC5taW4odCx1KTt0aGlzLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGYpe3ZhciBsLHcsaD1mLm1hcmtlcnx8e30scD1oLnN5bWJvbHx8ZC5zeW1ib2w7aD1KKGgucmFkaXVzLGQucmFkaXVzKTt2YXIgej1DKGgpPzIqaDp2LHE9eipiLml0ZW1QYWRkaW5nLEE7Zi5ncmFwaGljcz1sPWYuZ3JhcGhpY3N8fHt9O2EuY2hhcnQuc3R5bGVkTW9kZXx8KHc9YS5wb2ludEF0dHJpYnMoZixmLnNlbGVjdGVkJiYic2VsZWN0IikpO2lmKCFmLmlzTnVsbCYmZi52aXNpYmxlKXtmLmdyYXBoaWN8fChmLmdyYXBoaWM9Yy5nKCJwb2ludCIpLmFkZChhLmdyb3VwKSk7Zm9yKHZhciBlPTA7ZTxmLnk7ZSsrKXtpZihhLmNlbnRlciYmYS5zbG90cyl7dmFyIGs9YS5zbG90cy5zaGlmdCgpO3ZhciBnPWsueC12LzI7az1rLnktdi8yfWVsc2UiaG9yaXpvbnRhbCI9PT1iLmxheW91dD8KKGc9biV5KnQsaz11Kk1hdGguZmxvb3Iobi95KSk6KGc9dCpNYXRoLmZsb29yKG4vciksaz1uJXIqdSk7Zys9cTtrKz1xO3ZhciB4PUE9TWF0aC5yb3VuZCh6LTIqcSk7YS5vcHRpb25zLmNyaXNwJiYoZz1NYXRoLnJvdW5kKGcpLW0saz1NYXRoLnJvdW5kKGspK20pO2c9e3g6Zyx5Omssd2lkdGg6QSxoZWlnaHQ6eH07InVuZGVmaW5lZCIhPT10eXBlb2YgaCYmKGcucj1oKTtsW2VdP2xbZV0uYW5pbWF0ZShnKTpsW2VdPWMuc3ltYm9sKHAsbnVsbCxudWxsLG51bGwsbnVsbCx7YmFja2dyb3VuZFNpemU6IndpdGhpbiJ9KS5hdHRyKEYoZyx3KSkuYWRkKGYuZ3JhcGhpYyk7bFtlXS5pc0FjdGl2ZT0hMDtuKyt9fUkobCxmdW5jdGlvbihhLGIpe2EuaXNBY3RpdmU/YS5pc0FjdGl2ZT0hMTooYS5kZXN0cm95KCksZGVsZXRlIGxbYl0pfSl9KX0sZHJhd0RhdGFMYWJlbHM6ZnVuY3Rpb24oKXt0aGlzLmNlbnRlciYmdGhpcy5zbG90cz9iLnNlcmllc1R5cGVzLnBpZS5wcm90b3R5cGUuZHJhd0RhdGFMYWJlbHMuY2FsbCh0aGlzKToKdGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihhKXthLmRlc3Ryb3lFbGVtZW50cyh7ZGF0YUxhYmVsOjF9KX0pfSxhbmltYXRlOmZ1bmN0aW9uKGEpe2E/dGhpcy5ncm91cC5hdHRyKHtvcGFjaXR5OjB9KTp0aGlzLmdyb3VwLmFuaW1hdGUoe29wYWNpdHk6MX0sdGhpcy5vcHRpb25zLmFuaW1hdGlvbil9fSx7Y29ubmVjdG9yU2hhcGVzOm0uY29ubmVjdG9yU2hhcGVzLGdldENvbm5lY3RvclBhdGg6bS5nZXRDb25uZWN0b3JQYXRoLHNldFZpc2libGU6bS5zZXRWaXNpYmxlLGdldFRyYW5zbGF0ZTptLmdldFRyYW5zbGF0ZX0pOyIifSk7ZChiLCJtYXN0ZXJzL21vZHVsZXMvaXRlbS1zZXJpZXMuc3JjLmpzIixbXSxmdW5jdGlvbigpe30pfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWl0ZW0tc2VyaWVzLmpzLm1hcA=="></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIENsaWVudCBzaWRlIGV4cG9ydGluZyBtb2R1bGUKCiAoYykgMjAxNS0yMDE5IFRvcnN0ZWluIEhvbnNpIC8gT3lzdGVpbiBNb3NlbmcKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24oYSl7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8oYVsiZGVmYXVsdCJdPWEsbW9kdWxlLmV4cG9ydHM9YSk6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL21vZHVsZXMvb2ZmbGluZS1leHBvcnRpbmciLFsiaGlnaGNoYXJ0cyIsImhpZ2hjaGFydHMvbW9kdWxlcy9leHBvcnRpbmciXSxmdW5jdGlvbihoKXthKGgpO2EuSGlnaGNoYXJ0cz1oO3JldHVybiBhfSk6YSgidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGgoYSxiLHEsayl7YS5oYXNPd25Qcm9wZXJ0eShiKXx8KGFbYl09ay5hcHBseShudWxsLHEpKX1hPWE/YS5fbW9kdWxlczp7fTtoKGEsIm1peGlucy9kb3dubG9hZC11cmwuanMiLFthWyJwYXJ0cy9HbG9iYWxzLmpzIl1dLGZ1bmN0aW9uKGEpe3ZhciBiPWEud2luLHE9Yi5uYXZpZ2F0b3IsCms9Yi5kb2N1bWVudCxuPWIuVVJMfHxiLndlYmtpdFVSTHx8YixlPS9FZGdlXC9cZCsvLnRlc3QocS51c2VyQWdlbnQpO2EuZGF0YVVSTHRvQmxvYj1mdW5jdGlvbihhKXtpZigoYT1hLm1hdGNoKC9kYXRhOihbXjtdKikoO2Jhc2U2NCk/LChbMC05QS1aYS16Ky9dKykvKSkmJjM8YS5sZW5ndGgmJmIuYXRvYiYmYi5BcnJheUJ1ZmZlciYmYi5VaW50OEFycmF5JiZiLkJsb2ImJm4uY3JlYXRlT2JqZWN0VVJMKXt2YXIgZz1iLmF0b2IoYVszXSksZD1uZXcgYi5BcnJheUJ1ZmZlcihnLmxlbmd0aCk7ZD1uZXcgYi5VaW50OEFycmF5KGQpO2Zvcih2YXIgZT0wO2U8ZC5sZW5ndGg7KytlKWRbZV09Zy5jaGFyQ29kZUF0KGUpO2E9bmV3IGIuQmxvYihbZF0se3R5cGU6YVsxXX0pO3JldHVybiBuLmNyZWF0ZU9iamVjdFVSTChhKX19O2EuZG93bmxvYWRVUkw9ZnVuY3Rpb24oZyxuKXt2YXIgZD1rLmNyZWF0ZUVsZW1lbnQoImEiKTtpZigic3RyaW5nIj09PXR5cGVvZiBnfHxnIGluc3RhbmNlb2YKU3RyaW5nfHwhcS5tc1NhdmVPck9wZW5CbG9iKXtpZihlfHwyRTY8Zy5sZW5ndGgpaWYoZz1hLmRhdGFVUkx0b0Jsb2IoZyksIWcpdGhyb3cgRXJyb3IoIkZhaWxlZCB0byBjb252ZXJ0IHRvIGJsb2IiKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBkLmRvd25sb2FkKWQuaHJlZj1nLGQuZG93bmxvYWQ9bixrLmJvZHkuYXBwZW5kQ2hpbGQoZCksZC5jbGljaygpLGsuYm9keS5yZW1vdmVDaGlsZChkKTtlbHNlIHRyeXt2YXIgaD1iLm9wZW4oZywiY2hhcnQiKTtpZigidW5kZWZpbmVkIj09PXR5cGVvZiBofHxudWxsPT09aCl0aHJvdyBFcnJvcigiRmFpbGVkIHRvIG9wZW4gd2luZG93Iik7fWNhdGNoKEEpe2IubG9jYXRpb24uaHJlZj1nfX1lbHNlIHEubXNTYXZlT3JPcGVuQmxvYihnLG4pfX0pO2goYSwibW9kdWxlcy9vZmZsaW5lLWV4cG9ydGluZy5zcmMuanMiLFthWyJwYXJ0cy9DaGFydC5qcyJdLGFbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJwYXJ0cy9TVkdSZW5kZXJlci5qcyJdLAphWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxiLGgsayl7ZnVuY3Rpb24gbihhLGIpe3ZhciBmPWcuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXSxjPWcuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7Yy50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiO2Muc3JjPWE7Yy5vbmxvYWQ9YjtjLm9uZXJyb3I9ZnVuY3Rpb24oKXtkKCJFcnJvciBsb2FkaW5nIHNjcmlwdCAiK2EpfTtmLmFwcGVuZENoaWxkKGMpfXZhciBlPWIud2luLGc9Yi5kb2MscT1rLmFkZEV2ZW50LGQ9ay5lcnJvcixGPWsuZXh0ZW5kLEE9ay5nZXRPcHRpb25zLEM9ay5tZXJnZSxEPWUuVVJMfHxlLndlYmtpdFVSTHx8ZSx4PWUubmF2aWdhdG9yLEI9L0VkZ2VcL3xUcmlkZW50XC98TVNJRSAvLnRlc3QoeC51c2VyQWdlbnQpLEc9Qj8xNTA6MDtiLkNhblZHUmVuZGVyZXI9e307Yi5zdmdUb0RhdGFVcmw9ZnVuY3Rpb24oYSl7dmFyIGI9LTE8eC51c2VyQWdlbnQuaW5kZXhPZigiV2ViS2l0IikmJjA+eC51c2VyQWdlbnQuaW5kZXhPZigiQ2hyb21lIik7CnRyeXtpZighYiYmMD54LnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImZpcmVmb3giKSlyZXR1cm4gRC5jcmVhdGVPYmplY3RVUkwobmV3IGUuQmxvYihbYV0se3R5cGU6ImltYWdlL3N2Zyt4bWw7Y2hhcnNldC11dGYtMTYifSkpfWNhdGNoKGYpe31yZXR1cm4iZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsIitlbmNvZGVVUklDb21wb25lbnQoYSl9O2IuaW1hZ2VUb0RhdGFVcmw9ZnVuY3Rpb24oYSxiLGYsYyxkLG0saCx0LHope3ZhciBsPW5ldyBlLkltYWdlLHI9ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGU9Zy5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSxtPWUuZ2V0Q29udGV4dCYmZS5nZXRDb250ZXh0KCIyZCIpO3RyeXtpZihtKXtlLmhlaWdodD1sLmhlaWdodCpjO2Uud2lkdGg9bC53aWR0aCpjO20uZHJhd0ltYWdlKGwsMCwwLGUud2lkdGgsZS5oZWlnaHQpO3RyeXt2YXIgeT1lLnRvRGF0YVVSTChiKTtkKHksYixmLGMpfWNhdGNoKEUpe2soYSwKYixmLGMpfX1lbHNlIGgoYSxiLGYsYyl9ZmluYWxseXt6JiZ6KGEsYixmLGMpfX0sRyl9LHU9ZnVuY3Rpb24oKXt0KGEsYixmLGMpO3omJnooYSxiLGYsYyl9O3ZhciBrPWZ1bmN0aW9uKCl7bD1uZXcgZS5JbWFnZTtrPW07bC5jcm9zc09yaWdpbj0iQW5vbnltb3VzIjtsLm9ubG9hZD1yO2wub25lcnJvcj11O2wuc3JjPWF9O2wub25sb2FkPXI7bC5vbmVycm9yPXU7bC5zcmM9YX07Yi5kb3dubG9hZFNWR0xvY2FsPWZ1bmN0aW9uKGEsZCxmLGMpe2Z1bmN0aW9uIHUoYSxiKXt2YXIgYz1hLndpZHRoLmJhc2VWYWwudmFsdWUrMipiO2I9YS5oZWlnaHQuYmFzZVZhbC52YWx1ZSsyKmI7Yz1uZXcgZS5qc1BERihiPmM/InAiOiJsIiwicHQiLFtjLGJdKTtbXS5mb3JFYWNoLmNhbGwoYS5xdWVyeVNlbGVjdG9yQWxsKCcqW3Zpc2liaWxpdHk9ImhpZGRlbiJdJyksZnVuY3Rpb24oYSl7YS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpfSk7ZS5zdmcycGRmKGEsYyx7cmVtb3ZlSW52YWxpZDohMH0pOwpyZXR1cm4gYy5vdXRwdXQoImRhdGF1cmlzdHJpbmciKX1mdW5jdGlvbiBtKCl7aC5pbm5lckhUTUw9YTt2YXIgZT1oLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IiksZDtbXS5mb3JFYWNoLmNhbGwoZSxmdW5jdGlvbihhKXtbImZvbnQtZmFtaWx5IiwiZm9udC1zaXplIl0uZm9yRWFjaChmdW5jdGlvbihiKXtmb3IodmFyIGM9YTtjJiZjIT09aDspe2lmKGMuc3R5bGVbYl0pe2Euc3R5bGVbYl09Yy5zdHlsZVtiXTticmVha31jPWMucGFyZW50Tm9kZX19KTthLnN0eWxlWyJmb250LWZhbWlseSJdPWEuc3R5bGVbImZvbnQtZmFtaWx5Il0mJmEuc3R5bGVbImZvbnQtZmFtaWx5Il0uc3BsaXQoIiAiKS5zcGxpY2UoLTEpO2Q9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGl0bGUiKTtbXS5mb3JFYWNoLmNhbGwoZCxmdW5jdGlvbihiKXthLnJlbW92ZUNoaWxkKGIpfSl9KTtlPXUoaC5maXJzdENoaWxkLDApO3RyeXtiLmRvd25sb2FkVVJMKGUsciksYyYmYygpfWNhdGNoKEgpe2YoSCl9fQp2YXIgaz0hMCx0PWQubGliVVJMfHxBKCkuZXhwb3J0aW5nLmxpYlVSTCxoPWcuY3JlYXRlRWxlbWVudCgiZGl2IiksbD1kLnR5cGV8fCJpbWFnZS9wbmciLHI9KGQuZmlsZW5hbWV8fCJjaGFydCIpKyIuIisoImltYWdlL3N2Zyt4bWwiPT09bD8ic3ZnIjpsLnNwbGl0KCIvIilbMV0pLHE9ZC5zY2FsZXx8MTt0PSIvIiE9PXQuc2xpY2UoLTEpP3QrIi8iOnQ7aWYoImltYWdlL3N2Zyt4bWwiPT09bCl0cnl7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgeC5tc1NhdmVPck9wZW5CbG9iKXt2YXIgdz1uZXcgTVNCbG9iQnVpbGRlcjt3LmFwcGVuZChhKTt2YXIgcD13LmdldEJsb2IoImltYWdlL3N2Zyt4bWwiKX1lbHNlIHA9Yi5zdmdUb0RhdGFVcmwoYSk7Yi5kb3dubG9hZFVSTChwLHIpO2MmJmMoKX1jYXRjaCh5KXtmKHkpfWVsc2UgaWYoImFwcGxpY2F0aW9uL3BkZiI9PT1sKWUuanNQREYmJmUuc3ZnMnBkZj9tKCk6KGs9ITAsbih0KyJqc3BkZi5qcyIsZnVuY3Rpb24oKXtuKHQrInN2ZzJwZGYuanMiLApmdW5jdGlvbigpe20oKX0pfSkpO2Vsc2V7cD1iLnN2Z1RvRGF0YVVybChhKTt2YXIgdj1mdW5jdGlvbigpe3RyeXtELnJldm9rZU9iamVjdFVSTChwKX1jYXRjaCh5KXt9fTtiLmltYWdlVG9EYXRhVXJsKHAsbCx7fSxxLGZ1bmN0aW9uKGEpe3RyeXtiLmRvd25sb2FkVVJMKGEsciksYyYmYygpfWNhdGNoKEUpe2YoRSl9fSxmdW5jdGlvbigpe3ZhciBkPWcuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksbT1kLmdldENvbnRleHQoIjJkIiksaD1hLm1hdGNoKC9ePHN2Z1tePl0qd2lkdGhccyo9XHMqIj8oXGQrKSI/W14+XSo+LylbMV0qcSx1PWEubWF0Y2goL148c3ZnW14+XSpoZWlnaHRccyo9XHMqIj8oXGQrKSI/W14+XSo+LylbMV0qcSxwPWZ1bmN0aW9uKCl7bS5kcmF3U3ZnKGEsMCwwLGgsdSk7dHJ5e2IuZG93bmxvYWRVUkwoeC5tc1NhdmVPck9wZW5CbG9iP2QubXNUb0Jsb2IoKTpkLnRvRGF0YVVSTChsKSxyKSxjJiZjKCl9Y2F0Y2goSSl7ZihJKX1maW5hbGx5e3YoKX19O2Qud2lkdGg9Cmg7ZC5oZWlnaHQ9dTtlLmNhbnZnP3AoKTooaz0hMCxuKHQrInJnYmNvbG9yLmpzIixmdW5jdGlvbigpe24odCsiY2FudmcuanMiLGZ1bmN0aW9uKCl7cCgpfSl9KSl9LGYsZixmdW5jdGlvbigpe2smJnYoKX0pfX07YS5wcm90b3R5cGUuZ2V0U1ZHRm9yTG9jYWxFeHBvcnQ9ZnVuY3Rpb24oYSxlLGQsYyl7dmFyIGY9dGhpcyxtPTAsaCxnLGssbCxyPWZ1bmN0aW9uKCl7bT09PXcubGVuZ3RoJiZjKGYuc2FuaXRpemVTVkcoaC5pbm5lckhUTUwsZykpfSxuPWZ1bmN0aW9uKGEsYixjKXsrK207Yy5pbWFnZUVsZW1lbnQuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCJocmVmIixhKTtyKCl9O2YudW5iaW5kR2V0U1ZHPXEoZiwiZ2V0U1ZHIixmdW5jdGlvbihhKXtnPWEuY2hhcnRDb3B5Lm9wdGlvbnM7aD1hLmNoYXJ0Q29weS5jb250YWluZXIuY2xvbmVOb2RlKCEwKX0pO2YuZ2V0U1ZHRm9yRXhwb3J0KGEsZSk7dmFyIHc9aC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW1hZ2UiKTsKdHJ5e2lmKCF3Lmxlbmd0aCl7YyhmLnNhbml0aXplU1ZHKGguaW5uZXJIVE1MLGcpKTtyZXR1cm59dmFyIHA9MDtmb3Ioaz13Lmxlbmd0aDtwPGs7KytwKXt2YXIgdj13W3BdOyhsPXYuZ2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCJocmVmIikpP2IuaW1hZ2VUb0RhdGFVcmwobCwiaW1hZ2UvcG5nIix7aW1hZ2VFbGVtZW50OnZ9LGEuc2NhbGUsbixkLGQsZCk6KCsrbSx2LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodikscigpKX19Y2F0Y2goeSl7ZCh5KX1mLnVuYmluZEdldFNWRygpfTthLnByb3RvdHlwZS5leHBvcnRDaGFydExvY2FsPWZ1bmN0aW9uKGEsZSl7dmFyIGY9dGhpcyxjPUMoZi5vcHRpb25zLmV4cG9ydGluZyxhKSxnPWZ1bmN0aW9uKGEpeyExPT09Yy5mYWxsYmFja1RvRXhwb3J0U2VydmVyP2MuZXJyb3I/Yy5lcnJvcihjLGEpOmQoMjgsITApOmYuZXhwb3J0Q2hhcnQoYyl9O2E9ZnVuY3Rpb24oKXtyZXR1cm5bXS5zb21lLmNhbGwoZi5jb250YWluZXIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImltYWdlIiksCmZ1bmN0aW9uKGEpe2E9YS5nZXRBdHRyaWJ1dGUoImhyZWYiKTtyZXR1cm4iIiE9PWEmJjAhPT1hLmluZGV4T2YoImRhdGE6Iil9KX07QiYmZi5zdHlsZWRNb2RlJiYoaC5wcm90b3R5cGUuaW5saW5lV2hpdGVsaXN0PVsvXmJsb2NrU2l6ZS8sL15ib3JkZXIvLC9eY2FyZXRDb2xvci8sL15jb2xvci8sL15jb2x1bW5SdWxlLywvXmNvbHVtblJ1bGVDb2xvci8sL15jc3NGbG9hdC8sL15jdXJzb3IvLC9eZmlsbCQvLC9eZmlsbE9wYWNpdHkvLC9eZm9udC8sL15pbmxpbmVTaXplLywvXmxlbmd0aC8sL15saW5lSGVpZ2h0LywvXm9wYWNpdHkvLC9eb3V0bGluZS8sL15wYXJlbnRSdWxlLywvXnJ4JC8sL15yeSQvLC9ec3Ryb2tlLywvXnRleHRBbGlnbi8sL150ZXh0QW5jaG9yLywvXnRleHREZWNvcmF0aW9uLywvXnRyYW5zZm9ybS8sL152ZWN0b3JFZmZlY3QvLC9edmlzaWJpbGl0eS8sL154JC8sL155JC9dKTtCJiYoImFwcGxpY2F0aW9uL3BkZiI9PT1jLnR5cGV8fGYuY29udGFpbmVyLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbWFnZSIpLmxlbmd0aCYmCiJpbWFnZS9zdmcreG1sIiE9PWMudHlwZSl8fCJhcHBsaWNhdGlvbi9wZGYiPT09Yy50eXBlJiZhKCk/ZygiSW1hZ2UgdHlwZSBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIGNoYXJ0L2Jyb3dzZXIuIik6Zi5nZXRTVkdGb3JMb2NhbEV4cG9ydChjLGUsZyxmdW5jdGlvbihhKXstMTxhLmluZGV4T2YoIjxmb3JlaWduT2JqZWN0IikmJiJpbWFnZS9zdmcreG1sIiE9PWMudHlwZT9nKCJJbWFnZSB0eXBlIG5vdCBzdXBwb3J0ZWRmb3IgY2hhcnRzIHdpdGggZW1iZWRkZWQgSFRNTCIpOmIuZG93bmxvYWRTVkdMb2NhbChhLEYoe2ZpbGVuYW1lOmYuZ2V0RmlsZW5hbWUoKX0sYyksZyl9KX07QyghMCxBKCkuZXhwb3J0aW5nLHtsaWJVUkw6Imh0dHBzOi8vY29kZS5oaWdoY2hhcnRzLmNvbS84LjEuMi9saWIvIixtZW51SXRlbURlZmluaXRpb25zOntkb3dubG9hZFBORzp7dGV4dEtleToiZG93bmxvYWRQTkciLG9uY2xpY2s6ZnVuY3Rpb24oKXt0aGlzLmV4cG9ydENoYXJ0TG9jYWwoKX19LGRvd25sb2FkSlBFRzp7dGV4dEtleToiZG93bmxvYWRKUEVHIiwKb25jbGljazpmdW5jdGlvbigpe3RoaXMuZXhwb3J0Q2hhcnRMb2NhbCh7dHlwZToiaW1hZ2UvanBlZyJ9KX19LGRvd25sb2FkU1ZHOnt0ZXh0S2V5OiJkb3dubG9hZFNWRyIsb25jbGljazpmdW5jdGlvbigpe3RoaXMuZXhwb3J0Q2hhcnRMb2NhbCh7dHlwZToiaW1hZ2Uvc3ZnK3htbCJ9KX19LGRvd25sb2FkUERGOnt0ZXh0S2V5OiJkb3dubG9hZFBERiIsb25jbGljazpmdW5jdGlvbigpe3RoaXMuZXhwb3J0Q2hhcnRMb2NhbCh7dHlwZToiYXBwbGljYXRpb24vcGRmIn0pfX19fSl9KTtoKGEsIm1hc3RlcnMvbW9kdWxlcy9vZmZsaW5lLWV4cG9ydGluZy5zcmMuanMiLFtdLGZ1bmN0aW9uKCl7fSl9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9b2ZmbGluZS1leHBvcnRpbmcuanMubWFw"></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIChjKSAyMDA5LTIwMTkgVG9yc3RlaW4gSG9uc2kKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24oYSl7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8oYVsiZGVmYXVsdCJdPWEsbW9kdWxlLmV4cG9ydHM9YSk6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL21vZHVsZXMvb3ZlcmxhcHBpbmctZGF0YWxhYmVscyIsWyJoaWdoY2hhcnRzIl0sZnVuY3Rpb24oYil7YShiKTthLkhpZ2hjaGFydHM9YjtyZXR1cm4gYX0pOmEoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihhKXsoZnVuY3Rpb24oYSxjLGQsZSl7YS5oYXNPd25Qcm9wZXJ0eShjKXx8KGFbY109ZS5hcHBseShudWxsLGQpKX0pKGE/YS5fbW9kdWxlczp7fSwibWFzdGVycy9tb2R1bGVzL292ZXJsYXBwaW5nLWRhdGFsYWJlbHMuc3JjLmpzIixbXSxmdW5jdGlvbigpe30pfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPW92ZXJsYXBwaW5nLWRhdGFsYWJlbHMuanMubWFw"></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIEV4cG9ydGluZyBtb2R1bGUKCiAoYykgMjAxMC0yMDE5IFRvcnN0ZWluIEhvbnNpCgogTGljZW5zZTogd3d3LmhpZ2hjaGFydHMuY29tL2xpY2Vuc2UKKi8KKGZ1bmN0aW9uKGMpeyJvYmplY3QiPT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/KGNbImRlZmF1bHQiXT1jLG1vZHVsZS5leHBvcnRzPWMpOiJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiaGlnaGNoYXJ0cy9tb2R1bGVzL2V4cG9ydGluZyIsWyJoaWdoY2hhcnRzIl0sZnVuY3Rpb24ocCl7YyhwKTtjLkhpZ2hjaGFydHM9cDtyZXR1cm4gY30pOmMoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihjKXtmdW5jdGlvbiBwKGMsbCxoLGspe2MuaGFzT3duUHJvcGVydHkobCl8fChjW2xdPWsuYXBwbHkobnVsbCxoKSl9Yz1jP2MuX21vZHVsZXM6e307cChjLCJtb2R1bGVzL2Z1bGwtc2NyZWVuLnNyYy5qcyIsW2NbInBhcnRzL0NoYXJ0LmpzIl0sY1sicGFydHMvR2xvYmFscy5qcyJdLGNbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihjLGwsaCl7dmFyIGs9aC5hZGRFdmVudDsKaD1mdW5jdGlvbigpe2Z1bmN0aW9uIGMoZSl7dGhpcy5jaGFydD1lO3RoaXMuaXNPcGVuPSExO2U9ZS5yZW5kZXJUbzt0aGlzLmJyb3dzZXJQcm9wc3x8KCJmdW5jdGlvbiI9PT10eXBlb2YgZS5yZXF1ZXN0RnVsbHNjcmVlbj90aGlzLmJyb3dzZXJQcm9wcz17ZnVsbHNjcmVlbkNoYW5nZToiZnVsbHNjcmVlbmNoYW5nZSIscmVxdWVzdEZ1bGxzY3JlZW46InJlcXVlc3RGdWxsc2NyZWVuIixleGl0RnVsbHNjcmVlbjoiZXhpdEZ1bGxzY3JlZW4ifTplLm1velJlcXVlc3RGdWxsU2NyZWVuP3RoaXMuYnJvd3NlclByb3BzPXtmdWxsc2NyZWVuQ2hhbmdlOiJtb3pmdWxsc2NyZWVuY2hhbmdlIixyZXF1ZXN0RnVsbHNjcmVlbjoibW96UmVxdWVzdEZ1bGxTY3JlZW4iLGV4aXRGdWxsc2NyZWVuOiJtb3pDYW5jZWxGdWxsU2NyZWVuIn06ZS53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbj90aGlzLmJyb3dzZXJQcm9wcz17ZnVsbHNjcmVlbkNoYW5nZToid2Via2l0ZnVsbHNjcmVlbmNoYW5nZSIsCnJlcXVlc3RGdWxsc2NyZWVuOiJ3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiIsZXhpdEZ1bGxzY3JlZW46IndlYmtpdEV4aXRGdWxsc2NyZWVuIn06ZS5tc1JlcXVlc3RGdWxsc2NyZWVuJiYodGhpcy5icm93c2VyUHJvcHM9e2Z1bGxzY3JlZW5DaGFuZ2U6Ik1TRnVsbHNjcmVlbkNoYW5nZSIscmVxdWVzdEZ1bGxzY3JlZW46Im1zUmVxdWVzdEZ1bGxzY3JlZW4iLGV4aXRGdWxsc2NyZWVuOiJtc0V4aXRGdWxsc2NyZWVuIn0pKX1jLnByb3RvdHlwZS5jbG9zZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuY2hhcnQ7aWYodGhpcy5pc09wZW4mJnRoaXMuYnJvd3NlclByb3BzJiZlLmNvbnRhaW5lci5vd25lckRvY3VtZW50IGluc3RhbmNlb2YgRG9jdW1lbnQpZS5jb250YWluZXIub3duZXJEb2N1bWVudFt0aGlzLmJyb3dzZXJQcm9wcy5leGl0RnVsbHNjcmVlbl0oKTt0aGlzLnVuYmluZEZ1bGxzY3JlZW5FdmVudCYmdGhpcy51bmJpbmRGdWxsc2NyZWVuRXZlbnQoKTt0aGlzLmlzT3Blbj0hMTsKdGhpcy5zZXRCdXR0b25UZXh0KCl9O2MucHJvdG90eXBlLm9wZW49ZnVuY3Rpb24oKXt2YXIgZT10aGlzLGM9ZS5jaGFydDtpZihlLmJyb3dzZXJQcm9wcyl7ZS51bmJpbmRGdWxsc2NyZWVuRXZlbnQ9ayhjLmNvbnRhaW5lci5vd25lckRvY3VtZW50LGUuYnJvd3NlclByb3BzLmZ1bGxzY3JlZW5DaGFuZ2UsZnVuY3Rpb24oKXtlLmlzT3Blbj8oZS5pc09wZW49ITEsZS5jbG9zZSgpKTooZS5pc09wZW49ITAsZS5zZXRCdXR0b25UZXh0KCkpfSk7dmFyIGg9Yy5yZW5kZXJUb1tlLmJyb3dzZXJQcm9wcy5yZXF1ZXN0RnVsbHNjcmVlbl0oKTtpZihoKWhbImNhdGNoIl0oZnVuY3Rpb24oKXthbGVydCgiRnVsbCBzY3JlZW4gaXMgbm90IHN1cHBvcnRlZCBpbnNpZGUgYSBmcmFtZS4iKX0pO2soYywiZGVzdHJveSIsZS51bmJpbmRGdWxsc2NyZWVuRXZlbnQpfX07Yy5wcm90b3R5cGUuc2V0QnV0dG9uVGV4dD1mdW5jdGlvbigpe3ZhciBlLGM9dGhpcy5jaGFydCxoPWMuZXhwb3J0RGl2RWxlbWVudHMsCms9Yy5vcHRpb25zLmV4cG9ydGluZyxsPW51bGw9PT0oZT1udWxsPT09a3x8dm9pZCAwPT09az92b2lkIDA6ay5idXR0b25zKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5jb250ZXh0QnV0dG9uLm1lbnVJdGVtcztlPWMub3B0aW9ucy5sYW5nOyhudWxsPT09a3x8dm9pZCAwPT09az8wOmsubWVudUl0ZW1EZWZpbml0aW9ucykmJihudWxsPT09ZXx8dm9pZCAwPT09ZT8wOmUuZXhpdEZ1bGxzY3JlZW4pJiZlLnZpZXdGdWxsc2NyZWVuJiZsJiZoJiZoLmxlbmd0aCYmKGhbbC5pbmRleE9mKCJ2aWV3RnVsbHNjcmVlbiIpXS5pbm5lckhUTUw9dGhpcy5pc09wZW4/ZS5leGl0RnVsbHNjcmVlbjprLm1lbnVJdGVtRGVmaW5pdGlvbnMudmlld0Z1bGxzY3JlZW4udGV4dHx8ZS52aWV3RnVsbHNjcmVlbil9O2MucHJvdG90eXBlLnRvZ2dsZT1mdW5jdGlvbigpe3RoaXMuaXNPcGVuP3RoaXMuY2xvc2UoKTp0aGlzLm9wZW4oKX07cmV0dXJuIGN9KCk7bC5GdWxsc2NyZWVuPWg7ayhjLCJiZWZvcmVSZW5kZXIiLApmdW5jdGlvbigpe3RoaXMuZnVsbHNjcmVlbj1uZXcgbC5GdWxsc2NyZWVuKHRoaXMpfSk7cmV0dXJuIGwuRnVsbHNjcmVlbn0pO3AoYywibWl4aW5zL25hdmlnYXRpb24uanMiLFtdLGZ1bmN0aW9uKCl7cmV0dXJue2luaXRVcGRhdGU6ZnVuY3Rpb24oYyl7Yy5uYXZpZ2F0aW9ufHwoYy5uYXZpZ2F0aW9uPXt1cGRhdGVzOltdLHVwZGF0ZTpmdW5jdGlvbihjLGgpe3RoaXMudXBkYXRlcy5mb3JFYWNoKGZ1bmN0aW9uKGspe2sudXBkYXRlLmNhbGwoay5jb250ZXh0LGMsaCl9KX19KX0sYWRkVXBkYXRlOmZ1bmN0aW9uKGMsbCl7bC5uYXZpZ2F0aW9ufHx0aGlzLmluaXRVcGRhdGUobCk7bC5uYXZpZ2F0aW9uLnVwZGF0ZXMucHVzaCh7dXBkYXRlOmMsY29udGV4dDpsfSl9fX0pO3AoYywibW9kdWxlcy9leHBvcnRpbmcuc3JjLmpzIixbY1sicGFydHMvQ2hhcnQuanMiXSxjWyJtaXhpbnMvbmF2aWdhdGlvbi5qcyJdLGNbInBhcnRzL0dsb2JhbHMuanMiXSxjWyJwYXJ0cy9PcHRpb25zLmpzIl0sCmNbInBhcnRzL1NWR1JlbmRlcmVyLmpzIl0sY1sicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGMsbCxoLGsscCxlKXt2YXIgeD1oLmRvYyxIPWguaXNUb3VjaERldmljZSx6PWgud2luO2s9ay5kZWZhdWx0T3B0aW9uczt2YXIgdD1lLmFkZEV2ZW50LHU9ZS5jc3MseT1lLmNyZWF0ZUVsZW1lbnQsRD1lLmRpc2NhcmRFbGVtZW50LHc9ZS5leHRlbmQsST1lLmZpbmQsQj1lLmZpcmVFdmVudCxKPWUuaXNPYmplY3Qsbj1lLm1lcmdlLEU9ZS5vYmplY3RFYWNoLHE9ZS5waWNrLEs9ZS5yZW1vdmVFdmVudCxMPWUudW5pcXVlS2V5LEY9ei5uYXZpZ2F0b3IudXNlckFnZW50LEc9aC5SZW5kZXJlci5wcm90b3R5cGUuc3ltYm9scyxNPS9FZGdlXC98VHJpZGVudFwvfE1TSUUgLy50ZXN0KEYpLE49L2ZpcmVmb3gvaS50ZXN0KEYpO3coay5sYW5nLHt2aWV3RnVsbHNjcmVlbjoiVmlldyBpbiBmdWxsIHNjcmVlbiIsZXhpdEZ1bGxzY3JlZW46IkV4aXQgZnJvbSBmdWxsIHNjcmVlbiIscHJpbnRDaGFydDoiUHJpbnQgY2hhcnQiLApkb3dubG9hZFBORzoiRG93bmxvYWQgUE5HIGltYWdlIixkb3dubG9hZEpQRUc6IkRvd25sb2FkIEpQRUcgaW1hZ2UiLGRvd25sb2FkUERGOiJEb3dubG9hZCBQREYgZG9jdW1lbnQiLGRvd25sb2FkU1ZHOiJEb3dubG9hZCBTVkcgdmVjdG9yIGltYWdlIixjb250ZXh0QnV0dG9uVGl0bGU6IkNoYXJ0IGNvbnRleHQgbWVudSJ9KTtrLm5hdmlnYXRpb258fChrLm5hdmlnYXRpb249e30pO24oITAsay5uYXZpZ2F0aW9uLHtidXR0b25PcHRpb25zOnt0aGVtZTp7fSxzeW1ib2xTaXplOjE0LHN5bWJvbFg6MTIuNSxzeW1ib2xZOjEwLjUsYWxpZ246InJpZ2h0IixidXR0b25TcGFjaW5nOjMsaGVpZ2h0OjIyLHZlcnRpY2FsQWxpZ246InRvcCIsd2lkdGg6MjR9fSk7bighMCxrLm5hdmlnYXRpb24se21lbnVTdHlsZTp7Ym9yZGVyOiIxcHggc29saWQgIzk5OTk5OSIsYmFja2dyb3VuZDoiI2ZmZmZmZiIscGFkZGluZzoiNXB4IDAifSxtZW51SXRlbVN0eWxlOntwYWRkaW5nOiIwLjVlbSAxZW0iLApjb2xvcjoiIzMzMzMzMyIsYmFja2dyb3VuZDoibm9uZSIsZm9udFNpemU6SD8iMTRweCI6IjExcHgiLHRyYW5zaXRpb246ImJhY2tncm91bmQgMjUwbXMsIGNvbG9yIDI1MG1zIn0sbWVudUl0ZW1Ib3ZlclN0eWxlOntiYWNrZ3JvdW5kOiIjMzM1Y2FkIixjb2xvcjoiI2ZmZmZmZiJ9LGJ1dHRvbk9wdGlvbnM6e3N5bWJvbEZpbGw6IiM2NjY2NjYiLHN5bWJvbFN0cm9rZToiIzY2NjY2NiIsc3ltYm9sU3Ryb2tlV2lkdGg6Myx0aGVtZTp7cGFkZGluZzo1fX19KTtrLmV4cG9ydGluZz17dHlwZToiaW1hZ2UvcG5nIix1cmw6Imh0dHBzOi8vZXhwb3J0LmhpZ2hjaGFydHMuY29tLyIscHJpbnRNYXhXaWR0aDo3ODAsc2NhbGU6MixidXR0b25zOntjb250ZXh0QnV0dG9uOntjbGFzc05hbWU6ImhpZ2hjaGFydHMtY29udGV4dGJ1dHRvbiIsbWVudUNsYXNzTmFtZToiaGlnaGNoYXJ0cy1jb250ZXh0bWVudSIsc3ltYm9sOiJtZW51Iix0aXRsZUtleToiY29udGV4dEJ1dHRvblRpdGxlIixtZW51SXRlbXM6InZpZXdGdWxsc2NyZWVuIHByaW50Q2hhcnQgc2VwYXJhdG9yIGRvd25sb2FkUE5HIGRvd25sb2FkSlBFRyBkb3dubG9hZFBERiBkb3dubG9hZFNWRyIuc3BsaXQoIiAiKX19LAptZW51SXRlbURlZmluaXRpb25zOnt2aWV3RnVsbHNjcmVlbjp7dGV4dEtleToidmlld0Z1bGxzY3JlZW4iLG9uY2xpY2s6ZnVuY3Rpb24oKXt0aGlzLmZ1bGxzY3JlZW4udG9nZ2xlKCl9fSxwcmludENoYXJ0Ont0ZXh0S2V5OiJwcmludENoYXJ0IixvbmNsaWNrOmZ1bmN0aW9uKCl7dGhpcy5wcmludCgpfX0sc2VwYXJhdG9yOntzZXBhcmF0b3I6ITB9LGRvd25sb2FkUE5HOnt0ZXh0S2V5OiJkb3dubG9hZFBORyIsb25jbGljazpmdW5jdGlvbigpe3RoaXMuZXhwb3J0Q2hhcnQoKX19LGRvd25sb2FkSlBFRzp7dGV4dEtleToiZG93bmxvYWRKUEVHIixvbmNsaWNrOmZ1bmN0aW9uKCl7dGhpcy5leHBvcnRDaGFydCh7dHlwZToiaW1hZ2UvanBlZyJ9KX19LGRvd25sb2FkUERGOnt0ZXh0S2V5OiJkb3dubG9hZFBERiIsb25jbGljazpmdW5jdGlvbigpe3RoaXMuZXhwb3J0Q2hhcnQoe3R5cGU6ImFwcGxpY2F0aW9uL3BkZiJ9KX19LGRvd25sb2FkU1ZHOnt0ZXh0S2V5OiJkb3dubG9hZFNWRyIsCm9uY2xpY2s6ZnVuY3Rpb24oKXt0aGlzLmV4cG9ydENoYXJ0KHt0eXBlOiJpbWFnZS9zdmcreG1sIn0pfX19fTtoLnBvc3Q9ZnVuY3Rpb24oYSxiLGYpe3ZhciBkPXkoImZvcm0iLG4oe21ldGhvZDoicG9zdCIsYWN0aW9uOmEsZW5jdHlwZToibXVsdGlwYXJ0L2Zvcm0tZGF0YSJ9LGYpLHtkaXNwbGF5OiJub25lIn0seC5ib2R5KTtFKGIsZnVuY3Rpb24oYSxiKXt5KCJpbnB1dCIse3R5cGU6ImhpZGRlbiIsbmFtZTpiLHZhbHVlOmF9LG51bGwsZCl9KTtkLnN1Ym1pdCgpO0QoZCl9O2guaXNTYWZhcmkmJmgud2luLm1hdGNoTWVkaWEoInByaW50IikuYWRkTGlzdGVuZXIoZnVuY3Rpb24oYSl7aC5wcmludGluZ0NoYXJ0JiYoYS5tYXRjaGVzP2gucHJpbnRpbmdDaGFydC5iZWZvcmVQcmludCgpOmgucHJpbnRpbmdDaGFydC5hZnRlclByaW50KCkpfSk7dyhjLnByb3RvdHlwZSx7c2FuaXRpemVTVkc6ZnVuY3Rpb24oYSxiKXt2YXIgZj1hLmluZGV4T2YoIjwvc3ZnPiIpKzYsZD1hLnN1YnN0cihmKTsKYT1hLnN1YnN0cigwLGYpO2ImJmIuZXhwb3J0aW5nJiZiLmV4cG9ydGluZy5hbGxvd0hUTUwmJmQmJihkPSc8Zm9yZWlnbk9iamVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iJytiLmNoYXJ0LndpZHRoKyciIGhlaWdodD0iJytiLmNoYXJ0LmhlaWdodCsnIj48Ym9keSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+JytkKyI8L2JvZHk+PC9mb3JlaWduT2JqZWN0PiIsYT1hLnJlcGxhY2UoIjwvc3ZnPiIsZCsiPC9zdmc+IikpO2E9YS5yZXBsYWNlKC96SW5kZXg9IlteIl0rIi9nLCIiKS5yZXBsYWNlKC9zeW1ib2xOYW1lPSJbXiJdKyIvZywiIikucmVwbGFjZSgvalF1ZXJ5WzAtOV0rPSJbXiJdKyIvZywiIikucmVwbGFjZSgvdXJsXCgoInwmcXVvdDspKC4qPykoInwmcXVvdDspOz9cKS9nLCJ1cmwoJDIpIikucmVwbGFjZSgvdXJsXChbXiNdKyMvZywidXJsKCMiKS5yZXBsYWNlKC88c3ZnIC8sJzxzdmcgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiICcpLnJlcGxhY2UoLyAofE5TWzAtOV0rOilocmVmPS9nLAoiIHhsaW5rOmhyZWY9IikucmVwbGFjZSgvXG4vLCIgIikucmVwbGFjZSgvKGZpbGx8c3Ryb2tlKT0icmdiYVwoKFsgMC05XSssWyAwLTldKyxbIDAtOV0rKSwoWyAwLTlcLl0rKVwpIi9nLCckMT0icmdiKCQyKSIgJDEtb3BhY2l0eT0iJDMiJykucmVwbGFjZSgvJm5ic3A7L2csIlx1MDBhMCIpLnJlcGxhY2UoLyZzaHk7L2csIlx1MDBhZCIpO3RoaXMuaWVTYW5pdGl6ZVNWRyYmKGE9dGhpcy5pZVNhbml0aXplU1ZHKGEpKTtyZXR1cm4gYX0sZ2V0Q2hhcnRIVE1MOmZ1bmN0aW9uKCl7dGhpcy5zdHlsZWRNb2RlJiZ0aGlzLmlubGluZVN0eWxlcygpO3JldHVybiB0aGlzLmNvbnRhaW5lci5pbm5lckhUTUx9LGdldFNWRzpmdW5jdGlvbihhKXt2YXIgYixmPW4odGhpcy5vcHRpb25zLGEpO2YucGxvdE9wdGlvbnM9bih0aGlzLnVzZXJPcHRpb25zLnBsb3RPcHRpb25zLGEmJmEucGxvdE9wdGlvbnMpO2YudGltZT1uKHRoaXMudXNlck9wdGlvbnMudGltZSxhJiZhLnRpbWUpO3ZhciBkPXkoImRpdiIsCm51bGwse3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOiItOTk5OWVtIix3aWR0aDp0aGlzLmNoYXJ0V2lkdGgrInB4IixoZWlnaHQ6dGhpcy5jaGFydEhlaWdodCsicHgifSx4LmJvZHkpO3ZhciBjPXRoaXMucmVuZGVyVG8uc3R5bGUud2lkdGg7dmFyIGU9dGhpcy5yZW5kZXJUby5zdHlsZS5oZWlnaHQ7Yz1mLmV4cG9ydGluZy5zb3VyY2VXaWR0aHx8Zi5jaGFydC53aWR0aHx8L3B4JC8udGVzdChjKSYmcGFyc2VJbnQoYywxMCl8fChmLmlzR2FudHQ/ODAwOjYwMCk7ZT1mLmV4cG9ydGluZy5zb3VyY2VIZWlnaHR8fGYuY2hhcnQuaGVpZ2h0fHwvcHgkLy50ZXN0KGUpJiZwYXJzZUludChlLDEwKXx8NDAwO3coZi5jaGFydCx7YW5pbWF0aW9uOiExLHJlbmRlclRvOmQsZm9yRXhwb3J0OiEwLHJlbmRlcmVyOiJTVkdSZW5kZXJlciIsd2lkdGg6YyxoZWlnaHQ6ZX0pO2YuZXhwb3J0aW5nLmVuYWJsZWQ9ITE7ZGVsZXRlIGYuZGF0YTtmLnNlcmllcz1bXTt0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2I9Cm4oYS51c2VyT3B0aW9ucyx7YW5pbWF0aW9uOiExLGVuYWJsZU1vdXNlVHJhY2tpbmc6ITEsc2hvd0NoZWNrYm94OiExLHZpc2libGU6YS52aXNpYmxlfSk7Yi5pc0ludGVybmFsfHxmLnNlcmllcy5wdXNoKGIpfSk7dGhpcy5heGVzLmZvckVhY2goZnVuY3Rpb24oYSl7YS51c2VyT3B0aW9ucy5pbnRlcm5hbEtleXx8KGEudXNlck9wdGlvbnMuaW50ZXJuYWxLZXk9TCgpKX0pO3ZhciBrPW5ldyBoLkNoYXJ0KGYsdGhpcy5jYWxsYmFjayk7YSYmWyJ4QXhpcyIsInlBeGlzIiwic2VyaWVzIl0uZm9yRWFjaChmdW5jdGlvbihiKXt2YXIgZD17fTthW2JdJiYoZFtiXT1hW2JdLGsudXBkYXRlKGQpKX0pO3RoaXMuYXhlcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPUkoay5heGVzLGZ1bmN0aW9uKGIpe3JldHVybiBiLm9wdGlvbnMuaW50ZXJuYWxLZXk9PT1hLnVzZXJPcHRpb25zLmludGVybmFsS2V5fSksZD1hLmdldEV4dHJlbWVzKCksZj1kLnVzZXJNaW47ZD1kLnVzZXJNYXg7YiYmKCJ1bmRlZmluZWQiIT09CnR5cGVvZiBmJiZmIT09Yi5taW58fCJ1bmRlZmluZWQiIT09dHlwZW9mIGQmJmQhPT1iLm1heCkmJmIuc2V0RXh0cmVtZXMoZixkLCEwLCExKX0pO2M9ay5nZXRDaGFydEhUTUwoKTtCKHRoaXMsImdldFNWRyIse2NoYXJ0Q29weTprfSk7Yz10aGlzLnNhbml0aXplU1ZHKGMsZik7Zj1udWxsO2suZGVzdHJveSgpO0QoZCk7cmV0dXJuIGN9LGdldFNWR0ZvckV4cG9ydDpmdW5jdGlvbihhLGIpe3ZhciBmPXRoaXMub3B0aW9ucy5leHBvcnRpbmc7cmV0dXJuIHRoaXMuZ2V0U1ZHKG4oe2NoYXJ0Ontib3JkZXJSYWRpdXM6MH19LGYuY2hhcnRPcHRpb25zLGIse2V4cG9ydGluZzp7c291cmNlV2lkdGg6YSYmYS5zb3VyY2VXaWR0aHx8Zi5zb3VyY2VXaWR0aCxzb3VyY2VIZWlnaHQ6YSYmYS5zb3VyY2VIZWlnaHR8fGYuc291cmNlSGVpZ2h0fX0pKX0sZ2V0RmlsZW5hbWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnVzZXJPcHRpb25zLnRpdGxlJiZ0aGlzLnVzZXJPcHRpb25zLnRpdGxlLnRleHQsCmI9dGhpcy5vcHRpb25zLmV4cG9ydGluZy5maWxlbmFtZTtpZihiKXJldHVybiBiLnJlcGxhY2UoL1wvL2csIi0iKTsic3RyaW5nIj09PXR5cGVvZiBhJiYoYj1hLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvPFwvP1tePl0rKD58JCkvZywiIikucmVwbGFjZSgvW1xzX10rL2csIi0iKS5yZXBsYWNlKC9bXmEtejAtOVwtXS9nLCIiKS5yZXBsYWNlKC9eW1wtXSsvZywiIikucmVwbGFjZSgvW1wtXSsvZywiLSIpLnN1YnN0cigwLDI0KS5yZXBsYWNlKC9bXC1dKyQvZywiIikpO2lmKCFifHw1PmIubGVuZ3RoKWI9ImNoYXJ0IjtyZXR1cm4gYn0sZXhwb3J0Q2hhcnQ6ZnVuY3Rpb24oYSxiKXtiPXRoaXMuZ2V0U1ZHRm9yRXhwb3J0KGEsYik7YT1uKHRoaXMub3B0aW9ucy5leHBvcnRpbmcsYSk7aC5wb3N0KGEudXJsLHtmaWxlbmFtZTphLmZpbGVuYW1lP2EuZmlsZW5hbWUucmVwbGFjZSgvXC8vZywiLSIpOnRoaXMuZ2V0RmlsZW5hbWUoKSx0eXBlOmEudHlwZSx3aWR0aDphLndpZHRofHwwLApzY2FsZTphLnNjYWxlLHN2ZzpifSxhLmZvcm1BdHRyaWJ1dGVzKX0sbW92ZUNvbnRhaW5lcnM6ZnVuY3Rpb24oYSl7KHRoaXMuZml4ZWREaXY/W3RoaXMuZml4ZWREaXYsdGhpcy5zY3JvbGxpbmdDb250YWluZXJdOlt0aGlzLmNvbnRhaW5lcl0pLmZvckVhY2goZnVuY3Rpb24oYil7YS5hcHBlbmRDaGlsZChiKX0pfSxiZWZvcmVQcmludDpmdW5jdGlvbigpe3ZhciBhPXguYm9keSxiPXRoaXMub3B0aW9ucy5leHBvcnRpbmcucHJpbnRNYXhXaWR0aCxmPXtjaGlsZE5vZGVzOmEuY2hpbGROb2RlcyxvcmlnRGlzcGxheTpbXSxyZXNldFBhcmFtczp2b2lkIDB9O3RoaXMuaXNQcmludGluZz0hMDt0aGlzLnBvaW50ZXIucmVzZXQobnVsbCwwKTtCKHRoaXMsImJlZm9yZVByaW50Iik7YiYmdGhpcy5jaGFydFdpZHRoPmImJihmLnJlc2V0UGFyYW1zPVt0aGlzLm9wdGlvbnMuY2hhcnQud2lkdGgsdm9pZCAwLCExXSx0aGlzLnNldFNpemUoYix2b2lkIDAsITEpKTtbXS5mb3JFYWNoLmNhbGwoZi5jaGlsZE5vZGVzLApmdW5jdGlvbihhLGIpezE9PT1hLm5vZGVUeXBlJiYoZi5vcmlnRGlzcGxheVtiXT1hLnN0eWxlLmRpc3BsYXksYS5zdHlsZS5kaXNwbGF5PSJub25lIil9KTt0aGlzLm1vdmVDb250YWluZXJzKGEpO3RoaXMucHJpbnRSZXZlcnNlSW5mbz1mfSxhZnRlclByaW50OmZ1bmN0aW9uKCl7aWYodGhpcy5wcmludFJldmVyc2VJbmZvKXt2YXIgYT10aGlzLnByaW50UmV2ZXJzZUluZm8uY2hpbGROb2RlcyxiPXRoaXMucHJpbnRSZXZlcnNlSW5mby5vcmlnRGlzcGxheSxmPXRoaXMucHJpbnRSZXZlcnNlSW5mby5yZXNldFBhcmFtczt0aGlzLm1vdmVDb250YWluZXJzKHRoaXMucmVuZGVyVG8pO1tdLmZvckVhY2guY2FsbChhLGZ1bmN0aW9uKGEsZil7MT09PWEubm9kZVR5cGUmJihhLnN0eWxlLmRpc3BsYXk9YltmXXx8IiIpfSk7dGhpcy5pc1ByaW50aW5nPSExO2YmJnRoaXMuc2V0U2l6ZS5hcHBseSh0aGlzLGYpO2RlbGV0ZSB0aGlzLnByaW50UmV2ZXJzZUluZm87ZGVsZXRlIGgucHJpbnRpbmdDaGFydDsKQih0aGlzLCJhZnRlclByaW50Iil9fSxwcmludDpmdW5jdGlvbigpe3ZhciBhPXRoaXM7YS5pc1ByaW50aW5nfHwoaC5wcmludGluZ0NoYXJ0PWEsaC5pc1NhZmFyaXx8YS5iZWZvcmVQcmludCgpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt6LmZvY3VzKCk7ei5wcmludCgpO2guaXNTYWZhcml8fHNldFRpbWVvdXQoZnVuY3Rpb24oKXthLmFmdGVyUHJpbnQoKX0sMUUzKX0sMSkpfSxjb250ZXh0TWVudTpmdW5jdGlvbihhLGIsZixkLGMsaCxrKXt2YXIgZz10aGlzLEM9Zy5vcHRpb25zLm5hdmlnYXRpb24sbD1nLmNoYXJ0V2lkdGgsQT1nLmNoYXJ0SGVpZ2h0LHI9ImNhY2hlLSIrYSxtPWdbcl0sdj1NYXRoLm1heChjLGgpO2lmKCFtKXtnLmV4cG9ydENvbnRleHRNZW51PWdbcl09bT15KCJkaXYiLHtjbGFzc05hbWU6YX0se3Bvc2l0aW9uOiJhYnNvbHV0ZSIsekluZGV4OjFFMyxwYWRkaW5nOnYrInB4Iixwb2ludGVyRXZlbnRzOiJhdXRvIn0sZy5maXhlZERpdnx8Zy5jb250YWluZXIpOwp2YXIgbj15KCJ1bCIse2NsYXNzTmFtZToiaGlnaGNoYXJ0cy1tZW51In0se2xpc3RTdHlsZToibm9uZSIsbWFyZ2luOjAscGFkZGluZzowfSxtKTtnLnN0eWxlZE1vZGV8fHUobix3KHtNb3pCb3hTaGFkb3c6IjNweCAzcHggMTBweCAjODg4IixXZWJraXRCb3hTaGFkb3c6IjNweCAzcHggMTBweCAjODg4Iixib3hTaGFkb3c6IjNweCAzcHggMTBweCAjODg4In0sQy5tZW51U3R5bGUpKTttLmhpZGVNZW51PWZ1bmN0aW9uKCl7dShtLHtkaXNwbGF5OiJub25lIn0pO2smJmsuc2V0U3RhdGUoMCk7Zy5vcGVuTWVudT0hMTt1KGcucmVuZGVyVG8se292ZXJmbG93OiJoaWRkZW4ifSk7ZS5jbGVhclRpbWVvdXQobS5oaWRlVGltZXIpO0IoZywiZXhwb3J0TWVudUhpZGRlbiIpfTtnLmV4cG9ydEV2ZW50cy5wdXNoKHQobSwibW91c2VsZWF2ZSIsZnVuY3Rpb24oKXttLmhpZGVUaW1lcj16LnNldFRpbWVvdXQobS5oaWRlTWVudSw1MDApfSksdChtLCJtb3VzZWVudGVyIixmdW5jdGlvbigpe2UuY2xlYXJUaW1lb3V0KG0uaGlkZVRpbWVyKX0pLAp0KHgsIm1vdXNldXAiLGZ1bmN0aW9uKGIpe2cucG9pbnRlci5pbkNsYXNzKGIudGFyZ2V0LGEpfHxtLmhpZGVNZW51KCl9KSx0KG0sImNsaWNrIixmdW5jdGlvbigpe2cub3Blbk1lbnUmJm0uaGlkZU1lbnUoKX0pKTtiLmZvckVhY2goZnVuY3Rpb24oYSl7InN0cmluZyI9PT10eXBlb2YgYSYmKGE9Zy5vcHRpb25zLmV4cG9ydGluZy5tZW51SXRlbURlZmluaXRpb25zW2FdKTtpZihKKGEsITApKXtpZihhLnNlcGFyYXRvcil2YXIgYj15KCJociIsbnVsbCxudWxsLG4pO2Vsc2UgYj15KCJsaSIse2NsYXNzTmFtZToiaGlnaGNoYXJ0cy1tZW51LWl0ZW0iLG9uY2xpY2s6ZnVuY3Rpb24oYil7YiYmYi5zdG9wUHJvcGFnYXRpb24oKTttLmhpZGVNZW51KCk7YS5vbmNsaWNrJiZhLm9uY2xpY2suYXBwbHkoZyxhcmd1bWVudHMpfSxpbm5lckhUTUw6YS50ZXh0fHxnLm9wdGlvbnMubGFuZ1thLnRleHRLZXldfSxudWxsLG4pLGcuc3R5bGVkTW9kZXx8KGIub25tb3VzZW92ZXI9ZnVuY3Rpb24oKXt1KHRoaXMsCkMubWVudUl0ZW1Ib3ZlclN0eWxlKX0sYi5vbm1vdXNlb3V0PWZ1bmN0aW9uKCl7dSh0aGlzLEMubWVudUl0ZW1TdHlsZSl9LHUoYix3KHtjdXJzb3I6InBvaW50ZXIifSxDLm1lbnVJdGVtU3R5bGUpKSk7Zy5leHBvcnREaXZFbGVtZW50cy5wdXNoKGIpfX0pO2cuZXhwb3J0RGl2RWxlbWVudHMucHVzaChuLG0pO2cuZXhwb3J0TWVudVdpZHRoPW0ub2Zmc2V0V2lkdGg7Zy5leHBvcnRNZW51SGVpZ2h0PW0ub2Zmc2V0SGVpZ2h0fWI9e2Rpc3BsYXk6ImJsb2NrIn07ZitnLmV4cG9ydE1lbnVXaWR0aD5sP2IucmlnaHQ9bC1mLWMtdisicHgiOmIubGVmdD1mLXYrInB4IjtkK2grZy5leHBvcnRNZW51SGVpZ2h0PkEmJiJ0b3AiIT09ay5hbGlnbk9wdGlvbnMudmVydGljYWxBbGlnbj9iLmJvdHRvbT1BLWQtdisicHgiOmIudG9wPWQraC12KyJweCI7dShtLGIpO3UoZy5yZW5kZXJUbyx7b3ZlcmZsb3c6IiJ9KTtnLm9wZW5NZW51PSEwO0IoZywiZXhwb3J0TWVudVNob3duIil9LGFkZEJ1dHRvbjpmdW5jdGlvbihhKXt2YXIgYj0KdGhpcyxmPWIucmVuZGVyZXIsZD1uKGIub3B0aW9ucy5uYXZpZ2F0aW9uLmJ1dHRvbk9wdGlvbnMsYSksYz1kLm9uY2xpY2ssZT1kLm1lbnVJdGVtcyxoPWQuc3ltYm9sU2l6ZXx8MTI7Yi5idG5Db3VudHx8KGIuYnRuQ291bnQ9MCk7Yi5leHBvcnREaXZFbGVtZW50c3x8KGIuZXhwb3J0RGl2RWxlbWVudHM9W10sYi5leHBvcnRTVkdFbGVtZW50cz1bXSk7aWYoITEhPT1kLmVuYWJsZWQpe3ZhciBnPWQudGhlbWUsaz1nLnN0YXRlcyxsPWsmJmsuaG92ZXI7az1rJiZrLnNlbGVjdDt2YXIgQTtiLnN0eWxlZE1vZGV8fChnLmZpbGw9cShnLmZpbGwsIiNmZmZmZmYiKSxnLnN0cm9rZT1xKGcuc3Ryb2tlLCJub25lIikpO2RlbGV0ZSBnLnN0YXRlcztjP0E9ZnVuY3Rpb24oYSl7YSYmYS5zdG9wUHJvcGFnYXRpb24oKTtjLmNhbGwoYixhKX06ZSYmKEE9ZnVuY3Rpb24oYSl7YSYmYS5zdG9wUHJvcGFnYXRpb24oKTtiLmNvbnRleHRNZW51KHIubWVudUNsYXNzTmFtZSxlLHIudHJhbnNsYXRlWCwKci50cmFuc2xhdGVZLHIud2lkdGgsci5oZWlnaHQscik7ci5zZXRTdGF0ZSgyKX0pO2QudGV4dCYmZC5zeW1ib2w/Zy5wYWRkaW5nTGVmdD1xKGcucGFkZGluZ0xlZnQsMjUpOmQudGV4dHx8dyhnLHt3aWR0aDpkLndpZHRoLGhlaWdodDpkLmhlaWdodCxwYWRkaW5nOjB9KTtiLnN0eWxlZE1vZGV8fChnWyJzdHJva2UtbGluZWNhcCJdPSJyb3VuZCIsZy5maWxsPXEoZy5maWxsLCIjZmZmZmZmIiksZy5zdHJva2U9cShnLnN0cm9rZSwibm9uZSIpKTt2YXIgcj1mLmJ1dHRvbihkLnRleHQsMCwwLEEsZyxsLGspLmFkZENsYXNzKGEuY2xhc3NOYW1lKS5hdHRyKHt0aXRsZTpxKGIub3B0aW9ucy5sYW5nW2QuX3RpdGxlS2V5fHxkLnRpdGxlS2V5XSwiIil9KTtyLm1lbnVDbGFzc05hbWU9YS5tZW51Q2xhc3NOYW1lfHwiaGlnaGNoYXJ0cy1tZW51LSIrYi5idG5Db3VudCsrO2lmKGQuc3ltYm9sKXt2YXIgbT1mLnN5bWJvbChkLnN5bWJvbCxkLnN5bWJvbFgtaC8yLGQuc3ltYm9sWS1oLzIsCmgsaCx7d2lkdGg6aCxoZWlnaHQ6aH0pLmFkZENsYXNzKCJoaWdoY2hhcnRzLWJ1dHRvbi1zeW1ib2wiKS5hdHRyKHt6SW5kZXg6MX0pLmFkZChyKTtiLnN0eWxlZE1vZGV8fG0uYXR0cih7c3Ryb2tlOmQuc3ltYm9sU3Ryb2tlLGZpbGw6ZC5zeW1ib2xGaWxsLCJzdHJva2Utd2lkdGgiOmQuc3ltYm9sU3Ryb2tlV2lkdGh8fDF9KX1yLmFkZChiLmV4cG9ydGluZ0dyb3VwKS5hbGlnbih3KGQse3dpZHRoOnIud2lkdGgseDpxKGQueCxiLmJ1dHRvbk9mZnNldCl9KSwhMCwic3BhY2luZ0JveCIpO2IuYnV0dG9uT2Zmc2V0Kz0oci53aWR0aCtkLmJ1dHRvblNwYWNpbmcpKigicmlnaHQiPT09ZC5hbGlnbj8tMToxKTtiLmV4cG9ydFNWR0VsZW1lbnRzLnB1c2gocixtKX19LGRlc3Ryb3lFeHBvcnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YT9hLnRhcmdldDp0aGlzO2E9Yi5leHBvcnRTVkdFbGVtZW50czt2YXIgZj1iLmV4cG9ydERpdkVsZW1lbnRzLGQ9Yi5leHBvcnRFdmVudHMsYzthJiYoYS5mb3JFYWNoKGZ1bmN0aW9uKGEsCmQpe2EmJihhLm9uY2xpY2s9YS5vbnRvdWNoc3RhcnQ9bnVsbCxjPSJjYWNoZS0iK2EubWVudUNsYXNzTmFtZSxiW2NdJiZkZWxldGUgYltjXSxiLmV4cG9ydFNWR0VsZW1lbnRzW2RdPWEuZGVzdHJveSgpKX0pLGEubGVuZ3RoPTApO2IuZXhwb3J0aW5nR3JvdXAmJihiLmV4cG9ydGluZ0dyb3VwLmRlc3Ryb3koKSxkZWxldGUgYi5leHBvcnRpbmdHcm91cCk7ZiYmKGYuZm9yRWFjaChmdW5jdGlvbihhLGQpe2UuY2xlYXJUaW1lb3V0KGEuaGlkZVRpbWVyKTtLKGEsIm1vdXNlbGVhdmUiKTtiLmV4cG9ydERpdkVsZW1lbnRzW2RdPWEub25tb3VzZW91dD1hLm9ubW91c2VvdmVyPWEub250b3VjaHN0YXJ0PWEub25jbGljaz1udWxsO0QoYSl9KSxmLmxlbmd0aD0wKTtkJiYoZC5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EoKX0pLGQubGVuZ3RoPTApfX0pO3AucHJvdG90eXBlLmlubGluZVRvQXR0cmlidXRlcz0iZmlsbCBzdHJva2Ugc3Ryb2tlTGluZWNhcCBzdHJva2VMaW5lam9pbiBzdHJva2VXaWR0aCB0ZXh0QW5jaG9yIHggeSIuc3BsaXQoIiAiKTsKcC5wcm90b3R5cGUuaW5saW5lQmxhY2tsaXN0PVsvLS8sL14oY2xpcFBhdGh8Y3NzVGV4dHxkfGhlaWdodHx3aWR0aCkkLywvXmZvbnQkLywvW2xMXW9naWNhbChXaWR0aHxIZWlnaHQpJC8sL3BlcnNwZWN0aXZlLywvVGFwSGlnaGxpZ2h0Q29sb3IvLC9edHJhbnNpdGlvbi8sL15sZW5ndGgkL107cC5wcm90b3R5cGUudW5zdHlsZWRFbGVtZW50cz1bImNsaXBQYXRoIiwiZGVmcyIsImRlc2MiXTtjLnByb3RvdHlwZS5pbmxpbmVTdHlsZXM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe3JldHVybiBhLnJlcGxhY2UoLyhbQS1aXSkvZyxmdW5jdGlvbihhLGIpe3JldHVybiItIitiLnRvTG93ZXJDYXNlKCl9KX1mdW5jdGlvbiBiKGMpe2Z1bmN0aW9uIGYoYixmKXt2PXU9ITE7aWYoaCl7Zm9yKHE9aC5sZW5ndGg7cS0tJiYhdTspdT1oW3FdLnRlc3QoZik7dj0hdX0idHJhbnNmb3JtIj09PWYmJiJub25lIj09PWImJih2PSEwKTtmb3IocT1lLmxlbmd0aDtxLS0mJiF2Oyl2PWVbcV0udGVzdChmKXx8CiJmdW5jdGlvbiI9PT10eXBlb2YgYjt2fHx5W2ZdPT09YiYmInN2ZyIhPT1jLm5vZGVOYW1lfHxnW2Mubm9kZU5hbWVdW2ZdPT09Ynx8KGQmJi0xPT09ZC5pbmRleE9mKGYpP20rPWEoZikrIjoiK2IrIjsiOmImJmMuc2V0QXR0cmlidXRlKGEoZiksYikpfXZhciBtPSIiLHYsdSxxO2lmKDE9PT1jLm5vZGVUeXBlJiYtMT09PWsuaW5kZXhPZihjLm5vZGVOYW1lKSl7dmFyIHQ9ei5nZXRDb21wdXRlZFN0eWxlKGMsbnVsbCk7dmFyIHk9InN2ZyI9PT1jLm5vZGVOYW1lP3t9OnouZ2V0Q29tcHV0ZWRTdHlsZShjLnBhcmVudE5vZGUsbnVsbCk7aWYoIWdbYy5ub2RlTmFtZV0pe2w9cC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic3ZnIilbMF07dmFyIHc9cC5jcmVhdGVFbGVtZW50TlMoYy5uYW1lc3BhY2VVUkksYy5ub2RlTmFtZSk7bC5hcHBlbmRDaGlsZCh3KTtnW2Mubm9kZU5hbWVdPW4oei5nZXRDb21wdXRlZFN0eWxlKHcsbnVsbCkpOyJ0ZXh0Ij09PWMubm9kZU5hbWUmJmRlbGV0ZSBnLnRleHQuZmlsbDsKbC5yZW1vdmVDaGlsZCh3KX1pZihOfHxNKWZvcih2YXIgeCBpbiB0KWYodFt4XSx4KTtlbHNlIEUodCxmKTttJiYodD1jLmdldEF0dHJpYnV0ZSgic3R5bGUiKSxjLnNldEF0dHJpYnV0ZSgic3R5bGUiLCh0P3QrIjsiOiIiKSttKSk7InN2ZyI9PT1jLm5vZGVOYW1lJiZjLnNldEF0dHJpYnV0ZSgic3Ryb2tlLXdpZHRoIiwiMXB4Iik7InRleHQiIT09Yy5ub2RlTmFtZSYmW10uZm9yRWFjaC5jYWxsKGMuY2hpbGRyZW58fGMuY2hpbGROb2RlcyxiKX19dmFyIGM9dGhpcy5yZW5kZXJlcixkPWMuaW5saW5lVG9BdHRyaWJ1dGVzLGU9Yy5pbmxpbmVCbGFja2xpc3QsaD1jLmlubGluZVdoaXRlbGlzdCxrPWMudW5zdHlsZWRFbGVtZW50cyxnPXt9LGw7Yz14LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpO3UoYyx7d2lkdGg6IjFweCIsaGVpZ2h0OiIxcHgiLHZpc2liaWxpdHk6ImhpZGRlbiJ9KTt4LmJvZHkuYXBwZW5kQ2hpbGQoYyk7dmFyIHA9Yy5jb250ZW50V2luZG93LmRvY3VtZW50O3Aub3BlbigpOwpwLndyaXRlKCc8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PC9zdmc+Jyk7cC5jbG9zZSgpO2IodGhpcy5jb250YWluZXIucXVlcnlTZWxlY3Rvcigic3ZnIikpO2wucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChsKX07Ry5tZW51PWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybltbIk0iLGEsYisyLjVdLFsiTCIsYStjLGIrMi41XSxbIk0iLGEsYitkLzIrLjVdLFsiTCIsYStjLGIrZC8yKy41XSxbIk0iLGEsYitkLTEuNV0sWyJMIixhK2MsYitkLTEuNV1dfTtHLm1lbnViYWxsPWZ1bmN0aW9uKGEsYixjLGQpe2E9W107ZD1kLzMtMjtyZXR1cm4gYT1hLmNvbmNhdCh0aGlzLmNpcmNsZShjLWQsYixkLGQpLHRoaXMuY2lyY2xlKGMtZCxiK2QrNCxkLGQpLHRoaXMuY2lyY2xlKGMtZCxiKzIqKGQrNCksZCxkKSl9O2MucHJvdG90eXBlLnJlbmRlckV4cG9ydGluZz1mdW5jdGlvbigpe3ZhciBhPXRoaXMsYj1hLm9wdGlvbnMuZXhwb3J0aW5nLGM9Yi5idXR0b25zLGQ9YS5pc0RpcnR5RXhwb3J0aW5nfHwKIWEuZXhwb3J0U1ZHRWxlbWVudHM7YS5idXR0b25PZmZzZXQ9MDthLmlzRGlydHlFeHBvcnRpbmcmJmEuZGVzdHJveUV4cG9ydCgpO2QmJiExIT09Yi5lbmFibGVkJiYoYS5leHBvcnRFdmVudHM9W10sYS5leHBvcnRpbmdHcm91cD1hLmV4cG9ydGluZ0dyb3VwfHxhLnJlbmRlcmVyLmcoImV4cG9ydGluZy1ncm91cCIpLmF0dHIoe3pJbmRleDozfSkuYWRkKCksRShjLGZ1bmN0aW9uKGIpe2EuYWRkQnV0dG9uKGIpfSksYS5pc0RpcnR5RXhwb3J0aW5nPSExKTt0KGEsImRlc3Ryb3kiLGEuZGVzdHJveUV4cG9ydCl9O3QoYywiaW5pdCIsZnVuY3Rpb24oKXt2YXIgYT10aGlzO2EuZXhwb3J0aW5nPXt1cGRhdGU6ZnVuY3Rpb24oYixjKXthLmlzRGlydHlFeHBvcnRpbmc9ITA7bighMCxhLm9wdGlvbnMuZXhwb3J0aW5nLGIpO3EoYywhMCkmJmEucmVkcmF3KCl9fTtsLmFkZFVwZGF0ZShmdW5jdGlvbihiLGMpe2EuaXNEaXJ0eUV4cG9ydGluZz0hMDtuKCEwLGEub3B0aW9ucy5uYXZpZ2F0aW9uLApiKTtxKGMsITApJiZhLnJlZHJhdygpfSxhKX0pO2MucHJvdG90eXBlLmNhbGxiYWNrcy5wdXNoKGZ1bmN0aW9uKGEpe2EucmVuZGVyRXhwb3J0aW5nKCk7dChhLCJyZWRyYXciLGEucmVuZGVyRXhwb3J0aW5nKX0pfSk7cChjLCJtYXN0ZXJzL21vZHVsZXMvZXhwb3J0aW5nLnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1leHBvcnRpbmcuanMubWFw"></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIEV4cG9ydGluZyBtb2R1bGUKCiAoYykgMjAxMC0yMDE5IFRvcnN0ZWluIEhvbnNpCgogTGljZW5zZTogd3d3LmhpZ2hjaGFydHMuY29tL2xpY2Vuc2UKKi8KKGZ1bmN0aW9uKGEpeyJvYmplY3QiPT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/KGFbImRlZmF1bHQiXT1hLG1vZHVsZS5leHBvcnRzPWEpOiJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiaGlnaGNoYXJ0cy9tb2R1bGVzL2V4cG9ydC1kYXRhIixbImhpZ2hjaGFydHMiLCJoaWdoY2hhcnRzL21vZHVsZXMvZXhwb3J0aW5nIl0sZnVuY3Rpb24oZSl7YShlKTthLkhpZ2hjaGFydHM9ZTtyZXR1cm4gYX0pOmEoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihhKXtmdW5jdGlvbiBlKGEsYixmLGQpe2EuaGFzT3duUHJvcGVydHkoYil8fChhW2JdPWQuYXBwbHkobnVsbCxmKSl9YT1hP2EuX21vZHVsZXM6e307ZShhLCJtaXhpbnMvYWpheC5qcyIsW2FbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxiKXt2YXIgZj1iLm1lcmdlLApkPWIub2JqZWN0RWFjaDthLmFqYXg9ZnVuY3Rpb24oYil7dmFyIGE9ZighMCx7dXJsOiExLHR5cGU6ImdldCIsZGF0YVR5cGU6Impzb24iLHN1Y2Nlc3M6ITEsZXJyb3I6ITEsZGF0YTohMSxoZWFkZXJzOnt9fSxiKTtiPXtqc29uOiJhcHBsaWNhdGlvbi9qc29uIix4bWw6ImFwcGxpY2F0aW9uL3htbCIsdGV4dDoidGV4dC9wbGFpbiIsb2N0ZXQ6ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJ9O3ZhciBjPW5ldyBYTUxIdHRwUmVxdWVzdDtpZighYS51cmwpcmV0dXJuITE7Yy5vcGVuKGEudHlwZS50b1VwcGVyQ2FzZSgpLGEudXJsLCEwKTthLmhlYWRlcnNbIkNvbnRlbnQtVHlwZSJdfHxjLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsYlthLmRhdGFUeXBlXXx8Yi50ZXh0KTtkKGEuaGVhZGVycyxmdW5jdGlvbihhLGIpe2Muc2V0UmVxdWVzdEhlYWRlcihiLGEpfSk7Yy5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZig0PT09Yy5yZWFkeVN0YXRlKXtpZigyMDA9PT0KYy5zdGF0dXMpe3ZhciBiPWMucmVzcG9uc2VUZXh0O2lmKCJqc29uIj09PWEuZGF0YVR5cGUpdHJ5e2I9SlNPTi5wYXJzZShiKX1jYXRjaCh2KXthLmVycm9yJiZhLmVycm9yKGMsdik7cmV0dXJufXJldHVybiBhLnN1Y2Nlc3MmJmEuc3VjY2VzcyhiKX1hLmVycm9yJiZhLmVycm9yKGMsYy5yZXNwb25zZVRleHQpfX07dHJ5e2EuZGF0YT1KU09OLnN0cmluZ2lmeShhLmRhdGEpfWNhdGNoKHApe31jLnNlbmQoYS5kYXRhfHwhMCl9O2EuZ2V0SlNPTj1mdW5jdGlvbihiLGQpe2EuYWpheCh7dXJsOmIsc3VjY2VzczpkLGRhdGFUeXBlOiJqc29uIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoidGV4dC9wbGFpbiJ9fSl9fSk7ZShhLCJtaXhpbnMvZG93bmxvYWQtdXJsLmpzIixbYVsicGFydHMvR2xvYmFscy5qcyJdXSxmdW5jdGlvbihhKXt2YXIgYj1hLndpbixmPWIubmF2aWdhdG9yLGQ9Yi5kb2N1bWVudCxlPWIuVVJMfHxiLndlYmtpdFVSTHx8Yix1PS9FZGdlXC9cZCsvLnRlc3QoZi51c2VyQWdlbnQpOwphLmRhdGFVUkx0b0Jsb2I9ZnVuY3Rpb24oYSl7aWYoKGE9YS5tYXRjaCgvZGF0YTooW147XSopKDtiYXNlNjQpPywoWzAtOUEtWmEteisvXSspLykpJiYzPGEubGVuZ3RoJiZiLmF0b2ImJmIuQXJyYXlCdWZmZXImJmIuVWludDhBcnJheSYmYi5CbG9iJiZlLmNyZWF0ZU9iamVjdFVSTCl7dmFyIGM9Yi5hdG9iKGFbM10pLGQ9bmV3IGIuQXJyYXlCdWZmZXIoYy5sZW5ndGgpO2Q9bmV3IGIuVWludDhBcnJheShkKTtmb3IodmFyIGY9MDtmPGQubGVuZ3RoOysrZilkW2ZdPWMuY2hhckNvZGVBdChmKTthPW5ldyBiLkJsb2IoW2RdLHt0eXBlOmFbMV19KTtyZXR1cm4gZS5jcmVhdGVPYmplY3RVUkwoYSl9fTthLmRvd25sb2FkVVJMPWZ1bmN0aW9uKGMscCl7dmFyIGU9ZC5jcmVhdGVFbGVtZW50KCJhIik7aWYoInN0cmluZyI9PT10eXBlb2YgY3x8YyBpbnN0YW5jZW9mIFN0cmluZ3x8IWYubXNTYXZlT3JPcGVuQmxvYil7aWYodXx8MkU2PGMubGVuZ3RoKWlmKGM9YS5kYXRhVVJMdG9CbG9iKGMpLAohYyl0aHJvdyBFcnJvcigiRmFpbGVkIHRvIGNvbnZlcnQgdG8gYmxvYiIpO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIGUuZG93bmxvYWQpZS5ocmVmPWMsZS5kb3dubG9hZD1wLGQuYm9keS5hcHBlbmRDaGlsZChlKSxlLmNsaWNrKCksZC5ib2R5LnJlbW92ZUNoaWxkKGUpO2Vsc2UgdHJ5e3ZhciBCPWIub3BlbihjLCJjaGFydCIpO2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIEJ8fG51bGw9PT1CKXRocm93IEVycm9yKCJGYWlsZWQgdG8gb3BlbiB3aW5kb3ciKTt9Y2F0Y2goRSl7Yi5sb2NhdGlvbi5ocmVmPWN9fWVsc2UgZi5tc1NhdmVPck9wZW5CbG9iKGMscCl9fSk7ZShhLCJtb2R1bGVzL2V4cG9ydC1kYXRhLnNyYy5qcyIsW2FbInBhcnRzL0F4aXMuanMiXSxhWyJwYXJ0cy9DaGFydC5qcyJdLGFbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxiLGUsZCl7ZnVuY3Rpb24gZihhLGIpe3ZhciBjPXAubmF2aWdhdG9yLGQ9LTE8Yy51c2VyQWdlbnQuaW5kZXhPZigiV2ViS2l0IikmJgowPmMudXNlckFnZW50LmluZGV4T2YoIkNocm9tZSIpLGc9cC5VUkx8fHAud2Via2l0VVJMfHxwO3RyeXtpZihjLm1zU2F2ZU9yT3BlbkJsb2ImJnAuTVNCbG9iQnVpbGRlcil7dmFyIGU9bmV3IHAuTVNCbG9iQnVpbGRlcjtlLmFwcGVuZChhKTtyZXR1cm4gZS5nZXRCbG9iKCJpbWFnZS9zdmcreG1sIil9aWYoIWQpcmV0dXJuIGcuY3JlYXRlT2JqZWN0VVJMKG5ldyBwLkJsb2IoWyJcdWZlZmYiK2FdLHt0eXBlOmJ9KSl9Y2F0Y2goTSl7fX12YXIgdT1lLmRvYyxjPWUuc2VyaWVzVHlwZXMscD1lLndpbix2PWQuYWRkRXZlbnQsQj1kLmRlZmluZWQsRT1kLmV4dGVuZCxKPWQuZmluZCxEPWQuZmlyZUV2ZW50LEs9ZC5nZXRPcHRpb25zLEw9ZC5pc051bWJlcix3PWQucGljaztkPWQuc2V0T3B0aW9uczt2YXIgRj1lLmRvd25sb2FkVVJMO2Qoe2V4cG9ydGluZzp7Y3N2Ontjb2x1bW5IZWFkZXJGb3JtYXR0ZXI6bnVsbCxkYXRlRm9ybWF0OiIlWS0lbS0lZCAlSDolTTolUyIsZGVjaW1hbFBvaW50Om51bGwsCml0ZW1EZWxpbWl0ZXI6bnVsbCxsaW5lRGVsaW1pdGVyOiJcbiJ9LHNob3dUYWJsZTohMSx1c2VNdWx0aUxldmVsSGVhZGVyczohMCx1c2VSb3dzcGFuSGVhZGVyczohMH0sbGFuZzp7ZG93bmxvYWRDU1Y6IkRvd25sb2FkIENTViIsZG93bmxvYWRYTFM6IkRvd25sb2FkIFhMUyIsZXhwb3J0RGF0YTp7Y2F0ZWdvcnlIZWFkZXI6IkNhdGVnb3J5IixjYXRlZ29yeURhdGV0aW1lSGVhZGVyOiJEYXRlVGltZSJ9LHZpZXdEYXRhOiJWaWV3IGRhdGEgdGFibGUifX0pO3YoYiwicmVuZGVyIixmdW5jdGlvbigpe3RoaXMub3B0aW9ucyYmdGhpcy5vcHRpb25zLmV4cG9ydGluZyYmdGhpcy5vcHRpb25zLmV4cG9ydGluZy5zaG93VGFibGUmJiF0aGlzLm9wdGlvbnMuY2hhcnQuZm9yRXhwb3J0JiZ0aGlzLnZpZXdEYXRhKCl9KTtiLnByb3RvdHlwZS5zZXRVcEtleVRvQXhpcz1mdW5jdGlvbigpe2MuYXJlYXJhbmdlJiYoYy5hcmVhcmFuZ2UucHJvdG90eXBlLmtleVRvQXhpcz17bG93OiJ5IixoaWdoOiJ5In0pOwpjLmdhbnR0JiYoYy5nYW50dC5wcm90b3R5cGUua2V5VG9BeGlzPXtzdGFydDoieCIsZW5kOiJ4In0pfTtiLnByb3RvdHlwZS5nZXREYXRhUm93cz1mdW5jdGlvbihiKXt2YXIgYz10aGlzLmhhc1BhcmFsbGVsQ29vcmRpbmF0ZXMsZD10aGlzLnRpbWUsZT10aGlzLm9wdGlvbnMuZXhwb3J0aW5nJiZ0aGlzLm9wdGlvbnMuZXhwb3J0aW5nLmNzdnx8e30sZz10aGlzLnhBeGlzLHE9e30sZj1bXSxwPVtdLHQ9W10sbTt2YXIgaz10aGlzLm9wdGlvbnMubGFuZy5leHBvcnREYXRhO3ZhciB6PWsuY2F0ZWdvcnlIZWFkZXIseD1rLmNhdGVnb3J5RGF0ZXRpbWVIZWFkZXIsRz1mdW5jdGlvbihuLGMsZCl7aWYoZS5jb2x1bW5IZWFkZXJGb3JtYXR0ZXIpe3ZhciBnPWUuY29sdW1uSGVhZGVyRm9ybWF0dGVyKG4sYyxkKTtpZighMSE9PWcpcmV0dXJuIGd9cmV0dXJuIG4/biBpbnN0YW5jZW9mIGE/bi5vcHRpb25zLnRpdGxlJiZuLm9wdGlvbnMudGl0bGUudGV4dHx8KG4uZGF0ZVRpbWU/eDp6KToKYj97Y29sdW1uVGl0bGU6MTxkP2M6bi5uYW1lLHRvcExldmVsQ29sdW1uVGl0bGU6bi5uYW1lfTpuLm5hbWUrKDE8ZD8iICgiK2MrIikiOiIiKTp6fSxIPWZ1bmN0aW9uKGEsYixjKXt2YXIgbj17fSxkPXt9O2IuZm9yRWFjaChmdW5jdGlvbihiKXt2YXIgZT0oYS5rZXlUb0F4aXMmJmEua2V5VG9BeGlzW2JdfHxiKSsiQXhpcyI7ZT1MKGMpP2EuY2hhcnRbZV1bY106YVtlXTtuW2JdPWUmJmUuY2F0ZWdvcmllc3x8W107ZFtiXT1lJiZlLmRhdGVUaW1lfSk7cmV0dXJue2NhdGVnb3J5TWFwOm4sZGF0ZVRpbWVWYWx1ZUF4aXNNYXA6ZH19LHI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5kYXRhLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYS5uYW1lfSkubGVuZ3RoJiZiJiYhYi5jYXRlZ29yaWVzJiYhYS5rZXlUb0F4aXM/YS5wb2ludEFycmF5TWFwJiZhLnBvaW50QXJyYXlNYXAuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiJ4Ij09PWF9KS5sZW5ndGg/KGEucG9pbnRBcnJheU1hcC51bnNoaWZ0KCJ4IiksCmEucG9pbnRBcnJheU1hcCk6WyJ4IiwieSJdOmEucG9pbnRBcnJheU1hcHx8WyJ5Il19LGg9W107dmFyIHk9MDt0aGlzLnNldFVwS2V5VG9BeGlzKCk7dGhpcy5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgeD1hLnhBeGlzLG49YS5vcHRpb25zLmtleXN8fHIoYSx4KSxmPW4ubGVuZ3RoLGw9IWEucmVxdWlyZVNvcnRpbmcmJnt9LHo9Zy5pbmRleE9mKHgpLEM9SChhLG4pLGs7aWYoITEhPT1hLm9wdGlvbnMuaW5jbHVkZUluRGF0YUV4cG9ydCYmIWEub3B0aW9ucy5pc0ludGVybmFsJiYhMSE9PWEudmlzaWJsZSl7SihoLGZ1bmN0aW9uKGEpe3JldHVybiBhWzBdPT09en0pfHxoLnB1c2goW3oseV0pO2ZvcihrPTA7azxmOyltPUcoYSxuW2tdLG4ubGVuZ3RoKSx0LnB1c2gobS5jb2x1bW5UaXRsZXx8bSksYiYmcC5wdXNoKG0udG9wTGV2ZWxDb2x1bW5UaXRsZXx8bSksaysrO3ZhciBJPXtjaGFydDphLmNoYXJ0LGF1dG9JbmNyZW1lbnQ6YS5hdXRvSW5jcmVtZW50LG9wdGlvbnM6YS5vcHRpb25zLApwb2ludEFycmF5TWFwOmEucG9pbnRBcnJheU1hcH07YS5vcHRpb25zLmRhdGEuZm9yRWFjaChmdW5jdGlvbihiLGcpe2MmJihDPUgoYSxuLGcpKTt2YXIgaD17c2VyaWVzOkl9O2EucG9pbnRDbGFzcy5wcm90b3R5cGUuYXBwbHlPcHRpb25zLmFwcGx5KGgsW2JdKTtiPWgueDt2YXIgcj1hLmRhdGFbZ10mJmEuZGF0YVtnXS5uYW1lO2s9MDtpZigheHx8Im5hbWUiPT09YS5leHBvcnRLZXl8fCFjJiZ4JiZ4Lmhhc05hbWVzJiZyKWI9cjtsJiYobFtiXSYmKGIrPSJ8IitnKSxsW2JdPSEwKTtxW2JdfHwocVtiXT1bXSxxW2JdLnhWYWx1ZXM9W10pO3FbYl0ueD1oLng7cVtiXS5uYW1lPXI7Zm9yKHFbYl0ueFZhbHVlc1t6XT1oLng7azxmOylnPW5ba10scj1oW2ddLHFbYl1beStrXT13KEMuY2F0ZWdvcnlNYXBbZ11bcl0sQy5kYXRlVGltZVZhbHVlQXhpc01hcFtnXT9kLmRhdGVGb3JtYXQoZS5kYXRlRm9ybWF0LHIpOm51bGwsciksaysrfSk7eSs9a319KTtmb3IobCBpbiBxKU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHEsCmwpJiZmLnB1c2gocVtsXSk7dmFyIGw9Yj9bcCx0XTpbdF07Zm9yKHk9aC5sZW5ndGg7eS0tOyl7dmFyIHU9aFt5XVswXTt2YXIgdj1oW3ldWzFdO3ZhciBBPWdbdV07Zi5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEueFZhbHVlc1t1XS1iLnhWYWx1ZXNbdV19KTtrPUcoQSk7bFswXS5zcGxpY2UodiwwLGspO2ImJmxbMV0mJmxbMV0uc3BsaWNlKHYsMCxrKTtmLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5uYW1lO0EmJiFCKGIpJiYoQS5kYXRlVGltZT8oYS54IGluc3RhbmNlb2YgRGF0ZSYmKGEueD1hLnguZ2V0VGltZSgpKSxiPWQuZGF0ZUZvcm1hdChlLmRhdGVGb3JtYXQsYS54KSk6Yj1BLmNhdGVnb3JpZXM/dyhBLm5hbWVzW2EueF0sQS5jYXRlZ29yaWVzW2EueF0sYS54KTphLngpO2Euc3BsaWNlKHYsMCxiKX0pfWw9bC5jb25jYXQoZik7RCh0aGlzLCJleHBvcnREYXRhIix7ZGF0YVJvd3M6bH0pO3JldHVybiBsfTtiLnByb3RvdHlwZS5nZXRDU1Y9ZnVuY3Rpb24oYSl7dmFyIGI9CiIiLGM9dGhpcy5nZXREYXRhUm93cygpLGQ9dGhpcy5vcHRpb25zLmV4cG9ydGluZy5jc3YsZT13KGQuZGVjaW1hbFBvaW50LCIsIiE9PWQuaXRlbURlbGltaXRlciYmYT8oMS4xKS50b0xvY2FsZVN0cmluZygpWzFdOiIuIiksZz13KGQuaXRlbURlbGltaXRlciwiLCI9PT1lPyI7IjoiLCIpLGY9ZC5saW5lRGVsaW1pdGVyO2MuZm9yRWFjaChmdW5jdGlvbihhLGQpe2Zvcih2YXIgbSxrPWEubGVuZ3RoO2stLTspbT1hW2tdLCJzdHJpbmciPT09dHlwZW9mIG0mJihtPSciJyttKyciJyksIm51bWJlciI9PT10eXBlb2YgbSYmIi4iIT09ZSYmKG09bS50b1N0cmluZygpLnJlcGxhY2UoIi4iLGUpKSxhW2tdPW07Yis9YS5qb2luKGcpO2Q8Yy5sZW5ndGgtMSYmKGIrPWYpfSk7cmV0dXJuIGJ9O2IucHJvdG90eXBlLmdldFRhYmxlPWZ1bmN0aW9uKGEpe3ZhciBiPSc8dGFibGUgaWQ9ImhpZ2hjaGFydHMtZGF0YS10YWJsZS0nK3RoaXMuaW5kZXgrJyI+JyxjPXRoaXMub3B0aW9ucyxkPWE/KDEuMSkudG9Mb2NhbGVTdHJpbmcoKVsxXToKIi4iLGU9dyhjLmV4cG9ydGluZy51c2VNdWx0aUxldmVsSGVhZGVycywhMCk7YT10aGlzLmdldERhdGFSb3dzKGUpO3ZhciBmPTAsZz1lP2Euc2hpZnQoKTpudWxsLHA9YS5zaGlmdCgpLHQ9ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGY9dyhlLCIiKTtiPSJ0ZXh0IisoYj8iICIrYjoiIik7Im51bWJlciI9PT10eXBlb2YgZj8oZj1mLnRvU3RyaW5nKCksIiwiPT09ZCYmKGY9Zi5yZXBsYWNlKCIuIixkKSksYj0ibnVtYmVyIik6ZXx8KGI9ImVtcHR5Iik7cmV0dXJuIjwiK2ErKGM/IiAiK2M6IiIpKycgY2xhc3M9IicrYisnIj4nK2YrIjwvIithKyI+In07ITEhPT1jLmV4cG9ydGluZy50YWJsZUNhcHRpb24mJihiKz0nPGNhcHRpb24gY2xhc3M9ImhpZ2hjaGFydHMtdGFibGUtY2FwdGlvbiI+Jyt3KGMuZXhwb3J0aW5nLnRhYmxlQ2FwdGlvbixjLnRpdGxlLnRleHQ/Yy50aXRsZS50ZXh0LnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csCiImZ3Q7IikucmVwbGFjZSgvIi9nLCImcXVvdDsiKS5yZXBsYWNlKC8nL2csIiYjeDI3OyIpLnJlcGxhY2UoL1wvL2csIiYjeDJGOyIpOiJDaGFydCIpKyI8L2NhcHRpb24+Iik7Zm9yKHZhciBtPTAsaz1hLmxlbmd0aDttPGs7KyttKWFbbV0ubGVuZ3RoPmYmJihmPWFbbV0ubGVuZ3RoKTtiKz1mdW5jdGlvbihhLGIsZCl7dmFyIGY9Ijx0aGVhZD4iLGc9MDtkPWR8fGImJmIubGVuZ3RoO3ZhciBoLGs9MDtpZihoPWUmJmEmJmIpe2E6aWYoaD1hLmxlbmd0aCxiLmxlbmd0aD09PWgpe2Zvcig7aC0tOylpZihhW2hdIT09YltoXSl7aD0hMTticmVhayBhfWg9ITB9ZWxzZSBoPSExO2g9IWh9aWYoaCl7Zm9yKGYrPSI8dHI+IjtnPGQ7KytnKXtoPWFbZ107dmFyIGw9YVtnKzFdO2g9PT1sPysrazprPyhmKz10KCJ0aCIsImhpZ2hjaGFydHMtdGFibGUtdG9waGVhZGluZyIsJ3Njb3BlPSJjb2wiIGNvbHNwYW49IicrKGsrMSkrJyInLGgpLGs9MCk6KGg9PT1iW2ddP2MuZXhwb3J0aW5nLnVzZVJvd3NwYW5IZWFkZXJzPwoobD0yLGRlbGV0ZSBiW2ddKToobD0xLGJbZ109IiIpOmw9MSxmKz10KCJ0aCIsImhpZ2hjaGFydHMtdGFibGUtdG9waGVhZGluZyIsJ3Njb3BlPSJjb2wiJysoMTxsPycgdmFsaWduPSJ0b3AiIHJvd3NwYW49IicrbCsnIic6IiIpLGgpKX1mKz0iPC90cj4ifWlmKGIpe2YrPSI8dHI+IjtnPTA7Zm9yKGQ9Yi5sZW5ndGg7ZzxkOysrZykidW5kZWZpbmVkIiE9PXR5cGVvZiBiW2ddJiYoZis9dCgidGgiLG51bGwsJ3Njb3BlPSJjb2wiJyxiW2ddKSk7Zis9IjwvdHI+In1yZXR1cm4gZisiPC90aGVhZD4ifShnLHAsTWF0aC5tYXgoZixwLmxlbmd0aCkpO2IrPSI8dGJvZHk+IjthLmZvckVhY2goZnVuY3Rpb24oYSl7Yis9Ijx0cj4iO2Zvcih2YXIgYz0wO2M8ZjtjKyspYis9dChjPyJ0ZCI6InRoIixudWxsLGM/IiI6J3Njb3BlPSJyb3ciJyxhW2NdKTtiKz0iPC90cj4ifSk7Yis9IjwvdGJvZHk+PC90YWJsZT4iO2E9e2h0bWw6Yn07RCh0aGlzLCJhZnRlckdldFRhYmxlIixhKTtyZXR1cm4gYS5odG1sfTsKYi5wcm90b3R5cGUuZG93bmxvYWRDU1Y9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldENTVighMCk7RihmKGEsInRleHQvY3N2Iil8fCJkYXRhOnRleHQvY3N2LFx1ZmVmZiIrZW5jb2RlVVJJQ29tcG9uZW50KGEpLHRoaXMuZ2V0RmlsZW5hbWUoKSsiLmNzdiIpfTtiLnByb3RvdHlwZS5kb3dubG9hZFhMUz1mdW5jdGlvbigpe3ZhciBhPSc8aHRtbCB4bWxuczpvPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpvZmZpY2UiIHhtbG5zOng9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOmV4Y2VsIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MCI+PGhlYWQ+XHgzYyEtLVtpZiBndGUgbXNvIDldPjx4bWw+PHg6RXhjZWxXb3JrYm9vaz48eDpFeGNlbFdvcmtzaGVldHM+PHg6RXhjZWxXb3Jrc2hlZXQ+PHg6TmFtZT5BcmsxPC94Ok5hbWU+PHg6V29ya3NoZWV0T3B0aW9ucz48eDpEaXNwbGF5R3JpZGxpbmVzLz48L3g6V29ya3NoZWV0T3B0aW9ucz48L3g6RXhjZWxXb3Jrc2hlZXQ+PC94OkV4Y2VsV29ya3NoZWV0cz48L3g6RXhjZWxXb3JrYm9vaz48L3htbD48IVtlbmRpZl0tLVx4M2U8c3R5bGU+dGR7Ym9yZGVyOm5vbmU7Zm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7fSAubnVtYmVye21zby1udW1iZXItZm9ybWF0OiIwLjAwIjt9IC50ZXh0eyBtc28tbnVtYmVyLWZvcm1hdDoiQCI7fTwvc3R5bGU+PG1ldGEgbmFtZT1Qcm9nSWQgY29udGVudD1FeGNlbC5TaGVldD48bWV0YSBjaGFyc2V0PVVURi04PjwvaGVhZD48Ym9keT4nKwp0aGlzLmdldFRhYmxlKCEwKSsiPC9ib2R5PjwvaHRtbD4iO0YoZihhLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwiKXx8ImRhdGE6YXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsO2Jhc2U2NCwiK3AuYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoYSkpKSx0aGlzLmdldEZpbGVuYW1lKCkrIi54bHMiKX07Yi5wcm90b3R5cGUudmlld0RhdGE9ZnVuY3Rpb24oKXt0aGlzLmRhdGFUYWJsZURpdnx8KHRoaXMuZGF0YVRhYmxlRGl2PXUuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5kYXRhVGFibGVEaXYuY2xhc3NOYW1lPSJoaWdoY2hhcnRzLWRhdGEtdGFibGUiLHRoaXMucmVuZGVyVG8ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5kYXRhVGFibGVEaXYsdGhpcy5yZW5kZXJUby5uZXh0U2libGluZykpO3RoaXMuZGF0YVRhYmxlRGl2LmlubmVySFRNTD10aGlzLmdldFRhYmxlKCk7RCh0aGlzLCJhZnRlclZpZXdEYXRhIix0aGlzLmRhdGFUYWJsZURpdil9O2lmKGI9SygpLmV4cG9ydGluZylFKGIubWVudUl0ZW1EZWZpbml0aW9ucywKe2Rvd25sb2FkQ1NWOnt0ZXh0S2V5OiJkb3dubG9hZENTViIsb25jbGljazpmdW5jdGlvbigpe3RoaXMuZG93bmxvYWRDU1YoKX19LGRvd25sb2FkWExTOnt0ZXh0S2V5OiJkb3dubG9hZFhMUyIsb25jbGljazpmdW5jdGlvbigpe3RoaXMuZG93bmxvYWRYTFMoKX19LHZpZXdEYXRhOnt0ZXh0S2V5OiJ2aWV3RGF0YSIsb25jbGljazpmdW5jdGlvbigpe3RoaXMudmlld0RhdGEoKX19fSksYi5idXR0b25zJiZiLmJ1dHRvbnMuY29udGV4dEJ1dHRvbi5tZW51SXRlbXMucHVzaCgic2VwYXJhdG9yIiwiZG93bmxvYWRDU1YiLCJkb3dubG9hZFhMUyIsInZpZXdEYXRhIik7Yy5tYXAmJihjLm1hcC5wcm90b3R5cGUuZXhwb3J0S2V5PSJuYW1lIik7Yy5tYXBidWJibGUmJihjLm1hcGJ1YmJsZS5wcm90b3R5cGUuZXhwb3J0S2V5PSJuYW1lIik7Yy50cmVlbWFwJiYoYy50cmVlbWFwLnByb3RvdHlwZS5leHBvcnRLZXk9Im5hbWUiKX0pO2UoYSwibWFzdGVycy9tb2R1bGVzL2V4cG9ydC1kYXRhLnNyYy5qcyIsCltdLGZ1bmN0aW9uKCl7fSl9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXhwb3J0LWRhdGEuanMubWFw"></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIEhpZ2hjaGFydHMgZnVubmVsIG1vZHVsZQoKIChjKSAyMDEwLTIwMTkgVG9yc3RlaW4gSG9uc2kKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24oYil7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8oYlsiZGVmYXVsdCJdPWIsbW9kdWxlLmV4cG9ydHM9Yik6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL21vZHVsZXMvZnVubmVsIixbImhpZ2hjaGFydHMiXSxmdW5jdGlvbihlKXtiKGUpO2IuSGlnaGNoYXJ0cz1lO3JldHVybiBifSk6YigidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGUoYixsLG4sZSl7Yi5oYXNPd25Qcm9wZXJ0eShsKXx8KGJbbF09ZS5hcHBseShudWxsLG4pKX12YXIgeD1iP2IuX21vZHVsZXM6e307ZSh4LCJtb2R1bGVzL2Z1bm5lbC5zcmMuanMiLFt4WyJwYXJ0cy9DaGFydC5qcyJdLHhbInBhcnRzL0dsb2JhbHMuanMiXSx4WyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZSxsLG4pe3ZhciB4PWwubm9vcCxDPWwuc2VyaWVzVHlwZSwKST1sLnNlcmllc1R5cGVzO2w9bi5hZGRFdmVudDt2YXIgSj1uLmZpcmVFdmVudCxLPW4uaXNBcnJheSxIPW4ucGljaztDKCJmdW5uZWwiLCJwaWUiLHthbmltYXRpb246ITEsY2VudGVyOlsiNTAlIiwiNTAlIl0sd2lkdGg6IjkwJSIsbmVja1dpZHRoOiIzMCUiLGhlaWdodDoiMTAwJSIsbmVja0hlaWdodDoiMjUlIixyZXZlcnNlZDohMSxzaXplOiEwLGRhdGFMYWJlbHM6e2Nvbm5lY3RvcldpZHRoOjEsdmVydGljYWxBbGlnbjoibWlkZGxlIn0sc3RhdGVzOntzZWxlY3Q6e2NvbG9yOiIjY2NjY2NjIixib3JkZXJDb2xvcjoiIzAwMDAwMCJ9fX0se2FuaW1hdGU6eCx0cmFuc2xhdGU6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEsYyl7cmV0dXJuLyUkLy50ZXN0KGEpP2MqcGFyc2VJbnQoYSwxMCkvMTAwOnBhcnNlSW50KGEsMTApfXZhciByPTAsYz10aGlzLGc9Yy5jaGFydCxmPWMub3B0aW9ucyxrPWYucmV2ZXJzZWQsZD1mLmlnbm9yZUhpZGRlblBvaW50LGI9Zy5wbG90V2lkdGg7Zz1nLnBsb3RIZWlnaHQ7CnZhciBlPTAsbD1mLmNlbnRlcixoPWEobFswXSxiKSxtPWEobFsxXSxnKSxuPWEoZi53aWR0aCxiKSx1LHY9YShmLmhlaWdodCxnKSx6PWEoZi5uZWNrV2lkdGgsYiksRz1hKGYubmVja0hlaWdodCxnKSxBPW0tdi8yK3YtRztiPWMuZGF0YTt2YXIgRCxFLEM9ImxlZnQiPT09Zi5kYXRhTGFiZWxzLnBvc2l0aW9uPzE6MCxCLHAsRix3LHEseSx0O2MuZ2V0V2lkdGhBdD1mdW5jdGlvbihhKXt2YXIgYz1tLXYvMjtyZXR1cm4gYT5BfHx2PT09Rz96OnorKG4teikqKDEtKGEtYykvKHYtRykpfTtjLmdldFg9ZnVuY3Rpb24oYSxkLGIpe3JldHVybiBoKyhkPy0xOjEpKihjLmdldFdpZHRoQXQoaz8yKm0tYTphKS8yK2IubGFiZWxEaXN0YW5jZSl9O2MuY2VudGVyPVtoLG0sdl07Yy5jZW50ZXJYPWg7Yi5mb3JFYWNoKGZ1bmN0aW9uKGEpe2QmJiExPT09YS52aXNpYmxlfHwocis9YS55KX0pO2IuZm9yRWFjaChmdW5jdGlvbihhKXt0PW51bGw7RT1yP2EueS9yOjA7cD1tLXYvMitlKnY7cT1wKwpFKnY7dT1jLmdldFdpZHRoQXQocCk7Qj1oLXUvMjtGPUIrdTt1PWMuZ2V0V2lkdGhBdChxKTt3PWgtdS8yO3k9dyt1O3A+QT8oQj13PWgtei8yLEY9eT1oK3ovMik6cT5BJiYodD1xLHU9Yy5nZXRXaWR0aEF0KEEpLHc9aC11LzIseT13K3UscT1BKTtrJiYocD0yKm0tcCxxPTIqbS1xLG51bGwhPT10JiYodD0yKm0tdCkpO0Q9W1siTSIsQixwXSxbIkwiLEYscF0sWyJMIix5LHFdXTtudWxsIT09dCYmRC5wdXNoKFsiTCIseSx0XSxbIkwiLHcsdF0pO0QucHVzaChbIkwiLHcscV0sWyJaIl0pO2Euc2hhcGVUeXBlPSJwYXRoIjthLnNoYXBlQXJncz17ZDpEfTthLnBlcmNlbnRhZ2U9MTAwKkU7YS5wbG90WD1oO2EucGxvdFk9KHArKHR8fHEpKS8yO2EudG9vbHRpcFBvcz1baCxhLnBsb3RZXTthLmRsQm94PXt4OncseTpwLHRvcFdpZHRoOkYtQixib3R0b21XaWR0aDp5LXcsaGVpZ2h0Ok1hdGguYWJzKEgodCxxKS1wKSx3aWR0aDpOYU59O2Euc2xpY2U9eDthLmhhbGY9QztkJiYhMT09PWEudmlzaWJsZXx8CihlKz1FKX0pO0ooYywiYWZ0ZXJUcmFuc2xhdGUiKX0sc29ydEJ5QW5nbGU6ZnVuY3Rpb24oYSl7YS5zb3J0KGZ1bmN0aW9uKGEsYyl7cmV0dXJuIGEucGxvdFktYy5wbG90WX0pfSxkcmF3RGF0YUxhYmVsczpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZGF0YSxiPXRoaXMub3B0aW9ucy5kYXRhTGFiZWxzLmRpc3RhbmNlLGMsZz1hLmxlbmd0aDtmb3IodGhpcy5jZW50ZXJbMl0tPTIqYjtnLS07KXt2YXIgZj1hW2ddO3ZhciBrPShjPWYuaGFsZik/MTotMTt2YXIgZD1mLnBsb3RZO2YubGFiZWxEaXN0YW5jZT1IKGYub3B0aW9ucy5kYXRhTGFiZWxzJiZmLm9wdGlvbnMuZGF0YUxhYmVscy5kaXN0YW5jZSxiKTt0aGlzLm1heExhYmVsRGlzdGFuY2U9TWF0aC5tYXgoZi5sYWJlbERpc3RhbmNlLHRoaXMubWF4TGFiZWxEaXN0YW5jZXx8MCk7dmFyIGU9dGhpcy5nZXRYKGQsYyxmKTtmLmxhYmVsUG9zaXRpb249e25hdHVyYWw6e3g6MCx5OmR9LCJmaW5hbCI6e30sYWxpZ25tZW50OmM/InJpZ2h0IjoKImxlZnQiLGNvbm5lY3RvclBvc2l0aW9uOnticmVha0F0Ont4OmUrKGYubGFiZWxEaXN0YW5jZS01KSprLHk6ZH0sdG91Y2hpbmdTbGljZUF0Ont4OmUrZi5sYWJlbERpc3RhbmNlKmsseTpkfX19fUlbdGhpcy5vcHRpb25zLmRhdGFMYWJlbHMuaW5zaWRlPyJjb2x1bW4iOiJwaWUiXS5wcm90b3R5cGUuZHJhd0RhdGFMYWJlbHMuY2FsbCh0aGlzKX0sYWxpZ25EYXRhTGFiZWw6ZnVuY3Rpb24oYSxlLGMsZyxmKXt2YXIgaz1hLnNlcmllcztnPWsub3B0aW9ucy5yZXZlcnNlZDt2YXIgZD1hLmRsQm94fHxhLnNoYXBlQXJncyxsPWMuYWxpZ24scj1jLnZlcnRpY2FsQWxpZ24sbj0oKGsub3B0aW9uc3x8e30pLmRhdGFMYWJlbHN8fHt9KS5pbnNpZGUsaD1rLmNlbnRlclsxXTtrPWsuZ2V0V2lkdGhBdCgoZz8yKmgtYS5wbG90WTphLnBsb3RZKS1kLmhlaWdodC8yK2UuaGVpZ2h0KTtrPSJtaWRkbGUiPT09cj8oZC50b3BXaWR0aC1kLmJvdHRvbVdpZHRoKS80OihrLWQuYm90dG9tV2lkdGgpLwoyO2g9ZC55O3ZhciBtPWQueDsibWlkZGxlIj09PXI/aD1kLnktZC5oZWlnaHQvMitlLmhlaWdodC8yOiJ0b3AiPT09ciYmKGg9ZC55LWQuaGVpZ2h0K2UuaGVpZ2h0K2MucGFkZGluZyk7aWYoInRvcCI9PT1yJiYhZ3x8ImJvdHRvbSI9PT1yJiZnfHwibWlkZGxlIj09PXIpInJpZ2h0Ij09PWw/bT1kLngtYy5wYWRkaW5nK2s6ImxlZnQiPT09bCYmKG09ZC54K2MucGFkZGluZy1rKTtnPXt4Om0seTpnP2gtZC5oZWlnaHQ6aCx3aWR0aDpkLmJvdHRvbVdpZHRoLGhlaWdodDpkLmhlaWdodH07Yy52ZXJ0aWNhbEFsaWduPSJib3R0b20iO24mJiFhLnZpc2libGV8fGIuU2VyaWVzLnByb3RvdHlwZS5hbGlnbkRhdGFMYWJlbC5jYWxsKHRoaXMsYSxlLGMsZyxmKTtuJiYoIWEudmlzaWJsZSYmYS5kYXRhTGFiZWwmJihhLmRhdGFMYWJlbC5wbGFjZWQ9ITEpLGEuY29udHJhc3RDb2xvciYmZS5jc3Moe2NvbG9yOmEuY29udHJhc3RDb2xvcn0pKX19KTtsKGUsImFmdGVySGlkZUFsbE92ZXJsYXBwaW5nTGFiZWxzIiwKZnVuY3Rpb24oKXt0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWEub3B0aW9ucyYmYS5vcHRpb25zLmRhdGFMYWJlbHM7SyhiKSYmKGI9YlswXSk7YS5pcygicGllIikmJmEucGxhY2VEYXRhTGFiZWxzJiZiJiYhYi5pbnNpZGUmJmEucGxhY2VEYXRhTGFiZWxzKCl9KX0pO0MoInB5cmFtaWQiLCJmdW5uZWwiLHtuZWNrV2lkdGg6IjAlIixuZWNrSGVpZ2h0OiIwJSIscmV2ZXJzZWQ6ITB9KTsiIn0pO2UoeCwibWFzdGVycy9tb2R1bGVzL2Z1bm5lbC5zcmMuanMiLFtdLGZ1bmN0aW9uKCl7fSl9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZnVubmVsLmpzLm1hcA=="></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2htYXBzIEpTIHY4LjEuMiAoMjAyMC0wNi0xNikKCiAoYykgMjAwOS0yMDE5IFRvcnN0ZWluIEhvbnNpCgogTGljZW5zZTogd3d3LmhpZ2hjaGFydHMuY29tL2xpY2Vuc2UKKi8KKGZ1bmN0aW9uKGEpeyJvYmplY3QiPT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/KGFbImRlZmF1bHQiXT1hLG1vZHVsZS5leHBvcnRzPWEpOiJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiaGlnaGNoYXJ0cy9tb2R1bGVzL2hlYXRtYXAiLFsiaGlnaGNoYXJ0cyJdLGZ1bmN0aW9uKHApe2EocCk7YS5IaWdoY2hhcnRzPXA7cmV0dXJuIGF9KTphKCJ1bmRlZmluZWQiIT09dHlwZW9mIEhpZ2hjaGFydHM/SGlnaGNoYXJ0czp2b2lkIDApfSkoZnVuY3Rpb24oYSl7ZnVuY3Rpb24gcChhLHQsbSxrKXthLmhhc093blByb3BlcnR5KHQpfHwoYVt0XT1rLmFwcGx5KG51bGwsbSkpfWE9YT9hLl9tb2R1bGVzOnt9O3AoYSwicGFydHMtbWFwL0NvbG9yU2VyaWVzTWl4aW4uanMiLFthWyJwYXJ0cy9HbG9iYWxzLmpzIl1dLGZ1bmN0aW9uKGEpe2EuY29sb3JQb2ludE1peGluPXtzZXRWaXNpYmxlOmZ1bmN0aW9uKGEpe3ZhciBtPXRoaXMsaz1hPyJzaG93IjoKImhpZGUiO20udmlzaWJsZT1tLm9wdGlvbnMudmlzaWJsZT0hIWE7WyJncmFwaGljIiwiZGF0YUxhYmVsIl0uZm9yRWFjaChmdW5jdGlvbihhKXtpZihtW2FdKW1bYV1ba10oKX0pO3RoaXMuc2VyaWVzLmJ1aWxkS0RUcmVlKCl9fTthLmNvbG9yU2VyaWVzTWl4aW49e29wdGlvbmFsQXhpczoiY29sb3JBeGlzIixjb2xvckF4aXM6MCx0cmFuc2xhdGVDb2xvcnM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLG09dGhpcy5vcHRpb25zLm51bGxDb2xvcixrPXRoaXMuY29sb3JBeGlzLHg9dGhpcy5jb2xvcktleTsodGhpcy5kYXRhLmxlbmd0aD90aGlzLmRhdGE6dGhpcy5wb2ludHMpLmZvckVhY2goZnVuY3Rpb24ocSl7dmFyIHY9cS5nZXROZXN0ZWRQcm9wZXJ0eSh4KTsodj1xLm9wdGlvbnMuY29sb3J8fChxLmlzTnVsbHx8bnVsbD09PXEudmFsdWU/bTprJiYidW5kZWZpbmVkIiE9PXR5cGVvZiB2P2sudG9Db2xvcih2LHEpOnEuY29sb3J8fGEuY29sb3IpKSYmcS5jb2xvciE9PXYmJihxLmNvbG9yPQp2LCJwb2ludCI9PT1hLm9wdGlvbnMubGVnZW5kVHlwZSYmcS5sZWdlbmRJdGVtJiZhLmNoYXJ0LmxlZ2VuZC5jb2xvcml6ZUl0ZW0ocSxxLnZpc2libGUpKX0pfX19KTtwKGEsInBhcnRzLW1hcC9Db2xvckF4aXMuanMiLFthWyJwYXJ0cy9BeGlzLmpzIl0sYVsicGFydHMvQ2hhcnQuanMiXSxhWyJwYXJ0cy9Db2xvci5qcyJdLGFbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJwYXJ0cy9MZWdlbmQuanMiXSxhWyJtaXhpbnMvbGVnZW5kLXN5bWJvbC5qcyJdLGFbInBhcnRzL1BvaW50LmpzIl0sYVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGEsdCxtLGsseSxxLHYscil7dmFyIHg9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGM9ZnVuY3Rpb24oYixkKXtjPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkLGIpe2QuX19wcm90b19fPWJ9fHxmdW5jdGlvbihkLGIpe2Zvcih2YXIgZiBpbiBiKWIuaGFzT3duUHJvcGVydHkoZikmJgooZFtmXT1iW2ZdKX07cmV0dXJuIGMoYixkKX07cmV0dXJuIGZ1bmN0aW9uKGIsZCl7ZnVuY3Rpb24gZSgpe3RoaXMuY29uc3RydWN0b3I9Yn1jKGIsZCk7Yi5wcm90b3R5cGU9bnVsbD09PWQ/T2JqZWN0LmNyZWF0ZShkKTooZS5wcm90b3R5cGU9ZC5wcm90b3R5cGUsbmV3IGUpfX0oKSxwPW0ucGFyc2UsQj1rLm5vb3A7bT1yLmFkZEV2ZW50O3ZhciB1PXIuZXJhc2Usdz1yLmV4dGVuZCxjPXIuRngsZz1yLmlzTnVtYmVyLEM9ci5tZXJnZSxBPXIucGljayxuPXIuc3BsYXQ7IiI7dmFyIGw9ay5TZXJpZXM7cj1rLmNvbG9yUG9pbnRNaXhpbjt3KGwucHJvdG90eXBlLGsuY29sb3JTZXJpZXNNaXhpbik7dyh2LnByb3RvdHlwZSxyKTt0LnByb3RvdHlwZS5jb2xsZWN0aW9uc1dpdGhVcGRhdGUucHVzaCgiY29sb3JBeGlzIik7dC5wcm90b3R5cGUuY29sbGVjdGlvbnNXaXRoSW5pdC5jb2xvckF4aXM9W3QucHJvdG90eXBlLmFkZENvbG9yQXhpc107dmFyIGg9ZnVuY3Rpb24oYyl7ZnVuY3Rpb24gYihkLApiKXt2YXIgZT1jLmNhbGwodGhpcyxkLGIpfHx0aGlzO2UuYmVmb3JlUGFkZGluZz0hMTtlLmNoYXJ0PXZvaWQgMDtlLmNvbGw9ImNvbG9yQXhpcyI7ZS5kYXRhQ2xhc3Nlcz12b2lkIDA7ZS5sZWdlbmRJdGVtPXZvaWQgMDtlLmxlZ2VuZEl0ZW1zPXZvaWQgMDtlLm5hbWU9IiI7ZS5vcHRpb25zPXZvaWQgMDtlLnN0b3BzPXZvaWQgMDtlLnZpc2libGU9ITA7ZS5pbml0KGQsYik7cmV0dXJuIGV9eChiLGMpO2IuYnVpbGRPcHRpb25zPWZ1bmN0aW9uKGQsZSxiKXtkPWQub3B0aW9ucy5sZWdlbmR8fHt9O3ZhciBmPWIubGF5b3V0PyJ2ZXJ0aWNhbCIhPT1iLmxheW91dDoidmVydGljYWwiIT09ZC5sYXlvdXQ7cmV0dXJuIEMoZSx7c2lkZTpmPzI6MSxyZXZlcnNlZDohZn0sYix7b3Bwb3NpdGU6IWYsc2hvd0VtcHR5OiExLHRpdGxlOm51bGwsdmlzaWJsZTpkLmVuYWJsZWQmJihiPyExIT09Yi52aXNpYmxlOiEwKX0pfTtiLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGQsZSl7dmFyIEQ9Yi5idWlsZE9wdGlvbnMoZCwKYi5kZWZhdWx0T3B0aW9ucyxlKTt0aGlzLmNvbGw9ImNvbG9yQXhpcyI7Yy5wcm90b3R5cGUuaW5pdC5jYWxsKHRoaXMsZCxEKTtlLmRhdGFDbGFzc2VzJiZ0aGlzLmluaXREYXRhQ2xhc3NlcyhlKTt0aGlzLmluaXRTdG9wcygpO3RoaXMuaG9yaXo9IUQub3Bwb3NpdGU7dGhpcy56b29tRW5hYmxlZD0hMX07Yi5wcm90b3R5cGUuaW5pdERhdGFDbGFzc2VzPWZ1bmN0aW9uKGQpe3ZhciBiPXRoaXMuY2hhcnQsYyxmPTAsYT1iLm9wdGlvbnMuY2hhcnQuY29sb3JDb3VudCxnPXRoaXMub3B0aW9ucyxsPWQuZGF0YUNsYXNzZXMubGVuZ3RoO3RoaXMuZGF0YUNsYXNzZXM9Yz1bXTt0aGlzLmxlZ2VuZEl0ZW1zPVtdO2QuZGF0YUNsYXNzZXMuZm9yRWFjaChmdW5jdGlvbihkLGUpe2Q9QyhkKTtjLnB1c2goZCk7aWYoYi5zdHlsZWRNb2RlfHwhZC5jb2xvcikiY2F0ZWdvcnkiPT09Zy5kYXRhQ2xhc3NDb2xvcj8oYi5zdHlsZWRNb2RlfHwoZT1iLm9wdGlvbnMuY29sb3JzLGE9ZS5sZW5ndGgsCmQuY29sb3I9ZVtmXSksZC5jb2xvckluZGV4PWYsZisrLGY9PT1hJiYoZj0wKSk6ZC5jb2xvcj1wKGcubWluQ29sb3IpLnR3ZWVuVG8ocChnLm1heENvbG9yKSwyPmw/LjU6ZS8obC0xKSl9KX07Yi5wcm90b3R5cGUuaGFzRGF0YT1mdW5jdGlvbigpe3JldHVybiEhKHRoaXMudGlja1Bvc2l0aW9uc3x8W10pLmxlbmd0aH07Yi5wcm90b3R5cGUuc2V0VGlja1Bvc2l0aW9ucz1mdW5jdGlvbigpe2lmKCF0aGlzLmRhdGFDbGFzc2VzKXJldHVybiBjLnByb3RvdHlwZS5zZXRUaWNrUG9zaXRpb25zLmNhbGwodGhpcyl9O2IucHJvdG90eXBlLmluaXRTdG9wcz1mdW5jdGlvbigpe3RoaXMuc3RvcHM9dGhpcy5vcHRpb25zLnN0b3BzfHxbWzAsdGhpcy5vcHRpb25zLm1pbkNvbG9yXSxbMSx0aGlzLm9wdGlvbnMubWF4Q29sb3JdXTt0aGlzLnN0b3BzLmZvckVhY2goZnVuY3Rpb24oZCl7ZC5jb2xvcj1wKGRbMV0pfSl9O2IucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24oZCl7Yy5wcm90b3R5cGUuc2V0T3B0aW9ucy5jYWxsKHRoaXMsCmQpO3RoaXMub3B0aW9ucy5jcm9zc2hhaXI9dGhpcy5vcHRpb25zLm1hcmtlcn07Yi5wcm90b3R5cGUuc2V0QXhpc1NpemU9ZnVuY3Rpb24oKXt2YXIgZD10aGlzLmxlZ2VuZFN5bWJvbCxlPXRoaXMuY2hhcnQsYz1lLm9wdGlvbnMubGVnZW5kfHx7fSxmLGE7ZD8odGhpcy5sZWZ0PWM9ZC5hdHRyKCJ4IiksdGhpcy50b3A9Zj1kLmF0dHIoInkiKSx0aGlzLndpZHRoPWE9ZC5hdHRyKCJ3aWR0aCIpLHRoaXMuaGVpZ2h0PWQ9ZC5hdHRyKCJoZWlnaHQiKSx0aGlzLnJpZ2h0PWUuY2hhcnRXaWR0aC1jLWEsdGhpcy5ib3R0b209ZS5jaGFydEhlaWdodC1mLWQsdGhpcy5sZW49dGhpcy5ob3Jpej9hOmQsdGhpcy5wb3M9dGhpcy5ob3Jpej9jOmYpOnRoaXMubGVuPSh0aGlzLmhvcml6P2Muc3ltYm9sV2lkdGg6Yy5zeW1ib2xIZWlnaHQpfHxiLmRlZmF1bHRMZWdlbmRMZW5ndGh9O2IucHJvdG90eXBlLm5vcm1hbGl6ZWRWYWx1ZT1mdW5jdGlvbihkKXt0aGlzLmxvZ2FyaXRobWljJiYoZD10aGlzLmxvZ2FyaXRobWljLmxvZzJsaW4oZCkpOwpyZXR1cm4gMS0odGhpcy5tYXgtZCkvKHRoaXMubWF4LXRoaXMubWlufHwxKX07Yi5wcm90b3R5cGUudG9Db2xvcj1mdW5jdGlvbihkLGIpe3ZhciBjPXRoaXMuZGF0YUNsYXNzZXMsZT10aGlzLnN0b3BzLGE7aWYoYylmb3IoYT1jLmxlbmd0aDthLS07KXt2YXIgZz1jW2FdO3ZhciBsPWcuZnJvbTtlPWcudG87aWYoKCJ1bmRlZmluZWQiPT09dHlwZW9mIGx8fGQ+PWwpJiYoInVuZGVmaW5lZCI9PT10eXBlb2YgZXx8ZDw9ZSkpe3ZhciBoPWcuY29sb3I7YiYmKGIuZGF0YUNsYXNzPWEsYi5jb2xvckluZGV4PWcuY29sb3JJbmRleCk7YnJlYWt9fWVsc2V7ZD10aGlzLm5vcm1hbGl6ZWRWYWx1ZShkKTtmb3IoYT1lLmxlbmd0aDthLS0mJiEoZD5lW2FdWzBdKTspO2w9ZVthXXx8ZVthKzFdO2U9ZVthKzFdfHxsO2Q9MS0oZVswXS1kKS8oZVswXS1sWzBdfHwxKTtoPWwuY29sb3IudHdlZW5UbyhlLmNvbG9yLGQpfXJldHVybiBofTtiLnByb3RvdHlwZS5nZXRPZmZzZXQ9ZnVuY3Rpb24oKXt2YXIgZD0KdGhpcy5sZWdlbmRHcm91cCxiPXRoaXMuY2hhcnQuYXhpc09mZnNldFt0aGlzLnNpZGVdO2QmJih0aGlzLmF4aXNQYXJlbnQ9ZCxjLnByb3RvdHlwZS5nZXRPZmZzZXQuY2FsbCh0aGlzKSx0aGlzLmFkZGVkfHwodGhpcy5hZGRlZD0hMCx0aGlzLmxhYmVsTGVmdD0wLHRoaXMubGFiZWxSaWdodD10aGlzLndpZHRoKSx0aGlzLmNoYXJ0LmF4aXNPZmZzZXRbdGhpcy5zaWRlXT1iKX07Yi5wcm90b3R5cGUuc2V0TGVnZW5kQ29sb3I9ZnVuY3Rpb24oKXt2YXIgZD10aGlzLnJldmVyc2VkLGI9ZD8xOjA7ZD1kPzA6MTtiPXRoaXMuaG9yaXo/W2IsMCxkLDBdOlswLGQsMCxiXTt0aGlzLmxlZ2VuZENvbG9yPXtsaW5lYXJHcmFkaWVudDp7eDE6YlswXSx5MTpiWzFdLHgyOmJbMl0seTI6YlszXX0sc3RvcHM6dGhpcy5zdG9wc319O2IucHJvdG90eXBlLmRyYXdMZWdlbmRTeW1ib2w9ZnVuY3Rpb24oZCxjKXt2YXIgZT1kLnBhZGRpbmcsZj1kLm9wdGlvbnMsYT10aGlzLmhvcml6LGc9QShmLnN5bWJvbFdpZHRoLAphP2IuZGVmYXVsdExlZ2VuZExlbmd0aDoxMiksbD1BKGYuc3ltYm9sSGVpZ2h0LGE/MTI6Yi5kZWZhdWx0TGVnZW5kTGVuZ3RoKSxoPUEoZi5sYWJlbFBhZGRpbmcsYT8xNjozMCk7Zj1BKGYuaXRlbURpc3RhbmNlLDEwKTt0aGlzLnNldExlZ2VuZENvbG9yKCk7Yy5sZWdlbmRTeW1ib2w9dGhpcy5jaGFydC5yZW5kZXJlci5yZWN0KDAsZC5iYXNlbGluZS0xMSxnLGwpLmF0dHIoe3pJbmRleDoxfSkuYWRkKGMubGVnZW5kR3JvdXApO3RoaXMubGVnZW5kSXRlbVdpZHRoPWcrZSsoYT9mOmgpO3RoaXMubGVnZW5kSXRlbUhlaWdodD1sK2UrKGE/aDowKX07Yi5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oZCl7dGhpcy5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihiKXtiLnNldFN0YXRlKGQpfSl9O2IucHJvdG90eXBlLnNldFZpc2libGU9ZnVuY3Rpb24oKXt9O2IucHJvdG90eXBlLmdldFNlcmllc0V4dHJlbWVzPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5zZXJpZXMsYz1iLmxlbmd0aCwKYTt0aGlzLmRhdGFNaW49SW5maW5pdHk7Zm9yKHRoaXMuZGF0YU1heD0tSW5maW5pdHk7Yy0tOyl7dmFyIGY9YltjXTt2YXIgZz1mLmNvbG9yS2V5PUEoZi5vcHRpb25zLmNvbG9yS2V5LGYuY29sb3JLZXksZi5wb2ludFZhbEtleSxmLnpvbmVBeGlzLCJ5Iik7dmFyIGg9Zi5wb2ludEFycmF5TWFwO3ZhciB6PWZbZysiTWluIl0mJmZbZysiTWF4Il07aWYoZltnKyJEYXRhIl0pdmFyIG49ZltnKyJEYXRhIl07ZWxzZSBpZihoKXtuPVtdO2g9aC5pbmRleE9mKGcpO3ZhciBrPWYueURhdGE7aWYoMDw9aCYmaylmb3IoYT0wO2E8ay5sZW5ndGg7YSsrKW4ucHVzaChBKGtbYV1baF0sa1thXSkpfWVsc2Ugbj1mLnlEYXRhO3o/KGYubWluQ29sb3JWYWx1ZT1mW2crIk1pbiJdLGYubWF4Q29sb3JWYWx1ZT1mW2crIk1heCJdKToobj1sLnByb3RvdHlwZS5nZXRFeHRyZW1lcy5jYWxsKGYsbiksZi5taW5Db2xvclZhbHVlPW4uZGF0YU1pbixmLm1heENvbG9yVmFsdWU9bi5kYXRhTWF4KTsidW5kZWZpbmVkIiE9PQp0eXBlb2YgZi5taW5Db2xvclZhbHVlJiYodGhpcy5kYXRhTWluPU1hdGgubWluKHRoaXMuZGF0YU1pbixmLm1pbkNvbG9yVmFsdWUpLHRoaXMuZGF0YU1heD1NYXRoLm1heCh0aGlzLmRhdGFNYXgsZi5tYXhDb2xvclZhbHVlKSk7enx8bC5wcm90b3R5cGUuYXBwbHlFeHRyZW1lcy5jYWxsKGYpfX07Yi5wcm90b3R5cGUuZHJhd0Nyb3NzaGFpcj1mdW5jdGlvbihiLGUpe3ZhciBkPWUmJmUucGxvdFgsYT1lJiZlLnBsb3RZLGc9dGhpcy5wb3MsbD10aGlzLmxlbjtpZihlKXt2YXIgaD10aGlzLnRvUGl4ZWxzKGUuZ2V0TmVzdGVkUHJvcGVydHkoZS5zZXJpZXMuY29sb3JLZXkpKTtoPGc/aD1nLTI6aD5nK2wmJihoPWcrbCsyKTtlLnBsb3RYPWg7ZS5wbG90WT10aGlzLmxlbi1oO2MucHJvdG90eXBlLmRyYXdDcm9zc2hhaXIuY2FsbCh0aGlzLGIsZSk7ZS5wbG90WD1kO2UucGxvdFk9YTt0aGlzLmNyb3NzJiYhdGhpcy5jcm9zcy5hZGRlZFRvQ29sb3JBeGlzJiZ0aGlzLmxlZ2VuZEdyb3VwJiYKKHRoaXMuY3Jvc3MuYWRkQ2xhc3MoImhpZ2hjaGFydHMtY29sb3JheGlzLW1hcmtlciIpLmFkZCh0aGlzLmxlZ2VuZEdyb3VwKSx0aGlzLmNyb3NzLmFkZGVkVG9Db2xvckF4aXM9ITAsIXRoaXMuY2hhcnQuc3R5bGVkTW9kZSYmdGhpcy5jcm9zc2hhaXImJnRoaXMuY3Jvc3MuYXR0cih7ZmlsbDp0aGlzLmNyb3NzaGFpci5jb2xvcn0pKX19O2IucHJvdG90eXBlLmdldFBsb3RMaW5lUGF0aD1mdW5jdGlvbihiKXt2YXIgZD10aGlzLmxlZnQsYT1iLnRyYW5zbGF0ZWRWYWx1ZSxmPXRoaXMudG9wO3JldHVybiBnKGEpP3RoaXMuaG9yaXo/W1siTSIsYS00LGYtNl0sWyJMIixhKzQsZi02XSxbIkwiLGEsZl0sWyJaIl1dOltbIk0iLGQsYV0sWyJMIixkLTYsYSs2XSxbIkwiLGQtNixhLTZdLFsiWiJdXTpjLnByb3RvdHlwZS5nZXRQbG90TGluZVBhdGguY2FsbCh0aGlzLGIpfTtiLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZCxhKXt2YXIgZT10aGlzLmNoYXJ0LGc9ZS5sZWdlbmQsbD1iLmJ1aWxkT3B0aW9ucyhlLAp7fSxkKTt0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuaXNEaXJ0eURhdGE9ITB9KTsoZC5kYXRhQ2xhc3NlcyYmZy5hbGxJdGVtc3x8dGhpcy5kYXRhQ2xhc3NlcykmJnRoaXMuZGVzdHJveUl0ZW1zKCk7ZS5vcHRpb25zW3RoaXMuY29sbF09Qyh0aGlzLnVzZXJPcHRpb25zLGwpO2MucHJvdG90eXBlLnVwZGF0ZS5jYWxsKHRoaXMsbCxhKTt0aGlzLmxlZ2VuZEl0ZW0mJih0aGlzLnNldExlZ2VuZENvbG9yKCksZy5jb2xvcml6ZUl0ZW0odGhpcywhMCkpfTtiLnByb3RvdHlwZS5kZXN0cm95SXRlbXM9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLmNoYXJ0O3RoaXMubGVnZW5kSXRlbT9iLmxlZ2VuZC5kZXN0cm95SXRlbSh0aGlzKTp0aGlzLmxlZ2VuZEl0ZW1zJiZ0aGlzLmxlZ2VuZEl0ZW1zLmZvckVhY2goZnVuY3Rpb24oZCl7Yi5sZWdlbmQuZGVzdHJveUl0ZW0oZCl9KTtiLmlzRGlydHlMZWdlbmQ9ITB9O2IucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbihiKXt0aGlzLmRlc3Ryb3lJdGVtcygpOwpjLnByb3RvdHlwZS5yZW1vdmUuY2FsbCh0aGlzLGIpfTtiLnByb3RvdHlwZS5nZXREYXRhQ2xhc3NMZWdlbmRTeW1ib2xzPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxjPWIuY2hhcnQsYT1iLmxlZ2VuZEl0ZW1zLGc9Yy5vcHRpb25zLmxlZ2VuZCxsPWcudmFsdWVEZWNpbWFscyxoPWcudmFsdWVTdWZmaXh8fCIiLG47YS5sZW5ndGh8fGIuZGF0YUNsYXNzZXMuZm9yRWFjaChmdW5jdGlvbihkLGcpe3ZhciBlPSEwLGY9ZC5mcm9tLHo9ZC50byxrPWMubnVtYmVyRm9ybWF0dGVyO249IiI7InVuZGVmaW5lZCI9PT10eXBlb2YgZj9uPSI8ICI6InVuZGVmaW5lZCI9PT10eXBlb2YgeiYmKG49Ij4gIik7InVuZGVmaW5lZCIhPT10eXBlb2YgZiYmKG4rPWsoZixsKStoKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBmJiYidW5kZWZpbmVkIiE9PXR5cGVvZiB6JiYobis9IiAtICIpOyJ1bmRlZmluZWQiIT09dHlwZW9mIHomJihuKz1rKHosbCkraCk7YS5wdXNoKHcoe2NoYXJ0OmMsbmFtZTpuLG9wdGlvbnM6e30sCmRyYXdMZWdlbmRTeW1ib2w6cS5kcmF3UmVjdGFuZ2xlLHZpc2libGU6ITAsc2V0U3RhdGU6Qixpc0RhdGFDbGFzczohMCxzZXRWaXNpYmxlOmZ1bmN0aW9uKCl7ZT1iLnZpc2libGU9IWU7Yi5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihiKXtiLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuZGF0YUNsYXNzPT09ZyYmYi5zZXRWaXNpYmxlKGUpfSl9KTtjLmxlZ2VuZC5jb2xvcml6ZUl0ZW0odGhpcyxlKX19LGQpKX0pO3JldHVybiBhfTtiLmRlZmF1bHRMZWdlbmRMZW5ndGg9MjAwO2IuZGVmYXVsdE9wdGlvbnM9e2xpbmVXaWR0aDowLG1pblBhZGRpbmc6MCxtYXhQYWRkaW5nOjAsZ3JpZExpbmVXaWR0aDoxLHRpY2tQaXhlbEludGVydmFsOjcyLHN0YXJ0T25UaWNrOiEwLGVuZE9uVGljazohMCxvZmZzZXQ6MCxtYXJrZXI6e2FuaW1hdGlvbjp7ZHVyYXRpb246NTB9LHdpZHRoOi4wMSxjb2xvcjoiIzk5OTk5OSJ9LGxhYmVsczp7b3ZlcmZsb3c6Imp1c3RpZnkiLHJvdGF0aW9uOjB9LAptaW5Db2xvcjoiI2U2ZWJmNSIsbWF4Q29sb3I6IiMwMDMzOTkiLHRpY2tMZW5ndGg6NSxzaG93SW5MZWdlbmQ6ITB9O2Iua2VlcFByb3BzPVsibGVnZW5kR3JvdXAiLCJsZWdlbmRJdGVtSGVpZ2h0IiwibGVnZW5kSXRlbVdpZHRoIiwibGVnZW5kSXRlbSIsImxlZ2VuZFN5bWJvbCJdO3JldHVybiBifShhKTtBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhLmtlZXBQcm9wcyxoLmtlZXBQcm9wcyk7ay5Db2xvckF4aXM9aDtbImZpbGwiLCJzdHJva2UiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2MucHJvdG90eXBlW2ErIlNldHRlciJdPWZ1bmN0aW9uKCl7dGhpcy5lbGVtLmF0dHIoYSxwKHRoaXMuc3RhcnQpLnR3ZWVuVG8ocCh0aGlzLmVuZCksdGhpcy5wb3MpLG51bGwsITApfX0pO20odCwiYWZ0ZXJHZXRBeGVzIixmdW5jdGlvbigpe3ZhciBjPXRoaXMsYj1jLm9wdGlvbnM7dGhpcy5jb2xvckF4aXM9W107Yi5jb2xvckF4aXMmJihiLmNvbG9yQXhpcz1uKGIuY29sb3JBeGlzKSxiLmNvbG9yQXhpcy5mb3JFYWNoKGZ1bmN0aW9uKGIsCmEpe2IuaW5kZXg9YTtuZXcgaChjLGIpfSkpfSk7bShsLCJiaW5kQXhlcyIsZnVuY3Rpb24oKXt2YXIgYz10aGlzLmF4aXNUeXBlcztjPy0xPT09Yy5pbmRleE9mKCJjb2xvckF4aXMiKSYmYy5wdXNoKCJjb2xvckF4aXMiKTp0aGlzLmF4aXNUeXBlcz1bImNvbG9yQXhpcyJdfSk7bSh5LCJhZnRlckdldEFsbEl0ZW1zIixmdW5jdGlvbihjKXt2YXIgYj1bXSxkLGE7KHRoaXMuY2hhcnQuY29sb3JBeGlzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihhKXsoZD1hLm9wdGlvbnMpJiZkLnNob3dJbkxlZ2VuZCYmKGQuZGF0YUNsYXNzZXMmJmQudmlzaWJsZT9iPWIuY29uY2F0KGEuZ2V0RGF0YUNsYXNzTGVnZW5kU3ltYm9scygpKTpkLnZpc2libGUmJmIucHVzaChhKSxhLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2lmKCFiLm9wdGlvbnMuc2hvd0luTGVnZW5kfHxkLmRhdGFDbGFzc2VzKSJwb2ludCI9PT1iLm9wdGlvbnMubGVnZW5kVHlwZT9iLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGIpe3UoYy5hbGxJdGVtcywKYil9KTp1KGMuYWxsSXRlbXMsYil9KSl9KTtmb3IoYT1iLmxlbmd0aDthLS07KWMuYWxsSXRlbXMudW5zaGlmdChiW2FdKX0pO20oeSwiYWZ0ZXJDb2xvcml6ZUl0ZW0iLGZ1bmN0aW9uKGMpe2MudmlzaWJsZSYmYy5pdGVtLmxlZ2VuZENvbG9yJiZjLml0ZW0ubGVnZW5kU3ltYm9sLmF0dHIoe2ZpbGw6Yy5pdGVtLmxlZ2VuZENvbG9yfSl9KTttKHksImFmdGVyVXBkYXRlIixmdW5jdGlvbigpe3ZhciBjPXRoaXMuY2hhcnQuY29sb3JBeGlzO2MmJmMuZm9yRWFjaChmdW5jdGlvbihiLGMsYSl7Yi51cGRhdGUoe30sYSl9KX0pO20obCwiYWZ0ZXJUcmFuc2xhdGUiLGZ1bmN0aW9uKCl7KHRoaXMuY2hhcnQuY29sb3JBeGlzJiZ0aGlzLmNoYXJ0LmNvbG9yQXhpcy5sZW5ndGh8fHRoaXMuY29sb3JBdHRyaWJzKSYmdGhpcy50cmFuc2xhdGVDb2xvcnMoKX0pO3JldHVybiBofSk7cChhLCJwYXJ0cy1tYXAvQ29sb3JNYXBTZXJpZXNNaXhpbi5qcyIsW2FbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJwYXJ0cy9Qb2ludC5qcyJdLAphWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxwLG0pe3ZhciBrPW0uZGVmaW5lZDttPWEubm9vcDt2YXIgeD1hLnNlcmllc1R5cGVzO2EuY29sb3JNYXBQb2ludE1peGluPXtkYXRhTGFiZWxPbk51bGw6ITAsaXNWYWxpZDpmdW5jdGlvbigpe3JldHVybiBudWxsIT09dGhpcy52YWx1ZSYmSW5maW5pdHkhPT10aGlzLnZhbHVlJiYtSW5maW5pdHkhPT10aGlzLnZhbHVlfSxzZXRTdGF0ZTpmdW5jdGlvbihhKXtwLnByb3RvdHlwZS5zZXRTdGF0ZS5jYWxsKHRoaXMsYSk7dGhpcy5ncmFwaGljJiZ0aGlzLmdyYXBoaWMuYXR0cih7ekluZGV4OiJob3ZlciI9PT1hPzE6MH0pfX07YS5jb2xvck1hcFNlcmllc01peGluPXtwb2ludEFycmF5TWFwOlsidmFsdWUiXSxheGlzVHlwZXM6WyJ4QXhpcyIsInlBeGlzIiwiY29sb3JBeGlzIl0sdHJhY2tlckdyb3VwczpbImdyb3VwIiwibWFya2VyR3JvdXAiLCJkYXRhTGFiZWxzR3JvdXAiXSxnZXRTeW1ib2w6bSxwYXJhbGxlbEFycmF5czpbIngiLAoieSIsInZhbHVlIl0sY29sb3JLZXk6InZhbHVlIixwb2ludEF0dHJpYnM6eC5jb2x1bW4ucHJvdG90eXBlLnBvaW50QXR0cmlicyxjb2xvckF0dHJpYnM6ZnVuY3Rpb24oYSl7dmFyIG09e307ayhhLmNvbG9yKSYmKG1bdGhpcy5jb2xvclByb3B8fCJmaWxsIl09YS5jb2xvcik7cmV0dXJuIG19fX0pO3AoYSwicGFydHMtbWFwL0hlYXRtYXBTZXJpZXMuanMiLFthWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYVsibWl4aW5zL2xlZ2VuZC1zeW1ib2wuanMiXSxhWyJwYXJ0cy9TVkdSZW5kZXJlci5qcyJdLGFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihhLHAsbSxrKXt2YXIgeT1rLmNsYW1wLHE9ay5leHRlbmQsdj1rLmZpcmVFdmVudCxyPWsuaXNOdW1iZXIsdD1rLm1lcmdlLHg9ay5waWNrO2s9ay5zZXJpZXNUeXBlOyIiO3ZhciBCPWEuY29sb3JNYXBQb2ludE1peGluLHU9YS5TZXJpZXMsdz1tLnByb3RvdHlwZS5zeW1ib2xzO2soImhlYXRtYXAiLCJzY2F0dGVyIix7YW5pbWF0aW9uOiExLApib3JkZXJXaWR0aDowLG51bGxDb2xvcjoiI2Y3ZjdmNyIsZGF0YUxhYmVsczp7Zm9ybWF0dGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9pbnQudmFsdWV9LGluc2lkZTohMCx2ZXJ0aWNhbEFsaWduOiJtaWRkbGUiLGNyb3A6ITEsb3ZlcmZsb3c6ITEscGFkZGluZzowfSxtYXJrZXI6e3N5bWJvbDoicmVjdCIscmFkaXVzOjAsbGluZUNvbG9yOnZvaWQgMCxzdGF0ZXM6e2hvdmVyOntsaW5lV2lkdGhQbHVzOjB9LHNlbGVjdDp7fX19LGNsaXA6ITAscG9pbnRSYW5nZTpudWxsLHRvb2x0aXA6e3BvaW50Rm9ybWF0OiJ7cG9pbnQueH0sIHtwb2ludC55fToge3BvaW50LnZhbHVlfTxici8+In0sc3RhdGVzOntob3Zlcjp7aGFsbzohMSxicmlnaHRuZXNzOi4yfX19LHQoYS5jb2xvck1hcFNlcmllc01peGluLHtwb2ludEFycmF5TWFwOlsieSIsInZhbHVlIl0saGFzUG9pbnRTcGVjaWZpY09wdGlvbnM6ITAsZ2V0RXh0cmVtZXNGcm9tQWxsOiEwLGRpcmVjdFRvdWNoOiEwLGluaXQ6ZnVuY3Rpb24oKXt1LnByb3RvdHlwZS5pbml0LmFwcGx5KHRoaXMsCmFyZ3VtZW50cyk7dmFyIGE9dGhpcy5vcHRpb25zO2EucG9pbnRSYW5nZT14KGEucG9pbnRSYW5nZSxhLmNvbHNpemV8fDEpO3RoaXMueUF4aXMuYXhpc1BvaW50UmFuZ2U9YS5yb3dzaXplfHwxO3Eodyx7ZWxsaXBzZTp3LmNpcmNsZSxyZWN0Oncuc3F1YXJlfSl9LGdldFN5bWJvbDp1LnByb3RvdHlwZS5nZXRTeW1ib2wsc2V0Q2xpcDpmdW5jdGlvbihhKXt2YXIgYz10aGlzLmNoYXJ0O3UucHJvdG90eXBlLnNldENsaXAuYXBwbHkodGhpcyxhcmd1bWVudHMpOyghMSE9PXRoaXMub3B0aW9ucy5jbGlwfHxhKSYmdGhpcy5tYXJrZXJHcm91cC5jbGlwKChhfHx0aGlzLmNsaXBCb3gpJiZ0aGlzLnNoYXJlZENsaXBLZXk/Y1t0aGlzLnNoYXJlZENsaXBLZXldOmMuY2xpcFJlY3QpfSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnMsZz1hLm1hcmtlciYmYS5tYXJrZXIuc3ltYm9sfHwiIixrPXdbZ10/ZzoicmVjdCI7YT10aGlzLm9wdGlvbnM7dmFyIG09LTEhPT1bImNpcmNsZSIsCiJzcXVhcmUiXS5pbmRleE9mKGspO3RoaXMuZ2VuZXJhdGVQb2ludHMoKTt0aGlzLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBjPWEuZ2V0Q2VsbEF0dHJpYnV0ZXMoKSxoPXt4Ok1hdGgubWluKGMueDEsYy54MikseTpNYXRoLm1pbihjLnkxLGMueTIpLHdpZHRoOk1hdGgubWF4KE1hdGguYWJzKGMueDItYy54MSksMCksaGVpZ2h0Ok1hdGgubWF4KE1hdGguYWJzKGMueTItYy55MSksMCl9O3ZhciBuPWEuaGFzSW1hZ2U9MD09PShhLm1hcmtlciYmYS5tYXJrZXIuc3ltYm9sfHxnfHwiIikuaW5kZXhPZigidXJsIik7aWYobSl7dmFyIGI9TWF0aC5hYnMoaC53aWR0aC1oLmhlaWdodCk7aC54PU1hdGgubWluKGMueDEsYy54MikrKGgud2lkdGg8aC5oZWlnaHQ/MDpiLzIpO2gueT1NYXRoLm1pbihjLnkxLGMueTIpKyhoLndpZHRoPGguaGVpZ2h0P2IvMjowKTtoLndpZHRoPWguaGVpZ2h0PU1hdGgubWluKGgud2lkdGgsaC5oZWlnaHQpfWI9e3Bsb3RYOihjLngxK2MueDIpLwoyLHBsb3RZOihjLnkxK2MueTIpLzIsY2xpZW50WDooYy54MStjLngyKS8yLHNoYXBlVHlwZToicGF0aCIsc2hhcGVBcmdzOnQoITAsaCx7ZDp3W2tdKGgueCxoLnksaC53aWR0aCxoLmhlaWdodCl9KX07biYmKGEubWFya2VyPXt3aWR0aDpoLndpZHRoLGhlaWdodDpoLmhlaWdodH0pO3EoYSxiKX0pO3YodGhpcywiYWZ0ZXJUcmFuc2xhdGUiKX0scG9pbnRBdHRyaWJzOmZ1bmN0aW9uKGMsZyl7dmFyIGs9dS5wcm90b3R5cGUucG9pbnRBdHRyaWJzLmNhbGwodGhpcyxjLGcpLG09dGhpcy5vcHRpb25zfHx7fSxuPXRoaXMuY2hhcnQub3B0aW9ucy5wbG90T3B0aW9uc3x8e30sbD1uLnNlcmllc3x8e30saD1uLmhlYXRtYXB8fHt9O249bS5ib3JkZXJDb2xvcnx8aC5ib3JkZXJDb2xvcnx8bC5ib3JkZXJDb2xvcjtsPW0uYm9yZGVyV2lkdGh8fGguYm9yZGVyV2lkdGh8fGwuYm9yZGVyV2lkdGh8fGtbInN0cm9rZS13aWR0aCJdO2suc3Ryb2tlPWMmJmMubWFya2VyJiZjLm1hcmtlci5saW5lQ29sb3J8fAptLm1hcmtlciYmbS5tYXJrZXIubGluZUNvbG9yfHxufHx0aGlzLmNvbG9yO2tbInN0cm9rZS13aWR0aCJdPWw7ZyYmKGM9dChtLnN0YXRlc1tnXSxtLm1hcmtlciYmbS5tYXJrZXIuc3RhdGVzW2ddLGMub3B0aW9ucy5zdGF0ZXMmJmMub3B0aW9ucy5zdGF0ZXNbZ118fHt9KSxnPWMuYnJpZ2h0bmVzcyxrLmZpbGw9Yy5jb2xvcnx8YS5jb2xvcihrLmZpbGwpLmJyaWdodGVuKGd8fDApLmdldCgpLGsuc3Ryb2tlPWMubGluZUNvbG9yKTtyZXR1cm4ga30sbWFya2VyQXR0cmliczpmdW5jdGlvbihhLGcpe3ZhciBjPWEubWFya2VyfHx7fSxrPXRoaXMub3B0aW9ucy5tYXJrZXJ8fHt9LG49YS5zaGFwZUFyZ3N8fHt9LGw9e307aWYoYS5oYXNJbWFnZSlyZXR1cm57eDphLnBsb3RYLHk6YS5wbG90WX07aWYoZyl7dmFyIGg9ay5zdGF0ZXNbZ118fHt9O3ZhciBtPWMuc3RhdGVzJiZjLnN0YXRlc1tnXXx8e307W1sid2lkdGgiLCJ4Il0sWyJoZWlnaHQiLCJ5Il1dLmZvckVhY2goZnVuY3Rpb24oYSl7bFthWzBdXT0KKG1bYVswXV18fGhbYVswXV18fG5bYVswXV0pKyhtW2FbMF0rIlBsdXMiXXx8aFthWzBdKyJQbHVzIl18fDApO2xbYVsxXV09blthWzFdXSsoblthWzBdXS1sW2FbMF1dKS8yfSl9cmV0dXJuIGc/bDpufSxkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcztpZigodGhpcy5vcHRpb25zLm1hcmtlcnx8e30pLmVuYWJsZWR8fHRoaXMuX2hhc1BvaW50TWFya2Vycyl1LnByb3RvdHlwZS5kcmF3UG9pbnRzLmNhbGwodGhpcyksdGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihjKXtjLmdyYXBoaWMmJmMuZ3JhcGhpY1thLmNoYXJ0LnN0eWxlZE1vZGU/ImNzcyI6ImFuaW1hdGUiXShhLmNvbG9yQXR0cmlicyhjKSl9KX0saGFzRGF0YTpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5wcm9jZXNzZWRYRGF0YS5sZW5ndGh9LGdldFZhbGlkUG9pbnRzOmZ1bmN0aW9uKGEsZyl7cmV0dXJuIHUucHJvdG90eXBlLmdldFZhbGlkUG9pbnRzLmNhbGwodGhpcyxhLGcsITApfSxnZXRCb3g6YS5ub29wLApkcmF3TGVnZW5kU3ltYm9sOnAuZHJhd1JlY3RhbmdsZSxhbGlnbkRhdGFMYWJlbDphLnNlcmllc1R5cGVzLmNvbHVtbi5wcm90b3R5cGUuYWxpZ25EYXRhTGFiZWwsZ2V0RXh0cmVtZXM6ZnVuY3Rpb24oKXt2YXIgYT11LnByb3RvdHlwZS5nZXRFeHRyZW1lcy5jYWxsKHRoaXMsdGhpcy52YWx1ZURhdGEpLGc9YS5kYXRhTWluO2E9YS5kYXRhTWF4O3IoZykmJih0aGlzLnZhbHVlTWluPWcpO3IoYSkmJih0aGlzLnZhbHVlTWF4PWEpO3JldHVybiB1LnByb3RvdHlwZS5nZXRFeHRyZW1lcy5jYWxsKHRoaXMpfX0pLHQoQix7YXBwbHlPcHRpb25zOmZ1bmN0aW9uKGMsZyl7Yz1hLlBvaW50LnByb3RvdHlwZS5hcHBseU9wdGlvbnMuY2FsbCh0aGlzLGMsZyk7Yy5mb3JtYXRQcmVmaXg9Yy5pc051bGx8fG51bGw9PT1jLnZhbHVlPyJudWxsIjoicG9pbnQiO3JldHVybiBjfSxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIEluZmluaXR5IT09dGhpcy52YWx1ZSYmLUluZmluaXR5IT09dGhpcy52YWx1ZX0sCmhhbG9QYXRoOmZ1bmN0aW9uKGEpe2lmKCFhKXJldHVybltdO3ZhciBjPXRoaXMuc2hhcGVBcmdzO3JldHVyblsiTSIsYy54LWEsYy55LWEsIkwiLGMueC1hLGMueStjLmhlaWdodCthLGMueCtjLndpZHRoK2EsYy55K2MuaGVpZ2h0K2EsYy54K2Mud2lkdGgrYSxjLnktYSwiWiJdfSxnZXRDZWxsQXR0cmlidXRlczpmdW5jdGlvbigpe3ZhciBhPXRoaXMuc2VyaWVzLGc9YS5vcHRpb25zLGs9KGcuY29sc2l6ZXx8MSkvMixtPShnLnJvd3NpemV8fDEpLzIsbj1hLnhBeGlzLGw9YS55QXhpcyxoPXRoaXMub3B0aW9ucy5tYXJrZXJ8fGEub3B0aW9ucy5tYXJrZXI7YT1hLnBvaW50UGxhY2VtZW50VG9YVmFsdWUoKTt2YXIgcD14KHRoaXMucG9pbnRQYWRkaW5nLGcucG9pbnRQYWRkaW5nLDApLGI9e3gxOnkoTWF0aC5yb3VuZChuLmxlbi0obi50cmFuc2xhdGUodGhpcy54LWssITEsITAsITEsITAsLWEpfHwwKSksLW4ubGVuLDIqbi5sZW4pLHgyOnkoTWF0aC5yb3VuZChuLmxlbi0obi50cmFuc2xhdGUodGhpcy54KwprLCExLCEwLCExLCEwLC1hKXx8MCkpLC1uLmxlbiwyKm4ubGVuKSx5MTp5KE1hdGgucm91bmQobC50cmFuc2xhdGUodGhpcy55LW0sITEsITAsITEsITApfHwwKSwtbC5sZW4sMipsLmxlbikseTI6eShNYXRoLnJvdW5kKGwudHJhbnNsYXRlKHRoaXMueSttLCExLCEwLCExLCEwKXx8MCksLWwubGVuLDIqbC5sZW4pfTtbWyJ3aWR0aCIsIngiXSxbImhlaWdodCIsInkiXV0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYz1hWzBdO2E9YVsxXTt2YXIgZD1hKyIxIixmPWErIjIiLGc9TWF0aC5hYnMoYltkXS1iW2ZdKSxrPWgmJmgubGluZVdpZHRofHwwLGw9TWF0aC5hYnMoYltkXStiW2ZdKS8yO2hbY10mJmhbY108ZyYmKGJbZF09bC1oW2NdLzItay8yLGJbZl09bCtoW2NdLzIray8yKTtwJiYoInkiPT09YSYmKGQ9ZixmPWErIjEiKSxiW2RdKz1wLGJbZl0tPXApfSk7cmV0dXJuIGJ9fSkpOyIifSk7cChhLCJtYXN0ZXJzL21vZHVsZXMvaGVhdG1hcC5zcmMuanMiLFtdLGZ1bmN0aW9uKCl7fSl9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGVhdG1hcC5qcy5tYXA="></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIChjKSAyMDE0LTIwMTkgSGlnaHNvZnQgQVMKIEF1dGhvcnM6IEpvbiBBcmlsZCBOeWdhcmQgLyBPeXN0ZWluIE1vc2VuZwoKIExpY2Vuc2U6IHd3dy5oaWdoY2hhcnRzLmNvbS9saWNlbnNlCiovCihmdW5jdGlvbihjKXsib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzPyhjWyJkZWZhdWx0Il09Yyxtb2R1bGUuZXhwb3J0cz1jKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoImhpZ2hjaGFydHMvbW9kdWxlcy90cmVlbWFwIixbImhpZ2hjaGFydHMiXSxmdW5jdGlvbih3KXtjKHcpO2MuSGlnaGNoYXJ0cz13O3JldHVybiBjfSk6YygidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGMpe2Z1bmN0aW9uIHcoYyxkLHgsayl7Yy5oYXNPd25Qcm9wZXJ0eShkKXx8KGNbZF09ay5hcHBseShudWxsLHgpKX1jPWM/Yy5fbW9kdWxlczp7fTt3KGMsIm1peGlucy90cmVlLXNlcmllcy5qcyIsW2NbInBhcnRzL0NvbG9yLmpzIl0sY1sicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGMsZCl7dmFyIHg9ZC5leHRlbmQsaz1kLmlzQXJyYXksbj1kLmlzTnVtYmVyLHA9ZC5pc09iamVjdCwKZz1kLm1lcmdlLHY9ZC5waWNrO3JldHVybntnZXRDb2xvcjpmdW5jdGlvbihmLGgpe3ZhciB0PWguaW5kZXgsZD1oLm1hcE9wdGlvbnNUb0xldmVsLGc9aC5wYXJlbnRDb2xvcixwPWgucGFyZW50Q29sb3JJbmRleCxCPWguc2VyaWVzLEE9aC5jb2xvcnMseD1oLnNpYmxpbmdzLG09Qi5wb2ludHMsaz1CLmNoYXJ0Lm9wdGlvbnMuY2hhcnQseTtpZihmKXttPW1bZi5pXTtmPWRbZi5sZXZlbF18fHt9O2lmKGQ9bSYmZi5jb2xvckJ5UG9pbnQpe3ZhciB1PW0uaW5kZXglKEE/QS5sZW5ndGg6ay5jb2xvckNvdW50KTt2YXIgbj1BJiZBW3VdfWlmKCFCLmNoYXJ0LnN0eWxlZE1vZGUpe0E9bSYmbS5vcHRpb25zLmNvbG9yO2s9ZiYmZi5jb2xvcjtpZih5PWcpeT0oeT1mJiZmLmNvbG9yVmFyaWF0aW9uKSYmImJyaWdodG5lc3MiPT09eS5rZXk/Yy5wYXJzZShnKS5icmlnaHRlbih0L3gqeS50bykuZ2V0KCk6Zzt5PXYoQSxrLG4seSxCLmNvbG9yKX12YXIgdz12KG0mJm0ub3B0aW9ucy5jb2xvckluZGV4LApmJiZmLmNvbG9ySW5kZXgsdSxwLGguY29sb3JJbmRleCl9cmV0dXJue2NvbG9yOnksY29sb3JJbmRleDp3fX0sZ2V0TGV2ZWxPcHRpb25zOmZ1bmN0aW9uKGYpe3ZhciBoPW51bGw7aWYocChmKSl7aD17fTt2YXIgZD1uKGYuZnJvbSk/Zi5mcm9tOjE7dmFyIGM9Zi5sZXZlbHM7dmFyIHo9e307dmFyIHY9cChmLmRlZmF1bHRzKT9mLmRlZmF1bHRzOnt9O2soYykmJih6PWMucmVkdWNlKGZ1bmN0aW9uKGgsYyl7aWYocChjKSYmbihjLmxldmVsKSl7dmFyIGY9Zyh7fSxjKTt2YXIgdD0iYm9vbGVhbiI9PT10eXBlb2YgZi5sZXZlbElzQ29uc3RhbnQ/Zi5sZXZlbElzQ29uc3RhbnQ6di5sZXZlbElzQ29uc3RhbnQ7ZGVsZXRlIGYubGV2ZWxJc0NvbnN0YW50O2RlbGV0ZSBmLmxldmVsO2M9Yy5sZXZlbCsodD8wOmQtMSk7cChoW2NdKT94KGhbY10sZik6aFtjXT1mfXJldHVybiBofSx7fSkpO2M9bihmLnRvKT9mLnRvOjE7Zm9yKGY9MDtmPD1jO2YrKyloW2ZdPWcoe30sdixwKHpbZl0pP3pbZl06Cnt9KX1yZXR1cm4gaH0sc2V0VHJlZVZhbHVlczpmdW5jdGlvbiBKKGgsYyl7dmFyIGQ9Yy5iZWZvcmUsZz1jLmlkUm9vdCx0PWMubWFwSWRUb05vZGVbZ10saz1jLnBvaW50c1toLmldLHA9ayYmay5vcHRpb25zfHx7fSxtPTAsbj1bXTt4KGgse2xldmVsRHluYW1pYzpoLmxldmVsLSgoImJvb2xlYW4iPT09dHlwZW9mIGMubGV2ZWxJc0NvbnN0YW50P2MubGV2ZWxJc0NvbnN0YW50OjEpPzA6dC5sZXZlbCksbmFtZTp2KGsmJmsubmFtZSwiIiksdmlzaWJsZTpnPT09aC5pZHx8KCJib29sZWFuIj09PXR5cGVvZiBjLnZpc2libGU/Yy52aXNpYmxlOiExKX0pOyJmdW5jdGlvbiI9PT10eXBlb2YgZCYmKGg9ZChoLGMpKTtoLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oZCxnKXt2YXIgaz14KHt9LGMpO3goayx7aW5kZXg6ZyxzaWJsaW5nczpoLmNoaWxkcmVuLmxlbmd0aCx2aXNpYmxlOmgudmlzaWJsZX0pO2Q9SihkLGspO24ucHVzaChkKTtkLnZpc2libGUmJihtKz1kLnZhbCl9KTtoLnZpc2libGU9CjA8bXx8aC52aXNpYmxlO2Q9dihwLnZhbHVlLG0pO3goaCx7Y2hpbGRyZW46bixjaGlsZHJlblRvdGFsOm0saXNMZWFmOmgudmlzaWJsZSYmIW0sdmFsOmR9KTtyZXR1cm4gaH0sdXBkYXRlUm9vdElkOmZ1bmN0aW9uKGMpe2lmKHAoYykpe3ZhciBkPXAoYy5vcHRpb25zKT9jLm9wdGlvbnM6e307ZD12KGMucm9vdE5vZGUsZC5yb290SWQsIiIpO3AoYy51c2VyT3B0aW9ucykmJihjLnVzZXJPcHRpb25zLnJvb3RJZD1kKTtjLnJvb3ROb2RlPWR9cmV0dXJuIGR9fX0pO3coYywibWl4aW5zL2RyYXctcG9pbnQuanMiLFtdLGZ1bmN0aW9uKCl7dmFyIGM9ZnVuY3Rpb24oYyl7dmFyIGQsaz10aGlzLG49ay5ncmFwaGljLHA9Yy5hbmltYXRhYmxlQXR0cmlicyxnPWMub25Db21wbGV0ZSx2PWMuY3NzLGY9Yy5yZW5kZXJlcixoPW51bGw9PT0oZD1rLnNlcmllcyl8fHZvaWQgMD09PWQ/dm9pZCAwOmQub3B0aW9ucy5hbmltYXRpb247aWYoay5zaG91bGREcmF3KCkpbnx8KGsuZ3JhcGhpYz1uPQpmW2Muc2hhcGVUeXBlXShjLnNoYXBlQXJncykuYWRkKGMuZ3JvdXApKSxuLmNzcyh2KS5hdHRyKGMuYXR0cmlicykuYW5pbWF0ZShwLGMuaXNOZXc/ITE6aCxnKTtlbHNlIGlmKG4pe3ZhciB0PWZ1bmN0aW9uKCl7ay5ncmFwaGljPW49bi5kZXN0cm95KCk7ImZ1bmN0aW9uIj09PXR5cGVvZiBnJiZnKCl9O09iamVjdC5rZXlzKHApLmxlbmd0aD9uLmFuaW1hdGUocCx2b2lkIDAsZnVuY3Rpb24oKXt0KCl9KTp0KCl9fTtyZXR1cm4gZnVuY3Rpb24oZCl7KGQuYXR0cmlicz1kLmF0dHJpYnN8fHt9KVsiY2xhc3MiXT10aGlzLmdldENsYXNzTmFtZSgpO2MuY2FsbCh0aGlzLGQpfX0pO3coYywibW9kdWxlcy90cmVlbWFwLnNyYy5qcyIsW2NbInBhcnRzL0dsb2JhbHMuanMiXSxjWyJtaXhpbnMvdHJlZS1zZXJpZXMuanMiXSxjWyJtaXhpbnMvZHJhdy1wb2ludC5qcyJdLGNbInBhcnRzL0NvbG9yLmpzIl0sY1sibWl4aW5zL2xlZ2VuZC1zeW1ib2wuanMiXSxjWyJwYXJ0cy9Qb2ludC5qcyJdLApjWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYyxkLHgsayxuLHAsZyl7dmFyIHY9ay5wYXJzZSxmPWcuYWRkRXZlbnQsaD1nLmNvcnJlY3RGbG9hdCx0PWcuZGVmaW5lZCx3PWcuZXJyb3Isej1nLmV4dGVuZCxLPWcuZmlyZUV2ZW50LEI9Zy5pc0FycmF5LEE9Zy5pc051bWJlcixMPWcuaXNPYmplY3QsbT1nLmlzU3RyaW5nLEQ9Zy5tZXJnZSx5PWcub2JqZWN0RWFjaCx1PWcucGljaztrPWcuc2VyaWVzVHlwZTt2YXIgTT1nLnN0YWJsZVNvcnQsRz1jLnNlcmllc1R5cGVzO2c9Yy5ub29wO3ZhciBOPWQuZ2V0Q29sb3IsTz1kLmdldExldmVsT3B0aW9ucyxFPWMuU2VyaWVzLFA9ZnVuY3Rpb24oYSxiLGUpe2U9ZXx8dGhpczt5KGEsZnVuY3Rpb24oYyxsKXtiLmNhbGwoZSxjLGwsYSl9KX0sRj1mdW5jdGlvbihhLGIsZSl7ZT1lfHx0aGlzO2E9Yi5jYWxsKGUsYSk7ITEhPT1hJiZGKGEsYixlKX0sUT1kLnVwZGF0ZVJvb3RJZCxIPSExO2soInRyZWVtYXAiLCJzY2F0dGVyIiwKe2FsbG93VHJhdmVyc2luZ1RyZWU6ITEsYW5pbWF0aW9uTGltaXQ6MjUwLHNob3dJbkxlZ2VuZDohMSxtYXJrZXI6ITEsY29sb3JCeVBvaW50OiExLGRhdGFMYWJlbHM6e2RlZmVyOiExLGVuYWJsZWQ6ITAsZm9ybWF0dGVyOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyYmdGhpcy5wb2ludD90aGlzLnBvaW50Ont9O3JldHVybiBtKGEubmFtZSk/YS5uYW1lOiIifSxpbnNpZGU6ITAsdmVydGljYWxBbGlnbjoibWlkZGxlIn0sdG9vbHRpcDp7aGVhZGVyRm9ybWF0OiIiLHBvaW50Rm9ybWF0OiI8Yj57cG9pbnQubmFtZX08L2I+OiB7cG9pbnQudmFsdWV9PGJyLz4ifSxpZ25vcmVIaWRkZW5Qb2ludDohMCxsYXlvdXRBbGdvcml0aG06InNsaWNlQW5kRGljZSIsbGF5b3V0U3RhcnRpbmdEaXJlY3Rpb246InZlcnRpY2FsIixhbHRlcm5hdGVTdGFydGluZ0RpcmVjdGlvbjohMSxsZXZlbElzQ29uc3RhbnQ6ITAsZHJpbGxVcEJ1dHRvbjp7cG9zaXRpb246e2FsaWduOiJyaWdodCIseDotMTAseToxMH19LAp0cmF2ZXJzZVVwQnV0dG9uOntwb3NpdGlvbjp7YWxpZ246InJpZ2h0Iix4Oi0xMCx5OjEwfX0sYm9yZGVyQ29sb3I6IiNlNmU2ZTYiLGJvcmRlcldpZHRoOjEsY29sb3JLZXk6ImNvbG9yVmFsdWUiLG9wYWNpdHk6LjE1LHN0YXRlczp7aG92ZXI6e2JvcmRlckNvbG9yOiIjOTk5OTk5IixicmlnaHRuZXNzOkcuaGVhdG1hcD8wOi4xLGhhbG86ITEsb3BhY2l0eTouNzUsc2hhZG93OiExfX19LHtwb2ludEFycmF5TWFwOlsidmFsdWUiXSxkaXJlY3RUb3VjaDohMCxvcHRpb25hbEF4aXM6ImNvbG9yQXhpcyIsZ2V0U3ltYm9sOmcscGFyYWxsZWxBcnJheXM6WyJ4IiwieSIsInZhbHVlIiwiY29sb3JWYWx1ZSJdLGNvbG9yS2V5OiJjb2xvclZhbHVlIix0cmFja2VyR3JvdXBzOlsiZ3JvdXAiLCJkYXRhTGFiZWxzR3JvdXAiXSxnZXRMaXN0T2ZQYXJlbnRzOmZ1bmN0aW9uKGEsYil7YT1CKGEpP2E6W107dmFyIGU9QihiKT9iOltdO2I9YS5yZWR1Y2UoZnVuY3Rpb24oYSxiLGUpe2I9dShiLnBhcmVudCwKIiIpOyJ1bmRlZmluZWQiPT09dHlwZW9mIGFbYl0mJihhW2JdPVtdKTthW2JdLnB1c2goZSk7cmV0dXJuIGF9LHsiIjpbXX0pO1AoYixmdW5jdGlvbihhLGIsYyl7IiIhPT1iJiYtMT09PWUuaW5kZXhPZihiKSYmKGEuZm9yRWFjaChmdW5jdGlvbihhKXtjWyIiXS5wdXNoKGEpfSksZGVsZXRlIGNbYl0pfSk7cmV0dXJuIGJ9LGdldFRyZWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmRhdGEubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlkfSk7YT10aGlzLmdldExpc3RPZlBhcmVudHModGhpcy5kYXRhLGEpO3RoaXMubm9kZU1hcD1bXTtyZXR1cm4gdGhpcy5idWlsZE5vZGUoIiIsLTEsMCxhLG51bGwpfSxoYXNEYXRhOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLnByb2Nlc3NlZFhEYXRhLmxlbmd0aH0saW5pdDpmdW5jdGlvbihhLGIpe3ZhciBlPWMuY29sb3JNYXBTZXJpZXNNaXhpbjtlJiYodGhpcy5jb2xvckF0dHJpYnM9ZS5jb2xvckF0dHJpYnMpO3RoaXMuZXZlbnRzVG9VbmJpbmQucHVzaChmKHRoaXMsCiJzZXRPcHRpb25zIixmdW5jdGlvbihhKXthPWEudXNlck9wdGlvbnM7dChhLmFsbG93RHJpbGxUb05vZGUpJiYhdChhLmFsbG93VHJhdmVyc2luZ1RyZWUpJiYoYS5hbGxvd1RyYXZlcnNpbmdUcmVlPWEuYWxsb3dEcmlsbFRvTm9kZSxkZWxldGUgYS5hbGxvd0RyaWxsVG9Ob2RlKTt0KGEuZHJpbGxVcEJ1dHRvbikmJiF0KGEudHJhdmVyc2VVcEJ1dHRvbikmJihhLnRyYXZlcnNlVXBCdXR0b249YS5kcmlsbFVwQnV0dG9uLGRlbGV0ZSBhLmRyaWxsVXBCdXR0b24pfSkpO0UucHJvdG90eXBlLmluaXQuY2FsbCh0aGlzLGEsYik7ZGVsZXRlIHRoaXMub3BhY2l0eTt0aGlzLm9wdGlvbnMuYWxsb3dUcmF2ZXJzaW5nVHJlZSYmdGhpcy5ldmVudHNUb1VuYmluZC5wdXNoKGYodGhpcywiY2xpY2siLHRoaXMub25DbGlja0RyaWxsVG9Ob2RlKSl9LGJ1aWxkTm9kZTpmdW5jdGlvbihhLGIsZSxjLGwpe3ZhciByPXRoaXMscT1bXSxkPXIucG9pbnRzW2JdLGY9MCxDOyhjW2FdfHxbXSkuZm9yRWFjaChmdW5jdGlvbihiKXtDPQpyLmJ1aWxkTm9kZShyLnBvaW50c1tiXS5pZCxiLGUrMSxjLGEpO2Y9TWF0aC5tYXgoQy5oZWlnaHQrMSxmKTtxLnB1c2goQyl9KTtiPXtpZDphLGk6YixjaGlsZHJlbjpxLGhlaWdodDpmLGxldmVsOmUscGFyZW50OmwsdmlzaWJsZTohMX07ci5ub2RlTWFwW2IuaWRdPWI7ZCYmKGQubm9kZT1iKTtyZXR1cm4gYn0sc2V0VHJlZVZhbHVlczpmdW5jdGlvbihhKXt2YXIgYj10aGlzLGU9Yi5vcHRpb25zLGM9Yi5ub2RlTWFwW2Iucm9vdE5vZGVdO2U9ImJvb2xlYW4iPT09dHlwZW9mIGUubGV2ZWxJc0NvbnN0YW50P2UubGV2ZWxJc0NvbnN0YW50OiEwO3ZhciBsPTAsST1bXSxxPWIucG9pbnRzW2EuaV07YS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGEpe2E9Yi5zZXRUcmVlVmFsdWVzKGEpO0kucHVzaChhKTthLmlnbm9yZXx8KGwrPWEudmFsKX0pO00oSSxmdW5jdGlvbihhLGIpe3JldHVybiBhLnNvcnRJbmRleC1iLnNvcnRJbmRleH0pO3ZhciBkPXUocSYmcS5vcHRpb25zLnZhbHVlLApsKTtxJiYocS52YWx1ZT1kKTt6KGEse2NoaWxkcmVuOkksY2hpbGRyZW5Ub3RhbDpsLGlnbm9yZTohKHUocSYmcS52aXNpYmxlLCEwKSYmMDxkKSxpc0xlYWY6YS52aXNpYmxlJiYhbCxsZXZlbER5bmFtaWM6YS5sZXZlbC0oZT8wOmMubGV2ZWwpLG5hbWU6dShxJiZxLm5hbWUsIiIpLHNvcnRJbmRleDp1KHEmJnEuc29ydEluZGV4LC1kKSx2YWw6ZH0pO3JldHVybiBhfSxjYWxjdWxhdGVDaGlsZHJlbkFyZWFzOmZ1bmN0aW9uKGEsYil7dmFyIGU9dGhpcyxjPWUub3B0aW9ucyxsPWUubWFwT3B0aW9uc1RvTGV2ZWxbYS5sZXZlbCsxXSxkPXUoZVtsJiZsLmxheW91dEFsZ29yaXRobV0mJmwubGF5b3V0QWxnb3JpdGhtLGMubGF5b3V0QWxnb3JpdGhtKSxxPWMuYWx0ZXJuYXRlU3RhcnRpbmdEaXJlY3Rpb24sZj1bXTthPWEuY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiFhLmlnbm9yZX0pO2wmJmwubGF5b3V0U3RhcnRpbmdEaXJlY3Rpb24mJihiLmRpcmVjdGlvbj0idmVydGljYWwiPT09CmwubGF5b3V0U3RhcnRpbmdEaXJlY3Rpb24/MDoxKTtmPWVbZF0oYixhKTthLmZvckVhY2goZnVuY3Rpb24oYSxjKXtjPWZbY107YS52YWx1ZXM9RChjLHt2YWw6YS5jaGlsZHJlblRvdGFsLGRpcmVjdGlvbjpxPzEtYi5kaXJlY3Rpb246Yi5kaXJlY3Rpb259KTthLnBvaW50VmFsdWVzPUQoYyx7eDpjLngvZS5heGlzUmF0aW8seToxMDAtYy55LWMuaGVpZ2h0LHdpZHRoOmMud2lkdGgvZS5heGlzUmF0aW99KTthLmNoaWxkcmVuLmxlbmd0aCYmZS5jYWxjdWxhdGVDaGlsZHJlbkFyZWFzKGEsYS52YWx1ZXMpfSl9LHNldFBvaW50VmFsdWVzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPWEueEF4aXMsZT1hLnlBeGlzLGM9YS5jaGFydC5zdHlsZWRNb2RlO2EucG9pbnRzLmZvckVhY2goZnVuY3Rpb24obCl7dmFyIGQ9bC5ub2RlLHE9ZC5wb2ludFZhbHVlcztkPWQudmlzaWJsZTtpZihxJiZkKXtkPXEuaGVpZ2h0O3ZhciByPXEud2lkdGgsZj1xLngsaD1xLnksZz1jPzA6KGEucG9pbnRBdHRyaWJzKGwpWyJzdHJva2Utd2lkdGgiXXx8CjApJTIvMjtxPU1hdGgucm91bmQoYi50b1BpeGVscyhmLCEwKSktZztyPU1hdGgucm91bmQoYi50b1BpeGVscyhmK3IsITApKS1nO2Y9TWF0aC5yb3VuZChlLnRvUGl4ZWxzKGgsITApKS1nO2Q9TWF0aC5yb3VuZChlLnRvUGl4ZWxzKGgrZCwhMCkpLWc7bC5zaGFwZUFyZ3M9e3g6TWF0aC5taW4ocSxyKSx5Ok1hdGgubWluKGYsZCksd2lkdGg6TWF0aC5hYnMoci1xKSxoZWlnaHQ6TWF0aC5hYnMoZC1mKX07bC5wbG90WD1sLnNoYXBlQXJncy54K2wuc2hhcGVBcmdzLndpZHRoLzI7bC5wbG90WT1sLnNoYXBlQXJncy55K2wuc2hhcGVBcmdzLmhlaWdodC8yfWVsc2UgZGVsZXRlIGwucGxvdFgsZGVsZXRlIGwucGxvdFl9KX0sc2V0Q29sb3JSZWN1cnNpdmU6ZnVuY3Rpb24oYSxiLGUsYyxsKXt2YXIgZD10aGlzLHI9ZCYmZC5jaGFydDtyPXImJnIub3B0aW9ucyYmci5vcHRpb25zLmNvbG9ycztpZihhKXt2YXIgZj1OKGEse2NvbG9yczpyLGluZGV4OmMsbWFwT3B0aW9uc1RvTGV2ZWw6ZC5tYXBPcHRpb25zVG9MZXZlbCwKcGFyZW50Q29sb3I6YixwYXJlbnRDb2xvckluZGV4OmUsc2VyaWVzOmQsc2libGluZ3M6bH0pO2lmKGI9ZC5wb2ludHNbYS5pXSliLmNvbG9yPWYuY29sb3IsYi5jb2xvckluZGV4PWYuY29sb3JJbmRleDsoYS5jaGlsZHJlbnx8W10pLmZvckVhY2goZnVuY3Rpb24oYixlKXtkLnNldENvbG9yUmVjdXJzaXZlKGIsZi5jb2xvcixmLmNvbG9ySW5kZXgsZSxhLmNoaWxkcmVuLmxlbmd0aCl9KX19LGFsZ29yaXRobUdyb3VwOmZ1bmN0aW9uKGEsYixlLGMpe3RoaXMuaGVpZ2h0PWE7dGhpcy53aWR0aD1iO3RoaXMucGxvdD1jO3RoaXMuc3RhcnREaXJlY3Rpb249dGhpcy5kaXJlY3Rpb249ZTt0aGlzLmxIPXRoaXMubkg9dGhpcy5sVz10aGlzLm5XPXRoaXMudG90YWw9MDt0aGlzLmVsQXJyPVtdO3RoaXMubFA9e3RvdGFsOjAsbEg6MCxuSDowLGxXOjAsblc6MCxuUjowLGxSOjAsYXNwZWN0UmF0aW86ZnVuY3Rpb24oYSxiKXtyZXR1cm4gTWF0aC5tYXgoYS9iLGIvYSl9fTt0aGlzLmFkZEVsZW1lbnQ9CmZ1bmN0aW9uKGEpe3RoaXMubFAudG90YWw9dGhpcy5lbEFyclt0aGlzLmVsQXJyLmxlbmd0aC0xXTt0aGlzLnRvdGFsKz1hOzA9PT10aGlzLmRpcmVjdGlvbj8odGhpcy5sVz10aGlzLm5XLHRoaXMubFAubEg9dGhpcy5sUC50b3RhbC90aGlzLmxXLHRoaXMubFAubFI9dGhpcy5sUC5hc3BlY3RSYXRpbyh0aGlzLmxXLHRoaXMubFAubEgpLHRoaXMublc9dGhpcy50b3RhbC90aGlzLmhlaWdodCx0aGlzLmxQLm5IPXRoaXMubFAudG90YWwvdGhpcy5uVyx0aGlzLmxQLm5SPXRoaXMubFAuYXNwZWN0UmF0aW8odGhpcy5uVyx0aGlzLmxQLm5IKSk6KHRoaXMubEg9dGhpcy5uSCx0aGlzLmxQLmxXPXRoaXMubFAudG90YWwvdGhpcy5sSCx0aGlzLmxQLmxSPXRoaXMubFAuYXNwZWN0UmF0aW8odGhpcy5sUC5sVyx0aGlzLmxIKSx0aGlzLm5IPXRoaXMudG90YWwvdGhpcy53aWR0aCx0aGlzLmxQLm5XPXRoaXMubFAudG90YWwvdGhpcy5uSCx0aGlzLmxQLm5SPXRoaXMubFAuYXNwZWN0UmF0aW8odGhpcy5sUC5uVywKdGhpcy5uSCkpO3RoaXMuZWxBcnIucHVzaChhKX07dGhpcy5yZXNldD1mdW5jdGlvbigpe3RoaXMubFc9dGhpcy5uVz0wO3RoaXMuZWxBcnI9W107dGhpcy50b3RhbD0wfX0sYWxnb3JpdGhtQ2FsY1BvaW50czpmdW5jdGlvbihhLGIsZSxjKXt2YXIgbCxkLGYscixnPWUubFcsQz1lLmxILGs9ZS5wbG90LHA9MCxtPWUuZWxBcnIubGVuZ3RoLTE7aWYoYilnPWUublcsQz1lLm5IO2Vsc2UgdmFyIG49ZS5lbEFycltlLmVsQXJyLmxlbmd0aC0xXTtlLmVsQXJyLmZvckVhY2goZnVuY3Rpb24oYSl7aWYoYnx8cDxtKTA9PT1lLmRpcmVjdGlvbj8obD1rLngsZD1rLnksZj1nLHI9YS9mKToobD1rLngsZD1rLnkscj1DLGY9YS9yKSxjLnB1c2goe3g6bCx5OmQsd2lkdGg6ZixoZWlnaHQ6aChyKX0pLDA9PT1lLmRpcmVjdGlvbj9rLnkrPXI6ay54Kz1mO3ArPTF9KTtlLnJlc2V0KCk7MD09PWUuZGlyZWN0aW9uP2Uud2lkdGgtPWc6ZS5oZWlnaHQtPUM7ay55PWsucGFyZW50LnkrKGsucGFyZW50LmhlaWdodC0KZS5oZWlnaHQpO2sueD1rLnBhcmVudC54KyhrLnBhcmVudC53aWR0aC1lLndpZHRoKTthJiYoZS5kaXJlY3Rpb249MS1lLmRpcmVjdGlvbik7Ynx8ZS5hZGRFbGVtZW50KG4pfSxhbGdvcml0aG1Mb3dBc3BlY3RSYXRpbzpmdW5jdGlvbihhLGIsZSl7dmFyIGM9W10sbD10aGlzLGQsZj17eDpiLngseTpiLnkscGFyZW50OmJ9LGc9MCxrPWUubGVuZ3RoLTEsaD1uZXcgdGhpcy5hbGdvcml0aG1Hcm91cChiLmhlaWdodCxiLndpZHRoLGIuZGlyZWN0aW9uLGYpO2UuZm9yRWFjaChmdW5jdGlvbihlKXtkPWUudmFsL2IudmFsKmIuaGVpZ2h0KmIud2lkdGg7aC5hZGRFbGVtZW50KGQpO2gubFAublI+aC5sUC5sUiYmbC5hbGdvcml0aG1DYWxjUG9pbnRzKGEsITEsaCxjLGYpO2c9PT1rJiZsLmFsZ29yaXRobUNhbGNQb2ludHMoYSwhMCxoLGMsZik7Zys9MX0pO3JldHVybiBjfSxhbGdvcml0aG1GaWxsOmZ1bmN0aW9uKGEsYixlKXt2YXIgYz1bXSxsLGQ9Yi5kaXJlY3Rpb24sZj1iLngsZz1iLnksCmg9Yi53aWR0aCxrPWIuaGVpZ2h0LHAsbSxuLHQ7ZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2w9ZS52YWwvYi52YWwqYi5oZWlnaHQqYi53aWR0aDtwPWY7bT1nOzA9PT1kPyh0PWssbj1sL3QsaC09bixmKz1uKToobj1oLHQ9bC9uLGstPXQsZys9dCk7Yy5wdXNoKHt4OnAseTptLHdpZHRoOm4saGVpZ2h0OnR9KTthJiYoZD0xLWQpfSk7cmV0dXJuIGN9LHN0cmlwOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuYWxnb3JpdGhtTG93QXNwZWN0UmF0aW8oITEsYSxiKX0sc3F1YXJpZmllZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmFsZ29yaXRobUxvd0FzcGVjdFJhdGlvKCEwLGEsYil9LHNsaWNlQW5kRGljZTpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmFsZ29yaXRobUZpbGwoITAsYSxiKX0sc3RyaXBlczpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmFsZ29yaXRobUZpbGwoITEsYSxiKX0sdHJhbnNsYXRlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPWEub3B0aW9ucyxlPVEoYSk7CkUucHJvdG90eXBlLnRyYW5zbGF0ZS5jYWxsKGEpO3ZhciBjPWEudHJlZT1hLmdldFRyZWUoKTt2YXIgZD1hLm5vZGVNYXBbZV07YS5yZW5kZXJUcmF2ZXJzZVVwQnV0dG9uKGUpO2EubWFwT3B0aW9uc1RvTGV2ZWw9Tyh7ZnJvbTpkLmxldmVsKzEsbGV2ZWxzOmIubGV2ZWxzLHRvOmMuaGVpZ2h0LGRlZmF1bHRzOntsZXZlbElzQ29uc3RhbnQ6YS5vcHRpb25zLmxldmVsSXNDb25zdGFudCxjb2xvckJ5UG9pbnQ6Yi5jb2xvckJ5UG9pbnR9fSk7IiI9PT1lfHxkJiZkLmNoaWxkcmVuLmxlbmd0aHx8KGEuc2V0Um9vdE5vZGUoIiIsITEpLGU9YS5yb290Tm9kZSxkPWEubm9kZU1hcFtlXSk7RihhLm5vZGVNYXBbYS5yb290Tm9kZV0sZnVuY3Rpb24oYil7dmFyIGU9ITEsYz1iLnBhcmVudDtiLnZpc2libGU9ITA7aWYoY3x8IiI9PT1jKWU9YS5ub2RlTWFwW2NdO3JldHVybiBlfSk7RihhLm5vZGVNYXBbYS5yb290Tm9kZV0uY2hpbGRyZW4sZnVuY3Rpb24oYSl7dmFyIGI9ITE7YS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EudmlzaWJsZT0KITA7YS5jaGlsZHJlbi5sZW5ndGgmJihiPShifHxbXSkuY29uY2F0KGEuY2hpbGRyZW4pKX0pO3JldHVybiBifSk7YS5zZXRUcmVlVmFsdWVzKGMpO2EuYXhpc1JhdGlvPWEueEF4aXMubGVuL2EueUF4aXMubGVuO2Eubm9kZU1hcFsiIl0ucG9pbnRWYWx1ZXM9ZT17eDowLHk6MCx3aWR0aDoxMDAsaGVpZ2h0OjEwMH07YS5ub2RlTWFwWyIiXS52YWx1ZXM9ZT1EKGUse3dpZHRoOmUud2lkdGgqYS5heGlzUmF0aW8sZGlyZWN0aW9uOiJ2ZXJ0aWNhbCI9PT1iLmxheW91dFN0YXJ0aW5nRGlyZWN0aW9uPzA6MSx2YWw6Yy52YWx9KTthLmNhbGN1bGF0ZUNoaWxkcmVuQXJlYXMoYyxlKTthLmNvbG9yQXhpc3x8Yi5jb2xvckJ5UG9pbnR8fGEuc2V0Q29sb3JSZWN1cnNpdmUoYS50cmVlKTtiLmFsbG93VHJhdmVyc2luZ1RyZWUmJihiPWQucG9pbnRWYWx1ZXMsYS54QXhpcy5zZXRFeHRyZW1lcyhiLngsYi54K2Iud2lkdGgsITEpLGEueUF4aXMuc2V0RXh0cmVtZXMoYi55LGIueStiLmhlaWdodCwKITEpLGEueEF4aXMuc2V0U2NhbGUoKSxhLnlBeGlzLnNldFNjYWxlKCkpO2Euc2V0UG9pbnRWYWx1ZXMoKX0sZHJhd0RhdGFMYWJlbHM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGI9YS5tYXBPcHRpb25zVG9MZXZlbCxjLGQ7YS5wb2ludHMuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGUudmlzaWJsZX0pLmZvckVhY2goZnVuY3Rpb24oZSl7ZD1iW2Uubm9kZS5sZXZlbF07Yz17c3R5bGU6e319O2Uubm9kZS5pc0xlYWZ8fChjLmVuYWJsZWQ9ITEpO2QmJmQuZGF0YUxhYmVscyYmKGM9RChjLGQuZGF0YUxhYmVscyksYS5faGFzUG9pbnRMYWJlbHM9ITApO2Uuc2hhcGVBcmdzJiYoYy5zdHlsZS53aWR0aD1lLnNoYXBlQXJncy53aWR0aCxlLmRhdGFMYWJlbCYmZS5kYXRhTGFiZWwuY3NzKHt3aWR0aDplLnNoYXBlQXJncy53aWR0aCsicHgifSkpO2UuZGxPcHRpb25zPUQoYyxlLm9wdGlvbnMuZGF0YUxhYmVscyl9KTtFLnByb3RvdHlwZS5kcmF3RGF0YUxhYmVscy5jYWxsKHRoaXMpfSwKYWxpZ25EYXRhTGFiZWw6ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPWMuc3R5bGU7IXQoZS50ZXh0T3ZlcmZsb3cpJiZiLnRleHQmJmIuZ2V0QkJveCgpLndpZHRoPmIudGV4dC50ZXh0V2lkdGgmJmIuY3NzKHt0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIix3aWR0aDplLndpZHRoKz0icHgifSk7Ry5jb2x1bW4ucHJvdG90eXBlLmFsaWduRGF0YUxhYmVsLmFwcGx5KHRoaXMsYXJndW1lbnRzKTthLmRhdGFMYWJlbCYmYS5kYXRhTGFiZWwuYXR0cih7ekluZGV4OihhLm5vZGUuekluZGV4fHwwKSsxfSl9LHBvaW50QXR0cmliczpmdW5jdGlvbihhLGIpe3ZhciBjPUwodGhpcy5tYXBPcHRpb25zVG9MZXZlbCk/dGhpcy5tYXBPcHRpb25zVG9MZXZlbDp7fSxkPWEmJmNbYS5ub2RlLmxldmVsXXx8e307Yz10aGlzLm9wdGlvbnM7dmFyIGY9YiYmYy5zdGF0ZXNbYl18fHt9LGc9YSYmYS5nZXRDbGFzc05hbWUoKXx8IiI7YT17c3Ryb2tlOmEmJmEuYm9yZGVyQ29sb3J8fGQuYm9yZGVyQ29sb3J8fGYuYm9yZGVyQ29sb3J8fApjLmJvcmRlckNvbG9yLCJzdHJva2Utd2lkdGgiOnUoYSYmYS5ib3JkZXJXaWR0aCxkLmJvcmRlcldpZHRoLGYuYm9yZGVyV2lkdGgsYy5ib3JkZXJXaWR0aCksZGFzaHN0eWxlOmEmJmEuYm9yZGVyRGFzaFN0eWxlfHxkLmJvcmRlckRhc2hTdHlsZXx8Zi5ib3JkZXJEYXNoU3R5bGV8fGMuYm9yZGVyRGFzaFN0eWxlLGZpbGw6YSYmYS5jb2xvcnx8dGhpcy5jb2xvcn07LTEhPT1nLmluZGV4T2YoImhpZ2hjaGFydHMtYWJvdmUtbGV2ZWwiKT8oYS5maWxsPSJub25lIixhWyJzdHJva2Utd2lkdGgiXT0wKTotMSE9PWcuaW5kZXhPZigiaGlnaGNoYXJ0cy1pbnRlcm5hbC1ub2RlLWludGVyYWN0aXZlIik/KGI9dShmLm9wYWNpdHksYy5vcGFjaXR5KSxhLmZpbGw9dihhLmZpbGwpLnNldE9wYWNpdHkoYikuZ2V0KCksYS5jdXJzb3I9InBvaW50ZXIiKTotMSE9PWcuaW5kZXhPZigiaGlnaGNoYXJ0cy1pbnRlcm5hbC1ub2RlIik/YS5maWxsPSJub25lIjpiJiYoYS5maWxsPXYoYS5maWxsKS5icmlnaHRlbihmLmJyaWdodG5lc3MpLmdldCgpKTsKcmV0dXJuIGF9LGRyYXdQb2ludHM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGI9YS5jaGFydCxjPWIucmVuZGVyZXIsZD1iLnN0eWxlZE1vZGUsZj1hLm9wdGlvbnMsZz1kP3t9OmYuc2hhZG93LGg9Zi5ib3JkZXJSYWRpdXMsaz1iLnBvaW50Q291bnQ8Zi5hbmltYXRpb25MaW1pdCxuPWYuYWxsb3dUcmF2ZXJzaW5nVHJlZTthLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZhciBlPWIubm9kZS5sZXZlbER5bmFtaWMsbD17fSxyPXt9LHA9e30sbT0ibGV2ZWwtZ3JvdXAtIitlLHE9ISFiLmdyYXBoaWMsdD1rJiZxLHU9Yi5zaGFwZUFyZ3M7Yi5zaG91bGREcmF3KCkmJihoJiYoci5yPWgpLEQoITAsdD9sOnIscT91Ont9LGQ/e306YS5wb2ludEF0dHJpYnMoYixiLnNlbGVjdGVkJiYic2VsZWN0IikpLGEuY29sb3JBdHRyaWJzJiZkJiZ6KHAsYS5jb2xvckF0dHJpYnMoYikpLGFbbV18fChhW21dPWMuZyhtKS5hdHRyKHt6SW5kZXg6MUUzLWV9KS5hZGQoYS5ncm91cCksYVttXS5zdXJ2aXZlPQohMCkpO2IuZHJhdyh7YW5pbWF0YWJsZUF0dHJpYnM6bCxhdHRyaWJzOnIsY3NzOnAsZ3JvdXA6YVttXSxyZW5kZXJlcjpjLHNoYWRvdzpnLHNoYXBlQXJnczp1LHNoYXBlVHlwZToicmVjdCJ9KTtuJiZiLmdyYXBoaWMmJihiLmRyaWxsSWQ9Zi5pbnRlcmFjdEJ5TGVhZj9hLmRyaWxsVG9CeUxlYWYoYik6YS5kcmlsbFRvQnlHcm91cChiKSl9KX0sb25DbGlja0RyaWxsVG9Ob2RlOmZ1bmN0aW9uKGEpe3ZhciBiPShhPWEucG9pbnQpJiZhLmRyaWxsSWQ7bShiKSYmKHRoaXMuaXNEcmlsbEFsbG93ZWQ/dGhpcy5pc0RyaWxsQWxsb3dlZChiKToxKSYmKGEuc2V0U3RhdGUoIiIpLHRoaXMuc2V0Um9vdE5vZGUoYiwhMCx7dHJpZ2dlcjoiY2xpY2sifSkpfSxkcmlsbFRvQnlHcm91cDpmdW5jdGlvbihhKXt2YXIgYj0hMTsxIT09YS5ub2RlLmxldmVsLXRoaXMubm9kZU1hcFt0aGlzLnJvb3ROb2RlXS5sZXZlbHx8YS5ub2RlLmlzTGVhZnx8KGI9YS5pZCk7cmV0dXJuIGJ9LGRyaWxsVG9CeUxlYWY6ZnVuY3Rpb24oYSl7dmFyIGI9CiExO2lmKGEubm9kZS5wYXJlbnQhPT10aGlzLnJvb3ROb2RlJiZhLm5vZGUuaXNMZWFmKWZvcihhPWEubm9kZTshYjspYT10aGlzLm5vZGVNYXBbYS5wYXJlbnRdLGEucGFyZW50PT09dGhpcy5yb290Tm9kZSYmKGI9YS5pZCk7cmV0dXJuIGJ9LGRyaWxsVXA6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm5vZGVNYXBbdGhpcy5yb290Tm9kZV07YSYmbShhLnBhcmVudCkmJnRoaXMuc2V0Um9vdE5vZGUoYS5wYXJlbnQsITAse3RyaWdnZXI6InRyYXZlcnNlVXBCdXR0b24ifSl9LGRyaWxsVG9Ob2RlOmZ1bmN0aW9uKGEsYil7dygzMiwhMSx2b2lkIDAseyJ0cmVlbWFwLmRyaWxsVG9Ob2RlIjoidXNlIHRyZWVtYXAuc2V0Um9vdE5vZGUifSk7dGhpcy5zZXRSb290Tm9kZShhLGIpfSxzZXRSb290Tm9kZTpmdW5jdGlvbihhLGIsYyl7YT16KHtuZXdSb290SWQ6YSxwcmV2aW91c1Jvb3RJZDp0aGlzLnJvb3ROb2RlLHJlZHJhdzp1KGIsITApLHNlcmllczp0aGlzfSxjKTtLKHRoaXMsInNldFJvb3ROb2RlIiwKYSxmdW5jdGlvbihhKXt2YXIgYj1hLnNlcmllcztiLmlkUHJldmlvdXNSb290PWEucHJldmlvdXNSb290SWQ7Yi5yb290Tm9kZT1hLm5ld1Jvb3RJZDtiLmlzRGlydHk9ITA7YS5yZWRyYXcmJmIuY2hhcnQucmVkcmF3KCl9KX0saXNEcmlsbEFsbG93ZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy50cmVlLGM9Yi5jaGlsZHJlblswXTtyZXR1cm4hKDE9PT1iLmNoaWxkcmVuLmxlbmd0aCYmKCIiPT09dGhpcy5yb290Tm9kZSYmYT09PWMuaWR8fHRoaXMucm9vdE5vZGU9PT1jLmlkJiYiIj09PWEpKX0scmVuZGVyVHJhdmVyc2VVcEJ1dHRvbjpmdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9Yi5ub2RlTWFwW2FdLGQ9Yi5vcHRpb25zLnRyYXZlcnNlVXBCdXR0b24sZj11KGQudGV4dCxjLm5hbWUsIjwgQmFjayIpOyIiIT09YSYmKCFiLmlzRHJpbGxBbGxvd2VkfHxtKGMucGFyZW50KSYmYi5pc0RyaWxsQWxsb3dlZChjLnBhcmVudCkpP3RoaXMuZHJpbGxVcEJ1dHRvbj8odGhpcy5kcmlsbFVwQnV0dG9uLnBsYWNlZD0KITEsdGhpcy5kcmlsbFVwQnV0dG9uLmF0dHIoe3RleHQ6Zn0pLmFsaWduKCkpOihjPShhPWQudGhlbWUpJiZhLnN0YXRlcyx0aGlzLmRyaWxsVXBCdXR0b249dGhpcy5jaGFydC5yZW5kZXJlci5idXR0b24oZixudWxsLG51bGwsZnVuY3Rpb24oKXtiLmRyaWxsVXAoKX0sYSxjJiZjLmhvdmVyLGMmJmMuc2VsZWN0KS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1kcmlsbHVwLWJ1dHRvbiIpLmF0dHIoe2FsaWduOmQucG9zaXRpb24uYWxpZ24sekluZGV4Ojd9KS5hZGQoKS5hbGlnbihkLnBvc2l0aW9uLCExLGQucmVsYXRpdmVUb3x8InBsb3RCb3giKSk6Yi5kcmlsbFVwQnV0dG9uJiYoYi5kcmlsbFVwQnV0dG9uPWIuZHJpbGxVcEJ1dHRvbi5kZXN0cm95KCkpfSxidWlsZEtEVHJlZTpnLGRyYXdMZWdlbmRTeW1ib2w6bi5kcmF3UmVjdGFuZ2xlLGdldEV4dHJlbWVzOmZ1bmN0aW9uKCl7dmFyIGE9RS5wcm90b3R5cGUuZ2V0RXh0cmVtZXMuY2FsbCh0aGlzLHRoaXMuY29sb3JWYWx1ZURhdGEpLApiPWEuZGF0YU1heDt0aGlzLnZhbHVlTWluPWEuZGF0YU1pbjt0aGlzLnZhbHVlTWF4PWI7cmV0dXJuIEUucHJvdG90eXBlLmdldEV4dHJlbWVzLmNhbGwodGhpcyl9LGdldEV4dHJlbWVzRnJvbUFsbDohMCxzZXRTdGF0ZTpmdW5jdGlvbihhKXt0aGlzLm9wdGlvbnMuaW5hY3RpdmVPdGhlclBvaW50cz0hMDtFLnByb3RvdHlwZS5zZXRTdGF0ZS5jYWxsKHRoaXMsYSwhMSk7dGhpcy5vcHRpb25zLmluYWN0aXZlT3RoZXJQb2ludHM9ITF9LHV0aWxzOntyZWN1cnNpdmU6Rn19LHtkcmF3Ongsc2V0VmlzaWJsZTpHLnBpZS5wcm90b3R5cGUucG9pbnRDbGFzcy5wcm90b3R5cGUuc2V0VmlzaWJsZSxnZXRDbGFzc05hbWU6ZnVuY3Rpb24oKXt2YXIgYT1wLnByb3RvdHlwZS5nZXRDbGFzc05hbWUuY2FsbCh0aGlzKSxiPXRoaXMuc2VyaWVzLGM9Yi5vcHRpb25zO3RoaXMubm9kZS5sZXZlbDw9Yi5ub2RlTWFwW2Iucm9vdE5vZGVdLmxldmVsP2ErPSIgaGlnaGNoYXJ0cy1hYm92ZS1sZXZlbCI6CnRoaXMubm9kZS5pc0xlYWZ8fHUoYy5pbnRlcmFjdEJ5TGVhZiwhYy5hbGxvd1RyYXZlcnNpbmdUcmVlKT90aGlzLm5vZGUuaXNMZWFmfHwoYSs9IiBoaWdoY2hhcnRzLWludGVybmFsLW5vZGUiKTphKz0iIGhpZ2hjaGFydHMtaW50ZXJuYWwtbm9kZS1pbnRlcmFjdGl2ZSI7cmV0dXJuIGF9LGlzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZHx8QSh0aGlzLnZhbHVlKX0sc2V0U3RhdGU6ZnVuY3Rpb24oYSl7cC5wcm90b3R5cGUuc2V0U3RhdGUuY2FsbCh0aGlzLGEpO3RoaXMuZ3JhcGhpYyYmdGhpcy5ncmFwaGljLmF0dHIoe3pJbmRleDoiaG92ZXIiPT09YT8xOjB9KX0sc2hvdWxkRHJhdzpmdW5jdGlvbigpe3JldHVybiBBKHRoaXMucGxvdFkpJiZudWxsIT09dGhpcy55fX0pO2YoYy5TZXJpZXMsImFmdGVyQmluZEF4ZXMiLGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy54QXhpcyxiPXRoaXMueUF4aXM7aWYoYSYmYilpZih0aGlzLmlzKCJ0cmVlbWFwIikpe3ZhciBjPXtlbmRPblRpY2s6ITEsCmdyaWRMaW5lV2lkdGg6MCxsaW5lV2lkdGg6MCxtaW46MCxkYXRhTWluOjAsbWluUGFkZGluZzowLG1heDoxMDAsZGF0YU1heDoxMDAsbWF4UGFkZGluZzowLHN0YXJ0T25UaWNrOiExLHRpdGxlOm51bGwsdGlja1Bvc2l0aW9uczpbXX07eihiLm9wdGlvbnMsYyk7eihhLm9wdGlvbnMsYyk7SD0hMH1lbHNlIEgmJihiLnNldE9wdGlvbnMoYi51c2VyT3B0aW9ucyksYS5zZXRPcHRpb25zKGEudXNlck9wdGlvbnMpLEg9ITEpfSk7IiJ9KTt3KGMsIm1hc3RlcnMvbW9kdWxlcy90cmVlbWFwLnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD10cmVlbWFwLmpzLm1hcA=="></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIFNhbmtleSBkaWFncmFtIG1vZHVsZQoKIChjKSAyMDEwLTIwMTkgVG9yc3RlaW4gSG9uc2kKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24oYil7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8oYlsiZGVmYXVsdCJdPWIsbW9kdWxlLmV4cG9ydHM9Yik6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL21vZHVsZXMvc2Fua2V5IixbImhpZ2hjaGFydHMiXSxmdW5jdGlvbihuKXtiKG4pO2IuSGlnaGNoYXJ0cz1uO3JldHVybiBifSk6YigidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIG4oYixoLGssbCl7Yi5oYXNPd25Qcm9wZXJ0eShoKXx8KGJbaF09bC5hcHBseShudWxsLGspKX1iPWI/Yi5fbW9kdWxlczp7fTtuKGIsIm1peGlucy9ub2Rlcy5qcyIsW2JbInBhcnRzL0dsb2JhbHMuanMiXSxiWyJwYXJ0cy9Qb2ludC5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihiLGgsayl7dmFyIGw9ay5kZWZpbmVkLHU9ay5leHRlbmQsCnE9ay5maW5kLG49ay5waWNrO2IuTm9kZXNNaXhpbj17Y3JlYXRlTm9kZTpmdW5jdGlvbihiKXtmdW5jdGlvbiBkKGEsZCl7cmV0dXJuIHEoYSxmdW5jdGlvbihjKXtyZXR1cm4gYy5pZD09PWR9KX12YXIgYT1kKHRoaXMubm9kZXMsYikseD10aGlzLnBvaW50Q2xhc3M7aWYoIWEpe3ZhciBoPXRoaXMub3B0aW9ucy5ub2RlcyYmZCh0aGlzLm9wdGlvbnMubm9kZXMsYik7YT0obmV3IHgpLmluaXQodGhpcyx1KHtjbGFzc05hbWU6ImhpZ2hjaGFydHMtbm9kZSIsaXNOb2RlOiEwLGlkOmIseToxfSxoKSk7YS5saW5rc1RvPVtdO2EubGlua3NGcm9tPVtdO2EuZm9ybWF0UHJlZml4PSJub2RlIjthLm5hbWU9YS5uYW1lfHxhLm9wdGlvbnMuaWR8fCIiO2EubWFzcz1uKGEub3B0aW9ucy5tYXNzLGEub3B0aW9ucy5tYXJrZXImJmEub3B0aW9ucy5tYXJrZXIucmFkaXVzLHRoaXMub3B0aW9ucy5tYXJrZXImJnRoaXMub3B0aW9ucy5tYXJrZXIucmFkaXVzLDQpO2EuZ2V0U3VtPWZ1bmN0aW9uKCl7dmFyIGQ9CjAsYj0wO2EubGlua3NUby5mb3JFYWNoKGZ1bmN0aW9uKGMpe2QrPWMud2VpZ2h0fSk7YS5saW5rc0Zyb20uZm9yRWFjaChmdW5jdGlvbihjKXtiKz1jLndlaWdodH0pO3JldHVybiBNYXRoLm1heChkLGIpfTthLm9mZnNldD1mdW5jdGlvbihkLGIpe2Zvcih2YXIgYz0wLGU9MDtlPGFbYl0ubGVuZ3RoO2UrKyl7aWYoYVtiXVtlXT09PWQpcmV0dXJuIGM7Yys9YVtiXVtlXS53ZWlnaHR9fTthLmhhc1NoYXBlPWZ1bmN0aW9uKCl7dmFyIGQ9MDthLmxpbmtzVG8uZm9yRWFjaChmdW5jdGlvbihhKXthLm91dGdvaW5nJiZkKyt9KTtyZXR1cm4hYS5saW5rc1RvLmxlbmd0aHx8ZCE9PWEubGlua3NUby5sZW5ndGh9O3RoaXMubm9kZXMucHVzaChhKX1yZXR1cm4gYX0sZ2VuZXJhdGVQb2ludHM6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmNoYXJ0LGQ9e307Yi5TZXJpZXMucHJvdG90eXBlLmdlbmVyYXRlUG9pbnRzLmNhbGwodGhpcyk7dGhpcy5ub2Rlc3x8KHRoaXMubm9kZXM9W10pO3RoaXMuY29sb3JDb3VudGVyPQowO3RoaXMubm9kZXMuZm9yRWFjaChmdW5jdGlvbihhKXthLmxpbmtzRnJvbS5sZW5ndGg9MDthLmxpbmtzVG8ubGVuZ3RoPTA7YS5sZXZlbD1hLm9wdGlvbnMubGV2ZWx9KTt0aGlzLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2woYS5mcm9tKSYmKGRbYS5mcm9tXXx8KGRbYS5mcm9tXT10aGlzLmNyZWF0ZU5vZGUoYS5mcm9tKSksZFthLmZyb21dLmxpbmtzRnJvbS5wdXNoKGEpLGEuZnJvbU5vZGU9ZFthLmZyb21dLGguc3R5bGVkTW9kZT9hLmNvbG9ySW5kZXg9bihhLm9wdGlvbnMuY29sb3JJbmRleCxkW2EuZnJvbV0uY29sb3JJbmRleCk6YS5jb2xvcj1hLm9wdGlvbnMuY29sb3J8fGRbYS5mcm9tXS5jb2xvcik7bChhLnRvKSYmKGRbYS50b118fChkW2EudG9dPXRoaXMuY3JlYXRlTm9kZShhLnRvKSksZFthLnRvXS5saW5rc1RvLnB1c2goYSksYS50b05vZGU9ZFthLnRvXSk7YS5uYW1lPWEubmFtZXx8YS5pZH0sdGhpcyk7dGhpcy5ub2RlTG9va3VwPWR9LHNldERhdGE6ZnVuY3Rpb24oKXt0aGlzLm5vZGVzJiYKKHRoaXMubm9kZXMuZm9yRWFjaChmdW5jdGlvbihiKXtiLmRlc3Ryb3koKX0pLHRoaXMubm9kZXMubGVuZ3RoPTApO2IuU2VyaWVzLnByb3RvdHlwZS5zZXREYXRhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZGF0YT1bXS5jb25jYXQodGhpcy5wb2ludHN8fFtdLHRoaXMubm9kZXMpO3JldHVybiBiLlNlcmllcy5wcm90b3R5cGUuZGVzdHJveS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHNldE5vZGVTdGF0ZTpmdW5jdGlvbihiKXt2YXIgZD1hcmd1bWVudHMsYT10aGlzLmlzTm9kZT90aGlzLmxpbmtzVG8uY29uY2F0KHRoaXMubGlua3NGcm9tKTpbdGhpcy5mcm9tTm9kZSx0aGlzLnRvTm9kZV07InNlbGVjdCIhPT1iJiZhLmZvckVhY2goZnVuY3Rpb24oYSl7YSYmYS5zZXJpZXMmJihoLnByb3RvdHlwZS5zZXRTdGF0ZS5hcHBseShhLGQpLGEuaXNOb2RlfHwoYS5mcm9tTm9kZS5ncmFwaGljJiZoLnByb3RvdHlwZS5zZXRTdGF0ZS5hcHBseShhLmZyb21Ob2RlLApkKSxhLnRvTm9kZSYmYS50b05vZGUuZ3JhcGhpYyYmaC5wcm90b3R5cGUuc2V0U3RhdGUuYXBwbHkoYS50b05vZGUsZCkpKX0pO2gucHJvdG90eXBlLnNldFN0YXRlLmFwcGx5KHRoaXMsZCl9fX0pO24oYiwibWl4aW5zL3RyZWUtc2VyaWVzLmpzIixbYlsicGFydHMvQ29sb3IuanMiXSxiWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYixoKXt2YXIgaz1oLmV4dGVuZCxsPWguaXNBcnJheSxuPWguaXNOdW1iZXIscT1oLmlzT2JqZWN0LHU9aC5tZXJnZSxyPWgucGljaztyZXR1cm57Z2V0Q29sb3I6ZnVuY3Rpb24oZCxhKXt2YXIgeD1hLmluZGV4LGg9YS5tYXBPcHRpb25zVG9MZXZlbCxrPWEucGFyZW50Q29sb3IsbD1hLnBhcmVudENvbG9ySW5kZXgsYz1hLnNlcmllcyxlPWEuY29sb3JzLEI9YS5zaWJsaW5ncyxtPWMucG9pbnRzLGc9Yy5jaGFydC5vcHRpb25zLmNoYXJ0LHc7aWYoZCl7bT1tW2QuaV07ZD1oW2QubGV2ZWxdfHx7fTtpZihoPW0mJmQuY29sb3JCeVBvaW50KXt2YXIgZj0KbS5pbmRleCUoZT9lLmxlbmd0aDpnLmNvbG9yQ291bnQpO3ZhciBwPWUmJmVbZl19aWYoIWMuY2hhcnQuc3R5bGVkTW9kZSl7ZT1tJiZtLm9wdGlvbnMuY29sb3I7Zz1kJiZkLmNvbG9yO2lmKHc9ayl3PSh3PWQmJmQuY29sb3JWYXJpYXRpb24pJiYiYnJpZ2h0bmVzcyI9PT13LmtleT9iLnBhcnNlKGspLmJyaWdodGVuKHgvQip3LnRvKS5nZXQoKTprO3c9cihlLGcscCx3LGMuY29sb3IpfXZhciB0PXIobSYmbS5vcHRpb25zLmNvbG9ySW5kZXgsZCYmZC5jb2xvckluZGV4LGYsbCxhLmNvbG9ySW5kZXgpfXJldHVybntjb2xvcjp3LGNvbG9ySW5kZXg6dH19LGdldExldmVsT3B0aW9uczpmdW5jdGlvbihkKXt2YXIgYT1udWxsO2lmKHEoZCkpe2E9e307dmFyIGI9bihkLmZyb20pP2QuZnJvbToxO3ZhciBoPWQubGV2ZWxzO3ZhciB2PXt9O3ZhciByPXEoZC5kZWZhdWx0cyk/ZC5kZWZhdWx0czp7fTtsKGgpJiYodj1oLnJlZHVjZShmdW5jdGlvbihhLGUpe2lmKHEoZSkmJm4oZS5sZXZlbCkpe3ZhciBjPQp1KHt9LGUpO3ZhciBtPSJib29sZWFuIj09PXR5cGVvZiBjLmxldmVsSXNDb25zdGFudD9jLmxldmVsSXNDb25zdGFudDpyLmxldmVsSXNDb25zdGFudDtkZWxldGUgYy5sZXZlbElzQ29uc3RhbnQ7ZGVsZXRlIGMubGV2ZWw7ZT1lLmxldmVsKyhtPzA6Yi0xKTtxKGFbZV0pP2soYVtlXSxjKTphW2VdPWN9cmV0dXJuIGF9LHt9KSk7aD1uKGQudG8pP2QudG86MTtmb3IoZD0wO2Q8PWg7ZCsrKWFbZF09dSh7fSxyLHEodltkXSk/dltkXTp7fSl9cmV0dXJuIGF9LHNldFRyZWVWYWx1ZXM6ZnVuY3Rpb24geihhLGIpe3ZhciBoPWIuYmVmb3JlLGw9Yi5pZFJvb3QsYz1iLm1hcElkVG9Ob2RlW2xdLGU9Yi5wb2ludHNbYS5pXSxCPWUmJmUub3B0aW9uc3x8e30sbT0wLGc9W107ayhhLHtsZXZlbER5bmFtaWM6YS5sZXZlbC0oKCJib29sZWFuIj09PXR5cGVvZiBiLmxldmVsSXNDb25zdGFudD9iLmxldmVsSXNDb25zdGFudDoxKT8wOmMubGV2ZWwpLG5hbWU6cihlJiZlLm5hbWUsIiIpLHZpc2libGU6bD09PQphLmlkfHwoImJvb2xlYW4iPT09dHlwZW9mIGIudmlzaWJsZT9iLnZpc2libGU6ITEpfSk7ImZ1bmN0aW9uIj09PXR5cGVvZiBoJiYoYT1oKGEsYikpO2EuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbihjLGUpe3ZhciBmPWsoe30sYik7ayhmLHtpbmRleDplLHNpYmxpbmdzOmEuY2hpbGRyZW4ubGVuZ3RoLHZpc2libGU6YS52aXNpYmxlfSk7Yz16KGMsZik7Zy5wdXNoKGMpO2MudmlzaWJsZSYmKG0rPWMudmFsKX0pO2EudmlzaWJsZT0wPG18fGEudmlzaWJsZTtoPXIoQi52YWx1ZSxtKTtrKGEse2NoaWxkcmVuOmcsY2hpbGRyZW5Ub3RhbDptLGlzTGVhZjphLnZpc2libGUmJiFtLHZhbDpofSk7cmV0dXJuIGF9LHVwZGF0ZVJvb3RJZDpmdW5jdGlvbihhKXtpZihxKGEpKXt2YXIgYj1xKGEub3B0aW9ucyk/YS5vcHRpb25zOnt9O2I9cihhLnJvb3ROb2RlLGIucm9vdElkLCIiKTtxKGEudXNlck9wdGlvbnMpJiYoYS51c2VyT3B0aW9ucy5yb290SWQ9Yik7YS5yb290Tm9kZT1ifXJldHVybiBifX19KTsKbihiLCJtb2R1bGVzL3NhbmtleS5zcmMuanMiLFtiWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYlsicGFydHMvQ29sb3IuanMiXSxiWyJwYXJ0cy9Qb2ludC5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdLGJbIm1peGlucy90cmVlLXNlcmllcy5qcyJdXSxmdW5jdGlvbihiLGgsayxsLG4pe3ZhciBxPWwuZGVmaW5lZCx1PWwuZmluZCxyPWwuaXNPYmplY3QsZD1sLm1lcmdlLGE9bC5waWNrLHg9bC5yZWxhdGl2ZUxlbmd0aCx6PWwuc2VyaWVzVHlwZSx2PWwuc3RhYmxlU29ydCxLPW4uZ2V0TGV2ZWxPcHRpb25zO3ooInNhbmtleSIsImNvbHVtbiIse2JvcmRlcldpZHRoOjAsY29sb3JCeVBvaW50OiEwLGN1cnZlRmFjdG9yOi4zMyxkYXRhTGFiZWxzOntlbmFibGVkOiEwLGJhY2tncm91bmRDb2xvcjoibm9uZSIsY3JvcDohMSxub2RlRm9ybWF0OnZvaWQgMCxub2RlRm9ybWF0dGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9pbnQubmFtZX0sZm9ybWF0OnZvaWQgMCxmb3JtYXR0ZXI6ZnVuY3Rpb24oKXt9LAppbnNpZGU6ITB9LGluYWN0aXZlT3RoZXJQb2ludHM6ITAsbGlua09wYWNpdHk6LjUsbWluTGlua1dpZHRoOjAsbm9kZVdpZHRoOjIwLG5vZGVQYWRkaW5nOjEwLHNob3dJbkxlZ2VuZDohMSxzdGF0ZXM6e2hvdmVyOntsaW5rT3BhY2l0eToxfSxpbmFjdGl2ZTp7bGlua09wYWNpdHk6LjEsb3BhY2l0eTouMSxhbmltYXRpb246e2R1cmF0aW9uOjUwfX19LHRvb2x0aXA6e2ZvbGxvd1BvaW50ZXI6ITAsaGVhZGVyRm9ybWF0Oic8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB4Ij57c2VyaWVzLm5hbWV9PC9zcGFuPjxici8+Jyxwb2ludEZvcm1hdDoie3BvaW50LmZyb21Ob2RlLm5hbWV9IFx1MjE5MiB7cG9pbnQudG9Ob2RlLm5hbWV9OiA8Yj57cG9pbnQud2VpZ2h0fTwvYj48YnIvPiIsbm9kZUZvcm1hdDoie3BvaW50Lm5hbWV9OiA8Yj57cG9pbnQuc3VtfTwvYj48YnIvPiJ9fSx7aXNDYXJ0ZXNpYW46ITEsaW52ZXJ0YWJsZTohMCxmb3JjZURMOiEwLG9yZGVyTm9kZXM6ITAscG9pbnRBcnJheU1hcDpbImZyb20iLAoidG8iXSxjcmVhdGVOb2RlOmIuTm9kZXNNaXhpbi5jcmVhdGVOb2RlLHNlYXJjaFBvaW50OmIubm9vcCxzZXREYXRhOmIuTm9kZXNNaXhpbi5zZXREYXRhLGRlc3Ryb3k6Yi5Ob2Rlc01peGluLmRlc3Ryb3ksZ2V0Tm9kZVBhZGRpbmc6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnMubm9kZVBhZGRpbmd8fDA7aWYodGhpcy5ub2RlQ29sdW1ucyl7dmFyIGU9dGhpcy5ub2RlQ29sdW1ucy5yZWR1Y2UoZnVuY3Rpb24oYSxjKXtyZXR1cm4gTWF0aC5tYXgoYSxjLmxlbmd0aCl9LDApO2UqYT50aGlzLmNoYXJ0LnBsb3RTaXplWSYmKGE9dGhpcy5jaGFydC5wbG90U2l6ZVkvZSl9cmV0dXJuIGF9LGNyZWF0ZU5vZGVDb2x1bW46ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGU9dGhpcy5jaGFydCxiPVtdO2Iuc3VtPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVkdWNlKGZ1bmN0aW9uKGEsYyl7cmV0dXJuIGErYy5nZXRTdW0oKX0sMCl9O2Iub2Zmc2V0PWZ1bmN0aW9uKGMsZSl7Zm9yKHZhciBkPQowLGYsbT1hLm5vZGVQYWRkaW5nLGc9MDtnPGIubGVuZ3RoO2crKyl7Zj1iW2ddLmdldFN1bSgpO3ZhciBCPU1hdGgubWF4KGYqZSxhLm9wdGlvbnMubWluTGlua1dpZHRoKTtmPWY/QittOjA7aWYoYltnXT09PWMpcmV0dXJue3JlbGF0aXZlVG9wOmQreChjLm9wdGlvbnMub2Zmc2V0fHwwLGYpfTtkKz1mfX07Yi50b3A9ZnVuY3Rpb24oYyl7dmFyIGI9YS5ub2RlUGFkZGluZyxkPXRoaXMucmVkdWNlKGZ1bmN0aW9uKGUsZCl7MDxlJiYoZSs9Yik7ZD1NYXRoLm1heChkLmdldFN1bSgpKmMsYS5vcHRpb25zLm1pbkxpbmtXaWR0aCk7cmV0dXJuIGUrZH0sMCk7cmV0dXJuKGUucGxvdFNpemVZLWQpLzJ9O3JldHVybiBifSxjcmVhdGVOb2RlQ29sdW1uczpmdW5jdGlvbigpe3ZhciBhPVtdO3RoaXMubm9kZXMuZm9yRWFjaChmdW5jdGlvbihjKXt2YXIgYj0tMSxlO2lmKCFxKGMub3B0aW9ucy5jb2x1bW4pKWlmKDA9PT1jLmxpbmtzVG8ubGVuZ3RoKWMuY29sdW1uPTA7ZWxzZXtmb3IoZT0KMDtlPGMubGlua3NUby5sZW5ndGg7ZSsrKXt2YXIgZD1jLmxpbmtzVG9bMF07aWYoZC5mcm9tTm9kZS5jb2x1bW4+Yil7dmFyIGY9ZC5mcm9tTm9kZTtiPWYuY29sdW1ufX1jLmNvbHVtbj1iKzE7ZiYmImhhbmdpbmciPT09Zi5vcHRpb25zLmxheW91dCYmKGMuaGFuZ3NGcm9tPWYsZT0tMSx1KGYubGlua3NGcm9tLGZ1bmN0aW9uKGEsYil7KGE9YS50b05vZGU9PT1jKSYmKGU9Yik7cmV0dXJuIGF9KSxjLmNvbHVtbis9ZSl9YVtjLmNvbHVtbl18fChhW2MuY29sdW1uXT10aGlzLmNyZWF0ZU5vZGVDb2x1bW4oKSk7YVtjLmNvbHVtbl0ucHVzaChjKX0sdGhpcyk7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspInVuZGVmaW5lZCI9PT10eXBlb2YgYVtiXSYmKGFbYl09dGhpcy5jcmVhdGVOb2RlQ29sdW1uKCkpO3JldHVybiBhfSxoYXNEYXRhOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLnByb2Nlc3NlZFhEYXRhLmxlbmd0aH0scG9pbnRBdHRyaWJzOmZ1bmN0aW9uKGMsYil7dmFyIGU9CnRoaXMsZD1lLm1hcE9wdGlvbnNUb0xldmVsWyhjLmlzTm9kZT9jLmxldmVsOmMuZnJvbU5vZGUubGV2ZWwpfHwwXXx8e30sZz1jLm9wdGlvbnMsdz1kLnN0YXRlcyYmZC5zdGF0ZXNbYl18fHt9O2I9WyJjb2xvckJ5UG9pbnQiLCJib3JkZXJDb2xvciIsImJvcmRlcldpZHRoIiwibGlua09wYWNpdHkiXS5yZWR1Y2UoZnVuY3Rpb24oYyxiKXtjW2JdPWEod1tiXSxnW2JdLGRbYl0sZS5vcHRpb25zW2JdKTtyZXR1cm4gY30se30pO3ZhciBmPWEody5jb2xvcixnLmNvbG9yLGIuY29sb3JCeVBvaW50P2MuY29sb3I6ZC5jb2xvcik7cmV0dXJuIGMuaXNOb2RlP3tmaWxsOmYsc3Ryb2tlOmIuYm9yZGVyQ29sb3IsInN0cm9rZS13aWR0aCI6Yi5ib3JkZXJXaWR0aH06e2ZpbGw6aC5wYXJzZShmKS5zZXRPcGFjaXR5KGIubGlua09wYWNpdHkpLmdldCgpfX0sZ2VuZXJhdGVQb2ludHM6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGMsYil7InVuZGVmaW5lZCI9PT10eXBlb2YgYy5sZXZlbCYmKGMubGV2ZWw9CmIsYy5saW5rc0Zyb20uZm9yRWFjaChmdW5jdGlvbihjKXtjLnRvTm9kZSYmYShjLnRvTm9kZSxiKzEpfSkpfWIuTm9kZXNNaXhpbi5nZW5lcmF0ZVBvaW50cy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5vcmRlck5vZGVzJiYodGhpcy5ub2Rlcy5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIDA9PT1hLmxpbmtzVG8ubGVuZ3RofSkuZm9yRWFjaChmdW5jdGlvbihjKXthKGMsMCl9KSx2KHRoaXMubm9kZXMsZnVuY3Rpb24oYSxjKXtyZXR1cm4gYS5sZXZlbC1jLmxldmVsfSkpfSx0cmFuc2xhdGVOb2RlOmZ1bmN0aW9uKGMsYil7dmFyIGU9dGhpcy50cmFuc2xhdGlvbkZhY3RvcixtPXRoaXMuY2hhcnQsZz10aGlzLm9wdGlvbnMsaD1jLmdldFN1bSgpLGY9TWF0aC5tYXgoTWF0aC5yb3VuZChoKmUpLHRoaXMub3B0aW9ucy5taW5MaW5rV2lkdGgpLHA9TWF0aC5yb3VuZChnLmJvcmRlcldpZHRoKSUyLzIsdD1iLm9mZnNldChjLGUpO2I9TWF0aC5mbG9vcihhKHQuYWJzb2x1dGVUb3AsCmIudG9wKGUpK3QucmVsYXRpdmVUb3ApKStwO3A9TWF0aC5mbG9vcih0aGlzLmNvbERpc3RhbmNlKmMuY29sdW1uK2cuYm9yZGVyV2lkdGgvMikrcDtwPW0uaW52ZXJ0ZWQ/bS5wbG90U2l6ZVgtcDpwO2U9TWF0aC5yb3VuZCh0aGlzLm5vZGVXaWR0aCk7KGMuc3VtPWgpPyhjLnNoYXBlVHlwZT0icmVjdCIsYy5ub2RlWD1wLGMubm9kZVk9YixjLnNoYXBlQXJncz1tLmludmVydGVkP3t4OnAtZSx5Om0ucGxvdFNpemVZLWItZix3aWR0aDpjLm9wdGlvbnMuaGVpZ2h0fHxnLmhlaWdodHx8ZSxoZWlnaHQ6Yy5vcHRpb25zLndpZHRofHxnLndpZHRofHxmfTp7eDpwLHk6Yix3aWR0aDpjLm9wdGlvbnMud2lkdGh8fGcud2lkdGh8fGUsaGVpZ2h0OmMub3B0aW9ucy5oZWlnaHR8fGcuaGVpZ2h0fHxmfSxjLnNoYXBlQXJncy5kaXNwbGF5PWMuaGFzU2hhcGUoKT8iIjoibm9uZSIsZz10aGlzLm1hcE9wdGlvbnNUb0xldmVsW2MubGV2ZWxdLGg9Yy5vcHRpb25zLGg9cihoKT9oLmRhdGFMYWJlbHM6Cnt9LGc9cihnKT9nLmRhdGFMYWJlbHM6e30sZz1kKHtzdHlsZTp7fX0sZyxoKSxjLmRsT3B0aW9ucz1nLGMucGxvdFk9MSxjLnRvb2x0aXBQb3M9bS5pbnZlcnRlZD9bbS5wbG90U2l6ZVktYy5zaGFwZUFyZ3MueS1jLnNoYXBlQXJncy5oZWlnaHQvMixtLnBsb3RTaXplWC1jLnNoYXBlQXJncy54LWMuc2hhcGVBcmdzLndpZHRoLzJdOltjLnNoYXBlQXJncy54K2Muc2hhcGVBcmdzLndpZHRoLzIsYy5zaGFwZUFyZ3MueStjLnNoYXBlQXJncy5oZWlnaHQvMl0pOmMuZGxPcHRpb25zPXtlbmFibGVkOiExfX0sdHJhbnNsYXRlTGluazpmdW5jdGlvbihhKXt2YXIgYj1mdW5jdGlvbihiLGMpe3ZhciBkO2M9Yi5vZmZzZXQoYSxjKSpoO3JldHVybiBNYXRoLm1pbihiLm5vZGVZK2MsYi5ub2RlWSsobnVsbD09PShkPWIuc2hhcGVBcmdzKXx8dm9pZCAwPT09ZD92b2lkIDA6ZC5oZWlnaHQpLWYpfSxjPWEuZnJvbU5vZGUsZD1hLnRvTm9kZSxnPXRoaXMuY2hhcnQsaD10aGlzLnRyYW5zbGF0aW9uRmFjdG9yLApmPU1hdGgubWF4KGEud2VpZ2h0KmgsdGhpcy5vcHRpb25zLm1pbkxpbmtXaWR0aCkscD0oZy5pbnZlcnRlZD8tdGhpcy5jb2xEaXN0YW5jZTp0aGlzLmNvbERpc3RhbmNlKSp0aGlzLm9wdGlvbnMuY3VydmVGYWN0b3IsdD1iKGMsImxpbmtzRnJvbSIpO2I9YihkLCJsaW5rc1RvIik7dmFyIGw9Yy5ub2RlWCxrPXRoaXMubm9kZVdpZHRoO2Q9ZC5jb2x1bW4qdGhpcy5jb2xEaXN0YW5jZTt2YXIgbj1hLm91dGdvaW5nLHE9ZD5sK2s7Zy5pbnZlcnRlZCYmKHQ9Zy5wbG90U2l6ZVktdCxiPShnLnBsb3RTaXplWXx8MCktYixkPWcucGxvdFNpemVYLWQsaz0tayxmPS1mLHE9bD5kKTthLnNoYXBlVHlwZT0icGF0aCI7YS5saW5rQmFzZT1bdCx0K2YsYixiK2ZdO2lmKHEmJiJudW1iZXIiPT09dHlwZW9mIGIpYS5zaGFwZUFyZ3M9e2Q6W1siTSIsbCtrLHRdLFsiQyIsbCtrK3AsdCxkLXAsYixkLGJdLFsiTCIsZCsobj9rOjApLGIrZi8yXSxbIkwiLGQsYitmXSxbIkMiLGQtcCxiK2YsbCtrK3AsCnQrZixsK2ssdCtmXSxbIloiXV19O2Vsc2UgaWYoIm51bWJlciI9PT10eXBlb2YgYil7cD1kLTIwLWY7bj1kLTIwO3E9ZDt2YXIgcj1sK2ssQT1yKzIwLHU9QStmLHg9dCx2PXQrZix6PXYrMjAsQz16KyhnLnBsb3RIZWlnaHQtdC1mKSx5PUMrMjAsRT15K2YsRj1iLEQ9RitmLEc9RCsyMCxIPXkrLjcqZixJPXEtLjcqZixKPXIrLjcqZjthLnNoYXBlQXJncz17ZDpbWyJNIixyLHhdLFsiQyIsSix4LHUsdi0uNypmLHUsel0sWyJMIix1LENdLFsiQyIsdSxILEosRSxyLEVdLFsiTCIscSxFXSxbIkMiLEksRSxwLEgscCxDXSxbIkwiLHAsR10sWyJDIixwLEQtLjcqZixJLEYscSxGXSxbIkwiLHEsRF0sWyJDIixuLEQsbixELG4sR10sWyJMIixuLENdLFsiQyIsbix5LG4seSxxLHldLFsiTCIscix5XSxbIkMiLEEseSxBLHksQSxDXSxbIkwiLEEsel0sWyJDIixBLHYsQSx2LHIsdl0sWyJaIl1dfX1hLmRsQm94PXt4OmwrKGQtbCtrKS8yLHk6dCsoYi10KS8yLGhlaWdodDpmLHdpZHRoOjB9OwphLnRvb2x0aXBQb3M9Zy5pbnZlcnRlZD9bZy5wbG90U2l6ZVktYS5kbEJveC55LWYvMixnLnBsb3RTaXplWC1hLmRsQm94LnhdOlthLmRsQm94LngsYS5kbEJveC55K2YvMl07YS55PWEucGxvdFk9MTthLmNvbG9yfHwoYS5jb2xvcj1jLmNvbG9yKX0sdHJhbnNsYXRlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPWZ1bmN0aW9uKGIpe2Zvcih2YXIgYz1iLnNsaWNlKCksZT1hLm9wdGlvbnMubWluTGlua1dpZHRofHwwLGYsaz0wLGwscD1oLnBsb3RTaXplWS1nLmJvcmRlcldpZHRoLShiLmxlbmd0aC0xKSpkLm5vZGVQYWRkaW5nO2IubGVuZ3RoOyl7az1wL2Iuc3VtKCk7Zj0hMTtmb3IobD1iLmxlbmd0aDtsLS07KWJbbF0uZ2V0U3VtKCkqazxlJiYoYi5zcGxpY2UobCwxKSxwLT1lLGY9ITApO2lmKCFmKWJyZWFrfWIubGVuZ3RoPTA7Yy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3JldHVybiBiLnB1c2goYSl9KTtyZXR1cm4ga307dGhpcy5wcm9jZXNzZWRYRGF0YXx8dGhpcy5wcm9jZXNzRGF0YSgpOwp0aGlzLmdlbmVyYXRlUG9pbnRzKCk7dGhpcy5ub2RlQ29sdW1ucz10aGlzLmNyZWF0ZU5vZGVDb2x1bW5zKCk7dGhpcy5ub2RlV2lkdGg9eCh0aGlzLm9wdGlvbnMubm9kZVdpZHRoLHRoaXMuY2hhcnQucGxvdFNpemVYKTt2YXIgZD10aGlzLGg9dGhpcy5jaGFydCxnPXRoaXMub3B0aW9ucyxrPXRoaXMubm9kZVdpZHRoLGY9dGhpcy5ub2RlQ29sdW1uczt0aGlzLm5vZGVQYWRkaW5nPXRoaXMuZ2V0Tm9kZVBhZGRpbmcoKTt0aGlzLnRyYW5zbGF0aW9uRmFjdG9yPWYucmVkdWNlKGZ1bmN0aW9uKGEsYyl7cmV0dXJuIE1hdGgubWluKGEsYihjKSl9LEluZmluaXR5KTt0aGlzLmNvbERpc3RhbmNlPShoLnBsb3RTaXplWC1rLWcuYm9yZGVyV2lkdGgpL01hdGgubWF4KDEsZi5sZW5ndGgtMSk7ZC5tYXBPcHRpb25zVG9MZXZlbD1LKHtmcm9tOjEsbGV2ZWxzOmcubGV2ZWxzLHRvOmYubGVuZ3RoLTEsZGVmYXVsdHM6e2JvcmRlckNvbG9yOmcuYm9yZGVyQ29sb3IsYm9yZGVyUmFkaXVzOmcuYm9yZGVyUmFkaXVzLApib3JkZXJXaWR0aDpnLmJvcmRlcldpZHRoLGNvbG9yOmQuY29sb3IsY29sb3JCeVBvaW50OmcuY29sb3JCeVBvaW50LGxldmVsSXNDb25zdGFudDohMCxsaW5rQ29sb3I6Zy5saW5rQ29sb3IsbGlua0xpbmVXaWR0aDpnLmxpbmtMaW5lV2lkdGgsbGlua09wYWNpdHk6Zy5saW5rT3BhY2l0eSxzdGF0ZXM6Zy5zdGF0ZXN9fSk7Zi5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuZm9yRWFjaChmdW5jdGlvbihiKXtkLnRyYW5zbGF0ZU5vZGUoYixhKX0pfSx0aGlzKTt0aGlzLm5vZGVzLmZvckVhY2goZnVuY3Rpb24oYSl7YS5saW5rc0Zyb20uZm9yRWFjaChmdW5jdGlvbihhKXsoYS53ZWlnaHR8fGEuaXNOdWxsKSYmYS50byYmKGQudHJhbnNsYXRlTGluayhhKSxhLmFsbG93U2hhZG93PSExKX0pfSl9LHJlbmRlcjpmdW5jdGlvbigpe3ZhciBhPXRoaXMucG9pbnRzO3RoaXMucG9pbnRzPXRoaXMucG9pbnRzLmNvbmNhdCh0aGlzLm5vZGVzfHxbXSk7Yi5zZXJpZXNUeXBlcy5jb2x1bW4ucHJvdG90eXBlLnJlbmRlci5jYWxsKHRoaXMpOwp0aGlzLnBvaW50cz1hfSxhbmltYXRlOmIuU2VyaWVzLnByb3RvdHlwZS5hbmltYXRlfSx7YXBwbHlPcHRpb25zOmZ1bmN0aW9uKGEsYil7ay5wcm90b3R5cGUuYXBwbHlPcHRpb25zLmNhbGwodGhpcyxhLGIpO3EodGhpcy5vcHRpb25zLmxldmVsKSYmKHRoaXMub3B0aW9ucy5jb2x1bW49dGhpcy5jb2x1bW49dGhpcy5vcHRpb25zLmxldmVsKTtyZXR1cm4gdGhpc30sc2V0U3RhdGU6Yi5Ob2Rlc01peGluLnNldE5vZGVTdGF0ZSxnZXRDbGFzc05hbWU6ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5pc05vZGU/ImhpZ2hjaGFydHMtbm9kZSAiOiJoaWdoY2hhcnRzLWxpbmsgIikray5wcm90b3R5cGUuZ2V0Q2xhc3NOYW1lLmNhbGwodGhpcyl9LGlzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc05vZGV8fCJudW1iZXIiPT09dHlwZW9mIHRoaXMud2VpZ2h0fX0pOyIifSk7bihiLCJtYXN0ZXJzL21vZHVsZXMvc2Fua2V5LnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1zYW5rZXkuanMubWFw"></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIERlcGVuZGVuY3kgd2hlZWwgbW9kdWxlCgogKGMpIDIwMTAtMjAxOCBUb3JzdGVpbiBIb25zaQoKIExpY2Vuc2U6IHd3dy5oaWdoY2hhcnRzLmNvbS9saWNlbnNlCiovCihmdW5jdGlvbihhKXsib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzPyhhWyJkZWZhdWx0Il09YSxtb2R1bGUuZXhwb3J0cz1hKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoImhpZ2hjaGFydHMvbW9kdWxlcy9kZXBlbmRlbmN5LXdoZWVsIixbImhpZ2hjaGFydHMiLCJoaWdoY2hhcnRzL21vZHVsZXMvc2Fua2V5Il0sZnVuY3Rpb24oZCl7YShkKTthLkhpZ2hjaGFydHM9ZDtyZXR1cm4gYX0pOmEoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihhKXtmdW5jdGlvbiBkKGEsZixkLGwpe2EuaGFzT3duUHJvcGVydHkoZil8fChhW2ZdPWwuYXBwbHkobnVsbCxkKSl9YT1hP2EuX21vZHVsZXM6e307ZChhLCJtb2R1bGVzL2RlcGVuZGVuY3ktd2hlZWwuc3JjLmpzIixbYVsicGFydHMvR2xvYmFscy5qcyJdLGFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihhLApkKXt2YXIgZj1kLmFuaW1PYmplY3Q7ZD1kLnNlcmllc1R5cGU7dmFyIGw9YS5zZXJpZXNUeXBlcy5zYW5rZXkucHJvdG90eXBlO2QoImRlcGVuZGVuY3l3aGVlbCIsInNhbmtleSIse2NlbnRlcjpbbnVsbCxudWxsXSxjdXJ2ZUZhY3RvcjouNixzdGFydEFuZ2xlOjB9LHtvcmRlck5vZGVzOiExLGdldENlbnRlcjphLnNlcmllc1R5cGVzLnBpZS5wcm90b3R5cGUuZ2V0Q2VudGVyLGNyZWF0ZU5vZGVDb2x1bW5zOmZ1bmN0aW9uKCl7dmFyIGE9W3RoaXMuY3JlYXRlTm9kZUNvbHVtbigpXTt0aGlzLm5vZGVzLmZvckVhY2goZnVuY3Rpb24oYyl7Yy5jb2x1bW49MDthWzBdLnB1c2goYyl9KTtyZXR1cm4gYX0sZ2V0Tm9kZVBhZGRpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLm5vZGVQYWRkaW5nL01hdGguUEl9LGNyZWF0ZU5vZGU6ZnVuY3Rpb24oYSl7dmFyIGM9bC5jcmVhdGVOb2RlLmNhbGwodGhpcyxhKTtjLmluZGV4PXRoaXMubm9kZXMubGVuZ3RoLTE7Yy5nZXRTdW09CmZ1bmN0aW9uKCl7cmV0dXJuIGMubGlua3NGcm9tLmNvbmNhdChjLmxpbmtzVG8pLnJlZHVjZShmdW5jdGlvbihhLGMpe3JldHVybiBhK2Mud2VpZ2h0fSwwKX07Yy5vZmZzZXQ9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gaChhKXtyZXR1cm4gYS5mcm9tTm9kZT09PWM/YS50b05vZGU6YS5mcm9tTm9kZX12YXIgcD0wLGIsZz1jLmxpbmtzRnJvbS5jb25jYXQoYy5saW5rc1RvKTtnLnNvcnQoZnVuY3Rpb24oYSxjKXtyZXR1cm4gaChhKS5pbmRleC1oKGMpLmluZGV4fSk7Zm9yKGI9MDtiPGcubGVuZ3RoO2IrKylpZihoKGdbYl0pLmluZGV4PmMuaW5kZXgpe2c9Zy5zbGljZSgwLGIpLnJldmVyc2UoKS5jb25jYXQoZy5zbGljZShiKS5yZXZlcnNlKCkpO3ZhciBuPSEwO2JyZWFrfW58fGcucmV2ZXJzZSgpO2ZvcihiPTA7YjxnLmxlbmd0aDtiKyspe2lmKGdbYl09PT1hKXJldHVybiBwO3ArPWdbYl0ud2VpZ2h0fX07cmV0dXJuIGN9LHRyYW5zbGF0ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMub3B0aW9ucywKYz0yKk1hdGguUEkvKHRoaXMuY2hhcnQucGxvdEhlaWdodCt0aGlzLmdldE5vZGVQYWRkaW5nKCkpLG49dGhpcy5nZXRDZW50ZXIoKSxoPShkLnN0YXJ0QW5nbGUtOTApKmEuZGVnMnJhZDtsLnRyYW5zbGF0ZS5jYWxsKHRoaXMpO3RoaXMubm9kZUNvbHVtbnNbMF0uZm9yRWFjaChmdW5jdGlvbihhKXtpZihhLnN1bSl7dmFyIGI9YS5zaGFwZUFyZ3MsZz1uWzBdLHA9blsxXSxmPW5bMl0vMixrPWYtZC5ub2RlV2lkdGgsbT1oK2MqYi55O2I9aCtjKihiLnkrYi5oZWlnaHQpO2EuYW5nbGU9bSsoYi1tKS8yO2Euc2hhcGVUeXBlPSJhcmMiO2Euc2hhcGVBcmdzPXt4OmcseTpwLHI6Zixpbm5lclI6ayxzdGFydDptLGVuZDpifTthLmRsQm94PXt4OmcrTWF0aC5jb3MoKG0rYikvMikqKGYraykvMix5OnArTWF0aC5zaW4oKG0rYikvMikqKGYraykvMix3aWR0aDoxLGhlaWdodDoxfTthLmxpbmtzRnJvbS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2lmKGEubGlua0Jhc2Upe3ZhciBiLGU9YS5saW5rQmFzZS5tYXAoZnVuY3Rpb24oZSwKbil7ZSo9Yzt2YXIgZj1NYXRoLmNvcyhoK2UpKihrKzEpLG09TWF0aC5zaW4oaCtlKSooaysxKSxsPWQuY3VydmVGYWN0b3I7Yj1NYXRoLmFicyhhLmxpbmtCYXNlWzMtbl0qYy1lKTtiPk1hdGguUEkmJihiPTIqTWF0aC5QSS1iKTtiKj1rO2I8ayYmKGwqPWIvayk7cmV0dXJue3g6ZytmLHk6cCttLGNwWDpnKygxLWwpKmYsY3BZOnArKDEtbCkqbX19KTthLnNoYXBlQXJncz17ZDpbWyJNIixlWzBdLngsZVswXS55XSxbIkEiLGssaywwLDAsMSxlWzFdLngsZVsxXS55XSxbIkMiLGVbMV0uY3BYLGVbMV0uY3BZLGVbMl0uY3BYLGVbMl0uY3BZLGVbMl0ueCxlWzJdLnldLFsiQSIsayxrLDAsMCwxLGVbM10ueCxlWzNdLnldLFsiQyIsZVszXS5jcFgsZVszXS5jcFksZVswXS5jcFgsZVswXS5jcFksZVswXS54LGVbMF0ueV1dfX19KX19KX0sYW5pbWF0ZTpmdW5jdGlvbihhKXtpZighYSl7dmFyIGM9Zih0aGlzLm9wdGlvbnMuYW5pbWF0aW9uKS5kdXJhdGlvbi8yL3RoaXMubm9kZXMubGVuZ3RoOwp0aGlzLm5vZGVzLmZvckVhY2goZnVuY3Rpb24oYSxoKXt2YXIgZD1hLmdyYXBoaWM7ZCYmKGQuYXR0cih7b3BhY2l0eTowfSksc2V0VGltZW91dChmdW5jdGlvbigpe2QuYW5pbWF0ZSh7b3BhY2l0eToxfSx7ZHVyYXRpb246Y30pfSxjKmgpKX0sdGhpcyk7dGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYz1hLmdyYXBoaWM7IWEuaXNOb2RlJiZjJiZjLmF0dHIoe29wYWNpdHk6MH0pLmFuaW1hdGUoe29wYWNpdHk6MX0sdGhpcy5vcHRpb25zLmFuaW1hdGlvbil9LHRoaXMpfX19LHtzZXRTdGF0ZTphLk5vZGVzTWl4aW4uc2V0Tm9kZVN0YXRlLGdldERhdGFMYWJlbFBhdGg6ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5zZXJpZXMuY2hhcnQucmVuZGVyZXIsZD10aGlzLnNoYXBlQXJncyxoPTA+dGhpcy5hbmdsZXx8dGhpcy5hbmdsZT5NYXRoLlBJLGY9ZC5zdGFydCxiPWQuZW5kO3RoaXMuZGF0YUxhYmVsUGF0aHx8KHRoaXMuZGF0YUxhYmVsUGF0aD1jLmFyYyh7b3BlbjohMH0pLmFkZChhKSk7CnRoaXMuZGF0YUxhYmVsUGF0aC5hdHRyKHt4OmQueCx5OmQueSxyOmQucisodGhpcy5kYXRhTGFiZWwub3B0aW9ucy5kaXN0YW5jZXx8MCksc3RhcnQ6aD9mOmIsZW5kOmg/YjpmLGNsb2Nrd2lzZToraH0pO3JldHVybiB0aGlzLmRhdGFMYWJlbFBhdGh9LGlzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH19KTsiIn0pO2QoYSwibWFzdGVycy9tb2R1bGVzL2RlcGVuZGVuY3ktd2hlZWwuc3JjLmpzIixbXSxmdW5jdGlvbigpe30pfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWRlcGVuZGVuY3ktd2hlZWwuanMubWFw"></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQogT3JnYW5pemF0aW9uIGNoYXJ0IHNlcmllcyB0eXBlCgogKGMpIDIwMTktMjAxOSBUb3JzdGVpbiBIb25zaQoKIExpY2Vuc2U6IHd3dy5oaWdoY2hhcnRzLmNvbS9saWNlbnNlCiovCihmdW5jdGlvbihiKXsib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzPyhiWyJkZWZhdWx0Il09Yixtb2R1bGUuZXhwb3J0cz1iKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoImhpZ2hjaGFydHMvbW9kdWxlcy9vcmdhbml6YXRpb24iLFsiaGlnaGNoYXJ0cyIsImhpZ2hjaGFydHMvbW9kdWxlcy9zYW5rZXkiXSxmdW5jdGlvbihmKXtiKGYpO2IuSGlnaGNoYXJ0cz1mO3JldHVybiBifSk6YigidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGYoYixtLGYscil7Yi5oYXNPd25Qcm9wZXJ0eShtKXx8KGJbbV09ci5hcHBseShudWxsLGYpKX1iPWI/Yi5fbW9kdWxlczp7fTtmKGIsIm1vZHVsZXMvb3JnYW5pemF0aW9uLnNyYy5qcyIsW2JbInBhcnRzL0dsb2JhbHMuanMiXSxiWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYixmKXt2YXIgbT0KZi5jc3Mscj1mLnBpY2ssdT1mLnNlcmllc1R5cGUsdj1mLndyYXAscT1iLnNlcmllc1R5cGVzLnNhbmtleS5wcm90b3R5cGU7dSgib3JnYW5pemF0aW9uIiwic2Fua2V5Iix7Ym9yZGVyQ29sb3I6IiM2NjY2NjYiLGJvcmRlclJhZGl1czozLGxpbmtSYWRpdXM6MTAsYm9yZGVyV2lkdGg6MSxkYXRhTGFiZWxzOntub2RlRm9ybWF0dGVyOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhKXtyZXR1cm4gT2JqZWN0LmtleXMoYSkucmVkdWNlKGZ1bmN0aW9uKGMsZCl7cmV0dXJuIGMrZCsiOiIrYVtkXSsiOyJ9LCdzdHlsZT0iJykrJyInfXZhciBjPXt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixkaXNwbGF5OiJmbGV4IiwiZmxleC1kaXJlY3Rpb24iOiJyb3ciLCJhbGlnbi1pdGVtcyI6ImNlbnRlciIsImp1c3RpZnktY29udGVudCI6ImNlbnRlciJ9LGc9eyJtYXgtaGVpZ2h0IjoiMTAwJSIsImJvcmRlci1yYWRpdXMiOiI1MCUifSxkPXt3aWR0aDoiMTAwJSIscGFkZGluZzowLCJ0ZXh0LWFsaWduIjoiY2VudGVyIiwKIndoaXRlLXNwYWNlIjoibm9ybWFsIn0sZT17bWFyZ2luOjB9LHQ9e21hcmdpbjowfSxiPXtvcGFjaXR5Oi43NSxtYXJnaW46IjVweCJ9O3RoaXMucG9pbnQuaW1hZ2UmJihnWyJtYXgtd2lkdGgiXT0iMzAlIixkLndpZHRoPSI3MCUiKTt0aGlzLnNlcmllcy5jaGFydC5yZW5kZXJlci5mb3JFeHBvcnQmJihjLmRpc3BsYXk9ImJsb2NrIixkLnBvc2l0aW9uPSJhYnNvbHV0ZSIsZC5sZWZ0PXRoaXMucG9pbnQuaW1hZ2U/IjMwJSI6MCxkLnRvcD0wKTtjPSI8ZGl2ICIrYShjKSsiPiI7dGhpcy5wb2ludC5pbWFnZSYmKGMrPSc8aW1nIHNyYz0iJyt0aGlzLnBvaW50LmltYWdlKyciICcrYShnKSsiPiIpO2MrPSI8ZGl2ICIrYShkKSsiPiI7dGhpcy5wb2ludC5uYW1lJiYoYys9IjxoNCAiK2EoZSkrIj4iK3RoaXMucG9pbnQubmFtZSsiPC9oND4iKTt0aGlzLnBvaW50LnRpdGxlJiYoYys9IjxwICIrYSh0KSsiPiIrKHRoaXMucG9pbnQudGl0bGV8fCIiKSsiPC9wPiIpO3RoaXMucG9pbnQuZGVzY3JpcHRpb24mJgooYys9IjxwICIrYShiKSsiPiIrdGhpcy5wb2ludC5kZXNjcmlwdGlvbisiPC9wPiIpO3JldHVybiBjKyI8L2Rpdj48L2Rpdj4ifSxzdHlsZTp7Zm9udFdlaWdodDoibm9ybWFsIixmb250U2l6ZToiMTNweCJ9LHVzZUhUTUw6ITB9LGhhbmdpbmdJbmRlbnQ6MjAsbGlua0NvbG9yOiIjNjY2NjY2IixsaW5rTGluZVdpZHRoOjEsbm9kZVdpZHRoOjUwLHRvb2x0aXA6e25vZGVGb3JtYXQ6Intwb2ludC5uYW1lfTxicj57cG9pbnQudGl0bGV9PGJyPntwb2ludC5kZXNjcmlwdGlvbn0ifX0se3BvaW50QXR0cmliczpmdW5jdGlvbihhLGMpe3ZhciBnPXRoaXMsZD1xLnBvaW50QXR0cmlicy5jYWxsKGcsYSxjKSxlPWcubWFwT3B0aW9uc1RvTGV2ZWxbKGEuaXNOb2RlP2EubGV2ZWw6YS5mcm9tTm9kZS5sZXZlbCl8fDBdfHx7fSx0PWEub3B0aW9ucyxiPWUuc3RhdGVzJiZlLnN0YXRlc1tjXXx8e307Yz1bImJvcmRlclJhZGl1cyIsImxpbmtDb2xvciIsImxpbmtMaW5lV2lkdGgiXS5yZWR1Y2UoZnVuY3Rpb24oYSwKYyl7YVtjXT1yKGJbY10sdFtjXSxlW2NdLGcub3B0aW9uc1tjXSk7cmV0dXJuIGF9LHt9KTthLmlzTm9kZT9jLmJvcmRlclJhZGl1cyYmKGQucj1jLmJvcmRlclJhZGl1cyk6KGQuc3Ryb2tlPWMubGlua0NvbG9yLGRbInN0cm9rZS13aWR0aCJdPWMubGlua0xpbmVXaWR0aCxkZWxldGUgZC5maWxsKTtyZXR1cm4gZH0sY3JlYXRlTm9kZTpmdW5jdGlvbihhKXthPXEuY3JlYXRlTm9kZS5jYWxsKHRoaXMsYSk7YS5nZXRTdW09ZnVuY3Rpb24oKXtyZXR1cm4gMX07cmV0dXJuIGF9LGNyZWF0ZU5vZGVDb2x1bW46ZnVuY3Rpb24oKXt2YXIgYT1xLmNyZWF0ZU5vZGVDb2x1bW4uY2FsbCh0aGlzKTt2KGEsIm9mZnNldCIsZnVuY3Rpb24oYSxnLGQpe2E9YS5jYWxsKHRoaXMsZyxkKTtyZXR1cm4gZy5oYW5nc0Zyb20/e2Fic29sdXRlVG9wOmcuaGFuZ3NGcm9tLm5vZGVZfTphfSk7cmV0dXJuIGF9LHRyYW5zbGF0ZU5vZGU6ZnVuY3Rpb24oYSxjKXtxLnRyYW5zbGF0ZU5vZGUuY2FsbCh0aGlzLAphLGMpO2EuaGFuZ3NGcm9tJiYoYS5zaGFwZUFyZ3MuaGVpZ2h0LT10aGlzLm9wdGlvbnMuaGFuZ2luZ0luZGVudCx0aGlzLmNoYXJ0LmludmVydGVkfHwoYS5zaGFwZUFyZ3MueSs9dGhpcy5vcHRpb25zLmhhbmdpbmdJbmRlbnQpKTthLm5vZGVIZWlnaHQ9dGhpcy5jaGFydC5pbnZlcnRlZD9hLnNoYXBlQXJncy53aWR0aDphLnNoYXBlQXJncy5oZWlnaHR9LGN1cnZlZFBhdGg6ZnVuY3Rpb24oYSxjKXtmb3IodmFyIGc9W10sZD0wO2Q8YS5sZW5ndGg7ZCsrKXt2YXIgZT1hW2RdWzFdLGI9YVtkXVsyXTtpZigibnVtYmVyIj09PXR5cGVvZiBlJiYibnVtYmVyIj09PXR5cGVvZiBiKWlmKDA9PT1kKWcucHVzaChbIk0iLGUsYl0pO2Vsc2UgaWYoZD09PWEubGVuZ3RoLTEpZy5wdXNoKFsiTCIsZSxiXSk7ZWxzZSBpZihjKXt2YXIgaD1hW2QtMV0saz1hW2QrMV07aWYoaCYmayl7dmFyIGY9aFsxXTtoPWhbMl07dmFyIGw9a1sxXTtrPWtbMl07aWYoIm51bWJlciI9PT10eXBlb2YgZiYmIm51bWJlciI9PT0KdHlwZW9mIGwmJiJudW1iZXIiPT09dHlwZW9mIGgmJiJudW1iZXIiPT09dHlwZW9mIGsmJmYhPT1sJiZoIT09ayl7dmFyIG49ZjxsPzE6LTEscD1oPGs/MTotMTtnLnB1c2goWyJMIixlLW4qTWF0aC5taW4oTWF0aC5hYnMoZS1mKSxjKSxiLXAqTWF0aC5taW4oTWF0aC5hYnMoYi1oKSxjKV0sWyJDIixlLGIsZSxiLGUrbipNYXRoLm1pbihNYXRoLmFicyhlLWwpLGMpLGIrcCpNYXRoLm1pbihNYXRoLmFicyhiLWspLGMpXSl9fX1lbHNlIGcucHVzaChbIkwiLGUsYl0pfXJldHVybiBnfSx0cmFuc2xhdGVMaW5rOmZ1bmN0aW9uKGEpe3ZhciBjPWEuZnJvbU5vZGUsYj1hLnRvTm9kZSxkPU1hdGgucm91bmQodGhpcy5vcHRpb25zLmxpbmtMaW5lV2lkdGgpJTIvMixlPU1hdGguZmxvb3IoYy5zaGFwZUFyZ3MueCtjLnNoYXBlQXJncy53aWR0aCkrZCxmPU1hdGguZmxvb3IoYy5zaGFwZUFyZ3MueStjLnNoYXBlQXJncy5oZWlnaHQvMikrZCxoPU1hdGguZmxvb3IoYi5zaGFwZUFyZ3MueCkrCmQsaz1NYXRoLmZsb29yKGIuc2hhcGVBcmdzLnkrYi5zaGFwZUFyZ3MuaGVpZ2h0LzIpK2QsbT10aGlzLm9wdGlvbnMuaGFuZ2luZ0luZGVudDt2YXIgbD1iLm9wdGlvbnMub2Zmc2V0O3ZhciBuPS8lJC8udGVzdChsKSYmcGFyc2VJbnQobCwxMCkscD10aGlzLmNoYXJ0LmludmVydGVkO3AmJihlLT1jLnNoYXBlQXJncy53aWR0aCxoKz1iLnNoYXBlQXJncy53aWR0aCk7bD1NYXRoLmZsb29yKGgrKHA/MTotMSkqKHRoaXMuY29sRGlzdGFuY2UtdGhpcy5ub2RlV2lkdGgpLzIpK2Q7biYmKDUwPD1ufHwtNTA+PW4pJiYobD1oPU1hdGguZmxvb3IoaCsocD8tLjU6LjUpKmIuc2hhcGVBcmdzLndpZHRoKStkLGs9Yi5zaGFwZUFyZ3MueSwwPG4mJihrKz1iLnNoYXBlQXJncy5oZWlnaHQpKTtiLmhhbmdzRnJvbT09PWMmJih0aGlzLmNoYXJ0LmludmVydGVkPyhmPU1hdGguZmxvb3IoYy5zaGFwZUFyZ3MueStjLnNoYXBlQXJncy5oZWlnaHQtbS8yKStkLGs9Yi5zaGFwZUFyZ3MueStiLnNoYXBlQXJncy5oZWlnaHQpOgpmPU1hdGguZmxvb3IoYy5zaGFwZUFyZ3MueSttLzIpK2QsbD1oPU1hdGguZmxvb3IoYi5zaGFwZUFyZ3MueCtiLnNoYXBlQXJncy53aWR0aC8yKStkKTthLnBsb3RZPTE7YS5zaGFwZVR5cGU9InBhdGgiO2Euc2hhcGVBcmdzPXtkOnRoaXMuY3VydmVkUGF0aChbWyJNIixlLGZdLFsiTCIsbCxmXSxbIkwiLGwsa10sWyJMIixoLGtdXSx0aGlzLm9wdGlvbnMubGlua1JhZGl1cyl9fSxhbGlnbkRhdGFMYWJlbDpmdW5jdGlvbihhLGMsZil7aWYoZi51c2VIVE1MKXt2YXIgZD1hLnNoYXBlQXJncy53aWR0aCxlPWEuc2hhcGVBcmdzLmhlaWdodCxnPXRoaXMub3B0aW9ucy5ib3JkZXJXaWR0aCsyKnRoaXMub3B0aW9ucy5kYXRhTGFiZWxzLnBhZGRpbmc7dGhpcy5jaGFydC5pbnZlcnRlZCYmKGQ9ZSxlPWEuc2hhcGVBcmdzLndpZHRoKTtlLT1nO2QtPWc7aWYoZz1jLnRleHQpbShnLmVsZW1lbnQucGFyZW50Tm9kZSx7d2lkdGg6ZCsicHgiLGhlaWdodDplKyJweCJ9KSxtKGcuZWxlbWVudCwKe2xlZnQ6MCx0b3A6MCx3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixvdmVyZmxvdzoiaGlkZGVuIn0pO2MuZ2V0QkJveD1mdW5jdGlvbigpe3JldHVybnt3aWR0aDpkLGhlaWdodDplfX07Yy53aWR0aD1kO2MuaGVpZ2h0PWV9Yi5zZXJpZXNUeXBlcy5jb2x1bW4ucHJvdG90eXBlLmFsaWduRGF0YUxhYmVsLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KTsiIn0pO2YoYiwibWFzdGVycy9tb2R1bGVzL29yZ2FuaXphdGlvbi5zcmMuanMiLFtdLGZ1bmN0aW9uKCl7fSl9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9b3JnYW5pemF0aW9uLmpzLm1hcA=="></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIFNvbGlkIGFuZ3VsYXIgZ2F1Z2UgbW9kdWxlCgogKGMpIDIwMTAtMjAxOSBUb3JzdGVpbiBIb25zaQoKIExpY2Vuc2U6IHd3dy5oaWdoY2hhcnRzLmNvbS9saWNlbnNlCiovCihmdW5jdGlvbihhKXsib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzPyhhWyJkZWZhdWx0Il09YSxtb2R1bGUuZXhwb3J0cz1hKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoImhpZ2hjaGFydHMvbW9kdWxlcy9zb2xpZC1nYXVnZSIsWyJoaWdoY2hhcnRzIiwiaGlnaGNoYXJ0cy9oaWdoY2hhcnRzLW1vcmUiXSxmdW5jdGlvbihnKXthKGcpO2EuSGlnaGNoYXJ0cz1nO3JldHVybiBhfSk6YSgidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGcoYSxyLGcsYyl7YS5oYXNPd25Qcm9wZXJ0eShyKXx8KGFbcl09Yy5hcHBseShudWxsLGcpKX1hPWE/YS5fbW9kdWxlczp7fTtnKGEsIm1vZHVsZXMvc29saWQtZ2F1Z2Uuc3JjLmpzIixbYVsicGFydHMvQ29sb3IuanMiXSxhWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYVsibWl4aW5zL2xlZ2VuZC1zeW1ib2wuanMiXSwKYVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGEsZyx4LGMpe3ZhciBrPWEucGFyc2Uscj1jLmNsYW1wLHU9Yy5leHRlbmQsdj1jLmlzTnVtYmVyLHk9Yy5tZXJnZSx0PWMucGljayx3PWMucEludDthPWMuc2VyaWVzVHlwZTtjPWMud3JhcDtjKGcuUmVuZGVyZXIucHJvdG90eXBlLnN5bWJvbHMsImFyYyIsZnVuY3Rpb24oZSxhLGwsYix6LGQpe2U9ZShhLGwsYix6LGQpO2Qucm91bmRlZCYmKGI9KChkLnJ8fGIpLShkLmlubmVyUnx8MCkpLzIsYT1lWzBdLGQ9ZVsyXSwiTSI9PT1hWzBdJiYiTCI9PT1kWzBdJiYoYT1bIkEiLGIsYiwwLDEsMSxhWzFdLGFbMl1dLGVbMl09WyJBIixiLGIsMCwxLDEsZFsxXSxkWzJdXSxlWzRdPWEpKTtyZXR1cm4gZX0pO3ZhciBtOyhmdW5jdGlvbihhKXt2YXIgZT17aW5pdERhdGFDbGFzc2VzOmZ1bmN0aW9uKGEpe3ZhciBlPXRoaXMuY2hhcnQsbCxkPTAsaD10aGlzLm9wdGlvbnM7dGhpcy5kYXRhQ2xhc3Nlcz1sPVtdO2EuZGF0YUNsYXNzZXMuZm9yRWFjaChmdW5jdGlvbihiLApmKXtiPXkoYik7bC5wdXNoKGIpO2IuY29sb3J8fCgiY2F0ZWdvcnkiPT09aC5kYXRhQ2xhc3NDb2xvcj8oZj1lLm9wdGlvbnMuY29sb3JzLGIuY29sb3I9ZltkKytdLGQ9PT1mLmxlbmd0aCYmKGQ9MCkpOmIuY29sb3I9ayhoLm1pbkNvbG9yKS50d2VlblRvKGsoaC5tYXhDb2xvciksZi8oYS5kYXRhQ2xhc3Nlcy5sZW5ndGgtMSkpKX0pfSxpbml0U3RvcHM6ZnVuY3Rpb24oYSl7dGhpcy5zdG9wcz1hLnN0b3BzfHxbWzAsdGhpcy5vcHRpb25zLm1pbkNvbG9yXSxbMSx0aGlzLm9wdGlvbnMubWF4Q29sb3JdXTt0aGlzLnN0b3BzLmZvckVhY2goZnVuY3Rpb24oYSl7YS5jb2xvcj1rKGFbMV0pfSl9LHRvQ29sb3I6ZnVuY3Rpb24oYSxlKXt2YXIgYj10aGlzLnN0b3BzLGQ9dGhpcy5kYXRhQ2xhc3NlcyxoO2lmKGQpZm9yKGg9ZC5sZW5ndGg7aC0tOyl7dmFyIGM9ZFtoXTt2YXIgZj1jLmZyb207Yj1jLnRvO2lmKCgidW5kZWZpbmVkIj09PXR5cGVvZiBmfHxhPj1mKSYmKCJ1bmRlZmluZWQiPT09CnR5cGVvZiBifHxhPD1iKSl7dmFyIGc9Yy5jb2xvcjtlJiYoZS5kYXRhQ2xhc3M9aCk7YnJlYWt9fWVsc2V7dGhpcy5sb2dhcml0aG1pYyYmKGE9dGhpcy52YWwybGluKGEpKTthPTEtKHRoaXMubWF4LWEpLyh0aGlzLm1heC10aGlzLm1pbik7Zm9yKGg9Yi5sZW5ndGg7aC0tJiYhKGE+YltoXVswXSk7KTtmPWJbaF18fGJbaCsxXTtiPWJbaCsxXXx8ZjthPTEtKGJbMF0tYSkvKGJbMF0tZlswXXx8MSk7Zz1mLmNvbG9yLnR3ZWVuVG8oYi5jb2xvcixhKX1yZXR1cm4gZ319O2EuaW5pdD1mdW5jdGlvbihhKXt1KGEsZSl9fSkobXx8KG09e30pKTthKCJzb2xpZGdhdWdlIiwiZ2F1Z2UiLHtjb2xvckJ5UG9pbnQ6ITAsZGF0YUxhYmVsczp7eTowfX0se2RyYXdMZWdlbmRTeW1ib2w6eC5kcmF3UmVjdGFuZ2xlLHRyYW5zbGF0ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMueUF4aXM7bS5pbml0KGEpOyFhLmRhdGFDbGFzc2VzJiZhLm9wdGlvbnMuZGF0YUNsYXNzZXMmJmEuaW5pdERhdGFDbGFzc2VzKGEub3B0aW9ucyk7CmEuaW5pdFN0b3BzKGEub3B0aW9ucyk7Zy5zZXJpZXNUeXBlcy5nYXVnZS5wcm90b3R5cGUudHJhbnNsYXRlLmNhbGwodGhpcyl9LGRyYXdQb2ludHM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGM9YS55QXhpcyxnPWMuY2VudGVyLGI9YS5vcHRpb25zLG09YS5jaGFydC5yZW5kZXJlcixkPWIub3ZlcnNob290LGg9dihkKT9kLzE4MCpNYXRoLlBJOjAsazt2KGIudGhyZXNob2xkKSYmKGs9Yy5zdGFydEFuZ2xlUmFkK2MudHJhbnNsYXRlKGIudGhyZXNob2xkLG51bGwsbnVsbCxudWxsLCEwKSk7dGhpcy50aHJlc2hvbGRBbmdsZVJhZD10KGssYy5zdGFydEFuZ2xlUmFkKTthLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGYpe2lmKCFmLmlzTnVsbCl7dmFyIGQ9Zi5ncmFwaGljLGU9Yy5zdGFydEFuZ2xlUmFkK2MudHJhbnNsYXRlKGYueSxudWxsLG51bGwsbnVsbCwhMCksaz13KHQoZi5vcHRpb25zLnJhZGl1cyxiLnJhZGl1cywxMDApKSpnWzJdLzIwMCxuPXcodChmLm9wdGlvbnMuaW5uZXJSYWRpdXMsCmIuaW5uZXJSYWRpdXMsNjApKSpnWzJdLzIwMCxwPWMudG9Db2xvcihmLnksZikscT1NYXRoLm1pbihjLnN0YXJ0QW5nbGVSYWQsYy5lbmRBbmdsZVJhZCksbD1NYXRoLm1heChjLnN0YXJ0QW5nbGVSYWQsYy5lbmRBbmdsZVJhZCk7Im5vbmUiPT09cCYmKHA9Zi5jb2xvcnx8YS5jb2xvcnx8Im5vbmUiKTsibm9uZSIhPT1wJiYoZi5jb2xvcj1wKTtlPXIoZSxxLWgsbCtoKTshMT09PWIud3JhcCYmKGU9cihlLHEsbCkpO3E9TWF0aC5taW4oZSxhLnRocmVzaG9sZEFuZ2xlUmFkKTtlPU1hdGgubWF4KGUsYS50aHJlc2hvbGRBbmdsZVJhZCk7ZS1xPjIqTWF0aC5QSSYmKGU9cSsyKk1hdGguUEkpO2Yuc2hhcGVBcmdzPW49e3g6Z1swXSx5OmdbMV0scjprLGlubmVyUjpuLHN0YXJ0OnEsZW5kOmUscm91bmRlZDpiLnJvdW5kZWR9O2Yuc3RhcnRSPWs7ZD8oaz1uLmQsZC5hbmltYXRlKHUoe2ZpbGw6cH0sbikpLGsmJihuLmQ9aykpOmYuZ3JhcGhpYz1kPW0uYXJjKG4pLmF0dHIoe2ZpbGw6cCwKInN3ZWVwLWZsYWciOjB9KS5hZGQoYS5ncm91cCk7YS5jaGFydC5zdHlsZWRNb2RlfHwoInNxdWFyZSIhPT1iLmxpbmVjYXAmJmQuYXR0cih7InN0cm9rZS1saW5lY2FwIjoicm91bmQiLCJzdHJva2UtbGluZWpvaW4iOiJyb3VuZCJ9KSxkLmF0dHIoe3N0cm9rZTpiLmJvcmRlckNvbG9yfHwibm9uZSIsInN0cm9rZS13aWR0aCI6Yi5ib3JkZXJXaWR0aHx8MH0pKTtkJiZkLmFkZENsYXNzKGYuZ2V0Q2xhc3NOYW1lKCksITApfX0pfSxhbmltYXRlOmZ1bmN0aW9uKGEpe2F8fCh0aGlzLnN0YXJ0QW5nbGVSYWQ9dGhpcy50aHJlc2hvbGRBbmdsZVJhZCxnLnNlcmllc1R5cGVzLnBpZS5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMsYSkpfX0pOyIiO3JldHVybiBtfSk7ZyhhLCJtYXN0ZXJzL21vZHVsZXMvc29saWQtZ2F1Z2Uuc3JjLmpzIixbXSxmdW5jdGlvbigpe30pfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXNvbGlkLWdhdWdlLmpzLm1hcA=="></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIFN0cmVhbWdyYXBoIG1vZHVsZQoKIChjKSAyMDEwLTIwMTkgVG9yc3RlaW4gSG9uc2kKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24oYSl7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8oYVsiZGVmYXVsdCJdPWEsbW9kdWxlLmV4cG9ydHM9YSk6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL21vZHVsZXMvc3RyZWFtZ3JhcGgiLFsiaGlnaGNoYXJ0cyJdLGZ1bmN0aW9uKGIpe2EoYik7YS5IaWdoY2hhcnRzPWI7cmV0dXJuIGF9KTphKCJ1bmRlZmluZWQiIT09dHlwZW9mIEhpZ2hjaGFydHM/SGlnaGNoYXJ0czp2b2lkIDApfSkoZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhLGQsYixjKXthLmhhc093blByb3BlcnR5KGQpfHwoYVtkXT1jLmFwcGx5KG51bGwsYikpfWE9YT9hLl9tb2R1bGVzOnt9O2IoYSwibW9kdWxlcy9zdHJlYW1ncmFwaC5zcmMuanMiLFthWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSl7YT1hLnNlcmllc1R5cGU7YSgic3RyZWFtZ3JhcGgiLCJhcmVhc3BsaW5lIix7ZmlsbE9wYWNpdHk6MSwKbGluZVdpZHRoOjAsbWFya2VyOntlbmFibGVkOiExfSxzdGFja2luZzoic3RyZWFtIn0se25lZ1N0YWNrczohMSxzdHJlYW1TdGFja2VyOmZ1bmN0aW9uKGEsYixjKXthWzBdLT1iLnRvdGFsLzI7YVsxXS09Yi50b3RhbC8yO3RoaXMuc3RhY2tlZFlEYXRhW2NdPWF9fSk7IiJ9KTtiKGEsIm1hc3RlcnMvbW9kdWxlcy9zdHJlYW1ncmFwaC5zcmMuanMiLFtdLGZ1bmN0aW9uKCl7fSl9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3RyZWFtZ3JhcGguanMubWFw"></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIChjKSAyMDE2LTIwMTkgSGlnaHNvZnQgQVMKIEF1dGhvcnM6IEpvbiBBcmlsZCBOeWdhcmQKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24oZCl7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8oZFsiZGVmYXVsdCJdPWQsbW9kdWxlLmV4cG9ydHM9ZCk6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL21vZHVsZXMvc3VuYnVyc3QiLFsiaGlnaGNoYXJ0cyJdLGZ1bmN0aW9uKEMpe2QoQyk7ZC5IaWdoY2hhcnRzPUM7cmV0dXJuIGR9KTpkKCJ1bmRlZmluZWQiIT09dHlwZW9mIEhpZ2hjaGFydHM/SGlnaGNoYXJ0czp2b2lkIDApfSkoZnVuY3Rpb24oZCl7ZnVuY3Rpb24gQyhkLGIseCxxKXtkLmhhc093blByb3BlcnR5KGIpfHwoZFtiXT1xLmFwcGx5KG51bGwseCkpfWQ9ZD9kLl9tb2R1bGVzOnt9O0MoZCwibWl4aW5zL2RyYXctcG9pbnQuanMiLFtdLGZ1bmN0aW9uKCl7dmFyIGQ9ZnVuY3Rpb24oYil7dmFyIGQscT10aGlzLHc9cS5ncmFwaGljLG09Yi5hbmltYXRhYmxlQXR0cmlicyxsPWIub25Db21wbGV0ZSx1PWIuY3NzLEI9CmIucmVuZGVyZXIsZz1udWxsPT09KGQ9cS5zZXJpZXMpfHx2b2lkIDA9PT1kP3ZvaWQgMDpkLm9wdGlvbnMuYW5pbWF0aW9uO2lmKHEuc2hvdWxkRHJhdygpKXd8fChxLmdyYXBoaWM9dz1CW2Iuc2hhcGVUeXBlXShiLnNoYXBlQXJncykuYWRkKGIuZ3JvdXApKSx3LmNzcyh1KS5hdHRyKGIuYXR0cmlicykuYW5pbWF0ZShtLGIuaXNOZXc/ITE6ZyxsKTtlbHNlIGlmKHcpe3ZhciB0PWZ1bmN0aW9uKCl7cS5ncmFwaGljPXc9dy5kZXN0cm95KCk7ImZ1bmN0aW9uIj09PXR5cGVvZiBsJiZsKCl9O09iamVjdC5rZXlzKG0pLmxlbmd0aD93LmFuaW1hdGUobSx2b2lkIDAsZnVuY3Rpb24oKXt0KCl9KTp0KCl9fTtyZXR1cm4gZnVuY3Rpb24oYil7KGIuYXR0cmlicz1iLmF0dHJpYnN8fHt9KVsiY2xhc3MiXT10aGlzLmdldENsYXNzTmFtZSgpO2QuY2FsbCh0aGlzLGIpfX0pO0MoZCwibWl4aW5zL3RyZWUtc2VyaWVzLmpzIixbZFsicGFydHMvQ29sb3IuanMiXSxkWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sCmZ1bmN0aW9uKGQsYil7dmFyIHg9Yi5leHRlbmQscT1iLmlzQXJyYXksdz1iLmlzTnVtYmVyLG09Yi5pc09iamVjdCxsPWIubWVyZ2UsdT1iLnBpY2s7cmV0dXJue2dldENvbG9yOmZ1bmN0aW9uKGIsZyl7dmFyIHQ9Zy5pbmRleCxsPWcubWFwT3B0aW9uc1RvTGV2ZWwsQj1nLnBhcmVudENvbG9yLHE9Zy5wYXJlbnRDb2xvckluZGV4LG09Zy5zZXJpZXMsRj1nLmNvbG9ycyx3PWcuc2libGluZ3Msdj1tLnBvaW50cyxHPW0uY2hhcnQub3B0aW9ucy5jaGFydCxFO2lmKGIpe3Y9dltiLmldO2I9bFtiLmxldmVsXXx8e307aWYobD12JiZiLmNvbG9yQnlQb2ludCl7dmFyIEQ9di5pbmRleCUoRj9GLmxlbmd0aDpHLmNvbG9yQ291bnQpO3ZhciB4PUYmJkZbRF19aWYoIW0uY2hhcnQuc3R5bGVkTW9kZSl7Rj12JiZ2Lm9wdGlvbnMuY29sb3I7Rz1iJiZiLmNvbG9yO2lmKEU9QilFPShFPWImJmIuY29sb3JWYXJpYXRpb24pJiYiYnJpZ2h0bmVzcyI9PT1FLmtleT9kLnBhcnNlKEIpLmJyaWdodGVuKHQvCncqRS50bykuZ2V0KCk6QjtFPXUoRixHLHgsRSxtLmNvbG9yKX12YXIgST11KHYmJnYub3B0aW9ucy5jb2xvckluZGV4LGImJmIuY29sb3JJbmRleCxELHEsZy5jb2xvckluZGV4KX1yZXR1cm57Y29sb3I6RSxjb2xvckluZGV4Okl9fSxnZXRMZXZlbE9wdGlvbnM6ZnVuY3Rpb24oYil7dmFyIGc9bnVsbDtpZihtKGIpKXtnPXt9O3ZhciBkPXcoYi5mcm9tKT9iLmZyb206MTt2YXIgdT1iLmxldmVsczt2YXIgQj17fTt2YXIgST1tKGIuZGVmYXVsdHMpP2IuZGVmYXVsdHM6e307cSh1KSYmKEI9dS5yZWR1Y2UoZnVuY3Rpb24oYixnKXtpZihtKGcpJiZ3KGcubGV2ZWwpKXt2YXIgdD1sKHt9LGcpO3ZhciB1PSJib29sZWFuIj09PXR5cGVvZiB0LmxldmVsSXNDb25zdGFudD90LmxldmVsSXNDb25zdGFudDpJLmxldmVsSXNDb25zdGFudDtkZWxldGUgdC5sZXZlbElzQ29uc3RhbnQ7ZGVsZXRlIHQubGV2ZWw7Zz1nLmxldmVsKyh1PzA6ZC0xKTttKGJbZ10pP3goYltnXSx0KTpiW2ddPXR9cmV0dXJuIGJ9LAp7fSkpO3U9dyhiLnRvKT9iLnRvOjE7Zm9yKGI9MDtiPD11O2IrKylnW2JdPWwoe30sSSxtKEJbYl0pP0JbYl06e30pfXJldHVybiBnfSxzZXRUcmVlVmFsdWVzOmZ1bmN0aW9uIFUoYixkKXt2YXIgZz1kLmJlZm9yZSxsPWQuaWRSb290LHQ9ZC5tYXBJZFRvTm9kZVtsXSxtPWQucG9pbnRzW2IuaV0scT1tJiZtLm9wdGlvbnN8fHt9LHY9MCx3PVtdO3goYix7bGV2ZWxEeW5hbWljOmIubGV2ZWwtKCgiYm9vbGVhbiI9PT10eXBlb2YgZC5sZXZlbElzQ29uc3RhbnQ/ZC5sZXZlbElzQ29uc3RhbnQ6MSk/MDp0LmxldmVsKSxuYW1lOnUobSYmbS5uYW1lLCIiKSx2aXNpYmxlOmw9PT1iLmlkfHwoImJvb2xlYW4iPT09dHlwZW9mIGQudmlzaWJsZT9kLnZpc2libGU6ITEpfSk7ImZ1bmN0aW9uIj09PXR5cGVvZiBnJiYoYj1nKGIsZCkpO2IuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbihnLGwpe3ZhciB0PXgoe30sZCk7eCh0LHtpbmRleDpsLHNpYmxpbmdzOmIuY2hpbGRyZW4ubGVuZ3RoLHZpc2libGU6Yi52aXNpYmxlfSk7Cmc9VShnLHQpO3cucHVzaChnKTtnLnZpc2libGUmJih2Kz1nLnZhbCl9KTtiLnZpc2libGU9MDx2fHxiLnZpc2libGU7Zz11KHEudmFsdWUsdik7eChiLHtjaGlsZHJlbjp3LGNoaWxkcmVuVG90YWw6dixpc0xlYWY6Yi52aXNpYmxlJiYhdix2YWw6Z30pO3JldHVybiBifSx1cGRhdGVSb290SWQ6ZnVuY3Rpb24oYil7aWYobShiKSl7dmFyIGQ9bShiLm9wdGlvbnMpP2Iub3B0aW9uczp7fTtkPXUoYi5yb290Tm9kZSxkLnJvb3RJZCwiIik7bShiLnVzZXJPcHRpb25zKSYmKGIudXNlck9wdGlvbnMucm9vdElkPWQpO2Iucm9vdE5vZGU9ZH1yZXR1cm4gZH19fSk7QyhkLCJtb2R1bGVzL3RyZWVtYXAuc3JjLmpzIixbZFsicGFydHMvR2xvYmFscy5qcyJdLGRbIm1peGlucy90cmVlLXNlcmllcy5qcyJdLGRbIm1peGlucy9kcmF3LXBvaW50LmpzIl0sZFsicGFydHMvQ29sb3IuanMiXSxkWyJtaXhpbnMvbGVnZW5kLXN5bWJvbC5qcyJdLGRbInBhcnRzL1BvaW50LmpzIl0sZFsicGFydHMvVXRpbGl0aWVzLmpzIl1dLApmdW5jdGlvbihkLGIseCxxLHcsbSxsKXt2YXIgdT1xLnBhcnNlLEI9bC5hZGRFdmVudCxnPWwuY29ycmVjdEZsb2F0LHQ9bC5kZWZpbmVkLEk9bC5lcnJvcixDPWwuZXh0ZW5kLE09bC5maXJlRXZlbnQsTj1sLmlzQXJyYXksRj1sLmlzTnVtYmVyLFE9bC5pc09iamVjdCx2PWwuaXNTdHJpbmcsRz1sLm1lcmdlLEU9bC5vYmplY3RFYWNoLEQ9bC5waWNrO3E9bC5zZXJpZXNUeXBlO3ZhciBSPWwuc3RhYmxlU29ydCxMPWQuc2VyaWVzVHlwZXM7bD1kLm5vb3A7dmFyIE89Yi5nZXRDb2xvcixQPWIuZ2V0TGV2ZWxPcHRpb25zLEo9ZC5TZXJpZXMsZj1mdW5jdGlvbihhLGMsZSl7ZT1lfHx0aGlzO0UoYSxmdW5jdGlvbihwLGgpe2MuY2FsbChlLHAsaCxhKX0pfSxrPWZ1bmN0aW9uKGEsYyxlKXtlPWV8fHRoaXM7YT1jLmNhbGwoZSxhKTshMSE9PWEmJmsoYSxjLGUpfSx5PWIudXBkYXRlUm9vdElkLG49ITE7cSgidHJlZW1hcCIsInNjYXR0ZXIiLHthbGxvd1RyYXZlcnNpbmdUcmVlOiExLGFuaW1hdGlvbkxpbWl0OjI1MCwKc2hvd0luTGVnZW5kOiExLG1hcmtlcjohMSxjb2xvckJ5UG9pbnQ6ITEsZGF0YUxhYmVsczp7ZGVmZXI6ITEsZW5hYmxlZDohMCxmb3JtYXR0ZXI6ZnVuY3Rpb24oKXt2YXIgYT10aGlzJiZ0aGlzLnBvaW50P3RoaXMucG9pbnQ6e307cmV0dXJuIHYoYS5uYW1lKT9hLm5hbWU6IiJ9LGluc2lkZTohMCx2ZXJ0aWNhbEFsaWduOiJtaWRkbGUifSx0b29sdGlwOntoZWFkZXJGb3JtYXQ6IiIscG9pbnRGb3JtYXQ6IjxiPntwb2ludC5uYW1lfTwvYj46IHtwb2ludC52YWx1ZX08YnIvPiJ9LGlnbm9yZUhpZGRlblBvaW50OiEwLGxheW91dEFsZ29yaXRobToic2xpY2VBbmREaWNlIixsYXlvdXRTdGFydGluZ0RpcmVjdGlvbjoidmVydGljYWwiLGFsdGVybmF0ZVN0YXJ0aW5nRGlyZWN0aW9uOiExLGxldmVsSXNDb25zdGFudDohMCxkcmlsbFVwQnV0dG9uOntwb3NpdGlvbjp7YWxpZ246InJpZ2h0Iix4Oi0xMCx5OjEwfX0sdHJhdmVyc2VVcEJ1dHRvbjp7cG9zaXRpb246e2FsaWduOiJyaWdodCIsCng6LTEwLHk6MTB9fSxib3JkZXJDb2xvcjoiI2U2ZTZlNiIsYm9yZGVyV2lkdGg6MSxjb2xvcktleToiY29sb3JWYWx1ZSIsb3BhY2l0eTouMTUsc3RhdGVzOntob3Zlcjp7Ym9yZGVyQ29sb3I6IiM5OTk5OTkiLGJyaWdodG5lc3M6TC5oZWF0bWFwPzA6LjEsaGFsbzohMSxvcGFjaXR5Oi43NSxzaGFkb3c6ITF9fX0se3BvaW50QXJyYXlNYXA6WyJ2YWx1ZSJdLGRpcmVjdFRvdWNoOiEwLG9wdGlvbmFsQXhpczoiY29sb3JBeGlzIixnZXRTeW1ib2w6bCxwYXJhbGxlbEFycmF5czpbIngiLCJ5IiwidmFsdWUiLCJjb2xvclZhbHVlIl0sY29sb3JLZXk6ImNvbG9yVmFsdWUiLHRyYWNrZXJHcm91cHM6WyJncm91cCIsImRhdGFMYWJlbHNHcm91cCJdLGdldExpc3RPZlBhcmVudHM6ZnVuY3Rpb24oYSxjKXthPU4oYSk/YTpbXTt2YXIgZT1OKGMpP2M6W107Yz1hLnJlZHVjZShmdW5jdGlvbihhLGMsZSl7Yz1EKGMucGFyZW50LCIiKTsidW5kZWZpbmVkIj09PXR5cGVvZiBhW2NdJiYoYVtjXT0KW10pO2FbY10ucHVzaChlKTtyZXR1cm4gYX0seyIiOltdfSk7ZihjLGZ1bmN0aW9uKGEsYyxiKXsiIiE9PWMmJi0xPT09ZS5pbmRleE9mKGMpJiYoYS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2JbIiJdLnB1c2goYSl9KSxkZWxldGUgYltjXSl9KTtyZXR1cm4gY30sZ2V0VHJlZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZGF0YS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaWR9KTthPXRoaXMuZ2V0TGlzdE9mUGFyZW50cyh0aGlzLmRhdGEsYSk7dGhpcy5ub2RlTWFwPVtdO3JldHVybiB0aGlzLmJ1aWxkTm9kZSgiIiwtMSwwLGEsbnVsbCl9LGhhc0RhdGE6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMucHJvY2Vzc2VkWERhdGEubGVuZ3RofSxpbml0OmZ1bmN0aW9uKGEsYyl7dmFyIGU9ZC5jb2xvck1hcFNlcmllc01peGluO2UmJih0aGlzLmNvbG9yQXR0cmlicz1lLmNvbG9yQXR0cmlicyk7dGhpcy5ldmVudHNUb1VuYmluZC5wdXNoKEIodGhpcywic2V0T3B0aW9ucyIsZnVuY3Rpb24oYSl7YT0KYS51c2VyT3B0aW9uczt0KGEuYWxsb3dEcmlsbFRvTm9kZSkmJiF0KGEuYWxsb3dUcmF2ZXJzaW5nVHJlZSkmJihhLmFsbG93VHJhdmVyc2luZ1RyZWU9YS5hbGxvd0RyaWxsVG9Ob2RlLGRlbGV0ZSBhLmFsbG93RHJpbGxUb05vZGUpO3QoYS5kcmlsbFVwQnV0dG9uKSYmIXQoYS50cmF2ZXJzZVVwQnV0dG9uKSYmKGEudHJhdmVyc2VVcEJ1dHRvbj1hLmRyaWxsVXBCdXR0b24sZGVsZXRlIGEuZHJpbGxVcEJ1dHRvbil9KSk7Si5wcm90b3R5cGUuaW5pdC5jYWxsKHRoaXMsYSxjKTtkZWxldGUgdGhpcy5vcGFjaXR5O3RoaXMub3B0aW9ucy5hbGxvd1RyYXZlcnNpbmdUcmVlJiZ0aGlzLmV2ZW50c1RvVW5iaW5kLnB1c2goQih0aGlzLCJjbGljayIsdGhpcy5vbkNsaWNrRHJpbGxUb05vZGUpKX0sYnVpbGROb2RlOmZ1bmN0aW9uKGEsYyxlLGIsaCl7dmFyIGY9dGhpcyxwPVtdLGQ9Zi5wb2ludHNbY10saz0wLEs7KGJbYV18fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGMpe0s9Zi5idWlsZE5vZGUoZi5wb2ludHNbY10uaWQsCmMsZSsxLGIsYSk7az1NYXRoLm1heChLLmhlaWdodCsxLGspO3AucHVzaChLKX0pO2M9e2lkOmEsaTpjLGNoaWxkcmVuOnAsaGVpZ2h0OmssbGV2ZWw6ZSxwYXJlbnQ6aCx2aXNpYmxlOiExfTtmLm5vZGVNYXBbYy5pZF09YztkJiYoZC5ub2RlPWMpO3JldHVybiBjfSxzZXRUcmVlVmFsdWVzOmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMsZT1jLm9wdGlvbnMsYj1jLm5vZGVNYXBbYy5yb290Tm9kZV07ZT0iYm9vbGVhbiI9PT10eXBlb2YgZS5sZXZlbElzQ29uc3RhbnQ/ZS5sZXZlbElzQ29uc3RhbnQ6ITA7dmFyIGg9MCxmPVtdLHo9Yy5wb2ludHNbYS5pXTthLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oYSl7YT1jLnNldFRyZWVWYWx1ZXMoYSk7Zi5wdXNoKGEpO2EuaWdub3JlfHwoaCs9YS52YWwpfSk7UihmLGZ1bmN0aW9uKGEsYyl7cmV0dXJuIGEuc29ydEluZGV4LWMuc29ydEluZGV4fSk7dmFyIGQ9RCh6JiZ6Lm9wdGlvbnMudmFsdWUsaCk7eiYmKHoudmFsdWU9ZCk7QyhhLHtjaGlsZHJlbjpmLApjaGlsZHJlblRvdGFsOmgsaWdub3JlOiEoRCh6JiZ6LnZpc2libGUsITApJiYwPGQpLGlzTGVhZjphLnZpc2libGUmJiFoLGxldmVsRHluYW1pYzphLmxldmVsLShlPzA6Yi5sZXZlbCksbmFtZTpEKHomJnoubmFtZSwiIiksc29ydEluZGV4OkQoeiYmei5zb3J0SW5kZXgsLWQpLHZhbDpkfSk7cmV0dXJuIGF9LGNhbGN1bGF0ZUNoaWxkcmVuQXJlYXM6ZnVuY3Rpb24oYSxjKXt2YXIgZT10aGlzLGI9ZS5vcHRpb25zLGg9ZS5tYXBPcHRpb25zVG9MZXZlbFthLmxldmVsKzFdLGY9RChlW2gmJmgubGF5b3V0QWxnb3JpdGhtXSYmaC5sYXlvdXRBbGdvcml0aG0sYi5sYXlvdXRBbGdvcml0aG0pLGQ9Yi5hbHRlcm5hdGVTdGFydGluZ0RpcmVjdGlvbixrPVtdO2E9YS5jaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIWEuaWdub3JlfSk7aCYmaC5sYXlvdXRTdGFydGluZ0RpcmVjdGlvbiYmKGMuZGlyZWN0aW9uPSJ2ZXJ0aWNhbCI9PT1oLmxheW91dFN0YXJ0aW5nRGlyZWN0aW9uPwowOjEpO2s9ZVtmXShjLGEpO2EuZm9yRWFjaChmdW5jdGlvbihhLGgpe2g9a1toXTthLnZhbHVlcz1HKGgse3ZhbDphLmNoaWxkcmVuVG90YWwsZGlyZWN0aW9uOmQ/MS1jLmRpcmVjdGlvbjpjLmRpcmVjdGlvbn0pO2EucG9pbnRWYWx1ZXM9RyhoLHt4OmgueC9lLmF4aXNSYXRpbyx5OjEwMC1oLnktaC5oZWlnaHQsd2lkdGg6aC53aWR0aC9lLmF4aXNSYXRpb30pO2EuY2hpbGRyZW4ubGVuZ3RoJiZlLmNhbGN1bGF0ZUNoaWxkcmVuQXJlYXMoYSxhLnZhbHVlcyl9KX0sc2V0UG9pbnRWYWx1ZXM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGM9YS54QXhpcyxlPWEueUF4aXMsYj1hLmNoYXJ0LnN0eWxlZE1vZGU7YS5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihoKXt2YXIgZj1oLm5vZGUsZD1mLnBvaW50VmFsdWVzO2Y9Zi52aXNpYmxlO2lmKGQmJmYpe2Y9ZC5oZWlnaHQ7dmFyIHA9ZC53aWR0aCxrPWQueCx5PWQueSxyPWI/MDooYS5wb2ludEF0dHJpYnMoaClbInN0cm9rZS13aWR0aCJdfHwKMCklMi8yO2Q9TWF0aC5yb3VuZChjLnRvUGl4ZWxzKGssITApKS1yO3A9TWF0aC5yb3VuZChjLnRvUGl4ZWxzKGsrcCwhMCkpLXI7az1NYXRoLnJvdW5kKGUudG9QaXhlbHMoeSwhMCkpLXI7Zj1NYXRoLnJvdW5kKGUudG9QaXhlbHMoeStmLCEwKSktcjtoLnNoYXBlQXJncz17eDpNYXRoLm1pbihkLHApLHk6TWF0aC5taW4oayxmKSx3aWR0aDpNYXRoLmFicyhwLWQpLGhlaWdodDpNYXRoLmFicyhmLWspfTtoLnBsb3RYPWguc2hhcGVBcmdzLngraC5zaGFwZUFyZ3Mud2lkdGgvMjtoLnBsb3RZPWguc2hhcGVBcmdzLnkraC5zaGFwZUFyZ3MuaGVpZ2h0LzJ9ZWxzZSBkZWxldGUgaC5wbG90WCxkZWxldGUgaC5wbG90WX0pfSxzZXRDb2xvclJlY3Vyc2l2ZTpmdW5jdGlvbihhLGMsZSxmLGgpe3ZhciBiPXRoaXMsZD1iJiZiLmNoYXJ0O2Q9ZCYmZC5vcHRpb25zJiZkLm9wdGlvbnMuY29sb3JzO2lmKGEpe3ZhciBwPU8oYSx7Y29sb3JzOmQsaW5kZXg6ZixtYXBPcHRpb25zVG9MZXZlbDpiLm1hcE9wdGlvbnNUb0xldmVsLApwYXJlbnRDb2xvcjpjLHBhcmVudENvbG9ySW5kZXg6ZSxzZXJpZXM6YixzaWJsaW5nczpofSk7aWYoYz1iLnBvaW50c1thLmldKWMuY29sb3I9cC5jb2xvcixjLmNvbG9ySW5kZXg9cC5jb2xvckluZGV4OyhhLmNoaWxkcmVufHxbXSkuZm9yRWFjaChmdW5jdGlvbihjLGUpe2Iuc2V0Q29sb3JSZWN1cnNpdmUoYyxwLmNvbG9yLHAuY29sb3JJbmRleCxlLGEuY2hpbGRyZW4ubGVuZ3RoKX0pfX0sYWxnb3JpdGhtR3JvdXA6ZnVuY3Rpb24oYSxjLGUsZil7dGhpcy5oZWlnaHQ9YTt0aGlzLndpZHRoPWM7dGhpcy5wbG90PWY7dGhpcy5zdGFydERpcmVjdGlvbj10aGlzLmRpcmVjdGlvbj1lO3RoaXMubEg9dGhpcy5uSD10aGlzLmxXPXRoaXMublc9dGhpcy50b3RhbD0wO3RoaXMuZWxBcnI9W107dGhpcy5sUD17dG90YWw6MCxsSDowLG5IOjAsbFc6MCxuVzowLG5SOjAsbFI6MCxhc3BlY3RSYXRpbzpmdW5jdGlvbihhLGMpe3JldHVybiBNYXRoLm1heChhL2MsYy9hKX19O3RoaXMuYWRkRWxlbWVudD0KZnVuY3Rpb24oYSl7dGhpcy5sUC50b3RhbD10aGlzLmVsQXJyW3RoaXMuZWxBcnIubGVuZ3RoLTFdO3RoaXMudG90YWwrPWE7MD09PXRoaXMuZGlyZWN0aW9uPyh0aGlzLmxXPXRoaXMublcsdGhpcy5sUC5sSD10aGlzLmxQLnRvdGFsL3RoaXMubFcsdGhpcy5sUC5sUj10aGlzLmxQLmFzcGVjdFJhdGlvKHRoaXMubFcsdGhpcy5sUC5sSCksdGhpcy5uVz10aGlzLnRvdGFsL3RoaXMuaGVpZ2h0LHRoaXMubFAubkg9dGhpcy5sUC50b3RhbC90aGlzLm5XLHRoaXMubFAublI9dGhpcy5sUC5hc3BlY3RSYXRpbyh0aGlzLm5XLHRoaXMubFAubkgpKToodGhpcy5sSD10aGlzLm5ILHRoaXMubFAubFc9dGhpcy5sUC50b3RhbC90aGlzLmxILHRoaXMubFAubFI9dGhpcy5sUC5hc3BlY3RSYXRpbyh0aGlzLmxQLmxXLHRoaXMubEgpLHRoaXMubkg9dGhpcy50b3RhbC90aGlzLndpZHRoLHRoaXMubFAublc9dGhpcy5sUC50b3RhbC90aGlzLm5ILHRoaXMubFAublI9dGhpcy5sUC5hc3BlY3RSYXRpbyh0aGlzLmxQLm5XLAp0aGlzLm5IKSk7dGhpcy5lbEFyci5wdXNoKGEpfTt0aGlzLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5sVz10aGlzLm5XPTA7dGhpcy5lbEFycj1bXTt0aGlzLnRvdGFsPTB9fSxhbGdvcml0aG1DYWxjUG9pbnRzOmZ1bmN0aW9uKGEsYyxlLGYpe3ZhciBoLGIsZCxwLGs9ZS5sVyx5PWUubEgscj1lLnBsb3Qsbj0wLGw9ZS5lbEFyci5sZW5ndGgtMTtpZihjKWs9ZS5uVyx5PWUubkg7ZWxzZSB2YXIgbT1lLmVsQXJyW2UuZWxBcnIubGVuZ3RoLTFdO2UuZWxBcnIuZm9yRWFjaChmdW5jdGlvbihhKXtpZihjfHxuPGwpMD09PWUuZGlyZWN0aW9uPyhoPXIueCxiPXIueSxkPWsscD1hL2QpOihoPXIueCxiPXIueSxwPXksZD1hL3ApLGYucHVzaCh7eDpoLHk6Yix3aWR0aDpkLGhlaWdodDpnKHApfSksMD09PWUuZGlyZWN0aW9uP3IueSs9cDpyLngrPWQ7bis9MX0pO2UucmVzZXQoKTswPT09ZS5kaXJlY3Rpb24/ZS53aWR0aC09azplLmhlaWdodC09eTtyLnk9ci5wYXJlbnQueSsoci5wYXJlbnQuaGVpZ2h0LQplLmhlaWdodCk7ci54PXIucGFyZW50LngrKHIucGFyZW50LndpZHRoLWUud2lkdGgpO2EmJihlLmRpcmVjdGlvbj0xLWUuZGlyZWN0aW9uKTtjfHxlLmFkZEVsZW1lbnQobSl9LGFsZ29yaXRobUxvd0FzcGVjdFJhdGlvOmZ1bmN0aW9uKGEsYyxlKXt2YXIgZj1bXSxoPXRoaXMsYixkPXt4OmMueCx5OmMueSxwYXJlbnQ6Y30saz0wLHk9ZS5sZW5ndGgtMSxuPW5ldyB0aGlzLmFsZ29yaXRobUdyb3VwKGMuaGVpZ2h0LGMud2lkdGgsYy5kaXJlY3Rpb24sZCk7ZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2I9ZS52YWwvYy52YWwqYy5oZWlnaHQqYy53aWR0aDtuLmFkZEVsZW1lbnQoYik7bi5sUC5uUj5uLmxQLmxSJiZoLmFsZ29yaXRobUNhbGNQb2ludHMoYSwhMSxuLGYsZCk7az09PXkmJmguYWxnb3JpdGhtQ2FsY1BvaW50cyhhLCEwLG4sZixkKTtrKz0xfSk7cmV0dXJuIGZ9LGFsZ29yaXRobUZpbGw6ZnVuY3Rpb24oYSxjLGUpe3ZhciBmPVtdLGgsYj1jLmRpcmVjdGlvbixkPWMueCxrPWMueSwKeT1jLndpZHRoLG49Yy5oZWlnaHQscixsLGcsbTtlLmZvckVhY2goZnVuY3Rpb24oZSl7aD1lLnZhbC9jLnZhbCpjLmhlaWdodCpjLndpZHRoO3I9ZDtsPWs7MD09PWI/KG09bixnPWgvbSx5LT1nLGQrPWcpOihnPXksbT1oL2csbi09bSxrKz1tKTtmLnB1c2goe3g6cix5Omwsd2lkdGg6ZyxoZWlnaHQ6bX0pO2EmJihiPTEtYil9KTtyZXR1cm4gZn0sc3RyaXA6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gdGhpcy5hbGdvcml0aG1Mb3dBc3BlY3RSYXRpbyghMSxhLGMpfSxzcXVhcmlmaWVkOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIHRoaXMuYWxnb3JpdGhtTG93QXNwZWN0UmF0aW8oITAsYSxjKX0sc2xpY2VBbmREaWNlOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIHRoaXMuYWxnb3JpdGhtRmlsbCghMCxhLGMpfSxzdHJpcGVzOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIHRoaXMuYWxnb3JpdGhtRmlsbCghMSxhLGMpfSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGM9YS5vcHRpb25zLGU9eShhKTsKSi5wcm90b3R5cGUudHJhbnNsYXRlLmNhbGwoYSk7dmFyIGY9YS50cmVlPWEuZ2V0VHJlZSgpO3ZhciBiPWEubm9kZU1hcFtlXTthLnJlbmRlclRyYXZlcnNlVXBCdXR0b24oZSk7YS5tYXBPcHRpb25zVG9MZXZlbD1QKHtmcm9tOmIubGV2ZWwrMSxsZXZlbHM6Yy5sZXZlbHMsdG86Zi5oZWlnaHQsZGVmYXVsdHM6e2xldmVsSXNDb25zdGFudDphLm9wdGlvbnMubGV2ZWxJc0NvbnN0YW50LGNvbG9yQnlQb2ludDpjLmNvbG9yQnlQb2ludH19KTsiIj09PWV8fGImJmIuY2hpbGRyZW4ubGVuZ3RofHwoYS5zZXRSb290Tm9kZSgiIiwhMSksZT1hLnJvb3ROb2RlLGI9YS5ub2RlTWFwW2VdKTtrKGEubm9kZU1hcFthLnJvb3ROb2RlXSxmdW5jdGlvbihjKXt2YXIgZT0hMSxiPWMucGFyZW50O2MudmlzaWJsZT0hMDtpZihifHwiIj09PWIpZT1hLm5vZGVNYXBbYl07cmV0dXJuIGV9KTtrKGEubm9kZU1hcFthLnJvb3ROb2RlXS5jaGlsZHJlbixmdW5jdGlvbihhKXt2YXIgYz0hMTthLmZvckVhY2goZnVuY3Rpb24oYSl7YS52aXNpYmxlPQohMDthLmNoaWxkcmVuLmxlbmd0aCYmKGM9KGN8fFtdKS5jb25jYXQoYS5jaGlsZHJlbikpfSk7cmV0dXJuIGN9KTthLnNldFRyZWVWYWx1ZXMoZik7YS5heGlzUmF0aW89YS54QXhpcy5sZW4vYS55QXhpcy5sZW47YS5ub2RlTWFwWyIiXS5wb2ludFZhbHVlcz1lPXt4OjAseTowLHdpZHRoOjEwMCxoZWlnaHQ6MTAwfTthLm5vZGVNYXBbIiJdLnZhbHVlcz1lPUcoZSx7d2lkdGg6ZS53aWR0aCphLmF4aXNSYXRpbyxkaXJlY3Rpb246InZlcnRpY2FsIj09PWMubGF5b3V0U3RhcnRpbmdEaXJlY3Rpb24/MDoxLHZhbDpmLnZhbH0pO2EuY2FsY3VsYXRlQ2hpbGRyZW5BcmVhcyhmLGUpO2EuY29sb3JBeGlzfHxjLmNvbG9yQnlQb2ludHx8YS5zZXRDb2xvclJlY3Vyc2l2ZShhLnRyZWUpO2MuYWxsb3dUcmF2ZXJzaW5nVHJlZSYmKGM9Yi5wb2ludFZhbHVlcyxhLnhBeGlzLnNldEV4dHJlbWVzKGMueCxjLngrYy53aWR0aCwhMSksYS55QXhpcy5zZXRFeHRyZW1lcyhjLnksYy55K2MuaGVpZ2h0LAohMSksYS54QXhpcy5zZXRTY2FsZSgpLGEueUF4aXMuc2V0U2NhbGUoKSk7YS5zZXRQb2ludFZhbHVlcygpfSxkcmF3RGF0YUxhYmVsczpmdW5jdGlvbigpe3ZhciBhPXRoaXMsYz1hLm1hcE9wdGlvbnNUb0xldmVsLGUsYjthLnBvaW50cy5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZS52aXNpYmxlfSkuZm9yRWFjaChmdW5jdGlvbihmKXtiPWNbZi5ub2RlLmxldmVsXTtlPXtzdHlsZTp7fX07Zi5ub2RlLmlzTGVhZnx8KGUuZW5hYmxlZD0hMSk7YiYmYi5kYXRhTGFiZWxzJiYoZT1HKGUsYi5kYXRhTGFiZWxzKSxhLl9oYXNQb2ludExhYmVscz0hMCk7Zi5zaGFwZUFyZ3MmJihlLnN0eWxlLndpZHRoPWYuc2hhcGVBcmdzLndpZHRoLGYuZGF0YUxhYmVsJiZmLmRhdGFMYWJlbC5jc3Moe3dpZHRoOmYuc2hhcGVBcmdzLndpZHRoKyJweCJ9KSk7Zi5kbE9wdGlvbnM9RyhlLGYub3B0aW9ucy5kYXRhTGFiZWxzKX0pO0oucHJvdG90eXBlLmRyYXdEYXRhTGFiZWxzLmNhbGwodGhpcyl9LAphbGlnbkRhdGFMYWJlbDpmdW5jdGlvbihhLGMsZSl7dmFyIGY9ZS5zdHlsZTshdChmLnRleHRPdmVyZmxvdykmJmMudGV4dCYmYy5nZXRCQm94KCkud2lkdGg+Yy50ZXh0LnRleHRXaWR0aCYmYy5jc3Moe3RleHRPdmVyZmxvdzoiZWxsaXBzaXMiLHdpZHRoOmYud2lkdGgrPSJweCJ9KTtMLmNvbHVtbi5wcm90b3R5cGUuYWxpZ25EYXRhTGFiZWwuYXBwbHkodGhpcyxhcmd1bWVudHMpO2EuZGF0YUxhYmVsJiZhLmRhdGFMYWJlbC5hdHRyKHt6SW5kZXg6KGEubm9kZS56SW5kZXh8fDApKzF9KX0scG9pbnRBdHRyaWJzOmZ1bmN0aW9uKGEsYyl7dmFyIGU9USh0aGlzLm1hcE9wdGlvbnNUb0xldmVsKT90aGlzLm1hcE9wdGlvbnNUb0xldmVsOnt9LGY9YSYmZVthLm5vZGUubGV2ZWxdfHx7fTtlPXRoaXMub3B0aW9uczt2YXIgYj1jJiZlLnN0YXRlc1tjXXx8e30sZD1hJiZhLmdldENsYXNzTmFtZSgpfHwiIjthPXtzdHJva2U6YSYmYS5ib3JkZXJDb2xvcnx8Zi5ib3JkZXJDb2xvcnx8Yi5ib3JkZXJDb2xvcnx8CmUuYm9yZGVyQ29sb3IsInN0cm9rZS13aWR0aCI6RChhJiZhLmJvcmRlcldpZHRoLGYuYm9yZGVyV2lkdGgsYi5ib3JkZXJXaWR0aCxlLmJvcmRlcldpZHRoKSxkYXNoc3R5bGU6YSYmYS5ib3JkZXJEYXNoU3R5bGV8fGYuYm9yZGVyRGFzaFN0eWxlfHxiLmJvcmRlckRhc2hTdHlsZXx8ZS5ib3JkZXJEYXNoU3R5bGUsZmlsbDphJiZhLmNvbG9yfHx0aGlzLmNvbG9yfTstMSE9PWQuaW5kZXhPZigiaGlnaGNoYXJ0cy1hYm92ZS1sZXZlbCIpPyhhLmZpbGw9Im5vbmUiLGFbInN0cm9rZS13aWR0aCJdPTApOi0xIT09ZC5pbmRleE9mKCJoaWdoY2hhcnRzLWludGVybmFsLW5vZGUtaW50ZXJhY3RpdmUiKT8oYz1EKGIub3BhY2l0eSxlLm9wYWNpdHkpLGEuZmlsbD11KGEuZmlsbCkuc2V0T3BhY2l0eShjKS5nZXQoKSxhLmN1cnNvcj0icG9pbnRlciIpOi0xIT09ZC5pbmRleE9mKCJoaWdoY2hhcnRzLWludGVybmFsLW5vZGUiKT9hLmZpbGw9Im5vbmUiOmMmJihhLmZpbGw9dShhLmZpbGwpLmJyaWdodGVuKGIuYnJpZ2h0bmVzcykuZ2V0KCkpOwpyZXR1cm4gYX0sZHJhd1BvaW50czpmdW5jdGlvbigpe3ZhciBhPXRoaXMsYz1hLmNoYXJ0LGU9Yy5yZW5kZXJlcixmPWMuc3R5bGVkTW9kZSxiPWEub3B0aW9ucyxkPWY/e306Yi5zaGFkb3csaz1iLmJvcmRlclJhZGl1cyx5PWMucG9pbnRDb3VudDxiLmFuaW1hdGlvbkxpbWl0LG49Yi5hbGxvd1RyYXZlcnNpbmdUcmVlO2EucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIGg9Yy5ub2RlLmxldmVsRHluYW1pYyxwPXt9LGc9e30sbD17fSxtPSJsZXZlbC1ncm91cC0iK2gsUz0hIWMuZ3JhcGhpYyx6PXkmJlMsVD1jLnNoYXBlQXJncztjLnNob3VsZERyYXcoKSYmKGsmJihnLnI9ayksRyghMCx6P3A6ZyxTP1Q6e30sZj97fTphLnBvaW50QXR0cmlicyhjLGMuc2VsZWN0ZWQmJiJzZWxlY3QiKSksYS5jb2xvckF0dHJpYnMmJmYmJkMobCxhLmNvbG9yQXR0cmlicyhjKSksYVttXXx8KGFbbV09ZS5nKG0pLmF0dHIoe3pJbmRleDoxRTMtaH0pLmFkZChhLmdyb3VwKSxhW21dLnN1cnZpdmU9CiEwKSk7Yy5kcmF3KHthbmltYXRhYmxlQXR0cmliczpwLGF0dHJpYnM6Zyxjc3M6bCxncm91cDphW21dLHJlbmRlcmVyOmUsc2hhZG93OmQsc2hhcGVBcmdzOlQsc2hhcGVUeXBlOiJyZWN0In0pO24mJmMuZ3JhcGhpYyYmKGMuZHJpbGxJZD1iLmludGVyYWN0QnlMZWFmP2EuZHJpbGxUb0J5TGVhZihjKTphLmRyaWxsVG9CeUdyb3VwKGMpKX0pfSxvbkNsaWNrRHJpbGxUb05vZGU6ZnVuY3Rpb24oYSl7dmFyIGM9KGE9YS5wb2ludCkmJmEuZHJpbGxJZDt2KGMpJiYodGhpcy5pc0RyaWxsQWxsb3dlZD90aGlzLmlzRHJpbGxBbGxvd2VkKGMpOjEpJiYoYS5zZXRTdGF0ZSgiIiksdGhpcy5zZXRSb290Tm9kZShjLCEwLHt0cmlnZ2VyOiJjbGljayJ9KSl9LGRyaWxsVG9CeUdyb3VwOmZ1bmN0aW9uKGEpe3ZhciBjPSExOzEhPT1hLm5vZGUubGV2ZWwtdGhpcy5ub2RlTWFwW3RoaXMucm9vdE5vZGVdLmxldmVsfHxhLm5vZGUuaXNMZWFmfHwoYz1hLmlkKTtyZXR1cm4gY30sZHJpbGxUb0J5TGVhZjpmdW5jdGlvbihhKXt2YXIgYz0KITE7aWYoYS5ub2RlLnBhcmVudCE9PXRoaXMucm9vdE5vZGUmJmEubm9kZS5pc0xlYWYpZm9yKGE9YS5ub2RlOyFjOylhPXRoaXMubm9kZU1hcFthLnBhcmVudF0sYS5wYXJlbnQ9PT10aGlzLnJvb3ROb2RlJiYoYz1hLmlkKTtyZXR1cm4gY30sZHJpbGxVcDpmdW5jdGlvbigpe3ZhciBhPXRoaXMubm9kZU1hcFt0aGlzLnJvb3ROb2RlXTthJiZ2KGEucGFyZW50KSYmdGhpcy5zZXRSb290Tm9kZShhLnBhcmVudCwhMCx7dHJpZ2dlcjoidHJhdmVyc2VVcEJ1dHRvbiJ9KX0sZHJpbGxUb05vZGU6ZnVuY3Rpb24oYSxjKXtJKDMyLCExLHZvaWQgMCx7InRyZWVtYXAuZHJpbGxUb05vZGUiOiJ1c2UgdHJlZW1hcC5zZXRSb290Tm9kZSJ9KTt0aGlzLnNldFJvb3ROb2RlKGEsYyl9LHNldFJvb3ROb2RlOmZ1bmN0aW9uKGEsYyxlKXthPUMoe25ld1Jvb3RJZDphLHByZXZpb3VzUm9vdElkOnRoaXMucm9vdE5vZGUscmVkcmF3OkQoYywhMCksc2VyaWVzOnRoaXN9LGUpO00odGhpcywic2V0Um9vdE5vZGUiLAphLGZ1bmN0aW9uKGEpe3ZhciBjPWEuc2VyaWVzO2MuaWRQcmV2aW91c1Jvb3Q9YS5wcmV2aW91c1Jvb3RJZDtjLnJvb3ROb2RlPWEubmV3Um9vdElkO2MuaXNEaXJ0eT0hMDthLnJlZHJhdyYmYy5jaGFydC5yZWRyYXcoKX0pfSxpc0RyaWxsQWxsb3dlZDpmdW5jdGlvbihhKXt2YXIgYz10aGlzLnRyZWUsZT1jLmNoaWxkcmVuWzBdO3JldHVybiEoMT09PWMuY2hpbGRyZW4ubGVuZ3RoJiYoIiI9PT10aGlzLnJvb3ROb2RlJiZhPT09ZS5pZHx8dGhpcy5yb290Tm9kZT09PWUuaWQmJiIiPT09YSkpfSxyZW5kZXJUcmF2ZXJzZVVwQnV0dG9uOmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMsZT1jLm5vZGVNYXBbYV0sZj1jLm9wdGlvbnMudHJhdmVyc2VVcEJ1dHRvbixiPUQoZi50ZXh0LGUubmFtZSwiPCBCYWNrIik7IiIhPT1hJiYoIWMuaXNEcmlsbEFsbG93ZWR8fHYoZS5wYXJlbnQpJiZjLmlzRHJpbGxBbGxvd2VkKGUucGFyZW50KSk/dGhpcy5kcmlsbFVwQnV0dG9uPyh0aGlzLmRyaWxsVXBCdXR0b24ucGxhY2VkPQohMSx0aGlzLmRyaWxsVXBCdXR0b24uYXR0cih7dGV4dDpifSkuYWxpZ24oKSk6KGU9KGE9Zi50aGVtZSkmJmEuc3RhdGVzLHRoaXMuZHJpbGxVcEJ1dHRvbj10aGlzLmNoYXJ0LnJlbmRlcmVyLmJ1dHRvbihiLG51bGwsbnVsbCxmdW5jdGlvbigpe2MuZHJpbGxVcCgpfSxhLGUmJmUuaG92ZXIsZSYmZS5zZWxlY3QpLmFkZENsYXNzKCJoaWdoY2hhcnRzLWRyaWxsdXAtYnV0dG9uIikuYXR0cih7YWxpZ246Zi5wb3NpdGlvbi5hbGlnbix6SW5kZXg6N30pLmFkZCgpLmFsaWduKGYucG9zaXRpb24sITEsZi5yZWxhdGl2ZVRvfHwicGxvdEJveCIpKTpjLmRyaWxsVXBCdXR0b24mJihjLmRyaWxsVXBCdXR0b249Yy5kcmlsbFVwQnV0dG9uLmRlc3Ryb3koKSl9LGJ1aWxkS0RUcmVlOmwsZHJhd0xlZ2VuZFN5bWJvbDp3LmRyYXdSZWN0YW5nbGUsZ2V0RXh0cmVtZXM6ZnVuY3Rpb24oKXt2YXIgYT1KLnByb3RvdHlwZS5nZXRFeHRyZW1lcy5jYWxsKHRoaXMsdGhpcy5jb2xvclZhbHVlRGF0YSksCmM9YS5kYXRhTWF4O3RoaXMudmFsdWVNaW49YS5kYXRhTWluO3RoaXMudmFsdWVNYXg9YztyZXR1cm4gSi5wcm90b3R5cGUuZ2V0RXh0cmVtZXMuY2FsbCh0aGlzKX0sZ2V0RXh0cmVtZXNGcm9tQWxsOiEwLHNldFN0YXRlOmZ1bmN0aW9uKGEpe3RoaXMub3B0aW9ucy5pbmFjdGl2ZU90aGVyUG9pbnRzPSEwO0oucHJvdG90eXBlLnNldFN0YXRlLmNhbGwodGhpcyxhLCExKTt0aGlzLm9wdGlvbnMuaW5hY3RpdmVPdGhlclBvaW50cz0hMX0sdXRpbHM6e3JlY3Vyc2l2ZTprfX0se2RyYXc6eCxzZXRWaXNpYmxlOkwucGllLnByb3RvdHlwZS5wb2ludENsYXNzLnByb3RvdHlwZS5zZXRWaXNpYmxlLGdldENsYXNzTmFtZTpmdW5jdGlvbigpe3ZhciBhPW0ucHJvdG90eXBlLmdldENsYXNzTmFtZS5jYWxsKHRoaXMpLGM9dGhpcy5zZXJpZXMsZT1jLm9wdGlvbnM7dGhpcy5ub2RlLmxldmVsPD1jLm5vZGVNYXBbYy5yb290Tm9kZV0ubGV2ZWw/YSs9IiBoaWdoY2hhcnRzLWFib3ZlLWxldmVsIjoKdGhpcy5ub2RlLmlzTGVhZnx8RChlLmludGVyYWN0QnlMZWFmLCFlLmFsbG93VHJhdmVyc2luZ1RyZWUpP3RoaXMubm9kZS5pc0xlYWZ8fChhKz0iIGhpZ2hjaGFydHMtaW50ZXJuYWwtbm9kZSIpOmErPSIgaGlnaGNoYXJ0cy1pbnRlcm5hbC1ub2RlLWludGVyYWN0aXZlIjtyZXR1cm4gYX0saXNWYWxpZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlkfHxGKHRoaXMudmFsdWUpfSxzZXRTdGF0ZTpmdW5jdGlvbihhKXttLnByb3RvdHlwZS5zZXRTdGF0ZS5jYWxsKHRoaXMsYSk7dGhpcy5ncmFwaGljJiZ0aGlzLmdyYXBoaWMuYXR0cih7ekluZGV4OiJob3ZlciI9PT1hPzE6MH0pfSxzaG91bGREcmF3OmZ1bmN0aW9uKCl7cmV0dXJuIEYodGhpcy5wbG90WSkmJm51bGwhPT10aGlzLnl9fSk7QihkLlNlcmllcywiYWZ0ZXJCaW5kQXhlcyIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLnhBeGlzLGM9dGhpcy55QXhpcztpZihhJiZjKWlmKHRoaXMuaXMoInRyZWVtYXAiKSl7dmFyIGU9e2VuZE9uVGljazohMSwKZ3JpZExpbmVXaWR0aDowLGxpbmVXaWR0aDowLG1pbjowLGRhdGFNaW46MCxtaW5QYWRkaW5nOjAsbWF4OjEwMCxkYXRhTWF4OjEwMCxtYXhQYWRkaW5nOjAsc3RhcnRPblRpY2s6ITEsdGl0bGU6bnVsbCx0aWNrUG9zaXRpb25zOltdfTtDKGMub3B0aW9ucyxlKTtDKGEub3B0aW9ucyxlKTtuPSEwfWVsc2UgbiYmKGMuc2V0T3B0aW9ucyhjLnVzZXJPcHRpb25zKSxhLnNldE9wdGlvbnMoYS51c2VyT3B0aW9ucyksbj0hMSl9KTsiIn0pO0MoZCwibW9kdWxlcy9zdW5idXJzdC5zcmMuanMiLFtkWyJwYXJ0cy9HbG9iYWxzLmpzIl0sZFsicGFydHMvVXRpbGl0aWVzLmpzIl0sZFsibWl4aW5zL2RyYXctcG9pbnQuanMiXSxkWyJtaXhpbnMvdHJlZS1zZXJpZXMuanMiXV0sZnVuY3Rpb24oZCxiLEMscSl7dmFyIHc9Yi5jb3JyZWN0RmxvYXQsbT1iLmVycm9yLGw9Yi5leHRlbmQsdT1iLmlzTnVtYmVyLEI9Yi5pc09iamVjdCxnPWIuaXNTdHJpbmcsdD1iLm1lcmdlLHg9Yi5zZXJpZXNUeXBlLApJPWIuc3BsYXQ7Yj1kLkNlbnRlcmVkU2VyaWVzTWl4aW47dmFyIE09ZC5TZXJpZXMsTj1iLmdldENlbnRlcixGPXEuZ2V0Q29sb3IsUT1xLmdldExldmVsT3B0aW9ucyx2PWIuZ2V0U3RhcnRBbmRFbmRSYWRpYW5zLEc9MTgwL01hdGguUEksRT1kLnNlcmllc1R5cGVzLEQ9cS5zZXRUcmVlVmFsdWVzLFI9cS51cGRhdGVSb290SWQsTD1mdW5jdGlvbihmLGIpe3ZhciBkPVtdO2lmKHUoZikmJnUoYikmJmY8PWIpZm9yKDtmPD1iO2YrKylkLnB1c2goZik7cmV0dXJuIGR9LE89ZnVuY3Rpb24oYixkKXtkPUIoZCk/ZDp7fTt2YXIgZj0wLGs7aWYoQihiKSl7dmFyIGE9dCh7fSxiKTtiPXUoZC5mcm9tKT9kLmZyb206MDt2YXIgYz11KGQudG8pP2QudG86MDt2YXIgZT1MKGIsYyk7Yj1PYmplY3Qua2V5cyhhKS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuLTE9PT1lLmluZGV4T2YoK2EpfSk7dmFyIGc9az11KGQuZGlmZlJhZGl1cyk/ZC5kaWZmUmFkaXVzOjA7ZS5mb3JFYWNoKGZ1bmN0aW9uKGMpe2M9CmFbY107dmFyIGI9Yy5sZXZlbFNpemUudW5pdCxlPWMubGV2ZWxTaXplLnZhbHVlOyJ3ZWlnaHQiPT09Yj9mKz1lOiJwZXJjZW50YWdlIj09PWI/KGMubGV2ZWxTaXplPXt1bml0OiJwaXhlbHMiLHZhbHVlOmUvMTAwKmd9LGstPWMubGV2ZWxTaXplLnZhbHVlKToicGl4ZWxzIj09PWImJihrLT1lKX0pO2UuZm9yRWFjaChmdW5jdGlvbihjKXt2YXIgYj1hW2NdOyJ3ZWlnaHQiPT09Yi5sZXZlbFNpemUudW5pdCYmKGI9Yi5sZXZlbFNpemUudmFsdWUsYVtjXS5sZXZlbFNpemU9e3VuaXQ6InBpeGVscyIsdmFsdWU6Yi9mKmt9KX0pO2IuZm9yRWFjaChmdW5jdGlvbihjKXthW2NdLmxldmVsU2l6ZT17dmFsdWU6MCx1bml0OiJwaXhlbHMifX0pfXJldHVybiBhfSxQPWZ1bmN0aW9uKGIpe3ZhciBmPWIubGV2ZWw7cmV0dXJue2Zyb206MDxmP2Y6MSx0bzpmK2IuaGVpZ2h0fX0sSj1mdW5jdGlvbihiLGQpe3ZhciBmPWQubWFwSWRUb05vZGVbYi5wYXJlbnRdLGs9ZC5zZXJpZXMsYT1rLmNoYXJ0LApjPWsucG9pbnRzW2IuaV07Zj1GKGIse2NvbG9yczprLm9wdGlvbnMuY29sb3JzfHxhJiZhLm9wdGlvbnMuY29sb3JzLGNvbG9ySW5kZXg6ay5jb2xvckluZGV4LGluZGV4OmQuaW5kZXgsbWFwT3B0aW9uc1RvTGV2ZWw6ZC5tYXBPcHRpb25zVG9MZXZlbCxwYXJlbnRDb2xvcjpmJiZmLmNvbG9yLHBhcmVudENvbG9ySW5kZXg6ZiYmZi5jb2xvckluZGV4LHNlcmllczpkLnNlcmllcyxzaWJsaW5nczpkLnNpYmxpbmdzfSk7Yi5jb2xvcj1mLmNvbG9yO2IuY29sb3JJbmRleD1mLmNvbG9ySW5kZXg7YyYmKGMuY29sb3I9Yi5jb2xvcixjLmNvbG9ySW5kZXg9Yi5jb2xvckluZGV4LGIuc2xpY2VkPWIuaWQhPT1kLmlkUm9vdD9jLnNsaWNlZDohMSk7cmV0dXJuIGJ9O3goInN1bmJ1cnN0IiwidHJlZW1hcCIse2NlbnRlcjpbIjUwJSIsIjUwJSJdLGNvbG9yQnlQb2ludDohMSxvcGFjaXR5OjEsZGF0YUxhYmVsczp7YWxsb3dPdmVybGFwOiEwLGRlZmVyOiEwLHJvdGF0aW9uTW9kZToiYXV0byIsCnN0eWxlOnt0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIn19LHJvb3RJZDp2b2lkIDAsbGV2ZWxJc0NvbnN0YW50OiEwLGxldmVsU2l6ZTp7dmFsdWU6MSx1bml0OiJ3ZWlnaHQifSxzbGljZWRPZmZzZXQ6MTB9LHtkcmF3RGF0YUxhYmVsczpkLm5vb3AsZHJhd1BvaW50czpmdW5jdGlvbigpe3ZhciBiPXRoaXMsZD1iLm1hcE9wdGlvbnNUb0xldmVsLGc9Yi5zaGFwZVJvb3QsbT1iLmdyb3VwLGE9Yi5oYXNSZW5kZXJlZCxjPWIucm9vdE5vZGUsZT1iLmlkUHJldmlvdXNSb290LHA9Yi5ub2RlTWFwLGg9cFtlXSxxPWgmJmguc2hhcGVBcmdzO2g9Yi5wb2ludHM7dmFyIHo9Yi5zdGFydEFuZEVuZFJhZGlhbnMsdz1iLmNoYXJ0LHY9dyYmdy5vcHRpb25zJiZ3Lm9wdGlvbnMuY2hhcnR8fHt9LEM9ImJvb2xlYW4iPT09dHlwZW9mIHYuYW5pbWF0aW9uP3YuYW5pbWF0aW9uOiEwLHI9Yi5jZW50ZXJbM10vMixEPWIuY2hhcnQucmVuZGVyZXIseD0hMSxFPSExO2lmKHY9ISEoQyYmYSYmYyE9PWUmJgpiLmRhdGFMYWJlbHNHcm91cCkpe2IuZGF0YUxhYmVsc0dyb3VwLmF0dHIoe29wYWNpdHk6MH0pO3ZhciBGPWZ1bmN0aW9uKCl7eD0hMDtiLmRhdGFMYWJlbHNHcm91cCYmYi5kYXRhTGFiZWxzR3JvdXAuYW5pbWF0ZSh7b3BhY2l0eToxLHZpc2liaWxpdHk6InZpc2libGUifSl9fWguZm9yRWFjaChmdW5jdGlvbihmKXt2YXIgaD1mLm5vZGUsaz1kW2gubGV2ZWxdO3ZhciB5PWYuc2hhcGVFeGlzdGluZ3x8e307dmFyIG49aC5zaGFwZUFyZ3N8fHt9LHY9ISghaC52aXNpYmxlfHwhaC5zaGFwZUFyZ3MpO2lmKGEmJkMpe3ZhciB4PXt9O3ZhciBLPXtlbmQ6bi5lbmQsc3RhcnQ6bi5zdGFydCxpbm5lclI6bi5pbm5lclIscjpuLnIseDpuLngseTpuLnl9O3Y/IWYuZ3JhcGhpYyYmcSYmKHg9Yz09PWYuaWQ/e3N0YXJ0Onouc3RhcnQsZW5kOnouZW5kfTpxLmVuZDw9bi5zdGFydD97c3RhcnQ6ei5lbmQsZW5kOnouZW5kfTp7c3RhcnQ6ei5zdGFydCxlbmQ6ei5zdGFydH0seC5pbm5lclI9eC5yPQpyKTpmLmdyYXBoaWMmJihlPT09Zi5pZD9LPXtpbm5lclI6cixyOnJ9OmcmJihLPWcuZW5kPD15LnN0YXJ0P3tpbm5lclI6cixyOnIsc3RhcnQ6ei5lbmQsZW5kOnouZW5kfTp7aW5uZXJSOnIscjpyLHN0YXJ0Onouc3RhcnQsZW5kOnouc3RhcnR9KSk7eT14fWVsc2UgSz1uLHk9e307eD1bbi5wbG90WCxuLnBsb3RZXTtpZighZi5ub2RlLmlzTGVhZilpZihjPT09Zi5pZCl7dmFyIEE9cFtjXTtBPUEucGFyZW50fWVsc2UgQT1mLmlkO2woZix7c2hhcGVFeGlzdGluZzpuLHRvb2x0aXBQb3M6eCxkcmlsbElkOkEsbmFtZToiIisoZi5uYW1lfHxmLmlkfHxmLmluZGV4KSxwbG90WDpuLnBsb3RYLHBsb3RZOm4ucGxvdFksdmFsdWU6aC52YWwsaXNOdWxsOiF2fSk7QT1mLm9wdGlvbnM7aD1CKG4pP246e307QT1CKEEpP0EuZGF0YUxhYmVsczp7fTtrPUkoQihrKT9rLmRhdGFMYWJlbHM6e30pWzBdO2s9dCh7c3R5bGU6e319LGssQSk7QT1rLnJvdGF0aW9uTW9kZTtpZighdShrLnJvdGF0aW9uKSl7aWYoImF1dG8iPT09CkF8fCJjaXJjdWxhciI9PT1BKWlmKDE+Zi5pbm5lckFyY0xlbmd0aCYmZi5vdXRlckFyY0xlbmd0aD5oLnJhZGl1cyl7dmFyIEg9MDtmLmRhdGFMYWJlbFBhdGgmJiJjaXJjdWxhciI9PT1BJiYoay50ZXh0UGF0aD17ZW5hYmxlZDohMH0pfWVsc2UgMTxmLmlubmVyQXJjTGVuZ3RoJiZmLm91dGVyQXJjTGVuZ3RoPjEuNSpoLnJhZGl1cz8iY2lyY3VsYXIiPT09QT9rLnRleHRQYXRoPXtlbmFibGVkOiEwLGF0dHJpYnV0ZXM6e2R5OjV9fTpBPSJwYXJhbGxlbCI6KGYuZGF0YUxhYmVsJiZmLmRhdGFMYWJlbC50ZXh0UGF0aFdyYXBwZXImJiJjaXJjdWxhciI9PT1BJiYoay50ZXh0UGF0aD17ZW5hYmxlZDohMX0pLEE9InBlcnBlbmRpY3VsYXIiKTsiYXV0byIhPT1BJiYiY2lyY3VsYXIiIT09QSYmKEg9aC5lbmQtKGguZW5kLWguc3RhcnQpLzIpO2suc3R5bGUud2lkdGg9InBhcmFsbGVsIj09PUE/TWF0aC5taW4oMi41KmgucmFkaXVzLChmLm91dGVyQXJjTGVuZ3RoK2YuaW5uZXJBcmNMZW5ndGgpLwoyKTpoLnJhZGl1czsicGVycGVuZGljdWxhciI9PT1BJiZmLnNlcmllcy5jaGFydC5yZW5kZXJlci5mb250TWV0cmljcyhrLnN0eWxlLmZvbnRTaXplKS5oPmYub3V0ZXJBcmNMZW5ndGgmJihrLnN0eWxlLndpZHRoPTEpO2suc3R5bGUud2lkdGg9TWF0aC5tYXgoay5zdHlsZS53aWR0aC0yKihrLnBhZGRpbmd8fDApLDEpO0g9SCpHJTE4MDsicGFyYWxsZWwiPT09QSYmKEgtPTkwKTs5MDxIP0gtPTE4MDotOTA+SCYmKEgrPTE4MCk7ay5yb3RhdGlvbj1IfWsudGV4dFBhdGgmJigwPT09Zi5zaGFwZUV4aXN0aW5nLmlubmVyUiYmay50ZXh0UGF0aC5lbmFibGVkPyhrLnJvdGF0aW9uPTAsay50ZXh0UGF0aC5lbmFibGVkPSExLGsuc3R5bGUud2lkdGg9TWF0aC5tYXgoMipmLnNoYXBlRXhpc3Rpbmcuci0yKihrLnBhZGRpbmd8fDApLDEpKTpmLmRsT3B0aW9ucyYmZi5kbE9wdGlvbnMudGV4dFBhdGgmJiFmLmRsT3B0aW9ucy50ZXh0UGF0aC5lbmFibGVkJiYiY2lyY3VsYXIiPT09QSYmKGsudGV4dFBhdGguZW5hYmxlZD0KITApLGsudGV4dFBhdGguZW5hYmxlZCYmKGsucm90YXRpb249MCxrLnN0eWxlLndpZHRoPU1hdGgubWF4KChmLm91dGVyQXJjTGVuZ3RoK2YuaW5uZXJBcmNMZW5ndGgpLzItMiooay5wYWRkaW5nfHwwKSwxKSkpOzA9PT1rLnJvdGF0aW9uJiYoay5yb3RhdGlvbj0uMDAxKTtmLmRsT3B0aW9ucz1rO2lmKCFFJiZ2KXtFPSEwO3ZhciBWPUZ9Zi5kcmF3KHthbmltYXRhYmxlQXR0cmliczpLLGF0dHJpYnM6bCh5LCF3LnN0eWxlZE1vZGUmJmIucG9pbnRBdHRyaWJzKGYsZi5zZWxlY3RlZCYmInNlbGVjdCIpKSxvbkNvbXBsZXRlOlYsZ3JvdXA6bSxyZW5kZXJlcjpELHNoYXBlVHlwZToiYXJjIixzaGFwZUFyZ3M6bn0pfSk7diYmRT8oYi5oYXNSZW5kZXJlZD0hMSxiLm9wdGlvbnMuZGF0YUxhYmVscy5kZWZlcj0hMCxNLnByb3RvdHlwZS5kcmF3RGF0YUxhYmVscy5jYWxsKGIpLGIuaGFzUmVuZGVyZWQ9ITAseCYmRigpKTpNLnByb3RvdHlwZS5kcmF3RGF0YUxhYmVscy5jYWxsKGIpfSxwb2ludEF0dHJpYnM6RS5jb2x1bW4ucHJvdG90eXBlLnBvaW50QXR0cmlicywKbGF5b3V0QWxnb3JpdGhtOmZ1bmN0aW9uKGIsZCxnKXt2YXIgZj1iLnN0YXJ0LGE9Yi5lbmQtZixjPWIudmFsLGU9Yi54LGs9Yi55LGg9ZyYmQihnLmxldmVsU2l6ZSkmJnUoZy5sZXZlbFNpemUudmFsdWUpP2cubGV2ZWxTaXplLnZhbHVlOjAsbT1iLnIsbD1tK2gseT1nJiZ1KGcuc2xpY2VkT2Zmc2V0KT9nLnNsaWNlZE9mZnNldDowO3JldHVybihkfHxbXSkucmVkdWNlKGZ1bmN0aW9uKGIsZCl7dmFyIGc9MS9jKmQudmFsKmEsbj1mK2cvMixwPWUrTWF0aC5jb3MobikqeTtuPWsrTWF0aC5zaW4obikqeTtkPXt4OmQuc2xpY2VkP3A6ZSx5OmQuc2xpY2VkP246ayxpbm5lclI6bSxyOmwscmFkaXVzOmgsc3RhcnQ6ZixlbmQ6ZitnfTtiLnB1c2goZCk7Zj1kLmVuZDtyZXR1cm4gYn0sW10pfSxzZXRTaGFwZUFyZ3M6ZnVuY3Rpb24oYixkLGcpe3ZhciBmPVtdLGE9Z1tiLmxldmVsKzFdO2I9Yi5jaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIGEudmlzaWJsZX0pO2Y9dGhpcy5sYXlvdXRBbGdvcml0aG0oZCwKYixhKTtiLmZvckVhY2goZnVuY3Rpb24oYSxiKXtiPWZbYl07dmFyIGM9Yi5zdGFydCsoYi5lbmQtYi5zdGFydCkvMixkPWIuaW5uZXJSKyhiLnItYi5pbm5lclIpLzIsZT1iLmVuZC1iLnN0YXJ0O2Q9MD09PWIuaW5uZXJSJiY2LjI4PGU/e3g6Yi54LHk6Yi55fTp7eDpiLngrTWF0aC5jb3MoYykqZCx5OmIueStNYXRoLnNpbihjKSpkfTt2YXIgaz1hLnZhbD9hLmNoaWxkcmVuVG90YWw+YS52YWw/YS5jaGlsZHJlblRvdGFsOmEudmFsOmEuY2hpbGRyZW5Ub3RhbDt0aGlzLnBvaW50c1thLmldJiYodGhpcy5wb2ludHNbYS5pXS5pbm5lckFyY0xlbmd0aD1lKmIuaW5uZXJSLHRoaXMucG9pbnRzW2EuaV0ub3V0ZXJBcmNMZW5ndGg9ZSpiLnIpO2Euc2hhcGVBcmdzPXQoYix7cGxvdFg6ZC54LHBsb3RZOmQueSs0Kk1hdGguYWJzKE1hdGguY29zKGMpKX0pO2EudmFsdWVzPXQoYix7dmFsOmt9KTthLmNoaWxkcmVuLmxlbmd0aCYmdGhpcy5zZXRTaGFwZUFyZ3MoYSxhLnZhbHVlcyxnKX0sCnRoaXMpfSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLGQ9Yi5vcHRpb25zLGw9Yi5jZW50ZXI9Ti5jYWxsKGIpLG49Yi5zdGFydEFuZEVuZFJhZGlhbnM9dihkLnN0YXJ0QW5nbGUsZC5lbmRBbmdsZSksYT1sWzNdLzIsYz1sWzJdLzItYSxlPVIoYikscD1iLm5vZGVNYXAsaD1wJiZwW2VdLHQ9e307Yi5zaGFwZVJvb3Q9aCYmaC5zaGFwZUFyZ3M7TS5wcm90b3R5cGUudHJhbnNsYXRlLmNhbGwoYik7dmFyIHc9Yi50cmVlPWIuZ2V0VHJlZSgpO2IucmVuZGVyVHJhdmVyc2VVcEJ1dHRvbihlKTtwPWIubm9kZU1hcDtoPXBbZV07dmFyIHU9ZyhoLnBhcmVudCk/aC5wYXJlbnQ6IiI7dT1wW3VdO3ZhciBxPVAoaCk7dmFyIHg9cS5mcm9tLHI9cS50bztxPVEoe2Zyb206eCxsZXZlbHM6Yi5vcHRpb25zLmxldmVscyx0bzpyLGRlZmF1bHRzOntjb2xvckJ5UG9pbnQ6ZC5jb2xvckJ5UG9pbnQsZGF0YUxhYmVsczpkLmRhdGFMYWJlbHMsbGV2ZWxJc0NvbnN0YW50OmQubGV2ZWxJc0NvbnN0YW50LApsZXZlbFNpemU6ZC5sZXZlbFNpemUsc2xpY2VkT2Zmc2V0OmQuc2xpY2VkT2Zmc2V0fX0pO3E9TyhxLHtkaWZmUmFkaXVzOmMsZnJvbTp4LHRvOnJ9KTtEKHcse2JlZm9yZTpKLGlkUm9vdDplLGxldmVsSXNDb25zdGFudDpkLmxldmVsSXNDb25zdGFudCxtYXBPcHRpb25zVG9MZXZlbDpxLG1hcElkVG9Ob2RlOnAscG9pbnRzOmIucG9pbnRzLHNlcmllczpifSk7ZD1wWyIiXS5zaGFwZUFyZ3M9e2VuZDpuLmVuZCxyOmEsc3RhcnQ6bi5zdGFydCx2YWw6aC52YWwseDpsWzBdLHk6bFsxXX07dGhpcy5zZXRTaGFwZUFyZ3ModSxkLHEpO2IubWFwT3B0aW9uc1RvTGV2ZWw9cTtiLmRhdGEuZm9yRWFjaChmdW5jdGlvbihhKXt0W2EuaWRdJiZtKDMxLCExLGIuY2hhcnQpO3RbYS5pZF09ITB9KTt0PXt9fSxhbGlnbkRhdGFMYWJlbDpmdW5jdGlvbihiLGQsZyl7aWYoIWcudGV4dFBhdGh8fCFnLnRleHRQYXRoLmVuYWJsZWQpcmV0dXJuIEUudHJlZW1hcC5wcm90b3R5cGUuYWxpZ25EYXRhTGFiZWwuYXBwbHkodGhpcywKYXJndW1lbnRzKX0sYW5pbWF0ZTpmdW5jdGlvbihiKXt2YXIgZD10aGlzLmNoYXJ0LGY9W2QucGxvdFdpZHRoLzIsZC5wbG90SGVpZ2h0LzJdLGc9ZC5wbG90TGVmdCxhPWQucGxvdFRvcDtkPXRoaXMuZ3JvdXA7Yj8oYj17dHJhbnNsYXRlWDpmWzBdK2csdHJhbnNsYXRlWTpmWzFdK2Esc2NhbGVYOi4wMDEsc2NhbGVZOi4wMDEscm90YXRpb246MTAsb3BhY2l0eTouMDF9LGQuYXR0cihiKSk6KGI9e3RyYW5zbGF0ZVg6Zyx0cmFuc2xhdGVZOmEsc2NhbGVYOjEsc2NhbGVZOjEscm90YXRpb246MCxvcGFjaXR5OjF9LGQuYW5pbWF0ZShiLHRoaXMub3B0aW9ucy5hbmltYXRpb24pKX0sdXRpbHM6e2NhbGN1bGF0ZUxldmVsU2l6ZXM6TyxnZXRMZXZlbEZyb21BbmRUbzpQLHJhbmdlOkx9fSx7ZHJhdzpDLHNob3VsZERyYXc6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5pc051bGx9LGlzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZ2V0RGF0YUxhYmVsUGF0aDpmdW5jdGlvbihiKXt2YXIgZD0KdGhpcy5zZXJpZXMuY2hhcnQucmVuZGVyZXIsZj10aGlzLnNoYXBlRXhpc3RpbmcsZz1mLnN0YXJ0LGE9Zi5lbmQsYz1nKyhhLWcpLzI7Yz0wPmMmJmM+LU1hdGguUEl8fGM+TWF0aC5QSTt2YXIgZT1mLnIrKGIub3B0aW9ucy5kaXN0YW5jZXx8MCk7Zz09PS1NYXRoLlBJLzImJncoYSk9PT13KDEuNSpNYXRoLlBJKSYmKGc9LU1hdGguUEkrTWF0aC5QSS8zNjAsYT0tTWF0aC5QSS8zNjAsYz0hMCk7aWYoYS1nPk1hdGguUEkpe2M9ITE7dmFyIGw9ITB9dGhpcy5kYXRhTGFiZWxQYXRoJiYodGhpcy5kYXRhTGFiZWxQYXRoPXRoaXMuZGF0YUxhYmVsUGF0aC5kZXN0cm95KCkpO3RoaXMuZGF0YUxhYmVsUGF0aD1kLmFyYyh7b3BlbjohMCxsb25nQXJjOmw/MTowfSkuYWRkKGIpO3RoaXMuZGF0YUxhYmVsUGF0aC5hdHRyKHtzdGFydDpjP2c6YSxlbmQ6Yz9hOmcsY2xvY2t3aXNlOitjLHg6Zi54LHk6Zi55LHI6KGUrZi5pbm5lclIpLzJ9KTtyZXR1cm4gdGhpcy5kYXRhTGFiZWxQYXRofX0pfSk7CkMoZCwibWFzdGVycy9tb2R1bGVzL3N1bmJ1cnN0LnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1zdW5idXJzdC5qcy5tYXA="></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIFZlY3RvciBwbG90IHNlcmllcyBtb2R1bGUKCiAoYykgMjAxMC0yMDE5IFRvcnN0ZWluIEhvbnNpCgogTGljZW5zZTogd3d3LmhpZ2hjaGFydHMuY29tL2xpY2Vuc2UKKi8KKGZ1bmN0aW9uKGEpeyJvYmplY3QiPT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/KGFbImRlZmF1bHQiXT1hLG1vZHVsZS5leHBvcnRzPWEpOiJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiaGlnaGNoYXJ0cy9tb2R1bGVzL3ZlY3RvciIsWyJoaWdoY2hhcnRzIl0sZnVuY3Rpb24oYyl7YShjKTthLkhpZ2hjaGFydHM9YztyZXR1cm4gYX0pOmEoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihhKXtmdW5jdGlvbiBjKGEsZCxjLGUpe2EuaGFzT3duUHJvcGVydHkoZCl8fChhW2RdPWUuYXBwbHkobnVsbCxjKSl9YT1hP2EuX21vZHVsZXM6e307YyhhLCJtb2R1bGVzL3ZlY3Rvci5zcmMuanMiLFthWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGEsZCl7dmFyIGM9ZC5hbmltT2JqZWN0LGU9ZC5hcnJheU1heCxnPWQucGljaztkPQpkLnNlcmllc1R5cGU7ZCgidmVjdG9yIiwic2NhdHRlciIse2xpbmVXaWR0aDoyLG1hcmtlcjpudWxsLHJvdGF0aW9uT3JpZ2luOiJjZW50ZXIiLHN0YXRlczp7aG92ZXI6e2xpbmVXaWR0aFBsdXM6MX19LHRvb2x0aXA6e3BvaW50Rm9ybWF0OiI8Yj5be3BvaW50Lnh9LCB7cG9pbnQueX1dPC9iPjxici8+TGVuZ3RoOiA8Yj57cG9pbnQubGVuZ3RofTwvYj48YnIvPkRpcmVjdGlvbjogPGI+e3BvaW50LmRpcmVjdGlvbn1cdTAwYjA8L2I+PGJyLz4ifSx2ZWN0b3JMZW5ndGg6MjB9LHtwb2ludEFycmF5TWFwOlsieSIsImxlbmd0aCIsImRpcmVjdGlvbiJdLHBhcmFsbGVsQXJyYXlzOlsieCIsInkiLCJsZW5ndGgiLCJkaXJlY3Rpb24iXSxwb2ludEF0dHJpYnM6ZnVuY3Rpb24oYSxiKXt2YXIgZj10aGlzLm9wdGlvbnM7YT1hLmNvbG9yfHx0aGlzLmNvbG9yO3ZhciBjPXRoaXMub3B0aW9ucy5saW5lV2lkdGg7YiYmKGE9Zi5zdGF0ZXNbYl0uY29sb3J8fGEsYz0oZi5zdGF0ZXNbYl0ubGluZVdpZHRofHwKYykrKGYuc3RhdGVzW2JdLmxpbmVXaWR0aFBsdXN8fDApKTtyZXR1cm57c3Ryb2tlOmEsInN0cm9rZS13aWR0aCI6Y319LG1hcmtlckF0dHJpYnM6YS5ub29wLGdldFN5bWJvbDphLm5vb3AsYXJyb3c6ZnVuY3Rpb24oYSl7YT1hLmxlbmd0aC90aGlzLmxlbmd0aE1heCp0aGlzLm9wdGlvbnMudmVjdG9yTGVuZ3RoLzIwO3ZhciBiPXtzdGFydDoxMCphLGNlbnRlcjowLGVuZDotMTAqYX1bdGhpcy5vcHRpb25zLnJvdGF0aW9uT3JpZ2luXXx8MDtyZXR1cm5bWyJNIiwwLDcqYStiXSxbIkwiLC0xLjUqYSw3KmErYl0sWyJMIiwwLDEwKmErYl0sWyJMIiwxLjUqYSw3KmErYl0sWyJMIiwwLDcqYStiXSxbIkwiLDAsLTEwKmErYl1dfSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXthLlNlcmllcy5wcm90b3R5cGUudHJhbnNsYXRlLmNhbGwodGhpcyk7dGhpcy5sZW5ndGhNYXg9ZSh0aGlzLmxlbmd0aERhdGEpfSxkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jaGFydDt0aGlzLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPQpiLnBsb3RYLGQ9Yi5wbG90WTshMT09PXRoaXMub3B0aW9ucy5jbGlwfHxhLmlzSW5zaWRlUGxvdChjLGQsYS5pbnZlcnRlZCk/KGIuZ3JhcGhpY3x8KGIuZ3JhcGhpYz10aGlzLmNoYXJ0LnJlbmRlcmVyLnBhdGgoKS5hZGQodGhpcy5tYXJrZXJHcm91cCkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtcG9pbnQgaGlnaGNoYXJ0cy1jb2xvci0iK2coYi5jb2xvckluZGV4LGIuc2VyaWVzLmNvbG9ySW5kZXgpKSksYi5ncmFwaGljLmF0dHIoe2Q6dGhpcy5hcnJvdyhiKSx0cmFuc2xhdGVYOmMsdHJhbnNsYXRlWTpkLHJvdGF0aW9uOmIuZGlyZWN0aW9ufSksdGhpcy5jaGFydC5zdHlsZWRNb2RlfHxiLmdyYXBoaWMuYXR0cih0aGlzLnBvaW50QXR0cmlicyhiKSkpOmIuZ3JhcGhpYyYmKGIuZ3JhcGhpYz1iLmdyYXBoaWMuZGVzdHJveSgpKX0sdGhpcyl9LGRyYXdHcmFwaDphLm5vb3AsYW5pbWF0ZTpmdW5jdGlvbihhKXthP3RoaXMubWFya2VyR3JvdXAuYXR0cih7b3BhY2l0eTouMDF9KTp0aGlzLm1hcmtlckdyb3VwLmFuaW1hdGUoe29wYWNpdHk6MX0sCmModGhpcy5vcHRpb25zLmFuaW1hdGlvbikpfX0pOyIifSk7YyhhLCJtYXN0ZXJzL21vZHVsZXMvdmVjdG9yLnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD12ZWN0b3IuanMubWFw"></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIChjKSAyMDE2LTIwMTkgSGlnaHNvZnQgQVMKIEF1dGhvcnM6IEpvbiBBcmlsZCBOeWdhcmQKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24oYil7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8oYlsiZGVmYXVsdCJdPWIsbW9kdWxlLmV4cG9ydHM9Yik6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL21vZHVsZXMvd29yZGNsb3VkIixbImhpZ2hjaGFydHMiXSxmdW5jdGlvbihsKXtiKGwpO2IuSGlnaGNoYXJ0cz1sO3JldHVybiBifSk6YigidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGwoYixlLHosaCl7Yi5oYXNPd25Qcm9wZXJ0eShlKXx8KGJbZV09aC5hcHBseShudWxsLHopKX1iPWI/Yi5fbW9kdWxlczp7fTtsKGIsIm1peGlucy9kcmF3LXBvaW50LmpzIixbXSxmdW5jdGlvbigpe3ZhciBiPWZ1bmN0aW9uKGUpe3ZhciBiLGg9dGhpcyxwPWguZ3JhcGhpYyx0PWUuYW5pbWF0YWJsZUF0dHJpYnMsdT1lLm9uQ29tcGxldGUsbD1lLmNzcywKcT1lLnJlbmRlcmVyLHk9bnVsbD09PShiPWguc2VyaWVzKXx8dm9pZCAwPT09Yj92b2lkIDA6Yi5vcHRpb25zLmFuaW1hdGlvbjtpZihoLnNob3VsZERyYXcoKSlwfHwoaC5ncmFwaGljPXA9cVtlLnNoYXBlVHlwZV0oZS5zaGFwZUFyZ3MpLmFkZChlLmdyb3VwKSkscC5jc3MobCkuYXR0cihlLmF0dHJpYnMpLmFuaW1hdGUodCxlLmlzTmV3PyExOnksdSk7ZWxzZSBpZihwKXt2YXIgdj1mdW5jdGlvbigpe2guZ3JhcGhpYz1wPXAuZGVzdHJveSgpOyJmdW5jdGlvbiI9PT10eXBlb2YgdSYmdSgpfTtPYmplY3Qua2V5cyh0KS5sZW5ndGg/cC5hbmltYXRlKHQsdm9pZCAwLGZ1bmN0aW9uKCl7digpfSk6digpfX07cmV0dXJuIGZ1bmN0aW9uKGUpeyhlLmF0dHJpYnM9ZS5hdHRyaWJzfHx7fSlbImNsYXNzIl09dGhpcy5nZXRDbGFzc05hbWUoKTtiLmNhbGwodGhpcyxlKX19KTtsKGIsIm1peGlucy9wb2x5Z29uLmpzIixbYlsicGFydHMvR2xvYmFscy5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdXSwKZnVuY3Rpb24oYixlKXt2YXIgbD1lLmZpbmQsaD1lLmlzQXJyYXkscD1lLmlzTnVtYmVyLHQ9Yi5kZWcycmFkLHU9ZnVuY3Rpb24oYSxjKXtjPXAoYyk/YzoxNDtjPU1hdGgucG93KDEwLGMpO3JldHVybiBNYXRoLnJvdW5kKGEqYykvY30sSD1mdW5jdGlvbihhLGMpe3ZhciBiPWNbMF0tYVswXTthPWNbMV0tYVsxXTtyZXR1cm5bWy1hLGJdLFthLC1iXV19LHE9ZnVuY3Rpb24oYSxjKXthPWEubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhWzBdKmNbMF0rYVsxXSpjWzFdfSk7cmV0dXJue21pbjpNYXRoLm1pbi5hcHBseSh0aGlzLGEpLG1heDpNYXRoLm1heC5hcHBseSh0aGlzLGEpfX0seT1mdW5jdGlvbihhLGMpe3ZhciBiPWFbMF07YT1hWzFdO3ZhciBrPXQqLWM7Yz1NYXRoLmNvcyhrKTtrPU1hdGguc2luKGspO3JldHVyblt1KGIqYy1hKmspLHUoYiprK2EqYyldfSx2PWZ1bmN0aW9uKGEsYyxiKXthPXkoW2FbMF0tY1swXSxhWzFdLWNbMV1dLGIpO3JldHVyblthWzBdK2NbMF0sYVsxXSsKY1sxXV19LEM9ZnVuY3Rpb24oYSl7dmFyIGM9YS5heGVzO2lmKCFoKGMpKXtjPVtdO3ZhciBiPWI9YS5jb25jYXQoW2FbMF1dKTtiLnJlZHVjZShmdW5jdGlvbihhLGIpe3ZhciBrPUgoYSxiKVswXTtsKGMsZnVuY3Rpb24oYSl7cmV0dXJuIGFbMF09PT1rWzBdJiZhWzFdPT09a1sxXX0pfHxjLnB1c2goayk7cmV0dXJuIGJ9KTthLmF4ZXM9Y31yZXR1cm4gY30sRj1mdW5jdGlvbihhLGMpe2E9QyhhKTtjPUMoYyk7cmV0dXJuIGEuY29uY2F0KGMpfTtyZXR1cm57Z2V0Qm91bmRpbmdCb3hGcm9tUG9seWdvbjpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZWR1Y2UoZnVuY3Rpb24oYSxiKXt2YXIgYz1iWzBdO2I9YlsxXTthLmxlZnQ9TWF0aC5taW4oYyxhLmxlZnQpO2EucmlnaHQ9TWF0aC5tYXgoYyxhLnJpZ2h0KTthLmJvdHRvbT1NYXRoLm1heChiLGEuYm90dG9tKTthLnRvcD1NYXRoLm1pbihiLGEudG9wKTtyZXR1cm4gYX0se2xlZnQ6TnVtYmVyLk1BWF9WQUxVRSxyaWdodDotTnVtYmVyLk1BWF9WQUxVRSwKYm90dG9tOi1OdW1iZXIuTUFYX1ZBTFVFLHRvcDpOdW1iZXIuTUFYX1ZBTFVFfSl9LGdldFBvbHlnb246ZnVuY3Rpb24oYSxiLGUsayxoKXt2YXIgYz1bYSxiXSxsPWEtZS8yO2ErPWUvMjtlPWItay8yO2IrPWsvMjtyZXR1cm5bW2wsZV0sW2EsZV0sW2EsYl0sW2wsYl1dLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gdihhLGMsLWgpfSl9LGlzUG9seWdvbnNDb2xsaWRpbmc6ZnVuY3Rpb24oYSxiKXt2YXIgYz1GKGEsYik7cmV0dXJuIWwoYyxmdW5jdGlvbihjKXt2YXIgZT1xKGEsYyk7Yz1xKGIsYyk7cmV0dXJuISEoYy5taW4+ZS5tYXh8fGMubWF4PGUubWluKX0pfSxtb3ZlUG9seWdvbjpmdW5jdGlvbihhLGIsZSl7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGMpe3JldHVybltjWzBdK2EsY1sxXStiXX0pfSxyb3RhdGUyRFRvT3JpZ2luOnkscm90YXRlMkRUb1BvaW50OnZ9fSk7bChiLCJtb2R1bGVzL3dvcmRjbG91ZC5zcmMuanMiLFtiWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYlsicGFydHMvVXRpbGl0aWVzLmpzIl0sCmJbIm1peGlucy9kcmF3LXBvaW50LmpzIl0sYlsibWl4aW5zL3BvbHlnb24uanMiXV0sZnVuY3Rpb24oYixlLGwsaCl7ZnVuY3Rpb24gcChnLGQpe3ZhciBmPSExLGE9Zy5yZWN0LGI9Zy5wb2x5Z29uLGU9Zy5sYXN0Q29sbGlkZWRXaXRoLGs9ZnVuY3Rpb24oZCl7dmFyIGY9ZC5yZWN0OyhmPSEoZi5sZWZ0PmEucmlnaHR8fGYucmlnaHQ8YS5sZWZ0fHxmLnRvcD5hLmJvdHRvbXx8Zi5ib3R0b208YS50b3ApKSYmKGcucm90YXRpb24lOTB8fGQucm90YXRpb24lOTApJiYoZj1EKGIsZC5wb2x5Z29uKSk7cmV0dXJuIGZ9O2UmJigoZj1rKGUpKXx8ZGVsZXRlIGcubGFzdENvbGxpZGVkV2l0aCk7Znx8KGY9ISFjKGQsZnVuY3Rpb24oZCl7dmFyIGY9ayhkKTtmJiYoZy5sYXN0Q29sbGlkZWRXaXRoPWQpO3JldHVybiBmfSkpO3JldHVybiBmfWZ1bmN0aW9uIHQoZyxkKXtkPTQqZzt2YXIgZj1NYXRoLmNlaWwoKE1hdGguc3FydChkKS0xKS8yKSxhPTIqZisxLGI9TWF0aC5wb3coYSwyKSxjPQohMTstLWE7MUU0Pj1nJiYoImJvb2xlYW4iPT09dHlwZW9mIGMmJmQ+PWItYSYmKGM9e3g6Zi0oYi1kKSx5Oi1mfSksYi09YSwiYm9vbGVhbiI9PT10eXBlb2YgYyYmZD49Yi1hJiYoYz17eDotZix5Oi1mKyhiLWQpfSksYi09YSwiYm9vbGVhbiI9PT10eXBlb2YgYyYmKGM9ZD49Yi1hP3t4Oi1mKyhiLWQpLHk6Zn06e3g6Zix5OmYtKGItZC1hKX0pLGMueCo9NSxjLnkqPTUpO3JldHVybiBjfWZ1bmN0aW9uIHUoZyxkLGYpe3ZhciBhPTIqTWF0aC5tYXgoTWF0aC5hYnMoZi50b3ApLE1hdGguYWJzKGYuYm90dG9tKSk7Zj0yKk1hdGgubWF4KE1hdGguYWJzKGYubGVmdCksTWF0aC5hYnMoZi5yaWdodCkpO3JldHVybiBNYXRoLm1pbigwPGY/MS9mKmc6MSwwPGE/MS9hKmQ6MSl9ZnVuY3Rpb24gSChnLGQsYSl7YT1hLnJlZHVjZShmdW5jdGlvbihhLGcpe2c9Zy5kaW1lbnNpb25zO3ZhciBkPU1hdGgubWF4KGcud2lkdGgsZy5oZWlnaHQpO2EubWF4SGVpZ2h0PU1hdGgubWF4KGEubWF4SGVpZ2h0LApnLmhlaWdodCk7YS5tYXhXaWR0aD1NYXRoLm1heChhLm1heFdpZHRoLGcud2lkdGgpO2EuYXJlYSs9ZCpkO3JldHVybiBhfSx7bWF4SGVpZ2h0OjAsbWF4V2lkdGg6MCxhcmVhOjB9KTthPU1hdGgubWF4KGEubWF4SGVpZ2h0LGEubWF4V2lkdGgsLjg1Kk1hdGguc3FydChhLmFyZWEpKTt2YXIgZj1nPmQ/Zy9kOjE7Zz1kPmc/ZC9nOjE7cmV0dXJue3dpZHRoOmEqZixoZWlnaHQ6YSpnLHJhdGlvWDpmLHJhdGlvWTpnfX1mdW5jdGlvbiBxKGEsZCxmLGIpe3ZhciBnPSExO2soYSkmJmsoZCkmJmsoZikmJmsoYikmJjA8YSYmLTE8ZCYmYj5mJiYoZz1mK2QlYSooKGItZikvKGEtMXx8MSkpKTtyZXR1cm4gZ31mdW5jdGlvbiB5KGEsZCl7dmFyIGcsYj1bXTtmb3IoZz0xOzFFND5nO2crKyliLnB1c2goYShnLGQpKTtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIDFFND49YT9iW2EtMV06ITF9fWZ1bmN0aW9uIHYoYSxkKXt2YXIgZz1kLndpZHRoLzIsYj0tKGQuaGVpZ2h0LzIpLGM9ZC5oZWlnaHQvCjI7cmV0dXJuISgtKGQud2lkdGgvMik8YS5sZWZ0JiZnPmEucmlnaHQmJmI8YS50b3AmJmM+YS5ib3R0b20pfWZ1bmN0aW9uIEMoZyxkKXt2YXIgYj1kLnBsYWNlZCxjPWQuZmllbGQsZT1kLnJlY3RhbmdsZSxrPWQucG9seWdvbixoPWQuc3BpcmFsLGw9MSxyPXt4OjAseTowfSxuPWcucmVjdD1hKHt9LGUpO2cucG9seWdvbj1rO2ZvcihnLnJvdGF0aW9uPWQucm90YXRpb247ITEhPT1yJiYocChnLGIpfHx2KG4sYykpOylyPWgobCksQShyKSYmKG4ubGVmdD1lLmxlZnQrci54LG4ucmlnaHQ9ZS5yaWdodCtyLngsbi50b3A9ZS50b3Arci55LG4uYm90dG9tPWUuYm90dG9tK3IueSxnLnBvbHlnb249SyhyLngsci55LGspKSxsKys7cmV0dXJuIHJ9ZnVuY3Rpb24gRihhLGQpe2lmKEEoYSkmJkEoZCkpe3ZhciBnPWQuYm90dG9tLWQudG9wO3ZhciBiPWQucmlnaHQtZC5sZWZ0O2Q9YS5yYXRpb1g7dmFyIGM9YS5yYXRpb1k7Zz1iKmQ+ZypjP2I6ZzthPUkoYSx7d2lkdGg6YS53aWR0aCtnKgpkKjIsaGVpZ2h0OmEuaGVpZ2h0K2cqYyoyfSl9cmV0dXJuIGF9dmFyIGE9ZS5leHRlbmQsYz1lLmZpbmQsej1lLmlzQXJyYXksaz1lLmlzTnVtYmVyLEE9ZS5pc09iamVjdCxJPWUubWVyZ2U7ZT1lLnNlcmllc1R5cGU7dmFyIEI9Yi5ub29wLEo9aC5nZXRCb3VuZGluZ0JveEZyb21Qb2x5Z29uLEw9aC5nZXRQb2x5Z29uLEQ9aC5pc1BvbHlnb25zQ29sbGlkaW5nLEs9aC5tb3ZlUG9seWdvbixFPWIuU2VyaWVzO2UoIndvcmRjbG91ZCIsImNvbHVtbiIse2FsbG93RXh0ZW5kUGxheWluZ0ZpZWxkOiEwLGFuaW1hdGlvbjp7ZHVyYXRpb246NTAwfSxib3JkZXJXaWR0aDowLGNsaXA6ITEsY29sb3JCeVBvaW50OiEwLG1pbkZvbnRTaXplOjEsbWF4Rm9udFNpemU6MjUscGxhY2VtZW50U3RyYXRlZ3k6ImNlbnRlciIscm90YXRpb246e2Zyb206MCxvcmllbnRhdGlvbnM6Mix0bzo5MH0sc2hvd0luTGVnZW5kOiExLHNwaXJhbDoicmVjdGFuZ3VsYXIiLHN0eWxlOntmb250RmFtaWx5OiJzYW5zLXNlcmlmIiwKZm9udFdlaWdodDoiOTAwIix3aGl0ZVNwYWNlOiJub3dyYXAifSx0b29sdGlwOntmb2xsb3dQb2ludGVyOiEwLHBvaW50Rm9ybWF0Oic8c3BhbiBzdHlsZT0iY29sb3I6e3BvaW50LmNvbG9yfSI+XHUyNWNmPC9zcGFuPiB7c2VyaWVzLm5hbWV9OiA8Yj57cG9pbnQud2VpZ2h0fTwvYj48YnIvPid9fSx7YW5pbWF0ZTpFLnByb3RvdHlwZS5hbmltYXRlLGFuaW1hdGVEcmlsbGRvd246QixhbmltYXRlRHJpbGx1cEZyb206QixzZXRDbGlwOkIsYmluZEF4ZXM6ZnVuY3Rpb24oKXt2YXIgZz17ZW5kT25UaWNrOiExLGdyaWRMaW5lV2lkdGg6MCxsaW5lV2lkdGg6MCxtYXhQYWRkaW5nOjAsc3RhcnRPblRpY2s6ITEsdGl0bGU6bnVsbCx0aWNrUG9zaXRpb25zOltdfTtFLnByb3RvdHlwZS5iaW5kQXhlcy5jYWxsKHRoaXMpO2EodGhpcy55QXhpcy5vcHRpb25zLGcpO2EodGhpcy54QXhpcy5vcHRpb25zLGcpfSxwb2ludEF0dHJpYnM6ZnVuY3Rpb24oYSxkKXthPWIuc2VyaWVzVHlwZXMuY29sdW1uLnByb3RvdHlwZS5wb2ludEF0dHJpYnMuY2FsbCh0aGlzLAphLGQpO2RlbGV0ZSBhLnN0cm9rZTtkZWxldGUgYVsic3Ryb2tlLXdpZHRoIl07cmV0dXJuIGF9LGRlcml2ZUZvbnRTaXplOmZ1bmN0aW9uKGEsZCxiKXthPWsoYSk/YTowO2Q9ayhkKT9kOjE7Yj1rKGIpP2I6MTtyZXR1cm4gTWF0aC5mbG9vcihNYXRoLm1heChiLGEqZCkpfSxkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxkPWIuaGFzUmVuZGVyZWQsYz1iLnhBeGlzLGU9Yi55QXhpcyxsPWIuZ3JvdXAsaD1iLm9wdGlvbnMscD1oLmFuaW1hdGlvbix0PWguYWxsb3dFeHRlbmRQbGF5aW5nRmllbGQscj1iLmNoYXJ0LnJlbmRlcmVyLG49ci50ZXh0KCkuYWRkKGwpLHE9W10sdj1iLnBsYWNlbWVudFN0cmF0ZWd5W2gucGxhY2VtZW50U3RyYXRlZ3ldLHo9aC5yb3RhdGlvbixCPWIucG9pbnRzLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gYS53ZWlnaHR9KSxEPU1hdGgubWF4LmFwcGx5KG51bGwsQiksRz1iLnBvaW50cy5jb25jYXQoKS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGIud2VpZ2h0LQphLndlaWdodH0pO2IuZ3JvdXAuYXR0cih7c2NhbGVYOjEsc2NhbGVZOjF9KTtHLmZvckVhY2goZnVuY3Rpb24oZCl7dmFyIGM9Yi5kZXJpdmVGb250U2l6ZSgxL0QqZC53ZWlnaHQsaC5tYXhGb250U2l6ZSxoLm1pbkZvbnRTaXplKTtjPWEoe2ZvbnRTaXplOmMrInB4In0saC5zdHlsZSk7bi5jc3MoYykuYXR0cih7eDowLHk6MCx0ZXh0OmQubmFtZX0pO2M9bi5nZXRCQm94KCEwKTtkLmRpbWVuc2lvbnM9e2hlaWdodDpjLmhlaWdodCx3aWR0aDpjLndpZHRofX0pO3ZhciB3PUgoYy5sZW4sZS5sZW4sRyk7dmFyIEU9eShiLnNwaXJhbHNbaC5zcGlyYWxdLHtmaWVsZDp3fSk7Ry5mb3JFYWNoKGZ1bmN0aW9uKGMpe3ZhciBnPWIuZGVyaXZlRm9udFNpemUoMS9EKmMud2VpZ2h0LGgubWF4Rm9udFNpemUsaC5taW5Gb250U2l6ZSk7Zz1hKHtmb250U2l6ZTpnKyJweCJ9LGguc3R5bGUpO3ZhciBmPXYoYyx7ZGF0YTpHLGZpZWxkOncscGxhY2VkOnEscm90YXRpb246en0pLGU9YShiLnBvaW50QXR0cmlicyhjLApjLnNlbGVjdGVkJiYic2VsZWN0Iikse2FsaWduOiJjZW50ZXIiLCJhbGlnbm1lbnQtYmFzZWxpbmUiOiJtaWRkbGUiLHg6Zi54LHk6Zi55LHRleHQ6Yy5uYW1lLHJvdGF0aW9uOmYucm90YXRpb259KSxuPUwoZi54LGYueSxjLmRpbWVuc2lvbnMud2lkdGgsYy5kaW1lbnNpb25zLmhlaWdodCxmLnJvdGF0aW9uKSxtPUoobikseD1DKGMse3JlY3RhbmdsZTptLHBvbHlnb246bixmaWVsZDp3LHBsYWNlZDpxLHNwaXJhbDpFLHJvdGF0aW9uOmYucm90YXRpb259KTsheCYmdCYmKHc9Rih3LG0pLHg9QyhjLHtyZWN0YW5nbGU6bSxwb2x5Z29uOm4sZmllbGQ6dyxwbGFjZWQ6cSxzcGlyYWw6RSxyb3RhdGlvbjpmLnJvdGF0aW9ufSkpO2lmKEEoeCkpe2UueCs9eC54O2UueSs9eC55O20ubGVmdCs9eC54O20ucmlnaHQrPXgueDttLnRvcCs9eC55O20uYm90dG9tKz14Lnk7Zj13O2lmKCFrKGYubGVmdCl8fGYubGVmdD5tLmxlZnQpZi5sZWZ0PW0ubGVmdDtpZighayhmLnJpZ2h0KXx8Zi5yaWdodDwKbS5yaWdodClmLnJpZ2h0PW0ucmlnaHQ7aWYoIWsoZi50b3ApfHxmLnRvcD5tLnRvcClmLnRvcD1tLnRvcDtpZighayhmLmJvdHRvbSl8fGYuYm90dG9tPG0uYm90dG9tKWYuYm90dG9tPW0uYm90dG9tO3c9ZjtxLnB1c2goYyk7Yy5pc051bGw9ITF9ZWxzZSBjLmlzTnVsbD0hMDtpZihwKXt2YXIgdT17eDplLngseTplLnl9O2Q/KGRlbGV0ZSBlLngsZGVsZXRlIGUueSk6KGUueD0wLGUueT0wKX1jLmRyYXcoe2FuaW1hdGFibGVBdHRyaWJzOnUsYXR0cmliczplLGNzczpnLGdyb3VwOmwscmVuZGVyZXI6cixzaGFwZUFyZ3M6dm9pZCAwLHNoYXBlVHlwZToidGV4dCJ9KX0pO249bi5kZXN0cm95KCk7Yz11KGMubGVuLGUubGVuLHcpO2IuZ3JvdXAuYXR0cih7c2NhbGVYOmMsc2NhbGVZOmN9KX0saGFzRGF0YTpmdW5jdGlvbigpe3JldHVybiBBKHRoaXMpJiYhMD09PXRoaXMudmlzaWJsZSYmeih0aGlzLnBvaW50cykmJjA8dGhpcy5wb2ludHMubGVuZ3RofSxwbGFjZW1lbnRTdHJhdGVneTp7cmFuZG9tOmZ1bmN0aW9uKGEsCmIpe3ZhciBjPWIuZmllbGQ7Yj1iLnJvdGF0aW9uO3JldHVybnt4Ok1hdGgucm91bmQoYy53aWR0aCooTWF0aC5yYW5kb20oKSsuNSkvMiktYy53aWR0aC8yLHk6TWF0aC5yb3VuZChjLmhlaWdodCooTWF0aC5yYW5kb20oKSsuNSkvMiktYy5oZWlnaHQvMixyb3RhdGlvbjpxKGIub3JpZW50YXRpb25zLGEuaW5kZXgsYi5mcm9tLGIudG8pfX0sY2VudGVyOmZ1bmN0aW9uKGEsYil7Yj1iLnJvdGF0aW9uO3JldHVybnt4OjAseTowLHJvdGF0aW9uOnEoYi5vcmllbnRhdGlvbnMsYS5pbmRleCxiLmZyb20sYi50byl9fX0scG9pbnRBcnJheU1hcDpbIndlaWdodCJdLHNwaXJhbHM6e2FyY2hpbWVkZWFuOmZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5maWVsZDtiPSExO2M9Yy53aWR0aCpjLndpZHRoK2MuaGVpZ2h0KmMuaGVpZ2h0O3ZhciBkPS44KmE7MUU0Pj1hJiYoYj17eDpkKk1hdGguY29zKGQpLHk6ZCpNYXRoLnNpbihkKX0sTWF0aC5taW4oTWF0aC5hYnMoYi54KSxNYXRoLmFicyhiLnkpKTwKY3x8KGI9ITEpKTtyZXR1cm4gYn0scmVjdGFuZ3VsYXI6ZnVuY3Rpb24oYSxiKXthPXQoYSxiKTtiPWIuZmllbGQ7YSYmKGEueCo9Yi5yYXRpb1gsYS55Kj1iLnJhdGlvWSk7cmV0dXJuIGF9LHNxdWFyZTp0fSx1dGlsczp7ZXh0ZW5kUGxheWluZ0ZpZWxkOkYsZ2V0Um90YXRpb246cSxpc1BvbHlnb25zQ29sbGlkaW5nOkQscm90YXRlMkRUb09yaWdpbjpoLnJvdGF0ZTJEVG9PcmlnaW4scm90YXRlMkRUb1BvaW50Omgucm90YXRlMkRUb1BvaW50fSxnZXRQbG90Qm94OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jaGFydCxiPWEuaW52ZXJ0ZWQsYz10aGlzW2I/InlBeGlzIjoieEF4aXMiXTtiPXRoaXNbYj8ieEF4aXMiOiJ5QXhpcyJdO3JldHVybnt0cmFuc2xhdGVYOihjP2MubGVmdDphLnBsb3RMZWZ0KSsoYz9jLmxlbjphLnBsb3RXaWR0aCkvMix0cmFuc2xhdGVZOihiP2IudG9wOmEucGxvdFRvcCkrKGI/Yi5sZW46YS5wbG90SGVpZ2h0KS8yLHNjYWxlWDoxLHNjYWxlWToxfX19LHtkcmF3OmwsCnNob3VsZERyYXc6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5pc051bGx9LGlzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sd2VpZ2h0OjF9KX0pO2woYiwibWFzdGVycy9tb2R1bGVzL3dvcmRjbG91ZC5zcmMuanMiLFtdLGZ1bmN0aW9uKCl7fSl9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9d29yZGNsb3VkLmpzLm1hcA=="></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIFgtcmFuZ2Ugc2VyaWVzCgogKGMpIDIwMTAtMjAxOSBUb3JzdGVpbiBIb25zaSwgTGFycyBBLiBWLiBDYWJyZXJhCgogTGljZW5zZTogd3d3LmhpZ2hjaGFydHMuY29tL2xpY2Vuc2UKKi8KKGZ1bmN0aW9uKGIpeyJvYmplY3QiPT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/KGJbImRlZmF1bHQiXT1iLG1vZHVsZS5leHBvcnRzPWIpOiJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiaGlnaGNoYXJ0cy9tb2R1bGVzL3hyYW5nZSIsWyJoaWdoY2hhcnRzIl0sZnVuY3Rpb24oaCl7YihoKTtiLkhpZ2hjaGFydHM9aDtyZXR1cm4gYn0pOmIoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihiKXtmdW5jdGlvbiBoKGIsbCxoLHApe2IuaGFzT3duUHJvcGVydHkobCl8fChiW2xdPXAuYXBwbHkobnVsbCxoKSl9Yj1iP2IuX21vZHVsZXM6e307aChiLCJtb2R1bGVzL3hyYW5nZS5zcmMuanMiLFtiWyJwYXJ0cy9BeGlzLmpzIl0sYlsicGFydHMvR2xvYmFscy5qcyJdLGJbInBhcnRzL0NvbG9yLmpzIl0sYlsicGFydHMvUG9pbnQuanMiXSxiWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sCmZ1bmN0aW9uKGIsbCxoLHAsZyl7dmFyIHg9aC5wYXJzZTtoPWcuYWRkRXZlbnQ7dmFyIHI9Zy5jbGFtcCxCPWcuY29ycmVjdEZsb2F0LEM9Zy5kZWZpbmVkLHk9Zy5maW5kLHQ9Zy5pc051bWJlcix2PWcuaXNPYmplY3QsdT1nLm1lcmdlLHc9Zy5waWNrO2c9Zy5zZXJpZXNUeXBlO3ZhciB6PWwuc2VyaWVzVHlwZXMuY29sdW1uLEE9bC5zZXJpZXNUeXBlcyxEPWwuU2VyaWVzO2coInhyYW5nZSIsImNvbHVtbiIse2NvbG9yQnlQb2ludDohMCxkYXRhTGFiZWxzOntmb3JtYXR0ZXI6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnBvaW50LnBhcnRpYWxGaWxsO3YoYSkmJihhPWEuYW1vdW50KTtpZih0KGEpJiYwPGEpcmV0dXJuIEIoMTAwKmEpKyIlIn0saW5zaWRlOiEwLHZlcnRpY2FsQWxpZ246Im1pZGRsZSJ9LHRvb2x0aXA6e2hlYWRlckZvcm1hdDonPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBweCI+e3BvaW50Lnh9IC0ge3BvaW50LngyfTwvc3Bhbj48YnIvPicscG9pbnRGb3JtYXQ6JzxzcGFuIHN0eWxlPSJjb2xvcjp7cG9pbnQuY29sb3J9Ij5cdTI1Y2Y8L3NwYW4+IHtzZXJpZXMubmFtZX06IDxiPntwb2ludC55Q2F0ZWdvcnl9PC9iPjxici8+J30sCmJvcmRlclJhZGl1czozLHBvaW50UmFuZ2U6MH0se3R5cGU6InhyYW5nZSIscGFyYWxsZWxBcnJheXM6WyJ4IiwieDIiLCJ5Il0scmVxdWlyZVNvcnRpbmc6ITEsYW5pbWF0ZTpBLmxpbmUucHJvdG90eXBlLmFuaW1hdGUsY3JvcFNob3VsZGVyOjEsZ2V0RXh0cmVtZXNGcm9tQWxsOiEwLGF1dG9JbmNyZW1lbnQ6bC5ub29wLGJ1aWxkS0RUcmVlOmwubm9vcCxpbml0OmZ1bmN0aW9uKCl7QS5jb2x1bW4ucHJvdG90eXBlLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMub3B0aW9ucy5zdGFja2luZz12b2lkIDB9LGdldENvbHVtbk1ldHJpY3M6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7Zi5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYz1hLnhBeGlzO2EueEF4aXM9YS55QXhpczthLnlBeGlzPWN9KX12YXIgZj10aGlzLmNoYXJ0O2EoKTt2YXIgZD16LnByb3RvdHlwZS5nZXRDb2x1bW5NZXRyaWNzLmNhbGwodGhpcyk7YSgpO3JldHVybiBkfSxjcm9wRGF0YTpmdW5jdGlvbihhLApmLGQsbSl7Zj1ELnByb3RvdHlwZS5jcm9wRGF0YS5jYWxsKHRoaXMsdGhpcy54MkRhdGEsZixkLG0pO2YueERhdGE9YS5zbGljZShmLnN0YXJ0LGYuZW5kKTtyZXR1cm4gZn0sZmluZFBvaW50SW5kZXg6ZnVuY3Rpb24oYSl7dmFyIGY9dGhpcy5jcm9wcGVkLGQ9dGhpcy5jcm9wU3RhcnQsbT10aGlzLnBvaW50cyxjPWEuaWQ7aWYoYyl2YXIgZT0oZT15KG0sZnVuY3Rpb24oYSl7cmV0dXJuIGEuaWQ9PT1jfSkpP2UuaW5kZXg6dm9pZCAwOyJ1bmRlZmluZWQiPT09dHlwZW9mIGUmJihlPShlPXkobSxmdW5jdGlvbihjKXtyZXR1cm4gYy54PT09YS54JiZjLngyPT09YS54MiYmIWMudG91Y2hlZH0pKT9lLmluZGV4OnZvaWQgMCk7ZiYmdChlKSYmdChkKSYmZT49ZCYmKGUtPWQpO3JldHVybiBlfSx0cmFuc2xhdGVQb2ludDpmdW5jdGlvbihhKXt2YXIgZj10aGlzLnhBeGlzLGQ9dGhpcy55QXhpcyxtPXRoaXMuY29sdW1uTWV0cmljcyxjPXRoaXMub3B0aW9ucyxlPWMubWluUG9pbnRMZW5ndGh8fAowLGI9YS5wbG90WCxnPXcoYS54MixhLngrKGEubGVufHwwKSksaz1mLnRyYW5zbGF0ZShnLDAsMCwwLDEpO2c9TWF0aC5hYnMoay1iKTt2YXIgaD10aGlzLmNoYXJ0LmludmVydGVkLGw9dyhjLmJvcmRlcldpZHRoLDEpJTIvMixuPW0ub2Zmc2V0LHE9TWF0aC5yb3VuZChtLndpZHRoKTtlJiYoZS09ZywwPmUmJihlPTApLGItPWUvMixrKz1lLzIpO2I9TWF0aC5tYXgoYiwtMTApO2s9cihrLC0xMCxmLmxlbisxMCk7QyhhLm9wdGlvbnMucG9pbnRXaWR0aCkmJihuLT0oTWF0aC5jZWlsKGEub3B0aW9ucy5wb2ludFdpZHRoKS1xKS8yLHE9TWF0aC5jZWlsKGEub3B0aW9ucy5wb2ludFdpZHRoKSk7Yy5wb2ludFBsYWNlbWVudCYmdChhLnBsb3RZKSYmZC5jYXRlZ29yaWVzJiYoYS5wbG90WT1kLnRyYW5zbGF0ZShhLnksMCwxLDAsMSxjLnBvaW50UGxhY2VtZW50KSk7YS5zaGFwZUFyZ3M9e3g6TWF0aC5mbG9vcihNYXRoLm1pbihiLGspKStsLHk6TWF0aC5mbG9vcihhLnBsb3RZK24pK2wsCndpZHRoOk1hdGgucm91bmQoTWF0aC5hYnMoay1iKSksaGVpZ2h0OnEscjp0aGlzLm9wdGlvbnMuYm9yZGVyUmFkaXVzfTtjPWEuc2hhcGVBcmdzLng7ZT1jK2Euc2hhcGVBcmdzLndpZHRoOzA+Y3x8ZT5mLmxlbj8oYz1yKGMsMCxmLmxlbiksZT1yKGUsMCxmLmxlbiksaz1lLWMsYS5kbEJveD11KGEuc2hhcGVBcmdzLHt4OmMsd2lkdGg6ZS1jLGNlbnRlclg6az9rLzI6bnVsbH0pKTphLmRsQm94PW51bGw7Yz1hLnRvb2x0aXBQb3M7ZT1oPzE6MDtrPWg/MDoxO209dGhpcy5jb2x1bW5NZXRyaWNzP3RoaXMuY29sdW1uTWV0cmljcy5vZmZzZXQ6LW0ud2lkdGgvMjtjW2VdPXIoY1tlXStnLzIqKGYucmV2ZXJzZWQ/LTE6MSkqKGg/LTE6MSksMCxmLmxlbi0xKTtjW2tdPXIoY1trXSsoaD8tMToxKSptLDAsZC5sZW4tMSk7aWYobT1hLnBhcnRpYWxGaWxsKXYobSkmJihtPW0uYW1vdW50KSx0KG0pfHwobT0wKSxkPWEuc2hhcGVBcmdzLGEucGFydFNoYXBlQXJncz17eDpkLngseTpkLnksd2lkdGg6ZC53aWR0aCwKaGVpZ2h0OmQuaGVpZ2h0LHI6dGhpcy5vcHRpb25zLmJvcmRlclJhZGl1c30sYj1NYXRoLm1heChNYXRoLnJvdW5kKGcqbSthLnBsb3RYLWIpLDApLGEuY2xpcFJlY3RBcmdzPXt4OmYucmV2ZXJzZWQ/ZC54K2ctYjpkLngseTpkLnksd2lkdGg6YixoZWlnaHQ6ZC5oZWlnaHR9fSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXt6LnByb3RvdHlwZS50cmFuc2xhdGUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYSl7dGhpcy50cmFuc2xhdGVQb2ludChhKX0sdGhpcyl9LGRyYXdQb2ludDpmdW5jdGlvbihhLGYpe3ZhciBkPXRoaXMub3B0aW9ucyxiPXRoaXMuY2hhcnQucmVuZGVyZXIsYz1hLmdyYXBoaWMsZT1hLnNoYXBlVHlwZSxnPWEuc2hhcGVBcmdzLGg9YS5wYXJ0U2hhcGVBcmdzLGs9YS5jbGlwUmVjdEFyZ3MsbD1hLnBhcnRpYWxGaWxsLHA9ZC5zdGFja2luZyYmIWQuYm9yZGVyUmFkaXVzLG49YS5zdGF0ZSxxPWQuc3RhdGVzW258fCJub3JtYWwiXXx8Cnt9LHI9InVuZGVmaW5lZCI9PT10eXBlb2Ygbj8iYXR0ciI6ZjtuPXRoaXMucG9pbnRBdHRyaWJzKGEsbik7cT13KHRoaXMuY2hhcnQub3B0aW9ucy5jaGFydC5hbmltYXRpb24scS5hbmltYXRpb24pO2lmKGEuaXNOdWxsfHwhMT09PWEudmlzaWJsZSljJiYoYS5ncmFwaGljPWMuZGVzdHJveSgpKTtlbHNle2lmKGMpYy5yZWN0W2ZdKGcpO2Vsc2UgYS5ncmFwaGljPWM9Yi5nKCJwb2ludCIpLmFkZENsYXNzKGEuZ2V0Q2xhc3NOYW1lKCkpLmFkZChhLmdyb3VwfHx0aGlzLmdyb3VwKSxjLnJlY3Q9YltlXSh1KGcpKS5hZGRDbGFzcyhhLmdldENsYXNzTmFtZSgpKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1wYXJ0ZmlsbC1vcmlnaW5hbCIpLmFkZChjKTtoJiYoYy5wYXJ0UmVjdD8oYy5wYXJ0UmVjdFtmXSh1KGgpKSxjLnBhcnRpYWxDbGlwUmVjdFtmXSh1KGspKSk6KGMucGFydGlhbENsaXBSZWN0PWIuY2xpcFJlY3Qoay54LGsueSxrLndpZHRoLGsuaGVpZ2h0KSxjLnBhcnRSZWN0PWJbZV0oaCkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtcGFydGZpbGwtb3ZlcmxheSIpLmFkZChjKS5jbGlwKGMucGFydGlhbENsaXBSZWN0KSkpOwp0aGlzLmNoYXJ0LnN0eWxlZE1vZGV8fChjLnJlY3RbZl0obixxKS5zaGFkb3coZC5zaGFkb3csbnVsbCxwKSxoJiYodihsKXx8KGw9e30pLHYoZC5wYXJ0aWFsRmlsbCkmJihsPXUobCxkLnBhcnRpYWxGaWxsKSksYT1sLmZpbGx8fHgobi5maWxsKS5icmlnaHRlbigtLjMpLmdldCgpfHx4KGEuY29sb3J8fHRoaXMuY29sb3IpLmJyaWdodGVuKC0uMykuZ2V0KCksbi5maWxsPWEsYy5wYXJ0UmVjdFtyXShuLHEpLnNoYWRvdyhkLnNoYWRvdyxudWxsLHApKSl9fSxkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxmPWEuZ2V0QW5pbWF0aW9uVmVyYigpO2EucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYil7YS5kcmF3UG9pbnQoYixmKX0pfSxnZXRBbmltYXRpb25WZXJiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hhcnQucG9pbnRDb3VudDwodGhpcy5vcHRpb25zLmFuaW1hdGlvbkxpbWl0fHwyNTApPyJhbmltYXRlIjoiYXR0ciJ9fSx7cmVzb2x2ZUNvbG9yOmZ1bmN0aW9uKCl7dmFyIGE9CnRoaXMuc2VyaWVzO2lmKGEub3B0aW9ucy5jb2xvckJ5UG9pbnQmJiF0aGlzLm9wdGlvbnMuY29sb3Ipe3ZhciBiPWEub3B0aW9ucy5jb2xvcnN8fGEuY2hhcnQub3B0aW9ucy5jb2xvcnM7dmFyIGQ9dGhpcy55JShiP2IubGVuZ3RoOmEuY2hhcnQub3B0aW9ucy5jaGFydC5jb2xvckNvdW50KTtiPWImJmJbZF07YS5jaGFydC5zdHlsZWRNb2RlfHwodGhpcy5jb2xvcj1iKTt0aGlzLm9wdGlvbnMuY29sb3JJbmRleHx8KHRoaXMuY29sb3JJbmRleD1kKX1lbHNlIHRoaXMuY29sb3J8fCh0aGlzLmNvbG9yPWEuY29sb3IpfSxpbml0OmZ1bmN0aW9uKCl7cC5wcm90b3R5cGUuaW5pdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy55fHwodGhpcy55PTApO3JldHVybiB0aGlzfSxzZXRTdGF0ZTpmdW5jdGlvbigpe3AucHJvdG90eXBlLnNldFN0YXRlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnNlcmllcy5kcmF3UG9pbnQodGhpcyx0aGlzLnNlcmllcy5nZXRBbmltYXRpb25WZXJiKCkpfSwKZ2V0TGFiZWxDb25maWc6ZnVuY3Rpb24oKXt2YXIgYT1wLnByb3RvdHlwZS5nZXRMYWJlbENvbmZpZy5jYWxsKHRoaXMpLGI9dGhpcy5zZXJpZXMueUF4aXMuY2F0ZWdvcmllczthLngyPXRoaXMueDI7YS55Q2F0ZWdvcnk9dGhpcy55Q2F0ZWdvcnk9YiYmYlt0aGlzLnldO3JldHVybiBhfSx0b29sdGlwRGF0ZUtleXM6WyJ4IiwieDIiXSxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIm51bWJlciI9PT10eXBlb2YgdGhpcy54JiYibnVtYmVyIj09PXR5cGVvZiB0aGlzLngyfX0pO2goYiwiYWZ0ZXJHZXRTZXJpZXNFeHRyZW1lcyIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLnNlcmllcyxiO2lmKHRoaXMuaXNYQXhpcyl7dmFyIGQ9dyh0aGlzLmRhdGFNYXgsLU51bWJlci5NQVhfVkFMVUUpO2EuZm9yRWFjaChmdW5jdGlvbihhKXthLngyRGF0YSYmYS54MkRhdGEuZm9yRWFjaChmdW5jdGlvbihhKXthPmQmJihkPWEsYj0hMCl9KX0pO2ImJih0aGlzLmRhdGFNYXg9ZCl9fSk7IiJ9KTtoKGIsCiJtYXN0ZXJzL21vZHVsZXMveHJhbmdlLnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD14cmFuZ2UuanMubWFw"></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2htYXBzIEpTIHY4LjEuMiAoMjAyMC0wNi0xNikKCiBUaWxlbWFwIG1vZHVsZQoKIChjKSAyMDEwLTIwMTkgSGlnaHNvZnQgQVMKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24oZCl7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8oZFsiZGVmYXVsdCJdPWQsbW9kdWxlLmV4cG9ydHM9ZCk6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL21vZHVsZXMvdGlsZW1hcCIsWyJoaWdoY2hhcnRzIiwiaGlnaGNoYXJ0cy9tb2R1bGVzL21hcCJdLGZ1bmN0aW9uKGYpe2QoZik7ZC5IaWdoY2hhcnRzPWY7cmV0dXJuIGR9KTpkKCJ1bmRlZmluZWQiIT09dHlwZW9mIEhpZ2hjaGFydHM/SGlnaGNoYXJ0czp2b2lkIDApfSkoZnVuY3Rpb24oZCl7ZnVuY3Rpb24gZihlLGQsZix2KXtlLmhhc093blByb3BlcnR5KGQpfHwoZVtkXT12LmFwcGx5KG51bGwsZikpfWQ9ZD9kLl9tb2R1bGVzOnt9O2YoZCwibW9kdWxlcy90aWxlbWFwLnNyYy5qcyIsW2RbInBhcnRzL0dsb2JhbHMuanMiXSxkWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZSxkKXtmdW5jdGlvbiBmKGEsYiwKYyl7YT1hLm9wdGlvbnM7cmV0dXJue3hQYWQ6KGEuY29sc2l6ZXx8MSkvLWIseVBhZDooYS5yb3dzaXplfHwxKS8tY319IiI7dmFyIHY9ZC5hZGRFdmVudCxoPWQuY2xhbXAseT1kLmV4dGVuZCx4PWQucGljaztkPWQuc2VyaWVzVHlwZTtlLnRpbGVTaGFwZVR5cGVzPXtoZXhhZ29uOnthbGlnbkRhdGFMYWJlbDplLnNlcmllc1R5cGVzLnNjYXR0ZXIucHJvdG90eXBlLmFsaWduRGF0YUxhYmVsLGdldFNlcmllc1BhZGRpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuIGYoYSwzLDIpfSxoYWxvUGF0aDpmdW5jdGlvbihhKXtpZighYSlyZXR1cm5bXTt2YXIgYj10aGlzLnRpbGVFZGdlcztyZXR1cm5bWyJNIixiLngyLWEsYi55MSthXSxbIkwiLGIueDMrYSxiLnkxK2FdLFsiTCIsYi54NCsxLjUqYSxiLnkyXSxbIkwiLGIueDMrYSxiLnkzLWFdLFsiTCIsYi54Mi1hLGIueTMtYV0sWyJMIixiLngxLTEuNSphLGIueTJdLFsiWiJdXX0sdHJhbnNsYXRlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25zLApiPXRoaXMueEF4aXMsYz10aGlzLnlBeGlzLGQ9YS5wb2ludFBhZGRpbmd8fDAsZT0oYS5jb2xzaXplfHwxKS8zLGY9KGEucm93c2l6ZXx8MSkvMixuO3RoaXMuZ2VuZXJhdGVQb2ludHMoKTt0aGlzLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciB0PWgoTWF0aC5mbG9vcihiLmxlbi1iLnRyYW5zbGF0ZShhLngtMiplLDAsMSwwLDEpKSwtYi5sZW4sMipiLmxlbiksaz1oKE1hdGguZmxvb3IoYi5sZW4tYi50cmFuc2xhdGUoYS54LWUsMCwxLDAsMSkpLC1iLmxlbiwyKmIubGVuKSxxPWgoTWF0aC5mbG9vcihiLmxlbi1iLnRyYW5zbGF0ZShhLngrZSwwLDEsMCwxKSksLWIubGVuLDIqYi5sZW4pLHU9aChNYXRoLmZsb29yKGIubGVuLWIudHJhbnNsYXRlKGEueCsyKmUsMCwxLDAsMSkpLC1iLmxlbiwyKmIubGVuKSxyPWgoTWF0aC5mbG9vcihjLnRyYW5zbGF0ZShhLnktZiwwLDEsMCwxKSksLWMubGVuLDIqYy5sZW4pLGc9aChNYXRoLmZsb29yKGMudHJhbnNsYXRlKGEueSwwLDEsCjAsMSkpLC1jLmxlbiwyKmMubGVuKSxsPWgoTWF0aC5mbG9vcihjLnRyYW5zbGF0ZShhLnkrZiwwLDEsMCwxKSksLWMubGVuLDIqYy5sZW4pLG09eChhLnBvaW50UGFkZGluZyxkKSxwPW0qTWF0aC5hYnMoay10KS9NYXRoLmFicyhsLWcpO3A9Yi5yZXZlcnNlZD8tcDpwO3ZhciB3PWIucmV2ZXJzZWQ/LW06bTttPWMucmV2ZXJzZWQ/LW06bTthLnglMiYmKG49bnx8TWF0aC5yb3VuZChNYXRoLmFicyhsLXIpLzIpKihjLnJldmVyc2VkPy0xOjEpLHIrPW4sZys9bixsKz1uKTthLnBsb3RYPWEuY2xpZW50WD0oaytxKS8yO2EucGxvdFk9Zzt0Kz1wK3c7ays9dztxLT13O3UtPXArdztyLT1tO2wrPW07YS50aWxlRWRnZXM9e3gxOnQseDI6ayx4MzpxLHg0OnUseTE6cix5MjpnLHkzOmx9O2Euc2hhcGVUeXBlPSJwYXRoIjthLnNoYXBlQXJncz17ZDpbWyJNIixrLHJdLFsiTCIscSxyXSxbIkwiLHUsZ10sWyJMIixxLGxdLFsiTCIsayxsXSxbIkwiLHQsZ10sWyJaIl1dfX0pO3RoaXMudHJhbnNsYXRlQ29sb3JzKCl9fSwKZGlhbW9uZDp7YWxpZ25EYXRhTGFiZWw6ZS5zZXJpZXNUeXBlcy5zY2F0dGVyLnByb3RvdHlwZS5hbGlnbkRhdGFMYWJlbCxnZXRTZXJpZXNQYWRkaW5nOmZ1bmN0aW9uKGEpe3JldHVybiBmKGEsMiwyKX0saGFsb1BhdGg6ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuW107dmFyIGI9dGhpcy50aWxlRWRnZXM7cmV0dXJuW1siTSIsYi54MixiLnkxK2FdLFsiTCIsYi54MythLGIueTJdLFsiTCIsYi54MixiLnkzLWFdLFsiTCIsYi54MS1hLGIueTJdLFsiWiJdXX0sdHJhbnNsYXRlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25zLGI9dGhpcy54QXhpcyxjPXRoaXMueUF4aXMsZD1hLnBvaW50UGFkZGluZ3x8MCxlPWEuY29sc2l6ZXx8MSxmPShhLnJvd3NpemV8fDEpLzIsbjt0aGlzLmdlbmVyYXRlUG9pbnRzKCk7dGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgcD1oKE1hdGgucm91bmQoYi5sZW4tYi50cmFuc2xhdGUoYS54LWUsMCwxLDAsMCkpLC1iLmxlbiwyKmIubGVuKSwKaz1oKE1hdGgucm91bmQoYi5sZW4tYi50cmFuc2xhdGUoYS54LDAsMSwwLDApKSwtYi5sZW4sMipiLmxlbikscT1oKE1hdGgucm91bmQoYi5sZW4tYi50cmFuc2xhdGUoYS54K2UsMCwxLDAsMCkpLC1iLmxlbiwyKmIubGVuKSx1PWgoTWF0aC5yb3VuZChjLnRyYW5zbGF0ZShhLnktZiwwLDEsMCwwKSksLWMubGVuLDIqYy5sZW4pLHI9aChNYXRoLnJvdW5kKGMudHJhbnNsYXRlKGEueSwwLDEsMCwwKSksLWMubGVuLDIqYy5sZW4pLGc9aChNYXRoLnJvdW5kKGMudHJhbnNsYXRlKGEueStmLDAsMSwwLDApKSwtYy5sZW4sMipjLmxlbiksbD14KGEucG9pbnRQYWRkaW5nLGQpLG09bCpNYXRoLmFicyhrLXApL01hdGguYWJzKGctcik7bT1iLnJldmVyc2VkPy1tOm07bD1jLnJldmVyc2VkPy1sOmw7YS54JTImJihuPU1hdGguYWJzKGctdSkvMiooYy5yZXZlcnNlZD8tMToxKSx1Kz1uLHIrPW4sZys9bik7YS5wbG90WD1hLmNsaWVudFg9azthLnBsb3RZPXI7cCs9bTtxLT1tO3UtPWw7Zys9Cmw7YS50aWxlRWRnZXM9e3gxOnAseDI6ayx4MzpxLHkxOnUseTI6cix5MzpnfTthLnNoYXBlVHlwZT0icGF0aCI7YS5zaGFwZUFyZ3M9e2Q6W1siTSIsayx1XSxbIkwiLHEscl0sWyJMIixrLGddLFsiTCIscCxyXSxbIloiXV19fSk7dGhpcy50cmFuc2xhdGVDb2xvcnMoKX19LGNpcmNsZTp7YWxpZ25EYXRhTGFiZWw6ZS5zZXJpZXNUeXBlcy5zY2F0dGVyLnByb3RvdHlwZS5hbGlnbkRhdGFMYWJlbCxnZXRTZXJpZXNQYWRkaW5nOmZ1bmN0aW9uKGEpe3JldHVybiBmKGEsMiwyKX0saGFsb1BhdGg6ZnVuY3Rpb24oYSl7cmV0dXJuIGUuc2VyaWVzVHlwZXMuc2NhdHRlci5wcm90b3R5cGUucG9pbnRDbGFzcy5wcm90b3R5cGUuaGFsb1BhdGguY2FsbCh0aGlzLGErKGEmJnRoaXMucmFkaXVzKSl9LHRyYW5zbGF0ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucyxiPXRoaXMueEF4aXMsYz10aGlzLnlBeGlzLGQ9YS5wb2ludFBhZGRpbmd8fDAsZT0oYS5yb3dzaXplfHwxKS8yLGY9YS5jb2xzaXplfHwKMSxuLHQsdixrLHE9ITE7dGhpcy5nZW5lcmF0ZVBvaW50cygpO3RoaXMucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIHA9aChNYXRoLnJvdW5kKGIubGVuLWIudHJhbnNsYXRlKGEueCwwLDEsMCwwKSksLWIubGVuLDIqYi5sZW4pLGc9aChNYXRoLnJvdW5kKGMudHJhbnNsYXRlKGEueSwwLDEsMCwwKSksLWMubGVuLDIqYy5sZW4pLGw9ZCxtPSExOyJ1bmRlZmluZWQiIT09dHlwZW9mIGEucG9pbnRQYWRkaW5nJiYobD1hLnBvaW50UGFkZGluZyxxPW09ITApO2lmKCFrfHxxKW49TWF0aC5hYnMoaChNYXRoLmZsb29yKGIubGVuLWIudHJhbnNsYXRlKGEueCtmLDAsMSwwLDApKSwtYi5sZW4sMipiLmxlbiktcCksdD1NYXRoLmFicyhoKE1hdGguZmxvb3IoYy50cmFuc2xhdGUoYS55K2UsMCwxLDAsMCkpLC1jLmxlbiwyKmMubGVuKS1nKSx2PU1hdGguZmxvb3IoTWF0aC5zcXJ0KG4qbit0KnQpLzIpLGs9TWF0aC5taW4obix2LHQpLWwscSYmIW0mJihxPSExKTthLnglMiYmKGcrPQp0KihjLnJldmVyc2VkPy0xOjEpKTthLnBsb3RYPWEuY2xpZW50WD1wO2EucGxvdFk9ZzthLnJhZGl1cz1rO2Euc2hhcGVUeXBlPSJjaXJjbGUiO2Euc2hhcGVBcmdzPXt4OnAseTpnLHI6a319KTt0aGlzLnRyYW5zbGF0ZUNvbG9ycygpfX0sc3F1YXJlOnthbGlnbkRhdGFMYWJlbDplLnNlcmllc1R5cGVzLmhlYXRtYXAucHJvdG90eXBlLmFsaWduRGF0YUxhYmVsLHRyYW5zbGF0ZTplLnNlcmllc1R5cGVzLmhlYXRtYXAucHJvdG90eXBlLnRyYW5zbGF0ZSxnZXRTZXJpZXNQYWRkaW5nOmZ1bmN0aW9uKCl7fSxoYWxvUGF0aDplLnNlcmllc1R5cGVzLmhlYXRtYXAucHJvdG90eXBlLnBvaW50Q2xhc3MucHJvdG90eXBlLmhhbG9QYXRofX07dihlLkF4aXMsImFmdGVyU2V0QXhpc1RyYW5zbGF0aW9uIixmdW5jdGlvbigpe2lmKCF0aGlzLnJlY29tcHV0aW5nRm9yVGlsZW1hcCYmImNvbG9yQXhpcyIhPT10aGlzLmNvbGwpe3ZhciBhPXRoaXMsYj1hLnNlcmllcy5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIGIuZ2V0U2VyaWVzUGl4ZWxQYWRkaW5nJiYKYi5nZXRTZXJpZXNQaXhlbFBhZGRpbmcoYSl9KS5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtyZXR1cm4oYSYmYS5wYWRkaW5nKT4oYiYmYi5wYWRkaW5nKT9hOmJ9LHZvaWQgMCl8fHtwYWRkaW5nOjAsYXhpc0xlbmd0aEZhY3RvcjoxfSxjPU1hdGgucm91bmQoYi5wYWRkaW5nKmIuYXhpc0xlbmd0aEZhY3Rvcik7Yi5wYWRkaW5nJiYoYS5sZW4tPWMsYS5yZWNvbXB1dGluZ0ZvclRpbGVtYXA9ITAsYS5zZXRBeGlzVHJhbnNsYXRpb24oKSxkZWxldGUgYS5yZWNvbXB1dGluZ0ZvclRpbGVtYXAsYS5taW5QaXhlbFBhZGRpbmcrPWIucGFkZGluZyxhLmxlbis9Yyl9fSk7ZCgidGlsZW1hcCIsImhlYXRtYXAiLHttYXJrZXI6bnVsbCxzdGF0ZXM6e2hvdmVyOntoYWxvOntlbmFibGVkOiEwLHNpemU6MixvcGFjaXR5Oi41LGF0dHJpYnV0ZXM6e3pJbmRleDozfX19fSxwb2ludFBhZGRpbmc6Mix0aWxlU2hhcGU6ImhleGFnb24ifSx7bWFya2VyQXR0cmliczplLnNlcmllc1R5cGVzLnNjYXR0ZXIucHJvdG90eXBlLm1hcmtlckF0dHJpYnMsCnBvaW50QXR0cmliczplLnNlcmllc1R5cGVzLmNvbHVtbi5wcm90b3R5cGUucG9pbnRBdHRyaWJzLGdldFN5bWJvbDplLm5vb3AsZHJhd1BvaW50czpmdW5jdGlvbigpe3ZhciBhPXRoaXM7ZS5zZXJpZXNUeXBlcy5jb2x1bW4ucHJvdG90eXBlLmRyYXdQb2ludHMuY2FsbCh0aGlzKTt0aGlzLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuZ3JhcGhpYyYmYi5ncmFwaGljW2EuY2hhcnQuc3R5bGVkTW9kZT8iY3NzIjoiYW5pbWF0ZSJdKGEuY29sb3JBdHRyaWJzKGIpKX0pfSxzZXRPcHRpb25zOmZ1bmN0aW9uKCl7dmFyIGE9ZS5zZXJpZXNUeXBlcy5oZWF0bWFwLnByb3RvdHlwZS5zZXRPcHRpb25zLmFwcGx5KHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7dGhpcy50aWxlU2hhcGU9ZS50aWxlU2hhcGVUeXBlc1thLnRpbGVTaGFwZV07cmV0dXJuIGF9LGFsaWduRGF0YUxhYmVsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGlsZVNoYXBlLmFsaWduRGF0YUxhYmVsLmFwcGx5KHRoaXMsCkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfSxnZXRTZXJpZXNQaXhlbFBhZGRpbmc6ZnVuY3Rpb24oYSl7dmFyIGI9YS5pc1hBeGlzLGM9dGhpcy50aWxlU2hhcGUuZ2V0U2VyaWVzUGFkZGluZyh0aGlzKTtpZighYylyZXR1cm57cGFkZGluZzowLGF4aXNMZW5ndGhGYWN0b3I6MX07dmFyIGQ9TWF0aC5yb3VuZChhLnRyYW5zbGF0ZShiPzIqYy54UGFkOmMueVBhZCwwLDEsMCwxKSk7YT1NYXRoLnJvdW5kKGEudHJhbnNsYXRlKGI/Yy54UGFkOjAsMCwxLDAsMSkpO3JldHVybntwYWRkaW5nOk1hdGguYWJzKGQtYSl8fDAsYXhpc0xlbmd0aEZhY3RvcjpiPzI6MS4xfX0sdHJhbnNsYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGlsZVNoYXBlLnRyYW5zbGF0ZS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfX0seSh7aGFsb1BhdGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZXJpZXMudGlsZVNoYXBlLmhhbG9QYXRoLmFwcGx5KHRoaXMsCkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfX0sZS5jb2xvclBvaW50TWl4aW4pKTsiIn0pO2YoZCwibWFzdGVycy9tb2R1bGVzL3RpbGVtYXAuc3JjLmpzIixbXSxmdW5jdGlvbigpe30pfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXRpbGVtYXAuanMubWFw"></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIChjKSAyMDE3LTIwMTkgSGlnaHNvZnQgQVMKIEF1dGhvcnM6IEpvbiBBcmlsZCBOeWdhcmQKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24oYSl7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8oYVsiZGVmYXVsdCJdPWEsbW9kdWxlLmV4cG9ydHM9YSk6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL21vZHVsZXMvdmVubiIsWyJoaWdoY2hhcnRzIl0sZnVuY3Rpb24obSl7YShtKTthLkhpZ2hjaGFydHM9bTtyZXR1cm4gYX0pOmEoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihhKXtmdW5jdGlvbiBtKGEsZixiLEIpe2EuaGFzT3duUHJvcGVydHkoZil8fChhW2ZdPUIuYXBwbHkobnVsbCxiKSl9YT1hP2EuX21vZHVsZXM6e307bShhLCJtaXhpbnMvZHJhdy1wb2ludC5qcyIsW10sZnVuY3Rpb24oKXt2YXIgYT1mdW5jdGlvbihmKXt2YXIgYixhPXRoaXMsaz1hLmdyYXBoaWMsZT1mLmFuaW1hdGFibGVBdHRyaWJzLHU9Zi5vbkNvbXBsZXRlLHc9Zi5jc3MsbT1mLnJlbmRlcmVyLApyPW51bGw9PT0oYj1hLnNlcmllcyl8fHZvaWQgMD09PWI/dm9pZCAwOmIub3B0aW9ucy5hbmltYXRpb247aWYoYS5zaG91bGREcmF3KCkpa3x8KGEuZ3JhcGhpYz1rPW1bZi5zaGFwZVR5cGVdKGYuc2hhcGVBcmdzKS5hZGQoZi5ncm91cCkpLGsuY3NzKHcpLmF0dHIoZi5hdHRyaWJzKS5hbmltYXRlKGUsZi5pc05ldz8hMTpyLHUpO2Vsc2UgaWYoayl7dmFyIG49ZnVuY3Rpb24oKXthLmdyYXBoaWM9az1rLmRlc3Ryb3koKTsiZnVuY3Rpb24iPT09dHlwZW9mIHUmJnUoKX07T2JqZWN0LmtleXMoZSkubGVuZ3RoP2suYW5pbWF0ZShlLHZvaWQgMCxmdW5jdGlvbigpe24oKX0pOm4oKX19O3JldHVybiBmdW5jdGlvbihmKXsoZi5hdHRyaWJzPWYuYXR0cmlic3x8e30pWyJjbGFzcyJdPXRoaXMuZ2V0Q2xhc3NOYW1lKCk7YS5jYWxsKHRoaXMsZil9fSk7bShhLCJtaXhpbnMvZ2VvbWV0cnkuanMiLFtdLGZ1bmN0aW9uKCl7cmV0dXJue2dldEFuZ2xlQmV0d2VlblBvaW50czpmdW5jdGlvbihhLApmKXtyZXR1cm4gTWF0aC5hdGFuMihmLngtYS54LGYueS1hLnkpfSxnZXRDZW50ZXJPZlBvaW50czpmdW5jdGlvbihhKXt2YXIgZj1hLnJlZHVjZShmdW5jdGlvbihiLGYpe2IueCs9Zi54O2IueSs9Zi55O3JldHVybiBifSx7eDowLHk6MH0pO3JldHVybnt4OmYueC9hLmxlbmd0aCx5OmYueS9hLmxlbmd0aH19LGdldERpc3RhbmNlQmV0d2VlblBvaW50czpmdW5jdGlvbihhLGYpe3JldHVybiBNYXRoLnNxcnQoTWF0aC5wb3coZi54LWEueCwyKStNYXRoLnBvdyhmLnktYS55LDIpKX19fSk7bShhLCJtaXhpbnMvZ2VvbWV0cnktY2lyY2xlcy5qcyIsW2FbIm1peGlucy9nZW9tZXRyeS5qcyJdXSxmdW5jdGlvbihhKXtmdW5jdGlvbiBmKGQsYyl7Yz1NYXRoLnBvdygxMCxjKTtyZXR1cm4gTWF0aC5yb3VuZChkKmMpL2N9ZnVuY3Rpb24gYihkKXtpZigwPj1kKXRocm93IEVycm9yKCJyYWRpdXMgb2YgY2lyY2xlIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIuIik7cmV0dXJuIE1hdGguUEkqCmQqZH1mdW5jdGlvbiBrKGQsYyl7cmV0dXJuIGQqZCpNYXRoLmFjb3MoMS1jL2QpLShkLWMpKk1hdGguc3FydChjKigyKmQtYykpfWZ1bmN0aW9uIG0oZCxjKXt2YXIgYT10KGQsYyksYj1kLnIsZT1jLnIsej1bXTtpZihhPGIrZSYmYT5NYXRoLmFicyhiLWUpKXtiKj1iO3ZhciB4PShiLWUqZSthKmEpLygyKmEpO2U9TWF0aC5zcXJ0KGIteCp4KTtiPWQueDt6PWMueDtkPWQueTt2YXIgaz1jLnk7Yz1iK3gqKHotYikvYTt4PWQreCooay1kKS9hO2Q9ZS9hKi0oay1kKTthPWUvYSotKHotYik7ej1be3g6ZihjK2QsMTQpLHk6Zih4LWEsMTQpfSx7eDpmKGMtZCwxNCkseTpmKHgrYSwxNCl9XX1yZXR1cm4gen1mdW5jdGlvbiBlKGQpe3JldHVybiBkLnJlZHVjZShmdW5jdGlvbihkLGEsYixmKXtmPWYuc2xpY2UoYisxKS5yZWR1Y2UoZnVuY3Rpb24oZCxjLGYpe3ZhciBlPVtiLGYrYisxXTtyZXR1cm4gZC5jb25jYXQobShhLGMpLm1hcChmdW5jdGlvbihkKXtkLmluZGV4ZXM9ZTtyZXR1cm4gZH0pKX0sCltdKTtyZXR1cm4gZC5jb25jYXQoZil9LFtdKX1mdW5jdGlvbiB1KGQsYyl7cmV0dXJuIHQoZCxjKTw9Yy5yKzFlLTEwfWZ1bmN0aW9uIHcoZCxjKXtyZXR1cm4hYy5zb21lKGZ1bmN0aW9uKGMpe3JldHVybiF1KGQsYyl9KX1mdW5jdGlvbiB5KGQpe3JldHVybiBlKGQpLmZpbHRlcihmdW5jdGlvbihjKXtyZXR1cm4gdyhjLGQpfSl9dmFyIHI9YS5nZXRBbmdsZUJldHdlZW5Qb2ludHMsbj1hLmdldENlbnRlck9mUG9pbnRzLHQ9YS5nZXREaXN0YW5jZUJldHdlZW5Qb2ludHM7cmV0dXJue2dldEFyZWFPZkNpcmNsZTpiLGdldEFyZWFPZkludGVyc2VjdGlvbkJldHdlZW5DaXJjbGVzOmZ1bmN0aW9uKGQpe3ZhciBjPXkoZCk7aWYoMTxjLmxlbmd0aCl7dmFyIGE9bihjKTtjPWMubWFwKGZ1bmN0aW9uKGQpe2QuYW5nbGU9cihhLGQpO3JldHVybiBkfSkuc29ydChmdW5jdGlvbihkLGMpe3JldHVybiBjLmFuZ2xlLWQuYW5nbGV9KTt2YXIgYj1jW2MubGVuZ3RoLTFdO2M9Yy5yZWR1Y2UoZnVuY3Rpb24oYywKYil7dmFyIGE9Yy5zdGFydFBvaW50LGY9bihbYSxiXSksZT1iLmluZGV4ZXMuZmlsdGVyKGZ1bmN0aW9uKGQpe3JldHVybi0xPGEuaW5kZXhlcy5pbmRleE9mKGQpfSkucmVkdWNlKGZ1bmN0aW9uKGMsZSl7ZT1kW2VdO3ZhciBxPXIoZSxiKSxrPXIoZSxhKTtxPWstKGstcSsoazxxPzIqTWF0aC5QSTowKSkvMjtxPXQoZix7eDplLngrZS5yKk1hdGguc2luKHEpLHk6ZS55K2UucipNYXRoLmNvcyhxKX0pO2U9ZS5yO3E+MiplJiYocT0yKmUpO2lmKCFjfHxjLndpZHRoPnEpYz17cjplLGxhcmdlQXJjOnE+ZT8xOjAsd2lkdGg6cSx4OmIueCx5OmIueX07cmV0dXJuIGN9LG51bGwpO2lmKGUpe3ZhciBxPWUucjtjLmFyY3MucHVzaChbIkEiLHEscSwwLGUubGFyZ2VBcmMsMSxlLngsZS55XSk7Yy5zdGFydFBvaW50PWJ9cmV0dXJuIGN9LHtzdGFydFBvaW50OmIsYXJjczpbXX0pLmFyY3M7aWYoMCE9PWMubGVuZ3RoJiYxIT09Yy5sZW5ndGgpe2MudW5zaGlmdChbIk0iLGIueCxiLnldKTt2YXIgZj0Ke2NlbnRlcjphLGQ6Y319fXJldHVybiBmfSxnZXRDaXJjbGVDaXJjbGVJbnRlcnNlY3Rpb246bSxnZXRDaXJjbGVzSW50ZXJzZWN0aW9uUG9pbnRzOmUsZ2V0Q2lyY2xlc0ludGVyc2VjdGlvblBvbHlnb246eSxnZXRDaXJjdWxhclNlZ21lbnRBcmVhOmssZ2V0T3ZlcmxhcEJldHdlZW5DaXJjbGVzOmZ1bmN0aW9uKGQsYyxhKXt2YXIgZT0wO2E8ZCtjJiYoYTw9TWF0aC5hYnMoYy1kKT9lPWIoZDxjP2Q6Yyk6KGU9KGQqZC1jKmMrYSphKS8oMiphKSxhLT1lLGU9ayhkLGQtZSkrayhjLGMtYSkpLGU9ZihlLDE0KSk7cmV0dXJuIGV9LGlzQ2lyY2xlMUNvbXBsZXRlbHlPdmVybGFwcGluZ0NpcmNsZTI6ZnVuY3Rpb24oZCxjKXtyZXR1cm4gdChkLGMpK2MucjxkLnIrMWUtMTB9LGlzUG9pbnRJbnNpZGVDaXJjbGU6dSxpc1BvaW50SW5zaWRlQWxsQ2lyY2xlczp3LGlzUG9pbnRPdXRzaWRlQWxsQ2lyY2xlczpmdW5jdGlvbihkLGMpe3JldHVybiFjLnNvbWUoZnVuY3Rpb24oYyl7cmV0dXJuIHUoZCwKYyl9KX0scm91bmQ6Zn19KTttKGEsIm1peGlucy9uZWxkZXItbWVhZC5qcyIsW10sZnVuY3Rpb24oKXt2YXIgYT1mdW5jdGlvbihhKXthPWEuc2xpY2UoMCwtMSk7Zm9yKHZhciBiPWEubGVuZ3RoLGY9W10saz1mdW5jdGlvbihhLGIpe2Euc3VtKz1iW2EuaV07cmV0dXJuIGF9LGU9MDtlPGI7ZSsrKWZbZV09YS5yZWR1Y2Uoayx7c3VtOjAsaTplfSkuc3VtL2I7cmV0dXJuIGZ9O3JldHVybntnZXRDZW50cm9pZDphLG5lbGRlck1lYWQ6ZnVuY3Rpb24oZixiKXt2YXIgaz1mdW5jdGlvbihhLGMpe3JldHVybiBhLmZ4LWMuZnh9LG09ZnVuY3Rpb24oYSxjLGIsZSl7cmV0dXJuIGMubWFwKGZ1bmN0aW9uKGMsZCl7cmV0dXJuIGEqYytiKmVbZF19KX0sZT1mdW5jdGlvbihhLGMpe2MuZng9ZihjKTthW2EubGVuZ3RoLTFdPWM7cmV0dXJuIGF9LHU9ZnVuY3Rpb24oYSl7dmFyIGM9YVswXTtyZXR1cm4gYS5tYXAoZnVuY3Rpb24oYSl7YT1tKC41LGMsLjUsYSk7YS5meD1mKGEpO3JldHVybiBhfSl9LAp3PWZ1bmN0aW9uKGEsYyxiLGUpe2E9bShiLGEsZSxjKTthLmZ4PWYoYSk7cmV0dXJuIGF9O2I9ZnVuY3Rpb24oYSl7dmFyIGM9YS5sZW5ndGgsYj1BcnJheShjKzEpO2JbMF09YTtiWzBdLmZ4PWYoYSk7Zm9yKHZhciBkPTA7ZDxjOysrZCl7dmFyIGU9YS5zbGljZSgpO2VbZF09ZVtkXT8xLjA1KmVbZF06LjAwMTtlLmZ4PWYoZSk7YltkKzFdPWV9cmV0dXJuIGJ9KGIpO2Zvcih2YXIgeT0wOzEwMD55O3krKyl7Yi5zb3J0KGspO3ZhciByPWJbYi5sZW5ndGgtMV0sbj1hKGIpLHQ9dyhuLHIsMiwtMSk7dC5meDxiWzBdLmZ4PyhyPXcobixyLDMsLTIpLGI9ZShiLHIuZng8dC5meD9yOnQpKTp0LmZ4Pj1iW2IubGVuZ3RoLTJdLmZ4P3QuZng+ci5meD8obj13KG4sciwuNSwuNSksYj1uLmZ4PHIuZng/ZShiLG4pOnUoYikpOihuPXcobixyLDEuNSwtLjUpLGI9bi5meDx0LmZ4P2UoYixuKTp1KGIpKTpiPWUoYix0KX1yZXR1cm4gYlswXX19fSk7bShhLCJtb2R1bGVzL3Zlbm4uc3JjLmpzIiwKW2FbInBhcnRzL0NvbG9yLmpzIl0sYVsicGFydHMvR2xvYmFscy5qcyJdLGFbInBhcnRzL1V0aWxpdGllcy5qcyJdLGFbIm1peGlucy9kcmF3LXBvaW50LmpzIl0sYVsibWl4aW5zL2dlb21ldHJ5LmpzIl0sYVsibWl4aW5zL2dlb21ldHJ5LWNpcmNsZXMuanMiXSxhWyJtaXhpbnMvbmVsZGVyLW1lYWQuanMiXV0sZnVuY3Rpb24oYSxmLGIsbSxDLGUsdSl7ZnVuY3Rpb24gayhhLGMpe3ZhciBsPWEuc2V0cyxiPWMucmVkdWNlKGZ1bmN0aW9uKGEsYyl7dmFyIGI9LTE8bC5pbmRleE9mKGMuc2V0c1swXSk7YVtiPyJpbnRlcm5hbCI6ImV4dGVybmFsIl0ucHVzaChjLmNpcmNsZSk7cmV0dXJuIGF9LHtpbnRlcm5hbDpbXSxleHRlcm5hbDpbXX0pO2IuZXh0ZXJuYWw9Yi5leHRlcm5hbC5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIGIuaW50ZXJuYWwuc29tZShmdW5jdGlvbihjKXtyZXR1cm4hWShhLGMpfSl9KTthPVooYi5pbnRlcm5hbCxiLmV4dGVybmFsKTtjPUwoYSxiLmludGVybmFsLApiLmV4dGVybmFsKTtyZXR1cm57cG9zaXRpb246YSx3aWR0aDpjfX1mdW5jdGlvbiB5KGEpe3ZhciBjPXt9LGI9e307aWYoMDxhLmxlbmd0aCl7dmFyIGw9TShhKSxnPWEuZmlsdGVyKEEpO2EuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgcD1hLnNldHMsZD1wLmpvaW4oKTtpZihwPUEoYSk/bFtkXTp4KHAubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBsW2FdfSkpKWNbZF09cCxiW2RdPWsoYSxnKX0pfXJldHVybnttYXBPZklkVG9TaGFwZTpjLG1hcE9mSWRUb0xhYmVsVmFsdWVzOmJ9fXZhciByPWEucGFyc2U7YT1iLmFkZEV2ZW50O3ZhciBuPWIuYW5pbU9iamVjdCx0PWIuZXh0ZW5kLGQ9Yi5pc0FycmF5LGM9Yi5pc051bWJlcixxPWIuaXNPYmplY3QsQj1iLmlzU3RyaW5nLEg9Yi5tZXJnZTtiPWIuc2VyaWVzVHlwZTt2YXIgej1lLmdldEFyZWFPZkNpcmNsZSx4PWUuZ2V0QXJlYU9mSW50ZXJzZWN0aW9uQmV0d2VlbkNpcmNsZXMsVT1lLmdldENpcmNsZUNpcmNsZUludGVyc2VjdGlvbiwKVj1lLmdldENpcmNsZXNJbnRlcnNlY3Rpb25Qb2x5Z29uLEk9ZS5nZXRPdmVybGFwQmV0d2VlbkNpcmNsZXMsWT1lLmlzQ2lyY2xlMUNvbXBsZXRlbHlPdmVybGFwcGluZ0NpcmNsZTIsSj1lLmlzUG9pbnRJbnNpZGVBbGxDaXJjbGVzLFc9ZS5pc1BvaW50SW5zaWRlQ2lyY2xlLEs9ZS5pc1BvaW50T3V0c2lkZUFsbENpcmNsZXMsWD11Lm5lbGRlck1lYWQsYWE9Qy5nZXRDZW50ZXJPZlBvaW50cyxFPUMuZ2V0RGlzdGFuY2VCZXR3ZWVuUG9pbnRzLE49Zi5zZXJpZXNUeXBlcyxiYT1mdW5jdGlvbihhKXtyZXR1cm4gT2JqZWN0LmtleXMoYSkubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBhW2NdfSl9LGNhPWZ1bmN0aW9uKGEpe3ZhciBjPTA7Mj09PWEubGVuZ3RoJiYoYz1hWzBdLGE9YVsxXSxjPUkoYy5yLGEucixFKGMsYSkpKTtyZXR1cm4gY30sTz1mdW5jdGlvbihhLGMpe3JldHVybiBjLnJlZHVjZShmdW5jdGlvbihjLGIpe3ZhciBnPTA7MTxiLnNldHMubGVuZ3RoJiYoZz1iLnZhbHVlLApiPWNhKGIuc2V0cy5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIGFbY119KSksYj1nLWIsZz1NYXRoLnJvdW5kKGIqYioxRTExKS8xRTExKTtyZXR1cm4gYytnfSwwKX0sUD1mdW5jdGlvbihhLGMsYixkLGcpe3ZhciBsPWEoYyksZT1hKGIpO2c9Z3x8MTAwO2Q9ZHx8MWUtMTA7dmFyIHA9Yi1jLGY9MTtpZihjPj1iKXRocm93IEVycm9yKCJhIG11c3QgYmUgc21hbGxlciB0aGFuIGIuIik7aWYoMDxsKmUpdGhyb3cgRXJyb3IoImYoYSkgYW5kIGYoYikgbXVzdCBoYXZlIG9wcG9zaXRlIHNpZ25zLiIpO2lmKDA9PT1sKXZhciBoPWM7ZWxzZSBpZigwPT09ZSloPWI7ZWxzZSBmb3IoO2YrKzw9ZyYmMCE9PXYmJnA+ZDspe3A9KGItYykvMjtoPWMrcDt2YXIgdj1hKGgpOzA8bCp2P2M9aDpiPWh9cmV0dXJuIGh9LEY9ZnVuY3Rpb24oYSxjLGIpe3ZhciBkPWErYztyZXR1cm4gMD49Yj9kOnooYTxjP2E6Yyk8PWI/MDpQKGZ1bmN0aW9uKGcpe2c9SShhLGMsZyk7cmV0dXJuIGItZ30sMCxkKX0sQT0KZnVuY3Rpb24oYSl7cmV0dXJuIGQoYS5zZXRzKSYmMT09PWEuc2V0cy5sZW5ndGh9LEc9ZnVuY3Rpb24oYSxjLGIpe2M9Yy5yZWR1Y2UoZnVuY3Rpb24oYyxiKXtiPWIuci1FKGEsYik7cmV0dXJuIGI8PWM/YjpjfSxOdW1iZXIuTUFYX1ZBTFVFKTtyZXR1cm4gYz1iLnJlZHVjZShmdW5jdGlvbihjLGIpe2I9RShhLGIpLWIucjtyZXR1cm4gYjw9Yz9iOmN9LGMpfSxaPWZ1bmN0aW9uKGEsYyl7dmFyIGI9YS5yZWR1Y2UoZnVuY3Rpb24oYixkKXt2YXIgZT1kLnIvMjtyZXR1cm5be3g6ZC54LHk6ZC55fSx7eDpkLngrZSx5OmQueX0se3g6ZC54LWUseTpkLnl9LHt4OmQueCx5OmQueStlfSx7eDpkLngseTpkLnktZX1dLnJlZHVjZShmdW5jdGlvbihiLGQpe3ZhciBlPUcoZCxhLGMpO2IubWFyZ2luPGUmJihiLnBvaW50PWQsYi5tYXJnaW49ZSk7cmV0dXJuIGJ9LGIpfSx7cG9pbnQ6dm9pZCAwLG1hcmdpbjotTnVtYmVyLk1BWF9WQUxVRX0pLnBvaW50O2I9WChmdW5jdGlvbihiKXtyZXR1cm4tRyh7eDpiWzBdLAp5OmJbMV19LGEsYyl9LFtiLngsYi55XSk7Yj17eDpiWzBdLHk6YlsxXX07SihiLGEpJiZLKGIsYyl8fChiPTE8YS5sZW5ndGg/YWEoVihhKSk6e3g6YVswXS54LHk6YVswXS55fSk7cmV0dXJuIGJ9LEw9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWIucmVkdWNlKGZ1bmN0aW9uKGEsYil7cmV0dXJuIE1hdGgubWluKGIucixhKX0sSW5maW5pdHkpLGU9Yy5maWx0ZXIoZnVuY3Rpb24oYil7cmV0dXJuIVcoYSxiKX0pO2M9ZnVuY3Rpb24oYyxkKXtyZXR1cm4gUChmdW5jdGlvbihnKXt2YXIgbD17eDphLngrZCpnLHk6YS55fTtsPUoobCxiKSYmSyhsLGUpO3JldHVybi0oYy1nKSsobD8wOk51bWJlci5NQVhfVkFMVUUpfSwwLGMpfTtyZXR1cm4gMipNYXRoLm1pbihjKGQsLTEpLGMoZCwxKSl9LFE9ZnVuY3Rpb24oYSl7dmFyIGI9YS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIDI9PT1hLnNldHMubGVuZ3RofSkucmVkdWNlKGZ1bmN0aW9uKGEsYil7Yi5zZXRzLmZvckVhY2goZnVuY3Rpb24oYywKZCxlKXtxKGFbY10pfHwoYVtjXT17b3ZlcmxhcHBpbmc6e30sdG90YWxPdmVybGFwOjB9KTthW2NdLnRvdGFsT3ZlcmxhcCs9Yi52YWx1ZTthW2NdLm92ZXJsYXBwaW5nW2VbMS1kXV09Yi52YWx1ZX0pO3JldHVybiBhfSx7fSk7YS5maWx0ZXIoQSkuZm9yRWFjaChmdW5jdGlvbihhKXt0KGEsYlthLnNldHNbMF1dKX0pO3JldHVybiBhfSxSPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGIudG90YWxPdmVybGFwLWEudG90YWxPdmVybGFwfSxNPWZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9e307YS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIDE9PT1hLnNldHMubGVuZ3RofSkuZm9yRWFjaChmdW5jdGlvbihhKXtjW2Euc2V0c1swXV09YS5jaXJjbGU9e3g6TnVtYmVyLk1BWF9WQUxVRSx5Ok51bWJlci5NQVhfVkFMVUUscjpNYXRoLnNxcnQoYS52YWx1ZS9NYXRoLlBJKX19KTt2YXIgZD1mdW5jdGlvbihhLGMpe3ZhciBkPWEuY2lyY2xlO2QueD1jLng7ZC55PWMueTtiLnB1c2goYSl9O1EoYSk7CnZhciBlPWEuZmlsdGVyKEEpLnNvcnQoUik7ZChlLnNoaWZ0KCkse3g6MCx5OjB9KTt2YXIgZj1hLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gMj09PWEuc2V0cy5sZW5ndGh9KTtlLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGU9YS5jaXJjbGUsZz1lLnIsbD1hLm92ZXJsYXBwaW5nLHA9Yi5yZWR1Y2UoZnVuY3Rpb24oYSxkLHApe3ZhciBoPWQuY2lyY2xlLHY9RihnLGgucixsW2Quc2V0c1swXV0pLEQ9W3t4OmgueCt2LHk6aC55fSx7eDpoLngtdix5OmgueX0se3g6aC54LHk6aC55K3Z9LHt4OmgueCx5OmgueS12fV07Yi5zbGljZShwKzEpLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5jaXJjbGU7YT1GKGcsYi5yLGxbYS5zZXRzWzBdXSk7RD1ELmNvbmNhdChVKHt4OmgueCx5OmgueSxyOnZ9LHt4OmIueCx5OmIueSxyOmF9KSl9KTtELmZvckVhY2goZnVuY3Rpb24oYil7ZS54PWIueDtlLnk9Yi55O3ZhciBkPU8oYyxmKTtkPGEubG9zcyYmKGEubG9zcz1kLGEuY29vcmRpbmF0ZXM9CmIpfSk7cmV0dXJuIGF9LHtsb3NzOk51bWJlci5NQVhfVkFMVUUsY29vcmRpbmF0ZXM6dm9pZCAwfSk7ZChhLHAuY29vcmRpbmF0ZXMpfSk7cmV0dXJuIGN9LFM9ZnVuY3Rpb24oYSl7dmFyIGI9e307cmV0dXJuIHEoYSkmJmMoYS52YWx1ZSkmJi0xPGEudmFsdWUmJmQoYS5zZXRzKSYmMDxhLnNldHMubGVuZ3RoJiYhYS5zZXRzLnNvbWUoZnVuY3Rpb24oYSl7dmFyIGM9ITE7IWJbYV0mJkIoYSk/YlthXT0hMDpjPSEwO3JldHVybiBjfSl9LFQ9ZnVuY3Rpb24oYSl7YT1kKGEpP2E6W107dmFyIGI9YS5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtTKGIpJiZBKGIpJiYwPGIudmFsdWUmJi0xPT09YS5pbmRleE9mKGIuc2V0c1swXSkmJmEucHVzaChiLnNldHNbMF0pO3JldHVybiBhfSxbXSkuc29ydCgpLGM9YS5yZWR1Y2UoZnVuY3Rpb24oYSxjKXtTKGMpJiYhYy5zZXRzLnNvbWUoZnVuY3Rpb24oYSl7cmV0dXJuLTE9PT1iLmluZGV4T2YoYSl9KSYmKGFbYy5zZXRzLnNvcnQoKS5qb2luKCldPQpjKTtyZXR1cm4gYX0se30pO2IucmVkdWNlKGZ1bmN0aW9uKGEsYixjLGQpe2Quc2xpY2UoYysxKS5mb3JFYWNoKGZ1bmN0aW9uKGMpe2EucHVzaChiKyIsIitjKX0pO3JldHVybiBhfSxbXSkuZm9yRWFjaChmdW5jdGlvbihhKXtpZighY1thXSl7dmFyIGI9e3NldHM6YS5zcGxpdCgiLCIpLHZhbHVlOjB9O2NbYV09Yn19KTtyZXR1cm4gYmEoYyl9LGRhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1jLmJvdHRvbS1jLnRvcCxlPWMucmlnaHQtYy5sZWZ0O2Q9TWF0aC5taW4oMDxlPzEvZSphOjEsMDxkPzEvZCpiOjEpO3JldHVybntzY2FsZTpkLGNlbnRlclg6YS8yLShjLnJpZ2h0K2MubGVmdCkvMipkLGNlbnRlclk6Yi8yLShjLnRvcCtjLmJvdHRvbSkvMipkfX07YigidmVubiIsInNjYXR0ZXIiLHtib3JkZXJDb2xvcjoiI2NjY2NjYyIsYm9yZGVyRGFzaFN0eWxlOiJzb2xpZCIsYm9yZGVyV2lkdGg6MSxicmlnaHRlbjowLGNsaXA6ITEsY29sb3JCeVBvaW50OiEwLGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITAsCnZlcnRpY2FsQWxpZ246Im1pZGRsZSIsZm9ybWF0dGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9pbnQubmFtZX19LGluYWN0aXZlT3RoZXJQb2ludHM6ITAsbWFya2VyOiExLG9wYWNpdHk6Ljc1LHNob3dJbkxlZ2VuZDohMSxzdGF0ZXM6e2hvdmVyOntvcGFjaXR5OjEsYm9yZGVyQ29sb3I6IiMzMzMzMzMifSxzZWxlY3Q6e2NvbG9yOiIjY2NjY2NjIixib3JkZXJDb2xvcjoiIzAwMDAwMCIsYW5pbWF0aW9uOiExfSxpbmFjdGl2ZTp7b3BhY2l0eTouMDc1fX0sdG9vbHRpcDp7cG9pbnRGb3JtYXQ6Intwb2ludC5uYW1lfToge3BvaW50LnZhbHVlfSJ9fSx7aXNDYXJ0ZXNpYW46ITEsYXhpc1R5cGVzOltdLGRpcmVjdFRvdWNoOiEwLHBvaW50QXJyYXlNYXA6WyJ2YWx1ZSJdLGluaXQ6ZnVuY3Rpb24oKXtOLnNjYXR0ZXIucHJvdG90eXBlLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO2RlbGV0ZSB0aGlzLm9wYWNpdHl9LHRyYW5zbGF0ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuY2hhcnQ7CnRoaXMucHJvY2Vzc2VkWERhdGE9dGhpcy54RGF0YTt0aGlzLmdlbmVyYXRlUG9pbnRzKCk7dmFyIGI9VCh0aGlzLm9wdGlvbnMuZGF0YSk7Yj15KGIpO3ZhciBlPWIubWFwT2ZJZFRvU2hhcGUsZj1iLm1hcE9mSWRUb0xhYmVsVmFsdWVzO2I9T2JqZWN0LmtleXMoZSkuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybihhPWVbYV0pJiZjKGEucil9KS5yZWR1Y2UoZnVuY3Rpb24oYSxiKXt2YXIgZD1lW2JdO2I9ZC54LWQucjt2YXIgZj1kLngrZC5yLGc9ZC55K2QucjtkPWQueS1kLnI7aWYoIWMoYS5sZWZ0KXx8YS5sZWZ0PmIpYS5sZWZ0PWI7aWYoIWMoYS5yaWdodCl8fGEucmlnaHQ8ZilhLnJpZ2h0PWY7aWYoIWMoYS50b3ApfHxhLnRvcD5kKWEudG9wPWQ7aWYoIWMoYS5ib3R0b20pfHxhLmJvdHRvbTxnKWEuYm90dG9tPWc7cmV0dXJuIGF9LHt0b3A6MCxib3R0b206MCxsZWZ0OjAscmlnaHQ6MH0pO2E9ZGEoYS5wbG90V2lkdGgsYS5wbG90SGVpZ2h0LGIpO3ZhciBnPWEuc2NhbGUsaz0KYS5jZW50ZXJYLG09YS5jZW50ZXJZO3RoaXMucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9ZChhLnNldHMpP2Euc2V0czpbXSxsPWIuam9pbigpLHA9ZVtsXSxoPWZbbF18fHt9O2w9aC53aWR0aDtoPWgucG9zaXRpb247dmFyIHY9YS5vcHRpb25zJiZhLm9wdGlvbnMuZGF0YUxhYmVscztpZihwKXtpZihwLnIpdmFyIG49e3g6aytwLngqZyx5Om0rcC55KmcscjpwLnIqZ307ZWxzZSBwLmQmJihwPXAuZCxwLmZvckVhY2goZnVuY3Rpb24oYSl7Ik0iPT09YVswXT8oYVsxXT1rK2FbMV0qZyxhWzJdPW0rYVsyXSpnKToiQSI9PT1hWzBdJiYoYVsxXSo9ZyxhWzJdKj1nLGFbNl09aythWzZdKmcsYVs3XT1tK2FbN10qZyl9KSxuPXtkOnB9KTtoPyhoLng9aytoLngqZyxoLnk9bStoLnkqZyk6aD17fTtjKGwpJiYobD1NYXRoLnJvdW5kKGwqZykpfWEuc2hhcGVBcmdzPW47aCYmbiYmKGEucGxvdFg9aC54LGEucGxvdFk9aC55KTtsJiZuJiYoYS5kbE9wdGlvbnM9SCghMCx7c3R5bGU6e3dpZHRoOmx9fSwKcSh2KSYmdikpO2EubmFtZT1hLm9wdGlvbnMubmFtZXx8Yi5qb2luKCJcdTIyMjkiKX0pfSxkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPWEuY2hhcnQsYz1hLmdyb3VwLGU9Yi5yZW5kZXJlcjsoYS5wb2ludHN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGYpe3ZhciBsPXt6SW5kZXg6ZChmLnNldHMpP2Yuc2V0cy5sZW5ndGg6MH0sZz1mLnNoYXBlQXJncztiLnN0eWxlZE1vZGV8fHQobCxhLnBvaW50QXR0cmlicyhmLGYuc3RhdGUpKTtmLmRyYXcoe2lzTmV3OiFmLmdyYXBoaWMsYW5pbWF0YWJsZUF0dHJpYnM6ZyxhdHRyaWJzOmwsZ3JvdXA6YyxyZW5kZXJlcjplLHNoYXBlVHlwZTpnJiZnLmQ/InBhdGgiOiJjaXJjbGUifSl9KX0scG9pbnRBdHRyaWJzOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5vcHRpb25zfHx7fTthPUgoYyx7Y29sb3I6YSYmYS5jb2xvcn0sYSYmYS5vcHRpb25zfHx7fSxiJiZjLnN0YXRlc1tiXXx8e30pO3JldHVybntmaWxsOnIoYS5jb2xvcikuc2V0T3BhY2l0eShhLm9wYWNpdHkpLmJyaWdodGVuKGEuYnJpZ2h0bmVzcykuZ2V0KCksCnN0cm9rZTphLmJvcmRlckNvbG9yLCJzdHJva2Utd2lkdGgiOmEuYm9yZGVyV2lkdGgsZGFzaHN0eWxlOmEuYm9yZGVyRGFzaFN0eWxlfX0sYW5pbWF0ZTpmdW5jdGlvbihhKXtpZighYSl7dmFyIGI9bih0aGlzLm9wdGlvbnMuYW5pbWF0aW9uKTt0aGlzLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBjPWEuc2hhcGVBcmdzO2lmKGEuZ3JhcGhpYyYmYyl7dmFyIGQ9e30sZT17fTtjLmQ/ZC5vcGFjaXR5PS4wMDE6KGQucj0wLGUucj1jLnIpO2EuZ3JhcGhpYy5hdHRyKGQpLmFuaW1hdGUoZSxiKTtjLmQmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXthJiZhLmdyYXBoaWMmJmEuZ3JhcGhpYy5hbmltYXRlKHtvcGFjaXR5OjF9KX0sYi5kdXJhdGlvbil9fSx0aGlzKX19LHV0aWxzOnthZGRPdmVybGFwVG9TZXRzOlEsZ2VvbWV0cnk6QyxnZW9tZXRyeUNpcmNsZXM6ZSxnZXRMYWJlbFdpZHRoOkwsZ2V0TWFyZ2luRnJvbUNpcmNsZXM6RyxnZXREaXN0YW5jZUJldHdlZW5DaXJjbGVzQnlPdmVybGFwOkYsCmxheW91dEdyZWVkeVZlbm46TSxsb3NzOk8sbmVsZGVyTWVhZDp1LHByb2Nlc3NWZW5uRGF0YTpULHNvcnRCeVRvdGFsT3ZlcmxhcDpSfX0se2RyYXc6bSxzaG91bGREcmF3OmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLnNoYXBlQXJnc30saXNWYWxpZDpmdW5jdGlvbigpe3JldHVybiBjKHRoaXMudmFsdWUpfX0pO2EoTi52ZW5uLCJhZnRlclNldE9wdGlvbnMiLGZ1bmN0aW9uKGEpe3ZhciBiPWEub3B0aW9ucy5zdGF0ZXM7dGhpcy5pcygidmVubiIpJiZPYmplY3Qua2V5cyhiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2JbYV0uaGFsbz0hMX0pfSl9KTttKGEsIm1hc3RlcnMvbW9kdWxlcy92ZW5uLnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD12ZW5uLmpzLm1hcA=="></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgR2FudHQgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIEdhbnR0IHNlcmllcwoKIChjKSAyMDE2LTIwMTkgTGFycyBBLiBWLiBDYWJyZXJhCgogTGljZW5zZTogd3d3LmhpZ2hjaGFydHMuY29tL2xpY2Vuc2UKKi8KKGZ1bmN0aW9uKGMpeyJvYmplY3QiPT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/KGNbImRlZmF1bHQiXT1jLG1vZHVsZS5leHBvcnRzPWMpOiJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiaGlnaGNoYXJ0cy9tb2R1bGVzL2dhbnR0IixbImhpZ2hjaGFydHMiXSxmdW5jdGlvbihKKXtjKEopO2MuSGlnaGNoYXJ0cz1KO3JldHVybiBjfSk6YygidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGMpe2Z1bmN0aW9uIEooYyxsLHUseil7Yy5oYXNPd25Qcm9wZXJ0eShsKXx8KGNbbF09ei5hcHBseShudWxsLHUpKX1jPWM/Yy5fbW9kdWxlczp7fTtKKGMsInBhcnRzLWdhbnR0L1RyZWUuanMiLFtjWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYyl7dmFyIGw9Yy5leHRlbmQsdT1jLmlzTnVtYmVyLHo9Yy5waWNrLHg9ZnVuY3Rpb24obCx5KXt2YXIgaz1sLnJlZHVjZShmdW5jdGlvbihiLApnKXt2YXIgbT16KGcucGFyZW50LCIiKTsidW5kZWZpbmVkIj09PXR5cGVvZiBiW21dJiYoYlttXT1bXSk7YlttXS5wdXNoKGcpO3JldHVybiBifSx7fSk7T2JqZWN0LmtleXMoaykuZm9yRWFjaChmdW5jdGlvbihiLGcpe3ZhciBtPWtbYl07IiIhPT1iJiYtMT09PXkuaW5kZXhPZihiKSYmKG0uZm9yRWFjaChmdW5jdGlvbihiKXtnWyIiXS5wdXNoKGIpfSksZGVsZXRlIGdbYl0pfSk7cmV0dXJuIGt9LEE9ZnVuY3Rpb24oYyx5LGssYixnLG0pe3ZhciB0PTAsSD0wLEk9bSYmbS5hZnRlcixFPW0mJm0uYmVmb3JlO3k9e2RhdGE6YixkZXB0aDprLTEsaWQ6YyxsZXZlbDprLHBhcmVudDp5fTt2YXIgcCxhOyJmdW5jdGlvbiI9PT10eXBlb2YgRSYmRSh5LG0pO0U9KGdbY118fFtdKS5tYXAoZnVuY3Rpb24odyl7dmFyIGU9QSh3LmlkLGMsaysxLHcsZyxtKSxDPXcuc3RhcnQ7dz0hMD09PXcubWlsZXN0b25lP0M6dy5lbmQ7cD0hdShwKXx8QzxwP0M6cDthPSF1KGEpfHx3PmE/dzphO3Q9dCsKMStlLmRlc2NlbmRhbnRzO0g9TWF0aC5tYXgoZS5oZWlnaHQrMSxIKTtyZXR1cm4gZX0pO2ImJihiLnN0YXJ0PXooYi5zdGFydCxwKSxiLmVuZD16KGIuZW5kLGEpKTtsKHkse2NoaWxkcmVuOkUsZGVzY2VuZGFudHM6dCxoZWlnaHQ6SH0pOyJmdW5jdGlvbiI9PT10eXBlb2YgSSYmSSh5LG0pO3JldHVybiB5fTtyZXR1cm57Z2V0TGlzdE9mUGFyZW50czp4LGdldE5vZGU6QSxnZXRUcmVlOmZ1bmN0aW9uKGwseSl7dmFyIGs9bC5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIGIuaWR9KTtsPXgobCxrKTtyZXR1cm4gQSgiIixudWxsLDEsbnVsbCxsLHkpfX19KTtKKGMsInBhcnRzLWdhbnR0L1RyZWVHcmlkVGljay5qcyIsW2NbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihjKXt2YXIgbD1jLmFkZEV2ZW50LHU9Yy5kZWZpbmVkLHo9Yy5pc09iamVjdCx4PWMuaXNOdW1iZXIsQT1jLnBpY2ssRD1jLndyYXAseTsoZnVuY3Rpb24oayl7ZnVuY3Rpb24gYigpe3RoaXMudHJlZUdyaWR8fAoodGhpcy50cmVlR3JpZD1uZXcgYyh0aGlzKSl9ZnVuY3Rpb24gZyhiLHApe2I9Yi50cmVlR3JpZDt2YXIgYT0hYi5sYWJlbEljb24sdz1wLnJlbmRlcmVyLGU9cC54eSxDPXAub3B0aW9ucyxxPUMud2lkdGgsZj1DLmhlaWdodCxkPWUueC1xLzItQy5wYWRkaW5nO2U9ZS55LWYvMjt2YXIgdj1wLmNvbGxhcHNlZD85MDoxODAsRz1wLnNob3cmJngoZSksQj1iLmxhYmVsSWNvbjtCfHwoYi5sYWJlbEljb249Qj13LnBhdGgody5zeW1ib2xzW0MudHlwZV0oQy54LEMueSxxLGYpKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1sYWJlbC1pY29uIikuYWRkKHAuZ3JvdXApKTtHfHxCLmF0dHIoe3k6LTk5OTl9KTt3LnN0eWxlZE1vZGV8fEIuYXR0cih7InN0cm9rZS13aWR0aCI6MSxmaWxsOkEocC5jb2xvciwiIzY2NjY2NiIpfSkuY3NzKHtjdXJzb3I6InBvaW50ZXIiLHN0cm9rZTpDLmxpbmVDb2xvcixzdHJva2VXaWR0aDpDLmxpbmVXaWR0aH0pO0JbYT8iYXR0ciI6ImFuaW1hdGUiXSh7dHJhbnNsYXRlWDpkLAp0cmFuc2xhdGVZOmUscm90YXRpb246dn0pfWZ1bmN0aW9uIG0oYixwLGEsdyxlLEMscSxmLGQpe3ZhciB2PUEodGhpcy5vcHRpb25zJiZ0aGlzLm9wdGlvbnMubGFiZWxzLEMpO0M9dGhpcy5wb3M7dmFyIEc9dGhpcy5heGlzLEI9InRyZWVncmlkIj09PUcub3B0aW9ucy50eXBlO2I9Yi5hcHBseSh0aGlzLFtwLGEsdyxlLHYscSxmLGRdKTtCJiYocD12JiZ6KHYuc3ltYm9sLCEwKT92LnN5bWJvbDp7fSx2PXYmJngodi5pbmRlbnRhdGlvbik/di5pbmRlbnRhdGlvbjowLEM9KEM9KEc9Ry50cmVlR3JpZC5tYXBPZlBvc1RvR3JpZE5vZGUpJiZHW0NdKSYmQy5kZXB0aHx8MSxiLngrPXAud2lkdGgrMipwLnBhZGRpbmcrKEMtMSkqdik7cmV0dXJuIGJ9ZnVuY3Rpb24gdChiKXt2YXIgcD10aGlzLGE9cC5wb3Msdz1wLmF4aXMsZT1wLmxhYmVsLEM9dy50cmVlR3JpZC5tYXBPZlBvc1RvR3JpZE5vZGUscT13Lm9wdGlvbnMsZj1BKHAub3B0aW9ucyYmcC5vcHRpb25zLmxhYmVscyxxJiZxLmxhYmVscyksCmQ9ZiYmeihmLnN5bWJvbCwhMCk/Zi5zeW1ib2w6e30sdj0oQz1DJiZDW2FdKSYmQy5kZXB0aDtxPSJ0cmVlZ3JpZCI9PT1xLnR5cGU7dmFyIEc9LTE8dy50aWNrUG9zaXRpb25zLmluZGV4T2YoYSk7YT13LmNoYXJ0LnN0eWxlZE1vZGU7cSYmQyYmZSYmZS5lbGVtZW50JiZlLmFkZENsYXNzKCJoaWdoY2hhcnRzLXRyZWVncmlkLW5vZGUtbGV2ZWwtIit2KTtiLmFwcGx5KHAsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKTtxJiZlJiZlLmVsZW1lbnQmJkMmJkMuZGVzY2VuZGFudHMmJjA8Qy5kZXNjZW5kYW50cyYmKHc9dy50cmVlR3JpZC5pc0NvbGxhcHNlZChDKSxnKHAse2NvbG9yOiFhJiZlLnN0eWxlcyYmZS5zdHlsZXMuY29sb3J8fCIiLGNvbGxhcHNlZDp3LGdyb3VwOmUucGFyZW50R3JvdXAsb3B0aW9uczpkLHJlbmRlcmVyOmUucmVuZGVyZXIsc2hvdzpHLHh5OmUueHl9KSxkPSJoaWdoY2hhcnRzLXRyZWVncmlkLW5vZGUtIisodz8iZXhwYW5kZWQiOgoiY29sbGFwc2VkIiksZS5hZGRDbGFzcygiaGlnaGNoYXJ0cy10cmVlZ3JpZC1ub2RlLSIrKHc/ImNvbGxhcHNlZCI6ImV4cGFuZGVkIikpLnJlbW92ZUNsYXNzKGQpLGF8fGUuY3NzKHtjdXJzb3I6InBvaW50ZXIifSksW2UscC50cmVlR3JpZC5sYWJlbEljb25dLmZvckVhY2goZnVuY3Rpb24oZCl7ZCYmIWQuYXR0YWNoZWRUcmVlR3JpZEV2ZW50cyYmKGwoZC5lbGVtZW50LCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7ZS5hZGRDbGFzcygiaGlnaGNoYXJ0cy10cmVlZ3JpZC1ub2RlLWFjdGl2ZSIpO2UucmVuZGVyZXIuc3R5bGVkTW9kZXx8ZS5jc3Moe3RleHREZWNvcmF0aW9uOiJ1bmRlcmxpbmUifSl9KSxsKGQuZWxlbWVudCwibW91c2VvdXQiLGZ1bmN0aW9uKCl7dmFyIGQ9dShmLnN0eWxlKT9mLnN0eWxlOnt9O2UucmVtb3ZlQ2xhc3MoImhpZ2hjaGFydHMtdHJlZWdyaWQtbm9kZS1hY3RpdmUiKTtlLnJlbmRlcmVyLnN0eWxlZE1vZGV8fGUuY3NzKHt0ZXh0RGVjb3JhdGlvbjpkLnRleHREZWNvcmF0aW9ufSl9KSwKbChkLmVsZW1lbnQsImNsaWNrIixmdW5jdGlvbigpe3AudHJlZUdyaWQudG9nZ2xlQ29sbGFwc2UoKX0pLGQuYXR0YWNoZWRUcmVlR3JpZEV2ZW50cz0hMCl9KSl9dmFyIEg9ITE7ay5jb21wb3NlPWZ1bmN0aW9uKGcpe0h8fChsKGcsImluaXQiLGIpLEQoZy5wcm90b3R5cGUsImdldExhYmVsUG9zaXRpb24iLG0pLEQoZy5wcm90b3R5cGUsInJlbmRlckxhYmVsIix0KSxnLnByb3RvdHlwZS5jb2xsYXBzZT1mdW5jdGlvbihiKXt0aGlzLnRyZWVHcmlkLmNvbGxhcHNlKGIpfSxnLnByb3RvdHlwZS5leHBhbmQ9ZnVuY3Rpb24oYil7dGhpcy50cmVlR3JpZC5leHBhbmQoYil9LGcucHJvdG90eXBlLnRvZ2dsZUNvbGxhcHNlPWZ1bmN0aW9uKGIpe3RoaXMudHJlZUdyaWQudG9nZ2xlQ29sbGFwc2UoYil9LEg9ITApfTt2YXIgYz1mdW5jdGlvbigpe2Z1bmN0aW9uIGIoYil7dGhpcy50aWNrPWJ9Yi5wcm90b3R5cGUuY29sbGFwc2U9ZnVuY3Rpb24oYil7dmFyIGE9dGhpcy50aWNrLHc9YS5heGlzLAplPXcuYnJva2VuQXhpcztlJiZ3LnRyZWVHcmlkLm1hcE9mUG9zVG9HcmlkTm9kZSYmKGE9dy50cmVlR3JpZC5jb2xsYXBzZSh3LnRyZWVHcmlkLm1hcE9mUG9zVG9HcmlkTm9kZVthLnBvc10pLGUuc2V0QnJlYWtzKGEsQShiLCEwKSkpfTtiLnByb3RvdHlwZS5leHBhbmQ9ZnVuY3Rpb24oYil7dmFyIGE9dGhpcy50aWNrLHc9YS5heGlzLGU9dy5icm9rZW5BeGlzO2UmJncudHJlZUdyaWQubWFwT2ZQb3NUb0dyaWROb2RlJiYoYT13LnRyZWVHcmlkLmV4cGFuZCh3LnRyZWVHcmlkLm1hcE9mUG9zVG9HcmlkTm9kZVthLnBvc10pLGUuc2V0QnJlYWtzKGEsQShiLCEwKSkpfTtiLnByb3RvdHlwZS50b2dnbGVDb2xsYXBzZT1mdW5jdGlvbihiKXt2YXIgYT10aGlzLnRpY2ssdz1hLmF4aXMsZT13LmJyb2tlbkF4aXM7ZSYmdy50cmVlR3JpZC5tYXBPZlBvc1RvR3JpZE5vZGUmJihhPXcudHJlZUdyaWQudG9nZ2xlQ29sbGFwc2Uody50cmVlR3JpZC5tYXBPZlBvc1RvR3JpZE5vZGVbYS5wb3NdKSwKZS5zZXRCcmVha3MoYSxBKGIsITApKSl9O3JldHVybiBifSgpO2suQWRkaXRpb25zPWN9KSh5fHwoeT17fSkpO3JldHVybiB5fSk7SihjLCJtaXhpbnMvdHJlZS1zZXJpZXMuanMiLFtjWyJwYXJ0cy9Db2xvci5qcyJdLGNbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihjLGwpe3ZhciB1PWwuZXh0ZW5kLHo9bC5pc0FycmF5LHg9bC5pc051bWJlcixBPWwuaXNPYmplY3QsRD1sLm1lcmdlLHk9bC5waWNrO3JldHVybntnZXRDb2xvcjpmdW5jdGlvbihrLGIpe3ZhciBnPWIuaW5kZXgsbT1iLm1hcE9wdGlvbnNUb0xldmVsLHQ9Yi5wYXJlbnRDb2xvcixIPWIucGFyZW50Q29sb3JJbmRleCxsPWIuc2VyaWVzLEU9Yi5jb2xvcnMscD1iLnNpYmxpbmdzLGE9bC5wb2ludHMsdz1sLmNoYXJ0Lm9wdGlvbnMuY2hhcnQsZTtpZihrKXthPWFbay5pXTtrPW1bay5sZXZlbF18fHt9O2lmKG09YSYmay5jb2xvckJ5UG9pbnQpe3ZhciBDPWEuaW5kZXglKEU/RS5sZW5ndGg6dy5jb2xvckNvdW50KTsKdmFyIHE9RSYmRVtDXX1pZighbC5jaGFydC5zdHlsZWRNb2RlKXtFPWEmJmEub3B0aW9ucy5jb2xvcjt3PWsmJmsuY29sb3I7aWYoZT10KWU9KGU9ayYmay5jb2xvclZhcmlhdGlvbikmJiJicmlnaHRuZXNzIj09PWUua2V5P2MucGFyc2UodCkuYnJpZ2h0ZW4oZy9wKmUudG8pLmdldCgpOnQ7ZT15KEUsdyxxLGUsbC5jb2xvcil9dmFyIGY9eShhJiZhLm9wdGlvbnMuY29sb3JJbmRleCxrJiZrLmNvbG9ySW5kZXgsQyxILGIuY29sb3JJbmRleCl9cmV0dXJue2NvbG9yOmUsY29sb3JJbmRleDpmfX0sZ2V0TGV2ZWxPcHRpb25zOmZ1bmN0aW9uKGspe3ZhciBiPW51bGw7aWYoQShrKSl7Yj17fTt2YXIgZz14KGsuZnJvbSk/ay5mcm9tOjE7dmFyIG09ay5sZXZlbHM7dmFyIHQ9e307dmFyIEg9QShrLmRlZmF1bHRzKT9rLmRlZmF1bHRzOnt9O3oobSkmJih0PW0ucmVkdWNlKGZ1bmN0aW9uKGIsbSl7aWYoQShtKSYmeChtLmxldmVsKSl7dmFyIHA9RCh7fSxtKTt2YXIgYT0iYm9vbGVhbiI9PT0KdHlwZW9mIHAubGV2ZWxJc0NvbnN0YW50P3AubGV2ZWxJc0NvbnN0YW50OkgubGV2ZWxJc0NvbnN0YW50O2RlbGV0ZSBwLmxldmVsSXNDb25zdGFudDtkZWxldGUgcC5sZXZlbDttPW0ubGV2ZWwrKGE/MDpnLTEpO0EoYlttXSk/dShiW21dLHApOmJbbV09cH1yZXR1cm4gYn0se30pKTttPXgoay50byk/ay50bzoxO2ZvcihrPTA7azw9bTtrKyspYltrXT1EKHt9LEgsQSh0W2tdKT90W2tdOnt9KX1yZXR1cm4gYn0sc2V0VHJlZVZhbHVlczpmdW5jdGlvbiBtKGIsZyl7dmFyIHQ9Zy5iZWZvcmUsSD1nLmlkUm9vdCxjPWcubWFwSWRUb05vZGVbSF0sRT1nLnBvaW50c1tiLmldLHA9RSYmRS5vcHRpb25zfHx7fSxhPTAsdz1bXTt1KGIse2xldmVsRHluYW1pYzpiLmxldmVsLSgoImJvb2xlYW4iPT09dHlwZW9mIGcubGV2ZWxJc0NvbnN0YW50P2cubGV2ZWxJc0NvbnN0YW50OjEpPzA6Yy5sZXZlbCksbmFtZTp5KEUmJkUubmFtZSwiIiksdmlzaWJsZTpIPT09Yi5pZHx8KCJib29sZWFuIj09PQp0eXBlb2YgZy52aXNpYmxlP2cudmlzaWJsZTohMSl9KTsiZnVuY3Rpb24iPT09dHlwZW9mIHQmJihiPXQoYixnKSk7Yi5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGUsQyl7dmFyIHE9dSh7fSxnKTt1KHEse2luZGV4OkMsc2libGluZ3M6Yi5jaGlsZHJlbi5sZW5ndGgsdmlzaWJsZTpiLnZpc2libGV9KTtlPW0oZSxxKTt3LnB1c2goZSk7ZS52aXNpYmxlJiYoYSs9ZS52YWwpfSk7Yi52aXNpYmxlPTA8YXx8Yi52aXNpYmxlO3Q9eShwLnZhbHVlLGEpO3UoYix7Y2hpbGRyZW46dyxjaGlsZHJlblRvdGFsOmEsaXNMZWFmOmIudmlzaWJsZSYmIWEsdmFsOnR9KTtyZXR1cm4gYn0sdXBkYXRlUm9vdElkOmZ1bmN0aW9uKGIpe2lmKEEoYikpe3ZhciBnPUEoYi5vcHRpb25zKT9iLm9wdGlvbnM6e307Zz15KGIucm9vdE5vZGUsZy5yb290SWQsIiIpO0EoYi51c2VyT3B0aW9ucykmJihiLnVzZXJPcHRpb25zLnJvb3RJZD1nKTtiLnJvb3ROb2RlPWd9cmV0dXJuIGd9fX0pO0ooYywicGFydHMtZ2FudHQvR3JpZEF4aXMuanMiLApbY1sicGFydHMvQXhpcy5qcyJdLGNbInBhcnRzL0dsb2JhbHMuanMiXSxjWyJwYXJ0cy9PcHRpb25zLmpzIl0sY1sicGFydHMvVGljay5qcyJdLGNbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihjLGwsdSx6LHgpe3ZhciBBPXUuZGF0ZUZvcm1hdCxEPXguYWRkRXZlbnQseT14LmRlZmluZWQsaz14LmVyYXNlLGI9eC5maW5kLGc9eC5pc0FycmF5LG09eC5pc051bWJlcix0PXgubWVyZ2UsSD14LnBpY2ssST14LnRpbWVVbml0cyxFPXgud3JhcDt1PWwuQ2hhcnQ7dmFyIHA9ZnVuY3Rpb24oZSl7dmFyIGE9ZS5vcHRpb25zO2EubGFiZWxzfHwoYS5sYWJlbHM9e30pO2EubGFiZWxzLmFsaWduPUgoYS5sYWJlbHMuYWxpZ24sImNlbnRlciIpO2UuY2F0ZWdvcmllc3x8KGEuc2hvd0xhc3RMYWJlbD0hMSk7ZS5sYWJlbFJvdGF0aW9uPTA7YS5sYWJlbHMucm90YXRpb249MH07IiI7Yy5wcm90b3R5cGUuZ2V0TWF4TGFiZWxEaW1lbnNpb25zPWZ1bmN0aW9uKGUsYSl7dmFyIHE9e3dpZHRoOjAsCmhlaWdodDowfTthLmZvckVhY2goZnVuY3Rpb24oZil7Zj1lW2ZdO2lmKHguaXNPYmplY3QoZiwhMCkpe3ZhciBkPXguaXNPYmplY3QoZi5sYWJlbCwhMCk/Zi5sYWJlbDp7fTtmPWQuZ2V0QkJveD9kLmdldEJCb3goKS5oZWlnaHQ6MDtkLnRleHRTdHImJiFtKGQudGV4dFB4TGVuZ3RoKSYmKGQudGV4dFB4TGVuZ3RoPWQuZ2V0QkJveCgpLndpZHRoKTtkPW0oZC50ZXh0UHhMZW5ndGgpP01hdGgucm91bmQoZC50ZXh0UHhMZW5ndGgpOjA7cS5oZWlnaHQ9TWF0aC5tYXgoZixxLmhlaWdodCk7cS53aWR0aD1NYXRoLm1heChkLHEud2lkdGgpfX0pO3JldHVybiBxfTtsLmRhdGVGb3JtYXRzLlc9ZnVuY3Rpb24oZSl7ZT1uZXcgdGhpcy5EYXRlKGUpO3ZhciBhPSh0aGlzLmdldCgiRGF5IixlKSs2KSU3LHE9bmV3IHRoaXMuRGF0ZShlLnZhbHVlT2YoKSk7dGhpcy5zZXQoIkRhdGUiLHEsdGhpcy5nZXQoIkRhdGUiLGUpLWErMyk7YT1uZXcgdGhpcy5EYXRlKHRoaXMuZ2V0KCJGdWxsWWVhciIsCnEpLDAsMSk7NCE9PXRoaXMuZ2V0KCJEYXkiLGEpJiYodGhpcy5zZXQoIk1vbnRoIixlLDApLHRoaXMuc2V0KCJEYXRlIixlLDErKDExLXRoaXMuZ2V0KCJEYXkiLGEpKSU3KSk7cmV0dXJuKDErTWF0aC5mbG9vcigocS52YWx1ZU9mKCktYS52YWx1ZU9mKCkpLzYwNDhFNSkpLnRvU3RyaW5nKCl9O2wuZGF0ZUZvcm1hdHMuRT1mdW5jdGlvbihhKXtyZXR1cm4gQSgiJWEiLGEsITApLmNoYXJBdCgwKX07RCh1LCJhZnRlclNldENoYXJ0U2l6ZSIsZnVuY3Rpb24oKXt0aGlzLmF4ZXMuZm9yRWFjaChmdW5jdGlvbihhKXsoYS5ncmlkJiZhLmdyaWQuY29sdW1uc3x8W10pLmZvckVhY2goZnVuY3Rpb24oYSl7YS5zZXRBeGlzU2l6ZSgpO2Euc2V0QXhpc1RyYW5zbGF0aW9uKCl9KX0pfSk7RCh6LCJhZnRlckdldExhYmVsUG9zaXRpb24iLGZ1bmN0aW9uKGEpe3ZhciBlPXRoaXMubGFiZWwscT10aGlzLmF4aXMsZj1xLnJldmVyc2VkLGQ9cS5jaGFydCx2PXEub3B0aW9ucy5ncmlkfHx7fSxHPQpxLm9wdGlvbnMubGFiZWxzLEI9Ry5hbGlnbixyPXcuU2lkZVtxLnNpZGVdLGg9YS50aWNrbWFya09mZnNldCxuPXEudGlja1Bvc2l0aW9ucyxGPXRoaXMucG9zLWg7bj1tKG5bYS5pbmRleCsxXSk/blthLmluZGV4KzFdLWg6cS5tYXgraDt2YXIgYj1xLnRpY2tTaXplKCJ0aWNrIik7aD1iP2JbMF06MDtiPWI/YlsxXS8yOjA7aWYoITA9PT12LmVuYWJsZWQpe2lmKCJ0b3AiPT09cil7dj1xLnRvcCtxLm9mZnNldDt2YXIgSz12LWh9ZWxzZSJib3R0b20iPT09cj8oSz1kLmNoYXJ0SGVpZ2h0LXEuYm90dG9tK3Eub2Zmc2V0LHY9SytoKToodj1xLnRvcCtxLmxlbi1xLnRyYW5zbGF0ZShmP246RiksSz1xLnRvcCtxLmxlbi1xLnRyYW5zbGF0ZShmP0Y6bikpOyJyaWdodCI9PT1yPyhyPWQuY2hhcnRXaWR0aC1xLnJpZ2h0K3Eub2Zmc2V0LGY9citoKToibGVmdCI9PT1yPyhmPXEubGVmdCtxLm9mZnNldCxyPWYtaCk6KHI9TWF0aC5yb3VuZChxLmxlZnQrcS50cmFuc2xhdGUoZj9uOkYpKS0KYixmPU1hdGgucm91bmQocS5sZWZ0K3EudHJhbnNsYXRlKGY/RjpuKSktYik7dGhpcy5zbG90V2lkdGg9Zi1yO2EucG9zLng9ImxlZnQiPT09Qj9yOiJyaWdodCI9PT1CP2Y6cisoZi1yKS8yO2EucG9zLnk9Sysodi1LKS8yO2Q9ZC5yZW5kZXJlci5mb250TWV0cmljcyhHLnN0eWxlLmZvbnRTaXplLGUuZWxlbWVudCk7ZT1lLmdldEJCb3goKS5oZWlnaHQ7Ry51c2VIVE1MP2EucG9zLnkrPWQuYistKGUvMik6KGU9TWF0aC5yb3VuZChlL2QuaCksYS5wb3MueSs9KGQuYi0oZC5oLWQuZikpLzIrLSgoZS0xKSpkLmgvMikpO2EucG9zLngrPXEuaG9yaXomJkcueHx8MH19KTt2YXIgYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7dGhpcy5heGlzPWF9YS5wcm90b3R5cGUuaXNPdXRlckF4aXM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmF4aXMsZT1hLmdyaWQuY29sdW1uSW5kZXgsZj1hLmxpbmtlZFBhcmVudCYmYS5saW5rZWRQYXJlbnQuZ3JpZC5jb2x1bW5zfHxhLmdyaWQuY29sdW1ucyxkPQplP2EubGlua2VkUGFyZW50OmEsdj0tMSxHPTA7YS5jaGFydFthLmNvbGxdLmZvckVhY2goZnVuY3Rpb24oZixyKXtmLnNpZGUhPT1hLnNpZGV8fGYub3B0aW9ucy5pc0ludGVybmFsfHwoRz1yLGY9PT1kJiYodj1yKSl9KTtyZXR1cm4gRz09PXYmJihtKGUpP2YubGVuZ3RoPT09ZTohMCl9O3JldHVybiBhfSgpLHc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fWUuY29tcG9zZT1mdW5jdGlvbihhKXtjLmtlZXBQcm9wcy5wdXNoKCJncmlkIik7RShhLnByb3RvdHlwZSwidW5zcXVpc2giLGUud3JhcFVuc3F1aXNoKTtEKGEsImluaXQiLGUub25Jbml0KTtEKGEsImFmdGVyR2V0T2Zmc2V0IixlLm9uQWZ0ZXJHZXRPZmZzZXQpO0QoYSwiYWZ0ZXJHZXRUaXRsZVBvc2l0aW9uIixlLm9uQWZ0ZXJHZXRUaXRsZVBvc2l0aW9uKTtEKGEsImFmdGVySW5pdCIsZS5vbkFmdGVySW5pdCk7RChhLCJhZnRlclJlbmRlciIsZS5vbkFmdGVyUmVuZGVyKTtEKGEsImFmdGVyU2V0QXhpc1RyYW5zbGF0aW9uIiwKZS5vbkFmdGVyU2V0QXhpc1RyYW5zbGF0aW9uKTtEKGEsImFmdGVyU2V0T3B0aW9ucyIsZS5vbkFmdGVyU2V0T3B0aW9ucyk7RChhLCJhZnRlclNldE9wdGlvbnMiLGUub25BZnRlclNldE9wdGlvbnMyKTtEKGEsImFmdGVyU2V0U2NhbGUiLGUub25BZnRlclNldFNjYWxlKTtEKGEsImFmdGVyVGlja1NpemUiLGUub25BZnRlclRpY2tTaXplKTtEKGEsInRyaW1UaWNrcyIsZS5vblRyaW1UaWNrcyk7RChhLCJkZXN0cm95IixlLm9uRGVzdHJveSl9O2Uub25BZnRlckdldE9mZnNldD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuZ3JpZDsoYSYmYS5jb2x1bW5zfHxbXSkuZm9yRWFjaChmdW5jdGlvbihhKXthLmdldE9mZnNldCgpfSl9O2Uub25BZnRlckdldFRpdGxlUG9zaXRpb249ZnVuY3Rpb24oYSl7aWYoITA9PT0odGhpcy5vcHRpb25zLmdyaWR8fHt9KS5lbmFibGVkKXt2YXIgcT10aGlzLmF4aXNUaXRsZSxmPXRoaXMuaGVpZ2h0LGQ9dGhpcy5ob3Jpeix2PXRoaXMubGVmdCxHPXRoaXMub2Zmc2V0LApCPXRoaXMub3Bwb3NpdGUscj10aGlzLm9wdGlvbnMudGl0bGUsaD12b2lkIDA9PT1yP3t9OnI7cj10aGlzLnRvcDt2YXIgbj10aGlzLndpZHRoLEY9dGhpcy50aWNrU2l6ZSgpLGI9cSYmcS5nZXRCQm94KCkud2lkdGgsSz1oLnh8fDAsdz1oLnl8fDAsQz1IKGgubWFyZ2luLGQ/NToxMCk7cT10aGlzLmNoYXJ0LnJlbmRlcmVyLmZvbnRNZXRyaWNzKGguc3R5bGUmJmguc3R5bGUuZm9udFNpemUscSkuZjtGPShkP3IrZjp2KSsoZD8xOi0xKSooQj8tMToxKSooRj9GWzBdLzI6MCkrKHRoaXMuc2lkZT09PWUuU2lkZS5ib3R0b20/cTowKTthLnRpdGxlUG9zaXRpb24ueD1kP3YtYi8yLUMrSzpGKyhCP246MCkrRytLO2EudGl0bGVQb3NpdGlvbi55PWQ/Ri0oQj9mOjApKyhCP3E6LXEpLzIrRyt3OnItQyt3fX07ZS5vbkFmdGVySW5pdD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuY2hhcnQsZT10aGlzLm9wdGlvbnMuZ3JpZDtlPXZvaWQgMD09PWU/e306ZTt2YXIgZj10aGlzLnVzZXJPcHRpb25zOwplLmVuYWJsZWQmJihwKHRoaXMpLEUodGhpcywibGFiZWxGb3JtYXR0ZXIiLGZ1bmN0aW9uKGQpe3ZhciBhPXRoaXMuYXhpcyxoPXRoaXMudmFsdWUsbj1hLnRpY2tQb3NpdGlvbnMsZj0oYS5pc0xpbmtlZD9hLmxpbmtlZFBhcmVudDphKS5zZXJpZXNbMF0sZT1oPT09blswXTtuPWg9PT1uW24ubGVuZ3RoLTFdO2Y9ZiYmYihmLm9wdGlvbnMuZGF0YSxmdW5jdGlvbihuKXtyZXR1cm4gblthLmlzWEF4aXM/IngiOiJ5Il09PT1ofSk7dGhpcy5pc0ZpcnN0PWU7dGhpcy5pc0xhc3Q9bjt0aGlzLnBvaW50PWY7cmV0dXJuIGQuY2FsbCh0aGlzKX0pKTtpZihlLmNvbHVtbnMpZm9yKHZhciBkPXRoaXMuZ3JpZC5jb2x1bW5zPVtdLHY9dGhpcy5ncmlkLmNvbHVtbkluZGV4PTA7Kyt2PGUuY29sdW1ucy5sZW5ndGg7KXt2YXIgRz10KGYsZS5jb2x1bW5zW2UuY29sdW1ucy5sZW5ndGgtdi0xXSx7bGlua2VkVG86MCx0eXBlOiJjYXRlZ29yeSJ9KTtkZWxldGUgRy5ncmlkLmNvbHVtbnM7Rz1uZXcgYyh0aGlzLmNoYXJ0LApHKTtHLmdyaWQuaXNDb2x1bW49ITA7Ry5ncmlkLmNvbHVtbkluZGV4PXY7ayhhLmF4ZXMsRyk7ayhhW3RoaXMuY29sbF0sRyk7ZC5wdXNoKEcpfX07ZS5vbkFmdGVyUmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5ncmlkLHE9dGhpcy5vcHRpb25zLGY9dGhpcy5jaGFydC5yZW5kZXJlcjtpZighMD09PShxLmdyaWR8fHt9KS5lbmFibGVkKXt0aGlzLm1heExhYmVsRGltZW5zaW9ucz10aGlzLmdldE1heExhYmVsRGltZW5zaW9ucyh0aGlzLnRpY2tzLHRoaXMudGlja1Bvc2l0aW9ucyk7dGhpcy5yaWdodFdhbGwmJnRoaXMucmlnaHRXYWxsLmRlc3Ryb3koKTtpZih0aGlzLmdyaWQmJnRoaXMuZ3JpZC5pc091dGVyQXhpcygpJiZ0aGlzLmF4aXNMaW5lKXt2YXIgZD1xLmxpbmVXaWR0aDtpZihkKXt2YXIgdj10aGlzLmdldExpbmVQYXRoKGQpLGI9dlswXSxCPXZbMV0scj0oKHRoaXMudGlja1NpemUoInRpY2siKXx8WzFdKVswXS0xKSoodGhpcy5zaWRlPT09ZS5TaWRlLnRvcHx8dGhpcy5zaWRlPT09CmUuU2lkZS5sZWZ0Py0xOjEpOyJNIj09PWJbMF0mJiJMIj09PUJbMF0mJih0aGlzLmhvcml6PyhiWzJdKz1yLEJbMl0rPXIpOihiWzFdKz1yLEJbMV0rPXIpKTt0aGlzLmdyaWQuYXhpc0xpbmVFeHRyYT90aGlzLmdyaWQuYXhpc0xpbmVFeHRyYS5hbmltYXRlKHtkOnZ9KToodGhpcy5ncmlkLmF4aXNMaW5lRXh0cmE9Zi5wYXRoKHYpLmF0dHIoe3pJbmRleDo3fSkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtYXhpcy1saW5lIikuYWRkKHRoaXMuYXhpc0dyb3VwKSxmLnN0eWxlZE1vZGV8fHRoaXMuZ3JpZC5heGlzTGluZUV4dHJhLmF0dHIoe3N0cm9rZTpxLmxpbmVDb2xvciwic3Ryb2tlLXdpZHRoIjpkfSkpO3RoaXMuYXhpc0xpbmVbdGhpcy5zaG93QXhpcz8ic2hvdyI6ImhpZGUiXSghMCl9fShhJiZhLmNvbHVtbnN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGgpe2gucmVuZGVyKCl9KX19O2Uub25BZnRlclNldEF4aXNUcmFuc2xhdGlvbj1mdW5jdGlvbigpe3ZhciBhPXRoaXMudGlja1Bvc2l0aW9ucyYmCnRoaXMudGlja1Bvc2l0aW9ucy5pbmZvLGU9dGhpcy5vcHRpb25zLGY9ZS5ncmlkfHx7fSxkPXRoaXMudXNlck9wdGlvbnMubGFiZWxzfHx7fTt0aGlzLmhvcml6JiYoITA9PT1mLmVuYWJsZWQmJnRoaXMuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZCl7ZC5vcHRpb25zLnBvaW50UmFuZ2U9MH0pLGEmJmUuZGF0ZVRpbWVMYWJlbEZvcm1hdHMmJmUubGFiZWxzJiYheShkLmFsaWduKSYmKCExPT09ZS5kYXRlVGltZUxhYmVsRm9ybWF0c1thLnVuaXROYW1lXS5yYW5nZXx8MTxhLmNvdW50KSYmKGUubGFiZWxzLmFsaWduPSJsZWZ0Iix5KGQueCl8fChlLmxhYmVscy54PTMpKSl9O2Uub25BZnRlclNldE9wdGlvbnM9ZnVuY3Rpb24oYSl7dmFyIGU9dGhpcy5vcHRpb25zO2E9YS51c2VyT3B0aW9uczt2YXIgZj1lJiZ4LmlzT2JqZWN0KGUuZ3JpZCwhMCk/ZS5ncmlkOnt9O2lmKCEwPT09Zi5lbmFibGVkKXt2YXIgZD10KCEwLHtjbGFzc05hbWU6ImhpZ2hjaGFydHMtZ3JpZC1heGlzICIrKGEuY2xhc3NOYW1lfHwKIiIpLGRhdGVUaW1lTGFiZWxGb3JtYXRzOntob3VyOntsaXN0OlsiJUg6JU0iLCIlSCJdfSxkYXk6e2xpc3Q6WyIlQSwgJWUuICVCIiwiJWEsICVlLiAlYiIsIiVFIl19LHdlZWs6e2xpc3Q6WyJXZWVrICVXIiwiVyVXIl19LG1vbnRoOntsaXN0OlsiJUIiLCIlYiIsIiVvIl19fSxncmlkOntib3JkZXJXaWR0aDoxfSxsYWJlbHM6e3BhZGRpbmc6MixzdHlsZTp7Zm9udFNpemU6IjEzcHgifX0sbWFyZ2luOjAsdGl0bGU6e3RleHQ6bnVsbCxyZXNlcnZlU3BhY2U6ITEscm90YXRpb246MH0sdW5pdHM6W1sibWlsbGlzZWNvbmQiLFsxLDEwLDEwMF1dLFsic2Vjb25kIixbMSwxMF1dLFsibWludXRlIixbMSw1LDE1XV0sWyJob3VyIixbMSw2XV0sWyJkYXkiLFsxXV0sWyJ3ZWVrIixbMV1dLFsibW9udGgiLFsxXV0sWyJ5ZWFyIixudWxsXV19LGEpOyJ4QXhpcyI9PT10aGlzLmNvbGwmJih5KGEubGlua2VkVG8pJiYheShhLnRpY2tQaXhlbEludGVydmFsKSYmKGQudGlja1BpeGVsSW50ZXJ2YWw9CjM1MCkseShhLnRpY2tQaXhlbEludGVydmFsKXx8IXkoYS5saW5rZWRUbyl8fHkoYS50aWNrUG9zaXRpb25lcil8fHkoYS50aWNrSW50ZXJ2YWwpfHwoZC50aWNrUG9zaXRpb25lcj1mdW5jdGlvbihhLGYpe3ZhciBlPXRoaXMubGlua2VkUGFyZW50JiZ0aGlzLmxpbmtlZFBhcmVudC50aWNrUG9zaXRpb25zJiZ0aGlzLmxpbmtlZFBhcmVudC50aWNrUG9zaXRpb25zLmluZm87aWYoZSl7dmFyIHIsaD1kLnVuaXRzO2ZvcihyPTA7cjxoLmxlbmd0aDtyKyspaWYoaFtyXVswXT09PWUudW5pdE5hbWUpe3ZhciBuPXI7YnJlYWt9aWYoaFtuKzFdKXt2YXIgRj1oW24rMV1bMF07dmFyIHY9KGhbbisxXVsxXXx8WzFdKVswXX1lbHNlInllYXIiPT09ZS51bml0TmFtZSYmKEY9InllYXIiLHY9MTAqZS5jb3VudCk7ZT1JW0ZdO3RoaXMudGlja0ludGVydmFsPWUqdjtyZXR1cm4gdGhpcy5nZXRUaW1lVGlja3Moe3VuaXRSYW5nZTplLGNvdW50OnYsdW5pdE5hbWU6Rn0sYSxmLHRoaXMub3B0aW9ucy5zdGFydE9mV2Vlayl9fSkpOwp0KCEwLHRoaXMub3B0aW9ucyxkKTt0aGlzLmhvcml6JiYoZS5taW5QYWRkaW5nPUgoYS5taW5QYWRkaW5nLDApLGUubWF4UGFkZGluZz1IKGEubWF4UGFkZGluZywwKSk7bShlLmdyaWQuYm9yZGVyV2lkdGgpJiYoZS50aWNrV2lkdGg9ZS5saW5lV2lkdGg9Zi5ib3JkZXJXaWR0aCl9fTtlLm9uQWZ0ZXJTZXRPcHRpb25zMj1mdW5jdGlvbihhKXthPShhPWEudXNlck9wdGlvbnMpJiZhLmdyaWR8fHt9O3ZhciBlPWEuY29sdW1uczthLmVuYWJsZWQmJmUmJnQoITAsdGhpcy5vcHRpb25zLGVbZS5sZW5ndGgtMV0pfTtlLm9uQWZ0ZXJTZXRTY2FsZT1mdW5jdGlvbigpeyh0aGlzLmdyaWQuY29sdW1uc3x8W10pLmZvckVhY2goZnVuY3Rpb24oYSl7YS5zZXRTY2FsZSgpfSl9O2Uub25BZnRlclRpY2tTaXplPWZ1bmN0aW9uKGEpe3ZhciBlPWMuZGVmYXVsdExlZnRBeGlzT3B0aW9ucyxmPXRoaXMuaG9yaXosZD10aGlzLm1heExhYmVsRGltZW5zaW9ucyx2PXRoaXMub3B0aW9ucy5ncmlkO3Y9CnZvaWQgMD09PXY/e306djt2LmVuYWJsZWQmJmQmJihlPTIqTWF0aC5hYnMoZS5sYWJlbHMueCksZj1mP3YuY2VsbEhlaWdodHx8ZStkLmhlaWdodDplK2Qud2lkdGgsZyhhLnRpY2tTaXplKT9hLnRpY2tTaXplWzBdPWY6YS50aWNrU2l6ZT1bZiwwXSl9O2Uub25EZXN0cm95PWZ1bmN0aW9uKGEpe3ZhciBlPXRoaXMuZ3JpZDsoZS5jb2x1bW5zfHxbXSkuZm9yRWFjaChmdW5jdGlvbihmKXtmLmRlc3Ryb3koYS5rZWVwRXZlbnRzKX0pO2UuY29sdW1ucz12b2lkIDB9O2Uub25Jbml0PWZ1bmN0aW9uKGUpe2U9ZS51c2VyT3B0aW9uc3x8e307dmFyIGI9ZS5ncmlkfHx7fTtiLmVuYWJsZWQmJnkoYi5ib3JkZXJDb2xvcikmJihlLnRpY2tDb2xvcj1lLmxpbmVDb2xvcj1iLmJvcmRlckNvbG9yKTt0aGlzLmdyaWR8fCh0aGlzLmdyaWQ9bmV3IGEodGhpcykpfTtlLm9uVHJpbVRpY2tzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25zLGU9dGhpcy5jYXRlZ29yaWVzLGY9dGhpcy50aWNrUG9zaXRpb25zLApkPWZbMF0sdj1mW2YubGVuZ3RoLTFdLGI9dGhpcy5saW5rZWRQYXJlbnQmJnRoaXMubGlua2VkUGFyZW50Lm1pbnx8dGhpcy5taW4sQj10aGlzLmxpbmtlZFBhcmVudCYmdGhpcy5saW5rZWRQYXJlbnQubWF4fHx0aGlzLm1heCxyPXRoaXMudGlja0ludGVydmFsOyEwIT09KGEuZ3JpZHx8e30pLmVuYWJsZWR8fGV8fCF0aGlzLmhvcml6JiYhdGhpcy5pc0xpbmtlZHx8KGQ8YiYmZCtyPmImJiFhLnN0YXJ0T25UaWNrJiYoZlswXT1iKSx2PkImJnYtcjxCJiYhYS5lbmRPblRpY2smJihmW2YubGVuZ3RoLTFdPUIpKX07ZS53cmFwVW5zcXVpc2g9ZnVuY3Rpb24oYSl7dmFyIGU9dGhpcy5vcHRpb25zLmdyaWQ7cmV0dXJuITA9PT0odm9pZCAwPT09ZT97fTplKS5lbmFibGVkJiZ0aGlzLmNhdGVnb3JpZXM/dGhpcy50aWNrSW50ZXJ2YWw6YS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9O3JldHVybiBlfSgpOyhmdW5jdGlvbihhKXthPWEuU2lkZXx8CihhLlNpZGU9e30pO2FbYS50b3A9MF09InRvcCI7YVthLnJpZ2h0PTFdPSJyaWdodCI7YVthLmJvdHRvbT0yXT0iYm90dG9tIjthW2EubGVmdD0zXT0ibGVmdCJ9KSh3fHwodz17fSkpO3cuY29tcG9zZShjKTtyZXR1cm4gd30pO0ooYywibW9kdWxlcy9icm9rZW4tYXhpcy5zcmMuanMiLFtjWyJwYXJ0cy9BeGlzLmpzIl0sY1sicGFydHMvR2xvYmFscy5qcyJdLGNbInBhcnRzL1V0aWxpdGllcy5qcyJdLGNbInBhcnRzL1N0YWNraW5nLmpzIl1dLGZ1bmN0aW9uKGMsbCx1LHope3ZhciB4PXUuYWRkRXZlbnQsQT11LmZpbmQsRD11LmZpcmVFdmVudCx5PXUuaXNBcnJheSxrPXUuaXNOdW1iZXIsYj11LnBpY2ssZz1sLlNlcmllcyxtPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhiKXt0aGlzLmhhc0JyZWFrcz0hMTt0aGlzLmF4aXM9Yn1nLmlzSW5CcmVhaz1mdW5jdGlvbihiLGcpe3ZhciBtPWIucmVwZWF0fHxJbmZpbml0eSxwPWIuZnJvbSxhPWIudG8tYi5mcm9tO2c9Zz49cD8oZy1wKSVtOgptLShwLWcpJW07cmV0dXJuIGIuaW5jbHVzaXZlP2c8PWE6ZzxhJiYwIT09Z307Zy5saW4yVmFsPWZ1bmN0aW9uKGIpe3ZhciBtPXRoaXMuYnJva2VuQXhpczttPW0mJm0uYnJlYWtBcnJheTtpZighbSlyZXR1cm4gYjt2YXIgaztmb3Ioaz0wO2s8bS5sZW5ndGg7aysrKXt2YXIgcD1tW2tdO2lmKHAuZnJvbT49YilicmVhaztlbHNlIHAudG88Yj9iKz1wLmxlbjpnLmlzSW5CcmVhayhwLGIpJiYoYis9cC5sZW4pfXJldHVybiBifTtnLnZhbDJMaW49ZnVuY3Rpb24oYil7dmFyIG09dGhpcy5icm9rZW5BeGlzO209bSYmbS5icmVha0FycmF5O2lmKCFtKXJldHVybiBiO3ZhciBrPWIscDtmb3IocD0wO3A8bS5sZW5ndGg7cCsrKXt2YXIgYT1tW3BdO2lmKGEudG88PWIpay09YS5sZW47ZWxzZSBpZihhLmZyb20+PWIpYnJlYWs7ZWxzZSBpZihnLmlzSW5CcmVhayhhLGIpKXtrLT1iLWEuZnJvbTticmVha319cmV0dXJuIGt9O2cucHJvdG90eXBlLmZpbmRCcmVha0F0PWZ1bmN0aW9uKGIsZyl7cmV0dXJuIEEoZywKZnVuY3Rpb24oZyl7cmV0dXJuIGcuZnJvbTxiJiZiPGcudG99KX07Zy5wcm90b3R5cGUuaXNJbkFueUJyZWFrPWZ1bmN0aW9uKG0sayl7dmFyIHQ9dGhpcy5heGlzLHA9dC5vcHRpb25zLmJyZWFrcyxhPXAmJnAubGVuZ3RoLHc7aWYoYSl7Zm9yKDthLS07KWlmKGcuaXNJbkJyZWFrKHBbYV0sbSkpe3ZhciBlPSEwO3d8fCh3PWIocFthXS5zaG93UG9pbnRzLCF0LmlzWEF4aXMpKX12YXIgQz1lJiZrP2UmJiF3OmV9cmV0dXJuIEN9O2cucHJvdG90eXBlLnNldEJyZWFrcz1mdW5jdGlvbihtLGspe3ZhciB0PXRoaXMscD10LmF4aXMsYT15KG0pJiYhIW0ubGVuZ3RoO3AuaXNEaXJ0eT10Lmhhc0JyZWFrcyE9PWE7dC5oYXNCcmVha3M9YTtwLm9wdGlvbnMuYnJlYWtzPXAudXNlck9wdGlvbnMuYnJlYWtzPW07cC5mb3JjZVJlZHJhdz0hMDtwLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuaXNEaXJ0eT0hMH0pO2F8fHAudmFsMmxpbiE9PWcudmFsMkxpbnx8KGRlbGV0ZSBwLnZhbDJsaW4sCmRlbGV0ZSBwLmxpbjJ2YWwpO2EmJihwLnVzZXJPcHRpb25zLm9yZGluYWw9ITEscC5saW4ydmFsPWcubGluMlZhbCxwLnZhbDJsaW49Zy52YWwyTGluLHAuc2V0RXh0cmVtZXM9ZnVuY3Rpb24oYSxlLGIscSxmKXtpZih0Lmhhc0JyZWFrcyl7Zm9yKHZhciBkLHY9dGhpcy5vcHRpb25zLmJyZWFrcztkPXQuZmluZEJyZWFrQXQoYSx2KTspYT1kLnRvO2Zvcig7ZD10LmZpbmRCcmVha0F0KGUsdik7KWU9ZC5mcm9tO2U8YSYmKGU9YSl9Yy5wcm90b3R5cGUuc2V0RXh0cmVtZXMuY2FsbCh0aGlzLGEsZSxiLHEsZil9LHAuc2V0QXhpc1RyYW5zbGF0aW9uPWZ1bmN0aW9uKGEpe2MucHJvdG90eXBlLnNldEF4aXNUcmFuc2xhdGlvbi5jYWxsKHRoaXMsYSk7dC51bml0TGVuZ3RoPW51bGw7aWYodC5oYXNCcmVha3Mpe2E9cC5vcHRpb25zLmJyZWFrc3x8W107dmFyIGU9W10sdz1bXSxxPTAsZixkPXAudXNlck1pbnx8cC5taW4sdj1wLnVzZXJNYXh8fHAubWF4LEc9YihwLnBvaW50UmFuZ2VQYWRkaW5nLAowKSxCO2EuZm9yRWFjaChmdW5jdGlvbihhKXtmPWEucmVwZWF0fHxJbmZpbml0eTtnLmlzSW5CcmVhayhhLGQpJiYoZCs9YS50byVmLWQlZik7Zy5pc0luQnJlYWsoYSx2KSYmKHYtPXYlZi1hLmZyb20lZil9KTthLmZvckVhY2goZnVuY3Rpb24oYSl7aD1hLmZyb207Zm9yKGY9YS5yZXBlYXR8fEluZmluaXR5O2gtZj5kOyloLT1mO2Zvcig7aDxkOyloKz1mO2ZvcihCPWg7Qjx2O0IrPWYpZS5wdXNoKHt2YWx1ZTpCLG1vdmU6ImluIn0pLGUucHVzaCh7dmFsdWU6QisoYS50by1hLmZyb20pLG1vdmU6Im91dCIsc2l6ZTphLmJyZWFrU2l6ZX0pfSk7ZS5zb3J0KGZ1bmN0aW9uKGEsaCl7cmV0dXJuIGEudmFsdWU9PT1oLnZhbHVlPygiaW4iPT09YS5tb3ZlPzA6MSktKCJpbiI9PT1oLm1vdmU/MDoxKTphLnZhbHVlLWgudmFsdWV9KTt2YXIgcj0wO3ZhciBoPWQ7ZS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3IrPSJpbiI9PT1hLm1vdmU/MTotMTsxPT09ciYmImluIj09PWEubW92ZSYmKGg9YS52YWx1ZSk7CjA9PT1yJiYody5wdXNoKHtmcm9tOmgsdG86YS52YWx1ZSxsZW46YS52YWx1ZS1oLShhLnNpemV8fDApfSkscSs9YS52YWx1ZS1oLShhLnNpemV8fDApKX0pO3AuYnJlYWtBcnJheT10LmJyZWFrQXJyYXk9dzt0LnVuaXRMZW5ndGg9di1kLXErRztEKHAsImFmdGVyQnJlYWtzIik7cC5zdGF0aWNTY2FsZT9wLnRyYW5zQT1wLnN0YXRpY1NjYWxlOnQudW5pdExlbmd0aCYmKHAudHJhbnNBKj0odi1wLm1pbitHKS90LnVuaXRMZW5ndGgpO0cmJihwLm1pblBpeGVsUGFkZGluZz1wLnRyYW5zQSpwLm1pblBvaW50T2Zmc2V0KTtwLm1pbj1kO3AubWF4PXZ9fSk7YihrLCEwKSYmcC5jaGFydC5yZWRyYXcoKX07cmV0dXJuIGd9KCk7bD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9dC5jb21wb3NlPWZ1bmN0aW9uKHQsYyl7dC5rZWVwUHJvcHMucHVzaCgiYnJva2VuQXhpcyIpO3ZhciBsPWcucHJvdG90eXBlO2wuZHJhd0JyZWFrcz1mdW5jdGlvbihnLGEpe3ZhciB3PXRoaXMsZT13LnBvaW50cywKbSxxLGYsZDtpZihnJiZnLmJyb2tlbkF4aXMmJmcuYnJva2VuQXhpcy5oYXNCcmVha3Mpe3ZhciB2PWcuYnJva2VuQXhpczthLmZvckVhY2goZnVuY3Rpb24oYSl7bT12JiZ2LmJyZWFrQXJyYXl8fFtdO3E9Zy5pc1hBeGlzP2cubWluOmIody5vcHRpb25zLnRocmVzaG9sZCxnLm1pbik7ZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2Q9YihlWyJzdGFjayIrYS50b1VwcGVyQ2FzZSgpXSxlW2FdKTttLmZvckVhY2goZnVuY3Rpb24oYSl7aWYoayhxKSYmayhkKSl7Zj0hMTtpZihxPGEuZnJvbSYmZD5hLnRvfHxxPmEuZnJvbSYmZDxhLmZyb20pZj0icG9pbnRCcmVhayI7ZWxzZSBpZihxPGEuZnJvbSYmZD5hLmZyb20mJmQ8YS50b3x8cT5hLmZyb20mJmQ+YS50byYmZDxhLmZyb20pZj0icG9pbnRJbkJyZWFrIjtmJiZEKGcsZix7cG9pbnQ6ZSxicms6YX0pfX0pfSl9KX19O2wuZ2FwcGVkUGF0aD1mdW5jdGlvbigpe3ZhciBiPXRoaXMuY3VycmVudERhdGFHcm91cGluZyxhPWImJmIuZ2FwU2l6ZTsKYj10aGlzLm9wdGlvbnMuZ2FwU2l6ZTt2YXIgdz10aGlzLnBvaW50cy5zbGljZSgpLGU9dy5sZW5ndGgtMSxnPXRoaXMueUF4aXMscTtpZihiJiYwPGUpZm9yKCJ2YWx1ZSIhPT10aGlzLm9wdGlvbnMuZ2FwVW5pdCYmKGIqPXRoaXMuYmFzZVBvaW50UmFuZ2UpLGEmJmE+YiYmYT49dGhpcy5iYXNlUG9pbnRSYW5nZSYmKGI9YSkscT12b2lkIDA7ZS0tOylxJiYhMSE9PXEudmlzaWJsZXx8KHE9d1tlKzFdKSxhPXdbZV0sITEhPT1xLnZpc2libGUmJiExIT09YS52aXNpYmxlJiYocS54LWEueD5iJiYocT0oYS54K3EueCkvMix3LnNwbGljZShlKzEsMCx7aXNOdWxsOiEwLHg6cX0pLGcuc3RhY2tpbmcmJnRoaXMub3B0aW9ucy5zdGFja2luZyYmKHE9Zy5zdGFja2luZy5zdGFja3NbdGhpcy5zdGFja0tleV1bcV09bmV3IHooZyxnLm9wdGlvbnMuc3RhY2tMYWJlbHMsITEscSx0aGlzLnN0YWNrKSxxLnRvdGFsPTApKSxxPWEpO3JldHVybiB0aGlzLmdldEdyYXBoUGF0aCh3KX07eCh0LCJpbml0IiwKZnVuY3Rpb24oKXt0aGlzLmJyb2tlbkF4aXN8fCh0aGlzLmJyb2tlbkF4aXM9bmV3IG0odGhpcykpfSk7eCh0LCJhZnRlckluaXQiLGZ1bmN0aW9uKCl7InVuZGVmaW5lZCIhPT10eXBlb2YgdGhpcy5icm9rZW5BeGlzJiZ0aGlzLmJyb2tlbkF4aXMuc2V0QnJlYWtzKHRoaXMub3B0aW9ucy5icmVha3MsITEpfSk7eCh0LCJhZnRlclNldFRpY2tQb3NpdGlvbnMiLGZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5icm9rZW5BeGlzO2lmKGImJmIuaGFzQnJlYWtzKXt2YXIgYT10aGlzLnRpY2tQb3NpdGlvbnMsZz10aGlzLnRpY2tQb3NpdGlvbnMuaW5mbyxlPVtdLG07Zm9yKG09MDttPGEubGVuZ3RoO20rKyliLmlzSW5BbnlCcmVhayhhW21dKXx8ZS5wdXNoKGFbbV0pO3RoaXMudGlja1Bvc2l0aW9ucz1lO3RoaXMudGlja1Bvc2l0aW9ucy5pbmZvPWd9fSk7eCh0LCJhZnRlclNldE9wdGlvbnMiLGZ1bmN0aW9uKCl7dGhpcy5icm9rZW5BeGlzJiZ0aGlzLmJyb2tlbkF4aXMuaGFzQnJlYWtzJiYodGhpcy5vcHRpb25zLm9yZGluYWw9CiExKX0pO3goYywiYWZ0ZXJHZW5lcmF0ZVBvaW50cyIsZnVuY3Rpb24oKXt2YXIgYj10aGlzLm9wdGlvbnMuY29ubmVjdE51bGxzLGE9dGhpcy5wb2ludHMsZz10aGlzLnhBeGlzLGU9dGhpcy55QXhpcztpZih0aGlzLmlzRGlydHkpZm9yKHZhciBtPWEubGVuZ3RoO20tLTspe3ZhciBxPWFbbV0sZj0hKG51bGw9PT1xLnkmJiExPT09YikmJihnJiZnLmJyb2tlbkF4aXMmJmcuYnJva2VuQXhpcy5pc0luQW55QnJlYWsocS54LCEwKXx8ZSYmZS5icm9rZW5BeGlzJiZlLmJyb2tlbkF4aXMuaXNJbkFueUJyZWFrKHEueSwhMCkpO3EudmlzaWJsZT1mPyExOiExIT09cS5vcHRpb25zLnZpc2libGV9fSk7eChjLCJhZnRlclJlbmRlciIsZnVuY3Rpb24oKXt0aGlzLmRyYXdCcmVha3ModGhpcy54QXhpcyxbIngiXSk7dGhpcy5kcmF3QnJlYWtzKHRoaXMueUF4aXMsYih0aGlzLnBvaW50QXJyYXlNYXAsWyJ5Il0pKX0pfTtyZXR1cm4gdH0oKTtsLmNvbXBvc2UoYyxnKTtyZXR1cm4gbH0pO0ooYywKInBhcnRzLWdhbnR0L1RyZWVHcmlkQXhpcy5qcyIsW2NbInBhcnRzL0F4aXMuanMiXSxjWyJwYXJ0cy9UaWNrLmpzIl0sY1sicGFydHMtZ2FudHQvVHJlZS5qcyJdLGNbInBhcnRzLWdhbnR0L1RyZWVHcmlkVGljay5qcyJdLGNbIm1peGlucy90cmVlLXNlcmllcy5qcyJdLGNbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihjLGwsdSx6LHgsQSl7dmFyIEQ9QS5hZGRFdmVudCx5PUEuZmluZCxrPUEuZmlyZUV2ZW50LGI9QS5pc051bWJlcixnPUEuaXNPYmplY3QsbT1BLmlzU3RyaW5nLHQ9QS5tZXJnZSxIPUEucGljayxJPUEud3JhcCxFOyhmdW5jdGlvbihwKXtmdW5jdGlvbiBhKGEsZCl7dmFyIGg9YS5jb2xsYXBzZVN0YXJ0fHwwO2E9YS5jb2xsYXBzZUVuZHx8MDthPj1kJiYoaC09LjUpO3JldHVybntmcm9tOmgsdG86YSxzaG93UG9pbnRzOiExfX1mdW5jdGlvbiB3KGEsZCxoKXt2YXIgbj1bXSxmPVtdLGU9e30sYj17fSxyPS0xLHY9ImJvb2xlYW4iPT09dHlwZW9mIGQ/CmQ6ITE7YT11LmdldFRyZWUoYSx7YWZ0ZXI6ZnVuY3Rpb24oYSl7YT1iW2EucG9zXTt2YXIgaD0wLG49MDthLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oYSl7bis9KGEuZGVzY2VuZGFudHN8fDApKzE7aD1NYXRoLm1heCgoYS5oZWlnaHR8fDApKzEsaCl9KTthLmRlc2NlbmRhbnRzPW47YS5oZWlnaHQ9aDthLmNvbGxhcHNlZCYmZi5wdXNoKGEpfSxiZWZvcmU6ZnVuY3Rpb24oYSl7dmFyIGg9ZyhhLmRhdGEsITApP2EuZGF0YTp7fSxkPW0oaC5uYW1lKT9oLm5hbWU6IiIsZj1lW2EucGFyZW50XTtmPWcoZiwhMCk/YltmLnBvc106bnVsbDt2YXIgRj1mdW5jdGlvbihhKXtyZXR1cm4gYS5uYW1lPT09ZH0sQjt2JiZnKGYsITApJiYoQj15KGYuY2hpbGRyZW4sRikpPyhGPUIucG9zLEIubm9kZXMucHVzaChhKSk6Rj1yKys7YltGXXx8KGJbRl09Qj17ZGVwdGg6Zj9mLmRlcHRoKzE6MCxuYW1lOmQsbm9kZXM6W2FdLGNoaWxkcmVuOltdLHBvczpGfSwtMSE9PUYmJm4ucHVzaChkKSxnKGYsCiEwKSYmZi5jaGlsZHJlbi5wdXNoKEIpKTttKGEuaWQpJiYoZVthLmlkXT1hKTtCJiYhMD09PWguY29sbGFwc2VkJiYoQi5jb2xsYXBzZWQ9ITApO2EucG9zPUZ9fSk7Yj1mdW5jdGlvbihhLGgpe3ZhciBuPWZ1bmN0aW9uKGEsZCxmKXt2YXIgZT1kKygtMT09PWQ/MDpoLTEpLGI9KGUtZCkvMixyPWQrYjthLm5vZGVzLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGg9YS5kYXRhO2coaCwhMCkmJihoLnk9ZCsoaC5zZXJpZXNJbmRleHx8MCksZGVsZXRlIGguc2VyaWVzSW5kZXgpO2EucG9zPXJ9KTtmW3JdPWE7YS5wb3M9cjthLnRpY2ttYXJrT2Zmc2V0PWIrLjU7YS5jb2xsYXBzZVN0YXJ0PWUrLjU7YS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGEpe24oYSxlKzEsZik7ZT0oYS5jb2xsYXBzZUVuZHx8MCktLjV9KTthLmNvbGxhcHNlRW5kPWUrLjU7cmV0dXJuIGZ9O3JldHVybiBuKGFbIi0xIl0sLTEse30pfShiLGgpO3JldHVybntjYXRlZ29yaWVzOm4sbWFwT2ZJZFRvTm9kZTplLAptYXBPZlBvc1RvR3JpZE5vZGU6Yixjb2xsYXBzZWROb2RlczpmLHRyZWU6YX19ZnVuY3Rpb24gZShhKXthLnRhcmdldC5heGVzLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4idHJlZWdyaWQiPT09YS5vcHRpb25zLnR5cGV9KS5mb3JFYWNoKGZ1bmN0aW9uKGQpe3ZhciBoPWQub3B0aW9uc3x8e30sbj1oLmxhYmVscyxmPWgudW5pcXVlTmFtZXMsZT0wO2lmKCFkLnRyZWVHcmlkLm1hcE9mUG9zVG9HcmlkTm9kZXx8ZC5zZXJpZXMuc29tZShmdW5jdGlvbihhKXtyZXR1cm4hYS5oYXNSZW5kZXJlZHx8YS5pc0RpcnR5RGF0YXx8YS5pc0RpcnR5fSkpaD1kLnNlcmllcy5yZWR1Y2UoZnVuY3Rpb24oYSxoKXtoLnZpc2libGUmJigoaC5vcHRpb25zLmRhdGF8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGgpe2coaCwhMCkmJihoLnNlcmllc0luZGV4PWUsYS5wdXNoKGgpKX0pLCEwPT09ZiYmZSsrKTtyZXR1cm4gYX0sW10pLGg9dyhoLGZ8fCExLCEwPT09Zj9lOjEpLGQuY2F0ZWdvcmllcz1oLmNhdGVnb3JpZXMsCmQudHJlZUdyaWQubWFwT2ZQb3NUb0dyaWROb2RlPWgubWFwT2ZQb3NUb0dyaWROb2RlLGQuaGFzTmFtZXM9ITAsZC50cmVlR3JpZC50cmVlPWgudHJlZSxkLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBoPShhLm9wdGlvbnMuZGF0YXx8W10pLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gZyhhLCEwKT90KGEpOmF9KTthLnZpc2libGUmJmEuc2V0RGF0YShoLCExKX0pLGQudHJlZUdyaWQubWFwT3B0aW9uc1RvTGV2ZWw9eC5nZXRMZXZlbE9wdGlvbnMoe2RlZmF1bHRzOm4sZnJvbToxLGxldmVsczpuJiZuLmxldmVscyx0bzpkLnRyZWVHcmlkLnRyZWUmJmQudHJlZUdyaWQudHJlZS5oZWlnaHR9KSwiYmVmb3JlUmVuZGVyIj09PWEudHlwZSYmKGQudHJlZUdyaWQuY29sbGFwc2VkTm9kZXM9aC5jb2xsYXBzZWROb2Rlcyl9KX1mdW5jdGlvbiBjKGEsZCl7dmFyIGg9dGhpcy50cmVlR3JpZC5tYXBPcHRpb25zVG9MZXZlbHx8e30sbj10aGlzLnRpY2tzLGY9bltkXSxlO2lmKCJ0cmVlZ3JpZCI9PT0KdGhpcy5vcHRpb25zLnR5cGUmJnRoaXMudHJlZUdyaWQubWFwT2ZQb3NUb0dyaWROb2RlKXt2YXIgYj10aGlzLnRyZWVHcmlkLm1hcE9mUG9zVG9HcmlkTm9kZVtkXTsoaD1oW2IuZGVwdGhdKSYmKGU9e2xhYmVsczpofSk7Zj8oZi5wYXJhbWV0ZXJzLmNhdGVnb3J5PWIubmFtZSxmLm9wdGlvbnM9ZSxmLmFkZExhYmVsKCkpOm5bZF09bmV3IGwodGhpcyxkLHZvaWQgMCx2b2lkIDAse2NhdGVnb3J5OmIubmFtZSx0aWNrbWFya09mZnNldDpiLnRpY2ttYXJrT2Zmc2V0LG9wdGlvbnM6ZX0pfWVsc2UgYS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9ZnVuY3Rpb24gcShhKXt2YXIgZD10aGlzLm9wdGlvbnM7ZD0oZD1kJiZkLmxhYmVscykmJmIoZC5pbmRlbnRhdGlvbik/ZC5pbmRlbnRhdGlvbjowO3ZhciBoPWEuYXBwbHkodGhpcyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpO2lmKCJ0cmVlZ3JpZCI9PT10aGlzLm9wdGlvbnMudHlwZSYmCnRoaXMudHJlZUdyaWQubWFwT2ZQb3NUb0dyaWROb2RlKXt2YXIgbj10aGlzLnRyZWVHcmlkLm1hcE9mUG9zVG9HcmlkTm9kZVstMV0uaGVpZ2h0fHwwO2gud2lkdGgrPWQqKG4tMSl9cmV0dXJuIGh9ZnVuY3Rpb24gZihhLGQsaCl7dmFyIG49dGhpcyxmPSJ0cmVlZ3JpZCI9PT1oLnR5cGU7bi50cmVlR3JpZHx8KG4udHJlZUdyaWQ9bmV3IEcobikpO2YmJihEKGQsImJlZm9yZVJlbmRlciIsZSksRChkLCJiZWZvcmVSZWRyYXciLGUpLEQoZCwiYWRkU2VyaWVzIixmdW5jdGlvbihhKXthLm9wdGlvbnMuZGF0YSYmKGE9dyhhLm9wdGlvbnMuZGF0YSxoLnVuaXF1ZU5hbWVzfHwhMSwxKSxuLnRyZWVHcmlkLmNvbGxhcHNlZE5vZGVzPShuLnRyZWVHcmlkLmNvbGxhcHNlZE5vZGVzfHxbXSkuY29uY2F0KGEuY29sbGFwc2VkTm9kZXMpKX0pLEQobiwiZm91bmRFeHRyZW1lcyIsZnVuY3Rpb24oKXtuLnRyZWVHcmlkLmNvbGxhcHNlZE5vZGVzJiZuLnRyZWVHcmlkLmNvbGxhcHNlZE5vZGVzLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGg9Cm4udHJlZUdyaWQuY29sbGFwc2UoYSk7bi5icm9rZW5BeGlzJiYobi5icm9rZW5BeGlzLnNldEJyZWFrcyhoLCExKSxuLnRyZWVHcmlkLmNvbGxhcHNlZE5vZGVzJiYobi50cmVlR3JpZC5jb2xsYXBzZWROb2Rlcz1uLnRyZWVHcmlkLmNvbGxhcHNlZE5vZGVzLmZpbHRlcihmdW5jdGlvbihoKXtyZXR1cm4gYS5jb2xsYXBzZVN0YXJ0IT09aC5jb2xsYXBzZVN0YXJ0fHxhLmNvbGxhcHNlRW5kIT09aC5jb2xsYXBzZUVuZH0pKSl9KX0pLEQobiwiYWZ0ZXJCcmVha3MiLGZ1bmN0aW9uKCl7dmFyIGE7InlBeGlzIj09PW4uY29sbCYmIW4uc3RhdGljU2NhbGUmJihudWxsPT09KGE9bi5jaGFydC5vcHRpb25zLmNoYXJ0KXx8dm9pZCAwPT09YT8wOmEuaGVpZ2h0KSYmKG4uaXNEaXJ0eT0hMCl9KSxoPXQoe2dyaWQ6e2VuYWJsZWQ6ITB9LGxhYmVsczp7YWxpZ246ImxlZnQiLGxldmVsczpbe2xldmVsOnZvaWQgMH0se2xldmVsOjEsc3R5bGU6e2ZvbnRXZWlnaHQ6ImJvbGQifX1dLHN5bWJvbDp7dHlwZToidHJpYW5nbGUiLAp4Oi01LHk6LTUsaGVpZ2h0OjEwLHdpZHRoOjEwLHBhZGRpbmc6NX19LHVuaXF1ZU5hbWVzOiExfSxoLHtyZXZlcnNlZDohMCxncmlkOntjb2x1bW5zOnZvaWQgMH19KSk7YS5hcHBseShuLFtkLGhdKTtmJiYobi5oYXNOYW1lcz0hMCxuLm9wdGlvbnMuc2hvd0xhc3RMYWJlbD0hMCl9ZnVuY3Rpb24gZChhKXt2YXIgZD10aGlzLm9wdGlvbnM7InRyZWVncmlkIj09PWQudHlwZT8odGhpcy5taW49SCh0aGlzLnVzZXJNaW4sZC5taW4sdGhpcy5kYXRhTWluKSx0aGlzLm1heD1IKHRoaXMudXNlck1heCxkLm1heCx0aGlzLmRhdGFNYXgpLGsodGhpcywiZm91bmRFeHRyZW1lcyIpLHRoaXMuc2V0QXhpc1RyYW5zbGF0aW9uKCEwKSx0aGlzLnRpY2ttYXJrT2Zmc2V0PS41LHRoaXMudGlja0ludGVydmFsPTEsdGhpcy50aWNrUG9zaXRpb25zPXRoaXMudHJlZUdyaWQubWFwT2ZQb3NUb0dyaWROb2RlP3RoaXMudHJlZUdyaWQuZ2V0VGlja1Bvc2l0aW9ucygpOltdKTphLmFwcGx5KHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLAoxKSl9dmFyIHY9ITE7cC5jb21wb3NlPWZ1bmN0aW9uKGEpe3Z8fChJKGEucHJvdG90eXBlLCJnZW5lcmF0ZVRpY2siLGMpLEkoYS5wcm90b3R5cGUsImdldE1heExhYmVsRGltZW5zaW9ucyIscSksSShhLnByb3RvdHlwZSwiaW5pdCIsZiksSShhLnByb3RvdHlwZSwic2V0VGlja0ludGVydmFsIixkKSx6LmNvbXBvc2UobCksdj0hMCl9O3ZhciBHPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChhKXt0aGlzLmF4aXM9YX1kLnByb3RvdHlwZS5jb2xsYXBzZT1mdW5jdGlvbihkKXt2YXIgaD10aGlzLmF4aXMsbj1oLm9wdGlvbnMuYnJlYWtzfHxbXTtkPWEoZCxoLm1heCk7bi5wdXNoKGQpO3JldHVybiBufTtkLnByb3RvdHlwZS5leHBhbmQ9ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcy5heGlzLG49aC5vcHRpb25zLmJyZWFrc3x8W10sZj1hKGQsaC5tYXgpO3JldHVybiBuLnJlZHVjZShmdW5jdGlvbihhLGQpe2QudG89PT1mLnRvJiZkLmZyb209PT1mLmZyb218fGEucHVzaChkKTtyZXR1cm4gYX0sCltdKX07ZC5wcm90b3R5cGUuZ2V0VGlja1Bvc2l0aW9ucz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuYXhpcztyZXR1cm4gT2JqZWN0LmtleXMoYS50cmVlR3JpZC5tYXBPZlBvc1RvR3JpZE5vZGV8fHt9KS5yZWR1Y2UoZnVuY3Rpb24oZCxuKXtuPStuOyEoYS5taW48PW4mJmEubWF4Pj1uKXx8YS5icm9rZW5BeGlzJiZhLmJyb2tlbkF4aXMuaXNJbkFueUJyZWFrKG4pfHxkLnB1c2gobik7cmV0dXJuIGR9LFtdKX07ZC5wcm90b3R5cGUuaXNDb2xsYXBzZWQ9ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcy5heGlzLG49aC5vcHRpb25zLmJyZWFrc3x8W10sZj1hKGQsaC5tYXgpO3JldHVybiBuLnNvbWUoZnVuY3Rpb24oYSl7cmV0dXJuIGEuZnJvbT09PWYuZnJvbSYmYS50bz09PWYudG99KX07ZC5wcm90b3R5cGUudG9nZ2xlQ29sbGFwc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaXNDb2xsYXBzZWQoYSk/dGhpcy5leHBhbmQoYSk6dGhpcy5jb2xsYXBzZShhKX07cmV0dXJuIGR9KCk7cC5BZGRpdGlvbnM9Ckd9KShFfHwoRT17fSkpO2MucHJvdG90eXBlLnV0aWxzPXtnZXROb2RlOnUuZ2V0Tm9kZX07RS5jb21wb3NlKGMpO3JldHVybiBFfSk7SihjLCJwYXJ0cy1nYW50dC9DdXJyZW50RGF0ZUluZGljYXRvci5qcyIsW2NbInBhcnRzL0dsb2JhbHMuanMiXSxjWyJwYXJ0cy9PcHRpb25zLmpzIl0sY1sicGFydHMvVXRpbGl0aWVzLmpzIl0sY1sicGFydHMvUGxvdExpbmVPckJhbmQuanMiXV0sZnVuY3Rpb24oYyxsLHUseil7dmFyIHg9bC5kYXRlRm9ybWF0O2w9dS5hZGRFdmVudDt2YXIgQT11Lm1lcmdlO3U9dS53cmFwO3ZhciBEPXtjdXJyZW50RGF0ZUluZGljYXRvcjohMCxjb2xvcjoiI2NjZDZlYiIsd2lkdGg6MixsYWJlbDp7Zm9ybWF0OiIlYSwgJWIgJWQgJVksICVIOiVNIixmb3JtYXR0ZXI6ZnVuY3Rpb24oYyxrKXtyZXR1cm4geChrLGMpfSxyb3RhdGlvbjowLHN0eWxlOntmb250U2l6ZToiMTBweCJ9fX07bChjLkF4aXMsImFmdGVyU2V0T3B0aW9ucyIsZnVuY3Rpb24oKXt2YXIgYz0KdGhpcy5vcHRpb25zLGs9Yy5jdXJyZW50RGF0ZUluZGljYXRvcjtrJiYoaz0ib2JqZWN0Ij09PXR5cGVvZiBrP0EoRCxrKTpBKEQpLGsudmFsdWU9bmV3IERhdGUsYy5wbG90TGluZXN8fChjLnBsb3RMaW5lcz1bXSksYy5wbG90TGluZXMucHVzaChrKSl9KTtsKHosInJlbmRlciIsZnVuY3Rpb24oKXt0aGlzLmxhYmVsJiZ0aGlzLmxhYmVsLmF0dHIoe3RleHQ6dGhpcy5nZXRMYWJlbFRleHQodGhpcy5vcHRpb25zLmxhYmVsKX0pfSk7dSh6LnByb3RvdHlwZSwiZ2V0TGFiZWxUZXh0IixmdW5jdGlvbihjLGspe3ZhciBiPXRoaXMub3B0aW9ucztyZXR1cm4gYi5jdXJyZW50RGF0ZUluZGljYXRvciYmYi5sYWJlbCYmImZ1bmN0aW9uIj09PXR5cGVvZiBiLmxhYmVsLmZvcm1hdHRlcj8oYi52YWx1ZT1uZXcgRGF0ZSxiLmxhYmVsLmZvcm1hdHRlci5jYWxsKHRoaXMsYi52YWx1ZSxiLmxhYmVsLmZvcm1hdCkpOmMuY2FsbCh0aGlzLGspfSl9KTtKKGMsIm1vZHVsZXMvc3RhdGljLXNjYWxlLnNyYy5qcyIsCltjWyJwYXJ0cy9HbG9iYWxzLmpzIl0sY1sicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGMsbCl7dmFyIHU9bC5hZGRFdmVudCx6PWwuZGVmaW5lZCx4PWwuaXNOdW1iZXIsQT1sLnBpY2s7bD1jLkNoYXJ0O3UoYy5BeGlzLCJhZnRlclNldE9wdGlvbnMiLGZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5jaGFydC5vcHRpb25zJiZ0aGlzLmNoYXJ0Lm9wdGlvbnMuY2hhcnQ7IXRoaXMuaG9yaXomJngodGhpcy5vcHRpb25zLnN0YXRpY1NjYWxlKSYmKCFjLmhlaWdodHx8Yy5zY3JvbGxhYmxlUGxvdEFyZWEmJmMuc2Nyb2xsYWJsZVBsb3RBcmVhLm1pbkhlaWdodCkmJih0aGlzLnN0YXRpY1NjYWxlPXRoaXMub3B0aW9ucy5zdGF0aWNTY2FsZSl9KTtsLnByb3RvdHlwZS5hZGp1c3RIZWlnaHQ9ZnVuY3Rpb24oKXsiYWRqdXN0SGVpZ2h0IiE9PXRoaXMucmVkcmF3VHJpZ2dlciYmKCh0aGlzLmF4ZXN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGMpe3ZhciBsPWMuY2hhcnQsaz0hIWwuaW5pdGlhdGVkU2NhbGUmJgpsLm9wdGlvbnMuYW5pbWF0aW9uLGI9Yy5vcHRpb25zLnN0YXRpY1NjYWxlO2lmKGMuc3RhdGljU2NhbGUmJnooYy5taW4pKXt2YXIgZz1BKGMuYnJva2VuQXhpcyYmYy5icm9rZW5BeGlzLnVuaXRMZW5ndGgsYy5tYXgrYy50aWNrSW50ZXJ2YWwtYy5taW4pKmI7Zz1NYXRoLm1heChnLGIpO2I9Zy1sLnBsb3RIZWlnaHQ7MTw9TWF0aC5hYnMoYikmJihsLnBsb3RIZWlnaHQ9ZyxsLnJlZHJhd1RyaWdnZXI9ImFkanVzdEhlaWdodCIsbC5zZXRTaXplKHZvaWQgMCxsLmNoYXJ0SGVpZ2h0K2IsaykpO2Muc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYil7KGI9Yi5zaGFyZWRDbGlwS2V5JiZsW2Iuc2hhcmVkQ2xpcEtleV0pJiZiLmF0dHIoe2hlaWdodDpsLnBsb3RIZWlnaHR9KX0pfX0pLHRoaXMuaW5pdGlhdGVkU2NhbGU9ITApO3RoaXMucmVkcmF3VHJpZ2dlcj1udWxsfTt1KGwsInJlbmRlciIsbC5wcm90b3R5cGUuYWRqdXN0SGVpZ2h0KX0pO0ooYywicGFydHMtZ2FudHQvUGF0aGZpbmRlckFsZ29yaXRobXMuanMiLApbY1sicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGMpe2Z1bmN0aW9uIGwoYixtLGMpe2M9Y3x8MDt2YXIgZz1iLmxlbmd0aC0xO20tPTFlLTc7Zm9yKHZhciBrLHQ7Yzw9ZzspaWYoaz1nK2M+PjEsdD1tLWJba10ueE1pbiwwPHQpYz1rKzE7ZWxzZSBpZigwPnQpZz1rLTE7ZWxzZSByZXR1cm4gaztyZXR1cm4gMDxjP2MtMTowfWZ1bmN0aW9uIHUoYixtKXtmb3IodmFyIGc9bChiLG0ueCsxKSsxO2ctLTspe3ZhciBjO2lmKGM9YltnXS54TWF4Pj1tLngpYz1iW2ddLGM9bS54PD1jLnhNYXgmJm0ueD49Yy54TWluJiZtLnk8PWMueU1heCYmbS55Pj1jLnlNaW47aWYoYylyZXR1cm4gZ31yZXR1cm4tMX1mdW5jdGlvbiB6KGIpe3ZhciBnPVtdO2lmKGIubGVuZ3RoKXtnLnB1c2goWyJNIixiWzBdLnN0YXJ0LngsYlswXS5zdGFydC55XSk7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDsrK2MpZy5wdXNoKFsiTCIsYltjXS5lbmQueCxiW2NdLmVuZC55XSl9cmV0dXJuIGd9ZnVuY3Rpb24geChiLApjKXtiLnlNaW49ayhiLnlNaW4sYy55TWluKTtiLnlNYXg9eShiLnlNYXgsYy55TWF4KTtiLnhNaW49ayhiLnhNaW4sYy54TWluKTtiLnhNYXg9eShiLnhNYXgsYy54TWF4KX12YXIgQT1jLmV4dGVuZCxEPWMucGljayx5PU1hdGgubWluLGs9TWF0aC5tYXgsYj1NYXRoLmFicztyZXR1cm57c3RyYWlnaHQ6ZnVuY3Rpb24oYixjKXtyZXR1cm57cGF0aDpbWyJNIixiLngsYi55XSxbIkwiLGMueCxjLnldXSxvYnN0YWNsZXM6W3tzdGFydDpiLGVuZDpjfV19fSxzaW1wbGVDb25uZWN0OkEoZnVuY3Rpb24oZyxjLGspe2Z1bmN0aW9uIG0oYSxmLGQsYixlKXthPXt4OmEueCx5OmEueX07YVtmXT1kW2J8fGZdKyhlfHwwKTtyZXR1cm4gYX1mdW5jdGlvbiBsKGEsZixkKXt2YXIgZT1iKGZbZF0tYVtkKyJNaW4iXSk+YihmW2RdLWFbZCsiTWF4Il0pO3JldHVybiBtKGYsZCxhLGQrKGU/Ik1heCI6Ik1pbiIpLGU/MTotMSl9dmFyIHQ9W10scD1EKGsuc3RhcnREaXJlY3Rpb25YLGIoYy54LWcueCk+CmIoYy55LWcueSkpPyJ4IjoieSIsYT1rLmNoYXJ0T2JzdGFjbGVzLHc9dShhLGcpO2s9dShhLGMpO2lmKC0xPGspe3ZhciBlPWFba107az1sKGUsYyxwKTtlPXtzdGFydDprLGVuZDpjfTt2YXIgQz1rfWVsc2UgQz1jOy0xPHcmJihhPWFbd10saz1sKGEsZyxwKSx0LnB1c2goe3N0YXJ0OmcsZW5kOmt9KSxrW3BdPj1nW3BdPT09a1twXT49Q1twXSYmKHA9InkiPT09cD8ieCI6InkiLGM9Z1twXTxjW3BdLHQucHVzaCh7c3RhcnQ6ayxlbmQ6bShrLHAsYSxwKyhjPyJNYXgiOiJNaW4iKSxjPzE6LTEpfSkscD0ieSI9PT1wPyJ4IjoieSIpKTtnPXQubGVuZ3RoP3RbdC5sZW5ndGgtMV0uZW5kOmc7az1tKGcscCxDKTt0LnB1c2goe3N0YXJ0OmcsZW5kOmt9KTtwPW0oaywieSI9PT1wPyJ4IjoieSIsQyk7dC5wdXNoKHtzdGFydDprLGVuZDpwfSk7dC5wdXNoKGUpO3JldHVybntwYXRoOnoodCksb2JzdGFjbGVzOnR9fSx7cmVxdWlyZXNPYnN0YWNsZXM6ITB9KSxmYXN0QXZvaWQ6QShmdW5jdGlvbihnLApjLHQpe2Z1bmN0aW9uIG0oYSxkLGgpe3ZhciBuLGY9YS54PGQueD8xOi0xO2lmKGEueDxkLngpe3ZhciBiPWE7dmFyIGU9ZH1lbHNlIGI9ZCxlPWE7aWYoYS55PGQueSl7dmFyIHY9YTt2YXIgRj1kfWVsc2Ugdj1kLEY9YTtmb3Iobj0wPmY/eShsKEIsZS54KSxCLmxlbmd0aC0xKTowO0Jbbl0mJigwPGYmJkJbbl0ueE1pbjw9ZS54fHwwPmYmJkJbbl0ueE1heD49Yi54KTspe2lmKEJbbl0ueE1pbjw9ZS54JiZCW25dLnhNYXg+PWIueCYmQltuXS55TWluPD1GLnkmJkJbbl0ueU1heD49di55KXJldHVybiBoP3t5OmEueSx4OmEueDxkLng/QltuXS54TWluLTE6QltuXS54TWF4KzEsb2JzdGFjbGU6QltuXX06e3g6YS54LHk6YS55PGQueT9CW25dLnlNaW4tMTpCW25dLnlNYXgrMSxvYnN0YWNsZTpCW25dfTtuKz1mfXJldHVybiBkfWZ1bmN0aW9uIEEoYSxkLGgsZixlKXt2YXIgbj1lLnNvZnQsdj1lLmhhcmQscj1mPyJ4IjoieSIsYz17eDpkLngseTpkLnl9LEI9e3g6ZC54LHk6ZC55fTsKZT1hW3IrIk1heCJdPj1uW3IrIk1heCJdO249YVtyKyJNaW4iXTw9bltyKyJNaW4iXTt2YXIgRz1hW3IrIk1heCJdPj12W3IrIk1heCJdO3Y9YVtyKyJNaW4iXTw9dltyKyJNaW4iXTt2YXIgRj1iKGFbcisiTWluIl0tZFtyXSksZz1iKGFbcisiTWF4Il0tZFtyXSk7aD0xMD5iKEYtZyk/ZFtyXTxoW3JdOmc8RjtCW3JdPWFbcisiTWluIl07Y1tyXT1hW3IrIk1heCJdO2E9bShkLEIsZilbcl0hPT1CW3JdO2Q9bShkLGMsZilbcl0hPT1jW3JdO2g9YT9kP2g6ITA6ZD8hMTpoO2g9bj9lP2g6ITA6ZT8hMTpoO3JldHVybiB2P0c/aDohMDpHPyExOmh9ZnVuY3Rpb24gRShhLGgsYil7aWYoYS54PT09aC54JiZhLnk9PT1oLnkpcmV0dXJuW107dmFyIG49Yj8ieCI6InkiLGU9dC5vYnN0YWNsZU9wdGlvbnMubWFyZ2luO3ZhciByPXtzb2Z0Ont4TWluOmYseE1heDpkLHlNaW46dix5TWF4Okd9LGhhcmQ6dC5oYXJkQm91bmRzfTt2YXIgYz11KEIsYSk7aWYoLTE8Yyl7Yz1CW2NdO3I9QShjLGEsCmgsYixyKTt4KGMsdC5oYXJkQm91bmRzKTt2YXIgZz1iP3t5OmEueSx4OmNbcj8ieE1heCI6InhNaW4iXSsocj8xOi0xKX06e3g6YS54LHk6Y1tyPyJ5TWF4IjoieU1pbiJdKyhyPzE6LTEpfTt2YXIgRj11KEIsZyk7LTE8RiYmKEY9QltGXSx4KEYsdC5oYXJkQm91bmRzKSxnW25dPXI/ayhjW24rIk1heCJdLWUrMSwoRltuKyJNaW4iXStjW24rIk1heCJdKS8yKTp5KGNbbisiTWluIl0rZS0xLChGW24rIk1heCJdK2NbbisiTWluIl0pLzIpLGEueD09PWcueCYmYS55PT09Zy55PyhDJiYoZ1tuXT1yP2soY1tuKyJNYXgiXSxGW24rIk1heCJdKSsxOnkoY1tuKyJNaW4iXSxGW24rIk1pbiJdKS0xKSxDPSFDKTpDPSExKTthPVt7c3RhcnQ6YSxlbmQ6Z31dfWVsc2Ugbj1tKGEse3g6Yj9oLng6YS54LHk6Yj9hLnk6aC55fSxiKSxhPVt7c3RhcnQ6YSxlbmQ6e3g6bi54LHk6bi55fX1dLG5bYj8ieCI6InkiXSE9PWhbYj8ieCI6InkiXSYmKHI9QShuLm9ic3RhY2xlLG4saCwhYixyKSx4KG4ub2JzdGFjbGUsCnQuaGFyZEJvdW5kcykscj17eDpiP24ueDpuLm9ic3RhY2xlW3I/InhNYXgiOiJ4TWluIl0rKHI/MTotMSkseTpiP24ub2JzdGFjbGVbcj8ieU1heCI6InlNaW4iXSsocj8xOi0xKTpuLnl9LGI9IWIsYT1hLmNvbmNhdChFKHt4Om4ueCx5Om4ueX0scixiKSkpO3JldHVybiBhPWEuY29uY2F0KEUoYVthLmxlbmd0aC0xXS5lbmQsaCwhYikpfWZ1bmN0aW9uIHAoYSxkLGgpe3ZhciBuPXkoYS54TWF4LWQueCxkLngtYS54TWluKTx5KGEueU1heC1kLnksZC55LWEueU1pbik7aD1BKGEsZCxoLG4se3NvZnQ6dC5oYXJkQm91bmRzLGhhcmQ6dC5oYXJkQm91bmRzfSk7cmV0dXJuIG4/e3k6ZC55LHg6YVtoPyJ4TWF4IjoieE1pbiJdKyhoPzE6LTEpfTp7eDpkLngseTphW2g/InlNYXgiOiJ5TWluIl0rKGg/MTotMSl9fXZhciBhPUQodC5zdGFydERpcmVjdGlvblgsYihjLngtZy54KT5iKGMueS1nLnkpKSx3PWE/IngiOiJ5IixlPVtdLEM9ITEscT10Lm9ic3RhY2xlTWV0cmljcyxmPXkoZy54LApjLngpLXEubWF4V2lkdGgtMTAsZD1rKGcueCxjLngpK3EubWF4V2lkdGgrMTAsdj15KGcueSxjLnkpLXEubWF4SGVpZ2h0LTEwLEc9ayhnLnksYy55KStxLm1heEhlaWdodCsxMCxCPXQuY2hhcnRPYnN0YWNsZXM7dmFyIHI9bChCLGYpO3E9bChCLGQpO0I9Qi5zbGljZShyLHErMSk7aWYoLTE8KHE9dShCLGMpKSl7dmFyIGg9cChCW3FdLGMsZyk7ZS5wdXNoKHtlbmQ6YyxzdGFydDpofSk7Yz1ofWZvcig7LTE8KHE9dShCLGMpKTspcj0wPmNbd10tZ1t3XSxoPXt4OmMueCx5OmMueX0saFt3XT1CW3FdW3I/dysiTWF4Ijp3KyJNaW4iXSsocj8xOi0xKSxlLnB1c2goe2VuZDpjLHN0YXJ0Omh9KSxjPWg7Zz1FKGcsYyxhKTtnPWcuY29uY2F0KGUucmV2ZXJzZSgpKTtyZXR1cm57cGF0aDp6KGcpLG9ic3RhY2xlczpnfX0se3JlcXVpcmVzT2JzdGFjbGVzOiEwfSl9fSk7SihjLCJwYXJ0cy1nYW50dC9BcnJvd1N5bWJvbHMuanMiLFtjWyJwYXJ0cy9TVkdSZW5kZXJlci5qcyJdXSxmdW5jdGlvbihjKXtjLnByb3RvdHlwZS5zeW1ib2xzLmFycm93PQpmdW5jdGlvbihjLHUseix4KXtyZXR1cm5bWyJNIixjLHUreC8yXSxbIkwiLGMreix1XSxbIkwiLGMsdSt4LzJdLFsiTCIsYyt6LHUreF1dfTtjLnByb3RvdHlwZS5zeW1ib2xzWyJhcnJvdy1oYWxmIl09ZnVuY3Rpb24obCx1LHoseCl7cmV0dXJuIGMucHJvdG90eXBlLnN5bWJvbHMuYXJyb3cobCx1LHovMix4KX07Yy5wcm90b3R5cGUuc3ltYm9sc1sidHJpYW5nbGUtbGVmdCJdPWZ1bmN0aW9uKGMsdSx6LHgpe3JldHVybltbIk0iLGMreix1XSxbIkwiLGMsdSt4LzJdLFsiTCIsYyt6LHUreF0sWyJaIl1dfTtjLnByb3RvdHlwZS5zeW1ib2xzWyJhcnJvdy1maWxsZWQiXT1jLnByb3RvdHlwZS5zeW1ib2xzWyJ0cmlhbmdsZS1sZWZ0Il07Yy5wcm90b3R5cGUuc3ltYm9sc1sidHJpYW5nbGUtbGVmdC1oYWxmIl09ZnVuY3Rpb24obCx1LHoseCl7cmV0dXJuIGMucHJvdG90eXBlLnN5bWJvbHNbInRyaWFuZ2xlLWxlZnQiXShsLHUsei8yLHgpfTtjLnByb3RvdHlwZS5zeW1ib2xzWyJhcnJvdy1maWxsZWQtaGFsZiJdPQpjLnByb3RvdHlwZS5zeW1ib2xzWyJ0cmlhbmdsZS1sZWZ0LWhhbGYiXX0pO0ooYywicGFydHMtZ2FudHQvUGF0aGZpbmRlci5qcyIsW2NbInBhcnRzL0NoYXJ0LmpzIl0sY1sicGFydHMvR2xvYmFscy5qcyJdLGNbInBhcnRzL09wdGlvbnMuanMiXSxjWyJwYXJ0cy9Qb2ludC5qcyJdLGNbInBhcnRzL1V0aWxpdGllcy5qcyJdLGNbInBhcnRzLWdhbnR0L1BhdGhmaW5kZXJBbGdvcml0aG1zLmpzIl1dLGZ1bmN0aW9uKGMsbCx1LHoseCxBKXtmdW5jdGlvbiBEKGEpe3ZhciBkPWEuc2hhcGVBcmdzO3JldHVybiBkP3t4TWluOmQueCx4TWF4OmQueCtkLndpZHRoLHlNaW46ZC55LHlNYXg6ZC55K2QuaGVpZ2h0fTooZD1hLmdyYXBoaWMmJmEuZ3JhcGhpYy5nZXRCQm94KCkpP3t4TWluOmEucGxvdFgtZC53aWR0aC8yLHhNYXg6YS5wbG90WCtkLndpZHRoLzIseU1pbjphLnBsb3RZLWQuaGVpZ2h0LzIseU1heDphLnBsb3RZK2QuaGVpZ2h0LzJ9Om51bGx9ZnVuY3Rpb24geShiKXtmb3IodmFyIGQ9CmIubGVuZ3RoLGY9MCxlLGMscj1bXSxoPWZ1bmN0aW9uKGQsYixmKXtmPWEoZiwxMCk7dmFyIG49ZC55TWF4K2Y+Yi55TWluLWYmJmQueU1pbi1mPGIueU1heCtmLGU9ZC54TWF4K2Y+Yi54TWluLWYmJmQueE1pbi1mPGIueE1heCtmLGM9bj9kLnhNaW4+Yi54TWF4P2QueE1pbi1iLnhNYXg6Yi54TWluLWQueE1heDpJbmZpbml0eSxyPWU/ZC55TWluPmIueU1heD9kLnlNaW4tYi55TWF4OmIueU1pbi1kLnlNYXg6SW5maW5pdHk7cmV0dXJuIGUmJm4/Zj9oKGQsYixNYXRoLmZsb29yKGYvMikpOkluZmluaXR5OnEoYyxyKX07ZjxkOysrZilmb3IoZT1mKzE7ZTxkOysrZSljPWgoYltmXSxiW2VdKSw4MD5jJiZyLnB1c2goYyk7ci5wdXNoKDgwKTtyZXR1cm4gQyhNYXRoLmZsb29yKHIuc29ydChmdW5jdGlvbihhLGQpe3JldHVybiBhLWR9KVtNYXRoLmZsb29yKHIubGVuZ3RoLzEwKV0vMi0xKSwxKX1mdW5jdGlvbiBrKGEsZCxiKXt0aGlzLmluaXQoYSxkLGIpfWZ1bmN0aW9uIGIoYSl7dGhpcy5pbml0KGEpfQpmdW5jdGlvbiBnKGEpe2lmKGEub3B0aW9ucy5wYXRoZmluZGVyfHxhLnNlcmllcy5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtiLm9wdGlvbnMmJkUoITAsYi5vcHRpb25zLmNvbm5lY3RvcnM9Yi5vcHRpb25zLmNvbm5lY3RvcnN8fHt9LGIub3B0aW9ucy5wYXRoZmluZGVyKTtyZXR1cm4gYXx8Yi5vcHRpb25zJiZiLm9wdGlvbnMucGF0aGZpbmRlcn0sITEpKUUoITAsYS5vcHRpb25zLmNvbm5lY3RvcnM9YS5vcHRpb25zLmNvbm5lY3RvcnN8fHt9LGEub3B0aW9ucy5wYXRoZmluZGVyKSxIKCdXQVJOSU5HOiBQYXRoZmluZGVyIG9wdGlvbnMgaGF2ZSBiZWVuIHJlbmFtZWQuIFVzZSAiY2hhcnQuY29ubmVjdG9ycyIgb3IgInNlcmllcy5jb25uZWN0b3JzIiBpbnN0ZWFkLicpfSIiO3ZhciBtPXguYWRkRXZlbnQsdD14LmRlZmluZWQsSD14LmVycm9yLEk9eC5leHRlbmQsRT14Lm1lcmdlLHA9eC5vYmplY3RFYWNoLGE9eC5waWNrLHc9eC5zcGxhdCxlPWwuZGVnMnJhZCxDPU1hdGgubWF4LHE9Ck1hdGgubWluO0kodS5kZWZhdWx0T3B0aW9ucyx7Y29ubmVjdG9yczp7dHlwZToic3RyYWlnaHQiLGxpbmVXaWR0aDoxLG1hcmtlcjp7ZW5hYmxlZDohMSxhbGlnbjoiY2VudGVyIix2ZXJ0aWNhbEFsaWduOiJtaWRkbGUiLGluc2lkZTohMSxsaW5lV2lkdGg6MX0sc3RhcnRNYXJrZXI6e3N5bWJvbDoiZGlhbW9uZCJ9LGVuZE1hcmtlcjp7c3ltYm9sOiJhcnJvdy1maWxsZWQifX19KTtrLnByb3RvdHlwZT17aW5pdDpmdW5jdGlvbihhLGQsYil7dGhpcy5mcm9tUG9pbnQ9YTt0aGlzLnRvUG9pbnQ9ZDt0aGlzLm9wdGlvbnM9Yjt0aGlzLmNoYXJ0PWEuc2VyaWVzLmNoYXJ0O3RoaXMucGF0aGZpbmRlcj10aGlzLmNoYXJ0LnBhdGhmaW5kZXJ9LHJlbmRlclBhdGg6ZnVuY3Rpb24oYSxkLGIpe3ZhciBlPXRoaXMuY2hhcnQsZj1lLnN0eWxlZE1vZGUsYz1lLnBhdGhmaW5kZXIsaD0hZS5vcHRpb25zLmNoYXJ0LmZvckV4cG9ydCYmITEhPT1iLG49dGhpcy5ncmFwaGljcyYmdGhpcy5ncmFwaGljcy5wYXRoOwpjLmdyb3VwfHwoYy5ncm91cD1lLnJlbmRlcmVyLmcoKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1wYXRoZmluZGVyLWdyb3VwIikuYXR0cih7ekluZGV4Oi0xfSkuYWRkKGUuc2VyaWVzR3JvdXApKTtjLmdyb3VwLnRyYW5zbGF0ZShlLnBsb3RMZWZ0LGUucGxvdFRvcCk7biYmbi5yZW5kZXJlcnx8KG49ZS5yZW5kZXJlci5wYXRoKCkuYWRkKGMuZ3JvdXApLGZ8fG4uYXR0cih7b3BhY2l0eTowfSkpO24uYXR0cihkKTthPXtkOmF9O2Z8fChhLm9wYWNpdHk9MSk7bltoPyJhbmltYXRlIjoiYXR0ciJdKGEsYik7dGhpcy5ncmFwaGljcz10aGlzLmdyYXBoaWNzfHx7fTt0aGlzLmdyYXBoaWNzLnBhdGg9bn0sYWRkTWFya2VyOmZ1bmN0aW9uKGEsZCxiKXt2YXIgZj10aGlzLmZyb21Qb2ludC5zZXJpZXMuY2hhcnQsYz1mLnBhdGhmaW5kZXI7Zj1mLnJlbmRlcmVyO3ZhciByPSJzdGFydCI9PT1hP3RoaXMuZnJvbVBvaW50OnRoaXMudG9Qb2ludCxoPXIuZ2V0UGF0aGZpbmRlckFuY2hvclBvaW50KGQpOwppZihkLmVuYWJsZWQmJigoYj0ic3RhcnQiPT09YT9iWzFdOmJbYi5sZW5ndGgtMl0pJiYiTSI9PT1iWzBdfHwiTCI9PT1iWzBdKSl7Yj17eDpiWzFdLHk6YlsyXX07Yj1yLmdldFJhZGlhbnNUb1ZlY3RvcihiLGgpO2g9ci5nZXRNYXJrZXJWZWN0b3IoYixkLnJhZGl1cyxoKTtiPS1iL2U7aWYoZC53aWR0aCYmZC5oZWlnaHQpe3ZhciBuPWQud2lkdGg7dmFyIHY9ZC5oZWlnaHR9ZWxzZSBuPXY9MipkLnJhZGl1czt0aGlzLmdyYXBoaWNzPXRoaXMuZ3JhcGhpY3N8fHt9O2g9e3g6aC54LW4vMix5OmgueS12LzIsd2lkdGg6bixoZWlnaHQ6dixyb3RhdGlvbjpiLHJvdGF0aW9uT3JpZ2luWDpoLngscm90YXRpb25PcmlnaW5ZOmgueX07dGhpcy5ncmFwaGljc1thXT90aGlzLmdyYXBoaWNzW2FdLmFuaW1hdGUoaCk6KHRoaXMuZ3JhcGhpY3NbYV09Zi5zeW1ib2woZC5zeW1ib2wpLmFkZENsYXNzKCJoaWdoY2hhcnRzLXBvaW50LWNvbm5lY3RpbmctcGF0aC0iK2ErIi1tYXJrZXIiKS5hdHRyKGgpLmFkZChjLmdyb3VwKSwKZi5zdHlsZWRNb2RlfHx0aGlzLmdyYXBoaWNzW2FdLmF0dHIoe2ZpbGw6ZC5jb2xvcnx8dGhpcy5mcm9tUG9pbnQuY29sb3Isc3Ryb2tlOmQubGluZUNvbG9yLCJzdHJva2Utd2lkdGgiOmQubGluZVdpZHRoLG9wYWNpdHk6MH0pLmFuaW1hdGUoe29wYWNpdHk6MX0sci5zZXJpZXMub3B0aW9ucy5hbmltYXRpb24pKX19LGdldFBhdGg6ZnVuY3Rpb24oYSl7dmFyIGQ9dGhpcy5wYXRoZmluZGVyLGI9dGhpcy5jaGFydCxlPWQuYWxnb3JpdGhtc1thLnR5cGVdLGY9ZC5jaGFydE9ic3RhY2xlcztpZigiZnVuY3Rpb24iIT09dHlwZW9mIGUpSCgnIicrYS50eXBlKyciIGlzIG5vdCBhIFBhdGhmaW5kZXIgYWxnb3JpdGhtLicpO2Vsc2UgcmV0dXJuIGUucmVxdWlyZXNPYnN0YWNsZXMmJiFmJiYoZj1kLmNoYXJ0T2JzdGFjbGVzPWQuZ2V0Q2hhcnRPYnN0YWNsZXMoYSksYi5vcHRpb25zLmNvbm5lY3RvcnMuYWxnb3JpdGhtTWFyZ2luPWEuYWxnb3JpdGhtTWFyZ2luLGQuY2hhcnRPYnN0YWNsZU1ldHJpY3M9CmQuZ2V0T2JzdGFjbGVNZXRyaWNzKGYpKSxlKHRoaXMuZnJvbVBvaW50LmdldFBhdGhmaW5kZXJBbmNob3JQb2ludChhLnN0YXJ0TWFya2VyKSx0aGlzLnRvUG9pbnQuZ2V0UGF0aGZpbmRlckFuY2hvclBvaW50KGEuZW5kTWFya2VyKSxFKHtjaGFydE9ic3RhY2xlczpmLGxpbmVPYnN0YWNsZXM6ZC5saW5lT2JzdGFjbGVzfHxbXSxvYnN0YWNsZU1ldHJpY3M6ZC5jaGFydE9ic3RhY2xlTWV0cmljcyxoYXJkQm91bmRzOnt4TWluOjAseE1heDpiLnBsb3RXaWR0aCx5TWluOjAseU1heDpiLnBsb3RIZWlnaHR9LG9ic3RhY2xlT3B0aW9uczp7bWFyZ2luOmEuYWxnb3JpdGhtTWFyZ2lufSxzdGFydERpcmVjdGlvblg6ZC5nZXRBbGdvcml0aG1TdGFydERpcmVjdGlvbihhLnN0YXJ0TWFya2VyKX0sYSkpfSxyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmZyb21Qb2ludCxkPWEuc2VyaWVzLGI9ZC5jaGFydCxlPWIucGF0aGZpbmRlcixjPUUoYi5vcHRpb25zLmNvbm5lY3RvcnMsZC5vcHRpb25zLmNvbm5lY3RvcnMsCmEub3B0aW9ucy5jb25uZWN0b3JzLHRoaXMub3B0aW9ucykscj17fTtiLnN0eWxlZE1vZGV8fChyLnN0cm9rZT1jLmxpbmVDb2xvcnx8YS5jb2xvcixyWyJzdHJva2Utd2lkdGgiXT1jLmxpbmVXaWR0aCxjLmRhc2hTdHlsZSYmKHIuZGFzaHN0eWxlPWMuZGFzaFN0eWxlKSk7clsiY2xhc3MiXT0iaGlnaGNoYXJ0cy1wb2ludC1jb25uZWN0aW5nLXBhdGggaGlnaGNoYXJ0cy1jb2xvci0iK2EuY29sb3JJbmRleDtjPUUocixjKTt0KGMubWFya2VyLnJhZGl1cyl8fChjLm1hcmtlci5yYWRpdXM9cShDKE1hdGguY2VpbCgoYy5hbGdvcml0aG1NYXJnaW58fDgpLzIpLTEsMSksNSkpO2E9dGhpcy5nZXRQYXRoKGMpO2I9YS5wYXRoO2Eub2JzdGFjbGVzJiYoZS5saW5lT2JzdGFjbGVzPWUubGluZU9ic3RhY2xlc3x8W10sZS5saW5lT2JzdGFjbGVzPWUubGluZU9ic3RhY2xlcy5jb25jYXQoYS5vYnN0YWNsZXMpKTt0aGlzLnJlbmRlclBhdGgoYixyLGQub3B0aW9ucy5hbmltYXRpb24pO3RoaXMuYWRkTWFya2VyKCJzdGFydCIsCkUoYy5tYXJrZXIsYy5zdGFydE1hcmtlciksYik7dGhpcy5hZGRNYXJrZXIoImVuZCIsRShjLm1hcmtlcixjLmVuZE1hcmtlciksYil9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmdyYXBoaWNzJiYocCh0aGlzLmdyYXBoaWNzLGZ1bmN0aW9uKGEpe2EuZGVzdHJveSgpfSksZGVsZXRlIHRoaXMuZ3JhcGhpY3MpfX07Yi5wcm90b3R5cGU9e2FsZ29yaXRobXM6QSxpbml0OmZ1bmN0aW9uKGEpe3RoaXMuY2hhcnQ9YTt0aGlzLmNvbm5lY3Rpb25zPVtdO20oYSwicmVkcmF3IixmdW5jdGlvbigpe3RoaXMucGF0aGZpbmRlci51cGRhdGUoKX0pfSx1cGRhdGU6ZnVuY3Rpb24oYSl7dmFyIGQ9dGhpcy5jaGFydCxiPXRoaXMsZT1iLmNvbm5lY3Rpb25zO2IuY29ubmVjdGlvbnM9W107ZC5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihhKXthLnZpc2libGUmJiFhLm9wdGlvbnMuaXNJbnRlcm5hbCYmYS5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgaCxlPWEub3B0aW9ucyYmYS5vcHRpb25zLmNvbm5lY3QmJgp3KGEub3B0aW9ucy5jb25uZWN0KTthLnZpc2libGUmJiExIT09YS5pc0luc2lkZSYmZSYmZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2g9ZC5nZXQoInN0cmluZyI9PT10eXBlb2YgZT9lOmUudG8pO2ggaW5zdGFuY2VvZiB6JiZoLnNlcmllcy52aXNpYmxlJiZoLnZpc2libGUmJiExIT09aC5pc0luc2lkZSYmYi5jb25uZWN0aW9ucy5wdXNoKG5ldyBrKGEsaCwic3RyaW5nIj09PXR5cGVvZiBlP3t9OmUpKX0pfSl9KTtmb3IodmFyIGY9MCxjLGgsbj1lLmxlbmd0aCxnPWIuY29ubmVjdGlvbnMubGVuZ3RoO2Y8bjsrK2Ype2g9ITE7Zm9yKGM9MDtjPGc7KytjKWlmKGVbZl0uZnJvbVBvaW50PT09Yi5jb25uZWN0aW9uc1tjXS5mcm9tUG9pbnQmJmVbZl0udG9Qb2ludD09PWIuY29ubmVjdGlvbnNbY10udG9Qb2ludCl7Yi5jb25uZWN0aW9uc1tjXS5ncmFwaGljcz1lW2ZdLmdyYXBoaWNzO2g9ITA7YnJlYWt9aHx8ZVtmXS5kZXN0cm95KCl9ZGVsZXRlIHRoaXMuY2hhcnRPYnN0YWNsZXM7ZGVsZXRlIHRoaXMubGluZU9ic3RhY2xlczsKYi5yZW5kZXJDb25uZWN0aW9ucyhhKX0scmVuZGVyQ29ubmVjdGlvbnM6ZnVuY3Rpb24oYSl7YT90aGlzLmNoYXJ0LnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBkPWZ1bmN0aW9uKCl7dmFyIGQ9YS5jaGFydC5wYXRoZmluZGVyOyhkJiZkLmNvbm5lY3Rpb25zfHxbXSkuZm9yRWFjaChmdW5jdGlvbihkKXtkLmZyb21Qb2ludCYmZC5mcm9tUG9pbnQuc2VyaWVzPT09YSYmZC5yZW5kZXIoKX0pO2EucGF0aGZpbmRlclJlbW92ZVJlbmRlckV2ZW50JiYoYS5wYXRoZmluZGVyUmVtb3ZlUmVuZGVyRXZlbnQoKSxkZWxldGUgYS5wYXRoZmluZGVyUmVtb3ZlUmVuZGVyRXZlbnQpfTshMT09PWEub3B0aW9ucy5hbmltYXRpb24/ZCgpOmEucGF0aGZpbmRlclJlbW92ZVJlbmRlckV2ZW50PW0oYSwiYWZ0ZXJBbmltYXRlIixkKX0pOnRoaXMuY29ubmVjdGlvbnMuZm9yRWFjaChmdW5jdGlvbihhKXthLnJlbmRlcigpfSl9LGdldENoYXJ0T2JzdGFjbGVzOmZ1bmN0aW9uKGIpe2Zvcih2YXIgZD0KW10sZT10aGlzLmNoYXJ0LnNlcmllcyxmPWEoYi5hbGdvcml0aG1NYXJnaW4sMCksYyxyPTAsaD1lLmxlbmd0aDtyPGg7KytyKWlmKGVbcl0udmlzaWJsZSYmIWVbcl0ub3B0aW9ucy5pc0ludGVybmFsKWZvcih2YXIgbj0wLGc9ZVtyXS5wb2ludHMubGVuZ3RoLHc7bjxnOysrbil3PWVbcl0ucG9pbnRzW25dLHcudmlzaWJsZSYmKHc9RCh3KSkmJmQucHVzaCh7eE1pbjp3LnhNaW4tZix4TWF4OncueE1heCtmLHlNaW46dy55TWluLWYseU1heDp3LnlNYXgrZn0pO2Q9ZC5zb3J0KGZ1bmN0aW9uKGEsZCl7cmV0dXJuIGEueE1pbi1kLnhNaW59KTt0KGIuYWxnb3JpdGhtTWFyZ2luKXx8KGM9Yi5hbGdvcml0aG1NYXJnaW49eShkKSxkLmZvckVhY2goZnVuY3Rpb24oYSl7YS54TWluLT1jO2EueE1heCs9YzthLnlNaW4tPWM7YS55TWF4Kz1jfSkpO3JldHVybiBkfSxnZXRPYnN0YWNsZU1ldHJpY3M6ZnVuY3Rpb24oYSl7Zm9yKHZhciBkPTAsYj0wLGUsZixjPWEubGVuZ3RoO2MtLTspZT1hW2NdLnhNYXgtCmFbY10ueE1pbixmPWFbY10ueU1heC1hW2NdLnlNaW4sZDxlJiYoZD1lKSxiPGYmJihiPWYpO3JldHVybnttYXhIZWlnaHQ6YixtYXhXaWR0aDpkfX0sZ2V0QWxnb3JpdGhtU3RhcnREaXJlY3Rpb246ZnVuY3Rpb24oYSl7dmFyIGQ9InRvcCIhPT1hLnZlcnRpY2FsQWxpZ24mJiJib3R0b20iIT09YS52ZXJ0aWNhbEFsaWduO3JldHVybiJsZWZ0IiE9PWEuYWxpZ24mJiJyaWdodCIhPT1hLmFsaWduP2Q/dm9pZCAwOiExOmQ/ITA6dm9pZCAwfX07bC5Db25uZWN0aW9uPWs7bC5QYXRoZmluZGVyPWI7SSh6LnByb3RvdHlwZSx7Z2V0UGF0aGZpbmRlckFuY2hvclBvaW50OmZ1bmN0aW9uKGEpe3ZhciBkPUQodGhpcyk7c3dpdGNoKGEuYWxpZ24pe2Nhc2UgInJpZ2h0Ijp2YXIgYj0ieE1heCI7YnJlYWs7Y2FzZSAibGVmdCI6Yj0ieE1pbiJ9c3dpdGNoKGEudmVydGljYWxBbGlnbil7Y2FzZSAidG9wIjp2YXIgZT0ieU1pbiI7YnJlYWs7Y2FzZSAiYm90dG9tIjplPSJ5TWF4In1yZXR1cm57eDpiPwpkW2JdOihkLnhNaW4rZC54TWF4KS8yLHk6ZT9kW2VdOihkLnlNaW4rZC55TWF4KS8yfX0sZ2V0UmFkaWFuc1RvVmVjdG9yOmZ1bmN0aW9uKGEsZCl7dmFyIGI7dChkKXx8KGI9RCh0aGlzKSkmJihkPXt4OihiLnhNaW4rYi54TWF4KS8yLHk6KGIueU1pbitiLnlNYXgpLzJ9KTtyZXR1cm4gTWF0aC5hdGFuMihkLnktYS55LGEueC1kLngpfSxnZXRNYXJrZXJWZWN0b3I6ZnVuY3Rpb24oYSxkLGIpe3ZhciBlPTIqTWF0aC5QSSxmPUQodGhpcyksYz1mLnhNYXgtZi54TWluLGg9Zi55TWF4LWYueU1pbixuPU1hdGguYXRhbjIoaCxjKSxnPSExO2MvPTI7dmFyIHc9aC8yLHE9Zi54TWluK2M7Zj1mLnlNaW4rdztmb3IodmFyIGs9cSx2PWYscD17fSxtPTEsdD0xO2E8LU1hdGguUEk7KWErPWU7Zm9yKDthPk1hdGguUEk7KWEtPWU7ZT1NYXRoLnRhbihhKTthPi1uJiZhPD1uPyh0PS0xLGc9ITApOmE+biYmYTw9TWF0aC5QSS1uP3Q9LTE6YT5NYXRoLlBJLW58fGE8PS0oTWF0aC5QSS1uKT8obT0KLTEsZz0hMCk6bT0tMTtnPyhrKz1tKmMsdis9dCpjKmUpOihrKz1oLygyKmUpKm0sdis9dCp3KTtiLnghPT1xJiYoaz1iLngpO2IueSE9PWYmJih2PWIueSk7cC54PWsrZCpNYXRoLmNvcyhhKTtwLnk9di1kKk1hdGguc2luKGEpO3JldHVybiBwfX0pO2MucHJvdG90eXBlLmNhbGxiYWNrcy5wdXNoKGZ1bmN0aW9uKGEpeyExIT09YS5vcHRpb25zLmNvbm5lY3RvcnMuZW5hYmxlZCYmKGcoYSksdGhpcy5wYXRoZmluZGVyPW5ldyBiKHRoaXMpLHRoaXMucGF0aGZpbmRlci51cGRhdGUoITApKX0pfSk7SihjLCJtb2R1bGVzL3hyYW5nZS5zcmMuanMiLFtjWyJwYXJ0cy9BeGlzLmpzIl0sY1sicGFydHMvR2xvYmFscy5qcyJdLGNbInBhcnRzL0NvbG9yLmpzIl0sY1sicGFydHMvUG9pbnQuanMiXSxjWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYyxsLHUseix4KXt2YXIgQT11LnBhcnNlO3U9eC5hZGRFdmVudDt2YXIgRD14LmNsYW1wLHk9eC5jb3JyZWN0RmxvYXQsaz14LmRlZmluZWQsCmI9eC5maW5kLGc9eC5pc051bWJlcixtPXguaXNPYmplY3QsdD14Lm1lcmdlLEg9eC5waWNrO3g9eC5zZXJpZXNUeXBlO3ZhciBJPWwuc2VyaWVzVHlwZXMuY29sdW1uLEU9bC5zZXJpZXNUeXBlcyxwPWwuU2VyaWVzO3goInhyYW5nZSIsImNvbHVtbiIse2NvbG9yQnlQb2ludDohMCxkYXRhTGFiZWxzOntmb3JtYXR0ZXI6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnBvaW50LnBhcnRpYWxGaWxsO20oYSkmJihhPWEuYW1vdW50KTtpZihnKGEpJiYwPGEpcmV0dXJuIHkoMTAwKmEpKyIlIn0saW5zaWRlOiEwLHZlcnRpY2FsQWxpZ246Im1pZGRsZSJ9LHRvb2x0aXA6e2hlYWRlckZvcm1hdDonPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBweCI+e3BvaW50Lnh9IC0ge3BvaW50LngyfTwvc3Bhbj48YnIvPicscG9pbnRGb3JtYXQ6JzxzcGFuIHN0eWxlPSJjb2xvcjp7cG9pbnQuY29sb3J9Ij5cdTI1Y2Y8L3NwYW4+IHtzZXJpZXMubmFtZX06IDxiPntwb2ludC55Q2F0ZWdvcnl9PC9iPjxici8+J30sCmJvcmRlclJhZGl1czozLHBvaW50UmFuZ2U6MH0se3R5cGU6InhyYW5nZSIscGFyYWxsZWxBcnJheXM6WyJ4IiwieDIiLCJ5Il0scmVxdWlyZVNvcnRpbmc6ITEsYW5pbWF0ZTpFLmxpbmUucHJvdG90eXBlLmFuaW1hdGUsY3JvcFNob3VsZGVyOjEsZ2V0RXh0cmVtZXNGcm9tQWxsOiEwLGF1dG9JbmNyZW1lbnQ6bC5ub29wLGJ1aWxkS0RUcmVlOmwubm9vcCxpbml0OmZ1bmN0aW9uKCl7RS5jb2x1bW4ucHJvdG90eXBlLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMub3B0aW9ucy5zdGFja2luZz12b2lkIDB9LGdldENvbHVtbk1ldHJpY3M6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7Yi5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLnhBeGlzO2EueEF4aXM9YS55QXhpczthLnlBeGlzPWJ9KX12YXIgYj10aGlzLmNoYXJ0O2EoKTt2YXIgZT1JLnByb3RvdHlwZS5nZXRDb2x1bW5NZXRyaWNzLmNhbGwodGhpcyk7YSgpO3JldHVybiBlfSxjcm9wRGF0YTpmdW5jdGlvbihhLApiLGUsYyl7Yj1wLnByb3RvdHlwZS5jcm9wRGF0YS5jYWxsKHRoaXMsdGhpcy54MkRhdGEsYixlLGMpO2IueERhdGE9YS5zbGljZShiLnN0YXJ0LGIuZW5kKTtyZXR1cm4gYn0sZmluZFBvaW50SW5kZXg6ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5jcm9wcGVkLGU9dGhpcy5jcm9wU3RhcnQsaz10aGlzLnBvaW50cyxxPWEuaWQ7aWYocSl2YXIgZj0oZj1iKGssZnVuY3Rpb24oYSl7cmV0dXJuIGEuaWQ9PT1xfSkpP2YuaW5kZXg6dm9pZCAwOyJ1bmRlZmluZWQiPT09dHlwZW9mIGYmJihmPShmPWIoayxmdW5jdGlvbihkKXtyZXR1cm4gZC54PT09YS54JiZkLngyPT09YS54MiYmIWQudG91Y2hlZH0pKT9mLmluZGV4OnZvaWQgMCk7YyYmZyhmKSYmZyhlKSYmZj49ZSYmKGYtPWUpO3JldHVybiBmfSx0cmFuc2xhdGVQb2ludDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnhBeGlzLGU9dGhpcy55QXhpcyxjPXRoaXMuY29sdW1uTWV0cmljcyxxPXRoaXMub3B0aW9ucyxmPXEubWluUG9pbnRMZW5ndGh8fAowLGQ9YS5wbG90WCx2PUgoYS54MixhLngrKGEubGVufHwwKSkscD1iLnRyYW5zbGF0ZSh2LDAsMCwwLDEpO3Y9TWF0aC5hYnMocC1kKTt2YXIgQj10aGlzLmNoYXJ0LmludmVydGVkLHI9SChxLmJvcmRlcldpZHRoLDEpJTIvMixoPWMub2Zmc2V0LG49TWF0aC5yb3VuZChjLndpZHRoKTtmJiYoZi09diwwPmYmJihmPTApLGQtPWYvMixwKz1mLzIpO2Q9TWF0aC5tYXgoZCwtMTApO3A9RChwLC0xMCxiLmxlbisxMCk7ayhhLm9wdGlvbnMucG9pbnRXaWR0aCkmJihoLT0oTWF0aC5jZWlsKGEub3B0aW9ucy5wb2ludFdpZHRoKS1uKS8yLG49TWF0aC5jZWlsKGEub3B0aW9ucy5wb2ludFdpZHRoKSk7cS5wb2ludFBsYWNlbWVudCYmZyhhLnBsb3RZKSYmZS5jYXRlZ29yaWVzJiYoYS5wbG90WT1lLnRyYW5zbGF0ZShhLnksMCwxLDAsMSxxLnBvaW50UGxhY2VtZW50KSk7YS5zaGFwZUFyZ3M9e3g6TWF0aC5mbG9vcihNYXRoLm1pbihkLHApKStyLHk6TWF0aC5mbG9vcihhLnBsb3RZK2gpK3IsCndpZHRoOk1hdGgucm91bmQoTWF0aC5hYnMocC1kKSksaGVpZ2h0Om4scjp0aGlzLm9wdGlvbnMuYm9yZGVyUmFkaXVzfTtxPWEuc2hhcGVBcmdzLng7Zj1xK2Euc2hhcGVBcmdzLndpZHRoOzA+cXx8Zj5iLmxlbj8ocT1EKHEsMCxiLmxlbiksZj1EKGYsMCxiLmxlbikscD1mLXEsYS5kbEJveD10KGEuc2hhcGVBcmdzLHt4OnEsd2lkdGg6Zi1xLGNlbnRlclg6cD9wLzI6bnVsbH0pKTphLmRsQm94PW51bGw7cT1hLnRvb2x0aXBQb3M7Zj1CPzE6MDtwPUI/MDoxO2M9dGhpcy5jb2x1bW5NZXRyaWNzP3RoaXMuY29sdW1uTWV0cmljcy5vZmZzZXQ6LWMud2lkdGgvMjtxW2ZdPUQocVtmXSt2LzIqKGIucmV2ZXJzZWQ/LTE6MSkqKEI/LTE6MSksMCxiLmxlbi0xKTtxW3BdPUQocVtwXSsoQj8tMToxKSpjLDAsZS5sZW4tMSk7aWYoYz1hLnBhcnRpYWxGaWxsKW0oYykmJihjPWMuYW1vdW50KSxnKGMpfHwoYz0wKSxlPWEuc2hhcGVBcmdzLGEucGFydFNoYXBlQXJncz17eDplLngseTplLnksd2lkdGg6ZS53aWR0aCwKaGVpZ2h0OmUuaGVpZ2h0LHI6dGhpcy5vcHRpb25zLmJvcmRlclJhZGl1c30sZD1NYXRoLm1heChNYXRoLnJvdW5kKHYqYythLnBsb3RYLWQpLDApLGEuY2xpcFJlY3RBcmdzPXt4OmIucmV2ZXJzZWQ/ZS54K3YtZDplLngseTplLnksd2lkdGg6ZCxoZWlnaHQ6ZS5oZWlnaHR9fSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXtJLnByb3RvdHlwZS50cmFuc2xhdGUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYSl7dGhpcy50cmFuc2xhdGVQb2ludChhKX0sdGhpcyl9LGRyYXdQb2ludDpmdW5jdGlvbihhLGIpe3ZhciBlPXRoaXMub3B0aW9ucyxjPXRoaXMuY2hhcnQucmVuZGVyZXIsZz1hLmdyYXBoaWMsZj1hLnNoYXBlVHlwZSxkPWEuc2hhcGVBcmdzLHc9YS5wYXJ0U2hhcGVBcmdzLGs9YS5jbGlwUmVjdEFyZ3MscD1hLnBhcnRpYWxGaWxsLHI9ZS5zdGFja2luZyYmIWUuYm9yZGVyUmFkaXVzLGg9YS5zdGF0ZSxuPWUuc3RhdGVzW2h8fCJub3JtYWwiXXx8Cnt9LEY9InVuZGVmaW5lZCI9PT10eXBlb2YgaD8iYXR0ciI6YjtoPXRoaXMucG9pbnRBdHRyaWJzKGEsaCk7bj1IKHRoaXMuY2hhcnQub3B0aW9ucy5jaGFydC5hbmltYXRpb24sbi5hbmltYXRpb24pO2lmKGEuaXNOdWxsfHwhMT09PWEudmlzaWJsZSlnJiYoYS5ncmFwaGljPWcuZGVzdHJveSgpKTtlbHNle2lmKGcpZy5yZWN0W2JdKGQpO2Vsc2UgYS5ncmFwaGljPWc9Yy5nKCJwb2ludCIpLmFkZENsYXNzKGEuZ2V0Q2xhc3NOYW1lKCkpLmFkZChhLmdyb3VwfHx0aGlzLmdyb3VwKSxnLnJlY3Q9Y1tmXSh0KGQpKS5hZGRDbGFzcyhhLmdldENsYXNzTmFtZSgpKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1wYXJ0ZmlsbC1vcmlnaW5hbCIpLmFkZChnKTt3JiYoZy5wYXJ0UmVjdD8oZy5wYXJ0UmVjdFtiXSh0KHcpKSxnLnBhcnRpYWxDbGlwUmVjdFtiXSh0KGspKSk6KGcucGFydGlhbENsaXBSZWN0PWMuY2xpcFJlY3Qoay54LGsueSxrLndpZHRoLGsuaGVpZ2h0KSxnLnBhcnRSZWN0PWNbZl0odykuYWRkQ2xhc3MoImhpZ2hjaGFydHMtcGFydGZpbGwtb3ZlcmxheSIpLmFkZChnKS5jbGlwKGcucGFydGlhbENsaXBSZWN0KSkpOwp0aGlzLmNoYXJ0LnN0eWxlZE1vZGV8fChnLnJlY3RbYl0oaCxuKS5zaGFkb3coZS5zaGFkb3csbnVsbCxyKSx3JiYobShwKXx8KHA9e30pLG0oZS5wYXJ0aWFsRmlsbCkmJihwPXQocCxlLnBhcnRpYWxGaWxsKSksYT1wLmZpbGx8fEEoaC5maWxsKS5icmlnaHRlbigtLjMpLmdldCgpfHxBKGEuY29sb3J8fHRoaXMuY29sb3IpLmJyaWdodGVuKC0uMykuZ2V0KCksaC5maWxsPWEsZy5wYXJ0UmVjdFtGXShoLG4pLnNoYWRvdyhlLnNoYWRvdyxudWxsLHIpKSl9fSxkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPWEuZ2V0QW5pbWF0aW9uVmVyYigpO2EucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oZSl7YS5kcmF3UG9pbnQoZSxiKX0pfSxnZXRBbmltYXRpb25WZXJiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hhcnQucG9pbnRDb3VudDwodGhpcy5vcHRpb25zLmFuaW1hdGlvbkxpbWl0fHwyNTApPyJhbmltYXRlIjoiYXR0ciJ9fSx7cmVzb2x2ZUNvbG9yOmZ1bmN0aW9uKCl7dmFyIGE9CnRoaXMuc2VyaWVzO2lmKGEub3B0aW9ucy5jb2xvckJ5UG9pbnQmJiF0aGlzLm9wdGlvbnMuY29sb3Ipe3ZhciBiPWEub3B0aW9ucy5jb2xvcnN8fGEuY2hhcnQub3B0aW9ucy5jb2xvcnM7dmFyIGU9dGhpcy55JShiP2IubGVuZ3RoOmEuY2hhcnQub3B0aW9ucy5jaGFydC5jb2xvckNvdW50KTtiPWImJmJbZV07YS5jaGFydC5zdHlsZWRNb2RlfHwodGhpcy5jb2xvcj1iKTt0aGlzLm9wdGlvbnMuY29sb3JJbmRleHx8KHRoaXMuY29sb3JJbmRleD1lKX1lbHNlIHRoaXMuY29sb3J8fCh0aGlzLmNvbG9yPWEuY29sb3IpfSxpbml0OmZ1bmN0aW9uKCl7ei5wcm90b3R5cGUuaW5pdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy55fHwodGhpcy55PTApO3JldHVybiB0aGlzfSxzZXRTdGF0ZTpmdW5jdGlvbigpe3oucHJvdG90eXBlLnNldFN0YXRlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnNlcmllcy5kcmF3UG9pbnQodGhpcyx0aGlzLnNlcmllcy5nZXRBbmltYXRpb25WZXJiKCkpfSwKZ2V0TGFiZWxDb25maWc6ZnVuY3Rpb24oKXt2YXIgYT16LnByb3RvdHlwZS5nZXRMYWJlbENvbmZpZy5jYWxsKHRoaXMpLGI9dGhpcy5zZXJpZXMueUF4aXMuY2F0ZWdvcmllczthLngyPXRoaXMueDI7YS55Q2F0ZWdvcnk9dGhpcy55Q2F0ZWdvcnk9YiYmYlt0aGlzLnldO3JldHVybiBhfSx0b29sdGlwRGF0ZUtleXM6WyJ4IiwieDIiXSxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIm51bWJlciI9PT10eXBlb2YgdGhpcy54JiYibnVtYmVyIj09PXR5cGVvZiB0aGlzLngyfX0pO3UoYywiYWZ0ZXJHZXRTZXJpZXNFeHRyZW1lcyIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLnNlcmllcyxiO2lmKHRoaXMuaXNYQXhpcyl7dmFyIGU9SCh0aGlzLmRhdGFNYXgsLU51bWJlci5NQVhfVkFMVUUpO2EuZm9yRWFjaChmdW5jdGlvbihhKXthLngyRGF0YSYmYS54MkRhdGEuZm9yRWFjaChmdW5jdGlvbihhKXthPmUmJihlPWEsYj0hMCl9KX0pO2ImJih0aGlzLmRhdGFNYXg9ZSl9fSk7IiJ9KTtKKGMsCiJwYXJ0cy1nYW50dC9HYW50dFNlcmllcy5qcyIsW2NbInBhcnRzL0dsb2JhbHMuanMiXSxjWyJwYXJ0cy9PcHRpb25zLmpzIl0sY1sicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGMsbCx1KXt2YXIgej1sLmRhdGVGb3JtYXQseD11LmlzTnVtYmVyLEE9dS5tZXJnZSxEPXUucGljaztsPXUuc2VyaWVzVHlwZTt2YXIgeT11LnNwbGF0LGs9Yy5zZXJpZXNUeXBlcy54cmFuZ2U7bCgiZ2FudHQiLCJ4cmFuZ2UiLHtncm91cGluZzohMSxkYXRhTGFiZWxzOntlbmFibGVkOiEwfSx0b29sdGlwOntoZWFkZXJGb3JtYXQ6JzxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHgiPntzZXJpZXMubmFtZX08L3NwYW4+PGJyLz4nLHBvaW50Rm9ybWF0Om51bGwscG9pbnRGb3JtYXR0ZXI6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLnNlcmllcyxjPWIuY2hhcnQudG9vbHRpcCxrPWIueEF4aXMsdD1iLnRvb2x0aXBPcHRpb25zLmRhdGVUaW1lTGFiZWxGb3JtYXRzLGw9ay5vcHRpb25zLnN0YXJ0T2ZXZWVrLAp4PWIudG9vbHRpcE9wdGlvbnMsdT14LnhEYXRlRm9ybWF0O2I9dGhpcy5vcHRpb25zLm1pbGVzdG9uZTt2YXIgcD0iPGI+IisodGhpcy5uYW1lfHx0aGlzLnlDYXRlZ29yeSkrIjwvYj4iO2lmKHgucG9pbnRGb3JtYXQpcmV0dXJuIHRoaXMudG9vbHRpcEZvcm1hdHRlcih4LnBvaW50Rm9ybWF0KTt1fHwodT15KGMuZ2V0RGF0ZUZvcm1hdChrLmNsb3Nlc3RQb2ludFJhbmdlLHRoaXMuc3RhcnQsbCx0KSlbMF0pO2M9eih1LHRoaXMuc3RhcnQpO2s9eih1LHRoaXMuZW5kKTtwKz0iPGJyLz4iO3JldHVybiBiP3ArKGMrIjxici8+Iik6cCsoIlN0YXJ0OiAiK2MrIjxici8+RW5kOiAiKSsoaysiPGJyLz4iKX19LGNvbm5lY3RvcnM6e3R5cGU6InNpbXBsZUNvbm5lY3QiLGFuaW1hdGlvbjp7cmV2ZXJzZWQ6ITB9LHN0YXJ0TWFya2VyOntlbmFibGVkOiEwLHN5bWJvbDoiYXJyb3ctZmlsbGVkIixyYWRpdXM6NCxmaWxsOiIjZmEwIixhbGlnbjoibGVmdCJ9LGVuZE1hcmtlcjp7ZW5hYmxlZDohMSwKYWxpZ246InJpZ2h0In19fSx7cG9pbnRBcnJheU1hcDpbInN0YXJ0IiwiZW5kIiwieSJdLGtleWJvYXJkTW92ZVZlcnRpY2FsOiExLHRyYW5zbGF0ZVBvaW50OmZ1bmN0aW9uKGIpe2sucHJvdG90eXBlLnRyYW5zbGF0ZVBvaW50LmNhbGwodGhpcyxiKTtpZihiLm9wdGlvbnMubWlsZXN0b25lKXt2YXIgYz1iLnNoYXBlQXJnczt2YXIgbT1jLmhlaWdodDtiLnNoYXBlQXJncz17eDpjLngtbS8yLHk6Yy55LHdpZHRoOm0saGVpZ2h0Om19fX0sZHJhd1BvaW50OmZ1bmN0aW9uKGIsYyl7dmFyIGc9dGhpcy5vcHRpb25zLHQ9dGhpcy5jaGFydC5yZW5kZXJlcixsPWIuc2hhcGVBcmdzLHU9Yi5wbG90WSx5PWIuZ3JhcGhpYyxwPWIuc2VsZWN0ZWQmJiJzZWxlY3QiLGE9Zy5zdGFja2luZyYmIWcuYm9yZGVyUmFkaXVzO2lmKGIub3B0aW9ucy5taWxlc3RvbmUpaWYoeCh1KSYmbnVsbCE9PWIueSYmITEhPT1iLnZpc2libGUpe2w9dC5zeW1ib2xzLmRpYW1vbmQobC54LGwueSxsLndpZHRoLGwuaGVpZ2h0KTsKaWYoeSl5W2NdKHtkOmx9KTtlbHNlIGIuZ3JhcGhpYz10LnBhdGgobCkuYWRkQ2xhc3MoYi5nZXRDbGFzc05hbWUoKSwhMCkuYWRkKGIuZ3JvdXB8fHRoaXMuZ3JvdXApO3RoaXMuY2hhcnQuc3R5bGVkTW9kZXx8Yi5ncmFwaGljLmF0dHIodGhpcy5wb2ludEF0dHJpYnMoYixwKSkuc2hhZG93KGcuc2hhZG93LG51bGwsYSl9ZWxzZSB5JiYoYi5ncmFwaGljPXkuZGVzdHJveSgpKTtlbHNlIGsucHJvdG90eXBlLmRyYXdQb2ludC5jYWxsKHRoaXMsYixjKX0sc2V0RGF0YTpjLlNlcmllcy5wcm90b3R5cGUuc2V0RGF0YSxzZXRHYW50dFBvaW50QWxpYXNlczpmdW5jdGlvbihiKXtmdW5jdGlvbiBjKGMsZyl7InVuZGVmaW5lZCIhPT10eXBlb2YgZyYmKGJbY109Zyl9YygieCIsRChiLnN0YXJ0LGIueCkpO2MoIngyIixEKGIuZW5kLGIueDIpKTtjKCJwYXJ0aWFsRmlsbCIsRChiLmNvbXBsZXRlZCxiLnBhcnRpYWxGaWxsKSk7YygiY29ubmVjdCIsRChiLmRlcGVuZGVuY3ksYi5jb25uZWN0KSl9fSwKQShrLnByb3RvdHlwZS5wb2ludENsYXNzLnByb3RvdHlwZSx7YXBwbHlPcHRpb25zOmZ1bmN0aW9uKGIsZyl7Yj1BKGIpO2Muc2VyaWVzVHlwZXMuZ2FudHQucHJvdG90eXBlLnNldEdhbnR0UG9pbnRBbGlhc2VzKGIpO3JldHVybiBiPWsucHJvdG90eXBlLnBvaW50Q2xhc3MucHJvdG90eXBlLmFwcGx5T3B0aW9ucy5jYWxsKHRoaXMsYixnKX0saXNWYWxpZDpmdW5jdGlvbigpe3JldHVybigibnVtYmVyIj09PXR5cGVvZiB0aGlzLnN0YXJ0fHwibnVtYmVyIj09PXR5cGVvZiB0aGlzLngpJiYoIm51bWJlciI9PT10eXBlb2YgdGhpcy5lbmR8fCJudW1iZXIiPT09dHlwZW9mIHRoaXMueDJ8fHRoaXMubWlsZXN0b25lKX19KSk7IiJ9KTtKKGMsInBhcnRzLWdhbnR0L0dhbnR0Q2hhcnQuanMiLFtjWyJwYXJ0cy9DaGFydC5qcyJdLGNbInBhcnRzL0dsb2JhbHMuanMiXSxjWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYyxsLHUpe3ZhciB6PXUuZ2V0T3B0aW9ucyx4PXUuaXNBcnJheSwKQT11Lm1lcmdlLEQ9dS5zcGxhdDtsLmdhbnR0Q2hhcnQ9ZnVuY3Rpb24odSxrLGIpe3ZhciBnPSJzdHJpbmciPT09dHlwZW9mIHV8fHUubm9kZU5hbWUsbT1rLnNlcmllcyx0PXooKSx5LEk9aztrPWFyZ3VtZW50c1tnPzE6MF07eChrLnhBeGlzKXx8KGsueEF4aXM9W2sueEF4aXN8fHt9LHt9XSk7ay54QXhpcz1rLnhBeGlzLm1hcChmdW5jdGlvbihiLGMpezE9PT1jJiYoeT0wKTtyZXR1cm4gQSh0LnhBeGlzLHtncmlkOntlbmFibGVkOiEwfSxvcHBvc2l0ZTohMCxsaW5rZWRUbzp5fSxiLHt0eXBlOiJkYXRldGltZSJ9KX0pO2sueUF4aXM9RChrLnlBeGlzfHx7fSkubWFwKGZ1bmN0aW9uKGIpe3JldHVybiBBKHQueUF4aXMse2dyaWQ6e2VuYWJsZWQ6ITB9LHN0YXRpY1NjYWxlOjUwLHJldmVyc2VkOiEwLHR5cGU6Yi5jYXRlZ29yaWVzP2IudHlwZToidHJlZWdyaWQifSxiKX0pO2suc2VyaWVzPW51bGw7az1BKCEwLHtjaGFydDp7dHlwZToiZ2FudHQifSx0aXRsZTp7dGV4dDpudWxsfSwKbGVnZW5kOntlbmFibGVkOiExfX0sayx7aXNHYW50dDohMH0pO2suc2VyaWVzPUkuc2VyaWVzPW07KGsuc2VyaWVzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihiKXtiLmRhdGEmJmIuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2wuc2VyaWVzVHlwZXMuZ2FudHQucHJvdG90eXBlLnNldEdhbnR0UG9pbnRBbGlhc2VzKGIpfSl9KTtyZXR1cm4gZz9uZXcgYyh1LGssYik6bmV3IGMoayxrKX19KTtKKGMsInBhcnRzL1Njcm9sbGJhckF4aXMuanMiLFtjWyJwYXJ0cy9HbG9iYWxzLmpzIl0sY1sicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGMsbCl7dmFyIHU9bC5hZGRFdmVudCx6PWwuZGVmaW5lZCx4PWwucGljaztyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBsKCl7fWwuY29tcG9zZT1mdW5jdGlvbihsLHkpe3UobCwiYWZ0ZXJJbml0IixmdW5jdGlvbigpe3ZhciBrPXRoaXM7ay5vcHRpb25zJiZrLm9wdGlvbnMuc2Nyb2xsYmFyJiZrLm9wdGlvbnMuc2Nyb2xsYmFyLmVuYWJsZWQmJgooay5vcHRpb25zLnNjcm9sbGJhci52ZXJ0aWNhbD0hay5ob3JpeixrLm9wdGlvbnMuc3RhcnRPblRpY2s9ay5vcHRpb25zLmVuZE9uVGljaz0hMSxrLnNjcm9sbGJhcj1uZXcgeShrLmNoYXJ0LnJlbmRlcmVyLGsub3B0aW9ucy5zY3JvbGxiYXIsay5jaGFydCksdShrLnNjcm9sbGJhciwiY2hhbmdlZCIsZnVuY3Rpb24oYil7dmFyIGc9eChrLm9wdGlvbnMmJmsub3B0aW9ucy5taW4say5taW4pLG09eChrLm9wdGlvbnMmJmsub3B0aW9ucy5tYXgsay5tYXgpLGw9eihrLmRhdGFNaW4pP01hdGgubWluKGcsay5taW4say5kYXRhTWluKTpnLHU9KHooay5kYXRhTWF4KT9NYXRoLm1heChtLGsubWF4LGsuZGF0YU1heCk6bSktbDt6KGcpJiZ6KG0pJiYoay5ob3JpeiYmIWsucmV2ZXJzZWR8fCFrLmhvcml6JiZrLnJldmVyc2VkPyhnPWwrdSp0aGlzLnRvLGwrPXUqdGhpcy5mcm9tKTooZz1sK3UqKDEtdGhpcy5mcm9tKSxsKz11KigxLXRoaXMudG8pKSx4KHRoaXMub3B0aW9ucy5saXZlUmVkcmF3LApjLnN2ZyYmIWMuaXNUb3VjaERldmljZSYmIXRoaXMuY2hhcnQuaXNCb29zdGluZyl8fCJtb3VzZXVwIj09PWIuRE9NVHlwZXx8IXooYi5ET01UeXBlKT9rLnNldEV4dHJlbWVzKGwsZywhMCwibW91c2Vtb3ZlIiE9PWIuRE9NVHlwZSxiKTp0aGlzLnNldFJhbmdlKHRoaXMuZnJvbSx0aGlzLnRvKSl9KSl9KTt1KGwsImFmdGVyUmVuZGVyIixmdW5jdGlvbigpe3ZhciBjPU1hdGgubWluKHgodGhpcy5vcHRpb25zLm1pbix0aGlzLm1pbiksdGhpcy5taW4seCh0aGlzLmRhdGFNaW4sdGhpcy5taW4pKSxiPU1hdGgubWF4KHgodGhpcy5vcHRpb25zLm1heCx0aGlzLm1heCksdGhpcy5tYXgseCh0aGlzLmRhdGFNYXgsdGhpcy5tYXgpKSxnPXRoaXMuc2Nyb2xsYmFyLG09dGhpcy5heGlzVGl0bGVNYXJnaW4rKHRoaXMudGl0bGVPZmZzZXR8fDApLGw9dGhpcy5jaGFydC5zY3JvbGxiYXJzT2Zmc2V0cyx1PXRoaXMub3B0aW9ucy5tYXJnaW58fDA7ZyYmKHRoaXMuaG9yaXo/KHRoaXMub3Bwb3NpdGV8fAoobFsxXSs9bSksZy5wb3NpdGlvbih0aGlzLmxlZnQsdGhpcy50b3ArdGhpcy5oZWlnaHQrMitsWzFdLSh0aGlzLm9wcG9zaXRlP3U6MCksdGhpcy53aWR0aCx0aGlzLmhlaWdodCksdGhpcy5vcHBvc2l0ZXx8KGxbMV0rPXUpLG09MSk6KHRoaXMub3Bwb3NpdGUmJihsWzBdKz1tKSxnLnBvc2l0aW9uKHRoaXMubGVmdCt0aGlzLndpZHRoKzIrbFswXS0odGhpcy5vcHBvc2l0ZT8wOnUpLHRoaXMudG9wLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpLHRoaXMub3Bwb3NpdGUmJihsWzBdKz11KSxtPTApLGxbbV0rPWcuc2l6ZStnLm9wdGlvbnMubWFyZ2luLGlzTmFOKGMpfHxpc05hTihiKXx8IXoodGhpcy5taW4pfHwheih0aGlzLm1heCl8fHRoaXMubWluPT09dGhpcy5tYXg/Zy5zZXRSYW5nZSgwLDEpOihsPSh0aGlzLm1pbi1jKS8oYi1jKSxjPSh0aGlzLm1heC1jKS8oYi1jKSx0aGlzLmhvcml6JiYhdGhpcy5yZXZlcnNlZHx8IXRoaXMuaG9yaXomJnRoaXMucmV2ZXJzZWQ/Zy5zZXRSYW5nZShsLApjKTpnLnNldFJhbmdlKDEtYywxLWwpKSl9KTt1KGwsImFmdGVyR2V0T2Zmc2V0IixmdW5jdGlvbigpe3ZhciBjPXRoaXMuaG9yaXo/MjoxLGI9dGhpcy5zY3JvbGxiYXI7YiYmKHRoaXMuY2hhcnQuc2Nyb2xsYmFyc09mZnNldHM9WzAsMF0sdGhpcy5jaGFydC5heGlzT2Zmc2V0W2NdKz1iLnNpemUrYi5vcHRpb25zLm1hcmdpbil9KX07cmV0dXJuIGx9KCl9KTtKKGMsInBhcnRzL1Njcm9sbGJhci5qcyIsW2NbInBhcnRzL0F4aXMuanMiXSxjWyJwYXJ0cy9HbG9iYWxzLmpzIl0sY1sicGFydHMvU2Nyb2xsYmFyQXhpcy5qcyJdLGNbInBhcnRzL1V0aWxpdGllcy5qcyJdLGNbInBhcnRzL09wdGlvbnMuanMiXV0sZnVuY3Rpb24oYyxsLHUseix4KXt2YXIgQT16LmFkZEV2ZW50LEQ9ei5jb3JyZWN0RmxvYXQseT16LmRlZmluZWQsaz16LmRlc3Ryb3lPYmplY3RQcm9wZXJ0aWVzLGI9ei5maXJlRXZlbnQsZz16Lm1lcmdlLG09ei5waWNrLHQ9ei5yZW1vdmVFdmVudDt6PXguZGVmYXVsdE9wdGlvbnM7CnZhciBIPWwuaGFzVG91Y2gsST1sLmlzVG91Y2hEZXZpY2UsRT1sLnN3YXBYWT1mdW5jdGlvbihiLGEpe2EmJmIuZm9yRWFjaChmdW5jdGlvbihhKXtmb3IodmFyIGI9YS5sZW5ndGgsYyxnPTA7ZzxiO2crPTIpYz1hW2crMV0sIm51bWJlciI9PT10eXBlb2YgYyYmKGFbZysxXT1hW2crMl0sYVtnKzJdPWMpfSk7cmV0dXJuIGJ9O3g9ZnVuY3Rpb24oKXtmdW5jdGlvbiBjKGEsYixjKXt0aGlzLl9ldmVudHM9W107dGhpcy5mcm9tPXRoaXMuY2hhcnRZPXRoaXMuY2hhcnRYPTA7dGhpcy5zY3JvbGxiYXI9dGhpcy5ncm91cD12b2lkIDA7dGhpcy5zY3JvbGxiYXJCdXR0b25zPVtdO3RoaXMuc2Nyb2xsYmFyR3JvdXA9dm9pZCAwO3RoaXMuc2Nyb2xsYmFyTGVmdD0wO3RoaXMuc2Nyb2xsYmFyUmlmbGVzPXZvaWQgMDt0aGlzLnNjcm9sbGJhclN0cm9rZVdpZHRoPTE7dGhpcy50bz10aGlzLnNpemU9dGhpcy5zY3JvbGxiYXJUb3A9MDt0aGlzLnRyYWNrPXZvaWQgMDt0aGlzLnRyYWNrQm9yZGVyV2lkdGg9CjE7dGhpcy51c2VyT3B0aW9ucz17fTt0aGlzLnk9dGhpcy54PTA7dGhpcy5jaGFydD1jO3RoaXMub3B0aW9ucz1iO3RoaXMucmVuZGVyZXI9Yy5yZW5kZXJlcjt0aGlzLmluaXQoYSxiLGMpfWMucHJvdG90eXBlLmFkZEV2ZW50cz1mdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucy5pbnZlcnRlZD9bMSwwXTpbMCwxXSxiPXRoaXMuc2Nyb2xsYmFyQnV0dG9ucyxjPXRoaXMuc2Nyb2xsYmFyR3JvdXAuZWxlbWVudCxnPXRoaXMudHJhY2suZWxlbWVudCxrPXRoaXMubW91c2VEb3duSGFuZGxlci5iaW5kKHRoaXMpLGY9dGhpcy5tb3VzZU1vdmVIYW5kbGVyLmJpbmQodGhpcyksZD10aGlzLm1vdXNlVXBIYW5kbGVyLmJpbmQodGhpcyk7YT1bW2JbYVswXV0uZWxlbWVudCwiY2xpY2siLHRoaXMuYnV0dG9uVG9NaW5DbGljay5iaW5kKHRoaXMpXSxbYlthWzFdXS5lbGVtZW50LCJjbGljayIsdGhpcy5idXR0b25Ub01heENsaWNrLmJpbmQodGhpcyldLFtnLCJjbGljayIsdGhpcy50cmFja0NsaWNrLmJpbmQodGhpcyldLApbYywibW91c2Vkb3duIixrXSxbYy5vd25lckRvY3VtZW50LCJtb3VzZW1vdmUiLGZdLFtjLm93bmVyRG9jdW1lbnQsIm1vdXNldXAiLGRdXTtIJiZhLnB1c2goW2MsInRvdWNoc3RhcnQiLGtdLFtjLm93bmVyRG9jdW1lbnQsInRvdWNobW92ZSIsZl0sW2Mub3duZXJEb2N1bWVudCwidG91Y2hlbmQiLGRdKTthLmZvckVhY2goZnVuY3Rpb24oYSl7QS5hcHBseShudWxsLGEpfSk7dGhpcy5fZXZlbnRzPWF9O2MucHJvdG90eXBlLmJ1dHRvblRvTWF4Q2xpY2s9ZnVuY3Rpb24oYSl7dmFyIGM9KHRoaXMudG8tdGhpcy5mcm9tKSptKHRoaXMub3B0aW9ucy5zdGVwLC4yKTt0aGlzLnVwZGF0ZVBvc2l0aW9uKHRoaXMuZnJvbStjLHRoaXMudG8rYyk7Yih0aGlzLCJjaGFuZ2VkIix7ZnJvbTp0aGlzLmZyb20sdG86dGhpcy50byx0cmlnZ2VyOiJzY3JvbGxiYXIiLERPTUV2ZW50OmF9KX07Yy5wcm90b3R5cGUuYnV0dG9uVG9NaW5DbGljaz1mdW5jdGlvbihhKXt2YXIgYz1EKHRoaXMudG8tdGhpcy5mcm9tKSoKbSh0aGlzLm9wdGlvbnMuc3RlcCwuMik7dGhpcy51cGRhdGVQb3NpdGlvbihEKHRoaXMuZnJvbS1jKSxEKHRoaXMudG8tYykpO2IodGhpcywiY2hhbmdlZCIse2Zyb206dGhpcy5mcm9tLHRvOnRoaXMudG8sdHJpZ2dlcjoic2Nyb2xsYmFyIixET01FdmVudDphfSl9O2MucHJvdG90eXBlLmN1cnNvclRvU2Nyb2xsYmFyUG9zaXRpb249ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5vcHRpb25zO2I9Yi5taW5XaWR0aD50aGlzLmNhbGN1bGF0ZWRXaWR0aD9iLm1pbldpZHRoOjA7cmV0dXJue2NoYXJ0WDooYS5jaGFydFgtdGhpcy54LXRoaXMueE9mZnNldCkvKHRoaXMuYmFyV2lkdGgtYiksY2hhcnRZOihhLmNoYXJ0WS10aGlzLnktdGhpcy55T2Zmc2V0KS8odGhpcy5iYXJXaWR0aC1iKX19O2MucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNoYXJ0LnNjcm9sbGVyO3RoaXMucmVtb3ZlRXZlbnRzKCk7WyJ0cmFjayIsInNjcm9sbGJhclJpZmxlcyIsInNjcm9sbGJhciIsCiJzY3JvbGxiYXJHcm91cCIsImdyb3VwIl0uZm9yRWFjaChmdW5jdGlvbihhKXt0aGlzW2FdJiZ0aGlzW2FdLmRlc3Ryb3kmJih0aGlzW2FdPXRoaXNbYV0uZGVzdHJveSgpKX0sdGhpcyk7YSYmdGhpcz09PWEuc2Nyb2xsYmFyJiYoYS5zY3JvbGxiYXI9bnVsbCxrKGEuc2Nyb2xsYmFyQnV0dG9ucykpfTtjLnByb3RvdHlwZS5kcmF3U2Nyb2xsYmFyQnV0dG9uPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMucmVuZGVyZXIsYz10aGlzLnNjcm9sbGJhckJ1dHRvbnMsZz10aGlzLm9wdGlvbnMsaz10aGlzLnNpemU7dmFyIGY9Yi5nKCkuYWRkKHRoaXMuZ3JvdXApO2MucHVzaChmKTtmPWIucmVjdCgpLmFkZENsYXNzKCJoaWdoY2hhcnRzLXNjcm9sbGJhci1idXR0b24iKS5hZGQoZik7dGhpcy5jaGFydC5zdHlsZWRNb2RlfHxmLmF0dHIoe3N0cm9rZTpnLmJ1dHRvbkJvcmRlckNvbG9yLCJzdHJva2Utd2lkdGgiOmcuYnV0dG9uQm9yZGVyV2lkdGgsZmlsbDpnLmJ1dHRvbkJhY2tncm91bmRDb2xvcn0pOwpmLmF0dHIoZi5jcmlzcCh7eDotLjUseTotLjUsd2lkdGg6aysxLGhlaWdodDprKzEscjpnLmJ1dHRvbkJvcmRlclJhZGl1c30sZi5zdHJva2VXaWR0aCgpKSk7Zj1iLnBhdGgoRShbWyJNIixrLzIrKGE/LTE6MSksay8yLTNdLFsiTCIsay8yKyhhPy0xOjEpLGsvMiszXSxbIkwiLGsvMisoYT8yOi0yKSxrLzJdXSxnLnZlcnRpY2FsKSkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtc2Nyb2xsYmFyLWFycm93IikuYWRkKGNbYV0pO3RoaXMuY2hhcnQuc3R5bGVkTW9kZXx8Zi5hdHRyKHtmaWxsOmcuYnV0dG9uQXJyb3dDb2xvcn0pfTtjLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGEsYixlKXt0aGlzLnNjcm9sbGJhckJ1dHRvbnM9W107dGhpcy5yZW5kZXJlcj1hO3RoaXMudXNlck9wdGlvbnM9Yjt0aGlzLm9wdGlvbnM9ZyhjLmRlZmF1bHRPcHRpb25zLGIpO3RoaXMuY2hhcnQ9ZTt0aGlzLnNpemU9bSh0aGlzLm9wdGlvbnMuc2l6ZSx0aGlzLm9wdGlvbnMuaGVpZ2h0KTtiLmVuYWJsZWQmJih0aGlzLnJlbmRlcigpLAp0aGlzLmFkZEV2ZW50cygpKX07Yy5wcm90b3R5cGUubW91c2VEb3duSGFuZGxlcj1mdW5jdGlvbihhKXthPXRoaXMuY2hhcnQucG9pbnRlci5ub3JtYWxpemUoYSk7YT10aGlzLmN1cnNvclRvU2Nyb2xsYmFyUG9zaXRpb24oYSk7dGhpcy5jaGFydFg9YS5jaGFydFg7dGhpcy5jaGFydFk9YS5jaGFydFk7dGhpcy5pbml0UG9zaXRpb25zPVt0aGlzLmZyb20sdGhpcy50b107dGhpcy5ncmFiYmVkQ2VudGVyPSEwfTtjLnByb3RvdHlwZS5tb3VzZU1vdmVIYW5kbGVyPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuY2hhcnQucG9pbnRlci5ub3JtYWxpemUoYSksZT10aGlzLm9wdGlvbnMudmVydGljYWw/ImNoYXJ0WSI6ImNoYXJ0WCIsZz10aGlzLmluaXRQb3NpdGlvbnN8fFtdOyF0aGlzLmdyYWJiZWRDZW50ZXJ8fGEudG91Y2hlcyYmMD09PWEudG91Y2hlc1swXVtlXXx8KGM9dGhpcy5jdXJzb3JUb1Njcm9sbGJhclBvc2l0aW9uKGMpW2VdLGU9dGhpc1tlXSxlPWMtZSx0aGlzLmhhc0RyYWdnZWQ9CiEwLHRoaXMudXBkYXRlUG9zaXRpb24oZ1swXStlLGdbMV0rZSksdGhpcy5oYXNEcmFnZ2VkJiZiKHRoaXMsImNoYW5nZWQiLHtmcm9tOnRoaXMuZnJvbSx0bzp0aGlzLnRvLHRyaWdnZXI6InNjcm9sbGJhciIsRE9NVHlwZTphLnR5cGUsRE9NRXZlbnQ6YX0pKX07Yy5wcm90b3R5cGUubW91c2VVcEhhbmRsZXI9ZnVuY3Rpb24oYSl7dGhpcy5oYXNEcmFnZ2VkJiZiKHRoaXMsImNoYW5nZWQiLHtmcm9tOnRoaXMuZnJvbSx0bzp0aGlzLnRvLHRyaWdnZXI6InNjcm9sbGJhciIsRE9NVHlwZTphLnR5cGUsRE9NRXZlbnQ6YX0pO3RoaXMuZ3JhYmJlZENlbnRlcj10aGlzLmhhc0RyYWdnZWQ9dGhpcy5jaGFydFg9dGhpcy5jaGFydFk9bnVsbH07Yy5wcm90b3R5cGUucG9zaXRpb249ZnVuY3Rpb24oYSxiLGMsZyl7dmFyIGU9dGhpcy5vcHRpb25zLnZlcnRpY2FsLGY9MCxkPXRoaXMucmVuZGVyZWQ/ImFuaW1hdGUiOiJhdHRyIjt0aGlzLng9YTt0aGlzLnk9Yit0aGlzLnRyYWNrQm9yZGVyV2lkdGg7CnRoaXMud2lkdGg9Yzt0aGlzLnhPZmZzZXQ9dGhpcy5oZWlnaHQ9Zzt0aGlzLnlPZmZzZXQ9ZjtlPyh0aGlzLndpZHRoPXRoaXMueU9mZnNldD1jPWY9dGhpcy5zaXplLHRoaXMueE9mZnNldD1iPTAsdGhpcy5iYXJXaWR0aD1nLTIqYyx0aGlzLng9YSs9dGhpcy5vcHRpb25zLm1hcmdpbik6KHRoaXMuaGVpZ2h0PXRoaXMueE9mZnNldD1nPWI9dGhpcy5zaXplLHRoaXMuYmFyV2lkdGg9Yy0yKmcsdGhpcy55Kz10aGlzLm9wdGlvbnMubWFyZ2luKTt0aGlzLmdyb3VwW2RdKHt0cmFuc2xhdGVYOmEsdHJhbnNsYXRlWTp0aGlzLnl9KTt0aGlzLnRyYWNrW2RdKHt3aWR0aDpjLGhlaWdodDpnfSk7dGhpcy5zY3JvbGxiYXJCdXR0b25zWzFdW2RdKHt0cmFuc2xhdGVYOmU/MDpjLWIsdHJhbnNsYXRlWTplP2ctZjowfSl9O2MucHJvdG90eXBlLnJlbW92ZUV2ZW50cz1mdW5jdGlvbigpe3RoaXMuX2V2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3QuYXBwbHkobnVsbCxhKX0pO3RoaXMuX2V2ZW50cy5sZW5ndGg9CjB9O2MucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBhPXRoaXMucmVuZGVyZXIsYj10aGlzLm9wdGlvbnMsYz10aGlzLnNpemUsZz10aGlzLmNoYXJ0LnN0eWxlZE1vZGUsazt0aGlzLmdyb3VwPWs9YS5nKCJzY3JvbGxiYXIiKS5hdHRyKHt6SW5kZXg6Yi56SW5kZXgsdHJhbnNsYXRlWTotOTk5OTl9KS5hZGQoKTt0aGlzLnRyYWNrPWEucmVjdCgpLmFkZENsYXNzKCJoaWdoY2hhcnRzLXNjcm9sbGJhci10cmFjayIpLmF0dHIoe3g6MCxyOmIudHJhY2tCb3JkZXJSYWRpdXN8fDAsaGVpZ2h0OmMsd2lkdGg6Y30pLmFkZChrKTtnfHx0aGlzLnRyYWNrLmF0dHIoe2ZpbGw6Yi50cmFja0JhY2tncm91bmRDb2xvcixzdHJva2U6Yi50cmFja0JvcmRlckNvbG9yLCJzdHJva2Utd2lkdGgiOmIudHJhY2tCb3JkZXJXaWR0aH0pO3RoaXMudHJhY2tCb3JkZXJXaWR0aD10aGlzLnRyYWNrLnN0cm9rZVdpZHRoKCk7dGhpcy50cmFjay5hdHRyKHt5Oi10aGlzLnRyYWNrQm9yZGVyV2lkdGglCjIvMn0pO3RoaXMuc2Nyb2xsYmFyR3JvdXA9YS5nKCkuYWRkKGspO3RoaXMuc2Nyb2xsYmFyPWEucmVjdCgpLmFkZENsYXNzKCJoaWdoY2hhcnRzLXNjcm9sbGJhci10aHVtYiIpLmF0dHIoe2hlaWdodDpjLHdpZHRoOmMscjpiLmJhckJvcmRlclJhZGl1c3x8MH0pLmFkZCh0aGlzLnNjcm9sbGJhckdyb3VwKTt0aGlzLnNjcm9sbGJhclJpZmxlcz1hLnBhdGgoRShbWyJNIiwtMyxjLzRdLFsiTCIsLTMsMipjLzNdLFsiTSIsMCxjLzRdLFsiTCIsMCwyKmMvM10sWyJNIiwzLGMvNF0sWyJMIiwzLDIqYy8zXV0sYi52ZXJ0aWNhbCkpLmFkZENsYXNzKCJoaWdoY2hhcnRzLXNjcm9sbGJhci1yaWZsZXMiKS5hZGQodGhpcy5zY3JvbGxiYXJHcm91cCk7Z3x8KHRoaXMuc2Nyb2xsYmFyLmF0dHIoe2ZpbGw6Yi5iYXJCYWNrZ3JvdW5kQ29sb3Isc3Ryb2tlOmIuYmFyQm9yZGVyQ29sb3IsInN0cm9rZS13aWR0aCI6Yi5iYXJCb3JkZXJXaWR0aH0pLHRoaXMuc2Nyb2xsYmFyUmlmbGVzLmF0dHIoe3N0cm9rZTpiLnJpZmxlQ29sb3IsCiJzdHJva2Utd2lkdGgiOjF9KSk7dGhpcy5zY3JvbGxiYXJTdHJva2VXaWR0aD10aGlzLnNjcm9sbGJhci5zdHJva2VXaWR0aCgpO3RoaXMuc2Nyb2xsYmFyR3JvdXAudHJhbnNsYXRlKC10aGlzLnNjcm9sbGJhclN0cm9rZVdpZHRoJTIvMiwtdGhpcy5zY3JvbGxiYXJTdHJva2VXaWR0aCUyLzIpO3RoaXMuZHJhd1Njcm9sbGJhckJ1dHRvbigwKTt0aGlzLmRyYXdTY3JvbGxiYXJCdXR0b24oMSl9O2MucHJvdG90eXBlLnNldFJhbmdlPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5vcHRpb25zLGc9Yy52ZXJ0aWNhbCxrPWMubWluV2lkdGgsZj10aGlzLmJhcldpZHRoLGQsdj0hdGhpcy5yZW5kZXJlZHx8dGhpcy5oYXNEcmFnZ2VkfHx0aGlzLmNoYXJ0Lm5hdmlnYXRvciYmdGhpcy5jaGFydC5uYXZpZ2F0b3IuaGFzRHJhZ2dlZD8iYXR0ciI6ImFuaW1hdGUiO2lmKHkoZikpe2E9TWF0aC5tYXgoYSwwKTt2YXIgbD1NYXRoLmNlaWwoZiphKTt0aGlzLmNhbGN1bGF0ZWRXaWR0aD1kPUQoZioKTWF0aC5taW4oYiwxKS1sKTtkPGsmJihsPShmLWsrZCkqYSxkPWspO2s9TWF0aC5mbG9vcihsK3RoaXMueE9mZnNldCt0aGlzLnlPZmZzZXQpO2Y9ZC8yLS41O3RoaXMuZnJvbT1hO3RoaXMudG89YjtnPyh0aGlzLnNjcm9sbGJhckdyb3VwW3ZdKHt0cmFuc2xhdGVZOmt9KSx0aGlzLnNjcm9sbGJhclt2XSh7aGVpZ2h0OmR9KSx0aGlzLnNjcm9sbGJhclJpZmxlc1t2XSh7dHJhbnNsYXRlWTpmfSksdGhpcy5zY3JvbGxiYXJUb3A9ayx0aGlzLnNjcm9sbGJhckxlZnQ9MCk6KHRoaXMuc2Nyb2xsYmFyR3JvdXBbdl0oe3RyYW5zbGF0ZVg6a30pLHRoaXMuc2Nyb2xsYmFyW3ZdKHt3aWR0aDpkfSksdGhpcy5zY3JvbGxiYXJSaWZsZXNbdl0oe3RyYW5zbGF0ZVg6Zn0pLHRoaXMuc2Nyb2xsYmFyTGVmdD1rLHRoaXMuc2Nyb2xsYmFyVG9wPTApOzEyPj1kP3RoaXMuc2Nyb2xsYmFyUmlmbGVzLmhpZGUoKTp0aGlzLnNjcm9sbGJhclJpZmxlcy5zaG93KCEwKTshMT09PWMuc2hvd0Z1bGwmJigwPj0KYSYmMTw9Yj90aGlzLmdyb3VwLmhpZGUoKTp0aGlzLmdyb3VwLnNob3coKSk7dGhpcy5yZW5kZXJlZD0hMH19O2MucHJvdG90eXBlLnRyYWNrQ2xpY2s9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5jaGFydC5wb2ludGVyLm5vcm1hbGl6ZShhKSxlPXRoaXMudG8tdGhpcy5mcm9tLGc9dGhpcy55K3RoaXMuc2Nyb2xsYmFyVG9wLGs9dGhpcy54K3RoaXMuc2Nyb2xsYmFyTGVmdDt0aGlzLm9wdGlvbnMudmVydGljYWwmJmMuY2hhcnRZPmd8fCF0aGlzLm9wdGlvbnMudmVydGljYWwmJmMuY2hhcnRYPms/dGhpcy51cGRhdGVQb3NpdGlvbih0aGlzLmZyb20rZSx0aGlzLnRvK2UpOnRoaXMudXBkYXRlUG9zaXRpb24odGhpcy5mcm9tLWUsdGhpcy50by1lKTtiKHRoaXMsImNoYW5nZWQiLHtmcm9tOnRoaXMuZnJvbSx0bzp0aGlzLnRvLHRyaWdnZXI6InNjcm9sbGJhciIsRE9NRXZlbnQ6YX0pfTtjLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oYSl7dGhpcy5kZXN0cm95KCk7dGhpcy5pbml0KHRoaXMuY2hhcnQucmVuZGVyZXIsCmcoITAsdGhpcy5vcHRpb25zLGEpLHRoaXMuY2hhcnQpfTtjLnByb3RvdHlwZS51cGRhdGVQb3NpdGlvbj1mdW5jdGlvbihhLGIpezE8YiYmKGE9RCgxLUQoYi1hKSksYj0xKTswPmEmJihiPUQoYi1hKSxhPTApO3RoaXMuZnJvbT1hO3RoaXMudG89Yn07Yy5kZWZhdWx0T3B0aW9ucz17aGVpZ2h0Okk/MjA6MTQsYmFyQm9yZGVyUmFkaXVzOjAsYnV0dG9uQm9yZGVyUmFkaXVzOjAsbGl2ZVJlZHJhdzp2b2lkIDAsbWFyZ2luOjEwLG1pbldpZHRoOjYsc3RlcDouMix6SW5kZXg6MyxiYXJCYWNrZ3JvdW5kQ29sb3I6IiNjY2NjY2MiLGJhckJvcmRlcldpZHRoOjEsYmFyQm9yZGVyQ29sb3I6IiNjY2NjY2MiLGJ1dHRvbkFycm93Q29sb3I6IiMzMzMzMzMiLGJ1dHRvbkJhY2tncm91bmRDb2xvcjoiI2U2ZTZlNiIsYnV0dG9uQm9yZGVyQ29sb3I6IiNjY2NjY2MiLGJ1dHRvbkJvcmRlcldpZHRoOjEscmlmbGVDb2xvcjoiIzMzMzMzMyIsdHJhY2tCYWNrZ3JvdW5kQ29sb3I6IiNmMmYyZjIiLAp0cmFja0JvcmRlckNvbG9yOiIjZjJmMmYyIix0cmFja0JvcmRlcldpZHRoOjF9O3JldHVybiBjfSgpO2wuU2Nyb2xsYmFyfHwoei5zY3JvbGxiYXI9ZyghMCx4LmRlZmF1bHRPcHRpb25zLHouc2Nyb2xsYmFyKSxsLlNjcm9sbGJhcj14LHUuY29tcG9zZShjLHgpKTtyZXR1cm4gbC5TY3JvbGxiYXJ9KTtKKGMsInBhcnRzL1JhbmdlU2VsZWN0b3IuanMiLFtjWyJwYXJ0cy9BeGlzLmpzIl0sY1sicGFydHMvQ2hhcnQuanMiXSxjWyJwYXJ0cy9HbG9iYWxzLmpzIl0sY1sicGFydHMvT3B0aW9ucy5qcyJdLGNbInBhcnRzL1NWR0VsZW1lbnQuanMiXSxjWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYyxsLHUseix4LEEpe3ZhciBEPXouZGVmYXVsdE9wdGlvbnMseT1BLmFkZEV2ZW50LGs9QS5jcmVhdGVFbGVtZW50LGI9QS5jc3MsZz1BLmRlZmluZWQsbT1BLmRlc3Ryb3lPYmplY3RQcm9wZXJ0aWVzLHQ9QS5kaXNjYXJkRWxlbWVudCxIPUEuZXh0ZW5kLEk9QS5maXJlRXZlbnQsCkU9QS5pc051bWJlcixwPUEubWVyZ2UsYT1BLm9iamVjdEVhY2gsdz1BLnBpY2ssZT1BLnBJbnQsQz1BLnNwbGF0O0goRCx7cmFuZ2VTZWxlY3Rvcjp7dmVydGljYWxBbGlnbjoidG9wIixidXR0b25UaGVtZTp7d2lkdGg6MjgsaGVpZ2h0OjE4LHBhZGRpbmc6Mix6SW5kZXg6N30sZmxvYXRpbmc6ITEseDowLHk6MCxoZWlnaHQ6dm9pZCAwLGlucHV0UG9zaXRpb246e2FsaWduOiJyaWdodCIseDowLHk6MH0sYnV0dG9uUG9zaXRpb246e2FsaWduOiJsZWZ0Iix4OjAseTowfSxsYWJlbFN0eWxlOntjb2xvcjoiIzY2NjY2NiJ9fX0pO0QubGFuZz1wKEQubGFuZyx7cmFuZ2VTZWxlY3Rvclpvb206Ilpvb20iLHJhbmdlU2VsZWN0b3JGcm9tOiJGcm9tIixyYW5nZVNlbGVjdG9yVG86IlRvIn0pO3ZhciBxPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZihhKXt0aGlzLmJ1dHRvbnM9dm9pZCAwO3RoaXMuYnV0dG9uT3B0aW9ucz1mLnByb3RvdHlwZS5kZWZhdWx0QnV0dG9uczt0aGlzLm9wdGlvbnM9dm9pZCAwOwp0aGlzLmNoYXJ0PWE7dGhpcy5pbml0KGEpfWYucHJvdG90eXBlLmNsaWNrQnV0dG9uPWZ1bmN0aW9uKGEsYil7dmFyIGQ9dGhpcy5jaGFydCxlPXRoaXMuYnV0dG9uT3B0aW9uc1thXSxmPWQueEF4aXNbMF0saD1kLnNjcm9sbGVyJiZkLnNjcm9sbGVyLmdldFVuaW9uRXh0cmVtZXMoKXx8Znx8e30sbj1oLmRhdGFNaW4sZz1oLmRhdGFNYXgsaz1mJiZNYXRoLnJvdW5kKE1hdGgubWluKGYubWF4LHcoZyxmLm1heCkpKSx2PWUudHlwZTtoPWUuX3JhbmdlO3ZhciBsLHA9ZS5kYXRhR3JvdXBpbmc7aWYobnVsbCE9PW4mJm51bGwhPT1nKXtkLmZpeGVkUmFuZ2U9aDtwJiYodGhpcy5mb3JjZWREYXRhR3JvdXBpbmc9ITAsYy5wcm90b3R5cGUuc2V0RGF0YUdyb3VwaW5nLmNhbGwoZnx8e2NoYXJ0OnRoaXMuY2hhcnR9LHAsITEpLHRoaXMuZnJvemVuU3RhdGVzPWUucHJlc2VydmVEYXRhR3JvdXBpbmcpO2lmKCJtb250aCI9PT12fHwieWVhciI9PT12KWlmKGYpe3Y9e3JhbmdlOmUsbWF4OmssCmNoYXJ0OmQsZGF0YU1pbjpuLGRhdGFNYXg6Z307dmFyIG09Zi5taW5Gcm9tUmFuZ2UuY2FsbCh2KTtFKHYubmV3TWF4KSYmKGs9di5uZXdNYXgpfWVsc2UgaD1lO2Vsc2UgaWYoaCltPU1hdGgubWF4KGstaCxuKSxrPU1hdGgubWluKG0raCxnKTtlbHNlIGlmKCJ5dGQiPT09dilpZihmKSJ1bmRlZmluZWQiPT09dHlwZW9mIGcmJihuPU51bWJlci5NQVhfVkFMVUUsZz1OdW1iZXIuTUlOX1ZBTFVFLGQuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYSl7YT1hLnhEYXRhO249TWF0aC5taW4oYVswXSxuKTtnPU1hdGgubWF4KGFbYS5sZW5ndGgtMV0sZyl9KSxiPSExKSxrPXRoaXMuZ2V0WVRERXh0cmVtZXMoZyxuLGQudGltZS51c2VVVEMpLG09bD1rLm1pbixrPWsubWF4O2Vsc2V7dGhpcy5kZWZlcnJlZFlURENsaWNrPWE7cmV0dXJufWVsc2UiYWxsIj09PXYmJmYmJihtPW4saz1nKTttKz1lLl9vZmZzZXRNaW47ays9ZS5fb2Zmc2V0TWF4O3RoaXMuc2V0U2VsZWN0ZWQoYSk7aWYoZilmLnNldEV4dHJlbWVzKG0sCmssdyhiLDEpLG51bGwse3RyaWdnZXI6InJhbmdlU2VsZWN0b3JCdXR0b24iLHJhbmdlU2VsZWN0b3JCdXR0b246ZX0pO2Vsc2V7dmFyIHE9QyhkLm9wdGlvbnMueEF4aXMpWzBdO3ZhciB0PXEucmFuZ2U7cS5yYW5nZT1oO3ZhciB1PXEubWluO3EubWluPWw7eShkLCJsb2FkIixmdW5jdGlvbigpe3EucmFuZ2U9dDtxLm1pbj11fSl9fX07Zi5wcm90b3R5cGUuc2V0U2VsZWN0ZWQ9ZnVuY3Rpb24oYSl7dGhpcy5zZWxlY3RlZD10aGlzLm9wdGlvbnMuc2VsZWN0ZWQ9YX07Zi5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9YS5vcHRpb25zLnJhbmdlU2VsZWN0b3IsZD1jLmJ1dHRvbnN8fGIuZGVmYXVsdEJ1dHRvbnMuc2xpY2UoKSxlPWMuc2VsZWN0ZWQsaD1mdW5jdGlvbigpe3ZhciBhPWIubWluSW5wdXQsYz1iLm1heElucHV0O2EmJmEuYmx1ciYmSShhLCJibHVyIik7YyYmYy5ibHVyJiZJKGMsImJsdXIiKX07Yi5jaGFydD1hO2Iub3B0aW9ucz1jO2IuYnV0dG9ucz0KW107Yi5idXR0b25PcHRpb25zPWQ7dGhpcy51bk1vdXNlRG93bj15KGEuY29udGFpbmVyLCJtb3VzZWRvd24iLGgpO3RoaXMudW5SZXNpemU9eShhLCJyZXNpemUiLGgpO2QuZm9yRWFjaChiLmNvbXB1dGVCdXR0b25SYW5nZSk7InVuZGVmaW5lZCIhPT10eXBlb2YgZSYmZFtlXSYmdGhpcy5jbGlja0J1dHRvbihlLCExKTt5KGEsImxvYWQiLGZ1bmN0aW9uKCl7YS54QXhpcyYmYS54QXhpc1swXSYmeShhLnhBeGlzWzBdLCJzZXRFeHRyZW1lcyIsZnVuY3Rpb24oYyl7dGhpcy5tYXgtdGhpcy5taW4hPT1hLmZpeGVkUmFuZ2UmJiJyYW5nZVNlbGVjdG9yQnV0dG9uIiE9PWMudHJpZ2dlciYmInVwZGF0ZWREYXRhIiE9PWMudHJpZ2dlciYmYi5mb3JjZWREYXRhR3JvdXBpbmcmJiFiLmZyb3plblN0YXRlcyYmdGhpcy5zZXREYXRhR3JvdXBpbmcoITEsITEpfSl9KX07Zi5wcm90b3R5cGUudXBkYXRlQnV0dG9uU3RhdGVzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPXRoaXMuY2hhcnQsYz1iLnhBeGlzWzBdLAplPU1hdGgucm91bmQoYy5tYXgtYy5taW4pLGY9IWMuaGFzVmlzaWJsZVNlcmllcyxoPWIuc2Nyb2xsZXImJmIuc2Nyb2xsZXIuZ2V0VW5pb25FeHRyZW1lcygpfHxjLG49aC5kYXRhTWluLGc9aC5kYXRhTWF4O2I9YS5nZXRZVERFeHRyZW1lcyhnLG4sYi50aW1lLnVzZVVUQyk7dmFyIGs9Yi5taW4sbD1iLm1heCxwPWEuc2VsZWN0ZWQsbT1FKHApLHE9YS5vcHRpb25zLmFsbEJ1dHRvbnNFbmFibGVkLHQ9YS5idXR0b25zO2EuYnV0dG9uT3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGIsZCl7dmFyIGg9Yi5fcmFuZ2Uscj1iLnR5cGUsRj1iLmNvdW50fHwxLHY9dFtkXSxCPTAsRz1iLl9vZmZzZXRNYXgtYi5fb2Zmc2V0TWluO2I9ZD09PXA7dmFyIHc9aD5nLW4sSz1oPGMubWluUmFuZ2UsdT0hMSxQPSExO2g9aD09PWU7KCJtb250aCI9PT1yfHwieWVhciI9PT1yKSYmZSszNkU1Pj04NjRFNSp7bW9udGg6MjgseWVhcjozNjV9W3JdKkYtRyYmZS0zNkU1PD04NjRFNSp7bW9udGg6MzEseWVhcjozNjZ9W3JdKgpGK0c/aD0hMDoieXRkIj09PXI/KGg9bC1rK0c9PT1lLHU9IWIpOiJhbGwiPT09ciYmKGg9Yy5tYXgtYy5taW4+PWctbixQPSFiJiZtJiZoKTtyPSFxJiYod3x8S3x8UHx8Zik7Rj1iJiZofHxoJiYhbSYmIXV8fGImJmEuZnJvemVuU3RhdGVzO3I/Qj0zOkYmJihtPSEwLEI9Mik7di5zdGF0ZSE9PUImJih2LnNldFN0YXRlKEIpLDA9PT1CJiZwPT09ZCYmYS5zZXRTZWxlY3RlZChudWxsKSl9KX07Zi5wcm90b3R5cGUuY29tcHV0ZUJ1dHRvblJhbmdlPWZ1bmN0aW9uKGEpe3ZhciBiPWEudHlwZSxjPWEuY291bnR8fDEsZD17bWlsbGlzZWNvbmQ6MSxzZWNvbmQ6MUUzLG1pbnV0ZTo2RTQsaG91cjozNkU1LGRheTo4NjRFNSx3ZWVrOjYwNDhFNX07aWYoZFtiXSlhLl9yYW5nZT1kW2JdKmM7ZWxzZSBpZigibW9udGgiPT09Ynx8InllYXIiPT09YilhLl9yYW5nZT04NjRFNSp7bW9udGg6MzAseWVhcjozNjV9W2JdKmM7YS5fb2Zmc2V0TWluPXcoYS5vZmZzZXRNaW4sMCk7YS5fb2Zmc2V0TWF4PQp3KGEub2Zmc2V0TWF4LDApO2EuX3JhbmdlKz1hLl9vZmZzZXRNYXgtYS5fb2Zmc2V0TWlufTtmLnByb3RvdHlwZS5zZXRJbnB1dFZhbHVlPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jaGFydC5vcHRpb25zLnJhbmdlU2VsZWN0b3IsZD10aGlzLmNoYXJ0LnRpbWUsZT10aGlzW2ErIklucHV0Il07ZyhiKSYmKGUucHJldmlvdXNWYWx1ZT1lLkhDVGltZSxlLkhDVGltZT1iKTtlLnZhbHVlPWQuZGF0ZUZvcm1hdChjLmlucHV0RWRpdERhdGVGb3JtYXR8fCIlWS0lbS0lZCIsZS5IQ1RpbWUpO3RoaXNbYSsiRGF0ZUJveCJdLmF0dHIoe3RleHQ6ZC5kYXRlRm9ybWF0KGMuaW5wdXREYXRlRm9ybWF0fHwiJWIgJWUsICVZIixlLkhDVGltZSl9KX07Zi5wcm90b3R5cGUuc2hvd0lucHV0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuaW5wdXRHcm91cCxkPXRoaXNbYSsiRGF0ZUJveCJdO2IodGhpc1thKyJJbnB1dCJdLHtsZWZ0OmMudHJhbnNsYXRlWCtkLngrInB4Iix0b3A6Yy50cmFuc2xhdGVZKwoicHgiLHdpZHRoOmQud2lkdGgtMisicHgiLGhlaWdodDpkLmhlaWdodC0yKyJweCIsYm9yZGVyOiIycHggc29saWQgc2lsdmVyIn0pfTtmLnByb3RvdHlwZS5oaWRlSW5wdXQ9ZnVuY3Rpb24oYSl7Yih0aGlzW2ErIklucHV0Il0se2JvcmRlcjowLHdpZHRoOiIxcHgiLGhlaWdodDoiMXB4In0pO3RoaXMuc2V0SW5wdXRWYWx1ZShhKX07Zi5wcm90b3R5cGUuZHJhd0lucHV0PWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGMoKXt2YXIgYT1tLnZhbHVlLGI9KG4uaW5wdXREYXRlUGFyc2VyfHxEYXRlLnBhcnNlKShhKSxjPWYueEF4aXNbMF0saD1mLnNjcm9sbGVyJiZmLnNjcm9sbGVyLnhBeGlzP2Yuc2Nyb2xsZXIueEF4aXM6YyxnPWguZGF0YU1pbjtoPWguZGF0YU1heDtiIT09bS5wcmV2aW91c1ZhbHVlJiYobS5wcmV2aW91c1ZhbHVlPWIsRShiKXx8KGI9YS5zcGxpdCgiLSIpLGI9RGF0ZS5VVEMoZShiWzBdKSxlKGJbMV0pLTEsZShiWzJdKSkpLEUoYikmJihmLnRpbWUudXNlVVRDfHwoYis9CjZFNCoobmV3IERhdGUpLmdldFRpbWV6b25lT2Zmc2V0KCkpLGw/Yj5kLm1heElucHV0LkhDVGltZT9iPXZvaWQgMDpiPGcmJihiPWcpOmI8ZC5taW5JbnB1dC5IQ1RpbWU/Yj12b2lkIDA6Yj5oJiYoYj1oKSwidW5kZWZpbmVkIiE9PXR5cGVvZiBiJiZjLnNldEV4dHJlbWVzKGw/YjpjLm1pbixsP2MubWF4OmIsdm9pZCAwLHZvaWQgMCx7dHJpZ2dlcjoicmFuZ2VTZWxlY3RvcklucHV0In0pKSl9dmFyIGQ9dGhpcyxmPWQuY2hhcnQsZz1mLnJlbmRlcmVyLnN0eWxlfHx7fSxoPWYucmVuZGVyZXIsbj1mLm9wdGlvbnMucmFuZ2VTZWxlY3RvcixGPWQuZGl2LGw9Im1pbiI9PT1hLG0scSx0PXRoaXMuaW5wdXRHcm91cDt0aGlzW2ErIkxhYmVsIl09cT1oLmxhYmVsKEQubGFuZ1tsPyJyYW5nZVNlbGVjdG9yRnJvbSI6InJhbmdlU2VsZWN0b3JUbyJdLHRoaXMuaW5wdXRHcm91cC5vZmZzZXQpLmFkZENsYXNzKCJoaWdoY2hhcnRzLXJhbmdlLWxhYmVsIikuYXR0cih7cGFkZGluZzoyfSkuYWRkKHQpOwp0Lm9mZnNldCs9cS53aWR0aCs1O3RoaXNbYSsiRGF0ZUJveCJdPWg9aC5sYWJlbCgiIix0Lm9mZnNldCkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtcmFuZ2UtaW5wdXQiKS5hdHRyKHtwYWRkaW5nOjIsd2lkdGg6bi5pbnB1dEJveFdpZHRofHw5MCxoZWlnaHQ6bi5pbnB1dEJveEhlaWdodHx8MTcsInRleHQtYWxpZ24iOiJjZW50ZXIifSkub24oImNsaWNrIixmdW5jdGlvbigpe2Quc2hvd0lucHV0KGEpO2RbYSsiSW5wdXQiXS5mb2N1cygpfSk7Zi5zdHlsZWRNb2RlfHxoLmF0dHIoe3N0cm9rZTpuLmlucHV0Qm94Qm9yZGVyQ29sb3J8fCIjY2NjY2NjIiwic3Ryb2tlLXdpZHRoIjoxfSk7aC5hZGQodCk7dC5vZmZzZXQrPWgud2lkdGgrKGw/MTA6MCk7dGhpc1thKyJJbnB1dCJdPW09aygiaW5wdXQiLHtuYW1lOmEsY2xhc3NOYW1lOiJoaWdoY2hhcnRzLXJhbmdlLXNlbGVjdG9yIix0eXBlOiJ0ZXh0In0se3RvcDpmLnBsb3RUb3ArInB4In0sRik7Zi5zdHlsZWRNb2RlfHwocS5jc3MocChnLApuLmxhYmVsU3R5bGUpKSxoLmNzcyhwKHtjb2xvcjoiIzMzMzMzMyJ9LGcsbi5pbnB1dFN0eWxlKSksYihtLEgoe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsYm9yZGVyOjAsd2lkdGg6IjFweCIsaGVpZ2h0OiIxcHgiLHBhZGRpbmc6MCx0ZXh0QWxpZ246ImNlbnRlciIsZm9udFNpemU6Zy5mb250U2l6ZSxmb250RmFtaWx5OmcuZm9udEZhbWlseSx0b3A6Ii05OTk5ZW0ifSxuLmlucHV0U3R5bGUpKSk7bS5vbmZvY3VzPWZ1bmN0aW9uKCl7ZC5zaG93SW5wdXQoYSl9O20ub25ibHVyPWZ1bmN0aW9uKCl7bT09PXUuZG9jLmFjdGl2ZUVsZW1lbnQmJmMoKTtkLmhpZGVJbnB1dChhKTttLmJsdXIoKX07bS5vbmNoYW5nZT1jO20ub25rZXlwcmVzcz1mdW5jdGlvbihhKXsxMz09PWEua2V5Q29kZSYmYygpfX07Zi5wcm90b3R5cGUuZ2V0UG9zaXRpb249ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNoYXJ0LGI9YS5vcHRpb25zLnJhbmdlU2VsZWN0b3I7YT0idG9wIj09PWIudmVydGljYWxBbGlnbj9hLnBsb3RUb3AtCmEuYXhpc09mZnNldFswXTowO3JldHVybntidXR0b25Ub3A6YStiLmJ1dHRvblBvc2l0aW9uLnksaW5wdXRUb3A6YStiLmlucHV0UG9zaXRpb24ueS0xMH19O2YucHJvdG90eXBlLmdldFlUREV4dHJlbWVzPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLmNoYXJ0LnRpbWUsZT1uZXcgZC5EYXRlKGEpLGg9ZC5nZXQoIkZ1bGxZZWFyIixlKTtjPWM/ZC5EYXRlLlVUQyhoLDAsMSk6K25ldyBkLkRhdGUoaCwwLDEpO2I9TWF0aC5tYXgoYnx8MCxjKTtlPWUuZ2V0VGltZSgpO3JldHVybnttYXg6TWF0aC5taW4oYXx8ZSxlKSxtaW46Yn19O2YucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMsZD1jLmNoYXJ0LGU9ZC5yZW5kZXJlcixoPWQuY29udGFpbmVyLG49ZC5vcHRpb25zLGY9bi5leHBvcnRpbmcmJiExIT09bi5leHBvcnRpbmcuZW5hYmxlZCYmbi5uYXZpZ2F0aW9uJiZuLm5hdmlnYXRpb24uYnV0dG9uT3B0aW9ucyxnPUQubGFuZyxsPWMuZGl2LG09bi5yYW5nZVNlbGVjdG9yLApwPXcobi5jaGFydC5zdHlsZSYmbi5jaGFydC5zdHlsZS56SW5kZXgsMCkrMTtuPW0uZmxvYXRpbmc7dmFyIHE9Yy5idXR0b25zO2w9Yy5pbnB1dEdyb3VwO3ZhciB2PW0uYnV0dG9uVGhlbWUsdD1tLmJ1dHRvblBvc2l0aW9uLHU9bS5pbnB1dFBvc2l0aW9uLHg9bS5pbnB1dEVuYWJsZWQseT12JiZ2LnN0YXRlcyx6PWQucGxvdExlZnQsQT1jLmJ1dHRvbkdyb3VwLEMsRT1jLm9wdGlvbnMudmVydGljYWxBbGlnbixIPWQubGVnZW5kLEk9SCYmSC5vcHRpb25zLEo9dC55LE49dS55LE89ZC5oYXNMb2FkZWQsUT1PPyJhbmltYXRlIjoiYXR0ciIsTT0wLEw9MDtpZighMSE9PW0uZW5hYmxlZCl7Yy5yZW5kZXJlZHx8KGMuZ3JvdXA9Qz1lLmcoInJhbmdlLXNlbGVjdG9yLWdyb3VwIikuYXR0cih7ekluZGV4Ojd9KS5hZGQoKSxjLmJ1dHRvbkdyb3VwPUE9ZS5nKCJyYW5nZS1zZWxlY3Rvci1idXR0b25zIikuYWRkKEMpLGMuem9vbVRleHQ9ZS50ZXh0KGcucmFuZ2VTZWxlY3Rvclpvb20sMCwKMTUpLmFkZChBKSxkLnN0eWxlZE1vZGV8fChjLnpvb21UZXh0LmNzcyhtLmxhYmVsU3R5bGUpLHZbInN0cm9rZS13aWR0aCJdPXcodlsic3Ryb2tlLXdpZHRoIl0sMCkpLGMuYnV0dG9uT3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGEsYil7cVtiXT1lLmJ1dHRvbihhLnRleHQsMCwwLGZ1bmN0aW9uKGgpe3ZhciBkPWEuZXZlbnRzJiZhLmV2ZW50cy5jbGljayxlO2QmJihlPWQuY2FsbChhLGgpKTshMSE9PWUmJmMuY2xpY2tCdXR0b24oYik7Yy5pc0FjdGl2ZT0hMH0sdix5JiZ5LmhvdmVyLHkmJnkuc2VsZWN0LHkmJnkuZGlzYWJsZWQpLmF0dHIoeyJ0ZXh0LWFsaWduIjoiY2VudGVyIn0pLmFkZChBKX0pLCExIT09eCYmKGMuZGl2PWw9aygiZGl2IixudWxsLHtwb3NpdGlvbjoicmVsYXRpdmUiLGhlaWdodDowLHpJbmRleDpwfSksaC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShsLGgpLGMuaW5wdXRHcm91cD1sPWUuZygiaW5wdXQtZ3JvdXAiKS5hZGQoQyksbC5vZmZzZXQ9MCxjLmRyYXdJbnB1dCgibWluIiksCmMuZHJhd0lucHV0KCJtYXgiKSkpO2Muem9vbVRleHRbUV0oe3g6dyh6K3QueCx6KX0pO3ZhciBSPXcoeit0LngseikrYy56b29tVGV4dC5nZXRCQm94KCkud2lkdGgrNTtjLmJ1dHRvbk9wdGlvbnMuZm9yRWFjaChmdW5jdGlvbihhLGIpe3FbYl1bUV0oe3g6Un0pO1IrPXFbYl0ud2lkdGgrdyhtLmJ1dHRvblNwYWNpbmcsNSl9KTt6PWQucGxvdExlZnQtZC5zcGFjaW5nWzNdO2MudXBkYXRlQnV0dG9uU3RhdGVzKCk7ZiYmdGhpcy50aXRsZUNvbGxpc2lvbihkKSYmInRvcCI9PT1FJiYicmlnaHQiPT09dC5hbGlnbiYmdC55K0EuZ2V0QkJveCgpLmhlaWdodC0xMjwoZi55fHwwKStmLmhlaWdodCYmKE09LTQwKTtoPXQueC1kLnNwYWNpbmdbM107InJpZ2h0Ij09PXQuYWxpZ24/aCs9TS16OiJjZW50ZXIiPT09dC5hbGlnbiYmKGgtPXovMik7QS5hbGlnbih7eTp0Lnksd2lkdGg6QS5nZXRCQm94KCkud2lkdGgsYWxpZ246dC5hbGlnbix4Omh9LCEwLGQuc3BhY2luZ0JveCk7Yy5ncm91cC5wbGFjZWQ9Ck87Yy5idXR0b25Hcm91cC5wbGFjZWQ9TzshMSE9PXgmJihNPWYmJnRoaXMudGl0bGVDb2xsaXNpb24oZCkmJiJ0b3AiPT09RSYmInJpZ2h0Ij09PXUuYWxpZ24mJnUueS1sLmdldEJCb3goKS5oZWlnaHQtMTI8KGYueXx8MCkrZi5oZWlnaHQrZC5zcGFjaW5nWzBdPy00MDowLCJsZWZ0Ij09PXUuYWxpZ24/aD16OiJyaWdodCI9PT11LmFsaWduJiYoaD0tTWF0aC5tYXgoZC5heGlzT2Zmc2V0WzFdLC1NKSksbC5hbGlnbih7eTp1Lnksd2lkdGg6bC5nZXRCQm94KCkud2lkdGgsYWxpZ246dS5hbGlnbix4OnUueCtoLTJ9LCEwLGQuc3BhY2luZ0JveCksZj1sLmFsaWduQXR0ci50cmFuc2xhdGVYK2wuYWxpZ25PcHRpb25zLngtTStsLmdldEJCb3goKS54KzIsaD1sLmFsaWduT3B0aW9ucy53aWR0aCxnPUEuYWxpZ25BdHRyLnRyYW5zbGF0ZVgrQS5nZXRCQm94KCkueCx6PUEuZ2V0QkJveCgpLndpZHRoKzIwLCh1LmFsaWduPT09dC5hbGlnbnx8Zyt6PmYmJmYraD5nJiZKPE4rbC5nZXRCQm94KCkuaGVpZ2h0KSYmCmwuYXR0cih7dHJhbnNsYXRlWDpsLmFsaWduQXR0ci50cmFuc2xhdGVYKyhkLmF4aXNPZmZzZXRbMV0+PS1NPzA6LU0pLHRyYW5zbGF0ZVk6bC5hbGlnbkF0dHIudHJhbnNsYXRlWStBLmdldEJCb3goKS5oZWlnaHQrMTB9KSxjLnNldElucHV0VmFsdWUoIm1pbiIsYSksYy5zZXRJbnB1dFZhbHVlKCJtYXgiLGIpLGMuaW5wdXRHcm91cC5wbGFjZWQ9Tyk7Yy5ncm91cC5hbGlnbih7dmVydGljYWxBbGlnbjpFfSwhMCxkLnNwYWNpbmdCb3gpO2E9Yy5ncm91cC5nZXRCQm94KCkuaGVpZ2h0KzIwO2I9Yy5ncm91cC5hbGlnbkF0dHIudHJhbnNsYXRlWTsiYm90dG9tIj09PUUmJihIPUkmJiJib3R0b20iPT09SS52ZXJ0aWNhbEFsaWduJiZJLmVuYWJsZWQmJiFJLmZsb2F0aW5nP0gubGVnZW5kSGVpZ2h0K3coSS5tYXJnaW4sMTApOjAsYT1hK0gtMjAsTD1iLWEtKG4/MDptLnkpLShkLnRpdGxlT2Zmc2V0P2QudGl0bGVPZmZzZXRbMl06MCktMTApO2lmKCJ0b3AiPT09RSluJiYoTD0wKSxkLnRpdGxlT2Zmc2V0JiYKZC50aXRsZU9mZnNldFswXSYmKEw9ZC50aXRsZU9mZnNldFswXSksTCs9ZC5tYXJnaW5bMF0tZC5zcGFjaW5nWzBdfHwwO2Vsc2UgaWYoIm1pZGRsZSI9PT1FKWlmKE49PT1KKUw9MD5OP2Irdm9pZCAwOmI7ZWxzZSBpZihOfHxKKUw9MD5OfHwwPko/TC1NYXRoLm1pbihOLEopOmItYStOYU47Yy5ncm91cC50cmFuc2xhdGUobS54LG0ueStNYXRoLmZsb29yKEwpKTshMSE9PXgmJihjLm1pbklucHV0LnN0eWxlLm1hcmdpblRvcD1jLmdyb3VwLnRyYW5zbGF0ZVkrInB4IixjLm1heElucHV0LnN0eWxlLm1hcmdpblRvcD1jLmdyb3VwLnRyYW5zbGF0ZVkrInB4Iik7Yy5yZW5kZXJlZD0hMH19O2YucHJvdG90eXBlLmdldEhlaWdodD1mdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucyxiPXRoaXMuZ3JvdXAsYz1hLnksZT1hLmJ1dHRvblBvc2l0aW9uLnksZj1hLmlucHV0UG9zaXRpb24ueTtpZihhLmhlaWdodClyZXR1cm4gYS5oZWlnaHQ7YT1iP2IuZ2V0QkJveCghMCkuaGVpZ2h0KzEzKwpjOjA7Yj1NYXRoLm1pbihmLGUpO2lmKDA+ZiYmMD5lfHwwPGYmJjA8ZSlhKz1NYXRoLmFicyhiKTtyZXR1cm4gYX07Zi5wcm90b3R5cGUudGl0bGVDb2xsaXNpb249ZnVuY3Rpb24oYSl7cmV0dXJuIShhLm9wdGlvbnMudGl0bGUudGV4dHx8YS5vcHRpb25zLnN1YnRpdGxlLnRleHQpfTtmLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5jaGFydDtwKCEwLGIub3B0aW9ucy5yYW5nZVNlbGVjdG9yLGEpO3RoaXMuZGVzdHJveSgpO3RoaXMuaW5pdChiKTtiLnJhbmdlU2VsZWN0b3IucmVuZGVyKCl9O2YucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLGM9Yi5taW5JbnB1dCxlPWIubWF4SW5wdXQ7Yi51bk1vdXNlRG93bigpO2IudW5SZXNpemUoKTttKGIuYnV0dG9ucyk7YyYmKGMub25mb2N1cz1jLm9uYmx1cj1jLm9uY2hhbmdlPW51bGwpO2UmJihlLm9uZm9jdXM9ZS5vbmJsdXI9ZS5vbmNoYW5nZT1udWxsKTthKGIsZnVuY3Rpb24oYSwKYyl7YSYmImNoYXJ0IiE9PWMmJihhIGluc3RhbmNlb2YgeD9hLmRlc3Ryb3koKTphIGluc3RhbmNlb2Ygd2luZG93LkhUTUxFbGVtZW50JiZ0KGEpKTthIT09Zi5wcm90b3R5cGVbY10mJihiW2NdPW51bGwpfSx0aGlzKX07cmV0dXJuIGZ9KCk7cS5wcm90b3R5cGUuZGVmYXVsdEJ1dHRvbnM9W3t0eXBlOiJtb250aCIsY291bnQ6MSx0ZXh0OiIxbSJ9LHt0eXBlOiJtb250aCIsY291bnQ6Myx0ZXh0OiIzbSJ9LHt0eXBlOiJtb250aCIsY291bnQ6Nix0ZXh0OiI2bSJ9LHt0eXBlOiJ5dGQiLHRleHQ6IllURCJ9LHt0eXBlOiJ5ZWFyIixjb3VudDoxLHRleHQ6IjF5In0se3R5cGU6ImFsbCIsdGV4dDoiQWxsIn1dO2MucHJvdG90eXBlLm1pbkZyb21SYW5nZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMucmFuZ2UsYj1hLnR5cGUsYz10aGlzLm1heCxlPXRoaXMuY2hhcnQudGltZSxnPWZ1bmN0aW9uKGEsYyl7dmFyIGg9InllYXIiPT09Yj8iRnVsbFllYXIiOiJNb250aCIsZD1uZXcgZS5EYXRlKGEpLApuPWUuZ2V0KGgsZCk7ZS5zZXQoaCxkLG4rYyk7bj09PWUuZ2V0KGgsZCkmJmUuc2V0KCJEYXRlIixkLDApO3JldHVybiBkLmdldFRpbWUoKS1hfTtpZihFKGEpKXt2YXIgaz1jLWE7dmFyIGg9YX1lbHNlIGs9YytnKGMsLWEuY291bnQpLHRoaXMuY2hhcnQmJih0aGlzLmNoYXJ0LmZpeGVkUmFuZ2U9Yy1rKTt2YXIgbj13KHRoaXMuZGF0YU1pbixOdW1iZXIuTUlOX1ZBTFVFKTtFKGspfHwoaz1uKTtrPD1uJiYoaz1uLCJ1bmRlZmluZWQiPT09dHlwZW9mIGgmJihoPWcoayxhLmNvdW50KSksdGhpcy5uZXdNYXg9TWF0aC5taW4oaytoLHRoaXMuZGF0YU1heCkpO0UoYyl8fChrPXZvaWQgMCk7cmV0dXJuIGt9O3UuUmFuZ2VTZWxlY3Rvcnx8KHkobCwiYWZ0ZXJHZXRDb250YWluZXIiLGZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLnJhbmdlU2VsZWN0b3IuZW5hYmxlZCYmKHRoaXMucmFuZ2VTZWxlY3Rvcj1uZXcgcSh0aGlzKSl9KSx5KGwsImJlZm9yZVJlbmRlciIsZnVuY3Rpb24oKXt2YXIgYT0KdGhpcy5heGVzLGI9dGhpcy5yYW5nZVNlbGVjdG9yO2ImJihFKGIuZGVmZXJyZWRZVERDbGljaykmJihiLmNsaWNrQnV0dG9uKGIuZGVmZXJyZWRZVERDbGljayksZGVsZXRlIGIuZGVmZXJyZWRZVERDbGljayksYS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EudXBkYXRlTmFtZXMoKTthLnNldFNjYWxlKCl9KSx0aGlzLmdldEF4aXNNYXJnaW5zKCksYi5yZW5kZXIoKSxhPWIub3B0aW9ucy52ZXJ0aWNhbEFsaWduLGIub3B0aW9ucy5mbG9hdGluZ3x8KCJib3R0b20iPT09YT90aGlzLmV4dHJhQm90dG9tTWFyZ2luPSEwOiJtaWRkbGUiIT09YSYmKHRoaXMuZXh0cmFUb3BNYXJnaW49ITApKSl9KSx5KGwsInVwZGF0ZSIsZnVuY3Rpb24oYSl7dmFyIGI9YS5vcHRpb25zLnJhbmdlU2VsZWN0b3I7YT10aGlzLnJhbmdlU2VsZWN0b3I7dmFyIGM9dGhpcy5leHRyYUJvdHRvbU1hcmdpbixlPXRoaXMuZXh0cmFUb3BNYXJnaW47YiYmYi5lbmFibGVkJiYhZyhhKSYmKHRoaXMub3B0aW9ucy5yYW5nZVNlbGVjdG9yLmVuYWJsZWQ9CiEwLHRoaXMucmFuZ2VTZWxlY3Rvcj1uZXcgcSh0aGlzKSk7dGhpcy5leHRyYVRvcE1hcmdpbj10aGlzLmV4dHJhQm90dG9tTWFyZ2luPSExO2EmJihhLnJlbmRlcigpLGI9YiYmYi52ZXJ0aWNhbEFsaWdufHxhLm9wdGlvbnMmJmEub3B0aW9ucy52ZXJ0aWNhbEFsaWduLGEub3B0aW9ucy5mbG9hdGluZ3x8KCJib3R0b20iPT09Yj90aGlzLmV4dHJhQm90dG9tTWFyZ2luPSEwOiJtaWRkbGUiIT09YiYmKHRoaXMuZXh0cmFUb3BNYXJnaW49ITApKSx0aGlzLmV4dHJhQm90dG9tTWFyZ2luIT09Y3x8dGhpcy5leHRyYVRvcE1hcmdpbiE9PWUpJiYodGhpcy5pc0RpcnR5Qm94PSEwKX0pLHkobCwicmVuZGVyIixmdW5jdGlvbigpe3ZhciBhPXRoaXMucmFuZ2VTZWxlY3RvcjthJiYhYS5vcHRpb25zLmZsb2F0aW5nJiYoYS5yZW5kZXIoKSxhPWEub3B0aW9ucy52ZXJ0aWNhbEFsaWduLCJib3R0b20iPT09YT90aGlzLmV4dHJhQm90dG9tTWFyZ2luPSEwOiJtaWRkbGUiIT09YSYmKHRoaXMuZXh0cmFUb3BNYXJnaW49CiEwKSl9KSx5KGwsImdldE1hcmdpbnMiLGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5yYW5nZVNlbGVjdG9yO2EmJihhPWEuZ2V0SGVpZ2h0KCksdGhpcy5leHRyYVRvcE1hcmdpbiYmKHRoaXMucGxvdFRvcCs9YSksdGhpcy5leHRyYUJvdHRvbU1hcmdpbiYmKHRoaXMubWFyZ2luQm90dG9tKz1hKSl9KSxsLnByb3RvdHlwZS5jYWxsYmFja3MucHVzaChmdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7Yz1hLnhBeGlzWzBdLmdldEV4dHJlbWVzKCk7Zj1hLmxlZ2VuZDtoPW51bGw9PT1lfHx2b2lkIDA9PT1lP3ZvaWQgMDplLm9wdGlvbnMudmVydGljYWxBbGlnbjtFKGMubWluKSYmZS5yZW5kZXIoYy5taW4sYy5tYXgpO2UmJmYuZGlzcGxheSYmInRvcCI9PT1oJiZoPT09Zi5vcHRpb25zLnZlcnRpY2FsQWxpZ24mJihnPXAoYS5zcGFjaW5nQm94KSxnLnk9InZlcnRpY2FsIj09PWYub3B0aW9ucy5sYXlvdXQ/YS5wbG90VG9wOmcueStlLmdldEhlaWdodCgpLGYuZ3JvdXAucGxhY2VkPSExLGYuYWxpZ24oZykpfQp2YXIgYyxlPWEucmFuZ2VTZWxlY3RvcixmLGcsaDtpZihlKXt2YXIgbj15KGEueEF4aXNbMF0sImFmdGVyU2V0RXh0cmVtZXMiLGZ1bmN0aW9uKGEpe2UucmVuZGVyKGEubWluLGEubWF4KX0pO3ZhciBrPXkoYSwicmVkcmF3IixiKTtiKCl9eShhLCJkZXN0cm95IixmdW5jdGlvbigpe2UmJihrKCksbigpKX0pfSksdS5SYW5nZVNlbGVjdG9yPXEpO3JldHVybiB1LlJhbmdlU2VsZWN0b3J9KTtKKGMsInBhcnRzL05hdmlnYXRvckF4aXMuanMiLFtjWyJwYXJ0cy9HbG9iYWxzLmpzIl0sY1sicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGMsbCl7dmFyIHU9Yy5pc1RvdWNoRGV2aWNlLHo9bC5hZGRFdmVudCx4PWwuY29ycmVjdEZsb2F0LEE9bC5kZWZpbmVkLEQ9bC5pc051bWJlcix5PWwucGljayxrPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYihiKXt0aGlzLmF4aXM9Yn1iLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5heGlzPXZvaWQgMH07Yi5wcm90b3R5cGUudG9GaXhlZFJhbmdlPQpmdW5jdGlvbihiLGMsayxsKXt2YXIgZz10aGlzLmF4aXMsbT1nLmNoYXJ0O209bSYmbS5maXhlZFJhbmdlO3ZhciBwPShnLnBvaW50UmFuZ2V8fDApLzI7Yj15KGssZy50cmFuc2xhdGUoYiwhMCwhZy5ob3JpeikpO2M9eShsLGcudHJhbnNsYXRlKGMsITAsIWcuaG9yaXopKTtnPW0mJihjLWIpL207QShrKXx8KGI9eChiK3ApKTtBKGwpfHwoYz14KGMtcCkpOy43PGcmJjEuMz5nJiYobD9iPWMtbTpjPWIrbSk7RChiKSYmRChjKXx8KGI9Yz12b2lkIDApO3JldHVybnttaW46YixtYXg6Y319O3JldHVybiBifSgpO3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIGIoKXt9Yi5jb21wb3NlPWZ1bmN0aW9uKGIpe2Iua2VlcFByb3BzLnB1c2goIm5hdmlnYXRvckF4aXMiKTt6KGIsImluaXQiLGZ1bmN0aW9uKCl7dGhpcy5uYXZpZ2F0b3JBeGlzfHwodGhpcy5uYXZpZ2F0b3JBeGlzPW5ldyBrKHRoaXMpKX0pO3ooYiwiem9vbSIsZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5jaGFydC5vcHRpb25zLApnPWMubmF2aWdhdG9yLGs9dGhpcy5uYXZpZ2F0b3JBeGlzLGw9Yy5jaGFydC5waW5jaFR5cGUsbT1jLnJhbmdlU2VsZWN0b3I7Yz1jLmNoYXJ0Lnpvb21UeXBlO3RoaXMuaXNYQXhpcyYmKGcmJmcuZW5hYmxlZHx8bSYmbS5lbmFibGVkKSYmKCJ5Ij09PWM/Yi56b29tZWQ9ITE6KCF1JiYieHkiPT09Y3x8dSYmInh5Ij09PWwpJiZ0aGlzLm9wdGlvbnMucmFuZ2UmJihnPWsucHJldmlvdXNab29tLEEoYi5uZXdNaW4pP2sucHJldmlvdXNab29tPVt0aGlzLm1pbix0aGlzLm1heF06ZyYmKGIubmV3TWluPWdbMF0sYi5uZXdNYXg9Z1sxXSxrLnByZXZpb3VzWm9vbT12b2lkIDApKSk7InVuZGVmaW5lZCIhPT10eXBlb2YgYi56b29tZWQmJmIucHJldmVudERlZmF1bHQoKX0pfTtiLkFkZGl0aW9uc0NsYXNzPWs7cmV0dXJuIGJ9KCl9KTtKKGMsInBhcnRzL05hdmlnYXRvci5qcyIsW2NbInBhcnRzL0F4aXMuanMiXSxjWyJwYXJ0cy9DaGFydC5qcyJdLGNbInBhcnRzL0NvbG9yLmpzIl0sY1sicGFydHMvR2xvYmFscy5qcyJdLApjWyJwYXJ0cy9OYXZpZ2F0b3JBeGlzLmpzIl0sY1sicGFydHMvT3B0aW9ucy5qcyJdLGNbInBhcnRzL1Njcm9sbGJhci5qcyJdLGNbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihjLGwsdSx6LHgsQSxELHkpe3U9dS5wYXJzZTt2YXIgaz1BLmRlZmF1bHRPcHRpb25zLGI9eS5hZGRFdmVudCxnPXkuY2xhbXAsbT15LmNvcnJlY3RGbG9hdCx0PXkuZGVmaW5lZCxIPXkuZGVzdHJveU9iamVjdFByb3BlcnRpZXMsST15LmVyYXNlLEU9eS5leHRlbmQscD15LmZpbmQsYT15LmlzQXJyYXksdz15LmlzTnVtYmVyLGU9eS5tZXJnZSxDPXkucGljayxxPXkucmVtb3ZlRXZlbnQsZj15LnNwbGF0LGQ9ei5oYXNUb3VjaCx2PXouaXNUb3VjaERldmljZTtBPXouU2VyaWVzO3ZhciBHPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bXSxjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyliW2MtMV09YXJndW1lbnRzW2NdO2I9W10uZmlsdGVyLmNhbGwoYix3KTtpZihiLmxlbmd0aClyZXR1cm4gTWF0aFthXS5hcHBseSgwLApiKX07eT0idW5kZWZpbmVkIj09PXR5cGVvZiB6LnNlcmllc1R5cGVzLmFyZWFzcGxpbmU/ImxpbmUiOiJhcmVhc3BsaW5lIjtFKGsse25hdmlnYXRvcjp7aGVpZ2h0OjQwLG1hcmdpbjoyNSxtYXNrSW5zaWRlOiEwLGhhbmRsZXM6e3dpZHRoOjcsaGVpZ2h0OjE1LHN5bWJvbHM6WyJuYXZpZ2F0b3ItaGFuZGxlIiwibmF2aWdhdG9yLWhhbmRsZSJdLGVuYWJsZWQ6ITAsbGluZVdpZHRoOjEsYmFja2dyb3VuZENvbG9yOiIjZjJmMmYyIixib3JkZXJDb2xvcjoiIzk5OTk5OSJ9LG1hc2tGaWxsOnUoIiM2Njg1YzIiKS5zZXRPcGFjaXR5KC4zKS5nZXQoKSxvdXRsaW5lQ29sb3I6IiNjY2NjY2MiLG91dGxpbmVXaWR0aDoxLHNlcmllczp7dHlwZTp5LGZpbGxPcGFjaXR5Oi4wNSxsaW5lV2lkdGg6MSxjb21wYXJlOm51bGwsZGF0YUdyb3VwaW5nOnthcHByb3hpbWF0aW9uOiJhdmVyYWdlIixlbmFibGVkOiEwLGdyb3VwUGl4ZWxXaWR0aDoyLHNtb290aGVkOiEwLHVuaXRzOltbIm1pbGxpc2Vjb25kIiwKWzEsMiw1LDEwLDIwLDI1LDUwLDEwMCwyMDAsNTAwXV0sWyJzZWNvbmQiLFsxLDIsNSwxMCwxNSwzMF1dLFsibWludXRlIixbMSwyLDUsMTAsMTUsMzBdXSxbImhvdXIiLFsxLDIsMyw0LDYsOCwxMl1dLFsiZGF5IixbMSwyLDMsNF1dLFsid2VlayIsWzEsMiwzXV0sWyJtb250aCIsWzEsMyw2XV0sWyJ5ZWFyIixudWxsXV19LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITEsekluZGV4OjJ9LGlkOiJoaWdoY2hhcnRzLW5hdmlnYXRvci1zZXJpZXMiLGNsYXNzTmFtZToiaGlnaGNoYXJ0cy1uYXZpZ2F0b3Itc2VyaWVzIixsaW5lQ29sb3I6bnVsbCxtYXJrZXI6e2VuYWJsZWQ6ITF9LHRocmVzaG9sZDpudWxsfSx4QXhpczp7b3ZlcnNjcm9sbDowLGNsYXNzTmFtZToiaGlnaGNoYXJ0cy1uYXZpZ2F0b3IteGF4aXMiLHRpY2tMZW5ndGg6MCxsaW5lV2lkdGg6MCxncmlkTGluZUNvbG9yOiIjZTZlNmU2IixncmlkTGluZVdpZHRoOjEsdGlja1BpeGVsSW50ZXJ2YWw6MjAwLGxhYmVsczp7YWxpZ246ImxlZnQiLApzdHlsZTp7Y29sb3I6IiM5OTk5OTkifSx4OjMseTotNH0sY3Jvc3NoYWlyOiExfSx5QXhpczp7Y2xhc3NOYW1lOiJoaWdoY2hhcnRzLW5hdmlnYXRvci15YXhpcyIsZ3JpZExpbmVXaWR0aDowLHN0YXJ0T25UaWNrOiExLGVuZE9uVGljazohMSxtaW5QYWRkaW5nOi4xLG1heFBhZGRpbmc6LjEsbGFiZWxzOntlbmFibGVkOiExfSxjcm9zc2hhaXI6ITEsdGl0bGU6e3RleHQ6bnVsbH0sdGlja0xlbmd0aDowLHRpY2tXaWR0aDowfX19KTt6LlJlbmRlcmVyLnByb3RvdHlwZS5zeW1ib2xzWyJuYXZpZ2F0b3ItaGFuZGxlIl09ZnVuY3Rpb24oYSxiLGMsZSxkKXthPShkJiZkLndpZHRofHwwKS8yO2I9TWF0aC5yb3VuZChhLzMpKy41O2Q9ZCYmZC5oZWlnaHR8fDA7cmV0dXJuW1siTSIsLWEtMSwuNV0sWyJMIixhLC41XSxbIkwiLGEsZCsuNV0sWyJMIiwtYS0xLGQrLjVdLFsiTCIsLWEtMSwuNV0sWyJNIiwtYiw0XSxbIkwiLC1iLGQtM10sWyJNIixiLTEsNF0sWyJMIixiLTEsZC0zXV19O3ZhciBCPQpmdW5jdGlvbigpe2Z1bmN0aW9uIGwoYSl7dGhpcy56b29tZWRNaW49dGhpcy56b29tZWRNYXg9dGhpcy55QXhpcz10aGlzLnhBeGlzPXRoaXMudG9wPXRoaXMuc2l6ZT10aGlzLnNoYWRlcz10aGlzLnJlbmRlcmVkPXRoaXMucmFuZ2U9dGhpcy5vdXRsaW5lSGVpZ2h0PXRoaXMub3V0bGluZT10aGlzLm9wcG9zaXRlPXRoaXMubmF2aWdhdG9yU2l6ZT10aGlzLm5hdmlnYXRvclNlcmllcz10aGlzLm5hdmlnYXRvck9wdGlvbnM9dGhpcy5uYXZpZ2F0b3JHcm91cD10aGlzLm5hdmlnYXRvckVuYWJsZWQ9dGhpcy5sZWZ0PXRoaXMuaGVpZ2h0PXRoaXMuaGFuZGxlcz10aGlzLmNoYXJ0PXRoaXMuYmFzZVNlcmllcz12b2lkIDA7dGhpcy5pbml0KGEpfWwucHJvdG90eXBlLmRyYXdIYW5kbGU9ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGg9dGhpcy5uYXZpZ2F0b3JPcHRpb25zLmhhbmRsZXMuaGVpZ2h0O3RoaXMuaGFuZGxlc1tiXVtlXShjP3t0cmFuc2xhdGVYOk1hdGgucm91bmQodGhpcy5sZWZ0Kwp0aGlzLmhlaWdodC8yKSx0cmFuc2xhdGVZOk1hdGgucm91bmQodGhpcy50b3ArcGFyc2VJbnQoYSwxMCkrLjUtaCl9Ont0cmFuc2xhdGVYOk1hdGgucm91bmQodGhpcy5sZWZ0K3BhcnNlSW50KGEsMTApKSx0cmFuc2xhdGVZOk1hdGgucm91bmQodGhpcy50b3ArdGhpcy5oZWlnaHQvMi1oLzItMSl9KX07bC5wcm90b3R5cGUuZHJhd091dGxpbmU9ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGg9dGhpcy5uYXZpZ2F0b3JPcHRpb25zLm1hc2tJbnNpZGUsZD10aGlzLm91dGxpbmUuc3Ryb2tlV2lkdGgoKSxuPWQvMixmPWQlMi8yO2Q9dGhpcy5vdXRsaW5lSGVpZ2h0O3ZhciBnPXRoaXMuc2Nyb2xsYmFySGVpZ2h0fHwwLGs9dGhpcy5zaXplLGw9dGhpcy5sZWZ0LWcsbT10aGlzLnRvcDtjPyhsLT1uLGM9bStiK2YsYj1tK2ErZixmPVtbIk0iLGwrZCxtLWctZl0sWyJMIixsK2QsY10sWyJMIixsLGNdLFsiTCIsbCxiXSxbIkwiLGwrZCxiXSxbIkwiLGwrZCxtK2srZ11dLGgmJmYucHVzaChbIk0iLApsK2QsYy1uXSxbIkwiLGwrZCxiK25dKSk6KGErPWwrZy1mLGIrPWwrZy1mLG0rPW4sZj1bWyJNIixsLG1dLFsiTCIsYSxtXSxbIkwiLGEsbStkXSxbIkwiLGIsbStkXSxbIkwiLGIsbV0sWyJMIixsK2srMipnLG1dXSxoJiZmLnB1c2goWyJNIixhLW4sbV0sWyJMIixiK24sbV0pKTt0aGlzLm91dGxpbmVbZV0oe2Q6Zn0pfTtsLnByb3RvdHlwZS5kcmF3TWFza3M9ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGQ9dGhpcy5sZWZ0LGg9dGhpcy50b3Asbj10aGlzLmhlaWdodDtpZihjKXt2YXIgZj1bZCxkLGRdO3ZhciBnPVtoLGgrYSxoK2JdO3ZhciBrPVtuLG4sbl07dmFyIGw9W2EsYi1hLHRoaXMuc2l6ZS1iXX1lbHNlIGY9W2QsZCthLGQrYl0sZz1baCxoLGhdLGs9W2EsYi1hLHRoaXMuc2l6ZS1iXSxsPVtuLG4sbl07dGhpcy5zaGFkZXMuZm9yRWFjaChmdW5jdGlvbihhLGIpe2FbZV0oe3g6ZltiXSx5OmdbYl0sd2lkdGg6a1tiXSxoZWlnaHQ6bFtiXX0pfSl9O2wucHJvdG90eXBlLnJlbmRlckVsZW1lbnRzPQpmdW5jdGlvbigpe3ZhciBhPXRoaXMsYj1hLm5hdmlnYXRvck9wdGlvbnMsYz1iLm1hc2tJbnNpZGUsZT1hLmNoYXJ0LGQ9ZS5yZW5kZXJlcixmLGc9e2N1cnNvcjplLmludmVydGVkPyJucy1yZXNpemUiOiJldy1yZXNpemUifTthLm5hdmlnYXRvckdyb3VwPWY9ZC5nKCJuYXZpZ2F0b3IiKS5hdHRyKHt6SW5kZXg6OCx2aXNpYmlsaXR5OiJoaWRkZW4ifSkuYWRkKCk7WyFjLGMsIWNdLmZvckVhY2goZnVuY3Rpb24oYyxoKXthLnNoYWRlc1toXT1kLnJlY3QoKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1uYXZpZ2F0b3ItbWFzayIrKDE9PT1oPyItaW5zaWRlIjoiLW91dHNpZGUiKSkuYWRkKGYpO2Uuc3R5bGVkTW9kZXx8YS5zaGFkZXNbaF0uYXR0cih7ZmlsbDpjP2IubWFza0ZpbGw6InJnYmEoMCwwLDAsMCkifSkuY3NzKDE9PT1oJiZnKX0pO2Eub3V0bGluZT1kLnBhdGgoKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1uYXZpZ2F0b3Itb3V0bGluZSIpLmFkZChmKTtlLnN0eWxlZE1vZGV8fGEub3V0bGluZS5hdHRyKHsic3Ryb2tlLXdpZHRoIjpiLm91dGxpbmVXaWR0aCwKc3Ryb2tlOmIub3V0bGluZUNvbG9yfSk7Yi5oYW5kbGVzLmVuYWJsZWQmJlswLDFdLmZvckVhY2goZnVuY3Rpb24oYyl7Yi5oYW5kbGVzLmludmVydGVkPWUuaW52ZXJ0ZWQ7YS5oYW5kbGVzW2NdPWQuc3ltYm9sKGIuaGFuZGxlcy5zeW1ib2xzW2NdLC1iLmhhbmRsZXMud2lkdGgvMi0xLDAsYi5oYW5kbGVzLndpZHRoLGIuaGFuZGxlcy5oZWlnaHQsYi5oYW5kbGVzKTthLmhhbmRsZXNbY10uYXR0cih7ekluZGV4OjctY30pLmFkZENsYXNzKCJoaWdoY2hhcnRzLW5hdmlnYXRvci1oYW5kbGUgaGlnaGNoYXJ0cy1uYXZpZ2F0b3ItaGFuZGxlLSIrWyJsZWZ0IiwicmlnaHQiXVtjXSkuYWRkKGYpO2lmKCFlLnN0eWxlZE1vZGUpe3ZhciBoPWIuaGFuZGxlczthLmhhbmRsZXNbY10uYXR0cih7ZmlsbDpoLmJhY2tncm91bmRDb2xvcixzdHJva2U6aC5ib3JkZXJDb2xvciwic3Ryb2tlLXdpZHRoIjpoLmxpbmVXaWR0aH0pLmNzcyhnKX19KX07bC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGEpeyh0aGlzLnNlcmllc3x8CltdKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuYmFzZVNlcmllcyYmZGVsZXRlIGEuYmFzZVNlcmllcy5uYXZpZ2F0b3JTZXJpZXN9KTt0aGlzLmRlc3Ryb3koKTtlKCEwLHRoaXMuY2hhcnQub3B0aW9ucy5uYXZpZ2F0b3IsdGhpcy5vcHRpb25zLGEpO3RoaXMuaW5pdCh0aGlzLmNoYXJ0KX07bC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGEsYixjLGUpe3ZhciBkPXRoaXMuY2hhcnQsaD10aGlzLnNjcm9sbGJhckhlaWdodCxmLG49dGhpcy54QXhpcyxrPW4ucG9pbnRSYW5nZXx8MDt2YXIgbD1uLm5hdmlnYXRvckF4aXMuZmFrZT9kLnhBeGlzWzBdOm47dmFyIHA9dGhpcy5uYXZpZ2F0b3JFbmFibGVkLHEscj10aGlzLnJlbmRlcmVkO3ZhciBGPWQuaW52ZXJ0ZWQ7dmFyIHU9ZC54QXhpc1swXS5taW5SYW5nZSx2PWQueEF4aXNbMF0ub3B0aW9ucy5tYXhSYW5nZTtpZighdGhpcy5oYXNEcmFnZ2VkfHx0KGMpKXthPW0oYS1rLzIpO2I9bShiK2svMik7aWYoIXcoYSl8fCF3KGIpKWlmKHIpYz0KMCxlPUMobi53aWR0aCxsLndpZHRoKTtlbHNlIHJldHVybjt0aGlzLmxlZnQ9QyhuLmxlZnQsZC5wbG90TGVmdCtoKyhGP2QucGxvdFdpZHRoOjApKTt0aGlzLnNpemU9cT1mPUMobi5sZW4sKEY/ZC5wbG90SGVpZ2h0OmQucGxvdFdpZHRoKS0yKmgpO2Q9Rj9oOmYrMipoO2M9QyhjLG4udG9QaXhlbHMoYSwhMCkpO2U9QyhlLG4udG9QaXhlbHMoYiwhMCkpO3coYykmJkluZmluaXR5IT09TWF0aC5hYnMoYyl8fChjPTAsZT1kKTthPW4udG9WYWx1ZShjLCEwKTtiPW4udG9WYWx1ZShlLCEwKTt2YXIgeD1NYXRoLmFicyhtKGItYSkpO3g8dT90aGlzLmdyYWJiZWRMZWZ0P2M9bi50b1BpeGVscyhiLXUtaywhMCk6dGhpcy5ncmFiYmVkUmlnaHQmJihlPW4udG9QaXhlbHMoYSt1K2ssITApKTp0KHYpJiZtKHgtayk+diYmKHRoaXMuZ3JhYmJlZExlZnQ/Yz1uLnRvUGl4ZWxzKGItdi1rLCEwKTp0aGlzLmdyYWJiZWRSaWdodCYmKGU9bi50b1BpeGVscyhhK3YraywhMCkpKTt0aGlzLnpvb21lZE1heD0KZyhNYXRoLm1heChjLGUpLDAscSk7dGhpcy56b29tZWRNaW49Zyh0aGlzLmZpeGVkV2lkdGg/dGhpcy56b29tZWRNYXgtdGhpcy5maXhlZFdpZHRoOk1hdGgubWluKGMsZSksMCxxKTt0aGlzLnJhbmdlPXRoaXMuem9vbWVkTWF4LXRoaXMuem9vbWVkTWluO3E9TWF0aC5yb3VuZCh0aGlzLnpvb21lZE1heCk7Yz1NYXRoLnJvdW5kKHRoaXMuem9vbWVkTWluKTtwJiYodGhpcy5uYXZpZ2F0b3JHcm91cC5hdHRyKHt2aXNpYmlsaXR5OiJ2aXNpYmxlIn0pLHI9ciYmIXRoaXMuaGFzRHJhZ2dlZD8iYW5pbWF0ZSI6ImF0dHIiLHRoaXMuZHJhd01hc2tzKGMscSxGLHIpLHRoaXMuZHJhd091dGxpbmUoYyxxLEYsciksdGhpcy5uYXZpZ2F0b3JPcHRpb25zLmhhbmRsZXMuZW5hYmxlZCYmKHRoaXMuZHJhd0hhbmRsZShjLDAsRixyKSx0aGlzLmRyYXdIYW5kbGUocSwxLEYscikpKTt0aGlzLnNjcm9sbGJhciYmKEY/KEY9dGhpcy50b3AtaCxsPXRoaXMubGVmdC1oKyhwfHwhbC5vcHBvc2l0ZT8wOgoobC50aXRsZU9mZnNldHx8MCkrbC5heGlzVGl0bGVNYXJnaW4pLGg9ZisyKmgpOihGPXRoaXMudG9wKyhwP3RoaXMuaGVpZ2h0Oi1oKSxsPXRoaXMubGVmdC1oKSx0aGlzLnNjcm9sbGJhci5wb3NpdGlvbihsLEYsZCxoKSx0aGlzLnNjcm9sbGJhci5zZXRSYW5nZSh0aGlzLnpvb21lZE1pbi8oZnx8MSksdGhpcy56b29tZWRNYXgvKGZ8fDEpKSk7dGhpcy5yZW5kZXJlZD0hMH19O2wucHJvdG90eXBlLmFkZE1vdXNlRXZlbnRzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxjPWEuY2hhcnQsZT1jLmNvbnRhaW5lcixmPVtdLGcsazthLm1vdXNlTW92ZUhhbmRsZXI9Zz1mdW5jdGlvbihiKXthLm9uTW91c2VNb3ZlKGIpfTthLm1vdXNlVXBIYW5kbGVyPWs9ZnVuY3Rpb24oYil7YS5vbk1vdXNlVXAoYil9O2Y9YS5nZXRQYXJ0c0V2ZW50cygibW91c2Vkb3duIik7Zi5wdXNoKGIoYy5yZW5kZXJUbywibW91c2Vtb3ZlIixnKSxiKGUub3duZXJEb2N1bWVudCwibW91c2V1cCIsaykpO2QmJihmLnB1c2goYihjLnJlbmRlclRvLAoidG91Y2htb3ZlIixnKSxiKGUub3duZXJEb2N1bWVudCwidG91Y2hlbmQiLGspKSxmLmNvbmNhdChhLmdldFBhcnRzRXZlbnRzKCJ0b3VjaHN0YXJ0IikpKTthLmV2ZW50c1RvVW5iaW5kPWY7YS5zZXJpZXMmJmEuc2VyaWVzWzBdJiZmLnB1c2goYihhLnNlcmllc1swXS54QXhpcywiZm91bmRFeHRyZW1lcyIsZnVuY3Rpb24oKXtjLm5hdmlnYXRvci5tb2RpZnlOYXZpZ2F0b3JBeGlzRXh0cmVtZXMoKX0pKX07bC5wcm90b3R5cGUuZ2V0UGFydHNFdmVudHM9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcyxlPVtdO1sic2hhZGVzIiwiaGFuZGxlcyJdLmZvckVhY2goZnVuY3Rpb24oZCl7Y1tkXS5mb3JFYWNoKGZ1bmN0aW9uKGgsZil7ZS5wdXNoKGIoaC5lbGVtZW50LGEsZnVuY3Rpb24oYSl7Y1tkKyJNb3VzZWRvd24iXShhLGYpfSkpfSl9KTtyZXR1cm4gZX07bC5wcm90b3R5cGUuc2hhZGVzTW91c2Vkb3duPWZ1bmN0aW9uKGEsYil7YT10aGlzLmNoYXJ0LnBvaW50ZXIubm9ybWFsaXplKGEpOwp2YXIgYz10aGlzLmNoYXJ0LGU9dGhpcy54QXhpcyxkPXRoaXMuem9vbWVkTWluLGg9dGhpcy5sZWZ0LGY9dGhpcy5zaXplLGc9dGhpcy5yYW5nZSxuPWEuY2hhcnRYO2MuaW52ZXJ0ZWQmJihuPWEuY2hhcnRZLGg9dGhpcy50b3ApO2lmKDE9PT1iKXRoaXMuZ3JhYmJlZENlbnRlcj1uLHRoaXMuZml4ZWRXaWR0aD1nLHRoaXMuZHJhZ09mZnNldD1uLWQ7ZWxzZXthPW4taC1nLzI7aWYoMD09PWIpYT1NYXRoLm1heCgwLGEpO2Vsc2UgaWYoMj09PWImJmErZz49ZilpZihhPWYtZyx0aGlzLnJldmVyc2VkRXh0cmVtZXMpe2EtPWc7dmFyIGs9dGhpcy5nZXRVbmlvbkV4dHJlbWVzKCkuZGF0YU1pbn1lbHNlIHZhciBsPXRoaXMuZ2V0VW5pb25FeHRyZW1lcygpLmRhdGFNYXg7YSE9PWQmJih0aGlzLmZpeGVkV2lkdGg9ZyxiPWUubmF2aWdhdG9yQXhpcy50b0ZpeGVkUmFuZ2UoYSxhK2csayxsKSx0KGIubWluKSYmYy54QXhpc1swXS5zZXRFeHRyZW1lcyhNYXRoLm1pbihiLm1pbixiLm1heCksCk1hdGgubWF4KGIubWluLGIubWF4KSwhMCxudWxsLHt0cmlnZ2VyOiJuYXZpZ2F0b3IifSkpfX07bC5wcm90b3R5cGUuaGFuZGxlc01vdXNlZG93bj1mdW5jdGlvbihhLGIpe3RoaXMuY2hhcnQucG9pbnRlci5ub3JtYWxpemUoYSk7YT10aGlzLmNoYXJ0O3ZhciBjPWEueEF4aXNbMF0sZT10aGlzLnJldmVyc2VkRXh0cmVtZXM7MD09PWI/KHRoaXMuZ3JhYmJlZExlZnQ9ITAsdGhpcy5vdGhlckhhbmRsZVBvcz10aGlzLnpvb21lZE1heCx0aGlzLmZpeGVkRXh0cmVtZT1lP2MubWluOmMubWF4KToodGhpcy5ncmFiYmVkUmlnaHQ9ITAsdGhpcy5vdGhlckhhbmRsZVBvcz10aGlzLnpvb21lZE1pbix0aGlzLmZpeGVkRXh0cmVtZT1lP2MubWF4OmMubWluKTthLmZpeGVkUmFuZ2U9bnVsbH07bC5wcm90b3R5cGUub25Nb3VzZU1vdmU9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxjPWIuY2hhcnQsZT1iLmxlZnQsZD1iLm5hdmlnYXRvclNpemUsaD1iLnJhbmdlLGY9Yi5kcmFnT2Zmc2V0LGc9Yy5pbnZlcnRlZDsKYS50b3VjaGVzJiYwPT09YS50b3VjaGVzWzBdLnBhZ2VYfHwoYT1jLnBvaW50ZXIubm9ybWFsaXplKGEpLGM9YS5jaGFydFgsZyYmKGU9Yi50b3AsYz1hLmNoYXJ0WSksYi5ncmFiYmVkTGVmdD8oYi5oYXNEcmFnZ2VkPSEwLGIucmVuZGVyKDAsMCxjLWUsYi5vdGhlckhhbmRsZVBvcykpOmIuZ3JhYmJlZFJpZ2h0PyhiLmhhc0RyYWdnZWQ9ITAsYi5yZW5kZXIoMCwwLGIub3RoZXJIYW5kbGVQb3MsYy1lKSk6Yi5ncmFiYmVkQ2VudGVyJiYoYi5oYXNEcmFnZ2VkPSEwLGM8Zj9jPWY6Yz5kK2YtaCYmKGM9ZCtmLWgpLGIucmVuZGVyKDAsMCxjLWYsYy1mK2gpKSxiLmhhc0RyYWdnZWQmJmIuc2Nyb2xsYmFyJiZDKGIuc2Nyb2xsYmFyLm9wdGlvbnMubGl2ZVJlZHJhdyx6LnN2ZyYmIXYmJiF0aGlzLmNoYXJ0LmlzQm9vc3RpbmcpJiYoYS5ET01UeXBlPWEudHlwZSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yi5vbk1vdXNlVXAoYSl9LDApKSl9O2wucHJvdG90eXBlLm9uTW91c2VVcD1mdW5jdGlvbihhKXt2YXIgYj0KdGhpcy5jaGFydCxjPXRoaXMueEF4aXMsZT10aGlzLnNjcm9sbGJhcixkPWEuRE9NRXZlbnR8fGEsaD1iLmludmVydGVkLGY9dGhpcy5yZW5kZXJlZCYmIXRoaXMuaGFzRHJhZ2dlZD8iYW5pbWF0ZSI6ImF0dHIiLGc9TWF0aC5yb3VuZCh0aGlzLnpvb21lZE1heCksaz1NYXRoLnJvdW5kKHRoaXMuem9vbWVkTWluKTtpZih0aGlzLmhhc0RyYWdnZWQmJighZXx8IWUuaGFzRHJhZ2dlZCl8fCJzY3JvbGxiYXIiPT09YS50cmlnZ2VyKXtlPXRoaXMuZ2V0VW5pb25FeHRyZW1lcygpO2lmKHRoaXMuem9vbWVkTWluPT09dGhpcy5vdGhlckhhbmRsZVBvcyl2YXIgbD10aGlzLmZpeGVkRXh0cmVtZTtlbHNlIGlmKHRoaXMuem9vbWVkTWF4PT09dGhpcy5vdGhlckhhbmRsZVBvcyl2YXIgbT10aGlzLmZpeGVkRXh0cmVtZTt0aGlzLnpvb21lZE1heD09PXRoaXMuc2l6ZSYmKG09dGhpcy5yZXZlcnNlZEV4dHJlbWVzP2UuZGF0YU1pbjplLmRhdGFNYXgpOzA9PT10aGlzLnpvb21lZE1pbiYmKGw9CnRoaXMucmV2ZXJzZWRFeHRyZW1lcz9lLmRhdGFNYXg6ZS5kYXRhTWluKTtjPWMubmF2aWdhdG9yQXhpcy50b0ZpeGVkUmFuZ2UodGhpcy56b29tZWRNaW4sdGhpcy56b29tZWRNYXgsbCxtKTt0KGMubWluKSYmYi54QXhpc1swXS5zZXRFeHRyZW1lcyhNYXRoLm1pbihjLm1pbixjLm1heCksTWF0aC5tYXgoYy5taW4sYy5tYXgpLCEwLHRoaXMuaGFzRHJhZ2dlZD8hMTpudWxsLHt0cmlnZ2VyOiJuYXZpZ2F0b3IiLHRyaWdnZXJPcDoibmF2aWdhdG9yLWRyYWciLERPTUV2ZW50OmR9KX0ibW91c2Vtb3ZlIiE9PWEuRE9NVHlwZSYmInRvdWNobW92ZSIhPT1hLkRPTVR5cGUmJih0aGlzLmdyYWJiZWRMZWZ0PXRoaXMuZ3JhYmJlZFJpZ2h0PXRoaXMuZ3JhYmJlZENlbnRlcj10aGlzLmZpeGVkV2lkdGg9dGhpcy5maXhlZEV4dHJlbWU9dGhpcy5vdGhlckhhbmRsZVBvcz10aGlzLmhhc0RyYWdnZWQ9dGhpcy5kcmFnT2Zmc2V0PW51bGwpO3RoaXMubmF2aWdhdG9yRW5hYmxlZCYmKHRoaXMuc2hhZGVzJiYKdGhpcy5kcmF3TWFza3MoayxnLGgsZiksdGhpcy5vdXRsaW5lJiZ0aGlzLmRyYXdPdXRsaW5lKGssZyxoLGYpLHRoaXMubmF2aWdhdG9yT3B0aW9ucy5oYW5kbGVzLmVuYWJsZWQmJk9iamVjdC5rZXlzKHRoaXMuaGFuZGxlcykubGVuZ3RoPT09dGhpcy5oYW5kbGVzLmxlbmd0aCYmKHRoaXMuZHJhd0hhbmRsZShrLDAsaCxmKSx0aGlzLmRyYXdIYW5kbGUoZywxLGgsZikpKX07bC5wcm90b3R5cGUucmVtb3ZlRXZlbnRzPWZ1bmN0aW9uKCl7dGhpcy5ldmVudHNUb1VuYmluZCYmKHRoaXMuZXZlbnRzVG9VbmJpbmQuZm9yRWFjaChmdW5jdGlvbihhKXthKCl9KSx0aGlzLmV2ZW50c1RvVW5iaW5kPXZvaWQgMCk7dGhpcy5yZW1vdmVCYXNlU2VyaWVzRXZlbnRzKCl9O2wucHJvdG90eXBlLnJlbW92ZUJhc2VTZXJpZXNFdmVudHM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmJhc2VTZXJpZXN8fFtdO3RoaXMubmF2aWdhdG9yRW5hYmxlZCYmYVswXSYmKCExIT09dGhpcy5uYXZpZ2F0b3JPcHRpb25zLmFkYXB0VG9VcGRhdGVkRGF0YSYmCmEuZm9yRWFjaChmdW5jdGlvbihhKXtxKGEsInVwZGF0ZWREYXRhIix0aGlzLnVwZGF0ZWREYXRhSGFuZGxlcil9LHRoaXMpLGFbMF0ueEF4aXMmJnEoYVswXS54QXhpcywiZm91bmRFeHRyZW1lcyIsdGhpcy5tb2RpZnlCYXNlQXhpc0V4dHJlbWVzKSl9O2wucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oYSl7dmFyIGQ9YS5vcHRpb25zLGg9ZC5uYXZpZ2F0b3IsZj1oLmVuYWJsZWQsZz1kLnNjcm9sbGJhcixrPWcuZW5hYmxlZDtkPWY/aC5oZWlnaHQ6MDt2YXIgbD1rP2cuaGVpZ2h0OjA7dGhpcy5oYW5kbGVzPVtdO3RoaXMuc2hhZGVzPVtdO3RoaXMuY2hhcnQ9YTt0aGlzLnNldEJhc2VTZXJpZXMoKTt0aGlzLmhlaWdodD1kO3RoaXMuc2Nyb2xsYmFySGVpZ2h0PWw7dGhpcy5zY3JvbGxiYXJFbmFibGVkPWs7dGhpcy5uYXZpZ2F0b3JFbmFibGVkPWY7dGhpcy5uYXZpZ2F0b3JPcHRpb25zPWg7dGhpcy5zY3JvbGxiYXJPcHRpb25zPWc7dGhpcy5vdXRsaW5lSGVpZ2h0PWQrbDt0aGlzLm9wcG9zaXRlPQpDKGgub3Bwb3NpdGUsIShmfHwhYS5pbnZlcnRlZCkpO3ZhciBtPXRoaXM7Zj1tLmJhc2VTZXJpZXM7Zz1hLnhBeGlzLmxlbmd0aDtrPWEueUF4aXMubGVuZ3RoO3ZhciBwPWYmJmZbMF0mJmZbMF0ueEF4aXN8fGEueEF4aXNbMF18fHtvcHRpb25zOnt9fTthLmlzRGlydHlCb3g9ITA7bS5uYXZpZ2F0b3JFbmFibGVkPyhtLnhBeGlzPW5ldyBjKGEsZSh7YnJlYWtzOnAub3B0aW9ucy5icmVha3Msb3JkaW5hbDpwLm9wdGlvbnMub3JkaW5hbH0saC54QXhpcyx7aWQ6Im5hdmlnYXRvci14LWF4aXMiLHlBeGlzOiJuYXZpZ2F0b3IteS1heGlzIixpc1g6ITAsdHlwZToiZGF0ZXRpbWUiLGluZGV4OmcsaXNJbnRlcm5hbDohMCxvZmZzZXQ6MCxrZWVwT3JkaW5hbFBhZGRpbmc6ITAsc3RhcnRPblRpY2s6ITEsZW5kT25UaWNrOiExLG1pblBhZGRpbmc6MCxtYXhQYWRkaW5nOjAsem9vbUVuYWJsZWQ6ITF9LGEuaW52ZXJ0ZWQ/e29mZnNldHM6W2wsMCwtbCwwXSx3aWR0aDpkfTp7b2Zmc2V0czpbMCwKLWwsMCxsXSxoZWlnaHQ6ZH0pKSxtLnlBeGlzPW5ldyBjKGEsZShoLnlBeGlzLHtpZDoibmF2aWdhdG9yLXktYXhpcyIsYWxpZ25UaWNrczohMSxvZmZzZXQ6MCxpbmRleDprLGlzSW50ZXJuYWw6ITAsem9vbUVuYWJsZWQ6ITF9LGEuaW52ZXJ0ZWQ/e3dpZHRoOmR9OntoZWlnaHQ6ZH0pKSxmfHxoLnNlcmllcy5kYXRhP20udXBkYXRlTmF2aWdhdG9yU2VyaWVzKCExKTowPT09YS5zZXJpZXMubGVuZ3RoJiYobS51bmJpbmRSZWRyYXc9YihhLCJiZWZvcmVSZWRyYXciLGZ1bmN0aW9uKCl7MDxhLnNlcmllcy5sZW5ndGgmJiFtLnNlcmllcyYmKG0uc2V0QmFzZVNlcmllcygpLG0udW5iaW5kUmVkcmF3KCkpfSkpLG0ucmV2ZXJzZWRFeHRyZW1lcz1hLmludmVydGVkJiYhbS54QXhpcy5yZXZlcnNlZHx8IWEuaW52ZXJ0ZWQmJm0ueEF4aXMucmV2ZXJzZWQsbS5yZW5kZXJFbGVtZW50cygpLG0uYWRkTW91c2VFdmVudHMoKSk6KG0ueEF4aXM9e2NoYXJ0OmEsbmF2aWdhdG9yQXhpczp7ZmFrZTohMH0sCnRyYW5zbGF0ZTpmdW5jdGlvbihiLGMpe3ZhciBlPWEueEF4aXNbMF0sZD1lLmdldEV4dHJlbWVzKCksaD1lLmxlbi0yKmwsZj1HKCJtaW4iLGUub3B0aW9ucy5taW4sZC5kYXRhTWluKTtlPUcoIm1heCIsZS5vcHRpb25zLm1heCxkLmRhdGFNYXgpLWY7cmV0dXJuIGM/YiplL2grZjpoKihiLWYpL2V9LHRvUGl4ZWxzOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnRyYW5zbGF0ZShhKX0sdG9WYWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy50cmFuc2xhdGUoYSwhMCl9fSxtLnhBeGlzLm5hdmlnYXRvckF4aXMuYXhpcz1tLnhBeGlzLG0ueEF4aXMubmF2aWdhdG9yQXhpcy50b0ZpeGVkUmFuZ2U9eC5BZGRpdGlvbnNDbGFzcy5wcm90b3R5cGUudG9GaXhlZFJhbmdlLmJpbmQobS54QXhpcy5uYXZpZ2F0b3JBeGlzKSk7YS5vcHRpb25zLnNjcm9sbGJhci5lbmFibGVkJiYoYS5zY3JvbGxiYXI9bS5zY3JvbGxiYXI9bmV3IEQoYS5yZW5kZXJlcixlKGEub3B0aW9ucy5zY3JvbGxiYXIse21hcmdpbjptLm5hdmlnYXRvckVuYWJsZWQ/CjA6MTAsdmVydGljYWw6YS5pbnZlcnRlZH0pLGEpLGIobS5zY3JvbGxiYXIsImNoYW5nZWQiLGZ1bmN0aW9uKGIpe3ZhciBjPW0uc2l6ZSxlPWMqdGhpcy50bztjKj10aGlzLmZyb207bS5oYXNEcmFnZ2VkPW0uc2Nyb2xsYmFyLmhhc0RyYWdnZWQ7bS5yZW5kZXIoMCwwLGMsZSk7KGEub3B0aW9ucy5zY3JvbGxiYXIubGl2ZVJlZHJhd3x8Im1vdXNlbW92ZSIhPT1iLkRPTVR5cGUmJiJ0b3VjaG1vdmUiIT09Yi5ET01UeXBlKSYmc2V0VGltZW91dChmdW5jdGlvbigpe20ub25Nb3VzZVVwKGIpfSl9KSk7bS5hZGRCYXNlU2VyaWVzRXZlbnRzKCk7bS5hZGRDaGFydEV2ZW50cygpfTtsLnByb3RvdHlwZS5nZXRVbmlvbkV4dHJlbWVzPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY2hhcnQueEF4aXNbMF0sYz10aGlzLnhBeGlzLGU9Yy5vcHRpb25zLGQ9Yi5vcHRpb25zLGg7YSYmbnVsbD09PWIuZGF0YU1pbnx8KGg9e2RhdGFNaW46QyhlJiZlLm1pbixHKCJtaW4iLGQubWluLGIuZGF0YU1pbiwKYy5kYXRhTWluLGMubWluKSksZGF0YU1heDpDKGUmJmUubWF4LEcoIm1heCIsZC5tYXgsYi5kYXRhTWF4LGMuZGF0YU1heCxjLm1heCkpfSk7cmV0dXJuIGh9O2wucHJvdG90eXBlLnNldEJhc2VTZXJpZXM9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNoYXJ0LGU9dGhpcy5iYXNlU2VyaWVzPVtdO2E9YXx8Yy5vcHRpb25zJiZjLm9wdGlvbnMubmF2aWdhdG9yLmJhc2VTZXJpZXN8fChjLnNlcmllcy5sZW5ndGg/cChjLnNlcmllcyxmdW5jdGlvbihhKXtyZXR1cm4hYS5vcHRpb25zLmlzSW50ZXJuYWx9KS5pbmRleDowKTsoYy5zZXJpZXN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGIsYyl7Yi5vcHRpb25zLmlzSW50ZXJuYWx8fCFiLm9wdGlvbnMuc2hvd0luTmF2aWdhdG9yJiYoYyE9PWEmJmIub3B0aW9ucy5pZCE9PWF8fCExPT09Yi5vcHRpb25zLnNob3dJbk5hdmlnYXRvcil8fGUucHVzaChiKX0pO3RoaXMueEF4aXMmJiF0aGlzLnhBeGlzLm5hdmlnYXRvckF4aXMuZmFrZSYmdGhpcy51cGRhdGVOYXZpZ2F0b3JTZXJpZXMoITAsCmIpfTtsLnByb3RvdHlwZS51cGRhdGVOYXZpZ2F0b3JTZXJpZXM9ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLGg9ZC5jaGFydCxnPWQuYmFzZVNlcmllcyxuLGwsbT1kLm5hdmlnYXRvck9wdGlvbnMuc2VyaWVzLHAscj17ZW5hYmxlTW91c2VUcmFja2luZzohMSxpbmRleDpudWxsLGxpbmtlZFRvOm51bGwsZ3JvdXA6Im5hdiIscGFkWEF4aXM6ITEseEF4aXM6Im5hdmlnYXRvci14LWF4aXMiLHlBeGlzOiJuYXZpZ2F0b3IteS1heGlzIixzaG93SW5MZWdlbmQ6ITEsc3RhY2tpbmc6dm9pZCAwLGlzSW50ZXJuYWw6ITAsc3RhdGVzOntpbmFjdGl2ZTp7b3BhY2l0eToxfX19LHQ9ZC5zZXJpZXM9KGQuc2VyaWVzfHxbXSkuZmlsdGVyKGZ1bmN0aW9uKGEpe3ZhciBiPWEuYmFzZVNlcmllcztyZXR1cm4gMD5nLmluZGV4T2YoYik/KGImJihxKGIsInVwZGF0ZWREYXRhIixkLnVwZGF0ZWREYXRhSGFuZGxlciksZGVsZXRlIGIubmF2aWdhdG9yU2VyaWVzKSxhLmNoYXJ0JiZhLmRlc3Ryb3koKSwKITEpOiEwfSk7ZyYmZy5sZW5ndGgmJmcuZm9yRWFjaChmdW5jdGlvbihiKXt2YXIgZj1iLm5hdmlnYXRvclNlcmllcyxxPUUoe2NvbG9yOmIuY29sb3IsdmlzaWJsZTpiLnZpc2libGV9LGEobSk/ay5uYXZpZ2F0b3Iuc2VyaWVzOm0pO2YmJiExPT09ZC5uYXZpZ2F0b3JPcHRpb25zLmFkYXB0VG9VcGRhdGVkRGF0YXx8KHIubmFtZT0iTmF2aWdhdG9yICIrZy5sZW5ndGgsbj1iLm9wdGlvbnN8fHt9LHA9bi5uYXZpZ2F0b3JPcHRpb25zfHx7fSxsPWUobixyLHEscCksbC5wb2ludFJhbmdlPUMocS5wb2ludFJhbmdlLHAucG9pbnRSYW5nZSxrLnBsb3RPcHRpb25zW2wudHlwZXx8ImxpbmUiXS5wb2ludFJhbmdlKSxxPXAuZGF0YXx8cS5kYXRhLGQuaGFzTmF2aWdhdG9yRGF0YT1kLmhhc05hdmlnYXRvckRhdGF8fCEhcSxsLmRhdGE9cXx8bi5kYXRhJiZuLmRhdGEuc2xpY2UoMCksZiYmZi5vcHRpb25zP2YudXBkYXRlKGwsYyk6KGIubmF2aWdhdG9yU2VyaWVzPWguaW5pdFNlcmllcyhsKSwKYi5uYXZpZ2F0b3JTZXJpZXMuYmFzZVNlcmllcz1iLHQucHVzaChiLm5hdmlnYXRvclNlcmllcykpKX0pO2lmKG0uZGF0YSYmKCFnfHwhZy5sZW5ndGgpfHxhKG0pKWQuaGFzTmF2aWdhdG9yRGF0YT0hMSxtPWYobSksbS5mb3JFYWNoKGZ1bmN0aW9uKGEsYil7ci5uYW1lPSJOYXZpZ2F0b3IgIisodC5sZW5ndGgrMSk7bD1lKGsubmF2aWdhdG9yLnNlcmllcyx7Y29sb3I6aC5zZXJpZXNbYl0mJiFoLnNlcmllc1tiXS5vcHRpb25zLmlzSW50ZXJuYWwmJmguc2VyaWVzW2JdLmNvbG9yfHxoLm9wdGlvbnMuY29sb3JzW2JdfHxoLm9wdGlvbnMuY29sb3JzWzBdfSxyLGEpO2wuZGF0YT1hLmRhdGE7bC5kYXRhJiYoZC5oYXNOYXZpZ2F0b3JEYXRhPSEwLHQucHVzaChoLmluaXRTZXJpZXMobCkpKX0pO2ImJnRoaXMuYWRkQmFzZVNlcmllc0V2ZW50cygpfTtsLnByb3RvdHlwZS5hZGRCYXNlU2VyaWVzRXZlbnRzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxjPWEuYmFzZVNlcmllc3x8W107Y1swXSYmCmNbMF0ueEF4aXMmJmIoY1swXS54QXhpcywiZm91bmRFeHRyZW1lcyIsdGhpcy5tb2RpZnlCYXNlQXhpc0V4dHJlbWVzKTtjLmZvckVhY2goZnVuY3Rpb24oYyl7YihjLCJzaG93IixmdW5jdGlvbigpe3RoaXMubmF2aWdhdG9yU2VyaWVzJiZ0aGlzLm5hdmlnYXRvclNlcmllcy5zZXRWaXNpYmxlKCEwLCExKX0pO2IoYywiaGlkZSIsZnVuY3Rpb24oKXt0aGlzLm5hdmlnYXRvclNlcmllcyYmdGhpcy5uYXZpZ2F0b3JTZXJpZXMuc2V0VmlzaWJsZSghMSwhMSl9KTshMSE9PXRoaXMubmF2aWdhdG9yT3B0aW9ucy5hZGFwdFRvVXBkYXRlZERhdGEmJmMueEF4aXMmJmIoYywidXBkYXRlZERhdGEiLHRoaXMudXBkYXRlZERhdGFIYW5kbGVyKTtiKGMsInJlbW92ZSIsZnVuY3Rpb24oKXt0aGlzLm5hdmlnYXRvclNlcmllcyYmKEkoYS5zZXJpZXMsdGhpcy5uYXZpZ2F0b3JTZXJpZXMpLHQodGhpcy5uYXZpZ2F0b3JTZXJpZXMub3B0aW9ucykmJnRoaXMubmF2aWdhdG9yU2VyaWVzLnJlbW92ZSghMSksCmRlbGV0ZSB0aGlzLm5hdmlnYXRvclNlcmllcyl9KX0sdGhpcyl9O2wucHJvdG90eXBlLmdldEJhc2VTZXJpZXNNaW49ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYmFzZVNlcmllcy5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtyZXR1cm4gTWF0aC5taW4oYSxiLnhEYXRhP2IueERhdGFbMF06YSl9LGEpfTtsLnByb3RvdHlwZS5tb2RpZnlOYXZpZ2F0b3JBeGlzRXh0cmVtZXM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnhBeGlzLGI7InVuZGVmaW5lZCIhPT10eXBlb2YgYS5nZXRFeHRyZW1lcyYmKCEoYj10aGlzLmdldFVuaW9uRXh0cmVtZXMoITApKXx8Yi5kYXRhTWluPT09YS5taW4mJmIuZGF0YU1heD09PWEubWF4fHwoYS5taW49Yi5kYXRhTWluLGEubWF4PWIuZGF0YU1heCkpfTtsLnByb3RvdHlwZS5tb2RpZnlCYXNlQXhpc0V4dHJlbWVzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jaGFydC5uYXZpZ2F0b3IsYj10aGlzLmdldEV4dHJlbWVzKCksYz1iLmRhdGFNaW4sZT1iLmRhdGFNYXg7Yj0KYi5tYXgtYi5taW47dmFyIGQ9YS5zdGlja1RvTWluLGY9YS5zdGlja1RvTWF4LGc9Qyh0aGlzLm9wdGlvbnMub3ZlcnNjcm9sbCwwKSxrPWEuc2VyaWVzJiZhLnNlcmllc1swXSxsPSEhdGhpcy5zZXRFeHRyZW1lcztpZighdGhpcy5ldmVudEFyZ3N8fCJyYW5nZVNlbGVjdG9yQnV0dG9uIiE9PXRoaXMuZXZlbnRBcmdzLnRyaWdnZXIpe2lmKGQpe3ZhciBtPWM7dmFyIHA9bStifWYmJihwPWUrZyxkfHwobT1NYXRoLm1heChjLHAtYixhLmdldEJhc2VTZXJpZXNNaW4oayYmay54RGF0YT9rLnhEYXRhWzBdOi1OdW1iZXIuTUFYX1ZBTFVFKSkpKTtsJiYoZHx8ZikmJncobSkmJih0aGlzLm1pbj10aGlzLnVzZXJNaW49bSx0aGlzLm1heD10aGlzLnVzZXJNYXg9cCl9YS5zdGlja1RvTWluPWEuc3RpY2tUb01heD1udWxsfTtsLnByb3RvdHlwZS51cGRhdGVkRGF0YUhhbmRsZXI9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNoYXJ0Lm5hdmlnYXRvcixiPXRoaXMubmF2aWdhdG9yU2VyaWVzLGM9CmEuZ2V0QmFzZVNlcmllc01pbih0aGlzLnhEYXRhWzBdKTthLnN0aWNrVG9NYXg9YS5yZXZlcnNlZEV4dHJlbWVzPzA9PT1NYXRoLnJvdW5kKGEuem9vbWVkTWluKTpNYXRoLnJvdW5kKGEuem9vbWVkTWF4KT49TWF0aC5yb3VuZChhLnNpemUpO2Euc3RpY2tUb01pbj13KHRoaXMueEF4aXMubWluKSYmdGhpcy54QXhpcy5taW48PWMmJighdGhpcy5jaGFydC5maXhlZFJhbmdlfHwhYS5zdGlja1RvTWF4KTtiJiYhYS5oYXNOYXZpZ2F0b3JEYXRhJiYoYi5vcHRpb25zLnBvaW50U3RhcnQ9dGhpcy54RGF0YVswXSxiLnNldERhdGEodGhpcy5vcHRpb25zLmRhdGEsITEsbnVsbCwhMSkpfTtsLnByb3RvdHlwZS5hZGRDaGFydEV2ZW50cz1mdW5jdGlvbigpe3RoaXMuZXZlbnRzVG9VbmJpbmR8fCh0aGlzLmV2ZW50c1RvVW5iaW5kPVtdKTt0aGlzLmV2ZW50c1RvVW5iaW5kLnB1c2goYih0aGlzLmNoYXJ0LCJyZWRyYXciLGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5uYXZpZ2F0b3IsYj1hJiYoYS5iYXNlU2VyaWVzJiYKYS5iYXNlU2VyaWVzWzBdJiZhLmJhc2VTZXJpZXNbMF0ueEF4aXN8fHRoaXMueEF4aXNbMF0pO2ImJmEucmVuZGVyKGIubWluLGIubWF4KX0pLGIodGhpcy5jaGFydCwiZ2V0TWFyZ2lucyIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLm5hdmlnYXRvcixiPWEub3Bwb3NpdGU/InBsb3RUb3AiOiJtYXJnaW5Cb3R0b20iO3RoaXMuaW52ZXJ0ZWQmJihiPWEub3Bwb3NpdGU/Im1hcmdpblJpZ2h0IjoicGxvdExlZnQiKTt0aGlzW2JdPSh0aGlzW2JdfHwwKSsoYS5uYXZpZ2F0b3JFbmFibGVkfHwhdGhpcy5pbnZlcnRlZD9hLm91dGxpbmVIZWlnaHQ6MCkrYS5uYXZpZ2F0b3JPcHRpb25zLm1hcmdpbn0pKX07bC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMucmVtb3ZlRXZlbnRzKCk7dGhpcy54QXhpcyYmKEkodGhpcy5jaGFydC54QXhpcyx0aGlzLnhBeGlzKSxJKHRoaXMuY2hhcnQuYXhlcyx0aGlzLnhBeGlzKSk7dGhpcy55QXhpcyYmKEkodGhpcy5jaGFydC55QXhpcyx0aGlzLnlBeGlzKSwKSSh0aGlzLmNoYXJ0LmF4ZXMsdGhpcy55QXhpcykpOyh0aGlzLnNlcmllc3x8W10pLmZvckVhY2goZnVuY3Rpb24oYSl7YS5kZXN0cm95JiZhLmRlc3Ryb3koKX0pOyJzZXJpZXMgeEF4aXMgeUF4aXMgc2hhZGVzIG91dGxpbmUgc2Nyb2xsYmFyVHJhY2sgc2Nyb2xsYmFyUmlmbGVzIHNjcm9sbGJhckdyb3VwIHNjcm9sbGJhciBuYXZpZ2F0b3JHcm91cCByZW5kZXJlZCIuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3RoaXNbYV0mJnRoaXNbYV0uZGVzdHJveSYmdGhpc1thXS5kZXN0cm95KCk7dGhpc1thXT1udWxsfSx0aGlzKTtbdGhpcy5oYW5kbGVzXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0goYSl9LHRoaXMpfTtyZXR1cm4gbH0oKTt6Lk5hdmlnYXRvcnx8KHouTmF2aWdhdG9yPUIseC5jb21wb3NlKGMpLGIobCwiYmVmb3JlU2hvd1Jlc2V0Wm9vbSIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnMsYj1hLm5hdmlnYXRvcixjPWEucmFuZ2VTZWxlY3RvcjtpZigoYiYmCmIuZW5hYmxlZHx8YyYmYy5lbmFibGVkKSYmKCF2JiYieCI9PT1hLmNoYXJ0Lnpvb21UeXBlfHx2JiYieCI9PT1hLmNoYXJ0LnBpbmNoVHlwZSkpcmV0dXJuITF9KSxiKGwsImJlZm9yZVJlbmRlciIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnM7aWYoYS5uYXZpZ2F0b3IuZW5hYmxlZHx8YS5zY3JvbGxiYXIuZW5hYmxlZCl0aGlzLnNjcm9sbGVyPXRoaXMubmF2aWdhdG9yPW5ldyBCKHRoaXMpfSksYihsLCJhZnRlclNldENoYXJ0U2l6ZSIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLmxlZ2VuZCxiPXRoaXMubmF2aWdhdG9yO2lmKGIpe3ZhciBjPWEmJmEub3B0aW9uczt2YXIgZD1iLnhBeGlzO3ZhciBlPWIueUF4aXM7dmFyIGY9Yi5zY3JvbGxiYXJIZWlnaHQ7dGhpcy5pbnZlcnRlZD8oYi5sZWZ0PWIub3Bwb3NpdGU/dGhpcy5jaGFydFdpZHRoLWYtYi5oZWlnaHQ6dGhpcy5zcGFjaW5nWzNdK2YsYi50b3A9dGhpcy5wbG90VG9wK2YpOihiLmxlZnQ9dGhpcy5wbG90TGVmdCtmLApiLnRvcD1iLm5hdmlnYXRvck9wdGlvbnMudG9wfHx0aGlzLmNoYXJ0SGVpZ2h0LWIuaGVpZ2h0LWYtdGhpcy5zcGFjaW5nWzJdLSh0aGlzLnJhbmdlU2VsZWN0b3ImJnRoaXMuZXh0cmFCb3R0b21NYXJnaW4/dGhpcy5yYW5nZVNlbGVjdG9yLmdldEhlaWdodCgpOjApLShjJiYiYm90dG9tIj09PWMudmVydGljYWxBbGlnbiYmInByb3hpbWF0ZSIhPT1jLmxheW91dCYmYy5lbmFibGVkJiYhYy5mbG9hdGluZz9hLmxlZ2VuZEhlaWdodCtDKGMubWFyZ2luLDEwKTowKS0odGhpcy50aXRsZU9mZnNldD90aGlzLnRpdGxlT2Zmc2V0WzJdOjApKTtkJiZlJiYodGhpcy5pbnZlcnRlZD9kLm9wdGlvbnMubGVmdD1lLm9wdGlvbnMubGVmdD1iLmxlZnQ6ZC5vcHRpb25zLnRvcD1lLm9wdGlvbnMudG9wPWIudG9wLGQuc2V0QXhpc1NpemUoKSxlLnNldEF4aXNTaXplKCkpfX0pLGIobCwidXBkYXRlIixmdW5jdGlvbihhKXt2YXIgYj1hLm9wdGlvbnMubmF2aWdhdG9yfHx7fSxjPWEub3B0aW9ucy5zY3JvbGxiYXJ8fAp7fTt0aGlzLm5hdmlnYXRvcnx8dGhpcy5zY3JvbGxlcnx8IWIuZW5hYmxlZCYmIWMuZW5hYmxlZHx8KGUoITAsdGhpcy5vcHRpb25zLm5hdmlnYXRvcixiKSxlKCEwLHRoaXMub3B0aW9ucy5zY3JvbGxiYXIsYyksZGVsZXRlIGEub3B0aW9ucy5uYXZpZ2F0b3IsZGVsZXRlIGEub3B0aW9ucy5zY3JvbGxiYXIpfSksYihsLCJhZnRlclVwZGF0ZSIsZnVuY3Rpb24oYSl7dGhpcy5uYXZpZ2F0b3J8fHRoaXMuc2Nyb2xsZXJ8fCF0aGlzLm9wdGlvbnMubmF2aWdhdG9yLmVuYWJsZWQmJiF0aGlzLm9wdGlvbnMuc2Nyb2xsYmFyLmVuYWJsZWR8fCh0aGlzLnNjcm9sbGVyPXRoaXMubmF2aWdhdG9yPW5ldyBCKHRoaXMpLEMoYS5yZWRyYXcsITApJiZ0aGlzLnJlZHJhdyhhLmFuaW1hdGlvbikpfSksYihsLCJhZnRlckFkZFNlcmllcyIsZnVuY3Rpb24oKXt0aGlzLm5hdmlnYXRvciYmdGhpcy5uYXZpZ2F0b3Iuc2V0QmFzZVNlcmllcyhudWxsLCExKX0pLGIoQSwiYWZ0ZXJVcGRhdGUiLGZ1bmN0aW9uKCl7dGhpcy5jaGFydC5uYXZpZ2F0b3ImJgohdGhpcy5vcHRpb25zLmlzSW50ZXJuYWwmJnRoaXMuY2hhcnQubmF2aWdhdG9yLnNldEJhc2VTZXJpZXMobnVsbCwhMSl9KSxsLnByb3RvdHlwZS5jYWxsYmFja3MucHVzaChmdW5jdGlvbihhKXt2YXIgYj1hLm5hdmlnYXRvcjtiJiZhLnhBeGlzWzBdJiYoYT1hLnhBeGlzWzBdLmdldEV4dHJlbWVzKCksYi5yZW5kZXIoYS5taW4sYS5tYXgpKX0pKTt6Lk5hdmlnYXRvcj1CO3JldHVybiB6Lk5hdmlnYXRvcn0pO0ooYywibWFzdGVycy9tb2R1bGVzL2dhbnR0LnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1nYW50dC5qcy5tYXA="></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIFRpbWVsaW5lIHNlcmllcwoKIChjKSAyMDEwLTIwMTkgSGlnaHNvZnQgQVMKIEF1dGhvcjogRGFuaWVsIFN0dWRlbmNraQoKIExpY2Vuc2U6IHd3dy5oaWdoY2hhcnRzLmNvbS9saWNlbnNlCiovCihmdW5jdGlvbihjKXsib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzPyhjWyJkZWZhdWx0Il09Yyxtb2R1bGUuZXhwb3J0cz1jKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoImhpZ2hjaGFydHMvbW9kdWxlcy90aW1lbGluZSIsWyJoaWdoY2hhcnRzIl0sZnVuY3Rpb24obCl7YyhsKTtjLkhpZ2hjaGFydHM9bDtyZXR1cm4gY30pOmMoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihjKXtmdW5jdGlvbiBsKGMsbCxxLHIpe2MuaGFzT3duUHJvcGVydHkobCl8fChjW2xdPXIuYXBwbHkobnVsbCxxKSl9Yz1jP2MuX21vZHVsZXM6e307bChjLCJtb2R1bGVzL3RpbWVsaW5lLnNyYy5qcyIsW2NbInBhcnRzL0dsb2JhbHMuanMiXSxjWyJtaXhpbnMvbGVnZW5kLXN5bWJvbC5qcyJdLGNbInBhcnRzL1BvaW50LmpzIl0sY1sicGFydHMvU1ZHRWxlbWVudC5qcyJdLGNbInBhcnRzL1V0aWxpdGllcy5qcyJdXSwKZnVuY3Rpb24oYyxsLHEscixmKXt2YXIgcD1mLmFkZEV2ZW50LHg9Zi5hcnJheU1heCx5PWYuYXJyYXlNaW4sdT1mLmRlZmluZWQsej1mLmlzTnVtYmVyLHQ9Zi5tZXJnZSxBPWYub2JqZWN0RWFjaCxuPWYucGljaztmPWYuc2VyaWVzVHlwZTt2YXIgbT1jLlNlcmllcyx2PWMuc2VyaWVzVHlwZXM7ZigidGltZWxpbmUiLCJsaW5lIix7Y29sb3JCeVBvaW50OiEwLHN0aWNreVRyYWNraW5nOiExLGlnbm9yZUhpZGRlblBvaW50OiEwLGxlZ2VuZFR5cGU6InBvaW50IixsaW5lV2lkdGg6NCx0b29sdGlwOntoZWFkZXJGb3JtYXQ6JzxzcGFuIHN0eWxlPSJjb2xvcjp7cG9pbnQuY29sb3J9Ij5cdTI1Y2Y8L3NwYW4+IDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHgiPiB7cG9pbnQua2V5fTwvc3Bhbj48YnIvPicscG9pbnRGb3JtYXQ6Intwb2ludC5kZXNjcmlwdGlvbn0ifSxzdGF0ZXM6e2hvdmVyOntsaW5lV2lkdGhQbHVzOjB9fSxkYXRhTGFiZWxzOntlbmFibGVkOiEwLGFsbG93T3ZlcmxhcDohMCwKYWx0ZXJuYXRlOiEwLGJhY2tncm91bmRDb2xvcjoiI2ZmZmZmZiIsYm9yZGVyV2lkdGg6MSxib3JkZXJDb2xvcjoiIzk5OTk5OSIsYm9yZGVyUmFkaXVzOjMsY29sb3I6IiMzMzMzMzMiLGNvbm5lY3RvcldpZHRoOjEsZGlzdGFuY2U6MTAwLGZvcm1hdHRlcjpmdW5jdGlvbigpe3ZhciBhPXRoaXMuc2VyaWVzLmNoYXJ0LnN0eWxlZE1vZGU/IjxzcGFuPlx1MjVjZiA8L3NwYW4+IjonPHNwYW4gc3R5bGU9ImNvbG9yOicrdGhpcy5wb2ludC5jb2xvcisnIj5cdTI1Y2YgPC9zcGFuPic7cmV0dXJuIGErPSc8c3BhbiBjbGFzcz0iaGlnaGNoYXJ0cy1zdHJvbmciPicrKHRoaXMua2V5fHwiIikrIjwvc3Bhbj48YnIvPiIrKHRoaXMucG9pbnQubGFiZWx8fCIiKX0sc3R5bGU6e3RleHRPdXRsaW5lOiJub25lIixmb250V2VpZ2h0OiJub3JtYWwiLGZvbnRTaXplOiIxMnB4In0sc2hhZG93OiExLHZlcnRpY2FsQWxpZ246Im1pZGRsZSJ9LG1hcmtlcjp7ZW5hYmxlZFRocmVzaG9sZDowLHN5bWJvbDoic3F1YXJlIiwKcmFkaXVzOjYsbGluZVdpZHRoOjIsaGVpZ2h0OjE1fSxzaG93SW5MZWdlbmQ6ITEsY29sb3JLZXk6IngifSx7dHJhY2tlckdyb3VwczpbIm1hcmtlckdyb3VwIiwiZGF0YUxhYmVsc0dyb3VwIl0sZHJhd0xlZ2VuZFN5bWJvbDpsLmRyYXdSZWN0YW5nbGUsZHJhd1RyYWNrZXI6Yy5UcmFja2VyTWl4aW4uZHJhd1RyYWNrZXJQb2ludCxpbml0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpczttLnByb3RvdHlwZS5pbml0LmFwcGx5KGEsYXJndW1lbnRzKTtwKGEsImFmdGVyVHJhbnNsYXRlIixmdW5jdGlvbigpe3ZhciBiLGs9TnVtYmVyLk1BWF9WQUxVRTthLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuaXNJbnNpZGU9YS5pc0luc2lkZSYmYS52aXNpYmxlO2EudmlzaWJsZSYmIWEuaXNOdWxsJiYodShiKSYmKGs9TWF0aC5taW4oayxNYXRoLmFicyhhLnBsb3RYLWIpKSksYj1hLnBsb3RYKX0pO2EuY2xvc2VzdFBvaW50UmFuZ2VQeD1rfSk7cChhLCJkcmF3RGF0YUxhYmVscyIsZnVuY3Rpb24oKXthLmRpc3RyaWJ1dGVETCgpfSk7CnAoYSwiYWZ0ZXJEcmF3RGF0YUxhYmVscyIsZnVuY3Rpb24oKXt2YXIgYjthLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2lmKGI9YS5kYXRhTGFiZWwpcmV0dXJuIGIuYW5pbWF0ZT1mdW5jdGlvbihhKXt0aGlzLnRhcmdldFBvc2l0aW9uJiYodGhpcy50YXJnZXRQb3NpdGlvbj1hKTtyZXR1cm4gci5wcm90b3R5cGUuYW5pbWF0ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGIudGFyZ2V0UG9zaXRpb258fChiLnRhcmdldFBvc2l0aW9uPXt9KSxhLmRyYXdDb25uZWN0b3IoKX0pfSk7cChhLmNoYXJ0LCJhZnRlckhpZGVPdmVybGFwcGluZ0xhYmVsIixmdW5jdGlvbigpe2EucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYSl7YS5jb25uZWN0b3ImJmEuZGF0YUxhYmVsJiZhLmRhdGFMYWJlbC5vbGRPcGFjaXR5IT09YS5kYXRhTGFiZWwubmV3T3BhY2l0eSYmYS5hbGlnbkNvbm5lY3RvcigpfSl9KX0sYWxpZ25EYXRhTGFiZWw6ZnVuY3Rpb24oYSxiLGssYyl7dmFyIGQ9dGhpcy5jaGFydC5pbnZlcnRlZCwKZz10aGlzLnZpc2liaWxpdHlNYXAuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBhfSksZT10aGlzLnZpc2libGVQb2ludHNDb3VudCxoPWcuaW5kZXhPZihhKTtnPXRoaXMub3B0aW9ucy5kYXRhTGFiZWxzO3ZhciB3PWEudXNlckRMT3B0aW9uc3x8e307aD1nLmFsdGVybmF0ZT9oJiZoIT09ZS0xPzI6MS41OjE7ZT1NYXRoLmZsb29yKHRoaXMueEF4aXMubGVuL2UpO3ZhciBmPWIucGFkZGluZztpZihhLnZpc2libGUpe3ZhciBsPU1hdGguYWJzKHcueHx8YS5vcHRpb25zLmRhdGFMYWJlbHMueCk7ZD8oZD0yKihsLWYpLWEuaXRlbUhlaWdodC8yLGQ9e3dpZHRoOmQrInB4Iix0ZXh0T3ZlcmZsb3c6Yi53aWR0aC9kKmIuaGVpZ2h0LzI+ZSpoPyJlbGxpcHNpcyI6Im5vbmUifSk6ZD17d2lkdGg6KHcud2lkdGh8fGcud2lkdGh8fGUqaC0yKmYpKyJweCJ9O2IuY3NzKGQpO3RoaXMuY2hhcnQuc3R5bGVkTW9kZXx8Yi5zaGFkb3coZy5zaGFkb3cpfW0ucHJvdG90eXBlLmFsaWduRGF0YUxhYmVsLmFwcGx5KHRoaXMsCmFyZ3VtZW50cyl9LHByb2Nlc3NEYXRhOmZ1bmN0aW9uKCl7dmFyIGE9MCxiO3RoaXMudmlzaWJpbGl0eU1hcD10aGlzLmdldFZpc2liaWxpdHlNYXAoKTt0aGlzLnZpc2liaWxpdHlNYXAuZm9yRWFjaChmdW5jdGlvbihiKXtiJiZhKyt9KTt0aGlzLnZpc2libGVQb2ludHNDb3VudD1hO2ZvcihiPTA7Yjx0aGlzLnhEYXRhLmxlbmd0aDtiKyspdGhpcy55RGF0YVtiXT0xO20ucHJvdG90eXBlLnByb2Nlc3NEYXRhLmNhbGwodGhpcyxhcmd1bWVudHMpfSxnZXRYRXh0cmVtZXM6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpczthPWEuZmlsdGVyKGZ1bmN0aW9uKGEsYyl7cmV0dXJuIGIucG9pbnRzW2NdLmlzVmFsaWQoKSYmYi5wb2ludHNbY10udmlzaWJsZX0pO3JldHVybnttaW46eShhKSxtYXg6eChhKX19LGdlbmVyYXRlUG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpczttLnByb3RvdHlwZS5nZW5lcmF0ZVBvaW50cy5hcHBseShhKTthLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGIsayl7Yi5hcHBseU9wdGlvbnMoe3g6YS54RGF0YVtrXX0sCmEueERhdGFba10pfSl9LGdldFZpc2liaWxpdHlNYXA6ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5kYXRhLmxlbmd0aD90aGlzLmRhdGE6dGhpcy51c2VyT3B0aW9ucy5kYXRhKS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGEmJiExIT09YS52aXNpYmxlJiYhYS5pc051bGw/YTohMX0pfSxkaXN0cmlidXRlREw6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGI9YS5vcHRpb25zLmRhdGFMYWJlbHMsayxjLGQ9e30sZz0xLGU9Yi5kaXN0YW5jZTthLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGgpe2gudmlzaWJsZSYmIWguaXNOdWxsJiYoaz1oLm9wdGlvbnMsYz1oLm9wdGlvbnMuZGF0YUxhYmVscyxhLmhhc1JlbmRlcmVkfHwoaC51c2VyRExPcHRpb25zPXQoe30sYykpLGRbYS5jaGFydC5pbnZlcnRlZD8ieCI6InkiXT1iLmFsdGVybmF0ZSYmZyUyPy1lOmUsay5kYXRhTGFiZWxzPXQoZCxoLnVzZXJETE9wdGlvbnMpLGcrKyl9KX0sbWFya2VyQXR0cmliczpmdW5jdGlvbihhLGIpe3ZhciBrPXRoaXMub3B0aW9ucy5tYXJrZXIsCmM9YS5tYXJrZXJ8fHt9LGQ9Yy5zeW1ib2x8fGsuc3ltYm9sLGc9bihjLndpZHRoLGsud2lkdGgsdGhpcy5jbG9zZXN0UG9pbnRSYW5nZVB4KSxlPW4oYy5oZWlnaHQsay5oZWlnaHQpLGg9MDtpZih0aGlzLnhBeGlzLmRhdGVUaW1lKXJldHVybiB2LmxpbmUucHJvdG90eXBlLm1hcmtlckF0dHJpYnMuY2FsbCh0aGlzLGEsYik7YiYmKGs9ay5zdGF0ZXNbYl18fHt9LGI9Yy5zdGF0ZXMmJmMuc3RhdGVzW2JdfHx7fSxoPW4oYi5yYWRpdXMsay5yYWRpdXMsaCsoay5yYWRpdXNQbHVzfHwwKSkpO2EuaGFzSW1hZ2U9ZCYmMD09PWQuaW5kZXhPZigidXJsIik7cmV0dXJue3g6TWF0aC5mbG9vcihhLnBsb3RYKS1nLzItaC8yLHk6YS5wbG90WS1lLzItaC8yLHdpZHRoOmcraCxoZWlnaHQ6ZStofX0sYmluZEF4ZXM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzO20ucHJvdG90eXBlLmJpbmRBeGVzLmNhbGwoYSk7WyJ4QXhpcyIsInlBeGlzIl0uZm9yRWFjaChmdW5jdGlvbihiKXsieEF4aXMiIT09Ynx8CmFbYl0udXNlck9wdGlvbnMudHlwZXx8KGFbYl0uY2F0ZWdvcmllcz1hW2JdLmhhc05hbWVzPSEwKX0pfX0se2luaXQ6ZnVuY3Rpb24oKXt2YXIgYT1xLnByb3RvdHlwZS5pbml0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTthLm5hbWU9bihhLm5hbWUsIkV2ZW50Iik7YS55PTE7cmV0dXJuIGF9LGlzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9PXRoaXMub3B0aW9ucy55fSxzZXRWaXNpYmxlOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5zZXJpZXM7Yj1uKGIsYy5vcHRpb25zLmlnbm9yZUhpZGRlblBvaW50KTt2LnBpZS5wcm90b3R5cGUucG9pbnRDbGFzcy5wcm90b3R5cGUuc2V0VmlzaWJsZS5jYWxsKHRoaXMsYSwhMSk7Yy5wcm9jZXNzRGF0YSgpO2ImJmMuY2hhcnQucmVkcmF3KCl9LHNldFN0YXRlOmZ1bmN0aW9uKCl7dmFyIGE9bS5wcm90b3R5cGUucG9pbnRDbGFzcy5wcm90b3R5cGUuc2V0U3RhdGU7dGhpcy5pc051bGx8fGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxnZXRDb25uZWN0b3JQYXRoOmZ1bmN0aW9uKCl7dmFyIGE9CnRoaXMuc2VyaWVzLmNoYXJ0LGI9dGhpcy5zZXJpZXMueEF4aXMubGVuLGM9YS5pbnZlcnRlZCxmPWM/IngyIjoieTIiLGQ9dGhpcy5kYXRhTGFiZWwsZz1kLnRhcmdldFBvc2l0aW9uLGU9e3gxOnRoaXMucGxvdFgseTE6dGhpcy5wbG90WSx4Mjp0aGlzLnBsb3RYLHkyOnooZy55KT9nLnk6ZC55fSxoPShkLmFsaWduQXR0cnx8ZClbZlswXV08dGhpcy5zZXJpZXMueUF4aXMubGVuLzI7YyYmKGU9e3gxOnRoaXMucGxvdFkseTE6Yi10aGlzLnBsb3RYLHgyOmcueHx8ZC54LHkyOmItdGhpcy5wbG90WH0pO2gmJihlW2ZdKz1kW2M/IndpZHRoIjoiaGVpZ2h0Il0pO0EoZSxmdW5jdGlvbihhLGIpe2VbYl0tPShkLmFsaWduQXR0cnx8ZClbYlswXV19KTtyZXR1cm4gYS5yZW5kZXJlci5jcmlzcExpbmUoW1siTSIsZS54MSxlLnkxXSxbIkwiLGUueDIsZS55Ml1dLGQub3B0aW9ucy5jb25uZWN0b3JXaWR0aCl9LGRyYXdDb25uZWN0b3I6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnNlcmllczt0aGlzLmNvbm5lY3Rvcnx8Cih0aGlzLmNvbm5lY3Rvcj1hLmNoYXJ0LnJlbmRlcmVyLnBhdGgodGhpcy5nZXRDb25uZWN0b3JQYXRoKCkpLmF0dHIoe3pJbmRleDotMX0pLmFkZCh0aGlzLmRhdGFMYWJlbCkpO3RoaXMuc2VyaWVzLmNoYXJ0LmlzSW5zaWRlUGxvdCh0aGlzLmRhdGFMYWJlbC54LHRoaXMuZGF0YUxhYmVsLnkpJiZ0aGlzLmFsaWduQ29ubmVjdG9yKCl9LGFsaWduQ29ubmVjdG9yOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5zZXJpZXMsYj10aGlzLmNvbm5lY3RvcixjPXRoaXMuZGF0YUxhYmVsLGY9dGhpcy5kYXRhTGFiZWwub3B0aW9ucz10KGEub3B0aW9ucy5kYXRhTGFiZWxzLHRoaXMub3B0aW9ucy5kYXRhTGFiZWxzKSxkPXRoaXMuc2VyaWVzLmNoYXJ0LGc9Yi5nZXRCQm94KCksZT1nLngrYy50cmFuc2xhdGVYO2c9Zy55K2MudHJhbnNsYXRlWTtkLmludmVydGVkP2ctPWMub3B0aW9ucy5jb25uZWN0b3JXaWR0aC8yOmUrPWMub3B0aW9ucy5jb25uZWN0b3JXaWR0aC8yO2Q9ZC5pc0luc2lkZVBsb3QoZSwKZyk7YltkPyJhbmltYXRlIjoiYXR0ciJdKHtkOnRoaXMuZ2V0Q29ubmVjdG9yUGF0aCgpfSk7YS5jaGFydC5zdHlsZWRNb2RlfHxiLmF0dHIoe3N0cm9rZTpmLmNvbm5lY3RvckNvbG9yfHx0aGlzLmNvbG9yLCJzdHJva2Utd2lkdGgiOmYuY29ubmVjdG9yV2lkdGgsb3BhY2l0eTpjW3UoYy5uZXdPcGFjaXR5KT8ibmV3T3BhY2l0eSI6Im9wYWNpdHkiXX0pfX0pOyIifSk7bChjLCJtYXN0ZXJzL21vZHVsZXMvdGltZWxpbmUuc3JjLmpzIixbXSxmdW5jdGlvbigpe30pfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXRpbWVsaW5lLmpzLm1hcA=="></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIFN1cHBvcnQgZm9yIHBhcmFsbGVsIGNvb3JkaW5hdGVzIGluIEhpZ2hjaGFydHMKCiAoYykgMjAxMC0yMDE5IFBhd2VsIEZ1cwoKIExpY2Vuc2U6IHd3dy5oaWdoY2hhcnRzLmNvbS9saWNlbnNlCiovCihmdW5jdGlvbihiKXsib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzPyhiWyJkZWZhdWx0Il09Yixtb2R1bGUuZXhwb3J0cz1iKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoImhpZ2hjaGFydHMvbW9kdWxlcy9wYXJhbGxlbC1jb29yZGluYXRlcyIsWyJoaWdoY2hhcnRzIl0sZnVuY3Rpb24oZyl7YihnKTtiLkhpZ2hjaGFydHM9ZztyZXR1cm4gYn0pOmIoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihiKXtmdW5jdGlvbiBnKGIsayxsLGQpe2IuaGFzT3duUHJvcGVydHkoayl8fChiW2tdPWQuYXBwbHkobnVsbCxsKSl9Yj1iP2IuX21vZHVsZXM6e307ZyhiLCJtb2R1bGVzL3BhcmFsbGVsLWNvb3JkaW5hdGVzLnNyYy5qcyIsW2JbInBhcnRzL0F4aXMuanMiXSxiWyJwYXJ0cy9DaGFydC5qcyJdLGJbInBhcnRzL0dsb2JhbHMuanMiXSxiWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sCmZ1bmN0aW9uKGIsayxsLGQpe2Z1bmN0aW9uIGcoYSl7dmFyIGM9dGhpcy5zZXJpZXMmJnRoaXMuc2VyaWVzLmNoYXJ0LG49YS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSksYjtpZihjJiZjLmhhc1BhcmFsbGVsQ29vcmRpbmF0ZXMmJiFwKG4uZm9ybWF0dGVkVmFsdWUpKXt2YXIgZT1jLnlBeGlzW3RoaXMueF07dmFyIGY9ZS5vcHRpb25zO2M9KGI9cihmLnRvb2x0aXBWYWx1ZUZvcm1hdCxmLmxhYmVscy5mb3JtYXQpKT94KGIsdCh0aGlzLHt2YWx1ZTp0aGlzLnl9KSxjKTplLmRhdGVUaW1lP2MudGltZS5kYXRlRm9ybWF0KGMudGltZS5yZXNvbHZlRFRMRm9ybWF0KGYuZGF0ZVRpbWVMYWJlbEZvcm1hdHNbZS50aWNrUG9zaXRpb25zLmluZm8udW5pdE5hbWVdKS5tYWluLHRoaXMueSk6Zi5jYXRlZ29yaWVzP2YuY2F0ZWdvcmllc1t0aGlzLnldOnRoaXMueTtuLmZvcm1hdHRlZFZhbHVlPW4ucG9pbnQuZm9ybWF0dGVkVmFsdWU9Y31yZXR1cm4gbn0KdmFyIGg9ZC5hZGRFdmVudCx5PWQuYXJyYXlNYXgsej1kLmFycmF5TWluLHA9ZC5kZWZpbmVkLEE9ZC5lcmFzZSx0PWQuZXh0ZW5kLHg9ZC5mb3JtYXQsbT1kLm1lcmdlLHI9ZC5waWNrLEI9ZC5zZXRPcHRpb25zLHU9ZC5zcGxhdCxDPWQud3JhcDtkPWsucHJvdG90eXBlO3ZhciB2PXtsaW5lV2lkdGg6MCx0aWNrTGVuZ3RoOjAsb3Bwb3NpdGU6ITAsdHlwZToiY2F0ZWdvcnkifTtCKHtjaGFydDp7cGFyYWxsZWxDb29yZGluYXRlczohMSxwYXJhbGxlbEF4ZXM6e2xpbmVXaWR0aDoxLHRpdGxlOnt0ZXh0OiIiLHJlc2VydmVTcGFjZTohMX0sbGFiZWxzOnt4OjAseTo0LGFsaWduOiJjZW50ZXIiLHJlc2VydmVTcGFjZTohMX0sb2Zmc2V0OjB9fX0pO2goaywiaW5pdCIsZnVuY3Rpb24oYSl7YT1hLmFyZ3NbMF07dmFyIGM9dShhLnlBeGlzfHx7fSksYj1bXSxkPWMubGVuZ3RoO2lmKHRoaXMuaGFzUGFyYWxsZWxDb29yZGluYXRlcz1hLmNoYXJ0JiZhLmNoYXJ0LnBhcmFsbGVsQ29vcmRpbmF0ZXMpe2Zvcih0aGlzLnNldFBhcmFsbGVsSW5mbyhhKTtkPD0KdGhpcy5wYXJhbGxlbEluZm8uY291bnRlcjtkKyspYi5wdXNoKHt9KTthLmxlZ2VuZHx8KGEubGVnZW5kPXt9KTsidW5kZWZpbmVkIj09PXR5cGVvZiBhLmxlZ2VuZC5lbmFibGVkJiYoYS5sZWdlbmQuZW5hYmxlZD0hMSk7bSghMCxhLHtib29zdDp7c2VyaWVzVGhyZXNob2xkOk51bWJlci5NQVhfVkFMVUV9LHBsb3RPcHRpb25zOntzZXJpZXM6e2Jvb3N0VGhyZXNob2xkOk51bWJlci5NQVhfVkFMVUV9fX0pO2EueUF4aXM9Yy5jb25jYXQoYik7YS54QXhpcz1tKHYsdShhLnhBeGlzfHx7fSlbMF0pfX0pO2goaywidXBkYXRlIixmdW5jdGlvbihhKXthPWEub3B0aW9uczthLmNoYXJ0JiYocChhLmNoYXJ0LnBhcmFsbGVsQ29vcmRpbmF0ZXMpJiYodGhpcy5oYXNQYXJhbGxlbENvb3JkaW5hdGVzPWEuY2hhcnQucGFyYWxsZWxDb29yZGluYXRlcyksdGhpcy5vcHRpb25zLmNoYXJ0LnBhcmFsbGVsQXhlcz1tKHRoaXMub3B0aW9ucy5jaGFydC5wYXJhbGxlbEF4ZXMsYS5jaGFydC5wYXJhbGxlbEF4ZXMpKTsKdGhpcy5oYXNQYXJhbGxlbENvb3JkaW5hdGVzJiYoYS5zZXJpZXMmJnRoaXMuc2V0UGFyYWxsZWxJbmZvKGEpLHRoaXMueUF4aXMuZm9yRWFjaChmdW5jdGlvbihhKXthLnVwZGF0ZSh7fSwhMSl9KSl9KTt0KGQse3NldFBhcmFsbGVsSW5mbzpmdW5jdGlvbihhKXt2YXIgYz10aGlzO2E9YS5zZXJpZXM7Yy5wYXJhbGxlbEluZm89e2NvdW50ZXI6MH07YS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuZGF0YSYmKGMucGFyYWxsZWxJbmZvLmNvdW50ZXI9TWF0aC5tYXgoYy5wYXJhbGxlbEluZm8uY291bnRlcixhLmRhdGEubGVuZ3RoLTEpKX0pfX0pO2gobC5TZXJpZXMsImJpbmRBeGVzIixmdW5jdGlvbihhKXtpZih0aGlzLmNoYXJ0Lmhhc1BhcmFsbGVsQ29vcmRpbmF0ZXMpe3ZhciBjPXRoaXM7dGhpcy5jaGFydC5heGVzLmZvckVhY2goZnVuY3Rpb24oYSl7Yy5pbnNlcnQoYS5zZXJpZXMpO2EuaXNEaXJ0eT0hMH0pO2MueEF4aXM9dGhpcy5jaGFydC54QXhpc1swXTtjLnlBeGlzPXRoaXMuY2hhcnQueUF4aXNbMF07CmEucHJldmVudERlZmF1bHQoKX19KTtoKGwuU2VyaWVzLCJhZnRlclRyYW5zbGF0ZSIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNoYXJ0LGM9dGhpcy5wb2ludHMsYj1jJiZjLmxlbmd0aCxkPU51bWJlci5NQVhfVkFMVUUsZTtpZih0aGlzLmNoYXJ0Lmhhc1BhcmFsbGVsQ29vcmRpbmF0ZXMpe2ZvcihlPTA7ZTxiO2UrKyl7dmFyIGY9Y1tlXTtpZihwKGYueSkpe2YucGxvdFg9YS5wb2xhcj9hLnlBeGlzW2VdLmFuZ2xlUmFkfHwwOmEuaW52ZXJ0ZWQ/YS5wbG90SGVpZ2h0LWEueUF4aXNbZV0udG9wK2EucGxvdFRvcDphLnlBeGlzW2VdLmxlZnQtYS5wbG90TGVmdDtmLmNsaWVudFg9Zi5wbG90WDtmLnBsb3RZPWEueUF4aXNbZV0udHJhbnNsYXRlKGYueSwhMSwhMCxudWxsLCEwKTsidW5kZWZpbmVkIiE9PXR5cGVvZiB3JiYoZD1NYXRoLm1pbihkLE1hdGguYWJzKGYucGxvdFgtdykpKTt2YXIgdz1mLnBsb3RYO2YuaXNJbnNpZGU9YS5pc0luc2lkZVBsb3QoZi5wbG90WCxmLnBsb3RZLAphLmludmVydGVkKX1lbHNlIGYuaXNOdWxsPSEwfXRoaXMuY2xvc2VzdFBvaW50UmFuZ2VQeD1kfX0se29yZGVyOjF9KTtoKGwuU2VyaWVzLCJkZXN0cm95IixmdW5jdGlvbigpe3RoaXMuY2hhcnQuaGFzUGFyYWxsZWxDb29yZGluYXRlcyYmKHRoaXMuY2hhcnQuYXhlc3x8W10pLmZvckVhY2goZnVuY3Rpb24oYSl7YSYmYS5zZXJpZXMmJihBKGEuc2VyaWVzLHRoaXMpLGEuaXNEaXJ0eT1hLmZvcmNlUmVkcmF3PSEwKX0sdGhpcyl9KTtbImxpbmUiLCJzcGxpbmUiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0MobC5zZXJpZXNUeXBlc1thXS5wcm90b3R5cGUucG9pbnRDbGFzcy5wcm90b3R5cGUsImdldExhYmVsQ29uZmlnIixnKX0pO3ZhciBEPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhKXt0aGlzLmF4aXM9YX1hLnByb3RvdHlwZS5zZXRQb3NpdGlvbj1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuYXhpcyxlPWMuY2hhcnQsZj0oKHRoaXMucG9zaXRpb258fDApKy41KS8oZS5wYXJhbGxlbEluZm8uY291bnRlcisKMSk7ZS5wb2xhcj9iLmFuZ2xlPTM2MCpmOihiW2FbMF1dPTEwMCpmKyIlIixjW2FbMV1dPWJbYVsxXV09MCxjW2FbMl1dPWJbYVsyXV09bnVsbCxjW2FbM11dPWJbYVszXV09bnVsbCl9O3JldHVybiBhfSgpLHE7KGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSl7dmFyIGI9dGhpcy5jaGFydCxjPXRoaXMucGFyYWxsZWxDb29yZGluYXRlcyxkPVsibGVmdCIsIndpZHRoIiwiaGVpZ2h0IiwidG9wIl07aWYoYi5oYXNQYXJhbGxlbENvb3JkaW5hdGVzKWlmKGIuaW52ZXJ0ZWQmJihkPWQucmV2ZXJzZSgpKSx0aGlzLmlzWEF4aXMpdGhpcy5vcHRpb25zPW0odGhpcy5vcHRpb25zLHYsYS51c2VyT3B0aW9ucyk7ZWxzZXt2YXIgZT1iLnlBeGlzLmluZGV4T2YodGhpcyk7dGhpcy5vcHRpb25zPW0odGhpcy5vcHRpb25zLHRoaXMuY2hhcnQub3B0aW9ucy5jaGFydC5wYXJhbGxlbEF4ZXMsYS51c2VyT3B0aW9ucyk7Yy5wb3NpdGlvbj1yKGMucG9zaXRpb24sMDw9ZT9lOmIueUF4aXMubGVuZ3RoKTsKYy5zZXRQb3NpdGlvbihkLHRoaXMub3B0aW9ucyl9fWZ1bmN0aW9uIGQoYSl7dmFyIGI9dGhpcy5jaGFydCxjPXRoaXMucGFyYWxsZWxDb29yZGluYXRlcztpZihjJiZiJiZiLmhhc1BhcmFsbGVsQ29vcmRpbmF0ZXMmJiF0aGlzLmlzWEF4aXMpe3ZhciBkPWMucG9zaXRpb24sZT1bXTt0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EudmlzaWJsZSYmcChhLnlEYXRhW2RdKSYmZS5wdXNoKGEueURhdGFbZF0pfSk7dGhpcy5kYXRhTWluPXooZSk7dGhpcy5kYXRhTWF4PXkoZSk7YS5wcmV2ZW50RGVmYXVsdCgpfX1mdW5jdGlvbiBnKCl7dGhpcy5wYXJhbGxlbENvb3JkaW5hdGVzfHwodGhpcy5wYXJhbGxlbENvb3JkaW5hdGVzPW5ldyBEKHRoaXMpKX1hLmNvbXBvc2U9ZnVuY3Rpb24oYSl7YS5rZWVwUHJvcHMucHVzaCgicGFyYWxsZWwiKTtoKGEsImluaXQiLGcpO2goYSwiYWZ0ZXJTZXRPcHRpb25zIixiKTtoKGEsImdldFNlcmllc0V4dHJlbWVzIixkKX19KShxfHwocT17fSkpOwpxLmNvbXBvc2UoYik7cmV0dXJuIHF9KTtnKGIsIm1hc3RlcnMvbW9kdWxlcy9wYXJhbGxlbC1jb29yZGluYXRlcy5zcmMuanMiLFtdLGZ1bmN0aW9uKCl7fSl9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGFyYWxsZWwtY29vcmRpbmF0ZXMuanMubWFw"></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIEJ1bGxldCBncmFwaCBzZXJpZXMgdHlwZSBmb3IgSGlnaGNoYXJ0cwoKIChjKSAyMDEwLTIwMTkgS2FjcGVyIE1hZGVqCgogTGljZW5zZTogd3d3LmhpZ2hjaGFydHMuY29tL2xpY2Vuc2UKKi8KKGZ1bmN0aW9uKGEpeyJvYmplY3QiPT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/KGFbImRlZmF1bHQiXT1hLG1vZHVsZS5leHBvcnRzPWEpOiJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiaGlnaGNoYXJ0cy9tb2R1bGVzL2J1bGxldCIsWyJoaWdoY2hhcnRzIl0sZnVuY3Rpb24oZCl7YShkKTthLkhpZ2hjaGFydHM9ZDtyZXR1cm4gYX0pOmEoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihhKXtmdW5jdGlvbiBkKGEsYixuLGQpe2EuaGFzT3duUHJvcGVydHkoYil8fChhW2JdPWQuYXBwbHkobnVsbCxuKSl9YT1hP2EuX21vZHVsZXM6e307ZChhLCJtb2R1bGVzL2J1bGxldC5zcmMuanMiLFthWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGEsYil7dmFyIGQ9Yi5pc051bWJlcixyPWIubWVyZ2Usaz1iLnBpY2ssdD1iLnJlbGF0aXZlTGVuZ3RoOwpiPWIuc2VyaWVzVHlwZTt2YXIgZj1hLnNlcmllc1R5cGVzLmNvbHVtbi5wcm90b3R5cGU7YigiYnVsbGV0IiwiY29sdW1uIix7dGFyZ2V0T3B0aW9uczp7d2lkdGg6IjE0MCUiLGhlaWdodDozLGJvcmRlcldpZHRoOjB9LHRvb2x0aXA6e3BvaW50Rm9ybWF0Oic8c3BhbiBzdHlsZT0iY29sb3I6e3Nlcmllcy5jb2xvcn0iPlx1MjVjZjwvc3Bhbj4ge3Nlcmllcy5uYW1lfTogPGI+e3BvaW50Lnl9PC9iPi4gVGFyZ2V0OiA8Yj57cG9pbnQudGFyZ2V0fTwvYj48YnIvPid9fSx7cG9pbnRBcnJheU1hcDpbInkiLCJ0YXJnZXQiXSxwYXJhbGxlbEFycmF5czpbIngiLCJ5IiwidGFyZ2V0Il0sZHJhd1BvaW50czpmdW5jdGlvbigpe3ZhciBhPXRoaXMsbD1hLmNoYXJ0LGI9YS5vcHRpb25zLG49Yi5hbmltYXRpb25MaW1pdHx8MjUwO2YuZHJhd1BvaW50cy5hcHBseSh0aGlzKTthLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGMpe3ZhciBwPWMub3B0aW9ucyxlPWMudGFyZ2V0R3JhcGhpYyxmPWMudGFyZ2V0LAptPWMueTtpZihkKGYpJiZudWxsIT09Zil7dmFyIGc9cihiLnRhcmdldE9wdGlvbnMscC50YXJnZXRPcHRpb25zKTt2YXIgdT1nLmhlaWdodDt2YXIgaD1jLnNoYXBlQXJnczt2YXIgcT10KGcud2lkdGgsaC53aWR0aCk7dmFyIHY9YS55QXhpcy50cmFuc2xhdGUoZiwhMSwhMCwhMSwhMCktZy5oZWlnaHQvMi0uNTtoPWEuY3Jpc3BDb2wuYXBwbHkoe2NoYXJ0OmwsYm9yZGVyV2lkdGg6Zy5ib3JkZXJXaWR0aCxvcHRpb25zOntjcmlzcDpiLmNyaXNwfX0sW2gueCtoLndpZHRoLzItcS8yLHYscSx1XSk7ZT8oZVtsLnBvaW50Q291bnQ8bj8iYW5pbWF0ZSI6ImF0dHIiXShoKSxkKG0pJiZudWxsIT09bT9lLmVsZW1lbnQucG9pbnQ9YzplLmVsZW1lbnQucG9pbnQ9dm9pZCAwKTpjLnRhcmdldEdyYXBoaWM9ZT1sLnJlbmRlcmVyLnJlY3QoKS5hdHRyKGgpLmFkZChhLmdyb3VwKTtsLnN0eWxlZE1vZGV8fGUuYXR0cih7ZmlsbDprKGcuY29sb3IscC5jb2xvcixhLnpvbmVzLmxlbmd0aCYmKGMuZ2V0Wm9uZS5jYWxsKHtzZXJpZXM6YSwKeDpjLngseTpmLG9wdGlvbnM6e319KS5jb2xvcnx8YS5jb2xvcil8fHZvaWQgMCxjLmNvbG9yLGEuY29sb3IpLHN0cm9rZTprKGcuYm9yZGVyQ29sb3IsYy5ib3JkZXJDb2xvcixhLm9wdGlvbnMuYm9yZGVyQ29sb3IpLCJzdHJva2Utd2lkdGgiOmcuYm9yZGVyV2lkdGh9KTtkKG0pJiZudWxsIT09bSYmKGUuZWxlbWVudC5wb2ludD1jKTtlLmFkZENsYXNzKGMuZ2V0Q2xhc3NOYW1lKCkrIiBoaWdoY2hhcnRzLWJ1bGxldC10YXJnZXQiLCEwKX1lbHNlIGUmJihjLnRhcmdldEdyYXBoaWM9ZS5kZXN0cm95KCkpfSl9LGdldEV4dHJlbWVzOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMudGFyZ2V0RGF0YTthPWYuZ2V0RXh0cmVtZXMuY2FsbCh0aGlzLGEpO2ImJmIubGVuZ3RoJiYoYj1mLmdldEV4dHJlbWVzLmNhbGwodGhpcyxiKSxkKGIuZGF0YU1pbikmJihhLmRhdGFNaW49TWF0aC5taW4oayhhLmRhdGFNaW4sSW5maW5pdHkpLGIuZGF0YU1pbikpLGQoYi5kYXRhTWF4KSYmKGEuZGF0YU1heD0KTWF0aC5tYXgoayhhLmRhdGFNYXgsLUluZmluaXR5KSxiLmRhdGFNYXgpKSk7cmV0dXJuIGF9fSx7ZGVzdHJveTpmdW5jdGlvbigpe3RoaXMudGFyZ2V0R3JhcGhpYyYmKHRoaXMudGFyZ2V0R3JhcGhpYz10aGlzLnRhcmdldEdyYXBoaWMuZGVzdHJveSgpKTtmLnBvaW50Q2xhc3MucHJvdG90eXBlLmRlc3Ryb3kuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0pOyIifSk7ZChhLCJtYXN0ZXJzL21vZHVsZXMvYnVsbGV0LnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1idWxsZXQuanMubWFw"></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIENvbG9yQXhpcyBtb2R1bGUKCiAoYykgMjAxMi0yMDE5IFBhd2VsIFBvdGFjemVrCgogTGljZW5zZTogd3d3LmhpZ2hjaGFydHMuY29tL2xpY2Vuc2UKKi8KKGZ1bmN0aW9uKGIpeyJvYmplY3QiPT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/KGJbImRlZmF1bHQiXT1iLG1vZHVsZS5leHBvcnRzPWIpOiJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiaGlnaGNoYXJ0cy9tb2R1bGVzL2NvbG9yLWF4aXMiLFsiaGlnaGNoYXJ0cyJdLGZ1bmN0aW9uKG0pe2IobSk7Yi5IaWdoY2hhcnRzPW07cmV0dXJuIGJ9KTpiKCJ1bmRlZmluZWQiIT09dHlwZW9mIEhpZ2hjaGFydHM/SGlnaGNoYXJ0czp2b2lkIDApfSkoZnVuY3Rpb24oYil7ZnVuY3Rpb24gbShiLGssZyxuKXtiLmhhc093blByb3BlcnR5KGspfHwoYltrXT1uLmFwcGx5KG51bGwsZykpfWI9Yj9iLl9tb2R1bGVzOnt9O20oYiwicGFydHMtbWFwL0NvbG9yU2VyaWVzTWl4aW4uanMiLFtiWyJwYXJ0cy9HbG9iYWxzLmpzIl1dLGZ1bmN0aW9uKGIpe2IuY29sb3JQb2ludE1peGluPXtzZXRWaXNpYmxlOmZ1bmN0aW9uKGIpe3ZhciBnPXRoaXMsbj1iPwoic2hvdyI6ImhpZGUiO2cudmlzaWJsZT1nLm9wdGlvbnMudmlzaWJsZT0hIWI7WyJncmFwaGljIiwiZGF0YUxhYmVsIl0uZm9yRWFjaChmdW5jdGlvbihiKXtpZihnW2JdKWdbYl1bbl0oKX0pO3RoaXMuc2VyaWVzLmJ1aWxkS0RUcmVlKCl9fTtiLmNvbG9yU2VyaWVzTWl4aW49e29wdGlvbmFsQXhpczoiY29sb3JBeGlzIixjb2xvckF4aXM6MCx0cmFuc2xhdGVDb2xvcnM6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLGc9dGhpcy5vcHRpb25zLm51bGxDb2xvcixuPXRoaXMuY29sb3JBeGlzLG09dGhpcy5jb2xvcktleTsodGhpcy5kYXRhLmxlbmd0aD90aGlzLmRhdGE6dGhpcy5wb2ludHMpLmZvckVhY2goZnVuY3Rpb24ocCl7dmFyIGs9cC5nZXROZXN0ZWRQcm9wZXJ0eShtKTsoaz1wLm9wdGlvbnMuY29sb3J8fChwLmlzTnVsbHx8bnVsbD09PXAudmFsdWU/ZzpuJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBrP24udG9Db2xvcihrLHApOnAuY29sb3J8fGIuY29sb3IpKSYmcC5jb2xvciE9PWsmJgoocC5jb2xvcj1rLCJwb2ludCI9PT1iLm9wdGlvbnMubGVnZW5kVHlwZSYmcC5sZWdlbmRJdGVtJiZiLmNoYXJ0LmxlZ2VuZC5jb2xvcml6ZUl0ZW0ocCxwLnZpc2libGUpKX0pfX19KTttKGIsInBhcnRzLW1hcC9Db2xvckF4aXMuanMiLFtiWyJwYXJ0cy9BeGlzLmpzIl0sYlsicGFydHMvQ2hhcnQuanMiXSxiWyJwYXJ0cy9Db2xvci5qcyJdLGJbInBhcnRzL0dsb2JhbHMuanMiXSxiWyJwYXJ0cy9MZWdlbmQuanMiXSxiWyJtaXhpbnMvbGVnZW5kLXN5bWJvbC5qcyJdLGJbInBhcnRzL1BvaW50LmpzIl0sYlsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGIsayxnLG4sbSxwLEEscSl7dmFyIEI9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGI9ZnVuY3Rpb24oZCxhKXtiPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihhLGUpe2EuX19wcm90b19fPWV9fHxmdW5jdGlvbihhLGUpe2Zvcih2YXIgYyBpbiBlKWUuaGFzT3duUHJvcGVydHkoYykmJgooYVtjXT1lW2NdKX07cmV0dXJuIGIoZCxhKX07cmV0dXJuIGZ1bmN0aW9uKGQsYSl7ZnVuY3Rpb24gZigpe3RoaXMuY29uc3RydWN0b3I9ZH1iKGQsYSk7ZC5wcm90b3R5cGU9bnVsbD09PWE/T2JqZWN0LmNyZWF0ZShhKTooZi5wcm90b3R5cGU9YS5wcm90b3R5cGUsbmV3IGYpfX0oKSx1PWcucGFyc2UsQz1uLm5vb3A7Zz1xLmFkZEV2ZW50O3ZhciB6PXEuZXJhc2UseD1xLmV4dGVuZCxEPXEuRngsRT1xLmlzTnVtYmVyLHk9cS5tZXJnZSx0PXEucGljayxGPXEuc3BsYXQ7IiI7dmFyIHY9bi5TZXJpZXM7cT1uLmNvbG9yUG9pbnRNaXhpbjt4KHYucHJvdG90eXBlLG4uY29sb3JTZXJpZXNNaXhpbik7eChBLnByb3RvdHlwZSxxKTtrLnByb3RvdHlwZS5jb2xsZWN0aW9uc1dpdGhVcGRhdGUucHVzaCgiY29sb3JBeGlzIik7ay5wcm90b3R5cGUuY29sbGVjdGlvbnNXaXRoSW5pdC5jb2xvckF4aXM9W2sucHJvdG90eXBlLmFkZENvbG9yQXhpc107dmFyIHc9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gZChhLApmKXt2YXIgZT1iLmNhbGwodGhpcyxhLGYpfHx0aGlzO2UuYmVmb3JlUGFkZGluZz0hMTtlLmNoYXJ0PXZvaWQgMDtlLmNvbGw9ImNvbG9yQXhpcyI7ZS5kYXRhQ2xhc3Nlcz12b2lkIDA7ZS5sZWdlbmRJdGVtPXZvaWQgMDtlLmxlZ2VuZEl0ZW1zPXZvaWQgMDtlLm5hbWU9IiI7ZS5vcHRpb25zPXZvaWQgMDtlLnN0b3BzPXZvaWQgMDtlLnZpc2libGU9ITA7ZS5pbml0KGEsZik7cmV0dXJuIGV9QihkLGIpO2QuYnVpbGRPcHRpb25zPWZ1bmN0aW9uKGEsZixlKXthPWEub3B0aW9ucy5sZWdlbmR8fHt9O3ZhciBjPWUubGF5b3V0PyJ2ZXJ0aWNhbCIhPT1lLmxheW91dDoidmVydGljYWwiIT09YS5sYXlvdXQ7cmV0dXJuIHkoZix7c2lkZTpjPzI6MSxyZXZlcnNlZDohY30sZSx7b3Bwb3NpdGU6IWMsc2hvd0VtcHR5OiExLHRpdGxlOm51bGwsdmlzaWJsZTphLmVuYWJsZWQmJihlPyExIT09ZS52aXNpYmxlOiEwKX0pfTtkLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGEsZil7dmFyIGU9ZC5idWlsZE9wdGlvbnMoYSwKZC5kZWZhdWx0T3B0aW9ucyxmKTt0aGlzLmNvbGw9ImNvbG9yQXhpcyI7Yi5wcm90b3R5cGUuaW5pdC5jYWxsKHRoaXMsYSxlKTtmLmRhdGFDbGFzc2VzJiZ0aGlzLmluaXREYXRhQ2xhc3NlcyhmKTt0aGlzLmluaXRTdG9wcygpO3RoaXMuaG9yaXo9IWUub3Bwb3NpdGU7dGhpcy56b29tRW5hYmxlZD0hMX07ZC5wcm90b3R5cGUuaW5pdERhdGFDbGFzc2VzPWZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMuY2hhcnQsZSxjPTAsYj1mLm9wdGlvbnMuY2hhcnQuY29sb3JDb3VudCxkPXRoaXMub3B0aW9ucyxoPWEuZGF0YUNsYXNzZXMubGVuZ3RoO3RoaXMuZGF0YUNsYXNzZXM9ZT1bXTt0aGlzLmxlZ2VuZEl0ZW1zPVtdO2EuZGF0YUNsYXNzZXMuZm9yRWFjaChmdW5jdGlvbihhLHIpe2E9eShhKTtlLnB1c2goYSk7aWYoZi5zdHlsZWRNb2RlfHwhYS5jb2xvcikiY2F0ZWdvcnkiPT09ZC5kYXRhQ2xhc3NDb2xvcj8oZi5zdHlsZWRNb2RlfHwocj1mLm9wdGlvbnMuY29sb3JzLGI9ci5sZW5ndGgsCmEuY29sb3I9cltjXSksYS5jb2xvckluZGV4PWMsYysrLGM9PT1iJiYoYz0wKSk6YS5jb2xvcj11KGQubWluQ29sb3IpLnR3ZWVuVG8odShkLm1heENvbG9yKSwyPmg/LjU6ci8oaC0xKSl9KX07ZC5wcm90b3R5cGUuaGFzRGF0YT1mdW5jdGlvbigpe3JldHVybiEhKHRoaXMudGlja1Bvc2l0aW9uc3x8W10pLmxlbmd0aH07ZC5wcm90b3R5cGUuc2V0VGlja1Bvc2l0aW9ucz1mdW5jdGlvbigpe2lmKCF0aGlzLmRhdGFDbGFzc2VzKXJldHVybiBiLnByb3RvdHlwZS5zZXRUaWNrUG9zaXRpb25zLmNhbGwodGhpcyl9O2QucHJvdG90eXBlLmluaXRTdG9wcz1mdW5jdGlvbigpe3RoaXMuc3RvcHM9dGhpcy5vcHRpb25zLnN0b3BzfHxbWzAsdGhpcy5vcHRpb25zLm1pbkNvbG9yXSxbMSx0aGlzLm9wdGlvbnMubWF4Q29sb3JdXTt0aGlzLnN0b3BzLmZvckVhY2goZnVuY3Rpb24oYSl7YS5jb2xvcj11KGFbMV0pfSl9O2QucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24oYSl7Yi5wcm90b3R5cGUuc2V0T3B0aW9ucy5jYWxsKHRoaXMsCmEpO3RoaXMub3B0aW9ucy5jcm9zc2hhaXI9dGhpcy5vcHRpb25zLm1hcmtlcn07ZC5wcm90b3R5cGUuc2V0QXhpc1NpemU9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmxlZ2VuZFN5bWJvbCxmPXRoaXMuY2hhcnQsZT1mLm9wdGlvbnMubGVnZW5kfHx7fSxjLGI7YT8odGhpcy5sZWZ0PWU9YS5hdHRyKCJ4IiksdGhpcy50b3A9Yz1hLmF0dHIoInkiKSx0aGlzLndpZHRoPWI9YS5hdHRyKCJ3aWR0aCIpLHRoaXMuaGVpZ2h0PWE9YS5hdHRyKCJoZWlnaHQiKSx0aGlzLnJpZ2h0PWYuY2hhcnRXaWR0aC1lLWIsdGhpcy5ib3R0b209Zi5jaGFydEhlaWdodC1jLWEsdGhpcy5sZW49dGhpcy5ob3Jpej9iOmEsdGhpcy5wb3M9dGhpcy5ob3Jpej9lOmMpOnRoaXMubGVuPSh0aGlzLmhvcml6P2Uuc3ltYm9sV2lkdGg6ZS5zeW1ib2xIZWlnaHQpfHxkLmRlZmF1bHRMZWdlbmRMZW5ndGh9O2QucHJvdG90eXBlLm5vcm1hbGl6ZWRWYWx1ZT1mdW5jdGlvbihhKXt0aGlzLmxvZ2FyaXRobWljJiYoYT10aGlzLmxvZ2FyaXRobWljLmxvZzJsaW4oYSkpOwpyZXR1cm4gMS0odGhpcy5tYXgtYSkvKHRoaXMubWF4LXRoaXMubWlufHwxKX07ZC5wcm90b3R5cGUudG9Db2xvcj1mdW5jdGlvbihhLGYpe3ZhciBlPXRoaXMuZGF0YUNsYXNzZXMsYz10aGlzLnN0b3BzLGI7aWYoZSlmb3IoYj1lLmxlbmd0aDtiLS07KXt2YXIgZD1lW2JdO3ZhciBoPWQuZnJvbTtjPWQudG87aWYoKCJ1bmRlZmluZWQiPT09dHlwZW9mIGh8fGE+PWgpJiYoInVuZGVmaW5lZCI9PT10eXBlb2YgY3x8YTw9Yykpe3ZhciBsPWQuY29sb3I7ZiYmKGYuZGF0YUNsYXNzPWIsZi5jb2xvckluZGV4PWQuY29sb3JJbmRleCk7YnJlYWt9fWVsc2V7YT10aGlzLm5vcm1hbGl6ZWRWYWx1ZShhKTtmb3IoYj1jLmxlbmd0aDtiLS0mJiEoYT5jW2JdWzBdKTspO2g9Y1tiXXx8Y1tiKzFdO2M9Y1tiKzFdfHxoO2E9MS0oY1swXS1hKS8oY1swXS1oWzBdfHwxKTtsPWguY29sb3IudHdlZW5UbyhjLmNvbG9yLGEpfXJldHVybiBsfTtkLnByb3RvdHlwZS5nZXRPZmZzZXQ9ZnVuY3Rpb24oKXt2YXIgYT0KdGhpcy5sZWdlbmRHcm91cCxmPXRoaXMuY2hhcnQuYXhpc09mZnNldFt0aGlzLnNpZGVdO2EmJih0aGlzLmF4aXNQYXJlbnQ9YSxiLnByb3RvdHlwZS5nZXRPZmZzZXQuY2FsbCh0aGlzKSx0aGlzLmFkZGVkfHwodGhpcy5hZGRlZD0hMCx0aGlzLmxhYmVsTGVmdD0wLHRoaXMubGFiZWxSaWdodD10aGlzLndpZHRoKSx0aGlzLmNoYXJ0LmF4aXNPZmZzZXRbdGhpcy5zaWRlXT1mKX07ZC5wcm90b3R5cGUuc2V0TGVnZW5kQ29sb3I9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnJldmVyc2VkLGY9YT8xOjA7YT1hPzA6MTtmPXRoaXMuaG9yaXo/W2YsMCxhLDBdOlswLGEsMCxmXTt0aGlzLmxlZ2VuZENvbG9yPXtsaW5lYXJHcmFkaWVudDp7eDE6ZlswXSx5MTpmWzFdLHgyOmZbMl0seTI6ZlszXX0sc3RvcHM6dGhpcy5zdG9wc319O2QucHJvdG90eXBlLmRyYXdMZWdlbmRTeW1ib2w9ZnVuY3Rpb24oYSxmKXt2YXIgYj1hLnBhZGRpbmcsYz1hLm9wdGlvbnMscj10aGlzLmhvcml6LGw9dChjLnN5bWJvbFdpZHRoLApyP2QuZGVmYXVsdExlZ2VuZExlbmd0aDoxMiksaD10KGMuc3ltYm9sSGVpZ2h0LHI/MTI6ZC5kZWZhdWx0TGVnZW5kTGVuZ3RoKSxnPXQoYy5sYWJlbFBhZGRpbmcscj8xNjozMCk7Yz10KGMuaXRlbURpc3RhbmNlLDEwKTt0aGlzLnNldExlZ2VuZENvbG9yKCk7Zi5sZWdlbmRTeW1ib2w9dGhpcy5jaGFydC5yZW5kZXJlci5yZWN0KDAsYS5iYXNlbGluZS0xMSxsLGgpLmF0dHIoe3pJbmRleDoxfSkuYWRkKGYubGVnZW5kR3JvdXApO3RoaXMubGVnZW5kSXRlbVdpZHRoPWwrYisocj9jOmcpO3RoaXMubGVnZW5kSXRlbUhlaWdodD1oK2IrKHI/ZzowKX07ZC5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oYSl7dGhpcy5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihiKXtiLnNldFN0YXRlKGEpfSl9O2QucHJvdG90eXBlLnNldFZpc2libGU9ZnVuY3Rpb24oKXt9O2QucHJvdG90eXBlLmdldFNlcmllc0V4dHJlbWVzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5zZXJpZXMsYj1hLmxlbmd0aCwKZTt0aGlzLmRhdGFNaW49SW5maW5pdHk7Zm9yKHRoaXMuZGF0YU1heD0tSW5maW5pdHk7Yi0tOyl7dmFyIGM9YVtiXTt2YXIgZD1jLmNvbG9yS2V5PXQoYy5vcHRpb25zLmNvbG9yS2V5LGMuY29sb3JLZXksYy5wb2ludFZhbEtleSxjLnpvbmVBeGlzLCJ5Iik7dmFyIGw9Yy5wb2ludEFycmF5TWFwO3ZhciBoPWNbZCsiTWluIl0mJmNbZCsiTWF4Il07aWYoY1tkKyJEYXRhIl0pdmFyIGc9Y1tkKyJEYXRhIl07ZWxzZSBpZihsKXtnPVtdO2w9bC5pbmRleE9mKGQpO3ZhciBrPWMueURhdGE7aWYoMDw9bCYmaylmb3IoZT0wO2U8ay5sZW5ndGg7ZSsrKWcucHVzaCh0KGtbZV1bbF0sa1tlXSkpfWVsc2UgZz1jLnlEYXRhO2g/KGMubWluQ29sb3JWYWx1ZT1jW2QrIk1pbiJdLGMubWF4Q29sb3JWYWx1ZT1jW2QrIk1heCJdKTooZz12LnByb3RvdHlwZS5nZXRFeHRyZW1lcy5jYWxsKGMsZyksYy5taW5Db2xvclZhbHVlPWcuZGF0YU1pbixjLm1heENvbG9yVmFsdWU9Zy5kYXRhTWF4KTsidW5kZWZpbmVkIiE9PQp0eXBlb2YgYy5taW5Db2xvclZhbHVlJiYodGhpcy5kYXRhTWluPU1hdGgubWluKHRoaXMuZGF0YU1pbixjLm1pbkNvbG9yVmFsdWUpLHRoaXMuZGF0YU1heD1NYXRoLm1heCh0aGlzLmRhdGFNYXgsYy5tYXhDb2xvclZhbHVlKSk7aHx8di5wcm90b3R5cGUuYXBwbHlFeHRyZW1lcy5jYWxsKGMpfX07ZC5wcm90b3R5cGUuZHJhd0Nyb3NzaGFpcj1mdW5jdGlvbihhLGYpe3ZhciBkPWYmJmYucGxvdFgsYz1mJiZmLnBsb3RZLGw9dGhpcy5wb3MsZz10aGlzLmxlbjtpZihmKXt2YXIgaD10aGlzLnRvUGl4ZWxzKGYuZ2V0TmVzdGVkUHJvcGVydHkoZi5zZXJpZXMuY29sb3JLZXkpKTtoPGw/aD1sLTI6aD5sK2cmJihoPWwrZysyKTtmLnBsb3RYPWg7Zi5wbG90WT10aGlzLmxlbi1oO2IucHJvdG90eXBlLmRyYXdDcm9zc2hhaXIuY2FsbCh0aGlzLGEsZik7Zi5wbG90WD1kO2YucGxvdFk9Yzt0aGlzLmNyb3NzJiYhdGhpcy5jcm9zcy5hZGRlZFRvQ29sb3JBeGlzJiZ0aGlzLmxlZ2VuZEdyb3VwJiYKKHRoaXMuY3Jvc3MuYWRkQ2xhc3MoImhpZ2hjaGFydHMtY29sb3JheGlzLW1hcmtlciIpLmFkZCh0aGlzLmxlZ2VuZEdyb3VwKSx0aGlzLmNyb3NzLmFkZGVkVG9Db2xvckF4aXM9ITAsIXRoaXMuY2hhcnQuc3R5bGVkTW9kZSYmdGhpcy5jcm9zc2hhaXImJnRoaXMuY3Jvc3MuYXR0cih7ZmlsbDp0aGlzLmNyb3NzaGFpci5jb2xvcn0pKX19O2QucHJvdG90eXBlLmdldFBsb3RMaW5lUGF0aD1mdW5jdGlvbihhKXt2YXIgZD10aGlzLmxlZnQsZT1hLnRyYW5zbGF0ZWRWYWx1ZSxjPXRoaXMudG9wO3JldHVybiBFKGUpP3RoaXMuaG9yaXo/W1siTSIsZS00LGMtNl0sWyJMIixlKzQsYy02XSxbIkwiLGUsY10sWyJaIl1dOltbIk0iLGQsZV0sWyJMIixkLTYsZSs2XSxbIkwiLGQtNixlLTZdLFsiWiJdXTpiLnByb3RvdHlwZS5nZXRQbG90TGluZVBhdGguY2FsbCh0aGlzLGEpfTtkLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oYSxmKXt2YXIgZT10aGlzLmNoYXJ0LGM9ZS5sZWdlbmQsbD1kLmJ1aWxkT3B0aW9ucyhlLAp7fSxhKTt0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuaXNEaXJ0eURhdGE9ITB9KTsoYS5kYXRhQ2xhc3NlcyYmYy5hbGxJdGVtc3x8dGhpcy5kYXRhQ2xhc3NlcykmJnRoaXMuZGVzdHJveUl0ZW1zKCk7ZS5vcHRpb25zW3RoaXMuY29sbF09eSh0aGlzLnVzZXJPcHRpb25zLGwpO2IucHJvdG90eXBlLnVwZGF0ZS5jYWxsKHRoaXMsbCxmKTt0aGlzLmxlZ2VuZEl0ZW0mJih0aGlzLnNldExlZ2VuZENvbG9yKCksYy5jb2xvcml6ZUl0ZW0odGhpcywhMCkpfTtkLnByb3RvdHlwZS5kZXN0cm95SXRlbXM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNoYXJ0O3RoaXMubGVnZW5kSXRlbT9hLmxlZ2VuZC5kZXN0cm95SXRlbSh0aGlzKTp0aGlzLmxlZ2VuZEl0ZW1zJiZ0aGlzLmxlZ2VuZEl0ZW1zLmZvckVhY2goZnVuY3Rpb24oYil7YS5sZWdlbmQuZGVzdHJveUl0ZW0oYil9KTthLmlzRGlydHlMZWdlbmQ9ITB9O2QucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbihhKXt0aGlzLmRlc3Ryb3lJdGVtcygpOwpiLnByb3RvdHlwZS5yZW1vdmUuY2FsbCh0aGlzLGEpfTtkLnByb3RvdHlwZS5nZXREYXRhQ2xhc3NMZWdlbmRTeW1ib2xzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPWEuY2hhcnQsZD1hLmxlZ2VuZEl0ZW1zLGM9Yi5vcHRpb25zLmxlZ2VuZCxsPWMudmFsdWVEZWNpbWFscyxnPWMudmFsdWVTdWZmaXh8fCIiLGg7ZC5sZW5ndGh8fGEuZGF0YUNsYXNzZXMuZm9yRWFjaChmdW5jdGlvbihjLGUpe3ZhciBmPSEwLGs9Yy5mcm9tLG09Yy50byxuPWIubnVtYmVyRm9ybWF0dGVyO2g9IiI7InVuZGVmaW5lZCI9PT10eXBlb2Ygaz9oPSI8ICI6InVuZGVmaW5lZCI9PT10eXBlb2YgbSYmKGg9Ij4gIik7InVuZGVmaW5lZCIhPT10eXBlb2YgayYmKGgrPW4oayxsKStnKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBrJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBtJiYoaCs9IiAtICIpOyJ1bmRlZmluZWQiIT09dHlwZW9mIG0mJihoKz1uKG0sbCkrZyk7ZC5wdXNoKHgoe2NoYXJ0OmIsbmFtZTpoLG9wdGlvbnM6e30sCmRyYXdMZWdlbmRTeW1ib2w6cC5kcmF3UmVjdGFuZ2xlLHZpc2libGU6ITAsc2V0U3RhdGU6Qyxpc0RhdGFDbGFzczohMCxzZXRWaXNpYmxlOmZ1bmN0aW9uKCl7Zj1hLnZpc2libGU9IWY7YS5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihhKXthLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuZGF0YUNsYXNzPT09ZSYmYS5zZXRWaXNpYmxlKGYpfSl9KTtiLmxlZ2VuZC5jb2xvcml6ZUl0ZW0odGhpcyxmKX19LGMpKX0pO3JldHVybiBkfTtkLmRlZmF1bHRMZWdlbmRMZW5ndGg9MjAwO2QuZGVmYXVsdE9wdGlvbnM9e2xpbmVXaWR0aDowLG1pblBhZGRpbmc6MCxtYXhQYWRkaW5nOjAsZ3JpZExpbmVXaWR0aDoxLHRpY2tQaXhlbEludGVydmFsOjcyLHN0YXJ0T25UaWNrOiEwLGVuZE9uVGljazohMCxvZmZzZXQ6MCxtYXJrZXI6e2FuaW1hdGlvbjp7ZHVyYXRpb246NTB9LHdpZHRoOi4wMSxjb2xvcjoiIzk5OTk5OSJ9LGxhYmVsczp7b3ZlcmZsb3c6Imp1c3RpZnkiLHJvdGF0aW9uOjB9LAptaW5Db2xvcjoiI2U2ZWJmNSIsbWF4Q29sb3I6IiMwMDMzOTkiLHRpY2tMZW5ndGg6NSxzaG93SW5MZWdlbmQ6ITB9O2Qua2VlcFByb3BzPVsibGVnZW5kR3JvdXAiLCJsZWdlbmRJdGVtSGVpZ2h0IiwibGVnZW5kSXRlbVdpZHRoIiwibGVnZW5kSXRlbSIsImxlZ2VuZFN5bWJvbCJdO3JldHVybiBkfShiKTtBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShiLmtlZXBQcm9wcyx3LmtlZXBQcm9wcyk7bi5Db2xvckF4aXM9dztbImZpbGwiLCJzdHJva2UiXS5mb3JFYWNoKGZ1bmN0aW9uKGIpe0QucHJvdG90eXBlW2IrIlNldHRlciJdPWZ1bmN0aW9uKCl7dGhpcy5lbGVtLmF0dHIoYix1KHRoaXMuc3RhcnQpLnR3ZWVuVG8odSh0aGlzLmVuZCksdGhpcy5wb3MpLG51bGwsITApfX0pO2coaywiYWZ0ZXJHZXRBeGVzIixmdW5jdGlvbigpe3ZhciBiPXRoaXMsZD1iLm9wdGlvbnM7dGhpcy5jb2xvckF4aXM9W107ZC5jb2xvckF4aXMmJihkLmNvbG9yQXhpcz1GKGQuY29sb3JBeGlzKSxkLmNvbG9yQXhpcy5mb3JFYWNoKGZ1bmN0aW9uKGEsCmQpe2EuaW5kZXg9ZDtuZXcgdyhiLGEpfSkpfSk7Zyh2LCJiaW5kQXhlcyIsZnVuY3Rpb24oKXt2YXIgYj10aGlzLmF4aXNUeXBlcztiPy0xPT09Yi5pbmRleE9mKCJjb2xvckF4aXMiKSYmYi5wdXNoKCJjb2xvckF4aXMiKTp0aGlzLmF4aXNUeXBlcz1bImNvbG9yQXhpcyJdfSk7ZyhtLCJhZnRlckdldEFsbEl0ZW1zIixmdW5jdGlvbihiKXt2YXIgZD1bXSxhLGY7KHRoaXMuY2hhcnQuY29sb3JBeGlzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihlKXsoYT1lLm9wdGlvbnMpJiZhLnNob3dJbkxlZ2VuZCYmKGEuZGF0YUNsYXNzZXMmJmEudmlzaWJsZT9kPWQuY29uY2F0KGUuZ2V0RGF0YUNsYXNzTGVnZW5kU3ltYm9scygpKTphLnZpc2libGUmJmQucHVzaChlKSxlLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGMpe2lmKCFjLm9wdGlvbnMuc2hvd0luTGVnZW5kfHxhLmRhdGFDbGFzc2VzKSJwb2ludCI9PT1jLm9wdGlvbnMubGVnZW5kVHlwZT9jLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ooYi5hbGxJdGVtcywKYSl9KTp6KGIuYWxsSXRlbXMsYyl9KSl9KTtmb3IoZj1kLmxlbmd0aDtmLS07KWIuYWxsSXRlbXMudW5zaGlmdChkW2ZdKX0pO2cobSwiYWZ0ZXJDb2xvcml6ZUl0ZW0iLGZ1bmN0aW9uKGIpe2IudmlzaWJsZSYmYi5pdGVtLmxlZ2VuZENvbG9yJiZiLml0ZW0ubGVnZW5kU3ltYm9sLmF0dHIoe2ZpbGw6Yi5pdGVtLmxlZ2VuZENvbG9yfSl9KTtnKG0sImFmdGVyVXBkYXRlIixmdW5jdGlvbigpe3ZhciBiPXRoaXMuY2hhcnQuY29sb3JBeGlzO2ImJmIuZm9yRWFjaChmdW5jdGlvbihiLGEsZil7Yi51cGRhdGUoe30sZil9KX0pO2codiwiYWZ0ZXJUcmFuc2xhdGUiLGZ1bmN0aW9uKCl7KHRoaXMuY2hhcnQuY29sb3JBeGlzJiZ0aGlzLmNoYXJ0LmNvbG9yQXhpcy5sZW5ndGh8fHRoaXMuY29sb3JBdHRyaWJzKSYmdGhpcy50cmFuc2xhdGVDb2xvcnMoKX0pO3JldHVybiB3fSk7bShiLCJtYXN0ZXJzL21vZHVsZXMvY29sb3JheGlzLnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1jb2xvcmF4aXMuanMubWFw"></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIChjKSAyMDA5LTIwMTkgU2ViYXN0aWFuIEJvY2hhbiwgUmFmYWwgU2ViZXN0amFuc2tpCgogTGljZW5zZTogd3d3LmhpZ2hjaGFydHMuY29tL2xpY2Vuc2UKKi8KKGZ1bmN0aW9uKGIpeyJvYmplY3QiPT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/KGJbImRlZmF1bHQiXT1iLG1vZHVsZS5leHBvcnRzPWIpOiJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiaGlnaGNoYXJ0cy9tb2R1bGVzL2R1bWJiZWxsIixbImhpZ2hjaGFydHMiXSxmdW5jdGlvbihmKXtiKGYpO2IuSGlnaGNoYXJ0cz1mO3JldHVybiBifSk6YigidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGYoYixjLGYscil7Yi5oYXNPd25Qcm9wZXJ0eShjKXx8KGJbY109ci5hcHBseShudWxsLGYpKX1iPWI/Yi5fbW9kdWxlczp7fTtmKGIsIm1vZHVsZXMvZHVtYmJlbGwuc3JjLmpzIixbYlsicGFydHMvR2xvYmFscy5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihiLGMpe3ZhciBmPWIuU1ZHUmVuZGVyZXIscj1jLmV4dGVuZCxoPWMucGljazsKYz1jLnNlcmllc1R5cGU7dmFyIHA9Yi5zZXJpZXNUeXBlcyx1PWIuU2VyaWVzLnByb3RvdHlwZSxsPXAuYXJlYXJhbmdlLnByb3RvdHlwZSx0PXAuY29sdW1uLnByb3RvdHlwZSxtPWwucG9pbnRDbGFzcy5wcm90b3R5cGU7YygiZHVtYmJlbGwiLCJhcmVhcmFuZ2UiLHt0cmFja0J5QXJlYTohMSxmaWxsQ29sb3I6Im5vbmUiLGxpbmVXaWR0aDowLHBvaW50UmFuZ2U6MSxjb25uZWN0b3JXaWR0aDoxLHN0aWNreVRyYWNraW5nOiExLGdyb3VwUGFkZGluZzouMixjcmlzcDohMSxwb2ludFBhZGRpbmc6LjEsbG93Q29sb3I6IiMzMzMzMzMiLHN0YXRlczp7aG92ZXI6e2xpbmVXaWR0aFBsdXM6MCxjb25uZWN0b3JXaWR0aFBsdXM6MSxoYWxvOiExfX19LHt0cmFja2VyR3JvdXBzOlsiZ3JvdXAiLCJtYXJrZXJHcm91cCIsImRhdGFMYWJlbHNHcm91cCJdLGRyYXdUcmFja2VyOmIuVHJhY2tlck1peGluLmRyYXdUcmFja2VyUG9pbnQsZHJhd0dyYXBoOmIubm9vcCxjcmlzcENvbDp0LmNyaXNwQ29sLApnZXRDb25uZWN0b3JBdHRyaWJzOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY2hhcnQsZT1hLm9wdGlvbnMsZz10aGlzLm9wdGlvbnMsZD10aGlzLnhBeGlzLG49dGhpcy55QXhpcyxjPWgoZS5jb25uZWN0b3JXaWR0aCxnLmNvbm5lY3RvcldpZHRoKSxsPWgoZS5jb25uZWN0b3JDb2xvcixnLmNvbm5lY3RvckNvbG9yLGUuY29sb3IsYS56b25lP2Euem9uZS5jb2xvcjp2b2lkIDAsYS5jb2xvcikscD1oKGcuc3RhdGVzJiZnLnN0YXRlcy5ob3ZlciYmZy5zdGF0ZXMuaG92ZXIuY29ubmVjdG9yV2lkdGhQbHVzLDEpLG09aChlLmRhc2hTdHlsZSxnLmRhc2hTdHlsZSkscT1oKGEucGxvdExvdyxhLnBsb3RZKSxrPW4udG9QaXhlbHMoZy50aHJlc2hvbGR8fDAsITApO2s9aChhLnBsb3RIaWdoLGIuaW52ZXJ0ZWQ/bi5sZW4tazprKTthLnN0YXRlJiYoYys9cCk7MD5xP3E9MDpxPj1uLmxlbiYmKHE9bi5sZW4pOzA+az9rPTA6az49bi5sZW4mJihrPW4ubGVuKTtpZigwPmEucGxvdFh8fGEucGxvdFg+CmQubGVuKWM9MDthLnVwcGVyR3JhcGhpYyYmKGQ9e3k6YS55LHpvbmU6YS56b25lfSxhLnk9YS5oaWdoLGEuem9uZT1hLnpvbmU/YS5nZXRab25lKCk6dm9pZCAwLGw9aChlLmNvbm5lY3RvckNvbG9yLGcuY29ubmVjdG9yQ29sb3IsZS5jb2xvcixhLnpvbmU/YS56b25lLmNvbG9yOnZvaWQgMCxhLmNvbG9yKSxyKGEsZCkpO2E9e2Q6Zi5wcm90b3R5cGUuY3Jpc3BMaW5lKFtbIk0iLGEucGxvdFgscV0sWyJMIixhLnBsb3RYLGtdXSxjLCJjZWlsIil9O2Iuc3R5bGVkTW9kZXx8KGEuc3Ryb2tlPWwsYVsic3Ryb2tlLXdpZHRoIl09YyxtJiYoYS5kYXNoc3R5bGU9bSkpO3JldHVybiBhfSxkcmF3Q29ubmVjdG9yOmZ1bmN0aW9uKGEpe3ZhciBiPWgodGhpcy5vcHRpb25zLmFuaW1hdGlvbkxpbWl0LDI1MCk7Yj1hLmNvbm5lY3RvciYmdGhpcy5jaGFydC5wb2ludENvdW50PGI/ImFuaW1hdGUiOiJhdHRyIjthLmNvbm5lY3Rvcnx8KGEuY29ubmVjdG9yPXRoaXMuY2hhcnQucmVuZGVyZXIucGF0aCgpLmFkZENsYXNzKCJoaWdoY2hhcnRzLWxvbGxpcG9wLXN0ZW0iKS5hdHRyKHt6SW5kZXg6LTF9KS5hZGQodGhpcy5tYXJrZXJHcm91cCkpOwphLmNvbm5lY3RvcltiXSh0aGlzLmdldENvbm5lY3RvckF0dHJpYnMoYSkpfSxnZXRDb2x1bW5NZXRyaWNzOmZ1bmN0aW9uKCl7dmFyIGE9dC5nZXRDb2x1bW5NZXRyaWNzLmFwcGx5KHRoaXMsYXJndW1lbnRzKTthLm9mZnNldCs9YS53aWR0aC8yO3JldHVybiBhfSx0cmFuc2xhdGVQb2ludDpsLnRyYW5zbGF0ZSxzZXRTaGFwZUFyZ3M6cC5jb2x1bW5yYW5nZS5wcm90b3R5cGUudHJhbnNsYXRlLHRyYW5zbGF0ZTpmdW5jdGlvbigpe3RoaXMuc2V0U2hhcGVBcmdzLmFwcGx5KHRoaXMpO3RoaXMudHJhbnNsYXRlUG9pbnQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5zaGFwZUFyZ3MsZT1hLnBvaW50V2lkdGg7YS5wbG90WD1iLng7Yi54PWEucGxvdFgtZS8yO2EudG9vbHRpcFBvcz1udWxsfSk7dGhpcy5jb2x1bW5NZXRyaWNzLm9mZnNldC09dGhpcy5jb2x1bW5NZXRyaWNzLndpZHRoLzJ9LHNlcmllc0RyYXdQb2ludHM6bC5kcmF3UG9pbnRzLApkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jaGFydCxiPXRoaXMucG9pbnRzLmxlbmd0aCxlPXRoaXMubG93Q29sb3I9dGhpcy5vcHRpb25zLmxvd0NvbG9yLGc9MDtmb3IodGhpcy5zZXJpZXNEcmF3UG9pbnRzLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtnPGI7KXt2YXIgZD10aGlzLnBvaW50c1tnXTt0aGlzLmRyYXdDb25uZWN0b3IoZCk7ZC51cHBlckdyYXBoaWMmJihkLnVwcGVyR3JhcGhpYy5lbGVtZW50LnBvaW50PWQsZC51cHBlckdyYXBoaWMuYWRkQ2xhc3MoImhpZ2hjaGFydHMtbG9sbGlwb3AtaGlnaCIpKTtkLmNvbm5lY3Rvci5lbGVtZW50LnBvaW50PWQ7aWYoZC5sb3dlckdyYXBoaWMpe3ZhciBjPWQuem9uZSYmZC56b25lLmNvbG9yO2M9aChkLm9wdGlvbnMubG93Q29sb3IsZSxkLm9wdGlvbnMuY29sb3IsYyxkLmNvbG9yLHRoaXMuY29sb3IpO2Euc3R5bGVkTW9kZXx8ZC5sb3dlckdyYXBoaWMuYXR0cih7ZmlsbDpjfSk7ZC5sb3dlckdyYXBoaWMuYWRkQ2xhc3MoImhpZ2hjaGFydHMtbG9sbGlwb3AtbG93Iil9ZysrfX0sCm1hcmtlckF0dHJpYnM6ZnVuY3Rpb24oKXt2YXIgYT1sLm1hcmtlckF0dHJpYnMuYXBwbHkodGhpcyxhcmd1bWVudHMpO2EueD1NYXRoLmZsb29yKGEueCk7YS55PU1hdGguZmxvb3IoYS55KTtyZXR1cm4gYX0scG9pbnRBdHRyaWJzOmZ1bmN0aW9uKGEsYil7dmFyIGU9dS5wb2ludEF0dHJpYnMuYXBwbHkodGhpcyxhcmd1bWVudHMpOyJob3ZlciI9PT1iJiZkZWxldGUgZS5maWxsO3JldHVybiBlfX0se2Rlc3Ryb3lFbGVtZW50czptLmRlc3Ryb3lFbGVtZW50cyxpc1ZhbGlkOm0uaXNWYWxpZCxwb2ludFNldFN0YXRlOm0uc2V0U3RhdGUsc2V0U3RhdGU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnNlcmllcyxiPWEuY2hhcnQsZT1hLm9wdGlvbnMubWFya2VyLGM9dGhpcy5vcHRpb25zLGQ9aChjLmxvd0NvbG9yLGEub3B0aW9ucy5sb3dDb2xvcixjLmNvbG9yLHRoaXMuem9uZSYmdGhpcy56b25lLmNvbG9yLHRoaXMuY29sb3IsYS5jb2xvciksZj0iYXR0ciI7dGhpcy5wb2ludFNldFN0YXRlLmFwcGx5KHRoaXMsCmFyZ3VtZW50cyk7dGhpcy5zdGF0ZXx8KGY9ImFuaW1hdGUiLHRoaXMubG93ZXJHcmFwaGljJiYhYi5zdHlsZWRNb2RlJiYodGhpcy5sb3dlckdyYXBoaWMuYXR0cih7ZmlsbDpkfSksdGhpcy51cHBlckdyYXBoaWMmJihiPXt5OnRoaXMueSx6b25lOnRoaXMuem9uZX0sdGhpcy55PXRoaXMuaGlnaCx0aGlzLnpvbmU9dGhpcy56b25lP3RoaXMuZ2V0Wm9uZSgpOnZvaWQgMCxlPWgodGhpcy5tYXJrZXI/dGhpcy5tYXJrZXIuZmlsbENvbG9yOnZvaWQgMCxlP2UuZmlsbENvbG9yOnZvaWQgMCxjLmNvbG9yLHRoaXMuem9uZT90aGlzLnpvbmUuY29sb3I6dm9pZCAwLHRoaXMuY29sb3IpLHRoaXMudXBwZXJHcmFwaGljLmF0dHIoe2ZpbGw6ZX0pLHIodGhpcyxiKSkpKTt0aGlzLmNvbm5lY3RvcltmXShhLmdldENvbm5lY3RvckF0dHJpYnModGhpcykpfX0pOyIifSk7ZihiLCJtYXN0ZXJzL21vZHVsZXMvZHVtYmJlbGwuc3JjLmpzIixbXSxmdW5jdGlvbigpe30pfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWR1bWJiZWxsLmpzLm1hcA=="></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIChjKSAyMDA5LTIwMTkgU2ViYXN0aWFuIEJvY2hhbiwgUmFmYWwgU2ViZXN0amFuc2tpCgogTGljZW5zZTogd3d3LmhpZ2hjaGFydHMuY29tL2xpY2Vuc2UKKi8KKGZ1bmN0aW9uKGEpeyJvYmplY3QiPT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/KGFbImRlZmF1bHQiXT1hLG1vZHVsZS5leHBvcnRzPWEpOiJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiaGlnaGNoYXJ0cy9tb2R1bGVzL2xvbGxpcG9wIixbImhpZ2hjaGFydHMiXSxmdW5jdGlvbihiKXthKGIpO2EuSGlnaGNoYXJ0cz1iO3JldHVybiBhfSk6YSgidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSxmLGIsYyl7YS5oYXNPd25Qcm9wZXJ0eShmKXx8KGFbZl09Yy5hcHBseShudWxsLGIpKX1hPWE/YS5fbW9kdWxlczp7fTtiKGEsIm1vZHVsZXMvbG9sbGlwb3Auc3JjLmpzIixbYVsicGFydHMvR2xvYmFscy5qcyJdLGFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihhLGIpe2I9Yi5zZXJpZXNUeXBlO3ZhciBlPWEuc2VyaWVzVHlwZXMuYXJlYS5wcm90b3R5cGUsCmM9YS5zZXJpZXNUeXBlcy5jb2x1bW4ucHJvdG90eXBlO2IoImxvbGxpcG9wIiwiZHVtYmJlbGwiLHtsb3dDb2xvcjp2b2lkIDAsdGhyZXNob2xkOjAsY29ubmVjdG9yV2lkdGg6MSxncm91cFBhZGRpbmc6LjIscG9pbnRQYWRkaW5nOi4xLHN0YXRlczp7aG92ZXI6e2xpbmVXaWR0aFBsdXM6MCxjb25uZWN0b3JXaWR0aFBsdXM6MSxoYWxvOiExfX0sdG9vbHRpcDp7cG9pbnRGb3JtYXQ6JzxzcGFuIHN0eWxlPSJjb2xvcjp7c2VyaWVzLmNvbG9yfSI+XHUyNWNmPC9zcGFuPiB7c2VyaWVzLm5hbWV9OiA8Yj57cG9pbnQueX08L2I+PGJyLz4nfX0se3BvaW50QXJyYXlNYXA6WyJ5Il0scG9pbnRWYWxLZXk6InkiLHRvWURhdGE6ZnVuY3Rpb24oYil7cmV0dXJuW2EucGljayhiLnksYi5sb3cpXX0sdHJhbnNsYXRlUG9pbnQ6ZS50cmFuc2xhdGUsZHJhd1BvaW50OmUuZHJhd1BvaW50cyxkcmF3RGF0YUxhYmVsczpjLmRyYXdEYXRhTGFiZWxzLHNldFNoYXBlQXJnczpjLnRyYW5zbGF0ZX0se3BvaW50U2V0U3RhdGU6ZS5wb2ludENsYXNzLnByb3RvdHlwZS5zZXRTdGF0ZSwKc2V0U3RhdGU6YS5zZXJpZXNUeXBlcy5kdW1iYmVsbC5wcm90b3R5cGUucG9pbnRDbGFzcy5wcm90b3R5cGUuc2V0U3RhdGUsaW5pdDpmdW5jdGlvbihiLGQsYyl7YS5pc09iamVjdChkKSYmImxvdyJpbiBkJiYoZC55PWQubG93LGRlbGV0ZSBkLmxvdyk7cmV0dXJuIGEuUG9pbnQucHJvdG90eXBlLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0pOyIifSk7YihhLCJtYXN0ZXJzL21vZHVsZXMvbG9sbGlwb3Auc3JjLmpzIixbXSxmdW5jdGlvbigpe30pfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWxvbGxpcG9wLmpzLm1hcA=="></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIChjKSAyMDA5LTIwMTkgVG9yc3RlaW4gSG9uc2kKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24obSl7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8obVsiZGVmYXVsdCJdPW0sbW9kdWxlLmV4cG9ydHM9bSk6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL21vZHVsZXMvc2VyaWVzLWxhYmVsIixbImhpZ2hjaGFydHMiXSxmdW5jdGlvbih3KXttKHcpO20uSGlnaGNoYXJ0cz13O3JldHVybiBtfSk6bSgidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKG0pe2Z1bmN0aW9uIHcobSx4LHcsdSl7bS5oYXNPd25Qcm9wZXJ0eSh4KXx8KG1beF09dS5hcHBseShudWxsLHcpKX1tPW0/bS5fbW9kdWxlczp7fTt3KG0sIm1vZHVsZXMvc2VyaWVzLWxhYmVsLnNyYy5qcyIsW21bInBhcnRzL0NoYXJ0LmpzIl0sbVsicGFydHMvR2xvYmFscy5qcyJdLG1bInBhcnRzL1NWR1JlbmRlcmVyLmpzIl0sbVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLApmdW5jdGlvbihtLHgsdyx1KXtmdW5jdGlvbiBBKGUsZCxhLGwsZixnKXtlPShnLWQpKihhLWUpLShsLWQpKihmLWUpO3JldHVybiAwPGU/ITA6ISgwPmUpfWZ1bmN0aW9uIEIoZSxkLGEsbCxmLGcsYixrKXtyZXR1cm4gQShlLGQsZixnLGIsaykhPT1BKGEsbCxmLGcsYixrKSYmQShlLGQsYSxsLGYsZykhPT1BKGUsZCxhLGwsYixrKX1mdW5jdGlvbiBFKGUsZCxhLGwsZixnLGIsayl7cmV0dXJuIEIoZSxkLGUrYSxkLGYsZyxiLGspfHxCKGUrYSxkLGUrYSxkK2wsZixnLGIsayl8fEIoZSxkK2wsZSthLGQrbCxmLGcsYixrKXx8QihlLGQsZSxkK2wsZixnLGIsayl9ZnVuY3Rpb24gRihlKXtpZih0aGlzLnJlbmRlcmVyKXt2YXIgZD10aGlzLGE9QyhkLnJlbmRlcmVyLmdsb2JhbEFuaW1hdGlvbikuZHVyYXRpb247ZC5sYWJlbFNlcmllcz1bXTtkLmxhYmVsU2VyaWVzTWF4U3VtPTA7dS5jbGVhclRpbWVvdXQoZC5zZXJpZXNMYWJlbFRpbWVyKTtkLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGwpe3ZhciBmPQpsLm9wdGlvbnMubGFiZWwsZz1sLmxhYmVsQnlTZXJpZXMsYj1nJiZnLmNsb3Nlc3Q7Zi5lbmFibGVkJiZsLnZpc2libGUmJihsLmdyYXBofHxsLmFyZWEpJiYhbC5pc1Nlcmllc0Jvb3N0aW5nJiYoZC5sYWJlbFNlcmllcy5wdXNoKGwpLGYubWluRm9udFNpemUmJmYubWF4Rm9udFNpemUmJihsLnN1bT1sLnlEYXRhLnJlZHVjZShmdW5jdGlvbihhLGIpe3JldHVybihhfHwwKSsoYnx8MCl9LDApLGQubGFiZWxTZXJpZXNNYXhTdW09TWF0aC5tYXgoZC5sYWJlbFNlcmllc01heFN1bSxsLnN1bSkpLCJsb2FkIj09PWUudHlwZSYmKGE9TWF0aC5tYXgoYSxDKGwub3B0aW9ucy5hbmltYXRpb24pLmR1cmF0aW9uKSksYiYmKCJ1bmRlZmluZWQiIT09dHlwZW9mIGJbMF0ucGxvdFg/Zy5hbmltYXRlKHt4OmJbMF0ucGxvdFgrYlsxXSx5OmJbMF0ucGxvdFkrYlsyXX0pOmcuYXR0cih7b3BhY2l0eTowfSkpKX0pO2Quc2VyaWVzTGFiZWxUaW1lcj1JKGZ1bmN0aW9uKCl7ZC5zZXJpZXMmJmQubGFiZWxTZXJpZXMmJgpkLmRyYXdTZXJpZXNMYWJlbHMoKX0sZC5yZW5kZXJlci5mb3JFeHBvcnR8fCFhPzA6YSl9fXZhciBHPXUuYWRkRXZlbnQsQz11LmFuaW1PYmplY3QsSD11LmV4dGVuZCxKPXUuZmlyZUV2ZW50LEs9dS5mb3JtYXQsRD11LmlzTnVtYmVyLHo9dS5waWNrLEw9dS5zZXRPcHRpb25zLEk9dS5zeW5jVGltZW91dDsiIjt4PXguU2VyaWVzO0woe3Bsb3RPcHRpb25zOntzZXJpZXM6e2xhYmVsOntlbmFibGVkOiEwLGNvbm5lY3RvckFsbG93ZWQ6ITEsY29ubmVjdG9yTmVpZ2hib3VyRGlzdGFuY2U6MjQsZm9ybWF0OnZvaWQgMCxmb3JtYXR0ZXI6dm9pZCAwLG1pbkZvbnRTaXplOm51bGwsbWF4Rm9udFNpemU6bnVsbCxvbkFyZWE6bnVsbCxzdHlsZTp7Zm9udFdlaWdodDoiYm9sZCJ9LGJveGVzVG9Bdm9pZDpbXX19fX0pO3cucHJvdG90eXBlLnN5bWJvbHMuY29ubmVjdG9yPWZ1bmN0aW9uKGUsZCxhLGwsZil7dmFyIGc9ZiYmZi5hbmNob3JYO2Y9ZiYmZi5hbmNob3JZO3ZhciBiPWEvMjtpZihEKGcpJiYKRChmKSl7dmFyIGs9W1siTSIsZyxmXV07dmFyIGg9ZC1mOzA+aCYmKGg9LWwtaCk7aDxhJiYoYj1nPGUrYS8yP2g6YS1oKTtmPmQrbD9rLnB1c2goWyJMIixlK2IsZCtsXSk6ZjxkP2sucHVzaChbIkwiLGUrYixkXSk6ZzxlP2sucHVzaChbIkwiLGUsZCtsLzJdKTpnPmUrYSYmay5wdXNoKFsiTCIsZSthLGQrbC8yXSl9cmV0dXJuIGt8fFtdfTt4LnByb3RvdHlwZS5nZXRQb2ludHNPbkdyYXBoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShiKXt2YXIgYz1NYXRoLnJvdW5kKGIucGxvdFgvOCkrIiwiK01hdGgucm91bmQoYi5wbG90WS84KTtuW2NdfHwobltjXT0xLGEucHVzaChiKSl9aWYodGhpcy54QXhpc3x8dGhpcy55QXhpcyl7dmFyIGQ9dGhpcy5wb2ludHMsYT1bXSxsO3ZhciBmPXRoaXMuZ3JhcGh8fHRoaXMuYXJlYTt2YXIgZz1mLmVsZW1lbnQ7dmFyIGI9dGhpcy5jaGFydC5pbnZlcnRlZCxrPXRoaXMueEF4aXM7dmFyIGg9dGhpcy55QXhpczt2YXIgbT1iP2gucG9zOmsucG9zO2I9CmI/ay5wb3M6aC5wb3M7az16KHRoaXMub3B0aW9ucy5sYWJlbC5vbkFyZWEsISF0aGlzLmFyZWEpO3ZhciB5PWguZ2V0VGhyZXNob2xkKHRoaXMub3B0aW9ucy50aHJlc2hvbGQpLG49e307aWYodGhpcy5nZXRQb2ludFNwbGluZSYmZy5nZXRQb2ludEF0TGVuZ3RoJiYhayYmZC5sZW5ndGg8dGhpcy5jaGFydC5wbG90U2l6ZVgvMTYpe2lmKGYudG9EKXt2YXIgYz1mLmF0dHIoImQiKTtmLmF0dHIoe2Q6Zi50b0R9KX12YXIgdj1nLmdldFRvdGFsTGVuZ3RoKCk7Zm9yKGw9MDtsPHY7bCs9MTYpaD1nLmdldFBvaW50QXRMZW5ndGgobCksZSh7Y2hhcnRYOm0raC54LGNoYXJ0WTpiK2gueSxwbG90WDpoLngscGxvdFk6aC55fSk7YyYmZi5hdHRyKHtkOmN9KTtoPWRbZC5sZW5ndGgtMV07aC5jaGFydFg9bStoLnBsb3RYO2guY2hhcnRZPWIraC5wbG90WTtlKGgpfWVsc2UgZm9yKHY9ZC5sZW5ndGgsbD0wO2w8djtsKz0xKXtoPWRbbF07Yz1kW2wtMV07aC5jaGFydFg9bStoLnBsb3RYO2guY2hhcnRZPQpiK2gucGxvdFk7ayYmKGguY2hhcnRDZW50ZXJZPWIrKGgucGxvdFkreihoLnlCb3R0b20seSkpLzIpO2lmKDA8bCYmKGY9TWF0aC5hYnMoaC5jaGFydFgtYy5jaGFydFgpLGc9TWF0aC5hYnMoaC5jaGFydFktYy5jaGFydFkpLGY9TWF0aC5tYXgoZixnKSwxNjxmKSlmb3IoZj1NYXRoLmNlaWwoZi8xNiksZz0xO2c8ZjtnKz0xKWUoe2NoYXJ0WDpjLmNoYXJ0WCtnL2YqKGguY2hhcnRYLWMuY2hhcnRYKSxjaGFydFk6Yy5jaGFydFkrZy9mKihoLmNoYXJ0WS1jLmNoYXJ0WSksY2hhcnRDZW50ZXJZOmMuY2hhcnRDZW50ZXJZK2cvZiooaC5jaGFydENlbnRlclktYy5jaGFydENlbnRlclkpLHBsb3RYOmMucGxvdFgrZy9mKihoLnBsb3RYLWMucGxvdFgpLHBsb3RZOmMucGxvdFkrZy9mKihoLnBsb3RZLWMucGxvdFkpfSk7RChoLnBsb3RZKSYmZShoKX1yZXR1cm4gYX19O3gucHJvdG90eXBlLmxhYmVsRm9udFNpemU9ZnVuY3Rpb24oZSxkKXtyZXR1cm4gZSt0aGlzLnN1bS90aGlzLmNoYXJ0LmxhYmVsU2VyaWVzTWF4U3VtKgooZC1lKSsicHgifTt4LnByb3RvdHlwZS5jaGVja0NsZWFyUG9pbnQ9ZnVuY3Rpb24oZSxkLGEsbCl7dmFyIGY9TnVtYmVyLk1BWF9WQUxVRSxnPU51bWJlci5NQVhfVkFMVUUsYixrPXoodGhpcy5vcHRpb25zLmxhYmVsLm9uQXJlYSwhIXRoaXMuYXJlYSksaD1rfHx0aGlzLm9wdGlvbnMubGFiZWwuY29ubmVjdG9yQWxsb3dlZCxtPXRoaXMuY2hhcnQseTtmb3IoeT0wO3k8bS5ib3hlc1RvQXZvaWQubGVuZ3RoO3krPTEpe3ZhciBuPW0uYm94ZXNUb0F2b2lkW3ldO3ZhciBjPWUrYS53aWR0aDt2YXIgdj1kO3ZhciBxPWQrYS5oZWlnaHQ7aWYoIShlPm4ucmlnaHR8fGM8bi5sZWZ0fHx2Pm4uYm90dG9tfHxxPG4udG9wKSlyZXR1cm4hMX1mb3IoeT0wO3k8bS5zZXJpZXMubGVuZ3RoO3krPTEpaWYodj1tLnNlcmllc1t5XSxuPXYuaW50ZXJwb2xhdGVkUG9pbnRzLHYudmlzaWJsZSYmbil7Zm9yKGM9MTtjPG4ubGVuZ3RoO2MrPTEpe2lmKG5bY10uY2hhcnRYPj1lLTE2JiZuW2MtMV0uY2hhcnRYPD0KZSthLndpZHRoKzE2KXtpZihFKGUsZCxhLndpZHRoLGEuaGVpZ2h0LG5bYy0xXS5jaGFydFgsbltjLTFdLmNoYXJ0WSxuW2NdLmNoYXJ0WCxuW2NdLmNoYXJ0WSkpcmV0dXJuITE7dGhpcz09PXYmJiFiJiZsJiYoYj1FKGUtMTYsZC0xNixhLndpZHRoKzMyLGEuaGVpZ2h0KzMyLG5bYy0xXS5jaGFydFgsbltjLTFdLmNoYXJ0WSxuW2NdLmNoYXJ0WCxuW2NdLmNoYXJ0WSkpfWlmKChofHxiKSYmKHRoaXMhPT12fHxrKSl7cT1lK2Eud2lkdGgvMi1uW2NdLmNoYXJ0WDt2YXIgdT1kK2EuaGVpZ2h0LzItbltjXS5jaGFydFk7Zj1NYXRoLm1pbihmLHEqcSt1KnUpfX1pZighayYmaCYmdGhpcz09PXYmJihsJiYhYnx8ZjxNYXRoLnBvdyh0aGlzLm9wdGlvbnMubGFiZWwuY29ubmVjdG9yTmVpZ2hib3VyRGlzdGFuY2UsMikpKXtmb3IoYz0xO2M8bi5sZW5ndGg7Yys9MSlpZihiPU1hdGgubWluKE1hdGgucG93KGUrYS53aWR0aC8yLW5bY10uY2hhcnRYLDIpK01hdGgucG93KGQrYS5oZWlnaHQvCjItbltjXS5jaGFydFksMiksTWF0aC5wb3coZS1uW2NdLmNoYXJ0WCwyKStNYXRoLnBvdyhkLW5bY10uY2hhcnRZLDIpLE1hdGgucG93KGUrYS53aWR0aC1uW2NdLmNoYXJ0WCwyKStNYXRoLnBvdyhkLW5bY10uY2hhcnRZLDIpLE1hdGgucG93KGUrYS53aWR0aC1uW2NdLmNoYXJ0WCwyKStNYXRoLnBvdyhkK2EuaGVpZ2h0LW5bY10uY2hhcnRZLDIpLE1hdGgucG93KGUtbltjXS5jaGFydFgsMikrTWF0aC5wb3coZCthLmhlaWdodC1uW2NdLmNoYXJ0WSwyKSksYjxnKXtnPWI7dmFyIHA9bltjXX1iPSEwfX1yZXR1cm4hbHx8Yj97eDplLHk6ZCx3ZWlnaHQ6Zi0ocD9nOjApLGNvbm5lY3RvclBvaW50OnB9OiExfTttLnByb3RvdHlwZS5kcmF3U2VyaWVzTGFiZWxzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxkPXRoaXMubGFiZWxTZXJpZXM7ZS5ib3hlc1RvQXZvaWQ9W107ZC5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuaW50ZXJwb2xhdGVkUG9pbnRzPWEuZ2V0UG9pbnRzT25HcmFwaCgpOyhhLm9wdGlvbnMubGFiZWwuYm94ZXNUb0F2b2lkfHwKW10pLmZvckVhY2goZnVuY3Rpb24oYSl7ZS5ib3hlc1RvQXZvaWQucHVzaChhKX0pfSk7ZS5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihhKXtmdW5jdGlvbiBkKGEsYixjKXt2YXIgZD1NYXRoLm1heChoLHooeCwtSW5maW5pdHkpKSxlPU1hdGgubWluKGgrdSx6KEEsSW5maW5pdHkpKTtyZXR1cm4gYT5kJiZhPD1lLWMud2lkdGgmJmI+PW0mJmI8PW0rbi1jLmhlaWdodH12YXIgZj1hLm9wdGlvbnMubGFiZWw7aWYoZiYmKGEueEF4aXN8fGEueUF4aXMpKXt2YXIgZz1bXSxiLGssaD0oaz1lLmludmVydGVkKT9hLnlBeGlzLnBvczphLnhBeGlzLnBvcyxtPWs/YS54QXhpcy5wb3M6YS55QXhpcy5wb3MsdT1lLmludmVydGVkP2EueUF4aXMubGVuOmEueEF4aXMubGVuLG49ZS5pbnZlcnRlZD9hLnhBeGlzLmxlbjphLnlBeGlzLmxlbixjPWEuaW50ZXJwb2xhdGVkUG9pbnRzLHY9eihmLm9uQXJlYSwhIWEuYXJlYSkscT1hLmxhYmVsQnlTZXJpZXMsdz0hcTt2YXIgcD1mLm1pbkZvbnRTaXplOwp2YXIgcj1mLm1heEZvbnRTaXplO3ZhciB0PSJoaWdoY2hhcnRzLWNvbG9yLSIreihhLmNvbG9ySW5kZXgsIm5vbmUiKTtpZih2JiYhayl7az1bYS54QXhpcy50b1BpeGVscyhhLnhEYXRhWzBdKSxhLnhBeGlzLnRvUGl4ZWxzKGEueERhdGFbYS54RGF0YS5sZW5ndGgtMV0pXTt2YXIgeD1NYXRoLm1pbi5hcHBseShNYXRoLGspO3ZhciBBPU1hdGgubWF4LmFwcGx5KE1hdGgsayl9aWYoYS52aXNpYmxlJiYhYS5pc1Nlcmllc0Jvb3N0aW5nJiZjKXtxfHwocT1hLm5hbWUsInN0cmluZyI9PT10eXBlb2YgZi5mb3JtYXQ/cT1LKGYuZm9ybWF0LGEsZSk6Zi5mb3JtYXR0ZXImJihxPWYuZm9ybWF0dGVyLmNhbGwoYSkpLGEubGFiZWxCeVNlcmllcz1xPWUucmVuZGVyZXIubGFiZWwocSwwLC05OTk5LCJjb25uZWN0b3IiKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1zZXJpZXMtbGFiZWwgaGlnaGNoYXJ0cy1zZXJpZXMtbGFiZWwtIithLmluZGV4KyIgIisoYS5vcHRpb25zLmNsYXNzTmFtZXx8IiIpKwoiICIrdCksZS5yZW5kZXJlci5zdHlsZWRNb2RlfHwocS5jc3MoSCh7Y29sb3I6dj9lLnJlbmRlcmVyLmdldENvbnRyYXN0KGEuY29sb3IpOmEuY29sb3J9LGYuc3R5bGV8fHt9KSkscS5hdHRyKHtvcGFjaXR5OmUucmVuZGVyZXIuZm9yRXhwb3J0PzE6MCxzdHJva2U6YS5jb2xvciwic3Ryb2tlLXdpZHRoIjoxfSkpLHAmJnImJnEuY3NzKHtmb250U2l6ZTphLmxhYmVsRm9udFNpemUocCxyKX0pLHEuYXR0cih7cGFkZGluZzowLHpJbmRleDozfSkuYWRkKCkpO3A9cS5nZXRCQm94KCk7cC53aWR0aD1NYXRoLnJvdW5kKHAud2lkdGgpO2ZvcihrPWMubGVuZ3RoLTE7MDxrOy0tayl2PyhyPWNba10uY2hhcnRYLXAud2lkdGgvMix0PWNba10uY2hhcnRDZW50ZXJZLXAuaGVpZ2h0LzIsZChyLHQscCkmJihiPWEuY2hlY2tDbGVhclBvaW50KHIsdCxwKSkpOihyPWNba10uY2hhcnRYKzMsdD1jW2tdLmNoYXJ0WS1wLmhlaWdodC0zLGQocix0LHApJiYoYj1hLmNoZWNrQ2xlYXJQb2ludChyLHQsCnAsITApKSxiJiZnLnB1c2goYikscj1jW2tdLmNoYXJ0WCszLHQ9Y1trXS5jaGFydFkrMyxkKHIsdCxwKSYmKGI9YS5jaGVja0NsZWFyUG9pbnQocix0LHAsITApKSxiJiZnLnB1c2goYikscj1jW2tdLmNoYXJ0WC1wLndpZHRoLTMsdD1jW2tdLmNoYXJ0WSszLGQocix0LHApJiYoYj1hLmNoZWNrQ2xlYXJQb2ludChyLHQscCwhMCkpLGImJmcucHVzaChiKSxyPWNba10uY2hhcnRYLXAud2lkdGgtMyx0PWNba10uY2hhcnRZLXAuaGVpZ2h0LTMsZChyLHQscCkmJihiPWEuY2hlY2tDbGVhclBvaW50KHIsdCxwLCEwKSkpLGImJmcucHVzaChiKTtpZihmLmNvbm5lY3RvckFsbG93ZWQmJiFnLmxlbmd0aCYmIXYpZm9yKHI9aCt1LXAud2lkdGg7cj49aDtyLT0xNilmb3IodD1tO3Q8bStuLXAuaGVpZ2h0O3QrPTE2KShiPWEuY2hlY2tDbGVhclBvaW50KHIsdCxwLCEwKSkmJmcucHVzaChiKTtpZihnLmxlbmd0aCl7aWYoZy5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGIud2VpZ2h0LWEud2VpZ2h0fSksCmI9Z1swXSxlLmJveGVzVG9Bdm9pZC5wdXNoKHtsZWZ0OmIueCxyaWdodDpiLngrcC53aWR0aCx0b3A6Yi55LGJvdHRvbTpiLnkrcC5oZWlnaHR9KSwoYz1NYXRoLnNxcnQoTWF0aC5wb3coTWF0aC5hYnMoYi54LShxLnh8fDApKSwyKStNYXRoLnBvdyhNYXRoLmFicyhiLnktKHEueXx8MCkpLDIpKSkmJmEubGFiZWxCeVNlcmllcyYmKGc9e29wYWNpdHk6ZS5yZW5kZXJlci5mb3JFeHBvcnQ/MTowLHg6Yi54LHk6Yi55fSxmPXtvcGFjaXR5OjF9LDEwPj1jJiYoZj17eDpnLngseTpnLnl9LGc9e30pLGM9dm9pZCAwLHcmJihjPUMoYS5vcHRpb25zLmFuaW1hdGlvbiksYy5kdXJhdGlvbio9LjIpLGEubGFiZWxCeVNlcmllcy5hdHRyKEgoZyx7YW5jaG9yWDpiLmNvbm5lY3RvclBvaW50JiZiLmNvbm5lY3RvclBvaW50LnBsb3RYK2gsYW5jaG9yWTpiLmNvbm5lY3RvclBvaW50JiZiLmNvbm5lY3RvclBvaW50LnBsb3RZK219KSkuYW5pbWF0ZShmLGMpLGEub3B0aW9ucy5rZE5vdz0hMCxhLmJ1aWxkS0RUcmVlKCksCmE9YS5zZWFyY2hQb2ludCh7Y2hhcnRYOmIueCxjaGFydFk6Yi55fSwhMCkpKXEuY2xvc2VzdD1bYSxiLngtKGEucGxvdFh8fDApLGIueS0oYS5wbG90WXx8MCldfWVsc2UgcSYmKGEubGFiZWxCeVNlcmllcz1xLmRlc3Ryb3koKSl9ZWxzZSBxJiYoYS5sYWJlbEJ5U2VyaWVzPXEuZGVzdHJveSgpKX19KTtKKGUsImFmdGVyRHJhd1Nlcmllc0xhYmVscyIpfTtHKG0sImxvYWQiLEYpO0cobSwicmVkcmF3IixGKX0pO3cobSwibWFzdGVycy9tb2R1bGVzL3Nlcmllcy1sYWJlbC5zcmMuanMiLFtdLGZ1bmN0aW9uKCl7fSl9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2VyaWVzLWxhYmVsLmpzLm1hcA=="></script>
<script src="data:application/javascript;base64,LyoqDQogKiBAbGljZW5zZSBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS80LjAvIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCAoQ0MgQlktU0EgNC4wKQ0KICogQGF1dGhvciAgTGFycyBDYWJyZXJhDQogKiBAdmVyc2lvbiAxLjAuOQ0KICovDQoNCi8vIEpTTGludCBvcHRpb25zOg0KLypnbG9iYWwgSGlnaGNoYXJ0cywgd2luZG93Ki8NCg0KKGZ1bmN0aW9uIChIKSB7DQogICAgLy8gQ2hlY2sgaWYgb2JqZWN0IGlzIGFycmF5DQogICAgZnVuY3Rpb24gaXNBcnJheShvYmopIHsNCiAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBBcnJheV0nOw0KICAgIH0NCg0KDQogICAgLy8gU2V0cyB1cCBtb3Rpb24gcmVhZHkgdG8gdXNlDQogICAgZnVuY3Rpb24gTW90aW9uKGNoYXJ0KSB7DQogICAgICAgIHZhciBtb3Rpb24gPSB0aGlzOw0KDQogICAgICAgIHRoaXMuY2hhcnQgPSBjaGFydDsNCiAgICAgICAgdGhpcy5wYXVzZWQgPSB0cnVlOw0KICAgICAgICB0aGlzLm9wdGlvbnMgPSBILm1lcmdlKHRoaXMuZGVmYXVsdE9wdGlvbnMsIHRoaXMuY2hhcnQub3B0aW9ucy5tb3Rpb24pOw0KICAgICAgICB0aGlzLmRhdGFTZXJpZXMgPSBbXTsNCiAgICAgICAgdGhpcy5kYXRhTGVuZ3RoID0gMDsNCiAgICAgICAgbW90aW9uLm9wdGlvbnMuc2VyaWVzID0gSC5zcGxhdChtb3Rpb24ub3B0aW9ucy5zZXJpZXMpOw0KICAgICAgICBIaWdoY2hhcnRzLmVhY2godGhpcy5jaGFydC5zZXJpZXMsIGZ1bmN0aW9uIChzZXJpZXMsIGluZGV4KSB7DQogICAgICAgICAgICBpZiAobW90aW9uLm9wdGlvbnMuc2VyaWVzLmluZGV4T2YoaW5kZXgpID49IDApIHsNCiAgICAgICAgICAgICAgICBtb3Rpb24uZGF0YVNlcmllc1tpbmRleF0gPSBzZXJpZXM7DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXJpZXMuZGF0YS5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgICAgICAgICBpZiAoc2VyaWVzLmRhdGFbaV0uc2VxdWVuY2UpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlvbi5kYXRhTGVuZ3RoID0gTWF0aC5tYXgobW90aW9uLmRhdGFMZW5ndGgsIHNlcmllcy5kYXRhW2ldLnNlcXVlbmNlLmxlbmd0aCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0pOw0KDQogICAgICAgIC8vIFBsYXktY29udHJvbHMgSFRNTC1kaXYNCiAgICAgICAgdGhpcy5wbGF5Q29udHJvbHMgPSBILmNyZWF0ZUVsZW1lbnQoJ2RpdicsIHsNCiAgICAgICAgICAgIGlkOiAncGxheS1jb250cm9scycNCiAgICAgICAgfSwgbnVsbCwgdGhpcy5jaGFydC5yZW5kZXJUbywgbnVsbCk7DQoNCiAgICAgICAgLy8gUGxheS9wYXVzZSBIVE1MLWJ1dHRvbg0KICAgICAgICB0aGlzLnBsYXlQYXVzZUJ0biA9IEguY3JlYXRlRWxlbWVudCgnYnV0dG9uJywgew0KICAgICAgICAgICAgaWQ6ICdwbGF5LXBhdXNlLWJ1dHRvbicsDQogICAgICAgICAgICB0aXRsZTogJ3BsYXknDQogICAgICAgIH0sIG51bGwsIHRoaXMucGxheUNvbnRyb2xzLCBudWxsKTsNCiAgICAgICAgdGhpcy5wbGF5UGF1c2VCdG4uY2xhc3NOYW1lID0gdGhpcy5vcHRpb25zLnBsYXlJY29uOw0KDQogICAgICAgIC8vIFBsYXktcmFuZ2UgSFRNTC1pbnB1dA0KICAgICAgICB0aGlzLnBsYXlSYW5nZSA9IEguY3JlYXRlRWxlbWVudCgnaW5wdXQnLCB7DQogICAgICAgICAgICBpZDogJ3BsYXktcmFuZ2UnLA0KICAgICAgICAgICAgdHlwZTogJ3JhbmdlJywNCiAgICAgICAgICAgIG1pbjogMCwNCiAgICAgICAgICAgIG1heDogdGhpcy5kYXRhTGVuZ3RoIC0gMSwNCiAgICAgICAgICAgIHN0ZXA6IHRoaXMub3B0aW9ucy5tYWduZXQuc3RlcA0KICAgICAgICB9LCBudWxsLCB0aGlzLnBsYXlDb250cm9scywgbnVsbCk7DQogICAgICAgIC8vIEltcG9ydGFudDogbWF4IG11c3QgYmUgc2V0IGJlZm9yZSB2YWx1ZSBpbiBvcmRlciB0byBhbGxvdyBmb3INCiAgICAgICAgLy8gaGlnaGVyIG51bWJlcnMgdGhhbiAxMDAuDQogICAgICAgIHRoaXMucGxheVJhbmdlLnZhbHVlID0gSC5waWNrKHRoaXMub3B0aW9ucy5zdGFydEluZGV4LCB0aGlzLmRhdGFMZW5ndGggLSAxKTsNCg0KICAgICAgICAvLyBQbGF5LXJhbmdlIEhUTUwtb3V0cHV0DQogICAgICAgIHRoaXMucGxheU91dHB1dCA9IEguY3JlYXRlRWxlbWVudCgnbGFiZWwnLCB7DQogICAgICAgICAgICBpZDogJ3BsYXktb3V0cHV0JywNCiAgICAgICAgICAgIG5hbWU6IHRoaXMub3B0aW9ucy5heGlzTGFiZWwNCiAgICAgICAgfSwgbnVsbCwgdGhpcy5wbGF5Q29udHJvbHMsIG51bGwpOw0KICAgICAgICBpZiAoaXNBcnJheSh0aGlzLm9wdGlvbnMubGFiZWxzKSkgew0KICAgICAgICAgICAgdGhpcy5wbGF5T3V0cHV0LmlubmVySFRNTCA9IHRoaXMub3B0aW9ucy5sYWJlbHNbdGhpcy5kYXRhTGVuZ3RoIC0gMV0gfHwgJyc7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB0aGlzLnBsYXlPdXRwdXQuaW5uZXJIVE1MID0gdGhpcy5kYXRhTGVuZ3RoIC0gMTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIENvbW1vbiBrZXkgZXZlbnQgaGFuZGxlciBmdW5jdGlvbg0KICAgICAgICBmdW5jdGlvbiBoYW5kbGVLZXlFdmVudHMoZSkgew0KICAgICAgICAgICAgZSA9IGUgfHwgd2luZG93LmV2ZW50Ow0KICAgICAgICAgICAgc3dpdGNoIChlLndoaWNoKSB7DQogICAgICAgICAgICBjYXNlIDMyOiAvLyBTcGFjZQ0KICAgICAgICAgICAgICAgIG1vdGlvbi50b2dnbGVQbGF5UGF1c2UoKTsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgMzc6IC8vIExlZnQNCiAgICAgICAgICAgICAgICBtb3Rpb24ucGxheVJhbmdlLnZhbHVlID0gbW90aW9uLnJvdW5kKHBhcnNlRmxvYXQobW90aW9uLnBsYXlSYW5nZS52YWx1ZSkgLSAxKTsNCiAgICAgICAgICAgICAgICBtb3Rpb24udXBkYXRlQ2hhcnQobW90aW9uLnBsYXlSYW5nZS52YWx1ZSk7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlIDM5OiAvLyBSaWdodA0KICAgICAgICAgICAgICAgIG1vdGlvbi5wbGF5UmFuZ2UudmFsdWUgPSBtb3Rpb24ucm91bmQocGFyc2VGbG9hdChtb3Rpb24ucGxheVJhbmdlLnZhbHVlKSArIDEpOw0KICAgICAgICAgICAgICAgIG1vdGlvbi51cGRhdGVDaGFydChtb3Rpb24ucGxheVJhbmdlLnZhbHVlKTsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gQmluZCBjb250cm9scyB0byBldmVudHMNCiAgICAgICAgSGlnaGNoYXJ0cy5hZGRFdmVudCh0aGlzLnBsYXlQYXVzZUJ0biwgJ2NsaWNrJywgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgbW90aW9uLnRvZ2dsZVBsYXlQYXVzZSgpOw0KICAgICAgICB9KTsNCiAgICAgICAgSGlnaGNoYXJ0cy5hZGRFdmVudCh0aGlzLnBsYXlSYW5nZSwgJ21vdXNldXAnLCBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICBtb3Rpb24uYXR0cmFjdFRvU3RlcCgpOw0KICAgICAgICB9KTsNCiAgICAgICAgSGlnaGNoYXJ0cy5hZGRFdmVudCh0aGlzLnBsYXlSYW5nZSwgJ2lucHV0JywgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgbW90aW9uLnVwZGF0ZUNoYXJ0KHRoaXMudmFsdWUpOw0KICAgICAgICB9KTsNCg0KICAgICAgICAvLyBSZXF1ZXN0IGZvY3VzIHRvIHRoZSBjb250cm9scyB3aGVuIGNsaWNraW5nIG9uIGNvbnRyb2xzIGRpdg0KICAgICAgICBIaWdoY2hhcnRzLmFkZEV2ZW50KHRoaXMucGxheUNvbnRyb2xzLCAnY2xpY2snLCBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICBtb3Rpb24ucGxheVJhbmdlLmZvY3VzKCk7DQogICAgICAgIH0pOw0KICAgICAgICAvLyBCaW5kIGtleXMgdG8gZXZlbnRzDQogICAgICAgIEhpZ2hjaGFydHMuYWRkRXZlbnQodGhpcy5wbGF5UGF1c2VCdG4sICdrZXlkb3duJywgaGFuZGxlS2V5RXZlbnRzKTsNCiAgICAgICAgSGlnaGNoYXJ0cy5hZGRFdmVudCh0aGlzLnBsYXlSYW5nZSwgJ2tleWRvd24nLCBoYW5kbGVLZXlFdmVudHMpOw0KDQogICAgICAgIC8vIEluaXRpYWwgdmFsdWUNCiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gcGFyc2VGbG9hdCh0aGlzLnBsYXlSYW5nZS52YWx1ZSk7DQoNCiAgICAgICAgLy8gSW5pdGlhbCB1cGRhdGUNCiAgICAgICAgdGhpcy51cGRhdGVDaGFydCh0aGlzLmlucHV0VmFsdWUpOw0KDQogICAgICAgIC8vIEF1dG8tcGxheQ0KICAgICAgICBpZiAodGhpcy5vcHRpb25zLmF1dG9QbGF5KSB7DQogICAgICAgICAgICB0aGlzLnBsYXkoKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIERlZmF1bHQgb3B0aW9ucyBmb3IgTW90aW9uDQogICAgTW90aW9uLnByb3RvdHlwZS5kZWZhdWx0T3B0aW9ucyA9IHsNCiAgICAgICAgZW5hYmxlZDogdHJ1ZSwNCiAgICAgICAgYXhpc0xhYmVsOiAneWVhcicsDQogICAgICAgIGF1dG9QbGF5IDogZmFsc2UsDQogICAgICAgIGxvb3A6IGZhbHNlLA0KICAgICAgICBzZXJpZXM6IDAsDQogICAgICAgIHVwZGF0ZUludGVydmFsOiAxMCwNCiAgICAgICAgbWFnbmV0OiB7DQogICAgICAgICAgICByb3VuZDogJ3JvdW5kJywNCiAgICAgICAgICAgIHN0ZXA6IDAuMDENCiAgICAgICAgfSwNCiAgICAgICAgcGxheUljb246ICJmYSBmYS1wbGF5IiwNCiAgICAgICAgcGF1c2VJY29uOiAiZmEgZmEtcGF1c2UiDQogICAgfTsNCg0KICAgIC8vIFRvZ2dsZXMgYmV0d2VlbiBQbGF5IGFuZCBQYXVzZSBzdGF0ZXMsIGFuZCBtYWtlcyBjYWxscyB0byBjaGFuZ2VCdXR0b25UeXBlKCkNCiAgICAvLyBGcm9tIGh0dHA6Ly93d3cuY3JlYXRpdmVibG9xLmNvbS9odG1sNS9idWlsZC1jdXN0b20taHRtbDUtdmlkZW8tcGxheWVyLTkxMzQ0NzMNCiAgICBNb3Rpb24ucHJvdG90eXBlLnRvZ2dsZVBsYXlQYXVzZSA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgdGhpc1t0aGlzLnBhdXNlZCA/ICdwbGF5JyA6ICdwYXVzZSddKCk7DQogICAgfTsNCg0KICAgIC8vIFBsYXlzIHRoZSBtb3Rpb24sIGNvbnRpbnVvdXNseSB1cGRhdGluZyB0aGUgY2hhcnQNCiAgICBNb3Rpb24ucHJvdG90eXBlLnBsYXkgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgIHZhciBtb3Rpb24gPSB0aGlzOw0KICAgICAgICBpZiAodGhpcy5wYXVzZWQgJiYgcGFyc2VGbG9hdCh0aGlzLnBsYXlSYW5nZS52YWx1ZSkgPT09IHBhcnNlRmxvYXQodGhpcy5wbGF5UmFuZ2UubWF4KSkgew0KICAgICAgICAgICAgdGhpcy5yZXNldCgpOw0KICAgICAgICB9DQogICAgICAgIHRoaXMuY2hhbmdlQnV0dG9uVHlwZSgncGF1c2UnKTsNCiAgICAgICAgdGhpcy5wYXVzZWQgPSBmYWxzZTsNCiAgICAgICAgdGhpcy50aW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIG1vdGlvbi5wbGF5VXBkYXRlKCk7DQogICAgICAgIH0sIHRoaXMub3B0aW9ucy51cGRhdGVJbnRlcnZhbCk7DQogICAgfTsNCg0KICAgIC8vIFBhdXNlcyB0aGUgbW90aW9uLCB3aGljaCBzdG9wcyB1cGRhdGluZyB0aGUgY2hhcnQNCiAgICBNb3Rpb24ucHJvdG90eXBlLnBhdXNlID0gZnVuY3Rpb24gKCkgew0KICAgICAgICB0aGlzLmNoYW5nZUJ1dHRvblR5cGUoJ3BsYXknKTsNCiAgICAgICAgdGhpcy5wYXVzZWQgPSB0cnVlOw0KICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTsNCiAgICAgICAgdGhpcy5hdHRyYWN0VG9TdGVwKCk7DQogICAgfTsNCg0KICAgIC8vIFJlc2V0cyB0aGUgbW90aW9uIGFuZCB1cGRhdGVzIHRoZSBjaGFydC4gRG9lcyBub3QgcGF1c2UNCiAgICBNb3Rpb24ucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gKCkgew0KICAgICAgICB0aGlzLnBsYXlSYW5nZS52YWx1ZSA9IHRoaXMucGxheVJhbmdlLm1pbjsNCiAgICAgICAgdGhpcy51cGRhdGVDaGFydCh0aGlzLnBsYXlSYW5nZS52YWx1ZSk7DQogICAgfTsNCg0KICAgIC8vIFVwZGF0ZXMgYSBidXR0b24ncyB0aXRsZSwgaW5uZXJIVE1MIGFuZCBDU1MgY2xhc3MgdG8gYSBjZXJ0YWluIHZhbHVlDQogICAgTW90aW9uLnByb3RvdHlwZS5jaGFuZ2VCdXR0b25UeXBlID0gZnVuY3Rpb24gKHZhbHVlKSB7DQogICAgICAgIHRoaXMucGxheVBhdXNlQnRuLnRpdGxlID0gdmFsdWU7DQogICAgICAgIHRoaXMucGxheVBhdXNlQnRuLmNsYXNzTmFtZSA9IHZhbHVlICsgIiAiOw0KICAgICAgICBpZiAodmFsdWUgPT0gJ3BsYXknKSB7DQogICAgICAgICAgICB0aGlzLnBsYXlQYXVzZUJ0bi5jbGFzc05hbWUgKz0gdGhpcy5vcHRpb25zLnBsYXlJY29uOw0KICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09ICdwYXVzZScpIHsNCiAgICAgICAgICAgIHRoaXMucGxheVBhdXNlQnRuLmNsYXNzTmFtZSArPSB0aGlzLm9wdGlvbnMucGF1c2VJY29uOzsNCiAgICAgICAgfQ0KICAgIH07DQoNCiAgICAvLyBDYWxsZWQgY29udGludW91c2x5IHdoaWxlIHBsYXlpbmcNCiAgICBNb3Rpb24ucHJvdG90eXBlLnBsYXlVcGRhdGUgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgIGlmICghdGhpcy5wYXVzZWQpIHsNCiAgICAgICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHBhcnNlRmxvYXQodGhpcy5wbGF5UmFuZ2UudmFsdWUpOw0KICAgICAgICAgICAgdGhpcy5wbGF5UmFuZ2UudmFsdWUgPSB0aGlzLmlucHV0VmFsdWUgKyB0aGlzLm9wdGlvbnMubWFnbmV0LnN0ZXA7DQogICAgICAgICAgICB0aGlzLmF0dHJhY3RUb1N0ZXAoKTsNCiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hhcnQodGhpcy5wbGF5UmFuZ2UudmFsdWUpOyAvLyBVc2UgcGxheVJhbmdlLnZhbHVlIHRvIGdldCB1cGRhdGVkIHZhbHVlDQogICAgICAgICAgICBpZiAodGhpcy5wbGF5UmFuZ2UudmFsdWUgPj0gcGFyc2VGbG9hdCh0aGlzLnBsYXlSYW5nZS5tYXgpKSB7IC8vIEF1dG8tcGF1c2UNCiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmxvb3ApIHsNCiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIHRoaXMucGF1c2UoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9Ow0KDQogICAgLy8gVXBkYXRlcyBjaGFydCBkYXRhIGFuZCByZWRyYXdzIHRoZSBjaGFydA0KICAgIE1vdGlvbi5wcm90b3R5cGUudXBkYXRlQ2hhcnQgPSBmdW5jdGlvbiAoaW5wdXRWYWx1ZSkgew0KICAgICAgICB2YXIgc2VyaWVzS2V5LA0KICAgICAgICAgICAgc2VyaWVzLA0KICAgICAgICAgICAgcG9pbnQsDQogICAgICAgICAgICByb3VuZGVkSW5wdXQgPSB0aGlzLnJvdW5kKGlucHV0VmFsdWUpLA0KICAgICAgICAgICAgaTsNCiAgICAgICAgaWYgKHRoaXMuY3VycmVudEF4aXNWYWx1ZSAhPT0gcm91bmRlZElucHV0KSB7DQogICAgICAgICAgICB0aGlzLmN1cnJlbnRBeGlzVmFsdWUgPSByb3VuZGVkSW5wdXQ7DQogICAgICAgICAgICB0aGlzLmNoYXJ0Lm9wdGlvbnMubW90aW9uLnN0YXJ0SW5kZXggPSByb3VuZGVkSW5wdXQ7DQogICAgICAgICAgICBmb3IgKHNlcmllc0tleSBpbiB0aGlzLmRhdGFTZXJpZXMpIHsNCiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhU2VyaWVzLmhhc093blByb3BlcnR5KHNlcmllc0tleSkpIHsNCiAgICAgICAgICAgICAgICAgICAgc2VyaWVzID0gdGhpcy5kYXRhU2VyaWVzW3Nlcmllc0tleV07DQogICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzZXJpZXMuZGF0YS5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnQgPSBzZXJpZXMuZGF0YVtpXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvaW50LnNlcXVlbmNlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50LnVwZGF0ZShwb2ludC5zZXF1ZW5jZVtyb3VuZGVkSW5wdXRdLCBmYWxzZSwgZmFsc2UpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjonLCBlLCAnIFxuYXQgcG9pbnQ6JywgcG9pbnQsICcgXG53aXRoIG5ldyB2YWx1ZTonLCBwb2ludC5zZXF1ZW5jZVtyb3VuZGVkSW5wdXRdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHRoaXMuY2hhcnQucmVkcmF3KCk7DQogICAgICAgICAgICB0aGlzLmF0dHJhY3RUb1N0ZXAoKTsNCiAgICAgICAgfQ0KICAgIH07DQoNCiAgICAvLyBNb3ZlcyBvdXRwdXQgdmFsdWUgdG8gZGF0YSBwb2ludA0KICAgIE1vdGlvbi5wcm90b3R5cGUuYXR0cmFjdFRvU3RlcCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgaWYgKGlzQXJyYXkodGhpcy5vcHRpb25zLmxhYmVscykpIHsNCiAgICAgICAgICAgIHRoaXMucGxheU91dHB1dC5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMubGFiZWxzW3RoaXMucm91bmQodGhpcy5wbGF5UmFuZ2UudmFsdWUpXSB8fCAnJzsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIHRoaXMucGxheU91dHB1dC5pbm5lckhUTUwgPSB0aGlzLnJvdW5kKHRoaXMucGxheVJhbmdlLnZhbHVlKTsNCiAgICAgICAgfQ0KICAgIH07DQoNCiAgICAvLyBSZXR1cm5zIGFuIGludGVnZXIgcm91bmRlZCB1cCwgZG93biBvciBldmVuIGRlcGVuZGluZyBvbg0KICAgIC8vIG1vdGlvbi5tYWduZXQucm91bmQgb3B0aW9ucy4NCiAgICBNb3Rpb24ucHJvdG90eXBlLnJvdW5kID0gZnVuY3Rpb24gKG51bWJlcikgew0KICAgICAgICByZXR1cm4gTWF0aFt0aGlzLm9wdGlvbnMubWFnbmV0LnJvdW5kXShudW1iZXIpOw0KICAgIH07DQoNCiAgICAvLyBJbml0aWF0ZXMgbW90aW9uIGF1dG9tYXRpY2FsbHkgaWYgbW90aW9uIG9wdGlvbnMgb2JqZWN0IGV4aXN0cyBhbmQNCiAgICAvLyBpcyBub3QgZGlzYWJsZWQNCiAgICBILkNoYXJ0LnByb3RvdHlwZS5jYWxsYmFja3MucHVzaChmdW5jdGlvbiAoY2hhcnQpIHsNCiAgICAgICAgaWYgKGNoYXJ0Lm9wdGlvbnMubW90aW9uICYmIGNoYXJ0Lm9wdGlvbnMubW90aW9uLmVuYWJsZWQpIHsNCiAgICAgICAgICAgIGNoYXJ0Lm1vdGlvbiA9IG5ldyBNb3Rpb24oY2hhcnQpOw0KICAgICAgICB9DQogICAgfSk7DQoNCiAgICBILk1vdGlvbiA9IE1vdGlvbjsNCn0oSGlnaGNoYXJ0cykpOw0K"></script>
<script src="data:application/javascript;base64,dmFyIEhDRGVmYXVsdHMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgSGlnaGNoYXJ0cy5nZXRPcHRpb25zKCksIHt9KTsNCg0KZnVuY3Rpb24gUmVzZXRIaWdoY2hhcnRzT3B0aW9ucygpIHsNCiAgICAvLyBGb3J0dW5hdGVseSwgSGlnaGNoYXJ0cyByZXR1cm5zIHRoZSByZWZlcmVuY2UgdG8gZGVmYXVsdE9wdGlvbnMgaXRzZWxmDQogICAgLy8gV2UgY2FuIG1hbmlwdWxhdGUgdGhpcyBhbmQgZGVsZXRlIGFsbCB0aGUgcHJvcGVydGllcw0KICAgIHZhciBkZWZhdWx0T3B0aW9ucyA9IEhpZ2hjaGFydHMuZ2V0T3B0aW9ucygpOw0KICAgIGZvciAodmFyIHByb3AgaW4gZGVmYXVsdE9wdGlvbnMpIHsNCiAgICAgICAgaWYgKHR5cGVvZiBkZWZhdWx0T3B0aW9uc1twcm9wXSAhPT0gJ2Z1bmN0aW9uJykgZGVsZXRlIGRlZmF1bHRPcHRpb25zW3Byb3BdOw0KICAgIH0NCiAgICAvLyBGYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHRzIHRoYXQgd2UgY2FwdHVyZWQgaW5pdGlhbGx5LCB0aGlzIHJlc2V0cyB0aGUgdGhlbWUNCiAgICBIaWdoY2hhcnRzLnNldE9wdGlvbnMoSENEZWZhdWx0cyk7DQp9DQo="></script>
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIEJvb3N0IG1vZHVsZQoKIChjKSAyMDEwLTIwMTkgSGlnaHNvZnQgQVMKIEF1dGhvcjogVG9yc3RlaW4gSG9uc2kKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoKIFRoaXMgaXMgYSBIaWdoY2hhcnRzIG1vZHVsZSB0aGF0IGRyYXdzIGxvbmcgZGF0YSBzZXJpZXMgb24gYSBjYW52YXMgaW4gb3JkZXIKIHRvIGluY3JlYXNlIHBlcmZvcm1hbmNlIG9mIHRoZSBpbml0aWFsIGxvYWQgdGltZSBhbmQgdG9vbHRpcCByZXNwb25zaXZlbmVzcy4KCiBDb21wYXRpYmxlIHdpdGggV2ViR0wgY29tcGF0aWJsZSBicm93c2VycyAobm90IElFIDwgMTEpLgoKIElmIHRoaXMgbW9kdWxlIGlzIHRha2VuIGluIGFzIHBhcnQgb2YgdGhlIGNvcmUKIC0gQWxsIHRoZSBsb2FkaW5nIGxvZ2ljIHNob3VsZCBiZSBtZXJnZWQgd2l0aCBjb3JlLiBVcGRhdGUgc3R5bGVzIGluIHRoZQogICBjb3JlLgogLSBNb3N0IG9mIHRoZSBtZXRob2Qgd3JhcHMgc2hvdWxkIHByb2JhYmx5IGJlIGFkZGVkIGRpcmVjdGx5IGluIHBhcmVudAogICBtZXRob2RzLgoKIE5vdGVzIGZvciBib29zdCBtb2RlCiAtIEFyZWEgbGluZXMgYXJlIG5vdCBkcmF3bgogLSBMaW5lcyBhcmUgbm90IGRyYXduIG9uIHNjYXR0ZXIgY2hhcnRzCiAtIFpvbmVzIGFuZCBuZWdhdGl2ZUNvbG9yIGRvbid0IHdvcmsKIC0gRGFzaCBzdHlsZXMgYXJlIG5vdCByZW5kZXJlZCBvbiBsaW5lcy4KIC0gQ29sdW1ucyBhcmUgYWx3YXlzIG9uZSBwaXhlbCB3aWRlLiBEb24ndCBzZXQgdGhlIHRocmVzaG9sZCB0b28gbG93LgogLSBEaXNhYmxlIGFuaW1hdGlvbnMKIC0gTWFya2VyIHNoYXBlcyBhcmUgbm90IHN1cHBvcnRlZDogbWFya2VycyB3aWxsIGFsd2F5cyBiZSBjaXJjbGVzLCBleGNlcHQKICAgaGVhdG1hcCBzZXJpZXMsIHdoZXJlIG1hcmtlcnMgYXJlIGFsd2F5cyByZWN0YW5nbGVzLgoKIE9wdGltaXppbmcgdGlwcyBmb3IgdXNlcnMKIC0gU2V0IGV4dHJlbWVzIChtaW4sIG1heCkgZXhwbGljaXRseSBvbiB0aGUgYXhlcyBpbiBvcmRlciBmb3IgSGlnaGNoYXJ0cyB0bwogICBhdm9pZCBjb21wdXRpbmcgZXh0cmVtZXMuCiAtIFNldCBlbmFibGVNb3VzZVRyYWNraW5nIHRvIGZhbHNlIG9uIHRoZSBzZXJpZXMgdG8gaW1wcm92ZSB0b3RhbCByZW5kZXJpbmcKICAgICAgdGltZS4KIC0gVGhlIGRlZmF1bHQgdGhyZXNob2xkIGlzIHNldCBiYXNlZCBvbiBvbmUgc2VyaWVzLiBJZiB5b3UgaGF2ZSBtdWx0aXBsZSwKICAgZGVuc2Ugc2VyaWVzLCB0aGUgY29tYmluZWQgbnVtYmVyIG9mIHBvaW50cyBkcmF3biBnZXRzIGhpZ2hlciwgYW5kIHlvdSBtYXkKICAgd2FudCB0byBzZXQgdGhlIHRocmVzaG9sZCBsb3dlciBpbiBvcmRlciB0byB1c2Ugb3B0aW1pemF0aW9ucy4KIC0gSWYgZHJhd2luZyBsYXJnZSBzY2F0dGVyIGNoYXJ0cywgaXQncyBiZW5lZmljaWFsIHRvIHNldCB0aGUgbWFya2VyIHJhZGl1cwogICB0byBhIHZhbHVlIGxlc3MgdGhhbiAxLiBUaGlzIGlzIHRvIGFkZCBhZGRpdGlvbmFsIHNwYWNpbmcgdG8gbWFrZSB0aGUgY2hhcnQKICAgbW9yZSByZWFkYWJsZS4KIC0gSWYgdGhlIHZhbHVlIGluY3JlbWVudHMgb24gYm90aCB0aGUgWCBhbmQgWSBheGlzIGFyZW4ndCBzbWFsbCwgY29uc2lkZXIKICAgc2V0dGluZyB1c2VHUFVUcmFuc2xhdGlvbnMgdG8gdHJ1ZSBvbiB0aGUgYm9vc3Qgc2V0dGluZ3Mgb2JqZWN0LiBJZiB5b3UgZG8KICAgdGhpcyBhbmQgdGhlIGluY3JlbWVudHMgYXJlIHNtYWxsIChlLmcuIGRhdGV0aW1lIGF4aXMgd2l0aCBzbWFsbCB0aW1lCiAgIGluY3JlbWVudHMpIGl0IG1heSBjYXVzZSByZW5kZXJpbmcgaXNzdWVzIGR1ZSB0byBmbG9hdGluZyBwb2ludCByb3VuZGluZwogICBlcnJvcnMsIHNvIHlvdXIgbWlsbGFnZSBtYXkgdmFyeS4KCiBTZXR0aW5ncwogICAgVGhlcmUgYXJlIHR3byB3YXlzIG9mIHNldHRpbmcgdGhlIGJvb3N0IHRocmVzaG9sZDoKICAgIC0gUGVyIHNlcmllczogYm9vc3QgYmFzZWQgb24gbnVtYmVyIG9mIHBvaW50cyBpbiBpbmRpdmlkdWFsIHNlcmllcwogICAgLSBQZXIgY2hhcnQ6IGJvb3N0IGJhc2VkIG9uIHRoZSBudW1iZXIgb2Ygc2VyaWVzCgogIFRvIHNldCB0aGUgc2VyaWVzIGJvb3N0IHRocmVzaG9sZCwgc2V0IHNlcmllc0Jvb3N0VGhyZXNob2xkIG9uIHRoZSBjaGFydAogIG9iamVjdC4KICBUbyBzZXQgdGhlIHNlcmllcy1zcGVjaWZpYyB0aHJlc2hvbGQsIHNldCBib29zdFRocmVzaG9sZCBvbiB0aGUgc2VyaWVzCiAgb2JqZWN0LgoKICBJbiBhZGRpdGlvbiwgdGhlIGZvbGxvd2luZyBjYW4gYmUgc2V0IGluIHRoZSBib29zdCBvYmplY3Q6CiAgewogICAgICAvL1dldGhlciBvciBub3QgdG8gdXNlIGFscGhhIGJsZW5kaW5nCiAgICAgIHVzZUFscGhhOiBib29sZWFuIC0gZGVmYXVsdDogdHJ1ZQogICAgICAvL1NldCB0byB0cnVlIHRvIHBlcmZvcm0gdHJhbnNsYXRpb25zIG9uIHRoZSBHUFUuCiAgICAgIC8vTXVjaCBmYXN0ZXIsIGJ1dCBtYXkgY2F1c2UgcmVuZGVyaW5nIGlzc3VlcwogICAgICAvL3doZW4gdXNpbmcgdmFsdWVzIGZhciBmcm9tIDAgZHVlIHRvIGZsb2F0aW5nIHBvaW50CiAgICAgIC8vcm91bmRpbmcgaXNzdWVzCiAgICAgIHVzZUdQVVRyYW5zbGF0aW9uczogYm9vbGVhbiAtIGRlZmF1bHQ6IGZhbHNlCiAgICAgIC8vVXNlIHByZS1hbGxvY2F0ZWQgYnVmZmVycywgbXVjaCBmYXN0ZXIsCiAgICAgIC8vYnV0IG1heSBjYXVzZSByZW5kZXJpbmcgaXNzdWVzIHdpdGggc29tZSBkYXRhIHNldHMKICAgICAgdXNlUHJlYWxsb2NhdGVkOiBib29sZWFuIC0gZGVmYXVsdDogZmFsc2UKICB9CiovCihmdW5jdGlvbihiKXsib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzPyhiWyJkZWZhdWx0Il09Yixtb2R1bGUuZXhwb3J0cz1iKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoImhpZ2hjaGFydHMvbW9kdWxlcy9ib29zdCIsWyJoaWdoY2hhcnRzIl0sZnVuY3Rpb24obil7YihuKTtiLkhpZ2hjaGFydHM9bjtyZXR1cm4gYn0pOmIoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihiKXtmdW5jdGlvbiBuKGIsbCxFLG0pe2IuaGFzT3duUHJvcGVydHkobCl8fChiW2xdPW0uYXBwbHkobnVsbCxFKSl9Yj1iP2IuX21vZHVsZXM6e307bihiLCJtb2R1bGVzL2Jvb3N0L2Jvb3N0YWJsZXMuanMiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuImFyZWEgYXJlYXJhbmdlIGNvbHVtbiBjb2x1bW5yYW5nZSBiYXIgbGluZSBzY2F0dGVyIGhlYXRtYXAgYnViYmxlIHRyZWVtYXAiLnNwbGl0KCIgIil9KTsKbihiLCJtb2R1bGVzL2Jvb3N0L2Jvb3N0YWJsZS1tYXAuanMiLFtiWyJtb2R1bGVzL2Jvb3N0L2Jvb3N0YWJsZXMuanMiXV0sZnVuY3Rpb24oYil7dmFyIHY9e307Yi5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZbYl09MX0pO3JldHVybiB2fSk7bihiLCJtb2R1bGVzL2Jvb3N0L3dnbC1zaGFkZXIuanMiLFtiWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYil7dmFyIHY9Yi5jbGFtcCxFPWIuZXJyb3IsbT1iLnBpY2s7cmV0dXJuIGZ1bmN0aW9uKGQpe2Z1bmN0aW9uIGIoKXtrLmxlbmd0aCYmRSgiW2hpZ2hjaGFydHMgYm9vc3RdIHNoYWRlciBlcnJvciAtICIray5qb2luKCJcbiIpKX1mdW5jdGlvbiBnKGMsYSl7dmFyIGU9ZC5jcmVhdGVTaGFkZXIoInZlcnRleCI9PT1hP2QuVkVSVEVYX1NIQURFUjpkLkZSQUdNRU5UX1NIQURFUik7ZC5zaGFkZXJTb3VyY2UoZSxjKTtkLmNvbXBpbGVTaGFkZXIoZSk7cmV0dXJuIGQuZ2V0U2hhZGVyUGFyYW1ldGVyKGUsZC5DT01QSUxFX1NUQVRVUyk/CmU6KGsucHVzaCgid2hlbiBjb21waWxpbmcgIithKyIgc2hhZGVyOlxuIitkLmdldFNoYWRlckluZm9Mb2coZSkpLCExKX1mdW5jdGlvbiB6KCl7ZnVuY3Rpb24gYyhjKXtyZXR1cm4gZC5nZXRVbmlmb3JtTG9jYXRpb24oYSxjKX12YXIgSD1nKCIjdmVyc2lvbiAxMDBcbiNkZWZpbmUgTE4xMCAyLjMwMjU4NTA5Mjk5NDA0NlxucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuYXR0cmlidXRlIHZlYzQgYVZlcnRleFBvc2l0aW9uO1xuYXR0cmlidXRlIHZlYzQgYUNvbG9yO1xudmFyeWluZyBoaWdocCB2ZWMyIHBvc2l0aW9uO1xudmFyeWluZyBoaWdocCB2ZWM0IHZDb2xvcjtcbnVuaWZvcm0gbWF0NCB1UE1hdHJpeDtcbnVuaWZvcm0gZmxvYXQgcFNpemU7XG51bmlmb3JtIGZsb2F0IHRyYW5zbGF0ZWRUaHJlc2hvbGQ7XG51bmlmb3JtIGJvb2wgaGFzVGhyZXNob2xkO1xudW5pZm9ybSBib29sIHNraXBUcmFuc2xhdGlvbjtcbnVuaWZvcm0gZmxvYXQgeEF4aXNUcmFucztcbnVuaWZvcm0gZmxvYXQgeEF4aXNNaW47XG51bmlmb3JtIGZsb2F0IHhBeGlzTWluUGFkO1xudW5pZm9ybSBmbG9hdCB4QXhpc1BvaW50UmFuZ2U7XG51bmlmb3JtIGZsb2F0IHhBeGlzTGVuO1xudW5pZm9ybSBib29sICB4QXhpc1Bvc3RUcmFuc2xhdGU7XG51bmlmb3JtIGZsb2F0IHhBeGlzT3JkaW5hbFNsb3BlO1xudW5pZm9ybSBmbG9hdCB4QXhpc09yZGluYWxPZmZzZXQ7XG51bmlmb3JtIGZsb2F0IHhBeGlzUG9zO1xudW5pZm9ybSBib29sICB4QXhpc0NWU0Nvb3JkO1xudW5pZm9ybSBib29sICB4QXhpc0lzTG9nO1xudW5pZm9ybSBib29sICB4QXhpc1JldmVyc2VkO1xudW5pZm9ybSBmbG9hdCB5QXhpc1RyYW5zO1xudW5pZm9ybSBmbG9hdCB5QXhpc01pbjtcbnVuaWZvcm0gZmxvYXQgeUF4aXNNaW5QYWQ7XG51bmlmb3JtIGZsb2F0IHlBeGlzUG9pbnRSYW5nZTtcbnVuaWZvcm0gZmxvYXQgeUF4aXNMZW47XG51bmlmb3JtIGJvb2wgIHlBeGlzUG9zdFRyYW5zbGF0ZTtcbnVuaWZvcm0gZmxvYXQgeUF4aXNPcmRpbmFsU2xvcGU7XG51bmlmb3JtIGZsb2F0IHlBeGlzT3JkaW5hbE9mZnNldDtcbnVuaWZvcm0gZmxvYXQgeUF4aXNQb3M7XG51bmlmb3JtIGJvb2wgIHlBeGlzQ1ZTQ29vcmQ7XG51bmlmb3JtIGJvb2wgIHlBeGlzSXNMb2c7XG51bmlmb3JtIGJvb2wgIHlBeGlzUmV2ZXJzZWQ7XG51bmlmb3JtIGJvb2wgIGlzQnViYmxlO1xudW5pZm9ybSBib29sICBidWJibGVTaXplQnlBcmVhO1xudW5pZm9ybSBmbG9hdCBidWJibGVaTWluO1xudW5pZm9ybSBmbG9hdCBidWJibGVaTWF4O1xudW5pZm9ybSBmbG9hdCBidWJibGVaVGhyZXNob2xkO1xudW5pZm9ybSBmbG9hdCBidWJibGVNaW5TaXplO1xudW5pZm9ybSBmbG9hdCBidWJibGVNYXhTaXplO1xudW5pZm9ybSBib29sICBidWJibGVTaXplQWJzO1xudW5pZm9ybSBib29sICBpc0ludmVydGVkO1xuZmxvYXQgYnViYmxlUmFkaXVzKCl7XG5mbG9hdCB2YWx1ZSA9IGFWZXJ0ZXhQb3NpdGlvbi53O1xuZmxvYXQgek1heCA9IGJ1YmJsZVpNYXg7XG5mbG9hdCB6TWluID0gYnViYmxlWk1pbjtcbmZsb2F0IHJhZGl1cyA9IDAuMDtcbmZsb2F0IHBvcyA9IDAuMDtcbmZsb2F0IHpSYW5nZSA9IHpNYXggLSB6TWluO1xuaWYgKGJ1YmJsZVNpemVBYnMpe1xudmFsdWUgPSB2YWx1ZSAtIGJ1YmJsZVpUaHJlc2hvbGQ7XG56TWF4ID0gbWF4KHpNYXggLSBidWJibGVaVGhyZXNob2xkLCB6TWluIC0gYnViYmxlWlRocmVzaG9sZCk7XG56TWluID0gMC4wO1xufVxuaWYgKHZhbHVlIDwgek1pbil7XG5yYWRpdXMgPSBidWJibGVaTWluIC8gMi4wIC0gMS4wO1xufSBlbHNlIHtcbnBvcyA9IHpSYW5nZSA+IDAuMCA/ICh2YWx1ZSAtIHpNaW4pIC8gelJhbmdlIDogMC41O1xuaWYgKGJ1YmJsZVNpemVCeUFyZWEgJiYgcG9zID4gMC4wKXtcbnBvcyA9IHNxcnQocG9zKTtcbn1cbnJhZGl1cyA9IGNlaWwoYnViYmxlTWluU2l6ZSArIHBvcyAqIChidWJibGVNYXhTaXplIC0gYnViYmxlTWluU2l6ZSkpIC8gMi4wO1xufVxucmV0dXJuIHJhZGl1cyAqIDIuMDtcbn1cbmZsb2F0IHRyYW5zbGF0ZShmbG9hdCB2YWwsXG5mbG9hdCBwb2ludFBsYWNlbWVudCxcbmZsb2F0IGxvY2FsQSxcbmZsb2F0IGxvY2FsTWluLFxuZmxvYXQgbWluUGl4ZWxQYWRkaW5nLFxuZmxvYXQgcG9pbnRSYW5nZSxcbmZsb2F0IGxlbixcbmJvb2wgIGN2c0Nvb3JkLFxuYm9vbCAgaXNMb2csXG5ib29sICByZXZlcnNlZFxuKXtcbmZsb2F0IHNpZ24gPSAxLjA7XG5mbG9hdCBjdnNPZmZzZXQgPSAwLjA7XG5pZiAoY3ZzQ29vcmQpIHtcbnNpZ24gKj0gLTEuMDtcbmN2c09mZnNldCA9IGxlbjtcbn1cbmlmIChpc0xvZykge1xudmFsID0gbG9nKHZhbCkgLyBMTjEwO1xufVxuaWYgKHJldmVyc2VkKSB7XG5zaWduICo9IC0xLjA7XG5jdnNPZmZzZXQgLT0gc2lnbiAqIGxlbjtcbn1cbnJldHVybiBzaWduICogKHZhbCAtIGxvY2FsTWluKSAqIGxvY2FsQSArIGN2c09mZnNldCArIFxuKHNpZ24gKiBtaW5QaXhlbFBhZGRpbmcpO1xufVxuZmxvYXQgeFRvUGl4ZWxzKGZsb2F0IHZhbHVlKSB7XG5pZiAoc2tpcFRyYW5zbGF0aW9uKXtcbnJldHVybiB2YWx1ZTsvLyArIHhBeGlzUG9zO1xufVxucmV0dXJuIHRyYW5zbGF0ZSh2YWx1ZSwgMC4wLCB4QXhpc1RyYW5zLCB4QXhpc01pbiwgeEF4aXNNaW5QYWQsIHhBeGlzUG9pbnRSYW5nZSwgeEF4aXNMZW4sIHhBeGlzQ1ZTQ29vcmQsIHhBeGlzSXNMb2csIHhBeGlzUmV2ZXJzZWQpOy8vICsgeEF4aXNQb3M7XG59XG5mbG9hdCB5VG9QaXhlbHMoZmxvYXQgdmFsdWUsIGZsb2F0IGNoZWNrVHJlc2hvbGQpIHtcbmZsb2F0IHY7XG5pZiAoc2tpcFRyYW5zbGF0aW9uKXtcbnYgPSB2YWx1ZTsvLyArIHlBeGlzUG9zO1xufSBlbHNlIHtcbnYgPSB0cmFuc2xhdGUodmFsdWUsIDAuMCwgeUF4aXNUcmFucywgeUF4aXNNaW4sIHlBeGlzTWluUGFkLCB5QXhpc1BvaW50UmFuZ2UsIHlBeGlzTGVuLCB5QXhpc0NWU0Nvb3JkLCB5QXhpc0lzTG9nLCB5QXhpc1JldmVyc2VkKTsvLyArIHlBeGlzUG9zO1xuaWYgKHYgPiB5QXhpc0xlbikge1xudiA9IHlBeGlzTGVuO1xufVxufVxuaWYgKGNoZWNrVHJlc2hvbGQgPiAwLjAgJiYgaGFzVGhyZXNob2xkKSB7XG52ID0gbWluKHYsIHRyYW5zbGF0ZWRUaHJlc2hvbGQpO1xufVxucmV0dXJuIHY7XG59XG52b2lkIG1haW4odm9pZCkge1xuaWYgKGlzQnViYmxlKXtcbmdsX1BvaW50U2l6ZSA9IGJ1YmJsZVJhZGl1cygpO1xufSBlbHNlIHtcbmdsX1BvaW50U2l6ZSA9IHBTaXplO1xufVxudkNvbG9yID0gYUNvbG9yO1xuaWYgKHNraXBUcmFuc2xhdGlvbiAmJiBpc0ludmVydGVkKSB7XG5nbF9Qb3NpdGlvbiA9IHVQTWF0cml4ICogdmVjNChhVmVydGV4UG9zaXRpb24ueSArIHlBeGlzUG9zLCBhVmVydGV4UG9zaXRpb24ueCArIHhBeGlzUG9zLCAwLjAsIDEuMCk7XG59IGVsc2UgaWYgKGlzSW52ZXJ0ZWQpIHtcbmdsX1Bvc2l0aW9uID0gdVBNYXRyaXggKiB2ZWM0KHlUb1BpeGVscyhhVmVydGV4UG9zaXRpb24ueSwgYVZlcnRleFBvc2l0aW9uLnopICsgeUF4aXNQb3MsIHhUb1BpeGVscyhhVmVydGV4UG9zaXRpb24ueCkgKyB4QXhpc1BvcywgMC4wLCAxLjApO1xufSBlbHNlIHtcbmdsX1Bvc2l0aW9uID0gdVBNYXRyaXggKiB2ZWM0KHhUb1BpeGVscyhhVmVydGV4UG9zaXRpb24ueCkgKyB4QXhpc1BvcywgeVRvUGl4ZWxzKGFWZXJ0ZXhQb3NpdGlvbi55LCBhVmVydGV4UG9zaXRpb24ueikgKyB5QXhpc1BvcywgMC4wLCAxLjApO1xufVxufSIsCiJ2ZXJ0ZXgiKSxlPWcoInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbnVuaWZvcm0gdmVjNCBmaWxsQ29sb3I7XG52YXJ5aW5nIGhpZ2hwIHZlYzIgcG9zaXRpb247XG52YXJ5aW5nIGhpZ2hwIHZlYzQgdkNvbG9yO1xudW5pZm9ybSBzYW1wbGVyMkQgdVNhbXBsZXI7XG51bmlmb3JtIGJvb2wgaXNDaXJjbGU7XG51bmlmb3JtIGJvb2wgaGFzQ29sb3I7XG52b2lkIG1haW4odm9pZCkge1xudmVjNCBjb2wgPSBmaWxsQ29sb3I7XG52ZWM0IHRjb2w7XG5pZiAoaGFzQ29sb3IpIHtcbmNvbCA9IHZDb2xvcjtcbn1cbmlmIChpc0NpcmNsZSkge1xudGNvbCA9IHRleHR1cmUyRCh1U2FtcGxlciwgZ2xfUG9pbnRDb29yZC5zdCk7XG5jb2wgKj0gdGNvbDtcbmlmICh0Y29sLnIgPCAwLjApIHtcbmRpc2NhcmQ7XG59IGVsc2Uge1xuZ2xfRnJhZ0NvbG9yID0gY29sO1xufVxufSBlbHNlIHtcbmdsX0ZyYWdDb2xvciA9IGNvbDtcbn1cbn0iLCJmcmFnbWVudCIpO2lmKCFIfHwhZSlyZXR1cm4gYT0hMSwKYigpLCExO2E9ZC5jcmVhdGVQcm9ncmFtKCk7ZC5hdHRhY2hTaGFkZXIoYSxIKTtkLmF0dGFjaFNoYWRlcihhLGUpO2QubGlua1Byb2dyYW0oYSk7aWYoIWQuZ2V0UHJvZ3JhbVBhcmFtZXRlcihhLGQuTElOS19TVEFUVVMpKXJldHVybiBrLnB1c2goZC5nZXRQcm9ncmFtSW5mb0xvZyhhKSksYigpLGE9ITE7ZC51c2VQcm9ncmFtKGEpO2QuYmluZEF0dHJpYkxvY2F0aW9uKGEsMCwiYVZlcnRleFBvc2l0aW9uIik7dz1jKCJ1UE1hdHJpeCIpO3A9YygicFNpemUiKTtmPWMoImZpbGxDb2xvciIpO0I9YygiaXNCdWJibGUiKTtPPWMoImJ1YmJsZVNpemVBYnMiKTtoPWMoImJ1YmJsZVNpemVCeUFyZWEiKTtJPWMoInVTYW1wbGVyIik7bD1jKCJza2lwVHJhbnNsYXRpb24iKTtHPWMoImlzQ2lyY2xlIik7dD1jKCJpc0ludmVydGVkIik7cmV0dXJuITB9ZnVuY3Rpb24gcShjLGspe2QmJmEmJihjPXJbY109cltjXXx8ZC5nZXRVbmlmb3JtTG9jYXRpb24oYSxjKSxkLnVuaWZvcm0xZihjLGspKX0KdmFyIHI9e30sYSx3LHAsZixCLE8saCxsLEcsdCxrPVtdLEk7cmV0dXJuIGQmJiF6KCk/ITE6e3BzVW5pZm9ybTpmdW5jdGlvbigpe3JldHVybiBwfSxwVW5pZm9ybTpmdW5jdGlvbigpe3JldHVybiB3fSxmaWxsQ29sb3JVbmlmb3JtOmZ1bmN0aW9uKCl7cmV0dXJuIGZ9LHNldEJ1YmJsZVVuaWZvcm1zOmZ1bmN0aW9uKGMsayxlKXt2YXIgdD1jLm9wdGlvbnMsYj1OdW1iZXIuTUFYX1ZBTFVFLHA9LU51bWJlci5NQVhfVkFMVUU7ZCYmYSYmImJ1YmJsZSI9PT1jLnR5cGUmJihiPW0odC56TWluLHYoaywhMT09PXQuZGlzcGxheU5lZ2F0aXZlP3QuelRocmVzaG9sZDotTnVtYmVyLk1BWF9WQUxVRSxiKSkscD1tKHQuek1heCxNYXRoLm1heChwLGUpKSxkLnVuaWZvcm0xaShCLDEpLGQudW5pZm9ybTFpKEcsMSksZC51bmlmb3JtMWkoaCwid2lkdGgiIT09Yy5vcHRpb25zLnNpemVCeSksZC51bmlmb3JtMWkoTyxjLm9wdGlvbnMuc2l6ZUJ5QWJzb2x1dGVWYWx1ZSkscSgiYnViYmxlWk1pbiIsCmIpLHEoImJ1YmJsZVpNYXgiLHApLHEoImJ1YmJsZVpUaHJlc2hvbGQiLGMub3B0aW9ucy56VGhyZXNob2xkKSxxKCJidWJibGVNaW5TaXplIixjLm1pblB4U2l6ZSkscSgiYnViYmxlTWF4U2l6ZSIsYy5tYXhQeFNpemUpKX0sYmluZDpmdW5jdGlvbigpe2QmJmEmJmQudXNlUHJvZ3JhbShhKX0scHJvZ3JhbTpmdW5jdGlvbigpe3JldHVybiBhfSxjcmVhdGU6eixzZXRVbmlmb3JtOnEsc2V0UE1hdHJpeDpmdW5jdGlvbihjKXtkJiZhJiZkLnVuaWZvcm1NYXRyaXg0ZnYodywhMSxjKX0sc2V0Q29sb3I6ZnVuY3Rpb24oYyl7ZCYmYSYmZC51bmlmb3JtNGYoZixjWzBdLzI1NSxjWzFdLzI1NSxjWzJdLzI1NSxjWzNdKX0sc2V0UG9pbnRTaXplOmZ1bmN0aW9uKGMpe2QmJmEmJmQudW5pZm9ybTFmKHAsYyl9LHNldFNraXBUcmFuc2xhdGlvbjpmdW5jdGlvbihjKXtkJiZhJiZkLnVuaWZvcm0xaShsLCEwPT09Yz8xOjApfSxzZXRUZXh0dXJlOmZ1bmN0aW9uKGMpe2QmJmEmJmQudW5pZm9ybTFpKEksCmMpfSxzZXREcmF3QXNDaXJjbGU6ZnVuY3Rpb24oYyl7ZCYmYSYmZC51bmlmb3JtMWkoRyxjPzE6MCl9LHJlc2V0OmZ1bmN0aW9uKCl7ZCYmYSYmKGQudW5pZm9ybTFpKEIsMCksZC51bmlmb3JtMWkoRywwKSl9LHNldEludmVydGVkOmZ1bmN0aW9uKGMpe2QmJmEmJmQudW5pZm9ybTFpKHQsYyl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXtkJiZhJiYoZC5kZWxldGVQcm9ncmFtKGEpLGE9ITEpfX19fSk7bihiLCJtb2R1bGVzL2Jvb3N0L3dnbC12YnVmZmVyLmpzIixbXSxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihiLGwsRSl7ZnVuY3Rpb24gbSgpe2QmJihiLmRlbGV0ZUJ1ZmZlcihkKSx2PWQ9ITEpO3E9MDtnPUV8fDI7cj1bXX12YXIgZD0hMSx2PSExLGc9RXx8Mix6PSExLHE9MCxyO3JldHVybntkZXN0cm95Om0sYmluZDpmdW5jdGlvbigpe2lmKCFkKXJldHVybiExO2IudmVydGV4QXR0cmliUG9pbnRlcih2LGcsYi5GTE9BVCwhMSwwLDApfSxkYXRhOnIsYnVpbGQ6ZnVuY3Rpb24oYSwKdyxwKXt2YXIgZjtyPWF8fFtdO2lmKCEociYmMCE9PXIubGVuZ3RofHx6KSlyZXR1cm4gbSgpLCExO2c9cHx8ZztkJiZiLmRlbGV0ZUJ1ZmZlcihkKTt6fHwoZj1uZXcgRmxvYXQzMkFycmF5KHIpKTtkPWIuY3JlYXRlQnVmZmVyKCk7Yi5iaW5kQnVmZmVyKGIuQVJSQVlfQlVGRkVSLGQpO2IuYnVmZmVyRGF0YShiLkFSUkFZX0JVRkZFUix6fHxmLGIuU1RBVElDX0RSQVcpO3Y9Yi5nZXRBdHRyaWJMb2NhdGlvbihsLnByb2dyYW0oKSx3KTtiLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHYpO3JldHVybiEwfSxyZW5kZXI6ZnVuY3Rpb24oYSxtLHApe3ZhciBmPXo/ei5sZW5ndGg6ci5sZW5ndGg7aWYoIWR8fCFmKXJldHVybiExO2lmKCFhfHxhPmZ8fDA+YSlhPTA7aWYoIW18fG0+ZiltPWY7Yi5kcmF3QXJyYXlzKGJbKHB8fCJwb2ludHMiKS50b1VwcGVyQ2FzZSgpXSxhL2csKG0tYSkvZyk7cmV0dXJuITB9LGFsbG9jYXRlOmZ1bmN0aW9uKGEpe3E9LTE7ej1uZXcgRmxvYXQzMkFycmF5KDQqCmEpfSxwdXNoOmZ1bmN0aW9uKGEsYixkLGYpe3omJih6WysrcV09YSx6WysrcV09Yix6WysrcV09ZCx6WysrcV09Zil9fX19KTtuKGIsIm1vZHVsZXMvYm9vc3Qvd2dsLXJlbmRlcmVyLmpzIixbYlsicGFydHMvR2xvYmFscy5qcyJdLGJbIm1vZHVsZXMvYm9vc3Qvd2dsLXNoYWRlci5qcyJdLGJbIm1vZHVsZXMvYm9vc3Qvd2dsLXZidWZmZXIuanMiXSxiWyJwYXJ0cy9Db2xvci5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihiLGwsRSxtLGQpe3ZhciB2PW0ucGFyc2UsZz1kLmlzTnVtYmVyLHo9ZC5pc09iamVjdCxxPWQubWVyZ2Uscj1kLm9iamVjdEVhY2gsYT1kLnBpY2ssdz1iLndpbi5kb2N1bWVudDtyZXR1cm4gZnVuY3Rpb24oZCl7ZnVuY3Rpb24gcChjKXtpZihjLmlzU2VyaWVzQm9vc3Rpbmcpe3ZhciBhPSEhYy5vcHRpb25zLnN0YWNraW5nO3ZhciBlPWMueERhdGF8fGMub3B0aW9ucy54RGF0YXx8Yy5wcm9jZXNzZWRYRGF0YTthPShhP2MuZGF0YTplfHwKYy5vcHRpb25zLmRhdGEpLmxlbmd0aDsidHJlZW1hcCI9PT1jLnR5cGU/YSo9MTI6ImhlYXRtYXAiPT09Yy50eXBlP2EqPTY6bWFbYy50eXBlXSYmKGEqPTIpO3JldHVybiBhfXJldHVybiAwfWZ1bmN0aW9uIEIoKXtlLmNsZWFyKGUuQ09MT1JfQlVGRkVSX0JJVHxlLkRFUFRIX0JVRkZFUl9CSVQpfWZ1bmN0aW9uIE8oYyxhKXtmdW5jdGlvbiBlKGMpe2MmJihhLmNvbG9yRGF0YS5wdXNoKGNbMF0pLGEuY29sb3JEYXRhLnB1c2goY1sxXSksYS5jb2xvckRhdGEucHVzaChjWzJdKSxhLmNvbG9yRGF0YS5wdXNoKGNbM10pKX1mdW5jdGlvbiBiKGMsYSxiLGssZCl7ZShkKTt5LnVzZVByZWFsbG9jYXRlZD9ILnB1c2goYyxhLGI/MTowLGt8fDEpOihOLnB1c2goYyksTi5wdXNoKGEpLE4ucHVzaChiPzE6MCksTi5wdXNoKGt8fDEpKX1mdW5jdGlvbiBrKCl7YS5zZWdtZW50cy5sZW5ndGgmJihhLnNlZ21lbnRzW2Euc2VnbWVudHMubGVuZ3RoLTFdLnRvPU4ubGVuZ3RoKX1mdW5jdGlvbiBkKCl7YS5zZWdtZW50cy5sZW5ndGgmJgphLnNlZ21lbnRzW2Euc2VnbWVudHMubGVuZ3RoLTFdLmZyb209PT1OLmxlbmd0aHx8KGsoKSxhLnNlZ21lbnRzLnB1c2goe2Zyb206Ti5sZW5ndGh9KSl9ZnVuY3Rpb24gdChjLGEsayxkLHQpe2UodCk7YihjK2ssYSk7ZSh0KTtiKGMsYSk7ZSh0KTtiKGMsYStkKTtlKHQpO2IoYyxhK2QpO2UodCk7YihjK2ssYStkKTtlKHQpO2IoYytrLGEpfWZ1bmN0aW9uIHAoYyxlKXt5LnVzZUdQVVRyYW5zbGF0aW9uc3x8KGEuc2tpcFRyYW5zbGF0aW9uPSEwLGMueD13LnRvUGl4ZWxzKGMueCwhMCksYy55PW4udG9QaXhlbHMoYy55LCEwKSk7ZT9OPVtjLngsYy55LDAsMl0uY29uY2F0KE4pOmIoYy54LGMueSwwLDIpfXZhciBaPWMucG9pbnRBcnJheU1hcCYmImxvdyxoaWdoIj09PWMucG9pbnRBcnJheU1hcC5qb2luKCIsIiksUD1jLmNoYXJ0LGY9Yy5vcHRpb25zLEc9ISFmLnN0YWNraW5nLEk9Zi5kYXRhLGc9Yy54QXhpcy5nZXRFeHRyZW1lcygpLGg9Zy5taW47Zz1nLm1heDt2YXIgQj1jLnlBeGlzLmdldEV4dHJlbWVzKCksCnE9Qi5taW47Qj1CLm1heDt2YXIgbD1jLnhEYXRhfHxmLnhEYXRhfHxjLnByb2Nlc3NlZFhEYXRhLE89Yy55RGF0YXx8Zi55RGF0YXx8Yy5wcm9jZXNzZWRZRGF0YSxyPWMuekRhdGF8fGYuekRhdGF8fGMucHJvY2Vzc2VkWkRhdGEsbj1jLnlBeGlzLHc9Yy54QXhpcyxFPWMuY2hhcnQucGxvdFdpZHRoLEo9IWx8fDA9PT1sLmxlbmd0aCxMPWYuY29ubmVjdE51bGxzLHU9Yy5wb2ludHN8fCExLEY9ITEsSz0hMSxRO2w9Rz9jLmRhdGE6bHx8STt2YXIgWD17eDpOdW1iZXIuTUFYX1ZBTFVFLHk6MH0sTT17eDotTnVtYmVyLk1BWF9WQUxVRSx5OjB9LFQ9MCxXPSExLEQ9LTEsUz0hMSxVPSExLGthPSJ1bmRlZmluZWQiPT09dHlwZW9mIFAuaW5kZXgsZmE9ITEsaGE9ITE7dmFyIHg9ITE7dmFyIHphPW1hW2MudHlwZV0saWE9ITEsc2E9ITAsdGE9ITAsWT1mLnpvbmVzfHwhMSxWPSExLHVhPWYudGhyZXNob2xkLGphPSExO2lmKCEoZi5ib29zdERhdGEmJjA8Zi5ib29zdERhdGEubGVuZ3RoKSl7Zi5nYXBTaXplJiYKKGphPSJ2YWx1ZSIhPT1mLmdhcFVuaXQ/Zi5nYXBTaXplKmMuY2xvc2VzdFBvaW50UmFuZ2U6Zi5nYXBTaXplKTtZJiYoWS5zb21lKGZ1bmN0aW9uKGMpe3JldHVybiJ1bmRlZmluZWQiPT09dHlwZW9mIGMudmFsdWU/KFY9bmV3IG0oYy5jb2xvciksITApOiExfSksVnx8KFY9Yy5wb2ludEF0dHJpYnMmJmMucG9pbnRBdHRyaWJzKCkuZmlsbHx8Yy5jb2xvcixWPW5ldyBtKFYpKSk7UC5pbnZlcnRlZCYmKEU9Yy5jaGFydC5wbG90SGVpZ2h0KTtjLmNsb3Nlc3RQb2ludFJhbmdlUHg9TnVtYmVyLk1BWF9WQUxVRTtkKCk7aWYodSYmMDx1Lmxlbmd0aClhLnNraXBUcmFuc2xhdGlvbj0hMCxhLmRyYXdNb2RlPSJ0cmlhbmdsZXMiLHVbMF0ubm9kZSYmdVswXS5ub2RlLmxldmVsRHluYW1pYyYmdS5zb3J0KGZ1bmN0aW9uKGMsYSl7aWYoYy5ub2RlKXtpZihjLm5vZGUubGV2ZWxEeW5hbWljPmEubm9kZS5sZXZlbER5bmFtaWMpcmV0dXJuIDE7aWYoYy5ub2RlLmxldmVsRHluYW1pYzxhLm5vZGUubGV2ZWxEeW5hbWljKXJldHVybi0xfXJldHVybiAwfSksCnUuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgZT1hLnBsb3RZO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIGUmJiFpc05hTihlKSYmbnVsbCE9PWEueSl7ZT1hLnNoYXBlQXJnczt2YXIgYj1QLnN0eWxlZE1vZGU/YS5zZXJpZXMuY29sb3JBdHRyaWJzKGEpOmI9YS5zZXJpZXMucG9pbnRBdHRyaWJzKGEpO2E9Ylsic3Ryb2tlLXdpZHRoIl18fDA7eD12KGIuZmlsbCkucmdiYTt4WzBdLz0yNTU7eFsxXS89MjU1O3hbMl0vPTI1NTsidHJlZW1hcCI9PT1jLnR5cGUmJihhPWF8fDEsUT12KGIuc3Ryb2tlKS5yZ2JhLFFbMF0vPTI1NSxRWzFdLz0yNTUsUVsyXS89MjU1LHQoZS54LGUueSxlLndpZHRoLGUuaGVpZ2h0LFEpLGEvPTIpOyJoZWF0bWFwIj09PWMudHlwZSYmUC5pbnZlcnRlZCYmKGUueD13Lmxlbi1lLngsZS55PW4ubGVuLWUueSxlLndpZHRoPS1lLndpZHRoLGUuaGVpZ2h0PS1lLmhlaWdodCk7dChlLngrYSxlLnkrYSxlLndpZHRoLTIqYSxlLmhlaWdodC0yKmEseCl9fSk7ZWxzZXtmb3IoO0Q8CmwubGVuZ3RoLTE7KXt2YXIgQz1sWysrRF07aWYoa2EpYnJlYWs7dT1JJiZJW0RdOyFKJiZ6KHUsITApJiZ1LmNvbG9yJiYoeD12KHUuY29sb3IpLnJnYmEseFswXS89MjU1LHhbMV0vPTI1NSx4WzJdLz0yNTUpO2lmKEope3U9Q1swXTt2YXIgQT1DWzFdO2xbRCsxXSYmKFU9bFtEKzFdWzBdKTtsW0QtMV0mJihTPWxbRC0xXVswXSk7aWYoMzw9Qy5sZW5ndGgpe3ZhciB2YT1DWzJdO0NbMl0+YS56TWF4JiYoYS56TWF4PUNbMl0pO0NbMl08YS56TWluJiYoYS56TWluPUNbMl0pfX1lbHNlIHU9QyxBPU9bRF0sbFtEKzFdJiYoVT1sW0QrMV0pLGxbRC0xXSYmKFM9bFtELTFdKSxyJiZyLmxlbmd0aCYmKHZhPXJbRF0scltEXT5hLnpNYXgmJihhLnpNYXg9cltEXSkscltEXTxhLnpNaW4mJihhLnpNaW49cltEXSkpO2lmKEx8fG51bGwhPT11JiZudWxsIT09QSl7VSYmVT49aCYmVTw9ZyYmKGZhPSEwKTtTJiZTPj1oJiZTPD1nJiYoaGE9ITApO2lmKFope0omJihBPUMuc2xpY2UoMSwzKSk7dmFyIGJhPQpBWzBdO0E9QVsxXX1lbHNlIEcmJih1PUMueCxBPUMuc3RhY2tZLGJhPUEtQy55KTtudWxsIT09cSYmInVuZGVmaW5lZCIhPT10eXBlb2YgcSYmbnVsbCE9PUImJiJ1bmRlZmluZWQiIT09dHlwZW9mIEImJihzYT1BPj1xJiZBPD1CKTt1PmcmJk0ueDxnJiYoTS54PXUsTS55PUEpO3U8aCYmWC54PmgmJihYLng9dSxYLnk9QSk7aWYobnVsbCE9PUF8fCFMKWlmKG51bGwhPT1BJiYoc2F8fGZhfHxoYSkpe2lmKChVPj1ofHx1Pj1oKSYmKFM8PWd8fHU8PWcpJiYoaWE9ITApLGlhfHxmYXx8aGEpe2phJiZ1LVM+amEmJmQoKTtZJiYoeD1WLnJnYmEsWS5zb21lKGZ1bmN0aW9uKGMsYSl7YT1ZW2EtMV07aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgYy52YWx1ZSYmQTw9Yy52YWx1ZSl7aWYoIWF8fEE+PWEudmFsdWUpeD12KGMuY29sb3IpLnJnYmE7cmV0dXJuITB9cmV0dXJuITF9KSx4WzBdLz0yNTUseFsxXS89MjU1LHhbMl0vPTI1NSk7aWYoIXkudXNlR1BVVHJhbnNsYXRpb25zJiYoYS5za2lwVHJhbnNsYXRpb249CiEwLHU9dy50b1BpeGVscyh1LCEwKSxBPW4udG9QaXhlbHMoQSwhMCksdT5FJiYicG9pbnRzIj09PWEuZHJhd01vZGUpKWNvbnRpbnVlO2lmKHphKXtDPWJhO2lmKCExPT09YmF8fCJ1bmRlZmluZWQiPT09dHlwZW9mIGJhKUM9MD5BP0E6MDtafHxHfHwoQz1NYXRoLm1heChudWxsPT09dWE/cTp1YSxxKSk7eS51c2VHUFVUcmFuc2xhdGlvbnN8fChDPW4udG9QaXhlbHMoQywhMCkpO2IodSxDLDAsMCx4KX1hLmhhc01hcmtlcnMmJmlhJiYhMSE9PUYmJihjLmNsb3Nlc3RQb2ludFJhbmdlUHg9TWF0aC5taW4oYy5jbG9zZXN0UG9pbnRSYW5nZVB4LE1hdGguYWJzKHUtRikpKTsheS51c2VHUFVUcmFuc2xhdGlvbnMmJiF5LnVzZVByZWFsbG9jYXRlZCYmRiYmMT5NYXRoLmFicyh1LUYpJiZLJiYxPk1hdGguYWJzKEEtSyk/eS5kZWJ1Zy5zaG93U2tpcFN1bW1hcnkmJisrVDooZi5zdGVwJiYhdGEmJmIodSxLLDAsMix4KSxiKHUsQSwwLCJidWJibGUiPT09Yy50eXBlP3ZhfHwxOjIseCksRj0KdSxLPUEsVz0hMCx0YT0hMSl9fWVsc2UgZCgpfWVsc2UgZCgpfXkuZGVidWcuc2hvd1NraXBTdW1tYXJ5JiZjb25zb2xlLmxvZygic2tpcHBlZCBwb2ludHM6IixUKTtXfHwhMT09PUx8fCJsaW5lX3N0cmlwIiE9PWMuZHJhd01vZGV8fChYLng8TnVtYmVyLk1BWF9WQUxVRSYmcChYLCEwKSxNLng+LU51bWJlci5NQVhfVkFMVUUmJnAoTSkpfWsoKX19ZnVuY3Rpb24gaCgpe0Y9W107Vy5kYXRhPU49W107TD1bXTtIJiZILmRlc3Ryb3koKX1mdW5jdGlvbiBKKGEpe2MmJihjLnNldFVuaWZvcm0oInhBeGlzVHJhbnMiLGEudHJhbnNBKSxjLnNldFVuaWZvcm0oInhBeGlzTWluIixhLm1pbiksYy5zZXRVbmlmb3JtKCJ4QXhpc01pblBhZCIsYS5taW5QaXhlbFBhZGRpbmcpLGMuc2V0VW5pZm9ybSgieEF4aXNQb2ludFJhbmdlIixhLnBvaW50UmFuZ2UpLGMuc2V0VW5pZm9ybSgieEF4aXNMZW4iLGEubGVuKSxjLnNldFVuaWZvcm0oInhBeGlzUG9zIixhLnBvcyksYy5zZXRVbmlmb3JtKCJ4QXhpc0NWU0Nvb3JkIiwKIWEuaG9yaXopLGMuc2V0VW5pZm9ybSgieEF4aXNJc0xvZyIsISFhLmxvZ2FyaXRobWljKSxjLnNldFVuaWZvcm0oInhBeGlzUmV2ZXJzZWQiLCEhYS5yZXZlcnNlZCkpfWZ1bmN0aW9uIEcoYSl7YyYmKGMuc2V0VW5pZm9ybSgieUF4aXNUcmFucyIsYS50cmFuc0EpLGMuc2V0VW5pZm9ybSgieUF4aXNNaW4iLGEubWluKSxjLnNldFVuaWZvcm0oInlBeGlzTWluUGFkIixhLm1pblBpeGVsUGFkZGluZyksYy5zZXRVbmlmb3JtKCJ5QXhpc1BvaW50UmFuZ2UiLGEucG9pbnRSYW5nZSksYy5zZXRVbmlmb3JtKCJ5QXhpc0xlbiIsYS5sZW4pLGMuc2V0VW5pZm9ybSgieUF4aXNQb3MiLGEucG9zKSxjLnNldFVuaWZvcm0oInlBeGlzQ1ZTQ29vcmQiLCFhLmhvcml6KSxjLnNldFVuaWZvcm0oInlBeGlzSXNMb2ciLCEhYS5sb2dhcml0aG1pYyksYy5zZXRVbmlmb3JtKCJ5QXhpc1JldmVyc2VkIiwhIWEucmV2ZXJzZWQpKX1mdW5jdGlvbiB0KGEsZSl7Yy5zZXRVbmlmb3JtKCJoYXNUaHJlc2hvbGQiLAphKTtjLnNldFVuaWZvcm0oInRyYW5zbGF0ZWRUaHJlc2hvbGQiLGUpfWZ1bmN0aW9uIGsoayl7aWYoayluPWsuY2hhcnRXaWR0aHx8ODAwLEs9ay5jaGFydEhlaWdodHx8NDAwO2Vsc2UgcmV0dXJuITE7aWYoIShlJiZuJiZLJiZjKSlyZXR1cm4hMTt5LmRlYnVnLnRpbWVSZW5kZXJpbmcmJmNvbnNvbGUudGltZSgiZ2wgcmVuZGVyaW5nIik7ZS5jYW52YXMud2lkdGg9bjtlLmNhbnZhcy5oZWlnaHQ9SztjLmJpbmQoKTtlLnZpZXdwb3J0KDAsMCxuLEspO2Muc2V0UE1hdHJpeChbMi9uLDAsMCwwLDAsLSgyL0spLDAsMCwwLDAsLTIsMCwtMSwxLC0xLDFdKTsxPHkubGluZVdpZHRoJiYhYi5pc01TJiZlLmxpbmVXaWR0aCh5LmxpbmVXaWR0aCk7SC5idWlsZChXLmRhdGEsImFWZXJ0ZXhQb3NpdGlvbiIsNCk7SC5iaW5kKCk7Yy5zZXRJbnZlcnRlZChrLmludmVydGVkKTtGLmZvckVhY2goZnVuY3Rpb24oYixkKXt2YXIgZj1iLnNlcmllcy5vcHRpb25zLHA9Zi5tYXJrZXI7dmFyIGg9InVuZGVmaW5lZCIhPT0KdHlwZW9mIGYubGluZVdpZHRoP2YubGluZVdpZHRoOjE7dmFyIEk9Zi50aHJlc2hvbGQsbD1nKEkpLEI9Yi5zZXJpZXMueUF4aXMuZ2V0VGhyZXNob2xkKEkpO0k9YShmLm1hcmtlcj9mLm1hcmtlci5lbmFibGVkOm51bGwsYi5zZXJpZXMueEF4aXMuaXNSYWRpYWw/ITA6bnVsbCxiLnNlcmllcy5jbG9zZXN0UG9pbnRSYW5nZVB4PjIqKChmLm1hcmtlcj9mLm1hcmtlci5yYWRpdXM6MTApfHwxMCkpO3A9TVtwJiZwLnN5bWJvbHx8Yi5zZXJpZXMuc3ltYm9sXXx8TS5jaXJjbGU7aWYoISgwPT09Yi5zZWdtZW50cy5sZW5ndGh8fGIuc2VnbWVudHNsZW5ndGgmJmIuc2VnbWVudHNbMF0uZnJvbT09PWIuc2VnbWVudHNbMF0udG8pKXtwLmlzUmVhZHkmJihlLmJpbmRUZXh0dXJlKGUuVEVYVFVSRV8yRCxwLmhhbmRsZSksYy5zZXRUZXh0dXJlKHAuaGFuZGxlKSk7ay5zdHlsZWRNb2RlP3A9Yi5zZXJpZXMubWFya2VyR3JvdXAmJmIuc2VyaWVzLm1hcmtlckdyb3VwLmdldFN0eWxlKCJmaWxsIik6CihwPWIuc2VyaWVzLnBvaW50QXR0cmlicyYmYi5zZXJpZXMucG9pbnRBdHRyaWJzKCkuZmlsbHx8Yi5zZXJpZXMuY29sb3IsZi5jb2xvckJ5UG9pbnQmJihwPWIuc2VyaWVzLmNoYXJ0Lm9wdGlvbnMuY29sb3JzW2RdKSk7Yi5zZXJpZXMuZmlsbE9wYWNpdHkmJmYuZmlsbE9wYWNpdHkmJihwPShuZXcgbShwKSkuc2V0T3BhY2l0eShhKGYuZmlsbE9wYWNpdHksMSkpLmdldCgpKTtwPXYocCkucmdiYTt5LnVzZUFscGhhfHwocFszXT0xKTsibGluZXMiPT09Yi5kcmF3TW9kZSYmeS51c2VBbHBoYSYmMT5wWzNdJiYocFszXS89MTApOyJhZGQiPT09Zi5ib29zdEJsZW5kaW5nPyhlLmJsZW5kRnVuYyhlLlNSQ19BTFBIQSxlLk9ORSksZS5ibGVuZEVxdWF0aW9uKGUuRlVOQ19BREQpKToibXVsdCI9PT1mLmJvb3N0QmxlbmRpbmd8fCJtdWx0aXBseSI9PT1mLmJvb3N0QmxlbmRpbmc/ZS5ibGVuZEZ1bmMoZS5EU1RfQ09MT1IsZS5aRVJPKToiZGFya2VuIj09PWYuYm9vc3RCbGVuZGluZz8oZS5ibGVuZEZ1bmMoZS5PTkUsCmUuT05FKSxlLmJsZW5kRXF1YXRpb24oZS5GVU5DX01JTikpOmUuYmxlbmRGdW5jU2VwYXJhdGUoZS5TUkNfQUxQSEEsZS5PTkVfTUlOVVNfU1JDX0FMUEhBLGUuT05FLGUuT05FX01JTlVTX1NSQ19BTFBIQSk7Yy5yZXNldCgpOzA8Yi5jb2xvckRhdGEubGVuZ3RoJiYoYy5zZXRVbmlmb3JtKCJoYXNDb2xvciIsMSksZD1FKGUsYyksZC5idWlsZChiLmNvbG9yRGF0YSwiYUNvbG9yIiw0KSxkLmJpbmQoKSk7Yy5zZXRDb2xvcihwKTtKKGIuc2VyaWVzLnhBeGlzKTtHKGIuc2VyaWVzLnlBeGlzKTt0KGwsQik7InBvaW50cyI9PT1iLmRyYXdNb2RlJiYoZi5tYXJrZXImJmcoZi5tYXJrZXIucmFkaXVzKT9jLnNldFBvaW50U2l6ZSgyKmYubWFya2VyLnJhZGl1cyk6Yy5zZXRQb2ludFNpemUoMSkpO2Muc2V0U2tpcFRyYW5zbGF0aW9uKGIuc2tpcFRyYW5zbGF0aW9uKTsiYnViYmxlIj09PWIuc2VyaWVzLnR5cGUmJmMuc2V0QnViYmxlVW5pZm9ybXMoYi5zZXJpZXMsYi56TWluLGIuek1heCk7CmMuc2V0RHJhd0FzQ2lyY2xlKGthW2Iuc2VyaWVzLnR5cGVdfHwhMSk7aWYoMDxofHwibGluZV9zdHJpcCIhPT1iLmRyYXdNb2RlKWZvcihoPTA7aDxiLnNlZ21lbnRzLmxlbmd0aDtoKyspSC5yZW5kZXIoYi5zZWdtZW50c1toXS5mcm9tLGIuc2VnbWVudHNbaF0udG8sYi5kcmF3TW9kZSk7aWYoYi5oYXNNYXJrZXJzJiZJKWZvcihmLm1hcmtlciYmZyhmLm1hcmtlci5yYWRpdXMpP2Muc2V0UG9pbnRTaXplKDIqZi5tYXJrZXIucmFkaXVzKTpjLnNldFBvaW50U2l6ZSgxMCksYy5zZXREcmF3QXNDaXJjbGUoITApLGg9MDtoPGIuc2VnbWVudHMubGVuZ3RoO2grKylILnJlbmRlcihiLnNlZ21lbnRzW2hdLmZyb20sYi5zZWdtZW50c1toXS50bywiUE9JTlRTIil9fSk7eS5kZWJ1Zy50aW1lUmVuZGVyaW5nJiZjb25zb2xlLnRpbWVFbmQoImdsIHJlbmRlcmluZyIpO2QmJmQoKTtoKCl9ZnVuY3Rpb24gSShhKXtCKCk7aWYoYS5yZW5kZXJlci5mb3JFeHBvcnQpcmV0dXJuIGsoYSk7VD9rKGEpOgpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7SShhKX0sMSl9dmFyIGM9ITEsSD0hMSxlPSExLG49MCxLPTAsTj0hMSxMPSExLFc9e30sVD0hMSxGPVtdLE09e30sbWE9e2NvbHVtbjohMCxjb2x1bW5yYW5nZTohMCxiYXI6ITAsYXJlYTohMCxhcmVhcmFuZ2U6ITB9LGthPXtzY2F0dGVyOiEwLGJ1YmJsZTohMH0seT17cG9pbnRTaXplOjEsbGluZVdpZHRoOjEsZmlsbENvbG9yOiIjQUEwMEFBIix1c2VBbHBoYTohMCx1c2VQcmVhbGxvY2F0ZWQ6ITEsdXNlR1BVVHJhbnNsYXRpb25zOiExLGRlYnVnOnt0aW1lUmVuZGVyaW5nOiExLHRpbWVTZXJpZXNQcm9jZXNzaW5nOiExLHRpbWVTZXR1cDohMSx0aW1lQnVmZmVyQ29weTohMSx0aW1lS0RUcmVlOiExLHNob3dTa2lwU3VtbWFyeTohMX19O3JldHVybiBXPXthbGxvY2F0ZUJ1ZmZlckZvclNpbmdsZVNlcmllczpmdW5jdGlvbihhKXt2YXIgYz0wO3kudXNlUHJlYWxsb2NhdGVkJiYoYS5pc1Nlcmllc0Jvb3N0aW5nJiYoYz1wKGEpKSxILmFsbG9jYXRlKGMpKX0sCnB1c2hTZXJpZXM6ZnVuY3Rpb24oYSl7MDxGLmxlbmd0aCYmRltGLmxlbmd0aC0xXS5oYXNNYXJrZXJzJiYoRltGLmxlbmd0aC0xXS5tYXJrZXJUbz1MLmxlbmd0aCk7eS5kZWJ1Zy50aW1lU2VyaWVzUHJvY2Vzc2luZyYmY29uc29sZS50aW1lKCJidWlsZGluZyAiK2EudHlwZSsiIHNlcmllcyIpO0YucHVzaCh7c2VnbWVudHM6W10sbWFya2VyRnJvbTpMLmxlbmd0aCxjb2xvckRhdGE6W10sc2VyaWVzOmEsek1pbjpOdW1iZXIuTUFYX1ZBTFVFLHpNYXg6LU51bWJlci5NQVhfVkFMVUUsaGFzTWFya2VyczphLm9wdGlvbnMubWFya2VyPyExIT09YS5vcHRpb25zLm1hcmtlci5lbmFibGVkOiExLHNob3dNYXJrZXJzOiEwLGRyYXdNb2RlOnthcmVhOiJsaW5lcyIsYXJlYXJhbmdlOiJsaW5lcyIsYXJlYXNwbGluZToibGluZV9zdHJpcCIsY29sdW1uOiJsaW5lcyIsY29sdW1ucmFuZ2U6ImxpbmVzIixiYXI6ImxpbmVzIixsaW5lOiJsaW5lX3N0cmlwIixzY2F0dGVyOiJwb2ludHMiLGhlYXRtYXA6InRyaWFuZ2xlcyIsCnRyZWVtYXA6InRyaWFuZ2xlcyIsYnViYmxlOiJwb2ludHMifVthLnR5cGVdfHwibGluZV9zdHJpcCJ9KTtPKGEsRltGLmxlbmd0aC0xXSk7eS5kZWJ1Zy50aW1lU2VyaWVzUHJvY2Vzc2luZyYmY29uc29sZS50aW1lRW5kKCJidWlsZGluZyAiK2EudHlwZSsiIHNlcmllcyIpfSxzZXRTaXplOmZ1bmN0aW9uKGEsYil7bj09PWEmJks9PT1ifHwhY3x8KG49YSxLPWIsYy5iaW5kKCksYy5zZXRQTWF0cml4KFsyL24sMCwwLDAsMCwtKDIvSyksMCwwLDAsMCwtMiwwLC0xLDEsLTEsMV0pKX0saW5pdGVkOmZ1bmN0aW9uKCl7cmV0dXJuIFR9LHNldFRocmVzaG9sZDp0LGluaXQ6ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBrKGEsYyl7dmFyIGI9e2lzUmVhZHk6ITEsdGV4dHVyZTp3LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLGhhbmRsZTplLmNyZWF0ZVRleHR1cmUoKX0saz1iLnRleHR1cmUuZ2V0Q29udGV4dCgiMmQiKTtNW2FdPWI7Yi50ZXh0dXJlLndpZHRoPTUxMjtiLnRleHR1cmUuaGVpZ2h0PQo1MTI7ay5tb3pJbWFnZVNtb290aGluZ0VuYWJsZWQ9ITE7ay53ZWJraXRJbWFnZVNtb290aGluZ0VuYWJsZWQ9ITE7ay5tc0ltYWdlU21vb3RoaW5nRW5hYmxlZD0hMTtrLmltYWdlU21vb3RoaW5nRW5hYmxlZD0hMTtrLnN0cm9rZVN0eWxlPSJyZ2JhKDI1NSwgMjU1LCAyNTUsIDApIjtrLmZpbGxTdHlsZT0iI0ZGRiI7YyhrKTt0cnl7ZS5hY3RpdmVUZXh0dXJlKGUuVEVYVFVSRTApLGUuYmluZFRleHR1cmUoZS5URVhUVVJFXzJELGIuaGFuZGxlKSxlLnRleEltYWdlMkQoZS5URVhUVVJFXzJELDAsZS5SR0JBLGUuUkdCQSxlLlVOU0lHTkVEX0JZVEUsYi50ZXh0dXJlKSxlLnRleFBhcmFtZXRlcmkoZS5URVhUVVJFXzJELGUuVEVYVFVSRV9XUkFQX1MsZS5DTEFNUF9UT19FREdFKSxlLnRleFBhcmFtZXRlcmkoZS5URVhUVVJFXzJELGUuVEVYVFVSRV9XUkFQX1QsZS5DTEFNUF9UT19FREdFKSxlLnRleFBhcmFtZXRlcmkoZS5URVhUVVJFXzJELGUuVEVYVFVSRV9NQUdfRklMVEVSLGUuTElORUFSKSwKZS50ZXhQYXJhbWV0ZXJpKGUuVEVYVFVSRV8yRCxlLlRFWFRVUkVfTUlOX0ZJTFRFUixlLkxJTkVBUiksZS5iaW5kVGV4dHVyZShlLlRFWFRVUkVfMkQsbnVsbCksYi5pc1JlYWR5PSEwfWNhdGNoKFIpe319dmFyIGQ9MCxmPVsid2ViZ2wiLCJleHBlcmltZW50YWwtd2ViZ2wiLCJtb3otd2ViZ2wiLCJ3ZWJraXQtM2QiXTtUPSExO2lmKCFhKXJldHVybiExO2Zvcih5LmRlYnVnLnRpbWVTZXR1cCYmY29uc29sZS50aW1lKCJnbCBzZXR1cCIpO2Q8Zi5sZW5ndGgmJiEoZT1hLmdldENvbnRleHQoZltkXSx7fSkpO2QrKyk7aWYoZSlifHxoKCk7ZWxzZSByZXR1cm4hMTtlLmVuYWJsZShlLkJMRU5EKTtlLmJsZW5kRnVuYyhlLlNSQ19BTFBIQSxlLk9ORV9NSU5VU19TUkNfQUxQSEEpO2UuZGlzYWJsZShlLkRFUFRIX1RFU1QpO2UuZGVwdGhGdW5jKGUuTEVTUyk7Yz1sKGUpO2lmKCFjKXJldHVybiExO0g9RShlLGMpO2soImNpcmNsZSIsZnVuY3Rpb24oYSl7YS5iZWdpblBhdGgoKTthLmFyYygyNTYsCjI1NiwyNTYsMCwyKk1hdGguUEkpO2Euc3Ryb2tlKCk7YS5maWxsKCl9KTtrKCJzcXVhcmUiLGZ1bmN0aW9uKGEpe2EuZmlsbFJlY3QoMCwwLDUxMiw1MTIpfSk7aygiZGlhbW9uZCIsZnVuY3Rpb24oYSl7YS5iZWdpblBhdGgoKTthLm1vdmVUbygyNTYsMCk7YS5saW5lVG8oNTEyLDI1Nik7YS5saW5lVG8oMjU2LDUxMik7YS5saW5lVG8oMCwyNTYpO2EubGluZVRvKDI1NiwwKTthLmZpbGwoKX0pO2soInRyaWFuZ2xlIixmdW5jdGlvbihhKXthLmJlZ2luUGF0aCgpO2EubW92ZVRvKDAsNTEyKTthLmxpbmVUbygyNTYsMCk7YS5saW5lVG8oNTEyLDUxMik7YS5saW5lVG8oMCw1MTIpO2EuZmlsbCgpfSk7aygidHJpYW5nbGUtZG93biIsZnVuY3Rpb24oYSl7YS5iZWdpblBhdGgoKTthLm1vdmVUbygwLDApO2EubGluZVRvKDI1Niw1MTIpO2EubGluZVRvKDUxMiwwKTthLmxpbmVUbygwLDApO2EuZmlsbCgpfSk7VD0hMDt5LmRlYnVnLnRpbWVTZXR1cCYmY29uc29sZS50aW1lRW5kKCJnbCBzZXR1cCIpOwpyZXR1cm4hMH0scmVuZGVyOkksc2V0dGluZ3M6eSx2YWxpZDpmdW5jdGlvbigpe3JldHVybiExIT09ZX0sY2xlYXI6QixmbHVzaDpoLHNldFhBeGlzOkosc2V0WUF4aXM6RyxkYXRhOk4sZ2w6ZnVuY3Rpb24oKXtyZXR1cm4gZX0sYWxsb2NhdGVCdWZmZXI6ZnVuY3Rpb24oYSl7dmFyIGM9MDt5LnVzZVByZWFsbG9jYXRlZCYmKGEuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYSl7YS5pc1Nlcmllc0Jvb3N0aW5nJiYoYys9cChhKSl9KSxILmFsbG9jYXRlKGMpKX0sZGVzdHJveTpmdW5jdGlvbigpe2goKTtILmRlc3Ryb3koKTtjLmRlc3Ryb3koKTtlJiYocihNLGZ1bmN0aW9uKGEpe2EuaGFuZGxlJiZlLmRlbGV0ZVRleHR1cmUoYS5oYW5kbGUpfSksZS5jYW52YXMud2lkdGg9MSxlLmNhbnZhcy5oZWlnaHQ9MSl9LHNldE9wdGlvbnM6ZnVuY3Rpb24oYSl7cSghMCx5LGEpfX19fSk7bihiLCJtb2R1bGVzL2Jvb3N0L2Jvb3N0LWF0dGFjaC5qcyIsW2JbIm1vZHVsZXMvYm9vc3Qvd2dsLXJlbmRlcmVyLmpzIl0sCmJbInBhcnRzL0dsb2JhbHMuanMiXSxiWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYixsLG4pe3ZhciBtPWwuZG9jLGQ9bi5lcnJvcix2PW0uY3JlYXRlRWxlbWVudCgiY2FudmFzIik7cmV0dXJuIGZ1bmN0aW9uKGcsbil7dmFyIHE9Zy5jaGFydFdpZHRoLHI9Zy5jaGFydEhlaWdodCxhPWcsdz1nLnNlcmllc0dyb3VwfHxuLmdyb3VwLHA9bS5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCJ3d3cuaHR0cDovL3czLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiLCIxLjEiKTthPWcuaXNDaGFydFNlcmllc0Jvb3N0aW5nKCk/ZzpuO3A9ITE7YS5yZW5kZXJUYXJnZXR8fChhLmNhbnZhcz12LGcucmVuZGVyZXIuZm9yRXhwb3J0fHwhcD8oYS5yZW5kZXJUYXJnZXQ9Zy5yZW5kZXJlci5pbWFnZSgiIiwwLDAscSxyKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1ib29zdC1jYW52YXMiKS5hZGQodyksYS5ib29zdENsZWFyPWZ1bmN0aW9uKCl7YS5yZW5kZXJUYXJnZXQuYXR0cih7aHJlZjoiIn0pfSwKYS5ib29zdENvcHk9ZnVuY3Rpb24oKXthLmJvb3N0UmVzaXplVGFyZ2V0KCk7YS5yZW5kZXJUYXJnZXQuYXR0cih7aHJlZjphLmNhbnZhcy50b0RhdGFVUkwoImltYWdlL3BuZyIpfSl9KTooYS5yZW5kZXJUYXJnZXRGbz1nLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoImZvcmVpZ25PYmplY3QiKS5hZGQodyksYS5yZW5kZXJUYXJnZXQ9bS5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSxhLnJlbmRlclRhcmdldEN0eD1hLnJlbmRlclRhcmdldC5nZXRDb250ZXh0KCIyZCIpLGEucmVuZGVyVGFyZ2V0Rm8uZWxlbWVudC5hcHBlbmRDaGlsZChhLnJlbmRlclRhcmdldCksYS5ib29zdENsZWFyPWZ1bmN0aW9uKCl7YS5yZW5kZXJUYXJnZXQud2lkdGg9YS5jYW52YXMud2lkdGg7YS5yZW5kZXJUYXJnZXQuaGVpZ2h0PWEuY2FudmFzLmhlaWdodH0sYS5ib29zdENvcHk9ZnVuY3Rpb24oKXthLnJlbmRlclRhcmdldC53aWR0aD1hLmNhbnZhcy53aWR0aDthLnJlbmRlclRhcmdldC5oZWlnaHQ9YS5jYW52YXMuaGVpZ2h0OwphLnJlbmRlclRhcmdldEN0eC5kcmF3SW1hZ2UoYS5jYW52YXMsMCwwKX0pLGEuYm9vc3RSZXNpemVUYXJnZXQ9ZnVuY3Rpb24oKXtxPWcuY2hhcnRXaWR0aDtyPWcuY2hhcnRIZWlnaHQ7KGEucmVuZGVyVGFyZ2V0Rm98fGEucmVuZGVyVGFyZ2V0KS5hdHRyKHt4OjAseTowLHdpZHRoOnEsaGVpZ2h0OnJ9KS5jc3Moe3BvaW50ZXJFdmVudHM6Im5vbmUiLG1peGVkQmxlbmRNb2RlOiJub3JtYWwiLG9wYWNpdHk6MX0pO2EgaW5zdGFuY2VvZiBsLkNoYXJ0JiZhLm1hcmtlckdyb3VwLnRyYW5zbGF0ZShnLnBsb3RMZWZ0LGcucGxvdFRvcCl9LGEuYm9vc3RDbGlwUmVjdD1nLnJlbmRlcmVyLmNsaXBSZWN0KCksKGEucmVuZGVyVGFyZ2V0Rm98fGEucmVuZGVyVGFyZ2V0KS5jbGlwKGEuYm9vc3RDbGlwUmVjdCksYSBpbnN0YW5jZW9mIGwuQ2hhcnQmJihhLm1hcmtlckdyb3VwPWEucmVuZGVyZXIuZygpLmFkZCh3KSxhLm1hcmtlckdyb3VwLnRyYW5zbGF0ZShuLnhBeGlzLnBvcyxuLnlBeGlzLnBvcykpKTsKYS5jYW52YXMud2lkdGg9cTthLmNhbnZhcy5oZWlnaHQ9cjthLmJvb3N0Q2xpcFJlY3QuYXR0cihnLmdldEJvb3N0Q2xpcFJlY3QoYSkpO2EuYm9vc3RSZXNpemVUYXJnZXQoKTthLmJvb3N0Q2xlYXIoKTthLm9nbHx8KGEub2dsPWIoZnVuY3Rpb24oKXthLm9nbC5zZXR0aW5ncy5kZWJ1Zy50aW1lQnVmZmVyQ29weSYmY29uc29sZS50aW1lKCJidWZmZXIgY29weSIpO2EuYm9vc3RDb3B5KCk7YS5vZ2wuc2V0dGluZ3MuZGVidWcudGltZUJ1ZmZlckNvcHkmJmNvbnNvbGUudGltZUVuZCgiYnVmZmVyIGNvcHkiKX0pLGEub2dsLmluaXQoYS5jYW52YXMpfHxkKCJbaGlnaGNoYXJ0cyBib29zdF0gLSB1bmFibGUgdG8gaW5pdCBXZWJHTCByZW5kZXJlciIpLGEub2dsLnNldE9wdGlvbnMoZy5vcHRpb25zLmJvb3N0fHx7fSksYSBpbnN0YW5jZW9mIGwuQ2hhcnQmJmEub2dsLmFsbG9jYXRlQnVmZmVyKGcpKTthLm9nbC5zZXRTaXplKHEscik7cmV0dXJuIGEub2dsfX0pO24oYiwibW9kdWxlcy9ib29zdC9ib29zdC11dGlscy5qcyIsCltiWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYlsibW9kdWxlcy9ib29zdC9ib29zdGFibGUtbWFwLmpzIl0sYlsibW9kdWxlcy9ib29zdC9ib29zdC1hdHRhY2guanMiXSxiWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYixsLG4sbSl7ZnVuY3Rpb24gZCgpe2Zvcih2YXIgYT1bXSxiPTA7Yjxhcmd1bWVudHMubGVuZ3RoO2IrKylhW2JdPWFyZ3VtZW50c1tiXTt2YXIgZD0tTnVtYmVyLk1BWF9WQUxVRTthLmZvckVhY2goZnVuY3Rpb24oYSl7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgYSYmbnVsbCE9PWEmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGEubGVuZ3RoJiYwPGEubGVuZ3RoKXJldHVybiBkPWEubGVuZ3RoLCEwfSk7cmV0dXJuIGR9ZnVuY3Rpb24gdihhLGIsZCl7YSYmYi5yZW5kZXJUYXJnZXQmJmIuY2FudmFzJiYhKGR8fGIuY2hhcnQpLmlzQ2hhcnRTZXJpZXNCb29zdGluZygpJiZhLnJlbmRlcihkfHxiLmNoYXJ0KX1mdW5jdGlvbiBnKGEsYil7YSYmYi5yZW5kZXJUYXJnZXQmJgpiLmNhbnZhcyYmIWIuY2hhcnQuaXNDaGFydFNlcmllc0Jvb3N0aW5nKCkmJmEuYWxsb2NhdGVCdWZmZXJGb3JTaW5nbGVTZXJpZXMoYil9ZnVuY3Rpb24geihhLGIsZCxnLGgsbCl7aD1ofHwwO2c9Z3x8M0UzO2Zvcih2YXIgZj1oK2csdD0hMDt0JiZoPGYmJmg8YS5sZW5ndGg7KXQ9YihhW2hdLGgpLCsraDt0JiYoaDxhLmxlbmd0aD9sP3ooYSxiLGQsZyxoLGwpOnIucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3IucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7eihhLGIsZCxnLGgpfSk6c2V0VGltZW91dChmdW5jdGlvbigpe3ooYSxiLGQsZyxoKX0pOmQmJmQoKSl9ZnVuY3Rpb24gcSgpe3ZhciBiPTAsZCxnPVsid2ViZ2wiLCJleHBlcmltZW50YWwtd2ViZ2wiLCJtb3otd2ViZ2wiLCJ3ZWJraXQtM2QiXSxsPSExO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIHIuV2ViR0xSZW5kZXJpbmdDb250ZXh0KWZvcihkPWEuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7YjxnLmxlbmd0aDtiKyspdHJ5e2lmKGw9CmQuZ2V0Q29udGV4dChnW2JdKSwidW5kZWZpbmVkIiE9PXR5cGVvZiBsJiZudWxsIT09bClyZXR1cm4hMH1jYXRjaChoKXt9cmV0dXJuITF9dmFyIHI9Yi53aW4sYT1iLmRvYyx3PW0ucGljazttPXtwYXRpZW50TWF4OmQsYm9vc3RFbmFibGVkOmZ1bmN0aW9uKGEpe3JldHVybiB3KGEmJmEub3B0aW9ucyYmYS5vcHRpb25zLmJvb3N0JiZhLm9wdGlvbnMuYm9vc3QuZW5hYmxlZCwhMCl9LHNob3VsZEZvcmNlQ2hhcnRTZXJpZXNCb29zdGluZzpmdW5jdGlvbihhKXt2YXIgYj0wLGc9MCxwPXcoYS5vcHRpb25zLmJvb3N0JiZhLm9wdGlvbnMuYm9vc3QuYWxsb3dGb3JjZSwhMCk7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgYS5ib29zdEZvcmNlQ2hhcnRCb29zdClyZXR1cm4gYS5ib29zdEZvcmNlQ2hhcnRCb29zdDtpZigxPGEuc2VyaWVzLmxlbmd0aClmb3IodmFyIGg9MDtoPGEuc2VyaWVzLmxlbmd0aDtoKyspe3ZhciBtPWEuc2VyaWVzW2hdOzAhPT1tLm9wdGlvbnMuYm9vc3RUaHJlc2hvbGQmJgohMSE9PW0udmlzaWJsZSYmImhlYXRtYXAiIT09bS50eXBlJiYobFttLnR5cGVdJiYrK2csZChtLnByb2Nlc3NlZFhEYXRhLG0ub3B0aW9ucy5kYXRhLG0ucG9pbnRzKT49KG0ub3B0aW9ucy5ib29zdFRocmVzaG9sZHx8TnVtYmVyLk1BWF9WQUxVRSkmJisrYil9YS5ib29zdEZvcmNlQ2hhcnRCb29zdD1wJiYoZz09PWEuc2VyaWVzLmxlbmd0aCYmMDxifHw1PGIpO3JldHVybiBhLmJvb3N0Rm9yY2VDaGFydEJvb3N0fSxyZW5kZXJJZk5vdFNlcmllc0Jvb3N0aW5nOnYsYWxsb2NhdGVJZk5vdFNlcmllc0Jvb3N0aW5nOmcsZWFjaEFzeW5jOnosaGFzV2ViR0xTdXBwb3J0OnEscG9pbnREcmF3SGFuZGxlcjpmdW5jdGlvbihhKXt2YXIgYj0hMDt0aGlzLmNoYXJ0Lm9wdGlvbnMmJnRoaXMuY2hhcnQub3B0aW9ucy5ib29zdCYmKGI9InVuZGVmaW5lZCI9PT10eXBlb2YgdGhpcy5jaGFydC5vcHRpb25zLmJvb3N0LmVuYWJsZWQ/ITA6dGhpcy5jaGFydC5vcHRpb25zLmJvb3N0LmVuYWJsZWQpOwppZighYnx8IXRoaXMuaXNTZXJpZXNCb29zdGluZylyZXR1cm4gYS5jYWxsKHRoaXMpO3RoaXMuY2hhcnQuaXNCb29zdGluZz0hMDtpZihhPW4odGhpcy5jaGFydCx0aGlzKSlnKGEsdGhpcyksYS5wdXNoU2VyaWVzKHRoaXMpO3YoYSx0aGlzKX19O2IuaGFzV2ViR0xTdXBwb3J0PXE7cmV0dXJuIG19KTtuKGIsIm1vZHVsZXMvYm9vc3QvYm9vc3QtaW5pdC5qcyIsW2JbInBhcnRzL0NoYXJ0LmpzIl0sYlsicGFydHMvR2xvYmFscy5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdLGJbIm1vZHVsZXMvYm9vc3QvYm9vc3QtdXRpbHMuanMiXSxiWyJtb2R1bGVzL2Jvb3N0L2Jvb3N0LWF0dGFjaC5qcyJdXSxmdW5jdGlvbihiLGwsbixtLGQpe3ZhciB2PW4uYWRkRXZlbnQsZz1uLmV4dGVuZCx6PW4uZmlyZUV2ZW50LHE9bi53cmFwLHI9bC5TZXJpZXMsYT1sLnNlcmllc1R5cGVzLHc9ZnVuY3Rpb24oKXt9LHA9bS5lYWNoQXN5bmMsZj1tLnBvaW50RHJhd0hhbmRsZXIsQj1tLmFsbG9jYXRlSWZOb3RTZXJpZXNCb29zdGluZywKRT1tLnJlbmRlcklmTm90U2VyaWVzQm9vc3RpbmcsaD1tLnNob3VsZEZvcmNlQ2hhcnRTZXJpZXNCb29zdGluZyxKO3JldHVybiBmdW5jdGlvbigpe2coci5wcm90b3R5cGUse3JlbmRlckNhbnZhczpmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSxjKXt2YXIgYj0hMSxkPSJ1bmRlZmluZWQiPT09dHlwZW9mIGcuaW5kZXgsaz0hMDtpZighZCl7aWYocGEpe3ZhciB0PWFbMF07dmFyIGY9YVsxXX1lbHNlIHQ9YSxmPW1bY107bGE/KHBhJiYoZj1hLnNsaWNlKDEsMykpLGI9ZlswXSxmPWZbMV0pOm5hJiYodD1hLngsZj1hLnN0YWNrWSxiPWYtYS55KTt3YXx8KGs9Zj49diYmZjw9TSk7aWYobnVsbCE9PWYmJnQ+PXEmJnQ8PXImJmspaWYoYT1lLnRvUGl4ZWxzKHQsITApLHkpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIFJ8fGE9PT1PKXtsYXx8KGI9Zik7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgYWF8fGY+ZGEpZGE9ZixhYT1jO2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIFJ8fGI8Y2EpY2E9CmIsUj1jfWEhPT1PJiYoInVuZGVmaW5lZCIhPT10eXBlb2YgUiYmKGY9aC50b1BpeGVscyhkYSwhMCksUD1oLnRvUGl4ZWxzKGNhLCEwKSxlYShhLGYsYWEpLFAhPT1mJiZlYShhLFAsUikpLFI9YWE9dm9pZCAwLE89YSl9ZWxzZSBmPU1hdGguY2VpbChoLnRvUGl4ZWxzKGYsITApKSxlYShhLGYsYyl9cmV0dXJuIWR9ZnVuY3Rpb24gYigpe3ooaywicmVuZGVyZWRDYW52YXMiKTtkZWxldGUgay5idWlsZEtEVHJlZTtrLmJ1aWxkS0RUcmVlKCk7cmEuZGVidWcudGltZUtEVHJlZSYmY29uc29sZS50aW1lRW5kKCJrZCB0cmVlIGJ1aWxkaW5nIil9dmFyIGs9dGhpcyxmPWsub3B0aW9uc3x8e30sYz0hMSxnPWsuY2hhcnQsZT10aGlzLnhBeGlzLGg9dGhpcy55QXhpcyxsPWYueERhdGF8fGsucHJvY2Vzc2VkWERhdGEsbT1mLnlEYXRhfHxrLnByb2Nlc3NlZFlEYXRhLG49Zi5kYXRhO2M9ZS5nZXRFeHRyZW1lcygpO3ZhciBxPWMubWluLHI9Yy5tYXg7Yz1oLmdldEV4dHJlbWVzKCk7dmFyIHY9CmMubWluLE09Yy5tYXgsTD17fSxPLHk9ISFrLnNhbXBsaW5nLFo9ITEhPT1mLmVuYWJsZU1vdXNlVHJhY2tpbmcsUD1oLmdldFRocmVzaG9sZChmLnRocmVzaG9sZCksbGE9ay5wb2ludEFycmF5TWFwJiYibG93LGhpZ2giPT09ay5wb2ludEFycmF5TWFwLmpvaW4oIiwiKSxuYT0hIWYuc3RhY2tpbmcsb2E9ay5jcm9wU3RhcnR8fDAsd2E9ay5yZXF1aXJlU29ydGluZyxwYT0hbCxjYSxkYSxSLGFhLHhhPSJ4Ij09PWYuZmluZE5lYXJlc3RQb2ludEJ5LHFhPXRoaXMueERhdGF8fHRoaXMub3B0aW9ucy54RGF0YXx8dGhpcy5wcm9jZXNzZWRYRGF0YXx8ITEsZWE9ZnVuY3Rpb24oYSxjLGIpe2E9TWF0aC5jZWlsKGEpO0o9eGE/YTphKyIsIitjO1omJiFMW0pdJiYoTFtKXT0hMCxnLmludmVydGVkJiYoYT1lLmxlbi1hLGM9aC5sZW4tYykseWEucHVzaCh7eDpxYT9xYVtvYStiXTohMSxjbGllbnRYOmEscGxvdFg6YSxwbG90WTpjLGk6b2ErYn0pKX07Yz1kKGcsayk7Zy5pc0Jvb3N0aW5nPQohMDt2YXIgcmE9Yy5zZXR0aW5ncztpZih0aGlzLnZpc2libGUpeyh0aGlzLnBvaW50c3x8dGhpcy5ncmFwaCkmJnRoaXMuZGVzdHJveUdyYXBoaWNzKCk7Zy5pc0NoYXJ0U2VyaWVzQm9vc3RpbmcoKT8odGhpcy5tYXJrZXJHcm91cCYmdGhpcy5tYXJrZXJHcm91cCE9PWcubWFya2VyR3JvdXAmJnRoaXMubWFya2VyR3JvdXAuZGVzdHJveSgpLHRoaXMubWFya2VyR3JvdXA9Zy5tYXJrZXJHcm91cCx0aGlzLnJlbmRlclRhcmdldCYmKHRoaXMucmVuZGVyVGFyZ2V0PXRoaXMucmVuZGVyVGFyZ2V0LmRlc3Ryb3koKSkpOih0aGlzLm1hcmtlckdyb3VwPT09Zy5tYXJrZXJHcm91cCYmKHRoaXMubWFya2VyR3JvdXA9dm9pZCAwKSx0aGlzLm1hcmtlckdyb3VwPWsucGxvdEdyb3VwKCJtYXJrZXJHcm91cCIsIm1hcmtlcnMiLCEwLDEsZy5zZXJpZXNHcm91cCkpO3ZhciB5YT10aGlzLnBvaW50cz1bXTtrLmJ1aWxkS0RUcmVlPXc7YyYmKEIoYyx0aGlzKSxjLnB1c2hTZXJpZXMoayksRShjLHRoaXMsCmcpKTtnLnJlbmRlcmVyLmZvckV4cG9ydHx8KHJhLmRlYnVnLnRpbWVLRFRyZWUmJmNvbnNvbGUudGltZSgia2QgdHJlZSBidWlsZGluZyIpLHAobmE/ay5kYXRhOmx8fG4sYSxiKSl9fX0pO1siaGVhdG1hcCIsInRyZWVtYXAiXS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2FbYl0mJnEoYVtiXS5wcm90b3R5cGUsImRyYXdQb2ludHMiLGYpfSk7YS5idWJibGUmJihkZWxldGUgYS5idWJibGUucHJvdG90eXBlLmJ1aWxkS0RUcmVlLHEoYS5idWJibGUucHJvdG90eXBlLCJtYXJrZXJBdHRyaWJzIixmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5pc1Nlcmllc0Jvb3N0aW5nPyExOmEuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9KSk7YS5zY2F0dGVyLnByb3RvdHlwZS5maWxsPSEwO2coYS5hcmVhLnByb3RvdHlwZSx7ZmlsbDohMCxmaWxsT3BhY2l0eTohMCxzYW1wbGluZzohMH0pO2coYS5jb2x1bW4ucHJvdG90eXBlLHtmaWxsOiEwLHNhbXBsaW5nOiEwfSk7Yi5wcm90b3R5cGUuY2FsbGJhY2tzLnB1c2goZnVuY3Rpb24oYSl7dihhLAoicHJlZHJhdyIsZnVuY3Rpb24oKXthLmJvb3N0Rm9yY2VDaGFydEJvb3N0PXZvaWQgMDthLmJvb3N0Rm9yY2VDaGFydEJvb3N0PWgoYSk7YS5pc0Jvb3N0aW5nPSExOyFhLmlzQ2hhcnRTZXJpZXNCb29zdGluZygpJiZhLmRpZEJvb3N0JiYoYS5kaWRCb29zdD0hMSk7YS5ib29zdENsZWFyJiZhLmJvb3N0Q2xlYXIoKTthLmNhbnZhcyYmYS5vZ2wmJmEuaXNDaGFydFNlcmllc0Jvb3N0aW5nKCkmJihhLmRpZEJvb3N0PSEwLGEub2dsLmFsbG9jYXRlQnVmZmVyKGEpKTthLm1hcmtlckdyb3VwJiZhLnhBeGlzJiYwPGEueEF4aXMubGVuZ3RoJiZhLnlBeGlzJiYwPGEueUF4aXMubGVuZ3RoJiZhLm1hcmtlckdyb3VwLnRyYW5zbGF0ZShhLnhBeGlzWzBdLnBvcyxhLnlBeGlzWzBdLnBvcyl9KTt2KGEsInJlbmRlciIsZnVuY3Rpb24oKXthLm9nbCYmYS5pc0NoYXJ0U2VyaWVzQm9vc3RpbmcoKSYmYS5vZ2wucmVuZGVyKGEpfSl9KX19KTtuKGIsIm1vZHVsZXMvYm9vc3QvYm9vc3Qtb3ZlcnJpZGVzLmpzIiwKW2JbInBhcnRzL0NoYXJ0LmpzIl0sYlsicGFydHMvR2xvYmFscy5qcyJdLGJbInBhcnRzL1BvaW50LmpzIl0sYlsicGFydHMvVXRpbGl0aWVzLmpzIl0sYlsibW9kdWxlcy9ib29zdC9ib29zdC11dGlscy5qcyJdLGJbIm1vZHVsZXMvYm9vc3QvYm9vc3RhYmxlcy5qcyJdLGJbIm1vZHVsZXMvYm9vc3QvYm9vc3RhYmxlLW1hcC5qcyJdXSxmdW5jdGlvbihiLGwsbixtLGQsTCxnKXt2YXIgdj1tLmFkZEV2ZW50LHE9bS5lcnJvcixyPW0uZ2V0T3B0aW9ucyxhPW0uaXNBcnJheSx3PW0uaXNOdW1iZXIscD1tLnBpY2ssZj1tLndyYXAsQj1kLmJvb3N0RW5hYmxlZCxFPWQuc2hvdWxkRm9yY2VDaGFydFNlcmllc0Jvb3N0aW5nLGg9bC5TZXJpZXMsSj1sLnNlcmllc1R5cGVzLEc9cigpLnBsb3RPcHRpb25zO2IucHJvdG90eXBlLmlzQ2hhcnRTZXJpZXNCb29zdGluZz1mdW5jdGlvbigpe3JldHVybiBwKHRoaXMub3B0aW9ucy5ib29zdCYmdGhpcy5vcHRpb25zLmJvb3N0LnNlcmllc1RocmVzaG9sZCwKNTApPD10aGlzLnNlcmllcy5sZW5ndGh8fEUodGhpcyl9O2IucHJvdG90eXBlLmdldEJvb3N0Q2xpcFJlY3Q9ZnVuY3Rpb24oYSl7dmFyIGI9e3g6dGhpcy5wbG90TGVmdCx5OnRoaXMucGxvdFRvcCx3aWR0aDp0aGlzLnBsb3RXaWR0aCxoZWlnaHQ6dGhpcy5wbG90SGVpZ2h0fTthPT09dGhpcyYmdGhpcy55QXhpcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2IueT1NYXRoLm1pbihhLnBvcyxiLnkpO2IuaGVpZ2h0PU1hdGgubWF4KGEucG9zLXRoaXMucGxvdFRvcCthLmxlbixiLmhlaWdodCl9LHRoaXMpO3JldHVybiBifTtoLnByb3RvdHlwZS5nZXRQb2ludD1mdW5jdGlvbihhKXt2YXIgYj1hLGQ9dGhpcy54RGF0YXx8dGhpcy5vcHRpb25zLnhEYXRhfHx0aGlzLnByb2Nlc3NlZFhEYXRhfHwhMTshYXx8YSBpbnN0YW5jZW9mIHRoaXMucG9pbnRDbGFzc3x8KGI9KG5ldyB0aGlzLnBvaW50Q2xhc3MpLmluaXQodGhpcyx0aGlzLm9wdGlvbnMuZGF0YVthLmldLGQ/ZFthLmldOnZvaWQgMCksCmIuY2F0ZWdvcnk9cCh0aGlzLnhBeGlzLmNhdGVnb3JpZXM/dGhpcy54QXhpcy5jYXRlZ29yaWVzW2IueF06Yi54LGIueCksYi5kaXN0PWEuZGlzdCxiLmRpc3RYPWEuZGlzdFgsYi5wbG90WD1hLnBsb3RYLGIucGxvdFk9YS5wbG90WSxiLmluZGV4PWEuaSxiLmlzSW5zaWRlPXRoaXMuaXNQb2ludEluc2lkZShhKSk7cmV0dXJuIGJ9O2YoaC5wcm90b3R5cGUsInNlYXJjaFBvaW50IixmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5nZXRQb2ludChhLmFwcGx5KHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpKX0pO2Yobi5wcm90b3R5cGUsImhhbG9QYXRoIixmdW5jdGlvbihhKXt2YXIgYj10aGlzLnNlcmllcyxkPXRoaXMucGxvdFgsYz10aGlzLnBsb3RZLGY9Yi5jaGFydC5pbnZlcnRlZDtiLmlzU2VyaWVzQm9vc3RpbmcmJmYmJih0aGlzLnBsb3RYPWIueUF4aXMubGVuLWMsdGhpcy5wbG90WT1iLnhBeGlzLmxlbi1kKTt2YXIgZT1hLmFwcGx5KHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLAoxKSk7Yi5pc1Nlcmllc0Jvb3N0aW5nJiZmJiYodGhpcy5wbG90WD1kLHRoaXMucGxvdFk9Yyk7cmV0dXJuIGV9KTtmKGgucHJvdG90eXBlLCJtYXJrZXJBdHRyaWJzIixmdW5jdGlvbihhLGIpe3ZhciBkPWIucGxvdFgsYz1iLnBsb3RZLGY9dGhpcy5jaGFydC5pbnZlcnRlZDt0aGlzLmlzU2VyaWVzQm9vc3RpbmcmJmYmJihiLnBsb3RYPXRoaXMueUF4aXMubGVuLWMsYi5wbG90WT10aGlzLnhBeGlzLmxlbi1kKTt2YXIgZT1hLmFwcGx5KHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKTt0aGlzLmlzU2VyaWVzQm9vc3RpbmcmJmYmJihiLnBsb3RYPWQsYi5wbG90WT1jKTtyZXR1cm4gZX0pO3YoaCwiZGVzdHJveSIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLGI9YS5jaGFydDtiLm1hcmtlckdyb3VwPT09YS5tYXJrZXJHcm91cCYmKGEubWFya2VyR3JvdXA9bnVsbCk7Yi5ob3ZlclBvaW50cyYmKGIuaG92ZXJQb2ludHM9Yi5ob3ZlclBvaW50cy5maWx0ZXIoZnVuY3Rpb24oYil7cmV0dXJuIGIuc2VyaWVzPT09CmF9KSk7Yi5ob3ZlclBvaW50JiZiLmhvdmVyUG9pbnQuc2VyaWVzPT09YSYmKGIuaG92ZXJQb2ludD1udWxsKX0pO2YoaC5wcm90b3R5cGUsImdldEV4dHJlbWVzIixmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5pc1Nlcmllc0Jvb3N0aW5nJiZ0aGlzLmhhc0V4dHJlbWVzJiZ0aGlzLmhhc0V4dHJlbWVzKCk/e306YS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9KTtbInRyYW5zbGF0ZSIsImdlbmVyYXRlUG9pbnRzIiwiZHJhd1RyYWNrZXIiLCJkcmF3UG9pbnRzIiwicmVuZGVyIl0uZm9yRWFjaChmdW5jdGlvbihhKXtmdW5jdGlvbiBiKGIpe3ZhciBjPXRoaXMub3B0aW9ucy5zdGFja2luZyYmKCJ0cmFuc2xhdGUiPT09YXx8ImdlbmVyYXRlUG9pbnRzIj09PWEpO2lmKCF0aGlzLmlzU2VyaWVzQm9vc3Rpbmd8fGN8fCFCKHRoaXMuY2hhcnQpfHwiaGVhdG1hcCI9PT10aGlzLnR5cGV8fCJ0cmVlbWFwIj09PXRoaXMudHlwZXx8IWdbdGhpcy50eXBlXXx8CjA9PT10aGlzLm9wdGlvbnMuYm9vc3RUaHJlc2hvbGQpYi5jYWxsKHRoaXMpO2Vsc2UgaWYodGhpc1thKyJDYW52YXMiXSl0aGlzW2ErIkNhbnZhcyJdKCl9ZihoLnByb3RvdHlwZSxhLGIpOyJ0cmFuc2xhdGUiPT09YSYmImNvbHVtbiBiYXIgYXJlYXJhbmdlIGNvbHVtbnJhbmdlIGhlYXRtYXAgdHJlZW1hcCIuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKGQpe0pbZF0mJmYoSltkXS5wcm90b3R5cGUsYSxiKX0pfSk7ZihoLnByb3RvdHlwZSwicHJvY2Vzc0RhdGEiLGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGQoYSl7cmV0dXJuIGYuY2hhcnQuaXNDaGFydFNlcmllc0Jvb3N0aW5nKCl8fChhP2EubGVuZ3RoOjApPj0oZi5vcHRpb25zLmJvb3N0VGhyZXNob2xkfHxOdW1iZXIuTUFYX1ZBTFVFKX12YXIgZj10aGlzLGM9dGhpcy5vcHRpb25zLmRhdGE7Qih0aGlzLmNoYXJ0KSYmZ1t0aGlzLnR5cGVdPyhkKGMpJiYiaGVhdG1hcCIhPT10aGlzLnR5cGUmJiJ0cmVlbWFwIiE9PXRoaXMudHlwZSYmCiF0aGlzLm9wdGlvbnMuc3RhY2tpbmcmJnRoaXMuaGFzRXh0cmVtZXMmJnRoaXMuaGFzRXh0cmVtZXMoITApfHwoYi5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSksYz10aGlzLnByb2Nlc3NlZFhEYXRhKSwodGhpcy5pc1Nlcmllc0Jvb3N0aW5nPWQoYykpPyhjPXRoaXMuZ2V0Rmlyc3RWYWxpZFBvaW50KHRoaXMub3B0aW9ucy5kYXRhKSx3KGMpfHxhKGMpfHxxKDEyLCExLHRoaXMuY2hhcnQpLHRoaXMuZW50ZXJCb29zdCgpKTp0aGlzLmV4aXRCb29zdCYmdGhpcy5leGl0Qm9vc3QoKSk6Yi5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9KTt2KGgsImhpZGUiLGZ1bmN0aW9uKCl7dGhpcy5jYW52YXMmJnRoaXMucmVuZGVyVGFyZ2V0JiYodGhpcy5vZ2wmJnRoaXMub2dsLmNsZWFyKCksdGhpcy5ib29zdENsZWFyKCkpfSk7aC5wcm90b3R5cGUuZW50ZXJCb29zdD1mdW5jdGlvbigpe3RoaXMuYWx0ZXJlZEJ5Qm9vc3Q9CltdO1siYWxsb3dERyIsImRpcmVjdFRvdWNoIiwic3RpY2t5VHJhY2tpbmciXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3RoaXMuYWx0ZXJlZEJ5Qm9vc3QucHVzaCh7cHJvcDphLHZhbDp0aGlzW2FdLG93bjpPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLGEpfSl9LHRoaXMpO3RoaXMuZGlyZWN0VG91Y2g9dGhpcy5hbGxvd0RHPSExO3RoaXMuZmluaXNoZWRBbmltYXRpbmc9dGhpcy5zdGlja3lUcmFja2luZz0hMDt0aGlzLmxhYmVsQnlTZXJpZXMmJih0aGlzLmxhYmVsQnlTZXJpZXM9dGhpcy5sYWJlbEJ5U2VyaWVzLmRlc3Ryb3koKSl9O2gucHJvdG90eXBlLmV4aXRCb29zdD1mdW5jdGlvbigpeyh0aGlzLmFsdGVyZWRCeUJvb3N0fHxbXSkuZm9yRWFjaChmdW5jdGlvbihhKXthLm93bj90aGlzW2EucHJvcF09YS52YWw6ZGVsZXRlIHRoaXNbYS5wcm9wXX0sdGhpcyk7dGhpcy5ib29zdENsZWFyJiZ0aGlzLmJvb3N0Q2xlYXIoKX07aC5wcm90b3R5cGUuaGFzRXh0cmVtZXM9ZnVuY3Rpb24oYSl7dmFyIGI9CnRoaXMub3B0aW9ucyxkPXRoaXMueEF4aXMmJnRoaXMueEF4aXMub3B0aW9ucyxjPXRoaXMueUF4aXMmJnRoaXMueUF4aXMub3B0aW9ucyxmPXRoaXMuY29sb3JBeGlzJiZ0aGlzLmNvbG9yQXhpcy5vcHRpb25zO3JldHVybiBiLmRhdGEubGVuZ3RoPihiLmJvb3N0VGhyZXNob2xkfHxOdW1iZXIuTUFYX1ZBTFVFKSYmdyhjLm1pbikmJncoYy5tYXgpJiYoIWF8fHcoZC5taW4pJiZ3KGQubWF4KSkmJighZnx8dyhmLm1pbikmJncoZi5tYXgpKX07aC5wcm90b3R5cGUuZGVzdHJveUdyYXBoaWNzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPXRoaXMucG9pbnRzLGQsYztpZihiKWZvcihjPTA7YzxiLmxlbmd0aDtjKz0xKShkPWJbY10pJiZkLmRlc3Ryb3lFbGVtZW50cyYmZC5kZXN0cm95RWxlbWVudHMoKTtbImdyYXBoIiwiYXJlYSIsInRyYWNrZXIiXS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2FbYl0mJihhW2JdPWFbYl0uZGVzdHJveSgpKX0pfTtMLmZvckVhY2goZnVuY3Rpb24oYSl7R1thXSYmCihHW2FdLmJvb3N0VGhyZXNob2xkPTVFMyxHW2FdLmJvb3N0RGF0YT1bXSxKW2FdLnByb3RvdHlwZS5maWxsT3BhY2l0eT0hMCl9KX0pO24oYiwibW9kdWxlcy9ib29zdC9uYW1lZC1jb2xvcnMuanMiLFtiWyJwYXJ0cy9Db2xvci5qcyJdXSxmdW5jdGlvbihiKXt2YXIgbD17YWxpY2VibHVlOiIjZjBmOGZmIixhbnRpcXVld2hpdGU6IiNmYWViZDciLGFxdWE6IiMwMGZmZmYiLGFxdWFtYXJpbmU6IiM3ZmZmZDQiLGF6dXJlOiIjZjBmZmZmIixiZWlnZToiI2Y1ZjVkYyIsYmlzcXVlOiIjZmZlNGM0IixibGFjazoiIzAwMDAwMCIsYmxhbmNoZWRhbG1vbmQ6IiNmZmViY2QiLGJsdWU6IiMwMDAwZmYiLGJsdWV2aW9sZXQ6IiM4YTJiZTIiLGJyb3duOiIjYTUyYTJhIixidXJseXdvb2Q6IiNkZWI4ODciLGNhZGV0Ymx1ZToiIzVmOWVhMCIsY2hhcnRyZXVzZToiIzdmZmYwMCIsY2hvY29sYXRlOiIjZDI2OTFlIixjb3JhbDoiI2ZmN2Y1MCIsY29ybmZsb3dlcmJsdWU6IiM2NDk1ZWQiLGNvcm5zaWxrOiIjZmZmOGRjIiwKY3JpbXNvbjoiI2RjMTQzYyIsY3lhbjoiIzAwZmZmZiIsZGFya2JsdWU6IiMwMDAwOGIiLGRhcmtjeWFuOiIjMDA4YjhiIixkYXJrZ29sZGVucm9kOiIjYjg4NjBiIixkYXJrZ3JheToiI2E5YTlhOSIsZGFya2dyZWVuOiIjMDA2NDAwIixkYXJra2hha2k6IiNiZGI3NmIiLGRhcmttYWdlbnRhOiIjOGIwMDhiIixkYXJrb2xpdmVncmVlbjoiIzU1NmIyZiIsZGFya29yYW5nZToiI2ZmOGMwMCIsZGFya29yY2hpZDoiIzk5MzJjYyIsZGFya3JlZDoiIzhiMDAwMCIsZGFya3NhbG1vbjoiI2U5OTY3YSIsZGFya3NlYWdyZWVuOiIjOGZiYzhmIixkYXJrc2xhdGVibHVlOiIjNDgzZDhiIixkYXJrc2xhdGVncmF5OiIjMmY0ZjRmIixkYXJrdHVycXVvaXNlOiIjMDBjZWQxIixkYXJrdmlvbGV0OiIjOTQwMGQzIixkZWVwcGluazoiI2ZmMTQ5MyIsZGVlcHNreWJsdWU6IiMwMGJmZmYiLGRpbWdyYXk6IiM2OTY5NjkiLGRvZGdlcmJsdWU6IiMxZTkwZmYiLGZlbGRzcGFyOiIjZDE5Mjc1IixmaXJlYnJpY2s6IiNiMjIyMjIiLApmbG9yYWx3aGl0ZToiI2ZmZmFmMCIsZm9yZXN0Z3JlZW46IiMyMjhiMjIiLGZ1Y2hzaWE6IiNmZjAwZmYiLGdhaW5zYm9ybzoiI2RjZGNkYyIsZ2hvc3R3aGl0ZToiI2Y4ZjhmZiIsZ29sZDoiI2ZmZDcwMCIsZ29sZGVucm9kOiIjZGFhNTIwIixncmF5OiIjODA4MDgwIixncmVlbjoiIzAwODAwMCIsZ3JlZW55ZWxsb3c6IiNhZGZmMmYiLGhvbmV5ZGV3OiIjZjBmZmYwIixob3RwaW5rOiIjZmY2OWI0IixpbmRpYW5yZWQ6IiNjZDVjNWMiLGluZGlnbzoiIzRiMDA4MiIsaXZvcnk6IiNmZmZmZjAiLGtoYWtpOiIjZjBlNjhjIixsYXZlbmRlcjoiI2U2ZTZmYSIsbGF2ZW5kZXJibHVzaDoiI2ZmZjBmNSIsbGF3bmdyZWVuOiIjN2NmYzAwIixsZW1vbmNoaWZmb246IiNmZmZhY2QiLGxpZ2h0Ymx1ZToiI2FkZDhlNiIsbGlnaHRjb3JhbDoiI2YwODA4MCIsbGlnaHRjeWFuOiIjZTBmZmZmIixsaWdodGdvbGRlbnJvZHllbGxvdzoiI2ZhZmFkMiIsbGlnaHRncmV5OiIjZDNkM2QzIixsaWdodGdyZWVuOiIjOTBlZTkwIiwKbGlnaHRwaW5rOiIjZmZiNmMxIixsaWdodHNhbG1vbjoiI2ZmYTA3YSIsbGlnaHRzZWFncmVlbjoiIzIwYjJhYSIsbGlnaHRza3libHVlOiIjODdjZWZhIixsaWdodHNsYXRlYmx1ZToiIzg0NzBmZiIsbGlnaHRzbGF0ZWdyYXk6IiM3Nzg4OTkiLGxpZ2h0c3RlZWxibHVlOiIjYjBjNGRlIixsaWdodHllbGxvdzoiI2ZmZmZlMCIsbGltZToiIzAwZmYwMCIsbGltZWdyZWVuOiIjMzJjZDMyIixsaW5lbjoiI2ZhZjBlNiIsbWFnZW50YToiI2ZmMDBmZiIsbWFyb29uOiIjODAwMDAwIixtZWRpdW1hcXVhbWFyaW5lOiIjNjZjZGFhIixtZWRpdW1ibHVlOiIjMDAwMGNkIixtZWRpdW1vcmNoaWQ6IiNiYTU1ZDMiLG1lZGl1bXB1cnBsZToiIzkzNzBkOCIsbWVkaXVtc2VhZ3JlZW46IiMzY2IzNzEiLG1lZGl1bXNsYXRlYmx1ZToiIzdiNjhlZSIsbWVkaXVtc3ByaW5nZ3JlZW46IiMwMGZhOWEiLG1lZGl1bXR1cnF1b2lzZToiIzQ4ZDFjYyIsbWVkaXVtdmlvbGV0cmVkOiIjYzcxNTg1IixtaWRuaWdodGJsdWU6IiMxOTE5NzAiLAptaW50Y3JlYW06IiNmNWZmZmEiLG1pc3R5cm9zZToiI2ZmZTRlMSIsbW9jY2FzaW46IiNmZmU0YjUiLG5hdmFqb3doaXRlOiIjZmZkZWFkIixuYXZ5OiIjMDAwMDgwIixvbGRsYWNlOiIjZmRmNWU2IixvbGl2ZToiIzgwODAwMCIsb2xpdmVkcmFiOiIjNmI4ZTIzIixvcmFuZ2U6IiNmZmE1MDAiLG9yYW5nZXJlZDoiI2ZmNDUwMCIsb3JjaGlkOiIjZGE3MGQ2IixwYWxlZ29sZGVucm9kOiIjZWVlOGFhIixwYWxlZ3JlZW46IiM5OGZiOTgiLHBhbGV0dXJxdW9pc2U6IiNhZmVlZWUiLHBhbGV2aW9sZXRyZWQ6IiNkODcwOTMiLHBhcGF5YXdoaXA6IiNmZmVmZDUiLHBlYWNocHVmZjoiI2ZmZGFiOSIscGVydToiI2NkODUzZiIscGluazoiI2ZmYzBjYiIscGx1bToiI2RkYTBkZCIscG93ZGVyYmx1ZToiI2IwZTBlNiIscHVycGxlOiIjODAwMDgwIixyZWQ6IiNmZjAwMDAiLHJvc3licm93bjoiI2JjOGY4ZiIscm95YWxibHVlOiIjNDE2OWUxIixzYWRkbGVicm93bjoiIzhiNDUxMyIsc2FsbW9uOiIjZmE4MDcyIiwKc2FuZHlicm93bjoiI2Y0YTQ2MCIsc2VhZ3JlZW46IiMyZThiNTciLHNlYXNoZWxsOiIjZmZmNWVlIixzaWVubmE6IiNhMDUyMmQiLHNpbHZlcjoiI2MwYzBjMCIsc2t5Ymx1ZToiIzg3Y2VlYiIsc2xhdGVibHVlOiIjNmE1YWNkIixzbGF0ZWdyYXk6IiM3MDgwOTAiLHNub3c6IiNmZmZhZmEiLHNwcmluZ2dyZWVuOiIjMDBmZjdmIixzdGVlbGJsdWU6IiM0NjgyYjQiLHRhbjoiI2QyYjQ4YyIsdGVhbDoiIzAwODA4MCIsdGhpc3RsZToiI2Q4YmZkOCIsdG9tYXRvOiIjZmY2MzQ3Iix0dXJxdW9pc2U6IiM0MGUwZDAiLHZpb2xldDoiI2VlODJlZSIsdmlvbGV0cmVkOiIjZDAyMDkwIix3aGVhdDoiI2Y1ZGViMyIsd2hpdGU6IiNmZmZmZmYiLHdoaXRlc21va2U6IiNmNWY1ZjUiLHllbGxvdzoiI2ZmZmYwMCIseWVsbG93Z3JlZW46IiM5YWNkMzIifTtyZXR1cm4gYi5uYW1lcz1sfSk7bihiLCJtb2R1bGVzL2Jvb3N0L2Jvb3N0LmpzIixbYlsicGFydHMvR2xvYmFscy5qcyJdLGJbIm1vZHVsZXMvYm9vc3QvYm9vc3QtdXRpbHMuanMiXSwKYlsibW9kdWxlcy9ib29zdC9ib29zdC1pbml0LmpzIl0sYlsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGIsbCxuLG0pe209bS5lcnJvcjtsPWwuaGFzV2ViR0xTdXBwb3J0O2woKT9uKCk6InVuZGVmaW5lZCIhPT10eXBlb2YgYi5pbml0Q2FudmFzQm9vc3Q/Yi5pbml0Q2FudmFzQm9vc3QoKTptKDI2KX0pO24oYiwibWFzdGVycy9tb2R1bGVzL2Jvb3N0LnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1ib29zdC5qcy5tYXA="></script>
<script src="data:application/javascript;base64,SFRNTFdpZGdldHMud2lkZ2V0KHsNCg0KICBuYW1lOiAnaGlnaGNoYXJ0JywNCg0KICB0eXBlOiAnb3V0cHV0JywNCg0KICBpbml0aWFsaXplOiBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCkgew0KDQogICAgcmV0dXJuIHsNCiAgICAgIC8vIFRPRE86IGFkZCBpbnN0YW5jZSBmaWVsZHMgYXMgcmVxdWlyZWQNCiAgICB9Ow0KDQogIH0sDQoNCiAgcmVuZGVyVmFsdWU6IGZ1bmN0aW9uKGVsLCB4LCBpbnN0YW5jZSkgew0KICAgIA0KICAgIGlmKHguZGVidWcpIHsNCiAgICAgIHdpbmRvdy54Y2xvbmUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHgpKTsNCiAgICAgIHdpbmRvdy5lbGNsb25lID0gJChlbCk7DQogICAgICBjb25zb2xlLmxvZyhlbCk7DQogICAgICBjb25zb2xlLmxvZygiaGNfb3B0cyIsIHguaGNfb3B0cyk7DQogICAgICBjb25zb2xlLmxvZygidGhlbWUiLCB4LnRoZW1lKTsNCiAgICAgIGNvbnNvbGUubG9nKCJjb25mX29wdHMiLCB4LmNvbmZfb3B0cyk7DQogICAgfQ0KDQogICAgaWYoeC5mb250cyAhPT0gdW5kZWZpbmVkKSB7DQogICAgICANCiAgICAgIHguZm9udHMgPSAoKHR5cGVvZih4LmZvbnRzKSA9PSAic3RyaW5nIikgPyBbeC5mb250c10gOiB4LmZvbnRzKTsNCiAgICANCiAgICAgIHguZm9udHMuZm9yRWFjaChmdW5jdGlvbihzKXsNCiAgICAgICAgLyogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80NzI0NjA2ICovDQogICAgICAgIHZhciB1cmxmb250ID0gJ2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT0nICsgczsNCiAgICAgICAgaWYgKCEkKCJsaW5rW2hyZWY9JyIgKyB1cmxmb250ICsgIiddIikubGVuZ3RoKSB7DQogICAgICAgICAgJCgnPGxpbmsgaHJlZj0iJyArIHVybGZvbnQgKyAnIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4nKS5hcHBlbmRUbygiaGVhZCIpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgfSk7DQogICAgICANCiAgICB9DQogICAgDQogICAgUmVzZXRIaWdoY2hhcnRzT3B0aW9ucygpOw0KICAgIA0KICAgIGlmKHgudGhlbWUgIT09IG51bGwpIHsNCiAgICAgIA0KICAgICAgaWYoeC5kZWJ1ZykgY29uc29sZS5sb2coImFkZGluZyBUSEVNRSIpOw0KICAgICAgDQogICAgICBIaWdoY2hhcnRzLnNldE9wdGlvbnMoeC50aGVtZSk7DQogICAgICANCiAgICB9DQogICAgDQogICAgaWYoKHgudGhlbWUgJiYgeC50aGVtZS5jaGFydC5kaXZCYWNrZ3JvdW5kSW1hZ2UgIT09IHVuZGVmaW5lZCkgfA0KICAgICAgICAgKHguaGNfb3B0cy5jaGFydCAgJiYgeC5oY19vcHRzLmNoYXJ0LmRpdkJhY2tncm91bmRJbWFnZSAhPT0gdW5kZWZpbmVkKSkgew0KICAgICAgICAgICANCiAgICAgIGlmKHguZGVidWcpIGNvbnNvbGUubG9nKCJhZGRpbmcgQmFja2dyb3VuZEltYWdlIik7ICAgICANCiAgICAgICAgICAgDQogICAgICB2YXIgYmtncm5kID0geC50aGVtZS5jaGFydC5kaXZCYWNrZ3JvdW5kSW1hZ2UgfHwgeC5oY19vcHRzLmNoYXJ0LmRpdkJhY2tncm91bmRJbWFnZTsNCiAgICAgIA0KICAgICAgSGlnaGNoYXJ0cy53cmFwKEhpZ2hjaGFydHMuQ2hhcnQucHJvdG90eXBlLCAiZ2V0Q29udGFpbmVyIiwgZnVuY3Rpb24gKHByb2NlZWQpIHsNCiAgICAgICAgDQogICAgICAgIHByb2NlZWQuY2FsbCh0aGlzKTsNCiAgICAgICAgDQogICAgICAgICQoIiMiICsgZWwuaWQpLmNzcygiYmFja2dyb3VuZC1pbWFnZSIsICJ1cmwoIiArIGJrZ3JuZCArICIpIik7DQogICAgICAgICQoIiMiICsgZWwuaWQpLmNzcygiLXdlYmtpdC1iYWNrZ3JvdW5kLXNpemUiLCAiY292ZXIiKTsNCiAgICAgICAgJCgiIyIgKyBlbC5pZCkuY3NzKCItbW96LWJhY2tncm91bmQtc2l6ZSIsICJjb3ZlciIpOw0KICAgICAgICAkKCIjIiArIGVsLmlkKS5jc3MoIi1vLWJhY2tncm91bmQtc2l6ZSIsICJjb3ZlciIpOw0KICAgICAgICAkKCIjIiArIGVsLmlkKS5jc3MoImJhY2tncm91bmQtc2l6ZSIsICJjb3ZlciIpOw0KICAgICAgICANCiAgICAgIH0pOw0KICAgICAgDQogICAgfQ0KICAgIA0KICAgIEhpZ2hjaGFydHMuc2V0T3B0aW9ucyh4LmNvbmZfb3B0cyk7DQogICAgDQogICAgaWYoeC50eXBlID09ICJjaGFydCIpIHsNCiAgICAgIGlmKHguZGVidWcpIGNvbnNvbGUubG9nKCJjaGFydGluZyBDSEFSVCIpOw0KICAgICAgJCgiIyIgKyBlbC5pZCkuaGlnaGNoYXJ0cyh4LmhjX29wdHMpOw0KICAgIH0gZWxzZSBpZiAoeC50eXBlID09ICJzdG9jayIpIHsNCiAgICAgIGlmKHguZGVidWcpIGNvbnNvbGUubG9nKCJjaGFydGluZyBTVE9DSyIpOw0KICAgICAgJCgiIyIgKyBlbC5pZCkuaGlnaGNoYXJ0cygnU3RvY2tDaGFydCcsIHguaGNfb3B0cyk7ICANCiAgICB9IGVsc2UgaWYgKHgudHlwZSA9PSAibWFwIil7DQogICAgICBpZih4LmRlYnVnKSBjb25zb2xlLmxvZygiY2hhcnRpbmcgTUFQIik7DQoNCiAgICAgIHguaGNfb3B0cy5zZXJpZXMgPSB4LmhjX29wdHMuc2VyaWVzLm1hcChmdW5jdGlvbihlKXsNCiAgICAgICAgaWYoZS5nZW9qc29uID09PSB0cnVlKSB7DQogICAgICAgICAgaWYoeC5kZWJ1ZykgY29uc29sZS5sb2coImdlb2pzb25cblx0IiwgZS50eXBlLCAiXG5cdCIsIHR5cGVvZihlLnNlcmllcykpOw0KICAgICAgICAgIGUuZGF0YSA9IEhpZ2hjaGFydHMuZ2VvanNvbihlLmRhdGEsIGUudHlwZSk7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIGU7DQogICAgICB9KTsNCiAgICAgIA0KICAgICAgJCgiIyIgKyBlbC5pZCkuaGlnaGNoYXJ0cygnTWFwJywgeC5oY19vcHRzKTsgDQogICAgICANCiAgICAgIGlmKHguaGNfb3B0cy5tYXBOYXZpZ2F0aW9uICE9PSB1bmRlZmluZWQgJiYgeC5oY19vcHRzLm1hcE5hdmlnYXRpb24uZW5hYmxlZCA9PT0gdHJ1ZSl7DQogICAgICAgIC8qIGlmIGhhdmUgbmF2aWdhdGlvbiBvcHRpb24gYW5kIGVuYWJsZWQgdHJ1ZTogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy83NjAwNDU0ICovDQogICAgICAgICQoIiMiICsgZWwuaWQpLmJpbmQoICdtb3VzZXdoZWVsIERPTU1vdXNlU2Nyb2xsJywgZnVuY3Rpb24gKCBlICkgew0KICAgICAgICAgIHZhciBlMCA9IGUub3JpZ2luYWxFdmVudCwNCiAgICAgICAgICBkZWx0YSA9IGUwLndoZWVsRGVsdGEgfHwgLWUwLmRldGFpbDsNCiAgICAgICAgICB0aGlzLnNjcm9sbFRvcCArPSAoIGRlbHRhIDwgMCA/IDEgOiAtMSApICogMzA7DQogICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOw0KDQogICAgICAgIH0pOw0KICAgICAgICANCiAgICAgIH0NCiAgICAgIA0KICAgIH0NCiAgICANCiAgICBpZih4LmhjX29wdHMubW90aW9uICE9PSB1bmRlZmluZWQpIHsNCiAgICAgIA0KICAgICAgJCgiIyIgKyBlbC5pZCkuY3NzKHsicG9zaXRpb24iIDogInJlbGF0aXZlIiB9KTsNCiAgICAgIA0KICAgICAgaWYoeC5kZWJ1ZykgY29uc29sZS5sb2coInNldHRpbmcgTU9USU9OIG9wdGlvbnMiKTsNCiAgICAgIA0KICAgICAgdmFyIHBjID0gJCgkKCIjIiArIGVsLmlkKS5maW5kKCIjcGxheS1jb250cm9scyIpWzBdKTsNCiAgICAgIA0KICAgICAgdmFyIGN0ID0geC50aGVtZS5jaGFydDsNCiAgICAgIA0KICAgICAgaWYoY3QuYmFja2dyb3VuZENvbG9yICE9PSB1bmRlZmluZWQpICQocGMuZmluZCgiI3BsYXktcGF1c2UtYnV0dG9uIilbMF0pLmNzcyh7YmFja2dyb3VuZENvbG9yIDogeC50aGVtZS5jaGFydC5iYWNrZ3JvdW5kQ29sb3J9KTsNCiAgICAgIGlmKGN0LnN0eWxlICE9PSB1bmRlZmluZWQpICAkKHBjLmZpbmQoIiNwbGF5LW91dHB1dCIpWzBdKS5jc3MoeC50aGVtZS5jaGFydC5zdHlsZSk7DQogICAgICBpZihjdC5zdHlsZSAhPT0gdW5kZWZpbmVkICYmIGN0LnN0eWxlLmNvbG9yICE9PSB1bmRlZmluZWQpICQocGMuZmluZCgiI3BsYXktcGF1c2UtYnV0dG9uIilbMF0pLmNzcyh7Y29sb3IgOiB4LnRoZW1lLmNoYXJ0LnN0eWxlLmNvbG9yfSk7DQogICAgICANCiAgICAgIA0KICAgIH0gDQogICAgDQogIH0sDQoNCiAgcmVzaXplOiBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCwgaW5zdGFuY2UpIHsNCiAgICANCiAgICAvKiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE4NDQ1Nzg0LyAqLw0KICAgIHZhciBjaGFydCA9ICQoIiMiICtlbC5pZCkuaGlnaGNoYXJ0cygpOw0KICAgIA0KICAgIGlmIChjaGFydCAmJiBjaGFydC5vcHRpb25zLmNoYXJ0LnJlZmxvdyA9PT0gdHJ1ZSkgeyAgLy8gX2NoZWNrIGZvciByZWZsb3cgb3B0aW9uXw0KICAgICAgdmFyIHcgPSBjaGFydC5yZW5kZXJUby5jbGllbnRXaWR0aDsgDQogICAgICB2YXIgaCA9IGNoYXJ0LnJlbmRlclRvLmNsaWVudEhlaWdodDsgDQogICAgICBjaGFydC5zZXRTaXplKHcsIGgpOyANCiAgICB9DQogICAgDQoNCiAgfQ0KDQp9KTsNCg=="></script>
<style type="text/css">
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
</style>
<link rel="stylesheet" href="data:text/css,%0A%23TOC%3A%3Abefore%20%7B%0Acontent%3A%20%22%22%3B%0Adisplay%3A%20block%3B%0Aheight%3A%20200px%3B%0Amargin%3A%2020px%2020px%2040px%2020px%3B%0Abackground%2Dimage%3A%20url%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAaQAAAGkCAYAAAB%2BTFE1AAABJ2lDQ1BrQ0dDb2xvclNwYWNlQWRvYmVSR0IxOTk4AAAokWNgYFJILCjIYRJgYMjNKykKcndSiIiMUmB%2FwsDDIMIgziDEwJyYXFzgGBDgwwAEMBoVfLvGwAiiL%2BuCzMKUxwu4UlKLk4H0HyDOTi4oKmFgYMwAspXLSwpA7B4gWyQpG8xeAGIXAR0IZG8BsdMh7BNgNRD2HbCakCBnIPsDkM2XBGYzgeziS4ewBUBsqL0gIOiYkp%2BUqgDyvYahpaWFJol%2BIAhKUitKQLRzfkFlUWZ6RomCIzCkUhU885L1dBSMDIwMGBhA4Q5R%2FTkQHJ6MYmcQYgiAEJsjwcDgv5SBgeUPQsykl4FhgQ4DA%2F9UhJiaIQODgD4Dw745yaVFZVBjGJmMGRgI8QH7%2FkpC0oNXTwAAAAZiS0dEAP8A%2FwD%2FoL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB%2BQMFBIgMYByjXsAACAASURBVHja7d15eFRVmvjx92bf94UQEiAQEiBAIKCAIDuOgtrdDiqobauP2vP0tE870z12z%2FNrHbt7HJ2e1u7pcQEbp7UBWQRFcGOXfUkgbElIIDtJyL4Hsp3fHwjDUsutSlWlqvL9PA%2BPpurcqnPfW%2Fe899x77rkiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADqMRAjiDleu2qoLicrdbr6eW3CcpSYnsZ4AOHoQAAEBCAgCAhAQAICEBAEBCAgCQkAAAICEBAEhIAACQkAAAJCQAAEhIAAASEgAAJCQAAAkJAAASEgCAhAQAAAkJAEBCAgDARrwIAdyRpmmiaZY%2FOby3t5fgASQkwHZ%2B9Pf3SkpSosUZaeW6raqguJwAAv2AU3YAABISAAAkJAAACQkAABISAICEBAAACQkAQEICAICEBAAgIQEAQEICAJCQAAAgIQEASEgAAJCQAAAkJAAASEgAABISAAAkJAAACQkAABISAICEBAAACQkAQEICAICEBAAgIQEAQEICAJCQAAAgIQEASEgAAJCQAAAkJAAASEgAAJCQAAAkJAAASEgAABISAAAkJAAACQkAABISAICEBAAACQkAQEICAICEBAAgIQEAQEICAJCQAAAgIQEASEgAAJCQAAAkJAAASEgAABISAAAkJACAu%2FIiBMANR2gemnh42O44TdM0ggqQkADLPbVkkU0zyGu%2FIKaA7gNCQgAAICEBAEBCAgCQkAAAICEBAEhIAACQkAAAJCQAAEhIAAASEgAAJCQAAAkJAAASEiDS26sIAuBimBsfTmHluq2qoLicQDipp5bcJylJibQXoIcEACAhAQBAQgIAkJAAACAhAQBISAAAkJAAACQkAABISAAAkJAAACQkAABISAAAEhIAACQkAAAJCQAAEhIAgIQEAAAJCQDgErwIAZziyMhDEw8Pjo9spbe3lyCAhARY46klizSiYDsr121VBcXlBAKudWBKCAAAJCQAAEhIAAASEgAAJCQAAAkJAAASEgCAhAQAAAkJAEBCAgCAhAQAICEBAEBCAqCUIghwOcz2DafA7NS2db7kIkEAPSQAAEhIAAASEgAAJCQAAAkJAAASEgCAhAQAAAkJAEBCAgCAhAQAICEBAEBCAgCQkAAAICEBAEhIAACQkAAAJCQAAEhIAIABi0eYwzmOjDw08fDg%2BMhZaZpGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYs7bXXX1PmS4n4%2BPhIVGSUjEsbJxmTMrSBGrC3%2Fvst1dHeYbZcXFycPPXkUy4Rp8LCQrV2%2FVqTZfwD%2FOXFF150yPrk5Oao4yeOS3V1tVy%2BclnE%2FC9UfvzcjxdERETssFUd9O4Xvj6%2BEhMTI%2BkT0mVc2jiHxOdc%2FjmVdTxLqqqq5MqVK6KU%2Bao%2B%2FdTTMih2kE3q19DYkPTue%2B9esFuj5KGJt5e3%2BAf4S1homMTExMiQ%2BCEyOnW0U%2BxPqz9erUpKSmz2ebNnzZbp06Y7XVtRU1uz%2Fv2%2FvL9ET9mMSRlyz8J7%2BrwOXpeqL%2BkuXFZWJieyT8j7K99Xzz7z7IBLSnl5eerdFe%2FqKnup%2BpLU1ta%2BHhUV9UtnX6%2FOzk7R8ztY%2FfFq9djSx%2By63Tdu2qiWv7%2Fc4uV6enueExGbJSRL9ovSslLJzMqUj9d9rJY%2BstSu8dnyxRb1znvvWB6f7h6b1aGnp%2Bc5S%2BJjKy%2F%2B%2FEWVMipFpkye0q8HxQ0NDWLL9W9ra3PKdiEzK3OJ3vU8cPCATb7Tw5qFzpw9I4ePHFYywBzNPGpR%2BWNZx15yq%2FU%2FdlROnzltt%2B1ecL5A7d2%2F12Xjc%2FjIYcnJzbFbfErLStWOnTtkoOrt7ZXcvFz5aNVH8spvXlHHMo8pgT0Tku6yTc1NkpeX1%2Bft4WHtgidPnxxwG%2Bj0mdN226Cuwtypvb44dfqUy8fn1KlTxMcBGhsbZdWaVfLu8ndJSnZQWFSoamtr7XrAbtOEVFtTO6A20JFjR1RnZ6dlMaqtlcKiQrfaYVpbW%2BWDv35gl3Wqqalx%2BfjU1NpvHdwhPraWdy5PXv3dq6qmpmY90bCdY5nH7H7AbtOEdOXKFTbQAO0lnTx1UjKzMm2elCxN%2BM7oSqf99gt3iI891NfXyzvL31lCJGwnOzvbqt%2Fn0WNH%2B9QueBB68xoaG5LOnz9v1bInsk%2B4ZUw%2B2fSJNDQ2JNnyM%2FWMFnN6dlwFt4iPHZPSeyveI0C2SEYns1V7R7t1B%2B5Zx%2Fr03SQkfb2cC9Y2Bu3t7XLy1Em321E6Ojpk7bq1F%2Fh1wFnk5uVK9slsklIfWXs2SESkoKCgT9%2FtNX3q9JtON%2BTk5EjH5Q62ys0JqV%2BXd1Z55%2FJk%2F4H9asZdMxw6BNfT01PGpY2TAP%2BA669FR0U%2FbMvvuHG%2F6LjcIWfOnJGu7i6X2C4eHh4yLm2cBAYEXn8tIDBghK0%2BPyoy6pfr1q%2B7aQRpW3ubnDxlfqBTcHCwjBs7zmSZru4uaWlpkZKSEovbom%2B2fWP3%2BI4dM1aio6Jveq2mrkZXYzxl8hTx9vK%2B6bX4%2BHinS%2Bx96cXv3LVTzZs7z6o2weuRhx%2B5acH8gnz19rtvk4W%2BU1pWqv7w1h%2F69Blnc866bXw2b9ksNTU166OjbZsQTFny0BKZNnWaXZPgrftFZlam%2Btvqv7nENnnw%2Fgdl9qzZDo1P%2BcVypSchRUVG3basKcdPHFebt2yWxsZGXeUrKiuktLRUJSYm2m3958yec9tnZx3PUnoS0uPLHnfq%2Bzf37turNn66sd8OwG87ZTcqedSAnYXB2u5rZESkyfd7enpk%2F8H9bnkqobOzU1Z%2FvNqhF5TjBzv%2BiNLZjmLdpa7mTJo4SXv15Ve1QbGDdC%2BTk5dDw2XHZGKuvauorJCLFy9a1d5xDcn8EZrZMgvmLzC%2FoTMz3TZGRcVFsmPnDscl3H44ZNKE47T%2B9KMf%2Fkg0Td82KCsrI2BWuHTpUn1JqekpkSIjI2XixIlmP8vae5JISCacOXtGtba2miwTEx2j6%2FRRUXGR1NS6770SX379pVRUVHBBGXYRFxenjUsbp6uspTd04nrvKNxcmRFJI2REkvnLkXoO5ElIdui%2BjhhxdeMMjhusp5fktvdK9PT0yKqPV%2FGjgd2MGT1GV7mODgZl2a29SxohY0aP0Tw8TKeO5uZmyc3LtfgAlYRkqod05ozZMskjk2%2F6b183uCu7ePGifPHlF%2FSSYBdRUVH6CnJ21WIF5wtUfUO9nvbueRGRhCEJZstaM3ychGTEocOHlJ5hvtdmHR6VPMr8qYQ695tK6Fbbd26X4pJikhJszsfbR1e5G28HgD66Bm9FRkpkZOQKEZHkZPMH4NZMJURC6sMGunE0U1pamubp6enWvSRfX1%2BzZZRSsnrNan5AsLnWtlZd5cLCwgiWhfQM2U9NSTX4%2F8ZYM5UQCclwT%2Bb1C4XmJyEYO3rsTX%2Frudh34oTrTiU0c8ZMXeWqa6pl46aN9JJgU6WlpbrKJSYmEiwLZB3PUpcvXzZb7sZreMkjkzV%2FP3%2FzB%2FYWTiVEQjLci9H1HKNbR%2F2MHzfe7DLtHa47ldDguMG6rpWJiOzdv1fyC%2FJJSrCZ49n6Rm6ljEohWBbQczbI19dX0sam3XR1bswY84NMLJ1KiIRk6IghK8tsmcjISLn1bvCZM2Zqeu6VcNXTdi2tLfLg%2FQ%2Fqvh9k9cecuoNtHDx0UFVXV5vfLyMiZUTSCIY1WOBc%2FjmzZdLGpt322qT0SWaXU0rJjl3671EkId2iqLhIVdeY%2F%2BFPmmh4Y%2BjpQbjqVEJtrW2SkJCg3THlDl3lGxsbZfXHq%2BkloU9y83LVps826So7b%2B48AmaB3d%2FuVr29vebbOwPJJy0tTddpO0sOwElIVnRfRUQmpk%2B06PUb9fT0yP4DrjeV0LUp6Zc9ukzXD1Hk6mPPT50%2BRVKCxSorK9X6T9ar5e8vl64u8yNeB8cNlrum30XvyAJ6ZpDx9%2FeXtLQ0g3EdP368nu0o5RfLdbUBXmySm%2Bl5flFsbKzED443uIGmT5uuvfjzF80edfT1uSH94cYLn4sXL5YNn2zQtdy6Dev4YUFERC5WXJTf%2F%2BH3Jhun7u5uaW5pltd%2F%2F7ruz%2FXx8ZEnn3hSXvrFSwTZgoSvJ8amro1PSp8kR44esdmBPj2kG5w8dVK1t5t%2FMJW5c6d6hkQWFxe73FRCNx6lzpg%2BQ9MzqlDk6mPPV%2F7vSnpJkM7OTim%2FWG7yX9WlKtGzH17j7eUtzz7zrAwaNIjekQX0zjdn7PKEiEhqaqoWGBho9jOOH9c3IIWEdGP3Vee5zonpExus3YC3dJddaiqhW3t9Sx9dusHHR9%2FNiqdOn5JjmcdISrCpsLAw%2Bek%2F%2FpSnFFgh67j5wVtBQUGSmpJqMrbpE9LNfk5zi76phEhIN9Az2CA%2BPl5iY2MjTJWZMnmK5uVl%2Fmyoq08lFB0V%2FfD3Hvie7vIbN220%2BWPPMXClpqTKqy%2B%2Fqg1NHEoyslDeuTzV1NRkttyE8RP0HKDr%2Bk49p%2B1ISN%2FZf2C%2F6unpMd99TdfX%2B9EzEaQ7TCV01%2FS7tNGpo3WV7bjMY89h00ZV3vzjmyrreBY9bwvpfRyOnrM9ySOTtZCQELPl9EwlREKyIHuLiKSnp79hqw3pDr0kEZEfP%2FdjLSAgQHcjsm%2F%2FPhoQ2ERJaYl8tOojefu9t1VDA71vvU6eNj9VUGhIqIwcMVJX73PiBPO9pM7OTjly7IgiIZlRXVOdWVxSbLbc0MShEhUZ9UtdGyh9oqbn%2BoorTyV0o4f%2FXv8TzD%2Ff%2BrnU1Ljvs6HgePn5%2BfLHP%2F%2FxQtWlKg52zB98q87OTj0H37o%2FU89D%2B%2FT0zEhIV4OUYctezzWG7m6%2BlStPJXRrAtYbn%2F547DncX2Njo7z9ztsEwgxbjK671fBhw7WI8Aiz5QrOm55KiPuQRN9pM03TZPas2RZdPJ2YPlHXkxOteW6IM3ryiSe1l%2F%2FtZdXUbP5iaVFxkezavUvNnTP3ekzNPfQLri8hIUF%2B%2FuLPze5HtbW1r7e0trxUVlYm2SezRc9kxyJXR3O9%2Fe7b6if%2F8BMGOhhLCjrml4uIiJBhQ4dZ3N7t3L3TZJlrUwnNnztfo4dkwIULF1RdfZ3ZcknDLT89PX7ceM3Pz89suZzcHLeJ57JHl%2Bku%2B%2BVXX950L5aekYlwbV6e%2BrZxVFTUL4cPG67dPfNu7YV%2FfEF7%2FtnnRc%2F9LiIi%2BQX5kn0ym1N3BuzYtUMpZT40ekfO3bSMDU7bDfgWQG%2FvpKS0RH71%2F35l8Y9cz7Tu16YSmnHXDJc%2FqktNTdU2bNyg9h%2FYb7ZsV3eXfLLxk%2Bun7vTe04SBZ8zoMVp1dXXmm396M0PPI8q%2F%2BuYrgmZhMrjRvv37LG7v3nnvHV3lKquuTiU0JH6IRg%2FpFtkns3WV6%2B7ulvb2dov%2F6Zm4UMQ1pxIyZslDS7To6GhdZfPO5V2%2Fhubv70%2BLAaNiYmImL3lI36XHqqoqKS0rpZd0g7LyMlVZVamrbGdnp1XtXV87AgM6IZ3IPqE6Lnc4RV2Ki4vdauTZY0sf0%2F2Yis2fbxYRkaDAIJdfbyX2awP1nGpxdxmTMrSYmBhdZfU8BXUgcaZr1camEhrQCUnvaBOHdaezMt1m5NnwYcO1BfMW6CpbV18nO3buUMHBwU67Pl5eXrruP9MzK7W19H62u1%2BLu%2FXBmMbofcLsQKFngJWjNLc0S05ujiIh3SAvL8%2B5jmDc6LSdiMii%2BxZpQ%2BKH6Cq7fed28fT0dNp1iYrSd%2F9ZS3OLXXdiPXx9fN16v01M0PeI8orKCrLQd87mnFUtLS1OVSdDo5sHbELas3eP0nt9x1Hq6uqksLDQrc7LPL7scV1H7JcvX5aDhw469broGZbe3tEu9poxoK6uTle5wYMHu%2FWQ56Agfad2Lbmm4e6ccUYYQ1MJDdiEpHe0Cb2kvomLi9MW3btIV1m9F1z7S3hYuL6e97k8m8%2FXd%2Br0KV0HUL6%2Bvm6%2F7%2BqZc1JExNkOOPu18T992unqZGgqoQGZkCqrKlVZeZlT1i07O9vt4j13zlzdz05y8uSqq5w9LqbrHQ06KHaQ2%2B%2B%2Fzc36Tl3qHVTj7g4dPqS6urucsm63dgz67ernufxzZgckpaSkaI4IgimPPvyohIaG9vk7CwoKZNeeXeZPM3w3ldCE8RPcam96bOljz7%2FxX28sv3LlisuuQ9LwJDlz9ozZcrl5uVJSWqJs9ViE6urqzNfeeE1XWXdI%2FOYUFRfpKsdtBN%2B1dzpP1%2Fn6%2BsqTTzxpk0S%2B78A%2Byckxf8N%2FwfkCaWhsSAoPCy%2Fs14T03or3%2Bq1LnXlc3waKiYmRaVOn2Swx6Hm0uYj7TCV0o8jIyBWHjxxe%2FvG6j112HVJTUuXzrZ%2FrKrtx00abfe%2FGTzdm6B3ynZKS4vYNrN4eaEx0jAx09fX181%2F93au6yk4YP0HGjhlrk%2FYuJzdH6UlISinJOp51QUQ0kQF4yi6%2FIF81NjbqKpsxKcOm352amqp3Y7pl7KfeOVXTM%2BGss4qPj9diY2J1lS0pLZHVH6%2Fu8wCVTzd%2FqvLO6RsNqufpnq5u245tqrW1VVfZIUOGyECXmZW5XW%2FZyZMm2%2Bx7x4weo%2BkdfHLjGasBl5As6X1kTMrYYMvv1rvBr00l5I7xf%2FaZZzW9c5I5o2nTpukue%2FTYUVnxlxVWb8ePVn2k9ny7R3%2FCv2OqW%2B%2B7Obk56quv9U8JlJqSKgOd3vYuJDjE5pdI9D7MtLKqUsrKy1SfElJfh1T21%2Bm6E9n6nj80bOgwiY6KftiW350xKUPTO1%2FbgYMHHBYTvfe32MojSx5x2R18zqw5uh9GKCJyNues%2FPrffq1279mtOzHtP7hfvfrbV1XW8Szd3%2BPl5SX3L77f6XtH1v7Wvt72tXp%2F5fu6243AwEAZlzZuQI9qOJd%2FTlXXVOtLHpMm2fz7MzL0n2G61t5ZfQ2pq7tL%2FvLBX9TE9IkW3dDY1dUlR44eMftcDFupq6t7rqy8bHl7e7scOHhAyi%2BW600edqnPuLRxoqehqaiskPdXvq%2FSJ6SLt7e3pE9It9nOdeNMyK1trfLFV184dEeZMH6CtmrNKuWq18ru%2B7v75JNNn%2BhvhJub5bPPP5Ofv%2FRzlTQ8SUaOGClhYWESGBgomqZJW1ubNDU1yYWiC3LhwgXZ8InlHfN5c%2BbJH%2F7zD04fu7q6Olmzdo1KTUk1eV9Xd3e3tLa2SmlZqeTm5YolPSMRkbum32W3dTh%2F4fxtpw0Liwp1LXvk6BF169D8uEFxDbGxsRG2qFtZWZmqq6%2BThsYGWbV6lf7kMdH27d2wocO03%2F77b1VtXa3ZsocOH5JNn25SfRrUcPrMaV3PSe9PBecLLL6Q7uHhIXfPvNsuR1eTMyaL3iPfM2fPXB%2FVVVlZqeLi4vpcp5KSEvXmn97s9%2B3y%2BLLHtVd%2B84ru63nOZOaMmdqbf3xTlZSWWHYQ19Ul5%2FLPybn8czatT1RUlNx3730u0xs4cvSIHDl6xG6fHxQUJIvuXWS3eHz9zddWH1CvWbvmttcW37c43FZ1O3DwgBw6csiiZWKiYyQxMdEu8cqYlCHfbP9GV9lv933LbN%2BGpIyy30glSy72ubvHlj7msnV%2F8oknn3eGYcVeXl7y1JNP8WO6gSXP5IL9zgZ999kNFnUG2ByO3UAi1j38yh2NSh6lzZo5yyXrHhkZueKZp54Rby%2FvfquDpmnyxGNPiKHnygxUi%2B5bZLOhywOovdtgr8%2BOjY2NSBiSQEKylo%2BPj0yZPEWz8w%2FAJWNjj1mkf%2FD9H%2BgeSu1skkcma08%2F9XS%2FPFjQw8NDHlv6mE2vLTrbb8PiZHTvIlk4fyHJyAJDE4dKdLRtB2%2Fd1t5ZMLjBYEIK8A%2Fo90BZMpLJ1Xovw4cN1wYNcr0pXmwxY4Uhjy97XNfEpc5ozOgx2gs%2FeUHCwsIcum%2F8%2BLkf2%2F3AyRKDYgf1W10CAwPl6R89LQsXkIwsNfVO%2B98qMGfWHE3vwDeDrUBycnK%2FB2pU8qh%2BOeqcO2euQ75r4fyFrtgjsMvnJiYmagsXLHTZnTohIUF79eVXtSmTpzgiAcp%2F%2FO4%2FtJRRKU7X%2BA5NHOrw%2FXX6tOny2m9f09xtqi1HCAsLk%2BnTpjskbndN0zfq0WBCumfhPf16btzb21vuWXCPw7%2F3%2FkX3O%2BxIL2NShuZKp%2B5GJI2QtLFpdovNvffcq%2Bl9zo2zenzZ49rPXviZjBwx0uafHR8fL88%2F%2B7w8%2F%2BzzTtvwLl602CETmoaHh8v8ufPl1%2F%2F66wWPLHmERGQFT09Phw4qeugHD2mD4wabLWfwxG%2F84HitrLxMffn1l1JQUGDXp2DeyMfHR0aOHCmL7l3ksGe6eHp6SmJiosyZNUccfZT1w8d%2FqO3bv08dOnJIKisrnXK6%2FNCQUMnIyJAH73%2FQ7rF5bNlj8l9%2F%2BC9x1pmJ9Rg%2BbLgmIlJ%2BsVwdPHRQTp8%2BbfXNoH5%2BfjJ2zFiZNnWaJI9M1v7ln%2F%2FFqdd9VPIo7cKFC%2BqrbV9JYWGh7sdEmItBeHi4DIodJEMTh8rIESMlISGBJGQlX19fGZU8ShYuWCiJCYkOjeNLv3hJ27J1izqRfULq6g0%2F20t3hez10LEbjnoK7fXZxupuz%2B905rrq2paayLUZeJ0lBs683UwpKS1RxcXFUlpWKrV1tdJQ3yDtHe3XD%2FS8vLyuNrxh4RIZGSlDhgyRYUOHSfLIZJdveK1qN%2Frxt9cf7aGtf8%2BG6uas%2B4y98woAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALhGIwSAeyi5WKUuVtVIe8cVCQ0OlCkTRrN%2Fg4QEwLG%2B3H1IHT6Rc9NrPt5esnjedEkfk8x%2BDpfgRQjsI%2Fd8iTpfXG7%2BiEDTxM%2FXR%2Fz9fMXfz1eiI8MkIS6GBsSJFJdVqoLicmloapH6phZpaGqRjstXRNM0CQ0OlMjwUIkKD5UhcdEyYfTIftl2tyYjEZHOrm45YuB1gB7SALN9%2FzG17%2Bgpq5b19vKSIXHRMi41SSaPS2Ub9ZOKS7Vqx4Es0XNg8X%2FbzlNSkhJlXOoIGT1yqEO2XWFphfrrJ18Zff83%2F%2FQMvyHQQ4J1urq7paisUorKKuU%2F31ujpmekyYwp4526UTl6Mlfd%2BPfgmCgZEhftsg3hroNZ6r3Vm63Ydj1yJr9IzuQXyeZt%2B9SDC2faPQZBgf5ZIpLBngNX50EInFtre4ds23dMPlj%2FhXLWOh4%2BcVZt3XlQbvx3rrDUZWN%2B5lyh2nM4u8%2BfkzIi0SH1jYkMnxwVEWrkvTB2IpCQYFvF5VXyn%2B%2BtUXUNTc85W92ycwrcKtafbdvX588ICwmS1BFDHdZDXDRnmgyNj73ptaiIUPn%2BPXez88BlcMrOxXpLazbvWC4iK5ylTpdq6uvf%2FtunbhPjwyfOqi93HzZbztPTQ3p6eo2%2BP3lcikPrPWJovCYiUtfQ9FzH5SvLh3w3MOYFdhuQkGDK9ElpMmbUMBER6ezskpr6Jqmpb5CauiYprbgkShk%2FO1dT3yhrt%2BxUj94%2Fzymuz5zIKQh3p22TX2R8AENIUKDcO%2FtOGTtq%2BPXYX6yqUeVVNZJ7vkSKyyult1eJp6eH3H1ner9sn8jw0BXOdMACkJCcXFhokCQOjjXYYJVVXFKbvtkrdQ3NRpfPKSiW8soaZcmggeNn8lVVTZ00tbRJc0ubNLe2SWv7ZfHw0CQ8JFgiw0MkKjxUhiXESUpSoq7PLausVqs%2F227wvcKyCtm29%2BhtmdXLy0vmTp%2BkObquepWUVxp9b%2BkD8yR%2B0M0xv%2FXv%2FcdOKaWUvGLh914ouahq6hultr5Jrv63Ubq6eyQwwE%2BCAwMkJChAYqIiJG3U8AURYSE7bl3eUKxFRAID%2FOWuyeN0x%2Bh8cbm6VNsg1XUNcqm2Qeobm8XXx1uiI8IkOjJMoiLCZGh8bFZMZPhkPZ9nqF4pSYkydMig63U6m1%2Bkcs%2BXSHVdg7S2dUhXd7eEhQRLVESoRIaFyJjkYTI4Nsqq7dzXuDoqTriK4aB2YmrY931zpsrUiWNNxv7Tb%2FaqE2eNX5tJHjZEnvjBPZq5nSY757zkni%2BWru4e3XUfMiha5t2Vcf00kCGf79ivsk6dE0tHWvj5%2Bsi%2F%2FuQJzZF1tcTLb640uEr%2Bvj7yKwP17qvyyhr12bZ9Ul3XoH%2Bd46Jl1h3pkjLi%2F5KxsXpHR4TJT3%2F0kGa%2BHtVq49ffmjwQusZD02RaRprcc%2FcdmjXxTBs1XB5ePFcTEVmx5nNVXlVjupHSNJk6cYzcO3uq5ui4OipO%2BC5mhMA5ff%2Beu7XgwACj7xeYuTcmO6dAfbTpGzmVd8GiBl5EpLyqRj7c%2BLVknsq7rTGpuFSrXn93tcq0Ihk5uq5W7RCa4baj40qnzbfx198eUe%2Bv3WJRo%2FldY2vxMqbsOpil%2FrJ2q65GVkSkVyk5kHla3lq5XhWVVVgc9%2FMlF%2BVSbX39WyvXm01GIiJKKTl0%2FKz8z4cbVX%2FG1dFxIiHBqcyemm7y%2FVN5F4z%2ByNPHJGt%2Bvj59%2Bv6v9hyWS7X19Te%2BVt%2FYLO0dl226nvaqqzWCg4wfBPzPh5ts1qj89ZOv1MGsMyavF5rqMcy8Y4JNjrrXbdmp9hzOll4r6tHQ1CJrNu%2BweLnLVzrlnb99Ft7Q1GLRctV1jXIg87Tqj7j2R5xISHAqUyaM1kKDA42%2BX1RWaXL5qRPH9On7u7p7A4PZ0wAAC8tJREFUZNPXex0yaMFZ6ho%2FKNpEg9ggb7y3Wh275SZgS%2BUWFKvC0gqrlx85LN4mMS8srVBnC4r79BlXOrtk3dZdFsfDmoQhIvLtkWyHx7U%2F4zTQMKjByQ2OjZKmljaD79U1NJlcdu70DO13f%2F5QdXZ1Xz0CFJFhCXEyODZKIsJCJNDfVxqbW%2BXQ8bNGv6Oyuu6mv%2F39fCUhLkZERNo6Lkt9o%2FHTF9fK3cjHx9thdbWutzZSckw0Pm3tl2XLzoPy1sr16u47J0hGWorFPZVv9h41WyY0OFD8%2Fa6u8%2BVbThdOGjvKJr%2Btr%2FYcMfpeUIC%2FzJ42UWKjwuVKZ5fkXSiRzFPnDJY9m18kBUXlKnn4EKt7bcGB%2FhIWGiyNTS3S0tZhsneVU1CsxiQP0xwVV2eKEwkJ%2FSosJMjoex2Xr5hdfnpGmuRdKJXxqSNMTj%2F0%2B%2BUfq5a2doPvFZdXqmFD4jQRuWnwwMnc82rjV98aXGbWneky764Mi3Y8W9fVGqkjhmobvtitTp8rNHsaZvO2%2FfLWyvVqzrRJkj5G36Sq%2B4%2BdUtv2HTP6%2FpC4aHlu6QM3fVZ9Y%2FP8s%2FlF20%2BfK5Tmlrabhp1b69ipPLVlxwGD70WEhcjPnl5y23fkFBSptVt2GVzm8ImzVtUjNDhQlj04X%2BJi%2Fm8U3Z7DJ9Sug8eNLlNn4CDIXnF1ljiRkOAUwkODjb6n51rO3On6ksKUCalirBG4VNvgkHV1lrouWTRH%2B58PNyk9F8Ubmlpk09ffytsffaq%2Bf89Ms8OTc8%2BXGH0vftDtjeZ3Dd8OsfGI2FO5542%2Bd%2B%2BsO%2BVnBl4fkzxcW715uzp34fZpoWrN9NYN8fXxln9%2B9lHtn5%2B9%2BfXZUydq%2F7vhS2XslHS9ge%2ByV1ydIU4DCdeQnFxQgL%2FR966d3rKFqPBQo%2B%2B1tLY7VUwcUdelD8x7PiQoUHf5S7X1smLN57L70HGT1wlMneK8KyPNYTE0Vg9fH2%2BTw55Hjxhq8PXG5laL6zAuJcnoexPHJhs%2FCDDwXfaKqzPEiR4SnEabiV6Qh4f%2B44mLVTWqrrFZ6hqapLa%2BSVra2qW7u0e6e3qku7tHvth9yGnW2Rnqem3Gg%2FVbd6kz%2BUW6lulVSnYfOiFbdx5Ui%2BdN1yzZngF%2BvpKWkuSwawvGrtN0d%2FfI2i07jSbVPYdPGHxdKSWXaurrY6MjIvTWIX2M8aQTERpiPM69vQ6LqzPEiYQEp2FqaGxwoL%2FZ5b89kq2OZufI8jWfO%2F26OmNdH148Vyspr1Lb9h%2BTsopqXcscPZkrx07mqlsfIV5xqdboIy3Cw0Ictk6V1XXq3VWfGXyvp7fX5KAOk7%2FV5haLRjkmxscaTRSBAX7Pi8hyPZ9jr7g6S5xISHCJhGTqlNLpvAvqs237ZOeBLKdfR2ev67VpbgpLK9SewyekuLzK7DKGHl9h6rSSnoMLWzFVj77o7dU%2FqtnTTO8%2BMjx0xctvrlze1%2FXpS1ydIU4kJDiVmrpGo%2B8Zu0cpp6BIrduyS1zhZ%2B9KdU1KHKyJXB3J983eY3LRxCwDLW3tcvxMvpqUNup6L6DdxKhIH2%2FH7YptNr6x2RoB%2Fn42%2Byx7xdUZ4kRCgtM4m1%2Bk1m3dZeKUxyCDr2%2Fbl2m2gR8SFy3R4WESGhIofr6%2BUl5ZLXqvldiSK9X1mmvDyr%2FZe1QdyDxt%2FGCi%2FuaDiRATU0E5svEzdStB3%2Bg%2FrPD19bbZt9orrs4QJxISnIap%2Byo0EZk4Nvm2c%2FCFpRXqr598ZXS5ofGx8sD8GRuiI8MevvH13PMlytGNvCvV1ZB77r5D27x9v8o6bfhGyFtP%2BYSHBjeIiMHrB44cyRgVHrpARLYbi%2Fkzjyy2ahDAb%2F5Jf1nNhqPY7RVXZ4jTQMOwbye1%2B9BxZer6UcLgWIOvm5q9ISQoQJ55ZLF2awNvqPF0BFeqqzHjU5N0H52bGllVU98kDU0tSY6oc0RYyA4vT0%2FD28SJYquXveLqbnEiIcEqqz7dpnYfOmGyzKw7Jxh83di0OqaSmIhIWWW1TdehqaVVRxnnqOs1Z84VquVrPlfHz%2BTrPqdy5UqX0ff8fG6fMDbQyLUTpZQcPZl7Qc93Vlyq7fM5n0gj93K1tnXIibP5LndOyV5xdbc4kZBgVm194%2Bt5F0rUroPH1e%2F%2B%2FKHKLyozWX7YkEGSPDzB4OkCLy9Po8tdqjU8GXZBUZmyZgirqZt29XyeI%2BuqR1d3t1ysqpHPtu2T%2F3hnldqy44AqLDX%2B2ICGppakL%2FcYf9x5dMTtjVl4mPGZN46cyDE5g%2FvxM%2FnqTx9sUGu37Ozzug6KNn4bzDffHpW6hqbn9HzO2fwi9enXe%2Fu9YbZXXN0tTs6Oa0j94Mvdh%2BVPH2xQl690SseVK%2FLff92oe1l%2FP195YMGMN4y9b2oWg9r6JjmSnaPuTB9zPZntO3bK6gYuLCTI6L0inV3d8pe1W1VaynAJ8PeT6toGqaqtl5q6Rln24PyG2KiICEfW1VIdl6%2FIsVN5cuxUnvz2vz9UEWEhEhEWLBGhweLh4SG1DU3yp%2F%2FdYHII79hRw297bcr40VJeaXh0XndPj3zy5R5Zu2WnSoiLEX8%2FX2lqaZX6xhYpuVgln23bdy3ufV6%2FWVPT3zibX%2FRSd8%2Ftz59qv3xF3vnbp8v3HT25PC0laUR4aPD1if1q6hvXNzS1LMktKJazBcViatCNI9krru4WJxISDLLmHLSnh4csvX%2BeRIWH%2FtJoQooINfkZX%2Bw6JK%2B89YEKCvCX1vYO2W5i4ISO0z4rXnnrg%2BXGHiVQWnFJSisu3fZ6b29vuKPr2tee06XaeqO9NoNH7KHBMiQu5rZe7MSxydo7f%2FtUVdXUm%2Bxd2qsXeMOByy%2B%2FPZL9krF7v7q6e2T7%2FkzZvj%2FzwstvrhQvT0%2Fp7umRP1tw8ORI9oqru8XJ2XHKzkUEBwbIDx%2F6OxmWYHom60HRkZqpCVlFrp5Xb2lrt%2FqZNDcanhDXh9NGjq2ro3h6eMj3Fs40%2Bv7CmVOcop6z7kzXYiL1TRpgqIfgbOwVV3eLEwkJfZI6IlF%2B8fxSbXiCvscqLJo7zeLv8PbykjQDp5jMWTBjcp%2FWzZF1dZQHF84UU9tq5LAh2uRxKU5R17%2B%2Fb7ZER4a5xX5iz7i6U5xISLD8KNvTQyaOTZZ%2FePx7suzBBRbd7zBqeII2deJY3eX9fX1k2YPz5eHFczVjw1yNiR8UrU2fZP1syo6sqzlhIUES1IepZobGD5Knltyr69lIDyyYoS17cL4Em7ip02hvOSjAZus8KDpC%2B%2BmTD2nzZ0wWby%2Fr4unIWSb6K67uFidnRYT6ma%2BPt%2Fj7%2BYqfr48EBwVIQlyMJMTF3PQgPGvcN2eqVlhaobbuPGj0GSy%2BPt6SOmKoPHTvLO1XP7n62uiRQ%2BXWh9MFBphupP9u9p1aTkGx2rbvmMl7hEKDAyUlKfGmh7E5uq6mDE8YfH3OujPnCiXnfInZZ075%2BfrI4NgoufuOCdenFtLf8x2qiYhs3XlQFZdXSl1js%2FT09JqoX5xMmzT2%2BnI3JWo%2FX4MPbPTW2QjefccErb6xef6ewye2V1yqlfrGFpOnn7w8PWVUUoKkjRpucjZtY%2FUKDDA%2FddC16zG3N%2BzeDouro%2BKEqwjQAFFUVqHqGq4miwB%2FXwkKDJDEwbF22f45BcWqtb1DRF39rgB%2FPwkOCtgQHXH7Ta79XVc9qmsbMlva2jNa2jrkSmfn1cdthwSbfRifNeoamp6rrW9a3tjSKr4%2B3hIcGCBBAf4N%2FfG4grqGpufqGpqWNza3ieahibeXl%2Fj5eEtEeEhWTGT4ZFf6%2Fdszru4UJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADO5f8DodhAHU3RkO8AAAAASUVORK5CYII%3D%29%3B%0Abackground%2Dsize%3A%20contain%3B%0Abackground%2Dposition%3A%20center%20center%3B%0Abackground%2Drepeat%3A%20no%2Drepeat%3B%0A%7D%0A%0A%2Etocify%20%7B%0Aborder%3A%20none%3B%20%0Aborder%2Dradius%3A%200px%3B%20%0A%0A%7D" type="text/css" />
<style type="text/css">
.main-container {
max-width: 940px;
margin-left: auto;
margin-right: auto;
}
img {
max-width:100%;
}
.tabbed-pane {
padding-top: 12px;
}
.html-widget {
margin-bottom: 20px;
}
button.code-folding-btn:focus {
outline: none;
}
summary {
display: list-item;
}
pre code {
padding: 0;
}
</style>
<!-- tabsets -->
<style type="text/css">
.tabset-dropdown > .nav-tabs {
display: inline-table;
max-height: 500px;
min-height: 44px;
overflow-y: auto;
border: 1px solid #ddd;
border-radius: 4px;
}
.tabset-dropdown > .nav-tabs > li.active:before {
content: "";
font-family: 'Glyphicons Halflings';
display: inline-block;
padding: 10px;
border-right: 1px solid #ddd;
}
.tabset-dropdown > .nav-tabs.nav-tabs-open > li.active:before {
content: "";
border: none;
}
.tabset-dropdown > .nav-tabs.nav-tabs-open:before {
content: "";
font-family: 'Glyphicons Halflings';
display: inline-block;
padding: 10px;
border-right: 1px solid #ddd;
}
.tabset-dropdown > .nav-tabs > li.active {
display: block;
}
.tabset-dropdown > .nav-tabs > li > a,
.tabset-dropdown > .nav-tabs > li > a:focus,
.tabset-dropdown > .nav-tabs > li > a:hover {
border: none;
display: inline-block;
border-radius: 4px;
background-color: transparent;
}
.tabset-dropdown > .nav-tabs.nav-tabs-open > li {
display: block;
float: none;
}
.tabset-dropdown > .nav-tabs > li {
display: none;
}
</style>
<!-- code folding -->
<style type="text/css">
#TOC {
margin: 25px 0px 20px 0px;
}
@media (max-width: 768px) {
#TOC {
position: relative;
width: 100%;
}
}
@media print {
.toc-content {
/* see https://github.com/w3c/csswg-drafts/issues/4434 */
float: right;
}
}
.toc-content {
padding-left: 30px;
padding-right: 40px;
}
div.main-container {
max-width: 1200px;
}
div.tocify {
width: 20%;
max-width: 260px;
max-height: 85%;
}
@media (min-width: 768px) and (max-width: 991px) {
div.tocify {
width: 25%;
}
}
@media (max-width: 767px) {
div.tocify {
width: 100%;
max-width: none;
}
}
.tocify ul, .tocify li {
line-height: 20px;
}
.tocify-subheader .tocify-item {
font-size: 0.90em;
}
.tocify .list-group-item {
border-radius: 0px;
}
</style>
</head>
<body>
<div class="container-fluid main-container">
<!-- setup 3col/9col grid for toc_float and main content -->
<div class="row">
<div class="col-xs-12 col-sm-4 col-md-3">
<div id="TOC" class="tocify">
</div>
</div>
<div class="toc-content col-xs-12 col-sm-8 col-md-9">
<div id="header">
<h1 class="title toc-ignore">Kahoot Report</h1>
<h4 class="author">Scary Scarecrow</h4>
<h4 class="date">5/4/2022</h4>
</div>
<div id="technology" class="section level2">
<h2>Technology</h2>
<div id="tech-use" class="section level3">
<h3>Tech Use</h3>
<div id="htmlwidget-e64ae87871389d12a110" style="width:672px;height:480px;" class="d3wordcloud html-widget"></div>
<script type="application/json" data-for="htmlwidget-e64ae87871389d12a110">{"x":{"data":{"text":["AI","BI","Cloud","excel","Lucy","Recipe predict","Tableau"],"freq":[2,1,1,1,1,1,1],"size":[2,1,1,1,1,1,1]},"pars":{"font":"Open Sans","padding":1,"rotmin":0,"rotmax":0,"tooltip":false,"rangesizefont":[30,50],"sizescale":"linear","colorscale":"sqrt","spiral":"rectangular","colors":["#000000","#0000FF","#FF0000"],"every_word_has_own_color":false,"missing_colors":false,"label":null}},"evals":[],"jsHooks":[]}</script>
</div>
<div id="challenges-in-tech-adoption" class="section level3">
<h3>Challenges in Tech Adoption</h3>
<div id="htmlwidget-053cbb9bfd9f2f1d7b13" style="width:672px;height:480px;" class="d3wordcloud html-widget"></div>
<script type="application/json" data-for="htmlwidget-053cbb9bfd9f2f1d7b13">{"x":{"data":{"text":["Data Availability","Excel","Frequency","Knowledge","People","Resistance","Self Exp","Speed","Time"],"freq":[1,1,1,1,3,1,1,1,4],"size":[1,1,1,1,3,1,1,1,4]},"pars":{"font":"Open Sans","padding":1,"rotmin":0,"rotmax":0,"tooltip":false,"rangesizefont":[20,50],"sizescale":"linear","colorscale":"sqrt","spiral":"rectangular","colors":["#000000","#0000FF","#FF0000"],"every_word_has_own_color":false,"missing_colors":false,"label":null}},"evals":[],"jsHooks":[]}</script>
</div>
</div>
<div id="people" class="section level2">
<h2>People</h2>
<div id="htmlwidget-c250582e027b1db0e0da" style="width:100%;height:500px;" class="highchart html-widget"></div>
<script type="application/json" data-for="htmlwidget-c250582e027b1db0e0da">{"x":{"hc_opts":{"chart":{"reflow":true},"title":{"text":"Mentorship and Training needs a boost"},"yAxis":{"title":{"text":"Average Score (%)"},"type":"linear","labels":{"format":"{value}%"},"max":100},"credits":{"enabled":true,"text":"LaNubia Data Science","href":"https://www.lanubia.com/"},"exporting":{"enabled":true,"filename":"People"},"boost":{"enabled":false},"plotOptions":{"series":{"label":{"enabled":false},"turboThreshold":0,"showInLegend":false},"treemap":{"layoutAlgorithm":"squarified"},"scatter":{"marker":{"symbol":"circle"}}},"series":[{"group":"group","data":[{"Type":"Mentor","score":50,"Max":4,"y":50,"name":"Mentor"},{"Type":"Training","score":53.12,"Max":4,"y":53.12,"name":"Training"},{"Type":"Culture","score":65.62,"Max":4,"y":65.62,"name":"Culture"}],"type":"column","name":"People","tooltip":{"pointFormat":"Avg. Score {point.Type}: {point.score}%"},"dataLabels":{"enabled":true,"format":"{point.score}%"}}],"xAxis":{"type":"category","title":{"text":"Type"},"categories":null},"subtitle":{"text":"Average score from culture promotion and training and mentorship opportunities"}},"theme":{"colors":["#6794a7","#014d64","#76c0c1","#01a2d9","#7ad2f6","#00887d","#adadad","#7bd3f6","#7c260b","#ee8f71","#76c0c1","#a18376"],"chart":{"backgroundColor":"#d5e4eb","style":{"fontFamily":"Droid Sans","color":"#3C3C3C"}},"title":{"align":"left","style":{"fontWeight":"bold"}},"subtitle":{"align":"left"},"yAxis":{"gridLineColor":"#FFFFFF","lineColor":"#FFFFFF","minorGridLineColor":"#FFFFFF","tickColor":"#D7D7D8","tickWidth":1,"title":{"style":{"color":"#A0A0A3"}}},"tooltip":{"backgroundColor":"#FFFFFF","borderColor":"#76c0c1","style":{"color":"#000000"}},"legend":{"itemStyle":{"color":"#3C3C3C"},"itemHiddenStyle":{"color":"#606063"}},"credits":{"style":{"color":"#666"}},"labels":{"style":{"color":"#D7D7D8"}},"drilldown":{"activeAxisLabelStyle":{"color":"#F0F0F3"},"activeDataLabelStyle":{"color":"#F0F0F3"}},"navigation":{"buttonOptions":{"symbolStroke":"#DDDDDD","theme":{"fill":"#505053"}}},"legendBackgroundColor":"rgba(0, 0, 0, 0.5)","background2":"#505053","dataLabelsColor":"#B0B0B3","textColor":"#C0C0C0","contrastTextColor":"#F0F0F3","maskColor":"rgba(255,255,255,0.3)"},"conf_opts":{"global":{"Date":null,"VMLRadialGradientURL":"http =//code.highcharts.com/list(version)/gfx/vml-radial-gradient.png","canvasToolsURL":"http =//code.highcharts.com/list(version)/modules/canvas-tools.js","getTimezoneOffset":null,"timezoneOffset":0,"useUTC":true},"lang":{"contextButtonTitle":"Chart context menu","decimalPoint":".","downloadJPEG":"Download JPEG image","downloadPDF":"Download PDF document","downloadPNG":"Download PNG image","downloadSVG":"Download SVG vector image","drillUpText":"Back to {series.name}","invalidDate":null,"loading":"Loading...","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"noData":"No data to display","numericSymbols":["k","M","G","T","P","E"],"printChart":"Print chart","resetZoom":"Reset zoom","resetZoomTitle":"Reset zoom level 1:1","shortMonths":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"thousandsSep":" ","weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}},"type":"chart","fonts":"Droid+Sans","debug":false},"evals":[],"jsHooks":[]}</script>
</div>
<div id="data" class="section level2">
<h2>Data</h2>
<div id="htmlwidget-d49065756f2d9cf244a9" style="width:100%;height:500px;" class="highchart html-widget"></div>
<script type="application/json" data-for="htmlwidget-d49065756f2d9cf244a9">{"x":{"hc_opts":{"chart":{"reflow":true},"title":{"text":"Data quality is a major issue"},"yAxis":{"title":{"text":"Average Score (%)"},"type":"linear","labels":{"format":"{value}%"},"max":100},"credits":{"enabled":true,"text":"LaNubia Data Science","href":"https://www.lanubia.com/"},"exporting":{"enabled":true,"filename":"Data"},"boost":{"enabled":false},"plotOptions":{"series":{"label":{"enabled":false},"turboThreshold":0,"showInLegend":false},"treemap":{"layoutAlgorithm":"squarified"},"scatter":{"marker":{"symbol":"circle"}}},"series":[{"group":"group","data":[{"Type":"Quality","score":53.57,"Max":4,"y":53.57,"name":"Quality"},{"Type":"Data.Type","score":78.57,"Max":4,"y":78.57,"name":"Data.Type"},{"Type":"Sources","score":78.57,"Max":4,"y":78.57,"name":"Sources"}],"type":"column","name":"Data","tooltip":{"pointFormat":"Avg. Score {point.Type}: {point.score}%"},"dataLabels":{"enabled":true,"format":"{point.score}%"}}],"xAxis":{"type":"category","title":{"text":"Type"},"categories":null},"subtitle":{"text":"Average score from types of data used, its quality and sources"}},"theme":{"colors":["#6794a7","#014d64","#76c0c1","#01a2d9","#7ad2f6","#00887d","#adadad","#7bd3f6","#7c260b","#ee8f71","#76c0c1","#a18376"],"chart":{"backgroundColor":"#d5e4eb","style":{"fontFamily":"Droid Sans","color":"#3C3C3C"}},"title":{"align":"left","style":{"fontWeight":"bold"}},"subtitle":{"align":"left"},"yAxis":{"gridLineColor":"#FFFFFF","lineColor":"#FFFFFF","minorGridLineColor":"#FFFFFF","tickColor":"#D7D7D8","tickWidth":1,"title":{"style":{"color":"#A0A0A3"}}},"tooltip":{"backgroundColor":"#FFFFFF","borderColor":"#76c0c1","style":{"color":"#000000"}},"legend":{"itemStyle":{"color":"#3C3C3C"},"itemHiddenStyle":{"color":"#606063"}},"credits":{"style":{"color":"#666"}},"labels":{"style":{"color":"#D7D7D8"}},"drilldown":{"activeAxisLabelStyle":{"color":"#F0F0F3"},"activeDataLabelStyle":{"color":"#F0F0F3"}},"navigation":{"buttonOptions":{"symbolStroke":"#DDDDDD","theme":{"fill":"#505053"}}},"legendBackgroundColor":"rgba(0, 0, 0, 0.5)","background2":"#505053","dataLabelsColor":"#B0B0B3","textColor":"#C0C0C0","contrastTextColor":"#F0F0F3","maskColor":"rgba(255,255,255,0.3)"},"conf_opts":{"global":{"Date":null,"VMLRadialGradientURL":"http =//code.highcharts.com/list(version)/gfx/vml-radial-gradient.png","canvasToolsURL":"http =//code.highcharts.com/list(version)/modules/canvas-tools.js","getTimezoneOffset":null,"timezoneOffset":0,"useUTC":true},"lang":{"contextButtonTitle":"Chart context menu","decimalPoint":".","downloadJPEG":"Download JPEG image","downloadPDF":"Download PDF document","downloadPNG":"Download PNG image","downloadSVG":"Download SVG vector image","drillUpText":"Back to {series.name}","invalidDate":null,"loading":"Loading...","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"noData":"No data to display","numericSymbols":["k","M","G","T","P","E"],"printChart":"Print chart","resetZoom":"Reset zoom","resetZoomTitle":"Reset zoom level 1:1","shortMonths":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"thousandsSep":" ","weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}},"type":"chart","fonts":"Droid+Sans","debug":false},"evals":[],"jsHooks":[]}</script>
</div>
<div id="process" class="section level2">
<h2>Process</h2>
<div id="htmlwidget-6492f7b833950d342a9f" style="width:100%;height:500px;" class="highchart html-widget"></div>
<script type="application/json" data-for="htmlwidget-6492f7b833950d342a9f">{"x":{"hc_opts":{"chart":{"reflow":true},"title":{"text":"Opportunity exists in Process Simulation and Documentation"},"yAxis":{"title":{"text":"Average Score (%)"},"type":"linear","labels":{"format":"{value}%"},"max":100},"credits":{"enabled":true,"text":"LaNubia Data Science","href":"https://www.lanubia.com/"},"exporting":{"enabled":true,"filename":"Process"},"boost":{"enabled":false},"plotOptions":{"series":{"label":{"enabled":false},"turboThreshold":0,"showInLegend":false},"treemap":{"layoutAlgorithm":"squarified"},"scatter":{"marker":{"symbol":"circle"}}},"series":[{"group":"group","data":[{"Type":"Simulations","score":28.57,"Max":4,"y":28.57,"name":"Simulations"},{"Type":"Documentation","score":57.14,"Max":4,"y":57.14,"name":"Documentation"}],"type":"column","name":"Process","tooltip":{"pointFormat":"Avg. Score {point.Type}: {point.score}%"},"dataLabels":{"enabled":true,"format":"{point.score}%"}}],"xAxis":{"type":"category","title":{"text":"Type"},"categories":null},"subtitle":{"text":"Average score from process documentation and simulations"}},"theme":{"colors":["#6794a7","#014d64","#76c0c1","#01a2d9","#7ad2f6","#00887d","#adadad","#7bd3f6","#7c260b","#ee8f71","#76c0c1","#a18376"],"chart":{"backgroundColor":"#d5e4eb","style":{"fontFamily":"Droid Sans","color":"#3C3C3C"}},"title":{"align":"left","style":{"fontWeight":"bold"}},"subtitle":{"align":"left"},"yAxis":{"gridLineColor":"#FFFFFF","lineColor":"#FFFFFF","minorGridLineColor":"#FFFFFF","tickColor":"#D7D7D8","tickWidth":1,"title":{"style":{"color":"#A0A0A3"}}},"tooltip":{"backgroundColor":"#FFFFFF","borderColor":"#76c0c1","style":{"color":"#000000"}},"legend":{"itemStyle":{"color":"#3C3C3C"},"itemHiddenStyle":{"color":"#606063"}},"credits":{"style":{"color":"#666"}},"labels":{"style":{"color":"#D7D7D8"}},"drilldown":{"activeAxisLabelStyle":{"color":"#F0F0F3"},"activeDataLabelStyle":{"color":"#F0F0F3"}},"navigation":{"buttonOptions":{"symbolStroke":"#DDDDDD","theme":{"fill":"#505053"}}},"legendBackgroundColor":"rgba(0, 0, 0, 0.5)","background2":"#505053","dataLabelsColor":"#B0B0B3","textColor":"#C0C0C0","contrastTextColor":"#F0F0F3","maskColor":"rgba(255,255,255,0.3)"},"conf_opts":{"global":{"Date":null,"VMLRadialGradientURL":"http =//code.highcharts.com/list(version)/gfx/vml-radial-gradient.png","canvasToolsURL":"http =//code.highcharts.com/list(version)/modules/canvas-tools.js","getTimezoneOffset":null,"timezoneOffset":0,"useUTC":true},"lang":{"contextButtonTitle":"Chart context menu","decimalPoint":".","downloadJPEG":"Download JPEG image","downloadPDF":"Download PDF document","downloadPNG":"Download PNG image","downloadSVG":"Download SVG vector image","drillUpText":"Back to {series.name}","invalidDate":null,"loading":"Loading...","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"noData":"No data to display","numericSymbols":["k","M","G","T","P","E"],"printChart":"Print chart","resetZoom":"Reset zoom","resetZoomTitle":"Reset zoom level 1:1","shortMonths":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"thousandsSep":" ","weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}},"type":"chart","fonts":"Droid+Sans","debug":false},"evals":[],"jsHooks":[]}</script>
<div id="automation-opportunity" class="section level3">
<h3>Automation Opportunity</h3>
<div id="htmlwidget-582d2d79eeba33e9382c" style="width:100%;height:500px;" class="highchart html-widget"></div>
<script type="application/json" data-for="htmlwidget-582d2d79eeba33e9382c">{"x":{"hc_opts":{"chart":{"reflow":true},"title":{"text":"Substantial Automation Opportunities Exist"},"yAxis":{"title":{"text":"Count"},"type":"linear","labels":{"format":"{value}"}},"credits":{"enabled":true,"text":"LaNubia Data Science","href":"https://www.lanubia.com/"},"exporting":{"enabled":true,"filename":"ProcessAuto"},"boost":{"enabled":false},"plotOptions":{"series":{"label":{"enabled":false},"turboThreshold":0,"showInLegend":false},"treemap":{"layoutAlgorithm":"squarified"},"scatter":{"marker":{"symbol":"circle"}}},"series":[{"group":"group","data":[{"Answer":"No","Votes":0,"y":0,"name":"No"},{"Answer":"Yes","Votes":7,"y":7,"name":"Yes"}],"type":"column","name":"ProcessAutomation","tooltip":{"pointFormat":"Votes {point.Answer}: {point.Votes}"},"dataLabels":{"enabled":true,"format":"{point.Votes}"}}],"xAxis":{"type":"category","title":{"text":"Answer"},"categories":null},"subtitle":{"text":"Count of votes (Whether or not process automation opportunities exist)"}},"theme":{"colors":["#6794a7","#014d64","#76c0c1","#01a2d9","#7ad2f6","#00887d","#adadad","#7bd3f6","#7c260b","#ee8f71","#76c0c1","#a18376"],"chart":{"backgroundColor":"#d5e4eb","style":{"fontFamily":"Droid Sans","color":"#3C3C3C"}},"title":{"align":"left","style":{"fontWeight":"bold"}},"subtitle":{"align":"left"},"yAxis":{"gridLineColor":"#FFFFFF","lineColor":"#FFFFFF","minorGridLineColor":"#FFFFFF","tickColor":"#D7D7D8","tickWidth":1,"title":{"style":{"color":"#A0A0A3"}}},"tooltip":{"backgroundColor":"#FFFFFF","borderColor":"#76c0c1","style":{"color":"#000000"}},"legend":{"itemStyle":{"color":"#3C3C3C"},"itemHiddenStyle":{"color":"#606063"}},"credits":{"style":{"color":"#666"}},"labels":{"style":{"color":"#D7D7D8"}},"drilldown":{"activeAxisLabelStyle":{"color":"#F0F0F3"},"activeDataLabelStyle":{"color":"#F0F0F3"}},"navigation":{"buttonOptions":{"symbolStroke":"#DDDDDD","theme":{"fill":"#505053"}}},"legendBackgroundColor":"rgba(0, 0, 0, 0.5)","background2":"#505053","dataLabelsColor":"#B0B0B3","textColor":"#C0C0C0","contrastTextColor":"#F0F0F3","maskColor":"rgba(255,255,255,0.3)"},"conf_opts":{"global":{"Date":null,"VMLRadialGradientURL":"http =//code.highcharts.com/list(version)/gfx/vml-radial-gradient.png","canvasToolsURL":"http =//code.highcharts.com/list(version)/modules/canvas-tools.js","getTimezoneOffset":null,"timezoneOffset":0,"useUTC":true},"lang":{"contextButtonTitle":"Chart context menu","decimalPoint":".","downloadJPEG":"Download JPEG image","downloadPDF":"Download PDF document","downloadPNG":"Download PNG image","downloadSVG":"Download SVG vector image","drillUpText":"Back to {series.name}","invalidDate":null,"loading":"Loading...","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"noData":"No data to display","numericSymbols":["k","M","G","T","P","E"],"printChart":"Print chart","resetZoom":"Reset zoom","resetZoomTitle":"Reset zoom level 1:1","shortMonths":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"thousandsSep":" ","weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}},"type":"chart","fonts":"Droid+Sans","debug":false},"evals":[],"jsHooks":[]}</script>
</div>
<div id="process-controls" class="section level3">
<h3>Process Controls</h3>
<div id="htmlwidget-855935e3614b9c54fc63" style="width:100%;height:500px;" class="highchart html-widget"></div>
<script type="application/json" data-for="htmlwidget-855935e3614b9c54fc63">{"x":{"hc_opts":{"chart":{"reflow":true},"title":{"text":"Process rules need boost"},"yAxis":{"title":{"text":"Count"},"type":"linear","labels":{"format":"{value}"}},"credits":{"enabled":true,"text":"LaNubia Data Science","href":"https://www.lanubia.com/"},"exporting":{"enabled":true,"filename":"ProcessControl"},"boost":{"enabled":false},"plotOptions":{"series":{"label":{"enabled":false},"turboThreshold":0,"showInLegend":false},"treemap":{"layoutAlgorithm":"squarified"},"scatter":{"marker":{"symbol":"circle"}}},"series":[{"group":"group","data":[{"Answer":"No Answer","Votes":0,"y":0,"name":"No Answer"},{"Answer":"Rules","Votes":3,"y":3,"name":"Rules"},{"Answer":"Legislation","Votes":5,"y":5,"name":"Legislation"},{"Answer":"Risk","Votes":5,"y":5,"name":"Risk"},{"Answer":"Business","Votes":6,"y":6,"name":"Business"}],"type":"column","name":"ProcessControl","tooltip":{"pointFormat":"Votes {point.Answer}: {point.Votes}"},"dataLabels":{"enabled":true,"format":"{point.Votes}"}}],"xAxis":{"type":"category","title":{"text":"Answer"},"categories":null},"subtitle":{"text":"Count of votes (Which controls exist)"}},"theme":{"colors":["#6794a7","#014d64","#76c0c1","#01a2d9","#7ad2f6","#00887d","#adadad","#7bd3f6","#7c260b","#ee8f71","#76c0c1","#a18376"],"chart":{"backgroundColor":"#d5e4eb","style":{"fontFamily":"Droid Sans","color":"#3C3C3C"}},"title":{"align":"left","style":{"fontWeight":"bold"}},"subtitle":{"align":"left"},"yAxis":{"gridLineColor":"#FFFFFF","lineColor":"#FFFFFF","minorGridLineColor":"#FFFFFF","tickColor":"#D7D7D8","tickWidth":1,"title":{"style":{"color":"#A0A0A3"}}},"tooltip":{"backgroundColor":"#FFFFFF","borderColor":"#76c0c1","style":{"color":"#000000"}},"legend":{"itemStyle":{"color":"#3C3C3C"},"itemHiddenStyle":{"color":"#606063"}},"credits":{"style":{"color":"#666"}},"labels":{"style":{"color":"#D7D7D8"}},"drilldown":{"activeAxisLabelStyle":{"color":"#F0F0F3"},"activeDataLabelStyle":{"color":"#F0F0F3"}},"navigation":{"buttonOptions":{"symbolStroke":"#DDDDDD","theme":{"fill":"#505053"}}},"legendBackgroundColor":"rgba(0, 0, 0, 0.5)","background2":"#505053","dataLabelsColor":"#B0B0B3","textColor":"#C0C0C0","contrastTextColor":"#F0F0F3","maskColor":"rgba(255,255,255,0.3)"},"conf_opts":{"global":{"Date":null,"VMLRadialGradientURL":"http =//code.highcharts.com/list(version)/gfx/vml-radial-gradient.png","canvasToolsURL":"http =//code.highcharts.com/list(version)/modules/canvas-tools.js","getTimezoneOffset":null,"timezoneOffset":0,"useUTC":true},"lang":{"contextButtonTitle":"Chart context menu","decimalPoint":".","downloadJPEG":"Download JPEG image","downloadPDF":"Download PDF document","downloadPNG":"Download PNG image","downloadSVG":"Download SVG vector image","drillUpText":"Back to {series.name}","invalidDate":null,"loading":"Loading...","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"noData":"No data to display","numericSymbols":["k","M","G","T","P","E"],"printChart":"Print chart","resetZoom":"Reset zoom","resetZoomTitle":"Reset zoom level 1:1","shortMonths":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"thousandsSep":" ","weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}},"type":"chart","fonts":"Droid+Sans","debug":false},"evals":[],"jsHooks":[]}</script>
</div>
</div>
</div>
</div>
</div>
<script>
// add bootstrap table styles to pandoc tables
function bootstrapStylePandocTables() {
$('tr.odd').parent('tbody').parent('table').addClass('table table-condensed');
}
$(document).ready(function () {
bootstrapStylePandocTables();
});
</script>
<!-- tabsets -->
<script>
$(document).ready(function () {
window.buildTabsets("TOC");
});
$(document).ready(function () {
$('.tabset-dropdown > .nav-tabs > li').click(function () {
$(this).parent().toggleClass('nav-tabs-open');
});
});
</script>
<!-- code folding -->
<script>
$(document).ready(function () {
// temporarily add toc-ignore selector to headers for the consistency with Pandoc
$('.unlisted.unnumbered').addClass('toc-ignore')
// move toc-ignore selectors from section div to header
$('div.section.toc-ignore')
.removeClass('toc-ignore')
.children('h1,h2,h3,h4,h5').addClass('toc-ignore');
// establish options
var options = {
selectors: "h1,h2,h3,h4",
theme: "bootstrap3",
context: '.toc-content',
hashGenerator: function (text) {
return text.replace(/[.\\/?&!#<>]/g, '').replace(/\s/g, '_');
},
ignoreSelector: ".toc-ignore",
scrollTo: 0
};
options.showAndHide = true;
options.smoothScroll = true;
// tocify
var toc = $("#TOC").tocify(options).data("toc-tocify");
});
</script>
<!-- dynamically load mathjax for compatibility with self-contained -->
<script>
(function () {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
document.getElementsByTagName("head")[0].appendChild(script);
})();
</script>
</body>
</html>