xiaomianao666

小程序:腾讯视频

Feb 14th, 2023
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@腾讯视频@eyJmaXJzdEhlYWRlciI6ImNsYXNzIiwibGFzdF9jaGFwdGVyX3J1bGUiOiJqczpcbi8vbG9nKE1ZX1VSTClcbnZhciBjaWQgPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcbnZhciB2aWQgPSBNWV9VUkwuc3BsaXQoJyMnKVsyXTtcbi8vbG9nKGNpZClcbi8vbG9nKHZpZClcbmNvbnN0IGVqVXJsID0gXCJodHRwczovL3BiYWNjZXNzLnZpZGVvLnFxLmNvbS90cnBjLnVuaXZlcnNhbF9iYWNrZW5kX3NlcnZpY2UucGFnZV9zZXJ2ZXJfcnBjLlBhZ2VTZXJ2ZXIvR2V0UGFnZURhdGE/dmlkZW9fYXBwaWQ9MzAwMDAxMCZ2cGxhdGZvcm09MlwiO1xudmFyIGluZm9fZmV0Y2hEYXRhID0gSlNPTi5wYXJzZShmZXRjaFBDKGVqVXJsLCB7XG4gICAgaGVhZGVyczoge1xuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgXCJyZWZlcmVyXCI6IFwiaHR0cHM6Ly92LnFxLmNvbS9cIixcbiAgICAgICAgXCJDb29raWVcIjogXCJ2aWRlb19wbGF0Zm9ybT0yO3Z2ZXJzaW9uX25hbWU9OC4yLjk1XCJcbiAgICB9LFxuICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgYm9keToge1xuICAgICAgICBcInBhZ2VfcGFyYW1zXCI6IHtcbiAgICAgICAgICAgIFwicmVxX2Zyb21cIjogXCJ3ZWJcIixcbiAgICAgICAgICAgIFwiY2lkXCI6IChjaWQgPyBjaWQgOiBcIlwiKSxcbiAgICAgICAgICAgIFwidmlkXCI6IHZpZCxcbiAgICAgICAgICAgIFwibGlkXCI6IFwiXCIsXG4gICAgICAgICAgICBcInBhZ2VfdHlwZVwiOiBcImRldGFpbF9vcGVyYXRpb25cIixcbiAgICAgICAgICAgIFwicGFnZV9pZFwiOiBcImRldGFpbF9wYWdlX2ludHJvZHVjdGlvblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiaGFzX2NhY2hlXCI6IDFcbiAgICB9XG59KSk7XG4vL2xvZyhpbmZvX2ZldGNoRGF0YSlcbnZhciBpbmZvX0pzb24gPSBpbmZvX2ZldGNoRGF0YS5kYXRhLm1vZHVsZV9saXN0X2RhdGFzWzBdLm1vZHVsZV9kYXRhc1swXS5pdGVtX2RhdGFfbGlzdHMuaXRlbV9kYXRhc1swXTtcbi8vbG9nKGluZm9fSnNvbilcbnZhciBpdGVtX3BhcmFtcyA9IGluZm9fSnNvbi5pdGVtX3BhcmFtczsgLy/lvbHop4bkv6Hmga9cbnZhciB1cGRhdGVfbm90aWZ5X2Rlc2MgPSBpdGVtX3BhcmFtcy51cGRhdGVfbm90aWZ5X2Rlc2MgPyBpdGVtX3BhcmFtcy51cGRhdGVfbm90aWZ5X2Rlc2MgOiBpdGVtX3BhcmFtcy5kZXRhaWxfaW5mbztcbnNldFJlc3VsdCh1cGRhdGVfbm90aWZ5X2Rlc2MpO1xuIiwidGl0bGUiOiLohb7orq/op4bpopEiLCJhdXRob3IiOiLpqazljJbohb4iLCJ1cmwiOiJoaWtlcjovL2VtcHR5IyNodHRwczovL3BiYWNjZXNzLnZpZGVvLlFRLmNvbS90cnBjLnZlY3Rvcl9sYXlvdXQucGFnZV92aWV3LlBhZ2VTZXJ2aWNlL2dldFBhZ2U/dmlkZW9fYXBwaWQ9MzAwMDAxMCMjZnlwYWdlIiwidmVyc2lvbiI6MTAsImNvbF90eXBlIjoibW92aWVfM19tYXJxdWVlIiwiY2xhc3NfbmFtZSI6IiIsInR5cGUiOiJ2aWRlbyIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxudmFyIGQgPSBbXTtcbnZhciBNID0gTVlfVVJMLnNwbGl0KCcjIycpO1xuY29uc3QgcGFnZSA9IE1ZX1BBR0U7XG5hZGRMaXN0ZW5lcignb25DbG9zZScsICgpID0+IHtcbiAgICBjbGVhck15VmFyKFwic2hlbHZlc0xpc3RcIik7XG4gICAgY2xlYXJNeVZhcihcInNoZWx2ZXNfTG9hZGluZGV4XCIpO1xuICAgIGNsZWFyTXlWYXIoXCJ2aWRlb19Mb2FkaW5kZXhcIilcbn0pXG5hZGRMaXN0ZW5lcignb25SZWZyZXNoJywgKCkgPT4ge1xuICAgIGNsZWFyTXlWYXIoXCJzaGVsdmVzTGlzdFwiKTtcbiAgICBjbGVhck15VmFyKFwic2hlbHZlc19Mb2FkaW5kZXhcIik7XG4gICAgY2xlYXJNeVZhcihcInZpZGVvX0xvYWRpbmRleFwiKVxufSlcblxudmFyIGdldFJhbmRvbUFycmF5VmFsdWUgPSBmdW5jdGlvbihhcnIsIG51bSkge1xuICAgIHZhciBzRGF0YSA9IGFyci5zbGljZSgwKSxcbiAgICAgICAgaSA9IGFyci5sZW5ndGgsXG4gICAgICAgIG1pbiA9IGkgLSBudW0sXG4gICAgICAgIGl0ZW0sIGluZGV4O1xuICAgIHdoaWxlIChpLS0gPiBtaW4pIHtcbiAgICAgICAgaW5kZXggPSBNYXRoLmZsb29yKChpICsgMSkgKiBNYXRoLnJhbmRvbSgpKTtcbiAgICAgICAgaXRlbSA9IHNEYXRhW2luZGV4XTtcbiAgICAgICAgc0RhdGFbaW5kZXhdID0gc0RhdGFbaV07XG4gICAgICAgIHNEYXRhW2ldID0gaXRlbTtcbiAgICB9XG4gICAgcmV0dXJuIHNEYXRhLnNsaWNlKG1pbik7XG59XG5cbnZhciBzZWNvbmRzVG9UaW1lID0gZnVuY3Rpb24oc2Vjb25kcykge1xuICAgIHZhciBob3VycyA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDM2MDApO1xuICAgIHZhciBtaW51dGVzID0gTWF0aC5mbG9vcigoc2Vjb25kcyAtIChob3VycyAqIDM2MDApKSAvIDYwKTtcbiAgICB2YXIgc2Vjb25kcyA9IHNlY29uZHMgLSAoaG91cnMgKiAzNjAwKSAtIChtaW51dGVzICogNjApO1xuXG4gICAgLy8gcm91bmQgc2Vjb25kc1xuICAgIHNlY29uZHMgPSBNYXRoLnJvdW5kKHNlY29uZHMgKiAxMDApIC8gMTAwXG5cbiAgICB2YXIgcmVzdWx0ID0gKGhvdXJzIDwgMTAgPyBcIjBcIiArIGhvdXJzIDogaG91cnMpO1xuICAgIHJlc3VsdCArPSBcIjpcIiArIChtaW51dGVzIDwgMTAgPyBcIjBcIiArIG1pbnV0ZXMgOiBtaW51dGVzKTtcbiAgICByZXN1bHQgKz0gXCI6XCIgKyAoc2Vjb25kcyA8IDEwID8gXCIwXCIgKyBzZWNvbmRzIDogc2Vjb25kcyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmlmICghZmlsZUV4aXN0KCdoaWtlcjovL2ZpbGVzL2NhY2hlL3R4X1R5cGVzLmpzb24nKSkge1xuICAgIGxldCBob21lVXJsID0gXCJodHRwczovL3YucXEuY29tL1wiO1xuICAgIGxldCBob21lSHRtbCA9IGZldGNoKGhvbWVVcmwsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgXCJVc2VyLUFnZW50XCI6IFBDX1VBLFxuICAgICAgICAgICAgXCJSZWZlcmVyXCI6IFwiaHR0cHM6Ly92LnFxLmNvbS9cIlxuICAgICAgICB9XG4gICAgfSk7XG4gICAgbGV0IGpkYXRhID0gaG9tZUh0bWwubWF0Y2goL3dpbmRvdy5fX0lOSVRJQUxfU1RBVEVfXyguKj8pPSguKj8pPFxcLy8pWzJdO1xuICAgIC8vbG9nKGpkYXRhKVxuICAgIC8vd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2NhY2hlL3R4Lmpzb24nLCBqZGF0YSk7XG4gICAgbGV0IFR5cGVGaWxlID0gSlNPTi5wYXJzZShqZGF0YSkuc3RvcmVVbml2ZXJzYWxEYXRhLmNoYW5uZWxMaXN0RGF0YS5jaGFubmVsTGlzdDtcbiAgICAvL2xvZyhUeXBlRmlsZSlcbiAgICB3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL2NhY2hlL3R4X1R5cGVzLmpzb25cIiwgSlNPTi5zdHJpbmdpZnkoVHlwZUZpbGUpKTtcbn1cblxuLy9ib2R55Yid5aeL5YC8XG5sZXQgYm9keSA9IHtcbiAgICBwYWdlX2NvbnRleHQ6IG51bGwsXG4gICAgcGFnZV9wYXJhbXM6IHtcbiAgICAgICAgcGFnZV9pZDogZ2V0TXlWYXIoXCJjaGFubmVsXCIsIFwiMTAwMTAxXCIpLFxuICAgICAgICBwYWdlX3R5cGU6IFwiY2hhbm5lbFwiXG4gICAgfSxcbiAgICBwYWdlX2J5cGFzc19wYXJhbXM6IHtcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICBjYWxsZXJfaWQ6IFwiMzAwMDAxMFwiLFxuICAgICAgICAgICAgZGF0YV9tb2RlOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHBhZ2VfaWQ6IGdldE15VmFyKFwiY2hhbm5lbFwiLCBcIjEwMDEwMVwiKSxcbiAgICAgICAgICAgIHBhZ2VfdHlwZTogXCJjaGFubmVsXCIsXG4gICAgICAgICAgICBwbGF0Zm9ybV9pZDogXCIyXCIsXG4gICAgICAgICAgICB1c2VyX21vZGU6IFwiZGVmYXVsdFwiXG4gICAgICAgIH0sXG4gICAgICAgIHNjZW5lOiBcImNoYW5uZWxcIixcbiAgICAgICAgYWJ0ZXN0X2J5cGFzc19pZDogXCJcIiAvL2Nvb2tpZeS4reeahHZpZGVvX2d1aWTnmoTlgLxcbiAgICB9XG59O1xuLy9sb2coYm9keSlcbmlmIChwYWdlID09IDEpIHtcbiAgICBsZXQgaG9tZVR5cGVzID0gSlNPTi5wYXJzZShyZWFkRmlsZShcImhpa2VyOi8vZmlsZXMvY2FjaGUvdHhfVHlwZXMuanNvblwiKSk7XG4gICAgaG9tZVR5cGVzLmZvckVhY2goaXQgPT4ge1xuICAgICAgICBsZXQgbmFtZSA9IGl0Lm5hbWU7XG4gICAgICAgIGlmICghL+S6kea4uOaIj3xWSVB85ri45oiP5bqTfFdXRS8udGVzdChuYW1lKSkge1xuICAgICAgICAgICAgZC5wdXNoKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogZ2V0TXlWYXIoJ2hvbWVUeXBlJywgXCLnsr7pgIlcIikgPT09IG5hbWUgPyAn4pmlJyArICfigJzigJzigJ3igJ08Yj48Zm9udCBjb2xvcj0jRkE3Mjk4PicgKyBuYW1lICsgJzwvZm9udD48L2I+JyA6IG5hbWUsXG4gICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKG5hbWUsIHVuQ2hhbm5lbElkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFwiaG9tZVR5cGVcIiwgbmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFwiY2hhbm5lbFwiLCB1bkNoYW5uZWxJZCk7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoXCJzaGVsdmVzTGlzdFwiKTtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcihcInNoZWx2ZXNfTG9hZGluZGV4XCIpO1xuICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKFwidmlkZW9fTG9hZGluZGV4XCIpXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpOyAvL2ZhbHNl5Yi35paw5LiN5Zue5rua5Yiw6aG16Z2i6aG26YOoXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcImhpa2VyOi8vZW1wdHlcIlxuICAgICAgICAgICAgICAgIH0sIG5hbWUsIGl0LnVuQ2hhbm5lbElkKSxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXCJzY3JvbGxfYnV0dG9uXCJcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSlcbiAgICBkLnB1c2goe1xuICAgICAgICBjb2xfdHlwZTogXCJibGFua19ibG9ja1wiXG4gICAgfSk7XG5cbiAgICB2YXIgaG9tZWZldGNoRGF0YSA9IEpTT04ucGFyc2UoZmV0Y2hQQyhNWzFdLCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgXCJyZWZlcmVyXCI6IFwiaHR0cHM6Ly92LnFxLmNvbS9cIixcbiAgICAgICAgICAgIFwiQ29va2llXCI6IFwidmlkZW9fcGxhdGZvcm09MlwiXG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgIGJvZHk6IGJvZHlcbiAgICB9KSlcbiAgICAvL2xvZyhmRGF0YSlcbiAgICB2YXIgaG9tZUNhcmRMaXN0ID0gaG9tZWZldGNoRGF0YS5kYXRhLkNhcmRMaXN0O1xuICAgIHZhciBoYXNfbmV4dF9wYWdlID0gaG9tZWZldGNoRGF0YS5kYXRhLmhhc19uZXh0X3BhZ2U7XG4gICAgcHV0TXlWYXIoXCJoYXNfbmV4dF9wYWdlXCIsIGhhc19uZXh0X3BhZ2UpO1xufVxuLy9sb2coaG9tZUNhcmRMaXN0KVxuLy9sb2coaGFzX25leHRfcGFnZSlcbmZ1bmN0aW9uIExvYWRfcGFnZV92aWV3KGhvbWVDYXJkTGlzdCkge1xuICAgIGZ1bmN0aW9uIHB1c2hEYXRhKHB1c2hfbGlzdHMsIHNlY29uZHNUb1RpbWUsIGV4dHJhX3BhcmFtKSB7XG4gICAgICAgIGxldCB0ZW1wX2xpc3RzID0gW107XG4gICAgICAgIHB1c2hfbGlzdHMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIC8vbG9nKGl0ZW0pICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLnBhcmFtcy50eXBlICE9IFwiaDVcIikge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGljID0gaXRlbS5wYXJhbXMubmV3X3BpY192dCB8fCBpdGVtLnBhcmFtcy5pbWFnZV91cmwgfHwgaXRlbS5wYXJhbXMubmV3X3BpY19oeiB8fCBpdGVtLnBhcmFtcy5pbWFnZV91cmxfdmVydGljYWwgfHwgaXRlbS5wYXJhbXMucGljXzU0MHgzMDQgfHwgaXRlbS5wYXJhbXMucGljNDk2eDI4MDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKC9cXC5qcGdcXC8vLnRlc3QocGljKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gcGljLmxhc3RJbmRleE9mKFwiXFwvXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGljID0gcGljLnN1YnN0cmluZygwLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbGV0IGRlcyA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLnBhcmFtcy5pbWd0YWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvdGFnXzJ8dGFnXzMvLnRlc3QoaXRlbS5wYXJhbXMuaW1ndGFnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbWd0YWcgPSBKU09OLnBhcnNlKGl0ZW0ucGFyYW1zLmltZ3RhZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9sb2coaW1ndGFnKSAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcyA9IGltZ3RhZy50YWdfMy50ZXh0ID8gaW1ndGFnLnRhZ18zLnRleHQgOiBpbWd0YWcudGFnXzIudGV4dC5zcGxpdChcIi1cIilbMF1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzID0gaXRlbS5wYXJhbXMuaW1ndGFnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVzID0gaXRlbS5wYXJhbXMudGltZWxvbmcgfHwgaXRlbS5wYXJhbXMucHVibGlzaF9kYXRlIHx8IGl0ZW0ucGFyYW1zLmVwaXNvZGVfdXBkYXRlZCB8fCAoaXRlbS5wYXJhbXMuZHVyYXRpb24gPyBzZWNvbmRzVG9UaW1lKGl0ZW0ucGFyYW1zLmR1cmF0aW9uKSA6IFwiXCIpIHx8IChpdGVtLnBhcmFtcy5jbXNfaXN2aXAgPT0gMSA/IFwiVklQXCIgOiBcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsZXQgcGFyYW1fY2lkID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0ucGFyYW1zLmNpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1fY2lkID0gaXRlbS5wYXJhbXMuY2lkO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0ucGFyYW1zLmF0dGFjaGVkX2lkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbV9jaWQgPSBpdGVtLnBhcmFtcy5hdHRhY2hlZF9pZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvL2xvZyhpdGVtKVxuICAgICAgICAgICAgICAgICAgICBpZiAoZXh0cmFfcGFyYW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBfbGlzdHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ucGFyYW1zLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGRlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBwaWMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcImhpa2VyOi8vcGFnZS9lal9wYWdlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBleHRyYV9wYXJhbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljVXJsOnBpYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3I6IGl0ZW0ucGFyYW1zLmR1cmF0aW9uID8gc2Vjb25kc1RvVGltZShpdGVtLnBhcmFtcy5kdXJhdGlvbikgOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFwiaGlrZXI6Ly9lbXB0eSNcIiArIHBhcmFtX2NpZCArIFwiI1wiICsgKGl0ZW0ucGFyYW1zLnZpZCA/IGl0ZW0ucGFyYW1zLnZpZCA6IFwiXCIpICsgXCIjaW1tZXJzaXZlVGhlbWUjXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcF9saXN0cy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5wYXJhbXMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogZGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY191cmw6IHBpYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFwiaGlrZXI6Ly9wYWdlL2VqX3BhZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNVcmw6cGljLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcjppdGVtLnBhcmFtcy5kdXJhdGlvbiA/IHNlY29uZHNUb1RpbWUoaXRlbS5wYXJhbXMuZHVyYXRpb24pIDogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOlwiaGlrZXI6Ly9lbXB0eSNcIiArIHBhcmFtX2NpZCArIFwiI1wiICsgKGl0ZW0ucGFyYW1zLnZpZCA/IGl0ZW0ucGFyYW1zLnZpZCA6IFwiXCIpICsgXCIjaW1tZXJzaXZlVGhlbWUjXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGxvZyhlLnRvU3RyaW5nKCkpXG4gICAgICAgICAgICAgICAgbG9nKGl0ZW0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGVtcF9saXN0c1xuICAgIH1cblxuICAgIGhvbWVDYXJkTGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIC8vbG9nKGl0ZW0udHlwZSlcbiAgICAgICAgLypcbiAgICAgICAgaWYgKC9odHRwLy50ZXN0KGl0ZW0uY2hpbGRyZW5fbGlzdC5saXN0LmNhcmRzWzBdLmlkKSlcbiAgICAgICAgICAgIHJldHVybiovXG4gICAgICAgIGlmIChpdGVtLnR5cGUgPT0gXCJwY19jYXJvdXNlbFwiKSB7XG4gICAgICAgICAgICAvL+a1t+aKpeWIl+ihqFxuICAgICAgICAgICAgLypcbiAgICAgICAgICAgIGxvZyhcIuWKoOi9vea1t+aKpVwiKSAgICAgICBcbiAgICAgICAgICAgIHB1dFZhcihcInBjX2Nhcm91c2VsXCIsIEpTT04uc3RyaW5naWZ5KGl0ZW0uY2hpbGRyZW5fbGlzdC5saXN0LmNhcmRzKSlcbiAgICAgICAgICAgIGQucHVzaCh7XG4gICAgICAgICAgICAgICAgdXJsOiBnZXRQYXRoKCdoaWtlcjovL2ZpbGVzL1R5cmFudEcvcHVibGljL3R4X2Jhbm5lcnMuaHRtbCcpLFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcIng1X3dlYnZpZXdfc2luZ2xlXCIsXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogXCJhdXRvXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSovXG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09IFwicGNfaG90X2ZpbHRlclwiKSB7XG4gICAgICAgICAgICAvL+eDremXqOWIhuexu+aOqOiNkFxuICAgICAgICAgICAgdmFyIHBjX2hvdF9maWx0ZXIgPSBpdGVtLmNoaWxkcmVuX2xpc3QubGlzdC5jYXJkcztcbiAgICAgICAgICAgIC8vbG9nKHBjX2hvdF9maWx0ZXIpXG4gICAgICAgICAgICBwY19ob3RfZmlsdGVyLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5wYXJhbXMubGFiZWxfdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9jaGFubmVsX2xpc3RfZmlsdGVyJyxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFwic2Nyb2xsX2J1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBNWzFdICsgXCIjI2Z5cGFnZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyX3ZhbHVlOiBpdGVtLnBhcmFtcy5maWx0ZXJfdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlX2lkOiBpdGVtLnBhcmFtcy5wYWdlX2lkXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PSBcInBjX3NoZWx2ZXNcIikge1xuICAgICAgICAgICAgLy9sb2coaXRlbSlcbiAgICAgICAgICAgIGlmIChnZXRNeVZhcihcInNoZWx2ZXNfTG9hZGluZGV4XCIsIFwiMVwiKSA9PSBcIjFcIikge1xuICAgICAgICAgICAgICAgIC8v56ys5LiA5qyh5Yqg6L29ICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB2YXIgc2hlbHZlc0xpc3QgPSBpdGVtLmNoaWxkcmVuX2xpc3QubGlzdC5jYXJkcztcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5wYXJhbXMuWlRfbGVhZl9oZWFkICsgJ1xcdFxcdFxcdFxcdFxcdFxcdOaNouS4gOaNovCflIEnLFxuICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBcImh0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzEzNi5wbmdAUmVmZXJlcj1cIixcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKHNoZWx2ZXNMaXN0LCBnZXRSYW5kb21BcnJheVZhbHVlLCBzZWNvbmRzVG9UaW1lLCBwdXNoRGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNoZUxpc3RzID0gZ2V0UmFuZG9tQXJyYXlWYWx1ZShzaGVsdmVzTGlzdCwgNik7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2xvZyhnZXRSYW5kb21BcnJheVZhbHVlLnRvU3RyaW5nKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2xvZyhzZWNvbmRzVG9UaW1lLnRvU3RyaW5nKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2hlcmFuZG9tTGlzdHMgPSBwdXNoRGF0YShzaGVMaXN0cywgc2Vjb25kc1RvVGltZSwgXCJzaGVsdmVzTGlzdHNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2xvZyhzaGVyYW5kb21MaXN0cykgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2hlcmFuZG9tTGlzdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVJdGVtQnlDbHMoJ3NoZWx2ZXNMaXN0cycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEl0ZW1BZnRlcignWlRfbGVhZl9oZWFkXzEnLCBzaGVyYW5kb21MaXN0cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXG4gICAgICAgICAgICAgICAgICAgIH0sIHNoZWx2ZXNMaXN0LCBnZXRSYW5kb21BcnJheVZhbHVlLCBzZWNvbmRzVG9UaW1lLCBwdXNoRGF0YSksXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcImF2YXRhclwiLFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IFwiWlRfbGVhZl9oZWFkXzFcIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdmFyIHNoZWx2ZXNEYXRhID0gZ2V0UmFuZG9tQXJyYXlWYWx1ZShzaGVsdmVzTGlzdCwgNik7XG4gICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoZCwgcHVzaERhdGEoc2hlbHZlc0RhdGEsIHNlY29uZHNUb1RpbWUsIFwic2hlbHZlc0xpc3RzXCIpKTtcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcInNoZWx2ZXNfTG9hZGluZGV4XCIsIFwiMlwiKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5wYXJhbXMuWlRfbGVhZl9oZWFkLFxuICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBcImh0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9tZXNzeS8xNjcuc3ZnQFJlZmVyZXI9XCIsXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChcIiNub1JlY29yZEhpc3RvcnkjI25vTG9hZGluZyNcIikubGF6eVJ1bGUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFwiYXZhdGFyXCJcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB2YXIgc2hlbHZlc0xpc3QgPSBpdGVtLmNoaWxkcmVuX2xpc3QubGlzdC5jYXJkcztcbiAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShkLCBwdXNoRGF0YShzaGVsdmVzTGlzdCwgc2Vjb25kc1RvVGltZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PSBcImNoYW5uZWxfcGxheV9zY2hlZHVsZVwiKSB7XG4gICAgICAgICAgICAvL+WKqOa8q+i/veeVquaXtumXtOihqCAgICAgICAgICAgXG4gICAgICAgICAgICBsZXQgY19wX3NjaGVkdWxlID0gaXRlbS5jaGlsZHJlbl9saXN0Lmxpc3QuY2FyZHM7XG4gICAgICAgICAgICBsZXQgZmxpcF9pbmZvID0gaXRlbS5mbGlwX2luZm9zLnRhYjtcbiAgICAgICAgICAgIGlmIChmbGlwX2luZm8pIHtcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcImZsaXBfaW5mb1wiLCBKU09OLnN0cmluZ2lmeShmbGlwX2luZm8pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vbG9nKGNfcF9zY2hlZHVsZSlcbiAgICAgICAgICAgIHZhciBzY3RpdGxlQXJyID0gW107XG4gICAgICAgICAgICBjX3Bfc2NoZWR1bGUuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPCA3KSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IGl0ZW0ucGFyYW1zLnRpdGxlO1xuICAgICAgICAgICAgICAgICAgICBzY3RpdGxlQXJyLnB1c2godGl0bGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT0gNikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXCJzY3RpdGxlQXJyXCIsIEpTT04uc3RyaW5naWZ5KHNjdGl0bGVBcnIpKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKHNjdGl0bGVBcnIpXG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhX2tleSA9IGl0ZW0ucGFyYW1zLmRhdGFfa2V5O1xuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGdldE15VmFyKCd3ZWVrJywgXCLku4rlpKlcIikgPT09IHRpdGxlID8gJ+KAnOKAnOKAneKAnTxiPjxmb250IGNvbG9yPSNGQTcyOTg+JyArIHRpdGxlICsgJzwvZm9udD48L2I+JyA6IHRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKHRpdGxlLCBkYXRhX2tleSwgaW5kZXgsIHB1c2hEYXRhLCBzZWNvbmRzVG9UaW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXCJ3ZWVrXCIsIHRpdGxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3B1dE15VmFyKFwiZGF0YV9rZXlcIiwgZGF0YV9rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbG9nKGRhdGFfa2V5KSAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGFfa2V5X09iaiA9IG5ldyBPYmplY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YV9rZXlzID0gZGF0YV9rZXkuc3BsaXQoXCImXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YV9rZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfa2V5X09ialtkYXRhX2tleXNbaV0uc3BsaXQoXCI9XCIpWzBdXSA9IHVuZXNjYXBlKGRhdGFfa2V5c1tpXS5zcGxpdChcIj1cIilbMV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2xvZyhkYXRhX2tleV9PYmopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9sb2coSlNPTi5wYXJzZShnZXRNeVZhcihcImZsaXBfaW5mb1wiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBVcmwgPSBcImh0dHBzOi8vcGJhY2Nlc3MudmlkZW8ucXEuY29tL3RycGMudmVjdG9yX2xheW91dC5wYWdlX3ZpZXcuUGFnZVNlcnZpY2UvZ2V0Q2FyZD92aWRlb19hcHBpZD0zMDAwMDEwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNjZmV0Y2hEYXRhID0gSlNPTi5wYXJzZShmZXRjaFBDKHBVcmwsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInJlZmVyZXJcIjogXCJodHRwczovL3YucXEuY29tL1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb29raWVcIjogXCJ2aWRlb19wbGF0Zm9ybT0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwYWdlX2NvbnRleHRcIjogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicGFnZV9wYXJhbXNcIjogZGF0YV9rZXlfT2JqLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJmbGlwX2luZm9cIjogSlNPTi5wYXJzZShnZXRNeVZhcihcImZsaXBfaW5mb1wiKSB8fCB7fSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2NhcmRzID0gc2NmZXRjaERhdGEuZGF0YS5jYXJkLmNoaWxkcmVuX2xpc3QubGlzdC5jYXJkcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcG9zdGVyTGlzdHMgPSBwdXNoRGF0YShzY2FyZHMuc2xpY2UoNyksIHNlY29uZHNUb1RpbWUsIFwicG9zdGVyTGlzdHNcIik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zdGVyTGlzdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9sb2cocG9zdGVyTGlzdHMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY3RpdGxlQXJyID0gSlNPTi5wYXJzZShnZXRNeVZhcihcInNjdGl0bGVBcnJcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKFwid2Vla19pZF9cIiArIGdldE15VmFyKFwic2N0aXRsZU51bVwiLCBcIjBcIiksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzY3RpdGxlQXJyW3BhcnNlSW50KGdldE15VmFyKFwic2N0aXRsZU51bVwiLCBcIjBcIikpXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKFwid2Vla19pZF9cIiArIGluZGV4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnTxiPjxmb250IGNvbG9yPSNGQTcyOTg+JyArIHRpdGxlICsgJzwvZm9udD48L2I+J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcInNjdGl0bGVOdW1cIiwgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVJdGVtQnlDbHMoJ3Bvc3Rlckxpc3RzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEl0ZW1BZnRlcignd2Vla19pZF82JywgcG9zdGVyTGlzdHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJoaWtlcjovL2VtcHR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRpdGxlLCBkYXRhX2tleSwgaW5kZXgsIHB1c2hEYXRhLCBzZWNvbmRzVG9UaW1lKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcImZsZXhfYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIndlZWtfaWRfXCIgKyBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoZCwgcHVzaERhdGEoY19wX3NjaGVkdWxlLnNsaWNlKDcpLCBzZWNvbmRzVG9UaW1lLCBcInBvc3Rlckxpc3RzXCIpKTtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT0gXCJwY192aWRlb1wiKSB7XG4gICAgICAgICAgICAvL+S4uuS9oOaOqOiNkFxuICAgICAgICAgICAgaWYgKGdldE15VmFyKFwidmlkZW9fTG9hZGluZGV4XCIsIFwiMVwiKSA9PSBcIjFcIikge1xuICAgICAgICAgICAgICAgIGQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5Li65L2g5o6o6I2QJyxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBcImhpa2VyOi8vZW1wdHlcIixcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFwidGV4dF8xXCJcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBwY192aWRlbyA9IGl0ZW0uY2hpbGRyZW5fbGlzdC5saXN0LmNhcmRzO1xuICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoZCwgcHVzaERhdGEocGNfdmlkZW8sIHNlY29uZHNUb1RpbWUpKTtcblxuICAgICAgICAgICAgcHV0TXlWYXIoXCJ2aWRlb19Mb2FkaW5kZXhcIiwgKHBhcnNlSW50KGdldE15VmFyKFwidmlkZW9fTG9hZGluZGV4XCIsIFwiMVwiKSkgKyAxKSlcbiAgICAgICAgfVxuICAgIH0pXG59XG4vL2xvZyhwYWdlKVxuLy9sb2coZ2V0TXlWYXIoXCJoYXNfbmV4dF9wYWdlXCIpKVxuZnVuY3Rpb24gbG9hZF9wYWdlX2luZGV4KHBhZ2UpIHtcbiAgICBib2R5LnBhZ2VfY29udGV4dCA9IHtcbiAgICAgICAgXCJwYWdlX2luZGV4XCI6IHBhZ2UudG9TdHJpbmcoKVxuICAgIH07XG4gICAgLy9sb2coYm9keSlcbiAgICB2YXIgaG9tZWZldGNoRGF0YSA9IEpTT04ucGFyc2UoZmV0Y2hQQyhNWzFdLCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgXCJyZWZlcmVyXCI6IFwiaHR0cHM6Ly92LnFxLmNvbS9cIixcbiAgICAgICAgICAgIFwiQ29va2llXCI6IFwidmlkZW9fcGxhdGZvcm09MlwiXG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgIGJvZHk6IGJvZHlcbiAgICB9KSlcbiAgICAvL2xvZyhob21lZmV0Y2hEYXRhKVxuICAgIHZhciBob21lQ2FyZExpc3QgPSBob21lZmV0Y2hEYXRhLmRhdGEuQ2FyZExpc3Q7XG4gICAgdmFyIGhhc19uZXh0X3BhZ2UgPSBob21lZmV0Y2hEYXRhLmRhdGEuaGFzX25leHRfcGFnZTtcbiAgICBwdXRNeVZhcihcImhhc19uZXh0X3BhZ2VcIiwgaGFzX25leHRfcGFnZSlcbiAgICBMb2FkX3BhZ2Vfdmlldyhob21lQ2FyZExpc3QpXG59XG5pZiAocGFnZSA9PSAxKSB7XG4gICAgTG9hZF9wYWdlX3ZpZXcoaG9tZUNhcmRMaXN0KVxuICAgIGlmIChnZXRNeVZhcihcImhhc19uZXh0X3BhZ2VcIikgPT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgLy9sb2coZ2V0TXlWYXIoXCJoYXNfbmV4dF9wYWdlXCIpKVxuICAgICAgICBsb2FkX3BhZ2VfaW5kZXgocGFnZSlcbiAgICB9XG59IGVsc2UgaWYgKGdldE15VmFyKFwiaGFzX25leHRfcGFnZVwiKSA9PSBcInRydWVcIikge1xuICAgIGxvYWRfcGFnZV9pbmRleChwYWdlKVxufVxuc2V0UmVzdWx0KGQpOyIsInNlYXJjaF91cmwiOiJoaWtlcjovL2VtcHR5IyNodHRwczovL3BiYWNjZXNzLnZpZGVvLlFRLmNvbS90cnBjLnZpZGVvc2VhcmNoLnNtYXJ0Ym94U2VydmVyLkh0dHBSb3VudFJlY2FsbC9TbWFydGJveCMjKiojI2Z5cGFnZSIsImdyb3VwIjoi4pGg5q2j54mIIiwic2VhcmNoRmluZCI6ImpzOlxubGV0IGQgPSBbXTtcbnZhciBNID0gTVlfVVJMLnNwbGl0KFwiIyNcIik7XG5sZXQgcXVlcnkgPSBNWzFdO1xudmFyIGhvbWVmZXRjaERhdGEgPSBKU09OLnBhcnNlKGZldGNoUEMoTVsxXSwge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgIFwiQ29va2llXCI6IFwidmlkZW9fcGxhdGZvcm09MlwiLFxuICAgICAgICBcInJlZmVyZXJcIjogXCJodHRwczovL3YucXEuY29tL1wiXG4gICAgfSxcbiAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgIGJvZHk6IHtcbiAgICAgICAgXCJxdWVyeVwiOiBNWzJdLFxuICAgICAgICBcImFwcElEXCI6IFwiMzE3MlwiLFxuICAgICAgICBcImFwcEtleVwiOiBcImxHaEZJUGVEM0hzTzl4RXBcIixcbiAgICAgICAgXCJwYWdlTnVtXCI6IChNWzNdIC0gMSksXG4gICAgICAgIFwicGFnZVNpemVcIjogMTBcbiAgICB9XG59KSk7XG4vL2xvZyhob21lZmV0Y2hEYXRhKVxubGV0IGNfcF9zY2hlZHVsZSA9IGhvbWVmZXRjaERhdGEuZGF0YS5zbWFydGJveEl0ZW1MaXN0O1xuY19wX3NjaGVkdWxlLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAvL2xvZyhpdGVtKVxuICAgIHRyeSB7XG4gICAgICAgIC8vbG9nKGl0ZW0udmlkZW9JbmZvLnBsYXlTaXRlcy5lcGlzb2RlSW5mb0xpc3RbMF0udXJsKVxuICAgICAgICBsZXQgcGljID0gaXRlbS52aWRlb0luZm8uaW1nVXJsO1xuICAgICAgICBsZXQgaW5kZXggPSBwaWMubGFzdEluZGV4T2YoXCJcXC9cIik7XG4gICAgICAgIHBpYyA9IHBpYy5zdWJzdHJpbmcoMCwgaW5kZXggKyAxKTtcbiAgICAgICAgbGV0IGFjdG9ycyA9IGl0ZW0udmlkZW9JbmZvLmFjdG9ycztcbiAgICAgICAgbGV0IGRlcyA9IFwiXCI7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWN0b3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBkZXMgKz0gYWN0b3JzW2ldICsgXCJcXHRcXHRcIlxuICAgICAgICB9XG4gICAgICAgIC8vVVJM5aSH55So6ZO+5o6lIGh0dHBzOi8vbm9kZS52aWRlby5xcS5jb20veC9hcGkvZmxvYXRfdmluZm8yP2NpZD1cbiAgICAgICAgZC5wdXNoKHtcbiAgICAgICAgICAgIHRpdGxlOiBpdGVtLmJhc2ljRG9jLmRvY25hbWUgPyBpdGVtLmJhc2ljRG9jLmRvY25hbWU6aXRlbS5iYXNpY0RvYy50aXRsZSxcbiAgICAgICAgICAgIGRlc2M6IGRlcyxcbiAgICAgICAgICAgIHBpY191cmw6IHBpYyxcbiAgICAgICAgICAgIHVybDogXCJoaWtlcjovL2VtcHR5I1wiICsgaXRlbS5iYXNpY0RvYy5pZCArXCIjXCIrXCJcIitcIiNpbW1lcnNpdmVUaGVtZSNcIixcblxuICAgICAgICB9KVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgbG9nKGUudG9TdHJpbmcoKSlcbiAgICAgICAgbG9nKGl0ZW0pXG4gICAgfVxufSlcbnNldFJlc3VsdChkKTsiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8yIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuJC5yZXF1aXJlKFwiaGlrZXI6Ly9wYWdlL2VqX3BhZ2VcIik7Iiwic2RldGFpbF9jb2xfdHlwZSI6Im1vdmllXzIiLCJzZGV0YWlsX2ZpbmRfcnVsZSI6IioiLCJ1YSI6InBjIiwicHJlUnVsZSI6IiIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLliqjmgIHliIbnsbtcIixcInBhdGhcIjpcImR0XCIsXCJydWxlXCI6XCJ2YXIgZ2V0UmFuZ2VDb2xvcnMgPSBmdW5jdGlvbigpIHvCoMKgwqDCoMKgwqDCoFxcbiAgICByZXR1cm4gJyMnICsgKCcwMDAwMCcgKyAoTWF0aC5yYW5kb20oKSAqIDB4MTAwMDAwMCA8PCAwKS50b1N0cmluZygxNikpLnN1YnN0cigtNik7wqDCoMKgwqDCoFxcbn1cXG5jb25zdCBlbXB0eSA9IFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG5jb25zdCDliIbnsbvpopzoibIgPSBnZXRSYW5nZUNvbG9ycygpO1xcbnZhciBjYXRlZ29yaWVzID0gU0NhdGVzO1xcbi8vbG9nKGNhdGVnb3JpZXMpXFxubGV0IGluaXRfY2F0ZSA9IFtdXFxuZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKSB7XFxuICAgIGluaXRfY2F0ZS5wdXNoKFxcXCIwXFxcIilcXG59XFxuY29uc3QgZm9sZCA9IGdldE15VmFyKCdoZWFkZXIuZ3JvdXAnLCBcXFwiMFxcXCIpXFxuY29uc3QgY2F0ZV90ZW1wX2pzb24gPSBnZXRNeVZhcignaGVhZGVyLmNhdGVnb3J5JywgSlNPTi5zdHJpbmdpZnkoaW5pdF9jYXRlKSlcXG5jb25zdCBjYXRlX3RlbXAgPSBKU09OLnBhcnNlKGNhdGVfdGVtcF9qc29uKVxcblxcbmlmIChwYXJzZUludChwYWdlKSA9PT0gMSkge1xcbiAgICAvKlxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLwn5SNXFxcIixcXG4gICAgICAgIHVybDogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoXFxcIk15a2V5XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpXFxuICAgICAgICB9KSxcXG4gICAgICAgIMKgwqDCoGRlc2M6IFxcXCLmkJzkvaDmg7PnnIvnmoTlvbHop4bjgIHliafpm4bjgIHliqjmvKvnrYkuLi5cXFwiLFxcbiAgICAgICAgwqDCoMKgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0TXlWYXIoXFxcIk15a2V5XFxcIilcXG4gICAgICAgIH1cXG4gICAgfSk7XFxuICAgICovXFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogZm9sZCA9PT0gJzEnID8gJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjogIzE5Qjg5RFxcXCI+OiAoPC9zcGFuPjwvYj4nIDogJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjogIzkxMDExM1xcXCI+OiApPC9zcGFuPjwvYj4nLFxcbiAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChmb2xkKSA9PiB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoJ2hlYWRlci5ncm91cCcsIGZvbGQgPT09ICcxJyA/ICcwJyA6ICcxJyk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgIH0sIGZvbGQpLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgfSlcXG5cXG4gICAgLy9sb2coY2F0ZWdvcmllcy5sZW5ndGgpXFxuICAgIGNhdGVnb3JpZXMuZm9yRWFjaCgoY2F0ZWdvcnksIGluZGV4KSA9PiB7XFxuICAgICAgICAvL2xvZyhjYXRlZ29yeSlcXG4gICAgICAgIGxldCBjbGFzc19rZXkgPSBjYXRlZ29yeS5maWx0ZXJfa2V5O1xcbiAgICAgICAgbGV0IHN1Yl9jYXRlZ29yaWVzID0gY2F0ZWdvcnkuaXRlbXM7XFxuICAgICAgICAvL2xvZyhzdWJfY2F0ZWdvcmllcykgICAgXFxuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcXG4gICAgICAgICAgICAvL2xvZyhjbGFzc19rZXkpXFxuICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXMuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IGl0ZW0ucGFyYW1zLm9wdGlvbl9uYW1lO1xcbiAgICAgICAgICAgICAgICBsZXQgb3BfdmFsdWUgPSBpdGVtLnBhcmFtcy5vcHRpb25fdmFsdWU7XFxuICAgICAgICAgICAgICAgIGlmIChnZXRNeVZhcihjbGFzc19rZXkpKSB7ICAgICAgICAgICAgICAgXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IGdldE15VmFyKGNsYXNzX2tleSkgPT0gb3BfdmFsdWUgPyAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcImNvbG9yOiAnICsg5YiG57G76aKc6ImyICsgJ1xcXCI+JyArIHRpdGxlICsgJzwvc3Bhbj48L2I+JyA6IHRpdGxlO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSBrZXkudG9TdHJpbmcoKSA9PT0gY2F0ZV90ZW1wW2luZGV4XSA/ICfigJzigJzigJ3igJ08Yj48c3BhbiBzdHlsZT1cXFwiY29sb3I6ICcgKyDliIbnsbvpopzoibIgKyAnXFxcIj4nICsgdGl0bGUgKyAnPC9zcGFuPjwvYj4nIDogdGl0bGU7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChvcF92YWx1ZSArICcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChwYXJhbXMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3X2NhdGUgPSBbXVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5jYXRlX3RlbXAuZm9yRWFjaCgoY2F0ZSwgaW5kZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2NhdGUucHVzaChpbmRleCA9PT0gMCA/IHBhcmFtcy5rZXkudG9TdHJpbmcoKSA6IFxcXCIwXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcmFtcy5TZmlsdGVyX2tleS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKHBhcmFtcy5TZmlsdGVyX2tleVtpXSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2hlYWRlci5jYXRlZ29yeScsIEpTT04uc3RyaW5naWZ5KG5ld19jYXRlKSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihwYXJhbXMuY2xhc3Nfa2V5LCBpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2xvZyhpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRlX3RlbXA6IGNhdGVfdGVtcCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGtleSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc19rZXk6IGNsYXNzX2tleSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBTZmlsdGVyX2tleTogU2ZpbHRlcl9rZXksXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogcGFnZSxcXG4gICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9KVxcblxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICB9IGVsc2UgaWYgKGZvbGQgPT09ICcxJykge1xcbiAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gaXRlbS5wYXJhbXMub3B0aW9uX25hbWU7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgb3BfdmFsdWUgPSBpdGVtLnBhcmFtcy5vcHRpb25fdmFsdWU7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0TXlWYXIoY2xhc3Nfa2V5KSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gZ2V0TXlWYXIoY2xhc3Nfa2V5KSA9PSBvcF92YWx1ZSA/ICfigJzigJzigJ3igJ08Yj48c3BhbiBzdHlsZT1cXFwiY29sb3I6ICcgKyDliIbnsbvpopzoibIgKyAnXFxcIj4nICsgdGl0bGUgKyAnPC9zcGFuPjwvYj4nIDogdGl0bGU7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0ga2V5LnRvU3RyaW5nKCkgPT09IGNhdGVfdGVtcFtpbmRleF0gPyAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcImNvbG9yOiAnICsg5YiG57G76aKc6ImyICsgJ1xcXCI+JyArIHRpdGxlICsgJzwvc3Bhbj48L2I+JyA6IHRpdGxlO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKG9wX3ZhbHVlICsgJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHBhcmFtcykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuY2F0ZV90ZW1wW3BhcmFtcy5pbmRleF0gPSBwYXJhbXMua2V5LnRvU3RyaW5nKClcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2hlYWRlci5jYXRlZ29yeScsIEpTT04uc3RyaW5naWZ5KHBhcmFtcy5jYXRlX3RlbXApKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihwYXJhbXMuY2xhc3Nfa2V5LCBpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZV90ZW1wOiBjYXRlX3RlbXAsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBrZXksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzX2tleTogY2xhc3Nfa2V5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBwYWdlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgbG9nKHN1Yl9jYXRlZ29yaWVzKVxcbiAgICAgICAgICAgICAgICBsb2coZS50b1N0cmluZygpKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcblxcbiAgICB9KVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIueJh+W6k1wiLFwicGF0aFwiOlwiY2hhbm5lbF9saXN0X2ZpbHRlclwiLFwicnVsZVwiOlwianM6XFxuYWRkTGlzdGVuZXIoJ29uQ2xvc2UnLCAoKSA9PiB7XFxuICAgIHZhciBTZmlsdGVyX2tleSA9IEpTT04ucGFyc2UoZ2V0TXlWYXIoXFxcIlNmaWx0ZXJfa2V5XFxcIikpO1xcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IFNmaWx0ZXJfa2V5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICBjbGVhck15VmFyKFNmaWx0ZXJfa2V5W2ldKVxcbiAgICB9XFxuICAgIGNsZWFyTXlWYXIoXFxcIlNmaWx0ZXJfa2V5XFxcIik7XFxufSlcXG52YXIgZCA9IFtdO1xcbmNvbnN0IHBhZ2UgPSBNWV9QQUdFO1xcbmxldCBiYXNlVXJsID0gTVlfVVJMLnNwbGl0KFxcXCIjI1xcXCIpWzBdO1xcbmxldCBwYWdlX2lkID0gTVlfUEFSQU1TLnBhZ2VfaWQ7IC8vI2NoYW5uZWxfbGlzdF9zZWNvbmRfcGFnZVxcbnZhciBmaWx0ZXJfdmFsdWUgPSBNWV9QQVJBTVMuZmlsdGVyX3ZhbHVlO1xcbi8v5YiG57G76K+N5a6a5L2NXFxubGV0IG9wdGlvbl9uYW1lID0gZmlsdGVyX3ZhbHVlLnNwbGl0KFxcXCI9XFxcIilbMF07XFxubGV0IG9wdGlvbl92YWx1ZSA9IGZpbHRlcl92YWx1ZS5zcGxpdChcXFwiPVxcXCIpWzFdO1xcbi8vbG9nKGZpbHRlcl92YWx1ZSlcXG5mdW5jdGlvbiBzZWNvbmRzVG9UaW1lKHNlY29uZHMpIHtcXG4gICAgdmFyIGhvdXJzID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gMzYwMCk7XFxuICAgIHZhciBtaW51dGVzID0gTWF0aC5mbG9vcigoc2Vjb25kcyAtIChob3VycyAqIDM2MDApKSAvIDYwKTtcXG4gICAgdmFyIHNlY29uZHMgPSBzZWNvbmRzIC0gKGhvdXJzICogMzYwMCkgLSAobWludXRlcyAqIDYwKTtcXG5cXG4gICAgLy8gcm91bmQgc2Vjb25kc1xcbiAgICBzZWNvbmRzID0gTWF0aC5yb3VuZChzZWNvbmRzICogMTAwKSAvIDEwMFxcblxcbiAgICB2YXIgcmVzdWx0ID0gKGhvdXJzIDwgMTAgPyBcXFwiMFxcXCIgKyBob3VycyA6IGhvdXJzKTtcXG4gICAgcmVzdWx0ICs9IFxcXCI6XFxcIiArIChtaW51dGVzIDwgMTAgPyBcXFwiMFxcXCIgKyBtaW51dGVzIDogbWludXRlcyk7XFxuICAgIHJlc3VsdCArPSBcXFwiOlxcXCIgKyAoc2Vjb25kcyA8IDEwID8gXFxcIjBcXFwiICsgc2Vjb25kcyA6IHNlY29uZHMpO1xcbiAgICByZXR1cm4gcmVzdWx0O1xcbn1cXG5cXG5sZXQgYm9keSA9IHtcXG4gICAgXFxcInBhZ2VfY29udGV4dFxcXCI6IHtcXG4gICAgICAgIFxcXCJwYWdlX2luZGV4XFxcIjogKHBhZ2UgLSAxKS50b1N0cmluZygpXFxuICAgIH0sXFxuICAgIFxcXCJwYWdlX3BhcmFtc1xcXCI6IHtcXG4gICAgICAgIFxcXCJwYWdlX2lkXFxcIjogcGFnZV9pZCB8fCBcXFwiY2hhbm5lbF9saXN0X3NlY29uZF9wYWdlXFxcIixcXG4gICAgICAgIFxcXCJwYWdlX3R5cGVcXFwiOiBcXFwib3BlcmF0aW9uXFxcIixcXG4gICAgICAgIFxcXCJjaGFubmVsX2lkXFxcIjogZ2V0TXlWYXIoXFxcImNoYW5uZWxcXFwiKSxcXG4gICAgICAgIFxcXCJmaWx0ZXJfcGFyYW1zXFxcIjogZmlsdGVyX3ZhbHVlLFxcbiAgICAgICAgXFxcInBhZ2VcXFwiOiAocGFnZSAtIDEpLnRvU3RyaW5nKClcXG4gICAgfSxcXG4gICAgXFxcInBhZ2VfYnlwYXNzX3BhcmFtc1xcXCI6IHtcXG4gICAgICAgIFxcXCJwYXJhbXNcXFwiOiB7XFxuICAgICAgICAgICAgXFxcInBhZ2VfaWRcXFwiOiBwYWdlX2lkIHx8IFxcXCJjaGFubmVsX2xpc3Rfc2Vjb25kX3BhZ2VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJwYWdlX3R5cGVcXFwiOiBcXFwib3BlcmF0aW9uXFxcIixcXG4gICAgICAgICAgICBcXFwiY2hhbm5lbF9pZFxcXCI6IGdldE15VmFyKFxcXCJjaGFubmVsXFxcIiksXFxuICAgICAgICAgICAgXFxcImNhbGxlcl9pZFxcXCI6IFxcXCIzMDAwMDEwXFxcIixcXG4gICAgICAgICAgICBcXFwicGxhdGZvcm1faWRcXFwiOiBcXFwiMlxcXCIsXFxuICAgICAgICAgICAgXFxcImRhdGFfbW9kZVxcXCI6IFxcXCJkZWZhdWx0XFxcIixcXG4gICAgICAgICAgICBcXFwidXNlcl9tb2RlXFxcIjogXFxcImRlZmF1bHRcXFwiXFxuICAgICAgICB9LFxcbiAgICAgICAgXFxcInNjZW5lXFxcIjogXFxcIm9wZXJhdGlvblxcXCIsXFxuICAgICAgICBcXFwiYWJ0ZXN0X2J5cGFzc19pZFxcXCI6IFxcXCJcXFwiXFxuICAgIH1cXG59O1xcbnZhciBTZmlsdGVyX2tleSA9IGdldE15VmFyKFxcXCJTZmlsdGVyX2tleVxcXCIpO1xcbmlmIChTZmlsdGVyX2tleSkge1xcbiAgICAvL2xvZyhTZmlsdGVyX2tleSlcXG4gICAgU2ZpbHRlcl9rZXkgPSBKU09OLnBhcnNlKFNmaWx0ZXJfa2V5KTtcXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBTZmlsdGVyX2tleS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgaWYgKGkgPT0gMCkge1xcbiAgICAgICAgICAgIGJvZHkucGFnZV9wYXJhbXMuZmlsdGVyX3BhcmFtcyA9IFNmaWx0ZXJfa2V5W2ldICsgXFxcIj1cXFwiICsgZ2V0TXlWYXIoU2ZpbHRlcl9rZXlbaV0sIFxcXCItMVxcXCIpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBib2R5LnBhZ2VfcGFyYW1zLmZpbHRlcl9wYXJhbXMgKz0gXFxcIiZcXFwiICsgU2ZpbHRlcl9rZXlbaV0gKyBcXFwiPVxcXCIgKyBnZXRNeVZhcihTZmlsdGVyX2tleVtpXSwgXFxcIi0xXFxcIilcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICAvL2xvZyhib2R5LnBhZ2VfcGFyYW1zLmZpbHRlcl9wYXJhbXMpXFxufVxcbi8vbG9nKGJvZHkpXFxuZnVuY3Rpb24gTG9hZF9wYWdlX3ZpZXcoQ2FyZExpc3QpIHtcXG4gICAgQ2FyZExpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PSBcXFwiY2hhbm5lbF9saXN0X2ZpbHRlclxcXCIpIHtcXG4gICAgICAgICAgICBmdW5jdGlvbiBncm91cEJ5KGFyciwgcHJvcCkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gYXJyLnJlZHVjZShmdW5jdGlvbihncm91cHMsIGl0ZW0pIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbCA9IGl0ZW0ucGFyYW1zW3Byb3BdXFxuICAgICAgICAgICAgICAgICAgICBncm91cHNbdmFsXSA9IGdyb3Vwc1t2YWxdIHx8IFtdXFxuICAgICAgICAgICAgICAgICAgICBncm91cHNbdmFsXS5wdXNoKGl0ZW0pXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ3JvdXBzXFxuICAgICAgICAgICAgICAgIH0sIHt9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB2YXIgZml0ZXJPYmogPSBncm91cEJ5KGl0ZW0uY2hpbGRyZW5fbGlzdC5saXN0LmNhcmRzLCBcXFwiZmlsdGVyX2tleVxcXCIpO1xcbiAgICAgICAgICAgIC8vbG9nKGdib2JqKVxcbiAgICAgICAgICAgIHZhciBTQ2F0ZXMgPSBbXTtcXG4gICAgICAgICAgICB2YXIgU2ZpbHRlcl9rZXkgPSBbXTtcXG4gICAgICAgICAgICBmb3IgKGxldCBpIGluIGZpdGVyT2JqKSB7XFxuICAgICAgICAgICAgICAgIFNDYXRlcy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJmaWx0ZXJfa2V5XFxcIjogaSxcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJpdGVtc1xcXCI6IGZpdGVyT2JqW2ldXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBTZmlsdGVyX2tleS5wdXNoKGkpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBwdXRNeVZhcihcXFwiU2ZpbHRlcl9rZXlcXFwiLCBKU09OLnN0cmluZ2lmeShTZmlsdGVyX2tleSkpO1xcbiAgICAgICAgICAgIHB1dE15VmFyKG9wdGlvbl9uYW1lLCBvcHRpb25fdmFsdWUpO1xcbiAgICAgICAgICAgIC8vbG9nKGdldE15VmFyKG9wdGlvbl9uYW1lLCBvcHRpb25fdmFsdWUpKVxcbiAgICAgICAgICAgIC8vcHV0TXlWYXIoJ2hlYWRlci5jYXRlZ29yeScsIEpTT04uc3RyaW5naWZ5KGluaXRfY2F0ZSkpXFxuICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9kdCcpKS5ydWxlKTtcXG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09IFxcXCJjaGFubmVsX2xpc3RfcG9zdGVyXFxcIikge1xcbiAgICAgICAgICAgIHZhciBsaXN0cyA9IGl0ZW0uY2hpbGRyZW5fbGlzdC5saXN0LmNhcmRzO1xcbiAgICAgICAgICAgIGxpc3RzLmZvckVhY2goKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgLy9sb2coaXRlbSlcXG4gICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBwaWMgPSBpdGVtLnBhcmFtcy5uZXdfcGljX3Z0IHx8IGl0ZW0ucGFyYW1zLmltYWdlX3VybCB8fCBpdGVtLnBhcmFtcy5uZXdfcGljX2h6IHx8IGl0ZW0ucGFyYW1zLmltYWdlX3VybF92ZXJ0aWNhbCB8fCBpdGVtLnBhcmFtcy5waWNfNTQweDMwNCB8fCBpdGVtLnBhcmFtcy5waWM0OTZ4MjgwO1xcbiAgICAgICAgICAgICAgICAgICAgaWYoL1xcXFwuanBnXFxcXC8vLnRlc3QocGljKSl7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSBwaWMubGFzdEluZGV4T2YoXFxcIlxcXFwvXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBwaWMgPSBwaWMuc3Vic3RyaW5nKDAsIGluZGV4KTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGxldCBkZXMgPSBcXFwiXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLnBhcmFtcy5pbWd0YWcpIHsgIFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHR5cGVvZihpdGVtLnBhcmFtcy5pbWd0YWcpID09PSBcXFwib2JqZWN0XFxcIil7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxuICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbWd0YWcgPSBKU09OLnBhcnNlKGl0ZW0ucGFyYW1zLmltZ3RhZyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgIC8vbG9nKGltZ3RhZykgICAgICAgICAgICAgICAgICAgICBcXG4gICAgICAgICAgICAgICAgICAgICAgICAgZGVzID0gaW1ndGFnLnRhZ18zLnRleHQgPyBpbWd0YWcudGFnXzMudGV4dCA6IGltZ3RhZy50YWdfMi50ZXh0LnNwbGl0KFxcXCItXFxcIilbMF1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXMgPSBpdGVtLnBhcmFtcy5pbWd0YWc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICBkZXMgPSBpdGVtLnBhcmFtcy50aW1lbG9uZyB8fCBpdGVtLnBhcmFtcy5wdWJsaXNoX2RhdGUgfHwgaXRlbS5wYXJhbXMuZXBpc29kZV91cGRhdGVkIHx8IChpdGVtLnBhcmFtcy5kdXJhdGlvbiA/IHNlY29uZHNUb1RpbWUoaXRlbS5wYXJhbXMuZHVyYXRpb24pIDogXFxcIlxcXCIpIHx8IChpdGVtLnBhcmFtcy5jbXNfaXN2aXAgPT0gMSA/IFxcXCJWSVBcXFwiIDogXFxcIlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJhbV9jaWQgPSBcXFwiXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLnBhcmFtcy5jaWQpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbV9jaWQgPSBpdGVtLnBhcmFtcy5jaWQ7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0ucGFyYW1zLmF0dGFjaGVkX2lkKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1fY2lkID0gaXRlbS5wYXJhbXMuYXR0YWNoZWRfaWQ7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAvL2xvZyhpdGVtKVxcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5wYXJhbXMudGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogZGVzLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBpY191cmw6IHBpYyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvZWpfcGFnZVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eSNcXFwiICsgcGFyYW1fY2lkICsgXFxcIiNcXFwiICsgKGl0ZW0ucGFyYW1zLnZpZCA/IGl0ZW0ucGFyYW1zLnZpZCA6IFxcXCJcXFwiKSArIFxcXCIjaW1tZXJzaXZlVGhlbWUjXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgIGxvZyhlLnRvU3RyaW5nKCkpXFxuICAgICAgICAgICAgICAgICAgICBsb2coaXRlbSlcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9KTtcXG59XFxuaWYgKHBhZ2UgPT0gMSkge1xcbiAgICBsZXQgZmV0Y2hEYXRhID0gSlNPTi5wYXJzZShmZXRjaFBDKGJhc2VVcmwsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiQ29udGVudC1UeXBlXFxcIjogXFxcImFwcGxpY2F0aW9uL2pzb25cXFwiLFxcbiAgICAgICAgICAgIFxcXCJyZWZlcmVyXFxcIjogXFxcImh0dHBzOi8vdi5xcS5jb20vXFxcIixcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogXFxcInZpZGVvX3BsYXRmb3JtPTJcXFwiXFxuICAgICAgICB9LFxcbiAgICAgICAgbWV0aG9kOiBcXFwiUE9TVFxcXCIsXFxuICAgICAgICBib2R5OiBib2R5XFxuICAgIH0pKTtcXG4gICAgLy8gbG9nKGZldGNoRGF0YSlcXG4gICAgbGV0IENhcmRMaXN0ID0gZmV0Y2hEYXRhLmRhdGEuQ2FyZExpc3Q7XFxuICAgIExvYWRfcGFnZV92aWV3KENhcmRMaXN0KTtcXG4gICAgbGV0IGhhc19uZXh0X3BhZ2UgPSBmZXRjaERhdGEuZGF0YS5oYXNfbmV4dF9wYWdlO1xcbiAgICBwdXRNeVZhcihcXFwiZml0ZXJfaGFzX25leHRfcGFnZVxcXCIsIGhhc19uZXh0X3BhZ2UpO1xcbn0gZWxzZSBpZiAoZ2V0TXlWYXIoXFxcImZpdGVyX2hhc19uZXh0X3BhZ2VcXFwiKSA9PSBcXFwidHJ1ZVxcXCIpIHtcXG4gICAgLy9sb2coZ2V0TXlWYXIoXFxcImhhc19uZXh0X3BhZ2VcXFwiKSlcXG4gICAgLypib2R5LnBhZ2VfY29udGV4dCA9IHtcXG4gICAgICAgIFxcXCJwYWdlX2luZGV4XFxcIjogKHBhZ2UgLSAxKS50b1N0cmluZygpXFxuICAgIH07XFxuICAgIGJvZHkucGFnZV9wYXJhbXMucGFnZSA9IChwYWdlIC0gMSkudG9TdHJpbmcoKTtcXG5cXG4gICAgdmFyIFNmaWx0ZXJfa2V5ID0gSlNPTi5wYXJzZShnZXRNeVZhcihcXFwiU2ZpbHRlcl9rZXlcXFwiKSB8fCBbXSk7XFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgU2ZpbHRlcl9rZXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIGlmIChpID09IDEpIHtcXG4gICAgICAgICAgICBib2R5LnBhZ2VfcGFyYW1zLmZpbHRlcl9wYXJhbXMgPSBTZmlsdGVyX2tleVtpXSArIFxcXCI9XFxcIiArIGdldE15VmFyKFNmaWx0ZXJfa2V5W2ldLCBcXFwiLTFcXFwiKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgYm9keS5wYWdlX3BhcmFtcy5maWx0ZXJfcGFyYW1zICs9IFxcXCImXFxcIiArIFNmaWx0ZXJfa2V5W2ldICsgXFxcIj1cXFwiICsgZ2V0TXlWYXIoU2ZpbHRlcl9rZXlbaV0sIFxcXCItMVxcXCIpXFxuICAgICAgICB9XFxuICAgIH0qL1xcbiAgICAvL2xvZyhib2R5KVxcbiAgICBsZXQgZmV0Y2hEYXRhID0gSlNPTi5wYXJzZShmZXRjaFBDKGJhc2VVcmwsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiQ29udGVudC1UeXBlXFxcIjogXFxcImFwcGxpY2F0aW9uL2pzb25cXFwiLFxcbiAgICAgICAgICAgIFxcXCJyZWZlcmVyXFxcIjogXFxcImh0dHBzOi8vdi5xcS5jb20vXFxcIixcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogXFxcInZpZGVvX3BsYXRmb3JtPTJcXFwiXFxuICAgICAgICB9LFxcbiAgICAgICAgbWV0aG9kOiBcXFwiUE9TVFxcXCIsXFxuICAgICAgICBib2R5OiBib2R5XFxuICAgIH0pKVxcbiAgICAvL2xvZyhob21lZmV0Y2hEYXRhKVxcbiAgICBsZXQgaG9tZUNhcmRMaXN0ID0gZmV0Y2hEYXRhLmRhdGEuQ2FyZExpc3Q7XFxuICAgIGxldCBoYXNfbmV4dF9wYWdlID0gZmV0Y2hEYXRhLmRhdGEuaGFzX25leHRfcGFnZTtcXG4gICAgcHV0TXlWYXIoXFxcImZpdGVyX2hhc19uZXh0X3BhZ2VcXFwiLCBoYXNfbmV4dF9wYWdlKVxcbiAgICBMb2FkX3BhZ2Vfdmlldyhob21lQ2FyZExpc3QpXFxufVxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LqM57qn57uE5Lu2XCIsXCJwYXRoXCI6XCJlanpqXCIsXCJydWxlXCI6XCJmdW5jdGlvbiBmdW5jTG9hZHBhZ2UoZCwgb2JqKSB7XFxyXFxuICAgIGZ1bmN0aW9uIGNvbG9yKHRleHQsIGNvbG9yKSB7XFxyXFxuICAgICAgICB0ZXh0ICs9IFxcXCJcXFwiO1xcclxcbiAgICAgICAgaWYgKHRleHQuaW5kZXhPZihcXFwi4oCc4oCc4oCd4oCdXFxcIikgPT09IDApIHtcXHJcXG4gICAgICAgICAgICB0ZXh0LnJlcGxhY2UoXFxcIuKAnOKAnOKAneKAnVxcXCIsIFxcXCJcXFwiKTtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICAgIHJldHVybiBcXFwi4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9J1xcXCIgKyBjb2xvciArIFxcXCInPlxcXCIgKyB0ZXh0ICsgXFxcIjwvZm9udD5cXFwiO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIGZ1bmN0aW9uIGh0bWxUYWcodGFnLCB0ZXh0KSB7XFxyXFxuICAgICAgICB0ZXh0ICs9IFxcXCJcXFwiO1xcclxcbiAgICAgICAgaWYgKHRleHQuaW5kZXhPZihcXFwi4oCc4oCc4oCd4oCdXFxcIikgPT09IDApIHtcXHJcXG4gICAgICAgICAgICB0ZXh0LnJlcGxhY2UoXFxcIuKAnOKAnOKAneKAnVxcXCIsIFxcXCJcXFwiKTtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICAgIHJldHVybiBcXFwi4oCc4oCc4oCd4oCdXFxcIiArIFxcXCI8XFxcIiArIHRhZyArIFxcXCI+XFxcIiArIHRleHQgKyBcXFwiPC9cXFwiICsgdGFnICsgXFxcIj5cXFwiO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIGZ1bmN0aW9uIHNtYWxsKHRleHQpIHtcXHJcXG4gICAgICAgIHJldHVybiBodG1sVGFnKFxcXCJzbWFsbFxcXCIsIHRleHQpO1xcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIGZ1bmN0aW9uIHJpZ2h0KHRleHQpIHtcXHJcXG4gICAgICAgIHJldHVybiAnPHNwYW4gc3R5bGU9XFxcImZsb2F0OnJpZ2h0XFxcIj4nICsgdGV4dCArIFxcXCI8L3NwYW4+XFxcIjtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICBmdW5jdGlvbiBibGFuaygpIHtcXHJcXG4gICAgICAgIHJldHVybiBcXFwiXFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXCI7XFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgZnVuY3Rpb24gZ2V0SGVhZCh0aXRsZSkge1xcclxcbiAgICAgICAgcmV0dXJuICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVxcXCIjZjEzYjY2YVxcXCI+JyArIHRpdGxlICsgJzwvZnJvbnQ+PC9zdHJvbmc+JztcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICBmdW5jdGlvbiBnZXRidG5zQ29sb3IodGV4dCkge1xcclxcbiAgICAgICAgcmV0dXJuIFxcXCLigJzigJzigJ3igJ0gPHNtYWxsPjxzbWFsbD48Zm9udCBjb2xvcj0nZ3JleSc+XFxcIiArIHRleHQgKyBcXFwiPC9mb250PiA8L3NtYWxsPjwvc21hbGw+XFxcIjtcXHJcXG4gICAgfVxcclxcbiAgICB2YXIgQ2hpbmVzZU1hcCA9IHtcXHJcXG4gICAgICAgIFxcXCLpm7ZcXFwiOiAwLFxcclxcbiAgICAgICAgXFxcIuS4gFxcXCI6IDEsXFxyXFxuICAgICAgICBcXFwi5aO5XFxcIjogMSxcXHJcXG4gICAgICAgIFxcXCLkuoxcXFwiOiAyLFxcclxcbiAgICAgICAgXFxcIui0sFxcXCI6IDIsXFxyXFxuICAgICAgICBcXFwi5LikXFxcIjogMixcXHJcXG4gICAgICAgIFxcXCLkuIlcXFwiOiAzLFxcclxcbiAgICAgICAgXFxcIuWPgVxcXCI6IDMsXFxyXFxuICAgICAgICBcXFwi5ZubXFxcIjogNCxcXHJcXG4gICAgICAgIFxcXCLogoZcXFwiOiA0LFxcclxcbiAgICAgICAgXFxcIuS6lFxcXCI6IDUsXFxyXFxuICAgICAgICBcXFwi5LyNXFxcIjogNSxcXHJcXG4gICAgICAgIFxcXCLlha1cXFwiOiA2LFxcclxcbiAgICAgICAgXFxcIumZhlxcXCI6IDYsXFxyXFxuICAgICAgICBcXFwi5LiDXFxcIjogNyxcXHJcXG4gICAgICAgIFxcXCLmn5JcXFwiOiA3LFxcclxcbiAgICAgICAgXFxcIuWFq1xcXCI6IDgsXFxyXFxuICAgICAgICBcXFwi5o2MXFxcIjogOCxcXHJcXG4gICAgICAgIFxcXCLkuZ1cXFwiOiA5LFxcclxcbiAgICAgICAgXFxcIueOllxcXCI6IDksXFxyXFxuICAgICAgICBcXFwi5Y2BXFxcIjogMTAsXFxyXFxuICAgICAgICBcXFwi5ou+XFxcIjogMTAsXFxyXFxuICAgICAgICBcXFwi55m+XFxcIjogMTAwLFxcclxcbiAgICAgICAgXFxcIuS9sFxcXCI6IDEwMCxcXHJcXG4gICAgICAgIFxcXCLljYNcXFwiOiAxMDAwLFxcclxcbiAgICAgICAgXFxcIuS7n1xcXCI6IDEwMDAsXFxyXFxuICAgICAgICBcXFwi5LiHXFxcIjogMTAwMDAsXFxyXFxuICAgICAgICBcXFwi5Y2B5LiHXFxcIjogMTAwMDAwLFxcclxcbiAgICAgICAgXFxcIueZvuS4h1xcXCI6IDEwMDAwMDAsXFxyXFxuICAgICAgICBcXFwi5Y2D5LiHXFxcIjogMTAwMDAwMDAsXFxyXFxuICAgICAgICBcXFwi5Lq/XFxcIjogMTAwMDAwMDAwXFxyXFxuICAgIH07XFxyXFxuXFxyXFxuICAgIGZ1bmN0aW9uIENoaW5lc2VUb051bWJlcihjaGluZXNlX251bWJlcikgeyAvL+S4reaWh+i9rOaVsOWtl1xcclxcbiAgICAgICAgbGV0IGxlbiA9IGNoaW5lc2VfbnVtYmVyLmxlbmd0aDtcXHJcXG4gICAgICAgIGlmIChsZW4gPT09IDApIHJldHVybiAtMTtcXHJcXG4gICAgICAgIGlmIChsZW4gPT09IDEpIHJldHVybiAoQ2hpbmVzZU1hcFtjaGluZXNlX251bWJlcl0gPD0gMTApID8gQ2hpbmVzZU1hcFtjaGluZXNlX251bWJlcl0gOiAtMTtcXHJcXG4gICAgICAgIGxldCBzdW1tYXJ5ID0gMDtcXHJcXG4gICAgICAgIGlmIChDaGluZXNlTWFwW2NoaW5lc2VfbnVtYmVyWzBdXSA9PT0gMTApIHtcXHJcXG4gICAgICAgICAgICBjaGluZXNlX251bWJlciA9IFxcXCLkuIBcXFwiICsgY2hpbmVzZV9udW1iZXI7XFxyXFxuICAgICAgICAgICAgbGVuKys7XFxyXFxuICAgICAgICB9XFxyXFxuICAgICAgICBpZiAobGVuID49IDMgJiYgQ2hpbmVzZU1hcFtjaGluZXNlX251bWJlcltsZW4gLSAxXV0gPCAxMCkge1xcclxcbiAgICAgICAgICAgIGxldCBsYXN0X3NlY29uZF9udW0gPSBDaGluZXNlTWFwW2NoaW5lc2VfbnVtYmVyW2xlbiAtIDJdXTtcXHJcXG4gICAgICAgICAgICBpZiAobGFzdF9zZWNvbmRfbnVtID09PSAxMDAgfHwgbGFzdF9zZWNvbmRfbnVtID09PSAxMDAwIHx8IGxhc3Rfc2Vjb25kX251bSA9PT0gMTAwMDAgfHwgbGFzdF9zZWNvbmRfbnVtID09PSAxMDAwMDAwMDApIHtcXHJcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQga2V5IGluIENoaW5lc2VNYXApIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGlmIChDaGluZXNlTWFwW2tleV0gPT09IGxhc3Rfc2Vjb25kX251bSAvIDEwKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbmVzZV9udW1iZXIgKz0ga2V5O1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlbiArPSBrZXkubGVuZ3RoO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcclxcbiAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgfVxcclxcbiAgICAgICAgfVxcclxcbiAgICAgICAgaWYgKGNoaW5lc2VfbnVtYmVyLm1hdGNoKC/kur8vZykgJiYgY2hpbmVzZV9udW1iZXIubWF0Y2goL+S6vy9nKS5sZW5ndGggPiAxKSByZXR1cm4gLTE7XFxyXFxuICAgICAgICBsZXQgc3BsaXRlZCA9IGNoaW5lc2VfbnVtYmVyLnNwbGl0KFxcXCLkur9cXFwiKTtcXHJcXG4gICAgICAgIGlmIChzcGxpdGVkLmxlbmd0aCA9PT0gMikge1xcclxcbiAgICAgICAgICAgIGxldCByZXN0ID0gc3BsaXRlZFsxXSA9PT0gXFxcIlxcXCIgPyAwIDogQ2hpbmVzZVRvTnVtYmVyKHNwbGl0ZWRbMV0pO1xcclxcbiAgICAgICAgICAgIHJldHVybiBzdW1tYXJ5ICsgQ2hpbmVzZVRvTnVtYmVyKHNwbGl0ZWRbMF0pICogMTAwMDAwMDAwICsgcmVzdDtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICAgIHNwbGl0ZWQgPSBjaGluZXNlX251bWJlci5zcGxpdChcXFwi5LiHXFxcIik7XFxyXFxuICAgICAgICBpZiAoc3BsaXRlZC5sZW5ndGggPT09IDIpIHtcXHJcXG4gICAgICAgICAgICBsZXQgcmVzdCA9IHNwbGl0ZWRbMV0gPT09IFxcXCJcXFwiID8gMCA6IENoaW5lc2VUb051bWJlcihzcGxpdGVkWzFdKTtcXHJcXG4gICAgICAgICAgICByZXR1cm4gc3VtbWFyeSArIENoaW5lc2VUb051bWJlcihzcGxpdGVkWzBdKSAqIDEwMDAwICsgcmVzdDtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICAgIGxldCBpID0gMDtcXHJcXG4gICAgICAgIHdoaWxlIChpIDwgbGVuKSB7XFxyXFxuICAgICAgICAgICAgbGV0IGZpcnN0X2NoYXJfbnVtID0gQ2hpbmVzZU1hcFtjaGluZXNlX251bWJlcltpXV07XFxyXFxuICAgICAgICAgICAgbGV0IHNlY29uZF9jaGFyX251bSA9IENoaW5lc2VNYXBbY2hpbmVzZV9udW1iZXJbaSArIDFdXTtcXHJcXG4gICAgICAgICAgICBpZiAoc2Vjb25kX2NoYXJfbnVtID4gOSlcXHJcXG4gICAgICAgICAgICAgICAgc3VtbWFyeSArPSBmaXJzdF9jaGFyX251bSAqIHNlY29uZF9jaGFyX251bTtcXHJcXG4gICAgICAgICAgICBpKys7XFxyXFxuICAgICAgICAgICAgaWYgKGkgPT09IGxlbilcXHJcXG4gICAgICAgICAgICAgICAgc3VtbWFyeSArPSBmaXJzdF9jaGFyX251bSA8PSA5ID8gZmlyc3RfY2hhcl9udW0gOiAwO1xcclxcbiAgICAgICAgfVxcclxcbiAgICAgICAgcmV0dXJuIHN1bW1hcnk7XFxyXFxuICAgIH07XFxyXFxuXFxyXFxuICAgIHZhciBmb3JjZV9vcmRlciA9IGZ1bmN0aW9uKGxpc3QsIGZuKSB7XFxyXFxuICAgICAgICAvL+W8uuWItuato+W6j1xcclxcbiAgICAgICAgZm4gPSBmbiB8fCBmdW5jdGlvbihsaXN0KSB7IC8v6buY6K6k5Li66KeG55WM55qE5YiX6KGoXFxyXFxuICAgICAgICAgICAgcmV0dXJuIGxpc3QubWFwKHggPT4geC50aXRsZSlcXHJcXG4gICAgICAgIH07XFxyXFxuICAgICAgICBsZXQgc3RhcnQgPSBNYXRoLmZsb29yKGxpc3QubGVuZ3RoIC8gMik7IC8vIDBcXHJcXG4gICAgICAgIGxldCBlbmQgPSBNYXRoLm1pbihsaXN0Lmxlbmd0aCAtIDEsIHN0YXJ0ICsgMSk7IC8vIGxpc3Quc2xpY2UoLTEpWzBdXFxyXFxuICAgICAgICBsZXQgbGlzdEZuID0gZm4obGlzdCk7XFxyXFxuICAgICAgICBsZXQgZmlyc3QgPSBsaXN0Rm5bc3RhcnRdO1xcclxcbiAgICAgICAgbGV0IHNlY29uZCA9IGxpc3RGbltlbmRdO1xcclxcbiAgICAgICAgdHJ5IHtcXHJcXG4gICAgICAgICAgICBpZiAoZmlyc3QubWF0Y2goLyhcXFxcZCspLykgJiYgc2Vjb25kLm1hdGNoKC8oXFxcXGQrKS8pKSB7IC8v5pWw5a2X56ug6IqC55qEXFxyXFxuICAgICAgICAgICAgICAgIGlmIChwYXJzZUludChmaXJzdC5tYXRjaCgvKFxcXFxkKykvKVswXSkgPiBwYXJzZUludChzZWNvbmQubWF0Y2goLyhcXFxcZCspLylbMF0pKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICBsaXN0LnJldmVyc2UoKVxcclxcbiAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgfSBlbHNlIHsgLy8g5Lit5paH6L2s5o2iXFxyXFxuICAgICAgICAgICAgICAgIGlmIChDaGluZXNlVG9OdW1iZXIoZmlyc3QpID4gQ2hpbmVzZVRvTnVtYmVyKHNlY29uZCkpIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGxpc3QucmV2ZXJzZSgpXFxyXFxuICAgICAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICB9IGNhdGNoIChlKSB7fVxcclxcbiAgICAgICAgcmV0dXJuIGxpc3RcXHJcXG4gICAgfTtcXHJcXG5cXHJcXG4gICAgb2JqID0gb2JqIHx8IEpTT04ucGFyc2UocmVhZEZpbGUoXFxcIk9iamVjdC5qc29uXFxcIiwgMCkpO1xcclxcbiAgICBsZXQgY29sX3R5cGUgPSBvYmouY29sX3R5cGU7IC8v5LqM57qn6YCJ6ZuG5qC35byPXFxyXFxuICAgIGxldCB0YWIgPSBvYmoudGFiOyAvLyDnur/ot6/mlbDnu4RcXHJcXG4gICAgbGV0IEFsbF9MaXN0cyA9IEFycmF5LmlzQXJyYXkob2JqLmxpc3QpID8gb2JqLmxpc3QgOiBbXSAvLyDpgInpm4bliJfooajlrozmlbTmlbDmja4s6K+356Gu5L+d5piv5by65Yi25q2j5bqP55qEXFxyXFxuICAgIGxldCDmr4/pobXmlbDph48gPSBvYmouc2l6ZTsgLy8g5YiG6aG155qE5q+P6aG15pWw6YePICAgICAgICBcXHJcXG4gICAgbGV0IOe/u+mhtemYgOWAvCA9IG9iai5vdmVyOyAvLyDliIbpobXnmoTnv7vpobXpmIDlgLzvvIzotoXov4flpJrlsJHmiY3mmL7npLrnv7vpobUgICBcXHJcXG4gICAgLy9sb2coXFxcIuW9k+WJjee6v+i3r+aVsDogXFxcIitnZXRNeVZhcihcXFwidGFibnVtXFxcIiwgXFxcIjBcXFwiKSk7XFxyXFxuICAgIGxldCB0YWJfTGlzdHM7XFxyXFxuICAgIGlmICh0YWIubGVuZ3RoID4gMSkge1xcclxcbiAgICAgICAgdGFiX0xpc3RzID0gQWxsX0xpc3RzW3BhcnNlSW50KGdldE15VmFyKFxcXCJ0YWJudW1cXFwiLCBcXFwiMFxcXCIpKV07XFxyXFxuICAgIH0gZWxzZSB7XFxyXFxuICAgICAgICB0YWJfTGlzdHMgPSBBbGxfTGlzdHM7XFxyXFxuICAgIH1cXHJcXG4gICAgaWYgKHRhYl9MaXN0cy5sZW5ndGggPiAxKSB7XFxyXFxuICAgICAgICB0YWJfTGlzdHMgPSBmb3JjZV9vcmRlcih0YWJfTGlzdHMpO1xcclxcbiAgICB9XFxyXFxuICAgIC8vbG9nKHRhYl9MaXN0cylcXHJcXG4gICAgbGV0IGxpc3RfY250ID0gdGFiX0xpc3RzLmxlbmd0aDtcXHJcXG4gICAgbGV0IOacgOWkp+mhteaVsCA9IE1hdGguY2VpbChsaXN0X2NudCAvIOavj+mhteaVsOmHjyk7XFxyXFxuICAgIHB1dE15VmFyKFxcXCLmnIDlpKfpobXmlbBcXFwiLCDmnIDlpKfpobXmlbApO1xcclxcbiAgICBwdXRNeVZhcihcXFwi5q+P6aG15pWw6YePXFxcIiwg5q+P6aG15pWw6YePKTtcXHJcXG4gICAgbGV0IG5vd1BhZ2UgPSBwYXJzZUludChnZXRNeVZhcign6YCJ6ZuG57+76aG1JywgJzEnKSkgfHwgMTsgLy/lvZPliY3pobXmlbBcXHJcXG4gICAgaWYgKG5vd1BhZ2UgPiDmnIDlpKfpobXmlbApIHsgLy/pmLLmraLliIfmjaLnur/ot6/lr7zoh7TpobXmlbDmlbDnu4TotornlYxcXHJcXG4gICAgICAgIG5vd1BhZ2UgPSDmnIDlpKfpobXmlbA7XFxyXFxuICAgICAgICBwdXRNeVZhcign6YCJ6ZuG57+76aG1JywgJycgKyBub3dQYWdlKTtcXHJcXG4gICAgfVxcclxcbiAgICAvL2xvZyhcXFwi5b2T5YmN6aG15pWwOlxcXCIrZ2V0TXlWYXIoJ+mAiembhue/u+mhtScsICcxJykpXFxyXFxuICAgIGxldCBzaG93TGlzdCwgc2hvd0xpc3RfY250O1xcclxcbiAgICBpZiAobGlzdF9jbnQgPiDnv7vpobXpmIDlgLwgJiYgZ2V0TXlWYXIoJ+mAiembhuaYvuekuicsICfliIbpobUnKSA9PT0gJ+WIhumhtScpIHtcXHJcXG4gICAgICAgIGxldCBtYXhOdW0gPSDmr4/pobXmlbDph48gKiBub3dQYWdlOyAvL+esrOS4gOmhteeahOivnSzmnIDlpKfmmL7npLo0MCox6ZuGLOesrDLpobU0MS04MOmbhiAgICAgICBcXHJcXG4gICAgICAgIHNob3dMaXN0ID0gdGFiX0xpc3RzLnNsaWNlKCgobm93UGFnZSAtIDEpICog5q+P6aG15pWw6YePKSwgbWF4TnVtKTtcXHJcXG4gICAgICAgIHNob3dMaXN0X2NudCA9IHNob3dMaXN0Lmxlbmd0aFxcclxcbiAgICB9IGVsc2Uge1xcclxcbiAgICAgICAgc2hvd0xpc3RfY250ID0gdGFiX0xpc3RzLmxlbmd0aDtcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICAvL2xvZyhcXFwic2hvd0xpc3RfY250OlxcXCIrc2hvd0xpc3RfY250KVxcclxcbiAgICBwdXRNeVZhcihcXFwic2hvd0xpc3RfY250XFxcIiwgc2hvd0xpc3RfY250KTtcXHJcXG4gICAgcHV0TXlWYXIoXFxcImxpc3RfY250XFxcIiwgbGlzdF9jbnQpO1xcclxcbiAgICAvL+e6v+i3r1xcclxcbiAgICB2YXIgZnVuY1RhYiA9IGZ1bmN0aW9uKHRhYnMsIHRhYl90eXBlKSB7XFxyXFxuICAgICAgICAvL3RhYnPkuLrnur/ot6/mlbDnu4TvvIzpnIDopoHlpITnkIblpb3lkI7kvKDlhaUsIGVnOiBbXFxcIue6v+i3rzFcXFwiXVxcclxcbiAgICAgICAgdGFiX3R5cGUgPSB0YWJfdHlwZSB8fCBcXFwiZmxleF9idXR0b25cXFwiO1xcclxcbiAgICAgICAgbGV0IGQgPSBbXTtcXHJcXG4gICAgICAgIHRhYnMuZm9yRWFjaCgoVGFibmFtZSwgaSkgPT4ge1xcclxcbiAgICAgICAgICAgIGQucHVzaCh7XFxyXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBnZXRNeVZhcihcXFwidGFibnVtXFxcIiwgXFxcIjBcXFwiKSA9PSBpID8gZ2V0SGVhZChUYWJuYW1lKSA6IFRhYm5hbWUsXFxyXFxuICAgICAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyMjbm9IaXN0b3J5I1xcXCIpLmxhenlSdWxlKCh0YWJzLCBnZXRIZWFkLCBpLCBmdW5jTG9hZHBhZ2UpID0+IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGlmIChnZXRNeVZhcihcXFwidGFibnVtXFxcIiwgXFxcIjBcXFwiKSAhPSBpKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbShcXFwidGFiaWRcXFwiICsgZ2V0TXlWYXIoXFxcInRhYm51bVxcXCIsIFxcXCIwXFxcIiksIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRhYnNbcGFyc2VJbnQoZ2V0TXlWYXIoXFxcInRhYm51bVxcXCIsIFxcXCIwXFxcIikpXSxcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKFxcXCJ0YWJpZFxcXCIgKyBpLCB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBnZXRIZWFkKHRhYnNbaV0pLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ0YWJudW1cXFwiLCBpKTtcXHJcXG5cXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2xvZyhcXFwi54K55Ye7OlxcXCIrZ2V0TXlWYXIoXFxcInRhYm51bVxcXCIpKTsgICAgXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXVxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNMb2FkcGFnZShkKVxcclxcbiAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICAgICAgLy9yZXR1cm4gJ3RvYXN0Oi8v5YiH5o2i5oiQ5YqfISdcXHJcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxyXFxuICAgICAgICAgICAgICAgIH0sIHRhYnMsIGdldEhlYWQsIGksIGZ1bmNMb2FkcGFnZSksXFxyXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiB0YWJfdHlwZSxcXHJcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBcXFwidGFiaWRcXFwiICsgaVxcclxcbiAgICAgICAgICAgICAgICB9LFxcclxcbiAgICAgICAgICAgIH0pO1xcclxcbiAgICAgICAgfSk7XFxyXFxuICAgICAgICBkLnB1c2goe1xcclxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibGluZVxcXCIsXFxyXFxuICAgICAgICAgICAgZXh0cmE6IHtcXHJcXG4gICAgICAgICAgICAgICAgaWQ6ICd0YWJfU2VwcycgLy8g57uZ57+76aG157uE5Lu25YGaaWTnlKhcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICB9KTtcXHJcXG4gICAgICAgIHJldHVybiBkXFxyXFxuICAgIH1cXHJcXG4gICAgLy/nv7vpobXmjInpkq7vvIjnirbmgIHvvIlcXHJcXG4gICAgZnVuY3Rpb24gcGFnZVN0YXRlKCkge1xcclxcbiAgICAgICAgbGV0IHNob3dDb2wgPSAnYXZhdGFyJztcXHJcXG4gICAgICAgIGxldCBzaG93VGl0bGUgPSBjb2xvcign57+76aG15qih5byP5bey5ZCv55SoICDmnKzpobU6XFxcXHQnLCAnIzU4NTg1OCcpICsgY29sb3IoZ2V0TXlWYXIoXFxcInNob3dMaXN0X2NudFxcXCIpLCAnI2Q5NjcxNScpICsgY29sb3IoJ1xcXFx06ZuGLCDlhbHorqE6XFxcXHQnLCAnIzU4NTg1OCcpICsgY29sb3IoZ2V0TXlWYXIoXFxcImxpc3RfY250XFxcIiksICcjZDk2NzE1JykgKyBjb2xvcignXFxcXHTpm4ZcXFxcdFxcXFx056ysOlxcXFx0JywgJyM1ODU4NTgnKSArIGNvbG9yKCckcGFnZScgKyAnXFxcXHQvXFxcXHQnICsgZ2V0TXlWYXIoXFxcIuacgOWkp+mhteaVsFxcXCIpLCAnI2Q5NjcxNScpICsgY29sb3IoJ1xcXFx06aG1JywgJyM1ODU4NTgnKTtcXHJcXG4gICAgICAgIHNob3dUaXRsZSA9IHNtYWxsKHNob3dUaXRsZSk7XFxyXFxuICAgICAgICBzaG93VGl0bGUgPSBzaG93VGl0bGUucmVwbGFjZSgnJHBhZ2UnLCBnZXRNeVZhcign6YCJ6ZuG57+76aG1JywgJzEnKSkucmVwbGFjZSgv4oCc4oCc4oCd4oCdL2csICcnKTtcXHJcXG4gICAgICAgIGxldCBzaHV0VGl0bGUgPSBjb2xvcign57+76aG15qih5byP5bey5YWz6ZetLOeCueWHu+WQr+eUqCcsICcjNTg1ODU4Jyk7XFxyXFxuICAgICAgICBzaHV0VGl0bGUgPSBzbWFsbChzaHV0VGl0bGUpLnJlcGxhY2UoL+KAnOKAnOKAneKAnS9nLCAnJyk7XFxyXFxuICAgICAgICBzaHV0VGl0bGUgPSBzaHV0VGl0bGUucmVwbGFjZSgv4oCc4oCc4oCd4oCdL2csICcnKTtcXHJcXG4gICAgICAgIGxldCBzaG93UGljID0gJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9tZXNzeS81NS5zdmcnO1xcclxcbiAgICAgICAgbGV0IHNodXRQaWMgPSAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL21lc3N5LzYzLnN2Zyc7XFxyXFxuICAgICAgICBsZXQgcGFnZVRpdGxlID0gJyc7XFxyXFxuICAgICAgICBsZXQgcGFnZVBpYyA9ICcnO1xcclxcbiAgICAgICAgaWYgKGdldE15VmFyKCfpgInpm4bmmL7npLonLCAn5YiG6aG1JykgPT09ICfliIbpobUnKSB7XFxyXFxuICAgICAgICAgICAgcGFnZVRpdGxlID0gc2hvd1RpdGxlO1xcclxcbiAgICAgICAgICAgIHBhZ2VQaWMgPSBzaG93UGljO1xcclxcbiAgICAgICAgfSBlbHNlIHtcXHJcXG4gICAgICAgICAgICBwYWdlVGl0bGUgPSBzaHV0VGl0bGU7XFxyXFxuICAgICAgICAgICAgcGFnZVBpYyA9IHNodXRQaWM7XFxyXFxuICAgICAgICB9XFxyXFxuICAgICAgICBsZXQgZCA9IFtdO1xcclxcbiAgICAgICAgZC5wdXNoKHtcXHJcXG4gICAgICAgICAgICB0aXRsZTogcGFnZVRpdGxlLFxcclxcbiAgICAgICAgICAgIGNvbF90eXBlOiBzaG93Q29sLFxcclxcbiAgICAgICAgICAgIHBpY191cmw6IHNob3dQaWMsXFxyXFxuICAgICAgICAgICAgdXJsOiAkKCfnoa7orqTliIfmjaLliIbpobXmmL7npLrnirbmgIE/JykuY29uZmlybSgoc2hvd1RpdGxlLCBzaG93UGljLCBzaHV0VGl0bGUsIHNodXRQaWMsIGZ1bmNMb2FkcGFnZSkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICBsZXQgbmV4dE1vZGUgPSBnZXRNeVZhcign6YCJ6ZuG5pi+56S6JywgJ+WIhumhtScpID09PSAn5YiG6aG1JyA/ICflhajpg6gnIDogJ+WIhumhtSc7XFxyXFxuICAgICAgICAgICAgICAgIGlmIChuZXh0TW9kZSA9PT0gJ+WIhumhtScpIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VUaXRsZSA9IHNob3dUaXRsZTtcXHJcXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VQaWMgPSBzaG93UGljO1xcclxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcclxcbiAgICAgICAgICAgICAgICAgICAgcGFnZVRpdGxlID0gc2h1dFRpdGxlO1xcclxcbiAgICAgICAgICAgICAgICAgICAgcGFnZVBpYyA9IHNodXRQaWM7XFxyXFxuICAgICAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICAgICAgdXBkYXRlSXRlbSgncGFnZVN0YXRlJywge1xcclxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHBhZ2VUaXRsZSxcXHJcXG4gICAgICAgICAgICAgICAgICAgIHBpY191cmw6IHBhZ2VQaWNcXHJcXG4gICAgICAgICAgICAgICAgfSk7XFxyXFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKCfpgInpm4bmmL7npLonLCBuZXh0TW9kZSk7XFxyXFxuICAgICAgICAgICAgICAgIGxldCBkID0gW107XFxyXFxuICAgICAgICAgICAgICAgIGZ1bmNMb2FkcGFnZShkKTtcXHJcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcclxcbiAgICAgICAgICAgIH0sIHNob3dUaXRsZSwgc2hvd1BpYywgc2h1dFRpdGxlLCBzaHV0UGljLCBmdW5jTG9hZHBhZ2UpLFxcclxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxyXFxuICAgICAgICAgICAgICAgIGlkOiAncGFnZVN0YXRlJyxcXHJcXG4gICAgICAgICAgICAgICAgY2xzOiAnc3RhdGVfY2xzJ1xcclxcbiAgICAgICAgICAgIH1cXHJcXG4gICAgICAgIH0pO1xcclxcbiAgICAgICAgZC5wdXNoKHtcXHJcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImxpbmVcXFwiLFxcclxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxyXFxuICAgICAgICAgICAgICAgIGlkOiAnc3RhdGVfU3BlcycsIC8vIOe7hOS7tuWBmmlk55SoXFxyXFxuICAgICAgICAgICAgICAgIGNsczogJ3N0YXRlX2NscydcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICB9KTtcXHJcXG4gICAgICAgIHJldHVybiBkXFxyXFxuICAgIH07XFxyXFxuICAgIC8v5o6S5bqPXFxyXFxuICAgIGZ1bmN0aW9uIGZ1bmNPcmRlcih0YWJzKSB7XFxyXFxuICAgICAgICB0YWJzID0gdGFicyB8fCBbJyddO1xcclxcbiAgICAgICAgbGV0IG9yZGVyX3R5cGUgPSBcXFwidGV4dF9jZW50ZXJfMVxcXCI7XFxyXFxuICAgICAgICBsZXQgdGlwczEgPSBjb2xvcihcXFwi4piG6YCG5bqP4oaRXFxcIiwgXFxcIiMyMjhiZTZcXFwiKTtcXHJcXG4gICAgICAgIGxldCB0aXBzMiA9IGNvbG9yKFxcXCLimIXmraPluo/ihpNcXFwiLCBcXFwiI2QwYWEzNDRcXFwiKTtcXHJcXG4gICAgICAgIGxldCBzaG93T3JkZXIgPSBnZXRNeVZhcihcXFwi6aG65bqPXFxcIiwgXFxcIuato+W6j1xcXCIpID09PSBcXFwi6YCG5bqPXFxcIiA/IHRpcHMxIDogdGlwczI7XFxyXFxuICAgICAgICBsZXQgdGl0bGUgPSBzbWFsbChjb2xvcihcXFwiJG5vd190YWI6IOmAiembhuWIl+ihqOWFsSBcXFwiLCBcXFwiIzA5OEFDMVxcXCIpICsgY29sb3IoZ2V0TXlWYXIoXFxcImxpc3RfY250XFxcIiksIFxcXCIjZDk2NzE1XFxcIikgKyBjb2xvcihcXFwiIOmbhlxcXCIsIFxcXCIjMDk4QUMxXFxcIikpICsgYmxhbmsoKSArIHJpZ2h0KHNtYWxsKCckc2hvd09yZGVyJykpO1xcclxcbiAgICAgICAgbGV0IHRpdGxlMiA9IHRpdGxlLnJlcGxhY2UoJyRub3dfdGFiJywgdGFic1tnZXRNeVZhcihcXFwidGFibnVtXFxcIiwgXFxcIjBcXFwiKV0pO1xcclxcbiAgICAgICAgbGV0IGQgPSBbXTtcXHJcXG4gICAgICAgIGQucHVzaCh7XFxyXFxuICAgICAgICAgICAgdGl0bGU6IHRpdGxlMi5yZXBsYWNlKCckc2hvd09yZGVyJywgc2hvd09yZGVyKSxcXHJcXG4gICAgICAgICAgICBjb2xfdHlwZTogb3JkZXJfdHlwZSxcXHJcXG4gICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKHRpdGxlMiwgdGlwczEsIHRpcHMyLCBmdW5jTG9hZHBhZ2UpID0+IHtcXHJcXG5cXHJcXG4gICAgICAgICAgICAgICAgaWYgKGdldE15VmFyKCfpobrluo8nLCAn5q2j5bqPJykgPT09ICfpgIbluo8nKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcign6aG65bqPJywgJ+ato+W6jycpO1xcclxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcclxcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ+mhuuW6jycsICfpgIbluo8nKTtcXHJcXG4gICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICBsZXQgb3JkZXJOb3cgPSBnZXRNeVZhcign6aG65bqPJywgJ+ato+W6jycpO1xcclxcbiAgICAgICAgICAgICAgICBsZXQgc2hvd09yZGVyID0gb3JkZXJOb3cgPT09ICfpgIbluo8nID8gdGlwczEgOiB0aXBzMjtcXHJcXG4gICAgICAgICAgICAgICAgdXBkYXRlSXRlbSgnb3JkZXJpZCcsIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZTIucmVwbGFjZSgnJHNob3dPcmRlcicsIHNob3dPcmRlcilcXHJcXG4gICAgICAgICAgICAgICAgfSk7XFxyXFxuICAgICAgICAgICAgICAgIC8vbG9nKFxcXCLngrnlh7vpobrluo9cXFwiK29yZGVyTm93KVxcclxcbiAgICAgICAgICAgICAgICBpZiAoZ2V0TXlWYXIoXFxcImxpc3RfY250XFxcIikgPiAxKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdXFxyXFxuICAgICAgICAgICAgICAgICAgICBmdW5jTG9hZHBhZ2UoZClcXHJcXG4gICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5YiH5o2i6aG65bqP5Li6OicgKyBvcmRlck5vd1xcclxcbiAgICAgICAgICAgICAgICAvL3JldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxyXFxuICAgICAgICAgICAgfSwgdGl0bGUyLCB0aXBzMSwgdGlwczIsIGZ1bmNMb2FkcGFnZSksXFxyXFxuICAgICAgICAgICAgZXh0cmE6IHtcXHJcXG4gICAgICAgICAgICAgICAgaWQ6IFxcXCJvcmRlcmlkXFxcIixcXHJcXG4gICAgICAgICAgICAgICAgY2xzOiAnb3JkZXJfY2xzJyxcXHJcXG4gICAgICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxyXFxuICAgICAgICAgICAgfSxcXHJcXG4gICAgICAgIH0pO1xcclxcbiAgICAgICAgZC5wdXNoKHtcXHJcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImxpbmVcXFwiLFxcclxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxyXFxuICAgICAgICAgICAgICAgIGlkOiAnb3JkZXJfU3BlcycsIC8vIOe7mee7hOS7tuWBmmlk55SoXFxyXFxuICAgICAgICAgICAgICAgIGNsczogJ29yZGVyX2NscydcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICB9KTtcXHJcXG4gICAgICAgIHJldHVybiBkXFxyXFxuICAgIH07XFxyXFxuICAgIC8vbG9nKFxcXCLlvZPliY3pobrluo/kuLo6LiBcXFwiK2dldE15VmFyKCfpobrluo8nLCAn5q2j5bqPJykpXFxyXFxuICAgIGxldCDliIbpobXmlbDnu4QgPSBbXTtcXHJcXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPD0g5pyA5aSn6aG15pWwOyBpKyspIHtcXHJcXG4gICAgICAgIHZhciB0b3RhbDEgPSBwYXJzZUludCgoaSAtIDEpICog5q+P6aG15pWw6YePKTtcXHJcXG4gICAgICAgIHZhciB0b3RhbDIgPSBwYXJzZUludChpICog5q+P6aG15pWw6YePKTtcXHJcXG4gICAgICAgIC8vbG9nKFxcXCLliIbpobXmlbDnu4TnlJ/miJDpobXnoIE6IFxcXCIrZ2V0TXlWYXIoJ+mAiembhue/u+mhtScsICcxJykpO1xcclxcbiAgICAgICAgaWYgKGkgPT0gZ2V0TXlWYXIoJ+mAiembhue/u+mhtScsICcxJykpIHtcXHJcXG4gICAgICAgICAgICB0b3RhbDEgPSAn8J+UuycgKyB0b3RhbDFcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICAgIC8vbG9nKHRvdGFsMSlcXHJcXG4gICAgICAgIGlmIChpID09IHBhcnNlSW50KOacgOWkp+mhteaVsCkpIHtcXHJcXG4gICAgICAgICAgICB0b3RhbDIgPSBsaXN0X2NudDtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICAgIOWIhumhteaVsOe7hC5wdXNoKHRvdGFsMSArICctJyArIHRvdGFsMilcXHJcXG4gICAgfTtcXHJcXG4gICAgLy9sb2co5YiG6aG15pWw57uEKVxcclxcbiAgICB2YXIg6aG26YOo5oyJ6ZKuID0gZnVuY3Rpb24oKSB7XFxyXFxuICAgICAgICBsZXQgdG9wQiA9IFtdO1xcclxcbiAgICAgICAgbGV0IOacgOWkp+mhteaVsCA9IGdldE15VmFyKFxcXCLmnIDlpKfpobXmlbBcXFwiKTtcXHJcXG4gICAgICAgIGxldCDmr4/pobXmlbDph48gPSBnZXRNeVZhcihcXFwi5q+P6aG15pWw6YePXFxcIik7XFxyXFxuICAgICAgICAvL2xvZyhcXFwi5pyA5aSn6aG15pWwOiBcXFwiICsg5pyA5aSn6aG15pWwKVxcclxcbiAgICAgICAgLy9sb2coXFxcIuW9k+WJjemhteaVsDpcXFwiICsgZ2V0TXlWYXIoJ+mAiembhue/u+mhtScsICcxJykpXFxyXFxuXFxyXFxuICAgICAgICB0b3BCLnB1c2goe1xcclxcbiAgICAgICAgICAgIHRpdGxlOiAn8J+TkScsXFxyXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXHJcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXHJcXG4gICAgICAgICAgICBleHRyYToge1xcclxcbiAgICAgICAgICAgICAgICBpZDogJ+WNoOS9jeespicsXFxyXFxuICAgICAgICAgICAgICAgIGNsczogJ3RvcFBhZ2UnXFxyXFxuICAgICAgICAgICAgfVxcclxcbiAgICAgICAgfSk7XFxyXFxuICAgICAgICDliIbpobXmlbDnu4QuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xcclxcbiAgICAgICAgICAgIGlmICgv8J+Uuy8udGVzdChpdGVtKSkge1xcclxcbiAgICAgICAgICAgICAgICBpdGVtID0gaXRlbS5yZXBsYWNlKCfwn5S7JywgJycpO1xcclxcbiAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICB0b3BCLnB1c2goe1xcclxcbiAgICAgICAgICAgICAgICB0aXRsZTogKHBhcnNlSW50KGdldE15VmFyKCfpgInpm4bnv7vpobUnLCAnMScpKSAtIDEpID09IGkgPyBnZXRIZWFkKGl0ZW0pIDogaXRlbSxcXHJcXG4gICAgICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nIyNub0hpc3RvcnkjXFxcIikubGF6eVJ1bGUoKGdldEhlYWQsIGdldGJ0bnNDb2xvciwg5YiG6aG15pWw57uELCBpLCBmdW5jTG9hZHBhZ2UpID0+IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGlmICgocGFyc2VJbnQoZ2V0TXlWYXIoJ+mAiembhue/u+mhtScsICcxJykpIC0gMSkgIT0gaSkge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oXFxcInRvcEJcXFwiICsgKHBhcnNlSW50KGdldE15VmFyKCfpgInpm4bnv7vpobUnLCAnMScpKSAtIDEpLCB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiDliIbpobXmlbDnu4RbKHBhcnNlSW50KGdldE15VmFyKCfpgInpm4bnv7vpobUnLCAnMScpKSAtIDEpXS5yZXBsYWNlKCfwn5S7JywgJycpLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oXFxcInRvcEJcXFwiICsgaSwge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZ2V0SGVhZCjliIbpobXmlbDnu4RbaV0pLnJlcGxhY2UoJ/CflLsnLCAnJyksXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcIumAiembhue/u+mhtVxcXCIsIChpICsgMSkpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oXFxcIuW6leWIhumhtTFcXFwiLCB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBnZXRidG5zQ29sb3IoZ2V0TXlWYXIoJ+mAiembhue/u+mhtScsICcxJykgKyAnIC8gJyArIGdldE15VmFyKFxcXCLmnIDlpKfpobXmlbBcXFwiKSksXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgLy9sb2coXFxcIueCueWHu+mAiembhue/u+mhteaVsDogXFxcIiArIGdldE15VmFyKCfpgInpm4bnv7vpobUnLCAnMScpKVxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vbG9nKHR5cGVvZihmdW5jTG9hZHBhZ2UpKVxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUl0ZW1CeUNscygncGxheUxpc3QnKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdO1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNMb2FkcGFnZShkKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICAgICAgICAgIC8vcmV0dXJuICd0b2FzdDovL+WIh+aNouaIkOWKnyEnXFxyXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcclxcbiAgICAgICAgICAgICAgICB9LCBnZXRIZWFkLCBnZXRidG5zQ29sb3IsIOWIhumhteaVsOe7hCwgaSwgZnVuY0xvYWRwYWdlKSxcXHJcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIixcXHJcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGlkOiAndG9wQicgKyBpLFxcclxcbiAgICAgICAgICAgICAgICAgICAgY2xzOiAndG9wUGFnZSdcXHJcXG4gICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgIH0pO1xcclxcbiAgICAgICAgfSlcXHJcXG4gICAgICAgIHRvcEIucHVzaCh7XFxyXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJsaW5lXFxcIixcXHJcXG4gICAgICAgICAgICBleHRyYToge1xcclxcbiAgICAgICAgICAgICAgICBpZDogJ3RvcF9TcGVzJywgLy8g57uZ57+76aG157uE5Lu25YGaaWTnlKhcXHJcXG4gICAgICAgICAgICAgICAgY2xzOiAndG9wUGFnZSdcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICB9KTtcXHJcXG4gICAgICAgIHJldHVybiB0b3BCXFxyXFxuICAgIH07XFxyXFxuXFxyXFxuICAgIHZhciDlupXpg6jmjInpkq4gPSBmdW5jdGlvbigpIHtcXHJcXG4gICAgICAgIGxldCBidG5zID0gW107XFxyXFxuICAgICAgICBsZXQg5pyA5aSn6aG15pWwID0gZ2V0TXlWYXIoXFxcIuacgOWkp+mhteaVsFxcXCIpO1xcclxcbiAgICAgICAgbGV0IOavj+mhteaVsOmHjyA9IGdldE15VmFyKFxcXCLmr4/pobXmlbDph49cXFwiKTtcXHJcXG4gICAgICAgIGxldCBsaXN0X2NudCA9IGdldE15VmFyKFxcXCJsaXN0X2NudFxcXCIpO1xcclxcbiAgICAgICAgYnRucy5wdXNoKHtcXHJcXG4gICAgICAgICAgICB0aXRsZTogZ2V0YnRuc0NvbG9yKGdldE15VmFyKCfpgInpm4bnv7vpobUnLCAnMScpICsgJyAvICcgKyDmnIDlpKfpobXmlbApLFxcclxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxyXFxuICAgICAgICAgICAgdXJsOiAkKOWIhumhteaVsOe7hCwgMywgJ+WIhumhteiMg+WbtOmAieaLqScpLnNlbGVjdCgoZ2V0SGVhZCwgZ2V0YnRuc0NvbG9yLCDliIbpobXmlbDnu4QsIOacgOWkp+mhteaVsCwg5q+P6aG15pWw6YePLCBmdW5jTG9hZHBhZ2UpID0+IHtcXHJcXG4gICAgICAgICAgICAgICAgLy9sb2coXFxcImlucHV0OlxcXCIgKyBpbnB1dClcXHJcXG4gICAgICAgICAgICAgICAgbGV0IHRvMiA9IGlucHV0LnNwbGl0KCctJylbMV07XFxyXFxuICAgICAgICAgICAgICAgIGxldCBwYWdlTnVtID0gTWF0aC5jZWlsKHBhcnNlSW50KHRvMikgLyDmr4/pobXmlbDph48pO1xcclxcbiAgICAgICAgICAgICAgICBpZiAoZ2V0TXlWYXIoJ+mAiembhue/u+mhtScsICcxJykgIT0gcGFnZU51bSkge1xcclxcbiAgICAgICAgICAgICAgICAgICAgLy9sb2coXFxcIuiMg+WbtOmAieaLqee/u+mhteaVsDpcXFwiICsgZ2V0TXlWYXIoXFxcIumAiembhue/u+mhtVxcXCIsIFxcXCIxXFxcIikpXFxyXFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwi6YCJ6ZuG57+76aG1XFxcIiwgcGFnZU51bSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKFxcXCJ0b3BCXFxcIiArIChwYXJzZUludChnZXRNeVZhcign6YCJ6ZuG57+76aG1JywgJzEnKSkgLSAxKSwge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiDliIbpobXmlbDnu4RbKHBhcnNlSW50KGdldE15VmFyKCfpgInpm4bnv7vpobUnLCAnMScpKSAtIDEpXS5yZXBsYWNlKCfwn5S7JywgJycpLFxcclxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKFxcXCJ0b3BCXFxcIiArIHBhcnNlSW50KHBhZ2VOdW0pLCB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGdldEhlYWQo5YiG6aG15pWw57uEW3BhZ2VOdW1dKS5yZXBsYWNlKCfwn5S7JywgJycpLFxcclxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxyXFxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKFxcXCLlupXliIbpobUxXFxcIiwge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBnZXRidG5zQ29sb3IocGFnZU51bSArICcgLyAnICsg5pyA5aSn6aG15pWwKSxcXHJcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcclxcbiAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGZ1bmNMb2FkcGFnZShkKVxcclxcbiAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXHJcXG4gICAgICAgICAgICB9LCBnZXRIZWFkLCBnZXRidG5zQ29sb3IsIOWIhumhteaVsOe7hCwg5pyA5aSn6aG15pWwLCDmr4/pobXmlbDph48sIGZ1bmNMb2FkcGFnZSksXFxyXFxuICAgICAgICAgICAgZXh0cmE6IHtcXHJcXG4gICAgICAgICAgICAgICAgaWQ6ICflupXliIbpobUxJyxcXHJcXG4gICAgICAgICAgICAgICAgY2xzOiAnZm9vdFBhZ2UnLFxcclxcbiAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICB9KTtcXHJcXG4gICAgICAgIGJ0bnMucHVzaCh7XFxyXFxuICAgICAgICAgICAgdGl0bGU6ICfinIjvuI/ot7Ppm4YnLFxcclxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF81XFxcIixcXHJcXG4gICAgICAgICAgICB1cmw6ICQobGlzdF9jbnQsICfor7fovpPlhaXopoHot7PovazliLDnmoTpm4bmlbAnKS5pbnB1dCgobWF4LCDmr4/pobXmlbDph48sIGZ1bmNMb2FkcGFnZSkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICBpZiAoaXNOYU4ocGFyc2VJbnQoaW5wdXQpKSkge1xcclxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+i+k+WFpeacieivryzor7fovpPlhaXkuIDkuKoxficgKyBtYXggKyAn55qE5pWw5a2XJ1xcclxcbiAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgICAgIGxldCB0b051bSA9IHBhcnNlSW50KGlucHV0KTtcXHJcXG4gICAgICAgICAgICAgICAgaWYgKHRvTnVtIDwgMSB8fCB0b051bSA+IG1heCkge1xcclxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+i+k+WFpeacieivryzor7fovpPlhaXkuIDkuKoxficgKyBtYXggKyAn55qE5pWw5a2XJ1xcclxcbiAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgICAgIGxldCBub3dQYWdlID0gcGFyc2VJbnQoZ2V0TXlWYXIoJ+mAiembhue/u+mhtScsICcxJykpIHx8IDE7IC8v5b2T5YmN6aG15pWwXFxyXFxuICAgICAgICAgICAgICAgIGxldCB0b1BhZ2UgPSBNYXRoLmNlaWwodG9OdW0gLyDmr4/pobXmlbDph48pO1xcclxcbiAgICAgICAgICAgICAgICBpZiAobm93UGFnZSA9PSB0b1BhZ2UpIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mnKzpobXlsLHmmK/liJfooajlhYPntKDmiYDlnKjpobUhJztcXHJcXG4gICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICBwdXRNeVZhcign6YCJ6ZuG57+76aG1JywgJycgKyB0b1BhZ2UpO1xcclxcbiAgICAgICAgICAgICAgICBsZXQgZCA9IFtdO1xcclxcbiAgICAgICAgICAgICAgICBmdW5jTG9hZHBhZ2UoZCk7XFxyXFxuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7Lot7PliLDliJfooajlhYPntKDnrKwnICsgdG9OdW0gKyAn5Liq5omA5Zyo6aG156CBOicgKyB0b1BhZ2VcXHJcXG4gICAgICAgICAgICB9LCBsaXN0X2NudCwg5q+P6aG15pWw6YePLCBmdW5jTG9hZHBhZ2UpLFxcclxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxyXFxuICAgICAgICAgICAgICAgIGNsczogJ2Zvb3RQYWdlJyxcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICB9KTtcXHJcXG4gICAgICAgIGJ0bnMucHVzaCh7XFxyXFxuICAgICAgICAgICAgdGl0bGU6ICfwn5Sd6Lez6aG1JyxcXHJcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfNVxcXCIsXFxyXFxuICAgICAgICAgICAgdXJsOiAkKDEsICfor7fovpPlhaXopoHot7PovazliLDnmoTpobXmlbAnKS5pbnB1dCgo5pyA5aSn6aG15pWwLCDmr4/pobXmlbDph48sIGZ1bmNMb2FkcGFnZSkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICBpZiAoaXNOYU4ocGFyc2VJbnQoaW5wdXQpKSkge1xcclxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+i+k+WFpeacieivryzor7fovpPlhaXkuIDkuKoxficgKyDmnIDlpKfpobXmlbAgKyAn55qE5pWw5a2XJ1xcclxcbiAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgICAgIGxldCB0b1BhZ2UgPSBwYXJzZUludChpbnB1dCk7XFxyXFxuICAgICAgICAgICAgICAgIGlmICh0b1BhZ2UgPCAxIHx8IHRvUGFnZSA+IOacgOWkp+mhteaVsCkge1xcclxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+i+k+WFpeacieivryzor7fovpPlhaXkuIDkuKoxficgKyDmnIDlpKfpobXmlbAgKyAn55qE5pWw5a2XJ1xcclxcbiAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgICAgIGxldCBub3dQYWdlID0gcGFyc2VJbnQoZ2V0TXlWYXIoJ+mAiembhue/u+mhtScsICcxJykpIHx8IDE7IC8v5b2T5YmN6aG15pWwXFxyXFxuICAgICAgICAgICAgICAgIGlmIChub3dQYWdlID09IHRvUGFnZSkge1xcclxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+acrOmhteWwseaYr+esrCcgKyB0b1BhZ2UgKyAn6aG1JztcXHJcXG4gICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICBwdXRNeVZhcign6YCJ6ZuG57+76aG1JywgJycgKyB0b1BhZ2UpO1xcclxcbiAgICAgICAgICAgICAgICBsZXQgZCA9IFtdO1xcclxcbiAgICAgICAgICAgICAgICBmdW5jTG9hZHBhZ2UoZCk7XFxyXFxuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7Lot7PliLDnrKwnICsgdG9QYWdlICsgJ+mhtSdcXHJcXG4gICAgICAgICAgICB9LCDmnIDlpKfpobXmlbAsIOavj+mhteaVsOmHjywgZnVuY0xvYWRwYWdlKSxcXHJcXG4gICAgICAgICAgICBleHRyYToge1xcclxcbiAgICAgICAgICAgICAgICBjbHM6ICdmb290UGFnZScsXFxyXFxuICAgICAgICAgICAgfVxcclxcbiAgICAgICAgfSk7XFxyXFxuICAgICAgICBidG5zLnB1c2goe1xcclxcbiAgICAgICAgICAgIHRpdGxlOiAn4o+u77iP5LiK6aG1JyxcXHJcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfNVxcXCIsXFxyXFxuICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCjmr4/pobXmlbDph48sIGZ1bmNMb2FkcGFnZSkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICBsZXQgbm93UGFnZSA9IHBhcnNlSW50KGdldE15VmFyKCfpgInpm4bnv7vpobUnLCAnMScpKSB8fCAxO1xcclxcbiAgICAgICAgICAgICAgICBsZXQgdG9QYWdlID0gbm93UGFnZSAtIDE7XFxyXFxuICAgICAgICAgICAgICAgIGlmICh0b1BhZ2UgPiAwKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcign6YCJ6ZuG57+76aG1JywgJycgKyB0b1BhZ2UpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGZ1bmNMb2FkcGFnZShkKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXHJcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7Lnu4/msqHmnInkuIrkuIDpobXkuoYhJ1xcclxcbiAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgfSwg5q+P6aG15pWw6YePLCBmdW5jTG9hZHBhZ2UpLFxcclxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxyXFxuICAgICAgICAgICAgICAgIGNsczogJ2Zvb3RQYWdlJyxcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICB9KTtcXHJcXG4gICAgICAgIGJ0bnMucHVzaCh7XFxyXFxuICAgICAgICAgICAgdGl0bGU6ICfij63vuI/kuIvpobUnLFxcclxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF81XFxcIixcXHJcXG4gICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKOacgOWkp+mhteaVsCwg5q+P6aG15pWw6YePLCBmdW5jTG9hZHBhZ2UpID0+IHtcXHJcXG4gICAgICAgICAgICAgICAgbGV0IG5vd1BhZ2UgPSBwYXJzZUludChnZXRNeVZhcign6YCJ6ZuG57+76aG1JywgJzEnKSkgfHwgMTtcXHJcXG4gICAgICAgICAgICAgICAgbGV0IHRvUGFnZSA9IG5vd1BhZ2UgKyAxO1xcclxcbiAgICAgICAgICAgICAgICBpZiAodG9QYWdlID4g5pyA5aSn6aG15pWwKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey57uP5rKh5pyJ5LiL5LiA6aG15LqGISdcXHJcXG4gICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICBwdXRNeVZhcign6YCJ6ZuG57+76aG1JywgJycgKyB0b1BhZ2UpO1xcclxcbiAgICAgICAgICAgICAgICBsZXQgZCA9IFtdO1xcclxcbiAgICAgICAgICAgICAgICBmdW5jTG9hZHBhZ2UoZCk7XFxyXFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXHJcXG4gICAgICAgICAgICB9LCDmnIDlpKfpobXmlbAsIOavj+mhteaVsOmHjywgZnVuY0xvYWRwYWdlKSxcXHJcXG4gICAgICAgICAgICBleHRyYToge1xcclxcbiAgICAgICAgICAgICAgICBjbHM6ICdmb290UGFnZScsXFxyXFxuICAgICAgICAgICAgfVxcclxcbiAgICAgICAgfSk7XFxyXFxuICAgICAgICBidG5zLnB1c2goe1xcclxcbiAgICAgICAgICAgIHRpdGxlOiAn8J+UmuWwvumhtScsXFxyXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzVcXFwiLFxcclxcbiAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgo5pyA5aSn6aG15pWwLCDmr4/pobXmlbDph48sIGZ1bmNMb2FkcGFnZSkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICBsZXQgdG9QYWdlID0g5pyA5aSn6aG15pWwO1xcclxcbiAgICAgICAgICAgICAgICBsZXQgbm93UGFnZSA9IHBhcnNlSW50KGdldE15VmFyKCfpgInpm4bnv7vpobUnLCAnMScpKSB8fCAxOyAvL+W9k+WJjemhteaVsFxcclxcbiAgICAgICAgICAgICAgICBpZiAobm93UGFnZSA9PSB0b1BhZ2UpIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7Lnu4/mmK/mnIDlkI7kuIDpobXllaYhJztcXHJcXG4gICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICBwdXRNeVZhcign6YCJ6ZuG57+76aG1JywgJycgKyB0b1BhZ2UpO1xcclxcbiAgICAgICAgICAgICAgICBsZXQgZCA9IFtdO1xcclxcbiAgICAgICAgICAgICAgICBmdW5jTG9hZHBhZ2UoZCk7XFxyXFxuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7Lot7PovazliLDnrKwnICsg5pyA5aSn6aG15pWwICsgJ+mhtSdcXHJcXG4gICAgICAgICAgICB9LCDmnIDlpKfpobXmlbAsIOavj+mhteaVsOmHjywgZnVuY0xvYWRwYWdlKSxcXHJcXG4gICAgICAgICAgICBleHRyYToge1xcclxcbiAgICAgICAgICAgICAgICBjbHM6ICdmb290UGFnZScsXFxyXFxuICAgICAgICAgICAgfVxcclxcbiAgICAgICAgfSk7XFxyXFxuICAgICAgICByZXR1cm4gYnRuc1xcclxcbiAgICB9XFxyXFxuICAgIGxldCBzZXBzID0gW107XFxyXFxuICAgIHNlcHMucHVzaCh7XFxyXFxuICAgICAgICBjb2xfdHlwZTogXFxcImxpbmVcXFwiLFxcclxcbiAgICAgICAgZXh0cmE6IHtcXHJcXG4gICAgICAgICAgICBpZDogJ2xpbmVfU3BlcycsIC8vIOe7mee/u+mhtee7hOS7tuWBmmlk55SoXFxyXFxuICAgICAgICAgICAgY2xzOiAncGxheUxpc3QnXFxyXFxuICAgICAgICB9XFxyXFxuICAgIH0pXFxyXFxuICAgIC8v57q/6LevXFxyXFxuICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGQsIGZ1bmNUYWIodGFiLCBcXFwiZmxleF9idXR0b25cXFwiKSk7XFxyXFxuICAgIGxldCBvcmRlcl9idG5zID0gZnVuY09yZGVyKHRhYik7XFxyXFxuICAgIGlmIChsaXN0X2NudCA+IG9iai5zaXplICYmIGdldE15VmFyKCfpgInpm4bmmL7npLonLCAn5YiG6aG1JykgPT0gJ+WIhumhtScpIHtcXHJcXG4gICAgICAgIGlmIChnZXRNeVZhcign6aG65bqPJywgJ+ato+W6jycpID09PSAn6YCG5bqPJykge1xcclxcbiAgICAgICAgICAgIHNob3dMaXN0ID0gc2hvd0xpc3QucmV2ZXJzZSgpO1xcclxcbiAgICAgICAgfVxcclxcbiAgICAgICAgc2hvd0xpc3QgPSBzaG93TGlzdC5jb25jYXQoc2Vwcyk7XFxyXFxuICAgICAgICBsZXQgc3RhdGVfYnRucyA9IHBhZ2VTdGF0ZSgpO1xcclxcbiAgICAgICAgbGV0IHRvcF9idG5zID0g6aG26YOo5oyJ6ZKuKCk7XFxyXFxuICAgICAgICBsZXQgZm9vdF9idG5zID0g5bqV6YOo5oyJ6ZKuKCk7XFxyXFxuICAgICAgICBpZiAoZ2V0TXlWYXIoJ+WIneWni+WMlicsICcnKSA9PSAnc3RhcnQnKSB7XFxyXFxuICAgICAgICAgICAgbG9nKCfmlbDmja7liJ3lp4vljJbkuK0nKVxcclxcbiAgICAgICAgICAgIC8v5byA5YWzICAgIFxcclxcbiAgICAgICAgICAgIGRlbGV0ZUl0ZW1CeUNscygnc3RhdGVfY2xzJyk7XFxyXFxuICAgICAgICAgICAgYWRkSXRlbUFmdGVyKFxcXCJ0YWJfU2Vwc1xcXCIsIHN0YXRlX2J0bnMpO1xcclxcbiAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGQsIHN0YXRlX2J0bnMpO1xcclxcblxcclxcbiAgICAgICAgICAgIC8v5o6S5bqPXFxyXFxuICAgICAgICAgICAgZGVsZXRlSXRlbUJ5Q2xzKCdvcmRlcl9jbHMnKTtcXHJcXG4gICAgICAgICAgICBhZGRJdGVtQWZ0ZXIoXFxcInN0YXRlX1NwZXNcXFwiLCBvcmRlcl9idG5zKTtcXHJcXG4gICAgICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShkLCBvcmRlcl9idG5zKTtcXHJcXG5cXHJcXG4gICAgICAgICAgICBwdXRNeVZhcihcXFwi5Yid5aeL5YyWXFxcIiwgXFxcImVuZFxcXCIpO1xcclxcbiAgICAgICAgfSBlbHNlIHtcXHJcXG4gICAgICAgICAgICAvL2xvZyhmaW5kSXRlbShcXFwicGFnZVN0YXRlXFxcIikpXFxyXFxuICAgICAgICAgICAgLy9sb2coc3RhdGVfYnRuc1swXSlcXHJcXG4gICAgICAgICAgICBpZiAoZ2V0TXlWYXIoXFxcIue/u+mhteeKtuaAgVxcXCIsIFxcXCLlvIDlkK9cXFwiKSA9PSBcXFwi5YWz6ZetXFxcIikge1xcclxcbiAgICAgICAgICAgICAgICBhZGRJdGVtQWZ0ZXIoXFxcInRhYl9TZXBzXFxcIiwgc3RhdGVfYnRucyk7XFxyXFxuICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGQsIHN0YXRlX2J0bnMpO1xcclxcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwi57+76aG154q25oCBXFxcIiwgXFxcIuW8gOWQr1xcXCIpO1xcclxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxyXFxuICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oXFxcInBhZ2VTdGF0ZVxcXCIsIHN0YXRlX2J0bnNbMF0pO1xcclxcbiAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICB1cGRhdGVJdGVtKFxcXCJvcmRlcmlkXFxcIiwgb3JkZXJfYnRuc1swXSk7XFxyXFxuICAgICAgICB9XFxyXFxuXFxyXFxuICAgICAgICAvL+mhtumDqOaMiemSriAgIFxcclxcbiAgICAgICAgZGVsZXRlSXRlbUJ5Q2xzKCd0b3BQYWdlJyk7XFxyXFxuICAgICAgICBhZGRJdGVtQWZ0ZXIoXFxcIm9yZGVyX1NwZXNcXFwiLCB0b3BfYnRucyk7XFxyXFxuICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShkLCB0b3BfYnRucyk7XFxyXFxuXFxyXFxuICAgICAgICAvL+e6v+i3r+WIl+ihqCAgICAgICAgXFxyXFxuICAgICAgICBkZWxldGVJdGVtQnlDbHMoJ3BsYXlMaXN0Jyk7XFxyXFxuICAgICAgICBhZGRJdGVtQWZ0ZXIoXFxcInRvcF9TcGVzXFxcIiwgc2hvd0xpc3QpO1xcclxcbiAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoZCwgc2hvd0xpc3QpO1xcclxcblxcclxcbiAgICAgICAgLy/lupXpg6jmjInpkq4gICBcXHJcXG4gICAgICAgIGRlbGV0ZUl0ZW1CeUNscygnZm9vdFBhZ2UnKTtcXHJcXG4gICAgICAgIGFkZEl0ZW1BZnRlcihcXFwibGluZV9TcGVzXFxcIiwgZm9vdF9idG5zKTtcXHJcXG4gICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGQsIGZvb3RfYnRucyk7XFxyXFxuXFxyXFxuICAgICAgICByZXR1cm4gZFxcclxcbiAgICB9IGVsc2UgaWYgKGxpc3RfY250ID4gb2JqLnNpemUgJiYgZ2V0TXlWYXIoJ+mAiembhuaYvuekuicsICfliIbpobUnKSA9PSAn5YWo6YOoJykge1xcclxcbiAgICAgICAgaWYgKGdldE15VmFyKCfpobrluo8nLCAn5q2j5bqPJykgPT09ICfpgIbluo8nKSB7XFxyXFxuICAgICAgICAgICAgdGFiX0xpc3RzID0gdGFiX0xpc3RzLnJldmVyc2UoKTtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGQsIHBhZ2VTdGF0ZSgpKTtcXHJcXG4gICAgICAgIC8vbGV0IHN0YXRlX2J0bnMgPSBwYWdlU3RhdGUoKTtcXHJcXG4gICAgICAgIC8v5o6S5bqPXFxyXFxuICAgICAgICB1cGRhdGVJdGVtKFxcXCJvcmRlcmlkXFxcIiwgb3JkZXJfYnRuc1swXSk7XFxyXFxuICAgICAgICBkZWxldGVJdGVtQnlDbHMoJ3RvcFBhZ2UnKTtcXHJcXG4gICAgICAgIGRlbGV0ZUl0ZW1CeUNscygncGxheUxpc3QnKTtcXHJcXG4gICAgICAgIGRlbGV0ZUl0ZW1CeUNscygnZm9vdFBhZ2UnKTtcXHJcXG4gICAgICAgIGFkZEl0ZW1BZnRlcihcXFwib3JkZXJpZFxcXCIsIHRhYl9MaXN0cyk7XFxyXFxuICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShkLCB0YWJfTGlzdHMpO1xcclxcbiAgICAgICAgcmV0dXJuIGRcXHJcXG4gICAgfSBlbHNlIHtcXHJcXG4gICAgICAgIGlmIChnZXRNeVZhcign6aG65bqPJywgJ+ato+W6jycpID09PSAn6YCG5bqPJykge1xcclxcbiAgICAgICAgICAgIHRhYl9MaXN0cyA9IHRhYl9MaXN0cy5yZXZlcnNlKCk7XFxyXFxuICAgICAgICB9XFxyXFxuICAgICAgICAvL2xvZyhcXFwi57+76aG15qih5byP5bey5YWz6Zet77yM5b2T5YmN57q/6Lev5YiX6KGo5pWw6YeP5LiN6Laz5Lul5byA5ZCv57+76aG154q25oCBIVxcXCIpXFxyXFxuICAgICAgICBkZWxldGVJdGVtQnlDbHMoJ3N0YXRlX2NscycpO1xcclxcbiAgICAgICAgcHV0TXlWYXIoXFxcIue/u+mhteeKtuaAgVxcXCIsIFxcXCLlhbPpl61cXFwiKTtcXHJcXG4gICAgICAgIC8vbG9nKGdldE15VmFyKFxcXCLnv7vpobXnirbmgIFcXFwiLCBcXFwi5byA5ZCvXFxcIikpXFxyXFxuICAgICAgICAvL+aOkuW6jyAgICAgICAgXFxyXFxuICAgICAgICB1cGRhdGVJdGVtKFxcXCJvcmRlcmlkXFxcIiwgb3JkZXJfYnRuc1swXSk7XFxyXFxuICAgICAgICBkZWxldGVJdGVtQnlDbHMoJ3RvcFBhZ2UnKTtcXHJcXG4gICAgICAgIGRlbGV0ZUl0ZW1CeUNscygnZm9vdFBhZ2UnKTtcXHJcXG4gICAgICAgIGRlbGV0ZUl0ZW1CeUNscygncGxheUxpc3QnKTtcXHJcXG4gICAgICAgIGFkZEl0ZW1BZnRlcihcXFwib3JkZXJpZFxcXCIsIHRhYl9MaXN0cyk7XFxyXFxuICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShkLCB0YWJfTGlzdHMpO1xcclxcbiAgICAgICAgcmV0dXJuIGRcXHJcXG4gICAgfVxcclxcblxcclxcbn1cXHJcXG5cXHJcXG5mdW5jdGlvbiDliJ3lp4vljJYoZCwgb2JqKSB7XFxyXFxuICAgIGZ1bmN0aW9uIOWCqOWtmOi2s+i/uShNWV9VUkwsIHNpemUsIE1ZX1BBUkFNUykge1xcclxcbiAgICAgICAgc2l6ZSA9IHNpemUgfHwgcGFyc2VJbnQoZ2V0SXRlbSgn5q+P6aG15pWw6YePJywgJzQwJykpOyAvL+avj+mhteaVsOmHj1xcclxcbiAgICAgICAgTVlfVVJMID0gTVlfVVJMLnJlcGxhY2UoJ2hpa2VyOi8vZW1wdHkjIycsICcnKTtcXHJcXG4gICAgICAgIGxldCBmb290SGlzdG9yeSA9IEpTT04ucGFyc2UocmVhZEZpbGUoJ2Zvb3RIaXN0b3J5Lmpzb24nLCAwKSB8fCAnW10nKTtcXHJcXG4gICAgICAgIGxldCBmb290SWRleCA9IGZvb3RIaXN0b3J5LmZpbmRJbmRleCh4ID0+IHgudXJsID09PSBNWV9VUkwpO1xcclxcbiAgICAgICAgbGV0IGZvb3RfSXRlbSA9IHtcXHJcXG4gICAgICAgICAgICB1cmw6IE1ZX1VSTCxcXHJcXG4gICAgICAgICAgICBwYWdlOiBwYXJzZUludChnZXRNeVZhcign6YCJ6ZuG57+76aG1JywgJzEnKSksXFxyXFxuICAgICAgICAgICAgc2l6ZTogc2l6ZVxcclxcbiAgICAgICAgfTtcXHJcXG4gICAgICAgIGlmIChNWV9QQVJBTVMudGl0bGUpIHtcXHJcXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGZvb3RfSXRlbSwge1xcclxcbiAgICAgICAgICAgICAgICB0aXRsZTogTVlfUEFSQU1TLnRpdGxlXFxyXFxuICAgICAgICAgICAgfSk7XFxyXFxuICAgICAgICB9XFxyXFxuICAgICAgICBpZiAoZm9vdElkZXggPiAtMSkge1xcclxcbiAgICAgICAgICAgIGZvb3RIaXN0b3J5W2Zvb3RJZGV4XSA9IGZvb3RfSXRlbTtcXHJcXG4gICAgICAgIH0gZWxzZSB7XFxyXFxuICAgICAgICAgICAgZm9vdEhpc3RvcnkucHVzaChmb290X0l0ZW0pO1xcclxcbiAgICAgICAgfVxcclxcbiAgICAgICAgc2F2ZUZpbGUoJ2Zvb3RIaXN0b3J5Lmpzb24nLCBKU09OLnN0cmluZ2lmeShmb290SGlzdG9yeSksIDApO1xcclxcbiAgICAgICAgLy9sb2coJ+W3suWCqOWtmOi2s+i/uTonICsgSlNPTi5zdHJpbmdpZnkoZm9vdF9JdGVtKSk7XFxyXFxuICAgIH07XFxyXFxuXFxyXFxuICAgIGZ1bmN0aW9uIOWKoOi9vei2s+i/uShNWV9VUkwsIHNpemUpIHtcXHJcXG4gICAgICAgIC8vbG9nKFxcXCLmraPlnKjliqDovb3otrPov7lcXFwiKTtcXHJcXG4gICAgICAgIHNpemUgPSBzaXplIHx8IHBhcnNlSW50KGdldEl0ZW0oJ+avj+mhteaVsOmHjycsICc0MCcpKTsgLy/mr4/pobXmlbDph49cXHJcXG4gICAgICAgIE1ZX1VSTCA9IE1ZX1VSTC5yZXBsYWNlKCdoaWtlcjovL2VtcHR5IyMnLCAnJyk7XFxyXFxuICAgICAgICAvL2xvZyhcXFwi6L+b6KGM6Laz6L+55aSE55CGXFxcIilcXHJcXG4gICAgICAgIGxldCBmb290SGlzdG9yeSA9IEpTT04ucGFyc2UocmVhZEZpbGUoJ2Zvb3RIaXN0b3J5Lmpzb24nLCAwKSB8fCAnW10nKTtcXHJcXG4gICAgICAgIC8vbG9nKGZvb3RIaXN0b3J5KVxcclxcbiAgICAgICAgbGV0IGZvb3RJdGVtID0gZm9vdEhpc3RvcnkuZmluZCh4ID0+IHgudXJsID09PSBNWV9VUkwpO1xcclxcbiAgICAgICAgLy9sb2coXFxcImZpbmQ6XFxcIitKU09OLnN0cmluZ2lmeShmb290SXRlbSkpXFxyXFxuICAgICAgICBsZXQgcGFnZSA9IGZvb3RJdGVtICYmIGZvb3RJdGVtLnBhZ2UgPyBmb290SXRlbS5wYWdlICsgJycgOiAnMSc7XFxyXFxuICAgICAgICAvL2xvZyhcXFwi5Yqg6L296Laz6L+5OlxcXCIgKyBwYWdlKTtcXHJcXG4gICAgICAgIGlmIChmb290SXRlbSAmJiBmb290SXRlbS5wYWdlICYmIGZvb3RJdGVtLnNpemUgIT09IHNpemUpIHtcXHJcXG4gICAgICAgICAgICBwYWdlID0gKGZvb3RJdGVtLnBhZ2UgKiBmb290SXRlbS5zaXplKSAvIHNpemU7XFxyXFxuICAgICAgICAgICAgcGFnZSA9IE1hdGguY2VpbChwYWdlKSArICcnO1xcclxcbiAgICAgICAgICAgIC8vbG9nKGAke2Zvb3RJdGVtLnRpdGxlfHwnJ33otrPov7nlt7LliqDovb0s5q2j56Gu6aG15pWwOmAgKyBwYWdlKTtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICAgIHB1dE15VmFyKCfpgInpm4bnv7vpobUnLCBwYWdlKTtcXHJcXG4gICAgfTtcXHJcXG5cXHJcXG4gICAgLy8g6YCJ6ZuG5YiX6KGo5b+F6aG75aSE55CG5a6M5ZCOIHN0b3JhZ2UwLnB1dE15VmFyKCdzaG93TGlzdCcpIOaIluiAhSBzYXZlRmlsZSgnc2hvd0xpc3QuanNvbicsSlNPTi5zdHJpbmdpZnkobGlzdCksMClcXHJcXG4gICAgbGV0IGRlZl9vYmogPSB7XFxyXFxuICAgICAgICBsaXN0OiBbXSwgLy/lv4XkvKBcXHJcXG4gICAgICAgIHRhYjogW10sIC8v5b+F5LygICAgICAgICAgXFxyXFxuICAgICAgICBzaXplOiBwYXJzZUludChnZXRJdGVtKCfmr4/pobXmlbDph48nLCAnNDAnKSksIC8v5q+P6aG15pWw6YePXFxyXFxuICAgICAgICBvdmVyOiBwYXJzZUludChnZXRJdGVtKCfnv7vpobXpmIDlgLwnLCAnNDAnKSksIC8v57+76aG16ZiA5YC877yM6LaF6L+H5aSa5bCR5omN5pi+56S657+76aG157uE5Lu2XFxyXFxuICAgICAgICBjb2xfdHlwZTogZ2V0SXRlbSgn5oyJ6ZKu5qC35byPJywgJ3RleHRfNScpIHx8IE1ZX1JVTEUuY29sX3R5cGUgLy/kuoznuqfpgInpm4bmoLflvI9cXHJcXG4gICAgfVxcclxcbiAgICAvL2xvZyhkZWZfb2JqKVxcclxcbiAgICBvYmogPSBvYmogfHwge307XFxyXFxuICAgIG9iaiA9IE9iamVjdC5hc3NpZ24oZGVmX29iaiwgb2JqKTtcXHJcXG4gICAgc2F2ZUZpbGUoXFxcIk9iamVjdC5qc29uXFxcIiwgSlNPTi5zdHJpbmdpZnkob2JqKSwgMCk7XFxyXFxuICAgIC8vbG9nKHRhYl9MaXN0cykgIFxcclxcblxcclxcbiAgICBsZXQg5q+P6aG15pWw6YePID0gb2JqLnNpemU7IC8vIOWIhumhteeahOavj+mhteaVsOmHjyAgICAgICAgXFxyXFxuICAgIOWKoOi9vei2s+i/uShNWV9VUkwsIOavj+mhteaVsOmHjyk7XFxyXFxuICAgIHB1dE15VmFyKFxcXCLliJ3lp4vljJZcXFwiLCBcXFwic3RhcnRcXFwiKTtcXHJcXG4gICAgYWRkTGlzdGVuZXIoJ29uQ2xvc2UnLCAkLnRvU3RyaW5nKCjlgqjlrZjotrPov7ksIE1ZX1VSTCwg5q+P6aG15pWw6YePLCBNWV9QQVJBTVMpID0+IHtcXHJcXG4gICAgICAgIOWCqOWtmOi2s+i/uShNWV9VUkwsIOavj+mhteaVsOmHjywgTVlfUEFSQU1TKTtcXHJcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcIuWIneWni+WMllxcXCIpO1xcclxcbiAgICAgICAgY2xlYXJNeVZhcihcXFwi6aG65bqPXFxcIik7XFxyXFxuICAgICAgICBjbGVhck15VmFyKFxcXCJ0YWJudW1cXFwiKTtcXHJcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcIumAiembhue/u+mhtVxcXCIpO1xcclxcbiAgICAgICAgZGVsZXRlRmlsZShcXFwiT2JqZWN0Lmpzb25cXFwiKTtcXHJcXG4gICAgfSwg5YKo5a2Y6Laz6L+5LCBNWV9VUkwsIOavj+mhteaVsOmHjywgTVlfUEFSQU1TIHx8IHt9KSk7XFxyXFxuICAgIHJldHVybiBmdW5jTG9hZHBhZ2UoZCwgb2JqKVxcclxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS6jOe6p+mhtemdolwiLFwicGF0aFwiOlwiZWpfcGFnZVwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5hZGRMaXN0ZW5lcihcXFwib25DbG9zZVxcXCIsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICBjbGVhck15VmFyKFxcXCJqal9zdGF0ZVxcXCIpO1xcbn0pKVxcblxcbmZ1bmN0aW9uIHNlY29uZHNUb1RpbWUoc2Vjb25kcykge1xcbiAgICB2YXIgaG91cnMgPSBNYXRoLmZsb29yKHNlY29uZHMgLyAzNjAwKTtcXG4gICAgdmFyIG1pbnV0ZXMgPSBNYXRoLmZsb29yKChzZWNvbmRzIC0gKGhvdXJzICogMzYwMCkpIC8gNjApO1xcbiAgICB2YXIgc2Vjb25kcyA9IHNlY29uZHMgLSAoaG91cnMgKiAzNjAwKSAtIChtaW51dGVzICogNjApO1xcblxcbiAgICAvLyByb3VuZCBzZWNvbmRzXFxuICAgIHNlY29uZHMgPSBNYXRoLnJvdW5kKHNlY29uZHMgKiAxMDApIC8gMTAwXFxuXFxuICAgIHZhciByZXN1bHQgPSAoaG91cnMgPCAxMCA/IFxcXCIwXFxcIiArIGhvdXJzIDogaG91cnMpO1xcbiAgICByZXN1bHQgKz0gXFxcIjpcXFwiICsgKG1pbnV0ZXMgPCAxMCA/IFxcXCIwXFxcIiArIG1pbnV0ZXMgOiBtaW51dGVzKTtcXG4gICAgcmVzdWx0ICs9IFxcXCI6XFxcIiArIChzZWNvbmRzIDwgMTAgPyBcXFwiMFxcXCIgKyBzZWNvbmRzIDogc2Vjb25kcyk7XFxuICAgIHJldHVybiByZXN1bHQ7XFxufVxcbi8vbG9nKE1ZX1VSTClcXG4vL2xvZyhNWV9QQVJBTVMpXFxudmFyIGNpZCA9IE1ZX1VSTC5zcGxpdCgnIycpWzFdO1xcbnZhciB2aWQgPSBNWV9VUkwuc3BsaXQoJyMnKVsyXTtcXG4vL2xvZyhjaWQpXFxuLy9sb2codmlkKVxcbmNvbnN0IGVqVXJsID0gXFxcImh0dHBzOi8vcGJhY2Nlc3MudmlkZW8ucXEuY29tL3RycGMudW5pdmVyc2FsX2JhY2tlbmRfc2VydmljZS5wYWdlX3NlcnZlcl9ycGMuUGFnZVNlcnZlci9HZXRQYWdlRGF0YT92aWRlb19hcHBpZD0zMDAwMDEwJnZwbGF0Zm9ybT0yXFxcIjtcXG52YXIgaW5mb19mZXRjaERhdGEgPSBKU09OLnBhcnNlKGZldGNoUEMoZWpVcmwsIHtcXG4gICAgaGVhZGVyczoge1xcbiAgICAgICAgXFxcIkNvbnRlbnQtVHlwZVxcXCI6IFxcXCJhcHBsaWNhdGlvbi9qc29uXFxcIixcXG4gICAgICAgIFxcXCJyZWZlcmVyXFxcIjogXFxcImh0dHBzOi8vdi5xcS5jb20vXFxcIixcXG4gICAgICAgIFxcXCJDb29raWVcXFwiOiBcXFwidmlkZW9fcGxhdGZvcm09Mjt2dmVyc2lvbl9uYW1lPTguMi45NVxcXCJcXG4gICAgfSxcXG4gICAgbWV0aG9kOiBcXFwiUE9TVFxcXCIsXFxuICAgIGJvZHk6IHtcXG4gICAgICAgIFxcXCJwYWdlX3BhcmFtc1xcXCI6IHtcXG4gICAgICAgICAgICBcXFwicmVxX2Zyb21cXFwiOiBcXFwid2ViXFxcIixcXG4gICAgICAgICAgICBcXFwiY2lkXFxcIjogKGNpZCA/IGNpZCA6IFxcXCJcXFwiKSxcXG4gICAgICAgICAgICBcXFwidmlkXFxcIjogdmlkLFxcbiAgICAgICAgICAgIFxcXCJsaWRcXFwiOiBcXFwiXFxcIixcXG4gICAgICAgICAgICBcXFwicGFnZV90eXBlXFxcIjogXFxcImRldGFpbF9vcGVyYXRpb25cXFwiLFxcbiAgICAgICAgICAgIFxcXCJwYWdlX2lkXFxcIjogXFxcImRldGFpbF9wYWdlX2ludHJvZHVjdGlvblxcXCJcXG4gICAgICAgIH0sXFxuICAgICAgICBcXFwiaGFzX2NhY2hlXFxcIjogMVxcbiAgICB9XFxufSkpO1xcbi8vbG9nKGluZm9fZmV0Y2hEYXRhKVxcbnZhciBpbmZvX0pzb24gPSBpbmZvX2ZldGNoRGF0YS5kYXRhLm1vZHVsZV9saXN0X2RhdGFzWzBdLm1vZHVsZV9kYXRhc1swXS5pdGVtX2RhdGFfbGlzdHMuaXRlbV9kYXRhc1swXTtcXG4vL2xvZyhpbmZvX0pzb24pXFxudmFyIGl0ZW1fcGFyYW1zID0gaW5mb19Kc29uLml0ZW1fcGFyYW1zOyAvL+W9seinhuS/oeaBr1xcbi8vdmFyIHN1Yl9pdGVtcyA9IGluZm9fSnNvbi5zdWJfaXRlbXM7IC8v5ryU5ZGY5L+h5oGvXFxuXFxudmFyIGFyZWFfbmFtZSA9IGl0ZW1fcGFyYW1zLmFyZWFfbmFtZSA/IGl0ZW1fcGFyYW1zLmFyZWFfbmFtZSA6IFxcXCLmnKrnn6VcXFwiO1xcbnZhciBicm9hZGNhc3RfdGltZSA9IGl0ZW1fcGFyYW1zLmJyb2FkY2FzdF90aW1lID8gaXRlbV9wYXJhbXMuYnJvYWRjYXN0X3RpbWUgOiBcXFwi5pyq55+lXFxcIjsgLy/lvIDmkq3ml7bpl7RcXG52YXIgdXBkYXRlX25vdGlmeV9kZXNjID0gaXRlbV9wYXJhbXMudXBkYXRlX25vdGlmeV9kZXNjID8gaXRlbV9wYXJhbXMudXBkYXRlX25vdGlmeV9kZXNjIDogXFxcIlxcXCI7XFxudmFyIHRhZ190ZXh0ID0gaXRlbV9wYXJhbXMudGFnX3RleHQgPyBpdGVtX3BhcmFtcy50YWdfdGV4dCA6IFxcXCJcXFwiO1xcbnZhciB0aXRsZSA9IGl0ZW1fcGFyYW1zLnRpdGxlID8gaXRlbV9wYXJhbXMudGl0bGUgOiBcXFwiXFxcIjtcXG52YXIgZGV0YWlsX2luZm8gPSBpdGVtX3BhcmFtcy5kZXRhaWxfaW5mbztcXG4vL3ZhciBkaXJlY3RvciA9IGpzb24uZGlyZWN0b3IgPyAn5a+85ryU77yaJyArIGpzb24uZGlyZWN0b3IgOiBcXFwiXFxcIjtcXG4vL3ZhciBzdGFycmluZyA9IGpzb24uc3RhcnJpbmcgPyAn5ryU5ZGY77yaJyArIGpzb24uc3RhcnJpbmcgOiAoanNvbi5zaGVuZ3lvdSA/ICflo7DkvJjvvJonICsganNvbi5zaGVuZ3lvdSA6IFxcXCJcXFwiKTtcXG52YXIgbWFpbl9nZW5yZXMgPSBpdGVtX3BhcmFtcy5tYWluX2dlbnJlcyA/IGl0ZW1fcGFyYW1zLm1haW5fZ2VucmVzIDogJ+aXoCc7XFxudmFyIHBpY1VybCA9IChpdGVtX3BhcmFtcy5uZXdfcGljX3Z0ID8gaXRlbV9wYXJhbXMubmV3X3BpY192dCA6IChpdGVtX3BhcmFtcy5uZXdfcGljX2h6ID8gaXRlbV9wYXJhbXMubmV3X3BpY19oeiA6IFxcXCJcXFwiKSk7XFxuLy/pgInpm4bor7fmsYLmiYDpnIDlj4LmlbBcXG4vL3ZhciBlcGlzb2RlX2FsbCA9IGl0ZW1fcGFyYW1zLmVwaXNvZGVfYWxsO1xcbi8vbG9nKGVwaXNvZGVfYWxsKVxcbnZhciByZXBvcnRfbGlkID0gaXRlbV9wYXJhbXNbXFxcInJlcG9ydC5saWRcXFwiXTtcXG52YXIgcmVwb3J0X2NpZCA9IGl0ZW1fcGFyYW1zW1xcXCJyZXBvcnQuY2lkXFxcIl07XFxuLy9sb2coXFxcInJlcG9ydF9jaWQ6IFxcXCIrcmVwb3J0X2NpZClcXG5pZiAocmVwb3J0X2NpZCkge1xcbiAgICBjaWQgPSByZXBvcnRfY2lkO1xcbn1cXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIlxcXFx0XFxcIiArIHRpdGxlICsgJ1xcXFx0JyArIHRhZ190ZXh0ICsgXFxcIlxcXFxu5Zyw5Yy6OiBcXFwiICsgYXJlYV9uYW1lLFxcbiAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvUm91dGU/cnVsZT1NeUZpZWxk4bSw4oG/JnR5cGU96K6+572uI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5I1xcXCIsXFxuICAgIGNvbF90eXBlOiBcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1clxcXCIsXFxuICAgIGRlc2M6IHVwZGF0ZV9ub3RpZnlfZGVzYyArIFxcXCJcXFxcbuexu+WeizogXFxcIiArIG1haW5fZ2VucmVzICsgXFxcIlxcXFxu5byA5pKt5pe26Ze077yaXFxcIiArIGJyb2FkY2FzdF90aW1lLFxcbiAgICBwaWNfdXJsOiBwaWNVcmwgPyBwaWNVcmwgOiBNWV9QQVJBTVMucGljVXJsXFxufSk7XFxuXFxudHJ5IHtcXG4gICAgbGV0IGNvbnRlbnRfZGVzYyA9IGl0ZW1fcGFyYW1zLmNvdmVyX2Rlc2NyaXB0aW9uO1xcblxcbiAgICBmdW5jdGlvbiBmdW5jRGVzYyhkLCBjb250ZW50X2Rlc2MpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICflvbHniYfnroDku4sgPHNtYWxsPjxzbWFsbD48c3BhbiBzdHlsZT1cXFwiY29sb3I6IzE5Qjg5RFxcXCI+5bGV5byAPjwvc3Bhbj48L3NtYWxsPjwvc21hbGw+JyxcXG4gICAgICAgICAgICBpbWc6IFxcXCJodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vbW9yZS8xOTcucG5nXFxcIixcXG4gICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGNvbnRlbnRfZGVzYykgPT4ge1xcbiAgICAgICAgICAgICAgICBpZiAoZ2V0TXlWYXIoXFxcImpqX3N0YXRlXFxcIiwgXFxcIuaUtui1t1xcXCIpID09IFxcXCLmlLbotbdcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKFxcXCJjb250ZW50X2pqaWRcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICflvbHniYfnroDku4sgPHNtYWxsPjxzbWFsbD48c3BhbiBzdHlsZT1cXFwiY29sb3I6IzE5Qjg5RFxcXCI+5pS26LW3Pjwvc3Bhbj48L3NtYWxsPjwvc21hbGw+J1xcbiAgICAgICAgICAgICAgICAgICAgfSlcXG5cXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oXFxcImNvbnRlbnRfZGVjaWRcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICc8c3BhbiBzdHlsZT1cXFwiY29sb3I6IzgwODA4MFxcXCI+JyArIGNvbnRlbnRfZGVzYyArICc8L3NwYW4+J1xcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJqal9zdGF0ZVxcXCIsIFxcXCLlsZXlvIBcXFwiKTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oXFxcImNvbnRlbnRfamppZFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+W9seeJh+eugOS7iyA8c21hbGw+PHNtYWxsPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjojMTlCODlEXFxcIj7lsZXlvIA+PC9zcGFuPjwvc21hbGw+PC9zbWFsbD4nXFxuICAgICAgICAgICAgICAgICAgICB9KVxcblxcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbShcXFwiY29udGVudF9kZWNpZFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJzxzcGFuIHN0eWxlPVxcXCJjb2xvcjojODA4MDgwXFxcIj4nICsgY29udGVudF9kZXNjLnN1YnN0cigwLCA1MCkgKyAnLi4uPC9zcGFuPidcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiampfc3RhdGVcXFwiLCBcXFwi5pS26LW3XFxcIik7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgIH0sIGNvbnRlbnRfZGVzYyksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGlkOiBcXFwiY29udGVudF9qamlkXFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJzxzcGFuIHN0eWxlPVxcXCJjb2xvcjojODA4MDgwXFxcIj4nICsgY29udGVudF9kZXNjLnN1YnN0cigwLCA1MCkgKyAnLi4uPC9zcGFuPicsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJyaWNoX3RleHRcXFwiLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIHRleHRTaXplOiAxNCxcXG4gICAgICAgICAgICAgICAgbGluZVNwYWNpbmc6IDMsXFxuICAgICAgICAgICAgICAgIGlkOiBcXFwiY29udGVudF9kZWNpZFxcXCJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICAgIHJldHVybiBkXFxuICAgIH1cXG4gICAgaWYgKGNvbnRlbnRfZGVzYykge1xcbiAgICAgICAgZnVuY0Rlc2MoZCwgY29udGVudF9kZXNjKTtcXG4gICAgfVxcblxcbn0gY2F0Y2ggKGUpIHt9XFxudmFyIGxhenkgPSAkKCcnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgIGV2YWwoXFxcInZhciBjb25maWcgPVxcXCIgKyBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9NeVBhcnNlU2V0Lmpzb25cXFwiKSk7XFxuICAgIGV2YWwoZmV0Y2goY29uZmlnLmNqKSk7XFxuICAgIHJldHVybiBheXRtUGFyc2UoaW5wdXQpXFxufSk7XFxubGV0IHRhYnMgPSBbXFxcIuiFvuiur1xcXCJdO1xcbnZhciBwbGF5X0xpc3RzID0gW11cXG4vL2xvZyhjaWQpXFxuaWYgKGNpZCkge1xcbiAgICB2YXIgYm9keSA9IHtcXG4gICAgICAgIFxcXCJwYWdlX3BhcmFtc1xcXCI6IHtcXG4gICAgICAgICAgICBcXFwicmVxX2Zyb21cXFwiOiBcXFwid2ViX3ZzaXRlXFxcIixcXG4gICAgICAgICAgICBcXFwicGFnZV9pZFxcXCI6IFxcXCJ2c2l0ZV9lcGlzb2RlX2xpc3RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJwYWdlX3R5cGVcXFwiOiBcXFwiZGV0YWlsX29wZXJhdGlvblxcXCIsXFxuICAgICAgICAgICAgXFxcImlkX3R5cGVcXFwiOiBcXFwiMVxcXCIsXFxuICAgICAgICAgICAgXFxcInBhZ2Vfc2l6ZVxcXCI6IFxcXCI2MFxcXCIsXFxuICAgICAgICAgICAgXFxcImNpZFxcXCI6IGNpZCxcXG4gICAgICAgICAgICBcXFwidmlkXFxcIjogXFxcIlxcXCIsXFxuICAgICAgICAgICAgXFxcImxpZFxcXCI6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgIFxcXCJwYWdlX251bVxcXCI6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgIFxcXCJwYWdlX2NvbnRleHRcXFwiOiBcXFwiXFxcIixcXG4gICAgICAgICAgICBcXFwiZGV0YWlsX3BhZ2VfdHlwZVxcXCI6IFxcXCIxXFxcIlxcbiAgICAgICAgfSxcXG4gICAgICAgIFxcXCJoYXNfY2FjaGVcXFwiOiAxXFxuICAgIH1cXG4gICAgLy9sb2coYm9keSlcXG4gICAgdmFyIHBsYXlsaXN0c19mZXRjaERhdGEgPSBKU09OLnBhcnNlKGZldGNoUEMoZWpVcmwsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiQ29udGVudC1UeXBlXFxcIjogXFxcImFwcGxpY2F0aW9uL2pzb25cXFwiLFxcbiAgICAgICAgICAgIFxcXCJyZWZlcmVyXFxcIjogXFxcImh0dHBzOi8vdi5xcS5jb20vXFxcIixcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogXFxcInZpZGVvX3BsYXRmb3JtPTI7dnZlcnNpb25fbmFtZT04LjIuOTVcXFwiXFxuICAgICAgICB9LFxcbiAgICAgICAgbWV0aG9kOiBcXFwiUE9TVFxcXCIsXFxuICAgICAgICBib2R5OiBib2R5XFxuICAgIH0pKTtcXG4gICAgLy9sb2cocGxheWxpc3RzX2ZldGNoRGF0YSlcXG4gICAgdmFyIG5leHRfcGFnZV9jb250ZXh0ID0gcGxheWxpc3RzX2ZldGNoRGF0YS5kYXRhLm1vZHVsZV9saXN0X2RhdGFzWzBdLm1vZHVsZV9kYXRhc1swXS5tb2R1bGVfcGFyYW1zLm5leHRfcGFnZV9jb250ZXh0O1xcbiAgICB2YXIgaGFzX25leHQgPSBwbGF5bGlzdHNfZmV0Y2hEYXRhLmRhdGEubW9kdWxlX2xpc3RfZGF0YXNbMF0ubW9kdWxlX2RhdGFzWzBdLm1vZHVsZV9wYXJhbXMuaGFzX25leHQ7XFxuICAgIHZhciBsaXN0X0pzb24gPSBwbGF5bGlzdHNfZmV0Y2hEYXRhLmRhdGEubW9kdWxlX2xpc3RfZGF0YXNbMF0ubW9kdWxlX2RhdGFzWzBdLml0ZW1fZGF0YV9saXN0cy5pdGVtX2RhdGFzO1xcbiAgICB2YXIgcHVzaF9MaXN0cyA9IGZ1bmN0aW9uKGxpc3RfSnNvbikge1xcbiAgICAgICAgbGlzdF9Kc29uLmZvckVhY2goKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICBsZXQgcGljID0gaXRlbS5pdGVtX3BhcmFtcy5pbWFnZV91cmwgPyBpdGVtLml0ZW1fcGFyYW1zLmltYWdlX3VybCA6IGl0ZW0uaXRlbV9wYXJhbXMucGljX25ldztcXG4gICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gcGljLmxhc3RJbmRleE9mKFxcXCJcXFxcL1xcXCIpO1xcbiAgICAgICAgICAgICAgICBwaWMgPSBwaWMuc3Vic3RyaW5nKDAsIGluZGV4KTtcXG4gICAgICAgICAgICAgICAgcGxheV9MaXN0cy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLml0ZW1fcGFyYW1zLnVuaW9uX3RpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgcGljX3VybDogcGljLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogc2Vjb25kc1RvVGltZShpdGVtLml0ZW1fcGFyYW1zLmR1cmF0aW9uKSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogXFxcImh0dHBzOi8vdi5xcS5jb20veC9jb3Zlci9cXFwiICsgKGl0ZW0uaXRlbV9wYXJhbXMuY2lkID8gKGl0ZW0uaXRlbV9wYXJhbXMuY2lkICsgXFxcIi9cXFwiKSA6IFxcXCJcXFwiKSArIGl0ZW0uaXRlbV9wYXJhbXMudmlkICsgXFxcIi5odG1sXFxcIiArIGxhenksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcIm1vdmllXzJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogaXRlbS5pdGVtX3BhcmFtcy5jaWQgKyBcXFwiL1xcXCIgKyBpdGVtLml0ZW1fcGFyYW1zLnZpZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6ICdwbGF5TGlzdCdcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgIGxvZyhlLnRvU3RyaW5nKCkpXFxuICAgICAgICAgICAgICAgIGxvZyhpdGVtKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgICAgICByZXR1cm5cXG4gICAgfVxcbiAgICBwdXNoX0xpc3RzKGxpc3RfSnNvbilcXG4gICAgLy9sb2coaGFzX25leHQpXFxuICAgIC8vbG9nKHR5cGVvZihoYXNfbmV4dCkpXFxuICAgIC8vbG9nKG5leHRfcGFnZV9jb250ZXh0KVxcbiAgICB3aGlsZSAoaGFzX25leHQgPT09IFxcXCJ0cnVlXFxcIikge1xcbiAgICAgICAgYm9keS5wYWdlX3BhcmFtcy5wYWdlX2NvbnRleHQgPSBuZXh0X3BhZ2VfY29udGV4dDtcXG4gICAgICAgIHBsYXlsaXN0c19mZXRjaERhdGEgPSBKU09OLnBhcnNlKGZldGNoUEMoZWpVcmwsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJDb250ZW50LVR5cGVcXFwiOiBcXFwiYXBwbGljYXRpb24vanNvblxcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJyZWZlcmVyXFxcIjogXFxcImh0dHBzOi8vdi5xcS5jb20vXFxcIixcXG4gICAgICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IFxcXCJ2aWRlb19wbGF0Zm9ybT0yO3Z2ZXJzaW9uX25hbWU9OC4yLjk1XFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgbWV0aG9kOiBcXFwiUE9TVFxcXCIsXFxuICAgICAgICAgICAgYm9keTogYm9keVxcbiAgICAgICAgfSkpO1xcblxcbiAgICAgICAgbmV4dF9wYWdlX2NvbnRleHQgPSBwbGF5bGlzdHNfZmV0Y2hEYXRhLmRhdGEubW9kdWxlX2xpc3RfZGF0YXNbMF0ubW9kdWxlX2RhdGFzWzBdLm1vZHVsZV9wYXJhbXMubmV4dF9wYWdlX2NvbnRleHQ7XFxuICAgICAgICBoYXNfbmV4dCA9IHBsYXlsaXN0c19mZXRjaERhdGEuZGF0YS5tb2R1bGVfbGlzdF9kYXRhc1swXS5tb2R1bGVfZGF0YXNbMF0ubW9kdWxlX3BhcmFtcy5oYXNfbmV4dDtcXG4gICAgICAgIGxpc3RfSnNvbiA9IHBsYXlsaXN0c19mZXRjaERhdGEuZGF0YS5tb2R1bGVfbGlzdF9kYXRhc1swXS5tb2R1bGVfZGF0YXNbMF0uaXRlbV9kYXRhX2xpc3RzLml0ZW1fZGF0YXM7XFxuICAgICAgICBwdXNoX0xpc3RzKGxpc3RfSnNvbikgICAgXFxuICAgIH1cXG59IGVsc2Uge1xcbiAgICAvL2h0dHBzOi8vdi5xcS5jb20veC9jb3Zlci9temMwMDIwMGwzZHA3amouaHRtbCAvL+aciWNpZFxcbiAgICAvL2h0dHBzOi8vdi5xcS5jb20veC9wYWdlL2YzMzYxOXdqMjBxLmh0bWwgIC8v5Y+q5pyJdmlkXFxuICAgIHBsYXlfTGlzdHMucHVzaCh7XFxuICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICBwaWNfdXJsOiBNWV9QQVJBTVMucGljVXJsLFxcbiAgICAgICAgZGVzYzogTVlfUEFSQU1TLmRlc2NyLFxcbiAgICAgICAgdXJsOiBcXFwiaHR0cHM6Ly92LnFxLmNvbS94L3BhZ2UvXFxcIiArIHZpZCArIFxcXCIuaHRtbFxcXCIgKyBsYXp5LFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJtb3ZpZV8xX2xlZnRfcGljXFxcIixcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgaWQ6IHZpZCxcXG4gICAgICAgICAgICBjbHM6ICdwbGF5TGlzdCcgLy/lm7rlrprmibnph4/moIfnrb5cXG4gICAgICAgIH1cXG4gICAgfSlcXG59XFxuLy9sb2cocGxheV9MaXN0cylcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2VqemonKSkucnVsZSk7XFxudmFyIGVqb2JqID0ge1xcbiAgICBcXFwibGlzdFxcXCI6IHBsYXlfTGlzdHMsXFxuICAgIFxcXCJ0YWJcXFwiOiB0YWJzXFxufTtcXG7liJ3lp4vljJYoZCwgZWpvYmopXFxuc2V0UmVzdWx0KGQpO1wifV0iLCJpY29uIjoiaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL21vdmllLzEzMS5zdmciLCJwcm94eSI6IiJ9
Add Comment
Please, Sign In to add comment