
IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciB0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzbHQiKTtpZih0JiYhdC5nZXRBdHRyaWJ1dGUoImRhdGEtb24iKSl7dC5zZXRBdHRyaWJ1dGUoImRhdGEtb24iLCIxIiksdC5pbm5lckhUTUw9JzxkaXYgY2xhc3M9InNsdC13cmFwIj48ZGl2IGNsYXNzPSJzbHQtdG9wIj48ZGl2IGNsYXNzPSJleWVicm93Ij5Ub25pZ2h0JiM4MjE3O3Mgc2xlZXAgZm9yZWNhc3Q8L2Rpdj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InNsdC1sb2MiIGlkPSJzbHRMb2MiIGFyaWEtbGFiZWw9IkNoYW5nZSBjaXR5Ij48c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGQ9Ik0xMiAyMXMtNi41LTYuMS02LjUtMTFhNi41IDYuNSAwIDAgMSAxMyAwYzAgNC45LTYuNSAxMS02LjUgMTF6Ii8+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMCIgcj0iMi40Ii8+PC9zdmc+PGIgaWQ9InNsdFBsYWNlIj5GaW5kaW5nIHlvdXIgc2t5JiM4MjMwOzwvYj48c3BhbiBjbGFzcz0ic2x0LWNoZyI+Q2hhbmdlPC9zcGFuPjwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9InNsdC1oZXJvIj48ZGl2IGNsYXNzPSJzbHQtaGwiIGFyaWEtbGl2ZT0icG9saXRlIj48aDEgaWQ9InNsdEhlYWQiPlJlYWRpbmcgdG9uaWdodCYjODIxNztzIDxlbT5za3kmIzgyMzA7PC9lbT48L2gxPjxwIGNsYXNzPSJsZWFkIiBpZD0ic2x0U3ViIj5PbmUgbW9tZW50IHdoaWxlIHdlIGNoZWNrIHRoZSBjbG91ZHMsIHRoZSBtb29uIGFuZCB0aGUgb3Zlcm5pZ2h0IGxvdy48L3A+PGRpdiBjbGFzcz0ic2x0LXJhdGUiIGlkPSJzbHRSYXRlIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJzbHQtbW9vbiIgaWQ9InNsdE1vb24iIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJzbHQtY2FyZHMiIGlkPSJzbHRDYXJkcyI+PC9kaXY+PGRpdiBjbGFzcz0ic2x0LWJsb2NrIj48ZGl2IGNsYXNzPSJzbHQtYmgiPjxoMj5Ib3VyIGJ5IGhvdXI8L2gyPjxkaXYgY2xhc3M9InNsdC11bml0IiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iVGVtcGVyYXR1cmUgdW5pdHMiPjxidXR0b24gdHlwZT0iYnV0dG9uIiBkYXRhLXU9IkYiPiYjMTc2O0Y8L2J1dHRvbj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgZGF0YS11PSJDIj4mIzE3NjtDPC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0ic2x0LWhvdXJzIiBpZD0ic2x0SG91cnMiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InNsdC1ibG9jayI+PGRpdiBjbGFzcz0ic2x0LWJoIj48aDI+VGlwcyBmb3IgdG9uaWdodDwvaDI+PC9kaXY+PGRpdiBjbGFzcz0ic2x0LXRpcHMiIGlkPSJzbHRUaXBzIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJzbHQtYmxvY2sgc2x4LWJsb2NrIj48ZGl2IGNsYXNzPSJzbHQtYmgiPjxoMj5Ub25pZ2h0JiM4MjE3O3Mgc2t5LCBsaXZlPC9oMj48c3BhbiBjbGFzcz0ic2x4LXVwZCIgaWQ9InNseFVwZCI+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9InNseC1zdGFnZSIgaWQ9InNseFN0YWdlIj48ZGl2IGNsYXNzPSJzbHgtbWFwIiBpZD0ic2x0TWFwIj48L2Rpdj48ZGl2IGNsYXNzPSJzbHgtbG9hZCIgaWQ9InNseExvYWQiPjxzcGFuPkxvYWRpbmcgdGhlIHdlYXRoZXIgbWFwJiM4MjMwOzwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJzbHgtbGF5ZXJzIHNseC1nbGFzcyIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9Ik1hcCBsYXllciI+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGRhdGEtbD0id2luZCI+V2luZDwvYnV0dG9uPjxidXR0b24gdHlwZT0iYnV0dG9uIiBkYXRhLWw9Imd1c3QiPkd1c3RzPC9idXR0b24+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGRhdGEtbD0idGVtcCI+VGVtcGVyYXR1cmU8L2J1dHRvbj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgZGF0YS1sPSJyYWluIj5SYWluPC9idXR0b24+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGRhdGEtbD0iY2xvdWQiPkNsb3VkczwvYnV0dG9uPjxidXR0b24gdHlwZT0iYnV0dG9uIiBkYXRhLWw9InJhZGFyIj5SYWRhcjwvYnV0dG9uPjxidXR0b24gdHlwZT0iYnV0dG9uIiBkYXRhLWw9InNhdCI+U2F0ZWxsaXRlPC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz0ic2x4LWxlZ2VuZCBzbHgtZ2xhc3MiIGlkPSJzbHhMZWdlbmQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2Rpdj48ZGl2IGNsYXNzPSJzbHgtdGltZSBzbHgtZ2xhc3MiPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ic2x4LXBsYXkiIGlkPSJzbHhQbGF5IiBhcmlhLWxhYmVsPSJQbGF5IHRoZSBmb3JlY2FzdCI+PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGNsYXNzPSJwbCIgZD0iTTggNS4ydjEzLjZMMTkgMTJ6Ii8+PHBhdGggY2xhc3M9InBhIiBkPSJNNi41IDVoNHYxNGgtNHpNMTMuNSA1aDR2MTRoLTR6Ii8+PC9zdmc+PC9idXR0b24+PGRpdiBjbGFzcz0ic2x4LXRyYWNrIj48ZGl2IGNsYXNzPSJzbHgtZGF5cyIgaWQ9InNseERheXMiPjwvZGl2PjxkaXYgY2xhc3M9InNseC1uaWdodHMiIGlkPSJzbHhOaWdodHMiPjwvZGl2PjxpbnB1dCB0eXBlPSJyYW5nZSIgaWQ9InNseFNsaWRlciIgbWluPSIwIiBtYXg9IjAiIHN0ZXA9IjEiIHZhbHVlPSIwIiBhcmlhLWxhYmVsPSJGb3JlY2FzdCB0aW1lIj48L2Rpdj48c3BhbiBjbGFzcz0ic2x4LXdoZW4iIGlkPSJzbHhXaGVuIj48L3NwYW4+PC9kaXY+PC9kaXY+PHAgY2xhc3M9InNsdC1jYXAiIGlkPSJzbHRDYXAiPkRyYWcgdGhlIHRpbWVsaW5lIHRvIHdhdGNoIHRoZSB3aW5kLCByYWluIGFuZCBjbG91ZHMgbW92ZSB0aHJvdWdoIHRoZSBuaWdodCwgaG91ciBieSBob3VyLiBUaGUgc29mdCBiYW5kcyBhcmUgc2xlZXAgaG91cnMsIDEwIFBNIHRvIDcgQU0uIFRhcCBhbnl3aGVyZSBvbiB0aGUgbWFwIGZvciB0aGF0IHNwb3QuPC9wPjwvZGl2PjxkaXYgY2xhc3M9InNsdC1ibG9jayI+PGRpdiBjbGFzcz0ic2x0LWJoIj48aDI+VGhlIHdlZWsgYWhlYWQsIG5pZ2h0IGJ5IG5pZ2h0PC9oMj48L2Rpdj48ZGl2IGNsYXNzPSJzbHQtd2VlayIgaWQ9InNsdFdlZWsiPjwvZGl2PjwvZGl2PjxwIGNsYXNzPSJzbHQtY3JlZGl0Ij5Gb3JlY2FzdCBmcm9tIE1FVCBOb3J3YXkgKENDIEJZIDQuMCkuIFdlYXRoZXIgbWFwIGZyb20gdGhlIE5PQUEgR0ZTIG1vZGVsLCByYWRhciBmcm9tIE5PQUEgTldTIE1STVMsIHNhdGVsbGl0ZSBmcm9tIE5PQUEgR09FUyB2aWEgTkFTQSBHSUJTLCBtYXAgbGluZXMgZnJvbSBOYXR1cmFsIEVhcnRoLiBQbGFjZXMgZnJvbSBHZW9OYW1lcyAoQ0MgQlkgNC4wKS4gU2xlZXAgdGlwcyBhcmUgZ2VuZXJhbCB3ZWxsbmVzcyBpZGVhcywgbm90IG1lZGljYWwgYWR2aWNlLjwvcD48L2Rpdj48ZGl2IGNsYXNzPSJzbHQtcGljayIgaWQ9InNsdFBpY2siIGhpZGRlbj48ZGl2IGNsYXNzPSJzbHQtcGlja2JveCIgcm9sZT0iZGlhbG9nIiBhcmlhLW1vZGFsPSJ0cnVlIiBhcmlhLWxhYmVsbGVkYnk9InNsdFBpY2tUIj48ZGl2IGNsYXNzPSJzbHQtcGlja2hkIj48YiBpZD0ic2x0UGlja1QiPkNob29zZSB5b3VyIGNpdHk8L2I+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJzbHQteCIgaWQ9InNsdFBpY2tYIiBhcmlhLWxhYmVsPSJDbG9zZSI+JiMyMTU7PC9idXR0b24+PC9kaXY+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJzbHQtZ2VvIiBpZD0ic2x0R2VvIj48c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgYXJpYS1oaWRkZW49InRydWUiPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjMuMiIvPjxwYXRoIGQ9Ik0xMiAyLjV2M00xMiAxOC41djNNMi41IDEyaDNNMTguNSAxMmgzIi8+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iNy41Ii8+PC9zdmc+PHNwYW4+VXNlIG15IGxvY2F0aW9uPC9zcGFuPjwvYnV0dG9uPjxsYWJlbCBjbGFzcz0ic2x0LXFsIiBmb3I9InNsdFEiPk9yIHR5cGUgeW91ciBjaXR5PC9sYWJlbD48aW5wdXQgaWQ9InNsdFEiIGNsYXNzPSJzbHQtcSIgdHlwZT0ic2VhcmNoIiBwbGFjZWhvbGRlcj0iRm9yIGV4YW1wbGU6IEFyY2FkaWEiIGF1dG9jb21wbGV0ZT0ib2ZmIiBzcGVsbGNoZWNrPSJmYWxzZSI+PGRpdiBjbGFzcz0ic2x0LXJlcyIgaWQ9InNsdFJlcyIgcm9sZT0ibGlzdGJveCIgYXJpYS1sYWJlbD0iQ2l0aWVzIj48L2Rpdj48L2Rpdj48L2Rpdj4nO3ZhciBlPXQuZ2V0QXR0cmlidXRlKCJkYXRhLXBsYWNlcyIpfHwiIixhPXtuOiJBcmNhZGlhIixhOiJDQSIsYzoiVVMiLGxhdDozNC4xNCxsb246LTExOC4wNCx0ejoiQW1lcmljYS9Mb3NfQW5nZWxlcyJ9LG49Imh0dHBzOiIrU3RyaW5nLmZyb21DaGFyQ29kZSg0Nyw0Nykscj1uKyJhcGkubWV0Lm5vL3dlYXRoZXJhcGkvIixpPW4rImdpYnMuZWFydGhkYXRhLm5hc2EuZ292L3dtdHMvZXBzZzM4NTcvYmVzdC8iLG89bisiY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL21hcGxpYnJlLWdsLzQuNy4xLyIscz13aW5kb3cuU0xUX01PQ0t8fG51bGwsbD17VVM6MSxQUjoxLExSOjEsTU06MSxCUzoxLEJaOjEsS1k6MSxQVzoxLEZNOjEsTUg6MX0sYz17YWxhYmFtYToiQUwiLGFsYXNrYToiQUsiLGFyaXpvbmE6IkFaIixhcmthbnNhczoiQVIiLGNhbGlmb3JuaWE6IkNBIixjb2xvcmFkbzoiQ08iLGNvbm5lY3RpY3V0OiJDVCIsZGVsYXdhcmU6IkRFIixmbG9yaWRhOiJGTCIsZ2VvcmdpYToiR0EiLGhhd2FpaToiSEkiLGlkYWhvOiJJRCIsaWxsaW5vaXM6IklMIixpbmRpYW5hOiJJTiIsaW93YToiSUEiLGthbnNhczoiS1MiLGtlbnR1Y2t5OiJLWSIsbG91aXNpYW5hOiJMQSIsbWFpbmU6Ik1FIixtYXJ5bGFuZDoiTUQiLG1hc3NhY2h1c2V0dHM6Ik1BIixtaWNoaWdhbjoiTUkiLG1pbm5lc290YToiTU4iLG1pc3Npc3NpcHBpOiJNUyIsbWlzc291cmk6Ik1PIixtb250YW5hOiJNVCIsbmVicmFza2E6Ik5FIixuZXZhZGE6Ik5WIiwibmV3IGhhbXBzaGlyZSI6Ik5IIiwibmV3IGplcnNleSI6Ik5KIiwibmV3IG1leGljbyI6Ik5NIiwibmV3IHlvcmsiOiJOWSIsIm5vcnRoIGNhcm9saW5hIjoiTkMiLCJub3J0aCBkYWtvdGEiOiJORCIsb2hpbzoiT0giLG9rbGFob21hOiJPSyIsb3JlZ29uOiJPUiIscGVubnN5bHZhbmlhOiJQQSIsInJob2RlIGlzbGFuZCI6IlJJIiwic291dGggY2Fyb2xpbmEiOiJTQyIsInNvdXRoIGRha290YSI6IlNEIix0ZW5uZXNzZWU6IlROIix0ZXhhczoiVFgiLHV0YWg6IlVUIix2ZXJtb250OiJWVCIsdmlyZ2luaWE6IlZBIix3YXNoaW5ndG9uOiJXQSIsIndlc3QgdmlyZ2luaWEiOiJXViIsd2lzY29uc2luOiJXSSIsd3lvbWluZzoiV1kiLCJkaXN0cmljdCBvZiBjb2x1bWJpYSI6IkRDIixhbGJlcnRhOiJBQiIsImJyaXRpc2ggY29sdW1iaWEiOiJCQyIsbWFuaXRvYmE6Ik1CIiwibmV3IGJydW5zd2ljayI6Ik5CIiwibmV3Zm91bmRsYW5kIGFuZCBsYWJyYWRvciI6Ik5MIiwibm92YSBzY290aWEiOiJOUyIsb250YXJpbzoiT04iLCJwcmluY2UgZWR3YXJkIGlzbGFuZCI6IlBFIixxdWViZWM6IlFDIixzYXNrYXRjaGV3YW46IlNLIix5dWtvbjoiWVQiLCJub3J0aHdlc3QgdGVycml0b3JpZXMiOiJOVCIsbnVuYXZ1dDoiTlUifSx1PXtwYWQ6e2hyZWY6Ii9zbGVlcG0taGVhdGluZy1wYWQvIixsYWJlbDoiVGhlIFNsZWVwbSBoZWF0aW5nIHBhZCJ9LG1hc2s6e2hyZWY6Ii9zbGVlcG0tZXllLW1hc2svIixsYWJlbDoiVGhlIFNsZWVwbSBleWUgbWFzayJ9LGJlZDp7aHJlZjoiL21hdHRyZXNzLyIsbGFiZWw6IlRoZSBTbGVlcG0gbWF0dHJlc3MifX0sZD17cGxhY2U6bnVsbCx1bml0Om51bGwscmF3Om51bGwsbTpudWxsLHBsYWNlczpudWxsLHBsYWNlc1A6bnVsbCxtYXA6bnVsbCxtYXBPbjohMX0saD17fSxtPXtzdG9ybToiU3Rvcm1zIixzbm93OiJTbm93IixzbGVldDoiU2xlZXQiLHJhaW46IlJhaW4iLGZvZzoiRm9nIixjbG91ZHk6IkNsb3VkeSIsZmFpcjoiUGFydGx5IGNsb3VkeSIsY2xlYXI6IkNsZWFyIn0scD0nPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xMCAxMy42VjUuNWEyIDIgMCAwIDEgNCAwdjguMWE0IDQgMCAxIDEtNCAweiIvPjxwYXRoIGQ9Ik0xMiA5djYuNSIvPjwvc3ZnPicsZj0nPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xMiAzdjE4TTQuMiA3LjVsMTUuNiA5TTQuMiAxNi41bDE1LjYtOSIvPjxwYXRoIGQ9Ik05LjUgNC41TDEyIDdsMi41LTIuNU05LjUgMTkuNUwxMiAxN2wyLjUgMi41Ii8+PC9zdmc+Jyx2PSc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEyIDMuNXMtNiA2LjYtNiAxMWE2IDYgMCAwIDAgMTIgMGMwLTQuNC02LTExLTYtMTF6Ii8+PC9zdmc+JyxnPSc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEyIDMuNXMtNiA2LjYtNiAxMWE2IDYgMCAwIDAgMTIgMGMwLTQuNC02LTExLTYtMTF6Ii8+PHBhdGggZD0iTTkgMTUuNWg2Ii8+PC9zdmc+Jyx5PSc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTIwIDE0LjZBOC4zIDguMyAwIDEgMSA5LjQgNGE2LjYgNi42IDAgMCAwIDEwLjYgMTAuNnoiLz48L3N2Zz4nLHc9Jzxzdmcgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNCAxOGgxNk03IDE4YTUgNSAwIDAgMSAxMCAwTTEyIDZ2Mi41TTUuNiA5LjZsMS43IDEuN00xOC40IDkuNmwtMS43IDEuNyIvPjwvc3ZnPicsYj0nPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik00IDkuNXY1aDRsNSA0di0xM2wtNSA0eiIvPjxwYXRoIGQ9Ik0xNi41IDlhNCA0IDAgMCAxIDAgNk0xOSA2LjVhNy41IDcuNSAwIDAgMSAwIDExIi8+PC9zdmc+Jyx4PSc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTMuNSA5aDExYTMgMyAwIDEgMC0zLTNNMy41IDE0aDE1YTMgMyAwIDEgMS0zIDNNMy41IDExLjVoNyIvPjwvc3ZnPicsTT0nPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik01IDE1LjVoMTRNNi41IDE1LjVWMTBhMiAyIDAgMCAxIDItMmg3YTIgMiAwIDAgMSAyIDJ2NS41TTQgMTl2LTMuNU0yMCAxOXYtMy41Ii8+PC9zdmc+JyxrPXtzdG9ybTo4LHNub3c6NyxzbGVldDo2LHJhaW46NSxmb2c6NCxjbG91ZHk6MyxmYWlyOjIsY2xlYXI6MX0sUz1udWxsLFQ9bisicmV0aXJlLmx5IixDPVQrIi93cC1jb250ZW50L3VwbG9hZHMvcnRseS13eC8iLEE9e3dpbmQ6e2Y6InMiLHR0bDoiV2luZCBzcGVlZCJ9LGd1c3Q6e2Y6ImciLHR0bDoiV2luZCBndXN0cyJ9LHRlbXA6e2Y6InQiLHR0bDoiVGVtcGVyYXR1cmUifSxyYWluOntmOiJwIix0dGw6IlJhaW4ifSxjbG91ZDp7ZjoiYyIsdHRsOiJDbG91ZHMifSxyYWRhcjp7bGl2ZToicmFkYXIiLHR0bDoiUmFkYXIifSxzYXQ6e2xpdmU6InNhdCIsdHRsOiJTYXRlbGxpdGUifX0sRj1bWzAsWzUyLDcwLDE0MF1dLFszLFs0NSw5NSwxNjVdXSxbNixbNDAsMTM1LDE3NV1dLFs5LFs0NSwxNTUsMTQwXV0sWzEyLFs3MCwxNjUsOTVdXSxbMTUsWzEzMCwxNzUsNzBdXSxbMTgsWzIwMCwxNzUsNjBdXSxbMjIsWzIxNSwxMzUsNTVdXSxbMjYsWzIwMCw5MCwxMTBdXSxbMzEsWzE2NSw3MCwxNjBdXSxbMzgsWzEyMCw3MCwxODBdXSxbNTAsWzE5MCwxNzAsMjMwXV1dLEw9W1stNDUsWzEyMCwzMCwxNDBdXSxbLTMwLFs5MCw3MCwyMDBdXSxbLTE4LFs1NSwxMTUsMjI1XV0sWy04LFs2MCwxNzAsMjMwXV0sWzAsWzg1LDIwNSwyMDVdXSxbOCxbOTUsMTk1LDEyMF1dLFsxNSxbMTg1LDIxMCw5MF1dLFsyMSxbMjQwLDIwMCw3MF1dLFsyNyxbMjQwLDE1MCw1MF1dLFszMyxbMjI1LDEwMCw0NV1dLFs0MCxbMTg1LDU1LDg1XV0sWzQ4LFsxNDAsNDAsMTEwXV1dLE49W1swLFsyNCwzMSw0Ml1dLFsxNSxbMzYsNDUsNThdXSxbNDAsWzgyLDkzLDEwOF1dLFs3MCxbMTYwLDE2OCwxODBdXSxbOTAsWzIxMCwyMTUsMjIzXV0sWzEwMCxbMjM2LDIzOSwyNDRdXV0sRT17bWV0YTpudWxsLHJhZDpudWxsLGhyczpbXSx0MDowLGg6MCxobWF4OjAscmk6MCxkYXRhOnt9LGV4dHJhOnt9LGN1cjpudWxsLGV4dDpudWxsLGxheWVyOiJ3aW5kIixwYWlyOiIiLHRpbWVyOjAscGxheWluZzohMSxtYXA6bnVsbCxzdGlsbDohMSxwb3A6bnVsbH07dHJ5e0Uuc3RpbGw9d2luZG93Lm1hdGNoTWVkaWEoIihwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIikubWF0Y2hlc31jYXRjaCh0KXt9dHJ5e3ZhciBQPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCJzbHRfd3hsIik7QVtQXSYmKEUubGF5ZXI9UCl9Y2F0Y2godCl7fXZhciB6LEQ9bnVsbCxXPW51bGwsST0wLEg9MCxfPTEsUj0wLE89MCxqPW51bGwsQj1udWxsLFU9bnVsbCxxPW51bGwsRz1udWxsLFo9MCxZPTAsSz0hMSxKPSExLFE9ITAsVj17InRleHQtZmllbGQiOlsiZ2V0IiwibiJdLCJ0ZXh0LWZvbnQiOlsiTm90byBTYW5zIFJlZ3VsYXIiXSwidGV4dC1zaXplIjpbImludGVycG9sYXRlIixbImxpbmVhciJdLFsiem9vbSJdLDIsMTAuNSw3LDEzLjVdLCJ0ZXh0LW1heC13aWR0aCI6OCwic3ltYm9sLXNvcnQta2V5IjpbImdldCIsInIiXX0sWD17InRleHQtY29sb3IiOiIjRkZGRkZGIiwidGV4dC1oYWxvLWNvbG9yIjoicmdiYSg2LDgsMjYsMC43MikiLCJ0ZXh0LWhhbG8td2lkdGgiOjEuM307W10uZm9yRWFjaC5jYWxsKHQucXVlcnlTZWxlY3RvckFsbCgiLnNseC1sYXllcnMgYnV0dG9uIiksKGZ1bmN0aW9uKHQpe3QuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLChmdW5jdGlvbigpe0UubWV0YSYmVGUodC5nZXRBdHRyaWJ1dGUoImRhdGEtbCIpKX0pKX0pKSxudCgic2x4U2xpZGVyIikuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLChmdW5jdGlvbigpe0UubWV0YSYmKGJlKCExKSwicmFkYXIiPT09RS5sYXllcj93ZSgrdGhpcy52YWx1ZSk6cGUoK3RoaXMudmFsdWUpKX0pKSxudCgic2x4UGxheSIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoZnVuY3Rpb24oKXtFLm1ldGEmJmJlKCFFLnBsYXlpbmcpfSkpO3RyeXtuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGZ1bmN0aW9uKHQpeyhRPXRbdC5sZW5ndGgtMV0uaXNJbnRlcnNlY3RpbmcpP2xlKCk6Y2UoITEpfSkpLm9ic2VydmUodC5xdWVyeVNlbGVjdG9yKCIuc2x4LXN0YWdlIikpfWNhdGNoKHQpe31kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIiwoZnVuY3Rpb24oKXtkb2N1bWVudC5oaWRkZW4/Y2UoITEpOmxlKCl9KSksbnQoInNsdExvYyIpLm9uY2xpY2s9ZnVuY3Rpb24oKXtTPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsbnQoInNsdFBpY2siKS5oaWRkZW49ITEsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iO3ZhciB0PW50KCJzbHRRIik7dC52YWx1ZT0iIixudCgic2x0UmVzIikuaW5uZXJIVE1MPSIiLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC5mb2N1cygpfSksMzApLEd0KCkuY2F0Y2goKGZ1bmN0aW9uKCl7bnQoInNsdFJlcyIpLmlubmVySFRNTD0nPGRpdiBjbGFzcz0ibm9uZSI+Q2l0eSBzZWFyY2ggaXMgbm90IGF2YWlsYWJsZSByaWdodCBub3cuIFRyeSAiVXNlIG15IGxvY2F0aW9uIi48L2Rpdj4nfSkpfSxudCgic2x0UGlja1giKS5vbmNsaWNrPUt0LG50KCJzbHRQaWNrIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLChmdW5jdGlvbih0KXt0LnRhcmdldD09PW50KCJzbHRQaWNrIikmJkt0KCl9KSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsKGZ1bmN0aW9uKHQpeyJFc2NhcGUiIT09dC5rZXl8fG50KCJzbHRQaWNrIikuaGlkZGVufHxLdCgpfSkpLG50KCJzbHRHZW8iKS5vbmNsaWNrPWZ1bmN0aW9uKCl7dmFyIHQ9bnQoInNsdEdlbyIpLnF1ZXJ5U2VsZWN0b3IoInNwYW4iKTtuYXZpZ2F0b3IuZ2VvbG9jYXRpb24/KHQudGV4dENvbnRlbnQ9IkZpbmRpbmcgeW91XHUyMDI2IixuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKChmdW5jdGlvbihlKXt2YXIgYT1lLmNvb3Jkcy5sYXRpdHVkZSxuPWUuY29vcmRzLmxvbmdpdHVkZTtHdCgpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIFl0KGEsbil9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9KSkudGhlbigoZnVuY3Rpb24oZSl7dC50ZXh0Q29udGVudD0iVXNlIG15IGxvY2F0aW9uIixKdCh7bjplP2UubjoiWW91ciBsb2NhdGlvbiIsYTplP2UuYToiIixjOmU/ZS5jOiIiLGNuOmU/ZS5jbjoiIixsYXQ6YSxsb246bix0ejp1dCgpfSwhMCl9KSl9KSwoZnVuY3Rpb24oKXt0LnRleHRDb250ZW50PSJMb2NhdGlvbiBpcyBvZmYuIFR5cGUgeW91ciBjaXR5IGluc3RlYWQuIn0pLHtlbmFibGVIaWdoQWNjdXJhY3k6ITEsdGltZW91dDoxMmUzLG1heGltdW1BZ2U6NmU1fSkpOnQudGV4dENvbnRlbnQ9IkxvY2F0aW9uIGlzIG5vdCBhdmFpbGFibGUgaGVyZSJ9LG50KCJzbHRRIikuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLChmdW5jdGlvbigpe3ZhciB0PXRoaXMudmFsdWU7Y2xlYXJUaW1lb3V0KHopLHo9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtHdCgpLnRoZW4oKGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHQpe3ZhciBlPW50KCJzbHRSZXMiKTtpZih0PXQudHJpbSgpLGQucGxhY2VzKWlmKHQubGVuZ3RoPDIpZS5pbm5lckhUTUw9IiI7ZWxzZXtmb3IodmFyIGE9dC5zcGxpdCgiLCIpLG49WnQoYVswXSkscj1adChhLnNsaWNlKDEpLmpvaW4oIiAiKSksaT1bXSxvPTA7bzxkLnBsYWNlcy5sZW5ndGgmJmkubGVuZ3RoPDYwO28rKyl7dmFyIHM9ZC5wbGFjZXNbb107aWYoMD09PXMucy5pbmRleE9mKG4pfHxuLmxlbmd0aD4zJiZzLnMuaW5kZXhPZigiICIrbik+MCl7aWYociYmWnQocy5hKyIgIitzLmNuKyIgIitzLmMpLmluZGV4T2Yocik8MCljb250aW51ZTtpLnB1c2gocyl9fWkuc29ydCgoZnVuY3Rpb24odCxlKXt2YXIgYT10LnM9PT1uPzE6MDtyZXR1cm4oZS5zPT09bj8xOjApLWF8fGUucG9wLXQucG9wfSkpLChpPWkuc2xpY2UoMCw4KSkubGVuZ3RoPyhlLmlubmVySFRNTD1pLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4nPGJ1dHRvbiB0eXBlPSJidXR0b24iIHJvbGU9Im9wdGlvbiIgZGF0YS1pPSInK2UrJyI+JytvdCh0Lm4pKyI8c3Bhbj4iK290KHQuYT90LmErKCJVUyI9PT10LmM/IiI6IiwgIisoIkNBIj09PXQuYz8iQ2FuYWRhIjp0LmMpKTp0LmNuKSsiPC9zcGFuPjwvYnV0dG9uPiJ9KSkuam9pbigiIiksW10uZm9yRWFjaC5jYWxsKGUucXVlcnlTZWxlY3RvckFsbCgiYnV0dG9uIiksKGZ1bmN0aW9uKHQpe3Qub25jbGljaz1mdW5jdGlvbigpe0p0KGlbK3QuZ2V0QXR0cmlidXRlKCJkYXRhLWkiKV0sITApfX0pKSk6ZS5pbm5lckhUTUw9JzxkaXYgY2xhc3M9Im5vbmUiPk5vIG1hdGNoIHlldC4gVHJ5IGp1c3QgdGhlIGNpdHkgbmFtZS48L2Rpdj4nfX0odCl9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7fSkpfSksMTIwKX0pKSxudCgic2x0USIpLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLChmdW5jdGlvbih0KXtpZigiRW50ZXIiPT09dC5rZXkpe3QucHJldmVudERlZmF1bHQoKTt2YXIgZT1udCgic2x0UmVzIikucXVlcnlTZWxlY3RvcigiYnV0dG9uIik7ZSYmc2V0VGltZW91dCgoZnVuY3Rpb24oKXtlLmNsaWNrKCl9KSwwKX19KSksW10uZm9yRWFjaC5jYWxsKHQucXVlcnlTZWxlY3RvckFsbCgiLnNsdC11bml0IGJ1dHRvbiIpLChmdW5jdGlvbih0KXt0Lm9uY2xpY2s9ZnVuY3Rpb24oKXtkLnVuaXQ9dC5nZXRBdHRyaWJ1dGUoImRhdGEtdSIpLHJ0KCJzbHRfdW5pdCIsZC51bml0KSxkLm0mJkJ0KCksRS5tZXRhJiZrZSgpLEUucG9wJiZFLnBvcC5yZW1vdmUoKX19KSk7dmFyICQsdHQ9d2luZG93LmlubmVyV2lkdGg7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsKGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KCQpLCQ9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtkLm0mJk1hdGguYWJzKHdpbmRvdy5pbm5lcldpZHRoLXR0KT4zMCYmKHR0PXdpbmRvdy5pbm5lcldpZHRoLFV0KCkpfSksMjAwKX0pKSxkLnVuaXQ9cnQoInNsdF91bml0Iik7dmFyIGV0LGF0PXJ0KCJzbHRfcGxhY2UiKTsoYXQmJmlzRmluaXRlKGF0LmxhdCkmJmlzRmluaXRlKGF0LmxvbikmJmN0KGF0LnR6KT9Qcm9taXNlLnJlc29sdmUoYXQpOnM/UHJvbWlzZS5yZXNvbHZlKGEpOihldD1ydCgic2x0X2lwIiksKGV0JiZldC5nJiZEYXRlLm5vdygpLWV0LmF0PDQzMmU1P1Byb21pc2UucmVzb2x2ZShldC5nKTpmZXRjaChuKyJnZXQuZ2VvanMuaW8vdjEvaXAvZ2VvLmpzb24iLHtjcmVkZW50aWFsczoib21pdCJ9KS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5qc29uKCl9KSkudGhlbigoZnVuY3Rpb24odCl7dmFyIGU9e2xhdGl0dWRlOnQubGF0aXR1ZGUsbG9uZ2l0dWRlOnQubG9uZ2l0dWRlLGNpdHk6dC5jaXR5LHJlZ2lvbjp0LnJlZ2lvbixjb3VudHJ5OnQuY291bnRyeSxjb3VudHJ5X2NvZGU6dC5jb3VudHJ5X2NvZGUsdGltZXpvbmU6dC50aW1lem9uZX07cmV0dXJuIHJ0KCJzbHRfaXAiLHtnOmUsYXQ6RGF0ZS5ub3coKX0pLGV9KSkpLnRoZW4oKGZ1bmN0aW9uKHQpe3ZhciBlPXBhcnNlRmxvYXQodC5sYXRpdHVkZSksYT1wYXJzZUZsb2F0KHQubG9uZ2l0dWRlKTtpZighaXNGaW5pdGUoZSl8fCFpc0Zpbml0ZShhKSl0aHJvdyBuZXcgRXJyb3IoIm5vIGlwIGdlbyIpO3ZhciBuPSh0LnJlZ2lvbnx8IiIpLnRvTG93ZXJDYXNlKCkscj0odC5jb3VudHJ5X2NvZGV8fCIiKS50b1VwcGVyQ2FzZSgpLGk9KCJVUyI9PT1yfHwiQ0EiPT09cikmJihjW25dfHx0LnJlZ2lvbil8fCIiO3JldHVybntuOnQuY2l0eXx8IllvdXIgYXJlYSIsYTppLGM6cixjbjppPyIiOnQuY291bnRyeXx8IiIsbGF0OmUsbG9uOmEsdHo6Y3QodC50aW1lem9uZSk/dC50aW1lem9uZTp1dCgpLGlwOiEwfX0pKSkuY2F0Y2goKGZ1bmN0aW9uKCl7cmV0dXJuIGF9KSkpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBxdCh0KX0pKS50aGVuKChmdW5jdGlvbigpe3ZhciBlPXQucXVlcnlTZWxlY3RvcigiLnNseC1zdGFnZSIpLG49ZnVuY3Rpb24oKXt2YXIgdDtkLm1hcE9ufHwoZC5tYXBPbj0hMCx0PU5lKCksUHJvbWlzZS5hbGwoW3dpbmRvdy5tYXBsaWJyZWdsP1Byb21pc2UucmVzb2x2ZSgpOihkLmxpYlB8fChkLmxpYlA9bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQsZSl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpO2EucmVsPSJzdHlsZXNoZWV0IixhLmhyZWY9bysibWFwbGlicmUtZ2wubWluLmNzcyIsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChhKTt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtuLnNyYz1vKyJtYXBsaWJyZS1nbC5taW4uanMiLG4uYXN5bmM9ITAsbi5vbmxvYWQ9ZnVuY3Rpb24oKXt0KCl9LG4ub25lcnJvcj1mdW5jdGlvbigpe2UobmV3IEVycm9yKCJsaWIiKSl9LGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobil9KSkpLGQubGliUCksTGUoKV0pLnRoZW4oKGZ1bmN0aW9uKGUpe3ZhciBuPWVbMV07aWYoIW58fCFuLnN0ZXBzfHwhbi5zdGVwcy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJubyBzdGVwcyIpO0VlKG4pLFBlKCk7dmFyIHI9bWUoRS5oKTt0ZShyWzBdKS5jYXRjaCgoZnVuY3Rpb24oKXt9KSk7dmFyIGk9ZC5wbGFjZXx8YSxvPVF0KCkscz1uZXcgbWFwbGlicmVnbC5NYXAoe2NvbnRhaW5lcjoic2x0TWFwIixzdHlsZTp7dmVyc2lvbjo4LGdseXBoczpDKyJmb250cy97Zm9udHN0YWNrfS97cmFuZ2V9LnBiZiIsc291cmNlczp7Y29hc3Q6e3R5cGU6Imdlb2pzb24iLGRhdGE6QysibGliL2NvYXN0LTUwbS12MS5qc29uIn0sYm9yZGVyczp7dHlwZToiZ2VvanNvbiIsZGF0YTpDKyJsaWIvYm9yZGVycy01MG0tdjEuanNvbiJ9LHN0YXRlczp7dHlwZToiZ2VvanNvbiIsZGF0YTpDKyJsaWIvc3RhdGVzLTUwbS12MS5qc29uIn0scGxhY2VzOnt0eXBlOiJnZW9qc29uIixkYXRhOkMrImxpYi9wbGFjZXMtdjEuanNvbiJ9fSxsYXllcnM6W3tpZDoiYmciLHR5cGU6ImJhY2tncm91bmQiLHBhaW50OnsiYmFja2dyb3VuZC1jb2xvciI6IiMwNzBhMWYifX0se2lkOiJjb2FzdCIsdHlwZToibGluZSIsc291cmNlOiJjb2FzdCIscGFpbnQ6eyJsaW5lLWNvbG9yIjoicmdiYSgyMTQsMjIyLDI1NSwwLjQ2KSIsImxpbmUtd2lkdGgiOlsiaW50ZXJwb2xhdGUiLFsibGluZWFyIl0sWyJ6b29tIl0sMSwuNSw3LDEuM119fSx7aWQ6InN0YXRlcyIsdHlwZToibGluZSIsc291cmNlOiJzdGF0ZXMiLG1pbnpvb206Mi42LHBhaW50OnsibGluZS1jb2xvciI6InJnYmEoMjE0LDIyMiwyNTUsMC4yNCkiLCJsaW5lLXdpZHRoIjpbImludGVycG9sYXRlIixbImxpbmVhciJdLFsiem9vbSJdLDMsLjUsNywuOV19fSx7aWQ6ImJvcmRlcnMiLHR5cGU6ImxpbmUiLHNvdXJjZToiYm9yZGVycyIscGFpbnQ6eyJsaW5lLWNvbG9yIjoicmdiYSgyMTQsMjIyLDI1NSwwLjU1KSIsImxpbmUtd2lkdGgiOlsiaW50ZXJwb2xhdGUiLFsibGluZWFyIl0sWyJ6b29tIl0sMSwuNiw3LDEuM119fSx7aWQ6ImxibC1jb3VudHJ5Iix0eXBlOiJzeW1ib2wiLHNvdXJjZToicGxhY2VzIixtYXh6b29tOjUuNixmaWx0ZXI6WyI9PSIsWyJnZXQiLCJrIl0sImMiXSxsYXlvdXQ6eyJ0ZXh0LWZpZWxkIjpbImdldCIsIm4iXSwidGV4dC1mb250IjpbIk5vdG8gU2FucyBCb2xkIl0sInRleHQtc2l6ZSI6WyJpbnRlcnBvbGF0ZSIsWyJsaW5lYXIiXSxbInpvb20iXSwxLDEwLDUsMTMuNV0sInRleHQtbWF4LXdpZHRoIjo4LCJzeW1ib2wtc29ydC1rZXkiOlsiZ2V0IiwiciJdfSxwYWludDp7InRleHQtY29sb3IiOiJyZ2JhKDI1NSwyNTUsMjU1LDAuOCkiLCJ0ZXh0LWhhbG8tY29sb3IiOiJyZ2JhKDYsOCwyNiwwLjY2KSIsInRleHQtaGFsby13aWR0aCI6MS4yfX0se2lkOiJsYmwtc3RhdGUiLHR5cGU6InN5bWJvbCIsc291cmNlOiJwbGFjZXMiLG1pbnpvb206My42LG1heHpvb206Ny41LGZpbHRlcjpbIj09IixbImdldCIsImsiXSwicyJdLGxheW91dDp7InRleHQtZmllbGQiOlsiZ2V0IiwibiJdLCJ0ZXh0LWZvbnQiOlsiTm90byBTYW5zIFJlZ3VsYXIiXSwidGV4dC1zaXplIjoxMS41LCJ0ZXh0LW1heC13aWR0aCI6NywidGV4dC1sZXR0ZXItc3BhY2luZyI6LjAyfSxwYWludDp7InRleHQtY29sb3IiOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNTgpIiwidGV4dC1oYWxvLWNvbG9yIjoicmdiYSg2LDgsMjYsMC42MikiLCJ0ZXh0LWhhbG8td2lkdGgiOjEuMX19LEZlKCJsYmwtY2l0eTEiLDIsLTEsMSksRmUoImxibC1jaXR5MiIsMy40LDEsMyksRmUoImxibC1jaXR5MyIsNC42LDMsNiksRmUoImxibC1jaXR5NCIsNS44LDYsOTkpXX0sY2VudGVyOltpLmxvbixpLmxhdF0sem9vbTpvPzM6NCxtaW5ab29tOm8/LjY6MS4zLG1heFpvb206Ny41LHJlbmRlcldvcmxkQ29waWVzOiExLGF0dHJpYnV0aW9uQ29udHJvbDohMSxjb29wZXJhdGl2ZUdlc3R1cmVzOiEwLGRyYWdSb3RhdGU6ITEscGl0Y2hXaXRoUm90YXRlOiExLHRvdWNoUGl0Y2g6ITEsZmFkZUR1cmF0aW9uOjB9KTtFLm1hcD1zLHMudG91Y2hab29tUm90YXRlLmRpc2FibGVSb3RhdGlvbigpLHMuYWRkQ29udHJvbChuZXcgbWFwbGlicmVnbC5BdHRyaWJ1dGlvbkNvbnRyb2woe2NvbXBhY3Q6ITAsY3VzdG9tQXR0cmlidXRpb246IldlYXRoZXI6IE5PQUEgR0ZTIFx4YjcgUmFkYXI6IE5PQUEgTldTIE1STVMgXHhiNyBTYXRlbGxpdGU6IE5BU0EgR0lCUyAvIE5PQUEgR09FUyBceGI3IE1hcDogTmF0dXJhbCBFYXJ0aCBceGI3IFBsYWNlczogR2VvTmFtZXMifSksImJvdHRvbS1sZWZ0Iikscy5hZGRDb250cm9sKG5ldyBtYXBsaWJyZWdsLk5hdmlnYXRpb25Db250cm9sKHtzaG93Q29tcGFzczohMX0pLCJib3R0b20tcmlnaHQiKSxzLm9uKCJsb2FkIiwoZnVuY3Rpb24oKXt2YXIgZT1bWy0xODAsODUuMDUxMV0sWzE4MCw4NS4wNTExXSxbMTgwLC04NS4wNTExXSxbLTE4MCwtODUuMDUxMV1dLGE9QVtFLmxheWVyXS5mP0UubGF5ZXI6IndpbmQiO3MuYWRkU291cmNlKCJ3eGEiLHt0eXBlOiJpbWFnZSIsdXJsOnJlKHJbMF0sYSksY29vcmRpbmF0ZXM6ZX0pLHMuYWRkU291cmNlKCJ3eGIiLHt0eXBlOiJpbWFnZSIsdXJsOnJlKHJbMV0sYSksY29vcmRpbmF0ZXM6ZX0pLHMuYWRkTGF5ZXIoe2lkOiJ3eGEiLHR5cGU6InJhc3RlciIsc291cmNlOiJ3eGEiLHBhaW50OnsicmFzdGVyLW9wYWNpdHkiOi45MiwicmFzdGVyLXJlc2FtcGxpbmciOiJsaW5lYXIiLCJyYXN0ZXItZmFkZS1kdXJhdGlvbiI6MH19LCJjb2FzdCIpLHMuYWRkTGF5ZXIoe2lkOiJ3eGIiLHR5cGU6InJhc3RlciIsc291cmNlOiJ3eGIiLHBhaW50OnsicmFzdGVyLW9wYWNpdHkiOjAsInJhc3Rlci1yZXNhbXBsaW5nIjoibGluZWFyIiwicmFzdGVyLWZhZGUtZHVyYXRpb24iOjB9fSwiY29hc3QiKSwoRD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSkuY2xhc3NOYW1lPSJzbHgtd2luZCIscy5nZXRDYW52YXNDb250YWluZXIoKS5hcHBlbmRDaGlsZChEKSx0LnRoZW4oKGZ1bmN0aW9uKHQpe0UucmFkPXQsQVtFLmxheWVyXS5saXZlJiZUZShFLmxheWVyKX0pKSxUZShFLmxheWVyKSx6ZSghMCk7dmFyIG49cy5nZXRDb250YWluZXIoKS5xdWVyeVNlbGVjdG9yKCIubWFwbGlicmVnbC1jdHJsLWF0dHJpYiIpO24mJlF0KCkmJihuLmNsYXNzTGlzdC5yZW1vdmUoIm1hcGxpYnJlZ2wtY29tcGFjdC1zaG93Iiksbi5yZW1vdmVBdHRyaWJ1dGUoIm9wZW4iKSkscy5vbmNlKCJpZGxlIiwoZnVuY3Rpb24oKXtudCgic2x4TG9hZCIpLmNsYXNzTGlzdC5hZGQoIm9mZiIpfSkpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7bnQoInNseExvYWQiKS5jbGFzc0xpc3QuYWRkKCJvZmYiKX0pLDZlMyl9KSkscy5vbigibW92ZXN0YXJ0IiwoZnVuY3Rpb24oKXtKPSEwLGNlKCEwKX0pKSxzLm9uKCJtb3ZlZW5kIiwoZnVuY3Rpb24oKXtKPSExLGllKCksbGUoKX0pKSxzLm9uKCJyZXNpemUiLChmdW5jdGlvbigpe0p8fChpZSgpLGxlKCkpfSkpLHMub24oImNsaWNrIixBZSksc2V0SW50ZXJ2YWwoKGZ1bmN0aW9uKCl7TGUoKS50aGVuKChmdW5jdGlvbih0KXt0JiZ0LnJ1biYmRS5tZXRhJiZ0LnJ1biE9PUUubWV0YS5ydW4mJnQuc3RlcHMmJnQuc3RlcHMubGVuZ3RoJiYoRWUodCksQVtFLmxheWVyXS5saXZlfHwodmUoKSxwZShFLmgpKSksUGUoKX0pKS5jYXRjaCgoZnVuY3Rpb24oKXt9KSl9KSw5ZTUpLHNldEludGVydmFsKChmdW5jdGlvbigpeyJyYWRhciIhPT1FLmxheWVyJiYic2F0IiE9PUUubGF5ZXJ8fE5lKCkudGhlbigoZnVuY3Rpb24odCl7dCYmdC5mcmFtZXMmJnQuZnJhbWVzLmxlbmd0aCYmKEUucmFkPXQsInJhZGFyIj09PUUubGF5ZXImJihnZSgpLHdlKHQuZnJhbWVzLmxlbmd0aC0xKSkpfSkpfSksNmU1KX0pKS5jYXRjaCgoZnVuY3Rpb24oKXtudCgic2x4TG9hZCIpLmlubmVySFRNTD0iPHNwYW4+VGhlIHdlYXRoZXIgbWFwIGlzIG5vdCBhdmFpbGFibGUgcmlnaHQgbm93Ljwvc3Bhbj4ifSkpKX07aWYoIkludGVyc2VjdGlvbk9ic2VydmVyImluIHdpbmRvdyl7dmFyIHI9bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChmdW5jdGlvbih0KXt0LnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlzSW50ZXJzZWN0aW5nfSkpJiYoci5kaXNjb25uZWN0KCksbigpKX0pLHtyb290TWFyZ2luOiI3MDBweCAwcHgifSk7ci5vYnNlcnZlKGUpfWVsc2UgbigpfSkpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7R3QoKX0pLDI1MDApfWZ1bmN0aW9uIG50KHQpe3JldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KX1mdW5jdGlvbiBydCh0LGUpe3RyeXtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odCl8fCJudWxsIik7bG9jYWxTdG9yYWdlLnNldEl0ZW0odCxKU09OLnN0cmluZ2lmeShlKSl9Y2F0Y2godCl7fXJldHVybiBudWxsfWZ1bmN0aW9uIGl0KHQsZSl7dHJ5e2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHQpfHwibnVsbCIpO3Nlc3Npb25TdG9yYWdlLnNldEl0ZW0odCxKU09OLnN0cmluZ2lmeShlKSl9Y2F0Y2godCl7fXJldHVybiBudWxsfWZ1bmN0aW9uIG90KHQpe3JldHVybiBTdHJpbmcobnVsbD09dD8iIjp0KS5yZXBsYWNlKC9bJjw+IiddL2csKGZ1bmN0aW9uKHQpe3JldHVybnsiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyInOiImcXVvdDsiLCInIjoiJiMzOTsifVt0XX0pKX1mdW5jdGlvbiBzdCh0KXt2YXIgZT0wLGE9MDtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXsibnVtYmVyIj09dHlwZW9mIHQmJihhKz10LGUrKyl9KSksZT9hL2U6bnVsbH1mdW5jdGlvbiBsdCh0KXtyZXR1cm4gZmV0Y2godCx7Y3JlZGVudGlhbHM6Im9taXQifSkudGhlbigoZnVuY3Rpb24odCl7aWYoIXQub2spdGhyb3cgbmV3IEVycm9yKCJIVFRQICIrdC5zdGF0dXMpO3JldHVybiB0Lmpzb24oKX0pKX1mdW5jdGlvbiBjdCh0KXt0cnl7cmV0dXJuIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCJlbi1VUyIse3RpbWVab25lOnR9KSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19ZnVuY3Rpb24gdXQoKXt0cnl7cmV0dXJuIEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZXx8YS50en1jYXRjaCh0KXtyZXR1cm4gYS50en19ZnVuY3Rpb24gZHQodCxlKXt2YXIgYT10K0pTT04uc3RyaW5naWZ5KGUpO3JldHVybiBoW2FdfHwoaFthXT1uZXcgSW50bC5EYXRlVGltZUZvcm1hdCgiZW4tVVMiLE9iamVjdC5hc3NpZ24oe3RpbWVab25lOnR9LGUpKSksaFthXX1mdW5jdGlvbiBodCh0LGUpe3ZhciBhPXt9O3JldHVybiBkdChlLHtob3VyQ3ljbGU6ImgyMyIseWVhcjoibnVtZXJpYyIsbW9udGg6IjItZGlnaXQiLGRheToiMi1kaWdpdCIsaG91cjoiMi1kaWdpdCIsbWludXRlOiIyLWRpZ2l0Iix3ZWVrZGF5OiJzaG9ydCJ9KS5mb3JtYXRUb1BhcnRzKHQpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2FbdC50eXBlXT10LnZhbHVlfSkpLHt5OithLnllYXIsbW86K2EubW9udGgsZDorYS5kYXksaDorYS5ob3VyJTI0LG1pOithLm1pbnV0ZSx3ZDphLndlZWtkYXksa2V5OmEueWVhcisiLSIrYS5tb250aCsiLSIrYS5kYXl9fWZ1bmN0aW9uIG10KHQsZSl7dmFyIGE9aHQodCxlKSxuPURhdGUuVVRDKGEueSxhLm1vLTEsYS5kLGEuaCxhLm1pKTtyZXR1cm4gTWF0aC5yb3VuZCgobi02ZTQqTWF0aC5mbG9vcih0LmdldFRpbWUoKS82ZTQpKS82ZTQpfWZ1bmN0aW9uIHB0KHQsZSl7dmFyIGE9bXQodCxlKSxuPWE8MD8iLSI6IisiO3JldHVybiBhPU1hdGguYWJzKGEpLG4rKCIwIitNYXRoLmZsb29yKGEvNjApKS5zbGljZSgtMikrIjoiKygiMCIrYSU2MCkuc2xpY2UoLTIpfWZ1bmN0aW9uIGZ0KHQsZSl7dmFyIGE9dC5zcGxpdCgiLSIpO3JldHVybiBuZXcgRGF0ZShEYXRlLlVUQygrYVswXSwrYVsxXS0xLCthWzJdK2UsMTIpKS50b0lTT1N0cmluZygpLnNsaWNlKDAsMTApfWZ1bmN0aW9uIHZ0KHQpe3ZhciBlPXQuc3BsaXQoIi0iKTtyZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMoK2VbMF0sK2VbMV0tMSwrZVsyXSwxMikpfWZ1bmN0aW9uIGd0KHQsZSxhKXt2YXIgbj10LnNwbGl0KCItIikscj1EYXRlLlVUQygrblswXSwrblsxXS0xLCtuWzJdLGUsMCk7cmV0dXJuIHItNmU0Km10KG5ldyBEYXRlKHIpLGEpfWZ1bmN0aW9uIHl0KHQsZSl7cmV0dXJuIGR0KGUse2hvdXI6Im51bWVyaWMiLG1pbnV0ZToiMi1kaWdpdCJ9KS5mb3JtYXQodCl9ZnVuY3Rpb24gd3QodCxlKXt2YXIgYT1odCh0LGUpO3JldHVybihhLmglMTJ8fDEyKSsoYS5taT8iOiIrKCIwIithLm1pKS5zbGljZSgtMik6IiIpKyIgIisoYS5oPDEyPyJBTSI6IlBNIil9ZnVuY3Rpb24gYnQodCxlKXt2YXIgYT1odCh0LGUpO3JldHVybihhLmglMTJ8fDEyKSsoYS5oPDEyPyIgQU0iOiIgUE0iKX1mdW5jdGlvbiB4dCh0KXt2YXIgZT1odChuZXcgRGF0ZSx0KTtyZXR1cm4gZS5oPDU/ZnQoZS5rZXksLTEpOmUua2V5fWZ1bmN0aW9uIE10KHQpe3JldHVybiB0P25ldyBEYXRlKDIyPT09dC5sZW5ndGg/dC5yZXBsYWNlKC8oWystXVxkXGQ6XGRcZCkkLywiOjAwJDEiKTp0KTpudWxsfWZ1bmN0aW9uIGt0KCl7cmV0dXJuIGQudW5pdHx8ZC5hdXRvVW5pdHx8IkYifWZ1bmN0aW9uIFN0KHQpe3JldHVybiBudWxsPT10PyJcdTIwMTMiOk1hdGgucm91bmQoIkYiPT09a3QoKT85KnQvNSszMjp0KSsiXHhiMCJ9ZnVuY3Rpb24gVHQodCl7cmV0dXJuIDkqdC81KzMyfWZ1bmN0aW9uIEN0KHQpe3JldHVybiBudWxsPT10PyJcdTIwMTMiOiJGIj09PWt0KCk/TWF0aC5yb3VuZCgyLjIzNjk0KnQpKyIgbXBoIjpNYXRoLnJvdW5kKDMuNip0KSsiIGttL2gifWZ1bmN0aW9uIEF0KHQpe2lmKCJGIj09PWt0KCkpe3ZhciBlPXQvMjUuNDtyZXR1cm4oZTwuMT9lLnRvRml4ZWQoMik6ZS50b0ZpeGVkKDEpKSsiIGluIn1yZXR1cm4odDwxMD90LnRvRml4ZWQoMSk6TWF0aC5yb3VuZCh0KSkrIiBtbSJ9ZnVuY3Rpb24gRnQodCxlLGEpe2Zvcih2YXIgbj0nPGNpcmNsZSBjbGFzcz0ic3UiIGN4PSInK3QrJyIgY3k9IicrZSsnIiByPSInK2ErJyIvPicscj0wO3I8ODtyKyspe3ZhciBpPXIqTWF0aC5QSS80LG89dCtNYXRoLmNvcyhpKSooYSsyLjIpLHM9ZStNYXRoLnNpbihpKSooYSsyLjIpLGw9dCtNYXRoLmNvcyhpKSooYSs0LjIpLGM9ZStNYXRoLnNpbihpKSooYSs0LjIpO24rPSc8cGF0aCBjbGFzcz0ic3UiIGQ9Ik0nK28udG9GaXhlZCgxKSsiICIrcy50b0ZpeGVkKDEpKyJMIitsLnRvRml4ZWQoMSkrIiAiK2MudG9GaXhlZCgxKSsnIi8+J31yZXR1cm4gbn1mdW5jdGlvbiBMdCh0LGUsYSl7cmV0dXJuJzxwYXRoIGNsYXNzPSJzdSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoJyt0KyIgIitlKyIpIHNjYWxlKCIrYSsnKSIgZD0iTTIwIDE0LjZBOC4zIDguMyAwIDEgMSA5LjQgNGE2LjYgNi42IDAgMCAwIDEwLjYgMTAuNnoiLz4nfWZ1bmN0aW9uIE50KHQpe3ZhciBlPS9fbmlnaHR8X3BvbGFydHdpbGlnaHQvLnRlc3QodD10fHwiIik7cmV0dXJue2M6L3RodW5kZXIvLnRlc3QodCk/InN0b3JtIjovc25vdy8udGVzdCh0KT8ic25vdyI6L3NsZWV0Ly50ZXN0KHQpPyJzbGVldCI6L3JhaW58ZHJpenpsZS8udGVzdCh0KT8icmFpbiI6L2ZvZy8udGVzdCh0KT8iZm9nIjovXmNsb3VkeS8udGVzdCh0KT8iY2xvdWR5IjovcGFydGx5Y2xvdWR5fGZhaXIvLnRlc3QodCk/ImZhaXIiOi9jbGVhcnNreS8udGVzdCh0KT8iY2xlYXIiOiJjbG91ZHkiLG5pZ2h0OmV9fWZ1bmN0aW9uIEV0KHQsZSl7dmFyIGE9TnQodCk7bnVsbD09ZSYmKGU9YS5uaWdodCk7dmFyIG49JzxzdmcgY2xhc3M9ImljIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGFyaWEtaGlkZGVuPSJ0cnVlIj4nLHI9Ijwvc3ZnPiI7aWYoImNsZWFyIj09PWEuYylyZXR1cm4gbisoZT9MdCgwLDAsMSk6RnQoMTIsMTIsNC4yKSkrcjtpZigiZmFpciI9PT1hLmMpcmV0dXJuIG4rKGU/THQoLTMsLTMuNiwuNzIpOkZ0KDguNCw4LDMpKSsnPHBhdGggY2xhc3M9ImNsIiBkPSJNOC40IDIwaDkuM2EzLjcgMy43IDAgMCAwIC40LTcuMzhBNS4zIDUuMyAwIDAgMCA3LjkgMTMuOSAzLjEgMy4xIDAgMCAwIDguNCAyMHoiLz4nK3I7aWYoImZvZyI9PT1hLmMpcmV0dXJuIG4rJzxwYXRoIGNsYXNzPSJjbCIgZD0iTTcgMTMuNWgxMC42YTMuNiAzLjYgMCAwIDAgLjMtNy4yQTUuMiA1LjIgMCAwIDAgNy44IDcuOSAyLjkgMi45IDAgMCAwIDcgMTMuNXoiLz48cGF0aCBjbGFzcz0icm4iIGQ9Ik00IDE2LjVoMTZNNiAxOS41aDEyIi8+JytyO3ZhciBpPSc8cGF0aCBjbGFzcz0iY2wiIGQ9Ik02LjYgMTVoMTAuOWE0LjEgNC4xIDAgMCAwIC41LTguMTdBNS45IDUuOSAwIDAgMCA1LjkgNy45IDMuNSAzLjUgMCAwIDAgNi42IDE1eiIvPic7cmV0dXJuInJhaW4iPT09YS5jP24raSsnPHBhdGggY2xhc3M9InJuIiBkPSJNOC41IDE3LjVsLTEgMi42TTEyLjUgMTcuNWwtMSAyLjZNMTYuNSAxNy41bC0xIDIuNiIvPicrcjoic25vdyI9PT1hLmN8fCJzbGVldCI9PT1hLmM/bitpKyc8Y2lyY2xlIGNsYXNzPSJzbiIgY3g9IjguMyIgY3k9IjE4LjYiIHI9IjEuMSIvPjxjaXJjbGUgY2xhc3M9InNuIiBjeD0iMTIuMyIgY3k9IjIwLjIiIHI9IjEuMSIvPjxjaXJjbGUgY2xhc3M9InNuIiBjeD0iMTYuMiIgY3k9IjE4LjYiIHI9IjEuMSIvPicrcjoic3Rvcm0iPT09YS5jP24raSsnPHBhdGggY2xhc3M9ImJvIiBkPSJNMTIuOCAxNS4ybC0yLjMgMy40aDNsLTIgMy40Ii8+JytyOm4rJzxwYXRoIGNsYXNzPSJjbCIgZD0iTTYuNiAxOWgxMC45YTQuNCA0LjQgMCAwIDAgLjUtOC43N0E2LjMgNi4zIDAgMCAwIDUuOSAxMS42IDMuNzUgMy43NSAwIDAgMCA2LjYgMTl6Ii8+JytyfWZ1bmN0aW9uIFB0KHQpe3JldHVybih0PSh0JTM2MCszNjApJTM2MCk8MTB8fHQ+PTM1MD8iTmV3IG1vb24iOnQ8ODA/IldheGluZyBjcmVzY2VudCI6dDwxMDA/IkZpcnN0IHF1YXJ0ZXIiOnQ8MTcwPyJXYXhpbmcgZ2liYm91cyI6dDwxOTA/IkZ1bGwgbW9vbiI6dDwyNjA/IldhbmluZyBnaWJib3VzIjp0PDI4MD8iTGFzdCBxdWFydGVyIjoiV2FuaW5nIGNyZXNjZW50In1mdW5jdGlvbiB6dCh0KXtyZXR1cm4oMS1NYXRoLmNvcyh0Kk1hdGguUEkvMTgwKSkvMn1mdW5jdGlvbiBEdCh0KXt2YXIgZT0yOS41MzA1ODg4NTMsYT0odC1EYXRlLlVUQygyZTMsMCw2LDE4LDE0KSkvODY0ZTUlZTtyZXR1cm4gYTwwJiYoYSs9ZSksYS9lKjM2MH1mdW5jdGlvbiBXdCh0LGUsYSl7dmFyIG49enQodD0odCUzNjArMzYwKSUzNjApLHI9dDwxODAsaT1lKzIsbz1NYXRoLmFicygxLTIqbikqZSxzPSJzbHRNZyIrTWF0aC5yb3VuZCgxZTYqTWF0aC5yYW5kb20oKSksbD0iTSIraSsiICIrKGktZSkrIkEiK2UrIiAiK2UrIiAwIDAgMSAiK2krIiAiKyhpK2UpKyJBIitvLnRvRml4ZWQoMikrIiAiK2UrIiAwIDAgIisobjwuNT8wOjEpKyIgIitpKyIgIisoaS1lKSsieiIsYz0nPHN2ZyB2aWV3Qm94PSIwIDAgJysyKmkrIiAiKzIqaSsnIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSInK3MrJyIgY3g9IjQwJSIgY3k9IjM4JSIgcj0iNzAlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmY5ZWEiLz48c3RvcCBvZmZzZXQ9Ii41NSIgc3RvcC1jb2xvcj0iI2Y0ZTdjNCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2Q5YzQ4ZiIvPjwvcmFkaWFsR3JhZGllbnQ+PC9kZWZzPic7cmV0dXJuIGMrPSc8Y2lyY2xlIGNsYXNzPSInKyhhPyJtYiI6Im1iMiIpKyciIGN4PSInK2krJyIgY3k9IicraSsnIiByPSInK2UrJyIgc3Ryb2tlLXdpZHRoPSIxIi8+JyxuPi4wMTUmJihjKz0nPHBhdGggZD0iJytsKyciIGZpbGw9InVybCgjJytzKycpIicrKHI/IiI6JyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgnKzIqaSsnIDApIHNjYWxlKC0xIDEpIicpKyIvPiIpLGMrIjwvc3ZnPiJ9ZnVuY3Rpb24gSXQodCl7Zm9yKHZhciBlPSc8c3BhbiBjbGFzcz0ic2x0LW1ucyIgYXJpYS1oaWRkZW49InRydWUiPicsYT0xO2E8PTU7YSsrKXt2YXIgbj10Pj1hPzE6dD49YS0uNT8uNTowLHI9InNsdFIiK01hdGgucm91bmQoMWU3Kk1hdGgucmFuZG9tKCkpO2UrPSc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGRlZnM+PGNsaXBQYXRoIGlkPSInK3IrJyI+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IicrKDE9PT1uPzI0Om4/MTI6MCkrJyIgaGVpZ2h0PSIyNCIvPjwvY2xpcFBhdGg+PC9kZWZzPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjkiIGZpbGw9Im5vbmUiIHN0cm9rZT0idmFyKC0tc2x0LW9mZikiIHN0cm9rZS13aWR0aD0iMS40Ii8+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iOSIgZmlsbD0idmFyKC0tc2x0LWdvbGQpIiBjbGlwLXBhdGg9InVybCgjJytyKycpIi8+PC9zdmc+J31yZXR1cm4gZSsiPC9zcGFuPiJ9ZnVuY3Rpb24gSHQodCxlLGEsbil7dmFyIHI9Z3QoYSwyMixlKSxpPWd0KGZ0KGEsMSksNyxlKSxvPU1hdGgubWF4KHIsbi0yNGU1KSxzPXQuZmlsdGVyKChmdW5jdGlvbih0KXt2YXIgZT10LmQuZ2V0VGltZSgpO3JldHVybiB0LnMxJiZlPj1vJiZlPD1pfSkpLGw9dC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3ZhciBlPXQuZC5nZXRUaW1lKCk7cmV0dXJuIXQuczEmJnQuczYmJmU8aSYmZSsyMTZlNT5yfSkpO2lmKCFzLmxlbmd0aCYmIWwubGVuZ3RoKXJldHVybiBudWxsO3ZhciBjPVtdLHU9W10sZD1bXSxoPVtdLG09MCxwPTEvMCxmPW51bGwsdj0wLGc9bnVsbDtzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2MucHVzaCh0LmgpLHUucHVzaCh0LncpLGQucHVzaCh0LmMpLGgucHVzaCh0LnMxKSxtKz10LnAxfHwwLHQudDxwJiYocD10LnQsZj10LmQpLHY9TWF0aC5tYXgodix0LmZvZ3x8MCksIWcmJih0LnAxfHwwKT49LjEmJihnPXQuZCl9KSksbC5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LmQuZ2V0VGltZSgpLGE9KE1hdGgubWluKGksZSsyMTZlNSktTWF0aC5tYXgocixlKSkvMjE2ZTU7bnVsbCE9dC5tbjYmJnQubW42PHAmJihwPXQubW42LGY9bnVsbCksdC50PHAmJihwPXQudCxmPXQuZCksYy5wdXNoKHQuaCksdS5wdXNoKHQudyksZC5wdXNoKHQuYyksaC5wdXNoKHQuczYpLG0rPSh0LnA2fHwwKSpNYXRoLm1heCgwLGEpfSkpO3ZhciB5PW51bGwsdz0xLzA7dC5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT1NYXRoLmFicyh0LmQuZ2V0VGltZSgpLXIpO2U8dyYmZTw9MTA4ZTUmJih3PWUseT10KX0pKTt2YXIgYj17fTtoLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPU50KHQpLmM7YltlXT0oYltlXXx8MCkrMX0pKTt2YXIgeD1oLmxlbmd0aCxNPW51bGw7T2JqZWN0LmtleXMoYikuZm9yRWFjaCgoZnVuY3Rpb24odCl7a1t0XT49NCYmYlt0XT49TWF0aC5tYXgoMSxNYXRoLmNlaWwoLjIqeCkpJiYoIU18fGtbdF0+a1tNXSkmJihNPXQpfSkpLE18fE9iamVjdC5rZXlzKGIpLmZvckVhY2goKGZ1bmN0aW9uKHQpeyghTXx8Ylt0XT5iW01dfHxiW3RdPT09YltNXSYma1t0XT5rW01dKSYmKE09dCl9KSk7dmFyIFMsVCxDPXtzdG9ybToicmFpbmFuZHRodW5kZXIiLHNub3c6InNub3ciLHNsZWV0OiJzbGVldCIscmFpbjoicmFpbiIsZm9nOiJmb2ciLGNsb3VkeToiY2xvdWR5IixmYWlyOiJwYXJ0bHljbG91ZHlfbmlnaHQiLGNsZWFyOiJjbGVhcnNreV9uaWdodCJ9W01dO3JldHVybntrZXk6YSxzdGFydDpyLGVuZDppLGxvdzpwPT09MS8wP251bGw6cCxsb3dBdDpmLGJlZDp5LGh1bTpzdChjKSx3aW5kOihTPXUsVD1udWxsLFMuZm9yRWFjaCgoZnVuY3Rpb24odCl7Im51bWJlciI9PXR5cGVvZiB0JiYobnVsbD09PVR8fHQ+VCkmJihUPXQpfSkpLFQpLGNsb3VkOnN0KGQpLHByZWNpcDptLGZvZzp2PjQwfHxiLmZvZz4wLHRodW5kZXI6ISFiLnN0b3JtLHNub3c6ISghYi5zbm93JiYhYi5zbGVldCksd2V0Om0+PS4zfHwhIShiLnJhaW58fGIuc25vd3x8Yi5zbGVldHx8Yi5zdG9ybSksZmlyc3RXZXQ6ZyxjYXQ6TSxzeW06Qyxob3VybHk6cy5sZW5ndGg+MH19ZnVuY3Rpb24gX3QodCxlKXt2YXIgYT01LG49VHQodC5sb3cpLHI9Mi4yMzY5NCoodC53aW5kfHwwKTtyZXR1cm4gbj49NzU/YS09MjpuPj03MD9hLT0xLjU6bj49NjYmJihhLT0uNSksbjw9MjM/YS09MTpuPD0zNSYmKGEtPS41KSx0Lmh1bT49ODU/YS09MToodC5odW0+PTc1fHx0Lmh1bTw9MjUpJiYoYS09LjUpLHI+PTI1P2EtPTE6cj49MTYmJihhLT0uNSksdC50aHVuZGVyP2EtPTEuNTp0LnByZWNpcD49MTAmJihhLT0uNSksZT49LjkmJnQuY2xvdWQ8NDAmJihhLT0uNSksTWF0aC5tYXgoMSxNYXRoLm1pbig1LE1hdGgucm91bmQoMiphKS8yKSl9ZnVuY3Rpb24gUnQodCl7dmFyIGU9VHQodCk7cmV0dXJuIGU8PTMyPyJmcmVlemluZyI6ZTw9NDU/ImNvbGQiOmU8PTU1PyJjb29sIjplPD02NT8ibWlsZCI6ZTw9NzI/Indhcm0iOiJob3QifWZ1bmN0aW9uIE90KHQpe3ZhciBlPTIuMjM2OTQqKHR8fDApO3JldHVybiBlPDQ/IkNhbG0iOmU8MTA/IkxpZ2h0IGJyZWV6ZSI6ZTwyMD8iQnJlZXp5IjoiV2luZHkifWZ1bmN0aW9uIGp0KHQpe3JldHVybiB0Lm4rKHQuYT8iLCAiK3QuYTp0LmNuPyIsICIrdC5jbjoiIil9ZnVuY3Rpb24gQnQoKXt2YXIgZT1kLm0sYT1lLm4sbj1kLnBsYWNlLnR6O250KCJzbHRQbGFjZSIpLnRleHRDb250ZW50PWp0KGQucGxhY2UpO3ZhciByPWZ1bmN0aW9uKHQpe3ZhciBlPTIuMjM2OTQqKHQud2luZHx8MCk7cmV0dXJuIHQudGh1bmRlcj8ic3Rvcm15Ijp0LnNub3c/InNub3d5Ijp0LnByZWNpcD49MXx8InJhaW4iPT09dC5jYXQ/InJhaW55IjplPj0yMD8id2luZHkiOnQuZm9nJiYiZm9nIj09PXQuY2F0PyJmb2dneSI6dC5jbG91ZDw9MjU/ImNsZWFyIjp0LmNsb3VkPj03MD8iY2xvdWR5IjoicGFydGx5IGNsb3VkeSJ9KGEpO250KCJzbHRIZWFkIikuaW5uZXJIVE1MPSJBICIrUnQoYS5sb3cpKyIsIDxlbT4iK3IrIiBuaWdodC48L2VtPiI7dmFyIGksbz1bIkxvdyBvZiAiK1N0KGEubG93KSsoYS5sb3dBdD8iIGFyb3VuZCAiK2J0KGEubG93QXQsbik6IiIpXTtudWxsIT1hLmh1bSYmby5wdXNoKCJIdW1pZGl0eSAiK01hdGgucm91bmQoYS5odW0pKyIlIiksby5wdXNoKE90KGEud2luZCkrKCJDYWxtIj09PU90KGEud2luZCk/IiB3aW5kcyI6IiIpKSxudCgic2x0U3ViIikudGV4dENvbnRlbnQ9by5qb2luKCIgXHhiNyAiKSxudCgic2x0UmF0ZSIpLmlubmVySFRNTD1JdChhLnNjb3JlKSsnPHNwYW4gY2xhc3M9InJsIj4nKygoaT1hLnNjb3JlKT49NC41PyJHcmVhdCBzbGVlcGluZyB3ZWF0aGVyIjppPj0zLjU/Ikdvb2Qgc2xlZXBpbmcgd2VhdGhlciI6aT49Mi41PyJGYWlyLCB3aXRoIGEgbGl0dGxlIHBsYW5uaW5nIjoiQSB0b3VnaGVyIG5pZ2h0LCBzZWUgdGhlIHRpcHMiKSsnPC9zcGFuPjxzcGFuIGNsYXNzPSJzbHQtdmgiPicrYS5zY29yZSsiIG91dCBvZiA1PC9zcGFuPiI7dmFyIHM9YS5jbG91ZDw9MjU/IkNsZWFyIHNraWVzLiBBIGdvb2QgbmlnaHQgdG8gbG9vayB1cC4iOmEuY2xvdWQ+PTcwPyJDbG91ZHMgd2lsbCBoaWRlIG1vc3Qgc3RhcnMuIjoiU29tZSBjbG91ZHMsIHNvbWUgc3RhcnMuIjtudCgic2x0TW9vbiIpLmlubmVySFRNTD1XdChlLm1vb24uZGVnLDYwLCEwKSsnPGRpdj48ZGl2IGNsYXNzPSJtbiI+JytvdChlLm1vb24ubmFtZSkrJzwvZGl2PjxkaXYgY2xhc3M9Im1zIj4nK01hdGgucm91bmQoMTAwKmUubW9vbi5rKSsiJSBsaXQiKyhlLm1vb24ubGluZT8iIFx4YjcgIitvdChlLm1vb24ubGluZSk6IiIpKyI8YnI+IitvdChzKSsiPC9kaXY+PC9kaXY+Ijt2YXIgbCxjLGg9RGF0ZS5ub3coKT5hLnN0YXJ0KzE4ZTUsaz1oJiZlLmhvdXJzWzBdfHxhLmJlZCxTPWEucHJlY2lwPj0uMSxUPVt7azpoPyJSaWdodCBub3ciOiJCZWR0aW1lIFx4YjcgMTAgUE0iLHY6KGs/RXQoay5zMXx8ay5zNiwhMCk6IiIpK1N0KGs/ay50Om51bGwpLHM6az9udWxsIT1rLmY/IkZlZWxzIGxpa2UgIitTdChrLmYpOk90KGsudyk6IlBhc3QgYmVkdGltZSJ9LHtrOiJPdmVybmlnaHQgbG93Iix2OlN0KGEubG93KSxzOmEubG93QXQ/IkFyb3VuZCAiK2J0KGEubG93QXQsbik6IkJlZm9yZSBzdW5yaXNlIn0se2s6Ikh1bWlkaXR5Iix2Om51bGwhPWEuaHVtP01hdGgucm91bmQoYS5odW0pKyIlIjoiXHUyMDEzIixzOihsPWEuaHVtLGw8MzA/IkRyeSBhaXIiOmw8PTYwPyJDb21mb3J0YWJsZSI6bDw9NzU/IkEgYml0IGh1bWlkIjoiSHVtaWQiKX0se2s6IldpbmQiLHY6Q3QoYS53aW5kKS5yZXBsYWNlKC8gKG1waHxrbVwvaCkvLCc8c21hbGwgc3R5bGU9ImZvbnQtc2l6ZTouNWVtO21hcmdpbi1sZWZ0OjRweCI+JDE8L3NtYWxsPicpLHM6T3QoYS53aW5kKSsiIG92ZXJuaWdodCJ9LHtrOmEuc25vdz8iU25vdyI6IlJhaW4iLHY6Uz9hLnNub3c/YS5wcmVjaXA8MT8iTGlnaHQiOmEucHJlY2lwPDU/IlN0ZWFkeSI6IkhlYXZ5IjpBdChhLnByZWNpcCkucmVwbGFjZSgvIChpbnxtbSkvLCc8c21hbGwgc3R5bGU9ImZvbnQtc2l6ZTouNWVtO21hcmdpbi1sZWZ0OjRweCI+JDE8L3NtYWxsPicpOiJOb25lIixzOlM/YS5maXJzdFdldD8iU3RhcnRpbmcgYXJvdW5kICIrYnQoYS5maXJzdFdldCxuKToiT24gYW5kIG9mZiBvdmVybmlnaHQiOiJBIGRyeSBuaWdodCJ9LHtrOiJTdW5yaXNlIix2OmUuc3VuLnJpc2U/d3QoZS5zdW4ucmlzZSxuKS5yZXBsYWNlKC8gKEFNfFBNKS8sJzxzbWFsbCBzdHlsZT0iZm9udC1zaXplOi41ZW07bWFyZ2luLWxlZnQ6NXB4Ij4kMTwvc21hbGw+Jyk6Ilx1MjAxMyIsczplLnN1bi5zZXQ/IlN1bnNldCAiK3d0KGUuc3VuLnNldCxuKToiTW9ybmluZyBsaWdodCJ9XTtudCgic2x0Q2FyZHMiKS5pbm5lckhUTUw9VC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybic8ZGl2IGNsYXNzPSJzbHQtY2FyZCI+PGRpdiBjbGFzcz0iayI+JytvdCh0LmspKyc8L2Rpdj48ZGl2IGNsYXNzPSJ2Ij4nK3QudisnPC9kaXY+PGRpdiBjbGFzcz0icyI+JytvdCh0LnMpKyI8L2Rpdj48L2Rpdj4ifSkpLmpvaW4oIiIpLFV0KCksbnQoInNsdFRpcHMiKS5pbm5lckhUTUw9ZnVuY3Rpb24odCl7dmFyIGU9dC5uLGE9W10sbj1UdChlLmxvdykscj0yLjIzNjk0KihlLndpbmR8fDApLGk9dC5zdW4ucmlzZTtpZihuPj02Nj9hLnB1c2goe2k6cCxoOiJLZWVwIHRoZSByb29tIGNvb2wiLHA6Ikl0IHN0YXlzIHdhcm0gb3Zlcm5pZ2h0LCB3aXRoIGEgbG93IG9mICIrU3QoZS5sb3cpKyIuIEEgZmFuIG9yIEFDIGFuZCBsaWdodCwgYnJlYXRoYWJsZSBiZWRkaW5nIGhlbHAga2VlcCB5b3VyIGJlZHJvb20gbmVhciAiKygiRiI9PT1rdCgpPyI2NVx4YjBGIjoiMThceGIwQyIpKyIuIixhOnUuYmVkfSk6bjw9NDU/YS5wdXNoKHtpOmYsaDoiV2FybSBiZWQsIGNvb2wgcm9vbSIscDoiSXQgZHJvcHMgdG8gIitTdChlLmxvdykrIiB0b25pZ2h0LiBLZWVwIHRoZSByb29tIGNvb2wgYnV0IHdhcm0geW91ciBiZWQgZmlyc3QuIEEgaGVhdGluZyBwYWQgZm9yIGEgZmV3IG1pbnV0ZXMgYmVmb3JlIGJlZCBtYWtlcyBpdCBjb3p5LiIsYTp1LnBhZH0pOmEucHVzaCh7aTpwLGg6IkFuIGVhc3kgbmlnaHQgZm9yIHRoZSB0aGVybW9zdGF0IixwOiJBICIrUnQoZS5sb3cpKyIgbG93IG9mICIrU3QoZS5sb3cpKyIuIE1vc3QgcGVvcGxlIHNsZWVwIGJlc3QgaW4gYSBjb29sIHJvb20sIGFyb3VuZCAiKygiRiI9PT1rdCgpPyI2MCB0byA2N1x4YjBGIjoiMTYgdG8gMTlceGIwQyIpKyIuIn0pLGUudGh1bmRlcj9hLnB1c2goe2k6YixoOiJTdG9ybXMgcG9zc2libGUiLHA6IlRodW5kZXIgbWF5IHJvbGwgdGhyb3VnaCBvdmVybmlnaHQuIFNvZnQgd2hpdGUgbm9pc2Ugb3IgZWFycGx1Z3MgY2FuIHRha2UgdGhlIGVkZ2Ugb2ZmLiJ9KTpyPj0xOD9hLnB1c2goe2k6eCxoOiJBIGd1c3R5IG5pZ2h0IixwOiJXaW5kIHVwIHRvICIrQ3QoZS53aW5kKSsiLiBXaGl0ZSBub2lzZSBjYW4gY292ZXIgcmF0dGxlcyBhbmQgZ3VzdHMuIn0pOmUud2V0JiZlLnByZWNpcD49LjMmJmEucHVzaCh7aTp2LGg6ZS5zbm93PyJTbm93IG9uIHRoZSB3YXkiOiJSYWluIG92ZXJuaWdodCIscDooZS5zbm93PyJTbm93IGlzIGxpa2VseSI6IlJhaW4gaXMgbGlrZWx5IikrKGUuZmlyc3RXZXQ/IiBmcm9tIGFib3V0ICIrYnQoZS5maXJzdFdldCxkLnBsYWNlLnR6KToiIikrIi4gQ2xvc2UgdGhlIHdpbmRvd3MgYmVmb3JlIGJlZCIrKGUuc25vdz8iIGFuZCBrZWVwIGEgd2FybSBsYXllciBjbG9zZS4iOiIuIE1hbnkgcGVvcGxlIGZpbmQgdGhlIHNvdW5kIHNvb3RoaW5nLiIpfSksdC5tb29uLms+PS44JiZlLmNsb3VkPDUwP2EucHVzaCh7aTp5LGg6IkJyaWdodCBtb29ubGlnaHQiLHA6dC5tb29uLm5hbWUrIiwgIitNYXRoLnJvdW5kKDEwMCp0Lm1vb24uaykrIiUgbGl0LCB3aXRoIG1vc3RseSBjbGVhciBza2llcy4gQ2xvc2UgdGhlIGN1cnRhaW5zIG9yIHdlYXIgYW4gZXllIG1hc2sgdG8ga2VlcCBpdCBkYXJrLiIsYTp1Lm1hc2t9KTplLmh1bT49NzI/YS5wdXNoKHtpOnYsaDoiSHVtaWQgYWlyIixwOiJIdW1pZGl0eSBhcm91bmQgIitNYXRoLnJvdW5kKGUuaHVtKSsiJSB0b25pZ2h0LiBBIGZhbiBvciBhIGRlaHVtaWRpZmllciBrZWVwcyB0aGUgYWlyIGZlZWxpbmcgZnJlc2guIn0pOmUuaHVtPD0zMCYmYS5wdXNoKHtpOmcsaDoiRHJ5IGFpciIscDoiSHVtaWRpdHkgZGlwcyB0byBhYm91dCAiK01hdGgucm91bmQoZS5odW0pKyIlLiBBIGh1bWlkaWZpZXIgY2FuIG1ha2UgdGhlIGFpciBlYXNpZXIgdG8gYnJlYXRoZS4ifSksYS5sZW5ndGg8MyYmaSl7dmFyIG89aHQoaSxkLnBsYWNlLnR6KTsoby5oPDZ8fDY9PT1vLmgmJm8ubWk8PTMwKSYmYS5wdXNoKHtpOncsaDoiRWFybHkgbGlnaHQiLHA6IlN1bnJpc2UgaXMgYXQgIit3dChpLGQucGxhY2UudHopKyIuIEJsYWNrb3V0IGN1cnRhaW5zIG9yIGFuIGV5ZSBtYXNrIGhlbHAgaWYgeW91IGxpa2UgdG8gc2xlZXAgaW4uIixhOnUubWFza30pfWEubGVuZ3RoPDMmJmEucHVzaCh7aTpNLGg6IldpbmQgZG93biBhdCA5OjMwIixwOiJEaW0gdGhlIGxpZ2h0cyBhbmQgcHV0IHRoZSBwaG9uZSBhd2F5IGhhbGYgYW4gaG91ciBiZWZvcmUgYmVkLiBZb3VyIGJvZHkgdGFrZXMgdGhlIGhpbnQuIn0pO3ZhciBzPXt9O3JldHVybiBhLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQuYSYmc1t0LmEuaHJlZl0mJmRlbGV0ZSB0LmEsdC5hJiYoc1t0LmEuaHJlZl09MSksITB9KSkuc2xpY2UoMCwzKX0oZC5tKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybic8ZGl2IGNsYXNzPSJzbHQtdGlwIj48ZGl2IGNsYXNzPSJ0aSI+Jyt0LmkrIjwvZGl2PjxoMz4iK290KHQuaCkrIjwvaDM+PHA+IitvdCh0LnApKyI8L3A+IisodC5hPyc8YSBjbGFzcz0iZ28iIGhyZWY9IicrdC5hLmhyZWYrJyI+JytvdCh0LmEubGFiZWwpKyIgJiM4NTk0OzwvYT4iOiIiKSsiPC9kaXY+In0pKS5qb2luKCIiKSxkLnBsYWNlLnR6LG50KCJzbHRXZWVrIikuaW5uZXJIVE1MPWQubS53ZWVrLm1hcCgoZnVuY3Rpb24odCxlKXt2YXIgYSxuPTA9PT1lPyJUb25pZ2h0IjooYT10LmtleSxuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgiZW4tVVMiLHt3ZWVrZGF5OiJsb25nIix0aW1lWm9uZToiVVRDIn0pLmZvcm1hdCh2dChhKSkpLnNsaWNlKDAsMykscj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoImVuLVVTIix7bW9udGg6InNob3J0IixkYXk6Im51bWVyaWMiLHRpbWVab25lOiJVVEMifSkuZm9ybWF0KHZ0KHQpKX0odC5rZXkpLGk9bVt0LmNhdF18fCJDbGVhciI7cmV0dXJuIHQud2V0JiZ0LnByZWNpcD49LjMmJiF0LnNub3cmJihpKz0iIFx4YjcgIitBdCh0LnByZWNpcCkpLCc8ZGl2IGNsYXNzPSJzbHQtd3IiPjxkaXY+PGRpdiBjbGFzcz0iZG4iPicrbisnPC9kaXY+PGRpdiBjbGFzcz0iZGQiPicrcisiPC9kaXY+PC9kaXY+IitFdCh0LnN5bSwhMCkrJzxkaXYgY2xhc3M9ImNvbmQiPicrb3QoaSkrIjxkaXY+IitJdCh0LnNjb3JlKSsnPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0ibXAiPicrV3QodC5tb29uRGVnLDksITEpK290KFB0KHQubW9vbkRlZykpKyc8L2Rpdj48ZGl2IGNsYXNzPSJsbyI+PHNtYWxsPkxvdzwvc21hbGw+JytTdCh0LmxvdykrIjwvZGl2PjwvZGl2PiJ9KSkuam9pbigiIiksYz1rdCgpLFtdLmZvckVhY2guY2FsbCh0LnF1ZXJ5U2VsZWN0b3JBbGwoIi5zbHQtdW5pdCBidXR0b24iKSwoZnVuY3Rpb24odCl7dC5zZXRBdHRyaWJ1dGUoImFyaWEtcHJlc3NlZCIsdC5nZXRBdHRyaWJ1dGUoImRhdGEtdSIpPT09Yz8idHJ1ZSI6ImZhbHNlIil9KSksZnVuY3Rpb24oKXtpZihkLm0mJmQucGxhY2Upe3ZhciB0PWQubS5uLGU9ZC5tLmN1cnx8ZC5tLmhvdXJzWzBdfHx0LmJlZCxhPWU/ZS50OnQubG93LG49ZT9lLnMxfHxlLnM2OnQuc3ltO2lmKCJudW1iZXIiPT10eXBlb2YgYSl7dmFyIHI9Im51bWJlciI9PXR5cGVvZiB0Lmxvdz90LmxvdzphLGk9dC5zeW18fG58fCIiO3J0KCJzbHRfcGlsbCIse2xhdDpkLnBsYWNlLmxhdC50b0ZpeGVkKDIpLGxvbjpkLnBsYWNlLmxvbi50b0ZpeGVkKDIpLHQ6YSxzOm58fCIiLGxvOnIsbHM6aSxhdDpEYXRlLm5vdygpfSk7dmFyIG89ZnVuY3Rpb24oKXtyZXR1cm4hIXdpbmRvdy5zbGVlcG1XeCYmKHdpbmRvdy5zbGVlcG1XeC5zZXQoe3Q6YSxzOm4sbG86cixsczppLG46ZC5wbGFjZS5uLGM6ZC5wbGFjZS5jLEY6IkYiPT09a3QoKX0pLCEwKX07aWYoIW8oKSl2YXIgcz0wLGw9c2V0SW50ZXJ2YWwoKGZ1bmN0aW9uKCl7KG8oKXx8KytzPjQwKSYmY2xlYXJJbnRlcnZhbChsKX0pLDI1MCl9fX0oKX1mdW5jdGlvbiBVdCgpe3ZhciB0PWQubSxlPWQucGxhY2UudHosYT10LmhvdXJzLG49bnQoInNsdEhvdXJzIik7aWYoYS5sZW5ndGgpe3ZhciByPShuLmNsaWVudFdpZHRofHw3MDApLTIyLGk9TWF0aC5tYXgoNjAsTWF0aC5mbG9vcihyL2EubGVuZ3RoKSksbz1hLmxlbmd0aCppLHM9YS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnR9KSksbD1NYXRoLm1pbi5hcHBseShudWxsLHMpLGM9TWF0aC5tYXguYXBwbHkobnVsbCxzKSx1PU1hdGgubWF4KGMtbCwzKSxoPWEubWFwKChmdW5jdGlvbih0LGUpe3JldHVybltlKmkraS8yLDMwKzI4KigxLSh0LnQtbCkvdSldfSkpLG09JzxzdmcgY2xhc3M9InNsdC1jdXJ2ZSIgd2lkdGg9IicrbysnIiBoZWlnaHQ9IjcwIiB2aWV3Qm94PSIwIDAgJytvKycgNzAiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cG9seWxpbmUgcG9pbnRzPSInK2gubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdFswXS50b0ZpeGVkKDEpKyIsIit0WzFdLnRvRml4ZWQoMSl9KSkuam9pbigiICIpKyciLz4nK2gubWFwKChmdW5jdGlvbih0LGUpe3JldHVybic8Y2lyY2xlIGN4PSInK3RbMF0udG9GaXhlZCgxKSsnIiBjeT0iJyt0WzFdLnRvRml4ZWQoMSkrJyIgcj0iMi42Ii8+PHRleHQgeD0iJyt0WzBdLnRvRml4ZWQoMSkrJyIgeT0iJysodFsxXS05KS50b0ZpeGVkKDEpKyciIHRleHQtYW5jaG9yPSJtaWRkbGUiPicrU3QoYVtlXS50KSsiPC90ZXh0PiJ9KSkuam9pbigiIikrIjwvc3ZnPiIscD10Lm4uc3RhcnQsZj10Lm4uZW5kLHY9dC5zdW4ucmlzZT90LnN1bi5yaXNlLmdldFRpbWUoKTpudWxsLGc9YS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBhPXQuZC5nZXRUaW1lKCksbj1NYXRoLmFicyhhLXApPDE4ZTU/IkJlZHRpbWUiOnYmJk1hdGguYWJzKGEtdik8MThlNT8iU3VucmlzZSI6IiI7cmV0dXJuJzxkaXYgY2xhc3M9InNsdC1oJysobj8iIG1hcmsiOiIiKSsnIiBzdHlsZT0id2lkdGg6JytpKyJweDtmbGV4LWJhc2lzOiIraSsncHgiPicrRXQodC5zMSkrJzxzcGFuIGNsYXNzPSJodCI+Jysobnx8YnQodC5kLGUpKSsiPC9zcGFuPjwvZGl2PiJ9KSkuam9pbigiIikseT0tMSx3PS0xO2EuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt2YXIgYT10LmQuZ2V0VGltZSgpO2E+PXAtMThlNSYmYTw9ZisxOGU1JiYoeTwwJiYoeT1lKSx3PWUpfSkpO3ZhciBiPXk+PTA/JzxkaXYgY2xhc3M9InNsdC1iYW5kIiBzdHlsZT0ibGVmdDonKyh5KmkrMikrInB4O3dpZHRoOiIrKCh3LXkrMSkqaS00KSsncHgiPjxzcGFuPlNsZWVwIHdpbmRvdzwvc3Bhbj48L2Rpdj4nOiIiO24uaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJzbHQtaGdyaWQiIHN0eWxlPSJ3aWR0aDonK28rJ3B4Ij4nK2IrbSsnPGRpdiBjbGFzcz0ic2x0LWhyb3ciPicrZysiPC9kaXY+PC9kaXY+In1lbHNlIG4uaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJzbHQtZXJyIj5Ib3VyLWJ5LWhvdXIgZGV0YWlsIHN0YXJ0cyB0aGlzIGV2ZW5pbmcuPC9kaXY+J31mdW5jdGlvbiBxdCh0KXtyZXR1cm4gZC5wbGFjZT10LGQuYXV0b1VuaXR8fChkLmF1dG9Vbml0PXQuYyYmIWxbdC5jXT8iQyI6IkYiKSxudCgic2x0UGxhY2UiKS50ZXh0Q29udGVudD1qdCh0KSxmdW5jdGlvbih0KXtpZihzKXJldHVybiBQcm9taXNlLnJlc29sdmUoT2JqZWN0LmFzc2lnbih7bmlnaHQ6eHQodC50eil9LHMpKTt2YXIgZT10LnR6LGE9eHQoZSksbj1mdChhLDEpLGk9dC5sYXQudG9GaXhlZCgyKSxvPXQubG9uLnRvRml4ZWQoMiksbD0ic2x0OiIraSsiLCIrbysiOiIrYSxjPWl0KGwpO2lmKGMmJkRhdGUubm93KCktYy50PDE4ZTUpcmV0dXJuIFByb21pc2UucmVzb2x2ZShjLmQpO3ZhciB1PSJsYXQ9IitpKyImbG9uPSIrbyxkPWVuY29kZVVSSUNvbXBvbmVudChwdCh2dChhKSxlKSksaD1lbmNvZGVVUklDb21wb25lbnQocHQodnQobiksZSkpLG09ZnVuY3Rpb24odCl7cmV0dXJuIHQuY2F0Y2goKGZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9KSl9O3JldHVybiBQcm9taXNlLmFsbChbbHQocisibG9jYXRpb25mb3JlY2FzdC8yLjAvY29tcGxldGU/Iit1KSxtKGx0KHIrInN1bnJpc2UvMy4wL3N1bj8iK3UrIiZkYXRlPSIrYSsiJm9mZnNldD0iK2QpKSxtKGx0KHIrInN1bnJpc2UvMy4wL3N1bj8iK3UrIiZkYXRlPSIrbisiJm9mZnNldD0iK2gpKSxtKGx0KHIrInN1bnJpc2UvMy4wL21vb24/Iit1KyImZGF0ZT0iK2ErIiZvZmZzZXQ9IitkKSksbShsdChyKyJzdW5yaXNlLzMuMC9tb29uPyIrdSsiJmRhdGU9IituKyImb2Zmc2V0PSIraCkpXSkudGhlbigoZnVuY3Rpb24odCl7dmFyIGU9e2ZjOnRbMF0sc3VuMTp0WzFdLHN1bjI6dFsyXSxtb29uMTp0WzNdLG1vb24yOnRbNF0sbmlnaHQ6YX07cmV0dXJuIGl0KGwse3Q6RGF0ZS5ub3coKSxkOmV9KSxlfSkpfSh0KS50aGVuKChmdW5jdGlvbihlKXtkLnJhdz1lLGQubT1mdW5jdGlvbih0LGUpe3ZhciBhPWUudHosbj10LmZjLnByb3BlcnRpZXMudGltZXNlcmllcy5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPXQuZGF0YS5pbnN0YW50LmRldGFpbHMsYT10LmRhdGEubmV4dF8xX2hvdXJzLG49dC5kYXRhLm5leHRfNl9ob3VycyxyPXQuZGF0YS5uZXh0XzEyX2hvdXJzO3JldHVybntkOm5ldyBEYXRlKHQudGltZSksdDplLmFpcl90ZW1wZXJhdHVyZSxmOmUuYXBwYXJlbnRfYWlyX3RlbXBlcmF0dXJlLGg6ZS5yZWxhdGl2ZV9odW1pZGl0eSx3OmUud2luZF9zcGVlZCxnOmUud2luZF9zcGVlZF9vZl9ndXN0LGM6ZS5jbG91ZF9hcmVhX2ZyYWN0aW9uLGZvZzplLmZvZ19hcmVhX2ZyYWN0aW9uLHMxOmE/YS5zdW1tYXJ5LnN5bWJvbF9jb2RlOm51bGwscDE6YSYmYS5kZXRhaWxzP2EuZGV0YWlscy5wcmVjaXBpdGF0aW9uX2Ftb3VudDpudWxsLHM2Om4/bi5zdW1tYXJ5LnN5bWJvbF9jb2RlOm51bGwscDY6biYmbi5kZXRhaWxzP24uZGV0YWlscy5wcmVjaXBpdGF0aW9uX2Ftb3VudDpudWxsLG1uNjpuJiZuLmRldGFpbHM/bi5kZXRhaWxzLmFpcl90ZW1wZXJhdHVyZV9taW46bnVsbCxzMTI6cj9yLnN1bW1hcnkuc3ltYm9sX2NvZGU6bnVsbH19KSkscj1EYXRlLm5vdygpLGk9dC5uaWdodCxvPUh0KG4sYSxpLHIpO2lmKCFvKXRocm93IG5ldyBFcnJvcigibm8gZGF0YSIpO3ZhciBzPWZ1bmN0aW9uKHQsZSxhKXt2YXIgbj1bXTtbdC5tb29uMSx0Lm1vb24yXS5mb3JFYWNoKChmdW5jdGlvbih0KXtpZih0JiZ0LnByb3BlcnRpZXMpe3ZhciBlPXQucHJvcGVydGllcztlLm1vb25yaXNlJiZlLm1vb25yaXNlLnRpbWUmJm4ucHVzaCh7azoicmlzZSIsZDpNdChlLm1vb25yaXNlLnRpbWUpfSksZS5tb29uc2V0JiZlLm1vb25zZXQudGltZSYmbi5wdXNoKHtrOiJzZXQiLGQ6TXQoZS5tb29uc2V0LnRpbWUpfSl9fSkpO3ZhciByPXQubW9vbjEmJnQubW9vbjEucHJvcGVydGllcyYmIm51bWJlciI9PXR5cGVvZiB0Lm1vb24xLnByb3BlcnRpZXMubW9vbnBoYXNlP3QubW9vbjEucHJvcGVydGllcy5tb29ucGhhc2U6RHQoZS5zdGFydCsxNDRlNSksaT1uLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZCYmdC5kLmdldFRpbWUoKT49ZS5zdGFydC0xMDhlNSYmdC5kLmdldFRpbWUoKTw9ZS5lbmR9KSkuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5kLWUuZH0pKSxvPSIiO3JldHVybiBpLmxlbmd0aCYmKG89aS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybigicmlzZSI9PT10Lms/IlJpc2VzICI6IlNldHMgIikrd3QodC5kLGEpfSkpLmpvaW4oIiBceGI3ICIpKSx7ZGVnOnIsazp6dChyKSxuYW1lOlB0KHIpLGxpbmU6b319KHQsbyxhKSxsPWZ1bmN0aW9uKHQpe3JldHVybntzZXQ6dC5zdW4xJiZ0LnN1bjEucHJvcGVydGllcyYmdC5zdW4xLnByb3BlcnRpZXMuc3Vuc2V0P010KHQuc3VuMS5wcm9wZXJ0aWVzLnN1bnNldC50aW1lKTpudWxsLHJpc2U6dC5zdW4yJiZ0LnN1bjIucHJvcGVydGllcyYmdC5zdW4yLnByb3BlcnRpZXMuc3VucmlzZT9NdCh0LnN1bjIucHJvcGVydGllcy5zdW5yaXNlLnRpbWUpOm51bGx9fSh0KTtvLnNjb3JlPV90KG8scy5rKTtmb3IodmFyIGM9W10sdT0wO3U8Nzt1Kyspe3ZhciBkPWZ0KGksdSksaD0wPT09dT9vOkh0KG4sYSxkLHIpO2lmKGgmJm51bGwhPWgubG93KXt2YXIgbT0wPT09dT9zLmRlZzpEdChoLnN0YXJ0KzE0NGU1KTtoLm1vb25EZWc9bSxoLnNjb3JlPTA9PT11P28uc2NvcmU6X3QoaCx6dChtKSksYy5wdXNoKGgpfX12YXIgcD1ndChpLDE4LGEpLGY9Z3QoZnQoaSwxKSw5LGEpLHY9bi5maWx0ZXIoKGZ1bmN0aW9uKHQpe3ZhciBlPXQuZC5nZXRUaW1lKCk7cmV0dXJuIHQuczEmJmU+PU1hdGgubWF4KHAsci0yNGU1KSYmZTw9Zn0pKSxnPW51bGw7cmV0dXJuIG4uZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5zMSYmdC5kLmdldFRpbWUoKTw9cisxOGU1JiYoZz10KX0pKSx7bjpvLG1vb246cyxzdW46bCx3ZWVrOmMsaG91cnM6dixjdXI6ZyxrZXk6aSx1cGRhdGVkOnQuZmMucHJvcGVydGllcy5tZXRhJiZ0LmZjLnByb3BlcnRpZXMubWV0YS51cGRhdGVkX2F0fX0oZSx0KSxCdCgpLHplKCl9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpe3dpbmRvdy5jb25zb2xlJiZjb25zb2xlLndhcm4oIltzbHRdIix0KSxmdW5jdGlvbigpe250KCJzbHRIZWFkIikuaW5uZXJIVE1MPSJUaGUgc2t5IGlzIDxlbT5oaWRpbmc8L2VtPiBmb3IgYSBtb21lbnQuIixudCgic2x0U3ViIikudGV4dENvbnRlbnQ9IldlIGNvdWxkIG5vdCByZWFjaCB0aGUgZm9yZWNhc3QgcmlnaHQgbm93LiIsbnQoInNsdENhcmRzIikuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJzbHQtZXJyIiBzdHlsZT0iZ3JpZC1jb2x1bW46MS8tMSI+UGxlYXNlIHRyeSBhZ2FpbiBpbiBhIG1pbnV0ZS48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9InNsdFJldHJ5Ij5UcnkgYWdhaW48L2J1dHRvbj48L2Rpdj4nO3ZhciB0PW50KCJzbHRSZXRyeSIpO3QmJih0Lm9uY2xpY2s9ZnVuY3Rpb24oKXtxdChkLnBsYWNlKX0pfSgpfSkpfWZ1bmN0aW9uIEd0KCl7cmV0dXJuIGQucGxhY2VzUD9kLnBsYWNlc1A6ZT8oZC5wbGFjZXNQPWZldGNoKGUse2NyZWRlbnRpYWxzOiJvbWl0In0pLnRoZW4oKGZ1bmN0aW9uKHQpe2lmKCF0Lm9rKXRocm93IG5ldyBFcnJvcigiSFRUUCAiK3Quc3RhdHVzKTtyZXR1cm4gdC50ZXh0KCl9KSkudGhlbigoZnVuY3Rpb24odCl7dmFyIGU9dC5zcGxpdCgiXG4iKSxhPWVbMV0uc3BsaXQoIiwiKSxuPXt9LHI9W107ZVsyXS5zcGxpdCgiOyIpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhPZigiOiIpO25bdC5zbGljZSgwLGUpXT10LnNsaWNlKGUrMSl9KSk7Zm9yKHZhciBpPTM7aTxlLmxlbmd0aDtpKyspaWYoZVtpXSl7dmFyIG89ZVtpXS5zcGxpdCgifCIpO3IucHVzaCh7bjpvWzBdLHM6WnQob1sxXXx8b1swXSksYTpvWzJdLGM6b1szXSxjbjpvWzJdPyIiOm5bb1szXV18fG9bM10sbGF0OitvWzRdLGxvbjorb1s1XSx0ejphWytvWzZdXSxwb3A6K29bN119KX1yZXR1cm4gZC5wbGFjZXM9cixyfSkpLGQucGxhY2VzUC5jYXRjaCgoZnVuY3Rpb24oKXt9KSksZC5wbGFjZXNQKTooZC5wbGFjZXNQPVByb21pc2UucmVqZWN0KG5ldyBFcnJvcigibm8gbGlzdCIpKSxkLnBsYWNlc1ApfWZ1bmN0aW9uIFp0KHQpe3JldHVybiBTdHJpbmcodCkudG9Mb3dlckNhc2UoKS5ub3JtYWxpemUoIk5GRCIpLnJlcGxhY2UoL1tcdTAzMDAtXHUwMzZmXS9nLCIiKS5yZXBsYWNlKC9bXmEtejAtOSBdKy9nLCIgIikucmVwbGFjZSgvXHMrL2csIiAiKS50cmltKCl9ZnVuY3Rpb24gWXQodCxlKXt2YXIgYT1udWxsLG49MS8wLHI9TWF0aC5jb3ModCpNYXRoLlBJLzE4MCk7cmV0dXJuKGQucGxhY2VzfHxbXSkuZm9yRWFjaCgoZnVuY3Rpb24oaSl7dmFyIG89KGkubG9uLWUpKnIscz1pLmxhdC10LGw9bypvK3Mqcy00ZS00Kk1hdGgubG9nKGkucG9wKzEpO2w8biYmKG49bCxhPWkpfSkpLGF9ZnVuY3Rpb24gS3QoKXtudCgic2x0UGljayIpLmhpZGRlbj0hMCxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3c9IiI7dmFyIHQ9UztzZXRUaW1lb3V0KChmdW5jdGlvbigpe3QmJnQuZm9jdXMmJnQuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KX0pLDApfWZ1bmN0aW9uIEp0KHQsZSl7dmFyIGE9e246dC5uLGE6dC5hfHwiIixjOnQuY3x8IiIsY246dC5jbnx8IiIsbGF0OnQubGF0LGxvbjp0Lmxvbix0ejpjdCh0LnR6KT90LnR6OnV0KCl9O2UmJnJ0KCJzbHRfcGxhY2UiLGEpLEt0KCkscXQoYSl9ZnVuY3Rpb24gUXQoKXtyZXR1cm4gd2luZG93LmlubmVyV2lkdGg8ODIwfWZ1bmN0aW9uIFZ0KHQpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxhKXt2YXIgbj1uZXcgSW1hZ2U7bi5jcm9zc09yaWdpbj0iYW5vbnltb3VzIixuLmRlY29kaW5nPSJhc3luYyIsbi5vbmxvYWQ9ZnVuY3Rpb24oKXtlKG4pfSxuLm9uZXJyb3I9YSxuLnNyYz10fSkpfWZ1bmN0aW9uIFh0KHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO2Uud2lkdGg9dC53aWR0aCxlLmhlaWdodD10LmhlaWdodDt2YXIgYT1lLmdldENvbnRleHQoIjJkIix7d2lsbFJlYWRGcmVxdWVudGx5OiEwfSk7cmV0dXJuIGEuZHJhd0ltYWdlKHQsMCwwKSxhLmdldEltYWdlRGF0YSgwLDAsdC53aWR0aCx0LmhlaWdodCkuZGF0YX1mdW5jdGlvbiAkdCh0LGUsYSl7cmV0dXJuIFQrRS5tZXRhLnBhdGgrZSsiXyIrKCIwMCIrRS5tZXRhLnN0ZXBzW3RdLmYpLnNsaWNlKC0zKSthfWZ1bmN0aW9uIHRlKHQpe3JldHVybiBFLmRhdGFbdF18fChFLmRhdGFbdF09VnQoJHQodCwiZCIsIi5wbmciKSkudGhlbigoZnVuY3Rpb24odCl7Zm9yKHZhciBlPVh0KHQpLGE9dC53aWR0aCp0LmhlaWdodCxuPW5ldyBGbG9hdDMyQXJyYXkoYSkscj1uZXcgRmxvYXQzMkFycmF5KGEpLGk9bmV3IEZsb2F0MzJBcnJheShhKSxvPTA7bzxhO28rKyluW29dPWVbNCpvXS8yNTUqODAtNDAscltvXT1lWzQqbysxXS8yNTUqODAtNDAsaVtvXT1lWzQqbysyXS8yNTUqMTEwLTYwO3JldHVybnt3OnQud2lkdGgsaDp0LmhlaWdodCx1Om4sdjpyLHQ6aX19KSksRS5kYXRhW3RdLmNhdGNoKChmdW5jdGlvbigpe2RlbGV0ZSBFLmRhdGFbdF19KSkpLEUuZGF0YVt0XX1mdW5jdGlvbiBlZSh0KXtyZXR1cm4gRS5leHRyYVt0XXx8KEUuZXh0cmFbdF09VnQoJHQodCwiZSIsIi5wbmciKSkudGhlbigoZnVuY3Rpb24odCl7Zm9yKHZhciBlPVh0KHQpLGE9dC53aWR0aCp0LmhlaWdodCxuPW5ldyBGbG9hdDMyQXJyYXkoYSkscj1uZXcgRmxvYXQzMkFycmF5KGEpLGk9bmV3IEZsb2F0MzJBcnJheShhKSxvPU1hdGgubG9nMXAoNTApLHM9MDtzPGE7cysrKW5bc109ZVs0KnNdLzI1NSo2MCxyW3NdPWVbNCpzKzFdLzI1NSoxMDAsaVtzXT1NYXRoLmV4cG0xKGVbNCpzKzJdLzI1NSpvKTtyZXR1cm57dzp0LndpZHRoLGg6dC5oZWlnaHQsZzpuLGM6cixyOml9fSkpLEUuZXh0cmFbdF0uY2F0Y2goKGZ1bmN0aW9uKCl7ZGVsZXRlIEUuZXh0cmFbdF19KSkpLEUuZXh0cmFbdF19ZnVuY3Rpb24gYWUodCxlLGEsbil7dmFyIHI9dC53LGk9dC5oLG89KGErMTgwKS8zNjAqcjtvPShvJXIrciklcjt2YXIgcz0oOTAtbikvMTgwKihpLTEpO2lmKHM8MHx8cz5pLTEpcmV0dXJuIE5hTjt2YXIgbD1NYXRoLmZsb29yKG8pLGM9KGwrMSklcix1PW8tbCxkPU1hdGguZmxvb3IocyksaD1NYXRoLm1pbihkKzEsaS0xKSxtPXMtZDtyZXR1cm4oZVtkKnIrbF0qKDEtdSkrZVtkKnIrY10qdSkqKDEtbSkrKGVbaCpyK2xdKigxLXUpK2VbaCpyK2NdKnUpKm19ZnVuY3Rpb24gbmUodCxlLGEsbil7aWYoIWV8fGE8PTApcmV0dXJuIHQ7dmFyIHI9e3c6dC53LGg6dC5ofTtyZXR1cm4gbi5mb3JFYWNoKChmdW5jdGlvbihuKXtmb3IodmFyIGk9dFtuXSxvPWVbbl0scz1pLmxlbmd0aCxsPW5ldyBGbG9hdDMyQXJyYXkocyksYz0wO2M8cztjKyspbFtjXT1pW2NdKyhvW2NdLWlbY10pKmE7cltuXT1sfSkpLHJ9ZnVuY3Rpb24gcmUodCxlKXtyZXR1cm4gJHQodCxBW2VdLmYsIi53ZWJwIil9ZnVuY3Rpb24gaWUoKXt2YXIgdD1FLm1hcDtpZih0JiZEKXt2YXIgZTtlPW50KCJzbHRNYXAiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxJPU1hdGgubWF4KDEsTWF0aC5yb3VuZChlLndpZHRoKSksSD1NYXRoLm1heCgxLE1hdGgucm91bmQoZS5oZWlnaHQpKSxfPU1hdGgubWluKDIsd2luZG93LmRldmljZVBpeGVsUmF0aW98fDEpLEQud2lkdGg9SSpfLEQuaGVpZ2h0PUgqXyxELnN0eWxlLndpZHRoPUkrInB4IixELnN0eWxlLmhlaWdodD1IKyJweCIsKFc9RC5nZXRDb250ZXh0KCIyZCIpKS5zZXRUcmFuc2Zvcm0oXywwLDAsXywwLDApLFI9TWF0aC5jZWlsKEkvNikrMSxPPU1hdGguY2VpbChILzYpKzEsaj1uZXcgRmxvYXQzMkFycmF5KFIqTyksQj1uZXcgRmxvYXQzMkFycmF5KFIqTyk7Zm9yKHZhciBhPTA7YTxPO2ErKylmb3IodmFyIG49MDtuPFI7bisrKXt2YXIgcj1hKlIrbixpPXQudW5wcm9qZWN0KFs2Km4sNiphXSk7TWF0aC5hYnMoaS5sYXQpPjg0LjV8fGkubG5nPC0xODB8fGkubG5nPjE4MD8oaltyXT1OYU4sQltyXT1OYU4pOihqW3JdPWkubG5nLEJbcl09aS5sYXQpfVo9RS5zdGlsbD8wOk1hdGgucm91bmQoTWF0aC5taW4oNDIwMCxNYXRoLm1heCg2MDAsSSpILzIzMCkpKSxHPW5ldyBGbG9hdDMyQXJyYXkoMypaKTtmb3IodmFyIG89MDtvPFo7bysrKUdbMypvXT1NYXRoLnJhbmRvbSgpKkksR1szKm8rMV09TWF0aC5yYW5kb20oKSpILEdbMypvKzJdPU1hdGguZmxvb3IoOTAqTWF0aC5yYW5kb20oKSk7Vy5jbGVhclJlY3QoMCwwLEksSCksb2UoKX19ZnVuY3Rpb24gb2UoKXtpZihqJiZFLmN1cil7dmFyIHQ9UipPLGU9RS5jdXI7VSYmVS5sZW5ndGg9PT10fHwoVT1uZXcgRmxvYXQzMkFycmF5KHQpLHE9bmV3IEZsb2F0MzJBcnJheSh0KSk7Zm9yKHZhciBhPS4wNypNYXRoLnBvdygxLjIyLE1hdGgubWF4KDAsRS5tYXAuZ2V0Wm9vbSgpLTIpKSxuPTA7bjx0O24rKyl7dmFyIHI9altuXTtyPT1yPyhVW25dPWFlKGUsZS51LHIsQltuXSkqYSxxW25dPS1hZShlLGUudixyLEJbbl0pKmEpOihVW25dPU5hTixxW25dPU5hTil9fX1mdW5jdGlvbiBzZSgpe2lmKFk9MCxLKXtXLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0iZGVzdGluYXRpb24taW4iLFcuZmlsbFN0eWxlPSJyZ2JhKDAsMCwwLDAuOSkiLFcuZmlsbFJlY3QoMCwwLEksSCksVy5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249InNvdXJjZS1vdmVyIixXLmxpbmVXaWR0aD0xLjE1LFcubGluZUNhcD0icm91bmQiLFcuc3Ryb2tlU3R5bGU9IndpbmQiPT09RS5sYXllcnx8Imd1c3QiPT09RS5sYXllcj8icmdiYSgyNDAsMjQyLDI1NSwwLjg2KSI6InJnYmEoMjQwLDI0MiwyNTUsMC40OCkiLFcuYmVnaW5QYXRoKCk7Zm9yKHZhciB0PTA7dDxaO3QrKyl7dmFyIGU9Myp0LGE9R1tlXSxuPUdbZSsxXSxyPUdbZSsyXSxpPWEvNisuNXwwLG89bi82Ky41fDA7aWYocj45MHx8YTwwfHxuPDB8fGk+PVJ8fG8+PU8pR1tlXT1NYXRoLnJhbmRvbSgpKkksR1tlKzFdPU1hdGgucmFuZG9tKCkqSCxHW2UrMl09MDtlbHNle3ZhciBzPW8qUitpLGw9VVtzXSxjPXFbc107aWYobD09bCl7dmFyIHU9YStsLGQ9bitjO1cubW92ZVRvKGEsbiksVy5saW5lVG8odSxkKSxHW2VdPXUsR1tlKzFdPWQsR1tlKzJdPXIrMX1lbHNlIEdbZV09TWF0aC5yYW5kb20oKSpJLEdbZSsxXT1NYXRoLnJhbmRvbSgpKkgsR1tlKzJdPTB9fVcuc3Ryb2tlKCksWT1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc2UpfX1mdW5jdGlvbiBsZSgpe0t8fEUuc3RpbGx8fCFVfHwhUXx8Snx8ZG9jdW1lbnQuaGlkZGVufHxBW0UubGF5ZXJdLmxpdmV8fChLPSEwLFk9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHNlKSl9ZnVuY3Rpb24gY2UodCl7Sz0hMSxZJiZjYW5jZWxBbmltYXRpb25GcmFtZShZKSxZPTAsdCYmVyYmVy5jbGVhclJlY3QoMCwwLEksSCl9ZnVuY3Rpb24gdWUoKXtyZXR1cm4oZC5wbGFjZXx8YSkudHp9ZnVuY3Rpb24gZGUodCl7dmFyIGU9aHQobmV3IERhdGUodCksdWUoKSkua2V5LGE9aHQobmV3IERhdGUsdWUoKSkua2V5O3JldHVybiBlPT09YT8iVG9kYXkiOmU9PT1mdChhLDEpPyJUb21vcnJvdyI6ZHQodWUoKSx7d2Vla2RheToic2hvcnQifSkuZm9ybWF0KG5ldyBEYXRlKHQpKX1mdW5jdGlvbiBoZSh0KXt2YXIgZT1odChuZXcgRGF0ZSh0KSx1ZSgpKSxhPWh0KG5ldyBEYXRlLHVlKCkpLmtleTtyZXR1cm4oZS5rZXk9PT1hJiZlLmg+PTE4fHxlLmtleT09PWZ0KGEsMSkmJmUuaDw3PyJUb25pZ2h0IjpkZSh0KSkrIiAiK2J0KG5ldyBEYXRlKHQpLHVlKCkpfWZ1bmN0aW9uIG1lKHQpe3ZhciBlPUUuaHJzLGE9ZS5sZW5ndGgtMTtpZih0Pj1lW2FdKXJldHVyblthLGEsMF07Zm9yKHZhciBuPTA7bjxhO24rKylpZih0PD1lW24rMV0pcmV0dXJuW24sbisxLCh0LWVbbl0pLyhlW24rMV0tZVtuXSldO3JldHVyblswLDAsMF19ZnVuY3Rpb24gcGUodCl7RS5oPU1hdGgubWF4KDAsTWF0aC5taW4oRS5obWF4LHQpKTt2YXIgZT1udCgic2x4U2xpZGVyIiksYT1BW0UubGF5ZXJdLmxpdmU7YXx8KGUudmFsdWU9RS5oLGZlKCksbnQoInNseFdoZW4iKS50ZXh0Q29udGVudD1oZShFLnQwKzM2ZTUqRS5oKSxlLnNldEF0dHJpYnV0ZSgiYXJpYS12YWx1ZXRleHQiLG50KCJzbHhXaGVuIikudGV4dENvbnRlbnQpKTt2YXIgbj1tZShFLmgpLHI9blswXSxpPW5bMV0sbz1uWzJdO2F8fGZ1bmN0aW9uKHQsZSxhKXt2YXIgbj1FLm1hcDtpZihuJiZuLmdldFNvdXJjZSgid3hhIikpe3ZhciByPXQrIjoiK2UrIjoiK0UubGF5ZXIrIjoiK0UubWV0YS5ydW47aWYobi5nZXRMYXllcigid3hiIikmJm4uc2V0UGFpbnRQcm9wZXJ0eSgid3hiIiwicmFzdGVyLW9wYWNpdHkiLGU9PT10PzA6LjkyKmEpLEUucGFpciE9PXIpe0UucGFpcj1yO3ZhciBpPXJlKHQsRS5sYXllciksbz1yZShlLEUubGF5ZXIpO1Byb21pc2UuYWxsKFtWdChpKSxWdChvKV0pLnRoZW4oKGZ1bmN0aW9uKCl7RS5wYWlyPT09ciYmbi5nZXRTb3VyY2UoInd4YSIpJiYobi5nZXRTb3VyY2UoInd4YSIpLnVwZGF0ZUltYWdlKHt1cmw6aX0pLG4uZ2V0U291cmNlKCJ3eGIiKS51cGRhdGVJbWFnZSh7dXJsOm99KSl9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7fSkpfX19KHIsaSxvKSxQcm9taXNlLmFsbChbdGUociksdGUoaSldKS50aGVuKChmdW5jdGlvbih0KXt2YXIgZT1tZShFLmgpO2VbMF09PT1yJiZlWzFdPT09aSYmKEUuY3VyPW8+MD9uZSh0WzBdLHRbMV0sZVsyXSxbInUiLCJ2IiwidCJdKTp0WzBdLCFqJiZFLm1hcCYmRCYmIUo/aWUoKTpvZSgpLGxlKCkpfSkpLmNhdGNoKChmdW5jdGlvbigpe30pKSxQcm9taXNlLmFsbChbZWUociksZWUoaSldKS50aGVuKChmdW5jdGlvbih0KXt2YXIgZT1tZShFLmgpO2VbMF09PT1yJiZlWzFdPT09aSYmKEUuZXh0PW8+MD9uZSh0WzBdLHRbMV0sZVsyXSxbImciLCJjIiwiciJdKTp0WzBdKX0pKS5jYXRjaCgoZnVuY3Rpb24oKXt9KSksRS5tZXRhLnN0ZXBzW2krMV0mJih0ZShpKzEpLmNhdGNoKChmdW5jdGlvbigpe30pKSxhfHxWdChyZShpKzEsRS5sYXllcikpLmNhdGNoKChmdW5jdGlvbigpe30pKSl9ZnVuY3Rpb24gZmUoKXt2YXIgdD1udCgic2x4U2xpZGVyIiksZT0rdC5tYXh8fDE7dC5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1wIiwrdC52YWx1ZS9lKjEwMCsiJSIpfWZ1bmN0aW9uIHZlKCl7dmFyIGU9bnQoInNseFNsaWRlciIpLGE9bnQoInNseERheXMiKTt0LnF1ZXJ5U2VsZWN0b3IoIi5zbHgtdGltZSIpLmNsYXNzTGlzdC5yZW1vdmUoInN0aWxsIiksZS5taW49MCxlLm1heD1FLmhtYXgsZS5zdGVwPTEsZS52YWx1ZT1FLmgsZmUoKSxudCgic2x4V2hlbiIpLnRleHRDb250ZW50PWhlKEUudDArMzZlNSpFLmgpLGUuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwiRm9yZWNhc3QgdGltZSIpLGUuc2V0QXR0cmlidXRlKCJhcmlhLXZhbHVldGV4dCIsbnQoInNseFdoZW4iKS50ZXh0Q29udGVudCk7Zm9yKHZhciBuPVtdLHI9IiIsaT0wO2k8PUUuaG1heDtpKyspe3ZhciBvPUUudDArMzZlNSppLHM9aHQobmV3IERhdGUobyksdWUoKSkua2V5O3MhPT1yJiYobi5wdXNoKFtpL0UuaG1heCoxMDAsZGUobyldKSxyPXMpfXZhciBsPU1hdGgubWF4KDEsYS5jbGllbnRXaWR0aCksYz1mdW5jdGlvbih0KXtyZXR1cm4oMTIrNi44KnRbMV0ubGVuZ3RoKS9sKjEwMH0sdT1bXSxkPS0xO24ubGVuZ3RoPjEmJm5bMV1bMF08YyhuWzBdKSsxLjUmJm4uc2hpZnQoKSxuLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7KDA9PT1lfHx0WzBdPj1kJiZ0WzBdK2ModCk8PTEwMikmJih1LnB1c2godCksZD10WzBdK2ModCkrMS41KX0pKSxhLmlubmVySFRNTD11Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuJzxzcGFuIHN0eWxlPSJsZWZ0OicrdFswXS50b0ZpeGVkKDIpKyclIj4nK290KHRbMV0pKyI8L3NwYW4+In0pKS5qb2luKCIiKSxudCgic2x4TmlnaHRzIikuaW5uZXJIVE1MPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9RS50MCxhPUUudDArMzZlNSpFLmhtYXgsbj1odChuZXcgRGF0ZShlKSx1ZSgpKS5rZXkscj0tMTtyPDk7cisrKXt2YXIgaT1mdChuLHIpLG89Z3QoaSwyMix1ZSgpKSxzPWd0KGZ0KGksMSksNyx1ZSgpKTtpZighKHM8ZXx8bz5hKSl7dmFyIGw9TWF0aC5tYXgoMCwoby1lKS8oYS1lKSksYz1NYXRoLm1pbigxLChzLWUpLyhhLWUpKTtjPmwmJnQucHVzaChbMTAwKmwsMTAwKihjLWwpXSl9fXJldHVybiB0fSgpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuJzxpIHN0eWxlPSJsZWZ0OicrdFswXS50b0ZpeGVkKDIpKyIlO3dpZHRoOiIrdFsxXS50b0ZpeGVkKDIpKyclIj48L2k+J30pKS5qb2luKCIiKSxudCgic2x4TmlnaHRzIikuaGlkZGVuPSExfWZ1bmN0aW9uIGdlKCl7dmFyIGU9bnQoInNseFNsaWRlciIpLGE9RS5yYWQuZnJhbWVzLmxlbmd0aDt0LnF1ZXJ5U2VsZWN0b3IoIi5zbHgtdGltZSIpLmNsYXNzTGlzdC5yZW1vdmUoInN0aWxsIiksZS5taW49MCxlLm1heD1NYXRoLm1heCgwLGEtMSksZS5zdGVwPTEsZS52YWx1ZT1FLnJpLGZlKCksbnQoInNseE5pZ2h0cyIpLmhpZGRlbj0hMCxudCgic2x4V2hlbiIpLnRleHRDb250ZW50PSJSYWRhciAiK3l0KG5ldyBEYXRlKEUucmFkLmZyYW1lc1tFLnJpXS50KSx1ZSgpKSxlLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsIlJhZGFyIHRpbWUiKSxudCgic2x4RGF5cyIpLmlubmVySFRNTD1hPjE/JzxzcGFuIHN0eWxlPSJsZWZ0OjAlIj4nKzEwKihhLTEpKycgbWluIGFnbzwvc3Bhbj48c3BhbiBzdHlsZT0ibGVmdDo5OS45OSU7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpIj5MYXRlc3Q8L3NwYW4+JzoiIn1mdW5jdGlvbiB5ZSgpe3QucXVlcnlTZWxlY3RvcigiLnNseC10aW1lIikuY2xhc3NMaXN0LmFkZCgic3RpbGwiKSxudCgic2x4RGF5cyIpLmlubmVySFRNTD0iIixudCgic2x4TmlnaHRzIikuaGlkZGVuPSEwO3ZhciBlPWQucGxhY2V8fGEsbj1FLnJhZCYmRS5yYWQuc2F0JiYoZS5sb248LTEwNT9FLnJhZC5zYXQud2VzdDpFLnJhZC5zYXQuZWFzdCk7bnQoInNseFdoZW4iKS50ZXh0Q29udGVudD1uPyJTYXRlbGxpdGUgIit5dChuZXcgRGF0ZShuKSx1ZSgpKToiU2F0ZWxsaXRlIn1mdW5jdGlvbiB3ZSh0KXt2YXIgZT1FLm1hcDtpZihFLnJhZCYmRS5yYWQuZnJhbWVzLmxlbmd0aCYmZSYmZS5nZXRTb3VyY2UoInJhZCIpKXtFLnJpPU1hdGgubWF4KDAsTWF0aC5taW4oRS5yYWQuZnJhbWVzLmxlbmd0aC0xLHQpKSxudCgic2x4U2xpZGVyIikudmFsdWU9RS5yaSxmZSgpO3ZhciBhPVQrRS5yYWQucGF0aCtFLnJhZC5mcmFtZXNbRS5yaV0uZjtWdChhKS50aGVuKChmdW5jdGlvbigpe2UuZ2V0U291cmNlKCJyYWQiKSYmZS5nZXRTb3VyY2UoInJhZCIpLnVwZGF0ZUltYWdlKHt1cmw6YX0pfSkpLmNhdGNoKChmdW5jdGlvbigpe30pKSxudCgic2x4V2hlbiIpLnRleHRDb250ZW50PSJSYWRhciAiK3l0KG5ldyBEYXRlKEUucmFkLmZyYW1lc1tFLnJpXS50KSx1ZSgpKX19ZnVuY3Rpb24gYmUodCl7RS5wbGF5aW5nPXQ7dmFyIGU9bnQoInNseFBsYXkiKTtlLmNsYXNzTGlzdC50b2dnbGUoIm9uIix0KSxlLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsdD8iUGF1c2UiOiJQbGF5IHRoZSBmb3JlY2FzdCIpLGNsZWFySW50ZXJ2YWwoRS50aW1lciksdCYmKCJyYWRhciI9PT1FLmxheWVyP0UudGltZXI9c2V0SW50ZXJ2YWwoKGZ1bmN0aW9uKCl7RS5yYWQmJndlKEUucmk+PUUucmFkLmZyYW1lcy5sZW5ndGgtMT8wOkUucmkrMSl9KSw2NTApOkUudGltZXI9c2V0SW50ZXJ2YWwoKGZ1bmN0aW9uKCl7cGUoRS5oPj1FLmhtYXg/MDpFLmgrMSl9KSwzMDApKX1mdW5jdGlvbiB4ZSh0LGUpe3ZhciBhPXQ8Nj8ibm9uZSI6dD45ND8idHJhbnNsYXRlWCgtMTAwJSkiOiJ0cmFuc2xhdGVYKC01MCUpIjtyZXR1cm4nPHNwYW4gc3R5bGU9ImxlZnQ6Jyt0LnRvRml4ZWQoMSkrIiU7dHJhbnNmb3JtOiIrYSsnIj4nK2UrIjwvc3Bhbj4ifWZ1bmN0aW9uIE1lKHQsZSxhKXtyZXR1cm4gYT1udWxsPT1hP3RbMF1bMF06YSwibGluZWFyLWdyYWRpZW50KDkwZGVnLCIrdC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiJyZ2IoIit0WzFdLmpvaW4oIiwiKSsiKSAiKygodFswXS1hKS8oZS1hKSoxMDApLnRvRml4ZWQoMSkrIiUifSkpLmpvaW4oIiwiKSsiKSJ9ZnVuY3Rpb24ga2UoKXt2YXIgdD1FLmxheWVyLGU9JzxkaXYgY2xhc3M9InR0bCI+JytBW3RdLnR0bCsiPC9kaXY+IixhPSJGIj09PWt0KCk7ZSs9IndpbmQiPT09dHx8Imd1c3QiPT09dD8nPGRpdiBjbGFzcz0iYmFyIiBzdHlsZT0iYmFja2dyb3VuZDonK01lKEYsNTAsMCkrJyI+PC9kaXY+PGRpdiBjbGFzcz0idGlja3MiPicrKGE/WzAsMjAsNDAsNjAsODBdLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4geGUodC8yLjIzNjk0LzUwKjEwMCx0Kyg0PT09ZT8iIG1waCI6IiIpKX0pKTpbMCwzMCw2MCw5MCwxMjBdLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4geGUodC8zLjYvNTAqMTAwLHQrKDQ9PT1lPyIga20vaCI6IiIpKX0pKSkuam9pbigiIikrIjwvZGl2PiI6InRlbXAiPT09dD8nPGRpdiBjbGFzcz0iYmFyIiBzdHlsZT0iYmFja2dyb3VuZDonK01lKEwsNDgsLTQ1KSsnIj48L2Rpdj48ZGl2IGNsYXNzPSJ0aWNrcyI+JysoYT9bLTIwLDEwLDQwLDcwLDEwMF0ubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiB4ZSgoNSoodC0zMikvOSs0NSkvOTMqMTAwLHQrKDQ9PT1lPyImZGVnO0YiOiImZGVnOyIpKX0pKTpbLTMwLC0xMCwxMCwzMF0ubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiB4ZSgodCs0NSkvOTMqMTAwLHQrKDM9PT1lPyImZGVnO0MiOiImZGVnOyIpKX0pKSkuam9pbigiIikrIjwvZGl2PiI6InJhaW4iPT09dD8nPGRpdiBjbGFzcz0iYmFyIiBzdHlsZT0iYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcscmdiKDUyLDg4LDE1MCkscmdiKDY2LDEyOCwyMjUpIDMwJSxyZ2IoODgsNzIsMjI2KSA2MCUscmdiKDE4OCw4MCwyMDYpIDg1JSxyZ2IoMjM2LDE0MiwyMzYpKSI+PC9kaXY+PGRpdiBjbGFzcz0idGlja3MiPicreGUoMCwiTGlnaHQiKSt4ZSg1MCwiTW9kZXJhdGUiKSt4ZSgxMDAsIkhlYXZ5IikrIjwvZGl2PiI6ImNsb3VkIj09PXQ/JzxkaXYgY2xhc3M9ImJhciIgc3R5bGU9ImJhY2tncm91bmQ6JytNZShOLDEwMCwwKSsnIj48L2Rpdj48ZGl2IGNsYXNzPSJ0aWNrcyI+Jyt4ZSgwLCJDbGVhciIpK3hlKDUwLCJQYXJ0bHkiKSt4ZSgxMDAsIk92ZXJjYXN0IikrIjwvZGl2PiI6InJhZGFyIj09PXQ/JzxkaXYgY2xhc3M9ImJhciIgc3R5bGU9ImJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLCMwNEU5RTcsIzAxOUZGNCAxNCUsIzAyRkQwMiAyOCUsIzAxQzUwMSA0MCUsI0ZERjgwMiA1NSUsI0ZEOTUwMCA3MCUsI0ZEMDAwMCA4MiUsI0JDMDAwMCA5MCUsI0Y4MDBGRCkiPjwvZGl2PjxkaXYgY2xhc3M9InRpY2tzIj4nK3hlKDAsIkxpZ2h0IikreGUoNTAsIkhlYXZ5IikreGUoMTAwLCJTdG9ybXMiKSsnPC9kaXY+PGRpdiBjbGFzcz0ibnQiPkxvd2VyIDQ4IFVTIHN0YXRlcywgdGhlIGxhc3QgaG91ci48L2Rpdj4nOic8ZGl2IGNsYXNzPSJudCIgc3R5bGU9Im1hcmdpbjowIj5DbG91ZHMgZ2xvdyB3aGl0ZSBhdCBuaWdodCwgYW5kIGNpdHkgbGlnaHRzIHNoaW5lIHRocm91Z2ggd2hlcmUgdGhlIHNreSBpcyBjbGVhci4gQW1lcmljYXMgb25seS48L2Rpdj4nLG50KCJzbHhMZWdlbmQiKS5pbm5lckhUTUw9ZX1mdW5jdGlvbiBTZSh0LGUpe3ZhciBhPUUubWFwO2EmJmEuZ2V0TGF5ZXIodCkmJmEuc2V0TGF5b3V0UHJvcGVydHkodCwidmlzaWJpbGl0eSIsZT8idmlzaWJsZSI6Im5vbmUiKX1mdW5jdGlvbiBUZShlKXt2YXIgYT1FLmxheWVyLG49RS5tYXA7RS5sYXllcj1lO3RyeXtsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgic2x0X3d4bCIsZSl9Y2F0Y2godCl7fWJlKCExKSxbXS5mb3JFYWNoLmNhbGwodC5xdWVyeVNlbGVjdG9yQWxsKCIuc2x4LWxheWVycyBidXR0b24iKSwoZnVuY3Rpb24odCl7dmFyIGE9dC5nZXRBdHRyaWJ1dGUoImRhdGEtbCIpPT09ZTt0LmNsYXNzTGlzdC50b2dnbGUoIm9uIixhKSx0LnNldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIixhPyJ0cnVlIjoiZmFsc2UiKX0pKSxrZSgpO3ZhciByPUFbZV0ubGl2ZTtpZihTZSgid3hhIiwhciksU2UoInd4YiIsIXIpLFNlKCJyYWQiLCJyYWRhciI9PT1yKSxTZSgic2F0dyIsInNhdCI9PT1yKSxTZSgic2F0ZSIsInNhdCI9PT1yKSwicmFkYXIiPT09cilpZihjZSghMCksRS5yYWQmJkUucmFkLmZyYW1lcy5sZW5ndGgpe24mJiFuLmdldExheWVyKCJyYWQiKSYmZnVuY3Rpb24oKXt2YXIgdD1FLm1hcDtpZih0JiZFLnJhZCYmRS5yYWQuZnJhbWVzLmxlbmd0aCYmIXQuZ2V0U291cmNlKCJyYWQiKSl7dmFyIGU9RS5yYWQuYmJveDt0LmFkZFNvdXJjZSgicmFkIix7dHlwZToiaW1hZ2UiLHVybDpUK0UucmFkLnBhdGgrRS5yYWQuZnJhbWVzW0UucmFkLmZyYW1lcy5sZW5ndGgtMV0uZixjb29yZGluYXRlczpbW2VbMF0sZVszXV0sW2VbMl0sZVszXV0sW2VbMl0sZVsxXV0sW2VbMF0sZVsxXV1dfSksdC5hZGRMYXllcih7aWQ6InJhZCIsdHlwZToicmFzdGVyIixzb3VyY2U6InJhZCIscGFpbnQ6eyJyYXN0ZXItb3BhY2l0eSI6Ljk1LCJyYXN0ZXItcmVzYW1wbGluZyI6ImxpbmVhciIsInJhc3Rlci1mYWRlLWR1cmF0aW9uIjowfX0sImNvYXN0Iil9fSgpLHdlKEUucmFkLmZyYW1lcy5sZW5ndGgtMSksZ2UoKTt2YXIgbz1uJiZuLmdldENlbnRlcigpO28mJihvLmxuZzwtMTMwfHxvLmxuZz4tNjB8fG8ubGF0PDE4fHxvLmxhdD41NikmJm4uZWFzZVRvKHtjZW50ZXI6Wy05NiwzOF0sem9vbTpNYXRoLm1heChuLmdldFpvb20oKSwzLjIpLGR1cmF0aW9uOjcwMH0pfWVsc2UgbnQoInNseFdoZW4iKS50ZXh0Q29udGVudD0iUmFkYXIiO2Vsc2Uic2F0Ij09PXI/KGNlKCEwKSxuJiYhbi5nZXRMYXllcigic2F0ZSIpJiZmdW5jdGlvbigpe3ZhciB0PUUubWFwO3QmJkUucmFkJiZFLnJhZC5zYXQmJiF0LmdldFNvdXJjZSgic2F0ZSIpJiZbWyJzYXR3IiwiR09FUy1XZXN0X0FCSV9HZW9Db2xvciIsRS5yYWQuc2F0Lndlc3RdLFsic2F0ZSIsIkdPRVMtRWFzdF9BQklfR2VvQ29sb3IiLEUucmFkLnNhdC5lYXN0XV0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZVsyXSYmKHQuYWRkU291cmNlKGVbMF0se3R5cGU6InJhc3RlciIsdGlsZXM6W2krZVsxXSsiL2RlZmF1bHQvIitlWzJdKyIvR29vZ2xlTWFwc0NvbXBhdGlibGVfTGV2ZWw3L3t6fS97eX0ve3h9LnBuZyJdLHRpbGVTaXplOjI1NixtYXh6b29tOjd9KSx0LmFkZExheWVyKHtpZDplWzBdLHR5cGU6InJhc3RlciIsc291cmNlOmVbMF0scGFpbnQ6eyJyYXN0ZXItZmFkZS1kdXJhdGlvbiI6MH19LCJjb2FzdCIpKX0pKX0oKSx5ZSgpKTooRS5wYWlyPSIiLHZlKCkscGUoRS5oKSxhJiZBW2FdJiZBW2FdLmxpdmUmJmxlKCkpfWZ1bmN0aW9uIENlKHQsZSxhLG4pe3ZhciByPU1hdGguUEkvMTgwLGk9TWF0aC5zaW4oKGEtdCkqci8yKSxvPU1hdGguc2luKChuLWUpKnIvMikscz1pKmkrTWF0aC5jb3ModCpyKSpNYXRoLmNvcyhhKnIpKm8qbztyZXR1cm4gMTI3NDIqTWF0aC5hc2luKE1hdGgubWluKDEsTWF0aC5zcXJ0KHMpKSl9ZnVuY3Rpb24gQWUodCl7aWYoRS5jdXIpe3ZhciBlPXQubG5nTGF0LndyYXAoKSxhPWUubG5nLG49ZS5sYXQ7aWYoIShNYXRoLmFicyhuKT44NSkpe3ZhciByLGk9RS5jdXIsbz1hZShpLGkudSxhLG4pLHM9YWUoaSxpLnYsYSxuKSxsPWFlKGksaS50LGEsbiksYz1NYXRoLnNxcnQobypvK3MqcyksdT0ocj0xODAqTWF0aC5hdGFuMigtbywtcykvTWF0aC5QSSxbIk4iLCJOTkUiLCJORSIsIkVORSIsIkUiLCJFU0UiLCJTRSIsIlNTRSIsIlMiLCJTU1ciLCJTVyIsIldTVyIsIlciLCJXTlciLCJOVyIsIk5OVyJdW01hdGgucm91bmQoKHIlMzYwKzM2MCklMzYwLzIyLjUpJTE2XSksaD1mdW5jdGlvbih0LGUpe3ZhciBhPWQucGxhY2VzP1l0KGUsdCk6bnVsbCxuPVN0cmluZy5mcm9tQ2hhckNvZGUoMTc2KTtpZihhKXt2YXIgcj1DZShlLHQsYS5sYXQsYS5sb24pO2lmKHI8PTMwKXJldHVybntuOmEubixjOmEsazpyfTtpZihyPD0xMjApe3ZhciBpPWEsbz1yLHM9TWF0aC5taW4oMTIwLHIrNTApO3JldHVybiBkLnBsYWNlcy5mb3JFYWNoKChmdW5jdGlvbihhKXtpZihhLnBvcD5pLnBvcCYmTWF0aC5hYnMoYS5sYXQtZSk8MS4yKXt2YXIgbj1DZShlLHQsYS5sYXQsYS5sb24pO248PXMmJihpPWEsbz1uKX19KSkse246Ik5lYXIgIitpLm4sYzppLGs6b319fXJldHVybntuOk1hdGguYWJzKGUpLnRvRml4ZWQoMSkrbisoZT49MD8iTiI6IlMiKSsiLCAiK01hdGguYWJzKHQpLnRvRml4ZWQoMSkrbisodD49MD8iRSI6IlciKSxjOmEsazoxZTl9fShhLG4pLG09RS5leHQscD1tP2FlKG0sbS5nLGEsbik6TmFOLGY9bT9hZShtLG0uYyxhLG4pOk5hTix2PW0/TWF0aC5tYXgoMCxhZShtLG0ucixhLG4pKTpOYU4sZz12IT12PyIiOnY8LjE/Ik5vIHJhaW4iOih2PDIuNT8iTGlnaHQiOnY8Ny42PyJNb2RlcmF0ZSI6IkhlYXZ5IikrIiByYWluIix5PVtdO3A9PXAmJnkucHVzaCgiR3VzdHMgIitDdChwKSksZj09ZiYmeS5wdXNoKCJDbG91ZHMgIitNYXRoLnJvdW5kKGYpKyIlIik7dmFyIHc9JzxkaXYgY2xhc3M9InNseC1wbiI+JytvdChoLm4pKyc8L2Rpdj48ZGl2IGNsYXNzPSJzbHgtcHciPicrb3QoaGUoRS50MCszNmU1KkUuaCkpKyc8L2Rpdj48ZGl2IGNsYXNzPSJzbHgtcHYiPjxiPicrU3QobCkra3QoKSsiPC9iPiBXaW5kICIrQ3QoYykrIiBmcm9tIHRoZSAiK3UrIjwvZGl2PiIrKHkubGVuZ3RoPyc8ZGl2IGNsYXNzPSJzbHgtcHIiPicreS5qb2luKCIgXHhiNyAiKSsiPC9kaXY+IjoiIikrKGc/JzxkaXYgY2xhc3M9InNseC1wciI+JytnKyI8L2Rpdj4iOiIiKSsnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJzbHgtZ28iPlRvbmlnaHQmIzgyMTc7cyBmb3JlY2FzdCBoZXJlICYjODU5NDs8L2J1dHRvbj4nO0UucG9wJiZFLnBvcC5yZW1vdmUoKSxFLnBvcD1uZXcgbWFwbGlicmVnbC5Qb3B1cCh7Y2xhc3NOYW1lOiJzbHgtcG9wIixtYXhXaWR0aDoiMjkwcHgiLG9mZnNldDoxMH0pLnNldExuZ0xhdChbYSxuXSkuc2V0SFRNTCh3KS5hZGRUbyhFLm1hcCk7dmFyIGI9RS5wb3AuZ2V0RWxlbWVudCgpJiZFLnBvcC5nZXRFbGVtZW50KCkucXVlcnlTZWxlY3RvcigiLnNseC1nbyIpO2ImJmIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLChmdW5jdGlvbigpe0UucG9wJiZFLnBvcC5yZW1vdmUoKSxmdW5jdGlvbih0LGUsYSl7R3QoKS5jYXRjaCgoZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0pKS50aGVuKChmdW5jdGlvbigpe3ZhciBuPWEuY3x8KGQucGxhY2VzP1l0KHQsZSk6bnVsbCk7SnQoe246YS5rPD0zMCYmbj9uLm46YS5uLGE6YS5rPD0xMjAmJm4/bi5hOiIiLGM6bj9uLmM6IiIsY246YS5rPD0xMjAmJm4/bi5jbjoiIixsYXQ6dCxsb246ZSx0ejpuP24udHo6dXQoKX0sITApO3RyeXt3aW5kb3cuc2Nyb2xsVG8oe3RvcDowLGJlaGF2aW9yOiJzbW9vdGgifSl9Y2F0Y2godCl7d2luZG93LnNjcm9sbFRvKDAsMCl9fSkpfShuLGEsaCl9KSl9fX1mdW5jdGlvbiBGZSh0LGUsYSxuKXtyZXR1cm57aWQ6dCx0eXBlOiJzeW1ib2wiLHNvdXJjZToicGxhY2VzIixtaW56b29tOmUsZmlsdGVyOlsiYWxsIixbIj09IixbImdldCIsImsiXSwicCJdLFsiPiIsWyJnZXQiLCJyIl0sYV0sWyI8PSIsWyJnZXQiLCJyIl0sbl1dLGxheW91dDpWLHBhaW50Olh9fWZ1bmN0aW9uIExlKCl7cmV0dXJuIGZldGNoKEMrImxhdGVzdC5qc29uIix7Y2FjaGU6Im5vLWNhY2hlIixjcmVkZW50aWFsczoib21pdCJ9KS50aGVuKChmdW5jdGlvbih0KXtpZighdC5vayl0aHJvdyBuZXcgRXJyb3IoIkhUVFAgIit0LnN0YXR1cyk7cmV0dXJuIHQuanNvbigpfSkpfWZ1bmN0aW9uIE5lKCl7cmV0dXJuIGZldGNoKEMrInJhZGFyL3JhZGFyLmpzb24iLHtjYWNoZToibm8tY2FjaGUiLGNyZWRlbnRpYWxzOiJvbWl0In0pLnRoZW4oKGZ1bmN0aW9uKHQpe2lmKCF0Lm9rKXRocm93IG5ldyBFcnJvcigiSFRUUCAiK3Quc3RhdHVzKTtyZXR1cm4gdC5qc29uKCl9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9KSl9ZnVuY3Rpb24gRWUodCl7dmFyIGU9RS50MD9FLnQwKzM2ZTUqRS5oOkRhdGUubm93KCk7RS5tZXRhPXQsRS5kYXRhPXt9LEUuZXh0cmE9e30sRS5wYWlyPSIiLEUudDA9bmV3IERhdGUodC5zdGVwc1swXS50KS5nZXRUaW1lKCksRS5ocnM9dC5zdGVwcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybihuZXcgRGF0ZSh0LnQpLmdldFRpbWUoKS1FLnQwKS8zNmU1fSkpLEUuaG1heD1FLmhyc1tFLmhycy5sZW5ndGgtMV0sRS5oPU1hdGgubWF4KDAsTWF0aC5taW4oRS5obWF4LE1hdGguZmxvb3IoKGUtRS50MCkvMzZlNSkpKX1mdW5jdGlvbiBQZSgpe3ZhciB0PUUubWV0YSYmbmV3IERhdGUoRS5tZXRhLm1hZGUpLGU9bnQoInNseFVwZCIpO2lmKGUpaWYodCYmIWlzTmFOKHQpKXt2YXIgYT1NYXRoLm1heCgxLE1hdGgucm91bmQoKERhdGUubm93KCktdC5nZXRUaW1lKCkpLzZlNCkpO2UudGV4dENvbnRlbnQ9IlVwZGF0ZWQgIisoYTw2MD9hKyIgbWluIjpNYXRoLmZsb29yKGEvNjApKyIgaHIiKSsiIGFnbyJ9ZWxzZSBlLnRleHRDb250ZW50PSIifWZ1bmN0aW9uIHplKHQpe3ZhciBlPUUubWFwO2lmKGUmJmQucGxhY2Upe3ZhciBhPWQucGxhY2U7aWYoIWQubWUpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO24uY2xhc3NOYW1lPSJzbHQtbWUiLG4uaW5uZXJIVE1MPSI8Yj48L2I+IixkLm1lPW5ldyBtYXBsaWJyZWdsLk1hcmtlcih7ZWxlbWVudDpuLGFuY2hvcjoiY2VudGVyIn0pfWQubWUuZ2V0RWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3IoImIiKS50ZXh0Q29udGVudD1hLm4sZC5tZS5zZXRMbmdMYXQoW2EubG9uLGEubGF0XSkuYWRkVG8oZSksdD9lLmp1bXBUbyh7Y2VudGVyOlthLmxvbixhLmxhdF19KTplLmZseVRvKHtjZW50ZXI6W2EubG9uLGEubGF0XSx6b29tOk1hdGgubWF4KGUuZ2V0Wm9vbSgpLFF0KCk/Mzo0KSxkdXJhdGlvbjo5MDB9KSwhQVtFLmxheWVyXS5saXZlJiZFLm1ldGE/dmUoKToic2F0Ij09PUUubGF5ZXImJnllKCl9fX0oKTs=
Mỗi chiếc Sleepm đều được giới thiệu qua người thân — một người thân cận với bạn, nói cùng ngôn ngữ với bạn, và cũng đang sử dụng sản phẩm này. Có hỗ trợ trả góp.
(function(){ var cv=document.getElementById('dust'),cx=cv.getContext('2d'),W,H; function size(){W=cv.width=innerWidth;H=cv.height=innerHeight}size();addEventListener('resize',size); var P=[];var GOLD=[255,217,138],PERI=[159,176,255],WHITE=[240,243,255]; function spawn(x,y,opt){opt=opt||{};var c=[GOLD,PERI,WHITE][Math.random()*3|0]; P.push({x:x,y:y,vx:(Math.random()-.5)*(opt.sp||1.2),vy:(Math.random()-.5)*1.2,life:1,decay:.012+Math.random()*.02,s:opt.s||(1+Math.random()*2.2),c:c,tw:Math.random()*6.28});} addEventListener('mousemove',function(e){for(var i=0;i<3;i++)spawn(e.clientX+(Math.random()-.5)*10,e.clientY+(Math.random()-.5)*10,{sp:.9});}); setInterval(function(){spawn(Math.random()*W,Math.random()*H*.6,{sp:.3,s:1});},300); function loop(){cx.clearRect(0,0,W,H);cx.globalCompositeOperation='lighter'; for(var i=P.length-1;i>=0;i--){var p=P[i];p.x+=p.vx;p.y+=p.vy;p.life-=p.decay;p.tw+=.25; if(p.life<=0){P.splice(i,1);continue} var a=p.life*(.55+.45*Math.sin(p.tw)); var g=cx.createRadialGradient(p.x,p.y,0,p.x,p.y,p.s*3.2); g.addColorStop(0,'rgba('+p.c[0]+','+p.c[1]+','+p.c[2]+','+a+')');g.addColorStop(1,'rgba('+p.c[0]+','+p.c[1]+','+p.c[2]+',0)'); cx.fillStyle=g;cx.beginPath();cx.arc(p.x,p.y,p.s*3.2,0,6.28);cx.fill();} requestAnimationFrame(loop);}loop(); var io=new IntersectionObserver(function(es){es.forEach(function(e){if(e.isIntersecting)e.target.classList.add('awake');});},{threshold:.15}); document.querySelectorAll('.awaken').forEach(function(el){io.observe(el)}); })();
(function(){var btn=document.querySelector('.lb-btn');if(btn){btn.addEventListener('click',function(e){e.preventDefault();document.documentElement.classList.toggle('lbopen');});}var menu=document.querySelector('.lb-menu');if(menu){menu.addEventListener('click',function(){document.documentElement.classList.remove('lbopen');});}})();
(function(){var root=document.getElementById('lloydLang');if(!root)return;var btn=root.querySelector('.ll-btn');btn.addEventListener('click',function(e){e.stopPropagation();root.classList.toggle('ll-open');});document.addEventListener('click',function(){root.classList.remove('ll-open');});function sw(code){var done=false;if(window.Weglot){if(Weglot.switchTo){Weglot.switchTo(code);done=true;}}if(!done){var a=document.getElementById('weglot-language-'+code);if(a){a.click();}}}var opts=root.querySelectorAll('.ll-opt');opts.forEach(function(o){o.addEventListener('click',function(e){e.preventDefault();var code=o.getAttribute('data-wg');sw(code);var el=root.querySelector('.ll-cur');if(el){el.textContent=code.toUpperCase();}root.classList.remove('ll-open');});});function setCur(){var cur='';if(window.Weglot){if(Weglot.getCurrentLang){cur=Weglot.getCurrentLang();}}if(cur){var el=root.querySelector('.ll-cur');if(el){el.textContent=(''+cur).toUpperCase();}}}setTimeout(setCur,900);})();
Mọi thứ kết nối với nhau như thế nào
Hãy ngắm bầu trời tối nay. Ghi lại giấc ngủ của bạn. Tìm chiếc giường phù hợp với bạn. Gặp gỡ gia đình. Tiếp tục hành trình và quay lại vào tối nay.
Quét bằng camera điện thoại — Ứng dụng dành cho iPhone đã có mặt trên App Store, còn phiên bản dành cho Android đã có mặt trên Google Play.
Hoặc nhấn vào đây trên điện thoại của bạn →