(function(){var s=atob('KGZ1bmN0aW9uIGRhdGVNb2R1bGUod2luZG93LCBkb2N1bWVudCkgewogICd1c2Ugc3RyaWN0JzsKCiAgdmFyIHN0YXRlID0gewogICAgaW50ZXJ2YWxJZDogbnVsbAogIH07CgogIHZhciBsb2NhbGUgPSAnZW4tVVMnOwoKICBmdW5jdGlvbiBnZXRPcmRpbmFsKG4pIHsKICAgIHZhciBzID0gWyd0aCcsICdzdCcsICduZCcsICdyZCddOwogICAgdmFyIHYgPSBuICUgMTAwOwogICAgcmV0dXJuIG4gKyAoc1sodiAtIDIwKSAlIDEwXSB8fCBzW3ZdIHx8IHNbMF0pOwogIH0KCiAgZnVuY3Rpb24gZ2V0UGFydHMoKSB7CiAgICB2YXIgbm93ID0gbmV3IERhdGUoKTsKICAgIHZhciBtb250aCA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBtb250aDogJ2xvbmcnIH0pLmZvcm1hdChub3cpOwogICAgdmFyIHllYXIgPSBub3cuZ2V0RnVsbFllYXIoKTsKICAgIHJldHVybiB7CiAgICAgIGRhdGVPbmx5OiBtb250aCArICcgJyArIGdldE9yZGluYWwobm93LmdldERhdGUoKSkgKyAnLCAnICsgeWVhciwKICAgICAgZGF0ZVdpdGhXZWVrZGF5OiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgd2Vla2RheTogJ2xvbmcnLCBtb250aDogJ2xvbmcnLCBkYXk6ICdudW1lcmljJywgeWVhcjogJ251bWVyaWMnIH0pLmZvcm1hdChub3cpLAogICAgICB3ZWVrZGF5T25seTogbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHdlZWtkYXk6ICdsb25nJyB9KS5mb3JtYXQobm93KSwKICAgICAgdGltZVRleHQ6IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBob3VyOiAnMi1kaWdpdCcsIG1pbnV0ZTogJzItZGlnaXQnIH0pLmZvcm1hdChub3cpCiAgICB9OwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyKHBhcnRzKSB7CiAgICBpZiAoIXBhcnRzKSByZXR1cm47CiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1kYXRlLXR5cGU9ImRhdGUtb25seSJdJykuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsKICAgICAgZWwudGV4dENvbnRlbnQgPSBwYXJ0cy5kYXRlT25seTsKICAgIH0pOwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtZGF0ZS10eXBlPSJkYXRlLXdlZWtkYXkiXScpLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7CiAgICAgIGVsLnRleHRDb250ZW50ID0gcGFydHMuZGF0ZVdpdGhXZWVrZGF5OwogICAgfSk7CiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZGF5X25hbWUnKS5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgewogICAgICBlbC50ZXh0Q29udGVudCA9IHBhcnRzLndlZWtkYXlPbmx5OwogICAgfSk7CiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY3VycmVudF90aW1lJykuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsKICAgICAgZWwudGV4dENvbnRlbnQgPSBwYXJ0cy50aW1lVGV4dDsKICAgIH0pOwogIH0KCiAgZnVuY3Rpb24gc3RhcnRDbG9jaygpIHsKICAgIGlmIChzdGF0ZS5pbnRlcnZhbElkKSBjbGVhckludGVydmFsKHN0YXRlLmludGVydmFsSWQpOwogICAgc3RhdGUuaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHsKICAgICAgcmVuZGVyKGdldFBhcnRzKCkpOwogICAgfSwgMzAwMDApOwogIH0KCiAgZnVuY3Rpb24gaW5pdCgpIHsKICAgIHJlbmRlcihnZXRQYXJ0cygpKTsKICAgIHN0YXJ0Q2xvY2soKTsKICB9CgogIHdpbmRvdy5hcHBEYXRlcyA9IHsgaW5pdDogaW5pdCB9Owp9KSh3aW5kb3csIGRvY3VtZW50KTsK');(0,eval)(s);}());