{"id":29960,"date":"2022-02-09T09:38:49","date_gmt":"2022-02-09T15:38:49","guid":{"rendered":"https:\/\/law.marquette.edu\/facultyblog\/?p=29960"},"modified":"2022-02-21T15:07:34","modified_gmt":"2022-02-21T21:07:34","slug":"neighborhoods-where-milwaukee-isnt-segregated","status":"publish","type":"post","link":"https:\/\/law.marquette.edu\/facultyblog\/2022\/02\/neighborhoods-where-milwaukee-isnt-segregated\/","title":{"rendered":"Neighborhoods where Milwaukee isn&#8217;t segregated"},"content":{"rendered":"<p><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> <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><\/p>\n<style>h1 {font-size: 34px;}<br \/>       h1.title {font-size: 38px;}<br \/>       h2 {font-size: 30px;}<br \/>       h3 {font-size: 24px;}<br \/>       h4 {font-size: 18px;}<br \/>       h5 {font-size: 16px;}<br \/>       h6 {font-size: 12px;}<br \/>       code {color: inherit; background-color: rgba(0, 0, 0, 0.04);}<br \/>       pre:not([class]) { background-color: white }<\/style>\n<p><script src=\"data:application\/javascript;base64,CgovKioKICogalF1ZXJ5IFBsdWdpbjogU3RpY2t5IFRhYnMKICoKICogQGF1dGhvciBBaWRhbiBMaXN0ZXIgPGFpZGFuQHBocC5uZXQ+CiAqIGFkYXB0ZWQgYnkgUnViZW4gQXJzbGFuIHRvIGFjdGl2YXRlIHBhcmVudCB0YWJzIHRvbwogKiBodHRwOi8vd3d3LmFpZGFubGlzdGVyLmNvbS8yMDE0LzAzL3BlcnNpc3RpbmctdGhlLXRhYi1zdGF0ZS1pbi1ib290c3RyYXAvCiAqLwooZnVuY3Rpb24oJCkgewogICJ1c2Ugc3RyaWN0IjsKICAkLmZuLnJtYXJrZG93blN0aWNreVRhYnMgPSBmdW5jdGlvbigpIHsKICAgIHZhciBjb250ZXh0ID0gdGhpczsKICAgIC8vIFNob3cgdGhlIHRhYiBjb3JyZXNwb25kaW5nIHdpdGggdGhlIGhhc2ggaW4gdGhlIFVSTCwgb3IgdGhlIGZpcnN0IHRhYgogICAgdmFyIHNob3dTdHVmZkZyb21IYXNoID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBoYXNoID0gd2luZG93LmxvY2F0aW9uLmhhc2g7CiAgICAgIHZhciBzZWxlY3RvciA9IGhhc2ggPyAnYVtocmVmPSInICsgaGFzaCArICciXScgOiAnbGkuYWN0aXZlID4gYSc7CiAgICAgIHZhciAkc2VsZWN0b3IgPSAkKHNlbGVjdG9yLCBjb250ZXh0KTsKICAgICAgaWYoJHNlbGVjdG9yLmRhdGEoJ3RvZ2dsZScpID09PSAidGFiIikgewogICAgICAgICRzZWxlY3Rvci50YWIoJ3Nob3cnKTsKICAgICAgICAvLyB3YWxrIHVwIHRoZSBhbmNlc3RvcnMgb2YgdGhpcyBlbGVtZW50LCBzaG93IGFueSBoaWRkZW4gdGFicwogICAgICAgICRzZWxlY3Rvci5wYXJlbnRzKCcuc2VjdGlvbi50YWJzZXQnKS5lYWNoKGZ1bmN0aW9uKGksIGVsbSkgewogICAgICAgICAgdmFyIGxpbmsgPSAkKCdhW2hyZWY9IiMnICsgJChlbG0pLmF0dHIoJ2lkJykgKyAnIl0nKTsKICAgICAgICAgIGlmKGxpbmsuZGF0YSgndG9nZ2xlJykgPT09ICJ0YWIiKSB7CiAgICAgICAgICAgIGxpbmsudGFiKCJzaG93Iik7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH07CgoKICAgIC8vIFNldCB0aGUgY29ycmVjdCB0YWIgd2hlbiB0aGUgcGFnZSBsb2FkcwogICAgc2hvd1N0dWZmRnJvbUhhc2goY29udGV4dCk7CgogICAgLy8gU2V0IHRoZSBjb3JyZWN0IHRhYiB3aGVuIGEgdXNlciB1c2VzIHRoZWlyIGJhY2svZm9yd2FyZCBidXR0b24KICAgICQod2luZG93KS5vbignaGFzaGNoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgICBzaG93U3R1ZmZGcm9tSGFzaChjb250ZXh0KTsKICAgIH0pOwoKICAgIC8vIENoYW5nZSB0aGUgVVJMIHdoZW4gdGFicyBhcmUgY2xpY2tlZAogICAgJCgnYScsIGNvbnRleHQpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgdGhpcy5ocmVmKTsKICAgICAgc2hvd1N0dWZmRnJvbUhhc2goY29udGV4dCk7CiAgICB9KTsKCiAgICByZXR1cm4gdGhpczsKICB9Owp9KGpRdWVyeSkpOwoKd2luZG93LmJ1aWxkVGFic2V0cyA9IGZ1bmN0aW9uKHRvY0lEKSB7CgogIC8vIGJ1aWxkIGEgdGFic2V0IGZyb20gYSBzZWN0aW9uIGRpdiB3aXRoIHRoZSAudGFic2V0IGNsYXNzCiAgZnVuY3Rpb24gYnVpbGRUYWJzZXQodGFic2V0KSB7CgogICAgLy8gY2hlY2sgZm9yIGZhZGUgYW5kIHBpbGxzIG9wdGlvbnMKICAgIHZhciBmYWRlID0gdGFic2V0Lmhhc0NsYXNzKCJ0YWJzZXQtZmFkZSIpOwogICAgdmFyIHBpbGxzID0gdGFic2V0Lmhhc0NsYXNzKCJ0YWJzZXQtcGlsbHMiKTsKICAgIHZhciBuYXZDbGFzcyA9IHBpbGxzID8gIm5hdi1waWxscyIgOiAibmF2LXRhYnMiOwoKICAgIC8vIGRldGVybWluZSB0aGUgaGVhZGluZyBsZXZlbCBvZiB0aGUgdGFic2V0IGFuZCB0YWJzCiAgICB2YXIgbWF0Y2ggPSB0YWJzZXQuYXR0cignY2xhc3MnKS5tYXRjaCgvbGV2ZWwoXGQpIC8pOwogICAgaWYgKG1hdGNoID09PSBudWxsKQogICAgICByZXR1cm47CiAgICB2YXIgdGFic2V0TGV2ZWwgPSBOdW1iZXIobWF0Y2hbMV0pOwogICAgdmFyIHRhYkxldmVsID0gdGFic2V0TGV2ZWwgKyAxOwoKICAgIC8vIGZpbmQgYWxsIHN1YmhlYWRpbmdzIGltbWVkaWF0ZWx5IGJlbG93CiAgICB2YXIgdGFicyA9IHRhYnNldC5maW5kKCJkaXYuc2VjdGlvbi5sZXZlbCIgKyB0YWJMZXZlbCk7CiAgICBpZiAoIXRhYnMubGVuZ3RoKQogICAgICByZXR1cm47CgogICAgLy8gY3JlYXRlIHRhYmxpc3QgYW5kIHRhYi1jb250ZW50IGVsZW1lbnRzCiAgICB2YXIgdGFiTGlzdCA9ICQoJzx1bCBjbGFzcz0ibmF2ICcgKyBuYXZDbGFzcyArICciIHJvbGU9InRhYmxpc3QiPjwvdWw+Jyk7CiAgICAkKHRhYnNbMF0pLmJlZm9yZSh0YWJMaXN0KTsKICAgIHZhciB0YWJDb250ZW50ID0gJCgnPGRpdiBjbGFzcz0idGFiLWNvbnRlbnQiPjwvZGl2PicpOwogICAgJCh0YWJzWzBdKS5iZWZvcmUodGFiQ29udGVudCk7CgogICAgLy8gYnVpbGQgdGhlIHRhYnNldAogICAgdmFyIGFjdGl2ZVRhYiA9IDA7CiAgICB0YWJzLmVhY2goZnVuY3Rpb24oaSkgewoKICAgICAgLy8gZ2V0IHRoZSB0YWIgZGl2CiAgICAgIHZhciB0YWIgPSAkKHRhYnNbaV0pOwoKICAgICAgLy8gZ2V0IHRoZSBpZCB0aGVuIHNhbml0aXplIGl0IGZvciB1c2Ugd2l0aCBib290c3RyYXAgdGFicwogICAgICB2YXIgaWQgPSB0YWIuYXR0cignaWQnKTsKCiAgICAgIC8vIHNlZSBpZiB0aGlzIGlzIG1hcmtlZCBhcyB0aGUgYWN0aXZlIHRhYgogICAgICBpZiAodGFiLmhhc0NsYXNzKCdhY3RpdmUnKSkKICAgICAgICBhY3RpdmVUYWIgPSBpOwoKICAgICAgLy8gcmVtb3ZlIGFueSB0YWJsZSBvZiBjb250ZW50cyBlbnRyaWVzIGFzc29jaWF0ZWQgd2l0aAogICAgICAvLyB0aGlzIElEIChzaW5jZSB3ZSdsbCBiZSByZW1vdmluZyB0aGUgaGVhZGluZyBlbGVtZW50KQogICAgICAkKCJkaXYjIiArIHRvY0lEICsgIiBsaSBhW2hyZWY9JyMiICsgaWQgKyAiJ10iKS5wYXJlbnQoKS5yZW1vdmUoKTsKCiAgICAgIC8vIHNhbml0aXplIHRoZSBpZCBmb3IgdXNlIHdpdGggYm9vdHN0cmFwIHRhYnMKICAgICAgaWQgPSBpZC5yZXBsYWNlKC9bLlwvPyYhIzw+XS9nLCAnJykucmVwbGFjZSgvXHMvZywgJ18nKTsKICAgICAgdGFiLmF0dHIoJ2lkJywgaWQpOwoKICAgICAgLy8gZ2V0IHRoZSBoZWFkaW5nIGVsZW1lbnQgd2l0aGluIGl0LCBncmFiIGl0J3MgdGV4dCwgdGhlbiByZW1vdmUgaXQKICAgICAgdmFyIGhlYWRpbmcgPSB0YWIuZmluZCgnaCcgKyB0YWJMZXZlbCArICc6Zmlyc3QnKTsKICAgICAgdmFyIGhlYWRpbmdUZXh0ID0gaGVhZGluZy5odG1sKCk7CiAgICAgIGhlYWRpbmcucmVtb3ZlKCk7CgogICAgICAvLyBidWlsZCBhbmQgYXBwZW5kIHRoZSB0YWIgbGlzdCBpdGVtCiAgICAgIHZhciBhID0gJCgnPGEgcm9sZT0idGFiIiBkYXRhLXRvZ2dsZT0idGFiIj4nICsgaGVhZGluZ1RleHQgKyAnPC9hPicpOwogICAgICBhLmF0dHIoJ2hyZWYnLCAnIycgKyBpZCk7CiAgICAgIGEuYXR0cignYXJpYS1jb250cm9scycsIGlkKTsKICAgICAgdmFyIGxpID0gJCgnPGxpIHJvbGU9InByZXNlbnRhdGlvbiI+PC9saT4nKTsKICAgICAgbGkuYXBwZW5kKGEpOwogICAgICB0YWJMaXN0LmFwcGVuZChsaSk7CgogICAgICAvLyBzZXQgaXQncyBhdHRyaWJ1dGVzCiAgICAgIHRhYi5hdHRyKCdyb2xlJywgJ3RhYnBhbmVsJyk7CiAgICAgIHRhYi5hZGRDbGFzcygndGFiLXBhbmUnKTsKICAgICAgdGFiLmFkZENsYXNzKCd0YWJiZWQtcGFuZScpOwogICAgICBpZiAoZmFkZSkKICAgICAgICB0YWIuYWRkQ2xhc3MoJ2ZhZGUnKTsKCiAgICAgIC8vIG1vdmUgaXQgaW50byB0aGUgdGFiIGNvbnRlbnQgZGl2CiAgICAgIHRhYi5kZXRhY2goKS5hcHBlbmRUbyh0YWJDb250ZW50KTsKICAgIH0pOwoKICAgIC8vIHNldCBhY3RpdmUgdGFiCiAgICAkKHRhYkxpc3QuY2hpbGRyZW4oJ2xpJylbYWN0aXZlVGFiXSkuYWRkQ2xhc3MoJ2FjdGl2ZScpOwogICAgdmFyIGFjdGl2ZSA9ICQodGFiQ29udGVudC5jaGlsZHJlbignZGl2LnNlY3Rpb24nKVthY3RpdmVUYWJdKTsKICAgIGFjdGl2ZS5hZGRDbGFzcygnYWN0aXZlJyk7CiAgICBpZiAoZmFkZSkKICAgICAgYWN0aXZlLmFkZENsYXNzKCdpbicpOwoKICAgIGlmICh0YWJzZXQuaGFzQ2xhc3MoInRhYnNldC1zdGlja3kiKSkKICAgICAgdGFic2V0LnJtYXJrZG93blN0aWNreVRhYnMoKTsKICB9CgogIC8vIGNvbnZlcnQgc2VjdGlvbiBkaXZzIHdpdGggdGhlIC50YWJzZXQgY2xhc3MgdG8gdGFic2V0cwogIHZhciB0YWJzZXRzID0gJCgiZGl2LnNlY3Rpb24udGFic2V0Iik7CiAgdGFic2V0cy5lYWNoKGZ1bmN0aW9uKGkpIHsKICAgIGJ1aWxkVGFic2V0KCQodGFic2V0c1tpXSkpOwogIH0pOwp9OwoK\"><\/script> <script src=\"data:application\/javascript;base64,LyohIGhpZ2hsaWdodC5qcyB2OS4xMi4wIHwgQlNEMyBMaWNlbnNlIHwgZ2l0LmlvL2hsanNsaWNlbnNlICovCiFmdW5jdGlvbihlKXt2YXIgbj0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93fHwib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGY7InVuZGVmaW5lZCIhPXR5cGVvZiBleHBvcnRzP2UoZXhwb3J0cyk6biYmKG4uaGxqcz1lKHt9KSwiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUoW10sZnVuY3Rpb24oKXtyZXR1cm4gbi5obGpzfSkpfShmdW5jdGlvbihlKXtmdW5jdGlvbiBuKGUpe3JldHVybiBlLnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKX1mdW5jdGlvbiB0KGUpe3JldHVybiBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gcihlLG4pe3ZhciB0PWUmJmUuZXhlYyhuKTtyZXR1cm4gdCYmMD09PXQuaW5kZXh9ZnVuY3Rpb24gYShlKXtyZXR1cm4gay50ZXN0KGUpfWZ1bmN0aW9uIGkoZSl7dmFyIG4sdCxyLGksbz1lLmNsYXNzTmFtZSsiICI7aWYobys9ZS5wYXJlbnROb2RlP2UucGFyZW50Tm9kZS5jbGFzc05hbWU6IiIsdD1CLmV4ZWMobykpcmV0dXJuIHcodFsxXSk\/dFsxXToibm8taGlnaGxpZ2h0Ijtmb3Iobz1vLnNwbGl0KC9ccysvKSxuPTAscj1vLmxlbmd0aDtyPm47bisrKWlmKGk9b1tuXSxhKGkpfHx3KGkpKXJldHVybiBpfWZ1bmN0aW9uIG8oZSl7dmFyIG4sdD17fSxyPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtmb3IobiBpbiBlKXRbbl09ZVtuXTtyZXR1cm4gci5mb3JFYWNoKGZ1bmN0aW9uKGUpe2ZvcihuIGluIGUpdFtuXT1lW25dfSksdH1mdW5jdGlvbiB1KGUpe3ZhciBuPVtdO3JldHVybiBmdW5jdGlvbiByKGUsYSl7Zm9yKHZhciBpPWUuZmlyc3RDaGlsZDtpO2k9aS5uZXh0U2libGluZykzPT09aS5ub2RlVHlwZT9hKz1pLm5vZGVWYWx1ZS5sZW5ndGg6MT09PWkubm9kZVR5cGUmJihuLnB1c2goe2V2ZW50OiJzdGFydCIsb2Zmc2V0OmEsbm9kZTppfSksYT1yKGksYSksdChpKS5tYXRjaCgvYnJ8aHJ8aW1nfGlucHV0Lyl8fG4ucHVzaCh7ZXZlbnQ6InN0b3AiLG9mZnNldDphLG5vZGU6aX0pKTtyZXR1cm4gYX0oZSwwKSxufWZ1bmN0aW9uIGMoZSxyLGEpe2Z1bmN0aW9uIGkoKXtyZXR1cm4gZS5sZW5ndGgmJnIubGVuZ3RoP2VbMF0ub2Zmc2V0IT09clswXS5vZmZzZXQ\/ZVswXS5vZmZzZXQ8clswXS5vZmZzZXQ\/ZTpyOiJzdGFydCI9PT1yWzBdLmV2ZW50P2U6cjplLmxlbmd0aD9lOnJ9ZnVuY3Rpb24gbyhlKXtmdW5jdGlvbiByKGUpe3JldHVybiIgIitlLm5vZGVOYW1lKyc9IicrbihlLnZhbHVlKS5yZXBsYWNlKCciJywiJnF1b3Q7IikrJyInfXMrPSI8Iit0KGUpK0UubWFwLmNhbGwoZS5hdHRyaWJ1dGVzLHIpLmpvaW4oIiIpKyI+In1mdW5jdGlvbiB1KGUpe3MrPSI8LyIrdChlKSsiPiJ9ZnVuY3Rpb24gYyhlKXsoInN0YXJ0Ij09PWUuZXZlbnQ\/bzp1KShlLm5vZGUpfWZvcih2YXIgbD0wLHM9IiIsZj1bXTtlLmxlbmd0aHx8ci5sZW5ndGg7KXt2YXIgZz1pKCk7aWYocys9bihhLnN1YnN0cmluZyhsLGdbMF0ub2Zmc2V0KSksbD1nWzBdLm9mZnNldCxnPT09ZSl7Zi5yZXZlcnNlKCkuZm9yRWFjaCh1KTtkbyBjKGcuc3BsaWNlKDAsMSlbMF0pLGc9aSgpO3doaWxlKGc9PT1lJiZnLmxlbmd0aCYmZ1swXS5vZmZzZXQ9PT1sKTtmLnJldmVyc2UoKS5mb3JFYWNoKG8pfWVsc2Uic3RhcnQiPT09Z1swXS5ldmVudD9mLnB1c2goZ1swXS5ub2RlKTpmLnBvcCgpLGMoZy5zcGxpY2UoMCwxKVswXSl9cmV0dXJuIHMrbihhLnN1YnN0cihsKSl9ZnVuY3Rpb24gbChlKXtyZXR1cm4gZS52JiYhZS5jYWNoZWRfdmFyaWFudHMmJihlLmNhY2hlZF92YXJpYW50cz1lLnYubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBvKGUse3Y6bnVsbH0sbil9KSksZS5jYWNoZWRfdmFyaWFudHN8fGUuZVcmJltvKGUpXXx8W2VdfWZ1bmN0aW9uIHMoZSl7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZSYmZS5zb3VyY2V8fGV9ZnVuY3Rpb24gdCh0LHIpe3JldHVybiBuZXcgUmVnRXhwKG4odCksIm0iKyhlLmNJPyJpIjoiIikrKHI\/ImciOiIiKSl9ZnVuY3Rpb24gcihhLGkpe2lmKCFhLmNvbXBpbGVkKXtpZihhLmNvbXBpbGVkPSEwLGEuaz1hLmt8fGEuYkssYS5rKXt2YXIgbz17fSx1PWZ1bmN0aW9uKG4sdCl7ZS5jSSYmKHQ9dC50b0xvd2VyQ2FzZSgpKSx0LnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lLnNwbGl0KCJ8Iik7b1t0WzBdXT1bbix0WzFdP051bWJlcih0WzFdKToxXX0pfTsic3RyaW5nIj09dHlwZW9mIGEuaz91KCJrZXl3b3JkIixhLmspOngoYS5rKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3UoZSxhLmtbZV0pfSksYS5rPW99YS5sUj10KGEubHx8L1x3Ky8sITApLGkmJihhLmJLJiYoYS5iPSJcXGIoIithLmJLLnNwbGl0KCIgIikuam9pbigifCIpKyIpXFxiIiksYS5ifHwoYS5iPS9cQnxcYi8pLGEuYlI9dChhLmIpLGEuZXx8YS5lV3x8KGEuZT0vXEJ8XGIvKSxhLmUmJihhLmVSPXQoYS5lKSksYS50RT1uKGEuZSl8fCIiLGEuZVcmJmkudEUmJihhLnRFKz0oYS5lPyJ8IjoiIikraS50RSkpLGEuaSYmKGEuaVI9dChhLmkpKSxudWxsPT1hLnImJihhLnI9MSksYS5jfHwoYS5jPVtdKSxhLmM9QXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxhLmMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBsKCJzZWxmIj09PWU\/YTplKX0pKSxhLmMuZm9yRWFjaChmdW5jdGlvbihlKXtyKGUsYSl9KSxhLnN0YXJ0cyYmcihhLnN0YXJ0cyxpKTt2YXIgYz1hLmMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmJLPyJcXC4\/KCIrZS5iKyIpXFwuPyI6ZS5ifSkuY29uY2F0KFthLnRFLGEuaV0pLm1hcChuKS5maWx0ZXIoQm9vbGVhbik7YS50PWMubGVuZ3RoP3QoYy5qb2luKCJ8IiksITApOntleGVjOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9fX19cihlKX1mdW5jdGlvbiBmKGUsdCxhLGkpe2Z1bmN0aW9uIG8oZSxuKXt2YXIgdCxhO2Zvcih0PTAsYT1uLmMubGVuZ3RoO2E+dDt0KyspaWYocihuLmNbdF0uYlIsZSkpcmV0dXJuIG4uY1t0XX1mdW5jdGlvbiB1KGUsbil7aWYocihlLmVSLG4pKXtmb3IoO2UuZW5kc1BhcmVudCYmZS5wYXJlbnQ7KWU9ZS5wYXJlbnQ7cmV0dXJuIGV9cmV0dXJuIGUuZVc\/dShlLnBhcmVudCxuKTp2b2lkIDB9ZnVuY3Rpb24gYyhlLG4pe3JldHVybiFhJiZyKG4uaVIsZSl9ZnVuY3Rpb24gbChlLG4pe3ZhciB0PU4uY0k\/blswXS50b0xvd2VyQ2FzZSgpOm5bMF07cmV0dXJuIGUuay5oYXNPd25Qcm9wZXJ0eSh0KSYmZS5rW3RdfWZ1bmN0aW9uIHAoZSxuLHQscil7dmFyIGE9cj8iIjpJLmNsYXNzUHJlZml4LGk9JzxzcGFuIGNsYXNzPSInK2Esbz10PyIiOkM7cmV0dXJuIGkrPWUrJyI+JyxpK24rb31mdW5jdGlvbiBoKCl7dmFyIGUsdCxyLGE7aWYoIUUuaylyZXR1cm4gbihrKTtmb3IoYT0iIix0PTAsRS5sUi5sYXN0SW5kZXg9MCxyPUUubFIuZXhlYyhrKTtyOylhKz1uKGsuc3Vic3RyaW5nKHQsci5pbmRleCkpLGU9bChFLHIpLGU\/KEIrPWVbMV0sYSs9cChlWzBdLG4oclswXSkpKTphKz1uKHJbMF0pLHQ9RS5sUi5sYXN0SW5kZXgscj1FLmxSLmV4ZWMoayk7cmV0dXJuIGErbihrLnN1YnN0cih0KSl9ZnVuY3Rpb24gZCgpe3ZhciBlPSJzdHJpbmciPT10eXBlb2YgRS5zTDtpZihlJiYheVtFLnNMXSlyZXR1cm4gbihrKTt2YXIgdD1lP2YoRS5zTCxrLCEwLHhbRS5zTF0pOmcoayxFLnNMLmxlbmd0aD9FLnNMOnZvaWQgMCk7cmV0dXJuIEUucj4wJiYoQis9dC5yKSxlJiYoeFtFLnNMXT10LnRvcCkscCh0Lmxhbmd1YWdlLHQudmFsdWUsITEsITApfWZ1bmN0aW9uIGIoKXtMKz1udWxsIT1FLnNMP2QoKTpoKCksaz0iIn1mdW5jdGlvbiB2KGUpe0wrPWUuY04\/cChlLmNOLCIiLCEwKToiIixFPU9iamVjdC5jcmVhdGUoZSx7cGFyZW50Ont2YWx1ZTpFfX0pfWZ1bmN0aW9uIG0oZSxuKXtpZihrKz1lLG51bGw9PW4pcmV0dXJuIGIoKSwwO3ZhciB0PW8obixFKTtpZih0KXJldHVybiB0LnNraXA\/ays9bjoodC5lQiYmKGsrPW4pLGIoKSx0LnJCfHx0LmVCfHwoaz1uKSksdih0LG4pLHQuckI\/MDpuLmxlbmd0aDt2YXIgcj11KEUsbik7aWYocil7dmFyIGE9RTthLnNraXA\/ays9bjooYS5yRXx8YS5lRXx8KGsrPW4pLGIoKSxhLmVFJiYoaz1uKSk7ZG8gRS5jTiYmKEwrPUMpLEUuc2tpcHx8KEIrPUUuciksRT1FLnBhcmVudDt3aGlsZShFIT09ci5wYXJlbnQpO3JldHVybiByLnN0YXJ0cyYmdihyLnN0YXJ0cywiIiksYS5yRT8wOm4ubGVuZ3RofWlmKGMobixFKSl0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgbGV4ZW1lICInK24rJyIgZm9yIG1vZGUgIicrKEUuY058fCI8dW5uYW1lZD4iKSsnIicpO3JldHVybiBrKz1uLG4ubGVuZ3RofHwxfXZhciBOPXcoZSk7aWYoIU4pdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGxhbmd1YWdlOiAiJytlKyciJyk7cyhOKTt2YXIgUixFPWl8fE4seD17fSxMPSIiO2ZvcihSPUU7UiE9PU47Uj1SLnBhcmVudClSLmNOJiYoTD1wKFIuY04sIiIsITApK0wpO3ZhciBrPSIiLEI9MDt0cnl7Zm9yKHZhciBNLGosTz0wOzspe2lmKEUudC5sYXN0SW5kZXg9TyxNPUUudC5leGVjKHQpLCFNKWJyZWFrO2o9bSh0LnN1YnN0cmluZyhPLE0uaW5kZXgpLE1bMF0pLE89TS5pbmRleCtqfWZvcihtKHQuc3Vic3RyKE8pKSxSPUU7Ui5wYXJlbnQ7Uj1SLnBhcmVudClSLmNOJiYoTCs9Qyk7cmV0dXJue3I6Qix2YWx1ZTpMLGxhbmd1YWdlOmUsdG9wOkV9fWNhdGNoKFQpe2lmKFQubWVzc2FnZSYmLTEhPT1ULm1lc3NhZ2UuaW5kZXhPZigiSWxsZWdhbCIpKXJldHVybntyOjAsdmFsdWU6bih0KX07dGhyb3cgVH19ZnVuY3Rpb24gZyhlLHQpe3Q9dHx8SS5sYW5ndWFnZXN8fHgoeSk7dmFyIHI9e3I6MCx2YWx1ZTpuKGUpfSxhPXI7cmV0dXJuIHQuZmlsdGVyKHcpLmZvckVhY2goZnVuY3Rpb24obil7dmFyIHQ9ZihuLGUsITEpO3QubGFuZ3VhZ2U9bix0LnI+YS5yJiYoYT10KSx0LnI+ci5yJiYoYT1yLHI9dCl9KSxhLmxhbmd1YWdlJiYoci5zZWNvbmRfYmVzdD1hKSxyfWZ1bmN0aW9uIHAoZSl7cmV0dXJuIEkudGFiUmVwbGFjZXx8SS51c2VCUj9lLnJlcGxhY2UoTSxmdW5jdGlvbihlLG4pe3JldHVybiBJLnVzZUJSJiYiXG4iPT09ZT8iPGJyPiI6SS50YWJSZXBsYWNlP24ucmVwbGFjZSgvXHQvZyxJLnRhYlJlcGxhY2UpOiIifSk6ZX1mdW5jdGlvbiBoKGUsbix0KXt2YXIgcj1uP0xbbl06dCxhPVtlLnRyaW0oKV07cmV0dXJuIGUubWF0Y2goL1xiaGxqc1xiLyl8fGEucHVzaCgiaGxqcyIpLC0xPT09ZS5pbmRleE9mKHIpJiZhLnB1c2gociksYS5qb2luKCIgIikudHJpbSgpfWZ1bmN0aW9uIGQoZSl7dmFyIG4sdCxyLG8sbCxzPWkoZSk7YShzKXx8KEkudXNlQlI\/KG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiZGl2Iiksbi5pbm5lckhUTUw9ZS5pbm5lckhUTUwucmVwbGFjZSgvXG4vZywiIikucmVwbGFjZSgvPGJyWyBcL10qPi9nLCJcbiIpKTpuPWUsbD1uLnRleHRDb250ZW50LHI9cz9mKHMsbCwhMCk6ZyhsKSx0PXUobiksdC5sZW5ndGgmJihvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImRpdiIpLG8uaW5uZXJIVE1MPXIudmFsdWUsci52YWx1ZT1jKHQsdShvKSxsKSksci52YWx1ZT1wKHIudmFsdWUpLGUuaW5uZXJIVE1MPXIudmFsdWUsZS5jbGFzc05hbWU9aChlLmNsYXNzTmFtZSxzLHIubGFuZ3VhZ2UpLGUucmVzdWx0PXtsYW5ndWFnZTpyLmxhbmd1YWdlLHJlOnIucn0sci5zZWNvbmRfYmVzdCYmKGUuc2Vjb25kX2Jlc3Q9e2xhbmd1YWdlOnIuc2Vjb25kX2Jlc3QubGFuZ3VhZ2UscmU6ci5zZWNvbmRfYmVzdC5yfSkpfWZ1bmN0aW9uIGIoZSl7ST1vKEksZSl9ZnVuY3Rpb24gdigpe2lmKCF2LmNhbGxlZCl7di5jYWxsZWQ9ITA7dmFyIGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgicHJlIGNvZGUiKTtFLmZvckVhY2guY2FsbChlLGQpfX1mdW5jdGlvbiBtKCl7YWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsdiwhMSksYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsdiwhMSl9ZnVuY3Rpb24gTihuLHQpe3ZhciByPXlbbl09dChlKTtyLmFsaWFzZXMmJnIuYWxpYXNlcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe0xbZV09bn0pfWZ1bmN0aW9uIFIoKXtyZXR1cm4geCh5KX1mdW5jdGlvbiB3KGUpe3JldHVybiBlPShlfHwiIikudG9Mb3dlckNhc2UoKSx5W2VdfHx5W0xbZV1dfXZhciBFPVtdLHg9T2JqZWN0LmtleXMseT17fSxMPXt9LGs9L14obm8tP2hpZ2hsaWdodHxwbGFpbnx0ZXh0KSQvaSxCPS9cYmxhbmcoPzp1YWdlKT8tKFtcdy1dKylcYi9pLE09LygoXig8W14+XSs+fFx0fCkrfCg\/OlxuKSkpL2dtLEM9Ijwvc3Bhbj4iLEk9e2NsYXNzUHJlZml4OiJobGpzLSIsdGFiUmVwbGFjZTpudWxsLHVzZUJSOiExLGxhbmd1YWdlczp2b2lkIDB9O3JldHVybiBlLmhpZ2hsaWdodD1mLGUuaGlnaGxpZ2h0QXV0bz1nLGUuZml4TWFya3VwPXAsZS5oaWdobGlnaHRCbG9jaz1kLGUuY29uZmlndXJlPWIsZS5pbml0SGlnaGxpZ2h0aW5nPXYsZS5pbml0SGlnaGxpZ2h0aW5nT25Mb2FkPW0sZS5yZWdpc3Rlckxhbmd1YWdlPU4sZS5saXN0TGFuZ3VhZ2VzPVIsZS5nZXRMYW5ndWFnZT13LGUuaW5oZXJpdD1vLGUuSVI9IlthLXpBLVpdXFx3KiIsZS5VSVI9IlthLXpBLVpfXVxcdyoiLGUuTlI9IlxcYlxcZCsoXFwuXFxkKyk\/IixlLkNOUj0iKC0\/KShcXGIwW3hYXVthLWZBLUYwLTldK3woXFxiXFxkKyhcXC5cXGQqKT98XFwuXFxkKykoW2VFXVstK10\/XFxkKyk\/KSIsZS5CTlI9IlxcYigwYlswMV0rKSIsZS5SU1I9IiF8IT18IT09fCV8JT18JnwmJnwmPXxcXCp8XFwqPXxcXCt8XFwrPXwsfC18LT18Lz18L3w6fDt8PDx8PDw9fDw9fDx8PT09fD09fD18Pj4+PXw+Pj18Pj18Pj4+fD4+fD58XFw\/fFxcW3xcXHt8XFwofFxcXnxcXF49fFxcfHxcXHw9fFxcfFxcfHx+IixlLkJFPXtiOiJcXFxcW1xcc1xcU10iLHI6MH0sZS5BU009e2NOOiJzdHJpbmciLGI6IiciLGU6IiciLGk6IlxcbiIsYzpbZS5CRV19LGUuUVNNPXtjTjoic3RyaW5nIixiOiciJyxlOiciJyxpOiJcXG4iLGM6W2UuQkVdfSxlLlBXTT17YjovXGIoYXxhbnx0aGV8YXJlfEknbXxpc24ndHxkb24ndHxkb2Vzbid0fHdvbid0fGJ1dHxqdXN0fHNob3VsZHxwcmV0dHl8c2ltcGx5fGVub3VnaHxnb25uYXxnb2luZ3x3dGZ8c298c3VjaHx3aWxsfHlvdXx5b3VyfHRoZXl8bGlrZXxtb3JlKVxiL30sZS5DPWZ1bmN0aW9uKG4sdCxyKXt2YXIgYT1lLmluaGVyaXQoe2NOOiJjb21tZW50IixiOm4sZTp0LGM6W119LHJ8fHt9KTtyZXR1cm4gYS5jLnB1c2goZS5QV00pLGEuYy5wdXNoKHtjTjoiZG9jdGFnIixiOiIoPzpUT0RPfEZJWE1FfE5PVEV8QlVHfFhYWCk6IixyOjB9KSxhfSxlLkNMQ009ZS5DKCIvLyIsIiQiKSxlLkNCQ009ZS5DKCIvXFwqIiwiXFwqLyIpLGUuSENNPWUuQygiIyIsIiQiKSxlLk5NPXtjTjoibnVtYmVyIixiOmUuTlIscjowfSxlLkNOTT17Y046Im51bWJlciIsYjplLkNOUixyOjB9LGUuQk5NPXtjTjoibnVtYmVyIixiOmUuQk5SLHI6MH0sZS5DU1NOTT17Y046Im51bWJlciIsYjplLk5SKyIoJXxlbXxleHxjaHxyZW18dnd8dmh8dm1pbnx2bWF4fGNtfG1tfGlufHB0fHBjfHB4fGRlZ3xncmFkfHJhZHx0dXJufHN8bXN8SHp8a0h6fGRwaXxkcGNtfGRwcHgpPyIscjowfSxlLlJNPXtjTjoicmVnZXhwIixiOi9cLy8sZTovXC9bZ2ltdXldKi8saTovXG4vLGM6W2UuQkUse2I6L1xbLyxlOi9cXS8scjowLGM6W2UuQkVdfV19LGUuVE09e2NOOiJ0aXRsZSIsYjplLklSLHI6MH0sZS5VVE09e2NOOiJ0aXRsZSIsYjplLlVJUixyOjB9LGUuTUVUSE9EX0dVQVJEPXtiOiJcXC5cXHMqIitlLlVJUixyOjB9LGV9KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoInNxbCIsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5DKCItLSIsIiQiKTtyZXR1cm57Y0k6ITAsaTovWzw+e30qI10vLGM6W3tiSzoiYmVnaW4gZW5kIHN0YXJ0IGNvbW1pdCByb2xsYmFjayBzYXZlcG9pbnQgbG9jayBhbHRlciBjcmVhdGUgZHJvcCByZW5hbWUgY2FsbCBkZWxldGUgZG8gaGFuZGxlciBpbnNlcnQgbG9hZCByZXBsYWNlIHNlbGVjdCB0cnVuY2F0ZSB1cGRhdGUgc2V0IHNob3cgcHJhZ21hIGdyYW50IG1lcmdlIGRlc2NyaWJlIHVzZSBleHBsYWluIGhlbHAgZGVjbGFyZSBwcmVwYXJlIGV4ZWN1dGUgZGVhbGxvY2F0ZSByZWxlYXNlIHVubG9jayBwdXJnZSByZXNldCBjaGFuZ2Ugc3RvcCBhbmFseXplIGNhY2hlIGZsdXNoIG9wdGltaXplIHJlcGFpciBraWxsIGluc3RhbGwgdW5pbnN0YWxsIGNoZWNrc3VtIHJlc3RvcmUgY2hlY2sgYmFja3VwIHJldm9rZSBjb21tZW50IixlOi87LyxlVzohMCxsOi9bXHdcLl0rLyxrOntrZXl3b3JkOiJhYm9ydCBhYnMgYWJzb2x1dGUgYWNjIGFjY2UgYWNjZXAgYWNjZXB0IGFjY2VzcyBhY2Nlc3NlZCBhY2Nlc3NpYmxlIGFjY291bnQgYWNvcyBhY3Rpb24gYWN0aXZhdGUgYWRkIGFkZHRpbWUgYWRtaW4gYWRtaW5pc3RlciBhZHZhbmNlZCBhZHZpc2UgYWVzX2RlY3J5cHQgYWVzX2VuY3J5cHQgYWZ0ZXIgYWdlbnQgYWdncmVnYXRlIGFsaSBhbGlhIGFsaWFzIGFsbG9jYXRlIGFsbG93IGFsdGVyIGFsd2F5cyBhbmFseXplIGFuY2lsbGFyeSBhbmQgYW55IGFueWRhdGEgYW55ZGF0YXNldCBhbnlzY2hlbWEgYW55dHlwZSBhcHBseSBhcmNoaXZlIGFyY2hpdmVkIGFyY2hpdmVsb2cgYXJlIGFzIGFzYyBhc2NpaSBhc2luIGFzc2VtYmx5IGFzc2VydGlvbiBhc3NvY2lhdGUgYXN5bmNocm9ub3VzIGF0IGF0YW4gYXRuMiBhdHRyIGF0dHJpIGF0dHJpYiBhdHRyaWJ1IGF0dHJpYnV0IGF0dHJpYnV0ZSBhdHRyaWJ1dGVzIGF1ZGl0IGF1dGhlbnRpY2F0ZWQgYXV0aGVudGljYXRpb24gYXV0aGlkIGF1dGhvcnMgYXV0byBhdXRvYWxsb2NhdGUgYXV0b2RibGluayBhdXRvZXh0ZW5kIGF1dG9tYXRpYyBhdmFpbGFiaWxpdHkgYXZnIGJhY2t1cCBiYWRmaWxlIGJhc2ljZmlsZSBiZWZvcmUgYmVnaW4gYmVnaW5uaW5nIGJlbmNobWFyayBiZXR3ZWVuIGJmaWxlIGJmaWxlX2Jhc2UgYmlnIGJpZ2ZpbGUgYmluIGJpbmFyeV9kb3VibGUgYmluYXJ5X2Zsb2F0IGJpbmxvZyBiaXRfYW5kIGJpdF9jb3VudCBiaXRfbGVuZ3RoIGJpdF9vciBiaXRfeG9yIGJpdG1hcCBibG9iX2Jhc2UgYmxvY2sgYmxvY2tzaXplIGJvZHkgYm90aCBib3VuZCBidWZmZXJfY2FjaGUgYnVmZmVyX3Bvb2wgYnVpbGQgYnVsayBieSBieXRlIGJ5dGVvcmRlcm1hcmsgYnl0ZXMgY2FjaGUgY2FjaGluZyBjYWxsIGNhbGxpbmcgY2FuY2VsIGNhcGFjaXR5IGNhc2NhZGUgY2FzY2FkZWQgY2FzZSBjYXN0IGNhdGFsb2cgY2F0ZWdvcnkgY2VpbCBjZWlsaW5nIGNoYWluIGNoYW5nZSBjaGFuZ2VkIGNoYXJfYmFzZSBjaGFyX2xlbmd0aCBjaGFyYWN0ZXJfbGVuZ3RoIGNoYXJhY3RlcnMgY2hhcmFjdGVyc2V0IGNoYXJpbmRleCBjaGFyc2V0IGNoYXJzZXRmb3JtIGNoYXJzZXRpZCBjaGVjayBjaGVja3N1bSBjaGVja3N1bV9hZ2cgY2hpbGQgY2hvb3NlIGNociBjaHVuayBjbGFzcyBjbGVhbnVwIGNsZWFyIGNsaWVudCBjbG9iIGNsb2JfYmFzZSBjbG9uZSBjbG9zZSBjbHVzdGVyX2lkIGNsdXN0ZXJfcHJvYmFiaWxpdHkgY2x1c3Rlcl9zZXQgY2x1c3RlcmluZyBjb2FsZXNjZSBjb2VyY2liaWxpdHkgY29sIGNvbGxhdGUgY29sbGF0aW9uIGNvbGxlY3QgY29sdSBjb2x1bSBjb2x1bW4gY29sdW1uX3ZhbHVlIGNvbHVtbnMgY29sdW1uc191cGRhdGVkIGNvbW1lbnQgY29tbWl0IGNvbXBhY3QgY29tcGF0aWJpbGl0eSBjb21waWxlZCBjb21wbGV0ZSBjb21wb3NpdGVfbGltaXQgY29tcG91bmQgY29tcHJlc3MgY29tcHV0ZSBjb25jYXQgY29uY2F0X3dzIGNvbmN1cnJlbnQgY29uZmlybSBjb25uIGNvbm5lYyBjb25uZWN0IGNvbm5lY3RfYnlfaXNjeWNsZSBjb25uZWN0X2J5X2lzbGVhZiBjb25uZWN0X2J5X3Jvb3QgY29ubmVjdF90aW1lIGNvbm5lY3Rpb24gY29uc2lkZXIgY29uc2lzdGVudCBjb25zdGFudCBjb25zdHJhaW50IGNvbnN0cmFpbnRzIGNvbnN0cnVjdG9yIGNvbnRhaW5lciBjb250ZW50IGNvbnRlbnRzIGNvbnRleHQgY29udHJpYnV0b3JzIGNvbnRyb2xmaWxlIGNvbnYgY29udmVydCBjb252ZXJ0X3R6IGNvcnIgY29ycl9rIGNvcnJfcyBjb3JyZXNwb25kaW5nIGNvcnJ1cHRpb24gY29zIGNvc3QgY291bnQgY291bnRfYmlnIGNvdW50ZWQgY292YXJfcG9wIGNvdmFyX3NhbXAgY3B1X3Blcl9jYWxsIGNwdV9wZXJfc2Vzc2lvbiBjcmMzMiBjcmVhdGUgY3JlYXRpb24gY3JpdGljYWwgY3Jvc3MgY3ViZSBjdW1lX2Rpc3QgY3VyZGF0ZSBjdXJyZW50IGN1cnJlbnRfZGF0ZSBjdXJyZW50X3RpbWUgY3VycmVudF90aW1lc3RhbXAgY3VycmVudF91c2VyIGN1cnNvciBjdXJ0aW1lIGN1c3RvbWRhdHVtIGN5Y2xlIGRhdGEgZGF0YWJhc2UgZGF0YWJhc2VzIGRhdGFmaWxlIGRhdGFmaWxlcyBkYXRhbGVuZ3RoIGRhdGVfYWRkIGRhdGVfY2FjaGUgZGF0ZV9mb3JtYXQgZGF0ZV9zdWIgZGF0ZWFkZCBkYXRlZGlmZiBkYXRlZnJvbXBhcnRzIGRhdGVuYW1lIGRhdGVwYXJ0IGRhdGV0aW1lMmZyb21wYXJ0cyBkYXkgZGF5X3RvX3NlY29uZCBkYXluYW1lIGRheW9mbW9udGggZGF5b2Z3ZWVrIGRheW9meWVhciBkYXlzIGRiX3JvbGVfY2hhbmdlIGRidGltZXpvbmUgZGRsIGRlYWxsb2NhdGUgZGVjbGFyZSBkZWNvZGUgZGVjb21wb3NlIGRlY3JlbWVudCBkZWNyeXB0IGRlZHVwbGljYXRlIGRlZiBkZWZhIGRlZmF1IGRlZmF1bCBkZWZhdWx0IGRlZmF1bHRzIGRlZmVycmVkIGRlZmkgZGVmaW4gZGVmaW5lIGRlZ3JlZXMgZGVsYXllZCBkZWxlZ2F0ZSBkZWxldGUgZGVsZXRlX2FsbCBkZWxpbWl0ZWQgZGVtYW5kIGRlbnNlX3JhbmsgZGVwdGggZGVxdWV1ZSBkZXNfZGVjcnlwdCBkZXNfZW5jcnlwdCBkZXNfa2V5X2ZpbGUgZGVzYyBkZXNjciBkZXNjcmkgZGVzY3JpYiBkZXNjcmliZSBkZXNjcmlwdG9yIGRldGVybWluaXN0aWMgZGlhZ25vc3RpY3MgZGlmZmVyZW5jZSBkaW1lbnNpb24gZGlyZWN0X2xvYWQgZGlyZWN0b3J5IGRpc2FibGUgZGlzYWJsZV9hbGwgZGlzYWxsb3cgZGlzYXNzb2NpYXRlIGRpc2NhcmRmaWxlIGRpc2Nvbm5lY3QgZGlza2dyb3VwIGRpc3RpbmN0IGRpc3RpbmN0cm93IGRpc3RyaWJ1dGUgZGlzdHJpYnV0ZWQgZGl2IGRvIGRvY3VtZW50IGRvbWFpbiBkb3RuZXQgZG91YmxlIGRvd25ncmFkZSBkcm9wIGR1bXBmaWxlIGR1cGxpY2F0ZSBkdXJhdGlvbiBlYWNoIGVkaXRpb24gZWRpdGlvbmFibGUgZWRpdGlvbnMgZWxlbWVudCBlbGxpcHNpcyBlbHNlIGVsc2lmIGVsdCBlbXB0eSBlbmFibGUgZW5hYmxlX2FsbCBlbmNsb3NlZCBlbmNvZGUgZW5jb2RpbmcgZW5jcnlwdCBlbmQgZW5kLWV4ZWMgZW5kaWFuIGVuZm9yY2VkIGVuZ2luZSBlbmdpbmVzIGVucXVldWUgZW50ZXJwcmlzZSBlbnRpdHllc2NhcGluZyBlb21vbnRoIGVycm9yIGVycm9ycyBlc2NhcGVkIGV2YWxuYW1lIGV2YWx1YXRlIGV2ZW50IGV2ZW50ZGF0YSBldmVudHMgZXhjZXB0IGV4Y2VwdGlvbiBleGNlcHRpb25zIGV4Y2hhbmdlIGV4Y2x1ZGUgZXhjbHVkaW5nIGV4ZWN1IGV4ZWN1dCBleGVjdXRlIGV4ZW1wdCBleGlzdHMgZXhpdCBleHAgZXhwaXJlIGV4cGxhaW4gZXhwb3J0IGV4cG9ydF9zZXQgZXh0ZW5kZWQgZXh0ZW50IGV4dGVybmFsIGV4dGVybmFsXzEgZXh0ZXJuYWxfMiBleHRlcm5hbGx5IGV4dHJhY3QgZmFpbGVkIGZhaWxlZF9sb2dpbl9hdHRlbXB0cyBmYWlsb3ZlciBmYWlsdXJlIGZhciBmYXN0IGZlYXR1cmVfc2V0IGZlYXR1cmVfdmFsdWUgZmV0Y2ggZmllbGQgZmllbGRzIGZpbGUgZmlsZV9uYW1lX2NvbnZlcnQgZmlsZXN5c3RlbV9saWtlX2xvZ2dpbmcgZmluYWwgZmluaXNoIGZpcnN0IGZpcnN0X3ZhbHVlIGZpeGVkIGZsYXNoX2NhY2hlIGZsYXNoYmFjayBmbG9vciBmbHVzaCBmb2xsb3dpbmcgZm9sbG93cyBmb3IgZm9yYWxsIGZvcmNlIGZvcm0gZm9ybWEgZm9ybWF0IGZvdW5kIGZvdW5kX3Jvd3MgZnJlZWxpc3QgZnJlZWxpc3RzIGZyZWVwb29scyBmcmVzaCBmcm9tIGZyb21fYmFzZTY0IGZyb21fZGF5cyBmdHAgZnVsbCBmdW5jdGlvbiBnZW5lcmFsIGdlbmVyYXRlZCBnZXQgZ2V0X2Zvcm1hdCBnZXRfbG9jayBnZXRkYXRlIGdldHV0Y2RhdGUgZ2xvYmFsIGdsb2JhbF9uYW1lIGdsb2JhbGx5IGdvIGdvdG8gZ3JhbnQgZ3JhbnRzIGdyZWF0ZXN0IGdyb3VwIGdyb3VwX2NvbmNhdCBncm91cF9pZCBncm91cGluZyBncm91cGluZ19pZCBncm91cHMgZ3RpZF9zdWJ0cmFjdCBndWFyYW50ZWUgZ3VhcmQgaGFuZGxlciBoYXNoIGhhc2hrZXlzIGhhdmluZyBoZWEgaGVhZCBoZWFkaSBoZWFkaW4gaGVhZGluZyBoZWFwIGhlbHAgaGV4IGhpZXJhcmNoeSBoaWdoIGhpZ2hfcHJpb3JpdHkgaG9zdHMgaG91ciBodHRwIGlkIGlkZW50X2N1cnJlbnQgaWRlbnRfaW5jciBpZGVudF9zZWVkIGlkZW50aWZpZWQgaWRlbnRpdHkgaWRsZV90aW1lIGlmIGlmbnVsbCBpZ25vcmUgaWlmIGlsaWtlIGlsbSBpbW1lZGlhdGUgaW1wb3J0IGluIGluY2x1ZGUgaW5jbHVkaW5nIGluY3JlbWVudCBpbmRleCBpbmRleGVzIGluZGV4aW5nIGluZGV4dHlwZSBpbmRpY2F0b3IgaW5kaWNlcyBpbmV0Nl9hdG9uIGluZXQ2X250b2EgaW5ldF9hdG9uIGluZXRfbnRvYSBpbmZpbGUgaW5pdGlhbCBpbml0aWFsaXplZCBpbml0aWFsbHkgaW5pdHJhbnMgaW5tZW1vcnkgaW5uZXIgaW5ub2RiIGlucHV0IGluc2VydCBpbnN0YWxsIGluc3RhbmNlIGluc3RhbnRpYWJsZSBpbnN0ciBpbnRlcmZhY2UgaW50ZXJsZWF2ZWQgaW50ZXJzZWN0IGludG8gaW52YWxpZGF0ZSBpbnZpc2libGUgaXMgaXNfZnJlZV9sb2NrIGlzX2lwdjQgaXNfaXB2NF9jb21wYXQgaXNfbm90IGlzX25vdF9udWxsIGlzX3VzZWRfbG9jayBpc2RhdGUgaXNudWxsIGlzb2xhdGlvbiBpdGVyYXRlIGphdmEgam9pbiBqc29uIGpzb25fZXhpc3RzIGtlZXAga2VlcF9kdXBsaWNhdGVzIGtleSBrZXlzIGtpbGwgbGFuZ3VhZ2UgbGFyZ2UgbGFzdCBsYXN0X2RheSBsYXN0X2luc2VydF9pZCBsYXN0X3ZhbHVlIGxheCBsY2FzZSBsZWFkIGxlYWRpbmcgbGVhc3QgbGVhdmVzIGxlZnQgbGVuIGxlbmdodCBsZW5ndGggbGVzcyBsZXZlbCBsZXZlbHMgbGlicmFyeSBsaWtlIGxpa2UyIGxpa2U0IGxpa2VjIGxpbWl0IGxpbmVzIGxpbmsgbGlzdCBsaXN0YWdnIGxpdHRsZSBsbiBsb2FkIGxvYWRfZmlsZSBsb2IgbG9icyBsb2NhbCBsb2NhbHRpbWUgbG9jYWx0aW1lc3RhbXAgbG9jYXRlIGxvY2F0b3IgbG9jayBsb2NrZWQgbG9nIGxvZzEwIGxvZzIgbG9nZmlsZSBsb2dmaWxlcyBsb2dnaW5nIGxvZ2ljYWwgbG9naWNhbF9yZWFkc19wZXJfY2FsbCBsb2dvZmYgbG9nb24gbG9ncyBsb25nIGxvb3AgbG93IGxvd19wcmlvcml0eSBsb3dlciBscGFkIGxydHJpbSBsdHJpbSBtYWluIG1ha2Vfc2V0IG1ha2VkYXRlIG1ha2V0aW1lIG1hbmFnZWQgbWFuYWdlbWVudCBtYW51YWwgbWFwIG1hcHBpbmcgbWFzayBtYXN0ZXIgbWFzdGVyX3Bvc193YWl0IG1hdGNoIG1hdGNoZWQgbWF0ZXJpYWxpemVkIG1heCBtYXhleHRlbnRzIG1heGltaXplIG1heGluc3RhbmNlcyBtYXhsZW4gbWF4bG9nZmlsZXMgbWF4bG9naGlzdG9yeSBtYXhsb2dtZW1iZXJzIG1heHNpemUgbWF4dHJhbnMgbWQ1IG1lYXN1cmVzIG1lZGlhbiBtZWRpdW0gbWVtYmVyIG1lbWNvbXByZXNzIG1lbW9yeSBtZXJnZSBtaWNyb3NlY29uZCBtaWQgbWlncmF0aW9uIG1pbiBtaW5leHRlbnRzIG1pbmltdW0gbWluaW5nIG1pbnVzIG1pbnV0ZSBtaW52YWx1ZSBtaXNzaW5nIG1vZCBtb2RlIG1vZGVsIG1vZGlmaWNhdGlvbiBtb2RpZnkgbW9kdWxlIG1vbml0b3JpbmcgbW9udGggbW9udGhzIG1vdW50IG1vdmUgbW92ZW1lbnQgbXVsdGlzZXQgbXV0ZXggbmFtZSBuYW1lX2NvbnN0IG5hbWVzIG5hbiBuYXRpb25hbCBuYXRpdmUgbmF0dXJhbCBuYXYgbmNoYXIgbmNsb2IgbmVzdGVkIG5ldmVyIG5ldyBuZXdsaW5lIG5leHQgbmV4dHZhbCBubyBub193cml0ZV90b19iaW5sb2cgbm9hcmNoaXZlbG9nIG5vYXVkaXQgbm9iYWRmaWxlIG5vY2hlY2sgbm9jb21wcmVzcyBub2NvcHkgbm9jeWNsZSBub2RlbGF5IG5vZGlzY2FyZGZpbGUgbm9lbnRpdHllc2NhcGluZyBub2d1YXJhbnRlZSBub2tlZXAgbm9sb2dmaWxlIG5vbWFwcGluZyBub21heHZhbHVlIG5vbWluaW1pemUgbm9taW52YWx1ZSBub21vbml0b3Jpbmcgbm9uZSBub25lZGl0aW9uYWJsZSBub25zY2hlbWEgbm9vcmRlciBub3ByIG5vcHJvIG5vcHJvbSBub3Byb21wIG5vcHJvbXB0IG5vcmVseSBub3Jlc2V0bG9ncyBub3JldmVyc2Ugbm9ybWFsIG5vcm93ZGVwZW5kZW5jaWVzIG5vc2NoZW1hY2hlY2sgbm9zd2l0Y2ggbm90IG5vdGhpbmcgbm90aWNlIG5vdHJpbSBub3ZhbGlkYXRlIG5vdyBub3dhaXQgbnRoX3ZhbHVlIG51bGxpZiBudWxscyBudW0gbnVtYiBudW1iZSBudmFyY2hhciBudmFyY2hhcjIgb2JqZWN0IG9jaWNvbGwgb2NpZGF0ZSBvY2lkYXRldGltZSBvY2lkdXJhdGlvbiBvY2lpbnRlcnZhbCBvY2lsb2Jsb2NhdG9yIG9jaW51bWJlciBvY2lyZWYgb2NpcmVmY3Vyc29yIG9jaXJvd2lkIG9jaXN0cmluZyBvY2l0eXBlIG9jdCBvY3RldF9sZW5ndGggb2Ygb2ZmIG9mZmxpbmUgb2Zmc2V0IG9pZCBvaWRpbmRleCBvbGQgb24gb25saW5lIG9ubHkgb3BhcXVlIG9wZW4gb3BlcmF0aW9ucyBvcGVyYXRvciBvcHRpbWFsIG9wdGltaXplIG9wdGlvbiBvcHRpb25hbGx5IG9yIG9yYWNsZSBvcmFjbGVfZGF0ZSBvcmFkYXRhIG9yZCBvcmRhdWRpbyBvcmRkaWNvbSBvcmRkb2Mgb3JkZXIgb3JkaW1hZ2Ugb3JkaW5hbGl0eSBvcmR2aWRlbyBvcmdhbml6YXRpb24gb3JsYW55IG9ybHZhcnkgb3V0IG91dGVyIG91dGZpbGUgb3V0bGluZSBvdXRwdXQgb3ZlciBvdmVyZmxvdyBvdmVycmlkaW5nIHBhY2thZ2UgcGFkIHBhcmFsbGVsIHBhcmFsbGVsX2VuYWJsZSBwYXJhbWV0ZXJzIHBhcmVudCBwYXJzZSBwYXJ0aWFsIHBhcnRpdGlvbiBwYXJ0aXRpb25zIHBhc2NhbCBwYXNzaW5nIHBhc3N3b3JkIHBhc3N3b3JkX2dyYWNlX3RpbWUgcGFzc3dvcmRfbG9ja190aW1lIHBhc3N3b3JkX3JldXNlX21heCBwYXNzd29yZF9yZXVzZV90aW1lIHBhc3N3b3JkX3ZlcmlmeV9mdW5jdGlvbiBwYXRjaCBwYXRoIHBhdGluZGV4IHBjdGluY3JlYXNlIHBjdHRocmVzaG9sZCBwY3R1c2VkIHBjdHZlcnNpb24gcGVyY2VudCBwZXJjZW50X3JhbmsgcGVyY2VudGlsZV9jb250IHBlcmNlbnRpbGVfZGlzYyBwZXJmb3JtYW5jZSBwZXJpb2QgcGVyaW9kX2FkZCBwZXJpb2RfZGlmZiBwZXJtYW5lbnQgcGh5c2ljYWwgcGkgcGlwZSBwaXBlbGluZWQgcGl2b3QgcGx1Z2dhYmxlIHBsdWdpbiBwb2xpY3kgcG9zaXRpb24gcG9zdF90cmFuc2FjdGlvbiBwb3cgcG93ZXIgcHJhZ21hIHByZWJ1aWx0IHByZWNlZGVzIHByZWNlZGluZyBwcmVjaXNpb24gcHJlZGljdGlvbiBwcmVkaWN0aW9uX2Nvc3QgcHJlZGljdGlvbl9kZXRhaWxzIHByZWRpY3Rpb25fcHJvYmFiaWxpdHkgcHJlZGljdGlvbl9zZXQgcHJlcGFyZSBwcmVzZW50IHByZXNlcnZlIHByaW9yIHByaW9yaXR5IHByaXZhdGUgcHJpdmF0ZV9zZ2EgcHJpdmlsZWdlcyBwcm9jZWR1cmFsIHByb2NlZHVyZSBwcm9jZWR1cmVfYW5hbHl6ZSBwcm9jZXNzbGlzdCBwcm9maWxlcyBwcm9qZWN0IHByb21wdCBwcm90ZWN0aW9uIHB1YmxpYyBwdWJsaXNoaW5nc2VydmVybmFtZSBwdXJnZSBxdWFydGVyIHF1ZXJ5IHF1aWNrIHF1aWVzY2UgcXVvdGEgcXVvdGVuYW1lIHJhZGlhbnMgcmFpc2UgcmFuZCByYW5nZSByYW5rIHJhdyByZWFkIHJlYWRzIHJlYWRzaXplIHJlYnVpbGQgcmVjb3JkIHJlY29yZHMgcmVjb3ZlciByZWNvdmVyeSByZWN1cnNpdmUgcmVjeWNsZSByZWRvIHJlZHVjZWQgcmVmIHJlZmVyZW5jZSByZWZlcmVuY2VkIHJlZmVyZW5jZXMgcmVmZXJlbmNpbmcgcmVmcmVzaCByZWdleHBfbGlrZSByZWdpc3RlciByZWdyX2F2Z3ggcmVncl9hdmd5IHJlZ3JfY291bnQgcmVncl9pbnRlcmNlcHQgcmVncl9yMiByZWdyX3Nsb3BlIHJlZ3Jfc3h4IHJlZ3Jfc3h5IHJlamVjdCByZWtleSByZWxhdGlvbmFsIHJlbGF0aXZlIHJlbGF5bG9nIHJlbGVhc2UgcmVsZWFzZV9sb2NrIHJlbGllc19vbiByZWxvY2F0ZSByZWx5IHJlbSByZW1haW5kZXIgcmVuYW1lIHJlcGFpciByZXBlYXQgcmVwbGFjZSByZXBsaWNhdGUgcmVwbGljYXRpb24gcmVxdWlyZWQgcmVzZXQgcmVzZXRsb2dzIHJlc2l6ZSByZXNvdXJjZSByZXNwZWN0IHJlc3RvcmUgcmVzdHJpY3RlZCByZXN1bHQgcmVzdWx0X2NhY2hlIHJlc3VtYWJsZSByZXN1bWUgcmV0ZW50aW9uIHJldHVybiByZXR1cm5pbmcgcmV0dXJucyByZXVzZSByZXZlcnNlIHJldm9rZSByaWdodCBybGlrZSByb2xlIHJvbGVzIHJvbGxiYWNrIHJvbGxpbmcgcm9sbHVwIHJvdW5kIHJvdyByb3dfY291bnQgcm93ZGVwZW5kZW5jaWVzIHJvd2lkIHJvd251bSByb3dzIHJ0cmltIHJ1bGVzIHNhZmUgc2FsdCBzYW1wbGUgc2F2ZSBzYXZlcG9pbnQgc2IxIHNiMiBzYjQgc2NhbiBzY2hlbWEgc2NoZW1hY2hlY2sgc2NuIHNjb3BlIHNjcm9sbCBzZG9fZ2VvcmFzdGVyIHNkb190b3BvX2dlb21ldHJ5IHNlYXJjaCBzZWNfdG9fdGltZSBzZWNvbmQgc2VjdGlvbiBzZWN1cmVmaWxlIHNlY3VyaXR5IHNlZWQgc2VnbWVudCBzZWxlY3Qgc2VsZiBzZXF1ZW5jZSBzZXF1ZW50aWFsIHNlcmlhbGl6YWJsZSBzZXJ2ZXIgc2VydmVyZXJyb3Igc2Vzc2lvbiBzZXNzaW9uX3VzZXIgc2Vzc2lvbnNfcGVyX3VzZXIgc2V0IHNldHMgc2V0dGluZ3Mgc2hhIHNoYTEgc2hhMiBzaGFyZSBzaGFyZWQgc2hhcmVkX3Bvb2wgc2hvcnQgc2hvdyBzaHJpbmsgc2h1dGRvd24gc2lfYXZlcmFnZWNvbG9yIHNpX2NvbG9yaGlzdG9ncmFtIHNpX2ZlYXR1cmVsaXN0IHNpX3Bvc2l0aW9uYWxjb2xvciBzaV9zdGlsbGltYWdlIHNpX3RleHR1cmUgc2libGluZ3Mgc2lkIHNpZ24gc2luIHNpemUgc2l6ZV90IHNpemVzIHNraXAgc2xhdmUgc2xlZXAgc21hbGxkYXRldGltZWZyb21wYXJ0cyBzbWFsbGZpbGUgc25hcHNob3Qgc29tZSBzb25hbWUgc29ydCBzb3VuZGV4IHNvdXJjZSBzcGFjZSBzcGFyc2Ugc3BmaWxlIHNwbGl0IHNxbCBzcWxfYmlnX3Jlc3VsdCBzcWxfYnVmZmVyX3Jlc3VsdCBzcWxfY2FjaGUgc3FsX2NhbGNfZm91bmRfcm93cyBzcWxfc21hbGxfcmVzdWx0IHNxbF92YXJpYW50X3Byb3BlcnR5IHNxbGNvZGUgc3FsZGF0YSBzcWxlcnJvciBzcWxuYW1lIHNxbHN0YXRlIHNxcnQgc3F1YXJlIHN0YW5kYWxvbmUgc3RhbmRieSBzdGFydCBzdGFydGluZyBzdGFydHVwIHN0YXRlbWVudCBzdGF0aWMgc3RhdGlzdGljcyBzdGF0c19iaW5vbWlhbF90ZXN0IHN0YXRzX2Nyb3NzdGFiIHN0YXRzX2tzX3Rlc3Qgc3RhdHNfbW9kZSBzdGF0c19td190ZXN0IHN0YXRzX29uZV93YXlfYW5vdmEgc3RhdHNfdF90ZXN0XyBzdGF0c190X3Rlc3RfaW5kZXAgc3RhdHNfdF90ZXN0X29uZSBzdGF0c190X3Rlc3RfcGFpcmVkIHN0YXRzX3dzcl90ZXN0IHN0YXR1cyBzdGQgc3RkZGV2IHN0ZGRldl9wb3Agc3RkZGV2X3NhbXAgc3RkZXYgc3RvcCBzdG9yYWdlIHN0b3JlIHN0b3JlZCBzdHIgc3RyX3RvX2RhdGUgc3RyYWlnaHRfam9pbiBzdHJjbXAgc3RyaWN0IHN0cmluZyBzdHJ1Y3Qgc3R1ZmYgc3R5bGUgc3ViZGF0ZSBzdWJwYXJ0aXRpb24gc3VicGFydGl0aW9ucyBzdWJzdGl0dXRhYmxlIHN1YnN0ciBzdWJzdHJpbmcgc3VidGltZSBzdWJ0cmluZ19pbmRleCBzdWJ0eXBlIHN1Y2Nlc3Mgc3VtIHN1c3BlbmQgc3dpdGNoIHN3aXRjaG9mZnNldCBzd2l0Y2hvdmVyIHN5bmMgc3luY2hyb25vdXMgc3lub255bSBzeXMgc3lzX3htbGFnZyBzeXNhc20gc3lzYXV4IHN5c2RhdGUgc3lzZGF0ZXRpbWVvZmZzZXQgc3lzZGJhIHN5c29wZXIgc3lzdGVtIHN5c3RlbV91c2VyIHN5c3V0Y2RhdGV0aW1lIHRhYmxlIHRhYmxlcyB0YWJsZXNwYWNlIHRhbiB0ZG8gdGVtcGxhdGUgdGVtcG9yYXJ5IHRlcm1pbmF0ZWQgdGVydGlhcnlfd2VpZ2h0cyB0ZXN0IHRoYW4gdGhlbiB0aHJlYWQgdGhyb3VnaCB0aWVyIHRpZXMgdGltZSB0aW1lX2Zvcm1hdCB0aW1lX3pvbmUgdGltZWRpZmYgdGltZWZyb21wYXJ0cyB0aW1lb3V0IHRpbWVzdGFtcCB0aW1lc3RhbXBhZGQgdGltZXN0YW1wZGlmZiB0aW1lem9uZV9hYmJyIHRpbWV6b25lX21pbnV0ZSB0aW1lem9uZV9yZWdpb24gdG8gdG9fYmFzZTY0IHRvX2RhdGUgdG9fZGF5cyB0b19zZWNvbmRzIHRvZGF0ZXRpbWVvZmZzZXQgdHJhY2UgdHJhY2tpbmcgdHJhbnNhY3Rpb24gdHJhbnNhY3Rpb25hbCB0cmFuc2xhdGUgdHJhbnNsYXRpb24gdHJlYXQgdHJpZ2dlciB0cmlnZ2VyX25lc3RsZXZlbCB0cmlnZ2VycyB0cmltIHRydW5jYXRlIHRyeV9jYXN0IHRyeV9jb252ZXJ0IHRyeV9wYXJzZSB0eXBlIHViMSB1YjIgdWI0IHVjYXNlIHVuYXJjaGl2ZWQgdW5ib3VuZGVkIHVuY29tcHJlc3MgdW5kZXIgdW5kbyB1bmhleCB1bmljb2RlIHVuaWZvcm0gdW5pbnN0YWxsIHVuaW9uIHVuaXF1ZSB1bml4X3RpbWVzdGFtcCB1bmtub3duIHVubGltaXRlZCB1bmxvY2sgdW5waXZvdCB1bnJlY292ZXJhYmxlIHVuc2FmZSB1bnNpZ25lZCB1bnRpbCB1bnRydXN0ZWQgdW51c2FibGUgdW51c2VkIHVwZGF0ZSB1cGRhdGVkIHVwZ3JhZGUgdXBwZWQgdXBwZXIgdXBzZXJ0IHVybCB1cm93aWQgdXNhYmxlIHVzYWdlIHVzZSB1c2Vfc3RvcmVkX291dGxpbmVzIHVzZXIgdXNlcl9kYXRhIHVzZXJfcmVzb3VyY2VzIHVzZXJzIHVzaW5nIHV0Y19kYXRlIHV0Y190aW1lc3RhbXAgdXVpZCB1dWlkX3Nob3J0IHZhbGlkYXRlIHZhbGlkYXRlX3Bhc3N3b3JkX3N0cmVuZ3RoIHZhbGlkYXRpb24gdmFsaXN0IHZhbHVlIHZhbHVlcyB2YXIgdmFyX3NhbXAgdmFyY2hhcmMgdmFyaSB2YXJpYSB2YXJpYWIgdmFyaWFibCB2YXJpYWJsZSB2YXJpYWJsZXMgdmFyaWFuY2UgdmFycCB2YXJyYXcgdmFycmF3YyB2YXJyYXkgdmVyaWZ5IHZlcnNpb24gdmVyc2lvbnMgdmlldyB2aXJ0dWFsIHZpc2libGUgdm9pZCB3YWl0IHdhbGxldCB3YXJuaW5nIHdhcm5pbmdzIHdlZWsgd2Vla2RheSB3ZWVrb2Z5ZWFyIHdlbGxmb3JtZWQgd2hlbiB3aGVuZSB3aGVuZXYgd2hlbmV2ZSB3aGVuZXZlciB3aGVyZSB3aGlsZSB3aGl0ZXNwYWNlIHdpdGggd2l0aGluIHdpdGhvdXQgd29yayB3cmFwcGVkIHhkYiB4bWwgeG1sYWdnIHhtbGF0dHJpYnV0ZXMgeG1sY2FzdCB4bWxjb2xhdHR2YWwgeG1sZWxlbWVudCB4bWxleGlzdHMgeG1sZm9yZXN0IHhtbGluZGV4IHhtbG5hbWVzcGFjZXMgeG1scGkgeG1scXVlcnkgeG1scm9vdCB4bWxzY2hlbWEgeG1sc2VyaWFsaXplIHhtbHRhYmxlIHhtbHR5cGUgeG9yIHllYXIgeWVhcl90b19tb250aCB5ZWFycyB5ZWFyd2VlayIsbGl0ZXJhbDoidHJ1ZSBmYWxzZSBudWxsIixidWlsdF9pbjoiYXJyYXkgYmlnaW50IGJpbmFyeSBiaXQgYmxvYiBib29sZWFuIGNoYXIgY2hhcmFjdGVyIGRhdGUgZGVjIGRlY2ltYWwgZmxvYXQgaW50IGludDggaW50ZWdlciBpbnRlcnZhbCBudW1iZXIgbnVtZXJpYyByZWFsIHJlY29yZCBzZXJpYWwgc2VyaWFsOCBzbWFsbGludCB0ZXh0IHZhcmNoYXIgdmFyeWluZyB2b2lkIn0sYzpbe2NOOiJzdHJpbmciLGI6IiciLGU6IiciLGM6W2UuQkUse2I6IicnIn1dfSx7Y046InN0cmluZyIsYjonIicsZTonIicsYzpbZS5CRSx7YjonIiInfV19LHtjTjoic3RyaW5nIixiOiJgIixlOiJgIixjOltlLkJFXX0sZS5DTk0sZS5DQkNNLHRdfSxlLkNCQ00sdF19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJyIixmdW5jdGlvbihlKXt2YXIgcj0iKFthLXpBLVpdfFxcLlthLXpBLVouXSlbYS16QS1aMC05Ll9dKiI7cmV0dXJue2M6W2UuSENNLHtiOnIsbDpyLGs6e2tleXdvcmQ6ImZ1bmN0aW9uIGlmIGluIGJyZWFrIG5leHQgcmVwZWF0IGVsc2UgZm9yIHJldHVybiBzd2l0Y2ggd2hpbGUgdHJ5IHRyeUNhdGNoIHN0b3Agd2FybmluZyByZXF1aXJlIGxpYnJhcnkgYXR0YWNoIGRldGFjaCBzb3VyY2Ugc2V0TWV0aG9kIHNldEdlbmVyaWMgc2V0R3JvdXBHZW5lcmljIHNldENsYXNzIC4uLiIsbGl0ZXJhbDoiTlVMTCBOQSBUUlVFIEZBTFNFIFQgRiBJbmYgTmFOIE5BX2ludGVnZXJffDEwIE5BX3JlYWxffDEwIE5BX2NoYXJhY3Rlcl98MTAgTkFfY29tcGxleF98MTAifSxyOjB9LHtjTjoibnVtYmVyIixiOiIwW3hYXVswLTlhLWZBLUZdK1tMaV0\/XFxiIixyOjB9LHtjTjoibnVtYmVyIixiOiJcXGQrKD86W2VFXVsrXFwtXT9cXGQqKT9MXFxiIixyOjB9LHtjTjoibnVtYmVyIixiOiJcXGQrXFwuKD8hXFxkKSg\/OmlcXGIpPyIscjowfSx7Y046Im51bWJlciIsYjoiXFxkKyg\/OlxcLlxcZCopPyg\/OltlRV1bK1xcLV0\/XFxkKik\/aT9cXGIiLHI6MH0se2NOOiJudW1iZXIiLGI6IlxcLlxcZCsoPzpbZUVdWytcXC1dP1xcZCopP2k\/XFxiIixyOjB9LHtiOiJgIixlOiJgIixyOjB9LHtjTjoic3RyaW5nIixjOltlLkJFXSx2Olt7YjonIicsZTonIid9LHtiOiInIixlOiInIn1dfV19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJwZXJsIixmdW5jdGlvbihlKXt2YXIgdD0iZ2V0cHdlbnQgZ2V0c2VydmVudCBxdW90ZW1ldGEgbXNncmN2IHNjYWxhciBraWxsIGRibWNsb3NlIHVuZGVmIGxjIG1hIHN5c3dyaXRlIHRyIHNlbmQgdW1hc2sgc3lzb3BlbiBzaG13cml0ZSB2ZWMgcXggdXRpbWUgbG9jYWwgb2N0IHNlbWN0bCBsb2NhbHRpbWUgcmVhZHBpcGUgZG8gcmV0dXJuIGZvcm1hdCByZWFkIHNwcmludGYgZGJtb3BlbiBwb3AgZ2V0cGdycCBub3QgZ2V0cHduYW0gcmV3aW5kZGlyIHFxZmlsZW5vIHF3IGVuZHByb3RvZW50IHdhaXQgc2V0aG9zdGVudCBibGVzcyBzfDAgb3BlbmRpciBjb250aW51ZSBlYWNoIHNsZWVwIGVuZGdyZW50IHNodXRkb3duIGR1bXAgY2hvbXAgY29ubmVjdCBnZXRzb2NrbmFtZSBkaWUgc29ja2V0cGFpciBjbG9zZSBmbG9jayBleGlzdHMgaW5kZXggc2htZ2V0c3ViIGZvciBlbmRwd2VudCByZWRvIGxzdGF0IG1zZ2N0bCBzZXRwZ3JwIGFicyBleGl0IHNlbGVjdCBwcmludCByZWYgZ2V0aG9zdGJ5YWRkciB1bnNoaWZ0IGZjbnRsIHN5c2NhbGwgZ290byBnZXRuZXRieWFkZHIgam9pbiBnbXRpbWUgc3ltbGluayBzZW1nZXQgc3BsaWNlIHh8MCBnZXRwZWVybmFtZSByZWN2IGxvZyBzZXRzb2Nrb3B0IGNvcyBsYXN0IHJldmVyc2UgZ2V0aG9zdGJ5bmFtZSBnZXRncm5hbSBzdHVkeSBmb3JtbGluZSBlbmRob3N0ZW50IHRpbWVzIGNob3AgbGVuZ3RoIGdldGhvc3RlbnQgZ2V0bmV0ZW50IHBhY2sgZ2V0cHJvdG9lbnQgZ2V0c2VydmJ5bmFtZSByYW5kIG1rZGlyIHBvcyBjaG1vZCB5fDAgc3Vic3RyIGVuZG5ldGVudCBwcmludGYgbmV4dCBvcGVuIG1zZ3NuZCByZWFkZGlyIHVzZSB1bmxpbmsgZ2V0c29ja29wdCBnZXRwcmlvcml0eSByaW5kZXggd2FudGFycmF5IGhleCBzeXN0ZW0gZ2V0c2VydmJ5cG9ydCBlbmRzZXJ2ZW50IGludCBjaHIgdW50aWUgcm1kaXIgcHJvdG90eXBlIHRlbGwgbGlzdGVuIGZvcmsgc2htcmVhZCB1Y2ZpcnN0IHNldHByb3RvZW50IGVsc2Ugc3lzc2VlayBsaW5rIGdldGdyZ2lkIHNobWN0bCB3YWl0cGlkIHVucGFjayBnZXRuZXRieW5hbWUgcmVzZXQgY2hkaXIgZ3JlcCBzcGxpdCByZXF1aXJlIGNhbGxlciBsY2ZpcnN0IHVudGlsIHdhcm4gd2hpbGUgdmFsdWVzIHNoaWZ0IHRlbGxkaXIgZ2V0cHd1aWQgbXkgZ2V0cHJvdG9ieW51bWJlciBkZWxldGUgYW5kIHNvcnQgdWMgZGVmaW5lZCBzcmFuZCBhY2NlcHQgcGFja2FnZSBzZWVrZGlyIGdldHByb3RvYnluYW1lIHNlbW9wIG91ciByZW5hbWUgc2VlayBpZiBxfDAgY2hyb290IHN5c3JlYWQgc2V0cHdlbnQgbm8gY3J5cHQgZ2V0YyBjaG93biBzcXJ0IHdyaXRlIHNldG5ldGVudCBzZXRwcmlvcml0eSBmb3JlYWNoIHRpZSBzaW4gbXNnZ2V0IG1hcCBzdGF0IGdldGxvZ2luIHVubGVzcyBlbHNpZiB0cnVuY2F0ZSBleGVjIGtleXMgZ2xvYiB0aWVkIGNsb3NlZGlyaW9jdGwgc29ja2V0IHJlYWRsaW5rIGV2YWwgeG9yIHJlYWRsaW5lIGJpbm1vZGUgc2V0c2VydmVudCBlb2Ygb3JkIGJpbmQgYWxhcm0gcGlwZSBhdGFuMiBnZXRncmVudCBleHAgdGltZSBwdXNoIHNldGdyZW50IGd0IGx0IG9yIG5lIG18MCBicmVhayBnaXZlbiBzYXkgc3RhdGUgd2hlbiIscj17Y046InN1YnN0IixiOiJbJEBdXFx7IixlOiJcXH0iLGs6dH0scz17YjoiLT57IixlOiJ9In0sbj17djpbe2I6L1wkXGQvfSx7YjovW1wkJUBdKFxeXHdcYnwjXHcrKDo6XHcrKSp8e1x3K318XHcrKDo6XHcqKSopL30se2I6L1tcJCVAXVteXHNcd3tdLyxyOjB9XX0saT1bZS5CRSxyLG5dLG89W24sZS5IQ00sZS5DKCJeXFw9XFx3IiwiXFw9Y3V0Iix7ZVc6ITB9KSxzLHtjTjoic3RyaW5nIixjOmksdjpbe2I6InFbcXd4cl0\/XFxzKlxcKCIsZToiXFwpIixyOjV9LHtiOiJxW3F3eHJdP1xccypcXFsiLGU6IlxcXSIscjo1fSx7YjoicVtxd3hyXT9cXHMqXFx7IixlOiJcXH0iLHI6NX0se2I6InFbcXd4cl0\/XFxzKlxcfCIsZToiXFx8IixyOjV9LHtiOiJxW3F3eHJdP1xccypcXDwiLGU6IlxcPiIscjo1fSx7YjoicXdcXHMrcSIsZToicSIscjo1fSx7YjoiJyIsZToiJyIsYzpbZS5CRV19LHtiOiciJyxlOiciJ30se2I6ImAiLGU6ImAiLGM6W2UuQkVdfSx7Yjoie1xcdyt9IixjOltdLHI6MH0se2I6Ii0\/XFx3K1xccypcXD1cXD4iLGM6W10scjowfV19LHtjTjoibnVtYmVyIixiOiIoXFxiMFswLTdfXSspfChcXGIweFswLTlhLWZBLUZfXSspfChcXGJbMS05XVswLTlfXSooXFwuWzAtOV9dKyk\/KXxbMF9dXFxiIixyOjB9LHtiOiIoXFwvXFwvfCIrZS5SU1IrInxcXGIoc3BsaXR8cmV0dXJufHByaW50fHJldmVyc2V8Z3JlcClcXGIpXFxzKiIsazoic3BsaXQgcmV0dXJuIHByaW50IHJldmVyc2UgZ3JlcCIscjowLGM6W2UuSENNLHtjTjoicmVnZXhwIixiOiIoc3x0cnx5KS8oXFxcXC58W14vXSkqLyhcXFxcLnxbXi9dKSovW2Etel0qIixyOjEwfSx7Y046InJlZ2V4cCIsYjoiKG18cXIpPy8iLGU6Ii9bYS16XSoiLGM6W2UuQkVdLHI6MH1dfSx7Y046ImZ1bmN0aW9uIixiSzoic3ViIixlOiIoXFxzKlxcKC4qP1xcKSk\/Wzt7XSIsZUU6ITAscjo1LGM6W2UuVE1dfSx7YjoiLVxcd1xcYiIscjowfSx7YjoiXl9fREFUQV9fJCIsZToiXl9fRU5EX18kIixzTDoibW9qb2xpY2lvdXMiLGM6W3tiOiJeQEAuKiIsZToiJCIsY046ImNvbW1lbnQifV19XTtyZXR1cm4gci5jPW8scy5jPW8se2FsaWFzZXM6WyJwbCIsInBtIl0sbDovW1x3XC5dKy8sazp0LGM6b319KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoImluaSIsZnVuY3Rpb24oZSl7dmFyIGI9e2NOOiJzdHJpbmciLGM6W2UuQkVdLHY6W3tiOiInJyciLGU6IicnJyIscjoxMH0se2I6JyIiIicsZTonIiIiJyxyOjEwfSx7YjonIicsZTonIid9LHtiOiInIixlOiInIn1dfTtyZXR1cm57YWxpYXNlczpbInRvbWwiXSxjSTohMCxpOi9cUy8sYzpbZS5DKCI7IiwiJCIpLGUuSENNLHtjTjoic2VjdGlvbiIsYjovXlxzKlxbKy8sZTovXF0rL30se2I6L15bYS16MC05XFtcXV8tXStccyo9XHMqLyxlOiIkIixyQjohMCxjOlt7Y046ImF0dHIiLGI6L1thLXowLTlcW1xdXy1dKy99LHtiOi89LyxlVzohMCxyOjAsYzpbe2NOOiJsaXRlcmFsIixiOi9cYm9ufG9mZnx0cnVlfGZhbHNlfHllc3xub1xiL30se2NOOiJ2YXJpYWJsZSIsdjpbe2I6L1wkW1x3XGQiXVtcd1xkX10qL30se2I6L1wkXHsoLio\/KX0vfV19LGIse2NOOiJudW1iZXIiLGI6LyhbXCtcLV0rKT9bXGRdK19bXGRfXSsvfSxlLk5NXX1dfV19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJkaWZmIixmdW5jdGlvbihlKXtyZXR1cm57YWxpYXNlczpbInBhdGNoIl0sYzpbe2NOOiJtZXRhIixyOjEwLHY6W3tiOi9eQEAgK1wtXGQrLFxkKyArXCtcZCssXGQrICtAQCQvfSx7YjovXlwqXCpcKiArXGQrLFxkKyArXCpcKlwqXCokL30se2I6L15cLVwtXC0gK1xkKyxcZCsgK1wtXC1cLVwtJC99XX0se2NOOiJjb21tZW50Iix2Olt7YjovSW5kZXg6IC8sZTovJC99LHtiOi89ezMsfS8sZTovJC99LHtiOi9eXC17M30vLGU6LyQvfSx7YjovXlwqezN9IC8sZTovJC99LHtiOi9eXCt7M30vLGU6LyQvfSx7YjovXCp7NX0vLGU6L1wqezV9JC99XX0se2NOOiJhZGRpdGlvbiIsYjoiXlxcKyIsZToiJCJ9LHtjTjoiZGVsZXRpb24iLGI6Il5cXC0iLGU6IiQifSx7Y046ImFkZGl0aW9uIixiOiJeXFwhIixlOiIkIn1dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgiZ28iLGZ1bmN0aW9uKGUpe3ZhciB0PXtrZXl3b3JkOiJicmVhayBkZWZhdWx0IGZ1bmMgaW50ZXJmYWNlIHNlbGVjdCBjYXNlIG1hcCBzdHJ1Y3QgY2hhbiBlbHNlIGdvdG8gcGFja2FnZSBzd2l0Y2ggY29uc3QgZmFsbHRocm91Z2ggaWYgcmFuZ2UgdHlwZSBjb250aW51ZSBmb3IgaW1wb3J0IHJldHVybiB2YXIgZ28gZGVmZXIgYm9vbCBieXRlIGNvbXBsZXg2NCBjb21wbGV4MTI4IGZsb2F0MzIgZmxvYXQ2NCBpbnQ4IGludDE2IGludDMyIGludDY0IHN0cmluZyB1aW50OCB1aW50MTYgdWludDMyIHVpbnQ2NCBpbnQgdWludCB1aW50cHRyIHJ1bmUiLGxpdGVyYWw6InRydWUgZmFsc2UgaW90YSBuaWwiLGJ1aWx0X2luOiJhcHBlbmQgY2FwIGNsb3NlIGNvbXBsZXggY29weSBpbWFnIGxlbiBtYWtlIG5ldyBwYW5pYyBwcmludCBwcmludGxuIHJlYWwgcmVjb3ZlciBkZWxldGUifTtyZXR1cm57YWxpYXNlczpbImdvbGFuZyJdLGs6dCxpOiI8LyIsYzpbZS5DTENNLGUuQ0JDTSx7Y046InN0cmluZyIsdjpbZS5RU00se2I6IiciLGU6IlteXFxcXF0nIn0se2I6ImAiLGU6ImAifV19LHtjTjoibnVtYmVyIix2Olt7YjplLkNOUisiW2RmbHNpXSIscjoxfSxlLkNOTV19LHtiOi86PS99LHtjTjoiZnVuY3Rpb24iLGJLOiJmdW5jIixlOi9ccypcey8sZUU6ITAsYzpbZS5UTSx7Y046InBhcmFtcyIsYjovXCgvLGU6L1wpLyxrOnQsaTovWyInXS99XX1dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgiYmFzaCIsZnVuY3Rpb24oZSl7dmFyIHQ9e2NOOiJ2YXJpYWJsZSIsdjpbe2I6L1wkW1x3XGQjQF1bXHdcZF9dKi99LHtiOi9cJFx7KC4qPyl9L31dfSxzPXtjTjoic3RyaW5nIixiOi8iLyxlOi8iLyxjOltlLkJFLHQse2NOOiJ2YXJpYWJsZSIsYjovXCRcKC8sZTovXCkvLGM6W2UuQkVdfV19LGE9e2NOOiJzdHJpbmciLGI6LycvLGU6LycvfTtyZXR1cm57YWxpYXNlczpbInNoIiwienNoIl0sbDovXGItP1thLXpcLl9dK1xiLyxrOntrZXl3b3JkOiJpZiB0aGVuIGVsc2UgZWxpZiBmaSBmb3Igd2hpbGUgaW4gZG8gZG9uZSBjYXNlIGVzYWMgZnVuY3Rpb24iLGxpdGVyYWw6InRydWUgZmFsc2UiLGJ1aWx0X2luOiJicmVhayBjZCBjb250aW51ZSBldmFsIGV4ZWMgZXhpdCBleHBvcnQgZ2V0b3B0cyBoYXNoIHB3ZCByZWFkb25seSByZXR1cm4gc2hpZnQgdGVzdCB0aW1lcyB0cmFwIHVtYXNrIHVuc2V0IGFsaWFzIGJpbmQgYnVpbHRpbiBjYWxsZXIgY29tbWFuZCBkZWNsYXJlIGVjaG8gZW5hYmxlIGhlbHAgbGV0IGxvY2FsIGxvZ291dCBtYXBmaWxlIHByaW50ZiByZWFkIHJlYWRhcnJheSBzb3VyY2UgdHlwZSB0eXBlc2V0IHVsaW1pdCB1bmFsaWFzIHNldCBzaG9wdCBhdXRvbG9hZCBiZyBiaW5ka2V5IGJ5ZSBjYXAgY2hkaXIgY2xvbmUgY29tcGFyZ3VtZW50cyBjb21wY2FsbCBjb21wY3RsIGNvbXBkZXNjcmliZSBjb21wZmlsZXMgY29tcGdyb3VwcyBjb21wcXVvdGUgY29tcHRhZ3MgY29tcHRyeSBjb21wdmFsdWVzIGRpcnMgZGlzYWJsZSBkaXNvd24gZWNob3RjIGVjaG90aSBlbXVsYXRlIGZjIGZnIGZsb2F0IGZ1bmN0aW9ucyBnZXRjYXAgZ2V0bG4gaGlzdG9yeSBpbnRlZ2VyIGpvYnMga2lsbCBsaW1pdCBsb2cgbm9nbG9iIHBvcGQgcHJpbnQgcHVzaGQgcHVzaGxuIHJlaGFzaCBzY2hlZCBzZXRjYXAgc2V0b3B0IHN0YXQgc3VzcGVuZCB0dHljdGwgdW5mdW5jdGlvbiB1bmhhc2ggdW5saW1pdCB1bnNldG9wdCB2YXJlZCB3YWl0IHdoZW5jZSB3aGVyZSB3aGljaCB6Y29tcGlsZSB6Zm9ybWF0IHpmdHAgemxlIHptb2Rsb2FkIHpwYXJzZW9wdHMgenByb2YgenB0eSB6cmVnZXhwYXJzZSB6c29ja2V0IHpzdHlsZSB6dGNwIixfOiItbmUgLWVxIC1sdCAtZ3QgLWYgLWQgLWUgLXMgLWwgLWEifSxjOlt7Y046Im1ldGEiLGI6L14jIVteXG5dK3NoXHMqJC8scjoxMH0se2NOOiJmdW5jdGlvbiIsYjovXHdbXHdcZF9dKlxzKlwoXHMqXClccypcey8sckI6ITAsYzpbZS5pbmhlcml0KGUuVE0se2I6L1x3W1x3XGRfXSovfSldLHI6MH0sZS5IQ00scyxhLHRdfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgicHl0aG9uIixmdW5jdGlvbihlKXt2YXIgcj17a2V5d29yZDoiYW5kIGVsaWYgaXMgZ2xvYmFsIGFzIGluIGlmIGZyb20gcmFpc2UgZm9yIGV4Y2VwdCBmaW5hbGx5IHByaW50IGltcG9ydCBwYXNzIHJldHVybiBleGVjIGVsc2UgYnJlYWsgbm90IHdpdGggY2xhc3MgYXNzZXJ0IHlpZWxkIHRyeSB3aGlsZSBjb250aW51ZSBkZWwgb3IgZGVmIGxhbWJkYSBhc3luYyBhd2FpdCBub25sb2NhbHwxMCBOb25lIFRydWUgRmFsc2UiLGJ1aWx0X2luOiJFbGxpcHNpcyBOb3RJbXBsZW1lbnRlZCJ9LGI9e2NOOiJtZXRhIixiOi9eKD4+PnxcLlwuXC4pIC99LGM9e2NOOiJzdWJzdCIsYjovXHsvLGU6L1x9LyxrOnIsaTovIy99LGE9e2NOOiJzdHJpbmciLGM6W2UuQkVdLHY6W3tiOi8odXxiKT9yPycnJy8sZTovJycnLyxjOltiXSxyOjEwfSx7YjovKHV8Yik\/cj8iIiIvLGU6LyIiIi8sYzpbYl0scjoxMH0se2I6LyhmcnxyZnxmKScnJy8sZTovJycnLyxjOltiLGNdfSx7YjovKGZyfHJmfGYpIiIiLyxlOi8iIiIvLGM6W2IsY119LHtiOi8odXxyfHVyKScvLGU6LycvLHI6MTB9LHtiOi8odXxyfHVyKSIvLGU6LyIvLHI6MTB9LHtiOi8oYnxiciknLyxlOi8nL30se2I6LyhifGJyKSIvLGU6LyIvfSx7YjovKGZyfHJmfGYpJy8sZTovJy8sYzpbY119LHtiOi8oZnJ8cmZ8ZikiLyxlOi8iLyxjOltjXX0sZS5BU00sZS5RU01dfSxzPXtjTjoibnVtYmVyIixyOjAsdjpbe2I6ZS5CTlIrIltsTGpKXT8ifSx7YjoiXFxiKDBvWzAtN10rKVtsTGpKXT8ifSx7YjplLkNOUisiW2xMakpdPyJ9XX0saT17Y046InBhcmFtcyIsYjovXCgvLGU6L1wpLyxjOlsic2VsZiIsYixzLGFdfTtyZXR1cm4gYy5jPVthLHMsYl0se2FsaWFzZXM6WyJweSIsImd5cCJdLGs6cixpOi8oPFwvfC0+fFw\/KXw9Pi8sYzpbYixzLGEsZS5IQ00se3Y6W3tjTjoiZnVuY3Rpb24iLGJLOiJkZWYifSx7Y046ImNsYXNzIixiSzoiY2xhc3MifV0sZTovOi8saTovWyR7PTtcbixdLyxjOltlLlVUTSxpLHtiOi8tPi8sZVc6ITAsazoiTm9uZSJ9XX0se2NOOiJtZXRhIixiOi9eW1x0IF0qQC8sZTovJC99LHtiOi9cYihwcmludHxleGVjKVwoL31dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgianVsaWEiLGZ1bmN0aW9uKGUpe3ZhciByPXtrZXl3b3JkOiJpbiBpc2Egd2hlcmUgYmFyZW1vZHVsZSBiZWdpbiBicmVhayBjYXRjaCBjY2FsbCBjb25zdCBjb250aW51ZSBkbyBlbHNlIGVsc2VpZiBlbmQgZXhwb3J0IGZhbHNlIGZpbmFsbHkgZm9yIGZ1bmN0aW9uIGdsb2JhbCBpZiBpbXBvcnQgaW1wb3J0YWxsIGxldCBsb2NhbCBtYWNybyBtb2R1bGUgcXVvdGUgcmV0dXJuIHRydWUgdHJ5IHVzaW5nIHdoaWxlIHR5cGUgaW1tdXRhYmxlIGFic3RyYWN0IGJpdHN0eXBlIHR5cGVhbGlhcyAiLGxpdGVyYWw6InRydWUgZmFsc2UgQVJHUyBDX05VTEwgRGV2TnVsbCBFTkRJQU5fQk9NIEVOViBJIEluZiBJbmYxNiBJbmYzMiBJbmY2NCBJbnNlcnRpb25Tb3J0IEpVTElBX0hPTUUgTE9BRF9QQVRIIE1lcmdlU29ydCBOYU4gTmFOMTYgTmFOMzIgTmFONjQgUFJPR1JBTV9GSUxFIFF1aWNrU29ydCBSb3VuZERvd24gUm91bmRGcm9tWmVybyBSb3VuZE5lYXJlc3QgUm91bmROZWFyZXN0VGllc0F3YXkgUm91bmROZWFyZXN0VGllc1VwIFJvdW5kVG9aZXJvIFJvdW5kVXAgU1RERVJSIFNURElOIFNURE9VVCBWRVJTSU9OIGNhdGFsYW4gZXwwIGV1fDAgZXVsZXJnYW1tYSBnb2xkZW4gaW0gbm90aGluZyBwaSDOsyDPgCDPhiAiLGJ1aWx0X2luOiJBTlkgQWJzdHJhY3RBcnJheSBBYnN0cmFjdENoYW5uZWwgQWJzdHJhY3RGbG9hdCBBYnN0cmFjdE1hdHJpeCBBYnN0cmFjdFJORyBBYnN0cmFjdFNlcmlhbGl6ZXIgQWJzdHJhY3RTZXQgQWJzdHJhY3RTcGFyc2VBcnJheSBBYnN0cmFjdFNwYXJzZU1hdHJpeCBBYnN0cmFjdFNwYXJzZVZlY3RvciBBYnN0cmFjdFN0cmluZyBBYnN0cmFjdFVuaXRSYW5nZSBBYnN0cmFjdFZlY09yTWF0IEFic3RyYWN0VmVjdG9yIEFueSBBcmd1bWVudEVycm9yIEFycmF5IEFzc2VydGlvbkVycm9yIEFzc29jaWF0aXZlIEJhc2U2NERlY29kZVBpcGUgQmFzZTY0RW5jb2RlUGlwZSBCaWRpYWdvbmFsIEJpZ0Zsb2F0IEJpZ0ludCBCaXRBcnJheSBCaXRNYXRyaXggQml0VmVjdG9yIEJvb2wgQm91bmRzRXJyb3IgQnVmZmVyU3RyZWFtIENhY2hpbmdQb29sIENhcHR1cmVkRXhjZXB0aW9uIENhcnRlc2lhbkluZGV4IENhcnRlc2lhblJhbmdlIENjaGFyIENkb3VibGUgQ2Zsb2F0IENoYW5uZWwgQ2hhciBDaW50IENpbnRtYXhfdCBDbG9uZyBDbG9uZ2xvbmcgQ2x1c3Rlck1hbmFnZXIgQ21kIENvZGVJbmZvIENvbG9uIENvbXBsZXggQ29tcGxleDEyOCBDb21wbGV4MzIgQ29tcGxleDY0IENvbXBvc2l0ZUV4Y2VwdGlvbiBDb25kaXRpb24gQ29uakFycmF5IENvbmpNYXRyaXggQ29ualZlY3RvciBDcHRyZGlmZl90IENzaG9ydCBDc2l6ZV90IENzc2l6ZV90IENzdHJpbmcgQ3VjaGFyIEN1aW50IEN1aW50bWF4X3QgQ3Vsb25nIEN1bG9uZ2xvbmcgQ3VzaG9ydCBDd2NoYXJfdCBDd3N0cmluZyBEYXRhVHlwZSBEYXRlIERhdGVGb3JtYXQgRGF0ZVRpbWUgRGVuc2VBcnJheSBEZW5zZU1hdHJpeCBEZW5zZVZlY09yTWF0IERlbnNlVmVjdG9yIERpYWdvbmFsIERpY3QgRGltZW5zaW9uTWlzbWF0Y2ggRGltcyBEaXJlY3RJbmRleFN0cmluZyBEaXNwbGF5IERpdmlkZUVycm9yIERvbWFpbkVycm9yIEVPRkVycm9yIEVhY2hMaW5lIEVudW0gRW51bWVyYXRlIEVycm9yRXhjZXB0aW9uIEV4Y2VwdGlvbiBFeHBvbmVudGlhbEJhY2tPZmYgRXhwciBGYWN0b3JpemF0aW9uIEZpbGVNb25pdG9yIEZsb2F0MTYgRmxvYXQzMiBGbG9hdDY0IEZ1bmN0aW9uIEZ1dHVyZSBHbG9iYWxSZWYgR290b05vZGUgSFRNTCBIZXJtaXRpYW4gSU8gSU9CdWZmZXIgSU9Db250ZXh0IElPU3RyZWFtIElQQWRkciBJUHY0IElQdjYgSW5kZXhDYXJ0ZXNpYW4gSW5kZXhMaW5lYXIgSW5kZXhTdHlsZSBJbmV4YWN0RXJyb3IgSW5pdEVycm9yIEludCBJbnQxMjggSW50MTYgSW50MzIgSW50NjQgSW50OCBJbnRTZXQgSW50ZWdlciBJbnRlcnJ1cHRFeGNlcHRpb24gSW52YWxpZFN0YXRlRXhjZXB0aW9uIElycmF0aW9uYWwgS2V5RXJyb3IgTGFiZWxOb2RlIExpblNwYWNlIExpbmVOdW1iZXJOb2RlIExvYWRFcnJvciBMb3dlclRyaWFuZ3VsYXIgTUlNRSBNYXRyaXggTWVyc2VubmVUd2lzdGVyIE1ldGhvZCBNZXRob2RFcnJvciBNZXRob2RUYWJsZSBNb2R1bGUgTlR1cGxlIE5ld3Zhck5vZGUgTnVsbEV4Y2VwdGlvbiBOdWxsYWJsZSBOdW1iZXIgT2JqZWN0SWREaWN0IE9yZGluYWxSYW5nZSBPdXRPZk1lbW9yeUVycm9yIE92ZXJmbG93RXJyb3IgUGFpciBQYXJzZUVycm9yIFBhcnRpYWxRdWlja1NvcnQgUGVybXV0ZWREaW1zQXJyYXkgUGlwZSBQb2xsaW5nRmlsZVdhdGNoZXIgUHJvY2Vzc0V4aXRlZEV4Y2VwdGlvbiBQdHIgUXVvdGVOb2RlIFJhbmRvbURldmljZSBSYW5nZSBSYW5nZUluZGV4IFJhdGlvbmFsIFJhd0ZEIFJlYWRPbmx5TWVtb3J5RXJyb3IgUmVhbCBSZWVudHJhbnRMb2NrIFJlZiBSZWdleCBSZWdleE1hdGNoIFJlbW90ZUNoYW5uZWwgUmVtb3RlRXhjZXB0aW9uIFJldlN0cmluZyBSb3VuZGluZ01vZGUgUm93VmVjdG9yIFNTQVZhbHVlIFNlZ21lbnRhdGlvbkZhdWx0IFNlcmlhbGl6YXRpb25TdGF0ZSBTZXQgU2hhcmVkQXJyYXkgU2hhcmVkTWF0cml4IFNoYXJlZFZlY3RvciBTaWduZWQgU2ltcGxlVmVjdG9yIFNsb3QgU2xvdE51bWJlciBTcGFyc2VNYXRyaXhDU0MgU3BhcnNlVmVjdG9yIFN0YWNrRnJhbWUgU3RhY2tPdmVyZmxvd0Vycm9yIFN0YWNrVHJhY2UgU3RlcFJhbmdlIFN0ZXBSYW5nZUxlbiBTdHJpZGVkQXJyYXkgU3RyaWRlZE1hdHJpeCBTdHJpZGVkVmVjT3JNYXQgU3RyaWRlZFZlY3RvciBTdHJpbmcgU3ViQXJyYXkgU3ViU3RyaW5nIFN5bVRyaWRpYWdvbmFsIFN5bWJvbCBTeW1tZXRyaWMgU3lzdGVtRXJyb3IgVENQU29ja2V0IFRhc2sgVGV4dCBUZXh0RGlzcGxheSBUaW1lciBUcmlkaWFnb25hbCBUdXBsZSBUeXBlIFR5cGVFcnJvciBUeXBlTWFwRW50cnkgVHlwZU1hcExldmVsIFR5cGVOYW1lIFR5cGVWYXIgVHlwZWRTbG90IFVEUFNvY2tldCBVSW50IFVJbnQxMjggVUludDE2IFVJbnQzMiBVSW50NjQgVUludDggVW5kZWZSZWZFcnJvciBVbmRlZlZhckVycm9yIFVuaWNvZGVFcnJvciBVbmlmb3JtU2NhbGluZyBVbmlvbiBVbmlvbkFsbCBVbml0UmFuZ2UgVW5zaWduZWQgVXBwZXJUcmlhbmd1bGFyIFZhbCBWYXJhcmcgVmVjRWxlbWVudCBWZWNPck1hdCBWZWN0b3IgVmVyc2lvbk51bWJlciBWb2lkIFdlYWtLZXlEaWN0IFdlYWtSZWYgV29ya2VyQ29uZmlnIFdvcmtlclBvb2wgIn0sdD0iW0EtWmEtel9cXHUwMEExLVxcdUZGRkZdW0EtWmEtel8wLTlcXHUwMEExLVxcdUZGRkZdKiIsYT17bDp0LGs6cixpOi88XC8vfSxuPXtjTjoibnVtYmVyIixiOi8oXGIweFtcZF9dKihcLltcZF9dKik\/fDB4XC5cZFtcZF9dKilwWy0rXT9cZCt8XGIwW2JveF1bYS1mQS1GMC05XVthLWZBLUYwLTlfXSp8KFxiXGRbXGRfXSooXC5bXGRfXSopP3xcLlxkW1xkX10qKShbZUVmRl1bLStdP1xkKyk\/LyxyOjB9LG89e2NOOiJzdHJpbmciLGI6LycoLnxcXFt4WHVVXVthLXpBLVowLTldKyknL30saT17Y046InN1YnN0IixiOi9cJFwoLyxlOi9cKS8sazpyfSxsPXtjTjoidmFyaWFibGUiLGI6IlxcJCIrdH0sYz17Y046InN0cmluZyIsYzpbZS5CRSxpLGxdLHY6W3tiOi9cdyoiIiIvLGU6LyIiIlx3Ki8scjoxMH0se2I6L1x3KiIvLGU6LyJcdyovfV19LHM9e2NOOiJzdHJpbmciLGM6W2UuQkUsaSxsXSxiOiJgIixlOiJgIn0sZD17Y046Im1ldGEiLGI6IkAiK3R9LHU9e2NOOiJjb21tZW50Iix2Olt7YjoiIz0iLGU6Ij0jIixyOjEwfSx7YjoiIyIsZToiJCJ9XX07cmV0dXJuIGEuYz1bbixvLGMscyxkLHUsZS5IQ00se2NOOiJrZXl3b3JkIixiOiJcXGIoKChhYnN0cmFjdHxwcmltaXRpdmUpXFxzKyl0eXBlfChtdXRhYmxlXFxzKyk\/c3RydWN0KVxcYiJ9LHtiOi88Oi99XSxpLmM9YS5jLGF9KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoImNvZmZlZXNjcmlwdCIsZnVuY3Rpb24oZSl7dmFyIGM9e2tleXdvcmQ6ImluIGlmIGZvciB3aGlsZSBmaW5hbGx5IG5ldyBkbyByZXR1cm4gZWxzZSBicmVhayBjYXRjaCBpbnN0YW5jZW9mIHRocm93IHRyeSB0aGlzIHN3aXRjaCBjb250aW51ZSB0eXBlb2YgZGVsZXRlIGRlYnVnZ2VyIHN1cGVyIHlpZWxkIGltcG9ydCBleHBvcnQgZnJvbSBhcyBkZWZhdWx0IGF3YWl0IHRoZW4gdW5sZXNzIHVudGlsIGxvb3Agb2YgYnkgd2hlbiBhbmQgb3IgaXMgaXNudCBub3QiLGxpdGVyYWw6InRydWUgZmFsc2UgbnVsbCB1bmRlZmluZWQgeWVzIG5vIG9uIG9mZiIsYnVpbHRfaW46Im5wbSByZXF1aXJlIGNvbnNvbGUgcHJpbnQgbW9kdWxlIGdsb2JhbCB3aW5kb3cgZG9jdW1lbnQifSxuPSJbQS1aYS16JF9dWzAtOUEtWmEteiRfXSoiLHI9e2NOOiJzdWJzdCIsYjovI1x7LyxlOi99LyxrOmN9LGk9W2UuQk5NLGUuaW5oZXJpdChlLkNOTSx7c3RhcnRzOntlOiIoXFxzKi8pPyIscjowfX0pLHtjTjoic3RyaW5nIix2Olt7YjovJycnLyxlOi8nJycvLGM6W2UuQkVdfSx7YjovJy8sZTovJy8sYzpbZS5CRV19LHtiOi8iIiIvLGU6LyIiIi8sYzpbZS5CRSxyXX0se2I6LyIvLGU6LyIvLGM6W2UuQkUscl19XX0se2NOOiJyZWdleHAiLHY6W3tiOiIvLy8iLGU6Ii8vLyIsYzpbcixlLkhDTV19LHtiOiIvL1tnaW1dKiIscjowfSx7YjovXC8oPyFbICpdKShcXFwvfC4pKj9cL1tnaW1dKig\/PVxXfCQpL31dfSx7YjoiQCIrbn0se3NMOiJqYXZhc2NyaXB0IixlQjohMCxlRTohMCx2Olt7YjoiYGBgIixlOiJgYGAifSx7YjoiYCIsZToiYCJ9XX1dO3IuYz1pO3ZhciBzPWUuaW5oZXJpdChlLlRNLHtiOm59KSx0PSIoXFwoLipcXCkpP1xccypcXEJbLT1dPiIsbz17Y046InBhcmFtcyIsYjoiXFwoW15cXChdIixyQjohMCxjOlt7YjovXCgvLGU6L1wpLyxrOmMsYzpbInNlbGYiXS5jb25jYXQoaSl9XX07cmV0dXJue2FsaWFzZXM6WyJjb2ZmZWUiLCJjc29uIiwiaWNlZCJdLGs6YyxpOi9cL1wqLyxjOmkuY29uY2F0KFtlLkMoIiMjIyIsIiMjIyIpLGUuSENNLHtjTjoiZnVuY3Rpb24iLGI6Il5cXHMqIituKyJcXHMqPVxccyoiK3QsZToiWy09XT4iLHJCOiEwLGM6W3Msb119LHtiOi9bOlwoLD1dXHMqLyxyOjAsYzpbe2NOOiJmdW5jdGlvbiIsYjp0LGU6IlstPV0+IixyQjohMCxjOltvXX1dfSx7Y046ImNsYXNzIixiSzoiY2xhc3MiLGU6IiQiLGk6L1s6PSJcW1xdXS8sYzpbe2JLOiJleHRlbmRzIixlVzohMCxpOi9bOj0iXFtcXV0vLGM6W3NdfSxzXX0se2I6bisiOiIsZToiOiIsckI6ITAsckU6ITAscjowfV0pfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgiY3BwIixmdW5jdGlvbih0KXt2YXIgZT17Y046ImtleXdvcmQiLGI6IlxcYlthLXpcXGRfXSpfdFxcYiJ9LHI9e2NOOiJzdHJpbmciLHY6W3tiOicodTg\/fFUpP0w\/IicsZTonIicsaToiXFxuIixjOlt0LkJFXX0se2I6Jyh1OD98VSk\/UiInLGU6JyInLGM6W3QuQkVdfSx7YjoiJ1xcXFw\/LiIsZToiJyIsaToiLiJ9XX0scz17Y046Im51bWJlciIsdjpbe2I6IlxcYigwYlswMSddKykifSx7YjoiKC0\/KVxcYihbXFxkJ10rKFxcLltcXGQnXSopP3xcXC5bXFxkJ10rKSh1fFV8bHxMfHVsfFVMfGZ8RnxifEIpIn0se2I6IigtPykoXFxiMFt4WF1bYS1mQS1GMC05J10rfChcXGJbXFxkJ10rKFxcLltcXGQnXSopP3xcXC5bXFxkJ10rKShbZUVdWy0rXT9bXFxkJ10rKT8pIn1dLHI6MH0saT17Y046Im1ldGEiLGI6LyNccypbYS16XStcYi8sZTovJC8sazp7Im1ldGEta2V5d29yZCI6ImlmIGVsc2UgZWxpZiBlbmRpZiBkZWZpbmUgdW5kZWYgd2FybmluZyBlcnJvciBsaW5lIHByYWdtYSBpZmRlZiBpZm5kZWYgaW5jbHVkZSJ9LGM6W3tiOi9cXFxuLyxyOjB9LHQuaW5oZXJpdChyLHtjTjoibWV0YS1zdHJpbmcifSkse2NOOiJtZXRhLXN0cmluZyIsYjovPFteXG4+XSo+LyxlOi8kLyxpOiJcXG4ifSx0LkNMQ00sdC5DQkNNXX0sYT10LklSKyJcXHMqXFwoIixjPXtrZXl3b3JkOiJpbnQgZmxvYXQgd2hpbGUgcHJpdmF0ZSBjaGFyIGNhdGNoIGltcG9ydCBtb2R1bGUgZXhwb3J0IHZpcnR1YWwgb3BlcmF0b3Igc2l6ZW9mIGR5bmFtaWNfY2FzdHwxMCB0eXBlZGVmIGNvbnN0X2Nhc3R8MTAgY29uc3QgZm9yIHN0YXRpY19jYXN0fDEwIHVuaW9uIG5hbWVzcGFjZSB1bnNpZ25lZCBsb25nIHZvbGF0aWxlIHN0YXRpYyBwcm90ZWN0ZWQgYm9vbCB0ZW1wbGF0ZSBtdXRhYmxlIGlmIHB1YmxpYyBmcmllbmQgZG8gZ290byBhdXRvIHZvaWQgZW51bSBlbHNlIGJyZWFrIGV4dGVybiB1c2luZyBhc20gY2FzZSB0eXBlaWQgc2hvcnQgcmVpbnRlcnByZXRfY2FzdHwxMCBkZWZhdWx0IGRvdWJsZSByZWdpc3RlciBleHBsaWNpdCBzaWduZWQgdHlwZW5hbWUgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIGlubGluZSBkZWxldGUgYWxpZ25vZiBjb25zdGV4cHIgZGVjbHR5cGUgbm9leGNlcHQgc3RhdGljX2Fzc2VydCB0aHJlYWRfbG9jYWwgcmVzdHJpY3QgX0Jvb2wgY29tcGxleCBfQ29tcGxleCBfSW1hZ2luYXJ5IGF0b21pY19ib29sIGF0b21pY19jaGFyIGF0b21pY19zY2hhciBhdG9taWNfdWNoYXIgYXRvbWljX3Nob3J0IGF0b21pY191c2hvcnQgYXRvbWljX2ludCBhdG9taWNfdWludCBhdG9taWNfbG9uZyBhdG9taWNfdWxvbmcgYXRvbWljX2xsb25nIGF0b21pY191bGxvbmcgbmV3IHRocm93IHJldHVybiBhbmQgb3Igbm90IixidWlsdF9pbjoic3RkIHN0cmluZyBjaW4gY291dCBjZXJyIGNsb2cgc3RkaW4gc3Rkb3V0IHN0ZGVyciBzdHJpbmdzdHJlYW0gaXN0cmluZ3N0cmVhbSBvc3RyaW5nc3RyZWFtIGF1dG9fcHRyIGRlcXVlIGxpc3QgcXVldWUgc3RhY2sgdmVjdG9yIG1hcCBzZXQgYml0c2V0IG11bHRpc2V0IG11bHRpbWFwIHVub3JkZXJlZF9zZXQgdW5vcmRlcmVkX21hcCB1bm9yZGVyZWRfbXVsdGlzZXQgdW5vcmRlcmVkX211bHRpbWFwIGFycmF5IHNoYXJlZF9wdHIgYWJvcnQgYWJzIGFjb3MgYXNpbiBhdGFuMiBhdGFuIGNhbGxvYyBjZWlsIGNvc2ggY29zIGV4aXQgZXhwIGZhYnMgZmxvb3IgZm1vZCBmcHJpbnRmIGZwdXRzIGZyZWUgZnJleHAgZnNjYW5mIGlzYWxudW0gaXNhbHBoYSBpc2NudHJsIGlzZGlnaXQgaXNncmFwaCBpc2xvd2VyIGlzcHJpbnQgaXNwdW5jdCBpc3NwYWNlIGlzdXBwZXIgaXN4ZGlnaXQgdG9sb3dlciB0b3VwcGVyIGxhYnMgbGRleHAgbG9nMTAgbG9nIG1hbGxvYyByZWFsbG9jIG1lbWNociBtZW1jbXAgbWVtY3B5IG1lbXNldCBtb2RmIHBvdyBwcmludGYgcHV0Y2hhciBwdXRzIHNjYW5mIHNpbmggc2luIHNucHJpbnRmIHNwcmludGYgc3FydCBzc2NhbmYgc3RyY2F0IHN0cmNociBzdHJjbXAgc3RyY3B5IHN0cmNzcG4gc3RybGVuIHN0cm5jYXQgc3RybmNtcCBzdHJuY3B5IHN0cnBicmsgc3RycmNociBzdHJzcG4gc3Ryc3RyIHRhbmggdGFuIHZmcHJpbnRmIHZwcmludGYgdnNwcmludGYgZW5kbCBpbml0aWFsaXplcl9saXN0IHVuaXF1ZV9wdHIiLGxpdGVyYWw6InRydWUgZmFsc2UgbnVsbHB0ciBOVUxMIn0sbj1bZSx0LkNMQ00sdC5DQkNNLHMscl07cmV0dXJue2FsaWFzZXM6WyJjIiwiY2MiLCJoIiwiYysrIiwiaCsrIiwiaHBwIl0sazpjLGk6IjwvIixjOm4uY29uY2F0KFtpLHtiOiJcXGIoZGVxdWV8bGlzdHxxdWV1ZXxzdGFja3x2ZWN0b3J8bWFwfHNldHxiaXRzZXR8bXVsdGlzZXR8bXVsdGltYXB8dW5vcmRlcmVkX21hcHx1bm9yZGVyZWRfc2V0fHVub3JkZXJlZF9tdWx0aXNldHx1bm9yZGVyZWRfbXVsdGltYXB8YXJyYXkpXFxzKjwiLGU6Ij4iLGs6YyxjOlsic2VsZiIsZV19LHtiOnQuSVIrIjo6IixrOmN9LHt2Olt7YjovPS8sZTovOy99LHtiOi9cKC8sZTovXCkvfSx7Yks6Im5ldyB0aHJvdyByZXR1cm4gZWxzZSIsZTovOy99XSxrOmMsYzpuLmNvbmNhdChbe2I6L1woLyxlOi9cKS8sazpjLGM6bi5jb25jYXQoWyJzZWxmIl0pLHI6MH1dKSxyOjB9LHtjTjoiZnVuY3Rpb24iLGI6IigiK3QuSVIrIltcXComXFxzXSspKyIrYSxyQjohMCxlOi9bezs9XS8sZUU6ITAsazpjLGk6L1teXHdcc1wqJl0vLGM6W3tiOmEsckI6ITAsYzpbdC5UTV0scjowfSx7Y046InBhcmFtcyIsYjovXCgvLGU6L1wpLyxrOmMscjowLGM6W3QuQ0xDTSx0LkNCQ00scixzLGVdfSx0LkNMQ00sdC5DQkNNLGldfSx7Y046ImNsYXNzIixiSzoiY2xhc3Mgc3RydWN0IixlOi9bezs6XS8sYzpbe2I6LzwvLGU6Lz4vLGM6WyJzZWxmIl19LHQuVE1dfV0pLGV4cG9ydHM6e3ByZXByb2Nlc3NvcjppLHN0cmluZ3M6cixrOmN9fX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgicnVieSIsZnVuY3Rpb24oZSl7dmFyIGI9IlthLXpBLVpfXVxcdypbIT89XT98Wy0rfl1cXEB8PDx8Pj58PX58PT09P3w8PT58Wzw+XT0\/fFxcKlxcKnxbLS8rJV4mKn5gfF18XFxbXFxdPT8iLHI9e2tleXdvcmQ6ImFuZCB0aGVuIGRlZmluZWQgbW9kdWxlIGluIHJldHVybiByZWRvIGlmIEJFR0lOIHJldHJ5IGVuZCBmb3Igc2VsZiB3aGVuIG5leHQgdW50aWwgZG8gYmVnaW4gdW5sZXNzIEVORCByZXNjdWUgZWxzZSBicmVhayB1bmRlZiBub3Qgc3VwZXIgY2xhc3MgY2FzZSByZXF1aXJlIHlpZWxkIGFsaWFzIHdoaWxlIGVuc3VyZSBlbHNpZiBvciBpbmNsdWRlIGF0dHJfcmVhZGVyIGF0dHJfd3JpdGVyIGF0dHJfYWNjZXNzb3IiLGxpdGVyYWw6InRydWUgZmFsc2UgbmlsIn0sYz17Y046ImRvY3RhZyIsYjoiQFtBLVphLXpdKyJ9LGE9e2I6IiM8IixlOiI+In0scz1bZS5DKCIjIiwiJCIse2M6W2NdfSksZS5DKCJeXFw9YmVnaW4iLCJeXFw9ZW5kIix7YzpbY10scjoxMH0pLGUuQygiXl9fRU5EX18iLCJcXG4kIildLG49e2NOOiJzdWJzdCIsYjoiI1xceyIsZToifSIsazpyfSx0PXtjTjoic3RyaW5nIixjOltlLkJFLG5dLHY6W3tiOi8nLyxlOi8nL30se2I6LyIvLGU6LyIvfSx7YjovYC8sZTovYC99LHtiOiIlW3FRd1d4XT9cXCgiLGU6IlxcKSJ9LHtiOiIlW3FRd1d4XT9cXFsiLGU6IlxcXSJ9LHtiOiIlW3FRd1d4XT97IixlOiJ9In0se2I6IiVbcVF3V3hdPzwiLGU6Ij4ifSx7YjoiJVtxUXdXeF0\/LyIsZToiLyJ9LHtiOiIlW3FRd1d4XT8lIixlOiIlIn0se2I6IiVbcVF3V3hdPy0iLGU6Ii0ifSx7YjoiJVtxUXdXeF0\/XFx8IixlOiJcXHwifSx7YjovXEJcPyhcXFxkezEsM318XFx4W0EtRmEtZjAtOV17MSwyfXxcXHVbQS1GYS1mMC05XXs0fXxcXD9cUylcYi99LHtiOi88PCgtPylcdyskLyxlOi9eXHMqXHcrJC99XX0saT17Y046InBhcmFtcyIsYjoiXFwoIixlOiJcXCkiLGVuZHNQYXJlbnQ6ITAsazpyfSxkPVt0LGEse2NOOiJjbGFzcyIsYks6ImNsYXNzIG1vZHVsZSIsZToiJHw7IixpOi89LyxjOltlLmluaGVyaXQoZS5UTSx7YjoiW0EtWmEtel9dXFx3Kig6OlxcdyspKihcXD98XFwhKT8ifSkse2I6IjxcXHMqIixjOlt7YjoiKCIrZS5JUisiOjopPyIrZS5JUn1dfV0uY29uY2F0KHMpfSx7Y046ImZ1bmN0aW9uIixiSzoiZGVmIixlOiIkfDsiLGM6W2UuaW5oZXJpdChlLlRNLHtiOmJ9KSxpXS5jb25jYXQocyl9LHtiOmUuSVIrIjo6In0se2NOOiJzeW1ib2wiLGI6ZS5VSVIrIihcXCF8XFw\/KT86IixyOjB9LHtjTjoic3ltYm9sIixiOiI6KD8hXFxzKSIsYzpbdCx7YjpifV0scjowfSx7Y046Im51bWJlciIsYjoiKFxcYjBbMC03X10rKXwoXFxiMHhbMC05YS1mQS1GX10rKXwoXFxiWzEtOV1bMC05X10qKFxcLlswLTlfXSspPyl8WzBfXVxcYiIscjowfSx7YjoiKFxcJFxcVyl8KChcXCR8XFxAXFxAPykoXFx3KykpIn0se2NOOiJwYXJhbXMiLGI6L1x8LyxlOi9cfC8sazpyfSx7YjoiKCIrZS5SU1IrInx1bmxlc3MpXFxzKiIsazoidW5sZXNzIixjOlthLHtjTjoicmVnZXhwIixjOltlLkJFLG5dLGk6L1xuLyx2Olt7YjoiLyIsZToiL1thLXpdKiJ9LHtiOiIlcnsiLGU6In1bYS16XSoifSx7YjoiJXJcXCgiLGU6IlxcKVthLXpdKiJ9LHtiOiIlciEiLGU6IiFbYS16XSoifSx7YjoiJXJcXFsiLGU6IlxcXVthLXpdKiJ9XX1dLmNvbmNhdChzKSxyOjB9XS5jb25jYXQocyk7bi5jPWQsaS5jPWQ7dmFyIGw9Ils+P10+IixvPSJbXFx3I10rXFwoXFx3K1xcKTpcXGQrOlxcZCs+Iix1PSIoXFx3Ky0pP1xcZCtcXC5cXGQrXFwuXFxkKHBcXGQrKT9bXj5dKz4iLHc9W3tiOi9eXHMqPT4vLHN0YXJ0czp7ZToiJCIsYzpkfX0se2NOOiJtZXRhIixiOiJeKCIrbCsifCIrbysifCIrdSsiKSIsc3RhcnRzOntlOiIkIixjOmR9fV07cmV0dXJue2FsaWFzZXM6WyJyYiIsImdlbXNwZWMiLCJwb2RzcGVjIiwidGhvciIsImlyYiJdLGs6cixpOi9cL1wqLyxjOnMuY29uY2F0KHcpLmNvbmNhdChkKX19KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoInlhbWwiLGZ1bmN0aW9uKGUpe3ZhciBiPSJ0cnVlIGZhbHNlIHllcyBubyBudWxsIixhPSJeWyBcXC1dKiIscj0iW2EtekEtWl9dW1xcd1xcLV0qIix0PXtjTjoiYXR0ciIsdjpbe2I6YStyKyI6In0se2I6YSsnIicrcisnIjonfSx7YjphKyInIityKyInOiJ9XX0sYz17Y046InRlbXBsYXRlLXZhcmlhYmxlIix2Olt7Yjoie3siLGU6In19In0se2I6IiV7IixlOiJ9In1dfSxsPXtjTjoic3RyaW5nIixyOjAsdjpbe2I6LycvLGU6LycvfSx7YjovIi8sZTovIi99LHtiOi9cUysvfV0sYzpbZS5CRSxjXX07cmV0dXJue2NJOiEwLGFsaWFzZXM6WyJ5bWwiLCJZQU1MIiwieWFtbCJdLGM6W3Qse2NOOiJtZXRhIixiOiJeLS0tcyokIixyOjEwfSx7Y046InN0cmluZyIsYjoiW1xcfD5dICokIixyRTohMCxjOmwuYyxlOnQudlswXS5ifSx7YjoiPCVbJT0tXT8iLGU6IlslLV0\/JT4iLHNMOiJydWJ5IixlQjohMCxlRTohMCxyOjB9LHtjTjoidHlwZSIsYjoiISEiK2UuVUlSfSx7Y046Im1ldGEiLGI6IiYiK2UuVUlSKyIkIn0se2NOOiJtZXRhIixiOiJcXCoiK2UuVUlSKyIkIn0se2NOOiJidWxsZXQiLGI6Il4gKi0iLHI6MH0sZS5IQ00se2JLOmIsazp7bGl0ZXJhbDpifX0sZS5DTk0sbF19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJjc3MiLGZ1bmN0aW9uKGUpe3ZhciBjPSJbYS16QS1aLV1bYS16QS1aMC05Xy1dKiIsdD17YjovW0EtWlxfXC5cLV0rXHMqOi8sckI6ITAsZToiOyIsZVc6ITAsYzpbe2NOOiJhdHRyaWJ1dGUiLGI6L1xTLyxlOiI6IixlRTohMCxzdGFydHM6e2VXOiEwLGVFOiEwLGM6W3tiOi9bXHctXStcKC8sckI6ITAsYzpbe2NOOiJidWlsdF9pbiIsYjovW1x3LV0rL30se2I6L1woLyxlOi9cKS8sYzpbZS5BU00sZS5RU01dfV19LGUuQ1NTTk0sZS5RU00sZS5BU00sZS5DQkNNLHtjTjoibnVtYmVyIixiOiIjWzAtOUEtRmEtZl0rIn0se2NOOiJtZXRhIixiOiIhaW1wb3J0YW50In1dfX1dfTtyZXR1cm57Y0k6ITAsaTovWz1cL3wnXCRdLyxjOltlLkNCQ00se2NOOiJzZWxlY3Rvci1pZCIsYjovI1tBLVphLXowLTlfLV0rL30se2NOOiJzZWxlY3Rvci1jbGFzcyIsYjovXC5bQS1aYS16MC05Xy1dKy99LHtjTjoic2VsZWN0b3ItYXR0ciIsYjovXFsvLGU6L1xdLyxpOiIkIn0se2NOOiJzZWxlY3Rvci1wc2V1ZG8iLGI6LzooOik\/W2EtekEtWjAtOVxfXC1cK1woXCkiJy5dKy99LHtiOiJAKGZvbnQtZmFjZXxwYWdlKSIsbDoiW2Etei1dKyIsazoiZm9udC1mYWNlIHBhZ2UifSx7YjoiQCIsZToiW3s7XSIsaTovOi8sYzpbe2NOOiJrZXl3b3JkIixiOi9cdysvfSx7YjovXHMvLGVXOiEwLGVFOiEwLHI6MCxjOltlLkFTTSxlLlFTTSxlLkNTU05NXX1dfSx7Y046InNlbGVjdG9yLXRhZyIsYjpjLHI6MH0se2I6InsiLGU6In0iLGk6L1xTLyxjOltlLkNCQ00sdF19XX19KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoImZvcnRyYW4iLGZ1bmN0aW9uKGUpe3ZhciB0PXtjTjoicGFyYW1zIixiOiJcXCgiLGU6IlxcKSJ9LG49e2xpdGVyYWw6Ii5GYWxzZS4gLlRydWUuIixrZXl3b3JkOiJraW5kIGRvIHdoaWxlIHByaXZhdGUgY2FsbCBpbnRyaW5zaWMgd2hlcmUgZWxzZXdoZXJlIHR5cGUgZW5kdHlwZSBlbmRtb2R1bGUgZW5kc2VsZWN0IGVuZGludGVyZmFjZSBlbmQgZW5kZG8gZW5kaWYgaWYgZm9yYWxsIGVuZGZvcmFsbCBvbmx5IGNvbnRhaW5zIGRlZmF1bHQgcmV0dXJuIHN0b3AgdGhlbiBwdWJsaWMgc3Vicm91dGluZXwxMCBmdW5jdGlvbiBwcm9ncmFtIC5hbmQuIC5vci4gLm5vdC4gLmxlLiAuZXEuIC5nZS4gLmd0LiAubHQuIGdvdG8gc2F2ZSBlbHNlIHVzZSBtb2R1bGUgc2VsZWN0IGNhc2UgYWNjZXNzIGJsYW5rIGRpcmVjdCBleGlzdCBmaWxlIGZtdCBmb3JtIGZvcm1hdHRlZCBpb3N0YXQgbmFtZSBuYW1lZCBuZXh0cmVjIG51bWJlciBvcGVuZWQgcmVjIHJlY2wgc2VxdWVudGlhbCBzdGF0dXMgdW5mb3JtYXR0ZWQgdW5pdCBjb250aW51ZSBmb3JtYXQgcGF1c2UgY3ljbGUgZXhpdCBjX251bGxfY2hhciBjX2FsZXJ0IGNfYmFja3NwYWNlIGNfZm9ybV9mZWVkIGZsdXNoIHdhaXQgZGVjaW1hbCByb3VuZCBpb21zZyBzeW5jaHJvbm91cyBub3Bhc3Mgbm9uX292ZXJyaWRhYmxlIHBhc3MgcHJvdGVjdGVkIHZvbGF0aWxlIGFic3RyYWN0IGV4dGVuZHMgaW1wb3J0IG5vbl9pbnRyaW5zaWMgdmFsdWUgZGVmZXJyZWQgZ2VuZXJpYyBmaW5hbCBlbnVtZXJhdG9yIGNsYXNzIGFzc29jaWF0ZSBiaW5kIGVudW0gY19pbnQgY19zaG9ydCBjX2xvbmcgY19sb25nX2xvbmcgY19zaWduZWRfY2hhciBjX3NpemVfdCBjX2ludDhfdCBjX2ludDE2X3QgY19pbnQzMl90IGNfaW50NjRfdCBjX2ludF9sZWFzdDhfdCBjX2ludF9sZWFzdDE2X3QgY19pbnRfbGVhc3QzMl90IGNfaW50X2xlYXN0NjRfdCBjX2ludF9mYXN0OF90IGNfaW50X2Zhc3QxNl90IGNfaW50X2Zhc3QzMl90IGNfaW50X2Zhc3Q2NF90IGNfaW50bWF4X3QgQ19pbnRwdHJfdCBjX2Zsb2F0IGNfZG91YmxlIGNfbG9uZ19kb3VibGUgY19mbG9hdF9jb21wbGV4IGNfZG91YmxlX2NvbXBsZXggY19sb25nX2RvdWJsZV9jb21wbGV4IGNfYm9vbCBjX2NoYXIgY19udWxsX3B0ciBjX251bGxfZnVucHRyIGNfbmV3X2xpbmUgY19jYXJyaWFnZV9yZXR1cm4gY19ob3Jpem9udGFsX3RhYiBjX3ZlcnRpY2FsX3RhYiBpc29fY19iaW5kaW5nIGNfbG9jIGNfZnVubG9jIGNfYXNzb2NpYXRlZCAgY19mX3BvaW50ZXIgY19wdHIgY19mdW5wdHIgaXNvX2ZvcnRyYW5fZW52IGNoYXJhY3Rlcl9zdG9yYWdlX3NpemUgZXJyb3JfdW5pdCBmaWxlX3N0b3JhZ2Vfc2l6ZSBpbnB1dF91bml0IGlvc3RhdF9lbmQgaW9zdGF0X2VvciBudW1lcmljX3N0b3JhZ2Vfc2l6ZSBvdXRwdXRfdW5pdCBjX2ZfcHJvY3BvaW50ZXIgaWVlZV9hcml0aG1ldGljIGllZWVfc3VwcG9ydF91bmRlcmZsb3dfY29udHJvbCBpZWVlX2dldF91bmRlcmZsb3dfbW9kZSBpZWVlX3NldF91bmRlcmZsb3dfbW9kZSBuZXd1bml0IGNvbnRpZ3VvdXMgcmVjdXJzaXZlIHBhZCBwb3NpdGlvbiBhY3Rpb24gZGVsaW0gcmVhZHdyaXRlIGVvciBhZHZhbmNlIG5tbCBpbnRlcmZhY2UgcHJvY2VkdXJlIG5hbWVsaXN0IGluY2x1ZGUgc2VxdWVuY2UgZWxlbWVudGFsIHB1cmUgaW50ZWdlciByZWFsIGNoYXJhY3RlciBjb21wbGV4IGxvZ2ljYWwgZGltZW5zaW9uIGFsbG9jYXRhYmxlfDEwIHBhcmFtZXRlciBleHRlcm5hbCBpbXBsaWNpdHwxMCBub25lIGRvdWJsZSBwcmVjaXNpb24gYXNzaWduIGludGVudCBvcHRpb25hbCBwb2ludGVyIHRhcmdldCBpbiBvdXQgY29tbW9uIGVxdWl2YWxlbmNlIGRhdGEiLGJ1aWx0X2luOiJhbG9nIGFsb2cxMCBhbWF4MCBhbWF4MSBhbWluMCBhbWluMSBhbW9kIGNhYnMgY2NvcyBjZXhwIGNsb2cgY3NpbiBjc3FydCBkYWJzIGRhY29zIGRhc2luIGRhdGFuIGRhdGFuMiBkY29zIGRjb3NoIGRkaW0gZGV4cCBkaW50IGRsb2cgZGxvZzEwIGRtYXgxIGRtaW4xIGRtb2QgZG5pbnQgZHNpZ24gZHNpbiBkc2luaCBkc3FydCBkdGFuIGR0YW5oIGZsb2F0IGlhYnMgaWRpbSBpZGludCBpZG5pbnQgaWZpeCBpc2lnbiBtYXgwIG1heDEgbWluMCBtaW4xIHNuZ2wgYWxnYW1hIGNkYWJzIGNkY29zIGNkZXhwIGNkbG9nIGNkc2luIGNkc3FydCBjcWFicyBjcWNvcyBjcWV4cCBjcWxvZyBjcXNpbiBjcXNxcnQgZGNtcGx4IGRjb25qZyBkZXJmIGRlcmZjIGRmbG9hdCBkZ2FtbWEgZGltYWcgZGxnYW1hIGlxaW50IHFhYnMgcWFjb3MgcWFzaW4gcWF0YW4gcWF0YW4yIHFjbXBseCBxY29uamcgcWNvcyBxY29zaCBxZGltIHFlcmYgcWVyZmMgcWV4cCBxZ2FtbWEgcWltYWcgcWxnYW1hIHFsb2cgcWxvZzEwIHFtYXgxIHFtaW4xIHFtb2QgcW5pbnQgcXNpZ24gcXNpbiBxc2luaCBxc3FydCBxdGFuIHF0YW5oIGFicyBhY29zIGFpbWFnIGFpbnQgYW5pbnQgYXNpbiBhdGFuIGF0YW4yIGNoYXIgY21wbHggY29uamcgY29zIGNvc2ggZXhwIGljaGFyIGluZGV4IGludCBsb2cgbG9nMTAgbWF4IG1pbiBuaW50IHNpZ24gc2luIHNpbmggc3FydCB0YW4gdGFuaCBwcmludCB3cml0ZSBkaW0gbGdlIGxndCBsbGUgbGx0IG1vZCBudWxsaWZ5IGFsbG9jYXRlIGRlYWxsb2NhdGUgYWRqdXN0bCBhZGp1c3RyIGFsbCBhbGxvY2F0ZWQgYW55IGFzc29jaWF0ZWQgYml0X3NpemUgYnRlc3QgY2VpbGluZyBjb3VudCBjc2hpZnQgZGF0ZV9hbmRfdGltZSBkaWdpdHMgZG90X3Byb2R1Y3QgZW9zaGlmdCBlcHNpbG9uIGV4cG9uZW50IGZsb29yIGZyYWN0aW9uIGh1Z2UgaWFuZCBpYmNsciBpYml0cyBpYnNldCBpZW9yIGlvciBpc2hmdCBpc2hmdGMgbGJvdW5kIGxlbl90cmltIG1hdG11bCBtYXhleHBvbmVudCBtYXhsb2MgbWF4dmFsIG1lcmdlIG1pbmV4cG9uZW50IG1pbmxvYyBtaW52YWwgbW9kdWxvIG12Yml0cyBuZWFyZXN0IHBhY2sgcHJlc2VudCBwcm9kdWN0IHJhZGl4IHJhbmRvbV9udW1iZXIgcmFuZG9tX3NlZWQgcmFuZ2UgcmVwZWF0IHJlc2hhcGUgcnJzcGFjaW5nIHNjYWxlIHNjYW4gc2VsZWN0ZWRfaW50X2tpbmQgc2VsZWN0ZWRfcmVhbF9raW5kIHNldF9leHBvbmVudCBzaGFwZSBzaXplIHNwYWNpbmcgc3ByZWFkIHN1bSBzeXN0ZW1fY2xvY2sgdGlueSB0cmFuc3Bvc2UgdHJpbSB1Ym91bmQgdW5wYWNrIHZlcmlmeSBhY2hhciBpYWNoYXIgdHJhbnNmZXIgZGJsZSBlbnRyeSBkcHJvZCBjcHVfdGltZSBjb21tYW5kX2FyZ3VtZW50X2NvdW50IGdldF9jb21tYW5kIGdldF9jb21tYW5kX2FyZ3VtZW50IGdldF9lbnZpcm9ubWVudF92YXJpYWJsZSBpc19pb3N0YXRfZW5kIGllZWVfYXJpdGhtZXRpYyBpZWVlX3N1cHBvcnRfdW5kZXJmbG93X2NvbnRyb2wgaWVlZV9nZXRfdW5kZXJmbG93X21vZGUgaWVlZV9zZXRfdW5kZXJmbG93X21vZGUgaXNfaW9zdGF0X2VvciBtb3ZlX2FsbG9jIG5ld19saW5lIHNlbGVjdGVkX2NoYXJfa2luZCBzYW1lX3R5cGVfYXMgZXh0ZW5kc190eXBlX29mYWNvc2ggYXNpbmggYXRhbmggYmVzc2VsX2owIGJlc3NlbF9qMSBiZXNzZWxfam4gYmVzc2VsX3kwIGJlc3NlbF95MSBiZXNzZWxfeW4gZXJmIGVyZmMgZXJmY19zY2FsZWQgZ2FtbWEgbG9nX2dhbW1hIGh5cG90IG5vcm0yIGF0b21pY19kZWZpbmUgYXRvbWljX3JlZiBleGVjdXRlX2NvbW1hbmRfbGluZSBsZWFkeiB0cmFpbHogc3RvcmFnZV9zaXplIG1lcmdlX2JpdHMgYmdlIGJndCBibGUgYmx0IGRzaGlmdGwgZHNoaWZ0ciBmaW5kbG9jIGlhbGwgaWFueSBpcGFyaXR5IGltYWdlX2luZGV4IGxjb2JvdW5kIHVjb2JvdW5kIG1hc2tsIG1hc2tyIG51bV9pbWFnZXMgcGFyaXR5IHBvcGNudCBwb3BwYXIgc2hpZnRhIHNoaWZ0bCBzaGlmdHIgdGhpc19pbWFnZSJ9O3JldHVybntjSTohMCxhbGlhc2VzOlsiZjkwIiwiZjk1Il0sazpuLGk6L1wvXCovLGM6W2UuaW5oZXJpdChlLkFTTSx7Y046InN0cmluZyIscjowfSksZS5pbmhlcml0KGUuUVNNLHtjTjoic3RyaW5nIixyOjB9KSx7Y046ImZ1bmN0aW9uIixiSzoic3Vicm91dGluZSBmdW5jdGlvbiBwcm9ncmFtIixpOiJbJHs9XFxuXSIsYzpbZS5VVE0sdF19LGUuQygiISIsIiQiLHtyOjB9KSx7Y046Im51bWJlciIsYjoiKD89XFxifFxcK3xcXC18XFwuKSg\/PVxcLlxcZHxcXGQpKD86XFxkKyk\/KD86XFwuP1xcZCopKD86W2RlXVsrLV0\/XFxkKyk\/XFxiXFwuPyIscjowfV19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJhd2siLGZ1bmN0aW9uKGUpe3ZhciByPXtjTjoidmFyaWFibGUiLHY6W3tiOi9cJFtcd1xkI0BdW1x3XGRfXSovfSx7YjovXCRceyguKj8pfS99XX0sYj0iQkVHSU4gRU5EIGlmIGVsc2Ugd2hpbGUgZG8gZm9yIGluIGJyZWFrIGNvbnRpbnVlIGRlbGV0ZSBuZXh0IG5leHRmaWxlIGZ1bmN0aW9uIGZ1bmMgZXhpdHwxMCIsbj17Y046InN0cmluZyIsYzpbZS5CRV0sdjpbe2I6Lyh1fGIpP3I\/JycnLyxlOi8nJycvLHI6MTB9LHtiOi8odXxiKT9yPyIiIi8sZTovIiIiLyxyOjEwfSx7YjovKHV8cnx1ciknLyxlOi8nLyxyOjEwfSx7YjovKHV8cnx1cikiLyxlOi8iLyxyOjEwfSx7YjovKGJ8YnIpJy8sZTovJy99LHtiOi8oYnxicikiLyxlOi8iL30sZS5BU00sZS5RU01dfTtyZXR1cm57azp7a2V5d29yZDpifSxjOltyLG4sZS5STSxlLkhDTSxlLk5NXX19KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoIm1ha2VmaWxlIixmdW5jdGlvbihlKXt2YXIgaT17Y046InZhcmlhYmxlIix2Olt7YjoiXFwkXFwoIitlLlVJUisiXFwpIixjOltlLkJFXX0se2I6L1wkW0AlPD9cXlwrXCpdL31dfSxyPXtjTjoic3RyaW5nIixiOi8iLyxlOi8iLyxjOltlLkJFLGldfSxhPXtjTjoidmFyaWFibGUiLGI6L1wkXChbXHctXStccy8sZTovXCkvLGs6e2J1aWx0X2luOiJzdWJzdCBwYXRzdWJzdCBzdHJpcCBmaW5kc3RyaW5nIGZpbHRlciBmaWx0ZXItb3V0IHNvcnQgd29yZCB3b3JkbGlzdCBmaXJzdHdvcmQgbGFzdHdvcmQgZGlyIG5vdGRpciBzdWZmaXggYmFzZW5hbWUgYWRkc3VmZml4IGFkZHByZWZpeCBqb2luIHdpbGRjYXJkIHJlYWxwYXRoIGFic3BhdGggZXJyb3Igd2FybmluZyBzaGVsbCBvcmlnaW4gZmxhdm9yIGZvcmVhY2ggaWYgb3IgYW5kIGNhbGwgZXZhbCBmaWxlIHZhbHVlIn0sYzpbaV19LG49e2I6Il4iK2UuVUlSKyJcXHMqWzorP10\/PSIsaToiXFxuIixyQjohMCxjOlt7YjoiXiIrZS5VSVIsZToiWzorP10\/PSIsZUU6ITB9XX0sdD17Y046Im1ldGEiLGI6L15cLlBIT05ZOi8sZTovJC8sazp7Im1ldGEta2V5d29yZCI6Ii5QSE9OWSJ9LGw6L1tcLlx3XSsvfSxsPXtjTjoic2VjdGlvbiIsYjovXlteXHNdKzovLGU6LyQvLGM6W2ldfTtyZXR1cm57YWxpYXNlczpbIm1rIiwibWFrIl0sazoiZGVmaW5lIGVuZGVmIHVuZGVmaW5lIGlmZGVmIGlmbmRlZiBpZmVxIGlmbmVxIGVsc2UgZW5kaWYgaW5jbHVkZSAtaW5jbHVkZSBzaW5jbHVkZSBvdmVycmlkZSBleHBvcnQgdW5leHBvcnQgcHJpdmF0ZSB2cGF0aCIsbDovW1x3LV0rLyxjOltlLkhDTSxpLHIsYSxuLHQsbF19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJqYXZhIixmdW5jdGlvbihlKXt2YXIgYT0iW8OALcq4YS16QS1aXyRdW8OALcq4YS16QS1aXyQwLTldKiIsdD1hKyIoPCIrYSsiKFxccyosXFxzKiIrYSsiKSo+KT8iLHI9ImZhbHNlIHN5bmNocm9uaXplZCBpbnQgYWJzdHJhY3QgZmxvYXQgcHJpdmF0ZSBjaGFyIGJvb2xlYW4gc3RhdGljIG51bGwgaWYgY29uc3QgZm9yIHRydWUgd2hpbGUgbG9uZyBzdHJpY3RmcCBmaW5hbGx5IHByb3RlY3RlZCBpbXBvcnQgbmF0aXZlIGZpbmFsIHZvaWQgZW51bSBlbHNlIGJyZWFrIHRyYW5zaWVudCBjYXRjaCBpbnN0YW5jZW9mIGJ5dGUgc3VwZXIgdm9sYXRpbGUgY2FzZSBhc3NlcnQgc2hvcnQgcGFja2FnZSBkZWZhdWx0IGRvdWJsZSBwdWJsaWMgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIHRocm93cyBwcm90ZWN0ZWQgcHVibGljIHByaXZhdGUgbW9kdWxlIHJlcXVpcmVzIGV4cG9ydHMgZG8iLHM9IlxcYigwW2JCXShbMDFdK1swMV9dK1swMV0rfFswMV0rKXwwW3hYXShbYS1mQS1GMC05XStbYS1mQS1GMC05X10rW2EtZkEtRjAtOV0rfFthLWZBLUYwLTldKyl8KChbXFxkXStbXFxkX10rW1xcZF0rfFtcXGRdKykoXFwuKFtcXGRdK1tcXGRfXStbXFxkXSt8W1xcZF0rKSk\/fFxcLihbXFxkXStbXFxkX10rW1xcZF0rfFtcXGRdKykpKFtlRV1bLStdP1xcZCspPylbbExmRl0\/IixjPXtjTjoibnVtYmVyIixiOnMscjowfTtyZXR1cm57YWxpYXNlczpbImpzcCJdLGs6cixpOi88XC98Iy8sYzpbZS5DKCIvXFwqXFwqIiwiXFwqLyIse3I6MCxjOlt7YjovXHcrQC8scjowfSx7Y046ImRvY3RhZyIsYjoiQFtBLVphLXpdKyJ9XX0pLGUuQ0xDTSxlLkNCQ00sZS5BU00sZS5RU00se2NOOiJjbGFzcyIsYks6ImNsYXNzIGludGVyZmFjZSIsZTovW3s7PV0vLGVFOiEwLGs6ImNsYXNzIGludGVyZmFjZSIsaTovWzoiXFtcXV0vLGM6W3tiSzoiZXh0ZW5kcyBpbXBsZW1lbnRzIn0sZS5VVE1dfSx7Yks6Im5ldyB0aHJvdyByZXR1cm4gZWxzZSIscjowfSx7Y046ImZ1bmN0aW9uIixiOiIoIit0KyJcXHMrKSsiK2UuVUlSKyJcXHMqXFwoIixyQjohMCxlOi9bezs9XS8sZUU6ITAsazpyLGM6W3tiOmUuVUlSKyJcXHMqXFwoIixyQjohMCxyOjAsYzpbZS5VVE1dfSx7Y046InBhcmFtcyIsYjovXCgvLGU6L1wpLyxrOnIscjowLGM6W2UuQVNNLGUuUVNNLGUuQ05NLGUuQ0JDTV19LGUuQ0xDTSxlLkNCQ01dfSxjLHtjTjoibWV0YSIsYjoiQFtBLVphLXpdKyJ9XX19KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoInN0YW4iLGZ1bmN0aW9uKGUpe3JldHVybntjOltlLkhDTSxlLkNMQ00sZS5DQkNNLHtiOmUuVUlSLGw6ZS5VSVIsazp7bmFtZToiZm9yIGluIHdoaWxlIHJlcGVhdCB1bnRpbCBpZiB0aGVuIGVsc2UiLHN5bWJvbDoiYmVybm91bGxpIGJlcm5vdWxsaV9sb2dpdCBiaW5vbWlhbCBiaW5vbWlhbF9sb2dpdCBiZXRhX2Jpbm9taWFsIGh5cGVyZ2VvbWV0cmljIGNhdGVnb3JpY2FsIGNhdGVnb3JpY2FsX2xvZ2l0IG9yZGVyZWRfbG9naXN0aWMgbmVnX2Jpbm9taWFsIG5lZ19iaW5vbWlhbF8yIG5lZ19iaW5vbWlhbF8yX2xvZyBwb2lzc29uIHBvaXNzb25fbG9nIG11bHRpbm9taWFsIG5vcm1hbCBleHBfbW9kX25vcm1hbCBza2V3X25vcm1hbCBzdHVkZW50X3QgY2F1Y2h5IGRvdWJsZV9leHBvbmVudGlhbCBsb2dpc3RpYyBndW1iZWwgbG9nbm9ybWFsIGNoaV9zcXVhcmUgaW52X2NoaV9zcXVhcmUgc2NhbGVkX2ludl9jaGlfc3F1YXJlIGV4cG9uZW50aWFsIGludl9nYW1tYSB3ZWlidWxsIGZyZWNoZXQgcmF5bGVpZ2ggd2llbmVyIHBhcmV0byBwYXJldG9fdHlwZV8yIHZvbl9taXNlcyB1bmlmb3JtIG11bHRpX25vcm1hbCBtdWx0aV9ub3JtYWxfcHJlYyBtdWx0aV9ub3JtYWxfY2hvbGVza3kgbXVsdGlfZ3AgbXVsdGlfZ3BfY2hvbGVza3kgbXVsdGlfc3R1ZGVudF90IGdhdXNzaWFuX2RsbV9vYnMgZGlyaWNobGV0IGxral9jb3JyIGxral9jb3JyX2Nob2xlc2t5IHdpc2hhcnQgaW52X3dpc2hhcnQiLCJzZWxlY3Rvci10YWciOiJpbnQgcmVhbCB2ZWN0b3Igc2ltcGxleCB1bml0X3ZlY3RvciBvcmRlcmVkIHBvc2l0aXZlX29yZGVyZWQgcm93X3ZlY3RvciBtYXRyaXggY2hvbGVza3lfZmFjdG9yX2NvcnIgY2hvbGVza3lfZmFjdG9yX2NvdiBjb3JyX21hdHJpeCBjb3ZfbWF0cml4Iix0aXRsZToiZnVuY3Rpb25zIG1vZGVsIGRhdGEgcGFyYW1ldGVycyBxdWFudGl0aWVzIHRyYW5zZm9ybWVkIGdlbmVyYXRlZCIsbGl0ZXJhbDoidHJ1ZSBmYWxzZSJ9LHI6MH0se2NOOiJudW1iZXIiLGI6IjBbeFhdWzAtOWEtZkEtRl0rW0xpXT9cXGIiLHI6MH0se2NOOiJudW1iZXIiLGI6IjBbeFhdWzAtOWEtZkEtRl0rW0xpXT9cXGIiLHI6MH0se2NOOiJudW1iZXIiLGI6IlxcZCsoPzpbZUVdWytcXC1dP1xcZCopP0xcXGIiLHI6MH0se2NOOiJudW1iZXIiLGI6IlxcZCtcXC4oPyFcXGQpKD86aVxcYik\/IixyOjB9LHtjTjoibnVtYmVyIixiOiJcXGQrKD86XFwuXFxkKik\/KD86W2VFXVsrXFwtXT9cXGQqKT9pP1xcYiIscjowfSx7Y046Im51bWJlciIsYjoiXFwuXFxkKyg\/OltlRV1bK1xcLV0\/XFxkKik\/aT9cXGIiLHI6MH1dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgiamF2YXNjcmlwdCIsZnVuY3Rpb24oZSl7dmFyIHI9IltBLVphLXokX11bMC05QS1aYS16JF9dKiIsdD17a2V5d29yZDoiaW4gb2YgaWYgZm9yIHdoaWxlIGZpbmFsbHkgdmFyIG5ldyBmdW5jdGlvbiBkbyByZXR1cm4gdm9pZCBlbHNlIGJyZWFrIGNhdGNoIGluc3RhbmNlb2Ygd2l0aCB0aHJvdyBjYXNlIGRlZmF1bHQgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIHR5cGVvZiBkZWxldGUgbGV0IHlpZWxkIGNvbnN0IGV4cG9ydCBzdXBlciBkZWJ1Z2dlciBhcyBhc3luYyBhd2FpdCBzdGF0aWMgaW1wb3J0IGZyb20gYXMiLGxpdGVyYWw6InRydWUgZmFsc2UgbnVsbCB1bmRlZmluZWQgTmFOIEluZmluaXR5IixidWlsdF9pbjoiZXZhbCBpc0Zpbml0ZSBpc05hTiBwYXJzZUZsb2F0IHBhcnNlSW50IGRlY29kZVVSSSBkZWNvZGVVUklDb21wb25lbnQgZW5jb2RlVVJJIGVuY29kZVVSSUNvbXBvbmVudCBlc2NhcGUgdW5lc2NhcGUgT2JqZWN0IEZ1bmN0aW9uIEJvb2xlYW4gRXJyb3IgRXZhbEVycm9yIEludGVybmFsRXJyb3IgUmFuZ2VFcnJvciBSZWZlcmVuY2VFcnJvciBTdG9wSXRlcmF0aW9uIFN5bnRheEVycm9yIFR5cGVFcnJvciBVUklFcnJvciBOdW1iZXIgTWF0aCBEYXRlIFN0cmluZyBSZWdFeHAgQXJyYXkgRmxvYXQzMkFycmF5IEZsb2F0NjRBcnJheSBJbnQxNkFycmF5IEludDMyQXJyYXkgSW50OEFycmF5IFVpbnQxNkFycmF5IFVpbnQzMkFycmF5IFVpbnQ4QXJyYXkgVWludDhDbGFtcGVkQXJyYXkgQXJyYXlCdWZmZXIgRGF0YVZpZXcgSlNPTiBJbnRsIGFyZ3VtZW50cyByZXF1aXJlIG1vZHVsZSBjb25zb2xlIHdpbmRvdyBkb2N1bWVudCBTeW1ib2wgU2V0IE1hcCBXZWFrU2V0IFdlYWtNYXAgUHJveHkgUmVmbGVjdCBQcm9taXNlIn0sYT17Y046Im51bWJlciIsdjpbe2I6IlxcYigwW2JCXVswMV0rKSJ9LHtiOiJcXGIoMFtvT11bMC03XSspIn0se2I6ZS5DTlJ9XSxyOjB9LG49e2NOOiJzdWJzdCIsYjoiXFwkXFx7IixlOiJcXH0iLGs6dCxjOltdfSxjPXtjTjoic3RyaW5nIixiOiJgIixlOiJgIixjOltlLkJFLG5dfTtuLmM9W2UuQVNNLGUuUVNNLGMsYSxlLlJNXTt2YXIgcz1uLmMuY29uY2F0KFtlLkNCQ00sZS5DTENNXSk7cmV0dXJue2FsaWFzZXM6WyJqcyIsImpzeCJdLGs6dCxjOlt7Y046Im1ldGEiLHI6MTAsYjovXlxzKlsnIl11c2UgKHN0cmljdHxhc20pWyciXS99LHtjTjoibWV0YSIsYjovXiMhLyxlOi8kL30sZS5BU00sZS5RU00sYyxlLkNMQ00sZS5DQkNNLGEse2I6L1t7LF1ccyovLHI6MCxjOlt7YjpyKyJcXHMqOiIsckI6ITAscjowLGM6W3tjTjoiYXR0ciIsYjpyLHI6MH1dfV19LHtiOiIoIitlLlJTUisifFxcYihjYXNlfHJldHVybnx0aHJvdylcXGIpXFxzKiIsazoicmV0dXJuIHRocm93IGNhc2UiLGM6W2UuQ0xDTSxlLkNCQ00sZS5STSx7Y046ImZ1bmN0aW9uIixiOiIoXFwoLio\/XFwpfCIrcisiKVxccyo9PiIsckI6ITAsZToiXFxzKj0+IixjOlt7Y046InBhcmFtcyIsdjpbe2I6cn0se2I6L1woXHMqXCkvfSx7YjovXCgvLGU6L1wpLyxlQjohMCxlRTohMCxrOnQsYzpzfV19XX0se2I6LzwvLGU6LyhcL1x3K3xcdytcLyk+LyxzTDoieG1sIixjOlt7YjovPFx3K1xzKlwvPi8sc2tpcDohMH0se2I6LzxcdysvLGU6LyhcL1x3K3xcdytcLyk+Lyxza2lwOiEwLGM6W3tiOi88XHcrXHMqXC8+Lyxza2lwOiEwfSwic2VsZiJdfV19XSxyOjB9LHtjTjoiZnVuY3Rpb24iLGJLOiJmdW5jdGlvbiIsZTovXHsvLGVFOiEwLGM6W2UuaW5oZXJpdChlLlRNLHtiOnJ9KSx7Y046InBhcmFtcyIsYjovXCgvLGU6L1wpLyxlQjohMCxlRTohMCxjOnN9XSxpOi9cW3wlL30se2I6L1wkWyguXS99LGUuTUVUSE9EX0dVQVJELHtjTjoiY2xhc3MiLGJLOiJjbGFzcyIsZTovW3s7PV0vLGVFOiEwLGk6L1s6IlxbXF1dLyxjOlt7Yks6ImV4dGVuZHMifSxlLlVUTV19LHtiSzoiY29uc3RydWN0b3IiLGU6L1x7LyxlRTohMH1dLGk6LyMoPyEhKS99fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJ0ZXgiLGZ1bmN0aW9uKGMpe3ZhciBlPXtjTjoidGFnIixiOi9cXC8scjowLGM6W3tjTjoibmFtZSIsdjpbe2I6L1thLXpBLVrQsC3Rj9CQLdGPXStbKl0\/L30se2I6L1teYS16QS1a0LAt0Y\/QkC3RjzAtOV0vfV0sc3RhcnRzOntlVzohMCxyOjAsYzpbe2NOOiJzdHJpbmciLHY6W3tiOi9cWy8sZTovXF0vfSx7YjovXHsvLGU6L1x9L31dfSx7YjovXHMqPVxzKi8sZVc6ITAscjowLGM6W3tjTjoibnVtYmVyIixiOi8tP1xkKlwuP1xkKyhwdHxwY3xtbXxjbXxpbnxkZHxjY3xleHxlbSk\/L31dfV19fV19O3JldHVybntjOltlLHtjTjoiZm9ybXVsYSIsYzpbZV0scjowLHY6W3tiOi9cJFwkLyxlOi9cJFwkL30se2I6L1wkLyxlOi9cJC99XX0sYy5DKCIlIiwiJCIse3I6MH0pXX19KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoInhtbCIsZnVuY3Rpb24ocyl7dmFyIGU9IltBLVphLXowLTlcXC5fOi1dKyIsdD17ZVc6ITAsaTovPC8scjowLGM6W3tjTjoiYXR0ciIsYjplLHI6MH0se2I6Lz1ccyovLHI6MCxjOlt7Y046InN0cmluZyIsZW5kc1BhcmVudDohMCx2Olt7YjovIi8sZTovIi99LHtiOi8nLyxlOi8nL30se2I6L1teXHMiJz08PmBdKy99XX1dfV19O3JldHVybnthbGlhc2VzOlsiaHRtbCIsInhodG1sIiwicnNzIiwiYXRvbSIsInhqYiIsInhzZCIsInhzbCIsInBsaXN0Il0sY0k6ITAsYzpbe2NOOiJtZXRhIixiOiI8IURPQ1RZUEUiLGU6Ij4iLHI6MTAsYzpbe2I6IlxcWyIsZToiXFxdIn1dfSxzLkMoIjwhLS0iLCItLT4iLHtyOjEwfSkse2I6IjxcXCFcXFtDREFUQVxcWyIsZToiXFxdXFxdPiIscjoxMH0se2I6LzxcPyhwaHApPy8sZTovXD8+LyxzTDoicGhwIixjOlt7YjoiL1xcKiIsZToiXFwqLyIsc2tpcDohMH1dfSx7Y046InRhZyIsYjoiPHN0eWxlKD89XFxzfD58JCkiLGU6Ij4iLGs6e25hbWU6InN0eWxlIn0sYzpbdF0sc3RhcnRzOntlOiI8L3N0eWxlPiIsckU6ITAsc0w6WyJjc3MiLCJ4bWwiXX19LHtjTjoidGFnIixiOiI8c2NyaXB0KD89XFxzfD58JCkiLGU6Ij4iLGs6e25hbWU6InNjcmlwdCJ9LGM6W3RdLHN0YXJ0czp7ZToiPC9zY3JpcHQ+IixyRTohMCxzTDpbImFjdGlvbnNjcmlwdCIsImphdmFzY3JpcHQiLCJoYW5kbGViYXJzIiwieG1sIl19fSx7Y046Im1ldGEiLHY6W3tiOi88XD94bWwvLGU6L1w\/Pi8scjoxMH0se2I6LzxcP1x3Ky8sZTovXD8+L31dfSx7Y046InRhZyIsYjoiPC8\/IixlOiIvPz4iLGM6W3tjTjoibmFtZSIsYjovW15cLz48XHNdKy8scjowfSx0XX1dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgibWFya2Rvd24iLGZ1bmN0aW9uKGUpe3JldHVybnthbGlhc2VzOlsibWQiLCJta2Rvd24iLCJta2QiXSxjOlt7Y046InNlY3Rpb24iLHY6W3tiOiJeI3sxLDZ9IixlOiIkIn0se2I6Il4uKz9cXG5bPS1dezIsfSQifV19LHtiOiI8IixlOiI+IixzTDoieG1sIixyOjB9LHtjTjoiYnVsbGV0IixiOiJeKFsqKy1dfChcXGQrXFwuKSlcXHMrIn0se2NOOiJzdHJvbmciLGI6IlsqX117Mn0uKz9bKl9dezJ9In0se2NOOiJlbXBoYXNpcyIsdjpbe2I6IlxcKi4rP1xcKiJ9LHtiOiJfLis\/XyIscjowfV19LHtjTjoicXVvdGUiLGI6Il4+XFxzKyIsZToiJCJ9LHtjTjoiY29kZSIsdjpbe2I6Il5gYGB3KnMqJCIsZToiXmBgYHMqJCJ9LHtiOiJgLis\/YCJ9LHtiOiJeKCB7NH18CSkiLGU6IiQiLHI6MH1dfSx7YjoiXlstXFwqXXszLH0iLGU6IiQifSx7YjoiXFxbLis\/XFxdW1xcKFxcW10uKj9bXFwpXFxdXSIsckI6ITAsYzpbe2NOOiJzdHJpbmciLGI6IlxcWyIsZToiXFxdIixlQjohMCxyRTohMCxyOjB9LHtjTjoibGluayIsYjoiXFxdXFwoIixlOiJcXCkiLGVCOiEwLGVFOiEwfSx7Y046InN5bWJvbCIsYjoiXFxdXFxbIixlOiJcXF0iLGVCOiEwLGVFOiEwfV0scjoxMH0se2I6L15cW1teXG5dK1xdOi8sckI6ITAsYzpbe2NOOiJzeW1ib2wiLGI6L1xbLyxlOi9cXS8sZUI6ITAsZUU6ITB9LHtjTjoibGluayIsYjovOlxzKi8sZTovJC8sZUI6ITB9XX1dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgianNvbiIsZnVuY3Rpb24oZSl7dmFyIGk9e2xpdGVyYWw6InRydWUgZmFsc2UgbnVsbCJ9LG49W2UuUVNNLGUuQ05NXSxyPXtlOiIsIixlVzohMCxlRTohMCxjOm4sazppfSx0PXtiOiJ7IixlOiJ9IixjOlt7Y046ImF0dHIiLGI6LyIvLGU6LyIvLGM6W2UuQkVdLGk6IlxcbiJ9LGUuaW5oZXJpdChyLHtiOi86L30pXSxpOiJcXFMifSxjPXtiOiJcXFsiLGU6IlxcXSIsYzpbZS5pbmhlcml0KHIpXSxpOiJcXFMifTtyZXR1cm4gbi5zcGxpY2Uobi5sZW5ndGgsMCx0LGMpLHtjOm4sazppLGk6IlxcUyJ9fSk7\"><\/script> <script src=\"data:application\/javascript;base64,LyoqDQogKiBjb3JlLWpzIDIuNi4xMQ0KICogaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMNCiAqIExpY2Vuc2U6IGh0dHA6Ly9yb2NrLm1pdC1saWNlbnNlLm9yZw0KICogwqkgMjAxOSBEZW5pcyBQdXNoa2FyZXYNCiAqLw0KIWZ1bmN0aW9uKGUsaSxKdCl7InVzZSBzdHJpY3QiOyFmdW5jdGlvbihyKXt2YXIgZT17fTtmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKHQpe2lmKGVbdF0pcmV0dXJuIGVbdF0uZXhwb3J0czt2YXIgbj1lW3RdPXtpOnQsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gclt0XS5jYWxsKG4uZXhwb3J0cyxuLG4uZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKSxuLmw9ITAsbi5leHBvcnRzfV9fd2VicGFja19yZXF1aXJlX18ubT1yLF9fd2VicGFja19yZXF1aXJlX18uYz1lLF9fd2VicGFja19yZXF1aXJlX18uZD1mdW5jdGlvbih0LG4scil7X193ZWJwYWNrX3JlcXVpcmVfXy5vKHQsbil8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4se2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLGdldDpyfSl9LF9fd2VicGFja19yZXF1aXJlX18ubj1mdW5jdGlvbih0KXt2YXIgbj10JiZ0Ll9fZXNNb2R1bGU\/ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpe3JldHVybiB0WyJkZWZhdWx0Il19OmZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKXtyZXR1cm4gdH07cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18uZChuLCJhIixuKSxufSxfX3dlYnBhY2tfcmVxdWlyZV9fLm89ZnVuY3Rpb24odCxuKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil9LF9fd2VicGFja19yZXF1aXJlX18ucD0iIixfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucz0xMjkpfShbZnVuY3Rpb24odCxuLHIpe3ZhciB2PXIoMiksZz1yKDI2KSx5PXIoMTEpLGQ9cigxMiksYj1yKDE4KSxTPSJwcm90b3R5cGUiLF89ZnVuY3Rpb24odCxuLHIpe3ZhciBlLGksbyx1LGM9dCZfLkYsYT10Jl8uRyxmPXQmXy5QLHM9dCZfLkIsbD1hP3Y6dCZfLlM\/dltuXXx8KHZbbl09e30pOih2W25dfHx7fSlbU10saD1hP2c6Z1tuXXx8KGdbbl09e30pLHA9aFtTXXx8KGhbU109e30pO2ZvcihlIGluIGEmJihyPW4pLHIpbz0oKGk9IWMmJmwmJmxbZV0hPT1KdCk\/bDpyKVtlXSx1PXMmJmk\/YihvLHYpOmYmJiJmdW5jdGlvbiI9PXR5cGVvZiBvP2IoRnVuY3Rpb24uY2FsbCxvKTpvLGwmJmQobCxlLG8sdCZfLlUpLGhbZV0hPW8mJnkoaCxlLHUpLGYmJnBbZV0hPW8mJihwW2VdPW8pfTt2LmNvcmU9ZyxfLkY9MSxfLkc9MixfLlM9NCxfLlA9OCxfLkI9MTYsXy5XPTMyLF8uVT02NCxfLlI9MTI4LHQuZXhwb3J0cz1ffSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIWUodCkpdGhyb3cgVHlwZUVycm9yKHQrIiBpcyBub3QgYW4gb2JqZWN0ISIpO3JldHVybiB0fX0sZnVuY3Rpb24odCxuKXt2YXIgcj10LmV4cG9ydHM9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5NYXRoPT1NYXRoP3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJnNlbGYuTWF0aD09TWF0aD9zZWxmOkZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCk7Im51bWJlciI9PXR5cGVvZiBpJiYoaT1yKX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiEhdCgpfWNhdGNoKG4pe3JldHVybiEwfX19LGZ1bmN0aW9uKHQsbil7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdD9udWxsIT09dDoiZnVuY3Rpb24iPT10eXBlb2YgdH19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDQ3KSgid2tzIiksaT1yKDMzKSxvPXIoMikuU3ltYm9sLHU9ImZ1bmN0aW9uIj09dHlwZW9mIG87KHQuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gZVt0XXx8KGVbdF09dSYmb1t0XXx8KHU\/bzppKSgiU3ltYm9sLiIrdCkpfSkuc3RvcmU9ZX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMjApLGk9TWF0aC5taW47dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiAwPHQ\/aShlKHQpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSxmdW5jdGlvbih0LG4scil7dC5leHBvcnRzPSFyKDMpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBpPXIoMSksbz1yKDkzKSx1PXIoMjIpLGM9T2JqZWN0LmRlZmluZVByb3BlcnR5O24uZj1yKDcpP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eSh0LG4scil7aWYoaSh0KSxuPXUobiwhMCksaShyKSxvKXRyeXtyZXR1cm4gYyh0LG4scil9Y2F0Y2goZSl7fWlmKCJnZXQiaW4gcnx8InNldCJpbiByKXRocm93IFR5cGVFcnJvcigiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhIik7cmV0dXJuInZhbHVlImluIHImJih0W25dPXIudmFsdWUpLHR9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyMyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QoZSh0KSl9fSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBUeXBlRXJyb3IodCsiIGlzIG5vdCBhIGZ1bmN0aW9uISIpO3JldHVybiB0fX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoOCksaT1yKDMyKTt0LmV4cG9ydHM9cig3KT9mdW5jdGlvbih0LG4scil7cmV0dXJuIGUuZih0LG4saSgxLHIpKX06ZnVuY3Rpb24odCxuLHIpe3JldHVybiB0W25dPXIsdH19LGZ1bmN0aW9uKHQsbixyKXt2YXIgbz1yKDIpLHU9cigxMSksYz1yKDE0KSxhPXIoMzMpKCJzcmMiKSxlPXIoMTMxKSxpPSJ0b1N0cmluZyIsZj0oIiIrZSkuc3BsaXQoaSk7cigyNikuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbih0KXtyZXR1cm4gZS5jYWxsKHQpfSwodC5leHBvcnRzPWZ1bmN0aW9uKHQsbixyLGUpe3ZhciBpPSJmdW5jdGlvbiI9PXR5cGVvZiByO2kmJihjKHIsIm5hbWUiKXx8dShyLCJuYW1lIixuKSksdFtuXSE9PXImJihpJiYoYyhyLGEpfHx1KHIsYSx0W25dPyIiK3Rbbl06Zi5qb2luKFN0cmluZyhuKSkpKSx0PT09bz90W25dPXI6ZT90W25dP3Rbbl09cjp1KHQsbixyKTooZGVsZXRlIHRbbl0sdSh0LG4scikpKX0pKEZ1bmN0aW9uLnByb3RvdHlwZSxpLGZ1bmN0aW9uIHRvU3RyaW5nKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMmJnRoaXNbYV18fGUuY2FsbCh0aGlzKX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoMyksdT1yKDIzKSxjPS8iL2csbz1mdW5jdGlvbih0LG4scixlKXt2YXIgaT1TdHJpbmcodSh0KSksbz0iPCIrbjtyZXR1cm4iIiE9PXImJihvKz0iICIrcisnPSInK1N0cmluZyhlKS5yZXBsYWNlKGMsIiZxdW90OyIpKyciJyksbysiPiIraSsiPC8iK24rIj4ifTt0LmV4cG9ydHM9ZnVuY3Rpb24obix0KXt2YXIgcj17fTtyW25dPXQobyksZShlLlArZS5GKmkoZnVuY3Rpb24oKXt2YXIgdD0iIltuXSgnIicpO3JldHVybiB0IT09dC50b0xvd2VyQ2FzZSgpfHwzPHQuc3BsaXQoJyInKS5sZW5ndGh9KSwiU3RyaW5nIixyKX19LGZ1bmN0aW9uKHQsbil7dmFyIHI9e30uaGFzT3duUHJvcGVydHk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHIuY2FsbCh0LG4pfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoNDgpLGk9cigyMyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBlKGkodCkpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoNDkpLGk9cigzMiksbz1yKDE1KSx1PXIoMjIpLGM9cigxNCksYT1yKDkzKSxmPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7bi5mPXIoNyk\/ZjpmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKXtpZih0PW8odCksbj11KG4sITApLGEpdHJ5e3JldHVybiBmKHQsbil9Y2F0Y2gocil7fWlmKGModCxuKSlyZXR1cm4gaSghZS5mLmNhbGwodCxuKSx0W25dKX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDE0KSxpPXIoOSksbz1yKDY4KSgiSUVfUFJPVE8iKSx1PU9iamVjdC5wcm90b3R5cGU7dC5leHBvcnRzPU9iamVjdC5nZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24odCl7cmV0dXJuIHQ9aSh0KSxlKHQsbyk\/dFtvXToiZnVuY3Rpb24iPT10eXBlb2YgdC5jb25zdHJ1Y3RvciYmdCBpbnN0YW5jZW9mIHQuY29uc3RydWN0b3I\/dC5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6dCBpbnN0YW5jZW9mIE9iamVjdD91Om51bGx9fSxmdW5jdGlvbih0LG4scil7dmFyIG89cigxMCk7dC5leHBvcnRzPWZ1bmN0aW9uKGUsaSx0KXtpZihvKGUpLGk9PT1KdClyZXR1cm4gZTtzd2l0Y2godCl7Y2FzZSAxOnJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5jYWxsKGksdCl9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5jYWxsKGksdCxuKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIGUuY2FsbChpLHQsbixyKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkoaSxhcmd1bWVudHMpfX19LGZ1bmN0aW9uKHQsbil7dmFyIHI9e30udG9TdHJpbmc7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiByLmNhbGwodCkuc2xpY2UoOCwtMSl9fSxmdW5jdGlvbih0LG4pe3ZhciByPU1hdGguY2VpbCxlPU1hdGguZmxvb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBpc05hTih0PSt0KT8wOigwPHQ\/ZTpyKSh0KX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDMpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3JldHVybiEhdCYmZShmdW5jdGlvbigpe24\/dC5jYWxsKG51bGwsZnVuY3Rpb24oKXt9LDEpOnQuY2FsbChudWxsKX0pfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBpPXIoNCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7aWYoIWkodCkpcmV0dXJuIHQ7dmFyIHIsZTtpZihuJiYiZnVuY3Rpb24iPT10eXBlb2Yocj10LnRvU3RyaW5nKSYmIWkoZT1yLmNhbGwodCkpKXJldHVybiBlO2lmKCJmdW5jdGlvbiI9PXR5cGVvZihyPXQudmFsdWVPZikmJiFpKGU9ci5jYWxsKHQpKSlyZXR1cm4gZTtpZighbiYmImZ1bmN0aW9uIj09dHlwZW9mKHI9dC50b1N0cmluZykmJiFpKGU9ci5jYWxsKHQpKSlyZXR1cm4gZTt0aHJvdyBUeXBlRXJyb3IoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYodD09SnQpdGhyb3cgVHlwZUVycm9yKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgIit0KTtyZXR1cm4gdH19LGZ1bmN0aW9uKHQsbixyKXt2YXIgaT1yKDApLG89cigyNiksdT1yKDMpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3ZhciByPShvLk9iamVjdHx8e30pW3RdfHxPYmplY3RbdF0sZT17fTtlW3RdPW4ociksaShpLlMraS5GKnUoZnVuY3Rpb24oKXtyKDEpfSksIk9iamVjdCIsZSl9fSxmdW5jdGlvbih0LG4scil7dmFyIFM9cigxOCksXz1yKDQ4KSx4PXIoOSksbT1yKDYpLGU9cig4NCk7dC5leHBvcnRzPWZ1bmN0aW9uKGwsdCl7dmFyIGg9MT09bCxwPTI9PWwsdj0zPT1sLGc9ND09bCx5PTY9PWwsZD01PT1sfHx5LGI9dHx8ZTtyZXR1cm4gZnVuY3Rpb24odCxuLHIpe2Zvcih2YXIgZSxpLG89eCh0KSx1PV8obyksYz1TKG4sciwzKSxhPW0odS5sZW5ndGgpLGY9MCxzPWg\/Yih0LGEpOnA\/Yih0LDApOkp0O2Y8YTtmKyspaWYoKGR8fGYgaW4gdSkmJihpPWMoZT11W2ZdLGYsbyksbCkpaWYoaClzW2ZdPWk7ZWxzZSBpZihpKXN3aXRjaChsKXtjYXNlIDM6cmV0dXJuITA7Y2FzZSA1OnJldHVybiBlO2Nhc2UgNjpyZXR1cm4gZjtjYXNlIDI6cy5wdXNoKGUpfWVsc2UgaWYoZylyZXR1cm4hMTtyZXR1cm4geT8tMTp2fHxnP2c6c319fSxmdW5jdGlvbih0LG4pe3ZhciByPXQuZXhwb3J0cz17dmVyc2lvbjoiMi42LjExIn07Im51bWJlciI9PXR5cGVvZiBlJiYoZT1yKX0sZnVuY3Rpb24odCxuLHIpe2lmKHIoNykpe3ZhciB5PXIoMjkpLGQ9cigyKSxiPXIoMyksUz1yKDApLF89cig2MiksZT1yKDkyKSxoPXIoMTgpLHg9cigzOSksaT1yKDMyKSxtPXIoMTEpLG89cig0MSksdT1yKDIwKSx3PXIoNiksRT1yKDEyMiksYz1yKDM1KSxhPXIoMjIpLGY9cigxNCksTz1yKDQ0KSxNPXIoNCkscD1yKDkpLHY9cig4MSksST1yKDM2KSxQPXIoMTcpLEY9cigzNykuZixnPXIoODMpLHM9cigzMyksbD1yKDUpLEE9cigyNSksaz1yKDUyKSxOPXIoNTEpLGo9cig4NiksUj1yKDQ2KSxUPXIoNTcpLEw9cigzOCksRD1yKDg1KSxDPXIoMTEwKSxVPXIoOCksVz1yKDE2KSxHPVUuZixWPVcuZixCPWQuUmFuZ2VFcnJvcix6PWQuVHlwZUVycm9yLHE9ZC5VaW50OEFycmF5LEs9IkFycmF5QnVmZmVyIixKPSJTaGFyZWQiK0ssWT0iQllURVNfUEVSX0VMRU1FTlQiLCQ9InByb3RvdHlwZSIsWD1BcnJheVskXSxIPWUuQXJyYXlCdWZmZXIsWj1lLkRhdGFWaWV3LFE9QSgwKSx0dD1BKDIpLG50PUEoMykscnQ9QSg0KSxldD1BKDUpLGl0PUEoNiksb3Q9ayghMCksdXQ9ayghMSksY3Q9ai52YWx1ZXMsYXQ9ai5rZXlzLGZ0PWouZW50cmllcyxzdD1YLmxhc3RJbmRleE9mLGx0PVgucmVkdWNlLGh0PVgucmVkdWNlUmlnaHQscHQ9WC5qb2luLHZ0PVguc29ydCxndD1YLnNsaWNlLHl0PVgudG9TdHJpbmcsZHQ9WC50b0xvY2FsZVN0cmluZyxidD1sKCJpdGVyYXRvciIpLFN0PWwoInRvU3RyaW5nVGFnIiksX3Q9cygidHlwZWRfY29uc3RydWN0b3IiKSx4dD1zKCJkZWZfY29uc3RydWN0b3IiKSxtdD1fLkNPTlNUUix3dD1fLlRZUEVELEV0PV8uVklFVyxPdD0iV3JvbmcgbGVuZ3RoISIsTXQ9QSgxLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGt0KE4odCx0W3h0XSksbil9KSxJdD1iKGZ1bmN0aW9uKCl7cmV0dXJuIDE9PT1uZXcgcShuZXcgVWludDE2QXJyYXkoWzFdKS5idWZmZXIpWzBdfSksUHQ9ISFxJiYhIXFbJF0uc2V0JiZiKGZ1bmN0aW9uKCl7bmV3IHEoMSkuc2V0KHt9KX0pLEZ0PWZ1bmN0aW9uKHQsbil7dmFyIHI9dSh0KTtpZihyPDB8fHIlbil0aHJvdyBCKCJXcm9uZyBvZmZzZXQhIik7cmV0dXJuIHJ9LEF0PWZ1bmN0aW9uKHQpe2lmKE0odCkmJnd0IGluIHQpcmV0dXJuIHQ7dGhyb3cgeih0KyIgaXMgbm90IGEgdHlwZWQgYXJyYXkhIil9LGt0PWZ1bmN0aW9uKHQsbil7aWYoIShNKHQpJiZfdCBpbiB0KSl0aHJvdyB6KCJJdCBpcyBub3QgYSB0eXBlZCBhcnJheSBjb25zdHJ1Y3RvciEiKTtyZXR1cm4gbmV3IHQobil9LE50PWZ1bmN0aW9uKHQsbil7cmV0dXJuIGp0KE4odCx0W3h0XSksbil9LGp0PWZ1bmN0aW9uKHQsbil7Zm9yKHZhciByPTAsZT1uLmxlbmd0aCxpPWt0KHQsZSk7cjxlOylpW3JdPW5bcisrXTtyZXR1cm4gaX0sUnQ9ZnVuY3Rpb24odCxuLHIpe0codCxuLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZFtyXX19KX0sVHQ9ZnVuY3Rpb24gZnJvbSh0KXt2YXIgbixyLGUsaSxvLHUsYz1wKHQpLGE9YXJndW1lbnRzLmxlbmd0aCxmPTE8YT9hcmd1bWVudHNbMV06SnQscz1mIT09SnQsbD1nKGMpO2lmKGwhPUp0JiYhdihsKSl7Zm9yKHU9bC5jYWxsKGMpLGU9W10sbj0wOyEobz11Lm5leHQoKSkuZG9uZTtuKyspZS5wdXNoKG8udmFsdWUpO2M9ZX1mb3IocyYmMjxhJiYoZj1oKGYsYXJndW1lbnRzWzJdLDIpKSxuPTAscj13KGMubGVuZ3RoKSxpPWt0KHRoaXMscik7bjxyO24rKylpW25dPXM\/ZihjW25dLG4pOmNbbl07cmV0dXJuIGl9LEx0PWZ1bmN0aW9uIG9mKCl7Zm9yKHZhciB0PTAsbj1hcmd1bWVudHMubGVuZ3RoLHI9a3QodGhpcyxuKTt0PG47KXJbdF09YXJndW1lbnRzW3QrK107cmV0dXJuIHJ9LER0PSEhcSYmYihmdW5jdGlvbigpe2R0LmNhbGwobmV3IHEoMSkpfSksQ3Q9ZnVuY3Rpb24gdG9Mb2NhbGVTdHJpbmcoKXtyZXR1cm4gZHQuYXBwbHkoRHQ\/Z3QuY2FsbChBdCh0aGlzKSk6QXQodGhpcyksYXJndW1lbnRzKX0sVXQ9e2NvcHlXaXRoaW46ZnVuY3Rpb24gY29weVdpdGhpbih0LG4pe3JldHVybiBDLmNhbGwoQXQodGhpcyksdCxuLDI8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMl06SnQpfSxldmVyeTpmdW5jdGlvbiBldmVyeSh0KXtyZXR1cm4gcnQoQXQodGhpcyksdCwxPGFyZ3VtZW50cy5sZW5ndGg\/YXJndW1lbnRzWzFdOkp0KX0sZmlsbDpmdW5jdGlvbiBmaWxsKHQpe3JldHVybiBELmFwcGx5KEF0KHRoaXMpLGFyZ3VtZW50cyl9LGZpbHRlcjpmdW5jdGlvbiBmaWx0ZXIodCl7cmV0dXJuIE50KHRoaXMsdHQoQXQodGhpcyksdCwxPGFyZ3VtZW50cy5sZW5ndGg\/YXJndW1lbnRzWzFdOkp0KSl9LGZpbmQ6ZnVuY3Rpb24gZmluZCh0KXtyZXR1cm4gZXQoQXQodGhpcyksdCwxPGFyZ3VtZW50cy5sZW5ndGg\/YXJndW1lbnRzWzFdOkp0KX0sZmluZEluZGV4OmZ1bmN0aW9uIGZpbmRJbmRleCh0KXtyZXR1cm4gaXQoQXQodGhpcyksdCwxPGFyZ3VtZW50cy5sZW5ndGg\/YXJndW1lbnRzWzFdOkp0KX0sZm9yRWFjaDpmdW5jdGlvbiBmb3JFYWNoKHQpe1EoQXQodGhpcyksdCwxPGFyZ3VtZW50cy5sZW5ndGg\/YXJndW1lbnRzWzFdOkp0KX0saW5kZXhPZjpmdW5jdGlvbiBpbmRleE9mKHQpe3JldHVybiB1dChBdCh0aGlzKSx0LDE8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMV06SnQpfSxpbmNsdWRlczpmdW5jdGlvbiBpbmNsdWRlcyh0KXtyZXR1cm4gb3QoQXQodGhpcyksdCwxPGFyZ3VtZW50cy5sZW5ndGg\/YXJndW1lbnRzWzFdOkp0KX0sam9pbjpmdW5jdGlvbiBqb2luKHQpe3JldHVybiBwdC5hcHBseShBdCh0aGlzKSxhcmd1bWVudHMpfSxsYXN0SW5kZXhPZjpmdW5jdGlvbiBsYXN0SW5kZXhPZih0KXtyZXR1cm4gc3QuYXBwbHkoQXQodGhpcyksYXJndW1lbnRzKX0sbWFwOmZ1bmN0aW9uIG1hcCh0KXtyZXR1cm4gTXQoQXQodGhpcyksdCwxPGFyZ3VtZW50cy5sZW5ndGg\/YXJndW1lbnRzWzFdOkp0KX0scmVkdWNlOmZ1bmN0aW9uIHJlZHVjZSh0KXtyZXR1cm4gbHQuYXBwbHkoQXQodGhpcyksYXJndW1lbnRzKX0scmVkdWNlUmlnaHQ6ZnVuY3Rpb24gcmVkdWNlUmlnaHQodCl7cmV0dXJuIGh0LmFwcGx5KEF0KHRoaXMpLGFyZ3VtZW50cyl9LHJldmVyc2U6ZnVuY3Rpb24gcmV2ZXJzZSgpe2Zvcih2YXIgdCxuPXRoaXMscj1BdChuKS5sZW5ndGgsZT1NYXRoLmZsb29yKHIvMiksaT0wO2k8ZTspdD1uW2ldLG5baSsrXT1uWy0tcl0sbltyXT10O3JldHVybiBufSxzb21lOmZ1bmN0aW9uIHNvbWUodCl7cmV0dXJuIG50KEF0KHRoaXMpLHQsMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1sxXTpKdCl9LHNvcnQ6ZnVuY3Rpb24gc29ydCh0KXtyZXR1cm4gdnQuY2FsbChBdCh0aGlzKSx0KX0sc3ViYXJyYXk6ZnVuY3Rpb24gc3ViYXJyYXkodCxuKXt2YXIgcj1BdCh0aGlzKSxlPXIubGVuZ3RoLGk9Yyh0LGUpO3JldHVybiBuZXcoTihyLHJbeHRdKSkoci5idWZmZXIsci5ieXRlT2Zmc2V0K2kqci5CWVRFU19QRVJfRUxFTUVOVCx3KChuPT09SnQ\/ZTpjKG4sZSkpLWkpKX19LFd0PWZ1bmN0aW9uIHNsaWNlKHQsbil7cmV0dXJuIE50KHRoaXMsZ3QuY2FsbChBdCh0aGlzKSx0LG4pKX0sR3Q9ZnVuY3Rpb24gc2V0KHQpe0F0KHRoaXMpO3ZhciBuPUZ0KGFyZ3VtZW50c1sxXSwxKSxyPXRoaXMubGVuZ3RoLGU9cCh0KSxpPXcoZS5sZW5ndGgpLG89MDtpZihyPGkrbil0aHJvdyBCKE90KTtmb3IoO288aTspdGhpc1tuK29dPWVbbysrXX0sVnQ9e2VudHJpZXM6ZnVuY3Rpb24gZW50cmllcygpe3JldHVybiBmdC5jYWxsKEF0KHRoaXMpKX0sa2V5czpmdW5jdGlvbiBrZXlzKCl7cmV0dXJuIGF0LmNhbGwoQXQodGhpcykpfSx2YWx1ZXM6ZnVuY3Rpb24gdmFsdWVzKCl7cmV0dXJuIGN0LmNhbGwoQXQodGhpcykpfX0sQnQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gTSh0KSYmdFt3dF0mJiJzeW1ib2wiIT10eXBlb2YgbiYmbiBpbiB0JiZTdHJpbmcoK24pPT1TdHJpbmcobil9LHp0PWZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pe3JldHVybiBCdCh0LG49YShuLCEwKSk\/aSgyLHRbbl0pOlYodCxuKX0scXQ9ZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkodCxuLHIpe3JldHVybiEoQnQodCxuPWEobiwhMCkpJiZNKHIpJiZmKHIsInZhbHVlIikpfHxmKHIsImdldCIpfHxmKHIsInNldCIpfHxyLmNvbmZpZ3VyYWJsZXx8ZihyLCJ3cml0YWJsZSIpJiYhci53cml0YWJsZXx8ZihyLCJlbnVtZXJhYmxlIikmJiFyLmVudW1lcmFibGU\/Ryh0LG4scik6KHRbbl09ci52YWx1ZSx0KX07bXR8fChXLmY9enQsVS5mPXF0KSxTKFMuUytTLkYqIW10LCJPYmplY3QiLHtnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6enQsZGVmaW5lUHJvcGVydHk6cXR9KSxiKGZ1bmN0aW9uKCl7eXQuY2FsbCh7fSl9KSYmKHl0PWR0PWZ1bmN0aW9uIHRvU3RyaW5nKCl7cmV0dXJuIHB0LmNhbGwodGhpcyl9KTt2YXIgS3Q9byh7fSxVdCk7byhLdCxWdCksbShLdCxidCxWdC52YWx1ZXMpLG8oS3Qse3NsaWNlOld0LHNldDpHdCxjb25zdHJ1Y3RvcjpmdW5jdGlvbigpe30sdG9TdHJpbmc6eXQsdG9Mb2NhbGVTdHJpbmc6Q3R9KSxSdChLdCwiYnVmZmVyIiwiYiIpLFJ0KEt0LCJieXRlT2Zmc2V0IiwibyIpLFJ0KEt0LCJieXRlTGVuZ3RoIiwibCIpLFJ0KEt0LCJsZW5ndGgiLCJlIiksRyhLdCxTdCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbd3RdfX0pLHQuZXhwb3J0cz1mdW5jdGlvbih0LGwsbixvKXt2YXIgaD10Kygobz0hIW8pPyJDbGFtcGVkIjoiIikrIkFycmF5IixyPSJnZXQiK3QsdT0ic2V0Iit0LHA9ZFtoXSxjPXB8fHt9LGU9cCYmUChwKSxpPXt9LGE9cCYmcFskXSx2PWZ1bmN0aW9uKHQsaSl7Ryh0LGkse2dldDpmdW5jdGlvbigpe3JldHVybih0PXRoaXMuX2QpLnZbcl0oaSpsK3QubyxJdCk7dmFyIHR9LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gbj1pLHI9dCxlPXRoaXMuX2QsbyYmKHI9KHI9TWF0aC5yb3VuZChyKSk8MD8wOjI1NTxyPzI1NToyNTUmciksdm9pZCBlLnZbdV0obipsK2UubyxyLEl0KTt2YXIgbixyLGV9LGVudW1lcmFibGU6ITB9KX07IXB8fCFfLkFCVj8ocD1uKGZ1bmN0aW9uKHQsbixyLGUpe3godCxwLGgsIl9kIik7dmFyIGksbyx1LGMsYT0wLGY9MDtpZihNKG4pKXtpZighKG4gaW5zdGFuY2VvZiBIfHwoYz1PKG4pKT09S3x8Yz09SikpcmV0dXJuIHd0IGluIG4\/anQocCxuKTpUdC5jYWxsKHAsbik7aT1uLGY9RnQocixsKTt2YXIgcz1uLmJ5dGVMZW5ndGg7aWYoZT09PUp0KXtpZihzJWwpdGhyb3cgQihPdCk7aWYoKG89cy1mKTwwKXRocm93IEIoT3QpfWVsc2UgaWYoczwobz13KGUpKmwpK2YpdGhyb3cgQihPdCk7dT1vL2x9ZWxzZSB1PUUobiksaT1uZXcgSChvPXUqbCk7Zm9yKG0odCwiX2QiLHtiOmksbzpmLGw6byxlOnUsdjpuZXcgWihpKX0pO2E8dTspdih0LGErKyl9KSxhPXBbJF09SShLdCksbShhLCJjb25zdHJ1Y3RvciIscCkpOmIoZnVuY3Rpb24oKXtwKDEpfSkmJmIoZnVuY3Rpb24oKXtuZXcgcCgtMSl9KSYmVChmdW5jdGlvbih0KXtuZXcgcCxuZXcgcChudWxsKSxuZXcgcCgxLjUpLG5ldyBwKHQpfSwhMCl8fChwPW4oZnVuY3Rpb24odCxuLHIsZSl7dmFyIGk7cmV0dXJuIHgodCxwLGgpLE0obik\/biBpbnN0YW5jZW9mIEh8fChpPU8obikpPT1LfHxpPT1KP2UhPT1KdD9uZXcgYyhuLEZ0KHIsbCksZSk6ciE9PUp0P25ldyBjKG4sRnQocixsKSk6bmV3IGMobik6d3QgaW4gbj9qdChwLG4pOlR0LmNhbGwocCxuKTpuZXcgYyhFKG4pKX0pLFEoZSE9PUZ1bmN0aW9uLnByb3RvdHlwZT9GKGMpLmNvbmNhdChGKGUpKTpGKGMpLGZ1bmN0aW9uKHQpe3QgaW4gcHx8bShwLHQsY1t0XSl9KSxwWyRdPWEseXx8KGEuY29uc3RydWN0b3I9cCkpO3ZhciBmPWFbYnRdLHM9ISFmJiYoInZhbHVlcyI9PWYubmFtZXx8Zi5uYW1lPT1KdCksZz1WdC52YWx1ZXM7bShwLF90LCEwKSxtKGEsd3QsaCksbShhLEV0LCEwKSxtKGEseHQscCksKG8\/bmV3IHAoMSlbU3RdPT1oOlN0IGluIGEpfHxHKGEsU3Qse2dldDpmdW5jdGlvbigpe3JldHVybiBofX0pLFMoUy5HK1MuVytTLkYqKChpW2hdPXApIT1jKSxpKSxTKFMuUyxoLHtCWVRFU19QRVJfRUxFTUVOVDpsfSksUyhTLlMrUy5GKmIoZnVuY3Rpb24oKXtjLm9mLmNhbGwocCwxKX0pLGgse2Zyb206VHQsb2Y6THR9KSxZIGluIGF8fG0oYSxZLGwpLFMoUy5QLGgsVXQpLEwoaCksUyhTLlArUy5GKlB0LGgse3NldDpHdH0pLFMoUy5QK1MuRiohcyxoLFZ0KSx5fHxhLnRvU3RyaW5nPT15dHx8KGEudG9TdHJpbmc9eXQpLFMoUy5QK1MuRipiKGZ1bmN0aW9uKCl7bmV3IHAoMSkuc2xpY2UoKX0pLGgse3NsaWNlOld0fSksUyhTLlArUy5GKihiKGZ1bmN0aW9uKCl7cmV0dXJuWzEsMl0udG9Mb2NhbGVTdHJpbmcoKSE9bmV3IHAoWzEsMl0pLnRvTG9jYWxlU3RyaW5nKCl9KXx8IWIoZnVuY3Rpb24oKXthLnRvTG9jYWxlU3RyaW5nLmNhbGwoWzEsMl0pfSkpLGgse3RvTG9jYWxlU3RyaW5nOkN0fSksUltoXT1zP2Y6Zyx5fHxzfHxtKGEsYnQsZyl9fWVsc2UgdC5leHBvcnRzPWZ1bmN0aW9uKCl7fX0sZnVuY3Rpb24odCxuLHIpe3ZhciBvPXIoMTE2KSxlPXIoMCksaT1yKDQ3KSgibWV0YWRhdGEiKSx1PWkuc3RvcmV8fChpLnN0b3JlPW5ldyhyKDExOSkpKSxjPWZ1bmN0aW9uKHQsbixyKXt2YXIgZT11LmdldCh0KTtpZighZSl7aWYoIXIpcmV0dXJuIEp0O3Uuc2V0KHQsZT1uZXcgbyl9dmFyIGk9ZS5nZXQobik7aWYoIWkpe2lmKCFyKXJldHVybiBKdDtlLnNldChuLGk9bmV3IG8pfXJldHVybiBpfTt0LmV4cG9ydHM9e3N0b3JlOnUsbWFwOmMsaGFzOmZ1bmN0aW9uKHQsbixyKXt2YXIgZT1jKG4sciwhMSk7cmV0dXJuIGUhPT1KdCYmZS5oYXModCl9LGdldDpmdW5jdGlvbih0LG4scil7dmFyIGU9YyhuLHIsITEpO3JldHVybiBlPT09SnQ\/SnQ6ZS5nZXQodCl9LHNldDpmdW5jdGlvbih0LG4scixlKXtjKHIsZSwhMCkuc2V0KHQsbil9LGtleXM6ZnVuY3Rpb24odCxuKXt2YXIgcj1jKHQsbiwhMSksZT1bXTtyZXR1cm4gciYmci5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7ZS5wdXNoKG4pfSksZX0sa2V5OmZ1bmN0aW9uKHQpe3JldHVybiB0PT09SnR8fCJzeW1ib2wiPT10eXBlb2YgdD90OlN0cmluZyh0KX0sZXhwOmZ1bmN0aW9uKHQpe2UoZS5TLCJSZWZsZWN0Iix0KX19fSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz0hMX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMzMpKCJtZXRhIiksaT1yKDQpLG89cigxNCksdT1yKDgpLmYsYz0wLGE9T2JqZWN0LmlzRXh0ZW5zaWJsZXx8ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZj0hcigzKShmdW5jdGlvbigpe3JldHVybiBhKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7fSkpfSkscz1mdW5jdGlvbih0KXt1KHQsZSx7dmFsdWU6e2k6Ik8iKyArK2Msdzp7fX19KX0sbD10LmV4cG9ydHM9e0tFWTplLE5FRUQ6ITEsZmFzdEtleTpmdW5jdGlvbih0LG4pe2lmKCFpKHQpKXJldHVybiJzeW1ib2wiPT10eXBlb2YgdD90Oigic3RyaW5nIj09dHlwZW9mIHQ\/IlMiOiJQIikrdDtpZighbyh0LGUpKXtpZighYSh0KSlyZXR1cm4iRiI7aWYoIW4pcmV0dXJuIkUiO3ModCl9cmV0dXJuIHRbZV0uaX0sZ2V0V2VhazpmdW5jdGlvbih0LG4pe2lmKCFvKHQsZSkpe2lmKCFhKHQpKXJldHVybiEwO2lmKCFuKXJldHVybiExO3ModCl9cmV0dXJuIHRbZV0ud30sb25GcmVlemU6ZnVuY3Rpb24odCl7cmV0dXJuIGYmJmwuTkVFRCYmYSh0KSYmIW8odCxlKSYmcyh0KSx0fX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDUpKCJ1bnNjb3BhYmxlcyIpLGk9QXJyYXkucHJvdG90eXBlO2lbZV09PUp0JiZyKDExKShpLGUse30pLHQuZXhwb3J0cz1mdW5jdGlvbih0KXtpW2VdW3RdPSEwfX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtyZXR1cm57ZW51bWVyYWJsZTohKDEmdCksY29uZmlndXJhYmxlOiEoMiZ0KSx3cml0YWJsZTohKDQmdCksdmFsdWU6bn19fSxmdW5jdGlvbih0LG4pe3ZhciByPTAsZT1NYXRoLnJhbmRvbSgpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4iU3ltYm9sKCIuY29uY2F0KHQ9PT1KdD8iIjp0LCIpXyIsKCsrcitlKS50b1N0cmluZygzNikpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoOTUpLGk9cig2OSk7dC5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbiBrZXlzKHQpe3JldHVybiBlKHQsaSl9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyMCksaT1NYXRoLm1heCxvPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3JldHVybih0PWUodCkpPDA\/aSh0K24sMCk6byh0LG4pfX0sZnVuY3Rpb24odCxuLGUpe3ZhciBpPWUoMSksbz1lKDk2KSx1PWUoNjkpLGM9ZSg2OCkoIklFX1BST1RPIiksYT1mdW5jdGlvbigpe30sZj0icHJvdG90eXBlIixzPWZ1bmN0aW9uKCl7dmFyIHQsbj1lKDY2KSgiaWZyYW1lIikscj11Lmxlbmd0aDtmb3Iobi5zdHlsZS5kaXNwbGF5PSJub25lIixlKDcwKS5hcHBlbmRDaGlsZChuKSxuLnNyYz0iamF2YXNjcmlwdDoiLCh0PW4uY29udGVudFdpbmRvdy5kb2N1bWVudCkub3BlbigpLHQud3JpdGUoIjxzY3JpcHQ+ZG9jdW1lbnQuRj1PYmplY3Q8XC9zY3JpcHQ+IiksdC5jbG9zZSgpLHM9dC5GO3ItLTspZGVsZXRlIHNbZl1bdVtyXV07cmV0dXJuIHMoKX07dC5leHBvcnRzPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uIGNyZWF0ZSh0LG4pe3ZhciByO3JldHVybiBudWxsIT09dD8oYVtmXT1pKHQpLHI9bmV3IGEsYVtmXT1udWxsLHJbY109dCk6cj1zKCksbj09PUp0P3I6byhyLG4pfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoOTUpLGk9cig2OSkuY29uY2F0KCJsZW5ndGgiLCJwcm90b3R5cGUiKTtuLmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXModCl7cmV0dXJuIGUodCxpKX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDIpLGk9cig4KSxvPXIoNyksdT1yKDUpKCJzcGVjaWVzIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBuPWVbdF07byYmbiYmIW5bdV0mJmkuZihuLHUse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319KX19LGZ1bmN0aW9uKHQsbil7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbixyLGUpe2lmKCEodCBpbnN0YW5jZW9mIG4pfHxlIT09SnQmJmUgaW4gdCl0aHJvdyBUeXBlRXJyb3IocisiOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEiKTtyZXR1cm4gdH19LGZ1bmN0aW9uKHQsbixyKXt2YXIgaD1yKDE4KSxwPXIoMTA4KSx2PXIoODEpLGc9cigxKSx5PXIoNiksZD1yKDgzKSxiPXt9LFM9e307KG49dC5leHBvcnRzPWZ1bmN0aW9uKHQsbixyLGUsaSl7dmFyIG8sdSxjLGEsZj1pP2Z1bmN0aW9uKCl7cmV0dXJuIHR9OmQodCkscz1oKHIsZSxuPzI6MSksbD0wO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBmKXRocm93IFR5cGVFcnJvcih0KyIgaXMgbm90IGl0ZXJhYmxlISIpO2lmKHYoZikpe2ZvcihvPXkodC5sZW5ndGgpO2w8bztsKyspaWYoKGE9bj9zKGcodT10W2xdKVswXSx1WzFdKTpzKHRbbF0pKT09PWJ8fGE9PT1TKXJldHVybiBhfWVsc2UgZm9yKGM9Zi5jYWxsKHQpOyEodT1jLm5leHQoKSkuZG9uZTspaWYoKGE9cChjLHMsdS52YWx1ZSxuKSk9PT1ifHxhPT09UylyZXR1cm4gYX0pLkJSRUFLPWIsbi5SRVRVUk49U30sZnVuY3Rpb24odCxuLHIpe3ZhciBpPXIoMTIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4scil7Zm9yKHZhciBlIGluIG4paSh0LGUsbltlXSxyKTtyZXR1cm4gdH19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDQpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe2lmKCFlKHQpfHx0Ll90IT09bil0aHJvdyBUeXBlRXJyb3IoIkluY29tcGF0aWJsZSByZWNlaXZlciwgIituKyIgcmVxdWlyZWQhIik7cmV0dXJuIHR9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig4KS5mLGk9cigxNCksbz1yKDUpKCJ0b1N0cmluZ1RhZyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4scil7dCYmIWkodD1yP3Q6dC5wcm90b3R5cGUsbykmJmUodCxvLHtjb25maWd1cmFibGU6ITAsdmFsdWU6bn0pfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBpPXIoMTkpLG89cig1KSgidG9TdHJpbmdUYWciKSx1PSJBcmd1bWVudHMiPT1pKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBuLHIsZTtyZXR1cm4gdD09PUp0PyJVbmRlZmluZWQiOm51bGw9PT10PyJOdWxsIjoic3RyaW5nIj09dHlwZW9mKHI9ZnVuY3Rpb24odCxuKXt0cnl7cmV0dXJuIHRbbl19Y2F0Y2gocil7fX0obj1PYmplY3QodCksbykpP3I6dT9pKG4pOiJPYmplY3QiPT0oZT1pKG4pKSYmImZ1bmN0aW9uIj09dHlwZW9mIG4uY2FsbGVlPyJBcmd1bWVudHMiOmV9fSxmdW5jdGlvbih0LG4scil7dmFyIHU9cigwKSxlPXIoMjMpLGM9cigzKSxhPXIoNzMpLGk9IlsiK2ErIl0iLG89UmVnRXhwKCJeIitpK2krIioiKSxmPVJlZ0V4cChpK2krIiokIikscz1mdW5jdGlvbih0LG4scil7dmFyIGU9e30saT1jKGZ1bmN0aW9uKCl7cmV0dXJuISFhW3RdKCl8fCLigIvChSIhPSLigIvChSJbdF0oKX0pLG89ZVt0XT1pP24obCk6YVt0XTtyJiYoZVtyXT1vKSx1KHUuUCt1LkYqaSwiU3RyaW5nIixlKX0sbD1zLnRyaW09ZnVuY3Rpb24odCxuKXtyZXR1cm4gdD1TdHJpbmcoZSh0KSksMSZuJiYodD10LnJlcGxhY2UobywiIikpLDImbiYmKHQ9dC5yZXBsYWNlKGYsIiIpKSx0fTt0LmV4cG9ydHM9c30sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9e319LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDI2KSxpPXIoMiksbz0iX19jb3JlLWpzX3NoYXJlZF9fIix1PWlbb118fChpW29dPXt9KTsodC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHVbdF18fCh1W3RdPW4hPT1KdD9uOnt9KX0pKCJ2ZXJzaW9ucyIsW10pLnB1c2goe3ZlcnNpb246ZS52ZXJzaW9uLG1vZGU6cigyOSk\/InB1cmUiOiJnbG9iYWwiLGNvcHlyaWdodDoiwqkgMjAxOSBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSJ9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMTkpO3QuZXhwb3J0cz1PYmplY3QoInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKT9PYmplY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIlN0cmluZyI9PWUodCk\/dC5zcGxpdCgiIik6T2JqZWN0KHQpfX0sZnVuY3Rpb24odCxuKXtuLmY9e30ucHJvcGVydHlJc0VudW1lcmFibGV9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDEpO3QuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciB0PWUodGhpcyksbj0iIjtyZXR1cm4gdC5nbG9iYWwmJihuKz0iZyIpLHQuaWdub3JlQ2FzZSYmKG4rPSJpIiksdC5tdWx0aWxpbmUmJihuKz0ibSIpLHQudW5pY29kZSYmKG4rPSJ1IiksdC5zdGlja3kmJihuKz0ieSIpLG59fSxmdW5jdGlvbih0LG4scil7dmFyIGk9cigxKSxvPXIoMTApLHU9cig1KSgic3BlY2llcyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3ZhciByLGU9aSh0KS5jb25zdHJ1Y3RvcjtyZXR1cm4gZT09PUp0fHwocj1pKGUpW3VdKT09SnQ\/bjpvKHIpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBhPXIoMTUpLGY9cig2KSxzPXIoMzUpO3QuZXhwb3J0cz1mdW5jdGlvbihjKXtyZXR1cm4gZnVuY3Rpb24odCxuLHIpe3ZhciBlLGk9YSh0KSxvPWYoaS5sZW5ndGgpLHU9cyhyLG8pO2lmKGMmJm4hPW4pe2Zvcig7dTxvOylpZigoZT1pW3UrK10pIT1lKXJldHVybiEwfWVsc2UgZm9yKDt1PG87dSsrKWlmKChjfHx1IGluIGkpJiZpW3VdPT09bilyZXR1cm4gY3x8dXx8MDtyZXR1cm4hYyYmLTF9fX0sZnVuY3Rpb24odCxuKXtuLmY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sc30sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMTkpO3QuZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbiBpc0FycmF5KHQpe3JldHVybiJBcnJheSI9PWUodCl9fSxmdW5jdGlvbih0LG4scil7dmFyIGE9cigyMCksZj1yKDIzKTt0LmV4cG9ydHM9ZnVuY3Rpb24oYyl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7dmFyIHIsZSxpPVN0cmluZyhmKHQpKSxvPWEobiksdT1pLmxlbmd0aDtyZXR1cm4gbzwwfHx1PD1vP2M\/IiI6SnQ6KHI9aS5jaGFyQ29kZUF0KG8pKTw1NTI5Nnx8NTYzMTk8cnx8bysxPT09dXx8KGU9aS5jaGFyQ29kZUF0KG8rMSkpPDU2MzIwfHw1NzM0MzxlP2M\/aS5jaGFyQXQobyk6cjpjP2kuc2xpY2UobyxvKzIpOmUtNTYzMjArKHItNTUyOTY8PDEwKSs2NTUzNn19fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig0KSxpPXIoMTkpLG89cig1KSgibWF0Y2giKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIG47cmV0dXJuIGUodCkmJigobj10W29dKSE9PUp0PyEhbjoiUmVnRXhwIj09aSh0KSl9fSxmdW5jdGlvbih0LG4scil7dmFyIG89cig1KSgiaXRlcmF0b3IiKSx1PSExO3RyeXt2YXIgZT1bN11bb10oKTtlWyJyZXR1cm4iXT1mdW5jdGlvbigpe3U9ITB9LEFycmF5LmZyb20oZSxmdW5jdGlvbigpe3Rocm93IDJ9KX1jYXRjaChjKXt9dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7aWYoIW4mJiF1KXJldHVybiExO3ZhciByPSExO3RyeXt2YXIgZT1bN10saT1lW29dKCk7aS5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6cj0hMH19LGVbb109ZnVuY3Rpb24oKXtyZXR1cm4gaX0sdChlKX1jYXRjaChjKXt9cmV0dXJuIHJ9fSxmdW5jdGlvbih0LG4scil7dmFyIGk9cig0NCksbz1SZWdFeHAucHJvdG90eXBlLmV4ZWM7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7dmFyIHI9dC5leGVjO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiByKXt2YXIgZT1yLmNhbGwodCxuKTtpZigib2JqZWN0IiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiUmVnRXhwIGV4ZWMgbWV0aG9kIHJldHVybmVkIHNvbWV0aGluZyBvdGhlciB0aGFuIGFuIE9iamVjdCBvciBudWxsIik7cmV0dXJuIGV9aWYoIlJlZ0V4cCIhPT1pKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIlJlZ0V4cCNleGVjIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgcmVjZWl2ZXIiKTtyZXR1cm4gby5jYWxsKHQsbil9fSxmdW5jdGlvbih0LG4scil7cigxMTIpO3ZhciBmPXIoMTIpLHM9cigxMSksbD1yKDMpLGg9cigyMykscD1yKDUpLHY9cig4NyksZz1wKCJzcGVjaWVzIikseT0hbChmdW5jdGlvbigpe3ZhciB0PS8uLztyZXR1cm4gdC5leGVjPWZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIHQuZ3JvdXBzPXthOiI3In0sdH0sIjciIT09IiIucmVwbGFjZSh0LCIkPGE+Iil9KSxkPWZ1bmN0aW9uKCl7dmFyIHQ9Lyg\/OikvLG49dC5leGVjO3QuZXhlYz1mdW5jdGlvbigpe3JldHVybiBuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07dmFyIHI9ImFiIi5zcGxpdCh0KTtyZXR1cm4gMj09PXIubGVuZ3RoJiYiYSI9PT1yWzBdJiYiYiI9PT1yWzFdfSgpO3QuZXhwb3J0cz1mdW5jdGlvbihyLHQsbil7dmFyIGU9cChyKSxvPSFsKGZ1bmN0aW9uKCl7dmFyIHQ9e307cmV0dXJuIHRbZV09ZnVuY3Rpb24oKXtyZXR1cm4gN30sNyE9IiJbcl0odCl9KSxpPW8\/IWwoZnVuY3Rpb24oKXt2YXIgdD0hMSxuPS9hLztyZXR1cm4gbi5leGVjPWZ1bmN0aW9uKCl7cmV0dXJuIHQ9ITAsbnVsbH0sInNwbGl0Ij09PXImJihuLmNvbnN0cnVjdG9yPXt9LG4uY29uc3RydWN0b3JbZ109ZnVuY3Rpb24oKXtyZXR1cm4gbn0pLG5bZV0oIiIpLCF0fSk6SnQ7aWYoIW98fCFpfHwicmVwbGFjZSI9PT1yJiYheXx8InNwbGl0Ij09PXImJiFkKXt2YXIgdT0vLi9bZV0sYz1uKGgsZSwiIltyXSxmdW5jdGlvbiBtYXliZUNhbGxOYXRpdmUodCxuLHIsZSxpKXtyZXR1cm4gbi5leGVjPT09dj9vJiYhaT97ZG9uZTohMCx2YWx1ZTp1LmNhbGwobixyLGUpfTp7ZG9uZTohMCx2YWx1ZTp0LmNhbGwocixuLGUpfTp7ZG9uZTohMX19KSxhPWNbMV07ZihTdHJpbmcucHJvdG90eXBlLHIsY1swXSkscyhSZWdFeHAucHJvdG90eXBlLGUsMj09dD9mdW5jdGlvbih0LG4pe3JldHVybiBhLmNhbGwodCx0aGlzLG4pfTpmdW5jdGlvbih0KXtyZXR1cm4gYS5jYWxsKHQsdGhpcyl9KX19fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyKS5uYXZpZ2F0b3I7dC5leHBvcnRzPWUmJmUudXNlckFnZW50fHwiIn0sZnVuY3Rpb24odCxuLHIpe3ZhciBkPXIoMiksYj1yKDApLFM9cigxMiksXz1yKDQxKSx4PXIoMzApLG09cig0MCksdz1yKDM5KSxFPXIoNCksTz1yKDMpLE09cig1NyksST1yKDQzKSxQPXIoNzIpO3QuZXhwb3J0cz1mdW5jdGlvbihlLHQsbixyLGksbyl7dmFyIHU9ZFtlXSxjPXUsYT1pPyJzZXQiOiJhZGQiLGY9YyYmYy5wcm90b3R5cGUscz17fSxsPWZ1bmN0aW9uKHQpe3ZhciByPWZbdF07UyhmLHQsImRlbGV0ZSI9PXQ\/ZnVuY3Rpb24odCl7cmV0dXJuIShvJiYhRSh0KSkmJnIuY2FsbCh0aGlzLDA9PT10PzA6dCl9OiJoYXMiPT10P2Z1bmN0aW9uIGhhcyh0KXtyZXR1cm4hKG8mJiFFKHQpKSYmci5jYWxsKHRoaXMsMD09PXQ\/MDp0KX06ImdldCI9PXQ\/ZnVuY3Rpb24gZ2V0KHQpe3JldHVybiBvJiYhRSh0KT9KdDpyLmNhbGwodGhpcywwPT09dD8wOnQpfToiYWRkIj09dD9mdW5jdGlvbiBhZGQodCl7cmV0dXJuIHIuY2FsbCh0aGlzLDA9PT10PzA6dCksdGhpc306ZnVuY3Rpb24gc2V0KHQsbil7cmV0dXJuIHIuY2FsbCh0aGlzLDA9PT10PzA6dCxuKSx0aGlzfSl9O2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBjJiYob3x8Zi5mb3JFYWNoJiYhTyhmdW5jdGlvbigpeyhuZXcgYykuZW50cmllcygpLm5leHQoKX0pKSl7dmFyIGg9bmV3IGMscD1oW2FdKG8\/e306LTAsMSkhPWgsdj1PKGZ1bmN0aW9uKCl7aC5oYXMoMSl9KSxnPU0oZnVuY3Rpb24odCl7bmV3IGModCl9KSx5PSFvJiZPKGZ1bmN0aW9uKCl7Zm9yKHZhciB0PW5ldyBjLG49NTtuLS07KXRbYV0obixuKTtyZXR1cm4hdC5oYXMoLTApfSk7Z3x8KCgoYz10KGZ1bmN0aW9uKHQsbil7dyh0LGMsZSk7dmFyIHI9UChuZXcgdSx0LGMpO3JldHVybiBuIT1KdCYmbShuLGksclthXSxyKSxyfSkpLnByb3RvdHlwZT1mKS5jb25zdHJ1Y3Rvcj1jKSwodnx8eSkmJihsKCJkZWxldGUiKSxsKCJoYXMiKSxpJiZsKCJnZXQiKSksKHl8fHApJiZsKGEpLG8mJmYuY2xlYXImJmRlbGV0ZSBmLmNsZWFyfWVsc2UgYz1yLmdldENvbnN0cnVjdG9yKHQsZSxpLGEpLF8oYy5wcm90b3R5cGUsbikseC5ORUVEPSEwO3JldHVybiBJKGMsZSksYihiLkcrYi5XK2IuRiooKHNbZV09YykhPXUpLHMpLG98fHIuc2V0U3Ryb25nKGMsZSxpKSxjfX0sZnVuY3Rpb24odCxuLHIpe2Zvcih2YXIgZSxpPXIoMiksbz1yKDExKSx1PXIoMzMpLGM9dSgidHlwZWRfYXJyYXkiKSxhPXUoInZpZXciKSxmPSEoIWkuQXJyYXlCdWZmZXJ8fCFpLkRhdGFWaWV3KSxzPWYsbD0wLGg9IkludDhBcnJheSxVaW50OEFycmF5LFVpbnQ4Q2xhbXBlZEFycmF5LEludDE2QXJyYXksVWludDE2QXJyYXksSW50MzJBcnJheSxVaW50MzJBcnJheSxGbG9hdDMyQXJyYXksRmxvYXQ2NEFycmF5Ii5zcGxpdCgiLCIpO2w8OTspKGU9aVtoW2wrK11dKT8obyhlLnByb3RvdHlwZSxjLCEwKSxvKGUucHJvdG90eXBlLGEsITApKTpzPSExO3QuZXhwb3J0cz17QUJWOmYsQ09OU1RSOnMsVFlQRUQ6YyxWSUVXOmF9fSxmdW5jdGlvbih0LG4scil7dC5leHBvcnRzPXIoMjkpfHwhcigzKShmdW5jdGlvbigpe3ZhciB0PU1hdGgucmFuZG9tKCk7X19kZWZpbmVTZXR0ZXJfXy5jYWxsKG51bGwsdCxmdW5jdGlvbigpe30pLGRlbGV0ZSByKDIpW3RdfSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtlKGUuUyx0LHtvZjpmdW5jdGlvbiBvZigpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHQpO3QtLTspblt0XT1hcmd1bWVudHNbdF07cmV0dXJuIG5ldyB0aGlzKG4pfX0pfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksdT1yKDEwKSxjPXIoMTgpLGE9cig0MCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2UoZS5TLHQse2Zyb206ZnVuY3Rpb24gZnJvbSh0KXt2YXIgbixyLGUsaSxvPWFyZ3VtZW50c1sxXTtyZXR1cm4gdSh0aGlzKSwobj1vIT09SnQpJiZ1KG8pLHQ9PUp0P25ldyB0aGlzOihyPVtdLG4\/KGU9MCxpPWMobyxhcmd1bWVudHNbMl0sMiksYSh0LCExLGZ1bmN0aW9uKHQpe3IucHVzaChpKHQsZSsrKSl9KSk6YSh0LCExLHIucHVzaCxyKSxuZXcgdGhpcyhyKSl9fSl9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig0KSxpPXIoMikuZG9jdW1lbnQsbz1lKGkpJiZlKGkuY3JlYXRlRWxlbWVudCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBvP2kuY3JlYXRlRWxlbWVudCh0KTp7fX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDIpLGk9cigyNiksbz1yKDI5KSx1PXIoOTQpLGM9cig4KS5mO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgbj1pLlN5bWJvbHx8KGkuU3ltYm9sPW8\/e306ZS5TeW1ib2x8fHt9KTsiXyI9PXQuY2hhckF0KDApfHx0IGluIG58fGMobix0LHt2YWx1ZTp1LmYodCl9KX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDQ3KSgia2V5cyIpLGk9cigzMyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfHwoZVt0XT1pKHQpKX19LGZ1bmN0aW9uKHQsbil7dC5leHBvcnRzPSJjb25zdHJ1Y3RvcixoYXNPd25Qcm9wZXJ0eSxpc1Byb3RvdHlwZU9mLHByb3BlcnR5SXNFbnVtZXJhYmxlLHRvTG9jYWxlU3RyaW5nLHRvU3RyaW5nLHZhbHVlT2YiLnNwbGl0KCIsIil9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDIpLmRvY3VtZW50O3QuZXhwb3J0cz1lJiZlLmRvY3VtZW50RWxlbWVudH0sZnVuY3Rpb24odCxuLGkpe3ZhciByPWkoNCksZT1pKDEpLG89ZnVuY3Rpb24odCxuKXtpZihlKHQpLCFyKG4pJiZudWxsIT09bil0aHJvdyBUeXBlRXJyb3IobisiOiBjYW4ndCBzZXQgYXMgcHJvdG90eXBlISIpfTt0LmV4cG9ydHM9e3NldDpPYmplY3Quc2V0UHJvdG90eXBlT2Z8fCgiX19wcm90b19fImlue30\/ZnVuY3Rpb24odCxyLGUpe3RyeXsoZT1pKDE4KShGdW5jdGlvbi5jYWxsLGkoMTYpLmYoT2JqZWN0LnByb3RvdHlwZSwiX19wcm90b19fIikuc2V0LDIpKSh0LFtdKSxyPSEodCBpbnN0YW5jZW9mIEFycmF5KX1jYXRjaChuKXtyPSEwfXJldHVybiBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZih0LG4pe3JldHVybiBvKHQsbikscj90Ll9fcHJvdG9fXz1uOmUodCxuKSx0fX0oe30sITEpOkp0KSxjaGVjazpvfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBvPXIoNCksdT1yKDcxKS5zZXQ7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbixyKXt2YXIgZSxpPW4uY29uc3RydWN0b3I7cmV0dXJuIGkhPT1yJiYiZnVuY3Rpb24iPT10eXBlb2YgaSYmKGU9aS5wcm90b3R5cGUpIT09ci5wcm90b3R5cGUmJm8oZSkmJnUmJnUodCxlKSx0fX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9Ilx0XG5ceDBCXGZcciDCoOGagOGgjuKAgOKAgeKAguKAg+KAhOKAheKAhuKAh+KAiOKAieKAiuKAr+KBn+OAgFx1MjAyOFx1MjAyOVx1ZmVmZiJ9LGZ1bmN0aW9uKHQsbixyKXt2YXIgaT1yKDIwKSxvPXIoMjMpO3QuZXhwb3J0cz1mdW5jdGlvbiByZXBlYXQodCl7dmFyIG49U3RyaW5nKG8odGhpcykpLHI9IiIsZT1pKHQpO2lmKGU8MHx8ZT09SW5maW5pdHkpdGhyb3cgUmFuZ2VFcnJvcigiQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmUiKTtmb3IoOzA8ZTsoZT4+Pj0xKSYmKG4rPW4pKTEmZSYmKHIrPW4pO3JldHVybiByfX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9TWF0aC5zaWdufHxmdW5jdGlvbiBzaWduKHQpe3JldHVybiAwPT0odD0rdCl8fHQhPXQ\/dDp0PDA\/LTE6MX19LGZ1bmN0aW9uKHQsbil7dmFyIHI9TWF0aC5leHBtMTt0LmV4cG9ydHM9IXJ8fDIyMDI1LjQ2NTc5NDgwNjcxODxyKDEwKXx8cigxMCk8MjIwMjUuNDY1Nzk0ODA2NzE4fHwtMmUtMTchPXIoLTJlLTE3KT9mdW5jdGlvbiBleHBtMSh0KXtyZXR1cm4gMD09KHQ9K3QpP3Q6LTFlLTY8dCYmdDwxZS02P3QrdCp0LzI6TWF0aC5leHAodCktMX06cn0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoNTYpLGk9cigyMyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbixyKXtpZihlKG4pKXRocm93IFR5cGVFcnJvcigiU3RyaW5nIyIrcisiIGRvZXNuJ3QgYWNjZXB0IHJlZ2V4ISIpO3JldHVybiBTdHJpbmcoaSh0KSl9fSxmdW5jdGlvbih0LG4scil7dmFyIGk9cig1KSgibWF0Y2giKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIG49Ly4vO3RyeXsiLy4vIlt0XShuKX1jYXRjaChyKXt0cnl7cmV0dXJuIG5baV09ITEsISIvLi8iW3RdKG4pfWNhdGNoKGUpe319cmV0dXJuITB9fSxmdW5jdGlvbih0LG4scil7dmFyIFM9cigyOSksXz1yKDApLHg9cigxMiksbT1yKDExKSx3PXIoNDYpLEU9cig4MCksTz1yKDQzKSxNPXIoMTcpLEk9cig1KSgiaXRlcmF0b3IiKSxQPSEoW10ua2V5cyYmIm5leHQiaW5bXS5rZXlzKCkpLEY9InZhbHVlcyIsQT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuLHIsZSxpLG8sdSl7RShyLG4sZSk7dmFyIGMsYSxmLHM9ZnVuY3Rpb24odCl7aWYoIVAmJnQgaW4gdilyZXR1cm4gdlt0XTtzd2l0Y2godCl7Y2FzZSJrZXlzIjpyZXR1cm4gZnVuY3Rpb24ga2V5cygpe3JldHVybiBuZXcgcih0aGlzLHQpfTtjYXNlIEY6cmV0dXJuIGZ1bmN0aW9uIHZhbHVlcygpe3JldHVybiBuZXcgcih0aGlzLHQpfX1yZXR1cm4gZnVuY3Rpb24gZW50cmllcygpe3JldHVybiBuZXcgcih0aGlzLHQpfX0sbD1uKyIgSXRlcmF0b3IiLGg9aT09RixwPSExLHY9dC5wcm90b3R5cGUsZz12W0ldfHx2WyJAQGl0ZXJhdG9yIl18fGkmJnZbaV0seT1nfHxzKGkpLGQ9aT9oP3MoImVudHJpZXMiKTp5Okp0LGI9IkFycmF5Ij09biYmdi5lbnRyaWVzfHxnO2lmKGImJihmPU0oYi5jYWxsKG5ldyB0KSkpIT09T2JqZWN0LnByb3RvdHlwZSYmZi5uZXh0JiYoTyhmLGwsITApLFN8fCJmdW5jdGlvbiI9PXR5cGVvZiBmW0ldfHxtKGYsSSxBKSksaCYmZyYmZy5uYW1lIT09RiYmKHA9ITAseT1mdW5jdGlvbiB2YWx1ZXMoKXtyZXR1cm4gZy5jYWxsKHRoaXMpfSksUyYmIXV8fCFQJiYhcCYmdltJXXx8bSh2LEkseSksd1tuXT15LHdbbF09QSxpKWlmKGM9e3ZhbHVlczpoP3k6cyhGKSxrZXlzOm8\/eTpzKCJrZXlzIiksZW50cmllczpkfSx1KWZvcihhIGluIGMpYSBpbiB2fHx4KHYsYSxjW2FdKTtlbHNlIF8oXy5QK18uRiooUHx8cCksbixjKTtyZXR1cm4gY319LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDM2KSxpPXIoMzIpLG89cig0MyksdT17fTtyKDExKSh1LHIoNSkoIml0ZXJhdG9yIiksZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLHQuZXhwb3J0cz1mdW5jdGlvbih0LG4scil7dC5wcm90b3R5cGU9ZSh1LHtuZXh0OmkoMSxyKX0pLG8odCxuKyIgSXRlcmF0b3IiKX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDQ2KSxpPXIoNSkoIml0ZXJhdG9yIiksbz1BcnJheS5wcm90b3R5cGU7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0IT09SnQmJihlLkFycmF5PT09dHx8b1tpXT09PXQpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoOCksaT1yKDMyKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuLHIpe24gaW4gdD9lLmYodCxuLGkoMCxyKSk6dFtuXT1yfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoNDQpLGk9cig1KSgiaXRlcmF0b3IiKSxvPXIoNDYpO3QuZXhwb3J0cz1yKDI2KS5nZXRJdGVyYXRvck1ldGhvZD1mdW5jdGlvbih0KXtpZih0IT1KdClyZXR1cm4gdFtpXXx8dFsiQEBpdGVyYXRvciJdfHxvW2UodCldfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMjEzKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbmV3KGUodCkpKG4pfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBjPXIoOSksYT1yKDM1KSxmPXIoNik7dC5leHBvcnRzPWZ1bmN0aW9uIGZpbGwodCl7Zm9yKHZhciBuPWModGhpcykscj1mKG4ubGVuZ3RoKSxlPWFyZ3VtZW50cy5sZW5ndGgsaT1hKDE8ZT9hcmd1bWVudHNbMV06SnQsciksbz0yPGU\/YXJndW1lbnRzWzJdOkp0LHU9bz09PUp0P3I6YShvLHIpO2k8dTspbltpKytdPXQ7cmV0dXJuIG59fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigzMSksaT1yKDExMSksbz1yKDQ2KSx1PXIoMTUpO3QuZXhwb3J0cz1yKDc5KShBcnJheSwiQXJyYXkiLGZ1bmN0aW9uKHQsbil7dGhpcy5fdD11KHQpLHRoaXMuX2k9MCx0aGlzLl9rPW59LGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fdCxuPXRoaXMuX2sscj10aGlzLl9pKys7cmV0dXJuIXR8fHQubGVuZ3RoPD1yPyh0aGlzLl90PUp0LGkoMSkpOmkoMCwia2V5cyI9PW4\/cjoidmFsdWVzIj09bj90W3JdOltyLHRbcl1dKX0sInZhbHVlcyIpLG8uQXJndW1lbnRzPW8uQXJyYXksZSgia2V5cyIpLGUoInZhbHVlcyIpLGUoImVudHJpZXMiKX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlLGksdT1yKDUwKSxjPVJlZ0V4cC5wcm90b3R5cGUuZXhlYyxhPVN0cmluZy5wcm90b3R5cGUucmVwbGFjZSxvPWMsZj0ibGFzdEluZGV4IixzPShpPS9iKi9nLGMuY2FsbChlPS9hLywiYSIpLGMuY2FsbChpLCJhIiksMCE9PWVbZl18fDAhPT1pW2ZdKSxsPS8oKT8\/Ly5leGVjKCIiKVsxXSE9PUp0OyhzfHxsKSYmKG89ZnVuY3Rpb24gZXhlYyh0KXt2YXIgbixyLGUsaSxvPXRoaXM7cmV0dXJuIGwmJihyPW5ldyBSZWdFeHAoIl4iK28uc291cmNlKyIkKD8hXFxzKSIsdS5jYWxsKG8pKSkscyYmKG49b1tmXSksZT1jLmNhbGwobyx0KSxzJiZlJiYob1tmXT1vLmdsb2JhbD9lLmluZGV4K2VbMF0ubGVuZ3RoOm4pLGwmJmUmJjE8ZS5sZW5ndGgmJmEuY2FsbChlWzBdLHIsZnVuY3Rpb24oKXtmb3IoaT0xO2k8YXJndW1lbnRzLmxlbmd0aC0yO2krKylhcmd1bWVudHNbaV09PT1KdCYmKGVbaV09SnQpfSksZX0pLHQuZXhwb3J0cz1vfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig1NSkoITApO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4scil7cmV0dXJuIG4rKHI\/ZSh0LG4pLmxlbmd0aDoxKX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZSxpLG8sdT1yKDE4KSxjPXIoMTAxKSxhPXIoNzApLGY9cig2Nikscz1yKDIpLGw9cy5wcm9jZXNzLGg9cy5zZXRJbW1lZGlhdGUscD1zLmNsZWFySW1tZWRpYXRlLHY9cy5NZXNzYWdlQ2hhbm5lbCxnPXMuRGlzcGF0Y2gseT0wLGQ9e30sYj0ib25yZWFkeXN0YXRlY2hhbmdlIixTPWZ1bmN0aW9uKCl7dmFyIHQ9K3RoaXM7aWYoZC5oYXNPd25Qcm9wZXJ0eSh0KSl7dmFyIG49ZFt0XTtkZWxldGUgZFt0XSxuKCl9fSxfPWZ1bmN0aW9uKHQpe1MuY2FsbCh0LmRhdGEpfTtoJiZwfHwoaD1mdW5jdGlvbiBzZXRJbW1lZGlhdGUodCl7Zm9yKHZhciBuPVtdLHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7KW4ucHVzaChhcmd1bWVudHNbcisrXSk7cmV0dXJuIGRbKyt5XT1mdW5jdGlvbigpe2MoImZ1bmN0aW9uIj09dHlwZW9mIHQ\/dDpGdW5jdGlvbih0KSxuKX0sZSh5KSx5fSxwPWZ1bmN0aW9uIGNsZWFySW1tZWRpYXRlKHQpe2RlbGV0ZSBkW3RdfSwicHJvY2VzcyI9PXIoMTkpKGwpP2U9ZnVuY3Rpb24odCl7bC5uZXh0VGljayh1KFMsdCwxKSl9OmcmJmcubm93P2U9ZnVuY3Rpb24odCl7Zy5ub3codShTLHQsMSkpfTp2PyhvPShpPW5ldyB2KS5wb3J0MixpLnBvcnQxLm9ubWVzc2FnZT1fLGU9dShvLnBvc3RNZXNzYWdlLG8sMSkpOnMuYWRkRXZlbnRMaXN0ZW5lciYmImZ1bmN0aW9uIj09dHlwZW9mIHBvc3RNZXNzYWdlJiYhcy5pbXBvcnRTY3JpcHRzPyhlPWZ1bmN0aW9uKHQpe3MucG9zdE1lc3NhZ2UodCsiIiwiKiIpfSxzLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLF8sITEpKTplPWIgaW4gZigic2NyaXB0Iik\/ZnVuY3Rpb24odCl7YS5hcHBlbmRDaGlsZChmKCJzY3JpcHQiKSlbYl09ZnVuY3Rpb24oKXthLnJlbW92ZUNoaWxkKHRoaXMpLFMuY2FsbCh0KX19OmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodShTLHQsMSksMCl9KSx0LmV4cG9ydHM9e3NldDpoLGNsZWFyOnB9fSxmdW5jdGlvbih0LG4scil7dmFyIGM9cigyKSxhPXIoODkpLnNldCxmPWMuTXV0YXRpb25PYnNlcnZlcnx8Yy5XZWJLaXRNdXRhdGlvbk9ic2VydmVyLHM9Yy5wcm9jZXNzLGw9Yy5Qcm9taXNlLGg9InByb2Nlc3MiPT1yKDE5KShzKTt0LmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgZSxpLG8sdD1mdW5jdGlvbigpe3ZhciB0LG47Zm9yKGgmJih0PXMuZG9tYWluKSYmdC5leGl0KCk7ZTspe249ZS5mbixlPWUubmV4dDt0cnl7bigpfWNhdGNoKHIpe3Rocm93IGU\/bygpOmk9SnQscn19aT1KdCx0JiZ0LmVudGVyKCl9O2lmKGgpbz1mdW5jdGlvbigpe3MubmV4dFRpY2sodCl9O2Vsc2UgaWYoIWZ8fGMubmF2aWdhdG9yJiZjLm5hdmlnYXRvci5zdGFuZGFsb25lKWlmKGwmJmwucmVzb2x2ZSl7dmFyIG49bC5yZXNvbHZlKEp0KTtvPWZ1bmN0aW9uKCl7bi50aGVuKHQpfX1lbHNlIG89ZnVuY3Rpb24oKXthLmNhbGwoYyx0KX07ZWxzZXt2YXIgcj0hMCx1PWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKTtuZXcgZih0KS5vYnNlcnZlKHUse2NoYXJhY3RlckRhdGE6ITB9KSxvPWZ1bmN0aW9uKCl7dS5kYXRhPXI9IXJ9fXJldHVybiBmdW5jdGlvbih0KXt2YXIgbj17Zm46dCxuZXh0Okp0fTtpJiYoaS5uZXh0PW4pLGV8fChlPW4sbygpKSxpPW59fX0sZnVuY3Rpb24odCxuLHIpe3ZhciBpPXIoMTApO2Z1bmN0aW9uIFByb21pc2VDYXBhYmlsaXR5KHQpe3ZhciByLGU7dGhpcy5wcm9taXNlPW5ldyB0KGZ1bmN0aW9uKHQsbil7aWYociE9PUp0fHxlIT09SnQpdGhyb3cgVHlwZUVycm9yKCJCYWQgUHJvbWlzZSBjb25zdHJ1Y3RvciIpO3I9dCxlPW59KSx0aGlzLnJlc29sdmU9aShyKSx0aGlzLnJlamVjdD1pKGUpfXQuZXhwb3J0cy5mPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUHJvbWlzZUNhcGFiaWxpdHkodCl9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyKSxpPXIoNyksbz1yKDI5KSx1PXIoNjIpLGM9cigxMSksYT1yKDQxKSxmPXIoMykscz1yKDM5KSxsPXIoMjApLGg9cig2KSxwPXIoMTIyKSx2PXIoMzcpLmYsZz1yKDgpLmYseT1yKDg1KSxkPXIoNDMpLGI9IkFycmF5QnVmZmVyIixTPSJEYXRhVmlldyIsXz0icHJvdG90eXBlIix4PSJXcm9uZyBpbmRleCEiLG09ZVtiXSx3PWVbU10sRT1lLk1hdGgsTz1lLlJhbmdlRXJyb3IsTT1lLkluZmluaXR5LEk9bSxQPUUuYWJzLEY9RS5wb3csQT1FLmZsb29yLGs9RS5sb2csTj1FLkxOMixqPSJieXRlTGVuZ3RoIixSPSJieXRlT2Zmc2V0IixUPWk\/Il9iIjoiYnVmZmVyIixMPWk\/Il9sIjpqLEQ9aT8iX28iOlI7ZnVuY3Rpb24gcGFja0lFRUU3NTQodCxuLHIpe3ZhciBlLGksbyx1PW5ldyBBcnJheShyKSxjPTgqci1uLTEsYT0oMTw8YyktMSxmPWE+PjEscz0yMz09PW4\/RigyLC0yNCktRigyLC03Nyk6MCxsPTAsaD10PDB8fDA9PT10JiYxL3Q8MD8xOjA7Zm9yKCh0PVAodCkpIT10fHx0PT09TT8oaT10IT10PzE6MCxlPWEpOihlPUEoayh0KS9OKSx0KihvPUYoMiwtZSkpPDEmJihlLS0sbyo9MiksMjw9KHQrPTE8PWUrZj9zL286cypGKDIsMS1mKSkqbyYmKGUrKyxvLz0yKSxhPD1lK2Y\/KGk9MCxlPWEpOjE8PWUrZj8oaT0odCpvLTEpKkYoMixuKSxlKz1mKTooaT10KkYoMixmLTEpKkYoMixuKSxlPTApKTs4PD1uO3VbbCsrXT0yNTUmaSxpLz0yNTYsbi09OCk7Zm9yKGU9ZTw8bnxpLGMrPW47MDxjO3VbbCsrXT0yNTUmZSxlLz0yNTYsYy09OCk7cmV0dXJuIHVbLS1sXXw9MTI4KmgsdX1mdW5jdGlvbiB1bnBhY2tJRUVFNzU0KHQsbixyKXt2YXIgZSxpPTgqci1uLTEsbz0oMTw8aSktMSx1PW8+PjEsYz1pLTcsYT1yLTEsZj10W2EtLV0scz0xMjcmZjtmb3IoZj4+PTc7MDxjO3M9MjU2KnMrdFthXSxhLS0sYy09OCk7Zm9yKGU9cyYoMTw8LWMpLTEscz4+PS1jLGMrPW47MDxjO2U9MjU2KmUrdFthXSxhLS0sYy09OCk7aWYoMD09PXMpcz0xLXU7ZWxzZXtpZihzPT09bylyZXR1cm4gZT9OYU46Zj8tTTpNO2UrPUYoMixuKSxzLT11fXJldHVybihmPy0xOjEpKmUqRigyLHMtbil9ZnVuY3Rpb24gdW5wYWNrSTMyKHQpe3JldHVybiB0WzNdPDwyNHx0WzJdPDwxNnx0WzFdPDw4fHRbMF19ZnVuY3Rpb24gcGFja0k4KHQpe3JldHVyblsyNTUmdF19ZnVuY3Rpb24gcGFja0kxNih0KXtyZXR1cm5bMjU1JnQsdD4+OCYyNTVdfWZ1bmN0aW9uIHBhY2tJMzIodCl7cmV0dXJuWzI1NSZ0LHQ+PjgmMjU1LHQ+PjE2JjI1NSx0Pj4yNCYyNTVdfWZ1bmN0aW9uIHBhY2tGNjQodCl7cmV0dXJuIHBhY2tJRUVFNzU0KHQsNTIsOCl9ZnVuY3Rpb24gcGFja0YzMih0KXtyZXR1cm4gcGFja0lFRUU3NTQodCwyMyw0KX1mdW5jdGlvbiBhZGRHZXR0ZXIodCxuLHIpe2codFtfXSxuLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tyXX19KX1mdW5jdGlvbiBnZXQodCxuLHIsZSl7dmFyIGk9cCgrcik7aWYodFtMXTxpK24pdGhyb3cgTyh4KTt2YXIgbz1pK3RbRF0sdT10W1RdLl9iLnNsaWNlKG8sbytuKTtyZXR1cm4gZT91OnUucmV2ZXJzZSgpfWZ1bmN0aW9uIHNldCh0LG4scixlLGksbyl7dmFyIHU9cCgrcik7aWYodFtMXTx1K24pdGhyb3cgTyh4KTtmb3IodmFyIGM9dFtUXS5fYixhPXUrdFtEXSxmPWUoK2kpLHM9MDtzPG47cysrKWNbYStzXT1mW28\/czpuLXMtMV19aWYodS5BQlYpe2lmKCFmKGZ1bmN0aW9uKCl7bSgxKX0pfHwhZihmdW5jdGlvbigpe25ldyBtKC0xKX0pfHxmKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBtLG5ldyBtKDEuNSksbmV3IG0oTmFOKSxtLm5hbWUhPWJ9KSl7Zm9yKHZhciBDLFU9KG09ZnVuY3Rpb24gQXJyYXlCdWZmZXIodCl7cmV0dXJuIHModGhpcyxtKSxuZXcgSShwKHQpKX0pW19dPUlbX10sVz12KEkpLEc9MDtHPFcubGVuZ3RoOykoQz1XW0crK10paW4gbXx8YyhtLEMsSVtDXSk7b3x8KFUuY29uc3RydWN0b3I9bSl9dmFyIFY9bmV3IHcobmV3IG0oMikpLEI9d1tfXS5zZXRJbnQ4O1Yuc2V0SW50OCgwLDIxNDc0ODM2NDgpLFYuc2V0SW50OCgxLDIxNDc0ODM2NDkpLCFWLmdldEludDgoMCkmJlYuZ2V0SW50OCgxKXx8YSh3W19dLHtzZXRJbnQ4OmZ1bmN0aW9uIHNldEludDgodCxuKXtCLmNhbGwodGhpcyx0LG48PDI0Pj4yNCl9LHNldFVpbnQ4OmZ1bmN0aW9uIHNldFVpbnQ4KHQsbil7Qi5jYWxsKHRoaXMsdCxuPDwyND4+MjQpfX0sITApfWVsc2UgbT1mdW5jdGlvbiBBcnJheUJ1ZmZlcih0KXtzKHRoaXMsbSxiKTt2YXIgbj1wKHQpO3RoaXMuX2I9eS5jYWxsKG5ldyBBcnJheShuKSwwKSx0aGlzW0xdPW59LHc9ZnVuY3Rpb24gRGF0YVZpZXcodCxuLHIpe3ModGhpcyx3LFMpLHModCxtLFMpO3ZhciBlPXRbTF0saT1sKG4pO2lmKGk8MHx8ZTxpKXRocm93IE8oIldyb25nIG9mZnNldCEiKTtpZihlPGkrKHI9cj09PUp0P2UtaTpoKHIpKSl0aHJvdyBPKCJXcm9uZyBsZW5ndGghIik7dGhpc1tUXT10LHRoaXNbRF09aSx0aGlzW0xdPXJ9LGkmJihhZGRHZXR0ZXIobSxqLCJfbCIpLGFkZEdldHRlcih3LCJidWZmZXIiLCJfYiIpLGFkZEdldHRlcih3LGosIl9sIiksYWRkR2V0dGVyKHcsUiwiX28iKSksYSh3W19dLHtnZXRJbnQ4OmZ1bmN0aW9uIGdldEludDgodCl7cmV0dXJuIGdldCh0aGlzLDEsdClbMF08PDI0Pj4yNH0sZ2V0VWludDg6ZnVuY3Rpb24gZ2V0VWludDgodCl7cmV0dXJuIGdldCh0aGlzLDEsdClbMF19LGdldEludDE2OmZ1bmN0aW9uIGdldEludDE2KHQpe3ZhciBuPWdldCh0aGlzLDIsdCxhcmd1bWVudHNbMV0pO3JldHVybihuWzFdPDw4fG5bMF0pPDwxNj4+MTZ9LGdldFVpbnQxNjpmdW5jdGlvbiBnZXRVaW50MTYodCl7dmFyIG49Z2V0KHRoaXMsMix0LGFyZ3VtZW50c1sxXSk7cmV0dXJuIG5bMV08PDh8blswXX0sZ2V0SW50MzI6ZnVuY3Rpb24gZ2V0SW50MzIodCl7cmV0dXJuIHVucGFja0kzMihnZXQodGhpcyw0LHQsYXJndW1lbnRzWzFdKSl9LGdldFVpbnQzMjpmdW5jdGlvbiBnZXRVaW50MzIodCl7cmV0dXJuIHVucGFja0kzMihnZXQodGhpcyw0LHQsYXJndW1lbnRzWzFdKSk+Pj4wfSxnZXRGbG9hdDMyOmZ1bmN0aW9uIGdldEZsb2F0MzIodCl7cmV0dXJuIHVucGFja0lFRUU3NTQoZ2V0KHRoaXMsNCx0LGFyZ3VtZW50c1sxXSksMjMsNCl9LGdldEZsb2F0NjQ6ZnVuY3Rpb24gZ2V0RmxvYXQ2NCh0KXtyZXR1cm4gdW5wYWNrSUVFRTc1NChnZXQodGhpcyw4LHQsYXJndW1lbnRzWzFdKSw1Miw4KX0sc2V0SW50ODpmdW5jdGlvbiBzZXRJbnQ4KHQsbil7c2V0KHRoaXMsMSx0LHBhY2tJOCxuKX0sc2V0VWludDg6ZnVuY3Rpb24gc2V0VWludDgodCxuKXtzZXQodGhpcywxLHQscGFja0k4LG4pfSxzZXRJbnQxNjpmdW5jdGlvbiBzZXRJbnQxNih0LG4pe3NldCh0aGlzLDIsdCxwYWNrSTE2LG4sYXJndW1lbnRzWzJdKX0sc2V0VWludDE2OmZ1bmN0aW9uIHNldFVpbnQxNih0LG4pe3NldCh0aGlzLDIsdCxwYWNrSTE2LG4sYXJndW1lbnRzWzJdKX0sc2V0SW50MzI6ZnVuY3Rpb24gc2V0SW50MzIodCxuKXtzZXQodGhpcyw0LHQscGFja0kzMixuLGFyZ3VtZW50c1syXSl9LHNldFVpbnQzMjpmdW5jdGlvbiBzZXRVaW50MzIodCxuKXtzZXQodGhpcyw0LHQscGFja0kzMixuLGFyZ3VtZW50c1syXSl9LHNldEZsb2F0MzI6ZnVuY3Rpb24gc2V0RmxvYXQzMih0LG4pe3NldCh0aGlzLDQsdCxwYWNrRjMyLG4sYXJndW1lbnRzWzJdKX0sDQpzZXRGbG9hdDY0OmZ1bmN0aW9uIHNldEZsb2F0NjQodCxuKXtzZXQodGhpcyw4LHQscGFja0Y2NCxuLGFyZ3VtZW50c1syXSl9fSk7ZChtLGIpLGQodyxTKSxjKHdbX10sdS5WSUVXLCEwKSxuW2JdPW0sbltTXT13fSxmdW5jdGlvbih0LG4scil7dC5leHBvcnRzPSFyKDcpJiYhcigzKShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkocig2NikoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSxmdW5jdGlvbih0LG4scil7bi5mPXIoNSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgdT1yKDE0KSxjPXIoMTUpLGE9cig1MikoITEpLGY9cig2OCkoIklFX1BST1RPIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7dmFyIHIsZT1jKHQpLGk9MCxvPVtdO2ZvcihyIGluIGUpciE9ZiYmdShlLHIpJiZvLnB1c2gocik7Zm9yKDtpPG4ubGVuZ3RoOyl1KGUscj1uW2krK10pJiYofmEobyxyKXx8by5wdXNoKHIpKTtyZXR1cm4gb319LGZ1bmN0aW9uKHQsbixyKXt2YXIgdT1yKDgpLGM9cigxKSxhPXIoMzQpO3QuZXhwb3J0cz1yKDcpP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzOmZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModCxuKXtjKHQpO2Zvcih2YXIgcixlPWEobiksaT1lLmxlbmd0aCxvPTA7bzxpOyl1LmYodCxyPWVbbysrXSxuW3JdKTtyZXR1cm4gdH19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDE1KSxpPXIoMzcpLmYsbz17fS50b1N0cmluZyx1PSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzP09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdyk6W107dC5leHBvcnRzLmY9ZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyh0KXtyZXR1cm4gdSYmIltvYmplY3QgV2luZG93XSI9PW8uY2FsbCh0KT9mdW5jdGlvbih0KXt0cnl7cmV0dXJuIGkodCl9Y2F0Y2gobil7cmV0dXJuIHUuc2xpY2UoKX19KHQpOmkoZSh0KSl9fSxmdW5jdGlvbih0LG4scil7dmFyIGg9cig3KSxwPXIoMzQpLHY9cig1MyksZz1yKDQ5KSx5PXIoOSksZD1yKDQ4KSxpPU9iamVjdC5hc3NpZ247dC5leHBvcnRzPSFpfHxyKDMpKGZ1bmN0aW9uKCl7dmFyIHQ9e30sbj17fSxyPVN5bWJvbCgpLGU9ImFiY2RlZmdoaWprbG1ub3BxcnN0IjtyZXR1cm4gdFtyXT03LGUuc3BsaXQoIiIpLmZvckVhY2goZnVuY3Rpb24odCl7blt0XT10fSksNyE9aSh7fSx0KVtyXXx8T2JqZWN0LmtleXMoaSh7fSxuKSkuam9pbigiIikhPWV9KT9mdW5jdGlvbiBhc3NpZ24odCxuKXtmb3IodmFyIHI9eSh0KSxlPWFyZ3VtZW50cy5sZW5ndGgsaT0xLG89di5mLHU9Zy5mO2k8ZTspZm9yKHZhciBjLGE9ZChhcmd1bWVudHNbaSsrXSksZj1vP3AoYSkuY29uY2F0KG8oYSkpOnAoYSkscz1mLmxlbmd0aCxsPTA7bDxzOyljPWZbbCsrXSxoJiYhdS5jYWxsKGEsYyl8fChyW2NdPWFbY10pO3JldHVybiByfTppfSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz1PYmplY3QuaXN8fGZ1bmN0aW9uIGlzKHQsbil7cmV0dXJuIHQ9PT1uPzAhPT10fHwxL3Q9PTEvbjp0IT10JiZuIT1ufX0sZnVuY3Rpb24odCxuLHIpe3ZhciBvPXIoMTApLHU9cig0KSxjPXIoMTAxKSxhPVtdLnNsaWNlLGY9e307dC5leHBvcnRzPUZ1bmN0aW9uLmJpbmR8fGZ1bmN0aW9uIGJpbmQobil7dmFyIHI9byh0aGlzKSxlPWEuY2FsbChhcmd1bWVudHMsMSksaT1mdW5jdGlvbigpe3ZhciB0PWUuY29uY2F0KGEuY2FsbChhcmd1bWVudHMpKTtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGk\/ZnVuY3Rpb24odCxuLHIpe2lmKCEobiBpbiBmKSl7Zm9yKHZhciBlPVtdLGk9MDtpPG47aSsrKWVbaV09ImFbIitpKyJdIjtmW25dPUZ1bmN0aW9uKCJGLGEiLCJyZXR1cm4gbmV3IEYoIitlLmpvaW4oIiwiKSsiKSIpfXJldHVybiBmW25dKHQscil9KHIsdC5sZW5ndGgsdCk6YyhyLHQsbil9O3JldHVybiB1KHIucHJvdG90eXBlKSYmKGkucHJvdG90eXBlPXIucHJvdG90eXBlKSxpfX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuLHIpe3ZhciBlPXI9PT1KdDtzd2l0Y2gobi5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gZT90KCk6dC5jYWxsKHIpO2Nhc2UgMTpyZXR1cm4gZT90KG5bMF0pOnQuY2FsbChyLG5bMF0pO2Nhc2UgMjpyZXR1cm4gZT90KG5bMF0sblsxXSk6dC5jYWxsKHIsblswXSxuWzFdKTtjYXNlIDM6cmV0dXJuIGU\/dChuWzBdLG5bMV0sblsyXSk6dC5jYWxsKHIsblswXSxuWzFdLG5bMl0pO2Nhc2UgNDpyZXR1cm4gZT90KG5bMF0sblsxXSxuWzJdLG5bM10pOnQuY2FsbChyLG5bMF0sblsxXSxuWzJdLG5bM10pfXJldHVybiB0LmFwcGx5KHIsbil9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigxOSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7aWYoIm51bWJlciIhPXR5cGVvZiB0JiYiTnVtYmVyIiE9ZSh0KSl0aHJvdyBUeXBlRXJyb3Iobik7cmV0dXJuK3R9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig0KSxpPU1hdGguZmxvb3I7dC5leHBvcnRzPWZ1bmN0aW9uIGlzSW50ZWdlcih0KXtyZXR1cm4hZSh0KSYmaXNGaW5pdGUodCkmJmkodCk9PT10fX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMikucGFyc2VGbG9hdCxpPXIoNDUpLnRyaW07dC5leHBvcnRzPTEvZShyKDczKSsiLTAiKSE9LUluZmluaXR5P2Z1bmN0aW9uIHBhcnNlRmxvYXQodCl7dmFyIG49aShTdHJpbmcodCksMykscj1lKG4pO3JldHVybiAwPT09ciYmIi0iPT1uLmNoYXJBdCgwKT8tMDpyfTplfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyKS5wYXJzZUludCxpPXIoNDUpLnRyaW0sbz1yKDczKSx1PS9eWy0rXT8wW3hYXS87dC5leHBvcnRzPTghPT1lKG8rIjA4Iil8fDIyIT09ZShvKyIweDE2Iik\/ZnVuY3Rpb24gcGFyc2VJbnQodCxuKXt2YXIgcj1pKFN0cmluZyh0KSwzKTtyZXR1cm4gZShyLG4+Pj4wfHwodS50ZXN0KHIpPzE2OjEwKSl9OmV9LGZ1bmN0aW9uKHQsbil7dC5leHBvcnRzPU1hdGgubG9nMXB8fGZ1bmN0aW9uIGxvZzFwKHQpe3JldHVybi0xZS04PCh0PSt0KSYmdDwxZS04P3QtdCp0LzI6TWF0aC5sb2coMSt0KX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgbz1yKDc1KSxlPU1hdGgucG93LHU9ZSgyLC01MiksYz1lKDIsLTIzKSxhPWUoMiwxMjcpKigyLWMpLGY9ZSgyLC0xMjYpO3QuZXhwb3J0cz1NYXRoLmZyb3VuZHx8ZnVuY3Rpb24gZnJvdW5kKHQpe3ZhciBuLHIsZT1NYXRoLmFicyh0KSxpPW8odCk7cmV0dXJuIGU8Zj9pKihlL2YvYysxL3UtMS91KSpmKmM6YTwocj0obj0oMStjL3UpKmUpLShuLWUpKXx8ciE9cj9pKkluZmluaXR5Omkqcn19LGZ1bmN0aW9uKHQsbixyKXt2YXIgdT1yKDEpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4scixlKXt0cnl7cmV0dXJuIGU\/bih1KHIpWzBdLHJbMV0pOm4ocil9Y2F0Y2gobyl7dmFyIGk9dFsicmV0dXJuIl07dGhyb3cgaSE9PUp0JiZ1KGkuY2FsbCh0KSksb319fSxmdW5jdGlvbih0LG4scil7dmFyIHM9cigxMCksbD1yKDkpLGg9cig0OCkscD1yKDYpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4scixlLGkpe3Mobik7dmFyIG89bCh0KSx1PWgobyksYz1wKG8ubGVuZ3RoKSxhPWk\/Yy0xOjAsZj1pPy0xOjE7aWYocjwyKWZvcig7Oyl7aWYoYSBpbiB1KXtlPXVbYV0sYSs9ZjticmVha31pZihhKz1mLGk\/YTwwOmM8PWEpdGhyb3cgVHlwZUVycm9yKCJSZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlIil9Zm9yKDtpPzA8PWE6YTxjO2ErPWYpYSBpbiB1JiYoZT1uKGUsdVthXSxhLG8pKTtyZXR1cm4gZX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZj1yKDkpLHM9cigzNSksbD1yKDYpO3QuZXhwb3J0cz1bXS5jb3B5V2l0aGlufHxmdW5jdGlvbiBjb3B5V2l0aGluKHQsbil7dmFyIHI9Zih0aGlzKSxlPWwoci5sZW5ndGgpLGk9cyh0LGUpLG89cyhuLGUpLHU9Mjxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1syXTpKdCxjPU1hdGgubWluKCh1PT09SnQ\/ZTpzKHUsZSkpLW8sZS1pKSxhPTE7Zm9yKG88aSYmaTxvK2MmJihhPS0xLG8rPWMtMSxpKz1jLTEpOzA8Yy0tOylvIGluIHI\/cltpXT1yW29dOmRlbGV0ZSByW2ldLGkrPWEsbys9YTtyZXR1cm4gcn19LGZ1bmN0aW9uKHQsbil7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7cmV0dXJue3ZhbHVlOm4sZG9uZTohIXR9fX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoODcpO3IoMCkoe3RhcmdldDoiUmVnRXhwIixwcm90bzohMCxmb3JjZWQ6ZSE9PS8uLy5leGVjfSx7ZXhlYzplfSl9LGZ1bmN0aW9uKHQsbixyKXtyKDcpJiYiZyIhPS8uL2cuZmxhZ3MmJnIoOCkuZihSZWdFeHAucHJvdG90eXBlLCJmbGFncyIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6cig1MCl9KX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dHJ5e3JldHVybntlOiExLHY6dCgpfX1jYXRjaChuKXtyZXR1cm57ZTohMCx2Om59fX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDEpLGk9cig0KSxvPXIoOTEpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe2lmKGUodCksaShuKSYmbi5jb25zdHJ1Y3Rvcj09PXQpcmV0dXJuIG47dmFyIHI9by5mKHQpO3JldHVybigwLHIucmVzb2x2ZSkobiksci5wcm9taXNlfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMTE3KSxpPXIoNDIpO3QuZXhwb3J0cz1yKDYxKSgiTWFwIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gTWFwKCl7cmV0dXJuIHQodGhpcywwPGFyZ3VtZW50cy5sZW5ndGg\/YXJndW1lbnRzWzBdOkp0KX19LHtnZXQ6ZnVuY3Rpb24gZ2V0KHQpe3ZhciBuPWUuZ2V0RW50cnkoaSh0aGlzLCJNYXAiKSx0KTtyZXR1cm4gbiYmbi52fSxzZXQ6ZnVuY3Rpb24gc2V0KHQsbil7cmV0dXJuIGUuZGVmKGkodGhpcywiTWFwIiksMD09PXQ\/MDp0LG4pfX0sZSwhMCl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgdT1yKDgpLmYsYz1yKDM2KSxhPXIoNDEpLGY9cigxOCkscz1yKDM5KSxsPXIoNDApLGU9cig3OSksaT1yKDExMSksbz1yKDM4KSxoPXIoNykscD1yKDMwKS5mYXN0S2V5LHY9cig0MiksZz1oPyJfcyI6InNpemUiLHk9ZnVuY3Rpb24odCxuKXt2YXIgcixlPXAobik7aWYoIkYiIT09ZSlyZXR1cm4gdC5faVtlXTtmb3Iocj10Ll9mO3I7cj1yLm4paWYoci5rPT1uKXJldHVybiByfTt0LmV4cG9ydHM9e2dldENvbnN0cnVjdG9yOmZ1bmN0aW9uKHQsbyxyLGUpe3ZhciBpPXQoZnVuY3Rpb24odCxuKXtzKHQsaSxvLCJfaSIpLHQuX3Q9byx0Ll9pPWMobnVsbCksdC5fZj1KdCx0Ll9sPUp0LHRbZ109MCxuIT1KdCYmbChuLHIsdFtlXSx0KX0pO3JldHVybiBhKGkucHJvdG90eXBlLHtjbGVhcjpmdW5jdGlvbiBjbGVhcigpe2Zvcih2YXIgdD12KHRoaXMsbyksbj10Ll9pLHI9dC5fZjtyO3I9ci5uKXIucj0hMCxyLnAmJihyLnA9ci5wLm49SnQpLGRlbGV0ZSBuW3IuaV07dC5fZj10Ll9sPUp0LHRbZ109MH0sImRlbGV0ZSI6ZnVuY3Rpb24odCl7dmFyIG49dih0aGlzLG8pLHI9eShuLHQpO2lmKHIpe3ZhciBlPXIubixpPXIucDtkZWxldGUgbi5faVtyLmldLHIucj0hMCxpJiYoaS5uPWUpLGUmJihlLnA9aSksbi5fZj09ciYmKG4uX2Y9ZSksbi5fbD09ciYmKG4uX2w9aSksbltnXS0tfXJldHVybiEhcn0sZm9yRWFjaDpmdW5jdGlvbiBmb3JFYWNoKHQpe3YodGhpcyxvKTtmb3IodmFyIG4scj1mKHQsMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1sxXTpKdCwzKTtuPW4\/bi5uOnRoaXMuX2Y7KWZvcihyKG4udixuLmssdGhpcyk7biYmbi5yOyluPW4ucH0saGFzOmZ1bmN0aW9uIGhhcyh0KXtyZXR1cm4hIXkodih0aGlzLG8pLHQpfX0pLGgmJnUoaS5wcm90b3R5cGUsInNpemUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdih0aGlzLG8pW2ddfX0pLGl9LGRlZjpmdW5jdGlvbih0LG4scil7dmFyIGUsaSxvPXkodCxuKTtyZXR1cm4gbz9vLnY9cjoodC5fbD1vPXtpOmk9cChuLCEwKSxrOm4sdjpyLHA6ZT10Ll9sLG46SnQscjohMX0sdC5fZnx8KHQuX2Y9byksZSYmKGUubj1vKSx0W2ddKyssIkYiIT09aSYmKHQuX2lbaV09bykpLHR9LGdldEVudHJ5Onksc2V0U3Ryb25nOmZ1bmN0aW9uKHQscixuKXtlKHQscixmdW5jdGlvbih0LG4pe3RoaXMuX3Q9dih0LHIpLHRoaXMuX2s9bix0aGlzLl9sPUp0fSxmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLG49dC5fayxyPXQuX2w7ciYmci5yOylyPXIucDtyZXR1cm4gdC5fdCYmKHQuX2w9cj1yP3Iubjp0Ll90Ll9mKT9pKDAsImtleXMiPT1uP3IuazoidmFsdWVzIj09bj9yLnY6W3IuayxyLnZdKToodC5fdD1KdCxpKDEpKX0sbj8iZW50cmllcyI6InZhbHVlcyIsIW4sITApLG8ocil9fX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMTE3KSxpPXIoNDIpO3QuZXhwb3J0cz1yKDYxKSgiU2V0IixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gU2V0KCl7cmV0dXJuIHQodGhpcywwPGFyZ3VtZW50cy5sZW5ndGg\/YXJndW1lbnRzWzBdOkp0KX19LHthZGQ6ZnVuY3Rpb24gYWRkKHQpe3JldHVybiBlLmRlZihpKHRoaXMsIlNldCIpLHQ9MD09PXQ\/MDp0LHQpfX0sZSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgbyxlPXIoMiksaT1yKDI1KSgwKSx1PXIoMTIpLGM9cigzMCksYT1yKDk4KSxmPXIoMTIwKSxzPXIoNCksbD1yKDQyKSxoPXIoNDIpLHA9IWUuQWN0aXZlWE9iamVjdCYmIkFjdGl2ZVhPYmplY3QiaW4gZSx2PSJXZWFrTWFwIixnPWMuZ2V0V2Vhayx5PU9iamVjdC5pc0V4dGVuc2libGUsZD1mLnVmc3RvcmUsYj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gV2Vha01hcCgpe3JldHVybiB0KHRoaXMsMDxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1swXTpKdCl9fSxTPXtnZXQ6ZnVuY3Rpb24gZ2V0KHQpe2lmKHModCkpe3ZhciBuPWcodCk7cmV0dXJuITA9PT1uP2QobCh0aGlzLHYpKS5nZXQodCk6bj9uW3RoaXMuX2ldOkp0fX0sc2V0OmZ1bmN0aW9uIHNldCh0LG4pe3JldHVybiBmLmRlZihsKHRoaXMsdiksdCxuKX19LF89dC5leHBvcnRzPXIoNjEpKHYsYixTLGYsITAsITApO2gmJnAmJihhKChvPWYuZ2V0Q29uc3RydWN0b3IoYix2KSkucHJvdG90eXBlLFMpLGMuTkVFRD0hMCxpKFsiZGVsZXRlIiwiaGFzIiwiZ2V0Iiwic2V0Il0sZnVuY3Rpb24oZSl7dmFyIHQ9Xy5wcm90b3R5cGUsaT10W2VdO3UodCxlLGZ1bmN0aW9uKHQsbil7aWYocyh0KSYmIXkodCkpe3RoaXMuX2Z8fCh0aGlzLl9mPW5ldyBvKTt2YXIgcj10aGlzLl9mW2VdKHQsbik7cmV0dXJuInNldCI9PWU\/dGhpczpyfXJldHVybiBpLmNhbGwodGhpcyx0LG4pfSl9KSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgdT1yKDQxKSxjPXIoMzApLmdldFdlYWssaT1yKDEpLGE9cig0KSxmPXIoMzkpLHM9cig0MCksZT1yKDI1KSxsPXIoMTQpLGg9cig0Miksbz1lKDUpLHA9ZSg2KSx2PTAsZz1mdW5jdGlvbih0KXtyZXR1cm4gdC5fbHx8KHQuX2w9bmV3IHkpfSx5PWZ1bmN0aW9uKCl7dGhpcy5hPVtdfSxkPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG8odC5hLGZ1bmN0aW9uKHQpe3JldHVybiB0WzBdPT09bn0pfTt5LnByb3RvdHlwZT17Z2V0OmZ1bmN0aW9uKHQpe3ZhciBuPWQodGhpcyx0KTtpZihuKXJldHVybiBuWzFdfSxoYXM6ZnVuY3Rpb24odCl7cmV0dXJuISFkKHRoaXMsdCl9LHNldDpmdW5jdGlvbih0LG4pe3ZhciByPWQodGhpcyx0KTtyP3JbMV09bjp0aGlzLmEucHVzaChbdCxuXSl9LCJkZWxldGUiOmZ1bmN0aW9uKG4pe3ZhciB0PXAodGhpcy5hLGZ1bmN0aW9uKHQpe3JldHVybiB0WzBdPT09bn0pO3JldHVybn50JiZ0aGlzLmEuc3BsaWNlKHQsMSksISF+dH19LHQuZXhwb3J0cz17Z2V0Q29uc3RydWN0b3I6ZnVuY3Rpb24odCxyLGUsaSl7dmFyIG89dChmdW5jdGlvbih0LG4pe2YodCxvLHIsIl9pIiksdC5fdD1yLHQuX2k9disrLG4hPSh0Ll9sPUp0KSYmcyhuLGUsdFtpXSx0KX0pO3JldHVybiB1KG8ucHJvdG90eXBlLHsiZGVsZXRlIjpmdW5jdGlvbih0KXtpZighYSh0KSlyZXR1cm4hMTt2YXIgbj1jKHQpO3JldHVybiEwPT09bj9nKGgodGhpcyxyKSlbImRlbGV0ZSJdKHQpOm4mJmwobix0aGlzLl9pKSYmZGVsZXRlIG5bdGhpcy5faV19LGhhczpmdW5jdGlvbiBoYXModCl7aWYoIWEodCkpcmV0dXJuITE7dmFyIG49Yyh0KTtyZXR1cm4hMD09PW4\/ZyhoKHRoaXMscikpLmhhcyh0KTpuJiZsKG4sdGhpcy5faSl9fSksb30sZGVmOmZ1bmN0aW9uKHQsbixyKXt2YXIgZT1jKGkobiksITApO3JldHVybiEwPT09ZT9nKHQpLnNldChuLHIpOmVbdC5faV09cix0fSx1ZnN0b3JlOmd9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigzNyksaT1yKDUzKSxvPXIoMSksdT1yKDIpLlJlZmxlY3Q7dC5leHBvcnRzPXUmJnUub3duS2V5c3x8ZnVuY3Rpb24gb3duS2V5cyh0KXt2YXIgbj1lLmYobyh0KSkscj1pLmY7cmV0dXJuIHI\/bi5jb25jYXQocih0KSk6bn19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDIwKSxpPXIoNik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKHQ9PT1KdClyZXR1cm4gMDt2YXIgbj1lKHQpLHI9aShuKTtpZihuIT09cil0aHJvdyBSYW5nZUVycm9yKCJXcm9uZyBsZW5ndGghIik7cmV0dXJuIHJ9fSxmdW5jdGlvbih0LG4scil7dmFyIHA9cig1NCksdj1yKDQpLGc9cig2KSx5PXIoMTgpLGQ9cig1KSgiaXNDb25jYXRTcHJlYWRhYmxlIik7dC5leHBvcnRzPWZ1bmN0aW9uIGZsYXR0ZW5JbnRvQXJyYXkodCxuLHIsZSxpLG8sdSxjKXtmb3IodmFyIGEsZixzPWksbD0wLGg9ISF1JiZ5KHUsYywzKTtsPGU7KXtpZihsIGluIHIpe2lmKGE9aD9oKHJbbF0sbCxuKTpyW2xdLGY9ITEsdihhKSYmKGY9KGY9YVtkXSkhPT1KdD8hIWY6cChhKSksZiYmMDxvKXM9ZmxhdHRlbkludG9BcnJheSh0LG4sYSxnKGEubGVuZ3RoKSxzLG8tMSktMTtlbHNle2lmKDkwMDcxOTkyNTQ3NDA5OTE8PXMpdGhyb3cgVHlwZUVycm9yKCk7dFtzXT1hfXMrK31sKyt9cmV0dXJuIHN9fSxmdW5jdGlvbih0LG4scil7dmFyIHM9cig2KSxsPXIoNzQpLGg9cigyMyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbixyLGUpe3ZhciBpPVN0cmluZyhoKHQpKSxvPWkubGVuZ3RoLHU9cj09PUp0PyIgIjpTdHJpbmcociksYz1zKG4pO2lmKGM8PW98fCIiPT11KXJldHVybiBpO3ZhciBhPWMtbyxmPWwuY2FsbCh1LE1hdGguY2VpbChhL3UubGVuZ3RoKSk7cmV0dXJuIGE8Zi5sZW5ndGgmJihmPWYuc2xpY2UoMCxhKSksZT9mK2k6aStmfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBhPXIoNyksZj1yKDM0KSxzPXIoMTUpLGw9cig0OSkuZjt0LmV4cG9ydHM9ZnVuY3Rpb24oYyl7cmV0dXJuIGZ1bmN0aW9uKHQpe2Zvcih2YXIgbixyPXModCksZT1mKHIpLGk9ZS5sZW5ndGgsbz0wLHU9W107bzxpOyluPWVbbysrXSxhJiYhbC5jYWxsKHIsbil8fHUucHVzaChjP1tuLHJbbl1dOnJbbl0pO3JldHVybiB1fX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDQ0KSxpPXIoMTI3KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIHRvSlNPTigpe2lmKGUodGhpcykhPXQpdGhyb3cgVHlwZUVycm9yKHQrIiN0b0pTT04gaXNuJ3QgZ2VuZXJpYyIpO3JldHVybiBpKHRoaXMpfX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDQwKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXt2YXIgcj1bXTtyZXR1cm4gZSh0LCExLHIucHVzaCxyLG4pLHJ9fSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz1NYXRoLnNjYWxlfHxmdW5jdGlvbiBzY2FsZSh0LG4scixlLGkpe3JldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aHx8dCE9dHx8biE9bnx8ciE9cnx8ZSE9ZXx8aSE9aT9OYU46dD09PUluZmluaXR5fHx0PT09LUluZmluaXR5P3Q6KHQtbikqKGktZSkvKHItbikrZX19LGZ1bmN0aW9uKHQsbixyKXtyKDEzMCkscigxMzMpLHIoMTM0KSxyKDEzNSkscigxMzYpLHIoMTM3KSxyKDEzOCkscigxMzkpLHIoMTQwKSxyKDE0MSkscigxNDIpLHIoMTQzKSxyKDE0NCkscigxNDUpLHIoMTQ2KSxyKDE0NykscigxNDgpLHIoMTQ5KSxyKDE1MCkscigxNTEpLHIoMTUyKSxyKDE1MykscigxNTQpLHIoMTU1KSxyKDE1NikscigxNTcpLHIoMTU4KSxyKDE1OSkscigxNjApLHIoMTYxKSxyKDE2MikscigxNjMpLHIoMTY0KSxyKDE2NSkscigxNjYpLHIoMTY3KSxyKDE2OCkscigxNjkpLHIoMTcwKSxyKDE3MSkscigxNzIpLHIoMTczKSxyKDE3NCkscigxNzUpLHIoMTc2KSxyKDE3NykscigxNzgpLHIoMTc5KSxyKDE4MCkscigxODEpLHIoMTgyKSxyKDE4MykscigxODQpLHIoMTg1KSxyKDE4NikscigxODcpLHIoMTg4KSxyKDE4OSkscigxOTApLHIoMTkxKSxyKDE5MikscigxOTMpLHIoMTk0KSxyKDE5NSkscigxOTYpLHIoMTk3KSxyKDE5OCkscigxOTkpLHIoMjAwKSxyKDIwMSkscigyMDIpLHIoMjAzKSxyKDIwNCkscigyMDUpLHIoMjA2KSxyKDIwNykscigyMDgpLHIoMjA5KSxyKDIxMCkscigyMTEpLHIoMjEyKSxyKDIxNCkscigyMTUpLHIoMjE2KSxyKDIxNykscigyMTgpLHIoMjE5KSxyKDIyMCkscigyMjEpLHIoMjIyKSxyKDIyMykscigyMjQpLHIoMjI1KSxyKDg2KSxyKDIyNikscigyMjcpLHIoMTEyKSxyKDIyOCkscigxMTMpLHIoMjI5KSxyKDIzMCkscigyMzEpLHIoMjMyKSxyKDIzMykscigxMTYpLHIoMTE4KSxyKDExOSkscigyMzQpLHIoMjM1KSxyKDIzNikscigyMzcpLHIoMjM4KSxyKDIzOSkscigyNDApLHIoMjQxKSxyKDI0MikscigyNDMpLHIoMjQ0KSxyKDI0NSkscigyNDYpLHIoMjQ3KSxyKDI0OCkscigyNDkpLHIoMjUwKSxyKDI1MSkscigyNTMpLHIoMjU0KSxyKDI1NikscigyNTcpLHIoMjU4KSxyKDI1OSkscigyNjApLHIoMjYxKSxyKDI2MikscigyNjMpLHIoMjY0KSxyKDI2NSkscigyNjYpLHIoMjY3KSxyKDI2OCkscigyNjkpLHIoMjcwKSxyKDI3MSkscigyNzIpLHIoMjczKSxyKDI3NCkscigyNzUpLHIoMjc2KSxyKDI3NykscigyNzgpLHIoMjc5KSxyKDI4MCkscigyODEpLHIoMjgyKSxyKDI4MykscigyODQpLHIoMjg1KSxyKDI4NikscigyODcpLHIoMjg4KSxyKDI4OSkscigyOTApLHIoMjkxKSxyKDI5MikscigyOTMpLHIoMjk0KSxyKDI5NSkscigyOTYpLHIoMjk3KSxyKDI5OCkscigyOTkpLHIoMzAwKSxyKDMwMSkscigzMDIpLHIoMzAzKSxyKDMwNCkscigzMDUpLHIoMzA2KSxyKDMwNykscigzMDgpLHIoMzA5KSxyKDMxMCkscigzMTEpLHIoMzEyKSxyKDMxMykscigzMTQpLHIoMzE1KSxyKDMxNikscigzMTcpLHIoMzE4KSxyKDMxOSkscigzMjApLHIoMzIxKSxyKDMyMikscigzMjMpLHIoMzI0KSx0LmV4cG9ydHM9cigzMjUpfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyKSx1PXIoMTQpLGk9cig3KSxvPXIoMCksYz1yKDEyKSxhPXIoMzApLktFWSxmPXIoMykscz1yKDQ3KSxsPXIoNDMpLGg9cigzMykscD1yKDUpLHY9cig5NCksZz1yKDY3KSx5PXIoMTMyKSxkPXIoNTQpLGI9cigxKSxTPXIoNCksXz1yKDkpLHg9cigxNSksbT1yKDIyKSx3PXIoMzIpLEU9cigzNiksTz1yKDk3KSxNPXIoMTYpLEk9cig1MyksUD1yKDgpLEY9cigzNCksQT1NLmYsaz1QLmYsTj1PLmYsaj1lLlN5bWJvbCxSPWUuSlNPTixUPVImJlIuc3RyaW5naWZ5LEw9InByb3RvdHlwZSIsRD1wKCJfaGlkZGVuIiksQz1wKCJ0b1ByaW1pdGl2ZSIpLFU9e30ucHJvcGVydHlJc0VudW1lcmFibGUsVz1zKCJzeW1ib2wtcmVnaXN0cnkiKSxHPXMoInN5bWJvbHMiKSxWPXMoIm9wLXN5bWJvbHMiKSxCPU9iamVjdFtMXSx6PSJmdW5jdGlvbiI9PXR5cGVvZiBqJiYhIUkuZixxPWUuUU9iamVjdCxLPSFxfHwhcVtMXXx8IXFbTF0uZmluZENoaWxkLEo9aSYmZihmdW5jdGlvbigpe3JldHVybiA3IT1FKGsoe30sImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gayh0aGlzLCJhIix7dmFsdWU6N30pLmF9fSkpLmF9KT9mdW5jdGlvbih0LG4scil7dmFyIGU9QShCLG4pO2UmJmRlbGV0ZSBCW25dLGsodCxuLHIpLGUmJnQhPT1CJiZrKEIsbixlKX06ayxZPWZ1bmN0aW9uKHQpe3ZhciBuPUdbdF09RShqW0xdKTtyZXR1cm4gbi5faz10LG59LCQ9eiYmInN5bWJvbCI9PXR5cGVvZiBqLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBqfSxYPWZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KHQsbixyKXtyZXR1cm4gdD09PUImJlgoVixuLHIpLGIodCksbj1tKG4sITApLGIociksdShHLG4pPyhyLmVudW1lcmFibGU\/KHUodCxEKSYmdFtEXVtuXSYmKHRbRF1bbl09ITEpLHI9RShyLHtlbnVtZXJhYmxlOncoMCwhMSl9KSk6KHUodCxEKXx8ayh0LEQsdygxLHt9KSksdFtEXVtuXT0hMCksSih0LG4scikpOmsodCxuLHIpfSxIPWZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModCxuKXtiKHQpO2Zvcih2YXIgcixlPXkobj14KG4pKSxpPTAsbz1lLmxlbmd0aDtpPG87KVgodCxyPWVbaSsrXSxuW3JdKTtyZXR1cm4gdH0sWj1mdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZSh0KXt2YXIgbj1VLmNhbGwodGhpcyx0PW0odCwhMCkpO3JldHVybiEodGhpcz09PUImJnUoRyx0KSYmIXUoVix0KSkmJighKG58fCF1KHRoaXMsdCl8fCF1KEcsdCl8fHUodGhpcyxEKSYmdGhpc1tEXVt0XSl8fG4pfSxRPWZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pe2lmKHQ9eCh0KSxuPW0obiwhMCksdCE9PUJ8fCF1KEcsbil8fHUoVixuKSl7dmFyIHI9QSh0LG4pO3JldHVybiFyfHwhdShHLG4pfHx1KHQsRCkmJnRbRF1bbl18fChyLmVudW1lcmFibGU9ITApLHJ9fSx0dD1mdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKHQpe2Zvcih2YXIgbixyPU4oeCh0KSksZT1bXSxpPTA7aTxyLmxlbmd0aDspdShHLG49cltpKytdKXx8bj09RHx8bj09YXx8ZS5wdXNoKG4pO3JldHVybiBlfSxudD1mdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHModCl7Zm9yKHZhciBuLHI9dD09PUIsZT1OKHI\/Vjp4KHQpKSxpPVtdLG89MDtvPGUubGVuZ3RoOykhdShHLG49ZVtvKytdKXx8ciYmIXUoQixuKXx8aS5wdXNoKEdbbl0pO3JldHVybiBpfTt6fHwoYygoaj1mdW5jdGlvbiBTeW1ib2woKXtpZih0aGlzIGluc3RhbmNlb2Ygail0aHJvdyBUeXBlRXJyb3IoIlN5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvciEiKTt2YXIgbj1oKDA8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMF06SnQpLHI9ZnVuY3Rpb24odCl7dGhpcz09PUImJnIuY2FsbChWLHQpLHUodGhpcyxEKSYmdSh0aGlzW0RdLG4pJiYodGhpc1tEXVtuXT0hMSksSih0aGlzLG4sdygxLHQpKX07cmV0dXJuIGkmJksmJkooQixuLHtjb25maWd1cmFibGU6ITAsc2V0OnJ9KSxZKG4pfSlbTF0sInRvU3RyaW5nIixmdW5jdGlvbiB0b1N0cmluZygpe3JldHVybiB0aGlzLl9rfSksTS5mPVEsUC5mPVgscigzNykuZj1PLmY9dHQscig0OSkuZj1aLEkuZj1udCxpJiYhcigyOSkmJmMoQiwicHJvcGVydHlJc0VudW1lcmFibGUiLFosITApLHYuZj1mdW5jdGlvbih0KXtyZXR1cm4gWShwKHQpKX0pLG8oby5HK28uVytvLkYqIXose1N5bWJvbDpqfSk7Zm9yKHZhciBydD0iaGFzSW5zdGFuY2UsaXNDb25jYXRTcHJlYWRhYmxlLGl0ZXJhdG9yLG1hdGNoLHJlcGxhY2Usc2VhcmNoLHNwZWNpZXMsc3BsaXQsdG9QcmltaXRpdmUsdG9TdHJpbmdUYWcsdW5zY29wYWJsZXMiLnNwbGl0KCIsIiksZXQ9MDtldDxydC5sZW5ndGg7KXAocnRbZXQrK10pO2Zvcih2YXIgaXQ9RihwLnN0b3JlKSxvdD0wO290PGl0Lmxlbmd0aDspZyhpdFtvdCsrXSk7byhvLlMrby5GKiF6LCJTeW1ib2wiLHsiZm9yIjpmdW5jdGlvbih0KXtyZXR1cm4gdShXLHQrPSIiKT9XW3RdOldbdF09aih0KX0sa2V5Rm9yOmZ1bmN0aW9uIGtleUZvcih0KXtpZighJCh0KSl0aHJvdyBUeXBlRXJyb3IodCsiIGlzIG5vdCBhIHN5bWJvbCEiKTtmb3IodmFyIG4gaW4gVylpZihXW25dPT09dClyZXR1cm4gbn0sdXNlU2V0dGVyOmZ1bmN0aW9uKCl7Sz0hMH0sdXNlU2ltcGxlOmZ1bmN0aW9uKCl7Sz0hMX19KSxvKG8uUytvLkYqIXosIk9iamVjdCIse2NyZWF0ZTpmdW5jdGlvbiBjcmVhdGUodCxuKXtyZXR1cm4gbj09PUp0P0UodCk6SChFKHQpLG4pfSxkZWZpbmVQcm9wZXJ0eTpYLGRlZmluZVByb3BlcnRpZXM6SCxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6USxnZXRPd25Qcm9wZXJ0eU5hbWVzOnR0LGdldE93blByb3BlcnR5U3ltYm9sczpudH0pO3ZhciB1dD1mKGZ1bmN0aW9uKCl7SS5mKDEpfSk7byhvLlMrby5GKnV0LCJPYmplY3QiLHtnZXRPd25Qcm9wZXJ0eVN5bWJvbHM6ZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpe3JldHVybiBJLmYoXyh0KSl9fSksUiYmbyhvLlMrby5GKighenx8ZihmdW5jdGlvbigpe3ZhciB0PWooKTtyZXR1cm4iW251bGxdIiE9VChbdF0pfHwie30iIT1UKHthOnR9KXx8Int9IiE9VChPYmplY3QodCkpfSkpLCJKU09OIix7c3RyaW5naWZ5OmZ1bmN0aW9uIHN0cmluZ2lmeSh0KXtmb3IodmFyIG4scixlPVt0XSxpPTE7aTxhcmd1bWVudHMubGVuZ3RoOyllLnB1c2goYXJndW1lbnRzW2krK10pO2lmKHI9bj1lWzFdLChTKG4pfHx0IT09SnQpJiYhJCh0KSlyZXR1cm4gZChuKXx8KG49ZnVuY3Rpb24odCxuKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgciYmKG49ci5jYWxsKHRoaXMsdCxuKSksISQobikpcmV0dXJuIG59KSxlWzFdPW4sVC5hcHBseShSLGUpfX0pLGpbTF1bQ118fHIoMTEpKGpbTF0sQyxqW0xdLnZhbHVlT2YpLGwoaiwiU3ltYm9sIiksbChNYXRoLCJNYXRoIiwhMCksbChlLkpTT04sIkpTT04iLCEwKX0sZnVuY3Rpb24odCxuLHIpe3QuZXhwb3J0cz1yKDQ3KSgibmF0aXZlLWZ1bmN0aW9uLXRvLXN0cmluZyIsRnVuY3Rpb24udG9TdHJpbmcpfSxmdW5jdGlvbih0LG4scil7dmFyIGM9cigzNCksYT1yKDUzKSxmPXIoNDkpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgbj1jKHQpLHI9YS5mO2lmKHIpZm9yKHZhciBlLGk9cih0KSxvPWYuZix1PTA7dTxpLmxlbmd0aDspby5jYWxsKHQsZT1pW3UrK10pJiZuLnB1c2goZSk7cmV0dXJuIG59fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUytlLkYqIXIoNyksIk9iamVjdCIse2RlZmluZVByb3BlcnR5OnIoOCkuZn0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUytlLkYqIXIoNyksIk9iamVjdCIse2RlZmluZVByb3BlcnRpZXM6cig5Nil9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMTUpLGk9cigxNikuZjtyKDI0KSgiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKXtyZXR1cm4gaShlKHQpLG4pfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUywiT2JqZWN0Iix7Y3JlYXRlOnIoMzYpfSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDkpLGk9cigxNyk7cigyNCkoImdldFByb3RvdHlwZU9mIixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZih0KXtyZXR1cm4gaShlKHQpKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoOSksaT1yKDM0KTtyKDI0KSgia2V5cyIsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24ga2V5cyh0KXtyZXR1cm4gaShlKHQpKX19KX0sZnVuY3Rpb24odCxuLHIpe3IoMjQpKCJnZXRPd25Qcm9wZXJ0eU5hbWVzIixmdW5jdGlvbigpe3JldHVybiByKDk3KS5mfSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDQpLGk9cigzMCkub25GcmVlemU7cigyNCkoImZyZWV6ZSIsZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uIGZyZWV6ZSh0KXtyZXR1cm4gbiYmZSh0KT9uKGkodCkpOnR9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDQpLGk9cigzMCkub25GcmVlemU7cigyNCkoInNlYWwiLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbiBzZWFsKHQpe3JldHVybiBuJiZlKHQpP24oaSh0KSk6dH19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoNCksaT1yKDMwKS5vbkZyZWV6ZTtyKDI0KSgicHJldmVudEV4dGVuc2lvbnMiLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbiBwcmV2ZW50RXh0ZW5zaW9ucyh0KXtyZXR1cm4gbiYmZSh0KT9uKGkodCkpOnR9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDQpO3IoMjQpKCJpc0Zyb3plbiIsZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uIGlzRnJvemVuKHQpe3JldHVybiFlKHQpfHwhIW4mJm4odCl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDQpO3IoMjQpKCJpc1NlYWxlZCIsZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uIGlzU2VhbGVkKHQpe3JldHVybiFlKHQpfHwhIW4mJm4odCl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDQpO3IoMjQpKCJpc0V4dGVuc2libGUiLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbiBpc0V4dGVuc2libGUodCl7cmV0dXJuISFlKHQpJiYoIW58fG4odCkpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUytlLkYsIk9iamVjdCIse2Fzc2lnbjpyKDk4KX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUywiT2JqZWN0Iix7aXM6cig5OSl9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCk7ZShlLlMsIk9iamVjdCIse3NldFByb3RvdHlwZU9mOnIoNzEpLnNldH0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig0NCksaT17fTtpW3IoNSkoInRvU3RyaW5nVGFnIildPSJ6IixpKyIiIT0iW29iamVjdCB6XSImJnIoMTIpKE9iamVjdC5wcm90b3R5cGUsInRvU3RyaW5nIixmdW5jdGlvbiB0b1N0cmluZygpe3JldHVybiJbb2JqZWN0ICIrZSh0aGlzKSsiXSJ9LCEwKX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCk7ZShlLlAsIkZ1bmN0aW9uIix7YmluZDpyKDEwMCl9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoOCkuZixpPUZ1bmN0aW9uLnByb3RvdHlwZSxvPS9eXHMqZnVuY3Rpb24gKFteIChdKikvOyJuYW1lImluIGl8fHIoNykmJmUoaSwibmFtZSIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXt0cnl7cmV0dXJuKCIiK3RoaXMpLm1hdGNoKG8pWzFdfWNhdGNoKHQpe3JldHVybiIifX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoNCksaT1yKDE3KSxvPXIoNSkoImhhc0luc3RhbmNlIiksdT1GdW5jdGlvbi5wcm90b3R5cGU7byBpbiB1fHxyKDgpLmYodSxvLHt2YWx1ZTpmdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdGhpc3x8IWUodCkpcmV0dXJuITE7aWYoIWUodGhpcy5wcm90b3R5cGUpKXJldHVybiB0IGluc3RhbmNlb2YgdGhpcztmb3IoO3Q9aSh0KTspaWYodGhpcy5wcm90b3R5cGU9PT10KXJldHVybiEwO3JldHVybiExfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyKSxpPXIoMTQpLG89cigxOSksdT1yKDcyKSxzPXIoMjIpLGM9cigzKSxhPXIoMzcpLmYsZj1yKDE2KS5mLGw9cig4KS5mLGg9cig0NSkudHJpbSxwPSJOdW1iZXIiLHY9ZVtwXSxnPXYseT12LnByb3RvdHlwZSxkPW8ocigzNikoeSkpPT1wLGI9InRyaW0iaW4gU3RyaW5nLnByb3RvdHlwZSxTPWZ1bmN0aW9uKHQpe3ZhciBuPXModCwhMSk7aWYoInN0cmluZyI9PXR5cGVvZiBuJiYyPG4ubGVuZ3RoKXt2YXIgcixlLGksbz0obj1iP24udHJpbSgpOmgobiwzKSkuY2hhckNvZGVBdCgwKTtpZig0Mz09PW98fDQ1PT09byl7aWYoODg9PT0ocj1uLmNoYXJDb2RlQXQoMikpfHwxMjA9PT1yKXJldHVybiBOYU59ZWxzZSBpZig0OD09PW8pe3N3aXRjaChuLmNoYXJDb2RlQXQoMSkpe2Nhc2UgNjY6Y2FzZSA5ODplPTIsaT00OTticmVhaztjYXNlIDc5OmNhc2UgMTExOmU9OCxpPTU1O2JyZWFrO2RlZmF1bHQ6cmV0dXJuK259Zm9yKHZhciB1LGM9bi5zbGljZSgyKSxhPTAsZj1jLmxlbmd0aDthPGY7YSsrKWlmKCh1PWMuY2hhckNvZGVBdChhKSk8NDh8fGk8dSlyZXR1cm4gTmFOO3JldHVybiBwYXJzZUludChjLGUpfX1yZXR1cm4rbn07aWYoIXYoIiAwbzEiKXx8IXYoIjBiMSIpfHx2KCIrMHgxIikpe3Y9ZnVuY3Rpb24gTnVtYmVyKHQpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg8MT8wOnQscj10aGlzO3JldHVybiByIGluc3RhbmNlb2YgdiYmKGQ\/YyhmdW5jdGlvbigpe3kudmFsdWVPZi5jYWxsKHIpfSk6byhyKSE9cCk\/dShuZXcgZyhTKG4pKSxyLHYpOlMobil9O2Zvcih2YXIgXyx4PXIoNyk\/YShnKToiTUFYX1ZBTFVFLE1JTl9WQUxVRSxOYU4sTkVHQVRJVkVfSU5GSU5JVFksUE9TSVRJVkVfSU5GSU5JVFksRVBTSUxPTixpc0Zpbml0ZSxpc0ludGVnZXIsaXNOYU4saXNTYWZlSW50ZWdlcixNQVhfU0FGRV9JTlRFR0VSLE1JTl9TQUZFX0lOVEVHRVIscGFyc2VGbG9hdCxwYXJzZUludCxpc0ludGVnZXIiLnNwbGl0KCIsIiksbT0wO208eC5sZW5ndGg7bSsrKWkoZyxfPXhbbV0pJiYhaSh2LF8pJiZsKHYsXyxmKGcsXykpOyh2LnByb3RvdHlwZT15KS5jb25zdHJ1Y3Rvcj12LHIoMTIpKGUscCx2KX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGY9cigyMCkscz1yKDEwMiksbD1yKDc0KSxpPTEuLnRvRml4ZWQsbz1NYXRoLmZsb29yLHU9WzAsMCwwLDAsMCwwXSxoPSJOdW1iZXIudG9GaXhlZDogaW5jb3JyZWN0IGludm9jYXRpb24hIixwPWZ1bmN0aW9uKHQsbil7Zm9yKHZhciByPS0xLGU9bjsrK3I8NjspdVtyXT0oZSs9dCp1W3JdKSUxZTcsZT1vKGUvMWU3KX0sdj1mdW5jdGlvbih0KXtmb3IodmFyIG49NixyPTA7MDw9LS1uOyl1W25dPW8oKHIrPXVbbl0pL3QpLHI9ciV0KjFlN30sZz1mdW5jdGlvbigpe2Zvcih2YXIgdD02LG49IiI7MDw9LS10OylpZigiIiE9PW58fDA9PT10fHwwIT09dVt0XSl7dmFyIHI9U3RyaW5nKHVbdF0pO249IiI9PT1uP3I6bitsLmNhbGwoIjAiLDctci5sZW5ndGgpK3J9cmV0dXJuIG59LHk9ZnVuY3Rpb24odCxuLHIpe3JldHVybiAwPT09bj9yOm4lMj09MT95KHQsbi0xLHIqdCk6eSh0KnQsbi8yLHIpfTtlKGUuUCtlLkYqKCEhaSYmKCIwLjAwMCIhPT04ZS01LnRvRml4ZWQoMyl8fCIxIiE9PS45LnRvRml4ZWQoMCl8fCIxLjI1IiE9PTEuMjU1LnRvRml4ZWQoMil8fCIxMDAwMDAwMDAwMDAwMDAwMTI4IiE9PSgweGRlMGI2YjNhNzY0MDA4MCkudG9GaXhlZCgwKSl8fCFyKDMpKGZ1bmN0aW9uKCl7aS5jYWxsKHt9KX0pKSwiTnVtYmVyIix7dG9GaXhlZDpmdW5jdGlvbiB0b0ZpeGVkKHQpe3ZhciBuLHIsZSxpLG89cyh0aGlzLGgpLHU9Zih0KSxjPSIiLGE9IjAiO2lmKHU8MHx8MjA8dSl0aHJvdyBSYW5nZUVycm9yKGgpO2lmKG8hPW8pcmV0dXJuIk5hTiI7aWYobzw9LTFlMjF8fDFlMjE8PW8pcmV0dXJuIFN0cmluZyhvKTtpZihvPDAmJihjPSItIixvPS1vKSwxZS0yMTxvKWlmKHI9KG49ZnVuY3Rpb24odCl7Zm9yKHZhciBuPTAscj10OzQwOTY8PXI7KW4rPTEyLHIvPTQwOTY7Zm9yKDsyPD1yOyluKz0xLHIvPTI7cmV0dXJuIG59KG8qeSgyLDY5LDEpKS02OSk8MD9vKnkoMiwtbiwxKTpvL3koMixuLDEpLHIqPTQ1MDM1OTk2MjczNzA0OTYsMDwobj01Mi1uKSl7Zm9yKHAoMCxyKSxlPXU7Nzw9ZTspcCgxZTcsMCksZS09Nztmb3IocCh5KDEwLGUsMSksMCksZT1uLTE7MjM8PWU7KXYoMTw8MjMpLGUtPTIzO3YoMTw8ZSkscCgxLDEpLHYoMiksYT1nKCl9ZWxzZSBwKDAscikscCgxPDwtbiwwKSxhPWcoKStsLmNhbGwoIjAiLHUpO3JldHVybiBhPTA8dT9jKygoaT1hLmxlbmd0aCk8PXU\/IjAuIitsLmNhbGwoIjAiLHUtaSkrYTphLnNsaWNlKDAsaS11KSsiLiIrYS5zbGljZShpLXUpKTpjK2F9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9cigzKSxvPXIoMTAyKSx1PTEuLnRvUHJlY2lzaW9uO2UoZS5QK2UuRiooaShmdW5jdGlvbigpe3JldHVybiIxIiE9PXUuY2FsbCgxLEp0KX0pfHwhaShmdW5jdGlvbigpe3UuY2FsbCh7fSl9KSksIk51bWJlciIse3RvUHJlY2lzaW9uOmZ1bmN0aW9uIHRvUHJlY2lzaW9uKHQpe3ZhciBuPW8odGhpcywiTnVtYmVyI3RvUHJlY2lzaW9uOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEiKTtyZXR1cm4gdD09PUp0P3UuY2FsbChuKTp1LmNhbGwobix0KX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCk7ZShlLlMsIk51bWJlciIse0VQU0lMT046TWF0aC5wb3coMiwtNTIpfSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9cigyKS5pc0Zpbml0ZTtlKGUuUywiTnVtYmVyIix7aXNGaW5pdGU6ZnVuY3Rpb24gaXNGaW5pdGUodCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZpKHQpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUywiTnVtYmVyIix7aXNJbnRlZ2VyOnIoMTAzKX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUywiTnVtYmVyIix7aXNOYU46ZnVuY3Rpb24gaXNOYU4odCl7cmV0dXJuIHQhPXR9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9cigxMDMpLG89TWF0aC5hYnM7ZShlLlMsIk51bWJlciIse2lzU2FmZUludGVnZXI6ZnVuY3Rpb24gaXNTYWZlSW50ZWdlcih0KXtyZXR1cm4gaSh0KSYmbyh0KTw9OTAwNzE5OTI1NDc0MDk5MX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCk7ZShlLlMsIk51bWJlciIse01BWF9TQUZFX0lOVEVHRVI6OTAwNzE5OTI1NDc0MDk5MX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUywiTnVtYmVyIix7TUlOX1NBRkVfSU5URUdFUjotOTAwNzE5OTI1NDc0MDk5MX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoMTA0KTtlKGUuUytlLkYqKE51bWJlci5wYXJzZUZsb2F0IT1pKSwiTnVtYmVyIix7cGFyc2VGbG9hdDppfSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9cigxMDUpO2UoZS5TK2UuRiooTnVtYmVyLnBhcnNlSW50IT1pKSwiTnVtYmVyIix7cGFyc2VJbnQ6aX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoMTA1KTtlKGUuRytlLkYqKHBhcnNlSW50IT1pKSx7cGFyc2VJbnQ6aX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoMTA0KTtlKGUuRytlLkYqKHBhcnNlRmxvYXQhPWkpLHtwYXJzZUZsb2F0Oml9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDEwNiksbz1NYXRoLnNxcnQsdT1NYXRoLmFjb3NoO2UoZS5TK2UuRiohKHUmJjcxMD09TWF0aC5mbG9vcih1KE51bWJlci5NQVhfVkFMVUUpKSYmdShJbmZpbml0eSk9PUluZmluaXR5KSwiTWF0aCIse2Fjb3NoOmZ1bmN0aW9uIGFjb3NoKHQpe3JldHVybih0PSt0KTwxP05hTjo5NDkwNjI2NS42MjQyNTE1Njx0P01hdGgubG9nKHQpK01hdGguTE4yOmkodC0xK28odC0xKSpvKHQrMSkpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPU1hdGguYXNpbmg7ZShlLlMrZS5GKiEoaSYmMDwxL2koMCkpLCJNYXRoIix7YXNpbmg6ZnVuY3Rpb24gYXNpbmgodCl7cmV0dXJuIGlzRmluaXRlKHQ9K3QpJiYwIT10P3Q8MD8tYXNpbmgoLXQpOk1hdGgubG9nKHQrTWF0aC5zcXJ0KHQqdCsxKSk6dH19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1NYXRoLmF0YW5oO2UoZS5TK2UuRiohKGkmJjEvaSgtMCk8MCksIk1hdGgiLHthdGFuaDpmdW5jdGlvbiBhdGFuaCh0KXtyZXR1cm4gMD09KHQ9K3QpP3Q6TWF0aC5sb2coKDErdCkvKDEtdCkpLzJ9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9cig3NSk7ZShlLlMsIk1hdGgiLHtjYnJ0OmZ1bmN0aW9uIGNicnQodCl7cmV0dXJuIGkodD0rdCkqTWF0aC5wb3coTWF0aC5hYnModCksMS8zKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCk7ZShlLlMsIk1hdGgiLHtjbHozMjpmdW5jdGlvbiBjbHozMih0KXtyZXR1cm4odD4+Pj0wKT8zMS1NYXRoLmZsb29yKE1hdGgubG9nKHQrLjUpKk1hdGguTE9HMkUpOjMyfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPU1hdGguZXhwO2UoZS5TLCJNYXRoIix7Y29zaDpmdW5jdGlvbiBjb3NoKHQpe3JldHVybihpKHQ9K3QpK2koLXQpKS8yfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoNzYpO2UoZS5TK2UuRiooaSE9TWF0aC5leHBtMSksIk1hdGgiLHtleHBtMTppfSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5TLCJNYXRoIix7ZnJvdW5kOnIoMTA3KX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxhPU1hdGguYWJzO2UoZS5TLCJNYXRoIix7aHlwb3Q6ZnVuY3Rpb24gaHlwb3QodCxuKXtmb3IodmFyIHIsZSxpPTAsbz0wLHU9YXJndW1lbnRzLmxlbmd0aCxjPTA7bzx1OyljPChyPWEoYXJndW1lbnRzW28rK10pKT8oaT1pKihlPWMvcikqZSsxLGM9cik6aSs9MDxyPyhlPXIvYykqZTpyO3JldHVybiBjPT09SW5maW5pdHk\/SW5maW5pdHk6YypNYXRoLnNxcnQoaSl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9TWF0aC5pbXVsO2UoZS5TK2UuRipyKDMpKGZ1bmN0aW9uKCl7cmV0dXJuLTUhPWkoNDI5NDk2NzI5NSw1KXx8MiE9aS5sZW5ndGh9KSwiTWF0aCIse2ltdWw6ZnVuY3Rpb24gaW11bCh0LG4pe3ZhciByPTY1NTM1LGU9K3QsaT0rbixvPXImZSx1PXImaTtyZXR1cm4gMHxvKnUrKChyJmU+Pj4xNikqdStvKihyJmk+Pj4xNik8PDE2Pj4+MCl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5TLCJNYXRoIix7bG9nMTA6ZnVuY3Rpb24gbG9nMTAodCl7cmV0dXJuIE1hdGgubG9nKHQpKk1hdGguTE9HMTBFfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUywiTWF0aCIse2xvZzFwOnIoMTA2KX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUywiTWF0aCIse2xvZzI6ZnVuY3Rpb24gbG9nMih0KXtyZXR1cm4gTWF0aC5sb2codCkvTWF0aC5MTjJ9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5TLCJNYXRoIix7c2lnbjpyKDc1KX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoNzYpLG89TWF0aC5leHA7ZShlLlMrZS5GKnIoMykoZnVuY3Rpb24oKXtyZXR1cm4tMmUtMTchPSFNYXRoLnNpbmgoLTJlLTE3KX0pLCJNYXRoIix7c2luaDpmdW5jdGlvbiBzaW5oKHQpe3JldHVybiBNYXRoLmFicyh0PSt0KTwxPyhpKHQpLWkoLXQpKS8yOihvKHQtMSktbygtdC0xKSkqKE1hdGguRS8yKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDc2KSxvPU1hdGguZXhwO2UoZS5TLCJNYXRoIix7dGFuaDpmdW5jdGlvbiB0YW5oKHQpe3ZhciBuPWkodD0rdCkscj1pKC10KTtyZXR1cm4gbj09SW5maW5pdHk\/MTpyPT1JbmZpbml0eT8tMToobi1yKS8obyh0KStvKC10KSl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5TLCJNYXRoIix7dHJ1bmM6ZnVuY3Rpb24gdHJ1bmModCl7cmV0dXJuKDA8dD9NYXRoLmZsb29yOk1hdGguY2VpbCkodCl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLG89cigzNSksdT1TdHJpbmcuZnJvbUNoYXJDb2RlLGk9U3RyaW5nLmZyb21Db2RlUG9pbnQ7ZShlLlMrZS5GKighIWkmJjEhPWkubGVuZ3RoKSwiU3RyaW5nIix7ZnJvbUNvZGVQb2ludDpmdW5jdGlvbiBmcm9tQ29kZVBvaW50KHQpe2Zvcih2YXIgbixyPVtdLGU9YXJndW1lbnRzLmxlbmd0aCxpPTA7aTxlOyl7aWYobj0rYXJndW1lbnRzW2krK10sbyhuLDExMTQxMTEpIT09bil0aHJvdyBSYW5nZUVycm9yKG4rIiBpcyBub3QgYSB2YWxpZCBjb2RlIHBvaW50Iik7ci5wdXNoKG48NjU1MzY\/dShuKTp1KDU1Mjk2Kygobi09NjU1MzYpPj4xMCksbiUxMDI0KzU2MzIwKSl9cmV0dXJuIHIuam9pbigiIil9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLHU9cigxNSksYz1yKDYpO2UoZS5TLCJTdHJpbmciLHtyYXc6ZnVuY3Rpb24gcmF3KHQpe2Zvcih2YXIgbj11KHQucmF3KSxyPWMobi5sZW5ndGgpLGU9YXJndW1lbnRzLmxlbmd0aCxpPVtdLG89MDtvPHI7KWkucHVzaChTdHJpbmcobltvKytdKSksbzxlJiZpLnB1c2goU3RyaW5nKGFyZ3VtZW50c1tvXSkpO3JldHVybiBpLmpvaW4oIiIpfX0pfSxmdW5jdGlvbih0LG4scil7cig0NSkoInRyaW0iLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiB0cmltKCl7cmV0dXJuIHQodGhpcywzKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDU1KSghMSk7ZShlLlAsIlN0cmluZyIse2NvZGVQb2ludEF0OmZ1bmN0aW9uIGNvZGVQb2ludEF0KHQpe3JldHVybiBpKHRoaXMsdCl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLHU9cig2KSxjPXIoNzcpLGE9ImVuZHNXaXRoIixmPSIiW2FdO2UoZS5QK2UuRipyKDc4KShhKSwiU3RyaW5nIix7ZW5kc1dpdGg6ZnVuY3Rpb24gZW5kc1dpdGgodCl7dmFyIG49Yyh0aGlzLHQsYSkscj0xPGFyZ3VtZW50cy5sZW5ndGg\/YXJndW1lbnRzWzFdOkp0LGU9dShuLmxlbmd0aCksaT1yPT09SnQ\/ZTpNYXRoLm1pbih1KHIpLGUpLG89U3RyaW5nKHQpO3JldHVybiBmP2YuY2FsbChuLG8saSk6bi5zbGljZShpLW8ubGVuZ3RoLGkpPT09b319KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDc3KSxvPSJpbmNsdWRlcyI7ZShlLlArZS5GKnIoNzgpKG8pLCJTdHJpbmciLHtpbmNsdWRlczpmdW5jdGlvbiBpbmNsdWRlcyh0KXtyZXR1cm4hIX5pKHRoaXMsdCxvKS5pbmRleE9mKHQsMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1sxXTpKdCl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5QLCJTdHJpbmciLHtyZXBlYXQ6cig3NCl9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDYpLG89cig3NyksdT0ic3RhcnRzV2l0aCIsYz0iIlt1XTtlKGUuUCtlLkYqcig3OCkodSksIlN0cmluZyIse3N0YXJ0c1dpdGg6ZnVuY3Rpb24gc3RhcnRzV2l0aCh0KXt2YXIgbj1vKHRoaXMsdCx1KSxyPWkoTWF0aC5taW4oMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1sxXTpKdCxuLmxlbmd0aCkpLGU9U3RyaW5nKHQpO3JldHVybiBjP2MuY2FsbChuLGUscik6bi5zbGljZShyLHIrZS5sZW5ndGgpPT09ZX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoNTUpKCEwKTtyKDc5KShTdHJpbmcsIlN0cmluZyIsZnVuY3Rpb24odCl7dGhpcy5fdD1TdHJpbmcodCksdGhpcy5faT0wfSxmdW5jdGlvbigpe3ZhciB0LG49dGhpcy5fdCxyPXRoaXMuX2k7cmV0dXJuIG4ubGVuZ3RoPD1yP3t2YWx1ZTpKdCxkb25lOiEwfToodD1lKG4sciksdGhpcy5faSs9dC5sZW5ndGgse3ZhbHVlOnQsZG9uZTohMX0pfSl9LGZ1bmN0aW9uKHQsbixyKXtyKDEzKSgiYW5jaG9yIixmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24gYW5jaG9yKHQpe3JldHVybiBuKHRoaXMsImEiLCJuYW1lIix0KX19KX0sZnVuY3Rpb24odCxuLHIpe3IoMTMpKCJiaWciLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiBiaWcoKXtyZXR1cm4gdCh0aGlzLCJiaWciLCIiLCIiKX19KX0sZnVuY3Rpb24odCxuLHIpe3IoMTMpKCJibGluayIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIGJsaW5rKCl7cmV0dXJuIHQodGhpcywiYmxpbmsiLCIiLCIiKX19KX0sZnVuY3Rpb24odCxuLHIpe3IoMTMpKCJib2xkIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gYm9sZCgpe3JldHVybiB0KHRoaXMsImIiLCIiLCIiKX19KX0sZnVuY3Rpb24odCxuLHIpe3IoMTMpKCJmaXhlZCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIGZpeGVkKCl7cmV0dXJuIHQodGhpcywidHQiLCIiLCIiKX19KX0sZnVuY3Rpb24odCxuLHIpe3IoMTMpKCJmb250Y29sb3IiLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbiBmb250Y29sb3IodCl7cmV0dXJuIG4odGhpcywiZm9udCIsImNvbG9yIix0KX19KX0sZnVuY3Rpb24odCxuLHIpe3IoMTMpKCJmb250c2l6ZSIsZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uIGZvbnRzaXplKHQpe3JldHVybiBuKHRoaXMsImZvbnQiLCJzaXplIix0KX19KX0sZnVuY3Rpb24odCxuLHIpe3IoMTMpKCJpdGFsaWNzIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gaXRhbGljcygpe3JldHVybiB0KHRoaXMsImkiLCIiLCIiKX19KX0sZnVuY3Rpb24odCxuLHIpe3IoMTMpKCJsaW5rIixmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24gbGluayh0KXtyZXR1cm4gbih0aGlzLCJhIiwiaHJlZiIsdCl9fSl9LGZ1bmN0aW9uKHQsbixyKXtyKDEzKSgic21hbGwiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiBzbWFsbCgpe3JldHVybiB0KHRoaXMsInNtYWxsIiwiIiwiIil9fSl9LGZ1bmN0aW9uKHQsbixyKXtyKDEzKSgic3RyaWtlIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gc3RyaWtlKCl7cmV0dXJuIHQodGhpcywic3RyaWtlIiwiIiwiIil9fSl9LGZ1bmN0aW9uKHQsbixyKXtyKDEzKSgic3ViIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gc3ViKCl7cmV0dXJuIHQodGhpcywic3ViIiwiIiwiIil9fSl9LGZ1bmN0aW9uKHQsbixyKXtyKDEzKSgic3VwIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gc3VwKCl7cmV0dXJuIHQodGhpcywic3VwIiwiIiwiIil9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5TLCJBcnJheSIse2lzQXJyYXk6cig1NCl9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBoPXIoMTgpLGU9cigwKSxwPXIoOSksdj1yKDEwOCksZz1yKDgxKSx5PXIoNiksZD1yKDgyKSxiPXIoODMpO2UoZS5TK2UuRiohcig1NykoZnVuY3Rpb24odCl7QXJyYXkuZnJvbSh0KX0pLCJBcnJheSIse2Zyb206ZnVuY3Rpb24gZnJvbSh0KXt2YXIgbixyLGUsaSxvPXAodCksdT0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcz90aGlzOkFycmF5LGM9YXJndW1lbnRzLmxlbmd0aCxhPTE8Yz9hcmd1bWVudHNbMV06SnQsZj1hIT09SnQscz0wLGw9YihvKTtpZihmJiYoYT1oKGEsMjxjP2FyZ3VtZW50c1syXTpKdCwyKSksbD09SnR8fHU9PUFycmF5JiZnKGwpKWZvcihyPW5ldyB1KG49eShvLmxlbmd0aCkpO3M8bjtzKyspZChyLHMsZj9hKG9bc10scyk6b1tzXSk7ZWxzZSBmb3IoaT1sLmNhbGwobykscj1uZXcgdTshKGU9aS5uZXh0KCkpLmRvbmU7cysrKWQocixzLGY\/dihpLGEsW2UudmFsdWUsc10sITApOmUudmFsdWUpO3JldHVybiByLmxlbmd0aD1zLHJ9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9cig4Mik7ZShlLlMrZS5GKnIoMykoZnVuY3Rpb24oKXtmdW5jdGlvbiBGKCl7fXJldHVybiEoQXJyYXkub2YuY2FsbChGKWluc3RhbmNlb2YgRil9KSwiQXJyYXkiLHtvZjpmdW5jdGlvbiBvZigpe2Zvcih2YXIgdD0wLG49YXJndW1lbnRzLmxlbmd0aCxyPW5ldygiZnVuY3Rpb24iPT10eXBlb2YgdGhpcz90aGlzOkFycmF5KShuKTt0PG47KWkocix0LGFyZ3VtZW50c1t0KytdKTtyZXR1cm4gci5sZW5ndGg9bixyfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoMTUpLG89W10uam9pbjtlKGUuUCtlLkYqKHIoNDgpIT1PYmplY3R8fCFyKDIxKShvKSksIkFycmF5Iix7am9pbjpmdW5jdGlvbiBqb2luKHQpe3JldHVybiBvLmNhbGwoaSh0aGlzKSx0PT09SnQ\/IiwiOnQpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoNzApLGY9cigxOSkscz1yKDM1KSxsPXIoNiksaD1bXS5zbGljZTtlKGUuUCtlLkYqcigzKShmdW5jdGlvbigpe2kmJmguY2FsbChpKX0pLCJBcnJheSIse3NsaWNlOmZ1bmN0aW9uIHNsaWNlKHQsbil7dmFyIHI9bCh0aGlzLmxlbmd0aCksZT1mKHRoaXMpO2lmKG49bj09PUp0P3I6biwiQXJyYXkiPT1lKXJldHVybiBoLmNhbGwodGhpcyx0LG4pO2Zvcih2YXIgaT1zKHQsciksbz1zKG4sciksdT1sKG8taSksYz1uZXcgQXJyYXkodSksYT0wO2E8dTthKyspY1thXT0iU3RyaW5nIj09ZT90aGlzLmNoYXJBdChpK2EpOnRoaXNbaSthXTtyZXR1cm4gY319KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDEwKSxvPXIoOSksdT1yKDMpLGM9W10uc29ydCxhPVsxLDIsM107ZShlLlArZS5GKih1KGZ1bmN0aW9uKCl7YS5zb3J0KEp0KX0pfHwhdShmdW5jdGlvbigpe2Euc29ydChudWxsKX0pfHwhcigyMSkoYykpLCJBcnJheSIse3NvcnQ6ZnVuY3Rpb24gc29ydCh0KXtyZXR1cm4gdD09PUp0P2MuY2FsbChvKHRoaXMpKTpjLmNhbGwobyh0aGlzKSxpKHQpKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDI1KSgwKSxvPXIoMjEpKFtdLmZvckVhY2gsITApO2UoZS5QK2UuRiohbywiQXJyYXkiLHtmb3JFYWNoOmZ1bmN0aW9uIGZvckVhY2godCl7cmV0dXJuIGkodGhpcyx0LGFyZ3VtZW50c1sxXSl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDQpLGk9cig1NCksbz1yKDUpKCJzcGVjaWVzIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBuO3JldHVybiBpKHQpJiYoImZ1bmN0aW9uIiE9dHlwZW9mKG49dC5jb25zdHJ1Y3Rvcil8fG4hPT1BcnJheSYmIWkobi5wcm90b3R5cGUpfHwobj1KdCksZShuKSYmbnVsbD09PShuPW5bb10pJiYobj1KdCkpLG49PT1KdD9BcnJheTpufX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDI1KSgxKTtlKGUuUCtlLkYqIXIoMjEpKFtdLm1hcCwhMCksIkFycmF5Iix7bWFwOmZ1bmN0aW9uIG1hcCh0KXtyZXR1cm4gaSh0aGlzLHQsYXJndW1lbnRzWzFdKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDI1KSgyKTtlKGUuUCtlLkYqIXIoMjEpKFtdLmZpbHRlciwhMCksIkFycmF5Iix7ZmlsdGVyOmZ1bmN0aW9uIGZpbHRlcih0KXtyZXR1cm4gaSh0aGlzLHQsYXJndW1lbnRzWzFdKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDI1KSgzKTtlKGUuUCtlLkYqIXIoMjEpKFtdLnNvbWUsITApLCJBcnJheSIse3NvbWU6ZnVuY3Rpb24gc29tZSh0KXtyZXR1cm4gaSh0aGlzLHQsYXJndW1lbnRzWzFdKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDI1KSg0KTtlKGUuUCtlLkYqIXIoMjEpKFtdLmV2ZXJ5LCEwKSwiQXJyYXkiLHtldmVyeTpmdW5jdGlvbiBldmVyeSh0KXtyZXR1cm4gaSh0aGlzLHQsYXJndW1lbnRzWzFdKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDEwOSk7ZShlLlArZS5GKiFyKDIxKShbXS5yZWR1Y2UsITApLCJBcnJheSIse3JlZHVjZTpmdW5jdGlvbiByZWR1Y2UodCl7cmV0dXJuIGkodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGgsYXJndW1lbnRzWzFdLCExKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDEwOSk7ZShlLlArZS5GKiFyKDIxKShbXS5yZWR1Y2VSaWdodCwhMCksIkFycmF5Iix7cmVkdWNlUmlnaHQ6ZnVuY3Rpb24gcmVkdWNlUmlnaHQodCl7cmV0dXJuIGkodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGgsYXJndW1lbnRzWzFdLCEwKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDUyKSghMSksbz1bXS5pbmRleE9mLHU9ISFvJiYxL1sxXS5pbmRleE9mKDEsLTApPDA7ZShlLlArZS5GKih1fHwhcigyMSkobykpLCJBcnJheSIse2luZGV4T2Y6ZnVuY3Rpb24gaW5kZXhPZih0KXtyZXR1cm4gdT9vLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8MDppKHRoaXMsdCxhcmd1bWVudHNbMV0pfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoMTUpLG89cigyMCksdT1yKDYpLGM9W10ubGFzdEluZGV4T2YsYT0hIWMmJjEvWzFdLmxhc3RJbmRleE9mKDEsLTApPDA7ZShlLlArZS5GKihhfHwhcigyMSkoYykpLCJBcnJheSIse2xhc3RJbmRleE9mOmZ1bmN0aW9uIGxhc3RJbmRleE9mKHQpe2lmKGEpcmV0dXJuIGMuYXBwbHkodGhpcyxhcmd1bWVudHMpfHwwO3ZhciBuPWkodGhpcykscj11KG4ubGVuZ3RoKSxlPXItMTtmb3IoMTxhcmd1bWVudHMubGVuZ3RoJiYoZT1NYXRoLm1pbihlLG8oYXJndW1lbnRzWzFdKSkpLGU8MCYmKGU9citlKTswPD1lO2UtLSlpZihlIGluIG4mJm5bZV09PT10KXJldHVybiBlfHwwO3JldHVybi0xfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUCwiQXJyYXkiLHtjb3B5V2l0aGluOnIoMTEwKX0pLHIoMzEpKCJjb3B5V2l0aGluIil9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5QLCJBcnJheSIse2ZpbGw6cig4NSl9KSxyKDMxKSgiZmlsbCIpfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoMjUpKDUpLG89ImZpbmQiLHU9ITA7byBpbltdJiZBcnJheSgxKVtvXShmdW5jdGlvbigpe3U9ITF9KSxlKGUuUCtlLkYqdSwiQXJyYXkiLHtmaW5kOmZ1bmN0aW9uIGZpbmQodCl7cmV0dXJuIGkodGhpcyx0LDE8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMV06SnQpfX0pLHIoMzEpKG8pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoMjUpKDYpLG89ImZpbmRJbmRleCIsdT0hMDtvIGluW10mJkFycmF5KDEpW29dKGZ1bmN0aW9uKCl7dT0hMX0pLGUoZS5QK2UuRip1LCJBcnJheSIse2ZpbmRJbmRleDpmdW5jdGlvbiBmaW5kSW5kZXgodCl7cmV0dXJuIGkodGhpcyx0LDE8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMV06SnQpfX0pLHIoMzEpKG8pfSxmdW5jdGlvbih0LG4scil7cigzOCkoIkFycmF5Iil9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDIpLG89cig3MiksaT1yKDgpLmYsdT1yKDM3KS5mLGM9cig1NiksYT1yKDUwKSxmPWUuUmVnRXhwLHM9ZixsPWYucHJvdG90eXBlLGg9L2EvZyxwPS9hL2csdj1uZXcgZihoKSE9PWg7aWYocig3KSYmKCF2fHxyKDMpKGZ1bmN0aW9uKCl7cmV0dXJuIHBbcig1KSgibWF0Y2giKV09ITEsZihoKSE9aHx8ZihwKT09cHx8Ii9hL2kiIT1mKGgsImkiKX0pKSl7Zj1mdW5jdGlvbiBSZWdFeHAodCxuKXt2YXIgcj10aGlzIGluc3RhbmNlb2YgZixlPWModCksaT1uPT09SnQ7cmV0dXJuIXImJmUmJnQuY29uc3RydWN0b3I9PT1mJiZpP3Q6byh2P25ldyBzKGUmJiFpP3Quc291cmNlOnQsbik6cygoZT10IGluc3RhbmNlb2YgZik\/dC5zb3VyY2U6dCxlJiZpP2EuY2FsbCh0KTpuKSxyP3RoaXM6bCxmKX07Zm9yKHZhciBnPWZ1bmN0aW9uKG4pe24gaW4gZnx8aShmLG4se2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gc1tuXX0sc2V0OmZ1bmN0aW9uKHQpe3Nbbl09dH19KX0seT11KHMpLGQ9MDtkPHkubGVuZ3RoOylnKHlbZCsrXSk7KGwuY29uc3RydWN0b3I9ZikucHJvdG90eXBlPWwscigxMikoZSwiUmVnRXhwIixmKX1yKDM4KSgiUmVnRXhwIil9LGZ1bmN0aW9uKHQsbixyKXtyKDExMyk7dmFyIGU9cigxKSxpPXIoNTApLG89cig3KSx1PSJ0b1N0cmluZyIsYz0vLi9bdV0sYT1mdW5jdGlvbih0KXtyKDEyKShSZWdFeHAucHJvdG90eXBlLHUsdCwhMCl9O3IoMykoZnVuY3Rpb24oKXtyZXR1cm4iL2EvYiIhPWMuY2FsbCh7c291cmNlOiJhIixmbGFnczoiYiJ9KX0pP2EoZnVuY3Rpb24gdG9TdHJpbmcoKXt2YXIgdD1lKHRoaXMpO3JldHVybiIvIi5jb25jYXQodC5zb3VyY2UsIi8iLCJmbGFncyJpbiB0P3QuZmxhZ3M6IW8mJnQgaW5zdGFuY2VvZiBSZWdFeHA\/aS5jYWxsKHQpOkp0KX0pOmMubmFtZSE9dSYmYShmdW5jdGlvbiB0b1N0cmluZygpe3JldHVybiBjLmNhbGwodGhpcyl9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBsPXIoMSksaD1yKDYpLHA9cig4OCksdj1yKDU4KTtyKDU5KSgibWF0Y2giLDEsZnVuY3Rpb24oZSxpLGYscyl7cmV0dXJuW2Z1bmN0aW9uIG1hdGNoKHQpe3ZhciBuPWUodGhpcykscj10PT1KdD9KdDp0W2ldO3JldHVybiByIT09SnQ\/ci5jYWxsKHQsbik6bmV3IFJlZ0V4cCh0KVtpXShTdHJpbmcobikpfSxmdW5jdGlvbih0KXt2YXIgbj1zKGYsdCx0aGlzKTtpZihuLmRvbmUpcmV0dXJuIG4udmFsdWU7dmFyIHI9bCh0KSxlPVN0cmluZyh0aGlzKTtpZighci5nbG9iYWwpcmV0dXJuIHYocixlKTtmb3IodmFyIGksbz1yLnVuaWNvZGUsdT1bXSxjPXIubGFzdEluZGV4PTA7bnVsbCE9PShpPXYocixlKSk7KXt2YXIgYT1TdHJpbmcoaVswXSk7IiI9PT0odVtjXT1hKSYmKHIubGFzdEluZGV4PXAoZSxoKHIubGFzdEluZGV4KSxvKSksYysrfXJldHVybiAwPT09Yz9udWxsOnV9XX0pfSxmdW5jdGlvbih0LG4scil7dmFyIHc9cigxKSxlPXIoOSksRT1yKDYpLE89cigyMCksTT1yKDg4KSxJPXIoNTgpLFA9TWF0aC5tYXgsRj1NYXRoLm1pbixoPU1hdGguZmxvb3IscD0vXCQoWyQmYCddfFxkXGQ\/fDxbXj5dKj4pL2csdj0vXCQoWyQmYCddfFxkXGQ\/KS9nO3IoNTkpKCJyZXBsYWNlIiwyLGZ1bmN0aW9uKGksbyx4LG0pe3JldHVybltmdW5jdGlvbiByZXBsYWNlKHQsbil7dmFyIHI9aSh0aGlzKSxlPXQ9PUp0P0p0OnRbb107cmV0dXJuIGUhPT1KdD9lLmNhbGwodCxyLG4pOnguY2FsbChTdHJpbmcociksdCxuKX0sZnVuY3Rpb24odCxuKXt2YXIgcj1tKHgsdCx0aGlzLG4pO2lmKHIuZG9uZSlyZXR1cm4gci52YWx1ZTt2YXIgZT13KHQpLGk9U3RyaW5nKHRoaXMpLG89ImZ1bmN0aW9uIj09dHlwZW9mIG47b3x8KG49U3RyaW5nKG4pKTt2YXIgdT1lLmdsb2JhbDtpZih1KXt2YXIgYz1lLnVuaWNvZGU7ZS5sYXN0SW5kZXg9MH1mb3IodmFyIGE9W107Oyl7dmFyIGY9SShlLGkpO2lmKA0KbnVsbD09PWYpYnJlYWs7aWYoYS5wdXNoKGYpLCF1KWJyZWFrOyIiPT09U3RyaW5nKGZbMF0pJiYoZS5sYXN0SW5kZXg9TShpLEUoZS5sYXN0SW5kZXgpLGMpKX1mb3IodmFyIHMsbD0iIixoPTAscD0wO3A8YS5sZW5ndGg7cCsrKXtmPWFbcF07Zm9yKHZhciB2PVN0cmluZyhmWzBdKSxnPVAoRihPKGYuaW5kZXgpLGkubGVuZ3RoKSwwKSx5PVtdLGQ9MTtkPGYubGVuZ3RoO2QrKyl5LnB1c2goKHM9ZltkXSk9PT1KdD9zOlN0cmluZyhzKSk7dmFyIGI9Zi5ncm91cHM7aWYobyl7dmFyIFM9W3ZdLmNvbmNhdCh5LGcsaSk7YiE9PUp0JiZTLnB1c2goYik7dmFyIF89U3RyaW5nKG4uYXBwbHkoSnQsUykpfWVsc2UgXz1nZXRTdWJzdGl0dXRpb24odixpLGcseSxiLG4pO2g8PWcmJihsKz1pLnNsaWNlKGgsZykrXyxoPWcrdi5sZW5ndGgpfXJldHVybiBsK2kuc2xpY2UoaCl9XTtmdW5jdGlvbiBnZXRTdWJzdGl0dXRpb24obyx1LGMsYSxmLHQpe3ZhciBzPWMrby5sZW5ndGgsbD1hLmxlbmd0aCxuPXY7cmV0dXJuIGYhPT1KdCYmKGY9ZShmKSxuPXApLHguY2FsbCh0LG4sZnVuY3Rpb24odCxuKXt2YXIgcjtzd2l0Y2gobi5jaGFyQXQoMCkpe2Nhc2UiJCI6cmV0dXJuIiQiO2Nhc2UiJiI6cmV0dXJuIG87Y2FzZSJgIjpyZXR1cm4gdS5zbGljZSgwLGMpO2Nhc2UiJyI6cmV0dXJuIHUuc2xpY2Uocyk7Y2FzZSI8IjpyPWZbbi5zbGljZSgxLC0xKV07YnJlYWs7ZGVmYXVsdDp2YXIgZT0rbjtpZigwPT09ZSlyZXR1cm4gdDtpZihsPGUpe3ZhciBpPWgoZS8xMCk7cmV0dXJuIDA9PT1pP3Q6aTw9bD9hW2ktMV09PT1KdD9uLmNoYXJBdCgxKTphW2ktMV0rbi5jaGFyQXQoMSk6dH1yPWFbZS0xXX1yZXR1cm4gcj09PUp0PyIiOnJ9KX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBhPXIoMSksZj1yKDk5KSxzPXIoNTgpO3IoNTkpKCJzZWFyY2giLDEsZnVuY3Rpb24oZSxpLHUsYyl7cmV0dXJuW2Z1bmN0aW9uIHNlYXJjaCh0KXt2YXIgbj1lKHRoaXMpLHI9dD09SnQ\/SnQ6dFtpXTtyZXR1cm4gciE9PUp0P3IuY2FsbCh0LG4pOm5ldyBSZWdFeHAodClbaV0oU3RyaW5nKG4pKX0sZnVuY3Rpb24odCl7dmFyIG49Yyh1LHQsdGhpcyk7aWYobi5kb25lKXJldHVybiBuLnZhbHVlO3ZhciByPWEodCksZT1TdHJpbmcodGhpcyksaT1yLmxhc3RJbmRleDtmKGksMCl8fChyLmxhc3RJbmRleD0wKTt2YXIgbz1zKHIsZSk7cmV0dXJuIGYoci5sYXN0SW5kZXgsaSl8fChyLmxhc3RJbmRleD1pKSxudWxsPT09bz8tMTpvLmluZGV4fV19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBzPXIoNTYpLGI9cigxKSxTPXIoNTEpLF89cig4OCkseD1yKDYpLG09cig1OCksbD1yKDg3KSxlPXIoMyksdz1NYXRoLm1pbixoPVtdLnB1c2gsdT0ic3BsaXQiLHA9Imxlbmd0aCIsdj0ibGFzdEluZGV4IixFPTQyOTQ5NjcyOTUsTz0hZShmdW5jdGlvbigpe1JlZ0V4cChFLCJ5Iil9KTtyKDU5KSgic3BsaXQiLDIsZnVuY3Rpb24oaSxvLGcseSl7dmFyIGQ7cmV0dXJuIGQ9ImMiPT0iYWJiYyJbdV0oLyhiKSovKVsxXXx8NCE9InRlc3QiW3VdKC8oPzopLywtMSlbcF18fDIhPSJhYiJbdV0oLyg\/OmFiKSovKVtwXXx8NCE9Ii4iW3VdKC8oLj8pKC4\/KS8pW3BdfHwxPCIuIlt1XSgvKCkoKS8pW3BdfHwiIlt1XSgvLj8vKVtwXT9mdW5jdGlvbih0LG4pe3ZhciByPVN0cmluZyh0aGlzKTtpZih0PT09SnQmJjA9PT1uKXJldHVybltdO2lmKCFzKHQpKXJldHVybiBnLmNhbGwocix0LG4pO2Zvcih2YXIgZSxpLG8sdT1bXSxjPTAsYT1uPT09SnQ\/RTpuPj4+MCxmPW5ldyBSZWdFeHAodC5zb3VyY2UsKHQuaWdub3JlQ2FzZT8iaSI6IiIpKyh0Lm11bHRpbGluZT8ibSI6IiIpKyh0LnVuaWNvZGU\/InUiOiIiKSsodC5zdGlja3k\/InkiOiIiKSsiZyIpOyhlPWwuY2FsbChmLHIpKSYmIShjPChpPWZbdl0pJiYodS5wdXNoKHIuc2xpY2UoYyxlLmluZGV4KSksMTxlW3BdJiZlLmluZGV4PHJbcF0mJmguYXBwbHkodSxlLnNsaWNlKDEpKSxvPWVbMF1bcF0sYz1pLGE8PXVbcF0pKTspZlt2XT09PWUuaW5kZXgmJmZbdl0rKztyZXR1cm4gYz09PXJbcF0\/IW8mJmYudGVzdCgiIil8fHUucHVzaCgiIik6dS5wdXNoKHIuc2xpY2UoYykpLGE8dVtwXT91LnNsaWNlKDAsYSk6dX06IjAiW3VdKEp0LDApW3BdP2Z1bmN0aW9uKHQsbil7cmV0dXJuIHQ9PT1KdCYmMD09PW4\/W106Zy5jYWxsKHRoaXMsdCxuKX06ZyxbZnVuY3Rpb24gc3BsaXQodCxuKXt2YXIgcj1pKHRoaXMpLGU9dD09SnQ\/SnQ6dFtvXTtyZXR1cm4gZSE9PUp0P2UuY2FsbCh0LHIsbik6ZC5jYWxsKFN0cmluZyhyKSx0LG4pfSxmdW5jdGlvbih0LG4pe3ZhciByPXkoZCx0LHRoaXMsbixkIT09Zyk7aWYoci5kb25lKXJldHVybiByLnZhbHVlO3ZhciBlPWIodCksaT1TdHJpbmcodGhpcyksbz1TKGUsUmVnRXhwKSx1PWUudW5pY29kZSxjPW5ldyBvKE8\/ZToiXig\/OiIrZS5zb3VyY2UrIikiLChlLmlnbm9yZUNhc2U\/ImkiOiIiKSsoZS5tdWx0aWxpbmU\/Im0iOiIiKSsoZS51bmljb2RlPyJ1IjoiIikrKE8\/InkiOiJnIikpLGE9bj09PUp0P0U6bj4+PjA7aWYoMD09PWEpcmV0dXJuW107aWYoMD09PWkubGVuZ3RoKXJldHVybiBudWxsPT09bShjLGkpP1tpXTpbXTtmb3IodmFyIGY9MCxzPTAsbD1bXTtzPGkubGVuZ3RoOyl7Yy5sYXN0SW5kZXg9Tz9zOjA7dmFyIGgscD1tKGMsTz9pOmkuc2xpY2UocykpO2lmKG51bGw9PT1wfHwoaD13KHgoYy5sYXN0SW5kZXgrKE8\/MDpzKSksaS5sZW5ndGgpKT09PWYpcz1fKGkscyx1KTtlbHNle2lmKGwucHVzaChpLnNsaWNlKGYscykpLGwubGVuZ3RoPT09YSlyZXR1cm4gbDtmb3IodmFyIHY9MTt2PD1wLmxlbmd0aC0xO3YrKylpZihsLnB1c2gocFt2XSksbC5sZW5ndGg9PT1hKXJldHVybiBsO3M9Zj1ofX1yZXR1cm4gbC5wdXNoKGkuc2xpY2UoZikpLGx9XX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHIsaSxvLHUsYz1lKDI5KSxhPWUoMiksZj1lKDE4KSxzPWUoNDQpLGw9ZSgwKSxoPWUoNCkscD1lKDEwKSx2PWUoMzkpLGc9ZSg0MCkseT1lKDUxKSxkPWUoODkpLnNldCxiPWUoOTApKCksUz1lKDkxKSxfPWUoMTE0KSx4PWUoNjApLG09ZSgxMTUpLHc9IlByb21pc2UiLEU9YS5UeXBlRXJyb3IsTz1hLnByb2Nlc3MsTT1PJiZPLnZlcnNpb25zLEk9TSYmTS52OHx8IiIsUD1hW3ddLEY9InByb2Nlc3MiPT1zKE8pLEE9ZnVuY3Rpb24oKXt9LGs9aT1TLmYsTj0hIWZ1bmN0aW9uKCl7dHJ5e3ZhciB0PVAucmVzb2x2ZSgxKSxuPSh0LmNvbnN0cnVjdG9yPXt9KVtlKDUpKCJzcGVjaWVzIildPWZ1bmN0aW9uKHQpe3QoQSxBKX07cmV0dXJuKEZ8fCJmdW5jdGlvbiI9PXR5cGVvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQpJiZ0LnRoZW4oQSlpbnN0YW5jZW9mIG4mJjAhPT1JLmluZGV4T2YoIjYuNiIpJiYtMT09PXguaW5kZXhPZigiQ2hyb21lLzY2Iil9Y2F0Y2gocil7fX0oKSxqPWZ1bmN0aW9uKHQpe3ZhciBuO3JldHVybiEoIWgodCl8fCJmdW5jdGlvbiIhPXR5cGVvZihuPXQudGhlbikpJiZufSxSPWZ1bmN0aW9uKGwscil7aWYoIWwuX24pe2wuX249ITA7dmFyIGU9bC5fYztiKGZ1bmN0aW9uKCl7Zm9yKHZhciBmPWwuX3Yscz0xPT1sLl9zLHQ9MCxuPWZ1bmN0aW9uKHQpe3ZhciBuLHIsZSxpPXM\/dC5vazp0LmZhaWwsbz10LnJlc29sdmUsdT10LnJlamVjdCxjPXQuZG9tYWluO3RyeXtpPyhzfHwoMj09bC5faCYmRChsKSxsLl9oPTEpLCEwPT09aT9uPWY6KGMmJmMuZW50ZXIoKSxuPWkoZiksYyYmKGMuZXhpdCgpLGU9ITApKSxuPT09dC5wcm9taXNlP3UoRSgiUHJvbWlzZS1jaGFpbiBjeWNsZSIpKToocj1qKG4pKT9yLmNhbGwobixvLHUpOm8obikpOnUoZil9Y2F0Y2goYSl7YyYmIWUmJmMuZXhpdCgpLHUoYSl9fTt0PGUubGVuZ3RoOyluKGVbdCsrXSk7bC5fYz1bXSxsLl9uPSExLHImJiFsLl9oJiZUKGwpfSl9fSxUPWZ1bmN0aW9uKG8pe2QuY2FsbChhLGZ1bmN0aW9uKCl7dmFyIHQsbixyLGU9by5fdixpPUwobyk7aWYoaSYmKHQ9XyhmdW5jdGlvbigpe0Y\/Ty5lbWl0KCJ1bmhhbmRsZWRSZWplY3Rpb24iLGUsbyk6KG49YS5vbnVuaGFuZGxlZHJlamVjdGlvbik\/bih7cHJvbWlzZTpvLHJlYXNvbjplfSk6KHI9YS5jb25zb2xlKSYmci5lcnJvciYmci5lcnJvcigiVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uIixlKX0pLG8uX2g9Rnx8TChvKT8yOjEpLG8uX2E9SnQsaSYmdC5lKXRocm93IHQudn0pfSxMPWZ1bmN0aW9uKHQpe3JldHVybiAxIT09dC5faCYmMD09PSh0Ll9hfHx0Ll9jKS5sZW5ndGh9LEQ9ZnVuY3Rpb24obil7ZC5jYWxsKGEsZnVuY3Rpb24oKXt2YXIgdDtGP08uZW1pdCgicmVqZWN0aW9uSGFuZGxlZCIsbik6KHQ9YS5vbnJlamVjdGlvbmhhbmRsZWQpJiZ0KHtwcm9taXNlOm4scmVhc29uOm4uX3Z9KX0pfSxDPWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXM7bi5fZHx8KG4uX2Q9ITAsKG49bi5fd3x8bikuX3Y9dCxuLl9zPTIsbi5fYXx8KG4uX2E9bi5fYy5zbGljZSgpKSxSKG4sITApKX0sVT1mdW5jdGlvbihyKXt2YXIgZSxpPXRoaXM7aWYoIWkuX2Qpe2kuX2Q9ITAsaT1pLl93fHxpO3RyeXtpZihpPT09cil0aHJvdyBFKCJQcm9taXNlIGNhbid0IGJlIHJlc29sdmVkIGl0c2VsZiIpOyhlPWoocikpP2IoZnVuY3Rpb24oKXt2YXIgdD17X3c6aSxfZDohMX07dHJ5e2UuY2FsbChyLGYoVSx0LDEpLGYoQyx0LDEpKX1jYXRjaChuKXtDLmNhbGwodCxuKX19KTooaS5fdj1yLGkuX3M9MSxSKGksITEpKX1jYXRjaCh0KXtDLmNhbGwoe193OmksX2Q6ITF9LHQpfX19O058fChQPWZ1bmN0aW9uIFByb21pc2UodCl7dih0aGlzLFAsdywiX2giKSxwKHQpLHIuY2FsbCh0aGlzKTt0cnl7dChmKFUsdGhpcywxKSxmKEMsdGhpcywxKSl9Y2F0Y2gobil7Qy5jYWxsKHRoaXMsbil9fSwocj1mdW5jdGlvbiBQcm9taXNlKHQpe3RoaXMuX2M9W10sdGhpcy5fYT1KdCx0aGlzLl9zPTAsdGhpcy5fZD0hMSx0aGlzLl92PUp0LHRoaXMuX2g9MCx0aGlzLl9uPSExfSkucHJvdG90eXBlPWUoNDEpKFAucHJvdG90eXBlLHt0aGVuOmZ1bmN0aW9uIHRoZW4odCxuKXt2YXIgcj1rKHkodGhpcyxQKSk7cmV0dXJuIHIub2s9ImZ1bmN0aW9uIiE9dHlwZW9mIHR8fHQsci5mYWlsPSJmdW5jdGlvbiI9PXR5cGVvZiBuJiZuLHIuZG9tYWluPUY\/Ty5kb21haW46SnQsdGhpcy5fYy5wdXNoKHIpLHRoaXMuX2EmJnRoaXMuX2EucHVzaChyKSx0aGlzLl9zJiZSKHRoaXMsITEpLHIucHJvbWlzZX0sImNhdGNoIjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKEp0LHQpfX0pLG89ZnVuY3Rpb24oKXt2YXIgdD1uZXcgcjt0aGlzLnByb21pc2U9dCx0aGlzLnJlc29sdmU9ZihVLHQsMSksdGhpcy5yZWplY3Q9ZihDLHQsMSl9LFMuZj1rPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09UHx8dD09PXU\/bmV3IG8odCk6aSh0KX0pLGwobC5HK2wuVytsLkYqIU4se1Byb21pc2U6UH0pLGUoNDMpKFAsdyksZSgzOCkodyksdT1lKDI2KVt3XSxsKGwuUytsLkYqIU4sdyx7cmVqZWN0OmZ1bmN0aW9uIHJlamVjdCh0KXt2YXIgbj1rKHRoaXMpO3JldHVybigwLG4ucmVqZWN0KSh0KSxuLnByb21pc2V9fSksbChsLlMrbC5GKihjfHwhTiksdyx7cmVzb2x2ZTpmdW5jdGlvbiByZXNvbHZlKHQpe3JldHVybiBtKGMmJnRoaXM9PT11P1A6dGhpcyx0KX19KSxsKGwuUytsLkYqIShOJiZlKDU3KShmdW5jdGlvbih0KXtQLmFsbCh0KVsiY2F0Y2giXShBKX0pKSx3LHthbGw6ZnVuY3Rpb24gYWxsKHQpe3ZhciB1PXRoaXMsbj1rKHUpLGM9bi5yZXNvbHZlLGE9bi5yZWplY3Qscj1fKGZ1bmN0aW9uKCl7dmFyIGU9W10saT0wLG89MTtnKHQsITEsZnVuY3Rpb24odCl7dmFyIG49aSsrLHI9ITE7ZS5wdXNoKEp0KSxvKyssdS5yZXNvbHZlKHQpLnRoZW4oZnVuY3Rpb24odCl7cnx8KHI9ITAsZVtuXT10LC0tb3x8YyhlKSl9LGEpfSksLS1vfHxjKGUpfSk7cmV0dXJuIHIuZSYmYShyLnYpLG4ucHJvbWlzZX0scmFjZTpmdW5jdGlvbiByYWNlKHQpe3ZhciBuPXRoaXMscj1rKG4pLGU9ci5yZWplY3QsaT1fKGZ1bmN0aW9uKCl7Zyh0LCExLGZ1bmN0aW9uKHQpe24ucmVzb2x2ZSh0KS50aGVuKHIucmVzb2x2ZSxlKX0pfSk7cmV0dXJuIGkuZSYmZShpLnYpLHIucHJvbWlzZX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMTIwKSxpPXIoNDIpLG89IldlYWtTZXQiO3IoNjEpKG8sZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIFdlYWtTZXQoKXtyZXR1cm4gdCh0aGlzLDA8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMF06SnQpfX0se2FkZDpmdW5jdGlvbiBhZGQodCl7cmV0dXJuIGUuZGVmKGkodGhpcyxvKSx0LCEwKX19LGUsITEsITApfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxvPXIoMTApLHU9cigxKSxjPShyKDIpLlJlZmxlY3R8fHt9KS5hcHBseSxhPUZ1bmN0aW9uLmFwcGx5O2UoZS5TK2UuRiohcigzKShmdW5jdGlvbigpe2MoZnVuY3Rpb24oKXt9KX0pLCJSZWZsZWN0Iix7YXBwbHk6ZnVuY3Rpb24gYXBwbHkodCxuLHIpe3ZhciBlPW8odCksaT11KHIpO3JldHVybiBjP2MoZSxuLGkpOmEuY2FsbChlLG4saSl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGM9cigzNiksYT1yKDEwKSxmPXIoMSkscz1yKDQpLGk9cigzKSxsPXIoMTAwKSxoPShyKDIpLlJlZmxlY3R8fHt9KS5jb25zdHJ1Y3QscD1pKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gRigpe31yZXR1cm4hKGgoZnVuY3Rpb24oKXt9LFtdLEYpaW5zdGFuY2VvZiBGKX0pLHY9IWkoZnVuY3Rpb24oKXtoKGZ1bmN0aW9uKCl7fSl9KTtlKGUuUytlLkYqKHB8fHYpLCJSZWZsZWN0Iix7Y29uc3RydWN0OmZ1bmN0aW9uIGNvbnN0cnVjdCh0LG4pe2EodCksZihuKTt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPDM\/dDphKGFyZ3VtZW50c1syXSk7aWYodiYmIXApcmV0dXJuIGgodCxuLHIpO2lmKHQ9PXIpe3N3aXRjaChuLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBuZXcgdDtjYXNlIDE6cmV0dXJuIG5ldyB0KG5bMF0pO2Nhc2UgMjpyZXR1cm4gbmV3IHQoblswXSxuWzFdKTtjYXNlIDM6cmV0dXJuIG5ldyB0KG5bMF0sblsxXSxuWzJdKTtjYXNlIDQ6cmV0dXJuIG5ldyB0KG5bMF0sblsxXSxuWzJdLG5bM10pfXZhciBlPVtudWxsXTtyZXR1cm4gZS5wdXNoLmFwcGx5KGUsbiksbmV3KGwuYXBwbHkodCxlKSl9dmFyIGk9ci5wcm90b3R5cGUsbz1jKHMoaSk\/aTpPYmplY3QucHJvdG90eXBlKSx1PUZ1bmN0aW9uLmFwcGx5LmNhbGwodCxvLG4pO3JldHVybiBzKHUpP3U6b319KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBpPXIoOCksZT1yKDApLG89cigxKSx1PXIoMjIpO2UoZS5TK2UuRipyKDMpKGZ1bmN0aW9uKCl7UmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShpLmYoe30sMSx7dmFsdWU6MX0pLDEse3ZhbHVlOjJ9KX0pLCJSZWZsZWN0Iix7ZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkodCxuLHIpe28odCksbj11KG4sITApLG8ocik7dHJ5e3JldHVybiBpLmYodCxuLHIpLCEwfWNhdGNoKGUpe3JldHVybiExfX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDE2KS5mLG89cigxKTtlKGUuUywiUmVmbGVjdCIse2RlbGV0ZVByb3BlcnR5OmZ1bmN0aW9uIGRlbGV0ZVByb3BlcnR5KHQsbil7dmFyIHI9aShvKHQpLG4pO3JldHVybiEociYmIXIuY29uZmlndXJhYmxlKSYmZGVsZXRlIHRbbl19fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9cigxKSxvPWZ1bmN0aW9uKHQpe3RoaXMuX3Q9aSh0KSx0aGlzLl9pPTA7dmFyIG4scj10aGlzLl9rPVtdO2ZvcihuIGluIHQpci5wdXNoKG4pfTtyKDgwKShvLCJPYmplY3QiLGZ1bmN0aW9uKCl7dmFyIHQsbj10aGlzLl9rO2Rve2lmKG4ubGVuZ3RoPD10aGlzLl9pKXJldHVybnt2YWx1ZTpKdCxkb25lOiEwfX13aGlsZSghKCh0PW5bdGhpcy5faSsrXSlpbiB0aGlzLl90KSk7cmV0dXJue3ZhbHVlOnQsZG9uZTohMX19KSxlKGUuUywiUmVmbGVjdCIse2VudW1lcmF0ZTpmdW5jdGlvbiBlbnVtZXJhdGUodCl7cmV0dXJuIG5ldyBvKHQpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIG89cigxNiksdT1yKDE3KSxjPXIoMTQpLGU9cigwKSxhPXIoNCksZj1yKDEpO2UoZS5TLCJSZWZsZWN0Iix7Z2V0OmZ1bmN0aW9uIGdldCh0LG4pe3ZhciByLGUsaT1hcmd1bWVudHMubGVuZ3RoPDM\/dDphcmd1bWVudHNbMl07cmV0dXJuIGYodCk9PT1pP3Rbbl06KHI9by5mKHQsbikpP2MociwidmFsdWUiKT9yLnZhbHVlOnIuZ2V0IT09SnQ\/ci5nZXQuY2FsbChpKTpKdDphKGU9dSh0KSk\/Z2V0KGUsbixpKTp2b2lkIDB9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDE2KSxpPXIoMCksbz1yKDEpO2koaS5TLCJSZWZsZWN0Iix7Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOmZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pe3JldHVybiBlLmYobyh0KSxuKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDE3KSxvPXIoMSk7ZShlLlMsIlJlZmxlY3QiLHtnZXRQcm90b3R5cGVPZjpmdW5jdGlvbiBnZXRQcm90b3R5cGVPZih0KXtyZXR1cm4gaShvKHQpKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCk7ZShlLlMsIlJlZmxlY3QiLHtoYXM6ZnVuY3Rpb24gaGFzKHQsbil7cmV0dXJuIG4gaW4gdH19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDEpLG89T2JqZWN0LmlzRXh0ZW5zaWJsZTtlKGUuUywiUmVmbGVjdCIse2lzRXh0ZW5zaWJsZTpmdW5jdGlvbiBpc0V4dGVuc2libGUodCl7cmV0dXJuIGkodCksIW98fG8odCl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5TLCJSZWZsZWN0Iix7b3duS2V5czpyKDEyMSl9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDEpLG89T2JqZWN0LnByZXZlbnRFeHRlbnNpb25zO2UoZS5TLCJSZWZsZWN0Iix7cHJldmVudEV4dGVuc2lvbnM6ZnVuY3Rpb24gcHJldmVudEV4dGVuc2lvbnModCl7aSh0KTt0cnl7cmV0dXJuIG8mJm8odCksITB9Y2F0Y2gobil7cmV0dXJuITF9fX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGM9cig4KSxhPXIoMTYpLGY9cigxNykscz1yKDE0KSxlPXIoMCksbD1yKDMyKSxoPXIoMSkscD1yKDQpO2UoZS5TLCJSZWZsZWN0Iix7c2V0OmZ1bmN0aW9uIHNldCh0LG4scil7dmFyIGUsaSxvPWFyZ3VtZW50cy5sZW5ndGg8ND90OmFyZ3VtZW50c1szXSx1PWEuZihoKHQpLG4pO2lmKCF1KXtpZihwKGk9Zih0KSkpcmV0dXJuIHNldChpLG4scixvKTt1PWwoMCl9aWYocyh1LCJ2YWx1ZSIpKXtpZighMT09PXUud3JpdGFibGV8fCFwKG8pKXJldHVybiExO2lmKGU9YS5mKG8sbikpe2lmKGUuZ2V0fHxlLnNldHx8ITE9PT1lLndyaXRhYmxlKXJldHVybiExO2UudmFsdWU9cixjLmYobyxuLGUpfWVsc2UgYy5mKG8sbixsKDAscikpO3JldHVybiEwfXJldHVybiB1LnNldCE9PUp0JiYodS5zZXQuY2FsbChvLHIpLCEwKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDcxKTtpJiZlKGUuUywiUmVmbGVjdCIse3NldFByb3RvdHlwZU9mOmZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKHQsbil7aS5jaGVjayh0LG4pO3RyeXtyZXR1cm4gaS5zZXQodCxuKSwhMH1jYXRjaChyKXtyZXR1cm4hMX19fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5TLCJEYXRlIix7bm93OmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9cig5KSxvPXIoMjIpO2UoZS5QK2UuRipyKDMpKGZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT1uZXcgRGF0ZShOYU4pLnRvSlNPTigpfHwxIT09RGF0ZS5wcm90b3R5cGUudG9KU09OLmNhbGwoe3RvSVNPU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIDF9fSl9KSwiRGF0ZSIse3RvSlNPTjpmdW5jdGlvbiB0b0pTT04odCl7dmFyIG49aSh0aGlzKSxyPW8obik7cmV0dXJuIm51bWJlciIhPXR5cGVvZiByfHxpc0Zpbml0ZShyKT9uLnRvSVNPU3RyaW5nKCk6bnVsbH19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDI1Mik7ZShlLlArZS5GKihEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZyE9PWkpLCJEYXRlIix7dG9JU09TdHJpbmc6aX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigzKSxpPURhdGUucHJvdG90eXBlLmdldFRpbWUsbz1EYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZyx1PWZ1bmN0aW9uKHQpe3JldHVybiA5PHQ\/dDoiMCIrdH07dC5leHBvcnRzPWUoZnVuY3Rpb24oKXtyZXR1cm4iMDM4NS0wNy0yNVQwNzowNjozOS45OTlaIiE9by5jYWxsKG5ldyBEYXRlKC01ZTEzLTEpKX0pfHwhZShmdW5jdGlvbigpe28uY2FsbChuZXcgRGF0ZShOYU4pKX0pP2Z1bmN0aW9uIHRvSVNPU3RyaW5nKCl7aWYoIWlzRmluaXRlKGkuY2FsbCh0aGlzKSkpdGhyb3cgUmFuZ2VFcnJvcigiSW52YWxpZCB0aW1lIHZhbHVlIik7dmFyIHQ9dGhpcyxuPXQuZ2V0VVRDRnVsbFllYXIoKSxyPXQuZ2V0VVRDTWlsbGlzZWNvbmRzKCksZT1uPDA\/Ii0iOjk5OTk8bj8iKyI6IiI7cmV0dXJuIGUrKCIwMDAwMCIrTWF0aC5hYnMobikpLnNsaWNlKGU\/LTY6LTQpKyItIit1KHQuZ2V0VVRDTW9udGgoKSsxKSsiLSIrdSh0LmdldFVUQ0RhdGUoKSkrIlQiK3UodC5nZXRVVENIb3VycygpKSsiOiIrdSh0LmdldFVUQ01pbnV0ZXMoKSkrIjoiK3UodC5nZXRVVENTZWNvbmRzKCkpKyIuIisoOTk8cj9yOiIwIit1KHIpKSsiWiJ9Om99LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1EYXRlLnByb3RvdHlwZSxpPSJJbnZhbGlkIERhdGUiLG89InRvU3RyaW5nIix1PWVbb10sYz1lLmdldFRpbWU7bmV3IERhdGUoTmFOKSsiIiE9aSYmcigxMikoZSxvLGZ1bmN0aW9uIHRvU3RyaW5nKCl7dmFyIHQ9Yy5jYWxsKHRoaXMpO3JldHVybiB0PT10P3UuY2FsbCh0aGlzKTppfSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDUpKCJ0b1ByaW1pdGl2ZSIpLGk9RGF0ZS5wcm90b3R5cGU7ZSBpbiBpfHxyKDExKShpLGUscigyNTUpKX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMSksaT1yKDIyKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoInN0cmluZyIhPT10JiYibnVtYmVyIiE9PXQmJiJkZWZhdWx0IiE9PXQpdGhyb3cgVHlwZUVycm9yKCJJbmNvcnJlY3QgaGludCIpO3JldHVybiBpKGUodGhpcyksIm51bWJlciIhPXQpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDYyKSxvPXIoOTIpLGY9cigxKSxzPXIoMzUpLGw9cig2KSx1PXIoNCksYz1yKDIpLkFycmF5QnVmZmVyLGg9cig1MSkscD1vLkFycmF5QnVmZmVyLHY9by5EYXRhVmlldyxhPWkuQUJWJiZjLmlzVmlldyxnPXAucHJvdG90eXBlLnNsaWNlLHk9aS5WSUVXLGQ9IkFycmF5QnVmZmVyIjtlKGUuRytlLlcrZS5GKihjIT09cCkse0FycmF5QnVmZmVyOnB9KSxlKGUuUytlLkYqIWkuQ09OU1RSLGQse2lzVmlldzpmdW5jdGlvbiBpc1ZpZXcodCl7cmV0dXJuIGEmJmEodCl8fHUodCkmJnkgaW4gdH19KSxlKGUuUCtlLlUrZS5GKnIoMykoZnVuY3Rpb24oKXtyZXR1cm4hbmV3IHAoMikuc2xpY2UoMSxKdCkuYnl0ZUxlbmd0aH0pLGQse3NsaWNlOmZ1bmN0aW9uIHNsaWNlKHQsbil7aWYoZyE9PUp0JiZuPT09SnQpcmV0dXJuIGcuY2FsbChmKHRoaXMpLHQpO2Zvcih2YXIgcj1mKHRoaXMpLmJ5dGVMZW5ndGgsZT1zKHQsciksaT1zKG49PT1KdD9yOm4sciksbz1uZXcoaCh0aGlzLHApKShsKGktZSkpLHU9bmV3IHYodGhpcyksYz1uZXcgdihvKSxhPTA7ZTxpOyljLnNldFVpbnQ4KGErKyx1LmdldFVpbnQ4KGUrKykpO3JldHVybiBvfX0pLHIoMzgpKGQpfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuRytlLlcrZS5GKiFyKDYyKS5BQlYse0RhdGFWaWV3OnIoOTIpLkRhdGFWaWV3fSl9LGZ1bmN0aW9uKHQsbixyKXtyKDI3KSgiSW50OCIsMSxmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24gSW50OEFycmF5KHQsbixyKXtyZXR1cm4gZSh0aGlzLHQsbixyKX19KX0sZnVuY3Rpb24odCxuLHIpe3IoMjcpKCJVaW50OCIsMSxmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24gVWludDhBcnJheSh0LG4scil7cmV0dXJuIGUodGhpcyx0LG4scil9fSl9LGZ1bmN0aW9uKHQsbixyKXtyKDI3KSgiVWludDgiLDEsZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uIFVpbnQ4Q2xhbXBlZEFycmF5KHQsbixyKXtyZXR1cm4gZSh0aGlzLHQsbixyKX19LCEwKX0sZnVuY3Rpb24odCxuLHIpe3IoMjcpKCJJbnQxNiIsMixmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24gSW50MTZBcnJheSh0LG4scil7cmV0dXJuIGUodGhpcyx0LG4scil9fSl9LGZ1bmN0aW9uKHQsbixyKXtyKDI3KSgiVWludDE2IiwyLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbiBVaW50MTZBcnJheSh0LG4scil7cmV0dXJuIGUodGhpcyx0LG4scil9fSl9LGZ1bmN0aW9uKHQsbixyKXtyKDI3KSgiSW50MzIiLDQsZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uIEludDMyQXJyYXkodCxuLHIpe3JldHVybiBlKHRoaXMsdCxuLHIpfX0pfSxmdW5jdGlvbih0LG4scil7cigyNykoIlVpbnQzMiIsNCxmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24gVWludDMyQXJyYXkodCxuLHIpe3JldHVybiBlKHRoaXMsdCxuLHIpfX0pfSxmdW5jdGlvbih0LG4scil7cigyNykoIkZsb2F0MzIiLDQsZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uIEZsb2F0MzJBcnJheSh0LG4scil7cmV0dXJuIGUodGhpcyx0LG4scil9fSl9LGZ1bmN0aW9uKHQsbixyKXtyKDI3KSgiRmxvYXQ2NCIsOCxmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24gRmxvYXQ2NEFycmF5KHQsbixyKXtyZXR1cm4gZSh0aGlzLHQsbixyKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDUyKSghMCk7ZShlLlAsIkFycmF5Iix7aW5jbHVkZXM6ZnVuY3Rpb24gaW5jbHVkZXModCl7cmV0dXJuIGkodGhpcyx0LDE8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMV06SnQpfX0pLHIoMzEpKCJpbmNsdWRlcyIpfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoMTIzKSxvPXIoOSksdT1yKDYpLGM9cigxMCksYT1yKDg0KTtlKGUuUCwiQXJyYXkiLHtmbGF0TWFwOmZ1bmN0aW9uIGZsYXRNYXAodCl7dmFyIG4scixlPW8odGhpcyk7cmV0dXJuIGModCksbj11KGUubGVuZ3RoKSxyPWEoZSwwKSxpKHIsZSxlLG4sMCwxLHQsYXJndW1lbnRzWzFdKSxyfX0pLHIoMzEpKCJmbGF0TWFwIil9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9cigxMjMpLG89cig5KSx1PXIoNiksYz1yKDIwKSxhPXIoODQpO2UoZS5QLCJBcnJheSIse2ZsYXR0ZW46ZnVuY3Rpb24gZmxhdHRlbigpe3ZhciB0PWFyZ3VtZW50c1swXSxuPW8odGhpcykscj11KG4ubGVuZ3RoKSxlPWEobiwwKTtyZXR1cm4gaShlLG4sbixyLDAsdD09PUp0PzE6Yyh0KSksZX19KSxyKDMxKSgiZmxhdHRlbiIpfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoNTUpKCEwKTtlKGUuUCwiU3RyaW5nIix7YXQ6ZnVuY3Rpb24gYXQodCl7cmV0dXJuIGkodGhpcyx0KX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDEyNCksbz1yKDYwKSx1PS9WZXJzaW9uXC8xMFwuXGQrKFwuXGQrKT8oIE1vYmlsZVwvXHcrKT8gU2FmYXJpXC8vLnRlc3Qobyk7ZShlLlArZS5GKnUsIlN0cmluZyIse3BhZFN0YXJ0OmZ1bmN0aW9uIHBhZFN0YXJ0KHQpe3JldHVybiBpKHRoaXMsdCwxPGFyZ3VtZW50cy5sZW5ndGg\/YXJndW1lbnRzWzFdOkp0LCEwKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDEyNCksbz1yKDYwKSx1PS9WZXJzaW9uXC8xMFwuXGQrKFwuXGQrKT8oIE1vYmlsZVwvXHcrKT8gU2FmYXJpXC8vLnRlc3Qobyk7ZShlLlArZS5GKnUsIlN0cmluZyIse3BhZEVuZDpmdW5jdGlvbiBwYWRFbmQodCl7cmV0dXJuIGkodGhpcyx0LDE8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMV06SnQsITEpfX0pfSxmdW5jdGlvbih0LG4scil7cig0NSkoInRyaW1MZWZ0IixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gdHJpbUxlZnQoKXtyZXR1cm4gdCh0aGlzLDEpfX0sInRyaW1TdGFydCIpfSxmdW5jdGlvbih0LG4scil7cig0NSkoInRyaW1SaWdodCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIHRyaW1SaWdodCgpe3JldHVybiB0KHRoaXMsMil9fSwidHJpbUVuZCIpfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoMjMpLG89cig2KSx1PXIoNTYpLGM9cig1MCksYT1SZWdFeHAucHJvdG90eXBlLGY9ZnVuY3Rpb24odCxuKXt0aGlzLl9yPXQsdGhpcy5fcz1ufTtyKDgwKShmLCJSZWdFeHAgU3RyaW5nIixmdW5jdGlvbiBuZXh0KCl7dmFyIHQ9dGhpcy5fci5leGVjKHRoaXMuX3MpO3JldHVybnt2YWx1ZTp0LGRvbmU6bnVsbD09PXR9fSksZShlLlAsIlN0cmluZyIse21hdGNoQWxsOmZ1bmN0aW9uIG1hdGNoQWxsKHQpe2lmKGkodGhpcyksIXUodCkpdGhyb3cgVHlwZUVycm9yKHQrIiBpcyBub3QgYSByZWdleHAhIik7dmFyIG49U3RyaW5nKHRoaXMpLHI9ImZsYWdzImluIGE\/U3RyaW5nKHQuZmxhZ3MpOmMuY2FsbCh0KSxlPW5ldyBSZWdFeHAodC5zb3VyY2UsfnIuaW5kZXhPZigiZyIpP3I6ImciK3IpO3JldHVybiBlLmxhc3RJbmRleD1vKHQubGFzdEluZGV4KSxuZXcgZihlLG4pfX0pfSxmdW5jdGlvbih0LG4scil7cig2NykoImFzeW5jSXRlcmF0b3IiKX0sZnVuY3Rpb24odCxuLHIpe3IoNjcpKCJvYnNlcnZhYmxlIil9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGE9cigxMjEpLGY9cigxNSkscz1yKDE2KSxsPXIoODIpO2UoZS5TLCJPYmplY3QiLHtnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzOmZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCl7Zm9yKHZhciBuLHIsZT1mKHQpLGk9cy5mLG89YShlKSx1PXt9LGM9MDtjPG8ubGVuZ3RoOykocj1pKGUsbj1vW2MrK10pKSE9PUp0JiZsKHUsbixyKTtyZXR1cm4gdX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDEyNSkoITEpO2UoZS5TLCJPYmplY3QiLHt2YWx1ZXM6ZnVuY3Rpb24gdmFsdWVzKHQpe3JldHVybiBpKHQpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoMTI1KSghMCk7ZShlLlMsIk9iamVjdCIse2VudHJpZXM6ZnVuY3Rpb24gZW50cmllcyh0KXtyZXR1cm4gaSh0KX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDkpLG89cigxMCksdT1yKDgpO3IoNykmJmUoZS5QK3IoNjMpLCJPYmplY3QiLHtfX2RlZmluZUdldHRlcl9fOmZ1bmN0aW9uIF9fZGVmaW5lR2V0dGVyX18odCxuKXt1LmYoaSh0aGlzKSx0LHtnZXQ6byhuKSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoOSksbz1yKDEwKSx1PXIoOCk7cig3KSYmZShlLlArcig2MyksIk9iamVjdCIse19fZGVmaW5lU2V0dGVyX186ZnVuY3Rpb24gX19kZWZpbmVTZXR0ZXJfXyh0LG4pe3UuZihpKHRoaXMpLHQse3NldDpvKG4pLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9cig5KSxvPXIoMjIpLHU9cigxNyksYz1yKDE2KS5mO3IoNykmJmUoZS5QK3IoNjMpLCJPYmplY3QiLHtfX2xvb2t1cEdldHRlcl9fOmZ1bmN0aW9uIF9fbG9va3VwR2V0dGVyX18odCl7dmFyIG4scj1pKHRoaXMpLGU9byh0LCEwKTtkb3tpZihuPWMocixlKSlyZXR1cm4gbi5nZXR9d2hpbGUocj11KHIpKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDkpLG89cigyMiksdT1yKDE3KSxjPXIoMTYpLmY7cig3KSYmZShlLlArcig2MyksIk9iamVjdCIse19fbG9va3VwU2V0dGVyX186ZnVuY3Rpb24gX19sb29rdXBTZXR0ZXJfXyh0KXt2YXIgbixyPWkodGhpcyksZT1vKHQsITApO2Rve2lmKG49YyhyLGUpKXJldHVybiBuLnNldH13aGlsZShyPXUocikpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUCtlLlIsIk1hcCIse3RvSlNPTjpyKDEyNikoIk1hcCIpfSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5QK2UuUiwiU2V0Iix7dG9KU09OOnIoMTI2KSgiU2V0Iil9KX0sZnVuY3Rpb24odCxuLHIpe3IoNjQpKCJNYXAiKX0sZnVuY3Rpb24odCxuLHIpe3IoNjQpKCJTZXQiKX0sZnVuY3Rpb24odCxuLHIpe3IoNjQpKCJXZWFrTWFwIil9LGZ1bmN0aW9uKHQsbixyKXtyKDY0KSgiV2Vha1NldCIpfSxmdW5jdGlvbih0LG4scil7cig2NSkoIk1hcCIpfSxmdW5jdGlvbih0LG4scil7cig2NSkoIlNldCIpfSxmdW5jdGlvbih0LG4scil7cig2NSkoIldlYWtNYXAiKX0sZnVuY3Rpb24odCxuLHIpe3IoNjUpKCJXZWFrU2V0Iil9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5HLHtnbG9iYWw6cigyKX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUywiU3lzdGVtIix7Z2xvYmFsOnIoMil9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDE5KTtlKGUuUywiRXJyb3IiLHtpc0Vycm9yOmZ1bmN0aW9uIGlzRXJyb3IodCl7cmV0dXJuIkVycm9yIj09PWkodCl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5TLCJNYXRoIix7Y2xhbXA6ZnVuY3Rpb24gY2xhbXAodCxuLHIpe3JldHVybiBNYXRoLm1pbihyLE1hdGgubWF4KG4sdCkpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUywiTWF0aCIse0RFR19QRVJfUkFEOk1hdGguUEkvMTgwfSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9MTgwL01hdGguUEk7ZShlLlMsIk1hdGgiLHtkZWdyZWVzOmZ1bmN0aW9uIGRlZ3JlZXModCl7cmV0dXJuIHQqaX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksbz1yKDEyOCksdT1yKDEwNyk7ZShlLlMsIk1hdGgiLHtmc2NhbGU6ZnVuY3Rpb24gZnNjYWxlKHQsbixyLGUsaSl7cmV0dXJuIHUobyh0LG4scixlLGkpKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCk7ZShlLlMsIk1hdGgiLHtpYWRkaDpmdW5jdGlvbiBpYWRkaCh0LG4scixlKXt2YXIgaT10Pj4+MCxvPXI+Pj4wO3JldHVybihuPj4+MCkrKGU+Pj4wKSsoKGkmb3woaXxvKSZ+KGkrbz4+PjApKT4+PjMxKXwwfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUywiTWF0aCIse2lzdWJoOmZ1bmN0aW9uIGlzdWJoKHQsbixyLGUpe3ZhciBpPXQ+Pj4wLG89cj4+PjA7cmV0dXJuKG4+Pj4wKS0oZT4+PjApLSgofmkmb3x+KGlebykmaS1vPj4+MCk+Pj4zMSl8MH19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCk7ZShlLlMsIk1hdGgiLHtpbXVsaDpmdW5jdGlvbiBpbXVsaCh0LG4pe3ZhciByPSt0LGU9K24saT02NTUzNSZyLG89NjU1MzUmZSx1PXI+PjE2LGM9ZT4+MTYsYT0odSpvPj4+MCkrKGkqbz4+PjE2KTtyZXR1cm4gdSpjKyhhPj4xNikrKChpKmM+Pj4wKSsoNjU1MzUmYSk+PjE2KX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCk7ZShlLlMsIk1hdGgiLHtSQURfUEVSX0RFRzoxODAvTWF0aC5QSX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPU1hdGguUEkvMTgwO2UoZS5TLCJNYXRoIix7cmFkaWFuczpmdW5jdGlvbiByYWRpYW5zKHQpe3JldHVybiB0Kml9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5TLCJNYXRoIix7c2NhbGU6cigxMjgpfSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5TLCJNYXRoIix7dW11bGg6ZnVuY3Rpb24gdW11bGgodCxuKXt2YXIgcj0rdCxlPStuLGk9NjU1MzUmcixvPTY1NTM1JmUsdT1yPj4+MTYsYz1lPj4+MTYsYT0odSpvPj4+MCkrKGkqbz4+PjE2KTtyZXR1cm4gdSpjKyhhPj4+MTYpKygoaSpjPj4+MCkrKDY1NTM1JmEpPj4+MTYpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUywiTWF0aCIse3NpZ25iaXQ6ZnVuY3Rpb24gc2lnbmJpdCh0KXtyZXR1cm4odD0rdCkhPXQ\/dDowPT10PzEvdD09SW5maW5pdHk6MDx0fX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoMjYpLG89cigyKSx1PXIoNTEpLGM9cigxMTUpO2UoZS5QK2UuUiwiUHJvbWlzZSIseyJmaW5hbGx5IjpmdW5jdGlvbihuKXt2YXIgcj11KHRoaXMsaS5Qcm9taXNlfHxvLlByb21pc2UpLHQ9ImZ1bmN0aW9uIj09dHlwZW9mIG47cmV0dXJuIHRoaXMudGhlbih0P2Z1bmN0aW9uKHQpe3JldHVybiBjKHIsbigpKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHR9KX06bix0P2Z1bmN0aW9uKHQpe3JldHVybiBjKHIsbigpKS50aGVuKGZ1bmN0aW9uKCl7dGhyb3cgdH0pfTpuKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDkxKSxvPXIoMTE0KTtlKGUuUywiUHJvbWlzZSIseyJ0cnkiOmZ1bmN0aW9uKHQpe3ZhciBuPWkuZih0aGlzKSxyPW8odCk7cmV0dXJuKHIuZT9uLnJlamVjdDpuLnJlc29sdmUpKHIudiksbi5wcm9taXNlfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyOCksaT1yKDEpLG89ZS5rZXksdT1lLnNldDtlLmV4cCh7ZGVmaW5lTWV0YWRhdGE6ZnVuY3Rpb24gZGVmaW5lTWV0YWRhdGEodCxuLHIsZSl7dSh0LG4saShyKSxvKGUpKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMjgpLG89cigxKSx1PWUua2V5LGM9ZS5tYXAsYT1lLnN0b3JlO2UuZXhwKHtkZWxldGVNZXRhZGF0YTpmdW5jdGlvbiBkZWxldGVNZXRhZGF0YSh0LG4pe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg8Mz9KdDp1KGFyZ3VtZW50c1syXSksZT1jKG8obiksciwhMSk7aWYoZT09PUp0fHwhZVsiZGVsZXRlIl0odCkpcmV0dXJuITE7aWYoZS5zaXplKXJldHVybiEwO3ZhciBpPWEuZ2V0KG4pO3JldHVybiBpWyJkZWxldGUiXShyKSwhIWkuc2l6ZXx8YVsiZGVsZXRlIl0obil9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDI4KSxpPXIoMSksbz1yKDE3KSx1PWUuaGFzLGM9ZS5nZXQsYT1lLmtleSxmPWZ1bmN0aW9uKHQsbixyKXtpZih1KHQsbixyKSlyZXR1cm4gYyh0LG4scik7dmFyIGU9byhuKTtyZXR1cm4gbnVsbCE9PWU\/Zih0LGUscik6SnR9O2UuZXhwKHtnZXRNZXRhZGF0YTpmdW5jdGlvbiBnZXRNZXRhZGF0YSh0LG4pe3JldHVybiBmKHQsaShuKSxhcmd1bWVudHMubGVuZ3RoPDM\/SnQ6YShhcmd1bWVudHNbMl0pKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBvPXIoMTE4KSx1PXIoMTI3KSxlPXIoMjgpLGk9cigxKSxjPXIoMTcpLGE9ZS5rZXlzLGY9ZS5rZXkscz1mdW5jdGlvbih0LG4pe3ZhciByPWEodCxuKSxlPWModCk7aWYobnVsbD09PWUpcmV0dXJuIHI7dmFyIGk9cyhlLG4pO3JldHVybiBpLmxlbmd0aD9yLmxlbmd0aD91KG5ldyBvKHIuY29uY2F0KGkpKSk6aTpyfTtlLmV4cCh7Z2V0TWV0YWRhdGFLZXlzOmZ1bmN0aW9uIGdldE1ldGFkYXRhS2V5cyh0KXtyZXR1cm4gcyhpKHQpLGFyZ3VtZW50cy5sZW5ndGg8Mj9KdDpmKGFyZ3VtZW50c1sxXSkpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyOCksaT1yKDEpLG89ZS5nZXQsdT1lLmtleTtlLmV4cCh7Z2V0T3duTWV0YWRhdGE6ZnVuY3Rpb24gZ2V0T3duTWV0YWRhdGEodCxuKXtyZXR1cm4gbyh0LGkobiksYXJndW1lbnRzLmxlbmd0aDwzP0p0OnUoYXJndW1lbnRzWzJdKSl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDI4KSxpPXIoMSksbz1lLmtleXMsdT1lLmtleTtlLmV4cCh7Z2V0T3duTWV0YWRhdGFLZXlzOmZ1bmN0aW9uIGdldE93bk1ldGFkYXRhS2V5cyh0KXtyZXR1cm4gbyhpKHQpLGFyZ3VtZW50cy5sZW5ndGg8Mj9KdDp1KGFyZ3VtZW50c1sxXSkpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyOCksaT1yKDEpLG89cigxNyksdT1lLmhhcyxjPWUua2V5LGE9ZnVuY3Rpb24odCxuLHIpe2lmKHUodCxuLHIpKXJldHVybiEwO3ZhciBlPW8obik7cmV0dXJuIG51bGwhPT1lJiZhKHQsZSxyKX07ZS5leHAoe2hhc01ldGFkYXRhOmZ1bmN0aW9uIGhhc01ldGFkYXRhKHQsbil7cmV0dXJuIGEodCxpKG4pLGFyZ3VtZW50cy5sZW5ndGg8Mz9KdDpjKGFyZ3VtZW50c1syXSkpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyOCksaT1yKDEpLG89ZS5oYXMsdT1lLmtleTtlLmV4cCh7aGFzT3duTWV0YWRhdGE6ZnVuY3Rpb24gaGFzT3duTWV0YWRhdGEodCxuKXtyZXR1cm4gbyh0LGkobiksYXJndW1lbnRzLmxlbmd0aDwzP0p0OnUoYXJndW1lbnRzWzJdKSl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDI4KSxpPXIoMSksbz1yKDEwKSx1PWUua2V5LGM9ZS5zZXQ7ZS5leHAoe21ldGFkYXRhOmZ1bmN0aW9uIG1ldGFkYXRhKHIsZSl7cmV0dXJuIGZ1bmN0aW9uIGRlY29yYXRvcih0LG4pe2MocixlLChuIT09SnQ\/aTpvKSh0KSx1KG4pKX19fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9cig5MCkoKSxvPXIoMikucHJvY2Vzcyx1PSJwcm9jZXNzIj09cigxOSkobyk7ZShlLkcse2FzYXA6ZnVuY3Rpb24gYXNhcCh0KXt2YXIgbj11JiZvLmRvbWFpbjtpKG4\/bi5iaW5kKHQpOnQpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxvPXIoMiksdT1yKDI2KSxpPXIoOTApKCksYz1yKDUpKCJvYnNlcnZhYmxlIiksYT1yKDEwKSxmPXIoMSkscz1yKDM5KSxsPXIoNDEpLGg9cigxMSkscD1yKDQwKSx2PXAuUkVUVVJOLGc9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ\/SnQ6YSh0KX0seT1mdW5jdGlvbih0KXt2YXIgbj10Ll9jO24mJih0Ll9jPUp0LG4oKSl9LGQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuX289PT1KdH0sYj1mdW5jdGlvbih0KXtkKHQpfHwodC5fbz1KdCx5KHQpKX0sUz1mdW5jdGlvbih0LG4pe2YodCksdGhpcy5fYz1KdCx0aGlzLl9vPXQsdD1uZXcgXyh0aGlzKTt0cnl7dmFyIHI9bih0KSxlPXI7bnVsbCE9ciYmKCJmdW5jdGlvbiI9PXR5cGVvZiByLnVuc3Vic2NyaWJlP3I9ZnVuY3Rpb24oKXtlLnVuc3Vic2NyaWJlKCl9OmEociksdGhpcy5fYz1yKX1jYXRjaChpKXtyZXR1cm4gdm9pZCB0LmVycm9yKGkpfWQodGhpcykmJnkodGhpcyl9O1MucHJvdG90eXBlPWwoe30se3Vuc3Vic2NyaWJlOmZ1bmN0aW9uIHVuc3Vic2NyaWJlKCl7Yih0aGlzKX19KTt2YXIgXz1mdW5jdGlvbih0KXt0aGlzLl9zPXR9O18ucHJvdG90eXBlPWwoe30se25leHQ6ZnVuY3Rpb24gbmV4dCh0KXt2YXIgbj10aGlzLl9zO2lmKCFkKG4pKXt2YXIgcj1uLl9vO3RyeXt2YXIgZT1nKHIubmV4dCk7aWYoZSlyZXR1cm4gZS5jYWxsKHIsdCl9Y2F0Y2goaSl7dHJ5e2Iobil9ZmluYWxseXt0aHJvdyBpfX19fSxlcnJvcjpmdW5jdGlvbiBlcnJvcih0KXt2YXIgbj10aGlzLl9zO2lmKGQobikpdGhyb3cgdDt2YXIgcj1uLl9vO24uX289SnQ7dHJ5e3ZhciBlPWcoci5lcnJvcik7aWYoIWUpdGhyb3cgdDt0PWUuY2FsbChyLHQpfWNhdGNoKGkpe3RyeXt5KG4pfWZpbmFsbHl7dGhyb3cgaX19cmV0dXJuIHkobiksdH0sY29tcGxldGU6ZnVuY3Rpb24gY29tcGxldGUodCl7dmFyIG49dGhpcy5fcztpZighZChuKSl7dmFyIHI9bi5fbztuLl9vPUp0O3RyeXt2YXIgZT1nKHIuY29tcGxldGUpO3Q9ZT9lLmNhbGwocix0KTpKdH1jYXRjaChpKXt0cnl7eShuKX1maW5hbGx5e3Rocm93IGl9fXJldHVybiB5KG4pLHR9fX0pO3ZhciB4PWZ1bmN0aW9uIE9ic2VydmFibGUodCl7cyh0aGlzLHgsIk9ic2VydmFibGUiLCJfZiIpLl9mPWEodCl9O2woeC5wcm90b3R5cGUse3N1YnNjcmliZTpmdW5jdGlvbiBzdWJzY3JpYmUodCl7cmV0dXJuIG5ldyBTKHQsdGhpcy5fZil9LGZvckVhY2g6ZnVuY3Rpb24gZm9yRWFjaChpKXt2YXIgbj10aGlzO3JldHVybiBuZXcodS5Qcm9taXNlfHxvLlByb21pc2UpKGZ1bmN0aW9uKHQscil7YShpKTt2YXIgZT1uLnN1YnNjcmliZSh7bmV4dDpmdW5jdGlvbih0KXt0cnl7cmV0dXJuIGkodCl9Y2F0Y2gobil7cihuKSxlLnVuc3Vic2NyaWJlKCl9fSxlcnJvcjpyLGNvbXBsZXRlOnR9KX0pfX0pLGwoeCx7ZnJvbTpmdW5jdGlvbiBmcm9tKGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzP3RoaXM6eCxuPWcoZihlKVtjXSk7aWYobil7dmFyIHI9ZihuLmNhbGwoZSkpO3JldHVybiByLmNvbnN0cnVjdG9yPT09dD9yOm5ldyB0KGZ1bmN0aW9uKHQpe3JldHVybiByLnN1YnNjcmliZSh0KX0pfXJldHVybiBuZXcgdChmdW5jdGlvbihuKXt2YXIgcj0hMTtyZXR1cm4gaShmdW5jdGlvbigpe2lmKCFyKXt0cnl7aWYocChlLCExLGZ1bmN0aW9uKHQpe2lmKG4ubmV4dCh0KSxyKXJldHVybiB2fSk9PT12KXJldHVybn1jYXRjaCh0KXtpZihyKXRocm93IHQ7cmV0dXJuIHZvaWQgbi5lcnJvcih0KX1uLmNvbXBsZXRlKCl9fSksZnVuY3Rpb24oKXtyPSEwfX0pfSxvZjpmdW5jdGlvbiBvZigpe2Zvcih2YXIgdD0wLG49YXJndW1lbnRzLmxlbmd0aCxlPW5ldyBBcnJheShuKTt0PG47KWVbdF09YXJndW1lbnRzW3QrK107cmV0dXJuIG5ldygiZnVuY3Rpb24iPT10eXBlb2YgdGhpcz90aGlzOngpKGZ1bmN0aW9uKG4pe3ZhciByPSExO3JldHVybiBpKGZ1bmN0aW9uKCl7aWYoIXIpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7Kyt0KWlmKG4ubmV4dChlW3RdKSxyKXJldHVybjtuLmNvbXBsZXRlKCl9fSksZnVuY3Rpb24oKXtyPSEwfX0pfX0pLGgoeC5wcm90b3R5cGUsYyxmdW5jdGlvbigpe3JldHVybiB0aGlzfSksZShlLkcse09ic2VydmFibGU6eH0pLHIoMzgpKCJPYnNlcnZhYmxlIil9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9cig4OSk7ZShlLkcrZS5CLHtzZXRJbW1lZGlhdGU6aS5zZXQsY2xlYXJJbW1lZGlhdGU6aS5jbGVhcn0pfSxmdW5jdGlvbih0LG4scil7Zm9yKHZhciBlPXIoODYpLGk9cigzNCksbz1yKDEyKSx1PXIoMiksYz1yKDExKSxhPXIoNDYpLGY9cig1KSxzPWYoIml0ZXJhdG9yIiksbD1mKCJ0b1N0cmluZ1RhZyIpLGg9YS5BcnJheSxwPXtDU1NSdWxlTGlzdDohMCxDU1NTdHlsZURlY2xhcmF0aW9uOiExLENTU1ZhbHVlTGlzdDohMSxDbGllbnRSZWN0TGlzdDohMSxET01SZWN0TGlzdDohMSxET01TdHJpbmdMaXN0OiExLERPTVRva2VuTGlzdDohMCxEYXRhVHJhbnNmZXJJdGVtTGlzdDohMSxGaWxlTGlzdDohMSxIVE1MQWxsQ29sbGVjdGlvbjohMSxIVE1MQ29sbGVjdGlvbjohMSxIVE1MRm9ybUVsZW1lbnQ6ITEsSFRNTFNlbGVjdEVsZW1lbnQ6ITEsTWVkaWFMaXN0OiEwLE1pbWVUeXBlQXJyYXk6ITEsTmFtZWROb2RlTWFwOiExLE5vZGVMaXN0OiEwLFBhaW50UmVxdWVzdExpc3Q6ITEsUGx1Z2luOiExLFBsdWdpbkFycmF5OiExLFNWR0xlbmd0aExpc3Q6ITEsU1ZHTnVtYmVyTGlzdDohMSxTVkdQYXRoU2VnTGlzdDohMSxTVkdQb2ludExpc3Q6ITEsU1ZHU3RyaW5nTGlzdDohMSxTVkdUcmFuc2Zvcm1MaXN0OiExLFNvdXJjZUJ1ZmZlckxpc3Q6ITEsU3R5bGVTaGVldExpc3Q6ITAsVGV4dFRyYWNrQ3VlTGlzdDohMSxUZXh0VHJhY2tMaXN0OiExLFRvdWNoTGlzdDohMX0sdj1pKHApLGc9MDtnPHYubGVuZ3RoO2crKyl7dmFyIHksZD12W2ddLGI9cFtkXSxTPXVbZF0sXz1TJiZTLnByb3RvdHlwZTtpZihfJiYoX1tzXXx8YyhfLHMsaCksX1tsXXx8YyhfLGwsZCksYVtkXT1oLGIpKWZvcih5IGluIGUpX1t5XXx8byhfLHksZVt5XSwhMCl9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyKSxpPXIoMCksbz1yKDYwKSx1PVtdLnNsaWNlLGM9L01TSUUgLlwuLy50ZXN0KG8pLGE9ZnVuY3Rpb24oaSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7dmFyIHI9Mjxhcmd1bWVudHMubGVuZ3RoLGU9ISFyJiZ1LmNhbGwoYXJndW1lbnRzLDIpO3JldHVybiBpKHI\/ZnVuY3Rpb24oKXsoImZ1bmN0aW9uIj09dHlwZW9mIHQ\/dDpGdW5jdGlvbih0KSkuYXBwbHkodGhpcyxlKX06dCxuKX19O2koaS5HK2kuQitpLkYqYyx7c2V0VGltZW91dDphKGUuc2V0VGltZW91dCksc2V0SW50ZXJ2YWw6YShlLnNldEludGVydmFsKX0pfV0pLCJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1lOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKGZ1bmN0aW9uKCl7cmV0dXJuIGV9KTppLmNvcmU9ZX0oMSwxKTsNCi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNoaW0ubWluLmpzLm1hcA==\"><\/script> <script src=\"data:application\/javascript;base64,LyoqIEBsaWNlbnNlIFJlYWN0IHYxNy4wLjANCiAqIHJlYWN0LnByb2R1Y3Rpb24ubWluLmpzDQogKg0KICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuDQogKg0KICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlDQogKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuDQogKi8NCihmdW5jdGlvbigpeyd1c2Ugc3RyaWN0JzsoZnVuY3Rpb24oYyx4KXsib2JqZWN0Ij09PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBtb2R1bGU\/eChleHBvcnRzKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJleHBvcnRzIl0seCk6KGM9Y3x8c2VsZix4KGMuUmVhY3Q9e30pKX0pKHRoaXMsZnVuY3Rpb24oYyl7ZnVuY3Rpb24geChhKXtpZihudWxsPT09YXx8Im9iamVjdCIhPT10eXBlb2YgYSlyZXR1cm4gbnVsbDthPVkmJmFbWV18fGFbIkBAaXRlcmF0b3IiXTtyZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIGE\/YTpudWxsfWZ1bmN0aW9uIHkoYSl7Zm9yKHZhciBiPSJodHRwczovL3JlYWN0anMub3JnL2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD0iK2EsZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspYis9IiZhcmdzW109IitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW2VdKTtyZXR1cm4iTWluaWZpZWQgUmVhY3QgZXJyb3IgIyIrDQphKyI7IHZpc2l0ICIrYisiIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4ifWZ1bmN0aW9uIHYoYSxiLGUpe3RoaXMucHJvcHM9YTt0aGlzLmNvbnRleHQ9Yjt0aGlzLnJlZnM9Wjt0aGlzLnVwZGF0ZXI9ZXx8YWF9ZnVuY3Rpb24gYmEoKXt9ZnVuY3Rpb24gSyhhLGIsZSl7dGhpcy5wcm9wcz1hO3RoaXMuY29udGV4dD1iO3RoaXMucmVmcz1aO3RoaXMudXBkYXRlcj1lfHxhYX1mdW5jdGlvbiBjYShhLGIsZSl7dmFyIGwsZj17fSxjPW51bGwsZGE9bnVsbDtpZihudWxsIT1iKWZvcihsIGluIHZvaWQgMCE9PWIucmVmJiYoZGE9Yi5yZWYpLHZvaWQgMCE9PWIua2V5JiYoYz0iIitiLmtleSksYillYS5jYWxsKGIsbCkmJiFmYS5oYXNPd25Qcm9wZXJ0eShsKSYmKGZbbF09YltsXSk7dmFyIGs9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT0NCmspZi5jaGlsZHJlbj1lO2Vsc2UgaWYoMTxrKXtmb3IodmFyIGg9QXJyYXkoayksZD0wO2Q8aztkKyspaFtkXT1hcmd1bWVudHNbZCsyXTtmLmNoaWxkcmVuPWh9aWYoYSYmYS5kZWZhdWx0UHJvcHMpZm9yKGwgaW4gaz1hLmRlZmF1bHRQcm9wcyxrKXZvaWQgMD09PWZbbF0mJihmW2xdPWtbbF0pO3JldHVybnskJHR5cGVvZjp3LHR5cGU6YSxrZXk6YyxyZWY6ZGEscHJvcHM6Zixfb3duZXI6TC5jdXJyZW50fX1mdW5jdGlvbiB2YShhLGIpe3JldHVybnskJHR5cGVvZjp3LHR5cGU6YS50eXBlLGtleTpiLHJlZjphLnJlZixwcm9wczphLnByb3BzLF9vd25lcjphLl9vd25lcn19ZnVuY3Rpb24gTShhKXtyZXR1cm4ib2JqZWN0Ij09PXR5cGVvZiBhJiZudWxsIT09YSYmYS4kJHR5cGVvZj09PXd9ZnVuY3Rpb24gd2EoYSl7dmFyIGI9eyI9IjoiPTAiLCI6IjoiPTIifTtyZXR1cm4iJCIrYS5yZXBsYWNlKC9bPTpdL2csZnVuY3Rpb24oYSl7cmV0dXJuIGJbYV19KX1mdW5jdGlvbiBOKGEsYil7cmV0dXJuIm9iamVjdCI9PT0NCnR5cGVvZiBhJiZudWxsIT09YSYmbnVsbCE9YS5rZXk\/d2EoIiIrYS5rZXkpOmIudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIEMoYSxiLGUsbCxmKXt2YXIgYz10eXBlb2YgYTtpZigidW5kZWZpbmVkIj09PWN8fCJib29sZWFuIj09PWMpYT1udWxsO3ZhciBkPSExO2lmKG51bGw9PT1hKWQ9ITA7ZWxzZSBzd2l0Y2goYyl7Y2FzZSAic3RyaW5nIjpjYXNlICJudW1iZXIiOmQ9ITA7YnJlYWs7Y2FzZSAib2JqZWN0Ijpzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSB3OmNhc2UgaGE6ZD0hMH19aWYoZClyZXR1cm4gZD1hLGY9ZihkKSxhPSIiPT09bD8iLiIrTihkLDApOmwsQXJyYXkuaXNBcnJheShmKT8oZT0iIixudWxsIT1hJiYoZT1hLnJlcGxhY2UoaWEsIiQmLyIpKyIvIiksQyhmLGIsZSwiIixmdW5jdGlvbihhKXtyZXR1cm4gYX0pKTpudWxsIT1mJiYoTShmKSYmKGY9dmEoZixlKyghZi5rZXl8fGQmJmQua2V5PT09Zi5rZXk\/IiI6KCIiK2Yua2V5KS5yZXBsYWNlKGlhLCIkJi8iKSsiLyIpKw0KYSkpLGIucHVzaChmKSksMTtkPTA7bD0iIj09PWw\/Ii4iOmwrIjoiO2lmKEFycmF5LmlzQXJyYXkoYSkpZm9yKHZhciBrPTA7azxhLmxlbmd0aDtrKyspe2M9YVtrXTt2YXIgaD1sK04oYyxrKTtkKz1DKGMsYixlLGgsZil9ZWxzZSBpZihoPXgoYSksImZ1bmN0aW9uIj09PXR5cGVvZiBoKWZvcihhPWguY2FsbChhKSxrPTA7IShjPWEubmV4dCgpKS5kb25lOyljPWMudmFsdWUsaD1sK04oYyxrKyspLGQrPUMoYyxiLGUsaCxmKTtlbHNlIGlmKCJvYmplY3QiPT09Yyl0aHJvdyBiPSIiK2EsRXJyb3IoeSgzMSwiW29iamVjdCBPYmplY3RdIj09PWI\/Im9iamVjdCB3aXRoIGtleXMgeyIrT2JqZWN0LmtleXMoYSkuam9pbigiLCAiKSsifSI6YikpO3JldHVybiBkfWZ1bmN0aW9uIEQoYSxiLGUpe2lmKG51bGw9PWEpcmV0dXJuIGE7dmFyIGw9W10sYz0wO0MoYSxsLCIiLCIiLGZ1bmN0aW9uKGEpe3JldHVybiBiLmNhbGwoZSxhLGMrKyl9KTtyZXR1cm4gbH1mdW5jdGlvbiB4YShhKXtpZigtMT09PQ0KYS5fc3RhdHVzKXt2YXIgYj1hLl9yZXN1bHQ7Yj1iKCk7YS5fc3RhdHVzPTA7YS5fcmVzdWx0PWI7Yi50aGVuKGZ1bmN0aW9uKGIpezA9PT1hLl9zdGF0dXMmJihiPWIuZGVmYXVsdCxhLl9zdGF0dXM9MSxhLl9yZXN1bHQ9Yil9LGZ1bmN0aW9uKGIpezA9PT1hLl9zdGF0dXMmJihhLl9zdGF0dXM9MixhLl9yZXN1bHQ9Yil9KX1pZigxPT09YS5fc3RhdHVzKXJldHVybiBhLl9yZXN1bHQ7dGhyb3cgYS5fcmVzdWx0O31mdW5jdGlvbiBuKCl7dmFyIGE9amEuY3VycmVudDtpZihudWxsPT09YSl0aHJvdyBFcnJvcih5KDMyMSkpO3JldHVybiBhfWZ1bmN0aW9uIE8oYSxiKXt2YXIgZT1hLmxlbmd0aDthLnB1c2goYik7YTpmb3IoOzspe3ZhciBjPWUtMT4+PjEsZj1hW2NdO2lmKHZvaWQgMCE9PWYmJjA8RShmLGIpKWFbY109YixhW2VdPWYsZT1jO2Vsc2UgYnJlYWsgYX19ZnVuY3Rpb24gcChhKXthPWFbMF07cmV0dXJuIHZvaWQgMD09PWE\/bnVsbDphfWZ1bmN0aW9uIEYoYSl7dmFyIGI9DQphWzBdO2lmKHZvaWQgMCE9PWIpe3ZhciBlPWEucG9wKCk7aWYoZSE9PWIpe2FbMF09ZTthOmZvcih2YXIgYz0wLGY9YS5sZW5ndGg7YzxmOyl7dmFyIGQ9MiooYysxKS0xLGc9YVtkXSxrPWQrMSxoPWFba107aWYodm9pZCAwIT09ZyYmMD5FKGcsZSkpdm9pZCAwIT09aCYmMD5FKGgsZyk\/KGFbY109aCxhW2tdPWUsYz1rKTooYVtjXT1nLGFbZF09ZSxjPWQpO2Vsc2UgaWYodm9pZCAwIT09aCYmMD5FKGgsZSkpYVtjXT1oLGFba109ZSxjPWs7ZWxzZSBicmVhayBhfX1yZXR1cm4gYn1yZXR1cm4gbnVsbH1mdW5jdGlvbiBFKGEsYil7dmFyIGU9YS5zb3J0SW5kZXgtYi5zb3J0SW5kZXg7cmV0dXJuIDAhPT1lP2U6YS5pZC1iLmlkfWZ1bmN0aW9uIFAoYSl7Zm9yKHZhciBiPXAocik7bnVsbCE9PWI7KXtpZihudWxsPT09Yi5jYWxsYmFjaylGKHIpO2Vsc2UgaWYoYi5zdGFydFRpbWU8PWEpRihyKSxiLnNvcnRJbmRleD1iLmV4cGlyYXRpb25UaW1lLE8ocSxiKTtlbHNlIGJyZWFrO2I9cChyKX19DQpmdW5jdGlvbiBRKGEpe3o9ITE7UChhKTtpZighdSlpZihudWxsIT09cChxKSl1PSEwLEEoUik7ZWxzZXt2YXIgYj1wKHIpO251bGwhPT1iJiZHKFEsYi5zdGFydFRpbWUtYSl9fWZ1bmN0aW9uIFIoYSxiKXt1PSExO3omJih6PSExLFMoKSk7SD0hMDt2YXIgZT1nO3RyeXtQKGIpO2ZvcihtPXAocSk7bnVsbCE9PW0mJighKG0uZXhwaXJhdGlvblRpbWU+Yil8fGEmJiFUKCkpOyl7dmFyIGM9bS5jYWxsYmFjaztpZigiZnVuY3Rpb24iPT09dHlwZW9mIGMpe20uY2FsbGJhY2s9bnVsbDtnPW0ucHJpb3JpdHlMZXZlbDt2YXIgZj1jKG0uZXhwaXJhdGlvblRpbWU8PWIpO2I9dCgpOyJmdW5jdGlvbiI9PT10eXBlb2YgZj9tLmNhbGxiYWNrPWY6bT09PXAocSkmJkYocSk7UChiKX1lbHNlIEYocSk7bT1wKHEpfWlmKG51bGwhPT1tKXZhciBkPSEwO2Vsc2V7dmFyIG49cChyKTtudWxsIT09biYmRyhRLG4uc3RhcnRUaW1lLWIpO2Q9ITF9cmV0dXJuIGR9ZmluYWxseXttPW51bGwsZz1lLEg9ITF9fQ0KdmFyIHc9NjAxMDMsaGE9NjAxMDY7Yy5GcmFnbWVudD02MDEwNztjLlN0cmljdE1vZGU9NjAxMDg7Yy5Qcm9maWxlcj02MDExNDt2YXIga2E9NjAxMDksbGE9NjAxMTAsbWE9NjAxMTI7Yy5TdXNwZW5zZT02MDExMzt2YXIgbmE9NjAxMTUsb2E9NjAxMTY7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3Ipe3ZhciBkPVN5bWJvbC5mb3I7dz1kKCJyZWFjdC5lbGVtZW50Iik7aGE9ZCgicmVhY3QucG9ydGFsIik7Yy5GcmFnbWVudD1kKCJyZWFjdC5mcmFnbWVudCIpO2MuU3RyaWN0TW9kZT1kKCJyZWFjdC5zdHJpY3RfbW9kZSIpO2MuUHJvZmlsZXI9ZCgicmVhY3QucHJvZmlsZXIiKTtrYT1kKCJyZWFjdC5wcm92aWRlciIpO2xhPWQoInJlYWN0LmNvbnRleHQiKTttYT1kKCJyZWFjdC5mb3J3YXJkX3JlZiIpO2MuU3VzcGVuc2U9ZCgicmVhY3Quc3VzcGVuc2UiKTtuYT1kKCJyZWFjdC5tZW1vIik7b2E9ZCgicmVhY3QubGF6eSIpfXZhciBZPSJmdW5jdGlvbiI9PT0NCnR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcix5YT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LFU9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oYSxiKXtpZihudWxsPT1hKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdC5hc3NpZ24gdGFyZ2V0IGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpO2Zvcih2YXIgZT1PYmplY3QoYSksYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe3ZhciBkPWFyZ3VtZW50c1tjXTtpZihudWxsIT1kKXt2YXIgZz12b2lkIDA7ZD1PYmplY3QoZCk7Zm9yKGcgaW4gZCl5YS5jYWxsKGQsZykmJihlW2ddPWRbZ10pfX1yZXR1cm4gZX0sYWE9e2lzTW91bnRlZDpmdW5jdGlvbihhKXtyZXR1cm4hMX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGEsYixjKXt9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7fSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7fX0sWj17fTt2LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PQ0Ke307di5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oYSxiKXtpZigib2JqZWN0IiE9PXR5cGVvZiBhJiYiZnVuY3Rpb24iIT09dHlwZW9mIGEmJm51bGwhPWEpdGhyb3cgRXJyb3IoeSg4NSkpO3RoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcyxhLGIsInNldFN0YXRlIil9O3YucHJvdG90eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9uKGEpe3RoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcyxhLCJmb3JjZVVwZGF0ZSIpfTtiYS5wcm90b3R5cGU9di5wcm90b3R5cGU7ZD1LLnByb3RvdHlwZT1uZXcgYmE7ZC5jb25zdHJ1Y3Rvcj1LO1UoZCx2LnByb3RvdHlwZSk7ZC5pc1B1cmVSZWFjdENvbXBvbmVudD0hMDt2YXIgTD17Y3VycmVudDpudWxsfSxlYT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGZhPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH0saWE9L1wvKy9nLGphPXtjdXJyZW50Om51bGx9LFY7aWYoIm9iamVjdCI9PT10eXBlb2YgcGVyZm9ybWFuY2UmJg0KImZ1bmN0aW9uIj09PXR5cGVvZiBwZXJmb3JtYW5jZS5ub3cpe3ZhciB6YT1wZXJmb3JtYW5jZTt2YXIgdD1mdW5jdGlvbigpe3JldHVybiB6YS5ub3coKX19ZWxzZXt2YXIgcGE9RGF0ZSxBYT1wYS5ub3coKTt0PWZ1bmN0aW9uKCl7cmV0dXJuIHBhLm5vdygpLUFhfX1pZigidW5kZWZpbmVkIj09PXR5cGVvZiB3aW5kb3d8fCJmdW5jdGlvbiIhPT10eXBlb2YgTWVzc2FnZUNoYW5uZWwpe3ZhciBCPW51bGwscWE9bnVsbCxyYT1mdW5jdGlvbigpe2lmKG51bGwhPT1CKXRyeXt2YXIgYT10KCk7QighMCxhKTtCPW51bGx9Y2F0Y2goYil7dGhyb3cgc2V0VGltZW91dChyYSwwKSxiO319O3ZhciBBPWZ1bmN0aW9uKGEpe251bGwhPT1CP3NldFRpbWVvdXQoQSwwLGEpOihCPWEsc2V0VGltZW91dChyYSwwKSl9O3ZhciBHPWZ1bmN0aW9uKGEsYil7cWE9c2V0VGltZW91dChhLGIpfTt2YXIgUz1mdW5jdGlvbigpe2NsZWFyVGltZW91dChxYSl9O3ZhciBUPWZ1bmN0aW9uKCl7cmV0dXJuITF9Ow0KZD1WPWZ1bmN0aW9uKCl7fX1lbHNle3ZhciBCYT13aW5kb3cuc2V0VGltZW91dCxDYT13aW5kb3cuY2xlYXJUaW1lb3V0OyJ1bmRlZmluZWQiIT09dHlwZW9mIGNvbnNvbGUmJihkPXdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSwiZnVuY3Rpb24iIT09dHlwZW9mIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUmJmNvbnNvbGUuZXJyb3IoIlRoaXMgYnJvd3NlciBkb2Vzbid0IHN1cHBvcnQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lLiBNYWtlIHN1cmUgdGhhdCB5b3UgbG9hZCBhIHBvbHlmaWxsIGluIG9sZGVyIGJyb3dzZXJzLiBodHRwczovL3JlYWN0anMub3JnL2xpbmsvcmVhY3QtcG9seWZpbGxzIiksImZ1bmN0aW9uIiE9PXR5cGVvZiBkJiZjb25zb2xlLmVycm9yKCJUaGlzIGJyb3dzZXIgZG9lc24ndCBzdXBwb3J0IGNhbmNlbEFuaW1hdGlvbkZyYW1lLiBNYWtlIHN1cmUgdGhhdCB5b3UgbG9hZCBhIHBvbHlmaWxsIGluIG9sZGVyIGJyb3dzZXJzLiBodHRwczovL3JlYWN0anMub3JnL2xpbmsvcmVhY3QtcG9seWZpbGxzIikpOw0KdmFyIEk9ITEsSj1udWxsLFc9LTEsc2E9NSx0YT0wO1Q9ZnVuY3Rpb24oKXtyZXR1cm4gdCgpPj10YX07ZD1mdW5jdGlvbigpe307Vj1mdW5jdGlvbihhKXswPmF8fDEyNTxhP2NvbnNvbGUuZXJyb3IoImZvcmNlRnJhbWVSYXRlIHRha2VzIGEgcG9zaXRpdmUgaW50IGJldHdlZW4gMCBhbmQgMTI1LCBmb3JjaW5nIGZyYW1lIHJhdGVzIGhpZ2hlciB0aGFuIDEyNSBmcHMgaXMgbm90IHN1cHBvcnRlZCIpOnNhPTA8YT9NYXRoLmZsb29yKDFFMy9hKTo1fTt2YXIgdWE9bmV3IE1lc3NhZ2VDaGFubmVsLFg9dWEucG9ydDI7dWEucG9ydDEub25tZXNzYWdlPWZ1bmN0aW9uKCl7aWYobnVsbCE9PUope3ZhciBhPXQoKTt0YT1hK3NhO3RyeXtKKCEwLGEpP1gucG9zdE1lc3NhZ2UobnVsbCk6KEk9ITEsSj1udWxsKX1jYXRjaChiKXt0aHJvdyBYLnBvc3RNZXNzYWdlKG51bGwpLGI7fX1lbHNlIEk9ITF9O0E9ZnVuY3Rpb24oYSl7Sj1hO0l8fChJPSEwLFgucG9zdE1lc3NhZ2UobnVsbCkpfTtHPQ0KZnVuY3Rpb24oYSxiKXtXPUJhKGZ1bmN0aW9uKCl7YSh0KCkpfSxiKX07Uz1mdW5jdGlvbigpe0NhKFcpO1c9LTF9fXZhciBxPVtdLHI9W10sRGE9MSxtPW51bGwsZz0zLEg9ITEsdT0hMSx6PSExLEVhPTA7ZD17UmVhY3RDdXJyZW50RGlzcGF0Y2hlcjpqYSxSZWFjdEN1cnJlbnRPd25lcjpMLElzU29tZVJlbmRlcmVyQWN0aW5nOntjdXJyZW50OiExfSxSZWFjdEN1cnJlbnRCYXRjaENvbmZpZzp7dHJhbnNpdGlvbjowfSxhc3NpZ246VSxTY2hlZHVsZXI6e19fcHJvdG9fXzpudWxsLHVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5OjEsdW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHk6Mix1bnN0YWJsZV9Ob3JtYWxQcmlvcml0eTozLHVuc3RhYmxlX0lkbGVQcmlvcml0eTo1LHVuc3RhYmxlX0xvd1ByaW9yaXR5OjQsdW5zdGFibGVfcnVuV2l0aFByaW9yaXR5OmZ1bmN0aW9uKGEsYil7c3dpdGNoKGEpe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOmNhc2UgNDpjYXNlIDU6YnJlYWs7ZGVmYXVsdDphPQ0KM312YXIgYz1nO2c9YTt0cnl7cmV0dXJuIGIoKX1maW5hbGx5e2c9Y319LHVuc3RhYmxlX25leHQ6ZnVuY3Rpb24oYSl7c3dpdGNoKGcpe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOnZhciBiPTM7YnJlYWs7ZGVmYXVsdDpiPWd9dmFyIGM9ZztnPWI7dHJ5e3JldHVybiBhKCl9ZmluYWxseXtnPWN9fSx1bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10KCk7Im9iamVjdCI9PT10eXBlb2YgYyYmbnVsbCE9PWM\/KGM9Yy5kZWxheSxjPSJudW1iZXIiPT09dHlwZW9mIGMmJjA8Yz9kK2M6ZCk6Yz1kO3N3aXRjaChhKXtjYXNlIDE6dmFyIGU9LTE7YnJlYWs7Y2FzZSAyOmU9MjUwO2JyZWFrO2Nhc2UgNTplPTEwNzM3NDE4MjM7YnJlYWs7Y2FzZSA0OmU9MUU0O2JyZWFrO2RlZmF1bHQ6ZT01RTN9ZT1jK2U7YT17aWQ6RGErKyxjYWxsYmFjazpiLHByaW9yaXR5TGV2ZWw6YSxzdGFydFRpbWU6YyxleHBpcmF0aW9uVGltZTplLHNvcnRJbmRleDotMX07Yz5kPyhhLnNvcnRJbmRleD0NCmMsTyhyLGEpLG51bGw9PT1wKHEpJiZhPT09cChyKSYmKHo\/UygpOno9ITAsRyhRLGMtZCkpKTooYS5zb3J0SW5kZXg9ZSxPKHEsYSksdXx8SHx8KHU9ITAsQShSKSkpO3JldHVybiBhfSx1bnN0YWJsZV9jYW5jZWxDYWxsYmFjazpmdW5jdGlvbihhKXthLmNhbGxiYWNrPW51bGx9LHVuc3RhYmxlX3dyYXBDYWxsYmFjazpmdW5jdGlvbihhKXt2YXIgYj1nO3JldHVybiBmdW5jdGlvbigpe3ZhciBjPWc7Zz1iO3RyeXtyZXR1cm4gYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZmluYWxseXtnPWN9fX0sdW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWw6ZnVuY3Rpb24oKXtyZXR1cm4gZ30sZ2V0IHVuc3RhYmxlX3Nob3VsZFlpZWxkKCl7cmV0dXJuIFR9LHVuc3RhYmxlX3JlcXVlc3RQYWludDpkLHVuc3RhYmxlX2NvbnRpbnVlRXhlY3V0aW9uOmZ1bmN0aW9uKCl7dXx8SHx8KHU9ITAsQShSKSl9LHVuc3RhYmxlX3BhdXNlRXhlY3V0aW9uOmZ1bmN0aW9uKCl7fSx1bnN0YWJsZV9nZXRGaXJzdENhbGxiYWNrTm9kZTpmdW5jdGlvbigpe3JldHVybiBwKHEpfSwNCmdldCB1bnN0YWJsZV9ub3coKXtyZXR1cm4gdH0sZ2V0IHVuc3RhYmxlX2ZvcmNlRnJhbWVSYXRlKCl7cmV0dXJuIFZ9LHVuc3RhYmxlX1Byb2ZpbGluZzpudWxsfSxTY2hlZHVsZXJUcmFjaW5nOntfX3Byb3RvX186bnVsbCxfX2ludGVyYWN0aW9uc1JlZjpudWxsLF9fc3Vic2NyaWJlclJlZjpudWxsLHVuc3RhYmxlX2NsZWFyOmZ1bmN0aW9uKGEpe3JldHVybiBhKCl9LHVuc3RhYmxlX2dldEN1cnJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdW5zdGFibGVfZ2V0VGhyZWFkSUQ6ZnVuY3Rpb24oKXtyZXR1cm4rK0VhfSx1bnN0YWJsZV90cmFjZTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGMoKX0sdW5zdGFibGVfd3JhcDpmdW5jdGlvbihhKXtyZXR1cm4gYX0sdW5zdGFibGVfc3Vic2NyaWJlOmZ1bmN0aW9uKGEpe30sdW5zdGFibGVfdW5zdWJzY3JpYmU6ZnVuY3Rpb24oYSl7fX19O2MuQ2hpbGRyZW49e21hcDpELGZvckVhY2g6ZnVuY3Rpb24oYSxiLGMpe0QoYSxmdW5jdGlvbigpe2IuYXBwbHkodGhpcywNCmFyZ3VtZW50cyl9LGMpfSxjb3VudDpmdW5jdGlvbihhKXt2YXIgYj0wO0QoYSxmdW5jdGlvbigpe2IrK30pO3JldHVybiBifSx0b0FycmF5OmZ1bmN0aW9uKGEpe3JldHVybiBEKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGF9KXx8W119LG9ubHk6ZnVuY3Rpb24oYSl7aWYoIU0oYSkpdGhyb3cgRXJyb3IoeSgxNDMpKTtyZXR1cm4gYX19O2MuQ29tcG9uZW50PXY7Yy5QdXJlQ29tcG9uZW50PUs7Yy5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRD1kO2MuY2xvbmVFbGVtZW50PWZ1bmN0aW9uKGEsYixjKXtpZihudWxsPT09YXx8dm9pZCAwPT09YSl0aHJvdyBFcnJvcih5KDI2NyxhKSk7dmFyIGQ9VSh7fSxhLnByb3BzKSxlPWEua2V5LGc9YS5yZWYsbj1hLl9vd25lcjtpZihudWxsIT1iKXt2b2lkIDAhPT1iLnJlZiYmKGc9Yi5yZWYsbj1MLmN1cnJlbnQpO3ZvaWQgMCE9PWIua2V5JiYoZT0iIitiLmtleSk7aWYoYS50eXBlJiZhLnR5cGUuZGVmYXVsdFByb3BzKXZhciBrPQ0KYS50eXBlLmRlZmF1bHRQcm9wcztmb3IoaCBpbiBiKWVhLmNhbGwoYixoKSYmIWZhLmhhc093blByb3BlcnR5KGgpJiYoZFtoXT12b2lkIDA9PT1iW2hdJiZ2b2lkIDAhPT1rP2tbaF06YltoXSl9dmFyIGg9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1oKWQuY2hpbGRyZW49YztlbHNlIGlmKDE8aCl7az1BcnJheShoKTtmb3IodmFyIG09MDttPGg7bSsrKWtbbV09YXJndW1lbnRzW20rMl07ZC5jaGlsZHJlbj1rfXJldHVybnskJHR5cGVvZjp3LHR5cGU6YS50eXBlLGtleTplLHJlZjpnLHByb3BzOmQsX293bmVyOm59fTtjLmNyZWF0ZUNvbnRleHQ9ZnVuY3Rpb24oYSxiKXt2b2lkIDA9PT1iJiYoYj1udWxsKTthPXskJHR5cGVvZjpsYSxfY2FsY3VsYXRlQ2hhbmdlZEJpdHM6YixfY3VycmVudFZhbHVlOmEsX2N1cnJlbnRWYWx1ZTI6YSxfdGhyZWFkQ291bnQ6MCxQcm92aWRlcjpudWxsLENvbnN1bWVyOm51bGx9O2EuUHJvdmlkZXI9eyQkdHlwZW9mOmthLF9jb250ZXh0OmF9O3JldHVybiBhLkNvbnN1bWVyPQ0KYX07Yy5jcmVhdGVFbGVtZW50PWNhO2MuY3JlYXRlRmFjdG9yeT1mdW5jdGlvbihhKXt2YXIgYj1jYS5iaW5kKG51bGwsYSk7Yi50eXBlPWE7cmV0dXJuIGJ9O2MuY3JlYXRlUmVmPWZ1bmN0aW9uKCl7cmV0dXJue2N1cnJlbnQ6bnVsbH19O2MuZm9yd2FyZFJlZj1mdW5jdGlvbihhKXtyZXR1cm57JCR0eXBlb2Y6bWEscmVuZGVyOmF9fTtjLmlzVmFsaWRFbGVtZW50PU07Yy5sYXp5PWZ1bmN0aW9uKGEpe3JldHVybnskJHR5cGVvZjpvYSxfcGF5bG9hZDp7X3N0YXR1czotMSxfcmVzdWx0OmF9LF9pbml0OnhhfX07Yy5tZW1vPWZ1bmN0aW9uKGEsYil7cmV0dXJueyQkdHlwZW9mOm5hLHR5cGU6YSxjb21wYXJlOnZvaWQgMD09PWI\/bnVsbDpifX07Yy51c2VDYWxsYmFjaz1mdW5jdGlvbihhLGIpe3JldHVybiBuKCkudXNlQ2FsbGJhY2soYSxiKX07Yy51c2VDb250ZXh0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIG4oKS51c2VDb250ZXh0KGEsYil9O2MudXNlRGVidWdWYWx1ZT1mdW5jdGlvbihhLA0KYil7fTtjLnVzZUVmZmVjdD1mdW5jdGlvbihhLGIpe3JldHVybiBuKCkudXNlRWZmZWN0KGEsYil9O2MudXNlSW1wZXJhdGl2ZUhhbmRsZT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG4oKS51c2VJbXBlcmF0aXZlSGFuZGxlKGEsYixjKX07Yy51c2VMYXlvdXRFZmZlY3Q9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbigpLnVzZUxheW91dEVmZmVjdChhLGIpfTtjLnVzZU1lbW89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbigpLnVzZU1lbW8oYSxiKX07Yy51c2VSZWR1Y2VyPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbigpLnVzZVJlZHVjZXIoYSxiLGMpfTtjLnVzZVJlZj1mdW5jdGlvbihhKXtyZXR1cm4gbigpLnVzZVJlZihhKX07Yy51c2VTdGF0ZT1mdW5jdGlvbihhKXtyZXR1cm4gbigpLnVzZVN0YXRlKGEpfTtjLnZlcnNpb249IjE3LjAuMCJ9KTsNCn0pKCk7DQo=\"><\/script> <script src=\"data:application\/javascript;base64,LyoqIEBsaWNlbnNlIFJlYWN0IHYxNy4wLjANCiAqIHJlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qcw0KICoNCiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLg0KICoNCiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZQ0KICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLg0KICovDQooZnVuY3Rpb24oKXsvKg0KIE1vZGVybml6ciAzLjAuMHByZSAoQ3VzdG9tIEJ1aWxkKSB8IE1JVA0KKi8NCid1c2Ugc3RyaWN0JzsoZnVuY3Rpb24oTSxoYSl7Im9iamVjdCI9PT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPT10eXBlb2YgbW9kdWxlP2hhKGV4cG9ydHMscmVxdWlyZSgicmVhY3QiKSk6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKFsiZXhwb3J0cyIsInJlYWN0Il0saGEpOihNPU18fHNlbGYsaGEoTS5SZWFjdERPTT17fSxNLlJlYWN0KSl9KSh0aGlzLGZ1bmN0aW9uKE0saGEpe2Z1bmN0aW9uIG0oYSl7Zm9yKHZhciBiPSJodHRwczovL3JlYWN0anMub3JnL2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD0iK2EsYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspYis9IiZhcmdzW109IitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW2NdKTtyZXR1cm4iTWluaWZpZWQgUmVhY3QgZXJyb3IgIyIrYSsiOyB2aXNpdCAiK2IrIiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIn0NCmZ1bmN0aW9uIFRhKGEsYil7Z2IoYSxiKTtnYihhKyJDYXB0dXJlIixiKX1mdW5jdGlvbiBnYihhLGIpe0liW2FdPWI7Zm9yKGE9MDthPGIubGVuZ3RoO2ErKyl5Zi5hZGQoYlthXSl9ZnVuY3Rpb24ga2koYSl7aWYoemYuY2FsbChBZixhKSlyZXR1cm4hMDtpZih6Zi5jYWxsKEJmLGEpKXJldHVybiExO2lmKGxpLnRlc3QoYSkpcmV0dXJuIEFmW2FdPSEwO0JmW2FdPSEwO3JldHVybiExfWZ1bmN0aW9uIG1pKGEsYixjLGQpe2lmKG51bGwhPT1jJiYwPT09Yy50eXBlKXJldHVybiExO3N3aXRjaCh0eXBlb2YgYil7Y2FzZSAiZnVuY3Rpb24iOmNhc2UgInN5bWJvbCI6cmV0dXJuITA7Y2FzZSAiYm9vbGVhbiI6aWYoZClyZXR1cm4hMTtpZihudWxsIT09YylyZXR1cm4hYy5hY2NlcHRzQm9vbGVhbnM7YT1hLnRvTG93ZXJDYXNlKCkuc2xpY2UoMCw1KTtyZXR1cm4iZGF0YS0iIT09YSYmImFyaWEtIiE9PWE7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gbmkoYSxiLGMsZCl7aWYobnVsbD09PQ0KYnx8InVuZGVmaW5lZCI9PT10eXBlb2YgYnx8bWkoYSxiLGMsZCkpcmV0dXJuITA7aWYoZClyZXR1cm4hMTtpZihudWxsIT09Yylzd2l0Y2goYy50eXBlKXtjYXNlIDM6cmV0dXJuIWI7Y2FzZSA0OnJldHVybiExPT09YjtjYXNlIDU6cmV0dXJuIGlzTmFOKGIpO2Nhc2UgNjpyZXR1cm4gaXNOYU4oYil8fDE+Yn1yZXR1cm4hMX1mdW5jdGlvbiBRKGEsYixjLGQsZSxmLGcpe3RoaXMuYWNjZXB0c0Jvb2xlYW5zPTI9PT1ifHwzPT09Ynx8ND09PWI7dGhpcy5hdHRyaWJ1dGVOYW1lPWQ7dGhpcy5hdHRyaWJ1dGVOYW1lc3BhY2U9ZTt0aGlzLm11c3RVc2VQcm9wZXJ0eT1jO3RoaXMucHJvcGVydHlOYW1lPWE7dGhpcy50eXBlPWI7dGhpcy5zYW5pdGl6ZVVSTD1mO3RoaXMucmVtb3ZlRW1wdHlTdHJpbmc9Z31mdW5jdGlvbiBFZChhLGIsYyxkKXt2YXIgZT1JLmhhc093blByb3BlcnR5KGIpP0lbYl06bnVsbDt2YXIgZj1udWxsIT09ZT8wPT09ZS50eXBlOmQ\/ITE6ISgyPGIubGVuZ3RoKXx8DQoibyIhPT1iWzBdJiYiTyIhPT1iWzBdfHwibiIhPT1iWzFdJiYiTiIhPT1iWzFdPyExOiEwO2Z8fChuaShiLGMsZSxkKSYmKGM9bnVsbCksZHx8bnVsbD09PWU\/a2koYikmJihudWxsPT09Yz9hLnJlbW92ZUF0dHJpYnV0ZShiKTphLnNldEF0dHJpYnV0ZShiLCIiK2MpKTplLm11c3RVc2VQcm9wZXJ0eT9hW2UucHJvcGVydHlOYW1lXT1udWxsPT09Yz8zPT09ZS50eXBlPyExOiIiOmM6KGI9ZS5hdHRyaWJ1dGVOYW1lLGQ9ZS5hdHRyaWJ1dGVOYW1lc3BhY2UsbnVsbD09PWM\/YS5yZW1vdmVBdHRyaWJ1dGUoYik6KGU9ZS50eXBlLGM9Mz09PWV8fDQ9PT1lJiYhMD09PWM\/IiI6IiIrYyxkP2Euc2V0QXR0cmlidXRlTlMoZCxiLGMpOmEuc2V0QXR0cmlidXRlKGIsYykpKSl9ZnVuY3Rpb24gSmIoYSl7aWYobnVsbD09PWF8fCJvYmplY3QiIT09dHlwZW9mIGEpcmV0dXJuIG51bGw7YT1DZiYmYVtDZl18fGFbIkBAaXRlcmF0b3IiXTtyZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIGE\/YTpudWxsfQ0KZnVuY3Rpb24gS2IoYSxiLGMpe2lmKHZvaWQgMD09PUZkKXRyeXt0aHJvdyBFcnJvcigpO31jYXRjaChkKXtGZD0oYj1kLnN0YWNrLnRyaW0oKS5tYXRjaCgvXG4oICooYXQgKT8pLykpJiZiWzFdfHwiIn1yZXR1cm4iXG4iK0ZkK2F9ZnVuY3Rpb24gQmMoYSxiKXtpZighYXx8R2QpcmV0dXJuIiI7R2Q9ITA7dmFyIGM9RXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7RXJyb3IucHJlcGFyZVN0YWNrVHJhY2U9dm9pZCAwO3RyeXtpZihiKWlmKGI9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigpO30sT2JqZWN0LmRlZmluZVByb3BlcnR5KGIucHJvdG90eXBlLCJwcm9wcyIse3NldDpmdW5jdGlvbigpe3Rocm93IEVycm9yKCk7fX0pLCJvYmplY3QiPT09dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuY29uc3RydWN0KXt0cnl7UmVmbGVjdC5jb25zdHJ1Y3QoYixbXSl9Y2F0Y2goayl7dmFyIGQ9a31SZWZsZWN0LmNvbnN0cnVjdChhLFtdLGIpfWVsc2V7dHJ5e2IuY2FsbCgpfWNhdGNoKGspe2Q9a31hLmNhbGwoYi5wcm90b3R5cGUpfWVsc2V7dHJ5e3Rocm93IEVycm9yKCk7DQp9Y2F0Y2goayl7ZD1rfWEoKX19Y2F0Y2goayl7aWYoayYmZCYmInN0cmluZyI9PT10eXBlb2Ygay5zdGFjayl7Zm9yKHZhciBlPWsuc3RhY2suc3BsaXQoIlxuIiksZj1kLnN0YWNrLnNwbGl0KCJcbiIpLGc9ZS5sZW5ndGgtMSxoPWYubGVuZ3RoLTE7MTw9ZyYmMDw9aCYmZVtnXSE9PWZbaF07KWgtLTtmb3IoOzE8PWcmJjA8PWg7Zy0tLGgtLSlpZihlW2ddIT09ZltoXSl7aWYoMSE9PWd8fDEhPT1oKXtkbyBpZihnLS0saC0tLDA+aHx8ZVtnXSE9PWZbaF0pcmV0dXJuIlxuIitlW2ddLnJlcGxhY2UoIiBhdCBuZXcgIiwiIGF0ICIpO3doaWxlKDE8PWcmJjA8PWgpfWJyZWFrfX19ZmluYWxseXtHZD0hMSxFcnJvci5wcmVwYXJlU3RhY2tUcmFjZT1jfXJldHVybihhPWE\/YS5kaXNwbGF5TmFtZXx8YS5uYW1lOiIiKT9LYihhKToiIn1mdW5jdGlvbiBvaShhKXtzd2l0Y2goYS50YWcpe2Nhc2UgNTpyZXR1cm4gS2IoYS50eXBlKTtjYXNlIDE2OnJldHVybiBLYigiTGF6eSIpO2Nhc2UgMTM6cmV0dXJuIEtiKCJTdXNwZW5zZSIpOw0KY2FzZSAxOTpyZXR1cm4gS2IoIlN1c3BlbnNlTGlzdCIpO2Nhc2UgMDpjYXNlIDI6Y2FzZSAxNTpyZXR1cm4gYT1CYyhhLnR5cGUsITEpLGE7Y2FzZSAxMTpyZXR1cm4gYT1CYyhhLnR5cGUucmVuZGVyLCExKSxhO2Nhc2UgMjI6cmV0dXJuIGE9QmMoYS50eXBlLl9yZW5kZXIsITEpLGE7Y2FzZSAxOnJldHVybiBhPUJjKGEudHlwZSwhMCksYTtkZWZhdWx0OnJldHVybiIifX1mdW5jdGlvbiBoYihhKXtpZihudWxsPT1hKXJldHVybiBudWxsO2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgYSlyZXR1cm4gYS5kaXNwbGF5TmFtZXx8YS5uYW1lfHxudWxsO2lmKCJzdHJpbmciPT09dHlwZW9mIGEpcmV0dXJuIGE7c3dpdGNoKGEpe2Nhc2Ugd2E6cmV0dXJuIkZyYWdtZW50IjtjYXNlIFVhOnJldHVybiJQb3J0YWwiO2Nhc2UgTGI6cmV0dXJuIlByb2ZpbGVyIjtjYXNlIEhkOnJldHVybiJTdHJpY3RNb2RlIjtjYXNlIE1iOnJldHVybiJTdXNwZW5zZSI7Y2FzZSBDYzpyZXR1cm4iU3VzcGVuc2VMaXN0In1pZigib2JqZWN0Ij09PQ0KdHlwZW9mIGEpc3dpdGNoKGEuJCR0eXBlb2Ype2Nhc2UgSWQ6cmV0dXJuKGEuZGlzcGxheU5hbWV8fCJDb250ZXh0IikrIi5Db25zdW1lciI7Y2FzZSBKZDpyZXR1cm4oYS5fY29udGV4dC5kaXNwbGF5TmFtZXx8IkNvbnRleHQiKSsiLlByb3ZpZGVyIjtjYXNlIERjOnZhciBiPWEucmVuZGVyO2I9Yi5kaXNwbGF5TmFtZXx8Yi5uYW1lfHwiIjtyZXR1cm4gYS5kaXNwbGF5TmFtZXx8KCIiIT09Yj8iRm9yd2FyZFJlZigiK2IrIikiOiJGb3J3YXJkUmVmIik7Y2FzZSBFYzpyZXR1cm4gaGIoYS50eXBlKTtjYXNlIEtkOnJldHVybiBoYihhLl9yZW5kZXIpO2Nhc2UgTGQ6Yj1hLl9wYXlsb2FkO2E9YS5faW5pdDt0cnl7cmV0dXJuIGhiKGEoYikpfWNhdGNoKGMpe319cmV0dXJuIG51bGx9ZnVuY3Rpb24geGEoYSl7c3dpdGNoKHR5cGVvZiBhKXtjYXNlICJib29sZWFuIjpjYXNlICJudW1iZXIiOmNhc2UgIm9iamVjdCI6Y2FzZSAic3RyaW5nIjpjYXNlICJ1bmRlZmluZWQiOnJldHVybiBhOw0KZGVmYXVsdDpyZXR1cm4iIn19ZnVuY3Rpb24gRGYoYSl7dmFyIGI9YS50eXBlO3JldHVybihhPWEubm9kZU5hbWUpJiYiaW5wdXQiPT09YS50b0xvd2VyQ2FzZSgpJiYoImNoZWNrYm94Ij09PWJ8fCJyYWRpbyI9PT1iKX1mdW5jdGlvbiBwaShhKXt2YXIgYj1EZihhKT8iY2hlY2tlZCI6InZhbHVlIixjPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsYiksZD0iIithW2JdO2lmKCFhLmhhc093blByb3BlcnR5KGIpJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBjJiYiZnVuY3Rpb24iPT09dHlwZW9mIGMuZ2V0JiYiZnVuY3Rpb24iPT09dHlwZW9mIGMuc2V0KXt2YXIgZT1jLmdldCxmPWMuc2V0O09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5jYWxsKHRoaXMpfSxzZXQ6ZnVuY3Rpb24oYSl7ZD0iIithO2YuY2FsbCh0aGlzLGEpfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLA0KYix7ZW51bWVyYWJsZTpjLmVudW1lcmFibGV9KTtyZXR1cm57Z2V0VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZH0sc2V0VmFsdWU6ZnVuY3Rpb24oYSl7ZD0iIithfSxzdG9wVHJhY2tpbmc6ZnVuY3Rpb24oKXthLl92YWx1ZVRyYWNrZXI9bnVsbDtkZWxldGUgYVtiXX19fX1mdW5jdGlvbiBGYyhhKXthLl92YWx1ZVRyYWNrZXJ8fChhLl92YWx1ZVRyYWNrZXI9cGkoYSkpfWZ1bmN0aW9uIEVmKGEpe2lmKCFhKXJldHVybiExO3ZhciBiPWEuX3ZhbHVlVHJhY2tlcjtpZighYilyZXR1cm4hMDt2YXIgYz1iLmdldFZhbHVlKCk7dmFyIGQ9IiI7YSYmKGQ9RGYoYSk\/YS5jaGVja2VkPyJ0cnVlIjoiZmFsc2UiOmEudmFsdWUpO2E9ZDtyZXR1cm4gYSE9PWM\/KGIuc2V0VmFsdWUoYSksITApOiExfWZ1bmN0aW9uIEdjKGEpe2E9YXx8KCJ1bmRlZmluZWQiIT09dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50OnZvaWQgMCk7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgYSlyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIGEuYWN0aXZlRWxlbWVudHx8DQphLmJvZHl9Y2F0Y2goYil7cmV0dXJuIGEuYm9keX19ZnVuY3Rpb24gTWQoYSxiKXt2YXIgYz1iLmNoZWNrZWQ7cmV0dXJuIEIoe30sYix7ZGVmYXVsdENoZWNrZWQ6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsdmFsdWU6dm9pZCAwLGNoZWNrZWQ6bnVsbCE9Yz9jOmEuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZH0pfWZ1bmN0aW9uIEZmKGEsYil7dmFyIGM9bnVsbD09Yi5kZWZhdWx0VmFsdWU\/IiI6Yi5kZWZhdWx0VmFsdWUsZD1udWxsIT1iLmNoZWNrZWQ\/Yi5jaGVja2VkOmIuZGVmYXVsdENoZWNrZWQ7Yz14YShudWxsIT1iLnZhbHVlP2IudmFsdWU6Yyk7YS5fd3JhcHBlclN0YXRlPXtpbml0aWFsQ2hlY2tlZDpkLGluaXRpYWxWYWx1ZTpjLGNvbnRyb2xsZWQ6ImNoZWNrYm94Ij09PWIudHlwZXx8InJhZGlvIj09PWIudHlwZT9udWxsIT1iLmNoZWNrZWQ6bnVsbCE9Yi52YWx1ZX19ZnVuY3Rpb24gR2YoYSxiKXtiPWIuY2hlY2tlZDtudWxsIT1iJiZFZChhLCJjaGVja2VkIiwNCmIsITEpfWZ1bmN0aW9uIE5kKGEsYil7R2YoYSxiKTt2YXIgYz14YShiLnZhbHVlKSxkPWIudHlwZTtpZihudWxsIT1jKWlmKCJudW1iZXIiPT09ZCl7aWYoMD09PWMmJiIiPT09YS52YWx1ZXx8YS52YWx1ZSE9YylhLnZhbHVlPSIiK2N9ZWxzZSBhLnZhbHVlIT09IiIrYyYmKGEudmFsdWU9IiIrYyk7ZWxzZSBpZigic3VibWl0Ij09PWR8fCJyZXNldCI9PT1kKXthLnJlbW92ZUF0dHJpYnV0ZSgidmFsdWUiKTtyZXR1cm59Yi5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKT9PZChhLGIudHlwZSxjKTpiLmhhc093blByb3BlcnR5KCJkZWZhdWx0VmFsdWUiKSYmT2QoYSxiLnR5cGUseGEoYi5kZWZhdWx0VmFsdWUpKTtudWxsPT1iLmNoZWNrZWQmJm51bGwhPWIuZGVmYXVsdENoZWNrZWQmJihhLmRlZmF1bHRDaGVja2VkPSEhYi5kZWZhdWx0Q2hlY2tlZCl9ZnVuY3Rpb24gSGYoYSxiLGMpe2lmKGIuaGFzT3duUHJvcGVydHkoInZhbHVlIil8fGIuaGFzT3duUHJvcGVydHkoImRlZmF1bHRWYWx1ZSIpKXt2YXIgZD0NCmIudHlwZTtpZighKCJzdWJtaXQiIT09ZCYmInJlc2V0IiE9PWR8fHZvaWQgMCE9PWIudmFsdWUmJm51bGwhPT1iLnZhbHVlKSlyZXR1cm47Yj0iIithLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlO2N8fGI9PT1hLnZhbHVlfHwoYS52YWx1ZT1iKTthLmRlZmF1bHRWYWx1ZT1ifWM9YS5uYW1lOyIiIT09YyYmKGEubmFtZT0iIik7YS5kZWZhdWx0Q2hlY2tlZD0hIWEuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZDsiIiE9PWMmJihhLm5hbWU9Yyl9ZnVuY3Rpb24gT2QoYSxiLGMpe2lmKCJudW1iZXIiIT09Ynx8R2MoYS5vd25lckRvY3VtZW50KSE9PWEpbnVsbD09Yz9hLmRlZmF1bHRWYWx1ZT0iIithLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlOmEuZGVmYXVsdFZhbHVlIT09IiIrYyYmKGEuZGVmYXVsdFZhbHVlPSIiK2MpfWZ1bmN0aW9uIHFpKGEpe3ZhciBiPSIiO2hhLkNoaWxkcmVuLmZvckVhY2goYSxmdW5jdGlvbihhKXtudWxsIT1hJiYoYis9YSl9KTtyZXR1cm4gYn0NCmZ1bmN0aW9uIFBkKGEsYil7YT1CKHtjaGlsZHJlbjp2b2lkIDB9LGIpO2lmKGI9cWkoYi5jaGlsZHJlbikpYS5jaGlsZHJlbj1iO3JldHVybiBhfWZ1bmN0aW9uIGliKGEsYixjLGQpe2E9YS5vcHRpb25zO2lmKGIpe2I9e307Zm9yKHZhciBlPTA7ZTxjLmxlbmd0aDtlKyspYlsiJCIrY1tlXV09ITA7Zm9yKGM9MDtjPGEubGVuZ3RoO2MrKyllPWIuaGFzT3duUHJvcGVydHkoIiQiK2FbY10udmFsdWUpLGFbY10uc2VsZWN0ZWQhPT1lJiYoYVtjXS5zZWxlY3RlZD1lKSxlJiZkJiYoYVtjXS5kZWZhdWx0U2VsZWN0ZWQ9ITApfWVsc2V7Yz0iIit4YShjKTtiPW51bGw7Zm9yKGU9MDtlPGEubGVuZ3RoO2UrKyl7aWYoYVtlXS52YWx1ZT09PWMpe2FbZV0uc2VsZWN0ZWQ9ITA7ZCYmKGFbZV0uZGVmYXVsdFNlbGVjdGVkPSEwKTtyZXR1cm59bnVsbCE9PWJ8fGFbZV0uZGlzYWJsZWR8fChiPWFbZV0pfW51bGwhPT1iJiYoYi5zZWxlY3RlZD0hMCl9fWZ1bmN0aW9uIFFkKGEsYil7aWYobnVsbCE9DQpiLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKXRocm93IEVycm9yKG0oOTEpKTtyZXR1cm4gQih7fSxiLHt2YWx1ZTp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCxjaGlsZHJlbjoiIithLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlfSl9ZnVuY3Rpb24gSWYoYSxiKXt2YXIgYz1iLnZhbHVlO2lmKG51bGw9PWMpe2M9Yi5jaGlsZHJlbjtiPWIuZGVmYXVsdFZhbHVlO2lmKG51bGwhPWMpe2lmKG51bGwhPWIpdGhyb3cgRXJyb3IobSg5MikpO2lmKEFycmF5LmlzQXJyYXkoYykpe2lmKCEoMT49Yy5sZW5ndGgpKXRocm93IEVycm9yKG0oOTMpKTtjPWNbMF19Yj1jfW51bGw9PWImJihiPSIiKTtjPWJ9YS5fd3JhcHBlclN0YXRlPXtpbml0aWFsVmFsdWU6eGEoYyl9fWZ1bmN0aW9uIEpmKGEsYil7dmFyIGM9eGEoYi52YWx1ZSksZD14YShiLmRlZmF1bHRWYWx1ZSk7bnVsbCE9YyYmKGM9IiIrYyxjIT09YS52YWx1ZSYmKGEudmFsdWU9YyksbnVsbD09Yi5kZWZhdWx0VmFsdWUmJmEuZGVmYXVsdFZhbHVlIT09DQpjJiYoYS5kZWZhdWx0VmFsdWU9YykpO251bGwhPWQmJihhLmRlZmF1bHRWYWx1ZT0iIitkKX1mdW5jdGlvbiBLZihhLGIpe2I9YS50ZXh0Q29udGVudDtiPT09YS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSYmIiIhPT1iJiZudWxsIT09YiYmKGEudmFsdWU9Yil9ZnVuY3Rpb24gTGYoYSl7c3dpdGNoKGEpe2Nhc2UgInN2ZyI6cmV0dXJuImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIjtjYXNlICJtYXRoIjpyZXR1cm4iaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCI7ZGVmYXVsdDpyZXR1cm4iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCJ9fWZ1bmN0aW9uIFJkKGEsYil7cmV0dXJuIG51bGw9PWF8fCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj09PWE\/TGYoYik6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj09PWEmJiJmb3JlaWduT2JqZWN0Ij09PWI\/Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiOmF9ZnVuY3Rpb24gTWYoYSxiLGMpe3JldHVybiBudWxsPT0NCmJ8fCJib29sZWFuIj09PXR5cGVvZiBifHwiIj09PWI\/IiI6Y3x8Im51bWJlciIhPT10eXBlb2YgYnx8MD09PWJ8fE5iLmhhc093blByb3BlcnR5KGEpJiZOYlthXT8oIiIrYikudHJpbSgpOmIrInB4In1mdW5jdGlvbiBOZihhLGIpe2E9YS5zdHlsZTtmb3IodmFyIGMgaW4gYilpZihiLmhhc093blByb3BlcnR5KGMpKXt2YXIgZD0wPT09Yy5pbmRleE9mKCItLSIpLGU9TWYoYyxiW2NdLGQpOyJmbG9hdCI9PT1jJiYoYz0iY3NzRmxvYXQiKTtkP2Euc2V0UHJvcGVydHkoYyxlKTphW2NdPWV9fWZ1bmN0aW9uIFNkKGEsYil7aWYoYil7aWYocmlbYV0mJihudWxsIT1iLmNoaWxkcmVufHxudWxsIT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSl0aHJvdyBFcnJvcihtKDEzNyxhKSk7aWYobnVsbCE9Yi5kYW5nZXJvdXNseVNldElubmVySFRNTCl7aWYobnVsbCE9Yi5jaGlsZHJlbil0aHJvdyBFcnJvcihtKDYwKSk7aWYoISgib2JqZWN0Ij09PXR5cGVvZiBiLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiYNCiJfX2h0bWwiaW4gYi5kYW5nZXJvdXNseVNldElubmVySFRNTCkpdGhyb3cgRXJyb3IobSg2MSkpO31pZihudWxsIT1iLnN0eWxlJiYib2JqZWN0IiE9PXR5cGVvZiBiLnN0eWxlKXRocm93IEVycm9yKG0oNjIpKTt9fWZ1bmN0aW9uIFRkKGEsYil7aWYoLTE9PT1hLmluZGV4T2YoIi0iKSlyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBiLmlzO3N3aXRjaChhKXtjYXNlICJhbm5vdGF0aW9uLXhtbCI6Y2FzZSAiY29sb3ItcHJvZmlsZSI6Y2FzZSAiZm9udC1mYWNlIjpjYXNlICJmb250LWZhY2Utc3JjIjpjYXNlICJmb250LWZhY2UtdXJpIjpjYXNlICJmb250LWZhY2UtZm9ybWF0IjpjYXNlICJmb250LWZhY2UtbmFtZSI6Y2FzZSAibWlzc2luZy1nbHlwaCI6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMH19ZnVuY3Rpb24gVWQoYSl7YT1hLnRhcmdldHx8YS5zcmNFbGVtZW50fHx3aW5kb3c7YS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCYmKGE9YS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCk7DQpyZXR1cm4gMz09PWEubm9kZVR5cGU\/YS5wYXJlbnROb2RlOmF9ZnVuY3Rpb24gT2YoYSl7aWYoYT1PYihhKSl7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBWZCl0aHJvdyBFcnJvcihtKDI4MCkpO3ZhciBiPWEuc3RhdGVOb2RlO2ImJihiPUhjKGIpLFZkKGEuc3RhdGVOb2RlLGEudHlwZSxiKSl9fWZ1bmN0aW9uIFBmKGEpe2piP2tiP2tiLnB1c2goYSk6a2I9W2FdOmpiPWF9ZnVuY3Rpb24gUWYoKXtpZihqYil7dmFyIGE9amIsYj1rYjtrYj1qYj1udWxsO09mKGEpO2lmKGIpZm9yKGE9MDthPGIubGVuZ3RoO2ErKylPZihiW2FdKX19ZnVuY3Rpb24gV2QoKXtpZihudWxsIT09amJ8fG51bGwhPT1rYilYZCgpLFFmKCl9ZnVuY3Rpb24gc2koYSxiLGMpe2lmKFlkKXJldHVybiBhKGIsYyk7WWQ9ITA7dHJ5e3JldHVybiBSZihhLGIsYyl9ZmluYWxseXtZZD0hMSxXZCgpfX1mdW5jdGlvbiBQYihhLGIpe3ZhciBjPWEuc3RhdGVOb2RlO2lmKG51bGw9PT1jKXJldHVybiBudWxsO3ZhciBkPUhjKGMpOw0KaWYobnVsbD09PWQpcmV0dXJuIG51bGw7Yz1kW2JdO2E6c3dpdGNoKGIpe2Nhc2UgIm9uQ2xpY2siOmNhc2UgIm9uQ2xpY2tDYXB0dXJlIjpjYXNlICJvbkRvdWJsZUNsaWNrIjpjYXNlICJvbkRvdWJsZUNsaWNrQ2FwdHVyZSI6Y2FzZSAib25Nb3VzZURvd24iOmNhc2UgIm9uTW91c2VEb3duQ2FwdHVyZSI6Y2FzZSAib25Nb3VzZU1vdmUiOmNhc2UgIm9uTW91c2VNb3ZlQ2FwdHVyZSI6Y2FzZSAib25Nb3VzZVVwIjpjYXNlICJvbk1vdXNlVXBDYXB0dXJlIjpjYXNlICJvbk1vdXNlRW50ZXIiOihkPSFkLmRpc2FibGVkKXx8KGE9YS50eXBlLGQ9ISgiYnV0dG9uIj09PWF8fCJpbnB1dCI9PT1hfHwic2VsZWN0Ij09PWF8fCJ0ZXh0YXJlYSI9PT1hKSk7YT0hZDticmVhayBhO2RlZmF1bHQ6YT0hMX1pZihhKXJldHVybiBudWxsO2lmKGMmJiJmdW5jdGlvbiIhPT10eXBlb2YgYyl0aHJvdyBFcnJvcihtKDIzMSxiLHR5cGVvZiBjKSk7cmV0dXJuIGN9ZnVuY3Rpb24gdGkoYSxiLGMsZCxlLA0KZixnLGgsayl7UWI9ITE7SWM9bnVsbDt1aS5hcHBseSh2aSxhcmd1bWVudHMpfWZ1bmN0aW9uIHdpKGEsYixjLGQsZSxmLGcsaCxrKXt0aS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYoUWIpe2lmKFFiKXt2YXIgdj1JYztRYj0hMTtJYz1udWxsfWVsc2UgdGhyb3cgRXJyb3IobSgxOTgpKTtKY3x8KEpjPSEwLFpkPXYpfX1mdW5jdGlvbiBWYShhKXt2YXIgYj1hLGM9YTtpZihhLmFsdGVybmF0ZSlmb3IoO2IucmV0dXJuOyliPWIucmV0dXJuO2Vsc2V7YT1iO2RvIGI9YSwwIT09KGIuZmxhZ3MmMTAyNikmJihjPWIucmV0dXJuKSxhPWIucmV0dXJuO3doaWxlKGEpfXJldHVybiAzPT09Yi50YWc\/YzpudWxsfWZ1bmN0aW9uIFNmKGEpe2lmKDEzPT09YS50YWcpe3ZhciBiPWEubWVtb2l6ZWRTdGF0ZTtudWxsPT09YiYmKGE9YS5hbHRlcm5hdGUsbnVsbCE9PWEmJihiPWEubWVtb2l6ZWRTdGF0ZSkpO2lmKG51bGwhPT1iKXJldHVybiBiLmRlaHlkcmF0ZWR9cmV0dXJuIG51bGx9ZnVuY3Rpb24gVGYoYSl7aWYoVmEoYSkhPT0NCmEpdGhyb3cgRXJyb3IobSgxODgpKTt9ZnVuY3Rpb24geGkoYSl7dmFyIGI9YS5hbHRlcm5hdGU7aWYoIWIpe2I9VmEoYSk7aWYobnVsbD09PWIpdGhyb3cgRXJyb3IobSgxODgpKTtyZXR1cm4gYiE9PWE\/bnVsbDphfWZvcih2YXIgYz1hLGQ9Yjs7KXt2YXIgZT1jLnJldHVybjtpZihudWxsPT09ZSlicmVhazt2YXIgZj1lLmFsdGVybmF0ZTtpZihudWxsPT09Zil7ZD1lLnJldHVybjtpZihudWxsIT09ZCl7Yz1kO2NvbnRpbnVlfWJyZWFrfWlmKGUuY2hpbGQ9PT1mLmNoaWxkKXtmb3IoZj1lLmNoaWxkO2Y7KXtpZihmPT09YylyZXR1cm4gVGYoZSksYTtpZihmPT09ZClyZXR1cm4gVGYoZSksYjtmPWYuc2libGluZ310aHJvdyBFcnJvcihtKDE4OCkpO31pZihjLnJldHVybiE9PWQucmV0dXJuKWM9ZSxkPWY7ZWxzZXtmb3IodmFyIGc9ITEsaD1lLmNoaWxkO2g7KXtpZihoPT09Yyl7Zz0hMDtjPWU7ZD1mO2JyZWFrfWlmKGg9PT1kKXtnPSEwO2Q9ZTtjPWY7YnJlYWt9aD1oLnNpYmxpbmd9aWYoIWcpe2ZvcihoPQ0KZi5jaGlsZDtoOyl7aWYoaD09PWMpe2c9ITA7Yz1mO2Q9ZTticmVha31pZihoPT09ZCl7Zz0hMDtkPWY7Yz1lO2JyZWFrfWg9aC5zaWJsaW5nfWlmKCFnKXRocm93IEVycm9yKG0oMTg5KSk7fX1pZihjLmFsdGVybmF0ZSE9PWQpdGhyb3cgRXJyb3IobSgxOTApKTt9aWYoMyE9PWMudGFnKXRocm93IEVycm9yKG0oMTg4KSk7cmV0dXJuIGMuc3RhdGVOb2RlLmN1cnJlbnQ9PT1jP2E6Yn1mdW5jdGlvbiBVZihhKXthPXhpKGEpO2lmKCFhKXJldHVybiBudWxsO2Zvcih2YXIgYj1hOzspe2lmKDU9PT1iLnRhZ3x8Nj09PWIudGFnKXJldHVybiBiO2lmKGIuY2hpbGQpYi5jaGlsZC5yZXR1cm49YixiPWIuY2hpbGQ7ZWxzZXtpZihiPT09YSlicmVhaztmb3IoOyFiLnNpYmxpbmc7KXtpZighYi5yZXR1cm58fGIucmV0dXJuPT09YSlyZXR1cm4gbnVsbDtiPWIucmV0dXJufWIuc2libGluZy5yZXR1cm49Yi5yZXR1cm47Yj1iLnNpYmxpbmd9fXJldHVybiBudWxsfWZ1bmN0aW9uIFZmKGEsYil7Zm9yKHZhciBjPQ0KYS5hbHRlcm5hdGU7bnVsbCE9PWI7KXtpZihiPT09YXx8Yj09PWMpcmV0dXJuITA7Yj1iLnJldHVybn1yZXR1cm4hMX1mdW5jdGlvbiAkZChhLGIsYyxkLGUpe3JldHVybntibG9ja2VkT246YSxkb21FdmVudE5hbWU6YixldmVudFN5c3RlbUZsYWdzOmN8MTYsbmF0aXZlRXZlbnQ6ZSx0YXJnZXRDb250YWluZXJzOltkXX19ZnVuY3Rpb24gV2YoYSxiKXtzd2l0Y2goYSl7Y2FzZSAiZm9jdXNpbiI6Y2FzZSAiZm9jdXNvdXQiOnlhPW51bGw7YnJlYWs7Y2FzZSAiZHJhZ2VudGVyIjpjYXNlICJkcmFnbGVhdmUiOnphPW51bGw7YnJlYWs7Y2FzZSAibW91c2VvdmVyIjpjYXNlICJtb3VzZW91dCI6QWE9bnVsbDticmVhaztjYXNlICJwb2ludGVyb3ZlciI6Y2FzZSAicG9pbnRlcm91dCI6UmIuZGVsZXRlKGIucG9pbnRlcklkKTticmVhaztjYXNlICJnb3Rwb2ludGVyY2FwdHVyZSI6Y2FzZSAibG9zdHBvaW50ZXJjYXB0dXJlIjpTYi5kZWxldGUoYi5wb2ludGVySWQpfX1mdW5jdGlvbiBUYihhLA0KYixjLGQsZSxmKXtpZihudWxsPT09YXx8YS5uYXRpdmVFdmVudCE9PWYpcmV0dXJuIGE9JGQoYixjLGQsZSxmKSxudWxsIT09YiYmKGI9T2IoYiksbnVsbCE9PWImJlhmKGIpKSxhO2EuZXZlbnRTeXN0ZW1GbGFnc3w9ZDtiPWEudGFyZ2V0Q29udGFpbmVycztudWxsIT09ZSYmLTE9PT1iLmluZGV4T2YoZSkmJmIucHVzaChlKTtyZXR1cm4gYX1mdW5jdGlvbiB5aShhLGIsYyxkLGUpe3N3aXRjaChiKXtjYXNlICJmb2N1c2luIjpyZXR1cm4geWE9VGIoeWEsYSxiLGMsZCxlKSwhMDtjYXNlICJkcmFnZW50ZXIiOnJldHVybiB6YT1UYih6YSxhLGIsYyxkLGUpLCEwO2Nhc2UgIm1vdXNlb3ZlciI6cmV0dXJuIEFhPVRiKEFhLGEsYixjLGQsZSksITA7Y2FzZSAicG9pbnRlcm92ZXIiOnZhciBmPWUucG9pbnRlcklkO1JiLnNldChmLFRiKFJiLmdldChmKXx8bnVsbCxhLGIsYyxkLGUpKTtyZXR1cm4hMDtjYXNlICJnb3Rwb2ludGVyY2FwdHVyZSI6cmV0dXJuIGY9ZS5wb2ludGVySWQsU2Iuc2V0KGYsDQpUYihTYi5nZXQoZil8fG51bGwsYSxiLGMsZCxlKSksITB9cmV0dXJuITF9ZnVuY3Rpb24gemkoYSl7dmFyIGI9V2EoYS50YXJnZXQpO2lmKG51bGwhPT1iKXt2YXIgYz1WYShiKTtpZihudWxsIT09YylpZihiPWMudGFnLDEzPT09Yil7aWYoYj1TZihjKSxudWxsIT09Yil7YS5ibG9ja2VkT249YjtBaShhLmxhbmVQcmlvcml0eSxmdW5jdGlvbigpe2FlKGEucHJpb3JpdHksZnVuY3Rpb24oKXtCaShjKX0pfSk7cmV0dXJufX1lbHNlIGlmKDM9PT1iJiZjLnN0YXRlTm9kZS5oeWRyYXRlKXthLmJsb2NrZWRPbj0zPT09Yy50YWc\/Yy5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzpudWxsO3JldHVybn19YS5ibG9ja2VkT249bnVsbH1mdW5jdGlvbiBLYyhhKXtpZihudWxsIT09YS5ibG9ja2VkT24pcmV0dXJuITE7Zm9yKHZhciBiPWEudGFyZ2V0Q29udGFpbmVyczswPGIubGVuZ3RoOyl7dmFyIGM9YmUoYS5kb21FdmVudE5hbWUsYS5ldmVudFN5c3RlbUZsYWdzLGJbMF0sYS5uYXRpdmVFdmVudCk7DQppZihudWxsIT09YylyZXR1cm4gYj1PYihjKSxudWxsIT09YiYmWGYoYiksYS5ibG9ja2VkT249YywhMTtiLnNoaWZ0KCl9cmV0dXJuITB9ZnVuY3Rpb24gWWYoYSxiLGMpe0tjKGEpJiZjLmRlbGV0ZShiKX1mdW5jdGlvbiBDaSgpe2ZvcihjZT0hMTswPGlhLmxlbmd0aDspe3ZhciBhPWlhWzBdO2lmKG51bGwhPT1hLmJsb2NrZWRPbil7YT1PYihhLmJsb2NrZWRPbik7bnVsbCE9PWEmJkRpKGEpO2JyZWFrfWZvcih2YXIgYj1hLnRhcmdldENvbnRhaW5lcnM7MDxiLmxlbmd0aDspe3ZhciBjPWJlKGEuZG9tRXZlbnROYW1lLGEuZXZlbnRTeXN0ZW1GbGFncyxiWzBdLGEubmF0aXZlRXZlbnQpO2lmKG51bGwhPT1jKXthLmJsb2NrZWRPbj1jO2JyZWFrfWIuc2hpZnQoKX1udWxsPT09YS5ibG9ja2VkT24mJmlhLnNoaWZ0KCl9bnVsbCE9PXlhJiZLYyh5YSkmJih5YT1udWxsKTtudWxsIT09emEmJktjKHphKSYmKHphPW51bGwpO251bGwhPT1BYSYmS2MoQWEpJiYoQWE9bnVsbCk7UmIuZm9yRWFjaChZZik7DQpTYi5mb3JFYWNoKFlmKX1mdW5jdGlvbiBVYihhLGIpe2EuYmxvY2tlZE9uPT09YiYmKGEuYmxvY2tlZE9uPW51bGwsY2V8fChjZT0hMCxaZigkZixDaSkpKX1mdW5jdGlvbiBhZyhhKXtpZigwPGlhLmxlbmd0aCl7VWIoaWFbMF0sYSk7Zm9yKHZhciBiPTE7YjxpYS5sZW5ndGg7YisrKXt2YXIgYz1pYVtiXTtjLmJsb2NrZWRPbj09PWEmJihjLmJsb2NrZWRPbj1udWxsKX19bnVsbCE9PXlhJiZVYih5YSxhKTtudWxsIT09emEmJlViKHphLGEpO251bGwhPT1BYSYmVWIoQWEsYSk7Yj1mdW5jdGlvbihiKXtyZXR1cm4gVWIoYixhKX07UmIuZm9yRWFjaChiKTtTYi5mb3JFYWNoKGIpO2ZvcihiPTA7YjxWYi5sZW5ndGg7YisrKWM9VmJbYl0sYy5ibG9ja2VkT249PT1hJiYoYy5ibG9ja2VkT249bnVsbCk7Zm9yKDswPFZiLmxlbmd0aCYmKGI9VmJbMF0sbnVsbD09PWIuYmxvY2tlZE9uKTspemkoYiksbnVsbD09PWIuYmxvY2tlZE9uJiZWYi5zaGlmdCgpfWZ1bmN0aW9uIExjKGEsYil7dmFyIGM9DQp7fTtjW2EudG9Mb3dlckNhc2UoKV09Yi50b0xvd2VyQ2FzZSgpO2NbIldlYmtpdCIrYV09IndlYmtpdCIrYjtjWyJNb3oiK2FdPSJtb3oiK2I7cmV0dXJuIGN9ZnVuY3Rpb24gTWMoYSl7aWYoZGVbYV0pcmV0dXJuIGRlW2FdO2lmKCFsYlthXSlyZXR1cm4gYTt2YXIgYj1sYlthXSxjO2ZvcihjIGluIGIpaWYoYi5oYXNPd25Qcm9wZXJ0eShjKSYmYyBpbiBiZylyZXR1cm4gZGVbYV09YltjXTtyZXR1cm4gYX1mdW5jdGlvbiBlZShhLGIpe2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7Yys9Mil7dmFyIGQ9YVtjXSxlPWFbYysxXTtlPSJvbiIrKGVbMF0udG9VcHBlckNhc2UoKStlLnNsaWNlKDEpKTtmZS5zZXQoZCxiKTtjZy5zZXQoZCxlKTtUYShlLFtkXSl9fWZ1bmN0aW9uIG1iKGEpe2lmKDAhPT0oMSZhKSlyZXR1cm4gdz0xNSwxO2lmKDAhPT0oMiZhKSlyZXR1cm4gdz0xNCwyO2lmKDAhPT0oNCZhKSlyZXR1cm4gdz0xMyw0O3ZhciBiPTI0JmE7aWYoMCE9PWIpcmV0dXJuIHc9MTIsYjsNCmlmKDAhPT0oYSYzMikpcmV0dXJuIHc9MTEsMzI7Yj0xOTImYTtpZigwIT09YilyZXR1cm4gdz0xMCxiO2lmKDAhPT0oYSYyNTYpKXJldHVybiB3PTksMjU2O2I9MzU4NCZhO2lmKDAhPT1iKXJldHVybiB3PTgsYjtpZigwIT09KGEmNDA5NikpcmV0dXJuIHc9Nyw0MDk2O2I9NDE4NjExMiZhO2lmKDAhPT1iKXJldHVybiB3PTYsYjtiPTYyOTE0NTYwJmE7aWYoMCE9PWIpcmV0dXJuIHc9NSxiO2lmKGEmNjcxMDg4NjQpcmV0dXJuIHc9NCw2NzEwODg2NDtpZigwIT09KGEmMTM0MjE3NzI4KSlyZXR1cm4gdz0zLDEzNDIxNzcyODtiPTgwNTMwNjM2OCZhO2lmKDAhPT1iKXJldHVybiB3PTIsYjtpZigwIT09KDEwNzM3NDE4MjQmYSkpcmV0dXJuIHc9MSwxMDczNzQxODI0O3c9ODtyZXR1cm4gYX1mdW5jdGlvbiBFaShhKXtzd2l0Y2goYSl7Y2FzZSA5OTpyZXR1cm4gMTU7Y2FzZSA5ODpyZXR1cm4gMTA7Y2FzZSA5NzpjYXNlIDk2OnJldHVybiA4O2Nhc2UgOTU6cmV0dXJuIDI7ZGVmYXVsdDpyZXR1cm4gMH19DQpmdW5jdGlvbiBGaShhKXtzd2l0Y2goYSl7Y2FzZSAxNTpjYXNlIDE0OnJldHVybiA5OTtjYXNlIDEzOmNhc2UgMTI6Y2FzZSAxMTpjYXNlIDEwOnJldHVybiA5ODtjYXNlIDk6Y2FzZSA4OmNhc2UgNzpjYXNlIDY6Y2FzZSA0OmNhc2UgNTpyZXR1cm4gOTc7Y2FzZSAzOmNhc2UgMjpjYXNlIDE6cmV0dXJuIDk1O2Nhc2UgMDpyZXR1cm4gOTA7ZGVmYXVsdDp0aHJvdyBFcnJvcihtKDM1OCxhKSk7fX1mdW5jdGlvbiBXYihhLGIpe3ZhciBjPWEucGVuZGluZ0xhbmVzO2lmKDA9PT1jKXJldHVybiB3PTA7dmFyIGQ9MCxlPTAsZj1hLmV4cGlyZWRMYW5lcyxnPWEuc3VzcGVuZGVkTGFuZXMsaD1hLnBpbmdlZExhbmVzO2lmKDAhPT1mKWQ9ZixlPXc9MTU7ZWxzZSBpZihmPWMmMTM0MjE3NzI3LDAhPT1mKXt2YXIgaz1mJn5nOzAhPT1rPyhkPW1iKGspLGU9dyk6KGgmPWYsMCE9PWgmJihkPW1iKGgpLGU9dykpfWVsc2UgZj1jJn5nLDAhPT1mPyhkPW1iKGYpLGU9dyk6MCE9PWgmJihkPW1iKGgpLA0KZT13KTtpZigwPT09ZClyZXR1cm4gMDtkPTMxLUJhKGQpO2Q9YyYoKDA+ZD8wOjE8PGQpPDwxKS0xO2lmKDAhPT1iJiZiIT09ZCYmMD09PShiJmcpKXttYihiKTtpZihlPD13KXJldHVybiBiO3c9ZX1iPWEuZW50YW5nbGVkTGFuZXM7aWYoMCE9PWIpZm9yKGE9YS5lbnRhbmdsZW1lbnRzLGImPWQ7MDxiOyljPTMxLUJhKGIpLGU9MTw8YyxkfD1hW2NdLGImPX5lO3JldHVybiBkfWZ1bmN0aW9uIGRnKGEpe2E9YS5wZW5kaW5nTGFuZXMmLTEwNzM3NDE4MjU7cmV0dXJuIDAhPT1hP2E6YSYxMDczNzQxODI0PzEwNzM3NDE4MjQ6MH1mdW5jdGlvbiBOYyhhLGIpe3N3aXRjaChhKXtjYXNlIDE1OnJldHVybiAxO2Nhc2UgMTQ6cmV0dXJuIDI7Y2FzZSAxMjpyZXR1cm4gYT1uYigyNCZ+YiksMD09PWE\/TmMoMTAsYik6YTtjYXNlIDEwOnJldHVybiBhPW5iKDE5MiZ+YiksMD09PWE\/TmMoOCxiKTphO2Nhc2UgODpyZXR1cm4gYT1uYigzNTg0Jn5iKSwwPT09YSYmKGE9bmIoNDE4NjExMiZ+YiksDQowPT09YSYmKGE9NTEyKSksYTtjYXNlIDI6cmV0dXJuIGI9bmIoODA1MzA2MzY4Jn5iKSwwPT09YiYmKGI9MjY4NDM1NDU2KSxifXRocm93IEVycm9yKG0oMzU4LGEpKTt9ZnVuY3Rpb24gbmIoYSl7cmV0dXJuIGEmLWF9ZnVuY3Rpb24gT2MoYSxiLGMpe2EucGVuZGluZ0xhbmVzfD1iO3ZhciBkPWItMTthLnN1c3BlbmRlZExhbmVzJj1kO2EucGluZ2VkTGFuZXMmPWQ7YT1hLmV2ZW50VGltZXM7Yj0zMS1CYShiKTthW2JdPWN9ZnVuY3Rpb24gR2koYSl7cmV0dXJuIDA9PT1hPzMyOjMxLShIaShhKS9JaXwwKXwwfWZ1bmN0aW9uIEppKGEsYixjLGQpe1hhfHxYZCgpO3ZhciBlPWdlLGY9WGE7WGE9ITA7dHJ5e2VnKGUsYSxiLGMsZCl9ZmluYWxseXsoWGE9Zil8fFdkKCl9fWZ1bmN0aW9uIEtpKGEsYixjLGQpe0xpKE1pLGdlLmJpbmQobnVsbCxhLGIsYyxkKSl9ZnVuY3Rpb24gZ2UoYSxiLGMsZCl7aWYoUGMpe3ZhciBlO2lmKChlPTA9PT0oYiY0KSkmJjA8aWEubGVuZ3RoJiYtMTxmZy5pbmRleE9mKGEpKWE9DQokZChudWxsLGEsYixjLGQpLGlhLnB1c2goYSk7ZWxzZXt2YXIgZj1iZShhLGIsYyxkKTtpZihudWxsPT09ZillJiZXZihhLGQpO2Vsc2V7aWYoZSl7aWYoLTE8ZmcuaW5kZXhPZihhKSl7YT0kZChmLGEsYixjLGQpO2lhLnB1c2goYSk7cmV0dXJufWlmKHlpKGYsYSxiLGMsZCkpcmV0dXJuO1dmKGEsZCl9Z2coYSxiLGQsbnVsbCxjKX19fX1mdW5jdGlvbiBiZShhLGIsYyxkKXt2YXIgZT1VZChkKTtlPVdhKGUpO2lmKG51bGwhPT1lKXt2YXIgZj1WYShlKTtpZihudWxsPT09ZillPW51bGw7ZWxzZXt2YXIgZz1mLnRhZztpZigxMz09PWcpe2U9U2YoZik7aWYobnVsbCE9PWUpcmV0dXJuIGU7ZT1udWxsfWVsc2UgaWYoMz09PWcpe2lmKGYuc3RhdGVOb2RlLmh5ZHJhdGUpcmV0dXJuIDM9PT1mLnRhZz9mLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOm51bGw7ZT1udWxsfWVsc2UgZiE9PWUmJihlPW51bGwpfX1nZyhhLGIsZCxlLGMpO3JldHVybiBudWxsfWZ1bmN0aW9uIGhnKCl7aWYoUWMpcmV0dXJuIFFjOw0KdmFyIGEsYj1oZSxjPWIubGVuZ3RoLGQsZT0idmFsdWUiaW4gQ2E\/Q2EudmFsdWU6Q2EudGV4dENvbnRlbnQsZj1lLmxlbmd0aDtmb3IoYT0wO2E8YyYmYlthXT09PWVbYV07YSsrKTt2YXIgZz1jLWE7Zm9yKGQ9MTtkPD1nJiZiW2MtZF09PT1lW2YtZF07ZCsrKTtyZXR1cm4gUWM9ZS5zbGljZShhLDE8ZD8xLWQ6dm9pZCAwKX1mdW5jdGlvbiBSYyhhKXt2YXIgYj1hLmtleUNvZGU7ImNoYXJDb2RlImluIGE\/KGE9YS5jaGFyQ29kZSwwPT09YSYmMTM9PT1iJiYoYT0xMykpOmE9YjsxMD09PWEmJihhPTEzKTtyZXR1cm4gMzI8PWF8fDEzPT09YT9hOjB9ZnVuY3Rpb24gU2MoKXtyZXR1cm4hMH1mdW5jdGlvbiBpZygpe3JldHVybiExfWZ1bmN0aW9uIFYoYSl7ZnVuY3Rpb24gYihiLGQsZSxmLGcpe3RoaXMuX3JlYWN0TmFtZT1iO3RoaXMuX3RhcmdldEluc3Q9ZTt0aGlzLnR5cGU9ZDt0aGlzLm5hdGl2ZUV2ZW50PWY7dGhpcy50YXJnZXQ9Zzt0aGlzLmN1cnJlbnRUYXJnZXQ9bnVsbDtmb3IodmFyIGMgaW4gYSlhLmhhc093blByb3BlcnR5KGMpJiYNCihiPWFbY10sdGhpc1tjXT1iP2IoZik6ZltjXSk7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9KG51bGwhPWYuZGVmYXVsdFByZXZlbnRlZD9mLmRlZmF1bHRQcmV2ZW50ZWQ6ITE9PT1mLnJldHVyblZhbHVlKT9TYzppZzt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPWlnO3JldHVybiB0aGlzfUIoYi5wcm90b3R5cGUse3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwO3ZhciBhPXRoaXMubmF0aXZlRXZlbnQ7YSYmKGEucHJldmVudERlZmF1bHQ\/YS5wcmV2ZW50RGVmYXVsdCgpOiJ1bmtub3duIiE9PXR5cGVvZiBhLnJldHVyblZhbHVlJiYoYS5yZXR1cm5WYWx1ZT0hMSksdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9U2MpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm5hdGl2ZUV2ZW50O2EmJihhLnN0b3BQcm9wYWdhdGlvbj9hLnN0b3BQcm9wYWdhdGlvbigpOiJ1bmtub3duIiE9PXR5cGVvZiBhLmNhbmNlbEJ1YmJsZSYmDQooYS5jYW5jZWxCdWJibGU9ITApLHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9U2MpfSxwZXJzaXN0OmZ1bmN0aW9uKCl7fSxpc1BlcnNpc3RlbnQ6U2N9KTtyZXR1cm4gYn1mdW5jdGlvbiBOaShhKXt2YXIgYj10aGlzLm5hdGl2ZUV2ZW50O3JldHVybiBiLmdldE1vZGlmaWVyU3RhdGU\/Yi5nZXRNb2RpZmllclN0YXRlKGEpOihhPU9pW2FdKT8hIWJbYV06ITF9ZnVuY3Rpb24gaWUoYSl7cmV0dXJuIE5pfWZ1bmN0aW9uIGpnKGEsYil7c3dpdGNoKGEpe2Nhc2UgImtleXVwIjpyZXR1cm4tMSE9PVBpLmluZGV4T2YoYi5rZXlDb2RlKTtjYXNlICJrZXlkb3duIjpyZXR1cm4gMjI5IT09Yi5rZXlDb2RlO2Nhc2UgImtleXByZXNzIjpjYXNlICJtb3VzZWRvd24iOmNhc2UgImZvY3Vzb3V0IjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBrZyhhKXthPWEuZGV0YWlsO3JldHVybiJvYmplY3QiPT09dHlwZW9mIGEmJiJkYXRhImluIGE\/YS5kYXRhOm51bGx9ZnVuY3Rpb24gUWkoYSwNCmIpe3N3aXRjaChhKXtjYXNlICJjb21wb3NpdGlvbmVuZCI6cmV0dXJuIGtnKGIpO2Nhc2UgImtleXByZXNzIjppZigzMiE9PWIud2hpY2gpcmV0dXJuIG51bGw7bGc9ITA7cmV0dXJuIG1nO2Nhc2UgInRleHRJbnB1dCI6cmV0dXJuIGE9Yi5kYXRhLGE9PT1tZyYmbGc\/bnVsbDphO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWZ1bmN0aW9uIFJpKGEsYil7aWYob2IpcmV0dXJuImNvbXBvc2l0aW9uZW5kIj09PWF8fCFqZSYmamcoYSxiKT8oYT1oZygpLFFjPWhlPUNhPW51bGwsb2I9ITEsYSk6bnVsbDtzd2l0Y2goYSl7Y2FzZSAicGFzdGUiOnJldHVybiBudWxsO2Nhc2UgImtleXByZXNzIjppZighKGIuY3RybEtleXx8Yi5hbHRLZXl8fGIubWV0YUtleSl8fGIuY3RybEtleSYmYi5hbHRLZXkpe2lmKGIuY2hhciYmMTxiLmNoYXIubGVuZ3RoKXJldHVybiBiLmNoYXI7aWYoYi53aGljaClyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShiLndoaWNoKX1yZXR1cm4gbnVsbDtjYXNlICJjb21wb3NpdGlvbmVuZCI6cmV0dXJuIG5nJiYNCiJrbyIhPT1iLmxvY2FsZT9udWxsOmIuZGF0YTtkZWZhdWx0OnJldHVybiBudWxsfX1mdW5jdGlvbiBvZyhhKXt2YXIgYj1hJiZhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWI\/ISFTaVthLnR5cGVdOiJ0ZXh0YXJlYSI9PT1iPyEwOiExfWZ1bmN0aW9uIFRpKGEpe2lmKCFvYSlyZXR1cm4hMTthPSJvbiIrYTt2YXIgYj1hIGluIGRvY3VtZW50O2J8fChiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGIuc2V0QXR0cmlidXRlKGEsInJldHVybjsiKSxiPSJmdW5jdGlvbiI9PT10eXBlb2YgYlthXSk7cmV0dXJuIGJ9ZnVuY3Rpb24gcGcoYSxiLGMsZCl7UGYoZCk7Yj1UYyhiLCJvbkNoYW5nZSIpOzA8Yi5sZW5ndGgmJihjPW5ldyBrZSgib25DaGFuZ2UiLCJjaGFuZ2UiLG51bGwsYyxkKSxhLnB1c2goe2V2ZW50OmMsbGlzdGVuZXJzOmJ9KSl9ZnVuY3Rpb24gVWkoYSl7cWcoYSwwKX1mdW5jdGlvbiBVYyhhKXt2YXIgYj1wYihhKTsNCmlmKEVmKGIpKXJldHVybiBhfWZ1bmN0aW9uIFZpKGEsYil7aWYoImNoYW5nZSI9PT1hKXJldHVybiBifWZ1bmN0aW9uIHJnKCl7WGImJihYYi5kZXRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsc2cpLFliPVhiPW51bGwpfWZ1bmN0aW9uIHNnKGEpe2lmKCJ2YWx1ZSI9PT1hLnByb3BlcnR5TmFtZSYmVWMoWWIpKXt2YXIgYj1bXTtwZyhiLFliLGEsVWQoYSkpO2E9VWk7aWYoWGEpYShiKTtlbHNle1hhPSEwO3RyeXtsZShhLGIpfWZpbmFsbHl7WGE9ITEsV2QoKX19fX1mdW5jdGlvbiBXaShhLGIsYyl7ImZvY3VzaW4iPT09YT8ocmcoKSxYYj1iLFliPWMsWGIuYXR0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLHNnKSk6ImZvY3Vzb3V0Ij09PWEmJnJnKCl9ZnVuY3Rpb24gWGkoYSxiKXtpZigic2VsZWN0aW9uY2hhbmdlIj09PWF8fCJrZXl1cCI9PT1hfHwia2V5ZG93biI9PT1hKXJldHVybiBVYyhZYil9ZnVuY3Rpb24gWWkoYSxiKXtpZigiY2xpY2siPT09YSlyZXR1cm4gVWMoYil9DQpmdW5jdGlvbiBaaShhLGIpe2lmKCJpbnB1dCI9PT1hfHwiY2hhbmdlIj09PWEpcmV0dXJuIFVjKGIpfWZ1bmN0aW9uICRpKGEsYil7cmV0dXJuIGE9PT1iJiYoMCE9PWF8fDEvYT09PTEvYil8fGEhPT1hJiZiIT09Yn1mdW5jdGlvbiBaYihhLGIpe2lmKFgoYSxiKSlyZXR1cm4hMDtpZigib2JqZWN0IiE9PXR5cGVvZiBhfHxudWxsPT09YXx8Im9iamVjdCIhPT10eXBlb2YgYnx8bnVsbD09PWIpcmV0dXJuITE7dmFyIGM9T2JqZWN0LmtleXMoYSksZD1PYmplY3Qua2V5cyhiKTtpZihjLmxlbmd0aCE9PWQubGVuZ3RoKXJldHVybiExO2ZvcihkPTA7ZDxjLmxlbmd0aDtkKyspaWYoIWFqLmNhbGwoYixjW2RdKXx8IVgoYVtjW2RdXSxiW2NbZF1dKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiB0ZyhhKXtmb3IoO2EmJmEuZmlyc3RDaGlsZDspYT1hLmZpcnN0Q2hpbGQ7cmV0dXJuIGF9ZnVuY3Rpb24gdWcoYSxiKXt2YXIgYz10ZyhhKTthPTA7Zm9yKHZhciBkO2M7KXtpZigzPT09Yy5ub2RlVHlwZSl7ZD0NCmErYy50ZXh0Q29udGVudC5sZW5ndGg7aWYoYTw9YiYmZD49YilyZXR1cm57bm9kZTpjLG9mZnNldDpiLWF9O2E9ZH1hOntmb3IoO2M7KXtpZihjLm5leHRTaWJsaW5nKXtjPWMubmV4dFNpYmxpbmc7YnJlYWsgYX1jPWMucGFyZW50Tm9kZX1jPXZvaWQgMH1jPXRnKGMpfX1mdW5jdGlvbiB2ZyhhLGIpe3JldHVybiBhJiZiP2E9PT1iPyEwOmEmJjM9PT1hLm5vZGVUeXBlPyExOmImJjM9PT1iLm5vZGVUeXBlP3ZnKGEsYi5wYXJlbnROb2RlKToiY29udGFpbnMiaW4gYT9hLmNvbnRhaW5zKGIpOmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24\/ISEoYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSYxNik6ITE6ITF9ZnVuY3Rpb24gd2coKXtmb3IodmFyIGE9d2luZG93LGI9R2MoKTtiIGluc3RhbmNlb2YgYS5IVE1MSUZyYW1lRWxlbWVudDspe3RyeXt2YXIgYz0ic3RyaW5nIj09PXR5cGVvZiBiLmNvbnRlbnRXaW5kb3cubG9jYXRpb24uaHJlZn1jYXRjaChkKXtjPSExfWlmKGMpYT1iLmNvbnRlbnRXaW5kb3c7DQplbHNlIGJyZWFrO2I9R2MoYS5kb2N1bWVudCl9cmV0dXJuIGJ9ZnVuY3Rpb24gbWUoYSl7dmFyIGI9YSYmYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiBiJiYoImlucHV0Ij09PWImJigidGV4dCI9PT1hLnR5cGV8fCJzZWFyY2giPT09YS50eXBlfHwidGVsIj09PWEudHlwZXx8InVybCI9PT1hLnR5cGV8fCJwYXNzd29yZCI9PT1hLnR5cGUpfHwidGV4dGFyZWEiPT09Ynx8InRydWUiPT09YS5jb250ZW50RWRpdGFibGUpfWZ1bmN0aW9uIHhnKGEsYixjKXt2YXIgZD1jLndpbmRvdz09PWM\/Yy5kb2N1bWVudDo5PT09Yy5ub2RlVHlwZT9jOmMub3duZXJEb2N1bWVudDtuZXx8bnVsbD09cWJ8fHFiIT09R2MoZCl8fChkPXFiLCJzZWxlY3Rpb25TdGFydCJpbiBkJiZtZShkKT9kPXtzdGFydDpkLnNlbGVjdGlvblN0YXJ0LGVuZDpkLnNlbGVjdGlvbkVuZH06KGQ9KGQub3duZXJEb2N1bWVudCYmZC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3cpLmdldFNlbGVjdGlvbigpLA0KZD17YW5jaG9yTm9kZTpkLmFuY2hvck5vZGUsYW5jaG9yT2Zmc2V0OmQuYW5jaG9yT2Zmc2V0LGZvY3VzTm9kZTpkLmZvY3VzTm9kZSxmb2N1c09mZnNldDpkLmZvY3VzT2Zmc2V0fSksJGImJlpiKCRiLGQpfHwoJGI9ZCxkPVRjKG9lLCJvblNlbGVjdCIpLDA8ZC5sZW5ndGgmJihiPW5ldyBrZSgib25TZWxlY3QiLCJzZWxlY3QiLG51bGwsYixjKSxhLnB1c2goe2V2ZW50OmIsbGlzdGVuZXJzOmR9KSxiLnRhcmdldD1xYikpKX1mdW5jdGlvbiB5ZyhhLGIsYyl7dmFyIGQ9YS50eXBlfHwidW5rbm93bi1ldmVudCI7YS5jdXJyZW50VGFyZ2V0PWM7d2koZCxiLHZvaWQgMCxhKTthLmN1cnJlbnRUYXJnZXQ9bnVsbH1mdW5jdGlvbiBxZyhhLGIpe2I9MCE9PShiJjQpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hW2NdLGU9ZC5ldmVudDtkPWQubGlzdGVuZXJzO2E6e3ZhciBmPXZvaWQgMDtpZihiKWZvcih2YXIgZz1kLmxlbmd0aC0xOzA8PWc7Zy0tKXt2YXIgaD1kW2ddLA0Kaz1oLmluc3RhbmNlLHY9aC5jdXJyZW50VGFyZ2V0O2g9aC5saXN0ZW5lcjtpZihrIT09ZiYmZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrIGE7eWcoZSxoLHYpO2Y9a31lbHNlIGZvcihnPTA7ZzxkLmxlbmd0aDtnKyspe2g9ZFtnXTtrPWguaW5zdGFuY2U7dj1oLmN1cnJlbnRUYXJnZXQ7aD1oLmxpc3RlbmVyO2lmKGshPT1mJiZlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYnJlYWsgYTt5ZyhlLGgsdik7Zj1rfX19aWYoSmMpdGhyb3cgYT1aZCxKYz0hMSxaZD1udWxsLGE7fWZ1bmN0aW9uIHooYSxiKXt2YXIgYz16ZyhiKSxkPWErIl9fYnViYmxlIjtjLmhhcyhkKXx8KEFnKGIsYSwyLCExKSxjLmFkZChkKSl9ZnVuY3Rpb24gQmcoYSl7YVtDZ118fChhW0NnXT0hMCx5Zi5mb3JFYWNoKGZ1bmN0aW9uKGIpe0RnLmhhcyhiKXx8RWcoYiwhMSxhLG51bGwpO0VnKGIsITAsYSxudWxsKX0pKX1mdW5jdGlvbiBFZyhhLGIsYyxkKXt2YXIgZT00PGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PQ0KYXJndW1lbnRzWzRdP2FyZ3VtZW50c1s0XTowLGY9Yzsic2VsZWN0aW9uY2hhbmdlIj09PWEmJjkhPT1jLm5vZGVUeXBlJiYoZj1jLm93bmVyRG9jdW1lbnQpO2lmKG51bGwhPT1kJiYhYiYmRGcuaGFzKGEpKXtpZigic2Nyb2xsIiE9PWEpcmV0dXJuO2V8PTI7Zj1kfXZhciBnPXpnKGYpLGg9YSsiX18iKyhiPyJjYXB0dXJlIjoiYnViYmxlIik7Zy5oYXMoaCl8fChiJiYoZXw9NCksQWcoZixhLGUsYiksZy5hZGQoaCkpfWZ1bmN0aW9uIEFnKGEsYixjLGQsZSl7ZT1mZS5nZXQoYik7c3dpdGNoKHZvaWQgMD09PWU\/MjplKXtjYXNlIDA6ZT1KaTticmVhaztjYXNlIDE6ZT1LaTticmVhaztkZWZhdWx0OmU9Z2V9Yz1lLmJpbmQobnVsbCxiLGMsYSk7ZT12b2lkIDA7IXBlfHwidG91Y2hzdGFydCIhPT1iJiYidG91Y2htb3ZlIiE9PWImJiJ3aGVlbCIhPT1ifHwoZT0hMCk7ZD92b2lkIDAhPT1lP2EuYWRkRXZlbnRMaXN0ZW5lcihiLGMse2NhcHR1cmU6ITAscGFzc2l2ZTplfSk6YS5hZGRFdmVudExpc3RlbmVyKGIsDQpjLCEwKTp2b2lkIDAhPT1lP2EuYWRkRXZlbnRMaXN0ZW5lcihiLGMse3Bhc3NpdmU6ZX0pOmEuYWRkRXZlbnRMaXN0ZW5lcihiLGMsITEpfWZ1bmN0aW9uIGdnKGEsYixjLGQsZSl7dmFyIGY9ZDtpZigwPT09KGImMSkmJjA9PT0oYiYyKSYmbnVsbCE9PWQpYTpmb3IoOzspe2lmKG51bGw9PT1kKXJldHVybjt2YXIgZz1kLnRhZztpZigzPT09Z3x8ND09PWcpe3ZhciBoPWQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87aWYoaD09PWV8fDg9PT1oLm5vZGVUeXBlJiZoLnBhcmVudE5vZGU9PT1lKWJyZWFrO2lmKDQ9PT1nKWZvcihnPWQucmV0dXJuO251bGwhPT1nOyl7dmFyIGs9Zy50YWc7aWYoMz09PWt8fDQ9PT1rKWlmKGs9Zy5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyxrPT09ZXx8OD09PWsubm9kZVR5cGUmJmsucGFyZW50Tm9kZT09PWUpcmV0dXJuO2c9Zy5yZXR1cm59Zm9yKDtudWxsIT09aDspe2c9V2EoaCk7aWYobnVsbD09PWcpcmV0dXJuO2s9Zy50YWc7aWYoNT09PWt8fDY9PT0NCmspe2Q9Zj1nO2NvbnRpbnVlIGF9aD1oLnBhcmVudE5vZGV9fWQ9ZC5yZXR1cm59c2koZnVuY3Rpb24oKXt2YXIgZD1mLGU9VWQoYyksZz1bXTthOnt2YXIgaD1jZy5nZXQoYSk7aWYodm9pZCAwIT09aCl7dmFyIGs9a2UsbT1hO3N3aXRjaChhKXtjYXNlICJrZXlwcmVzcyI6aWYoMD09PVJjKGMpKWJyZWFrIGE7Y2FzZSAia2V5ZG93biI6Y2FzZSAia2V5dXAiOms9Ymo7YnJlYWs7Y2FzZSAiZm9jdXNpbiI6bT0iZm9jdXMiO2s9cWU7YnJlYWs7Y2FzZSAiZm9jdXNvdXQiOm09ImJsdXIiO2s9cWU7YnJlYWs7Y2FzZSAiYmVmb3JlYmx1ciI6Y2FzZSAiYWZ0ZXJibHVyIjprPXFlO2JyZWFrO2Nhc2UgImNsaWNrIjppZigyPT09Yy5idXR0b24pYnJlYWsgYTtjYXNlICJhdXhjbGljayI6Y2FzZSAiZGJsY2xpY2siOmNhc2UgIm1vdXNlZG93biI6Y2FzZSAibW91c2Vtb3ZlIjpjYXNlICJtb3VzZXVwIjpjYXNlICJtb3VzZW91dCI6Y2FzZSAibW91c2VvdmVyIjpjYXNlICJjb250ZXh0bWVudSI6az0NCkZnO2JyZWFrO2Nhc2UgImRyYWciOmNhc2UgImRyYWdlbmQiOmNhc2UgImRyYWdlbnRlciI6Y2FzZSAiZHJhZ2V4aXQiOmNhc2UgImRyYWdsZWF2ZSI6Y2FzZSAiZHJhZ292ZXIiOmNhc2UgImRyYWdzdGFydCI6Y2FzZSAiZHJvcCI6az1jajticmVhaztjYXNlICJ0b3VjaGNhbmNlbCI6Y2FzZSAidG91Y2hlbmQiOmNhc2UgInRvdWNobW92ZSI6Y2FzZSAidG91Y2hzdGFydCI6az1kajticmVhaztjYXNlIEdnOmNhc2UgSGc6Y2FzZSBJZzprPWVqO2JyZWFrO2Nhc2UgSmc6az1majticmVhaztjYXNlICJzY3JvbGwiOms9Z2o7YnJlYWs7Y2FzZSAid2hlZWwiOms9aGo7YnJlYWs7Y2FzZSAiY29weSI6Y2FzZSAiY3V0IjpjYXNlICJwYXN0ZSI6az1pajticmVhaztjYXNlICJnb3Rwb2ludGVyY2FwdHVyZSI6Y2FzZSAibG9zdHBvaW50ZXJjYXB0dXJlIjpjYXNlICJwb2ludGVyY2FuY2VsIjpjYXNlICJwb2ludGVyZG93biI6Y2FzZSAicG9pbnRlcm1vdmUiOmNhc2UgInBvaW50ZXJvdXQiOmNhc2UgInBvaW50ZXJvdmVyIjpjYXNlICJwb2ludGVydXAiOms9DQpLZ312YXIgbD0wIT09KGImNCksQz0hbCYmInNjcm9sbCI9PT1hLHg9bD9udWxsIT09aD9oKyJDYXB0dXJlIjpudWxsOmg7bD1bXTtmb3IodmFyIHA9ZCxxO251bGwhPT1wOyl7cT1wO3ZhciB1PXEuc3RhdGVOb2RlOzU9PT1xLnRhZyYmbnVsbCE9PXUmJihxPXUsbnVsbCE9PXgmJih1PVBiKHAseCksbnVsbCE9dSYmbC5wdXNoKGFjKHAsdSxxKSkpKTtpZihDKWJyZWFrO3A9cC5yZXR1cm59MDxsLmxlbmd0aCYmKGg9bmV3IGsoaCxtLG51bGwsYyxlKSxnLnB1c2goe2V2ZW50OmgsbGlzdGVuZXJzOmx9KSl9fWlmKDA9PT0oYiY3KSl7YTp7aD0ibW91c2VvdmVyIj09PWF8fCJwb2ludGVyb3ZlciI9PT1hO2s9Im1vdXNlb3V0Ij09PWF8fCJwb2ludGVyb3V0Ij09PWE7aWYoaCYmMD09PShiJjE2KSYmKG09Yy5yZWxhdGVkVGFyZ2V0fHxjLmZyb21FbGVtZW50KSYmKFdhKG0pfHxtW3JiXSkpYnJlYWsgYTtpZihrfHxoKXtoPWUud2luZG93PT09ZT9lOihoPWUub3duZXJEb2N1bWVudCk\/aC5kZWZhdWx0Vmlld3x8DQpoLnBhcmVudFdpbmRvdzp3aW5kb3c7aWYoayl7aWYobT1jLnJlbGF0ZWRUYXJnZXR8fGMudG9FbGVtZW50LGs9ZCxtPW0\/V2EobSk6bnVsbCxudWxsIT09bSYmKEM9VmEobSksbSE9PUN8fDUhPT1tLnRhZyYmNiE9PW0udGFnKSltPW51bGx9ZWxzZSBrPW51bGwsbT1kO2lmKGshPT1tKXtsPUZnO3U9Im9uTW91c2VMZWF2ZSI7eD0ib25Nb3VzZUVudGVyIjtwPSJtb3VzZSI7aWYoInBvaW50ZXJvdXQiPT09YXx8InBvaW50ZXJvdmVyIj09PWEpbD1LZyx1PSJvblBvaW50ZXJMZWF2ZSIseD0ib25Qb2ludGVyRW50ZXIiLHA9InBvaW50ZXIiO0M9bnVsbD09az9oOnBiKGspO3E9bnVsbD09bT9oOnBiKG0pO2g9bmV3IGwodSxwKyJsZWF2ZSIsayxjLGUpO2gudGFyZ2V0PUM7aC5yZWxhdGVkVGFyZ2V0PXE7dT1udWxsO1dhKGUpPT09ZCYmKGw9bmV3IGwoeCxwKyJlbnRlciIsbSxjLGUpLGwudGFyZ2V0PXEsbC5yZWxhdGVkVGFyZ2V0PUMsdT1sKTtDPXU7aWYoayYmbSliOntsPWs7eD1tO3A9DQowO2ZvcihxPWw7cTtxPXNiKHEpKXArKztxPTA7Zm9yKHU9eDt1O3U9c2IodSkpcSsrO2Zvcig7MDxwLXE7KWw9c2IobCkscC0tO2Zvcig7MDxxLXA7KXg9c2IoeCkscS0tO2Zvcig7cC0tOyl7aWYobD09PXh8fG51bGwhPT14JiZsPT09eC5hbHRlcm5hdGUpYnJlYWsgYjtsPXNiKGwpO3g9c2IoeCl9bD1udWxsfWVsc2UgbD1udWxsO251bGwhPT1rJiZMZyhnLGgsayxsLCExKTtudWxsIT09bSYmbnVsbCE9PUMmJkxnKGcsQyxtLGwsITApfX19YTp7aD1kP3BiKGQpOndpbmRvdztrPWgubm9kZU5hbWUmJmgubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZigic2VsZWN0Ij09PWt8fCJpbnB1dCI9PT1rJiYiZmlsZSI9PT1oLnR5cGUpdmFyIG49Vmk7ZWxzZSBpZihvZyhoKSlpZihNZyluPVppO2Vsc2V7bj1YaTt2YXIgZGE9V2l9ZWxzZShrPWgubm9kZU5hbWUpJiYiaW5wdXQiPT09ay50b0xvd2VyQ2FzZSgpJiYoImNoZWNrYm94Ij09PWgudHlwZXx8InJhZGlvIj09PWgudHlwZSkmJihuPVlpKTsNCmlmKG4mJihuPW4oYSxkKSkpe3BnKGcsbixjLGUpO2JyZWFrIGF9ZGEmJmRhKGEsaCxkKTsiZm9jdXNvdXQiPT09YSYmKGRhPWguX3dyYXBwZXJTdGF0ZSkmJmRhLmNvbnRyb2xsZWQmJiJudW1iZXIiPT09aC50eXBlJiZPZChoLCJudW1iZXIiLGgudmFsdWUpfWRhPWQ\/cGIoZCk6d2luZG93O3N3aXRjaChhKXtjYXNlICJmb2N1c2luIjppZihvZyhkYSl8fCJ0cnVlIj09PWRhLmNvbnRlbnRFZGl0YWJsZSlxYj1kYSxvZT1kLCRiPW51bGw7YnJlYWs7Y2FzZSAiZm9jdXNvdXQiOiRiPW9lPXFiPW51bGw7YnJlYWs7Y2FzZSAibW91c2Vkb3duIjpuZT0hMDticmVhaztjYXNlICJjb250ZXh0bWVudSI6Y2FzZSAibW91c2V1cCI6Y2FzZSAiZHJhZ2VuZCI6bmU9ITE7eGcoZyxjLGUpO2JyZWFrO2Nhc2UgInNlbGVjdGlvbmNoYW5nZSI6aWYoamopYnJlYWs7Y2FzZSAia2V5ZG93biI6Y2FzZSAia2V5dXAiOnhnKGcsYyxlKX12YXIgRWE7aWYoamUpYjp7c3dpdGNoKGEpe2Nhc2UgImNvbXBvc2l0aW9uc3RhcnQiOnZhciBGPQ0KIm9uQ29tcG9zaXRpb25TdGFydCI7YnJlYWsgYjtjYXNlICJjb21wb3NpdGlvbmVuZCI6Rj0ib25Db21wb3NpdGlvbkVuZCI7YnJlYWsgYjtjYXNlICJjb21wb3NpdGlvbnVwZGF0ZSI6Rj0ib25Db21wb3NpdGlvblVwZGF0ZSI7YnJlYWsgYn1GPXZvaWQgMH1lbHNlIG9iP2pnKGEsYykmJihGPSJvbkNvbXBvc2l0aW9uRW5kIik6ImtleWRvd24iPT09YSYmMjI5PT09Yy5rZXlDb2RlJiYoRj0ib25Db21wb3NpdGlvblN0YXJ0Iik7RiYmKG5nJiYia28iIT09Yy5sb2NhbGUmJihvYnx8Im9uQ29tcG9zaXRpb25TdGFydCIhPT1GPyJvbkNvbXBvc2l0aW9uRW5kIj09PUYmJm9iJiYoRWE9aGcoKSk6KENhPWUsaGU9InZhbHVlImluIENhP0NhLnZhbHVlOkNhLnRleHRDb250ZW50LG9iPSEwKSksZGE9VGMoZCxGKSwwPGRhLmxlbmd0aCYmKEY9bmV3IE5nKEYsYSxudWxsLGMsZSksZy5wdXNoKHtldmVudDpGLGxpc3RlbmVyczpkYX0pLEVhP0YuZGF0YT1FYTooRWE9a2coYyksbnVsbCE9PUVhJiYNCihGLmRhdGE9RWEpKSkpO2lmKEVhPWtqP1FpKGEsYyk6UmkoYSxjKSlkPVRjKGQsIm9uQmVmb3JlSW5wdXQiKSwwPGQubGVuZ3RoJiYoZT1uZXcgbGooIm9uQmVmb3JlSW5wdXQiLCJiZWZvcmVpbnB1dCIsbnVsbCxjLGUpLGcucHVzaCh7ZXZlbnQ6ZSxsaXN0ZW5lcnM6ZH0pLGUuZGF0YT1FYSl9cWcoZyxiKX0pfWZ1bmN0aW9uIGFjKGEsYixjKXtyZXR1cm57aW5zdGFuY2U6YSxsaXN0ZW5lcjpiLGN1cnJlbnRUYXJnZXQ6Y319ZnVuY3Rpb24gVGMoYSxiKXtmb3IodmFyIGM9YisiQ2FwdHVyZSIsZD1bXTtudWxsIT09YTspe3ZhciBlPWEsZj1lLnN0YXRlTm9kZTs1PT09ZS50YWcmJm51bGwhPT1mJiYoZT1mLGY9UGIoYSxjKSxudWxsIT1mJiZkLnVuc2hpZnQoYWMoYSxmLGUpKSxmPVBiKGEsYiksbnVsbCE9ZiYmZC5wdXNoKGFjKGEsZixlKSkpO2E9YS5yZXR1cm59cmV0dXJuIGR9ZnVuY3Rpb24gc2IoYSl7aWYobnVsbD09PWEpcmV0dXJuIG51bGw7ZG8gYT1hLnJldHVybjt3aGlsZShhJiYNCjUhPT1hLnRhZyk7cmV0dXJuIGE\/YTpudWxsfWZ1bmN0aW9uIExnKGEsYixjLGQsZSl7Zm9yKHZhciBmPWIuX3JlYWN0TmFtZSxnPVtdO251bGwhPT1jJiZjIT09ZDspe3ZhciBoPWMsaz1oLmFsdGVybmF0ZSx2PWguc3RhdGVOb2RlO2lmKG51bGwhPT1rJiZrPT09ZClicmVhazs1PT09aC50YWcmJm51bGwhPT12JiYoaD12LGU\/KGs9UGIoYyxmKSxudWxsIT1rJiZnLnVuc2hpZnQoYWMoYyxrLGgpKSk6ZXx8KGs9UGIoYyxmKSxudWxsIT1rJiZnLnB1c2goYWMoYyxrLGgpKSkpO2M9Yy5yZXR1cm59MCE9PWcubGVuZ3RoJiZhLnB1c2goe2V2ZW50OmIsbGlzdGVuZXJzOmd9KX1mdW5jdGlvbiBWYygpe31mdW5jdGlvbiBPZyhhLGIpe3N3aXRjaChhKXtjYXNlICJidXR0b24iOmNhc2UgImlucHV0IjpjYXNlICJzZWxlY3QiOmNhc2UgInRleHRhcmVhIjpyZXR1cm4hIWIuYXV0b0ZvY3VzfXJldHVybiExfWZ1bmN0aW9uIHJlKGEsYil7cmV0dXJuInRleHRhcmVhIj09PWF8fCJvcHRpb24iPT09DQphfHwibm9zY3JpcHQiPT09YXx8InN0cmluZyI9PT10eXBlb2YgYi5jaGlsZHJlbnx8Im51bWJlciI9PT10eXBlb2YgYi5jaGlsZHJlbnx8Im9iamVjdCI9PT10eXBlb2YgYi5kYW5nZXJvdXNseVNldElubmVySFRNTCYmbnVsbCE9PWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJm51bGwhPWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sfWZ1bmN0aW9uIHNlKGEpezE9PT1hLm5vZGVUeXBlP2EudGV4dENvbnRlbnQ9IiI6OT09PWEubm9kZVR5cGUmJihhPWEuYm9keSxudWxsIT1hJiYoYS50ZXh0Q29udGVudD0iIikpfWZ1bmN0aW9uIHRiKGEpe2Zvcig7bnVsbCE9YTthPWEubmV4dFNpYmxpbmcpe3ZhciBiPWEubm9kZVR5cGU7aWYoMT09PWJ8fDM9PT1iKWJyZWFrfXJldHVybiBhfWZ1bmN0aW9uIFBnKGEpe2E9YS5wcmV2aW91c1NpYmxpbmc7Zm9yKHZhciBiPTA7YTspe2lmKDg9PT1hLm5vZGVUeXBlKXt2YXIgYz1hLmRhdGE7aWYoIiQiPT09Y3x8IiQhIj09PWN8fCIkPyI9PT0NCmMpe2lmKDA9PT1iKXJldHVybiBhO2ItLX1lbHNlIi8kIj09PWMmJmIrK31hPWEucHJldmlvdXNTaWJsaW5nfXJldHVybiBudWxsfWZ1bmN0aW9uIG1qKGEpe3JldHVybnskJHR5cGVvZjp0ZSx0b1N0cmluZzphLHZhbHVlT2Y6YX19ZnVuY3Rpb24gV2EoYSl7dmFyIGI9YVtGYV07aWYoYilyZXR1cm4gYjtmb3IodmFyIGM9YS5wYXJlbnROb2RlO2M7KXtpZihiPWNbcmJdfHxjW0ZhXSl7Yz1iLmFsdGVybmF0ZTtpZihudWxsIT09Yi5jaGlsZHx8bnVsbCE9PWMmJm51bGwhPT1jLmNoaWxkKWZvcihhPVBnKGEpO251bGwhPT1hOyl7aWYoYz1hW0ZhXSlyZXR1cm4gYzthPVBnKGEpfXJldHVybiBifWE9YztjPWEucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBPYihhKXthPWFbRmFdfHxhW3JiXTtyZXR1cm4hYXx8NSE9PWEudGFnJiY2IT09YS50YWcmJjEzIT09YS50YWcmJjMhPT1hLnRhZz9udWxsOmF9ZnVuY3Rpb24gcGIoYSl7aWYoNT09PWEudGFnfHw2PT09YS50YWcpcmV0dXJuIGEuc3RhdGVOb2RlOw0KdGhyb3cgRXJyb3IobSgzMykpO31mdW5jdGlvbiBIYyhhKXtyZXR1cm4gYVtXY118fG51bGx9ZnVuY3Rpb24gemcoYSl7dmFyIGI9YVtRZ107dm9pZCAwPT09YiYmKGI9YVtRZ109bmV3IFNldCk7cmV0dXJuIGJ9ZnVuY3Rpb24gR2EoYSl7cmV0dXJue2N1cnJlbnQ6YX19ZnVuY3Rpb24gdChhLGIpezA+dWJ8fChhLmN1cnJlbnQ9dWVbdWJdLHVlW3ViXT1udWxsLHViLS0pfWZ1bmN0aW9uIEEoYSxiLGMpe3ViKys7dWVbdWJdPWEuY3VycmVudDthLmN1cnJlbnQ9Yn1mdW5jdGlvbiB2YihhLGIpe3ZhciBjPWEudHlwZS5jb250ZXh0VHlwZXM7aWYoIWMpcmV0dXJuIEhhO3ZhciBkPWEuc3RhdGVOb2RlO2lmKGQmJmQuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD09PWIpcmV0dXJuIGQuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ7dmFyIGU9e30sZjtmb3IoZiBpbiBjKWVbZl09YltmXTtkJiYoYT1hLnN0YXRlTm9kZSxhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9DQpiLGEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ9ZSk7cmV0dXJuIGV9ZnVuY3Rpb24gUyhhKXthPWEuY2hpbGRDb250ZXh0VHlwZXM7cmV0dXJuIG51bGwhPT1hJiZ2b2lkIDAhPT1hfWZ1bmN0aW9uIFJnKGEsYixjKXtpZihELmN1cnJlbnQhPT1IYSl0aHJvdyBFcnJvcihtKDE2OCkpO0EoRCxiKTtBKEosYyl9ZnVuY3Rpb24gU2coYSxiLGMpe3ZhciBkPWEuc3RhdGVOb2RlO2E9Yi5jaGlsZENvbnRleHRUeXBlcztpZigiZnVuY3Rpb24iIT09dHlwZW9mIGQuZ2V0Q2hpbGRDb250ZXh0KXJldHVybiBjO2Q9ZC5nZXRDaGlsZENvbnRleHQoKTtmb3IodmFyIGUgaW4gZClpZighKGUgaW4gYSkpdGhyb3cgRXJyb3IobSgxMDgsaGIoYil8fCJVbmtub3duIixlKSk7cmV0dXJuIEIoe30sYyxkKX1mdW5jdGlvbiBYYyhhKXthPShhPWEuc3RhdGVOb2RlKSYmYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dHx8SGE7WWE9RC5jdXJyZW50Ow0KQShELGEpO0EoSixKLmN1cnJlbnQpO3JldHVybiEwfWZ1bmN0aW9uIFRnKGEsYixjKXt2YXIgZD1hLnN0YXRlTm9kZTtpZighZCl0aHJvdyBFcnJvcihtKDE2OSkpO2M\/KGE9U2coYSxiLFlhKSxkLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0PWEsdChKKSx0KEQpLEEoRCxhKSk6dChKKTtBKEosYyl9ZnVuY3Rpb24gd2IoKXtzd2l0Y2gobmooKSl7Y2FzZSBZYzpyZXR1cm4gOTk7Y2FzZSBVZzpyZXR1cm4gOTg7Y2FzZSBWZzpyZXR1cm4gOTc7Y2FzZSBXZzpyZXR1cm4gOTY7Y2FzZSBYZzpyZXR1cm4gOTU7ZGVmYXVsdDp0aHJvdyBFcnJvcihtKDMzMikpO319ZnVuY3Rpb24gWWcoYSl7c3dpdGNoKGEpe2Nhc2UgOTk6cmV0dXJuIFljO2Nhc2UgOTg6cmV0dXJuIFVnO2Nhc2UgOTc6cmV0dXJuIFZnO2Nhc2UgOTY6cmV0dXJuIFdnO2Nhc2UgOTU6cmV0dXJuIFhnO2RlZmF1bHQ6dGhyb3cgRXJyb3IobSgzMzIpKTt9fWZ1bmN0aW9uIFphKGEsYil7YT1ZZyhhKTsNCnJldHVybiBvaihhLGIpfWZ1bmN0aW9uIGJjKGEsYixjKXthPVlnKGEpO3JldHVybiB2ZShhLGIsYyl9ZnVuY3Rpb24gamEoKXtpZihudWxsIT09WmMpe3ZhciBhPVpjO1pjPW51bGw7d2UoYSl9WmcoKX1mdW5jdGlvbiBaZygpe2lmKCF4ZSYmbnVsbCE9PXBhKXt4ZT0hMDt2YXIgYT0wO3RyeXt2YXIgYj1wYTtaYSg5OSxmdW5jdGlvbigpe2Zvcig7YTxiLmxlbmd0aDthKyspe3ZhciBjPWJbYV07ZG8gYz1jKCEwKTt3aGlsZShudWxsIT09Yyl9fSk7cGE9bnVsbH1jYXRjaChjKXt0aHJvdyBudWxsIT09cGEmJihwYT1wYS5zbGljZShhKzEpKSx2ZShZYyxqYSksYzt9ZmluYWxseXt4ZT0hMX19fWZ1bmN0aW9uIGVhKGEsYil7aWYoYSYmYS5kZWZhdWx0UHJvcHMpe2I9Qih7fSxiKTthPWEuZGVmYXVsdFByb3BzO2Zvcih2YXIgYyBpbiBhKXZvaWQgMD09PWJbY10mJihiW2NdPWFbY10pO3JldHVybiBifXJldHVybiBifWZ1bmN0aW9uIHllKCl7JGM9eGI9YWQ9bnVsbH1mdW5jdGlvbiB6ZShhKXt2YXIgYj0NCmJkLmN1cnJlbnQ7dChiZCk7YS50eXBlLl9jb250ZXh0Ll9jdXJyZW50VmFsdWU9Yn1mdW5jdGlvbiAkZyhhLGIpe2Zvcig7bnVsbCE9PWE7KXt2YXIgYz1hLmFsdGVybmF0ZTtpZigoYS5jaGlsZExhbmVzJmIpPT09YilpZihudWxsPT09Y3x8KGMuY2hpbGRMYW5lcyZiKT09PWIpYnJlYWs7ZWxzZSBjLmNoaWxkTGFuZXN8PWI7ZWxzZSBhLmNoaWxkTGFuZXN8PWIsbnVsbCE9PWMmJihjLmNoaWxkTGFuZXN8PWIpO2E9YS5yZXR1cm59fWZ1bmN0aW9uIHliKGEsYil7YWQ9YTskYz14Yj1udWxsO2E9YS5kZXBlbmRlbmNpZXM7bnVsbCE9PWEmJm51bGwhPT1hLmZpcnN0Q29udGV4dCYmKDAhPT0oYS5sYW5lcyZiKSYmKGZhPSEwKSxhLmZpcnN0Q29udGV4dD1udWxsKX1mdW5jdGlvbiBZKGEsYil7aWYoJGMhPT1hJiYhMSE9PWImJjAhPT1iKXtpZigibnVtYmVyIiE9PXR5cGVvZiBifHwxMDczNzQxODIzPT09YikkYz1hLGI9MTA3Mzc0MTgyMztiPXtjb250ZXh0OmEsb2JzZXJ2ZWRCaXRzOmIsDQpuZXh0Om51bGx9O2lmKG51bGw9PT14Yil7aWYobnVsbD09PWFkKXRocm93IEVycm9yKG0oMzA4KSk7eGI9YjthZC5kZXBlbmRlbmNpZXM9e2xhbmVzOjAsZmlyc3RDb250ZXh0OmIscmVzcG9uZGVyczpudWxsfX1lbHNlIHhiPXhiLm5leHQ9Yn1yZXR1cm4gYS5fY3VycmVudFZhbHVlfWZ1bmN0aW9uIEFlKGEpe2EudXBkYXRlUXVldWU9e2Jhc2VTdGF0ZTphLm1lbW9pemVkU3RhdGUsZmlyc3RCYXNlVXBkYXRlOm51bGwsbGFzdEJhc2VVcGRhdGU6bnVsbCxzaGFyZWQ6e3BlbmRpbmc6bnVsbH0sZWZmZWN0czpudWxsfX1mdW5jdGlvbiBhaChhLGIpe2E9YS51cGRhdGVRdWV1ZTtiLnVwZGF0ZVF1ZXVlPT09YSYmKGIudXBkYXRlUXVldWU9e2Jhc2VTdGF0ZTphLmJhc2VTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6YS5maXJzdEJhc2VVcGRhdGUsbGFzdEJhc2VVcGRhdGU6YS5sYXN0QmFzZVVwZGF0ZSxzaGFyZWQ6YS5zaGFyZWQsZWZmZWN0czphLmVmZmVjdHN9KX1mdW5jdGlvbiBJYShhLGIpe3JldHVybntldmVudFRpbWU6YSwNCmxhbmU6Yix0YWc6MCxwYXlsb2FkOm51bGwsY2FsbGJhY2s6bnVsbCxuZXh0Om51bGx9fWZ1bmN0aW9uIEphKGEsYil7YT1hLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1hKXthPWEuc2hhcmVkO3ZhciBjPWEucGVuZGluZztudWxsPT09Yz9iLm5leHQ9YjooYi5uZXh0PWMubmV4dCxjLm5leHQ9Yik7YS5wZW5kaW5nPWJ9fWZ1bmN0aW9uIGJoKGEsYil7dmFyIGM9YS51cGRhdGVRdWV1ZSxkPWEuYWx0ZXJuYXRlO2lmKG51bGwhPT1kJiYoZD1kLnVwZGF0ZVF1ZXVlLGM9PT1kKSl7dmFyIGU9bnVsbCxmPW51bGw7Yz1jLmZpcnN0QmFzZVVwZGF0ZTtpZihudWxsIT09Yyl7ZG97dmFyIGc9e2V2ZW50VGltZTpjLmV2ZW50VGltZSxsYW5lOmMubGFuZSx0YWc6Yy50YWcscGF5bG9hZDpjLnBheWxvYWQsY2FsbGJhY2s6Yy5jYWxsYmFjayxuZXh0Om51bGx9O251bGw9PT1mP2U9Zj1nOmY9Zi5uZXh0PWc7Yz1jLm5leHR9d2hpbGUobnVsbCE9PWMpO251bGw9PT1mP2U9Zj1iOmY9Zi5uZXh0PWJ9ZWxzZSBlPQ0KZj1iO2M9e2Jhc2VTdGF0ZTpkLmJhc2VTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6ZSxsYXN0QmFzZVVwZGF0ZTpmLHNoYXJlZDpkLnNoYXJlZCxlZmZlY3RzOmQuZWZmZWN0c307YS51cGRhdGVRdWV1ZT1jO3JldHVybn1hPWMubGFzdEJhc2VVcGRhdGU7bnVsbD09PWE\/Yy5maXJzdEJhc2VVcGRhdGU9YjphLm5leHQ9YjtjLmxhc3RCYXNlVXBkYXRlPWJ9ZnVuY3Rpb24gY2MoYSxiLGMsZCl7dmFyIGU9YS51cGRhdGVRdWV1ZTtLYT0hMTt2YXIgZj1lLmZpcnN0QmFzZVVwZGF0ZSxnPWUubGFzdEJhc2VVcGRhdGUsaD1lLnNoYXJlZC5wZW5kaW5nO2lmKG51bGwhPT1oKXtlLnNoYXJlZC5wZW5kaW5nPW51bGw7dmFyIGs9aCx2PWsubmV4dDtrLm5leHQ9bnVsbDtudWxsPT09Zz9mPXY6Zy5uZXh0PXY7Zz1rO3ZhciBtPWEuYWx0ZXJuYXRlO2lmKG51bGwhPT1tKXttPW0udXBkYXRlUXVldWU7dmFyIGw9bS5sYXN0QmFzZVVwZGF0ZTtsIT09ZyYmKG51bGw9PT1sP20uZmlyc3RCYXNlVXBkYXRlPQ0KdjpsLm5leHQ9dixtLmxhc3RCYXNlVXBkYXRlPWspfX1pZihudWxsIT09Zil7bD1lLmJhc2VTdGF0ZTtnPTA7bT12PWs9bnVsbDtkb3toPWYubGFuZTt2YXIgcj1mLmV2ZW50VGltZTtpZigoZCZoKT09PWgpe251bGwhPT1tJiYobT1tLm5leHQ9e2V2ZW50VGltZTpyLGxhbmU6MCx0YWc6Zi50YWcscGF5bG9hZDpmLnBheWxvYWQsY2FsbGJhY2s6Zi5jYWxsYmFjayxuZXh0Om51bGx9KTthOnt2YXIgbj1hLHQ9ZjtoPWI7cj1jO3N3aXRjaCh0LnRhZyl7Y2FzZSAxOm49dC5wYXlsb2FkO2lmKCJmdW5jdGlvbiI9PT10eXBlb2Ygbil7bD1uLmNhbGwocixsLGgpO2JyZWFrIGF9bD1uO2JyZWFrIGE7Y2FzZSAzOm4uZmxhZ3M9bi5mbGFncyYtNDA5N3w2NDtjYXNlIDA6bj10LnBheWxvYWQ7aD0iZnVuY3Rpb24iPT09dHlwZW9mIG4\/bi5jYWxsKHIsbCxoKTpuO2lmKG51bGw9PT1ofHx2b2lkIDA9PT1oKWJyZWFrIGE7bD1CKHt9LGwsaCk7YnJlYWsgYTtjYXNlIDI6S2E9ITB9fW51bGwhPT1mLmNhbGxiYWNrJiYNCihhLmZsYWdzfD0zMixoPWUuZWZmZWN0cyxudWxsPT09aD9lLmVmZmVjdHM9W2ZdOmgucHVzaChmKSl9ZWxzZSByPXtldmVudFRpbWU6cixsYW5lOmgsdGFnOmYudGFnLHBheWxvYWQ6Zi5wYXlsb2FkLGNhbGxiYWNrOmYuY2FsbGJhY2ssbmV4dDpudWxsfSxudWxsPT09bT8odj1tPXIsaz1sKTptPW0ubmV4dD1yLGd8PWg7Zj1mLm5leHQ7aWYobnVsbD09PWYpaWYoaD1lLnNoYXJlZC5wZW5kaW5nLG51bGw9PT1oKWJyZWFrO2Vsc2UgZj1oLm5leHQsaC5uZXh0PW51bGwsZS5sYXN0QmFzZVVwZGF0ZT1oLGUuc2hhcmVkLnBlbmRpbmc9bnVsbH13aGlsZSgxKTtudWxsPT09bSYmKGs9bCk7ZS5iYXNlU3RhdGU9aztlLmZpcnN0QmFzZVVwZGF0ZT12O2UubGFzdEJhc2VVcGRhdGU9bTtMYXw9ZzthLmxhbmVzPWc7YS5tZW1vaXplZFN0YXRlPWx9fWZ1bmN0aW9uIGNoKGEsYixjKXthPWIuZWZmZWN0cztiLmVmZmVjdHM9bnVsbDtpZihudWxsIT09YSlmb3IoYj0wO2I8YS5sZW5ndGg7YisrKXt2YXIgZD0NCmFbYl0sZT1kLmNhbGxiYWNrO2lmKG51bGwhPT1lKXtkLmNhbGxiYWNrPW51bGw7ZD1jO2lmKCJmdW5jdGlvbiIhPT10eXBlb2YgZSl0aHJvdyBFcnJvcihtKDE5MSxlKSk7ZS5jYWxsKGQpfX19ZnVuY3Rpb24gY2QoYSxiLGMsZCl7Yj1hLm1lbW9pemVkU3RhdGU7Yz1jKGQsYik7Yz1udWxsPT09Y3x8dm9pZCAwPT09Yz9iOkIoe30sYixjKTthLm1lbW9pemVkU3RhdGU9YzswPT09YS5sYW5lcyYmKGEudXBkYXRlUXVldWUuYmFzZVN0YXRlPWMpfWZ1bmN0aW9uIGRoKGEsYixjLGQsZSxmLGcpe2E9YS5zdGF0ZU5vZGU7cmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiBhLnNob3VsZENvbXBvbmVudFVwZGF0ZT9hLnNob3VsZENvbXBvbmVudFVwZGF0ZShkLGYsZyk6Yi5wcm90b3R5cGUmJmIucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50PyFaYihjLGQpfHwhWmIoZSxmKTohMH1mdW5jdGlvbiBlaChhLGIsYyl7dmFyIGQ9ITEsZT1IYTt2YXIgZj1iLmNvbnRleHRUeXBlOyJvYmplY3QiPT09DQp0eXBlb2YgZiYmbnVsbCE9PWY\/Zj1ZKGYpOihlPVMoYik\/WWE6RC5jdXJyZW50LGQ9Yi5jb250ZXh0VHlwZXMsZj0oZD1udWxsIT09ZCYmdm9pZCAwIT09ZCk\/dmIoYSxlKTpIYSk7Yj1uZXcgYihjLGYpO2EubWVtb2l6ZWRTdGF0ZT1udWxsIT09Yi5zdGF0ZSYmdm9pZCAwIT09Yi5zdGF0ZT9iLnN0YXRlOm51bGw7Yi51cGRhdGVyPWRkO2Euc3RhdGVOb2RlPWI7Yi5fcmVhY3RJbnRlcm5hbHM9YTtkJiYoYT1hLnN0YXRlTm9kZSxhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9ZSxhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0PWYpO3JldHVybiBifWZ1bmN0aW9uIGZoKGEsYixjLGQpe2E9Yi5zdGF0ZTsiZnVuY3Rpb24iPT09dHlwZW9mIGIuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmYi5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKGMsZCk7ImZ1bmN0aW9uIj09PXR5cGVvZiBiLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiYNCmIuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoYyxkKTtiLnN0YXRlIT09YSYmZGQuZW5xdWV1ZVJlcGxhY2VTdGF0ZShiLGIuc3RhdGUsbnVsbCl9ZnVuY3Rpb24gQmUoYSxiLGMsZCl7dmFyIGU9YS5zdGF0ZU5vZGU7ZS5wcm9wcz1jO2Uuc3RhdGU9YS5tZW1vaXplZFN0YXRlO2UucmVmcz1naDtBZShhKTt2YXIgZj1iLmNvbnRleHRUeXBlOyJvYmplY3QiPT09dHlwZW9mIGYmJm51bGwhPT1mP2UuY29udGV4dD1ZKGYpOihmPVMoYik\/WWE6RC5jdXJyZW50LGUuY29udGV4dD12YihhLGYpKTtjYyhhLGMsZSxkKTtlLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZTtmPWIuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzOyJmdW5jdGlvbiI9PT10eXBlb2YgZiYmKGNkKGEsYixmLGMpLGUuc3RhdGU9YS5tZW1vaXplZFN0YXRlKTsiZnVuY3Rpb24iPT09dHlwZW9mIGIuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzfHwiZnVuY3Rpb24iPT09dHlwZW9mIGUuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fA0KImZ1bmN0aW9uIiE9PXR5cGVvZiBlLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJiJmdW5jdGlvbiIhPT10eXBlb2YgZS5jb21wb25lbnRXaWxsTW91bnR8fChiPWUuc3RhdGUsImZ1bmN0aW9uIj09PXR5cGVvZiBlLmNvbXBvbmVudFdpbGxNb3VudCYmZS5jb21wb25lbnRXaWxsTW91bnQoKSwiZnVuY3Rpb24iPT09dHlwZW9mIGUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCksYiE9PWUuc3RhdGUmJmRkLmVucXVldWVSZXBsYWNlU3RhdGUoZSxlLnN0YXRlLG51bGwpLGNjKGEsYyxlLGQpLGUuc3RhdGU9YS5tZW1vaXplZFN0YXRlKTsiZnVuY3Rpb24iPT09dHlwZW9mIGUuY29tcG9uZW50RGlkTW91bnQmJihhLmZsYWdzfD00KX1mdW5jdGlvbiBkYyhhLGIsYyl7YT1jLnJlZjtpZihudWxsIT09YSYmImZ1bmN0aW9uIiE9PXR5cGVvZiBhJiYib2JqZWN0IiE9PXR5cGVvZiBhKXtpZihjLl9vd25lcil7Yz1jLl9vd25lcjtpZihjKXtpZigxIT09DQpjLnRhZyl0aHJvdyBFcnJvcihtKDMwOSkpO3ZhciBkPWMuc3RhdGVOb2RlfWlmKCFkKXRocm93IEVycm9yKG0oMTQ3LGEpKTt2YXIgZT0iIithO2lmKG51bGwhPT1iJiZudWxsIT09Yi5yZWYmJiJmdW5jdGlvbiI9PT10eXBlb2YgYi5yZWYmJmIucmVmLl9zdHJpbmdSZWY9PT1lKXJldHVybiBiLnJlZjtiPWZ1bmN0aW9uKGEpe3ZhciBiPWQucmVmcztiPT09Z2gmJihiPWQucmVmcz17fSk7bnVsbD09PWE\/ZGVsZXRlIGJbZV06YltlXT1hfTtiLl9zdHJpbmdSZWY9ZTtyZXR1cm4gYn1pZigic3RyaW5nIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKG0oMjg0KSk7aWYoIWMuX293bmVyKXRocm93IEVycm9yKG0oMjkwLGEpKTt9cmV0dXJuIGF9ZnVuY3Rpb24gZWQoYSxiKXtpZigidGV4dGFyZWEiIT09YS50eXBlKXRocm93IEVycm9yKG0oMzEsIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYik\/Im9iamVjdCB3aXRoIGtleXMgeyIrT2JqZWN0LmtleXMoYikuam9pbigiLCAiKSsNCiJ9IjpiKSk7fWZ1bmN0aW9uIGhoKGEpe2Z1bmN0aW9uIGIoYixjKXtpZihhKXt2YXIgZD1iLmxhc3RFZmZlY3Q7bnVsbCE9PWQ\/KGQubmV4dEVmZmVjdD1jLGIubGFzdEVmZmVjdD1jKTpiLmZpcnN0RWZmZWN0PWIubGFzdEVmZmVjdD1jO2MubmV4dEVmZmVjdD1udWxsO2MuZmxhZ3M9OH19ZnVuY3Rpb24gYyhjLGQpe2lmKCFhKXJldHVybiBudWxsO2Zvcig7bnVsbCE9PWQ7KWIoYyxkKSxkPWQuc2libGluZztyZXR1cm4gbnVsbH1mdW5jdGlvbiBkKGEsYil7Zm9yKGE9bmV3IE1hcDtudWxsIT09YjspbnVsbCE9PWIua2V5P2Euc2V0KGIua2V5LGIpOmEuc2V0KGIuaW5kZXgsYiksYj1iLnNpYmxpbmc7cmV0dXJuIGF9ZnVuY3Rpb24gZShhLGIpe2E9TWEoYSxiKTthLmluZGV4PTA7YS5zaWJsaW5nPW51bGw7cmV0dXJuIGF9ZnVuY3Rpb24gZihiLGMsZCl7Yi5pbmRleD1kO2lmKCFhKXJldHVybiBjO2Q9Yi5hbHRlcm5hdGU7aWYobnVsbCE9PWQpcmV0dXJuIGQ9ZC5pbmRleCxkPGM\/KGIuZmxhZ3M9DQoyLGMpOmQ7Yi5mbGFncz0yO3JldHVybiBjfWZ1bmN0aW9uIGcoYil7YSYmbnVsbD09PWIuYWx0ZXJuYXRlJiYoYi5mbGFncz0yKTtyZXR1cm4gYn1mdW5jdGlvbiBoKGEsYixjLGQpe2lmKG51bGw9PT1ifHw2IT09Yi50YWcpcmV0dXJuIGI9Q2UoYyxhLm1vZGUsZCksYi5yZXR1cm49YSxiO2I9ZShiLGMpO2IucmV0dXJuPWE7cmV0dXJuIGJ9ZnVuY3Rpb24gayhhLGIsYyxkKXtpZihudWxsIT09YiYmYi5lbGVtZW50VHlwZT09PWMudHlwZSlyZXR1cm4gZD1lKGIsYy5wcm9wcyksZC5yZWY9ZGMoYSxiLGMpLGQucmV0dXJuPWEsZDtkPWZkKGMudHlwZSxjLmtleSxjLnByb3BzLG51bGwsYS5tb2RlLGQpO2QucmVmPWRjKGEsYixjKTtkLnJldHVybj1hO3JldHVybiBkfWZ1bmN0aW9uIHYoYSxiLGMsZCl7aWYobnVsbD09PWJ8fDQhPT1iLnRhZ3x8Yi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyE9PWMuY29udGFpbmVySW5mb3x8Yi5zdGF0ZU5vZGUuaW1wbGVtZW50YXRpb24hPT1jLmltcGxlbWVudGF0aW9uKXJldHVybiBiPQ0KRGUoYyxhLm1vZGUsZCksYi5yZXR1cm49YSxiO2I9ZShiLGMuY2hpbGRyZW58fFtdKTtiLnJldHVybj1hO3JldHVybiBifWZ1bmN0aW9uIGwoYSxiLGMsZCxmKXtpZihudWxsPT09Ynx8NyE9PWIudGFnKXJldHVybiBiPXpiKGMsYS5tb2RlLGQsZiksYi5yZXR1cm49YSxiO2I9ZShiLGMpO2IucmV0dXJuPWE7cmV0dXJuIGJ9ZnVuY3Rpb24gbihhLGIsYyl7aWYoInN0cmluZyI9PT10eXBlb2YgYnx8Im51bWJlciI9PT10eXBlb2YgYilyZXR1cm4gYj1DZSgiIitiLGEubW9kZSxjKSxiLnJldHVybj1hLGI7aWYoIm9iamVjdCI9PT10eXBlb2YgYiYmbnVsbCE9PWIpe3N3aXRjaChiLiQkdHlwZW9mKXtjYXNlIGVjOnJldHVybiBjPWZkKGIudHlwZSxiLmtleSxiLnByb3BzLG51bGwsYS5tb2RlLGMpLGMucmVmPWRjKGEsbnVsbCxiKSxjLnJldHVybj1hLGM7Y2FzZSBVYTpyZXR1cm4gYj1EZShiLGEubW9kZSxjKSxiLnJldHVybj1hLGJ9aWYoZ2QoYil8fEpiKGIpKXJldHVybiBiPXpiKGIsDQphLm1vZGUsYyxudWxsKSxiLnJldHVybj1hLGI7ZWQoYSxiKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiByKGEsYixjLGQpe3ZhciBlPW51bGwhPT1iP2Iua2V5Om51bGw7aWYoInN0cmluZyI9PT10eXBlb2YgY3x8Im51bWJlciI9PT10eXBlb2YgYylyZXR1cm4gbnVsbCE9PWU\/bnVsbDpoKGEsYiwiIitjLGQpO2lmKCJvYmplY3QiPT09dHlwZW9mIGMmJm51bGwhPT1jKXtzd2l0Y2goYy4kJHR5cGVvZil7Y2FzZSBlYzpyZXR1cm4gYy5rZXk9PT1lP2MudHlwZT09PXdhP2woYSxiLGMucHJvcHMuY2hpbGRyZW4sZCxlKTprKGEsYixjLGQpOm51bGw7Y2FzZSBVYTpyZXR1cm4gYy5rZXk9PT1lP3YoYSxiLGMsZCk6bnVsbH1pZihnZChjKXx8SmIoYykpcmV0dXJuIG51bGwhPT1lP251bGw6bChhLGIsYyxkLG51bGwpO2VkKGEsYyl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gdChhLGIsYyxkLGUpe2lmKCJzdHJpbmciPT09dHlwZW9mIGR8fCJudW1iZXIiPT09dHlwZW9mIGQpcmV0dXJuIGE9YS5nZXQoYyl8fA0KbnVsbCxoKGIsYSwiIitkLGUpO2lmKCJvYmplY3QiPT09dHlwZW9mIGQmJm51bGwhPT1kKXtzd2l0Y2goZC4kJHR5cGVvZil7Y2FzZSBlYzpyZXR1cm4gYT1hLmdldChudWxsPT09ZC5rZXk\/YzpkLmtleSl8fG51bGwsZC50eXBlPT09d2E\/bChiLGEsZC5wcm9wcy5jaGlsZHJlbixlLGQua2V5KTprKGIsYSxkLGUpO2Nhc2UgVWE6cmV0dXJuIGE9YS5nZXQobnVsbD09PWQua2V5P2M6ZC5rZXkpfHxudWxsLHYoYixhLGQsZSl9aWYoZ2QoZCl8fEpiKGQpKXJldHVybiBhPWEuZ2V0KGMpfHxudWxsLGwoYixhLGQsZSxudWxsKTtlZChiLGQpfXJldHVybiBudWxsfWZ1bmN0aW9uIHcoZSxnLGgsayl7Zm9yKHZhciBtPW51bGwsdj1udWxsLGw9ZyxwPWc9MCx4PW51bGw7bnVsbCE9PWwmJnA8aC5sZW5ndGg7cCsrKXtsLmluZGV4PnA\/KHg9bCxsPW51bGwpOng9bC5zaWJsaW5nO3ZhciBDPXIoZSxsLGhbcF0sayk7aWYobnVsbD09PUMpe251bGw9PT1sJiYobD14KTticmVha31hJiZsJiZudWxsPT09DQpDLmFsdGVybmF0ZSYmYihlLGwpO2c9ZihDLGcscCk7bnVsbD09PXY\/bT1DOnYuc2libGluZz1DO3Y9QztsPXh9aWYocD09PWgubGVuZ3RoKXJldHVybiBjKGUsbCksbTtpZihudWxsPT09bCl7Zm9yKDtwPGgubGVuZ3RoO3ArKylsPW4oZSxoW3BdLGspLG51bGwhPT1sJiYoZz1mKGwsZyxwKSxudWxsPT09dj9tPWw6di5zaWJsaW5nPWwsdj1sKTtyZXR1cm4gbX1mb3IobD1kKGUsbCk7cDxoLmxlbmd0aDtwKyspeD10KGwsZSxwLGhbcF0sayksbnVsbCE9PXgmJihhJiZudWxsIT09eC5hbHRlcm5hdGUmJmwuZGVsZXRlKG51bGw9PT14LmtleT9wOngua2V5KSxnPWYoeCxnLHApLG51bGw9PT12P209eDp2LnNpYmxpbmc9eCx2PXgpO2EmJmwuZm9yRWFjaChmdW5jdGlvbihhKXtyZXR1cm4gYihlLGEpfSk7cmV0dXJuIG19ZnVuY3Rpb24geihlLGcsaCxrKXt2YXIgbD1KYihoKTtpZigiZnVuY3Rpb24iIT09dHlwZW9mIGwpdGhyb3cgRXJyb3IobSgxNTApKTtoPWwuY2FsbChoKTtpZihudWxsPT0NCmgpdGhyb3cgRXJyb3IobSgxNTEpKTtmb3IodmFyIHY9bD1udWxsLHA9Zyx4PWc9MCxDPW51bGwscT1oLm5leHQoKTtudWxsIT09cCYmIXEuZG9uZTt4KysscT1oLm5leHQoKSl7cC5pbmRleD54PyhDPXAscD1udWxsKTpDPXAuc2libGluZzt2YXIgRGE9cihlLHAscS52YWx1ZSxrKTtpZihudWxsPT09RGEpe251bGw9PT1wJiYocD1DKTticmVha31hJiZwJiZudWxsPT09RGEuYWx0ZXJuYXRlJiZiKGUscCk7Zz1mKERhLGcseCk7bnVsbD09PXY\/bD1EYTp2LnNpYmxpbmc9RGE7dj1EYTtwPUN9aWYocS5kb25lKXJldHVybiBjKGUscCksbDtpZihudWxsPT09cCl7Zm9yKDshcS5kb25lO3grKyxxPWgubmV4dCgpKXE9bihlLHEudmFsdWUsayksbnVsbCE9PXEmJihnPWYocSxnLHgpLG51bGw9PT12P2w9cTp2LnNpYmxpbmc9cSx2PXEpO3JldHVybiBsfWZvcihwPWQoZSxwKTshcS5kb25lO3grKyxxPWgubmV4dCgpKXE9dChwLGUseCxxLnZhbHVlLGspLG51bGwhPT1xJiYoYSYmbnVsbCE9PQ0KcS5hbHRlcm5hdGUmJnAuZGVsZXRlKG51bGw9PT1xLmtleT94OnEua2V5KSxnPWYocSxnLHgpLG51bGw9PT12P2w9cTp2LnNpYmxpbmc9cSx2PXEpO2EmJnAuZm9yRWFjaChmdW5jdGlvbihhKXtyZXR1cm4gYihlLGEpfSk7cmV0dXJuIGx9cmV0dXJuIGZ1bmN0aW9uKGEsZCxmLGgpe3ZhciBrPSJvYmplY3QiPT09dHlwZW9mIGYmJm51bGwhPT1mJiZmLnR5cGU9PT13YSYmbnVsbD09PWYua2V5O2smJihmPWYucHJvcHMuY2hpbGRyZW4pO3ZhciBsPSJvYmplY3QiPT09dHlwZW9mIGYmJm51bGwhPT1mO2lmKGwpc3dpdGNoKGYuJCR0eXBlb2Ype2Nhc2UgZWM6YTp7bD1mLmtleTtmb3Ioaz1kO251bGwhPT1rOyl7aWYoay5rZXk9PT1sKXtzd2l0Y2goay50YWcpe2Nhc2UgNzppZihmLnR5cGU9PT13YSl7YyhhLGsuc2libGluZyk7ZD1lKGssZi5wcm9wcy5jaGlsZHJlbik7ZC5yZXR1cm49YTthPWQ7YnJlYWsgYX1icmVhaztkZWZhdWx0OmlmKGsuZWxlbWVudFR5cGU9PT1mLnR5cGUpe2MoYSwNCmsuc2libGluZyk7ZD1lKGssZi5wcm9wcyk7ZC5yZWY9ZGMoYSxrLGYpO2QucmV0dXJuPWE7YT1kO2JyZWFrIGF9fWMoYSxrKTticmVha31lbHNlIGIoYSxrKTtrPWsuc2libGluZ31mLnR5cGU9PT13YT8oZD16YihmLnByb3BzLmNoaWxkcmVuLGEubW9kZSxoLGYua2V5KSxkLnJldHVybj1hLGE9ZCk6KGg9ZmQoZi50eXBlLGYua2V5LGYucHJvcHMsbnVsbCxhLm1vZGUsaCksaC5yZWY9ZGMoYSxkLGYpLGgucmV0dXJuPWEsYT1oKX1yZXR1cm4gZyhhKTtjYXNlIFVhOmE6e2ZvcihrPWYua2V5O251bGwhPT1kOyl7aWYoZC5rZXk9PT1rKWlmKDQ9PT1kLnRhZyYmZC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbz09PWYuY29udGFpbmVySW5mbyYmZC5zdGF0ZU5vZGUuaW1wbGVtZW50YXRpb249PT1mLmltcGxlbWVudGF0aW9uKXtjKGEsZC5zaWJsaW5nKTtkPWUoZCxmLmNoaWxkcmVufHxbXSk7ZC5yZXR1cm49YTthPWQ7YnJlYWsgYX1lbHNle2MoYSxkKTticmVha31lbHNlIGIoYSxkKTtkPQ0KZC5zaWJsaW5nfWQ9RGUoZixhLm1vZGUsaCk7ZC5yZXR1cm49YTthPWR9cmV0dXJuIGcoYSl9aWYoInN0cmluZyI9PT10eXBlb2YgZnx8Im51bWJlciI9PT10eXBlb2YgZilyZXR1cm4gZj0iIitmLG51bGwhPT1kJiY2PT09ZC50YWc\/KGMoYSxkLnNpYmxpbmcpLGQ9ZShkLGYpLGQucmV0dXJuPWEsYT1kKTooYyhhLGQpLGQ9Q2UoZixhLm1vZGUsaCksZC5yZXR1cm49YSxhPWQpLGcoYSk7aWYoZ2QoZikpcmV0dXJuIHcoYSxkLGYsaCk7aWYoSmIoZikpcmV0dXJuIHooYSxkLGYsaCk7bCYmZWQoYSxmKTtpZigidW5kZWZpbmVkIj09PXR5cGVvZiBmJiYhaylzd2l0Y2goYS50YWcpe2Nhc2UgMTpjYXNlIDIyOmNhc2UgMDpjYXNlIDExOmNhc2UgMTU6dGhyb3cgRXJyb3IobSgxNTIsaGIoYS50eXBlKXx8IkNvbXBvbmVudCIpKTt9cmV0dXJuIGMoYSxkKX19ZnVuY3Rpb24gJGEoYSl7aWYoYT09PWZjKXRocm93IEVycm9yKG0oMTc0KSk7cmV0dXJuIGF9ZnVuY3Rpb24gRWUoYSxiKXtBKGdjLA0KYik7QShoYyxhKTtBKGthLGZjKTthPWIubm9kZVR5cGU7c3dpdGNoKGEpe2Nhc2UgOTpjYXNlIDExOmI9KGI9Yi5kb2N1bWVudEVsZW1lbnQpP2IubmFtZXNwYWNlVVJJOlJkKG51bGwsIiIpO2JyZWFrO2RlZmF1bHQ6YT04PT09YT9iLnBhcmVudE5vZGU6YixiPWEubmFtZXNwYWNlVVJJfHxudWxsLGE9YS50YWdOYW1lLGI9UmQoYixhKX10KGthKTtBKGthLGIpfWZ1bmN0aW9uIEFiKGEpe3Qoa2EpO3QoaGMpO3QoZ2MpfWZ1bmN0aW9uIGloKGEpeyRhKGdjLmN1cnJlbnQpO3ZhciBiPSRhKGthLmN1cnJlbnQpO3ZhciBjPVJkKGIsYS50eXBlKTtiIT09YyYmKEEoaGMsYSksQShrYSxjKSl9ZnVuY3Rpb24gRmUoYSl7aGMuY3VycmVudD09PWEmJih0KGthKSx0KGhjKSl9ZnVuY3Rpb24gaGQoYSl7Zm9yKHZhciBiPWE7bnVsbCE9PWI7KXtpZigxMz09PWIudGFnKXt2YXIgYz1iLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWMmJihjPWMuZGVoeWRyYXRlZCxudWxsPT09Y3x8IiQ\/Ij09PWMuZGF0YXx8DQoiJCEiPT09Yy5kYXRhKSlyZXR1cm4gYn1lbHNlIGlmKDE5PT09Yi50YWcmJnZvaWQgMCE9PWIubWVtb2l6ZWRQcm9wcy5yZXZlYWxPcmRlcil7aWYoMCE9PShiLmZsYWdzJjY0KSlyZXR1cm4gYn1lbHNlIGlmKG51bGwhPT1iLmNoaWxkKXtiLmNoaWxkLnJldHVybj1iO2I9Yi5jaGlsZDtjb250aW51ZX1pZihiPT09YSlicmVhaztmb3IoO251bGw9PT1iLnNpYmxpbmc7KXtpZihudWxsPT09Yi5yZXR1cm58fGIucmV0dXJuPT09YSlyZXR1cm4gbnVsbDtiPWIucmV0dXJufWIuc2libGluZy5yZXR1cm49Yi5yZXR1cm47Yj1iLnNpYmxpbmd9cmV0dXJuIG51bGx9ZnVuY3Rpb24gamgoYSxiKXt2YXIgYz1aKDUsbnVsbCxudWxsLDApO2MuZWxlbWVudFR5cGU9IkRFTEVURUQiO2MudHlwZT0iREVMRVRFRCI7Yy5zdGF0ZU5vZGU9YjtjLnJldHVybj1hO2MuZmxhZ3M9ODtudWxsIT09YS5sYXN0RWZmZWN0PyhhLmxhc3RFZmZlY3QubmV4dEVmZmVjdD1jLGEubGFzdEVmZmVjdD1jKTphLmZpcnN0RWZmZWN0PQ0KYS5sYXN0RWZmZWN0PWN9ZnVuY3Rpb24ga2goYSxiKXtzd2l0Y2goYS50YWcpe2Nhc2UgNTp2YXIgYz1hLnR5cGU7Yj0xIT09Yi5ub2RlVHlwZXx8Yy50b0xvd2VyQ2FzZSgpIT09Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP251bGw6YjtyZXR1cm4gbnVsbCE9PWI\/KGEuc3RhdGVOb2RlPWIsITApOiExO2Nhc2UgNjpyZXR1cm4gYj0iIj09PWEucGVuZGluZ1Byb3BzfHwzIT09Yi5ub2RlVHlwZT9udWxsOmIsbnVsbCE9PWI\/KGEuc3RhdGVOb2RlPWIsITApOiExO2Nhc2UgMTM6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gR2UoYSl7aWYobGEpe3ZhciBiPU5hO2lmKGIpe3ZhciBjPWI7aWYoIWtoKGEsYikpe2I9dGIoYy5uZXh0U2libGluZyk7aWYoIWJ8fCFraChhLGIpKXthLmZsYWdzPWEuZmxhZ3MmLTEwMjV8MjtsYT0hMTtyYT1hO3JldHVybn1qaChyYSxjKX1yYT1hO05hPXRiKGIuZmlyc3RDaGlsZCl9ZWxzZSBhLmZsYWdzPWEuZmxhZ3MmLTEwMjV8MixsYT0hMSwNCnJhPWF9fWZ1bmN0aW9uIGxoKGEpe2ZvcihhPWEucmV0dXJuO251bGwhPT1hJiY1IT09YS50YWcmJjMhPT1hLnRhZyYmMTMhPT1hLnRhZzspYT1hLnJldHVybjtyYT1hfWZ1bmN0aW9uIGlkKGEpe2lmKGEhPT1yYSlyZXR1cm4hMTtpZighbGEpcmV0dXJuIGxoKGEpLGxhPSEwLCExO3ZhciBiPWEudHlwZTtpZig1IT09YS50YWd8fCJoZWFkIiE9PWImJiJib2R5IiE9PWImJiFyZShiLGEubWVtb2l6ZWRQcm9wcykpZm9yKGI9TmE7YjspamgoYSxiKSxiPXRiKGIubmV4dFNpYmxpbmcpO2xoKGEpO2lmKDEzPT09YS50YWcpe2E9YS5tZW1vaXplZFN0YXRlO2E9bnVsbCE9PWE\/YS5kZWh5ZHJhdGVkOm51bGw7aWYoIWEpdGhyb3cgRXJyb3IobSgzMTcpKTthOnthPWEubmV4dFNpYmxpbmc7Zm9yKGI9MDthOyl7aWYoOD09PWEubm9kZVR5cGUpe3ZhciBjPWEuZGF0YTtpZigiLyQiPT09Yyl7aWYoMD09PWIpe05hPXRiKGEubmV4dFNpYmxpbmcpO2JyZWFrIGF9Yi0tfWVsc2UiJCIhPT1jJiYiJCEiIT09DQpjJiYiJD8iIT09Y3x8YisrfWE9YS5uZXh0U2libGluZ31OYT1udWxsfX1lbHNlIE5hPXJhP3RiKGEuc3RhdGVOb2RlLm5leHRTaWJsaW5nKTpudWxsO3JldHVybiEwfWZ1bmN0aW9uIEhlKCl7TmE9cmE9bnVsbDtsYT0hMX1mdW5jdGlvbiBJZSgpe2Zvcih2YXIgYT0wO2E8QmIubGVuZ3RoO2ErKylCYlthXS5fd29ya0luUHJvZ3Jlc3NWZXJzaW9uUHJpbWFyeT1udWxsO0JiLmxlbmd0aD0wfWZ1bmN0aW9uIFQoKXt0aHJvdyBFcnJvcihtKDMyMSkpO31mdW5jdGlvbiBKZShhLGIpe2lmKG51bGw9PT1iKXJldHVybiExO2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGgmJmM8YS5sZW5ndGg7YysrKWlmKCFYKGFbY10sYltjXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gS2UoYSxiLGMsZCxlLGYpe2ljPWY7eT1iO2IubWVtb2l6ZWRTdGF0ZT1udWxsO2IudXBkYXRlUXVldWU9bnVsbDtiLmxhbmVzPTA7amMuY3VycmVudD1udWxsPT09YXx8bnVsbD09PWEubWVtb2l6ZWRTdGF0ZT9wajpxajsNCmE9YyhkLGUpO2lmKGtjKXtmPTA7ZG97a2M9ITE7aWYoISgyNT5mKSl0aHJvdyBFcnJvcihtKDMwMSkpO2YrPTE7Sz1OPW51bGw7Yi51cGRhdGVRdWV1ZT1udWxsO2pjLmN1cnJlbnQ9cmo7YT1jKGQsZSl9d2hpbGUoa2MpfWpjLmN1cnJlbnQ9amQ7Yj1udWxsIT09TiYmbnVsbCE9PU4ubmV4dDtpYz0wO0s9Tj15PW51bGw7a2Q9ITE7aWYoYil0aHJvdyBFcnJvcihtKDMwMCkpO3JldHVybiBhfWZ1bmN0aW9uIGFiKCl7dmFyIGE9e21lbW9pemVkU3RhdGU6bnVsbCxiYXNlU3RhdGU6bnVsbCxiYXNlUXVldWU6bnVsbCxxdWV1ZTpudWxsLG5leHQ6bnVsbH07bnVsbD09PUs\/eS5tZW1vaXplZFN0YXRlPUs9YTpLPUsubmV4dD1hO3JldHVybiBLfWZ1bmN0aW9uIGJiKCl7aWYobnVsbD09PU4pe3ZhciBhPXkuYWx0ZXJuYXRlO2E9bnVsbCE9PWE\/YS5tZW1vaXplZFN0YXRlOm51bGx9ZWxzZSBhPU4ubmV4dDt2YXIgYj1udWxsPT09Sz95Lm1lbW9pemVkU3RhdGU6Sy5uZXh0O2lmKG51bGwhPT0NCmIpSz1iLE49YTtlbHNle2lmKG51bGw9PT1hKXRocm93IEVycm9yKG0oMzEwKSk7Tj1hO2E9e21lbW9pemVkU3RhdGU6Ti5tZW1vaXplZFN0YXRlLGJhc2VTdGF0ZTpOLmJhc2VTdGF0ZSxiYXNlUXVldWU6Ti5iYXNlUXVldWUscXVldWU6Ti5xdWV1ZSxuZXh0Om51bGx9O251bGw9PT1LP3kubWVtb2l6ZWRTdGF0ZT1LPWE6Sz1LLm5leHQ9YX1yZXR1cm4gS31mdW5jdGlvbiBtYShhLGIpe3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgYj9iKGEpOmJ9ZnVuY3Rpb24gbGMoYSxiLGMpe2I9YmIoKTtjPWIucXVldWU7aWYobnVsbD09PWMpdGhyb3cgRXJyb3IobSgzMTEpKTtjLmxhc3RSZW5kZXJlZFJlZHVjZXI9YTt2YXIgZD1OLGU9ZC5iYXNlUXVldWUsZj1jLnBlbmRpbmc7aWYobnVsbCE9PWYpe2lmKG51bGwhPT1lKXt2YXIgZz1lLm5leHQ7ZS5uZXh0PWYubmV4dDtmLm5leHQ9Z31kLmJhc2VRdWV1ZT1lPWY7Yy5wZW5kaW5nPW51bGx9aWYobnVsbCE9PWUpe2U9ZS5uZXh0O2Q9ZC5iYXNlU3RhdGU7DQp2YXIgaD1nPWY9bnVsbCxrPWU7ZG97dmFyIGw9ay5sYW5lO2lmKChpYyZsKT09PWwpbnVsbCE9PWgmJihoPWgubmV4dD17bGFuZTowLGFjdGlvbjprLmFjdGlvbixlYWdlclJlZHVjZXI6ay5lYWdlclJlZHVjZXIsZWFnZXJTdGF0ZTprLmVhZ2VyU3RhdGUsbmV4dDpudWxsfSksZD1rLmVhZ2VyUmVkdWNlcj09PWE\/ay5lYWdlclN0YXRlOmEoZCxrLmFjdGlvbik7ZWxzZXt2YXIgbj17bGFuZTpsLGFjdGlvbjprLmFjdGlvbixlYWdlclJlZHVjZXI6ay5lYWdlclJlZHVjZXIsZWFnZXJTdGF0ZTprLmVhZ2VyU3RhdGUsbmV4dDpudWxsfTtudWxsPT09aD8oZz1oPW4sZj1kKTpoPWgubmV4dD1uO3kubGFuZXN8PWw7TGF8PWx9az1rLm5leHR9d2hpbGUobnVsbCE9PWsmJmshPT1lKTtudWxsPT09aD9mPWQ6aC5uZXh0PWc7WChkLGIubWVtb2l6ZWRTdGF0ZSl8fChmYT0hMCk7Yi5tZW1vaXplZFN0YXRlPWQ7Yi5iYXNlU3RhdGU9ZjtiLmJhc2VRdWV1ZT1oO2MubGFzdFJlbmRlcmVkU3RhdGU9DQpkfXJldHVybltiLm1lbW9pemVkU3RhdGUsYy5kaXNwYXRjaF19ZnVuY3Rpb24gbWMoYSxiLGMpe2I9YmIoKTtjPWIucXVldWU7aWYobnVsbD09PWMpdGhyb3cgRXJyb3IobSgzMTEpKTtjLmxhc3RSZW5kZXJlZFJlZHVjZXI9YTt2YXIgZD1jLmRpc3BhdGNoLGU9Yy5wZW5kaW5nLGY9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1lKXtjLnBlbmRpbmc9bnVsbDt2YXIgZz1lPWUubmV4dDtkbyBmPWEoZixnLmFjdGlvbiksZz1nLm5leHQ7d2hpbGUoZyE9PWUpO1goZixiLm1lbW9pemVkU3RhdGUpfHwoZmE9ITApO2IubWVtb2l6ZWRTdGF0ZT1mO251bGw9PT1iLmJhc2VRdWV1ZSYmKGIuYmFzZVN0YXRlPWYpO2MubGFzdFJlbmRlcmVkU3RhdGU9Zn1yZXR1cm5bZixkXX1mdW5jdGlvbiBtaChhLGIsYyl7dmFyIGQ9Yi5fZ2V0VmVyc2lvbjtkPWQoYi5fc291cmNlKTt2YXIgZT1iLl93b3JrSW5Qcm9ncmVzc1ZlcnNpb25QcmltYXJ5O2lmKG51bGwhPT1lKWE9ZT09PWQ7ZWxzZSBpZihhPWEubXV0YWJsZVJlYWRMYW5lcywNCmE9KGljJmEpPT09YSliLl93b3JrSW5Qcm9ncmVzc1ZlcnNpb25QcmltYXJ5PWQsQmIucHVzaChiKTtpZihhKXJldHVybiBjKGIuX3NvdXJjZSk7QmIucHVzaChiKTt0aHJvdyBFcnJvcihtKDM1MCkpO31mdW5jdGlvbiBuaChhLGIsYyxkKXt2YXIgZT1SO2lmKG51bGw9PT1lKXRocm93IEVycm9yKG0oMzQ5KSk7dmFyIGY9Yi5fZ2V0VmVyc2lvbixnPWYoYi5fc291cmNlKSxoPWpjLmN1cnJlbnQsaz1oLnVzZVN0YXRlKGZ1bmN0aW9uKCl7cmV0dXJuIG1oKGUsYixjKX0pLGw9a1sxXSxuPWtbMF07az1LO3ZhciB0PWEubWVtb2l6ZWRTdGF0ZSxyPXQucmVmcyx3PXIuZ2V0U25hcHNob3Qsej10LnNvdXJjZTt0PXQuc3Vic2NyaWJlO3ZhciBCPXk7YS5tZW1vaXplZFN0YXRlPXtyZWZzOnIsc291cmNlOmIsc3Vic2NyaWJlOmR9O2gudXNlRWZmZWN0KGZ1bmN0aW9uKCl7ci5nZXRTbmFwc2hvdD1jO3Iuc2V0U25hcHNob3Q9bDt2YXIgYT1mKGIuX3NvdXJjZSk7aWYoIVgoZyxhKSl7YT1jKGIuX3NvdXJjZSk7DQpYKG4sYSl8fChsKGEpLGE9T2EoQiksZS5tdXRhYmxlUmVhZExhbmVzfD1hJmUucGVuZGluZ0xhbmVzKTthPWUubXV0YWJsZVJlYWRMYW5lcztlLmVudGFuZ2xlZExhbmVzfD1hO2Zvcih2YXIgZD1lLmVudGFuZ2xlbWVudHMsaD1hOzA8aDspe3ZhciBrPTMxLUJhKGgpLG09MTw8aztkW2tdfD1hO2gmPX5tfX19LFtjLGIsZF0pO2gudXNlRWZmZWN0KGZ1bmN0aW9uKCl7cmV0dXJuIGQoYi5fc291cmNlLGZ1bmN0aW9uKCl7dmFyIGE9ci5nZXRTbmFwc2hvdCxjPXIuc2V0U25hcHNob3Q7dHJ5e2MoYShiLl9zb3VyY2UpKTt2YXIgZD1PYShCKTtlLm11dGFibGVSZWFkTGFuZXN8PWQmZS5wZW5kaW5nTGFuZXN9Y2F0Y2gocSl7YyhmdW5jdGlvbigpe3Rocm93IHE7fSl9fSl9LFtiLGRdKTtYKHcsYykmJlgoeixiKSYmWCh0LGQpfHwoYT17cGVuZGluZzpudWxsLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjptYSxsYXN0UmVuZGVyZWRTdGF0ZTpufSxhLmRpc3BhdGNoPWw9TGUuYmluZChudWxsLA0KeSxhKSxrLnF1ZXVlPWEsay5iYXNlUXVldWU9bnVsbCxuPW1oKGUsYixjKSxrLm1lbW9pemVkU3RhdGU9ay5iYXNlU3RhdGU9bik7cmV0dXJuIG59ZnVuY3Rpb24gb2goYSxiLGMpe3ZhciBkPWJiKCk7cmV0dXJuIG5oKGQsYSxiLGMpfWZ1bmN0aW9uIG5jKGEpe3ZhciBiPWFiKCk7ImZ1bmN0aW9uIj09PXR5cGVvZiBhJiYoYT1hKCkpO2IubWVtb2l6ZWRTdGF0ZT1iLmJhc2VTdGF0ZT1hO2E9Yi5xdWV1ZT17cGVuZGluZzpudWxsLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjptYSxsYXN0UmVuZGVyZWRTdGF0ZTphfTthPWEuZGlzcGF0Y2g9TGUuYmluZChudWxsLHksYSk7cmV0dXJuW2IubWVtb2l6ZWRTdGF0ZSxhXX1mdW5jdGlvbiBsZChhLGIsYyxkKXthPXt0YWc6YSxjcmVhdGU6YixkZXN0cm95OmMsZGVwczpkLG5leHQ6bnVsbH07Yj15LnVwZGF0ZVF1ZXVlO251bGw9PT1iPyhiPXtsYXN0RWZmZWN0Om51bGx9LHkudXBkYXRlUXVldWU9YixiLmxhc3RFZmZlY3Q9DQphLm5leHQ9YSk6KGM9Yi5sYXN0RWZmZWN0LG51bGw9PT1jP2IubGFzdEVmZmVjdD1hLm5leHQ9YTooZD1jLm5leHQsYy5uZXh0PWEsYS5uZXh0PWQsYi5sYXN0RWZmZWN0PWEpKTtyZXR1cm4gYX1mdW5jdGlvbiBwaChhKXt2YXIgYj1hYigpO2E9e2N1cnJlbnQ6YX07cmV0dXJuIGIubWVtb2l6ZWRTdGF0ZT1hfWZ1bmN0aW9uIG1kKGEpe3JldHVybiBiYigpLm1lbW9pemVkU3RhdGV9ZnVuY3Rpb24gTWUoYSxiLGMsZCl7dmFyIGU9YWIoKTt5LmZsYWdzfD1hO2UubWVtb2l6ZWRTdGF0ZT1sZCgxfGIsYyx2b2lkIDAsdm9pZCAwPT09ZD9udWxsOmQpfWZ1bmN0aW9uIE5lKGEsYixjLGQpe3ZhciBlPWJiKCk7ZD12b2lkIDA9PT1kP251bGw6ZDt2YXIgZj12b2lkIDA7aWYobnVsbCE9PU4pe3ZhciBnPU4ubWVtb2l6ZWRTdGF0ZTtmPWcuZGVzdHJveTtpZihudWxsIT09ZCYmSmUoZCxnLmRlcHMpKXtsZChiLGMsZixkKTtyZXR1cm59fXkuZmxhZ3N8PWE7ZS5tZW1vaXplZFN0YXRlPWxkKDF8DQpiLGMsZixkKX1mdW5jdGlvbiBxaChhLGIpe3JldHVybiBNZSg1MTYsNCxhLGIpfWZ1bmN0aW9uIG5kKGEsYil7cmV0dXJuIE5lKDUxNiw0LGEsYil9ZnVuY3Rpb24gcmgoYSxiKXtyZXR1cm4gTmUoNCwyLGEsYil9ZnVuY3Rpb24gc2goYSxiKXtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGIpcmV0dXJuIGE9YSgpLGIoYSksZnVuY3Rpb24oKXtiKG51bGwpfTtpZihudWxsIT09YiYmdm9pZCAwIT09YilyZXR1cm4gYT1hKCksYi5jdXJyZW50PWEsZnVuY3Rpb24oKXtiLmN1cnJlbnQ9bnVsbH19ZnVuY3Rpb24gdGgoYSxiLGMpe2M9bnVsbCE9PWMmJnZvaWQgMCE9PWM\/Yy5jb25jYXQoW2FdKTpudWxsO3JldHVybiBOZSg0LDIsc2guYmluZChudWxsLGIsYSksYyl9ZnVuY3Rpb24gT2UoYSxiKXt9ZnVuY3Rpb24gdWgoYSxiKXt2YXIgYz1iYigpO2I9dm9pZCAwPT09Yj9udWxsOmI7dmFyIGQ9Yy5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1kJiZudWxsIT09YiYmSmUoYixkWzFdKSlyZXR1cm4gZFswXTsNCmMubWVtb2l6ZWRTdGF0ZT1bYSxiXTtyZXR1cm4gYX1mdW5jdGlvbiB2aChhLGIpe3ZhciBjPWJiKCk7Yj12b2lkIDA9PT1iP251bGw6Yjt2YXIgZD1jLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWQmJm51bGwhPT1iJiZKZShiLGRbMV0pKXJldHVybiBkWzBdO2E9YSgpO2MubWVtb2l6ZWRTdGF0ZT1bYSxiXTtyZXR1cm4gYX1mdW5jdGlvbiBzaihhLGIpe3ZhciBjPXdiKCk7WmEoOTg+Yz85ODpjLGZ1bmN0aW9uKCl7YSghMCl9KTtaYSg5NzxjPzk3OmMsZnVuY3Rpb24oKXt2YXIgYz1hYS50cmFuc2l0aW9uO2FhLnRyYW5zaXRpb249MTt0cnl7YSghMSksYigpfWZpbmFsbHl7YWEudHJhbnNpdGlvbj1jfX0pfWZ1bmN0aW9uIExlKGEsYixjKXt2YXIgZD1XKCksZT1PYShhKSxmPXtsYW5lOmUsYWN0aW9uOmMsZWFnZXJSZWR1Y2VyOm51bGwsZWFnZXJTdGF0ZTpudWxsLG5leHQ6bnVsbH0sZz1iLnBlbmRpbmc7bnVsbD09PWc\/Zi5uZXh0PWY6KGYubmV4dD1nLm5leHQsZy5uZXh0PWYpOw0KYi5wZW5kaW5nPWY7Zz1hLmFsdGVybmF0ZTtpZihhPT09eXx8bnVsbCE9PWcmJmc9PT15KWtjPWtkPSEwO2Vsc2V7aWYoMD09PWEubGFuZXMmJihudWxsPT09Z3x8MD09PWcubGFuZXMpJiYoZz1iLmxhc3RSZW5kZXJlZFJlZHVjZXIsbnVsbCE9PWcpKXRyeXt2YXIgaD1iLmxhc3RSZW5kZXJlZFN0YXRlLGs9ZyhoLGMpO2YuZWFnZXJSZWR1Y2VyPWc7Zi5lYWdlclN0YXRlPWs7aWYoWChrLGgpKXJldHVybn1jYXRjaCh2KXt9ZmluYWxseXt9UGEoYSxlLGQpfX1mdW5jdGlvbiBVKGEsYixjLGQpe2IuY2hpbGQ9bnVsbD09PWE\/d2goYixudWxsLGMsZCk6b2QoYixhLmNoaWxkLGMsZCl9ZnVuY3Rpb24geGgoYSxiLGMsZCxlKXtjPWMucmVuZGVyO3ZhciBmPWIucmVmO3liKGIsZSk7ZD1LZShhLGIsYyxkLGYsZSk7aWYobnVsbCE9PWEmJiFmYSlyZXR1cm4gYi51cGRhdGVRdWV1ZT1hLnVwZGF0ZVF1ZXVlLGIuZmxhZ3MmPS01MTcsYS5sYW5lcyY9fmUsc2EoYSxiLGUpO2IuZmxhZ3N8PTE7DQpVKGEsYixkLGUpO3JldHVybiBiLmNoaWxkfWZ1bmN0aW9uIHloKGEsYixjLGQsZSxmKXtpZihudWxsPT09YSl7dmFyIGc9Yy50eXBlO2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgZyYmIVBlKGcpJiZ2b2lkIDA9PT1nLmRlZmF1bHRQcm9wcyYmbnVsbD09PWMuY29tcGFyZSYmdm9pZCAwPT09Yy5kZWZhdWx0UHJvcHMpcmV0dXJuIGIudGFnPTE1LGIudHlwZT1nLHpoKGEsYixnLGQsZSxmKTthPWZkKGMudHlwZSxudWxsLGQsYixiLm1vZGUsZik7YS5yZWY9Yi5yZWY7YS5yZXR1cm49YjtyZXR1cm4gYi5jaGlsZD1hfWc9YS5jaGlsZDtpZigwPT09KGUmZikmJihlPWcubWVtb2l6ZWRQcm9wcyxjPWMuY29tcGFyZSxjPW51bGwhPT1jP2M6WmIsYyhlLGQpJiZhLnJlZj09PWIucmVmKSlyZXR1cm4gc2EoYSxiLGYpO2IuZmxhZ3N8PTE7YT1NYShnLGQpO2EucmVmPWIucmVmO2EucmV0dXJuPWI7cmV0dXJuIGIuY2hpbGQ9YX1mdW5jdGlvbiB6aChhLGIsYyxkLGUsZil7aWYobnVsbCE9PWEmJlpiKGEubWVtb2l6ZWRQcm9wcywNCmQpJiZhLnJlZj09PWIucmVmKWlmKGZhPSExLDAhPT0oZiZlKSkwIT09KGEuZmxhZ3MmMTYzODQpJiYoZmE9ITApO2Vsc2UgcmV0dXJuIGIubGFuZXM9YS5sYW5lcyxzYShhLGIsZik7cmV0dXJuIFFlKGEsYixjLGQsZil9ZnVuY3Rpb24gUmUoYSxiLGMpe3ZhciBkPWIucGVuZGluZ1Byb3BzLGU9ZC5jaGlsZHJlbixmPW51bGwhPT1hP2EubWVtb2l6ZWRTdGF0ZTpudWxsO2lmKCJoaWRkZW4iPT09ZC5tb2RlfHwidW5zdGFibGUtZGVmZXItd2l0aG91dC1oaWRpbmciPT09ZC5tb2RlKWlmKDA9PT0oYi5tb2RlJjQpKWIubWVtb2l6ZWRTdGF0ZT17YmFzZUxhbmVzOjB9LHBkKGIsYyk7ZWxzZSBpZigwIT09KGMmMTA3Mzc0MTgyNCkpYi5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6MH0scGQoYixudWxsIT09Zj9mLmJhc2VMYW5lczpjKTtlbHNlIHJldHVybiBhPW51bGwhPT1mP2YuYmFzZUxhbmVzfGM6YyxiLmxhbmVzPWIuY2hpbGRMYW5lcz0xMDczNzQxODI0LGIubWVtb2l6ZWRTdGF0ZT0NCntiYXNlTGFuZXM6YX0scGQoYixhKSxudWxsO2Vsc2UgbnVsbCE9PWY\/KGQ9Zi5iYXNlTGFuZXN8YyxiLm1lbW9pemVkU3RhdGU9bnVsbCk6ZD1jLHBkKGIsZCk7VShhLGIsZSxjKTtyZXR1cm4gYi5jaGlsZH1mdW5jdGlvbiBBaChhLGIpe3ZhciBjPWIucmVmO2lmKG51bGw9PT1hJiZudWxsIT09Y3x8bnVsbCE9PWEmJmEucmVmIT09YyliLmZsYWdzfD0xMjh9ZnVuY3Rpb24gUWUoYSxiLGMsZCxlKXt2YXIgZj1TKGMpP1lhOkQuY3VycmVudDtmPXZiKGIsZik7eWIoYixlKTtjPUtlKGEsYixjLGQsZixlKTtpZihudWxsIT09YSYmIWZhKXJldHVybiBiLnVwZGF0ZVF1ZXVlPWEudXBkYXRlUXVldWUsYi5mbGFncyY9LTUxNyxhLmxhbmVzJj1+ZSxzYShhLGIsZSk7Yi5mbGFnc3w9MTtVKGEsYixjLGUpO3JldHVybiBiLmNoaWxkfWZ1bmN0aW9uIEJoKGEsYixjLGQsZSl7aWYoUyhjKSl7dmFyIGY9ITA7WGMoYil9ZWxzZSBmPSExO3liKGIsZSk7aWYobnVsbD09PWIuc3RhdGVOb2RlKW51bGwhPT0NCmEmJihhLmFsdGVybmF0ZT1udWxsLGIuYWx0ZXJuYXRlPW51bGwsYi5mbGFnc3w9MiksZWgoYixjLGQpLEJlKGIsYyxkLGUpLGQ9ITA7ZWxzZSBpZihudWxsPT09YSl7dmFyIGc9Yi5zdGF0ZU5vZGUsaD1iLm1lbW9pemVkUHJvcHM7Zy5wcm9wcz1oO3ZhciBrPWcuY29udGV4dCxsPWMuY29udGV4dFR5cGU7Im9iamVjdCI9PT10eXBlb2YgbCYmbnVsbCE9PWw\/bD1ZKGwpOihsPVMoYyk\/WWE6RC5jdXJyZW50LGw9dmIoYixsKSk7dmFyIG09Yy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMsbj0iZnVuY3Rpb24iPT09dHlwZW9mIG18fCJmdW5jdGlvbiI9PT10eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZTtufHwiZnVuY3Rpb24iIT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJiJmdW5jdGlvbiIhPT10eXBlb2YgZy5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzfHwoaCE9PWR8fGshPT1sKSYmZmgoYixnLGQsbCk7S2E9ITE7dmFyIHI9Yi5tZW1vaXplZFN0YXRlOw0KZy5zdGF0ZT1yO2NjKGIsZCxnLGUpO2s9Yi5tZW1vaXplZFN0YXRlO2ghPT1kfHxyIT09a3x8Si5jdXJyZW50fHxLYT8oImZ1bmN0aW9uIj09PXR5cGVvZiBtJiYoY2QoYixjLG0sZCksaz1iLm1lbW9pemVkU3RhdGUpLChoPUthfHxkaChiLGMsaCxkLHIsayxsKSk\/KG58fCJmdW5jdGlvbiIhPT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiYiZnVuY3Rpb24iIT09dHlwZW9mIGcuY29tcG9uZW50V2lsbE1vdW50fHwoImZ1bmN0aW9uIj09PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxNb3VudCYmZy5jb21wb25lbnRXaWxsTW91bnQoKSwiZnVuY3Rpb24iPT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmZy5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCkpLCJmdW5jdGlvbiI9PT10eXBlb2YgZy5jb21wb25lbnREaWRNb3VudCYmKGIuZmxhZ3N8PTQpKTooImZ1bmN0aW9uIj09PXR5cGVvZiBnLmNvbXBvbmVudERpZE1vdW50JiYoYi5mbGFnc3w9NCksDQpiLm1lbW9pemVkUHJvcHM9ZCxiLm1lbW9pemVkU3RhdGU9ayksZy5wcm9wcz1kLGcuc3RhdGU9ayxnLmNvbnRleHQ9bCxkPWgpOigiZnVuY3Rpb24iPT09dHlwZW9mIGcuY29tcG9uZW50RGlkTW91bnQmJihiLmZsYWdzfD00KSxkPSExKX1lbHNle2c9Yi5zdGF0ZU5vZGU7YWgoYSxiKTtoPWIubWVtb2l6ZWRQcm9wcztsPWIudHlwZT09PWIuZWxlbWVudFR5cGU\/aDplYShiLnR5cGUsaCk7Zy5wcm9wcz1sO249Yi5wZW5kaW5nUHJvcHM7cj1nLmNvbnRleHQ7az1jLmNvbnRleHRUeXBlOyJvYmplY3QiPT09dHlwZW9mIGsmJm51bGwhPT1rP2s9WShrKTooaz1TKGMpP1lhOkQuY3VycmVudCxrPXZiKGIsaykpO3ZhciB0PWMuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzOyhtPSJmdW5jdGlvbiI9PT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKXx8ImZ1bmN0aW9uIiE9PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiYNCiJmdW5jdGlvbiIhPT10eXBlb2YgZy5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzfHwoaCE9PW58fHIhPT1rKSYmZmgoYixnLGQsayk7S2E9ITE7cj1iLm1lbW9pemVkU3RhdGU7Zy5zdGF0ZT1yO2NjKGIsZCxnLGUpO3ZhciB3PWIubWVtb2l6ZWRTdGF0ZTtoIT09bnx8ciE9PXd8fEouY3VycmVudHx8S2E\/KCJmdW5jdGlvbiI9PT10eXBlb2YgdCYmKGNkKGIsYyx0LGQpLHc9Yi5tZW1vaXplZFN0YXRlKSwobD1LYXx8ZGgoYixjLGwsZCxyLHcsaykpPyhtfHwiZnVuY3Rpb24iIT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUmJiJmdW5jdGlvbiIhPT10eXBlb2YgZy5jb21wb25lbnRXaWxsVXBkYXRlfHwoImZ1bmN0aW9uIj09PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxVcGRhdGUmJmcuY29tcG9uZW50V2lsbFVwZGF0ZShkLHcsayksImZ1bmN0aW9uIj09PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlJiZnLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlKGQsDQp3LGspKSwiZnVuY3Rpb24iPT09dHlwZW9mIGcuY29tcG9uZW50RGlkVXBkYXRlJiYoYi5mbGFnc3w9NCksImZ1bmN0aW9uIj09PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlJiYoYi5mbGFnc3w9MjU2KSk6KCJmdW5jdGlvbiIhPT10eXBlb2YgZy5jb21wb25lbnREaWRVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJnI9PT1hLm1lbW9pemVkU3RhdGV8fChiLmZsYWdzfD00KSwiZnVuY3Rpb24iIT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJnI9PT1hLm1lbW9pemVkU3RhdGV8fChiLmZsYWdzfD0yNTYpLGIubWVtb2l6ZWRQcm9wcz1kLGIubWVtb2l6ZWRTdGF0ZT13KSxnLnByb3BzPWQsZy5zdGF0ZT13LGcuY29udGV4dD1rLGQ9bCk6KCJmdW5jdGlvbiIhPT10eXBlb2YgZy5jb21wb25lbnREaWRVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJnI9PT1hLm1lbW9pemVkU3RhdGV8fChiLmZsYWdzfD00KSwiZnVuY3Rpb24iIT09DQp0eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8aD09PWEubWVtb2l6ZWRQcm9wcyYmcj09PWEubWVtb2l6ZWRTdGF0ZXx8KGIuZmxhZ3N8PTI1NiksZD0hMSl9cmV0dXJuIFNlKGEsYixjLGQsZixlKX1mdW5jdGlvbiBTZShhLGIsYyxkLGUsZil7QWgoYSxiKTt2YXIgZz0wIT09KGIuZmxhZ3MmNjQpO2lmKCFkJiYhZylyZXR1cm4gZSYmVGcoYixjLCExKSxzYShhLGIsZik7ZD1iLnN0YXRlTm9kZTt0ai5jdXJyZW50PWI7dmFyIGg9ZyYmImZ1bmN0aW9uIiE9PXR5cGVvZiBjLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcj9udWxsOmQucmVuZGVyKCk7Yi5mbGFnc3w9MTtudWxsIT09YSYmZz8oYi5jaGlsZD1vZChiLGEuY2hpbGQsbnVsbCxmKSxiLmNoaWxkPW9kKGIsbnVsbCxoLGYpKTpVKGEsYixoLGYpO2IubWVtb2l6ZWRTdGF0ZT1kLnN0YXRlO2UmJlRnKGIsYywhMCk7cmV0dXJuIGIuY2hpbGR9ZnVuY3Rpb24gQ2goYSl7dmFyIGI9YS5zdGF0ZU5vZGU7Yi5wZW5kaW5nQ29udGV4dD8NClJnKGEsYi5wZW5kaW5nQ29udGV4dCxiLnBlbmRpbmdDb250ZXh0IT09Yi5jb250ZXh0KTpiLmNvbnRleHQmJlJnKGEsYi5jb250ZXh0LCExKTtFZShhLGIuY29udGFpbmVySW5mbyl9ZnVuY3Rpb24gRGgoYSxiLGMpe3ZhciBkPWIucGVuZGluZ1Byb3BzLGU9RS5jdXJyZW50LGY9ITEsZzsoZz0wIT09KGIuZmxhZ3MmNjQpKXx8KGc9bnVsbCE9PWEmJm51bGw9PT1hLm1lbW9pemVkU3RhdGU\/ITE6MCE9PShlJjIpKTtnPyhmPSEwLGIuZmxhZ3MmPS02NSk6bnVsbCE9PWEmJm51bGw9PT1hLm1lbW9pemVkU3RhdGV8fHZvaWQgMD09PWQuZmFsbGJhY2t8fCEwPT09ZC51bnN0YWJsZV9hdm9pZFRoaXNGYWxsYmFja3x8KGV8PTEpO0EoRSxlJjEpO2lmKG51bGw9PT1hKXt2b2lkIDAhPT1kLmZhbGxiYWNrJiZHZShiKTthPWQuY2hpbGRyZW47ZT1kLmZhbGxiYWNrO2lmKGYpcmV0dXJuIGE9RWgoYixhLGUsYyksYi5jaGlsZC5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6Y30sYi5tZW1vaXplZFN0YXRlPQ0KcWQsYTtpZigibnVtYmVyIj09PXR5cGVvZiBkLnVuc3RhYmxlX2V4cGVjdGVkTG9hZFRpbWUpcmV0dXJuIGE9RWgoYixhLGUsYyksYi5jaGlsZC5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6Y30sYi5tZW1vaXplZFN0YXRlPXFkLGIubGFuZXM9MzM1NTQ0MzIsYTtjPVRlKHttb2RlOiJ2aXNpYmxlIixjaGlsZHJlbjphfSxiLm1vZGUsYyxudWxsKTtjLnJldHVybj1iO3JldHVybiBiLmNoaWxkPWN9aWYobnVsbCE9PWEubWVtb2l6ZWRTdGF0ZSl7aWYoZilyZXR1cm4gZD1GaChhLGIsZC5jaGlsZHJlbixkLmZhbGxiYWNrLGMpLGY9Yi5jaGlsZCxlPWEuY2hpbGQubWVtb2l6ZWRTdGF0ZSxmLm1lbW9pemVkU3RhdGU9bnVsbD09PWU\/e2Jhc2VMYW5lczpjfTp7YmFzZUxhbmVzOmUuYmFzZUxhbmVzfGN9LGYuY2hpbGRMYW5lcz1hLmNoaWxkTGFuZXMmfmMsYi5tZW1vaXplZFN0YXRlPXFkLGQ7Yz1HaChhLGIsZC5jaGlsZHJlbixjKTtiLm1lbW9pemVkU3RhdGU9bnVsbDtyZXR1cm4gY31pZihmKXJldHVybiBkPQ0KRmgoYSxiLGQuY2hpbGRyZW4sZC5mYWxsYmFjayxjKSxmPWIuY2hpbGQsZT1hLmNoaWxkLm1lbW9pemVkU3RhdGUsZi5tZW1vaXplZFN0YXRlPW51bGw9PT1lP3tiYXNlTGFuZXM6Y306e2Jhc2VMYW5lczplLmJhc2VMYW5lc3xjfSxmLmNoaWxkTGFuZXM9YS5jaGlsZExhbmVzJn5jLGIubWVtb2l6ZWRTdGF0ZT1xZCxkO2M9R2goYSxiLGQuY2hpbGRyZW4sYyk7Yi5tZW1vaXplZFN0YXRlPW51bGw7cmV0dXJuIGN9ZnVuY3Rpb24gRWgoYSxiLGMsZCl7dmFyIGU9YS5tb2RlLGY9YS5jaGlsZDtiPXttb2RlOiJoaWRkZW4iLGNoaWxkcmVuOmJ9OzA9PT0oZSYyKSYmbnVsbCE9PWY\/KGYuY2hpbGRMYW5lcz0wLGYucGVuZGluZ1Byb3BzPWIpOmY9VGUoYixlLDAsbnVsbCk7Yz16YihjLGUsZCxudWxsKTtmLnJldHVybj1hO2MucmV0dXJuPWE7Zi5zaWJsaW5nPWM7YS5jaGlsZD1mO3JldHVybiBjfWZ1bmN0aW9uIEdoKGEsYixjLGQpe3ZhciBlPWEuY2hpbGQ7YT1lLnNpYmxpbmc7Yz1NYShlLA0Ke21vZGU6InZpc2libGUiLGNoaWxkcmVuOmN9KTswPT09KGIubW9kZSYyKSYmKGMubGFuZXM9ZCk7Yy5yZXR1cm49YjtjLnNpYmxpbmc9bnVsbDtudWxsIT09YSYmKGEubmV4dEVmZmVjdD1udWxsLGEuZmxhZ3M9OCxiLmZpcnN0RWZmZWN0PWIubGFzdEVmZmVjdD1hKTtyZXR1cm4gYi5jaGlsZD1jfWZ1bmN0aW9uIEZoKGEsYixjLGQsZSl7dmFyIGY9Yi5tb2RlLGc9YS5jaGlsZDthPWcuc2libGluZzt2YXIgaD17bW9kZToiaGlkZGVuIixjaGlsZHJlbjpjfTswPT09KGYmMikmJmIuY2hpbGQhPT1nPyhjPWIuY2hpbGQsYy5jaGlsZExhbmVzPTAsYy5wZW5kaW5nUHJvcHM9aCxnPWMubGFzdEVmZmVjdCxudWxsIT09Zz8oYi5maXJzdEVmZmVjdD1jLmZpcnN0RWZmZWN0LGIubGFzdEVmZmVjdD1nLGcubmV4dEVmZmVjdD1udWxsKTpiLmZpcnN0RWZmZWN0PWIubGFzdEVmZmVjdD1udWxsKTpjPU1hKGcsaCk7bnVsbCE9PWE\/ZD1NYShhLGQpOihkPXpiKGQsZixlLG51bGwpLGQuZmxhZ3N8PQ0KMik7ZC5yZXR1cm49YjtjLnJldHVybj1iO2Muc2libGluZz1kO2IuY2hpbGQ9YztyZXR1cm4gZH1mdW5jdGlvbiBIaChhLGIpe2EubGFuZXN8PWI7dmFyIGM9YS5hbHRlcm5hdGU7bnVsbCE9PWMmJihjLmxhbmVzfD1iKTskZyhhLnJldHVybixiKX1mdW5jdGlvbiBVZShhLGIsYyxkLGUsZil7dmFyIGc9YS5tZW1vaXplZFN0YXRlO251bGw9PT1nP2EubWVtb2l6ZWRTdGF0ZT17aXNCYWNrd2FyZHM6YixyZW5kZXJpbmc6bnVsbCxyZW5kZXJpbmdTdGFydFRpbWU6MCxsYXN0OmQsdGFpbDpjLHRhaWxNb2RlOmUsbGFzdEVmZmVjdDpmfTooZy5pc0JhY2t3YXJkcz1iLGcucmVuZGVyaW5nPW51bGwsZy5yZW5kZXJpbmdTdGFydFRpbWU9MCxnLmxhc3Q9ZCxnLnRhaWw9YyxnLnRhaWxNb2RlPWUsZy5sYXN0RWZmZWN0PWYpfWZ1bmN0aW9uIEloKGEsYixjKXt2YXIgZD1iLnBlbmRpbmdQcm9wcyxlPWQucmV2ZWFsT3JkZXIsZj1kLnRhaWw7VShhLGIsZC5jaGlsZHJlbixjKTtkPUUuY3VycmVudDsNCmlmKDAhPT0oZCYyKSlkPWQmMXwyLGIuZmxhZ3N8PTY0O2Vsc2V7aWYobnVsbCE9PWEmJjAhPT0oYS5mbGFncyY2NCkpYTpmb3IoYT1iLmNoaWxkO251bGwhPT1hOyl7aWYoMTM9PT1hLnRhZyludWxsIT09YS5tZW1vaXplZFN0YXRlJiZIaChhLGMpO2Vsc2UgaWYoMTk9PT1hLnRhZylIaChhLGMpO2Vsc2UgaWYobnVsbCE9PWEuY2hpbGQpe2EuY2hpbGQucmV0dXJuPWE7YT1hLmNoaWxkO2NvbnRpbnVlfWlmKGE9PT1iKWJyZWFrIGE7Zm9yKDtudWxsPT09YS5zaWJsaW5nOyl7aWYobnVsbD09PWEucmV0dXJufHxhLnJldHVybj09PWIpYnJlYWsgYTthPWEucmV0dXJufWEuc2libGluZy5yZXR1cm49YS5yZXR1cm47YT1hLnNpYmxpbmd9ZCY9MX1BKEUsZCk7aWYoMD09PShiLm1vZGUmMikpYi5tZW1vaXplZFN0YXRlPW51bGw7ZWxzZSBzd2l0Y2goZSl7Y2FzZSAiZm9yd2FyZHMiOmM9Yi5jaGlsZDtmb3IoZT1udWxsO251bGwhPT1jOylhPWMuYWx0ZXJuYXRlLG51bGwhPT1hJiZudWxsPT09DQpoZChhKSYmKGU9YyksYz1jLnNpYmxpbmc7Yz1lO251bGw9PT1jPyhlPWIuY2hpbGQsYi5jaGlsZD1udWxsKTooZT1jLnNpYmxpbmcsYy5zaWJsaW5nPW51bGwpO1VlKGIsITEsZSxjLGYsYi5sYXN0RWZmZWN0KTticmVhaztjYXNlICJiYWNrd2FyZHMiOmM9bnVsbDtlPWIuY2hpbGQ7Zm9yKGIuY2hpbGQ9bnVsbDtudWxsIT09ZTspe2E9ZS5hbHRlcm5hdGU7aWYobnVsbCE9PWEmJm51bGw9PT1oZChhKSl7Yi5jaGlsZD1lO2JyZWFrfWE9ZS5zaWJsaW5nO2Uuc2libGluZz1jO2M9ZTtlPWF9VWUoYiwhMCxjLG51bGwsZixiLmxhc3RFZmZlY3QpO2JyZWFrO2Nhc2UgInRvZ2V0aGVyIjpVZShiLCExLG51bGwsbnVsbCx2b2lkIDAsYi5sYXN0RWZmZWN0KTticmVhaztkZWZhdWx0OmIubWVtb2l6ZWRTdGF0ZT1udWxsfXJldHVybiBiLmNoaWxkfWZ1bmN0aW9uIHNhKGEsYixjKXtudWxsIT09YSYmKGIuZGVwZW5kZW5jaWVzPWEuZGVwZW5kZW5jaWVzKTtMYXw9Yi5sYW5lcztpZigwIT09KGMmDQpiLmNoaWxkTGFuZXMpKXtpZihudWxsIT09YSYmYi5jaGlsZCE9PWEuY2hpbGQpdGhyb3cgRXJyb3IobSgxNTMpKTtpZihudWxsIT09Yi5jaGlsZCl7YT1iLmNoaWxkO2M9TWEoYSxhLnBlbmRpbmdQcm9wcyk7Yi5jaGlsZD1jO2ZvcihjLnJldHVybj1iO251bGwhPT1hLnNpYmxpbmc7KWE9YS5zaWJsaW5nLGM9Yy5zaWJsaW5nPU1hKGEsYS5wZW5kaW5nUHJvcHMpLGMucmV0dXJuPWI7Yy5zaWJsaW5nPW51bGx9cmV0dXJuIGIuY2hpbGR9cmV0dXJuIG51bGx9ZnVuY3Rpb24gb2MoYSxiKXtpZighbGEpc3dpdGNoKGEudGFpbE1vZGUpe2Nhc2UgImhpZGRlbiI6Yj1hLnRhaWw7Zm9yKHZhciBjPW51bGw7bnVsbCE9PWI7KW51bGwhPT1iLmFsdGVybmF0ZSYmKGM9YiksYj1iLnNpYmxpbmc7bnVsbD09PWM\/YS50YWlsPW51bGw6Yy5zaWJsaW5nPW51bGw7YnJlYWs7Y2FzZSAiY29sbGFwc2VkIjpjPWEudGFpbDtmb3IodmFyIGQ9bnVsbDtudWxsIT09YzspbnVsbCE9PWMuYWx0ZXJuYXRlJiYNCihkPWMpLGM9Yy5zaWJsaW5nO251bGw9PT1kP2J8fG51bGw9PT1hLnRhaWw\/YS50YWlsPW51bGw6YS50YWlsLnNpYmxpbmc9bnVsbDpkLnNpYmxpbmc9bnVsbH19ZnVuY3Rpb24gdWooYSxiLGMpe3ZhciBkPWIucGVuZGluZ1Byb3BzO3N3aXRjaChiLnRhZyl7Y2FzZSAyOmNhc2UgMTY6Y2FzZSAxNTpjYXNlIDA6Y2FzZSAxMTpjYXNlIDc6Y2FzZSA4OmNhc2UgMTI6Y2FzZSA5OmNhc2UgMTQ6cmV0dXJuIG51bGw7Y2FzZSAxOnJldHVybiBTKGIudHlwZSkmJih0KEopLHQoRCkpLG51bGw7Y2FzZSAzOkFiKCk7dChKKTt0KEQpO0llKCk7ZD1iLnN0YXRlTm9kZTtkLnBlbmRpbmdDb250ZXh0JiYoZC5jb250ZXh0PWQucGVuZGluZ0NvbnRleHQsZC5wZW5kaW5nQ29udGV4dD1udWxsKTtpZihudWxsPT09YXx8bnVsbD09PWEuY2hpbGQpaWQoYik\/Yi5mbGFnc3w9NDpkLmh5ZHJhdGV8fChiLmZsYWdzfD0yNTYpO0poKGIpO3JldHVybiBudWxsO2Nhc2UgNTpGZShiKTt2YXIgZT0kYShnYy5jdXJyZW50KTsNCmM9Yi50eXBlO2lmKG51bGwhPT1hJiZudWxsIT1iLnN0YXRlTm9kZSl2aihhLGIsYyxkLGUpLGEucmVmIT09Yi5yZWYmJihiLmZsYWdzfD0xMjgpO2Vsc2V7aWYoIWQpe2lmKG51bGw9PT1iLnN0YXRlTm9kZSl0aHJvdyBFcnJvcihtKDE2NikpO3JldHVybiBudWxsfWE9JGEoa2EuY3VycmVudCk7aWYoaWQoYikpe2Q9Yi5zdGF0ZU5vZGU7Yz1iLnR5cGU7dmFyIGY9Yi5tZW1vaXplZFByb3BzO2RbRmFdPWI7ZFtXY109Zjtzd2l0Y2goYyl7Y2FzZSAiZGlhbG9nIjp6KCJjYW5jZWwiLGQpO3ooImNsb3NlIixkKTticmVhaztjYXNlICJpZnJhbWUiOmNhc2UgIm9iamVjdCI6Y2FzZSAiZW1iZWQiOnooImxvYWQiLGQpO2JyZWFrO2Nhc2UgInZpZGVvIjpjYXNlICJhdWRpbyI6Zm9yKGE9MDthPHBjLmxlbmd0aDthKyspeihwY1thXSxkKTticmVhaztjYXNlICJzb3VyY2UiOnooImVycm9yIixkKTticmVhaztjYXNlICJpbWciOmNhc2UgImltYWdlIjpjYXNlICJsaW5rIjp6KCJlcnJvciIsZCk7DQp6KCJsb2FkIixkKTticmVhaztjYXNlICJkZXRhaWxzIjp6KCJ0b2dnbGUiLGQpO2JyZWFrO2Nhc2UgImlucHV0IjpGZihkLGYpO3ooImludmFsaWQiLGQpO2JyZWFrO2Nhc2UgInNlbGVjdCI6ZC5fd3JhcHBlclN0YXRlPXt3YXNNdWx0aXBsZTohIWYubXVsdGlwbGV9O3ooImludmFsaWQiLGQpO2JyZWFrO2Nhc2UgInRleHRhcmVhIjpJZihkLGYpLHooImludmFsaWQiLGQpfVNkKGMsZik7YT1udWxsO2Zvcih2YXIgZyBpbiBmKWYuaGFzT3duUHJvcGVydHkoZykmJihlPWZbZ10sImNoaWxkcmVuIj09PWc\/InN0cmluZyI9PT10eXBlb2YgZT9kLnRleHRDb250ZW50IT09ZSYmKGE9WyJjaGlsZHJlbiIsZV0pOiJudW1iZXIiPT09dHlwZW9mIGUmJmQudGV4dENvbnRlbnQhPT0iIitlJiYoYT1bImNoaWxkcmVuIiwiIitlXSk6SWIuaGFzT3duUHJvcGVydHkoZykmJm51bGwhPWUmJiJvblNjcm9sbCI9PT1nJiZ6KCJzY3JvbGwiLGQpKTtzd2l0Y2goYyl7Y2FzZSAiaW5wdXQiOkZjKGQpO0hmKGQsDQpmLCEwKTticmVhaztjYXNlICJ0ZXh0YXJlYSI6RmMoZCk7S2YoZCk7YnJlYWs7Y2FzZSAic2VsZWN0IjpjYXNlICJvcHRpb24iOmJyZWFrO2RlZmF1bHQ6ImZ1bmN0aW9uIj09PXR5cGVvZiBmLm9uQ2xpY2smJihkLm9uY2xpY2s9VmMpfWQ9YTtiLnVwZGF0ZVF1ZXVlPWQ7bnVsbCE9PWQmJihiLmZsYWdzfD00KX1lbHNle2c9OT09PWUubm9kZVR5cGU\/ZTplLm93bmVyRG9jdW1lbnQ7Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPT09YSYmKGE9TGYoYykpOyJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj09PWE\/InNjcmlwdCI9PT1jPyhhPWcuY3JlYXRlRWxlbWVudCgiZGl2IiksYS5pbm5lckhUTUw9IjxzY3JpcHQ+XHgzYy9zY3JpcHQ+IixhPWEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKSk6InN0cmluZyI9PT10eXBlb2YgZC5pcz9hPWcuY3JlYXRlRWxlbWVudChjLHtpczpkLmlzfSk6KGE9Zy5jcmVhdGVFbGVtZW50KGMpLCJzZWxlY3QiPT09YyYmKGc9YSxkLm11bHRpcGxlPw0KZy5tdWx0aXBsZT0hMDpkLnNpemUmJihnLnNpemU9ZC5zaXplKSkpOmE9Zy5jcmVhdGVFbGVtZW50TlMoYSxjKTthW0ZhXT1iO2FbV2NdPWQ7d2ooYSxiLCExLCExKTtiLnN0YXRlTm9kZT1hO2c9VGQoYyxkKTtzd2l0Y2goYyl7Y2FzZSAiZGlhbG9nIjp6KCJjYW5jZWwiLGEpO3ooImNsb3NlIixhKTtlPWQ7YnJlYWs7Y2FzZSAiaWZyYW1lIjpjYXNlICJvYmplY3QiOmNhc2UgImVtYmVkIjp6KCJsb2FkIixhKTtlPWQ7YnJlYWs7Y2FzZSAidmlkZW8iOmNhc2UgImF1ZGlvIjpmb3IoZT0wO2U8cGMubGVuZ3RoO2UrKyl6KHBjW2VdLGEpO2U9ZDticmVhaztjYXNlICJzb3VyY2UiOnooImVycm9yIixhKTtlPWQ7YnJlYWs7Y2FzZSAiaW1nIjpjYXNlICJpbWFnZSI6Y2FzZSAibGluayI6eigiZXJyb3IiLGEpO3ooImxvYWQiLGEpO2U9ZDticmVhaztjYXNlICJkZXRhaWxzIjp6KCJ0b2dnbGUiLGEpO2U9ZDticmVhaztjYXNlICJpbnB1dCI6RmYoYSxkKTtlPU1kKGEsZCk7eigiaW52YWxpZCIsDQphKTticmVhaztjYXNlICJvcHRpb24iOmU9UGQoYSxkKTticmVhaztjYXNlICJzZWxlY3QiOmEuX3dyYXBwZXJTdGF0ZT17d2FzTXVsdGlwbGU6ISFkLm11bHRpcGxlfTtlPUIoe30sZCx7dmFsdWU6dm9pZCAwfSk7eigiaW52YWxpZCIsYSk7YnJlYWs7Y2FzZSAidGV4dGFyZWEiOklmKGEsZCk7ZT1RZChhLGQpO3ooImludmFsaWQiLGEpO2JyZWFrO2RlZmF1bHQ6ZT1kfVNkKGMsZSk7dmFyIGg9ZTtmb3IoZiBpbiBoKWlmKGguaGFzT3duUHJvcGVydHkoZikpe3ZhciBrPWhbZl07InN0eWxlIj09PWY\/TmYoYSxrKToiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiPT09Zj8oaz1rP2suX19odG1sOnZvaWQgMCxudWxsIT1rJiZLaChhLGspKToiY2hpbGRyZW4iPT09Zj8ic3RyaW5nIj09PXR5cGVvZiBrPygidGV4dGFyZWEiIT09Y3x8IiIhPT1rKSYmcWMoYSxrKToibnVtYmVyIj09PXR5cGVvZiBrJiZxYyhhLCIiK2spOiJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmciIT09ZiYmInN1cHByZXNzSHlkcmF0aW9uV2FybmluZyIhPT0NCmYmJiJhdXRvRm9jdXMiIT09ZiYmKEliLmhhc093blByb3BlcnR5KGYpP251bGwhPWsmJiJvblNjcm9sbCI9PT1mJiZ6KCJzY3JvbGwiLGEpOm51bGwhPWsmJkVkKGEsZixrLGcpKX1zd2l0Y2goYyl7Y2FzZSAiaW5wdXQiOkZjKGEpO0hmKGEsZCwhMSk7YnJlYWs7Y2FzZSAidGV4dGFyZWEiOkZjKGEpO0tmKGEpO2JyZWFrO2Nhc2UgIm9wdGlvbiI6bnVsbCE9ZC52YWx1ZSYmYS5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIit4YShkLnZhbHVlKSk7YnJlYWs7Y2FzZSAic2VsZWN0IjphLm11bHRpcGxlPSEhZC5tdWx0aXBsZTtmPWQudmFsdWU7bnVsbCE9Zj9pYihhLCEhZC5tdWx0aXBsZSxmLCExKTpudWxsIT1kLmRlZmF1bHRWYWx1ZSYmaWIoYSwhIWQubXVsdGlwbGUsZC5kZWZhdWx0VmFsdWUsITApO2JyZWFrO2RlZmF1bHQ6ImZ1bmN0aW9uIj09PXR5cGVvZiBlLm9uQ2xpY2smJihhLm9uY2xpY2s9VmMpfU9nKGMsZCkmJihiLmZsYWdzfD00KX1udWxsIT09Yi5yZWYmJihiLmZsYWdzfD0NCjEyOCl9cmV0dXJuIG51bGw7Y2FzZSA2OmlmKGEmJm51bGwhPWIuc3RhdGVOb2RlKXhqKGEsYixhLm1lbW9pemVkUHJvcHMsZCk7ZWxzZXtpZigic3RyaW5nIiE9PXR5cGVvZiBkJiZudWxsPT09Yi5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IobSgxNjYpKTtjPSRhKGdjLmN1cnJlbnQpOyRhKGthLmN1cnJlbnQpO2lkKGIpPyhkPWIuc3RhdGVOb2RlLGM9Yi5tZW1vaXplZFByb3BzLGRbRmFdPWIsZC5ub2RlVmFsdWUhPT1jJiYoYi5mbGFnc3w9NCkpOihkPSg5PT09Yy5ub2RlVHlwZT9jOmMub3duZXJEb2N1bWVudCkuY3JlYXRlVGV4dE5vZGUoZCksZFtGYV09YixiLnN0YXRlTm9kZT1kKX1yZXR1cm4gbnVsbDtjYXNlIDEzOnQoRSk7ZD1iLm1lbW9pemVkU3RhdGU7aWYoMCE9PShiLmZsYWdzJjY0KSlyZXR1cm4gYi5sYW5lcz1jLGI7ZD1udWxsIT09ZDtjPSExO251bGw9PT1hP3ZvaWQgMCE9PWIubWVtb2l6ZWRQcm9wcy5mYWxsYmFjayYmaWQoYik6Yz1udWxsIT09YS5tZW1vaXplZFN0YXRlOw0KaWYoZCYmIWMmJjAhPT0oYi5tb2RlJjIpKWlmKG51bGw9PT1hJiYhMCE9PWIubWVtb2l6ZWRQcm9wcy51bnN0YWJsZV9hdm9pZFRoaXNGYWxsYmFja3x8MCE9PShFLmN1cnJlbnQmMSkpMD09PUwmJihMPTMpO2Vsc2V7aWYoMD09PUx8fDM9PT1MKUw9NDtudWxsPT09Unx8MD09PShMYSYxMzQyMTc3MjcpJiYwPT09KENiJjEzNDIxNzcyNyl8fERiKFIsTyl9aWYoZHx8YyliLmZsYWdzfD00O3JldHVybiBudWxsO2Nhc2UgNDpyZXR1cm4gQWIoKSxKaChiKSxudWxsPT09YSYmQmcoYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksbnVsbDtjYXNlIDEwOnJldHVybiB6ZShiKSxudWxsO2Nhc2UgMTc6cmV0dXJuIFMoYi50eXBlKSYmKHQoSiksdChEKSksbnVsbDtjYXNlIDE5OnQoRSk7ZD1iLm1lbW9pemVkU3RhdGU7aWYobnVsbD09PWQpcmV0dXJuIG51bGw7Zj0wIT09KGIuZmxhZ3MmNjQpO2c9ZC5yZW5kZXJpbmc7aWYobnVsbD09PWcpaWYoZilvYyhkLCExKTtlbHNle2lmKDAhPT1MfHxudWxsIT09DQphJiYwIT09KGEuZmxhZ3MmNjQpKWZvcihhPWIuY2hpbGQ7bnVsbCE9PWE7KXtnPWhkKGEpO2lmKG51bGwhPT1nKXtiLmZsYWdzfD02NDtvYyhkLCExKTtmPWcudXBkYXRlUXVldWU7bnVsbCE9PWYmJihiLnVwZGF0ZVF1ZXVlPWYsYi5mbGFnc3w9NCk7bnVsbD09PWQubGFzdEVmZmVjdCYmKGIuZmlyc3RFZmZlY3Q9bnVsbCk7Yi5sYXN0RWZmZWN0PWQubGFzdEVmZmVjdDtkPWM7Zm9yKGM9Yi5jaGlsZDtudWxsIT09YzspZj1jLGE9ZCxmLmZsYWdzJj0yLGYubmV4dEVmZmVjdD1udWxsLGYuZmlyc3RFZmZlY3Q9bnVsbCxmLmxhc3RFZmZlY3Q9bnVsbCxnPWYuYWx0ZXJuYXRlLG51bGw9PT1nPyhmLmNoaWxkTGFuZXM9MCxmLmxhbmVzPWEsZi5jaGlsZD1udWxsLGYubWVtb2l6ZWRQcm9wcz1udWxsLGYubWVtb2l6ZWRTdGF0ZT1udWxsLGYudXBkYXRlUXVldWU9bnVsbCxmLmRlcGVuZGVuY2llcz1udWxsLGYuc3RhdGVOb2RlPW51bGwpOihmLmNoaWxkTGFuZXM9Zy5jaGlsZExhbmVzLGYubGFuZXM9DQpnLmxhbmVzLGYuY2hpbGQ9Zy5jaGlsZCxmLm1lbW9pemVkUHJvcHM9Zy5tZW1vaXplZFByb3BzLGYubWVtb2l6ZWRTdGF0ZT1nLm1lbW9pemVkU3RhdGUsZi51cGRhdGVRdWV1ZT1nLnVwZGF0ZVF1ZXVlLGYudHlwZT1nLnR5cGUsYT1nLmRlcGVuZGVuY2llcyxmLmRlcGVuZGVuY2llcz1udWxsPT09YT9udWxsOntsYW5lczphLmxhbmVzLGZpcnN0Q29udGV4dDphLmZpcnN0Q29udGV4dH0pLGM9Yy5zaWJsaW5nO0EoRSxFLmN1cnJlbnQmMXwyKTtyZXR1cm4gYi5jaGlsZH1hPWEuc2libGluZ31udWxsIT09ZC50YWlsJiZQKCk+VmUmJihiLmZsYWdzfD02NCxmPSEwLG9jKGQsITEpLGIubGFuZXM9MzM1NTQ0MzIpfWVsc2V7aWYoIWYpaWYoYT1oZChnKSxudWxsIT09YSl7aWYoYi5mbGFnc3w9NjQsZj0hMCxjPWEudXBkYXRlUXVldWUsbnVsbCE9PWMmJihiLnVwZGF0ZVF1ZXVlPWMsYi5mbGFnc3w9NCksb2MoZCwhMCksbnVsbD09PWQudGFpbCYmImhpZGRlbiI9PT1kLnRhaWxNb2RlJiYNCiFnLmFsdGVybmF0ZSYmIWxhKXJldHVybiBiPWIubGFzdEVmZmVjdD1kLmxhc3RFZmZlY3QsbnVsbCE9PWImJihiLm5leHRFZmZlY3Q9bnVsbCksbnVsbH1lbHNlIDIqUCgpLWQucmVuZGVyaW5nU3RhcnRUaW1lPlZlJiYxMDczNzQxODI0IT09YyYmKGIuZmxhZ3N8PTY0LGY9ITAsb2MoZCwhMSksYi5sYW5lcz0zMzU1NDQzMik7ZC5pc0JhY2t3YXJkcz8oZy5zaWJsaW5nPWIuY2hpbGQsYi5jaGlsZD1nKTooYz1kLmxhc3QsbnVsbCE9PWM\/Yy5zaWJsaW5nPWc6Yi5jaGlsZD1nLGQubGFzdD1nKX1yZXR1cm4gbnVsbCE9PWQudGFpbD8oYz1kLnRhaWwsZC5yZW5kZXJpbmc9YyxkLnRhaWw9Yy5zaWJsaW5nLGQubGFzdEVmZmVjdD1iLmxhc3RFZmZlY3QsZC5yZW5kZXJpbmdTdGFydFRpbWU9UCgpLGMuc2libGluZz1udWxsLGI9RS5jdXJyZW50LEEoRSxmP2ImMXwyOmImMSksYyk6bnVsbDtjYXNlIDIzOmNhc2UgMjQ6cmV0dXJuIHRhPWNiLmN1cnJlbnQsdChjYiksbnVsbCE9PWEmJm51bGwhPT0NCmEubWVtb2l6ZWRTdGF0ZSE9PShudWxsIT09Yi5tZW1vaXplZFN0YXRlKSYmInVuc3RhYmxlLWRlZmVyLXdpdGhvdXQtaGlkaW5nIiE9PWQubW9kZSYmKGIuZmxhZ3N8PTQpLG51bGx9dGhyb3cgRXJyb3IobSgxNTYsYi50YWcpKTt9ZnVuY3Rpb24geWooYSxiKXtzd2l0Y2goYS50YWcpe2Nhc2UgMTpyZXR1cm4gUyhhLnR5cGUpJiYodChKKSx0KEQpKSxiPWEuZmxhZ3MsYiY0MDk2PyhhLmZsYWdzPWImLTQwOTd8NjQsYSk6bnVsbDtjYXNlIDM6QWIoKTt0KEopO3QoRCk7SWUoKTtiPWEuZmxhZ3M7aWYoMCE9PShiJjY0KSl0aHJvdyBFcnJvcihtKDI4NSkpO2EuZmxhZ3M9YiYtNDA5N3w2NDtyZXR1cm4gYTtjYXNlIDU6cmV0dXJuIEZlKGEpLG51bGw7Y2FzZSAxMzpyZXR1cm4gdChFKSxiPWEuZmxhZ3MsYiY0MDk2PyhhLmZsYWdzPWImLTQwOTd8NjQsYSk6bnVsbDtjYXNlIDE5OnJldHVybiB0KEUpLG51bGw7Y2FzZSA0OnJldHVybiBBYigpLG51bGw7Y2FzZSAxMDpyZXR1cm4gemUoYSksDQpudWxsO2Nhc2UgMjM6Y2FzZSAyNDpyZXR1cm4gdGE9Y2IuY3VycmVudCx0KGNiKSxudWxsO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWZ1bmN0aW9uIFdlKGEsYil7dHJ5e3ZhciBjPSIiLGQ9YjtkbyBjKz1vaShkKSxkPWQucmV0dXJuO3doaWxlKGQpO3ZhciBlPWN9Y2F0Y2goZil7ZT0iXG5FcnJvciBnZW5lcmF0aW5nIHN0YWNrOiAiK2YubWVzc2FnZSsiXG4iK2Yuc3RhY2t9cmV0dXJue3ZhbHVlOmEsc291cmNlOmIsc3RhY2s6ZX19ZnVuY3Rpb24gWGUoYSxiKXt0cnl7Y29uc29sZS5lcnJvcihiLnZhbHVlKX1jYXRjaChjKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgYzt9KX19ZnVuY3Rpb24gTGgoYSxiLGMpe2M9SWEoLTEsYyk7Yy50YWc9MztjLnBheWxvYWQ9e2VsZW1lbnQ6bnVsbH07dmFyIGQ9Yi52YWx1ZTtjLmNhbGxiYWNrPWZ1bmN0aW9uKCl7cmR8fChyZD0hMCxZZT1kKTtYZShhLGIpfTtyZXR1cm4gY31mdW5jdGlvbiBNaChhLGIsYyl7Yz1JYSgtMSxjKTtjLnRhZz0NCjM7dmFyIGQ9YS50eXBlLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGQpe3ZhciBlPWIudmFsdWU7Yy5wYXlsb2FkPWZ1bmN0aW9uKCl7WGUoYSxiKTtyZXR1cm4gZChlKX19dmFyIGY9YS5zdGF0ZU5vZGU7bnVsbCE9PWYmJiJmdW5jdGlvbiI9PT10eXBlb2YgZi5jb21wb25lbnREaWRDYXRjaCYmKGMuY2FsbGJhY2s9ZnVuY3Rpb24oKXsiZnVuY3Rpb24iIT09dHlwZW9mIGQmJihudWxsPT09bmE\/bmE9bmV3IFNldChbdGhpc10pOm5hLmFkZCh0aGlzKSxYZShhLGIpKTt2YXIgYz1iLnN0YWNrO3RoaXMuY29tcG9uZW50RGlkQ2F0Y2goYi52YWx1ZSx7Y29tcG9uZW50U3RhY2s6bnVsbCE9PWM\/YzoiIn0pfSk7cmV0dXJuIGN9ZnVuY3Rpb24gTmgoYSl7dmFyIGI9YS5yZWY7aWYobnVsbCE9PWIpaWYoImZ1bmN0aW9uIj09PXR5cGVvZiBiKXRyeXtiKG51bGwpfWNhdGNoKGMpe1FhKGEsYyl9ZWxzZSBiLmN1cnJlbnQ9bnVsbH1mdW5jdGlvbiB6aihhLA0KYil7c3dpdGNoKGIudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OmNhc2UgMjI6cmV0dXJuO2Nhc2UgMTppZihiLmZsYWdzJjI1NiYmbnVsbCE9PWEpe3ZhciBjPWEubWVtb2l6ZWRQcm9wcyxkPWEubWVtb2l6ZWRTdGF0ZTthPWIuc3RhdGVOb2RlO2I9YS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShiLmVsZW1lbnRUeXBlPT09Yi50eXBlP2M6ZWEoYi50eXBlLGMpLGQpO2EuX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGU9Yn1yZXR1cm47Y2FzZSAzOmIuZmxhZ3MmMjU2JiZzZShiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKTtyZXR1cm47Y2FzZSA1OmNhc2UgNjpjYXNlIDQ6Y2FzZSAxNzpyZXR1cm59dGhyb3cgRXJyb3IobSgxNjMpKTt9ZnVuY3Rpb24gQWooYSxiLGMsZCl7c3dpdGNoKGMudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OmNhc2UgMjI6Yj1jLnVwZGF0ZVF1ZXVlO2I9bnVsbCE9PWI\/Yi5sYXN0RWZmZWN0Om51bGw7aWYobnVsbCE9PWIpe2E9Yj1iLm5leHQ7DQpkbyAzPT09KGEudGFnJjMpJiYoZD1hLmNyZWF0ZSxhLmRlc3Ryb3k9ZCgpKSxhPWEubmV4dDt3aGlsZShhIT09Yil9Yj1jLnVwZGF0ZVF1ZXVlO2I9bnVsbCE9PWI\/Yi5sYXN0RWZmZWN0Om51bGw7aWYobnVsbCE9PWIpe2E9Yj1iLm5leHQ7ZG97dmFyIGU9YTtkPWUubmV4dDtlPWUudGFnOzAhPT0oZSY0KSYmMCE9PShlJjEpJiYoT2goYyxhKSxCaihjLGEpKTthPWR9d2hpbGUoYSE9PWIpfXJldHVybjtjYXNlIDE6YT1jLnN0YXRlTm9kZTtjLmZsYWdzJjQmJihudWxsPT09Yj9hLmNvbXBvbmVudERpZE1vdW50KCk6KGQ9Yy5lbGVtZW50VHlwZT09PWMudHlwZT9iLm1lbW9pemVkUHJvcHM6ZWEoYy50eXBlLGIubWVtb2l6ZWRQcm9wcyksYS5jb21wb25lbnREaWRVcGRhdGUoZCxiLm1lbW9pemVkU3RhdGUsYS5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEJlZm9yZVVwZGF0ZSkpKTtiPWMudXBkYXRlUXVldWU7bnVsbCE9PWImJmNoKGMsYixhKTtyZXR1cm47Y2FzZSAzOmI9Yy51cGRhdGVRdWV1ZTsNCmlmKG51bGwhPT1iKXthPW51bGw7aWYobnVsbCE9PWMuY2hpbGQpc3dpdGNoKGMuY2hpbGQudGFnKXtjYXNlIDU6YT1jLmNoaWxkLnN0YXRlTm9kZTticmVhaztjYXNlIDE6YT1jLmNoaWxkLnN0YXRlTm9kZX1jaChjLGIsYSl9cmV0dXJuO2Nhc2UgNTphPWMuc3RhdGVOb2RlO251bGw9PT1iJiZjLmZsYWdzJjQmJk9nKGMudHlwZSxjLm1lbW9pemVkUHJvcHMpJiZhLmZvY3VzKCk7cmV0dXJuO2Nhc2UgNjpyZXR1cm47Y2FzZSA0OnJldHVybjtjYXNlIDEyOnJldHVybjtjYXNlIDEzOm51bGw9PT1jLm1lbW9pemVkU3RhdGUmJihjPWMuYWx0ZXJuYXRlLG51bGwhPT1jJiYoYz1jLm1lbW9pemVkU3RhdGUsbnVsbCE9PWMmJihjPWMuZGVoeWRyYXRlZCxudWxsIT09YyYmYWcoYykpKSk7cmV0dXJuO2Nhc2UgMTk6Y2FzZSAxNzpjYXNlIDIwOmNhc2UgMjE6Y2FzZSAyMzpjYXNlIDI0OnJldHVybn10aHJvdyBFcnJvcihtKDE2MykpO31mdW5jdGlvbiBQaChhLGIpe2Zvcih2YXIgYz1hOzspe2lmKDU9PT0NCmMudGFnKXt2YXIgZD1jLnN0YXRlTm9kZTtpZihiKWQ9ZC5zdHlsZSwiZnVuY3Rpb24iPT09dHlwZW9mIGQuc2V0UHJvcGVydHk\/ZC5zZXRQcm9wZXJ0eSgiZGlzcGxheSIsIm5vbmUiLCJpbXBvcnRhbnQiKTpkLmRpc3BsYXk9Im5vbmUiO2Vsc2V7ZD1jLnN0YXRlTm9kZTt2YXIgZT1jLm1lbW9pemVkUHJvcHMuc3R5bGU7ZT12b2lkIDAhPT1lJiZudWxsIT09ZSYmZS5oYXNPd25Qcm9wZXJ0eSgiZGlzcGxheSIpP2UuZGlzcGxheTpudWxsO2Quc3R5bGUuZGlzcGxheT1NZigiZGlzcGxheSIsZSl9fWVsc2UgaWYoNj09PWMudGFnKWMuc3RhdGVOb2RlLm5vZGVWYWx1ZT1iPyIiOmMubWVtb2l6ZWRQcm9wcztlbHNlIGlmKCgyMyE9PWMudGFnJiYyNCE9PWMudGFnfHxudWxsPT09Yy5tZW1vaXplZFN0YXRlfHxjPT09YSkmJm51bGwhPT1jLmNoaWxkKXtjLmNoaWxkLnJldHVybj1jO2M9Yy5jaGlsZDtjb250aW51ZX1pZihjPT09YSlicmVhaztmb3IoO251bGw9PT1jLnNpYmxpbmc7KXtpZihudWxsPT09DQpjLnJldHVybnx8Yy5yZXR1cm49PT1hKXJldHVybjtjPWMucmV0dXJufWMuc2libGluZy5yZXR1cm49Yy5yZXR1cm47Yz1jLnNpYmxpbmd9fWZ1bmN0aW9uIFFoKGEsYixjKXtpZihkYiYmImZ1bmN0aW9uIj09PXR5cGVvZiBkYi5vbkNvbW1pdEZpYmVyVW5tb3VudCl0cnl7ZGIub25Db21taXRGaWJlclVubW91bnQoWmUsYil9Y2F0Y2goZil7fXN3aXRjaChiLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OmNhc2UgMjI6YT1iLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1hJiYoYT1hLmxhc3RFZmZlY3QsbnVsbCE9PWEpKXtjPWE9YS5uZXh0O2Rve3ZhciBkPWMsZT1kLmRlc3Ryb3k7ZD1kLnRhZztpZih2b2lkIDAhPT1lKWlmKDAhPT0oZCY0KSlPaChiLGMpO2Vsc2V7ZD1iO3RyeXtlKCl9Y2F0Y2goZil7UWEoZCxmKX19Yz1jLm5leHR9d2hpbGUoYyE9PWEpfWJyZWFrO2Nhc2UgMTpOaChiKTthPWIuc3RhdGVOb2RlO2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgYS5jb21wb25lbnRXaWxsVW5tb3VudCl0cnl7YS5wcm9wcz0NCmIubWVtb2l6ZWRQcm9wcyxhLnN0YXRlPWIubWVtb2l6ZWRTdGF0ZSxhLmNvbXBvbmVudFdpbGxVbm1vdW50KCl9Y2F0Y2goZil7UWEoYixmKX1icmVhaztjYXNlIDU6TmgoYik7YnJlYWs7Y2FzZSA0OlJoKGEsYil9fWZ1bmN0aW9uIFNoKGEpe2EuYWx0ZXJuYXRlPW51bGw7YS5jaGlsZD1udWxsO2EuZGVwZW5kZW5jaWVzPW51bGw7YS5maXJzdEVmZmVjdD1udWxsO2EubGFzdEVmZmVjdD1udWxsO2EubWVtb2l6ZWRQcm9wcz1udWxsO2EubWVtb2l6ZWRTdGF0ZT1udWxsO2EucGVuZGluZ1Byb3BzPW51bGw7YS5yZXR1cm49bnVsbDthLnVwZGF0ZVF1ZXVlPW51bGx9ZnVuY3Rpb24gVGgoYSl7cmV0dXJuIDU9PT1hLnRhZ3x8Mz09PWEudGFnfHw0PT09YS50YWd9ZnVuY3Rpb24gVWgoYSl7YTp7Zm9yKHZhciBiPWEucmV0dXJuO251bGwhPT1iOyl7aWYoVGgoYikpYnJlYWsgYTtiPWIucmV0dXJufXRocm93IEVycm9yKG0oMTYwKSk7fXZhciBjPWI7Yj1jLnN0YXRlTm9kZTtzd2l0Y2goYy50YWcpe2Nhc2UgNTp2YXIgZD0NCiExO2JyZWFrO2Nhc2UgMzpiPWIuY29udGFpbmVySW5mbztkPSEwO2JyZWFrO2Nhc2UgNDpiPWIuY29udGFpbmVySW5mbztkPSEwO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IobSgxNjEpKTt9Yy5mbGFncyYxNiYmKHFjKGIsIiIpLGMuZmxhZ3MmPS0xNyk7YTpiOmZvcihjPWE7Oyl7Zm9yKDtudWxsPT09Yy5zaWJsaW5nOyl7aWYobnVsbD09PWMucmV0dXJufHxUaChjLnJldHVybikpe2M9bnVsbDticmVhayBhfWM9Yy5yZXR1cm59Yy5zaWJsaW5nLnJldHVybj1jLnJldHVybjtmb3IoYz1jLnNpYmxpbmc7NSE9PWMudGFnJiY2IT09Yy50YWcmJjE4IT09Yy50YWc7KXtpZihjLmZsYWdzJjIpY29udGludWUgYjtpZihudWxsPT09Yy5jaGlsZHx8ND09PWMudGFnKWNvbnRpbnVlIGI7ZWxzZSBjLmNoaWxkLnJldHVybj1jLGM9Yy5jaGlsZH1pZighKGMuZmxhZ3MmMikpe2M9Yy5zdGF0ZU5vZGU7YnJlYWsgYX19ZD8kZShhLGMsYik6YWYoYSxjLGIpfWZ1bmN0aW9uICRlKGEsYixjKXt2YXIgZD0NCmEudGFnLGU9NT09PWR8fDY9PT1kO2lmKGUpYT1lP2Euc3RhdGVOb2RlOmEuc3RhdGVOb2RlLmluc3RhbmNlLGI\/OD09PWMubm9kZVR5cGU\/Yy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLGIpOmMuaW5zZXJ0QmVmb3JlKGEsYik6KDg9PT1jLm5vZGVUeXBlPyhiPWMucGFyZW50Tm9kZSxiLmluc2VydEJlZm9yZShhLGMpKTooYj1jLGIuYXBwZW5kQ2hpbGQoYSkpLGM9Yy5fcmVhY3RSb290Q29udGFpbmVyLG51bGwhPT1jJiZ2b2lkIDAhPT1jfHxudWxsIT09Yi5vbmNsaWNrfHwoYi5vbmNsaWNrPVZjKSk7ZWxzZSBpZig0IT09ZCYmKGE9YS5jaGlsZCxudWxsIT09YSkpZm9yKCRlKGEsYixjKSxhPWEuc2libGluZztudWxsIT09YTspJGUoYSxiLGMpLGE9YS5zaWJsaW5nfWZ1bmN0aW9uIGFmKGEsYixjKXt2YXIgZD1hLnRhZyxlPTU9PT1kfHw2PT09ZDtpZihlKWE9ZT9hLnN0YXRlTm9kZTphLnN0YXRlTm9kZS5pbnN0YW5jZSxiP2MuaW5zZXJ0QmVmb3JlKGEsYik6Yy5hcHBlbmRDaGlsZChhKTsNCmVsc2UgaWYoNCE9PWQmJihhPWEuY2hpbGQsbnVsbCE9PWEpKWZvcihhZihhLGIsYyksYT1hLnNpYmxpbmc7bnVsbCE9PWE7KWFmKGEsYixjKSxhPWEuc2libGluZ31mdW5jdGlvbiBSaChhLGIsYyl7Yz1iO2Zvcih2YXIgZD0hMSxlLGY7Oyl7aWYoIWQpe2U9Yy5yZXR1cm47YTpmb3IoOzspe2lmKG51bGw9PT1lKXRocm93IEVycm9yKG0oMTYwKSk7Zj1lLnN0YXRlTm9kZTtzd2l0Y2goZS50YWcpe2Nhc2UgNTplPWY7Zj0hMTticmVhayBhO2Nhc2UgMzplPWYuY29udGFpbmVySW5mbztmPSEwO2JyZWFrIGE7Y2FzZSA0OmU9Zi5jb250YWluZXJJbmZvO2Y9ITA7YnJlYWsgYX1lPWUucmV0dXJufWQ9ITB9aWYoNT09PWMudGFnfHw2PT09Yy50YWcpe2E6Zm9yKHZhciBnPWEsaD1jLGs9aDs7KWlmKFFoKGcsayksbnVsbCE9PWsuY2hpbGQmJjQhPT1rLnRhZylrLmNoaWxkLnJldHVybj1rLGs9ay5jaGlsZDtlbHNle2lmKGs9PT1oKWJyZWFrIGE7Zm9yKDtudWxsPT09ay5zaWJsaW5nOyl7aWYobnVsbD09PQ0Kay5yZXR1cm58fGsucmV0dXJuPT09aClicmVhayBhO2s9ay5yZXR1cm59ay5zaWJsaW5nLnJldHVybj1rLnJldHVybjtrPWsuc2libGluZ31mPyhnPWUsaD1jLnN0YXRlTm9kZSw4PT09Zy5ub2RlVHlwZT9nLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaCk6Zy5yZW1vdmVDaGlsZChoKSk6ZS5yZW1vdmVDaGlsZChjLnN0YXRlTm9kZSl9ZWxzZSBpZig0PT09Yy50YWcpe2lmKG51bGwhPT1jLmNoaWxkKXtlPWMuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87Zj0hMDtjLmNoaWxkLnJldHVybj1jO2M9Yy5jaGlsZDtjb250aW51ZX19ZWxzZSBpZihRaChhLGMpLG51bGwhPT1jLmNoaWxkKXtjLmNoaWxkLnJldHVybj1jO2M9Yy5jaGlsZDtjb250aW51ZX1pZihjPT09YilicmVhaztmb3IoO251bGw9PT1jLnNpYmxpbmc7KXtpZihudWxsPT09Yy5yZXR1cm58fGMucmV0dXJuPT09YilyZXR1cm47Yz1jLnJldHVybjs0PT09Yy50YWcmJihkPSExKX1jLnNpYmxpbmcucmV0dXJuPWMucmV0dXJuO2M9DQpjLnNpYmxpbmd9fWZ1bmN0aW9uIGJmKGEsYil7c3dpdGNoKGIudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6Y2FzZSAyMjp2YXIgYz1iLnVwZGF0ZVF1ZXVlO2M9bnVsbCE9PWM\/Yy5sYXN0RWZmZWN0Om51bGw7aWYobnVsbCE9PWMpe3ZhciBkPWM9Yy5uZXh0O2RvIDM9PT0oZC50YWcmMykmJihhPWQuZGVzdHJveSxkLmRlc3Ryb3k9dm9pZCAwLHZvaWQgMCE9PWEmJmEoKSksZD1kLm5leHQ7d2hpbGUoZCE9PWMpfXJldHVybjtjYXNlIDE6cmV0dXJuO2Nhc2UgNTpjPWIuc3RhdGVOb2RlO2lmKG51bGwhPWMpe2Q9Yi5tZW1vaXplZFByb3BzO3ZhciBlPW51bGwhPT1hP2EubWVtb2l6ZWRQcm9wczpkO2E9Yi50eXBlO3ZhciBmPWIudXBkYXRlUXVldWU7Yi51cGRhdGVRdWV1ZT1udWxsO2lmKG51bGwhPT1mKXtjW1djXT1kOyJpbnB1dCI9PT1hJiYicmFkaW8iPT09ZC50eXBlJiZudWxsIT1kLm5hbWUmJkdmKGMsZCk7VGQoYSxlKTtiPVRkKGEsZCk7Zm9yKGU9MDtlPGYubGVuZ3RoO2UrPQ0KMil7dmFyIGc9ZltlXSxoPWZbZSsxXTsic3R5bGUiPT09Zz9OZihjLGgpOiJkYW5nZXJvdXNseVNldElubmVySFRNTCI9PT1nP0toKGMsaCk6ImNoaWxkcmVuIj09PWc\/cWMoYyxoKTpFZChjLGcsaCxiKX1zd2l0Y2goYSl7Y2FzZSAiaW5wdXQiOk5kKGMsZCk7YnJlYWs7Y2FzZSAidGV4dGFyZWEiOkpmKGMsZCk7YnJlYWs7Y2FzZSAic2VsZWN0IjphPWMuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZSxjLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU9ISFkLm11bHRpcGxlLGY9ZC52YWx1ZSxudWxsIT1mP2liKGMsISFkLm11bHRpcGxlLGYsITEpOmEhPT0hIWQubXVsdGlwbGUmJihudWxsIT1kLmRlZmF1bHRWYWx1ZT9pYihjLCEhZC5tdWx0aXBsZSxkLmRlZmF1bHRWYWx1ZSwhMCk6aWIoYywhIWQubXVsdGlwbGUsZC5tdWx0aXBsZT9bXToiIiwhMSkpfX19cmV0dXJuO2Nhc2UgNjppZihudWxsPT09Yi5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IobSgxNjIpKTtiLnN0YXRlTm9kZS5ub2RlVmFsdWU9DQpiLm1lbW9pemVkUHJvcHM7cmV0dXJuO2Nhc2UgMzpjPWIuc3RhdGVOb2RlO2MuaHlkcmF0ZSYmKGMuaHlkcmF0ZT0hMSxhZyhjLmNvbnRhaW5lckluZm8pKTtyZXR1cm47Y2FzZSAxMjpyZXR1cm47Y2FzZSAxMzpudWxsIT09Yi5tZW1vaXplZFN0YXRlJiYoY2Y9UCgpLFBoKGIuY2hpbGQsITApKTtWaChiKTtyZXR1cm47Y2FzZSAxOTpWaChiKTtyZXR1cm47Y2FzZSAxNzpyZXR1cm47Y2FzZSAyMzpjYXNlIDI0OlBoKGIsbnVsbCE9PWIubWVtb2l6ZWRTdGF0ZSk7cmV0dXJufXRocm93IEVycm9yKG0oMTYzKSk7fWZ1bmN0aW9uIFZoKGEpe3ZhciBiPWEudXBkYXRlUXVldWU7aWYobnVsbCE9PWIpe2EudXBkYXRlUXVldWU9bnVsbDt2YXIgYz1hLnN0YXRlTm9kZTtudWxsPT09YyYmKGM9YS5zdGF0ZU5vZGU9bmV3IENqKTtiLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIGQ9RGouYmluZChudWxsLGEsYik7Yy5oYXMoYil8fChjLmFkZChiKSxiLnRoZW4oZCxkKSl9KX19ZnVuY3Rpb24gRWooYSwNCmIpe3JldHVybiBudWxsIT09YSYmKGE9YS5tZW1vaXplZFN0YXRlLG51bGw9PT1hfHxudWxsIT09YS5kZWh5ZHJhdGVkKT8oYj1iLm1lbW9pemVkU3RhdGUsbnVsbCE9PWImJm51bGw9PT1iLmRlaHlkcmF0ZWQpOiExfWZ1bmN0aW9uIEViKCl7VmU9UCgpKzUwMH1mdW5jdGlvbiBXKCl7cmV0dXJuIDAhPT0obiY0OCk\/UCgpOi0xIT09c2Q\/c2Q6c2Q9UCgpfWZ1bmN0aW9uIE9hKGEpe2E9YS5tb2RlO2lmKDA9PT0oYSYyKSlyZXR1cm4gMTtpZigwPT09KGEmNCkpcmV0dXJuIDk5PT09d2IoKT8xOjI7MD09PXVhJiYodWE9RmIpO2lmKDAhPT1Gai50cmFuc2l0aW9uKXswIT09dGQmJih0ZD1udWxsIT09ZGY\/ZGYucGVuZGluZ0xhbmVzOjApO2E9dWE7dmFyIGI9NDE4NjExMiZ+dGQ7YiY9LWI7MD09PWImJihhPTQxODYxMTImfmEsYj1hJi1hLDA9PT1iJiYoYj04MTkyKSk7cmV0dXJuIGJ9YT13YigpOzAhPT0obiY0KSYmOTg9PT1hP2E9TmMoMTIsdWEpOihhPUVpKGEpLGE9TmMoYSx1YSkpOw0KcmV0dXJuIGF9ZnVuY3Rpb24gUGEoYSxiLGMpe2lmKDUwPHJjKXRocm93IHJjPTAsZWY9bnVsbCxFcnJvcihtKDE4NSkpO2E9dWQoYSxiKTtpZihudWxsPT09YSlyZXR1cm4gbnVsbDtPYyhhLGIsYyk7YT09PVImJihDYnw9Yiw0PT09TCYmRGIoYSxPKSk7dmFyIGQ9d2IoKTsxPT09Yj8wIT09KG4mOCkmJjA9PT0obiY0OCk\/ZmYoYSk6KGJhKGEsYyksMD09PW4mJihFYigpLGphKCkpKTooMD09PShuJjQpfHw5OCE9PWQmJjk5IT09ZHx8KG51bGw9PT12YT92YT1uZXcgU2V0KFthXSk6dmEuYWRkKGEpKSxiYShhLGMpKTtkZj1hfWZ1bmN0aW9uIHVkKGEsYil7YS5sYW5lc3w9Yjt2YXIgYz1hLmFsdGVybmF0ZTtudWxsIT09YyYmKGMubGFuZXN8PWIpO2M9YTtmb3IoYT1hLnJldHVybjtudWxsIT09YTspYS5jaGlsZExhbmVzfD1iLGM9YS5hbHRlcm5hdGUsbnVsbCE9PWMmJihjLmNoaWxkTGFuZXN8PWIpLGM9YSxhPWEucmV0dXJuO3JldHVybiAzPT09Yy50YWc\/Yy5zdGF0ZU5vZGU6bnVsbH0NCmZ1bmN0aW9uIGJhKGEsYil7Zm9yKHZhciBjPWEuY2FsbGJhY2tOb2RlLGQ9YS5zdXNwZW5kZWRMYW5lcyxlPWEucGluZ2VkTGFuZXMsZj1hLmV4cGlyYXRpb25UaW1lcyxnPWEucGVuZGluZ0xhbmVzOzA8Zzspe3ZhciBoPTMxLUJhKGcpLGs9MTw8aCxsPWZbaF07aWYoLTE9PT1sKXtpZigwPT09KGsmZCl8fDAhPT0oayZlKSl7bD1iO21iKGspO3ZhciBtPXc7ZltoXT0xMDw9bT9sKzI1MDo2PD1tP2wrNUUzOi0xfX1lbHNlIGw8PWImJihhLmV4cGlyZWRMYW5lc3w9ayk7ZyY9fmt9ZD1XYihhLGE9PT1SP086MCk7Yj13O2lmKDA9PT1kKW51bGwhPT1jJiYoYyE9PWdmJiZ3ZShjKSxhLmNhbGxiYWNrTm9kZT1udWxsLGEuY2FsbGJhY2tQcmlvcml0eT0wKTtlbHNle2lmKG51bGwhPT1jKXtpZihhLmNhbGxiYWNrUHJpb3JpdHk9PT1iKXJldHVybjtjIT09Z2YmJndlKGMpfTE1PT09Yj8oYz1mZi5iaW5kKG51bGwsYSksbnVsbD09PXBhPyhwYT1bY10sWmM9dmUoWWMsWmcpKTpwYS5wdXNoKGMpLA0KYz1nZik6MTQ9PT1iP2M9YmMoOTksZmYuYmluZChudWxsLGEpKTooYz1GaShiKSxjPWJjKGMsV2guYmluZChudWxsLGEpKSk7YS5jYWxsYmFja1ByaW9yaXR5PWI7YS5jYWxsYmFja05vZGU9Y319ZnVuY3Rpb24gV2goYSl7c2Q9LTE7dGQ9dWE9MDtpZigwIT09KG4mNDgpKXRocm93IEVycm9yKG0oMzI3KSk7dmFyIGI9YS5jYWxsYmFja05vZGU7aWYoUmEoKSYmYS5jYWxsYmFja05vZGUhPT1iKXJldHVybiBudWxsO3ZhciBjPVdiKGEsYT09PVI\/TzowKTtpZigwPT09YylyZXR1cm4gbnVsbDt2YXIgZD1jO3ZhciBlPW47bnw9MTY7dmFyIGY9WGgoKTtpZihSIT09YXx8TyE9PWQpRWIoKSxHYihhLGQpO2RvIHRyeXtHaigpO2JyZWFrfWNhdGNoKGgpe1loKGEsaCl9d2hpbGUoMSk7eWUoKTt2ZC5jdXJyZW50PWY7bj1lO251bGwhPT1HP2Q9MDooUj1udWxsLE89MCxkPUwpO2lmKDAhPT0oRmImQ2IpKUdiKGEsMCk7ZWxzZSBpZigwIT09ZCl7Mj09PWQmJihufD02NCxhLmh5ZHJhdGUmJihhLmh5ZHJhdGU9DQohMSxzZShhLmNvbnRhaW5lckluZm8pKSxjPWRnKGEpLDAhPT1jJiYoZD1zYyhhLGMpKSk7aWYoMT09PWQpdGhyb3cgYj13ZCxHYihhLDApLERiKGEsYyksYmEoYSxQKCkpLGI7YS5maW5pc2hlZFdvcms9YS5jdXJyZW50LmFsdGVybmF0ZTthLmZpbmlzaGVkTGFuZXM9Yztzd2l0Y2goZCl7Y2FzZSAwOmNhc2UgMTp0aHJvdyBFcnJvcihtKDM0NSkpO2Nhc2UgMjplYihhKTticmVhaztjYXNlIDM6RGIoYSxjKTtpZigoYyY2MjkxNDU2MCk9PT1jJiYoZD1jZis1MDAtUCgpLDEwPGQpKXtpZigwIT09V2IoYSwwKSlicmVhaztlPWEuc3VzcGVuZGVkTGFuZXM7aWYoKGUmYykhPT1jKXtXKCk7YS5waW5nZWRMYW5lc3w9YS5zdXNwZW5kZWRMYW5lcyZlO2JyZWFrfWEudGltZW91dEhhbmRsZT1aaChlYi5iaW5kKG51bGwsYSksZCk7YnJlYWt9ZWIoYSk7YnJlYWs7Y2FzZSA0OkRiKGEsYyk7aWYoKGMmNDE4NjExMik9PT1jKWJyZWFrO2Q9YS5ldmVudFRpbWVzO2ZvcihlPS0xOzA8Yzspe3ZhciBnPQ0KMzEtQmEoYyk7Zj0xPDxnO2c9ZFtnXTtnPmUmJihlPWcpO2MmPX5mfWM9ZTtjPVAoKS1jO2M9KDEyMD5jPzEyMDo0ODA+Yz80ODA6MTA4MD5jPzEwODA6MTkyMD5jPzE5MjA6M0UzPmM\/M0UzOjQzMjA+Yz80MzIwOjE5NjAqSGooYy8xOTYwKSktYztpZigxMDxjKXthLnRpbWVvdXRIYW5kbGU9WmgoZWIuYmluZChudWxsLGEpLGMpO2JyZWFrfWViKGEpO2JyZWFrO2Nhc2UgNTplYihhKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKG0oMzI5KSk7fX1iYShhLFAoKSk7cmV0dXJuIGEuY2FsbGJhY2tOb2RlPT09Yj9XaC5iaW5kKG51bGwsYSk6bnVsbH1mdW5jdGlvbiBEYihhLGIpe2ImPX5oZjtiJj1+Q2I7YS5zdXNwZW5kZWRMYW5lc3w9YjthLnBpbmdlZExhbmVzJj1+Yjtmb3IoYT1hLmV4cGlyYXRpb25UaW1lczswPGI7KXt2YXIgYz0zMS1CYShiKSxkPTE8PGM7YVtjXT0tMTtiJj1+ZH19ZnVuY3Rpb24gZmYoYSl7aWYoMCE9PShuJjQ4KSl0aHJvdyBFcnJvcihtKDMyNykpO1JhKCk7DQppZihhPT09UiYmMCE9PShhLmV4cGlyZWRMYW5lcyZPKSl7dmFyIGI9Tzt2YXIgYz1zYyhhLGIpOzAhPT0oRmImQ2IpJiYoYj1XYihhLGIpLGM9c2MoYSxiKSl9ZWxzZSBiPVdiKGEsMCksYz1zYyhhLGIpOzAhPT1hLnRhZyYmMj09PWMmJihufD02NCxhLmh5ZHJhdGUmJihhLmh5ZHJhdGU9ITEsc2UoYS5jb250YWluZXJJbmZvKSksYj1kZyhhKSwwIT09YiYmKGM9c2MoYSxiKSkpO2lmKDE9PT1jKXRocm93IGM9d2QsR2IoYSwwKSxEYihhLGIpLGJhKGEsUCgpKSxjO2EuZmluaXNoZWRXb3JrPWEuY3VycmVudC5hbHRlcm5hdGU7YS5maW5pc2hlZExhbmVzPWI7ZWIoYSk7YmEoYSxQKCkpO3JldHVybiBudWxsfWZ1bmN0aW9uIElqKCl7aWYobnVsbCE9PXZhKXt2YXIgYT12YTt2YT1udWxsO2EuZm9yRWFjaChmdW5jdGlvbihhKXthLmV4cGlyZWRMYW5lc3w9MjQmYS5wZW5kaW5nTGFuZXM7YmEoYSxQKCkpfSl9amEoKX1mdW5jdGlvbiAkaChhLGIpe3ZhciBjPW47bnw9MTt0cnl7cmV0dXJuIGEoYil9ZmluYWxseXtuPQ0KYywwPT09biYmKEViKCksamEoKSl9fWZ1bmN0aW9uIGFpKGEsYil7dmFyIGM9bjtuJj0tMjtufD04O3RyeXtyZXR1cm4gYShiKX1maW5hbGx5e249YywwPT09biYmKEViKCksamEoKSl9fWZ1bmN0aW9uIHBkKGEsYil7QShjYix0YSk7dGF8PWI7RmJ8PWJ9ZnVuY3Rpb24gR2IoYSxiKXthLmZpbmlzaGVkV29yaz1udWxsO2EuZmluaXNoZWRMYW5lcz0wO3ZhciBjPWEudGltZW91dEhhbmRsZTstMSE9PWMmJihhLnRpbWVvdXRIYW5kbGU9LTEsSmooYykpO2lmKG51bGwhPT1HKWZvcihjPUcucmV0dXJuO251bGwhPT1jOyl7dmFyIGQ9Yztzd2l0Y2goZC50YWcpe2Nhc2UgMTpkPWQudHlwZS5jaGlsZENvbnRleHRUeXBlcztudWxsIT09ZCYmdm9pZCAwIT09ZCYmKHQoSiksdChEKSk7YnJlYWs7Y2FzZSAzOkFiKCk7dChKKTt0KEQpO0llKCk7YnJlYWs7Y2FzZSA1OkZlKGQpO2JyZWFrO2Nhc2UgNDpBYigpO2JyZWFrO2Nhc2UgMTM6dChFKTticmVhaztjYXNlIDE5OnQoRSk7YnJlYWs7Y2FzZSAxMDp6ZShkKTsNCmJyZWFrO2Nhc2UgMjM6Y2FzZSAyNDp0YT1jYi5jdXJyZW50LHQoY2IpfWM9Yy5yZXR1cm59Uj1hO0c9TWEoYS5jdXJyZW50LG51bGwpO089dGE9RmI9YjtMPTA7d2Q9bnVsbDtoZj1DYj1MYT0wfWZ1bmN0aW9uIFloKGEsYil7ZG97dmFyIGM9Rzt0cnl7eWUoKTtqYy5jdXJyZW50PWpkO2lmKGtkKXtmb3IodmFyIGQ9eS5tZW1vaXplZFN0YXRlO251bGwhPT1kOyl7dmFyIGU9ZC5xdWV1ZTtudWxsIT09ZSYmKGUucGVuZGluZz1udWxsKTtkPWQubmV4dH1rZD0hMX1pYz0wO0s9Tj15PW51bGw7a2M9ITE7amYuY3VycmVudD1udWxsO2lmKG51bGw9PT1jfHxudWxsPT09Yy5yZXR1cm4pe0w9MTt3ZD1iO0c9bnVsbDticmVha31hOnt2YXIgZj1hLGc9Yy5yZXR1cm4saD1jLGs9YjtiPU87aC5mbGFnc3w9MjA0ODtoLmZpcnN0RWZmZWN0PWgubGFzdEVmZmVjdD1udWxsO2lmKG51bGwhPT1rJiYib2JqZWN0Ij09PXR5cGVvZiBrJiYiZnVuY3Rpb24iPT09dHlwZW9mIGsudGhlbil7dmFyIGw9azsNCmlmKDA9PT0oaC5tb2RlJjIpKXt2YXIgbT1oLmFsdGVybmF0ZTttPyhoLnVwZGF0ZVF1ZXVlPW0udXBkYXRlUXVldWUsaC5tZW1vaXplZFN0YXRlPW0ubWVtb2l6ZWRTdGF0ZSxoLmxhbmVzPW0ubGFuZXMpOihoLnVwZGF0ZVF1ZXVlPW51bGwsaC5tZW1vaXplZFN0YXRlPW51bGwpfXZhciBuPTAhPT0oRS5jdXJyZW50JjEpLHI9Zztkb3t2YXIgdDtpZih0PTEzPT09ci50YWcpe3ZhciB3PXIubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09dyl0PW51bGwhPT13LmRlaHlkcmF0ZWQ\/ITA6ITE7ZWxzZXt2YXIgej1yLm1lbW9pemVkUHJvcHM7dD12b2lkIDA9PT16LmZhbGxiYWNrPyExOiEwIT09ei51bnN0YWJsZV9hdm9pZFRoaXNGYWxsYmFjaz8hMDpuPyExOiEwfX1pZih0KXt2YXIgQz1yLnVwZGF0ZVF1ZXVlO2lmKG51bGw9PT1DKXt2YXIgeD1uZXcgU2V0O3guYWRkKGwpO3IudXBkYXRlUXVldWU9eH1lbHNlIEMuYWRkKGwpO2lmKDA9PT0oci5tb2RlJjIpKXtyLmZsYWdzfD02NDtoLmZsYWdzfD0NCjE2Mzg0O2guZmxhZ3MmPS0yOTgxO2lmKDE9PT1oLnRhZylpZihudWxsPT09aC5hbHRlcm5hdGUpaC50YWc9MTc7ZWxzZXt2YXIgcD1JYSgtMSwxKTtwLnRhZz0yO0phKGgscCl9aC5sYW5lc3w9MTticmVhayBhfWs9dm9pZCAwO2g9Yjt2YXIgcT1mLnBpbmdDYWNoZTtudWxsPT09cT8ocT1mLnBpbmdDYWNoZT1uZXcgS2osaz1uZXcgU2V0LHEuc2V0KGwsaykpOihrPXEuZ2V0KGwpLHZvaWQgMD09PWsmJihrPW5ldyBTZXQscS5zZXQobCxrKSkpO2lmKCFrLmhhcyhoKSl7ay5hZGQoaCk7dmFyIHU9TGouYmluZChudWxsLGYsbCxoKTtsLnRoZW4odSx1KX1yLmZsYWdzfD00MDk2O3IubGFuZXM9YjticmVhayBhfXI9ci5yZXR1cm59d2hpbGUobnVsbCE9PXIpO2s9RXJyb3IoKGhiKGgudHlwZSl8fCJBIFJlYWN0IGNvbXBvbmVudCIpKyIgc3VzcGVuZGVkIHdoaWxlIHJlbmRlcmluZywgYnV0IG5vIGZhbGxiYWNrIFVJIHdhcyBzcGVjaWZpZWQuXG5cbkFkZCBhIDxTdXNwZW5zZSBmYWxsYmFjaz0uLi4+IGNvbXBvbmVudCBoaWdoZXIgaW4gdGhlIHRyZWUgdG8gcHJvdmlkZSBhIGxvYWRpbmcgaW5kaWNhdG9yIG9yIHBsYWNlaG9sZGVyIHRvIGRpc3BsYXkuIil9NSE9PQ0KTCYmKEw9Mik7az1XZShrLGgpO3I9Zztkb3tzd2l0Y2goci50YWcpe2Nhc2UgMzpmPWs7ci5mbGFnc3w9NDA5NjtiJj0tYjtyLmxhbmVzfD1iO3ZhciBCPUxoKHIsZixiKTtiaChyLEIpO2JyZWFrIGE7Y2FzZSAxOmY9azt2YXIgQT1yLnR5cGUsRD1yLnN0YXRlTm9kZTtpZigwPT09KHIuZmxhZ3MmNjQpJiYoImZ1bmN0aW9uIj09PXR5cGVvZiBBLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcnx8bnVsbCE9PUQmJiJmdW5jdGlvbiI9PT10eXBlb2YgRC5jb21wb25lbnREaWRDYXRjaCYmKG51bGw9PT1uYXx8IW5hLmhhcyhEKSkpKXtyLmZsYWdzfD00MDk2O2ImPS1iO3IubGFuZXN8PWI7dmFyIEY9TWgocixmLGIpO2JoKHIsRik7YnJlYWsgYX19cj1yLnJldHVybn13aGlsZShudWxsIT09cil9YmkoYyl9Y2F0Y2gocWEpe2I9cWE7Rz09PWMmJm51bGwhPT1jJiYoRz1jPWMucmV0dXJuKTtjb250aW51ZX1icmVha313aGlsZSgxKX1mdW5jdGlvbiBYaCgpe3ZhciBhPXZkLmN1cnJlbnQ7dmQuY3VycmVudD0NCmpkO3JldHVybiBudWxsPT09YT9qZDphfWZ1bmN0aW9uIHNjKGEsYil7dmFyIGM9bjtufD0xNjt2YXIgZD1YaCgpO1I9PT1hJiZPPT09Ynx8R2IoYSxiKTtkbyB0cnl7TWooKTticmVha31jYXRjaChlKXtZaChhLGUpfXdoaWxlKDEpO3llKCk7bj1jO3ZkLmN1cnJlbnQ9ZDtpZihudWxsIT09Ryl0aHJvdyBFcnJvcihtKDI2MSkpO1I9bnVsbDtPPTA7cmV0dXJuIEx9ZnVuY3Rpb24gTWooKXtmb3IoO251bGwhPT1HOyljaShHKX1mdW5jdGlvbiBHaigpe2Zvcig7bnVsbCE9PUcmJiFOaigpOyljaShHKX1mdW5jdGlvbiBjaShhKXt2YXIgYj1PaihhLmFsdGVybmF0ZSxhLHRhKTthLm1lbW9pemVkUHJvcHM9YS5wZW5kaW5nUHJvcHM7bnVsbD09PWI\/YmkoYSk6Rz1iO2pmLmN1cnJlbnQ9bnVsbH1mdW5jdGlvbiBiaShhKXt2YXIgYj1hO2Rve3ZhciBjPWIuYWx0ZXJuYXRlO2E9Yi5yZXR1cm47aWYoMD09PShiLmZsYWdzJjIwNDgpKXtjPXVqKGMsYix0YSk7aWYobnVsbCE9PWMpe0c9YztyZXR1cm59Yz0NCmI7aWYoMjQhPT1jLnRhZyYmMjMhPT1jLnRhZ3x8bnVsbD09PWMubWVtb2l6ZWRTdGF0ZXx8MCE9PSh0YSYxMDczNzQxODI0KXx8MD09PShjLm1vZGUmNCkpe2Zvcih2YXIgZD0wLGU9Yy5jaGlsZDtudWxsIT09ZTspZHw9ZS5sYW5lc3xlLmNoaWxkTGFuZXMsZT1lLnNpYmxpbmc7Yy5jaGlsZExhbmVzPWR9bnVsbCE9PWEmJjA9PT0oYS5mbGFncyYyMDQ4KSYmKG51bGw9PT1hLmZpcnN0RWZmZWN0JiYoYS5maXJzdEVmZmVjdD1iLmZpcnN0RWZmZWN0KSxudWxsIT09Yi5sYXN0RWZmZWN0JiYobnVsbCE9PWEubGFzdEVmZmVjdCYmKGEubGFzdEVmZmVjdC5uZXh0RWZmZWN0PWIuZmlyc3RFZmZlY3QpLGEubGFzdEVmZmVjdD1iLmxhc3RFZmZlY3QpLDE8Yi5mbGFncyYmKG51bGwhPT1hLmxhc3RFZmZlY3Q\/YS5sYXN0RWZmZWN0Lm5leHRFZmZlY3Q9YjphLmZpcnN0RWZmZWN0PWIsYS5sYXN0RWZmZWN0PWIpKX1lbHNle2M9eWooYik7aWYobnVsbCE9PWMpe2MuZmxhZ3MmPTIwNDc7Rz1jOw0KcmV0dXJufW51bGwhPT1hJiYoYS5maXJzdEVmZmVjdD1hLmxhc3RFZmZlY3Q9bnVsbCxhLmZsYWdzfD0yMDQ4KX1iPWIuc2libGluZztpZihudWxsIT09Yil7Rz1iO3JldHVybn1HPWI9YX13aGlsZShudWxsIT09Yik7MD09PUwmJihMPTUpfWZ1bmN0aW9uIGViKGEpe3ZhciBiPXdiKCk7WmEoOTksUGouYmluZChudWxsLGEsYikpO3JldHVybiBudWxsfWZ1bmN0aW9uIFBqKGEsYil7ZG8gUmEoKTt3aGlsZShudWxsIT09dGMpO2lmKDAhPT0obiY0OCkpdGhyb3cgRXJyb3IobSgzMjcpKTt2YXIgYz1hLmZpbmlzaGVkV29yaztpZihudWxsPT09YylyZXR1cm4gbnVsbDthLmZpbmlzaGVkV29yaz1udWxsO2EuZmluaXNoZWRMYW5lcz0wO2lmKGM9PT1hLmN1cnJlbnQpdGhyb3cgRXJyb3IobSgxNzcpKTthLmNhbGxiYWNrTm9kZT1udWxsO3ZhciBkPWMubGFuZXN8Yy5jaGlsZExhbmVzLGU9ZCxmPWEucGVuZGluZ0xhbmVzJn5lO2EucGVuZGluZ0xhbmVzPWU7YS5zdXNwZW5kZWRMYW5lcz0wOw0KYS5waW5nZWRMYW5lcz0wO2EuZXhwaXJlZExhbmVzJj1lO2EubXV0YWJsZVJlYWRMYW5lcyY9ZTthLmVudGFuZ2xlZExhbmVzJj1lO2U9YS5lbnRhbmdsZW1lbnRzO2Zvcih2YXIgZz1hLmV2ZW50VGltZXMsaD1hLmV4cGlyYXRpb25UaW1lczswPGY7KXt2YXIgaz0zMS1CYShmKSx2PTE8PGs7ZVtrXT0wO2dba109LTE7aFtrXT0tMTtmJj1+dn1udWxsIT09dmEmJjA9PT0oZCYyNCkmJnZhLmhhcyhhKSYmdmEuZGVsZXRlKGEpO2E9PT1SJiYoRz1SPW51bGwsTz0wKTsxPGMuZmxhZ3M\/bnVsbCE9PWMubGFzdEVmZmVjdD8oYy5sYXN0RWZmZWN0Lm5leHRFZmZlY3Q9YyxkPWMuZmlyc3RFZmZlY3QpOmQ9YzpkPWMuZmlyc3RFZmZlY3Q7aWYobnVsbCE9PWQpe2U9bjtufD0zMjtqZi5jdXJyZW50PW51bGw7a2Y9UGM7Zz13ZygpO2lmKG1lKGcpKXtpZigic2VsZWN0aW9uU3RhcnQiaW4gZyloPXtzdGFydDpnLnNlbGVjdGlvblN0YXJ0LGVuZDpnLnNlbGVjdGlvbkVuZH07ZWxzZSBhOmlmKGg9DQooaD1nLm93bmVyRG9jdW1lbnQpJiZoLmRlZmF1bHRWaWV3fHx3aW5kb3csKHY9aC5nZXRTZWxlY3Rpb24mJmguZ2V0U2VsZWN0aW9uKCkpJiYwIT09di5yYW5nZUNvdW50KXtoPXYuYW5jaG9yTm9kZTtmPXYuYW5jaG9yT2Zmc2V0O2s9di5mb2N1c05vZGU7dj12LmZvY3VzT2Zmc2V0O3RyeXtoLm5vZGVUeXBlLGsubm9kZVR5cGV9Y2F0Y2gocWEpe2g9bnVsbDticmVhayBhfXZhciB0PTAsdz0tMSxyPS0xLHo9MCxCPTAseT1nLEM9bnVsbDtiOmZvcig7Oyl7Zm9yKHZhciB4Ozspe3khPT1ofHwwIT09ZiYmMyE9PXkubm9kZVR5cGV8fCh3PXQrZik7eSE9PWt8fDAhPT12JiYzIT09eS5ub2RlVHlwZXx8KHI9dCt2KTszPT09eS5ub2RlVHlwZSYmKHQrPXkubm9kZVZhbHVlLmxlbmd0aCk7aWYobnVsbD09PSh4PXkuZmlyc3RDaGlsZCkpYnJlYWs7Qz15O3k9eH1mb3IoOzspe2lmKHk9PT1nKWJyZWFrIGI7Qz09PWgmJisrej09PWYmJih3PXQpO0M9PT1rJiYrK0I9PT12JiYocj10KTtpZihudWxsIT09DQooeD15Lm5leHRTaWJsaW5nKSlicmVhazt5PUM7Qz15LnBhcmVudE5vZGV9eT14fWg9LTE9PT13fHwtMT09PXI\/bnVsbDp7c3RhcnQ6dyxlbmQ6cn19ZWxzZSBoPW51bGw7aD1ofHx7c3RhcnQ6MCxlbmQ6MH19ZWxzZSBoPW51bGw7bGY9e2ZvY3VzZWRFbGVtOmcsc2VsZWN0aW9uUmFuZ2U6aH07UGM9ITE7dWM9bnVsbDt4ZD0hMTtsPWQ7ZG8gdHJ5e1FqKCl9Y2F0Y2gocWEpe2lmKG51bGw9PT1sKXRocm93IEVycm9yKG0oMzMwKSk7UWEobCxxYSk7bD1sLm5leHRFZmZlY3R9d2hpbGUobnVsbCE9PWwpO3VjPW51bGw7bD1kO2RvIHRyeXtmb3IoZz1hO251bGwhPT1sOyl7dmFyIHA9bC5mbGFncztwJjE2JiZxYyhsLnN0YXRlTm9kZSwiIik7aWYocCYxMjgpe3ZhciBxPWwuYWx0ZXJuYXRlO2lmKG51bGwhPT1xKXt2YXIgdT1xLnJlZjtudWxsIT09dSYmKCJmdW5jdGlvbiI9PT10eXBlb2YgdT91KG51bGwpOnUuY3VycmVudD1udWxsKX19c3dpdGNoKHAmMTAzOCl7Y2FzZSAyOlVoKGwpO2wuZmxhZ3MmPQ0KLTM7YnJlYWs7Y2FzZSA2OlVoKGwpO2wuZmxhZ3MmPS0zO2JmKGwuYWx0ZXJuYXRlLGwpO2JyZWFrO2Nhc2UgMTAyNDpsLmZsYWdzJj0tMTAyNTticmVhaztjYXNlIDEwMjg6bC5mbGFncyY9LTEwMjU7YmYobC5hbHRlcm5hdGUsbCk7YnJlYWs7Y2FzZSA0OmJmKGwuYWx0ZXJuYXRlLGwpO2JyZWFrO2Nhc2UgODpoPWw7UmgoZyxoKTt2YXIgQT1oLmFsdGVybmF0ZTtTaChoKTtudWxsIT09QSYmU2goQSl9bD1sLm5leHRFZmZlY3R9fWNhdGNoKHFhKXtpZihudWxsPT09bCl0aHJvdyBFcnJvcihtKDMzMCkpO1FhKGwscWEpO2w9bC5uZXh0RWZmZWN0fXdoaWxlKG51bGwhPT1sKTt1PWxmO3E9d2coKTtwPXUuZm9jdXNlZEVsZW07Zz11LnNlbGVjdGlvblJhbmdlO2lmKHEhPT1wJiZwJiZwLm93bmVyRG9jdW1lbnQmJnZnKHAub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQscCkpe251bGwhPT1nJiZtZShwKSYmKHE9Zy5zdGFydCx1PWcuZW5kLHZvaWQgMD09PXUmJih1PXEpLCJzZWxlY3Rpb25TdGFydCJpbg0KcD8ocC5zZWxlY3Rpb25TdGFydD1xLHAuc2VsZWN0aW9uRW5kPU1hdGgubWluKHUscC52YWx1ZS5sZW5ndGgpKToodT0ocT1wLm93bmVyRG9jdW1lbnR8fGRvY3VtZW50KSYmcS5kZWZhdWx0Vmlld3x8d2luZG93LHUuZ2V0U2VsZWN0aW9uJiYodT11LmdldFNlbGVjdGlvbigpLGg9cC50ZXh0Q29udGVudC5sZW5ndGgsQT1NYXRoLm1pbihnLnN0YXJ0LGgpLGc9dm9pZCAwPT09Zy5lbmQ\/QTpNYXRoLm1pbihnLmVuZCxoKSwhdS5leHRlbmQmJkE+ZyYmKGg9ZyxnPUEsQT1oKSxoPXVnKHAsQSksZj11ZyhwLGcpLGgmJmYmJigxIT09dS5yYW5nZUNvdW50fHx1LmFuY2hvck5vZGUhPT1oLm5vZGV8fHUuYW5jaG9yT2Zmc2V0IT09aC5vZmZzZXR8fHUuZm9jdXNOb2RlIT09Zi5ub2RlfHx1LmZvY3VzT2Zmc2V0IT09Zi5vZmZzZXQpJiYocT1xLmNyZWF0ZVJhbmdlKCkscS5zZXRTdGFydChoLm5vZGUsaC5vZmZzZXQpLHUucmVtb3ZlQWxsUmFuZ2VzKCksQT5nPyh1LmFkZFJhbmdlKHEpLHUuZXh0ZW5kKGYubm9kZSwNCmYub2Zmc2V0KSk6KHEuc2V0RW5kKGYubm9kZSxmLm9mZnNldCksdS5hZGRSYW5nZShxKSkpKSkpO3E9W107Zm9yKHU9cDt1PXUucGFyZW50Tm9kZTspMT09PXUubm9kZVR5cGUmJnEucHVzaCh7ZWxlbWVudDp1LGxlZnQ6dS5zY3JvbGxMZWZ0LHRvcDp1LnNjcm9sbFRvcH0pOyJmdW5jdGlvbiI9PT10eXBlb2YgcC5mb2N1cyYmcC5mb2N1cygpO2ZvcihwPTA7cDxxLmxlbmd0aDtwKyspdT1xW3BdLHUuZWxlbWVudC5zY3JvbGxMZWZ0PXUubGVmdCx1LmVsZW1lbnQuc2Nyb2xsVG9wPXUudG9wfVBjPSEha2Y7bGY9a2Y9bnVsbDthLmN1cnJlbnQ9YztsPWQ7ZG8gdHJ5e2ZvcihwPWE7bnVsbCE9PWw7KXt2YXIgRD1sLmZsYWdzO0QmMzYmJkFqKHAsbC5hbHRlcm5hdGUsbCk7aWYoRCYxMjgpe3E9dm9pZCAwO3ZhciBFPWwucmVmO2lmKG51bGwhPT1FKXt2YXIgRj1sLnN0YXRlTm9kZTtzd2l0Y2gobC50YWcpe2Nhc2UgNTpxPUY7YnJlYWs7ZGVmYXVsdDpxPUZ9ImZ1bmN0aW9uIj09PXR5cGVvZiBFPw0KRShxKTpFLmN1cnJlbnQ9cX19bD1sLm5leHRFZmZlY3R9fWNhdGNoKHFhKXtpZihudWxsPT09bCl0aHJvdyBFcnJvcihtKDMzMCkpO1FhKGwscWEpO2w9bC5uZXh0RWZmZWN0fXdoaWxlKG51bGwhPT1sKTtsPW51bGw7UmooKTtuPWV9ZWxzZSBhLmN1cnJlbnQ9YztpZihTYSlTYT0hMSx0Yz1hLHZjPWI7ZWxzZSBmb3IobD1kO251bGwhPT1sOyliPWwubmV4dEVmZmVjdCxsLm5leHRFZmZlY3Q9bnVsbCxsLmZsYWdzJjgmJihEPWwsRC5zaWJsaW5nPW51bGwsRC5zdGF0ZU5vZGU9bnVsbCksbD1iO2Q9YS5wZW5kaW5nTGFuZXM7MD09PWQmJihuYT1udWxsKTsxPT09ZD9hPT09ZWY\/cmMrKzoocmM9MCxlZj1hKTpyYz0wO2M9Yy5zdGF0ZU5vZGU7aWYoZGImJiJmdW5jdGlvbiI9PT10eXBlb2YgZGIub25Db21taXRGaWJlclJvb3QpdHJ5e2RiLm9uQ29tbWl0RmliZXJSb290KFplLGMsdm9pZCAwLDY0PT09KGMuY3VycmVudC5mbGFncyY2NCkpfWNhdGNoKHFhKXt9YmEoYSxQKCkpO2lmKHJkKXRocm93IHJkPQ0KITEsYT1ZZSxZZT1udWxsLGE7aWYoMCE9PShuJjgpKXJldHVybiBudWxsO2phKCk7cmV0dXJuIG51bGx9ZnVuY3Rpb24gUWooKXtmb3IoO251bGwhPT1sOyl7dmFyIGE9bC5hbHRlcm5hdGU7eGR8fG51bGw9PT11Y3x8KDAhPT0obC5mbGFncyY4KT9WZihsLHVjKSYmKHhkPSEwKToxMz09PWwudGFnJiZFaihhLGwpJiZWZihsLHVjKSYmKHhkPSEwKSk7dmFyIGI9bC5mbGFnczswIT09KGImMjU2KSYmemooYSxsKTswPT09KGImNTEyKXx8U2F8fChTYT0hMCxiYyg5NyxmdW5jdGlvbigpe1JhKCk7cmV0dXJuIG51bGx9KSk7bD1sLm5leHRFZmZlY3R9fWZ1bmN0aW9uIFJhKCl7aWYoOTAhPT12Yyl7dmFyIGE9OTc8dmM\/OTc6dmM7dmM9OTA7cmV0dXJuIFphKGEsU2opfXJldHVybiExfWZ1bmN0aW9uIEJqKGEsYil7bWYucHVzaChiLGEpO1NhfHwoU2E9ITAsYmMoOTcsZnVuY3Rpb24oKXtSYSgpO3JldHVybiBudWxsfSkpfWZ1bmN0aW9uIE9oKGEsYil7bmYucHVzaChiLGEpO1NhfHwoU2E9DQohMCxiYyg5NyxmdW5jdGlvbigpe1JhKCk7cmV0dXJuIG51bGx9KSl9ZnVuY3Rpb24gU2ooKXtpZihudWxsPT09dGMpcmV0dXJuITE7dmFyIGE9dGM7dGM9bnVsbDtpZigwIT09KG4mNDgpKXRocm93IEVycm9yKG0oMzMxKSk7dmFyIGI9bjtufD0zMjt2YXIgYz1uZjtuZj1bXTtmb3IodmFyIGQ9MDtkPGMubGVuZ3RoO2QrPTIpe3ZhciBlPWNbZF0sZj1jW2QrMV0sZz1lLmRlc3Ryb3k7ZS5kZXN0cm95PXZvaWQgMDtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGcpdHJ5e2coKX1jYXRjaChrKXtpZihudWxsPT09Zil0aHJvdyBFcnJvcihtKDMzMCkpO1FhKGYsayl9fWM9bWY7bWY9W107Zm9yKGQ9MDtkPGMubGVuZ3RoO2QrPTIpe2U9Y1tkXTtmPWNbZCsxXTt0cnl7dmFyIGg9ZS5jcmVhdGU7ZS5kZXN0cm95PWgoKX1jYXRjaChrKXtpZihudWxsPT09Zil0aHJvdyBFcnJvcihtKDMzMCkpO1FhKGYsayl9fWZvcihoPWEuY3VycmVudC5maXJzdEVmZmVjdDtudWxsIT09aDspYT1oLm5leHRFZmZlY3QsDQpoLm5leHRFZmZlY3Q9bnVsbCxoLmZsYWdzJjgmJihoLnNpYmxpbmc9bnVsbCxoLnN0YXRlTm9kZT1udWxsKSxoPWE7bj1iO2phKCk7cmV0dXJuITB9ZnVuY3Rpb24gZGkoYSxiLGMpe2I9V2UoYyxiKTtiPUxoKGEsYiwxKTtKYShhLGIpO2I9VygpO2E9dWQoYSwxKTtudWxsIT09YSYmKE9jKGEsMSxiKSxiYShhLGIpKX1mdW5jdGlvbiBRYShhLGIpe2lmKDM9PT1hLnRhZylkaShhLGEsYik7ZWxzZSBmb3IodmFyIGM9YS5yZXR1cm47bnVsbCE9PWM7KXtpZigzPT09Yy50YWcpe2RpKGMsYSxiKTticmVha31lbHNlIGlmKDE9PT1jLnRhZyl7dmFyIGQ9Yy5zdGF0ZU5vZGU7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBjLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yfHwiZnVuY3Rpb24iPT09dHlwZW9mIGQuY29tcG9uZW50RGlkQ2F0Y2gmJihudWxsPT09bmF8fCFuYS5oYXMoZCkpKXthPVdlKGIsYSk7dmFyIGU9TWgoYyxhLDEpO0phKGMsZSk7ZT1XKCk7Yz11ZChjLDEpO2lmKG51bGwhPT0NCmMpT2MoYywxLGUpLGJhKGMsZSk7ZWxzZSBpZigiZnVuY3Rpb24iPT09dHlwZW9mIGQuY29tcG9uZW50RGlkQ2F0Y2gmJihudWxsPT09bmF8fCFuYS5oYXMoZCkpKXRyeXtkLmNvbXBvbmVudERpZENhdGNoKGIsYSl9Y2F0Y2goZil7fWJyZWFrfX1jPWMucmV0dXJufX1mdW5jdGlvbiBMaihhLGIsYyl7dmFyIGQ9YS5waW5nQ2FjaGU7bnVsbCE9PWQmJmQuZGVsZXRlKGIpO2I9VygpO2EucGluZ2VkTGFuZXN8PWEuc3VzcGVuZGVkTGFuZXMmYztSPT09YSYmKE8mYyk9PT1jJiYoND09PUx8fDM9PT1MJiYoTyY2MjkxNDU2MCk9PT1PJiY1MDA+UCgpLWNmP0diKGEsMCk6aGZ8PWMpO2JhKGEsYil9ZnVuY3Rpb24gRGooYSxiKXt2YXIgYz1hLnN0YXRlTm9kZTtudWxsIT09YyYmYy5kZWxldGUoYik7Yj0wOzA9PT1iJiYoYj1hLm1vZGUsMD09PShiJjIpP2I9MTowPT09KGImNCk\/Yj05OT09PXdiKCk\/MToyOigwPT09dWEmJih1YT1GYiksYj1uYig2MjkxNDU2MCZ+dWEpLDA9PT1iJiYoYj00MTk0MzA0KSkpOw0KYz1XKCk7YT11ZChhLGIpO251bGwhPT1hJiYoT2MoYSxiLGMpLGJhKGEsYykpfWZ1bmN0aW9uIFRqKGEsYixjLGQpe3RoaXMudGFnPWE7dGhpcy5rZXk9Yzt0aGlzLnNpYmxpbmc9dGhpcy5jaGlsZD10aGlzLnJldHVybj10aGlzLnN0YXRlTm9kZT10aGlzLnR5cGU9dGhpcy5lbGVtZW50VHlwZT1udWxsO3RoaXMuaW5kZXg9MDt0aGlzLnJlZj1udWxsO3RoaXMucGVuZGluZ1Byb3BzPWI7dGhpcy5kZXBlbmRlbmNpZXM9dGhpcy5tZW1vaXplZFN0YXRlPXRoaXMudXBkYXRlUXVldWU9dGhpcy5tZW1vaXplZFByb3BzPW51bGw7dGhpcy5tb2RlPWQ7dGhpcy5mbGFncz0wO3RoaXMubGFzdEVmZmVjdD10aGlzLmZpcnN0RWZmZWN0PXRoaXMubmV4dEVmZmVjdD1udWxsO3RoaXMuY2hpbGRMYW5lcz10aGlzLmxhbmVzPTA7dGhpcy5hbHRlcm5hdGU9bnVsbH1mdW5jdGlvbiBQZShhKXthPWEucHJvdG90eXBlO3JldHVybiEoIWF8fCFhLmlzUmVhY3RDb21wb25lbnQpfWZ1bmN0aW9uIFVqKGEpe2lmKCJmdW5jdGlvbiI9PT0NCnR5cGVvZiBhKXJldHVybiBQZShhKT8xOjA7aWYodm9pZCAwIT09YSYmbnVsbCE9PWEpe2E9YS4kJHR5cGVvZjtpZihhPT09RGMpcmV0dXJuIDExO2lmKGE9PT1FYylyZXR1cm4gMTR9cmV0dXJuIDJ9ZnVuY3Rpb24gTWEoYSxiKXt2YXIgYz1hLmFsdGVybmF0ZTtudWxsPT09Yz8oYz1aKGEudGFnLGIsYS5rZXksYS5tb2RlKSxjLmVsZW1lbnRUeXBlPWEuZWxlbWVudFR5cGUsYy50eXBlPWEudHlwZSxjLnN0YXRlTm9kZT1hLnN0YXRlTm9kZSxjLmFsdGVybmF0ZT1hLGEuYWx0ZXJuYXRlPWMpOihjLnBlbmRpbmdQcm9wcz1iLGMudHlwZT1hLnR5cGUsYy5mbGFncz0wLGMubmV4dEVmZmVjdD1udWxsLGMuZmlyc3RFZmZlY3Q9bnVsbCxjLmxhc3RFZmZlY3Q9bnVsbCk7Yy5jaGlsZExhbmVzPWEuY2hpbGRMYW5lcztjLmxhbmVzPWEubGFuZXM7Yy5jaGlsZD1hLmNoaWxkO2MubWVtb2l6ZWRQcm9wcz1hLm1lbW9pemVkUHJvcHM7Yy5tZW1vaXplZFN0YXRlPWEubWVtb2l6ZWRTdGF0ZTtjLnVwZGF0ZVF1ZXVlPQ0KYS51cGRhdGVRdWV1ZTtiPWEuZGVwZW5kZW5jaWVzO2MuZGVwZW5kZW5jaWVzPW51bGw9PT1iP251bGw6e2xhbmVzOmIubGFuZXMsZmlyc3RDb250ZXh0OmIuZmlyc3RDb250ZXh0fTtjLnNpYmxpbmc9YS5zaWJsaW5nO2MuaW5kZXg9YS5pbmRleDtjLnJlZj1hLnJlZjtyZXR1cm4gY31mdW5jdGlvbiBmZChhLGIsYyxkLGUsZil7dmFyIGc9MjtkPWE7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBhKVBlKGEpJiYoZz0xKTtlbHNlIGlmKCJzdHJpbmciPT09dHlwZW9mIGEpZz01O2Vsc2UgYTpzd2l0Y2goYSl7Y2FzZSB3YTpyZXR1cm4gemIoYy5jaGlsZHJlbixlLGYsYik7Y2FzZSBlaTpnPTg7ZXw9MTY7YnJlYWs7Y2FzZSBIZDpnPTg7ZXw9MTticmVhaztjYXNlIExiOnJldHVybiBhPVooMTIsYyxiLGV8OCksYS5lbGVtZW50VHlwZT1MYixhLnR5cGU9TGIsYS5sYW5lcz1mLGE7Y2FzZSBNYjpyZXR1cm4gYT1aKDEzLGMsYixlKSxhLnR5cGU9TWIsYS5lbGVtZW50VHlwZT1NYixhLmxhbmVzPQ0KZixhO2Nhc2UgQ2M6cmV0dXJuIGE9WigxOSxjLGIsZSksYS5lbGVtZW50VHlwZT1DYyxhLmxhbmVzPWYsYTtjYXNlIG9mOnJldHVybiBUZShjLGUsZixiKTtjYXNlIHBmOnJldHVybiBhPVooMjQsYyxiLGUpLGEuZWxlbWVudFR5cGU9cGYsYS5sYW5lcz1mLGE7ZGVmYXVsdDppZigib2JqZWN0Ij09PXR5cGVvZiBhJiZudWxsIT09YSlzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSBKZDpnPTEwO2JyZWFrIGE7Y2FzZSBJZDpnPTk7YnJlYWsgYTtjYXNlIERjOmc9MTE7YnJlYWsgYTtjYXNlIEVjOmc9MTQ7YnJlYWsgYTtjYXNlIExkOmc9MTY7ZD1udWxsO2JyZWFrIGE7Y2FzZSBLZDpnPTIyO2JyZWFrIGF9dGhyb3cgRXJyb3IobSgxMzAsbnVsbD09YT9hOnR5cGVvZiBhLCIiKSk7fWI9WihnLGMsYixlKTtiLmVsZW1lbnRUeXBlPWE7Yi50eXBlPWQ7Yi5sYW5lcz1mO3JldHVybiBifWZ1bmN0aW9uIHpiKGEsYixjLGQpe2E9Wig3LGEsZCxiKTthLmxhbmVzPWM7cmV0dXJuIGF9ZnVuY3Rpb24gVGUoYSwNCmIsYyxkKXthPVooMjMsYSxkLGIpO2EuZWxlbWVudFR5cGU9b2Y7YS5sYW5lcz1jO3JldHVybiBhfWZ1bmN0aW9uIENlKGEsYixjKXthPVooNixhLG51bGwsYik7YS5sYW5lcz1jO3JldHVybiBhfWZ1bmN0aW9uIERlKGEsYixjKXtiPVooNCxudWxsIT09YS5jaGlsZHJlbj9hLmNoaWxkcmVuOltdLGEua2V5LGIpO2IubGFuZXM9YztiLnN0YXRlTm9kZT17Y29udGFpbmVySW5mbzphLmNvbnRhaW5lckluZm8scGVuZGluZ0NoaWxkcmVuOm51bGwsaW1wbGVtZW50YXRpb246YS5pbXBsZW1lbnRhdGlvbn07cmV0dXJuIGJ9ZnVuY3Rpb24gVmooYSxiLGMpe3RoaXMudGFnPWI7dGhpcy5jb250YWluZXJJbmZvPWE7dGhpcy5maW5pc2hlZFdvcms9dGhpcy5waW5nQ2FjaGU9dGhpcy5jdXJyZW50PXRoaXMucGVuZGluZ0NoaWxkcmVuPW51bGw7dGhpcy50aW1lb3V0SGFuZGxlPS0xO3RoaXMucGVuZGluZ0NvbnRleHQ9dGhpcy5jb250ZXh0PW51bGw7dGhpcy5oeWRyYXRlPWM7dGhpcy5jYWxsYmFja05vZGU9DQpudWxsO3RoaXMuY2FsbGJhY2tQcmlvcml0eT0wO3RoaXMuZXZlbnRUaW1lcz1BcnJheSgzMSkuZmlsbCgwKTt0aGlzLmV4cGlyYXRpb25UaW1lcz1BcnJheSgzMSkuZmlsbCgtMSk7dGhpcy5lbnRhbmdsZWRMYW5lcz10aGlzLmZpbmlzaGVkTGFuZXM9dGhpcy5tdXRhYmxlUmVhZExhbmVzPXRoaXMuZXhwaXJlZExhbmVzPXRoaXMucGluZ2VkTGFuZXM9dGhpcy5zdXNwZW5kZWRMYW5lcz10aGlzLnBlbmRpbmdMYW5lcz0wO3RoaXMuZW50YW5nbGVtZW50cz1BcnJheSgzMSkuZmlsbCgwKTt0aGlzLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGE9bnVsbH1mdW5jdGlvbiBXaihhLGIsYyl7dmFyIGQ9Mzxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10\/YXJndW1lbnRzWzNdOm51bGw7cmV0dXJueyQkdHlwZW9mOlVhLGtleTpudWxsPT1kP251bGw6IiIrZCxjaGlsZHJlbjphLGNvbnRhaW5lckluZm86YixpbXBsZW1lbnRhdGlvbjpjfX1mdW5jdGlvbiB5ZChhLA0KYixjLGQpe3ZhciBlPWIuY3VycmVudCxmPVcoKSxnPU9hKGUpO2E6aWYoYyl7Yz1jLl9yZWFjdEludGVybmFscztiOntpZihWYShjKSE9PWN8fDEhPT1jLnRhZyl0aHJvdyBFcnJvcihtKDE3MCkpO3ZhciBoPWM7ZG97c3dpdGNoKGgudGFnKXtjYXNlIDM6aD1oLnN0YXRlTm9kZS5jb250ZXh0O2JyZWFrIGI7Y2FzZSAxOmlmKFMoaC50eXBlKSl7aD1oLnN0YXRlTm9kZS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dDticmVhayBifX1oPWgucmV0dXJufXdoaWxlKG51bGwhPT1oKTt0aHJvdyBFcnJvcihtKDE3MSkpO31pZigxPT09Yy50YWcpe3ZhciBrPWMudHlwZTtpZihTKGspKXtjPVNnKGMsayxoKTticmVhayBhfX1jPWh9ZWxzZSBjPUhhO251bGw9PT1iLmNvbnRleHQ\/Yi5jb250ZXh0PWM6Yi5wZW5kaW5nQ29udGV4dD1jO2I9SWEoZixnKTtiLnBheWxvYWQ9e2VsZW1lbnQ6YX07ZD12b2lkIDA9PT1kP251bGw6ZDtudWxsIT09ZCYmKGIuY2FsbGJhY2s9DQpkKTtKYShlLGIpO1BhKGUsZyxmKTtyZXR1cm4gZ31mdW5jdGlvbiBxZihhKXthPWEuY3VycmVudDtpZighYS5jaGlsZClyZXR1cm4gbnVsbDtzd2l0Y2goYS5jaGlsZC50YWcpe2Nhc2UgNTpyZXR1cm4gYS5jaGlsZC5zdGF0ZU5vZGU7ZGVmYXVsdDpyZXR1cm4gYS5jaGlsZC5zdGF0ZU5vZGV9fWZ1bmN0aW9uIGZpKGEsYil7YT1hLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWEmJm51bGwhPT1hLmRlaHlkcmF0ZWQpe3ZhciBjPWEucmV0cnlMYW5lO2EucmV0cnlMYW5lPTAhPT1jJiZjPGI\/YzpifX1mdW5jdGlvbiByZihhLGIpe2ZpKGEsYik7KGE9YS5hbHRlcm5hdGUpJiZmaShhLGIpfWZ1bmN0aW9uIFhqKGEpe2E9VWYoYSk7cmV0dXJuIG51bGw9PT1hP251bGw6YS5zdGF0ZU5vZGV9ZnVuY3Rpb24gWWooYSl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gc2YoYSxiLGMpe3ZhciBkPW51bGwhPWMmJm51bGwhPWMuaHlkcmF0aW9uT3B0aW9ucyYmYy5oeWRyYXRpb25PcHRpb25zLm11dGFibGVTb3VyY2VzfHwNCm51bGw7Yz1uZXcgVmooYSxiLG51bGwhPWMmJiEwPT09Yy5oeWRyYXRlKTtiPVooMyxudWxsLG51bGwsMj09PWI\/NzoxPT09Yj8zOjApO2MuY3VycmVudD1iO2Iuc3RhdGVOb2RlPWM7QWUoYik7YVtyYl09Yy5jdXJyZW50O0JnKDg9PT1hLm5vZGVUeXBlP2EucGFyZW50Tm9kZTphKTtpZihkKWZvcihhPTA7YTxkLmxlbmd0aDthKyspe2I9ZFthXTt2YXIgZT1iLl9nZXRWZXJzaW9uO2U9ZShiLl9zb3VyY2UpO251bGw9PWMubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YT9jLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGE9W2IsZV06Yy5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhLnB1c2goYixlKX10aGlzLl9pbnRlcm5hbFJvb3Q9Y31mdW5jdGlvbiB3YyhhKXtyZXR1cm4hKCFhfHwxIT09YS5ub2RlVHlwZSYmOSE9PWEubm9kZVR5cGUmJjExIT09YS5ub2RlVHlwZSYmKDghPT1hLm5vZGVUeXBlfHwiIHJlYWN0LW1vdW50LXBvaW50LXVuc3RhYmxlICIhPT0NCmEubm9kZVZhbHVlKSl9ZnVuY3Rpb24gWmooYSxiKXtifHwoYj1hPzk9PT1hLm5vZGVUeXBlP2EuZG9jdW1lbnRFbGVtZW50OmEuZmlyc3RDaGlsZDpudWxsLGI9ISghYnx8MSE9PWIubm9kZVR5cGV8fCFiLmhhc0F0dHJpYnV0ZSgiZGF0YS1yZWFjdHJvb3QiKSkpO2lmKCFiKWZvcih2YXIgYztjPWEubGFzdENoaWxkOylhLnJlbW92ZUNoaWxkKGMpO3JldHVybiBuZXcgc2YoYSwwLGI\/e2h5ZHJhdGU6ITB9OnZvaWQgMCl9ZnVuY3Rpb24gemQoYSxiLGMsZCxlKXt2YXIgZj1jLl9yZWFjdFJvb3RDb250YWluZXI7aWYoZil7dmFyIGc9Zi5faW50ZXJuYWxSb290O2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgZSl7dmFyIGg9ZTtlPWZ1bmN0aW9uKCl7dmFyIGE9cWYoZyk7aC5jYWxsKGEpfX15ZChiLGcsYSxlKX1lbHNle2Y9Yy5fcmVhY3RSb290Q29udGFpbmVyPVpqKGMsZCk7Zz1mLl9pbnRlcm5hbFJvb3Q7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBlKXt2YXIgaz1lO2U9ZnVuY3Rpb24oKXt2YXIgYT0NCnFmKGcpO2suY2FsbChhKX19YWkoZnVuY3Rpb24oKXt5ZChiLGcsYSxlKX0pfXJldHVybiBxZihnKX1mdW5jdGlvbiBnaShhLGIpe3ZhciBjPTI8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsO2lmKCF3YyhiKSl0aHJvdyBFcnJvcihtKDIwMCkpO3JldHVybiBXaihhLGIsbnVsbCxjKX1pZighaGEpdGhyb3cgRXJyb3IobSgyMjcpKTt2YXIgeWY9bmV3IFNldCxJYj17fSxvYT0hKCJ1bmRlZmluZWQiPT09dHlwZW9mIHdpbmRvd3x8InVuZGVmaW5lZCI9PT10eXBlb2Ygd2luZG93LmRvY3VtZW50fHwidW5kZWZpbmVkIj09PXR5cGVvZiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCksbGk9L15bOkEtWl9hLXpcdTAwQzAtXHUwMEQ2XHUwMEQ4LVx1MDBGNlx1MDBGOC1cdTAyRkZcdTAzNzAtXHUwMzdEXHUwMzdGLVx1MUZGRlx1MjAwQy1cdTIwMERcdTIwNzAtXHUyMThGXHUyQzAwLVx1MkZFRlx1MzAwMS1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZGRF1bOkEtWl9hLXpcdTAwQzAtXHUwMEQ2XHUwMEQ4LVx1MDBGNlx1MDBGOC1cdTAyRkZcdTAzNzAtXHUwMzdEXHUwMzdGLVx1MUZGRlx1MjAwQy1cdTIwMERcdTIwNzAtXHUyMThGXHUyQzAwLVx1MkZFRlx1MzAwMS1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZGRFwtLjAtOVx1MDBCN1x1MDMwMC1cdTAzNkZcdTIwM0YtXHUyMDQwXSokLywNCnpmPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksQmY9e30sQWY9e30sST17fTsiY2hpbGRyZW4gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgZGVmYXVsdFZhbHVlIGRlZmF1bHRDaGVja2VkIGlubmVySFRNTCBzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcgc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIHN0eWxlIi5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24oYSl7SVthXT1uZXcgUShhLDAsITEsYSxudWxsLCExLCExKX0pO1tbImFjY2VwdENoYXJzZXQiLCJhY2NlcHQtY2hhcnNldCJdLFsiY2xhc3NOYW1lIiwiY2xhc3MiXSxbImh0bWxGb3IiLCJmb3IiXSxbImh0dHBFcXVpdiIsImh0dHAtZXF1aXYiXV0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hWzBdO0lbYl09bmV3IFEoYiwxLCExLGFbMV0sbnVsbCwhMSwhMSl9KTtbImNvbnRlbnRFZGl0YWJsZSIsImRyYWdnYWJsZSIsInNwZWxsQ2hlY2siLCJ2YWx1ZSJdLmZvckVhY2goZnVuY3Rpb24oYSl7SVthXT0NCm5ldyBRKGEsMiwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTtbImF1dG9SZXZlcnNlIiwiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCIsImZvY3VzYWJsZSIsInByZXNlcnZlQWxwaGEiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0lbYV09bmV3IFEoYSwyLCExLGEsbnVsbCwhMSwhMSl9KTsiYWxsb3dGdWxsU2NyZWVuIGFzeW5jIGF1dG9Gb2N1cyBhdXRvUGxheSBjb250cm9scyBkZWZhdWx0IGRlZmVyIGRpc2FibGVkIGRpc2FibGVQaWN0dXJlSW5QaWN0dXJlIGRpc2FibGVSZW1vdGVQbGF5YmFjayBmb3JtTm9WYWxpZGF0ZSBoaWRkZW4gbG9vcCBub01vZHVsZSBub1ZhbGlkYXRlIG9wZW4gcGxheXNJbmxpbmUgcmVhZE9ubHkgcmVxdWlyZWQgcmV2ZXJzZWQgc2NvcGVkIHNlYW1sZXNzIGl0ZW1TY29wZSIuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0lbYV09bmV3IFEoYSwzLCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pO1siY2hlY2tlZCIsIm11bHRpcGxlIiwNCiJtdXRlZCIsInNlbGVjdGVkIl0uZm9yRWFjaChmdW5jdGlvbihhKXtJW2FdPW5ldyBRKGEsMywhMCxhLG51bGwsITEsITEpfSk7WyJjYXB0dXJlIiwiZG93bmxvYWQiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0lbYV09bmV3IFEoYSw0LCExLGEsbnVsbCwhMSwhMSl9KTtbImNvbHMiLCJyb3dzIiwic2l6ZSIsInNwYW4iXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0lbYV09bmV3IFEoYSw2LCExLGEsbnVsbCwhMSwhMSl9KTtbInJvd1NwYW4iLCJzdGFydCJdLmZvckVhY2goZnVuY3Rpb24oYSl7SVthXT1uZXcgUShhLDUsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7dmFyIHRmPS9bXC06XShbYS16XSkvZyx1Zj1mdW5jdGlvbihhKXtyZXR1cm4gYVsxXS50b1VwcGVyQ2FzZSgpfTsiYWNjZW50LWhlaWdodCBhbGlnbm1lbnQtYmFzZWxpbmUgYXJhYmljLWZvcm0gYmFzZWxpbmUtc2hpZnQgY2FwLWhlaWdodCBjbGlwLXBhdGggY2xpcC1ydWxlIGNvbG9yLWludGVycG9sYXRpb24gY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIGNvbG9yLXByb2ZpbGUgY29sb3ItcmVuZGVyaW5nIGRvbWluYW50LWJhc2VsaW5lIGVuYWJsZS1iYWNrZ3JvdW5kIGZpbGwtb3BhY2l0eSBmaWxsLXJ1bGUgZmxvb2QtY29sb3IgZmxvb2Qtb3BhY2l0eSBmb250LWZhbWlseSBmb250LXNpemUgZm9udC1zaXplLWFkanVzdCBmb250LXN0cmV0Y2ggZm9udC1zdHlsZSBmb250LXZhcmlhbnQgZm9udC13ZWlnaHQgZ2x5cGgtbmFtZSBnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIGdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIGhvcml6LWFkdi14IGhvcml6LW9yaWdpbi14IGltYWdlLXJlbmRlcmluZyBsZXR0ZXItc3BhY2luZyBsaWdodGluZy1jb2xvciBtYXJrZXItZW5kIG1hcmtlci1taWQgbWFya2VyLXN0YXJ0IG92ZXJsaW5lLXBvc2l0aW9uIG92ZXJsaW5lLXRoaWNrbmVzcyBwYWludC1vcmRlciBwYW5vc2UtMSBwb2ludGVyLWV2ZW50cyByZW5kZXJpbmctaW50ZW50IHNoYXBlLXJlbmRlcmluZyBzdG9wLWNvbG9yIHN0b3Atb3BhY2l0eSBzdHJpa2V0aHJvdWdoLXBvc2l0aW9uIHN0cmlrZXRocm91Z2gtdGhpY2tuZXNzIHN0cm9rZS1kYXNoYXJyYXkgc3Ryb2tlLWRhc2hvZmZzZXQgc3Ryb2tlLWxpbmVjYXAgc3Ryb2tlLWxpbmVqb2luIHN0cm9rZS1taXRlcmxpbWl0IHN0cm9rZS1vcGFjaXR5IHN0cm9rZS13aWR0aCB0ZXh0LWFuY2hvciB0ZXh0LWRlY29yYXRpb24gdGV4dC1yZW5kZXJpbmcgdW5kZXJsaW5lLXBvc2l0aW9uIHVuZGVybGluZS10aGlja25lc3MgdW5pY29kZS1iaWRpIHVuaWNvZGUtcmFuZ2UgdW5pdHMtcGVyLWVtIHYtYWxwaGFiZXRpYyB2LWhhbmdpbmcgdi1pZGVvZ3JhcGhpYyB2LW1hdGhlbWF0aWNhbCB2ZWN0b3ItZWZmZWN0IHZlcnQtYWR2LXkgdmVydC1vcmlnaW4teCB2ZXJ0LW9yaWdpbi15IHdvcmQtc3BhY2luZyB3cml0aW5nLW1vZGUgeG1sbnM6eGxpbmsgeC1oZWlnaHQiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj0NCmEucmVwbGFjZSh0Zix1Zik7SVtiXT1uZXcgUShiLDEsITEsYSxudWxsLCExLCExKX0pOyJ4bGluazphY3R1YXRlIHhsaW5rOmFyY3JvbGUgeGxpbms6cm9sZSB4bGluazpzaG93IHhsaW5rOnRpdGxlIHhsaW5rOnR5cGUiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UodGYsdWYpO0lbYl09bmV3IFEoYiwxLCExLGEsImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCExLCExKX0pO1sieG1sOmJhc2UiLCJ4bWw6bGFuZyIsInhtbDpzcGFjZSJdLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKHRmLHVmKTtJW2JdPW5ldyBRKGIsMSwhMSxhLCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLCExLCExKX0pO1sidGFiSW5kZXgiLCJjcm9zc09yaWdpbiJdLmZvckVhY2goZnVuY3Rpb24oYSl7SVthXT1uZXcgUShhLDEsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7SS54bGlua0hyZWY9bmV3IFEoInhsaW5rSHJlZiIsDQoxLCExLCJ4bGluazpocmVmIiwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsITAsITEpO1sic3JjIiwiaHJlZiIsImFjdGlvbiIsImZvcm1BY3Rpb24iXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0lbYV09bmV3IFEoYSwxLCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCEwLCEwKX0pO3ZhciBCPWhhLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELmFzc2lnbixmYj1oYS5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCxlYz02MDEwMyxVYT02MDEwNix3YT02MDEwNyxIZD02MDEwOCxMYj02MDExNCxKZD02MDEwOSxJZD02MDExMCxEYz02MDExMixNYj02MDExMyxDYz02MDEyMCxFYz02MDExNSxMZD02MDExNixLZD02MDEyMSx0ZT02MDEyOCxlaT02MDEyOSxvZj02MDEzMCxwZj02MDEzMTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvcil7dmFyIEg9U3ltYm9sLmZvcjtlYz0NCkgoInJlYWN0LmVsZW1lbnQiKTtVYT1IKCJyZWFjdC5wb3J0YWwiKTt3YT1IKCJyZWFjdC5mcmFnbWVudCIpO0hkPUgoInJlYWN0LnN0cmljdF9tb2RlIik7TGI9SCgicmVhY3QucHJvZmlsZXIiKTtKZD1IKCJyZWFjdC5wcm92aWRlciIpO0lkPUgoInJlYWN0LmNvbnRleHQiKTtEYz1IKCJyZWFjdC5mb3J3YXJkX3JlZiIpO01iPUgoInJlYWN0LnN1c3BlbnNlIik7Q2M9SCgicmVhY3Quc3VzcGVuc2VfbGlzdCIpO0VjPUgoInJlYWN0Lm1lbW8iKTtMZD1IKCJyZWFjdC5sYXp5Iik7S2Q9SCgicmVhY3QuYmxvY2siKTtIKCJyZWFjdC5zY29wZSIpO3RlPUgoInJlYWN0Lm9wYXF1ZS5pZCIpO2VpPUgoInJlYWN0LmRlYnVnX3RyYWNlX21vZGUiKTtvZj1IKCJyZWFjdC5vZmZzY3JlZW4iKTtwZj1IKCJyZWFjdC5sZWdhY3lfaGlkZGVuIil9dmFyIENmPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3IsRmQsR2Q9ITEsQWQsS2g9ZnVuY3Rpb24oYSl7cmV0dXJuInVuZGVmaW5lZCIhPT0NCnR5cGVvZiBNU0FwcCYmTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24\/ZnVuY3Rpb24oYixjLGQsZSl7TVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24oKXtyZXR1cm4gYShiLGMsZCxlKX0pfTphfShmdW5jdGlvbihhLGIpe2lmKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIhPT1hLm5hbWVzcGFjZVVSSXx8ImlubmVySFRNTCJpbiBhKWEuaW5uZXJIVE1MPWI7ZWxzZXtBZD1BZHx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7QWQuaW5uZXJIVE1MPSI8c3ZnPiIrYi52YWx1ZU9mKCkudG9TdHJpbmcoKSsiPC9zdmc+Ijtmb3IoYj1BZC5maXJzdENoaWxkO2EuZmlyc3RDaGlsZDspYS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpO2Zvcig7Yi5maXJzdENoaWxkOylhLmFwcGVuZENoaWxkKGIuZmlyc3RDaGlsZCl9fSkscWM9ZnVuY3Rpb24oYSxiKXtpZihiKXt2YXIgYz1hLmZpcnN0Q2hpbGQ7aWYoYyYmYz09PWEubGFzdENoaWxkJiYzPT09Yy5ub2RlVHlwZSl7Yy5ub2RlVmFsdWU9DQpiO3JldHVybn19YS50ZXh0Q29udGVudD1ifSxOYj17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsYm9yZGVySW1hZ2VPdXRzZXQ6ITAsYm9yZGVySW1hZ2VTbGljZTohMCxib3JkZXJJbWFnZVdpZHRoOiEwLGJveEZsZXg6ITAsYm94RmxleEdyb3VwOiEwLGJveE9yZGluYWxHcm91cDohMCxjb2x1bW5Db3VudDohMCxjb2x1bW5zOiEwLGZsZXg6ITAsZmxleEdyb3c6ITAsZmxleFBvc2l0aXZlOiEwLGZsZXhTaHJpbms6ITAsZmxleE5lZ2F0aXZlOiEwLGZsZXhPcmRlcjohMCxncmlkQXJlYTohMCxncmlkUm93OiEwLGdyaWRSb3dFbmQ6ITAsZ3JpZFJvd1NwYW46ITAsZ3JpZFJvd1N0YXJ0OiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3BhbjohMCxncmlkQ29sdW1uU3RhcnQ6ITAsZm9udFdlaWdodDohMCxsaW5lQ2xhbXA6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsdGFiU2l6ZTohMCx3aWRvd3M6ITAsekluZGV4OiEwLA0Kem9vbTohMCxmaWxsT3BhY2l0eTohMCxmbG9vZE9wYWNpdHk6ITAsc3RvcE9wYWNpdHk6ITAsc3Ryb2tlRGFzaGFycmF5OiEwLHN0cm9rZURhc2hvZmZzZXQ6ITAsc3Ryb2tlTWl0ZXJsaW1pdDohMCxzdHJva2VPcGFjaXR5OiEwLHN0cm9rZVdpZHRoOiEwfSxhaz1bIldlYmtpdCIsIm1zIiwiTW96IiwiTyJdO09iamVjdC5rZXlzKE5iKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2FrLmZvckVhY2goZnVuY3Rpb24oYil7Yj1iK2EuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYS5zdWJzdHJpbmcoMSk7TmJbYl09TmJbYV19KX0pO3ZhciByaT1CKHttZW51aXRlbTohMH0se2FyZWE6ITAsYmFzZTohMCxicjohMCxjb2w6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH0pLFZkPW51bGwsamI9bnVsbCxrYj1udWxsLGxlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEoYil9LGVnPWZ1bmN0aW9uKGEsDQpiLGMsZCxlKXtyZXR1cm4gYShiLGMsZCxlKX0sWGQ9ZnVuY3Rpb24oKXt9LFJmPWxlLFhhPSExLFlkPSExLHBlPSExO2lmKG9hKXRyeXt2YXIgeGM9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KHhjLCJwYXNzaXZlIix7Z2V0OmZ1bmN0aW9uKCl7cGU9ITB9fSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLHhjLHhjKTt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGVzdCIseGMseGMpfWNhdGNoKGEpe3BlPSExfXZhciB1aT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsayl7dmFyIGw9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDMpO3RyeXtiLmFwcGx5KGMsbCl9Y2F0Y2goRGEpe3RoaXMub25FcnJvcihEYSl9fSxRYj0hMSxJYz1udWxsLEpjPSExLFpkPW51bGwsdmk9e29uRXJyb3I6ZnVuY3Rpb24oYSl7UWI9ITA7SWM9YX19LGNhPWhhLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlNjaGVkdWxlciwNCmJrPWNhLnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrLEJkPWNhLnVuc3RhYmxlX25vdyxaZj1jYS51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrLGNrPWNhLnVuc3RhYmxlX3Nob3VsZFlpZWxkLGhpPWNhLnVuc3RhYmxlX3JlcXVlc3RQYWludCxhZT1jYS51bnN0YWJsZV9ydW5XaXRoUHJpb3JpdHksZGs9Y2EudW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWwsZWs9Y2EudW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHksaWk9Y2EudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHksJGY9Y2EudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksZms9Y2EudW5zdGFibGVfTG93UHJpb3JpdHksZ2s9Y2EudW5zdGFibGVfSWRsZVByaW9yaXR5LGNlPSExLGlhPVtdLHlhPW51bGwsemE9bnVsbCxBYT1udWxsLFJiPW5ldyBNYXAsU2I9bmV3IE1hcCxWYj1bXSxmZz0ibW91c2Vkb3duIG1vdXNldXAgdG91Y2hjYW5jZWwgdG91Y2hlbmQgdG91Y2hzdGFydCBhdXhjbGljayBkYmxjbGljayBwb2ludGVyY2FuY2VsIHBvaW50ZXJkb3duIHBvaW50ZXJ1cCBkcmFnZW5kIGRyYWdzdGFydCBkcm9wIGNvbXBvc2l0aW9uZW5kIGNvbXBvc2l0aW9uc3RhcnQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBpbnB1dCB0ZXh0SW5wdXQgY29weSBjdXQgcGFzdGUgY2xpY2sgY2hhbmdlIGNvbnRleHRtZW51IHJlc2V0IHN1Ym1pdCIuc3BsaXQoIiAiKSwNCmxiPXthbmltYXRpb25lbmQ6TGMoIkFuaW1hdGlvbiIsIkFuaW1hdGlvbkVuZCIpLGFuaW1hdGlvbml0ZXJhdGlvbjpMYygiQW5pbWF0aW9uIiwiQW5pbWF0aW9uSXRlcmF0aW9uIiksYW5pbWF0aW9uc3RhcnQ6TGMoIkFuaW1hdGlvbiIsIkFuaW1hdGlvblN0YXJ0IiksdHJhbnNpdGlvbmVuZDpMYygiVHJhbnNpdGlvbiIsIlRyYW5zaXRpb25FbmQiKX0sZGU9e30sYmc9e307b2EmJihiZz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZSwiQW5pbWF0aW9uRXZlbnQiaW4gd2luZG93fHwoZGVsZXRlIGxiLmFuaW1hdGlvbmVuZC5hbmltYXRpb24sZGVsZXRlIGxiLmFuaW1hdGlvbml0ZXJhdGlvbi5hbmltYXRpb24sZGVsZXRlIGxiLmFuaW1hdGlvbnN0YXJ0LmFuaW1hdGlvbiksIlRyYW5zaXRpb25FdmVudCJpbiB3aW5kb3d8fGRlbGV0ZSBsYi50cmFuc2l0aW9uZW5kLnRyYW5zaXRpb24pO3ZhciBHZz1NYygiYW5pbWF0aW9uZW5kIiksSGc9TWMoImFuaW1hdGlvbml0ZXJhdGlvbiIpLA0KSWc9TWMoImFuaW1hdGlvbnN0YXJ0IiksSmc9TWMoInRyYW5zaXRpb25lbmQiKSxjZz1uZXcgTWFwLGZlPW5ldyBNYXAsaGs9WyJhYm9ydCIsImFib3J0IixHZywiYW5pbWF0aW9uRW5kIixIZywiYW5pbWF0aW9uSXRlcmF0aW9uIixJZywiYW5pbWF0aW9uU3RhcnQiLCJjYW5wbGF5IiwiY2FuUGxheSIsImNhbnBsYXl0aHJvdWdoIiwiY2FuUGxheVRocm91Z2giLCJkdXJhdGlvbmNoYW5nZSIsImR1cmF0aW9uQ2hhbmdlIiwiZW1wdGllZCIsImVtcHRpZWQiLCJlbmNyeXB0ZWQiLCJlbmNyeXB0ZWQiLCJlbmRlZCIsImVuZGVkIiwiZXJyb3IiLCJlcnJvciIsImdvdHBvaW50ZXJjYXB0dXJlIiwiZ290UG9pbnRlckNhcHR1cmUiLCJsb2FkIiwibG9hZCIsImxvYWRlZGRhdGEiLCJsb2FkZWREYXRhIiwibG9hZGVkbWV0YWRhdGEiLCJsb2FkZWRNZXRhZGF0YSIsImxvYWRzdGFydCIsImxvYWRTdGFydCIsImxvc3Rwb2ludGVyY2FwdHVyZSIsImxvc3RQb2ludGVyQ2FwdHVyZSIsInBsYXlpbmciLA0KInBsYXlpbmciLCJwcm9ncmVzcyIsInByb2dyZXNzIiwic2Vla2luZyIsInNlZWtpbmciLCJzdGFsbGVkIiwic3RhbGxlZCIsInN1c3BlbmQiLCJzdXNwZW5kIiwidGltZXVwZGF0ZSIsInRpbWVVcGRhdGUiLEpnLCJ0cmFuc2l0aW9uRW5kIiwid2FpdGluZyIsIndhaXRpbmciXTtCZCgpO3ZhciB3PTgsQmE9TWF0aC5jbHozMj9NYXRoLmNsejMyOkdpLEhpPU1hdGgubG9nLElpPU1hdGguTE4yLE1pPWlpLExpPWFlLFBjPSEwLENhPW51bGwsaGU9bnVsbCxRYz1udWxsLEhiPXtldmVudFBoYXNlOjAsYnViYmxlczowLGNhbmNlbGFibGU6MCx0aW1lU3RhbXA6ZnVuY3Rpb24oYSl7cmV0dXJuIGEudGltZVN0YW1wfHxEYXRlLm5vdygpfSxkZWZhdWx0UHJldmVudGVkOjAsaXNUcnVzdGVkOjB9LGtlPVYoSGIpLHljPUIoe30sSGIse3ZpZXc6MCxkZXRhaWw6MH0pLGdqPVYoeWMpLHZmLHdmLHpjLENkPUIoe30seWMse3NjcmVlblg6MCxzY3JlZW5ZOjAsY2xpZW50WDowLGNsaWVudFk6MCxwYWdlWDowLA0KcGFnZVk6MCxjdHJsS2V5OjAsc2hpZnRLZXk6MCxhbHRLZXk6MCxtZXRhS2V5OjAsZ2V0TW9kaWZpZXJTdGF0ZTppZSxidXR0b246MCxidXR0b25zOjAscmVsYXRlZFRhcmdldDpmdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YS5yZWxhdGVkVGFyZ2V0P2EuZnJvbUVsZW1lbnQ9PT1hLnNyY0VsZW1lbnQ\/YS50b0VsZW1lbnQ6YS5mcm9tRWxlbWVudDphLnJlbGF0ZWRUYXJnZXR9LG1vdmVtZW50WDpmdW5jdGlvbihhKXtpZigibW92ZW1lbnRYImluIGEpcmV0dXJuIGEubW92ZW1lbnRYO2EhPT16YyYmKHpjJiYibW91c2Vtb3ZlIj09PWEudHlwZT8odmY9YS5zY3JlZW5YLXpjLnNjcmVlblgsd2Y9YS5zY3JlZW5ZLXpjLnNjcmVlblkpOndmPXZmPTAsemM9YSk7cmV0dXJuIHZmfSxtb3ZlbWVudFk6ZnVuY3Rpb24oYSl7cmV0dXJuIm1vdmVtZW50WSJpbiBhP2EubW92ZW1lbnRZOndmfX0pLEZnPVYoQ2QpLGlrPUIoe30sQ2Qse2RhdGFUcmFuc2ZlcjowfSksY2o9Vihpayksams9Qih7fSwNCnljLHtyZWxhdGVkVGFyZ2V0OjB9KSxxZT1WKGprKSxraz1CKHt9LEhiLHthbmltYXRpb25OYW1lOjAsZWxhcHNlZFRpbWU6MCxwc2V1ZG9FbGVtZW50OjB9KSxlaj1WKGtrKSxsaz1CKHt9LEhiLHtjbGlwYm9hcmREYXRhOmZ1bmN0aW9uKGEpe3JldHVybiJjbGlwYm9hcmREYXRhImluIGE\/YS5jbGlwYm9hcmREYXRhOndpbmRvdy5jbGlwYm9hcmREYXRhfX0pLGlqPVYobGspLG1rPUIoe30sSGIse2RhdGE6MH0pLE5nPVYobWspLGxqPU5nLG5rPXtFc2M6IkVzY2FwZSIsU3BhY2ViYXI6IiAiLExlZnQ6IkFycm93TGVmdCIsVXA6IkFycm93VXAiLFJpZ2h0OiJBcnJvd1JpZ2h0IixEb3duOiJBcnJvd0Rvd24iLERlbDoiRGVsZXRlIixXaW46Ik9TIixNZW51OiJDb250ZXh0TWVudSIsQXBwczoiQ29udGV4dE1lbnUiLFNjcm9sbDoiU2Nyb2xsTG9jayIsTW96UHJpbnRhYmxlS2V5OiJVbmlkZW50aWZpZWQifSxvaz17ODoiQmFja3NwYWNlIiw5OiJUYWIiLDEyOiJDbGVhciIsMTM6IkVudGVyIiwNCjE2OiJTaGlmdCIsMTc6IkNvbnRyb2wiLDE4OiJBbHQiLDE5OiJQYXVzZSIsMjA6IkNhcHNMb2NrIiwyNzoiRXNjYXBlIiwzMjoiICIsMzM6IlBhZ2VVcCIsMzQ6IlBhZ2VEb3duIiwzNToiRW5kIiwzNjoiSG9tZSIsMzc6IkFycm93TGVmdCIsMzg6IkFycm93VXAiLDM5OiJBcnJvd1JpZ2h0Iiw0MDoiQXJyb3dEb3duIiw0NToiSW5zZXJ0Iiw0NjoiRGVsZXRlIiwxMTI6IkYxIiwxMTM6IkYyIiwxMTQ6IkYzIiwxMTU6IkY0IiwxMTY6IkY1IiwxMTc6IkY2IiwxMTg6IkY3IiwxMTk6IkY4IiwxMjA6IkY5IiwxMjE6IkYxMCIsMTIyOiJGMTEiLDEyMzoiRjEyIiwxNDQ6Ik51bUxvY2siLDE0NToiU2Nyb2xsTG9jayIsMjI0OiJNZXRhIn0sT2k9e0FsdDoiYWx0S2V5IixDb250cm9sOiJjdHJsS2V5IixNZXRhOiJtZXRhS2V5IixTaGlmdDoic2hpZnRLZXkifSxwaz1CKHt9LHljLHtrZXk6ZnVuY3Rpb24oYSl7aWYoYS5rZXkpe3ZhciBiPW5rW2Eua2V5XXx8YS5rZXk7aWYoIlVuaWRlbnRpZmllZCIhPT0NCmIpcmV0dXJuIGJ9cmV0dXJuImtleXByZXNzIj09PWEudHlwZT8oYT1SYyhhKSwxMz09PWE\/IkVudGVyIjpTdHJpbmcuZnJvbUNoYXJDb2RlKGEpKToia2V5ZG93biI9PT1hLnR5cGV8fCJrZXl1cCI9PT1hLnR5cGU\/b2tbYS5rZXlDb2RlXXx8IlVuaWRlbnRpZmllZCI6IiJ9LGNvZGU6MCxsb2NhdGlvbjowLGN0cmxLZXk6MCxzaGlmdEtleTowLGFsdEtleTowLG1ldGFLZXk6MCxyZXBlYXQ6MCxsb2NhbGU6MCxnZXRNb2RpZmllclN0YXRlOmllLGNoYXJDb2RlOmZ1bmN0aW9uKGEpe3JldHVybiJrZXlwcmVzcyI9PT1hLnR5cGU\/UmMoYSk6MH0sa2V5Q29kZTpmdW5jdGlvbihhKXtyZXR1cm4ia2V5ZG93biI9PT1hLnR5cGV8fCJrZXl1cCI9PT1hLnR5cGU\/YS5rZXlDb2RlOjB9LHdoaWNoOmZ1bmN0aW9uKGEpe3JldHVybiJrZXlwcmVzcyI9PT1hLnR5cGU\/UmMoYSk6ImtleWRvd24iPT09YS50eXBlfHwia2V5dXAiPT09YS50eXBlP2Eua2V5Q29kZTowfX0pLGJqPVYocGspLHFrPUIoe30sDQpDZCx7cG9pbnRlcklkOjAsd2lkdGg6MCxoZWlnaHQ6MCxwcmVzc3VyZTowLHRhbmdlbnRpYWxQcmVzc3VyZTowLHRpbHRYOjAsdGlsdFk6MCx0d2lzdDowLHBvaW50ZXJUeXBlOjAsaXNQcmltYXJ5OjB9KSxLZz1WKHFrKSxyaz1CKHt9LHljLHt0b3VjaGVzOjAsdGFyZ2V0VG91Y2hlczowLGNoYW5nZWRUb3VjaGVzOjAsYWx0S2V5OjAsbWV0YUtleTowLGN0cmxLZXk6MCxzaGlmdEtleTowLGdldE1vZGlmaWVyU3RhdGU6aWV9KSxkaj1WKHJrKSxzaz1CKHt9LEhiLHtwcm9wZXJ0eU5hbWU6MCxlbGFwc2VkVGltZTowLHBzZXVkb0VsZW1lbnQ6MH0pLGZqPVYoc2spLHRrPUIoe30sQ2Qse2RlbHRhWDpmdW5jdGlvbihhKXtyZXR1cm4iZGVsdGFYImluIGE\/YS5kZWx0YVg6IndoZWVsRGVsdGFYImluIGE\/LWEud2hlZWxEZWx0YVg6MH0sZGVsdGFZOmZ1bmN0aW9uKGEpe3JldHVybiJkZWx0YVkiaW4gYT9hLmRlbHRhWToid2hlZWxEZWx0YVkiaW4gYT8tYS53aGVlbERlbHRhWToid2hlZWxEZWx0YSJpbg0KYT8tYS53aGVlbERlbHRhOjB9LGRlbHRhWjowLGRlbHRhTW9kZTowfSksaGo9Vih0ayksUGk9WzksMTMsMjcsMzJdLGplPW9hJiYiQ29tcG9zaXRpb25FdmVudCJpbiB3aW5kb3csQWM9bnVsbDtvYSYmImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCYmKEFjPWRvY3VtZW50LmRvY3VtZW50TW9kZSk7dmFyIGtqPW9hJiYiVGV4dEV2ZW50ImluIHdpbmRvdyYmIUFjLG5nPW9hJiYoIWplfHxBYyYmODxBYyYmMTE+PUFjKSxtZz1TdHJpbmcuZnJvbUNoYXJDb2RlKDMyKSxsZz0hMSxvYj0hMSxTaT17Y29sb3I6ITAsZGF0ZTohMCxkYXRldGltZTohMCwiZGF0ZXRpbWUtbG9jYWwiOiEwLGVtYWlsOiEwLG1vbnRoOiEwLG51bWJlcjohMCxwYXNzd29yZDohMCxyYW5nZTohMCxzZWFyY2g6ITAsdGVsOiEwLHRleHQ6ITAsdGltZTohMCx1cmw6ITAsd2VlazohMH0sWGI9bnVsbCxZYj1udWxsLE1nPSExO29hJiYoTWc9VGkoImlucHV0IikmJighZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHw5PGRvY3VtZW50LmRvY3VtZW50TW9kZSkpOw0KdmFyIFg9ImZ1bmN0aW9uIj09PXR5cGVvZiBPYmplY3QuaXM\/T2JqZWN0LmlzOiRpLGFqPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksamo9b2EmJiJkb2N1bWVudE1vZGUiaW4gZG9jdW1lbnQmJjExPj1kb2N1bWVudC5kb2N1bWVudE1vZGUscWI9bnVsbCxvZT1udWxsLCRiPW51bGwsbmU9ITE7ZWUoImNhbmNlbCBjYW5jZWwgY2xpY2sgY2xpY2sgY2xvc2UgY2xvc2UgY29udGV4dG1lbnUgY29udGV4dE1lbnUgY29weSBjb3B5IGN1dCBjdXQgYXV4Y2xpY2sgYXV4Q2xpY2sgZGJsY2xpY2sgZG91YmxlQ2xpY2sgZHJhZ2VuZCBkcmFnRW5kIGRyYWdzdGFydCBkcmFnU3RhcnQgZHJvcCBkcm9wIGZvY3VzaW4gZm9jdXMgZm9jdXNvdXQgYmx1ciBpbnB1dCBpbnB1dCBpbnZhbGlkIGludmFsaWQga2V5ZG93biBrZXlEb3duIGtleXByZXNzIGtleVByZXNzIGtleXVwIGtleVVwIG1vdXNlZG93biBtb3VzZURvd24gbW91c2V1cCBtb3VzZVVwIHBhc3RlIHBhc3RlIHBhdXNlIHBhdXNlIHBsYXkgcGxheSBwb2ludGVyY2FuY2VsIHBvaW50ZXJDYW5jZWwgcG9pbnRlcmRvd24gcG9pbnRlckRvd24gcG9pbnRlcnVwIHBvaW50ZXJVcCByYXRlY2hhbmdlIHJhdGVDaGFuZ2UgcmVzZXQgcmVzZXQgc2Vla2VkIHNlZWtlZCBzdWJtaXQgc3VibWl0IHRvdWNoY2FuY2VsIHRvdWNoQ2FuY2VsIHRvdWNoZW5kIHRvdWNoRW5kIHRvdWNoc3RhcnQgdG91Y2hTdGFydCB2b2x1bWVjaGFuZ2Ugdm9sdW1lQ2hhbmdlIi5zcGxpdCgiICIpLA0KMCk7ZWUoImRyYWcgZHJhZyBkcmFnZW50ZXIgZHJhZ0VudGVyIGRyYWdleGl0IGRyYWdFeGl0IGRyYWdsZWF2ZSBkcmFnTGVhdmUgZHJhZ292ZXIgZHJhZ092ZXIgbW91c2Vtb3ZlIG1vdXNlTW92ZSBtb3VzZW91dCBtb3VzZU91dCBtb3VzZW92ZXIgbW91c2VPdmVyIHBvaW50ZXJtb3ZlIHBvaW50ZXJNb3ZlIHBvaW50ZXJvdXQgcG9pbnRlck91dCBwb2ludGVyb3ZlciBwb2ludGVyT3ZlciBzY3JvbGwgc2Nyb2xsIHRvZ2dsZSB0b2dnbGUgdG91Y2htb3ZlIHRvdWNoTW92ZSB3aGVlbCB3aGVlbCIuc3BsaXQoIiAiKSwxKTtlZShoaywyKTsoZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylmZS5zZXQoYVtjXSxiKX0pKCJjaGFuZ2Ugc2VsZWN0aW9uY2hhbmdlIHRleHRJbnB1dCBjb21wb3NpdGlvbnN0YXJ0IGNvbXBvc2l0aW9uZW5kIGNvbXBvc2l0aW9udXBkYXRlIi5zcGxpdCgiICIpLDApO2diKCJvbk1vdXNlRW50ZXIiLFsibW91c2VvdXQiLCJtb3VzZW92ZXIiXSk7DQpnYigib25Nb3VzZUxlYXZlIixbIm1vdXNlb3V0IiwibW91c2VvdmVyIl0pO2diKCJvblBvaW50ZXJFbnRlciIsWyJwb2ludGVyb3V0IiwicG9pbnRlcm92ZXIiXSk7Z2IoIm9uUG9pbnRlckxlYXZlIixbInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciJdKTtUYSgib25DaGFuZ2UiLCJjaGFuZ2UgY2xpY2sgZm9jdXNpbiBmb2N1c291dCBpbnB1dCBrZXlkb3duIGtleXVwIHNlbGVjdGlvbmNoYW5nZSIuc3BsaXQoIiAiKSk7VGEoIm9uU2VsZWN0IiwiZm9jdXNvdXQgY29udGV4dG1lbnUgZHJhZ2VuZCBmb2N1c2luIGtleWRvd24ga2V5dXAgbW91c2Vkb3duIG1vdXNldXAgc2VsZWN0aW9uY2hhbmdlIi5zcGxpdCgiICIpKTtUYSgib25CZWZvcmVJbnB1dCIsWyJjb21wb3NpdGlvbmVuZCIsImtleXByZXNzIiwidGV4dElucHV0IiwicGFzdGUiXSk7VGEoIm9uQ29tcG9zaXRpb25FbmQiLCJjb21wb3NpdGlvbmVuZCBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93biIuc3BsaXQoIiAiKSk7DQpUYSgib25Db21wb3NpdGlvblN0YXJ0IiwiY29tcG9zaXRpb25zdGFydCBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93biIuc3BsaXQoIiAiKSk7VGEoIm9uQ29tcG9zaXRpb25VcGRhdGUiLCJjb21wb3NpdGlvbnVwZGF0ZSBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93biIuc3BsaXQoIiAiKSk7dmFyIHBjPSJhYm9ydCBjYW5wbGF5IGNhbnBsYXl0aHJvdWdoIGR1cmF0aW9uY2hhbmdlIGVtcHRpZWQgZW5jcnlwdGVkIGVuZGVkIGVycm9yIGxvYWRlZGRhdGEgbG9hZGVkbWV0YWRhdGEgbG9hZHN0YXJ0IHBhdXNlIHBsYXkgcGxheWluZyBwcm9ncmVzcyByYXRlY2hhbmdlIHNlZWtlZCBzZWVraW5nIHN0YWxsZWQgc3VzcGVuZCB0aW1ldXBkYXRlIHZvbHVtZWNoYW5nZSB3YWl0aW5nIi5zcGxpdCgiICIpLERnPW5ldyBTZXQoImNhbmNlbCBjbG9zZSBpbnZhbGlkIGxvYWQgc2Nyb2xsIHRvZ2dsZSIuc3BsaXQoIiAiKS5jb25jYXQocGMpKSwNCkNnPSJfcmVhY3RMaXN0ZW5pbmciK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpLGtmPW51bGwsbGY9bnVsbCxaaD0iZnVuY3Rpb24iPT09dHlwZW9mIHNldFRpbWVvdXQ\/c2V0VGltZW91dDp2b2lkIDAsSmo9ImZ1bmN0aW9uIj09PXR5cGVvZiBjbGVhclRpbWVvdXQ\/Y2xlYXJUaW1lb3V0OnZvaWQgMCx4Zj0wLERkPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpLEZhPSJfX3JlYWN0RmliZXIkIitEZCxXYz0iX19yZWFjdFByb3BzJCIrRGQscmI9Il9fcmVhY3RDb250YWluZXIkIitEZCxRZz0iX19yZWFjdEV2ZW50cyQiK0RkLHVlPVtdLHViPS0xLEhhPXt9LEQ9R2EoSGEpLEo9R2EoITEpLFlhPUhhLFplPW51bGwsZGI9bnVsbCxvaj1hZSx2ZT1aZix3ZT1iayxuaj1kayxZYz1layxVZz1paSxWZz0kZixXZz1mayxYZz1nayxnZj17fSxOaj1jayxSaj12b2lkIDAhPT1oaT9oaTpmdW5jdGlvbigpe30scGE9bnVsbCxaYz1udWxsLHhlPSExLGppPUJkKCksDQpQPTFFND5qaT9CZDpmdW5jdGlvbigpe3JldHVybiBCZCgpLWppfSxGaj1mYi5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZyxiZD1HYShudWxsKSxhZD1udWxsLHhiPW51bGwsJGM9bnVsbCxLYT0hMSxnaD0obmV3IGhhLkNvbXBvbmVudCkucmVmcyxkZD17aXNNb3VudGVkOmZ1bmN0aW9uKGEpe3JldHVybihhPWEuX3JlYWN0SW50ZXJuYWxzKT9WYShhKT09PWE6ITF9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbihhLGIsYyl7YT1hLl9yZWFjdEludGVybmFsczt2YXIgZD1XKCksZT1PYShhKSxmPUlhKGQsZSk7Zi5wYXlsb2FkPWI7dm9pZCAwIT09YyYmbnVsbCE9PWMmJihmLmNhbGxiYWNrPWMpO0phKGEsZik7UGEoYSxlLGQpfSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGEsYixjKXthPWEuX3JlYWN0SW50ZXJuYWxzO3ZhciBkPVcoKSxlPU9hKGEpLGY9SWEoZCxlKTtmLnRhZz0xO2YucGF5bG9hZD1iO3ZvaWQgMCE9PWMmJm51bGwhPT1jJiYoZi5jYWxsYmFjaz1jKTtKYShhLGYpOw0KUGEoYSxlLGQpfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oYSxiKXthPWEuX3JlYWN0SW50ZXJuYWxzO3ZhciBjPVcoKSxkPU9hKGEpLGU9SWEoYyxkKTtlLnRhZz0yO3ZvaWQgMCE9PWImJm51bGwhPT1iJiYoZS5jYWxsYmFjaz1iKTtKYShhLGUpO1BhKGEsZCxjKX19LGdkPUFycmF5LmlzQXJyYXksb2Q9aGgoITApLHdoPWhoKCExKSxmYz17fSxrYT1HYShmYyksaGM9R2EoZmMpLGdjPUdhKGZjKSxFPUdhKDApLHJhPW51bGwsTmE9bnVsbCxsYT0hMSxCYj1bXSxqYz1mYi5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLGFhPWZiLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLGljPTAseT1udWxsLE49bnVsbCxLPW51bGwsa2Q9ITEsa2M9ITEsamQ9e3JlYWRDb250ZXh0OlksdXNlQ2FsbGJhY2s6VCx1c2VDb250ZXh0OlQsdXNlRWZmZWN0OlQsdXNlSW1wZXJhdGl2ZUhhbmRsZTpULHVzZUxheW91dEVmZmVjdDpULHVzZU1lbW86VCx1c2VSZWR1Y2VyOlQsdXNlUmVmOlQsdXNlU3RhdGU6VCwNCnVzZURlYnVnVmFsdWU6VCx1c2VEZWZlcnJlZFZhbHVlOlQsdXNlVHJhbnNpdGlvbjpULHVzZU11dGFibGVTb3VyY2U6VCx1c2VPcGFxdWVJZGVudGlmaWVyOlQsdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSxwaj17cmVhZENvbnRleHQ6WSx1c2VDYWxsYmFjazpmdW5jdGlvbihhLGIpe2FiKCkubWVtb2l6ZWRTdGF0ZT1bYSx2b2lkIDA9PT1iP251bGw6Yl07cmV0dXJuIGF9LHVzZUNvbnRleHQ6WSx1c2VFZmZlY3Q6cWgsdXNlSW1wZXJhdGl2ZUhhbmRsZTpmdW5jdGlvbihhLGIsYyl7Yz1udWxsIT09YyYmdm9pZCAwIT09Yz9jLmNvbmNhdChbYV0pOm51bGw7cmV0dXJuIE1lKDQsMixzaC5iaW5kKG51bGwsYixhKSxjKX0sdXNlTGF5b3V0RWZmZWN0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIE1lKDQsMixhLGIpfSx1c2VNZW1vOmZ1bmN0aW9uKGEsYil7dmFyIGM9YWIoKTtiPXZvaWQgMD09PWI\/bnVsbDpiO2E9YSgpO2MubWVtb2l6ZWRTdGF0ZT1bYSxiXTtyZXR1cm4gYX0sdXNlUmVkdWNlcjpmdW5jdGlvbihhLA0KYixjKXt2YXIgZD1hYigpO2I9dm9pZCAwIT09Yz9jKGIpOmI7ZC5tZW1vaXplZFN0YXRlPWQuYmFzZVN0YXRlPWI7YT1kLnF1ZXVlPXtwZW5kaW5nOm51bGwsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOmEsbGFzdFJlbmRlcmVkU3RhdGU6Yn07YT1hLmRpc3BhdGNoPUxlLmJpbmQobnVsbCx5LGEpO3JldHVybltkLm1lbW9pemVkU3RhdGUsYV19LHVzZVJlZjpwaCx1c2VTdGF0ZTpuYyx1c2VEZWJ1Z1ZhbHVlOk9lLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGI9bmMoYSksYz1iWzBdLGQ9YlsxXTtxaChmdW5jdGlvbigpe3ZhciBiPWFhLnRyYW5zaXRpb247YWEudHJhbnNpdGlvbj0xO3RyeXtkKGEpfWZpbmFsbHl7YWEudHJhbnNpdGlvbj1ifX0sW2FdKTtyZXR1cm4gY30sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBhPW5jKCExKSxiPWFbMF07YT1zai5iaW5kKG51bGwsYVsxXSk7cGgoYSk7cmV0dXJuW2EsYl19LHVzZU11dGFibGVTb3VyY2U6ZnVuY3Rpb24oYSwNCmIsYyl7dmFyIGQ9YWIoKTtkLm1lbW9pemVkU3RhdGU9e3JlZnM6e2dldFNuYXBzaG90OmIsc2V0U25hcHNob3Q6bnVsbH0sc291cmNlOmEsc3Vic2NyaWJlOmN9O3JldHVybiBuaChkLGEsYixjKX0sdXNlT3BhcXVlSWRlbnRpZmllcjpmdW5jdGlvbigpe2lmKGxhKXt2YXIgYT0hMSxiPW1qKGZ1bmN0aW9uKCl7YXx8KGE9ITAsYygicjoiKyh4ZisrKS50b1N0cmluZygzNikpKTt0aHJvdyBFcnJvcihtKDM1NSkpO30pLGM9bmMoYilbMV07MD09PSh5Lm1vZGUmMikmJih5LmZsYWdzfD01MTYsbGQoNSxmdW5jdGlvbigpe2MoInI6IisoeGYrKykudG9TdHJpbmcoMzYpKX0sdm9pZCAwLG51bGwpKTtyZXR1cm4gYn1iPSJyOiIrKHhmKyspLnRvU3RyaW5nKDM2KTtuYyhiKTtyZXR1cm4gYn0sdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSxxaj17cmVhZENvbnRleHQ6WSx1c2VDYWxsYmFjazp1aCx1c2VDb250ZXh0OlksdXNlRWZmZWN0Om5kLHVzZUltcGVyYXRpdmVIYW5kbGU6dGgsdXNlTGF5b3V0RWZmZWN0OnJoLA0KdXNlTWVtbzp2aCx1c2VSZWR1Y2VyOmxjLHVzZVJlZjptZCx1c2VTdGF0ZTpmdW5jdGlvbihhKXtyZXR1cm4gbGMobWEpfSx1c2VEZWJ1Z1ZhbHVlOk9lLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGI9bGMobWEpLGM9YlswXSxkPWJbMV07bmQoZnVuY3Rpb24oKXt2YXIgYj1hYS50cmFuc2l0aW9uO2FhLnRyYW5zaXRpb249MTt0cnl7ZChhKX1maW5hbGx5e2FhLnRyYW5zaXRpb249Yn19LFthXSk7cmV0dXJuIGN9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1sYyhtYSlbMF07cmV0dXJuW21kKCkuY3VycmVudCxhXX0sdXNlTXV0YWJsZVNvdXJjZTpvaCx1c2VPcGFxdWVJZGVudGlmaWVyOmZ1bmN0aW9uKCl7cmV0dXJuIGxjKG1hKVswXX0sdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSxyaj17cmVhZENvbnRleHQ6WSx1c2VDYWxsYmFjazp1aCx1c2VDb250ZXh0OlksdXNlRWZmZWN0Om5kLHVzZUltcGVyYXRpdmVIYW5kbGU6dGgsdXNlTGF5b3V0RWZmZWN0OnJoLA0KdXNlTWVtbzp2aCx1c2VSZWR1Y2VyOm1jLHVzZVJlZjptZCx1c2VTdGF0ZTpmdW5jdGlvbihhKXtyZXR1cm4gbWMobWEpfSx1c2VEZWJ1Z1ZhbHVlOk9lLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGI9bWMobWEpLGM9YlswXSxkPWJbMV07bmQoZnVuY3Rpb24oKXt2YXIgYj1hYS50cmFuc2l0aW9uO2FhLnRyYW5zaXRpb249MTt0cnl7ZChhKX1maW5hbGx5e2FhLnRyYW5zaXRpb249Yn19LFthXSk7cmV0dXJuIGN9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1tYyhtYSlbMF07cmV0dXJuW21kKCkuY3VycmVudCxhXX0sdXNlTXV0YWJsZVNvdXJjZTpvaCx1c2VPcGFxdWVJZGVudGlmaWVyOmZ1bmN0aW9uKCl7cmV0dXJuIG1jKG1hKVswXX0sdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSx0aj1mYi5SZWFjdEN1cnJlbnRPd25lcixmYT0hMSxxZD17ZGVoeWRyYXRlZDpudWxsLHJldHJ5TGFuZTowfTt2YXIgd2o9ZnVuY3Rpb24oYSxiLGMsZCl7Zm9yKGM9DQpiLmNoaWxkO251bGwhPT1jOyl7aWYoNT09PWMudGFnfHw2PT09Yy50YWcpYS5hcHBlbmRDaGlsZChjLnN0YXRlTm9kZSk7ZWxzZSBpZig0IT09Yy50YWcmJm51bGwhPT1jLmNoaWxkKXtjLmNoaWxkLnJldHVybj1jO2M9Yy5jaGlsZDtjb250aW51ZX1pZihjPT09YilicmVhaztmb3IoO251bGw9PT1jLnNpYmxpbmc7KXtpZihudWxsPT09Yy5yZXR1cm58fGMucmV0dXJuPT09YilyZXR1cm47Yz1jLnJldHVybn1jLnNpYmxpbmcucmV0dXJuPWMucmV0dXJuO2M9Yy5zaWJsaW5nfX07dmFyIEpoPWZ1bmN0aW9uKGEpe307dmFyIHZqPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9YS5tZW1vaXplZFByb3BzO2lmKGYhPT1kKXthPWIuc3RhdGVOb2RlOyRhKGthLmN1cnJlbnQpO2U9bnVsbDtzd2l0Y2goYyl7Y2FzZSAiaW5wdXQiOmY9TWQoYSxmKTtkPU1kKGEsZCk7ZT1bXTticmVhaztjYXNlICJvcHRpb24iOmY9UGQoYSxmKTtkPVBkKGEsZCk7ZT1bXTticmVhaztjYXNlICJzZWxlY3QiOmY9DQpCKHt9LGYse3ZhbHVlOnZvaWQgMH0pO2Q9Qih7fSxkLHt2YWx1ZTp2b2lkIDB9KTtlPVtdO2JyZWFrO2Nhc2UgInRleHRhcmVhIjpmPVFkKGEsZik7ZD1RZChhLGQpO2U9W107YnJlYWs7ZGVmYXVsdDoiZnVuY3Rpb24iIT09dHlwZW9mIGYub25DbGljayYmImZ1bmN0aW9uIj09PXR5cGVvZiBkLm9uQ2xpY2smJihhLm9uY2xpY2s9VmMpfVNkKGMsZCk7dmFyIGc7Yz1udWxsO2ZvcihsIGluIGYpaWYoIWQuaGFzT3duUHJvcGVydHkobCkmJmYuaGFzT3duUHJvcGVydHkobCkmJm51bGwhPWZbbF0paWYoInN0eWxlIj09PWwpe3ZhciBoPWZbbF07Zm9yKGcgaW4gaCloLmhhc093blByb3BlcnR5KGcpJiYoY3x8KGM9e30pLGNbZ109IiIpfWVsc2UiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiIT09bCYmImNoaWxkcmVuIiE9PWwmJiJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmciIT09bCYmInN1cHByZXNzSHlkcmF0aW9uV2FybmluZyIhPT1sJiYiYXV0b0ZvY3VzIiE9PWwmJihJYi5oYXNPd25Qcm9wZXJ0eShsKT8NCmV8fChlPVtdKTooZT1lfHxbXSkucHVzaChsLG51bGwpKTtmb3IobCBpbiBkKXt2YXIgaz1kW2xdO2g9bnVsbCE9Zj9mW2xdOnZvaWQgMDtpZihkLmhhc093blByb3BlcnR5KGwpJiZrIT09aCYmKG51bGwhPWt8fG51bGwhPWgpKWlmKCJzdHlsZSI9PT1sKWlmKGgpe2ZvcihnIGluIGgpIWguaGFzT3duUHJvcGVydHkoZyl8fGsmJmsuaGFzT3duUHJvcGVydHkoZyl8fChjfHwoYz17fSksY1tnXT0iIik7Zm9yKGcgaW4gaylrLmhhc093blByb3BlcnR5KGcpJiZoW2ddIT09a1tnXSYmKGN8fChjPXt9KSxjW2ddPWtbZ10pfWVsc2UgY3x8KGV8fChlPVtdKSxlLnB1c2gobCxjKSksYz1rO2Vsc2UiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiPT09bD8oaz1rP2suX19odG1sOnZvaWQgMCxoPWg\/aC5fX2h0bWw6dm9pZCAwLG51bGwhPWsmJmghPT1rJiYoZT1lfHxbXSkucHVzaChsLGspKToiY2hpbGRyZW4iPT09bD8ic3RyaW5nIiE9PXR5cGVvZiBrJiYibnVtYmVyIiE9PXR5cGVvZiBrfHwoZT0NCmV8fFtdKS5wdXNoKGwsIiIrayk6InN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyIhPT1sJiYic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIiE9PWwmJihJYi5oYXNPd25Qcm9wZXJ0eShsKT8obnVsbCE9ayYmIm9uU2Nyb2xsIj09PWwmJnooInNjcm9sbCIsYSksZXx8aD09PWt8fChlPVtdKSk6Im9iamVjdCI9PT10eXBlb2YgayYmbnVsbCE9PWsmJmsuJCR0eXBlb2Y9PT10ZT9rLnRvU3RyaW5nKCk6KGU9ZXx8W10pLnB1c2gobCxrKSl9YyYmKGU9ZXx8W10pLnB1c2goInN0eWxlIixjKTt2YXIgbD1lO2lmKGIudXBkYXRlUXVldWU9bCliLmZsYWdzfD00fX07dmFyIHhqPWZ1bmN0aW9uKGEsYixjLGQpe2MhPT1kJiYoYi5mbGFnc3w9NCl9O3ZhciBLaj0iZnVuY3Rpb24iPT09dHlwZW9mIFdlYWtNYXA\/V2Vha01hcDpNYXAsQ2o9ImZ1bmN0aW9uIj09PXR5cGVvZiBXZWFrU2V0P1dlYWtTZXQ6U2V0LEhqPU1hdGguY2VpbCx2ZD1mYi5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLGpmPQ0KZmIuUmVhY3RDdXJyZW50T3duZXIsbj0wLFI9bnVsbCxHPW51bGwsTz0wLHRhPTAsY2I9R2EoMCksTD0wLHdkPW51bGwsRmI9MCxMYT0wLENiPTAsaGY9MCxkZj1udWxsLGNmPTAsVmU9SW5maW5pdHksbD1udWxsLHJkPSExLFllPW51bGwsbmE9bnVsbCxTYT0hMSx0Yz1udWxsLHZjPTkwLG1mPVtdLG5mPVtdLHZhPW51bGwscmM9MCxlZj1udWxsLHNkPS0xLHVhPTAsdGQ9MCx1Yz1udWxsLHhkPSExO3ZhciBPaj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Yi5sYW5lcztpZihudWxsIT09YSlpZihhLm1lbW9pemVkUHJvcHMhPT1iLnBlbmRpbmdQcm9wc3x8Si5jdXJyZW50KWZhPSEwO2Vsc2UgaWYoMCE9PShjJmQpKWZhPTAhPT0oYS5mbGFncyYxNjM4NCk\/ITA6ITE7ZWxzZXtmYT0hMTtzd2l0Y2goYi50YWcpe2Nhc2UgMzpDaChiKTtIZSgpO2JyZWFrO2Nhc2UgNTppaChiKTticmVhaztjYXNlIDE6UyhiLnR5cGUpJiZYYyhiKTticmVhaztjYXNlIDQ6RWUoYixiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKTsNCmJyZWFrO2Nhc2UgMTA6ZD1iLm1lbW9pemVkUHJvcHMudmFsdWU7dmFyIGU9Yi50eXBlLl9jb250ZXh0O0EoYmQsZS5fY3VycmVudFZhbHVlKTtlLl9jdXJyZW50VmFsdWU9ZDticmVhaztjYXNlIDEzOmlmKG51bGwhPT1iLm1lbW9pemVkU3RhdGUpe2lmKDAhPT0oYyZiLmNoaWxkLmNoaWxkTGFuZXMpKXJldHVybiBEaChhLGIsYyk7QShFLEUuY3VycmVudCYxKTtiPXNhKGEsYixjKTtyZXR1cm4gbnVsbCE9PWI\/Yi5zaWJsaW5nOm51bGx9QShFLEUuY3VycmVudCYxKTticmVhaztjYXNlIDE5OmQ9MCE9PShjJmIuY2hpbGRMYW5lcyk7aWYoMCE9PShhLmZsYWdzJjY0KSl7aWYoZClyZXR1cm4gSWgoYSxiLGMpO2IuZmxhZ3N8PTY0fWU9Yi5tZW1vaXplZFN0YXRlO251bGwhPT1lJiYoZS5yZW5kZXJpbmc9bnVsbCxlLnRhaWw9bnVsbCxlLmxhc3RFZmZlY3Q9bnVsbCk7QShFLEUuY3VycmVudCk7aWYoZClicmVhaztlbHNlIHJldHVybiBudWxsO2Nhc2UgMjM6Y2FzZSAyNDpyZXR1cm4gYi5sYW5lcz0NCjAsUmUoYSxiLGMpfXJldHVybiBzYShhLGIsYyl9ZWxzZSBmYT0hMTtiLmxhbmVzPTA7c3dpdGNoKGIudGFnKXtjYXNlIDI6ZD1iLnR5cGU7bnVsbCE9PWEmJihhLmFsdGVybmF0ZT1udWxsLGIuYWx0ZXJuYXRlPW51bGwsYi5mbGFnc3w9Mik7YT1iLnBlbmRpbmdQcm9wcztlPXZiKGIsRC5jdXJyZW50KTt5YihiLGMpO2U9S2UobnVsbCxiLGQsYSxlLGMpO2IuZmxhZ3N8PTE7aWYoIm9iamVjdCI9PT10eXBlb2YgZSYmbnVsbCE9PWUmJiJmdW5jdGlvbiI9PT10eXBlb2YgZS5yZW5kZXImJnZvaWQgMD09PWUuJCR0eXBlb2Ype2IudGFnPTE7Yi5tZW1vaXplZFN0YXRlPW51bGw7Yi51cGRhdGVRdWV1ZT1udWxsO2lmKFMoZCkpe3ZhciBmPSEwO1hjKGIpfWVsc2UgZj0hMTtiLm1lbW9pemVkU3RhdGU9bnVsbCE9PWUuc3RhdGUmJnZvaWQgMCE9PWUuc3RhdGU\/ZS5zdGF0ZTpudWxsO0FlKGIpO3ZhciBnPWQuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzOyJmdW5jdGlvbiI9PT10eXBlb2YgZyYmDQpjZChiLGQsZyxhKTtlLnVwZGF0ZXI9ZGQ7Yi5zdGF0ZU5vZGU9ZTtlLl9yZWFjdEludGVybmFscz1iO0JlKGIsZCxhLGMpO2I9U2UobnVsbCxiLGQsITAsZixjKX1lbHNlIGIudGFnPTAsVShudWxsLGIsZSxjKSxiPWIuY2hpbGQ7cmV0dXJuIGI7Y2FzZSAxNjplPWIuZWxlbWVudFR5cGU7YTp7bnVsbCE9PWEmJihhLmFsdGVybmF0ZT1udWxsLGIuYWx0ZXJuYXRlPW51bGwsYi5mbGFnc3w9Mik7YT1iLnBlbmRpbmdQcm9wcztmPWUuX2luaXQ7ZT1mKGUuX3BheWxvYWQpO2IudHlwZT1lO2Y9Yi50YWc9VWooZSk7YT1lYShlLGEpO3N3aXRjaChmKXtjYXNlIDA6Yj1RZShudWxsLGIsZSxhLGMpO2JyZWFrIGE7Y2FzZSAxOmI9QmgobnVsbCxiLGUsYSxjKTticmVhayBhO2Nhc2UgMTE6Yj14aChudWxsLGIsZSxhLGMpO2JyZWFrIGE7Y2FzZSAxNDpiPXloKG51bGwsYixlLGVhKGUudHlwZSxhKSxkLGMpO2JyZWFrIGF9dGhyb3cgRXJyb3IobSgzMDYsZSwiIikpO31yZXR1cm4gYjtjYXNlIDA6cmV0dXJuIGQ9DQpiLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6ZWEoZCxlKSxRZShhLGIsZCxlLGMpO2Nhc2UgMTpyZXR1cm4gZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6ZWEoZCxlKSxCaChhLGIsZCxlLGMpO2Nhc2UgMzpDaChiKTtkPWIudXBkYXRlUXVldWU7aWYobnVsbD09PWF8fG51bGw9PT1kKXRocm93IEVycm9yKG0oMjgyKSk7ZD1iLnBlbmRpbmdQcm9wcztlPWIubWVtb2l6ZWRTdGF0ZTtlPW51bGwhPT1lP2UuZWxlbWVudDpudWxsO2FoKGEsYik7Y2MoYixkLG51bGwsYyk7ZD1iLm1lbW9pemVkU3RhdGUuZWxlbWVudDtpZihkPT09ZSlIZSgpLGI9c2EoYSxiLGMpO2Vsc2V7ZT1iLnN0YXRlTm9kZTtpZihmPWUuaHlkcmF0ZSlOYT10YihiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLmZpcnN0Q2hpbGQpLHJhPWIsZj1sYT0hMDtpZihmKXthPWUubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YTtpZihudWxsIT0NCmEpZm9yKGU9MDtlPGEubGVuZ3RoO2UrPTIpZj1hW2VdLGYuX3dvcmtJblByb2dyZXNzVmVyc2lvblByaW1hcnk9YVtlKzFdLEJiLnB1c2goZik7Yz13aChiLG51bGwsZCxjKTtmb3IoYi5jaGlsZD1jO2M7KWMuZmxhZ3M9Yy5mbGFncyYtM3wxMDI0LGM9Yy5zaWJsaW5nfWVsc2UgVShhLGIsZCxjKSxIZSgpO2I9Yi5jaGlsZH1yZXR1cm4gYjtjYXNlIDU6cmV0dXJuIGloKGIpLG51bGw9PT1hJiZHZShiKSxkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGY9bnVsbCE9PWE\/YS5tZW1vaXplZFByb3BzOm51bGwsZz1lLmNoaWxkcmVuLHJlKGQsZSk\/Zz1udWxsOm51bGwhPT1mJiZyZShkLGYpJiYoYi5mbGFnc3w9MTYpLEFoKGEsYiksVShhLGIsZyxjKSxiLmNoaWxkO2Nhc2UgNjpyZXR1cm4gbnVsbD09PWEmJkdlKGIpLG51bGw7Y2FzZSAxMzpyZXR1cm4gRGgoYSxiLGMpO2Nhc2UgNDpyZXR1cm4gRWUoYixiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxkPWIucGVuZGluZ1Byb3BzLG51bGw9PT0NCmE\/Yi5jaGlsZD1vZChiLG51bGwsZCxjKTpVKGEsYixkLGMpLGIuY2hpbGQ7Y2FzZSAxMTpyZXR1cm4gZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6ZWEoZCxlKSx4aChhLGIsZCxlLGMpO2Nhc2UgNzpyZXR1cm4gVShhLGIsYi5wZW5kaW5nUHJvcHMsYyksYi5jaGlsZDtjYXNlIDg6cmV0dXJuIFUoYSxiLGIucGVuZGluZ1Byb3BzLmNoaWxkcmVuLGMpLGIuY2hpbGQ7Y2FzZSAxMjpyZXR1cm4gVShhLGIsYi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sYyksYi5jaGlsZDtjYXNlIDEwOmE6e2Q9Yi50eXBlLl9jb250ZXh0O2U9Yi5wZW5kaW5nUHJvcHM7Zz1iLm1lbW9pemVkUHJvcHM7Zj1lLnZhbHVlO3ZhciBoPWIudHlwZS5fY29udGV4dDtBKGJkLGguX2N1cnJlbnRWYWx1ZSk7aC5fY3VycmVudFZhbHVlPWY7aWYobnVsbCE9PWcpaWYoaD1nLnZhbHVlLGY9WChoLGYpPzA6KCJmdW5jdGlvbiI9PT10eXBlb2YgZC5fY2FsY3VsYXRlQ2hhbmdlZEJpdHM\/DQpkLl9jYWxjdWxhdGVDaGFuZ2VkQml0cyhoLGYpOjEwNzM3NDE4MjMpfDAsMD09PWYpe2lmKGcuY2hpbGRyZW49PT1lLmNoaWxkcmVuJiYhSi5jdXJyZW50KXtiPXNhKGEsYixjKTticmVhayBhfX1lbHNlIGZvcihoPWIuY2hpbGQsbnVsbCE9PWgmJihoLnJldHVybj1iKTtudWxsIT09aDspe3ZhciBrPWguZGVwZW5kZW5jaWVzO2lmKG51bGwhPT1rKXtnPWguY2hpbGQ7Zm9yKHZhciBsPWsuZmlyc3RDb250ZXh0O251bGwhPT1sOyl7aWYobC5jb250ZXh0PT09ZCYmMCE9PShsLm9ic2VydmVkQml0cyZmKSl7MT09PWgudGFnJiYobD1JYSgtMSxjJi1jKSxsLnRhZz0yLEphKGgsbCkpO2gubGFuZXN8PWM7bD1oLmFsdGVybmF0ZTtudWxsIT09bCYmKGwubGFuZXN8PWMpOyRnKGgucmV0dXJuLGMpO2subGFuZXN8PWM7YnJlYWt9bD1sLm5leHR9fWVsc2UgZz0xMD09PWgudGFnP2gudHlwZT09PWIudHlwZT9udWxsOmguY2hpbGQ6aC5jaGlsZDtpZihudWxsIT09ZylnLnJldHVybj1oO2Vsc2UgZm9yKGc9DQpoO251bGwhPT1nOyl7aWYoZz09PWIpe2c9bnVsbDticmVha31oPWcuc2libGluZztpZihudWxsIT09aCl7aC5yZXR1cm49Zy5yZXR1cm47Zz1oO2JyZWFrfWc9Zy5yZXR1cm59aD1nfVUoYSxiLGUuY2hpbGRyZW4sYyk7Yj1iLmNoaWxkfXJldHVybiBiO2Nhc2UgOTpyZXR1cm4gZT1iLnR5cGUsZj1iLnBlbmRpbmdQcm9wcyxkPWYuY2hpbGRyZW4seWIoYixjKSxlPVkoZSxmLnVuc3RhYmxlX29ic2VydmVkQml0cyksZD1kKGUpLGIuZmxhZ3N8PTEsVShhLGIsZCxjKSxiLmNoaWxkO2Nhc2UgMTQ6cmV0dXJuIGU9Yi50eXBlLGY9ZWEoZSxiLnBlbmRpbmdQcm9wcyksZj1lYShlLnR5cGUsZikseWgoYSxiLGUsZixkLGMpO2Nhc2UgMTU6cmV0dXJuIHpoKGEsYixiLnR5cGUsYi5wZW5kaW5nUHJvcHMsZCxjKTtjYXNlIDE3OnJldHVybiBkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGU9Yi5lbGVtZW50VHlwZT09PWQ\/ZTplYShkLGUpLG51bGwhPT1hJiYoYS5hbHRlcm5hdGU9bnVsbCxiLmFsdGVybmF0ZT0NCm51bGwsYi5mbGFnc3w9MiksYi50YWc9MSxTKGQpPyhhPSEwLFhjKGIpKTphPSExLHliKGIsYyksZWgoYixkLGUpLEJlKGIsZCxlLGMpLFNlKG51bGwsYixkLCEwLGEsYyk7Y2FzZSAxOTpyZXR1cm4gSWgoYSxiLGMpO2Nhc2UgMjM6cmV0dXJuIFJlKGEsYixjKTtjYXNlIDI0OnJldHVybiBSZShhLGIsYyl9dGhyb3cgRXJyb3IobSgxNTYsYi50YWcpKTt9O3ZhciBaPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBuZXcgVGooYSxiLGMsZCl9O3NmLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oYSl7eWQoYSx0aGlzLl9pbnRlcm5hbFJvb3QsbnVsbCxudWxsKX07c2YucHJvdG90eXBlLnVubW91bnQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl9pbnRlcm5hbFJvb3QsYj1hLmNvbnRhaW5lckluZm87eWQobnVsbCxhLG51bGwsZnVuY3Rpb24oKXtiW3JiXT1udWxsfSl9O3ZhciBEaT1mdW5jdGlvbihhKXtpZigxMz09PWEudGFnKXt2YXIgYj1XKCk7UGEoYSw0LGIpO3JmKGEsNCl9fTt2YXIgWGY9DQpmdW5jdGlvbihhKXtpZigxMz09PWEudGFnKXt2YXIgYj1XKCk7UGEoYSw2NzEwODg2NCxiKTtyZihhLDY3MTA4ODY0KX19O3ZhciBCaT1mdW5jdGlvbihhKXtpZigxMz09PWEudGFnKXt2YXIgYj1XKCksYz1PYShhKTtQYShhLGMsYik7cmYoYSxjKX19O3ZhciBBaT1mdW5jdGlvbihhLGIpe3JldHVybiBiKCl9O1ZkPWZ1bmN0aW9uKGEsYixjKXtzd2l0Y2goYil7Y2FzZSAiaW5wdXQiOk5kKGEsYyk7Yj1jLm5hbWU7aWYoInJhZGlvIj09PWMudHlwZSYmbnVsbCE9Yil7Zm9yKGM9YTtjLnBhcmVudE5vZGU7KWM9Yy5wYXJlbnROb2RlO2M9Yy5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dFtuYW1lPSIrSlNPTi5zdHJpbmdpZnkoIiIrYikrJ11bdHlwZT0icmFkaW8iXScpO2ZvcihiPTA7YjxjLmxlbmd0aDtiKyspe3ZhciBkPWNbYl07aWYoZCE9PWEmJmQuZm9ybT09PWEuZm9ybSl7dmFyIGU9SGMoZCk7aWYoIWUpdGhyb3cgRXJyb3IobSg5MCkpO0VmKGQpO05kKGQsZSl9fX1icmVhaztjYXNlICJ0ZXh0YXJlYSI6SmYoYSwNCmMpO2JyZWFrO2Nhc2UgInNlbGVjdCI6Yj1jLnZhbHVlLG51bGwhPWImJmliKGEsISFjLm11bHRpcGxlLGIsITEpfX07KGZ1bmN0aW9uKGEsYixjLGQpe2xlPWE7ZWc9YjtYZD1jO1JmPWR9KSgkaCxmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPW47bnw9NDt0cnl7cmV0dXJuIFphKDk4LGEuYmluZChudWxsLGIsYyxkLGUpKX1maW5hbGx5e249ZiwwPT09biYmKEViKCksamEoKSl9fSxmdW5jdGlvbigpezA9PT0obiY0OSkmJihJaigpLFJhKCkpfSxmdW5jdGlvbihhLGIpe3ZhciBjPW47bnw9Mjt0cnl7cmV0dXJuIGEoYil9ZmluYWxseXtuPWMsMD09PW4mJihFYigpLGphKCkpfX0pO3ZhciB1az17RXZlbnRzOltPYixwYixIYyxQZixRZixSYSx7Y3VycmVudDohMX1dfTsoZnVuY3Rpb24oYSl7YT17YnVuZGxlVHlwZTphLmJ1bmRsZVR5cGUsdmVyc2lvbjphLnZlcnNpb24scmVuZGVyZXJQYWNrYWdlTmFtZTphLnJlbmRlcmVyUGFja2FnZU5hbWUscmVuZGVyZXJDb25maWc6YS5yZW5kZXJlckNvbmZpZywNCm92ZXJyaWRlSG9va1N0YXRlOm51bGwsb3ZlcnJpZGVIb29rU3RhdGVEZWxldGVQYXRoOm51bGwsb3ZlcnJpZGVIb29rU3RhdGVSZW5hbWVQYXRoOm51bGwsb3ZlcnJpZGVQcm9wczpudWxsLG92ZXJyaWRlUHJvcHNEZWxldGVQYXRoOm51bGwsb3ZlcnJpZGVQcm9wc1JlbmFtZVBhdGg6bnVsbCxzZXRTdXNwZW5zZUhhbmRsZXI6bnVsbCxzY2hlZHVsZVVwZGF0ZTpudWxsLGN1cnJlbnREaXNwYXRjaGVyUmVmOmZiLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsZmluZEhvc3RJbnN0YW5jZUJ5RmliZXI6WGosZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U6YS5maW5kRmliZXJCeUhvc3RJbnN0YW5jZXx8WWosZmluZEhvc3RJbnN0YW5jZXNGb3JSZWZyZXNoOm51bGwsc2NoZWR1bGVSZWZyZXNoOm51bGwsc2NoZWR1bGVSb290Om51bGwsc2V0UmVmcmVzaEhhbmRsZXI6bnVsbCxnZXRDdXJyZW50RmliZXI6bnVsbH07aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fKWE9DQohMTtlbHNle3ZhciBiPV9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztpZighYi5pc0Rpc2FibGVkJiZiLnN1cHBvcnRzRmliZXIpdHJ5e1plPWIuaW5qZWN0KGEpLGRiPWJ9Y2F0Y2goYyl7fWE9ITB9cmV0dXJuIGF9KSh7ZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U6V2EsYnVuZGxlVHlwZTowLHZlcnNpb246IjE3LjAuMCIscmVuZGVyZXJQYWNrYWdlTmFtZToicmVhY3QtZG9tIn0pO00uX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ9dWs7TS5jcmVhdGVQb3J0YWw9Z2k7TS5maW5kRE9NTm9kZT1mdW5jdGlvbihhKXtpZihudWxsPT1hKXJldHVybiBudWxsO2lmKDE9PT1hLm5vZGVUeXBlKXJldHVybiBhO3ZhciBiPWEuX3JlYWN0SW50ZXJuYWxzO2lmKHZvaWQgMD09PWIpe2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgYS5yZW5kZXIpdGhyb3cgRXJyb3IobSgxODgpKTt0aHJvdyBFcnJvcihtKDI2OCxPYmplY3Qua2V5cyhhKSkpOw0KfWE9VWYoYik7YT1udWxsPT09YT9udWxsOmEuc3RhdGVOb2RlO3JldHVybiBhfTtNLmZsdXNoU3luYz1mdW5jdGlvbihhLGIpe3ZhciBjPW47aWYoMCE9PShjJjQ4KSlyZXR1cm4gYShiKTtufD0xO3RyeXtpZihhKXJldHVybiBaYSg5OSxhLmJpbmQobnVsbCxiKSl9ZmluYWxseXtuPWMsamEoKX19O00uaHlkcmF0ZT1mdW5jdGlvbihhLGIsYyl7aWYoIXdjKGIpKXRocm93IEVycm9yKG0oMjAwKSk7cmV0dXJuIHpkKG51bGwsYSxiLCEwLGMpfTtNLnJlbmRlcj1mdW5jdGlvbihhLGIsYyl7aWYoIXdjKGIpKXRocm93IEVycm9yKG0oMjAwKSk7cmV0dXJuIHpkKG51bGwsYSxiLCExLGMpfTtNLnVubW91bnRDb21wb25lbnRBdE5vZGU9ZnVuY3Rpb24oYSl7aWYoIXdjKGEpKXRocm93IEVycm9yKG0oNDApKTtyZXR1cm4gYS5fcmVhY3RSb290Q29udGFpbmVyPyhhaShmdW5jdGlvbigpe3pkKG51bGwsbnVsbCxhLCExLGZ1bmN0aW9uKCl7YS5fcmVhY3RSb290Q29udGFpbmVyPW51bGw7YVtyYl09DQpudWxsfSl9KSwhMCk6ITF9O00udW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXM9JGg7TS51bnN0YWJsZV9jcmVhdGVQb3J0YWw9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ2koYSxiLDI8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsKX07TS51bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcj1mdW5jdGlvbihhLGIsYyxkKXtpZighd2MoYykpdGhyb3cgRXJyb3IobSgyMDApKTtpZihudWxsPT1hfHx2b2lkIDA9PT1hLl9yZWFjdEludGVybmFscyl0aHJvdyBFcnJvcihtKDM4KSk7cmV0dXJuIHpkKGEsYixjLCExLGQpfTtNLnZlcnNpb249IjE3LjAuMCJ9KTsNCn0pKCk7DQo=\"><\/script> <script src=\"data:application\/javascript;base64,LyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcAovKioqKioqLyAJLy8gVGhlIG1vZHVsZSBjYWNoZQovKioqKioqLyAJdmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTsKLyoqKioqKi8KLyoqKioqKi8gCS8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uCi8qKioqKiovIAlmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7Ci8qKioqKiovCi8qKioqKiovIAkJLy8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlCi8qKioqKiovIAkJaWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHsKLyoqKioqKi8gCQkJcmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7Ci8qKioqKiovIAkJfQovKioqKioqLyAJCS8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpCi8qKioqKiovIAkJdmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0gewovKioqKioqLyAJCQlpOiBtb2R1bGVJZCwKLyoqKioqKi8gCQkJbDogZmFsc2UsCi8qKioqKiovIAkJCWV4cG9ydHM6IHt9Ci8qKioqKiovIAkJfTsKLyoqKioqKi8KLyoqKioqKi8gCQkvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb24KLyoqKioqKi8gCQltb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTsKLyoqKioqKi8KLyoqKioqKi8gCQkvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkCi8qKioqKiovIAkJbW9kdWxlLmwgPSB0cnVlOwovKioqKioqLwovKioqKioqLyAJCS8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlCi8qKioqKiovIAkJcmV0dXJuIG1vZHVsZS5leHBvcnRzOwovKioqKioqLyAJfQovKioqKioqLwovKioqKioqLwovKioqKioqLyAJLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXykKLyoqKioqKi8gCV9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7Ci8qKioqKiovCi8qKioqKiovIAkvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZQovKioqKioqLyAJX193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlczsKLyoqKioqKi8KLyoqKioqKi8gCS8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0cwovKioqKioqLyAJX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7Ci8qKioqKiovIAkJaWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkgewovKioqKioqLyAJCQlPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTsKLyoqKioqKi8gCQl9Ci8qKioqKiovIAl9OwovKioqKioqLwovKioqKioqLyAJLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0cwovKioqKioqLyAJX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykgewovKioqKioqLyAJCWlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykgewovKioqKioqLyAJCQlPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTsKLyoqKioqKi8gCQl9Ci8qKioqKiovIAkJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTsKLyoqKioqKi8gCX07Ci8qKioqKiovCi8qKioqKiovIAkvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3QKLyoqKioqKi8gCS8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdAovKioqKioqLyAJLy8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zCi8qKioqKiovIAkvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3QKLyoqKioqKi8gCS8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmUKLyoqKioqKi8gCV9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7Ci8qKioqKiovIAkJaWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7Ci8qKioqKiovIAkJaWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTsKLyoqKioqKi8gCQlpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlOwovKioqKioqLyAJCXZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7Ci8qKioqKiovIAkJX193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTsKLyoqKioqKi8gCQlPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7Ci8qKioqKiovIAkJaWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpOwovKioqKioqLyAJCXJldHVybiBuczsKLyoqKioqKi8gCX07Ci8qKioqKiovCi8qKioqKiovIAkvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlcwovKioqKioqLyAJX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7Ci8qKioqKiovIAkJdmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA\/Ci8qKioqKiovIAkJCWZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6Ci8qKioqKiovIAkJCWZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07Ci8qKioqKiovIAkJX193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpOwovKioqKioqLyAJCXJldHVybiBnZXR0ZXI7Ci8qKioqKiovIAl9OwovKioqKioqLwovKioqKioqLyAJLy8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsCi8qKioqKiovIAlfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07Ci8qKioqKiovCi8qKioqKiovIAkvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfXwovKioqKioqLyAJX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gIiI7Ci8qKioqKiovCi8qKioqKiovCi8qKioqKiovIAkvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHMKLyoqKioqKi8gCXJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9ICIuL3NyY2pzL3JlYWN0LXRvb2xzLmpzIik7Ci8qKioqKiovIH0pCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qKioqKiovICh7CgovKioqLyAiLi9zcmNqcy9pbnB1dC5qcyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKiEqXAogICEqKiogLi9zcmNqcy9pbnB1dC5qcyAqKiohCiAgXCoqKioqKioqKioqKioqKioqKioqKioqKi8KLyohIGV4cG9ydHMgcHJvdmlkZWQ6IHJlYWN0U2hpbnlJbnB1dCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Cl9fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTsKLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCAicmVhY3RTaGlueUlucHV0IiwgZnVuY3Rpb24oKSB7IHJldHVybiByZWFjdFNoaW55SW5wdXQ7IH0pOwovKiBoYXJtb255IGltcG9ydCAqLyB2YXIgcmVhY3RfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIHJlYWN0ICovICJyZWFjdCIpOwovKiBoYXJtb255IGltcG9ydCAqLyB2YXIgcmVhY3RfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihyZWFjdF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fKTsKLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIHJlYWN0X2RvbV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgcmVhY3QtZG9tICovICJyZWFjdC1kb20iKTsKLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIHJlYWN0X2RvbV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKHJlYWN0X2RvbV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fKTsKLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIHNoaW55X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBzaGlueSAqLyAic2hpbnkiKTsKLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIHNoaW55X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oc2hpbnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyk7Ci8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBqcXVlcnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGpxdWVyeSAqLyAianF1ZXJ5Iik7Ci8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBqcXVlcnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihqcXVlcnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyk7CmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7ICJAYmFiZWwvaGVscGVycyAtIHR5cGVvZiI7IGlmICh0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09ICJzeW1ib2wiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyAic3ltYm9sIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfQoKZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKTsgfSB9CgpmdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgidmFsdWUiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfQoKZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH0KCmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICJmdW5jdGlvbiIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH0KCmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9CgpmdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfQoKZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gIm9iamVjdCIgfHwgdHlwZW9mIGNhbGwgPT09ICJmdW5jdGlvbiIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9CgpmdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOyB9IHJldHVybiBzZWxmOyB9CgpmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09ICJ1bmRlZmluZWQiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSAiZnVuY3Rpb24iKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH0KCmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA\/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH0KCgoKCgovKg0KICogVGhpcyBkZWZhdWx0IHJlY2VpdmVNZXNzYWdlIGltcGxlbWVudGF0aW9uIGV4cGVjdHMgZGF0YSB0byBjb250YWluIHdob2xlDQogKiBjb25maWd1cmF0aW9uIGFuZCB2YWx1ZSBwcm9wZXJ0aWVzLiBJZiBlaXRoZXIgaXMgcHJlc2VudCwgaXQgd2lsbCBiZSBzZXQgYW5kDQogKiB0aGUgY29tcG9uZW50IHdpbGwgYmUgcmUtcmVuZGVyZWQuIEJlY2F1c2UgcmVjZWl2ZU1lc3NhZ2UgaXMgdHlwaWNhbGx5IHVzZWQNCiAqIGJ5IGlucHV0IGF1dGhvcnMgdG8gcGVyZm9ybSBpbmNyZW1lbnRhbCB1cGRhdGVzLCB0aGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24NCiAqIGNhbiBiZSBvdmVycmlkZW4gYnkgdGhlIHVzZXIgd2l0aCB0aGUgcmVjZWl2ZU1lc3NhZ2UgYXJndW1lbnRzIHRvDQogKiByZWFjdFNoaW55SW5wdXQuDQogKi8KCmZ1bmN0aW9uIGRlZmF1bHRSZWNlaXZlTWVzc2FnZShlbCwgX3JlZikgewogIHZhciBjb25maWd1cmF0aW9uID0gX3JlZi5jb25maWd1cmF0aW9uLAogICAgICB2YWx1ZSA9IF9yZWYudmFsdWU7CiAgdmFyIGRpcnR5ID0gZmFsc2U7CgogIGlmIChjb25maWd1cmF0aW9uICE9PSB1bmRlZmluZWQpIHsKICAgIHRoaXMuc2V0SW5wdXRDb25maWd1cmF0aW9uKGVsLCBjb25maWd1cmF0aW9uKTsKICAgIGRpcnR5ID0gdHJ1ZTsKICB9CgogIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7CiAgICB0aGlzLnNldElucHV0VmFsdWUoZWwsIHZhbHVlKTsKICAgIGRpcnR5ID0gdHJ1ZTsKICB9CgogIGlmIChkaXJ0eSkgewogICAgdGhpcy5nZXRDYWxsYmFjayhlbCkoKTsKICAgIHRoaXMucmVuZGVyKGVsKTsKICB9Cn0KCnZhciBkZWZhdWx0T3B0aW9ucyA9IHsKICByZWNlaXZlTWVzc2FnZTogZGVmYXVsdFJlY2VpdmVNZXNzYWdlLAogIHR5cGU6IGZhbHNlLAogIHJhdGVQb2xpY3k6IG51bGwKfTsKLyoqDQogKiBJbnN0YWxscyBhIG5ldyBTaGlueSBpbnB1dCBiaW5kaW5nIGJhc2VkIG9uIGEgUmVhY3QgY29tcG9uZW50Lg0KICoNCiAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3RvciAtIGpRdWVyeSBzZWxlY3RvciB0aGF0IHNob3VsZCBpZGVudGlmeSB0aGUgc2V0IG9mDQogKiBjb250YWluZXIgZWxlbWVudHMgd2l0aGluIHRoZSBzY29wZSBhcmd1bWVudCBvZiBTaGlueS5JbnB1dEJpbmRpbmcuZmluZC4NCiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gQSBuYW1lIHN1Y2ggYXMgJ2FjbWUuRm9vSW5wdXQnIHRoYXQgc2hvdWxkIHVuaXF1ZWx5DQogKiBpZGVudGlmeSB0aGUgY29tcG9uZW50Lg0KICogQHBhcmFtIHtPYmplY3R9IGNvbXBvbmVudCAtIFJlYWN0IENvbXBvbmVudCwgZWl0aGVyIGNsYXNzIG9yIGZ1bmN0aW9uLg0KICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBBZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gU3VwcG9ydGVkDQogKiBvcHRpb25zIGFyZToNCiAqIC0gcmVjZWl2ZU1lc3NhZ2U6IEltcGxlbWVudGF0aW9uIG9mIFNoaW55LklucHV0QmluZGluZyB0byB1c2UgaW4gcGxhY2Ugb2YNCiAqICAgdGhlIGRlZmF1bHQuIFR5cGljYWxseSBvdmVycmlkZGVuIGFzIGFuIG9wdGltaXphdGlvbiB0byBwZXJmb3JtDQogKiAgIGluY3JlbWVudGFsIHZhbHVlIHVwZGF0ZXMuDQogKiAtIHR5cGU6IGBmYWxzZWAsIGEgc3RyaW5nLCBvciBhIGZ1bmN0aW9uLg0KICogICAgIC0gYGZhbHNlYCAodGhlIGRlZmF1bHQpOiBkZW5vdGVzIHRoYXQgdGhlIHZhbHVlIHByb2R1Y2VkIGJ5IHRoaXMgaW5wdXQNCiAqICAgICAgIHNob3VsZCBub3QgYmUgaW50ZXJjZXB0ZWQgYnkgYW55IGhhbmRsZXJzIHJlZ2lzdGVyZWQgaW4gUiBvbiB0aGUNCiAqICAgICAgIHNlcnZlciB1c2luZyBzaGlueTo6cmVnaXN0ZXJJbnB1dEhhbmRsZXIoKS4NCiAqICAgICAtIHN0cmluZzogZGVub3RlcyB0aGUgaW5wdXQncyAqdHlwZSogYW5kIHNob3VsZCBjb3JyZXNwb25kIHRvIHRoZQ0KICogICAgICAgdHlwZSBwYXJhbWV0ZXIgb2Ygc2hpbnk6OnJlZ2lzdGVySW5wdXRIYW5kbGVyKCkuDQogKiAgICAgLSBmdW5jdGlvbjogQSBmdW5jdGlvbiBjYWxsZWQgd2l0aCBgdGhpc2AgYm91bmQgdG8gdGhlIElucHV0QmluZGluZw0KICogICAgICAgaW5zdGFuY2UgYW5kIHBhc3NlZCBhIHNpbmdsZSBhcmd1bWVudCwgdGhlIGlucHV0J3MgY29udGFpbmluZyBET00NCiAqICAgICAgIGVsZW1lbnQuIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGVpdGhlciBgZmFsc2VgIG9yIGEgc3RyaW5nDQogKiAgICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSB0eXBlIHBhcmFtZXRlciBvZiBzaGlueTo6cmVnaXN0ZXJJbnB1dEhhbmRsZXIoKS4NCiAqIC0gcmF0ZVBvbGljeTogQSByYXRlIHBvbGljeSBvYmplY3QgYXMgZGVmaW5lZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBmb3INCiAqICAgICBnZXRSYXRlUG9saWN5KCk6IGh0dHBzOi8vc2hpbnkucnN0dWRpby5jb20vYXJ0aWNsZXMvYnVpbGRpbmctaW5wdXRzLmh0bWwNCiAqICAgICBBIHJhdGUgcG9saWN5IG9iamVjdCBoYXMgdHdvIG1lbWJlcnM6DQogKiAgICAgLSBgcG9saWN5YDogVmFsaWQgdmFsdWVzIGFyZSB0aGUgc3RyaW5ncyAiZGlyZWN0IiwgImRlYm91bmNlIiwgYW5kDQogKiAgICAgICAidGhyb3R0bGUiLiAiZGlyZWN0IiBtZWFucyB0aGF0IGFsbCBldmVudHMgYXJlIHNlbnQgaW1tZWRpYXRlbHkuDQogKiAgICAgLSBgZGVsYXlgOiBOdW1iZXIgaW5kaWNhdGluZyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGF0IHNob3VsZCBiZQ0KICogICAgICAgdXNlZCB3aGVuIGRlYm91bmNpbmcgb3IgdGhyb3R0bGluZy4gSGFzIG5vIGVmZmVjdCBpZiB0aGUgcG9saWN5IGlzDQogKiAgICAgICBkaXJlY3QuDQogKiAgICAgVGhlIHNwZWNpZmllZCByYXRlIHBvbGljeSBpcyBvbmx5IGFwcGxpZWQgd2hlbiBgdHJ1ZWAgaXMgcGFzc2VkIGFzIHRoZQ0KICogICAgIHNlY29uZCBhcmd1bWVudCB0byB0aGUgYHNldFZhbHVlYCBmdW5jdGlvbiBwYXNzZWQgYXMgYSBwcm9wIHRvIHRoZQ0KICogICAgIGlucHV0IGNvbXBvbmVudC4NCiAqDQogKi8KCmZ1bmN0aW9uIHJlYWN0U2hpbnlJbnB1dChzZWxlY3RvciwgbmFtZSwgY29tcG9uZW50LCBvcHRpb25zKSB7CiAgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRPcHRpb25zLCBvcHRpb25zKTsKICBzaGlueV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQuYS5pbnB1dEJpbmRpbmdzLnJlZ2lzdGVyKG5ldyAoIC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1NoaW55JElucHV0QmluZGluZykgewogICAgX2luaGVyaXRzKF9jbGFzcywgX1NoaW55JElucHV0QmluZGluZyk7CgogICAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihfY2xhc3MpOwoKICAgIGZ1bmN0aW9uIF9jbGFzcygpIHsKICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIF9jbGFzcyk7CgogICAgICByZXR1cm4gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICB9CgogICAgX2NyZWF0ZUNsYXNzKF9jbGFzcywgW3sKICAgICAga2V5OiAiZmluZCIsCgogICAgICAvKg0KICAgICAgICogTWV0aG9kcyBvdmVycmlkZSB0aG9zZSBpbiBTaGlueS5JbnB1dEJpbmRpbmcNCiAgICAgICAqLwogICAgICB2YWx1ZTogZnVuY3Rpb24gZmluZChzY29wZSkgewogICAgICAgIHJldHVybiBqcXVlcnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX19kZWZhdWx0KCkoc2NvcGUpLmZpbmQoc2VsZWN0b3IpOwogICAgICB9CiAgICB9LCB7CiAgICAgIGtleTogImdldFZhbHVlIiwKICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldFZhbHVlKGVsKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SW5wdXRWYWx1ZShlbCk7CiAgICAgIH0KICAgIH0sIHsKICAgICAga2V5OiAic2V0VmFsdWUiLAogICAgICB2YWx1ZTogZnVuY3Rpb24gc2V0VmFsdWUoZWwsIHZhbHVlKSB7CiAgICAgICAgdmFyIHJhdGVMaW1pdGVkID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBmYWxzZTsKCiAgICAgICAgLyoNCiAgICAgICAgICogV2UgaGF2ZSB0byBjaGVjayB3aGV0aGVyICQoZWwpLmRhdGEoJ2NhbGxiYWNrJykgaXMgdW5kZWZpbmVkIGhlcmUNCiAgICAgICAgICogaW4gY2FzZSBzaGlueTo6cmVuZGVyVUkoKSBpcyBpbnZvbHZlZC4gSWYgYW4gaW5wdXQgaXMgY29udGFpbmVkIGluIGENCiAgICAgICAgICogc2hpbnk6OnVpT3V0cHV0KCksIHRoZSBmb2xsb3dpbmcgc3RyYW5nZSB0aGluZyBoYXBwZW5zIG9jY2FzaW9uYWxseToNCiAgICAgICAgICoNCiAgICAgICAgICogICAxLiBzZXRWYWx1ZSgpIGlzIGJvdW5kIHRvIGFuIGVsIGluIHRoaXMucmVuZGVyKCksIGJlbG93DQogICAgICAgICAqICAgMi4gQW4gZXZlbnQgdGhhdCB3aWxsIGNhbGwgc2V0VmFsdWUoKSBpcyBlbnF1ZXVlZA0KICAgICAgICAgKiAgIDMuIFdoaWxlIHRoZSBldmVudCBpcyBzdGlsbCBlbnF1ZXVlZCwgZWwgaXMgdW5ib3VuZCBhbmQgcmVtb3ZlZA0KICAgICAgICAgKiAgICAgIGZyb20gdGhlIERPTSBieSB0aGUgSlMgY29kZSBhc3NvY2lhdGVkIHdpdGggc2hpbnk6OnVpT3V0cHV0KCkNCiAgICAgICAgICogICAgICAtIFRoYXQgY29kZSB1c2VzIGpRdWVyeSAuaHRtbCgpIGluIG91dHB1dF9iaW5kaW5nX2h0bWwuanMNCiAgICAgICAgICogICAgICAtIC5odG1sKCkgcmVtb3ZlcyBlbCBmcm9tIHRoZSBET00gYW5kIGNsZWFycyBpc3QgZGF0YSBhbmQgZXZlbnRzDQogICAgICAgICAqICAgNC4gQnkgdGhlIHRpbWUgdGhlIHNldFZhbHVlKCkgYm91bmQgdG8gdGhlIG9yaWdpbmFsIGVsIGlzIGludm9rZWQsDQogICAgICAgICAqICAgICAgZWwgaGFzIGJlZW4gdW5ib3VuZCBhbmQgaXRzIGRhdGEgY2xlYXJlZC4NCiAgICAgICAgICoNCiAgICAgICAgICogIFNpbmNlIHRoZSBvcmlnaW5hbCBpbnB1dCBpcyBnb25lIGFsb25nIHdpdGggaXRzIGNhbGxiYWNrLCBpdA0KICAgICAgICAgKiAgc2VlbXMgdG8gbWFrZSB0aGUgbW9zdCBzZW5zZSB0byBkbyBub3RoaW5nLg0KICAgICAgICAgKi8KICAgICAgICBpZiAoanF1ZXJ5X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19fZGVmYXVsdCgpKGVsKS5kYXRhKCdjYWxsYmFjaycpICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgIHRoaXMuc2V0SW5wdXRWYWx1ZShlbCwgdmFsdWUpOwogICAgICAgICAgdGhpcy5nZXRDYWxsYmFjayhlbCkocmF0ZUxpbWl0ZWQpOwogICAgICAgICAgdGhpcy5yZW5kZXIoZWwpOwogICAgICAgIH0KICAgICAgfQogICAgfSwgewogICAgICBrZXk6ICJpbml0aWFsaXplIiwKICAgICAgdmFsdWU6IGZ1bmN0aW9uIGluaXRpYWxpemUoZWwpIHsKICAgICAgICBqcXVlcnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX19kZWZhdWx0KCkoZWwpLmRhdGEoJ3ZhbHVlJywgSlNPTi5wYXJzZShqcXVlcnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX19kZWZhdWx0KCkoZWwpLm5leHQoKS50ZXh0KCkpKTsKICAgICAgICBqcXVlcnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX19kZWZhdWx0KCkoZWwpLmRhdGEoJ2NvbmZpZ3VyYXRpb24nLCBKU09OLnBhcnNlKGpxdWVyeV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQoKShlbCkubmV4dCgpLm5leHQoKS50ZXh0KCkpKTsKICAgICAgfQogICAgfSwgewogICAgICBrZXk6ICJzdWJzY3JpYmUiLAogICAgICB2YWx1ZTogZnVuY3Rpb24gc3Vic2NyaWJlKGVsLCBjYWxsYmFjaykgewogICAgICAgIGpxdWVyeV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQoKShlbCkuZGF0YSgnY2FsbGJhY2snLCBjYWxsYmFjayk7CiAgICAgICAgdGhpcy5yZW5kZXIoZWwpOwogICAgICB9CiAgICB9LCB7CiAgICAgIGtleTogInVuc3Vic2NyaWJlIiwKICAgICAgdmFsdWU6IGZ1bmN0aW9uIHVuc3Vic2NyaWJlKGVsKSB7CiAgICAgICAgcmVhY3RfZG9tX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19fZGVmYXVsdC5hLnJlbmRlcihudWxsLCBlbCk7CiAgICAgIH0KICAgIH0sIHsKICAgICAga2V5OiAicmVjZWl2ZU1lc3NhZ2UiLAogICAgICB2YWx1ZTogZnVuY3Rpb24gcmVjZWl2ZU1lc3NhZ2UoZWwsIGRhdGEpIHsKICAgICAgICBvcHRpb25zLnJlY2VpdmVNZXNzYWdlLmNhbGwodGhpcywgZWwsIGRhdGEpOwogICAgICB9CiAgICB9LCB7CiAgICAgIGtleTogImdldFR5cGUiLAogICAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VHlwZShlbCkgewogICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy50eXBlID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICByZXR1cm4gb3B0aW9ucy50eXBlLmNhbGwodGhpcywgZWwpOwogICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy50eXBlID09PSBmYWxzZSB8fCB0eXBlb2Ygb3B0aW9ucy50eXBlID09PSAnc3RyaW5nJykgewogICAgICAgICAgcmV0dXJuIG9wdGlvbnMudHlwZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcHRpb25zLnR5cGUgbXVzdCBiZSBmYWxzZSwgYSBzdHJpbmcsIG9yIGEgZnVuY3Rpb24nKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sIHsKICAgICAga2V5OiAiZ2V0UmF0ZVBvbGljeSIsCiAgICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRSYXRlUG9saWN5KCkgewogICAgICAgIHJldHVybiBvcHRpb25zLnJhdGVQb2xpY3k7CiAgICAgIH0KICAgICAgLyoNCiAgICAgICAqIE1ldGhvZHMgbm90IHByZXNlbnQgaW4gU2hpbnkuSW5wdXRCaW5kaW5nIGJ1dCBhY2Nlc3NpYmxlIHRvIHVzZXJzDQogICAgICAgKiB0aHJvdWdoIGB0aGlzYCBpbiByZWNlaXZlTWVzc2FnZQ0KICAgICAgICovCgogICAgfSwgewogICAgICBrZXk6ICJnZXRJbnB1dFZhbHVlIiwKICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldElucHV0VmFsdWUoZWwpIHsKICAgICAgICByZXR1cm4ganF1ZXJ5X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19fZGVmYXVsdCgpKGVsKS5kYXRhKCd2YWx1ZScpOwogICAgICB9CiAgICB9LCB7CiAgICAgIGtleTogInNldElucHV0VmFsdWUiLAogICAgICB2YWx1ZTogZnVuY3Rpb24gc2V0SW5wdXRWYWx1ZShlbCwgdmFsdWUpIHsKICAgICAgICBqcXVlcnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX19kZWZhdWx0KCkoZWwpLmRhdGEoJ3ZhbHVlJywgdmFsdWUpOwogICAgICB9CiAgICB9LCB7CiAgICAgIGtleTogImdldElucHV0Q29uZmlndXJhdGlvbiIsCiAgICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRJbnB1dENvbmZpZ3VyYXRpb24oZWwpIHsKICAgICAgICByZXR1cm4ganF1ZXJ5X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19fZGVmYXVsdCgpKGVsKS5kYXRhKCdjb25maWd1cmF0aW9uJyk7CiAgICAgIH0KICAgIH0sIHsKICAgICAga2V5OiAic2V0SW5wdXRDb25maWd1cmF0aW9uIiwKICAgICAgdmFsdWU6IGZ1bmN0aW9uIHNldElucHV0Q29uZmlndXJhdGlvbihlbCwgY29uZmlndXJhdGlvbikgewogICAgICAgIGpxdWVyeV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQoKShlbCkuZGF0YSgnY29uZmlndXJhdGlvbicsIGNvbmZpZ3VyYXRpb24pOwogICAgICB9CiAgICB9LCB7CiAgICAgIGtleTogImdldENhbGxiYWNrIiwKICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldENhbGxiYWNrKGVsKSB7CiAgICAgICAgcmV0dXJuIGpxdWVyeV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQoKShlbCkuZGF0YSgnY2FsbGJhY2snKTsKICAgICAgfQogICAgfSwgewogICAgICBrZXk6ICJyZW5kZXIiLAogICAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKGVsKSB7CiAgICAgICAgdmFyIGVsZW1lbnQgPSAvKiNfX1BVUkVfXyovcmVhY3RfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX19kZWZhdWx0LmEuY3JlYXRlRWxlbWVudChjb21wb25lbnQsIHsKICAgICAgICAgIGNvbmZpZ3VyYXRpb246IHRoaXMuZ2V0SW5wdXRDb25maWd1cmF0aW9uKGVsKSwKICAgICAgICAgIHZhbHVlOiB0aGlzLmdldFZhbHVlKGVsKSwKICAgICAgICAgIHNldFZhbHVlOiB0aGlzLnNldFZhbHVlLmJpbmQodGhpcywgZWwpLAogICAgICAgICAgZWw6IGVsCiAgICAgICAgfSk7CiAgICAgICAgcmVhY3RfZG9tX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19fZGVmYXVsdC5hLnJlbmRlcihlbGVtZW50LCBlbCk7CiAgICAgIH0KICAgIH1dKTsKCiAgICByZXR1cm4gX2NsYXNzOwogIH0oc2hpbnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX19kZWZhdWx0LmEuSW5wdXRCaW5kaW5nKSkoKSwgbmFtZSk7Cn0KCi8qKiovIH0pLAoKLyoqKi8gIi4vc3JjanMvcmVhY3QtdG9vbHMuanMiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAhKioqIC4vc3JjanMvcmVhY3QtdG9vbHMuanMgKioqIQogIFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qISBubyBleHBvcnRzIHByb3ZpZGVkICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOwovKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3dpZGdldF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi93aWRnZXQgKi8gIi4vc3JjanMvd2lkZ2V0LmpzIik7Ci8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaW5wdXRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vaW5wdXQgKi8gIi4vc3JjanMvaW5wdXQuanMiKTsKCgp3aW5kb3cucmVhY3RSID0gewogIHJlYWN0U2hpbnlJbnB1dDogX2lucHV0X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19bInJlYWN0U2hpbnlJbnB1dCJdLAogIHJlYWN0V2lkZ2V0OiBfd2lkZ2V0X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19bInJlYWN0V2lkZ2V0Il0sCiAgaHlkcmF0ZTogX3dpZGdldF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fWyJoeWRyYXRlIl0KfTsKCi8qKiovIH0pLAoKLyoqKi8gIi4vc3JjanMvd2lkZ2V0LmpzIjoKLyohKioqKioqKioqKioqKioqKioqKioqKioqKiEqXAogICEqKiogLi9zcmNqcy93aWRnZXQuanMgKioqIQogIFwqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgZXhwb3J0cyBwcm92aWRlZDogaHlkcmF0ZSwgZGVmYXVsdE9wdGlvbnMsIG1lcmdlT3B0aW9ucywgZm9ybWF0RGltZW5zaW9uLCBpc1RhZywgcmVhY3RXaWRnZXQgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwpfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7Ci8qIGhhcm1vbnkgZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgImh5ZHJhdGUiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGh5ZHJhdGU7IH0pOwovKiBoYXJtb255IGV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sICJkZWZhdWx0T3B0aW9ucyIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gZGVmYXVsdE9wdGlvbnM7IH0pOwovKiBoYXJtb255IGV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sICJtZXJnZU9wdGlvbnMiLCBmdW5jdGlvbigpIHsgcmV0dXJuIG1lcmdlT3B0aW9uczsgfSk7Ci8qIGhhcm1vbnkgZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgImZvcm1hdERpbWVuc2lvbiIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gZm9ybWF0RGltZW5zaW9uOyB9KTsKLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCAiaXNUYWciLCBmdW5jdGlvbigpIHsgcmV0dXJuIGlzVGFnOyB9KTsKLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCAicmVhY3RXaWRnZXQiLCBmdW5jdGlvbigpIHsgcmV0dXJuIHJlYWN0V2lkZ2V0OyB9KTsKZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09ICJmdW5jdGlvbiIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gInN5bWJvbCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA\/ICJzeW1ib2wiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9CgovKioNCiAqIFJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgdGFnLCBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgYW4gaW5zdGFuY2Ugb2YgYQ0KICogUmVhY3QgY29tcG9uZW50IGFuZCBpdHMgY2hpbGRyZW4sIGludG8gYSBSZWFjdCBlbGVtZW50IHN1aXRhYmxlIGZvcg0KICogcGFzc2luZyB0byBSZWFjdERPTS5yZW5kZXIuDQogKiBAcGFyYW0ge09iamVjdH0gY29tcG9uZW50cw0KICogQHBhcmFtIHtPYmplY3R9IHRhZw0KICovCmZ1bmN0aW9uIGh5ZHJhdGUoY29tcG9uZW50cywgdGFnKSB7CiAgaWYgKHR5cGVvZiB0YWcgPT09ICdzdHJpbmcnKSByZXR1cm4gdGFnOwoKICBpZiAodGFnLm5hbWVbMF0gPT09IHRhZy5uYW1lWzBdLnRvVXBwZXJDYXNlKCkgJiYgIWNvbXBvbmVudHMuaGFzT3duUHJvcGVydHkodGFnLm5hbWUpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gY29tcG9uZW50OiAiICsgdGFnLm5hbWUpOwogIH0KCiAgdmFyIGVsZW0gPSBjb21wb25lbnRzLmhhc093blByb3BlcnR5KHRhZy5uYW1lKSA\/IGNvbXBvbmVudHNbdGFnLm5hbWVdIDogdGFnLm5hbWUsCiAgICAgIGFyZ3MgPSBbZWxlbSwgdGFnLmF0dHJpYnNdOwoKICBmb3IgKHZhciBpID0gMDsgaSA8IHRhZy5jaGlsZHJlbi5sZW5ndGg7IGkrKykgewogICAgYXJncy5wdXNoKGh5ZHJhdGUoY29tcG9uZW50cywgdGFnLmNoaWxkcmVuW2ldKSk7CiAgfQoKICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudC5hcHBseShSZWFjdCwgYXJncyk7Cn0KdmFyIGRlZmF1bHRPcHRpb25zID0gewogIC8vIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSBvbiB0aGUgcm9vdCB0YWcgdG8gdXNlIGZvciB0aGUgd2lkdGgsIGlmCiAgLy8gaXQncyB1cGRhdGVkLgogIHdpZHRoUHJvcGVydHk6ICJ3aWR0aCIsCiAgLy8gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IG9uIHRoZSByb290IHRhZyB0byB1c2UgZm9yIHRoZSBoZWlnaHQsIGlmCiAgLy8gaXQncyB1cGRhdGVkLgogIGhlaWdodFByb3BlcnR5OiAiaGVpZ2h0IiwKICAvLyBXaGV0aGVyIG9yIG5vdCB0byBhcHBlbmQgdGhlIHN0cmluZyAncHgnIHRvIHRoZSB3aWR0aCBhbmQgaGVpZ2h0CiAgLy8gcHJvcGVydGllcyB3aGVuIHRoZXkgY2hhbmdlLgogIGFwcGVuZFB4OiBmYWxzZSwKICAvLyBXaGV0aGVyIG9yIG5vdCB0byBkeW5hbWljYWxseSB1cGRhdGUgdGhlIHdpZHRoIGFuZCBoZWlnaHQgcHJvcGVydGllcwogIC8vIG9mIHRoZSBsYXN0IGtub3duIHRhZyB3aGVuIHRoZSBjb21wdXRlZCB3aWR0aCBhbmQgaGVpZ2h0IGNoYW5nZSBpbgogIC8vIHRoZSBicm93c2VyLgogIHJlbmRlck9uUmVzaXplOiBmYWxzZQp9OwpmdW5jdGlvbiBtZXJnZU9wdGlvbnMob3B0aW9ucykgewogIHZhciBtZXJnZWQgPSB7fTsKCiAgZm9yICh2YXIgayBpbiBkZWZhdWx0T3B0aW9ucykgewogICAgbWVyZ2VkW2tdID0gZGVmYXVsdE9wdGlvbnNba107CiAgfQoKICBmb3IgKHZhciBrIGluIG9wdGlvbnMpIHsKICAgIGlmICghZGVmYXVsdE9wdGlvbnMuaGFzT3duUHJvcGVydHkoaykpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgb3B0aW9uOiAiICsgayk7CiAgICB9CgogICAgbWVyZ2VkW2tdID0gb3B0aW9uc1trXTsKICB9CgogIHJldHVybiBtZXJnZWQ7Cn0KZnVuY3Rpb24gZm9ybWF0RGltZW5zaW9uKGRpbSwgb3B0aW9ucykgewogIGlmIChvcHRpb25zLmFwcGVuZFB4KSB7CiAgICByZXR1cm4gZGltICsgJ3B4JzsKICB9IGVsc2UgewogICAgcmV0dXJuIGRpbTsKICB9Cn0KZnVuY3Rpb24gaXNUYWcodmFsdWUpIHsKICByZXR1cm4gX3R5cGVvZih2YWx1ZSkgPT09ICdvYmplY3QnICYmIHZhbHVlLmhhc093blByb3BlcnR5KCduYW1lJykgJiYgdmFsdWUuaGFzT3duUHJvcGVydHkoJ2F0dHJpYnMnKSAmJiB2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnY2hpbGRyZW4nKTsKfQovKioNCiAqIENyZWF0ZXMgYW4gSFRNTFdpZGdldCB0aGF0IGlzIHVwZGF0ZWQgYnkgcmVuZGVyaW5nIGEgUmVhY3QgY29tcG9uZW50Lg0KICogUmVhY3QgY29tcG9uZW50IGNvbnN0cnVjdG9ycyBhcmUgbWFkZSBhdmFpbGFibGUgYnkgc3BlY2lmeWluZyB0aGVtIGJ5DQogKiBuYW1lIGluIHRoZSBjb21wb25lbnRzIG9iamVjdC4NCiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lDQogKiBAcGFyYW0ge3N0cmluZ30gdHlwZQ0KICogQHBhcmFtIHtPYmplY3R9IGNvbXBvbmVudHMNCiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zDQogKi8KCmZ1bmN0aW9uIHJlYWN0V2lkZ2V0KG5hbWUsIHR5cGUsIGNvbXBvbmVudHMsIG9wdGlvbnMpIHsKICB2YXIgYWN0dWFsT3B0aW9ucyA9IG1lcmdlT3B0aW9ucyhvcHRpb25zKTsKICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0KHsKICAgIG5hbWU6IG5hbWUsCiAgICB0eXBlOiB0eXBlLAogICAgZmFjdG9yeTogZnVuY3Rpb24gZmFjdG9yeShlbCwgd2lkdGgsIGhlaWdodCkgewogICAgICB2YXIgbGFzdFZhbHVlLAogICAgICAgICAgaW5zdGFuY2UgPSB7fSwKICAgICAgICAgIHJlbmRlclZhbHVlID0gZnVuY3Rpb24gcmVuZGVyVmFsdWUodmFsdWUpIHsKICAgICAgICBpZiAoYWN0dWFsT3B0aW9ucy5yZW5kZXJPblJlc2l6ZSkgewogICAgICAgICAgLy8gdmFsdWUudGFnIG1pZ2h0IGJlIGEgcHJpbWl0aXZlIHN0cmluZywgaW4gd2hpY2gKICAgICAgICAgIC8vIGNhc2UgdGhlcmUgaXMgbm8gYXR0cmlicyBwcm9wZXJ0eS4KICAgICAgICAgIGlmIChfdHlwZW9mKHZhbHVlLnRhZykgPT09ICdvYmplY3QnKSB7CiAgICAgICAgICAgIHZhbHVlLnRhZy5hdHRyaWJzW2FjdHVhbE9wdGlvbnNbIndpZHRoUHJvcGVydHkiXV0gPSBmb3JtYXREaW1lbnNpb24od2lkdGgpOwogICAgICAgICAgICB2YWx1ZS50YWcuYXR0cmlic1thY3R1YWxPcHRpb25zWyJoZWlnaHRQcm9wZXJ0eSJdXSA9IGZvcm1hdERpbWVuc2lvbihoZWlnaHQpOwogICAgICAgICAgfQoKICAgICAgICAgIGxhc3RWYWx1ZSA9IHZhbHVlOwogICAgICAgIH0gLy8gd2l0aCBmdW5jdGlvbmFsIHN0YXRlbGVzcyBjb21wb25lbnRzIHRoaXMgd2lsbCBiZSBudWxsCiAgICAgICAgLy8gc2VlIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9yZWFjdC1kb20uaHRtbCNyZW5kZXIgZm9yIG1vcmUgZGV0YWlscwoKCiAgICAgICAgdGhpcy5pbnN0YW5jZS5jb21wb25lbnQgPSBSZWFjdERPTS5yZW5kZXIoaHlkcmF0ZShjb21wb25lbnRzLCB2YWx1ZS50YWcpLCBlbCk7CiAgICAgIH07CgogICAgICByZXR1cm4gewogICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZSwKICAgICAgICByZW5kZXJWYWx1ZTogcmVuZGVyVmFsdWUsCiAgICAgICAgcmVzaXplOiBmdW5jdGlvbiByZXNpemUobmV3V2lkdGgsIG5ld0hlaWdodCkgewogICAgICAgICAgaWYgKGFjdHVhbE9wdGlvbnMucmVuZGVyT25SZXNpemUpIHsKICAgICAgICAgICAgd2lkdGggPSBuZXdXaWR0aDsKICAgICAgICAgICAgaGVpZ2h0ID0gbmV3SGVpZ2h0OwogICAgICAgICAgICByZW5kZXJWYWx1ZShsYXN0VmFsdWUpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfTsKICAgIH0KICB9KTsKfQoKLyoqKi8gfSksCgovKioqLyAianF1ZXJ5IjoKLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAhKioqIGV4dGVybmFsICJ3aW5kb3cualF1ZXJ5IiAqKiohCiAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKbW9kdWxlLmV4cG9ydHMgPSB3aW5kb3cualF1ZXJ5OwoKLyoqKi8gfSksCgovKioqLyAicmVhY3QiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcCiAgISoqKiBleHRlcm5hbCAid2luZG93LlJlYWN0IiAqKiohCiAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7Cgptb2R1bGUuZXhwb3J0cyA9IHdpbmRvdy5SZWFjdDsKCi8qKiovIH0pLAoKLyoqKi8gInJlYWN0LWRvbSI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAhKioqIGV4dGVybmFsICJ3aW5kb3cuUmVhY3RET00iICoqKiEKICBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCm1vZHVsZS5leHBvcnRzID0gd2luZG93LlJlYWN0RE9NOwoKLyoqKi8gfSksCgovKioqLyAic2hpbnkiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcCiAgISoqKiBleHRlcm5hbCAid2luZG93LlNoaW55IiAqKiohCiAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7Cgptb2R1bGUuZXhwb3J0cyA9IHdpbmRvdy5TaGlueTsKCi8qKiovIH0pCgovKioqKioqLyB9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVhY3QtdG9vbHMuanMubWFw\"><\/script> <script src=\"data:application\/javascript;base64,KGZ1bmN0aW9uKCkgewogIC8vIElmIHdpbmRvdy5IVE1MV2lkZ2V0cyBpcyBhbHJlYWR5IGRlZmluZWQsIHRoZW4gdXNlIGl0OyBvdGhlcndpc2UgY3JlYXRlIGEKICAvLyBuZXcgb2JqZWN0LiBUaGlzIGFsbG93cyBwcmVjZWRpbmcgY29kZSB0byBzZXQgb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUKICAvLyBpbml0aWFsaXphdGlvbiBwcm9jZXNzICh0aG91Z2ggbm9uZSBjdXJyZW50bHkgZXhpc3QpLgogIHdpbmRvdy5IVE1MV2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cyB8fCB7fTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSB2aWV3ZXIgcGFuZS4gSWYgbm90LCB3ZSdyZSBpbiBhIHdlYiBicm93c2VyLgogIHZhciB2aWV3ZXJNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnZpZXdlck1vZGUgPQogICAgICAvXGJ2aWV3ZXJfcGFuZT0xXGIvLnRlc3Qod2luZG93LmxvY2F0aW9uKTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gU2hpbnkgbW9kZS4gSWYgbm90LCBpdCdzIGEgc3RhdGljIGRvY3VtZW50LgogIC8vIE5vdGUgdGhhdCBzdGF0aWMgd2lkZ2V0cyBjYW4gYXBwZWFyIGluIGJvdGggU2hpbnkgYW5kIHN0YXRpYyBtb2RlcywgYnV0CiAgLy8gb2J2aW91c2x5LCBTaGlueSB3aWRnZXRzIGNhbiBvbmx5IGFwcGVhciBpbiBTaGlueSBhcHBzL2RvY3VtZW50cy4KICB2YXIgc2hpbnlNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnNoaW55TW9kZSA9CiAgICAgIHR5cGVvZih3aW5kb3cuU2hpbnkpICE9PSAidW5kZWZpbmVkIiAmJiAhIXdpbmRvdy5TaGlueS5vdXRwdXRCaW5kaW5nczsKCiAgLy8gV2UgY2FuJ3QgY291bnQgb24galF1ZXJ5IGJlaW5nIGF2YWlsYWJsZSwgc28gd2UgaW1wbGVtZW50IG91ciBvd24KICAvLyB2ZXJzaW9uIGlmIG5lY2Vzc2FyeS4KICBmdW5jdGlvbiBxdWVyeVNlbGVjdG9yQWxsKHNjb3BlLCBzZWxlY3RvcikgewogICAgaWYgKHR5cGVvZihqUXVlcnkpICE9PSAidW5kZWZpbmVkIiAmJiBzY29wZSBpbnN0YW5jZW9mIGpRdWVyeSkgewogICAgICByZXR1cm4gc2NvcGUuZmluZChzZWxlY3Rvcik7CiAgICB9CiAgICBpZiAoc2NvcGUucXVlcnlTZWxlY3RvckFsbCkgewogICAgICByZXR1cm4gc2NvcGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBhc0FycmF5KHZhbHVlKSB7CiAgICBpZiAodmFsdWUgPT09IG51bGwpCiAgICAgIHJldHVybiBbXTsKICAgIGlmICgkLmlzQXJyYXkodmFsdWUpKQogICAgICByZXR1cm4gdmFsdWU7CiAgICByZXR1cm4gW3ZhbHVlXTsKICB9CgogIC8vIEltcGxlbWVudCBqUXVlcnkncyBleHRlbmQKICBmdW5jdGlvbiBleHRlbmQodGFyZ2V0IC8qLCAuLi4gKi8pIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgcmV0dXJuIHRhcmdldDsKICAgIH0KICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07CiAgICAgIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7CiAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgewogICAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIHRhcmdldDsKICB9CgogIC8vIElFOCBkb2Vzbid0IHN1cHBvcnQgQXJyYXkuZm9yRWFjaC4KICBmdW5jdGlvbiBmb3JFYWNoKHZhbHVlcywgY2FsbGJhY2ssIHRoaXNBcmcpIHsKICAgIGlmICh2YWx1ZXMuZm9yRWFjaCkgewogICAgICB2YWx1ZXMuZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZyk7CiAgICB9IGVsc2UgewogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgewogICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdmFsdWVzW2ldLCBpLCB2YWx1ZXMpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBSZXBsYWNlcyB0aGUgc3BlY2lmaWVkIG1ldGhvZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgZnVuY1NvdXJjZS4KICAvLwogIC8vIE5vdGUgdGhhdCBmdW5jU291cmNlIHNob3VsZCBub3QgQkUgdGhlIG5ldyBtZXRob2QsIGl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uCiAgLy8gdGhhdCBSRVRVUk5TIHRoZSBuZXcgbWV0aG9kLiBmdW5jU291cmNlIHJlY2VpdmVzIGEgc2luZ2xlIGFyZ3VtZW50IHRoYXQgaXMKICAvLyB0aGUgb3ZlcnJpZGRlbiBtZXRob2QsIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGUgbmV3IG1ldGhvZC4gVGhlIG92ZXJyaWRkZW4KICAvLyBtZXRob2QgY2FuIGJlIGNhbGxlZCBsaWtlIGEgcmVndWxhciBmdW5jdGlvbiwgaXQgaGFzIHRoZSB0YXJnZXQgcGVybWFuZW50bHkKICAvLyBib3VuZCB0byBpdCBzbyAidGhpcyIgd2lsbCB3b3JrIGNvcnJlY3RseS4KICBmdW5jdGlvbiBvdmVycmlkZU1ldGhvZCh0YXJnZXQsIG1ldGhvZE5hbWUsIGZ1bmNTb3VyY2UpIHsKICAgIHZhciBzdXBlckZ1bmMgPSB0YXJnZXRbbWV0aG9kTmFtZV0gfHwgZnVuY3Rpb24oKSB7fTsKICAgIHZhciBzdXBlckZ1bmNCb3VuZCA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gc3VwZXJGdW5jLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTsKICAgIH07CiAgICB0YXJnZXRbbWV0aG9kTmFtZV0gPSBmdW5jU291cmNlKHN1cGVyRnVuY0JvdW5kKTsKICB9CgogIC8vIEFkZCBhIG1ldGhvZCB0byBkZWxlZ2F0b3IgdGhhdCwgd2hlbiBpbnZva2VkLCBjYWxscwogIC8vIGRlbGVnYXRlZS5tZXRob2ROYW1lLiBJZiB0aGVyZSBpcyBubyBzdWNoIG1ldGhvZCBvbgogIC8vIHRoZSBkZWxlZ2F0ZWUsIGJ1dCB0aGVyZSB3YXMgb25lIG9uIGRlbGVnYXRvciBiZWZvcmUKICAvLyBkZWxlZ2F0ZU1ldGhvZCB3YXMgY2FsbGVkLCB0aGVuIHRoZSBvcmlnaW5hbCB2ZXJzaW9uCiAgLy8gaXMgaW52b2tlZCBpbnN0ZWFkLgogIC8vIEZvciBleGFtcGxlOgogIC8vCiAgLy8gdmFyIGEgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2ExJyk7IH0KICAvLyAgIG1ldGhvZDI6IGZ1bmN0aW9uKCkgeyBjb25zb2xlLmxvZygnYTInKTsgfQogIC8vIH07CiAgLy8gdmFyIGIgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2IxJyk7IH0KICAvLyB9OwogIC8vIGRlbGVnYXRlTWV0aG9kKGEsIGIsICJtZXRob2QxIik7CiAgLy8gZGVsZWdhdGVNZXRob2QoYSwgYiwgIm1ldGhvZDIiKTsKICAvLyBhLm1ldGhvZDEoKTsKICAvLyBhLm1ldGhvZDIoKTsKICAvLwogIC8vIFRoZSBvdXRwdXQgd291bGQgYmUgImIxIiwgImEyIi4KICBmdW5jdGlvbiBkZWxlZ2F0ZU1ldGhvZChkZWxlZ2F0b3IsIGRlbGVnYXRlZSwgbWV0aG9kTmFtZSkgewogICAgdmFyIGluaGVyaXRlZCA9IGRlbGVnYXRvclttZXRob2ROYW1lXTsKICAgIGRlbGVnYXRvclttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgdGFyZ2V0ID0gZGVsZWdhdGVlOwogICAgICB2YXIgbWV0aG9kID0gZGVsZWdhdGVlW21ldGhvZE5hbWVdOwoKICAgICAgLy8gVGhlIG1ldGhvZCBkb2Vzbid0IGV4aXN0IG9uIHRoZSBkZWxlZ2F0ZWUuIEluc3RlYWQsCiAgICAgIC8vIGNhbGwgdGhlIG1ldGhvZCBvbiB0aGUgZGVsZWdhdG9yLCBpZiBpdCBleGlzdHMuCiAgICAgIGlmICghbWV0aG9kKSB7CiAgICAgICAgdGFyZ2V0ID0gZGVsZWdhdG9yOwogICAgICAgIG1ldGhvZCA9IGluaGVyaXRlZDsKICAgICAgfQoKICAgICAgaWYgKG1ldGhvZCkgewogICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGFyZ2V0LCBhcmd1bWVudHMpOwogICAgICB9CiAgICB9OwogIH0KCiAgLy8gSW1wbGVtZW50IGEgdmFndWUgZmFjc2ltaWxpZSBvZiBqUXVlcnkncyBkYXRhIG1ldGhvZAogIGZ1bmN0aW9uIGVsZW1lbnREYXRhKGVsLCBuYW1lLCB2YWx1ZSkgewogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMikgewogICAgICByZXR1cm4gZWxbImh0bWx3aWRnZXRfZGF0YV8iICsgbmFtZV07CiAgICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMykgewogICAgICBlbFsiaHRtbHdpZGdldF9kYXRhXyIgKyBuYW1lXSA9IHZhbHVlOwogICAgICByZXR1cm4gZWw7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGVsZW1lbnREYXRhOiAiICsKICAgICAgICBhcmd1bWVudHMubGVuZ3RoKTsKICAgIH0KICB9CgogIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzQ0NjE3MC9lc2NhcGUtc3RyaW5nLWZvci11c2UtaW4tamF2YXNjcmlwdC1yZWdleAogIGZ1bmN0aW9uIGVzY2FwZVJlZ0V4cChzdHIpIHsKICAgIHJldHVybiBzdHIucmVwbGFjZSgvW1wtXFtcXVwvXHtcfVwoXClcKlwrXD9cLlxcXF5cJFx8XS9nLCAiXFwkJiIpOwogIH0KCiAgZnVuY3Rpb24gaGFzQ2xhc3MoZWwsIGNsYXNzTmFtZSkgewogICAgdmFyIHJlID0gbmV3IFJlZ0V4cCgiXFxiIiArIGVzY2FwZVJlZ0V4cChjbGFzc05hbWUpICsgIlxcYiIpOwogICAgcmV0dXJuIHJlLnRlc3QoZWwuY2xhc3NOYW1lKTsKICB9CgogIC8vIGVsZW1lbnRzIC0gYXJyYXkgKG9yIGFycmF5LWxpa2Ugb2JqZWN0KSBvZiBIVE1MIGVsZW1lbnRzCiAgLy8gY2xhc3NOYW1lIC0gY2xhc3MgbmFtZSB0byB0ZXN0IGZvcgogIC8vIGluY2x1ZGUgLSBpZiB0cnVlLCBvbmx5IHJldHVybiBlbGVtZW50cyB3aXRoIGdpdmVuIGNsYXNzTmFtZTsKICAvLyAgIGlmIGZhbHNlLCBvbmx5IHJldHVybiBlbGVtZW50cyAqd2l0aG91dCogZ2l2ZW4gY2xhc3NOYW1lCiAgZnVuY3Rpb24gZmlsdGVyQnlDbGFzcyhlbGVtZW50cywgY2xhc3NOYW1lLCBpbmNsdWRlKSB7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICBpZiAoaGFzQ2xhc3MoZWxlbWVudHNbaV0sIGNsYXNzTmFtZSkgPT0gaW5jbHVkZSkKICAgICAgICByZXN1bHRzLnB1c2goZWxlbWVudHNbaV0pOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfQoKICBmdW5jdGlvbiBvbihvYmosIGV2ZW50TmFtZSwgZnVuYykgewogICAgaWYgKG9iai5hZGRFdmVudExpc3RlbmVyKSB7CiAgICAgIG9iai5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZnVuYywgZmFsc2UpOwogICAgfSBlbHNlIGlmIChvYmouYXR0YWNoRXZlbnQpIHsKICAgICAgb2JqLmF0dGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBvZmYob2JqLCBldmVudE5hbWUsIGZ1bmMpIHsKICAgIGlmIChvYmoucmVtb3ZlRXZlbnRMaXN0ZW5lcikKICAgICAgb2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBmdW5jLCBmYWxzZSk7CiAgICBlbHNlIGlmIChvYmouZGV0YWNoRXZlbnQpIHsKICAgICAgb2JqLmRldGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICAvLyBUcmFuc2xhdGUgYXJyYXkgb2YgdmFsdWVzIHRvIHRvcC9yaWdodC9ib3R0b20vbGVmdCwgYXMgdXN1YWwgd2l0aAogIC8vIHRoZSAicGFkZGluZyIgQ1NTIHByb3BlcnR5CiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3BhZGRpbmcKICBmdW5jdGlvbiB1bnBhY2tQYWRkaW5nKHZhbHVlKSB7CiAgICBpZiAodHlwZW9mKHZhbHVlKSA9PT0gIm51bWJlciIpCiAgICAgIHZhbHVlID0gW3ZhbHVlXTsKICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDEpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMF0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzBdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDIpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDMpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDQpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzNdfTsKICAgIH0KICB9CgogIC8vIENvbnZlcnQgYW4gdW5wYWNrZWQgcGFkZGluZyBvYmplY3QgdG8gYSBDU1MgdmFsdWUKICBmdW5jdGlvbiBwYWRkaW5nVG9Dc3MocGFkZGluZ09iaikgewogICAgcmV0dXJuIHBhZGRpbmdPYmoudG9wICsgInB4ICIgKyBwYWRkaW5nT2JqLnJpZ2h0ICsgInB4ICIgKyBwYWRkaW5nT2JqLmJvdHRvbSArICJweCAiICsgcGFkZGluZ09iai5sZWZ0ICsgInB4IjsKICB9CgogIC8vIE1ha2VzIGEgbnVtYmVyIHN1aXRhYmxlIGZvciBDU1MKICBmdW5jdGlvbiBweCh4KSB7CiAgICBpZiAodHlwZW9mKHgpID09PSAibnVtYmVyIikKICAgICAgcmV0dXJuIHggKyAicHgiOwogICAgZWxzZQogICAgICByZXR1cm4geDsKICB9CgogIC8vIFJldHJpZXZlcyBydW50aW1lIHdpZGdldCBzaXppbmcgaW5mb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQuCiAgLy8gVGhlIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbnVsbCwgb3IgYW4gb2JqZWN0IHdpdGggZmlsbCwgcGFkZGluZywKICAvLyBkZWZhdWx0V2lkdGgsIGRlZmF1bHRIZWlnaHQgZmllbGRzLgogIGZ1bmN0aW9uIHNpemluZ1BvbGljeShlbCkgewogICAgdmFyIHNpemluZ0VsID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2NyaXB0W2RhdGEtZm9yPSciICsgZWwuaWQgKyAiJ11bdHlwZT0nYXBwbGljYXRpb24vaHRtbHdpZGdldC1zaXppbmcnXSIpOwogICAgaWYgKCFzaXppbmdFbCkKICAgICAgcmV0dXJuIG51bGw7CiAgICB2YXIgc3AgPSBKU09OLnBhcnNlKHNpemluZ0VsLnRleHRDb250ZW50IHx8IHNpemluZ0VsLnRleHQgfHwgInt9Iik7CiAgICBpZiAodmlld2VyTW9kZSkgewogICAgICByZXR1cm4gc3Audmlld2VyOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIHNwLmJyb3dzZXI7CiAgICB9CiAgfQoKICAvLyBAcGFyYW0gdGFza3MgQXJyYXkgb2Ygc3RyaW5ncyAob3IgZmFsc3kgdmFsdWUsIGluIHdoaWNoIGNhc2Ugbm8tb3ApLgogIC8vICAgRWFjaCBlbGVtZW50IG11c3QgYmUgYSB2YWxpZCBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCB5aWVsZHMgYQogIC8vICAgZnVuY3Rpb24uIE9yLCBjYW4gYmUgYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoICJjb2RlIiBhbmQgImRhdGEiCiAgLy8gICBwcm9wZXJ0aWVzOyBpbiB0aGlzIGNhc2UsIHRoZSAiY29kZSIgcHJvcGVydHkgc2hvdWxkIGJlIGEgc3RyaW5nCiAgLy8gICBvZiBKUyB0aGF0J3MgYW4gZXhwciB0aGF0IHlpZWxkcyBhIGZ1bmN0aW9uLCBhbmQgImRhdGEiIHNob3VsZCBiZQogIC8vICAgYW4gb2JqZWN0IHRoYXQgd2lsbCBiZSBhZGRlZCBhcyBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IHdoZW4gdGhhdAogIC8vICAgZnVuY3Rpb24gaXMgY2FsbGVkLgogIC8vIEBwYXJhbSB0YXJnZXQgVGhlIG9iamVjdCB0aGF0IHdpbGwgYmUgInRoaXMiIGZvciBlYWNoIGZ1bmN0aW9uCiAgLy8gICBleGVjdXRpb24uCiAgLy8gQHBhcmFtIGFyZ3MgQXJyYXkgb2YgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb25zLiAoVGhlCiAgLy8gICBzYW1lIGFyZ3VtZW50cyB3aWxsIGJlIHBhc3NlZCB0byBhbGwgZnVuY3Rpb25zLikKICBmdW5jdGlvbiBldmFsQW5kUnVuKHRhc2tzLCB0YXJnZXQsIGFyZ3MpIHsKICAgIGlmICh0YXNrcykgewogICAgICBmb3JFYWNoKHRhc2tzLCBmdW5jdGlvbih0YXNrKSB7CiAgICAgICAgdmFyIHRoZXNlQXJncyA9IGFyZ3M7CiAgICAgICAgaWYgKHR5cGVvZih0YXNrKSA9PT0gIm9iamVjdCIpIHsKICAgICAgICAgIHRoZXNlQXJncyA9IHRoZXNlQXJncy5jb25jYXQoW3Rhc2suZGF0YV0pOwogICAgICAgICAgdGFzayA9IHRhc2suY29kZTsKICAgICAgICB9CiAgICAgICAgdmFyIHRhc2tGdW5jID0gdHJ5RXZhbCh0YXNrKTsKICAgICAgICBpZiAodHlwZW9mKHRhc2tGdW5jKSAhPT0gImZ1bmN0aW9uIikgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUYXNrIG11c3QgYmUgYSBmdW5jdGlvbiEgU291cmNlOlxuIiArIHRhc2spOwogICAgICAgIH0KICAgICAgICB0YXNrRnVuYy5hcHBseSh0YXJnZXQsIHRoZXNlQXJncyk7CiAgICAgIH0pOwogICAgfQogIH0KCiAgLy8gQXR0ZW1wdCBldmFsKCkgYm90aCB3aXRoIGFuZCB3aXRob3V0IGVuY2xvc2luZyBpbiBwYXJlbnRoZXNlcy4KICAvLyBOb3RlIHRoYXQgZW5jbG9zaW5nIGNvZXJjZXMgYSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBpbnRvCiAgLy8gYW4gZXhwcmVzc2lvbiB0aGF0IGV2YWwoKSBjYW4gcGFyc2UKICAvLyAob3RoZXJ3aXNlLCBhIFN5bnRheEVycm9yIGlzIHRocm93bikKICBmdW5jdGlvbiB0cnlFdmFsKGNvZGUpIHsKICAgIHZhciByZXN1bHQgPSBudWxsOwogICAgdHJ5IHsKICAgICAgcmVzdWx0ID0gZXZhbCgiKCIgKyBjb2RlICsgIikiKTsKICAgIH0gY2F0Y2goZXJyb3IpIHsKICAgICAgaWYgKCFlcnJvciBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSB7CiAgICAgICAgdGhyb3cgZXJyb3I7CiAgICAgIH0KICAgICAgdHJ5IHsKICAgICAgICByZXN1bHQgPSBldmFsKGNvZGUpOwogICAgICB9IGNhdGNoKGUpIHsKICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSB7CiAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhyb3cgZTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIHJldHVybiByZXN1bHQ7CiAgfQoKICBmdW5jdGlvbiBpbml0U2l6aW5nKGVsKSB7CiAgICB2YXIgc2l6aW5nID0gc2l6aW5nUG9saWN5KGVsKTsKICAgIGlmICghc2l6aW5nKQogICAgICByZXR1cm47CgogICAgdmFyIGNlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJodG1sd2lkZ2V0X2NvbnRhaW5lciIpOwogICAgaWYgKCFjZWwpCiAgICAgIHJldHVybjsKCiAgICBpZiAodHlwZW9mKHNpemluZy5wYWRkaW5nKSAhPT0gInVuZGVmaW5lZCIpIHsKICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5tYXJnaW4gPSAiMCI7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZyA9IHBhZGRpbmdUb0Nzcyh1bnBhY2tQYWRkaW5nKHNpemluZy5wYWRkaW5nKSk7CiAgICB9CgogICAgaWYgKHNpemluZy5maWxsKSB7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVuIjsKICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS53aWR0aCA9ICIxMDAlIjsKICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5oZWlnaHQgPSAiMTAwJSI7CiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmhlaWdodCA9ICIxMDAlIjsKICAgICAgaWYgKGNlbCkgewogICAgICAgIGNlbC5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0ZSI7CiAgICAgICAgdmFyIHBhZCA9IHVucGFja1BhZGRpbmcoc2l6aW5nLnBhZGRpbmcpOwogICAgICAgIGNlbC5zdHlsZS50b3AgPSBwYWQudG9wICsgInB4IjsKICAgICAgICBjZWwuc3R5bGUucmlnaHQgPSBwYWQucmlnaHQgKyAicHgiOwogICAgICAgIGNlbC5zdHlsZS5ib3R0b20gPSBwYWQuYm90dG9tICsgInB4IjsKICAgICAgICBjZWwuc3R5bGUubGVmdCA9IHBhZC5sZWZ0ICsgInB4IjsKICAgICAgICBlbC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKICAgICAgICBlbC5zdHlsZS5oZWlnaHQgPSAiMTAwJSI7CiAgICAgIH0KCiAgICAgIHJldHVybiB7CiAgICAgICAgZ2V0V2lkdGg6IGZ1bmN0aW9uKCkgeyByZXR1cm4gY2VsLm9mZnNldFdpZHRoOyB9LAogICAgICAgIGdldEhlaWdodDogZnVuY3Rpb24oKSB7IHJldHVybiBjZWwub2Zmc2V0SGVpZ2h0OyB9CiAgICAgIH07CgogICAgfSBlbHNlIHsKICAgICAgZWwuc3R5bGUud2lkdGggPSBweChzaXppbmcud2lkdGgpOwogICAgICBlbC5zdHlsZS5oZWlnaHQgPSBweChzaXppbmcuaGVpZ2h0KTsKCiAgICAgIHJldHVybiB7CiAgICAgICAgZ2V0V2lkdGg6IGZ1bmN0aW9uKCkgeyByZXR1cm4gZWwub2Zmc2V0V2lkdGg7IH0sCiAgICAgICAgZ2V0SGVpZ2h0OiBmdW5jdGlvbigpIHsgcmV0dXJuIGVsLm9mZnNldEhlaWdodDsgfQogICAgICB9OwogICAgfQogIH0KCiAgLy8gRGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgZm9yIG1ldGhvZHMKICB2YXIgZGVmYXVsdHMgPSB7CiAgICBmaW5kOiBmdW5jdGlvbihzY29wZSkgewogICAgICByZXR1cm4gcXVlcnlTZWxlY3RvckFsbChzY29wZSwgIi4iICsgdGhpcy5uYW1lKTsKICAgIH0sCiAgICByZW5kZXJFcnJvcjogZnVuY3Rpb24oZWwsIGVycikgewogICAgICB2YXIgJGVsID0gJChlbCk7CgogICAgICB0aGlzLmNsZWFyRXJyb3IoZWwpOwoKICAgICAgLy8gQWRkIGFsbCB0aGVzZSBlcnJvciBjbGFzc2VzLCBhcyBTaGlueSBkb2VzCiAgICAgIHZhciBlcnJDbGFzcyA9ICJzaGlueS1vdXRwdXQtZXJyb3IiOwogICAgICBpZiAoZXJyLnR5cGUgIT09IG51bGwpIHsKICAgICAgICAvLyB1c2UgdGhlIGNsYXNzZXMgb2YgdGhlIGVycm9yIGNvbmRpdGlvbiBhcyBDU1MgY2xhc3MgbmFtZXMKICAgICAgICBlcnJDbGFzcyA9IGVyckNsYXNzICsgIiAiICsgJC5tYXAoYXNBcnJheShlcnIudHlwZSksIGZ1bmN0aW9uKHR5cGUpIHsKICAgICAgICAgIHJldHVybiBlcnJDbGFzcyArICItIiArIHR5cGU7CiAgICAgICAgfSkuam9pbigiICIpOwogICAgICB9CiAgICAgIGVyckNsYXNzID0gZXJyQ2xhc3MgKyAiIGh0bWx3aWRnZXRzLWVycm9yIjsKCiAgICAgIC8vIElzIGVsIGlubGluZSBvciBibG9jaz8gSWYgaW5saW5lIG9yIGlubGluZS1ibG9jaywganVzdCBkaXNwbGF5Om5vbmUgaXQKICAgICAgLy8gYW5kIGFkZCBhbiBpbmxpbmUgZXJyb3IuCiAgICAgIHZhciBkaXNwbGF5ID0gJGVsLmNzcygiZGlzcGxheSIpOwogICAgICAkZWwuZGF0YSgicmVzdG9yZS1kaXNwbGF5LW1vZGUiLCBkaXNwbGF5KTsKCiAgICAgIGlmIChkaXNwbGF5ID09PSAiaW5saW5lIiB8fCBkaXNwbGF5ID09PSAiaW5saW5lLWJsb2NrIikgewogICAgICAgICRlbC5oaWRlKCk7CiAgICAgICAgaWYgKGVyci5tZXNzYWdlICE9PSAiIikgewogICAgICAgICAgdmFyIGVycm9yU3BhbiA9ICQoIjxzcGFuPiIpLmFkZENsYXNzKGVyckNsYXNzKTsKICAgICAgICAgIGVycm9yU3Bhbi50ZXh0KGVyci5tZXNzYWdlKTsKICAgICAgICAgICRlbC5hZnRlcihlcnJvclNwYW4pOwogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChkaXNwbGF5ID09PSAiYmxvY2siKSB7CiAgICAgICAgLy8gSWYgYmxvY2ssIGFkZCBhbiBlcnJvciBqdXN0IGFmdGVyIHRoZSBlbCwgc2V0IHZpc2liaWxpdHk6bm9uZSBvbiB0aGUKICAgICAgICAvLyBlbCwgYW5kIHBvc2l0aW9uIHRoZSBlcnJvciB0byBiZSBvbiB0b3Agb2YgdGhlIGVsLgogICAgICAgIC8vIE1hcmsgaXQgd2l0aCBhIHVuaXF1ZSBJRCBhbmQgQ1NTIGNsYXNzIHNvIHdlIGNhbiByZW1vdmUgaXQgbGF0ZXIuCiAgICAgICAgJGVsLmNzcygidmlzaWJpbGl0eSIsICJoaWRkZW4iKTsKICAgICAgICBpZiAoZXJyLm1lc3NhZ2UgIT09ICIiKSB7CiAgICAgICAgICB2YXIgZXJyb3JEaXYgPSAkKCI8ZGl2PiIpLmFkZENsYXNzKGVyckNsYXNzKS5jc3MoInBvc2l0aW9uIiwgImFic29sdXRlIikKICAgICAgICAgICAgLmNzcygidG9wIiwgZWwub2Zmc2V0VG9wKQogICAgICAgICAgICAuY3NzKCJsZWZ0IiwgZWwub2Zmc2V0TGVmdCkKICAgICAgICAgICAgLy8gc2V0dGluZyB3aWR0aCBjYW4gcHVzaCBvdXQgdGhlIHBhZ2Ugc2l6ZSwgZm9yY2luZyBvdGhlcndpc2UKICAgICAgICAgICAgLy8gdW5uZWNlc3Nhcnkgc2Nyb2xsYmFycyB0byBhcHBlYXIgYW5kIG1ha2luZyBpdCBpbXBvc3NpYmxlIGZvcgogICAgICAgICAgICAvLyB0aGUgZWxlbWVudCB0byBzaHJpbms7IHNvIHVzZSBtYXgtd2lkdGggaW5zdGVhZAogICAgICAgICAgICAuY3NzKCJtYXhXaWR0aCIsIGVsLm9mZnNldFdpZHRoKQogICAgICAgICAgICAuY3NzKCJoZWlnaHQiLCBlbC5vZmZzZXRIZWlnaHQpOwogICAgICAgICAgZXJyb3JEaXYudGV4dChlcnIubWVzc2FnZSk7CiAgICAgICAgICAkZWwuYWZ0ZXIoZXJyb3JEaXYpOwoKICAgICAgICAgIC8vIFJlYWxseSBkdW1iIHdheSB0byBrZWVwIHRoZSBzaXplL3Bvc2l0aW9uIG9mIHRoZSBlcnJvciBpbiBzeW5jIHdpdGgKICAgICAgICAgIC8vIHRoZSBwYXJlbnQgZWxlbWVudCBhcyB0aGUgd2luZG93IGlzIHJlc2l6ZWQgb3Igd2hhdGV2ZXIuCiAgICAgICAgICB2YXIgaW50SWQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKICAgICAgICAgICAgaWYgKCFlcnJvckRpdlswXS5wYXJlbnRFbGVtZW50KSB7CiAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRJZCk7CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVycm9yRGl2CiAgICAgICAgICAgICAgLmNzcygidG9wIiwgZWwub2Zmc2V0VG9wKQogICAgICAgICAgICAgIC5jc3MoImxlZnQiLCBlbC5vZmZzZXRMZWZ0KQogICAgICAgICAgICAgIC5jc3MoIm1heFdpZHRoIiwgZWwub2Zmc2V0V2lkdGgpCiAgICAgICAgICAgICAgLmNzcygiaGVpZ2h0IiwgZWwub2Zmc2V0SGVpZ2h0KTsKICAgICAgICAgIH0sIDUwMCk7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgY2xlYXJFcnJvcjogZnVuY3Rpb24oZWwpIHsKICAgICAgdmFyICRlbCA9ICQoZWwpOwogICAgICB2YXIgZGlzcGxheSA9ICRlbC5kYXRhKCJyZXN0b3JlLWRpc3BsYXktbW9kZSIpOwogICAgICAkZWwuZGF0YSgicmVzdG9yZS1kaXNwbGF5LW1vZGUiLCBudWxsKTsKCiAgICAgIGlmIChkaXNwbGF5ID09PSAiaW5saW5lIiB8fCBkaXNwbGF5ID09PSAiaW5saW5lLWJsb2NrIikgewogICAgICAgIGlmIChkaXNwbGF5KQogICAgICAgICAgJGVsLmNzcygiZGlzcGxheSIsIGRpc3BsYXkpOwogICAgICAgICQoZWwubmV4dFNpYmxpbmcpLmZpbHRlcigiLmh0bWx3aWRnZXRzLWVycm9yIikucmVtb3ZlKCk7CiAgICAgIH0gZWxzZSBpZiAoZGlzcGxheSA9PT0gImJsb2NrIil7CiAgICAgICAgJGVsLmNzcygidmlzaWJpbGl0eSIsICJpbmhlcml0Iik7CiAgICAgICAgJChlbC5uZXh0U2libGluZykuZmlsdGVyKCIuaHRtbHdpZGdldHMtZXJyb3IiKS5yZW1vdmUoKTsKICAgICAgfQogICAgfSwKICAgIHNpemluZzoge30KICB9OwoKICAvLyBDYWxsZWQgYnkgd2lkZ2V0IGJpbmRpbmdzIHRvIHJlZ2lzdGVyIGEgbmV3IHR5cGUgb2Ygd2lkZ2V0LiBUaGUgZGVmaW5pdGlvbgogIC8vIG9iamVjdCBjYW4gY29udGFpbiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CiAgLy8gLSBuYW1lIChyZXF1aXJlZCkgLSBBIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBiaW5kaW5nIG5hbWUsIHdoaWNoIHdpbGwgYmUKICAvLyAgIHVzZWQgYnkgZGVmYXVsdCBhcyB0aGUgQ1NTIGNsYXNzbmFtZSB0byBsb29rIGZvci4KICAvLyAtIGluaXRpYWxpemUgKG9wdGlvbmFsKSAtIEEgZnVuY3Rpb24oZWwpIHRoYXQgd2lsbCBiZSBjYWxsZWQgb25jZSBwZXIKICAvLyAgIHdpZGdldCBlbGVtZW50OyBpZiBhIHZhbHVlIGlzIHJldHVybmVkLCBpdCB3aWxsIGJlIHBhc3NlZCBhcyB0aGUgdGhpcmQKICAvLyAgIHZhbHVlIHRvIHJlbmRlclZhbHVlLgogIC8vIC0gcmVuZGVyVmFsdWUgKHJlcXVpcmVkKSAtIEEgZnVuY3Rpb24oZWwsIGRhdGEsIGluaXRWYWx1ZSkgdGhhdCB3aWxsIGJlCiAgLy8gICBjYWxsZWQgd2l0aCBkYXRhLiBTdGF0aWMgY29udGV4dHMgd2lsbCBjYXVzZSB0aGlzIHRvIGJlIGNhbGxlZCBvbmNlIHBlcgogIC8vICAgZWxlbWVudDsgU2hpbnkgYXBwcyB3aWxsIGNhdXNlIHRoaXMgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHBlcgogIC8vICAgZWxlbWVudCwgYXMgdGhlIGRhdGEgY2hhbmdlcy4KICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0ID0gZnVuY3Rpb24oZGVmaW5pdGlvbikgewogICAgaWYgKCFkZWZpbml0aW9uLm5hbWUpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJXaWRnZXQgbXVzdCBoYXZlIGEgbmFtZSIpOwogICAgfQogICAgaWYgKCFkZWZpbml0aW9uLnR5cGUpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJXaWRnZXQgbXVzdCBoYXZlIGEgdHlwZSIpOwogICAgfQogICAgLy8gQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCBvdXRwdXQgd2lkZ2V0cwogICAgaWYgKGRlZmluaXRpb24udHlwZSAhPT0gIm91dHB1dCIpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgd2lkZ2V0IHR5cGUgJyIgKyBkZWZpbml0aW9uLnR5cGUgKyAiJyIpOwogICAgfQogICAgLy8gVE9ETzogVmVyaWZ5IHRoYXQgLm5hbWUgaXMgYSB2YWxpZCBDU1MgY2xhc3NuYW1lCgogICAgLy8gU3VwcG9ydCBuZXctc3R5bGUgaW5zdGFuY2UtYm91bmQgZGVmaW5pdGlvbnMuIE9sZC1zdHlsZSBjbGFzcy1ib3VuZAogICAgLy8gZGVmaW5pdGlvbnMgaGF2ZSBvbmUgd2lkZ2V0ICJvYmplY3QiIHBlciB3aWRnZXQgcGVyIHR5cGUvY2xhc3Mgb2YKICAgIC8vIHdpZGdldDsgdGhlIHJlbmRlclZhbHVlIGFuZCByZXNpemUgbWV0aG9kcyBvbiBzdWNoIHdpZGdldCBvYmplY3RzCiAgICAvLyB0YWtlIGVsIGFuZCBpbnN0YW5jZSBhcmd1bWVudHMsIGJlY2F1c2UgdGhlIHdpZGdldCBvYmplY3QgY2FuJ3QKICAgIC8vIHN0b3JlIHRoZW0uIE5ldy1zdHlsZSBpbnN0YW5jZS1ib3VuZCBkZWZpbml0aW9ucyBoYXZlIG9uZSB3aWRnZXQKICAgIC8vIG9iamVjdCBwZXIgd2lkZ2V0IGluc3RhbmNlOyB0aGUgZGVmaW5pdGlvbiB0aGF0J3MgcGFzc2VkIGluIGRvZXNuJ3QKICAgIC8vIHByb3ZpZGUgcmVuZGVyVmFsdWUgb3IgcmVzaXplIG1ldGhvZHMgYXQgYWxsLCBqdXN0IHRoZSBzaW5nbGUgbWV0aG9kCiAgICAvLyAgIGZhY3RvcnkoZWwsIHdpZHRoLCBoZWlnaHQpCiAgICAvLyB3aGljaCByZXR1cm5zIGFuIG9iamVjdCB0aGF0IGhhcyByZW5kZXJWYWx1ZSh4KSBhbmQgcmVzaXplKHcsIGgpLgogICAgLy8gVGhpcyBlbmFibGVzIGEgZmFyIG1vcmUgbmF0dXJhbCBwcm9ncmFtbWluZyBzdHlsZSBmb3IgdGhlIHdpZGdldAogICAgLy8gYXV0aG9yLCB3aG8gY2FuIHN0b3JlIHBlci1pbnN0YW5jZSBzdGF0ZSB1c2luZyBlaXRoZXIgT08tc3R5bGUKICAgIC8vIGluc3RhbmNlIGZpZWxkcyBvciBmdW5jdGlvbmFsLXN0eWxlIGNsb3N1cmUgdmFyaWFibGVzIChJIGd1ZXNzIHRoaXMKICAgIC8vIGlzIGluIGNvbnRyYXN0IHRvIHdoYXQgY2FuIG9ubHkgYmUgY2FsbGVkIEMtc3R5bGUgcHNldWRvLU9PIHdoaWNoIGlzCiAgICAvLyB3aGF0IHdlIHJlcXVpcmVkIGJlZm9yZSkuCiAgICBpZiAoZGVmaW5pdGlvbi5mYWN0b3J5KSB7CiAgICAgIGRlZmluaXRpb24gPSBjcmVhdGVMZWdhY3lEZWZpbml0aW9uQWRhcHRlcihkZWZpbml0aW9uKTsKICAgIH0KCiAgICBpZiAoIWRlZmluaXRpb24ucmVuZGVyVmFsdWUpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJXaWRnZXQgbXVzdCBoYXZlIGEgcmVuZGVyVmFsdWUgZnVuY3Rpb24iKTsKICAgIH0KCiAgICAvLyBGb3Igc3RhdGljIHJlbmRlcmluZyAobm9uLVNoaW55KSwgdXNlIGEgc2ltcGxlIHdpZGdldCByZWdpc3RyYXRpb24KICAgIC8vIHNjaGVtZS4gV2UgYWxzbyB1c2UgdGhpcyBzY2hlbWUgZm9yIFNoaW55IGFwcHMvZG9jdW1lbnRzIHRoYXQgYWxzbwogICAgLy8gY29udGFpbiBzdGF0aWMgd2lkZ2V0cy4KICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzID0gd2luZG93LkhUTUxXaWRnZXRzLndpZGdldHMgfHwgW107CiAgICAvLyBNZXJnZSBkZWZhdWx0cyBpbnRvIHRoZSBkZWZpbml0aW9uOyBkb24ndCBtdXRhdGUgdGhlIG9yaWdpbmFsIGRlZmluaXRpb24uCiAgICB2YXIgc3RhdGljQmluZGluZyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMsIGRlZmluaXRpb24pOwogICAgb3ZlcnJpZGVNZXRob2Qoc3RhdGljQmluZGluZywgImZpbmQiLCBmdW5jdGlvbihzdXBlcmZ1bmMpIHsKICAgICAgcmV0dXJuIGZ1bmN0aW9uKHNjb3BlKSB7CiAgICAgICAgdmFyIHJlc3VsdHMgPSBzdXBlcmZ1bmMoc2NvcGUpOwogICAgICAgIC8vIEZpbHRlciBvdXQgU2hpbnkgb3V0cHV0cywgd2Ugb25seSB3YW50IHRoZSBzdGF0aWMga2luZAogICAgICAgIHJldHVybiBmaWx0ZXJCeUNsYXNzKHJlc3VsdHMsICJodG1sLXdpZGdldC1vdXRwdXQiLCBmYWxzZSk7CiAgICAgIH07CiAgICB9KTsKICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzLnB1c2goc3RhdGljQmluZGluZyk7CgogICAgaWYgKHNoaW55TW9kZSkgewogICAgICAvLyBTaGlueSBpcyBydW5uaW5nLiBSZWdpc3RlciB0aGUgZGVmaW5pdGlvbiB3aXRoIGFuIG91dHB1dCBiaW5kaW5nLgogICAgICAvLyBUaGUgZGVmaW5pdGlvbiBpdHNlbGYgd2lsbCBub3QgYmUgdGhlIG91dHB1dCBiaW5kaW5nLCBpbnN0ZWFkCiAgICAgIC8vIHdlIHdpbGwgbWFrZSBhbiBvdXRwdXQgYmluZGluZyBvYmplY3QgdGhhdCBkZWxlZ2F0ZXMgdG8gdGhlCiAgICAgIC8vIGRlZmluaXRpb24uIFRoaXMgaXMgYmVjYXVzZSB3ZSBmb29saXNobHkgdXNlZCB0aGUgc2FtZSBtZXRob2QKICAgICAgLy8gbmFtZSAocmVuZGVyVmFsdWUpIGZvciBodG1sd2lkZ2V0cyBkZWZpbml0aW9uIGFuZCBTaGlueSBiaW5kaW5ncwogICAgICAvLyBidXQgdGhleSBhY3R1YWxseSBoYXZlIHF1aXRlIGRpZmZlcmVudCBzZW1hbnRpY3MgKHRoZSBTaGlueQogICAgICAvLyBiaW5kaW5ncyByZWNlaXZlIGRhdGEgdGhhdCBpbmNsdWRlcyBsb3RzIG9mIG1ldGFkYXRhIHRoYXQgaXQKICAgICAgLy8gc3RyaXBzIG9mZiBiZWZvcmUgY2FsbGluZyBodG1sd2lkZ2V0cyByZW5kZXJWYWx1ZSkuIFdlIGNhbid0CiAgICAgIC8vIGp1c3QgaWdub3JlIHRoZSBkaWZmZXJlbmNlIGJlY2F1c2UgaW4gc29tZSB3aWRnZXRzIGl0J3MgaGVscGZ1bAogICAgICAvLyB0byBjYWxsIHRoaXMucmVuZGVyVmFsdWUoKSBmcm9tIGluc2lkZSBvZiByZXNpemUoKSwgYW5kIGlmCiAgICAgIC8vIHdlJ3JlIG5vdCBkZWxlZ2F0aW5nLCB0aGVuIHRoYXQgY2FsbCB3aWxsIGdvIHRvIHRoZSBTaGlueQogICAgICAvLyB2ZXJzaW9uIGluc3RlYWQgb2YgdGhlIGh0bWx3aWRnZXRzIHZlcnNpb24uCgogICAgICAvLyBNZXJnZSBkZWZhdWx0cyB3aXRoIGRlZmluaXRpb24sIHdpdGhvdXQgbXV0YXRpbmcgZWl0aGVyLgogICAgICB2YXIgYmluZGluZ0RlZiA9IGV4dGVuZCh7fSwgZGVmYXVsdHMsIGRlZmluaXRpb24pOwoKICAgICAgLy8gVGhpcyBvYmplY3Qgd2lsbCBiZSBvdXIgYWN0dWFsIFNoaW55IGJpbmRpbmcuCiAgICAgIHZhciBzaGlueUJpbmRpbmcgPSBuZXcgU2hpbnkuT3V0cHV0QmluZGluZygpOwoKICAgICAgLy8gV2l0aCBhIGZldyBleGNlcHRpb25zLCB3ZSdsbCB3YW50IHRvIHNpbXBseSB1c2UgdGhlIGJpbmRpbmdEZWYncwogICAgICAvLyB2ZXJzaW9uIG9mIG1ldGhvZHMgaWYgdGhleSBhcmUgYXZhaWxhYmxlLCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvCiAgICAgIC8vIFNoaW55J3MgZGVmYXVsdHMuIE5PVEU6IElmIFNoaW55J3Mgb3V0cHV0IGJpbmRpbmdzIGdhaW4gYWRkaXRpb25hbAogICAgICAvLyBtZXRob2RzIGluIHRoZSBmdXR1cmUsIGFuZCB3ZSB3YW50IHRoZW0gdG8gYmUgb3ZlcnJpZGVhYmxlIGJ5CiAgICAgIC8vIEhUTUxXaWRnZXQgYmluZGluZyBkZWZpbml0aW9ucywgdGhlbiB3ZSdsbCBuZWVkIHRvIGFkZCB0aGVtIHRvIHRoaXMKICAgICAgLy8gbGlzdC4KICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAiZ2V0SWQiKTsKICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAib25WYWx1ZUNoYW5nZSIpOwogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJvblZhbHVlRXJyb3IiKTsKICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAicmVuZGVyRXJyb3IiKTsKICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAiY2xlYXJFcnJvciIpOwogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJzaG93UHJvZ3Jlc3MiKTsKCiAgICAgIC8vIFRoZSBmaW5kLCByZW5kZXJWYWx1ZSwgYW5kIHJlc2l6ZSBhcmUgaGFuZGxlZCBkaWZmZXJlbnRseSwgYmVjYXVzZSB3ZQogICAgICAvLyB3YW50IHRvIGFjdHVhbGx5IGRlY29yYXRlIHRoZSBiZWhhdmlvciBvZiB0aGUgYmluZGluZ0RlZiBtZXRob2RzLgoKICAgICAgc2hpbnlCaW5kaW5nLmZpbmQgPSBmdW5jdGlvbihzY29wZSkgewogICAgICAgIHZhciByZXN1bHRzID0gYmluZGluZ0RlZi5maW5kKHNjb3BlKTsKCiAgICAgICAgLy8gT25seSByZXR1cm4gZWxlbWVudHMgdGhhdCBhcmUgU2hpbnkgb3V0cHV0cywgbm90IHN0YXRpYyBvbmVzCiAgICAgICAgdmFyIGR5bmFtaWNSZXN1bHRzID0gcmVzdWx0cy5maWx0ZXIoIi5odG1sLXdpZGdldC1vdXRwdXQiKTsKCiAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHdoYXRldmVyIGNhdXNlZCBTaGlueSB0byB0aGluayB0aGVyZSBtaWdodCBiZQogICAgICAgIC8vIG5ldyBkeW5hbWljIG91dHB1dHMsIGFsc28gY2F1c2VkIHRoZXJlIHRvIGJlIG5ldyBzdGF0aWMgb3V0cHV0cy4KICAgICAgICAvLyBTaW5jZSB0aGVyZSBtaWdodCBiZSBsb3RzIG9mIGRpZmZlcmVudCBodG1sd2lkZ2V0cyBiaW5kaW5ncywgd2UKICAgICAgICAvLyBzY2hlZHVsZSBleGVjdXRpb24gZm9yIGxhdGVyLS1ubyBuZWVkIHRvIHN0YXRpY1JlbmRlciBtdWx0aXBsZQogICAgICAgIC8vIHRpbWVzLgogICAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCAhPT0gZHluYW1pY1Jlc3VsdHMubGVuZ3RoKQogICAgICAgICAgc2NoZWR1bGVTdGF0aWNSZW5kZXIoKTsKCiAgICAgICAgcmV0dXJuIGR5bmFtaWNSZXN1bHRzOwogICAgICB9OwoKICAgICAgLy8gV3JhcCByZW5kZXJWYWx1ZSB0byBoYW5kbGUgaW5pdGlhbGl6YXRpb24sIHdoaWNoIHVuZm9ydHVuYXRlbHkgaXNuJ3QKICAgICAgLy8gc3VwcG9ydGVkIG5hdGl2ZWx5IGJ5IFNoaW55IGF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZy4KCiAgICAgIHNoaW55QmluZGluZy5yZW5kZXJWYWx1ZSA9IGZ1bmN0aW9uKGVsLCBkYXRhKSB7CiAgICAgICAgU2hpbnkucmVuZGVyRGVwZW5kZW5jaWVzKGRhdGEuZGVwcyk7CiAgICAgICAgLy8gUmVzb2x2ZSBzdHJpbmdzIG1hcmtlZCBhcyBqYXZhc2NyaXB0IGxpdGVyYWxzIHRvIG9iamVjdHMKICAgICAgICBpZiAoIShkYXRhLmV2YWxzIGluc3RhbmNlb2YgQXJyYXkpKSBkYXRhLmV2YWxzID0gW2RhdGEuZXZhbHNdOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBkYXRhLmV2YWxzICYmIGkgPCBkYXRhLmV2YWxzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB3aW5kb3cuSFRNTFdpZGdldHMuZXZhbHVhdGVTdHJpbmdNZW1iZXIoZGF0YS54LCBkYXRhLmV2YWxzW2ldKTsKICAgICAgICB9CiAgICAgICAgaWYgKCFiaW5kaW5nRGVmLnJlbmRlck9uTnVsbFZhbHVlKSB7CiAgICAgICAgICBpZiAoZGF0YS54ID09PSBudWxsKSB7CiAgICAgICAgICAgIGVsLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZWwuc3R5bGUudmlzaWJpbGl0eSA9ICJpbmhlcml0IjsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCFlbGVtZW50RGF0YShlbCwgImluaXRpYWxpemVkIikpIHsKICAgICAgICAgIGluaXRTaXppbmcoZWwpOwoKICAgICAgICAgIGVsZW1lbnREYXRhKGVsLCAiaW5pdGlhbGl6ZWQiLCB0cnVlKTsKICAgICAgICAgIGlmIChiaW5kaW5nRGVmLmluaXRpYWxpemUpIHsKICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGJpbmRpbmdEZWYuaW5pdGlhbGl6ZShlbCwgZWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgICAgZWwub2Zmc2V0SGVpZ2h0KTsKICAgICAgICAgICAgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIsIHJlc3VsdCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGJpbmRpbmdEZWYucmVuZGVyVmFsdWUoZWwsIGRhdGEueCwgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpKTsKICAgICAgICBldmFsQW5kUnVuKGRhdGEuanNIb29rcy5yZW5kZXIsIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiKSwgW2VsLCBkYXRhLnhdKTsKICAgICAgfTsKCiAgICAgIC8vIE9ubHkgb3ZlcnJpZGUgcmVzaXplIGlmIGJpbmRpbmdEZWYgaW1wbGVtZW50cyBpdAogICAgICBpZiAoYmluZGluZ0RlZi5yZXNpemUpIHsKICAgICAgICBzaGlueUJpbmRpbmcucmVzaXplID0gZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQpIHsKICAgICAgICAgIC8vIFNoaW55IGNhbiBjYWxsIHJlc2l6ZSBiZWZvcmUgaW5pdGlhbGl6ZS9yZW5kZXJWYWx1ZSBoYXZlIGJlZW4KICAgICAgICAgIC8vIGNhbGxlZCwgd2hpY2ggZG9lc24ndCBtYWtlIHNlbnNlIGZvciB3aWRnZXRzLgogICAgICAgICAgaWYgKGVsZW1lbnREYXRhKGVsLCAiaW5pdGlhbGl6ZWQiKSkgewogICAgICAgICAgICBiaW5kaW5nRGVmLnJlc2l6ZShlbCwgd2lkdGgsIGhlaWdodCwgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpKTsKICAgICAgICAgIH0KICAgICAgICB9OwogICAgICB9CgogICAgICBTaGlueS5vdXRwdXRCaW5kaW5ncy5yZWdpc3RlcihzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYubmFtZSk7CiAgICB9CiAgfTsKCiAgdmFyIHNjaGVkdWxlU3RhdGljUmVuZGVyVGltZXJJZCA9IG51bGw7CiAgZnVuY3Rpb24gc2NoZWR1bGVTdGF0aWNSZW5kZXIoKSB7CiAgICBpZiAoIXNjaGVkdWxlU3RhdGljUmVuZGVyVGltZXJJZCkgewogICAgICBzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgIHNjaGVkdWxlU3RhdGljUmVuZGVyVGltZXJJZCA9IG51bGw7CiAgICAgICAgd2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlcigpOwogICAgICB9LCAxKTsKICAgIH0KICB9CgogIC8vIFJlbmRlciBzdGF0aWMgd2lkZ2V0cyBhZnRlciB0aGUgZG9jdW1lbnQgZmluaXNoZXMgbG9hZGluZwogIC8vIFN0YXRpY2FsbHkgcmVuZGVyIGFsbCBlbGVtZW50cyB0aGF0IGFyZSBvZiB0aGlzIHdpZGdldCdzIGNsYXNzCiAgd2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlciA9IGZ1bmN0aW9uKCkgewogICAgdmFyIGJpbmRpbmdzID0gd2luZG93LkhUTUxXaWRnZXRzLndpZGdldHMgfHwgW107CiAgICBmb3JFYWNoKGJpbmRpbmdzLCBmdW5jdGlvbihiaW5kaW5nKSB7CiAgICAgIHZhciBtYXRjaGVzID0gYmluZGluZy5maW5kKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7CiAgICAgIGZvckVhY2gobWF0Y2hlcywgZnVuY3Rpb24oZWwpIHsKICAgICAgICB2YXIgc2l6ZU9iaiA9IGluaXRTaXppbmcoZWwsIGJpbmRpbmcpOwoKICAgICAgICBpZiAoaGFzQ2xhc3MoZWwsICJodG1sLXdpZGdldC1zdGF0aWMtYm91bmQiKSkKICAgICAgICAgIHJldHVybjsKICAgICAgICBlbC5jbGFzc05hbWUgPSBlbC5jbGFzc05hbWUgKyAiIGh0bWwtd2lkZ2V0LXN0YXRpYy1ib3VuZCI7CgogICAgICAgIHZhciBpbml0UmVzdWx0OwogICAgICAgIGlmIChiaW5kaW5nLmluaXRpYWxpemUpIHsKICAgICAgICAgIGluaXRSZXN1bHQgPSBiaW5kaW5nLmluaXRpYWxpemUoZWwsCiAgICAgICAgICAgIHNpemVPYmogPyBzaXplT2JqLmdldFdpZHRoKCkgOiBlbC5vZmZzZXRXaWR0aCwKICAgICAgICAgICAgc2l6ZU9iaiA\/IHNpemVPYmouZ2V0SGVpZ2h0KCkgOiBlbC5vZmZzZXRIZWlnaHQKICAgICAgICAgICk7CiAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiwgaW5pdFJlc3VsdCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoYmluZGluZy5yZXNpemUpIHsKICAgICAgICAgIHZhciBsYXN0U2l6ZSA9IHsKICAgICAgICAgICAgdzogc2l6ZU9iaiA\/IHNpemVPYmouZ2V0V2lkdGgoKSA6IGVsLm9mZnNldFdpZHRoLAogICAgICAgICAgICBoOiBzaXplT2JqID8gc2l6ZU9iai5nZXRIZWlnaHQoKSA6IGVsLm9mZnNldEhlaWdodAogICAgICAgICAgfTsKICAgICAgICAgIHZhciByZXNpemVIYW5kbGVyID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgc2l6ZSA9IHsKICAgICAgICAgICAgICB3OiBzaXplT2JqID8gc2l6ZU9iai5nZXRXaWR0aCgpIDogZWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgICAgaDogc2l6ZU9iaiA\/IHNpemVPYmouZ2V0SGVpZ2h0KCkgOiBlbC5vZmZzZXRIZWlnaHQKICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKHNpemUudyA9PT0gMCAmJiBzaXplLmggPT09IDApCiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICBpZiAoc2l6ZS53ID09PSBsYXN0U2l6ZS53ICYmIHNpemUuaCA9PT0gbGFzdFNpemUuaCkKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIGxhc3RTaXplID0gc2l6ZTsKICAgICAgICAgICAgYmluZGluZy5yZXNpemUoZWwsIHNpemUudywgc2l6ZS5oLCBpbml0UmVzdWx0KTsKICAgICAgICAgIH07CgogICAgICAgICAgb24od2luZG93LCAicmVzaXplIiwgcmVzaXplSGFuZGxlcik7CgogICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgZm9yIGNhc2VzIHdoZXJlIHdlJ3JlIHJ1bm5pbmcgaW4gYSBTaGlueQogICAgICAgICAgLy8gYXBwLCBidXQgdGhlIHdpZGdldCBpdHNlbGYgaXMgbm90IGEgU2hpbnkgb3V0cHV0LCBidXQKICAgICAgICAgIC8vIHJhdGhlciBhIHNpbXBsZSBzdGF0aWMgd2lkZ2V0LiBPbmUgZXhhbXBsZSBvZiB0aGlzIGlzCiAgICAgICAgICAvLyBhbiBybWFya2Rvd24gZG9jdW1lbnQgdGhhdCBoYXMgcnVudGltZTpzaGlueSBhbmQgd2lkZ2V0CiAgICAgICAgICAvLyB0aGF0IGlzbid0IGluIGEgcmVuZGVyIGZ1bmN0aW9uLiBTaGlueSBvbmx5IGtub3dzIHRvCiAgICAgICAgICAvLyBjYWxsIHJlc2l6ZSBoYW5kbGVycyBmb3IgU2hpbnkgb3V0cHV0cywgbm90IGZvciBzdGF0aWMKICAgICAgICAgIC8vIHdpZGdldHMsIHNvIHdlIGRvIGl0IG91cnNlbHZlcy4KICAgICAgICAgIGlmICh3aW5kb3cualF1ZXJ5KSB7CiAgICAgICAgICAgIHdpbmRvdy5qUXVlcnkoZG9jdW1lbnQpLm9uKAogICAgICAgICAgICAgICJzaG93bi5odG1sd2lkZ2V0cyBzaG93bi5icy50YWIuaHRtbHdpZGdldHMgc2hvd24uYnMuY29sbGFwc2UuaHRtbHdpZGdldHMiLAogICAgICAgICAgICAgIHJlc2l6ZUhhbmRsZXIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgd2luZG93LmpRdWVyeShkb2N1bWVudCkub24oCiAgICAgICAgICAgICAgImhpZGRlbi5odG1sd2lkZ2V0cyBoaWRkZW4uYnMudGFiLmh0bWx3aWRnZXRzIGhpZGRlbi5icy5jb2xsYXBzZS5odG1sd2lkZ2V0cyIsCiAgICAgICAgICAgICAgcmVzaXplSGFuZGxlcgogICAgICAgICAgICApOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGZvciB0aGUgc3BlY2lmaWMgY2FzZSBvZiBpb3NsaWRlcywgd2hpY2gKICAgICAgICAgIC8vIGZsaXBzIHNsaWRlcyBiZXR3ZWVuIGRpc3BsYXk6bm9uZSBhbmQgZGlzcGxheTpibG9jay4KICAgICAgICAgIC8vIElkZWFsbHkgd2Ugd291bGQgbm90IGhhdmUgdG8gaGF2ZSBpb3NsaWRlLXNwZWNpZmljIGNvZGUKICAgICAgICAgIC8vIGhlcmUsIGJ1dCByYXRoZXIgaGF2ZSBpb3NsaWRlcyByYWlzZSBhIGdlbmVyaWMgZXZlbnQsCiAgICAgICAgICAvLyBidXQgdGhlIHJtYXJrZG93biBwYWNrYWdlIGp1c3Qgd2VudCB0byBDUkFOIHNvIHRoZQogICAgICAgICAgLy8gd2luZG93IHRvIGdldHRpbmcgdGhhdCBmaXhlZCBtYXkgYmUgbG9uZy4KICAgICAgICAgIGlmICh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcikgewogICAgICAgICAgICAvLyBJdCdzIE9LIHRvIGxpbWl0IHRoaXMgdG8gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIKICAgICAgICAgICAgLy8gYnJvd3NlcnMgYmVjYXVzZSBpb3NsaWRlcyBpdHNlbGYgb25seSBzdXBwb3J0cwogICAgICAgICAgICAvLyBzdWNoIGJyb3dzZXJzLgogICAgICAgICAgICBvbihkb2N1bWVudCwgInNsaWRlZW50ZXIiLCByZXNpemVIYW5kbGVyKTsKICAgICAgICAgICAgb24oZG9jdW1lbnQsICJzbGlkZWxlYXZlIiwgcmVzaXplSGFuZGxlcik7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB2YXIgc2NyaXB0RGF0YSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNjcmlwdFtkYXRhLWZvcj0nIiArIGVsLmlkICsgIiddW3R5cGU9J2FwcGxpY2F0aW9uL2pzb24nXSIpOwogICAgICAgIGlmIChzY3JpcHREYXRhKSB7CiAgICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc2NyaXB0RGF0YS50ZXh0Q29udGVudCB8fCBzY3JpcHREYXRhLnRleHQpOwogICAgICAgICAgLy8gUmVzb2x2ZSBzdHJpbmdzIG1hcmtlZCBhcyBqYXZhc2NyaXB0IGxpdGVyYWxzIHRvIG9iamVjdHMKICAgICAgICAgIGlmICghKGRhdGEuZXZhbHMgaW5zdGFuY2VvZiBBcnJheSkpIGRhdGEuZXZhbHMgPSBbZGF0YS5ldmFsc107CiAgICAgICAgICBmb3IgKHZhciBrID0gMDsgZGF0YS5ldmFscyAmJiBrIDwgZGF0YS5ldmFscy5sZW5ndGg7IGsrKykgewogICAgICAgICAgICB3aW5kb3cuSFRNTFdpZGdldHMuZXZhbHVhdGVTdHJpbmdNZW1iZXIoZGF0YS54LCBkYXRhLmV2YWxzW2tdKTsKICAgICAgICAgIH0KICAgICAgICAgIGJpbmRpbmcucmVuZGVyVmFsdWUoZWwsIGRhdGEueCwgaW5pdFJlc3VsdCk7CiAgICAgICAgICBldmFsQW5kUnVuKGRhdGEuanNIb29rcy5yZW5kZXIsIGluaXRSZXN1bHQsIFtlbCwgZGF0YS54XSk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0pOwoKICAgIGludm9rZVBvc3RSZW5kZXJIYW5kbGVycygpOwogIH0KCgogIGZ1bmN0aW9uIGhhc19qUXVlcnkzKCkgewogICAgaWYgKCF3aW5kb3cualF1ZXJ5KSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIHZhciAkdmVyc2lvbiA9IHdpbmRvdy5qUXVlcnkuZm4uanF1ZXJ5OwogICAgdmFyICRtYWpvcl92ZXJzaW9uID0gcGFyc2VJbnQoJHZlcnNpb24uc3BsaXQoIi4iKVswXSk7CiAgICByZXR1cm4gJG1ham9yX3ZlcnNpb24gPj0gMzsKICB9CgogIC8qCiAgLyBTaGlueSAxLjQgYnVtcGVkIGpRdWVyeSBmcm9tIDEueCB0byAzLnggd2hpY2ggbWVhbnMgalF1ZXJ5J3MKICAvIG9uLXJlYWR5IGhhbmRsZXIgKGkuZS4sICQoZm4pKSBpcyBub3cgYXN5bmNyb25vdXMgKGkuZS4sIGl0IG5vdwogIC8gcmVhbGx5IG1lYW5zICQoc2V0VGltZW91dChmbikpLgogIC8gaHR0cHM6Ly9qcXVlcnkuY29tL3VwZ3JhZGUtZ3VpZGUvMy4wLyNicmVha2luZy1jaGFuZ2UtZG9jdW1lbnQtcmVhZHktaGFuZGxlcnMtYXJlLW5vdy1hc3luY2hyb25vdXMKICAvCiAgLyBTaW5jZSBTaGlueSB1c2VzICQoKSB0byBzY2hlZHVsZSBpbml0U2hpbnksIHNoaW55Pj0xLjQgY2FsbHMgaW5pdFNoaW55CiAgLyBvbmUgdGljayBsYXRlciB0aGFuIGl0IGRpZCBiZWZvcmUsIHdoaWNoIG1lYW5zIHN0YXRpY1JlbmRlcigpIGlzCiAgLyBjYWxsZWQgcmVuZGVyVmFsdWUoKSBlYXJsaWVyIHRoYW4gKGFkdmFuY2VkKSB3aWRnZXQgYXV0aG9ycyBtaWdodCBiZSBleHBlY3RpbmcuCiAgLyBodHRwczovL2dpdGh1Yi5jb20vcnN0dWRpby9zaGlueS9pc3N1ZXMvMjYzMAogIC8KICAvIEZvciBhIGNvbmNyZXRlIGV4YW1wbGUsIGxlYWZsZXQgaGFzIHNvbWUgbWV0aG9kcyAoZS5nLiwgdXBkYXRlQm91bmRzKQogIC8gd2hpY2ggcmVmZXJlbmNlIFNoaW55IG1ldGhvZHMgcmVnaXN0ZXJlZCBpbiBpbml0U2hpbnkgKGUuZy4sIHNldElucHV0VmFsdWUpLgogIC8gU2luY2UgbGVhZmxldCBpcyBwcml2eSB0byB0aGlzIGxpZmUtY3ljbGUsIGl0IGtub3dzIHRvIHVzZSBzZXRUaW1lb3V0KCkgdG8KICAvIGRlbGF5IGV4ZWN1dGlvbiBvZiB0aG9zZSBtZXRob2RzICh1bnRpbCBTaGlueSBtZXRob2RzIGFyZSByZWFkeSkKICAvIGh0dHBzOi8vZ2l0aHViLmNvbS9yc3R1ZGlvL2xlYWZsZXQvYmxvYi8xOGVjOTgxL2phdmFzY3JpcHQvc3JjL2luZGV4LmpzI0wyNjYtTDI2OAogIC8KICAvIElkZWFsbHkgd2lkZ2V0IGF1dGhvcnMgd291bGRuJ3QgbmVlZCB0byB1c2UgdGhpcyBzZXRUaW1lb3V0KCkgaGFjayB0aGF0CiAgLyBsZWFmbGV0IHVzZXMgdG8gY2FsbCBTaGlueSBtZXRob2RzIG9uIGEgc3RhdGljUmVuZGVyKCkuIEluIHRoZSBsb25nIHJ1biwKICAvIHRoZSBsb2dpYyBpbml0U2hpbnkgc2hvdWxkIGJlIGJyb2tlbiB1cCBzbyB0aGF0IG1ldGhvZCByZWdpc3RyYXRpb24gaGFwcGVucwogIC8gcmlnaHQgYXdheSwgYnV0IGJpbmRpbmcgaGFwcGVucyBsYXRlci4KICAqLwogIGZ1bmN0aW9uIG1heWJlU3RhdGljUmVuZGVyTGF0ZXIoKSB7CiAgICBpZiAoc2hpbnlNb2RlICYmIGhhc19qUXVlcnkzKCkpIHsKICAgICAgd2luZG93LmpRdWVyeSh3aW5kb3cuSFRNTFdpZGdldHMuc3RhdGljUmVuZGVyKTsKICAgIH0gZWxzZSB7CiAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIoKTsKICAgIH0KICB9CgogIGlmIChkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZnVuY3Rpb24oKSB7CiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBhcmd1bWVudHMuY2FsbGVlLCBmYWxzZSk7CiAgICAgIG1heWJlU3RhdGljUmVuZGVyTGF0ZXIoKTsKICAgIH0sIGZhbHNlKTsKICB9IGVsc2UgaWYgKGRvY3VtZW50LmF0dGFjaEV2ZW50KSB7CiAgICBkb2N1bWVudC5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIiwgZnVuY3Rpb24oKSB7CiAgICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAiY29tcGxldGUiKSB7CiAgICAgICAgZG9jdW1lbnQuZGV0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsIGFyZ3VtZW50cy5jYWxsZWUpOwogICAgICAgIG1heWJlU3RhdGljUmVuZGVyTGF0ZXIoKTsKICAgICAgfQogICAgfSk7CiAgfQoKCiAgd2luZG93LkhUTUxXaWRnZXRzLmdldEF0dGFjaG1lbnRVcmwgPSBmdW5jdGlvbihkZXBuYW1lLCBrZXkpIHsKICAgIC8vIElmIG5vIGtleSwgZGVmYXVsdCB0byB0aGUgZmlyc3QgaXRlbQogICAgaWYgKHR5cGVvZihrZXkpID09PSAidW5kZWZpbmVkIikKICAgICAga2V5ID0gMTsKCiAgICB2YXIgbGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRlcG5hbWUgKyAiLSIgKyBrZXkgKyAiLWF0dGFjaG1lbnQiKTsKICAgIGlmICghbGluaykgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIkF0dGFjaG1lbnQgIiArIGRlcG5hbWUgKyAiLyIgKyBrZXkgKyAiIG5vdCBmb3VuZCBpbiBkb2N1bWVudCIpOwogICAgfQogICAgcmV0dXJuIGxpbmsuZ2V0QXR0cmlidXRlKCJocmVmIik7CiAgfTsKCiAgd2luZG93LkhUTUxXaWRnZXRzLmRhdGFmcmFtZVRvRDMgPSBmdW5jdGlvbihkZikgewogICAgdmFyIG5hbWVzID0gW107CiAgICB2YXIgbGVuZ3RoOwogICAgZm9yICh2YXIgbmFtZSBpbiBkZikgewogICAgICAgIGlmIChkZi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkKICAgICAgICAgICAgbmFtZXMucHVzaChuYW1lKTsKICAgICAgICBpZiAodHlwZW9mKGRmW25hbWVdKSAhPT0gIm9iamVjdCIgfHwgdHlwZW9mKGRmW25hbWVdLmxlbmd0aCkgPT09ICJ1bmRlZmluZWQiKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQWxsIGZpZWxkcyBtdXN0IGJlIGFycmF5cyIpOwogICAgICAgIH0gZWxzZSBpZiAodHlwZW9mKGxlbmd0aCkgIT09ICJ1bmRlZmluZWQiICYmIGxlbmd0aCAhPT0gZGZbbmFtZV0ubGVuZ3RoKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQWxsIGZpZWxkcyBtdXN0IGJlIGFycmF5cyBvZiB0aGUgc2FtZSBsZW5ndGgiKTsKICAgICAgICB9CiAgICAgICAgbGVuZ3RoID0gZGZbbmFtZV0ubGVuZ3RoOwogICAgfQogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIHZhciBpdGVtOwogICAgZm9yICh2YXIgcm93ID0gMDsgcm93IDwgbGVuZ3RoOyByb3crKykgewogICAgICAgIGl0ZW0gPSB7fTsKICAgICAgICBmb3IgKHZhciBjb2wgPSAwOyBjb2wgPCBuYW1lcy5sZW5ndGg7IGNvbCsrKSB7CiAgICAgICAgICAgIGl0ZW1bbmFtZXNbY29sXV0gPSBkZltuYW1lc1tjb2xdXVtyb3ddOwogICAgICAgIH0KICAgICAgICByZXN1bHRzLnB1c2goaXRlbSk7CiAgICB9CiAgICByZXR1cm4gcmVzdWx0czsKICB9OwoKICB3aW5kb3cuSFRNTFdpZGdldHMudHJhbnNwb3NlQXJyYXkyRCA9IGZ1bmN0aW9uKGFycmF5KSB7CiAgICAgIGlmIChhcnJheS5sZW5ndGggPT09IDApIHJldHVybiBhcnJheTsKICAgICAgdmFyIG5ld0FycmF5ID0gYXJyYXlbMF0ubWFwKGZ1bmN0aW9uKGNvbCwgaSkgewogICAgICAgICAgcmV0dXJuIGFycmF5Lm1hcChmdW5jdGlvbihyb3cpIHsKICAgICAgICAgICAgICByZXR1cm4gcm93W2ldCiAgICAgICAgICB9KQogICAgICB9KTsKICAgICAgcmV0dXJuIG5ld0FycmF5OwogIH07CiAgLy8gU3BsaXQgdmFsdWUgYXQgc3BsaXRDaGFyLCBidXQgYWxsb3cgc3BsaXRDaGFyIHRvIGJlIGVzY2FwZWQKICAvLyB1c2luZyBlc2NhcGVDaGFyLiBBbnkgb3RoZXIgY2hhcmFjdGVycyBlc2NhcGVkIGJ5IGVzY2FwZUNoYXIKICAvLyB3aWxsIGJlIGluY2x1ZGVkIGFzIHVzdWFsIChpbmNsdWRpbmcgZXNjYXBlQ2hhciBpdHNlbGYpLgogIGZ1bmN0aW9uIHNwbGl0V2l0aEVzY2FwZSh2YWx1ZSwgc3BsaXRDaGFyLCBlc2NhcGVDaGFyKSB7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgdmFyIGVzY2FwZU1vZGUgPSBmYWxzZTsKICAgIHZhciBjdXJyZW50UmVzdWx0ID0gIiI7CiAgICBmb3IgKHZhciBwb3MgPSAwOyBwb3MgPCB2YWx1ZS5sZW5ndGg7IHBvcysrKSB7CiAgICAgIGlmICghZXNjYXBlTW9kZSkgewogICAgICAgIGlmICh2YWx1ZVtwb3NdID09PSBzcGxpdENoYXIpIHsKICAgICAgICAgIHJlc3VsdHMucHVzaChjdXJyZW50UmVzdWx0KTsKICAgICAgICAgIGN1cnJlbnRSZXN1bHQgPSAiIjsKICAgICAgICB9IGVsc2UgaWYgKHZhbHVlW3Bvc10gPT09IGVzY2FwZUNoYXIpIHsKICAgICAgICAgIGVzY2FwZU1vZGUgPSB0cnVlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBjdXJyZW50UmVzdWx0ICs9IHZhbHVlW3Bvc107CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGN1cnJlbnRSZXN1bHQgKz0gdmFsdWVbcG9zXTsKICAgICAgICBlc2NhcGVNb2RlID0gZmFsc2U7CiAgICAgIH0KICAgIH0KICAgIGlmIChjdXJyZW50UmVzdWx0ICE9PSAiIikgewogICAgICByZXN1bHRzLnB1c2goY3VycmVudFJlc3VsdCk7CiAgICB9CiAgICByZXR1cm4gcmVzdWx0czsKICB9CiAgLy8gRnVuY3Rpb24gYXV0aG9yZWQgYnkgWWlodWkvSkogQWxsYWlyZQogIHdpbmRvdy5IVE1MV2lkZ2V0cy5ldmFsdWF0ZVN0cmluZ01lbWJlciA9IGZ1bmN0aW9uKG8sIG1lbWJlcikgewogICAgdmFyIHBhcnRzID0gc3BsaXRXaXRoRXNjYXBlKG1lbWJlciwgJy4nLCAnXFwnKTsKICAgIGZvciAodmFyIGkgPSAwLCBsID0gcGFydHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CiAgICAgIHZhciBwYXJ0ID0gcGFydHNbaV07CiAgICAgIC8vIHBhcnQgbWF5IGJlIGEgY2hhcmFjdGVyIG9yICdudW1lcmljJyBtZW1iZXIgbmFtZQogICAgICBpZiAobyAhPT0gbnVsbCAmJiB0eXBlb2YgbyA9PT0gIm9iamVjdCIgJiYgcGFydCBpbiBvKSB7CiAgICAgICAgaWYgKGkgPT0gKGwgLSAxKSkgeyAvLyBpZiB3ZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgbGluZSB0aGVuIGV2YWx1bGF0ZQogICAgICAgICAgaWYgKHR5cGVvZiBvW3BhcnRdID09PSAic3RyaW5nIikKICAgICAgICAgICAgb1twYXJ0XSA9IHRyeUV2YWwob1twYXJ0XSk7CiAgICAgICAgfSBlbHNlIHsgLy8gb3RoZXJ3aXNlIGNvbnRpbnVlIHRvIG5leHQgZW1iZWRkZWQgb2JqZWN0CiAgICAgICAgICBvID0gb1twYXJ0XTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9OwoKICAvLyBSZXRyaWV2ZSB0aGUgSFRNTFdpZGdldCBpbnN0YW5jZSAoaS5lLiB0aGUgcmV0dXJuIHZhbHVlIG9mIGFuCiAgLy8gSFRNTFdpZGdldCBiaW5kaW5nJ3MgaW5pdGlhbGl6ZSgpIG9yIGZhY3RvcnkoKSBmdW5jdGlvbikKICAvLyBhc3NvY2lhdGVkIHdpdGggYW4gZWxlbWVudCwgb3IgbnVsbCBpZiBub25lLgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5nZXRJbnN0YW5jZSA9IGZ1bmN0aW9uKGVsKSB7CiAgICByZXR1cm4gZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpOwogIH07CgogIC8vIEZpbmRzIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBzY29wZSB0aGF0IG1hdGNoZXMgdGhlIHNlbGVjdG9yLAogIC8vIGFuZCByZXR1cm5zIHRoZSBIVE1MV2lkZ2V0IGluc3RhbmNlIChpLmUuIHRoZSByZXR1cm4gdmFsdWUgb2YKICAvLyBhbiBIVE1MV2lkZ2V0IGJpbmRpbmcncyBpbml0aWFsaXplKCkgb3IgZmFjdG9yeSgpIGZ1bmN0aW9uKQogIC8vIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGVsZW1lbnQsIGlmIGFueS4gSWYgbm8gZWxlbWVudCBtYXRjaGVzIHRoZQogIC8vIHNlbGVjdG9yLCBvciB0aGUgZmlyc3QgbWF0Y2hpbmcgZWxlbWVudCBoYXMgbm8gSFRNTFdpZGdldAogIC8vIGluc3RhbmNlIGFzc29jaWF0ZWQgd2l0aCBpdCwgdGhlbiBudWxsIGlzIHJldHVybmVkLgogIC8vCiAgLy8gVGhlIHNjb3BlIGFyZ3VtZW50IGlzIG9wdGlvbmFsLCBhbmQgZGVmYXVsdHMgdG8gd2luZG93LmRvY3VtZW50LgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5maW5kID0gZnVuY3Rpb24oc2NvcGUsIHNlbGVjdG9yKSB7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSB7CiAgICAgIHNlbGVjdG9yID0gc2NvcGU7CiAgICAgIHNjb3BlID0gZG9jdW1lbnQ7CiAgICB9CgogICAgdmFyIGVsID0gc2NvcGUucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7CiAgICBpZiAoZWwgPT09IG51bGwpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd2luZG93LkhUTUxXaWRnZXRzLmdldEluc3RhbmNlKGVsKTsKICAgIH0KICB9OwoKICAvLyBGaW5kcyBhbGwgZWxlbWVudHMgaW4gdGhlIHNjb3BlIHRoYXQgbWF0Y2ggdGhlIHNlbGVjdG9yLCBhbmQKICAvLyByZXR1cm5zIHRoZSBIVE1MV2lkZ2V0IGluc3RhbmNlcyAoaS5lLiB0aGUgcmV0dXJuIHZhbHVlcyBvZgogIC8vIGFuIEhUTUxXaWRnZXQgYmluZGluZydzIGluaXRpYWxpemUoKSBvciBmYWN0b3J5KCkgZnVuY3Rpb24pCiAgLy8gYXNzb2NpYXRlZCB3aXRoIHRoZSBlbGVtZW50cywgaW4gYW4gYXJyYXkuIElmIGVsZW1lbnRzIHRoYXQKICAvLyBtYXRjaCB0aGUgc2VsZWN0b3IgZG9uJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIEhUTUxXaWRnZXQKICAvLyBpbnN0YW5jZSwgdGhlIHJldHVybmVkIGFycmF5IHdpbGwgY29udGFpbiBudWxscy4KICAvLwogIC8vIFRoZSBzY29wZSBhcmd1bWVudCBpcyBvcHRpb25hbCwgYW5kIGRlZmF1bHRzIHRvIHdpbmRvdy5kb2N1bWVudC4KICB3aW5kb3cuSFRNTFdpZGdldHMuZmluZEFsbCA9IGZ1bmN0aW9uKHNjb3BlLCBzZWxlY3RvcikgewogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMSkgewogICAgICBzZWxlY3RvciA9IHNjb3BlOwogICAgICBzY29wZSA9IGRvY3VtZW50OwogICAgfQoKICAgIHZhciBub2RlcyA9IHNjb3BlLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOwogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHsKICAgICAgcmVzdWx0cy5wdXNoKHdpbmRvdy5IVE1MV2lkZ2V0cy5nZXRJbnN0YW5jZShub2Rlc1tpXSkpOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfTsKCiAgdmFyIHBvc3RSZW5kZXJIYW5kbGVycyA9IFtdOwogIGZ1bmN0aW9uIGludm9rZVBvc3RSZW5kZXJIYW5kbGVycygpIHsKICAgIHdoaWxlIChwb3N0UmVuZGVySGFuZGxlcnMubGVuZ3RoKSB7CiAgICAgIHZhciBoYW5kbGVyID0gcG9zdFJlbmRlckhhbmRsZXJzLnNoaWZ0KCk7CiAgICAgIGlmIChoYW5kbGVyKSB7CiAgICAgICAgaGFuZGxlcigpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBSZWdpc3RlciB0aGUgZ2l2ZW4gY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgaW52b2tlZCBhZnRlciB0aGUKICAvLyBuZXh0IHRpbWUgc3RhdGljIHdpZGdldHMgYXJlIHJlbmRlcmVkLgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5hZGRQb3N0UmVuZGVySGFuZGxlciA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICBwb3N0UmVuZGVySGFuZGxlcnMucHVzaChjYWxsYmFjayk7CiAgfTsKCiAgLy8gVGFrZXMgYSBuZXctc3R5bGUgaW5zdGFuY2UtYm91bmQgZGVmaW5pdGlvbiwgYW5kIHJldHVybnMgYW4KICAvLyBvbGQtc3R5bGUgY2xhc3MtYm91bmQgZGVmaW5pdGlvbi4gVGhpcyBzYXZlcyB1cyBmcm9tIGhhdmluZwogIC8vIHRvIHJld3JpdGUgYWxsIHRoZSBsb2dpYyBpbiB0aGlzIGZpbGUgdG8gYWNjb21vZGF0ZSBib3RoCiAgLy8gdHlwZXMgb2YgZGVmaW5pdGlvbnMuCiAgZnVuY3Rpb24gY3JlYXRlTGVnYWN5RGVmaW5pdGlvbkFkYXB0ZXIoZGVmbikgewogICAgdmFyIHJlc3VsdCA9IHsKICAgICAgbmFtZTogZGVmbi5uYW1lLAogICAgICB0eXBlOiBkZWZuLnR5cGUsCiAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0KSB7CiAgICAgICAgcmV0dXJuIGRlZm4uZmFjdG9yeShlbCwgd2lkdGgsIGhlaWdodCk7CiAgICAgIH0sCiAgICAgIHJlbmRlclZhbHVlOiBmdW5jdGlvbihlbCwgeCwgaW5zdGFuY2UpIHsKICAgICAgICByZXR1cm4gaW5zdGFuY2UucmVuZGVyVmFsdWUoeCk7CiAgICAgIH0sCiAgICAgIHJlc2l6ZTogZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQsIGluc3RhbmNlKSB7CiAgICAgICAgcmV0dXJuIGluc3RhbmNlLnJlc2l6ZSh3aWR0aCwgaGVpZ2h0KTsKICAgICAgfQogICAgfTsKCiAgICBpZiAoZGVmbi5maW5kKQogICAgICByZXN1bHQuZmluZCA9IGRlZm4uZmluZDsKICAgIGlmIChkZWZuLnJlbmRlckVycm9yKQogICAgICByZXN1bHQucmVuZGVyRXJyb3IgPSBkZWZuLnJlbmRlckVycm9yOwogICAgaWYgKGRlZm4uY2xlYXJFcnJvcikKICAgICAgcmVzdWx0LmNsZWFyRXJyb3IgPSBkZWZuLmNsZWFyRXJyb3I7CgogICAgcmV0dXJuIHJlc3VsdDsKICB9Cn0pKCk7Cgo=\"><\/script> <script src=\"data:application\/javascript;base64,IWZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Z1bmN0aW9uIHIobil7aWYodFtuXSlyZXR1cm4gdFtuXS5leHBvcnRzO3ZhciBhPXRbbl09e2k6bixsOiExLGV4cG9ydHM6e319O3JldHVybiBlW25dLmNhbGwoYS5leHBvcnRzLGEsYS5leHBvcnRzLHIpLGEubD0hMCxhLmV4cG9ydHN9ci5tPWUsci5jPXQsci5kPWZ1bmN0aW9uKGUsdCxuKXtyLm8oZSx0KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7ZW51bWVyYWJsZTohMCxnZXQ6bn0pfSxyLnI9ZnVuY3Rpb24oZSl7InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sci50PWZ1bmN0aW9uKGUsdCl7aWYoMSZ0JiYoZT1yKGUpKSw4JnQpcmV0dXJuIGU7aWYoNCZ0JiYib2JqZWN0Ij09dHlwZW9mIGUmJmUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpO2lmKHIucihuKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiZGVmYXVsdCIse2VudW1lcmFibGU6ITAsdmFsdWU6ZX0pLDImdCYmInN0cmluZyIhPXR5cGVvZiBlKWZvcih2YXIgYSBpbiBlKXIuZChuLGEsZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19LmJpbmQobnVsbCxhKSk7cmV0dXJuIG59LHIubj1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLl9fZXNNb2R1bGU\/ZnVuY3Rpb24oKXtyZXR1cm4gZS5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBlfTtyZXR1cm4gci5kKHQsImEiLHQpLHR9LHIubz1mdW5jdGlvbihlLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KX0sci5wPSIiLHIoci5zPTIwKX0oW2Z1bmN0aW9uKGUsdCxyKXtlLmV4cG9ydHM9cigxMykoKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9d2luZG93LlJlYWN0fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlJlYWN0VGFibGVEZWZhdWx0cz12b2lkIDA7dmFyIG49ZnVuY3Rpb24oZSx0KXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlO2lmKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSkpcmV0dXJuIGZ1bmN0aW9uKGUsdCl7dmFyIHI9W10sbj0hMCxhPSExLG89dm9pZCAwO3RyeXtmb3IodmFyIGksbD1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKG49KGk9bC5uZXh0KCkpLmRvbmUpJiYoci5wdXNoKGkudmFsdWUpLCF0fHxyLmxlbmd0aCE9PXQpO249ITApO31jYXRjaChlKXthPSEwLG89ZX1maW5hbGx5e3RyeXshbiYmbC5yZXR1cm4mJmwucmV0dXJuKCl9ZmluYWxseXtpZihhKXRocm93IG99fXJldHVybiByfShlLHQpO3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UiKX0sYT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgcj1hcmd1bWVudHNbdF07Zm9yKHZhciBuIGluIHIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsbikmJihlW25dPXJbbl0pfXJldHVybiBlfSxvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbi5rZXksbil9fXJldHVybiBmdW5jdGlvbih0LHIsbil7cmV0dXJuIHImJmUodC5wcm90b3R5cGUsciksbiYmZSh0LG4pLHR9fSgpLGk9cigxKSxsPWcoaSkscz1nKHIoNCkpLHU9ZyhyKDUpKSxjPWcocig4KSksZj1nKHIoOSkpLGQ9ZyhyKDEwKSkscD1nKHIoMTIpKTtmdW5jdGlvbiBnKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU\/ZTp7ZGVmYXVsdDplfX10LlJlYWN0VGFibGVEZWZhdWx0cz1kLmRlZmF1bHQ7dmFyIGg9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx0KTt2YXIgcj1mdW5jdGlvbihlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ\/ZTp0fSh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMpKTtyZXR1cm4gci5nZXRSZXNvbHZlZFN0YXRlPXIuZ2V0UmVzb2x2ZWRTdGF0ZS5iaW5kKHIpLHIuZ2V0RGF0YU1vZGVsPXIuZ2V0RGF0YU1vZGVsLmJpbmQociksci5nZXRTb3J0ZWREYXRhPXIuZ2V0U29ydGVkRGF0YS5iaW5kKHIpLHIuZmlyZUZldGNoRGF0YT1yLmZpcmVGZXRjaERhdGEuYmluZChyKSxyLmdldFByb3BPclN0YXRlPXIuZ2V0UHJvcE9yU3RhdGUuYmluZChyKSxyLmdldFN0YXRlT3JQcm9wPXIuZ2V0U3RhdGVPclByb3AuYmluZChyKSxyLmZpbHRlckRhdGE9ci5maWx0ZXJEYXRhLmJpbmQociksci5zb3J0RGF0YT1yLnNvcnREYXRhLmJpbmQociksci5nZXRNaW5Sb3dzPXIuZ2V0TWluUm93cy5iaW5kKHIpLHIub25QYWdlQ2hhbmdlPXIub25QYWdlQ2hhbmdlLmJpbmQociksci5vblBhZ2VTaXplQ2hhbmdlPXIub25QYWdlU2l6ZUNoYW5nZS5iaW5kKHIpLHIuc29ydENvbHVtbj1yLnNvcnRDb2x1bW4uYmluZChyKSxyLmZpbHRlckNvbHVtbj1yLmZpbHRlckNvbHVtbi5iaW5kKHIpLHIucmVzaXplQ29sdW1uU3RhcnQ9ci5yZXNpemVDb2x1bW5TdGFydC5iaW5kKHIpLHIucmVzaXplQ29sdW1uRW5kPXIucmVzaXplQ29sdW1uRW5kLmJpbmQociksci5yZXNpemVDb2x1bW5Nb3Zpbmc9ci5yZXNpemVDb2x1bW5Nb3ZpbmcuYmluZChyKSxyLnN0YXRlPXtwYWdlOjAscGFnZVNpemU6ZS5kZWZhdWx0UGFnZVNpemUsc29ydGVkOmUuZGVmYXVsdFNvcnRlZCxleHBhbmRlZDplLmRlZmF1bHRFeHBhbmRlZCxmaWx0ZXJlZDplLmRlZmF1bHRGaWx0ZXJlZCxyZXNpemVkOmUuZGVmYXVsdFJlc2l6ZWQsY3VycmVudGx5UmVzaXppbmc6ITEsc2tpcE5leHRTb3J0OiExfSxyfXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y\/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksbyh0LFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMuZ2V0UmVzb2x2ZWRTdGF0ZSgpLHI9dC5jaGlsZHJlbixvPXQuY2xhc3NOYW1lLGk9dC5zdHlsZSxjPXQuZ2V0UHJvcHMsZj10LmdldFRhYmxlUHJvcHMscD10LmdldFRoZWFkR3JvdXBQcm9wcyxnPXQuZ2V0VGhlYWRHcm91cFRyUHJvcHMsaD10LmdldFRoZWFkR3JvdXBUaFByb3BzLG09dC5nZXRUaGVhZFByb3BzLGI9dC5nZXRUaGVhZFRyUHJvcHMseT10LmdldFRoZWFkVGhQcm9wcyx2PXQuZ2V0VGhlYWRGaWx0ZXJQcm9wcyx3PXQuZ2V0VGhlYWRGaWx0ZXJUclByb3BzLHg9dC5nZXRUaGVhZEZpbHRlclRoUHJvcHMsUz10LmdldFRib2R5UHJvcHMsUD10LmdldFRyR3JvdXBQcm9wcyxDPXQuZ2V0VHJQcm9wcyxPPXQuZ2V0VGRQcm9wcyxrPXQuZ2V0VGZvb3RQcm9wcyxUPXQuZ2V0VGZvb3RUclByb3BzLGo9dC5nZXRUZm9vdFRkUHJvcHMsRT10LmdldFBhZ2luYXRpb25Qcm9wcyxSPXQuZ2V0TG9hZGluZ1Byb3BzLE49dC5nZXROb0RhdGFQcm9wcyxBPXQuZ2V0UmVzaXplclByb3BzLEQ9dC5zaG93UGFnaW5hdGlvbix6PXQuc2hvd1BhZ2luYXRpb25Ub3AsXz10LnNob3dQYWdpbmF0aW9uQm90dG9tLEY9dC5tYW51YWwsTT10LmxvYWRpbmdUZXh0LEk9dC5ub0RhdGFUZXh0LEw9dC5zb3J0YWJsZSxXPXQucmVzaXphYmxlLEs9dC5maWx0ZXJhYmxlLEI9dC5waXZvdElES2V5LEg9dC5waXZvdFZhbEtleSxHPXQucGl2b3RCeSxVPXQuc3ViUm93c0tleSxWPXQuYWdncmVnYXRlZEtleSxKPXQub3JpZ2luYWxLZXksJD10LmluZGV4S2V5LHE9dC5ncm91cGVkQnlQaXZvdEtleSxYPXQubG9hZGluZyxZPXQucGFnZVNpemUsWj10LnBhZ2UsUT10LnNvcnRlZCxlZT10LmZpbHRlcmVkLHRlPXQucmVzaXplZCxyZT10LmV4cGFuZGVkLG5lPXQucGFnZXMsYWU9dC5vbkV4cGFuZGVkQ2hhbmdlLG9lPXQuVGFibGVDb21wb25lbnQsaWU9dC5UaGVhZENvbXBvbmVudCxsZT10LlRib2R5Q29tcG9uZW50LHNlPXQuVHJHcm91cENvbXBvbmVudCx1ZT10LlRyQ29tcG9uZW50LGNlPXQuVGhDb21wb25lbnQsZmU9dC5UZENvbXBvbmVudCxkZT10LlRmb290Q29tcG9uZW50LHBlPXQuUGFnaW5hdGlvbkNvbXBvbmVudCxnZT10LkxvYWRpbmdDb21wb25lbnQsaGU9dC5TdWJDb21wb25lbnQsbWU9dC5Ob0RhdGFDb21wb25lbnQsYmU9dC5SZXNpemVyQ29tcG9uZW50LHllPXQuRXhwYW5kZXJDb21wb25lbnQsdmU9dC5QaXZvdFZhbHVlQ29tcG9uZW50LHdlPXQuUGl2b3RDb21wb25lbnQseGU9dC5BZ2dyZWdhdGVkQ29tcG9uZW50LFNlPXQuRmlsdGVyQ29tcG9uZW50LFBlPXQuUGFkUm93Q29tcG9uZW50LENlPXQucmVzb2x2ZWREYXRhLE9lPXQuYWxsVmlzaWJsZUNvbHVtbnMsa2U9dC5oZWFkZXJHcm91cHMsVGU9dC5oYXNIZWFkZXJHcm91cHMsamU9dC5zb3J0ZWREYXRhLEVlPXQuY3VycmVudGx5UmVzaXppbmcsUmU9WSpaLE5lPVJlK1ksQWU9Rj9DZTpqZS5zbGljZShSZSxOZSksRGU9dGhpcy5nZXRNaW5Sb3dzKCksemU9dS5kZWZhdWx0LnJhbmdlKE1hdGgubWF4KERlLUFlLmxlbmd0aCwwKSksX2U9T2Uuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuRm9vdGVyfSkpLEZlPUt8fE9lLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmZpbHRlcmFibGV9KSksTWU9ZnVuY3Rpb24gZSh0KXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06W10sbz1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06LTE7cmV0dXJuW3QubWFwKChmdW5jdGlvbih0LGkpe28rKzt2YXIgbD1hKHt9LHQse192aWV3SW5kZXg6b30pLHM9ci5jb25jYXQoW2ldKTtpZihsW1VdJiZ1LmRlZmF1bHQuZ2V0KHJlLHMpKXt2YXIgYz1lKGxbVV0scyxvKSxmPW4oYywyKTtsW1VdPWZbMF0sbz1mWzFdfXJldHVybiBsfSkpLG9dfShBZSksSWU9bihNZSwxKTtBZT1JZVswXTt2YXIgTGU9Wj4wLFdlPVorMTxuZSxLZT11LmRlZmF1bHQuc3VtKE9lLm1hcCgoZnVuY3Rpb24oZSl7dmFyIHQ9dGUuZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWQ9PT1lLmlkfSkpfHx7fTtyZXR1cm4gdS5kZWZhdWx0LmdldEZpcnN0RGVmaW5lZCh0LnZhbHVlLGUud2lkdGgsZS5taW5XaWR0aCl9KSkpLEJlPS0xLEhlPWEoe30sdCx7c3RhcnRSb3c6UmUsZW5kUm93Ok5lLHBhZ2VSb3dzOkFlLG1pblJvd3M6RGUscGFkUm93czp6ZSxoYXNDb2x1bW5Gb290ZXI6X2UsY2FuUHJldmlvdXM6TGUsY2FuTmV4dDpXZSxyb3dNaW5XaWR0aDpLZX0pLEdlPWZ1bmN0aW9uKHQscil7dmFyIG49ZnVuY3Rpb24oZSl7cmV0dXJuKHRlLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkPT09ZS5pZH0pKXx8e30pLnZhbHVlfSxvPXUuZGVmYXVsdC5zdW0odC5jb2x1bW5zLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUud2lkdGh8fG4oZSk\/MDplLm1pbldpZHRofSkpKSxpPXUuZGVmYXVsdC5zdW0odC5jb2x1bW5zLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHUuZGVmYXVsdC5nZXRGaXJzdERlZmluZWQobihlKSxlLndpZHRoLGUubWluV2lkdGgpfSkpKSxjPXUuZGVmYXVsdC5zdW0odC5jb2x1bW5zLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHUuZGVmYXVsdC5nZXRGaXJzdERlZmluZWQobihlKSxlLndpZHRoLGUubWF4V2lkdGgpfSkpKSxmPXUuZGVmYXVsdC5zcGxpdFByb3BzKGgoSGUsdm9pZCAwLHQsZSkpLGQ9dS5kZWZhdWx0LnNwbGl0UHJvcHModC5nZXRIZWFkZXJQcm9wcyhIZSx2b2lkIDAsdCxlKSkscD1bdC5oZWFkZXJDbGFzc05hbWUsZi5jbGFzc05hbWUsZC5jbGFzc05hbWVdLGc9YSh7fSx0LmhlYWRlclN0eWxlLGYuc3R5bGUsZC5zdHlsZSksbT1hKHt9LGYucmVzdCxkLnJlc3QpLGI9e2ZsZXg6bysiIDAgYXV0byIsd2lkdGg6dS5kZWZhdWx0LmFzUHgoaSksbWF4V2lkdGg6dS5kZWZhdWx0LmFzUHgoYyl9O3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChjZSxhKHtrZXk6cisiLSIrdC5pZCxjbGFzc05hbWU6KDAscy5kZWZhdWx0KShwKSxzdHlsZTphKHt9LGcsYil9LG0pLHUuZGVmYXVsdC5ub3JtYWxpemVDb21wb25lbnQodC5IZWFkZXIse2RhdGE6amUsY29sdW1uOnR9KSl9LFVlPWZ1bmN0aW9uKHQscil7dmFyIG49dGUuZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQ9PT10LmlkfSkpfHx7fSxvPShRLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkPT09dC5pZH0pKSwiZnVuY3Rpb24iPT10eXBlb2YgdC5zaG93P3Quc2hvdygpOnQuc2hvdyksaT11LmRlZmF1bHQuZ2V0Rmlyc3REZWZpbmVkKG4udmFsdWUsdC53aWR0aCx0Lm1pbldpZHRoKSxjPXUuZGVmYXVsdC5nZXRGaXJzdERlZmluZWQobi52YWx1ZSx0LndpZHRoLHQubWF4V2lkdGgpLGY9dS5kZWZhdWx0LnNwbGl0UHJvcHMoeShIZSx2b2lkIDAsdCxlKSksZD11LmRlZmF1bHQuc3BsaXRQcm9wcyh0LmdldEhlYWRlclByb3BzKEhlLHZvaWQgMCx0LGUpKSxwPVt0LmhlYWRlckNsYXNzTmFtZSxmLmNsYXNzTmFtZSxkLmNsYXNzTmFtZV0sZz1hKHt9LHQuaGVhZGVyU3R5bGUsZi5zdHlsZSxkLnN0eWxlKSxoPWEoe30sZi5yZXN0LGQucmVzdCksbT11LmRlZmF1bHQuZ2V0Rmlyc3REZWZpbmVkKHQucmVzaXphYmxlLFcsITEpLGI9bT9sLmRlZmF1bHQuY3JlYXRlRWxlbWVudChiZSxhKHtvbk1vdXNlRG93bjpmdW5jdGlvbihyKXtyZXR1cm4gZS5yZXNpemVDb2x1bW5TdGFydChyLHQsITEpfSxvblRvdWNoU3RhcnQ6ZnVuY3Rpb24ocil7cmV0dXJuIGUucmVzaXplQ29sdW1uU3RhcnQocix0LCEwKX19LHR0KSk6bnVsbCx2PXUuZGVmYXVsdC5nZXRGaXJzdERlZmluZWQodC5zb3J0YWJsZSxMLCExKSx3PXZvaWQgMDtyZXR1cm4gdz1tP2wuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6InJ0LXJlc2l6YWJsZS1oZWFkZXItY29udGVudCJ9LHUuZGVmYXVsdC5ub3JtYWxpemVDb21wb25lbnQodC5IZWFkZXIse2RhdGE6amUsY29sdW1uOnR9KSk6dS5kZWZhdWx0Lm5vcm1hbGl6ZUNvbXBvbmVudCh0LkhlYWRlcix7ZGF0YTpqZSxjb2x1bW46dH0pLGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGNlLGEoe2tleTpyKyItIit0LmlkLGNsYXNzTmFtZTooMCxzLmRlZmF1bHQpKHAsbSYmInJ0LXJlc2l6YWJsZS1oZWFkZXIiLHYmJiItY3Vyc29yLXBvaW50ZXIiLCFvJiYiLWhpZGRlbiIsRyYmRy5zbGljZSgwLC0xKS5pbmNsdWRlcyh0LmlkKSYmInJ0LWhlYWRlci1waXZvdCIpLHN0eWxlOmEoe30sZyx7ZmxleDppKyIgMCBhdXRvIix3aWR0aDp1LmRlZmF1bHQuYXNQeChpKSxtYXhXaWR0aDp1LmRlZmF1bHQuYXNQeChjKX0pLHRvZ2dsZVNvcnQ6dj9mdW5jdGlvbihyKXtyZXR1cm4gZS5zb3J0Q29sdW1uKHQsci5zaGlmdEtleSl9OnZvaWQgMH0saCksdyxiKX0sVmU9ZnVuY3Rpb24odCxyKXt2YXIgbj10ZS5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gZS5pZD09PXQuaWR9KSl8fHt9LG89dS5kZWZhdWx0LmdldEZpcnN0RGVmaW5lZChuLnZhbHVlLHQud2lkdGgsdC5taW5XaWR0aCksaT11LmRlZmF1bHQuZ2V0Rmlyc3REZWZpbmVkKG4udmFsdWUsdC53aWR0aCx0Lm1heFdpZHRoKSxjPXUuZGVmYXVsdC5zcGxpdFByb3BzKHgoSGUsdm9pZCAwLHQsZSkpLGY9dS5kZWZhdWx0LnNwbGl0UHJvcHModC5nZXRIZWFkZXJQcm9wcyhIZSx2b2lkIDAsdCxlKSkscD1bdC5oZWFkZXJDbGFzc05hbWUsYy5jbGFzc05hbWUsZi5jbGFzc05hbWVdLGc9YSh7fSx0LmhlYWRlclN0eWxlLGMuc3R5bGUsZi5zdHlsZSksaD1hKHt9LGMucmVzdCxmLnJlc3QpLG09ZWUuZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQ9PT10LmlkfSkpLGI9dC5GaWx0ZXJ8fFNlLHk9dS5kZWZhdWx0LmdldEZpcnN0RGVmaW5lZCh0LmZpbHRlcmFibGUsSywhMSk7cmV0dXJuIGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGZlLGEoe2tleTpyKyItIit0LmlkLGNsYXNzTmFtZTooMCxzLmRlZmF1bHQpKHApLHN0eWxlOmEoe30sZyx7ZmxleDpvKyIgMCBhdXRvIix3aWR0aDp1LmRlZmF1bHQuYXNQeChvKSxtYXhXaWR0aDp1LmRlZmF1bHQuYXNQeChpKX0pfSxoKSx5P3UuZGVmYXVsdC5ub3JtYWxpemVDb21wb25lbnQoYix7Y29sdW1uOnQsZmlsdGVyOm0sb25DaGFuZ2U6ZnVuY3Rpb24ocil7cmV0dXJuIGUuZmlsdGVyQ29sdW1uKHQscil9fSxkLmRlZmF1bHQuY29sdW1uLkZpbHRlcik6bnVsbCl9LEplPWZ1bmN0aW9uKHQscil7dmFyIG49UChIZSx2b2lkIDAsdm9pZCAwLGUpLG89dS5kZWZhdWx0LnNwbGl0UHJvcHMoQyhIZSx2b2lkIDAsdm9pZCAwLGUpKTtyZXR1cm4gbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoc2UsYSh7a2V5OnJ9LG4pLGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHVlLHtjbGFzc05hbWU6KDAscy5kZWZhdWx0KSgiLXBhZFJvdyIsby5jbGFzc05hbWUpLHN0eWxlOm8uc3R5bGV8fHt9fSxPZS5tYXAoJGUpKSl9LCRlPWZ1bmN0aW9uKHQscil7dmFyIG49dGUuZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQ9PT10LmlkfSkpfHx7fSxvPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnNob3c\/dC5zaG93KCk6dC5zaG93LGk9dS5kZWZhdWx0LmdldEZpcnN0RGVmaW5lZChuLnZhbHVlLHQud2lkdGgsdC5taW5XaWR0aCksYz1pLGY9dS5kZWZhdWx0LmdldEZpcnN0RGVmaW5lZChuLnZhbHVlLHQud2lkdGgsdC5tYXhXaWR0aCksZD11LmRlZmF1bHQuc3BsaXRQcm9wcyhPKEhlLHZvaWQgMCx0LGUpKSxwPXUuZGVmYXVsdC5zcGxpdFByb3BzKHQuZ2V0UHJvcHMoSGUsdm9pZCAwLHQsZSkpLGc9W2QuY2xhc3NOYW1lLHQuY2xhc3NOYW1lLHAuY2xhc3NOYW1lXSxoPWEoe30sZC5zdHlsZSx0LnN0eWxlLHAuc3R5bGUpO3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChmZSxhKHtrZXk6cisiLSIrdC5pZCxjbGFzc05hbWU6KDAscy5kZWZhdWx0KShnLCFvJiYiaGlkZGVuIiksc3R5bGU6YSh7fSxoLHtmbGV4OmMrIiAwIGF1dG8iLHdpZHRoOnUuZGVmYXVsdC5hc1B4KGkpLG1heFdpZHRoOnUuZGVmYXVsdC5hc1B4KGYpfSl9LGQucmVzdCksdS5kZWZhdWx0Lm5vcm1hbGl6ZUNvbXBvbmVudChQZSkpfSxxZT1mdW5jdGlvbih0LHIpe3ZhciBuPXRlLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkPT09dC5pZH0pKXx8e30sbz0iZnVuY3Rpb24iPT10eXBlb2YgdC5zaG93P3Quc2hvdygpOnQuc2hvdyxpPXUuZGVmYXVsdC5nZXRGaXJzdERlZmluZWQobi52YWx1ZSx0LndpZHRoLHQubWluV2lkdGgpLGM9dS5kZWZhdWx0LmdldEZpcnN0RGVmaW5lZChuLnZhbHVlLHQud2lkdGgsdC5tYXhXaWR0aCksZj11LmRlZmF1bHQuc3BsaXRQcm9wcyhqKEhlLHZvaWQgMCx2b2lkIDAsZSkpLGQ9dS5kZWZhdWx0LnNwbGl0UHJvcHModC5nZXRQcm9wcyhIZSx2b2lkIDAsdCxlKSkscD11LmRlZmF1bHQuc3BsaXRQcm9wcyh0LmdldEZvb3RlclByb3BzKEhlLHZvaWQgMCx0LGUpKSxnPVtmLmNsYXNzTmFtZSx0LmZvb3RlckNsYXNzTmFtZSxkLmZvb3RlckNsYXNzTmFtZSxwLmNsYXNzTmFtZV0saD1hKHt9LGYuc3R5bGUsdC5mb290ZXJTdHlsZSxkLmZvb3RlclN0eWxlLHAuc3R5bGUpO3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChmZSxhKHtrZXk6cisiLSIrdC5pZCxjbGFzc05hbWU6KDAscy5kZWZhdWx0KShnLCFvJiYiaGlkZGVuIiksc3R5bGU6YSh7fSxoLHtmbGV4OmkrIiAwIGF1dG8iLHdpZHRoOnUuZGVmYXVsdC5hc1B4KGkpLG1heFdpZHRoOnUuZGVmYXVsdC5hc1B4KGMpfSl9LGQucmVzdCxmLnJlc3QscC5yZXN0KSx1LmRlZmF1bHQubm9ybWFsaXplQ29tcG9uZW50KHQuRm9vdGVyLHtkYXRhOmplLGNvbHVtbjp0fSkpfSxYZT11LmRlZmF1bHQuc3BsaXRQcm9wcyhjKEhlLHZvaWQgMCx2b2lkIDAsdGhpcykpLFllPXUuZGVmYXVsdC5zcGxpdFByb3BzKGYoSGUsdm9pZCAwLHZvaWQgMCx0aGlzKSksWmU9dS5kZWZhdWx0LnNwbGl0UHJvcHMoUyhIZSx2b2lkIDAsdm9pZCAwLHRoaXMpKSxRZT1SKEhlLHZvaWQgMCx2b2lkIDAsdGhpcyksZXQ9TihIZSx2b2lkIDAsdm9pZCAwLHRoaXMpLHR0PUEoSGUsdm9pZCAwLHZvaWQgMCx0aGlzKSxydD1mdW5jdGlvbigpe3ZhciByLG4sYyxmLGQsaCx5LHgsUyxqPShyPXUuZGVmYXVsdC5zcGxpdFByb3BzKEUoSGUsdm9pZCAwLHZvaWQgMCxlKSksbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQocGUsYSh7fSx0LHtwYWdlczpuZSxjYW5QcmV2aW91czpMZSxjYW5OZXh0OldlLG9uUGFnZUNoYW5nZTplLm9uUGFnZUNoYW5nZSxvblBhZ2VTaXplQ2hhbmdlOmUub25QYWdlU2l6ZUNoYW5nZSxjbGFzc05hbWU6ci5jbGFzc05hbWUsc3R5bGU6ci5zdHlsZX0sci5yZXN0KSkpO3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiZGl2IixhKHtjbGFzc05hbWU6KDAscy5kZWZhdWx0KSgiUmVhY3RUYWJsZSIsbyxYZS5jbGFzc05hbWUpLHN0eWxlOmEoe30saSxYZS5zdHlsZSl9LFhlLnJlc3QpLEQmJno\/bC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicGFnaW5hdGlvbi10b3AifSxqKTpudWxsLGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KG9lLGEoe2NsYXNzTmFtZTooMCxzLmRlZmF1bHQpKFllLmNsYXNzTmFtZSxFZT8icnQtcmVzaXppbmciOiIiKSxzdHlsZTpZZS5zdHlsZX0sWWUucmVzdCksVGU\/KHg9dS5kZWZhdWx0LnNwbGl0UHJvcHMocChIZSx2b2lkIDAsdm9pZCAwLGUpKSxTPXUuZGVmYXVsdC5zcGxpdFByb3BzKGcoSGUsdm9pZCAwLHZvaWQgMCxlKSksbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoaWUsYSh7Y2xhc3NOYW1lOigwLHMuZGVmYXVsdCkoIi1oZWFkZXJHcm91cHMiLHguY2xhc3NOYW1lKSxzdHlsZTphKHt9LHguc3R5bGUse21pbldpZHRoOktlKyJweCJ9KX0seC5yZXN0KSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudCh1ZSxhKHtjbGFzc05hbWU6Uy5jbGFzc05hbWUsc3R5bGU6Uy5zdHlsZX0sUy5yZXN0KSxrZS5tYXAoR2UpKSkpOm51bGwsKGg9dS5kZWZhdWx0LnNwbGl0UHJvcHMobShIZSx2b2lkIDAsdm9pZCAwLGUpKSx5PXUuZGVmYXVsdC5zcGxpdFByb3BzKGIoSGUsdm9pZCAwLHZvaWQgMCxlKSksbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoaWUsYSh7Y2xhc3NOYW1lOigwLHMuZGVmYXVsdCkoIi1oZWFkZXIiLGguY2xhc3NOYW1lKSxzdHlsZTphKHt9LGguc3R5bGUse21pbldpZHRoOktlKyJweCJ9KX0saC5yZXN0KSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudCh1ZSxhKHtjbGFzc05hbWU6eS5jbGFzc05hbWUsc3R5bGU6eS5zdHlsZX0seS5yZXN0KSxPZS5tYXAoVWUpKSkpLEZlPyhmPXUuZGVmYXVsdC5zcGxpdFByb3BzKHYoSGUsdm9pZCAwLHZvaWQgMCxlKSksZD11LmRlZmF1bHQuc3BsaXRQcm9wcyh3KEhlLHZvaWQgMCx2b2lkIDAsZSkpLGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGllLGEoe2NsYXNzTmFtZTooMCxzLmRlZmF1bHQpKCItZmlsdGVycyIsZi5jbGFzc05hbWUpLHN0eWxlOmEoe30sZi5zdHlsZSx7bWluV2lkdGg6S2UrInB4In0pfSxmLnJlc3QpLGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHVlLGEoe2NsYXNzTmFtZTpkLmNsYXNzTmFtZSxzdHlsZTpkLnN0eWxlfSxkLnJlc3QpLE9lLm1hcChWZSkpKSk6bnVsbCxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChsZSxhKHtjbGFzc05hbWU6KDAscy5kZWZhdWx0KShaZS5jbGFzc05hbWUpLHN0eWxlOmEoe30sWmUuc3R5bGUse21pbldpZHRoOktlKyJweCJ9KX0sWmUucmVzdCksQWUubWFwKChmdW5jdGlvbih0LHIpe3JldHVybiBmdW5jdGlvbiB0KHIsbil7dmFyIG89YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0\/YXJndW1lbnRzWzJdOltdLGk9e29yaWdpbmFsOnJbSl0scm93OnIsaW5kZXg6clskXSx2aWV3SW5kZXg6KytCZSxwYWdlU2l6ZTpZLHBhZ2U6WixsZXZlbDpvLmxlbmd0aCxuZXN0aW5nUGF0aDpvLmNvbmNhdChbbl0pLGFnZ3JlZ2F0ZWQ6cltWXSxncm91cGVkQnlQaXZvdDpyW3FdLHN1YlJvd3M6cltVXX0sYz11LmRlZmF1bHQuZ2V0KHJlLGkubmVzdGluZ1BhdGgpLGY9UChIZSxpLHZvaWQgMCxlKSxkPXUuZGVmYXVsdC5zcGxpdFByb3BzKEMoSGUsaSx2b2lkIDAsZSkpO3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChzZSxhKHtrZXk6aS5uZXN0aW5nUGF0aC5qb2luKCJfIil9LGYpLGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHVlLGEoe2NsYXNzTmFtZTpkLmNsYXNzTmFtZSxzdHlsZTpkLnN0eWxlfSxkLnJlc3QpLE9lLm1hcCgoZnVuY3Rpb24odCxuKXt2YXIgbz10ZS5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gZS5pZD09PXQuaWR9KSl8fHt9LGY9ImZ1bmN0aW9uIj09dHlwZW9mIHQuc2hvdz90LnNob3coKTp0LnNob3csZD11LmRlZmF1bHQuZ2V0Rmlyc3REZWZpbmVkKG8udmFsdWUsdC53aWR0aCx0Lm1pbldpZHRoKSxwPXUuZGVmYXVsdC5nZXRGaXJzdERlZmluZWQoby52YWx1ZSx0LndpZHRoLHQubWF4V2lkdGgpLGc9dS5kZWZhdWx0LnNwbGl0UHJvcHMoTyhIZSxpLHQsZSkpLGg9dS5kZWZhdWx0LnNwbGl0UHJvcHModC5nZXRQcm9wcyhIZSxpLHQsZSkpLG09W2cuY2xhc3NOYW1lLHQuY2xhc3NOYW1lLGguY2xhc3NOYW1lXSxiPWEoe30sZy5zdHlsZSx0LnN0eWxlLGguc3R5bGUpLHk9YSh7fSxpLHtpc0V4cGFuZGVkOmMsY29sdW1uOmEoe30sdCksdmFsdWU6aS5yb3dbdC5pZF0scGl2b3RlZDp0LnBpdm90ZWQsZXhwYW5kZXI6dC5leHBhbmRlcixyZXNpemVkOnRlLHNob3c6Zix3aWR0aDpkLG1heFdpZHRoOnAsdGRQcm9wczpnLGNvbHVtblByb3BzOmgsY2xhc3NlczptLHN0eWxlczpifSksdj15LnZhbHVlLHc9dm9pZCAwLHg9dm9pZCAwLFM9dm9pZCAwLFA9dS5kZWZhdWx0Lm5vcm1hbGl6ZUNvbXBvbmVudCh0LkNlbGwseSx2KSxDPXQuQWdncmVnYXRlZHx8KHQuYWdncmVnYXRlP3QuQ2VsbDp4ZSksaz10LkV4cGFuZGVyfHx5ZSxUPXQuUGl2b3RWYWx1ZXx8dmUsaj13ZXx8ZnVuY3Rpb24oZSl7cmV0dXJuIGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLG51bGwsbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoayxlKSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChULGUpKX0sRT10LlBpdm90fHxqOyh5LnBpdm90ZWR8fHkuZXhwYW5kZXIpJiYoeS5leHBhbmRhYmxlPSEwLHc9ITAseS5waXZvdGVkJiYheS5zdWJSb3dzJiYoeS5leHBhbmRhYmxlPSExLHc9ITEpKSx5LnBpdm90ZWQ\/KHg9aS5yb3dbQl09PT10LmlkJiZ5LnN1YlJvd3MsUz1HLmluZGV4T2YodC5pZCk+Ry5pbmRleE9mKGkucm93W0JdKSYmeS5zdWJSb3dzLFA9eD91LmRlZmF1bHQubm9ybWFsaXplQ29tcG9uZW50KEUsYSh7fSx5LHt2YWx1ZTpyW0hdfSkscltIXSk6Uz91LmRlZmF1bHQubm9ybWFsaXplQ29tcG9uZW50KEMseSx2KTpudWxsKTp5LmFnZ3JlZ2F0ZWQmJihQPXUuZGVmYXVsdC5ub3JtYWxpemVDb21wb25lbnQoQyx5LHYpKSx5LmV4cGFuZGVyJiYoUD11LmRlZmF1bHQubm9ybWFsaXplQ29tcG9uZW50KGsseSxyW0hdKSxHJiYoeS5ncm91cGVkQnlQaXZvdCYmKFA9bnVsbCkseS5zdWJSb3dzfHxoZXx8KFA9bnVsbCkpKTt2YXIgUj13P2Z1bmN0aW9uKHQpe3ZhciByPXUuZGVmYXVsdC5jbG9uZShyZSk7cmV0dXJuIHI9Yz91LmRlZmF1bHQuc2V0KHIseS5uZXN0aW5nUGF0aCwhMSk6dS5kZWZhdWx0LnNldChyLHkubmVzdGluZ1BhdGgse30pLGUuc2V0U3RhdGVXaXRoRGF0YSh7ZXhwYW5kZWQ6cn0sKGZ1bmN0aW9uKCl7YWUmJmFlKHIseS5uZXN0aW5nUGF0aCx0KX0pKX06dm9pZCAwLE49e29uQ2xpY2s6Un07cmV0dXJuIGcucmVzdC5vbkNsaWNrJiYoTi5vbkNsaWNrPWZ1bmN0aW9uKGUpe2cucmVzdC5vbkNsaWNrKGUsUj9mdW5jdGlvbigpe3JldHVybiBSKGUpfTp2b2lkIDApfSksaC5yZXN0Lm9uQ2xpY2smJihOLm9uQ2xpY2s9ZnVuY3Rpb24oZSl7aC5yZXN0Lm9uQ2xpY2soZSxSP2Z1bmN0aW9uKCl7cmV0dXJuIFIoZSl9OnZvaWQgMCl9KSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChmZSxhKHtrZXk6bisiLSIrdC5pZCxjbGFzc05hbWU6KDAscy5kZWZhdWx0KShtLCFmJiYiaGlkZGVuIix5LmV4cGFuZGFibGUmJiJydC1leHBhbmRhYmxlIiwoeHx8UykmJiJydC1waXZvdCIpLHN0eWxlOmEoe30sYix7ZmxleDpkKyIgMCBhdXRvIix3aWR0aDp1LmRlZmF1bHQuYXNQeChkKSxtYXhXaWR0aDp1LmRlZmF1bHQuYXNQeChwKX0pfSxnLnJlc3QsaC5yZXN0LE4pLFApfSkpKSxpLnN1YlJvd3MmJmMmJmkuc3ViUm93cy5tYXAoKGZ1bmN0aW9uKGUscil7cmV0dXJuIHQoZSxyLGkubmVzdGluZ1BhdGgpfSkpLGhlJiYhaS5zdWJSb3dzJiZjJiZoZShpKSl9KHQscil9KSksemUubWFwKEplKSksX2U\/KG49ayhIZSx2b2lkIDAsdm9pZCAwLGUpLGM9dS5kZWZhdWx0LnNwbGl0UHJvcHMoVChIZSx2b2lkIDAsdm9pZCAwLGUpKSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChkZSxhKHtjbGFzc05hbWU6bi5jbGFzc05hbWUsc3R5bGU6YSh7fSxuLnN0eWxlLHttaW5XaWR0aDpLZSsicHgifSl9LG4ucmVzdCksbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQodWUsYSh7Y2xhc3NOYW1lOigwLHMuZGVmYXVsdCkoYy5jbGFzc05hbWUpLHN0eWxlOmMuc3R5bGV9LGMucmVzdCksT2UubWFwKHFlKSkpKTpudWxsKSxEJiZfP2wuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6InBhZ2luYXRpb24tYm90dG9tIn0saik6bnVsbCwhQWUubGVuZ3RoJiZsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChtZSxldCx1LmRlZmF1bHQubm9ybWFsaXplQ29tcG9uZW50KEkpKSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChnZSxhKHtsb2FkaW5nOlgsbG9hZGluZ1RleHQ6TX0sUWUpKSl9O3JldHVybiByP3IoSGUscnQsdGhpcyk6cnQoKX19XSksdH0oKDAsZi5kZWZhdWx0KSgoMCxjLmRlZmF1bHQpKGkuQ29tcG9uZW50KSkpO2gucHJvcFR5cGVzPXAuZGVmYXVsdCxoLmRlZmF1bHRQcm9wcz1kLmRlZmF1bHQsdC5kZWZhdWx0PWh9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPXdpbmRvdy5yZWFjdFJ9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbjsKLyohCiAgQ29weXJpZ2h0IChjKSAyMDE3IEplZCBXYXRzb24uCiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWUKICBodHRwOi8vamVkd2F0c29uLmdpdGh1Yi5pby9jbGFzc25hbWVzCiovIWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciByPXt9Lmhhc093blByb3BlcnR5O2Z1bmN0aW9uIGEoKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtpZihuKXt2YXIgbz10eXBlb2YgbjtpZigic3RyaW5nIj09PW98fCJudW1iZXIiPT09byllLnB1c2gobik7ZWxzZSBpZihBcnJheS5pc0FycmF5KG4pJiZuLmxlbmd0aCl7dmFyIGk9YS5hcHBseShudWxsLG4pO2kmJmUucHVzaChpKX1lbHNlIGlmKCJvYmplY3QiPT09bylmb3IodmFyIGwgaW4gbilyLmNhbGwobixsKSYmbltsXSYmZS5wdXNoKGwpfX1yZXR1cm4gZS5qb2luKCIgIil9ZS5leHBvcnRzPyhhLmRlZmF1bHQ9YSxlLmV4cG9ydHM9YSk6dm9pZCAwPT09KG49ZnVuY3Rpb24oKXtyZXR1cm4gYX0uYXBwbHkodCxbXSkpfHwoZS5leHBvcnRzPW4pfSgpfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgcj1hcmd1bWVudHNbdF07Zm9yKHZhciBuIGluIHIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsbikmJihlW25dPXJbbl0pfXJldHVybiBlfSxhPWkocigxKSksbz1pKHIoNCkpO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIGwoZSx0KXt2YXIgcj17fTtmb3IodmFyIG4gaW4gZSl0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiYocltuXT1lW25dKTtyZXR1cm4gcn1mdW5jdGlvbiBzKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpfWZ1bmN0aW9uIHUoZSl7cmV0dXJuIGZ1bmN0aW9uIGUodCl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOltdO2lmKHModCkpZm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspZSh0W25dLHIpO2Vsc2Ugci5wdXNoKHQpO3JldHVybiByfShlKS5qb2luKCIuIikucmVwbGFjZSgvXFsvZywiLiIpLnJlcGxhY2UoL1xdL2csIiIpLnNwbGl0KCIuIil9dC5kZWZhdWx0PXtnZXQ6ZnVuY3Rpb24oZSx0LHIpe2lmKCF0KXJldHVybiBlO3ZhciBuPXUodCksYT12b2lkIDA7dHJ5e2E9bi5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbdF19KSxlKX1jYXRjaChlKXt9cmV0dXJuIHZvaWQgMCE9PWE\/YTpyfSxzZXQ6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sdD1hcmd1bWVudHNbMV0scj1hcmd1bWVudHNbMl0sbj11KHQpLGE9dm9pZCAwLG89ZTtmb3IoOyhhPW4uc2hpZnQoKSkmJm4ubGVuZ3RoOylvW2FdfHwob1thXT17fSksbz1vW2FdO3JldHVybiBvW2FdPXIsZX0sdGFrZVJpZ2h0OmZ1bmN0aW9uKGUsdCl7dmFyIHI9dD5lLmxlbmd0aD8wOmUubGVuZ3RoLXQ7cmV0dXJuIGUuc2xpY2Uocil9LGxhc3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbZS5sZW5ndGgtMV19LG9yZGVyQnk6ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIGUuc29ydCgoZnVuY3Rpb24oZSxhKXtmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl7dmFyIGk9dFtvXSxsPSExPT09cltvXXx8ImRlc2MiPT09cltvXSxzPWkoZSxhKTtpZihzKXJldHVybiBsPy1zOnN9cmV0dXJuIHJbMF0\/ZVtuXS1hW25dOmFbbl0tZVtuXX0pKX0scmFuZ2U6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLHI9MDtyPGU7cisrKXQucHVzaChlKTtyZXR1cm4gdH0scmVtb3ZlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZmlsdGVyKChmdW5jdGlvbihyLG4pe3JldHVybiEhdChyKSYmKGUuc3BsaWNlKG4sMSksITApfSkpfSxjbG9uZTpmdW5jdGlvbihlKXt0cnl7cmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZSwoZnVuY3Rpb24oZSx0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90LnRvU3RyaW5nKCk6dH0pKSl9Y2F0Y2godCl7cmV0dXJuIGV9fSxnZXRGaXJzdERlZmluZWQ6ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PUFycmF5KGUpLHI9MDtyPGU7cisrKXRbcl09YXJndW1lbnRzW3JdO2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKWlmKHZvaWQgMCE9PXRbbl0pcmV0dXJuIHRbbl19LHN1bTpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdH0pLDApfSxtYWtlVGVtcGxhdGVDb21wb25lbnQ6ZnVuY3Rpb24oZSx0KXtpZighdCl0aHJvdyBuZXcgRXJyb3IoIk5vIGRpc3BsYXlOYW1lIGZvdW5kIGZvciB0ZW1wbGF0ZSBjb21wb25lbnQ6IixlKTt2YXIgcj1mdW5jdGlvbih0KXt2YXIgcj10LmNoaWxkcmVuLGk9dC5jbGFzc05hbWUscz1sKHQsWyJjaGlsZHJlbiIsImNsYXNzTmFtZSJdKTtyZXR1cm4gYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIsbih7Y2xhc3NOYW1lOigwLG8uZGVmYXVsdCkoZSxpKX0scykscil9O3JldHVybiByLmRpc3BsYXlOYW1lPXQscn0sZ3JvdXBCeTpmdW5jdGlvbihlLHQpe3JldHVybiBlLnJlZHVjZSgoZnVuY3Rpb24oZSxyLG4pe3ZhciBhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3QocixuKTpyW3RdO3JldHVybiBlW2FdPXMoZVthXSk\/ZVthXTpbXSxlW2FdLnB1c2gociksZX0pLHt9KX0saXNBcnJheTpzLHNwbGl0UHJvcHM6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jbGFzc05hbWUscj1lLnN0eWxlLG49bChlLFsiY2xhc3NOYW1lIiwic3R5bGUiXSk7cmV0dXJue2NsYXNzTmFtZTp0LHN0eWxlOnIscmVzdDpufHx7fX19LGNvbXBhY3RPYmplY3Q6ZnVuY3Rpb24oZSl7dmFyIHQ9e307Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmdm9pZCAwIT09ZVtyXSYmdm9pZCAwIT09ZVtyXSYmKHRbcl09ZVtyXSk7cmV0dXJuIHR9LGlzU29ydGluZ0Rlc2M6ZnVuY3Rpb24oZSl7cmV0dXJuISgiZGVzYyIhPT1lLnNvcnQmJiEwIT09ZS5kZXNjJiYhMSE9PWUuYXNjKX0sbm9ybWFsaXplQ29tcG9uZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxyPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTplO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlP09iamVjdC5nZXRQcm90b3R5cGVPZihlKS5pc1JlYWN0Q29tcG9uZW50P2EuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGUsdCk6ZSh0KTpyfSxhc1B4OmZ1bmN0aW9uKGUpe3JldHVybiBlPU51bWJlcihlKSxOdW1iZXIuaXNOYU4oZSk\/bnVsbDplKyJweCJ9fX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9W107cmV0dXJuIHQudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoKGZ1bmN0aW9uKHQpe3ZhciByPWZ1bmN0aW9uKGUsdCl7dmFyIHI9ZVsxXXx8IiIsbj1lWzNdO2lmKCFuKXJldHVybiByO2lmKHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBidG9hKXt2YXIgYT0oaT1uLCIvKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsIitidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShpKSkpKSsiICovIiksbz1uLnNvdXJjZXMubWFwKChmdW5jdGlvbihlKXtyZXR1cm4iLyojIHNvdXJjZVVSTD0iK24uc291cmNlUm9vdCtlKyIgKi8ifSkpO3JldHVybltyXS5jb25jYXQobykuY29uY2F0KFthXSkuam9pbigiXG4iKX12YXIgaTtyZXR1cm5bcl0uam9pbigiXG4iKX0odCxlKTtyZXR1cm4gdFsyXT8iQG1lZGlhICIrdFsyXSsieyIrcisifSI6cn0pKS5qb2luKCIiKX0sdC5pPWZ1bmN0aW9uKGUscil7InN0cmluZyI9PXR5cGVvZiBlJiYoZT1bW251bGwsZSwiIl1dKTtmb3IodmFyIG49e30sYT0wO2E8dGhpcy5sZW5ndGg7YSsrKXt2YXIgbz10aGlzW2FdWzBdO251bGwhPW8mJihuW29dPSEwKX1mb3IoYT0wO2E8ZS5sZW5ndGg7YSsrKXt2YXIgaT1lW2FdO251bGwhPWlbMF0mJm5baVswXV18fChyJiYhaVsyXT9pWzJdPXI6ciYmKGlbMl09IigiK2lbMl0rIikgYW5kICgiK3IrIikiKSx0LnB1c2goaSkpfX0sdH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbixhLG89e30saT0obj1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cmJmRvY3VtZW50JiZkb2N1bWVudC5hbGwmJiF3aW5kb3cuYXRvYn0sZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09YSYmKGE9bi5hcHBseSh0aGlzLGFyZ3VtZW50cykpLGF9KSxsPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ\/dC5xdWVyeVNlbGVjdG9yKGUpOmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZSl9LHM9ZnVuY3Rpb24oZSl7dmFyIHQ9e307cmV0dXJuIGZ1bmN0aW9uKGUscil7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUpcmV0dXJuIGUoKTtpZih2b2lkIDA9PT10W2VdKXt2YXIgbj1sLmNhbGwodGhpcyxlLHIpO2lmKHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCYmbiBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCl0cnl7bj1uLmNvbnRlbnREb2N1bWVudC5oZWFkfWNhdGNoKGUpe249bnVsbH10W2VdPW59cmV0dXJuIHRbZV19fSgpLHU9bnVsbCxjPTAsZj1bXSxkPXIoMTcpO2Z1bmN0aW9uIHAoZSx0KXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXSxhPW9bbi5pZF07aWYoYSl7YS5yZWZzKys7Zm9yKHZhciBpPTA7aTxhLnBhcnRzLmxlbmd0aDtpKyspYS5wYXJ0c1tpXShuLnBhcnRzW2ldKTtmb3IoO2k8bi5wYXJ0cy5sZW5ndGg7aSsrKWEucGFydHMucHVzaCh2KG4ucGFydHNbaV0sdCkpfWVsc2V7dmFyIGw9W107Zm9yKGk9MDtpPG4ucGFydHMubGVuZ3RoO2krKylsLnB1c2godihuLnBhcnRzW2ldLHQpKTtvW24uaWRdPXtpZDpuLmlkLHJlZnM6MSxwYXJ0czpsfX19fWZ1bmN0aW9uIGcoZSx0KXtmb3IodmFyIHI9W10sbj17fSxhPTA7YTxlLmxlbmd0aDthKyspe3ZhciBvPWVbYV0saT10LmJhc2U\/b1swXSt0LmJhc2U6b1swXSxsPXtjc3M6b1sxXSxtZWRpYTpvWzJdLHNvdXJjZU1hcDpvWzNdfTtuW2ldP25baV0ucGFydHMucHVzaChsKTpyLnB1c2gobltpXT17aWQ6aSxwYXJ0czpbbF19KX1yZXR1cm4gcn1mdW5jdGlvbiBoKGUsdCl7dmFyIHI9cyhlLmluc2VydEludG8pO2lmKCFyKXRocm93IG5ldyBFcnJvcigiQ291bGRuJ3QgZmluZCBhIHN0eWxlIHRhcmdldC4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSB2YWx1ZSBmb3IgdGhlICdpbnNlcnRJbnRvJyBwYXJhbWV0ZXIgaXMgaW52YWxpZC4iKTt2YXIgbj1mW2YubGVuZ3RoLTFdO2lmKCJ0b3AiPT09ZS5pbnNlcnRBdCluP24ubmV4dFNpYmxpbmc\/ci5pbnNlcnRCZWZvcmUodCxuLm5leHRTaWJsaW5nKTpyLmFwcGVuZENoaWxkKHQpOnIuaW5zZXJ0QmVmb3JlKHQsci5maXJzdENoaWxkKSxmLnB1c2godCk7ZWxzZSBpZigiYm90dG9tIj09PWUuaW5zZXJ0QXQpci5hcHBlbmRDaGlsZCh0KTtlbHNle2lmKCJvYmplY3QiIT10eXBlb2YgZS5pbnNlcnRBdHx8IWUuaW5zZXJ0QXQuYmVmb3JlKXRocm93IG5ldyBFcnJvcigiW1N0eWxlIExvYWRlcl1cblxuIEludmFsaWQgdmFsdWUgZm9yIHBhcmFtZXRlciAnaW5zZXJ0QXQnICgnb3B0aW9ucy5pbnNlcnRBdCcpIGZvdW5kLlxuIE11c3QgYmUgJ3RvcCcsICdib3R0b20nLCBvciBPYmplY3QuXG4gKGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrLWNvbnRyaWIvc3R5bGUtbG9hZGVyI2luc2VydGF0KVxuIik7dmFyIGE9cyhlLmluc2VydEF0LmJlZm9yZSxyKTtyLmluc2VydEJlZm9yZSh0LGEpfX1mdW5jdGlvbiBtKGUpe2lmKG51bGw9PT1lLnBhcmVudE5vZGUpcmV0dXJuITE7ZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpO3ZhciB0PWYuaW5kZXhPZihlKTt0Pj0wJiZmLnNwbGljZSh0LDEpfWZ1bmN0aW9uIGIoZSl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtpZih2b2lkIDA9PT1lLmF0dHJzLnR5cGUmJihlLmF0dHJzLnR5cGU9InRleHQvY3NzIiksdm9pZCAwPT09ZS5hdHRycy5ub25jZSl7dmFyIG49ZnVuY3Rpb24oKXswO3JldHVybiByLm5jfSgpO24mJihlLmF0dHJzLm5vbmNlPW4pfXJldHVybiB5KHQsZS5hdHRycyksaChlLHQpLHR9ZnVuY3Rpb24geShlLHQpe09iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKHIpe2Uuc2V0QXR0cmlidXRlKHIsdFtyXSl9KSl9ZnVuY3Rpb24gdihlLHQpe3ZhciByLG4sYSxvO2lmKHQudHJhbnNmb3JtJiZlLmNzcyl7aWYoIShvPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnRyYW5zZm9ybT90LnRyYW5zZm9ybShlLmNzcyk6dC50cmFuc2Zvcm0uZGVmYXVsdChlLmNzcykpKXJldHVybiBmdW5jdGlvbigpe307ZS5jc3M9b31pZih0LnNpbmdsZXRvbil7dmFyIGk9YysrO3I9dXx8KHU9Yih0KSksbj1TLmJpbmQobnVsbCxyLGksITEpLGE9Uy5iaW5kKG51bGwscixpLCEwKX1lbHNlIGUuc291cmNlTWFwJiYiZnVuY3Rpb24iPT10eXBlb2YgVVJMJiYiZnVuY3Rpb24iPT10eXBlb2YgVVJMLmNyZWF0ZU9iamVjdFVSTCYmImZ1bmN0aW9uIj09dHlwZW9mIFVSTC5yZXZva2VPYmplY3RVUkwmJiJmdW5jdGlvbiI9PXR5cGVvZiBCbG9iJiYiZnVuY3Rpb24iPT10eXBlb2YgYnRvYT8ocj1mdW5jdGlvbihlKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7cmV0dXJuIHZvaWQgMD09PWUuYXR0cnMudHlwZSYmKGUuYXR0cnMudHlwZT0idGV4dC9jc3MiKSxlLmF0dHJzLnJlbD0ic3R5bGVzaGVldCIseSh0LGUuYXR0cnMpLGgoZSx0KSx0fSh0KSxuPUMuYmluZChudWxsLHIsdCksYT1mdW5jdGlvbigpe20ociksci5ocmVmJiZVUkwucmV2b2tlT2JqZWN0VVJMKHIuaHJlZil9KToocj1iKHQpLG49UC5iaW5kKG51bGwsciksYT1mdW5jdGlvbigpe20ocil9KTtyZXR1cm4gbihlKSxmdW5jdGlvbih0KXtpZih0KXtpZih0LmNzcz09PWUuY3NzJiZ0Lm1lZGlhPT09ZS5tZWRpYSYmdC5zb3VyY2VNYXA9PT1lLnNvdXJjZU1hcClyZXR1cm47bihlPXQpfWVsc2UgYSgpfX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIERFQlVHJiZERUJVRyYmIm9iamVjdCIhPXR5cGVvZiBkb2N1bWVudCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBzdHlsZS1sb2FkZXIgY2Fubm90IGJlIHVzZWQgaW4gYSBub24tYnJvd3NlciBlbnZpcm9ubWVudCIpOyh0PXR8fHt9KS5hdHRycz0ib2JqZWN0Ij09dHlwZW9mIHQuYXR0cnM\/dC5hdHRyczp7fSx0LnNpbmdsZXRvbnx8ImJvb2xlYW4iPT10eXBlb2YgdC5zaW5nbGV0b258fCh0LnNpbmdsZXRvbj1pKCkpLHQuaW5zZXJ0SW50b3x8KHQuaW5zZXJ0SW50bz0iaGVhZCIpLHQuaW5zZXJ0QXR8fCh0Lmluc2VydEF0PSJib3R0b20iKTt2YXIgcj1nKGUsdCk7cmV0dXJuIHAocix0KSxmdW5jdGlvbihlKXtmb3IodmFyIG49W10sYT0wO2E8ci5sZW5ndGg7YSsrKXt2YXIgaT1yW2FdOyhsPW9baS5pZF0pLnJlZnMtLSxuLnB1c2gobCl9ZSYmcChnKGUsdCksdCk7Zm9yKGE9MDthPG4ubGVuZ3RoO2ErKyl7dmFyIGw7aWYoMD09PShsPW5bYV0pLnJlZnMpe2Zvcih2YXIgcz0wO3M8bC5wYXJ0cy5sZW5ndGg7cysrKWwucGFydHNbc10oKTtkZWxldGUgb1tsLmlkXX19fX07dmFyIHcseD0odz1bXSxmdW5jdGlvbihlLHQpe3JldHVybiB3W2VdPXQsdy5maWx0ZXIoQm9vbGVhbikuam9pbigiXG4iKX0pO2Z1bmN0aW9uIFMoZSx0LHIsbil7dmFyIGE9cj8iIjpuLmNzcztpZihlLnN0eWxlU2hlZXQpZS5zdHlsZVNoZWV0LmNzc1RleHQ9eCh0LGEpO2Vsc2V7dmFyIG89ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYSksaT1lLmNoaWxkTm9kZXM7aVt0XSYmZS5yZW1vdmVDaGlsZChpW3RdKSxpLmxlbmd0aD9lLmluc2VydEJlZm9yZShvLGlbdF0pOmUuYXBwZW5kQ2hpbGQobyl9fWZ1bmN0aW9uIFAoZSx0KXt2YXIgcj10LmNzcyxuPXQubWVkaWE7aWYobiYmZS5zZXRBdHRyaWJ1dGUoIm1lZGlhIixuKSxlLnN0eWxlU2hlZXQpZS5zdHlsZVNoZWV0LmNzc1RleHQ9cjtlbHNle2Zvcig7ZS5maXJzdENoaWxkOyllLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCk7ZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShyKSl9fWZ1bmN0aW9uIEMoZSx0LHIpe3ZhciBuPXIuY3NzLGE9ci5zb3VyY2VNYXAsbz12b2lkIDA9PT10LmNvbnZlcnRUb0Fic29sdXRlVXJscyYmYTsodC5jb252ZXJ0VG9BYnNvbHV0ZVVybHN8fG8pJiYobj1kKG4pKSxhJiYobis9IlxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCwiK2J0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGEpKSkpKyIgKi8iKTt2YXIgaT1uZXcgQmxvYihbbl0se3R5cGU6InRleHQvY3NzIn0pLGw9ZS5ocmVmO2UuaHJlZj1VUkwuY3JlYXRlT2JqZWN0VVJMKGkpLGwmJlVSTC5yZXZva2VPYmplY3RVUkwobCl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4ua2V5LG4pfX1yZXR1cm4gZnVuY3Rpb24odCxyLG4pe3JldHVybiByJiZlKHQucHJvdG90eXBlLHIpLG4mJmUodCxuKSx0fX0oKTtmdW5jdGlvbiBhKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbyhlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ\/ZTp0fXQuZGVmYXVsdD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBhKHRoaXMsdCksbyh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y\/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksbih0LFt7a2V5OiJVTlNBRkVfY29tcG9uZW50V2lsbE1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2V0U3RhdGVXaXRoRGF0YSh0aGlzLmdldERhdGFNb2RlbCh0aGlzLmdldFJlc29sdmVkU3RhdGUoKSkpfX0se2tleToiY29tcG9uZW50RGlkTW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5maXJlRmV0Y2hEYXRhKCl9fSx7a2V5OiJVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLmdldFJlc29sdmVkU3RhdGUoKSxuPXRoaXMuZ2V0UmVzb2x2ZWRTdGF0ZShlLHQpO1sic29ydGVkIiwiZmlsdGVyZWQiLCJyZXNpemVkIiwiZXhwYW5kZWQiXS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD0iZGVmYXVsdCIrKGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKSk7SlNPTi5zdHJpbmdpZnkoclt0XSkhPT1KU09OLnN0cmluZ2lmeShuW3RdKSYmKG5bZV09blt0XSl9KSk7WyJzb3J0YWJsZSIsImZpbHRlcmFibGUiLCJyZXNpemFibGUiXS5mb3JFYWNoKChmdW5jdGlvbihlKXtpZihyW2VdIT09bltlXSl7dmFyIHQ9ZS5yZXBsYWNlKCJhYmxlIiwiIikrImVkIixhPSJkZWZhdWx0IisodC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpKTtuW3RdPW5bYV19fSkpLHIuZGF0YT09PW4uZGF0YSYmci5jb2x1bW5zPT09bi5jb2x1bW5zJiZyLnBpdm90Qnk9PT1uLnBpdm90QnkmJnIuc29ydGVkPT09bi5zb3J0ZWQmJnIuZmlsdGVyZWQ9PT1uLmZpbHRlcmVkfHx0aGlzLnNldFN0YXRlV2l0aERhdGEodGhpcy5nZXREYXRhTW9kZWwobikpfX0se2tleToic2V0U3RhdGVXaXRoRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLG49dGhpcy5nZXRSZXNvbHZlZFN0YXRlKCksYT10aGlzLmdldFJlc29sdmVkU3RhdGUoe30sZSksbz1hLmZyZWV6ZVdoZW5FeHBhbmRlZDtpZihhLmZyb3plbj0hMSxvKWZvcih2YXIgaT1PYmplY3Qua2V5cyhhLmV4cGFuZGVkKSxsPTA7bDxpLmxlbmd0aDtsKyspaWYoYS5leHBhbmRlZFtpW2xdXSl7YS5mcm96ZW49ITA7YnJlYWt9cmV0dXJuKG4uZnJvemVuJiYhYS5mcm96ZW58fG4uc29ydGVkIT09YS5zb3J0ZWR8fG4uZmlsdGVyZWQhPT1hLmZpbHRlcmVkfHxuLnNob3dGaWx0ZXJzIT09YS5zaG93RmlsdGVyc3x8IWEuZnJvemVuJiZuLnJlc29sdmVkRGF0YSE9PWEucmVzb2x2ZWREYXRhKSYmKChuLnNvcnRlZCE9PWEuc29ydGVkJiZ0aGlzLnByb3BzLmNvbGxhcHNlT25Tb3J0aW5nQ2hhbmdlfHxuLmZpbHRlcmVkIT09YS5maWx0ZXJlZHx8bi5zaG93RmlsdGVycyE9PWEuc2hvd0ZpbHRlcnN8fG4uc29ydGVkRGF0YSYmIWEuZnJvemVuJiZuLnJlc29sdmVkRGF0YSE9PWEucmVzb2x2ZWREYXRhJiZ0aGlzLnByb3BzLmNvbGxhcHNlT25EYXRhQ2hhbmdlKSYmKGEuZXhwYW5kZWQ9e30pLE9iamVjdC5hc3NpZ24oYSx0aGlzLmdldFNvcnRlZERhdGEoYSkpKSxuLmZpbHRlcmVkIT09YS5maWx0ZXJlZCYmKGEucGFnZT0wKSxhLnNvcnRlZERhdGEmJihhLnBhZ2VzPWEubWFudWFsP2EucGFnZXM6TWF0aC5jZWlsKGEuc29ydGVkRGF0YS5sZW5ndGgvYS5wYWdlU2l6ZSksYS5wYWdlPU1hdGgubWF4KGEucGFnZT49YS5wYWdlcz9hLnBhZ2VzLTE6YS5wYWdlLDApKSx0aGlzLnNldFN0YXRlKGEsKGZ1bmN0aW9uKCl7dCYmdCgpLG4ucGFnZT09PWEucGFnZSYmbi5wYWdlU2l6ZT09PWEucGFnZVNpemUmJm4uc29ydGVkPT09YS5zb3J0ZWQmJm4uZmlsdGVyZWQ9PT1hLmZpbHRlcmVkfHxyLmZpcmVGZXRjaERhdGEoKX0pKX19XSksdH0oZSl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1mdW5jdGlvbihlLHQpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGU7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKSlyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgcj1bXSxuPSEwLGE9ITEsbz12b2lkIDA7dHJ5e2Zvcih2YXIgaSxsPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEobj0oaT1sLm5leHQoKSkuZG9uZSkmJihyLnB1c2goaS52YWx1ZSksIXR8fHIubGVuZ3RoIT09dCk7bj0hMCk7fWNhdGNoKGUpe2E9ITAsbz1lfWZpbmFsbHl7dHJ5eyFuJiZsLnJldHVybiYmbC5yZXR1cm4oKX1maW5hbGx5e2lmKGEpdGhyb3cgb319cmV0dXJuIHJ9KGUsdCk7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpfSxhPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxvPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPWFyZ3VtZW50c1t0XTtmb3IodmFyIG4gaW4gcilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocixuKSYmKGVbbl09cltuXSl9cmV0dXJuIGV9LGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLmtleSxuKX19cmV0dXJuIGZ1bmN0aW9uKHQscixuKXtyZXR1cm4gciYmZSh0LnByb3RvdHlwZSxyKSxuJiZlKHQsbiksdH19KCksbD11KHIoMSkpLHM9dShyKDUpKTtmdW5jdGlvbiB1KGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU\/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBjKGUsdCxyKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPXIsZX1mdW5jdGlvbiBmKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgdD0wLHI9QXJyYXkoZS5sZW5ndGgpO3Q8ZS5sZW5ndGg7dCsrKXJbdF09ZVt0XTtyZXR1cm4gcn1yZXR1cm4gQXJyYXkuZnJvbShlKX1mdW5jdGlvbiBkKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gcChlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ\/ZTp0fXQuZGVmYXVsdD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBkKHRoaXMsdCkscCh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y\/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksaSh0LFt7a2V5OiJnZXRSZXNvbHZlZFN0YXRlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBvKHt9LHMuZGVmYXVsdC5jb21wYWN0T2JqZWN0KHRoaXMuc3RhdGUpLHMuZGVmYXVsdC5jb21wYWN0T2JqZWN0KHRoaXMucHJvcHMpLHMuZGVmYXVsdC5jb21wYWN0T2JqZWN0KHQpLHMuZGVmYXVsdC5jb21wYWN0T2JqZWN0KGUpKX19LHtrZXk6ImdldERhdGFNb2RlbCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxyPWUuY29sdW1ucyxpPWUucGl2b3RCeSx1PXZvaWQgMD09PWk\/W106aSxkPWUuZGF0YSxwPWUucGl2b3RJREtleSxnPWUucGl2b3RWYWxLZXksaD1lLnN1YlJvd3NLZXksbT1lLmFnZ3JlZ2F0ZWRLZXksYj1lLm5lc3RpbmdMZXZlbEtleSx5PWUub3JpZ2luYWxLZXksdj1lLmluZGV4S2V5LHc9ZS5ncm91cGVkQnlQaXZvdEtleSx4PWUuU3ViQ29tcG9uZW50LFM9ITE7ci5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmNvbHVtbnMmJihTPSEwKX0pKTt2YXIgUD1bXS5jb25jYXQoZihyKSksQz1yLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmV4cGFuZGVyfHxlLmNvbHVtbnMmJmUuY29sdW1ucy5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4gZS5leHBhbmRlcn0pKX0pKTtDJiYhQy5leHBhbmRlciYmKEM9Qy5jb2x1bW5zLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmV4cGFuZGVyfSkpKSx4JiYhQyYmKFA9W0M9e2V4cGFuZGVyOiEwfV0uY29uY2F0KGYoUCkpKTt2YXIgTz1mdW5jdGlvbihlLHIpe3ZhciBuPWZ1bmN0aW9uKGUscil7dmFyIG49dm9pZCAwO2lmKChuPWUuZXhwYW5kZXI\/byh7fSx0LnByb3BzLmNvbHVtbix0LnByb3BzLmV4cGFuZGVyRGVmYXVsdHMsZSk6byh7fSx0LnByb3BzLmNvbHVtbixlKSkubWF4V2lkdGg8bi5taW5XaWR0aCYmKG4ubWluV2lkdGg9bi5tYXhXaWR0aCksciYmKG4ucGFyZW50Q29sdW1uPXIpLCJzdHJpbmciPT10eXBlb2Ygbi5hY2Nlc3Nvcil7dmFyIGk9ZnVuY3Rpb24oKXtuLmlkPW4uaWR8fG4uYWNjZXNzb3I7dmFyIGU9bi5hY2Nlc3NvcjtyZXR1cm4gbi5hY2Nlc3Nvcj1mdW5jdGlvbih0KXtyZXR1cm4gcy5kZWZhdWx0LmdldCh0LGUpfSx7djpufX0oKTtpZigib2JqZWN0Ij09PSh2b2lkIDA9PT1pPyJ1bmRlZmluZWQiOmEoaSkpKXJldHVybiBpLnZ9aWYobi5hY2Nlc3NvciYmIW4uaWQpdGhyb3cgY29uc29sZS53YXJuKG4pLG5ldyBFcnJvcigiQSBjb2x1bW4gaWQgaXMgcmVxdWlyZWQgaWYgdXNpbmcgYSBub24tc3RyaW5nIGFjY2Vzc29yIGZvciBjb2x1bW4gYWJvdmUuIik7cmV0dXJuIG4uYWNjZXNzb3J8fChuLmFjY2Vzc29yPWZ1bmN0aW9uKGUpe30pLG59KGUscik7cmV0dXJuIGsucHVzaChuKSxufSxrPVtdLFQ9UC5tYXAoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sdW1ucz9vKHt9LGUse2NvbHVtbnM6ZS5jb2x1bW5zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIE8odCxlKX0pKX0pOk8oZSl9KSkuc2xpY2UoKSxqPVtdLEU9KFQ9KFQ9VC5tYXAoKGZ1bmN0aW9uKGUsdCl7aWYoZS5jb2x1bW5zKXt2YXIgcj1lLmNvbHVtbnMuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4hKHUuaW5kZXhPZihlLmlkKT4tMSkmJnMuZGVmYXVsdC5nZXRGaXJzdERlZmluZWQoZS5zaG93LCEwKX0pKTtyZXR1cm4gbyh7fSxlLHtjb2x1bW5zOnJ9KX1yZXR1cm4gZX0pKSkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZS5jb2x1bW5zP2UuY29sdW1ucy5sZW5ndGg6ISh1LmluZGV4T2YoZS5pZCk+LTEpJiZzLmRlZmF1bHQuZ2V0Rmlyc3REZWZpbmVkKGUuc2hvdywhMCl9KSkpLmZpbmRJbmRleCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucGl2b3R9KSk7dS5sZW5ndGgmJmZ1bmN0aW9uKCl7dmFyIGU9W107dS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgcj1rLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkPT09dH0pKTtyJiZlLnB1c2gocil9KSk7dmFyIHI9ZS5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJmU9PT10LnBhcmVudENvbHVtbiYmdC5wYXJlbnRDb2x1bW59KSxlWzBdLnBhcmVudENvbHVtbiksbj1TJiZyLkhlYWRlcixhPXtIZWFkZXI6bj1ufHxmdW5jdGlvbigpe3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic3Ryb25nIixudWxsLCJQaXZvdGVkIil9LGNvbHVtbnM6ZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBvKHt9LHQucHJvcHMucGl2b3REZWZhdWx0cyxlLHtwaXZvdGVkOiEwfSl9KSl9O0U+PTA\/KGE9byh7fSxUW0VdLGEpLFQuc3BsaWNlKEUsMSxhKSk6VC51bnNoaWZ0KGEpfSgpO3ZhciBSPVtdLE49W10sQT1mdW5jdGlvbihlLHIpe1IucHVzaChvKHt9LHQucHJvcHMuY29sdW1uLHIse2NvbHVtbnM6ZX0pKSxOPVtdfTtULmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7aWYoZS5jb2x1bW5zKXJldHVybiBqPWouY29uY2F0KGUuY29sdW1ucyksTi5sZW5ndGg+MCYmQShOKSx2b2lkIEEoZS5jb2x1bW5zLGUpO2oucHVzaChlKSxOLnB1c2goZSl9KSksUyYmTi5sZW5ndGg+MCYmQShOKTt2YXIgRD1kLm1hcCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24gZSh0LHIpe3ZhciBuLGE9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0\/YXJndW1lbnRzWzJdOjAsbz0oYyhuPXt9LHksdCksYyhuLHYsciksYyhuLGgsdFtoXSksYyhuLGIsYSksbik7cmV0dXJuIGsuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5leHBhbmRlcnx8KG9bZS5pZF09ZS5hY2Nlc3Nvcih0KSl9KSksb1toXSYmKG9baF09b1toXS5tYXAoKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxyLGErMSl9KSkpLG99KGUsdCl9KSksej1mdW5jdGlvbihlKXt2YXIgdD17fTtyZXR1cm4gXy5mb3JFYWNoKChmdW5jdGlvbihyKXt2YXIgbj1lLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGVbci5pZF19KSk7dFtyLmlkXT1yLmFnZ3JlZ2F0ZShuLGUpfSkpLHR9LF89ai5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiFlLmV4cGFuZGVyJiZlLmFnZ3JlZ2F0ZX0pKTtyZXR1cm4gdS5sZW5ndGgmJihEPWZ1bmN0aW9uIGUodCxyKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MDtpZihhPT09ci5sZW5ndGgpcmV0dXJuIHQ7dmFyIGk9T2JqZWN0LmVudHJpZXMocy5kZWZhdWx0Lmdyb3VwQnkodCxyW2FdKSkubWFwKChmdW5jdGlvbihlKXt2YXIgdCxvPW4oZSwyKSxpPW9bMF0sbD1vWzFdO3JldHVybiBjKHQ9e30scCxyW2FdKSxjKHQsZyxpKSxjKHQsclthXSxpKSxjKHQsaCxsKSxjKHQsYixhKSxjKHQsdywhMCksdH0pKTtyZXR1cm4gaT1pLm1hcCgoZnVuY3Rpb24odCl7dmFyIG4saT1lKHRbaF0scixhKzEpO3JldHVybiBvKHt9LHQsKGMobj17fSxoLGkpLGMobixtLCEwKSxuKSx6KGkpKX0pKX0oRCx1KSksbyh7fSxlLHtyZXNvbHZlZERhdGE6RCxhbGxWaXNpYmxlQ29sdW1uczpqLGhlYWRlckdyb3VwczpSLGFsbERlY29yYXRlZENvbHVtbnM6ayxoYXNIZWFkZXJHcm91cHM6U30pfX0se2tleToiZ2V0U29ydGVkRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYW51YWwscj1lLnNvcnRlZCxuPWUuZmlsdGVyZWQsYT1lLmRlZmF1bHRGaWx0ZXJNZXRob2Qsbz1lLnJlc29sdmVkRGF0YSxpPWUuYWxsVmlzaWJsZUNvbHVtbnMsbD1lLmFsbERlY29yYXRlZENvbHVtbnMscz17fTtyZXR1cm4gbC5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNvcnRNZXRob2R9KSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7c1tlLmlkXT1lLnNvcnRNZXRob2R9KSkse3NvcnRlZERhdGE6dD9vOnRoaXMuc29ydERhdGEodGhpcy5maWx0ZXJEYXRhKG8sbixhLGkpLHIscyl9fX0se2tleToiZmlyZUZldGNoRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnByb3BzLm9uRmV0Y2hEYXRhKHRoaXMuZ2V0UmVzb2x2ZWRTdGF0ZSgpLHRoaXMpfX0se2tleToiZ2V0UHJvcE9yU3RhdGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBzLmRlZmF1bHQuZ2V0Rmlyc3REZWZpbmVkKHRoaXMucHJvcHNbZV0sdGhpcy5zdGF0ZVtlXSl9fSx7a2V5OiJnZXRTdGF0ZU9yUHJvcCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHMuZGVmYXVsdC5nZXRGaXJzdERlZmluZWQodGhpcy5zdGF0ZVtlXSx0aGlzLnByb3BzW2VdKX19LHtrZXk6ImZpbHRlckRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBhPXRoaXMsaT1lO3JldHVybiB0Lmxlbmd0aCYmKGk9KGk9dC5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7dmFyIGE9bi5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gZS5pZD09PXQuaWR9KSk7aWYoIWF8fCExPT09YS5maWx0ZXJhYmxlKXJldHVybiBlO3ZhciBvPWEuZmlsdGVyTWV0aG9kfHxyO3JldHVybiBhLmZpbHRlckFsbD9vKHQsZSxhKTplLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIG8odCxlLGEpfSkpfSksaSkpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGVbYS5wcm9wcy5zdWJSb3dzS2V5XT9vKHt9LGUsYyh7fSxhLnByb3BzLnN1YlJvd3NLZXksYS5maWx0ZXJEYXRhKGVbYS5wcm9wcy5zdWJSb3dzS2V5XSx0LHIsbikpKTplfSkpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIWVbYS5wcm9wcy5zdWJSb3dzS2V5XXx8ZVthLnByb3BzLnN1YlJvd3NLZXldLmxlbmd0aD4wfSkpKSxpfX0se2tleToic29ydERhdGEiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcyxuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fTtpZighdC5sZW5ndGgpcmV0dXJuIGU7dmFyIGE9KHRoaXMucHJvcHMub3JkZXJCeU1ldGhvZHx8cy5kZWZhdWx0Lm9yZGVyQnkpKGUsdC5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBuW2UuaWRdP2Z1bmN0aW9uKHQscil7cmV0dXJuIG5bZS5pZF0odFtlLmlkXSxyW2UuaWRdLGUuZGVzYyl9OmZ1bmN0aW9uKHQsbil7cmV0dXJuIHIucHJvcHMuZGVmYXVsdFNvcnRNZXRob2QodFtlLmlkXSxuW2UuaWRdLGUuZGVzYyl9fSkpLHQubWFwKChmdW5jdGlvbihlKXtyZXR1cm4hZS5kZXNjfSkpLHRoaXMucHJvcHMuaW5kZXhLZXkpO3JldHVybiBhLmZvckVhY2goKGZ1bmN0aW9uKGUpe2Vbci5wcm9wcy5zdWJSb3dzS2V5XSYmKGVbci5wcm9wcy5zdWJSb3dzS2V5XT1yLnNvcnREYXRhKGVbci5wcm9wcy5zdWJSb3dzS2V5XSx0LG4pKX0pKSxhfX0se2tleToiZ2V0TWluUm93cyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gcy5kZWZhdWx0LmdldEZpcnN0RGVmaW5lZCh0aGlzLnByb3BzLm1pblJvd3MsdGhpcy5nZXRTdGF0ZU9yUHJvcCgicGFnZVNpemUiKSl9fSx7a2V5OiJvblBhZ2VDaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMscj10Lm9uUGFnZUNoYW5nZSxuPXQuY29sbGFwc2VPblBhZ2VDaGFuZ2UsYT17cGFnZTplfTtuJiYoYS5leHBhbmRlZD17fSksdGhpcy5zZXRTdGF0ZVdpdGhEYXRhKGEsKGZ1bmN0aW9uKCl7ciYmcihlKX0pKX19LHtrZXk6Im9uUGFnZVNpemVDaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMub25QYWdlU2l6ZUNoYW5nZSxyPXRoaXMuZ2V0UmVzb2x2ZWRTdGF0ZSgpLG49ci5wYWdlU2l6ZSpyLnBhZ2UsYT1NYXRoLmZsb29yKG4vZSk7dGhpcy5zZXRTdGF0ZVdpdGhEYXRhKHtwYWdlU2l6ZTplLHBhZ2U6YX0sKGZ1bmN0aW9uKCl7dCYmdChlLGEpfSkpfX0se2tleToic29ydENvbHVtbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLmdldFJlc29sdmVkU3RhdGUoKSxuPXIuc29ydGVkLGE9ci5za2lwTmV4dFNvcnQsbz1yLmRlZmF1bHRTb3J0RGVzYyxpPWUuaGFzT3duUHJvcGVydHkoImRlZmF1bHRTb3J0RGVzYyIpP2UuZGVmYXVsdFNvcnREZXNjOm8sbD0haTtpZihhKXRoaXMuc2V0U3RhdGVXaXRoRGF0YSh7c2tpcE5leHRTb3J0OiExfSk7ZWxzZXt2YXIgdT10aGlzLnByb3BzLm9uU29ydGVkQ2hhbmdlLGM9cy5kZWZhdWx0LmNsb25lKG58fFtdKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRlc2M9cy5kZWZhdWx0LmlzU29ydGluZ0Rlc2MoZSksZX0pKTtpZihzLmRlZmF1bHQuaXNBcnJheShlKSkhZnVuY3Rpb24oKXt2YXIgcj1jLmZpbmRJbmRleCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWQ9PT1lWzBdLmlkfSkpO3I+LTE\/KGNbcl0uZGVzYz09PWw\/dD9jLnNwbGljZShyLGUubGVuZ3RoKTplLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7Y1tyK3RdLmRlc2M9aX0pKTplLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7Y1tyK3RdLmRlc2M9bH0pKSx0fHwoYz1jLnNsaWNlKHIsZS5sZW5ndGgpKSk6Yz10P2MuY29uY2F0KGUubWFwKChmdW5jdGlvbihlKXtyZXR1cm57aWQ6ZS5pZCxkZXNjOml9fSkpKTplLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJue2lkOmUuaWQsZGVzYzppfX0pKX0oKTtlbHNle3ZhciBmPWMuZmluZEluZGV4KChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZD09PWUuaWR9KSk7aWYoZj4tMSl7dmFyIGQ9Y1tmXTtkLmRlc2M9PT1sP3Q\/Yy5zcGxpY2UoZiwxKTooZC5kZXNjPWksYz1bZF0pOihkLmRlc2M9bCx0fHwoYz1bZF0pKX1lbHNlIHQ\/Yy5wdXNoKHtpZDplLmlkLGRlc2M6aX0pOmM9W3tpZDplLmlkLGRlc2M6aX1dfXRoaXMuc2V0U3RhdGVXaXRoRGF0YSh7cGFnZTohbi5sZW5ndGgmJmMubGVuZ3RofHwhdD8wOnRoaXMuc3RhdGUucGFnZSxzb3J0ZWQ6Y30sKGZ1bmN0aW9uKCl7dSYmdShjLGUsdCl9KSl9fX0se2tleToiZmlsdGVyQ29sdW1uIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuZ2V0UmVzb2x2ZWRTdGF0ZSgpLmZpbHRlcmVkLG49dGhpcy5wcm9wcy5vbkZpbHRlcmVkQ2hhbmdlLGE9KHJ8fFtdKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe2lmKHQuaWQhPT1lLmlkKXJldHVybiEwfSkpOyIiIT09dCYmYS5wdXNoKHtpZDplLmlkLHZhbHVlOnR9KSx0aGlzLnNldFN0YXRlV2l0aERhdGEoe2ZpbHRlcmVkOmF9LChmdW5jdGlvbigpe24mJm4oYSxlLHQpfSkpfX0se2tleToicmVzaXplQ29sdW1uU3RhcnQiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzO2Uuc3RvcFByb3BhZ2F0aW9uKCk7dmFyIGE9ZS50YXJnZXQucGFyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCxvPXZvaWQgMDtvPXI\/ZS5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWDplLnBhZ2VYLHRoaXMudHJhcEV2ZW50cz0hMCx0aGlzLnNldFN0YXRlV2l0aERhdGEoe2N1cnJlbnRseVJlc2l6aW5nOntpZDp0LmlkLHN0YXJ0WDpvLHBhcmVudFdpZHRoOmF9fSwoZnVuY3Rpb24oKXtyPyhkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLG4ucmVzaXplQ29sdW1uTW92aW5nKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGNhbmNlbCIsbi5yZXNpemVDb2x1bW5FbmQpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixuLnJlc2l6ZUNvbHVtbkVuZCkpOihkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLG4ucmVzaXplQ29sdW1uTW92aW5nKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIixuLnJlc2l6ZUNvbHVtbkVuZCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsbi5yZXNpemVDb2x1bW5FbmQpKX0pKX19LHtrZXk6InJlc2l6ZUNvbHVtbk1vdmluZyIsdmFsdWU6ZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKTt2YXIgdD10aGlzLnByb3BzLm9uUmVzaXplZENoYW5nZSxyPXRoaXMuZ2V0UmVzb2x2ZWRTdGF0ZSgpLG49ci5yZXNpemVkLGE9ci5jdXJyZW50bHlSZXNpemluZyxvPW4uZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZS5pZCE9PWEuaWR9KSksaT12b2lkIDA7InRvdWNobW92ZSI9PT1lLnR5cGU\/aT1lLmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VYOiJtb3VzZW1vdmUiPT09ZS50eXBlJiYoaT1lLnBhZ2VYKTt2YXIgbD1NYXRoLm1heChhLnBhcmVudFdpZHRoK2ktYS5zdGFydFgsMTEpO28ucHVzaCh7aWQ6YS5pZCx2YWx1ZTpsfSksdGhpcy5zZXRTdGF0ZVdpdGhEYXRhKHtyZXNpemVkOm99LChmdW5jdGlvbigpe3QmJnQobyxlKX0pKX19LHtrZXk6InJlc2l6ZUNvbHVtbkVuZCIsdmFsdWU6ZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKTt2YXIgdD0idG91Y2hlbmQiPT09ZS50eXBlfHwidG91Y2hjYW5jZWwiPT09ZS50eXBlO3QmJihkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLHRoaXMucmVzaXplQ29sdW1uTW92aW5nKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGNhbmNlbCIsdGhpcy5yZXNpemVDb2x1bW5FbmQpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIix0aGlzLnJlc2l6ZUNvbHVtbkVuZCkpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5yZXNpemVDb2x1bW5Nb3ZpbmcpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMucmVzaXplQ29sdW1uRW5kKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIix0aGlzLnJlc2l6ZUNvbHVtbkVuZCksdHx8dGhpcy5zZXRTdGF0ZVdpdGhEYXRhKHtza2lwTmV4dFNvcnQ6ITAsY3VycmVudGx5UmVzaXppbmc6ITF9KX19XSksdH0oZSl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgcj1hcmd1bWVudHNbdF07Zm9yKHZhciBuIGluIHIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsbikmJihlW25dPXJbbl0pfXJldHVybiBlfSxhPXMocigxKSksbz1zKHIoNCkpLGk9cyhyKDUpKSxsPXMocigxMSkpO2Z1bmN0aW9uIHMoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIHUoZSx0KXt2YXIgcj17fTtmb3IodmFyIG4gaW4gZSl0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiYocltuXT1lW25dKTtyZXR1cm4gcn12YXIgYz1mdW5jdGlvbigpe3JldHVybnt9fTt0LmRlZmF1bHQ9e2RhdGE6W10sbG9hZGluZzohMSxzaG93UGFnaW5hdGlvbjohMCxzaG93UGFnaW5hdGlvblRvcDohMSxzaG93UGFnaW5hdGlvbkJvdHRvbTohMCxzaG93UGFnZVNpemVPcHRpb25zOiEwLHBhZ2VTaXplT3B0aW9uczpbNSwxMCwyMCwyNSw1MCwxMDBdLGRlZmF1bHRQYWdlU2l6ZToyMCxzaG93UGFnZUp1bXA6ITAsY29sbGFwc2VPblNvcnRpbmdDaGFuZ2U6ITAsY29sbGFwc2VPblBhZ2VDaGFuZ2U6ITAsY29sbGFwc2VPbkRhdGFDaGFuZ2U6ITAsZnJlZXplV2hlbkV4cGFuZGVkOiExLHNvcnRhYmxlOiEwLHJlc2l6YWJsZTohMCxmaWx0ZXJhYmxlOiExLGRlZmF1bHRTb3J0RGVzYzohMSxkZWZhdWx0U29ydGVkOltdLGRlZmF1bHRGaWx0ZXJlZDpbXSxkZWZhdWx0UmVzaXplZDpbXSxkZWZhdWx0RXhwYW5kZWQ6e30sZGVmYXVsdEZpbHRlck1ldGhvZDpmdW5jdGlvbihlLHQscil7dmFyIG49ZS5waXZvdElkfHxlLmlkO3JldHVybiB2b2lkIDA9PT10W25dfHxTdHJpbmcodFtuXSkuc3RhcnRzV2l0aChlLnZhbHVlKX0sZGVmYXVsdFNvcnRNZXRob2Q6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0PW51bGw9PXQ\/IiI6dCwoZT0ic3RyaW5nIj09dHlwZW9mKGU9bnVsbD09ZT8iIjplKT9lLnRvTG93ZXJDYXNlKCk6ZSk+KHQ9InN0cmluZyI9PXR5cGVvZiB0P3QudG9Mb3dlckNhc2UoKTp0KT8xOmU8dD8tMTowfSxvblBhZ2VDaGFuZ2U6dm9pZCAwLG9uUGFnZVNpemVDaGFuZ2U6dm9pZCAwLG9uU29ydGVkQ2hhbmdlOnZvaWQgMCxvbkZpbHRlcmVkQ2hhbmdlOnZvaWQgMCxvblJlc2l6ZWRDaGFuZ2U6dm9pZCAwLG9uRXhwYW5kZWRDaGFuZ2U6dm9pZCAwLHBpdm90Qnk6dm9pZCAwLHBpdm90VmFsS2V5OiJfcGl2b3RWYWwiLHBpdm90SURLZXk6Il9waXZvdElEIixzdWJSb3dzS2V5OiJfc3ViUm93cyIsYWdncmVnYXRlZEtleToiX2FnZ3JlZ2F0ZWQiLG5lc3RpbmdMZXZlbEtleToiX25lc3RpbmdMZXZlbCIsb3JpZ2luYWxLZXk6Il9vcmlnaW5hbCIsaW5kZXhLZXk6Il9pbmRleCIsZ3JvdXBlZEJ5UGl2b3RLZXk6Il9ncm91cGVkQnlQaXZvdCIsb25GZXRjaERhdGE6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sY2xhc3NOYW1lOiIiLHN0eWxlOnt9LGdldFByb3BzOmMsZ2V0VGFibGVQcm9wczpjLGdldFRoZWFkR3JvdXBQcm9wczpjLGdldFRoZWFkR3JvdXBUclByb3BzOmMsZ2V0VGhlYWRHcm91cFRoUHJvcHM6YyxnZXRUaGVhZFByb3BzOmMsZ2V0VGhlYWRUclByb3BzOmMsZ2V0VGhlYWRUaFByb3BzOmMsZ2V0VGhlYWRGaWx0ZXJQcm9wczpjLGdldFRoZWFkRmlsdGVyVHJQcm9wczpjLGdldFRoZWFkRmlsdGVyVGhQcm9wczpjLGdldFRib2R5UHJvcHM6YyxnZXRUckdyb3VwUHJvcHM6YyxnZXRUclByb3BzOmMsZ2V0VGRQcm9wczpjLGdldFRmb290UHJvcHM6YyxnZXRUZm9vdFRyUHJvcHM6YyxnZXRUZm9vdFRkUHJvcHM6YyxnZXRQYWdpbmF0aW9uUHJvcHM6YyxnZXRMb2FkaW5nUHJvcHM6YyxnZXROb0RhdGFQcm9wczpjLGdldFJlc2l6ZXJQcm9wczpjLGNvbHVtbjp7Q2VsbDp2b2lkIDAsSGVhZGVyOnZvaWQgMCxGb290ZXI6dm9pZCAwLEFnZ3JlZ2F0ZWQ6dm9pZCAwLFBpdm90OnZvaWQgMCxQaXZvdFZhbHVlOnZvaWQgMCxFeHBhbmRlcjp2b2lkIDAsRmlsdGVyOnZvaWQgMCxzb3J0YWJsZTp2b2lkIDAscmVzaXphYmxlOnZvaWQgMCxmaWx0ZXJhYmxlOnZvaWQgMCxzaG93OiEwLG1pbldpZHRoOjEwMCxjbGFzc05hbWU6IiIsc3R5bGU6e30sZ2V0UHJvcHM6YyxhZ2dyZWdhdGU6dm9pZCAwLGhlYWRlckNsYXNzTmFtZToiIixoZWFkZXJTdHlsZTp7fSxnZXRIZWFkZXJQcm9wczpjLGZvb3RlckNsYXNzTmFtZToiIixmb290ZXJTdHlsZTp7fSxnZXRGb290ZXJQcm9wczpjLGZpbHRlck1ldGhvZDp2b2lkIDAsZmlsdGVyQWxsOiExLHNvcnRNZXRob2Q6dm9pZCAwfSxleHBhbmRlckRlZmF1bHRzOntzb3J0YWJsZTohMSxyZXNpemFibGU6ITEsZmlsdGVyYWJsZTohMSx3aWR0aDozNX0scGl2b3REZWZhdWx0czp7fSxwcmV2aW91c1RleHQ6IlByZXZpb3VzIixuZXh0VGV4dDoiTmV4dCIsbG9hZGluZ1RleHQ6IkxvYWRpbmcuLi4iLG5vRGF0YVRleHQ6Ik5vIHJvd3MgZm91bmQiLHBhZ2VUZXh0OiJQYWdlIixvZlRleHQ6Im9mIixyb3dzVGV4dDoicm93cyIsVGFibGVDb21wb25lbnQ6aS5kZWZhdWx0Lm1ha2VUZW1wbGF0ZUNvbXBvbmVudCgicnQtdGFibGUiLCJUYWJsZSIpLFRoZWFkQ29tcG9uZW50OmkuZGVmYXVsdC5tYWtlVGVtcGxhdGVDb21wb25lbnQoInJ0LXRoZWFkIiwiVGhlYWQiKSxUYm9keUNvbXBvbmVudDppLmRlZmF1bHQubWFrZVRlbXBsYXRlQ29tcG9uZW50KCJydC10Ym9keSIsIlRib2R5IiksVHJHcm91cENvbXBvbmVudDppLmRlZmF1bHQubWFrZVRlbXBsYXRlQ29tcG9uZW50KCJydC10ci1ncm91cCIsIlRyR3JvdXAiKSxUckNvbXBvbmVudDppLmRlZmF1bHQubWFrZVRlbXBsYXRlQ29tcG9uZW50KCJydC10ciIsIlRyIiksVGhDb21wb25lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50b2dnbGVTb3J0LHI9ZS5jbGFzc05hbWUsaT1lLmNoaWxkcmVuLGw9dShlLFsidG9nZ2xlU29ydCIsImNsYXNzTmFtZSIsImNoaWxkcmVuIl0pO3JldHVybiBhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiZGl2IixuKHtjbGFzc05hbWU6KDAsby5kZWZhdWx0KShyLCJydC10aCIpLG9uQ2xpY2s6dD9mdW5jdGlvbihlKXtyZXR1cm4gdChlKX06dm9pZCAwfSxsKSxpKX0sVGRDb21wb25lbnQ6aS5kZWZhdWx0Lm1ha2VUZW1wbGF0ZUNvbXBvbmVudCgicnQtdGQiLCJUZCIpLFRmb290Q29tcG9uZW50OmkuZGVmYXVsdC5tYWtlVGVtcGxhdGVDb21wb25lbnQoInJ0LXRmb290IiwiVGZvb3QiKSxGaWx0ZXJDb21wb25lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5maWx0ZXIscj1lLm9uQ2hhbmdlO3JldHVybiBhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiaW5wdXQiLHt0eXBlOiJ0ZXh0IixzdHlsZTp7d2lkdGg6IjEwMCUifSx2YWx1ZTp0P3QudmFsdWU6IiIsb25DaGFuZ2U6ZnVuY3Rpb24oZSl7cmV0dXJuIHIoZS50YXJnZXQudmFsdWUpfX0pfSxFeHBhbmRlckNvbXBvbmVudDpmdW5jdGlvbihlKXt2YXIgdD1lLmlzRXhwYW5kZWQ7cmV0dXJuIGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6KDAsby5kZWZhdWx0KSgicnQtZXhwYW5kZXIiLHQmJiItb3BlbiIpfSwi4oCiIil9LFBpdm90VmFsdWVDb21wb25lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdWJSb3dzLHI9ZS52YWx1ZTtyZXR1cm4gYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInNwYW4iLG51bGwsciwiICIsdCYmIigiK3QubGVuZ3RoKyIpIil9LEFnZ3JlZ2F0ZWRDb21wb25lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdWJSb3dzLHI9ZS5jb2x1bW4sbj10LmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWVbci5pZF19KSkubWFwKChmdW5jdGlvbihlLG4pe3JldHVybiBhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic3BhbiIse2tleTpufSxlW3IuaWRdLG48dC5sZW5ndGgtMT8iLCAiOiIiKX0pKTtyZXR1cm4gYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInNwYW4iLG51bGwsbil9LFBpdm90Q29tcG9uZW50OnZvaWQgMCxQYWdpbmF0aW9uQ29tcG9uZW50OmwuZGVmYXVsdCxQcmV2aW91c0NvbXBvbmVudDp2b2lkIDAsTmV4dENvbXBvbmVudDp2b2lkIDAsTG9hZGluZ0NvbXBvbmVudDpmdW5jdGlvbihlKXt2YXIgdD1lLmNsYXNzTmFtZSxyPWUubG9hZGluZyxpPWUubG9hZGluZ1RleHQsbD11KGUsWyJjbGFzc05hbWUiLCJsb2FkaW5nIiwibG9hZGluZ1RleHQiXSk7cmV0dXJuIGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLG4oe2NsYXNzTmFtZTooMCxvLmRlZmF1bHQpKCItbG9hZGluZyIseyItYWN0aXZlIjpyfSx0KX0sbCksYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiLWxvYWRpbmctaW5uZXIifSxpKSl9LE5vRGF0YUNvbXBvbmVudDppLmRlZmF1bHQubWFrZVRlbXBsYXRlQ29tcG9uZW50KCJydC1ub0RhdGEiLCJOb0RhdGEiKSxSZXNpemVyQ29tcG9uZW50OmkuZGVmYXVsdC5tYWtlVGVtcGxhdGVDb21wb25lbnQoInJ0LXJlc2l6ZXIiLCJSZXNpemVyIiksUGFkUm93Q29tcG9uZW50OmZ1bmN0aW9uKCl7cmV0dXJuIGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzcGFuIixudWxsLCLCoCIpfX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbi5rZXksbil9fXJldHVybiBmdW5jdGlvbih0LHIsbil7cmV0dXJuIHImJmUodC5wcm90b3R5cGUsciksbiYmZSh0LG4pLHR9fSgpLGE9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIHI9YXJndW1lbnRzW3RdO2Zvcih2YXIgbiBpbiByKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLG4pJiYoZVtuXT1yW25dKX1yZXR1cm4gZX0sbz1yKDEpLGk9cyhvKSxsPXMocig0KSk7ZnVuY3Rpb24gcyhlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIHU9ZnVuY3Rpb24oZSl7cmV0dXJuIGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJidXR0b24iLGEoe3R5cGU6ImJ1dHRvbiJ9LGUse2NsYXNzTmFtZToiLWJ0biJ9KSxlLmNoaWxkcmVuKX0sYz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpO3ZhciByPWZ1bmN0aW9uKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9KHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcykpO3JldHVybiByLmdldFNhZmVQYWdlPXIuZ2V0U2FmZVBhZ2UuYmluZChyKSxyLmNoYW5nZVBhZ2U9ci5jaGFuZ2VQYWdlLmJpbmQociksci5hcHBseVBhZ2U9ci5hcHBseVBhZ2UuYmluZChyKSxyLnN0YXRlPXtwYWdlOmUucGFnZX0scn1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSh0LGUpLG4odCxbe2tleToiVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuc2V0U3RhdGUoe3BhZ2U6ZS5wYWdlfSl9fSx7a2V5OiJnZXRTYWZlUGFnZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGlzTmFOKGUpJiYoZT10aGlzLnByb3BzLnBhZ2UpLE1hdGgubWluKE1hdGgubWF4KGUsMCksdGhpcy5wcm9wcy5wYWdlcy0xKX19LHtrZXk6ImNoYW5nZVBhZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe2U9dGhpcy5nZXRTYWZlUGFnZShlKSx0aGlzLnNldFN0YXRlKHtwYWdlOmV9KSx0aGlzLnByb3BzLnBhZ2UhPT1lJiZ0aGlzLnByb3BzLm9uUGFnZUNoYW5nZShlKX19LHtrZXk6ImFwcGx5UGFnZSIsdmFsdWU6ZnVuY3Rpb24oZSl7ZSYmZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciB0PXRoaXMuc3RhdGUucGFnZTt0aGlzLmNoYW5nZVBhZ2UoIiI9PT10P3RoaXMucHJvcHMucGFnZTp0KX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wcm9wcyxyPXQucGFnZXMsbj10LnBhZ2UsYT10LnNob3dQYWdlU2l6ZU9wdGlvbnMsbz10LnBhZ2VTaXplT3B0aW9ucyxzPXQucGFnZVNpemUsYz10LnNob3dQYWdlSnVtcCxmPXQuY2FuUHJldmlvdXMsZD10LmNhbk5leHQscD10Lm9uUGFnZVNpemVDaGFuZ2UsZz10LmNsYXNzTmFtZSxoPXQuUHJldmlvdXNDb21wb25lbnQsbT12b2lkIDA9PT1oP3U6aCxiPXQuTmV4dENvbXBvbmVudCx5PXZvaWQgMD09PWI\/dTpiO3JldHVybiBpLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOigwLGwuZGVmYXVsdCkoZywiLXBhZ2luYXRpb24iKSxzdHlsZTp0aGlzLnByb3BzLnBhZ2luYXRpb25TdHlsZX0saS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiLXByZXZpb3VzIn0saS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQobSx7b25DbGljazpmdW5jdGlvbih0KXtmJiZlLmNoYW5nZVBhZ2Uobi0xKX0sZGlzYWJsZWQ6IWZ9LHRoaXMucHJvcHMucHJldmlvdXNUZXh0KSksaS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiLWNlbnRlciJ9LGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiItcGFnZUluZm8ifSx0aGlzLnByb3BzLnBhZ2VUZXh0LCIgIixjP2kuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6Ii1wYWdlSnVtcCJ9LGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6IiI9PT10aGlzLnN0YXRlLnBhZ2U\/InRleHQiOiJudW1iZXIiLG9uQ2hhbmdlOmZ1bmN0aW9uKHQpe3ZhciByPXQudGFyZ2V0LnZhbHVlLG49ci0xO2lmKCIiPT09cilyZXR1cm4gZS5zZXRTdGF0ZSh7cGFnZTpyfSk7ZS5zZXRTdGF0ZSh7cGFnZTplLmdldFNhZmVQYWdlKG4pfSl9LHZhbHVlOiIiPT09dGhpcy5zdGF0ZS5wYWdlPyIiOnRoaXMuc3RhdGUucGFnZSsxLG9uQmx1cjp0aGlzLmFwcGx5UGFnZSxvbktleVByZXNzOmZ1bmN0aW9uKHQpezEzIT09dC53aGljaCYmMTMhPT10LmtleUNvZGV8fGUuYXBwbHlQYWdlKCl9fSkpOmkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiItY3VycmVudFBhZ2UifSxuKzEpLCIgIix0aGlzLnByb3BzLm9mVGV4dCwiICIsaS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtjbGFzc05hbWU6Ii10b3RhbFBhZ2VzIn0scnx8MSkpLGEmJmkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJzZWxlY3Qtd3JhcCAtcGFnZVNpemVPcHRpb25zIn0saS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIse29uQ2hhbmdlOmZ1bmN0aW9uKGUpe3JldHVybiBwKE51bWJlcihlLnRhcmdldC52YWx1ZSkpfSx2YWx1ZTpzfSxvLm1hcCgoZnVuY3Rpb24odCxyKXtyZXR1cm4gaS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIse2tleTpyLHZhbHVlOnR9LHQsIiAiLGUucHJvcHMucm93c1RleHQpfSkpKSkpLGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6Ii1uZXh0In0saS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoeSx7b25DbGljazpmdW5jdGlvbih0KXtkJiZlLmNoYW5nZVBhZ2UobisxKX0sZGlzYWJsZWQ6IWR9LHRoaXMucHJvcHMubmV4dFRleHQpKSl9fV0pLHR9KG8uQ29tcG9uZW50KTt0LmRlZmF1bHQ9Y30sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG4sYT1yKDApLG89KG49YSkmJm4uX19lc01vZHVsZT9uOntkZWZhdWx0Om59O3QuZGVmYXVsdD17ZGF0YTpvLmRlZmF1bHQuYXJyYXksbG9hZGluZzpvLmRlZmF1bHQuYm9vbCxzaG93UGFnaW5hdGlvbjpvLmRlZmF1bHQuYm9vbCxzaG93UGFnaW5hdGlvblRvcDpvLmRlZmF1bHQuYm9vbCxzaG93UGFnaW5hdGlvbkJvdHRvbTpvLmRlZmF1bHQuYm9vbCxzaG93UGFnZVNpemVPcHRpb25zOm8uZGVmYXVsdC5ib29sLHBhZ2VTaXplT3B0aW9uczpvLmRlZmF1bHQuYXJyYXksZGVmYXVsdFBhZ2VTaXplOm8uZGVmYXVsdC5udW1iZXIsc2hvd1BhZ2VKdW1wOm8uZGVmYXVsdC5ib29sLGNvbGxhcHNlT25Tb3J0aW5nQ2hhbmdlOm8uZGVmYXVsdC5ib29sLGNvbGxhcHNlT25QYWdlQ2hhbmdlOm8uZGVmYXVsdC5ib29sLGNvbGxhcHNlT25EYXRhQ2hhbmdlOm8uZGVmYXVsdC5ib29sLGZyZWV6ZVdoZW5FeHBhbmRlZDpvLmRlZmF1bHQuYm9vbCxzb3J0YWJsZTpvLmRlZmF1bHQuYm9vbCxyZXNpemFibGU6by5kZWZhdWx0LmJvb2wsZmlsdGVyYWJsZTpvLmRlZmF1bHQuYm9vbCxkZWZhdWx0U29ydERlc2M6by5kZWZhdWx0LmJvb2wsZGVmYXVsdFNvcnRlZDpvLmRlZmF1bHQuYXJyYXksZGVmYXVsdEZpbHRlcmVkOm8uZGVmYXVsdC5hcnJheSxkZWZhdWx0UmVzaXplZDpvLmRlZmF1bHQuYXJyYXksZGVmYXVsdEV4cGFuZGVkOm8uZGVmYXVsdC5vYmplY3QsZGVmYXVsdEZpbHRlck1ldGhvZDpvLmRlZmF1bHQuZnVuYyxkZWZhdWx0U29ydE1ldGhvZDpvLmRlZmF1bHQuZnVuYyxvblBhZ2VDaGFuZ2U6by5kZWZhdWx0LmZ1bmMsb25QYWdlU2l6ZUNoYW5nZTpvLmRlZmF1bHQuZnVuYyxvblNvcnRlZENoYW5nZTpvLmRlZmF1bHQuZnVuYyxvbkZpbHRlcmVkQ2hhbmdlOm8uZGVmYXVsdC5mdW5jLG9uUmVzaXplZENoYW5nZTpvLmRlZmF1bHQuZnVuYyxvbkV4cGFuZGVkQ2hhbmdlOm8uZGVmYXVsdC5mdW5jLHBpdm90Qnk6by5kZWZhdWx0LmFycmF5LHBpdm90VmFsS2V5Om8uZGVmYXVsdC5zdHJpbmcscGl2b3RJREtleTpvLmRlZmF1bHQuc3RyaW5nLHN1YlJvd3NLZXk6by5kZWZhdWx0LnN0cmluZyxhZ2dyZWdhdGVkS2V5Om8uZGVmYXVsdC5zdHJpbmcsbmVzdGluZ0xldmVsS2V5Om8uZGVmYXVsdC5zdHJpbmcsb3JpZ2luYWxLZXk6by5kZWZhdWx0LnN0cmluZyxpbmRleEtleTpvLmRlZmF1bHQuc3RyaW5nLGdyb3VwZWRCeVBpdm90S2V5Om8uZGVmYXVsdC5zdHJpbmcsb25GZXRjaERhdGE6by5kZWZhdWx0LmZ1bmMsY2xhc3NOYW1lOm8uZGVmYXVsdC5zdHJpbmcsc3R5bGU6by5kZWZhdWx0Lm9iamVjdCxnZXRQcm9wczpvLmRlZmF1bHQub2JqZWN0LGdldFRhYmxlUHJvcHM6by5kZWZhdWx0Lm9iamVjdCxnZXRUaGVhZEdyb3VwUHJvcHM6by5kZWZhdWx0Lm9iamVjdCxnZXRUaGVhZEdyb3VwVHJQcm9wczpvLmRlZmF1bHQub2JqZWN0LGdldFRoZWFkR3JvdXBUaFByb3BzOm8uZGVmYXVsdC5vYmplY3QsZ2V0VGhlYWRQcm9wczpvLmRlZmF1bHQub2JqZWN0LGdldFRoZWFkVHJQcm9wczpvLmRlZmF1bHQub2JqZWN0LGdldFRoZWFkVGhQcm9wczpvLmRlZmF1bHQub2JqZWN0LGdldFRoZWFkRmlsdGVyUHJvcHM6by5kZWZhdWx0Lm9iamVjdCxnZXRUaGVhZEZpbHRlclRyUHJvcHM6by5kZWZhdWx0Lm9iamVjdCxnZXRUaGVhZEZpbHRlclRoUHJvcHM6by5kZWZhdWx0Lm9iamVjdCxnZXRUYm9keVByb3BzOm8uZGVmYXVsdC5vYmplY3QsZ2V0VHJHcm91cFByb3BzOm8uZGVmYXVsdC5vYmplY3QsZ2V0VHJQcm9wczpvLmRlZmF1bHQub2JqZWN0LGdldFRkUHJvcHM6by5kZWZhdWx0Lm9iamVjdCxnZXRUZm9vdFByb3BzOm8uZGVmYXVsdC5vYmplY3QsZ2V0VGZvb3RUclByb3BzOm8uZGVmYXVsdC5vYmplY3QsZ2V0VGZvb3RUZFByb3BzOm8uZGVmYXVsdC5vYmplY3QsZ2V0UGFnaW5hdGlvblByb3BzOm8uZGVmYXVsdC5vYmplY3QsZ2V0TG9hZGluZ1Byb3BzOm8uZGVmYXVsdC5vYmplY3QsZ2V0Tm9EYXRhUHJvcHM6by5kZWZhdWx0Lm9iamVjdCxnZXRSZXNpemVyUHJvcHM6by5kZWZhdWx0Lm9iamVjdCxjb2x1bW5zOm8uZGVmYXVsdC5zaGFwZSh7Q2VsbDpvLmRlZmF1bHQub25lT2ZUeXBlKFtvLmRlZmF1bHQuZWxlbWVudCxvLmRlZmF1bHQuc3RyaW5nLG8uZGVmYXVsdC5mdW5jXSksSGVhZGVyOm8uZGVmYXVsdC5vbmVPZlR5cGUoW28uZGVmYXVsdC5lbGVtZW50LG8uZGVmYXVsdC5zdHJpbmcsby5kZWZhdWx0LmZ1bmNdKSxGb290ZXI6by5kZWZhdWx0Lm9uZU9mVHlwZShbby5kZWZhdWx0LmVsZW1lbnQsby5kZWZhdWx0LnN0cmluZyxvLmRlZmF1bHQuZnVuY10pLEFnZ3JlZ2F0ZWQ6by5kZWZhdWx0Lm9uZU9mVHlwZShbby5kZWZhdWx0LmVsZW1lbnQsby5kZWZhdWx0LnN0cmluZyxvLmRlZmF1bHQuZnVuY10pLFBpdm90Om8uZGVmYXVsdC5vbmVPZlR5cGUoW28uZGVmYXVsdC5lbGVtZW50LG8uZGVmYXVsdC5zdHJpbmcsby5kZWZhdWx0LmZ1bmNdKSxQaXZvdFZhbHVlOm8uZGVmYXVsdC5vbmVPZlR5cGUoW28uZGVmYXVsdC5lbGVtZW50LG8uZGVmYXVsdC5zdHJpbmcsby5kZWZhdWx0LmZ1bmNdKSxFeHBhbmRlcjpvLmRlZmF1bHQub25lT2ZUeXBlKFtvLmRlZmF1bHQuZWxlbWVudCxvLmRlZmF1bHQuc3RyaW5nLG8uZGVmYXVsdC5mdW5jXSksRmlsdGVyOm8uZGVmYXVsdC5vbmVPZlR5cGUoW28uZGVmYXVsdC5lbGVtZW50LG8uZGVmYXVsdC5mdW5jXSksc29ydGFibGU6by5kZWZhdWx0LmJvb2wscmVzaXphYmxlOm8uZGVmYXVsdC5ib29sLGZpbHRlcmFibGU6by5kZWZhdWx0LmJvb2wsc2hvdzpvLmRlZmF1bHQuYm9vbCxtaW5XaWR0aDpvLmRlZmF1bHQubnVtYmVyLGNsYXNzTmFtZTpvLmRlZmF1bHQuc3RyaW5nLHN0eWxlOm8uZGVmYXVsdC5vYmplY3QsZ2V0UHJvcHM6by5kZWZhdWx0Lm9iamVjdCxhZ2dyZWdhdGU6by5kZWZhdWx0LmZ1bmMsaGVhZGVyQ2xhc3NOYW1lOm8uZGVmYXVsdC5zdHJpbmcsaGVhZGVyU3R5bGU6by5kZWZhdWx0Lm9iamVjdCxnZXRIZWFkZXJQcm9wczpvLmRlZmF1bHQub2JqZWN0LGZvb3RlckNsYXNzTmFtZTpvLmRlZmF1bHQuc3RyaW5nLGZvb3RlclN0eWxlOm8uZGVmYXVsdC5vYmplY3QsZ2V0Rm9vdGVyUHJvcHM6by5kZWZhdWx0Lm9iamVjdCxmaWx0ZXJNZXRob2Q6by5kZWZhdWx0LmZ1bmMsZmlsdGVyQWxsOm8uZGVmYXVsdC5ib29sLHNvcnRNZXRob2Q6by5kZWZhdWx0LmZ1bmN9KSxleHBhbmRlckRlZmF1bHRzOm8uZGVmYXVsdC5zaGFwZSh7c29ydGFibGU6by5kZWZhdWx0LmJvb2wscmVzaXphYmxlOm8uZGVmYXVsdC5ib29sLGZpbHRlcmFibGU6by5kZWZhdWx0LmJvb2wsd2lkdGg6by5kZWZhdWx0Lm51bWJlcn0pLHBpdm90RGVmYXVsdHM6by5kZWZhdWx0Lm9iamVjdCxwcmV2aW91c1RleHQ6by5kZWZhdWx0LnN0cmluZyxuZXh0VGV4dDpvLmRlZmF1bHQuc3RyaW5nLGxvYWRpbmdUZXh0Om8uZGVmYXVsdC5zdHJpbmcsbm9EYXRhVGV4dDpvLmRlZmF1bHQuc3RyaW5nLHBhZ2VUZXh0Om8uZGVmYXVsdC5zdHJpbmcsb2ZUZXh0Om8uZGVmYXVsdC5zdHJpbmcscm93c1RleHQ6by5kZWZhdWx0LnN0cmluZyxUYWJsZUNvbXBvbmVudDpvLmRlZmF1bHQuZWxlbWVudCxUaGVhZENvbXBvbmVudDpvLmRlZmF1bHQuZWxlbWVudCxUYm9keUNvbXBvbmVudDpvLmRlZmF1bHQuZWxlbWVudCxUckdyb3VwQ29tcG9uZW50Om8uZGVmYXVsdC5lbGVtZW50LFRyQ29tcG9uZW50Om8uZGVmYXVsdC5lbGVtZW50LFRoQ29tcG9uZW50Om8uZGVmYXVsdC5lbGVtZW50LFRkQ29tcG9uZW50Om8uZGVmYXVsdC5lbGVtZW50LFRmb290Q29tcG9uZW50Om8uZGVmYXVsdC5lbGVtZW50LEZpbHRlckNvbXBvbmVudDpvLmRlZmF1bHQuZWxlbWVudCxFeHBhbmRlckNvbXBvbmVudDpvLmRlZmF1bHQuZWxlbWVudCxQaXZvdFZhbHVlQ29tcG9uZW50Om8uZGVmYXVsdC5lbGVtZW50LEFnZ3JlZ2F0ZWRDb21wb25lbnQ6by5kZWZhdWx0LmVsZW1lbnQsUGl2b3RDb21wb25lbnQ6by5kZWZhdWx0LmVsZW1lbnQsUGFnaW5hdGlvbkNvbXBvbmVudDpvLmRlZmF1bHQuZWxlbWVudCxQcmV2aW91c0NvbXBvbmVudDpvLmRlZmF1bHQuZWxlbWVudCxOZXh0Q29tcG9uZW50Om8uZGVmYXVsdC5lbGVtZW50LExvYWRpbmdDb21wb25lbnQ6by5kZWZhdWx0LmVsZW1lbnQsTm9EYXRhQ29tcG9uZW50Om8uZGVmYXVsdC5lbGVtZW50LFJlc2l6ZXJDb21wb25lbnQ6by5kZWZhdWx0LmVsZW1lbnQsUGFkUm93Q29tcG9uZW50Om8uZGVmYXVsdC5lbGVtZW50fX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDE0KTtmdW5jdGlvbiBhKCl7fWZ1bmN0aW9uIG8oKXt9by5yZXNldFdhcm5pbmdDYWNoZT1hLGUuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LHIsYSxvLGkpe2lmKGkhPT1uKXt2YXIgbD1uZXcgRXJyb3IoIkNhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuIFVzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uIFJlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMiKTt0aHJvdyBsLm5hbWU9IkludmFyaWFudCBWaW9sYXRpb24iLGx9fWZ1bmN0aW9uIHQoKXtyZXR1cm4gZX1lLmlzUmVxdWlyZWQ9ZTt2YXIgcj17YXJyYXk6ZSxib29sOmUsZnVuYzplLG51bWJlcjplLG9iamVjdDplLHN0cmluZzplLHN5bWJvbDplLGFueTplLGFycmF5T2Y6dCxlbGVtZW50OmUsZWxlbWVudFR5cGU6ZSxpbnN0YW5jZU9mOnQsbm9kZTplLG9iamVjdE9mOnQsb25lT2Y6dCxvbmVPZlR5cGU6dCxzaGFwZTp0LGV4YWN0OnQsY2hlY2tQcm9wVHlwZXM6byxyZXNldFdhcm5pbmdDYWNoZTphfTtyZXR1cm4gci5Qcm9wVHlwZXM9cixyfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9IlNFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEIn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpOyJzdHJpbmciPT10eXBlb2YgbiYmKG49W1tlLmksbiwiIl1dKTt2YXIgYT17aG1yOiEwLHRyYW5zZm9ybTp2b2lkIDAsaW5zZXJ0SW50bzp2b2lkIDB9O3IoNykobixhKTtuLmxvY2FscyYmKGUuZXhwb3J0cz1uLmxvY2Fscyl9LGZ1bmN0aW9uKGUsdCxyKXsoZS5leHBvcnRzPXIoNikoITEpKS5wdXNoKFtlLmksIi5SZWFjdFRhYmxle3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LlJlYWN0VGFibGUgKnstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LlJlYWN0VGFibGUgLnJ0LXRhYmxley13ZWJraXQtYm94LWZsZXg6MTstbXMtZmxleDphdXRvIDE7ZmxleDphdXRvIDE7ZmxleC1kaXJlY3Rpb246Y29sdW1uOy13ZWJraXQtYm94LWFsaWduOnN0cmV0Y2g7LW1zLWZsZXgtYWxpZ246c3RyZXRjaDthbGlnbi1pdGVtczpzdHJldGNoO3dpZHRoOjEwMCU7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO292ZXJmbG93OmF1dG99LlJlYWN0VGFibGUgLnJ0LXRhYmxlLC5SZWFjdFRhYmxlIC5ydC10aGVhZHtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW59LlJlYWN0VGFibGUgLnJ0LXRoZWFke2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uUmVhY3RUYWJsZSAucnQtdGhlYWQgLnJ0LXRye3RleHQtYWxpZ246Y2VudGVyfS5SZWFjdFRhYmxlIC5ydC10aGVhZCAucnQtdGQsLlJlYWN0VGFibGUgLnJ0LXRoZWFkIC5ydC10aHtsaW5lLWhlaWdodDpub3JtYWw7cG9zaXRpb246cmVsYXRpdmV9LlJlYWN0VGFibGUgLnJ0LXRoZWFkIC5ydC10ZC4tY3Vyc29yLXBvaW50ZXIsLlJlYWN0VGFibGUgLnJ0LXRoZWFkIC5ydC10aC4tY3Vyc29yLXBvaW50ZXJ7Y3Vyc29yOnBvaW50ZXJ9LlJlYWN0VGFibGUgLnJ0LXRoZWFkIC5ydC1yZXNpemFibGUtaGVhZGVye292ZXJmbG93OnZpc2libGV9LlJlYWN0VGFibGUgLnJ0LXRoZWFkIC5ydC1yZXNpemFibGUtaGVhZGVyOmxhc3QtY2hpbGR7b3ZlcmZsb3c6aGlkZGVufS5SZWFjdFRhYmxlIC5ydC10aGVhZCAucnQtcmVzaXphYmxlLWhlYWRlci1jb250ZW50e292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5SZWFjdFRhYmxlIC5ydC10Ym9keXtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1kaXJlY3Rpb246Y29sdW1uO292ZXJmbG93OmF1dG99LlJlYWN0VGFibGUgLnJ0LXRib2R5IC5ydC1leHBhbmRhYmxle2N1cnNvcjpwb2ludGVyfS5SZWFjdFRhYmxlIC5ydC10ci1ncm91cHstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXg6MSAwIGF1dG87ZmxleDoxIDAgYXV0bztkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1kaXJlY3Rpb246Y29sdW1uOy13ZWJraXQtYm94LWFsaWduOnN0cmV0Y2g7LW1zLWZsZXgtYWxpZ246c3RyZXRjaDthbGlnbi1pdGVtczpzdHJldGNofS5SZWFjdFRhYmxlIC5ydC10cnstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXg6MSAwIGF1dG87ZmxleDoxIDAgYXV0bztkaXNwbGF5Oi13ZWJraXQtaW5saW5lLWJveDtkaXNwbGF5Oi1tcy1pbmxpbmUtZmxleGJveDtkaXNwbGF5OmlubGluZS1mbGV4fS5SZWFjdFRhYmxlIC5ydC10ZCwuUmVhY3RUYWJsZSAucnQtdGh7LXdlYmtpdC1ib3gtZmxleDoxOy1tcy1mbGV4OjEgMCAwcHg7ZmxleDoxIDAgMDtvdmVyZmxvdzpoaWRkZW59LlJlYWN0VGFibGUgLnJ0LXRkLi1oaWRkZW4sLlJlYWN0VGFibGUgLnJ0LXRoLi1oaWRkZW57d2lkdGg6MCFpbXBvcnRhbnQ7bWluLXdpZHRoOjAhaW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50O29wYWNpdHk6MCFpbXBvcnRhbnR9LlJlYWN0VGFibGUgLnJ0LXJlc2l6ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MzZweDt0b3A6MDtib3R0b206MDtyaWdodDotMThweDtjdXJzb3I6Y29sLXJlc2l6ZTt6LWluZGV4OjEwfS5SZWFjdFRhYmxlIC5ydC10Zm9vdHtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5SZWFjdFRhYmxlIC4tbG9hZGluZ3tkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtyaWdodDowO3RvcDowO2JvdHRvbTowO2JhY2tncm91bmQ6aHNsYSgwLDAlLDEwMCUsLjgpOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7ei1pbmRleDotMTtvcGFjaXR5OjA7cG9pbnRlci1ldmVudHM6bm9uZX0uUmVhY3RUYWJsZSAuLWxvYWRpbmc+ZGl2e3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2s7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6MTAwJTt0b3A6NTAlO2xlZnQ6MDtmb250LXNpemU6MTVweDtjb2xvcjpyZ2JhKDAsMCwwLC42KTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MiUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MiUpOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjNzIGN1YmljLWJlemllciguMjUsLjQ2LC40NSwuOTQpO3RyYW5zaXRpb246YWxsIC4zcyBjdWJpYy1iZXppZXIoLjI1LC40NiwuNDUsLjk0KX0uUmVhY3RUYWJsZSAuLWxvYWRpbmcuLWFjdGl2ZXtvcGFjaXR5OjE7ei1pbmRleDoyO3BvaW50ZXItZXZlbnRzOmFsbH0uUmVhY3RUYWJsZSAuLWxvYWRpbmcuLWFjdGl2ZT5kaXZ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSg1MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDUwJSl9LlJlYWN0VGFibGUgLnJ0LXJlc2l6aW5nIC5ydC10ZCwuUmVhY3RUYWJsZSAucnQtcmVzaXppbmcgLnJ0LXRoey13ZWJraXQtdHJhbnNpdGlvbjpub25lIWltcG9ydGFudDt0cmFuc2l0aW9uOm5vbmUhaW1wb3J0YW50O2N1cnNvcjpjb2wtcmVzaXplOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0iLCIiXSl9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cubG9jYXRpb247aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJmaXhVcmxzIHJlcXVpcmVzIHdpbmRvdy5sb2NhdGlvbiIpO2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIGU7dmFyIHI9dC5wcm90b2NvbCsiLy8iK3QuaG9zdCxuPXIrdC5wYXRobmFtZS5yZXBsYWNlKC9cL1teXC9dKiQvLCIvIik7cmV0dXJuIGUucmVwbGFjZSgvdXJsXHMqXCgoKD86W14pKF18XCgoPzpbXikoXSt8XChbXikoXSpcKSkqXCkpKilcKS9naSwoZnVuY3Rpb24oZSx0KXt2YXIgYSxvPXQudHJpbSgpLnJlcGxhY2UoL14iKC4qKSIkLywoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdH0pKS5yZXBsYWNlKC9eJyguKiknJC8sKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR9KSk7cmV0dXJuL14oI3xkYXRhOnxodHRwOlwvXC98aHR0cHM6XC9cL3xmaWxlOlwvXC9cL3xccyokKS9pLnRlc3Qobyk\/ZTooYT0wPT09by5pbmRleE9mKCIvLyIpP286MD09PW8uaW5kZXhPZigiLyIpP3IrbzpuK28ucmVwbGFjZSgvXlwuXC8vLCIiKSwidXJsKCIrSlNPTi5zdHJpbmdpZnkoYSkrIikiKX0pKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5KTsic3RyaW5nIj09dHlwZW9mIG4mJihuPVtbZS5pLG4sIiJdXSk7dmFyIGE9e2htcjohMCx0cmFuc2Zvcm06dm9pZCAwLGluc2VydEludG86dm9pZCAwfTtyKDcpKG4sYSk7bi5sb2NhbHMmJihlLmV4cG9ydHM9bi5sb2NhbHMpfSxmdW5jdGlvbihlLHQscil7KGUuZXhwb3J0cz1yKDYpKCExKSkucHVzaChbZS5pLCcuUmVhY3RUYWJsZXtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LnJ0LWlubGluZXtkaXNwbGF5Oi13ZWJraXQtaW5saW5lLWJveDtkaXNwbGF5Oi1tcy1pbmxpbmUtZmxleGJveDtkaXNwbGF5OmlubGluZS1mbGV4fS5ydC10aHtmb250LXdlaWdodDo2MDB9LnJ0LXRkLC5ydC10aHtwYWRkaW5nOjdweCA4cHg7b3ZlcmZsb3ctd3JhcDpicmVhay13b3JkO21heC13aWR0aDoxMDAlO3dvcmQtd3JhcDpicmVhay13b3JkfS5ydC1jb21wYWN0IC5ydC10ZCwucnQtY29tcGFjdCAucnQtdGh7cGFkZGluZzo0cHggNnB4fS5ydC1ub3dyYXAgLnJ0LXRkLC5ydC1ub3dyYXAgLnJ0LXRoe3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5ydC10aC1jb250ZW50e292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5ydC10ZC1zZWxlY3R7LXdlYmtpdC1ib3gtYWxpZ246YmFzZWxpbmU7LW1zLWZsZXgtYWxpZ246YmFzZWxpbmU7YWxpZ24taXRlbXM6YmFzZWxpbmU7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0ucnQtc2VsZWN0LC5ydC10ZC1zZWxlY3R7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleH0ucnQtc2VsZWN0ey13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyfWlucHV0W3R5cGU9Y2hlY2tib3hdLnJ0LXNlbGVjdC1pbnB1dCxpbnB1dFt0eXBlPXJhZGlvXS5ydC1zZWxlY3QtaW5wdXR7ZGlzcGxheTpibG9jazttYXJnaW46MH0ucnQtYWxpZ24tbGVmdHt0ZXh0LWFsaWduOmxlZnR9LnJ0LWFsaWduLXJpZ2h0e3RleHQtYWxpZ246cmlnaHR9LnJ0LWFsaWduLWNlbnRlcnt0ZXh0LWFsaWduOmNlbnRlcn0ucnQtdGFibGV7Ym9yZGVyLXdpZHRoOjFweDtib3JkZXItY29sb3I6I2U2ZTZlNn0ucnQtYm9yZGVyZWQgLnJ0LXRhYmxlLC5ydC1vdXRsaW5lZCAucnQtdGFibGV7Ym9yZGVyLXN0eWxlOnNvbGlkfS5ydC10aHtib3JkZXItYm90dG9tOjJweCBzb2xpZCAjZTZlNmU2O2JvcmRlci1sZWZ0LXdpZHRoOjFweDtib3JkZXItbGVmdC1jb2xvcjpyZ2JhKDAsMCwwLC4wNSl9LnJ0LWJvcmRlcmVkIC5ydC10aCwucnQtb3V0bGluZWQgLnJ0LXRoe2JvcmRlci1ib3R0b20td2lkdGg6MXB4fS5ydC10ZHtib3JkZXItdG9wOjFweCBzb2xpZCAjZjJmMmYyO2JvcmRlci1sZWZ0LXdpZHRoOjFweDtib3JkZXItbGVmdC1jb2xvcjpyZ2JhKDAsMCwwLC4wNSl9LnJ0LWJvcmRlcmxlc3MgLnJ0LXRkLC5ydC10ci1ncm91cDpmaXJzdC1jaGlsZD4ucnQtdHI6Zmlyc3QtY2hpbGQgLnJ0LXRke2JvcmRlci10b3A6bm9uZX0ucnQtYm9yZGVyZWQgLnJ0LXRkLC5ydC1ib3JkZXJlZCAucnQtdGh7Ym9yZGVyLWxlZnQtc3R5bGU6c29saWR9LnJ0LWJvcmRlcmVkIC5ydC10ZDpmaXJzdC1jaGlsZCwucnQtYm9yZGVyZWQgLnJ0LXRoOmZpcnN0LWNoaWxke2JvcmRlci1sZWZ0Om5vbmV9LnJ0LXRoLWdyb3VwLC5ydC10aC1ncm91cC1ub25le2JvcmRlci1ib3R0b20tc3R5bGU6bm9uZX0ucnQtdGgtZ3JvdXA6YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTttYXJnaW46YXV0bztsZWZ0OjhweDtyaWdodDo4cHg7Ym90dG9tOjA7d2lkdGg6MTAwJTtoZWlnaHQ6MXB4O2JhY2tncm91bmQtY29sb3I6I2U2ZTZlNn0ucnQtYm9yZGVyZWQgLnJ0LXRoLWdyb3VwOmFmdGVyLC5ydC1vdXRsaW5lZCAucnQtdGgtZ3JvdXA6YWZ0ZXJ7bGVmdDowO3JpZ2h0OjB9LnJ0LWJvcmRlcmVkIC5ydC10aC1ncm91cC1ub25le2JvcmRlci1ib3R0b20tc3R5bGU6c29saWR9LnJ0LXRyLXN0cmlwZWR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wMyl9LnJ0LXRyLWhpZ2hsaWdodDpob3ZlciwucnQtdHItc3RyaXBlZC5ydC10ci1oaWdobGlnaHQ6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNSl9LnJ0LXRyLi1wYWRSb3d7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5SZWFjdFRhYmxlIC5ydC10Ym9keSwuUmVhY3RUYWJsZSAucnQtdGZvb3QsLlJlYWN0VGFibGUgLnJ0LXRoZWFkLi1oZWFkZXJ7LW1zLWZsZXgtbmVnYXRpdmU6MDtmbGV4LXNocmluazowfUBzdXBwb3J0cyAoKHBvc2l0aW9uOi13ZWJraXQtc3RpY2t5KSBvciAocG9zaXRpb246c3RpY2t5KSl7LlJlYWN0VGFibGUgLnJ0LXRhYmxle2JhY2tncm91bmQ6aW5oZXJpdH0uUmVhY3RUYWJsZSAucnQtdGJvZHl7b3ZlcmZsb3c6dmlzaWJsZX0uUmVhY3RUYWJsZSAucnQtdGhlYWQuLWhlYWRlcnt0b3A6MH0uUmVhY3RUYWJsZSAucnQtdGZvb3QsLlJlYWN0VGFibGUgLnJ0LXRoZWFkLi1oZWFkZXJ7cG9zaXRpb246LXdlYmtpdC1zdGlja3k7cG9zaXRpb246c3RpY2t5O2JhY2tncm91bmQ6aW5oZXJpdDt6LWluZGV4OjJ9LlJlYWN0VGFibGUgLnJ0LXRmb290e2JvdHRvbTowfX1AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6YWN0aXZlKSxzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDpub25lKXsuUmVhY3RUYWJsZSAucnQtdGJvZHl7b3ZlcmZsb3c6YXV0bzstbXMtb3ZlcmZsb3ctc3R5bGU6LW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyfX0ucnQtdGQtZmlsdGVye2JvcmRlci10b3A6MDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZjJmMmYyfS5ydC1ib3JkZXJsZXNzIC5ydC10ZC1maWx0ZXJ7Ym9yZGVyLWJvdHRvbTowfS5ydC1maWx0ZXJ7cGFkZGluZzo1cHggN3B4O2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMSk7Ym9yZGVyLXJhZGl1czozcHg7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7b3V0bGluZS13aWR0aDowO291dGxpbmUtc3R5bGU6c29saWR9LnJ0LWZpbHRlcjpmb2N1c3tib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjI1KX0ucnQtc29ydC1oZWFkZXJ7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleH0ucnQtYWxpZ24tY2VudGVyIC5ydC1zb3J0LWhlYWRlcnstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5ydC1hbGlnbi1yaWdodCAucnQtc29ydC1oZWFkZXJ7LXdlYmtpdC1ib3gtcGFjazplbmQ7LW1zLWZsZXgtcGFjazplbmQ7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5ydC10aHtvdXRsaW5lLXdpZHRoOjA7b3V0bGluZS1zdHlsZTpzb2xpZH0ucnQtdGhbYXJpYS1zb3J0XSAucnQtc29ydC1sZWZ0OmFmdGVye3BhZGRpbmctcmlnaHQ6NXB4O2xpbmUtaGVpZ2h0OjB9LnJ0LXRoW2FyaWEtc29ydF0gLnJ0LXNvcnQtcmlnaHQ6YWZ0ZXJ7cGFkZGluZy1sZWZ0OjVweDtsaW5lLWhlaWdodDowfS5ydC10aFthcmlhLXNvcnQ9YXNjZW5kaW5nXSAucnQtc29ydC1sZWZ0OmFmdGVyLC5ydC10aFthcmlhLXNvcnQ9YXNjZW5kaW5nXSAucnQtc29ydC1yaWdodDphZnRlcntjb250ZW50OiJcXDIxOTEifS5ydC10aFthcmlhLXNvcnQ9ZGVzY2VuZGluZ10gLnJ0LXNvcnQtbGVmdDphZnRlciwucnQtdGhbYXJpYS1zb3J0PWRlc2NlbmRpbmddIC5ydC1zb3J0LXJpZ2h0OmFmdGVye2NvbnRlbnQ6IlxcMjE5MyJ9LnJ0LXRoW2FyaWEtc29ydD1ub25lXSAucnQtc29ydDphZnRlcntjb250ZW50OiJcXDIxOTUiO29wYWNpdHk6LjR9LnJ0LXRoW2RhdGEtc29ydC1oaW50PWFzY2VuZGluZ10gLnJ0LXNvcnQtbGVmdDphZnRlciwucnQtdGhbZGF0YS1zb3J0LWhpbnQ9YXNjZW5kaW5nXSAucnQtc29ydC1yaWdodDphZnRlcntjb250ZW50OiJcXDIxOTEiO29wYWNpdHk6LjR9LnJ0LXRoW2RhdGEtc29ydC1oaW50PWRlc2NlbmRpbmddIC5ydC1zb3J0LWxlZnQ6YWZ0ZXIsLnJ0LXRoW2RhdGEtc29ydC1oaW50PWRlc2NlbmRpbmddIC5ydC1zb3J0LXJpZ2h0OmFmdGVye2NvbnRlbnQ6IlxcMjE5MyI7b3BhY2l0eTouNH0ucnQtZXhwYW5kZXItYnV0dG9ue21hcmdpbjowIDJweDtwYWRkaW5nOjA7YmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lO2N1cnNvcjpwb2ludGVyfS5ydC1leHBhbmRlcntkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOjAgOHB4O2NvbG9yOnRyYW5zcGFyZW50O291dGxpbmUtd2lkdGg6MDtvdXRsaW5lLXN0eWxlOnNvbGlkfS5ydC1leHBhbmRlcjphZnRlcntjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjA7aGVpZ2h0OjA7dG9wOjUwJTtsZWZ0OjUwJTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKSByb3RhdGUoLTkwZGVnKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgcm90YXRlKC05MGRlZyk7Ym9yZGVyLWxlZnQ6NS4wNHB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDo1LjA0cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcDo3cHggc29saWQgcmdiYSgwLDAsMCwuOCk7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuM3MgY3ViaWMtYmV6aWVyKC4xNzUsLjg4NSwuMzIsMS4yNzUpO3RyYW5zaXRpb246YWxsIC4zcyBjdWJpYy1iZXppZXIoLjE3NSwuODg1LC4zMiwxLjI3NSk7Y3Vyc29yOnBvaW50ZXJ9LnJ0LWV4cGFuZGVyLi1vcGVuOmFmdGVyey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIHJvdGF0ZSgwKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgcm90YXRlKDApfS5ydC1wYWdpbmF0aW9ue2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtcGFjazpqdXN0aWZ5Oy1tcy1mbGV4LXBhY2s6anVzdGlmeTtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbjstd2Via2l0LWJveC1hbGlnbjpiYXNlbGluZTstbXMtZmxleC1hbGlnbjpiYXNlbGluZTthbGlnbi1pdGVtczpiYXNlbGluZTstbXMtZmxleC13cmFwOndyYXA7ZmxleC13cmFwOndyYXA7cGFkZGluZzo2cHggNHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNmMmYyZjJ9LnJ0LWJvcmRlcmVkIC5ydC1wYWdpbmF0aW9uLC5ydC1vdXRsaW5lZCAucnQtcGFnaW5hdGlvbntib3JkZXItdG9wOm5vbmV9LnJ0LXBhZ2luYXRpb24taW5mbyA6bm90KDpsYXN0LWNoaWxkKXttYXJnaW4tcmlnaHQ6MTZweH0ucnQtcGFnZS1pbmZve2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbjo2cHggOHB4O29wYWNpdHk6Ljl9LnJ0LXBhZ2Utc2l6ZXtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW46MCA4cHh9LnJ0LXBhZ2Utc2l6ZS1zZWxlY3R7bWFyZ2luOjAgMnB4fS5ydC1wYWdlLWJ1dHRvbiwucnQtcGFnZS1qdW1wLC5ydC1wYWdlLXNpemUtc2VsZWN0e2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Y29sb3I6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0fS5ydC1wYWdlLWp1bXAsLnJ0LXBhZ2Utc2l6ZS1zZWxlY3R7YmFja2dyb3VuZC1jb2xvcjojZmZmO3BhZGRpbmc6M3B4O2JvcmRlci1yYWRpdXM6M3B4O2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMDUpfUBzdXBwb3J0cyAoLW1vei1hcHBlYXJhbmNlOm5vbmUpey5ydC1wYWdlLXNpemUtc2VsZWN0ey1tb3otYXBwZWFyYW5jZTpub25lO3BhZGRpbmctcmlnaHQ6MTJweDtiYWNrZ3JvdW5kLWltYWdlOnVybChcJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVTLUFTQ0lJLDxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGw9IiUyMzMzMyIgZD0iTTI0IDEuNWwtMTIgMjEtMTItMjFoMjR6Ii8+PC9zdmc+XCcpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IDZweCBjZW50ZXI7YmFja2dyb3VuZC1zaXplOjZweH19LnJ0LXBhZ2UtYnV0dG9ue3BhZGRpbmc6NnB4IDEycHg7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjNweDtvdXRsaW5lLXdpZHRoOjA7b3V0bGluZS1zdHlsZTpzb2xpZDtjdXJzb3I6cG9pbnRlcn0ucnQtcGFnZS1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7cGFkZGluZzowO2JvcmRlci1zdHlsZTpub25lfS5ydC1wYWdlLWJ1dHRvbjpkaXNhYmxlZHtvcGFjaXR5Oi42O2N1cnNvcjpkZWZhdWx0fS5ydC1wYWdlLWJ1dHRvbjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ucnQtcGFnZS1idXR0b246YWN0aXZle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDgpfS5ydC1rZXlib2FyZC1hY3RpdmUgLnJ0LXBhZ2UtYnV0dG9uOmZvY3Vze2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5ydC1wYWdlLWJ1dHRvbjpkaXNhYmxlZDpmb2N1cywucnQtcGFnZS1idXR0b246ZGlzYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ucnQtcGFnZS1idXR0b24tY3VycmVudHtmb250LXdlaWdodDo3MDB9LnJ0LXBhZ2UtZWxsaXBzaXN7bWFyZ2luOjAgNHB4O3BvaW50ZXItZXZlbnRzOm5vbmV9LnJ0LXBhZ2UtbnVtYmVyc3tkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW46MCA4cHg7d2hpdGUtc3BhY2U6bm93cmFwfS5ydC1wYWdlLWp1bXB7d2lkdGg6NzBweDt0ZXh0LWFsaWduOmNlbnRlcn0ucnQtdGJvZHktbm9EYXRhe3Bvc2l0aW9uOnJlbGF0aXZlfS5ydC10Ym9keS1ub0RhdGEgLnJ0LXRke2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudH0ucnQtbm9EYXRhe2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo1MCU7dG9wOjUwJTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSk7bGluZS1oZWlnaHQ6MDt6LWluZGV4OjF9LnJ0LXNlYXJjaHtkaXNwbGF5OmJsb2NrOy1tcy1mbGV4LWl0ZW0tYWxpZ246ZW5kO2FsaWduLXNlbGY6ZmxleC1lbmQ7bWFyZ2luLWJvdHRvbTo4cHg7cGFkZGluZzo1cHggN3B4O2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMSk7Ym9yZGVyLXJhZGl1czozcHg7b3V0bGluZS13aWR0aDowO291dGxpbmUtc3R5bGU6c29saWQ7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdH0ucnQtc2VhcmNoOmFjdGl2ZSwucnQtc2VhcmNoOmZvY3Vze2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMjUpfScsIiJdKX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyLnIodCk7dmFyIG49cigzKSxhPXIoMSksbz1yLm4oYSksaT1yKDIpLGw9ci5uKGkpLHM9cigwKSx1PXIubihzKTtmdW5jdGlvbiBjKGUsdCl7dmFyIHI9T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYobj1uLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxyLnB1c2guYXBwbHkocixuKX1yZXR1cm4gcn1mdW5jdGlvbiBmKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP2MoT2JqZWN0KHIpLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtkKGUsdCxyW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpKTpjKE9iamVjdChyKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGQoZSx0LHIpe3JldHVybiB0IGluIGU\/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09cixlfXZhciBwPWYoZih7fSxsLmEucHJvcFR5cGVzKSx7fSx7ZGF0YTp1LmEuYW55LGxvYWRpbmc6dS5hLmJvb2wsc2hvd1BhZ2luYXRpb246dS5hLmJvb2wsc2hvd1BhZ2luYXRpb25Ub3A6dS5hLmJvb2wsc2hvd1BhZ2luYXRpb25Cb3R0b206dS5hLmJvb2wsc2hvd1BhZ2VTaXplT3B0aW9uczp1LmEuYm9vbCxwYWdlU2l6ZU9wdGlvbnM6dS5hLmFycmF5LGRlZmF1bHRQYWdlU2l6ZTp1LmEubnVtYmVyLHNob3dQYWdlSnVtcDp1LmEuYm9vbCxjb2xsYXBzZU9uU29ydGluZ0NoYW5nZTp1LmEuYm9vbCxjb2xsYXBzZU9uUGFnZUNoYW5nZTp1LmEuYm9vbCxjb2xsYXBzZU9uRGF0YUNoYW5nZTp1LmEuYm9vbCxmcmVlemVXaGVuRXhwYW5kZWQ6dS5hLmJvb2wsc29ydGFibGU6dS5hLmJvb2wscmVzaXphYmxlOnUuYS5ib29sLGZpbHRlcmFibGU6dS5hLmJvb2wsZGVmYXVsdFNvcnREZXNjOnUuYS5ib29sLGRlZmF1bHRTb3J0ZWQ6dS5hLmFycmF5LGRlZmF1bHRGaWx0ZXJlZDp1LmEuYXJyYXksZGVmYXVsdFJlc2l6ZWQ6dS5hLmFycmF5LGRlZmF1bHRFeHBhbmRlZDp1LmEub2JqZWN0LGRlZmF1bHRGaWx0ZXJNZXRob2Q6dS5hLmZ1bmMsZGVmYXVsdFNvcnRNZXRob2Q6dS5hLmZ1bmMsb25QYWdlQ2hhbmdlOnUuYS5mdW5jLG9uUGFnZVNpemVDaGFuZ2U6dS5hLmZ1bmMsb25Tb3J0ZWRDaGFuZ2U6dS5hLmZ1bmMsb25GaWx0ZXJlZENoYW5nZTp1LmEuZnVuYyxvblJlc2l6ZWRDaGFuZ2U6dS5hLmZ1bmMsb25FeHBhbmRlZENoYW5nZTp1LmEuZnVuYyxwaXZvdEJ5OnUuYS5hcnJheSxwaXZvdFZhbEtleTp1LmEuc3RyaW5nLHBpdm90SURLZXk6dS5hLnN0cmluZyxzdWJSb3dzS2V5OnUuYS5zdHJpbmcsYWdncmVnYXRlZEtleTp1LmEuc3RyaW5nLG5lc3RpbmdMZXZlbEtleTp1LmEuc3RyaW5nLG9yaWdpbmFsS2V5OnUuYS5zdHJpbmcsaW5kZXhLZXk6dS5hLnN0cmluZyxncm91cGVkQnlQaXZvdEtleTp1LmEuc3RyaW5nLG9uRmV0Y2hEYXRhOnUuYS5mdW5jLGNsYXNzTmFtZTp1LmEuc3RyaW5nLHN0eWxlOnUuYS5vYmplY3QsZ2V0UHJvcHM6dS5hLmZ1bmMsZ2V0VGFibGVQcm9wczp1LmEuZnVuYyxnZXRUaGVhZEdyb3VwUHJvcHM6dS5hLmZ1bmMsZ2V0VGhlYWRHcm91cFRyUHJvcHM6dS5hLmZ1bmMsZ2V0VGhlYWRHcm91cFRoUHJvcHM6dS5hLmZ1bmMsZ2V0VGhlYWRQcm9wczp1LmEuZnVuYyxnZXRUaGVhZFRyUHJvcHM6dS5hLmZ1bmMsZ2V0VGhlYWRUaFByb3BzOnUuYS5mdW5jLGdldFRoZWFkRmlsdGVyUHJvcHM6dS5hLmZ1bmMsZ2V0VGhlYWRGaWx0ZXJUclByb3BzOnUuYS5mdW5jLGdldFRoZWFkRmlsdGVyVGhQcm9wczp1LmEuZnVuYyxnZXRUYm9keVByb3BzOnUuYS5mdW5jLGdldFRyR3JvdXBQcm9wczp1LmEuZnVuYyxnZXRUclByb3BzOnUuYS5mdW5jLGdldFRkUHJvcHM6dS5hLmZ1bmMsZ2V0VGZvb3RQcm9wczp1LmEuZnVuYyxnZXRUZm9vdFRyUHJvcHM6dS5hLmZ1bmMsZ2V0VGZvb3RUZFByb3BzOnUuYS5mdW5jLGdldFBhZ2luYXRpb25Qcm9wczp1LmEuZnVuYyxnZXRMb2FkaW5nUHJvcHM6dS5hLmZ1bmMsZ2V0Tm9EYXRhUHJvcHM6dS5hLmZ1bmMsZ2V0UmVzaXplclByb3BzOnUuYS5mdW5jLGNvbHVtbnM6dS5hLmFycmF5T2YodS5hLnNoYXBlKHtDZWxsOnUuYS5vbmVPZlR5cGUoW3UuYS5lbGVtZW50LHUuYS5zdHJpbmcsdS5hLmZ1bmNdKSxIZWFkZXI6dS5hLm9uZU9mVHlwZShbdS5hLmVsZW1lbnQsdS5hLnN0cmluZyx1LmEuZnVuY10pLEZvb3Rlcjp1LmEub25lT2ZUeXBlKFt1LmEuZWxlbWVudCx1LmEuc3RyaW5nLHUuYS5mdW5jXSksQWdncmVnYXRlZDp1LmEub25lT2ZUeXBlKFt1LmEuZWxlbWVudCx1LmEuc3RyaW5nLHUuYS5mdW5jXSksUGl2b3Q6dS5hLm9uZU9mVHlwZShbdS5hLmVsZW1lbnQsdS5hLnN0cmluZyx1LmEuZnVuY10pLFBpdm90VmFsdWU6dS5hLm9uZU9mVHlwZShbdS5hLmVsZW1lbnQsdS5hLnN0cmluZyx1LmEuZnVuY10pLEV4cGFuZGVyOnUuYS5vbmVPZlR5cGUoW3UuYS5lbGVtZW50LHUuYS5zdHJpbmcsdS5hLmZ1bmNdKSxGaWx0ZXI6dS5hLm9uZU9mVHlwZShbdS5hLmVsZW1lbnQsdS5hLmZ1bmNdKSxzb3J0YWJsZTp1LmEuYm9vbCxyZXNpemFibGU6dS5hLmJvb2wsZmlsdGVyYWJsZTp1LmEuYm9vbCxzaG93OnUuYS5ib29sLG1pbldpZHRoOnUuYS5udW1iZXIsbWluUmVzaXplV2lkdGg6dS5hLm51bWJlcixjbGFzc05hbWU6dS5hLnN0cmluZyxzdHlsZTp1LmEub2JqZWN0LGdldFByb3BzOnUuYS5mdW5jLGFnZ3JlZ2F0ZTp1LmEuZnVuYyxoZWFkZXJDbGFzc05hbWU6dS5hLnN0cmluZyxoZWFkZXJTdHlsZTp1LmEub2JqZWN0LGdldEhlYWRlclByb3BzOnUuYS5mdW5jLGZvb3RlckNsYXNzTmFtZTp1LmEuc3RyaW5nLGZvb3RlclN0eWxlOnUuYS5vYmplY3QsZ2V0Rm9vdGVyUHJvcHM6dS5hLmZ1bmMsZmlsdGVyTWV0aG9kOnUuYS5mdW5jLGZpbHRlckFsbDp1LmEuYm9vbCxzb3J0TWV0aG9kOnUuYS5mdW5jfSkpLGV4cGFuZGVyRGVmYXVsdHM6dS5hLnNoYXBlKHtzb3J0YWJsZTp1LmEuYm9vbCxyZXNpemFibGU6dS5hLmJvb2wsZmlsdGVyYWJsZTp1LmEuYm9vbCx3aWR0aDp1LmEubnVtYmVyfSkscGl2b3REZWZhdWx0czp1LmEub2JqZWN0LHByZXZpb3VzVGV4dDp1LmEubm9kZSxuZXh0VGV4dDp1LmEubm9kZSxsb2FkaW5nVGV4dDp1LmEubm9kZSxub0RhdGFUZXh0OnUuYS5ub2RlLHBhZ2VUZXh0OnUuYS5ub2RlLG9mVGV4dDp1LmEubm9kZSxyb3dzVGV4dDp1LmEubm9kZSxwYWdlSnVtcFRleHQ6dS5hLm5vZGUscm93c1NlbGVjdG9yVGV4dDp1LmEubm9kZSxUYWJsZUNvbXBvbmVudDp1LmEub25lT2ZUeXBlKFt1LmEuZnVuYyx1LmEuZWxlbWVudF0pLFRoZWFkQ29tcG9uZW50OnUuYS5vbmVPZlR5cGUoW3UuYS5mdW5jLHUuYS5lbGVtZW50XSksVGJvZHlDb21wb25lbnQ6dS5hLm9uZU9mVHlwZShbdS5hLmZ1bmMsdS5hLmVsZW1lbnRdKSxUckdyb3VwQ29tcG9uZW50OnUuYS5vbmVPZlR5cGUoW3UuYS5mdW5jLHUuYS5lbGVtZW50XSksVHJDb21wb25lbnQ6dS5hLm9uZU9mVHlwZShbdS5hLmZ1bmMsdS5hLmVsZW1lbnRdKSxUaENvbXBvbmVudDp1LmEub25lT2ZUeXBlKFt1LmEuZnVuYyx1LmEuZWxlbWVudF0pLFRkQ29tcG9uZW50OnUuYS5vbmVPZlR5cGUoW3UuYS5mdW5jLHUuYS5lbGVtZW50XSksVGZvb3RDb21wb25lbnQ6dS5hLm9uZU9mVHlwZShbdS5hLmZ1bmMsdS5hLmVsZW1lbnRdKSxGaWx0ZXJDb21wb25lbnQ6dS5hLm9uZU9mVHlwZShbdS5hLmZ1bmMsdS5hLmVsZW1lbnRdKSxFeHBhbmRlckNvbXBvbmVudDp1LmEub25lT2ZUeXBlKFt1LmEuZnVuYyx1LmEuZWxlbWVudF0pLFBpdm90VmFsdWVDb21wb25lbnQ6dS5hLm9uZU9mVHlwZShbdS5hLmZ1bmMsdS5hLmVsZW1lbnRdKSxBZ2dyZWdhdGVkQ29tcG9uZW50OnUuYS5vbmVPZlR5cGUoW3UuYS5mdW5jLHUuYS5lbGVtZW50XSksUGl2b3RDb21wb25lbnQ6dS5hLm9uZU9mVHlwZShbdS5hLmZ1bmMsdS5hLmVsZW1lbnRdKSxQYWdpbmF0aW9uQ29tcG9uZW50OnUuYS5vbmVPZlR5cGUoW3UuYS5mdW5jLHUuYS5lbGVtZW50XSksUHJldmlvdXNDb21wb25lbnQ6dS5hLm9uZU9mVHlwZShbdS5hLmZ1bmMsdS5hLmVsZW1lbnRdKSxOZXh0Q29tcG9uZW50OnUuYS5vbmVPZlR5cGUoW3UuYS5mdW5jLHUuYS5lbGVtZW50XSksTG9hZGluZ0NvbXBvbmVudDp1LmEub25lT2ZUeXBlKFt1LmEuZnVuYyx1LmEuZWxlbWVudF0pLE5vRGF0YUNvbXBvbmVudDp1LmEub25lT2ZUeXBlKFt1LmEuZnVuYyx1LmEuZWxlbWVudF0pLFJlc2l6ZXJDb21wb25lbnQ6dS5hLm9uZU9mVHlwZShbdS5hLmZ1bmMsdS5hLmVsZW1lbnRdKSxQYWRSb3dDb21wb25lbnQ6dS5hLm9uZU9mVHlwZShbdS5hLmZ1bmMsdS5hLmVsZW1lbnRdKX0pO3ZhciBnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLmlzU3BlZWR5PXZvaWQgMD09PWUuc3BlZWR5fHxlLnNwZWVkeSx0aGlzLnRhZ3M9W10sdGhpcy5jdHI9MCx0aGlzLm5vbmNlPWUubm9uY2UsdGhpcy5rZXk9ZS5rZXksdGhpcy5jb250YWluZXI9ZS5jb250YWluZXIsdGhpcy5iZWZvcmU9bnVsbH12YXIgdD1lLnByb3RvdHlwZTtyZXR1cm4gdC5pbnNlcnQ9ZnVuY3Rpb24oZSl7aWYodGhpcy5jdHIlKHRoaXMuaXNTcGVlZHk\/NjVlMzoxKT09MCl7dmFyIHQscj1mdW5jdGlvbihlKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3JldHVybiB0LnNldEF0dHJpYnV0ZSgiZGF0YS1lbW90aW9uIixlLmtleSksdm9pZCAwIT09ZS5ub25jZSYmdC5zZXRBdHRyaWJ1dGUoIm5vbmNlIixlLm5vbmNlKSx0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKSksdH0odGhpcyk7dD0wPT09dGhpcy50YWdzLmxlbmd0aD90aGlzLmJlZm9yZTp0aGlzLnRhZ3NbdGhpcy50YWdzLmxlbmd0aC0xXS5uZXh0U2libGluZyx0aGlzLmNvbnRhaW5lci5pbnNlcnRCZWZvcmUocix0KSx0aGlzLnRhZ3MucHVzaChyKX12YXIgbj10aGlzLnRhZ3NbdGhpcy50YWdzLmxlbmd0aC0xXTtpZih0aGlzLmlzU3BlZWR5KXt2YXIgYT1mdW5jdGlvbihlKXtpZihlLnNoZWV0KXJldHVybiBlLnNoZWV0O2Zvcih2YXIgdD0wO3Q8ZG9jdW1lbnQuc3R5bGVTaGVldHMubGVuZ3RoO3QrKylpZihkb2N1bWVudC5zdHlsZVNoZWV0c1t0XS5vd25lck5vZGU9PT1lKXJldHVybiBkb2N1bWVudC5zdHlsZVNoZWV0c1t0XX0obik7dHJ5e3ZhciBvPTEwNT09PWUuY2hhckNvZGVBdCgxKSYmNjQ9PT1lLmNoYXJDb2RlQXQoMCk7YS5pbnNlcnRSdWxlKGUsbz8wOmEuY3NzUnVsZXMubGVuZ3RoKX1jYXRjaChlKXswfX1lbHNlIG4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZSkpO3RoaXMuY3RyKyt9LHQuZmx1c2g9ZnVuY3Rpb24oKXt0aGlzLnRhZ3MuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKX0pKSx0aGlzLnRhZ3M9W10sdGhpcy5jdHI9MH0sZX0oKTt2YXIgaD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCxuKXt2YXIgYT10LnRyaW0oKS5zcGxpdChnKTt0PWE7dmFyIG89YS5sZW5ndGgsaT1lLmxlbmd0aDtzd2l0Y2goaSl7Y2FzZSAwOmNhc2UgMTp2YXIgbD0wO2ZvcihlPTA9PT1pPyIiOmVbMF0rIiAiO2w8bzsrK2wpdFtsXT1yKGUsdFtsXSxuKS50cmltKCk7YnJlYWs7ZGVmYXVsdDp2YXIgcz1sPTA7Zm9yKHQ9W107bDxvOysrbClmb3IodmFyIHU9MDt1PGk7Kyt1KXRbcysrXT1yKGVbdV0rIiAiLGFbbF0sbikudHJpbSgpfXJldHVybiB0fWZ1bmN0aW9uIHIoZSx0LHIpe3ZhciBuPXQuY2hhckNvZGVBdCgwKTtzd2l0Y2goMzM+biYmKG49KHQ9dC50cmltKCkpLmNoYXJDb2RlQXQoMCkpLG4pe2Nhc2UgMzg6cmV0dXJuIHQucmVwbGFjZShoLCIkMSIrZS50cmltKCkpO2Nhc2UgNTg6cmV0dXJuIGUudHJpbSgpK3QucmVwbGFjZShoLCIkMSIrZS50cmltKCkpO2RlZmF1bHQ6aWYoMDwxKnImJjA8dC5pbmRleE9mKCJcZiIpKXJldHVybiB0LnJlcGxhY2UoaCwoNTg9PT1lLmNoYXJDb2RlQXQoMCk\/IiI6IiQxIikrZS50cmltKCkpfXJldHVybiBlK3R9ZnVuY3Rpb24gbihlLHQscixvKXt2YXIgaT1lKyI7IixsPTIqdCszKnIrNCpvO2lmKDk0ND09PWwpe2U9aS5pbmRleE9mKCI6Iiw5KSsxO3ZhciBzPWkuc3Vic3RyaW5nKGUsaS5sZW5ndGgtMSkudHJpbSgpO3JldHVybiBzPWkuc3Vic3RyaW5nKDAsZSkudHJpbSgpK3MrIjsiLDE9PT1FfHwyPT09RSYmYShzLDEpPyItd2Via2l0LSIrcytzOnN9aWYoMD09PUV8fDI9PT1FJiYhYShpLDEpKXJldHVybiBpO3N3aXRjaChsKXtjYXNlIDEwMTU6cmV0dXJuIDk3PT09aS5jaGFyQ29kZUF0KDEwKT8iLXdlYmtpdC0iK2kraTppO2Nhc2UgOTUxOnJldHVybiAxMTY9PT1pLmNoYXJDb2RlQXQoMyk\/Ii13ZWJraXQtIitpK2k6aTtjYXNlIDk2MzpyZXR1cm4gMTEwPT09aS5jaGFyQ29kZUF0KDUpPyItd2Via2l0LSIraStpOmk7Y2FzZSAxMDA5OmlmKDEwMCE9PWkuY2hhckNvZGVBdCg0KSlicmVhaztjYXNlIDk2OTpjYXNlIDk0MjpyZXR1cm4iLXdlYmtpdC0iK2kraTtjYXNlIDk3ODpyZXR1cm4iLXdlYmtpdC0iK2krIi1tb3otIitpK2k7Y2FzZSAxMDE5OmNhc2UgOTgzOnJldHVybiItd2Via2l0LSIraSsiLW1vei0iK2krIi1tcy0iK2kraTtjYXNlIDg4MzppZig0NT09PWkuY2hhckNvZGVBdCg4KSlyZXR1cm4iLXdlYmtpdC0iK2kraTtpZigwPGkuaW5kZXhPZigiaW1hZ2Utc2V0KCIsMTEpKXJldHVybiBpLnJlcGxhY2UoTywiJDEtd2Via2l0LSQyIikraTticmVhaztjYXNlIDkzMjppZig0NT09PWkuY2hhckNvZGVBdCg0KSlzd2l0Y2goaS5jaGFyQ29kZUF0KDUpKXtjYXNlIDEwMzpyZXR1cm4iLXdlYmtpdC1ib3gtIitpLnJlcGxhY2UoIi1ncm93IiwiIikrIi13ZWJraXQtIitpKyItbXMtIitpLnJlcGxhY2UoImdyb3ciLCJwb3NpdGl2ZSIpK2k7Y2FzZSAxMTU6cmV0dXJuIi13ZWJraXQtIitpKyItbXMtIitpLnJlcGxhY2UoInNocmluayIsIm5lZ2F0aXZlIikraTtjYXNlIDk4OnJldHVybiItd2Via2l0LSIraSsiLW1zLSIraS5yZXBsYWNlKCJiYXNpcyIsInByZWZlcnJlZC1zaXplIikraX1yZXR1cm4iLXdlYmtpdC0iK2krIi1tcy0iK2kraTtjYXNlIDk2NDpyZXR1cm4iLXdlYmtpdC0iK2krIi1tcy1mbGV4LSIraStpO2Nhc2UgMTAyMzppZig5OSE9PWkuY2hhckNvZGVBdCg4KSlicmVhaztyZXR1cm4iLXdlYmtpdC1ib3gtcGFjayIrKHM9aS5zdWJzdHJpbmcoaS5pbmRleE9mKCI6IiwxNSkpLnJlcGxhY2UoImZsZXgtIiwiIikucmVwbGFjZSgic3BhY2UtYmV0d2VlbiIsImp1c3RpZnkiKSkrIi13ZWJraXQtIitpKyItbXMtZmxleC1wYWNrIitzK2k7Y2FzZSAxMDA1OnJldHVybiBkLnRlc3QoaSk\/aS5yZXBsYWNlKGYsIjotd2Via2l0LSIpK2kucmVwbGFjZShmLCI6LW1vei0iKStpOmk7Y2FzZSAxZTM6c3dpdGNoKHQ9KHM9aS5zdWJzdHJpbmcoMTMpLnRyaW0oKSkuaW5kZXhPZigiLSIpKzEscy5jaGFyQ29kZUF0KDApK3MuY2hhckNvZGVBdCh0KSl7Y2FzZSAyMjY6cz1pLnJlcGxhY2UodiwidGIiKTticmVhaztjYXNlIDIzMjpzPWkucmVwbGFjZSh2LCJ0Yi1ybCIpO2JyZWFrO2Nhc2UgMjIwOnM9aS5yZXBsYWNlKHYsImxyIik7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gaX1yZXR1cm4iLXdlYmtpdC0iK2krIi1tcy0iK3MraTtjYXNlIDEwMTc6aWYoLTE9PT1pLmluZGV4T2YoInN0aWNreSIsOSkpYnJlYWs7Y2FzZSA5NzU6c3dpdGNoKHQ9KGk9ZSkubGVuZ3RoLTEwLGw9KHM9KDMzPT09aS5jaGFyQ29kZUF0KHQpP2kuc3Vic3RyaW5nKDAsdCk6aSkuc3Vic3RyaW5nKGUuaW5kZXhPZigiOiIsNykrMSkudHJpbSgpKS5jaGFyQ29kZUF0KDApKygwfHMuY2hhckNvZGVBdCg3KSkpe2Nhc2UgMjAzOmlmKDExMT5zLmNoYXJDb2RlQXQoOCkpYnJlYWs7Y2FzZSAxMTU6aT1pLnJlcGxhY2UocywiLXdlYmtpdC0iK3MpKyI7IitpO2JyZWFrO2Nhc2UgMjA3OmNhc2UgMTAyOmk9aS5yZXBsYWNlKHMsIi13ZWJraXQtIisoMTAyPGw\/ImlubGluZS0iOiIiKSsiYm94IikrIjsiK2kucmVwbGFjZShzLCItd2Via2l0LSIrcykrIjsiK2kucmVwbGFjZShzLCItbXMtIitzKyJib3giKSsiOyIraX1yZXR1cm4gaSsiOyI7Y2FzZSA5Mzg6aWYoNDU9PT1pLmNoYXJDb2RlQXQoNSkpc3dpdGNoKGkuY2hhckNvZGVBdCg2KSl7Y2FzZSAxMDU6cmV0dXJuIHM9aS5yZXBsYWNlKCItaXRlbXMiLCIiKSwiLXdlYmtpdC0iK2krIi13ZWJraXQtYm94LSIrcysiLW1zLWZsZXgtIitzK2k7Y2FzZSAxMTU6cmV0dXJuIi13ZWJraXQtIitpKyItbXMtZmxleC1pdGVtLSIraS5yZXBsYWNlKFMsIiIpK2k7ZGVmYXVsdDpyZXR1cm4iLXdlYmtpdC0iK2krIi1tcy1mbGV4LWxpbmUtcGFjayIraS5yZXBsYWNlKCJhbGlnbi1jb250ZW50IiwiIikucmVwbGFjZShTLCIiKStpfWJyZWFrO2Nhc2UgOTczOmNhc2UgOTg5OmlmKDQ1IT09aS5jaGFyQ29kZUF0KDMpfHwxMjI9PT1pLmNoYXJDb2RlQXQoNCkpYnJlYWs7Y2FzZSA5MzE6Y2FzZSA5NTM6aWYoITA9PT1DLnRlc3QoZSkpcmV0dXJuIDExNT09PShzPWUuc3Vic3RyaW5nKGUuaW5kZXhPZigiOiIpKzEpKS5jaGFyQ29kZUF0KDApP24oZS5yZXBsYWNlKCJzdHJldGNoIiwiZmlsbC1hdmFpbGFibGUiKSx0LHIsbykucmVwbGFjZSgiOmZpbGwtYXZhaWxhYmxlIiwiOnN0cmV0Y2giKTppLnJlcGxhY2UocywiLXdlYmtpdC0iK3MpK2kucmVwbGFjZShzLCItbW96LSIrcy5yZXBsYWNlKCJmaWxsLSIsIiIpKStpO2JyZWFrO2Nhc2UgOTYyOmlmKGk9Ii13ZWJraXQtIitpKygxMDI9PT1pLmNoYXJDb2RlQXQoNSk\/Ii1tcy0iK2k6IiIpK2ksMjExPT09citvJiYxMDU9PT1pLmNoYXJDb2RlQXQoMTMpJiYwPGkuaW5kZXhPZigidHJhbnNmb3JtIiwxMCkpcmV0dXJuIGkuc3Vic3RyaW5nKDAsaS5pbmRleE9mKCI7IiwyNykrMSkucmVwbGFjZShwLCIkMS13ZWJraXQtJDIiKStpfXJldHVybiBpfWZ1bmN0aW9uIGEoZSx0KXt2YXIgcj1lLmluZGV4T2YoMT09PXQ\/IjoiOiJ7Iiksbj1lLnN1YnN0cmluZygwLDMhPT10P3I6MTApO3JldHVybiByPWUuc3Vic3RyaW5nKHIrMSxlLmxlbmd0aC0xKSxEKDIhPT10P246bi5yZXBsYWNlKFAsIiQxIikscix0KX1mdW5jdGlvbiBvKGUsdCl7dmFyIHI9bih0LHQuY2hhckNvZGVBdCgwKSx0LmNoYXJDb2RlQXQoMSksdC5jaGFyQ29kZUF0KDIpKTtyZXR1cm4gciE9PXQrIjsiP3IucmVwbGFjZSh4LCIgb3IgKCQxKSIpLnN1YnN0cmluZyg0KToiKCIrdCsiKSJ9ZnVuY3Rpb24gaShlLHQscixuLGEsbyxpLGwsdSxjKXtmb3IodmFyIGYsZD0wLHA9dDtkPEE7KytkKXN3aXRjaChmPU5bZF0uY2FsbChzLGUscCxyLG4sYSxvLGksbCx1LGMpKXtjYXNlIHZvaWQgMDpjYXNlITE6Y2FzZSEwOmNhc2UgbnVsbDpicmVhaztkZWZhdWx0OnA9Zn1pZihwIT09dClyZXR1cm4gcH1mdW5jdGlvbiBsKGUpe3JldHVybiB2b2lkIDAhPT0oZT1lLnByZWZpeCkmJihEPW51bGwsZT8iZnVuY3Rpb24iIT10eXBlb2YgZT9FPTE6KEU9MixEPWUpOkU9MCksbH1mdW5jdGlvbiBzKGUscil7dmFyIGw9ZTtpZigzMz5sLmNoYXJDb2RlQXQoMCkmJihsPWwudHJpbSgpKSxsPVtsXSwwPEEpe3ZhciBzPWkoLTEscixsLGwsVCxrLDAsMCwwLDApO3ZvaWQgMCE9PXMmJiJzdHJpbmciPT10eXBlb2YgcyYmKHI9cyl9dmFyIGY9ZnVuY3Rpb24gZShyLGwscyxmLGQpe2Zvcih2YXIgcCxnLGgsdix4LFM9MCxQPTAsQz0wLE89MCxOPTAsRD0wLF89aD1wPTAsRj0wLE09MCxJPTAsTD0wLFc9cy5sZW5ndGgsSz1XLTEsQj0iIixIPSIiLEc9IiIsVT0iIjtGPFc7KXtpZihnPXMuY2hhckNvZGVBdChGKSxGPT09SyYmMCE9PVArTytDK1MmJigwIT09UCYmKGc9NDc9PT1QPzEwOjQ3KSxPPUM9Uz0wLFcrKyxLKyspLDA9PT1QK08rQytTKXtpZihGPT09SyYmKDA8TSYmKEI9Qi5yZXBsYWNlKGMsIiIpKSwwPEIudHJpbSgpLmxlbmd0aCkpe3N3aXRjaChnKXtjYXNlIDMyOmNhc2UgOTpjYXNlIDU5OmNhc2UgMTM6Y2FzZSAxMDpicmVhaztkZWZhdWx0OkIrPXMuY2hhckF0KEYpfWc9NTl9c3dpdGNoKGcpe2Nhc2UgMTIzOmZvcihwPShCPUIudHJpbSgpKS5jaGFyQ29kZUF0KDApLGg9MSxMPSsrRjtGPFc7KXtzd2l0Y2goZz1zLmNoYXJDb2RlQXQoRikpe2Nhc2UgMTIzOmgrKzticmVhaztjYXNlIDEyNTpoLS07YnJlYWs7Y2FzZSA0Nzpzd2l0Y2goZz1zLmNoYXJDb2RlQXQoRisxKSl7Y2FzZSA0MjpjYXNlIDQ3OmU6e2ZvcihfPUYrMTtfPEs7KytfKXN3aXRjaChzLmNoYXJDb2RlQXQoXykpe2Nhc2UgNDc6aWYoNDI9PT1nJiY0Mj09PXMuY2hhckNvZGVBdChfLTEpJiZGKzIhPT1fKXtGPV8rMTticmVhayBlfWJyZWFrO2Nhc2UgMTA6aWYoNDc9PT1nKXtGPV8rMTticmVhayBlfX1GPV99fWJyZWFrO2Nhc2UgOTE6ZysrO2Nhc2UgNDA6ZysrO2Nhc2UgMzQ6Y2FzZSAzOTpmb3IoO0YrKzxLJiZzLmNoYXJDb2RlQXQoRikhPT1nOyk7fWlmKDA9PT1oKWJyZWFrO0YrK31zd2l0Y2goaD1zLnN1YnN0cmluZyhMLEYpLDA9PT1wJiYocD0oQj1CLnJlcGxhY2UodSwiIikudHJpbSgpKS5jaGFyQ29kZUF0KDApKSxwKXtjYXNlIDY0OnN3aXRjaCgwPE0mJihCPUIucmVwbGFjZShjLCIiKSksZz1CLmNoYXJDb2RlQXQoMSkpe2Nhc2UgMTAwOmNhc2UgMTA5OmNhc2UgMTE1OmNhc2UgNDU6TT1sO2JyZWFrO2RlZmF1bHQ6TT1SfWlmKEw9KGg9ZShsLE0saCxnLGQrMSkpLmxlbmd0aCwwPEEmJih4PWkoMyxoLE09dChSLEIsSSksbCxULGssTCxnLGQsZiksQj1NLmpvaW4oIiIpLHZvaWQgMCE9PXgmJjA9PT0oTD0oaD14LnRyaW0oKSkubGVuZ3RoKSYmKGc9MCxoPSIiKSksMDxMKXN3aXRjaChnKXtjYXNlIDExNTpCPUIucmVwbGFjZSh3LG8pO2Nhc2UgMTAwOmNhc2UgMTA5OmNhc2UgNDU6aD1CKyJ7IitoKyJ9IjticmVhaztjYXNlIDEwNzpoPShCPUIucmVwbGFjZShtLCIkMSAkMiIpKSsieyIraCsifSIsaD0xPT09RXx8Mj09PUUmJmEoIkAiK2gsMyk\/IkAtd2Via2l0LSIraCsiQCIraDoiQCIraDticmVhaztkZWZhdWx0Omg9QitoLDExMj09PWYmJihIKz1oLGg9IiIpfWVsc2UgaD0iIjticmVhaztkZWZhdWx0Omg9ZShsLHQobCxCLEkpLGgsZixkKzEpfUcrPWgsaD1JPU09Xz1wPTAsQj0iIixnPXMuY2hhckNvZGVBdCgrK0YpO2JyZWFrO2Nhc2UgMTI1OmNhc2UgNTk6aWYoMTwoTD0oQj0oMDxNP0IucmVwbGFjZShjLCIiKTpCKS50cmltKCkpLmxlbmd0aCkpc3dpdGNoKDA9PT1fJiYocD1CLmNoYXJDb2RlQXQoMCksNDU9PT1wfHw5NjxwJiYxMjM+cCkmJihMPShCPUIucmVwbGFjZSgiICIsIjoiKSkubGVuZ3RoKSwwPEEmJnZvaWQgMCE9PSh4PWkoMSxCLGwscixULGssSC5sZW5ndGgsZixkLGYpKSYmMD09PShMPShCPXgudHJpbSgpKS5sZW5ndGgpJiYoQj0iXDBcMCIpLHA9Qi5jaGFyQ29kZUF0KDApLGc9Qi5jaGFyQ29kZUF0KDEpLHApe2Nhc2UgMDpicmVhaztjYXNlIDY0OmlmKDEwNT09PWd8fDk5PT09Zyl7VSs9QitzLmNoYXJBdChGKTticmVha31kZWZhdWx0OjU4IT09Qi5jaGFyQ29kZUF0KEwtMSkmJihIKz1uKEIscCxnLEIuY2hhckNvZGVBdCgyKSkpfUk9TT1fPXA9MCxCPSIiLGc9cy5jaGFyQ29kZUF0KCsrRil9fXN3aXRjaChnKXtjYXNlIDEzOmNhc2UgMTA6NDc9PT1QP1A9MDowPT09MStwJiYxMDchPT1mJiYwPEIubGVuZ3RoJiYoTT0xLEIrPSJcMCIpLDA8QSp6JiZpKDAsQixsLHIsVCxrLEgubGVuZ3RoLGYsZCxmKSxrPTEsVCsrO2JyZWFrO2Nhc2UgNTk6Y2FzZSAxMjU6aWYoMD09PVArTytDK1Mpe2srKzticmVha31kZWZhdWx0OnN3aXRjaChrKyssdj1zLmNoYXJBdChGKSxnKXtjYXNlIDk6Y2FzZSAzMjppZigwPT09TytTK1Apc3dpdGNoKE4pe2Nhc2UgNDQ6Y2FzZSA1ODpjYXNlIDk6Y2FzZSAzMjp2PSIiO2JyZWFrO2RlZmF1bHQ6MzIhPT1nJiYodj0iICIpfWJyZWFrO2Nhc2UgMDp2PSJcXDAiO2JyZWFrO2Nhc2UgMTI6dj0iXFxmIjticmVhaztjYXNlIDExOnY9IlxcdiI7YnJlYWs7Y2FzZSAzODowPT09TytQK1MmJihNPUk9MSx2PSJcZiIrdik7YnJlYWs7Y2FzZSAxMDg6aWYoMD09PU8rUCtTK2omJjA8Xylzd2l0Y2goRi1fKXtjYXNlIDI6MTEyPT09TiYmNTg9PT1zLmNoYXJDb2RlQXQoRi0zKSYmKGo9Tik7Y2FzZSA4OjExMT09PUQmJihqPUQpfWJyZWFrO2Nhc2UgNTg6MD09PU8rUCtTJiYoXz1GKTticmVhaztjYXNlIDQ0OjA9PT1QK0MrTytTJiYoTT0xLHYrPSJcciIpO2JyZWFrO2Nhc2UgMzQ6Y2FzZSAzOTowPT09UCYmKE89Tz09PWc\/MDowPT09Tz9nOk8pO2JyZWFrO2Nhc2UgOTE6MD09PU8rUCtDJiZTKys7YnJlYWs7Y2FzZSA5MzowPT09TytQK0MmJlMtLTticmVhaztjYXNlIDQxOjA9PT1PK1ArUyYmQy0tO2JyZWFrO2Nhc2UgNDA6aWYoMD09PU8rUCtTKXtpZigwPT09cClzd2l0Y2goMipOKzMqRCl7Y2FzZSA1MzM6YnJlYWs7ZGVmYXVsdDpwPTF9QysrfWJyZWFrO2Nhc2UgNjQ6MD09PVArQytPK1MrXytoJiYoaD0xKTticmVhaztjYXNlIDQyOmNhc2UgNDc6aWYoISgwPE8rUytDKSlzd2l0Y2goUCl7Y2FzZSAwOnN3aXRjaCgyKmcrMypzLmNoYXJDb2RlQXQoRisxKSl7Y2FzZSAyMzU6UD00NzticmVhaztjYXNlIDIyMDpMPUYsUD00Mn1icmVhaztjYXNlIDQyOjQ3PT09ZyYmNDI9PT1OJiZMKzIhPT1GJiYoMzM9PT1zLmNoYXJDb2RlQXQoTCsyKSYmKEgrPXMuc3Vic3RyaW5nKEwsRisxKSksdj0iIixQPTApfX0wPT09UCYmKEIrPXYpfUQ9TixOPWcsRisrfWlmKDA8KEw9SC5sZW5ndGgpKXtpZihNPWwsMDxBJiYodm9pZCAwIT09KHg9aSgyLEgsTSxyLFQsayxMLGYsZCxmKSkmJjA9PT0oSD14KS5sZW5ndGgpKXJldHVybiBVK0grRztpZihIPU0uam9pbigiLCIpKyJ7IitIKyJ9IiwwIT1FKmope3N3aXRjaCgyIT09RXx8YShILDIpfHwoaj0wKSxqKXtjYXNlIDExMTpIPUgucmVwbGFjZSh5LCI6LW1vei0kMSIpK0g7YnJlYWs7Y2FzZSAxMTI6SD1ILnJlcGxhY2UoYiwiOjotd2Via2l0LWlucHV0LSQxIikrSC5yZXBsYWNlKGIsIjo6LW1vei0kMSIpK0gucmVwbGFjZShiLCI6LW1zLWlucHV0LSQxIikrSH1qPTB9fXJldHVybiBVK0grR30oUixsLHIsMCwwKTtyZXR1cm4gMDxBJiYodm9pZCAwIT09KHM9aSgtMixmLGwsbCxULGssZi5sZW5ndGgsMCwwLDApKSYmKGY9cykpLCIiLGo9MCxrPVQ9MSxmfXZhciB1PS9eXDArL2csYz0vW1wwXHJcZl0vZyxmPS86ICovZyxkPS96b298Z3JhLyxwPS8oWyw6IF0pKHRyYW5zZm9ybSkvZyxnPS8sXHIrPy9nLGg9LyhbXHRcclxuIF0pKlxmPyYvZyxtPS9AKGtcdyspXHMqKFxTKilccyovLGI9Lzo6KHBsYWNlKS9nLHk9LzoocmVhZC1vbmx5KS9nLHY9L1tzdmhdXHcrLVt0YmxyXXsyfS8sdz0vXChccyooLiopXHMqXCkvZyx4PS8oW1xzXFNdKj8pOy9nLFM9Ly1zZWxmfGZsZXgtL2csUD0vW15dKj8oOltycF1bZWxdYVtcdy1dKylbXl0qLyxDPS9zdHJldGNofDpccypcdytcLSg\/OmNvbnRlfGF2YWlsKS8sTz0vKFteLV0pKGltYWdlLXNldFwoKS8saz0xLFQ9MSxqPTAsRT0xLFI9W10sTj1bXSxBPTAsRD1udWxsLHo9MDtyZXR1cm4gcy51c2U9ZnVuY3Rpb24gZSh0KXtzd2l0Y2godCl7Y2FzZSB2b2lkIDA6Y2FzZSBudWxsOkE9Ti5sZW5ndGg9MDticmVhaztkZWZhdWx0OmlmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KU5bQSsrXT10O2Vsc2UgaWYoIm9iamVjdCI9PXR5cGVvZiB0KWZvcih2YXIgcj0wLG49dC5sZW5ndGg7cjxuOysrcillKHRbcl0pO2Vsc2Ugej0wfCEhdH1yZXR1cm4gZX0scy5zZXQ9bCx2b2lkIDAhPT1lJiZsKGUpLHN9O2Z1bmN0aW9uIG0oZSl7ZSYmYi5jdXJyZW50Lmluc2VydChlKyJ9Iil9dmFyIGI9e2N1cnJlbnQ6bnVsbH0seT1mdW5jdGlvbihlLHQscixuLGEsbyxpLGwscyx1KXtzd2l0Y2goZSl7Y2FzZSAxOnN3aXRjaCh0LmNoYXJDb2RlQXQoMCkpe2Nhc2UgNjQ6cmV0dXJuIGIuY3VycmVudC5pbnNlcnQodCsiOyIpLCIiO2Nhc2UgMTA4OmlmKDk4PT09dC5jaGFyQ29kZUF0KDIpKXJldHVybiIifWJyZWFrO2Nhc2UgMjppZigwPT09bClyZXR1cm4gdCsiLyp8Ki8iO2JyZWFrO2Nhc2UgMzpzd2l0Y2gobCl7Y2FzZSAxMDI6Y2FzZSAxMTI6cmV0dXJuIGIuY3VycmVudC5pbnNlcnQoclswXSt0KSwiIjtkZWZhdWx0OnJldHVybiB0KygwPT09dT8iLyp8Ki8iOiIiKX1jYXNlLTI6dC5zcGxpdCgiLyp8Ki99IikuZm9yRWFjaChtKX19LHY9ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9e30pO3ZhciB0LHI9ZS5rZXl8fCJjc3MiO3ZvaWQgMCE9PWUucHJlZml4JiYodD17cHJlZml4OmUucHJlZml4fSk7dmFyIG49bmV3IGgodCk7dmFyIGEsbz17fTthPWUuY29udGFpbmVyfHxkb2N1bWVudC5oZWFkO3ZhciBpLGw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgic3R5bGVbZGF0YS1lbW90aW9uLSIrcisiXSIpO0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwobCwoZnVuY3Rpb24oZSl7ZS5nZXRBdHRyaWJ1dGUoImRhdGEtZW1vdGlvbi0iK3IpLnNwbGl0KCIgIikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7b1tlXT0hMH0pKSxlLnBhcmVudE5vZGUhPT1hJiZhLmFwcGVuZENoaWxkKGUpfSkpLG4udXNlKGUuc3R5bGlzUGx1Z2lucykoeSksaT1mdW5jdGlvbihlLHQscixhKXt2YXIgbz10Lm5hbWU7Yi5jdXJyZW50PXIsbihlLHQuc3R5bGVzKSxhJiYocy5pbnNlcnRlZFtvXT0hMCl9O3ZhciBzPXtrZXk6cixzaGVldDpuZXcgZyh7a2V5OnIsY29udGFpbmVyOmEsbm9uY2U6ZS5ub25jZSxzcGVlZHk6ZS5zcGVlZHl9KSxub25jZTplLm5vbmNlLGluc2VydGVkOm8scmVnaXN0ZXJlZDp7fSxpbnNlcnQ6aX07cmV0dXJuIHN9O3ZhciB3PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPTAsbj0wLGE9ZS5sZW5ndGg7YT49NDsrK24sYS09NCl0PTE1NDA0ODM0NzcqKDY1NTM1Jih0PTI1NSZlLmNoYXJDb2RlQXQobil8KDI1NSZlLmNoYXJDb2RlQXQoKytuKSk8PDh8KDI1NSZlLmNoYXJDb2RlQXQoKytuKSk8PDE2fCgyNTUmZS5jaGFyQ29kZUF0KCsrbikpPDwyNCkpKyg1OTc5NyoodD4+PjE2KTw8MTYpLHI9MTU0MDQ4MzQ3NyooNjU1MzUmKHRePXQ+Pj4yNCkpKyg1OTc5NyoodD4+PjE2KTw8MTYpXjE1NDA0ODM0NzcqKDY1NTM1JnIpKyg1OTc5Nyoocj4+PjE2KTw8MTYpO3N3aXRjaChhKXtjYXNlIDM6cl49KDI1NSZlLmNoYXJDb2RlQXQobisyKSk8PDE2O2Nhc2UgMjpyXj0oMjU1JmUuY2hhckNvZGVBdChuKzEpKTw8ODtjYXNlIDE6cj0xNTQwNDgzNDc3Kig2NTUzNSYocl49MjU1JmUuY2hhckNvZGVBdChuKSkpKyg1OTc5Nyoocj4+PjE2KTw8MTYpfXJldHVybigoKHI9MTU0MDQ4MzQ3NyooNjU1MzUmKHJePXI+Pj4xMykpKyg1OTc5Nyoocj4+PjE2KTw8MTYpKV5yPj4+MTUpPj4+MCkudG9TdHJpbmcoMzYpfSx4PXthbmltYXRpb25JdGVyYXRpb25Db3VudDoxLGJvcmRlckltYWdlT3V0c2V0OjEsYm9yZGVySW1hZ2VTbGljZToxLGJvcmRlckltYWdlV2lkdGg6MSxib3hGbGV4OjEsYm94RmxleEdyb3VwOjEsYm94T3JkaW5hbEdyb3VwOjEsY29sdW1uQ291bnQ6MSxjb2x1bW5zOjEsZmxleDoxLGZsZXhHcm93OjEsZmxleFBvc2l0aXZlOjEsZmxleFNocmluazoxLGZsZXhOZWdhdGl2ZToxLGZsZXhPcmRlcjoxLGdyaWRSb3c6MSxncmlkUm93RW5kOjEsZ3JpZFJvd1NwYW46MSxncmlkUm93U3RhcnQ6MSxncmlkQ29sdW1uOjEsZ3JpZENvbHVtbkVuZDoxLGdyaWRDb2x1bW5TcGFuOjEsZ3JpZENvbHVtblN0YXJ0OjEsbXNHcmlkUm93OjEsbXNHcmlkUm93U3BhbjoxLG1zR3JpZENvbHVtbjoxLG1zR3JpZENvbHVtblNwYW46MSxmb250V2VpZ2h0OjEsbGluZUhlaWdodDoxLG9wYWNpdHk6MSxvcmRlcjoxLG9ycGhhbnM6MSx0YWJTaXplOjEsd2lkb3dzOjEsekluZGV4OjEsem9vbToxLFdlYmtpdExpbmVDbGFtcDoxLGZpbGxPcGFjaXR5OjEsZmxvb2RPcGFjaXR5OjEsc3RvcE9wYWNpdHk6MSxzdHJva2VEYXNoYXJyYXk6MSxzdHJva2VEYXNob2Zmc2V0OjEsc3Ryb2tlTWl0ZXJsaW1pdDoxLHN0cm9rZU9wYWNpdHk6MSxzdHJva2VXaWR0aDoxfTt2YXIgUz0vW0EtWl18Xm1zL2csUD0vX0VNT18oW15fXSs\/KV8oW15dKj8pX0VNT18vZyxDPWZ1bmN0aW9uKGUpe3JldHVybiA0NT09PWUuY2hhckNvZGVBdCgxKX0sTz1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmImJvb2xlYW4iIT10eXBlb2YgZX0saz1mdW5jdGlvbihlKXt2YXIgdD17fTtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHZvaWQgMD09PXRbcl0mJih0W3JdPWUocikpLHRbcl19fSgoZnVuY3Rpb24oZSl7cmV0dXJuIEMoZSk\/ZTplLnJlcGxhY2UoUywiLSQmIikudG9Mb3dlckNhc2UoKX0pKSxUPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UiYW5pbWF0aW9uIjpjYXNlImFuaW1hdGlvbk5hbWUiOmlmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdC5yZXBsYWNlKFAsKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gRT17bmFtZTp0LHN0eWxlczpyLG5leHQ6RX0sdH0pKX1yZXR1cm4gMT09PXhbZV18fEMoZSl8fCJudW1iZXIiIT10eXBlb2YgdHx8MD09PXQ\/dDp0KyJweCJ9O2Z1bmN0aW9uIGooZSx0LHIsbil7aWYobnVsbD09cilyZXR1cm4iIjtpZih2b2lkIDAhPT1yLl9fZW1vdGlvbl9zdHlsZXMpcmV0dXJuIHI7c3dpdGNoKHR5cGVvZiByKXtjYXNlImJvb2xlYW4iOnJldHVybiIiO2Nhc2Uib2JqZWN0IjppZigxPT09ci5hbmltKXJldHVybiBFPXtuYW1lOnIubmFtZSxzdHlsZXM6ci5zdHlsZXMsbmV4dDpFfSxyLm5hbWU7aWYodm9pZCAwIT09ci5zdHlsZXMpe3ZhciBhPXIubmV4dDtpZih2b2lkIDAhPT1hKWZvcig7dm9pZCAwIT09YTspRT17bmFtZTphLm5hbWUsc3R5bGVzOmEuc3R5bGVzLG5leHQ6RX0sYT1hLm5leHQ7cmV0dXJuIHIuc3R5bGVzKyI7In1yZXR1cm4gZnVuY3Rpb24oZSx0LHIpe3ZhciBuPSIiO2lmKEFycmF5LmlzQXJyYXkocikpZm9yKHZhciBhPTA7YTxyLmxlbmd0aDthKyspbis9aihlLHQsclthXSwhMSk7ZWxzZSBmb3IodmFyIG8gaW4gcil7dmFyIGk9cltvXTtpZigib2JqZWN0IiE9dHlwZW9mIGkpbnVsbCE9dCYmdm9pZCAwIT09dFtpXT9uKz1vKyJ7Iit0W2ldKyJ9IjpPKGkpJiYobis9ayhvKSsiOiIrVChvLGkpKyI7Iik7ZWxzZSBpZighQXJyYXkuaXNBcnJheShpKXx8InN0cmluZyIhPXR5cGVvZiBpWzBdfHxudWxsIT10JiZ2b2lkIDAhPT10W2lbMF1dKXt2YXIgbD1qKGUsdCxpLCExKTtzd2l0Y2gobyl7Y2FzZSJhbmltYXRpb24iOmNhc2UiYW5pbWF0aW9uTmFtZSI6bis9ayhvKSsiOiIrbCsiOyI7YnJlYWs7ZGVmYXVsdDpuKz1vKyJ7IitsKyJ9In19ZWxzZSBmb3IodmFyIHM9MDtzPGkubGVuZ3RoO3MrKylPKGlbc10pJiYobis9ayhvKSsiOiIrVChvLGlbc10pKyI7Iil9cmV0dXJuIG59KGUsdCxyKTtjYXNlImZ1bmN0aW9uIjppZih2b2lkIDAhPT1lKXt2YXIgbz1FLGk9cihlKTtyZXR1cm4gRT1vLGooZSx0LGksbil9YnJlYWs7Y2FzZSJzdHJpbmciOn1pZihudWxsPT10KXJldHVybiByO3ZhciBsPXRbcl07cmV0dXJuIHZvaWQgMD09PWx8fG4\/cjpsfXZhciBFLFI9L2xhYmVsOlxzKihbXlxzO1xue10rKVxzKjsvZzt2YXIgTj1mdW5jdGlvbihlLHQscil7aWYoMT09PWUubGVuZ3RoJiYib2JqZWN0Ij09dHlwZW9mIGVbMF0mJm51bGwhPT1lWzBdJiZ2b2lkIDAhPT1lWzBdLnN0eWxlcylyZXR1cm4gZVswXTt2YXIgbj0hMCxhPSIiO0U9dm9pZCAwO3ZhciBvPWVbMF07bnVsbD09b3x8dm9pZCAwPT09by5yYXc\/KG49ITEsYSs9aihyLHQsbywhMSkpOmErPW9bMF07Zm9yKHZhciBpPTE7aTxlLmxlbmd0aDtpKyspYSs9aihyLHQsZVtpXSw0Nj09PWEuY2hhckNvZGVBdChhLmxlbmd0aC0xKSksbiYmKGErPW9baV0pO1IubGFzdEluZGV4PTA7Zm9yKHZhciBsLHM9IiI7bnVsbCE9PShsPVIuZXhlYyhhKSk7KXMrPSItIitsWzFdO3JldHVybntuYW1lOncoYSkrcyxzdHlsZXM6YSxuZXh0OkV9fTtmdW5jdGlvbiBBKGUsdCxyKXt2YXIgbj0iIjtyZXR1cm4gci5zcGxpdCgiICIpLmZvckVhY2goKGZ1bmN0aW9uKHIpe3ZvaWQgMCE9PWVbcl0\/dC5wdXNoKGVbcl0pOm4rPXIrIiAifSkpLG59dmFyIEQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWUua2V5KyItIit0Lm5hbWU7aWYoITE9PT1yJiZ2b2lkIDA9PT1lLnJlZ2lzdGVyZWRbbl0mJihlLnJlZ2lzdGVyZWRbbl09dC5zdHlsZXMpLHZvaWQgMD09PWUuaW5zZXJ0ZWRbdC5uYW1lXSl7dmFyIGE9dDtkb3tlLmluc2VydCgiLiIrbixhLGUuc2hlZXQsITApO2E9YS5uZXh0fXdoaWxlKHZvaWQgMCE9PWEpfX07ZnVuY3Rpb24geihlLHQpe2lmKHZvaWQgMD09PWUuaW5zZXJ0ZWRbdC5uYW1lXSlyZXR1cm4gZS5pbnNlcnQoIiIsdCxlLnNoZWV0LCEwKX1mdW5jdGlvbiBfKGUsdCxyKXt2YXIgbj1bXSxhPUEoZSxuLHIpO3JldHVybiBuLmxlbmd0aDwyP3I6YSt0KG4pfXZhciBGPWZ1bmN0aW9uIGUodCl7Zm9yKHZhciByPSIiLG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGE9dFtuXTtpZihudWxsIT1hKXt2YXIgbz12b2lkIDA7c3dpdGNoKHR5cGVvZiBhKXtjYXNlImJvb2xlYW4iOmJyZWFrO2Nhc2Uib2JqZWN0IjppZihBcnJheS5pc0FycmF5KGEpKW89ZShhKTtlbHNlIGZvcih2YXIgaSBpbiBvPSIiLGEpYVtpXSYmaSYmKG8mJihvKz0iICIpLG8rPWkpO2JyZWFrO2RlZmF1bHQ6bz1hfW8mJihyJiYocis9IiAiKSxyKz1vKX19cmV0dXJuIHJ9LE09ZnVuY3Rpb24oZSl7dmFyIHQ9dihlKTt0LnNoZWV0LnNwZWVkeT1mdW5jdGlvbihlKXt0aGlzLmlzU3BlZWR5PWV9LHQuY29tcGF0PSEwO3ZhciByPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspcltuXT1hcmd1bWVudHNbbl07dmFyIGE9TihyLHQucmVnaXN0ZXJlZCx2b2lkIDApO3JldHVybiBEKHQsYSwhMSksdC5rZXkrIi0iK2EubmFtZX07cmV0dXJue2NzczpyLGN4OmZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkoZSksYT0wO2E8ZTthKyspblthXT1hcmd1bWVudHNbYV07cmV0dXJuIF8odC5yZWdpc3RlcmVkLHIsRihuKSl9LGluamVjdEdsb2JhbDpmdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXJbbl09YXJndW1lbnRzW25dO3ZhciBhPU4ocix0LnJlZ2lzdGVyZWQpO3oodCxhKX0sa2V5ZnJhbWVzOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspcltuXT1hcmd1bWVudHNbbl07dmFyIGE9TihyLHQucmVnaXN0ZXJlZCksbz0iYW5pbWF0aW9uLSIrYS5uYW1lO3JldHVybiB6KHQse25hbWU6YS5uYW1lLHN0eWxlczoiQGtleWZyYW1lcyAiK28rInsiK2Euc3R5bGVzKyJ9In0pLG99LGh5ZHJhdGU6ZnVuY3Rpb24oZSl7ZS5mb3JFYWNoKChmdW5jdGlvbihlKXt0Lmluc2VydGVkW2VdPSEwfSkpfSxmbHVzaDpmdW5jdGlvbigpe3QucmVnaXN0ZXJlZD17fSx0Lmluc2VydGVkPXt9LHQuc2hlZXQuZmx1c2goKX0sc2hlZXQ6dC5zaGVldCxjYWNoZTp0LGdldFJlZ2lzdGVyZWRTdHlsZXM6QS5iaW5kKG51bGwsdC5yZWdpc3RlcmVkKSxtZXJnZTpfLmJpbmQobnVsbCx0LnJlZ2lzdGVyZWQscil9fSgpLEk9KE0uZmx1c2gsTS5oeWRyYXRlLE0uY3gsTS5tZXJnZSxNLmdldFJlZ2lzdGVyZWRTdHlsZXMsTS5pbmplY3RHbG9iYWwsTS5rZXlmcmFtZXMsTS5jc3MpO00uc2hlZXQsTS5jYWNoZTtmdW5jdGlvbiBMKGUpe3JldHVybihMPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSkoZSl9ZnVuY3Rpb24gVyhlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFN5bWJvbHx8IShTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpKSlyZXR1cm47dmFyIHI9W10sbj0hMCxhPSExLG89dm9pZCAwO3RyeXtmb3IodmFyIGksbD1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKG49KGk9bC5uZXh0KCkpLmRvbmUpJiYoci5wdXNoKGkudmFsdWUpLCF0fHxyLmxlbmd0aCE9PXQpO249ITApO31jYXRjaChlKXthPSEwLG89ZX1maW5hbGx5e3RyeXtufHxudWxsPT1sLnJldHVybnx8bC5yZXR1cm4oKX1maW5hbGx5e2lmKGEpdGhyb3cgb319cmV0dXJuIHJ9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gSyhlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTsiT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSk7aWYoIk1hcCI9PT1yfHwiU2V0Ij09PXIpcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoIkFyZ3VtZW50cyI9PT1yfHwvXig\/OlVpfEkpbnQoPzo4fDE2fDMyKSg\/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKSlyZXR1cm4gSyhlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gSyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KHQpO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIEIoZSx0KXt2YXIgcj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihuPW4uZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLHIucHVzaC5hcHBseShyLG4pfXJldHVybiByfWZ1bmN0aW9uIEgoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIHI9bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI\/QihPYmplY3QociksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe0coZSx0LHJbdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpOkIoT2JqZWN0KHIpKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iocix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gRyhlLHQscil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1yLGV9ZnVuY3Rpb24gVShlKXtpZighZSlyZXR1cm4gbnVsbDt2YXIgdD1lLmNvbG9yLHI9ZS5iYWNrZ3JvdW5kQ29sb3Isbj1lLmJvcmRlckNvbG9yLGE9ZS5ib3JkZXJXaWR0aCxvPWUuc3RyaXBlZENvbG9yLGk9ZS5oaWdobGlnaHRDb2xvcixsPWUuY2VsbFBhZGRpbmcscz1lLnN0eWxlLHU9ZS50YWJsZUJvcmRlckNvbG9yLGM9dm9pZCAwPT09dT9uOnUsZj1lLnRhYmxlQm9yZGVyV2lkdGgsZD12b2lkIDA9PT1mP2E6ZixwPWUudGFibGVTdHlsZSxnPWUuaGVhZGVyQm9yZGVyQ29sb3IsaD12b2lkIDA9PT1nP246ZyxtPWUuaGVhZGVyQm9yZGVyV2lkdGgsYj12b2lkIDA9PT1tP2E6bSx5PWUuaGVhZGVyU3R5bGUsdj1lLmdyb3VwSGVhZGVyQm9yZGVyQ29sb3Isdz12b2lkIDA9PT12P246dix4PWUuZ3JvdXBIZWFkZXJCb3JkZXJXaWR0aCxTPXZvaWQgMD09PXg\/YTp4LFA9ZS5ncm91cEhlYWRlclN0eWxlLEM9ZS50YWJsZUJvZHlTdHlsZSxPPWUucm93R3JvdXBTdHlsZSxrPWUucm93U3R5bGUsVD1lLnJvd1N0cmlwZWRTdHlsZSxqPWUucm93SGlnaGxpZ2h0U3R5bGUsRT1lLnJvd1NlbGVjdGVkU3R5bGUsUj1lLmNlbGxCb3JkZXJDb2xvcixOPXZvaWQgMD09PVI\/bjpSLEE9ZS5jZWxsQm9yZGVyV2lkdGgsRD12b2lkIDA9PT1BP2E6QSx6PWUuY2VsbFN0eWxlLF89ZS5mb290ZXJCb3JkZXJDb2xvcixGPXZvaWQgMD09PV8\/bjpfLE09ZS5mb290ZXJCb3JkZXJXaWR0aCxJPXZvaWQgMD09PU0\/YTpNLEs9ZS5mb290ZXJTdHlsZSxCPWUuaW5wdXRTdHlsZSxHPWUuZmlsdGVySW5wdXRTdHlsZSxVPWUuc2VhcmNoSW5wdXRTdHlsZSxKPWUuc2VsZWN0U3R5bGUsJD1lLnBhZ2luYXRpb25TdHlsZSxxPWUucGFnZUJ1dHRvblN0eWxlLFg9ZS5wYWdlQnV0dG9uSG92ZXJTdHlsZSxZPWUucGFnZUJ1dHRvbkFjdGl2ZVN0eWxlLFo9ZS5wYWdlQnV0dG9uQ3VycmVudFN0eWxlLFE9VihbeixrLEMscCxzXSwiY29sb3IiLHQpLGVlPVYoW0osc10sImNvbG9yIix0KTtiPVYoW3ldLCJib3JkZXJXaWR0aCIsYik7dmFyIHRlLHJlPXtzdHlsZTpIKHtjb2xvcjp0LGJhY2tncm91bmRDb2xvcjpyfSxzKSx0YWJsZVN0eWxlOkgoe2JvcmRlckNvbG9yOmMsYm9yZGVyV2lkdGg6ZH0scCksaGVhZGVyU3R5bGU6SChIKHtib3JkZXJDb2xvcjpoLGJvcmRlcldpZHRoOmIscGFkZGluZzpsfSx5KSx7fSx7Ii5ydC1ib3JkZXJlZCAmLCAucnQtb3V0bGluZWQgJiI6e2JvcmRlcldpZHRoOmJ9fSksZ3JvdXBIZWFkZXJTdHlsZTpIKEgoe2JvcmRlckNvbG9yOncsYm9yZGVyV2lkdGg6U30sUCkse30seyImOjphZnRlciI6e2JhY2tncm91bmRDb2xvcjp3LGhlaWdodDpTfSwiLnJ0LWJvcmRlcmVkICYiOntib3JkZXJXaWR0aDpTfX0pLHRhYmxlQm9keVN0eWxlOkMsY2VsbFN0eWxlOkgoe2JvcmRlckNvbG9yOk4sYm9yZGVyV2lkdGg6RCxwYWRkaW5nOmx9LHopLGZvb3RlclN0eWxlOkgoe2JvcmRlckNvbG9yOkYsYm9yZGVyV2lkdGg6SSxwYWRkaW5nOmx9LEspLHJvd0dyb3VwU3R5bGU6Tyxyb3dTdHlsZTpIKEgoe30saykse30seyImLnJ0LXRyLXN0cmlwZWQiOkgoe2JhY2tncm91bmRDb2xvcjpvfSxUKSwiJi5ydC10ci1oaWdobGlnaHQ6aG92ZXIiOkgoe2JhY2tncm91bmRDb2xvcjppfSxqKSwiJi5ydC10ci1zZWxlY3RlZCI6SCh7fSxFKX0pLGZpbHRlckNlbGxTdHlsZTpIKHtib3JkZXJDb2xvcjpOLGJvcmRlcldpZHRoOkQscGFkZGluZzpsfSx6KSxleHBhbmRlclN0eWxlOnsiJjo6YWZ0ZXIiOntib3JkZXJUb3BDb2xvcjpRfX0sZmlsdGVySW5wdXRTdHlsZTpIKEgoe30sQiksRyksc2VhcmNoSW5wdXRTdHlsZTpIKEgoe30sQiksVSkscGFnaW5hdGlvblN0eWxlOkgoSCh7Ym9yZGVyVG9wQ29sb3I6Tixib3JkZXJUb3BXaWR0aDpEfSwkKSx7fSx7Ii5ydC1wYWdlLWp1bXAiOkgoe30sQiksIi5ydC1wYWdlLXNpemUtc2VsZWN0IjpIKEgoe30sSikse30seyJAc3VwcG9ydHMgKC1tb3otYXBwZWFyYW5jZTogbm9uZSkiOntiYWNrZ3JvdW5kSW1hZ2U6ZWUmJid1cmwoXCdkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VUy1BU0NJSSw8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4nKyc8cGF0aCBmaWxsPSInLmNvbmNhdCgodGU9ZWUsZW5jb2RlVVJJQ29tcG9uZW50KHRlKS5yZXBsYWNlKCIoIiwiJTI4IikucmVwbGFjZSgiKSIsIiUyOSIpKSwnIiBkPSJNMjQgMS41bC0xMiAyMS0xMi0yMWgyNHoiLz48L3N2Zz5cJyknKX19KSwiLnJ0LXBhZ2UtYnV0dG9uIjpIKHt9LHEpLCIucnQtcGFnZS1idXR0b246bm90KDpkaXNhYmxlZCk6aG92ZXIiOkgoe30sWCksIi5ydC1wYWdlLWJ1dHRvbjpub3QoOmRpc2FibGVkKTphY3RpdmUiOkgoe30sWSksIi5ydC1rZXlib2FyZC1hY3RpdmUgJiAucnQtcGFnZS1idXR0b246bm90KDpkaXNhYmxlZCk6Zm9jdXMiOkgoe30sWCksIi5ydC1wYWdlLWJ1dHRvbi1jdXJyZW50IjpIKHt9LFopfSl9O3JldHVybiBmdW5jdGlvbiBlKHQpe2Zvcih2YXIgcj0wLG49T2JqZWN0LmVudHJpZXModCk7cjxuLmxlbmd0aDtyKyspe3ZhciBhPVcobltyXSwyKSxvPWFbMF0saT1hWzFdOyJvYmplY3QiPT09TChpKT8oZShpKSwwPT09T2JqZWN0LmtleXMoaSkubGVuZ3RoJiZkZWxldGUgdFtvXSk6bnVsbD09aSYmZGVsZXRlIHRbb119fShyZSkscmV9ZnVuY3Rpb24gVihlLHQscil7dmFyIG49ZS5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gZSYmbnVsbCE9ZVt0XX0pKTtyZXR1cm4gbj9uW3RdOnJ9ZnVuY3Rpb24gSigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKXRbcl09YXJndW1lbnRzW3JdO3JldHVybih0PXQuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZX0pKSkubGVuZ3RoP0kodCk6bnVsbH1mdW5jdGlvbiAkKGUpe3JldHVybigkPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSkoZSl9dmFyIHE9e3NvcnRMYWJlbDoiU29ydCB7bmFtZX0iLGZpbHRlclBsYWNlaG9sZGVyOiIiLGZpbHRlckxhYmVsOiJGaWx0ZXIge25hbWV9IixzZWFyY2hQbGFjZWhvbGRlcjoiU2VhcmNoIixzZWFyY2hMYWJlbDoiU2VhcmNoIixub0RhdGE6Ik5vIHJvd3MgZm91bmQiLHBhZ2VOZXh0OiJOZXh0IixwYWdlUHJldmlvdXM6IlByZXZpb3VzIixwYWdlTnVtYmVyczoie3BhZ2V9IG9mIHtwYWdlc30iLHBhZ2VJbmZvOiJ7cm93U3RhcnR9Ii5jb25jYXQoU3RyaW5nLmZyb21DaGFyQ29kZSg4MjExKSwie3Jvd0VuZH0gb2Yge3Jvd3N9IHJvd3MiKSxwYWdlU2l6ZU9wdGlvbnM6IlNob3cge3Jvd3N9IixwYWdlTmV4dExhYmVsOiJOZXh0IHBhZ2UiLHBhZ2VQcmV2aW91c0xhYmVsOiJQcmV2aW91cyBwYWdlIixwYWdlTnVtYmVyTGFiZWw6IlBhZ2Uge3BhZ2V9IixwYWdlSnVtcExhYmVsOiJHbyB0byBwYWdlIixwYWdlU2l6ZU9wdGlvbnNMYWJlbDoiUm93cyBwZXIgcGFnZSIsZGVmYXVsdEdyb3VwSGVhZGVyOiJHcm91cGVkIixkZXRhaWxzRXhwYW5kTGFiZWw6IkV4cGFuZCBkZXRhaWxzIixkZXRhaWxzQ29sbGFwc2VMYWJlbDoiQ29sbGFwc2UgZGV0YWlscyIsc2VsZWN0QWxsUm93c0xhYmVsOiJTZWxlY3QgYWxsIHJvd3MiLGRlc2VsZWN0QWxsUm93c0xhYmVsOiJEZXNlbGVjdCBhbGwgcm93cyIsc2VsZWN0QWxsU3ViUm93c0xhYmVsOiJTZWxlY3QgYWxsIHJvd3MgaW4gZ3JvdXAiLGRlc2VsZWN0QWxsU3ViUm93c0xhYmVsOiJEZXNlbGVjdCBhbGwgcm93cyBpbiBncm91cCIsc2VsZWN0Um93TGFiZWw6IlNlbGVjdCByb3ciLGRlc2VsZWN0Um93TGFiZWw6IkRlc2VsZWN0IHJvdyJ9O2Z1bmN0aW9uIFgoZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnt9O2lmKCFlfHwhdClyZXR1cm4gZTt2YXIgcj1PYmplY3Qua2V5cyh0KSxuPSIoIityLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuInsiLmNvbmNhdChlLCJ9Iil9KSkuam9pbigifCIpKyIpIixhPWUuc3BsaXQobmV3IFJlZ0V4cChuKSksbz1yLnJlZHVjZSgoZnVuY3Rpb24oZSxyKXtyZXR1cm4gZVsieyIuY29uY2F0KHIsIn0iKV09dFtyXSxlfSkse30pLGk9YS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1vW2VdP29bZV06ZX0pKTtyZXR1cm4gaS5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4ib2JqZWN0Ij09PSQoZSl9KSk\/aTppLmpvaW4oIiIpfWZ1bmN0aW9uIFkoZSl7cmV0dXJuKFk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I\/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU\/InN5bWJvbCI6dHlwZW9mIGV9KShlKX1mdW5jdGlvbiBaKGUsdCl7dmFyIHI9T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYobj1uLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxyLnB1c2guYXBwbHkocixuKX1yZXR1cm4gcn1mdW5jdGlvbiBRKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP1ooT2JqZWN0KHIpLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtlZShlLHQsclt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM\/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhyKSk6WihPYmplY3QocikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBlZShlLHQscil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1yLGV9ZnVuY3Rpb24gdGUoKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxyPTA7cjxlO3IrKyl0W3JdPWFyZ3VtZW50c1tyXTtyZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpLmpvaW4oIiAiKX1mdW5jdGlvbiByZSgpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKXRbcl09YXJndW1lbnRzW3JdO3JldHVybiB0LmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lfSkpfWZ1bmN0aW9uIG5lKGUsdCl7cmV0dXJuIHQucmVkdWNlKChmdW5jdGlvbihlLHQpe2lmKGUgaW5zdGFuY2VvZiBPYmplY3QmJnZvaWQgMCE9PWUpcmV0dXJuIGVbdF19KSxlKX1mdW5jdGlvbiBhZShlLHQscil7dmFyIG49USh7fSxlKSxhPW47cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24oZSxuKXtuPT09dC5sZW5ndGgtMT92b2lkIDA9PT1yP2RlbGV0ZSBhW2VdOmFbZV09cjooIm9iamVjdCI9PT1ZKGFbZV0pP2FbZV09USh7fSxhW2VdKTphW2VdPXt9LGE9YVtlXSl9KSksbn1mdW5jdGlvbiBvZShlKXtyZXR1cm4gZS5yZXBsYWNlKC9bLiorP14ke30oKXxbXF1cXF0vZywiXFwkJiIpfWZ1bmN0aW9uIGllKGUpe3JldHVybihpZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0pKGUpfWZ1bmN0aW9uIGxlKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLmtleSxuKX19ZnVuY3Rpb24gc2UoZSx0KXtyZXR1cm4oc2U9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9KShlLHQpfWZ1bmN0aW9uIHVlKGUpe3ZhciB0PWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHIsbj1kZShlKTtpZih0KXt2YXIgYT1kZSh0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KG4sYXJndW1lbnRzLGEpfWVsc2Ugcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gY2UodGhpcyxyKX19ZnVuY3Rpb24gY2UoZSx0KXtyZXR1cm4hdHx8Im9iamVjdCIhPT1pZSh0KSYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ\/ZmUoZSk6dH1mdW5jdGlvbiBmZShlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24gZGUoZSl7cmV0dXJuKGRlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9KShlKX1mdW5jdGlvbiBwZShlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZ2UoZSl9KGUpfHxmdW5jdGlvbihlKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gZ2UoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7Ik9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKCJNYXAiPT09cnx8IlNldCI9PT1yKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKCJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QocikpcmV0dXJuIGdlKGUsdCl9KGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGdlKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gaGUoKXtyZXR1cm4oaGU9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIHI9YXJndW1lbnRzW3RdO2Zvcih2YXIgbiBpbiByKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLG4pJiYoZVtuXT1yW25dKX1yZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBtZShlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIHIsbixhPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgcixuLGE9e30sbz1PYmplY3Qua2V5cyhlKTtmb3Iobj0wO248by5sZW5ndGg7bisrKXI9b1tuXSx0LmluZGV4T2Yocik+PTB8fChhW3JdPWVbcl0pO3JldHVybiBhfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKG49MDtuPG8ubGVuZ3RoO24rKylyPW9bbl0sdC5pbmRleE9mKHIpPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyKSYmKGFbcl09ZVtyXSl9cmV0dXJuIGF9dmFyIGJlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuaXNDdXJyZW50LHI9ZS5jbGFzc05hbWUsbj1tZShlLFsiaXNDdXJyZW50IiwiY2xhc3NOYW1lIl0pO3JldHVybiByPXRlKHIsInJ0LXBhZ2UtYnV0dG9uIix0PyIgcnQtcGFnZS1idXR0b24tY3VycmVudCI6bnVsbCksby5hLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIsaGUoe3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOnJ9LG4pLG4uY2hpbGRyZW4pfTt2YXIgeWU9ZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJnNlKGUsdCl9KGksZSk7dmFyIHQscixuLGE9dWUoaSk7ZnVuY3Rpb24gaShlKXt2YXIgdDtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxpKSwodD1hLmNhbGwodGhpcyxlKSkuY2hhbmdlUGFnZT10LmNoYW5nZVBhZ2UuYmluZChmZSh0KSksdC5hcHBseVBhZ2U9dC5hcHBseVBhZ2UuYmluZChmZSh0KSksdC5zdGF0ZT17cGFnZUp1bXBWYWx1ZTplLnBhZ2UrMSxwcmV2UGFnZTplLnBhZ2V9LHR9cmV0dXJuIHQ9aSxuPVt7a2V5OiJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUucGFnZSE9PXQucHJldlBhZ2U\/e3BhZ2VKdW1wVmFsdWU6ZS5wYWdlKzEscHJldlBhZ2U6ZS5wYWdlfTpudWxsfX1dLChyPVt7a2V5OiJjaGFuZ2VQYWdlIix2YWx1ZTpmdW5jdGlvbihlKXtlIT09dGhpcy5wcm9wcy5wYWdlKzEmJnRoaXMucHJvcHMub25QYWdlQ2hhbmdlKGUtMSl9fSx7a2V5OiJhcHBseVBhZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe2UmJmUucHJldmVudERlZmF1bHQoKTt2YXIgdD10aGlzLnN0YXRlLnBhZ2VKdW1wVmFsdWU7aWYoIiIhPT10KXRoaXMuY2hhbmdlUGFnZSh0KTtlbHNle3ZhciByPXRoaXMucHJvcHMucGFnZSsxO3RoaXMuc2V0U3RhdGUoe3BhZ2VKdW1wVmFsdWU6cn0pfX19LHtrZXk6InJlbmRlclBhZ2VJbmZvIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnBhZ2Uscj1lLnBhZ2VTaXplLG49ZS5zb3J0ZWREYXRhLGE9ZS5sYW5ndWFnZSxpPW4ubGVuZ3RoLGw9TWF0aC5taW4odCpyKzEsbi5sZW5ndGgpLHM9TWF0aC5taW4odCpyK3Isbi5sZW5ndGgpLHU9WChhLnBhZ2VJbmZvLHtyb3dTdGFydDpsLHJvd0VuZDpzLHJvd3M6aX0pO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJydC1wYWdlLWluZm8ifSx1KX19LHtrZXk6InJlbmRlclBhZ2VTaXplT3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYWdlU2l6ZSxyPWUucGFnZVNpemVPcHRpb25zLG49ZS5vblBhZ2VTaXplQ2hhbmdlLGE9ZS5sYW5ndWFnZSxpPW8uYS5jcmVhdGVFbGVtZW50KCJzZWxlY3QiLHtrZXk6InBhZ2Utc2l6ZS1zZWxlY3QiLGNsYXNzTmFtZToicnQtcGFnZS1zaXplLXNlbGVjdCIsImFyaWEtbGFiZWwiOmEucGFnZVNpemVPcHRpb25zTGFiZWwsb25DaGFuZ2U6ZnVuY3Rpb24oZSl7cmV0dXJuIG4oTnVtYmVyKGUudGFyZ2V0LnZhbHVlKSl9LHZhbHVlOnR9LHIubWFwKChmdW5jdGlvbihlLHQpe3JldHVybiBvLmEuY3JlYXRlRWxlbWVudCgib3B0aW9uIix7a2V5OnQsdmFsdWU6ZX0sZSl9KSkpLGw9WChhLnBhZ2VTaXplT3B0aW9ucyx7cm93czppfSk7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6InJ0LXBhZ2Utc2l6ZSJ9LGwpfX0se2tleToicmVuZGVyUGFnZUp1bXAiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUub25DaGFuZ2Uscj1lLnZhbHVlLG49ZS5vbkJsdXIsYT1lLm9uS2V5UHJlc3MsaT1lLmlucHV0VHlwZSxsPWUubGFuZ3VhZ2U7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse2tleToicGFnZS1qdW1wIixjbGFzc05hbWU6InJ0LXBhZ2UtanVtcCIsImFyaWEtbGFiZWwiOmwucGFnZUp1bXBMYWJlbCx0eXBlOmksb25DaGFuZ2U6dCx2YWx1ZTpyLG9uQmx1cjpuLG9uS2V5UHJlc3M6YX0pfX0se2tleToiZ2V0UGFnZUp1bXBQcm9wZXJ0aWVzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJue29uS2V5UHJlc3M6ZnVuY3Rpb24odCl7MTMhPT10LndoaWNoJiYxMyE9PXQua2V5Q29kZXx8ZS5hcHBseVBhZ2UoKX0sb25CbHVyOnRoaXMuYXBwbHlQYWdlLHZhbHVlOnRoaXMuc3RhdGUucGFnZUp1bXBWYWx1ZSxvbkNoYW5nZTpmdW5jdGlvbih0KXt2YXIgcj10LnRhcmdldC52YWx1ZTtpZigiIiE9PXIpe3ZhciBuPU51bWJlcihyKTtpZighTnVtYmVyLmlzTmFOKG4pKXt2YXIgYT1NYXRoLm1pbihNYXRoLm1heChuLDEpLE1hdGgubWF4KGUucHJvcHMucGFnZXMsMSkpO2Uuc2V0U3RhdGUoe3BhZ2VKdW1wVmFsdWU6YX0pfX1lbHNlIGUuc2V0U3RhdGUoe3BhZ2VKdW1wVmFsdWU6cn0pfSxpbnB1dFR5cGU6Im51bWJlciIsbGFuZ3VhZ2U6dGhpcy5wcm9wcy5sYW5ndWFnZX19fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMscj10LmF1dG9IaWRlUGFnaW5hdGlvbixuPXQucGFnaW5hdGlvblR5cGUsYT10LnNob3dQYWdlU2l6ZU9wdGlvbnMsaT10LnNob3dQYWdlSW5mbyxsPXQucGFnZSxzPXQucGFnZXMsdT10LmNhblByZXZpb3VzLGM9dC5jYW5OZXh0LGY9dC5jbGFzc05hbWUsZD10LnN0eWxlLHA9dC50aGVtZSxnPXQubGFuZ3VhZ2U7aWYocil7dmFyIGg9dGhpcy5wcm9wcyxtPWguZGVmYXVsdFBhZ2VTaXplLGI9aC5wYWdlU2l6ZU9wdGlvbnMseT1oLnJlc29sdmVkRGF0YSx2PWE\/TWF0aC5taW4uYXBwbHkoTWF0aCxbbV0uY29uY2F0KHBlKGIpKSk6bTtpZih5Lmxlbmd0aDw9dilyZXR1cm4gbnVsbH12YXIgdyx4PWk\/dGhpcy5yZW5kZXJQYWdlSW5mbyh0aGlzLnByb3BzKTpudWxsLFM9YT90aGlzLnJlbmRlclBhZ2VTaXplT3B0aW9ucyh0aGlzLnByb3BzKTpudWxsLFA9bCsxLEM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdDw9Nj9wZShBcnJheSh0KSkubWFwKChmdW5jdGlvbihlLHQpe3JldHVybiB0KzF9KSk6ZTw9ND9bMSwyLDMsNCw1LHRdOnQtZTwzP1sxLHQtMyx0LTIsdC0xLHRdOlsxLGUtMSxlLGUrMSx0XX0oUCxzKTtpZigibnVtYmVycyI9PT1uKXt2YXIgTz1bXTtDLmZvckVhY2goKGZ1bmN0aW9uKHQscil7dmFyIG49UD09PXQsYT1vLmEuY3JlYXRlRWxlbWVudChiZSx7a2V5OnQsaXNDdXJyZW50Om4sb25DbGljazplLmNoYW5nZVBhZ2UuYmluZChudWxsLHQpLCJhcmlhLWxhYmVsIjpYKGcucGFnZU51bWJlckxhYmVsLHtwYWdlOnR9KSsobj8iICI6IiIpLCJhcmlhLWN1cnJlbnQiOm4\/InBhZ2UiOm51bGx9LHQpO3QtQ1tyLTFdPjEmJk8ucHVzaChvLmEuY3JlYXRlRWxlbWVudCgic3BhbiIse2NsYXNzTmFtZToicnQtcGFnZS1lbGxpcHNpcyIsa2V5OiJlbGxpcHNpcy0iLmNvbmNhdCh0KSxyb2xlOiJzZXBhcmF0b3IifSwiLi4uIikpLE8ucHVzaChhKX0pKSx3PU99ZWxzZXt2YXIgaz0ianVtcCI9PT1uP3RoaXMucmVuZGVyUGFnZUp1bXAodGhpcy5nZXRQYWdlSnVtcFByb3BlcnRpZXMoKSk6UCxUPU1hdGgubWF4KHMsMSk7dz1vLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJydC1wYWdlLW51bWJlcnMifSxYKGcucGFnZU51bWJlcnMse3BhZ2U6ayxwYWdlczpUfSkpfXZhciBqPW8uYS5jcmVhdGVFbGVtZW50KGJlLHtjbGFzc05hbWU6InJ0LXByZXYtYnV0dG9uIixvbkNsaWNrOmZ1bmN0aW9uKCl7dSYmZS5jaGFuZ2VQYWdlKFAtMSl9LGRpc2FibGVkOiF1LCJhcmlhLWRpc2FibGVkIjp1P251bGw6InRydWUiLCJhcmlhLWxhYmVsIjpnLnBhZ2VQcmV2aW91c0xhYmVsfSxnLnBhZ2VQcmV2aW91cyksRT1vLmEuY3JlYXRlRWxlbWVudChiZSx7Y2xhc3NOYW1lOiJydC1uZXh0LWJ1dHRvbiIsb25DbGljazpmdW5jdGlvbigpe2MmJmUuY2hhbmdlUGFnZShQKzEpfSxkaXNhYmxlZDohYywiYXJpYS1kaXNhYmxlZCI6Yz9udWxsOiJ0cnVlIiwiYXJpYS1sYWJlbCI6Zy5wYWdlTmV4dExhYmVsfSxnLnBhZ2VOZXh0KTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTp0ZShmLCJydC1wYWdpbmF0aW9uIixKKHAucGFnaW5hdGlvblN0eWxlKSksc3R5bGU6ZH0sby5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicnQtcGFnaW5hdGlvbi1pbmZvIn0seCxTKSxvLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJydC1wYWdpbmF0aW9uLW5hdiJ9LGosdyxFKSl9fV0pJiZsZSh0LnByb3RvdHlwZSxyKSxuJiZsZSh0LG4pLGl9KG8uYS5Db21wb25lbnQpO2Z1bmN0aW9uIHZlKGUpe3JldHVybih2ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0pKGUpfWZ1bmN0aW9uIHdlKCl7cmV0dXJuKHdlPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPWFyZ3VtZW50c1t0XTtmb3IodmFyIG4gaW4gcilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocixuKSYmKGVbbl09cltuXSl9cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24geGUoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIFRlKGUpfShlKXx8ZnVuY3Rpb24oZSl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSkpcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxrZShlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBTZShlLHQpe3ZhciByPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKG49bi5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksci5wdXNoLmFwcGx5KHIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gUGUoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIHI9bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI\/U2UoT2JqZWN0KHIpLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtDZShlLHQsclt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM\/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhyKSk6U2UoT2JqZWN0KHIpKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iocix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gQ2UoZSx0LHIpe3JldHVybiB0IGluIGU\/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09cixlfWZ1bmN0aW9uIE9lKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgU3ltYm9sfHwhKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSkpKXJldHVybjt2YXIgcj1bXSxuPSEwLGE9ITEsbz12b2lkIDA7dHJ5e2Zvcih2YXIgaSxsPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEobj0oaT1sLm5leHQoKSkuZG9uZSkmJihyLnB1c2goaS52YWx1ZSksIXR8fHIubGVuZ3RoIT09dCk7bj0hMCk7fWNhdGNoKGUpe2E9ITAsbz1lfWZpbmFsbHl7dHJ5e258fG51bGw9PWwucmV0dXJufHxsLnJldHVybigpfWZpbmFsbHl7aWYoYSl0aHJvdyBvfX1yZXR1cm4gcn0oZSx0KXx8a2UoZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGtlKGUsdCl7aWYoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBUZShlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI\/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg\/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk\/QXJyYXkkLy50ZXN0KHIpP1RlKGUsdCk6dm9pZCAwfX1mdW5jdGlvbiBUZShlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KHQpO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIGplKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgcixuLGE9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciByLG4sYT17fSxvPU9iamVjdC5rZXlzKGUpO2ZvcihuPTA7bjxvLmxlbmd0aDtuKyspcj1vW25dLHQuaW5kZXhPZihyKT49MHx8KGFbcl09ZVtyXSk7cmV0dXJuIGF9KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iobj0wO248by5sZW5ndGg7bisrKXI9b1tuXSx0LmluZGV4T2Yocik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHIpJiYoYVtyXT1lW3JdKX1yZXR1cm4gYX1mdW5jdGlvbiBFZShlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbi5rZXksbil9fWZ1bmN0aW9uIFJlKGUsdCl7cmV0dXJuKFJlPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSkoZSx0KX1mdW5jdGlvbiBOZShlKXt2YXIgdD1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciByLG49RGUoZSk7aWYodCl7dmFyIGE9RGUodGhpcykuY29uc3RydWN0b3I7cj1SZWZsZWN0LmNvbnN0cnVjdChuLGFyZ3VtZW50cyxhKX1lbHNlIHI9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIEFlKHRoaXMscil9fWZ1bmN0aW9uIEFlKGUsdCl7cmV0dXJuIXR8fCJvYmplY3QiIT09dmUodCkmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2Z1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX0oZSk6dH1mdW5jdGlvbiBEZShlKXtyZXR1cm4oRGU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0pKGUpfXllLmRlZmF1bHRQcm9wcz17cGFnaW5hdGlvblR5cGU6Im51bWJlcnMiLGF1dG9IaWRlUGFnaW5hdGlvbjohMCxzaG93UGFnZUluZm86ITAsbGFuZ3VhZ2U6cX07dmFyIHplPWZ1bmN0aW9uKGUpe3ZhciB0PWUuc2VsZWN0VHlwZSxyPWUuY2hlY2tlZCxuPWUubGFiZWwsYT1lLnJvd3MsaT1lLnJvdyxsPWUub25DbGljaztyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicnQtc2VsZWN0In0sby5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7dHlwZTp0fHwiY2hlY2tib3giLGNsYXNzTmFtZToicnQtc2VsZWN0LWlucHV0IiwiYXJpYS1sYWJlbCI6bixjaGVja2VkOnIsb25DbGljazpmdW5jdGlvbihlKXtpZihlLnN0b3BQcm9wYWdhdGlvbigpLGEpe3ZhciB0PWEubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5faW5kZXh9KSk7bCh0LCFyKX1lbHNlIGlmKGkpe3ZhciBuPWkuX2luZGV4O2wobil9fSxvbkNoYW5nZTpmdW5jdGlvbigpe319KSwi4oCLIil9O2Z1bmN0aW9uIF9lKGUpe3JldHVybihfZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0pKGUpfWZ1bmN0aW9uIEZlKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gTWUoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4ua2V5LG4pfX1mdW5jdGlvbiBJZShlLHQpe3JldHVybihJZT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0pKGUsdCl9ZnVuY3Rpb24gTGUoZSl7dmFyIHQ9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSxbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixuPUtlKGUpO2lmKHQpe3ZhciBhPUtlKHRoaXMpLmNvbnN0cnVjdG9yO3I9UmVmbGVjdC5jb25zdHJ1Y3Qobixhcmd1bWVudHMsYSl9ZWxzZSByPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBXZSh0aGlzLHIpfX1mdW5jdGlvbiBXZShlLHQpe3JldHVybiF0fHwib2JqZWN0IiE9PV9lKHQpJiYiZnVuY3Rpb24iIT10eXBlb2YgdD9mdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9KGUpOnR9ZnVuY3Rpb24gS2UoZSl7cmV0dXJuKEtlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9KShlKX12YXIgQmU9ZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJkllKGUsdCl9KG8sZSk7dmFyIHQscixuLGE9TGUobyk7ZnVuY3Rpb24gbygpe3JldHVybiBGZSh0aGlzLG8pLGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0PW8sKHI9W3trZXk6ImNvbXBvbmVudERpZE1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc3RhdGljUmVuZGVyKCl9fSx7a2V5OiJzdGF0aWNSZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7d2luZG93LkhUTUxXaWRnZXRzJiYoby50aHJvdHRsZWQ\/by5sYXN0Q2FsbD0hMDood2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlcigpLG8udGhyb3R0bGVkPSEwLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7by5sYXN0Q2FsbCYmd2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlcigpLG8udGhyb3R0bGVkPSExLG8ubGFzdENhbGw9ITF9KSkpKX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlbn19XSkmJk1lKHQucHJvdG90eXBlLHIpLG4mJk1lKHQsbiksb30oby5hLkNvbXBvbmVudCk7ZnVuY3Rpb24gSGUoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIEdlKGUpfShlKXx8ZnVuY3Rpb24oZSl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSkpcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIEdlKGUsdCk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpOyJPYmplY3QiPT09ciYmZS5jb25zdHJ1Y3RvciYmKHI9ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZigiTWFwIj09PXJ8fCJTZXQiPT09cilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZigiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg\/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk\/QXJyYXkkLy50ZXN0KHIpKXJldHVybiBHZShlLHQpfShlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBHZShlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KHQpO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIFVlKGUpe3JldHVybiAwPT09KGU9cWUoZSkpLmxlbmd0aD8iIjokZShlLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0fSksMCksMTIpfWZ1bmN0aW9uIFZlKGUpe3JldHVybiAwPT09KGU9cWUoZSkpLmxlbmd0aD8iIjokZShVZShlKS9lLmxlbmd0aCwxMil9dmFyIEplPXttZWFuOlZlLHN1bTpVZSxtYXg6ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT0oZT1xZShlKSkubGVuZ3RoPyIiOk1hdGgubWF4LmFwcGx5KG51bGwsZSl9LG1pbjpmdW5jdGlvbihlKXtyZXR1cm4gMD09PShlPXFlKGUpKS5sZW5ndGg\/IiI6TWF0aC5taW4uYXBwbHkobnVsbCxlKX0sbWVkaWFuOmZ1bmN0aW9uKGUpe3JldHVybiAwPT09KGU9cWUoZSkpLmxlbmd0aD8iIjooZS5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLXR9KSksZS5sZW5ndGglMj09MT9lWyhlLmxlbmd0aC0xKS8yXTpWZShlLnNsaWNlKGUubGVuZ3RoLzItMSxlLmxlbmd0aC8yKzEpKSl9LGNvdW50OmZ1bmN0aW9uKGUpe3JldHVybiBlLmxlbmd0aH0sdW5pcXVlOmZ1bmN0aW9uKGUpe3JldHVybiBIZShuZXcgU2V0KGUpKS5qb2luKCIsICIpfSxmcmVxdWVuY3k6ZnVuY3Rpb24oZSl7dmFyIHQ9e307cmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dFtlXT10W2VdfHwwLHRbZV0rPTF9KSksT2JqZWN0LmtleXModCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZSsodFtlXT4xPyIgKCIuY29uY2F0KHRbZV0sIikiKToiIil9KSkuam9pbigiLCAiKX19O2Z1bmN0aW9uICRlKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTozO2lmKCFOdW1iZXIuaXNGaW5pdGUoZSkpcmV0dXJuIGU7dD10PjA\/dDowO3ZhciByPU1hdGgucG93KDEwLHQpO3JldHVybiBNYXRoLnNpZ24oZSkqTWF0aC5yb3VuZChNYXRoLmFicyhlKSpyKS9yfWZ1bmN0aW9uIHFlKGUpe3JldHVybiBlLm1hcChYZSkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGV9KSl9ZnVuY3Rpb24gWGUoZSl7cmV0dXJuKG51bGw9PWV8fHZvaWQgMD09PWV8fFllKGUpKSYmKGU9bnVsbCksIkluZiI9PT1lJiYoZT0xLzApLCItSW5mIj09PWUmJihlPS0xLzApLCJzdHJpbmciPT10eXBlb2YgZSYmKGU9TnVtYmVyKGUpKSxlfWZ1bmN0aW9uIFllKGUpe3JldHVybiJOQSI9PT1lfHwiTmFOIj09PWV9ZnVuY3Rpb24gWmUoZSx0KXt2YXIgcj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihuPW4uZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLHIucHVzaC5hcHBseShyLG4pfXJldHVybiByfWZ1bmN0aW9uIFFlKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP1plKE9iamVjdChyKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZXQoZSx0LHJbdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpOlplKE9iamVjdChyKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGV0KGUsdCxyKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPXIsZX1mdW5jdGlvbiB0dChlLHQpe3ZhciByO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgU3ltYm9sfHxudWxsPT1lW1N5bWJvbC5pdGVyYXRvcl0pe2lmKEFycmF5LmlzQXJyYXkoZSl8fChyPWZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gcnQoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7Ik9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKCJNYXAiPT09cnx8IlNldCI9PT1yKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKCJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QocikpcmV0dXJuIHJ0KGUsdCl9KGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg\/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIG8saT0hMCxsPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1lW1N5bWJvbC5pdGVyYXRvcl0oKX0sbjpmdW5jdGlvbigpe3ZhciBlPXIubmV4dCgpO3JldHVybiBpPWUuZG9uZSxlfSxlOmZ1bmN0aW9uKGUpe2w9ITAsbz1lfSxmOmZ1bmN0aW9uKCl7dHJ5e2l8fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX19fWZ1bmN0aW9uIHJ0KGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gbnQoZSx0KXt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciByPSh0PVFlKHt9LHQpKS5jb2x1bW5zO3QuY29sdW1ucz1bXSxlPWUucmVkdWNlKChmdW5jdGlvbihlLG4pe3JldHVybiBuLmlkPT09clswXT8oZS5wdXNoKHQpLHQuY29sdW1ucy5wdXNoKG4pKTpyLmluY2x1ZGVzKG4uaWQpP3QuY29sdW1ucy5wdXNoKG4pOmUucHVzaChuKSxlfSksW10pfSkpO3ZhciByLG49W107cmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5jb2x1bW5zPyhuLnB1c2goZSkscj1udWxsKToocnx8KHI9e2NvbHVtbnM6W119LG4ucHVzaChyKSksci5jb2x1bW5zLnB1c2goZSkpfSkpLGU9bn1mdW5jdGlvbiBhdCgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSx0PWUudHlwZSxyPWUubmFMYXN0O3JldHVybiBmdW5jdGlvbihlLG4sYSl7cmV0dXJuIm51bWVyaWMiPT09dD8oZT1YZShlKSxuPVhlKG4pKTooZT0ic3RyaW5nIj09dHlwZW9mIGU\/ZS50b0xvd2VyQ2FzZSgpOmUsbj0ic3RyaW5nIj09dHlwZW9mIG4\/bi50b0xvd2VyQ2FzZSgpOm4pLGU9PT1uPzA6bnVsbD09ZT9yP2E\/LTE6MTotMTpudWxsPT1uP3I\/YT8xOi0xOjE6ZT5uPzE6ZTxuPy0xOjB9fWZ1bmN0aW9uIG90KGUsdCl7dmFyIHI9dC5wcmVmaXgsbj10LnN1ZmZpeCxhPXQuZGlnaXRzLG89dC5zZXBhcmF0b3JzLGk9dC5wZXJjZW50LGw9dC5jdXJyZW5jeSxzPXQuZGF0ZXRpbWUsdT10LmRhdGUsYz10LnRpbWUsZj10LmhvdXIxMixkPXQubG9jYWxlcztpZigibnVtYmVyIj09dHlwZW9mIGUmJihvfHxpfHxsfHxudWxsIT1hfHxkKSl7dmFyIHA9e3VzZUdyb3VwaW5nOiEhb307aSYmKHAuc3R5bGU9InBlcmNlbnQiKSxsPyhwLnN0eWxlPSJjdXJyZW5jeSIscC5jdXJyZW5jeT1sKTpudWxsIT1hPyhwLm1pbmltdW1GcmFjdGlvbkRpZ2l0cz1NYXRoLm1pbihhLDE4KSxwLm1heGltdW1GcmFjdGlvbkRpZ2l0cz1NYXRoLm1pbihhLDE4KSk6cC5tYXhpbXVtRnJhY3Rpb25EaWdpdHM9MTgsZT1lLnRvTG9jYWxlU3RyaW5nKGR8fHZvaWQgMCxwKX1pZihzfHx1fHxjKXtkPWR8fHZvaWQgMDt2YXIgZz17fTtudWxsIT1mJiYoZy5ob3VyMTI9Zikscz9lPW5ldyBEYXRlKGUpLnRvTG9jYWxlU3RyaW5nKGQsZyk6dT8oIWUuaW5jbHVkZXMoIi0iKXx8ZS5pbmNsdWRlcygiVCIpfHxlLmluY2x1ZGVzKCJaIil8fChlPWUucmVwbGFjZSgvLS9nLCIvIikpLGU9bmV3IERhdGUoZSkudG9Mb2NhbGVEYXRlU3RyaW5nKGQsZykpOmMmJihlPW5ldyBEYXRlKGUpLnRvTG9jYWxlVGltZVN0cmluZyhkLGcpKX1yZXR1cm4gbnVsbCE9ciYmKGU9bnVsbCE9ZT9lOiIiLGU9U3RyaW5nKHIpK2UpLG51bGwhPW4mJihlPW51bGwhPWU\/ZToiIixlKz1TdHJpbmcobikpLGV9ZnVuY3Rpb24gaXQoZSl7dmFyIHQ9bmV3IFJlZ0V4cCgiXiIrb2UoZSksImkiKTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQudGVzdChlKX19ZnVuY3Rpb24gbHQoZSl7dmFyIHQ9bmV3IFJlZ0V4cChvZShlKSwiaSIpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC50ZXN0KGUpfX1yKDE1KSxyKDE4KTtmdW5jdGlvbiBzdChlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gY3QoZSl9KGUpfHxmdW5jdGlvbihlKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fHV0KGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIHV0KGUsdCl7aWYoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBjdChlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI\/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg\/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk\/QXJyYXkkLy50ZXN0KHIpP2N0KGUsdCk6dm9pZCAwfX1mdW5jdGlvbiBjdChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KHQpO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIGZ0KGUpe3JldHVybihmdD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0pKGUpfWZ1bmN0aW9uIGR0KGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgcixuLGE9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciByLG4sYT17fSxvPU9iamVjdC5rZXlzKGUpO2ZvcihuPTA7bjxvLmxlbmd0aDtuKyspcj1vW25dLHQuaW5kZXhPZihyKT49MHx8KGFbcl09ZVtyXSk7cmV0dXJuIGF9KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iobj0wO248by5sZW5ndGg7bisrKXI9b1tuXSx0LmluZGV4T2Yocik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHIpJiYoYVtyXT1lW3JdKX1yZXR1cm4gYX1mdW5jdGlvbiBwdChlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGd0KGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLmtleSxuKX19ZnVuY3Rpb24gaHQoZSx0LHIpe3JldHVybiB0JiZndChlLnByb3RvdHlwZSx0KSxyJiZndChlLHIpLGV9ZnVuY3Rpb24gbXQoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmYnQoZSx0KX1mdW5jdGlvbiBidChlLHQpe3JldHVybihidD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0pKGUsdCl9ZnVuY3Rpb24geXQoZSl7dmFyIHQ9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSxbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixuPXh0KGUpO2lmKHQpe3ZhciBhPXh0KHRoaXMpLmNvbnN0cnVjdG9yO3I9UmVmbGVjdC5jb25zdHJ1Y3Qobixhcmd1bWVudHMsYSl9ZWxzZSByPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiB2dCh0aGlzLHIpfX1mdW5jdGlvbiB2dChlLHQpe3JldHVybiF0fHwib2JqZWN0IiE9PWZ0KHQpJiYiZnVuY3Rpb24iIT10eXBlb2YgdD93dChlKTp0fWZ1bmN0aW9uIHd0KGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiB4dChlKXtyZXR1cm4oeHQ9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0pKGUpfWZ1bmN0aW9uIFN0KCl7cmV0dXJuKFN0PU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPWFyZ3VtZW50c1t0XTtmb3IodmFyIG4gaW4gcilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocixuKSYmKGVbbl09cltuXSl9cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gUHQoZSx0KXt2YXIgcj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihuPW4uZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLHIucHVzaC5hcHBseShyLG4pfXJldHVybiByfWZ1bmN0aW9uIEN0KGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP1B0KE9iamVjdChyKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T3QoZSx0LHJbdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpOlB0KE9iamVjdChyKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIE90KGUsdCxyKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPXIsZX12YXIga3Q9ZnVuY3Rpb24oZSl7cmV0dXJue3JvbGU6InRhYmxlIixjbGFzc05hbWU6SihlLnRoZW1lLnRhYmxlU3R5bGUpfX0sVHQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXt9O24ucm9sZT1yLnNlbGVjdGFibGU\/ImNlbGwiOiJjb2x1bW5oZWFkZXIiLG4uY2xhc3NOYW1lPUooZS50aGVtZS5oZWFkZXJTdHlsZSk7dmFyIGE9cmUoci5zb3J0YWJsZSxlLnNvcnRhYmxlKTtpZihhKXt2YXIgbz1lLnNvcnRlZC5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gZS5pZD09PXIuaWR9KSksaT1vP28uZGVzYz8iZGVzY2VuZGluZyI6ImFzY2VuZGluZyI6Im5vbmUiLGw9cmUoci5kZWZhdWx0U29ydERlc2MsZS5kZWZhdWx0U29ydERlc2MpPyJkZXNjZW5kaW5nIjoiYXNjZW5kaW5nIixzPWUuY3VycmVudGx5UmVzaXppbmcmJmUuY3VycmVudGx5UmVzaXppbmcuaWQ9PT1yLmlkO249Q3QoQ3Qoe30sbikse30seyJhcmlhLWxhYmVsIjpYKGUubGFuZ3VhZ2Uuc29ydExhYmVsLHtuYW1lOnIubmFtZX0pLCJhcmlhLXNvcnQiOmksZGVmYXVsdFNvcnRPcmRlcjpsLGlzU29ydGFibGU6YSxpc1NvcnRlZDohIW8saXNSZXNpemluZzpzfSl9cmV0dXJuIG59LGp0PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj17fTtpZihyLmNvbHVtbnMuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucGl2b3RlZH0pKSl7dmFyIGE9ci5jb2x1bW5zO2EucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBlJiZlPT09dC5wYXJlbnRDb2x1bW4mJnQucGFyZW50Q29sdW1ufSksYVswXS5wYXJlbnRDb2x1bW4pLkhlYWRlcnx8KG4uSGVhZGVyUGl2b3RlZD1lLmxhbmd1YWdlLmRlZmF1bHRHcm91cEhlYWRlcil9cmV0dXJuIHIuSGVhZGVyP249Q3QoQ3Qoe30sbikse30seyJhcmlhLWNvbHNwYW4iOnIuY29sdW1ucy5sZW5ndGgscm9sZToiY29sdW1uaGVhZGVyIixjbGFzc05hbWU6dGUoInJ0LXRoLWdyb3VwIixyLmNsYXNzTmFtZSxKKGUudGhlbWUuZ3JvdXBIZWFkZXJTdHlsZSkpfSk6bi5jbGFzc05hbWU9dGUoInJ0LXRoLWdyb3VwLW5vbmUiLEooZS50aGVtZS5ncm91cEhlYWRlclN0eWxlKSksbn0sRXQ9ZnVuY3Rpb24oKXtyZXR1cm57cm9sZToicm93In19LFJ0PWZ1bmN0aW9uKCl7cmV0dXJue3JvbGU6InJvdyJ9fSxOdD1mdW5jdGlvbihlKXtyZXR1cm57cm9sZToicm93IixjbGFzc05hbWU6dGUoSihlLnRoZW1lLnJvd1N0eWxlKSl9fSxBdD1mdW5jdGlvbihlKXtyZXR1cm57cm9sZToiY2VsbCIsY2xhc3NOYW1lOnRlKCJydC10ZC1maWx0ZXIiLEooZS50aGVtZS5maWx0ZXJDZWxsU3R5bGUpKX19LER0PWZ1bmN0aW9uKGUsdCl7dmFyIHI9e307cmV0dXJuIHIuY2xhc3NOYW1lPUooZS50aGVtZS5yb3dHcm91cFN0eWxlKSx0fHwoclsiYXJpYS1oaWRkZW4iXT0idHJ1ZSIpLHJ9LHp0PWZ1bmN0aW9uKGUsdCl7dmFyIHI9e307cmV0dXJuIHIuY2xhc3NOYW1lPUooZS50aGVtZS5yb3dTdHlsZSksdD8oci5yb2xlPSJyb3ciLHIpOnJ9LF90PWZ1bmN0aW9uKGUsdCl7dmFyIHI9e307cmV0dXJuIHIuY2xhc3NOYW1lPUooZS50aGVtZS5jZWxsU3R5bGUpLHQ\/KHIucm9sZT0iY2VsbCIscik6cn0sRnQ9ZnVuY3Rpb24oKXtyZXR1cm57cm9sZToicm93In19LE10PWZ1bmN0aW9uKGUpe3JldHVybntyb2xlOiJjZWxsIixjbGFzc05hbWU6dGUoInJ0LXRmb290LXRkIixKKGUudGhlbWUuZm9vdGVyU3R5bGUpKX19LEl0PWkuUmVhY3RUYWJsZURlZmF1bHRzLlRoZWFkQ29tcG9uZW50LEx0PWkuUmVhY3RUYWJsZURlZmF1bHRzLlRmb290Q29tcG9uZW50O09iamVjdC5hc3NpZ24oaS5SZWFjdFRhYmxlRGVmYXVsdHMse1RoZWFkQ29tcG9uZW50OmZ1bmN0aW9uKGUpe3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChJdCxTdCh7cm9sZToicm93Z3JvdXAifSxlKSl9LFRmb290Q29tcG9uZW50OmZ1bmN0aW9uKGUpe3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChMdCxTdCh7cm9sZToicm93Z3JvdXAifSxlKSl9fSk7dmFyIFd0PWkuUmVhY3RUYWJsZURlZmF1bHRzLlRoQ29tcG9uZW50LEt0PWZ1bmN0aW9uKGUpe210KHIsZSk7dmFyIHQ9eXQocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gcHQodGhpcyxyKSwobj10LmNhbGwodGhpcyxlKSkuc3RhdGU9e3Nob3dGb2N1czohMSxjbGlja2VkOiExfSxufXJldHVybiBodChyLFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMscj10LkhlYWRlclBpdm90ZWQsbj10LmRlZmF1bHRTb3J0T3JkZXIsYT10LmlzU29ydGFibGUsbz10LmlzU29ydGVkLGk9dC5pc1Jlc2l6aW5nLGw9ZHQodCxbIkhlYWRlclBpdm90ZWQiLCJkZWZhdWx0U29ydE9yZGVyIiwiaXNTb3J0YWJsZSIsImlzU29ydGVkIiwiaXNSZXNpemluZyJdKTtpZihyJiYobC5jaGlsZHJlbj1yKSxhKXt2YXIgcz1sLnRvZ2dsZVNvcnQsdT1mdW5jdGlvbih0KXtzJiZzKHQpLGUuc2V0U3RhdGUoe3Nob3dGb2N1czohMX0pfTtsPUN0KEN0KHt9LGwpLHt9LHt0b2dnbGVTb3J0OnUsb25LZXlQcmVzczpmdW5jdGlvbihlKXt2YXIgdD1lLndoaWNofHxlLmtleUNvZGU7MTMhPT10JiYzMiE9PXR8fHUoZSl9LG9uTW91c2VEb3duOmZ1bmN0aW9uKHQpeyh0LmRldGFpbD4xfHx0LnNoaWZ0S2V5KSYmdC5wcmV2ZW50RGVmYXVsdCgpLGUuc2V0U3RhdGUoe2NsaWNrZWQ6ITB9KX0sb25Gb2N1czpmdW5jdGlvbigpe2Uuc3RhdGUuY2xpY2tlZHx8b3x8aXx8ZS5zZXRTdGF0ZSh7c2hvd0ZvY3VzOiEwfSl9LG9uQmx1cjpmdW5jdGlvbigpe2Uuc2V0U3RhdGUoe3Nob3dGb2N1czohMSxjbGlja2VkOiExfSl9LHRhYkluZGV4OiIwIiwiZGF0YS1zb3J0LWhpbnQiOnRoaXMuc3RhdGUuc2hvd0ZvY3VzP246dm9pZCAwfSl9cmV0dXJuIFd0KGwpfX1dKSxyfShvLmEuQ29tcG9uZW50KTtPYmplY3QuYXNzaWduKGkuUmVhY3RUYWJsZURlZmF1bHRzLHtUaENvbXBvbmVudDpLdH0pO3ZhciBCdD1mdW5jdGlvbihlKXtyZXR1cm57c3RhdGU6ZX19LEh0PWkuUmVhY3RUYWJsZURlZmF1bHRzLlRib2R5Q29tcG9uZW50LEd0PWkuUmVhY3RUYWJsZURlZmF1bHRzLk5vRGF0YUNvbXBvbmVudDtPYmplY3QuYXNzaWduKGkuUmVhY3RUYWJsZURlZmF1bHRzLHtUYm9keUNvbXBvbmVudDpmdW5jdGlvbihlKXt2YXIgdD1lLnN0YXRlLHI9ZS5jbGFzc05hbWUsbj1lLmNoaWxkcmVuLGE9ZHQoZSxbInN0YXRlIiwiY2xhc3NOYW1lIiwiY2hpbGRyZW4iXSksaT10LnBhZ2VSb3dzLGw9dC50aGVtZSxzPXQubGFuZ3VhZ2UsdT0haS5sZW5ndGgmJm8uYS5jcmVhdGVFbGVtZW50KEd0LG51bGwscy5ub0RhdGEpO3JldHVybiByPXU\/dGUociwicnQtdGJvZHktbm9EYXRhIik6cixyPXRlKHIsSihsLnRhYmxlQm9keVN0eWxlKSksby5hLmNyZWF0ZUVsZW1lbnQoSHQsU3Qoe3JvbGU6InJvd2dyb3VwIixjbGFzc05hbWU6cn0sYSksbix1KX0sTm9EYXRhQ29tcG9uZW50OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9fSksT2JqZWN0LmFzc2lnbihpLlJlYWN0VGFibGVEZWZhdWx0cyx7RmlsdGVyQ29tcG9uZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sdW1uLHI9ZS5maWx0ZXIsbj1lLm9uQ2hhbmdlLGE9dC5uYW1lLGk9dC50aGVtZSxsPXQubGFuZ3VhZ2U7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InRleHQiLGNsYXNzTmFtZTp0ZSgicnQtZmlsdGVyIixKKGkuZmlsdGVySW5wdXRTdHlsZSkpLHN0eWxlOnt3aWR0aDoiMTAwJSJ9LHZhbHVlOnI\/ci52YWx1ZToiIixvbkNoYW5nZTpmdW5jdGlvbihlKXtyZXR1cm4gbihlLnRhcmdldC52YWx1ZSl9LHBsYWNlaG9sZGVyOmwuZmlsdGVyUGxhY2Vob2xkZXIsImFyaWEtbGFiZWwiOlgobC5maWx0ZXJMYWJlbCx7bmFtZTphfSl9KX19KSxPYmplY3QuYXNzaWduKGkuUmVhY3RUYWJsZURlZmF1bHRzLHtFeHBhbmRlckNvbXBvbmVudDpmdW5jdGlvbihlKXt2YXIgdD1lLmlzRXhwYW5kZWQscj1lLmNvbHVtbixuPXIudGhlbWUsYT1yLmxhbmd1YWdlLGk9dD9hLmRldGFpbHNDb2xsYXBzZUxhYmVsOmEuZGV0YWlsc0V4cGFuZExhYmVsO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7Y2xhc3NOYW1lOiJydC1leHBhbmRlci1idXR0b24iLCJhcmlhLWxhYmVsIjppfSxvLmEuY3JlYXRlRWxlbWVudCgic3BhbiIse2NsYXNzTmFtZTp0ZSgicnQtZXhwYW5kZXIiLHQmJiItb3BlbiIsSihuLmV4cGFuZGVyU3R5bGUpKSx0YWJJbmRleDoiLTEiLCJhcmlhLWhpZGRlbiI6InRydWUifSwi4oCiIikpfX0pO3ZhciBVdD1pLlJlYWN0VGFibGVEZWZhdWx0cy5Mb2FkaW5nQ29tcG9uZW50O09iamVjdC5hc3NpZ24oaS5SZWFjdFRhYmxlRGVmYXVsdHMse0xvYWRpbmdDb21wb25lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sb2FkaW5nLHI9ZHQoZSxbImxvYWRpbmciXSk7cmV0dXJuIHQ\/VXQoQ3Qoe2xvYWRpbmc6dH0scikpOm51bGx9fSksbC5hLnByb3BUeXBlcz1wLGwuYS5wcm90b3R5cGUub2xkQ29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcz1sLmEucHJvdG90eXBlLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzLGwuYS5wcm90b3R5cGUuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzO2U9Q3Qoe30sZSksdGhpcy5wcm9wcy5kYXRhS2V5JiZ0aGlzLnByb3BzLmRhdGFLZXk9PT1lLmRhdGFLZXkmJihlLmRhdGE9dGhpcy5wcm9wcy5kYXRhLGUuY29sdW1ucz10aGlzLnByb3BzLmNvbHVtbnMpO3JldHVyblsicGl2b3RCeSIsInNvcnRlZCIsImZpbHRlcmVkIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7SlNPTi5zdHJpbmdpZnkoci5wcm9wc1t0XSk9PT1KU09OLnN0cmluZ2lmeShlW3RdKSYmKGVbdF09ci5wcm9wc1t0XSl9KSksdGhpcy5wcm9wcy5zZWFyY2hhYmxlIT09ZS5zZWFyY2hhYmxlJiYoZS5maWx0ZXJlZD10aGlzLnN0YXRlLmZpbHRlcmVkLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQhPT1yLnByb3BzLnNlYXJjaEtleX0pKSksdGhpcy5vbGRDb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKGUsdCl9LGwuYS5wcm90b3R5cGUub2xkRmlsdGVyRGF0YT1sLmEucHJvdG90eXBlLmZpbHRlckRhdGEsbC5hLnByb3RvdHlwZS5maWx0ZXJEYXRhPWZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBhPW47aWYodGhpcy5wcm9wcy5zZWFyY2hhYmxlKXt2YXIgbz1uLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY3JlYXRlTWF0Y2hlcn0pKSxpPXtpZDp0aGlzLnByb3BzLnNlYXJjaEtleSxmaWx0ZXJBbGw6ITAsZmlsdGVyYWJsZTohMCxmaWx0ZXJNZXRob2Q6ZnVuY3Rpb24oZSx0KXtpZighZS52YWx1ZSlyZXR1cm4gdDt2YXIgcj1vLnJlZHVjZSgoZnVuY3Rpb24odCxyKXtyZXR1cm4gdFtyLmlkXT1yLmNyZWF0ZU1hdGNoZXIoZS52YWx1ZSksdH0pLHt9KTtyZXR1cm4gdD10LmZpbHRlcigoZnVuY3Rpb24oZSl7aWYoZS5fc3ViUm93cylyZXR1cm4hMDt2YXIgdCxuPWZ1bmN0aW9uKGUsdCl7dmFyIHI7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBTeW1ib2x8fG51bGw9PWVbU3ltYm9sLml0ZXJhdG9yXSl7aWYoQXJyYXkuaXNBcnJheShlKXx8KHI9dXQoZSkpfHx0JiZlJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoKXtyJiYoZT1yKTt2YXIgbj0wLGE9ZnVuY3Rpb24oKXt9O3JldHVybntzOmEsbjpmdW5jdGlvbigpe3JldHVybiBuPj1lLmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6ZVtuKytdfX0sZTpmdW5jdGlvbihlKXt0aHJvdyBlfSxmOmF9fXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX12YXIgbyxpPSEwLGw9ITE7cmV0dXJue3M6ZnVuY3Rpb24oKXtyPWVbU3ltYm9sLml0ZXJhdG9yXSgpfSxuOmZ1bmN0aW9uKCl7dmFyIGU9ci5uZXh0KCk7cmV0dXJuIGk9ZS5kb25lLGV9LGU6ZnVuY3Rpb24oZSl7bD0hMCxvPWV9LGY6ZnVuY3Rpb24oKXt0cnl7aXx8bnVsbD09ci5yZXR1cm58fHIucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fX19KG8pO3RyeXtmb3Iobi5zKCk7ISh0PW4ubigpKS5kb25lOyl7dmFyIGE9dC52YWx1ZSxpPWUuX29yaWdpbmFsW2EuaWRdO2lmKHJbYS5pZF0oaSkpcmV0dXJuITB9fWNhdGNoKGUpe24uZShlKX1maW5hbGx5e24uZigpfX0pKX19O2E9YS5jb25jYXQoaSl9aWYodGhpcy5wcm9wcy5jcm9zc3RhbGtHcm91cCl7dmFyIGw9e2lkOnRoaXMucHJvcHMuY3Jvc3N0YWxrSWQsZmlsdGVyQWxsOiEwLGZpbHRlcmFibGU6ITAsZmlsdGVyTWV0aG9kOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudmFsdWU\/dD10LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuISF0Ll9zdWJSb3dzfHwoISFlLnZhbHVlLmluY2x1ZGVzKHQuX2luZGV4KXx8dm9pZCAwKX0pKTp0fX07YT1hLmNvbmNhdChsKX1yZXR1cm4gdGhpcy5vbGRGaWx0ZXJEYXRhKGUsdCxyLGEpfTt2YXIgVnQsSnQsJHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zZWFyY2hWYWx1ZSxyPWUub25TZWFyY2hDaGFuZ2Usbj1lLnNlYXJjaFBsYWNlaG9sZGVyLGw9ZS5zZWFyY2hMYWJlbCxzPWUuc2VhcmNoQ2xhc3NOYW1lLHU9ZHQoZSxbInNlYXJjaFZhbHVlIiwib25TZWFyY2hDaGFuZ2UiLCJzZWFyY2hQbGFjZWhvbGRlciIsInNlYXJjaExhYmVsIiwic2VhcmNoQ2xhc3NOYW1lIl0pLGM9by5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7dHlwZToidGV4dCIsdmFsdWU6dCxvbkNoYW5nZTpyLGNsYXNzTmFtZTp0ZSgicnQtc2VhcmNoIixzKSxwbGFjZWhvbGRlcjpuLCJhcmlhLWxhYmVsIjpsfSk7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KGEuRnJhZ21lbnQsbnVsbCxjLG8uYS5jcmVhdGVFbGVtZW50KGkuUmVhY3RUYWJsZURlZmF1bHRzLlRhYmxlQ29tcG9uZW50LHUpKX0scXQ9KFZ0PWwuYSwoSnQ9ZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJlJlKGUsdCl9KGksZSk7dmFyIHQscixuLGE9TmUoaSk7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxpKSxhLmNhbGwodGhpcyxlKX1yZXR1cm4gdD1pLChyPVt7a2V5OiJyb3dTZWxlY3RvciIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcyxyPXQuaXNTZWxlY3RlZCxuPXQudG9nZ2xlU2VsZWN0aW9uLGE9dC5zZWxlY3RUeXBlLGk9dC5TZWxlY3RJbnB1dENvbXBvbmVudCxsPXQubGFuZ3VhZ2Uscz1yKGUuaW5kZXgpLHU9e2NoZWNrZWQ6cyxvbkNsaWNrOm4sc2VsZWN0VHlwZTphLHJvdzplLnJvdyxsYWJlbDpzP2wuZGVzZWxlY3RSb3dMYWJlbDpsLnNlbGVjdFJvd0xhYmVsfTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoaSx1KX19LHtrZXk6InN1YlJvd1NlbGVjdG9yIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLHI9dC5pc1NlbGVjdGVkLG49dC50b2dnbGVBbGwsYT10LnNlbGVjdFR5cGUsaT10LlNlbGVjdElucHV0Q29tcG9uZW50LGw9dC5sYW5ndWFnZTtpZigicmFkaW8iPT09YSlyZXR1cm4gbnVsbDt2YXIgcz1lLnN1YlJvd3M7aWYoIXN8fHMuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuX2FnZ3JlZ2F0ZWR9KSkpcmV0dXJuIG51bGw7dmFyIHU9cy5ldmVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIHIoZS5faW5kZXgpfSkpLGM9e2NoZWNrZWQ6dSxvbkNsaWNrOm4sc2VsZWN0VHlwZTphLHJvd3M6cyxsYWJlbDp1P2wuZGVzZWxlY3RBbGxTdWJSb3dzTGFiZWw6bC5zZWxlY3RBbGxTdWJSb3dzTGFiZWx9O3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChpLGMpfX0se2tleToiaGVhZFNlbGVjdG9yIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLHI9dC5pc1NlbGVjdGVkLG49dC5zZWxlY3RUeXBlLGE9dC50b2dnbGVBbGwsaT10LlNlbGVjdEFsbElucHV0Q29tcG9uZW50LGw9dC5sYW5ndWFnZTtpZigicmFkaW8iPT09bilyZXR1cm4gbnVsbDt2YXIgcz1lLmRhdGE7aWYoMD09PXMubGVuZ3RofHxzLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlLl9hZ2dyZWdhdGVkfSkpKXJldHVybiBudWxsO3ZhciB1PXMuZXZlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiByKGUuX2luZGV4KX0pKSxjPXtjaGVja2VkOnUsb25DbGljazphLHNlbGVjdFR5cGU6bixyb3dzOnMsbGFiZWw6dT9sLmRlc2VsZWN0QWxsUm93c0xhYmVsOmwuc2VsZWN0QWxsUm93c0xhYmVsfTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoaSxjKX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wcm9wcyxyPXQuY29sdW1ucyxuPXQuc2VsZWN0V2lkdGgsYT10LmZvcndhcmRlZFJlZixpPWplKHQsWyJjb2x1bW5zIiwic2VsZWN0V2lkdGgiLCJmb3J3YXJkZWRSZWYiXSksbD10aGlzLnByb3BzLHM9bC5pc1NlbGVjdGVkLHU9bC5zZWxlY3RUeXBlLGM9bC50b2dnbGVBbGwsZj1sLnRvZ2dsZVNlbGVjdGlvbixkPWwuc2VsZWN0SWQscD17fSxnPWZ1bmN0aW9uIGUodCl7dmFyIHIsbj1mdW5jdGlvbihlLHQpe3ZhciByO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgU3ltYm9sfHxudWxsPT1lW1N5bWJvbC5pdGVyYXRvcl0pe2lmKEFycmF5LmlzQXJyYXkoZSl8fChyPWtlKGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg\/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIG8saT0hMCxsPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1lW1N5bWJvbC5pdGVyYXRvcl0oKX0sbjpmdW5jdGlvbigpe3ZhciBlPXIubmV4dCgpO3JldHVybiBpPWUuZG9uZSxlfSxlOmZ1bmN0aW9uKGUpe2w9ITAsbz1lfSxmOmZ1bmN0aW9uKCl7dHJ5e2l8fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX19fSh0LmVudHJpZXMoKSk7dHJ5e2ZvcihuLnMoKTshKHI9bi5uKCkpLmRvbmU7KXt2YXIgYT1PZShyLnZhbHVlLDIpLG89YVswXSxpPWFbMV07aWYoaS5pZD09PWQpcmV0dXJuIHA9aSx0W29dPVBlKHt9LGkpLHRbb107aWYoaS5jb2x1bW5zKXt2YXIgbD1lKGkuY29sdW1ucyk7aWYobClyZXR1cm4gbH19fWNhdGNoKGUpe24uZShlKX1maW5hbGx5e24uZigpfXJldHVybiBudWxsfShyKTtyZXR1cm4gZ3x8KHI9W2c9e31dLmNvbmNhdCh4ZShyKSkpLE9iamVjdC5hc3NpZ24oZyx7aWQ6ZCxhY2Nlc3NvcjpmdW5jdGlvbigpe3JldHVybiIifSxIZWFkZXI6ZnVuY3Rpb24odCl7cmV0dXJuIGUuaGVhZFNlbGVjdG9yLmJpbmQoZSkodCl9LENlbGw6ZnVuY3Rpb24odCl7cmV0dXJuIGUucm93U2VsZWN0b3IuYmluZChlKSh0KX0sQWdncmVnYXRlZDpmdW5jdGlvbih0KXtyZXR1cm4gZS5zdWJSb3dTZWxlY3Rvci5iaW5kKGUpKHQpfSxnZXRQcm9wczpmdW5jdGlvbihlLHQscil7dmFyIG49cC5nZXRQcm9wcz9wLmdldFByb3BzKGUsdCxyKTp7fTtpZighdClyZXR1cm4gbjtpZihyLnBpdm90ZWQmJnQuYWdncmVnYXRlZClyZXR1cm4gbjtpZih0LmFnZ3JlZ2F0ZWQpe2lmKCJyYWRpbyI9PT11KXJldHVybiBuO3ZhciBhPXQuc3ViUm93cztpZighYXx8YS5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4gZS5fYWdncmVnYXRlZH0pKSlyZXR1cm4gbjtuLm9uQ2xpY2s9ZnVuY3Rpb24oKXt2YXIgZT1hLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuX2luZGV4fSkpLHQ9ZS5ldmVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIHMoZSl9KSk7YyhlLCF0KX19ZWxzZSBuLm9uQ2xpY2s9ZnVuY3Rpb24oKXtmKHQuaW5kZXgpfTtyZXR1cm4gbn0sZ2V0SGVhZGVyUHJvcHM6ZnVuY3Rpb24oZSl7dmFyIHQ9e307aWYoInJhZGlvIj09PXUpcmV0dXJuIHQ7dmFyIHI9ZS5zb3J0ZWREYXRhO3JldHVybiFyfHxyLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlLl9hZ2dyZWdhdGVkfSkpfHwodC5vbkNsaWNrPWZ1bmN0aW9uKCl7dmFyIGU9ci5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLl9pbmRleH0pKSx0PWUuZXZlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiBzKGUpfSkpO2MoZSwhdCl9KSx0fSxzZWxlY3RhYmxlOiEwLGZpbHRlcmFibGU6ITEsc29ydGFibGU6ITEscmVzaXphYmxlOiExLGNsYXNzTmFtZTp0ZSgicnQtdGQtc2VsZWN0IixwLmNsYXNzTmFtZSksaGVhZGVyQ2xhc3NOYW1lOnRlKCJydC10ZC1zZWxlY3QiLHAuaGVhZGVyQ2xhc3NOYW1lKSx3aWR0aDpwLndpZHRofHxufSksby5hLmNyZWF0ZUVsZW1lbnQoVnQsd2Uoe3JlZjphfSxpLHtjb2x1bW5zOnJ9KSl9fV0pJiZFZSh0LnByb3RvdHlwZSxyKSxuJiZFZSh0LG4pLGl9KG8uYS5Db21wb25lbnQpKS5kaXNwbGF5TmFtZT0iUlRTZWxlY3RUYWJsZSIsSnQuZGVmYXVsdFByb3BzPXtzZWxlY3RUeXBlOiJjaGVja2JveCIsc2VsZWN0V2lkdGg6MzYsc2VsZWN0SWQ6Ii5zZWxlY3Rpb24iLFNlbGVjdElucHV0Q29tcG9uZW50OnplLFNlbGVjdEFsbElucHV0Q29tcG9uZW50OnplLGxhbmd1YWdlOnF9LG8uYS5mb3J3YXJkUmVmKChmdW5jdGlvbihlLHQpe3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChKdCx3ZSh7fSxlLHtmb3J3YXJkZWRSZWY6dH0pKX0pKSksWHQ9ZnVuY3Rpb24oZSl7bXQocixlKTt2YXIgdD15dChyKTtmdW5jdGlvbiByKCl7cmV0dXJuIHB0KHRoaXMsciksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGh0KHIsW3trZXk6ImNvbXBvbmVudERpZE1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe3dpbmRvdy5TaGlueSYmd2luZG93LlNoaW55LmJpbmRBbGwodGhpcy5lbCl9fSx7a2V5OiJjb21wb25lbnRXaWxsVW5tb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt3aW5kb3cuU2hpbnkmJndpbmRvdy5TaGlueS51bmJpbmRBbGwodGhpcy5lbCl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMscj10LmNoaWxkcmVuLG49dC5odG1sLGE9e3JlZjpmdW5jdGlvbih0KXtyZXR1cm4gZS5lbD10fX07cmV0dXJuIGE9Q3QoQ3Qoe30sYSkse30sbj97ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDpufX06e2NoaWxkcmVuOnJ9KSxvLmEuY3JlYXRlRWxlbWVudCgiZGl2IixhKX19XSkscn0oby5hLkNvbXBvbmVudCksWXQ9ZnVuY3Rpb24oZSl7bXQocixlKTt2YXIgdD15dChyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiBwdCh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLGUpKS5zdGF0ZT17c2VsZWN0ZWQ6bmV3IFNldChlLmRlZmF1bHRTZWxlY3RlZCksZXhwYW5kZWQ6ZS5kZWZhdWx0RXhwYW5kZWR8fHt9LGRhdGE6bnVsbCxkYXRhS2V5Om51bGx9LG4uaXNTZWxlY3RlZD1uLmlzU2VsZWN0ZWQuYmluZCh3dChuKSksbi50b2dnbGVTZWxlY3Rpb249bi50b2dnbGVTZWxlY3Rpb24uYmluZCh3dChuKSksbi50b2dnbGVTZWxlY3Rpb25BbGw9bi50b2dnbGVTZWxlY3Rpb25BbGwuYmluZCh3dChuKSksbi5zZXRTZWxlY3Rpb249bi5zZXRTZWxlY3Rpb24uYmluZCh3dChuKSksbi50b2dnbGVFeHBhbmQ9bi50b2dnbGVFeHBhbmQuYmluZCh3dChuKSksbi50b2dnbGVFeHBhbmRBbGw9bi50b2dnbGVFeHBhbmRBbGwuYmluZCh3dChuKSksbi50b2dnbGVDb2xsYXBzZUFsbD1uLnRvZ2dsZUNvbGxhcHNlQWxsLmJpbmQod3QobikpLG4uaXNFeHBhbmRlZD1uLmlzRXhwYW5kZWQuYmluZCh3dChuKSksbi50YWJsZUluc3RhbmNlPW8uYS5jcmVhdGVSZWYoKSxuLnRhYmxlRWxlbWVudD1vLmEuY3JlYXRlUmVmKCksbn1yZXR1cm4gaHQocixbe2tleToiaXNTZWxlY3RlZCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc3RhdGUuc2VsZWN0ZWQuaGFzKGUpfX0se2tleToidG9nZ2xlU2VsZWN0aW9uIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1uZXcgU2V0KHRoaXMuc3RhdGUuc2VsZWN0ZWQpO3RoaXMuc3RhdGUuc2VsZWN0ZWQuaGFzKGUpP3QuZGVsZXRlKGUpOigic2luZ2xlIj09PXRoaXMucHJvcHMuc2VsZWN0aW9uJiZ0LmNsZWFyKCksdC5hZGQoZSkpLHRoaXMuc2V0U3RhdGUoe3NlbGVjdGVkOnR9LHRoaXMub25TZWxlY3RlZENoYW5nZSl9fSx7a2V5OiJ0b2dnbGVTZWxlY3Rpb25BbGwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9bmV3IFNldCh0aGlzLnN0YXRlLnNlbGVjdGVkKTt0P2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIHIuYWRkKGUpfSkpOmUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIHIuZGVsZXRlKGUpfSkpLHRoaXMuc2V0U3RhdGUoe3NlbGVjdGVkOnJ9LHRoaXMub25TZWxlY3RlZENoYW5nZSl9fSx7a2V5OiJzZXRTZWxlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMscj0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdO3RoaXMuc2V0U3RhdGUoe3NlbGVjdGVkOm5ldyBTZXQoZSl9LChmdW5jdGlvbigpe3JldHVybiB0Lm9uU2VsZWN0ZWRDaGFuZ2Uocil9KSl9fSx7a2V5OiJvblNlbGVjdGVkQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF0sdD10aGlzLnByb3BzLHI9dC5zZWxlY3Rpb24sbj10LnNlbGVjdGlvbklkO2lmKHImJm4mJndpbmRvdy5TaGlueSl7dmFyIGE9c3QodGhpcy5zdGF0ZS5zZWxlY3RlZCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZSsxfSkpO3dpbmRvdy5TaGlueS5vbklucHV0Q2hhbmdlKG4sYSl9ZSYmdGhpcy51cGRhdGVDcm9zc3RhbGtTZWxlY3Rpb24oKX19LHtrZXk6InVwZGF0ZUNyb3NzdGFsa1NlbGVjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKHRoaXMuY3RTZWxlY3Rpb24pe3ZhciB0PXN0KHRoaXMuc3RhdGUuc2VsZWN0ZWQpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUucHJvcHMuY3Jvc3N0YWxrS2V5W3RdfSkpO3RoaXMuY3RTZWxlY3Rpb24uc2V0KHQpfX19LHtrZXk6InRvZ2dsZUV4cGFuZCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj1DdCh7fSx0aGlzLnN0YXRlLmV4cGFuZGVkKTtpZih0KXt2YXIgbj1uZShyLGUubmVzdGluZ1BhdGgpO3I9biYmbj09PXQuaWQ\/YWUocixlLm5lc3RpbmdQYXRoLHZvaWQgMCk6YWUocixlLm5lc3RpbmdQYXRoLHQuaWQpfWVsc2V7dmFyIGE9bmUocixlLm5lc3RpbmdQYXRoKTtyPWFlKHIsZS5uZXN0aW5nUGF0aCxhP3ZvaWQgMDp7fSl9dGhpcy5zZXRTdGF0ZSh7ZXhwYW5kZWQ6cn0pfX0se2tleToiaXNFeHBhbmRlZCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9bmUodGhpcy5zdGF0ZS5leHBhbmRlZCxlLm5lc3RpbmdQYXRoKTtyZXR1cm4gdCYmdD09PWUuY29sdW1uLmlkfX0se2tleToidG9nZ2xlRXhwYW5kQWxsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudGFibGVJbnN0YW5jZS5jdXJyZW50LnN0YXRlLHQ9ZS5jb2x1bW5zLHI9ZS5zb3J0ZWREYXRhLG49dC5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gZS5kZXRhaWxzfSkpLGE9ZnVuY3Rpb24gZSh0KXtyZXR1cm4gdC5yZWR1Y2UoKGZ1bmN0aW9uKHQscixhKXtyZXR1cm4gci5fc3ViUm93cz90W2FdPWUoci5fc3ViUm93cyk6dFthXT1uP24uaWQ6e30sdH0pLHt9KX0ocik7dGhpcy5zZXRTdGF0ZSh7ZXhwYW5kZWQ6YX0pfX0se2tleToidG9nZ2xlQ29sbGFwc2VBbGwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZXRTdGF0ZSh7ZXhwYW5kZWQ6e319KX19LHtrZXk6ImdldFJvd0luZm8iLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIGUmJnRoaXMucHJvcHMuc2VsZWN0aW9uP0N0KHtzZWxlY3RlZDplLnN1YlJvd3MmJiJtdWx0aXBsZSI9PT10aGlzLnByb3BzLnNlbGVjdGlvbj9lLnN1YlJvd3MuZXZlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiB0LmlzU2VsZWN0ZWQoZS5faW5kZXgpfSkpOnRoaXMuaXNTZWxlY3RlZChlLmluZGV4KX0sZSk6ZX19LHtrZXk6Im9uVGFibGVVcGRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7aWYod2luZG93LlNoaW55JiZ3aW5kb3cuU2hpbnkub25JbnB1dENoYW5nZSYmIXRoaXMucHJvcHMubmVzdGVkKXt2YXIgZT10aGlzLnRhYmxlRWxlbWVudC5jdXJyZW50LHQ9dGhpcy50YWJsZUluc3RhbmNlLmN1cnJlbnQ7aWYoIWV8fCF0KXJldHVybjt2YXIgcj1lLnBhcmVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJkYXRhLXJlYWN0YWJsZS1vdXRwdXQiKTtpZighcilyZXR1cm47dmFyIG49e3BhZ2U6dC5zdGF0ZS5wYWdlKzEscGFnZVNpemU6dC5zdGF0ZS5wYWdlU2l6ZSxwYWdlczp0LnN0YXRlLnBhZ2VzLHNlbGVjdGVkOnN0KHRoaXMuc3RhdGUuc2VsZWN0ZWQpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUrMX0pKX07T2JqZWN0LmtleXMobikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7d2luZG93LlNoaW55Lm9uSW5wdXRDaGFuZ2UoIiIuY29uY2F0KHIsIl9fcmVhY3RhYmxlX18iKS5jb25jYXQoZSksbltlXSl9KSl9fX0se2tleToiY29tcG9uZW50RGlkTW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZih0aGlzLnN0YXRlLnNlbGVjdGVkLnNpemU+MCYmdGhpcy5vblNlbGVjdGVkQ2hhbmdlKCksITA9PT10aGlzLnN0YXRlLmV4cGFuZGVkJiZ0aGlzLnRvZ2dsZUV4cGFuZEFsbCgpLHdpbmRvdy5TaGlueSYmIXRoaXMucHJvcHMubmVzdGVkKXt2YXIgdD10aGlzLnRhYmxlRWxlbWVudC5jdXJyZW50LnBhcmVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJkYXRhLXJlYWN0YWJsZS1vdXRwdXQiKTtpZih0KXt3aW5kb3cuU2hpbnkuYWRkQ3VzdG9tTWVzc2FnZUhhbmRsZXIoIl9fcmVhY3RhYmxlX18iLmNvbmNhdCh0KSwoZnVuY3Rpb24odCl7bnVsbCE9dC5kYXRhJiZlLnNldFN0YXRlKHtkYXRhOnQuZGF0YSxkYXRhS2V5OnQuZGF0YUtleX0pLG51bGwhPXQuc2VsZWN0ZWQmJmUuc2V0U2VsZWN0aW9uKHQuc2VsZWN0ZWQpLG51bGwhPXQucGFnZSYmZS50YWJsZUluc3RhbmNlLmN1cnJlbnQub25QYWdlQ2hhbmdlKHQucGFnZSksbnVsbCE9dC5leHBhbmRlZCYmKHQuZXhwYW5kZWQ\/ZS50b2dnbGVFeHBhbmRBbGwoKTplLnRvZ2dsZUNvbGxhcHNlQWxsKCkpfSkpfX10aGlzLm9uVGFibGVVcGRhdGUoKTt2YXIgcj10aGlzLnByb3BzLmNyb3NzdGFsa0dyb3VwO2lmKHImJndpbmRvdy5jcm9zc3RhbGspe3RoaXMuY3RTZWxlY3Rpb249bmV3IHdpbmRvdy5jcm9zc3RhbGsuU2VsZWN0aW9uSGFuZGxlKHIpLHRoaXMuY3RGaWx0ZXI9bmV3IHdpbmRvdy5jcm9zc3RhbGsuRmlsdGVySGFuZGxlKHIpLHRoaXMuY3RTZWxlY3RlZD10aGlzLmN0U2VsZWN0aW9uLnZhbHVlLHRoaXMuY3RGaWx0ZXJlZD10aGlzLmN0RmlsdGVyLmZpbHRlcmVkS2V5czt2YXIgbj0odGhpcy5wcm9wcy5jcm9zc3RhbGtLZXl8fFtdKS5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZVt0XT1yLGV9KSx7fSksYT10aGlzLnRhYmxlSW5zdGFuY2UuY3VycmVudCxvPXtpZDphLnByb3BzLmNyb3NzdGFsa0lkfSxpPWZ1bmN0aW9uKCl7dmFyIHQscj1lLmN0U2VsZWN0ZWQmJmUuY3RTZWxlY3RlZC5sZW5ndGg+MD9lLmN0U2VsZWN0ZWQ6bnVsbCxpPWUuY3RGaWx0ZXJlZCxsPSh0PXJ8fGk\/cj9pP3IuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gaS5pbmNsdWRlcyhlKX0pKTpyOmk6bnVsbCk\/dC5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBuW2VdfSkpOm51bGw7YS5maWx0ZXJDb2x1bW4obyxsKX0sbD1mdW5jdGlvbih0KXtlLmN0U2VsZWN0ZWQhPT10JiYoZS5jdFNlbGVjdGVkPXQsaSgpKX07dGhpcy5jdFNlbGVjdGlvbi5vbigiY2hhbmdlIiwoZnVuY3Rpb24odCl7dC5zZW5kZXIhPT1lLmN0U2VsZWN0aW9uPyhsKHQudmFsdWUpLGUuc2V0U2VsZWN0aW9uKFtdLCExKSk6bChudWxsKX0pKSx0aGlzLmN0RmlsdGVyLm9uKCJjaGFuZ2UiLChmdW5jdGlvbih0KXt2YXIgcjt0LnNlbmRlciE9PWUuY3RGaWx0ZXImJihyPXQudmFsdWUsZS5jdEZpbHRlcmVkIT09ciYmKGUuY3RGaWx0ZXJlZD1yLGkoKSkpfSkpLGkoKSx0aGlzLnByb3BzLmRlZmF1bHRTZWxlY3RlZCYmdGhpcy51cGRhdGVDcm9zc3RhbGtTZWxlY3Rpb24oKX19fSx7a2V5OiJjb21wb25lbnREaWRVcGRhdGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMscj10LmRlZmF1bHRTZWxlY3RlZCxuPXQuZGVmYXVsdEV4cGFuZGVkO2lmKGUuZGVmYXVsdFNlbGVjdGVkIT09ciYmdGhpcy5zZXRTZWxlY3Rpb24ociksZS5kZWZhdWx0RXhwYW5kZWQhPT1uKWlmKCEwPT09bil0aGlzLnRvZ2dsZUV4cGFuZEFsbCgpO2Vsc2V7dmFyIGE9bnx8e307dGhpcy5zZXRTdGF0ZSh7ZXhwYW5kZWQ6YX0pfX19LHtrZXk6ImNvbXBvbmVudFdpbGxVbm1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY3RTZWxlY3Rpb24mJnRoaXMuY3RTZWxlY3Rpb24uY2xvc2UoKSx0aGlzLmN0RmlsdGVyJiZ0aGlzLmN0RmlsdGVyLmNsb3NlKCl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMscz10LmRhdGEsdT10LmNvbHVtbnMsYz10LmNvbHVtbkdyb3VwcyxmPXQucGl2b3RCeSxkPXQuc29ydGFibGUscD10LnJlc2l6YWJsZSxnPXQuZmlsdGVyYWJsZSxoPXQuc2VhcmNoYWJsZSxtPXQuZGVmYXVsdFNvcnREZXNjLGI9dC5kZWZhdWx0U29ydGVkLHk9dC5kZWZhdWx0UGFnZVNpemUsdj10LnBhZ2VTaXplT3B0aW9ucyx3PXQucGFnaW5hdGlvblR5cGUseD10LnNob3dQYWdpbmF0aW9uLFM9dC5zaG93UGFnZVNpemVPcHRpb25zLFA9dC5zaG93UGFnZUluZm8sQz10Lm1pblJvd3MsTz10LnNlbGVjdGlvbixrPXQub25DbGljayxUPXQub3V0bGluZWQsaj10LmJvcmRlcmVkLEU9dC5ib3JkZXJsZXNzLFI9dC5zdHJpcGVkLE49dC5oaWdobGlnaHQsQT10LmNvbXBhY3QsRD10Lm5vd3JhcCx6PXQuc2hvd1NvcnRJY29uLF89dC5zaG93U29ydGFibGUsRj10LmNsYXNzTmFtZSxNPXQuc3R5bGUsST10LnJvd0NsYXNzTmFtZSxMPXQucm93U3R5bGUsVz10LmlubGluZSxLPXQud2lkdGgsQj10LmhlaWdodCxIPXQubGFuZ3VhZ2UsRz10LmNyb3NzdGFsa0dyb3VwLFY9dC5jcm9zc3RhbGtLZXksJD10LmRhdGFLZXksWD10LnRoZW1lO2Zvcih2YXIgWSBpbiBGPXRlKEYsSigoWD1VKFgpfHx7fSkuc3R5bGUpKSxIPUN0KEN0KHt9LHEpLEgpKUhbWV09SFtZXXx8bnVsbDtzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1PYmplY3Qua2V5cyhlKSxyPW5ldyBBcnJheShlW3RbMF1dLmxlbmd0aCksbj0wO248ci5sZW5ndGg7bisrKXtyW25dPXt9O3ZhciBhLG89dHQodCk7dHJ5e2ZvcihvLnMoKTshKGE9by5uKCkpLmRvbmU7KXt2YXIgaT1hLnZhbHVlO3Jbbl1baV09ZVtpXVtuXX19Y2F0Y2goZSl7by5lKGUpfWZpbmFsbHl7by5mKCl9fXJldHVybiByfSh0aGlzLnN0YXRlLmRhdGF8fHMpLHU9ZnVuY3Rpb24oZSx0KXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e30sbD1yLnNvcnRhYmxlLHM9ci5zaG93U29ydEljb24sdT1yLnNob3dTb3J0YWJsZSxjPXIuaXNFeHBhbmRlZCxmPXIub25FeHBhbmRlckNsaWNrLGQ9ci50aGVtZSxwPXIubGFuZ3VhZ2U7cmV0dXJuIGU9ZS5tYXAoKGZ1bmN0aW9uKGUpe3ZhciB0PVFlKHt9LGUpO2lmKHQuaWQ9dC5hY2Nlc3Nvcix0LmFjY2Vzc29yLmluY2x1ZGVzKCIuIikmJih0LmFjY2Vzc29yPWZ1bmN0aW9uKGUpe3JldHVybiBlW3QuaWRdfSksInN0cmluZyI9PXR5cGVvZiB0LmFnZ3JlZ2F0ZSYmSmVbdC5hZ2dyZWdhdGVdKXt2YXIgcj10LmFnZ3JlZ2F0ZTt0LmFnZ3JlZ2F0ZT1KZVtyXX10LnNvcnRNZXRob2Q9YXQoe3R5cGU6dC50eXBlLG5hTGFzdDp0LnNvcnROQUxhc3R9KSx0LmZpbHRlckFsbD0hMCwibnVtZXJpYyI9PT10LnR5cGU\/dC5jcmVhdGVNYXRjaGVyPWl0OnQuY3JlYXRlTWF0Y2hlcj1sdCx0LmZpbHRlck1ldGhvZD1mdW5jdGlvbihlLHIpe3ZhciBuPWUuaWQsYT10LmNyZWF0ZU1hdGNoZXIoZS52YWx1ZSk7cmV0dXJuIHIuZmlsdGVyKChmdW5jdGlvbihlKXt2YXIgdD1lW25dO3JldHVybiB2b2lkIDA9PT10fHwoISFlLl9zdWJSb3dzfHxhKHQpKX0pKX0sIm51bWVyaWMiPT09dC50eXBlP3QuYWxpZ249dC5hbGlnbnx8InJpZ2h0Ijp0LmFsaWduPXQuYWxpZ258fCJsZWZ0Iix0LkNlbGw9ZnVuY3Rpb24oZSl7dmFyIHIsbCxzPWUudmFsdWUsdT1udWxsPT1zfHwibnVtZXJpYyI9PT10LnR5cGUmJlllKHMpO3JldHVybiB1JiYocz10Lm5hKSwhdSYmdC5mb3JtYXQmJnQuZm9ybWF0LmNlbGwmJihzPW90KHMsdC5mb3JtYXQuY2VsbCkpLHQuY2VsbCYmKCJmdW5jdGlvbiI9PXR5cGVvZiB0LmNlbGwmJihzPXQuY2VsbChRZShRZSh7fSxlKSx7fSx7dmFsdWU6c30pKSksdC5jZWxsIGluc3RhbmNlb2YgQXJyYXkmJiFlLmFnZ3JlZ2F0ZWQmJihzPXQuY2VsbFtlLmluZGV4XSkmJihzPU9iamVjdChuLmh5ZHJhdGUpKHtGcmFnbWVudDphLkZyYWdtZW50LFdpZGdldENvbnRhaW5lcjpCZX0sdC5jZWxsW2UuaW5kZXhdKSkpLG51bGwhPXMmJiIiIT09c3x8KHM9IuKAiyIpLHI9by5hLmlzVmFsaWRFbGVtZW50KHMpP3M6dC5odG1sP28uYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtzdHlsZTp7ZGlzcGxheToiaW5saW5lIn0sZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDpzfX0pOlN0cmluZyhzKSx0LmRldGFpbHMmJih0LmRldGFpbHMgaW5zdGFuY2VvZiBBcnJheSYmbnVsbD09dC5kZXRhaWxzW2UuaW5kZXhdfHwobD1pLlJlYWN0VGFibGVEZWZhdWx0cy5FeHBhbmRlckNvbXBvbmVudChRZShRZSh7fSxlKSx7fSx7aXNFeHBhbmRlZDpjKGUpfSkpKSksbD9vLmEuY3JlYXRlRWxlbWVudChvLmEuRnJhZ21lbnQsbnVsbCxsLHIpOnJ9LHQuUGl2b3RWYWx1ZT1mdW5jdGlvbihlKXt2YXIgcj10LkNlbGwoZSk7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KCJzcGFuIixudWxsLHIsIiAiLGUuc3ViUm93cyYmIigiLmNvbmNhdChlLnN1YlJvd3MubGVuZ3RoLCIpIikpfSx0LkFnZ3JlZ2F0ZWQ9ZnVuY3Rpb24oZSl7dmFyIHI9bnVsbCE9ZS52YWx1ZT9lLnZhbHVlOiIiO3JldHVybiB0LmZvcm1hdCYmdC5mb3JtYXQuYWdncmVnYXRlZCYmKHI9b3Qocix0LmZvcm1hdC5hZ2dyZWdhdGVkKSksdC5hZ2dyZWdhdGVkJiYocj10LmFnZ3JlZ2F0ZWQoUWUoUWUoe30sZSkse30se3ZhbHVlOnJ9KSkpLHQuaHRtbD9vLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDpyfX0pOnJ9LHQuSGVhZGVyPWZ1bmN0aW9uKGUpe3ZhciByLGk9dC5uYW1lO2lmKHQuaGVhZGVyJiYoaT0iZnVuY3Rpb24iPT10eXBlb2YgdC5oZWFkZXI\/dC5oZWFkZXIoZSk6T2JqZWN0KG4uaHlkcmF0ZSkoe0ZyYWdtZW50OmEuRnJhZ21lbnQsV2lkZ2V0Q29udGFpbmVyOkJlfSx0LmhlYWRlcikpLHI9by5hLmlzVmFsaWRFbGVtZW50KGkpP28uYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6InJ0LXRoLWNvbnRlbnQifSxpKTp0Lmh0bWw\/by5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicnQtdGgtY29udGVudCIsZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDppfX0pOm8uYS5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJydC10aC1jb250ZW50In0sbnVsbCE9aT9TdHJpbmcoaSk6IiIpLHJlKHQuc29ydGFibGUsbCkmJnMpe3ZhciBjPXU\/InJ0LXNvcnQiOiIiO3JldHVybiJyaWdodCI9PT10LmFsaWduP28uYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6InJ0LXNvcnQtaGVhZGVyIn0sby5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtjbGFzc05hbWU6dGUoYywicnQtc29ydC1sZWZ0IiksImFyaWEtaGlkZGVuIjoidHJ1ZSJ9KSxyKTpvLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJydC1zb3J0LWhlYWRlciJ9LHIsby5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtjbGFzc05hbWU6dGUoYywicnQtc29ydC1yaWdodCIpLCJhcmlhLWhpZGRlbiI6InRydWUifSkpfXJldHVybiByfSx0LmZvb3RlciYmKHQuRm9vdGVyPWZ1bmN0aW9uKGUpe3ZhciByO3JldHVybiByPSJmdW5jdGlvbiI9PXR5cGVvZiB0LmZvb3Rlcj90LmZvb3RlcihlKTpPYmplY3Qobi5oeWRyYXRlKSh7RnJhZ21lbnQ6YS5GcmFnbWVudCxXaWRnZXRDb250YWluZXI6QmV9LHQuZm9vdGVyKSxvLmEuaXNWYWxpZEVsZW1lbnQocik\/cjp0Lmh0bWw\/by5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6cn19KTpudWxsIT1yP1N0cmluZyhyKToiIn0pO3ZhciBnPSJydC1hbGlnbi0iLmNvbmNhdCh0LmFsaWduKTt0LmhlYWRlckNsYXNzTmFtZT10ZShnLHQuaGVhZGVyQ2xhc3NOYW1lKSx0LmZvb3RlckNsYXNzTmFtZT10ZShnLHQuZm9vdGVyQ2xhc3NOYW1lKTt2YXIgaD10LmNsYXNzTmFtZSxtPXQuc3R5bGU7cmV0dXJuIHQuY2xhc3NOYW1lPXZvaWQgMCx0LnN0eWxlPXZvaWQgMCx0LmdldFByb3BzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbixhLG89e307aWYoIXQpcmV0dXJuIG87KG49ImZ1bmN0aW9uIj09dHlwZW9mIGg\/aCh0LHIsZSk6aCBpbnN0YW5jZW9mIEFycmF5P2hbdC5pbmRleF06aCxvLmNsYXNzTmFtZT10ZShnLG4pLG0pJiYoKGE9ImZ1bmN0aW9uIj09dHlwZW9mIG0\/bSh0LHIsZSk6bSBpbnN0YW5jZW9mIEFycmF5P21bdC5pbmRleF06bSkmJihvLnN0eWxlPWEpKTtyZXR1cm4gci5kZXRhaWxzJiYoci5kZXRhaWxzIGluc3RhbmNlb2YgQXJyYXkmJm51bGw9PXIuZGV0YWlsc1t0LmluZGV4XXx8dC5hZ2dyZWdhdGVkfHwoby5jbGFzc05hbWU9dGUoInJ0LWV4cGFuZGFibGUiLG8uY2xhc3NOYW1lKSxudWxsPT10LnJvd1tyLmlkXSYmKG8uc3R5bGU9UWUoUWUoe30sby5zdHlsZSkse30se3RleHRPdmVyZmxvdzoiaW5oZXJpdCJ9KSksby5vbkNsaWNrPWZ1bmN0aW9uKGUsbil7Zih0LHIpLG4mJm4oKX0pKSxvfSx0LnRoZW1lPWQsdC5sYW5ndWFnZT1wLHR9KSksdCYmKGU9bnQoZSx0KSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7KG51bGwhPWUubmFtZXx8ZS5oZWFkZXIpJiYoZS5IZWFkZXI9ZnVuY3Rpb24odCl7dmFyIHI9ZS5uYW1lO3JldHVybiBlLmhlYWRlciYmKHI9ImZ1bmN0aW9uIj09dHlwZW9mIGUuaGVhZGVyP2UuaGVhZGVyKHQpOk9iamVjdChuLmh5ZHJhdGUpKHtGcmFnbWVudDphLkZyYWdtZW50LFdpZGdldENvbnRhaW5lcjpCZX0sZS5oZWFkZXIpKSxvLmEuaXNWYWxpZEVsZW1lbnQocik\/cjplLmh0bWw\/by5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6cn19KTpudWxsIT1yP1N0cmluZyhyKToiIn0pLGUuYWxpZ249ZS5hbGlnbnx8ImNlbnRlciIsZS5oZWFkZXJDbGFzc05hbWU9dGUoInJ0LWFsaWduLSIuY29uY2F0KGUuYWxpZ24pLGUuaGVhZGVyQ2xhc3NOYW1lKX0pKSxlfSh1LGMse3NvcnRhYmxlOmQsc2hvd1NvcnRJY29uOnosc2hvd1NvcnRhYmxlOl8saXNFeHBhbmRlZDp0aGlzLmlzRXhwYW5kZWQsb25FeHBhbmRlckNsaWNrOnRoaXMudG9nZ2xlRXhwYW5kLHRoZW1lOlgsbGFuZ3VhZ2U6SH0pLG51bGwhPUMmJihDPU1hdGgubWF4KEMsMSkpLEY9dGUoRixUPyJydC1vdXRsaW5lZCI6IiIsaj8icnQtYm9yZGVyZWQiOiIiLEU\/InJ0LWJvcmRlcmxlc3MiOiIiLEE\/InJ0LWNvbXBhY3QiOiIiLFc\/IiBydC1pbmxpbmUiOiIiLEQ\/InJ0LW5vd3JhcCI6IiIpLE09Q3Qoe3dpZHRoOkssaGVpZ2h0OkJ9LE0pO3ZhciBaPWwuYSxRPXt9O08mJihaPXF0LFE9e2lzU2VsZWN0ZWQ6dGhpcy5pc1NlbGVjdGVkLHRvZ2dsZVNlbGVjdGlvbjp0aGlzLnRvZ2dsZVNlbGVjdGlvbix0b2dnbGVBbGw6dGhpcy50b2dnbGVTZWxlY3Rpb25BbGwsc2VsZWN0VHlwZToibXVsdGlwbGUiPT09Tz8iY2hlY2tib3giOiJyYWRpbyJ9KTt2YXIgZWU9bnVsbD09eCxhZT16dDsoUnx8Tnx8T3x8SXx8TCkmJihhZT1mdW5jdGlvbih0LHIpe3I9ZS5nZXRSb3dJbmZvKHIpO3ZhciBuLGE9enQodCxyKTsoUiYmciYmKGEuY2xhc3NOYW1lPXRlKGEuY2xhc3NOYW1lLHIudmlld0luZGV4JTI\/bnVsbDoicnQtdHItc3RyaXBlZCIpKSxOJiZyJiYoYS5jbGFzc05hbWU9dGUoYS5jbGFzc05hbWUsInJ0LXRyLWhpZ2hsaWdodCIpKSxyJiZyLnNlbGVjdGVkJiYoYS5jbGFzc05hbWU9dGUoYS5jbGFzc05hbWUsInJ0LXRyLXNlbGVjdGVkIikpLEkpJiYobj0iZnVuY3Rpb24iPT10eXBlb2YgST9JKHIsdCk6SSBpbnN0YW5jZW9mIEFycmF5P3ImJklbci5pbmRleF06SSxhLmNsYXNzTmFtZT10ZShhLmNsYXNzTmFtZSxuKSk7cmV0dXJuIEwmJihhLnN0eWxlPSJmdW5jdGlvbiI9PXR5cGVvZiBMP0wocix0KTpMIGluc3RhbmNlb2YgQXJyYXk\/ciYmTFtyLmluZGV4XTpMKSxhfSk7dmFyIG9lLGllPXUucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbmNhdCh0LmNvbHVtbnM\/dC5jb2x1bW5zOnQpfSksW10pO2llLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRldGFpbHN9KSk\/KG9lPWZ1bmN0aW9uKHQpe3ZhciBpPW5lKGUuc3RhdGUuZXhwYW5kZWQsdC5uZXN0aW5nUGF0aCksbD1pZS5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gZS5pZD09PWl9KSk7aWYoIWwpcmV0dXJuIG51bGw7dmFyIHM9bC5kZXRhaWxzLHU9bC5odG1sLGM9e307aWYoImZ1bmN0aW9uIj09dHlwZW9mIHMpe3ZhciBmPXMoZS5nZXRSb3dJbmZvKHQpKTt1JiYoYy5odG1sPWYpLGMuY2hpbGRyZW49Zn1lbHNlIGlmKHMgaW5zdGFuY2VvZiBBcnJheSl7dmFyIGQ9c1t0LmluZGV4XTtpZihudWxsPT1kKXJldHVybiBudWxsO3UmJihjLmh0bWw9ZCksYy5jaGlsZHJlbj1PYmplY3Qobi5oeWRyYXRlKSh7UmVhY3RhYmxlOnIsRnJhZ21lbnQ6YS5GcmFnbWVudCxXaWRnZXRDb250YWluZXI6QmV9LGQpfXJldHVybiBvLmEuY3JlYXRlRWxlbWVudChYdCxTdCh7a2V5OiIiLmNvbmNhdChpLCItIikuY29uY2F0KHQuaW5kZXgpfSxjKSl9LHU9W3tleHBhbmRlcjohMCxzaG93OiExfV0uY29uY2F0KHN0KHUpKSk6b2U9bnVsbDt2YXIgbGUsc2U9ZnVuY3Rpb24oKXtPYmplY3Qua2V5cyhlLnN0YXRlLmV4cGFuZGVkKS5sZW5ndGg+MCYmZS5zZXRTdGF0ZSh7ZXhwYW5kZWQ6e319KX0sdWU9X3Q7ayYmKCJzZWxlY3QiPT09az9rPWZ1bmN0aW9uKHQscil7aWYodCYmKCFyLnBpdm90ZWR8fCF0LmFnZ3JlZ2F0ZWQpKWlmKHQuYWdncmVnYXRlZCl7aWYoInNpbmdsZSI9PT1PKXJldHVybjt2YXIgbj10LnN1YlJvd3M7aWYoIW58fG4uc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuX2FnZ3JlZ2F0ZWR9KSkpcmV0dXJuIG51bGw7dmFyIGE9bi5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLl9pbmRleH0pKSxvPWEuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmlzU2VsZWN0ZWQodCl9KSk7ZS50b2dnbGVTZWxlY3Rpb25BbGwoYSwhbyl9ZWxzZSBlLnRvZ2dsZVNlbGVjdGlvbih0LmluZGV4KX06ImV4cGFuZCI9PT1rJiYoaz1mdW5jdGlvbih0LHIpe2lmKHQpe3ZhciBuPWllLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRldGFpbHN9KSk7aWYodC5hZ2dyZWdhdGVkKXIucGl2b3RlZHx8ZS50b2dnbGVFeHBhbmQodCk7ZWxzZSBpZihuKXt2YXIgYT1uLmRldGFpbHM7aWYoYSBpbnN0YW5jZW9mIEFycmF5JiZudWxsPT1hW3QuaW5kZXhdKXJldHVybjtlLnRvZ2dsZUV4cGFuZCh0LG4pfX19KSx1ZT1mdW5jdGlvbihlLHQscil7cmV0dXJuIEN0KEN0KHt9LF90KGUsdCkpLHt9LHtvbkNsaWNrOmZ1bmN0aW9uKG4sYSl7ayh0LHIsZSksYSYmYSgpfX0pfSk7dmFyIGNlPWt0O3JldHVybiBoJiYobGU9JHQsY2U9ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGE9ZS5maWx0ZXJlZC5maW5kKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZD09PWUuc2VhcmNoS2V5fSkpLG89YT9hLnZhbHVlOiIiO3JldHVybiBDdChDdCh7fSxrdChlKSkse30se3NlYXJjaFZhbHVlOm8sb25TZWFyY2hDaGFuZ2U6ZnVuY3Rpb24odCl7bi5maWx0ZXJDb2x1bW4oe2lkOmUuc2VhcmNoS2V5fSx0LnRhcmdldC52YWx1ZSl9LHNlYXJjaFBsYWNlaG9sZGVyOmUubGFuZ3VhZ2Uuc2VhcmNoUGxhY2Vob2xkZXIsc2VhcmNoTGFiZWw6ZS5sYW5ndWFnZS5zZWFyY2hMYWJlbCxzZWFyY2hDbGFzc05hbWU6SihlLnRoZW1lLnNlYXJjaElucHV0U3R5bGUpfSl9KSxvLmEuY3JlYXRlRWxlbWVudChaLFN0KHtkYXRhOnMsY29sdW1uczp1LHBpdm90Qnk6Znx8W10sc29ydGFibGU6ZCxyZXNpemFibGU6cCxmaWx0ZXJhYmxlOmcsc2VhcmNoYWJsZTpoLHNlYXJjaEtleToiX19zZWFyY2hfXyIsZGVmYXVsdFNvcnREZXNjOm0sZGVmYXVsdFNvcnRlZDpiLGRlZmF1bHRQYWdlU2l6ZTp5LHBhZ2VTaXplT3B0aW9uczp2LHNob3dQYWdpbmF0aW9uOngsc2hvd1BhZ2VTaXplT3B0aW9uczpTLFBhZ2luYXRpb25Db21wb25lbnQ6eWUscGFnaW5hdGlvblR5cGU6dyxhdXRvSGlkZVBhZ2luYXRpb246ZWUsc2hvd1BhZ2VJbmZvOlAsbWluUm93czpDLGNvbGxhcHNlT25Tb3J0aW5nQ2hhbmdlOiEwLGNvbGxhcHNlT25QYWdlQ2hhbmdlOiEwLGNvbGxhcHNlT25EYXRhQ2hhbmdlOiExLGNsYXNzTmFtZTpGLHN0eWxlOk0sZXhwYW5kZWQ6dGhpcy5zdGF0ZS5leHBhbmRlZCxvbkV4cGFuZGVkQ2hhbmdlOmZ1bmN0aW9uKHQpe2Uuc2V0U3RhdGUoe2V4cGFuZGVkOnR9KX0sb25QYWdlQ2hhbmdlOnNlLG9uU29ydGVkQ2hhbmdlOnNlLGdldFRhYmxlUHJvcHM6Y2UsZ2V0VGhlYWRHcm91cFRyUHJvcHM6RXQsZ2V0VGhlYWRHcm91cFRoUHJvcHM6anQsZ2V0VGhlYWRUclByb3BzOlJ0LGdldFRoZWFkVGhQcm9wczpUdCxnZXRUaGVhZEZpbHRlclRyUHJvcHM6TnQsZ2V0VGhlYWRGaWx0ZXJUaFByb3BzOkF0LGdldFRib2R5UHJvcHM6QnQsZ2V0VHJHcm91cFByb3BzOkR0LGdldFRyUHJvcHM6YWUsZ2V0VGRQcm9wczp1ZSxnZXRUZm9vdFRyUHJvcHM6RnQsZ2V0VGZvb3RUZFByb3BzOk10LFRhYmxlQ29tcG9uZW50OmxlLFN1YkNvbXBvbmVudDpvZX0sUSx7dGhlbWU6WCxsYW5ndWFnZTpILGNyb3NzdGFsa0dyb3VwOkcsY3Jvc3N0YWxrS2V5OlYsY3Jvc3N0YWxrSWQ6Il9fY3Jvc3N0YWxrX18iLGtleToiIi5jb25jYXQoeSksZGF0YUtleTp0aGlzLnN0YXRlLmRhdGFLZXl8fCQscmVmOnRoaXMudGFibGVJbnN0YW5jZSxnZXRQcm9wczpmdW5jdGlvbigpe3JldHVybiBlLm9uVGFibGVVcGRhdGUoKSx7cmVmOmUudGFibGVFbGVtZW50LG9uTW91c2VEb3duOmZ1bmN0aW9uKCl7ZS50YWJsZUVsZW1lbnQuY3VycmVudC5jbGFzc0xpc3QucmVtb3ZlKCJydC1rZXlib2FyZC1hY3RpdmUiKX0sb25LZXlEb3duOmZ1bmN0aW9uKCl7ZS50YWJsZUVsZW1lbnQuY3VycmVudC5jbGFzc0xpc3QuYWRkKCJydC1rZXlib2FyZC1hY3RpdmUiKX0sb25LZXlVcDpmdW5jdGlvbih0KXs5PT09KHQud2hpY2h8fHQua2V5Q29kZSkmJmUudGFibGVFbGVtZW50LmN1cnJlbnQuY2xhc3NMaXN0LmFkZCgicnQta2V5Ym9hcmQtYWN0aXZlIil9fX19KSl9fV0pLHJ9KG8uYS5Db21wb25lbnQpO1l0LmRlZmF1bHRQcm9wcz17c29ydGFibGU6ITAscmVzaXphYmxlOiExLHNob3dQYWdlU2l6ZU9wdGlvbnM6ITEsc2hvd1NvcnRJY29uOiEwfTt2YXIgWnQ9WXQ7T2JqZWN0KG4ucmVhY3RXaWRnZXQpKCJyZWFjdGFibGUiLCJvdXRwdXQiLHtSZWFjdGFibGU6WnR9KX1dKTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVhY3RhYmxlLmpzLm1hcA==\"><\/script><\/p>\n<style type=\"text\/css\">\n  code{white-space: pre-wrap;}<br \/>  span.smallcaps{font-variant: small-caps;}<br \/>  span.underline{text-decoration: underline;}<br \/>  div.column{display: inline-block; vertical-align: top; width: 50%;}<br \/>  div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}<br \/>  ul.task-list{list-style: none;}<br \/>    <\/style>\n<style type=\"text\/css\">code{white-space: pre;}<\/style>\n<p><script type=\"text\/javascript\">\nif (window.hljs) {\n  hljs.configure({languages: []});\n  hljs.initHighlightingOnLoad();\n  if (document.readyState && document.readyState === \"complete\") {\n    window.setTimeout(function() { hljs.initHighlighting(); }, 0);\n  }\n}\n<\/script><\/p>\n<style type=\"text\/css\">\n.main-container {<br \/>  max-width: 940px;<br \/>  margin-left: auto;<br \/>  margin-right: auto;<br \/>}<br \/>img {<br \/>  max-width:100%;<br \/>}<br \/>.tabbed-pane {<br \/>  padding-top: 12px;<br \/>}<br \/>.html-widget {<br \/>  margin-bottom: 20px;<br \/>}<br \/>button.code-folding-btn:focus {<br \/>  outline: none;<br \/>}<br \/>summary {<br \/>  display: list-item;<br \/>}<br \/>pre code {<br \/>  padding: 0;<br \/>}<br \/><\/style>\n<style type=\"text\/css\">\n.tabset-dropdown > .nav-tabs {<br \/>  display: inline-table;<br \/>  max-height: 500px;<br \/>  min-height: 44px;<br \/>  overflow-y: auto;<br \/>  border: 1px solid #ddd;<br \/>  border-radius: 4px;<br \/>}<\/p>\n<p>.tabset-dropdown > .nav-tabs > li.active:before {<br \/>  content: \"\ue259\";<br \/>  font-family: 'Glyphicons Halflings';<br \/>  display: inline-block;<br \/>  padding: 10px;<br \/>  border-right: 1px solid #ddd;<br \/>}<\/p>\n<p>.tabset-dropdown > .nav-tabs.nav-tabs-open > li.active:before {<br \/>  content: \"\ue258\";<br \/>  border: none;<br \/>}<\/p>\n<p>.tabset-dropdown > .nav-tabs.nav-tabs-open:before {<br \/>  content: \"\ue259\";<br \/>  font-family: 'Glyphicons Halflings';<br \/>  display: inline-block;<br \/>  padding: 10px;<br \/>  border-right: 1px solid #ddd;<br \/>}<\/p>\n<p>.tabset-dropdown > .nav-tabs > li.active {<br \/>  display: block;<br \/>}<\/p>\n<p>.tabset-dropdown > .nav-tabs > li > a,<br \/>.tabset-dropdown > .nav-tabs > li > a:focus,<br \/>.tabset-dropdown > .nav-tabs > li > a:hover {<br \/>  border: none;<br \/>  display: inline-block;<br \/>  border-radius: 4px;<br \/>  background-color: transparent;<br \/>}<\/p>\n<p>.tabset-dropdown > .nav-tabs.nav-tabs-open > li {<br \/>  display: block;<br \/>  float: none;<br \/>}<\/p>\n<p>.tabset-dropdown > .nav-tabs > li {<br \/>  display: none;<br \/>}<br \/><\/style>\n<p><!-- tabsets --><\/p>\n<p><!-- code folding --><\/p>\n<p><em>The following statistics were calculated by <a href=\"https:\/\/github.com\/jdjohn215\/Milwaukee-Geo-Crosswalks\">aggregating<\/a> 2020 census blocks into <a href=\"https:\/\/emke.uwm.edu\/entry\/neighborhoods\/\">Milwaukee neighborhoods<\/a>. Because of data quality concerns stemming from the Census Bureau\u2019s new differential privacy techniques, I do not present data for neighborhoods with fewer than 400 residents.<\/em><\/p>\n<div class=\"container-fluid main-container\">\n<p>The 2020 Census reconfirmed Milwaukee\u2019s status as one of the most segregated cities and metropolitan areas in the United States.<\/p>\n<p>According to Brown University\u2019s <a href=\"https:\/\/s4.ad.brown.edu\/projects\/diversity\/SegCitySorting2020\/Default.aspx\">Diversity and Disparities Project<\/a>, metro-wide Black-white segregation declined slightly, but the Milwaukee metro still ranks 2nd-most segregated, just as in 2010. Within city limits, the absolute degree of Black-white segregation measured by Brown University remained unchanged, and segregation between other groups declined only modestly.<\/p>\n<p>These dismal statistics point to how far Milwaukee remains from being a fair place to live for most of its residents. Still, there are neighborhoods in Milwaukee that saw significant positive change over the last decade. Their populations grew more representative of the city as a whole.<\/p>\n<p>One way to measure this is a \u201cdiversity index,\u201d which shows the likelihood that two people randomly chosen from the same neighborhood would identify with different races. <!--more--> The diversity index increased in over 2\/3 of Milwaukee neighborhoods during the past decade. I calculated that the diversity index exceeds 50% in 83 of Milwaukee\u2019s 164 neighborhoods with at least 400 residents. In 2010, just 49 neighborhoods met this threshold. Over a dozen Milwaukee neighborhoods in 2020 had <em>no<\/em> racial or ethnic majority group.<\/p>\n<div class=\"figure\">\n<p><img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAA2AAAAPACAYAAABTjhpKAAAEDmlDQ1BrQ0dDb2xvclNwYWNlR2VuZXJpY1JHQgAAOI2NVV1oHFUUPpu5syskzoPUpqaSDv41lLRsUtGE2uj+ZbNt3CyTbLRBkMns3Z1pJjPj\/KRpKT4UQRDBqOCT4P9bwSchaqvtiy2itFCiBIMo+ND6R6HSFwnruTOzu5O4a73L3PnmnO9+595z7t4LkLgsW5beJQIsGq4t5dPis8fmxMQ6dMF90A190C0rjpUqlSYBG+PCv9rt7yDG3tf2t\/f\/Z+uuUEcBiN2F2Kw4yiLiZQD+FcWyXYAEQfvICddi+AnEO2ycIOISw7UAVxieD\/Cyz5mRMohfRSwoqoz+xNuIB+cj9loEB3Pw2448NaitKSLLRck2q5pOI9O9g\/t\/tkXda8Tbg0+PszB9FN8DuPaXKnKW4YcQn1Xk3HSIry5ps8UQ\/2W5aQnxIwBdu7yFcgrxPsRjVXu8HOh0qao30cArp9SZZxDfg3h1wTzKxu5E\/LUxX5wKdX5SnAzmDx4A4OIqLbB69yMesE1pKojLjVdoNsfyiPi45hZmAn3uLWdpOtfQOaVmikEs7ovj8hFWpz7EV6mel0L9Xy23FMYlPYZenAx0yDB1\/PX6dledmQjikjkXCxqMJS9WtfFCyH9XtSekEF+2dH+P4tzITduTygGfv58a5VCTH5PtXD7EFZiNyUDBhHnsFTBgE0SQIA9pfFtgo6cKGuhooeilaKH41eDs38Ip+f4At1Rq\/sjr6NEwQqb\/I\/DQqsLvaFUjvAx+eWirddAJZnAj1DFJL0mSg\/gcIpPkMBkhoyCSJ8lTZIxk0TpKDjXHliJzZPO50dR5ASNSnzeLvIvod0HG\/mdkmOC0z8VKnzcQ2M\/Yz2vKldduXjp9bleLu0ZWn7vWc+l0JGcaai10yNrUnXLP\/8Jf59ewX+c3Wgz+B34Df+vbVrc16zTMVgp9um9bxEfzPU5kPqUtVWxhs6OiWTVW+gIfywB9uXi7CGcGW\/zk98k\/kmvJ95IfJn\/j3uQ+4c5zn3Kfcd+AyF3gLnJfcl9xH3OfR2rUee80a+6vo7EK5mmXUdyfQlrYLTwoZIU9wsPCZEtP6BWGhAlhL3p2N6sTjRdduwbHsG9kq32sgBepc+xurLPW4T9URpYGJ3ym4+8zA05u44QjST8ZIoVtu3qE7fWmdn5LPdqvgcZz8Ww8BWJ8X3w0PhQ\/wnCDGd+LvlHs8dRy6bLLDuKMaZ20tZrqisPJ5ONiCq8yKhYM5cCgKOu66Lsc0aYOtZdo5QCwezI4wm9J\/v0X23mlZXOfBjj8Jzv3WrY5D+CsA9D7aMs2gGfjve8ArD6mePZSeCfEYt8CONWDw8FXTxrPqx\/r9Vt4biXeANh8vV7\/+\/16ffMD1N8AuKD\/A\/8leAvFY9bLAAAAOGVYSWZNTQAqAAAACAABh2kABAAAAAEAAAAaAAAAAAACoAIABAAAAAEAAANgoAMABAAAAAEAAAPAAAAAAJbOTS4AAEAASURBVHgB7J0HnBRF9sff5l3CkmUBAUFEoiCieILC34AJUDwTiuedcocoijncqafH6ZkVBEThDKeIHOJ5dyqnICjJQJAkOeccN+\/Ozr9eLT129\/TMds9093TP\/srP2N3VFV59q3foN+\/Vq5SgSIQEAiAAAiAAAiAAAiAAAiAAAiDgOIFUx3tAByAAAiAAAiAAAiAAAiAAAiAAApIAFDA8CCAAAiAAAiAAAiAAAiAAAiDgEgEoYC6BRjcgAAIgAAIgAAIgAAIgAAIgAAUMzwAIgAAIgAAIgAAIgAAIgAAIuEQACphLoNENCIAACIAACIAACIAACIAACEABwzMAAiAAAiAAAiAAAiAAAiAAAi4RgALmEmh0AwIgAAIgAAIgAAIgAAIgAAJQwPAMgAAIgAAIgAAIgAAIgAAIgIBLBKCAuQQa3YAACIAACIAACIAACIAACIAAFDA8AyAAAiAAAiAAAiAAAiAAAiDgEgEoYC6BRjcgAAIgAAIgAAIgAAIgAAIgAAUMzwAIgAAIgAAIgAAIgAAIgAAIuEQACphLoNENCIAACIAACIAACIAACIAACEABwzMAAiAAAiAAAiAAAiAAAiAAAi4RgALmEmh0AwIgAAIgAAIgAAIgAAIgAAJQwPAMgAAIgAAIgAAIgAAIgAAIgIBLBKCAuQQa3YAACIAACIAACIAACIAACIAAFDA8AyAAAiAAAiAAAiAAAiAAAiDgEgEoYC6BRjcgAAIgAAIgAAIgAAIgAAIgAAUMzwAIgAAIgAAIgAAIgAAIgAAIuEQACphLoNENCIAACIAACIAACIAACIAACEABwzMAAiAAAiAAAiAAAiAAAiAAAi4RgALmEmh0AwIgAAIgAAIgAAIgAAIgAAJQwPAMgAAIgAAIgAAIgAAIgAAIgIBLBKCAuQQa3YAACIAACIAACIAACIAACIAAFDA8AyAAAiAAAiAAAiAAAiAAAiDgEgEoYC6BRjcgAAIgAAIgAAIgAAIgAAIgAAUMzwAIgAAIgAAIgAAIgAAIgAAIuEQACphLoNENCIAACIAACIAACIAACIAACEABwzMAAiAAAiAAAiAAAiAAAiAAAi4RgALmEmh0AwIgAAIgAAIgAAIgAAIgAAJQwPAMgAAIgAAIgAAIgAAIgAAIgIBLBKCAuQQa3YAACIAACIAACIAACIAACIAAFDA8AyAAAiAAAiAAAiAAAiAAAiDgEgEoYC6BRjcgAAIgAAIgAAIgAAIgAAIgkA4EIAAC8RPYuXMnzZ4923RDKSkplJ2dTTk5OfLTqFEjOvXUU+W56UYiFPziiy\/o0KFDobs9evSg0047LXSNE\/cJVNc5ScZxT548mQKBQOghuuyyy6hhw4aha5w4R+DAgQO0fv16+dm7dy+1atWKTj\/9dPn9xt+ndqZdu3bRunXrZF+HDx+mpk2bUvPmzencc8+lrKws27pKxjHZBgcNgUAyEwgigQAIxE3gs88+C4rvibg+QikLtmzZMnj33XcHFyxYELNMXbt21cgxfvz4mNtCRXsIxDMnP\/zwQ\/DgwYP2COJyK\/GM22VRTXcnXvQ1f1\/x\/K2a7rQaF9y\/f3\/wrrvuCtatW1fDXf19m5qaGhQ\/YAXHjRsXFMpxXLQ+\/fTTYPv27SP2Va9eveCwYcOCW7ZsibmfZBxTzDBQEQSqKQG4ICazdo2x+YqA+A6irVu30uuvv07nnXceiZdXWrx4sa\/GAGHtI8BWzKFDh9KvfvUrOnLkiH0NoyUQ8AGBkpISevHFF6lNmzY0duzYqH8DFRUVtHHjRrrzzjvpnHPOoYULF1oe4bZt26hXr1509dVX0+rVqyPWZ2vYG2+8QV26dCG2hlpJyTgmK+NHWRAAgV8IQAH7hQXOQMBTBJYtW0bsPvjEE094Si4I4ywBVsQnTpxIbdu2pbfeeov45RIJBKoTAf4bGDBgAD388MN09OhRS0PnH63YTXDChAmm67FSdfnll9P8+fNN12G5brrpJvm3aqZSMo7JzLhRBgRAwJgA1oAZc0EuCMRNgK1YkdaG8Et1fn6+\/Bw\/flxavoqLi8P65LUmf\/3rX4n\/8eYjUvITOHbsGP3+97\/XDJTXDCKBQHUh8MILL9BXX32lGW5mZibde++9dMEFF1DHjh3ppJNOkmu0Vq1aRWPGjKHvvvsuVJ6\/X0eMGEHnn38+tWvXLpRvdMJWqauuuoq4HXW64oor6Nprr5VWsTp16tA333xDM2fOpHfeeYfKy8tDRdnqxuvQuK9oKRnHFG28uAcCIBCdQIp4sWNfZyQQAIE4CHz++efUr18\/TQv8D3bv3r01eZEuysrKaOnSpfTvf\/+bXnrpJeKXAn0aPXo0ifVh+uywa7aa8AJ1JfGLxFlnnaVc4pgAAlbmhH9ZF+tdNFJu2rRJBhzQZPrgwsq4fTAcKSIHzlH\/WCLWgEk3Ub\/I73U5v\/\/+e6nMqJUcdit89913SazNMhSfX2PefPNNqXSVlpaGynTr1o24vYyMjFCe\/oS\/bx966CFN9gMPPCDdH41++ODv6BtuuEHzHd2hQwdasWIFibVomnaUi2QckzI2HEEABGIkwAoYEgiAQHwEjIJwCAUspkZF5K3g\/\/3f\/4UtAueF5uJX3pjaRCX\/EBDrvcLmXihg\/hlAkkuKIBzOTnDPnj01z3+DBg2C+\/btM9Xp888\/r6krXouCYr1WxLpCkQ42adJEU+fBBx+MWF65ISxhQf1z8I9\/\/EO5HXZMxjGFDRIZIAAClggY\/1wTozKHaiAAAvET4JDxX375JYl\/tDWNsVvNn\/70J00eLkAABEAgWQgUFhbSjz\/+qBkOW6h4mw4zSShPMgiHuixbnyKl9957j3bv3h26Xb9+fVNrbi+66CK64447QvX4hOU0Ssk4JqNxIg8EQMAaAShg1nihNAi4QoBdZqZNm0Ynn3yypr9Zs2YRf5BAAARAINkIsDsnu2Mriff2+s1vfqNcVnlkF0B2uVann376SX2pOWe3RXX6wx\/+QLm5ueqsiOfstqh2OVy+fLlck6avkIxj0o8R1yAAAtYJIAiHdWaoAQKuEGjcuLGMsMUbvaoTB+O48MIL1Vm+PN+xY4dcN8Hr1TgQiXA1ory8PPkLdq1atWwbk3Bfom+\/\/ZbEXlpyw1YOHx0pOIq6U16LxaGtN2zYINfU8bosrscL7lu3bq0uinMXCPAam82bNxNvep6eni6fFd6qgTfHtSMpG+LynPPzyD9+dOrUybG1d249\/3awcasNXjerTvy3plZy1PcinZ955pmaWxxcg9fU6jdPLigoII40q06XXnqp+jLqOW\/MzN8lagVv6tSpYV4KyTimqGBwEwRAwBwBSw6LKAwCIGBIwM41YOoOhNthsEWLFpo1CuLlMygi5amLac779u0bbNasWejz\/vvva+6LMM2he0o5zrOaxD5VcuNopQ0+zpkzJ2ozwh0nyOs0zjjjDM2YxLdV6FpEOwvyGKZPnx61LfVNsUg\/NCbxUhS69be\/\/S0ogiaE2uZ+hHUxeOuttwbXrFkTKqecFBUVBcWv4kEROU1TRy0fn7dq1UpumC32DlKqRj1WNSdCyQvJL17swvoWimnoPnP+5z\/\/GWT+p5xyiiZfBGqJKkekm0LJ17QTbT1LpDaM8qsat1KH1zwqz5HY90nJDvIanWeeeSYo3HLDmChzIgItBEWAhiD\/rcSSeK2msJoEeSN0pU31UUS30zzX+rU\/VjZitvv5FxH4QtwUfo8++qhpDB9\/\/HFYfeFaZ7q+3QX5uRbRC4Mi+mBQRJGV51b7EEpQ2Dzy34o+iR9lNOVq1KgRFIqavljU6\/vuu0\/TBv8d6VMyjkk\/RlyDAAhYJ8DhrZFAAATiJOCUAsZiiX3ANP\/I88vhf\/\/734gSC6uApvz48ePDyvJLrvolU4R3DitTVQa3q26DFQcRuSxiNZZZWBU0ddT1jc75BX7Pnj0R21RuqJVUEZ5aZo8cOTJqXyJ0tVJdHsVakaCwOkato5dR\/KoefPrppzXtGF1UNSesDOrbjnbNCgen\/v37a+qxYms1rV27VtMGK6j79++32oxh+arGrVQSUeRCMvCLMCfh0hUUFqhQfjQefE9sWC2VUqXNqo5iG4igiFxqqn3+UeCDDz6QTcaqgDnx\/HNwCv0zy8F6zCiF27dvD4o1T5rxsxInLIFVofP0fVZA1c8K\/wBjlPQBO0SkWKNiUfP471DdF38POZGScUxOcEKbIOAnAlgDJr49kUDAywSEtSZMPN6PJp7029\/+VlP9o48+It5zzEoSVhJN8VtuuYXS0tI0ecrF66+\/LvfaYbcrK4n3AuJNVYWCYqUa\/fDDD\/TnP\/85Yh3eU2jQoEGh++xmKJQZTfj+0M0oJ+zaxP3w4v9EpN\/97neabnkdCn+sJP088nYKZlw0rfRhtSzPh7CK0cqVK01X5X2geDNd8Q9wlXXYHZXdeMUPJ1WW5QIc2nzw4MEklHpT7esbder55+AUb7\/9tqY7DtZz++23a8KkawqICy7Da6uEZSh0i139Jk2aJF2BQ5k+PPn66681UrObqlFatGiRJltYkzXXZi6EwqUpJpRaubejJtOGi2Qckw1Y0AQI+JoAFDBfTx+Erw4ETj31VKpZs6ZmqKxgxJNYqVOvrRBWJrnJqNk2eZ0MLy5XJ70yoNwTLpB0zz33yJc+JY+PV199NfHLP+9\/xi+Cwn2RXn75ZeINrNVpy5YtNHDgQM3ifPV9\/TnvH8QbGfNLppI4qAnv36QkVjI44hknjlLGL+7C6qPcpnr16sm9gebPny\/XHfGm2Vu3biVez8Hj5DVI6vTKK6\/QkiVL1FmWznnt28SJE+WH93vTJ+FKGbrP5RRGRsqSsNToq0e8ZmVFX95I4Y\/YgAM3eP54XKwkceK9mK655hrijWy\/+OILEi5dMgIdRwvVJ\/67mDFjhj477Jo33tVH2xPhyOmpp56SEUg5Mt7s2bPp2WefJd7jSUlPPvlkmGJTlcLn9PPPQSd4M2B1Wr16NQnLrDpLc\/7iiy\/K8akzhaXd9L6F6npeOhculbRw4UKNSPzdYZTUf+983w4FjJ+F9evXG3UXc14yjilmGKgIAslEQHxhIIEACMRJwEkXRBZNKGEaVxcRBCKixGbdvsSCc02b4hf+iG3qb4gXVU1ddv8ySuxaJ5RHTVl2EeR1GpESuzGKCGOaOuI7N\/jqq69GqhK2To7L84dd24QVLSgsGHKNkFAcg48\/\/rjMUxrj+0p5PvJ6KxHsQblteJw7d26Q3Q\/V9a677jrDspxpdk64rNV9wHjNjFoOdvMU1kxuqsoklAxNXWFRkayqrGiygNlxq10Q1WPh+tHc6YYMGaKRn+uyW2a0JKw8YXV4DaEI7mFYjV0VhQIYVkeRUyjphvU4063nn9eW6dct8lpRo7WdwvIj10Eq8vPxggsuiOo+HHGAHrrB6wX5e1E9Lv7uEcq0oZQiWIemrFBKDctFy+S1uOr++JzXFNqVknFMdrFBOyDgdwLsToEEAiAQJwGnFTBekK7+h16ESo4osdmX3ilTpmjaFJEHgyIyWMR21Tf0CuFbb72lvh0617+4RnopDFVQnUyYMEEjX506dSJuyKpeA6Zw4pcvVriqSmJvNU0\/wppVVRV5X7+GRFjNIio+ZueEG7aqgAkLokZ+Hr9wWTI1BmHN09SNZS1gtI7MjttIAeMNeIUVLFrzQRGyPHjxxRdrxsBroHbt2mVYjxUVXuekPCN87N69e5CDr0RLHODjtttu09RT2oimgLn1\/LPsrGzx+j1FLj5yQBr+8UFJ\/Pfdtm1bTRnmzOvB\/J6GDRumGRePX7gHRxyW\/jts7NixEctGusHPn5o3n3\/++eeRilvOT8YxWYaACiCQpATggii+MZFAwOsE2EVNncQvr3JdijrP6jm7YbGrnZLYze7TTz9VLiMeea0NuyAqSQRNoBtuuEG5DB25jL493khaRK0LlYl2Iqwbcv2XUobDwgvrlXJZ5ZHdrMyEi583b56mLQ6HbybdfPPN0o2TXdd69epFAwYM0KypMdOGHWU4FLY+9Dav5akqCaWD2L1JnfRrA9X33D5n9z\/FTTRS3+wKyu6Z6sSup5HWDPIG5xzGXp3Y9Y73m4qW2A2St3\/QhzKPVsft55\/\/rv7yl79oROIw6+zWq6T7778\/bK+qd955J2y\/QaW8X46jRo2iN954QyMubyHw8MMPa\/LUF\/x9ok5qF2V1frRzfv706145vL0dKRnHZAcXtAECyUIACliyzCTGkdQEjIIiCEtJXGPml8mbbrpJ04Z+PZDm5okLfdAGXp9jtHkpr31Rr8MSFqywPXKM2lfn\/fGPf1Rf0nvvvadpU3NTdcEv1CKction8qn+xYvHZyYgibCkEL9sCWsLCZdEEhHREha8Qr\/+jhUr4b4UedDiDivHvN+VkoS1Su5rpFwn8sh7e7ECbiax3HrFSL++R2lHWCeUU3ns3LmzDL6iyYxwwYq2nnOEojI7Ec8\/KxzCnVAjFitlwqWWxLYOpN94mNdmcvAZPydhfScRDl4zBP4++uSTT4h\/HIqU+EcsddJ\/D6jvRTvXK++8pjTelIxjipcJ6oNAshGAApZsM4rxJCUBo3\/U9f\/wxzJw4ValqcYBDHjj4kiJo8FxEAR1ivRSykqJOnE0Qw6GYSUpwSaUOhx1kCONVZU4cAlbLcwkfglXJ444xhatn3\/+WZ1teG7HHBg2bDGTFWmO7KgkfrkUYc+VS8OjXpFOdPANtZDCTU4TJEZ9T3\/OVgi9pYyfU6PESog68bNr9jnhesJFU1096nkinn8OrMPzyj92KIktnRwVUf+3zlZTDmzi5yTcBuUPLcJDKTQMVsaFe7XcdD2UaXCi\/5HFynOgbi7Weuo21OfJOCb1+HAOAiBQSQAKGJ4EEPABAb21i1+0ateuHbfk7LYk9o4KtcMR6PjlJVJiC4I6dDVHDuNw4frELzf6SI0iUIe+WJXX7A6oD\/VsJsqY2OesyraVAhwxUf8SJfYEI3Zh4o8ICCIjRLLy59XEnNgFUp2iWTM5yp86WiArxuxS6ZXUsmVLS6Lo\/xaMFLC9e\/eGuR+KDbUt9cPPld7lzKiBRD7\/zI5f4tWJIzpypFMlifWexFtP6C2Hyn0\/HMX6Lho+fLhmWwD+EYItX2JD5CqHwAzUqSqLsbqs+lxfT638qsuZOU\/GMZkZN8qAQHUkkF4dB40xg4DfCOgVMP5HXq80xDomtgKoXXj4xf3uu+82bI7dqtSJ9xIykoNDiOvXQrBbTTTlTt2u+lzvTsYKmAi8oC4Sdm4Uojys0IkMLsuujs8880xYEbaC8eell16SWwHw3lEcsp4\/rHx6KfE8qtd0sbWH58FoTduHH36ocbPkUOa8p5RXklUFTG394zGoLSLKmIwsuyJipHLb1JGVL3ZFrGo\/u0Q\/\/6xM8x5nrGQZpXHjxhFbGf2YROALafXS73+mKF\/8LJtJrICp14HpFSkzbfAPVvxRJyN3bPV9o\/NkHJPROJEHAiDwCwEoYL+wwBkIeJbAtm3bNLLxS6BdiTeY5bUj\/BLAifdHYiVHr8Sw5Uu9hoYVr0hBGw4fPhwmHq+V4k+8yW4LGMvDG+yyq9Zrr70WcY0ZK5Ts1qe49p111lnSasT8vKC8iG0FpHLA1i1OPJ\/sLioiqclr9f+87H7IcjZt2lQtri3ndihgLAivT6tKAUv0889yclAK3sdO77J74403Em+a7sfEXHnNqQj1rhG\/bt269K9\/\/Yv69OmjyY92obeA8d+\/1WSktFm1gCXjmKxyRHkQqI4E4IJYHWcdY\/YVAVZa9AqYCJ1t2xg4wId+Ib6R+xpbr9SuXb1796ZILlx6i51twoqGeGPmqpJ+TVBV5VmZ5Ghx\/MLKL3h6i4pRfRH2mziqHLspfvvtt0ZFXM1j6wxbJNXJaB45Mt7y5ctDxXj+eeNjLyUzbn5W5VW7znJdnnOxJ53VZkxFDEz088+D4vWJetdMzl+xYkWVAVq4nNcSR5XkdaR65YsVYo5kakX54rHpFaUDBw5YHrLeOs8NWLGAJeOYLENEBRCopgRgAaumE49h+4cAh33XJ7FxrD4rrmteoM9rJ5TELmpPP\/20cimPevfDSME3uLCRRYjD3lt5OdF0rrpgy5NTiV\/wpk2bJl332J3vf\/\/7H82aNYv0EdPU\/bNlhV0iWYHjqHKJTGyRFPuThUQQmxjTpk2bNOH49dYvDuBhNThKqAMfnbCVRJ3YTZFfuq0qYYqlWN2W\/twLz\/+jjz5Kq1at0osmXWofeeQR4jDnfkm8JpPXOOoVHt6C4YsvvojJYsoumGztV5L+Ry4lP9rRqI6Ry69RG8k4JqNxIg8EQMCYABQwYy7IBQHPEOC1HPqkjw6ov2\/1mhets1uj4r62YcMG4hcEVkg48bVaEeRf1q+99tqI3fAaHrYiqS1mHBbezOL4iI26eINfooYOHSo\/vMaDFRneQ4oVsp9++ilsjRGXGTFihGR43XXXuSiptqt27doRBztRzxUr08r+abwtAF+rUyQ3UnWZZDjX76XHY9q6datlBYzrVJUS\/fxzgJXRo0dHFPP111+nK6+8kvr27RuxjFdu8A9D7OardxFkl9upU6caWvnMyN6xY0dNMSNlSlPA4EJfh9eFmrG+J+OYDPAgCwRAIAoBuCBGgYNbIJBoAhy5bfLkyRox+CVbv\/GupkAMF+zypV8Xog6YoX9pv\/7666PuscPtcSh4dVqyZIn60jfnHOac91biIB3sdshKKlsPjCItcrCORCe9ZVJt2WTFTB0NjyNg2v0sJXr8kfo3WjdpRpnSt6d\/6dbf5+tEPv\/saslKtToQCSvlyo8pLB\/f4+eEg4V4ObELLf+goVe++McR\/mHKyMXS7Hg6dOigKcrBdtTMNDcjXKxcuVJzp0ePHppro4tkHJPROJEHAiAQnQAUsOh8cBcEEkqAf8XWhz\/nlysnkv7FnRe1K8ns3l9KeT7qo6yx5cjrSW2xiyRr48aNpashK5T6tXicp99fKFI7TuXfcMMNpN5UlrkrSsN\/\/vMfTbde2vtLI5gDF2zV1FvB2D3TSuJALGaVlkQ9\/3\/4wx80wW54Ldg777xDf\/\/73zVrG3ltKSsyXk3sAszfderN3Hn7jRdffJHGjx9P\/MNIPIm34FAndkc1s\/efuo5+PVpVClgyjknNA+cgAALmCUABM88KJUHAVQK8sFy\/USpH7nJKAVPc15RBsnWAFYrVq1drXkz4xbJnz55KsYhH\/Qsov6yowz5HrKi6weur2KWH27rkkkuI9+zSb3CrKm75lPcq4yiBvJcZW0j0ClW0BvnX9wcffFBThF0RFTdOzQ0XL3id3a9\/\/WtNj59++qm8Vitg\/ALrpb2\/NAI7cMFBNwYOHKhpmUOZW1GY1dZETUMGF4l4\/t999125hlEtDkf4PP3004ktPk888YT6lizLdbyWZs6cSbw2UT03\/Lyy9Uj\/Nxer7LwFgV5hYjdjs4kVNraIq1O0vQ6TcUzqseMcBEDAGgEoYNZ4oTQIuEJg6dKlxOGi9XvM8H5VbIFxKhlZwdR7S3G\/Zq0m+o2B+YVFWYtkVn526eMwzRx6nl9g+Fd8vRXDbFtG5filnH9NZ+WQXfM4QpyZKItKW\/rADvwLPUcVjCexxUKfzFjm1HX088gK2Lp162jNmjWhYryXmZPPUqgjD53oFdO1a9fSpEmTTEnIf4t\/+ctfTJXlQm4\/\/5s3bw4LAsNuhxypU0kcmEPvcsqBY7iuVxK7XfMPA+pgJ6x8sUV+0KBBtorJrtTqxB4HZv\/WXn31VY2CyGvK9Aqd0nYyjkkZG44gAAIxEhA+z0ggAAJxEhDrEYLiT1DzES\/1llsVFp+gsPIExYu8pi1uW1iogmLfmSrb7Nq1q6auUDCqrKMUEBaqYI0aNUL1xUtFsHPnzqFrlkvsK6QUr\/IofsUO1eUxiLUxwUWLFlVZjwsIJTRYs2ZNTX0ROMCwbosWLTTlhMukYTmjTLFwXlP39ttvNypmmCdebjV1W7dubVjO6pzo518ERDFsN1KmcNsKikAQIdnEC2zwscceC13zXAjFOlJ12\/LNjltYZzSyCcuUJRnEVgCa+hMnTjSsL5SooNjfTlNWrFUM5ufnG5ZXZ06YMEFTT\/l7F1sXqItpzt16\/nlcIjCPRj6hyAeF9VojD1\/w35WIeqkpKyzaQW7DC0kEBtHIxpyFsuOIaGI\/t6AIFqTpTyipVfbF32HCAq6pJ6KLRqyXjGOKOFjcAAEQMEWAF50igQAIxEnASAETmxYHWaEx+oh9goI7d+4MCotEkF+u33rrLal4ib1pNP+oKy95Yv1KUFiBTElp9qU3UmMiGIehDCyLiDwWqZphPo9RuE1q2qtXr15QBBYxLK9kCstEUFhnNPW4\/6+++kopojnGo4A99NBDYf2IIBua9o0uhLuSVCiVOeLjs88+a1Q0aHVO9C93wk3SsN1omU8++aRmXOoXTX6exNrCaNVtuWd23G4pYDyor7\/+WsOF500EIwmK9WARxzx27NgwpUWZ92gKmFvPv3AzDBuTcF+OOB79s8Fj4TaiJRHFNCisZ5oPf7fZmURI+bBxiD0KDb9Djb5XI+UJV8aIYgqvgrA++YeVSEm4hgf139P8Y4ew2BlWScYxGQ4UmSAAApYIQAGzhAuFQcCYgJECprygxXsULm1BEQbduGODXLMvvQZVZdbs2bPDXkiUMXz00UeRqkXM5xdBpb76KIJFBIVbUVC4\/Mm6ItJZUGwQHBQuUUH+9V5dls8feOCBiH3Eo4CJNVtBsZlrWH9iPUfwv\/\/9b1AEsAgqL3AiAENQrBsLirDYYcqX2E9KvigaCWl1TsReZ2HysDWSLSr8QmrGwscKhXCxDGuHWQ4fPtxITNvzzI7bTQWMBynWUYZxYaX0tddeC4p1PdIaJFxmg\/wjinB705TVWyejKWDcl9PPv9jLKsgWTvXfi3A9jGrREm52Gss21+U2uK1ISex1p+mD64iIi5GKx5TPf3Pqcdh1LoJrRJRHBFYJ6r8\/uF+xIbu0EvPfPCtX\/B0s9kYMs8ozN\/4xJlJKxjFFGivyQQAEzBOAAmaeFUqCQEQCTilg7BoU7Zd5I4HMvvQa1eU8dl9r1apV2IsQW67MuEDq2+WXPbGeLaw99csVW8kiKQtcTqxpknLp21au9S9QZhQUpS4fRbARjeulWjY+Z+uR3h1SXYblX7hwobpJzbnVOdG7Nqr74vM777xT036kiz59+hhyN+sGGqlds\/lmx+22AlZYWBi8+uqrDdkwXxFF0vBer169gmLtnOZeVT+OOPn8s\/Iggn1o5InkeqifM34G9Iobt8VtGiWnFTCxDk0zDv0zH891NAWMx8osxHpOw\/5Z4Y72tx\/NXTYZx2T0bCAPBEDAOgEE4RDf6kgg4CUCHISBIx2KF3riSIhCGXJVPA5Mwf3rEy+Az8rK0mdXeS3Wm8i9zDiAQaT6Yg0O\/xgU1haz4CACYv0NsVxOJQ5MwKH2mzZtatgFL8znEORGiaNHCtdISxEUjdpR5\/31r3+Ve4+p89Tnq1atUl9GPNcH4+CCYr0UCQtbxDrV4QaH6Z82bRoJRdZwuPp9p7gQPyNcJ9IzbNiQyHTy+ee\/DQ6uok78d8bPZFWJn4GHH35YU4zbEpZmTZ5bF1ZDwNspF7PgzavFDzlhzXIYfKO\/fX6GhMVU7qcWVulERjKOKdJYkQ8CIGCNABQwa7xQGgRsIyB+VSUREECGQBcubfTII4\/IiHxiYbjct8dKSHTbhDrRECtgeoXH6GXeSr8cApujGfLeQ7wnU7TEihdHZ9u4cSO9\/PLLcmPbaOXtuCcCfJCwNtIbb7xBIjBHlU0K6w698sorJNwmKVr46SobMijAL3fC\/ZGEG5R8gdcX4eh9ZtK1114btlmt2SiWZtr3cxlh2SCxtot4KwJhDQt73pWxcaRLjh4o1mqScDNVsi0f7X7+hdWd3nzzTY0cHIWPlTKzSawFk+Hp1eU5Kii37XZKpLLCY+XvW\/5hg+c6WiRT3mT7tttuk99lI0aMiIopGccUdcC4CQIgYJpAChvNTJdGQRAAARCwgQD\/qsx76LDysn\/\/fhlqnsPLiyiCoQ8rqIlKvP8Q74PGGxjzh8\/ZKsJh21lODu8tFt67Ip4Shp\/3ROM9vvhX+mbNmhkqZnqBOJQ372+mbB4sXM5IRLG0NZS\/vk+\/XvM88zYE\/CMBhw3nuW7Tpo3cf86q1asqBl5\/\/qPJLwIGyR9R+Aca4ZKs2dw5Wj0\/3eO\/f95vcOXKlXJ7Cv474h\/L+NO+ffu4FPFEcUjGMSWKJfoFATsIQAGzgyLaAAEQAAEPEuD9v9SbD1911VWkbMrsQXEhkg8IsCWPXWTZis17+yGBAAiAAAhYJwAXROvMUAMEQAAEfEHgnXfe0cg5ZMgQzTUuQMAqARHGX1YRATusVkV5EAABEACBEwSggOFRAAEQAIEkJMBuk2IPotDI2G1RRPALXeMEBKwSmDJlCn333XeymtgSwWp1lAcBEAABEDhBAAoYHgUQAAEQSDICvDaHg52Ul5eHRib2\/nIlmEmoQ5wkFYEXX3yROBIqJ16rKTZsT6rxYTAgAAIg4CaBdDc7Q18gAAIgAAL2ElizZg0dOXKETj\/9dDp+\/DiJzXTp9ddfpzlz5oQ64uAdw4YNC13jBASsEhD7ncmtIjg4CUforFOnjtUmUB4EQAAEQOAEAShgeBRAAARAwMcE5s+fT1Wt7eLACXhh9vEke0D0cePGye0Z\/vznPxOH5kcCARAAARCInQCiIMbODjVBAARAIOEEeAPZvn37RpTjvPPOkyG1ed8rJBAAARAAARAAgcQTwL\/IiZ8DSAACIAACMROIth8Z71fG7mJQvmLGi4ogAAIgAAIgYDsBKGC2I0WDIAACIOAeAd6Y+eqrr5buYdwrb7bMm8WOGjWKZs2aRfXr13dPGPQEAiAAAiAAAiBQJQG4IFaJCAVAAARAwB8EOAhHjRo1EO3QH9MFKUEABEAABKopAShg1XTiMWwQAAEQAAEQAAEQAAEQAAH3CcAF0X3m6BEEQAAEQAAEQAAEQAAEQKCaEoACVk0nHsMGARAAARAAARAAARAAARBwnwAUMPeZo0cQAAEQAAEQAAEQAAEQAIFqSgAKWDWdeAwbBEAABEAABEAABEAABEDAfQJQwNxnjh5BAARAAARAAARAAARAAASqKQEoYNV04jFsEAABEAABEAABEAABEAAB9wlAAXOfOXoEARAAARAAARAAARAAARCopgSggFXTicewQQAEQAAEQAAEQAAEQAAE3CcABcx95ugRBEAABEAABEAABEAABECgmhKAAlZNJx7DBgEQAAEQAAEQAAEQAAEQcJ8AFDD3maNHEAABEAABEAABEAABEACBakoAClg1nXgMGwRAAARAAARAAARAAARAwH0CUMDcZ44eQQAEQAAEQAAEQAAEQAAEqikBKGDVdOIxbBAAARAAARAAARAAARAAAfcJQAFznzl6BAEQAAEQAAEQAAEQAAEQqKYEoIBV04nHsEEABEAABEAABEAABEAABNwnAAXMfeboEQRAAARAAARAAARAAARAoJoSgAJWTScewwYBEAABEAABEAABEAABEHCfABQw95mjRxAAARAAARAAARAAARAAgWpKAApYNZ14DBsEQAAEQAAEQAAEQAAEQMB9AlDA3GeOHkEABEAABEAABEAABEAABKopAShg1XTiMWwQAAEQAAEQAAEQAAEQAAH3CaS73yV6BAEQAIHkJlAWKKfSQCmVBcrEsYzKK8qpnAIU4KP4lOmO6jzj8xNtVARC9ZvnNqNr2vZLbpAYHQiAAAiAAAgkIQEoYEk4qRgSCICANQKHC4\/Qh0s\/rVSYykul0sSKU+VHXJeXnVCmfrlXIspVKlgn8kQZpby+915tu9OW4i367Liuz2rcBQpYXARRGQRAAARAAAQSQwAKWGK4o1cQAAEPEThYeJjGLXjXQxJVLUqQglUXQgkQAAEQAAEQAAHPEcAaMM9NCQQCARBINgIplGL7kALBCtvbRIMgAAIgAAIgAALOE4AC5jxj9AACIOBxAsGgs9YkJ6xVFVDAPP5UQTwQAAEQAAEQMCYABcyYC3JBAASqEQFn1S9nQEIBc4YrWgUBEAABEAABpwlAAXOaMNoHARDwPAEnLFTqQQfJfndBKGBqwjgHARAAARAAAf8QgALmn7mCpCAAAj4lEHBEAfOj3c6nEwixQQAEQAAEQMBGAlDAbISJpkAABPxJwOk1YOXBMtvBwAJmO1I0CAIgAAIgAAKuEIAC5gpmdAICIOBlAk67IBYGCm0fPhQw25GiQRAAARAAARBwhQAUMFcwoxMQAIHqTCC\/vMD24UMBsx0pGgQBEAABEAABVwhAAXMFMzoBARDwNAEHl1Olp6aLFWAIwuHp+YdwIAACIAACIOAiAShgLsJGVyAAAt4k4KQLYtCh\/boqggFvwoRUIAACIAACIAACUQlAAYuKBzdBAAS8RIDd7orLi6ksYH9QC6fGWeHQJs9OtesUB7QLAiAAAiAAAiBQSSAdIEAABEDAbQIcdXDq2n\/TkeKjVBIoEZ\/Syk95CRXztTiWijx5zvfENZcrqyiXoj553kPU8+QetontZBREp6xrWANm2\/SjoSQj8OCDD9LLL78sR1VSUkKZmZmujvAf\/\/gH3XrrrbLPJUuW0Jlnnulq\/+gMBEDA+wSggHl\/jiAhCCQdgembZtLfl3+QdONyc0BQwNykjb78RMDJH1T8xAGyggAIeJcAFDDvzg0kA4GkJHCw6DBNXP5+fGNLSYmvvtu1OciHzSJDAXN7EtGfXwhkZGRQdna2X8SFnCAAAtWQANaAVcNJx5BBIJEExi6ZSAVl8e2LZbMuQykOK3ROtB9wKLhHIp8N9A0CdhB47rnnqKioSH7cdj+0Q360AQIgkPwEoIAl\/xxjhCDgGQLzd\/xA83f+ELc8KXabk+KWKHoDqSn2f9U6tbYs+khwFwRAAARAAARAIF4CcEGMlyDqgwAImCJQUFpAY4T1y45kt0XJcYUuaLfNjgguiHY8SWgjGQls376ddu\/eLYd29tlnhyzcgUCAFi9eLPPbt29PtWvXpvLyclq+fDl99913dOzYMerWrRudddZZ1LBhwyrRfP\/997Ro0SI6cOCArNOzZ0+qX79+lfWUArxWbf369bRs2TL6+eefqWnTptS1a1fq3Lkz5eTkKMVCx6NHj9LatWvlNbtZRgruUVZWRj\/99JMsl5qaSt27dw+1gRMQAAFvEIAC5o15gBQgkPQE3lk5mQ4VH7ZlnHYrTE5bk6TCaPNmz1DAbHmU0EgSEnjttdfolVdekSNTR0E8fvw49ehRGT119uzZxErMVVddRQcPHtRQ4PVjo0aNoj\/84Q+afOWClaDf\/va3xAqYOrGyw9EXzShhGzZsoMGDB9MPP4R7BJx00kn097\/\/nfr166dunrKysuh3v\/sdrVq1SuZ\/8sknNHDgQE0Zvnj88cfphRdekPmPPvooFLAwQsgAgcQTsN8vJvFjggQgAAIeI7Dh8Cb6fONXtkmVavOare1Hdtkmm1FD9tu\/iLAGzIg08kDAHIHPP\/+cLrnkEql8tWnThi6++OKQ1au4uJiGDh0qlTB9a2wtY0uXonydfvrpdPPNN1OvXr2kQnfffffR888\/r6+muWbFiS1drHzxjzPnnHOOVKxYhtzcXNq3bx\/179+fHnnkEU09VgwnTZoUCqt\/55130uHD2h+1WLF86aWXZL1f\/epXNHLkSE0buAABEPAGAShg3pgHSAECSUuA3WzY9dBOi02KjWuqWK53F\/3TUf52K4wsrJ08HR08GgcBDxJgJaVx48bECgu7Ac6YMUMqPu+8805IWraCVVRUhK75u4ytYmwxS09PpzFjxtCaNWvogw8+oLlz50q3P1bmFAtVqKLqhBUmbqOgoICaN28u+2dF7O2335YybNq0SSqGXIWtWPPnz1fVJqm4KUrVnj17iBU+JR06dIhuueUWKXPdunVp8uTJUk7lPo4gAALeIQAFzDtzAUlAICkJzNjyDa0+uM7WsdnlghioCNAT\/3uBlu+udOmxVUhNY\/Z\/1QYRBVFDGBcgYJUAK1t9+vQJVWNrFLsWKpsob968mVasWBG6P2vWrJDL4N1330133XVX6B6f8LoytqyxK2Kk9OSTT0oFjst89NFH1Lt3b03RBg0a0BdffEFsWeN0zz33aJRAzuONphW533vvPfrqq0rvArba7dy5k4vQxIkTqWXLlvIc\/wMBEPAeAawB896cQCIQSBoC+SLwRtx7fhnQsGpR+n7rYvrPqq+oqKxYftLEy8+vO\/ejz1bNoC\/XfWPQg71ZkV\/HYu8HFrDY2aEmCHBwDkWJ0dPo0qVLKGv\/\/v2hcyWAB1u\/HnjggVC++qRt27Z03XXX0ZQpU9TZ8pyDgEyYMEGeX3755XTeeeeFleEMbp8VL1bwlixZQitXrqQzzjgjVJaVt3\/84x8y78iRIzRs2DDprvjxxx\/LMnfccQf9+te\/DpXHCQiAgPcIQAHz3pxAIhBIGgKTVk2loyXHbB+PVRfEdQc20b9\/\/lIjxzcbv9NcO3lhd9RGlhVrwJycMbSd7ARat24dcYinnHJK6B5HFFQSRyvkxJalZs2aKdlhR17LZaSAbdu2jTgoCCdW8vTrt9QNsSKnJHaRVCtgnM\/ui+PGjaObbrqJ2G2RrV+cOILiq6++Ks\/xPxAAAe8ScOKHWe+OFpKBAAi4SmDHcWeCW1gNasFrNxKZnOgfFrBEzij69juBFi1aRByCOgS8eg2YooCdfPLJEevyDVaOjNK6db+4Yj\/77LMyWiJHTDT6cIAQJbECZpQGDRokFTDlHsvNbo0crAMJBEDA2wSggHl7fiAdCPiaQIVDio\/VNWCJVb9EwAxyRgInFDtfP3AQHgRMEohFSdm4caNsvaow83l5eYZS7NixwzC\/qkze1yxSUlvreE+zoqKiSEWRDwIg4CECcEH00GRAFBBIPgLOKB5WXfoSrag4tc8YW8HSUtKS77HBiEDAgwQ4QAYHudi1K7plX7+vmDIUteWM13BdffXVyq2ox8zMTMP7CxYs0IS8Z3dJDonP68Zq1KhhWAeZIAAC3iAAC5g35gFSgEBSEnBK8bFqASOHLFBmJ82piIVwQzQ7AygHAvETUFwLt27dGrWxSPdPO+20UD3ezLl27dqmPrwBsz7xptK8kTMH9mjUqBG9\/vrrsgi3y1ESkUAABLxNAAqYt+cH0oGArwk4Y\/8iuXmpn8BUOAQCCpifngLI6ncCl112mRwC7781b968iMP58kttwB+lILsLKq6PHK5evb5MKaMcp06dKgN1XHXVVYZ9cZREDpPPaezYsTR8+PCQRe2NN96QoeyVtnAEARDwHgEoYN6bE0gEAklDwCnLj1VATlnirMphd3koYHYTRXsgEJkAB71QrFGPP\/64oQK1fPlyYuXJKHH4+BEjRshbS5cuJVaUjFJ+fj7xfmHcFu\/x1a5dO02xadOm0bvvvivzOOQ9fzhxe\/Xq1ZPnt912G6lD6MtM\/A8EQMAzBKCAeWYqIAgIJB8Bhww\/ZNUF0Sk5zM5Yeqozy22hgJmdAZQDgfgJcGj4t99+Wzb07bffUr9+\/Wjv3r3ymn\/kmTFjBnEI+miWLVbclBD2rIz96U9\/ooKCAtkGh6ifPn06XXHFFbRmzRqZd+edd1LDhg3lOf+P158pIefZ9ZCtX0ri4B+jRo2SlyzXkCFDlFs4ggAIeIwAFDCPTQjEAYFkIuBU8Am\/BeFIS3HmqxZ7gSXTXwvG4gcCvO8WW6c4sbLESg8rZqwk9e3blw4dOiQ3UY40llq1aslQ8byejNdvcTj63NxcaeXiNlj5mjt3rqx+zTXX0AsvvBBqipW83\/3ud6QE+RgzZoxc\/xUqIE5uueUWuvLKK2XWf\/7zn9DGz+oyOAcBEEg8AWfeChI\/LkgAAiDgBQKeCUOfWBtYIBhwZDacUnAdERaNgkCSEHjqqafoueeeCyk\/vE8XK15NmzaVytWtt94adaS9evWilStX0u9\/\/3upfLHFjINnsOshp1atWknFiTdzTkv7Jcrp6NGjpUsil7n22mvp+uuv59Ow9Oabb1KdOnVk\/n333UeR9hELq4gMEAAB1wikiF9UEvtm4tpQ0REIgIDbBB6c\/SSt2L\/K9m5HX\/wcnV6\/jel23\/r+Axo1b6Lp8nYXbNmyMTmhhH00YCLVy65rt7hoDwRAwAQBdhlctWqVDE3fqVMnUu\/JZaJ6qAjv8\/Xzzz\/LAB2tW7cmDlfP68WQQAAEkpeAMwsTkpcXRgYCIGCBgFO\/76RYkCHRRVOF+6ETyhePC2vAEj276L86E+CAHGeeeab8xMOB3RGVEPfxtIO6IAAC\/iGAn1j8M1eQFARA4AQB60E4Emfor5uT69i8YQ2YY2jRMAiAAAiAAAg4RgAKmGNo0TAIgIBja5RS\/GMDq1\/DORdBWMDwNwYCIAACIAAC\/iMABcx\/cwaJQcA3BLziguiUHGYmon4t5xSwRI7LzNhRBgRAAARAAARAIJwAFLBwJsgBARCwiYBTFjA\/uSBmZDr3NQsLmE0PKpoBARAAARAAARcJOPdm4OIg0BUIgIA3CThmobHogpioWK8cgGNf6T7HJgdrwBxDi4ZBAARAAARAwDECiILoGFo0DAIg4FToi++2LKIFgUVUXF5CJfJTKo6lJ675XOQHKo\/FZSW089iehEzGqQ1bUlHFccf6rnBofzHHBEbDIAACIAACIAACBAUMDwEIgIBjBILBCkfa\/uey\/9DG\/dscadvORk+q04C2ljqpgDnD104GaAsEQAAEQAAEQEBLAC6IWh64AgEQsJGAUxYwG0V0tKmylBJH28caMEfxonEQAAEQAAEQcIQALGCOYEWjIOBNAkVlxTRn0\/e0ZOcKWrt\/I+05to\/KKsrEhr6VqlJaahrVz6lLebUb0akNTqF2J7WhM5t1opNqNYxxQM6oYM60WjnEtJQ0ysnMohqZ2ZSVkUXZ6RmUlZ4pPhmUmZFBGWnp4sPHNEoX52mpqZSWJj7imCrWpqWkio+Ikp9KKbR6+y5qFMwjXgsn\/xNHZs2WQc4T\/6+8J\/Mr8x74vzuoRd2moi1ur\/KTpjpX8vhYM6NGjPOCaiAAAiAAAiAAAokiAAUsUeTRLwi4RIDXQ83d\/CNNXzOLvtm4QK6Titb17mN76ee9a+nrDfNCxZrkNqYzm3aSyliHxm3ptIatqGZm1S\/\/tgThENpWRmoGpacKxSclndLFp05GPaqVXksoR5mUnZEtjllCQcqinBPHbKE4sdKUna7cy6QcUY7LcFm+H6oj8hfsmUMLds+TyigrSpFTmbglFFYqIrZthexbXCWgrZWX3YyWbF+hzTRx1TC7PrWq29JESRQBARAAARAAARDwIwEoYH6cNcgMAiYI\/LDtJ\/pkxRc0SyhShWVFJmpELsJKGX++WPN1qBArZayIKZ8WdZtJJelQ4RE6XpJPbG3LCdSkU7JakTDzCMuPOFRUSAtQQB4DVB4IUKAiQGWBciqvKJfH0kAZlYqAGnzkwBqcr0\/TfjNRWuf0+bFeZx3IpNKK0lirG9YrL4umyBlWkZmKNTJyCdwBARAAARAAARDwMwEoYH6ePcgOAlEIvPX9B\/T9tsVRSsR3S1HK2KXR7cRKm52JrWt2p71Hj8TUJCIbxoQNlUAABEAABEDANwQQhMM3UwVBQcAaAV6TlKzJbgWMXRztTnuOHIipSeztFRM2VAIBEAABEAAB3xBI3jc030wBBAUBZwhwkIZkTeU273+V7oACdiD\/aEz4K4R7JhIIgAAIgAAIgEDyEkjeN7TknTOMDARMEYAFzBQmWcgJF8Ti0mLzAqhKIrS8CgZOQQAEQAAEQCAJCUABS8JJxZBAgAmkiEDoyZr84IKYk5UTE34oYDFhQyUQAAEQAAEQ8A2B5H1D880UQFAQcIZAUlvAxD5adiYObW93qin2EYslYQ1YLNRQBwRAAARAAAT8QwAKmH\/mCpKCgCUCvKFwsiY\/WMCa1Ilt82qsAUvWpxbjAgEQAAEQAIFKAlDA8CSAQJISSE3iKIjlPghDn1e3QUxPVvSNoGNqEpVAAARAAARAAAQ8RAAKmIcmA6KAgJ0EUsUqsGRNdlvAnIiCWLOG\/aHtk3U+MS4QqE4Ejh07Zstwy8rKqKioyJa20AgIgIC7BKCAucsbvYGAawRSU+GCaBZ2hgMbMR8pO0iZadbXlgWDQbNioxwIgIBPCBw5coTuvfdeatCgAdWpU4eaNGlC1157LW3cuNHyCL788ks6++yzqUaNGpSbm0vnnHMOvfLKK5bbQQUQAIHEEYACljj26BkEHCWQlsT7gAVs3gfMiY2YiwJFdH7bsxydYzQOAiDgDwJDhgyhUaNGUV5eHg0dOpTatm1L06ZNo169etHKlStND+Knn36ifv36yToDBgygm2++mbZu3UoPPPAA3X333YQfcEyjREEQSCgB6z\/PJlRcdA4CIGCWQDKvAbPfBdGZr8LG9XPNThfKgQAIJCkBVrT4M3DgQJoyZQplZFS6J48ZM0YqTayQzZ8\/v8rRl5eX0+23305paWk0c+ZM6tmzp6yzd+9euuiii4jbY6XskksuqbItFAABEEgsAVjAEssfvYOAYwRSk3gfMPuDcDizXmtv8S46qXZ9x+YYDYMACHibACtNw4cPl0KOHDkypHxxBud36tSJFixYQEuXLq1yIOPHjye2gPXv3z+kfHGlxo0b09NPPy3rjx07tsp2UAAEQCDxBKCAJX4OIAEIOEIgqS1gNrsgpjuwBowntUL8d95pXSzNL6IgWsKFwiDgaQLLli2jPXv2UNeuXaljx45hsg4aNEjmTZo0KeyePoPXfnEaPHiw\/hZdeeWVVLt2bfrss8\/IriAfYZ0gAwRAwDYCUMBsQ4mGQMBbBJJ6DZjNYegzUzMdm7ysHMeaRsMgAAIeJ7B48WIpYfv27Q0lVfJXrFhheF+dGa2t7OxsatWqFQUCAVq1apW6Gs5BAAQ8SAAKmAcnBSKBgB0EktoCVlFhB6JQGzUyatCIrvdRo5xGoTy7TvYX76Xa2TXtag7tgAAI+IjAgQMHpLQc\/dAo1a9f6aK8e\/duo9uaPDvb0jSMCxAAAdcJQAFzHTk6BAF3CCTzGjC7oyDyjJxWry398ewn6JIWfSnVxgiS7FLYsemppicdUehNo0JBEPA8gaNHj0oZGzZsaCirooAVFBQY3lcyeb8v3veLf1irV6+ekq05mm1LUwkXIAACCSHgTOivhAwFnYIACKgJpIl\/qJM12R0FUeGUkZZBV506kLqddBZNWvMB7cjfrtyK61i\/FqIhxgUQlUHAIoHCwHGLNWIvXiOtdsTKiidCerrx6xZHNDSTlHa4vHKur2e2LX09XIMACLhPIHnf0NxniR5BwFME7LTiqAeWQinUNvsUSk8xfqFQl3Xq3O4oiHo5m9duQQ+d9QgNaH012RGgI\/tE2Gl9P7gGARBIbgJNmzaVAzx06JDhQJV83lA5WsrKyiK2cLEV7PhxY+XSbFvR+sE9EAABdwgk7g3KnfGhFxCotgSsKGDNsvOoVjCHgoEgVQQqqFws5C4X\/9CXik9xaQkVlRRRQUkhFRQXUn5xAW0NbqH\/O7MXbSR7LERWJ8kpC5hajrTUNOrb8lLq2uhMYQ17nzYe3aC+bem87Umt6fWrLxKqq3AMTRH\/Fy6O\/Cs2nyt53F+KuD61wSmW2kZhEAAB7xIwq4BFcitUj4zbYiWLPxzxUJ8UBcxMW\/q6uAYBEHCXABQwd3mjNxBwjYAVBaxGWRbNWPSNJdlm\/zSPep\/XkzYX7bBUz47Cbihgipwn1TiJ7j3zfpq\/ax59uvETKg5YWRadAABAAElEQVQUK7dMH+vk5NKFrXuZLo+CIAAC8REoD5TF14CV2lG8CBUFbMuWLYYtKvldulS9XQW3tXLlSuI6LVu21LRXIQITbd++Xf6Ic8YZZ2ju4QIEQMB7BKCAeW9OIBEI2ELA2hqwlJj6XP3zWmreoQUFhTNzlthLK12soWKXvQxhzUlNSSNh0xEvBGzZIT4jEhEmOMhEMFhBAXFSIcLJszJVxhY38cJUJj4l5cLyFiilUxufQsv3rzaUKyDqu5nYMtWr2fnUvfHZlF+WT+UV5VQeFB8hLx\/L+LpCnMsj36s8V\/Jb5p7iprjoCwRAwCMEunXrJjdKnjt3Lu3du1eeq0WbOnWqvOzdu7c62\/D88ssvp6+++oq4jr787NmziaMk8n5jderUMayPTBAAAe8QgALmnbmAJCBgKwFWgMwmVpBiSfuOHqDTClrTuoItsVSPWocVtoz0DKHchP+S7aYFTC1kdno28QcJBEDA2wRKg6WeEJDXbg0fPpyeeOIJGjlyJI0ZMyYk14wZM2j+\/PnUp08fGjBgQCifTzif9\/Tq3LlzKOrhkCFD6Omnn6bJkyfTPffcQ23btpV1SkpK6G9\/+5s8f\/nll+UR\/wMBEPA2AQTh8Pb8QDoQiJmANQtYzN3Q\/OU\/0plNOsXeQISa+\/MPUrsGbQzvOh2Ew7BTZIIACIBADASGDRtG7D44duxY6tevH40bN45GjBhB\/fv3J95AecKECdJ1UN30xRdfLK1cCxcuDGXXqlWLHn74YbkG7Pzzz6fHH3+cXn31VeLzr7\/+mlhBu\/DCC0PlcQICIOBdArCAeXduIBkIxEVAuvyZbSFWE9iJ9uct+o7adjiNdh7dY7ZHU+WOFRwzLJcoC5ihMMgEARAAgSgEeBPmxYsX0+DBg2n69On0+eefy9ItWrSg0aNHU5s2xj80GTX52GOPUaNGjeihhx6iZ555RhZhF2lu+6WXXjKqgjwQAAEPEoAC5sFJgUggYAcBjqrnViosFpuEHi6l9PQ0sQ4qYFu3a\/ZsoJMbN6WDRYc1bTqxEbOmA1yAAAj4moDXviPy8vJo5syZlJ+fLwNpcEj51q1bi+9M49cw3ng5UmJL1+23304bN26kgwcP0mmnnSZD1Ecqj3wQAAHvEYALovfmBBKBgC0ErERB5PgY8aafN6+hzg3bxdtMWP1mtfLC8gIi4hcSCIAACPiNALsRnnvuuXL9ViTly8yY2OrFlrMePXpA+TIDDGVAwGMEoIB5bEIgDgjYRcDKGjAb9C8p9ozvv6HTG51q1xBkO7wvmT7BBVFPBNcgAAIgAAIgAAJ+IWBs+\/aL9JATBEAgIgGxzW\/Ee\/obIjK8LSkoQstvWr+ZajWuSfklBba0ue\/YgbB2vOZeFCYgMkAABBJKoKzCG1EQEwoBnYMACHiWgPk3NM8OAYKBAAgYEUhNTcyf966De+jkrHC3QSMZzeRtP7xLhH7P0hS1c52ZpmFcgAAIgAAIgAAIgIDDBBLzhubwoNA8CIAAUVqK+T\/vOIMghuGe+9N31LHx6WH5sWRUiE2Xm9VuoqkKF0QNDlyAAAjoCMjN0HlDdBc+uq5xCQIgAAJVEjD\/hlZlUygAAiDgJQJWLGB2uSCqx79h\/UbKybBn0+La6TXUTRNcEDU4cAECIAACIAACIOAjAlDAfDRZEBUErBCwsgbMbgsYy7lj\/y5qW7e1FZEjli0tK9PcgwVMgwMXIAACIAACIAACPiKAIBw+miyICgJWCCTaAsayzvphDp3V\/Uzacmi7FdHDyu4+uleTBwVMgwMXIAACOgJlAe2PNrrbuAQBEACBhBKABSyh+NE5CDhHwMoaMKek4PVbgePlcTe\/SyhgtTNrhtpBEI4QCpyAAAiAAAiAAAj4jAAUMJ9NGMQFAbMEUlPTzBZ1tNySNcuoU178GzQ3VW3IDAuYo1OGxkEABBwkcOzYMVtaDwQCdPz4cVvaQiMgAALuEoAC5i5v9AYCrhFIJfPbKzsRhEM90D079qgvYzrPSfsloAeCcMSEEJVAoNoQKA4UklsfM1CPHDlC9957LzVo0IDq1KlDTZo0oWuvvZY2btxopnqoDCtd48ePpw4dOlBOTg7l5uZSXl4e3XTTTbR9e3yu3qFOcAICIOA4AShgjiNGByCQGAJplixgzqpgq7eui9sKVlRaFAIZqKgIneMEBEAABLxOYMiQITRq1CipLA0dOpTatm1L06ZNo169etHKlStNi3\/dddfRsGHDaM+ePVKBu\/POO6UyN3nyZKmU\/fzzz6bbQkEQAIHEEUAQjsSxR88g4CiBVAv7gFkwlsUs895dIpBGHD\/57Di8O1QfLogxTwMqgkC1IFBaUeqZcbKixZ+BAwfSlClTKCMjQ8o2ZswYuvvuu4kVsvnz51cp73vvvUf\/+te\/qH379jR79mxq3LixrBMMBumxxx6j559\/nm699VZatGhRlW2hAAiAQGIJxPE6lFjB0TsIgEB0Ammp5v+8g+SsBYwlXbV5bVxWsAP5h6hedl056PJgIPrgcRcEQAAEPECgvLychg8fLiUZOXJkSPniDM7v1KkTLViwgJYuXVqltJ988oks8+yzz4aUL85IEfuIPPPMM9K9cfHixbR3rzZqbJUNowAIgIDrBGABcx05OgQBdwikxGNuckjEg3sOxNVyk5qN6HDxEYIFLC6MUSszW\/6UijDeJeWlVBIopdITR75WzkvLy0QZcb+8RJZR3+NzDgOuqS\/y2jQ8hYb3vC1q\/7gJAslEYNmyZdJdsGvXrtSxY8ewoQ0aNIj+9Kc\/0aRJk4jLREusrPH2Ij169AgrlpaWJl0RDx48SDt37tQoaGGFkQECIJBwAlDAEj4FEAAEnCFgxQLmjAThrS7fuIp6nnsurdu\/KfymiZzM1ExZygsK2LYjO2nToa0hRaVSGREKCislUjE5cS4Uj2a5Tei3Z11vYoTGRd76\/gOatfGEi5JwN+LEVks+rTzK\/4trzqs8rxBHuQ0AK1TCYlgh1s1x+H7OU45S2TpxLyDy+Z6Tqai82Mnm0TYIhAgUl\/+yZjSUmYATtkhxYrdBo6Tkr1ixwui2Jo+tXJHS\/v37ae3atZSeni7XgkUqh3wQAAFvEIAC5o15gBQgYDsBK2vA+EXerVRRYN19MCMtnbLTs4kjgDWp3Zjq51S6Irols1E\/n62ZQW\/++L7RrbC8Hs27xaWA3X7OINqXf4AmL\/00rG0\/ZaS4sdjQT0Aga9ITOHCg0urP0Q+NUv369WX27t1ijWsc6Y9\/\/COVlZXRNddcQ9nZv0SMjaNJVAUBEHCQABQwB+GiaRBwmsAHi6fRtqM7qaCkkI6X5FN+aSHllxSIYwEdKTpqvvsU6xoYR1nMzsySn6zMbHHMFOsbMilLfDLEr7D8SywrTmnimJaWSlw+RbjPpKam0HlNugtri2KpEZs1C8sMW2XKKsql65p0cxOWo2Lh3lZUViwtM0XBYlqyq\/JX4myqtISZH6D9Ja0ouKlijUY8idk9fvG9dHLdpvTSN29Iq1c87SWqrhVmiZIR\/YKAnQSOHq38Hm7YsKFhs4oCVlBQYHjfTOZrr71GEydOJG5r7NixZqqgDAiAQIIJQAFL8ASgexCIh8CnP\/+PVu9bb6qJ2lm1qG52LtXJqS2OdahOtjjmiGNOLgVKyoXilEVBoYixK1qQ3dSEa1qlYiSUIlaOxJqesorKdT28\/ke9Fxerb0VUJj9EJ14k2NDFH6NgZAdNiRyxkBde5K3IYKVsxEGLG7\/tfr1wZ8yjR774q1xfFa2sF+\/FqYd6cUiQyaMEvBIFkddsceIfpIwSr92KJ3Fo+\/vvv5+ysrLoww8\/lGHu42kPdUEABNwhYPyN4E7f6AUEQCBOAmc370ot6jUTylSuVK7qCmVKnquOrHTlCmUr2r5gs9bNozHz34lTGveqKy817vUY3pMVpcpK2fCetDmXtL2ATqr1Kt31rz\/SYStWTm0zCbnyYmCYhIBAp9WGQNOmTeVYDx06ZDhmJZ83VLaSeE3nAw88QGz9qlmzJn388cd06aWXWmkCZUEABBJIAApYAuGjaxCIl8Aj\/3dXvE3I+k4HX7BFSFUjdio0qmYtnVpxK7Rb3i5NO9KHN4+jO6Y9QlsP77AkdyILc7hsJBBwgwAHwvFCMquA1atXz7S4vNbrN7\/5DX300Ucy2uFnn31G3bt3N10fBUEABBJPwPxGQYmXFRKAAAg4RIDXY\/kppVnZZNqhgaWmmHcdslsB4yG1qNuMPrxpHHVr1tmhEdrfrBWl1f7e0SIIuE9AUcC2bNli2LmS36VLF8P7+szi4mIZaIOVrw4dOtD3338P5UsPCdcg4AMCUMB8MEkQEQScJuA7C5iFTaadYmdFmbBS1oq87HL69+tepsvbXWilWsLKIgpiwtCj4wQR6Natm7RSzZ0713CD5KlTp0rJevfuXaWE7HbYv39\/YotXr1695AbOp5xySpX1UAAEQMB7BKCAeW9OIBEIuE7AdwqYByxgVvZZS3FQ3sz0THrxyieIQ9V7PTlhCfT6mCFfYggUlheSW59oI+TgGMOHD5dbaIwcOVJTdMaMGTR\/\/nzq06cPDRgwQHOP8+fMmUOHDx8O5U+YMIFmzpwp9xSbPn061alTJ3QPJyAAAv4igDVg\/povSAsCjhDwmwuiF17krQSUcNplktdW3X\/BUGouwtSPnPGaJkKlIw9MrI1iCVis5FDPxwSGDRtGb7zxhgwRzy6HV1xxhdw0+c0335R7drFipV8fefHFFxO7G3755ZfUt29fOn78OD322GOSwq5du6hdu3YRiUyaNInMWNQiNoAbIAACjhOAAuY4YnQAAt4nUCHCzPspeUEBs2YBc0fzuO6M\/pRX+yS6\/z9PUWFZkeem1Avz5jkoECjpCfAmzIsXL6bBgwcTW64+\/\/xzOeYWLVrQ6NGjqU2bNlUyWLZsWcgaxnuLKfuLGVUsKSkxykYeCICAhwhAAfPQZEAUEEgUAb9ZwKwoP04x1f9iHa0fNxWP81v1oPcHvU7DPnmU9uUfiCaW6\/ewBsx15NW2w9IKbykheXl50n0wPz+fVq5cKTdNbt26dcT9wYqKtD+g8JqvoM+CJVXbhw8DBwETBLAGzAQkFAGBZCeANWDWZzjNQhREp10Q9dK3O6kNTRZh6ts2bK2\/ldBrp4KRJHRQ6BwELBCoVasWnXvuudS2bduIypeF5lAUBEDApwSggPl04iA2CNhJAAqYdZpWLGBOBuGIJDm7In5w0xjqecrZkYokIN8dV8wEDAxdggAIgAAIgIBpAnBBNI0KBUEgeQlAAbM+t1asWlbKWpckco2amTVo3DV\/o7\/MeJWmrahcdxK5tPN3YAFznjF6qCRQWFYIFCAAAiDgWQKwgHl2aiAYCLhHwH9rwMxvguwURStWLSvWMrvlTU9Np79c+hDd0+t2u5u23F4iOVgWFhVAAARAAARAwCECsIA5BBbNgoCfCPgvCmLiXdmsWLXcDMIR6bkbeu4tdHKdJvSn\/z1PZYGySMUczfcCB0cHiMY9QwAWMM9MBQQBARAwIAALmAEUZIFAdSPgNwuYF17krchgpayTz96V7S+mide+RHWyazvZDdoGARAAARAAARCIQgAKWBQ4uAUC1YUA1oBZn2krSpWVstYlsVaje\/MuNOmmsdIaZq1m\/KW9xCH+0aAFEAABEAABEIiNAFwQY+OGWiCQVASCFPTVeLywD5iVgBJWyroxEa3qt6APbxpHd336R1qxe7UbXco+sA+Ya6irfUfFgdJqzwAAQAAEvEsACph35waSgYBrBAIVAdf6sqOjVAt7cNnRn1EbqanmHQi8aPlpULMevXv9a\/Tw5yPp6w3zjIZoe55TiujhoqO07fBOKq8oJ36WywKVR74uF9dK\/i\/XgbByzerkUf+OfW0fMxoEARAAARAAAT0BKGB6IrgGgWpIwH9rwBIfhCOV\/K2A8WOenZFFr131F3ph9jh6f8nHzj\/5Kc7M25yN39Ojnz8Tl\/y8Lu6K9hdRWmriI2zGNRBU9jyBY8eOUW5urm1yBgLiR4eyMsrKyiJEGrUNKxoCAUcJQAFzFC8aBwF\/EAgGK\/wh6AkprVifnBpYo1oN6MLWvSgjLb3yk5ohFZqc9GzKycihmpk5VCuzJtXKqkltGrRySoy422Xr3KMXDqeT6zah52aNEc6ozrmjOmUBs0Pmo8XHafGOFXROi65xM0UDiSdQUOqtfcCOHDlCTz31FL3\/\/vt06NAhysvLo549e9Lzzz9Pp556aszAKioqqE+fPjRv3jz68ccf6eyzvbTxeszDQkUQSHoCUMCSfooxQBComkDAZwpYmXAtW7B9EfGRQ6rLD58r1xWcp70+v0UP6t60S9UwTJbo1LgdvdrvaZOlvV9scLdfU9PcPHros79QcXmJIwI7tQYsGLRHaZy1fi4UMEdmHo0OGTKEpk2bRh06dKDrrruOVq9eLa\/nz59PM2bMoE6dOsUE6bnnnpPKV0yVUQkEQCBhBKCAJQw9OgYB7xDwWxTEg6WH6J7\/PWEJYOOajWxVwCx17pPCF7bpSe\/dOIru\/OQxOlh42HapnVsLZ48CNnvDAnr0orttHzcadJ9AiYeCcLDixZ+BAwfSlClTKCMjQwIZM2YM3X333TR06FBiRcxqWrRokbSqWa2H8iAAAoknYH4RQ+JlhQQgAAIOEbDLguCQeAbNWl9L5NzLv4F4Ps7qlNeOJt88jlqLSIm2J+vTZkoEmwxgtO3ITtpwYIupPlEIBMwQKC8vp+HDh8uiI0eODClfnMH5bPlasGABLV261ExzoTKFhYU0ePBgatCgAXXs2DGUjxMQAAF\/EIAC5o95gpQg4CiBgFhHkOzJC6Hr\/cK4WZ0mcq+ws5vbux7KSuASK6zsWAOm9DfLpYiQSn84JjeBZcuW0Z49e6hr166GitKgQYMkgEmTJlkC8cADD9DatWvp73\/\/O9WvX99SXRQGARBIPAEoYImfA0gAAgkn4DcXxFgMKVuFdYPXjX2z5Tuavdm6u0\/CJ8llAXJFVMC3rn2R+rW\/xLaenYrQZqcFd9b6ebaNFw0ljkBBaRG59Yk2ysWLF8vb7du3Nyym5K9YscLwvlHmZ599RuPHj6c77riDrrjiCqMiyAMBEPA4AawB8\/gEQTwQcIOAnS+wbsgrYi1b7uajn\/9N\/OHEkQrntuppuY3qViEzLYOev\/JPdLKwiI3\/\/h9xD9\/LURCVwS3ftZoOFByihjVhVVCY4Bg7gQMHDsjK7CpolBTr1e7du41uh+Xt27ePbr\/9djrttNPopZdeCruPDBAAAX8QgAXMH\/MEKUHAUQKBoL82Yraufmnx2emypm05Oa\/u7nUbjbz0YUqPe4+seGfOmK9da8C4dX42vhHBOJBAwA4CR48elc00bNjQsDlFASsoKDC8r89k5evgwYMynH3NmjX1t3ENAiDgEwKwgPlkoiAmCDhJwG8bMcdiAdPwsydonqbJZL+4pvMV1CT3JBrx7yeFa1dseyw5ZQFjtcnONGvDfLq2Sz87m0RbLhMoKSt1uUfj7pQ9C9PTjV+30tLMb\/zNbofsfvjEE09Qjx49jDtELgiAgC8IwALmi2mCkCDgLAG\/bcQcLw1YwGIj+KuW3WnSoDGUV7tRTA34YQ0YD2zBloVUXObMXmgxgUMl3xJo2rSplJ03XzZKSn5ubq7R7VAeB9zgwBvdu3enJ598MpSPExAAAX8SMP5Jxp9jgdQgAAIxEvBbFMQYloBpyEAB0+CwdHFao9b00c0iAMAnj9CafRss1XVqKwC757OkvFQqYRee1svS+FDYOwTyS71hATOrgNWrVy8qvMcff5w49HxWVhb99re\/1ZRds2aNvGbFjNea8b5i559\/vqYMLkAABLxFAAqYt+YD0oBAQgj4LQpiQiCh0xCBRrUa0D9uHE0P\/Pdpmrv5h1B+ok7sdUCsHAW7IUIBS9SMJk+\/igK2ZcsWw0Ep+V26dDG8r2Tm5+fLU96wOdKmzf\/73\/9kmUsuuQQKmAIORxDwKAEoYB6dGIgFAm4SsNuC4Lzs8QVzsDNog\/Nj9WYPNTNr0NiBz9Jfvx5F\/1z2H1NCOmYBc2BCORAH\/zDhlMymgKGQ7wl069aNGjduTHPnzqW9e\/fKc\/Wgpk6dKi979+6tzg47f+utt0hRwvQ3b7nlFuJw91OmTKHOnTuTovTpy+EaBEDAOwSggHlnLiAJCCSMQHWzgPlP4UzYoxG14zQRFfHPl9xPzUWY+pfnvBm1LN9MEf85kZyYz4OFh2nZrlV0ZrNOToiMNh0mUFDiDRdEdhkcPny4DJwxcuRIGjNmTGjkM2bMkNasPn360IABA0L5fMJWrkAgIBUqdk9s3ry55r76okaNGvKyVatWpOwrpr6PcxAAAe8RQBAO780JJAIB1wn4bQ1Y3IAcsJjELZOPG7jtnEH0Sv+nKDMtM+oonIqC6NQ+drOFGyISCMRLYNiwYdIqNXbsWOrXrx+NGzeORowYQf3796fs7GyaMGGCCOyq\/XHi4osvJraKLVy4MN7uUR8EQMCDBKCAeXBSIBIIuE0AURDdJp58\/V16eh96+\/pXqG5OnciD071kRi7ojTuz1s\/zhiCQwtcEODAGuwhedNFFNH36dLrrrrto9OjR0h1x8uTJ1KZNG1+PD8KDAAhYJwAXROvMUAMEko6A\/\/YBS7opSIoBsbvehzeNpTumPULbjuwMG5PfLGAbD26lbYd3Uot6zcLGggxvEygpK\/OUgHl5eTRz5ky5jmvlypXEGzC3bt2aIu0PVlRUZFr+OXPmmC6LgiAAAt4gAAuYN+YBUoBAQgkEgoGE9u92505EzXN7DF7tr2W9k6US1rVpxzAR\/bQGTBH+a1jBFBQ42kCgVq1adO6551Lbtm0jKl82dIMmQAAEPE4ACpjHJwjigYAbBJxaQ+OG7LH0Ud3GGwujeOrUq1FXuiNe2raPphmnIgo6OZ+zN8ANUTOJPrkoLC0jtz4+QQIxQQAEPEQACpiHJgOigECiCPgvCmJ8NiwnouYlau682m9Weha93P\/P9Luzb3RcxPiehujiLd6xgo4UHYteCHdBAARAAARAwAIBrAGzAAtFQSBZCfgtCqKTL9zJOseJGBdHdnuw9x0yTD3vFxaLBYytW+UV5VQaKKMycSzTHTm\/pKKEOjZtKyLJpcpoctwv98UxP9jtka9DHxkKn+\/Lm\/I+Z0n3yMosgUq5V0ntx51LqW+bCxKBEH2CAAiAAAgkIQEoYEk4qRgSCFglUN2iIFrlU13KByoCxMp4hVgTWBoso\/KAUHgqWPERH0XxEeel4lN+4vqX88p8VpL4HudzPaWNX5\/Tlzbmb6H7v3raQKH6pX1WqNQKF58nOtXaVAsKWKInwWL\/hcXeCsJhUXwUBwEQSHICUMCSfIIxPBAwQ8B3URDNDMqGMmx9KS4rodLyUiou56OwtojrEnH9y7GUglRB+aWFIq9UWGoq7xWryrDyoig3gaBQcISiw8w5j90\/lXus+LACxEFRKipEq8p1qFzlPS7DSvMvZU+0caLtSiWKy1b2pS1X2Qb3W8F9iY9eybninD50IHOfDQS1TdTLrkv5BeW0xSBCorakt65+2PkTHSs5TrlZtb0lGKQBARAAARDwJQEoYL6cNggNAvYS4Bd1L6f0lDTKycgmXleUlZpJaaWp1CKzKaXK\/6STGaUEhdsY+yae+MjADELJkYqMUDJY2ZAKRyAgFI4AXTP6NpUSValcVSpZQtmSSlelVcYMlwa16lF2TjbtO37ATHHPl3HKxfNw8RHKycqhzo1PoxV713uegyIgK6jfbPmOBpzeV8nCEQRAAARAAARiJgAFLGZ0qAgCyUPALhdEVpQy0jIqP6nplJGaQZl8zecp6WLdTRqlCaVJJqkosRVIWGFYKRLubmxhKhMfVoD4kybW8ezPPyjX\/6hp\/7xhjfoy4ecH8w9T65yWVCMzR0ReM79\/T8IFjySAUxqY6K+ovIhKU0rp3OZd6PvtyyJJ4Ln8mZvnQgHz3KxEFqi8LPGuq5Glwx0QAIHqTgAKWHV\/AjB+EBAELjm9N7U96VRhYcqs\/KTxMYsylWvN8US+KLNkywq67\/0n5PogVpjsTt1OOYN2Ht1jd7OOtLdp\/1bq0qIjrd2\/UboQOtJJkjTKLpbbC7dQ71bd6dvNi3wxqoW7ltKR4mNUNzvXF\/JCSBAAARAAAe8SgALm3bmBZCDgGoGrz7gspr7W7dpIx4vzY6prphIrhH5Ky7b9TGe37krLdq0SnpAOmpEchuKW7BuOraferc+ieZuXel5pZTfd2Vvm08B2lztMH80nO4Fjx45Rbq49ivzx48eJN3fmKJ9IIAAC\/iEABcw\/cwVJfUaA140UlBVQcaCICssLRRCHIuF+VUhF4prdsCo\/4lrklVaUUk56DTqr0dnUvn5H34w0lrDiVga348huK8U9UXbhpqVSCVu+e7UMsOEJoawKwevpXEobjm6gc0\/pSEt3rBd\/L95235yxaQ4UMJeei3i7KS3yVhTEI0eO0FNPPUXvv\/8+HTp0iPLy8qhnz570\/PPP06mnnmppuLt376YHH3yQ5s2bR9u2baOaNWtS79696cUXX6QOHTpYaguFQQAEEkMAClhiuKPXakBgxvb\/0Xd75lka6boja+jCky+hPs0uslRPXXj3kb30wXfT6MYeV1Pz+k3Vt2w\/T0117kW9cZ1GtOPQLttldqNBVsK6t+pCK\/es9bxlx5iHu9a7Lce2Uru85rT94AHaV3jIWCQP5C7Zs5IOFh2mBjn1PCANRPATgSFDhtC0adOkgnTdddfR6tWr5fX8+fNpxowZ1KlTJ1PDWbhwIV111VXESljHjh3prrvuoqVLl9IXX3xBc+bMIb7frl07U22hEAiAQOIInFgNnzgB0DMIJC+B2F5iZ+2YQZ9s\/Cfll5l37TtWdJz+tXg63f72\/XTWU5fSS9PfoKtG3Uqb929zFG+aCKrhVDqlYXOnmnal3UWbl1Hbhq1lYA5XOrSzk9ge3bgk2FO4lxrWrUmn1m8RVztOVubQ\/bM3z3eyC7RtE4FAaTm59alKZFa8+DNw4ECpLI0fP56+\/fZbev3112nPnj00dOjQqpoI3R82bJhUvkaOHEkrV66kMWPGSEvYfffdR\/n5+XTPPfeEyuIEBEDAuwRSRKjmBPxT610gkAwE7CIwfet\/hQUs9pc1DrF+Uo3GVCezrnRlKxcb4\/J+Uv+e8Z2MGJiWmib9\/jl64Moda8P2cuJxnJTbkD4aNp46NjvdrmFp2pm\/biFd\/dqtmjy7Ls5ufSYt2rLUruYS1g4rkkXBYjpUcCRhMljt+LKzetOhnP1Wq9lSPjsti2qn1qele7wV6VIZ3Jl5nejNK59XLnH0KIH2z1\/gmmSrH5kTsa\/y8nJq3ry5VLRYYWKrlTp17txZKlI\/\/fQTde3aVX0r7HzmzJl0ySWX0EUXXURfffUVpab+8hv6\/v37qUWLFnI9GLsl5uTkhNVHBgiAgHcI\/PLX6x2ZIAkIJAWBeH\/aELtW0Z7C3bT2yGpaf3QtbT62iXYUbKelW3+mpSLYw+Ity4mtLHyu30hXAbjv2AG6\/OWb6N15U5QsW49OuiBuFlEFkyFtObCd8mqf5KuhxPvsxjPY4kAJHSzfS+e1iP4yGk8f8dRduudn2l9wMJ4mULcaEVi2bJlUvli50itfjGHQoEGSxqRJk6qkwtYuTryWTK18cV6jRo2kBYwVMShfTAQJBLxNAAqYt+cH0vmagP3GZTZYR1K2IqEqKS+lR\/75V\/r9Ow9SfnFBpGIx5TsVhKN1o5Z0sOBwTDJ5sRIilFmbFXb121qwmfq07m6togulOULk15utre10QSx0oSNQWlJGbn10XWsuFy9eLK\/bt2+vyVculPwVK1YoWRGP69ato6ysLOrRo4css2PHDpo6dSrNnTtXKl9pac65hEcUCjdAAARiIgAFLCZsqAQCVROwX\/0iSgnG\/if7n5++pEtevIFW7VpXtfAmS7AbpBMpr24jJ5pNXJtOPAwOjsatMPRVDWH90cow9eliI28vpRmb53hJHMjiYQIHDhyQ0jVo0MBQyvr168t8DqpRVdq5c6e0dHEY+169eknXxuuvv54uuOACeT5lijOeDlXJhfsgAALWCcT+Nme9L9QAgWpGwIG37jjDg\/NmweySOPn7f9kyF6kO7T1TWFpsi3yeacS5YJGeGaJTgnCY+rNbtKPambWc6sJyuyv2raE9+fss10OF6kfg6NGjctANGzY0HLyigBUURPdO4P2+WPFiL4jzzz+fNm\/eTE8\/\/TRNmDCBbr31VuJ+brzxRvr4448N+0EmCICAtwh462dFb7GBNCDgOQJ2vMcXl5XQvR8+Sd9tWEzPX\/845WRmxzxOJ1wQ2dqxfs+mmGXyYkU75s3VcTnw20E88m87vp3aNM6jPYeP0u78xAQH0cs\/U7ghDu58jT4b1x4hUFEa8IQkylqt9HTj1y2zboOKJY2tYJmZmcQui4ryxiHu2Qp2++2304gRI+jKK6\/EOjBPzD6EAIHIBGABi8wGd0AgLgJOvMMG47SAqQc05cd\/S2vYhr2b1dmWzlNS7P8KadukNRV6fENeS5BkYb+pYE48vdapqWvsK9xPdWtnUdsGLdXZCTvnTZmRQKAqAk2bVu7FyJsvGyUlPzc31+h2KI+DbCiJQ9ArypeSd9ttt8kgH7t27aLly5cr2TiCAAh4lID9b08eHSjEAgHXCTgRSs5GBYx5rN69Xq4L+2rV7JjwpKnCIMfUgEGlujXqGOT6PMtn+pcTj64dM3is9DiVpRZStyYd7GgurjZWH1hPO4\/viasNVHaOQHlZgNz6RBuFWQWsXr3om3vXqlWL6tSp\/G7s1q2bYZddunSR+WvWeHMLB0OhkQkC1ZQAFLBqOvEYtvMEnLAhpIgIbHanwtIi+m7XAvpg3bt0oMiae5cTLoiHC\/2zX5bZuUghf2lg9j9lZklVXa60opT2l+6iXi3PrLqwwyVgBXMYcBI0ryhgW7ZsMRyNkq8oT4aFTmSefPLJ8ixSwI6ysjJ5v1mzZtGawT0QAAEPEIAC5oFJgAjJSsD+19igQy\/yFRVB2np8M01YPY6+3vEVBSrKTU2K3UE4ambVoHVJtv6LQfpL\/WKJ7X92uVW7UoWQb3P+poSHqZ+5aa5dQ0I7SUqArVWNGzeWoeL37t0bNkoOI8+pd+\/eYff0GX379pVZc+aEu79WVFTQkiVLiNeUnXvuufqquAYBEPAYAShgHpsQiJM8BBwJ5e3QezHvu8SJj9\/vnU8frH+PCsujR+Xi8nZbwNrmtZYycNtICSTg0HNm94g4TP0Frc+kzLQMu5s21d66Q5to29GdpsqikLsESotKya1PtJHxvl3Dhw+nQCBAvHZLnWbMmEHz58+nPn360IABA9S3ZD4rWocPHw7lP\/jgg3IfsBdeeIF+\/PHHUD6fjB49mjZu3CgjJLK7IhIIgIC3CUAB8\/b8QDoQ0BBwKOo7BYUFTJ125G+jt1e\/RfuLoofaTrV5H7DsOCIyquX32rnvXBC1j4PXcGrk2Xh0E3U7uS3VyaqtyXfrAm6IbpH2bz\/Dhg0jdkUcO3Ys9evXj8aNGyejFfbv35+ys7NlKHn9Zu0XX3yxtIotXLgwNHBu46mnnqKioiK69NJL6fe\/\/z2NHz+ebrrpJrrvvvuoVatWNHny5FB5nIAACHiXgHFcVO\/KC8lAoFoTcCo4QkC4r+jT0dIj9O6aiXTdqTfSKbmt9bfltd0uiHuOhLvoGHbss0ybY6e4MHoPaGBChLSUNGllTQtWHtnimio2I+fom6zUiit5LCoopQ71xDMqgsLUqZlTWUecy\/JcR5yniV8v+Hnlunzke\/zSK8+5lVRusfJaHCpbFvc5VZarPFZmsX27QlhrA1QzwwOsXHgi0EXsBHgT5sWLF9PgwYNp+vTp9Pnnn8vGWrRoIS1Xbdq0Md34o48+Su3bt5cK3MSJE4k\/NWrUoMsuu4xGjRpFeXl5pttCQRAAgcQRgAKWOPboOckJ8IaZfkmVLojhBvHSihKasmES3dDmZkMlrDxgbq2YGQ4Na9enLQd3mCnquzL8Yu+rVJFCjSuahBavySeZ\/yc+0rVW6OvyUiju\/JhXiP8FhfsqryXkZ0k5smLPa1MCFQEKiHx55Gvx3PB5ufIR13xeFiijcuGqVVZRJjectcqsbk4dGtznMsrJNeJ9YgBCcdIn5Q7nG+4epS6gq1wYKKCDxQeoQbbxRru64rh0iUBFueFMutR7eDesGM2cOZPy8\/Np5cqVMox869atKdL+YGzlipT+n733AJMkq+58T\/os701773vaTk\/3OMbAAMKDWCQtekhokeEJCUn77dsH0ltpP2DZb7Wrh0AGI+mtFoHQYiU0+GEYb3rae1Nd3nuX3rxzIiurs6qyKiMyIyIjMv+3Jiciblz7u1HV8c9z77nvfOc7ST4jIyPU3d1N4sBD9gZDAAEQsA8BCDD7jBVaajMC8s6mdzDqRT5lAVspwKT9sWSM\/qnjqykRVrNtSZemg7NLrgu52N6yhcbn7653KKQs5C2MQCgSoefP3536VFhp5uWeCk7TF3\/0LfrAI++ghhbz1oXdnr4BAWbeMNu6JlmfpZeTjNbWVpIPAgiAgP0IZH\/jsl8\/0GIQsCAB\/SWYIY49mJxYKdYKMbZIiCVMPCVmhhkdBdjyNRCZ9eAcBNQSiLAV7W9++k3q6Z5Rm6XgdCLAEKxFIBZmq6pJH2v1HK0BARCwAwFYwOwwSmgjCCwQWFiSojuPbGvAllciIuxrLMJ+kacjblmwhKUtYG6nm3weL\/ncXvLyx+NyLx7l3M0fF6eRjZvTa2\/S5cvUNZmedm3wdjqq5I7ZJsSVXCct1qF\/evl79Ma5h+nQvvXK+i4jmzcTnaaR4BC1VmD9jZGcUTYIgAAIlAoBCLBSGUn0w3IE9Ld\/8bobIwplcrksYGm4aUtY\/605+uGZ5ygYCSkvt7zChwLRoPJJp8XxLgHbWfdKRDH+6PJzNDF7iB45sZ90dth5d3AXzsQKBgG2AgsiQAAEQAAEshCAAMsCBVEgoAsBI9SSQS\/GaixgaSbiIGH9zmo6PneAfnz2hXQ0jqVEwIhnt0h8Xuu+qDgTeezkfkNbcHv6Jt3f9jrFY6KhFaFwVQRioaiqdEgEAiAAAsUggDVgxaCOOsuCgBHGKofie05\/fAn2QKclxJJROnRkM73h6ANasiGtbQgYpPSL1P+Z4JzhNc\/H5mgoMGB4PagABEAABEDA\/gQgwOw\/huiBZQnoL8GSBrkzjy\/biFkNUhFhR45tgQhTActucsaotYYqUNk6ya3p67ZuPxoPAiAAAiBgDgFMQTSHM2opQwL6yy\/jIMqeTPkEmY4oIkwMcz85\/2I+RZRFHqOEc1nA06GTZgngOzO36KF1jymOZnRoNooogEAyvLZn1wKKRlYQAAEQKJgALGAFI0QBIGAiAd4g14igZQ3Y8voVEXacLWFHMB1xOZv0tTGjli5d\/6OdvjxQ03uznKAE40Hqn+9V0ySkAQEQAAEQKGMCsICV8eCj60YT0P81Nhkz5lU+Hs\/PApYmmBZhsk\/ZU+dfSkfjaFsCxjxnxcNhXn\/EG+KmarYKIxSVQDJY2N80Ixs\/MzNDtbW1BVcRi8UoHA5TVVVVwWWhABAAAXMJwAJmLm\/UVkYEjHAkF4\/pL+pkSPKdgpg5nCLCjh7fRo8fPpUZjXMhgEVVRX0OzMTfOXNbl9+nogJD5boTmJqaot\/7vd+jpqYmqquro3Xr1tF73\/te6ujo0FzXN7\/5TTp8+DBVVlZSTU0Nbd68mf7oj\/6IgsGg5rKQAQRAoDgEIMCKwx21lgUB\/cVSPKp\/mTIUsQItYOnhjCYidOze7RBhaSALR\/PsL8sqzvvSmOcs7+bYKGM4Eabe+S4btRhNNYPAhz70IfrzP\/9zam9vp9\/8zd+k3bt3kwiphx56iC5fvqy6CZ\/+9KcV4Xbx4kU6fvw4ve9976ORkRH61Kc+RY899hiJVQwBBEDA+gQgwKw\/RmihTQkY8QobjRqzsLyQNWDLhyctwh47fHL5LVzbhYARD28R+26ENXqt7sg0RITiEkhGEmTWJ1dPRWjJ593vfjedP3+ePv\/5z9MzzzxDn\/vc52hoaEgRZLnKkPs9PT30x3\/8x0rSp556il566SX62te+RgMDA7Rr1y565ZVX6LOf\/ayaopAGBECgyAQgwIo8AKgeBLQQiEaN+XZTTwEm\/RERdvzeHQQRpmV0rZPWzCl7ZvQ6kTTmi4vV2t45e4diCWN+V1erE\/HWJCAWqY985CNK4z7xiU+Qx+NZbKjEHzx4kF588UVFmC3eWOVEBFc0GqUHH3yQHn\/88cVUjY2N9OEPf1i5fvrppxfjcQICIGBdAhBg1h0btMz2BPQ3I4TCEUOoxOP6vyyKCLuXRdijh+4zpM12KtRh0P5txjGw36TJtViYLcBivB6ym0UYAghcuHBBsXIdOXKEDhw4sALIL\/3SLylxX\/nKV1bcWx5RUVGhRCUSK79QkHVlElwul3LE\/0AABKxNAF4QrT0+aJ2NCSQNmPcUihgjwGJ57gOWa3giLMJOnNipJPvZxVdzJS\/h+\/qLcSNhxZPW9SCXT7+zvbDmU46WPLd4GuKOut1asiCtjgSs4gXxzJkzSq\/27duXtXfp+EuXLmW9nxn5+te\/nnw+nzL1UMqVNWASIvzvwl\/91V8p529729uUI\/4HAiBgbQKwgFl7fNA6EFhCIBgOLbnW60IvJxzZ2pMWYY\/ccyLb7bKIs9tGzHOR+ZIaF7MtYAKvZ66TInFjvjApqcEp8c6MjY0pPRTvh9mCTB+UMDg4mO32kjhxN\/\/P\/\/zPigfFkydP0s\/93M8p0xvXr19PZ8+epd\/\/\/d+nD3zgA0vy4AIEQMCaBGABs+a4oFUlQED2xNI7RA3ycGWUBSzdfxFh9923i8Qo+Ozl0+nosjnabULfyOx4SY2N3msc1cARK2Ln7G3aU79fTXKk0ZlAwiCPsVqbOT09rWRpbm7OmjUtwObn1X3p8cY3vpF++7d\/W3E7\/4Mf\/GCxzHvvvVeJ83q9i3E4AQEQsC4BWMCsOzZoGQisIGDEtEapxAzXxSLCTp7cRa87WIaWMBspMJ\/HR1PB1EvjigfQphFGfBmiBgW8IaqhVNppnM7Ua5bbnf37bi1rtnp7e+mRRx5RhNb73\/9++uEPf6g48BDX9NevX1ccevz4xz8ubaDoHQiUCIHsfxFKpHPoBgiUGgGX05gF1mZZCNIiTITkc1deK7XhWaM\/9lFgLn5hjNPKRf5rdM7yt4qxBkyg9M31UCgWIr\/bb3lGaKAxBGR6oISJiYmsFaTja2trs97PjJR1Xs899xx99KMfpc985jOLt+6\/\/3569NFHlT3FPvjBD1JfX9\/iPZyAAAhYkwAEmDXHBa0qAQJGfOtewQuwjQjRWNSIYrOWKSLs1KmUc4JyEWEOA6ajZoWLyKwE4ia7oU83IsFC9s7MLdrfeE86CkeTCIRfGTGpprWrUSvAGhoa1i6I7373u99V0nzsYx9bkfbUqVP0xBNPkExLlPVgx44dW5EGESAAAtYhAAFmnbFAS0qNgP5LwKhywQ2x3qjMsoCl250SYXtYliTp+SspL2HpeziCgFYCbz\/yOO3a0cLO\/nm6lyP9i8dH3tBMEb9FNEDenrkBAaZ1QEsofVqAdXV1Ze1VOv7w4cNZ76cjg8EgXblyRdlHbLX1ZNu3b1eSv\/zyyxBgaXA4goBFCaQmJ1u0cWgWCNiZgBEWsOpKY6YyFWPT2EgiTPef2ksPHUi5UrbzWOduexEVQO7GLUlh1DrDJZXofCHTJl1ull\/uJMks3dSHr0WPOVmEFXFn6f75XgpE1TlY0BkLirMAAbFEtbW1KVMHh4eHV7To61\/\/uhIna7vWCrIH2JYtW5SNmMXClS1cvXpVid6zZ0+224gDARCwEAEIMAsNBpoCArkI+P2eXEnyum+Ud8VcjUmLsAf3Y7pMLla4vzqBhAF77q1em\/Y7t2duas+EHCVBQPbt+shHPkLxeJw+8YlPLOmTOMx44YUXlPVb73jHO5bck\/hnn32WJicnF+Pf\/e53K+fibn6518Rvfetb9LOf\/UxxUX\/fffct5sEJCICANQlgCqI1xwWtAoGsBDz+pZYUj8tNjRX15HN5KcZur6dCMxSIBLPmXSsyHs\/P6YLs15tMcJvkGOMPHxPxJH\/kyCtgYgmKx5LsZVGOcT6mPtFojKoba2guEqAov5h4PRW0d\/0uuj5wa61m4h4IZCVQjH2+sjZklUjxhnio6egqdxFd6gQ+\/OEP01\/\/9V\/TX\/7lX5JMOXzLW95CN27coC984Qvk9\/vpS1\/60gor7Rve8AYKhUKKp0NxPS\/hU5\/6lLLGS8TZiRMn6F3vepdiFXvxxRfpy1\/+Mlt8nfR3f\/d3VFNTU+pI0T8QsD0BCDDbDyE6YFUCek9BdCSdvJ7FTfetO6z8wzw0Nkxdg700lVzqXauppoG2r99KlVWVFGVVNMub6gbZE5tMMxRvbH63j7xON7mdHnI7pMzUz01etB6NRCnCe41Fo3zkTzgS4WOEwgufEG8EHYqGKRQJUzAS4n290utttI\/Cppb15G2toIlQyuV5pbeC7tm8jy71XNNeGHKUNYFCnkMzwA0HB\/n3cIZqvLk93ZnRHtRhLgHZhPnMmTP0y7\/8y\/T973+fnnzySaUBmzdvps9+9rO0c+dOVQ2qrKykV155hT7+8Y\/TF7\/4RRL38+kg+4CJl0QRZgggAALWJ+Dgf7jyf4Oyfv\/QQhAoGoGv3vxfdH0yNSdfTSPkVzElslypY9xFwWCCxmdmqW9iiLom+kjcabdFmqizq5Mm51LCRU3ZVk2zrX0LJRqcNBOZVZrodXtpV+NWOtt50apNzqtdD+w+Qad7zueV1+xMFV4\/JXgtlRnByV8AVPoqqMpXSRU+P1V4fST7kHncHvLyR\/ZIko+T13Hx9wSU5I9Yu8RNvnyhsK1+A7XVV\/Dar9S6LzPanG8dp9oeoqPNeDnOl1+p5Jubm6PLly+TbMAsTjNW2x8sV39l78bbt2+TbPS8d+9eqqury5UF90EABCxEABYwCw0GmlJaBCbGwzQ+zC+KPMUuGmerEv+DGZFjXKxMbF2KsWVJ+bBFSaxKsXBuAPwCOjo3QY3tLVQ1XU19o\/2581g4xeD4EN2z\/uCiAIswjxtjHXTfzmP06u3sC80t3J2Sb5o4sxCxlCmYvCyYRCxlCiZJx9pqhWCKsmgSD5hhftbFKhuORxaZBSlE8lECT2cl+eQIe9q2EBt0bRFkGiIEmC2GytBGVldX8zYcpwquQ4SbCC8EEAABexKAALPnuKHVNiBwue82PX37Rd1bWldVSzcHOqixup72bdlN17rtu8D\/1JETdGHi+hJGMV5AdnHoGt2\/+1566WZpbNYskzyLGZprG6mlrpH8bG3yebxsYeIpqPxRrEsup7J2RBwFioVJxFNMfhSxpK9g0ptBhccYpzR6t1PKGwuN0lR4kup9DUYUjzJBAARAAARsRAACzEaDhaaCgBDws8VBwsTcFAU8ITqx7yidvnZOibPb\/2LivSNLkOmYZ\/sv00P7TtLz117JksJuUcZP6ROHLLs27qD2phby+r1sSwqxZXGOJnmNXZy9o8zztXyUID5X7hqflsB083y+YmxLsKQRKi+8PD1R8QCjMn2xk4kV7N7Wwq0fxe4H6gcBEAABECiMAARYYfyQGwRMJyDrY9IhFA3RpeGb9PCRB+i58\/pb29L1GHX0JNb+E3S65wI9vP9+eu7qS0Y1wbblypS\/\/Vv3UBsLrogrSr1zAzQXn6fbYd5zSsVs1tU6HhcXljYJbMSzVbgFAWar8UJjQQAEQMAoAjb758soDCgXBPQnoLcXxHQLl28qK04JXuk+R48cf4ieOfN8OpktjuJtMVd4lfv28P5TLMJezpW0pO\/L1MH9W1hwNTdT2BmhntkBmkhMKZZQPTtu1HOrZxvTZTmc+W2fkM5v9nEqMkHjPBWxyd9idtWoDwRAAARAwEIEIMAsNBhoCgioIRBnRx7Zwkt3ztADR0\/Ra5fOspOPVeaXZctYxDiPyjU8r3afpwf33UcvXX9N8YJXxCbnWbX2NWAy1VQsXK1NzRRyhql3tp\/GE5M0Pnt3Y9Y8G5Mzm5e3KIgkcovjnAUZmEDa6HAaP7VT7y6IFQwCTG+qKA8EQAAE7EUAAsxe44XW2oiAUTs8iFfF1cJrXRfowN791HGng2YCKdfuq6UtdrzH5aHByKjqZrzWc5FO7D5KZ29fVDxJqs5ok4R+dv9+kC1czU2NLLjEwtVPY4kJGptdus+bGd2p89fSaGDcjKryrqOxsj7vvMXMKOvAxCU9AgiAAAiAQPkSgAAr37FHz21KILaKBSzdnSv9N2jLho1UPVFFA+zm3arhgUMn6eLMUg+Iudp6vu8KHdq2n6723FA2gs6V3sr3Zd+rA1v2UjPvBxR0hJQ1XCOJcRqZLb7waatqsbwAq\/PZc1Pj2egMDQeGqK2y3cqPJ9oGAiAAAiBgIAEIMAPhoujyJmDUWhrZRyxX6B7ro+aaRtpduZNu9t7Oldz0+231LXQz0JlXvZcHb9DuDdupe6iXZoLWtvJldlA2HD6wdS81NTZQgHe86uU1XCPJMRZcY5nJLHHukZ2NLR5qeD8yu4bbMzcgwOw6eGg3CIAACOhAgLfKRAABEDCEgEHLU4LhBVfiORotU9dGeNH\/sT2Hc6Q0\/\/b+XXvVbTy9StNujtyhdS3tishcJUnRo8Vb5XFm\/7ZHniD\/Bj+17WqhYfcoXZ25SV0zvYpr+KI3cpUGzEUDq9yxTrTbKS7o7Rk6eBqiUVOU7UkErQYBEACB8iJg\/a85y2s80FsQWJNAI2\/iemPy1pppMm8GIkG6NtZB9x88QS9dPp15q6jnfaHhguvvGu+l9tpWqmDLUu9Yf8Hl6VHAft4Ye8vGTZT0Jalnrp+m4jM0NTejR9GmljETto9l0VQwOlU2H5unyfA4NfqbdSoRxYAACIAACNiJAASYnUYLbS17AuvYffUNUi\/ABJjs63R24Ao9dOR+ev588ffT2rNxJ40E9HEsMTQzQk1VDbS5eSP18LRLs8Pmtg20Z+tO8lZ5aSA4pGx8fDN0h9L7HZvdHr3qC8ft4UVTr\/4WoxzZHBsBBEAABECgPAlAgJXnuKPXJhAwYg1YYC6YV8tlupO4cn\/k2IP0zNkX8ipDr0yN7U00MjmlV3E0Pj9JzVWNpoiwppoGOrhzH9XWV9NYbJKF5BjdifUQTevWHUsUlLDBZszRHM5oLAFyjUYY8fdhjepwCwRAAARAwEIEIMAsNBhoCgisRcBJTrrWq836tby8lzrPFnXD5sdOPEznJ64tb1bB12PzE9RS3UQbGtZR\/+RgweWlC\/B7fXRk10FqbmmiOZpXHGf0EZdvv1mF6S6pOibIoAWMqmpXl2iOp9faOfB3IgggAAIgAAJlSgACrEwHHt02noDei+y31mykV0JnC264bNj8yPGH6JkzzxdcltoCXOww4aHjpwwRX+k2jM6N85qwFmqvb6OhqfzWmDkdTjq4fS9tXL+eYp6YshfXKO\/FNVqEvbjS\/SrGUaatWj3MRuas3sQ12wcL2Jp4cBMEQAAESpoABFhJDy86V0oEKpJ+3bojIux1xx+kZ88YPx3R6\/bSiSPH6OLEDd3av1pBQzOjtL6unVoSTTQ6o24\/rR3rt9LOLdvIVeGi3sAAzUeDdCPQsVoVZRGfSCYs38+ZsH4CTL4sEQszOeS\/1E\/qgs+T\/HHwDQ5L\/5+6uhvrWGE3TH8JkzJ2seRSTpKU4JOYiu0kLD8IaCAIgAAIgEBeBCDA8sKGTCCQtbFRRAAAQABJREFUm4De33APjOVn1VmtpS\/fOUsPHbufXjz\/CiUSxr1wnzx6L12euLlaM3SPH5geok0N6ykeT9AErw9bHtoaWujAjj1UWVtJI+ExGg9N0u1IFxH8TiyiittAgM1F5mkuGKFwPKy49BfRKIJH+eFjgn\/S1yJ4knxf0ig\/C+fiCKNYYvP1m964yBsnIAACIAAC5UUAAqy8xhu9tSmBWm813byjv1Xm1c7zdPLQvfTa5XMUjUUNoTMQGDGk3LUK7Z0coG1Nm5QXc3nJPrTrAG+AXE9TyVkamBui7iS7rS8xxxlr8dB6r1iiRGs7w7E49c33ac1mkfRYBGaRgUAzQAAEQMB0AtiI2XTkqLBcCPCX7rqFjRXrdCtreUFnui\/Rkf2HyMcOJ4wI6YlaRpSdrUyPy01Hth+g3Tt30OsfeZh2HdlOwx7eAHn2liK+suVBnD0JvNB5iWo8NbZsvJ5\/H2wJAI0GARAAgTImAAtYGQ8+um4fApGAMdapNIELvVfpwO59dPP2TZoPBdLRuhwd7NjCyCDrc\/Zs3EGb2zdQ3JugXt4AeTI+TZPzbOKaJ9pWt5ki01EKxcJGNgNlF4HAVGiWomEPyfIt+wUdv6GxX+fRYhAAARAoawIQYGU9\/Oi8kQT0XAPWM2L8NKsr\/Tdo97Yd1NfbQ1Nz+vlZN8ICtqV1I+3cuFVxnCEbIM\/yeqAbQZ6imcUzeed0D+2o30pdk70UwQbDRj7yRSn7lb7L9Prdh2ksNFqU+vOtVM+\/D\/m2AflAAARAAASKQwACrDjcUSsIaCIQMGnPo5tDHbR9\/RZyD3tobFqdF8FcHRHX7oWG1vpm2rd5J1XUVOTlOKNjqot2NW6jjokusvsGvoWyLMX8fmcVd8tuAqwURwJ9AgEQAAEQUEMAAkwNJaQBgXwI6LjIIxQ1b\/rcndFu2tSygdy8lmpoQl\/Pi2ox1lXW0P6te6iuvpameTrhwPwwdSXYCliA44xbk520p2kH3RjrIDvsc6WWFdIRj6cNp\/Pp+PcBzwAIgAAIgIC9CECA2Wu80NoyJRCOmusjvXe8n9bVt9JmzwbqGWaPgQUE58IeSmsV4fN46eDWvdTS1EQBR5DXcQ3QQHKIBmaG1sqm+d6NiQ7a17KLro3cZA+Jxrne19wwZCiIgIpHrKDyjchsQ8loBAaUCQIgAAJlSQACrCyHHZ02g4BeazzcDldR9ioanBqh5ppGko2KOwa6CkC2chWYTEvcv2U3bWhtp6g7Sj0suMYSEzQ2N1FAPeqyXhu\/RQfa9tLl4etF4aqulUilhUB6o2QteYqfFhKs+GOAFoAACIBAcQhAgBWHO2q1KYHf\/sbH6Fz\/5YXNXqUTqZcoEVupTV9THZPz+Yg+3gS9Lm\/RaI3NTlB9ZS3t2byLbvTcyqsd6Zfjneu20tYNm8jhc\/LeTQM0G5uj64HbeZVZaKYrYzfonrZ9dHHoqjKWhZaH\/MUlsFLiF7c9amrX6wsaNXUhDQiAAAiAgLUIQIBZazzQGosTmGa31+OBSVNb6XWym+0ihqnADMV8cbpn+z66dOea6pZsYbF18MA+qmuvo5ZQE02FZ+hWqJMopLoIQxNeHrtOR9YdpHODlwytB4WbQMCGCgxLwEx4LlAFCIAACFiUAASYRQcGzbImATXrmfRuuafIAkz6Mxeep+5EnI7uPkTnbl7M2sW2phY6cugeqm+rp0maoZHgGPXTCPVPj2RNb4XIi6NX6fj6Q3RmIHufrNBGtCE3gSTFcyeyXApMQbTckKBBIAACIGASAQgwk0CjmtIgoIdLda0k3E5r\/JqGoiG6NdlFJ\/Ydo9PXzlJtdQ0dP3yEWja00JwrQAOBIRqmCRoOGr+OSyvDtdKfH7lCRxVL2OW1kuGehQkEYrzjts0C5JfNBgzNBQEQAAEdCVjjzU7HDqEoEDCUQBHcrXksIsDEU+He9TuprqqWfuFd76Fb1EWTyVmaDM8aityMwi+OXqN7WnmK5Yj6KZZmtAt15CbQXMkW17C9RH+qV5BguUcXKUAABECgNAlAgJXmuKJXBhEoxhRE8YJYjCD7gIngaqipo+kgr98avkNXhm6kmtJB9MR9j1C3ozAX9cXo12p13pjsoL1NO+n6eHEcg6zWLsSvTWBvy1aaTVp3mutqrRdHPQggAAIgAALlSQACrDzHHb3Ok4CDzF\/t7zRJgLmcLtq9fjs1sev5+cg83WTBdX2EPR+u8m7741efoTccfx31uAfypGmtbPFknHrZO+O2+k3UOdVrrcahNasSqKuopFl9HI6uWocRNyC\/jKCKMkEABEDAHgQgwOwxTmilRQgUYw2Yy6Bpj+Iefmf7Nmqrb6Ygr++6PdJJt0bvKB+1uH9y5ll67PBD1O\/Xd8NktfXrnS4UC9NUZIbWVbfR4Nyw3sWjPAMIhBL2W\/8lGJ7rf5YGWfC\/ccubDKCCIkEABEAABKxMAALMyqODtlmKQCQWob7pQdPb5CSnbnVub91C6xpbKZKIUsdIF3VOdCufQip4+sLz9PCBUzRcNUZFMBAW0vSseWcic+St8FJTRQONB83dciBrgxC5KoEabyWNh\/i5s2G4OHaBt2aYhACz4dihySAAAiBQKAEIsEIJIn\/ZEPizZ75Ad8a7Te9vIdMeNzdvoI1N69lJd5w6R7upZ7pP+ejdieeuvEyn9hynqbpZSjgSehdvenlj7MlxQ3U7hVl0z0XtaWExHVoRKtzD67+iNFWEmvWpEtMQ9eGIUkAABEDAbgQgwOw2Ymhv0Qg80\/FyUep2JNWvO1tX30ZbWzeSGM26x\/poYHZI+ZjR8JdvnKFj2w9RuCXCL8UxM6o0tI7+uSHaXreZuqf6KBKPGloXCs+PQFNlLQ2F7SvACI448ht45AIBEAABmxOAALP5AKL55hAIRILUOd5jTmXLalnLAtZS20zb2zaTy+Wivsl+GpgaptHu4k3JOnvnIh2M7iX\/Bh+FkuFlPbHf5Z3pHtrbzJ4R2RlJPGl\/y579RmDtFrvd\/E2DjR+zwcAgTYYmqcHfsHZHcRcEQAAEQKCkCECAldRwojNGEfC5vfRPH\/g8XR2+pbhivzZ8k26ww4qoCZaRzC\/J63kPrt3rdpDX42GxNUQ9E\/10psda65Qu916nXdHtVL21iuaTQaOGxLRyxS39PW376PzQFdPqREXqCIQT1nB\/2OCvpy21W6jaW0Wyb5941IzEYxSKBWk+mvodkC0sHA5e0SlH+RHnOvzLPRkZpwRbjJv8Lao6PTDfy+kXJi8u\/HFIXS2d0Hj3KknrKzeS2+lRVX5mInHM089\/ZxJcT5K\/gEgon6RyTCZSxyVxnC51naD963bTwQ17M4vDOQiAAAiAwAIBB+9FcvfvNLCAAAioJhBLxOj2WBddG7pJV1iQXeWjWErm2VqmV\/DyS9Phhv00Mz9LIzNjdIfXcdklbGneSK27Wmg6Yf+NmoX54dYDdHbgol3wF9RO8fYpL9Jag4u3TPC63YoIkf3rPG4PyfYGbhYlHj66nE4+52u+51y4dnFdEi91ijhJHdPnKaGS3n9PRIvolvSk3EPtu8nhlCuRNMphocn8zxpP3RWrZTwRV+6m8klmSZsqZyGxcs3\/u5s3fbp4ZAGScZ5xQbFkjMKJ0OLdfE5qPLX01k0\/ryrrV27\/LYXj2up7ZN0TtKN2t6ryMxN9\/Nufpi+\/\/I3MKFXn8oXVj37va7S9ZYuq9EgEAiAAAuVGABawchtx9Fc3AvJSubd1p\/J5N71FKVe+z+ie7GNL2U36r0\/9BQ3PjmqqT\/JvrF5HTd56mpqdoev9t+hHvT\/TVIZVEssaNHFisWP\/VhqNT1ilWXm348LIFTq2\/h4WYZfyLsMuGUV8vWXfKW7ugrWDbS5py0aCrTuKsFGOMUXgiAjJLdjiXJ58UuvpRNDISsHF1YIScVfl8EXusCOxjhxq86TTpY+5izctRZAtZadHX6BqFmL76u9Zs94FqblmmuU3u2Zv5yXA8qlL6v7o6z8E8bV8EHANAiAAAhkEIMAyYOAUBAolIN\/Qb23cpHy+9dKT1EwN5OB1KsFEkKYjszQRnJJXWaUav8tHNb4aavDWks\/hpWAwSLeHuujywLVCm2GZ\/ENTIzR3Zp7uO36M+uL5ufD3sRXQ7\/GS1yUfD4lVUKwsIoAVa4piSRErC1tVmL9YUFxsFWEbCltZFFuHMt2Lby2EpGLsSNk05P+pHxEQMs1Kpo\/JGCXYciLn8hFrp4iMeHKc3rjrFP3oVnEcsqR7YMZRprqlGJlRW3nXcaDhMD\/XPvK7\/DlBVLqrKBTXZmXvm++hKG894dE4DVGZJpmzRUsTtFQ30Ycefv\/SSFyBAAiAAAgsIQABtgQHLkBAPwKdoz10qXelmBLhIC+2k\/yCP0hD+lVoUkl+j4+qK6uouqKSKv0VVOnzk58\/Pi8LJF6b5hFx5HGzYxAneVxuqq\/zs5+EIK1L+BQhU+GupCp+iXQ5PCxzUgInZVXhc0X0sNgRwbMgelZ2667dJG1TYZwp48rKxLrHDId76C17HqDv3XhR97KtVKBMJxTRae0gqtqCJi2N0DZXbaMqT7WqXPIlgdYgXyKMhYZpHa8F0xLufmmhPtfPH3srVXhyC0n1JSIlCIAACJQeAQiw0htT9MgiBFZbXinCwq7hgYPHKdK0\/Nv3OIVoXvks9mtBGVV7+Nv6iHcxWk6ikWma4Y+dQ3+wi9669wF68nrpijCxJFpd2zis3kCVD7kWS2NLRRs77tA+pXcsNKpdgN1dGKeqJ7L264MP\/oKqtEgEAiAAAuVMgP+FRQABEAABdQSiMW3iMRyPqCvYhqn6AizC9t3PlrzS\/DOqCDDLj8vivFLLtzRbA8Xy9cT6t5FYhdWGmciM2qRL0o2H8tieQqMJ7Nce\/CVaX9++pF5cgAAIgAAIrCRQmm8OK\/uJGBAwn4D9Z0atYBaJatuQWNadZLMEuhylYXzvm++mN+09QT5em1ZqQaYgWj4k7f1P2PHmU4r7eS2s9zUczGtYxsPaHAJJJW+95\/VU5VUnDhsq6+l3Hv+1vNqGTCAAAiBQbgTs\/a9XuY0W+msrAlqmFdmlY5GodouW27l0CmKrfwNNzIWpzbfZLt1es5397KzisV2HeQ1PxZrp7HZT9qyyehift\/dU1nz4bqvZSXvq9mvOOh2Z5HWV2r5AObntGP3G635ZVV1\/8MRvUI1f3To2VQUiEQiAAAiUMAHr\/wtbwvDRNRCwG4FwHgKsxlND1e5aqvM2Up2rnV4buEzT4Rk6PXiB2v2lIcIGAwP0wPa91OCvtduQrtpeO0ytvDR2ieIx+05DzNdIfrL1Yarn3yetYSI8rjWLqvSP732I\/o9T71WVFolAAARAAASI\/TQjgAAIGEIg29Q7QyoysdB8BNjFoQ66OtJNl\/h4aXSpV8hXBy5QW4mIsJHgMB3dvJVaqhpMHBHjqrKDBUx6\/0r\/a0QJG0yXzDpU+Ukw8aT62Po38vpDbf0WRxxagxqnQb\/H+37JhtsIIAACIAAC6giUxkIMdX1FKhAwlUApTkHMR4Dlgn6aRdh96w\/TUKgnV1LL3xdHBwfWr6ebQ24a0LgJt9U6J\/uo2SFEEhG6M9FD25s32KG5S9o4GOjn\/b\/uTtH18Hmjr5kGArwHG2\/Kni1IrGzbMBjoo01VW6lrriNbshVx\/mQN3Ri6TQNDk1z23dvpv1OZ9aXjJNWt4c67ibOcPbbnQf7iYe3No7NkQxQIgAAIlDUBCLCyHn50HgS0EQiFw9oyqEwtlrAT6w\/RcKhXZQ7rJpsMT9KOtibeA81D3VMD1m1ojpblswlvjiINu90zywKsife4cmQoC8Nq06\/gV0afW1JYg7eJHmx7lH7S\/70l8Xpc\/MW\/\/G\/qHc9vM\/S16n\/X0TevdRv3QAAEQAAEshCwx1ecWRqOKBCwOoHMb5St3la17QtGQmqTak53euBiyUxHFFfhGxqr6HD7bs0crJLBHm7o79Ky70qwu31InRnTkxM78\/OeuLx1y6+PbjKm3OX14BoEQAAESokABFgpjSb6AgIGE4gn4jwxzZgXRGm6TEcsFccc87F5cnjn6ef23E92EzMyFg4Dx1nK1z8Y91zq39bsJcrUP6O471y3KXulBcRWeitoSyNbHhFAAARAAAQ0EYAA04QLiUFAPYFStIBJ72VqnZFBpiOWigiTF+qBYDc9secora9pMRKb7mXbxQmH7h0vcoFGTf1srNPfRfx9W4+Q04nXiCI\/MqgeBEDAhgSwBsyGg4Ym24OAvVajqGfqcXooHNe+H5j6GohEhN3Ha8KGSmBNmPR7KDBIm1tqaWNdG73ad1kLiqKlNcoSY1yH7G8BIxbsRoWYO0h\/+qHfzSh+gddqVXJ8+taLly7Td04\/lZE3dXpgw94VcYgAARAAARDITQACLDcjpAABEMggIC6wzQivDVyi4+sPsmOOPjOqM7yOYCzIG38E6c2776cf3HzJ8PoKrcB+AqzQHhc\/vwieqfCEIQ2Js+fEQHIur7Iba+qy5vMabA3PWikiQQAEQKAECJjzJlUCoNAFENBKoFSnIGrde0grt3T6BH\/\/fnbwKh1dt5dGQvb1JpjuT\/o4GOqmt+59gJ68\/mI6ypJH2wkwUS82M4JVuqvoobbHlfGfjkxSKB5SPlZ7IGLxWNYmBSL8pQICCIAACICAZgKYvK0ZGTKAgDoCmXvpqMthj1Ruh3nf28i39heGblKzv90ecFS2si\/QpYgwlcmLksyotUiGdcZm4ks4yF5rsu+XfLbV7FL29To3ftowRPkWHIvHs2adDweyxiMSBEAABEBgbQIQYGvzwV0QAIFlBMyygKWrjSaidHX4DjV5W9NRJXEUESbTEa0bbKZo0guWrAt0RcuWf0kTT8ZILGFWC5FVLGCdYz1WayraAwIgAAK2IGDeV9m2wIFGgoB+BEp3CqL539uE4mG6Md5Lu5o20GRkTL9BKnJJMh3x1KZ76OXeS0VuycrqbSa\/VnbABjGRRJjOs8VrlveNGw4OsnMb4\/bZKwRHNBbNmv2FjtPUNzlIGxvWZb2PSBAAARAAgewEzH+Tyt4OxIIACNiEgEybKkYIRAN0Z2KQ6jwNxajesDodniA1V9YbVn7+BUOC5c8ud063w0Py6Z3rosHgAM1EpynMgsyKYTUBJm29xdZpBBAAARAAAW0EYAHTxgupQUA1geXTi1RntHjCYm4qPBuZo94pF22ob6BZfmEthRCIBejklv30QtdlOrFxH\/341isW6Za+AszpcJHLwfKdPzKNVT7pc9lLSvmR+4vn7AZErmVrYj7KmjTlJ+O4ZLtoTkOUfa2SRYAuaUalq4qGWHjZIYSzWMAa+EuDDz\/6AXp0zwN26ALaCAIgAAKWIgABZqnhQGNKiUCpTkF0JPV9Mdc65lPhaXLNuKi1uprm4\/m51dZa59rpHeRMsqjgHxEZDj6XH+JjSiDwMSElMLf0OqW0xz6+FXbN0cTcOJ1kb4+TiWF6+\/6HKRgRS0iKc0p48BULj1QpfEz9l7pWBIlyKonSuVLHVJaFOE6jXKfTLOS5m1VpnmPh\/163m3b7dvMV\/ySV\/2ccE5RQ4uS48OFOps\/jSlyclGMiLncyKkuyTIopH6UqYZF5OyOlltP1tS1KcVryFDNtejyL2Qa1dUdiS70gHtl0kP7+g5+hxqrSskar5YF0IAACIFAoAQiwQgkiPwiUHYGFt\/oi9ns8OEF7mraRM+ZU1s+km1LFbr3rfI2KzlCsJorQSVlOFtRHOqlyTAkLOU0qGiDJwsGV9NC1O90UZ+Eg7rejSz5RirA1IBKXY0Q5iugoJHh4XzW3y81WvXbatbeBhsO9S4tLi7alsbhaQaD4z+WKJpVAxP76Q\/TEO95F9b9YR4PTIzQmXxZsO0Yup6sEeocugAAIgEBxCECAFYc7ai0HAiX64tzbPUjbt2ylO\/NdRR1FccwxH46w4GpQPMdtqt5CV8dv0QC\/IBYSNlRuoNNdFwopQlPeaIJFHn9uj3bRng1bKFE7oyk\/EtuVgPUF49GmE3S0+b5FwDX+atrdtn3xGicgAAIgAAL5EZA5MgggAAIGECjVNWAvXTlL4fmlU5IMwJezSJnCNRmeounQPG2u3k5Xxm4qU+ByZrRwgp9cfol8iSoLt9DCTSvRLzyKRfxk60NLxFex2oF6QQAEQKAUCUCAleKook8gUAYE0vaDaXbhfWnsqqxUsn2vwzyt8cK1Hl5ThuldWgcz6bDX+KefX639NCP9g22P0oGGw2ZUhTpAAARAoCwJQICV5bCj02YQKFUnHMLOGn0z5hU2u4sKM56YVB2d4z000BVkZx7G9M+8nphck814WVEuVvIaykfWPUF76g+YPHioDgRAAATKiwAEWHmNN3oLAroQsIYA06UrlizkXO8VGu9j5x5WfEu3JDFBZS9YVpPXsi3A2za\/h3bU7rboCKNZIAACIFA6BCDASmcs0ROLEbDbC6EmfBZ41y22pUoTrzwSv9J5nqYH+TXdAqzzaD6y2IyATDus9tTarNVoLgiAAAjYkwAEmD3HDa22AYFSthKVct+s9Gi9ePsszQ65LDLl00pksrQFQjULFHVRu+v20866veoSIxUIgAAIgEDBBCDACkaIAkCg\/AhYwbpnVBustkHu87deo9CIr\/weMq09ttqcPq3tL2L6w43Hi1g7qgYBEACB8iMAAVZ+Y44em0SglK1EyVK2Nliwbz+78Qolp6pNenLtWU0p\/74ZPSIel9foKlA+CIAACIBABgEIsAwYOAUBPQlY8D1et+5Z4mXXKMAWtaT84OJz5I9hjY5uDzEKWiTQO9e5eI4TEAABEAAB4wlAgBnPGDWAQMkRsIIAM0p\/WXmwzt24A6ccqwxQOT4Pq6DQHH169EUaC41ozocMIAACIAAC+RFw55cNuUAABHIRsIJIydXGfO+Xct+ILGoC48HqGu+lw6GdFKmYynfoSjgfJFi+gxuKh+hfur9OboeHqjzV1ORrodaKdtpQtYnqvPX5Fot8IAACIAACqxCAAFsFDKJBAARWJ2CUA4zVa1x5x2GQTjKo2JUdyDPm4p0O2nugKc\/cJZzNdvrLek9aLBml6cik8rkze1N5WLbX7KIH2h4hrwuOYEr4twddAwEQMJkApiCaDBzVlQ8BK4gUo2gnE8V\/2w3zt\/blGDrHe8gfhlVi+dgX\/4lc3qLSuL4ze4u+0\/1PmKJYGsOJXoAACFiEAASYRQYCzSg9AqU8Ta\/YfWutbKae2d7Se2hU9ujV69fIkcSf70xc9vvCwz6ScS46S9\/r+TaNh0YzkeMcBEAABEAgTwL4FzxPcMgGAuVMoNgvu5vr1xuCf0vVVpqaDBhStp6F9k8PUWDEpWeRti+r2F8KaAdovSmIa\/UhloyROOtAAAEQAAEQKJwA1oAVzhAlgEBWAsUWKVkbpVNkMV92Wyqb6M40ewPUObQ7N9K3nn9K51KNK+5nN16lt1c9QrHqGeMqQckGErCPBSwNYTDQT7FEjNxOvDqkmeAIAiAAAvkQgAUsH2rIAwIqCBRTpKhoXkFJitk3sX7Fk\/GC2p+Z2cFeD5sS7fTkmWcyo21x\/r1zz2NvsPRI2U\/PpFtum6N8qRSMWd9CbBugaCgIgEDZEoAAK9uhR8dBIH8CiWRx3nYb\/PXUMdWRf8OX5XQ5XFQdbqQfXXhh2R17XIoQfersWfLHa+zRYANbaTeLswh\/O4Zwojyd39hxrNBmEAAB6xLAPALrjg1aZncCxdEoplArlgVsS90G6pzVb\/phfbyFfnTVnuIrPdAzoVn6yWtn6Q3Hj1HIPZuOtt3R6XCSCGI5pj4uvnayTHGkjul4kvscu3idOve6vNznqG36racV18xORxP2YWwmF9QFAiAAAloIQIBpoYW0IAACKQJFsoC5Xfo6nugdHSp4ROXF3+N2K6LB7WTRwB+n00nSVicLCjefy3U6XhEafO2QOBEYipBwKPkdTjmmLCOKhWTxnLeHztz4TASIIkwc1FJbo5x7nR7a3biNvB75s75gXVkyThkWl4XTjJi7eRaIRONREscLUpZStXyhkM7A50mH\/E8Si+1p4YfrE3Ge4B8lRs6TcsU\/clQ+8bvnnEriFgqSwlYJUl6CZOKpMvlU6lXqvpvc49rI8ss+4mA6OkmHGo\/QeHiC+ud77nbE4mcxCDCLjxCaBwIgYAcCEGB2GCW00ZYE5AW0VEOxpiAm+WXd5\/QTSxsWKix6+CdlJRFLScpakj4Ke0fSwUKBT3goFC2iHFNiIcF7mVXWxuhUVT3fTpI77qKpwAxV+SrJVedS1pmJOBBLRSwRXzjGlHNxRBDlz1pWDL7LFccpIg1ZLcgjUsBjsrtxO8UqUk44RHr0zM3TtrrNFEwUvk4nmXDQqI3cji+KxNVYWyxeBHWcn68Kt48ONNyjPE+dMx0UTa75xBS9F7CAFX0I0AAQAIESIAABVgKDiC5Yk0CxpumZQaNYfesdnqBz\/fqtActktaliA10bvKVEPbT\/PuoKWn+fsabKWm7v3WmHwXiQumf6aFPtBgongpnd03w+HbGXd8W4Yq3T3M2iZhgI9FGzv5nHKrWualvddvI6fDTA3gYnwmNFbdtqlUcT1haIq7Ub8SAAAiBgJQIQYFYaDbQFBGxCIBqVqWn6hE21G6nKU0kedm0t0\/lkKp3HxR8+KtP7FuIl7vSdi\/pUmqOUa923qLa9mkKJcI6Uxb3tZSbLJ93Nx+ZpYG6I1lW3UqSA9m+t3Uo3p24Ut4Maamc7pYbU1kgqwqvCXUWB2JzSoARbW0PJADX6G2hD1QaaYRHcPddpjcYutKJj5ibtqT9gqTahMSAAAiBgNwIQYHYbMbTXNgSsOgVR1iD5PT7yebzk4+lPFR5\/6pzj\/HytxGec+\/m+kt7N6SWeP7WV1XQhfFERSiKYRAiIYNrMYur1Wx9Rxujq2A16dfAs+URULX48S67l3sMb76dKFmBqwo1+415G08ubpB3j85O0x7GDOsnqa3Oyz1+UF3fnvItaq5p4alt+InIqMk4HGg\/QlYkraoYGafIkMMlrwOT3YHkIxgP8++Wm\/Q0HeZ1ckrpm7vAXAoVZNZfXkc\/1UHCALk2co3saj+aTHXlAAARAAASYAAQYHgMQMIjAWtP0vG4WIix2RMykxFB28SOCRxFIGeLHt+zc72WBlBZOC2WmxVVm+RInZYkzCH3Cv12zmPXV6+gNWx9dM43Wm\/q1PUvNyiKiu\/Evd5ylI3sP0GBo+G6kxc6yy69UI6fCk7w+zkWNFbXsTGO5nUxdR0a57\/sb9tPVyavqMhQxlfy+LXFUUsS2aKl6PDxK22t2Uoinj2YLaSvm5prNLNT8NBQY4rV5xX0mT4++qDhbOdR0LFuTEQcCIAACIJCDAARYDkC4DQL5Evj2R\/8nix2xNqUsTCmRxBYmFlB2fFHMl4Oe+YwUYMvHRBxwzI7z1DAxzmWax\/TsUIFlKY5F1ihjPDSmiLBaXwW7A1H8B66ROvutsfAIbazaRH3z1l8Tl70H1o8VJy+5gniSFKtYna+W2irbKRCdV7ZkEO+QxQhTkYliVIs6QQAEQKAkCECAlcQwohNWJLBv\/S4rNsvWbRKPh0aFbBrr1kgnvW7fSboVMm7qY2H9WcsGlip5JDjMXwSs52meHnEGn1d1fv7SQFzqyxolBP0J9Ad6aH3lRvaKqG4dW4iFmJO3LNhbv5e\/zHFS92wXzS+sI9O\/dSgRBEAABEBAbwLGvc3o3VKUBwIgUPYEjLSArQb37J3LVOOuXu22LeIH5wcoHEsorvrzafBMdJr2NuzNJ6tpeZR900yrTd+KZDsDn9OnudAoTy2VKYrrq9bzmqwj1F6xXnMZyAACIAACIGA+AQgw85mjRhAAgTwJyJomo8JqL\/Bz4XmqjdYYVW1B5WrZj61vrpcSce6lsjGa9moneK1Snbdee0bkUEVALJX5BnH4E4zPU7W3ig42HqKdtbvJzfvkIYAACIAACFiTAP5CW3Nc0CoQAIEsBAy1gC1zwpFZ\/WtdF+jU\/mPUHezLjLbdeRdPVdtet4MdKIQ1r0OUNXEbqzfQ9MSU7fpthwbPxKaptaKNAiykCgmKMw+eT7uzbhev\/\/Pw5txdNBvNb0+3482neOqpU3G4sbB9+eJ5o6+5kGYiLwiAAAiUNQEIsLIefnQeBOxFwNA1YNkWgWXg6e0fIE+jm\/fdUrdOJyOrYae5V4CtrPrOdAftqt9F0WRQswgT73vyYt8z281T37Ah70q6hcUEVvGEmE+pMV5PJp+2yjba6trOGzuPU79GRyp+VwXv+bU\/n+qRBwRAAARAYA0CmIK4BhzcAgEQsBYBQy1gObraPz1Em70bc6Qy+XYuN4irNOfW1C1ec5TfuraZ6CQ1+OtoN4s42SdsDzuC2FKzlZr8zUWd9rbaFNJVEFgyejDQxxuRr9wTrNDGyvTECrefDjTcQ7vr9pHHoa6Oy5PnFYtXofUjPwiAAAiAwFICsIAt5YErEAABCxMwUoCpeYF\/5dZZ2rtrF43xJsVWCDItLIfhbtVm3pi8Tvsa9\/HmvuxqX2OQeqcik0tyufjrvMaKehKriXxkY25ZoxaIBmg4OMT7XIWWpNf7Qtpk9yB9EG+TRoVwIjUG2+u28\/j4qJ\/XBU6u4U5+mse4d76LNldvM6pJKBcEQAAEypIABFhZDjs6DQL2JGCoEw4VSiaaiFFyll25a3dYZwhwMYCpaPaqdV+buKZYsQKJ\/NYIZStY1iAt31S41ldNGzzrFWEWjIWol1\/8o3pPYVTW8NlfhA3M97M1sYmlmHF9Ea+LcXZl31TRxOv6NtF0ZFpZK5ZtPC9NnIMAywYGcSAAAiBQAAEIsALgISsIgIC5BIy0gKmVMpcHbtBD+++jjmCXuZ3PUpseL+lXJq7QwaYDNB\/XT4RlaariCCLtDKKRpzDWeut4up2PhgPDNMYbRpdb8DsrqN5Xz44y3Cyil8roat72QJxymBFkc2evy0P7Gw7yPmQJ6p7pZKtocLHq4eAgjbAFs7WifTEOJyAAAiAAAoURwBqwwvghNwiAgIkEDLWAaejHla4bVOnya8hhTNJknmvAlrfm8vgVqnLVLo827FqE43RkisSph4s3FN7Pa8nUCuDVGrVUwqyWyjrx6yrXU5W7kq2CXvKxAMr8uJ3mfzcq+4nFeV+xzTWbeU+xw9Tsb12EJVYwBBAAARAAAf0IQIDpxxIlgQAIGEzA5TTuT5aW1VSTgWlqSbYY3NvcxethAUvXcmX8KlW76tKXph2lD2MsxA40lpe3vbXGTpxm+JzFEfgJSvCeYgG2ztUpQmxbzQ5lHdgMC2YEEAABEAABfQgY9zajT\/tQCgiAAAgsEjDSAsaGGE3h5Y4ztNFf3GlZelnApOMiCK5MXDXVEpYJXKxh+1mENfqaMqM1nGscQA0lG5E019hVe4q\/+bcIMfnSY0\/9PhoKDhiBAWWCAAiAQFkSgAAry2FHp0HAngSssAYsk9zYyBQ5l63fybxv9Ll4GdQzyGbL1ydu8NS44rz8j4VGqMZbVYAI05NGccuK8pRAqwRxmDLEm5CfHn2B+tgrou4OVKzSUbQDBEAABEwiAAFmEmhUAwIgUDgBI6cg5mM\/6RzvoR2+rYV3zEIlyOa9NyZu8Rq3\/PYJK7QrYnUREdbgayy0KEvnX2sKojRcRE6Nx7x1eWpgSXsavE28ViyuJjnSgAAIgAAIrELA\/JW+qzQE0SAAAiCQi4CRUxDzNWSd7rhAW7dtoqmoOV7rMhnlmsaWmVbLeTQRpdtTd2hn\/TYK8Hoks4OIMHFd3+hr4ImR7J6DXcyLQHaIvVFRynKdkszp62p31UIzk7z\/mKxk4h8WCiIo47x9wELyFV0Rhk6lXC7dId9JSi1ST6oOpZ7Mc0nB15Vcn5+9ODp5ip7kU37S+ZelVypNK3yuT36kjTF2erFWcLOHRCuFyfAYb+R8YIGTlVqGtoAACICAvQhY66+7vdihtSAAAiYTsNoUROl+MBoif4g3BjNu\/9xVKScUebLq7YJuhONh6pjqou0swoJx7Zs1F1Q5Zw7GApqKmAiPrpne7fDweiYXieDKFGhrZlrj5snWUxSntIASScV7ay1YhuI6zQwNsRCt5umgc7HZNVpi3q0oC8YRdkvfXrnBvEpREwiAAAiUIAEIsBIcVHQJBIwg8MzNF6ljrJvCsQhF41H+xCiycB7JOJf41ppmqq2oWUjHaWOcVskTXTxGY+nz2GI6SfOFf\/vfaGPD+qxdcCkWhqy3Co5MGyjyKehcz2V6YP+91BnsySf7Yh6xtnjYJbnX6eGjW9mfSVySe\/jjZvEg53IUS6BMx6yvqKQQTSzm1\/skFA9RJ4uwrXVbeG8o8y1hevZHrE0xfr70CnG2sJkRfC6fZQSY9Lc\/0A0BZsbAow4QAIGSJgABVtLDi86BgH4Evn72X+nJyz\/Rr8BVSuoc711dgLH4MCzwtLFCQkdvNz169F5yuRamr3FxSolylBNxmOEQm9XCz8I0uSRbTRIO\/vA122ZUNEHW36TW4IRYfhkdgvEgb87bQ1vqNpFYZBBSBOKJOItg42kEY\/PkYeudWJ+sEOZjczQVnmA39aW9Rs8KrNEGEACB0iVgwj8fpQsPPQOBciLgZouMGeEfT3971WqMnIKoiKVVa859Y3h2lKYn5yjsnKCQY5yCNE4B+STHaT7Bn+QEH6cokJimYGKGQsk5iiQDPIlNNsCNqRRfudthRIoATwfsnennvakqjCjelmXKmJkRRK7XeuvNqEp1HX1sBUMAARAAARDInwAEWP7skBMEyoqATH3TGvwenzJlTku+tprVNzh289Q7o0LaqUMh5f\/kyovkiZWmSJmLzlH\/7BBE2MIDItNlzQpWckkvfZb1di8M\/1TzOj2zeKEeEAABELA6AQgwq48Q2gcCFiEg64+0BFnDdO2Pn6N3Hn6zqmwi1j77vk\/RH7\/t36+aXjzOGRYKNYFxw2I8Le3KrX7DmljsgmejMzQ4N8xr1PzFbkrR64+xp0izgrikr\/XUmVWdqnrEAhji6aniLCXA0yTno7M0x8\/HLHsDneNzBBAAARAAgdUJaHujWr0c3AEBEChxAlqm\/9X4qujDr\/sVhYiafBvq19EX3\/+ntH\/d7jUpGuqGPrVia8361dy8NHCDdm96A1G1vZ1WrNbX6cg0Oead1FbZyFMoI6slK\/l48RJpZvCwYxarhUuTZ7I2qc7bQIcbT2S9h0gQAAEQAAHirUsQQAAEQEAFAbFoqQ3imv07F36guPzO5bnw\/u330nf\/z7\/PKb6k7nymQaptM3vJUJ80R8qfXjxNzoT1XphzNFv17anwJI0GJtk5hFd1nlJLGGarlJlBccbhtAdvv6s0p+GaOd6oCwRAoLQJQICV9viidyCgGwE1lqx0ZTIV7+bIHcVV\/Vr5Pnj\/L9KXf\/Vz1FCpzslAaqPcdC36HvVYA5Zu0WRwmsYGzX1BT9dt1nGCPeFNcD9lf61yDGF20W9mUJxxeGrNrDLvupzF2BQv79YiIwiAAAiYTwACzHzmqBEEbElAiwXMy3tZ\/ee3\/Qdysv\/1bGvHvG4v\/Y+f\/xP6T2\/9A2VzXLVAjLWAqW2FunRPX3+ZPJEqdYltmmosNEZToTkWYeqtozbt6opmyx5pZgcz150V0jezPEQW0kbkBQEQAIFiEoAAKyZ91A0CNiKwliVreTfEQ9ynvv8ZmuGXc3Gq0fnJV+nMx35EO1q20rq6VvrGr3+J3nP0Lcuz5bzW0oachS1LUOA2YMtKS12evn5Lz5mNWesoduRocIRmwgG2eZSXCDPbAibjHEmEqcYGVrBwwnxxWuzfA9QPAiAAAloIlNe\/mFrIIC0IgMASAh6NXhBFhEXid6fhNVbVK9MNPWwda67ObxNXI6cgLmybvKTPhV50jHbTPdM7yFUfLLQoS+cfDgyzC5N2qvJV8IbS5uyPZQUgMtUusbAptlnt8dpgHVgoVtrPu1ljjXpAAARKlwAsYKU7tugZCOhKIB\/rUzS21FX3urq2vMWXdMZOUxDT8H906SVyJezhPCHd5nyOQ4EhCoRDPO3UuL3a8mmXkXmM\/UIge8vFGYfVRZhYwBLJRPYOIBYEQAAEQABeEPEMgAAIqCPg1uAFUUo8ue0YNeVp6VqtRfmIwNXKMis+EAmSI1oejioGA4MUjET5H5by+G7P4TC\/n+KMo8Zie4Jl+12SPcIQQAAEQAAEshMw\/1+P7O1ALAiAgMUJaLU+rWdrV6VXX3fUhlpXjFgEZvExNaJ5A\/P9FIrFeUqiDjtbG9FAHcssVh\/DLG4cFhe5oXhAR9IoCgRAAARKiwAEWGmNJ3oDAoYR0GoB+\/b579OXX\/mGru3RKgK1VG6oXEgaWrqWbpqStn+uj6KxZFmIMFOALqtEvAw28GbHVg5mb1RtZRZoGwiAAAgsJwABtpwIrkEABLISyOZOPmvCjMi\/feGryl5gGVEFnbrKaH1RQaAskLl3rpdiMbERle4\/MzIdsFghkYwXq2pV9YrHRgQQAAEQAIHsBEr3X8bs\/UUsCIBAngTysT7904e+QFr2D8vVNKfTuD9ZRk4nK95rei6ixt7vmeumeFzIlqYFMJks3siKo4taC68Fi8QhwIz97ULpIAACdiZg3NuMnamg7SAAAisI5GMBq6+oXVFOIRFuQy1gxXuZLoSJ1fN2z3ZRIu4kRwlOw4wX2dOfx2Fd5y4JdtCPAAIgAAIgkJ0A9gHLzgWxIAACywhoXQMm2WOJOPmWlVPIpaFeEI10wlHm2q6LRdi22u089LwtQQkZwxL8fBfBEeLir1AgPkd+l59CcQtufKzxmZ+JTHM\/giRWRRFvypEFbupc+T\/H8ZHvSwrlXO7K9WK6VN4WfxttqNq0yAknIAACIGA1AhBgVhsRtAcELEpA6xTE733kK7wxb6Wm3vRNDlDHWDc9suv+rPkMFWBZa9QnUuO7qD6VWqyUzpk7tL1uB78s8+bcJSLCYrwOy1PkNW7V7hpLCjCt6+NeG32Jeue7dXlq99Ttp2Z\/Cz9r0oqFn4XzQCREwWiY4iyexYIpR9mzTLlOiKCLK18cSZx8gSTH9OfhrSd5SrV1rY66wEMhIAACphCAADMFMyoBAfsT0GoB++tn\/57+67v+cIUr+iC\/AHWOd9NXXv029U8NUm1FDX32fZ9UAP3o2rP0uaf\/ls794Y+zAnMV09yQtUXqIh1QYAqoO9MdtLNuJ8WSIXIYaXFUNyxZU8l6NXH2onycbj46F67dvMk073CmXMvRxRuDu6nKLV8ypFa5JblPKW25cK3ckWqWKU655GdiWaxELYY0nsy49E15ntLxUlOzvzV9K1VuOvNCbEoMLVSaTpkuQLm+e3H3TG7cvZKzVHvv9lHJuthn5YrTpFMRiahKWbS4BSxkpB0iZhQ7lWK5Slms5N5oaCRVgA7\/vzF9leSTLZy73UNP3345262ccfdtPEL\/\/S1\/THV+fadW56wYCUAABEqOAARYyQ0pOgQCxhDQan367sUf0cff\/LuLAmwuPE8vdpym\/\/XK1+kFPqbD9ubN6VPy8mbP8URs8Xr5idY2LM+\/1vXyl+G10mq9x++aJR3kJVs2XxZRJZsTO0UA8JovOReuqaP4Q3TQ4PwwbazaQNVeP8l4ZgqatMCR9CJ8lPKk5IVy5eU+FaecKecCVq4W\/svCOSU\/REwow7BgCZGrlIUkUxhoGyin00HBhLU2HHY73Eq\/soAwJmoVZG6Hl65MXjSmzgJKVZ6VPPO\/2neefvEff4s+\/aY\/pCPrD+RZCrKBAAiAABEEGJ4CEAABVQQ8\/G2\/1vCRr32cDm3Yx6IqQf\/m+NvpN7\/6f60oQqb5pEP\/1BAFoiH6ja\/8B4rFY3R000H6ncf+Xfq28sK+eGGjk1XeUdfuAWdyMXNxPCJCJW2VEcuLiBM5imCRF0pFoCwKoJQ4yVb4XdGRFh8pi0R6ilXqmJqaVclT2+5MdbPFQtLyNCyxW8hRLBgcp5wra3C0O1u4NdFN9607TgfatmVrZkackONpYBkxKRW1EJEX2MzCCjuX\/bhE8FgpFBmJlVAY0paB2WH6d9\/6A\/rkE\/+Rfm7P44bUgUJBAARKn4C1\/uUofd7oIQjYkkCY10z8De\/ppTWc6blI8pHwnqNvzZq9wuNfjB+eHVXWYvz42jNK3GRgmva07aAoW8VEkEVi7MTBsCC2mqVBxI\/P7SWP08PWOQ8f3cpHXrqdiigSu8+ChUYsPmKGUSwr\/P9ESuSI+Kx0+Ki+qn5BvKREjKw\/ERET5zUnsu5EjiJG5aVeWZfCsiMejxOvmCpK8Dr8NBWeNqzuVwfPKOJyT+tdC6hhlRlUsIwZS2SDSkexRhBI\/Y4WVnKM\/x597If\/hYbmRuhXjr1P+SKksBKRGwRAoNwI4F+Ochtx9BcEMggMTA3T9688pWyWHI1HU0d+uVDOWezIi0aE428Od9DF\/msZObWfvuvzv5o108fe9Ds0MjumiKtwbKncON93eYnVTKaf1bRULynHy664fW4f+VxeknNZqyY\/itVIrELyI2YB\/iiWGxZE8TgvsGdBF1U+UYpEIxSdjpBvzk0iNkN8HY6FdZvKtX1LO8349VvjsgSAQRdJRUwaVPhCsS8OvKqM087mDcZWZFDp0USUnzs9\/Xzq0VDYwNaiKLNj9QhiTf7MC1+ip24\/R5984\/9NWxvgdVEPrigDBMqFAARYuYw0+gkCWQjcGr1Dn\/z+Z7LcWRolHhArvRVsBWJrEAscL1uFxCLkdbNVaOEoVioRSDIdTjZMTq8FUqbJ8UuP8s0z30sd0+Un6Qsv\/0NqVplMa+OfEzuPLE5xu2slSnkpE4vRzMQMBSJBCkXCPF0x5bY6XVohx8aKBhqeHi2kiFXzivCzW9DpPTVnt5\/re4mnVD5E25rac6a1WoJYMqo8q\/LcWyXIk2ad1liFSmY79KVzafg6\/fxXPkTvOfAW+q2TH6CmyobMynAOAiAAAlkJQIBlxYJIECgPAkc3HqTv\/Nb\/VISUIqgUMSUiK0Nc8bmaF8yx+Qn64kv\/QP949jtsNVtqydKTZmw2xhYqI\/Y90vfFLLPPrBvtF4zDsYLFz3qf52fsYdra2LbintUj5AsGsYZYJojYt5AgtAyXhYYYgUZmCvzvS\/9CP7n9LP2XN32M7t98r9W6jfaAAAhYjIDTYu1Bc0AABEwkIC7gD2\/cT\/vad9GOlq20qXEDtdW2UCOvV6r2VSnrn9SIL2lyc1UjffwNv0t\/+o7\/x9AeeN3GfG\/kMPAlGhaw3I\/E0z3PUc+kMRbI3LXnn0LWACKsJKBYuldGWyDGuG8WJoJT9JF\/+UN6vutVC\/QTTQABELAyAfzLYeXRQdtAwIYEqryyL5JxQaY\/GhGMtGHYUYAVYyLbU93PUK\/NRJhMtbVSMPI5tlI\/822LERawzLaINezff+9PqHOiJzMa5yAAAiCwhIC1\/uVY0jRcgAAI2JGATF80MngME2DGvbqKK3cEdQR+wiKsb2pMXWILpLKepccazxqv2rTA6BSnCSF24PMXL\/9\/xakctYIACNiCAASYLYYJjQQB+xAQJx1GBtms2YhgpJUqyZ4XEdQT+HHXz2hgakJ9hiKmNG5CW36dsob84t3beDuFOm99fp0wMJdZgvmnHc\/TRGDKwJ6gaBAAATsTgACz8+ih7SBgQQJt1S303kNvM6xl4mbeiCAbDRsVoL+0k\/1h109pcNr6Iixp9Jw2zeiMe461NmVr9TatWUomvXhs\/UnHsyXTH3QEBEBAXwIQYPryRGkgUPYENtavo\/\/0pt83jINRUxwTBqokI61rRoFW63zFqPql3B90sgibmTSyioLLtuPYFtxplQW4XS6VKc1LZuZz\/b3rT5nXMdQEAiBgKwIQYLYaLjQWBOxBwO00xkolvXcZ9FIn31gbFRIJ61gljOqjUeX+4M5TNDRj3alcSQOfm3yZWkUUyj5pm6q25NsN2+c7N3iZxgPW\/gLB9pDRARCwKQEIMJsOHJoNAlYl8FrvBfrkj3Nv7pxv+42aghhPGuc0wIov6fnyL0a+79\/5CY3MTBej6px1yubhCKsTqPdZa2Nis9fsfevyk6vDwR0QAIGyJQABVrZDj46DgDEEbo910lfPftuYwrlUt9OYP1vxhHECDBawwh+H77EIG521nggzUrjnT81smbF6S420hq9e6xp3TF6z94NbPyOrWCTXoIJbIAACJhMw5k3G5E6gOhAAAesQMPqFy+k0Zl2JoQLMhm7orfMKn3q2k+wk5ckOFmFzM9Z52LklVhRgVho7p8mCJ9fDYZYXxHQ7bo930mv9F9KXOIIACICAQgACDA8CCICArgQe3HaC\/uydf0IVHr+u5aYLcxlkAYsZagGz4zQ1K73Gp0ZfRNgrvRepd3w8\/TgU\/Sju1hHsQ6AYgvBHt56xDyC0FARAwBQCEGCmYEYlIFA+BM7wC\/If\/POfUDAaMqTTTocxf7ZiceNepOMGelg0BLJSqLUch1S4KqneuY5e7r5MX3rtm9RjEREWTUSNG4I8SzbbypNnM4uSrRgGue\/deIqices9J0UZAFQKAiCgEDDmTQZwQQAEypaAuKF\/YvcjZJS7+JrKatreqr9ntaiBAsyeGzFbxALGOnCdbzN1jozRmYFLyu+VeKz8WxZhvePF3ydMLGBY42OnP3fmP9dzkXnqmuqzEyS0FQRAwGACxvmKNrjhKB4EQMCaBMbmJ+nHN42bchOIhKh\/bohO7jpOgxPDbAnR58XGyG+ojXRxb82nQJ9WNXlb2fvhLD0\/fHZFgXEWYX\/DIuzXT7yXNjYW19Oey+FiX4gWmmaqmHmsZcFcMYBFijBzH7DMLp7jLw92NW3LjFpyLmtQZT1hgj9yXPxwfLa49P0l9xbKSN+TMpfc5y8LUvUklta1mI\/vL9SdWIjb13iQXr\/xTUvaigsQAIHCCUCAFc4QJYAACGQQ8Bi4B5hU41z4Avt8\/2U+d9L9u++l7pE+GpgaymiF9lMjBVjchvuAmW8nuDtmfmcFVVA9vdqTsnjdvbP0TF4W0yJsQ0P90psmXjlIJpNYR4DJ2JWK\/EpZF6VHCxMrpWPpeYTJu0+p0t+Fa1krmPJ7k6Ig51JOKuvdPFyS4cHr9tDj9xyjs9Mv05nnX2IBFKMYP7cxOaY\/LIwq3ZW0pb7V8PZoreDW1A0IMK3QkB4EVBCAAFMBCUlAAATUE9jcsIF+\/dT76RsX\/pUmg0a4Db\/7AiWWpbN9l9g1vYse3HOCbg920vDMmPrGZqSMGLhGI2HHNWB3MWdQMviU35Db\/Zvp4uANmo30qqpMXmK\/dPob9NunfoFaamtU5dE7kUPWJabe9fUuOq\/y\/K4qbk5KEMowJlm8JPmlP5QI5lWeYZmSThqenaE7U92KZSZlrWHrzKJFRiw4+grbrZXbDetOtoL3tG6j4aCaL4cs9ABldGQ6MkXDgSFqq2zPiMUpCIBAoQQgwAoliPwgAAJLCFR6K6m5qpFFkXl\/XsSD4Wvs\/EPWnT209z662nuLJngqpJYQiRm3SN6WAkwLPB3SNnpbaHxmnl7IMt0wV\/EiwgLRMPld7RSKz+dKrvt9qzm9CMbn2Mqy1KmMz8leSdlClNLV\/P\/Uf8xiMSbjXG6mBUHqvkBL51bOFu6LuMuWQtJLCEYjlIi5WARyeVIkJ5Z98abD83Ru+BKF42ElXan+b31jC43E+nJ2L007Z8IiJLg0fp4F2JuLUDOqBIHSJWDeG1LpMkTPQAAEMgj0Tw\/Sp5\/6XEaMvqepiUTZy5RphKd7LpDf7WMhdpIu91yjqYC6faPkm3YXW9Lk23e9g6xXsl3ImN5lZNtFGFQ5Guk1nm641tjmaoNMMxsNDFNLRStbegK5kut7X8SIpd6g70qidEfDiWVeSXO1N2IvIZkAAEAASURBVNf9dME5jjEu53sdT+dIZd7tTLloRq1+L79mLdXCWau1siOXKxOX6LENTyh\/H7M2HpEgAAKaCcALomZkyAACILAWAZkOaGSQF+1cIRQLsxA7Tw6vkx7ac5Kq\/VW5sij3Zb2GEcGWFrCV7\/C6opEXznbfZuobn6bT\/RcLEl\/SMBFv4ghjNDhCfmelrm3NWZiKZzJnGSWawGzBYzWM84lZVU0q5MsHVRUUkCgUD9Kt6RsFlICsIAACywlAgC0ngmsQAIGCCIgVyciQXtuipo5AJEine8+Tv9LPQuw+qvKt\/WLudXvVFKs5TSyuv1VNcyM0ZjBSf8l0Q0ekml7oPkszYXUvqLman14rpIiw0KipIsxqL89WEj1GPke5noms901sUK2\/msZD1tk0PCsPlZEXx86pTIlkIAACaghAgKmhhDQgAAKqCRguwPKYzjcbmmMhdoE8fo\/irGNn69as\/THMApZHm7M20MRII4w6YvVq9Wzi6YbXqWOyW9feyLqidBBnDqMmirCEteYfKuus0iyKfjRR8BS9r8sasLtt67KY1S+tPAVRWt0520EzESOcKq3OBHdAoJQJQICV8uiibyBgMoFXe87Rh7\/+Hw2ttZD1VMFoSHHW0Ts3SAe27KWTO4+RL8Pq5TFoCqIR68oMhcyF6\/3e7HK4qdbRRi\/1nit4umG2vi+3QokIGzNJhEldVgp6j10hfbOSNa6QfuSTt7W2uPvT5dPm1fKU8ziuxgTxIFAIAQiwQughLwiAwBIC4gRjYGZ4SZzeFwk1i8BUVHp7tJPOD1yh2tpaZZ3Ypsb1ZJgFzI5u6FUwVJtE9vVKhP10fuiq2iya0yWzWBllnzAzRFh6+qPmRhuWwUoSzLBOWr7gjO92crZ1+RcIOTOYnEDaJ94QEUAABPQhAAGmD0eUAgIgwAR87H3Q6CAv1XqGmdCssk5shNdqbN2wmfZv3q1n8UpZ8TIWYHWeBhqbDtHtiS7duWYWGF9FmJshwuLLXL5ntqvcz8tZCs5E1U\/Zs7oAk+f41eGXKBAz2cNouf8Cof8lSwACrGSHFh0DAfMJeHkfLqOD7PllVDg3cJn6w8N0dP899Lp7TlGFl\/dO0iHYcQqiDt2mFl873RweoOH5UT2KW7OMbBawdIaUCBsjH1vijAiyD5m1gpVkj5XaYt4oNVXV07SWNVN3lzCa10iNNUUSEVjBNDJDchBYjQAE2GpkEA8CIKCZgDkCzPiX3TvjPXRh5Bo1tjfS48cepm1tmzWzyMwQt6EXxEJXgbX7NvFWANdoLmLOxsi5pqaKlUo80sl0SL1DLGncJt75tNVSksdSjcmHZn55ZoJz5HSof8WygwVMSNyagjv6\/J4I5AKBpQTU\/3VYmg9XIAACILCCgEfLoocVudVFGGkBW96CufA8neE9qiZomk4dOk7377uX3C7t+9fbcwpifl\/Jpz0dvtB9jvSeLrp8fDKv1ThnERE2xiJMb0uY0s\/8cGV2oSTPy9V5Q5Stoo2+JtVjahcB1j\/fS\/PROdX9QkIQAIHsBCDAsnNBLAiAQB4ETLGAxY23gGXr+rXh23R14hZt3rKRHj\/6MLXXt2ZLljXOelPUsjZzSWQ+L85Oh4vqFjwdLinMhAu1brxFhE0YIMK0WDuMx1GmZifjwWqqodKpbgN4KVTt86upAQYlvjV906CSUSwIlA8BCLDyGWv0FAQMJ+B1GbORcWbDo4niTvcan5+kMwMXKeyP0sNHTtHxnYcym5f13JZrwDS+w8vUvmS4gs4Z6OkwK9yFSC2MYwaIMCsJMIfGsVuLa6H3LNQUpStmticaTajGZxcLmHTo2sRl1f1CQhAAgewEIMCyc0EsCIBAHgRqfFW8f5SxrzgRdnVvhSCuxy8OXqPbs920b\/ceevTIQ1RXWZe1abG4+hexrAVYPNIsT4drYdBqQUiJsAmejqiPoxUHWeifUytNhzT2z8Faj0TR703MzRS9DUY0oGeuiybDE0YUjTJBoGwIWOhfjLJhjo6CQMkSqPRW0I7mrYb2T\/Yas1oYmB6ic4OXyFvvpUePPkgHNu9Z0kQt1pklGYt5ofIl3kxPh2vhyGcvLnGeMRGa1GlNmIWUhpVMYGsNWjHumThM3RODmnqo9UsETYXrnPjiGPYE0xkpiiszAtpXk5cZIHQXBEBAG4FPv\/Xj1DXRS3\/7yldpIjBFgWiQxJmFhNbqZtrWuIkqKj286bGbPPxxu1zk4Y\/L6Vz8OPlc3iEdTranpV+Y5MiiQA6ff\/JbUpzlQiQeIXFlL+EIu7KvdVXTazfOU9xybsr1QbfOv4le6r5oqrON1Vq+2j5gq6VPx6dE2AQ1+hspnAimo7UfF55P7Rn1z5H+ldG\/5BIoUeUXC3r0dHB6hLZt2kvBWAHPlR4NMaCMs6Ov0n1tvFWHu9KA0lEkCJQ+AQiw0h9j9BAETCVwaP0+ks87Dr5RqffrF75L\/\/mHf0ZiuWqvbaXPvudT9N3ub9OlsQv84h4m2dVrxc5e6Rl7K26kuuJhT4TRIjnjUAuzk13ZS2hob6D9rbvIm6ikiNNGm5iu8RYv39S3eTfT813n1OIwPF0+FrB0o0SEyZSqBm8DhZOhdLS24yobQWsrpPRSr\/EYlV5ns\/SowdvIAqw\/y52VUUZP315ZY\/4xsifYswNP05s2vzX\/QpATBMqYAKYglvHgo+sgYAaBf3P47fTyR5+kP337f6LB6WH6wFd+h35p9\/tpV\/3uvKvXa4PkvBugIaNY\/8Qq9s3nnqWBrjB5I7UaclsvaTE9Ha5FI5FIq\/a1Uq1+T5y7TEYmyevIb02YnZworE7BiDsWk2AmN8edVL85vZ0EmDwpF8fOUSBmoy+VjHi8USYI5EkAFrA8wSEbCICAegLVvkrFInZyyzG6MXaL\/sfZ\/0YjwWH1BSxLWeHxkWx0apcge5e5eJrlme5L\/CHa1rSJDm\/bRYmKOUo6CxMOZjIQT4fhkIvOTVw1s1pVdemx55iIsKnIFFvC6jVbwgqxwKnqoKZEJqsMTW0rr8TxhPo5j0kLDZuLt5RwO9zkdPL0cD7P\/KTjxPNn72wX7WnYX16Dit6CgA4EIMB0gIgiQAAE1BFoq2mmGn8lvTT+tLoMq6Tye413d79K1XlFL19c3zneS\/Kpr6ijU7sOkb8uQXFnOK+yzcokng4HJqZoaH7UrCo11aNmI2Y1BUZ5atWkiDAfi7CE+umIigCz0Au0mr4ijfEEnIuLWHPX5WRPmpJchE1a8Dj4PHXN9\/i+nMtHiZcVsZxB7jiUelLH1GOYsqdll38pe638X\/42Lf6wZ1c5l2f5LZvfSe2V63I3GilAAATyIgABlhc2ZAIBEMiXQKWnkn5l36\/R\/3vuT0lcgecTHj10L4UiUcUhRywep2+9\/JTy0iBl3b\/nCG1paaevPf+DfIo2LI\/b6ablGzJPBafpBxefo2p23\/+GQycpXmlNt9Xi6fDyYCfNRVLOVAyDVEDBhU5BzKxaEWHhKapnERZRKcLivJLRZRFX9NCBmaNZ3HMN+ktxSiR\/ExMLP1Fem8h6qChB\/l4hgAAIGEcAv2HGsUXJIAACqxBor2qnxza9nn7c88NVUqwdPeNiK0zF3TS\/+pY3kyPiIZfHRROxYfY+aD3PXG52HLJcgKV7IOvEvnP6p3Ri62HasKnaUtYwK3k6TPPKdkzo7ARDRNg0i7C6tUQYvxyLNUJ8cyZ4rzeP2yO2iFTz5M1bXp754OCjTC9TjouNF1vDWmEhMydJW1Cl7Fy5pFKZ8up2eFgOuiiiwqmIlMsTzu42ZqHpEsGni\/UvXCnpMtuRbl86LnXk\/3MX4smIkr5s\/ycAVQaxauV4KFSWVHgyj1P92rXCa0MJIFB+BDL+4pZf59FjEAAB8wkMzg\/Qq8Ov0Bs2vZGe7vspvywWvq\/XZGRhU9CFohzypmux4FZe1Ndu1OmuC3RruJYeZwtf1F9kaxi\/Pbd6Nhnq6VB58WcushWBCBn51l04yTYEyrYEvAYldeT7Esf35CNp09sWyLl82mub1oabx13x9DYRmiCv08vvxWyXYCYyPSuRjCs2iswig64QOaMa3rYzM+t83uhtovn4rFJqs7+VrXhrT28VwRSIz1Morr+7dK\/Dp3Pv7Fac+r9FMpXQKkEEPAIIgIBxBCDAjGOLkkEABDIIyGbE\/3jzH+j86Dl+3UtSrbeO6ry1NB4az0il06l13mMWO+RSOaVnKjhD33rlp\/TAjmPUssFHCUdKVYqVQVkDIis+ksqqD\/62PH1kKcPnYnFgtAvforNVRvx78HWSHQGIeJD7SY4UvwAyZS+hxPP6MznydVyJk2OcqteFaUdbC21vle0EJCP\/t2jCkRFM\/fDN1JmUzz\/KlXKeEizpdElFuKTXmEisvs5HKvxSt\/4hzlPCgiq2PBCLmc9lPbExFhohNSKs0l1tiADTf0TsVaI88WpDah2X2tTGpoMFzFi+KB0EIMDwDIAACJhCwMXetERspV7Sif61858NrFf9S0++jZC9yCp9FeT3+KnC6yOvx0t+Pso0NI+LP272HCYbTIt1h603lzqva6rqxY6z1DhQT5vq1tP5viuKKNJUQIGJ66pqyFlvH0+Tegs6rfjEC6O6KYJaS84j\/bKFR+OhUWrytfB0xLUtYXnUhCw5CGh5LuULFqsECDCrjATaUaoEIMBKdWTRLxAoIgGx1lyZuEwy3VCmGEYTMf5EKRI3Zz2IyC8fu6qvZEFU4a1Qzv9\/9t4DPq7rOvdd0ys6iA6SAAmwiEUiJZLq1SqW5SZXuSR2EseJ7ST33VTn5vfyclPezbs3Tp5zkzhOXBLbseO4S3Zsy5YsWY0qJMXeC0iA6B3TZ+5eZzDgYDDl1DlnBt+mjk7b9X8GwPlmrb02iyM3iyOxuV3CtU0IKHZ9Y1c2G2\/ipVWatiOsPGn7jLAECasNW0Di4uU60\/+IWFA6kohIrmgZxCIXhSkkbZlrxPFFsmKMuJzKf91OhKaIt11rt9OxwVM0Hy3fmjuZeT1L47H4gd5zwNQM1ynmzbAlzOyUawDmz\/N4ZJQavWtE\/\/KLsLiYq+W2e0q6K5o9tkprn91V5SarWMA4AqNV+iKXHfKBQKURUP5GUGkjRH9BAATKTuAHF5+gnwz8uOztZhoMC4HU2tuYORXyKEbz0rZ4ib3feNM+\/WypjVIHbAFUm3gh5+ZAE60X64cdHTqpthpF5SpOgOns0qgI1mJmXjdJfM2gpqiuZfLZf1mETYbHRHj9ZvGFQjqCaDqoRrpptt55HF79BViuGtR1pCoqK3N\/lER65WdgheQScx6RQAAEjCUAAWYsX9QOAquSAM+F6Qp2k9vhlr5V9\/BeXJuPzdGxiaOGM1Ey78Lwziw2oEWAcRVj8+M0OjdGe3puoMOXj1MoJn+NKjVjrDQBZoX+2oXlwAqp0Gu8mJUnLGEjZe0izzu0UmIhWs7EgVzkJusIMLwayn1myAcCagngp0wtOZQDARAoSODe7jcQb7np9NSpsggwKWJEbuMmnzsd2ud3sFvQa1cOi4h\/LRR0+unE8BnDRmUFlz4lg+MgH2YnjsaIlEugvIInt\/WV5+XrT9+adTQdnV7ZhQJXrOL2x660SCAAAsYSwF8LY\/midhAAgSwC7KJVjmSFl\/HccfK8Cr3S1dkROjNxgfb27JKsjHrVm11PuS0F2W2rObaC1ZNjUlojWaUf1qCR3Ytyfq43d6zPbrrksXUsYHBBLPmwkAEENBKAANMIEMVBAATkE\/A5s1ZPll9McU4lkccUV66ygFYXxBXNinfsV6+8Th2NLdS3pmfFba0XOHR9JSVriG6rCB\/rPLtyCh45n9dy9meBiq\/lx4IrW3RZxQJW566XgxJ5QAAENBAoz9fRGjqIoiAAAtVDoEas+1WOZAVrSO447Tq4IObWyeeXp69KL3H7enbTqxcPiSh3WaEX8xWQea2cL6oyu1Q0mxWfedEOG3rTKkIwvUacoUNVWHm55gru6OgXM+6iVO8OSLPOpC+FhC7mn6t8P1vsvppIyI+YqHDYirKvEYt3I4EACBhLABYwY\/midhAAgSwCAVeAgq6arCvGHCZF6HirJYeB84P4he6VK4eou7mTeprW6jJ0zAFTjjHfi7XyWqqthHWscUy2XM9oU0e3tAQHR0HkpSySvBC5+Feofb7PS61bIa3xQYBZ4TmgD9VNAAKsup8vRgcCliPQFewyvE\/8MmO1ZNcQhl7uWC5NXaHBuau0T8wN0+ryWC5LgdyxlcpnhWduhT6U4lTu+1b7HJXDVZXXG5xNTChGbbeG\/iJYwBQ\/OhQAAcUEIMAUI0MBEAABLQTaAx1aissqq2TxU1kV6pDJzqs8lyHx4tGviLlhG1rW09qGTtUtWu3FudRArOCCaMXPXSluRt8vZPExut1C9Zfjc3Lvpj00H58v1IXC11Pl+R1RuANELhEBEXPAihHCPRDQhwDmgOnDEbWAAAjIJLDGt0ZmTvXZUjZ25rEVdPdRX7P6knZ7eb\/vOjdxkZx2pxQpcf+FA6RUUFWaC6IVrE\/xlDXm8Kj\/lOpf0moCrCwWMJ9wu4woZ5kvCAevo2YX\/9LBOsT\/pS9yMqE7xO8UycMzfZ4SAo4lXMaVMZ5IUiwep+aaOrHItojCKtyg80m8JSdR0RivZfe9C9+Wfnc2e5upzd9B\/KWZXyx7gQQCIKAfAQgw\/ViiJhAAARkEyvVi73a4KJKQvwiqjK5ryuIoswDjzsZFQA6OlLipfSPNLszSlamrssdgBUEju7MiYzlerEv1J6FTAJRS7VTafYcQEAkx\/8kKyWgL2K2919NEZEzVUM+NjdDpifPEnyMW83r9DN7VcyOFUsUjMpbqcK27jtpZjImtzd8uiTK+hgQCIKCOAASYOm4oBQIgoJLAWGhEZUllxdiVxkoCzGZgEI5SZM6MnRffgLtpz\/obiK1hshJ\/9V5ByQqWllgqJiwI+WwMFQTSgK46HE4R4c8aX4YYLdQ7muvpamhBFUX+wiQUD6kqW7yQ9s\/kjFhQmreTU8eXmmKr2GN9H6TOYPfSNRyAAAjII1Benxh5fUIuEACBKiZwcupkWUbnEi99VkocZtrMxGL0tcHDdF3nZmqtKe0GWi5LpZ5MzNaM0aQ1RIaeTPWoyy1cYa2S9LIq5RuP3+UV4msw3y1Z1zKOhbIyWyDTQnxBRHi0hmXTAjjQBRBQRMDcNwJFXUVmEACBSifwwtBzNDSv\/gVFyfjZAmalZLdIiLOTo2colAzTTeuuL4pH6ZyxopWV6ab27\/m1dZSDcNiEux3ScgIuYX21SjLSBbHer22JjXxzwPThZtxPhtV+z+rDC7WAgPEE8JfCeMZoAQRAQBC4PDdA3z77zbKx4AAUVkrGvVwpH+VCLEQHho7Qju6t1BxsyltBJVrArMDYZbHPXd6HW+aLThHYwSrJyEiVdV6NAixviAwdyBloGvY6vTp0EFWAwOojAAG2+p45RgwCZSeQSCboX45\/QUwsL98Cya4yrLulBKRcccCuiuVyVzw2fIpiFKfda3esGIqRrlorGtPrggWmrTlsVhD+FgCR9UytJEqN\/FzX+gJZo1Z+KPd3hIqalReRUcLr8FK9u0FGTmQBARDIJWCFvxS5fcI5CIBAlRE4NHaQxsPqIoOpReGwmCXizo030\/9z9+9KCyQ7hTjksPS85wWTr+3Tv5I\/\/cw\/06ef+ZzaoSsqNx+dp0NXj9ENa7fRhbEBmlyYlspXoguiiNEt+m6u+HBYyNqj6INgYGanheZjGjlnye\/2iq8zVMSfX2RvmKOgQT8WnYHuxbD4Bn54UDUIVCkBCLAqfbAYFghYicCZ6dNl7w6LGislj9NDnfVtsrrkNmHOzOGrJ6jOU0M3dG+jAwNHdAuBLWvAVZKJgyjwmk1O8Y\/FIFsy2aphE+szSdER+TjzTxxLUe8S6iLmFUNmrgRd2TOnJayC6X4ZaQHzutw0t3L4sq8YZgEz6APRheiHsp8tMoJALgEIsFwiOAcBENCdwHiovNYvHoAZ624VA6dkjSizIjhOR2bp8PAJ2r1uB7l44VYTE1vgpND90uKy\/BW+kC6SmOFOZRam5eOM3UAsvM0vmplTviUzNXqaKW25Sr+pckh76UhEeOO9dC4dp4Qw5TNxXeyT0l78X9zjf5zGovKXWWjyiGiUq2DtZktZwIQ7tFHp4MBJ2tLTRjGV0TBZnFdK8jl8dFPLvkrpLvoJApYjAAFmuUeCDoFAZRNIiEhwU+FJsQZXhMKJsLRNRCbKPiiruYLxwqpyk0ssIq0kcX5eeJqFGx\/znq1omfOByUGajcj\/bv7Q0DG6cf02mp91S0IjLTaE8GDRwUJE2l8TI8lk+jqLE0mKJFmUZK4lpVDVXC4hXed76Ws8N5Dz8WeGj9k9jO+xZUhN2nDHOnK7lE9t5iARE9Hyf0mQlntqRlqijGEVl2i3wG0rBeHgz5pRaWhmjPbZt9NY8opRTVim3gfWvpECLm1z3iwzGHQEBEwgAAFmAnQ0CQLVTGBSiK+\/eOW\/mz5E61nA5L\/43b\/5Ttra1r8kpiSBJea0pcXVosBypgWWnGiPH\/v6H9CPTz6z4pmwm2ZGqAU8fhqcHl7KMxsJ0dPn9y+dV8IBC8PKSgb112ZQvSrhyvmMqqxacTEjBRh35vuHn6P7du6UFi1W2jmjXBClHwsdjWs9tRtoZ\/MupcNDfhAAgSwCEGBZMHAIAiCgnYBVIp45TF74OEOS5wF11XRQk68xc6nknhdKlrNYcsmKFjNkvwD\/8r7H6Lfu+hVJzOW+8PX\/6a1LVUrBCnR8aVuq2MADtfrLNLliUMNqORj1aLI\/f0a1oaRedvVbdDJVUkxW3kg8SqE58YOjYumzSnBBbPG10pvXv00WC2QCARAoTAACrDAb3AEBEFBBwGmRBZDVhHJ3i777XF7yOX1i473Yss55zZv0+eI9zifd53Mu41ksc608B98wO2XPwWHR5RbWs3yJ3TYzFoKkcBckc6eB5eti0Wtq9UyF6cyiDKx402ruwPzzEEvEDEP105P76R177qDh0FVFbYgfTcsmDqRyZ+c9dEvbbSKgTIX9YrAsVXRsNROAAFvNTx9jBwEDCHgcHrqv+37Jtc1td9PPrjxNkzrOAeNviV1CKLHrHNfvFu1lzrltvuYS9+wJL21q3JQjohYFUq5wEiLKK8pySPhqTNlWyXiRIAROEXgjEU+7SvJ8rYoTYCpNP2qFm9bPilFWGLND8edy4c+VlRKvEWikAOOxnhgYosZmu2GWNiU8tX6+ea2v92\/6RWryNitpFnlBAASKEIAAKwIHt0AABJQTYHejh9Y\/vFSw2beG\/vPi9xeFkRBOdiGShEDyLAooFksZISVdXxRQ6Wt8L53\/muDKb71ZahAHKwhkW8CKBbjgZxehqFSeg2FUXFL5pmmW4cEoAaYSg2GP23IWsDJ80XJk6DS9q+teGgoPyOZqlAuiljlga7wt9IFNH6Iad63scSAjCIBAaQIQYKUZIQcIgIAGAlsatxJvSOYReGz32+juvlvEgs9O6qrvKNiR7LXTkkUsZQUrMPmGWsloNcFiMkbdm7dSFEQeXLks3ZNzYo03S7xlqfuEdwQ66X39v0h+p1\/3zwQqBIHVTsASvxpW+0PA+EEABEDASAIcUZG3Uin7xTTOLogVliovCqJRgNW9cBvVm+zPlVFtKKk32yKspJzSvG6ng8JKCulgim0PtlJ7sEVaM09a4kF8keKwK694XU0PvbfvA8JTwfw5rEoQIi8IVAoBCLBKeVLoJwiAAAgYTCB7AWglC0cb3C3Z1at36TNHsBglGM0ZTeHHZDUXxHIJQin6o4LvMZTLpOXMWSz1rWmnSEpY3rJSiKayzkofcqRDiK\/SnJADBLQQUL5ipZbWUBYEQAAEQMCyBKQXxsXewQJm2cdUumMqg5GUrlhdjnIJHrm9y3a1lVtGTT6nQ+krljYJtrdr5wrxpbTfAWeAHuv7ICxfSsEhPwgoJKD0t4PC6pEdBEAABECgUghkvyhX4hww1brDJJOReotd8U+UScMp2CmnRdbky3SwXALMrtD1T0sY+r6GXuHuOJkZoqq9Q4SaZ8tXnadeVXkUAgEQkE8ALojyWSEnCIAACFQ1gQe33E3j85MijL9TWivsuwM\/rqjxqnbp02Z4qChGZnTWautGOezl+e5Zi6BS8px4CY22+hqKpkJKiq3I+7bed1BnsHvFdVwAARDQnwAEmP5MUSMIgAAIVCSB377n15b6HY5H6LtfrDABJlZdUpPUlVLT0vIyxlnAzBrR8vFlzsoleDLtldpnW3pL5dVyv1wCbI\/keqhsnlfuuO7uvI+ua9yeexnnIAACBhEoz9dABnUe1YIACIAACBhDoFxuWnr2PqlSd6i2nGntvGqfyVINqwRRqlqV9+0Wc0EslwBLkoIIHBJb5c+tv3GDZtfD\/vrNdEfH3SqfLoqBAAioIQABpoYayoAACIBAlROwWuQ6ObhNE1JyOpcnj3EWsDyNmXjJYTEBVi5BmKSEodS9Ti+11gWlkPNqG+I1vt68\/m1qi6McCICASgIQYCrBoRgIgAAIVDMBm\/CfKteLql4c1Qsw5ZYHPfpsWKuGWdbUjdpud6graFCpcrlEJlJxg0aQrnZv5w7N874eEeIr4Aoa2k9UDgIgsJIABNhKJrgCAiAAAiAgCFjNclHqoSQrbA4YqexvKQ6GCbtSDRe4bydrRTkplwCLJ40TYFub+yls0zbv6\/rm3bS5YWuBp4bLIAACRhKAADOSLuoGARAAgQomUK65MnohSqmdBKZXBxTWY5QLolHCTuHwlrLbyxR1cKnBEgflsuzGktESPVF3e42\/ieqD2mKo1bnr6cG1D6vrAEqBAAhoJqDtJ1hz86gABEAABEDAqgQqbR6YWhdEteW0PjejPAWNE3bqRlwuwSO3d+XqTyQRKd0lYa7knzPuk1MI1Tp3DTnFMhBsfeZAOA67U9pL98U1dudsCdaJwBuzpesukuO29jux2HIRPrgFAkYTgAAzmjDqBwEQAIEKJVBpkRDVuiCaZzEyyFnQoGrVfoyFbJBd1CbcFXndMHZbZPGRdl8U5RMpviO29P8pJY7EPEWb2BNfzey5Jek43aR0XfBIi10hTaVj410iXaLvXoePkimOhSj+iYaTqYR0zoI\/IY4zQjkujjkNzF+guiXLFkdQ5C0mhfLgHDGxbRYRC6fj4+JIfXLaXbS9aYf6ClASBEBAMwEIMM0IUQEIgAAIVCeB1WIBM+rpJZNCEooXfrET+\/TrdlK4SfLLOJ8v8Iu5OJfuSMJA3OMzLiRSukw6P08Xk8pJ19P1Zu7zPn2PyxL5XV7as+461iWiEq5JkihpXSLOJfkh\/se3bNL\/pCxSWemIL\/L1PEnq69L17LN0mXSxzPX0mTMVo\/CcU4gOFiIiNmAyIQmQhADDQiR9nr63VHXWAbvcHXn9eNYVbYe39N+krQIZpet8QZqOTsvIKT9Lg6eB5hLa6+yr6xfWL6\/8hpETBEBAdwIQYLojRYUgAAIgUB0ErDYHzCksI+yexdYFl9inXbTENeGWxZvb4aBUMm3dkDSMpAlYDIh\/fCxe\/tPH1wQLC4K5hUGKCzuDZK1YFAmZYxYHzqSbnj54kOKJBHFgBWmfEHtxL5aIrdjXeWtpwRMy7UPQWdtGWzu7TWs\/t2G3003rGtrpxYFDubdknfOz0DVJHw5da1xRWV\/LOnFtbsV1LRc6alppIqrN+sXtrw1y35BAAATMJAABZiZ9tA0CIAACFibQX99Dbd5mYSZhx6904iMWMVLK7BZfaNkKw6aTtGWGLTZsqeFzYd0Q1yWLkNiz5YOvZVtEuOw1ywhbSNKWkhu7txEFZrjWdJtF\/n906iAd1RYYLm\/trZ52evXi4bz38l1MpabJ7XHnu1WWa2xVskoS0pjGwmP00JZ9qgUYf4b0THI+S1rb62xqoish\/QTYpoZNuogvHld3cK3W4aE8CICARgIQYBoBojgIgAAIVCuBs6MX6OLUZVOHFxWWJpcM8WVqJ3Maj8Sj5LP5JPe6nFtlOWXhOx8JU8BjrpsZi6+J6CRFkmFp3A\/130Y\/OPVzxQx0t4Ap7oGyAhxAYzI2qqxQkdw1rhpaSOoj5mrdddTm7yjSGm6BAAiUg4D8mbHl6A3aAAEQAAEQsAwBdvUzO7FVzOykxmISdPlN6zb3999PPE5ToXnT+uCwpcVXOHHNFXNfzxZqEO6ZSpMa\/sXa0NuiltvWnvXbaCG+kHtZ9fm6um6Kp\/QJaf\/Q2jeJ4CbWWhhbNRgUBIEKJgABVsEPD10HARAAASMJOB0uI6uXVTfPszI7qREAPqfPtG6zaA0nwvT1E9+jkTkDfDJLjEwSX5FJ0Ydr4ouLsCXsY7e+u0Tplbf1toDp7NG4osPsfqhX2li\/kcaj+ljTtjZsw8LLej0Y1AMCGglAgGkEiOIgAAIgUK0EONCF2Ynd+cxOagSYx2HmHLB00Ip4Kk7fPPUEDUyPlA2hnRw0HplYIb4yHUjaw\/TYTmULAKfnFmZq0L5X8zzltpp2PxyTm71oPr\/TL4LDyFhLrGgt6Zu9tRvobb3vlJETWUAABMpBAAKsHJTRBgiAAAhUIAEruCCGY\/q8gGrBr+aF3W2i9ZCjNGYS9\/3xsz+i0+MDmUuG7dmyNBefp4iwvhVLPS3N9GDfbcWyLLuntwVMRIBZVr8eJzs6++ntu+6m+3bu1M39sLe+d2n+nJY+domgG+\/e+H4RKdT8L1S0jANlQaCaCOCnsZqeJsYCAiAAAjoScJtoxckMYz7Kc2nMDSahRoC5xBwos1JChMrPTU9e\/BnNx\/bQztY+aQHj3Pt6nLvsbhoJl7a2iXiYtLdnE702eIxG5idKNq23AFPzPLM76Xa6qNFfR621TbShpYNCqRmaik7RUORSdjZNx+tr1wvXw2FNdXDhNn87va\/vF8QSDeZZZDUPAhWAQBUSMO8vRBXCxJBAAARAoJoIWMEFcU4SYI2mYuWQ+UqTXaxZZlaK88rPedILg\/spFAvR3s7tZLfr7wAzIVwP5aaYCCrxkX2P0p\/+5LMli+guwBQawG7bcAM1NwQkt8qQCK4RTWbcYuO6iq4MCI\/DQ3aH6OQ1Q2bmlqJ9k1hC4v39HyKv09wvMBR1GplBYJUQ0P838CoBh2GCAAiAQLUTcNnND8IhWcAUvjDr\/VzYYqM02VKZldOUltSev1jkyIOjh+mpiy9La7Fpb+laDQ6xWEAooSzyH88H27Km91olBY70ngNWjE92F3qauujRm+6khHeGhkNDNC2sXNfEV3ZOfY\/7GvsUs8ztQZ27nj646cMUcAVyb+EcBEDAAgQgwCzwENAFEAABELAiAStYwJiL02au+5QaAWB0qPNin5dSLnanJk\/TD84+Q7H4SlfFYvUWu2cTa1+pSXu7t5csVm4LWMDtk+Zzdbb7aXDhcsn+6ZmhK9gtFq6+qqnKoFg3jMUXr\/mFBAIgYE0C6n5jWnMs6BUIgAAIgICOBKwjwMy1xKmxgCULuAHq+HiKVmUvIYgGZi\/Td07\/hMKxWNF65N5MpNT5y3ldnpJNlBKUJStQkOHOvt1069ZNkmuh2jEpaG5ZVg6S4XW5NM3R8zl89IFNH6JGr36h8Jd1EicgAAK6EIAA0wUjKgEBEACB6iNgBRdEpmoX7m1mJjUWmERWJEIz+l5KgHGfRkOj9I2TP6D5SPGohXL6r9Y1T04\/uX2bTT+Xzngiv+Xvoetupah7imZjs3KGrHuezY2baT6hvm23CILyvv5fpBZfq+59Q4UgAAL6EoAA05cnagMBEACBqiHgMjGUejZEe8q8gBbcDzUCLJrIBGrIHkn5ju1CtspJM9EZ+vcTj9NUaF5O9oJ5SoWeL1TQKTMYiFyhVqid7Ounh89RqwhQkZ0e3n47TZE217\/s+pQedwY7aSyiPuqhU0TdfG\/fB6kz2KW0aeQHARAwgYC839AmdAxNggAIgAAImEvAKgKMTAxowU8gqSIIRyRmsgAr4YKY\/ckKi3W7vn7iezQyN5V9WfYxz3fj6IBqktxojLzAsV6JF\/demAqR3+mTqnxkxx00kRzUq3rF9bB48rs9wsqnuKhUgMXpuzY+Rutre9RVgFIgAAJlJ6Dfb7Sydx0NggAIgAAIGEnACgsx8\/hURIHXFYsaC1gopt2tT8sglAqWeCpO3zz1BF2aKr2OV26\/HEJAqBGpXI+d5KkOu0NfK+jF8SvUkKint+68i8YSV3KHVNbzzU2bxQLW6lwPbYLgO3rfQ331m8raZzQGAiCgjQDWAdPGD6VBAARAoGoJWCUIR4KjwOv7\/q3omakRYPMRYRFKG1gUtaVXZjUuexzs4olzP6J7195B\/c1rZXdFy5pnNtkuiPKEmuxOi4ydzc00HB9QUkT3vB2BDhpn10OFw+O1wnY0XU83rtlLLX7M+dL9waBCEDCYAASYwYBRPQiAAAhUKgGruCBKAS1MjMOhRoDNRebJ7TMvfL7asPD8Wf3JpWfI73qAuurWyPzoKlQPWbXKtYA57Poq8Hu330KOFnVuk1nd13TIrocBj09Yv0pHogw4g9Tmb5e2diHa+us2kcth3udL08BRGARAgCDA8CEAARAAARDIS8BtkSAcMZMjCrJliKPwKVnbi+cZ+Ww+Knco88yDVGMBy5Tl\/ffPPUmPbX0bBT3e7Mt5j9UI1ExFdpkTn5S6VGbqz7e\/c8te8rSxi6h64ZivXqXX2PVwPJo\/8IbfGaD++s20oXajNLeL1\/ZCAgEQqB4CEGDV8ywxEhAAARDQlYBV5oBFxYLBZn\/Xz+6YURmWiuwHEHT5aTqqbm5Pdj1qjuValgrVzcLxyQs\/p0f67iWHvbhQ4fljapPc8PJyXRVL9ePW\/t0U7BL9lSn8StWn9n6XiFbIUQ\/zdeO6xu30pnVvIe9ikBC1baAcCICAdQkgCId1nw16BgIgAAKmErCKCyJbk8xOThVBINx28\/wmtbggZlgPzV+l46PnMqcF92rXAOMK5Qowh8y5YgU7KW7s2bCT6tcJMVlcTxarQpd7buE66HE784qvN3Q\/RO\/Y8B6IL11IoxIQsC4BCDDrPhv0DARAAARMJWAVC1goFjGVAzeuxh0znDCv3zadVMazV14ouUZYOBFS\/XzkaiGtLohbO\/qopVfYUW0p1X3Vq2B\/Qx8txFeuu3ZL2+10S9ttejWDekAABCxMAC6IFn446BoIgAAImEnAaZE5YOmQ7gEzUZBSCxgHjZiJzsm28Og9OK1zwLg\/vE5WjTtIh0aO0e3duynvml1Cz6hdhJnbqPPW0i\/f8F5xJAKqC388tg55nR5J8HrE3rN4TiJOBWsnu+DK+Ry29J7P2TrG482M+WenXqD\/+aO\/p4zllK9v3dxJIZs57qA8zux0fPwEbeH5XxER8n9RgW5v3En3dT2QnQ3HIAACVUwAAqyKHy6GBgIgAAJaCFglDP18lKPVmSzA7Mr+XDYHGmjBZt5aYBsa1tL6hvbFx89hRPifWFNNLJos\/p\/+J46X\/mWOxaJrPP+Lt2giKq3vNZecoHPTA7SxYd1ifdd2DoVcrpVMH9V5auijN96fe1nT+Zb2Prpr0y30iX\/7Qzpx9Qzds20fhZzWEF88MGZ7ZOwodQY7yetyUauvld7S86hpYl0TbBQGARBQRUDZXxRVTaAQCIAACIBAJRJwany51mvMHNKdSG5IdL1aXV6PUwThUJKago20EBtUUkTXvKHEPE1Ex3Sr8+TUCVrjaxYWq+VC2K5xgba0LNStm0sVbW7bSN\/7+L\/QX\/7wb2nEe47UhwlZqlL3gytzV8QCyv307r73CyuevmH2de8sKgQBENCVAOaA6YoTlYEACIBA9RBwCjcvK6SIsMTYUub+uXI6lQmw+kCtqej0mgOWPYj9w\/spnuRVsa8ltqdZNXldHlrX20RxW+l1tswYQ3ewmz6649eEm6XHjObRJgiAgIkEzP2LZuLA0TQIgAAIgEBxAkqtPsVr03bXZTM3EL1LoYViPmnuIr9GCDCOdvj66JFl66HFk1a0LaU\/a2emTtMLQ89r++AZVLoj0Em\/ueu\/UMC13KJoUHOoFgRAwGIElH2lZ7HOozsgAAIgAALGEXAqFB3G9UQEX7CJP1cmmlscDvnfVzaJ+V\/npi8tBVgwkkuhus9eHaeh+XHiRZITYuN9UszzSiZ5fleSehq6aU2T\/DFl2hlaGKK2+XbqCKZdQrVEQMzUacQ+IYThl098yYiqNdfZ6m+l3xLiK+gKaq4LFYAACFQmAQiwynxu6DUIgAAIGE7AKnPAeKC2lNyA5cZgUSJGN3VspMOTx43piMxa52ILNDQnouwVSOkIgd4Cd4tfPjh6gBo8d5HP5ab5POHUi5defteoOWBPXnpSCNCh5Y1Z4Iwtkx+67sNU6zbXRdUCKNAFEFjVBJR\/\/bWqcWHwIAACILB6CFgqMIAIPW5mkitGa701dGb2vJldldou5YLIFjG1iUXT\/uFXKJW0UTxlvflVY6Exevz842qHZ2i5O7vuovW1PYa2gcpBAASsTwACzPrPCD0EARAAAVMIyBUd5eicTQqfXo6W8rch1wXxuu5NFIqbF34+03tbCcGqRYBxG3OxWTo2ejrTnGX2JyaO0\/945S8oJuarWS3VuevoLRvearVuoT8gAAImEIALognQ0SQIgAAIVAIBpYEnDB0TCwpT54CVjgi5tb2fDgsBUEr8GMppsXIjLWCZ\/p+5cpkmxhqovzez3ljmTvn3LCifEFav759\/QlrbrPw9KN3iuze9h3xicWskEAABEIAFDJ8BEAABEACBvASsZAEji88Ba\/DX0bx9wRLiix9maQGmXc3OL0Toi89+m+bm1Fub0gtD5\/34yb44HZmmvznwKUmAGTWnTHZnCmTc1rSddrXsLnAXl0EABFYbAQiw1fbEMV4QAAEQkEnAWnPAZHbaoGzFWPhcPupsbaeJyJRBrSuvtrQAUz8HLNObselpCsci9J3nn1kWmj5zvxz7kxMn6E\/3\/wmdnDxZjuZUteGyu+m9mx5TVRaFQAAEqpMAXBCr87liVCAAAiCgmcDa+i762ns\/Q1dnR9Lb3GjW8QiNzI1JIc01NySrAnODcNjt+b+vrPEGaX1HN12YGZA1inJlKjEFTDy3hOauDE5elep47dIR6j+6nm7atlFznUoqODDyGv3Tkc\/qMhZul61xdrH4uMNmF3veHGKzpfdkX7JuSp9EcT0jcuPJGM2KOXGF0iO9j1CTr6nQbVwHARBYhQQgwFbhQ8eQQQAEQEAOAQ69vnnNRmnLl5\/n3YzNT9DPz79EXzvwXXI73dILa1y83HMgipnILE2Ep3R5QTZXfhE58giwjWt6KOlNqRJf6Rd8GyWSSYPmLBUnxmuCaUk2EQHxytTwUhVfffFxGhi7ke6\/8SYKBj1L1406eGnoRfrCsc+vYOd1+MhDdTS6MC4JKomu+JxKa6CJPbso8ueWt40NPTQeuyp9Pvk87b6oTpi2B9rJ5\/DQ4PzlZUPuDHbSvd33LbuGExAAARCAAMNnAARAAARAQBUBFhEtwWaaDs3RwStHC9bR4K+nRl8dBT0B8oi1o9ialPtiHJcWCI4T72NiEd2YsCokkylyORzkF4ELktM2ciR84qVaWCrYe04c8J7z8D7FL9CLx\/yyzcfpe7xPv4Cnr4ljvifyS9cT6XsshJJ8LPYJ7guf83GCjxN03a7raO+uXdJLPb+oS20svszXpALSy3vmxV562ecRin5cu5Zu59qLfhpXb2AdHbpcmF1BqCVuZKwzhbLx2LQke9wrjS+7jufOvEIvnH2N3rjzLrpl23Xk8ZYOXCKeXHYVso4XxBpnXzrxrxLz7AJt3m4RmfGsiNA4mH254DF\/zqI6RUvMrDm2oa6XFmJzNBmZkCxk79\/8ASHe5XAo2E3cAAEQqEICEGBV+FAxJBAAARAoJ4GTI2eKNje5MEW8aUkHnj5I47OTWqrQVLZrUzcNxgovbKy2cnZxMyOxENSSUvH8pbnexw\/+lH567AV6976HaOvGbiG4C49RufwievHqC5JAz\/Sg1lVP0Zid9g++nrkka69HAJDchs5OnxMujA7qq99ALMZ6xIYEAiAAArkE8ju15+bCOQiAAAiAAAgUIHBy5GyBO\/pcbvM0myq+eBQ2g6IwGhWyvpSu0zoHLClcEIulhWiIPv\/MN+lzP3iCpmdCxbIqvvfslWekMo2eFgra19DR4Qt0akL5Z5AtmUYkZntu+gI9sP5BI6pHnSAAAlVAABawKniIGAIIgAAImEWA3fPOjF0wtPkGMafH9GTMu\/pSIAe9x1fnCdLujm0cOkIEj+CAErxPb3zM8\/uICgeO0Ks\/x4fO0J\/9x3l65Pp76cYt\/eTzLX\/tYGuRkjS6MCrcQm3kStbRwSFtkQ+NEmA8nru776Jad62SoSEvCIDAKiKw\/DfhKho4hgoCIAACIKCdwIWJAYom1K8DJacH0xPTcrIZm8cgAWaUC2JLfZAmEnOGMRGaTnZikf7t135E3znwY7quo596W7qp1peeN3cwdYl+aN9PsXiMYomY+CyJ+X9iH+d5gOJaVBzHxLWwCOoytTBDXS1tNOpKR1+U3YECGY1wQeSmXHYnPbT+oQKt4jIIgAAIEEGA4VMAAiAAAiCgmsAJg90PRSBwOnpem6VD9eCyC3L0D0NScVc+tU0aJS4y\/bE7lPPgPh25clLaMvUo3fsDIsJivdJS+fMbxeiurruo3mMBq23+YeMqCICABQgo+A7LAr1FF0AABEAABCxFoFQADq2d7fZ10EJkQWs12ssr1xuy2jRqDphhejEzKkeBKByZ+wbtI7GYbjVrnQeXryNOm5PeCOtXPjS4BgIgkEUAAiwLBg5BAARAAASUETgpwn4bmXxx49eUktV\/owSYmKNlRDLKupPpa8IRo4DHnzkt2z4cjejWFq9Tp3e6vfN2avA26F0t6gMBEKgyAhBgVfZAMRwQAAEQKCcBoyMgzk7r\/5Kshg+vIWZIMkZ\/rVgjS\/e+i35v7dioe7WlKtRTgPEi4XoGQuSAIm\/qeWOpIeA+CIAACAjneiQQAAEQAAEQUEGAQ40PzQyrKCmvCEfqOzd4QV7mxVxel4du3bqXNrb30No1XdTe0Er7Nu1WVEfezAb59JVaMDlvX2RcNKi7y1ruWtOy7LwcJ6FoWLdmeM2yoKtGt\/o+sOX91ORr0q0+VAQCIFC9BBCEo3qfLUYGAiAAAoYSGJzRJxpdoU721K6lp6efKXQ77\/Vt67fQc8deWnaPX9obg\/U0Mad+MeiktnWLl\/Un+8S4OWDCYmeQdS3Tf39jOqy90e6OmfZ4vxDRd02xgDNAc3FlVlYR1F+E9bdTPGs16vu676W7uu7M7iqOQQAEQKAgAVjACqLBDRAAARAAgWIEBqeNs35xu81OZXNp+jo20CunD67o8tT8NPV1blhxXcmFcooMJf0qlDeppwmMxWdCrCgWc5FtwU3JaTfFx10UnkxR35qeQl0w5DpbrZwK1w4r1hGX\/docQ37GPqefmj1rqMPXRd3+9dTlW09tnm5qcLSSOxmkUChFV6enaSGUpDZvh1R1f0M\/Pbb5vcWawT0QAAEQWEYAFrBlOHACAiAAAiAgl4DRFrDJsQnatWEH+T0+mp6foaOXThK\/gBdKjTWF45O\/dPJVuk24Ju4\/dYCi8cLrlrFlw+V0ksvhIqfDIbb03iP2a1yNwvLBgfFtkgXElmILENtD2NjEVxf3S9PFFk1QbIxavMYv+dIh7\/n6XIr6\/b0USUUonIyKe0lyiEh6Dqle++I+3Q67K0ptMgDRtpS4MqmudH1JYarjNg6\/zsFRkpQQ5+ktkd4n+JyPE9L6WolEQqy5JTax1lZcOuZ9+pjX32JWxZjfvmVfuh9l\/L\/bIQRgXB9L2NXZMfI7GmhWBOSYiszQaEre2mlTkWmaHp6hG9q20fs2vVf6PJQRAZoCARCocAIQYBX+ANF9EAABEDCLgNEWsKnZGXrt7OtLw+ttXUdej5eOCSGWm27efBO9cOLl3MvLzn8uXBM9Ljd1NLamxQYLjUXxERWL\/rLwYLERiUWlLbtwKBahg0eOZV\/S5fjGrp309OvP6VKXGZVManDrVNtfFmALOgmwwTn1brQspWcj87Sudp3aoaAcCIDAKiUAAbZKHzyGDQIgAAJaCRgZgIP7lmt5OTd8UeoyW8V8bi8l2B3N7iR2MSwlvjJjZXE1OKHcddIoF0Qj1qLKjLUc+2OXT1FneztNhqfL0ZzUhsvuKltbpRq6uXNPqSy4DwIgAAIrCECArUCCCyAAAiAAAnII7OraQd89+iM5WVXlYZe7fCnbKpbvvhHX2LXPiBRLmrOgsV5jYZG8vr6LJq+WT4DVOmtplMb0GoKmem7ugADTBBCFQWCVEkAQjlX64DFsEAABENBK4L273kp39Bo3B8gh5mBZJSUNWgcsmig8H80qYy\/Vj\/mFhVJZdL0\/Nqo+mqWeHWkPttG6um49q0RdIAACq4QABNgqedAYJgiAAAgYQeBP3\/h75HN5jaiaPO5rEeoMaUBBpSmDLGBGWdYUDE1z1ktjVzTXoaSCl04dpAZP4YArSurSkvfmjpu0FEdZEACBVUwAAmwVP3wMHQRAAAS0EmitWUO\/evMHZFXTVtdMb9h2M90hFka+rrOPWmuaOK5fwbJur7vgvXLfyJ2Pplf78VRCr6pMq2dsbkIsQKxsyQAtneX5eI0O8xc8xvwvLU8RZUFgdRPAHLDV\/fwxehAAARDQTODDe99D\/3Hocbo8PbSsrpaaRupp6aR1a9rI5o7TSHiY4jRN7FjYUueils5WusnZS95ELf3w0As0G17uymZzWec7Qg7XbkSqBgsYc2mraaHx0KQRiPLW+eyhV2jLdetoOjqT977RF+s8tbSlqd\/oZlA\/CIBAlRKAAKvSB4thgQAIgEC5CHicHvrkGz5OT11+itxuhxBZUZqJTVM4ERZdSNBoUrio8WGeNB+fJ\/53+w1bqIaa6NnjB2lwakTKGS5UKE89Rl\/itbSMSLweVzUkt1i7rJxpemGG3CEfkcMcAbZPuB\/ymnFIIAACIKCGAH57qKGGMiAAAiAAAssI9Lf10lhykAbDA5KlKy2+lmUpehJKhGgkcZm2bGqh993xAO0VoeYHoyPksFsjEEdSLGBsROJ1yKohzS7Ml30YzxzZTxtqesreLjfIAgwJBEAABNQSgABTSw7lQAAEQAAElggEXIGlYy0HPNeKRZy\/KU5vvvVmun7zVi3V6VbWKEuVUfXqNnCZFV0cuywzp77ZXj5ylIKuoL6Vyqitxd8sIxeygAAIgEB+AhBg+bngKgiAAAiAgAICQZ0EWHaT45ExumHHluxLph3HE8as11UtFrDJ+SlaE2gs+\/MZnhql2HhKWpC7nI2PLIyWszm0BQIgUGUEyuu0XWXwMBwQAAEQAIE0gYV4yBAUtS1ino8FkmSpMuAry7hJCzHbbDZ6+933k91uX9xEPEq72MR1u9g4OCWfLwWpFIdkS0lPIkXZ\/5KUFOdsuZwYmqfRUxNlf1oHzx+ju3bso2Hb8iAwRnbkm6e+R3s7bjSyCdQNAiBQxQQgwKr44WJoIAACIFAuAkfHjxjS1GhsmNa2d9KlofKuNZU7mHhcWMAM+ItplGUtt\/+55xzKfdyTDnaydI\/1VVpjLV1SclBnolve06+\/SA\/cehtdmhtQ0mXVeUcXxlWXRUEQAAEQMOD7PEAFARAAARBYbQSMEmBsa3nkgbsU4WwS4e\/1TkaFoTfLAsZ8iq3Bpoafx2Xuum2xufIFNKlxl3\/emZpngjIgAALWJAABZs3ngl6BAAiAQEUQeFqEnv+rV\/8nHR47bFh\/o8F5aqitk12\/z++lzd19svPLyRg7cR0bAABAAElEQVRjC5gBycw5YE6dI0y6XAaYCBUwf\/7Ya+R3lsdl9YbWHQp6hqwgAAIgsJwABNhyHjgDARAAARBQQGAiPEGnpk5RLBlTUEpZVg5R\/\/5H3yy70MTcNF0cv0y3bdtHDoc+YeyNdBV02s0RLg6bPmwyD8bpMPeVIhyLULuvPdMdQ\/d7O3YbWj8qBwEQqG4C5v62rG62GB0IgAAIVDWBY+PH6GeXny7LGGd8E9S\/vldWWzXeAIWiYfr5iZeovbmNdvZeJ6tcsUxRgyxg3KbLYY4As+sswGwOjtRhbkoZ9z3A0sDqPLW0qVFfC+tS5TgAARBYFQTM+a2\/KtBikCAAAiBQ3QSOTxyjSCJSlkEmUnF65E130v\/623PL2vO6PdTc0EANdXVUV1NDNX4\/vX7qzFKey+ODNDozJlnD0hEmFkWC2Pk8Xoo7xALLUuAJMdtscc+RANPR\/2zi1rV\/JARGSkT74wAWSWlbPE6KSIDiemJxz8dJcZyQ9gnpOkdRXNqkvOI8kSB2QfS7hNtcGYTDEpTFA70tYKnFKIm57ZTzfHp2TihaY1vc075bRIrE99fGUkbtIFDdBCDAqvv5YnQgAAIgYBgBj8NDXoePwsJFsBxpODFIH\/3Eo5IkYpETFW6PLMxyU8NQLV0ZvxaSPBKLStaw3Hw3b7uJDl0+lnu57OdOndwklXZcbxEhJKfSLuie\/8r4VfK2GSuO4H6o+2NDhSCw6ggY+1tq1eHEgEEABEBgdRBgAbSv\/WbylSnoQYbqXHyO5uPzxPPC8okvztfR0prJXnSfTAjrlwWSQ+dgGHKH5NDZihM3w4yXM9iRKWPDw\/N8vV2tO3NaxSkIgAAIKCMAC5gyXsgNAiBgMQIsBCKJKC3EFogXA87eh2Ih8bK+QLzP3Lulcx9eoHR4hpPhSfpvz39Sh5r0ryLglxcJjz87VkhO0+aA6fcdbFewg9aIdcBu6N1CB84dNw3rfGSBnGJuWzxljDXO7XDThekB2tyEOWCmPWQ0DAJVQAACrAoeIoYAAtVK4POHv0RHxo6JeTLiu3WxpfexpXOOvKf0Jbo92AYBpsMHRu8Q5jp0SXEVPE\/LCskslnbSLsC6azop6PZJCyBPTo9TXZeT3rP2Qfrmz58kIwOXFHtuAXeApiMzxbKovsdf8Hzm4OfpU\/f+ueo6UBAEQAAEIMDwGQABELAsgeGFETo3fUHX\/oXj5QkaoWunLVjZ80PPW7BX6S5Fo\/IiWigV70YN2CwXRJsGF0R2xdvWvJnOTJ+hiagUvUTCwyFLhpKX6Z333E9f\/tH3jUJWtF6fw0vTZIwA44Z9Tm\/R9nETBEAABEoRgAArRQj3QQAETCPgtusfziwcD5s2nmppeC42RyMLw5YdzsTUtKy+cVRCKySz1gGzp0M9LkPAgTnYhY+tcg4hsviYw9WzSOSoiRwyv95TR1PRSTo9fXpZ2eyTy+FL9MCuW+mHrz2XfbksxywC9Ux+Ibj6m3upu7ad6n0i0qbHT89f\/RnVuGsp6KqlNrH2mM\/p17NJ1AUCIFDlBCDAqvwBY3ggUMkEnA4DBFiZwqZXEveTY2dFJMMINfnqqau2Q+r6X7\/4WSmM+sf3\/CL9\/aG\/E3NqMq6fMWme3WRk0rJDPHnprKy+JZP6vqjLajRPpk3r1lN3Z5sQN0LkOIX44b0QPE6ncBK026Vju91Gdr4uQuTb+FhsHC6fjzlqPmsp3qf4mJMICS+NjvdirpsImC\/+8V78k855H6c1gQbxnNMh8uPLIkpy7hhFObAGV5TRqiLo5HhkVGqi1P\/s9TFqCNTR5Lw8QVyqPrn3+bOsNDltTuqoaaHWYDM1ip+DBl8t+cUSB0mKi4Av80vVRWlOjJ+3kaVrb1n3LgiwJRo4AAEQkEMAAkwOJeQBARAwhQAsYPpgvzB1mS7PDEov3nes27dU6c8uvkj\/+vp\/0OHh45LYeseWh+n3b\/u4dP\/MxAVid82FaIhOTBwnj8NPbptPzBpyUjLhIU98DXndDppOXl2qr5wHtoSDUmNusjdHKenIqAOxBFTESxNzU7K6YhULWNuGehoOM0ceR0LSOxxcf2WA\/TzDssY0tjwdIxH4ZoEe2HMLffWpH+S9b9TFUI6Vmy13krgKCHHlb6BaYcHyubyS4CWbkFhiLmkkudwynqIwzSeWXyvU36CrptAtXAcBEACBvAQgwPJiwUUQAAErEHDBBVHTY2CB8dWj36HDIyfoyXPPCuuJnV765SckITYRmqKTY2fo4NWjS228MniIfv\/JP6fRhXE6NX6O+EX2DV96r1SOFxXOTXesv5F0iOOQW62sczb0\/Ot3v0N+j492bthKrWuayB8U4mtW3kszN5KwSBh6YcOSNeZKzDRvL6\/1a0NrN93Tc7Nk2XMLC2IsGV0hrljasiUrek23q0brFfPNzHIhVd1pFAQBEDCdAASY6Y8AHQABEChEwGWAC2JI5rfahfpUSdd\/ev45+pRwJcwkFlEPfvl9xOIrXwCKC9OXRYjty5nsS\/t84otvSq5vS7nKe8BWL3bTW4iE6IVjr6pqPCEia1ohVbMAm4nN0IO7b6NwNJqeR+YQbpXiiwCHcK1Mu1Gmj9mdUnhTCkHP99mjUvqf5GbJzyjzWePr7GbJWTlJbpe8FwEdZ5PTYn5aDdUFXGmBVYbHC+uX9BjwPxAAAYUEIMAUAkN2EACB8hGwigtiSLhSzURnxTfm4tt0Mb+E59T01PWW7ZtvdgX0Oj2KwX\/5yLdWlBlbmFhxTe0Fs4VDQ7COxmbUj8cqLoi2pYlbap+EtcuFAsIlNJB2qZSliTJT8zJ7BcPbUub1uQLOa+6Hc7FZSVz6nWKwSCAAAiBQhAAEWBE4uAUCIGAuAT2CcPidPnr35keJF1D1iI0juClNXzr+r\/TqyHIri19EPbupbQ\/d3H4zra\/tUVrlsvxz0XniOVdnJs4Tz9diF8DRebHxXgim+3vvoD+5+3eWlSl08rWj36X9Vw5QT\/1aGtdRbOVtL2OGyHvT+It1gRptAiyhgw+a8cNECwoI1HtrKZK6FjRDQVFVWbMtYOFEiJ4a\/BHd3\/UmqnPXq6oPhUAABFYHAQiw1fGcMUoQqEgCeljAeH7Gmze+UdP4T0+dWVGeAwz87PLT0tbmb6PdrTfSzuadtLZ23Yq8mQvs9jcswrcfHzlLx0ZP05lJIbrGz9PV+eJR5Q5cPULPD7xCt3SLOVclElvLOLgGb0Ynk\/UX1fivWR\/UjDXOYehNHsS61k6KiIAPSPoQcAu35YgsM5s+7QVdQamiwfnLkvjiaKE\/vvwEPbLuHeILH+VWa316hVpAAASsTgACzOpPCP0DgVVGYCw0TuemLojtPL189TXNo2e3QS1pVCwGPRMtHkjg6sJVeuL849JW566j\/oZN1CtcFAOugIgkGKaBuQEamB2gK3OXRVCAGMUWfHTo6inZ3RqaGxGWsQFZAoytfKslBX0+TUONxYUA03+lA1l94nlQ77n\/YVrwTYmQ5uOyyiBTaQIcNr6cKShcEMfCI\/TklR9IYf657fn4HL0w\/DO6q+P+cnYFbYEACFQQAQiwCnpY6CoIVDMBjrj30R\/9pjTXSs9xRoXg0ZLyWb+K1TctxNrLw\/ulrVA+Xu9JaYom5I3DiMAlhfrKgROkmOmFMhh8\/aYbt9P6jZ00OTVDV0dG6dSFczS7IN\/9LGlSEI5btu2ivi0dNMprSa0MLmkwteqtnkXtQlz+89eDRECEoA8401aw7Pouzp0XX7xcpO5gYYt4dn4cgwAIrC4CEGCr63ljtCBgWQIu4SrIgS70Tuz2x8EWOGKemnRm6rSaYkXL2FX0hS1gzw28TMmkGI9YOJfd5zIL6Cayrh0cPlq07Wq6GWjy0IB9hnyNRD29a2jjzW3U4mql2dEQ7T9wiI6dW+k6mj3+WFxYS8roJdbe2EIP330HDcYGhPgq7naa3U8cyyPQXdMpvg9QEblDXvV5c\/EcMF7EmZetzk2Hxl+FAMuFgnMQAAGJAAQYPgggAAKWIMBztZxiwdS4EBd6J7aC+VSIHu6HEQLMqaIvj59+knizVirvy27u2O05E7hYkA5FB4lEnJWtd62lW+\/fSe6wj06fvkhP73+JorHl7qjpKIgifrnByef20KP3PCDcDacl8WVwc6u2+lq3tjmBSsF57B7itQqT4nNX66qnmdjyBcDHhciejc5QjbtWadXIDwIgUOUEIMCq\/AFjeCBQSQQ8Ti\/FY\/q7EPE8MJ+oW2maiczQSEi4iemc1AgwnbugS3VmuyAmS1g7JqOTYl2pSard5KJ3bLmHmh1raGxwmn7+yit0aWiQ2ALmIuPmzPV1rqdbbrieIp55mogNi5WfdcGOSgoQODx2jB6uewMtJGYK5ND3MrsfcrKLL47esv6ddHr6OO0feV7Ywq5Zw3h+GASYvtxRGwhUAwEIsGp4ihgDCFQJAa+IGjZvkABTg+jMtP7uh9wPXoS2KpLt2oumGeNhy4PcFE1GaTB5hWgN0Z6HNtPDntspNWunS1eH6eyVSzQyPU4RsViw3ORxuyng8ZPf6yW\/x0c+j5fqgjXU1txEtXV+CtsXaCI6QaM0RCRv+p7cppGvCIGXBg\/Qw71voEvz54rk0udWdgh6nn+2qf46cgur2DNXf7LUAIemRwIBEACBXAIQYLlEcA4CIGAaAa8KK5WczqoNxHEmT\/h5Oe2VylMtAqzcEedyucY1BFiR5mAJ45d\/LdH2teJ\/tJYc4iWaXcpsJASyiC\/CC03nLjYtRbEU7RaaazRHEzQXV784dO4YcS6fQNBRS+9c\/17a23kDTYrIkgfFHKxLIhiGUSmYJ\/hGT+1GOjV9gq6GhNgXySk+T0ggAAIgkEugSr6GzR0WzkEABCqRgNdpTEQEtaHoTxsQgIOfC39bXump1hOk+YRw8TMxsVVLz5QQAVvCiQiFhNUiFA+JiHoLIqT4\/LKN2ywkvvTsC+pSTmBBhH\/\/+Hf\/gL588BtUI+Zk3S3CwD+y9lHqDhgTiTDbApbd256a3qXTBo+IEIMEAiAAAjkEKv8tIGdAOAUBEKhcAl6H8nlackarVoDNRIqv\/yWn7Xx5HBy+vcLTjV1bl811MWM4EbF0ARIIZAgkhUtsraeG\/vKZv6N3f+UjtH\/gADV6m+mezgfp4bVvE4EyRHQWHZO7wELLPmdAaoWDdDR6mnRsEVWBAAhUCwG4IFbLk8Q4QKAKCHgMsoDFZK6hlYuQ3dGMSFLwCiMqLmOdwzOT5Ctv0LkVo2MLFVJ1EwhQDcXnnDQ0NSaWYEgvvxBPiCUYMse8HINYz42XZehsaqWxhbT755mJC\/Qr3\/ptemTz\/fS7d36Mmr1iCYC1b6dnxfysy\/OXdIE2GcnvasoLMXPiOWEcoAMJBEAABHIJQIDlEsE5CICAaQR8Bb5R1tqhiEpXtd76DdQSbaEpYQkbnE\/P6dDaFy5vrwILWJgjS+oBQ0MdHHaeRTLPy0KqHgI8764uuYYuD4\/RC4Ovyh4Yu5Dmpu+d+BG9NPAa\/dXDf0zb27bQPR0P0qtjL9HRyUO5WRWfn5s5TTubdonP4PJImjz\/jAXfjsZdiutEARAAgdVBAC6Iq+M5Y5QgUBEEOAy9EUmtBezD1\/0SfWznJ+iWjlt07VY1WMCUMu0IdNKdXXfRL2\/7CDV59XPL8jv9uj4bVGYeARFPkvyhJjp1YpR+cODndHjwhKLOSMFT8pQYmR+jX\/\/OH9CZ8QvEP3s3rtlHu5r35Mmp7FIosUDPX\/0ZpVLX1sMbXhiiNn8HPdj1iOrF35X1ArlBAAQqkQAsYJX41NBnEKhSAhyG3og0MHuZgmMBCsU4uEJYBFcQe+mYAy2kN74eii2k70nHIeptbKdLsxd171I1WMBiibjgkuNelbKJMNxu8rt91OBpoI31fdQntg31GyngSs+LYZhjoVH69tlv6cKV13ebjhozV0+XDqKSkgRsKTv5wg309PH9xFZNtanYz9VMZJY++u3fpS++8\/+nzto22t54gxQy\/sWRZ9U2J5W7MHeOxs7\/m5gPmRABXMLUJQJ+cPAPJBAAARAoRgACrBgd3AMBECgrAaPC0H\/l+NdVjWN9qlVVuZKFzIjBIb6kr3EFqcYRIK\/NQ46Ug2ziWubL+1RSxPYTLly8T4qLyaRYTpY3cS0h5tzwHJvMPi7E1+jIGF05HaNILEKReJTCYs\/zcv7i0U\/SL9767qIIbum4lb537ruaXrYzDRQKhJC5j721CdRQPZ25eJXOjSuzduUbVSnL8uj8OP3qt35HiLC\/oSZ\/o5ijtZXcDjc9O\/SUiGy50n0xXxv5rs3FZ5cu81IGSCAAAiBQigAEWClCuA8CIFA2AkYF4VA7gNw1oNTWk1tOT\/3lFnOggg4\/+ew+8thc5BTCio0IsVicwtEIzYXmaHJumsbnJ+lKcjC3K7qfswgrlWrdtbSrZTe9PLy\/VNaS940KlFKyYWTQRICtXv5wI\/30xEuSuNdU2WJhu5g7VioNTA8KS9jv0T8\/+ikRMTFIPTUbxRcHSXpu+KlSRWXdj4uAIEggAAIgUIoABFgpQrgPAiBQNgI+g8LQqx2AzbBvs6\/NGVHatxqx+GuXp42SoSS9cu4QzYSuffuutC4j8qddE0vX\/MC6B+m1kVc1W8GciDJXGrbFcgSF1evcpWE6O\/a8vj2T+fN6auwc\/cZ3\/5D+8W3\/H7mdbtpY108D8+fFos0XNPcnBgGmmSEqAIHVQAACbDU8ZYwRBCqEwGqxgCmVX25h2erxd9P87DwdOX+SLiQv0paWPsuJL\/6YsXuinNRV00Vv3\/goff30v8vJXjCP3V7a6lGwcIXdYItsV7CLeut6qMZdQz5nOg4lR4Hkte5GQ2PEi4dPRaYsOzIXuemVYydpMqT\/vD05FrAMmANDR+hvX\/wc\/V+3fVS6dHPLHTQcukoRMY9LS0qk5H3+tbSBsiAAApVPAAKs8p8hRgACVUPAqDlgagEZ5YIoZl6V7pLI0htYS7Yo0ZGBE\/R89OqyMrG4NV\/0eK6Y3HTv2vtoMjJJT176sdwiefJVrwBj98oNdRuovyEdzGSjWBYhI7rygJAucUS+CzMX6MDoQTowcpAG5gYKZTXlun0uYIj44sEoXd3hX177D7q79za6oWMbeYWYvbnldnp6SMtnUXwBgSURTPlcoVEQqDQCEGCV9sTQXxCoYgJGrQNmNWTFJvx3+FqpNhWgk1fO0suXDhTsekwEvrBikmsBy\/T9HX3vpE0Nm+gLx75A87H0ArYBZ4BcDhctiKiU0RJruHHgkGpL7YF2eoMQpze37yspuHLHzoEoeoSFjLe3b3wbjYfG02JMCLITEyc0u3zmtifrXHyZ4LfVkDvhpR+delFWETWZlH5hIsLO0B\/9+H\/Q1x\/7LPlcXlpX00s9cxvp\/OwZNc1LZeKwgKlmh4IgsJoIQICtpqeNsYKAxQn01vdYrIfGWFf4xS871btqqd3VQldGB+nwxWPZtwoehy0qwJSuD8YD3N68g\/7bnj+iJ84\/Tlsat9L1a3aKNZTSf54Ojhygfzj89wU5yAn6UbCwxW40ehvpXUKQ7mm7SSzWrU80vSZfE9239l5pC4klF45NHKeB2QG6MjcoFhcfpKvzV0uKMrsImGEXSw7Y7Q7xf7FfPOd1tziYhiR8xBIE\/LHmqJqsiWPxBM0uzNPo7ARdmboqFss23mKrZs4mB+X46+c+S39w1yekT8PelltpaOGKCCkfUvXpQBAOVdhQCARWHQEIsFX3yDFgELAugSZfI21t2kzHdAhJbd1R8ntqknjNs\/W+Lpqemqajl07R2dR5K3dZdt+UuCBmV9rgbaD3b\/lA9iXp+PqWG4Qgu4EOjua3BsZLWMhWVGjBCw4RSOSBdffTWza8mTwGrYXHw2b3xd0tu6Qtg4FdFmdjs\/TvB79L\/\/bqd4gFNAdSiQqBH5GOY5mslt8XWwesWOe\/+vq36d4Nt9Ge7hsEfy\/tabmFnhn6SbEiBe\/FU5XDq+AgcAMEQMBwAvp8xWZ4N9EACIDAaiHw0Z0fJr\/Lb4nhLrdTae+SJ+knz3wDnTg+RGOXxui5o\/vpyJWTwmqgvCWnsEZYMSl1QZQzhvdseq8QrOmAE7n5IyL4RKUmjuC4LtBDG4L99K7+dxoqvgoxYpdFXhbASS66PDVEw7NjNLEwRXPRBUmMFSpXbdf\/+Cf\/a2lIHJq+S8y\/lJucNifVuuqo1dcuLcR8ae68sPhBiMnlh3wgsBoJwAK2Gp86xgwCFibQXdslXkbfRl84+mVVvWT3KId4IeKXW4d4reT\/s2uSY9FVKu02lXaX4mWDErYETaemKE76vzA5Uk5yx2poZipMpwcv0MDkkKox5SvksKgAM8LVrN5TL+YzvZ2+cnLlZ0Ktq1g+puW81imiWl6ZGaYDw0dogwVcb52Oyn8dUDoHLPt5X5kZonMTF6m3cZ10+ebWO+jHl58Q1uoU+cQ6e34xL9HnFOvtic3P6+7xfvEa1qLLJoljEAABOQQq\/zeunFEiDwiAQEURuKVz75IAYwHVYGukVMROE9PTFIlFpVDn0Ti7SnH47Zh0jcNwR4TblBprEs+36Wnupo7GVvIFPRSxh2gqOVm4LmGwEtJKiDqnmA8jfo0mHMSecOFITCx8HKLp+Vkam5uQ5r8kDQoSYVUBZoQFjD+8t3feQa+PHZLmLmWi3fELN89OmojMVMznOyDWcQs66unwyImlPlth3pBbBD2p9KRFgPHYDw4eWRJgLK7esv5dlY4E\/QcBELAoAQgwiz4YdAsEVjOBNf5m2tmwgy5cHqSXzx6ihehJQ3GwSDo7elHaMg0FPQGyj3rJ6\/ZQKBqmhUiY5iILNBeeo9nIfGFxlqnA4L1lBZiCMPRKELGr3Mev\/428RT721CdEBMX5vPescrHZu0Y4+Xnp5MQZEap8eFm3rCDAnItBT5Z1bJWd8Jc5SCAAAiBQDgIQYOWgjDZAAAQUExgcGKOfnTAuZHWpDs0JkXXg0tFS2Uy7r1eUPL0HYJQFrFg\/69x11hRgwlLaFegW86nCdGrsQsEhWEGAuarABbHUkgUFH8DijTt6bi6VBfdBAARAQBcCEGC6YEQlIAACehJ4+cJB+vGJZ\/SssurqcjisGUNJTRh6rQ+H54hxSHWrJLfdQ7X2NTQXm6HXs1wNC\/XPiHlzhdoqdL0aLGALsXCh4ZW8\/rF9H6KO2taS+ZABBEAABPQgAAGmB0XUAQIgoBsBntv1+9\/+M93qq9aKZhfSixZbbXxmrMtV76mzBIZaZ4NYAMtDB6+coHD8EvW1tMvqlzUsYJU\/B2w2qu5n4qN7P0gf2fN+Wc8KmUAABEBADwIQYHpQRB0gAAK6EfjfP\/scnRu7qFt91VpR7mLOVhknryFV7lRnogALOGrIb6ujkdkpenHsWmANZuC0yxM1ZgswngMpAoJWfIqnEorHcFfvLfRre39BcTkUAAEQAAEtBCDAtNBDWRAAAV0JnBo+S3\/\/zBd1rbNaK9Ma8c0oLmYIsHoxB6wciRdMrnM2kT3pFoFYQnR5epiOLZwp2LRDRGiUk9gFcSo8I60dxdE8ORgEryO1dMzRPsU5r3km3ZPOs44z17PKcH7Oy3Wk68qtL12e7yeEAOuu6ZTTVUvncYlAIiEFPeSfoU\/emT+wi4JqkBUEQAAEFBOAAFOMDAVAAASMIJBMJoXr4Z+L0PLlt6AYMR6j6+SogFZMZrggyrGA8cs2z3Pil3Ret4k3tlDxPpZIUDQmIuCJ5QiYalrcpvlyoHtxm8bmp+m0WCcqlpQ\/18wuM7Igz5t76zc+aOrjrIaFg5XOY9vcspFaa9aYyh2NgwAIrE4CEGCr87lj1CBgOQIvXXiN3E4X7V1\/g9Q3EUAuvU+lj9jlLrPGV8b9bvHW0nXKynNWuDFyJMNqTRkWVhufGQJsW\/M2+sM9n8wRV2mhlRZdLLYK\/7n7pwP\/Rv\/42pd0R+mz++TVKbQeR7U0as04OZ0w47nJ6ZeSPLz4upK0t2uXkuzICwIgAAK6ESj8F0m3JlARCIAACJQmcHPvjcSbXukXvvib9MzpF\/SqTvd6eB0v3py8Fy\/fDiEQpGPpOp\/zPae0d9gz51yGr9mpQcx7aq9rJacIH84v73ytxhukt+96o5ChQooKtzIWafwvyXux8Qt++lrWfel6Ot9SHh5tTv5rZUU9SakFqS5un9ut99eKxazXUndjh+6sSlUYdAWpr35jqWwF77NVzIhkE89FbuJnze6AZqWEivlTZvW1ULvFRHa+Mnu601\/25LuHayAAAiBgJAFj\/uoY2WPUDQIgAAIyCNy4dgcFPX7af\/6AcB+bkFFCfhYWPCw6eKtd2teIY94Ci9fT5+l8Aenefx57ijxOt3T\/PbvfSj63V36jyGkYAaPWwFIyT4\/Fd1R5DAndmMQNWkBbtw7KqIi\/hFCSNjauV5IdeUEABEBANwIQYLqhREUgAAJWIvCJu39J6g5bwp4\/u5\/8br\/YfEtbQBz7xBbIuZ7Ow3m90r2gJyOoMoKrhgJC2KlJ2zu3qCmGMgYTcIt5YGYnp83cP8fVYAFzKGTIX4YggQAIgIAZBMz9jW\/GiNEmCIDAqiLw+Q98iuwKvxlfVYAwWOHGaYwAE16cspNS9znZFcvMaHYofJndLJpNiQWsxiPcZn3liZ5ZtNO4CQIgsCoJKLPXr0pEGDQIgEAlE4D4quSnV56+GzUHjIPCyE3sgmhmqgYXRLvMsP\/MeT66QCdHz5qJHG2DAAisYgIQYKv44WPoIAACIAACJEVPNIKDfPlFUrAVI\/ogt87qcEGU\/0rDQWV+ePppuXiQDwRAAAR0JSD\/t5WuzaIyEAABEAABELAGAZdhLojyJRgv8mx2Ms4SWJ6RcXAcJelrr3+HpkLTSoogLwiAAAjoQkDZbytdmkQlIAACIAACIGAdArvat9PXHv172t6ib5AUJXPAlMxfMoqc01nZ08LtChcnn4vO018\/\/09G4US9IAACIFCQAARYQTS4AQIgAAIgsBoI1HlqqKd+LXl0toTx6mpykyUsYDqPX+7Y9cpnUyjAuN1vHf0+vXL5kF5dQD0gAAIgIIsABJgsTMgEAiAAAiBQ7QTUvMAXY8ILYMtNSt3n5NarJF+luyAS2ZQMdynvn\/z0rygSN28R7KWO4AAEQGDVEIAAWzWPGgMFARAAARAoRkDJwsnF6sncS4lAD3KTJQSYY3W5IGaezcWpy\/Q3cEXM4MAeBECgDAQgwMoAGU2AAAiAAAhYn4DeIkiJBcyhMICEETQdFS7A1FrAmOWXD36DXrj0ihFYUScIgAAIrCAAAbYCCS6AAAiAAAisRgJ6W8ASlWYBM3ktMq2fOZt8j8+8Tf3Rj\/+SpsMzee\/hIgiAAAjoSQACTE+aqAsEQAAEQKBiCeg\/B0yJC6K6+Ut6wnZWvAVMG43R+XH6i6c\/ra0SlAYBEAABGQQq2+FbxgCRBQRAAARAAATkEFAaxrxUncmkfAFms4ALotNh\/lpkpZgWu1\/KAPbotofpTZvuI6fdKS18zXunsPo5xJY5djvcxIs06+2OWqzfuAcCILD6CECArb5njhGDAAiAAAjkJaCvFSqRSuRtJd9Fvd0f87VR6prdXulOMcUl2HeO\/ZB+cPKnlBLRKVlkJcUyARwohefq8XkmeZ0eeuYj3yaP0525hD0IgAAI6EoAAkxXnKgMBEAABECgUgnobfVIsAVMpqbT2\/qm5hmwFaiSEwurYimejJNbrHVW4wmSS+xdwuWSz9nqxefp4\/Se3RG76tqLVYd7IAACIKCaQGX\/tlU9bBQEARAAARAAgeUE9BZBkgVMpgCTmW15h3U+Y1e8ciUWu26nS7IyuZ1CCAlrE59LokjseT6aLWWjcDgmuQNy\/vTGtkJBSyy6vNxqmCKf01ey+9e1bqJ93bspmohSOB6R1v+KiOOIdJw+rxULc0N8lUSJDCAAAhoIQIBpgIeiIAACIAAC1UNA7yAc8aRwQZTr1WeQAmPRwgssSxaexb0030kIHJe4x6IrswUpQE01QXKIuWBczuEQm9jb7DZxnt4k4ZPWP+kHL46FI58QROzOx0fs2rfo1kcJybWPhai0CR7xVJzYEiWVKfrRSVCHr5O+9tSTRXNl37xx7Y7s07zHL18+SLwVSx+56f3FbuMeCIAACGgmAAGmGSEqAAEQAAEQqAYCyy0q2keUYAGWlVx2dm8TwscuXN4kMcTBIFgIOanRV0s3d18vWXXSljhWOWmXOtZmLFjSAof3LHEW5zFJ4ia5TOBwuyxyYslYjtDh+qKibFT8E0d8yl1c7GZL02YaSk6IC1kpkyfrUrkOI8mwoqYkwauoRP7MD2++L\/8NXAUBEAABnQhAgOkEEtWAAAiAAAhYmwAHWmBREkvEKJqMLu7F+eK1pkAN7e68TkTEY8sQW3\/YEiQsP+KY9+I\/kTIyTQihbKuPFMxhUQhJoogtPQlRt0fsuY34IhzRBwqLc3F6Le4DNfrr6cLsucU8Zu2kAZrV+Ip2Q4nQimvFLuQK3mJ5C93b0tJH6xu6C93GdRAAARDQhQAEmC4YUQkIgAAIgICVCIyHJuj\/fv6\/C6EjrD1CcLHIkh2VcLnhykrDMrgvaYubwY3Irj6SiMjOyxljiYzIVVRsWeaHRZh6JBAAARAwmgAEmNGEUT8IgAAIgIAJBFI0Hh43oV00qRcBFswuMR8tlpCniLUKMJ739lD\/PXp1H\/WAAAiAQEECcqcHF6wAN0AABEAABEDAagTswn0QqfIJ2MX8OLmJXUu1pD1dN1BzoFFLFSgLAiAAArIIQIDJwoRMIAACIAAClUSAo\/dVVrKW+59V2CmJTMmh5bWkhzffq6U4yoIACICAbAKV9hdK9sCQEQRAAARAYPUSsJdxTSs9KEN+5afYUtOQ\/0aeq5G4egHGgv329fvy1IpLIAACIKA\/AQgw\/ZmiRhAAARAAAZMJVJ4FzGRgFm2+oaZWds\/CMWVBO7IrTogolo988QP0+YNfotOTp7Jv4RgEQAAEdCcAAaY7UlQIAiAAAiBgNgEOqIBU+QR4AWm5iQVYZpEAuWWy881G5+lK+AL9zcFP0QtDz2ffwjEIgAAI6EoAf6F0xYnKQAAEQAAErECA1\/DqqVtPa2uwppMVnofaPjgd8l9TeLHqTY0b1DZFLTWNNBwalMp\/9eRX6Ny02euyqR4KCoIACFicgPzfbBYfCLoHAiAAAiAAAhkCTruT\/vy2P6Hf2vXxzCVL71MpzALL94CcDvlRELl8OKTeDXFfz3Yh4dLPgUPgf\/bIZ2gyPJmvW7gGAiAAApoIQIBpwofCIAACIAACVibQ5GuycvfQtxIEHAqDqRwZOkmt\/jUlas1\/2+FZvpDzbHSG\/vHIP4iFvNUH98jfEq6CAAisdgIQYKv9E4DxgwAIgEAVE3A73FTnqZNG6LK7KODyU704bxEv6V3BTuqt65H2VYygoofmFAsxK01rPMpFd3\/LehoLj65oamD2En3lxJdWXMcFEAABENBCQJltX0tLKAsCIAACIAACJhD49N1\/ReySWGhNqddHj9Bf7P9LE3p2rcmM69u1KzhiAmqCqRwZPEmeoJsiCixX27t6aSR2OS\/0V0Zepo5gB92\/7sG893ERBEAABJQSgAVMKTHkBwEQAAEQqCgCHEmvkPjigah5ydcdAKaA5UXqsCt\/TZmLzFNfvbJgHGHbbN72Mxe\/d+67dGTscOYUexAAARDQRAAWME34UBgEQAAEQMDqBOLJOC3EFoRFJEJhsfE+El\/ci+Pz0xcsMATzFZj5PVj5GNQIMK5lZGpsZWUFruzo6KeZ6HSBu+nLbKH8wrHP0W\/v\/j1qC7QVzYubIAACIFCKAARYKUK4DwIgAAIgUNEEnrn8c\/rs4c9ZegyWED8WjMRoV2EB4wd9bvwibV+3WYjrSyWfe397Fw1H87sfZhcOJ8L0mcN\/R7+z+\/fJL+YSIoEACICAWgLKbftqW0I5EAABEAABEDCBQI27xoRWK69JK85Ds9ttqkF6yC2rbITmZeXjTKOhUfrc0X+iZCopuwwyggAIgEAuAQiwXCI4BwEQAAEQqCoCNe6g5cdjRfFjBWha5ucdunycaks8++vaNtBUVNlaXycmj9O3znzDCnjQBxAAgQolAAFWoQ8O3QYBEAABEJBHIOAKyMtoYi4rLMRsRRGoxQIWS8RofU130ae6tXN90fuFbj51+af04tALhW7jOgiAAAgUJQABVhQPboIACIAACFQ6AV7\/C6k0ATtZ75XApt4DURrw2ZFLJOJn5E0NvlqaiA\/nvSfn4ldPfkXMMTsnJyvygAAIgMAyAtb7bbusezgBARAAARAAAW0EXGINsELJRjZy2+XNFSpUhx7XrWB9KhaqX48xqqlDa5+GZ0dpc9PGvE3fvflGiiajee\/JuRhPxemzRz5DU5EpOdmRBwRAAASWCBT+q7SUBQcgAAIgAAIgULkEat219Mm9v0seh4e8Di95nd70sdMj7YcXRui3nvptUwdoBRdEUwEUaFyrAONqI+GVIqveG6TZ1HiBVuVfnonO0D8e\/gf6Lzf8V+L15pBAAARAQA4Bm\/ilX8A4L6c48oAACIAACIBAZRPgdcKuzA2S2+GWrGHHJ07Q\/z74D2Ud1PradXRh5mJZ28xtbGvTZjo7cyb3sqnnHa619LVnf6i5Dxs61tLwQnptsJvWbaPWZj9NR\/WzXO1uuZFubL2Jtjfv0NxXVAACIFD9BGABq\/5njBGCAAiAAAgUIeAULorratcu5QhgjaclFmYfaJ0Dlun\/Gk+zEFyz9Mj1t9HVyIA4XmkVy+RVs3915BUh8IZ1E2Bnp87SC0PPiQWiZ+ijO36dtESDVDMelAEBEDCWAASYsXxROwiAAAiAQIURMONl1wpzwKz4mEq5IG7t6KX+znXUUBugqC1Es7EZCjgDwpLpJXvKSbxcFzv6cICRHkedJL6MGueVucuUSCbIYXcUbILXD3tq4KdCrF2lxza\/f1m+mcg0vXj1RRFd8XkaCY0s3Xv8\/Pfozb1vWTrHAQiAQOUTgACr\/GeIEYAACIAACOhIwBQBhtkAip7gY7c9SAvOKYokwhShSbqatZbXVCHXwriiJhRnZhE9Fh6jVn9r3rLnRMTEr4nIiVfmr0gWrTf1vlkSi0fHjwhr1\/N0dOJI3gWef3TxP6mvvo+2NG7NWy8uggAIVB4BCLDKe2boMQiAAAiAgIEEzAjHDgtYgQdaIAy9x+OkyWi4QCHzLo+KgC65AmwhNk\/fOfdtem7w50sdY0vYPx\/5LI0It8XZ2OzS9UIHXzz2BfqDm\/6Q6jx1hbLgOgiAQAURQBj6CnpY6CoIgAAIgIDxBGABM56x1hasGj2MXQuzEy\/W\/Ccv\/fEy8ZW5f3b6jCzxxfnnhEj7\/LF\/zmshy9SHPQiAQOUQgACrnGeFnoIACIAACJSBgCkCrNBqwWUYb6YJS3pB2gpIrQKXM2Mxa3984pjU9ND8EP31gb+iL534FyGe5nTpzpmp0\/T980\/oUhcqAQEQMJcAXBDN5Y\/WQQAEQAAELEagVOAHI7prCRfEAu5+eo+Xg2Lw4tgO3mwO4n92EbiCj+18brOL5bGFI6jY17pq6aGt94j12tzkcbrJ6xJrt4n124J+ouHpy3p3TXN9p6ZO0bfOfIOeuvxTQ6xVP7z4A9pYv5E2N27R3FdUAAIgYB4BCDDz2KNlEAABEAABCxLQ0wLGooKFg9suBIQQES67S1qw18lCQwgQu51nnNmIQ+E38PyexbjrK7QQX0gtXpWOSRIs0USsAMG0iaigoYhv5DTis\/uoy7dOqi9\/ueVXk0JIsZji+UzSJqx4SREFMJ5KiGiASbGPS1EBeZ21zBYTxwlxX27a1bqT\/vYdf7Yi+1dP\/hvR9IrLpl9gDj8ZeNKwfrBQ\/+Kxz0vzwWoxH8wwzqgYBIwmAAFmNGHUDwIgAAIgUFEEnDYnrRfrgjkdaQsNSyS7ndWKsMssCiQWHvyPX7hZUPCWFhkxiiVjFOUtEU3foxiFxHkoOa8bB+5jMmmjUDykW539ItLe66NpFzrdKtVYUUQwzJcyzyHfvWq\/xkE7viBE2Mev\/w3JSljt48X4QKAaCUCAVeNTxZhAAARAAARUE2CxNRQaVF2+HAXX1nTT8fHT5WjK1DYKCTCbcE9czenU1Eni8PXbm3esZgwYOwhULIHV\/RusYh8bOg4CIAACIGAUAbZ4WT0lksvdAa3eX7X9i8YjeYuy2+ZqTre03wrxtZo\/ABh7xROw\/l+ZikeMAYAACIAACFQSAQ4IYeXkdXjp\/PQFK3dRt74VsoDd3H4LMYfVmNjq9Z5Nj63GoWPMIFA1BCDAquZRYiAgAAIgAAJ6ELC6Bawr2CXmmcX1GKrl64gk8lvAOoKd9EvbfmXVzYHqrdtAH976y6tu3Jb\/oKKDIKCQAASYQmDIDgIgAAIgUN0EOAy6ldNCLGzl7unat0IWMG5kS+NWelf\/e3Rtz8qVtQc66KPbf12KomnlfqJvIAACpQlY+69M6f4jBwiAAAiAAAjoSkDPMPS6dkxUVuuuoQvTF\/Wu1rL1cSTJYum2jtvp3u43FMtSFfcaPA30sZ2fIL9LLICGBAIgUPEEIMAq\/hFiACAAAiAAAnoSsLIAa\/W1S+Hv9RyvleuSQvyLtcWKpbdueBvtbL6+WJaKvhdwBoT4+g2q99RX9DjQeRAAgWsEIMCuscARCIAACIAACFh6fs1kZGrVPaFibogMwybWZvuFrR+idTXpRaSrCRAv3P3RHb9ObYG2ahoWxgICq54ABNiq\/wgAAAiAAAiYS4AXNbZSctisGQVxbXAtXZm19vpkRjzHQoE4sttyO9z0q0KoVJuV6ENbf4l66nqzh4pjEACBKiAAAVYFDxFDAAEQAIFKJvD\/fu\/T9F+\/8sd0auisJYZhxUV+e2t7xdyvS4bysZYMvjbUUhawTM5ady09tP7hzGlV7PcPv0SJEi6YVTFQDAIEVhkBCLBV9sAxXBAAARCwGoHfe9PH6Z6tt0ki7F2f\/hX6ydFnSQ+rGNcRTcTyDjcuwrjPxeZoPDxBg3ODYl2t83R84gQdHD1EB0YO5C1j1sW++j46MX561YSez+VcKhBHdv49bXvJ5\/RlX6ro44OjB+hfjn+BkqlkRY8DnQcBEFhOwLn8FGcgAAIgAAIgUF4C50YvksNup1+66zF64fQr9Auf+QR1NXbQr97zAXrX3rdQwKMs8tuzV56lLx77V4qn0mtlra3pJraisCtbZquUF9q+un46MnqsvA\/EYq3JcUHMdJnnTHkdPgrFQ5lLFb9\/deQV6qvvp9s6b6\/4sWAAIAACaQIQYPgkgAAIgAAI\/J\/2zgNOrqu+9\/9p21e9d8uSLRe5F2wZYwzYYMAYTEIxeTzAL5TAS3gJkEIKgVAeCe2FEkpooRPIxxTTTQzu3ZIl2ZJlyapWWa1Wq60zs+\/87+ysZmdndubO3DO3zPfI49vOPeV77u7e3\/z\/5398JfAfd\/ynfPpX\/z6pDU8e3Cnv\/vb75Z9u+aT80YY\/kDc95zWOKJuUqcxB1li+8uJLszx9fHeZnME9rfPQVnatlE2HGym+gumE6EaA6YiamByRSufNP18uX7IhUn2iMxBodgK4IDb7E0D\/IQABCPhMQKPYlUvHBvrkX3\/5Jbnwb6+RN33xnXLvk5XdA4MaRKNcH4vPtyZaZVH7EuMS+UTxpaY8Hk4Pu+p3lOZMrZt9hjxn6VWBjszpanDIDAEIOAQQYDwIEIAABCDgK4H4NAIs3zB1GbzlwZ\/Li\/\/lJnnBR\/5Qvn\/vj2S0zPyuasrLlxu0bVeqS7qTM2SHmZNGyhF4+vgeVyh0fl9U0o5jT8qnHv6EbD7yWFS6RD8gAAFDAAHGYwABCEAAAr4SmM4CVqphD+\/aJG\/9ynvk\/Pc+Xz526+fkSP\/RSdniAQ0jP6mRJQ7mts2V2Fhc9vbvL3G1eU893rPNVefHzFLVUUkj2RFn4e2vbv6y9AwdiUq36AcEmp4AAqzpHwEAQAACEPCXQEzKuyBO17Jnjh2SD\/3oU3LuXz9X\/uw\/\/la27Mu9qMdj4fvTtrBjofQN9cvhwZ7putyU17YeceeK2WJcOKOWTqRPyBc3fd5Ewiwd1TNq\/aU\/EIg6gfD9lYr6iNA\/CEAAAk1GwK0FrBjPcHpEvnHnf8qVH3iZvOKTb5RNux4vzhL44xmpGSYs\/onAt9OPBvYMHZVDA4errnosoiHbnz7+tHzvie9UzYGMEIBAcAkgwII7NrQMAhCAQFMQqNUCVgrO7x6\/W\/7vf35WWnpmSCIbnkC\/wXCbq80SWWocvD5XrRuirv2m1qKopjv33yF37b8zqt2jXxBoGgIIsKYZajoKAQhAIJgEqojB4arhOifsh7f\/Qn798wclvbtV2tLu1hFzVRmZG0Jga5URIXvMwtpRCsJRCu53nviW7DbWMBIEIBBeAgiw8I4dLYcABCAQCQL1uiCWg3BieEB+\/sB\/yw9+cpsc2TwinUMzy2XlfMAJVGsB29H3ZMB7Un\/zVGDqfLATuKzWD5MSIOATAQSYT+CpFgIQgAAEcgS8dEEsxVTd0u5+4kH57s9+LlvvOiBtvTMlbqINBikFwQUxuA6IIk\/2PlV22YHCcWyWcO1HTETETz30cTk2fKyw++xDAAIhIRAeB\/mQAKWZEIAABCAwmUA6kxYNlKHrdg2P5rYj6VEZMedGzLkDxw5OvsHi0ZPP7BT9zOqYKRvWXyAtC8ZkJDFkscZqiw5C6PTgSjC1+qgIWzf3tLJAh9NDsvHwo2WvR+3C3hN75UP3fUBeseZGWdG9yljE+mVG60yZ3z4\/al2lPxCIHAEEWOSGlA5BAAIQaCyBwZEheYlZILl3oC8ntFRcGWHlCCyzH8TUO3BMfnLPbZKIJ+TydRfKopWzZKC1z7emGiMdqQKB3cf3TivAbttzmwxlgiCmK3TEw8v9RnR9bctXJ0qcZ8TX31\/6PrHl1jtRETsQgEBdBBBgdeHjZghAAAKNI5DJZuT4cL8MZ0YcoZM14bZXzV4+qQG\/3XGnLOpeIOvmr5l0Xg96BnqNMMpZnVQgjRbs5y1UjnAy1zQwxqXLL5BZbTMllZj+T8X37v2RPLp7y5T6wnBCmf5u870im0XOWLZWzjp9tQx19clYrLGKKAguiEEfrwMnDkzbxHsP3DPt9Wa4uHrGasRXMww0fQw9gen\/qoa+e3QAAhCAQHQIbD20XV77nbdNdKg10SIbVl7iCDIVViqiNh98QpbNXCwrZi51Fm0dNe5\/z\/QfksMDPTI46t46oPOz9Nv0B9\/+i5Ivdjq\/6iu3f3uiTWHe2bJnm+hn\/oy5ctnZ50l8XlpG48MN6ZJy9DsF1wExR+bAifKuqvv698rBwWf8Ruh7\/XPb5\/neBhoAAQhUJoAAq8yIHBCAAAQCQSAemxw4Qi1hv9nx+ylt23l0t+jHi6SWGRUHGWNtS8YSU4r89K\/+XTbuCaf1a0pnxk8c6jsit9z5a2lNtsjlZ14kc5d3ymDqeLnsnpzHAlYZ44ET5QXWbXt+U7mAJsjx0MEH5EWrrpPi3xVN0HW6CIFQEZj81zxUTaexEIAABJqLQCLu36\/sIWM9U5fHfMpms\/KpX3xR3vfDf8mfitxWLYq3PXqnfP8nv5S9jxyXjmF7YeyDIMDGAm4CK2cB2967Te45cHfknr9aOnRg4IBhcVctt3IPBCDQQAJYwBoIm6ogAAEI1EMgXsICVU95bu7d8G\/Xy1WnXC7XrXqebNn7hHz77v+SJw\/udFNEqPM+\/NRjsnrFMpFWO90IgguinZ55V+rxkeMyMDogHamOiUIH04Pylc3\/PunLgYmLTbrz3Se+I8u7Vsiy7snzQ5sUB92GQCAJIMACOSw0CgIQgMBUAokiF8SpOeyeUde813325Bw0u7UFr\/R4d8Zao4JgAWtw3JGaWKoVbPWsVc69hwcPmQiAX5He4d6ayorqTaPZUfm3jZ+Td1\/0l9Ld0h3VbtIvCISaAAIs1MNH4yEAgWYiEPfRBdHhHHAXNdvPgk2RNFbg3mm7H+XKb2QYEA3ukoqnzCdpomymnPmFcbMkgB4nY+aTSJh5TAnRLx1iZus435pgMPcfuF92Hn\/SiK6j8ru9tzuBZsr1p5nPHx3ukS899gV5x7l\/6iy10Mws6DsEgkgAARbEUaFNEIAABEoQ8NsC1uxucvGsvTl4w5nGRFss8VhNnEoY4XPW3DMmjo1GKp3GlZoKUuefCdKi8wOzupWM6PzAzFjG+aRNmH9dRFnD\/afHTFRJs68Lcut9I1mzJIL5SLp0NaXOtqda5OB+bwLMlCo\/Sud0btz3t39XXnXaa6LULfoCgUgQQIBFYhjpBAQg0AwE\/JwD1gx8K\/UxZlGAHR46IrNbZ8tRY9nxK+lSBo8dCXZEy3TGnhuoX9xt1qtWwmVdy2XDkitsVkPZEICASwIIMJfAyA4BCEDALwJ+W8DEWC1qSepi1pJMScK4lbWYfd3q4s5J80kYt7OR0RHZfWRfLUU39J7BY8ZU02avSuVBmp7AYNr9WnbTlxj9q9994tuOuD9z7lnR7yw9hEBICPDbPiQDRTMhAAEI+D0HbCw7Jhefcb7jbqbrgqlb2cTHuJypdSLvcqZuZrqv1\/MpawTckBiXM02q5cZdz85evC4UAuyX998hL3rhs2QkYUcE2HNwdIhH4n99w8fFeCGSXBBQd9DPbfyM\/NPlHyYohwtuZIWATQIIMJt0KRsCEICAhwT8Xlw1awTYlme2edijXFFhmVuma6Ed2TEo3WvLTY6qD00sF2qivkLqudtOt+pp0ZR7e4aOysKWrinnOTE9AZ2j98VNn5e3nvMn0pa0aMadvhlchQAExgnwhRuPAgQgAIGQEPDbBVEDJ9hJtsr1vrW3P3aPtI3aEQAxE+XP1xSCYRg289TaEu2+Ygpr5U8e225E2L8ROTKsA0i7I0UAARap4aQzEIBAlAlomG5fkyV9oNHzwpTG+u386Yw3UIB1JjtlUcciWTXjFFkzY42snnGqHBo4Eoph6Eh0hqKdQWzk1qNb5UubviC6gDUJAhDwjwAuiP6xp2YIQAACrgj4bgELmVByBddFZnXFtJFsuSCumbnGmY83lB6W4yP9cnSoV06YdaIOnuix0Q3rZSbjrdbriHIFm45slA\/e+wF5\/Zn\/U9bMWhvlrtI3CASWAAIssENDwyAAAQhMJuD3HDA7skPjcdgqeTI\/r440GImNZMsAtq1nhwxEyuJhyRRrY1ADWqYu1PzJhz4uly\/ZINevvkE6U1gVAzpUNCuiBBBgER1YugUBCESPgN8WsFrD0FcaidC5IFqyBNYyB6wj3ikd2W4xMRZEY3hkYxnpyR6UwrKitn7cKGuBVfqRquq6fvFxx77fy8MHH5LrT71BLl+8YdJzU1UhZIIABGoigACrCRs3QQACEGg8Ab\/ngNmKVjjmqIfG86y1RnsuiNVbdnQsuofny+1P3DulG2ctPk3mLGyTE9l+55r\/wn1KE+s6MWiiUZK8I3AifUK+9fg35M79d8irTnuNrOhe4V3hlAQBCJQkYGcmccmqOAkBCEAAAvUQ8PtF2paroB2HvnpIT3+vLSHqxsV0TmZRSfGlLX9s\/xPy4ObtMje2wOmI3+vHTU\/T\/dVjZi0wkvcEdvXtlI\/e\/2H50Y5bJq3f531NlAgBCCDAeAYgAAEIhIRAoVuZL022pJSazQLWIq3SJp1SLOSS8eqcUjRYx0M7t0z7CJwYGZBfP3qvzM0ukkTM5+iZ07bU\/UVdC6yYnftSuKMUAf2S5ee7bpVf7\/5VqcucgwAEPCJQ3W97jyqjGAhAAAIQqI+AWsEyPrnsjcXsKLCwvUyrC2It3152xLql55khuWv3RuchmNU+Q9YsWCWzu7olkYzJXch0pAAAQABJREFU6AkxVquFzjyuERmacCEsfGISkpC2wVnSM7C98HTJfV1895eb7pRLzzq75PWwnhzNjkq7CaM\/lBkIaxcC3+6fPvVjmdU6Sy5ZdGng20oDIRBGAgiwMI4abYYABJqWgM4Dy2Q04kLjk6XYExK2IBzZrHv+rdIu9296Qo4NnXSf6x3sk\/t3PVp2IOd3zZXV85ZLa6rFiRTZPzQgWw7ulP7hbWXvaZYLHQgwq0OdHkvL17Z8RQ4MHJCXnnI9wTms0qbwZiSAAGvGUafPEIBAaAmoBWzUt9bbsYCppSZMqZb2xgfaJ4mvavp7qP+I6KfeFJPqg3vUW1ej7k\/GWhpVVVPX84tdP5O+4T557bqbxM0cxaaGRuchUAWBWrwoqiiWLBCAAAQgYIOAny9BtixgtoJ72OCvZbq1gKWkRR55+nFbzalYbhQFmIxFT1RWHEifMtx94E756uYvE5jDJ\/5UG00CWMCiOa70CgIQiCgBPyMh2poDFjYXxNs33Stn9q6VVUuXSmtnSmIJYxnMxCSbMVLSGPOyxkV0aGhEBgaHZN7sObLp8DY5cuKof0+krRWe\/euRjGYzPtbefFU\/cPB+GcmOyBvPullS8VTzAaDHEPCYAALMY6AUBwEIQMAmAT\/XArMVLMNWubbGIWNe\/jc+vdX5VKrjivWXyuETPZWyWb0eRQvYwOigVWYUPpXAxsOPyr888FF5w1lvkoUdC6dm4AwEIFA1AVwQq0ZFRghAAAL+E\/DVAmZCQdhItcypstEOG2WOmYiJfidLwSt97dYxMy+J1HgCe\/p3y0fu\/5Dcu\/\/uxldOjRCIEAEsYBEaTLoCAQhEn4C\/c8DsiImwWcDcPGVBEJdRtID1DB6VJS0zJYLxRSY9XufMXy9tqVbn3Mm5krmfw5NzMvNXTm71uxI9Gs+Z23cOCs6aAib+OYWNHznn9f6sWW9tfKs5x\/NrY24\/+GvZN7RHXrj8xdKWbJ\/UZg4gAIHKBBBglRmRAwIQgEBgCMTj\/jku6OuZjRQEkWKjX1qmrhnmd\/J9Ae8yAPSFPhlLOh9d3yxh9uPmX8J8TowNyPDYUJk7RdJjGelIdctA+mRY\/7KZQ3yhd7hX4mZuYRDT9r7H5evbnpGXrbpRFrQvCmITaRMEAksAARbYoaFhEIAABKYS8NUF0dJ7YKQtYONrhiXN+m1pnwJHtKU7ZPHY0vGHKRc9UK1izp4G6DDjqiItfyX\/1Dln9KSJOJiP45HPpfeks2lJZzLmk5ZRs82a\/mVMf\/VcZvzaqLmm10cyozKa1u2IjKRHZTg9Yu4pv6CCtmf9snXStbBFjmdLuxuqeIt6erpvt1y4+Dw5Mnw4kF09NtIr39j2FXnukhfIefMuDGQbaRQEgkgg+r+9gkidNkEAAhCokUA8lqjxzvpvwwLmnuF9Tzzk3LThrEtkS9929wV4cMeTe3fL1gPhWrxZRfmju7fIvKNzZNXpC4w1bHgSiaT5OTg+2jvpXFQPBkfKWwL96nNbol2GMrlAKBljjfzV3p\/J7v5d8uKVN7BemF+DQr2hIoAAC9Vw0VgIQKDZCfhpAXNMJRUGIGEsPclEQloSLSZctXEvSyadbUL3zXm1BCUTxtXMLCiteXXbmmyRp\/fsqVByuC\/bEq\/VUMlZtqrJGbw8h\/t75KzB02S47ZlJjVvYucAY4SaLskkZInSw5cjjctbCddI\/6r+7pbqIPnfpC+TsOefKL\/fcKpuPbpwgvahjCeJrggY7EJieAAJsej5chQAEIBAoApXmgKWMuGlLtEkqYZb\/Nev1OILHiB8VOwljNVABp6Inri5nZhsbX9DW8TQzPc1PtNfFhnVulm51vk3GuJW1p9pk7ZLVjuuZhmJ33MscV7NxFzPjaqZCw0zdlyHzcjyUNS\/II5Xxdbd2Vc5UIoe6qWl7NUiB9u\/E8ECJXME45Xbx5mC0OhituGfbQ3LuuWtlIHtiokGz22ZJX2ayKJu4GLEd\/ZlKiQbi8FeAdSQ75fqVN8qyruUO4Rctf6nzu+Cp49vl2YufKxfMuzhi5OkOBOwRQIDZY0vJEIBAkxJQYeLMdTFzXPJzXnLHZv6Lcy43B0YFzmBmyJkLo+eHzfwYnReTz5MvYzR7cs7MnK7Z0tnWYRaiNfNuzEfz6HyaobQRPOaj4mf+zLmyeecTntNf2D1fDvQe9LzcMV292GX69Os\/JLM6ZslNn32r3HjxS2TJrIXy0Z9+xmUpjcsetsWmG0emck1Do+a57knI2MwxZ66a3tGWShkBVvneqOTYfHirrJy9xFkM2Y8+LTbWretNsI3u1IyJ6vULkBeveJn0jhyVuW3zJs6zAwEIVCaAAKvMiBwQgEBICAwbATJsBIwKlpyQMYJnXKTocf6aihbnusnnBAeocK010Sp7Du+bCBwwWSypANL6zNZ89Fq1adXs5bL7xP5qs1edz9bLvi0rTqYGAWYMXxKPx+SLN39M7tp2v7xuwyvlxw\/\/UrbsC+ZcJ1vsqn4oQp7xvh2PyOVrL5SB7j4xYT\/Mz3VzLcQ8bL6omZWaIweHDzR8JNcbd8PnLX2hsaZPfWVUyzPiq+FDQoURIDD1pykCnaILEIBA8Ancs\/chx2KjokktN8MZ83EsOWrNMQ5sjmUnf01FTm5\/qMx5zb98xhI5NOJ9tLBl3Ytly9Pev9jbiv5nq1ydbG8j1RKG\/vbH75LO1g65Zv1V8t6XvdOxjCycOT+wAqyro1PEL80Q5klgBQ\/cndsekHldc+Sydecbq8uRgivNsbv96A6ZaZ6jRs0n1PleVy+9huiGzfF40csGE0CANRg41UEAAjkC77j1vc4cIy952HoxsSVobLXXzNzyEutEWRpi3Eaqpdzv3nOL\/I8r\/lCee8YGOXS8R276zFucqHnl2qdjqHPY2lvanDljrclWaTHBP3TOnAYF0fDqD+\/eVO72us6ry+jO\/t11lcHNOQIalCNrrNrNmHqGemTNnNVycKgxVrBz5p6P+GrGB40+N4QAAqwhmKkEAhBoBIGwCSVb7bXmgliDq2A1414Lh7+74f\/IO665WbYal8NXf\/otsvfoSVdOFVqaBkeHZMXMpbK\/9xnRUN79Iyek\/8TJQA6FbZvdObPw0NP9kdFR39YA87QjASmsZWammtguAWmtt83YfWyvtLUmG2IF02A9JAhAwA4BBJgdrpQKAQhUIGDDK8qW8KhFIFTovnPZVrm1uPRV016NfGgjuXFt1JD1\/2oCcNxw4Yvkvh0Py6v+9Y9l2ZzFxg3xI44lS6M\/XrjqHLlj233yli+\/S44P9Tviq1K7NXCKrbR68Uo5NNpjq\/iK5U4snlwxZ\/AznL30dBmJ++XL6T+f\/WbO6CUzL2qYFcz\/HtMCCESTAAIsmuNKryAQeAI2XgqtufRpxAcLyVZ7bQk7N0LJAi5RK9XX3\/JpufTUC5ziT5m\/Qq6\/4Fp5\/43vke72yaHsn2XyfOnmj8tfffMDVTUlrQLM0hf+i+YukEM9\/gmwqgCEJNOqRYuN9cffcOx+o9p0cLOsMBERh0xgDpvJ1u8nm22mbAiEhYClPzdh6T7thAAEfCNgQhh7nWwJD1tzqmy94NizgNmZA6bPQSV3JxVbt77rWxPiS++Z1z1HPvG6908RX3ptqbGKqTjTKG3VpBETydJWSqX4rtMrti3ddr4M8ap9jShnID0gbTET1IUEAQiElgB\/FUI7dDQcAuEmECYLmC1hZ61cYyOwkWy5IGpbVShlM6UF3sWrz3MsX3PNGmhuky42XU1S0XrZGRdJImEWq9aFqxMmBlw894mZcPe65pGJ0zGRfnHXbRP77DSGwMIZ82Q40d+YygJeyyMHH5XzFq2XoyNYVgM+VDQPAiUJIMBKYuEkBCAQRgK2LD\/WhJIl10ZrHCwJO33WEkbsjJaYYqZWrE+\/\/sNO5MJankktt9q0J3tQ0unKc8G6WjqqLdLJNzJiz7rmqiEhz3zG0jWmB7DUYVTr+ZGBo1Jiaa6QjzLNh0BzEKj+L1Nz8KCXEIBAgwhY8EAUW0Ipa0l4WCvXUrRCfTQquQrW+viUchV82\/PfIF9808dqFl9u25uo0lrmNmz+zgOEoK\/1uSi8b+4cd8K38N4o7j\/dt1sWtC2y1zU7hnR77aVkCISIAAIsRINFUyEQJQJWXBDDZlEKWXv1+SsllLx4LtXNrzC97xXvEv04rn+FF1zuu2lvteLSbTCSpw\/ukdO7VsvqOStdtt6r7JPZelVqo8vJprB+FTPf+Mxj0p5AmBZz4RgCQSeAAAv6CNE+CESUgA0BZsuiZMuyZqtctxYaN49YMlZdUAs3ZWreYqG0xazv5UWKuzC16pyvalItc+Hu2nK\/PPDow2bezlnVVEGeEgTS8eESZ5v71GBmUOJjqeaGQO8hEEICzAEL4aDRZAhEgoCFL+XH1PXOQrlEQTz5xFUrUk7eUd1eofXpjCVr5a+v\/9PqbqyQq7DcClmrdq\/M1OjiqYL7jofukTWnnSr7jz9TqTlcLyDQ3drpiPTu+DwZSWdl2MzV07XbVAzr+n\/ZsYzouOiXD2qhLNzqnMh1ixbKQDaa4esfO\/yYXLT4fDk8fKiAGLsQgECQCSDAgjw6tA0CESZgwwIWtrDu1haOtjRnTR\/HYkuVV4\/oOiO6nrvucrl9693y1Td\/Sma0d3tSdLzKMPRO36qcA6Z51TWyFgvmcHpEWkYabbEI72Se9pY2OX\/Nekl1JOW+nTuNuHqypufizNiSmu4Ly007e\/fIrI4uSY9556Zp6\/dpWJjSTgjYJIAAs0mXsiEAgYYScASNBQtYLS\/a1XXczouxTRdEN1EFq2MgcvkpF8m\/3vhB6WrrlD+79o\/rnvdVWK8rF0QXAixpws+NZmp72X1o+6Py3IueLY+Y+TuNSPXOo2tEG\/N1qMVy1cLlsnTeYkm2JWRH3y7ZMbxLpE7vQxtf+OTbHITt4cFDMq99jhGoaRmL2fm9EoR+0gYIRIUAAiwqI0k\/IBAyAjZeCm0JJVth3W1ZwGy1Vx+xuMdzwF5+zovkAy\/+S0klcn+OvH4u3LhMunFXTJr1wmoVYMrxka0bZcbimdI3FE23OO1jLenKcy6Trf3bZNvgDpHBWkooc0+1cwGNdkmYZzxmLKcaFTMhuhacOTZbPdZnRNeW02MVdSrwnX2nfN03\/6bUNf6tkHGVzEsj3dPfV3qc26obpZnF6rhTGqdn3UrOvVJdKvVaNu9eOeFuqW6XGUlnjSum2d4x8KBctOg8kaR7cNov55\/pe66fCWlLtJWByWkIQKBeAgiweglyPwQgUBMBfVHxOtkSHraEki3BePI1z2vC+nJaXaCKamp++7PfKP\/7OW+qJmvNedyIKjfWMl2wuZ7U098rZ7Wtk8caIMC8\/0mrp+eV7s1LlEr53F1vS3TKsLFY6u+IvKBJO\/PHVMCcFDI2f3bctTiX+\/pTXyJz2maLWlyTsaTT9vZku+MKrEJRP0kjEPU51+uaLxMbkZ\/t\/rFctfh50t0ywxGFer07NVNS8dSEwHJElwovD3+ma+kj90CgGQkgwJpx1OkzBAJAwMZLob5c2SrXBjInaIiNgk2Z+lJlQ5B64YKoL4zvv+49cuN5L7bU+5PFummvmxfR5LjF7mRN0++1JlqMlS8lrcmUeUlOmRfhhOzZs1fOWbZOeof6nJdkfXZzlhXdjltSjB5xDCpjua8s8l9c5J5z83+9bu4zBhNnm2uFnjcnzH+aRkYqLy6dy+n\/\/219KXFi9ITsP3HA\/w66bMGzl26QZd1LXd4lsrLrFGkxzxwJAhAIJgEEWDDHhVZBIPoEprjp1N9l\/fY6\/4Jaf2knS7D1rbitsPnacrVU2RBgXvD9i6vf2hDxpRymE1WdrR2iwT9aUy3SYoTR2iVrZDQ7aoSSOXbEUm6rwkmP9YVW8+l+bEicbVuqzVkoWrcdJmBEm35SrdJujjWAhJ7\/08\/9lfzHb76nzZmSNm\/eMuWc1yc2XHaZ10XaK29cNHpdgRfPrddtqqa8Wn\/3IL6qoUseCPhHAAHmH3tqhgAEPCagroI6M8PrZEPIaBudb\/u9b67TfWfuk4nK73UqFwVR+5IXKjo\/ynGZMlYe3Sacj7pI5Vyllsxc5HWzypb30M6NZa+dt+ps+fG7\/6Psda8u\/OLB33pVVOTLseXuO3VeVjhQ2vrdE47e00oIRJcAAiy6Y0vPIBBoAja+kc659Hk3R8k2QOflyksBZqwHrcmcq1uiIxcmXUVRTgzp\/JDxCfZmq5YhR6waS6Q2QQ0PKqKcf85kfxMEwMyNSeskf7Pekk7013WXNIz6nI7ZzrlRc06v6Xnti17TT2G6dt1z5Bdbb5fV81bKoeM9cqS\/RwaGBwqz+LZvy92tuEP9g\/3Fpxp6bONnzVYHbI1JmBgUskWAFdJgHwLRIYAAi85Y0hMIhIqABQ9EIwIs+S8ZsurSV24BXhUyjtBxJsSbSe6O5Uejphnrj7lPJ8qr4NF93erLoG7VIpTqbBm32pmz42JMu+EIIbOjL2D6yS0ymwsYkBdDaeMuN2ICC+Q\/en5wZMgEjzP+cf1jcnz4RMOfibMXny5nL16Xc8Ez7ndvueJ\/yNLbviBfu+d78hfPe6tcdsqFsnx249ZkUs7lkkaVa0QqZzVsRN1ah5ca336b7fwMh9kC5vz8jwcKaU20loiyaH9UqAECEPCWAALMW56UBgEIVEnAy2+kdb5Du7H86NybVFJFT9IJcqDbnPAxAkhFj0qf8RfymAlqoCn3jbsKHbX4TBY7GbUAjVt+UtmkDI+OOKHH8+fU8lNPKHIVbe3z2qsk5i5bvp\/u7qo\/95WnPkv+\/Oq3TBT0mdu\/Il+645vO8ao5y+TsJesmrjViZ7oX71rn17htt\/8CLDwSzN6XKOFhUPh8vfeOfyg8lE88959lYceCSec4gAAEwkcAARa+MaPFEIgEgReefplZ5SY9bhUywiiu1qFcxLecODPfhJsFRSf+qSVI\/zlr4GjYaHWLy20Lgdxyz\/3OPYXnvNgfOTZq3OvqXA22uCE2LXaGpx\/p6\/f9pyPA1DXxvT\/6iHz3wVsmmlHOgjiRwcLOtBYw80w1IrmJxGinPeERH2NZSxawkNkByz0H6hZMggAEwk8AARb+MaQHEAglgUyyXwbSxkVO37f049G7cML48aUtCBs3a0RVOyA2oyBOJzyqbZ\/bfBr576dv+brjBvnmb71bfv\/kPZOKUItio9N0FrCspZf94j76bQErbk+Qj23NAQtyn920TedkkiAAgfAT8Ocr0vBzowcQgECdBGx9J59wuT5Ttd2Y7kW+2jKK89mcYN9oAfbiM58nD7zrZ6IRDvcdOzBFfGnf\/RBg0wlnm\/wLxzpu5gT6mfJzC\/1sQ7V121wbr9o2BDmfHz9DQeZB2yAQVgJYwMI6crQbAiEnYEPQKBJb7l42BI3Nb\/vj6s\/ZgNTd2ikXrThPPnnj+yeCA5Sz+Nh0QdTgIwd6D8qIicKoc\/Py0Rkz0wTasC3Atux+Qv73Z\/9Kjpjoj74mO159VrpkbQ5YiBhMBzaDBWw6PFyDQGgIIMBCM1Q0FAJRI2BHINgQSkrelmC0Naq2OBS39+bLbpK3X\/kG2Xp4u6ybt8a5XE4Eu\/32\/p6nHpR3fO9vJgTVGYvWyndv\/nxxE5zj3229W171yT8uea3cSdsCrH\/whNy15b5y1TfsvJcBb2w32t6Y2Pl9Y5tHcfkIsGIiHEMgnARwQQznuNFqCISegK3XIQ35biPZEmC2rGCNioKooup7m38s773tIxPYdeHlUsmtANN1xg6bdcOODfbJiZEBWWmiKJZLtQhOC1MFJzXv0acem3TMQWUCtn4eGhXxsnIP68vxnce\/Lz\/e8dP6CuFuCEDAdwIIMN+HgAZAoFkJ2JFg5awv9VK201pxwuTX27ZS9yca4IKolpUnB3bJR+\/6rIwYsZRPuuBzqeRWgOm6aYVpupD\/5dweC+8v3rc93+hN175O3vnytxZX2\/BjW8+ujY5Yc0G00Vgfytx8ZItsP\/qkDzVTJQQg4CWB0l9TelkDZUEAAhAoQcBWYIBaLCElmjfllL1yYyakvvcTVGKWLIF5MK3JVrn4jPPk7v0POqcKw2OXE0OF87E++svPyP5jzziLSOu6am9\/zhunrBFWXM7QNMsATBdsI9\/m4q09d7eTNb3vde+Rn93\/a9H5YH6lsRCFYB\/TOXul9Xtd+Cz8iNXVnnpuxg2xHnrcC4FgEECABWMcaAUEmpCAne\/li1\/avQJrS4CZ2WVeNXFSOZNtR5Mu1X0wt3O2nLJyhWzp2TZRVmGAjWLLVT5ToQXsJ5t+JU8f3Zu\/JH94wfUT+\/mdYuaDo0P5S1O2tYy7LrxtO\/35F\/7WV\/Gl\/bPzhNkhV\/gceVlDVFwQlYktRl7ypiwIQGB6Ajb\/Rk9fM1chAIGmJmArMEAtlpBqBsLWHDBb7Y1bWoh55bxlsmDJfHnq2O5J2Aq\/lS8nhr52z\/fkVV96cy6oRoHLohZUyhpV7E76yJ7NZjHskUn15g9qGR\/b7m7\/9O2PyRd+9vV8E9lWQcDW2mxRsoDpYvQkCEAg3AQQYOEeP1oPAQgUESh+aS+6XPNhLS\/41VQWFzu\/hm0E4Thz6WkS647JwYHDU7pW6F6YLBOEY2fPbrlv18PSN3RcioMtFN6fLzxe5Eap9336v7+cvzxpW4vgtGkV+fytX5MPfecTk9ro10GYLGDW5uWN2bd2Nmp8sYA1ijT1QMAeATt\/+e21l5IhAIGIELAlaMImwGw5iHltWbtw9TnSm+iT4yMnSj6Bhd\/Kl7OA5W+8+CMvlP19B\/OHzrbQgpa\/UGosdb6YujLuOLwrn83ZLp+71HVAk2IROKnAOg6+\/\/tbRF0Pg5LCZP2x5RYaHflV2loclGeNdkAAAtURYA5YdZzIBQEIeEzAnguine+VvBY0eZy2gpF4KXCvWHeJPN6\/o6SbYL4f6YL5VKWEUz5fuW3hi7cupKwRDwdGBqdk\/+9tdzluiF++69tOWPpT5q6Q9lSbzGjvlpZkSoZGh6fcU+5EKbfHcnmrPf\/rh2+X\/\/XJd06x8FV7v418YbKA2RgTZWpLbNsYr0plFs6lrJSX6xCAQDAJIMCCOS60CgIQqJFAuQAQNRY3cZsNlz4tPOhC9Kr1G2Rjz5YJDuV23FjASpXxFz94n\/z5D\/7BmR9W6nr+3JYD20Q\/mnb17HE+un\/O0jMkmTB\/0lwIMK9fyh\/Y9ojc9JE3i4bhnzVzhnS2dcruQ3sdi522kVSZgC33Otvz\/Sr3zLsctkSqdy2kJAhAoBIBBFglQlyHAASsEAi68CjutL322rFPFEcQLO5PpWMVERvOvkQ2mnWHqknFL87qhujmm\/oRY\/GqJw2MDMkrL3upPLRjozyyq7oFkL12zTt71TrZ943HpHA+2uk3Xyp7j+yvp2tNdW+hJdTLjkdJtDx5bIfs6ntaVs5Y4SUiyoIABBpIAAHWQNhUBQEI2CdQ+PLrZW3WXAUtBeGoJ\/Z4V2uHrF97hmw68njVCItfcN0KsKorKpNx+6GnjDVst7zitOuqF2Di7fprranWKa1zrHJTzjbniVQiJSkToEXFvXJJxvU4LvqsJEzAFd3OaZ8lcxbPNMcmPI1ZTNzZmn21QKsbsK4vrvv6tUXuZ1JP5HnmxtMJrmLUddaMr\/N\/sz+YHshn8n27qHORdKU6xvufY\/LQwUec1hY2bknnYrlg4fmyv3+\/PHDwoYlL+rOmcyFJEIBAeAkgwMI7drQcAqEm4OUcpUIQtlwQ67UoFbZx8r63IiBfdu4VNX9U\/XbBjHmyZMkieeLoU9XfNJ5TLV76Eq3J1jiMV1Vy87zTny2vuezl8qy1Fzrz1bYfeEo+\/Ysvy7GBvpL5rUXcK6gtmSi9qrB+UaBz1lqSLdKaapGU2VcBF0sYkWFURmxcmDiiwzDV50\/Px82+Cg+9Py9KYnpeTzpCRYWJuT\/\/Meqks7NTLuhab1plnrXcfydb6Byb\/+nrv+6PmwV16\/zT7Xge55x5+detuvSpENAx1wiWGSMIdO5eOpNxxEHa7I+kR51zOp+vWmvo4lkL5cwly062L4J7bzv3j2Xt7DWTevb6W2+WkezkJRZWzVwpN53xarlr3z2TBJhGGS0XaXRSoRxAAAKBJYAAC+zQ0DAIQKAWArbmajlvvbU0qMI9toRdLZbA1QtWSmpGUnYf31eh1aUv6wu5sWM4F9XK0eh06ryVcs7KM51Pvu5v3fnDaQSYCg+76Sf\/+G2nAhVaLSkjspKtjvBKlBFmV3\/4Rtm0Z6sJdWe3XUEtXYVc1FOpiJ+lfg\/kRWux2JrXPg\/3w6g\/JPQv8gQQYJEfYjoIgWASsDWnqpYIfNUQUgODjWTLEui2reesOEN6431ybPC421sn8h8e6HEsNOpeddrCU2XbwaecNb8mMtS409XaKavnrRDHhc24sd2z80HHCvOZV39Yls5a5JxvMefndMyaUoNa5N52zRvkpRdcY8SPiiBjcdKt+XS0tk\/J7\/WJZfOWuCoyb0F0dVOEMqsVLeqp2F1X++v83ipaXzk9vuBy8ZcZuB9G\/Qmhf81AAAHWDKNMHyEQQAK2hEepb5K96L6tBZMLJrDU3cyUmVfTmjDubEaMFC9iPF3hLz7r+fKs0y8UFTF6f5ux0ui2b6Rf\/vH2j09366RrL\/vuG53jd1\/2VvnezV8QjWz4g4d\/OilPLQcXrjhHvvxHJxc1vvoTr5ROM0\/tnKVnypKZC6ctUl9eH9m5SV524Qvl\/FPUDS\/YyQ\/XzSARGU03pwAr9fslbwFTi9ezl25w3HuTsaR0t3QHachoCwQgUAMBBFgN0LgFAhAILgF763WVN4GpNU\/n8+QtNBpoQMVQbq5GLriAWjZyAQXMfB4zf0fbqSJ0zoLZko1NdoXLz73JGj+03DwbM8fGmW9j5tiYb8XTZt6NzqsZzebm2IxkRsx+Wqf3yJCMyJA5npeaU9Ug3XzZa+Uvn\/92py3FN+zpqy163y+f+p288syXGCrlmRXXNd1xfl5SPs9fvOCtct1Zz8sfTrtV7nc8cZ9s3L1FLllz\/rR5g3Cx2S1gzWDdKemCaJ5TTVcYoXXDmpc6X4B0JDucc8u7l8nbznuzs8\/\/IACBaBBAgEVjHOkFBEJHwIuXc\/02OD8hPRlLOfvZ7m4ZWTTmWHPUotNiLDm5j+7ngh7kzucEk1p69Dg1vlX3NBVS+Tx5i1JL3Jw3wmpSGSav5j\/1vc+SgVH95n7qwsGVBua0ljVydORYpWyur1djYfyba\/5U3visV5ctW4VgLWnL4dw6XbXcW+qeO3fcJ+d98Ply08WvkHe94G3yojOvLpWt5LnrznueXLT6PFm3ZE3J60E7WcvcvaD1oZ72aOCOqCcNWqLp6b7d8vUt33QClPQba7OmjmS7LO1y57bq3Mj\/IACBUBFAgIVquGgsBKJD4NKFlxtLzZAjmpzQ1I6Yyomok8Kq8LhwP1hRwDSEdnqsNtepIuOXZwM8ncBVEfnPN\/ydqOuhjaRR8zRVIwJzOaf\/v1r8+oaOy1B62Mnopty\/fvmfTV94wK4WB1wIWPOsN0ctvmrxdDPG1hvlcQVq2dY0mB6UTYcnr1n366dvk9\/s\/q0TSfLvL\/sbWTfndI9rpzgIQCAIBBBgQRgF2gCBJiRw8cJLI9NrdRur3XXKGze9YpjlXmC7TUCLz73q\/8qzVl1QfEvgj0sFLwh8o1020FYQGZfN8DW7RtLMixRfG2Kp8qz5QkGThpn\/4BX\/6PzuUHdi\/aJBvxzpTHU65xZ1Tj+\/0VLzKBYCEGgAAQRYAyBTBQQgEG0CGughZ5upoZ929FduXaii5izsni9ffu3H5PSFa4qu2DmczgpXS43Fc8FqKSPo9zT7HDAdH7Oqmfl\/dOPw63xOTa2JVjll5ipnn\/9BAALNRUB\/y5EgAAEIQKAOAtetry4gRKkqvBYp+TqKX+TXzFsl33\/jF1yJr6AJnqC1J8\/ay62tKJ5ettF2WaUiAtqus1T5+rOp7tApM\/\/TyzZlx8PLl6qTcxCAQHMQwALWHONMLyEAAYsE8pPqa6nClgCLx0+a1i5aca583rgdzmyfUUsTa7gnNwmsnBtkDQU6tzSHC2LjF7CudTxs3be4fZmMxc0zpI+w2eSeJhMSJrfjzBHLRwrVUyrMx5yIobqvzouaVyOH5rZZs1XRk9vmIopmTSAMjUao1ii9pj\/D+WN1Jy5+1ua0z5ZVs5fK\/oG9U7o9Iz4\/d68pQ+\/Ll6Nh5PNLOkycN3mGnIA9U4rhBAQg0EQEEGBNNNh0FQIQsEOg9vlfXq4CNrlv8fGw1teecZV8\/OX\/YKI1tk7OEMAjnf+ybtGa8SiUGo3SRJ00USadyJPm2gXLg7+OV71YmQMmsq13l\/QMHa0Xpaf39wweFf1csGi9HBreZ4LunIzWuP3oTkd0VVthPphMtfnJBwEIRI8AAix6Y0qPIACBBhNQgVBzOmmoqrmIUjeaJcbkjy5+pfzdC99p5oPV5m0+bnAoVXzZc0u7F8mL1+ZcMt12bbmxMPzXm79StuxmuFDsOtoMfS7uY5AXo37wwEZZ1LlAFnbPlYNDB5ym65p+GRc\/LLpmHwkCEGhuAgiw5h5\/eg8BCHhAoDVVu3XJlgviC067Sl6z\/mUe9G5yES877Rq5YPF6Z\/mAfNt1e+qslbK\/\/xlJZ0yAAfM2+oOHfyKPH9wx+eYKR+pI1uypVrEcJW5BZ3DgxEE5OHBYLlx8tuwbeNr1FxzqmkiCAASamwACrLnHn95DAAIeEKjHAubWSlSpuUmzJtl7r\/wzeclpz6+UteL1rpYOuXHddc48Fmcui3Fj3L73KXnnb\/5ORjInXbAqFkSGqglgARPXgqZquB5m1Dld9+17VFbMWGq+b8gtolxt8fW4LFdbB\/kgAIFgE0CABXt8aB0EIBACAgePH66jlVMlWCqeckRPe6ptQvy0J0vvtznnT15bN+9UOXvBujrac\/LWuSbwwHs2\/MnJE2bvA\/s+YU18NUOUw0kwSxwwB8wIMCcMfQk4ATz1dN\/UoByVmpkmCmIlRFyHQOQJIMAiP8R0EAIQsE1g7YJT5AVnPEfaW8aFkHFJdMSTbs25VhVJBecK97s7up1ramHSj94XZBcs3ATtPk1YwMJhAavnKcACVg897oVANAggwKIxjvQCAhDwkcA7n\/9mH2tvbNVYqezyDrL4ttvzk6XHnfjzJ4+jtsccsKiNKP2BgHsCtYXGcl8Pd0AAAhCAQAQI2LWAEYQDC5hZmqHGqJ1h+fEiCmJYRop2QsAeAQSYPbaUDAEIQCByBLCA2R1S5oDpHLCp8yLtUm9s6bggNpY3tUEgiARwQQziqNAmCEAAAhBoSgLNaAFTUb+ga57M65gjncl2SQ9Ge50sXBCb8kebTkNgEgEE2CQcHEAAAhCAwHQEarGA6bymlmRKWhItE9vWwuNkizyy5zEx7+FNn6I8B2x220wjtOZKV6pTYtmYDA0PyZFjR2XvkX2y65ldov80vWTxNSK1L60X+GfokYOPyZNHd8qps1cFvq00EAIQsEMAAWaHK6VCAAIQiCQBN3PA3vOCP5GbN9wk1Vh1LvrwtZHk5bZT1bByW2Yj83eateMWdc2XGa3dkhxLyPDIsBzt65V9Rw7I3gN7Rf9VTtF2QXyyd6fc\/NN3yjWnXCVvOve1sqBzfmUk5IAABCJFAAEWqeGkMxCAAATsEnBjAWsxlq1qBYVaftyIO7u99K\/0ZDzhX+Uuau5oaZfVs1ZIe7xVRkfTcqy\/Tw70PCOHDhyUQ3LQRUlTs8aawBKqz\/rPn7pNbtv1e3nFupfITWfdKN0tXVNhcAYCEIgkAQRYJIeVTkEAAhCwQ6BYJLUkjGuhEVqltgu651XdiLde+XqzZlp71fmjmrFawepH\/7taOmXd3FPlmUMHZdueHXL46UN2mtEEAiwPbiQ7Kt\/e\/EP5yfZfyh+d\/Qdyw2nXOT9L+etsIQCBaBKImW8zm+hXXTQHkV5BAAIQaBSBgZFByY5lJ+ZzNareZqnngz\/6pHzi558PVHcTsYRcsPAsuXfzgzI4MmS9bS+99lrZ31GfFc16Iy1VsKhzgXFLvEmev+pKE44\/2q6YlhBSLARCQYAw9KEYJhoJAQhAIBgE1PWsq7XTCaYRjBZFqxVBs4CtmLVUFsbmyn8\/fGdDxJeOZjN\/LXzgxEH5pzs\/Lv\/r1v8jjx3aGq2Hm95AAAITBBBgEyjYgQAEIAABCPhLIBGgRYjPnL9W9u7aK9v37WgslGZWYOOktx99Sm7d8evGcqc2CECgYQSYA9Yw1FQEAQhAAAIQmJ5AUCxg5y0yLocbH5B0xoc1ubLTM2qWq6wX1iwjTT+bkQAWsGYcdfoMAQhAAAKBJBCP+\/9neU7HLNn4+GP+iC8zKhjAco9mxsy1JEEAAtEk4P9v+mhypVcQgAAEIAAB1wSCYAFb2rpQjg\/2u267ZzegwByUWMA8e6IoCAKBI4AAC9yQ0CAIQAACEGhWAn7PAWtPtsl9jz\/kK\/5sluDMOgCZsYyv40DlEICAPQIIMHtsKRkCEIAABCDgioDfFrBTZi+XbNZf17cxBJjzzKSzCDBXPzxkhkCICCDAQjRYNBUCEIAABKJNwO85YB2JACyGjQui85AzByzaP+v0rrkJIMCae\/zpPQQgAAEIBIiA3xawvuPHfacRNBfEmMSchce7Up0NZYMLYkNxUxkEGkqAMPQNxU1lEIAABCAAgfIEOpMdcuGyc0woQJMnNjYREdDs5U6Z02PGQpTVCHmxmLOvx5pyOXL36PXccS6\/5nH+6b26p8fj57LO1pw12227nnTK8vN\/tlwQ\/2DdS+X0uWulJZ6SVMJ8zLYlkXS2J49z51Pj51sSLZKMJxwcyvTqb76iYWgIwtEw1FQEgYYTQIA1HDkVQgACEIAABEoTGBoekt9vvLv0RctnO1ra5cTQgOVaKhfviMvK2VznOHfB2XLF8ktd35e\/IW4WydaPrfbl68lvsYDlSbCFQPQI4IIYvTGlRxCAAAQgEFIC+oLf7MlWEJC0B1EFk\/HGfW+d8TkYSrM\/h\/QfAjYJ8JveJl3KhgAEIAABCLggkAjAQswummslqy0XxHRmtO72JmM5d8S6C6qiACxgVUAiCwRCSgABFtKBo9kQgAAEIBA9An4H4QgC0SBbwHRuWKMSc8AaRZp6INB4AgiwxjOnRghAAAIQgEBJAn6HoS\/ZqAaftCXARjPpunuSiDVQgHngMll3hykAAhCwQgABZgUrhUIAAhCAAATcE8AFUawtBJ3O1i\/AGmoB00iXJAhAIJIEGvdVTiTx0SkIQAACEICAdwRiBOGQTMaO8EiP1S\/AZrbOkOH0iAldb8LXm1D2GpQjv69b59gJcT9+3oS6z50bD3dflCepIfGdsnLXNW\/LeLndLY1dd8y7p5iSIACBSgQQYJUIcR0CEIAABCDQIALMARM5PtAvq9IrzDJoZglkXeLM+RTum1Oq0fJrmZl9Z02zrFnbTD\/mvLoxjpmPLuqs+\/rpX9ovsq6+gfz8i\/6lvgK4GwIQgIAhgADjMYAABCAAAQgEhAAuiCKbdz7ufLwekqvWbfC6SMqDAAQgUBMB5oDVhI2bIAABCEAAAt4T8HMdMGM78r5DASpxNF2\/C2KAukNTIACBEBNAgIV48Gg6BCAAAQhEiwAuiPbGc8TM3SJBAAIQCAIBBFgQRoE2QAACEIAABAwBXBDtPQaj6foXYrbXOkqGAASaiQACrJlGm75CAAIQgECgCfjpghhoMB40zot1wDxoBkVAAAIQEAQYDwEEIAABCEAgIARwQbQ3ELgg2mNLyRCAgDsCCDB3vMgNAQhAAAIQsEYgFotZK7vZC8YC1uxPAP2HQHAIIMCCMxa0BAIQgAAEmpwAFjB7DwBzwOyxpWQIQMAdAQSYO17khgAEIAABCFgjgACzhlYQYPbYUjIEIOCOAALMHS9yQwACEIAABKwRiMdxQbQFd4QoiLbQUi4EIOCSAALMJTCyQwACEIAABGwRwAJmi6wIc8DssaVkCEDAHQEEmDte5IYABCAAAQhYI5CIJayV3ewFEwWx2Z8A+g+B4BBAgAVnLGgJBCAAAQg0OQFcEO09AMwBs8eWkiEAAXcEEGDueJEbAhCAAAQgYI0ALojW0JogHGl7hVMyBCAAARcEEGAuYJEVAhCAAAQgYJNALMafZVt8cUG0RZZyIQABtwT4Te+WGPkhAAEIQAAClggk4vxZtoSWIBy2wFIuBCDgmgC\/6V0j4wYIQAACEICAHQK4INrhqqUyB8weW0qGAATcEUCAueNFbghAAAIQgIA1AnFcEK2xRYBZQ0vBEICASwIIMJfAyA4BCEAAAhCwRQAXRFtkRViI2R5bSoYABNwRQIC540VuCEAAAhCAgDUCuCBaQ4sAs4eWkiEAAZcEEGAugZEdAhCAAAQgYIsALoi2yIqkM6P2CqdkCEAAAi4IJF3kJSsEIAABCEAAAhYJNIML4tVXXCmd3Z2iIfd1ylssFnM+EtdtDm5\/7wlnR3nEEnHRBaqdfHqs+fP3mfNO0o3eHBuTsdwZGRvfH5Oscy6VSI1fYQMBCEDAXwIIMH\/5UzsEIAABCEBggkA8kZDzTz\/HERy6rwJErWJx3Y5\/VIDEHRGiomRckOix6g\/9nybnILfRw5woMf8358fGckfZcWGikkXPaT2\/+NmvNLvV1L64U7b17crVkSlTVUvReW2yfrJF510ctiDAXNAiKwQgYJMAAswmXcqGAAQgAAEIuCCQMKLrmdSRk3fkBUc5oXIyZ917jbIQGSlZd1trKSCdbQDEWhrGPRCAQNMR8Oe3YNNhpsMQgAAEIACBygTUsuVXGhvLqz27LfCrh1nTP\/2QIAABCPhNAAHm9whQPwQgAAEIQGCcgJ9BOLLjrom2B8M4S9quomz56Wy67DUuQAACEGgUAQRYo0hTDwQgAAEIQKACgYk5XBXy2bjcKOuQnwJsNIMAs\/HsUCYEIOCOAALMHS9yQwACEIAABKwR8FOcWOtUUcF+9pF5YEWDwSEEIOALAQSYL9ipFAIQgAAEIDCVgJ8uiNoajbRoPeWCMFqvplQFo1nWAivFhXMQgEBjCTTgN21jO0RtEIAABCAAgbAS8DMIhzJrhAD0bwaYWYyZSIhh\/dGg3RCIFAEEWKSGk85AAAIQgECYCei6Xn6mxljA\/JNgaSxgfj5e1A0BCIwT8Pc3PcMAAQhAAAIQgMAEAR+j0DttiMcbII4aFG1xAmrBDkE4CmCwCwEI+EYAAeYbeiqGAAQgAAEITCbQCBfAyTVOPmpI\/T7OASMM\/eTx5ggCEPCHQNKfaqkVAhCAAAQgAIFiAg0RQMWVFhw3xAWxoL5G7a6Zc4os6pov7an2RlVJPRCAAATKEkCAlUXDBQhAAAIQgEBzEUjEE9Y7PJZtjAmsu6VLXr7uhfKKM66TZTMWW+8XFUAAAhColgACrFpS5IMABCAAAQg0gICukzVm\/vmRGjMHzG7PVGy95uwb5PrTrjEWrza7lVE6BCAAgRoIIMBqgMYtEIAABCAAAVsE1A0xM5axVfy05TbCBXLMUhCO8xedLTetf4VcufLShoTTnxYkFyEAAQhMQwABNg0cLkEAAhCAAAQaTUDXAsv4YwBryELMWQ9dEJOxhDz\/1CvldUZ4rZu3ptFDRX0QgAAEaiKAAKsJGzdBAAIQgAAELBHwMRZ9LN6A4MgeCLCulk650cztetVZ18uCznmWBoJiIQABCNghgACzw5VSIQABCEAAAjURUAuYXynRAAGWHcvW3L1l3WZ+13rmd9UMkBshAIFAEECABWIYaAQEIAABCEAgR0CDcPiVGjEHzHFBdNnF0+eeKjef\/xp5zqrLmN\/l18NBvRCAgGcEEGCeoaQgCEAAAhCAQP0EGiGCyrUyZgKA2E5jWWMBqzLafYdZt+sdl7xBXnnGSyTmo2XQNhPKhwAEmosAAqy5xpveQgACEIBAwAn4KTQasRBztkoBdsWKS+SvNrxdFpoFlEkQgAAEokQAARal0aQvEIAABCAQegK+CjCXroF52KlUSpKJpLQkU5JKJiVuPilznEwkzDYlLZKUxPjx0pmLZXb3HEmaRZ914eeEiWQ4sW+Ou1IdctWqy0UFGAkCEIBAFAkgwKI4qvQJAhCAAARCS2Dt\/FNkeHRYNCKhBuRQl0SdF6b76iKo++qNp1vdyWkm58T4vkxaxtlZ1NmEtdetrsGV+2eOTTAMPc7qx\/zT\/fYV7XLKyKm5c+a6BszQNckyxmql+2lnP+0cp7MZSWfTTnnTwX72qZfL\/7v+A9Nl4RoEIACBpiKAAGuq4aazEIAABCBQisD+voPyX4\/eKiOZUbls1YVyycrzS2WTr937PbnjqfsknUmbvGlHgHz2Dz8ks9pnlsxfy8mnj+2TY0N9tdxa9z3LZy+VPX376y6nsICjA8cKD9mHAAQg0PQEEGBN\/wgAAAIQgAAE9hzdJ\/\/8m885IFLxZFkBtnHfVvnV47+bBGw4PTLpuN4Df10QvQ\/C0TPYWy8S7ocABCAQKQLe\/6aNFB46AwEIQAACzUCgWtGjrn\/F6bVffZtc\/f\/+QPqGjhdfqum4RBU1lVPLTTaCcPQOYgGrZSy4BwIQiC4BLGDRHVt6BgEIQAACDSCws2ePU8udO+6XtlSbjBo3xtGs+Zituik6x3pufH8kredz1\/PnJvKa+8ykKt+SmXXmed19w\/1mzljGCbjheeEUCAEIQCCEBBBgIRw0mgwBCEAAAt4SqHbtrXzIi1K1\/8n3\/7rUadfnFs9Z4Poer27QQB820lFjBZvXOcdG0ZQJAQhAIHQEEGChGzIaDAEIQAACXhModEH84aM\/k929++XqtRvkt9vvlAVd8+Q2s1Ur1d7eA15XHajyqhWibhuNAHNLjPwQgECUCSDAojy69A0CEIAABKoiUGjZ2nFkl+jnuw\/dUtW9XmcqbIvXZVcqr1CIVsrr5jqBONzQIi8EIBB1At47e0edGP2DAAQgAIHIEbDlelcTKEtugNW0xZYFjEAc1dAnDwQg0CwEEGDNMtL0EwIQgAAEyhPwUfQUN8rOLKziWkof26q7h0iIpYFzFgIQaEoCCLCmHHY6DQEIQAAChQT8dPsrbIfu+6kFbVnAjg6wFljxOHMMAQg0LwEEWPOOPT2HAAQgAIFxAkFyQfRTDNqqW4NwkCAAAQhAIEcAAcaTAAEIQAACTU\/AVvCJWsCO+WgCs8Xh6CAWsFqeBe6BAASiSQABFs1xpVcQgAAEIOCCgC3Lj4smTGSNjdmaiTVRRdkdewIMC1hZ6FyAAASajgACrOmGnA5DAAIQgEAxgUC5IMbGipvXsGNbQhQXxIYNIRVBAAIhIIAAC8Eg0UQIQAACELBMwEe3v+Ke2RJBxfWUOrZle2MdsFK0OQcBCDQrAQRYs448\/YYABCAAgQkCfoqeiUZM7NiSQRMVlN+xJER7B\/vK18kVCEAAAk1GAAHWZANOdyEAAQhAYCoBW+HXp9ZU+YyteViVazYh8KvJVEOedDYtx4f7a7iTWyAAAQhEjwACLHpjSo8gAAEIQMAlAUuGH5etyGW3JYKqa4y92pkHVt0IkAsCEIg+AQRY9MeYHkIAAhCAQAUCuCDmANkUogiwCg8hlyEAgaYhgABrmqGmoxCAAAQgUI5ALBacP4d+uiCW4+PF+Z4B1gLzgiNlQAAC4ScQnL844WdJDyAAAQhAIKQEFs+YL996\/Wfk9AWn+t4De06A1XTNXu29Q6wFVs0IkAcCEIg+gWT0u0gPIQABCEAAAtMTaEu1ySUrz5cZbd3TZ3R5NRVPSiqRGv\/ofv54fDtx\/eT5WDIm87rmiFrldH2ynCQy2wL\/wLxMyq8YNiZmz\/nP7I3p0clt1hxnx7LOed3qJ5PNbXP7mdy5sYwkCupw2dWK2XsGEGAVIZEBAhBoCgIIsKYYZjoJAQhAAALVEHjjs14tL1t\/rSOYWoxYSqpgirsTUDnBZe414qqWdMNX3iDbDj9Vy61137Ny9vK6yyhXwNFBXBDLseE8BCDQXARq++vQXIzoLQQgAAEINAmBa9Y9x\/eeJmIJ39tgowEE4bBBlTIhAIEwEkCAhXHUaDMEIAABCESWQDwezenZbi1gr\/ram41rpLpSqrtkzqWy0JXSeFw6rpMT143b5fT5x2R+51y55eavRvbZoWMQgEA4CCDAwjFOtBICEIAABJqEQMLHiIw6d8xWcjsH7JG9m525bF62Z17nHC+LoywIQAACNRGI5tdsNaHgJghAAAIQgID\/BHwNiW9Pf4nbKIhxC0K0xQREIUEAAhDwmwACzO8RoH4IQAACEIBAAQE\/LWAFzfB81+06YDZcMTWoCgkCEICA3wQQYH6PAPVDAAIQgAAECgjYEB4FxU+7a9MFcWB0UEYzo9PWX3jRhhCNaoCTQm7sQwACwSeAAAv+GNFCCEAAAhBoIgI2hEe1+HQNMZupx0Uo+oSFYCS2+2eTHWVDAALRIYAAi85Y0hMIQAACEIgAgXhEw9Dr0Bx1sRizjblwGRNRkQQBCEDAbwIIML9HgPohAAEIQAACBQRsWH4Kip9216YLolbsZi0wG5bATDY9bf+5CAEIQKARBBBgjaBMHRCAAAQgAIEqCdiI\/ldl1c46WtXmrSWfm7XAbFgCh9IjtTSbeyAAAQh4SgAB5ilOCoMABCAAAQjUR8BPC5hZ9bi+xle4u2fwWIUcJy\/HY7GTBx7t9Q+f8KgkioEABCBQOwEEWO3suBMCEIAABCDgOQEblp9qG5m1uBCztsGVC6KFIByH+o8YKx\/zwKp9HsgHAQjYIYAAs8OVUiEAAQhAAAI1EbAx96nahtiOEui3C2JmLOMqEEi13MgHAQhAwA0BBJgbWuSFAAQgAAEIWCbg6zpglq1DbixgNlwQdegGR4csjyDFQwACEJieAAJsej5chQAEIAABCDSUgJ+LBWctzwE7OtBbNct4PFF1XjcZhzME4nDDi7wQgID3BBBg3jOlRAhAAAIQgEDNBPyMgmg7DL2bIBzWXDEti8yaB54bIQCBpiGAAGuaoaajEIAABCAQBgJ+RkG0HaCi1+coiDr+yXgyDI8BbYQABCJMAAEW4cGlaxCAAAQgED4CflrAbLsg9g71mUj31YW6txUNsrutK3wPBS2GAAQiRQABFqnhpDMQgAAEIBB2Av7OAbMbol0tbMeMCKsm2bAELpu1ROZ0zKqmevJAAAIQsEYAO7w1tBQMAQhAAAIQcE\/AVvS\/aloyViYKYkxikjBBMZLmo1EaVSTqfiqemjiv15085lo+b+E2f89oJl1NU+Tl66+TnoGjjstgMpE0dWm5Safe3HFyvB5zzVxX10KtL6V5Etq+wuPc9e7WzqrqJhMEIAABmwRixhWgOl8Am62gbAhAAAIQgAAEHAI\/f\/y38tDeTZNEzISQKRI3zvnxcxN5jAhRcaSCR8+NZtPyhUe+YRYgNiE2jMDSrfm\/syCxWqT0k9Ftdnxr1srS40w2I2nz0bWzSqXZbTPl5zd9s9QlzkEAAhCAwDQEsIBNA4dLEIAABCAAgUYTuPb0q0Q\/XqXeoWOy\/bc7vSqOciAAAQhAoE4CzAGrEyC3QwACEIAABIJMwJafi7olkiAAAQhAwD0BBJh7ZtwBAQhAAAIQgAAEIAABCECgJgIIsJqwcRMEIAABCEAgHARsLa4ci2EBC8cTQCshAIGgEUCABW1EaA8EIAABCEAAAhCAAAQgEFkCCLDIDi0dgwAEIAABCIjYsoDBFgIQgAAEaiOAAKuNG3dBAAIQgAAEIAABCEAAAhBwTQAB5hoZN0AAAhCAAATCQ8DWcp\/MAQvPM0BLIQCBYBFAgAVrPGgNBCAAAQhAAAIQgAAEIBBhAgiwCA8uXYMABCAAAXxboggAAAVySURBVAjYIsA6YLbIUi4EIBB1AgiwqI8w\/YMABCAAgaYmYMsFsamh0nkIQAACdRBAgNUBj1shAAEIQAACzUqAVcCadeTpNwQgUC8BBFi9BLkfAhCAAAQgEGAChKEP8ODQNAhAoCkJIMCactjpNAQgAAEIQKBOAjFsYHUS5HYIQKBJCSDAmnTg6TYEIAABCDQHgbHm6Ca9hAAEIBAaAgiw0AwVDYUABCAAAQjUQGDMjgQjCmINY8EtEIAABAwBBBiPAQQgAAEIQAACEIAABCAAgQYRQIA1CDTVQAACEIAABPwgYCsIR4w5YH4MJ3VCAAIRIIAAi8Ag0gUIQAACEIAABCAAAQhAIBwEEGDhGCdaCQEIQAACEKiJgK2FmImBWNNwcBMEIAAB5oDxDEAAAhCAAAQgAAEIQAACEGgUASxgjSJNPRCAAAQgAAEfCNiJgShCFEQfBpMqIQCBSBBAgEViGOkEBCAAAQhAAAIQgAAEIBAGAgiwMIwSbYQABCAAAQjUSMBWFEQhCmKNI8JtEIBAsxNAgDX7E0D\/IQABCEAg2gQsLcQcbWj0DgIQgIA9Aggwe2wpGQIQgAAEIBBZAkRBjOzQ0jEIQMAyAQSYZcAUDwEIQAACEPCTgK0gHH72ibohAAEIhJlAMsyNp+0QgAAEIAABCExPoDXRIhcvOVcSsYQk4ubjbOPONjlxnJB4zJwzx8mC6yfzm\/NO3lweLWNm24zpK+YqBCAAAQiUJBAzCzTy5VhJNJyEAAQgAAEIQAACEIAABCDgLQFcEL3lSWkQgAAEIAABCEAAAhCAAATKEkCAlUXDBQhAAAIQgAAEIAABCEAAAt4SQIB5y5PSIAABCEAAAhCAAAQgAAEIlCWAACuLhgsQgAAEIAABCEAAAhCAAAS8JYAA85YnpUEAAhCAAAQgAAEIQAACEChLAAFWFg0XIAABCEAAAhCAAAQgAAEIeEsAAeYtT0qDAAQgAAEIQAACEIAABCBQlgACrCwaLkAAAhCAAAQgAAEIQAACEPCWAALMW56UBgEIQAACEIAABCAAAQhAoCwBBFhZNFyAAAQgAAEIQAACEIAABCDgLQEEmLc8KQ0CEIAABCAAAQhAAAIQgEBZAgiwsmi4AAEIQAACEIAABCAAAQhAwFsCCDBveVIaBCAAAQhAAAIQgAAEIACBsgQQYGXRcAECEIAABCAAAQhAAAIQgIC3BBBg3vKkNAhAAAIQgAAEIAABCEAAAmUJIMDKouECBCAAAQhAAAIQgAAEIAABbwkgwLzlSWkQgAAEIAABCEAAAhCAAATKEkCAlUXDBQhAAAIQgAAEIAABCEAAAt4SQIB5y5PSIAABCEAAAhCAAAQgAAEIlCWAACuLhgsQgAAEIAABCEAAAhCAAAS8JYAA85YnpUEAAhCAAAQgAAEIQAACEChLAAFWFg0XIAABCEAAAhCAAAQgAAEIeEsAAeYtT0qDAAQgAAEIQAACEIAABCBQlgACrCwaLkAAAhCAAAQgAAEIQAACEPCWAALMW56UBgEIQAACEIAABCAAAQhAoCwBBFhZNFyAAAQgAAEIQAACEIAABCDgLQEEmLc8KQ0CEIAABCAAAQhAAAIQgEBZAgiwsmi4AAEIQAACEIAABCAAAQhAwFsCCDBveVIaBCAAAQhAAAIQgAAEIACBsgQQYGXRcAECEIAABCAAAQhAAAIQgIC3BBBg3vKkNAhAAAIQgAAEIAABCEAAAmUJIMDKouECBCAAAQhAAAIQgAAEIAABbwkgwLzlSWkQgAAEIAABCEAAAhCAAATKEkCAlUXDBQhAAAIQgAAEIAABCEAAAt4SQIB5y5PSIAABCEAAAhCAAAQgAAEIlCXw\/wGElt3l19NqNQAAAABJRU5ErkJggg==\" alt=\"Note: neighborhoods with populations below 400 are not shown\" width=\"50%\" \/><img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAA2AAAAPACAYAAABTjhpKAAAEDmlDQ1BrQ0dDb2xvclNwYWNlR2VuZXJpY1JHQgAAOI2NVV1oHFUUPpu5syskzoPUpqaSDv41lLRsUtGE2uj+ZbNt3CyTbLRBkMns3Z1pJjPj\/KRpKT4UQRDBqOCT4P9bwSchaqvtiy2itFCiBIMo+ND6R6HSFwnruTOzu5O4a73L3PnmnO9+595z7t4LkLgsW5beJQIsGq4t5dPis8fmxMQ6dMF90A190C0rjpUqlSYBG+PCv9rt7yDG3tf2t\/f\/Z+uuUEcBiN2F2Kw4yiLiZQD+FcWyXYAEQfvICddi+AnEO2ycIOISw7UAVxieD\/Cyz5mRMohfRSwoqoz+xNuIB+cj9loEB3Pw2448NaitKSLLRck2q5pOI9O9g\/t\/tkXda8Tbg0+PszB9FN8DuPaXKnKW4YcQn1Xk3HSIry5ps8UQ\/2W5aQnxIwBdu7yFcgrxPsRjVXu8HOh0qao30cArp9SZZxDfg3h1wTzKxu5E\/LUxX5wKdX5SnAzmDx4A4OIqLbB69yMesE1pKojLjVdoNsfyiPi45hZmAn3uLWdpOtfQOaVmikEs7ovj8hFWpz7EV6mel0L9Xy23FMYlPYZenAx0yDB1\/PX6dledmQjikjkXCxqMJS9WtfFCyH9XtSekEF+2dH+P4tzITduTygGfv58a5VCTH5PtXD7EFZiNyUDBhHnsFTBgE0SQIA9pfFtgo6cKGuhooeilaKH41eDs38Ip+f4At1Rq\/sjr6NEwQqb\/I\/DQqsLvaFUjvAx+eWirddAJZnAj1DFJL0mSg\/gcIpPkMBkhoyCSJ8lTZIxk0TpKDjXHliJzZPO50dR5ASNSnzeLvIvod0HG\/mdkmOC0z8VKnzcQ2M\/Yz2vKldduXjp9bleLu0ZWn7vWc+l0JGcaai10yNrUnXLP\/8Jf59ewX+c3Wgz+B34Df+vbVrc16zTMVgp9um9bxEfzPU5kPqUtVWxhs6OiWTVW+gIfywB9uXi7CGcGW\/zk98k\/kmvJ95IfJn\/j3uQ+4c5zn3Kfcd+AyF3gLnJfcl9xH3OfR2rUee80a+6vo7EK5mmXUdyfQlrYLTwoZIU9wsPCZEtP6BWGhAlhL3p2N6sTjRdduwbHsG9kq32sgBepc+xurLPW4T9URpYGJ3ym4+8zA05u44QjST8ZIoVtu3qE7fWmdn5LPdqvgcZz8Ww8BWJ8X3w0PhQ\/wnCDGd+LvlHs8dRy6bLLDuKMaZ20tZrqisPJ5ONiCq8yKhYM5cCgKOu66Lsc0aYOtZdo5QCwezI4wm9J\/v0X23mlZXOfBjj8Jzv3WrY5D+CsA9D7aMs2gGfjve8ArD6mePZSeCfEYt8CONWDw8FXTxrPqx\/r9Vt4biXeANh8vV7\/+\/16ffMD1N8AuKD\/A\/8leAvFY9bLAAAAOGVYSWZNTQAqAAAACAABh2kABAAAAAEAAAAaAAAAAAACoAIABAAAAAEAAANgoAMABAAAAAEAAAPAAAAAAJbOTS4AAEAASURBVHgB7J0HvNRU9sfPa7xH74IoiAjSi6JiXbCsa++ugoK7KmLvZa3YV8VesC5WVHT1r7ugq4gNsSMgKAgqotKkSH2FV\/K\/vwsZk0wyk5mXybTf8TNOcnPr9+YNOTnnnltgKBEKCZAACZAACZAACZAACZAACZBAygkUprwFNkACJEACJEACJEACJEACJEACJKAJUAHjjUACJEACJEACJEACJEACJEACIRGgAhYSaDZDAiRAAiRAAiRAAiRAAiRAAlTAeA+QAAmQAAmQAAmQAAmQAAmQQEgEqICFBJrNkAAJkAAJkAAJkAAJkAAJkAAVMN4DJEACJEACJEACJEACJEACJBASASpgIYFmMyRAAiRAAiRAAiRAAiRAAiRABYz3AAmQAAmQAAmQAAmQAAmQAAmERIAKWEig2QwJkAAJkAAJkAAJkAAJkAAJUAHjPUACJEACJEACJEACJEACJEACIRGgAhYSaDZDAiRAAiRAAiRAAiRAAiRAAlTAeA+QAAmQAAmQAAmQAAmQAAmQQEgEqICFBJrNkAAJkAAJkAAJkAAJkAAJkAAVMN4DJEACJEACJEACJEACJEACJBASASpgIYFmMyRAAiRAAiRAAiRAAiRAAiRABYz3AAmQAAmQAAmQAAmQAAmQAAmERIAKWEig2QwJkAAJkAAJkAAJkAAJkAAJUAHjPUACJEACJEACJEACJEACJEACIRGgAhYSaDZDAiRAAiRAAiRAAiRAAiRAAlTAeA+QAAmQAAmQAAmQAAmQAAmQQEgEqICFBJrNkAAJkAAJkAAJkAAJkAAJkAAVMN4DJEACJEACJEACJEACJEACJBASASpgIYFmMyRAAiRAAiRAAiRAAiRAAiRABYz3AAmQAAmQAAmQAAmQAAmQAAmERIAKWEig2QwJkAAJkAAJkAAJkAAJkAAJUAHjPUACJEACJEACJEACJEACJEACIRGgAhYSaDZDAiRAAiRAAiRAAiRAAiRAAlTAeA+QAAmQAAmQAAmQAAmQAAmQQEgEqICFBJrNkAAJkAAJkAAJkAAJkAAJkAAVMN4DJEACJEACJEACJEACJEACJBASASpgIYFmMyRAAiRAAiRAAiRAAiRAAiRABYz3AAmQAAmQAAmQAAmQAAmQAAmERIAKWEig2QwJkAAJkAAJkAAJkAAJkAAJUAHjPUACJEACJEACJEACJEACJEACIRGgAhYSaDZDAiRAAiRAAiRAAiRAAiRAAsVEQAIkkL0EfvjhB3n99ddl4cKF8vPPP8uiRYtk6dKl0q5dO9lhhx2ka9eu+nvQoEGy0047JTzQiRMnypo1ayLl9thjD11fJIEHJOCTwBtvvCGrV6+O5MY92a1bt8h5Ph288MILUltbGxnyQQcdJG3atImcmwdkZpLIrG\/OS2bNB3tDAtlIoMBQko0dZ59JIF8JVFVVyauvvipPPPGEvPfee+L3TxgPeddff73gwdev9O7dW7799ttI9nHjxsnf\/\/73yDkPSMAvAbwAmDlzZiT7I488IqNGjYqc59NBw4YNpbKyMjLkjz\/+WPBywylk5iSSGefJzsvnn3+uX4q1atUqMwbCXpAACaSNAF0Q04aeDZNA4gTefPNN6dSpkwwbNkzeffdd38oXWvrf\/\/4nu+++uxxyyCEyb968xBtnCRIgARIggYQJwPKLlw1Qsq0eBQlXxAIkQAI5Q4AKWM5MJQeSywTgrnTNNdfIoYceKr\/99lvMoZaUlMS8DiVuyJAhsmDBgpj5eJEESIAESCB5AvBOgKfCjjvuKI899pjU1dUlXxlLkgAJ5BQBKmA5NZ0cTC4SWLt2rfz5z3+WW265Jcri1aBBAxk5cqRMmDBB4N6yYsUK2bRpk\/7+7LPP5Omnn5bddtstCsvy5cvlgAMO0OvGoi4ygQRIgARIoN4E1q1bp3+fV61aFamroKAgcswDEiCB\/CXAIBz5O\/cceZYQOOuss\/RaL2t3y8rKBOmXXnqpdOjQwXpJH2NBPz5QvkaMGCFYNH7hhRfarF4I2gElbNq0adK2bduoOphAAkESwP0Kxd+UXXbZxTzktwcBMvMAk+ZkzkuaJ4DNk0AOEKAClgOTyCHkLoHx48cLIqZZpVGjRjryIZQnv4J1X3379pU999xTfv3110gxuCHCsnbvvfdG0nhAAqkgcMYZZ6Si2pyuk8wyc3o5L5k5L+wVCWQTAbogZtNssa95RQAh5c855xzbmBs3biyTJk3SlivbBR8nHTt21IE4WrRoYcv9r3\/9iwvDbUR4QgIkQAIkQAIkQAKpI0AFLHVsWTMJ1IvAFVdcIVj\/ZZU777xTB9CwpiVyjLDyl112ma3Ihg0bBCHBKSRAAiRAAiRAAiRAAqknQBfE1DNmCySQMAEs3sYGy1bp3LmznHbaadakpI7PPPNMufXWW2Xjxo2R8vfff79cfPHFgqAeico333wj8+fP1xtAY23aNttso6N+bb\/99olW5ZofkcPmzJkjv\/zyi97I9\/fffxe007JlS73ODWuJmjZt6lq2PomzZ8\/WG1wvXrxYiouLpX379jJgwACBJbG+grDU2ET7xx9\/lJUrV+qNs7Epcf\/+\/etbtWt5uJ1iPFiDtX79emndurUeD9YINmnSxLVMpiemcn6SHTvmEm69mFtw3nbbbaVPnz4S1N9Csv1Kdbkw7y9Egf3ggw8EgS3Mvxm3TaydY8bLLMzL999\/r\/8O4AmAct27d5cuXbo4s\/OcBEiABFJLABsxU0iABDKLwFNPPYUN0m0f5SoYWCfPPfdcQz2EG0cccYRxxx13GJ988olRU1MTVX+vXr1sfVAbMes8KtKioaxxhnoAsl239llt+Gw8\/vjjhlKgour1k6AUUOPII480lKLl2QbaKyoqMnbddVfdFvrlR\/bdd19DKYr607Vr10gRtTmuodbExRzXzjvvbGB+khnXhx9+aBx22GGGioTmOib05a677orMxbPPPhvpJ\/p73333Rfoa76C8vNy4\/fbbjX79+rm2BXZK4TYOPPBAQ21NEK+6el9HOyZzfGNsXpKu+fHqT7z0999\/31DrLD3ndZ999jEw96aoFwi2OVEbMZuXbN\/xmE2fPt3GFFyRlqioFwLGdtttZ6vL2l+3+lJ5f6kXA5G+qJcSkeb\/+c9\/GmoTaxs7te2Gccoppxhqb8NIPvOgoqLCePTRR40ePXrYylh\/p3CsFGTjvPPOM1RgIrNozO9Y86IUvEjfVYCkqHbVi5zIdczXSy+9pNvCHKiXbLZr6sVYzH54XTzooINs9TzzzDNeWZlOAiSQJgIIa00hARLIMAIq7LztH248ZCiLVWC9hKLhR4FwU8CUNcro2bOnrX\/OBxrr+V\/+8hdDvbX23fcvv\/zS2GmnnXzXb21L7bdjKGtc3Las41JBTXT+r7\/+2lDWCt\/tqk1VDTw0+RHl5qkVL2tfYx1DyVPWMUO5htr6c\/PNN\/tpzvjvf\/9rKOuLrWys9nAND5XLli3zVX8ymZT10NYfjM1Lwp4fr37ES09kXqHsPvfcc7pKvwqYH2ZQ2q1zq6Kdxut21HXnfQbFwe2FjFkw1feX2mw+MqatttpKN3vTTTdF0qzjNY8ffPBBs3v6+9NPPzXatWsXs4xZ1vwuLS01brjhBls9biex5gWKoFmfn2+8zDHl8MMPt5XFy5NE5bvvvrPVgX871PYkiVbD\/CRAAikmwDVg6heSQgKZRAAudu+++66tS3AVQ\/TDoEQ9aEgy+9Eo5UgGDx4sc+fO9d2Vt956S4455hhfm5BOmTJFr3GbMWOG7\/qtGeEKiU2mlYJpTY57DLckZXXRro5xM2\/JoKyGcvDBB0ftzeYsD3fD\/fffXyZOnOi85Hn+1Vdf6f4gEEui8sADD4iyHNqiXfqp4+2335bdd99d1AOkn+yh5knl\/CQ7ELjA7bfffr7nFfvznXzyyaIUibj3TCJ9+tvf\/mbL\/uKLLwo2bk9ElIXEln348OGiLMu2NPMkHfcX9jQcPXq02YWob7hODx06NJKO+0UpM7ZtDyIXYxxUVVXpdrC9Rzrk73\/\/u61Z9VJI8ElEnHOpLO7a1TKROpiXBEggBAIpVvBYPQmQQIIE4EKk\/vRtn6uuuirBWoLJbrVEOPtUWFiorTpPPvmkodZkGO+8844Blxm4jznz4jye+xysZGpdRlRZWAPVRtPatWrJkiXG0qVLtcvk888\/b6hQ\/FH50RbcjmKJdVywTKh1IJF64B6oFEbtmqn2T9MuQmrdnKdbolIwPZuClXGvvfaK1G1yUfuuGddee62B+jEmtRebdj2EK6WZB99OV8V4FjC4GlnLm8dHHXWUgWszZ87UVju4l8HVUW1LEJUf7lp+XTk9B+5yIZbVwJk9rPlxtpvIudu8br311sb1119v4J7Affree+8Zar2lYR2POSfWb8y\/m\/hhptZGGvhbtNb3v\/\/9z6061zS4zFnL4tjNnQ+Fw7q\/rBawVq1aGWoLDVsfYdWxuiLi79UUeAo4rYJwY1bBh\/Tf2cKFCw1YLtXLDQOuo0rpMdQaT1v9+LuL5coZa17WrFljPPHEE\/qD30MnW7hRmtfxbbXY4+9OrUuzlUG\/\/Qp+b+BKam3ztdde81uc+UiABEIkQBfEEGGzKRLwQwDuPdZ\/QHH873\/\/20\/RwPN4PTjC1U8FQfBs7+GHH44agwqW4ZkfF0aOHGkrg4cgKF7xRFlubA9j4IX+KSuAZ1GvceHByms9Dio7\/fTTbX1EW3Ab8hK3tXxY34KHZjfBA9gFF1wQ1YZ5P8ANy0vw0Ky2KbCVhfvWyy+\/7FVEu5nhAc+s3\/y+5557PMskeyHWQ6uzzrDmx9mu33O1P18UM8yrCtjiWgUe+KEkmHyd3\/VRwNAg3HytdSpLm2s\/3BKhMFrLwrXWTcK8v6wKmLVvuC\/w946\/EygbKqiGcc011+g0s8+4bi2DNVdQumLJ1KlTDbgfWssdf\/zxnkX83stQxqx14hiuxbHE+fcPV+JYv2XWuqDwW9vDi55UvEyxtsljEiCB5AhQAUuOG0uRQMoIwHpj\/UcUx\/EWxKeqM24PwjvssIOh3CTjNnncccfZxgGFymstGN5aO9fFXHnllXHbMDPAyuBk5vUWH2XcxoWgJMqtzKzS9bu6ujrK6gbrA6xYTlGRLKPWoMDihPV38WTMmDFR48H4Yilgzgd8vNWP9Rbf2gcES7Hya968uedcWcslcuz3oRV1hjE\/ifTdmhfBJxA8wcoLLxcQ8CGWQGE49dRTbeXMOuqrgOFFhVkXvlVkS99rRvH3bC372GOPuQ4jzPvLTQHDywUoXPHk6quvto3n7rvvjldEX0fAGisHWM28FB+\/93IyChis1NZ+4Fi5ZvsaA6x51rLJrAf01RAzkQAJ1JsA14CpXysKCWQSAfUwH9UdP2GWowqlKGHs2LHi3MzZrSnnmg31ayUIWe8mWCdmXbeFsO\/qTbBbVte0v\/71r1HpygUsKi1WAkLzK3enWFl0OHrlQmTLox6sXddNKdefqDUot912m2D9XTxRD06iHozjZYtcR3httGcV9SAqKpiHNcnzWFn29PovMwNCdivLgnmaEd9Bz0+yg8K9iq0JrKLcSfXWCNY057F6ASHKhdTX\/DvLxjvHmj9sy2CKsrhF3Q\/mNes31jHi3jEF60xPOOEE8zTynQn3l3op4Stc\/EcffRTpNw6w5YIfOemkk0S9TBHlRip77723qAixetsLP2WDzIOtKFQQIluVyuJqO3c7US8ARHlK2C451wfaLvKEBEggrQSogKUVPxsngWgCKmJVVKIfhSeqUAoS1Jt\/UdHyfNWsIiVqhcWaGQFG3AQPHHjIuPHGGwUPDVBAVAQzt6yuaWrdQ1TQADyQ+BXs7QUlxI+ot99RD9Fuc+bcx025iYkKR+6nCc0NLPyKCuluC3KiLFgCBSwRUesMbdmffvppW522iyGfpGJ+kh3CpEmTbEXV+iQd8MGW6HGCh3tnoAWPrAklQ6kfNmyYrYyKuGg7dztxBmxQVi5p1qxZVNZ031\/Y9w\/7F\/oRtTbMlg1j9BOUBL9t2BsRL8CUS6Io9+G0Ba9w3iNQrKwvqGwD3HKCFzDYe84U\/E6lal9Bsw1+kwAJJE+ACljy7FiSBFJCwE3ZwsbMmSCI+uZXEEUNG9FaBREB3QSbTOMBEpYEFdRD8LY7EYHFzPngqNY++K5CrRnTb7\/9FEBbTkuZsy1EU4OlxCrK\/cx6GvcYUd2sVo1YBfDAaBVEM1SBCqxJcY+Ve6QtD8aAza8zQYKen\/qMSe2ZZiuOh2VYt\/wKXi6kQpz31+TJkwWbFnsJ7lm1B5XtsvPB37yY7vsL1mC\/jKEQWwWRVWHR8rK+W\/NC0csEwW8hIjuagt9\/tTbYPHX9dirTam8013xMJAESyAwCVMAyYx7YCxKIEMBbcqesXLnSmZSWcyhKiYjTigXXqCBlwYIFotas6BDUTiXVz1tvsy+woCUiTZs2tWV3KmAIh+8cq9rs1VYm3gkeOP2UwTgRptsqKpCC9dTXMVy11NobW17wzQQJen6SHdPy5cuj3A\/9zJG1PRWhL8paa72e7DHcTdW+UZHiah8vUWvDIufOA1jyrC9E8LeNrRickgn3F5j5FRXMJ0pZU3uCidrjT39U0BlREVsFLxgyVfC3CBdIq8SyaMLdGgq3KXj5ApdKCgmQQOYSKM7crrFnJJCfBFTUrqiBY8+hTBC\/Fhmzr37fWpv53b6hWGFfHygDUGzwUZuN6m+sVQpCEn3At76dRvtY32YVtaGx9VQfJ6q8ohAe7rEnWCzBvQHXKatAKY318G3Naz12ulKCuQr1b82SluOg5yfZQbhZlJxW3nh1wzKMlyy\/\/vprvKwJX4cF66KLLoqUw0P7eeedFzm3HsCt0CojRoyIUlxwPRPur27dulm7GvMYeeFOe8stt0TlgxUMnzvvvFNUUA+9jxv28sMnmb\/PqAYCTMBcWtd0wfKKuXBb06a25LC5WR5yyCGiIiAG2BtWRQIkEDQBKmBBE2V9JFBPAm4KGN68Z4I43fxS1Scs+r\/33nsFDx3WIAGpaq9Dhw6BVu0MAIKHvWQeiPw8FLqtq8M6FrdgLokOMlMsYEHPT6IczPxBKGCoC2vaUqGAYaPnyy+\/XFS0Tt3lzz\/\/XL+4cCowsHxZ17LhRQnWXrpJJtxfiVjAMAZsdo01oPgNQZAcN8FLC7j1ma59AwcO1FYjMEzmb9WtjfqkYc0oFHXztwRzCpfRs846K6pauh9GIWECCWQ8AbogZvwUsYP5RgAPG07LkQpTHTgGp9XGTwOIEpZKwQO\/2n9HsObnwQcf9KV8qZDbcuyxx9rWTCTaR1glghTrYnjU6yfyoVv7CKYRT1So63hZkr7+008\/JV02yIJBz0+yfbO67KEO\/J2qvdYSri5Rq5nfBhAtVe1LZ8vu5roG66jVbXbw4MGe7q6ZcH8511zaBuhygnlRG40LfjcRWMRpsXYpImrLBrn44ou1m6LaWN4tS6hpuOdhlbSK21zOmjVLvv7660g23AOHHXZY5JwHJEACmUmAFrDMnBf2Ko8JwAKGt7FffvllhILVvz+SWI8DRNTq0qWLYME61n3ggzYRYCJdAosAgnzEsgzgwQr9RnQvrHdBsIkhQ4ZoBQfKivWh0qnEhjmuzmo9jVXw4I437rCEJSJ+gmC4va1HWPIgrJW4Jyh\/EHAGyMFLDKzPTFQJMy1Uf9Qc3BGCcbz66quRCuGedsMNN0TOceB0P\/QKvoG82Xx\/4ffhlVde0a57cOf73\/\/+J++++64414tinKbAygm3Wyhw559\/vpmclm9YJdX+ZJG21SbxojZytoXjd1q\/EMAj0QA8kQZ4QAIkEBqB9D1thTZENkQC2UcAC7CtChjcybB2oXfv3oEM5j\/\/+Y92bYF7y9tvv63rPOecc7TVKZAGEqwEbk4HHXRQlPKFN9+HHnqojmIGhQsL6WHxchNnmOZkLHxu9SaTBgueU6BM9ejRw5kc8\/znn3+OeR0XsT4Kb\/ityidCdoMnJVgCbu7BixYtSlgBQ5lUCebd6rqG9ZMIQgFlBIJz7P9lCgLKqE3TzdOo71y4v7BuatSoUfqD4CRQZBClFArZjBkzotZwIg\/2IQRHWOTTJfi9QEAd63xBoTb36IN7Jc6t4uVKas3DYxIggfQTSK0\/UfrHxx6QQFYSgAXDKc43nc7riZy7ubI4w1gnUl9982LPKmeYaFjD4JKIcZ9xxhn6AdJL+YJ1yaqAoD\/pVMBgAXNaE\/1Ys5wc\/ShgcFVybtocL3CHsx2e+yOAB3KnJKNM+ZlXZzt+z3E\/DB8+3JbdGpDF+cCOTcyxAbOX5Nr9hb\/LP\/3pTzpIB9wO8RLqvvvuE7d1ZgjWkW5xWiet1k0oZtaAP3hJ5dzEOd39Z\/skQALuBKiAuXNhKgmklQD+IXWGt8ZDwsKFC+vdL7jY4M2vVXbZZRdBGOt0CMJBYxNmq6A\/eEPtd+0HHqKc4rX43pkvFedwAXK6IeJhLxHB2hu\/8+20uOGtPiV4ArCkOK1gcAlLRPCyINVRTZ0P7f\/3f\/8X6aLfvb8iBdRBtt5fzpcy1jGZx9gqA66GeGmB3x2rIC2R7SysZYM6PuGEE8S6uTT+tk0FHp4MVuHeX1YaPCaBzCZABSyz54e9y2MCznUbUFSwh019BA8TWCPgXIMCl7V0CQI9ONdkYOG804IUq39Y1+GUdCpg6Itz02pEZCsvL3d20\/Mca1CcbpVemZ0PyO+\/\/74kGqIfijkUXtT15z\/\/WbCfknMDXq\/28yUd6wqPPvpo23DHjRuX0EO61YJhqyjAE9N1zawSVjooE3PnzrVZmjHXe+21l5nN8ztb7i\/sh4cogVjTCmulU6HyHKC6AFfMSy+91JYFrohuL3dsmVJ8grWcCDJklddee02fWhUw\/F5y7y8rJR6TQGYToAKW2fPD3uUxAYRD3nPPPW0EsKB89OjRtrRETvCAMWXKFFsRBK8YOnSoLS3ME2dkObSN4CB+BYoWHoKd4uftt7NMkOdwq7RGP8RWAo888oivJhDYARZPv+LctBXlzXUifuuAuxXW4sHtExvV\/utf\/4qy9vitK5fzOR+GsSed04LrNX480N94441elwNNd7OCWfeVQmN+LSbZcn9BQcbfGF5AwDVv9uzZkkgkT2eQFUR9RVTBZKWsrCyqaDK\/S865hAKG\/RDnzZsXqR97mTk3vo9c5AEJkEDGEaAClnFTwg6RwGYCeJhAKHZn6Hc8wGGNRyL\/kMPideutt+p9cZx8H3jggZhrQJz5gz7v2bNnVJUIrexXECUMb76d4td65CwX1HmnTp302jVrfdgcNp5VCdZArMdzhrK31uM83nvvvbVl05r+8MMP69Da1jSvY\/AeO3as7TI2c3XuH2XLkKcniLrp5IK\/SbgWxpOnnnpKB8GIly+I63Bds67tghviyy+\/HKkavyvOMOeRi46DbLm\/dtttN+nsiEB68803O0bjfWoGJDJzoC43Jcq8Hu8bL2Ccv9\/JhPWHRc+6GTl+Q3AvWcWvMm0tw2MSIIH0EaAClj72bJkE4hLAgupLLrkkKh+CaGCdGB6a4z34vf766zp6ICwyTjGVOWd6mOd464zQ8laBu16scPTIC8vXddddJ27jwvVEFBjkT4VcddVVtodgWPvgmghrk5uLJBQhuE2Zm8Mm0qcxY8bYIkTC3RSuhC+++GLMavAmHZu+Ou8jRIGjRBNAUAqnJRObhcNaHWvNHv5Wzz777OgKU5TidF1DkBtYhEzBvZHIfmTZcn85oxbCknv\/\/febw\/b8hvLltDqffvrpnvn9XnBuPfH000\/7LRrJh5dxVgULllS4KJuCtYnO\/d\/Ma\/wmARLITAJUwDJzXtgrEogQuOOOO1zdyeD6hNDxeIjC22487D\/xxBMC5ezaa6\/V4ZNhXTrqqKO0u0qkwi0HsLIgXyaI86EJLnTYHBYBA5zRDKEoPPnkkzJo0CC56aabItfxkGIVrGlKtyBgw2233WbrBh6esJYPiieUMSjYJ554olZCBwwYoF0AzQJWF0akOcdo5sN3hw4dtEJqTYNLIdxLUT\/clsyIfbAO4mEcShb2VIN7pFXQJzygU9wJYN7+pvZosgo2w9111131Q7wZvAHBNt544w1tncTfqrn20mkVsdYT5HGsyKZOt7Z47WbL\/YXNlDt27GgbDu5zKMgTJ04URCM1X37ghcjnn3+uPQpg8bUG3MDebpiz+opz\/Rws09hOA+u14NpptUrGagv3m\/Xv3+oBgb9xP5tNx6qf10iABEImoB5uKCRAAllAQLkjGurBzVA\/EfX+KIXHUA+DcUfdq1cvW1tqrVXcMtYMau8hW3ll2bJejhyrACOGisJoy2uOU7kAGUqRNFCXUjYNZYGIyqfC1BvKxdKWrtymIvU7D+o7LvUAZWtLKb7OJmznSlG05TfH5vWtHrQMzLeyctrKKWXcVq\/zRD2UGUrZspVxtqFC+Ruo35lunqsHc0M9oDqrrve5Ui5tbSorkmedYc+PZ0diXFABVQz1csM2JpMhvlXkOtdruC\/Veh3bNbUvlWtLiTBzqwDzqKKp2tpC31q2bGkoJdytSMy0sO4v5b5r67N6EROzX86LSgE2lPulrQ7r3ChlxVCWKc\/r+Bv54osvnNVGzhOZF6UQeraDPimraKTeeAfK\/dW1LrVnZLyivE4CJJBhBGgBU7+AFBLIBgJ4G4vw8ViDkqxgU88PPvhAW5YSiTKYbHt+y+Ht7QsvvBC1tgblYa1B9DZsJgu3ROtbakQ6wx5Hjz76qLb0WdubNm1aQgvwrWWDPkZADFhCsKYknuDtPdxGrRYTs4zTImamm98Ifw+OcC31yrthw4aI1dAsh2+sdYH14PHHH7e9abfm4fEfBBAaHEFxvNwKKyoq\/si85QguxSjjNTdRBeqZAIuJ01KHKmExSaYP2XJ\/gTOs57DauQmsR06XWzMfIkjCHTGRCIpmWbdvrEHDvmNe8u2333pdikp3s1rCmjZw4MCovEwgARLIbAJUwDJ7ftg7ErARgFvYe++9p93HRo0aJc71BbbMW07w0IR\/oLEIX71pj\/kw4FY+rDS46mCdCtZ\/xdv\/C3mRD3swYSNZCNwtra5H6mWXODedDWssbu0gShkUSYQhh\/sRHpywdgMPwlhgj+tYr4I85noO02XNrM\/PfCMvXEsRzRD3CNqIJVC8sA8S1jFhXQnWOFH8EYAr4UMPPaSDwMDV1+oiZq0B7qb\/+Mc\/9EsEuLaFKU7XNbTt9iCfSJ+y4f469NBD9e8DXP78vPiA++\/dd98tcCXFi6qgBIo61nRiaw38FjsFruR+5bjjjtPh8q35rWvDrOk8JgESyGwCBbDIZXYX2TsSIAEvAniTu3jxYr2uAWsbYCHC2iesC4OSgg82dM4ka5fXWKzpsB5Agfj++++1YoC1NAgHDYsXIrJZI4JZy+XaMcJKW9eyYQ0LHiwTEax3wSbQeLBcsWKFDjWPtWkIfGJ+\/Cp2ibSbj3mxQS7W1uHexbo6zF\/Xrl31erpkLE7ZwDAb7i9YzbH+EfODD47xG4P5wd+Ccm8O5TfF3OYBf9MIkoJIqdtss42rYuY293ghg99AcyNv\/K7jd9+5ObhbWaaRAAlkFgEqYJk1H+wNCZAACWgCcL3E23OrzJgxQ\/CmnkICJJB\/BBBIx7oR+JFHHqmD6+QfCY6YBLKfQHH2D4EjIAESIIHMI4D9yf7zn\/9ELJEI9a4CjfjuKNawWQXuS257plnz8JgESCB3CSD6q1WCCJNvrY\/HJEAC4RGgAhYea7ZEAiSQRwTgBoo1d\/hApkyZIu+8845vAs49ibCOL1fd2HxDYUYSyFMCcJtEIB9T4LqIdaMUEiCB7CTAIBzZOW\/sNQmQQIYTQJANq3z44YeCjZb9CN50Y72XVYYNG2Y95TEJkECeEIA7MgLqYA9BU84991wGzDFh8JsEspAA14Bl4aSxyyRAAplPAAFSsGAem72agiiNav8rwaavbrJu3TpR+3\/pKIYIbmBK3759Re1LRAuYCYTfJJCjBObNmydr1qyR7t27y\/r16\/VG0Q888IDgBY4pCOCBYCLNmzc3k\/hNAiSQZQTogphlE8bukgAJZAcB7G2GPcoOOuigyN5liFiGKIZQqPbcc08dBa1p06Y6eiUeqOBiBCXMKnA7HD9+PJUvKxQek0COEsDaz3hru7ANAJWvHL0BOKy8IUALWN5MNQdKAiSQDgL33HOP3uA4mbZhQcPGyoMHD06mOMuQAAlkGYHJkyfLgQce6NlrvLiZOnWqYA86CgmQQPYS4F9w9s4de04CJJAFBC666CK9Cfauu+7qu7fYDPnYY4+VmTNnUvnyTY0ZSSD7CcTa4xD7lWFTZypf2T\/PHAEJ0ALGe4AESIAEQiKASIjPPvus\/Pjjj\/LTTz\/pTbSx1gtuhh06dBCsETviiCPkpJNO4uaqIc0JmyGBTCKAgBtDhw7VL1\/wG4HNlrt16yZnnnmmjBw5MmpvwEzqO\/tCAiTgnwAVMP+smJMESIAEAiVQXV0tGzZskJYtWwZaLysjARLIfgIIwtGoUSNGO8z+qeQISCCKABWwKCRMIAESIAESIAESIAESIAESIIHUEOAasNRwZa0kQAIkQAIkQAIkQAIkQAIkEEWAClgUEiaQAAmQAAmQAAmQAAmQAAmQQGoIUAFLDVfWSgIkQAIkQAIkQAIkQAIkQAJRBKiARSFhAgmQAAmQAAmQAAmQAAmQAAmkhgAVsNRwZa0kQAIkQAIkQAIkQAIkQAIkEEWAClgUEiaQAAmQAAmQAAmQAAmQAAmQQGoIUAFLDVfWSgIkQAIkQAIkQAIkQAIkQAJRBKiARSFhAgmQAAmQAAmQAAmQAAmQAAmkhgAVsNRwZa0kQAIkQAIkQAIkQAIkQAIkEEWAClgUEiaQAAmQAAmQAAmQAAmQAAmQQGoIUAFLDVfWSgIkQAIkQAIkQAIkQAIkQAJRBKiARSFhAgmQAAmQAAmQAAmQAAmQAAmkhgAVsNRwZa0kQAIkQAIkQAIkQAIkQAIkEEWAClgUEiaQAAmQAAmQAAmQAAmQAAmQQGoIUAFLDVfWSgIkQAIkQAIkQAIkQAIkQAJRBKiARSFhAgmQAAmQAAmQAAmQAAmQAAmkhgAVsNRwZa0kQAIkQAIkQAIkQAIkQAIkEEWAClgUEiaQAAmQAAmQAAmQAAmQAAmQQGoIUAFLDVfWSgIkQAIkQAIkQAIkQAIkQAJRBKiARSFhAgmQAAmQAAmQAAmQAAmQAAmkhgAVsNRwZa0kQAIkQAIkQAIkQAIkQAIkEEWAClgUEiaQAAmQAAmQAAmQAAmQAAmQQGoIUAFLDVfWSgIkQAIkQAIkQAIkQAIkQAJRBIqjUphAAiSQdgJvvPGGrF69OtKPQYMGSbdu3SLn2XjwwgsvSG1tbaTrBx10kLRp0yZyzoPUEVi5cqUsWLBAf5YvXy7bb7+9dO\/eXd9TZWVlgTa8ZMkSmT9\/vm7r999\/lw4dOkjHjh1l9913l9LS0kDbslZWXV0tY8aMkU2bNknz5s3loosusl6u13G6xpRMp8Oa62xikgxHliEBEiCBlBIwKCRAAhlHYMCAAYb6w498HnnkkYzrY6IdUg\/6kfFgbB9\/\/HGiVTB\/AgRWrFhhnHPOOUaLFi1s3K33VWFhobHDDjsYY8eONZRynEDt0Vlfe+01o2fPnp5ttWzZ0jjrrLOMn376KbpwACk33HBDpG2l8AVQo2Gke0x+BxHmXGcLE7\/smI8ESIAE0kFA0tEo2yQBEohNgApYbD686k2gsrLSuOOOOwxlBYooJFaly+t44MCBxueff+5dsceVRYsWGXvttZfvttCv559\/3qO25JJnzpxpNGjQINKH+ipgmTAmPyTCnOtsYeKHG\/OQAAmQQLoJcA2YehqhkAAJkEAuEFD\/oMgRRxwhl19+uaxduzahIU2fPl27CT7++OO+y8HF8OCDD5Zp06b5LoN+DRs2TJ544gnfZWJl\/P777+WQQw7Rroex8vm9lglj8tPXMOc6W5j44cY8JEACJJAJBKiAZcIssA8kQAIkEAABZfmSt99+21aTsgxphWzixImycOFC2bhxo8yYMUPGjx8ve+yxhy1vXV2dXHDBBTJv3jxbuttJVVWVHHnkkfLtt9\/aLkMZGjdunF4HhvVmEyZMkJEjR0pxsX3J8dlnny1Tp061lU30RLkzyn777SdYjxSEZMKY\/I4jrLnOJiZ+2TEfCZAACaSdQLpNcGyfBEggmsCjjz5q3HjjjZHPl19+GZ0py1K4Biy1E\/bJJ58YSsmJuOGpf1yM3XbbzVAKkmfDSuEyHn74YZv7HsrtvPPOhgpm4VkOF1TAC1tbKHfJJZcYqNNNsHZIBeGwlenVq1fSa8+U1c3YZpttbPWhD\/gk64KY7jG5cXNLC3Ous4WJGyemkQAJkECmEuAasEydGfaLBHKMABWw1E6ocx1W69atjd9++81Xo7fffnuUIgPFzEuw9mjrrbe2lbn00ku9skfS33nnHcN5HzzzzDOR634P7rrrrihl01S+klXA0j0mv2NHvrDmOpuYJMKPeUmABEgg3QSogKV7Btg+CeQJAeeDN6MgBjfxyq3QKCkpsSlETz75pO8GEAER1jKrEnPKKad4loeF1pq3VatWhlrb5ZnfeuHCCy+0le3Xr5\/1csxj5RppKBdHW3lrP8zjZCxg6RpTzAG7XAxzrrOFiQsmJpEACZBARhPgGjD1LzaFBEiABLKZgFJmBftgmaKUXRkxYoR5GvdbhaPXgSysGbFOzEvUg7nt0hlnnCHNmjWzpXmdXHbZZYL2TPn666\/1ejHz3O1bhVmXc889V\/r06SPYI88qKry9jBo1ypqU1HHYY0qqk6pQmHOdLUySZclyJEACJJAuAvZV0enqBdslARJIGYHZs2fr4AuLFy\/WgRDat28vKsy93hw3iEbNjV9\/+OEHWb9+vWy77bb6QRmb\/aZCfv31V8GYEOAB7SlXO8GYlAVHmjRpkoomM77O999\/39ZHbLJsVXJsFz1OdtppJ9sVBNdAAAbn5skI4jFr1ixb3r\/85S+281gn2Ji5f\/\/+OhCIme\/ll1+Wq6++2jyN+j722GNdA3bgPn7ppZdEhaEXq7JQUFAQVUeshHSMKVZ\/Yl0La66ziUksXrxGAiRAAplIgApYJs4K+5T3BPBA+80330Q43HbbbXLyySdHzs0DRICbP3++Pm3YsKEsWLBAH+PBWa2TkaeeeiqSZpYxv1WgBTn\/\/PO1pSTRB1bU8cEHHwgisb355ptwZTarjXzvs88+cssttwi+6ysVFRXywAMP6Mh9sJi4CaL9DRkyRC666CI56KCD3LJE0tQGxfL6669HznEwfPhw+ec\/\/2lL8zp55ZVXdLRA6\/XDDz9c1Lopa1Jox1BoEL0QSjYiAu66664Jt62CbtjK1NTUSHl5eZQChnD1ymUxkrdRo0ay5557Rs79HGCerBa2jz76KGYxa3vICKXw2muvlSuuuEK\/VIACVh9Jx5iS7W9Yc51NTJJlyXIkQAIkkDYCGe0gyc6RQJ4S8LsRM6LIqR8P\/VEPwpqWUlAM5aoVSTeve32rUOTG6tWrfZPesGGDcdhhh\/mqH5vjPvfcc7ruZNeA\/fe\/\/zWUVc1Xe+YYDzzwQGPZsmWeY0Jwinbt2tnqVBYjw8+6tF9++cXAmiezLXwjGp+yBHq2lw0X\/vGPf9jGpBR61247A3ZgA+dERb0YsLXVqVOnmFUoBU\/nx\/2k3A0NFU7fll9ZwRKqz1ZYnaRjTM4+hHnuZ67zjUmY\/NkWCZAACfzhiK+eIigkQALZTQCb0u67774yZ84c3wNRIa31Zrrq5zBumVWrVul9l7CnlB+BVQWWu5tuusnVShavDli9sNcU3A4TEeyFtfvuu3vuZ9W2bVu9V5W1TuyBddppp2m3O2u69Rh5sLZKKayRZLj6YU8tuEJms0yZMsXWfbj3uYnaEsGW3LlzZ9u5nxOlcNmyKaVWlGJvS7OeYE0b1oDBzfWRRx6RZNq01uc8TseYnH0I89zPXOcbkzD5sy0SIAESoALGe4AEcoQAXMaUZUqgJEHgVnjMMcdoN0EELsBamTPPPFO6desWNeLPPvtMJk+eHJXuTIAy9Pnnn9uSVThyuf766+Wtt96SpUuXynvvvSe33nqrKOtcJN91110XpdjEU\/ieffZZ7SIJpccqRx11lKjQ5XrdDxShDz\/8ULtbOt3gsEnv0UcfbQtOYa0HGwZjM2CrzJ07V2644QZrku1Y7Ymkx2dNhCvc4MGDrUlZd\/zvf\/9bvvjiC1u\/wc5NEBDDKskoQ04FDPeC6T5rrds8VlZQ7YKK9YWpkHSMKRXj8FOn37nOJyZ+uDEPCZAACQRKgEZAEiCBzCOQjAui+mGIuGGhfCx3utNPPz2S1yyn1jDFBKGsPFFlELpcrTtyLQdXRaUARpUx28NGul6CcOONGze2ld1qq60MFazBq4ihFFBDRdizlUFb99xzj2cZtcbJ6NGjh60MNjNW61+iymAzbGeo9z\/96U+63ajMWZSAvZ66dOliYwD2Spl2HYUK1mHLi416E5V169bZ6sA8qeASiVYTyV9fF8RMHFNkcAEeJDLX+cIkQLysigRIgAR8E6AFTP3LTyGBXCIAVzi4GKm1XZ7DQrCIAw44wHZ90qRJ2oJlS9xygiAYl19+ue3SLrvsogNxIKqdm6iHeMHb9lNPPdXtcsy0q666ShCFzRSlFOlgH8cdd5yZFPVdVFSkrX2PP\/647Rqsc863+WYGBC6B+6BSrMwkgSURfbaGdUcwimHDhtnSwBll0W42C4KW\/Pjjj7YhqE2VdWRJW+KWE6U82ZIRhCNRAXenWOfbeS3V57k4Jjdmicx1vjBx48Q0EiABEkg1ASpgqSbM+kkgZAJw\/1NBImK2CoXGGfEPrn7K8uRaDu6FiLBnFbjeYW1OLIEb5M033xwVSS9WGazzee2112xZEKIcURv9iLLu6fVfZl61QbBcc8015mnUN+q98cYbbekIs44okqZcfPHFkWiTZpra6FiH3DfPs\/H7vvvui4rciL22nMq2dWzgaRU3Zcp63e0Y959TcU2nApaLY3JyT3Su84GJkxHPSYAESCAsAlTAwiLNdkggBAIdO3YUKCB+BEEWnHs8eVmKYB2zSt++fQVh1\/0I1oj9\/e9\/95NV58HaL+u6r+bNm8fcI8qtYljQrPL000\/b6rRewzEUDuVOaEuGUqai7WnLm3WPKWRC+H6\/47dVmkEnjz32mA7Zb+0SNlN+9dVXJZZVy2kZSUYBQ5tO5R1WxnRJLo7JyjKZuc51JlY+PCYBEiCBsAlQAQubONsjgRQS2HHHHX1vwAsrhNNS5twLyuwq9vqyChSqRPYOu\/DCC63FYx5PnTrVdh3RDK0ugraLHifOgBzYFw2R9rwEkQwR2APKnilwu0RURKcLJTYsxv5n2SwPPfSQDsiinNUjw4AyPmHCBNcgLZFM6sC5J1ci94G1nmTLWesI6jgXx2SySXauc5mJyYbfJEACJJAuAlTA0kWe7ZJACghst912CdXatGlTW343BWz58uVR7ofbb7+9rVy8k65du0a5nLmVwUMfIjJaJdZaNms+6zHWZzkj7cWKsoeyYIeHVasgoqPaTyyS1KRJE3nxxRejLIeRDFlwMHr0aB3S3ap8YRNrWL7ibWCN4YGBVVRgB+up72NnOavy67uSgDLm4piApj5znatMArplWA0JkAAJ1ItAcb1KszAJkEBGEUhUAcODt1WsD+Vmutq02DyMfCcaDhzrfeCKGG8\/L4TQd64FgvsULDOJitOdEgqYM\/CIs86TTjpJsMcZlCw3GTt2rMDKmI2CoCLYhmDcuHG27pvKF8Ly+xE8mFvXBzkVKT91INAJPlaB+2O6JKwxITiO05033pgxL\/HuW2cdQcx1WEycfec5CZAACeQDASpg+TDLHGPeEPCKSFgfAEEoYGgf69PiKWC\/\/\/57VFeXLFki+NRX4lnAzPoRIVKFyI9yWTzxxBNl+PDhZras+gZX7AmnQr3b+t2iRQv5v\/\/7PxkyZIgtPdaJ0zICV81ExU1pyyQLWKrGhD301LYICeGCNTcRBSyouc7FeU4IPDOTAAmQQAoJUAFLIVxWTQJhE3BGlguifWx2bBWs3VF7clmTfB37sZqtWbPGV13JZMLGzH4EwSGcrpkoN3v2bIHi4Awe4afOdOZBVElYUebPn2\/rBhRirO3r3bu3LT3eiVNRWrlyZbwiUded1klkSKcFLFfGFORc5wqTqJuPCSRAAiSQAQSogGXAJLALJJDJBGAlsQrcFPHQnagSZt1Xy1qf9bht27bWU3185JFHBvJwPnDgwKi63RL+8Y9\/yLfffht16ZtvvpErrrhCEM47W+TTTz+VI444ImoftP79+8sbb7whyVhM4YIJS44pP\/\/8s3no+9utDCw96ZJcGFPQc50LTNJ1P7FdEiABEohHgApYPEK8TgJ5TqB9+\/ZRBBYtWpSwAoYy8QRr2LAmyRoMBOuW\/ASHiFe3n+uTJ0+W+++\/3zPrAw88IIceeqgceOCBnnky5QKCapx88snidKf7y1\/+Ii+\/\/LKrlc9P350WMzdlKl49zjKdO3eOisgZr44gr4c1Jig1Rx11VEJdR5l4koq5DotJvLHxOgmQAAnkIgEqYLk4qxwTCQRIAMEznAJlatddd3Umxzx3PnS7ZYYL5Q477CBz586NXP7qq69CUcDgavm3v\/1NrIFIEIER57AuQHCMEPxff\/21pNNiE4HjcfDcc8\/JKaecErX32ahRo+TBBx8UbEGQrPTq1ctWFJZBcEkkrPycOXNsdQwaNMh2HvZJWGM69thjBZ8gJVVzHRaTIFmwLhIgARLIFgIMQ58tM8V+kkCaCEDRcFrBfvzxx4R6g8iGiHDoR5xv\/GfMmOGnWL3znHHGGbZgH1jr9eSTT8q\/\/vUvbZUzG0BAECgymSr\/\/ve\/tSJp3cwa+5yNGTNGHnnkkXopXxjzzjvvbBs63FGhhCUizmAg6VbAsnVMqZzrbGWSyH3IvCRAAiSQLgJUwNJFnu2SQJYQgGXj6KOPtvUWocydG7XaMjhO4CLlV5wKGB7WrWHP\/dSDyI3YZBp1\/fnPf5aRI0eKc4Nnaz1PPfWUvPLKK9Ykuemmm6R79+4CS8C1115ru4a8KJNp8s4778iwYcNscwNrF6wkl156aSDdRTAVp8L01ltv+a4bCtv06dNt+ZPZ681WQT1PsnFMqZ7rbGRSz9uAxUmABEggNAJUwEJDzYZIIHsJON2mvvvuOxk\/fryvAWG\/pxtvvNFXXmRC0Air4IH9mmuusSbFPb7zzjsF4bgReh4PqrBiOa14ZiULFy6U888\/3zzV37vvvrtcfPHFkTQE5thpp50i5zhAGZTNFMGG2djHzBrsBMoXwswPHTo00G7+9a9\/tdWHdXPWdXu2i44ThGG3Ku9Ya+RU6BxFQjnNpjGFNdfZxCSUm4SNkAAJkEBABKiABQSS1ZBALhPAPlHdunWzDRFKlXPTZFuGLSewFH3\/\/fdul1zT9t57b23FsV7E3lxOq4n1uvV41qxZgg2TrYIw7M7+4zoUAQSqWL9+fSS76XoItz1ToMjAHbGkpMRM0mWwL5hVmYhcTMPBiBEjxLlnG9wODzvssMB7c8IJJ9jcMrG+b\/To0XHbwRwikIlVEFkykfVj1rJBHmfTmMKa62xiEuS9wLpIgARIIOUE1OJpCgmQQIYRGDBggKH++CMftXbHtYfKPS6SB\/mVa6BrPq\/EPn362Mo\/8cQTXlmNKVOm2PKivX79+hlqPZhnmYceeshQSktUOZRVmx17llu8eLGhNoK1lWvZsqXxwgsveJbBBWWZM9q1a2crh7befvtt13LKzTAq7x133OGaF4nXXXddVH7UEUtUFEdDWc9sH+VSGatIwtdUSPmofh1++OEG2qnPRymXnn256qqrotpUVkPP\/B999JGh9paylVFRLw1lsfMs4\/fCSy+9ZKu3U6dOfova8mXSmGwds5yEPdfZwMSCh4ckQAIkkBUEEL2KQgIkkGEEMlEBAyIVJdD2oAvlRgXpMO69915DWTcM5W5oKJdBY9KkSYZye7PlVRYl23ksBQxtQRFC\/c6PeitvKLc6Q22sjGyGCrNuqKiEhnIJNJT1Kir\/JZdcovM5\/6f2sjKUZcuWX7ke6jE485rnys3O6Nu3r60M6kBdXnLAAQfY8mM8KuKiV\/ak0tUaqqg2nNySOVfBNTz7o6yfBhQdZ73HHHOMoYJDGCroilauPv74Y+OGG24wGjdubMsLbmrtmGf9iVwISgHLpDF5jT\/suc4GJl6smE4CJEACmUqAClimzgz7ldcEMlUBKy8vN9Q+RrYHaesDeMOGDV2vKbdC4+CDD7Zdw4N5LIGyc+KJJ9rKWNvCMaxkyn3NM48KGW+oaIBRzeChUgXosJWD8qbC30fldSZ8+eWXUYob6kKdbpJqBUytQ7ONw8moPuexFDCMFSzURt2u7UPhdipd1r4kaq11Y2umBaWAZdKYzLFZv9M115kyz1YWPCYBEiCBbCbwxyIH9S8jhQRIgARiEVAKlo4WePbZZ7tmc276i0wIXoGogaWlpa5lvBKx3kq5HOoAHl5lN2zYoPegctaBdVwIovH444+7ri\/Ctfnz59uKYU1bjx49bGluJwMHDpTLL7\/cdgl1KUubLS2sk0RDwAfZL7DA5tXKEhZVLcLgK6U0Kh33kLKY6v3Uoi5mQEImjyldc53JTDLglmEXSIAESCBhAlTAEkbGAiSQ3wQQnEKt7ZLPPvtMlDXMVcEBIWUZEUQPxCbGW221VdLQEAIe0Qyx91a8zY+heCE64Q8\/\/CB33XWXYGNnp0ycOFEeffRRWzKi8FmjHtouupyotWA6PL31EvbYQt1hS7oeys1x7rLLLvLtt9\/quW7Tpo2ZHPWNuTj11FP1XF5wwQVR1zMpIVPHlM65zlQmmXTfsC8kQAIk4JdAAcx3fjMzHwmQAAk4CSAC3uzZs\/WDNcJjqyAY0rVrV73\/lpflylmH33NYVRBJT635khUrVuhQ8wgv36VLl8hHub35rS7UfI899phWIhHxr7Ky0hZFMNSOpLAxRITEfmtz5syRZcuW6ZD4iD6JT8+ePeuliKew2zGrzsUxxRywj4tk4gMSs5AACZBADAJUwGLA4SUSIAESCIoALHk333yztuJhbzMKCZAACZAACZBAfhKgC2J+zjtHTQIkEDIBFcZft6gCdoTcMpsjARIgARIgARLIJAJUwDJpNtgXEiCBnCQwYcIE+eSTT\/TYhg0blpNj5KBIgARIgARIgAT8EaAC5o8Tc5EACZBAUgTGjBkjak80XRZr1YYPH55UPSxEAiRAAiRAAiSQGwSogOXGPHIUJEACGUpA7XemQ+UjOMl\/\/\/tfad68eYb2lN0iARIgARIgARIIg0BxGI2wDRIgARLIVwJjx46Vzp07y+jRo3Vo\/nzlwHGTAAmQAAmQAAlsJsAoiLwTSIAESIAESIAESIAESIAESCAkAnRBDAk0myEBEiABEiABEiABEiABEiABKmC8B0iABEiABEiABEiABEiABEggJAJUwEICzWZIgARIgARIgARIgARIgARIgAoY7wESIAESIAESIAESIAESIAESCIkAFbCQQLMZEiABEiABEiABEiABEiABEqACxnuABEiABEiABEiABEiABEiABEIiQAUsJNBshgRIgARIgARIgARIgARIgASogPEeIAESIAESIAESIAESIAESIIGQCFABCwk0myEBEiABEiABEiABEiABEiABKmC8B0iABEiABEiABEiABEiABEggJAJUwEICzWZIgARIgARIgARIgARIgARIgAoY7wESIAESIAESIAFv9RhrAABAAElEQVQSIAESIAESCIkAFbCQQLMZEiABEiABEiABEiABEiABEqACxnuABEiABEiABEiABEiABEiABEIiQAUsJNBshgRIgARIgARIgARIgARIgASogPEeIAESIAESIAESIAESIAESIIGQCFABCwk0myEBEiABEiABEiABEiABEiABKmC8B0iABEiABEiABEiABEiABEggJAJUwEICzWZIgARIgARIgARIgARIgARIgAoY7wESIAESIAESIAESIAESIAESCIkAFbCQQLMZEiABEiABEiABEiABEiABEqACxnuABEiABEiABEiABEiABEiABEIiQAUsJNBshgRIgARIgARIgARIgARIgASogPEeIAESIAESIAESIAESIAESIIGQCBSH1A6bIQESIIGcJWAYxuaxqS9D\/QeJSotk0ZkieWoqa6WmskakTpXEJfU\/XZ3+Vsd1ujJ7+pa8yIi8ui11UFBYKO17bqXr5v9IgARIgARIgAQykwAVsMycF\/aKBEggwwjU1NRIZUUlNCwtEQWrnv2sXl8tG3+rqGctm4sXFEFbo5AACZAACZAACWQyASpgmTw77BsJkEDGENCWKWV5Cl4KgqsyFd0LrnesiQRIgARIgARIQBHgGjDeBiRAAiSQKwSogOXKTHIcJEACJEACOUyAClgOTy6HRgIkkPkEgnJlxEjVirDMHzB7SAIkQAIkQAJ5ToAKWJ7fABw+CZBAmgkE6dZI\/SvNk8nmSYAESIAESCA+ASpg8RkxBwmQAAmkjEBdLbWmlMFlxSRAAiRAAiSQgQSogGXgpLBLJEAC+UOgtoaRC\/NntjlSEiABEiABEmAQDt4DJEACJJBWArVVag+wACXINWUBdotVkQAJkAAJkAAJbCFACxhvBRIgARLwQyBFnoJ11Smq2M+YmIcESIAESIAESCB0AlTAQkfOBkmABEgghQSoz6UQLqsmARIgARIggfoToAJWf4asgQRIgAQyhgBdEDNmKtgREiABEiABEnAlUOyaykQSIAESyFACUDDq8J9Rqz51Uqu\/Nx8jrVal6WtSq3aaL5K2Ddtn6EjYLRIgARIgARIggXwkQAUsH2edYyaBLCPwe9Uqmb92jlauoH75lYZFjfNPAaMLot\/bg\/lIgARIgARIIC0EqIClBTsbJQES8EsAFq4f1s2TGiPYaIF+28+2fIZQA8u2OWN\/SYAESIAE8osA14Dl13xztCSQdQQWbfhBquoqk+p3QVKlsrwQ9a8sn8DM7\/769euloKBAf6666qq0dPiZZ56J9GHGjBlp6QMbJQESIIFkCVABS5Ycy5EACaScwPrqtbK0\/JeUt8MGSIAESIAESIAESCAsAnRBDIs02yEBEkiIAAJsfL9ubkJlojLnoQlMxSihkEBKCcD6VVZWptsoLuZjREphs3ISIIGcJMBfzpycVg6KBLKfwJLyn6W8ZmM9B0INrJ4AWZwEogg0adJEKioqotKZQAIkQAIk4I8AXRD9cWIuEiCBEAlU1VbKLxsW1rvFINUvWOQoJEACJEACJEACJFBfArSA1Zcgy5MACQROYOH6BXqvr\/pXHIwKhr3Hqquq69+dEGqgC2IIkPO8ibq6Ovnyyy81hQ4dOsi2224bIfLzzz\/LsmXLpFmzZtKjRw+d\/ttvv8knn3wiM2fOlO2220523nln6dOnjxQWxn8H\/Omnn+q2Vq5cKQMHDpS99tpLWrVqFWkv3sHatWtl1qxZ+oPjfv36yYABA6RTp06uRb\/99lvZsGGDvta5c2fZaqutXPP99NNPgnFBOnbsKFtvvbVrPiaSAAmQgBsBKmBuVJhGAiSQNgJrqlbLqqrNDzb17UQQ6heUr4qNFYLvlAg6GWjVgVaWkiGz0uwmsHHjRhk0aJAexJVXXim33nprZEB333233HfffTJ48GCZPHmynHrqqfLcc89FrpsHe++9t7z44ouyzTbbmEm27++++07+9re\/CRQwq0Bpu+uuu+IqYfh7RV+uvvpqqaqqslahj4cNGyYPPfSQtGjRwnYNiuUpp5yi06AofvbZZ+Jc57Z48WKtDK5evVratGmjFUtbJTwhARIggTgE4r9+ilMBL5MACZBAUATg5vfj+u+Cqk5UnOqE6irfUC4b1m+QDes2fyorKqV8Y7nU1tYmVE8imRPsYvyqqX\/FZ8QcKScAJe3II4\/UylfTpk1ljz32kF122SVi9froo49k1113lcrK6C0mvv76a23pMpWv7t27y0knnSRQ2kpKSuSiiy6S22+\/3XMMWJ92wAEHyKWXXqqVr3bt2skRRxwhw4cPl169eulyzz\/\/vPTv31+g6FllxIgRcvzxx+ukr776SsaMGWO9LLD+IQ+UL8iTTz7pqUTaCvKEBEiABCwEqIBZYPCQBEggvQRWVv4mFbXlgXUiMfVL9MOVUae2MlZvz\/Gp3lQtdbXZtfaL+ldgtw8rqgcBWJLefPNNOe+88wQWo48\/\/li++OIL7bYHyxJk6dKl8sILL9hawd\/dGWecIatWrdKWpwcffFDmzZunFbmpU6cK9vzq2rWrwFXQS6A0vfvuu\/ryWWedJT\/88IO8\/vrrgr3DvvnmG91m48aNBe6S6J9THn300YhSdcMNN+j2zTx33nlnpO4LL7xQDjvsMPMSv0mABEjANwEqYL5RMSMJkECqCdQaNQE3kagKFnDzPqpTz5vBSuAVBts91pY\/BIYMGSL333+\/wAJmSuvWreWVV14xT+U\/\/\/lP5BgHUJzg9geBcnTOOefoY\/N\/PXv2lEmTJkUsaWa6+f3LL79ErGMHH3ywjB07VqBsWeXEE0+URx55RCfBTRLKmVVatmwpTz\/9tN7oGe6Lp59+un4hA+Xvmmuu0VmhRMaywlnr4zEJkAAJOAlQAXMS4TkJkEDeElB2r\/DHnoYmwx8kW8xHApdddpnrsBHcAkE6ICtWrLDlmT59uj7HuqtLLrnEds082XHHHSNugmaa+Q3Fqbx8sxX9xhtvNJOjvuHSCNdECMo4Zf\/999eujkifNm2aPPDAA3LyySdLdXW1VignTJggDRo0cBbjOQmQAAn4IkAFzBcmZiIBEshGAgWS+RawoLnSABY0UdaXLIEuXbp4FoUSBoFCYxVELIQgWqJXgA5cxxovN1mwYIFOxkbRqOP33393\/axZs0ZHYkRms4yzPgQX6du3r06+4IILIm6PDz\/8sHaDdObnOQmQAAn4JcAoiH5JMR8JkEAIBGgOCgEymyCBUAh4hXpH4w0bNtR9QFALq5gKmDW0vfW6eYzQ724yf\/58nYzgHl4h5J3lsEYMa88KHBFxSktLZfz48TpYiBlJERESYT2jkAAJkEB9CNACVh96LEsCJBAogbSrX2nvQAA4aQILACKrCIIArFCJCpQhSLy9vtq3b+9a9a+\/\/uqaHisRUROxz5ibtG3bVpo0aRK5tH79+sgxD0iABEggWQJUwJIlx3IkQAIkEASBgL0kqX8FMSmsI10EEKQDsmTJkphdQJRENzEtZwjWsW7dOt8f7OflJtjHzNrWq6++KuPGjXPLyjQSIAES8E2ACphvVMxIAiSQcgIBaw\/ZsAasoDBgDSzlk8QGSCB1BEzXwkWLFsVsxOt6t27ddDms68KeYYjA6OfjdD9EJdioGaH0IVdddZX069dPH2M92I8\/\/qiP+T8SIAESSIYAFbBkqLEMCZBASggE7gGYBboN9h0LVAJWYgPtGysjgTgEDjroIJ1j2bJlgs2aveStt95yvdSjRw+dXlNTI2+88YZrHiRi7dm+++4rgwcPFihUTsHeY2YUxwEDBsj111+vLV9FRUWyYcMGHRExlRu0O\/vDcxIggdwiQAUst+aToyEBEsg2AgHrX9k2fPaXBKwEhg4dKgh+AcGeW84gHUj\/+uuv5eWXX8ZhlJx22mmREPcXX3yxbNy4MSoPEuBG+P7778uHH34YFU4ekRkRaANrw2BFe\/LJJ\/X3wIED5fLLL9f1ffLJJ4IoiRQSIAESSIYAFbBkqLEMCZBAiggErY1kgQksYJI0gAUMlNWFSgB7fJlrrD744AM57LDDZPny5boPiFSIjZMRgt5NMUMm7O11ww036PxwU9xtt93k888\/1+f4H1wH77jjDjn77LN1WosWLfSGz5EM6uC6666Tr776SifB9RAWMFNGjx4tWF8GwT5j1rrNPPwmARIggXgEqIDFI8TrJEACWUsg09Uvt3Un9YcdtBJb\/x6xBhJIhMCwYcO0EoQyWIOFiIdQzBAo48ADD5TVq1fL+eef71nlueeeKyNHjtTXv\/32Wxk0aJCOqog6dthhB7niiiv0\/mONGjWSSZMmiTVc\/tSpU7WChsL9+\/eXq6++2tYOrHOwiBUWFgrcHLE5s5eVzVaQJyRAAiRgIUAFzAKDhyRAAuklYEieKQ+pGG4q6kzvbcHW85AA1lzddtttgjDwEATVgOLVoUMHefHFFwX7cXlJcXGxPPbYY4J1Yr1799bKEjZkNjdcxjouKE4zZsyQPffcM1INoiYOHz5cW9fgevjUU09p18NIhi0HUOjg3ghBnebxlsv8IgESIIG4BAqUSZ\/\/XMfFxAwkQAJhEPh140+yaMPmfYCCaK9Fg1bSu+VOvqtavzbcPX7qNhmy7pdg22zdpZU0arF5k1vfA2dGEshQAtgAGVasxYsXS58+faRz584J97S8vFzmzp2rQ9vD2tWlSxcdGTHhiliABEiABAIiQAUsIJCshgRIoP4EglfAWisF7I\/1G\/F6GLYCVrmyUirXborXrYSut95eKWAtqYAlBI2ZSYAESIAESCBEAsUhtsWmSIAESCB0AnqxvrLza\/dGyzc6YjoAmN9hdy5o5Uv3n04NYU8j2yMBEiABEiCBhAhQAUsIFzOTAAmkkkDgipBSRjaudw9Dncpx+Km7wEhNiBD6lPuhzzwkQAIkQAIkkD4CDMKRPvZsmQRIII8JVFfUpGb01MBSw5W1kgAJkAAJkEBABGgBCwgkqyGBXCdQs6lWKtdXSo1SHKqrlPKgrEumt1uBepVTqCKLFTdQn7JiadCoRIpLiyU1YdYzg7RRZ6hoadqnUXBs1CkkdXVbvsHGJW1LGV22fYUY26lCEVF1KaOYKrU5pSBypM4NaV3QXkoLGyKLyrfZerblS5+bx8UN+LO+GSD\/TwIkQAIkQAKZSYD\/UmfmvLBXJJARBGqra6VibaVUrKmQTeXVcfpkv15QWKAUsQbSoHGJ\/i5RillRSVHMOqwqR8yMLhfh0leE\/wzVjhRLofp\/WV0jKWxQGFEETYUw5rfSbQqg5ji+f5mzTNYuXS91tVCy6mdmAou6bde4jMI7aavGHaRhSZl3Bl4hARIgARIgARLICgJUwLJimthJEgiXQLlSuDauKpdNG5OP0AclpWpDlf6YvS8oKhAoHyWlykK2RSGDpaiuZrNS07C6qWxX212gTOk1UvpblTbPYWWC7oMPrE76WH1bDUlmY+q7tGmpNG7T2JKS\/CHGA4U0CGnQokgqg6iIdZAACZAACZAACWQdASpgWTdl7DAJpJ5AfZUvrx4atYZS6qr1xysP7FgQ08a0+VtrWl5FvNO1huZ9OZErhcqiF5QUNDFH57\/G+lgH\/bfCnCRAAiRAAiRAAqkmwCAcqSbM+kmABNJGIED9S+BSGZQYpUlY0oIcTFADYT0kQAIkQAIkQAIJE6ACljAyFiCB3CdgBnTI\/pEmbmnyGnNhUYA\/l0UePpNejav04EYSoxFeIgESIAESIAESSDmBAJ8oUt5XNkACJEACiREIUGsJ0gKW2CDM3AEOxqyS3yRAAiRAAiRAAqEToAIWOnI2SAJZQCBHTGBBeu0FuQZM6hJ3Z6T6lQV\/N+wiCZAACZAACfggQAXMByRmIYF8I5C4epCphIJTW4K0gBXUxA7H704zuLG4189UEiABEiABEiCBMAhQAQuDMtsggWwjkCMaWKAWsCDXgJUn\/tNL9Svb\/ojYXxIgARIgARJwJ5D4U4B7PUwlARLIKQK5ooEFNylBWsBq1lKdCm5mWBMJkAAJkAAJZBcBKmDZNV\/sLQmEQiBHloBt2bU5GGRBKmCV6zZJYQ23YQxmZlgLCZAACZAACWQXASpg2TVf7C0JkEACBIK0MxUWBWgVVB0rXd00gZEga5CjSbBpZicBEiABEiABEgiMABWwwFCyIhLIIQIB6hpppRKgzlJYGOzPZfWyXIGc1hlm4yRAAiRAAiSQdQSCfaLIuuGzwyRAAu4EckM5MAKMwhGkCyKYVyk3xJKKhu74mUoCJEACJEACJJCzBKiA5ezUcmAkkDyBnFkDljyCqJJBK2BooHhVo6h2mEACJEACJEACJJDbBKiA5fb8cnQkkN8EArSANWhYIkUlyezf5T0Fm1bUel90XgnQndJZNc9JgARIgARIgATCI0AFLDzWbIkEsodAjpjAAtS\/pLRxA+m57w7SokOzwOZx08YaKaouCaw+VkQCJBCfwLp16+Jn8plj\/fr1UlubwIsUn\/UyGwmQQG4ToAKW2\/PL0ZFAUgRyYwVYUkOPWaiktFi2H7itdNm1o5SUBRNGvriiLGabvEgCJFB\/AmvWrJELL7xQWrduLc2bN5ett95ajjvuOPnhhx8Srnz+\/Ply\/PHHS9u2baVZs2bSuHFj6devnzzzzDPitu50+vTpMmDAAM\/PiSeemHAfWIAESCC7CQTzBJHdDNh7EiABJ4EUaGB1BbVSaATrwufstvPc7WHImSeZ8+btm0qT1o1k8dzlsmrRmmSqiJQprAmXSaRhHpBAHhE4\/fTT5ZVXXpFevXpp5Wnu3Ln6fNq0aTJ58mTp06ePLxqff\/657LPPPrJp0ybZY4895IQTTpAVK1bIxIkT5ZRTTpH3339fxo0bZ6vrs88+k1mzZtnSrCdBR1i11s1jEiCBzCRABSwz54W9IoGsIAClqqakWuqKaqW2EJ8aqVVpm7\/VsdRITYH6GDWysna57Ci9pcW6tuGNLYXrprAerFO\/DtJqm+by86ylUrVxU1LjalBXJmUN2uiyBbJF81UuoJuP\/vguLWLExKQAs1DeE4Dihc\/RRx8tEyZMkJKSzW6\/Dz74oJx33nkyatQogSIWT+rq6mTo0KFa+brvvvvk\/PPPjxRZuHChVsiefPJJ3c7hhx8euTZz5kx9\/Nxzz8mhhx4aSTcPior4EsZkwW8SyBcCBeoNcQofUfIFI8dJArlFYM2SdbJx5ca4g1rRYol8VzM7bj4zQ3FBiQys3FtKqhuYSSn\/3qbf1ilvo662TpbNXyHLf1iV8H7JHXq1k3Y7tE55H9kACeQjgZqaGunYsaMsW7ZM5syZI71797Zh6Nu3r06fMWOGdhG0XXScIM\/OO+8s\/fv3F1Opsma599575aKLLpIzzzxTHn744cil3XbbTb744gtZtGiRdOrUKZLOAxIggfwlQAtY\/s49R04CngT8eiD6zWc2VGNUy\/dN5kiP33eSAlh5CtXH\/NbHotPU\/1W6KoVrZiM4MI\/x2gjH+vWRIUadIVXr3S1QeMeENlIphUWF0qFnO2nVsYW2hKE\/deqDb0MpZ+ax\/q5F+h9pZU3CU0ZTyYB1k0AmEoDrH5QvrMFyKl\/oLyxaV199tYwfPz6uAga3w+HDh+v1Xm5jhaIHWbx4ceQyAnTMnj1b2rRpQ+UrQoUHJEACVMB4D5AACUQT8K2v+M4YaWNV9QqpblUpjSqaRtLMA+hTUFoSNSMVFql+oCtaITNr2\/KNtMS76ajE32lZk1LBh0ICJJAZBBAAA9KzZ0\/XDpnpUJLiyaBBgwQfL\/noo4\/0JVjITJk3b55UVlbK4MGDBW6KcIX88ccfZfvtt9dpsI5RSIAE8o8AFbD8m3OOmAQCI6DsU0nV9UXVRzK4wcEi7karhOusU1al0qalUrWuKqpsiPpXVNtMIAESSC+BlStX6g4g+qGbtGrVSicvXbrU7bLvNERTfOSRRwTruY455phIOdNVEQpe9+7dpbq6OnINB1h\/ds8990jDhlzjaQPDExLIcQJUwHJ8gjk8EkiGgF+XvQI3i5OPBo2COpktn0vfAvX2N8k6fDSzOYte5pqcoui7DWYkgTwksGvBkNBG\/YXxflJtrV27VpeDC6CbmArYxo3x17y6lUcaoiAefPDB2tJ11VVXyU477RTJaipgy5cvl0svvVQOOeQQHbr+vffek9GjR8ujjz4qjRo1krvvvjtShgckQAK5T4AKWO7PMUdIAikkkLxis6p2hawsWyptKoIJklFbrcLcFxdKXU2dfbypVvDsrfGMBEgggwiYId6Li90fd+obgRDrvaB8LViwQA488ECtVFmHv+eee8o555wj+++\/v46OaF7DmrTdd99d9tprL0FExTPOOEN69OhhXuY3CZBAjhNw\/0XK8UFzeCRAAnEIJK9XxanYfnnOpq\/kT2V\/kcLKYH6KShqWqGAcdjdEFfLC3ijPSIAEcobAxx9\/rDdYdg4IVihYlzp06KAvrV692pnFlo4NlRMVuBXCovXrr7\/KYYcdJi+\/\/LI0aGAPqoPQ9\/i4CfYR22+\/\/WTKlCny6aefUgFzg8Q0EshRAsE89eQoHA6LBEggNoFk14BZa\/2yZqoMKtpPRQusv6JUgGAcTql\/tc4aeU4CJKAIlKj\/0i1wMUSId6eUlZXpJL8KWMuWLZ1VxDzHvmHY0wvtw3o1duxYvf4rZiGXiwgCAgXs+++\/d7nKJBIggVwlQAUsV2eW4yKBehDwuwYsiPCC5Ua5LCz5TjrX7liPHm8uujmCor0a7nRo58EzEsglAnvvvbfrnlyNGzfWwzQVsJ9++sl12Ga6NXKha0ZL4ttvv62tWhUVFXLbbbfJFVdcYbn6xyE2bp46dar89ttvgo2ZTaXwjxwipmXO7Kf1Go9JgARylwAVsNydW46MBFJOoMBwsTgl0epP1QukQ8NO0qBi81vrJKrQRbAOLDocPU1gyfJkORKIRaChNIp1OZRrTZs21RsjezWGjZPbtWunFSEEwsCxVeA2CEGYeD8CaxWUKewv+Pzzz8uJJ57oWQzrz0aMGCE\/\/\/yz3pgZGzRbBfuKwYUSYg3cYc3DYxIggdwkUJibw+KoSIAE6kUgGL0qoS5M3zRNXF0IE6pFpLjM8V6J+leCBJmdBHKHQGlpqZx77rmCDZFvuukm28AmT54scCUcMmSIHHHEEbZrSP\/www\/l999\/j6TD4jVy5EiB4vTwww\/HVL7MQma9Y8aM0eXMdHwjCiIscPvuu69gPRiFBEggfwgUqLc4fDzJn\/nmSEnAF4ENKzbK2qXr4uZd23SlzDY2b3QaN7OPDDuW9JEOldv5yOmdpbikSCot+4FttWMbKSlL\/1oV7x7zCglkJ4H9C44MreNTjNeTbmvVqlXSr18\/WbJkiV63hcAZ3333nQ7SASvV119\/LV27drXVj325sIHyW2+9paMb4uItt9wi11xzjcBFO5bL4MCBA+X11zf3d926dbLLLrvoKIkIhX\/SSSdJly5dZOLEiQIFsFOnTroNRkC04ecJCeQ8Acer4pwfLwdIAiTgh4BPC5heKxbgK5z51XOkfdm2KipikZ9euucpdHQ+wP65N8hUEshPAo0abV5nlemjxybM06dPl5NPPlnefPNNmTRpku4ylJ\/7778\/SvnyGg\/27oLgvTXCz3sJ6jUF0RVhSbvyyivlmWee0SHncQ3rweDKOG7cOPHao8ysg98kQAK5R4AWsNybU46IBOpNYMNKZQFb4scCtlpZwKIjkNWnA62K2kq\/TWqD5iSlSO0FVrV+U6R0225tpIEKT08hARIIlsDhjYcFW2GM2v678fkYV\/1f2rBhg8yZM0ewATMsUV77g\/mv0X9OuDBivzAocL179w61bf+9ZE4SIIEwCNACFgZltkEC2UbAYUTy6r7PbF7FXdNXqw2aKxuWS1lFcgv8a9VGzAXKChaJiEgva1fOTCSBfCTQpEkTvQFyOsYOt0a4QlJIgARIgAoY7wESIIEoAn739\/KbL6qBOAlzaqbLLgX7KF+fOBk9LiMQR3V59earSdbhUTWTSYAEthBo3CA7XBA5YSRAAiSQaQQYBTHTZoT9IYFMIODXtJUi5WZD3TqpLCtPmkRRyR8\/bSnqYtJ9Y0ESIAESIAESIIH8JkALWH7PP0dPAvUk4FdTS7yZb2q+koEFeydnBVNRyiJCF8QICh6QQJAEGpU2CbI61kUCJEACeUPgj9fEeTNkDpQESCAeAav+EiuvRc2JlS2pa+vr1kpVklawutq6SJvUvyIo0nqAwAP6U7f5O62dYeMkQAIkQAIkkEYCtIClET6bJoHMJeBXtfKbL7mRzq2dJQMk8Q1K61QgjsKiAqmrzUwHRK2IqAVuhqEURaXtFhUkHnYfdWBz2ZjiMnzV6uYijms63ZGGjGjHFPPY\/EZVZjnzW5fZfCFyzSxvfjds1FCKS\/jPj8mD3yRAAiRAAvlFgP8C5td8c7Qk4I+AX73KUBn95vXXsi3XmtrVUlNWLcWViYeRRyCOTRtVIA6LAmGrPMUnKyqWysbq9VIHNUQpWlBQIt\/q2JSmJS2kQ+M\/9g0y0\/1819bUyqaqP0Lu+ynDPCQQFIHSJmVBVcV6SIAESCCvCFABy6vp5mBJ4A8CdXV1UlNVK4Zy16uDW5iyFsF1D+HbN5X7e6hPle5VUlAi+K9YfS8vWCydSrpoSxFcI\/Xmz+a3OZwtHcFXRN9SB8WlRVKgLGHpkE11VVJVV5mypsGhtKxUh9yvqqhKWTspqTg9U5KSobBSEiABEiABEkiUABWwRIkxPwnkCAFYh1YtXJ3waODaV1hUKAVqw+PGpY2lZ0F\/KZYi5UZXLIXqP3Wk\/49j8z9VQgoNVcb8D5YzfJQUwBgEV7Yt3zrR\/B\/SdDT5zRncsphZvb61wuZ1MYXpfkP011cXadCggRQWFEpFeUUKR8OqSSB3CKxbt06aNWsW2IA2btwo5eXl0rZt28DqZEUkQAK5TYAKWG7PL0dHAp4EoEQVlShlSSlSWqnS3zhWHzMtcrw5HdYkq0JTXVEtpcvq54YEpSqvxW\/EkxiQsJ6qUZNGUrGxQimyeU80BileCpJAWdOGQVaX0rrWrFkj119\/vTz77LOyevVqad++vey1115y++23yw477JB026h30KBB+ndx3rx5rvVMnz5dTjvtNNdrSOzRo4e8+OKLntd5gQRIIPcIUAHLvTnliEjAF4EGjUqkfc+tfOX1yoR1TRkv9TUxJT3AcBsuKiqKKGFwL6WQAAn8QeD000+XV155RXr16iXHH3+8zJ07V59PmzZNJk+eLH369Pkjs88j\/J0NHTpU5s+fL927d\/cs9dlnn8msWbM8rxcWMiC1JxxeIIEcJUAFLEcnlsMiARJILwG\/6pdfV0U\/o8GDnLaEKXdEBOigkAAJiFa0oHwdffTRMmHCBCkp2RzU58EHH5TzzjtPRo0aJVDEEpEff\/xRRo4cKe+++27cYjNnztR5nnvuOTn00EOj8uPlCYUESCC\/CFABy6\/55mhJIFgCWWAAC3bAidTmVwVLpM74eeEiijDvVZVVUr1JL6CLX4g5SCAJAqVN6+d+nESTCRepqamRc889V5e76aabIsoXEpD+6KOPyscffyxQkgYMGBC3frj43nfffXL11VfrdV+77LKLfPnllzHLmQrYPvvsIy1atIiZlxdJgATygwDt3vkxzxwlCeQtAeuatVAh+NS\/fGZLqOsYc1nDMmlQ2iChcsxMArlGAK5\/y5Yt08pV7969o4YHF0LI+PHjo665JSCAx0UXXaQix9bJmDFj5KWXXnLLFknDXn2zZ8+WNm3aSKdOyW03EamMByRAAjlDgBawnJlKDoQESCCTCPh3LUyFCraZBMLUwy2xsiJ14fCTYe6fTTK1s0xYBEqzIAgHAmBAevbs6YrFTIeS5EfgLnjxxRfLZZddpgN5LFq0KGYxBOaorKyUwYMHy8KFC7U7JNwXt99+e5222267xSzPiyRAArlJgApYbs4rR0UCoRDIiiAcoZDI3EZKGpTovcJ0mHq6jGbuRLFnKSGwcuVKXW\/r1q1d62\/VqpVOX7p0qet1Z2KTJk3krrvuciZ7npvuh1DwEKijutruFoz1Z\/fcc480bJg9ESU9B8sLJEACvgnQBdE3KmYkARKIIpAND\/SpMzBF4bAm+G02DBfJ4uJiady4sVbErH3kMQnkOoG1a9fqIcIF0E1MBQx7eaVCTAVs+fLl2nL2wQcfyIwZM+Tuu++Wpk2b6jVoWE9GIQESyC8CtIDl13xztCSQdwTS5+7mVwULZ0qwv1ujxmqvMBUhsa6WYerDoZ7brRSXZX70PjPEO15CuEmqIxDuueeecs4558j++++vozCafUDAj913313vRYagHmeccYbeD8y8zm8SIIHcJuD+i5TbY+boSIAESCCDCISnqOkw9UoJqyyvFESHo5BAthNABMMLL7wwahg77bSTti516NBBX8Pmy25ipjdr1sztcr3TEPoeHzfZY489ZL\/99pMpU6bIp59+SgXMDRLTSCBHCVABy9GJ5bBIIBQCdEH0xOzXtTA89WtzV3WExEZl6Q1TH\/agPWeJF7KdAFwMv\/jii6hhlJVtDpHvVwFr2bJlVB1hJCAICBSw77\/\/Pozm2AYJkECGEKACliETwW6QAAnkK4HwtREzTD0sYtgvjEICyRAoa5L+wBF777233sPL2X+seYSYCthPP\/2kz53\/M9P79+\/vvFTvc4Sqnzp1qvz2229y+OGHi6kUWis2LXBmP63XeEwCJJC7BKiA5e7ccmQkkHICjILojTh9a8+8++S8gn3CoITpCInOizwngSwggEAWsZSnnXfeWdq1a6cVIQTCwLFVXn75ZX2KMPFBC\/62RowYIT\/\/\/LM8\/PDDcuaZZ9qa2LRpk94EGolwmaSQAAnkDwFGQcyfueZISSB4AlnggujXFTB4OP5qDN\/+Ze9XcUmxNGrSSDKdk73XPMsEAg2VK2tYn2THW1paKueee65gQ+SbbrrJVs3kyZNl2rRpMmTIEDniiCNs15D+4Ycfyu+\/\/25LT\/TErBebNkPhssro0aMFFrh9991XsB6MQgIkkD8EaAHLn7nmSEmABEIl4FO1KvCZL4V9RyQ4KGEVG1WEROU2RSGBXCJw1llnaQvUQw89pBWeQw45RL777jsdpANugY8\/\/njUC4gDDjhAb6D81ltvyYEHHpg0jltuuUVQx4IFC2SbbbaRk046Sbp06SITJ04UKICdOnWSsWPHJl0\/C5IACWQnASpg2Tlv7DUJkECGE\/CrVvnNl+rh6giJW5QwWAuySVZXrZJ1m9YIXGLrjDr8f\/O3oY\/EiHxvSbflM6Rvq52lrGhz0IZsGjf76o8ANmGePn26nHzyyfLmm2\/KpEmTdEEoP\/fff7907drVX0VJ5EJ0RVjSrrzySnnmmWcEIechUPywLmzcuHHitUdZEs2xCAmQQJYQKFD\/MGWBE1GW0GQ3SSDPCFSur5QNKzdk9KhbdmwpRcXh71e0snK5rFKfeNKmrL20LtsqXrbQruOfhMoKFaa+OnVh6mFtC3L\/pekrP5Xv181LmtGubfaSLs26JV0+Xws+c9XE0IY+4tbDAmlrw4YNMmfOHMEGzLBEee0PFkhjjkoqKiq0JQx\/Y7179w61bUdXeEoCJJBmArSApXkC2DwJZDUBvr7xnL4mxU2luGGJdm1CQA6ssSrEfwXmp0gdq4\/6L5ME\/WzYqKGOjripyr5mJZP6ae9L\/W7ExeU\/UwGzA83ZsyZNmugNkNMxwIYNG0q\/fv3S0TTbJAESyDACVMAybELYHRLIJgLZEAVxReVSqS2o1W5oolzT0Ge8gbZ9b0krUgpR52Y7BjIFZcWNBJ9sldKyUh0hEdawoCXoCJH1U79EllcskZq6Giku5D+JQc816yMBEiABEogmwH9topkwhQRIIIcIbKhdK7VGdq1pyhT8JQ2UBa+wQAfnyJQ+ufajnhoY7o\/lFUtlm8YdXatnojuBhk24bs6dDFNJgARIIDaBzPJ9id1XXiUBEsg0AvV88A1jOAmtcs2UiBhhgPHZBtbIZH6Y+vrfiEuUGyKFBEiABEiABMIgQAtYGJTZBgmQQBoJ+H84t7rGmfGJuD+W6IAZOkx9uQpTXxtAmPqAFV3\/M+x9Gy4p\/1W7pnK+vRk5rzRr2diZxHMSIAESIAEfBKiA+YDELCRAAtlLIJGH8+q6TTJ\/zWy9Pgwj7tKsh5QUNMjewQfYcx2mvrHaK0wpYbU1uefSWVlbIauqVkibDIpIGeD0sSoSIAESIIEMIkAXxAyaDHaFBLKNgGklyux+J6KCSUT5yuwxpad3ZoRErA3LLElsjr36vqT8F69LTCcBEiABEiCBwAjQAhYYSlZEAiRAArlPAEpYWcMyHSGxqrIqIwYcjPolsnjjL9Kv1cCMGFM2dKJhE1qHs2Ge2EcSIIHMI0ALWObNCXtEAiQQIIF6PZzXq3CAg8jAqhqUNpCyRpkSBS+YiVpXvUY2VK\/PQNrsEgmQAAmQQC4RoAKWS7PJsZAACbgQSP7hPPmSLt3IwaSSkhJppNaFpT1wRYATtXgjoyHm4K1qG9K6dets5\/U5CbKu+vSDZUmABLKLABWw7Jov9pYEMotAgA++mTUwszc5P0BzoEl\/FxUXbVbC1H5h6ZIgZ2kx14H5nsayRrCChvPx3SmPjGvWrJELL7xQWrduLc2bN5ett95ajjvuOPnhhx88SngnJ1rX9OnTZcCAAZ6fE0880bsxXiEBEshJAlwDlpPTykGRQDgEDBWyIpMl0\/uXyewS6VthUaE0btx4c4TE2nRESAzuPlxZuVw21VZJg6LSRBAwb4YTOP300+WVV16RXr16yfHHHy9z587V59OmTZPJkydLnz59fI8g0bo+++wzmTVrlmf9iDBKIQESyC8CVMDya745WhIgARJICYECZQFr2LihVFZUSk11TUraCKNSKO3YE6xz0x3CaC6r22jYODuUVChe+Bx99NEyYcIEgess5MEHH5TzzjtPRo0aJVDE\/Egydc2cOVNX\/dxzz8mhhx4a1UxRUVFUGhNIgARym0CBCiMd3KvD3GbF0ZEACTgIbFy9USrWVjhSM+cUD9OrWy5NukPbN+1OS0iC9PBPyqaqTfrjVbRx08Y6iqLX9UTTP\/1tqizakLgrmVc7HRt3lj3bDfG6zPQtBGb\/b35oLPoetGNSbdXU1EjHjh1l2bJlMmfOHOndu7etnr59++r0GTNmaBdB20XHSbJ17bbbbvLFF1\/IokWLpFOnTo5aeUoCJJCPBGj3zsdZ55hJIF8IpG9ZUr4QjhonAnKUlpXqT9TFLQkFEvTEBPsecWn5Yqk10uFK6UWM6ckSgOsflC+swXIqX6hz6NChuurx48fHbSKZumqVS+7s2bOlTZs2VL7iEmYGEsgfAnRBzJ+55khJIA8JBPtgnocAkx4ywtRjbUtFuYuFNGj9K+leuhesMaplRcX\/s\/cu0JJUZb7nl+\/Heb+qilNUQQEllCBQAoIigtBA07zuaHuXS7j2nUb6crGnZ40udRCdXl7H9vZqFUUd7emeXjYzNq4rt\/t6myugIBSIoog8BORd79ep8z4nTz4jcr5v54mszHPynTsyIjL\/+1SeiNix49t7\/yJPVvzz2\/vbR2hTfHPlAshVBOIeWAdMAmBI2rFjh9qu\/WXli0iql1qx9corr1AqlaJLL72Udu\/erYZCvvXWW7Rt2zaVJ94xJBAAgd4jAAHWe\/ccPQaBHiLQ7pM+BFw7b5ZgKEjx\/jglE0myc7S7HcFWJBoiBFg7d98d105PT6uGSPTDSml0dFRlHz5cf6hyK7as+V8i8E4\/\/XTKZrNlzZD5Z3fddRfFYrGyfByAAAh0NwEMQezu+4vegYCtBOx8qNbScHzCacHYjhEJMCAizNZIbzboZKwH1s5dd8+1CwsLqjEyBLBSsgRYIpGodLosrxVblgA7evQofeITn6Bdu3aRzDf72te+RgMDA\/S3f\/u3dOedd5bVgwMQAIHuJwAPWPffY\/QQBHqYQHtP5u1d3cPY13RdxJfyhPFwRCPX3twqM29yaBX+KW7zFAvGaDQ8phaE9vn8PMOMf3guWtm2mMfnrXPcTj+XJ1Wy8FuuKfzz0XJ2kfpDg2t6g0OLQCjs\/uh9lvAPBis\/7jQTgbAVW+95z3vo4x\/\/OF1xxRUqCqPFTuakXXTRRXTxxRfTN77xDfqzP\/szOuOMM6zT2IIACHQ5gcqfSF3eaXQPBEAABECgOoHjnk0ROixDWbAU8uRYrlMSqGyfs1aFkRSQ87JZLWft+\/OUC+Zof+LNQln+baoyLKqKZQv7JpXkWWKrYFWslSVZRmlj38ayPB0HS7kFCDAdIG208Ytf\/EItsLy2ip07dyrv0uTkpDo1Ozu7tkhZ\/uBgfaHdii0JfS+vSund7343XX755fTII4\/QU089BQFWCRLyQKBLCUCAdemNRbdAoCME1FN2R2pqrZJ2p4BVqPW4OBF9sQqAN0pyWFu5ztrnbYZSIjWOiwxLbKjrV8VKibgo2lVm2IBKXM7aLdS2Jr94suRsY9cUrjx+\/aphtQn6wxTI6\/2vIu4foEOZfWy\/cp2l9Tu5v5CZpRNiW5xsgqvrDkT1vi9a6awMC5QQ72tTNBpVWY2KppGRkbUm1h3rtGUZlyAgIsDeeOMNKwtbEACBHiDg\/KdnD0BGF0EABOwjIPJFjSJjL0ggECwML+NFgWVhYGKPy1hwI\/nyfMxeHM7gH9mqwWmrWz7i84VkbdUoNMqu5CibX1anSkXRauHGNzxSa8GYKRht\/KquLZk387Q5fBIdyR7gcO\/uXbQ5Y6ZpJbdM8WB\/194Lr3fsve99L1nzrEr70tfXpw4t0bRnz57S08V9K\/+cc84p5lXbadaWaZr0xBNP0NTUFF1\/\/fVkicJS+5ZnzrJdeg77IAAC3UsAAqx77y16BgLuIMCaRs25EQHE\/\/I+lkwBQ21XtRDnsydk9Zy1lXLkY6+R\/Mg1\/KOGpYknSfbVsLTCvnQ05AvTSH7tMDRek8qIt8Sh4JvR5KHhaU+DgTFaNFmEeS5pYrCm3\/Jwuil4Ik0bRyhtptacdc\/hPHvBIMDccz\/WtkQCWdQST+985ztp48aNSghJIAzZL00\/\/OEP1aGEia+XmrUlc8Y++tGP0r59++g73\/kO3XbbbWVVZDIZkiGUkmTIJBIIgEDvEJDZx0ggAAIg0BKB2FCMhiaHaHjzMI2cOEIjW0ZodOsojZ00RmMnj9H4tnEaP3lcHUv+6JZRCm0I0EJ8mhZjM7QY5VeEX+FZWgzN0lJwjpYCc7Tsn6eEb4EStEQrtEzJfIJS+RXK5FPskcqQrNNkEos4\/rFSxO\/uMM4+w0\/9\/mGrudgyARHRY4GN1BcYcC2Phezs8aGmrm2lMw0LxoLUqVerPYxEIvTnf\/7nJAsif\/GLXywz89Of\/pSefPJJuuyyy+iGG24oOyf5jz\/+OM3NzRXzW7Fl2f2bv\/kbEsFVmv7yL\/+SxAP3\/ve\/n2Q+GBIIgEDvEPDxsJrjTzC902\/0FAS6gkAis0JLqSVa5JeRN+jEoc00EHX3cKmlzDxNJQ9p5z\/i30AhM6Ldrm6DuUCGEmYhNLZu23bYC\/pDPAcsZIfpMptJltvzOXd6CE8d2EF9QfeKxDKQHTw4+vqxjtW2cftEy3XNzMzQ2WefTYcOHaJrr72W\/uiP\/oheffVVFaRDvFQvvPACnXbaaWX2ZV0uWUD5oYceoquuuqp4rllbi4uLdP7559Prr79OEgr\/pptuolNOOYXuv\/9+EgG4detWVQciIBYRYwcEeoIABFhP3GZ00ssE7nrs2yyyFpXIWkov81b2l1WewR6E0hQOhOgvLr2d\/qezry\/Nbmo\/Z+Yo6LdvdPJSZoEF2MGm2tRI4XHarGZ4NVLW6TK5QJZF2LzTzWio\/qCPBRjZL8CkMVlfhqazRxpqVycLjUc20mT8pE5W6Ym6vCLABOaRI0fo5ptvpkcffZRk+KskET9333033Xjjjeq49Fc1ASZlmrUl5e+44w665557inXLfLArr7yS\/uEf\/kEJs9K6sQ8CIND9BCDAuv8eo4ceJ3Dx1\/+g6R78ybs+Qh97979fXeOo\/uXiCF\/OLdGRlYN0LHWEToifSNsGtte\/sIUSdgiwiD9KQ2br35C30I22LzEDOVoyjw9vatugTQY6KcCkC3kOnHIks9+m3rRmVhjsGDp3NZBLaza68aqZA5VDu9vR17ETR7WYXV5ephdffJFkAWbxRFVbH6yRypq1lUwmlSdMPm\/PPPPMtupupH0oAwIg4F4CEGDuvTdoGQgoAq0IMLlw2+hJ9N5T30ObhybVXJtMLk2RUIR2nvz21QdJteQspYwkzaanSSK+laZNsc10ysDp2h86l9kDdlSzB2wgMEIxw91DL0vZFvcDeY6OOK0CkBTzXLYT8PE8Hwp3tFUSwfIwh6kvnePX0QZUqOyU\/jOwJtgaLl4UYGu6gEMQAAEQcISAfeOMHOkOKgWB7iLQzhTN3bN7SV6laeeWs2hsorA+Tml+pf0jLJJEnG0fOpPCvBaUtqTCwWuzpgyF8u6f+1WxxwZHaeTgIel8suLpXs2UMPWToZPoaO4AB1xxR5h6CcbRH6q\/WG+v3jP0GwRAAARAoHECEGCNs0JJEOg4Ad0egEiwOaEiIbifm\/kVnT50Fg2F6y9U2nFAXKH48QKmhz\/KRJAiFNK6t45ESNzAYepnjSlKmSvrznc6QxZlnoydpN0j3Ol+6KwvGOMF7pBAAARAAASaJoAw9E0jwwUg4F0CIQ7S0WzKmhl6ce63tH95t5Zw3Cw3tCbxIBUGU2o1C2MuIJBnETbqn6D+wJDjrRFPXILnSSKBAAiAAAiAQLsEPPy1cbtdx\/Ug4H4C7QxBrNS7VgSYZWdf4i1azC7Q23hIYohDk7ee9EqwsK+xIZWtt9feK\/XSsLetTlgXL\/CAb4hCwRDN5Xi+nINpPjODYYgl\/D3+p1fSE+yCAAiAQGcJwAPWWd6oDQSaIqB7ZFoo2N53LvIAKkMSJZKhW5IX1v5yC6vW2qH7XdhaK6IUp4nQZGsXa7pqITunxQusqTkwAwIgAAIg4FECEGAevXFodo8Q0LxOesDf\/pwNiZb4u7ln6FBin+M3we8LkD\/ffp+c7Qh8YI3yD+aDdEJ4a6PFtZczeBjics49Xz5o7yAMggAIgAAIdIRAe1+Hd6SJqAQEepeA7iAcAZ+e71ykXbuXX6el7CJt7T+FYsF4wzdJ53ytqMz\/4kiCSPYRcIf\/q6R\/vIbuZPgkDlO\/n9+F5QuRl5SybVcC0wyEhm2z7yXDabOT0TudnwfopXuDtoIACLibgJ6nMXf3Ea0DARCwCGgOAS8C7LHDD9EbC6+otcasampuNeqlMHl7\/ldNTjhZlUAhTP1WCvo0Lo9QtbbyE4s8DFEiNCKBAAiAAAiAQKsEIMBaJYfrQKADBHQH4dDpfbK6b+QNemXhRXr8yMOUyC5b2TW2+hRY0Oj8A3iNjuFUBwkUwtRPUtTfuPdVR\/Pk\/b6cW9RhCjZsIpDNZimZ1OOd02nLpu7CLAiAgAcJQIB58Kahyb1DQPfwL79mD1jpnVhmb9jPjz5C06mp0ux1+7rkV9AXIj95ff6XrGPm9qT7Xaivv1aY+oFAZ4cESjAaJOIFxFc69mqE90MPPUQXXHABxeNxGhwcpHe96130ta99rZFL15Vp1tatt95K5557btXXrl271tWBDBAAgd4lgDlgvXvv0XNPEND98Kv3cX\/tHLWsmaVfTT1B7xh9J88N22YrYVn\/iwxbq+iMcd23uDOtdk0t8h7s9w1ymPowzeamClEKTX6fC1fZSpItjxqUmDa+fOFcXuVJodVzfN7Hhyruzer1aqQhv8f4ba1eebXNq0Acm\/\/AoEDQ+18AKD5d8OvZZ5+l6667joIc6fWGG26ggYEBeuCBB+iTn\/wk7d69m+6+++6GF9FuxdaPfvQjOnbsWFWSCwsI3lIVDk6AQA8SgADrwZuOLnuHgPYhiJo9YKuPt2VA5YH4hdlnSIZqbRs4reyczoNwHvO\/dPKsZUuiTYqiUQJGCvL7qHjv1U7hqJhnnZUMET2FjVymkrLD+yJ\/Cr8K+cd\/qzMlpwrHklF6xvr7kLwIzweMHZqgp+979bgZG\/e2nHSMtuzYZGMN7jedzqdc0chcLke33HILBQIBevjhh+niiy9W7Tp69ChdccUV9K1vfUuJsiuvvLJue1uxdejQISW+zjrrLHriiScq1tHX11cxH5kgAAK9SQBDEHvzvqPXHiGw1sPkkWarZr409xztXnpjXZN1BTAImN3y\/dGqKllHyj0ZJotpuW8SdVD98LEIbPUyeWvm1CvH28Iry1t+GYWteEblOMvH8rL2rfOq7GqZwn7BjmXXUHUU6rPaUmiP\/IWI\/CrIsuGtMbr0T88mv99+pntfPOKeG9TjLfnud79L4rW6\/vrri+JLkGzcuJG+8IUvKDrf\/va3G6LUiq3nnntO2Zbhj8PDwxVfoVA7i9c31HQUAgEQ8BABCDAP3Sw0FQTaJWB5DNq1Y11feOy1jtZvRYTtWSPC5AG63RT2R7pi\/le7HHD9egLhYT+9\/z+eQ5E+ex94D742RblMbn0DkNNxAjJfS9LNN9+8ru5rr71WDUe8\/\/77aXGxfvCUVmyJ+JN03nnnrasfGSAAAiBQiUC3fIVcqW\/IAwHPE1DzUbT2op5k0lqZMvYiizAZhHbywKnqWLwmMoBN\/fC6ZIVtMYePOU8NcVs9Z5WV\/NUfPy\/IiwQC1QiwPqf33XoW\/foHr9HCkUS1Ym3lGzmTDrw6RSe\/Y7ItO16+OGW6YwjiM888ozDu2LFjHc5oNErbtm2jF154gV5++WW66KKL1pUpzWjFluUBkyAc9913Hz399NNkGAadc845dOONN6qAIKV1YB8EQAAE8BSD9wAIuJiA7iGIuu01iu7FuWdJ5lZs9E9y3MIwTdCJhUstPWhtGzWIciBQj4A\/Txd+5G304gP76NDv7YlauPfFwz0twOrdgk6dn56eVlWNjY1VrHJ0dFTlHz58uOL50sxWbFkC7KabbqK9e\/eWmqOtW7fSPffcQ5deemlZPg5AAAR6mwCGIPb2\/Ufv3U5AswvM1GxvdepNQxRfWfodHTUONVQWhdxEwP75VHb1Vr5wOOuarXaZp8NvTFMmxaERkRwjIOt9yVpdfr+fRkZGKrbDEmCJRG1vaCu2lpaW6M0331T1Sj3f+973lKdNhjJK0I99+\/apACAHDhyo2DZkggAI9CYBeMB6876j1x4hoN1jpVuASdzuJtIry78j6ufJ8YHeHba1FpeKDNgcxrUmcOwQAdPM0\/7fH6VTd656dB1qh1PVGuT8HDgRXpIkAqK1v5aHnGskWdc3YyudTtOdd95JEmb+S1\/6kppvJnXJcMirrrqKrrnmGnrwwQfpM5\/5DH3\/+99vpBkoAwIg0AME4AHrgZuMLoKARUB3EA7LbjNbEWHwhDVDDGXbIWC3tpVhiEjOEYhEIiSeJ\/GCiTeqUpqdnVXZsjhzrdSKrfHxcfriF7+o1hmTtcfWJhFnkp588sm1p3AMAiDQwwTgAevhm4+uu5+AboeVLFarM7XaPhFhPvaEbYAnjG+Hd4f46Xwv2WXLbrpHd89QKpGmaB9H\/uixtJSpLHg6jWFycpJEZMmrkgiyBFi1IYql7dVpS+xagUFkKKKIRISjL6WNfRDoXQLwgPXuvUfPPUBA9xDEgYjexUB9zUwCW8P79yzCpgx4D9ZgwaHHCMiXEPtePuqxVndXc0U0SdqzZ4\/alv4yTZP279+vIqueffbZpacq7jdrS4Ju\/PjHP1aRDysZtMSfeMogvioRQh4I9CYBCLDevO\/otWcI6B1A1R+Na+15u637\/fILEGFa7wiMbt67AwAAQABJREFUOUEAwxCdoH68TplnJemHP\/zh8czVvUcffZQksqGEhB8aGlp3fm1Gs7Z+9rOfkaw19sEPflB5uNbae+yxx1TWzp07157CMQiAQA8TgADr4ZuPrrufgO45W\/GIXgGmY\/QcRJj734doYW0Cx\/bN0cqiO9bEqt1SvWcT2WXq1KtWyz\/2sY\/R8PAw3XvvvfTaa68Vi0qAjC9\/+cvq+Ktf\/WoxX3YkKuHjjz9OVgh562Sztq6++mqSuWPiZZNw86VJvGOf\/\/znVdZnP\/vZ0lPYBwEQ6HECEGA9\/gZA93uLQCysd56KLoEIEdZb78Nu7O3elzCc1qn72t\/fT5\/+9KfVHLBLLrmEPve5z9Fdd91Fsv\/II4+QiKrLL7+8rHkSkVDW5rr99tvL8pu1JUMWv\/71rysbt956K1122WX0zW9+U0U9lIWZjx49Sp\/61KewDlgZZRyAAAggCAfeAyDgYgLtDvFb27Ww5iAca+23cywiTELUbwic0I4ZXKuZgN1BLDQ31zFzMgxxx7u3OVZ\/r1d8xx130MTEhBI7Eg5eko\/XeLj55pvpK1\/5SlN4mrV12223kSwCLSJw165d6iUVyiLMIsakDUggAAIgUErAx99g637GK7WPfRAAgTYIzK3M03X\/9x+3YaH80r\/+0J3kC5rlmW0cBXxBmk4da8PC+kt39J\/dUyIsG0jRiumOaHLr7wavr8T3OEh6o2dWqse+PB\/99GvP2me+xPL1\/8v7aGBU8zDfEvtu2\/3nPf\/UsSZ94OSPNFSXPNLIwsgzMzO0fft2FaK+oQsrFGrF1sGDB0mGHp522mm0YcOGClaRBQIgAALE\/68igQAIuJiA3u9HAv4AmfyjKzW5DnND1faeJ8zdPqYgC7A2gl02dM\/tLaT3b6hWW2UY4lmXnFqrCM7ZTEC8XiJ+5NVuasXW5s2bSV5IIAACIFCLAARYLTo4BwIOE9Dtn\/bzrE998oufy23SDiLCfP0+mghscvgOoHq\/j0W77jdil2Ld+7veEmCJbKJL7yS6BQIgAAL2EkAQDnv5wjoItEVA9zpgbTWmwsV2tu\/l5efpmHGkQq3dlWWThtUGyUf4b6JRmAvHlkleSCAAAiAAAiBQiwD+Z61FB+dAAARqE7B5dFeviLDakHHWSwT2sBcMCQRAAARAAARqEcAQxFp0cA4EHCZgp4dJR9c60T4RYW\/n6IgYjqjjjsGG3QT28Tywcy7fbnc1rrA\/szLjinagESAAAiDgNQIQYF67Y2hvTxHQHaTUMNllpdXvbbMLbPVuQ4T11Nu+6c6avAZyOpHjSYn8lYC8JfklfzvWftMG27hgaXaFZg8t0OjkUBtWcCkIgAAIgEA3E4AA6+a7i76BwBoCmWyWQhGNs446o79UL0SEncmBOcYDG9f0yuuHGu+H11G02P5DL83R73ftbfFq\/Zft4TXBIMD0c4VFEAABEOgWAhBg3XIn0Y+uJKDbA7aUStBohMfzaUqdGIJY2tSXlp9jEXZuF4qw0l5iv1kC\/qC7ROy+l47QzitPVwsBN9sXL5WfT7h3\/TovcURbQQAEeo8ABFjv3XP0uIcJzC3z0KghnQJMD0y\/z88L\/gbUS8KeqxePlZR89eL9aDDK+z5a9i1QzBejvvygnsphxfMEZL0mN6WVxRRN75+nia0jbmoW2gICIAACIOASAhBgLrkRaAYIVCKg28M0k5ijdwRP56p8lDUzlDHTlDOzquqgP0Rhf5hC\/ggf58kwc+pcLm9waV61nRfk9fNCYj4SgcRbfuiVn3AgorayX0zWrszDsX5W9828LAVt8vwckwx+5SusTMa1F35W5\/OI3T5fH687ZkjLaMo4SBv406vPhAgrMu\/hHZfpL3Un9vIwRAgwZ96UWR5qncvlKBaLaWvAkSNHaHh4mKLRqDabMAQCINC7BCDAevfeo+ceINDKEMRIMEKRYJj6I300MTBOkXCYkrkVOrJ0hI6tHFMiayq1fn0tEWTyIqq8jlEmz+d0ruLcJP\/p9BRNRDdyEzjYAqep3EEaDxo0YMLL0CRKVxb3ibeTf5SwF4HPP+pYWrsq9gsi31L3RBLw4tVf7qGZfYuu69O+l4\/QO\/9wB39pcby9rmtkmw2aX3HXEMSHHnqIPve5z9Fzzz2nerZz50768Ic\/TJ\/4xCfa6ul3vvMduv322+nee+9V9ioZu\/XWW+npp5+udErlfeMb36BLL7206nmcAAEQ6C0CEGC9db\/RW48RkIfRd52yU0V0U74ikz1D7JEyeJtd9VBljSxljAyl+SX7kgzK0AIfL8zPlfX4wPxBWskt04boJjqWOqp8U2UFXH6QMlLsoQsU59ZM546QGTRpyBxzecu7r3mtCCZLiqjYLepXg1yqlF2ZS9OBl6YbNNLZYqlEhqb2zNKmU\/De7AT5Z599lq677joKBoN0ww030MDAAD3wwAP0yU9+knbv3k1333138XOjmfbs2rWL\/uIv\/qLuJT\/60Y\/o2LFjVcstLCxUPYcTIAACvUcAAqz37jl67CECMnzvpamXtbX4yNKUsiUibDwyQXOZWcrlCx4lbZXYZEi8IREeJpn3lT+Nz+amKC8izBhv6QHLpua60yyj8\/NQ0mA+yANJg8rH5MuLX0mkEf\/mfUlqu4o54OdyEuSiHLsqV\/VXlbJVsquaqXdiZSFZr4ij52UYYjcLsAWXBOGQ4Ya33HILBQIBevjhh+niiy9W9\/3o0aN0xRVX0Le+9S0lyq688sqG3w8y+kA8X5\/5zGfUcMZaFx46dEiJr7POOoueeOKJikX7+voq5iMTBECgNwloXRGoNxGi1yDgLQIiZCQljRUaCg2zqPHGnAYRozJ3rFKay03TXICFmFr4qVIJN+dZfiHNbWS1E8nHqd8cpsHcGA2kx6g\/OUrxlUEKJ+MUSIbJn2RxlQoQpfg9kfJRPs06i19mhllnCy+FXLdy0tTV5Vl3C7D9vz9KplH5PasJAcwwge9+97skHrDrr7++KL4EzMaNG+kLX\/iCYvTtb39bbRv59cYbb6jhgh\/\/+MdV8dNPl3mz1ZM15PGCCy5Q88RkrtjaVygUqm4AZ0AABHqOAARYz91ydNhLBER06E4ydMxKaV7BNhaIUX9QX2REy7burbAIsPemWlrIzdKM\/4hHRVi1XjWRz96rqCW4sgWxFUqyuGZxJYIqb7T2Xip4x5poRweLLh5LdLC25qvKpLJ0+E13DpFsvjfuvULmfkm6+eab1zXy2muvVcMR77\/\/flpcbGyuoIg18WRdeOGFSti9+93vXme3NEPEn6TzzjuvNBv7IAACIFCVQPWnmaqX4AQIgICnCazxEuXyWRXsYDg0QvPZ8jljbutnPTGwZMyTGTBp3DxBRWp0W\/u1tkcEF8V4OGGE\/DkWWbnjAkvmC+pKInzrcddVV7N25o66KwhEpfbLMMTNb9tQ6ZTn8xZXKgfs6XTHnnnmGVXljh071lUtUQu3bdtGL7zwAr388st00UUXrSuzNkOGEsqcLvGoNbLEgeUBO\/fcc+m+++5TwTgMw6BzzjmHbrzxRhocRLTWtYxxDAK9TgACrNffAei\/uwmsEUs6GlvJq6YCw3NI+DGeFzaTrj6RXEf9rdqQdcIkAImarlTDSMJYZBFm0AZzM4swHl7n8tToAESZlxXpgOBah0uflltnut2MXIbfDy5PB16dolzWoGDI\/e9Fl6Os2rzp6YKXcWyscsCT0dFRde3hw4er2ig9IfPJmkmWALvpppto7969ZZdu3bqV7rnnHkRALKOCAxAAgeNjkcACBECgJwhUEmBWx9NGkiYiG61DV21HI+MSHaKhNiWNBB3x7efpS+5\/QK\/WIRFc0Xwfz+EaocHMGPUlRyiohhT6yrxd1a7XlZ83G2Ouq75G7ZgtDqls1L6uciISD73uzi81dPXRSTvJZJJk3S9Zo3BkpPKSFJYASyT0D1ldWlqiN998UyGQer73ve8pT5sMi5SgH\/v27VMBQA4cOOAkJtQNAiDgMgLwgLnshqA5IFBKQPejr6yuVEuASd0iXtwWpl4ChZgSrbFRdxH3I20m6bB\/L22kLRzvz\/0T4AserjgPKeTgGDYOKSx9fzWyb+ZM8kfc912dtMsrSYYhbn37Jq80t+F2pnOFZS8avsCGgiK8JEkERGt\/bTVyzq6UTqfpzjvvJAkz\/6UvfUnNN5O6ZDjkVVddRddccw09+OCDKpri97\/\/fbuaAbsgAAIeIwAB5rEbhuaCQDsE+iLxhi4vhKnfQLOZ6cKwv4ausq\/QUHiYfVnNP+xlzDQd9u2lE\/wnsbBxlwiTiI1+DogSyAZpwBijvE1zuNq9KxLFT9rayFyYdutq5nrDQ9EFxQOWTecoFMF\/uc3c40bKRiIREs\/T7OwsiTdK1v9am+ScJDvmYo2Pj9MXv\/jFtVUWj0WciQB78skni3nYAQEQAAH8b4D3AAi4mIDusOoXbG08Spd4wobDI7SYXeRFnzOOUZKw+QYHCmnG+1XaWAkycsjcTZv8Wymcdy7kviVixNMlEQnNrJp5V9pU9+6LK7YJ76N7O+JMywz21h15a4a27HDn8N5WqSSW3LEMwOTkpBJgIrRqCbBqQxRb7X8j11mBQWQoogyVRDj6RqihDAh0PwH3jSvpfuboIQg4RuCdW85uqu60kaKB4ACF\/ZGmrtNZeCA81PbDvwTvOGTspYwvpbNpDdkSwSVT0cw0z0hLGpRL5cjgoAxeSm6NguglhtmMNxY89xJTq60iwCTt2bNHbUt\/maZJ+\/fvVx7cs89u7vOv1E61fQm68eMf\/1hFPqxUxvK+iacM4qsSIeSBQG8SgADrzfuOXnuGgN5ZYOMDw033XIbx9QX7KMrrhXU6yYN\/xB\/WUq0s43y4AyJM2uwzOFBGqeCSaH16b6UWJl424vd7zCVnQ0RTL98\/nW2XeVaSfvjDH64z++ijj5JESZSQ8END\/GWO5vSzn\/2MZK2xD37wg8rDtdb8Y489prJ27ty59hSOQQAEepgABFgP33x0vbcIbB6aZEdMa9\/CyxDEKAfCiAf6OgZNhMxEdGPLba7UUBn0p1OEqWGFIrhMHlbIix0rD1cyRzn2drg1emAlLvXydA+FrVdfI+cDQW\/999WN+iuxnKZOvWq9Jz72sY\/R8PAw3XvvvfTaa68Vi0qAjC9\/+cvq+Ktf\/WoxX3YkKuHjjz9OVgj5spNNHFx99dUk89DEyybh5kuTeMc+\/\/nPq6zPfvazpaewDwIg0OMEvPU\/WI\/fLHS\/9wjodJq8f\/t72wIoc6lC\/hD1B\/vbstPIxbJ+V0F8NR94o559JcJMno\/hS9cruu58meDKsk8tZVJOBBcHWJBgFUidI+ALeOu\/LzeK2M7dLXtr6u\/vp09\/+tNqHtgll1xCn\/vc5+iuu+4i2X\/kkUdIBNrll19e1giJSHjppZfS7bffXpbf7IEMf\/z617+uLrv11lvpsssuo29+85sq6qEszHz06FH61Kc+hXXAmgWL8iDQ5QQQhKPLbzC6BwIWgdM2bLN2W94aHApeFkQeCA7RUm6hZTu1Lgz6gjQaGWsp6mEtu6XnTJ4TdphFmERHDHHY91pJPHEyfFAFzuBgCiYvWI3kPAEf35ZYf4QCvMBxIMShWgJ8pzhTQpH7eF+GKKrj1fwACzaf5Mk53pfzla5R14kN1nfKllyjbPFURGXfOi5sC+VL8rhdhfKcx\/vyS7axfucCwDh\/t+xvwR133EETExNK7Eg4eElyv26++Wb6yle+YmsDbrvtNpJFoEUE7tq1S72kQlmEWcSYtAEJBEAABEoJ+PhbOZ1fspfaxj4IgECbBPbPH6Bb7vsPbVrhB0kWEV+68bPaFiaWyITyhLqYnW+7bWsNbNA87HCt\/dLjAIu9dSKMPxH5kVkNIZRIhfiIJAr3sUi1byml0lvS1H56IeMZz2PfcJyiXSbCzvo\/LmrqfrVT+MX\/9FRDl8vfqyyMPDMzQ9u3b1ch6hu6UFOhgwcPkgw9PO2002jDhg2arMIMCIBAtxGAB6zb7ij6AwIVCLxn24XaxJeYl2F8\/O0Nh6kfpflMYY2dCtW2mCVug84k8egdyx+kTbSVAmaQZHFfDCXsDHsdtYRiQUovO7dEgo4+wIZeAuL1EvEjLyfS5s2bSV5IIAACIFCLAARYLTo4BwIOE8hrCp13\/tZztfdE2maYWRoJj9FcZka7fbsMincrHuinsC\/MPcirNc7mfVM0kB0jv+lCN49dILrArj\/spyAvbixz8JA6T2Al0fw8ys63EjWCAAiAgPsI8DgiJBAAgW4nsHFo3JYuFgRMmsYiE\/rs2+AAi\/n7aDg0SsPBMYr7OYgIe+8kvL61wHSOPWFL0Vky\/Zjfpe9GdsZSMAbR3BnSqAUEQAAEQEAXAQgwXSRhBwTsIKBpiqYEAbAzpY0kjUc0zXfQMCs14o\/RUHCURlhw9fsH1Ry4rJFhwSXf2FeuQKI8LrMIy0OE2flW0W5bAl54LSS9dggwCAIgAAIg4CkCGILoqduFxoJAiwREgFXWHS0aXH9ZylihichGOpY+uv5kUznNNzTEizXH\/HEVoTFnckh4jnKY47XLmk3ZfEZ5wgaSozzHDd9PNcvPqfIqJD3P33Nzav5d7ebeFNq2Mpd0fyPRQhAAARBwIQE8YbjwpqBJIGAR0PXQ1qlIfkkjQRuim6zmt7it766T6IUDwWEaCY3TYGCYwvxjsPDKGGklvlqsWF2mRFhsjvI+XfTbaQ2uBQEQAAEQAAEQ6DYCEGDddkfRHxCoQICXDK6Qa0\/WSm5Zgwgrb5uEve8PDLLgGuOhhSMU9UXJVIIrRRLJUHfK5tO0rERY57jp7kNP2dM0VNdWZtDztuKFcRAAARDwEgEMQfTS3UJbu4bAbw8+S\/\/nI\/9ZReE77p0qxDwsPTY0LfpbsNw5fJYIm0odaaFSeVL1UV+gj0K+CO8XIhXmmYV4uDqVMvkUJeLz1LcyjOGInYLeYj1e0F8tds3Vl+VW9H\/54eoOo3EgAAIgoIkABJgmkDADAs0QMEyDljPLzVzSctl4KN7yte1caImwY6mjSmjWszUUGqHB0BCF\/SGev5VVCyCLJ8rJlDZTRPEF6kuwCOMfJHcSOP6lhTvbh1aBAAiAAAiAQCkBCLBSGtgHgQ4R8Pk6N\/q3LxLrUK\/WVyMiTKIjzqSPqcWbS0sMBAdpKMzzt3g9LgmaIYs7W96u0nJO76fNJPn7AhRLDECEOX0zqtSfNzG+rwoaW7ONlayt9ls1ns1mKZfLUSzW\/mefYRi0srJCAwMDrTYH14EACIDAOgKdewpcVzUyQKB3CXTSm+KUB8y6uxKYYywyznO4BmgydiJt6zuNTu47hRdwHlHh4SX8e0F8WVe4b5s0lyndl3Bfw9AiEvHlDQEGkWj32\/Whhx6iCy64gOLxOA0ODtK73vUu+trXvtZ0tSK6vvvd79Lb3\/52JeLE1qZNm+gjH\/kI7d+\/v6K9W2+9lc4999yqr127dlW8DpkgAAK9SQAesN687+i1wwT8di\/MVdK\/eLj9b4FLzDW8G2LP1hCLrIif53Hxs6c\/7KekmeCgGe781rxexxLmIvnjfgqvODOks177evU8O0+RQICeffZZuu666ygYDNINN9ygPFYPPPAAffKTn6Tdu3fT3XffTb4GP3c\/9KEP0b\/8y7\/QyMgI\/fEf\/7Ha\/uIXv6B7772X\/vVf\/5WeeuopOvPMM8uo\/+hHP6Jjx46V5ZUeLCwslB5iHwRAoMcJQID1+BsA3XeIQIMPAjpaFw1GdZipayPoC9FQaJiigRgHrSAWWoUnY5Pnu0mSYYZRX5zSZE\/kwroN1FBgKT9PgzE\/hZKdYaqhyV1vwnT5+l\/dfAMMlwThkOGGt9xyCwUCAXr44Yfp4osvVtiPHj1KV1xxBX3rW99SouzKK6+sezv+8R\/\/UYmvHTt20KOPPkobN25U18g8wzvuuIP++q\/\/mv7kT\/6EfvOb3xRtHTp0SImvs846i5544olifulOX19f6SH2QQAEepwAhiD2+BsA3XeGgL+DAR36wvZ4bGQtrpHwOE1Gt9CJ0ZNoIryhMJ+LBZclvtbSlZDxEY5sKGLNq2mRZsmINL\/Is1f76\/Z2G1lvuMBMw6ScR9rq9nu+tn0yXFA8YNdff31RfEkZEU9f+MIXVPFvf\/vbay+rePzP\/\/zPKv+v\/uqviuJLMsR79qUvfYnGxsbomWeeIRF3VnruuefUrgx\/HB4ervgKhbz7mWf1E1sQAAF9BOAB08cSlkCgYQJpo3MP8JGQhHJvP8laXBKpMBaI856\/uP6WhIeXEBqNJhFnIRZgMg9OFj32Ypr3z7D4nCB\/Bh+hTt4\/mfvlFQ9YajlNmVSWRjYNO4msK+uWuV+Sbr755nX9u\/baa9VwxPvvv58WFxfV3LB1hUoyxIvl9\/vpwgsvLMkt7IqH7YQTTqCZmRk6ePBgUaCJ+JN03nnnFQriNwiAAAjUIYCnhzqAcBoEdBNI5VL0nV\/+rW6zVe1Fg60JMBFIluAK+AJk8MLHkpoVXJUaZrJoC1BQPeioUO+VCrk6L0\/zgWkaDrIIywVc3dJubpymZfK6GZGtfcsl3bEOmHikJMmwwbUpGo3Stm3b6IUXXqCXX36ZLrroorVFyo7Fy1UtyRyvV199Vc0zkwAdVrI8YBKE47777qOnn36aJJDHOeecQzfeeGNd0WfZwRYEQKB3CECA9c69Rk9dQuCVqVfp4OKhjrWmGQ\/YYHCY+oL9VBBcMrSLJ3Px3AcZOqg7se+C54r5OEhHjCTUu9eStH8hzCIsP0E+A6O5nbh\/eQORBZ3g7rY6p6enVZNkeGClNDo6qrIPHz5c6XTDeZ\/97GdJQtx\/4AMfIBF2VrIE2E033UR79+61stV269atdM8999Cll15alo8DEACB3iaAp4bevv\/ovQMEXp9+o6O1RgLhqvUNBIdoU3QznRg7iSYjJ1JfgCeKi+BS3i77H245gLjSeDKs0YtJAossRmYo7298CKYX++nWNud5XpWXkgyXNLooaIiR48+KDr2q3edkMqlEkQwblKiFlZIlwBKJ1peS+PrXv05\/\/\/d\/T2KrdD7Z0tISvfnmm6paOfe9731PedpkWKQE\/di3b58KAHLgwIFKTUMeCIBAjxKAB6xHbzy67RyBK7f\/AW0Z3kJvsBB7Y+ZNen36TTqWqB6+uN2WhoPHBVgfr8XVHxpQc7AkOqElgOzwcDXebvYl8VyeOIu\/FV4zzGtJ1jFbis5Rf5LXNcvjO61O3j8nxYwvyF8e8J+WrKnOjlyVfKwH83LApyRL\/X2tiXiaYW9vwAhSOFB\/aHAyu8I2GheZ0SDPz2xykff9S3tpJcf18BcvprSYt8Wf1X35Ukb9WFs+Onvs3E7e6qp1ifCSJPOzrP21heVcO+kb3\/gGfeITn6BIJEL\/9E\/\/pNYEs+yl02m68847ScLMy\/BFa8FmGQ551VVX0TXXXEMPPvggfeYzn6Hvf\/\/71mXYggAI9DgBCLAefwOg+50nMBwboou2vku9rNoXU\/wtqoixGRZl02+xMHuDDi4cUg89VplWtttGT6bto6exh2uSRY48XskTooSI1z+ksJX2lV5jsCAUgZgwlkqzPbGfzadpJb5AfYlhfvBefRr3RMvba6Q8rMv7SV6yL32XB\/XCcUGESA3FclZ1qrw6IUUVMTGlHvRlK8k6VvuFzEIZOce1cJY5mlHR6VSdUo6T7Es71I8liHldBHWtujVWBYWyhausK62j1fqKh3xcclstkWKdLm4b0N\/pdEKJr7H4huJl1XbmU9NN\/a2ORCeoLzxQzVzF\/F0HH6X9y\/sqnquW+bbhM+i8DRdUO93RfBFF4nmanZ0l8UZZAqi0EXJOkiyo3EySz0xZR0y8XxJGXuZ3XX311WUmxsfH6Ytf\/GJZXumBiDMRYE8++WRpNvZBAAR6nAAEWI+\/AdB9dxAYjA7Qzs3nqpfVomQ2SY\/v\/jl99fGvW1l1t0ORQbp8+2V03uZz6ITBDfxwWrjECqBR14DDBXJmlkXYIIuwRYdbUqV6eQ5nD0fh4T5Qsi\/CgygTSFM4F2l4wdcqtbguOzWfpmySF9DmTirxIWpGOux0GmlwUW+rrda2lXa3c+2a+rIcBXU6cZTioT6Kh\/vXnG39MJlLNC3AypRlA1UH\/UG6eus1qmT6V1MNXGF\/kcnJSSXARGjVEmDVhihWaqHM9froRz9KP\/jBD1S0Q4mieP7551cqWjPPCgwiQxHFJsLR18SFkyDQMwQgwHrmVqOjXiMQC8XoslMuoTM3nUbZXJbmU4s8VHGGppamaYWHJokIGIoN0lh8hCb6xmmY9\/3+kq\/pvdbh1fbKw2m\/OaweVqSPpj9HOX+GtyYP8eNhRiYLH\/lRQ714RTURRKsveZj0mcJAtrxRZUq3sr\/+uOih4XMqst6qh0V5WtSwMjnB19VJGQ7I7+vPUWgg2FUizEvh3uvcIlecFu+Xj4cK1hsuKGLHMBr3VqdySX7LcnCbJoYhWl\/SNApm58R51N+kl61R262WEwH24osv0p49e+ikk04qMyNerP3796u\/x7PPPrvsXLWDVCpFH\/rQh0hEl0Q7\/B\/\/43\/QySefXLG4BN146aWXaGJigmQdsLXJ8r6Jpwziay0dHINA7xKAAOvde4+ee4ZAnkLBIE30j6rX2zdu90zLpaFK3ByLFIQNB1bkuBX84sGQ\/Crdl4VqJX9gNEYZFd0uuKp5JGB99fkyoovWayMrx9p2Dll6OcN9zVN4iNc6a\/bptnPN7I6aRGDz8EKvpQALq3riq7U+5flvJ0OR4PEIffXtNPelzbnj76xvssMlZJ7VT37yE\/rhD3+4Ltrgo48+ShIlUULEDw0N1W2ZCDZZ0Pnhhx+m9773vUqE1bruZz\/7Gf3pn\/4pbdmyRQXjWCuyHnvsMVXnzp0769aNAiAAAr1DoIER670DAz0FARCwh8D8Gyu08Ba\/9q7Q4oEVWjqcpMRUilZmUpTk4W3ppQxlV9jTlZbAIN5PmZUspedFiHm\/L6oHzT2jd0mn9XeD\/bINBd+wahah1mzKmummLmnm1r599Ewaj000Zb8ThT\/2sY\/R8PAw3XvvvfTaa68Vq5QAGV\/+8pfV8Ve\/+tVivuxIVMLHH3+crBDy1sm\/+7u\/U+JLhg4+8MADdUWbzAmTeWjiZZNw86VJvGOf\/\/znVZaEsEcCARAAAYsABJhFAlsQAAFbCCgvUDNPefyQ2g0py4vUpuZSBQ+gxzvk1juihqF6iO1QdJSHDG9o2Pvlo+b\/ixYPWDOpL9TYHDRZG\/CyzVc0Y7pjZfv7++nTn\/60mgd2ySWX0Oc+9zm66667SPYfeeQREoF2+eWXl7VHIhLK2ly33357MV+CeNxxxx3q+NChQ3TGGWfQiSeeWPG1a9cuVU6GP0qQDkm33norXXbZZfTNb35TRT0Ur9vRo0fpU5\/61DrPnLoAv0AABHqWQPNfr\/UsKnQcBECgVQIyN02GHLaU+FoJNx7w4Pw28eglp9MUG4uqcOUt9d8NF7l0KGUwE6ZsLOUGQg21QeZ0NZNEsKWNJElwmkZT1mjOA\/ZHJ11PR1YO02xqpmYV52+8kIYiwzXLOHlShJPMwxKxI+HgJcmXPzfffDN95Stfaahpzz\/\/PM3NzamyElZeXtWSeNesdNttt5EsAi0iUISZJc5kEWYRY9IGJBAAARAoJeDj+RktPhWVmsE+CICAHQTSuRQdWzlkh+mO2lx8mhegzTY2Hm\/4BA6jLfPB5KMp4KfFqYSaUxUdCFM0Fupou3VV5g\/6KT4uIsytvqTaPTWzeR4mevyBs3bpzp0Vnr5NBpkBnljogTQe30ihGgujV+pChgXVVOJgpVNV8zYPbGtq\/uH\/98o\/cij6vVXtjUXH6aNn\/ClFm5pbVtWcrSfkc0MWRp6ZmaHt27erEPW2VrjG+MGDB0mGHp522mm0YUP9pQbWXI5DEACBHiHQ3NdxPQIF3QQBENBLoBnhsXgswQ+PHFiDA1mUes1SPE9MohtGY9772DLZg5c4lqS+iZhnRZjed4Qea\/IeCcyEyJxgAeZNbVsXhCzYPBQZo4V0bQ9VqaGsmWlqrpkp0XBqpMs2X+4J8SVdEK+XiB95OZE2b95M8kICARAAgVoEvPckU6s3OAcCXUegOxzUzQgwESvVUkp5YfKe9IRJhMfElIiwOPF0GiRNBGSYZygRo2x\/UpNF+8zIEgtmSWSWQpCNPDt8y0PNl\/7VS1h5WUA96A81NBRRrj2aOMxKROaPFSyV2rPypJfW+JeUUX0Y50RsA20fPl2KI4EACIAACGgiAAGmCSTMgAAIVCfQjACrbqVwxsueMPHYLPOQyn4RYUHvuGxcOgWs+FYxV1hiNBZLoniNEzsL6cL8Iqvu\/vCgEleLa\/Kt861sf\/D6DyiXLxd0rdixrjlr9B1NDWe0rsMWBEAABECgOoHmQyxVt4UzIAACIFCRgC+gV2yIJyzFUQY9mVgrLE+tkJkp90t4si9uabRnUepv+MmD27TelRP6JrXagzEQAAEQAAFqIcYtqIEACIBAkwTs8KAoEZbyqAhjfonpFcoscXQ7\/c\/gTd6dBorr1c8NVNhsES9AXN8nO1p9Yt+J6ytqMUcWi94Q39Ti1bgMBEAABECgGgEMQaxGBvkgAALaCOgcgljaqNRiITJfNCqTqlyvEkqbrvZlAeoci8jYKEdI1OwlXFdZWxnuZmvNZWqri11y8QZeKHljbKOaa5aXAY4yh4wByUwymfRlqj3emrJnnTMpWyHU\/SgH\/4gFY11CBt0AARAAAfcQgABzz71AS0BgHQE7viFfV0kHMuwSYNJ0EWF+f5RCYT9LMHcLhUqoJTz\/8tEVio\/FKBDBqPBKjJDXOIEIh7m\/asuVjV+wWvK+N\/8rJXnNsdI0FhsvPcQ+CIAACICAJgL4314TSJgBARCoTkAFZKt+uu0zK\/MpyvJaVV5e1nBlJknZRM6lfXD5VwEub17pG1zCystLhveJU0rW+XJDquQBM83a4end0G60AQRAAAS8SAAeMC\/eNbQZBDxGwG4BJjhW5pLUL14kfq6VtYC8mFILaYqYYQr1B13WB2\/ydNt7wM\/rD4zFC4vzSnj5HA\/7SyYTrmhmpciJGV5PDAkEQAAEQEA\/AXjA9DOFRRAAgTUE7ByCWFrVMnuReLktl3qRSltafV\/NC0u4y\/Pgej3rmUlgx111Pv5WIpVjz63pDg9YpXfkSm6lUjbyQAAEQAAE2iQAAdYmQFwOAiDQAIEOftIsc3RB04NzwUopyrw2I119QerSstj3RiBJuU8yRDbNoms5s0DzqWlK5pZdcvsqeziPJadoNjXjkjaiGSAAAiDQPQQ6+FjUPdDQExAAgeYIdGIIYmmLlo4lWIR5O8mcsLy481yQ3NEKF4BoswkSlXBmZYoW0\/MswhZdM\/+rsvwqdHbP4u42e43LQQAEQAAE1hLAHLC1RHAMAq4i0CWPvv5aj3j2AF+cStDQxn7yeWZ42noOqfkMRUfDFIwEycg4NyzR1iGI\/NZQQ1RlK55L\/lpQ5vBJnWouX8lWTlt5qjQfS0EpmyR3z1cK+oOUtqIMeuTP+oyRt9OO0TPXvzGRAwIgAAIg0BYBCLC28OFiEACBRgjIA7ITaeHoMg2f0E9qYpgTDeA6RVz4ZY2v1a2Po4QogSFCQ\/JEnPJLIeJfcs4082p9sEwiS+F4mHK5HAWjQcpzvhIgJX0Rr0ppWrVUyFJGS8+2ti9D5\/o2xgtih01IjWWmVw9UW8qbU1ahl6NUlnWk6w7K7iZFOErjB079EJ08eErX9RQdAgEQAAE3EOAvhz389bAbCKINIGAjgRRPgp9eOWJjDZ0xbR4J08Jbzkzo7x+PU\/9IlCTCoJWCvHBzIBxgEcEPnuXPnusETqncsMROZCBCwRgv\/izXrrneqkPnVhZrxkd1baIr4cXaBRw+W+YBc7gtpdXL38BQdIy\/AwiStHEqeZTGouNYgLkUEvZBAARAQDMBeMA0A4U5EACB9QT8IwYNbo3T4r7OizDxGuXSOYoORZQIk60ctzOkLzIQVkPl1vfUnpxQLESZFXcPsbOn57BqJwH2v9J4fCNFgrFiNSf2bynuYwcEQAAEQMAeAgjCYQ9XWAUBECglEDEoEK8xNq20rO79VSe\/JcJk67Uk3q9QJOS1ZqO9LiYgC0FP9J1QJr5c3Fw0DQRAAAS6igAEWFfdTnQGBFxMoAND9Sr1XjxgVtImvpzoC39a+4P4yLbu5brt8du87hQyygnIgtAT8UkK81wvJBAAARAAgc4TwBDEzjNHjSDQowScUC08g6tEgHkdfCDE8844vr5pej3IvtfvhHfbHw3GaZjneMl8LyQQAAEQAAFnCODrVGe4o1YQ6D0CPmdcFN2mVQIRDh4ikRORQKBJAgH2fI1EJyC+muSG4iAAAiCgmwAEmG6isAcCGgkgRmn7MO2JHuisAJL5YBBh5e+NsvD75adwtEpgLL6JAn72oiKBAAiAAAg4SgACzFH8qBwEeoiAQ5rFHgHm7H2TcPihKIswpxZYc7b7qL0FAn2hQcz5aoEbLgEBEAABOwhAgNlBFTZBAARcQyBv2DBfyiExWQpVRUbk8PRIFgEX3BSrKS7chgK8dAISCIAACICAKwhAgLniNqARINADBBx6Pu7mYZwiwsJxPFjLXw+8gbU\/QzJGqnYBnAUBEAABEOgYAQiwjqFGRSAAAk4QMG2IguiQlqyIT0SYio5Y8SwyQaBAYCW7TPLqxiG5uMcgAAIg4DUCiEPrtTuG9vYYAWciB\/YYZM93VwSYkTU834\/2OuAmWdxeT+y6ejY5RRKsJMAh6EP+MM8Ji1IsFOeoiBjKahdz2AUBEACBSgQgwCpRQR4IgIANBJwRk6FI93\/MWV6wXhZhkF+N\/clKAJecmVWvZC5BC+kZkgAdw9ExDONsDCFKgQAIgEDbBDAEsW2EMAACINAQAYeekPtGYg01z+uFMAzRoTeY19843P5EdpGmEgdZlOW6oDfoAgiAAAi4nwAEmPvvEVoIAl1CwJkH5HDUhnWPnOlKzfeBeMFkfbBeTQ6t8901uLNmhqZXDmOOWNfcUXQEBEDAzQQgwNx8d9A2EOgmAg6IloGJuNa5UaFokAYm+8kfdulHJzfLH3Bp2+x+Lzvw\/rK7S522L0MTZVgiEgiAAAiAgL0EevR\/anuhwjoIgEAlAp2fAxYfjFRqSEt5oXiIYhtiSnz5\/O592g+Gec6be5vXEvtGLpLgEkjtE8ga6faNwAIIgAAIgEBNAhBgNfHgJAiAgDYCHX4+HtrYp837Fe4PU2wiSm4WXtZ9kiAL4RjWBrN4YNscASPf69E0m+OF0iAAAiDQCgEIsFao4RoQAIGmCXRYf1GERZOOJOIrOhbxVIQ4mQ\/Waws0u90D5pX1t7zSTh1\/27ABAiAAAk4R6P74zE6RRb0gAAJlBDo+AFHTAszhgXDHxFfZw28pMNkvVbCl58oo8wGfy8maYLz1kZ9Mv8Geu7WFCsd1RUuxTra0asTnK2au57J6StnlffHGVazDMrG2X5WbWcwt41PMLexkjNSaHHcdSoTBFW5jlNffsli6q4WF1ph5043NQptAAARAoKsIQIB11e1EZ7qNQK3nbM\/11Xro7lDDTfP4g6R6cOf6RTwUXtwIERJyLEpF1I06V6IIVHt9lEvmyEhxKfYq5UXU8b9AOKAul64o23JZlf0y0aAuL9gollc78ktPkmGSx96cLxqLjfBiu6f42xo+GQnw3Df+aTSJ8LJS6b6VV3Ja8Szmt7GTo0wbV9t\/qbzvsvkMvbHwCm2IbaLR0BiFXbgAcsX7ZT8e1AACIAACPUUAAqynbjc6CwK9Q0B9kc+CiXVTMRUeLksyimeq72SWj58TASYvEWChuIgwpdKOF3DB3to2JedS5NsbpejJLMJabG9FL5YL+lpsgvtuQ7FppTuDwWF1eCR5iOQ1FB6hDZENFPfHW743pfZ17OfhAdOBETZAAARAoCYBCLCaeHASBJwm0JxYcLq1Nev3t98XCbEelSGB7OWRfdmq\/dVtaX4uyR6R9qus2CUjY\/AcK1lzy6YKKtbaWGalFq1MswjzxyiyVRx9zasVg3Lkz7tTcDZGxR2lgr6A8n6J+JK0kJlTr7A\/QptikzQUHKQAl3EyyXpgWSNDoYCeOZRO9gV1gwAIgIBbCUCAufXOoF0g4BIC4v3w8fyfwlb9Xn2IP76\/9pzMPSo86JeUifjI2LDIQqAgnPwBPsfCaWjTAEVYzJjsWTq2e5b8fN46Z4ksOZb9YCRIfSOxhsgc+t0RlkeV5EhDl9ctlFpIU3SEH1Ltq6JuGyoVqCavElNJ5h2nyJZKV9XOkwfyvN+kcD7WkoCrbb23zo6FJpT3q7TXGTNN+xK71d\/YhigPTwyPUYTnijmVZpNTNB4\/gQJ+Z8WgU\/1HvSAAAiBgNwEfz09w2eOD3V2GfRDwDoGVbILm+GFonZhRosgSN8fFkcxlUj\/s5ai8lXk81c6V56tyLXhL3EL30IsswFjU6UzWEETLZrgvzMMRq0keq1RntyJUp96Yq1rpwOY4hSdba3OQ5yxxTEj3iTDuzkJupmqf3XbiteVXaCm7ULNZA6FBEjHW5+\/joB2t3a+aFdQ5GWIBuLH\/xDqlcBoEQAAEQKAVAvCAtUIN14BAhwjEQ30UD23rUG1dVo0dz6xrbGYSGYpHooVAHC7BV09yLh1cocFAH4U2Nt\/gnJmlYCBIPAOu+YtxRZHAxugJdQXYUnaRyyxSiEXvxugkDfP8sWAHPVKIhli8XdgBARAAAe0EGg9rpb1qGAQBEAAB+wiIP093qmQxtcTD81w0DrFSG9dyWNyXoNyxtbmNHac4lLqb+ttYq91VaiAwQEFfYyI2y6L3wMpeenHxeTqQPEAp093h9t1FGq0BARAAAXcSgABz531Bq0AABNol0IgSabqO9UbNLIe7N9fnN226wxcs7EmQMdtKu\/McTh0ioJ3bJeuASdCNZtN0eopeWXyZXl9+jRZzSwQvVbMEUR4EQAAE3EEAAswd9wGtAAEQ0Eygk9NmJCAHT4zS3AP7zc2\/uUzGfPPtFq+MSbzYM1LLBGQdsFZTIrdMby2\/Ti8tvkjHMscol8+1aoqjLgZ5jllg9cUBcFTAHQmig8eDlqHiQhAAARCoQwBzwOoAwmkQAAGvEmheWNTtaQ2TsmBzIGJFf6xryTUF5t9YppG39ZN\/sN7ssfImZ3goXMTnnvWrylvn\/iOZ2zUaGafZ9HTLjTVYeB1c2U8Hab+yNRGeoKi\/uSApG\/omOdohHgVavgm4EARAAARaIICvuFqAhktAAAQ8QKCGWLKj9VkWYOI9cDw122\/WXfOvLZO51NyFRt6gZD5BGUqR4cvxvDCTg5HwcEykhglsiLQQCaWKdRFyry79nl5bfpXmOcKiYTZ2L5Yzi1UsIhsEQAAEQMAuAvjayy6ysAsCIOAoASdGBCZlbbAh59ZvUsCbc2QVLlEiLEHDZ3DI877GDYjgkjXCsizDSpMsJizD2mT5BD\/HTFQLHOT5txsEamlDHd6Pc4j5aCBGKSOprSVJY4X2JN5UXwZItMXR0KiKpFitAhFgA5Fhd3x5UK2RyAcBEACBLiPggq9ru4wougMCIOASAs15dHQ0WtYJM3ONCxgddeqyIW1feDVB+WT73MQ7ljUzlDHSLC5WKGkkaMVcpqSZYLGW5tlj7DGDt0wJ1E0cYt6OJAE6DicP8jyx39Geld2U4PtQadlP8VwmMkt2NAE2QQAEQAAEqhCAAKsCBtkgAALeJuCEB0yIpTksfWHhbIf4taGfTCNP86\/wg3qqDSM1um2yMLNEmQiy1KogM1kEdH1iXS5DVAsvK+hFgMZ43pYdSyaU8pzPzNHrS6\/QKzxEcTY7R8Ya8bucWagozkptYB8EQAAEQEAfAQgwfSxhCQRAwE0EnFJgzCC9nPXsA62ZM9kTlqR82h4RVvoWEU+ZCLKksaw8Y5U8NKXlvbzv9\/u5n+INLHgExSsor7SZpC3xkzvStTQHTtmX2E0vLjxPh1OHKcNeSkkSzCOZS3SkDagEBEAABECAv5ADBBAAARAAAb0EjIzBXg2HPl41jICU9i+KCCuf2qUX0hprIsRkeGI3i7A1XS4eDodHivud2JGFtI+yAHuZw9i\/xfPFllkAL6bnOlE16gABEAABEGACCMKBtwEIgEBXEnDQAaZ4JhdSFBuOeJZtLm3Q0mtpGjg9Qr5QZ7oh88YMn0FRX6wpAWu\/r05H\/6u3UoZmxgNxWmHvWKfTIkdMlFfIH2YBbNDmvq0IyNHpm4D6QAAEeo6AQ1\/R9hxndBgEQKDTBOxQYNWfodf3jj1RRtrbc5sktP7yaxlqY53f9Vzq5IgYkaF5Ehyi0aTB6ddoVS2XE69TrXRih4YhVmuDiN\/nZ39Dvz72czq0coAkiAcSCIAACICAPQQgwOzhCqsgAAIgQJmVLHFEDk+TkD4kXuc5bbnOdUPESrMirHOtq16TGj7JOkvuuATWKA24US8wSywQ5YD9gerGO3Tm7cPn0GT8RHjBOsQb1YAACPQmAQxB7M37jl6DQNcTcIvuSS9mKNLPY\/g8rMPSyzwZ7A2ivu0h4uW9OpIsEeb3r1aYL3iQSn9LQ9Qxnwv7ZLinrDVWAF2Ku3DNamk+L+fEnCpjFbQKqZNStpCsbOsoaXKUSPlR7Sls1XGhJVax1asb30hAkpP6T6G3ll9v\/CIbSu5eep3OGTvfBsswCQIgAAIgYBGAALNIYAsCIKCdgOURkAfUwr\/CVipaG2xBosRZ5dT51WvKyqrLj9sIBNlnwK+KySUKTKIKymiuTgmXiiw0ZKrw+izC4qd1VoQZZmOut+L7id8ediUxLUP17EoDwQG7TDds92BiH+0YfgeFA96dv9hwZ1EQBEAABBwiAAHmEHhUCwK9QCCXzdHKkn2BBaJxHrZVRYBZjg2dnFvVdKnFNMXHOLCENeh7VSSojbUvHhX5p14sRXlhZCUqWLzJVi3yLHnWi9fsMnlfXnnZNwy1VY4ZnZ0usZVibx696WMRFuC+2EG4pDI37toJl\/srXrAN0U00lTriWO9lTba9y2\/R9qEdjrUBFYMACIBAtxOAAOv2O4z+gUAXE8imsxSJVfmm3hZ90LrRDA\/jWzjq\/bWWUgtp8r0ZodipvSfC1PDGVcFs15\/VxugJjgow6deepTfp1MHTMQ\/MrpsMuyAAAj1PwPo+tudBAAAIgID3CLDvR3mEKrXcmgtU6ZwTeRLWfXBDnxNVa68zOc+LJ78lQyttViPaW96+QQmsYWfK83jVaCBmZxV1bcuCzT8\/8ggdSx6tWxYFQAAEQAAEmidg7\/8kzbcHV4AACHQRgWZFUKw\/RjKssJEUCoeof6i\/s0PhWneAqS7JfLBgpMqctUY67aIyybkUpfawCLN5WJ6Luqya0okFtrc6HJJeOiprgy3nliiZW6GVXIKWs0u0lF2khcw8pYyU224L2gMCIAACniKAIYieul1oLAh0L4FQJETBYJBk3li9JCKt6tBD6+JWJ2xZ19uwFY9R\/2ic5g8v2WC98yZXZvhB3Bel6Mn+YvTBzreiszWKB4yn3NmaYg57wKzOvTT3HMlrbXrHyE46aeDUtdk4BgEQAAEQaJAAPGANgkIxEAABewlkM1kyOJBErSQetfhAvL74YiMu1F+qa9lkluIjjXn5arFwy7mV6RSl9\/FQ0B7xhBWC2NtLX4JxbIpO2ltJG9ZjwXgbV+NSEAABEAABCDC8B0AABOwj0MyQvdXof9Ua4w\/4qW+oj2TooVOpme7UamOQIze6VSDWane1c4mpJGX294YIa3ZYbTVm9fInohvrFXHsfCdEqGOdQ8UgAAIg0AECEGAdgIwqQKBXCTTzoCbCKhAIkAitYChYFl4+GA6q+V5yvuFkh8LRpMCMLAfk2NjfcFe8UHD5KIuwA15oaXtt7MQcMGmheBQj\/ioRPtvrQttXZ81s2zZgAARAAAR6mQAEWC\/fffQdBFxEQIYg5nI5Jb76BvuU4ApHwmq4Ybw\/3vQcIzv0l05cuXSOQrHumoa7fGSFRZjNE6R03oQWbDXzpUIL5ksuydPWvm0lx+7ZTRr2re3nnl6iJSAAAiBgHwEIMPvYwjIIgECzHqM1z+5WVMSWhn01W3dDd0ujUe5rfKh75oJZ+JYOswg7uOZGWie7YNs5Acbvj4A751olcstdcCfRBRAAARBwjgAEmHPsUTMIgMAaAi0JrTU2rMNOPihbdTa7zaVyFOkLN3uZ68svHVqh7KHuFWGdugESjGMydmKnqmu4HglLjwQCIAACINA6AQiw1tnhShAAgToEmhFBfr+fJBS9tqTRWaWtTRUM+QIeaWiFttfKWjzIIuxwrRLePKfzS4JGCIxHNjRSrKNlEll4wDoKHJWBAAh0HQEIsK67pegQCLiIQBPawjRNSifT+hrfRN36KoWlUgKLBxKUPVKa0wX7HXbsmewFGwqNuApcykj2zLIDrgKPxoAACHQNAQiwrrmV6AgIeJ+ACLB6a4E12stmvG+N22y0ZOPlOu1Rabxlekou7mcRNqXHlhusOKHrt8S3uqHrxTbwggOUMTV+WVK0jB0QAAEQ6A0CEGC9cZ\/RSxBwhECzIigSj6hQ9Foa68STcisN90o7W+nb6jWLexOU6xIR1mEHmCIof0dhn7tC0qeMVBvvCFwKAiAAAr1NAAKst+8\/eg8C9hJoUlzIPDBdqVnxp6veZu00iahZ864pvyAi7JhrmtNGQzp\/x8TjdHL\/KW20Wf+lMjQSCQRAAARAoDUC3bUITWsMcBUIgEA3Euj8c3I3UtTap4U9CRry9VNw3Ak\/kqau8ALJTqRoIOZEtW3XaeZNemX29yTbwsso2bfyZMv58rNazlDb42Un+zbTzo3ntd0eGAABEAABNxCAAHPDXUAbQAAE1ILLsvByvZTnB2CZN5U385ROpSkSjZDPX0FtVciqZ7vueTtWd7ajnXU74lyBhd3LNMwiLDDmjJBpu+cONVsEytb4Ntq3srvtLugwIF65RlLOzNF\/efWfGilas8y2oVNoMDKkBJrUnWeBJlt\/3k8n97F3sKQ58hlRTLxbbGtJdiAU0Bt1tVghdkAABECgPgEff1CVfCTVvwAlQAAEQKAZAgszCw0VF1EV64uteyjKZXOUzWRJtqZhkizOLEJN9pfml2hgeID8gfVDF5ePJWjh8GJDdTdaSB7asslso8UbK8cCLDHXe\/Nphk9lETZqz38\/x\/9bE3XLdZSKXGuf\/+uT2kVTH29FYU\/lqyutY6uEPPiz8M\/z\/VJi3Dovt5r3C\/\/KrpQzcqK0ZCHP+m01yDoubNfn8pcO\/CNrg1mpzz9AQR9\/j1owbmUXt+uzrXYUi\/DO+lICTNXPffRZp2W\/eJmPfjf9O9q9+FbRYyWCyPJeiTQq9XYlc8nilbp3RsOj9NETb2nJbGwwRjLvFAkEQAAEOk0AHrBOE0d9IAACFQnIg61EQAzmg8rDJWHpU4mUEl7HH6j50uIDYcGMnJOyksrmkB1\/WiwUdOtv9SDvXOOEn+VBVE2RX+pfYSstC0QCFBvgB1XWueoxXE7xS34Vt1JQ5ReuK0Z3tPIKxVUZKSoX+nnI2YpP1pSyhIFs+Qarf4UbXciRjEKZ4795T+VJudVSxWOpwL7EXwmUCSH7aqpteSAwpFhVKyW3qDyViijrzPpS1hm5D8W0yr9wnKflzBIdWj5YPO3Ujoi9VlNyMUm5TI7ig\/Hi30CrtnAdCIAACDRDAAKsGVooCwIg0BQBSxg1epGEobfWAosPxJXnq9q1Rq7gCVheKCwKGwqHSK4pphrPlcUyDu2YPn5sDPCDo7gXDD\/5g0rZrIqT6g3nZ2CVlAjhfXUsD8ayLw+iPCxT7XFFNDoAAEAASURBVEueta+2hWNT9ldfap+9iFK+Xho9cZA2nF7Ctt4FjZ43AxT0h2jO8FZ0Dm41GfzjdKokp5xuU+frb+ANXKNR2VSWlo1l6hvpK\/8Cp8Y1OAUCIAAC7RKAAGuXIK4HgR4lUPRKWQ\/\/wsHaX90ml1sfepRNrx\/qJ54aGQZYKWWzWTUk0fpCvNnHMulPln8y+QxlZEvpwr4c8yvN6x5t7ttE4b4gKQHFIkq2xR+1vxpIQOWuBhCQR3UJMMBDtOShfW30uE1Tp1Lm4PohlJX62I15MbOfxahJ88aMZ7rn9\/F7sNk3mC29k0ZUF+y2VLlqtOjhtLOSBmybjXyDUMeOkTVoaXqJ4kPxdUOg61yK0yAAAiDQEgEIsJaw4SIQ6G0C4kVZnNM7v0oJIIMHd+V4vhdP3M8u8cvg\/VyOMryVfcMsCBwpk8lmKJVJF8pyGZWnyvM53g4M8IN9PEcpFk6yaGzaSKv9dI63vIaROs6leJ+PZcuveukj532QBkMcjU6ee3U9gPt1GarX+tbPa3jGrVl53BxUHsEFY7ZmObecDPjcIZidk19uuRPcDk1vTvlMS8wlKBwLU6SP1yMMVv6ix0U9R1NAAAQ8TAACzMM3D00HAccI8JfukVhh8rr1Tbi1XTt\/yMq3ttb5VDZN\/\/Dg\/0vf\/te\/o9mlecqx+NKZ3nvuRWSc3LoHrlJbZNie9uSMA6O5bnSgjX3mkBJhi8Zcc21zoLTPJQLMga67rkoeVKu1TZkke7z5FR2IqgAdxc8trbXAGAiAQK8TcMfXeL1+F9B\/EPAYAXkoicaj6iVCTF7haLjw4giFoUiIZE6WvIKhoHrJN8rqFQioqIXxaIz+\/N\/8GT359Z\/QieOT2glIQA\/dSYYRak8dEDdtt1mTl6FeO\/rNYRoMjNQr5vh5nrXneBucbkBAhmG6IOmVX8c7lFpKkQTpQAIBEAABOwjgfxE7qMImCIBAwwRGB0ZoYni84fKNFtTtUZN6TR4CqT15YAii9j7XMCgibCAwXKOEG065RDXbpT4aQDzEa3K5IUn4e7uSeMJSy\/WHJttVP+yCAAh0LwEIsO69t+gZCHiGQDgY0t7W3GqURJ2GDTs8QcWFlnS2VK8tO7pdq4UD5ggN+N0uwmr1oPvPDYYHXdFJuzWoCDBZcxAJBEAABHQSgADTSRO2QAAEWiIQDoZbuq7WRRKUQ3eyZQgiPoUr3qaB\/Aj1+93hZanYQFdk2i0\/qndyNDpW\/WQHz\/AqgLbXJp4wJBAAARDQSQD\/9eukCVsgAAItEfj3V99E55xyVkvXVrsoZ8McMInCqD25ZDSb9n5pMDiYH3WpCHNO+JRhVatgl+V07CDkD9J4VP\/Q4WY7IMtA2J1krTAkEAABENBJAAJMJ03YAgEQaInAdRdeTWeedEZL11a7KOcVD5gHhiBqDjRX7ZZVzBcR1ud3x3A3q4E61p6ybHl5+57J9zrf\/A5oYVn03Vr43fkOowUgAALdQAACrBvuIvoAAl1AIKh5HljGBgFmh1eNvCDAnFRg\/N4eyo9R3D\/gmne5nYEfmutkB9RHjQadwAuTO506JYbhBXP6TqN+EOguAlgHrLvuJ3oDAp4kcMGfv5\/2HN2nte12zAEzbIi4lscQxIbu+3Ceh7vxV4Yr5lJD5e0sZORtGIpqZ4O72nZnRGh6JU3R\/mhXk0TnQAAEOkcAHrDOsUZNIAACVQiIt8o09c7lyGT1z9uwJQy9BwRYp6MgVnmbkIiwuL+\/2umO5Xci8EMjnemM9Kjdkniwr3YBm8\/qXoi5WnPzvAh7Nq3\/M6VafcgHARDobgIQYN19f9E7EPAEgf\/139xG73n7hVrbmsnqj1xmTxAONzxGa0Vvq7FhmqCIL2ZrHY0YD\/gwgEQ4hQP6l5BohL9VxpbIpJbxNVsMQ1wDBIcgAAItE4AAaxkdLgQBENBF4L\/+\/L\/TM68\/q8ucspPJ6RdgOc1eOmlo3hNzwLTempaNmT6Dln3z5Pf5KeyLtGxHx4VBcl6AecB5qgN1TRudiIJoNUDC0YsnDAkEQAAE2iUAAdYuQVwPAiDQNoGzTt5Bm8cn27ZTaiDNHrBx\/4bSrLb3c2aubRvrDHhBgDn8zClD\/lKBFZrLH6O0yQvj8lw88UA5KcL8vsC6W9npjE4Nv+t0v9xcXy5rw2eAmzuMtoEACNhCwPmv8GzpFoyCAAh4icDTr\/6W3jq8R3uTH\/3Fr1R4+4nNgzRjHmvbvh1DEL0RhMM5BZYLZGjZXCBjzbpuBREWIhkAl82n2763zRoQL5zjyRtvHscx6WyAkTUoFGls2KW8R+UzI5fP8TZHOd6XAC7yRY5srbzCsZSRssfzDXVdoXzBhly\/aqdo17Jn2S9sA\/z+\/A87\/6POrsMWCICARgIQYBphwhQIgEBrBEIBez6KwsEwPffWi0RvEZ2\/\/Vwa2hSlOXOmtUbyVbZ4wBwO8d4IDCfklww3XPEtUdpIVW2iyQ+rQZ88DHOAhLz+IadVK+YTrhBgMgbRiZtTC0wT5\/Ic3SXAnkRhKS8fh7ks7PvUvo8XmvbzS\/J96jzvc5\/VMf+WJGdF6HTifvxfv\/172rdwgLJGVn0WyDZr5ArHsjWzdPGO82nJN6fOO+2hPLh0kDYPbG7ijqAoCIBApwjY89TTqdajHhAAga4gcPMffJgG+wbpZ889rrU\/ERZgifSKsvmb158jep3oojPOo9hEgBbMuabrkm+wtScvTOTp4EO+DDdMB1KUMBYbEhcFERYmeZjnR2Dtt6eaQXnwdzqt5JYpww\/9lhQRYAOBIQr5G\/PQ2Nn+ofAIkemj+fS8EkiyhIOsn1bw\/BgqT5dAMTfZL8Dky5cf\/\/4hyrDoqpUyRoay\/tplal2v89zzU89BgOkEClsgoJEABJhGmDAFAiDQGgEZipPO6h9GFqqwuPNTrzxDvld99B7+pjo4lqclHt7WaJJ26k4IwnGcaM7Pww3z64cbHi9ReU9EmC\/go4AZVEO0KpfSm+sGAZY0kzSbni7rWCqUoonwxrI88ZIpsbNOM65KoDKBXS6L5Mi6rHBGjgoXyO+h0AhF\/PFiGak4lUvT3vm9hTolowvS3sX9dcWX6mYZS2c7\/vThX9MfnnJNR7yDzvYUtYOA9whAgHnvnqHFINB1BO7\/1U\/oyZd+pb1foSohssVb8uTLT1PAH6CLz7yAnyLlwb\/+Ar+2eMBWH2a1d16jQbufKQvDDZc5wEay5VaLZ0WGIYZ8Yfau2OCpbLllnb1wMTtP8upU2sfCZC7VvDdZZ\/vKJaNOy8dtvTb7xvGDGnt2\/63UqHrdKbkvr8++RqePnbHuHDJAAAScJeCCWcTOAkDtIAACzhMIshCyI9WbWyaT3h\/\/3VP0y1++QIPLE7zIb+1FZWXOh+7kCQ+YTSsxy4NzuhjdsHXxJfdE\/DK5PM\/JYRHmJ3veT6X33g0P2pZnqrRdnd6XOVq9kF6deb2hbrrBM1ra0KcOPVV6iH0QAAGXEIAHzCU3As0AgV4mELQpCEejdmUi\/WPP\/4IioQi958zzKT+QoUVzvRfBjiAcnfj23o3vrcJww0WObqhrWGdBCIgIk+ANQY6PyDOObOu6eFGdT86LHwmI0QvplanXGuqm2\/6eX5h6gRLZBPWFan+51FDnUAgEQEAbgd745NSGC4ZAAAR0E\/jV739DR+emdJtV9oL+5r5jknlojz73JD32xNNkHArTBt8ke1aOP+TaIcDIC+uAabw78oAqa3otmLO2zdcSL5gE5LDTEybBQpCIh\/F2\/2NEMpei3TN7PXm7JWz9noU9nmw7Gg0C3UyguaeTbiaBvoEACDhC4O7\/9rf02zeet6Xudh4On9\/9Ej2\/m2hicIzOfduZlIotqZDTuhsqfpTjEk+3dU32NDl7RHwlA0uUNAqRKTW1TpkpFcqSocLSM1i7PGES+tzp5Ib3jXgbnU52e53emt\/N79zG\/gicp7H+bsyn1nvz15dCDgiAQCcJdP9XV52kibpAAASaJhAJR5q+ptELZI2hdtOxxRn66W8epyd\/\/jwlDhg0N7vcrsny6z3gAWvs0bO8W2uPxGO07J+3RXytrcs6Pu4J0\/9fXS8H+rD4yrYXhiA2GoBDeOj4WxE7OtNDbz3AERw7u06ezvbDFgh0IwF4wLrxrqJPIOAhApFQ2LbW+jUOjxKPxy9f+Y167dz2Drri\/HfTqadsokCgPZEn36y78VtznTdFohwuUWFxWp12y2xVgXjcExZkCajPa1W4b76GPSNlbdV2UKXT2uzXN9SJBZDrtsJmDK9ONxaAQ7XThQpsMbNIvz78K3rviZfURYkCIAACnSEAAdYZzqgFBECgCoEwL5ZsV7Lr4fDZ3b8jeY32D9M157+fznvHGdQ\/EG2pG40ObWrJuK6L2gg4Yfhzar6X7XOm8tWfwpUIYydYIB9kwaRPhAV8QRV5URdmL9rpiSiILhhm2e574\/mjz0OAtQsR14OARgL6x2VobBxMgQAIdD8BWz1gNvuWZpfn6fuP\/Qt98lv\/me75bz+mfXuP8RpUzT3ge0KAtcgxG0jTvDmtVfRU+4uoLr8KV2TNDIknzq8xap+OIa7V+uOVfJ\/P+ccIuyNSnjJyslduR9V2vjn\/Bq1k9c+9rFohToAACNQkAA9YTTw4CQIgYDeBsI1DEDsVIEAeAH\/+8q\/Ua\/PoCXTNuy6ls3ecRtFYqD4+D8wBa3Zmi4jKdCBJCWOxfv91lainwLiejJmmsD\/CnrCAluGIjguwBvqsC281O3Z5mavV50T+tuGTnKhWa53yxdDL0y\/R+SfwwvNIIAACjhOAAHP8FqABINDbBOz0gPlqDEuzi\/rB2cP09w\/+gEI\/DdL7z76Y3rvznbRp03DV6jzhAWtiXov0x65Ih1UhNnFCpwjzdWDB51pdWxv5sVZZu865oQ12\/w2dNLjFLnwdtfvMkd9AgHWUOCoDgeoEIMCqs8EZEACBDhCYGBrvQC2dr0IWd\/7Js7vUa\/sJp9DVF1xCO952EoXC5UE77H541NHzRvVXIdLhAkdcS+uotkkbjbuDdIkw5+c\/NXpnmkTZRHHnGTTR2BaLbohPUF+4jxKZRH0LbcyXrG+8vRKvzLxC86k5Go6OtGcIV4MACLRNAAKsbYQwAAIg0A6B8962s53LPXHt64ffotf\/+1sUj8To6p2X0oXnnk2jo32q7V4QYI1A7kikwxoNaVx+FYzoEGHOh2Bvttc1ALZ4yg1zwFpselOXnTq+jV449GLda9wc01Q+a35x8En6o1Ovq9sPFAABELCXAASYvXxhHQRAoA6BC1iATf2XN+jxF39Bu154kvYd3U8\/+uWP1VWXn\/s+uuHdf0j+iQz5Axw+gcPKy5x\/n58HPvGzZ17NnxK\/i8mPFrI1yMgbxRrTvP7or\/6f3xaPnd5ZSSfpX556UL3OPflM+oPz30PvOO1tZN9KaJp6XMfR0rFIh5q6Y5nRIcIsW7267QUPmNzbU0dPbkiANTtfstPvm137HudoiO+jwchgp6tGfSAAAiUEIMBKYGAXBEDAGQKyltb7z7lEvabmj9FJG7fSvz71AD392rN0yx\/+O9q+bSv95tgvOYhCqryBdYRBMFg+3K\/8YmePntvzEsnrwu076T994NOUfIkot1SnQ441uXq7JNLhojHnWMuOV9yaN6gdEdZajcdb3A17veIBO7nRQBzV\/1RccbvTRooefOvH9G93fNgV7UEjQKBXCTgfP7ZXyaPfIAACFQlsGJ6gv\/x3n6Gnv\/Uo3Xbt\/0y\/fu0ZWszMs\/jKVCxfKzPgd68As9q9kk3RYvwY5S6Ypv73mRSddH+bpe3icUwFVlwiviyarW1FhBk+k4PtN\/dfosuftVuD0eRVOsP6N1l1sbjdYeilos2Dk8X6au54QJU\/c+QZSuaSNbuBkyAAAvYSgAfMXr6wDgIg0CIBCSH\/v3\/4f6NDif30yKEHW7IS4GGLbk+ZbEFYiqBZCs4SnUEUP2OA\/IfitPxqjpyI5LiW2dq4AtJWN0c6XNv+Ro7FuxrxR5m3n3vX2Fpu+SbXfGukHV4r06mlHhznsvaPoFqDWlXlfJ3fF+AXD7Pm96AM7ZQvBOS3bGWPB1+rH1U1R3iVnEKzeE\/Vm6eh2BBdvv0yCvKXTwF\/kAJsTxYMt46DXIfku0E4V0OIfBDoBQIQYL1wl9FHEPAwgcm+LbRj+Cz6\/Xz9CfBruxkMBei87e\/g+WL8sMLzxp5+5flikTO2nEpjQyP05Iu\/KeY5sZPOrffsrdAS0eQSRTZHKfjWEK3sPj6vzYk2ltbpbKTD0paU7+twPKSbFGEiRHs9uUGAdeI+pBqM7JnJGJTkocQyF9UwTcqZBpn8Mvgl+zkzV3gZq\/scLTVrZrW9jc7f8k565yXv1GYPhkAABOwhAAFmD1dYBQEQ0Ehg59i7aP\/yXlrOsTBpIqX9Cfq3N1xRvOLma66jl9\/YTYN9\/TS5ZYSOHlxwXIBlstUfvtL5FKW3pWhwcoyWf+2jfPWixT7asrOqM5yOdGhL39YYbUaEmasBX4pD4JiTLD0nsWEEmQgDy0sh+6sYS2qUHL6vq+XkRLFM2c5xeWlZKeQYFPSF1UU5Wi\/kSypSuyEuq8wWbVslVjP4i4qCR8UqUNiqPK6w2E\/VzsI5gwVEL6R0rrGlFVYySXrx8O8dQxINuT6kj2NsUDEIuIkABJib7gbaAgIgsI7AQmaOZlMzdOboOfSrqZ+vO99MRooF2Slv26AukXk\/waDzH4FpngNWLy1GZijyvigFXhui5P7Oe8Pkod+ZSIeFYVbC57inxRqGtXpODdXiACakT52KCBOxEvSHuOf8oxSI2lP7q3tqXuLvpn+nonDWu4d2nP\/\/2XsPMEmu6u77dO6e6Z6wE3Y259WulkU5I5BQQCKZYGPz+sMYG2MDBvvFYH\/GnwPOfm3AgI39Eh7Dg8EYEySwSTZBgLJQ3JV2tTnvTtpJPZ27v3Oqp2d6ejpUVd8K3f2\/o96qunXr3nN\/VZqpf597zx0Oj9Bo8rw2LG1zbAtlCvVFWJJFxLnEGaWmSARSp1MxGqq1VqRy9dla27r+2sOBsP7CKAkCIOAYAeffPhzrOhoGARBwM4E8z6958MKP6OjsIQrwi7B4wVQnP0dfdDqls\/qEg3jDaAd7w9YP0uwjbPWCDvP6POTz8wwRnu\/m8\/NsEe6T5Glh+7Vj3pfw\/ZLHWzlX3OctD8v0Skj\/0kfEDHs6SmH+eSJKcfgmY8p7sxTz1g9drflE5B9xzyweLCdc9Jvwv8Ud7eRi3vKiho78PK9l2tAV9QuLmMnoeOnWhGFZX+rXqvasCEFJsj0+e4w2sQjL1hFhIX+bekds4J\/MNv6iRO3dNVdbuF3vsTkcuAoEXEsAAsy1twaGgUBnE5DJ6DOZ4iu1zJF4ZOx+5UD8ioN0yMu4LLbcHemiSCjM+2EKyycYpFAgSIFAgIIBnhDP4fEl9L58jNowExmn2K29tJG2L4ow5WAqKhTBlub5K7qTDS\/ElbY4Fawk6A1RIjdfaY7txyLCTvIw3Y3RTTVFWJb\/P\/J7Anxen+i3vRMmGyxf+89kFQ0v0zsHrGFFFhcI++EBsxgxqgcBJQQgwJRgRCUgAALNEjgTP8kvkMf55TCrTVjP8XY+G2+22rrX+1gIXXXJXk0gBVkgBVkgBXhYogxNlAiK8tE8RuwJkok9pZ\/Sgs9iq0yqT7OnRD7VJ9PLEC2ey6V9yswRPWNA05RdSbP5adpfeJy2B3ZTKBMpP9XB++J2sz+JdzZh8j6qtlbmpJ2aO8kibAMPR6wisvgZHggP0oXEOdVNO1qf3qiVzRipdw5YM22ouBZDEFVQRB0gYD0BCDDrGaMFEACBBgTmMrP0\/bPfaVBK\/ekkz\/UJjnCUMkqwPJJPWWpCIJXVoms3z9HSZHigocQv04ezz1K\/f5DWFjaZFnOG2nRzYWf0Fw+P5SAYDiX5QqAyyRcXp+ZO03oWYdVSsjBXLdt03tLcPNNVNH1hzoblAFpHgLXpMNOmnxJUAALuIgAB5q77AWtAoCMJyDCuy1ZdxUEPZL2aAA+TKm4nkmO07+KTljGRuU5uSOXR5YzaczE3TtOFSdoW3E3BtEXDj1a+5xs10\/LyTt1J8YC5LckQw+OzR20xS4YKO53EI211Gp0bs7oJJfVjCKISjKgEBCwnAAFmOWI0AAIg0IhA0BekFw6sXLvG6pfq4uKmjayz\/nyz+ibvydOhzH5a5R+mtfkNZINDwHoohluw+mmpbpB8aeBcavbJad5yVwgwix948X49eEIi3+hIDt8SDEHUcY9QBARcQMD5r65cAAEmgAAIuJOAjz1hliYJ+eeCVFD0AjmZG6Xn8k9SJqBvzSIXdL3lTbD8Ga1DqLhmV50CNpzyeZ2PJCqDiK1Mj154nBI6losQG6oNC7XStsq6Y6FoZRaOQQAEXEjA4rcbF\/YYJoEACLQMgbDf2gATEoLdDSmv8FvznCdHz2f30ZB\/hFbn13WoN8y+u+p3VIAofHBMIuOFCkxeqe6y0oLY6mpcXtMEjdFrr79Lyyx+ZyN9FvbFvkteaQHrXKZAT5\/bt7wCG4+2Dm6xsTU0BQIgYJYABJhZcrgOBEDAcgJRf8zSNoqvT5Y2oavyZuaA1WpgLHeeJmlCi5Toz7hvnlItu1st3+fgHCjn5RfxUnHOD6Sx0gMmgXqennqC9Ia6XxNe79gjLMNhN\/ZXD77imFFoGARAoCoB539zVjULmSAAAiBAJHPDYoH6i\/82w8kNEdzEfisEmNSbowwdzD5N44Hz\/KYsOSaTG970G5julCfG63FyCJ7zN8brgmG8smi7VenA\/AHd4ktscBLHloFNHMTIyefRqruAekGg\/Qg08ye5\/WigRyAAAq4j0B9aZZlNTr4slXfKKgFWauNC9gw9X3iacoFsKQtbRQSc9AC5YQ6YxwUeMKuGIMr\/lw+OGlsA3klJvG1wq6KnGtWAAAhYTQBDEK0mjPpBAASaItAT6G3q+roXu0SBqZwDVqu\/GfaGHcg+RWsCG2hVdrg4haVW4Yp8pwMLVJjjqkNnI2k6+bpfvA2u8IBZFITjWPIYXZi\/YPB5W3lPRMgVl9jgBd55vT\/58fFwQQlg4uPfQV7eF44+9qZqZ2Wf82SJg4AvQIMDvRQNdVEoECK\/j8uw6JV1A7W6eF\/b8vHqnmF6bOxBbW26VaEBWhUapO4AgnIYvIEoDgK2EIAAswUzGgEBEDBLYOXrjNmaVl7nEv3F0\/mtG0JV2etz2VM8M2yUtgV2kzfTTsOVnJnR5+QwVjcIYyf7X3q28xa5Ah+cMOb9EntmZucoP0+UzWUpm89Rjj\/NDJHcsGod3XTNnlJXa2zl90eexjJnaWzq7LIyIV5jcVV4UBNjJVEmw7rdcN+WGYoDEOgwAhBgHXbD0V0QaDUCM+lp60x25p19RX+sHoJY2WCaUvRc9klaF9hEfdnBxt4wK1VwpXGmjx0y0sFnyKEeL7tD4rFxOlmxEPNoZpQOTR0y3DURg7PJOcPX1bpABFwzKZVP0bn5M9qnVI941n5h2y+XDrEFARBwgIDzvzkd6DSaBAEQaA0C6VyKzifOWGasx+OGV1j+7tqib\/AbgTuTPUFHPM9RwW+fB66RTebPO6OEnAr+UeTk\/PPrBk9KMx6mWs\/bycSJWqdszbeib1bUaSsUNAYCbUAAAqwNbiK6AALtSuBhngCfyWcs7J7zL7DSOSdfiJKFeXo29wTNBCZLyxpZyNu6qp2RX8Wod04txmy357Ta3XODANMbIr6a\/bXyErlErVP18xU\/iPm8+i9HnHpe64PDWRDoLAIQYJ11v9FbEGgZAgem9tHxuSOW2ltQ\/LJk2lj171iGTTmVPUbHPAfYG+YOUWq4Aw5eEPQGHWkdc8CK2PPaoshqb4FpAabYlpwFIfa7\/N1qYaE2EAABwwQwB8wwMlwAAiBgNYFkLklPjD9qdTNcvzvERsTfRUPhEZLhbOJRWPxZ2BfXlORPpy\/SbMa6OXHzhTh7wx6nTYHtFM1y9El34LHhOWiuiQCvV5fIceQFm5MrBJjNfa7WnBVh6E3fT8Vf6jQ7B6war8EwR0FFAgEQcJQABJij+NE4CIBANQKn5o5TtmD9mlUiamThUolW5mTqDw7Szt5Gkc6Ijs8etlSAlRicyB6mbk+MNvt2cDi3hTdKEWOKXy5L7bX6NuAJONMFFwhk+bLA6ZS3IIrofNbkEETFMKwYgjgYHlJsJaoDARAwSgACzCgxlAcBELCcwFSa5yPZlPwcEcxpAaZ3mJGdi\/7GC7O0P\/s4bQ7upO50zKa70UQzJsSIzKGa4Yh1EgRF5uHJsWzlfsiLr\/ZTvi2d07ZLIcbTuTRfw8dyHW\/l2tK+li91cP7a2FoKhtUJFld4wPhLDKeTFXMoe4Nm1x808SDWAai6bxIBcX33xjot4hQIgIAdBCDA7KCMNkAABHQRkBdgCboRz8R1lVdRSBZIdTrl8vq8fXYKMI0Jv1sfzzxPMV8vDXvWsAes+HK5+K\/scJllQoDv4dLcOt5ffB8tlVq8mi8u7S9sFwqXShZrXjqSykpHy\/Y4P2BiHpa83P7noW\/Zdvvl2Q7yj6pUYqGqPlP1OK+\/NNFsyvY6F7141UvoqfEnKcWRWJ1Mqr8cumLgWpIhz0ggAALOEnD+zcPZ\/qN1EAABFxB4ePQndHTmkC3DDiu7G\/A5\/2tQ70tWX3AV+WJ+8mpzw7w8L0xWYZL5YbKVY8\/idmWeVpKv9dJkaowOTu+rRFFxLG\/WRWE0m58mf9bPRy6IFlJhZenQWzAeU8ru4XOqoxaqrq\/E0sjWbobVbLMiCmLUF6Vb1t5K3zn17WpN1s5TvLSFSg\/YEM\/92tm7u7btOAMCIGAbAeffPGzrKhoCARBwKwF5gbJjzle1\/jsdknmoa5AigUg101bkRQM9JJ9mU\/lL80BoiDZFt2vCTPJFoIl4O8+Ltx6fW1qIdkmONdu6i6632Xuj2mOluj4zd8ZmhFVNVClSyhu4JnYtPRp+hCaT+odEF7+yKK+luf28ovmp3f4o3bD6JdqXNM1ZhKtBAARUEIAAU0ERdYAACDRFwOfxNXV9Mxf7DXjAghztLuwP8xCeMIUD\/JFttU\/FOSkfKi\/H57U6OC\/gsz+AgwisUvIy+2pDklYMd5S5PqrfLktGOLRd0UeL7VDtsXKDALMYma7qZa6eFUmGJ9+19m76wtHPG6he7f8ker3jtQyUL1V29+2lywau4oBDeOWrxQn5IGA3AfzfaDdxtAcCILCCwObYNuoPDZDf46dT8RN0cu7YijJ6M+SFQ140\/ByZrrjlfTnmyedSv2zF6xXgPNkOXbJRC74Q8ocWRVEtcSVD\/NohyWDEpVT9hbHcSyZly69YutY9e2bFiPTT7LVGe1+dtNFalsqrFnRLNRvYc8H\/E1aEoS8R2Nl1CW3t3UZHp\/WtSaj6Hosdcp\/N\/O6R9eluXXsXDUdWl7qDLQiAgEsIQIC55EbADBDoZAKrI2tIPpLWdK1ncSRiqZaAEnFVLqjKRVVAG0JniOWgodJtUbjcAyYRAKullS98bpdg1XrROE+8YFbMIarWsmrBZJdwrNYXN+XpjSJq1ua7Vt9FH5\/+R7OXN3+d\/C9q8H+\/sC9Ct6+7W\/tiq3kDUAMIgIBqAhBgqomiPhAAgaYIRPwRupHnKiBZRyAW6KVrh27md7rinK9qLbWcB6yGkKzWt\/I8ewWY2qFyqgVdOZdW2rdqDliJQV+gv7TbcGtFoBqj+kvme92+7uXUYzqUfsNuogAIgECTBCDAmgSIy0EABECg1QiI6PB66odD7xQP2Mp+Wnc3VXusVNdnXc+trZlXYLO0gXQ+rb9+g56qyopf9sJbacu6tZrHK58vUDaXM+T8ivpjdOf6V1J3IFpZNY5BAARcRAACzEU3A6aAAAiAgFsISED78qQJleqjFcuLObhvzjgJQmJXUu2xKvA6Zo6nJgWHCvut9oBlCgYEWBORarYNb6YX7t1CXq85qDJ0+6XrXgbxpeKhQh0gYDGB5X9hLW4M1YMACIAACLQGgcohiG632pz8Ilk9zbauqfZYqa7PFAiTQz9NtVXjIiuDcEiTRjxgeZMCzO\/10StufIlp8SX\/v7545HbqDeofLlkDJ7JBAARsIAAPmA2Q0QQIgAAItBoBbZjiwuLO8nLnfkFmToKVBySx+h7VCnhitl1XCDCzxiu8TjXXStNSRoYgmhRgr77mZRThRdbNpmuGbqS13evNXo7rQAAEbCZg\/v92mw1FcyAAAiAAAvYRkGUBblh962KDR2YOLO67ccfs8D4RmnYlKwI02GV7rXbcIAKtjmKZNjQEsRap2vk7Vm+lbdtHahdocGZX3x66pO\/SBqVwGgRAwE0E7PvL46ZewxYQAAEQAAFDBOwbqGfIrMXC5vxfPATRxnWszIrExU66cscseXWdsXoOWDqf0m2sUZEtC8G\/\/MabTQ89HImspasGr9dtHwqCAAi4gwAEmDvuA6wAARAAAVcTsDNaoDkQ5oSArR4wC+ZLVQZLMcfO\/FXmqJtvr9qVbpoDZtQj+Jpr7qJw1NxgpAAvtCxLdtj5DFfjjzwQAAHjBCDAjDPDFSAAAiDQgQTc7QMz+uJbuoF2Cpg8qY9aaGcQkRKz5VvnJZjVCzEbCcJh5Dm8ZGQ7bd02vByngaPrhm5CxEMDvFAUBNxEAALMTXcDtoAACICASwm4PwiHOXCtPgTRac+kEcFh7g41vspqD1jK0BBEfYI0HAjTXTe+iDwmQ85vim6lLT3bG8NBCRAAAVcSgABz5W2BUSAAAiDgLgLtK8Ds+zNoRbQ+Oz141Z5IN8xrs9oDZkSA6V3V4I0veTWFu82tQRf2Rei64Zuq3Q7kgQAItAgBcwOPW6RzMBMEQAAEQEARARuDVZi3WIZJ6vNAlNqwU1gaDdBQsrHe1ukFst3gAbOCaznzSCBC2\/q2cqAML\/m8fvJx5ExZwNsnx7zlI21fzsvPllt3kt\/nowAH2Aj4AhTwB0jW+ZKAG5KfzKYo0z1b3oSh\/Z29uynkCxu6BoVBAATcRQACzF33A9aAAAiAgCsJuHsGWBGZcflFZOc6YFZ4i1QISKlDkw4sLLR9FhIeYmHBols7w9uldeGkJOcvnJNAEHuH9mpCxCcigz9S1u\/xL4gUFiqaYOHrRLQs7EtZqT3gDXC+1F9sr7SV+hdtWtjX2tTaLbVf3Pr5WkpY97\/Npat30oYh\/XO1dg5vrWkMSzV6fup5ymRrFml4YlvPzoZlUAAEQMDdBCDA3H1\/YB0IgAAIuIKAvCy7PYmNRj0yIhbEh+H3BTWPhQiHIHstxLMR4qFe3f5uzYsh+ZoHQ7YsGjSPBu\/7tGMfZfMZmsiOa2JC7JB6iyJFRAKT43+kHfGGLKUa1nK0xIKmJovevCWfXqk8b7XMAm2PXsK2VPtTvnAVb8qvl7aLx0u5S\/aY29vJNmQobfjioqhT81wJGaue0Rw1oZYqqMxl4hTPzlXk6j\/sC\/ZTNBDTfwFKggAIuJJAtd\/arjQURoEACIAACDhHoNbLreRrP5pnouhBKQkPVh2a+CiV0Y65C3Is\/8rJ4l5xq+WVzstp7SzRZHqScoXSS7CIjzIhIpJLExml\/LzkLJSRbfFY1oqS\/GVbztvNi+DKp1pa37WZ1oc2Vzu1Ik8iHH5\/7FuUW3GGM0TrlPSOcZ1SrcbFPOmP1UEoFhurshNMR8g3HaTMkImOCRN5AFyc8p4cJfJxJRYGPEE6NP1UU3UNhVc3dT0uBgEQcAcBCDB33AdYAQIgAAKuJtDli5KHo6gXdURJTTRp8opqSrXztvif1sBseopmszNNNmb8ciNDBmW4nBMpmUlSNNTtRNMUyPA8pAt+9v7lKJTqolRo3pAdK26\/oavtKZwOJvlRbN5SeT6enzrYtNGrI2uargMVgAAIOE\/Amb8YzvcbFoAACIAACBggII6K4oto8y+jBprVisowPyeS1cEdVPTpw9\/8JF2YHldRlaE6RHx5zgeokC8+D55JPwt0o+4shc+S0aZ19nbeaz5YRnkTEnhjJtPclwgy\/HBTrLq3trwt7IMACLifAASY++8RLAQBEAABFxCw6A1XR89kPpYTSYXnw2q7L8yM0Xu\/8AE6PnbG6qYW6w9WiC85kUvnKTLTu1imHXZk+GE837wAC3hC9NzUs00hkeG41w2\/SJtb2FRFuBgEQMAVBCDAXHEbYAQIgAAIuJuAzOtyKkkADCeSkSGIYp+E87A7STTBi\/NT9Ltf\/FPaf\/qQ5c0HsjzssMzzVd5gZjpL4ZT+4ZAK\/V+WTCVTMfxQhNORmcPlmEzt37D6xTQcGTF1LS4CARBwHwEIMPfdE1gEAiAAAq4j4Jz8Ii3qoBNAjHrAujhqot1JQrhLmk\/P0x98+S\/p4cNPWmaCN89xHGuIr1KjuQseEg+ZvqRSgulrsVEpuecivKYi4zRO5xsVb3g+k8vRxdRkw3L1ClwzdCMh9Hw9QjgHAq1HAAKs9e4ZLAYBEAABBwg4J8Gqh1m3HoFRARb2dVlvVEUL4gErpWwuS3\/+9Q\/Rfz\/941KW0m14Jkr5XAPRxKc9Y0ET88GaM1UL22+wCrm\/Msww6+Mg+iy6piMTdDZ8jM57TtJMfpLjWlaNaam7FYl6+OzFfbrLVyt4+cA1tKtvT7VTyAMBEGhhAs6M62hhYDAdBEAABDqRAIYgNr7rIZ9ez0\/juvSWkLW0ypMMm\/zIf3+CpuZn6Oeuf0X5qab2PXkvZWb0CZJ8hueDzfbQfO90U21acbGIrengOCUL87y0QUV\/OMqnuuShE7MnFgLXmKt1T\/9ltHfV5eYuxlUgAAKuJgAB5urbA+NAAARAwB0ESmtyOWGNr+pCw9ZbYtQDFvLaL8B83uUCrETls\/d\/URNhv3LLz1OtMqWyerbBTITXG9NTslgmM50jT8xLBW99VSOCUY24F+Nqe2nF0zUXnqapPEeMrG+S\/k7WKSlr040lR+uUqH9qZ+9uunLw2vqFcBYEQKBlCVT\/zd2y3YHhIAACIAAC1hCo\/XJrTXtLtTq1xpZRARb0hpaMtmnPW0OASfP3PvFN+tA3P0GZbKZpa3zppaGOuipjARLIBXUVVVGoloiTe5gMx+lc6ERRfKlorEEdMvRw\/8QzDUrVPr0ltp2uHbqpdgGcAQEQaHkC8IC1\/C1EB0AABEDAegK1XnCtb5mjC1YMs7OjTWmjUDDmKgl67RMcJQbeBiH67zt4P80kZun3X\/0u6go14aHLGBfgHjMTs0odU7DN88rhE+FzlMjHFdSmv4rTc2d49ljF8Eadl2\/o3kQ3rn6JIq+gzkZRDARAwHYC8IDZjhwNggAIgEDrETD++q2uj04NfzTqAQt4A+o6rbMmPcMLnzj5NP3Bl\/6KpuPmFwLOp3UatKxY46dG1b0t+JePj5Qhh2PhM7aLLx5zSecTZ5dR0Huwpmsd3Txym2NfOOi1E+VAAASaJwAB1jxD1AACIAACHUCg8cu0VRBUvaQbtc+wAPO4U4BJvw+NHqX3fvHP6MI0z4EykSSwhuG0XBMZvtzIBSn\/HBU8xQbz3qL4SuUTRqpouqyf7\/++yadN1TMUHqaXrLmD5+sZHOppqjVcBAIg4DQBCDCn7wDaBwEQAIEWIODkEESn8BhdiNnnwILRHgPDM89Nnaf3fuEDdHz0tCGksv5XwUgEjoXa9QlnNcI+W8hSpmuest4MjQZPUyqfNNRHFYXPzp1dGVlRR8WrQgP00rV3kRMeVB3moQgIgIAFBCDALICKKkEABECg3Qjoe5m2qtc2ulLKumDUA+aEANMzBLGsS3Rxfore9+9\/SvtOPV+eXXffnzPp2bN5DhhLMJoInaN0IVW3P1ac9JCPzhkcehjgOYO7evfQ7eteQUGf\/QFcrOCAOkEABPQRQBAOfZxQCgRAAAQ6nIAaT4UZiEY9UWbaqHaN0SAcPgPeqGrtmckzM2QtkU7QH331b+iDb\/wT2jK8oWGz3pzfZEiJhlVzsAkOdtK4WMMSHvLSXH7OEc+XDD18cvzJhjZKNM\/eUD+tCg7Q6q41tCm6lZxaZLyhsSgAAiBgKQEIMEvxonIQAAEQaA8C8qLsVDLqiVJlp9F2RQTYncxGiExn0\/Rn93yIPvZLf0Hd4a66ZnuzPtNR\/epWrJ2UB6s5CSbe2QTNUzI\/37g5C0qci5\/joYfZFTX7OEKlBNaQz+rIGuoN9iPAxgpKyACBziQAAdaZ9x29BgEQAAFDBJwdgkgU4jW2Unl7h5YZFWBOrFfm9ZpXxqOz4\/TJH3yBfvvut9Z\/FlZqi\/rlS2eb01WlWupu5blM8s98bq5uOctOctTDs\/NnVlQvQTVuGrmVYoGeFeeQAQIgAAL2f10H5iAAAiAAAi1IwPyLvorOBr1NrGFl0oB8wQYFYdK20mVmPWCl6\/\/n2fvooUOPlw6rbgsm13HWI9qbe6o8lOKfeG62qt1WZ8qCy09PrBx6KAsp37n+VRBfVt8A1A8CLUwAAqyFbx5MBwEQAAG7CDgdBdGJRY4LZCz0ulGPmYp75\/U2\/2f8I9\/9FF2cm65pTj5jpRBtJMFExlUvIwstz+XMr21Ws8M6T8QzcR48uZzNSGSttpBys8JYpwkoBgIg0KIEMASxRW8czAYBEAABOwnUegm2ywaJGGd3Mhr8I29ZqIraPZcgHEFfgPz8Cfj8HNQhQEG\/n\/f5mPf9nKfla+f4vM9HIY64FwlGqJs\/O1Zvp76uXvJka0Q6ZH1hag0wNjns66Ke7uIQvKKM4n95MqH2wwFLtH2uvyjuiyKrltDP5NI0mRilzMKK0NLP0cy52mBsOBP0B+iKwavomYmnSMLg93NwjVvW3oF5XjawRxMg0OoEPPwHZvnXN63eI9gPAiAAAiCgnIC8AF+In1Zer94KZ7OzdGr+uN7iSsoFed7Zlb036K4rWUjQT8a\/r7u8ioIvGryNot6Yiqo4iHuKLmaWL9QsIeg9p82FSO9d20PRwW4ltkkl8roynZqkufQ0zRecC7pR2SGJgjiemKCrh26kLn\/9gCaV1+IYBECgMwk0P3ahM7mh1yAAAiDQUQRqeSbsguDz2j9go3J4WaO+OhIIQuF3qAFiz5h3uYDwmV0DrBEsE+flGewLD1AwEHIs4mEts68bfhHEVy04yAcBEFhBAAJsBRJkgAAIgAAIrCRQfR7OynLW5PDgOWsqrlOr0XXAzszb7yE0KhLrdFc7FfP38xDBpVcDCUHvpiRDEEeTzg49LOch3q9tsV08rNP+IDHldmAfBECgtQjY\/xettfjAWhAAARAAASbgrPwiMrPgcLM3zqi4uZA622yThq\/\/ydMP0qHDxymXy1G+kKcsb3P5HG+znJenX7zz52jnxu366+VJCQPB1TSeLoocT1rEWE7\/9RaXPDN\/gkOjGAuOYpVJPo+ftmriK2JVE6gXBECgTQlAgLXpjUW3QAAEQEAtAWclmARusDsZmSI9k6sdRdBKu3\/01AP06S99vmYTL7rsemMCjGvy8tpWPYF+mslcpEK6ZtW2n5jJTGk22d5wjQY3dW\/nQCMQXzXwIBsEQKAOgaVxBnUK4RQIgAAIgEBnE3B6DpgT9I14wJ6e\/qkTJnLEvfrCVDxhZlKYukjWucql3eFtEu\/eWfZ+uSX1BwcpikWW3XI7YAcItBwBCLCWu2UwGARAAATsJ1D\/Nd9+e+xoUa8Am8yOUzKXsMOkFW34OKx8vZTLmxdQMV8f5bJNDD9UFGM5zfO+js4eoHQ+Va+rtp2ToYdrIhtsaw8NgQAItB8BCLD2u6foEQiAAAhYQKATJZiEPq8vYGQ+0uMXH7aAt74qPd769yVn0gMmrY\/yultP+57QZ4hFpWTY4aGZfeRIhMkafVob2aitt1bjNLJBAARAoCEBCLCGiFAABEAABEDA6SGITswBk7veyAv2xPQjjj4cXm\/9P+MSlMNsmkhO0E8mfkTjvjGTVZh3gcn8u3Pzp+j43POU40WO3ZK6\/THqDw26xRzYAQIg0KIE6v\/mbtFOwWwQAAEQAAH1BJwSQep7or\/GegLsYHw\/XUxP6K\/MgpK+BgJMIiKaTePJMS3i4Pfj36Us\/9iVMvkMHZl9jsZS7gk3L32X539912a7MKAdEACBNiaAKIhtfHPRNRAAARBQSWBtbDOHOucw5+yRyOY5zDm\/3Mt+TvYX8uR8OyVtneMqo\/wOxPfRaRcEhfA2GILYjAdMhiBKOp84Tz8O\/YBu9tzKq7Hpf20w4\/+SeV5HZw\/yfK\/ksscoy3PRZuPzWqh98Y5JUI5CvsDPnkhkHgjKjXn4s3FkbTFepgQnKRkg96+0v6zW0oGcXLrJmsdNKqtIw+G1vN4Xoh5WYMEhCICACQL6f5OaqByXgAAIgAAItA8BGYYoAQh8\/BIerBH74Qdnv8WR+bwU8oYp6A1SwBvg+TJB7cXd7\/XxEr\/yYV9Cg+h9dlETr4bHU7RJIgrKIsTyI\/bJh1fWoqymwtgi7Z0+T8fnD2sCYTg8IlcXyxb3yva5uNZHrYQcyOU0nhylueycsu55GwThyDcRhGNsvijAxNhnpp6mU6FTdHPsJbQ5u3Whb8q6oVWUXfB8yWLL5enwyVP0wa98mo6NnijPXrHf2xWjj7\/vj1fkG80I8OLK\/aEBvu\/pxX4G+XkeCq8xWhXKgwAIgEBVAhBgVbEgEwRAAARAwCiBRHaeSi\/PqdxyD0ZlXUFvSBNoXhE\/LNi0H956yvc1ycLLALNXrcvfRVti2yur0Y6Lvgr+V9spHzRY2pct\/yyeL15RtbKKzPHsBV6GePnwu7A\/TPIxk+TFXqkA00RebUvMBuEQL9NkcnJZxVOpi\/SN1D20rnsd3dx1Cw1nR5adb\/ZgIjW2+PxIXYlkiv7tf\/6LvnT\/N3RV3UzEx\/IGMoUMjSbP8zPXTVGe85WjjDb0UJ5TJBAAARBQQQACTAVF1AECIAACIECzmRndFGSomZGw4iK+jJTXbUiDgpq+0a\/XGtQmTrSloW4NC+so4PXVFwVm54DJPKySfK0040z8DH0x\/nm6vP8Kus5zE4UKocoiho81wZcuetxSqTTd98RP6V9\/+DUandYfAESGJapM89k4yWdj9xas+aUSLOoCARAwMJgbsEAABEAABECgDoG5zHSds82dEi+YM0mtYFItwCrD0Pt4mKffx8NEWZjJVj5mkp65fE9efIIOBw7RrX230+ZMc8MS49lZmpi9SN99+AH6D\/Z4Tc\/PGja7meGW9RobiayvdxrnQAAEQMAwAXO\/mQ03gwtAAARAAATanYARD5gRFtFAjxbkw8g1qsqqlV+leWGqrCN6\/S2vpt+88x08z05EV42JeSaak6GhetJcZo6+MXYPDYaH6NLuPTTkHaZIIaKNBp1NT5P\/ok8bQiqeuKwWsEUCtyx8OE88bYnMPGnzvL78z5TKLp\/\/pceGUhmz3r7S9dW2Ms+vOxCtdgp5IAACIGCaAASYaXS4EARAAARAoJyAVQKsL9jPL\/Rqh5eV211\/X60EU+0BE09XKND8EMBKBkFfUJuXJwtN60kSsv5HyR8uLzq+\/LDeUXrU15T4krpVzQErt3NTdHv5IfZBAARAQAmB+oPHlTSBSkAABEAABNqdgHg15hVG9yvnJZEUnUqqozWqrk\/1vKdyzt1B+zw\/jeayldtVa19YqByGOBhezXO\/YrWaQz4IgAAImCYAAWYaHS4EARAAARAoEYhnjM\/ZKV3baCvhydsnqfWo8WpYlqEZDA9YVndlxV6fGi5zc\/Wjb1a2W+94M7xf9fDgHAiAQBMEIMCagIdLQQAEQAAEigRmLQrA0Rfol2V2HcSsRhiUOsCB9ku7SrYFxZH\/yo3a1LOl\/NDSfVUCbHo2rsTOwdAwxXjuIRIIgAAIWEEAAswKqqgTBEAABDqMQJyDMViRosFeQ9Xmef2qC4kLdDp+ik7OneBhkQlD11cWVj1ksLL+Zo+tnBu3KbqpWfN0X69qia2pmeY9sbKI+CW9L9BtOwqCAAiAgFECEGBGiaE8CIAACIDACgKJ3PyKPBUZIV6wWW+ShZZPzB3T1m6S6HoyL+1C4tzCAsx6a1lezqN4hJ9qQSeC06okAqzHoAA2a4sqATY5PaXLhGw2R1PTcTp9ZpwujF5cvEYWBN+76koK+vQ\/d4sXYwcEQAAEdBJAFESdoFAMBEAABECgNoFkrjlPU62aJXS5LNKrR7jM1FgIejR5gYY5oIK2qHKthmzLVzsEMU\/F9dGEES0snVxcQFn+5TxubuncwrGcWRBuxVLyr8wmK2iiNU9ZrjWnlblq5Ar6wckfWk9H0dfBo1OTFI8naS6eoJm5eZqem6Wp2RmamJnSPmPTEzQ6M05T8eVr1r3p1tfTnS+6ji7pfwEPPTTmdbUeDloAARBoNwIe\/iVs3ddn7UYL\/QEBEAABEKhK4L6z36FUXl0ABGlEvBHJfIoCngDF2BMT9UfJyyqqqhjjv2TH5o5WtU0yo\/4YrQoN8PVelhmSRITwRvQQ7yzmyZ72XzFP1qiSta7kT6X8aJH2ZE8i7vFnMW\/xuJgvnilZzFjmr2nXLJzf0beT1nSP8HWk5fNmsT+lEPWaRNPU4oJV2mZhX7uyaIvYXxJOUo8lKe+lz+\/7oiVVl1fqSwfpM1+5tzzL9v27rngpffptH128H7YbgAZBAAQ6hgA8YB1zq9FREAABELCGgAgM1eJLLPV55E9UijKFDE2mxrWPBEYYCA1y\/oJXjEWIiJ2zidNySc00l50l+RhNyUyaTs+dNHpZzfLJbJLShdTy80Vt1ThveQlbjrzsmQrwIs+ZfNbS9greahAsbXJF5VuHNkN8raCCDBAAASsIQIBZQRV1ggAIgEAHEcjxMEEPe6vEG2N1ksWe5ePz+DSBlsmnuV3rXt6lXypTmu1tpSQevKvWXEUPnXnYUrML3iz5WehlLRZ69TrxssteWu80zoEACICAMgJq\/7IoMwsVgQAIgAAItAqBgDdIO3p3Kze3nrCSABtpHp5Yr4wKg2TIo8qUzlV4v1RWblFdm\/s2WVTzUrXiAbvukiuWMmzeG4wN0FVbLrO5VTQHAiDQqQQgwDr1zqPfIAACIKCQwKboNuoLrlJYIznqDSl1pOp8s9JJE9scD9dstRT02TNYZuvWdY6hedllt5JXxlsigQAIgIANBPDbxgbIaAIEQAAE2p2ACJVdfXv1dbMgofl8\/PFowS1qXsQx4P0cgMPJVAqMocoGmS\/XainHURG7\/BHLzS5EUzTUM2B5O9UauOuy26plIw8EQAAELCEAAWYJVlQKAiAAAp1HoCfYR+u6qwxX0wQXRzRMZ+nU9Dn66YUn+fO4tn3iwjN0ePIEpbMSUXDlcL+wL+woSNUCTKIntmLavmq75WbLWmC3XXOD5e1UNtAV6qIX7bq+MhvHIAACIGAZAXvGFVhmPioGARAAARBwE4EdPbvp+PRxms8kKM7h26fT07wwcu1FmmUO13R6ip4Zn6IIe1m29m7lbYCdY8XAGkFfkMciOtdDDEEssl8XW0dPjz5j+Y3wD2Xpsi176Klj+y1vq9TAS\/fcTKEAP2dIIAACIGATAQgwm0CjGRAAARDoBAJBX4iOTh\/jtbOMh3xPZBO0f2K\/tlbX5thm6o\/0cgxCHqroYFLuAbMhUqQVuPrC9ixOLIL3iiu304FThyiVtSdipMz\/QgIBEAABOwlgCKKdtNEWCIAACHQAAfFkNZNkntTRmaM8RPEJOjJ1rJmqXHdtK84BE4gBv31COBdM06tvvsO2e9ff3WdbW2gIBEAABIQABBieAxAAARAAAaUEVM7bOj13ioN1OPenSvUQxFYQYLl8jjLZLKUyGUqkUjSXSNDF+DSpvK+NHrjwSJ7uvPLFjYopOb\/v1HNK6kElIAACIKCXAIYg6iWFciAAAiD\/uj14AABAAElEQVQAAg0JFAoFmkhONCynt4AIFg8LsILHmeAVqocgyvpldqZ9Jw\/R\/UceIRFVWfnkslp4f9nP8aLHxWM5lymer7MQ8kteYG+gitU7umnvxG565oS1AulzP\/oSvfvut9l5W9AWCIBAhxOAAOvwBwDdBwEQAAGVBM7Pn+OgG3GVVdJ4YoIGuu2Zg6TU8CqV2e0Bm07M0rPnD1SxxHiWV5YOsDOx4\/OyPTstF2BWL+ZtJzK0BQIg0BoEnBvX0Rp8YCUIgAAIgIAOAuJhOTz1PD0+9piO0saKnI2f4fHy+r4vjPpjFPF1GWugTulWH4Lok9juqpIsJ2Bz8sTSNBBTu8B3ZRd2rtlWmYVjEAABELCUgMLfzJbaicpBAARAAARcTCCdT9N\/HP4iPT3+pCVWTs5P6apXBNN05iJF\/T26yjcqpFpy5G0eguj1KvwzX1wZoBEytefZ\/Gt3Xaa2zora7njhLRU5OAQBEAABawko\/M1sraGoHQRAAARAwL0Enhj7qaXGnZo7Sd6CPi9YhuczXUiepRAv4hz2NReRUXWn7B6C6POqGzZYyDuhwIj6+2Oqb8Oy+iDAluHAAQiAgA0E9P01s8EQNAECIAACINCaBFK5FD01\/oTlxp+aOUNre4ap2rBACf7h9bDYKNMIk6lx8nsCNBAaXMxmBxmX8VB3IEoBj59X5cqTXCs\/XvnhIXuLHy1QsIeGI6tJgnF4+FxxWwzNsbSv7REX4PO8kX8111nxeCGnmMdtJwpzlrMqNaByCGIu70wglEC3dd8VX7r+Elq\/am0JF7YgAAIgYAsBCDBbMKMREAABEGhfAuJxYhVjeQcnUxPkmfWQ3+vn5vJaND8Z+igCULOBLdjet33ZAivZgnjDzq2w7aruaylXyK7Ir5bR7TU6p6zEYim8g5ZTytbU2eJBtSaV5akcgpjN2RvBsQQhH0xpotgK7+Ede28pNYMtCIAACNhGwLqvlWzrAhoCARAAARBwkoCfPUlXDV9riwkTyXG6MH+eRhOjNJmapLnM3KL4EgMmk5O22NFMIyW\/WDN16L1W5RDEdJaFthOJ31T6LIqCeSfmfzlxR9EmCHQ8AXjAOv4RAAAQaF8C8o25eEq0H\/bQSACELHs9ZM0j8X5kZR0k3pb2S9uIv4u2xHa0LxjFPXv4wgP0wLmfKK7VXHVz6Tnq64o2vNge\/1N1M2QIpQ0OQ61xGU7ZbJIhmmu96+ncwTHacOkwFbrsF2K9XTGanLvYbFdWXH\/g7GG6YssLV+QjAwRAAASsJAABZiVd1A0CIGAbgeemnqaJ1BiLrCXRZbbx3kA\/BJgBeBKCvvWScxLMXg9YcwJsxLOGnt9\/jL5z\/gfaLQ49GqTXvezl1L1VXXAPPc9OTIeo1lNPZZk\/+8rf0Rtvel1lNo5BAARAwFICzf1mttQ0VA4CIAAC+gmI9yrD84FkKx6vZpLUgaSfwPNTahb61d9i7ZLdAX3ztezyQFWz1F4BZk4ohT0R6p1cRd\/9n\/vo+PmTi91IZdL0b\/95DyVO2Ctgu0LhRRtU7mwa2qCyOtQFAiAAAroIwAOmCxMKgQAIuJ2Al8y9aFbrV87mtZqq2eCmvEQ6QXOpOA3FBinOc66KQzdzlOMhnCdnT9B8dt415vaF+9kWPR45ewVEOSAVAiyb5eG0HBRDIhPmeD+XlSG1xf1sjrc5PubzFy6O04h3jRaZ0SMLKXO3pX0RoMVjDhQi31fwcV4yOdR8fD5BTx3cR3OJeLnZy\/a\/+u1v0Zve\/GrKh+35siLN\/Ws2Xbp+J928+zp64ebdtHFoHfVHe8jr89DJmaMU8Aa04C4DHPFSxbDNZm3F9SAAAu1NAAKsve8vegcCHUNAQoSrSp0qwEZnx+jw2FH63sEfUoZf4N93+7spFo7RvU\/\/F33y\/s\/Q937rP+kfn\/4IexmXCxxPntkX46+rugWm6+kJxmg213jRZpYajqVPf\/lLdG5ylDIimphzhoNbZHlfmGv7C1sJeqHl87Z0Tsvj806nRCpB+x86TrtvWW+LKdJeo7RjzVbavX4HbV29kTYMrqXVvUMssnopGumiYIAjZ4rKrJJkbmiKxWo656GhLnW\/R6o0hSwQAAEQ0AhAgOFBAAEQaAsCStc7auMhiOemz1Mik6S\/+s4H+aU+Qx\/+2b+m\/q4+7Rn4\/KNfon977D8Wn4dX7b2bvQEeOjJ+TLvmIz\/4J\/aEZSmeTNBsMk4X41M0OjPO5xL0+pfcQXnfcmG2WJEFO1081HBb\/2b23HhpPD5B44kxyvB903S4LjOqv4xbYOqKKn\/81EN0+OyxFfmtlnH\/0w\/TpddsoUK39UE54sl5umTtNrrthTfTluGNNNK\/IK7CIq4C4s6ri6+W+Cq\/SJY3QAIBEAABOwjgt40dlNEGCICA5QTgAWuMWAKUfPmJe+gnRx6kYxMntAs++9Dn+Zv\/DI3PjdOz5w4uq+Sd\/\/6eZceff\/Tflx2XHxQavACXl1WxL6Ivni0uaBwJB2hDeC0FvSGazUzrql5eyLW1knWVVlvI72+fP71zF5IrAnJI1MTi8EZeuFqbjlkc+igOKG34JW8Li8Mhme2Cdlqcl1d2nLiYpjOnL9AX3\/vxOiJr4YImb5OfhyEigQAIgIAdBNrnr4AdtNAGCICAawl4Se3QIRlm5\/Oom1fmBnCPnXicPvfIF5eZ8oUyj9eyEy4\/EAHl9wR4GYEl70s6n9JttTYHyiEF5ve2z3P11e98k8LBsDZEsjiMMsPiSo0gKt3MF27dU0d8lUo1vy0XYPJlBeaCNc8UNYAACFQnAAFWnQtyQQAEWoxAsy9L3f4oRf08KZ\/HsHlFeGlv6Pog\/PjY\/fSJhz9FyWySkpkU8ag9umnzjXTHjtvo8rWXNfUiJ8MEj0+cpOOTJ0nmaImnamxugj\/j9Fu3vJ0uXbOroZFffvwebd6WvFRalez2gEk\/JHBClvmYSyISnFFgfl\/7eFokKqJ8rEw37bVnkW8fLyheStO8yHfAG6RosKeUhS0IgAAIKCOw9NtGWZWoCARAAATsJ9CsABsOr6HNse2mDH\/09GN0YW502bXfO\/wDks9Q9yDduu0WFmQ30K6hS1ic1X7pH+U6Dp4\/zHOujnIwjGN0ePQInZg8tSLoRamhf3\/8q\/SBV7y\/dFhz+4NDP6ZHT\/y05vlWPVH+wmy0D0UPh\/2eqDmOMDgdnzFqbkeX37ttty39L3nA5tIzNJ0qLvosv1e6Ao0X9rbFQDQCAiDQNgQgwNrmVqIjINB5BCQc+lxmhmazMzSeXC6AjNJoZu2wfef312xuLD5OX3r6y9qnP9LPHrEX0gtW76H+SB9HXkvTkQkWWxNHtG3EH6HnTx2rWVfliW\/t\/64uARYOhCovteBY7bAzPQY2I7r1BGXQY4ORMvc9+ih98Asfp\/GZSSOXdXzZzSMbbGEgQTjm0rMc0OXCYnuyv9YX1kLUL2ZiBwRAAASaJAAB1iRAXA4CIOAMgeemnqbziTPKGpdQ1GbSVGKaTk\/rs+Ni4iL94Mh92qdaW0ETQ9MkjLnfV\/9XuQzVszzVduxZ1vS+Zw7TzNwc9fR0U6wnQj2DXeTzq50LqML4M+cv0Ie\/8Cl6YP8jKqrruDpW9RajdFrd8aIHbPkXCeIpneQIm8Pda6xuHvWDAAh0EIH6f7U7CAS6CgIg0FoEKteiatb6nMn5UfvO72u26cXrs3njIvDLT97LwUK8vCAvL8zLH9kKG227cHyUw8hbmVQsLGzGvueOHKF7f\/jtxUsjHAziuj1X0Qsv3UWbtg1TJBZcPFe5Y+V8uFJbiWSK\/u2bX6fPfPuL2npfpXxsjREI8Bpei6ESjV1qoLRHC7rDCxmsuGaeo21m2Fsd8NV+nlZchAwQAAEQqEMAAqwOHJwCARBwLwHVEQrNesD2XXhWGSQZUmk0feh7HzN6ifLyXq8zXqdIZPnQykQ6ST984n7tI528ZMN2umbvZbRz5yYaWBPlNcKWXq6tHIKY5UV9v\/\/Qg\/SPX\/0XGpsaV867kyqMRbqL2mvp1lnSfRl+KPMzZRviIYepXHJZOyLCen2rluXhAARAAATMEoAAM0sO14EACDhKoJkADNUMN+sReUahB0wiHrZiMjN0UkU\/wxUCrLLOg6cOk3zom0R90V66\/gVX0Qt276D1Wwep0LN8qFnltUaPJQT7kRMn6f6nfkr33v9tCC+jAGuUn03E6Q8\/+Tf0Z2\/7PS6h9p6VN1kKwCHbNdENNJueponE0rzSNHvAkEAABEBAFQEIMFUkUQ8IgICtBNzgAZPFgCWIhqpkxgOmqu1m6lnV3d\/M5aavDYb0\/wmbmpumbz\/0fe0jHrvLt+2lF3J0veFVgxSNdFE4FGIPCC8czF4QCVQpwyqL+x4ePpijVDrF4dYzxW2aQ6\/zcZI\/0\/FZOn7uJB04eYjmUwnTfcGFtQkM9wyTNx2kQMTLnilrGPvLQtCLJbFgrzbscCY9pRlm9gua2r3CGRAAgU4moP+vVydTQt9BAARcR0C9ADO+RtazFw6QyhczqUsi+6ms044bN9QzaEczK9oIhM0FF8nn8\/T4oae0z4pKkeE6AsePneBhgRFaHR2iRHaeppITK4YINmt0yQNWXk9feIBm2BMmnjcZmogEAiAAAqoIODNwX5X1qAcEQKBjCfi8atdw4rAVhllK+HjVKWAiEqJqG4zUJ56irevXGblEWVl\/CH\/ClMF0cUXnJy\/QVb90M\/3fr\/0LBT0hbYjg6q61FPQtnwPYTBeqCSz5MqSUL\/PCkEAABEBAFQF8paOKJOoBARCwlYAb5oB56yyqbBZGkEPKp7Ips5c7cp0M1bNudk7tLiEoXW02rXDm1mtvpKv27iWvj4WOz8dLCPCHh4fKsQwT9XLQlOMHz9DX\/vNbJENIf+cj76d\/+cbn6B\/e90G6evcVFPZ30WRyTJuv1Wx\/a0dVLfBXDLIYMwcDQQIBEAABRQQgwBSBRDUgAAL2ElA\/BNG4ByzoD\/FLYIhfGv0UT8eVAAj4OdR1Sk1dSgxqUIlEE0wneS0ydc6IBi0unfYgKvgSjBbZi3Z10S+95mdp556NFC\/MVrFahgIXhwOLqO\/p76bTo2cXy+07+hy99J2vpPe88Tfpj37192ggMqx5wsoDZiwWNrAzn+Eoh6HlcxllKLDMy5Q2vB61HncDpqEoCIBAGxKAAGvDm4ougUAnEFAvwIzPAfuZS19J8pGhiO\/42ruVYA80WFRZSSOKK8kX9Pu\/ejm4wYbYJg5wkKGDU881Z4m\/oHlKZE4XkrsJXHnpXnrdy++iIGucTCFdQ3yt7IOnyhIHcr\/\/7vMf1bxif\/+\/\/1oLmCG\/D8bmz\/PXAfqfxfLWJOz8TGqKekJLiz6LKBvmoY7wfpWTwj4IgIAKAhBgKiiiDhAAAdsJqB6CmCtkKZ6ZpSxvZTiSfPMtedox7xfzeVuWf2r8PH35iXtpNlXtm3xzSPytKMBqCKAQz9GJBXpofWwDbYxuYuG1kXpYgEmaTc\/S81MHTL8wSx0y9LGvu5cmZy\/KIZILCWwYWUu\/\/ba3UDI4x9alWXwZM1KGIdZKn7r3s9Qf66M\/fuv\/yyIpSsPda2k0ftb0MyXDGUV0iedLfgcMdq2mCA9zRAIBEAAB1QQgwFQTRX0gAAK2EFA9JCidT9Mj4z8xZHs8PUcX5pbWCjJ0cY3CpUn\/NU4ryxaPwUC0n3q7eyga7qZQMMTDrHi2C7\/wyo8Wi73kTeBD8SwU2NNV4OFh4vGSl1T5yeVzdHb+HGXnslrY7jR7tmTNpJfvvIvedsVba9obC8ZoR98lmgirWUjHib5oDwSYDk5OFHnL695Al169mZJ5EV\/mUqNFvv\/2Xz9Cq3r66V1v+HVNLI10r6cL82dMRxJNloW51\/4\/MGc2rgIBEACBugQgwOriwUkQAAG3EvC7YE6GBAtQnZr1gIUDYRrqGdBEVSQYplAgSH4ObiCaKpvPUIKHWs2xcJxJzbDpWZqmSZpOTfK8M7U9ybIwa5SuGr66aQEW6442agbnbSawbniE3vMbv6p5vdL55h4sPYFufv\/jf8IirI9+8a6fp5A\/TKu71tG5+Kmme212OGPTDaMCEACBticAAdb2txgdBIH2JKDaA2aGko\/DVKtOfhPh9Ye6B2kkOkI90W46kjhEqUKcUnkO5JFk6+TjQMrxUM1GaVNsC23u2UrHZ442KlrzPARYTTSOnPj5l7+arnnRrqa8XuWGe+oMQSwv9\/b\/8x4a6h+kO6+7TRNhElBjOtXc0NQCe3mRQAAEQMAKAhBgVlBFnSAAApYTkMiDTidZJ0h10ru+WTTYTZv7N2mBCJ6\/cIROXDhNN+26zvTQK9X9yPIcmkZJ5nC9astr6NP7\/5nmeYFdM6mbo+q1Wwr4A3TZlj103e5r6Ipte3meUz9FI90kwScS6SRd5Dlv+08coO889n3eNhnIRCG8zWvX05U37WTx35zXq9wkvf+PCZtf\/6vfokc\/cx8N9g1QX2iA53PFKcNDi80mI8FlzLaB60AABDqTgPNvMJ3JHb0GARBokoDqKIhmzPH6agcIMFOfXCPrINVKMj9s+8A2ymay9OzZgzQ6+fiyotqljXXPsmusOpC5YXpSlIMnvGnXW+ieo1\/huTvn9VyyrExXJLLsuFUP9m65lH7mhlfQdbuuoit3XE5hnpNXL73mplfSH\/yv99Kp0dP07ce+R99+9H\/o\/mcfpkw2U+8yS8+945ffxEE2zAnpWobp9YDJ9WNTE\/S\/\/\/736XN\/8gktQMtQ1widnTtZq+qG+TLfEQkEQAAErCAAAWYFVdQJAiBgOQERYPKpvYCq5SZw0IraYsls6z5ekLY8SeCLbQNbKOQN08Fzh+jxY0+Vn162Lx4ltyS9AkzsXRUeoDfv+lX6\/un\/psdGH6GRrjW0e9UeDvrBHp9sQsurdZ8jkfpCxS08atlx51Uvpd\/52d+kq3deUatI3fwNw+vp117+Zu0zMz9L33\/iPvoWi7EfP\/MAXZgaq3ttMyeHBwbp8l2X0vZNm2n16kGK9XZRwq8uGmjJNj1zwEplZfu1H36D\/uN799DP3fYabX0w8YRNpSbKi+jel\/\/3kEAABEDACgIQYFZQRZ0gAAK2EOgPDdJ48oItbVVrxIo5YF4qirqR2AiHwR6g46Mnad\/JA9Wad3WehOs3kmTo5R0b76LrR27idZ1iyy4Ncjj7H5\/94bK80kEo0pqrMV+yfjv93dv+nG7cc12pK01ve7piJJ4x+Uiampumg6cO0cHTh+jU2BmaiE9QdDBEAb+fAoGAtpUALfLxyYeDykhgGYk8qEXDlNgt8jiWomB6FiJfLizPoDWi\/ZOjBKkXX1K1EQ9YyZ7f+cj76cWX30irB4a1xZVleQkzQxEl0icSCIAACFhBAALMCqqoEwRAwBYCm6PbaCI5qoVIt6XBikbqrVFUUVTX4Sr+tj5QCNFIZISOnjtOR+m4rutKhdz0fX1exxywkt3l20rxJeduYFH23OR+FtsrPTqhcKD8ctfvX7r2Enrnnb9Or7\/7lSyArLW9L9rL88iu1j4C5vz8WbrnxJeqMJLhojn+kX+rpNKDVdpWKWJVlhmv7uTMRXr3h36X\/v0vPqMNRRyMrDYVFVFEWzqX0jxpVvUP9YIACHQmAQiwzrzv6DUItAWBWKCXtvXsosMzagMR5LL8MsqT+nO5PH8D76VgwKd5BSqhNVqjqLJ85bEMK5ThdrlUnk6MnaZ9M89zEfmYSx4HXpBrWaonDH2tayvzxTt29+ZX0ucO\/EvlKfKHlg\/ZXFHAJRnDsSH68M\/+DY3QauoZiVkuvqp12w3zJqvZVS\/PjAdM6vuv+79DoxfHaZgjI0po+vKoiOJllmdKFnOXYD7acGbe+iuOrRhiXK+vOAcCINA5BCDAOudeo6cg0JYERiJr6cjMgUUv2Fw8QacvjNJ5fvnK5HhxYA5KkMnKIsG8QDDvFz\/yzbbs8zaTphRvU9mUdiz7lSnoD9LO1Vtpx5qttGF4Da0Z5HW2uiPat+uVZcuPZQ5Jl7+LooEYRXwR4lc8yucKlMpkaDo+Q0fHjtOxwpnyS5razzMFtyQ9YeiN2Lo+uoGuHLqaHh97bNll\/qD6eXjLGlBw8K7bfoNeu+3VlE8XV5Yq5J25T60oKMx4wEq37IGnH6LXvKQ4HFPmgkWDvZrYakUOpT5hCwIg0B4EIMDa4z6iFyDQsQQC3iBFKEb37XuIvvfMT+jM1DnlLESo7TtzQPuUKh\/oXkWXrNlOm8JbtfDgIvJEvCU5TPh8KkFzqTh\/5jiQBC9ybFdy5r2+au9yFsyfuXPj3fTSDXfwlKRisBHZnp+8QH9PKz1jVY2yMTPgC9C7b3s73bWV7U16NfFVat45AdYa3sISJ9k2E1dmanZ6sSoRcgGPtUM+FxvDDgiAAAg0IAAB1gAQToMACLifwDcfvo++8vjXbTV0Ij5JDxx+xNY2W6kxo0E49PSt2kv06v5hzRPploh1a\/vW0O+97D20t3dPUXRVWQjbOQHmfm9h5XOQSpoPq\/\/Sq19cWR2OQQAEQMAVBCDAXHEbYAQIgIBZAkfGjtG9T33T7OVtdZ1TL\/bVIBoJQ1\/ter15fp+fBmKraHzGXKhxve00KnfbC15M77z9bdQ7s4rkPshww1rJqfvUinPAZmfmamGsm\/+BX3s\/bRzZULcMToIACICAUwQgwJwij3ZBAASaJiBejz++5y8py3O9kIi8fvZwrJzC5giaWut2WWGMeMGcEGAyl+i37347veHq11KXp0vjf54XA26UnPLWteLcp6kp4+Ht\/+At76Xf+cV3NboNOA8CIAACjhGAAHMMPRoGARBolsAXH\/kKPXnqmWaraZvr3bMMM5HKKIiNbtDq\/iHaf0JtJMxabW4YXEevvfpVdOcLbqWNMfawmFgqygoPmIg6qbe4ZeuXHUs+3xOO7tnu6darbqbff\/PvtHs30T8QAIEWJwAB1uI3EOaDQKcSuDAzSn\/\/Px\/v1O5X7XftQW9Vi1uaqToKYj1jRYBZlW7bewv9zJUvpz1rd9FgeIA8+TKZWyG+9Hq28iyUZsd4aJ0mmFgrLQqnJQFVElSLQqpUtiSs+Lh4Tjb677wv7KOcp3WEWCBg7DXl\/\/uV37XqUUC9IAACIKCMgLHfbMqaRUUgAAIg0ByBP\/vG31I8Nd9cJW12dbuuA9boNu3dsocOnT7C67WFKBTkDy8boG0DvOW8MH+CvB\/mc7KkgLaVY87f03sprwXFK0PxcEIJ8iFb+QlyFMMwr9O2zMNVIbgq7RIhJetW6fFwTZ1aitBXWY+VxxI1NFdIWNmE0roDAf2RC2NdUbp61xVK20dlIAACIGAFAQgwK6iiThAAAUsJyNpe\/8\/1b6BfvP7ntHY0b8FCi0vegKJXoHiutF8sxH6Gxet+98t\/RIl067yQLnSz+qbMOVMqEAvGaGPfBs1LIv0u8ai\/las5kASHki86V2RfmGk1lNUh3pel1cfC\/hB1Bbtodfdq2jGwrWSC5dtff8VbSD5m0pmn6yxb0EBwrWiPEQXCfkrP14\/cp0egrahbUYYsNrzw+Cuq0dpqjHjAXnTZDeTztV6ofWsJonYQAAE3EoAAc+NdgU0gAAJ1CQT8Abp+2zV1y+g9Kd4SuwRYJBCmaDhKMf70hGPF\/VCUPTA+evDII3zcTZeM7KAbt19Hfs6TfIlcp21Lx+yt8Xl5SeeFY\/HYaPscDVA8O36\/r+jF4Xy5VtrsDffqxdFx5cTrtSTam+++lz1gjVKBF+N2Ksli4K2U5HnWm158xU16i6IcCIAACDhKoLV+EzuKCo2DAAi0I4Hvvucemp6fpjs+9Jqq3ROBEwmGNc9OVzDCgiZCXaGFLR93h7pZUHVTlIVUjEWV7Be3RaElgksTW1xOQqYjuYyALI2lcEqU16dDgOWNutbUMfO1mgAzMAfMy19OIIEACIBAKxDA20Ar3CXYCAIgYBkBEVUBnu\/z6V\/+BxZZLK54CF1JcIn3SOYQIbUvAc0DpnBMnswBa5RyEkDDodRyAszAkMLt67c4RBXNggAIgIAxAhBgxnihNAiAQBsSCLBn6rqtV7dhz9ClRgR4BKLSpEeAOToEUeaAtVDyGRiCePzcqRbqGUwFARDoZALw13fy3UffQQAEQKDTCShWYHoEmJPIW80D5pPFxXWmL3znSzpLohgIgAAIOEtA\/282Z+1E6yAAAiAAAiCgnIAMQVSZdNentlndXfBzYJZWSrJEgN700wNP0vce\/aHe4igHAiAAAo4R0P+bzTET0TAIgAAIgAAIWENgcOsq6l3Xo6xyvYEgdAs1ZZYVK+KYmoprtLY6rwEPmFjyvo\/9IaXSKWuNQu0gAAIg0CQBCLAmAeJyEAABEACB1iXgC\/i0BZhV9UC3sHLIA+ZtMQ+Y12fsNeX5k4fpb\/\/1o6puJ+oBARAAAUsIGPvNZokJqBQEQAAEQAAE2oOA3jlguoWaYiytNgdMz7pqlYg++IWP0b6jz1Vm4xgEQAAEXEMAAsw1twKGgAAIgAAIOEFA6TQwvZ4tveUUA+FluhXXaG11egVtuRWZbIbe+ufvxFDEcijYBwEQcBWB1vpN7Cp0MAYEQAAEQAAElhPQK+Yc0l8sv1prDhivg24qiQfsA5\/6a1PX4iIQAAEQsJqAyV9tVpuF+kEABEAABEDALgLq5JBHb9Q+vUpNMYJWmwPWzFDNj37pn+mHj\/9EMUFUBwIgAALNE2itFRmb7y9qAAEQAAEQAAHLCDikq3T3p9WiIDYaMfnmV\/wvioTC5OfF1OUT8AcWtsXjRDKhmw0KggAIgIBdBCDA7CKNdkAABEAABNxJQJ0DTHdERaeEmreRonHZHWrE6ezYeeoKRyifz1O+wJ\/FbUE7\/uFPf0wP7X+UPvBr73dZz2AOCIBAJxOAAOvku4++gwAIgAAIOEKg4EirRN5Ca80BK3jqk\/rvR76\/SFI8YKFgkEKBkOYJK+2nOSgHEgiAAAi4iQAEmJvuBmwBARAAARCwnYBCBxh7wPSZ7yGdBfVVp7uUnVEQeRAgBXw8JNAToICXP54g+byc6\/FT0BskP+\/7eF\/OS56P58\/JsY\/XKtOOeZtMpev2TeaI\/flv\/KEmulKZlBb5MJFK8nX84QWZE+kE3fCCa+vWgZMgAAIgYDcBCDC7iaM9EAABEAABdxFQqYX0KjCVBNh+CdfuZQEj6yzLvocXMBZxIlEEtWPJ408hsIqup5tJgnH4+SM\/su\/lgiJ8tH0epijH2g9vRSzKvmy1OrV96YCWo\/VE9qi+s2pZj2UBbD0pH8zXLVYoFOgP\/ulP65Z51YvurnseJ0EABEDAbgIQYHYTR3sgAAIgAAIuI6BGgYkYEP0l4sLrE0HEHxFCvO8RQVMSQ1wo1BekWFc3axhRT8WNJmjEFPlIqtwWc5v6N+IJU3+633wdBkRWvUaKrEodrF2ymSiIUmt\/rI\/uvO6ltRvAGRAAARBwgAAEmAPQ0SQIgAAIgIC1BHLZHOWzBZIX\/UK++kcCNsi5bDpHXj+rI0kiMPjDV\/C1CxnshNHq0c5JvtS3kFeqWwpr5Ym6oyG5cGUSZ46U5x\/NYxVaaHNlybbP0Sus9JarBex1t75amw9W6zzyQQAEQMAJAhBgTlBHmyAAAiAAApYSOP\/sKCVnUpa20VTlC2KtqTpa+WLpf2MHWNM9\/PnbX9d0HagABEAABFQT6Nyv31STRH0gAAIgAALuISBD+5DcS8DA7emPmRsyuWH1erphLwJwuPchgGUg0LkEIMA6996j5yAAAiDQtgTcrr9kGCOSPgKrevv0Fawo9YbbX6sFDanIxiEIgAAIOE4AAszxWwADQAAEQAAE1BMw4GJR3zhqVEigP2pOgP3CHa9XaAWqAgEQAAF1BCDA1LFETSAAAiAAAi4h4HYPWClgh0twudqMPo5kaDRJSP7P\/Ofn6dDpw0YvRXkQAAEQsJwABJjliNEACIAACICA7QTgALMduaEGDYzA7I32GKpaCkuEy3\/88idp2jNGh2b2U66QM1wHLgABEAABqwhAgFlFFvWCAAiAAAg4RkA8ILIGF5I7CRgJL\/+KG+801YldW3ZQsMtHiVycTsaPaMsHmKoIF4EACICAYgL466QYKKoDARAAARBwnsDqXUO05YaN2npbzltTxQIDHqAqV7d8lqyFpje97Lrb9BZdVu5db\/rVxePZzBSdT55ePMYOCIAACDhJAALMSfpoGwRAAARAwFIC\/pA7l7s0IkAsBeRU5fr1l7aQ8ttftySm9Jp8xd5LlxUdS56jqfTEsjwcgAAIgIATBCDAnKCONkEABEAABGwhEOwKkC\/gIxFigUiAgt1BCsdCFOkNU1d\/xLlhigYEiC2gXN7IO173VkMW3n7Di4n8KyGfih+l+WzcUF0oDAIgAAKqCbjzq0HVvUR9IAACIAACHUlgZPdw3X6ffvIspebSdcvgpPMEVq8apr3b9tAzR\/brMuZXXv\/GquXE83hi7hBt79lDAW+gahlkggAIgIDVBOABs5ow6gcBEAABEHAvAYfi1WMdZuOPxF++\/Y90X7Rl64aaZTOFtCbC8oV8zTI4AQIgAAJWEoAHzEq6qBsEQAAEQMBRAtlUluKT85TPse8jl+fw5LItaGHKZZtJZByyb+XwOIcMaZlmr9l9JYWDYUqmk3Vtfs1tL6eCp37Y+fncHJ2ZP04burfWrQsnQQAEQMAKAvCAWUEVdYIACIAACLiCgAiw8SOTNHn8Il08NU3TZ2Zo5vwszY3GKT7BwizrkBcE+svw8+H1eOkP3\/K+hte94e5XNSwjBS6mx2k8eV5XWRQCARAAAZUEIMBU0kRdIAACIAACriLg5QAcrkwQYKZuyy\/c8bMNr9uypfbww8qLzyZO0lxmpjIbxyAAAiBgKQEIMEvxonIQAAEQAAEnCfj87vwzB\/1l7qmIdUXp7htur3nxK2+5kwre+sMPKy8+ET9EqVz9YY2V1+AYBEAABJoh4M6\/TM30CNeCAAiAAAiAwAIBj88DFm1G4P1vfm\/NHr3jF3+55rlaJ3KFHB3nyIiyRQIBEAABOwhAgNlBGW2AAAiAAAg4QsDjUJTDhp3tdBdYE\/3fuXE7re4fWoH42r1XUN9g94p8PRmpfIJOxY9QAeEp9eBCGRAAgSYJePiXTRO\/BptsHZeDAAiAAAiAgMUEps\/NkMfr0RZdLm297Bnz+Lw0cXSS5i8mLLZgZfU9a6PUPdK18oTFOSJIs+msxa00rt7n47l5TXwF\/PUff5Pe+lfvWtbQvf\/0WRoa6VuWZ\/RgOLyWRiLrjV6G8iAAAiBgiAAEmCFcKAwCIAACINBOBFLxtBYJUYRZLpOj88+O2tK9njUswNZ0rgDzsvgV5mZTOpuh9a\/epV2+qrePPvUXH6aRdavMVrfsujWRDdQT6KeQL7wsHwcgAAIgoIoA1gFTRRL1gAAIgAAItByBUHdw0eZM0r41wTD0ZBF7w50CL5js4RD05SnoD9DbXvMWimdn6Tff8suGA2+U11W5fy5xSssa8q2pPLXiWAYR1RrmOpeZ5VD3Y9rcsk3d22uWW1EpMkAABNqeAARY299idBAEQAAEQEAfAfMeGX31l5WCAiuDsbQrgiZNKf4kKZmfp0Q+Tul8ikcresnvDZDfE9T2vTyU8m1v+gVKe5NUIPXBMxK5+SWjquxl8mk6O3+SIv5uGg4vCTXJl\/XFJlNjmt2lS0eT52h1ZG3pEFsQAIEOJwAB1uEPALoPAiAAAiBQJGBrvA5Mv6762B3PHGSP0co5annKa4JGxNliWu4UW8xWsVMrLL0IxInUKJ1PnqY8R01M5OI0GFpNs5lpmmRv12xmqmrzF7h8tz9G0UCs6nlkggAIdBYBCLDOut\/oLQiAAAiAQC0CcIDVIqM+v4YHUIYbuiGl8yvXBZvPztGZ+eMsupa8Y+Kde3b6CU2MNbL7ZPww7ex5gebJa1QW50EABNqbgIXfH7U3OPQOBEAABECg3QhAgTl\/R228B3U6K2uCpXNFb5t45ER4HZ59dpn4Kl0unjA9KVvI0Mn4UYS61wMLZUCgzQnAA9bmNxjdAwEQAAEQ0EfA1iGI+kzquFLaPajhHbMbxgwPJ\/Tl\/HSO53qJeFKR5rLTNJY6x\/PGMB9MBU\/UAQKtSgACrFXvHOwGARAAARBQS8AG54u29CaHX5dtPidKY0Ft8EbbW5gbtjhFrJhJXj+Hba9UiAuX6oKwULbg4ah9\/KMrVRST6woL9pbqkOPyfK3eanZxXulaKVPIFyjSHdGKL+tXuqJRrYQz\/5xLnFxmsyorzieK88FkThgSCIBAZxKAAOvM+45egwAIgAAIVBAoiQrJ1oSFtzhKX9M98o9oAxEXvNU0xoKo0MQS\/yOiQvbzss1z2AgWWLKfz\/F+Vo6LeVL\/5PlZon2y1zj5Al7auGe4qXWzSq34Q37yhJwXOdqC2At8S7a5bSvPgFXp5Nxh2oH5YFbhRb0g4HoCEGCuv0UwEARAAARAwBYCrEsuTsQ1sWRLezob6R2OKhFfOpuzp1gNbVMugu0xxJlWMjyk8cz8CdoU3e6MAWgVBEDAUQIIwuEofjQOAiAAAiDgGgIswMRT5bbU1Rdym0lN22Old6lp42yoQITmQGjYhpbQBAiAgBsJQIC58a7AJhAAARAAAdsJLJuLZHvr1RsMhP0UCPqqn2zl3BoesL7gQCv3SrftG7u38ZpgPbrLoyAIgEB7EYAAa6\/7id6AAAiAAAiYJOBGAaYNP6wMvmGyf267TAtIUmHUmsgG6gn0VeS21+G6rk3UG1zVXp1Cb0AABAwRgAAzhAuFQQAEQAAE2pqA8\/EpluHt6g0uO26rgypeMBHB4h2K+Lrbqqulzkj4+YHQ6tIhtiAAAh1KAAKsQ288ug0CIAACILCSgJu8YOFokPyBNhx+uIC91jwwr8dHm6M7KOBtL\/G5KjhEI5H1Kx865IAACHQcAQiwjrvl6DAIgAAIgEAtAm4a7dcz1J5eoEX2VTxgpXMivjZHd5KXf9oh9QT6aV3X5nboCvoAAiCggEB7\/GZTAAJVgAAIgAAIgACvduwaCJGe9vIAVYKtNgesvEzE19UWYdplwWUZVukm72o5Z+yDAAjYTwACzH7maBEEQAAEQKCCwNHJYzQ5P1mRa\/+hW16SV29bRT5fe\/+JrjUEsfyuxzggx+rwuvKsltsX+72e9r6XLXdTYDAIOEwAvxEcvgFoHgRAAARAgNffKuTpow99jP7+gY\/Q4YnDjiFx2gEmAnDtJYPU3WvN2l+NvE62gq8zBLHcjsHw6pYeingifogS2fnyLmEfBECgwwl4+Jexzl+BHU4K3QcBEAABELCcwKGJQ\/TV\/V+jmdQMveKSV9B1668ln9dYIIqTz5yjXDpH+XyBIjEWMixq8tkc5XiRZVloOZ\/LL+7neF\/ySueyfJ1Tyev30joWX4GQsf4asdfHa4p5w+747rUr1sVrnAV0mX9k9jmKZ2d1lXVjIZ\/HT9tjuynki7jRPNgEAiBgMwG\/ze2hORAAARAAARBYQeBbz3+bPvPEZymbzy6eOzB+kAa6BujuHXfRHdtvp2gwuniu3s7YsYuUyzgnpOrZVuucLLi8Zseqto56uKLvHfT1b8gXbruojivuJzJAAAR0E3DH12C6zUVBEAABEACBdiSQK+SWia9SHyfmJ+hfn\/o8\/do9v06fePSTdHrmTOlUzW2rTbeRcPNrdw50lvjiu6dnDtjSTW5dtSZrmm3o2srzwKzzbC5xwh4IgEArEIAHrBXuEmwEARAAgTYn4KH60QfTuTR95\/B3tc\/lay6nV\/LwxMtHLqsaWc4tgTT03LLu\/ggNbeolr7d+\/\/XU1WplZCio3pRv4dkS2XyGZAjljp498ILpveEoBwJtTgACrM1vMLoHAiAAAq1AwIj8ePLckySfdT3r6BU7X063bHkJhfxLQStaRYD1DHfTqnUx9owY6X0r3E19NuZ4Xp7+1LoesEwhrXXzRPwwbYvurvqlgX4OKAkCINAOBDAEsR3uIvoAAiAAAq1OwIQIOcPDET\/x2Ce14Ymfe\/JfaTw+XqTQAnqmb02MBjpYfMmNymazpDcOWDsM35vPztG5xMlW\/z8V9oMACCggAA+YAoioAgRAAARAoDkCjYYg1qs9nonTPc\/dS18\/8A26fsN19CK6jQc0uvv7xQjP+3LCU+dEmzXvHTu1ZBiiz994bpReoVazLZecGE9doC5\/lPqCAy6xCGaAAAg4QcDdf6GcIII2QQAEQAAEbCdgwgG2wkZZS+yBkw\/S57P\/Qkf6DlDWsxRRcUVhhzOcmtLk8bnLPah3GGJpGJ\/Dt01J86fjxyiZSyipC5WAAAi0JgEIsNa8b7AaBEAABNqMgDphcGbuDH159Ev0fwsfpcf7H6JEKO46VsYiACo032VTqWQYYqMkETIz+eI8qkZlW+E8rzxHJ+YOkfQLCQRAoDMJQIB15n1Hr0EABEDAVQSaGYJYqyNz6Tn67wvfpX+Y+zB9r+ebNBkdq1XU\/nyXCSH7ARRb1OMBa+UFmGtxTeWTdDJ+hOfA6Y8EWasu5IMACLQeAcwBa717BotBAARAoO0IqBiCWAuKDE18bPwxkp8tPVvo+vCNtH5qM88Sazz3qFadTedDgGkIZQ5YIV8gT50w\/DPpi03jdmMFs5kpOjp3kDZ2b0N4ejfeINgEAhYS8PDEVvwZsBAwqgYBEACBTiKw78J+Ojx5WFtUOZPLaNtsPkuZXHZhv5iX4bxs2flxXnB5ND5qG6q+UB\/d2HcT7ZzbQ6FM2LZ2Sw0Nb+mnaL\/97QYiASL+z02pu6ebF6Gu\/n2wrKF1YPopHrTXvp4iL38VIIE5ZEhil7+b1nVtdtPtgS0gAAIWEIAAswAqqgQBEAABtxCQ79gmZy5SX7SXfD79Hp9cLkfJdJJSmTTJfqwrSuFQfcEgnqZ3fP2dNDa\/EA7eLRDq2BHwBujqgWvosuxV1Bvvr1NS7akhFmAxBwSYP+InT0DdfDsVVCLdEQqGg1WrGk2epfOJ01XPtWNm1N9DW2O72rFr6BMIgEAZgepfOZUVwC4IgAAIgIC7Cbz9r\/43PbzvMUqkWDCxaPqtN76dkqkUC6gUi69J+uTXPkvv\/oW3U3+sl9LZDM3GZ+nY2RN0bvw8zfB+Kp2mdCaliS3ZF+FVOThi48gGWje8hsLBMP3XR\/6jKpAnzj7RUuJLOpFhD8uDYw\/Qg\/QAXdJ\/CV3jv4HWTm2wPkS8U2NPnGq36hNTzMzna3u3ptt0+GEtHNFAT61TyAcBEGgjAvCAtdHNRFdAAAQ6k8DLfvO19OMnHrCt87M\/OrvCm5bIJOj3vvv7JIsjt3oa6hqiG2M30baZXRTIVffMNNvHoc19FFsVabYaw9f7w+wBC7rLAxYIBqgr1rWiL\/PZOB2e3b8iv50zuv0x2hbb3c5dRN9AAASYADxgeAxAAARAoMUJ+Lz6hxaq6GqKvWVdvqUX5ouJi\/Sh+z\/cFuJL+IzNj9G98\/dQ2B+i61ZdT1fGr6Og4nlimH299CRW84BJdMCz8yeWCnXInkR8nM1MUyzQ2yE9RjdBoDMJQIB15n1Hr0EABNqIgM9n74oig7dtobf\/\/K\/Sq151Jx0cf57uO\/YjSuVSbUS02JVkNkX3jd5Hl0evUd83Fw4FVN9JfTVKJMTKdIHnfs3n5iqzO+JYwtPv6NlDQW+oI\/qLToJAJxKAAOvEu44+gwAItBUBuz1gAu\/0zGn62EP\/2FYcq3VmMDJI4fSSt69aGTN5lXPszNTRLtcIC\/l4eC0CCeQigTfk06kpV8hqCzVvi11KXo+9X650KnP0GwTsJgABZjdxtAcCIAACigk4IcCoQzw4LA0U361ida0swEq2i2CSpC2izbsyrFLLEmSysyCqJJ8PtJKypxWUjbZf3Dk\/e4YyvhTJELxMPi1nOjolcvN0ev6YtkZYR4NA50GgTQlAgLXpjUW3QAAEOoeAkfDyqqiUXsJV1efWehLZhCgM5SmTzCqvU0+Fmpcpo0mf5cWrZGkFWD2VhJKV9zznz9JUbmK5TR1+NJWeoDDPtRwOr+lwEug+CLQfAQiw9run6BEIgECHEfB57R+mZOXLuJtuXzKbpHwgz0vlqmWcmHFmzpyIqXx25Zwrp5kHyJpok073q9n2zydOUcQX4aAcfc1WhetBAARcRAACzEU3A6aAAAiAgBkCTgxB9HLkxQH\/6uLwswUXkUdESsmTsrAtFIpD0WQYmoi28k8+X9Dm\/OQ5PxIK0rj3nJnuW3qNzEk63P8c7by4R2k7wgNpiYAvHyCyN5jnUuMu3zsxd5g2RXcgMqLL7xPMAwEjBCDAjNBCWRAAARBwIQERQ3anrC9PP3j8YWXN7hjZSqFhZdUpreg7k9+izcFtikPRQ4GV3yRvnp9h+x\/jchNcu5+nYmCSLn+UfB5Acu2NgmEgYICA2jEVBhpGURAAARAAATUE2mEOmHjD3JrmM\/P0RPejSs2DB6wCZ96CiXYVTbTyoQQnOT73vOYxbuV+wHYQAIEiAQgwPAkgAAIg0OIEnJgDphqZVdEGVdn506nHVFVVrMdOBcbaxhvwki\/kL0YpVNsTJbUVcu4V4Eo6qKASEWEn4ochwhSwRBUg4DQBCDCn7wDaBwEQAIEmCTgxB0x1EA6Za+XmlMjOKzXPCv3lD\/sp0BXQPn7e+vjYG\/SRx+\/Vpubl83nKZnJK+6GsMtZfbL2y6tq1otnMFB2a2U+qn8d25YV+gYBbCUCAufXOwC4QAAEQ0EnAiSGIi8E2dNrYqJhqQdeoPaPns3m1wsWK\/uYWBJaIrBx\/8rm8FvTEaF+dKh8m9QteO9UXK9tN5RN0eHY\/SYTEfEHtc2ml3agbBEBgiQAE2BIL7IEACIBASxJoCw8Yiwe3J6VeOoMj7kSwedmT5Qv4yRfkT4CDMVRMm9IWRHY7xDr2BQvhOmdxqpyADNkdTZ6jgzPP0HT6Yvkp7IMACLQAAURBbIGbBBNBAARAoB4BJ+aAGdQP9czXzrl9DpgYWfByrxV2XESVLIzcMHERD0e6zCTF27Hk8fB4PRQI+TRvl1aHVKXQvoZ2KS4QKPBaYDpwKG62pavL5NM8L+wQxVK9tLZrE4V8ELEtfUNhfMcQgAesY241OgoCINCuBJwZgqj2TV\/mJ7k95b2KbdSJUMRXLr0kvEqcChw5Mp3IcoANf0sNNSzZX7n1FfCdcCUTvcez2Wl6fmYfTaRG9V6CciAAAg4SgABzED6aBgEQAAEVBNphCKIVc6JUsC2vo+AxJ8AGNvbRmp2D1Lcmxp6sJRePLEDdKHl9XsqmsnWLZRIZTYSxCqtbzu0ntbXA3G6ki+3jZc3pzPwJSuYSLrYSpoEACAgBfN2E5wAEQAAEWpyAEwsxqxZMSudXWXQ\/8x5jAqd7VYSGN\/VrwTDEpCBHJewd7iavtxiV0M+h4SUuvCbJ+J98Nkfi1dISH3v9MrxQn+jLJrMc\/VD+pBuzsdiYS\/7FWmAKbkSBjsw+S5u6d1A00KOgPlQBAiBgBQEIMCuook4QAAEQsJGAj70kdifVzpacy8PQC9+Cd+UwwHrcy8XXYjnWRxKdUFJmYbt4rmInl6nv+aooXpw\/1cL6C2uBrbijpjJyHBnx6NxBWt+1mVaFhkzVgYtAAASsJWD\/X21r+4PaQQAEQKDjCDgxBFE1ZNUeNdX2SX0c1F13tTLcsCS0dF\/UbEH95jXbkjXXs\/1aIA5rau+wWgt0ev4YjScvdFi\/0V0QaA0CEGCtcZ9gJQiAAAjUJOCEAFscKlfTKmMnWiEIxzORx2k8dp5ynqInTERjzpultD9N86E5moyO0bneU9T7\/7d3J3CSVfWhx\/+1dvU20z3Ts8nsw74OwyoICATQgLigiIr6fHkfjEl8mrz3otE8o4RP\/MSYhBf9GE188ZnELE8TolGD8lRI2AREUBRmGDaZFWbtnu7p2t\/53+rqru6p5VbVuXVv1f3doebu557zPbeH+vc599wNAzK6crg5AI52BPoivAvM5q2w6+gLznD1NtMkLQQQaF+ALojtG5ICAggg4KuAH6Mg2h42vmDal4I+3fPS3XKP3O1kMxXvM10Ic3NDwFdk\/vaNt3e+9avi+t282GfeBXZkbpySbi5KYPKuL2zOFtKyqn+tRCP83j0wFUNGQi3AT2Koq5\/CI4BALwj48R4w2yPudUMLWOW9Mp1Liz5rU23S0eh8mXogcInru8CYrAvo8PTbzeAcjJBonZYEEWhJgBawltg4CQEEEAiOgC9dEC2PwtENz4C5rfFmnhVzm2ZYjosXYz1X1KnstEzmJs0oLqV2Y\/279ONTemivtK7Lc\/vnHzt\/n\/6szB5pds0tl7Y7fztJV66Xlh+Wh+SsJefI6UvO6jlnCoRANwkQgHVTbZFXBBBAoIqAL10QnS94VTLT4qZuGAXRbdF6KZh0W+aFxzlf93XYftMqZ0baNyNI6g1jPsWIRHO1g6xIweyrvXvhZbpiXbv9PX14a2Dyeu\/eH8ieo7vkslW\/JIloIjD5IiMIhEmAACxMtU1ZEUCgJwX8aQEz3ewsdnkrdsEw9G5vnnRhWgZiZjCJ6j0U3SbT9HGZ1FEpmEFBdCrOVk4pUnaqSgOh0upc2mZbuRoX7iq1mWh7XuWfBeum3srHOUsz63MXOHYpkUrK4tyYxKerdDc0AVqvTX2xhCxOjsjhzKHAFG37+FYzQuJLctVx18rS1Fhg8kVGEAiLAAFYWGqaciKAQM8K6It9Oz05oyBabKnIF3x6bsoDuI8+8rtOqp87\/3M6dn3HpsnoYZkuHq19vYURlh5ZbVvtFKzsyRYzsi+2S5YlV0ssM\/9rSDHW5LvPrOTI20Qipglw7dA6+ekBfwOwWCRmAsFROZDe5xT4UOag\/PPzfy+\/vOYNctzgGm8RSB0BBOYJzP+Xb94uVhBAAAEEukGg010Q+\/r6JB6Ly+L4IomZ7lWxSNx8YqbnWNQZZc38PfMnIpFi1LSw6NxIauuGaYLRZaclxgQnzvMsBbMh50Mk4HXlOoXuZItOJ6\/VPt5k3yFZlJnf+pKNZtpPOIApDCUGpC+WknR+2pfcDcaH5JrVr5Ox1DK5d88P5OeHfurkY+3QBlnZv8qXPHFRBMIsQAAW5tqn7Agg0PUCOnpgPB6TsaVLpb+\/XwbMJ5Xqkz7zSSaTkuhLSCKRcAKmvGmOiURNMKQfjYWcz0wHMtN1TLuQ5Qt5EwuZTyHnfHSo9Ww+K5lcRtLmo8s6RUcT8vg\/lb7E2UK8bstlrpPaOLpREiYI3Lpvm5y+\/DR5cXyHHJ4+7Pr8ThyoIWV3hUSdUJm7xlThiAz2LZZYeu45pOnI1NwBPbSkrWDrTbCz9fCTHS\/VqoHj5GrT1bA\/XnrH2iUrrzCBYFqGE8Ny\/vKLGZq+4zXCBREQIQDjLkAAAQSaFNBWm0wuK+ls2nxMYGLmR6emJZ0xH13PpGXafNKZ0r50Wo+r2DazP6Pnm2NKx5b2Z2bOX3\/GWtmfPzAX+JjrZfKlIEiDocxMUKQBk06LNi9y5lkxAZP5TIgZda08mV5dZ688S+7b+lB5S9tz34Zan8n5FRsvl6HkkAnCkvKqtRfLo7t\/LA\/tsFe+toGcBAjBGjkeSrwso9kVEtXBN8w0ae7cXp1GTbAZNS3FhRqvL\/Ci3KePbpaLVlw6L8jSYPCq1b\/sxeVIEwEEXAoQgLmE4jAEEAiewGwrTSFrXjRqwo6ZubbSlJZNMFKxfXZ\/Jid33\/+wEyxpMDNtAiENfJy5tvRoYGTWnVafmeXyNt1ebgWqFDnyzITk8\/ZGXbhi5BJ5MbOz8hLtLVtuivFipL+IaZIrOt32GhdV2+20Fe81J1wjq4ZWySXrXyXv+8avy3h6vPHJHTvCMnrH8t25C+nzYPsHdstIfkwShaQZQ\/fqxgAAOEBJREFUt6T3ngEra+qzmmsH18nzR54tb\/Jsrl2CL115pZw0cqpn1yBhBBBoXYAArHU7zkQAgQ4J7J7cJf+07R9NMKXd4TKlrnEmsNIv4a1MixMj8pff\/etWTq15jo5EaDMAq3mhVne0RlXzaq3a10zQ7NBnxdym++Uf\/7WsGl4pv3\/lrZI0rWC3P\/BngQq+rlpzlUTyBGD16ru8L1\/Myf7oHkkl+js+cmQ5D52aLx8Y60gA9vp1N8ry\/hWdKhbXQQCBJgUIwJoE43AEEOi8gLY47TtaGrmr81d3d8VozIxEWHo8yt0JDY+y\/OXdcnIFL4aN1xEDXY6sePyS4+XDl\/626c5VkN\/7\/sfl6f3bjxG9cP15MtQ34DyIpYGdDnWvf\/Kzz7iVWk4lm5DHdv7kmPPb2bB5yeZ2Tg\/duebtYDKVr+g226MC8WhcXmGeydo1ZbF1u4rVstTyKlvZhAACQREgAAtKTZAPBBDomIDbVpZmMqQvW7U5WY6XnNYlm\/krHPNCqfZT12dT3EwXr71I3n\/hb8hLky\/JbXf\/gXkOLCGvPeE1oq2Qw33DsmXV2fI7d31UhlIDsvfo7oZJJiN9DY9p9oBFidIzec2eF9bjU2aEwCP5IHUf9a4mVg+ulj1Tu51fBnh3FVJGAIEgCxCABbl2yBsCCDgCbr+Y+8kV0xYwq5O7YMTqJZtIzIsgVoesb9QH7Q2nvF5uPusd5vmviDMq4\/qRdfIbF\/66DCYH5+X+pjPeKpPFw64CMC9eZL0kNtqoKPPyG\/YVbZkMyxSPxWTTohPkafMyZCYEEAingO1vDOFUpNQIINBVAl4MIBE1rS82J\/vhl92HwHT4e9uTPgNWa9IWxveed4u8c\/PNTvClx21cskE+ZLohLgy+dN8bT32D0xqmy40m262Xer1Inv+9NnKv3D+d783h5yvLWLm8NDUqqZh55o0JAQRCKUALWCirnUIj0F0C9b6YB6UkUZfd51zn1268ZC5bO7hxnaeKA71osdBREKtNqXhK\/tvFvyVbXnF2td01t7m9b7KTBVlihkLXt0Pro20F82LoovnoPJ83JTVD\/et8eCwlB6PBfhaxJkaAd\/RFU6LvBAvTpCMinrT4JHn8wGOeFFtbqN3e\/55kgEQRQKCuAAFYXR52IoBALwp40X0uZroV2Z2qByN2r9F6ap4MwlElO6P9o\/LRy35HNoxuqLK3\/ia3XVe3PfOC3PnQD+onZvZee8mVIqmGhzkHFGIFidIK5gpL340VxmkwOSDLUyvlpek9YSw+ZUYg1AL0kQh19VN4BMIp4EUAZrsbm\/3fXtttUvOiC+LCVrp1I2vlD6\/+ZEvBl97Zbg3dBmraQuZ22pvlS7Vbq2wx7fbQnjtu\/fA6M\/4jX8V6rmIpEAINBPipbwDEbgQQ8F\/A7RdpP3PqDENvMQPBbv8y40t4MAx9ZRdEfbfX\/3z178rSgaUtq7oNrNx2H22myL\/\/6G1y14G7pBhzH7S1XNAuPzFTyHR5CVrPvg7IcbzpisiEAALhEqALYrjqm9Ii0J0ClqMRL1rAYuaZjiBPtsMAfS7K9lQpqF0cd03sEu2C2OrktlXSbaDWbD7uePYOefilh+Ujp37EPFjW7NnhOF5bf\/KScwqrg+PoO\/9y+tyd+eM8j2f+0nuh9DHP5ZllPU7rdvmiJT2BtCS1WIYmh+VIbqInykMhEECgsQABWGMjjkAAAZ8F7LeA2Q5HTHe3gAdgZoQJq7XoyXvAzJfxkdSI8yX8w5d+SE5dfkpbeXZ73+iACG6mVsq848gOuf\/QfXLRoovdXCJ0x+ybPChPvfy0bDOf3Uf2OAGWG4Ql\/Uvklle+082hgT9Gg8kTR06UR\/f9KPB5JYMIIGBHgADMjiOpIIBAFwk08SiP61LZbwGz3OznuiTuDswX7baAJeIJ+c\/nvUfOXHe6TGWnZM3iNe4yUucotwGY6xawFm+cv932FTnngnOkL+9yBI86ZeqFXQenxuWZfc\/LY7sfl73mZdqtTHkPWmBbyYetc1LxPtk0fII8M\/G0rSRJBwEEAixAABbgyiFrCCBQEnD7RdqtlxddECNRuwGT3dRst3+ZZ8AsfgEeGV4sX\/3Ul+XSUy5yqnCptP7cV+U94Dawcv0MWBuNiJ\/f+gX5wAkfsF8RlQUO+PI3nviOPHfoOTmSmWw7p7Z\/AVCZofJ7Ap25\/iCaei9XfWmb+RdEt+lfZr\/OnfWIzksfPcN0liz9mdnmbDGnON0rdb\/2sZyZ63m6viy1XF6ebi0orSwDywggEGwBArBg1w+5QwABTwTKX6fsJW6\/Bcxe3pyULBe59OWx\/TyuW7VGvv6nfy+nbDix\/cQWpBAxXbvcTG4DtXZGftx6aKtsS2+TE5P2y+mmjEE45ql9WyVbyFrJSsG0wL58dP9swKOhjvN8mIY3M8GMBjzzl2eeJXO2zyw7z5flnaBIz\/cisDtuYI30xVISM\/djacj9iCSjSWf0Q71HtQui8zFbdPto31LZfnirnL5k89x2MyhNf2xg5tjY7PbZczUN\/VNOy8yZEEAguAIEYMGtG3KGAAJlAcvNQfplzfbk9su+6+vWeCmx6\/MXHGi7zDZawM4++Uz5lz\/5iqxcal6C7MHktuXUbeul+V7f8qRfvv\/qqb+ST2z5uEQKpWYVTa4402oiOtd1\/WOWZ5acdWfZ2T93zOw2bV2ZOT6u6Vr+WWm5wFVO1ODA1qT339MmSOmG6ZKVV8hIn\/vBZDQQ3LL0PHNObwwy0g11RB4R6LQAAVinxbkeAgg0LeD2i7TbhJ2uQ24Pdnmc24EcXCbnwWFtRA9VctNuAKYtX9\/7\/NdlsH+wSup2NtW7bwYTgzIQH5R4NC79Y2m5+OQLJGmeQ0vGk9KXSM7M+6TPrCdn1tesXCXDS\/pFh8jvi\/U5cz2+cl2P1xa17+35tmlNyTnD9WtrTSl0Evn29D\/ZKVyVVM4buED0WaKgTjYDsGyhNHJiUMtama9y3Vduq7esTgRf9YTYh0D3CxCAdX8dUgIEQiBg99f6zX4hcgNsexREuyU27SV24y\/zDNix46rHzDuNnGAlmZCEBi2JuJknJB6PS1znZr8ua3fN41dv8jT40jrbO1X7ZchXrr1atqw4t1S1Z5nZL5cWbfz93MR2OZqfspFUT6VhMwCz1QW2E8Be\/HvTiXxzDQQQ8E6AAMw7W1JGAAFLAtaDEdMeYXtyO5CD6+u2kcVkzARA5lmSZNQEPaaFRz9mTU5cvskEPzHno8+iaJ71S3FlS1FpMADzlVGfhzFBlj73lDPdvXL5nPPJ5LLOMPE633jxJmebvrtJ1ysnzX7avOFJPwmTn7dceI38w\/13yLnrN8v9T\/xQBrNDlYd7tFwb0csvxbaec2oWxcsyNZuXasfbDMA0fXP3mp\/kY38RUO3afm7zosXdz\/JwbQQQaF+AAKx9Q1JAAIEuE7D9hShpWnf64\/0ytmSpafUxwY\/pyhY3rT9Oy49p9YnFtAVIW350OWo+MdNNTecm+DGjJzpBkHk8xhkMwgRF+hzP4qHFckL6eGdgAQ2E8vm888mZeVaDoFzOfDJO4KPBTzqTlnQ24wRH1aojekJcfvryk9V2ebJt8\/oz5IYLrpP+RL8MpQbl1adeLE89v022v\/iMbPv8w6abn\/dd5SoDy4WFtH0PVKZf77qVx9lerh1u2r5Sa+nZDsA0vbz5RUHQpwPpfeaXGFlnoI94JC7L+r155jHoDuQPAQTmBAjA5ixYQgCBwAo0bgPTL70mpHGCmZjTuqMtO6VRwUpfiGe+Fs8MbvHKU851giBnq0neaT0w32CdkdRMfz39YqfPOemn3PqjLT0a+KSdwMcEPybg0WXzpI\/ERmKSHjeBkFS0BOmrssqvyzraHO75iS3y0NZHmzupztFeBhzVLpswQee7Ln2r0\/q1c\/9ued3vv02e3LFNli1aKiODi6ud4sG22veNl61F1gdkcSnjjMXh8lg\/DvMmAPOjJM1d83u77pw9YSy1TN684R2z6ywggEA4BQjAwlnvlBqBrhLQVp\/0lAZFptXHPHyf0492iTO\/VdZ1DYya+UKtQdcPt9sLbhRzJryz5mo7vWZ8bBRC86\/19tSLT8vb\/\/gW2Xuo9G4j7c7Yqane8PJeBqQa+vsxlUZD9OPK7q5p+1UNfjm7K231o7rp2bXqJWArAgjYECAAs6FIGggg4LFAUV44\/IK1a3gRjNT7st9axu1+ifcy4FhYvjedf518+PUfkKn0lFx\/29tl0szLU7ujJ5bTcTOvJ+jFPVDOk\/17oZxy\/XnQuyBqi7TNya+WxnbKoO8lY0IAAQQIwLgHEECgCwTqfZUORvZtf+m2XeJOBWAfu+G\/y69e9R6nUnYd2DMv+NKN+ixbp6Z6deKVx8H0Adl7tPboi16W3fY9Yzuvtrsg2m4ltl3eaunpKwmYEEAAAQIw7gEEEAi8gI5LYXvS7lDVhlK3fZ2gpOdVwFEun77\/6ku\/9lk5f9MWZ5AQHYhEBx1ZODXbAva1+75hnh3b6gw2ot1OP\/qW35Kh\/mNHUHxw1\/3y1IGfm26q+ZmBS\/KiwVCtyasWsG2Hn5TH9j9S67Kebve6jtvNvP0uiHZb1Notn5vz6YLoRoljEOh9ge7716v364QSIoDAAgEvftMdM0Oz25ys\/3bfctDp9ZdzDWgu2HSO3PKpD8iLL+10aPW9XwunZoPebz78HfnMN\/9SvnDn\/5E7HvhW1eBLr7F\/ep88P\/6cvDjxC9l5ZIfsmdot6Xx64eVn170KwA6k989eg4X5Ara7DNZr4Zx\/5eCsZQoZefLgE3I01+SoPMEpAjlBAAELAgRgFhBJAgEEvBawHI2Y7MbNEPA2J\/utdHbL7PVv3oeSQ3Lth26Uf73\/TmfkSLWt1gKmA6g0M1W2mkTNkP21pmaDdK8C0guWXSSpWH+tbHq63aug0lamzZiktpJy0mm2zq1evMXEMoW03LPn\/8lE9nCLKXAaAgj0goDdXwH3gghlQACBwAnYD27EGa7ebkFrBwd2r9Naal5+OT9u0SqZ2nNEfvTyY07mys95xat0QawMfB7c+rB8\/yf3mtESSy9yftulN8hpa0+eV8BoRRpHzbvOak3NtoZ45bEkNSZXvuIa+daL\/1Irq95tD\/j4DpXBtB2EYP\/M1Suj178QqXdt9iGAgP8CBGD+1wE5QACBBgK2R0\/Ty0WrdI9rkI36uy1\/F7T9XbpYsJ1iieOksU3yzFPPyuHJ8VkfHX5eJ30BdbVJn+WKm333\/vyHcvs3\/nz2kAtPOveYAKzyS\/t0Znr22IULTbeGeDQanXYtu2\/vPQuz15l1y\/eg7Uxb74Lo03D\/Nly8+gWAjbyRBgIIeC9gtz+A9\/nlCgggEEIBL1rAqj2f1A6t9e5Vlr9Me\/Eb980rTpefPv6zecGXGpYH2qjWAqb7r731JvnK3V8172+b3x2xUCjo7nlTZTdGTfehbdXf3xaEFrCseb7n26bl61Dm4LwydGrFmxDbXu5tv7er6aDbXlHaTsmLn8e2M0UCCCDQMQECsI5RcyEEEGhVwIsvWrYHzbD8eIuhshuBVXb9a7UeKs87Z8WZct9DDzgjHlZu1+XZFrCK7oOVx\/z42Z\/II9sfkz0H5w\/XXu35sIWB8u\/93Scrk5pdbjYAtt0CoaMvfmfHN+Xl6b2zeer0gu06tp1\/6z9ztjPYwfRs338dzDqXQgABCwLV+4dYSJgkEEAAgSALxGwPwmE5YLIbfokZmt1O+4h+yT9n7Ez594fuq1m9BdNSpVPUDPVfa\/rKPV89Zle1ERIXdltbumiJecHzUfnafV+Xy8+8RFYvfYWTzkhyyTHp1dtgicO5hJp8f+d3ZMfkL+pd0vN9ETMSZZAn+wGY7Z+SzunRAtY5a66EQBAFCMCCWCvkCQEE5gk0271s3sk1VqKRY4dIr3Goq81B\/ypYLB7bvc9VwSoOSpjntk4c2Cj\/8ej9FVuPXdRnvMqTPutVuV7eXm3++HNPyEBfv9Oqlsllnfkzu5+bd+hdj90tN\/7he+Shp0tdEZPmfWMaTL3ntTdJfM28Qxus2AtW7t37A3lmYluD63m\/216JvMmr7QAs6D9z9RRt\/DzWS599CCAQbAECsGDXD7lDAAEj4EUXROstYF48qGax9gttDsIx3DckY7kReeiJHzXMVWVLlj4H5jYA+4vvfFn0U2\/S1qZy8KXHaaCmU7ODjNgKVl4+WupyuHnpuZKIJpz3Oz1xsDQapJOxjv5lq1TeZHpha6Y3V+mOVA9lDsm67sgquUQAAQ8ECMA8QCVJBBAIvkDl4A42cutFkGgjX+U02unytHxoTIoH8vLE7ifLydWdVwZctp1rXfjfH39QfmXFzfJ86me1Dpm33dbzUsv6V4h+ytNLR\/eIXwGYzW6V5fLYnMcitbuk6nViplVaW1kTsYTziZuXpeuyBvH64nRd12Wd631VlPZbdW2Wr15a+u9D5XNfO6delLOWbql3CvsQQKCHBQjAerhyKRoCvSLgSRfEOs8nteQW8P5QrT4DtmF0jex5bq\/sO7zfNUt5FEQ9IWZ7uP8audi6c7tMTE3KxhWbnC\/yh9KHZDxzWNL5Wu8O86a1yItXJlQrshNAFks3nf5dNMv6nrR4Ycp53q+g4Ynpdqotg1r32uWtNC+tO\/sqtmmrpaZpjnLmuq6tpjq4iL7XLVfMOYOr6AArWr86YIp+nH3lddP1NKfLzjznjHLpHGfWs+bYi07eIq898\/LZ62genI\/knXm1ctbbdjh3qN5uz\/e9ZvXrpD8+KHETOGrw+PNDT8hPDswfpXPD8PFyzerr5Ef7figPv\/zAbJ5s\/QJgNkEWEECgqwQIwLqqusgsAuEU8KJ1qd4AEUFQth0etPLMyanLTpKfPfFzmZqeaoqk\/CJmPUlbKzo1XXvu1bJx5VzHrm9sv0MefemRqpe37Vu+yFBiSC5cfonzhVyfedIv5uWPPneorUCleUwOT43Lrf\/2KRPolAIRDXo04NG6cgIgZ14KTjTo0WBF53kzrz79a\/XNAdm6edPJUszVbwULSFZdZWNZaoUMmvouT\/2x\/vLi7FzrTCe9ByqntUPrK1dZRgCBkAl07v+MIYOluAggYE\/Aixawyhf82sip7edbbDeolb8Iui3r2eYdXw888tDsO73cnqfHzWsBs9TSqPeADriRjCdl0gSEWp4PXv8+GTOjImo3Nd2ny5WTBkBrhtfKiaMnl7qtmS\/Bpe5rcVk5sKryUGvL\/fEB2bz0HFfpRfMJeX6\/vyMnusqopYOC3kWy2WJqa2HlVO3fgPIvPhYO+tPJX0xU5pFlBBAIhgABWDDqgVwggEAdAW9awOyGOHZTq4PR4q5mBql410U3SmGyIOe86Szp70tJKply5h\/9y9tcDajx3k\/\/pmnlicgHb\/w1+cln7pWb\/+RX5XuP39NizkunPfhHd8mGFWudlWtvfas8t\/cFedflb5XVY6Vh6KslrgGY3jubRo6XVwwdV+0QX7cFvRXWNk4z96Dta3uR3sJuhNX+nSoHacOJYXnFwGrzc6FvrIvKYHyu5cyLvJEmAggEW4AALNj1Q+4QQMAjAeuDQ9SJwPRag6l+6U+VApnyPJXsk1Rfn\/Qlk3OfRFKS5pMzAVD68LQpvflaN9NfTnszOc\/pOM\/nmK92+jxOvlB65iZnnr8xn6z5ZHIZyWazks5mJJ3JyHR6WsYnxkUaDNOuXw4\/9Y6Py9tfdUNV9Y\/970+6CsAOT5prmelbD3xXPviW91VNq9mN5ZYEPe+\/XvdeuWbLFQ2T0FazX0y8IE8f3BbIAKzRoBQNC9hlB7T6HGJQi1kOrsr5058fnYbiw3LFcdeYZ8MSkoqlnG36LJh+mBBAAAEVIADjPkAAgcALtNoFUbv56NDgThe1WHJ2WbctXT0tY\/3LpC9hAiDTrS2ZSDhzXddubqVtZl7eP3NMama\/c4wJlMrH98f7JG66wc2dZ9I05+yYfl7uM++JanaaeCErn\/nCF5s9rebxpZcj144S+xMp+cItfyK\/dMZlNdNodscjW3\/snFKtZaDZtK75vTfLplUb5M6Pf1Wu2vxqV6evW7TeOW71cIPI01Vq9g8qf2G3n3IwU2y2G2wwSzGXq\/IvBX564DF5bmK7HMlOODu1XpenVjrP89HVcM6LJQQQmBMgAJuzYAkBBAIqkIqn5FfPfW9FAGWCKX3uxxmiWoMsE+yYZd1WDrh03mrgZpMhnpn\/8L3rtC2\/V6z0HrDqAdiSwRH5m9\/4czl7w5mus9fpA3XAivGpmS+4Lp8rO3Xp6aKfoE4LnwsKaj5t5avm2CG2LtDhdMoteuPmnV67pnbMXn08e1i+uPWzzvprV18v64Y3zu5jAQEEEFABAjDuAwQQCLxA0rReXbru0sDns1oGWx2WPBKtHixVu4abbdr6UC0va8dWy9+9\/y\/M8O3rGiZT+R6jhgebA8rPyNiKJXutBcV6N1g3leLjMTraYy9NOmi\/ThetuEzOX36xGRhGR6jUUSxFBsxgLLpebWCOXjKgLAgg0JoAAVhrbpyFAAIIuBJIVRma2s2JdsMvkYx5Fsx0kpx36TPWnCJ\/+\/7Py7JFY\/O2B3WlHNAFNX\/N5sv2SJzNXr\/Tx\/da\/ZVbwLSlPWGe9xLRz9wUi8z\/eZvbwxICCIRdgH8dwn4HUH4EEPBUYNXAcc5IfM22HtkOwI5mpk0ANjBb1stOuUi++N7bzeAgg7PbvFqw1RW0\/MyNV\/nsdLphewZM321Wb9IATUcI1FYjfW5Q\/6iR\/iw4LUmmZUnvJf3jDE6jS7o+80Jqs+LsEV0v\/wDpObMrplXWyUBRJgsT5vXPufnZMTv7Y4PO0aWWK3P9mbR1VjAvoy6lZf4219LWLiYEEECgFQECsFbUOAcBBBBwKZAppM2XvtLXPpenlA4zX\/BsTvpyZP0yq9343nzh9fLH77zVeWaumWv43YLRa++RClsA1p\/qk8nJaece1Puw8lN6uXQLPyfN3MAVxw4nF8nKRctlIn94dmtftF+e2\/\/87HqjhUtWZhodwn4EEECgqgABWFUWNiKAAAJ2BGLm5b+tTLZajSqv3WeepfuVK2+Wj7zxNys3e7Ks+R9bvNRJu7IFotHFTl97itx280cloSNKmlEmdWAVZ27W+5P9jU7vqv1hewZMA\/iJTGkgFb8raiIzLhP7xuX40eNlSibM01zaOtdcAFj5wnG\/y8P1EUCguwQIwLqrvsgtAgh0mUCrI91ZbgBzukx9\/M2\/Le989VutCb7ytPNldHjEGcI\/aQIkDZo2rFon8Vjc+bz\/hluckQu1+6PbafHgIrnolPPdHt71x2lw2lILaReWPIhdSLcf3C6jqSWiI4Fmi821aOkgG0wIIIBAKwIEYK2ocQ4CCCDgUqD0DEsrX7LtdUHsMy98\/vKtfy5vfPV1LnNd\/bBT1p1oWqTi0t+nL5XulxM2bpJf7N8hU7mjctC0KGSnMvLUge2SMS+Ans6m5dPf\/qw0E3zpVf3u5li95N5tjZoh9cPSklIetMI7zdZSPjh9QA5NH5KNI80NF88zYK15cxYCCDAMPfcAAggg4KlAJp9uKX3zuFbdKWm65w32D8iACYQGTEA04CyX1nW7Bkm6T5dvuPJ6ueisC+qm52bnf3z23+Yddv1t75AHtz48bxsrzQnETEWbwcubO6lLjw7yMPQ6pPwzh7Y3JVt6bq2pUzgYAQQQcARoAeNGQAABBDwU0IEGlvWvkLgZklqHpY5H5+bHbouVjjPHTA1m5Luf2zwbZFUGVAOpAdGWE7+nsLVWeeFd6qKa9SLpwKWpPwu9NNEFsZdqk7Ig0FkBArDOenM1BBAImUAq3i\/Xrb2h+VIPm1NWN39aZ89obtACN3kLy\/NQZYsgBNLlvHg9bzQMvdfXt50+LWC2RUkPgfAI+P8r1PBYU1IEEECgpwRoAWu\/OrULYlimnmsBK4Sj62hY7k\/KiUAnBcLzL38nVbkWAgggEAIBL1qreu1dX41ugzC9C6z3WsAIwBrd3+xHAIHqAnRBrO7CVgQQQACBBgK0gDUAcrG7V7sg6jvO9EXHS4ZGnUFiorGIGRgmJTmZdKHSHYcwCmJ31BO5RCCIAgRgQawV8oQAAgh0gYDbAGzLprNk44p15n1hSemLJ+fNk2ZdX7Ss80\/98591QantZrHVF3XbzUVrqek7zJYNL5Vli5bKYN+gxOJRyRYyMp6ekP1H98tUcUKmjpoXLx8tpX9S9EQZTiZau1gAz\/qPHfeYgXVismXFuRKmlswAVgVZQqDrBAjAuq7KyDACCCAQDAG3Q3Dccs275E2vfF3DTH\/+374UvveAdcEzYKMDI7J88ZgsSg1J3LxsO1\/MykT2iOyb2mcCrmnZNb1TxMW7tt0G7A1vlIAccCQ7Id989uvy4O775JfWXSMnLzk1IDkjGwggEHQBArCg1xD5QwABBAIq4PYLtdvWgaWLlsiY+YRpCmIXxJNWHi9Lhkdk2gRXe47skenctLyU2WM+7dVMr75wet\/RffIPT31F1g6vk6vWv0bWDK9tD4qzEUCg5wUi5n+gbn+J2fMYFBABBBBAwL3A1+77hhycPOR0K0yYlpFyV8KF800rN8jiwUXuEw7RkTd+6Z2y8\/Bu30us3QnP3bhZJnLjsndyryf52TC6XpYuGfQk7SAlesqS0+TKdVfLWP9YkLJFXhBAIEACtIAFqDLICgIIINBNAm+++Ppuym4g86qDVfg9rVq8QlYsHZPth5\/2NCu9Ngx9LawnD\/xMth54Us5ZeZ5ctvoKGUoO1TqU7QggEFIBhqEPacVTbAQQQAAB\/wXcds\/0KqcnrzpRov1FeeHwC15dYjbdMI0aWJCCPLznh3LXC3fOlp8FBBBAoCxAAFaWYI4AAggggECHBaJmFD2\/prPXnSn7cy\/JVHaqI1kISwtYJWaYgs7KcrOMAAL1BQjA6vuwFwEEEEAAAc8EYlF\/\/je8fHhMdh\/dKblCzrOyLUy4117EvLB81dbDGHRWc2AbAgjMF\/DnX\/75eWANAQQQQACBUAr41QVx\/YrVks6nO2peKOY7er0gXIwALAi1QB4QCJ4AAVjw6oQcIYAAAgiERMCPAKw\/kZJnDj3bceFeHYa+HiQBWD0d9iEQXgECsPDWPSVHAAEEEPBZwI9REDcsWyd+BAYEYD7fbFweAQQCI0AAFpiqICMIIIAAAmET8KMFbPHgsC\/M+WLBl+v6edEwdrv005trI9AtArwHrFtqinwigAACCPScgB8BWLrQ2We\/ypXmRQvYYGJQYpG4xM371ErzuJnHzLqZm0\/cLM+b6\/aZ\/U\/s+4kcSh8qZ8+TuR8tjZ4UhEQRQMCqAAGYVU4SQwABBBBAwL3ApuPWSHQwJxH9E4mYE3XJ\/G2WS0tzy8662TlzhHOcXikSic4ul\/fqvDyV0i2t6bnPHuj88196ddtDsvfH++V\/nPeRcjGbnu86spMArGk1TkAAARsCBGA2FEkDAQQQQACBFgSm89Oy\/+j+Fs5s\/ZRCsfVz2znT9pD37bYuacuY11O7efQ6f6SPAAL+CPAMmD\/uXBUBBBBAAAHxowuiX+y2g5F2uzRqV0Svp4KE77k3r01JH4FeECAA64VapAwIIIAAAl0pEHW6HXZl1lvM9FzXyBYTmD2t3S6NMdN10+vJdtDpdX5JHwEEOiPg\/b8+nSkHV0EAAQQQQKDrBMLUAqaVU\/m0WruVVZRiW8Ppd6QFLIQjP7Zbr5yPQBgECMDCUMuUEQEEEEAgkAJhC8AiJgSzObXTChY1Iyd6PdEC5rUw6SPQnQLeP4HanS7kGgEEEEAAAc8FbAcknme4zQs4IzJaHASknQBnODEsS1JLZ4ew1xYxfTF2aV4arl6XnSHta+zT4+NmGPzZ85zjZs41+3SkRiYEEEBgoQAB2EIR1hFAAAEEEOiQQNhawOL5lCQipaCkWDSdCPVjrEvzmXWzreDsM0NYOMuledF059OASz\/5QmmeyWWkL9bXUm1due5q0Q8TAggg0GkBArBOi3M9BBBAAAEEZgTCNgjHvc89aLXus\/ms1fRIDAEEEOiEgN3O2J3IMddAAAEEEECgRwT0JcpMrQvkivnWT+ZMBBBAwCcB\/uX3CZ7LIoAAAgggELYuiLZrPJfP2U6S9BBAAAHPBQjAPCfmAggggAACCFQXiIi992JVv0Jvb80VCMB6u4YpHQK9KUAA1pv1SqkQQAABBLpAgBaw9iqJAKw9P85GAAF\/BAjA\/HHnqggggAACCAgBWHs3AQFYe36cjQAC\/ggQgPnjzlURQAABBBAwARhdENu5DfJ0QWyHj3MRQMAnAQIwn+C5LAIIIIAAArSAtXcPZAnA2gPkbAQQ8EWAAMwXdi6KAAIIIICACMPQt3cX5AsMQ9+eIGcjgIAfAgRgfqhzTQQQQAABBIwAXRDbuw14Bqw9P85GAAF\/BAjA\/HHnqggggAACCDAIR5v3AAFYm4CcjgACvggQgPnCzkURQAABBBAwXRCF\/w23cx8QgLWjx7kIIOCXAP\/y+yXPdRFAAAEEQi\/AIBzt3QIEYO35cTYCCPgjQADmjztXRQABBBBAgGfA2rwHcgzC0aYgpyOAgB8CBGB+qHNNBBBAAAEEjACjILZ3G+QK2fYS4GwEEEDABwECMB\/QuSQCCCCAAAIqQBfE9u4DWsDa8+NsBBDwR4AAzB93rooAAggggAABWJv3AM+AtQnI6Qgg4IsAAZgv7FwUAQQQQAABHQUxAkMbAvlCro2zORUBBBDwR4AAzB93rooAAggggAAtYG3eA1kCsDYFOR0BBPwQiPtxUa6JAAIIIIAAAvoMWG+1gC2RZRLL6VeLovnPlM3MpFjU\/5zlSMLMYgWJFM3vf3WbTs6+8rG6ajYUzNzZXpSCnm\/WdUNpuSCFglkuFGRqf9pJgr8QQACBbhIgAOum2iKvCCCAAAK9JZCOyOCRYRNcVAQgGng4AYfOS8GLBiNFs+wEMxqcOAGIWde5E6BoQKKBSik40f15s1xaL23L5\/NO0DK8uc8zw4MvTsgPn3zUs\/QXJnzm6tMXbmIdAQQQCLwAAVjgq4gMIoAAAgj0qsDzT+2Uv\/\/S1ztavGvOvNQ0vXlzyVgs5k3CNVLN5BiGvgYNmxFAIMACHv0THOASkzUEEEAAAQQCIhCNdv5\/w14O\/BHpcJfKXJ5BOAJyK5MNBBBoQqDz\/\/I3kTkORQABBBBAoJcFfHkPmHZ39GjqdEBJC5hHFUmyCCDgqQABmKe8JI4AAggggEBtgU63GGlOoh4Ofd\/pQUWydEGsfXOxBwEEAitAABbYqiFjCCCAAAK9LhCNetcaVdvOu2t2ugUsm+cZsNr1zB4EEAiqAAFYUGuGfCGAAAII9LyAL10QPVSNdDigpAXMw8okaQQQ8EyAAMwzWhJGAAEEEECgvkCnW4w0N14OwtHpgDLLIBz1bzD2IoBAIAUIwAJZLWQKAQQQQCAMAl4GQzX9PByEI9LhbxUMwlGzltmBAAIBFujwP5UBliBrCCCAAAIIdFjAnxYw7woZ6XAEluMZMO8qk5QRQMAzAQIwz2hJGAEEEEAAgfoCne6yp7nxstWtk68BWzN2nKwZW10fmL0IIIBAAAXiAcwTWUIAAQQQQCAUAn4MQ+8lrNeDcIwOjci7Lr9J3nn5jbJ2GcGXl3VJ2ggg4J0AAZh3tqSMAAIIIIBAXQE\/hqH3tgXMmyHuj1+1Ud77mnfLja96o\/QnU3VN2YkAAggEXYAALOg1RP4QQAABBHpWoNPPTDmQRe84bXdBvOTUV8r7XvseufKsy6TXWgu9qwVSRgCBoAsQgAW9hsgfAggggEDPCvgxCIc+BebZZCHpRCwhN1z0OtPi9Z\/ktLUne5ZVEkYAAQT8EiAA80ue6yKAAAIIhF7Ay+6AtXCjXg5D30YAps93vfuKt8mvXHWzrBhZViv7bEcAAQS6XoAArOurkAIggAACCHSrgD8tYB5qtdAHcdPKDU5r11sv4fkuD2uGpBFAIEACBGABqgyyggACCCAQLoGee64p4v4Bs5WjK+QTb\/uQvOHCa3m+K1y3PaVFIPQCBGChvwUAQAABBBDwSyDaQotR23l1HyM1fymX5Xn3FTfJx276bRnuH2r+GpyBAAIIdLkAAViXVyDZRwABBBDoXgF\/uiC28aBWI+oaLWDxWFwS5nPWhjPkI2\/5oFx40nmNUmI\/Aggg0LMCBGA9W7UUDAEEEEAg6ALRSFQS8YTEYzHziTufqC5H4xKLRiXmLMec5UjUzGNmmzlHAzf96DD2moa2pJXWzbAeZtn5mNEOtUFKl4u6PINx3MgqWb9YX2JcNH\/mptJaUQpFs9V89I8uO3\/MvFAsOB9ne0GX887+j13+u5KMJU0eYxIpRuV\/3WjyaJbLQZc\/QeZcuVhCAAEEgiZAABa0GiE\/CCCAAAIdFfj3n90vhybHZeXIcjn\/xC3HXLtogo8\/uuMzks1lJZvPScbM33bJm+SM9acec2yzGzQ4ctI1aXZqWnXmmIxnD1q7XH+iX0b7R62lR0IIIIBArwsQgPV6DVM+BBBAAIG6Ah\/+8q2yffezzmAQtQKwT9\/x2XlpXGACNVsB2LyEO7FiAkqb0+HpcQIwm6CkhQACPS8Q7fkSUkAEEEAAAQTqCGgrVL2p2v5b\/+GP5NLfuVZe3Lez3qkN92n3wY5PhfrlbTY\/4+nxZk\/heAQQQCDUArSAhbr6KTwCCCCAQKNwpFoAVg687njgW7J0eNTplpjNZ80843Qp1G6Kuqxz7WI4b56f2z6YGOz6CiAA6\/oqpAAIINBhAQKwDoNzOQQQQACBYAnUGySiHDzVyvFt\/\/fTtXa52n7WutNcHWf1oILV1IQAzK4nqSGAQO8LEID1fh1TQgQQQACBOgLl8QG\/9fB35dzfukKu3ny5PLj1EWfEv5+\/uLXOme3vsvw4lssMNWrzc5nMzGHj5hkwJgQQQAAB9wIEYO6tOBIBBBBAoAcFyl0MtQvhL17eIV+86286WEq7A2K4yrjlqG88PeHqshyEAAIIIFAS8OHpX+gRQAABBBAIjoAvA2H4WXy6IPqpz7URQAABIQDjJkAAAQQQCLeA3R55TVn60P6l71i2Ok0wCqJVTxJDAIHeFyAA6\/06poQIIIAAAnUEys+A1TnEw12WoyEXOdUXS9ucDhOA2eQkLQQQCIEAAVgIKpkiIoAAAgjUFig\/A1b7CO\/2WI6F3GWULojunDgKAQQQ8EiAAMwjWJJFAAEEEOgOAX+fAbPbGuVG3HbQN2EG4bDdquamHByDAAIIdKsAAVi31hz5RgABBBCwIuBrC5iVEjSXiO1gqVAsyGR2srlMcDQCCCAQYgECsBBXPkVHAAEEEBDxMwCTzjeAiXnBmfVq511g1klJEAEEeliAAKyHK5eiIYAAAgg0FohG\/BsGsehDBGa7C6IK8y6wxvcZRyCAAAJlAQKwsgRzBBBAAIFQCvjaAuaDuO0uiFqEcUZC9KEmuSQCCHSrAAFYt9Yc+UYAAQQQsCLg5zD0XgRDjVCKXnRBJABrxM5+BBBAYFaAAGyWggUEEEAAgTAKRCLh+l8hAVgY73LKjAACQRII1\/91giRPXhBAAAEEAiGwadV6WTm6wpe8+PMMGINw+FLZXBQBBBCYEYgjgQACCCCAQJgFbv8vfyB\/+vXPySe\/dnvgGPr6+qQvmTCfPkkmkpJIxCWZTJrlhLOcMPN4PC6JeGndWU7EzDbdbuYxXY5LzMxjum4+\/YMpeTLzpNWyMgiHVU4SQwCBHhcgAOvxCqZ4CCCAAAKNBVaMrJCzN54pSQ1cYibI0YDGfErrpXkiVl7X\/SYYmt0\/\/3g9rryvtGwCpJgJmmbSTJj0y\/vHc4fl+2+8UwpmNMSC\/jHv1CoU887cq9ax5anl8uRW2wHY4cbIHIEAAggg4AgQgHEjIIAAAgiEXuDtl90g+un0tHNih0zu6OxLjL0YdJ9REDt953A9BBDoZgECsG6uPfKOAAIIINDVAr0yBH4zXRD\/5gf\/KM\/seV4KhXKLn3kmzbycrNT6Z7aZURr1T3m\/jhSpn2r7i6bF8N1Xvk0uPe2irr4PyDwCCIRLgAAsXPVNaRFAAAEEAiQQ7ZERGMenx12r\/utDd8rdT9zn+vhGB77+wmsbHcJ+BBBAIFACjIIYqOogMwgggAACYRKISG\/8bzidT0smn3FVddFozNVxbg9KJfrcHspxCCCAQCAEeuNf\/kBQkgkEEEAAAQSaE4hGvHgiq0EePLqk21awWNTuVw8dNIUJAQQQ6CYBu\/8KdlPJySsCCCCAAAI+C\/TSS6DdDsRhu9ulDrXPhAACCHSTAAFYN9UWeUUAAQQQ6CkBX1rAPBJ0OxBHzHIXxLwZzIMJAQQQ6CYBArBuqi3yigACCCDQUwJ+PAPm1fvFxtPu3gVmuwtioZDvqXuCwiCAQO8LEID1fh1TQgQQQACBgAr0VAuYy5EQbXe7zOZzAa1dsoUAAghUFyAAq+7CVgQQQAABBDwXiIhHI2LUzbl575YHk19dEKfSUx6UhiQRQAAB7wQIwLyzJWUEEEAAAQTqCthuDap7sZmd3oRfIm4H4bDdBXHf+AE3xeYYBBBAIDACBGCBqQoyggACCCAQNgHbIwK68it6E4K5DcCiloeh33Vgj6ticxACCCAQFAECsKDUBPlAAAEEEAidgB9dEL0bhGPcVf3ZbgE7cnTS1XU5CAEEEAiKAAFYUGqCfCCAAAIIhE7AjxYwb9q\/TBdEl4NwRCN239uVzqZDd99QYAQQ6G4BArDurj9yjwACCCDQxQKRCINwtFt9hSLvAWvXkPMRQKCzAgRgnfXmaggggAACCMwKRKXz\/xsuevQM2JHMEXETDEWjdoPOeMxui9ps5bCAAAIIeCTQ+X\/5PSoIySKAAAIIINBtAn60gHn1DJimO5GeaFgFsajdgGl0aLThNTkAAQQQCJIAAViQaoO8IIAAAgiESsCXZ8A87LLnJgCzUWYNXJPxhAz2DcgFJ54TqnuGwiKAQPcLxLu\/CJQAAQQQQACB7hSwEoyYlzlrOvpH3ysWNcGJrusIi+X10rL+HZVUrF+OH9skMT3WDAnv\/NG5Oa90vKajR0ZkKL5I4tG42RcTHb0w5sxjTvrlZW3RcpZNeoPJwYYV8a4rbpIrzrxE4rG4JGIJZ67dCMvLiXjcXEv3mY9Z1uM0D87xZl2P86PlsGHBOAABBBBwKRAxfcG9GhDJZRY4DAEEEEAAgfAK\/GL8hVLA4wRPGg6VAhwnqCpvqzHXwKc8vTz1knz64U+VV63MP3HxbZKKp6ykRSIIIIAAAiUBWsC4ExBAAAEEEPBRYO2idT5evf6l7Q6XUf9a7EUAAQTCIsAzYGGpacqJAAIIINDTAnRn6enqpXAIINBDAgRgPVSZFAUBBBBAILwCnjxRYJ4FY0IAAQQQsCtAAGbXk9QQQAABBBBAAAEEEEAAgZoCBGA1adiBAAIIIIBANwnY74RI+1c31T95RQCBbhEgAOuWmiKfCCCAAAIIIIAAAggg0PUCBGBdX4UUAAEEEEAAARH77V+qShsY9xYCCCBgW4AAzLYo6SGAAAIIIIAAAggggAACNQQIwGrAsBkBBBBAAIHuErDfBhahBay7bgFyiwACXSFAANYV1UQmEUAAAQQQQAABBBBAoBcECMB6oRYpAwIIIIBA6AWK9hvAeAQs9HcVAAgg4IUAAZgXqqSJAAIIIIBAxwW8iMA6XgguiAACCPS8AAFYz1cxBUQAAQQQQKA1AZ4Ba82NsxBAAIF6AgRg9XTYhwACCCCAQJcI0P7VJRVFNhFAIPQCBGChvwUAQAABBBBAAAEEEEAAgU4JEIB1SprrIIAAAggg4KkAbWCe8pI4AgggYEmAAMwSJMkggAACCCDQawI8A9ZrNUp5EEAgCAIEYEGoBfKAAAIIIIBAmwKeDEPfZp44HQEEEEDgWAECsGNN2IIAAggggEAXCnjQBTHShQxkGQEEEAi4AAFYwCuI7CGAAAIIIIAAAggggEDvCBCA9U5dUhIEEEAAgRALeND+JTwDFuIbiqIjgIBnAgRgntGSMAIIIIAAAggggAACCCAwX4AAbL4HawgggAACCHSpgBdtYF1KQbYRQACBAAsQgAW4csgaAggggAACCCCAAAII9JZAvLeKQ2kQQAABBBAIp0DR5Tj00UhUSp+YxGaXZ7ZJeZ\/OYzwDFs5biVIjgIDHAhHzDzZ9FjxGJnkEEEAAAQS8FsgVcjKRmagIqmIzgVZlUEXHF6\/rgfQRQACBRgIEYI2E2I8AAggggAACCCCAAAIIWBLgV2GWIEkGAQQQQAABBBBAAAEEEGgkQADWSIj9CCCAAAIIIIAAAggggIAlAQIwS5AkgwACCCCAAAIIIIAAAgg0EiAAayTEfgQQQAABBBBAAAEEEEDAkgABmCVIkkEAAQQQQAABBBBAAAEEGgkQgDUSYj8CCCCAAAIIIIAAAgggYEmAAMwSJMkggAACCCCAAAIIIIAAAo0ECMAaCbEfAQQQQAABBBBAAAEEELAkQABmCZJkEEAAAQQQQAABBBBAAIFGAgRgjYTYjwACCCCAAAIIIIAAAghYEiAAswRJMggggAACCCCAAAIIIIBAIwECsEZC7EcAAQQQQAABBBBAAAEELAkQgFmCJBkEEEAAAQQQQAABBBBAoJEAAVgjIfYjgAACCCCAAAIIIIAAApYECMAsQZIMAggggAACCCCAAAIIINBIgACskRD7EUAAAQQQQAABBBBAAAFLAgRgliBJBgEEEEAAAQQQQAABBBBoJEAA1kiI\/QgggAACCCCAAAIIIICAJQECMEuQJIMAAggggAACCCCAAAIINBIgAGskxH4EEEAAAQQQQAABBBBAwJIAAZglSJJBAAEEEEAAAQQQQAABBBoJEIA1EmI\/AggggAACCCCAAAIIIGBJgADMEiTJIIAAAggggAACCCCAAAKNBAjAGgmxHwEEEEAAAQQQQAABBBCwJEAAZgmSZBBAAAEEEEAAAQQQQACBRgIEYI2E2I8AAggggAACCCCAAAIIWBIgALMESTIIIIAAAggggAACCCCAQCMBArBGQuxHAAEEEEAAAQQQQAABBCwJEIBZgiQZBBBAAAEEEEAAAQQQQKCRAAFYIyH2I4AAAggggAACCCCAAAKWBAjALEGSDAIIIIAAAggggAACCCDQSIAArJEQ+xFAAAEEEEAAAQQQQAABSwIEYJYgSQYBBBBAAAEEEEAAAQQQaCTw\/wHLVOLlUa+GzwAAAABJRU5ErkJggg==\" alt=\"Note: neighborhoods with populations below 400 are not shown\" width=\"50%\" \/><\/p>\n<p class=\"caption\">Note: neighborhoods with populations below 400 are not shown<\/p>\n<\/div>\n<p>Milwaukee\u2019s most diverse neighborhoods tend to be working or lower-middle class and located in one of three clusters on the south, west, and northwest sides.<\/p>\n<p>The south side cluster lies roughly between the airport and Alverno College. It includes:<\/p>\n<ul>\n<li>Southpoint &#8211; 39% Hispanic or Latino, 27% (non-Hispanic) white, 19% Asian, and 11% Black<\/li>\n<li>Castle Manor &#8211; 45% white, 25% Latino, 14% Asian, and 12% Black<\/li>\n<li>Alverno &#8211; 43% white, 34% Latino, 12% Asian, and 6% Black<\/li>\n<li><a href=\"http:\/\/www.neighborhoodsinmilwaukee.org\/Mitchell%20West.pdf\">Mitchell West<\/a> &#8211; 44% white, 21% Asian, 21% Latino, and 9% Black<\/li>\n<\/ul>\n<p>The west side cluster is located between Washington Park and the Brewers\u2019 stadium. It includes:<\/p>\n<ul>\n<li>Martin Drive &#8211; 40% Black, 31% white, 11% Asian, 10% Latino<\/li>\n<li>Miller Valley &#8211; 44% Black, 23% white, 16% Latino, and 9% Asian<\/li>\n<li>Pigsville &#8211; 46% white, 20% Black, 19% Latino, and 5% Asian<\/li>\n<\/ul>\n<p>The northwest side cluster is mostly subdivision-style developments of single-family homes west of the Little Menomonee River, including the neighborhoods of:<\/p>\n<ul>\n<li>Little Menomonee Parkway &#8211; 39% Black, 31% white, 12% Asian, and 11% Latino<\/li>\n<li>Pheasant Run &#8211; 40% Black, 35% white, 12% Asian, and 8% Latino<\/li>\n<li>Florist Highlands &#8211; 46% Black, 32% white, 8% Latino, and 6% Asian<\/li>\n<\/ul>\n<p>The least diverse neighborhoods, by contrast, are all those on the deeply segregated near north side of the city. At least 9-in-10 residents of Arlington Heights, Borchert Field, Franklin Heights, Garden Homes, Triangle North, and Rufus King are Black. But neighborhoods elsewhere in Milwaukee also make the list of deeply segregated places. The Third Ward, Upper East Side, Fernwood, Downer Woods, and Northpoint, are all among the top-21 least-diverse neighborhoods in the city. More than 8-in-10 residents in these 5 neighborhoods are non-Hispanic white.<\/p>\n<p>Highly-segregated neighborhoods far outnumber the integrated parts of Milwaukee, as the city\u2019s position in national rankings attests. And these hyper-segregated neighborhoods\u2013both Black and white\u2013rightfully loom large in public perceptions of Milwaukee. Still, descriptions of Milwaukee as \u201ca tale of two cities\u201d don\u2019t fully capture this other piece of the city, where people of many races live their lives next door to each other. These aren\u2019t the name-brand neighborhoods along the lake, but they are success stories in their own right.<\/p>\n<div id=\"comparison-of-milwaukee-neighborhood-demographics-using-2010-and-2020-census-data\" class=\"section level3\">\n<h3>Comparison of Milwaukee neighborhood demographics, using 2010 and 2020 census data<\/h3>\n<div id=\"htmlwidget-f5636045860bcb45fff7\" class=\"reactable html-widget\" style=\"width: auto; height: auto;\"><\/div>\n<p><script type=\"application\/json\" data-for=\"htmlwidget-f5636045860bcb45fff7\">{\"x\":{\"tag\":{\"name\":\"Reactable\",\"attribs\":{\"data\":{\"neighborhood\":[\"Alcott Park\",\"Alverno\",\"Arlington Gardens\",\"Arlington Heights\",\"Avenues West\",\"Bay View\",\"Bluemound Heights\",\"Borchert Field\",\"Bradley Estates\",\"Brewer's Hill\",\"Burnham Park\",\"Calumet Farms\",\"Cambridge Heights\",\"Cannon Park\",\"Capitol Heights\",\"Castle Manor\",\"Clarke Square\",\"Clayton Crest\",\"Clock Tower Acres\",\"Cold Spring Park\",\"College Heights\",\"Columbus Park\",\"Concordia\",\"Cooper Park\",\"Copernicus Park\",\"Dineen Park\",\"Downer Woods\",\"Enderis Park\",\"Euclid Park\",\"Fair Park\",\"Fairfield\",\"Fairview\",\"Fernwood\",\"Florist Highlands\",\"Forest Home Hills\",\"Franklin Heights\",\"Garden Homes\",\"Golden Gate\",\"Golden Valley\",\"Goldman Park\",\"Gra-Ram\",\"Graceland\",\"Grantosa\",\"Granville Station\",\"Grasslyn Manor\",\"Green Moor\",\"Halyard Park\",\"Hampton Heights\",\"Harambee\",\"Harbor View\",\"Harder's Oaks\",\"Havenwoods\",\"Hawley Farms\",\"Heritage Heights\",\"Highwood Estates\",\"Hillside\",\"Historic Mitchell Street\",\"Historic Third Ward\",\"Holler Park\",\"Honey Creek Manor\",\"Honey Creek Parkway\",\"Jackson Park\",\"Johnson's Woods\",\"Juneau Town\",\"Kilbourn Town\",\"King Park\",\"Kops Park\",\"Layton Park\",\"Lenox Heights\",\"Lincoln Creek\",\"Lincoln Park\",\"Lincoln Village\",\"Lindsay Park\",\"Little Menomonee Parkway\",\"Long View\",\"Lower East Side\",\"Lyons Park\",\"Maitland Park\",\"Maple Tree\",\"Marquette\",\"Martin Drive\",\"Mc Govern Park\",\"Melody View\",\"Menomonee River Hills\",\"Menomonee River Hills East\",\"Menomonee River Parkway\",\"Menomonee River Valley\",\"Merrill Park\",\"Metcalfe Park\",\"Midtown\",\"Mill Valley\",\"Miller Valley\",\"Mitchell West\",\"Morgan Heights\",\"Morgandale\",\"Mount Mary\",\"Murray Hill\",\"Muskego Way\",\"Nash Park\",\"National Park\",\"New Coeln\",\"North Division\",\"North Meadows\",\"Northpoint\",\"Northridge\",\"Northridge Lakes\",\"Old North Milwaukee\",\"Park Knoll\",\"Park View\",\"Park West\",\"Parkway Hills\",\"Pheasant Run\",\"Pollber Heights\",\"Polonia\",\"Red Oak Heights\",\"River Bend\",\"Riverside Park\",\"Riverton Heights\",\"Riverwest\",\"Rolling Green\",\"Roosevelt Grove\",\"Root Creek\",\"Rufus King\",\"Saint Joseph\",\"Saveland Park\",\"Servite Woods\",\"Sherman Park\",\"Silver City\",\"Silver Spring\",\"Silver Swan\",\"Southgate\",\"Southpoint\",\"St. Amelian's\",\"Story Hill\",\"Sunset Heights\",\"The Valley \/ Pigsville\",\"Thurston Woods\",\"Timmerman Airport\",\"Timmerman West\",\"Tippecanoe\",\"Town & Country Manor\",\"Town Of Lake\",\"Triangle\",\"Triangle North\",\"Tripoli Park\",\"Upper East Side\",\"Uptown\",\"Valhalla\",\"Vogel Park\",\"Wahl Park\",\"Walker's Point\",\"Walnut Hill\",\"Washington Heights\",\"Washington Park\",\"Wedgewood\",\"West View\",\"Whispering Hills\",\"White Manor\",\"Wick Field\",\"Williamsburg\",\"Wilson Park\",\"Woodland Court\",\"Wyrick Park\",\"Yankee Hill\"],\"pop_2010\":[1397,1364,2403,4714,8074,16613,3113,3945,3374,2086,8003.71111111111,1848,2314,2018,5548,3954,8038,1576,1742,2510,912,4252,2967,3237,1354,3942,2390,3368,1920,1308,1105.03586145997,3561,3595,1372,5047,8472,2458.58558558559,709,2949,1737,2078,2926.83673469388,1587,1804.88594461929,4918,528,497,7148,11815,362,382,445,1608,602,2078,390,12016,1507,531,3108,1186,7921.34545454545,3090,2540,1950,1551,2846,8265.28888888889,1535,6464,4660.30769230769,13062,4480,923.692307692308,3061,10332.6363636364,1429,1249.41666666667,2131,340,1905,3199,939.466666666667,8229,2989,548.153846153846,113,2994.64615384615,2825,7029,483,861,3744,1953,9040,2060,5048,11932,2517,2783.91803278689,753.796208530806,7789,2106.19855595668,4404.72727272727,1909.84612848634,2434,12226.4144144144,1248,403,6522,971.307692307692,1673,474.753521126761,6122,635,1497,1276,955.359957020057,11520,2031,5164,1899,4999.53846153846,6901,1586,902,7181,5264.08196721311,11441,3263,1700.65454545455,2790,1643,1756.5,4265,484.353846153846,4320.28125,476.765580793792,4803.38048662194,6190.5625,2706.84615384615,5469.4375,545,1541,1250,3783,6296,4051.85393258427,2462,2797,8199,2818,6741,4834,1539,1812,572,1762,593,2555,2629,1060,878,3087.63636363636],\"pop_2020\":[1290,1323,2459,4292,9812,16478,3213,3023,3543,2710,7751,2305,2320,2418,5219,3896,7125,1633,1443,1955,1014,4064,2973,3308,1395,3930,4988,3329,1992,1301,2020.47826086957,3973,2920,1253,4965,7173,2151.29268292683,688.005333333333,3032,1766,2187,2761.52173913043,1710,1782.61659559896,4836,596,709,6854,10218,929,407,553,1707,572,2041,2284,10418,2156,513,2951,1306,8731.34693877551,3094,5500,4780,2039.2,2923,8260,1580,6845,4910.68571428571,11956,4690,974.738461538462,3074,14450.1232394366,1517,1176,2302,1723,1827.07894736842,3099,905,8004.66666666667,3019,579.314285714286,449,3197.92307692308,2189,6346,520,769.921052631579,4161,1953,9779,1821,6124,11311,2559,2751.46555819477,742,6071,3677.83823529412,3853.49647887324,1825.39465875371,2384,11475.7073170732,1040,403.8,5317,816.261538461539,1571,480,6102,688,1561,1264,1317.61217798595,11652,2253,4793,1934,4605,6414,1587,1189,6417,4581.53444180523,11748,3304,2481.65306122449,3538,1730,1729,4093,447.076923076923,3967,495.716577540107,4946.28342245989,5747.04232804233,3038,5394.95767195767,485,1458,1150,3642,5861,3721,2450,2694,8737,2862,6360,4677,1683,1687,709,1856,643,2176,3258,1020,1528,3506.38028169014],\"sdi_2010\":[0.212408702233398,0.55997651054363,0.627149729227586,0.129969003130114,0.607556769030528,0.345530965113396,0.340959257843177,0.0942401478750672,0.552606554614199,0.592030460004001,0.476796510885458,0.600339382689139,0.238896605223716,0.374436713111987,0.425257311544566,0.567588870799932,0.521681215421225,0.327104987511079,0.583095875722347,0.43550501064693,0.377231498064591,0.512135709089976,0.491846363039058,0.333709469426627,0.312487922784425,0.451953735147973,0.201760860008652,0.518523718048659,0.272631144693417,0.420613305443051,0.405696455576332,0.287843649524026,0.217486414925819,0.615671776681914,0.448041128414701,0.109924026749487,0.140791702162476,0.616628966686884,0.3457559607861,0.436905889438064,0.366983734498979,0.576613428463751,0.603286793469322,0.594647994117803,0.421862535825488,0.27663734115347,0.484763419225028,0.392287660621864,0.306943360556678,0.29010881376165,0.340204202223413,0.499230691365523,0.378252638487711,0.578880160972023,0.268956530644304,0.281919451585261,0.408800182084866,0.239547009925351,0.302320292790392,0.380935941343891,0.242566937761934,0.505877441830368,0.483769006004184,0.256224938208049,0.476658378392601,0.363231213993053,0.394913096048226,0.481590433695475,0.603490056015866,0.278100838282807,0.2537521046322,0.452880868027111,0.57182147641374,0.653953859855553,0.577963756557834,0.352227691506886,0.311415398909739,0.393751754734948,0.262518643851219,0.270466770779108,0.670918524890271,0.436044253197479,0.466251134654941,0.650946328341974,0.597559189585374,0.505984506272565,0.183628318584071,0.606542393155381,0.115682518990198,0.456847285167806,0.182907657019149,0.639291791589012,0.56322357289162,0.332384288987938,0.551898728910219,0.281971642375175,0.271556560094227,0.427655029943237,0.587607448997058,0.516078079218844,0.355038681717831,0.107944790379384,0.399923064111988,0.248659500595019,0.55827186035652,0.509772334049655,0.229680717700591,0.409313120720498,0.257064553164698,0.124979091211038,0.569479162267883,0.613260280789459,0.495958045085106,0.468318828486675,0.191514940758588,0.334674696987558,0.270639867232159,0.62055109503353,0.549251508377463,0.37951262815522,0.168748076831618,0.384696398914408,0.114615025763492,0.329464580852596,0.354930563566857,0.459751462140657,0.18461065819388,0.537181965469572,0.513749470527724,0.454221035022293,0.596931175406516,0.62851010948028,0.475338849420603,0.287696553425362,0.461677799797206,0.62426857881849,0.41710660056762,0.517913685950646,0.624286445592728,0.324787623615261,0.449687768444241,0.362212866506083,0.236380194279547,0.154043166437715,0.476942193755004,0.154243573178626,0.458421651277259,0.439951107756128,0.456715996185498,0.346201197583964,0.468219798789569,0.583420694541128,0.511295553099264,0.321652417042843,0.311560459690864,0.396142411532175,0.503276058442433,0.411140352743031,0.496046214848913,0.158825647807744,0.479463633874134,0.513499741657313,0.420446074446173,0.343022739714821],\"sdi_2020\":[0.34827430674581,0.674649486622687,0.577723319891295,0.148380309206095,0.655437046771839,0.391224279404858,0.507225859764135,0.15816814087802,0.547354411471041,0.614647634848442,0.417381848752086,0.572355914075681,0.405204383577939,0.434510102653762,0.364634673952406,0.703176161719469,0.476447176334998,0.564956984018347,0.579136161660434,0.480439887227197,0.496743517701829,0.483892594200399,0.59478645630323,0.47673598453173,0.549193419827936,0.370358597937824,0.325314623152514,0.573844435265846,0.482359372194958,0.599577839531721,0.289206331998176,0.530047736623011,0.317116952230779,0.66965544673614,0.42222122139424,0.158202169332866,0.167990888213625,0.649484557679939,0.564240752331449,0.549428134193565,0.576351316583772,0.587593756001669,0.592571833328201,0.54999577411319,0.412845403698391,0.503445942135243,0.51064202784219,0.377938756489131,0.42974693235858,0.529829070932779,0.540891540891541,0.495190921718164,0.567212725203647,0.634128568454313,0.533604250127292,0.23822772905347,0.401872940795401,0.268062795673005,0.508840460526316,0.587776622690384,0.393189112437145,0.648187056971648,0.63043705880472,0.451476003901536,0.596137477335028,0.359149813605303,0.590732988596425,0.403913904766595,0.587756230910446,0.289735134537447,0.277612901487754,0.442544788859864,0.52972228702025,0.718270169085901,0.575296499132686,0.399020467003022,0.569890406527256,0.537077724706904,0.334412832255534,0.426353030630878,0.715790122443354,0.398007770681769,0.505062826969149,0.645023781939538,0.620434838248855,0.612261005134723,0.401885141584473,0.644015664827622,0.230922353165194,0.535741059873534,0.347139469393805,0.713572479773282,0.712528538812785,0.53580819336372,0.59646995909665,0.371509435100868,0.448692720202536,0.423475563211981,0.661213500558057,0.441488497018354,0.564437217863236,0.196684754838204,0.456227605368599,0.337557238546332,0.549942763689006,0.461847693533896,0.248913965548736,0.563441178648108,0.495701473878668,0.211738955630626,0.615461127049165,0.698090793725446,0.533637787056367,0.444270383322882,0.508158153075387,0.512270240969793,0.390819026428937,0.588736889022528,0.530217567725122,0.589791073910531,0.205805576231615,0.581217957737248,0.185710862762966,0.341626580829953,0.491148526290613,0.386088244372517,0.233111364101823,0.496849892403328,0.494218548660371,0.484787290737967,0.566768061539004,0.726736640022708,0.620687557042896,0.397000781869203,0.489631822588168,0.705550604578927,0.395330564397835,0.452164791108257,0.646754954998069,0.420537039574744,0.498634896404949,0.472963259241209,0.414637471244781,0.182877608028222,0.558325954516214,0.314303765719027,0.501951000219534,0.393951793511399,0.419528837259689,0.341225884369579,0.564182169553006,0.586210467720429,0.531318509595176,0.388688763771824,0.522918914259755,0.511075202810411,0.550233877586798,0.593444441862627,0.562017024946343,0.268891565246788,0.64362030460718,0.604573880582655,0.434275535989193,0.403191105901326],\"black_2010\":[1.00214745884037,9.2375366568915,49.438202247191,93.211709800594,28.4988853108744,2.71474146752543,5.26823000321234,95.1330798479087,58.0912863070539,30.0575263662512,3.92318008035161,53.0844155844156,2.42005185825411,6.29335976214073,74.3330930064888,4.04653515427415,13.2993281910923,0.824873096446701,14.4661308840413,73.3067729083665,0.43859649122807,66.7685794920038,68.3855746545332,11.6156935434044,0.886262924667651,71.4358193810249,2.38493723849372,26.0985748218527,2.55208333333333,7.64525993883792,74.9389956986113,1.404099971918,0.917941585535466,34.8396501457726,6.87537150782643,94.2988668555241,92.6101948311305,49.0105569090054,10.6476771787046,2.59067357512953,2.93551491819057,59.8431126451208,39.8235664776307,54.9014308690015,73.4241561610411,0.189393939393939,65.9959758551308,76.7627308337997,82.6068556919171,8.56353591160221,2.35602094240838,66.9662921348315,2.86069651741294,56.312292358804,2.59865255052935,84.1025641025641,10.2446737683089,4.51227604512276,0.376647834274953,2.57400257400257,2.69814502529511,4.71177990883092,5.92233009708738,4.56692913385827,17.025641025641,79.0457769181173,11.3492621222769,3.13358678059246,46.514657980456,84.4987623762376,85.9465783045028,6.68350941662839,58.8169642857143,40.5729513657562,57.562887945116,9.00353982819956,1.53953813855843,2.75461882211699,85.4997653683717,4.11764705882353,48.4514435695538,73.1791184745233,70.3915933390103,48.7787094422166,57.7450652392104,21.0023154644962,3.53982300884956,58.8398783469987,93.9823008849557,71.830985915493,3.93374741200828,53.1939605110337,3.49893162393162,2.20174091141833,2.04646017699115,5.8252427184466,4.19968304278922,6.86389540730808,28.3671036948748,6.21426342164304,1.70951455822346,94.4023623058159,76.2554056532463,5.11709182971463,57.1335828474398,65.4067378800329,87.4589944087974,17.3878205128205,85.8560794044665,93.4835939895737,59.7370713550329,36.8798565451285,67.6288659793814,3.9202874877491,0.62992125984252,4.2752171008684,3.44827586206897,42.3262189464134,18.9496527777778,3.34810438207779,91.0534469403563,3.47551342812006,94.038680493584,81.0752064918128,1.0718789407314,69.7996222386466,90.1545745717867,7.18073925053486,66.8997465256533,71.8970272755133,7.27741190557646,5.84229390681004,24.1631162507608,6.99781762975614,69.073856975381,20.8429946320236,74.3737748555143,65.3743167040998,44.5438353273551,1.60353533532465,71.4939327630794,1.49434275201322,87.1559633027523,91.8883841661259,67.2,1.61247687020883,71.2357052096569,73.0951291543613,71.5272136474411,80.085806220951,10.0378094889621,47.9418026969482,23.2309746328438,81.7956143980141,0.454840805717999,4.3046357615894,30.2447552447552,3.74574347332577,16.0202360876897,91.5851272015656,5.36325599087105,6.22641509433962,73.9179954441913,7.78275036312959],\"black_2020\":[2.09302325581395,12.1693121693122,61.1224074827166,92.1947809878844,26.0497350183449,2.5609904114577,10.3641456582633,91.6308303010255,63.5619531470505,29.0405904059041,4.20590891497871,60.3036876355748,5.64655172413793,7.5682382133995,78.9040045985821,12.3203285420945,12.4210526315789,2.44947948560931,13.028413028413,70.230179028133,0.690335305719921,69.9803149606299,58.9640094180962,17.049576783555,3.51254480286738,78.498727735369,1.70408981555734,29.9489336136978,5.52208835341365,11.2221368178324,83.8907214022878,2.99521771960735,1.23287671232877,46.1292897047087,7.21047331319235,91.6492402063293,91.0887384782831,50.8251874016481,20.910290237467,4.4167610419026,5.07544581618656,60.4379168025551,56.4327485380117,63.0174237537094,75.1240694789082,3.69127516778524,66.9957686882934,78.1003793405311,73.9772949696614,12.1636167922497,3.19410319410319,69.2585895117541,4.97949619214997,53.4965034965035,5.68348848603626,86.9964973730298,9.31080821654828,2.96846011131725,2.92397660818713,4.13419179939004,5.35987748851455,5.53015641507494,9.56690368455074,6.89090909090909,24.8953974895398,79.3415718582451,22.2374273007184,3.41404358353511,56.4556962025316,83.9152666179693,84.6023831411383,7.31850117096019,65.2878464818763,39.3878173763903,61.6460637605725,8.00032165035875,3.1641397495056,4.93197278911565,81.0599478714162,3.54033662217063,40.1705339267453,76.540819619232,68.1767955801105,52.7567252436079,54.4219940377608,23.8977115801933,2.67260579064588,54.4271522382315,87.4371859296482,65.1591553734636,7.5,44.1672078476946,8.79596250901226,5.22273425499232,2.65875856427038,8.34706205381658,7.42978445460483,7.31146671381841,42.1649081672528,7.13133229796774,2.83018867924528,89.4580793938396,71.0768594083001,6.46458813241678,62.9038393388365,70.7214765100671,86.3686599901382,24.2307692307692,67.6242364206703,88.6025954485612,56.9758310244957,39.7835773392743,66.0416666666667,3.57259914782039,1.16279069767442,3.77962844330557,5.5379746835443,56.5477184972319,15.430827325781,4.97114957833999,88.9422073857709,6.67011375387797,90.0760043431053,80.4646086685376,2.1424070573409,76.7031118587048,87.3461118902914,8.09300579730883,68.6584950629894,70.0665859564165,11.65121997352,11.4188807235726,35.8959537572254,7.63447079236553,68.0185682873198,20.0103234686855,76.556591883035,72.7073646964908,51.0803228265159,2.82431143939387,68.8940092165899,3.23794247747832,75.6701030927835,90.2606310013717,62.0869565217391,3.15760571114772,68.0941818802252,76.7804353668369,75.1020408163265,80.6236080178174,10.3239098088589,50,19.9056603773585,77.2717553987599,3.98098633392751,7.40960284528749,60.5077574047955,5.11853448275862,14.9300155520995,85.1102941176471,5.15653775322284,9.80392156862745,73.7565445026178,7.29615630259527],\"white_2010\":[88.40372226199,62.2617302052786,34.6650020807324,1.16673737802291,54.8674758484023,79.7929332450491,80.4047542563444,1.01394169835234,32.809721398933,55.6567593480345,21.0966024094378,33.495670995671,86.9922212618842,78.2457879088206,13.0497476568133,61.0268082953971,14.9788504603135,80.9644670050761,22.6750861079219,14.8605577689243,77.1929824561403,17.3330197554092,17.0542635658915,80.6919987642879,81.9793205317578,18.6453576864536,89.163179916318,64.0142517814727,84.7395833333333,74.6177370030581,17.6653628886345,83.5720303285594,88.1780250347705,50.6559766763848,16.6039231226471,1.25118035882908,2.35651495219913,37.1115955036971,80.0271278399457,73.1721358664364,78.2964388835419,23.935432137503,48.3931947069943,31.4023410399044,19.2761285075234,83.9015151515152,28.169014084507,12.0872971460548,5.06982649174778,83.7016574585635,79.8429319371728,21.7977528089888,77.363184079602,31.5614617940199,84.9855630413859,9.23076923076923,10.219707057257,86.9276708692767,82.6741996233522,77.1155083655084,86.6779089376054,65.8965189568347,69.126213592233,85.9448818897638,69.948717948718,7.6079948420374,76.5987350667604,23.9252240964892,41.8892508143322,7.84344059405941,7.56676680311633,16.5977645077324,27.7008928571429,41.3640906062625,29.140803658935,79.7212128677301,81.8754373687894,76.3956513039418,5.95964335992492,85,27.6115485564304,15.6611441075336,18.8463903869808,29.7606027463847,21.5456674473068,66.6538029750211,90.2654867256637,13.8251854591784,1.45132743362832,4.35339308578745,90.2691511387164,25.0871080139373,61.965811965812,80.7987711213518,51.216814159292,84.368932038835,85.0039619651347,14.6413007039893,57.0917759237187,18.0562834547371,78.9847281689521,0.937219155218898,9.89138129331164,86.370703651724,33.5741945762369,24.3631881676253,6.29835565000309,74.7596153846154,3.2258064516129,1.85525912296841,25.7305773342837,49.5517035265989,20.6185567010309,23.9137536752695,89.7637795275591,80.6947227788911,85.1097178683385,44.1243074469873,63.0902777777778,77.6957163958641,3.19519752130132,77.0405476566614,1.86017170815768,10.4332705405014,78.4363177805801,22.7560154389423,3.64851691964907,20.0477096562227,12.953413163185,15.0168556543059,38.4621963735888,48.1362007168459,68.1679853925746,83.9382294335326,24.4548651817116,56.1541149191627,16.4948751889706,22.3189902725757,41.3691738937125,81.0865617738983,19.1224530393021,78.3496605324718,4.58715596330275,1.42764438676184,26.56,91.8847475548506,17.3284625158831,14.6962827392094,16.4500406173842,9.58169467286378,15.7092328332723,3.1582682753726,65.5985758789497,3.62019031857675,82.1312540610786,76.2141280353201,63.6363636363636,74.6878547105562,68.6340640809443,2.15264187866928,68.7713959680487,66.5094339622642,17.6537585421412,80.3625407293998],\"white_2020\":[79.6899224806202,43.3862433862434,18.0561203741358,1.44454799627213,50.764370158989,76.5991018327467,68.036103330221,1.58782666225604,19.8983911939035,53.8007380073801,15.7915107728035,23.8177874186551,76.2931034482759,74.0694789081886,8.54569840965702,44.7895277207392,10.5263157894737,60.6246172688304,21.6909216909217,12.9923273657289,67.0611439842209,10.9251968503937,19.2398250924992,69.8609431680774,63.5125448028674,9.66921119592875,81.635926222935,57.4947431661159,69.929718875502,57.1867794004612,6.70126069407342,63.3022904606091,81.9178082191781,32.1628092577813,12.0040281973817,1.46382266833961,1.57542422431372,27.061030534647,61.8403693931398,62.8539071347678,60.6310013717421,17.8018690747967,28.7719298245614,21.3529372738108,13.8544251447477,66.2751677852349,17.9125528913963,7.65976072366501,9.34625171266393,65.6620021528525,60.9336609336609,11.754068716094,58.6408904510838,25.5244755244755,64.968152866242,3.85288966725044,7.66941831445575,85.2504638218924,66.8615984405458,56.5909861064046,76.9525267993874,45.0553483110351,52.4563671622495,72.8181818181818,57.6150627615063,4.51920142975459,59.0147109134451,16.1138014527845,29.493670886076,4.63111760409058,5.413267859013,11.9856139176982,18.7206823027719,31.1889053736966,17.1437865972674,76.6219767607616,57.6137112722479,65.0510204081633,5.99478714161599,74.4631456761463,31.0705900992381,10.3904485317844,12.3756906077348,18.8098609144666,12.984431931103,56.1304004734662,76.3919821826281,13.2658215668823,0.867976244860667,4.08131106208635,80.1923076923077,23.1602693372526,43.7154530161019,64.0552995391705,33.162900092034,78.5282811641955,73.0568256041803,10.5914596410574,38.8042203985932,13.7446940391085,53.9083557951482,2.61900840059298,4.7922172951662,80.8373682945706,21.7690414495138,18.6241610738255,4.3492570884474,60.9615384615385,3.92383468163557,2.89637013353395,14.3323846680614,34.6912794398472,11.0416666666667,15.3720091773189,67.1511627906977,66.0474055092889,77.2151898734177,28.9965312313595,65.645382766907,59.7425654682645,3.00438138952639,58.8934850051706,2.80130293159609,7.96694730277518,67.0447385003151,15.475189234651,3.52189496649525,14.1397928066088,7.46510044262853,9.44309927360775,17.692288714731,27.3883550028265,49.4797687861272,76.7495662232504,20.9381871487906,45.8017894012388,11.7721199899168,10.9019514773622,28.0808255536756,74.2182774484414,12.8703094140882,69.8549350902813,4.94845360824742,2.60631001371742,22,82.3723228995058,16.2088380822385,10.6423004568664,9.18367346938776,5.8648849294729,23.4405402312006,2.06149545772187,64.8270440251572,4.29762668377165,66.3101604278075,67.2791938352104,28.490832157969,55.6034482758621,63.1415241057543,3.81433823529412,49.6930632289748,57.4509803921569,12.565445026178,76.3740545404153],\"hisp_2010\":[7.58768790264853,20.3262463343109,3.16271327507283,2.46075519728468,7.66658409710181,12.7370131824475,9.44426598136845,2.25602027883397,2.963841138115,8.14956855225311,68.9638417733996,3.24675324675325,3.37078651685393,7.73042616451933,4.25378514780101,22.5594334850784,66.1109728788256,12.6903553299492,58.6681974741676,6.17529880478088,15.8991228070175,2.98682972718721,10.4145601617796,2.93481618782824,11.9645494830133,3.85591070522577,4.56066945606695,5.10688836104513,9.0625,12.6911314984709,3.35396354929452,11.4574557708509,6.59248956884562,4.59183673469388,72.0427977016049,2.04202077431539,2.47340630187283,4.09026798307475,3.83180739233639,15.601611974669,13.5707410972089,4.37332217689921,2.96156269691241,4.98781074702124,3.33468889792599,14.0151515151515,3.01810865191147,4.21096810296586,8.47228099873043,4.69613259668508,14.9214659685864,6.51685393258427,14.8009950248756,4.48504983388704,8.75842155919153,5.38461538461539,75.482689747004,3.11877903118779,10.7344632768362,15.1463963963964,7.25126475548061,23.7523928441908,18.2200647249191,4.33070866141732,5.79487179487179,4.19084461637653,6.67603654251581,67.7693594093639,5.7328990228013,2.52165841584158,3.62843324970289,71.719491655183,4.84375,6.89540306462358,3.62626592616792,4.93581678529637,13.3659902029391,14.2533182151671,4.50492726419521,6.47058823529412,8.24146981627297,4.75148483901219,3.15604598353676,3.80362133916636,2.37537638006022,6.5429413415661,3.53982300884956,13.468138010398,2.72566371681416,6.40204865556978,1.24223602484472,10.1045296167247,20.4059829059829,11.5719406041987,43.0088495575221,3.93203883495146,3.03090332805071,73.8602078444519,4.80731029002781,66.5426130173891,14.2922710325619,2.2082423931185,8.79268173536253,2.65623710063568,3.93327713517694,2.83483976992605,3.24043644980739,3.36538461538462,1.73697270471464,2.02391904323827,5.28233151183971,5.26001195457262,4.5360824742268,68.7520418163999,3.46456692913386,10.8884435537742,4.31034482758621,4.01676998336061,12.4565972222222,11.7676021664205,2.20759101471727,14.0073723012112,2.32098347539773,3.92696710621649,17.2131147540984,3.23560811365689,2.96616070185211,64.4083473213146,3.18154007516825,3.67759730309531,49.9508210742388,36.3082437275986,2.98234936092514,4.84865736787171,3.23563892145369,11.0821713305593,3.7483092101932,3.49477210075776,5.98199810105983,12.9515982709856,3.80516638722328,15.0878991539023,2.75229357798165,3.30953926022064,2.8,2.53766851704996,4.98729351969504,3.6032888260333,2.72136474411048,4.04004290311047,70.4720087815587,3.19375443577005,5.63714582406171,3.86843194042201,11.1760883690708,14.3487858719647,1.92307692307692,17.0828603859251,7.75716694772344,4.34442270058708,20.9965766451122,19.622641509434,1.70842824601367,3.56259568955365],\"hisp_2020\":[12.3255813953488,34.3915343915344,4.35136234241562,2.7027027027027,10.9457806767224,13.8487680543755,12.3871770930594,3.67184915646709,6.43522438611346,9.6309963099631,74.4807121661721,5.9002169197397,7.19827586206897,8.76757650951199,3.52557961295267,24.7433264887064,70.3859649122807,23.943661971831,59.6673596673597,6.03580562659847,22.2879684418146,4.57677165354331,13.3535149680457,5.59250302297461,19.7132616487455,3.00254452926209,5.87409783480353,6.4583959146891,14.9598393574297,24.2121445042275,2.90749684134806,25.698464636295,9.58904109589041,8.14046288906624,74.6223564954683,2.7464101491705,3.11440653946011,4.63988651250765,7.38786279683377,22.1404303510759,20.8962048468221,5.8031286197861,4.67836257309941,5.87995601379273,4.42514474772539,23.489932885906,7.19322990126939,4.68339655675518,11.2057154041887,15.1776103336921,29.2383292383292,7.77576853526221,29.0568248388987,9.96503496503496,19.1572758451739,5.16637478108581,76.2718372048378,4.68460111317254,20.0779727095517,29.4476448661471,9.87748851454824,37.2430090034499,28.5714285714286,6.81818181818182,8.15899581589958,7.88435552068349,7.59493670886076,75.363196125908,6.26582278481013,3.82761139517896,5.31668547889733,73.1766477082636,3.68869936034115,11.4797394698907,6.73389720234222,6.41005303575802,30.7844429795649,17.4319727891156,5.16941789748045,10.0986651189785,10.1110486972303,5.8728622136173,4.97237569060773,4.62646789372866,3.51109638953296,11.0327480765437,9.57683741648107,18.6274745628172,5.48195523069895,9.26567916797983,3.46153846153846,15.8799603513689,20.8603701033405,21.9662058371736,53.5637590755701,4.77759472817133,7.02155453951666,74.6883564671559,5.86166471277843,73.0157195431154,37.8706199460916,3.70614396310328,18.7802137604811,5.06088763360146,6.06364543743233,4.06879194630872,4.67073606175505,5.86538461538461,5.99856914864344,3.8931728418281,6.13805278599745,7.82940802036919,6.45833333333333,72.6155358898722,18.3139534883721,21.7809096732864,8.30696202531646,3.98798195017458,10.9509097150704,20.4172214824678,3.67202169831004,25.3360910031024,3.21389793702497,5.5503585905831,23.755513547574,2.85954583683768,4.05173757207418,68.8196861717957,3.88151174668029,4.8728813559322,61.9822205409495,38.5528547201809,5.14450867052023,7.17177559282822,5.05741509894943,18.6338609772884,5.41971262919082,5.37762003905112,7.00207037099102,15.9621328108961,5.59578670177749,18.8073666670917,5.56701030927835,3.56652949245542,6.43478260869565,6.15046677649643,7.13188875618495,4.08492340768611,4.20408163265306,4.08314773570898,60.7645644958224,4.19287211740042,7.42138364779874,4.89630104768014,16.1021984551396,16.597510373444,3.10296191819464,30.2801724137931,11.8195956454121,6.43382352941176,31.0006138735421,22.5490196078431,3.86125654450262,6.23772358637976],\"asian_2010\":[0.858983536148891,4.49046920821114,7.7819392426134,0.657615613067459,6.29180084220956,1.0714500692229,1.44555091551558,0.101394169835234,2.63781861292235,2.68456375838926,3.66635477431303,6.49350649350649,4.92653414001729,5.7978196233895,5.11896178803172,8.19423368740516,2.77432197063946,3.23604060913706,0.631458094144661,2.82868525896414,4.05701754385965,10.3715898400753,0.370744860128076,1.76088971269694,3.32348596750369,2.99340436326738,2.30125523012552,1.15795724465558,2.03125,1.29969418960245,0.398742715388303,1.01095197978096,1.75243393602225,3.42565597667638,1.9021200713295,0.448536355051936,0.203368962598432,4.53904346711117,2.67887419464225,4.37535981577432,2.21366698748797,6.45748352682774,3.9067422810334,4.26694968262772,0.854005693371289,1.70454545454545,1.60965794768612,4.01510912143257,0.186203977994075,2.20994475138122,0.523560209424084,4.04494382022472,1.5547263681592,5.48172757475083,2.06929740134745,0.256410256410256,1.7060585885486,4.31320504313205,5.64971751412429,2.11550836550837,1.09612141652614,3.09887668302446,1.29449838187702,2.95275590551181,3.64102564102564,6.31850419084462,2.03794799718904,2.48697363539084,0.716612377850163,2.78465346534653,0.236035917073815,1.61537283723779,3.79464285714286,6.67055296469021,6.30512904279647,3.58235306193673,1.25962211336599,3.28153138131128,0.844673862036602,4.41176470588235,9.501312335958,3.40731478587058,4.0448481407891,14.2423137683801,14.4864503178321,0.729722144260455,2.65486725663717,9.38187123687401,0.601769911504425,14.3548157632665,2.69151138716356,6.27177700348432,9.13461538461538,1.48489503328213,1.32743362831858,2.57281553398058,5.38827258320127,1.7348307073416,4.72785061581248,6.74070628139372,2.3677939780322,0.539221979714983,1.94646367863809,4.37477641101847,3.07263886180194,3.53327855382087,0.547993857635072,0.961538461538462,6.69975186104218,0.383318000613309,6.93751484913281,3.10818888224746,5.36082474226804,0.882064684743548,3.93700787401575,1.46960587842351,3.60501567398119,6.56378110982187,1.22395833333333,3.84047267355982,0.716498838109992,1.4218009478673,0.120011077945657,1.92725691928706,1.00882723833544,0.537899318387123,1.490043169475,4.45175937142839,14.2994493488331,6.71161507814894,1.91263256927814,6.52329749103943,2.4954351795496,1.24300218237024,0.679953106682298,3.72582028396277,1.65715484379634,6.73791938952203,3.10852163704663,1.46997950509344,2.91852567563727,2.54139479608278,3.30275229357798,1.49253731343284,0.8,1.69177901136664,2.47776365946633,3.76523439124828,5.11779041429732,3.53950661422953,1.46359312111233,42.9382540809084,1.67630915294467,7.57136946628051,3.50877192982456,1.82119205298013,1.3986013986014,1.53234960272418,3.035413153457,0.743639921722113,1.71167744389502,1.79245283018868,4.32801822323462,6.02893259529698],\"asian_2020\":[2.01550387596899,5.97127739984883,11.1834078893859,0.396085740913327,7.57236037505096,1.6506857628353,1.55617802676626,0.165398610651671,6.18120237087214,2.28782287822878,3.04476841697845,4.33839479392625,4.91379310344828,4.17700578990902,5.99731749377275,13.6806981519507,3.32631578947368,9.49173300673607,2.84130284130284,6.90537084398977,5.32544378698225,10.7037401574803,1.27817019845274,1.78355501813785,7.16845878136201,4.24936386768448,2.58620689655172,1.35175728446981,3.76506024096386,0.999231360491929,1.76915249756376,3.24691668764158,1.47260273972603,5.98563447725459,3.14199395770393,0.627352572145546,0.223834304307758,12.5805226316075,3.62796833773087,5.83238958097395,9.60219478737997,9.53295621956568,4.32748538011696,5.20822856154999,1.77832919768404,1.67785234899329,0.846262341325811,5.32535745550044,0.401252691329027,2.36813778256189,1.47420147420147,6.14828209764919,2.28471001757469,6.46853146853147,4.55658990690838,0.612959719789842,3.84910731426377,3.84972170686456,4.87329434697856,4.47305997966791,2.60336906584992,7.66485288755504,1.93923723335488,8.74545454545455,4.41422594142259,5.21446318817837,2.73691412931919,2.3728813559322,1.45569620253165,4.163623082542,0.939350919859897,4.17363666778187,7.9317697228145,11.9958542462409,9.82433311646064,4.29043809022536,3.955174686882,7.73809523809524,3.51867940920938,8.24143934997098,11.2316179118236,2.74282026460148,10.7182320441989,19.4178395935704,25.3726399470023,1.87660288025252,5.56792873051225,6.80970822408775,2.46687985381453,16.6561613614876,4.61538461538462,8.93461393854462,20.6681086277337,2.35535074244752,7.36271602413335,2.47116968698517,7.23383409536251,3.96958712757493,6.52598671355998,3.27098406636239,3.50404312668464,0.461209026519519,2.10171816084417,3.23919286764444,4.75178734569005,2.85234899328859,0.716162121591193,4.32692307692308,20.7198282978372,1.03441790483355,18.7527878822147,12.2215149586251,11.25,5.62110783349721,7.41279069767442,4.48430493273543,4.35126582278481,7.61287717260163,1.3903192584964,7.19041278295606,0.876277905278531,4.86039296794209,0.217155266015201,2.19831618334892,1.19722747321991,1.42977291841884,1.04410160511142,4.62727068175149,16.2751106571331,10.6234866828087,6.47774278172055,18.9937817976258,3.0635838150289,2.13996529786003,1.31932567798681,4.525120440468,1.78976556591883,6.14353984401126,8.09790746576861,1.4936906431128,6.78077682685978,2.70914018936619,5.15463917525773,0.548696844993141,4.95652173913043,3.18506315211422,3.25882955127111,5.29427573233002,7.22448979591837,4.56570155902004,2.14032276525123,40.146750524109,1.54088050314465,9.3863587769938,9.5068330362448,2.2525192649674,2.96191819464034,2.42456896551724,4.6656298600311,1.01102941176471,9.97544505831799,3.23529411764706,5.89005235602094,5.73823171441999]},\"columns\":[{\"accessor\":\"neighborhood\",\"name\":\"Neighborhood\",\"type\":\"character\",\"filterable\":true},{\"accessor\":\"pop_2010\",\"name\":\"2010\",\"type\":\"numeric\",\"sortable\":true,\"format\":{\"cell\":{\"digits\":0,\"separators\":true},\"aggregated\":{\"digits\":0,\"separators\":true}},\"maxWidth\":65},{\"accessor\":\"pop_2020\",\"name\":\"2020\",\"type\":\"numeric\",\"sortable\":true,\"format\":{\"cell\":{\"digits\":0,\"separators\":true},\"aggregated\":{\"digits\":0,\"separators\":true}},\"maxWidth\":65},{\"accessor\":\"sdi_2010\",\"name\":\"2010\",\"type\":\"numeric\",\"sortable\":true,\"format\":{\"cell\":{\"digits\":2},\"aggregated\":{\"digits\":2}},\"maxWidth\":65},{\"accessor\":\"sdi_2020\",\"name\":\"2020\",\"type\":\"numeric\",\"sortable\":true,\"format\":{\"cell\":{\"digits\":2},\"aggregated\":{\"digits\":2}},\"maxWidth\":65},{\"accessor\":\"black_2010\",\"name\":\"2010\",\"type\":\"numeric\",\"sortable\":true,\"format\":{\"cell\":{\"suffix\":\"%\",\"digits\":0},\"aggregated\":{\"suffix\":\"%\",\"digits\":0}},\"maxWidth\":65},{\"accessor\":\"black_2020\",\"name\":\"2020\",\"type\":\"numeric\",\"sortable\":true,\"format\":{\"cell\":{\"suffix\":\"%\",\"digits\":0},\"aggregated\":{\"suffix\":\"%\",\"digits\":0}},\"maxWidth\":65},{\"accessor\":\"white_2010\",\"name\":\"2010\",\"type\":\"numeric\",\"sortable\":true,\"format\":{\"cell\":{\"suffix\":\"%\",\"digits\":0},\"aggregated\":{\"suffix\":\"%\",\"digits\":0}},\"maxWidth\":65},{\"accessor\":\"white_2020\",\"name\":\"2020\",\"type\":\"numeric\",\"sortable\":true,\"format\":{\"cell\":{\"suffix\":\"%\",\"digits\":0},\"aggregated\":{\"suffix\":\"%\",\"digits\":0}},\"maxWidth\":65},{\"accessor\":\"hisp_2010\",\"name\":\"2010\",\"type\":\"numeric\",\"sortable\":true,\"format\":{\"cell\":{\"suffix\":\"%\",\"digits\":0},\"aggregated\":{\"suffix\":\"%\",\"digits\":0}},\"maxWidth\":65},{\"accessor\":\"hisp_2020\",\"name\":\"2020\",\"type\":\"numeric\",\"sortable\":true,\"format\":{\"cell\":{\"suffix\":\"%\",\"digits\":0},\"aggregated\":{\"suffix\":\"%\",\"digits\":0}},\"maxWidth\":65},{\"accessor\":\"asian_2010\",\"name\":\"2010\",\"type\":\"numeric\",\"sortable\":true,\"format\":{\"cell\":{\"suffix\":\"%\",\"digits\":0},\"aggregated\":{\"suffix\":\"%\",\"digits\":0}},\"maxWidth\":65},{\"accessor\":\"asian_2020\",\"name\":\"2020\",\"type\":\"numeric\",\"sortable\":true,\"format\":{\"cell\":{\"suffix\":\"%\",\"digits\":0},\"aggregated\":{\"suffix\":\"%\",\"digits\":0}},\"maxWidth\":65}],\"columnGroups\":[{\"name\":\"Diversity index\",\"columns\":[\"sdi_2010\",\"sdi_2020\"]},{\"name\":\"Total pop.\",\"columns\":[\"pop_2010\",\"pop_2020\"]},{\"name\":\"Black alone\",\"columns\":[\"black_2010\",\"black_2020\"]},{\"name\":\"White alone\",\"columns\":[\"white_2010\",\"white_2020\"]},{\"name\":\"Hisp. or Latino\",\"columns\":[\"hisp_2010\",\"hisp_2020\"]},{\"name\":\"Asian alone\",\"columns\":[\"asian_2010\",\"asian_2020\"]}],\"defaultPageSize\":10,\"showPageSizeOptions\":true,\"pageSizeOptions\":[10,25,50,100],\"paginationType\":\"numbers\",\"showPageInfo\":true,\"minRows\":1,\"striped\":true,\"dataKey\":\"3cbac9605c4b0000931e215d4247b23a\",\"key\":\"3cbac9605c4b0000931e215d4247b23a\"},\"children\":[]},\"class\":\"reactR_markup\"},\"evals\":[],\"jsHooks\":[]}<\/script><\/p>\n<\/div>\n<\/div>\n<p><script><\/p>\n<p>\/\/ add bootstrap table styles to pandoc tables\nfunction bootstrapStylePandocTables() {\n  $('tr.odd').parent('tbody').parent('table').addClass('table table-condensed');\n}\n$(document).ready(function () {\n  bootstrapStylePandocTables();\n});<\/p>\n<p><\/script><\/p>\n<p><!-- tabsets --><\/p>\n<p><script>\n$(document).ready(function () {\n  window.buildTabsets(\"TOC\");\n});<\/p>\n<p>$(document).ready(function () {\n  $('.tabset-dropdown > .nav-tabs > li').click(function () {\n    $(this).parent().toggleClass('nav-tabs-open');\n  });\n});\n<\/script><\/p>\n<p><!-- code folding --><\/p>\n<p><!-- dynamically load mathjax for compatibility with self-contained --><br \/>\n<script>\n  (function () {\n    var script = document.createElement(\"script\");\n    script.type = \"text\/javascript\";\n    script.src  = \"https:\/\/mathjax.rstudio.com\/latest\/MathJax.js?config=TeX-AMS-MML_HTMLorMML\";\n    document.getElementsByTagName(\"head\")[0].appendChild(script);\n  })();\n<\/script><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The following statistics were calculated by aggregating 2020 census blocks into Milwaukee neighborhoods. Because of data quality concerns stemming from the Census Bureau\u2019s new differential privacy techniques, I do not present data for neighborhoods with fewer than 400 residents. The 2020 Census reconfirmed Milwaukee\u2019s status as one of the most segregated cities and metropolitan areas [&hellip;]<\/p>\n","protected":false},"author":207,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"","ocean_second_sidebar":"","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"","ocean_custom_header_template":"","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"","ocean_menu_typo_font_family":"","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"on","ocean_gallery_id":[],"footnotes":""},"categories":[349,350,122],"tags":[],"class_list":["post-29960","post","type-post","status-publish","format-standard","hentry","category-lubar-center","category-milwaukee-area-project","category-public","entry"],"_links":{"self":[{"href":"https:\/\/law.marquette.edu\/facultyblog\/wp-json\/wp\/v2\/posts\/29960","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/law.marquette.edu\/facultyblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/law.marquette.edu\/facultyblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/law.marquette.edu\/facultyblog\/wp-json\/wp\/v2\/users\/207"}],"replies":[{"embeddable":true,"href":"https:\/\/law.marquette.edu\/facultyblog\/wp-json\/wp\/v2\/comments?post=29960"}],"version-history":[{"count":10,"href":"https:\/\/law.marquette.edu\/facultyblog\/wp-json\/wp\/v2\/posts\/29960\/revisions"}],"predecessor-version":[{"id":29996,"href":"https:\/\/law.marquette.edu\/facultyblog\/wp-json\/wp\/v2\/posts\/29960\/revisions\/29996"}],"wp:attachment":[{"href":"https:\/\/law.marquette.edu\/facultyblog\/wp-json\/wp\/v2\/media?parent=29960"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/law.marquette.edu\/facultyblog\/wp-json\/wp\/v2\/categories?post=29960"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/law.marquette.edu\/facultyblog\/wp-json\/wp\/v2\/tags?post=29960"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}