W3sibmFtZSI6Ikdvb2dsZSBUYWcgTWFuYWdlciIsImxvY2F0aW9uIjoiaGVhZCIsImNvbnNlbnRUeXBlIjoibWFya2V0aW5nIiwiY29udGVudCI6IjwhLS0gR29vZ2xlIFRhZyBNYW5hZ2VyIC0tPlxuPHNjcmlwdD4oZnVuY3Rpb24odyxkLHMsbCxpKXt3W2xdPXdbbF18fFtdO3dbbF0ucHVzaCh7J2d0bS5zdGFydCc6XG5uZXcgRGF0ZSgpLmdldFRpbWUoKSxldmVudDonZ3RtLmpzJ30pO3ZhciBmPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUocylbMF0sXG5qPWQuY3JlYXRlRWxlbWVudChzKSxkbD1sIT0nZGF0YUxheWVyJz8nJmw9JytsOicnO2ouYXN5bmM9dHJ1ZTtqLnNyYz1cbidodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndG0uanM/aWQ9JytpK2RsO2YucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaixmKTtcbn0pKHdpbmRvdyxkb2N1bWVudCwnc2NyaXB0JywnZGF0YUxheWVyJywnR1RNLVdORExOUkNTJyk7PC9zY3JpcHQ+XG48IS0tIEVuZCBHb29nbGUgVGFnIE1hbmFnZXIgLS0+XG4iLCJhdHRyaWJ1dGVzIjpbXX1d
W3sibmFtZSI6IkhlcmtvbXN0IGRlZWwgMSAtIG9wdmFuZ2VuIiwibG9jYXRpb24iOiJib2R5IiwiY29uc2VudFR5cGUiOiJtYXJrZXRpbmciLCJjb250ZW50IjoiPHNjcmlwdD5cbihmdW5jdGlvbiAoKSB7XG4gIC8vIFNjaGVmZmVuYmVyZ2ggLSBoZXJrb21zdCB2YXN0bGVnZ2VuLCBkZWVsIDEgdmFuIDJcbiAgLy8gVmFuZ3QgVVRNLXBhcmFtZXRlcnMgb2YgcmVmZXJyZXIgb3AgZW4gYmV3YWFydCB6ZSBsb2thYWwuXG4gIC8vIEhvb3J0IG9wIGFsbGUgbGFuZGluZ3NwYWdpbmEncywgTklFVCBvcCBkZSBiZWRhbmtwYWdpbmEuXG5cbiAgdmFyIEJFV0FBUlRFUk1JSk5fREFHRU4gPSA5MDtcblxuICBmdW5jdGlvbiBsZWVzVXJsKG5hYW0pIHtcbiAgICByZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKS5nZXQobmFhbSkgfHwgJyc7XG4gIH1cblxuICAvLyBCZXBhYWwgZGUgYnJvbjogVVRNJ3MgaGViYmVuIHZvb3JyYW5nLCBhbmRlcnMgcmVmZXJyZXJcbiAgZnVuY3Rpb24gYmVwYWFsSGVya29tc3QoKSB7XG4gICAgdmFyIHNvdXJjZSAgPSBsZWVzVXJsKCd1dG1fc291cmNlJyk7XG4gICAgdmFyIG1lZGl1bSAgPSBsZWVzVXJsKCd1dG1fbWVkaXVtJyk7XG4gICAgdmFyIGNvbnRlbnQgPSBsZWVzVXJsKCd1dG1fY29udGVudCcpO1xuICAgIHZhciBpZCAgICAgID0gbGVlc1VybCgndXRtX2lkJyk7XG5cbiAgICBpZiAoc291cmNlKSB7XG4gICAgICByZXR1cm4geyBzb3VyY2U6IHNvdXJjZSwgbWVkaXVtOiBtZWRpdW0gfHwgJ29uYmVrZW5kJywgY29udGVudDogY29udGVudCwgaWQ6IGlkIH07XG4gICAgfVxuXG4gICAgLy8gR2VlbiBVVE0nczogYWZsZWlkZW4gdWl0IHJlZmVycmVyXG4gICAgdmFyIHJlZiA9IGRvY3VtZW50LnJlZmVycmVyO1xuXG4gICAgaWYgKCFyZWYpIHtcbiAgICAgIHJldHVybiB7IHNvdXJjZTogJ2RpcmVjdCcsIG1lZGl1bTogJ2RpcmVjdCcsIGNvbnRlbnQ6ICcnLCBpZDogJycgfTtcbiAgICB9XG5cbiAgICB2YXIgaG9zdDtcbiAgICB0cnkgeyBob3N0ID0gbmV3IFVSTChyZWYpLmhvc3RuYW1lLnJlcGxhY2UoL153d3dcXC4vLCAnJyk7IH1cbiAgICBjYXRjaCAoZSkgeyByZXR1cm4geyBzb3VyY2U6ICdkaXJlY3QnLCBtZWRpdW06ICdkaXJlY3QnLCBjb250ZW50OiAnJywgaWQ6ICcnIH07IH1cblxuICAgIC8vIEVpZ2VuIGRvbWVpbiA9IGludGVybmUgbmF2aWdhdGllLCBuaWV0IG92ZXJzY2hyaWp2ZW5cbiAgICBpZiAoaG9zdC5pbmRleE9mKHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZS5yZXBsYWNlKC9ed3d3XFwuLywgJycpKSAhPT0gLTEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICgvZ29vZ2xlXFwufGJpbmdcXC58ZHVja2R1Y2tnb1xcLnx5YWhvb1xcLi8udGVzdChob3N0KSkge1xuICAgICAgcmV0dXJuIHsgc291cmNlOiBob3N0LnNwbGl0KCcuJylbMF0sIG1lZGl1bTogJ29yZ2FuaWMnLCBjb250ZW50OiAnJywgaWQ6ICcnIH07XG4gICAgfVxuICAgIGlmICgvbGlua2VkaW5cXC58ZmFjZWJvb2tcXC58aW5zdGFncmFtXFwufHR3aXR0ZXJcXC58eFxcLmNvbXx5b3V0dWJlXFwuLy50ZXN0KGhvc3QpKSB7XG4gICAgICByZXR1cm4geyBzb3VyY2U6IGhvc3Quc3BsaXQoJy4nKVswXSwgbWVkaXVtOiAnc29jaWFsJywgY29udGVudDogJycsIGlkOiAnJyB9O1xuICAgIH1cbiAgICByZXR1cm4geyBzb3VyY2U6IGhvc3QsIG1lZGl1bTogJ3JlZmVycmFsJywgY29udGVudDogJycsIGlkOiAnJyB9O1xuICB9XG5cbiAgZnVuY3Rpb24gYmV3YWFyKHNsZXV0ZWwsIHdhYXJkZSkge1xuICAgIHRyeSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShzbGV1dGVsLCBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGRhdGE6IHdhYXJkZSxcbiAgICAgICAgdGlqZDogbmV3IERhdGUoKS5nZXRUaW1lKClcbiAgICAgIH0pKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG5cbiAgZnVuY3Rpb24gaGFhbE9wKHNsZXV0ZWwpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIHJ1dyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHNsZXV0ZWwpO1xuICAgICAgaWYgKCFydXcpIHJldHVybiBudWxsO1xuICAgICAgdmFyIG9iaiA9IEpTT04ucGFyc2UocnV3KTtcbiAgICAgIHZhciBtYXhMZWVmdGlqZCA9IEJFV0FBUlRFUk1JSk5fREFHRU4gKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuICAgICAgaWYgKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gb2JqLnRpamQgPiBtYXhMZWVmdGlqZCkge1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShzbGV1dGVsKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqLmRhdGE7XG4gICAgfSBjYXRjaCAoZSkgeyByZXR1cm4gbnVsbDsgfVxuICB9XG5cbiAgdmFyIGhlcmtvbXN0ID0gYmVwYWFsSGVya29tc3QoKTtcbiAgaWYgKCFoZXJrb21zdCkgcmV0dXJuOyAvLyBpbnRlcm5lIG5hdmlnYXRpZSwgbmlldHMgZG9lblxuXG4gIC8vIEVlcnN0ZSBiZXpvZWsgYWxsZWVuIHNjaHJpanZlbiBhbHMgaGV0IGVyIG5vZyBuaWV0IGlzXG4gIGlmICghaGFhbE9wKCdzYl9oZXJrb21zdF9maXJzdCcpKSB7XG4gICAgYmV3YWFyKCdzYl9oZXJrb21zdF9maXJzdCcsIGhlcmtvbXN0KTtcbiAgfVxuXG4gIC8vIExhYXRzdGUgYmV6b2VrIGFsdGlqZCBiaWp3ZXJrZW5cbiAgYmV3YWFyKCdzYl9oZXJrb21zdF9sYXN0JywgaGVya29tc3QpO1xufSkoKTtcbjwvc2NyaXB0PlxuIiwiYXR0cmlidXRlcyI6W119LHsibmFtZSI6Ik1haWxCbHVlIHNpdGUgdHJhY2tpbmciLCJsb2NhdGlvbiI6ImJvZHkiLCJjb25zZW50VHlwZSI6Im1hcmtldGluZyIsImNvbnRlbnQiOiI8c2NyaXB0PlxuICAgIChmdW5jdGlvbihlLHQsbyxuLHAscixpKXtlLnZpc2l0b3JHbG9iYWxPYmplY3RBbGlhcz1uO2VbZS52aXNpdG9yR2xvYmFsT2JqZWN0QWxpYXNdPWVbZS52aXNpdG9yR2xvYmFsT2JqZWN0QWxpYXNdfHxmdW5jdGlvbigpeyhlW2UudmlzaXRvckdsb2JhbE9iamVjdEFsaWFzXS5xPWVbZS52aXNpdG9yR2xvYmFsT2JqZWN0QWxpYXNdLnF8fFtdKS5wdXNoKGFyZ3VtZW50cyl9O2VbZS52aXNpdG9yR2xvYmFsT2JqZWN0QWxpYXNdLmw9KG5ldyBEYXRlKS5nZXRUaW1lKCk7cj10LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7ci5zcmM9bztyLmFzeW5jPXRydWU7aT10LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpWzBdO2kucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocixpKX0pKHdpbmRvdyxkb2N1bWVudCxcImh0dHBzOi8vZGlmZnVzZXItY2RuLmFwcC11czEuY29tL2RpZmZ1c2VyL2RpZmZ1c2VyLmpzXCIsXCJ2Z29cIik7XG4gICAgdmdvKCdzZXRBY2NvdW50JywgJzYxMzQ4NDYyNicpO1xuICAgIHZnbygnc2V0VHJhY2tCeURlZmF1bHQnLCB0cnVlKTtcblxuICAgIHZnbygncHJvY2VzcycpO1xuPC9zY3JpcHQ+XG4iLCJhdHRyaWJ1dGVzIjpbXX1d