ICAudXYtZW1iZWR7CiAgICAtLW9yYW5nZTojREI4QjNCOyAtLWNyZWFtOiNGNEVFREQ7IC0taW5rOiMyNDFDMTM7IC0tdGVhbC1kYXJrOiMyMzRBNDM7IC0tdGVhbDojMzM2NjVDOwogIH0KICAudXYtZW1iZWQsIC51di1lbWJlZCAqeyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0KICAudXYtZW1iZWR7CiAgICBtYXJnaW46MCBhdXRvOyBwYWRkaW5nOjIwcHggNXZ3IDYwcHg7IGZvbnQtZmFtaWx5OidJQk0gUGxleCBNb25vJyxtb25vc3BhY2U7IG1heC13aWR0aDoxMTAwcHg7CiAgfQoKICAudXYtZW1iZWQgLnV2LWp1bXBuYXZ7CiAgICBkaXNwbGF5OmZsZXg7IGdhcDoxMnB4OyBmbGV4LXdyYXA6d3JhcDsganVzdGlmeS1jb250ZW50OmNlbnRlcjsKICAgIG1hcmdpbjowIDAgNDRweDsgcGFkZGluZzowOwogIH0KICAudXYtZW1iZWQgLnV2LWp1bXBuYXYgYXsKICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrOyBmb250LWZhbWlseTonSUJNIFBsZXggTW9ubycsbW9ub3NwYWNlOyBmb250LXdlaWdodDo2MDA7IGZvbnQtc2l6ZToxMi41cHg7CiAgICBsZXR0ZXItc3BhY2luZzowLjA2ZW07IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgY29sb3I6dmFyKC0taW5rKTsKICAgIGJvcmRlcjoycHggc29saWQgdmFyKC0taW5rKTsgcGFkZGluZzoxMHB4IDIwcHg7IGJvcmRlci1yYWRpdXM6OTk5cHg7IHRleHQtZGVjb3JhdGlvbjpub25lOwogICAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xNXMgZWFzZSwgY29sb3IgLjE1cyBlYXNlOwogIH0KICAudXYtZW1iZWQgLnV2LWp1bXBuYXYgYTpob3ZlcnsgYmFja2dyb3VuZDp2YXIoLS1pbmspOyBjb2xvcjp2YXIoLS1jcmVhbSk7IH0KCiAgLnV2LWVtYmVkIC51di1jYXRlZ29yeXsgbWFyZ2luLWJvdHRvbTo0OHB4OyB9CiAgLnV2LWVtYmVkIC51di1jYXRlZ29yeS1sYWJlbHsKICAgIHRleHQtYWxpZ246Y2VudGVyOyBmb250LWZhbWlseTonTGlicmUgQmFza2VydmlsbGUnLHNlcmlmOyBmb250LXdlaWdodDo3MDA7CiAgICBmb250LXNpemU6Y2xhbXAoMjBweCwgMi42dncsIDI2cHgpOyBjb2xvcjp2YXIoLS1pbmspOyBtYXJnaW46MCAwIDZweDsKICB9CiAgLnV2LWVtYmVkIC51di1jYXRlZ29yeS1ydWxlewogICAgd2lkdGg6NTZweDsgaGVpZ2h0OjNweDsgYmFja2dyb3VuZDp2YXIoLS1vcmFuZ2UpOyBib3JkZXItcmFkaXVzOjJweDsKICAgIG1hcmdpbjowIGF1dG8gMjZweDsKICB9CgogIC51di1lbWJlZCAudXYtc2Vhc29uewogICAgYm9yZGVyOjJweCBzb2xpZCB2YXIoLS1pbmspOyBib3JkZXItcmFkaXVzOjE0cHg7IG1hcmdpbi1ib3R0b206MThweDsKICAgIGJhY2tncm91bmQ6dmFyKC0tY3JlYW0pOyBvdmVyZmxvdzpoaWRkZW47CiAgICBib3gtc2hhZG93OjAgNHB4IDEwcHggcmdiYSgzNiwyOCwxOSwwLjEpOwogIH0KCiAgLnV2LWVtYmVkIC51di1zZWFzb24taGVhZGVyewogICAgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGN1cnNvcjpwb2ludGVyOyBiYWNrZ3JvdW5kOm5vbmU7IGJvcmRlcjowOwogICAgd2lkdGg6MTAwJTsgdGV4dC1hbGlnbjpsZWZ0OyBmb250LWZhbWlseTppbmhlcml0OyBwYWRkaW5nOjA7CiAgfQogIC51di1lbWJlZCAudXYtc2Vhc29uLWNvdmVyewogICAgcG9zaXRpb246cmVsYXRpdmU7IHdpZHRoOjEwMCU7IGFzcGVjdC1yYXRpbzoxNi84LjM7IG92ZXJmbG93OmhpZGRlbjsKICAgIGJhY2tncm91bmQ6dmFyKC0taW5rKTsKICB9CiAgLnV2LWVtYmVkIC51di1zZWFzb24tY292ZXIgaW1newogICAgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0OjA7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyBvYmplY3QtZml0OmNvdmVyOwogICAgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGVhc2U7CiAgfQogIC51di1lbWJlZCAudXYtc2Vhc29uLWhlYWRlcjpob3ZlciAudXYtc2Vhc29uLWNvdmVyIGltZ3sgdHJhbnNmb3JtOnNjYWxlKDEuMDMpOyB9CiAgLnV2LWVtYmVkIC51di1zZWFzb24tdGl0bGVyb3d7CiAgICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IGdhcDoxNnB4OwogICAgcGFkZGluZzoxOHB4IDI0cHg7CiAgfQogIC51di1lbWJlZCAudXYtc2Vhc29uLXRpdGxld3JhcHsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDo0cHg7IH0KICAudXYtZW1iZWQgLnV2LXNlYXNvbi10aXRsZXsKICAgIGZvbnQtZmFtaWx5OidMaWJyZSBCYXNrZXJ2aWxsZScsc2VyaWY7IGZvbnQtd2VpZ2h0OjcwMDsgZm9udC1zaXplOmNsYW1wKDE4cHgsIDIuNHZ3LCAyMnB4KTsKICAgIGNvbG9yOnZhcigtLWluayk7IG1hcmdpbjowOwogIH0KICAudXYtZW1iZWQgLnV2LXNlYXNvbi1tZXRhewogICAgZm9udC1mYW1pbHk6J0lCTSBQbGV4IE1vbm8nLG1vbm9zcGFjZTsgZm9udC1zaXplOjExcHg7IGxldHRlci1zcGFjaW5nOjAuMTJlbTsKICAgIHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgY29sb3I6dmFyKC0tdGVhbC1kYXJrKTsgbWFyZ2luOjA7CiAgfQogIC51di1lbWJlZCAudXYtY2hldnJvbnsKICAgIGZsZXgtc2hyaW5rOjA7IHdpZHRoOjIycHg7IGhlaWdodDoyMnB4OyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjVzIGVhc2U7CiAgfQogIC51di1lbWJlZCAudXYtY2hldnJvbiBwYXRoeyBmaWxsOm5vbmU7IHN0cm9rZTp2YXIoLS1pbmspOyBzdHJva2Utd2lkdGg6Mi40OyBzdHJva2UtbGluZWNhcDpyb3VuZDsgc3Ryb2tlLWxpbmVqb2luOnJvdW5kOyB9CiAgLnV2LWVtYmVkIC51di1zZWFzb24uaXMtb3BlbiAudXYtY2hldnJvbnsgdHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpOyB9CgogIC51di1lbWJlZCAudXYtc2Vhc29uLmlzLWxvY2tlZCAudXYtc2Vhc29uLWNvdmVyIGltZ3sgZmlsdGVyOmJyaWdodG5lc3MoMC41NSk7IH0KICAudXYtZW1iZWQgLnV2LXNlYXNvbi5pcy1sb2NrZWQgLnV2LXNlYXNvbi1oZWFkZXI6aG92ZXIgLnV2LXNlYXNvbi1jb3ZlciBpbWd7IHRyYW5zZm9ybTpzY2FsZSgxLjAzKTsgZmlsdGVyOmJyaWdodG5lc3MoMC40NSk7IH0KICAudXYtZW1iZWQgLnV2LWxvY2stb3ZlcmxheXsKICAgIHBvc2l0aW9uOmFic29sdXRlOyB0b3A6NTAlOyBsZWZ0OjUwJTsgdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpOwogICAgd2lkdGg6NDRweDsgaGVpZ2h0OjQ0cHg7IGJvcmRlci1yYWRpdXM6NTAlOwogICAgYmFja2dyb3VuZDpyZ2JhKDI0NCwyMzgsMjI5LDAuOTIpOyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsKICB9CiAgLnV2LWVtYmVkIC51di1sb2NrLW92ZXJsYXkgc3ZneyB3aWR0aDoyMHB4OyBoZWlnaHQ6MjBweDsgfQogIC51di1lbWJlZCAudXYtbG9jay1vdmVybGF5IHBhdGgsIC51di1lbWJlZCAudXYtbG9jay1vdmVybGF5IHJlY3R7CiAgICBmaWxsOm5vbmU7IHN0cm9rZTp2YXIoLS1pbmspOyBzdHJva2Utd2lkdGg6Mjsgc3Ryb2tlLWxpbmVjYXA6cm91bmQ7IHN0cm9rZS1saW5lam9pbjpyb3VuZDsKICB9CiAgLnV2LWVtYmVkIC51di1zZWFzb24tbWV0YS1sb2NrZWR7CiAgICBjb2xvcjp2YXIoLS1vcmFuZ2UpOyBmb250LXdlaWdodDo3MDA7CiAgfQoKICAudXYtZW1iZWQgLnV2LXNlYXNvbi1ib2R5ewogICAgbWF4LWhlaWdodDowOyBvdmVyZmxvdzpoaWRkZW47IHRyYW5zaXRpb246bWF4LWhlaWdodCAuMzVzIGVhc2U7CiAgfQogIC51di1lbWJlZCAudXYtc2Vhc29uLWJvZHktaW5uZXJ7CiAgICBwYWRkaW5nOjRweCAyNHB4IDI2cHg7CiAgICBkaXNwbGF5OmdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7IGdhcDoxNnB4OwogIH0KICBAbWVkaWEgKG1pbi13aWR0aDo1NjBweCl7CiAgICAudXYtZW1iZWQgLnV2LXNlYXNvbi1ib2R5LWlubmVyeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDIsIDFmcik7IH0KICB9CiAgQG1lZGlhIChtaW4td2lkdGg6ODYwcHgpewogICAgLnV2LWVtYmVkIC51di1zZWFzb24tYm9keS1pbm5lcnsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgzLCAxZnIpOyB9CiAgfQoKICAudXYtZW1iZWQgLnV2LWVwewogICAgZGlzcGxheTpibG9jazsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGNvbG9yOmluaGVyaXQ7CiAgfQogIC51di1lbWJlZCAudXYtZXAtdGh1bWJ7CiAgICBwb3NpdGlvbjpyZWxhdGl2ZTsgd2lkdGg6MTAwJTsgYXNwZWN0LXJhdGlvOjE2Lzk7IGJvcmRlci1yYWRpdXM6MTBweDsgb3ZlcmZsb3c6aGlkZGVuOwogICAgYmFja2dyb3VuZDp2YXIoLS1pbmspOyBib3gtc2hhZG93OjAgNHB4IDEwcHggcmdiYSgzNiwyOCwxOSwwLjE4KTsKICAgIHRyYW5zaXRpb246dHJhbnNmb3JtIC4xNXMgZWFzZSwgYm94LXNoYWRvdyAuMTVzIGVhc2U7CiAgfQogIC51di1lbWJlZCAudXYtZXA6aG92ZXIgLnV2LWVwLXRodW1iewogICAgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7IGJveC1zaGFkb3c6MCAxMHB4IDE4cHggcmdiYSgzNiwyOCwxOSwwLjI2KTsKICB9CiAgLnV2LWVtYmVkIC51di1lcC10aHVtYiBpbWd7CiAgICBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6MDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IG9iamVjdC1maXQ6Y292ZXI7CiAgfQogIC51di1lbWJlZCAudXYtZXAtdGh1bWItcGxhY2Vob2xkZXJ7CiAgICBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6MDsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7CiAgICBiYWNrZ3JvdW5kOnZhcigtLXRlYWwpOwogIH0KICAudXYtZW1iZWQgLnV2LWVwLXBsYXlkb3R7CiAgICBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjUwJTsgbGVmdDo1MCU7IHRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTsKICAgIHdpZHRoOjM4cHg7IGhlaWdodDozOHB4OyBib3JkZXItcmFkaXVzOjUwJTsKICAgIGJhY2tncm91bmQ6cmdiYSgyNDQsMjM4LDIyOSwwLjkyKTsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7CiAgfQogIC51di1lbWJlZCAudXYtZXAtcGxheWRvdCBzdmd7IHdpZHRoOjE0cHg7IGhlaWdodDoxNHB4OyBtYXJnaW4tbGVmdDoycHg7IH0KICAudXYtZW1iZWQgLnV2LWVwLXBsYXlkb3QgcGF0aHsgZmlsbDp2YXIoLS1pbmspOyB9CgogIC51di1lbWJlZCAudXYtZXAtdGl0bGV7CiAgICBmb250LWZhbWlseTonSUJNIFBsZXggTW9ubycsbW9ub3NwYWNlOyBmb250LXNpemU6MTIuNXB4OyBmb250LXdlaWdodDo2MDA7CiAgICBjb2xvcjp2YXIoLS1pbmspOyBtYXJnaW46OHB4IDAgMDsgbGluZS1oZWlnaHQ6MS4zNTsKICB9CgogIC51di1lbWJlZCAudXYtbG9hZGluZ3sKICAgIGZvbnQtc2l6ZToxMnB4OyBjb2xvcjp2YXIoLS1pbmspOyBvcGFjaXR5OjAuNTU7IHBhZGRpbmc6MTBweCAwOwogIH0KCiAgLyogVGhlIGhpZGRlbiBXb3JkUHJlc3Mgc291cmNlIGNvbnRlbnQ6IHJlYWQgYnkgSlMgYXQgbG9hZCwgdGhlbiBoaWRkZW4uCiAgICAgVXNlcyBhIHN1YnN0cmluZyBtYXRjaCBzbyBpdCBjYXRjaGVzIGV2ZXJ5IGNhdGVnb3J5J3Mgc291cmNlIGNsYXNzCiAgICAgKHVubG9ja2VkLXZpZGVvLXNvdXJjZS1tb25vc2NlbmUsIC10ZWFjaGVyc2xvdW5nZSwgYW55IGZ1dHVyZSBvbmVzKQogICAgIHdpdGhvdXQgbmVlZGluZyB0byBsaXN0IGVhY2ggb25lIG91dC4gKi8KICBbY2xhc3MqPSJ1bmxvY2tlZC12aWRlby1zb3VyY2UiXXsgZGlzcGxheTpub25lICFpbXBvcnRhbnQ7IH0K
KGZ1bmN0aW9uKCl7CiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgLy8gU0VUVVA6CiAgLy8gQWRkIGEgR3JvdXAgYmxvY2sgYW55d2hlcmUgb24gdGhlIHBhZ2UsIHRhZyBpdCAidW5sb2NrZWQtdmlkZW8tc291cmNlIgogIC8vIChCbG9jayBzZXR0aW5ncyAtPiBBZHZhbmNlZCAtPiBBZGRpdGlvbmFsIENTUyBjbGFzcyhlcykpLiBJbnNpZGUgaXQsCiAgLy8gYWRkIE9ORSBpbm5lciBHcm91cCBibG9jayBwZXIgc2Vhc29uLiBEdXBsaWNhdGUvZGVsZXRlL3Jlb3JkZXIgdGhvc2UKICAvLyB0byBhZGQsIHJlbW92ZSwgb3IgcmVvcmRlciBzZWFzb25zLgogIC8vCiAgLy8gSW5zaWRlIEVBQ0ggc2Vhc29uJ3MgaW5uZXIgR3JvdXAsIGFkZCBleGFjdGx5IHR3byBibG9ja3M6CiAgLy8gICAxLiBBIEhlYWRpbmcgLS0gdGhlIHNlYXNvbiBuYW1lIChlLmcuICJNYWluIFN0cmVldCBTb3VuZHMiKQogIC8vICAgMi4gQSBMaXN0IGJsb2NrIC0tIG9uZSBsaXN0IGl0ZW0gcGVyIGVwaXNvZGUuIEZvciBlYWNoIGl0ZW0sIHNlbGVjdAogIC8vICAgICAgdGhlIGVwaXNvZGUgdGl0bGUgdGV4dCBhbmQgdHVybiBpdCBpbnRvIGEgTElOSyAodGhlIGxpbmsgaWNvbiBpbgogIC8vICAgICAgdGhlIHRvb2xiYXIpIHBvaW50aW5nIHRvIHRoYXQgZXBpc29kZSdzIFlvdVR1YmUgb3IgVmltZW8gVVJMLgogIC8vICAgICAgVGhlIGxpbmtlZCB0ZXh0IGl0c2VsZiBiZWNvbWVzIHRoZSBlcGlzb2RlIHRpdGxlIHNob3duIGhlcmUuCiAgLy8KICAvLyBUaGF0J3MgaXQgLS0gbm8gaW1hZ2VzIHRvIHVwbG9hZC4gWW91VHViZSB0aHVtYm5haWxzIGFyZSBnZW5lcmF0ZWQKICAvLyBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIGxpbms7IFZpbWVvIHRodW1ibmFpbHMgYXJlIGZldGNoZWQgZnJvbSBWaW1lbwogIC8vIHRoZSBmaXJzdCB0aW1lIHlvdSBvcGVuIHRoYXQgc2Vhc29uIChub3Qgb24gcGFnZSBsb2FkKSwgc28gdGhlIHBhZ2UKICAvLyBzdGF5cyBmYXN0IGV2ZW4gd2l0aCBtYW55IHNlYXNvbnMvZXBpc29kZXMuCiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgogIGNvbnN0IHBsYXlJY29uU3ZnID0gJzxzdmcgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNOCA1djE0bDExLTd6Ii8+PC9zdmc+JzsKCiAgZnVuY3Rpb24gcGFyc2VWaWRlb1VybCh1cmwpewogICAgaWYgKCF1cmwpIHJldHVybiBudWxsOwogICAgbGV0IG07CiAgICBtID0gdXJsLm1hdGNoKC8oPzp5b3V0dWJlXC5jb21cL3dhdGNoXD92PXx5b3V0dVwuYmVcL3x5b3V0dWJlXC5jb21cL2VtYmVkXC8pKFthLXpBLVowLTlfLV17Nix9KS8pOwogICAgaWYgKG0pIHJldHVybiB7IHBsYXRmb3JtOiAneW91dHViZScsIGlkOiBtWzFdIH07CiAgICBtID0gdXJsLm1hdGNoKC92aW1lb1wuY29tXC8oPzp2aWRlb1wvKT8oXGQrKS8pOwogICAgaWYgKG0pIHJldHVybiB7IHBsYXRmb3JtOiAndmltZW8nLCBpZDogbVsxXSB9OwogICAgcmV0dXJuIG51bGw7CiAgfQoKICBjb25zdCB2aW1lb1RodW1iQ2FjaGUgPSB7fTsKICBmdW5jdGlvbiB2aW1lb1RodW1iKGlkKXsKICAgIGlmICh2aW1lb1RodW1iQ2FjaGVbaWRdKSByZXR1cm4gdmltZW9UaHVtYkNhY2hlW2lkXTsKICAgIHZpbWVvVGh1bWJDYWNoZVtpZF0gPSBmZXRjaCgnaHR0cHM6Ly92aW1lby5jb20vYXBpL29lbWJlZC5qc29uP3VybD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KCdodHRwczovL3ZpbWVvLmNvbS8nICsgaWQpKQogICAgICAudGhlbihyZXMgPT4geyBpZiAoIXJlcy5vaykgdGhyb3cgbmV3IEVycm9yKCd2aW1lbyBvZW1iZWQgZmFpbGVkJyk7IHJldHVybiByZXMuanNvbigpOyB9KQogICAgICAudGhlbihkYXRhID0+IGRhdGEudGh1bWJuYWlsX3VybCB8fCBudWxsKQogICAgICAuY2F0Y2goKCkgPT4gbnVsbCk7CiAgICByZXR1cm4gdmltZW9UaHVtYkNhY2hlW2lkXTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlRXBpc29kZXNGcm9tTGlzdChsaXN0KXsKICAgIGNvbnN0IGVwaXNvZGVzID0gW107CiAgICBBcnJheS5mcm9tKGxpc3QucXVlcnlTZWxlY3RvckFsbCgnbGknKSkuZm9yRWFjaChsaSA9PiB7CiAgICAgIGNvbnN0IGEgPSBsaS5xdWVyeVNlbGVjdG9yKCdhJyk7CiAgICAgIGlmICghYSkgcmV0dXJuOwogICAgICBjb25zdCB1cmwgPSBhLmdldEF0dHJpYnV0ZSgnaHJlZicpOwogICAgICBjb25zdCB2aWRlbyA9IHBhcnNlVmlkZW9VcmwodXJsKTsKICAgICAgaWYgKCF2aWRlbykgcmV0dXJuOwogICAgICBlcGlzb2Rlcy5wdXNoKHsgdGl0bGU6IGEudGV4dENvbnRlbnQudHJpbSgpLCB1cmwsIHZpZGVvIH0pOwogICAgfSk7CiAgICByZXR1cm4gZXBpc29kZXM7CiAgfQoKICBmdW5jdGlvbiBoaWdoZXN0UmVzU3JjKGltZyl7CiAgICBjb25zdCBmdWxsVXJsID0gaW1nLmdldEF0dHJpYnV0ZSgnZGF0YS1mdWxsLXVybCcpOwogICAgaWYgKGZ1bGxVcmwpIHJldHVybiBmdWxsVXJsOwogICAgY29uc3Qgc3Jjc2V0ID0gaW1nLmdldEF0dHJpYnV0ZSgnc3Jjc2V0Jyk7CiAgICBpZiAoc3Jjc2V0KSB7CiAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBzcmNzZXQuc3BsaXQoJywnKS5tYXAocGFydCA9PiB7CiAgICAgICAgY29uc3QgYml0cyA9IHBhcnQudHJpbSgpLnNwbGl0KC9ccysvKTsKICAgICAgICBjb25zdCB3aWR0aCA9IHBhcnNlSW50KChiaXRzWzFdIHx8ICcnKS5yZXBsYWNlKCd3JywgJycpLCAxMCkgfHwgMDsKICAgICAgICByZXR1cm4geyB1cmw6IGJpdHNbMF0sIHdpZHRoIH07CiAgICAgIH0pOwogICAgICBjYW5kaWRhdGVzLnNvcnQoKGEsIGIpID0+IGIud2lkdGggLSBhLndpZHRoKTsKICAgICAgaWYgKGNhbmRpZGF0ZXMubGVuZ3RoICYmIGNhbmRpZGF0ZXNbMF0udXJsKSByZXR1cm4gY2FuZGlkYXRlc1swXS51cmw7CiAgICB9CiAgICByZXR1cm4gaW1nLnNyYzsKICB9CgogIC8vIFdhbGtzIHRoZSBzb3VyY2UgY29udGVudCBpbiBkb2N1bWVudCBvcmRlciwgcmVnYXJkbGVzcyBvZiBob3cgZGVlcGx5CiAgLy8gbmVzdGVkIGl0IGlzIChhIHNlYXNvbiB3cmFwcGVkIGluIGl0cyBvd24gR3JvdXAsIHNldmVyYWwgc2Vhc29ucwogIC8vIHNoYXJpbmcgb25lIEdyb3VwLCBvciBhIG1peCBvZiBib3RoIG1pZC1yZXN0cnVjdHVyZSkuIFRoaXMgbWF0dGVycwogIC8vIGJlY2F1c2UgTWVtYmVyZnVsIFZpc2liaWxpdHkgY2FuIG9taXQgYW4gZW50aXJlIHNlYXNvbidzIGJsb2NrcyBmcm9tCiAgLy8gdGhlIHBhZ2UgZm9yIHZpc2l0b3JzIHdobyBkb24ndCBoYXZlIHRoYXQgcGxhbiAtLSB3aGF0ZXZlcidzIGxlZnQgaW4KICAvLyB0aGUgRE9NIGlzIGV4YWN0bHkgd2hhdCBzaG91bGQgc2hvdyB1cCBpbiB0aGUgYWNjb3JkaW9uLCBpbiB3aGF0ZXZlcgogIC8vIHN0cnVjdHVyZSBpdCBoYXBwZW5zIHRvIGJlIGluLgogIGZ1bmN0aW9uIGNvbGxlY3RDb250ZW50Tm9kZXMoZWwsIG91dCl7CiAgICBBcnJheS5mcm9tKGVsLmNoaWxkcmVuKS5mb3JFYWNoKGNoaWxkID0+IHsKICAgICAgaWYgKC9eSFsxLTZdJC8udGVzdChjaGlsZC50YWdOYW1lKSkgewogICAgICAgIG91dC5wdXNoKHsgdHlwZTogJ2hlYWRpbmcnLCBlbDogY2hpbGQgfSk7CiAgICAgIH0gZWxzZSBpZiAoY2hpbGQudGFnTmFtZSA9PT0gJ1VMJyB8fCBjaGlsZC50YWdOYW1lID09PSAnT0wnKSB7CiAgICAgICAgb3V0LnB1c2goeyB0eXBlOiAnbGlzdCcsIGVsOiBjaGlsZCB9KTsKICAgICAgfSBlbHNlIGlmIChjaGlsZC50YWdOYW1lID09PSAnSU1HJykgewogICAgICAgIG91dC5wdXNoKHsgdHlwZTogJ2ltYWdlJywgZWw6IGNoaWxkIH0pOwogICAgICB9IGVsc2UgaWYgKGNoaWxkLnRhZ05hbWUgPT09ICdGSUdVUkUnICYmIGNoaWxkLnF1ZXJ5U2VsZWN0b3IoJ2ltZycpICYmICFjaGlsZC5xdWVyeVNlbGVjdG9yKCd1bCxvbCcpKSB7CiAgICAgICAgb3V0LnB1c2goeyB0eXBlOiAnaW1hZ2UnLCBlbDogY2hpbGQucXVlcnlTZWxlY3RvcignaW1nJykgfSk7CiAgICAgIH0gZWxzZSBpZiAoY2hpbGQudGFnTmFtZSA9PT0gJ0EnKSB7CiAgICAgICAgb3V0LnB1c2goeyB0eXBlOiAnYnV5bGluaycsIGVsOiBjaGlsZCB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjb2xsZWN0Q29udGVudE5vZGVzKGNoaWxkLCBvdXQpOyAvLyBnZW5lcmljIHdyYXBwZXIgKEdyb3VwLCBkaXYsIGV0Yy4pIC0tIGxvb2sgaW5zaWRlIGl0CiAgICAgIH0KICAgIH0pOwogIH0KCiAgZnVuY3Rpb24gcmVhZFNlYXNvbnMoc291cmNlQ2xhc3MpewogICAgY29uc3Qgc291cmNlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLicgKyBzb3VyY2VDbGFzcyk7CiAgICBpZiAoIXNvdXJjZSkgcmV0dXJuIG51bGw7CgogICAgY29uc3Qgbm9kZXMgPSBbXTsKICAgIGNvbGxlY3RDb250ZW50Tm9kZXMoc291cmNlLCBub2Rlcyk7CgogICAgY29uc3Qgc2Vhc29ucyA9IFtdOwogICAgbGV0IGN1cnJlbnQgPSBudWxsOwogICAgbGV0IHBlbmRpbmdDb3ZlciA9IG51bGw7CiAgICBub2Rlcy5mb3JFYWNoKG5vZGUgPT4gewogICAgICBpZiAobm9kZS50eXBlID09PSAnaW1hZ2UnKSB7CiAgICAgICAgcGVuZGluZ0NvdmVyID0gaGlnaGVzdFJlc1NyYyhub2RlLmVsKTsKICAgICAgfSBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdoZWFkaW5nJykgewogICAgICAgIGN1cnJlbnQgPSB7IHRpdGxlOiBub2RlLmVsLnRleHRDb250ZW50LnRyaW0oKSwgZXBpc29kZXM6IFtdLCBjb3ZlcjogcGVuZGluZ0NvdmVyLCBsb2NrZWQ6IGZhbHNlLCBidXlVcmw6IG51bGwsIGJ1eUxhYmVsOiBudWxsIH07CiAgICAgICAgcGVuZGluZ0NvdmVyID0gbnVsbDsKICAgICAgICBzZWFzb25zLnB1c2goY3VycmVudCk7CiAgICAgIH0gZWxzZSBpZiAobm9kZS50eXBlID09PSAnbGlzdCcgJiYgY3VycmVudCkgewogICAgICAgIGN1cnJlbnQuZXBpc29kZXMucHVzaCguLi5wYXJzZUVwaXNvZGVzRnJvbUxpc3Qobm9kZS5lbCkpOwogICAgICB9IGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ2J1eWxpbmsnICYmIGN1cnJlbnQgJiYgIWN1cnJlbnQuZXBpc29kZXMubGVuZ3RoKSB7CiAgICAgICAgY3VycmVudC5sb2NrZWQgPSB0cnVlOwogICAgICAgIGN1cnJlbnQuYnV5VXJsID0gbm9kZS5lbC5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSB8fCAnIyc7CiAgICAgICAgY3VycmVudC5idXlMYWJlbCA9IG5vZGUuZWwudGV4dENvbnRlbnQudHJpbSgpIHx8ICdCdXkgdG8gVW5sb2NrJzsKICAgICAgfQogICAgfSk7CgogICAgLy8gRGUtZHVwbGljYXRlOiBpZiB0aGUgU0FNRSBzZWFzb24gdGl0bGUgZXhpc3RzIGJvdGggYXMgYW4gdW5sb2NrZWQKICAgIC8vIHZlcnNpb24gKGhhcyBlcGlzb2RlcykgYW5kIGEgbG9ja2VkICJidXkiIHZlcnNpb24sIGtlZXAgb25seSB0aGUgdW5sb2NrZWQKICAgIC8vIG9uZS4gVGhpcyBoYXBwZW5zIGZvciBPV05FUlMsIHdobyAtLSB2aWEgTWVtYmVyZnVsIC0tIGNhbiBzZWUgYm90aCB0aGUKICAgIC8vIHVubG9ja2VkIGJsb2NrIGFuZCB0aGUgKEFsbC11c2VycykgbG9ja2VkIGJsb2NrIGZvciBhIHNlYXNvbiB0aGV5IG93bi4KICAgIC8vIE5vbi1vd25lcnMgb25seSBldmVyIHNlZSB0aGUgbG9ja2VkIGJsb2NrLCBzbyB0aGV5J3JlIHVuYWZmZWN0ZWQuCiAgICBjb25zdCB1bmxvY2tlZFRpdGxlcyA9IG5ldyBTZXQoCiAgICAgIHNlYXNvbnMuZmlsdGVyKHMgPT4gcy5lcGlzb2Rlcy5sZW5ndGgpLm1hcChzID0+IHMudGl0bGUudHJpbSgpLnRvTG93ZXJDYXNlKCkpCiAgICApOwogICAgY29uc3QgZGVkdXBlZCA9IHNlYXNvbnMuZmlsdGVyKHMgPT4gewogICAgICBpZiAocy5sb2NrZWQgJiYgdW5sb2NrZWRUaXRsZXMuaGFzKHMudGl0bGUudHJpbSgpLnRvTG93ZXJDYXNlKCkpKSByZXR1cm4gZmFsc2U7IC8vIGRyb3AgbG9ja2VkIGR1cGUKICAgICAgcmV0dXJuIHRydWU7CiAgICB9KTsKCiAgICBjb25zdCB2YWxpZCA9IGRlZHVwZWQuZmlsdGVyKHMgPT4gcy5lcGlzb2Rlcy5sZW5ndGggfHwgcy5sb2NrZWQpOwogICAgcmV0dXJuIHZhbGlkLmxlbmd0aCA/IHZhbGlkIDogbnVsbDsKICB9CgogIGNvbnN0IEZBTExCQUNLX1NFQVNPTlMgPSBbCiAgICB7IHRpdGxlOiAnU2Vhc29uIE5hbWUnLCBlcGlzb2RlczogWwogICAgICB7IHRpdGxlOiAnRXBpc29kZSAxIOKAkyBUaXRsZScsIHVybDogJyMnLCB2aWRlbzogbnVsbCB9LAogICAgICB7IHRpdGxlOiAnRXBpc29kZSAyIOKAkyBUaXRsZScsIHVybDogJyMnLCB2aWRlbzogbnVsbCB9CiAgICBdIH0KICBdOwoKICBmdW5jdGlvbiBidWlsZEVwaXNvZGVDYXJkKGVwKXsKICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CiAgICBhLmNsYXNzTmFtZSA9ICd1di1lcCc7CiAgICBhLmhyZWYgPSBlcC51cmw7CiAgICBhLnRhcmdldCA9ICdfYmxhbmsnOwogICAgYS5yZWwgPSAnbm9vcGVuZXIgbm9yZWZlcnJlcic7CgogICAgY29uc3QgdGh1bWIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIHRodW1iLmNsYXNzTmFtZSA9ICd1di1lcC10aHVtYic7CgogICAgaWYgKGVwLnZpZGVvICYmIGVwLnZpZGVvLnBsYXRmb3JtID09PSAneW91dHViZScpIHsKICAgICAgY29uc3QgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7CiAgICAgIGltZy5zcmMgPSAnaHR0cHM6Ly9pbWcueW91dHViZS5jb20vdmkvJyArIGVwLnZpZGVvLmlkICsgJy9tcWRlZmF1bHQuanBnJzsKICAgICAgaW1nLmFsdCA9IGVwLnRpdGxlOwogICAgICBpbWcubG9hZGluZyA9ICdsYXp5JzsKICAgICAgdGh1bWIuYXBwZW5kQ2hpbGQoaW1nKTsKICAgIH0gZWxzZSBpZiAoZXAudmlkZW8gJiYgZXAudmlkZW8ucGxhdGZvcm0gPT09ICd2aW1lbycpIHsKICAgICAgY29uc3QgcGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgcGguY2xhc3NOYW1lID0gJ3V2LWVwLXRodW1iLXBsYWNlaG9sZGVyJzsKICAgICAgdGh1bWIuYXBwZW5kQ2hpbGQocGgpOwogICAgICB2aW1lb1RodW1iKGVwLnZpZGVvLmlkKS50aGVuKHVybCA9PiB7CiAgICAgICAgaWYgKHVybCkgewogICAgICAgICAgY29uc3QgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7CiAgICAgICAgICBpbWcuc3JjID0gdXJsOwogICAgICAgICAgaW1nLmFsdCA9IGVwLnRpdGxlOwogICAgICAgICAgdGh1bWIuaW5zZXJ0QmVmb3JlKGltZywgdGh1bWIuZmlyc3RDaGlsZCk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0gZWxzZSB7CiAgICAgIGNvbnN0IHBoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgIHBoLmNsYXNzTmFtZSA9ICd1di1lcC10aHVtYi1wbGFjZWhvbGRlcic7CiAgICAgIHRodW1iLmFwcGVuZENoaWxkKHBoKTsKICAgIH0KCiAgICBjb25zdCBwbGF5RG90ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICBwbGF5RG90LmNsYXNzTmFtZSA9ICd1di1lcC1wbGF5ZG90JzsKICAgIHBsYXlEb3QuaW5uZXJIVE1MID0gcGxheUljb25Tdmc7CiAgICB0aHVtYi5hcHBlbmRDaGlsZChwbGF5RG90KTsKCiAgICBhLmFwcGVuZENoaWxkKHRodW1iKTsKCiAgICBjb25zdCB0aXRsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKICAgIHRpdGxlLmNsYXNzTmFtZSA9ICd1di1lcC10aXRsZSc7CiAgICB0aXRsZS50ZXh0Q29udGVudCA9IGVwLnRpdGxlOwogICAgYS5hcHBlbmRDaGlsZCh0aXRsZSk7CgogICAgcmV0dXJuIGE7CiAgfQoKICBmdW5jdGlvbiBidWlsZEFjY29yZGlvbihzZWFzb25zLCBjb250YWluZXJJZCl7CiAgICBjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVySWQpOwogICAgaWYgKCFyb290KSByZXR1cm47CiAgICByb290LmlubmVySFRNTCA9ICcnOwoKICAgIGNvbnN0IHBhbmVscyA9IFtdOwoKICAgIHNlYXNvbnMuZm9yRWFjaCgoc2Vhc29uLCBpKSA9PiB7CiAgICAgIGNvbnN0IHBhbmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgIHBhbmVsLmNsYXNzTmFtZSA9ICd1di1zZWFzb24nOwogICAgICBpZiAoc2Vhc29uLmxvY2tlZCkgcGFuZWwuY2xhc3NMaXN0LmFkZCgnaXMtbG9ja2VkJyk7CgogICAgICBpZiAoc2Vhc29uLmxvY2tlZCkgewogICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CiAgICAgICAgbGluay5jbGFzc05hbWUgPSAndXYtc2Vhc29uLWhlYWRlcic7CiAgICAgICAgbGluay5ocmVmID0gc2Vhc29uLmJ1eVVybDsKICAgICAgICBsaW5rLnRhcmdldCA9ICdfYmxhbmsnOwogICAgICAgIGxpbmsucmVsID0gJ25vb3BlbmVyIG5vcmVmZXJyZXInOwoKICAgICAgICBpZiAoc2Vhc29uLmNvdmVyKSB7CiAgICAgICAgICBjb25zdCBjb3ZlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgY292ZXIuY2xhc3NOYW1lID0gJ3V2LXNlYXNvbi1jb3Zlcic7CiAgICAgICAgICBjb25zdCBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTsKICAgICAgICAgIGltZy5zcmMgPSBzZWFzb24uY292ZXI7CiAgICAgICAgICBpbWcuYWx0ID0gc2Vhc29uLnRpdGxlOwogICAgICAgICAgaW1nLmxvYWRpbmcgPSBpIDwgMiA/ICdlYWdlcicgOiAnbGF6eSc7CiAgICAgICAgICBjb3Zlci5hcHBlbmRDaGlsZChpbWcpOwogICAgICAgICAgY29uc3QgbG9ja092ZXJsYXkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgIGxvY2tPdmVybGF5LmNsYXNzTmFtZSA9ICd1di1sb2NrLW92ZXJsYXknOwogICAgICAgICAgbG9ja092ZXJsYXkuaW5uZXJIVE1MID0gJzxzdmcgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNiAxMFY4YTYgNiAwIDAxMTIgMHYyIi8+PHJlY3QgeD0iNCIgeT0iMTAiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxMSIgcng9IjIiLz48L3N2Zz4nOwogICAgICAgICAgY292ZXIuYXBwZW5kQ2hpbGQobG9ja092ZXJsYXkpOwogICAgICAgICAgbGluay5hcHBlbmRDaGlsZChjb3Zlcik7CiAgICAgICAgfQoKICAgICAgICBjb25zdCB0aXRsZXJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIHRpdGxlcm93LmNsYXNzTmFtZSA9ICd1di1zZWFzb24tdGl0bGVyb3cnOwogICAgICAgIGNvbnN0IHRpdGxld3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIHRpdGxld3JhcC5jbGFzc05hbWUgPSAndXYtc2Vhc29uLXRpdGxld3JhcCc7CiAgICAgICAgY29uc3QgdGl0bGVFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKICAgICAgICB0aXRsZUVsLmNsYXNzTmFtZSA9ICd1di1zZWFzb24tdGl0bGUnOwogICAgICAgIHRpdGxlRWwudGV4dENvbnRlbnQgPSBzZWFzb24udGl0bGU7CiAgICAgICAgY29uc3QgbWV0YUVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOwogICAgICAgIG1ldGFFbC5jbGFzc05hbWUgPSAndXYtc2Vhc29uLW1ldGEgdXYtc2Vhc29uLW1ldGEtbG9ja2VkJzsKICAgICAgICBtZXRhRWwudGV4dENvbnRlbnQgPSAnXHVkODNkXHVkZDEyICcgKyBzZWFzb24uYnV5TGFiZWw7CiAgICAgICAgdGl0bGV3cmFwLmFwcGVuZENoaWxkKHRpdGxlRWwpOwogICAgICAgIHRpdGxld3JhcC5hcHBlbmRDaGlsZChtZXRhRWwpOwogICAgICAgIHRpdGxlcm93LmFwcGVuZENoaWxkKHRpdGxld3JhcCk7CiAgICAgICAgbGluay5hcHBlbmRDaGlsZCh0aXRsZXJvdyk7CgogICAgICAgIHBhbmVsLmFwcGVuZENoaWxkKGxpbmspOwogICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQocGFuZWwpOwogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgY29uc3QgaGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgICAgIGhlYWRlci5jbGFzc05hbWUgPSAndXYtc2Vhc29uLWhlYWRlcic7CiAgICAgIGhlYWRlci50eXBlID0gJ2J1dHRvbic7CiAgICAgIGhlYWRlci5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTsKCiAgICAgIGlmIChzZWFzb24uY292ZXIpIHsKICAgICAgICBjb25zdCBjb3ZlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIGNvdmVyLmNsYXNzTmFtZSA9ICd1di1zZWFzb24tY292ZXInOwogICAgICAgIGNvbnN0IGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOwogICAgICAgIGltZy5zcmMgPSBzZWFzb24uY292ZXI7CiAgICAgICAgaW1nLmFsdCA9IHNlYXNvbi50aXRsZTsKICAgICAgICBpbWcubG9hZGluZyA9IGkgPCAyID8gJ2VhZ2VyJyA6ICdsYXp5JzsKICAgICAgICBjb3Zlci5hcHBlbmRDaGlsZChpbWcpOwogICAgICAgIGhlYWRlci5hcHBlbmRDaGlsZChjb3Zlcik7CiAgICAgIH0KCiAgICAgIGNvbnN0IHRpdGxlcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgIHRpdGxlcm93LmNsYXNzTmFtZSA9ICd1di1zZWFzb24tdGl0bGVyb3cnOwoKICAgICAgY29uc3QgdGl0bGV3cmFwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgIHRpdGxld3JhcC5jbGFzc05hbWUgPSAndXYtc2Vhc29uLXRpdGxld3JhcCc7CiAgICAgIGNvbnN0IHRpdGxlRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7CiAgICAgIHRpdGxlRWwuY2xhc3NOYW1lID0gJ3V2LXNlYXNvbi10aXRsZSc7CiAgICAgIHRpdGxlRWwudGV4dENvbnRlbnQgPSBzZWFzb24udGl0bGU7CiAgICAgIGNvbnN0IG1ldGFFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKICAgICAgbWV0YUVsLmNsYXNzTmFtZSA9ICd1di1zZWFzb24tbWV0YSc7CiAgICAgIG1ldGFFbC50ZXh0Q29udGVudCA9IHNlYXNvbi5lcGlzb2Rlcy5sZW5ndGggKyAoc2Vhc29uLmVwaXNvZGVzLmxlbmd0aCA9PT0gMSA/ICcgRXBpc29kZScgOiAnIEVwaXNvZGVzJyk7CiAgICAgIHRpdGxld3JhcC5hcHBlbmRDaGlsZCh0aXRsZUVsKTsKICAgICAgdGl0bGV3cmFwLmFwcGVuZENoaWxkKG1ldGFFbCk7CiAgICAgIHRpdGxlcm93LmFwcGVuZENoaWxkKHRpdGxld3JhcCk7CgogICAgICBjb25zdCBjaGV2cm9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgIGNoZXZyb24uY2xhc3NOYW1lID0gJ3V2LWNoZXZyb24nOwogICAgICBjaGV2cm9uLmlubmVySFRNTCA9ICc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTYgOWw2IDYgNi02Ii8+PC9zdmc+JzsKICAgICAgdGl0bGVyb3cuYXBwZW5kQ2hpbGQoY2hldnJvbik7CgogICAgICBoZWFkZXIuYXBwZW5kQ2hpbGQodGl0bGVyb3cpOwoKICAgICAgY29uc3QgYm9keSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICBib2R5LmNsYXNzTmFtZSA9ICd1di1zZWFzb24tYm9keSc7CiAgICAgIGNvbnN0IGJvZHlJbm5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICBib2R5SW5uZXIuY2xhc3NOYW1lID0gJ3V2LXNlYXNvbi1ib2R5LWlubmVyJzsKICAgICAgYm9keS5hcHBlbmRDaGlsZChib2R5SW5uZXIpOwoKICAgICAgbGV0IGJ1aWx0ID0gZmFsc2U7CiAgICAgIGZ1bmN0aW9uIG9wZW5QYW5lbCgpewogICAgICAgIHBhbmVscy5mb3JFYWNoKHAgPT4geyBpZiAocCAhPT0gcGFuZWxPYmopIHAuY2xvc2UoKTsgfSk7CiAgICAgICAgcGFuZWwuY2xhc3NMaXN0LmFkZCgnaXMtb3BlbicpOwogICAgICAgIGhlYWRlci5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpOwogICAgICAgIGlmICghYnVpbHQpIHsKICAgICAgICAgIHNlYXNvbi5lcGlzb2Rlcy5mb3JFYWNoKGVwID0+IGJvZHlJbm5lci5hcHBlbmRDaGlsZChidWlsZEVwaXNvZGVDYXJkKGVwKSkpOwogICAgICAgICAgYnVpbHQgPSB0cnVlOwogICAgICAgIH0KICAgICAgICBib2R5LnN0eWxlLm1heEhlaWdodCA9IGJvZHkuc2Nyb2xsSGVpZ2h0ICsgJ3B4JzsKICAgICAgfQogICAgICBmdW5jdGlvbiBjbG9zZVBhbmVsKCl7CiAgICAgICAgcGFuZWwuY2xhc3NMaXN0LnJlbW92ZSgnaXMtb3BlbicpOwogICAgICAgIGhlYWRlci5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTsKICAgICAgICBib2R5LnN0eWxlLm1heEhlaWdodCA9ICcwcHgnOwogICAgICB9CiAgICAgIGhlYWRlci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHsKICAgICAgICBpZiAocGFuZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdpcy1vcGVuJykpIGNsb3NlUGFuZWwoKTsgZWxzZSBvcGVuUGFuZWwoKTsKICAgICAgfSk7CgogICAgICBjb25zdCBwYW5lbE9iaiA9IHsgY2xvc2U6IGNsb3NlUGFuZWwgfTsKICAgICAgcGFuZWxzLnB1c2gocGFuZWxPYmopOwoKICAgICAgcGFuZWwuYXBwZW5kQ2hpbGQoaGVhZGVyKTsKICAgICAgcGFuZWwuYXBwZW5kQ2hpbGQoYm9keSk7CiAgICAgIHJvb3QuYXBwZW5kQ2hpbGQocGFuZWwpOwoKICAgICAgaWYgKGkgPT09IDApIG9wZW5QYW5lbCgpOwogICAgfSk7CgogICAgLy8gUmVjYWxjdWxhdGUgb3BlbiBwYW5lbCBoZWlnaHQgYWZ0ZXIgaW1hZ2VzL3RodW1ibmFpbHMgbG9hZCBpbi4KICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4gewogICAgICBjb25zdCBvcGVuID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcudXYtc2Vhc29uLmlzLW9wZW4gLnV2LXNlYXNvbi1ib2R5Jyk7CiAgICAgIGlmIChvcGVuKSBvcGVuLnN0eWxlLm1heEhlaWdodCA9IG9wZW4uc2Nyb2xsSGVpZ2h0ICsgJ3B4JzsKICAgIH0pOwogIH0KCiAgY29uc3QgQ0FURUdPUklFUyA9IFsKICAgIHsgc291cmNlQ2xhc3M6ICd1bmxvY2tlZC12aWRlby1zb3VyY2UtbW9ub3NjZW5lJywgY29udGFpbmVySWQ6ICd1dkFjY29yZGlvbk1vbm9zY2VuZScgfSwKICAgIHsgc291cmNlQ2xhc3M6ICd1bmxvY2tlZC12aWRlby1zb3VyY2UtdGVhY2hlcnNsb3VuZ2UnLCBjb250YWluZXJJZDogJ3V2QWNjb3JkaW9uVGVhY2hlcnNMb3VuZ2UnIH0KICBdOwoKICBmdW5jdGlvbiBpbml0KCl7CiAgICBDQVRFR09SSUVTLmZvckVhY2goY2F0ID0+IHsKICAgICAgY29uc3Qgc2Vhc29ucyA9IHJlYWRTZWFzb25zKGNhdC5zb3VyY2VDbGFzcykgfHwgRkFMTEJBQ0tfU0VBU09OUzsKICAgICAgYnVpbGRBY2NvcmRpb24oc2Vhc29ucywgY2F0LmNvbnRhaW5lcklkKTsKICAgIH0pOwoKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy51di1qdW1wbmF2IGFbaHJlZl49IiMiXScpLmZvckVhY2gobGluayA9PiB7CiAgICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4gewogICAgICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IobGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSk7CiAgICAgICAgaWYgKHRhcmdldCkgewogICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgdGFyZ2V0LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ3N0YXJ0JyB9KTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSk7CiAgfQoKICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJykgewogICAgaW5pdCgpOwogIH0gZWxzZSB7CiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGluaXQpOwogIH0KfSkoKTsK
Main Street Sounds: Vol. 2
Main Street Sounds: Vol. 1
County Fair
Exit 43
Exit 42
Holidays at the Mall
Teachers Lounge Season 13 – Academy
Teachers Lounge Season 12 – Order Up
Teachers Lounge Season 11 – Pumped
Teachers Lounge Season 10 – Alumni Week
The Preachers Lounge
Last Resort