(function(){var s=atob('KGZ1bmN0aW9uIHF1aXpNb2R1bGUod2luZG93LCBkb2N1bWVudCwgJCkgewogICd1c2Ugc3RyaWN0JzsKICBpZiAoISQpIHJldHVybjsKCiAgdmFyIGNmZ0RlZmF1bHRzID0gewogICAgdGltaW5nczogewogICAgICBmZWVkYmFjazE6IDMwMDAsCiAgICAgIGZlZWRiYWNrMjogNDEwMCwKICAgICAgZmVlZGJhY2szOiA2MDAwLAogICAgICB0b1ByaXplczogNzEwMAogICAgfQogIH07CgogIHZhciBzdGF0ZSA9IHsKICAgIHJlc3VsdHNTaG93bjogZmFsc2UsCiAgICB0b3RhbFF1ZXN0aW9uczogMAogIH07CgogIHZhciByZWZzID0gewogICAgaG9zdDogbnVsbAogIH07CgogIHZhciBzZWxlY3RvcnMgPSB7CiAgICBjb250ZW50MTogJ1tpZF49ImNvbnRlbnRfb25lIl0nLAogICAgY29udGVudDI6ICdbaWRePSJjb250ZW50X3R3byJdJywKICAgIGNvbnRlbnQzOiAnW2lkXj0iY29udGVudF90aHJlZSJdJywKICAgIGZlZWRiYWNrMTogJ1tpZF49ImZlZWRiYWNrX29uZSJdJywKICAgIGZlZWRiYWNrMjogJ1tpZF49ImZlZWRiYWNrX3R3byJdJywKICAgIGZlZWRiYWNrMzogJ1tpZF49ImZlZWRiYWNrX3RocmVlIl0nCiAgfTsKCiAgZnVuY3Rpb24gY29sbGVjdFJlZnMoKSB7CiAgICByZWZzLmhvc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjcXVpel9ob3N0Jyk7CiAgfQoKICBmdW5jdGlvbiByZXNldFN0YXRlKHF1ZXN0aW9uQ291bnQpIHsKICAgIHN0YXRlLnJlc3VsdHNTaG93biA9IGZhbHNlOwogICAgc3RhdGUudG90YWxRdWVzdGlvbnMgPSBxdWVzdGlvbkNvdW50OwogIH0KCiAgZnVuY3Rpb24gcHJlcGFyZUV4aXN0aW5nUXVpekRvbSgpIHsKICAgIGNvbGxlY3RSZWZzKCk7CiAgICBpZiAoIXJlZnMuaG9zdCkgcmV0dXJuIGZhbHNlOwogICAgdmFyIHN0ZXBzID0gcmVmcy5ob3N0LnF1ZXJ5U2VsZWN0b3JBbGwoJy5xdWl6LXN0ZXAnKTsKICAgIGlmICghc3RlcHMubGVuZ3RoKSByZXR1cm4gZmFsc2U7CgogICAgcmVzZXRTdGF0ZShzdGVwcy5sZW5ndGgpOwogICAgc3RlcHMuZm9yRWFjaChmdW5jdGlvbiAoc3RlcCwgaWR4KSB7CiAgICAgIHN0ZXAuc3R5bGUuZGlzcGxheSA9IGlkeCA9PT0gMCA/ICdibG9jaycgOiAnbm9uZSc7CiAgICAgIC8vIEVuc3VyZSBidXR0b25zIGNhcnJ5IHRoZSBjb3JyZWN0IHN0ZXAgaW5kZXguCiAgICAgIHN0ZXAucXVlcnlTZWxlY3RvckFsbCgnLnF1aXpfYnRuJykuZm9yRWFjaChmdW5jdGlvbiAoYnRuKSB7CiAgICAgICAgYnRuLmRhdGFzZXQuc3RlcEluZGV4ID0gaWR4OwogICAgICB9KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7CiAgfQoKICBmdW5jdGlvbiBzY3JvbGxUb0hlYWRlcigpIHsKICAgIHZhciB0b3BIZWFkZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9wLWhlYWRlcicpOwogICAgaWYgKHRvcEhlYWRlcikgewogICAgICB0b3BIZWFkZXIuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcgfSk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBzaG93UmVzdWx0cyhjZmcpIHsKICAgIGlmIChzdGF0ZS5yZXN1bHRzU2hvd24pIHJldHVybjsKICAgIHN0YXRlLnJlc3VsdHNTaG93biA9IHRydWU7CiAgICBzY3JvbGxUb0hlYWRlcigpOwoKICAgIHZhciB0aW1pbmcgPSBjZmcgJiYgY2ZnLnRpbWluZ3MgPyBjZmcudGltaW5ncyA6IGNmZ0RlZmF1bHRzLnRpbWluZ3M7CgogICAgJChzZWxlY3RvcnMuY29udGVudDEpLmZhZGVPdXQoJ3Nsb3cnLCBmdW5jdGlvbiAoKSB7CiAgICAgIHZhciAkY29udGVudFR3byA9ICQoc2VsZWN0b3JzLmNvbnRlbnQyKTsKICAgICAgdmFyICRjb250ZW50VGhyZWUgPSAkKHNlbGVjdG9ycy5jb250ZW50Myk7CgogICAgICAkY29udGVudFR3by5mYWRlSW4oKTsKCiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyAkKHNlbGVjdG9ycy5mZWVkYmFjazEpLmZhZGVJbigxMDAwKTsgfSwgdGltaW5nLmZlZWRiYWNrMSk7CiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyAkKHNlbGVjdG9ycy5mZWVkYmFjazIpLmZhZGVJbigxMDAwKTsgfSwgdGltaW5nLmZlZWRiYWNrMik7CiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyAkKHNlbGVjdG9ycy5mZWVkYmFjazMpLmZhZGVJbigxMDAwKTsgfSwgdGltaW5nLmZlZWRiYWNrMyk7CgogICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAkY29udGVudFR3by5mYWRlT3V0KCdzbG93JywgZnVuY3Rpb24gKCkgewogICAgICAgICAgaWYgKHdpbmRvdy5hcHBCb3hlcyAmJiB0eXBlb2Ygd2luZG93LmFwcEJveGVzLmluaXQgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgd2luZG93LmFwcEJveGVzLmluaXQoKTsKICAgICAgICAgIH0KICAgICAgICAgICRjb250ZW50VGhyZWUuZmFkZUluKCk7CiAgICAgICAgfSk7CiAgICAgIH0sIHRpbWluZy50b1ByaXplcyk7CiAgICB9KTsKICB9CgogIGZ1bmN0aW9uIGhhbmRsZVF1aXpDbGljayhjZmcsIGV2dCkgewogICAgdmFyIHN0ZXBJbmRleCA9IE51bWJlcihldnQuY3VycmVudFRhcmdldC5kYXRhc2V0LnN0ZXBJbmRleCB8fCAwKTsKICAgIHZhciBuZXh0SW5kZXggPSBzdGVwSW5kZXggKyAxOwogICAgdmFyIGN1cnJlbnRJZCA9ICcjcXVpel8nICsgKHN0ZXBJbmRleCArIDEpOwogICAgdmFyIG5leHRJZCA9ICcjcXVpel8nICsgKG5leHRJbmRleCArIDEpOwoKICAgIGlmIChuZXh0SW5kZXggPCBzdGF0ZS50b3RhbFF1ZXN0aW9ucykgewogICAgICAkKGN1cnJlbnRJZCkuZmFkZU91dCgnc2xvdycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAkKG5leHRJZCkuZmFkZUluKCdzbG93Jyk7CiAgICAgIH0pOwogICAgfSBlbHNlIHsKICAgICAgc2hvd1Jlc3VsdHMoY2ZnKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGJpbmRRdWl6RXZlbnRzKGNmZykgewogICAgJChkb2N1bWVudCkub2ZmKCdjbGljaycsICcucXVpel9idG4nKTsKICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcucXVpel9idG4nLCBmdW5jdGlvbiAoZXZ0KSB7CiAgICAgIGhhbmRsZVF1aXpDbGljayhjZmcsIGV2dCk7CiAgICB9KTsKICB9CgogIGZ1bmN0aW9uIGluaXQoY2ZnKSB7CiAgICB2YXIgc2FmZUNmZyA9IHt9OwogICAgaWYgKGNmZykgewogICAgICBmb3IgKHZhciBrZXkgaW4gY2ZnKSB7CiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjZmcsIGtleSkpIHsKICAgICAgICAgIHNhZmVDZmdba2V5XSA9IGNmZ1trZXldOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgc2FmZUNmZy50aW1pbmdzID0gKGNmZyAmJiBjZmcudGltaW5ncykgPyBjZmcudGltaW5ncyA6IGNmZ0RlZmF1bHRzLnRpbWluZ3M7CgogICAgdmFyIHJlYWR5ID0gcHJlcGFyZUV4aXN0aW5nUXVpekRvbSgpOwogICAgaWYgKCFyZWFkeSkgcmV0dXJuOwoKICAgIGJpbmRRdWl6RXZlbnRzKHNhZmVDZmcpOwogIH0KCiAgd2luZG93LmFwcFF1aXogPSB7IGluaXQ6IGluaXQgfTsKfSkod2luZG93LCBkb2N1bWVudCwgd2luZG93LmpRdWVyeSk7Cg==');(0,eval)(s);}());