299 }
300 const list = contentEl.createEl("div", {
301 cls: "sbl-version-list"
302 });
303 for (const v of versions) {
304 this.renderVersion(list, v, meta.url);
303 const groups = groupByDay(versions);
304 for (const group of groups) {
305 list.createEl("div", {
306 text: group.label,
307 cls: "sbl-version-day"
308 });
309 for (const v of group.versions) {
310 this.renderVersion(list, v, meta.url);
311 }
312 }
313 } catch (e) {
314 loading.remove();
315 contentEl.createEl("p", {
340 cls: "sbl-version-message"
341 });
342 }
343 if (fileUrl) {
337 const webUrl = `https://${fileUrl}?v=${v.number}`;
344 const webUrl = `https://${fileUrl}/~versions/v${v.number}`;
345 const link = item.createEl("a", {
346 text: "view on web",
347 cls: "sbl-version-web-link",
348 href: webUrl
355 }
356 async onClose() {
357 }
358};
359function groupByDay(versions) {
360 const groups = /* @__PURE__ */ new Map();
361 const order = [];
362 for (const v of versions) {
363 const label = formatDayLabel(v.createdAt);
364 if (!groups.has(label)) {
365 groups.set(label, []);
366 order.push(label);
367 }
368 groups.get(label).push(v);
369 }
370 return order.map((label) => ({
371 label,
372 versions: groups.get(label)
373 }));
374}
375function formatDayLabel(iso) {
376 const now = /* @__PURE__ */ new Date();
377 const date = new Date(iso);
378 const nowDay = new Date(now.getFullYear(), now.getMonth(), now.getDate());
379 const thenDay = new Date(
380 date.getFullYear(),
381 date.getMonth(),
382 date.getDate()
383 );
384 const days = Math.round(
385 (nowDay.getTime() - thenDay.getTime()) / (1e3 * 60 * 60 * 24)
386 );
387 if (days === 0) return "Today";
388 if (days === 1) return "Yesterday";
389 if (days < 7) return `${days} days ago`;
390 return date.toLocaleDateString("en-US", {
391 month: "short",
392 day: "numeric"
393 });
394}
395function formatRelativeTime(iso) {
396 const now = Date.now();
397 const then = new Date(iso).getTime();
398 const diff = now - then;
677 default:
678 return "";
679 }
680}
638//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL21haW4udHMiLCAic3JjL3NldHRpbmdzLnRzIiwgInNyYy9hcGkudHMiLCAic3JjL3hhdHRyLnRzIiwgInNyYy92ZXJzaW9uLXZpZXcudHMiLCAic3JjL3dlbGNvbWUtbW9kYWwudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7XG5cdE5vdGljZSxcblx0UGx1Z2luLFxuXHRXb3Jrc3BhY2VMZWFmLFxuXHRub3JtYWxpemVQYXRoLFxufSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7XG5cdHR5cGUgU3VibGltYXRlZFNldHRpbmdzLFxuXHRERUZBVUxUX1NFVFRJTkdTLFxuXHRTdWJsaW1hdGVkU2V0dGluZ1RhYixcbn0gZnJvbSBcIi4vc2V0dGluZ3NcIjtcbmltcG9ydCB7IHR5cGUgRmlsZU1ldGFkYXRhLCByZWFkRmlsZU1ldGFkYXRhLCBpc01hY09TIH0gZnJvbSBcIi4veGF0dHJcIjtcbmltcG9ydCB7IFZlcnNpb25WaWV3LCBWRVJTSU9OX1ZJRVdfVFlQRSB9IGZyb20gXCIuL3ZlcnNpb24tdmlld1wiO1xuaW1wb3J0IHsgV2VsY29tZU1vZGFsIH0gZnJvbSBcIi4vd2VsY29tZS1tb2RhbFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdWJsaW1hdGVkUGx1Z2luIGV4dGVuZHMgUGx1Z2luIHtcblx0c2V0dGluZ3M6IFN1YmxpbWF0ZWRTZXR0aW5ncyA9IERFRkFVTFRfU0VUVElOR1M7XG5cdGxhc3RNZXRhZGF0YTogRmlsZU1ldGFkYXRhIHwgbnVsbCA9IG51bGw7XG5cblx0cHJpdmF0ZSBzdGF0dXNCYXJFbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblx0cHJpdmF0ZSBpc1N1YmxpbWF0ZWRWYXVsdCA9IGZhbHNlO1xuXG5cdGFzeW5jIG9ubG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRhd2FpdCB0aGlzLmxvYWRTZXR0aW5ncygpO1xuXG5cdFx0Ly8gZGV0ZWN0IGlmIHRoaXMgdmF1bHQgaXMgYSBzdWJsaW1hdGVkIHdvcmtzcGFjZVxuXHRcdHRoaXMuaXNTdWJsaW1hdGVkVmF1bHQgPSBhd2FpdCB0aGlzLmNoZWNrU3VibGltYXRlZFZhdWx0KCk7XG5cblx0XHQvLyBzdGF0dXMgYmFyXG5cdFx0dGhpcy5zdGF0dXNCYXJFbCA9IHRoaXMuYWRkU3RhdHVzQmFySXRlbSgpO1xuXHRcdHRoaXMuc3RhdHVzQmFyRWwuYWRkQ2xhc3MoXCJzYmwtc3RhdHVzLWJhclwiKTtcblx0XHR0aGlzLnN0YXR1c0JhckVsLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PlxuXHRcdFx0dGhpcy5vcGVuQ3VycmVudEZpbGVPbldlYigpXG5cdFx0KTtcblx0XHR0aGlzLnVwZGF0ZVN0YXR1c0JhcihudWxsKTtcblxuXHRcdC8vIHJlZ2lzdGVyIHZlcnNpb24gaGlzdG9yeSB2aWV3XG5cdFx0dGhpcy5yZWdpc3RlclZpZXcoXG5cdFx0XHRWRVJTSU9OX1ZJRVdfVFlQRSxcblx0XHRcdChsZWFmKSA9PiBuZXcgVmVyc2lvblZpZXcobGVhZiwgdGhpcylcblx0XHQpO1xuXG5cdFx0Ly8gY29tbWFuZHNcblx0XHR0aGlzLmFkZENvbW1hbmQoe1xuXHRcdFx0aWQ6IFwib3Blbi1vbi13ZWJcIixcblx0XHRcdG5hbWU6IFwiT3BlbiBvbiBzdWJsaW1hdGVkLmNvbVwiLFxuXHRcdFx0Y2FsbGJhY2s6ICgpID0+IHRoaXMub3BlbkN1cnJlbnRGaWxlT25XZWIoKSxcblx0XHR9KTtcblxuXHRcdHRoaXMuYWRkQ29tbWFuZCh7XG5cdFx0XHRpZDogXCJzaG93LXZlcnNpb25zXCIsXG5cdFx0XHRuYW1lOiBcIlNob3cgdmVyc2lvbnNcIixcblx0XHRcdGNhbGxiYWNrOiAoKSA9PiB0aGlzLmFjdGl2YXRlVmVyc2lvblZpZXcoKSxcblx0XHR9KTtcblxuXHRcdHRoaXMuYWRkQ29tbWFuZCh7XG5cdFx0XHRpZDogXCJjb3B5LXdlYi1saW5rXCIsXG5cdFx0XHRuYW1lOiBcIkNvcHkgd2ViIGxpbmtcIixcblx0XHRcdGNhbGxiYWNrOiAoKSA9PiB0aGlzLmNvcHlXZWJMaW5rKCksXG5cdFx0fSk7XG5cblx0XHQvLyByaWJib24gaWNvbiBmb3IgdmVyc2lvbiBzaWRlYmFyXG5cdFx0dGhpcy5hZGRSaWJib25JY29uKFwiaGlzdG9yeVwiLCBcInN1YmxpbWF0ZWQgdmVyc2lvbnNcIiwgKCkgPT4ge1xuXHRcdFx0dGhpcy5hY3RpdmF0ZVZlcnNpb25WaWV3KCk7XG5cdFx0fSk7XG5cblx0XHQvLyBVUkkgaGFuZGxlcjogb2JzaWRpYW46Ly9zdWJsaW1hdGVkP2FjdGlvbj1vcGVuJmZpbGU9cGF0aC90by9ub3RlLm1kXG5cdFx0dGhpcy5yZWdpc3Rlck9ic2lkaWFuUHJvdG9jb2xIYW5kbGVyKFxuXHRcdFx0XCJzdWJsaW1hdGVkXCIsXG5cdFx0XHQocGFyYW1zKSA9PiB0aGlzLmhhbmRsZVVyaShwYXJhbXMpXG5cdFx0KTtcblxuXHRcdC8vIHNldHRpbmdzIHRhYlxuXHRcdHRoaXMuYWRkU2V0dGluZ1RhYihuZXcgU3VibGltYXRlZFNldHRpbmdUYWIodGhpcy5hcHAsIHRoaXMpKTtcblxuXHRcdC8vIHVwZGF0ZSBzdGF0dXMgYmFyIHdoZW4gYWN0aXZlIGZpbGUgY2hhbmdlc1xuXHRcdHRoaXMucmVnaXN0ZXJFdmVudChcblx0XHRcdHRoaXMuYXBwLndvcmtzcGFjZS5vbihcImFjdGl2ZS1sZWFmLWNoYW5nZVwiLCAoKSA9PiB7XG5cdFx0XHRcdHRoaXMucmVmcmVzaE1ldGFkYXRhKCk7XG5cdFx0XHR9KVxuXHRcdCk7XG5cblx0XHQvLyBpbml0aWFsIG1ldGFkYXRhIHJlYWRcblx0XHR0aGlzLnJlZnJlc2hNZXRhZGF0YSgpO1xuXG5cdFx0Ly8gd2VsY29tZSBtb2RhbCBvbiBmaXJzdCBpbnN0YWxsXG5cdFx0aWYgKCF0aGlzLnNldHRpbmdzLmhhc1NlZW5XZWxjb21lKSB7XG5cdFx0XHRuZXcgV2VsY29tZU1vZGFsKHRoaXMuYXBwKS5vcGVuKCk7XG5cdFx0XHR0aGlzLnNldHRpbmdzLmhhc1NlZW5XZWxjb21lID0gdHJ1ZTtcblx0XHRcdGF3YWl0IHRoaXMuc2F2ZVNldHRpbmdzKCk7XG5cdFx0fVxuXHR9XG5cblx0b251bmxvYWQoKTogdm9pZCB7XG5cdFx0dGhpcy5hcHAud29ya3NwYWNlLmRldGFjaExlYXZlc09mVHlwZShWRVJTSU9OX1ZJRVdfVFlQRSk7XG5cdH1cblxuXHRhc3luYyBsb2FkU2V0dGluZ3MoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dGhpcy5zZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oXG5cdFx0XHR7fSxcblx0XHRcdERFRkFVTFRfU0VUVElOR1MsXG5cdFx0XHRhd2FpdCB0aGlzLmxvYWREYXRhKClcblx0XHQpO1xuXHR9XG5cblx0YXN5bmMgc2F2ZVNldHRpbmdzKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGF3YWl0IHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XG5cdH1cblxuXHQvLyBjaGVjayBmb3IgLnNibC8gZm9sZGVyIGluIHZhdWx0IHJvb3Rcblx0cHJpdmF0ZSBhc3luYyBjaGVja1N1YmxpbWF0ZWRWYXVsdCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0XHRjb25zdCBhZGFwdGVyID0gdGhpcy5hcHAudmF1bHQuYWRhcHRlcjtcblx0XHRyZXR1cm4gYWRhcHRlci5leGlzdHMobm9ybWFsaXplUGF0aChcIi5zYmxcIikpO1xuXHR9XG5cblx0ZGV0ZWN0V29ya3NwYWNlKCk6IHsgc3BhY2U6IHN0cmluZyB8IG51bGwgfSB8IG51bGwge1xuXHRcdGlmICghdGhpcy5pc1N1YmxpbWF0ZWRWYXVsdCkgcmV0dXJuIG51bGw7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHNwYWNlOiB0aGlzLmxhc3RNZXRhZGF0YT8uc3BhY2UgPz8gbnVsbCxcblx0XHR9O1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyByZWZyZXNoTWV0YWRhdGEoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgZmlsZSA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVGaWxlKCk7XG5cdFx0aWYgKCFmaWxlKSB7XG5cdFx0XHR0aGlzLmxhc3RNZXRhZGF0YSA9IG51bGw7XG5cdFx0XHR0aGlzLnVwZGF0ZVN0YXR1c0JhcihudWxsKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoIWlzTWFjT1MoKSkge1xuXHRcdFx0dGhpcy5sYXN0TWV0YWRhdGEgPSBudWxsO1xuXHRcdFx0dGhpcy51cGRhdGVTdGF0dXNCYXIobnVsbCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gZ2V0IGFic29sdXRlIHBhdGggdmlhIHZhdWx0IGFkYXB0ZXJcblx0XHRjb25zdCBhZGFwdGVyID0gdGhpcy5hcHAudmF1bHQuYWRhcHRlcjtcblx0XHRjb25zdCBiYXNlUGF0aCA9IChhZGFwdGVyIGFzIHsgZ2V0QmFzZVBhdGg/OiAoKSA9PiBzdHJpbmcgfSlcblx0XHRcdC5nZXRCYXNlUGF0aD8uKCk7XG5cdFx0aWYgKCFiYXNlUGF0aCkge1xuXHRcdFx0dGhpcy5sYXN0TWV0YWRhdGEgPSBudWxsO1xuXHRcdFx0dGhpcy51cGRhdGVTdGF0dXNCYXIobnVsbCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgYWJzUGF0aCA9IGAke2Jhc2VQYXRofS8ke2ZpbGUucGF0aH1gO1xuXHRcdHRoaXMubGFzdE1ldGFkYXRhID0gYXdhaXQgcmVhZEZpbGVNZXRhZGF0YShhYnNQYXRoKTtcblx0XHR0aGlzLnVwZGF0ZVN0YXR1c0Jhcih0aGlzLmxhc3RNZXRhZGF0YSk7XG5cdH1cblxuXHRwcml2YXRlIHVwZGF0ZVN0YXR1c0JhcihtZXRhOiBGaWxlTWV0YWRhdGEgfCBudWxsKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLnN0YXR1c0JhckVsKSByZXR1cm47XG5cblx0XHRpZiAoIXRoaXMuaXNTdWJsaW1hdGVkVmF1bHQpIHtcblx0XHRcdHRoaXMuc3RhdHVzQmFyRWwuc2V0VGV4dChcIlwiKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoIW1ldGEpIHtcblx0XHRcdHRoaXMuc3RhdHVzQmFyRWwuc2V0VGV4dChcInN1YmxpbWF0ZWRcIik7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG5cblx0XHRpZiAobWV0YS52ZXJzaW9uKSB7XG5cdFx0XHRwYXJ0cy5wdXNoKGB2JHttZXRhLnZlcnNpb259YCk7XG5cdFx0fVxuXG5cdFx0aWYgKG1ldGEuc3luY1N0YXR1cykge1xuXHRcdFx0Y29uc3QgaWNvbiA9IHN5bmNTdGF0dXNJY29uKG1ldGEuc3luY1N0YXR1cyk7XG5cdFx0XHRwYXJ0cy5wdXNoKGAke2ljb259ICR7bWV0YS5zeW5jU3RhdHVzfWApO1xuXHRcdH1cblxuXHRcdGlmIChtZXRhLm1vZGlmaWVkQnkpIHtcblx0XHRcdGNvbnN0IHByZWZpeCA9XG5cdFx0XHRcdG1ldGEubW9kaWZpZWRCeVR5cGUgPT09IFwiYWlfYWdlbnRcIiA/IFwiYnkgQUk6XCIgOiBcImJ5XCI7XG5cdFx0XHRwYXJ0cy5wdXNoKGAke3ByZWZpeH0gJHttZXRhLm1vZGlmaWVkQnl9YCk7XG5cdFx0fVxuXG5cdFx0aWYgKG1ldGEuYnJhbmNoICYmIG1ldGEuYnJhbmNoICE9PSBcIm1haW5cIikge1xuXHRcdFx0cGFydHMucHVzaChtZXRhLmJyYW5jaCk7XG5cdFx0fVxuXG5cdFx0aWYgKG1ldGEudmlzaWJpbGl0eSkge1xuXHRcdFx0cGFydHMucHVzaCh2aXNpYmlsaXR5SWNvbihtZXRhLnZpc2liaWxpdHkpKTtcblx0XHR9XG5cblx0XHRpZiAocGFydHMubGVuZ3RoID4gMCkge1xuXHRcdFx0dGhpcy5zdGF0dXNCYXJFbC5zZXRUZXh0KGBzdWJsaW1hdGVkOiAke3BhcnRzLmpvaW4oXCIgXHUwMEI3IFwiKX1gKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zdGF0dXNCYXJFbC5zZXRUZXh0KFwic3VibGltYXRlZFwiKTtcblx0XHR9XG5cblx0XHQvLyBzaG93IHBvaW50ZXIgY3Vyc29yIHdoZW4gVVJMIGF2YWlsYWJsZVxuXHRcdGlmIChtZXRhLnVybCkge1xuXHRcdFx0dGhpcy5zdGF0dXNCYXJFbC5hZGRDbGFzcyhcInNibC1jbGlja2FibGVcIik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc3RhdHVzQmFyRWwucmVtb3ZlQ2xhc3MoXCJzYmwtY2xpY2thYmxlXCIpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgb3BlbkN1cnJlbnRGaWxlT25XZWIoKTogdm9pZCB7XG5cdFx0Y29uc3QgdXJsID0gdGhpcy5sYXN0TWV0YWRhdGE/LnVybDtcblx0XHRpZiAoIXVybCkge1xuXHRcdFx0bmV3IE5vdGljZShcIk5vIHN1YmxpbWF0ZWQgVVJMIGZvciB0aGlzIGZpbGVcIik7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHdpbmRvdy5vcGVuKGBodHRwczovLyR7dXJsfWApO1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBjb3B5V2ViTGluaygpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCB1cmwgPSB0aGlzLmxhc3RNZXRhZGF0YT8udXJsO1xuXHRcdGlmICghdXJsKSB7XG5cdFx0XHRuZXcgTm90aWNlKFwiTm8gc3VibGltYXRlZCBVUkwgZm9yIHRoaXMgZmlsZVwiKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0YXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoYGh0dHBzOi8vJHt1cmx9YCk7XG5cdFx0bmV3IE5vdGljZShcIkxpbmsgY29waWVkIHRvIGNsaXBib2FyZFwiKTtcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgYWN0aXZhdGVWZXJzaW9uVmlldygpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBleGlzdGluZyA9XG5cdFx0XHR0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0TGVhdmVzT2ZUeXBlKFZFUlNJT05fVklFV19UWVBFKTtcblx0XHRpZiAoZXhpc3RpbmcubGVuZ3RoID4gMCkge1xuXHRcdFx0dGhpcy5hcHAud29ya3NwYWNlLnJldmVhbExlYWYoZXhpc3RpbmdbMF0pO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IGxlYWYgPSB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0UmlnaHRMZWFmKGZhbHNlKTtcblx0XHRpZiAoIWxlYWYpIHJldHVybjtcblx0XHRhd2FpdCBsZWFmLnNldFZpZXdTdGF0ZSh7XG5cdFx0XHR0eXBlOiBWRVJTSU9OX1ZJRVdfVFlQRSxcblx0XHRcdGFjdGl2ZTogdHJ1ZSxcblx0XHR9KTtcblx0XHR0aGlzLmFwcC53b3Jrc3BhY2UucmV2ZWFsTGVhZihsZWFmKTtcblx0fVxuXG5cdHByaXZhdGUgaGFuZGxlVXJpKHBhcmFtczogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHZvaWQge1xuXHRcdGNvbnN0IHsgYWN0aW9uLCBmaWxlIH0gPSBwYXJhbXM7XG5cblx0XHRpZiAoYWN0aW9uID09PSBcIm9wZW5cIiAmJiBmaWxlKSB7XG5cdFx0XHRjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplUGF0aChmaWxlKTtcblx0XHRcdGNvbnN0IGV4aXN0aW5nID0gdGhpcy5hcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKG5vcm1hbGl6ZWQpO1xuXHRcdFx0aWYgKGV4aXN0aW5nKSB7XG5cdFx0XHRcdHRoaXMuYXBwLndvcmtzcGFjZS5vcGVuTGlua1RleHQobm9ybWFsaXplZCwgXCJcIiwgZmFsc2UpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bmV3IE5vdGljZShgRmlsZSBub3QgZm91bmQ6ICR7ZmlsZX1gKTtcblx0XHRcdH1cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoYWN0aW9uID09PSBcImF1dGhcIiAmJiBwYXJhbXMudG9rZW4pIHtcblx0XHRcdC8vIGZ1dHVyZTogT0F1dGggZmxvdyBzdG9yZXMgdG9rZW4gZnJvbSByZWRpcmVjdFxuXHRcdFx0dGhpcy5zZXR0aW5ncy5hcGlUb2tlbiA9IHBhcmFtcy50b2tlbjtcblx0XHRcdHRoaXMuc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRuZXcgTm90aWNlKFwic3VibGltYXRlZDogc2lnbmVkIGluIHN1Y2Nlc3NmdWxseVwiKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRuZXcgTm90aWNlKGBVbmtub3duIHN1YmxpbWF0ZWQgYWN0aW9uOiAke2FjdGlvbn1gKTtcblx0fVxufVxuXG5mdW5jdGlvbiBzeW5jU3RhdHVzSWNvbihzdGF0dXM6IHN0cmluZyk6IHN0cmluZyB7XG5cdHN3aXRjaCAoc3RhdHVzKSB7XG5cdFx0Y2FzZSBcInN5bmNlZFwiOlxuXHRcdFx0cmV0dXJuIFwiXHUyNzEzXCI7XG5cdFx0Y2FzZSBcInVwbG9hZGluZ1wiOlxuXHRcdFx0cmV0dXJuIFwiXHUyMTkxXCI7XG5cdFx0Y2FzZSBcImRvd25sb2FkaW5nXCI6XG5cdFx0XHRyZXR1cm4gXCJcdTIxOTNcIjtcblx0XHRjYXNlIFwiZXJyb3JcIjpcblx0XHRcdHJldHVybiBcIiFcIjtcblx0XHRjYXNlIFwiY29uZmxpY3RcIjpcblx0XHRcdHJldHVybiBcIlx1MjZBMFwiO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gXCJcIjtcblx0fVxufVxuXG5mdW5jdGlvbiB2aXNpYmlsaXR5SWNvbih2aXNpYmlsaXR5OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRzd2l0Y2ggKHZpc2liaWxpdHkpIHtcblx0XHRjYXNlIFwicHVibGljXCI6XG5cdFx0XHRyZXR1cm4gXCJcdUQ4M0NcdURGMTBcIjtcblx0XHRjYXNlIFwic2hhcmVkXCI6XG5cdFx0XHRyZXR1cm4gXCJcdUQ4M0RcdURDNjVcIjtcblx0XHRjYXNlIFwicHJpdmF0ZVwiOlxuXHRcdFx0cmV0dXJuIFwiXHVEODNEXHVERDEyXCI7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHJldHVybiBcIlwiO1xuXHR9XG59XG4iLCAiaW1wb3J0IHsgQXBwLCBOb3RpY2UsIFBsdWdpblNldHRpbmdUYWIsIFNldHRpbmcgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB0eXBlIFN1YmxpbWF0ZWRQbHVnaW4gZnJvbSBcIi4vbWFpblwiO1xuaW1wb3J0IHsgU3VibGltYXRlZEFwaSB9IGZyb20gXCIuL2FwaVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN1YmxpbWF0ZWRTZXR0aW5ncyB7XG5cdGFwaVRva2VuOiBzdHJpbmc7XG5cdGhhc1NlZW5XZWxjb21lOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRVRUSU5HUzogU3VibGltYXRlZFNldHRpbmdzID0ge1xuXHRhcGlUb2tlbjogXCJcIixcblx0aGFzU2VlbldlbGNvbWU6IGZhbHNlLFxufTtcblxuZXhwb3J0IGNsYXNzIFN1YmxpbWF0ZWRTZXR0aW5nVGFiIGV4dGVuZHMgUGx1Z2luU2V0dGluZ1RhYiB7XG5cdHBsdWdpbjogU3VibGltYXRlZFBsdWdpbjtcblxuXHRjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcGx1Z2luOiBTdWJsaW1hdGVkUGx1Z2luKSB7XG5cdFx0c3VwZXIoYXBwLCBwbHVnaW4pO1xuXHRcdHRoaXMucGx1Z2luID0gcGx1Z2luO1xuXHR9XG5cblx0ZGlzcGxheSgpOiB2b2lkIHtcblx0XHRjb25zdCB7IGNvbnRhaW5lckVsIH0gPSB0aGlzO1xuXHRcdGNvbnRhaW5lckVsLmVtcHR5KCk7XG5cblx0XHQvLyBicmFuZGluZ1xuXHRcdGNvbnN0IGhlYWRlciA9IGNvbnRhaW5lckVsLmNyZWF0ZURpdih7IGNsczogXCJzYmwtc2V0dGluZ3MtaGVhZGVyXCIgfSk7XG5cdFx0aGVhZGVyLmNyZWF0ZUVsKFwiaDJcIiwgeyB0ZXh0OiBcInN1YmxpbWF0ZWRcIiB9KTtcblx0XHRoZWFkZXIuY3JlYXRlRWwoXCJwXCIsIHtcblx0XHRcdHRleHQ6IFwiU3luYyBzdGF0dXMsIHZlcnNpb24gaGlzdG9yeSwgYW5kIGRlZXAgbGlua3MuXCIsXG5cdFx0XHRjbHM6IFwic2V0dGluZy1pdGVtLWRlc2NyaXB0aW9uXCIsXG5cdFx0fSk7XG5cblx0XHQvLyB3b3Jrc3BhY2UgZGV0ZWN0aW9uXG5cdFx0Y29uc3Qgd29ya3NwYWNlSW5mbyA9IHRoaXMucGx1Z2luLmRldGVjdFdvcmtzcGFjZSgpO1xuXHRcdGlmICh3b3Jrc3BhY2VJbmZvKSB7XG5cdFx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdFx0LnNldE5hbWUoXCJEZXRlY3RlZCB3b3Jrc3BhY2VcIilcblx0XHRcdFx0LnNldERlc2MoXG5cdFx0XHRcdFx0YFNwYWNlOiAke3dvcmtzcGFjZUluZm8uc3BhY2UgfHwgXCJ1bmtub3duXCJ9IFx1MjAxNCAuc2JsLyBmb2xkZXIgZm91bmQgaW4gdmF1bHQgcm9vdGBcblx0XHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHRcdC5zZXROYW1lKFwiTm8gd29ya3NwYWNlIGRldGVjdGVkXCIpXG5cdFx0XHRcdC5zZXREZXNjKFxuXHRcdFx0XHRcdFwiTm8gLnNibC8gZm9sZGVyIGZvdW5kLiBPcGVuIGEgdmF1bHQgZnJvbSB5b3VyIHN1YmxpbWF0ZWQgZm9sZGVyIGluIEZpbmRlci5cIlxuXHRcdFx0XHQpO1xuXHRcdH1cblxuXHRcdC8vIEFQSSB0b2tlblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJBUEkgdG9rZW5cIilcblx0XHRcdC5zZXREZXNjKFxuXHRcdFx0XHRcIlJlcXVpcmVkIGZvciB2ZXJzaW9uIGhpc3RvcnkuIEdlbmVyYXRlIGF0IHN1YmxpbWF0ZWQuY29tL3NldHRpbmdzL3Rva2Vuc1wiXG5cdFx0XHQpXG5cdFx0XHQuYWRkVGV4dCgodGV4dCkgPT5cblx0XHRcdFx0dGV4dFxuXHRcdFx0XHRcdC5zZXRQbGFjZWhvbGRlcihcInNrXy4uLlwiKVxuXHRcdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5hcGlUb2tlbilcblx0XHRcdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5hcGlUb2tlbiA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0fSlcblx0XHRcdCk7XG5cblx0XHQvLyB0ZXN0IGNvbm5lY3Rpb25cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiVGVzdCBjb25uZWN0aW9uXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlZlcmlmeSB5b3VyIEFQSSB0b2tlbiB3b3Jrc1wiKVxuXHRcdFx0LmFkZEJ1dHRvbigoYnRuKSA9PlxuXHRcdFx0XHRidG4uc2V0QnV0dG9uVGV4dChcIlRlc3RcIikub25DbGljayhhc3luYyAoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKCF0aGlzLnBsdWdpbi5zZXR0aW5ncy5hcGlUb2tlbikge1xuXHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIk5vIEFQSSB0b2tlbiBjb25maWd1cmVkXCIpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRidG4uc2V0QnV0dG9uVGV4dChcIlRlc3RpbmcuLi5cIik7XG5cdFx0XHRcdFx0YnRuLnNldERpc2FibGVkKHRydWUpO1xuXHRcdFx0XHRcdGNvbnN0IGFwaSA9IG5ldyBTdWJsaW1hdGVkQXBpKFxuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuYXBpVG9rZW5cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwaS50ZXN0Q29ubmVjdGlvbigpO1xuXHRcdFx0XHRcdGlmIChyZXN1bHQub2spIHtcblx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoXG5cdFx0XHRcdFx0XHRcdGBDb25uZWN0ZWQgYXMgJHtyZXN1bHQudXNlcm5hbWV9YFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0bmV3IE5vdGljZShcblx0XHRcdFx0XHRcdFx0YENvbm5lY3Rpb24gZmFpbGVkOiAke3Jlc3VsdC5lcnJvcn1gXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRidG4uc2V0QnV0dG9uVGV4dChcIlRlc3RcIik7XG5cdFx0XHRcdFx0YnRuLnNldERpc2FibGVkKGZhbHNlKTtcblx0XHRcdFx0fSlcblx0XHRcdCk7XG5cblx0XHQvLyBsaW5rc1xuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwiZGl2XCIsIHsgY2xzOiBcInNibC1zZXR0aW5ncy1saW5rc1wiIH0sIChlbCkgPT4ge1xuXHRcdFx0ZWwuY3JlYXRlRWwoXCJhXCIsIHtcblx0XHRcdFx0dGV4dDogXCJzdWJsaW1hdGVkLmNvbVwiLFxuXHRcdFx0XHRocmVmOiBcImh0dHBzOi8vc3VibGltYXRlZC5jb21cIixcblx0XHRcdH0pO1xuXHRcdFx0ZWwuY3JlYXRlRWwoXCJzcGFuXCIsIHsgdGV4dDogXCIgXHUwMEI3IFwiIH0pO1xuXHRcdFx0ZWwuY3JlYXRlRWwoXCJhXCIsIHtcblx0XHRcdFx0dGV4dDogXCJEb2N1bWVudGF0aW9uXCIsXG5cdFx0XHRcdGhyZWY6IFwiaHR0cHM6Ly9zdWJsaW1hdGVkLmNvbS9kb2NzL29ic2lkaWFuXCIsXG5cdFx0XHR9KTtcblx0XHRcdGVsLmNyZWF0ZUVsKFwic3BhblwiLCB7IHRleHQ6IFwiIFx1MDBCNyBcIiB9KTtcblx0XHRcdGVsLmNyZWF0ZUVsKFwiYVwiLCB7XG5cdFx0XHRcdHRleHQ6IFwiU291cmNlIGNvZGVcIixcblx0XHRcdFx0aHJlZjogXCJodHRwczovL3N1YmxpbWF0ZWQuY29tL3N1YmxpbWF0ZWQvY29kZS9vYnNpZGlhblwiLFxuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn1cbiIsICJpbXBvcnQgeyByZXF1ZXN0VXJsIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmNvbnN0IEFQSV9CQVNFID0gXCJodHRwczovL2FwaS5zdWJsaW1hdGVkLmNvbVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZlcnNpb24ge1xuXHRpZDogc3RyaW5nO1xuXHRudW1iZXI6IG51bWJlcjtcblx0YXV0aG9yTmFtZTogc3RyaW5nO1xuXHRhdXRob3JUeXBlOiBzdHJpbmc7XG5cdG1lc3NhZ2U6IHN0cmluZyB8IG51bGw7XG5cdGNyZWF0ZWRBdDogc3RyaW5nO1xuXHRjb21taXRIYXNoOiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZlcnNpb25zUmVzcG9uc2Uge1xuXHR2ZXJzaW9uczogVmVyc2lvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RDb25uZWN0aW9uUmVzdWx0IHtcblx0b2s6IGJvb2xlYW47XG5cdHVzZXJuYW1lPzogc3RyaW5nO1xuXHRlcnJvcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFN1YmxpbWF0ZWRBcGkge1xuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIHRva2VuOiBzdHJpbmcpIHt9XG5cblx0cHJpdmF0ZSBhc3luYyByZXF1ZXN0PFQ+KHBhdGg6IHN0cmluZyk6IFByb21pc2U8VD4ge1xuXHRcdGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVxdWVzdFVybCh7XG5cdFx0XHR1cmw6IGAke0FQSV9CQVNFfSR7cGF0aH1gLFxuXHRcdFx0aGVhZGVyczoge1xuXHRcdFx0XHRBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy50b2tlbn1gLFxuXHRcdFx0XHRBY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiLFxuXHRcdFx0fSxcblx0XHR9KTtcblxuXHRcdGlmIChyZXNwb25zZS5zdGF0dXMgPj0gNDAwKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0XHRcdGBBUEkgZXJyb3IgJHtyZXNwb25zZS5zdGF0dXN9OiAke3Jlc3BvbnNlLnRleHR9YFxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzcG9uc2UuanNvbiBhcyBUO1xuXHR9XG5cblx0YXN5bmMgZ2V0VmVyc2lvbnMoXG5cdFx0c3BhY2VTbHVnOiBzdHJpbmcsXG5cdFx0aXRlbUlkOiBzdHJpbmdcblx0KTogUHJvbWlzZTxWZXJzaW9uW10+IHtcblx0XHRjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5yZXF1ZXN0PFZlcnNpb25zUmVzcG9uc2U+KFxuXHRcdFx0YC92MS9zcGFjZXMvJHtlbmNvZGVVUklDb21wb25lbnQoc3BhY2VTbHVnKX0vaXRlbXMvJHtlbmNvZGVVUklDb21wb25lbnQoaXRlbUlkKX0vdmVyc2lvbnNgXG5cdFx0KTtcblx0XHRyZXR1cm4gZGF0YS52ZXJzaW9ucztcblx0fVxuXG5cdGFzeW5jIHRlc3RDb25uZWN0aW9uKCk6IFByb21pc2U8VGVzdENvbm5lY3Rpb25SZXN1bHQ+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgZGF0YSA9IGF3YWl0IHRoaXMucmVxdWVzdDx7IHVzZXJuYW1lOiBzdHJpbmcgfT4oXG5cdFx0XHRcdFwiL3YxL21lXCJcblx0XHRcdCk7XG5cdFx0XHRyZXR1cm4geyBvazogdHJ1ZSwgdXNlcm5hbWU6IGRhdGEudXNlcm5hbWUgfTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRvazogZmFsc2UsXG5cdFx0XHRcdGVycm9yOiBlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBcIlVua25vd24gZXJyb3JcIixcblx0XHRcdH07XG5cdFx0fVxuXHR9XG59XG4iLCAiaW1wb3J0IHsgZXhlYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5jb25zdCBYQVRUUl9QUkVGSVggPSBcImNvbS5zdWJsaW1hdGVkLlwiO1xuY29uc3QgWEFUVFJfU1VGRklYID0gXCIjUFNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBGaWxlTWV0YWRhdGEge1xuXHR2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuXHRjb21taXQ6IHN0cmluZyB8IG51bGw7XG5cdHVybDogc3RyaW5nIHwgbnVsbDtcblx0Y29udGVudEhhc2g6IHN0cmluZyB8IG51bGw7XG5cdGlkOiBzdHJpbmcgfCBudWxsO1xuXHRjcmVhdGVkQnk6IHN0cmluZyB8IG51bGw7XG5cdG1vZGlmaWVkQnk6IHN0cmluZyB8IG51bGw7XG5cdG1vZGlmaWVkQnlUeXBlOiBzdHJpbmcgfCBudWxsO1xuXHRzeW5jU3RhdHVzOiBzdHJpbmcgfCBudWxsO1xuXHRzcGFjZTogc3RyaW5nIHwgbnVsbDtcblx0YnJhbmNoOiBzdHJpbmcgfCBudWxsO1xuXHRtb2RpZmllZEF0OiBzdHJpbmcgfCBudWxsO1xuXHR2aXNpYmlsaXR5OiBzdHJpbmcgfCBudWxsO1xufVxuXG5jb25zdCBBVFRSUzogKGtleW9mIEZpbGVNZXRhZGF0YSlbXSA9IFtcblx0XCJ2ZXJzaW9uXCIsXG5cdFwiY29tbWl0XCIsXG5cdFwidXJsXCIsXG5cdFwiY29udGVudEhhc2hcIixcblx0XCJpZFwiLFxuXHRcImNyZWF0ZWRCeVwiLFxuXHRcIm1vZGlmaWVkQnlcIixcblx0XCJtb2RpZmllZEJ5VHlwZVwiLFxuXHRcInN5bmNTdGF0dXNcIixcblx0XCJzcGFjZVwiLFxuXHRcImJyYW5jaFwiLFxuXHRcIm1vZGlmaWVkQXRcIixcblx0XCJ2aXNpYmlsaXR5XCIsXG5dO1xuXG5mdW5jdGlvbiBhdHRyVG9YYXR0ck5hbWUoYXR0cjogc3RyaW5nKTogc3RyaW5nIHtcblx0Ly8gY2FtZWxDYXNlIFx1MjE5MiBrZWJhYi1jYXNlOiBjb250ZW50SGFzaCBcdTIxOTIgY29udGVudC1oYXNoXG5cdGNvbnN0IGtlYmFiID0gYXR0ci5yZXBsYWNlKC9bQS1aXS9nLCAoYykgPT4gXCItXCIgKyBjLnRvTG93ZXJDYXNlKCkpO1xuXHRyZXR1cm4gYCR7WEFUVFJfUFJFRklYfSR7a2ViYWJ9JHtYQVRUUl9TVUZGSVh9YDtcbn1cblxuZnVuY3Rpb24gcmVhZFhhdHRyKHBhdGg6IHN0cmluZywgeGF0dHJOYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcblx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG5cdFx0ZXhlYyhcblx0XHRcdGB4YXR0ciAtcCAke0pTT04uc3RyaW5naWZ5KHhhdHRyTmFtZSl9ICR7SlNPTi5zdHJpbmdpZnkocGF0aCl9YCxcblx0XHRcdHsgdGltZW91dDogMjAwMCB9LFxuXHRcdFx0KGVyciwgc3Rkb3V0KSA9PiB7XG5cdFx0XHRcdGlmIChlcnIpIHtcblx0XHRcdFx0XHRyZXNvbHZlKG51bGwpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXNvbHZlKHN0ZG91dC50cmltKCkgfHwgbnVsbCk7XG5cdFx0XHR9XG5cdFx0KTtcblx0fSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkRmlsZU1ldGFkYXRhKFxuXHRwYXRoOiBzdHJpbmdcbik6IFByb21pc2U8RmlsZU1ldGFkYXRhIHwgbnVsbD4ge1xuXHRpZiAoIVBsYXRmb3JtLmlzTWFjT1MpIHJldHVybiBudWxsO1xuXG5cdGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChcblx0XHRBVFRSUy5tYXAoKGF0dHIpID0+IHJlYWRYYXR0cihwYXRoLCBhdHRyVG9YYXR0ck5hbWUoYXR0cikpKVxuXHQpO1xuXG5cdC8vIElmIG5vIHhhdHRycyBmb3VuZCBhdCBhbGwsIHRoaXMgaXNuJ3QgYSBzdWJsaW1hdGVkIGZpbGVcblx0aWYgKHJlc3VsdHMuZXZlcnkoKHIpID0+IHIgPT09IG51bGwpKSByZXR1cm4gbnVsbDtcblxuXHRjb25zdCBtZXRhOiBGaWxlTWV0YWRhdGEgPSB7XG5cdFx0dmVyc2lvbjogbnVsbCwgY29tbWl0OiBudWxsLCB1cmw6IG51bGwsIGNvbnRlbnRIYXNoOiBudWxsLFxuXHRcdGlkOiBudWxsLCBjcmVhdGVkQnk6IG51bGwsIG1vZGlmaWVkQnk6IG51bGwsIG1vZGlmaWVkQnlUeXBlOiBudWxsLFxuXHRcdHN5bmNTdGF0dXM6IG51bGwsIHNwYWNlOiBudWxsLCBicmFuY2g6IG51bGwsIG1vZGlmaWVkQXQ6IG51bGwsIHZpc2liaWxpdHk6IG51bGwsXG5cdH07XG5cdEFUVFJTLmZvckVhY2goKGF0dHIsIGkpID0+IHtcblx0XHRtZXRhW2F0dHJdID0gcmVzdWx0c1tpXTtcblx0fSk7XG5cdHJldHVybiBtZXRhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNNYWNPUygpOiBib29sZWFuIHtcblx0cmV0dXJuIFBsYXRmb3JtLmlzTWFjT1M7XG59XG4iLCAiaW1wb3J0IHsgSXRlbVZpZXcsIE5vdGljZSwgV29ya3NwYWNlTGVhZiB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHR5cGUgU3VibGltYXRlZFBsdWdpbiBmcm9tIFwiLi9tYWluXCI7XG5pbXBvcnQgeyBTdWJsaW1hdGVkQXBpLCB0eXBlIFZlcnNpb24gfSBmcm9tIFwiLi9hcGlcIjtcblxuZXhwb3J0IGNvbnN0IFZFUlNJT05fVklFV19UWVBFID0gXCJzdWJsaW1hdGVkLXZlcnNpb25zXCI7XG5cbmV4cG9ydCBjbGFzcyBWZXJzaW9uVmlldyBleHRlbmRzIEl0ZW1WaWV3IHtcblx0cGx1Z2luOiBTdWJsaW1hdGVkUGx1Z2luO1xuXG5cdGNvbnN0cnVjdG9yKGxlYWY6IFdvcmtzcGFjZUxlYWYsIHBsdWdpbjogU3VibGltYXRlZFBsdWdpbikge1xuXHRcdHN1cGVyKGxlYWYpO1xuXHRcdHRoaXMucGx1Z2luID0gcGx1Z2luO1xuXHR9XG5cblx0Z2V0Vmlld1R5cGUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gVkVSU0lPTl9WSUVXX1RZUEU7XG5cdH1cblxuXHRnZXREaXNwbGF5VGV4dCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiBcInN1YmxpbWF0ZWQgdmVyc2lvbnNcIjtcblx0fVxuXG5cdGdldEljb24oKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gXCJoaXN0b3J5XCI7XG5cdH1cblxuXHRhc3luYyBvbk9wZW4oKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0YXdhaXQgdGhpcy5yZWZyZXNoKCk7XG5cdFx0Ly8gcmVmcmVzaCB3aGVuIGFjdGl2ZSBmaWxlIGNoYW5nZXNcblx0XHR0aGlzLnJlZ2lzdGVyRXZlbnQoXG5cdFx0XHR0aGlzLmFwcC53b3Jrc3BhY2Uub24oXCJhY3RpdmUtbGVhZi1jaGFuZ2VcIiwgKCkgPT4ge1xuXHRcdFx0XHR0aGlzLnJlZnJlc2goKTtcblx0XHRcdH0pXG5cdFx0KTtcblx0fVxuXG5cdGFzeW5jIHJlZnJlc2goKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XG5cdFx0Y29udGVudEVsLmVtcHR5KCk7XG5cdFx0Y29udGVudEVsLmFkZENsYXNzKFwic2JsLXZlcnNpb24tdmlld1wiKTtcblxuXHRcdGNvbnN0IGFjdGl2ZUZpbGUgPSB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlRmlsZSgpO1xuXHRcdGlmICghYWN0aXZlRmlsZSkge1xuXHRcdFx0Y29udGVudEVsLmNyZWF0ZUVsKFwicFwiLCB7XG5cdFx0XHRcdHRleHQ6IFwiTm8gZmlsZSBvcGVuLlwiLFxuXHRcdFx0XHRjbHM6IFwic2JsLXZlcnNpb24tZW1wdHlcIixcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICghdGhpcy5wbHVnaW4uc2V0dGluZ3MuYXBpVG9rZW4pIHtcblx0XHRcdGNvbnRlbnRFbC5jcmVhdGVFbChcInBcIiwge1xuXHRcdFx0XHR0ZXh0OiBcIkFQSSB0b2tlbiByZXF1aXJlZCBmb3IgdmVyc2lvbiBoaXN0b3J5LlwiLFxuXHRcdFx0XHRjbHM6IFwic2JsLXZlcnNpb24tZW1wdHlcIixcblx0XHRcdH0pO1xuXHRcdFx0Y29udGVudEVsLmNyZWF0ZUVsKFwicFwiLCB7XG5cdFx0XHRcdHRleHQ6IFwiQ29uZmlndXJlIGluIFNldHRpbmdzIFx1MjE5MiBzdWJsaW1hdGVkXCIsXG5cdFx0XHRcdGNsczogXCJzYmwtdmVyc2lvbi1oaW50XCIsXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyByZWFkIHhhdHRycyB0byBnZXQgc3BhY2UgKyBpdGVtIElEXG5cdFx0Y29uc3QgbWV0YSA9IHRoaXMucGx1Z2luLmxhc3RNZXRhZGF0YTtcblx0XHRpZiAoIW1ldGE/LnNwYWNlIHx8ICFtZXRhPy5pZCkge1xuXHRcdFx0Y29udGVudEVsLmNyZWF0ZUVsKFwicFwiLCB7XG5cdFx0XHRcdHRleHQ6IFwiTm90IGEgc3VibGltYXRlZCBmaWxlLlwiLFxuXHRcdFx0XHRjbHM6IFwic2JsLXZlcnNpb24tZW1wdHlcIixcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnRlbnRFbC5jcmVhdGVFbChcImg0XCIsIHtcblx0XHRcdHRleHQ6IGFjdGl2ZUZpbGUubmFtZSxcblx0XHRcdGNsczogXCJzYmwtdmVyc2lvbi1maWxlbmFtZVwiLFxuXHRcdH0pO1xuXG5cdFx0Y29uc3QgbG9hZGluZyA9IGNvbnRlbnRFbC5jcmVhdGVFbChcInBcIiwge1xuXHRcdFx0dGV4dDogXCJMb2FkaW5nIHZlcnNpb25zLi4uXCIsXG5cdFx0XHRjbHM6IFwic2JsLXZlcnNpb24tbG9hZGluZ1wiLFxuXHRcdH0pO1xuXG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGFwaSA9IG5ldyBTdWJsaW1hdGVkQXBpKHRoaXMucGx1Z2luLnNldHRpbmdzLmFwaVRva2VuKTtcblx0XHRcdGNvbnN0IHZlcnNpb25zID0gYXdhaXQgYXBpLmdldFZlcnNpb25zKG1ldGEuc3BhY2UsIG1ldGEuaWQpO1xuXHRcdFx0bG9hZGluZy5yZW1vdmUoKTtcblxuXHRcdFx0aWYgKHZlcnNpb25zLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRjb250ZW50RWwuY3JlYXRlRWwoXCJwXCIsIHtcblx0XHRcdFx0XHR0ZXh0OiBcIk5vIHZlcnNpb25zIGZvdW5kLlwiLFxuXHRcdFx0XHRcdGNsczogXCJzYmwtdmVyc2lvbi1lbXB0eVwiLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBsaXN0ID0gY29udGVudEVsLmNyZWF0ZUVsKFwiZGl2XCIsIHtcblx0XHRcdFx0Y2xzOiBcInNibC12ZXJzaW9uLWxpc3RcIixcblx0XHRcdH0pO1xuXHRcdFx0Zm9yIChjb25zdCB2IG9mIHZlcnNpb25zKSB7XG5cdFx0XHRcdHRoaXMucmVuZGVyVmVyc2lvbihsaXN0LCB2LCBtZXRhLnVybCk7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0bG9hZGluZy5yZW1vdmUoKTtcblx0XHRcdGNvbnRlbnRFbC5jcmVhdGVFbChcInBcIiwge1xuXHRcdFx0XHR0ZXh0OiBgRXJyb3I6ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogXCJVbmtub3duXCJ9YCxcblx0XHRcdFx0Y2xzOiBcInNibC12ZXJzaW9uLWVycm9yXCIsXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHJlbmRlclZlcnNpb24oXG5cdFx0Y29udGFpbmVyOiBIVE1MRWxlbWVudCxcblx0XHR2OiBWZXJzaW9uLFxuXHRcdGZpbGVVcmw6IHN0cmluZyB8IG51bGxcblx0KTogdm9pZCB7XG5cdFx0Y29uc3QgaXRlbSA9IGNvbnRhaW5lci5jcmVhdGVEaXYoeyBjbHM6IFwic2JsLXZlcnNpb24taXRlbVwiIH0pO1xuXG5cdFx0Y29uc3QgaGVhZGVyID0gaXRlbS5jcmVhdGVEaXYoeyBjbHM6IFwic2JsLXZlcnNpb24taGVhZGVyXCIgfSk7XG5cdFx0aGVhZGVyLmNyZWF0ZUVsKFwic3BhblwiLCB7XG5cdFx0XHR0ZXh0OiBgdiR7di5udW1iZXJ9YCxcblx0XHRcdGNsczogXCJzYmwtdmVyc2lvbi1udW1iZXJcIixcblx0XHR9KTtcblx0XHRoZWFkZXIuY3JlYXRlRWwoXCJzcGFuXCIsIHtcblx0XHRcdHRleHQ6IHYuYXV0aG9yTmFtZSxcblx0XHRcdGNsczogXCJzYmwtdmVyc2lvbi1hdXRob3JcIixcblx0XHR9KTtcblxuXHRcdGNvbnN0IHRpbWUgPSBpdGVtLmNyZWF0ZURpdih7IGNsczogXCJzYmwtdmVyc2lvbi10aW1lXCIgfSk7XG5cdFx0dGltZS5jcmVhdGVFbChcInNwYW5cIiwge1xuXHRcdFx0dGV4dDogZm9ybWF0UmVsYXRpdmVUaW1lKHYuY3JlYXRlZEF0KSxcblx0XHRcdGF0dHI6IHsgdGl0bGU6IG5ldyBEYXRlKHYuY3JlYXRlZEF0KS50b0xvY2FsZVN0cmluZygpIH0sXG5cdFx0fSk7XG5cblx0XHRpZiAodi5tZXNzYWdlKSB7XG5cdFx0XHRpdGVtLmNyZWF0ZURpdih7XG5cdFx0XHRcdHRleHQ6IHYubWVzc2FnZSxcblx0XHRcdFx0Y2xzOiBcInNibC12ZXJzaW9uLW1lc3NhZ2VcIixcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdGlmIChmaWxlVXJsKSB7XG5cdFx0XHRjb25zdCB3ZWJVcmwgPSBgaHR0cHM6Ly8ke2ZpbGVVcmx9P3Y9JHt2Lm51bWJlcn1gO1xuXHRcdFx0Y29uc3QgbGluayA9IGl0ZW0uY3JlYXRlRWwoXCJhXCIsIHtcblx0XHRcdFx0dGV4dDogXCJ2aWV3IG9uIHdlYlwiLFxuXHRcdFx0XHRjbHM6IFwic2JsLXZlcnNpb24td2ViLWxpbmtcIixcblx0XHRcdFx0aHJlZjogd2ViVXJsLFxuXHRcdFx0fSk7XG5cdFx0XHRsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoZSkgPT4ge1xuXHRcdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdHdpbmRvdy5vcGVuKHdlYlVybCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRhc3luYyBvbkNsb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdC8vIGNsZWFudXAgaGFuZGxlZCBieSBvYnNpZGlhblxuXHR9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFJlbGF0aXZlVGltZShpc286IHN0cmluZyk6IHN0cmluZyB7XG5cdGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cdGNvbnN0IHRoZW4gPSBuZXcgRGF0ZShpc28pLmdldFRpbWUoKTtcblx0Y29uc3QgZGlmZiA9IG5vdyAtIHRoZW47XG5cdGNvbnN0IHNlY29uZHMgPSBNYXRoLmZsb29yKGRpZmYgLyAxMDAwKTtcblx0Y29uc3QgbWludXRlcyA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDYwKTtcblx0Y29uc3QgaG91cnMgPSBNYXRoLmZsb29yKG1pbnV0ZXMgLyA2MCk7XG5cdGNvbnN0IGRheXMgPSBNYXRoLmZsb29yKGhvdXJzIC8gMjQpO1xuXG5cdGlmIChkYXlzID4gMzApIHJldHVybiBuZXcgRGF0ZShpc28pLnRvTG9jYWxlRGF0ZVN0cmluZygpO1xuXHRpZiAoZGF5cyA+IDApIHJldHVybiBgJHtkYXlzfWQgYWdvYDtcblx0aWYgKGhvdXJzID4gMCkgcmV0dXJuIGAke2hvdXJzfWggYWdvYDtcblx0aWYgKG1pbnV0ZXMgPiAwKSByZXR1cm4gYCR7bWludXRlc31tIGFnb2A7XG5cdHJldHVybiBcImp1c3Qgbm93XCI7XG59XG4iLCAiaW1wb3J0IHsgQXBwLCBNb2RhbCB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5leHBvcnQgY2xhc3MgV2VsY29tZU1vZGFsIGV4dGVuZHMgTW9kYWwge1xuXHRjb25zdHJ1Y3RvcihhcHA6IEFwcCkge1xuXHRcdHN1cGVyKGFwcCk7XG5cdH1cblxuXHRvbk9wZW4oKTogdm9pZCB7XG5cdFx0Y29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XG5cdFx0Y29udGVudEVsLmFkZENsYXNzKFwic2JsLXdlbGNvbWUtbW9kYWxcIik7XG5cblx0XHRjb250ZW50RWwuY3JlYXRlRWwoXCJoMlwiLCB7IHRleHQ6IFwiV2VsY29tZSB0byBzdWJsaW1hdGVkXCIgfSk7XG5cblx0XHRjb250ZW50RWwuY3JlYXRlRWwoXCJwXCIsIHtcblx0XHRcdHRleHQ6IFwic3VibGltYXRlZCBzeW5jcyB5b3VyIGZpbGVzIHdpdGggdmVyc2lvbiBoaXN0b3J5LCBjb2xsYWJvcmF0aW9uLCBhbmQgYSB3ZWIgdmlld2VyIFx1MjAxNCBhbGwgcG93ZXJlZCBieSBnaXQgdW5kZXIgdGhlIGhvb2QuXCIsXG5cdFx0fSk7XG5cblx0XHRjb25zdCBzdGVwcyA9IGNvbnRlbnRFbC5jcmVhdGVFbChcImRpdlwiLCB7IGNsczogXCJzYmwtd2VsY29tZS1zdGVwc1wiIH0pO1xuXG5cdFx0Y29uc3Qgc3RlcDEgPSBzdGVwcy5jcmVhdGVEaXYoeyBjbHM6IFwic2JsLXdlbGNvbWUtc3RlcFwiIH0pO1xuXHRcdHN0ZXAxLmNyZWF0ZUVsKFwic3Ryb25nXCIsIHsgdGV4dDogXCIxLiBPcGVuIHlvdXIgdmF1bHQgZnJvbSBzdWJsaW1hdGVkXCIgfSk7XG5cdFx0c3RlcDEuY3JlYXRlRWwoXCJwXCIsIHtcblx0XHRcdHRleHQ6IFwiSW4gRmluZGVyLCBvcGVuIHlvdXIgc3VibGltYXRlZCBmb2xkZXIgKHVuZGVyIENsb3VkU3RvcmFnZSkgYXMgYW4gT2JzaWRpYW4gdmF1bHQuIFRoZSBwbHVnaW4gZGV0ZWN0cyB0aGUgLnNibC8gZm9sZGVyIGF1dG9tYXRpY2FsbHkuXCIsXG5cdFx0fSk7XG5cblx0XHRjb25zdCBzdGVwMiA9IHN0ZXBzLmNyZWF0ZURpdih7IGNsczogXCJzYmwtd2VsY29tZS1zdGVwXCIgfSk7XG5cdFx0c3RlcDIuY3JlYXRlRWwoXCJzdHJvbmdcIiwgeyB0ZXh0OiBcIjIuIFN0YXR1cyBiYXIgc2hvd3Mgc3luYyBpbmZvXCIgfSk7XG5cdFx0c3RlcDIuY3JlYXRlRWwoXCJwXCIsIHtcblx0XHRcdHRleHQ6IFwiVGhlIGJvdHRvbSBiYXIgc2hvd3MgdmVyc2lvbiBudW1iZXIsIHN5bmMgc3RhdHVzLCBhbmQgYXV0aG9yIGZvciB0aGUgY3VycmVudCBmaWxlIFx1MjAxNCBhbGwgcmVhZCBmcm9tIGxvY2FsIGZpbGUgbWV0YWRhdGEsIG5vIGFjY291bnQgbmVlZGVkLlwiLFxuXHRcdH0pO1xuXG5cdFx0Y29uc3Qgc3RlcDMgPSBzdGVwcy5jcmVhdGVEaXYoeyBjbHM6IFwic2JsLXdlbGNvbWUtc3RlcFwiIH0pO1xuXHRcdHN0ZXAzLmNyZWF0ZUVsKFwic3Ryb25nXCIsIHsgdGV4dDogXCIzLiBBZGQgYW4gQVBJIHRva2VuIGZvciB2ZXJzaW9uIGhpc3RvcnlcIiB9KTtcblx0XHRzdGVwMy5jcmVhdGVFbChcInBcIiwge1xuXHRcdFx0dGV4dDogXCJUbyBicm93c2UgcGFzdCB2ZXJzaW9ucywgYWRkIHlvdXIgQVBJIHRva2VuIGluIFNldHRpbmdzIFx1MjE5MiBzdWJsaW1hdGVkLiBHZW5lcmF0ZSBvbmUgYXQgc3VibGltYXRlZC5jb20vc2V0dGluZ3MvdG9rZW5zLlwiLFxuXHRcdH0pO1xuXG5cdFx0Y29uc3QgbGlua3MgPSBjb250ZW50RWwuY3JlYXRlRGl2KHsgY2xzOiBcInNibC13ZWxjb21lLWxpbmtzXCIgfSk7XG5cdFx0bGlua3MuY3JlYXRlRWwoXCJhXCIsIHtcblx0XHRcdHRleHQ6IFwiTGVhcm4gbW9yZSBhdCBzdWJsaW1hdGVkLmNvbVwiLFxuXHRcdFx0aHJlZjogXCJodHRwczovL3N1YmxpbWF0ZWQuY29tXCIsXG5cdFx0fSk7XG5cdFx0bGlua3MuY3JlYXRlRWwoXCJiclwiKTtcblx0XHRsaW5rcy5jcmVhdGVFbChcImFcIiwge1xuXHRcdFx0dGV4dDogXCJEb2N1bWVudGF0aW9uXCIsXG5cdFx0XHRocmVmOiBcImh0dHBzOi8vc3VibGltYXRlZC5jb20vZG9jcy9vYnNpZGlhblwiLFxuXHRcdH0pO1xuXG5cdFx0Y29uc3QgZm9vdGVyID0gY29udGVudEVsLmNyZWF0ZURpdih7IGNsczogXCJzYmwtd2VsY29tZS1mb290ZXJcIiB9KTtcblx0XHRmb290ZXIuY3JlYXRlRWwoXCJidXR0b25cIiwge1xuXHRcdFx0dGV4dDogXCJHZXQgc3RhcnRlZFwiLFxuXHRcdFx0Y2xzOiBcIm1vZC1jdGFcIixcblx0XHR9KS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4gdGhpcy5jbG9zZSgpKTtcblx0fVxuXG5cdG9uQ2xvc2UoKTogdm9pZCB7XG5cdFx0dGhpcy5jb250ZW50RWwuZW1wdHkoKTtcblx0fVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQSxtQkFLTzs7O0FDTFAsSUFBQUMsbUJBQXVEOzs7QUNBdkQsc0JBQTJCO0FBRTNCLElBQU0sV0FBVztBQXNCVixJQUFNLGdCQUFOLE1BQW9CO0FBQUEsRUFDMUIsWUFBb0IsT0FBZTtBQUFmO0FBQUEsRUFBZ0I7QUFBQSxFQUVwQyxNQUFjLFFBQVcsTUFBMEI7QUFDbEQsVUFBTSxXQUFX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QUcsRUFBRTtBQUNwRCxRQUFJLHdCQUFPLDBCQUEwQjtBQUFBLEVBQ3RDO0FBQUEsRUFFQSxNQUFjLHNCQUFxQztBQUNsRCxVQUFNLFdBQ0wsS0FBSyxJQUFJLFVBQVUsZ0JBQWdCLGlCQUFpQjtBQUNyRCxRQUFJLFNBQVMsU0FBUyxHQUFHO0FBQ3hCLFdBQUssSUFBSSxVQUFVLFdBQVcsU0FBUyxDQUFDLENBQUM7QUFDekM7QUFBQSxJQUNEO0FBRUEsVUFBTSxPQUFPLEtBQUssSUFBSSxVQUFVLGFBQWEsS0FBSztBQUNsRCxRQUFJLENBQUMsS0FBTTtBQUNYLFVBQU0sS0FBSyxhQUFhO0FBQUEsTUFDdkIsTUFBTTtBQUFBLE1BQ04sUUFBUTtBQUFBLElBQ1QsQ0FBQztBQUNELFNBQUssSUFBSSxVQUFVLFdBQVcsSUFBSTtBQUFBLEVBQ25DO0FBQUEsRUFFUSxVQUFVLFFBQXNDO0FBQ3ZELFVBQU0sRUFBRSxRQUFRLEtBQUssSUFBSTtBQUV6QixRQUFJLFdBQVcsVUFBVSxNQUFNO0FBQzlCLFlBQU0saUJBQWEsZ0NBQWMsSUFBSTtBQUNyQyxZQUFNLFdBQVcsS0FBSyxJQUFJLE1BQU0sc0JBQXNCLFVBQVU7QUFDaEUsVUFBSSxVQUFVO0FBQ2IsYUFBSyxJQUFJLFVBQVUsYUFBYSxZQUFZLElBQUksS0FBSztBQUFBLE1BQ3RELE9BQU87QUFDTixZQUFJLHdCQUFPLG1CQUFtQixJQUFJLEVBQUU7QUFBQSxNQUNyQztBQUNBO0FBQUEsSUFDRDtBQUVBLFFBQUksV0FBVyxVQUFVLE9BQU8sT0FBTztBQUV0QyxXQUFLLFNBQVMsV0FBVyxPQUFPO0FBQ2hDLFdBQUssYUFBYTtBQUNsQixVQUFJLHdCQUFPLG9DQUFvQztBQUMvQztBQUFBLElBQ0Q7QUFFQSxRQUFJLHdCQUFPLDhCQUE4QixNQUFNLEVBQUU7QUFBQSxFQUNsRDtBQUNEO0FBRUEsU0FBUyxlQUFlLFFBQXdCO0FBQy9DLFVBQVEsUUFBUTtBQUFBLElBQ2YsS0FBSztBQUNKLGFBQU87QUFBQSxJQUNSLEtBQUs7QUFDSixhQUFPO0FBQUEsSUFDUixLQUFLO0FBQ0osYUFBTztBQUFBLElBQ1IsS0FBSztBQUNKLGFBQU87QUFBQSxJQUNSLEtBQUs7QUFDSixhQUFPO0FBQUEsSUFDUjtBQUNDLGFBQU87QUFBQSxFQUNUO0FBQ0Q7QUFFQSxTQUFTLGVBQWUsWUFBNEI7QUFDbkQsVUFBUSxZQUFZO0FBQUEsSUFDbkIsS0FBSztBQUNKLGFBQU87QUFBQSxJQUNSLEtBQUs7QUFDSixhQUFPO0FBQUEsSUFDUixLQUFLO0FBQ0osYUFBTztBQUFBLElBQ1I7QUFDQyxhQUFPO0FBQUEsRUFDVDtBQUNEOyIsCiAgIm5hbWVzIjogWyJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIl0KfQo=
681//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL21haW4udHMiLCAic3JjL3NldHRpbmdzLnRzIiwgInNyYy9hcGkudHMiLCAic3JjL3hhdHRyLnRzIiwgInNyYy92ZXJzaW9uLXZpZXcudHMiLCAic3JjL3dlbGNvbWUtbW9kYWwudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7XG5cdE5vdGljZSxcblx0UGx1Z2luLFxuXHRXb3Jrc3BhY2VMZWFmLFxuXHRub3JtYWxpemVQYXRoLFxufSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7XG5cdHR5cGUgU3VibGltYXRlZFNldHRpbmdzLFxuXHRERUZBVUxUX1NFVFRJTkdTLFxuXHRTdWJsaW1hdGVkU2V0dGluZ1RhYixcbn0gZnJvbSBcIi4vc2V0dGluZ3NcIjtcbmltcG9ydCB7IHR5cGUgRmlsZU1ldGFkYXRhLCByZWFkRmlsZU1ldGFkYXRhLCBpc01hY09TIH0gZnJvbSBcIi4veGF0dHJcIjtcbmltcG9ydCB7IFZlcnNpb25WaWV3LCBWRVJTSU9OX1ZJRVdfVFlQRSB9IGZyb20gXCIuL3ZlcnNpb24tdmlld1wiO1xuaW1wb3J0IHsgV2VsY29tZU1vZGFsIH0gZnJvbSBcIi4vd2VsY29tZS1tb2RhbFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdWJsaW1hdGVkUGx1Z2luIGV4dGVuZHMgUGx1Z2luIHtcblx0c2V0dGluZ3M6IFN1YmxpbWF0ZWRTZXR0aW5ncyA9IERFRkFVTFRfU0VUVElOR1M7XG5cdGxhc3RNZXRhZGF0YTogRmlsZU1ldGFkYXRhIHwgbnVsbCA9IG51bGw7XG5cblx0cHJpdmF0ZSBzdGF0dXNCYXJFbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblx0cHJpdmF0ZSBpc1N1YmxpbWF0ZWRWYXVsdCA9IGZhbHNlO1xuXG5cdGFzeW5jIG9ubG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRhd2FpdCB0aGlzLmxvYWRTZXR0aW5ncygpO1xuXG5cdFx0Ly8gZGV0ZWN0IGlmIHRoaXMgdmF1bHQgaXMgYSBzdWJsaW1hdGVkIHdvcmtzcGFjZVxuXHRcdHRoaXMuaXNTdWJsaW1hdGVkVmF1bHQgPSBhd2FpdCB0aGlzLmNoZWNrU3VibGltYXRlZFZhdWx0KCk7XG5cblx0XHQvLyBzdGF0dXMgYmFyXG5cdFx0dGhpcy5zdGF0dXNCYXJFbCA9IHRoaXMuYWRkU3RhdHVzQmFySXRlbSgpO1xuXHRcdHRoaXMuc3RhdHVzQmFyRWwuYWRkQ2xhc3MoXCJzYmwtc3RhdHVzLWJhclwiKTtcblx0XHR0aGlzLnN0YXR1c0JhckVsLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PlxuXHRcdFx0dGhpcy5vcGVuQ3VycmVudEZpbGVPbldlYigpXG5cdFx0KTtcblx0XHR0aGlzLnVwZGF0ZVN0YXR1c0JhcihudWxsKTtcblxuXHRcdC8vIHJlZ2lzdGVyIHZlcnNpb24gaGlzdG9yeSB2aWV3XG5cdFx0dGhpcy5yZWdpc3RlclZpZXcoXG5cdFx0XHRWRVJTSU9OX1ZJRVdfVFlQRSxcblx0XHRcdChsZWFmKSA9PiBuZXcgVmVyc2lvblZpZXcobGVhZiwgdGhpcylcblx0XHQpO1xuXG5cdFx0Ly8gY29tbWFuZHNcblx0XHR0aGlzLmFkZENvbW1hbmQoe1xuXHRcdFx0aWQ6IFwib3Blbi1vbi13ZWJcIixcblx0XHRcdG5hbWU6IFwiT3BlbiBvbiBzdWJsaW1hdGVkLmNvbVwiLFxuXHRcdFx0Y2FsbGJhY2s6ICgpID0+IHRoaXMub3BlbkN1cnJlbnRGaWxlT25XZWIoKSxcblx0XHR9KTtcblxuXHRcdHRoaXMuYWRkQ29tbWFuZCh7XG5cdFx0XHRpZDogXCJzaG93LXZlcnNpb25zXCIsXG5cdFx0XHRuYW1lOiBcIlNob3cgdmVyc2lvbnNcIixcblx0XHRcdGNhbGxiYWNrOiAoKSA9PiB0aGlzLmFjdGl2YXRlVmVyc2lvblZpZXcoKSxcblx0XHR9KTtcblxuXHRcdHRoaXMuYWRkQ29tbWFuZCh7XG5cdFx0XHRpZDogXCJjb3B5LXdlYi1saW5rXCIsXG5cdFx0XHRuYW1lOiBcIkNvcHkgd2ViIGxpbmtcIixcblx0XHRcdGNhbGxiYWNrOiAoKSA9PiB0aGlzLmNvcHlXZWJMaW5rKCksXG5cdFx0fSk7XG5cblx0XHQvLyByaWJib24gaWNvbiBmb3IgdmVyc2lvbiBzaWRlYmFyXG5cdFx0dGhpcy5hZGRSaWJib25JY29uKFwiaGlzdG9yeVwiLCBcInN1YmxpbWF0ZWQgdmVyc2lvbnNcIiwgKCkgPT4ge1xuXHRcdFx0dGhpcy5hY3RpdmF0ZVZlcnNpb25WaWV3KCk7XG5cdFx0fSk7XG5cblx0XHQvLyBVUkkgaGFuZGxlcjogb2JzaWRpYW46Ly9zdWJsaW1hdGVkP2FjdGlvbj1vcGVuJmZpbGU9cGF0aC90by9ub3RlLm1kXG5cdFx0dGhpcy5yZWdpc3Rlck9ic2lkaWFuUHJvdG9jb2xIYW5kbGVyKFxuXHRcdFx0XCJzdWJsaW1hdGVkXCIsXG5cdFx0XHQocGFyYW1zKSA9PiB0aGlzLmhhbmRsZVVyaShwYXJhbXMpXG5cdFx0KTtcblxuXHRcdC8vIHNldHRpbmdzIHRhYlxuXHRcdHRoaXMuYWRkU2V0dGluZ1RhYihuZXcgU3VibGltYXRlZFNldHRpbmdUYWIodGhpcy5hcHAsIHRoaXMpKTtcblxuXHRcdC8vIHVwZGF0ZSBzdGF0dXMgYmFyIHdoZW4gYWN0aXZlIGZpbGUgY2hhbmdlc1xuXHRcdHRoaXMucmVnaXN0ZXJFdmVudChcblx0XHRcdHRoaXMuYXBwLndvcmtzcGFjZS5vbihcImFjdGl2ZS1sZWFmLWNoYW5nZVwiLCAoKSA9PiB7XG5cdFx0XHRcdHRoaXMucmVmcmVzaE1ldGFkYXRhKCk7XG5cdFx0XHR9KVxuXHRcdCk7XG5cblx0XHQvLyBpbml0aWFsIG1ldGFkYXRhIHJlYWRcblx0XHR0aGlzLnJlZnJlc2hNZXRhZGF0YSgpO1xuXG5cdFx0Ly8gd2VsY29tZSBtb2RhbCBvbiBmaXJzdCBpbnN0YWxsXG5cdFx0aWYgKCF0aGlzLnNldHRpbmdzLmhhc1NlZW5XZWxjb21lKSB7XG5cdFx0XHRuZXcgV2VsY29tZU1vZGFsKHRoaXMuYXBwKS5vcGVuKCk7XG5cdFx0XHR0aGlzLnNldHRpbmdzLmhhc1NlZW5XZWxjb21lID0gdHJ1ZTtcblx0XHRcdGF3YWl0IHRoaXMuc2F2ZVNldHRpbmdzKCk7XG5cdFx0fVxuXHR9XG5cblx0b251bmxvYWQoKTogdm9pZCB7XG5cdFx0dGhpcy5hcHAud29ya3NwYWNlLmRldGFjaExlYXZlc09mVHlwZShWRVJTSU9OX1ZJRVdfVFlQRSk7XG5cdH1cblxuXHRhc3luYyBsb2FkU2V0dGluZ3MoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dGhpcy5zZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oXG5cdFx0XHR7fSxcblx0XHRcdERFRkFVTFRfU0VUVElOR1MsXG5cdFx0XHRhd2FpdCB0aGlzLmxvYWREYXRhKClcblx0XHQpO1xuXHR9XG5cblx0YXN5bmMgc2F2ZVNldHRpbmdzKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGF3YWl0IHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XG5cdH1cblxuXHQvLyBjaGVjayBmb3IgLnNibC8gZm9sZGVyIGluIHZhdWx0IHJvb3Rcblx0cHJpdmF0ZSBhc3luYyBjaGVja1N1YmxpbWF0ZWRWYXVsdCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0XHRjb25zdCBhZGFwdGVyID0gdGhpcy5hcHAudmF1bHQuYWRhcHRlcjtcblx0XHRyZXR1cm4gYWRhcHRlci5leGlzdHMobm9ybWFsaXplUGF0aChcIi5zYmxcIikpO1xuXHR9XG5cblx0ZGV0ZWN0V29ya3NwYWNlKCk6IHsgc3BhY2U6IHN0cmluZyB8IG51bGwgfSB8IG51bGwge1xuXHRcdGlmICghdGhpcy5pc1N1YmxpbWF0ZWRWYXVsdCkgcmV0dXJuIG51bGw7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHNwYWNlOiB0aGlzLmxhc3RNZXRhZGF0YT8uc3BhY2UgPz8gbnVsbCxcblx0XHR9O1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyByZWZyZXNoTWV0YWRhdGEoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgZmlsZSA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVGaWxlKCk7XG5cdFx0aWYgKCFmaWxlKSB7XG5cdFx0XHR0aGlzLmxhc3RNZXRhZGF0YSA9IG51bGw7XG5cdFx0XHR0aGlzLnVwZGF0ZVN0YXR1c0JhcihudWxsKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoIWlzTWFjT1MoKSkge1xuXHRcdFx0dGhpcy5sYXN0TWV0YWRhdGEgPSBudWxsO1xuXHRcdFx0dGhpcy51cGRhdGVTdGF0dXNCYXIobnVsbCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gZ2V0IGFic29sdXRlIHBhdGggdmlhIHZhdWx0IGFkYXB0ZXJcblx0XHRjb25zdCBhZGFwdGVyID0gdGhpcy5hcHAudmF1bHQuYWRhcHRlcjtcblx0XHRjb25zdCBiYXNlUGF0aCA9IChhZGFwdGVyIGFzIHsgZ2V0QmFzZVBhdGg/OiAoKSA9PiBzdHJpbmcgfSlcblx0XHRcdC5nZXRCYXNlUGF0aD8uKCk7XG5cdFx0aWYgKCFiYXNlUGF0aCkge1xuXHRcdFx0dGhpcy5sYXN0TWV0YWRhdGEgPSBudWxsO1xuXHRcdFx0dGhpcy51cGRhdGVTdGF0dXNCYXIobnVsbCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgYWJzUGF0aCA9IGAke2Jhc2VQYXRofS8ke2ZpbGUucGF0aH1gO1xuXHRcdHRoaXMubGFzdE1ldGFkYXRhID0gYXdhaXQgcmVhZEZpbGVNZXRhZGF0YShhYnNQYXRoKTtcblx0XHR0aGlzLnVwZGF0ZVN0YXR1c0Jhcih0aGlzLmxhc3RNZXRhZGF0YSk7XG5cdH1cblxuXHRwcml2YXRlIHVwZGF0ZVN0YXR1c0JhcihtZXRhOiBGaWxlTWV0YWRhdGEgfCBudWxsKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLnN0YXR1c0JhckVsKSByZXR1cm47XG5cblx0XHRpZiAoIXRoaXMuaXNTdWJsaW1hdGVkVmF1bHQpIHtcblx0XHRcdHRoaXMuc3RhdHVzQmFyRWwuc2V0VGV4dChcIlwiKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoIW1ldGEpIHtcblx0XHRcdHRoaXMuc3RhdHVzQmFyRWwuc2V0VGV4dChcInN1YmxpbWF0ZWRcIik7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG5cblx0XHRpZiAobWV0YS52ZXJzaW9uKSB7XG5cdFx0XHRwYXJ0cy5wdXNoKGB2JHttZXRhLnZlcnNpb259YCk7XG5cdFx0fVxuXG5cdFx0aWYgKG1ldGEuc3luY1N0YXR1cykge1xuXHRcdFx0Y29uc3QgaWNvbiA9IHN5bmNTdGF0dXNJY29uKG1ldGEuc3luY1N0YXR1cyk7XG5cdFx0XHRwYXJ0cy5wdXNoKGAke2ljb259ICR7bWV0YS5zeW5jU3RhdHVzfWApO1xuXHRcdH1cblxuXHRcdGlmIChtZXRhLm1vZGlmaWVkQnkpIHtcblx0XHRcdGNvbnN0IHByZWZpeCA9XG5cdFx0XHRcdG1ldGEubW9kaWZpZWRCeVR5cGUgPT09IFwiYWlfYWdlbnRcIiA/IFwiYnkgQUk6XCIgOiBcImJ5XCI7XG5cdFx0XHRwYXJ0cy5wdXNoKGAke3ByZWZpeH0gJHttZXRhLm1vZGlmaWVkQnl9YCk7XG5cdFx0fVxuXG5cdFx0aWYgKG1ldGEuYnJhbmNoICYmIG1ldGEuYnJhbmNoICE9PSBcIm1haW5cIikge1xuXHRcdFx0cGFydHMucHVzaChtZXRhLmJyYW5jaCk7XG5cdFx0fVxuXG5cdFx0aWYgKG1ldGEudmlzaWJpbGl0eSkge1xuXHRcdFx0cGFydHMucHVzaCh2aXNpYmlsaXR5SWNvbihtZXRhLnZpc2liaWxpdHkpKTtcblx0XHR9XG5cblx0XHRpZiAocGFydHMubGVuZ3RoID4gMCkge1xuXHRcdFx0dGhpcy5zdGF0dXNCYXJFbC5zZXRUZXh0KGBzdWJsaW1hdGVkOiAke3BhcnRzLmpvaW4oXCIgXHUwMEI3IFwiKX1gKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zdGF0dXNCYXJFbC5zZXRUZXh0KFwic3VibGltYXRlZFwiKTtcblx0XHR9XG5cblx0XHQvLyBzaG93IHBvaW50ZXIgY3Vyc29yIHdoZW4gVVJMIGF2YWlsYWJsZVxuXHRcdGlmIChtZXRhLnVybCkge1xuXHRcdFx0dGhpcy5zdGF0dXNCYXJFbC5hZGRDbGFzcyhcInNibC1jbGlja2FibGVcIik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc3RhdHVzQmFyRWwucmVtb3ZlQ2xhc3MoXCJzYmwtY2xpY2thYmxlXCIpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgb3BlbkN1cnJlbnRGaWxlT25XZWIoKTogdm9pZCB7XG5cdFx0Y29uc3QgdXJsID0gdGhpcy5sYXN0TWV0YWRhdGE/LnVybDtcblx0XHRpZiAoIXVybCkge1xuXHRcdFx0bmV3IE5vdGljZShcIk5vIHN1YmxpbWF0ZWQgVVJMIGZvciB0aGlzIGZpbGVcIik7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHdpbmRvdy5vcGVuKGBodHRwczovLyR7dXJsfWApO1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBjb3B5V2ViTGluaygpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCB1cmwgPSB0aGlzLmxhc3RNZXRhZGF0YT8udXJsO1xuXHRcdGlmICghdXJsKSB7XG5cdFx0XHRuZXcgTm90aWNlKFwiTm8gc3VibGltYXRlZCBVUkwgZm9yIHRoaXMgZmlsZVwiKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0YXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoYGh0dHBzOi8vJHt1cmx9YCk7XG5cdFx0bmV3IE5vdGljZShcIkxpbmsgY29waWVkIHRvIGNsaXBib2FyZFwiKTtcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgYWN0aXZhdGVWZXJzaW9uVmlldygpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBleGlzdGluZyA9XG5cdFx0XHR0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0TGVhdmVzT2ZUeXBlKFZFUlNJT05fVklFV19UWVBFKTtcblx0XHRpZiAoZXhpc3RpbmcubGVuZ3RoID4gMCkge1xuXHRcdFx0dGhpcy5hcHAud29ya3NwYWNlLnJldmVhbExlYWYoZXhpc3RpbmdbMF0pO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IGxlYWYgPSB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0UmlnaHRMZWFmKGZhbHNlKTtcblx0XHRpZiAoIWxlYWYpIHJldHVybjtcblx0XHRhd2FpdCBsZWFmLnNldFZpZXdTdGF0ZSh7XG5cdFx0XHR0eXBlOiBWRVJTSU9OX1ZJRVdfVFlQRSxcblx0XHRcdGFjdGl2ZTogdHJ1ZSxcblx0XHR9KTtcblx0XHR0aGlzLmFwcC53b3Jrc3BhY2UucmV2ZWFsTGVhZihsZWFmKTtcblx0fVxuXG5cdHByaXZhdGUgaGFuZGxlVXJpKHBhcmFtczogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHZvaWQge1xuXHRcdGNvbnN0IHsgYWN0aW9uLCBmaWxlIH0gPSBwYXJhbXM7XG5cblx0XHRpZiAoYWN0aW9uID09PSBcIm9wZW5cIiAmJiBmaWxlKSB7XG5cdFx0XHRjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplUGF0aChmaWxlKTtcblx0XHRcdGNvbnN0IGV4aXN0aW5nID0gdGhpcy5hcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKG5vcm1hbGl6ZWQpO1xuXHRcdFx0aWYgKGV4aXN0aW5nKSB7XG5cdFx0XHRcdHRoaXMuYXBwLndvcmtzcGFjZS5vcGVuTGlua1RleHQobm9ybWFsaXplZCwgXCJcIiwgZmFsc2UpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bmV3IE5vdGljZShgRmlsZSBub3QgZm91bmQ6ICR7ZmlsZX1gKTtcblx0XHRcdH1cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoYWN0aW9uID09PSBcImF1dGhcIiAmJiBwYXJhbXMudG9rZW4pIHtcblx0XHRcdC8vIGZ1dHVyZTogT0F1dGggZmxvdyBzdG9yZXMgdG9rZW4gZnJvbSByZWRpcmVjdFxuXHRcdFx0dGhpcy5zZXR0aW5ncy5hcGlUb2tlbiA9IHBhcmFtcy50b2tlbjtcblx0XHRcdHRoaXMuc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRuZXcgTm90aWNlKFwic3VibGltYXRlZDogc2lnbmVkIGluIHN1Y2Nlc3NmdWxseVwiKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRuZXcgTm90aWNlKGBVbmtub3duIHN1YmxpbWF0ZWQgYWN0aW9uOiAke2FjdGlvbn1gKTtcblx0fVxufVxuXG5mdW5jdGlvbiBzeW5jU3RhdHVzSWNvbihzdGF0dXM6IHN0cmluZyk6IHN0cmluZyB7XG5cdHN3aXRjaCAoc3RhdHVzKSB7XG5cdFx0Y2FzZSBcInN5bmNlZFwiOlxuXHRcdFx0cmV0dXJuIFwiXHUyNzEzXCI7XG5cdFx0Y2FzZSBcInVwbG9hZGluZ1wiOlxuXHRcdFx0cmV0dXJuIFwiXHUyMTkxXCI7XG5cdFx0Y2FzZSBcImRvd25sb2FkaW5nXCI6XG5cdFx0XHRyZXR1cm4gXCJcdTIxOTNcIjtcblx0XHRjYXNlIFwiZXJyb3JcIjpcblx0XHRcdHJldHVybiBcIiFcIjtcblx0XHRjYXNlIFwiY29uZmxpY3RcIjpcblx0XHRcdHJldHVybiBcIlx1MjZBMFwiO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gXCJcIjtcblx0fVxufVxuXG5mdW5jdGlvbiB2aXNpYmlsaXR5SWNvbih2aXNpYmlsaXR5OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRzd2l0Y2ggKHZpc2liaWxpdHkpIHtcblx0XHRjYXNlIFwicHVibGljXCI6XG5cdFx0XHRyZXR1cm4gXCJcdUQ4M0NcdURGMTBcIjtcblx0XHRjYXNlIFwic2hhcmVkXCI6XG5cdFx0XHRyZXR1cm4gXCJcdUQ4M0RcdURDNjVcIjtcblx0XHRjYXNlIFwicHJpdmF0ZVwiOlxuXHRcdFx0cmV0dXJuIFwiXHVEODNEXHVERDEyXCI7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHJldHVybiBcIlwiO1xuXHR9XG59XG4iLCAiaW1wb3J0IHsgQXBwLCBOb3RpY2UsIFBsdWdpblNldHRpbmdUYWIsIFNldHRpbmcgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB0eXBlIFN1YmxpbWF0ZWRQbHVnaW4gZnJvbSBcIi4vbWFpblwiO1xuaW1wb3J0IHsgU3VibGltYXRlZEFwaSB9IGZyb20gXCIuL2FwaVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN1YmxpbWF0ZWRTZXR0aW5ncyB7XG5cdGFwaVRva2VuOiBzdHJpbmc7XG5cdGhhc1NlZW5XZWxjb21lOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRVRUSU5HUzogU3VibGltYXRlZFNldHRpbmdzID0ge1xuXHRhcGlUb2tlbjogXCJcIixcblx0aGFzU2VlbldlbGNvbWU6IGZhbHNlLFxufTtcblxuZXhwb3J0IGNsYXNzIFN1YmxpbWF0ZWRTZXR0aW5nVGFiIGV4dGVuZHMgUGx1Z2luU2V0dGluZ1RhYiB7XG5cdHBsdWdpbjogU3VibGltYXRlZFBsdWdpbjtcblxuXHRjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcGx1Z2luOiBTdWJsaW1hdGVkUGx1Z2luKSB7XG5cdFx0c3VwZXIoYXBwLCBwbHVnaW4pO1xuXHRcdHRoaXMucGx1Z2luID0gcGx1Z2luO1xuXHR9XG5cblx0ZGlzcGxheSgpOiB2b2lkIHtcblx0XHRjb25zdCB7IGNvbnRhaW5lckVsIH0gPSB0aGlzO1xuXHRcdGNvbnRhaW5lckVsLmVtcHR5KCk7XG5cblx0XHQvLyBicmFuZGluZ1xuXHRcdGNvbnN0IGhlYWRlciA9IGNvbnRhaW5lckVsLmNyZWF0ZURpdih7IGNsczogXCJzYmwtc2V0dGluZ3MtaGVhZGVyXCIgfSk7XG5cdFx0aGVhZGVyLmNyZWF0ZUVsKFwiaDJcIiwgeyB0ZXh0OiBcInN1YmxpbWF0ZWRcIiB9KTtcblx0XHRoZWFkZXIuY3JlYXRlRWwoXCJwXCIsIHtcblx0XHRcdHRleHQ6IFwiU3luYyBzdGF0dXMsIHZlcnNpb24gaGlzdG9yeSwgYW5kIGRlZXAgbGlua3MuXCIsXG5cdFx0XHRjbHM6IFwic2V0dGluZy1pdGVtLWRlc2NyaXB0aW9uXCIsXG5cdFx0fSk7XG5cblx0XHQvLyB3b3Jrc3BhY2UgZGV0ZWN0aW9uXG5cdFx0Y29uc3Qgd29ya3NwYWNlSW5mbyA9IHRoaXMucGx1Z2luLmRldGVjdFdvcmtzcGFjZSgpO1xuXHRcdGlmICh3b3Jrc3BhY2VJbmZvKSB7XG5cdFx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdFx0LnNldE5hbWUoXCJEZXRlY3RlZCB3b3Jrc3BhY2VcIilcblx0XHRcdFx0LnNldERlc2MoXG5cdFx0XHRcdFx0YFNwYWNlOiAke3dvcmtzcGFjZUluZm8uc3BhY2UgfHwgXCJ1bmtub3duXCJ9IFx1MjAxNCAuc2JsLyBmb2xkZXIgZm91bmQgaW4gdmF1bHQgcm9vdGBcblx0XHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHRcdC5zZXROYW1lKFwiTm8gd29ya3NwYWNlIGRldGVjdGVkXCIpXG5cdFx0XHRcdC5zZXREZXNjKFxuXHRcdFx0XHRcdFwiTm8gLnNibC8gZm9sZGVyIGZvdW5kLiBPcGVuIGEgdmF1bHQgZnJvbSB5b3VyIHN1YmxpbWF0ZWQgZm9sZGVyIGluIEZpbmRlci5cIlxuXHRcdFx0XHQpO1xuXHRcdH1cblxuXHRcdC8vIEFQSSB0b2tlblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJBUEkgdG9rZW5cIilcblx0XHRcdC5zZXREZXNjKFxuXHRcdFx0XHRcIlJlcXVpcmVkIGZvciB2ZXJzaW9uIGhpc3RvcnkuIEdlbmVyYXRlIGF0IHN1YmxpbWF0ZWQuY29tL3NldHRpbmdzL3Rva2Vuc1wiXG5cdFx0XHQpXG5cdFx0XHQuYWRkVGV4dCgodGV4dCkgPT5cblx0XHRcdFx0dGV4dFxuXHRcdFx0XHRcdC5zZXRQbGFjZWhvbGRlcihcInNrXy4uLlwiKVxuXHRcdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5hcGlUb2tlbilcblx0XHRcdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5hcGlUb2tlbiA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0fSlcblx0XHRcdCk7XG5cblx0XHQvLyB0ZXN0IGNvbm5lY3Rpb25cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiVGVzdCBjb25uZWN0aW9uXCIpXG5cdFx0XHQuc2V0RGVzYyhcIlZlcmlmeSB5b3VyIEFQSSB0b2tlbiB3b3Jrc1wiKVxuXHRcdFx0LmFkZEJ1dHRvbigoYnRuKSA9PlxuXHRcdFx0XHRidG4uc2V0QnV0dG9uVGV4dChcIlRlc3RcIikub25DbGljayhhc3luYyAoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKCF0aGlzLnBsdWdpbi5zZXR0aW5ncy5hcGlUb2tlbikge1xuXHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIk5vIEFQSSB0b2tlbiBjb25maWd1cmVkXCIpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRidG4uc2V0QnV0dG9uVGV4dChcIlRlc3RpbmcuLi5cIik7XG5cdFx0XHRcdFx0YnRuLnNldERpc2FibGVkKHRydWUpO1xuXHRcdFx0XHRcdGNvbnN0IGFwaSA9IG5ldyBTdWJsaW1hdGVkQXBpKFxuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuYXBpVG9rZW5cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwaS50ZXN0Q29ubmVjdGlvbigpO1xuXHRcdFx0XHRcdGlmIChyZXN1bHQub2spIHtcblx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoXG5cdFx0XHRcdFx0XHRcdGBDb25uZWN0ZWQgYXMgJHtyZXN1bHQudXNlcm5hbWV9YFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0bmV3IE5vdGljZShcblx0XHRcdFx0XHRcdFx0YENvbm5lY3Rpb24gZmFpbGVkOiAke3Jlc3VsdC5lcnJvcn1gXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRidG4uc2V0QnV0dG9uVGV4dChcIlRlc3RcIik7XG5cdFx0XHRcdFx0YnRuLnNldERpc2FibGVkKGZhbHNlKTtcblx0XHRcdFx0fSlcblx0XHRcdCk7XG5cblx0XHQvLyBsaW5rc1xuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwiZGl2XCIsIHsgY2xzOiBcInNibC1zZXR0aW5ncy1saW5rc1wiIH0sIChlbCkgPT4ge1xuXHRcdFx0ZWwuY3JlYXRlRWwoXCJhXCIsIHtcblx0XHRcdFx0dGV4dDogXCJzdWJsaW1hdGVkLmNvbVwiLFxuXHRcdFx0XHRocmVmOiBcImh0dHBzOi8vc3VibGltYXRlZC5jb21cIixcblx0XHRcdH0pO1xuXHRcdFx0ZWwuY3JlYXRlRWwoXCJzcGFuXCIsIHsgdGV4dDogXCIgXHUwMEI3IFwiIH0pO1xuXHRcdFx0ZWwuY3JlYXRlRWwoXCJhXCIsIHtcblx0XHRcdFx0dGV4dDogXCJEb2N1bWVudGF0aW9uXCIsXG5cdFx0XHRcdGhyZWY6IFwiaHR0cHM6Ly9zdWJsaW1hdGVkLmNvbS9kb2NzL29ic2lkaWFuXCIsXG5cdFx0XHR9KTtcblx0XHRcdGVsLmNyZWF0ZUVsKFwic3BhblwiLCB7IHRleHQ6IFwiIFx1MDBCNyBcIiB9KTtcblx0XHRcdGVsLmNyZWF0ZUVsKFwiYVwiLCB7XG5cdFx0XHRcdHRleHQ6IFwiU291cmNlIGNvZGVcIixcblx0XHRcdFx0aHJlZjogXCJodHRwczovL3N1YmxpbWF0ZWQuY29tL3N1YmxpbWF0ZWQvY29kZS9vYnNpZGlhblwiLFxuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn1cbiIsICJpbXBvcnQgeyByZXF1ZXN0VXJsIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmNvbnN0IEFQSV9CQVNFID0gXCJodHRwczovL2FwaS5zdWJsaW1hdGVkLmNvbVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZlcnNpb24ge1xuXHRpZDogc3RyaW5nO1xuXHRudW1iZXI6IG51bWJlcjtcblx0YXV0aG9yTmFtZTogc3RyaW5nO1xuXHRhdXRob3JUeXBlOiBzdHJpbmc7XG5cdG1lc3NhZ2U6IHN0cmluZyB8IG51bGw7XG5cdGNyZWF0ZWRBdDogc3RyaW5nO1xuXHRjb21taXRIYXNoOiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZlcnNpb25zUmVzcG9uc2Uge1xuXHR2ZXJzaW9uczogVmVyc2lvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RDb25uZWN0aW9uUmVzdWx0IHtcblx0b2s6IGJvb2xlYW47XG5cdHVzZXJuYW1lPzogc3RyaW5nO1xuXHRlcnJvcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFN1YmxpbWF0ZWRBcGkge1xuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIHRva2VuOiBzdHJpbmcpIHt9XG5cblx0cHJpdmF0ZSBhc3luYyByZXF1ZXN0PFQ+KHBhdGg6IHN0cmluZyk6IFByb21pc2U8VD4ge1xuXHRcdGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVxdWVzdFVybCh7XG5cdFx0XHR1cmw6IGAke0FQSV9CQVNFfSR7cGF0aH1gLFxuXHRcdFx0aGVhZGVyczoge1xuXHRcdFx0XHRBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy50b2tlbn1gLFxuXHRcdFx0XHRBY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiLFxuXHRcdFx0fSxcblx0XHR9KTtcblxuXHRcdGlmIChyZXNwb25zZS5zdGF0dXMgPj0gNDAwKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0XHRcdGBBUEkgZXJyb3IgJHtyZXNwb25zZS5zdGF0dXN9OiAke3Jlc3BvbnNlLnRleHR9YFxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzcG9uc2UuanNvbiBhcyBUO1xuXHR9XG5cblx0YXN5bmMgZ2V0VmVyc2lvbnMoXG5cdFx0c3BhY2VTbHVnOiBzdHJpbmcsXG5cdFx0aXRlbUlkOiBzdHJpbmdcblx0KTogUHJvbWlzZTxWZXJzaW9uW10+IHtcblx0XHRjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5yZXF1ZXN0PFZlcnNpb25zUmVzcG9uc2U+KFxuXHRcdFx0YC92MS9zcGFjZXMvJHtlbmNvZGVVUklDb21wb25lbnQoc3BhY2VTbHVnKX0vaXRlbXMvJHtlbmNvZGVVUklDb21wb25lbnQoaXRlbUlkKX0vdmVyc2lvbnNgXG5cdFx0KTtcblx0XHRyZXR1cm4gZGF0YS52ZXJzaW9ucztcblx0fVxuXG5cdGFzeW5jIHRlc3RDb25uZWN0aW9uKCk6IFByb21pc2U8VGVzdENvbm5lY3Rpb25SZXN1bHQ+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgZGF0YSA9IGF3YWl0IHRoaXMucmVxdWVzdDx7IHVzZXJuYW1lOiBzdHJpbmcgfT4oXG5cdFx0XHRcdFwiL3YxL21lXCJcblx0XHRcdCk7XG5cdFx0XHRyZXR1cm4geyBvazogdHJ1ZSwgdXNlcm5hbWU6IGRhdGEudXNlcm5hbWUgfTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRvazogZmFsc2UsXG5cdFx0XHRcdGVycm9yOiBlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBcIlVua25vd24gZXJyb3JcIixcblx0XHRcdH07XG5cdFx0fVxuXHR9XG59XG4iLCAiaW1wb3J0IHsgZXhlYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5jb25zdCBYQVRUUl9QUkVGSVggPSBcImNvbS5zdWJsaW1hdGVkLlwiO1xuY29uc3QgWEFUVFJfU1VGRklYID0gXCIjUFNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBGaWxlTWV0YWRhdGEge1xuXHR2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuXHRjb21taXQ6IHN0cmluZyB8IG51bGw7XG5cdHVybDogc3RyaW5nIHwgbnVsbDtcblx0Y29udGVudEhhc2g6IHN0cmluZyB8IG51bGw7XG5cdGlkOiBzdHJpbmcgfCBudWxsO1xuXHRjcmVhdGVkQnk6IHN0cmluZyB8IG51bGw7XG5cdG1vZGlmaWVkQnk6IHN0cmluZyB8IG51bGw7XG5cdG1vZGlmaWVkQnlUeXBlOiBzdHJpbmcgfCBudWxsO1xuXHRzeW5jU3RhdHVzOiBzdHJpbmcgfCBudWxsO1xuXHRzcGFjZTogc3RyaW5nIHwgbnVsbDtcblx0YnJhbmNoOiBzdHJpbmcgfCBudWxsO1xuXHRtb2RpZmllZEF0OiBzdHJpbmcgfCBudWxsO1xuXHR2aXNpYmlsaXR5OiBzdHJpbmcgfCBudWxsO1xufVxuXG5jb25zdCBBVFRSUzogKGtleW9mIEZpbGVNZXRhZGF0YSlbXSA9IFtcblx0XCJ2ZXJzaW9uXCIsXG5cdFwiY29tbWl0XCIsXG5cdFwidXJsXCIsXG5cdFwiY29udGVudEhhc2hcIixcblx0XCJpZFwiLFxuXHRcImNyZWF0ZWRCeVwiLFxuXHRcIm1vZGlmaWVkQnlcIixcblx0XCJtb2RpZmllZEJ5VHlwZVwiLFxuXHRcInN5bmNTdGF0dXNcIixcblx0XCJzcGFjZVwiLFxuXHRcImJyYW5jaFwiLFxuXHRcIm1vZGlmaWVkQXRcIixcblx0XCJ2aXNpYmlsaXR5XCIsXG5dO1xuXG5mdW5jdGlvbiBhdHRyVG9YYXR0ck5hbWUoYXR0cjogc3RyaW5nKTogc3RyaW5nIHtcblx0Ly8gY2FtZWxDYXNlIFx1MjE5MiBrZWJhYi1jYXNlOiBjb250ZW50SGFzaCBcdTIxOTIgY29udGVudC1oYXNoXG5cdGNvbnN0IGtlYmFiID0gYXR0ci5yZXBsYWNlKC9bQS1aXS9nLCAoYykgPT4gXCItXCIgKyBjLnRvTG93ZXJDYXNlKCkpO1xuXHRyZXR1cm4gYCR7WEFUVFJfUFJFRklYfSR7a2ViYWJ9JHtYQVRUUl9TVUZGSVh9YDtcbn1cblxuZnVuY3Rpb24gcmVhZFhhdHRyKHBhdGg6IHN0cmluZywgeGF0dHJOYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcblx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG5cdFx0ZXhlYyhcblx0XHRcdGB4YXR0ciAtcCAke0pTT04uc3RyaW5naWZ5KHhhdHRyTmFtZSl9ICR7SlNPTi5zdHJpbmdpZnkocGF0aCl9YCxcblx0XHRcdHsgdGltZW91dDogMjAwMCB9LFxuXHRcdFx0KGVyciwgc3Rkb3V0KSA9PiB7XG5cdFx0XHRcdGlmIChlcnIpIHtcblx0XHRcdFx0XHRyZXNvbHZlKG51bGwpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXNvbHZlKHN0ZG91dC50cmltKCkgfHwgbnVsbCk7XG5cdFx0XHR9XG5cdFx0KTtcblx0fSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkRmlsZU1ldGFkYXRhKFxuXHRwYXRoOiBzdHJpbmdcbik6IFByb21pc2U8RmlsZU1ldGFkYXRhIHwgbnVsbD4ge1xuXHRpZiAoIVBsYXRmb3JtLmlzTWFjT1MpIHJldHVybiBudWxsO1xuXG5cdGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChcblx0XHRBVFRSUy5tYXAoKGF0dHIpID0+IHJlYWRYYXR0cihwYXRoLCBhdHRyVG9YYXR0ck5hbWUoYXR0cikpKVxuXHQpO1xuXG5cdC8vIElmIG5vIHhhdHRycyBmb3VuZCBhdCBhbGwsIHRoaXMgaXNuJ3QgYSBzdWJsaW1hdGVkIGZpbGVcblx0aWYgKHJlc3VsdHMuZXZlcnkoKHIpID0+IHIgPT09IG51bGwpKSByZXR1cm4gbnVsbDtcblxuXHRjb25zdCBtZXRhOiBGaWxlTWV0YWRhdGEgPSB7XG5cdFx0dmVyc2lvbjogbnVsbCwgY29tbWl0OiBudWxsLCB1cmw6IG51bGwsIGNvbnRlbnRIYXNoOiBudWxsLFxuXHRcdGlkOiBudWxsLCBjcmVhdGVkQnk6IG51bGwsIG1vZGlmaWVkQnk6IG51bGwsIG1vZGlmaWVkQnlUeXBlOiBudWxsLFxuXHRcdHN5bmNTdGF0dXM6IG51bGwsIHNwYWNlOiBudWxsLCBicmFuY2g6IG51bGwsIG1vZGlmaWVkQXQ6IG51bGwsIHZpc2liaWxpdHk6IG51bGwsXG5cdH07XG5cdEFUVFJTLmZvckVhY2goKGF0dHIsIGkpID0+IHtcblx0XHRtZXRhW2F0dHJdID0gcmVzdWx0c1tpXTtcblx0fSk7XG5cdHJldHVybiBtZXRhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNNYWNPUygpOiBib29sZWFuIHtcblx0cmV0dXJuIFBsYXRmb3JtLmlzTWFjT1M7XG59XG4iLCAiaW1wb3J0IHsgSXRlbVZpZXcsIE5vdGljZSwgV29ya3NwYWNlTGVhZiB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHR5cGUgU3VibGltYXRlZFBsdWdpbiBmcm9tIFwiLi9tYWluXCI7XG5pbXBvcnQgeyBTdWJsaW1hdGVkQXBpLCB0eXBlIFZlcnNpb24gfSBmcm9tIFwiLi9hcGlcIjtcblxuZXhwb3J0IGNvbnN0IFZFUlNJT05fVklFV19UWVBFID0gXCJzdWJsaW1hdGVkLXZlcnNpb25zXCI7XG5cbmV4cG9ydCBjbGFzcyBWZXJzaW9uVmlldyBleHRlbmRzIEl0ZW1WaWV3IHtcblx0cGx1Z2luOiBTdWJsaW1hdGVkUGx1Z2luO1xuXG5cdGNvbnN0cnVjdG9yKGxlYWY6IFdvcmtzcGFjZUxlYWYsIHBsdWdpbjogU3VibGltYXRlZFBsdWdpbikge1xuXHRcdHN1cGVyKGxlYWYpO1xuXHRcdHRoaXMucGx1Z2luID0gcGx1Z2luO1xuXHR9XG5cblx0Z2V0Vmlld1R5cGUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gVkVSU0lPTl9WSUVXX1RZUEU7XG5cdH1cblxuXHRnZXREaXNwbGF5VGV4dCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiBcInN1YmxpbWF0ZWQgdmVyc2lvbnNcIjtcblx0fVxuXG5cdGdldEljb24oKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gXCJoaXN0b3J5XCI7XG5cdH1cblxuXHRhc3luYyBvbk9wZW4oKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0YXdhaXQgdGhpcy5yZWZyZXNoKCk7XG5cdFx0Ly8gcmVmcmVzaCB3aGVuIGFjdGl2ZSBmaWxlIGNoYW5nZXNcblx0XHR0aGlzLnJlZ2lzdGVyRXZlbnQoXG5cdFx0XHR0aGlzLmFwcC53b3Jrc3BhY2Uub24oXCJhY3RpdmUtbGVhZi1jaGFuZ2VcIiwgKCkgPT4ge1xuXHRcdFx0XHR0aGlzLnJlZnJlc2goKTtcblx0XHRcdH0pXG5cdFx0KTtcblx0fVxuXG5cdGFzeW5jIHJlZnJlc2goKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XG5cdFx0Y29udGVudEVsLmVtcHR5KCk7XG5cdFx0Y29udGVudEVsLmFkZENsYXNzKFwic2JsLXZlcnNpb24tdmlld1wiKTtcblxuXHRcdGNvbnN0IGFjdGl2ZUZpbGUgPSB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlRmlsZSgpO1xuXHRcdGlmICghYWN0aXZlRmlsZSkge1xuXHRcdFx0Y29udGVudEVsLmNyZWF0ZUVsKFwicFwiLCB7XG5cdFx0XHRcdHRleHQ6IFwiTm8gZmlsZSBvcGVuLlwiLFxuXHRcdFx0XHRjbHM6IFwic2JsLXZlcnNpb24tZW1wdHlcIixcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICghdGhpcy5wbHVnaW4uc2V0dGluZ3MuYXBpVG9rZW4pIHtcblx0XHRcdGNvbnRlbnRFbC5jcmVhdGVFbChcInBcIiwge1xuXHRcdFx0XHR0ZXh0OiBcIkFQSSB0b2tlbiByZXF1aXJlZCBmb3IgdmVyc2lvbiBoaXN0b3J5LlwiLFxuXHRcdFx0XHRjbHM6IFwic2JsLXZlcnNpb24tZW1wdHlcIixcblx0XHRcdH0pO1xuXHRcdFx0Y29udGVudEVsLmNyZWF0ZUVsKFwicFwiLCB7XG5cdFx0XHRcdHRleHQ6IFwiQ29uZmlndXJlIGluIFNldHRpbmdzIFx1MjE5MiBzdWJsaW1hdGVkXCIsXG5cdFx0XHRcdGNsczogXCJzYmwtdmVyc2lvbi1oaW50XCIsXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyByZWFkIHhhdHRycyB0byBnZXQgc3BhY2UgKyBpdGVtIElEXG5cdFx0Y29uc3QgbWV0YSA9IHRoaXMucGx1Z2luLmxhc3RNZXRhZGF0YTtcblx0XHRpZiAoIW1ldGE/LnNwYWNlIHx8ICFtZXRhPy5pZCkge1xuXHRcdFx0Y29udGVudEVsLmNyZWF0ZUVsKFwicFwiLCB7XG5cdFx0XHRcdHRleHQ6IFwiTm90IGEgc3VibGltYXRlZCBmaWxlLlwiLFxuXHRcdFx0XHRjbHM6IFwic2JsLXZlcnNpb24tZW1wdHlcIixcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnRlbnRFbC5jcmVhdGVFbChcImg0XCIsIHtcblx0XHRcdHRleHQ6IGFjdGl2ZUZpbGUubmFtZSxcblx0XHRcdGNsczogXCJzYmwtdmVyc2lvbi1maWxlbmFtZVwiLFxuXHRcdH0pO1xuXG5cdFx0Y29uc3QgbG9hZGluZyA9IGNvbnRlbnRFbC5jcmVhdGVFbChcInBcIiwge1xuXHRcdFx0dGV4dDogXCJMb2FkaW5nIHZlcnNpb25zLi4uXCIsXG5cdFx0XHRjbHM6IFwic2JsLXZlcnNpb24tbG9hZGluZ1wiLFxuXHRcdH0pO1xuXG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGFwaSA9IG5ldyBTdWJsaW1hdGVkQXBpKHRoaXMucGx1Z2luLnNldHRpbmdzLmFwaVRva2VuKTtcblx0XHRcdGNvbnN0IHZlcnNpb25zID0gYXdhaXQgYXBpLmdldFZlcnNpb25zKG1ldGEuc3BhY2UsIG1ldGEuaWQpO1xuXHRcdFx0bG9hZGluZy5yZW1vdmUoKTtcblxuXHRcdFx0aWYgKHZlcnNpb25zLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRjb250ZW50RWwuY3JlYXRlRWwoXCJwXCIsIHtcblx0XHRcdFx0XHR0ZXh0OiBcIk5vIHZlcnNpb25zIGZvdW5kLlwiLFxuXHRcdFx0XHRcdGNsczogXCJzYmwtdmVyc2lvbi1lbXB0eVwiLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBsaXN0ID0gY29udGVudEVsLmNyZWF0ZUVsKFwiZGl2XCIsIHtcblx0XHRcdFx0Y2xzOiBcInNibC12ZXJzaW9uLWxpc3RcIixcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3QgZ3JvdXBzID0gZ3JvdXBCeURheSh2ZXJzaW9ucyk7XG5cdFx0XHRmb3IgKGNvbnN0IGdyb3VwIG9mIGdyb3Vwcykge1xuXHRcdFx0XHRsaXN0LmNyZWF0ZUVsKFwiZGl2XCIsIHtcblx0XHRcdFx0XHR0ZXh0OiBncm91cC5sYWJlbCxcblx0XHRcdFx0XHRjbHM6IFwic2JsLXZlcnNpb24tZGF5XCIsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmb3IgKGNvbnN0IHYgb2YgZ3JvdXAudmVyc2lvbnMpIHtcblx0XHRcdFx0XHR0aGlzLnJlbmRlclZlcnNpb24obGlzdCwgdiwgbWV0YS51cmwpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0bG9hZGluZy5yZW1vdmUoKTtcblx0XHRcdGNvbnRlbnRFbC5jcmVhdGVFbChcInBcIiwge1xuXHRcdFx0XHR0ZXh0OiBgRXJyb3I6ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogXCJVbmtub3duXCJ9YCxcblx0XHRcdFx0Y2xzOiBcInNibC12ZXJzaW9uLWVycm9yXCIsXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHJlbmRlclZlcnNpb24oXG5cdFx0Y29udGFpbmVyOiBIVE1MRWxlbWVudCxcblx0XHR2OiBWZXJzaW9uLFxuXHRcdGZpbGVVcmw6IHN0cmluZyB8IG51bGxcblx0KTogdm9pZCB7XG5cdFx0Y29uc3QgaXRlbSA9IGNvbnRhaW5lci5jcmVhdGVEaXYoeyBjbHM6IFwic2JsLXZlcnNpb24taXRlbVwiIH0pO1xuXG5cdFx0Y29uc3QgaGVhZGVyID0gaXRlbS5jcmVhdGVEaXYoeyBjbHM6IFwic2JsLXZlcnNpb24taGVhZGVyXCIgfSk7XG5cdFx0aGVhZGVyLmNyZWF0ZUVsKFwic3BhblwiLCB7XG5cdFx0XHR0ZXh0OiBgdiR7di5udW1iZXJ9YCxcblx0XHRcdGNsczogXCJzYmwtdmVyc2lvbi1udW1iZXJcIixcblx0XHR9KTtcblx0XHRoZWFkZXIuY3JlYXRlRWwoXCJzcGFuXCIsIHtcblx0XHRcdHRleHQ6IHYuYXV0aG9yTmFtZSxcblx0XHRcdGNsczogXCJzYmwtdmVyc2lvbi1hdXRob3JcIixcblx0XHR9KTtcblxuXHRcdGNvbnN0IHRpbWUgPSBpdGVtLmNyZWF0ZURpdih7IGNsczogXCJzYmwtdmVyc2lvbi10aW1lXCIgfSk7XG5cdFx0dGltZS5jcmVhdGVFbChcInNwYW5cIiwge1xuXHRcdFx0dGV4dDogZm9ybWF0UmVsYXRpdmVUaW1lKHYuY3JlYXRlZEF0KSxcblx0XHRcdGF0dHI6IHsgdGl0bGU6IG5ldyBEYXRlKHYuY3JlYXRlZEF0KS50b0xvY2FsZVN0cmluZygpIH0sXG5cdFx0fSk7XG5cblx0XHRpZiAodi5tZXNzYWdlKSB7XG5cdFx0XHRpdGVtLmNyZWF0ZURpdih7XG5cdFx0XHRcdHRleHQ6IHYubWVzc2FnZSxcblx0XHRcdFx0Y2xzOiBcInNibC12ZXJzaW9uLW1lc3NhZ2VcIixcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdGlmIChmaWxlVXJsKSB7XG5cdFx0XHRjb25zdCB3ZWJVcmwgPSBgaHR0cHM6Ly8ke2ZpbGVVcmx9L352ZXJzaW9ucy92JHt2Lm51bWJlcn1gO1xuXHRcdFx0Y29uc3QgbGluayA9IGl0ZW0uY3JlYXRlRWwoXCJhXCIsIHtcblx0XHRcdFx0dGV4dDogXCJ2aWV3IG9uIHdlYlwiLFxuXHRcdFx0XHRjbHM6IFwic2JsLXZlcnNpb24td2ViLWxpbmtcIixcblx0XHRcdFx0aHJlZjogd2ViVXJsLFxuXHRcdFx0fSk7XG5cdFx0XHRsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoZSkgPT4ge1xuXHRcdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdHdpbmRvdy5vcGVuKHdlYlVybCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRhc3luYyBvbkNsb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdC8vIGNsZWFudXAgaGFuZGxlZCBieSBvYnNpZGlhblxuXHR9XG59XG5cbmludGVyZmFjZSBEYXlHcm91cCB7XG5cdGxhYmVsOiBzdHJpbmc7XG5cdHZlcnNpb25zOiBWZXJzaW9uW107XG59XG5cbmZ1bmN0aW9uIGdyb3VwQnlEYXkodmVyc2lvbnM6IFZlcnNpb25bXSk6IERheUdyb3VwW10ge1xuXHRjb25zdCBncm91cHMgPSBuZXcgTWFwPHN0cmluZywgVmVyc2lvbltdPigpO1xuXHRjb25zdCBvcmRlcjogc3RyaW5nW10gPSBbXTtcblxuXHRmb3IgKGNvbnN0IHYgb2YgdmVyc2lvbnMpIHtcblx0XHRjb25zdCBsYWJlbCA9IGZvcm1hdERheUxhYmVsKHYuY3JlYXRlZEF0KTtcblx0XHRpZiAoIWdyb3Vwcy5oYXMobGFiZWwpKSB7XG5cdFx0XHRncm91cHMuc2V0KGxhYmVsLCBbXSk7XG5cdFx0XHRvcmRlci5wdXNoKGxhYmVsKTtcblx0XHR9XG5cdFx0Z3JvdXBzLmdldChsYWJlbCkhLnB1c2godik7XG5cdH1cblxuXHRyZXR1cm4gb3JkZXIubWFwKChsYWJlbCkgPT4gKHtcblx0XHRsYWJlbCxcblx0XHR2ZXJzaW9uczogZ3JvdXBzLmdldChsYWJlbCkhLFxuXHR9KSk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdERheUxhYmVsKGlzbzogc3RyaW5nKTogc3RyaW5nIHtcblx0Y29uc3Qgbm93ID0gbmV3IERhdGUoKTtcblx0Y29uc3QgZGF0ZSA9IG5ldyBEYXRlKGlzbyk7XG5cblx0Y29uc3Qgbm93RGF5ID0gbmV3IERhdGUobm93LmdldEZ1bGxZZWFyKCksIG5vdy5nZXRNb250aCgpLCBub3cuZ2V0RGF0ZSgpKTtcblx0Y29uc3QgdGhlbkRheSA9IG5ldyBEYXRlKFxuXHRcdGRhdGUuZ2V0RnVsbFllYXIoKSxcblx0XHRkYXRlLmdldE1vbnRoKCksXG5cdFx0ZGF0ZS5nZXREYXRlKClcblx0KTtcblx0Y29uc3QgZGF5cyA9IE1hdGgucm91bmQoXG5cdFx0KG5vd0RheS5nZXRUaW1lKCkgLSB0aGVuRGF5LmdldFRpbWUoKSkgLyAoMTAwMCAqIDYwICogNjAgKiAyNClcblx0KTtcblxuXHRpZiAoZGF5cyA9PT0gMCkgcmV0dXJuIFwiVG9kYXlcIjtcblx0aWYgKGRheXMgPT09IDEpIHJldHVybiBcIlllc3RlcmRheVwiO1xuXHRpZiAoZGF5cyA8IDcpIHJldHVybiBgJHtkYXlzfSBkYXlzIGFnb2A7XG5cdHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyhcImVuLVVTXCIsIHtcblx0XHRtb250aDogXCJzaG9ydFwiLFxuXHRcdGRheTogXCJudW1lcmljXCIsXG5cdH0pO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRSZWxhdGl2ZVRpbWUoaXNvOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXHRjb25zdCB0aGVuID0gbmV3IERhdGUoaXNvKS5nZXRUaW1lKCk7XG5cdGNvbnN0IGRpZmYgPSBub3cgLSB0aGVuO1xuXHRjb25zdCBzZWNvbmRzID0gTWF0aC5mbG9vcihkaWZmIC8gMTAwMCk7XG5cdGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKHNlY29uZHMgLyA2MCk7XG5cdGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcihtaW51dGVzIC8gNjApO1xuXHRjb25zdCBkYXlzID0gTWF0aC5mbG9vcihob3VycyAvIDI0KTtcblxuXHRpZiAoZGF5cyA+IDMwKSByZXR1cm4gbmV3IERhdGUoaXNvKS50b0xvY2FsZURhdGVTdHJpbmcoKTtcblx0aWYgKGRheXMgPiAwKSByZXR1cm4gYCR7ZGF5c31kIGFnb2A7XG5cdGlmIChob3VycyA+IDApIHJldHVybiBgJHtob3Vyc31oIGFnb2A7XG5cdGlmIChtaW51dGVzID4gMCkgcmV0dXJuIGAke21pbnV0ZXN9bSBhZ29gO1xuXHRyZXR1cm4gXCJqdXN0IG5vd1wiO1xufVxuIiwgImltcG9ydCB7IEFwcCwgTW9kYWwgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuZXhwb3J0IGNsYXNzIFdlbGNvbWVNb2RhbCBleHRlbmRzIE1vZGFsIHtcblx0Y29uc3RydWN0b3IoYXBwOiBBcHApIHtcblx0XHRzdXBlcihhcHApO1xuXHR9XG5cblx0b25PcGVuKCk6IHZvaWQge1xuXHRcdGNvbnN0IHsgY29udGVudEVsIH0gPSB0aGlzO1xuXHRcdGNvbnRlbnRFbC5hZGRDbGFzcyhcInNibC13ZWxjb21lLW1vZGFsXCIpO1xuXG5cdFx0Y29udGVudEVsLmNyZWF0ZUVsKFwiaDJcIiwgeyB0ZXh0OiBcIldlbGNvbWUgdG8gc3VibGltYXRlZFwiIH0pO1xuXG5cdFx0Y29udGVudEVsLmNyZWF0ZUVsKFwicFwiLCB7XG5cdFx0XHR0ZXh0OiBcInN1YmxpbWF0ZWQgc3luY3MgeW91ciBmaWxlcyB3aXRoIHZlcnNpb24gaGlzdG9yeSwgY29sbGFib3JhdGlvbiwgYW5kIGEgd2ViIHZpZXdlciBcdTIwMTQgYWxsIHBvd2VyZWQgYnkgZ2l0IHVuZGVyIHRoZSBob29kLlwiLFxuXHRcdH0pO1xuXG5cdFx0Y29uc3Qgc3RlcHMgPSBjb250ZW50RWwuY3JlYXRlRWwoXCJkaXZcIiwgeyBjbHM6IFwic2JsLXdlbGNvbWUtc3RlcHNcIiB9KTtcblxuXHRcdGNvbnN0IHN0ZXAxID0gc3RlcHMuY3JlYXRlRGl2KHsgY2xzOiBcInNibC13ZWxjb21lLXN0ZXBcIiB9KTtcblx0XHRzdGVwMS5jcmVhdGVFbChcInN0cm9uZ1wiLCB7IHRleHQ6IFwiMS4gT3BlbiB5b3VyIHZhdWx0IGZyb20gc3VibGltYXRlZFwiIH0pO1xuXHRcdHN0ZXAxLmNyZWF0ZUVsKFwicFwiLCB7XG5cdFx0XHR0ZXh0OiBcIkluIEZpbmRlciwgb3BlbiB5b3VyIHN1YmxpbWF0ZWQgZm9sZGVyICh1bmRlciBDbG91ZFN0b3JhZ2UpIGFzIGFuIE9ic2lkaWFuIHZhdWx0LiBUaGUgcGx1Z2luIGRldGVjdHMgdGhlIC5zYmwvIGZvbGRlciBhdXRvbWF0aWNhbGx5LlwiLFxuXHRcdH0pO1xuXG5cdFx0Y29uc3Qgc3RlcDIgPSBzdGVwcy5jcmVhdGVEaXYoeyBjbHM6IFwic2JsLXdlbGNvbWUtc3RlcFwiIH0pO1xuXHRcdHN0ZXAyLmNyZWF0ZUVsKFwic3Ryb25nXCIsIHsgdGV4dDogXCIyLiBTdGF0dXMgYmFyIHNob3dzIHN5bmMgaW5mb1wiIH0pO1xuXHRcdHN0ZXAyLmNyZWF0ZUVsKFwicFwiLCB7XG5cdFx0XHR0ZXh0OiBcIlRoZSBib3R0b20gYmFyIHNob3dzIHZlcnNpb24gbnVtYmVyLCBzeW5jIHN0YXR1cywgYW5kIGF1dGhvciBmb3IgdGhlIGN1cnJlbnQgZmlsZSBcdTIwMTQgYWxsIHJlYWQgZnJvbSBsb2NhbCBmaWxlIG1ldGFkYXRhLCBubyBhY2NvdW50IG5lZWRlZC5cIixcblx0XHR9KTtcblxuXHRcdGNvbnN0IHN0ZXAzID0gc3RlcHMuY3JlYXRlRGl2KHsgY2xzOiBcInNibC13ZWxjb21lLXN0ZXBcIiB9KTtcblx0XHRzdGVwMy5jcmVhdGVFbChcInN0cm9uZ1wiLCB7IHRleHQ6IFwiMy4gQWRkIGFuIEFQSSB0b2tlbiBmb3IgdmVyc2lvbiBoaXN0b3J5XCIgfSk7XG5cdFx0c3RlcDMuY3JlYXRlRWwoXCJwXCIsIHtcblx0XHRcdHRleHQ6IFwiVG8gYnJvd3NlIHBhc3QgdmVyc2lvbnMsIGFkZCB5b3VyIEFQSSB0b2tlbiBpbiBTZXR0aW5ncyBcdTIxOTIgc3VibGltYXRlZC4gR2VuZXJhdGUgb25lIGF0IHN1YmxpbWF0ZWQuY29tL3NldHRpbmdzL3Rva2Vucy5cIixcblx0XHR9KTtcblxuXHRcdGNvbnN0IGxpbmtzID0gY29udGVudEVsLmNyZWF0ZURpdih7IGNsczogXCJzYmwtd2VsY29tZS1saW5rc1wiIH0pO1xuXHRcdGxpbmtzLmNyZWF0ZUVsKFwiYVwiLCB7XG5cdFx0XHR0ZXh0OiBcIkxlYXJuIG1vcmUgYXQgc3VibGltYXRlZC5jb21cIixcblx0XHRcdGhyZWY6IFwiaHR0cHM6Ly9zdWJsaW1hdGVkLmNvbVwiLFxuXHRcdH0pO1xuXHRcdGxpbmtzLmNyZWF0ZUVsKFwiYnJcIik7XG5cdFx0bGlua3MuY3JlYXRlRWwoXCJhXCIsIHtcblx0XHRcdHRleHQ6IFwiRG9jdW1lbnRhdGlvblwiLFxuXHRcdFx0aHJlZjogXCJodHRwczovL3N1YmxpbWF0ZWQuY29tL2RvY3Mvb2JzaWRpYW5cIixcblx0XHR9KTtcblxuXHRcdGNvbnN0IGZvb3RlciA9IGNvbnRlbnRFbC5jcmVhdGVEaXYoeyBjbHM6IFwic2JsLXdlbGNvbWUtZm9vdGVyXCIgfSk7XG5cdFx0Zm9vdGVyLmNyZWF0ZUVsKFwiYnV0dG9uXCIsIHtcblx0XHRcdHRleHQ6IFwiR2V0IHN0YXJ0ZWRcIixcblx0XHRcdGNsczogXCJtb2QtY3RhXCIsXG5cdFx0fSkuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHRoaXMuY2xvc2UoKSk7XG5cdH1cblxuXHRvbkNsb3NlKCk6IHZvaWQge1xuXHRcdHRoaXMuY29udGVudEVsLmVtcHR5KCk7XG5cdH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUEsbUJBS087OztBQ0xQLElBQUFDLG1CQUF1RDs7O0FDQXZELHNCQUEyQjtBQUUzQixJQUFNLFdBQVc7QUFzQlYsSUFBTSxnQkFBTixNQUFvQjtBQUFBLEVBQzFCLFlBQW9CLE9BQWU7QUFBZjtBQUFBLEVBQWdCO0FBQUEsRUFFcEMsTUFBYyxRQUFXLE1BQTBCO0FBQ2xELFVBQU0sV0FBVyxVQUFNLDRCQUFXO0FBQUEsTUFDakMsS0FBSyxHQUFHLFFBQVEsR0FBRyxJQUFJO0FBQUEsTUFDdkIsU0FBUztBQUFBLFFBQ1IsZUFBZSxVQUFVLEtBQUssS0FBSztBQUFBLFFBQ25DLFFBQVE7QUFBQSxNQUNUO0FBQUEsSUFDRCxDQUFDO0FBRUQsUUFBSSxTQUFTLFVBQVUsS0FBSztBQUMzQixZQUFNLElBQUk7QUFBQSxRQUNULGFBQWEsU0FBUyxNQUFNLEtBQUssU0FBUyxJQUFJO0FBQUEsTUFDL0M7QUFBQSxJQUNEO0FBRUEsV0FBTyxTQUFTO0FBQUEsRUFDakI7QUFBQSxFQUVBLE1BQU0sWUFDTCxXQUNBLFFBQ3FCO0FBQ3JCLFVBQU0sT0FBTyxNQUFNLEtBQUs7QUFBQSxNQUN2QixjQUFjLG1CQUFtQixTQUFTLENBQUMsVUFBVSxtQkFBbUIsTUFBTSxDQUFDO0FBQUEsSUFDaEY7QUFDQSxXQUFPLEtBQUs7QUFBQSxFQUNiO0FBQUEsRUFFQSxNQUFNLGlCQUFnRDtBQUNyRCxRQUFJ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QSxFQUNuQztBQUFBLEVBRVEsVUFBVSxRQUFzQztBQUN2RCxVQUFNLEVBQUUsUUFBUSxLQUFLLElBQUk7QUFFekIsUUFBSSxXQUFXLFVBQVUsTUFBTTtBQUM5QixZQUFNLGlCQUFhLGdDQUFjLElBQUk7QUFDckMsWUFBTSxXQUFXLEtBQUssSUFBSSxNQUFNLHNCQUFzQixVQUFVO0FBQ2hFLFVBQUksVUFBVTtBQUNiLGFBQUssSUFBSSxVQUFVLGFBQWEsWUFBWSxJQUFJLEtBQUs7QUFBQSxNQUN0RCxPQUFPO0FBQ04sWUFBSSx3QkFBTyxtQkFBbUIsSUFBSSxFQUFFO0FBQUEsTUFDckM7QUFDQTtBQUFBLElBQ0Q7QUFFQSxRQUFJLFdBQVcsVUFBVSxPQUFPLE9BQU87QUFFdEMsV0FBSyxTQUFTLFdBQVcsT0FBTztBQUNoQyxXQUFLLGFBQWE7QUFDbEIsVUFBSSx3QkFBTyxvQ0FBb0M7QUFDL0M7QUFBQSxJQUNEO0FBRUEsUUFBSSx3QkFBTyw4QkFBOEIsTUFBTSxFQUFFO0FBQUEsRUFDbEQ7QUFDRDtBQUVBLFNBQVMsZUFBZSxRQUF3QjtBQUMvQyxVQUFRLFFBQVE7QUFBQSxJQUNmLEtBQUs7QUFDSixhQUFPO0FBQUEsSUFDUixLQUFLO0FBQ0osYUFBTztBQUFBLElBQ1IsS0FBSztBQUNKLGFBQU87QUFBQSxJQUNSLEtBQUs7QUFDSixhQUFPO0FBQUEsSUFDUixLQUFLO0FBQ0osYUFBTztBQUFBLElBQ1I7QUFDQyxhQUFPO0FBQUEsRUFDVDtBQUNEO0FBRUEsU0FBUyxlQUFlLFlBQTRCO0FBQ25ELFVBQVEsWUFBWTtBQUFBLElBQ25CLEtBQUs7QUFDSixhQUFPO0FBQUEsSUFDUixLQUFLO0FBQ0osYUFBTztBQUFBLElBQ1IsS0FBSztBQUNKLGFBQU87QUFBQSxJQUNSO0FBQ0MsYUFBTztBQUFBLEVBQ1Q7QUFDRDsiLAogICJuYW1lcyI6IFsiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiJdCn0K