172 lines
408 KiB
JavaScript
172 lines
408 KiB
JavaScript
/*
|
|
* ATTENTION: An "eval-source-map" devtool has been used.
|
|
* This devtool is neither made for production nor for readable output files.
|
|
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
|
|
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
|
* or disable the default devtool with "devtool: false".
|
|
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
|
*/
|
|
/******/ (() => { // webpackBootstrap
|
|
/******/ var __webpack_modules__ = ({
|
|
|
|
/***/ "./resources/js/app.js":
|
|
/*!*****************************!*\
|
|
!*** ./resources/js/app.js ***!
|
|
\*****************************/
|
|
/***/ (() => {
|
|
|
|
eval("function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n//require('./bootstrap');\n; /// files: roblox.js, jquery.json-2.2.js, jquery.simplemodal-1.3.5.js, jquery.tipsy.js, AjaxAvatarThumbnail.js, extensions/string.js, StringTruncator.min.js, json2.min.js, webkit.js, GoogleAnalytics/GoogleAnalyticsEvents.js, MasterPageUI.js, jquery.cookie.js, jquery.jsoncookie.js, XsrfToken.js, RobloxEventManager.js, RobloxEventListener.js, KontagentEventListener.js, GoogleEventListener.js, MongoEventListener.js, SearchVisionListener.js, SiteTouchEvent.js, JSErrorTracker.js, Studio2Alert.js, ClientInstaller.js, InstallationInstructions.js, MadStatus.js, PlaceLauncher.js, VideoPreRoll.js\n\n; /// roblox.js\n\n(function (n, t) {\n function p(n, i) {\n var r = i.split(\".\");\n\n for (i = r.shift(); r.length > 0; n = n[i], i = r.shift()) {\n if (n[i] === t) return t;\n }\n\n return n[i];\n }\n\n function k(n, i, r) {\n var u = i.split(\".\");\n\n for (i = u.shift(); u.length > 0; n = n[i], i = u.shift()) {\n n[i] === t && (n[i] = {});\n }\n\n n[i] = r;\n }\n\n function nt(n, t) {\n var i = f.createElement(\"link\");\n i.href = n, i.rel = \"stylesheet\", i.type = \"text/css\", u.parentNode.insertBefore(i, u), t();\n }\n\n function g(n, t) {\n var i = f.createElement(\"script\");\n i.type = \"text/javascript\", i.src = n, i.onload = i.onreadystatechange = function () {\n i.readyState && i.readyState != \"loaded\" && i.readyState != \"complete\" || (t(), i.onload = i.onreadystatechange = null);\n }, u.parentNode.insertBefore(i, u);\n }\n\n function d(n) {\n return n.split(\".\").pop().split(\"?\").shift();\n }\n\n function o(n) {\n return n.indexOf(\".js\") < 0 ? n : n.indexOf(r.modulePath) >= 0 ? n.split(r.modulePath).pop().split(\".js\").shift().replace(\"/\", \".\") : n;\n }\n\n function v(n) {\n var t, i;\n return t = n.indexOf(\".js\") >= 0 || n.indexOf(\".css\") >= 0 ? n : r.baseUrl + r.modulePath + n.replace(\".\", \"/\") + \".js\", i = r.versions[t] || 1, t + \"?v=\" + i;\n }\n\n function s(n) {\n for (var r, u = [], i = 0; i < n.length; i++) {\n r = p(Roblox, o(n[i])), r !== t && u.push(r);\n }\n\n return u;\n }\n\n function e(n) {\n var t = i[n];\n if (t.loaded && t.depsLoaded) while (t.listeners.length > 0) {\n t.listeners.shift()();\n }\n }\n\n function a(n, u) {\n var f, s, h;\n if (!b(n) || r.externalResources.toString().indexOf(n) >= 0) return u();\n f = o(n), i[f] === t ? (i[f] = {\n loaded: !1,\n depsLoaded: !0,\n listeners: []\n }, i[f].listeners.push(u), s = v(f), h = d(s) == \"css\" ? nt : g, h(s, function () {\n i[f].loaded = !0, e(f);\n })) : (i[f].listeners.push(u), e(f));\n }\n\n function h(n, t) {\n var r = n.shift(),\n i = n.length == 0 ? t : function () {\n h(n, t);\n };\n a(r, i);\n }\n\n function l(n, t) {\n c(n) || (n = [n]);\n\n var i = function i() {\n t.apply(null, s(n));\n };\n\n h(n.slice(0), i);\n }\n\n function y(n, t, r) {\n w(t) ? (r = t, t = []) : c(t) || (t = [t]), i[n] = i[n] || {\n loaded: !0,\n listeners: []\n }, i[n].depsLoaded = !1, i[n].listeners.unshift(function () {\n k(Roblox, n, r.apply(null, s(t)));\n }), l(t, function () {\n i[n].depsLoaded = !0, e(n);\n });\n }\n\n var f = n.document,\n u = f.getElementsByTagName(\"script\")[0],\n b = function b(n) {\n return typeof n == \"string\";\n },\n c = function c(n) {\n return Object.prototype.toString.call(n) == \"[object Array]\";\n },\n w = function w(n) {\n return Object.prototype.toString.call(n) == \"[object Function]\";\n },\n i = {},\n r = {\n baseUrl: \"/\",\n modulePath: \"js/modules/\",\n versions: {},\n externalResources: []\n };\n\n typeof Roblox == \"undefined\" && (Roblox = {}), Roblox.config = r, Roblox.require = l, Roblox.define = y;\n})(window);\n\n; /// jquery.json-2.2.js\n\n(function (n) {\n n.toJSON = function (t) {\n var s, o, p, h, f, e, r, v, c, a, u, l, i, y;\n if (_typeof(JSON) == \"object\" && JSON.stringify) return JSON.stringify(t);\n if (i = _typeof(t), t === null) return \"null\";\n if (i == \"undefined\") return undefined;\n if (i == \"number\" || i == \"boolean\") return t + \"\";\n if (i == \"string\") return n.quoteString(t);\n\n if (i == \"object\") {\n if (typeof t.toJSON == \"function\") return n.toJSON(t.toJSON());\n if (t.constructor === Date) return s = t.getUTCMonth() + 1, s < 10 && (s = \"0\" + s), o = t.getUTCDate(), o < 10 && (o = \"0\" + o), p = t.getUTCFullYear(), h = t.getUTCHours(), h < 10 && (h = \"0\" + h), f = t.getUTCMinutes(), f < 10 && (f = \"0\" + f), e = t.getUTCSeconds(), e < 10 && (e = \"0\" + e), r = t.getUTCMilliseconds(), r < 100 && (r = \"0\" + r), r < 10 && (r = \"0\" + r), '\"' + p + \"-\" + s + \"-\" + o + \"T\" + h + \":\" + f + \":\" + e + \".\" + r + 'Z\"';\n\n if (t.constructor === Array) {\n for (v = [], c = 0; c < t.length; c++) {\n v.push(n.toJSON(t[c]) || \"null\");\n }\n\n return \"[\" + v.join(\",\") + \"]\";\n }\n\n a = [];\n\n for (u in t) {\n if (i = _typeof(u), i == \"number\") l = '\"' + u + '\"';else if (i == \"string\") l = n.quoteString(u);else continue;\n typeof t[u] != \"function\" && (y = n.toJSON(t[u]), a.push(l + \":\" + y));\n }\n\n return \"{\" + a.join(\", \") + \"}\";\n }\n }, n.evalJSON = function (n) {\n return _typeof(JSON) == \"object\" && JSON.parse ? JSON.parse(n) : eval(\"(\" + n + \")\");\n }, n.secureEvalJSON = function (n) {\n if (_typeof(JSON) == \"object\" && JSON.parse) return JSON.parse(n);\n var t = n;\n if (t = t.replace(/\\\\[\"\\\\\\/bfnrtu]/g, \"@\"), t = t.replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, \"]\"), t = t.replace(/(?:^|:|,)(?:\\s*\\[)+/g, \"\"), /^[\\],:{}\\s]*$/.test(t)) return eval(\"(\" + n + \")\");\n throw new SyntaxError(\"Error parsing JSON, source is not valid.\");\n }, n.quoteString = function (n) {\n return n.match(t) ? '\"' + n.replace(t, function (n) {\n var t = i[n];\n return typeof t == \"string\" ? t : (t = n.charCodeAt(), \"\\\\u00\" + Math.floor(t / 16).toString(16) + (t % 16).toString(16));\n }) + '\"' : '\"' + n + '\"';\n };\n var t = /[\"\\\\\\x00-\\x1f\\x7f-\\x9f]/g,\n i = {\n \"\\b\": \"\\\\b\",\n \"\\t\": \"\\\\t\",\n \"\\n\": \"\\\\n\",\n \"\\f\": \"\\\\f\",\n \"\\r\": \"\\\\r\",\n '\"': '\\\\\"',\n \"\\\\\": \"\\\\\\\\\"\n };\n})(jQuery);\n\n; /// jquery.simplemodal-1.3.5.js\n\n(function (n) {\n var i = n.browser.msie && parseInt(n.browser.version) == 6 && _typeof(window.XMLHttpRequest) != \"object\",\n r = !1,\n t = [];\n n.modal = function (t, i) {\n return n.modal.impl.init(t, i);\n }, n.modal.close = function () {\n n.modal.impl.close();\n }, n.fn.modal = function (t) {\n return n.modal.impl.init(this, t);\n }, n.modal.defaults = {\n appendTo: \"body\",\n focus: !0,\n opacity: 50,\n overlayId: \"simplemodal-overlay\",\n overlayCss: {},\n containerId: \"simplemodal-container\",\n containerCss: {},\n dataId: \"simplemodal-data\",\n dataCss: {},\n minHeight: null,\n minWidth: null,\n maxHeight: null,\n maxWidth: null,\n autoResize: !1,\n autoPosition: !0,\n zIndex: 1e3,\n close: !0,\n closeHTML: '<a class=\"modalCloseImg\" title=\"Close\"></a>',\n closeClass: \"simplemodal-close\",\n escClose: !0,\n overlayClose: !1,\n position: null,\n persist: !1,\n modal: !0,\n onOpen: null,\n onShow: null,\n onClose: null\n }, n.modal.impl = {\n o: null,\n d: {},\n init: function init(t, i) {\n var r = this;\n if (r.d.data) return !1;\n if (r.o = n.extend({}, n.modal.defaults, i), r.zIndex = r.o.zIndex, r.occb = !1, _typeof(t) == \"object\") t = t instanceof jQuery ? t : n(t), r.d.placeholder = !1, t.parent().parent().size() > 0 && (t.before(n(\"<span></span>\").attr(\"id\", \"simplemodal-placeholder\").css({\n display: \"none\"\n })), r.d.placeholder = !0, r.display = t.css(\"display\"), r.o.persist || (r.d.orig = t.clone(!0)));else if (typeof t == \"string\" || typeof t == \"number\") t = n(\"<div></div>\").html(t);else return alert(\"SimpleModal Error: Unsupported data type: \" + _typeof(t)), r;\n return r.create(t), t = null, r.open(), n.isFunction(r.o.onShow) && r.o.onShow.apply(r, [r.d]), r;\n },\n create: function create(r) {\n var u = this;\n t = u.getDimensions(), u.o.modal && i && (u.d.iframe = n('<iframe src=\"javascript:false;\"></iframe>').css(n.extend(u.o.iframeCss, {\n display: \"none\",\n opacity: 0,\n position: \"fixed\",\n height: t[0],\n width: t[1],\n zIndex: u.o.zIndex,\n top: 0,\n left: 0\n })).appendTo(u.o.appendTo)), u.d.overlay = n(\"<div></div>\").attr(\"id\", u.o.overlayId).addClass(\"simplemodal-overlay\").css(n.extend(u.o.overlayCss, {\n display: \"none\",\n opacity: u.o.opacity / 100,\n height: u.o.modal ? t[0] : 0,\n width: u.o.modal ? t[1] : 0,\n position: \"fixed\",\n left: 0,\n top: 0,\n zIndex: u.o.zIndex + 1\n })).appendTo(u.o.appendTo), u.d.container = n(\"<div></div>\").attr(\"id\", u.o.containerId).addClass(\"simplemodal-container\").css(n.extend(u.o.containerCss, {\n display: \"none\",\n position: \"fixed\",\n zIndex: u.o.zIndex + 2\n })).append(u.o.close && u.o.closeHTML ? n(u.o.closeHTML).addClass(u.o.closeClass) : \"\").appendTo(u.o.appendTo), u.d.wrap = n(\"<div></div>\").attr(\"tabIndex\", -1).addClass(\"simplemodal-wrap\").css({\n height: \"100%\",\n outline: 0,\n width: \"100%\",\n overflow: \"visible\"\n }).appendTo(u.d.container), u.d.data = r.attr(\"id\", r.attr(\"id\") || u.o.dataId).addClass(\"simplemodal-data\").css(n.extend(u.o.dataCss, {\n display: \"none\"\n })).appendTo(\"body\"), r = null, u.setContainerDimensions(), u.d.data.appendTo(u.d.wrap), i && u.fixIE();\n },\n bindEvents: function bindEvents() {\n var r = this;\n n(\".\" + r.o.closeClass).bind(\"click.simplemodal\", function (n) {\n n.preventDefault(), r.close();\n }), r.o.modal && r.o.close && r.o.overlayClose && r.d.overlay.bind(\"click.simplemodal\", function (n) {\n n.preventDefault(), r.close();\n }), n(document).bind(\"keydown.simplemodal\", function (n) {\n r.o.modal && r.o.focus && n.keyCode == 9 ? r.watchTab(n) : r.o.close && r.o.escClose && n.keyCode == 27 && (n.preventDefault(), r.close());\n }), n(window).bind(\"resize.simplemodal\", function () {\n t = r.getDimensions(), r.setContainerDimensions(!0), i ? r.fixIE() : r.o.modal && (r.d.iframe && r.d.iframe.css({\n height: t[0],\n width: t[1]\n }), r.d.overlay.css({\n height: t[0],\n width: t[1]\n }));\n });\n },\n unbindEvents: function unbindEvents() {\n n(\".\" + this.o.closeClass).unbind(\"click.simplemodal\"), n(document).unbind(\"keydown.simplemodal\"), n(window).unbind(\"resize.simplemodal\"), this.d.overlay.unbind(\"click.simplemodal\");\n },\n fixIE: function fixIE() {\n var i = this,\n t = i.o.position;\n n.each([i.d.iframe || null, i.o.modal ? i.d.overlay : null, i.d.container], function (n, i) {\n var l, c, o, e;\n\n if (i) {\n var s = \"document.body.clientHeight\",\n h = \"document.body.clientWidth\",\n b = \"document.body.scrollHeight\",\n a = \"document.body.scrollLeft\",\n v = \"document.body.scrollTop\",\n p = \"document.body.scrollWidth\",\n y = \"document.documentElement.clientHeight\",\n w = \"document.documentElement.clientWidth\",\n u = \"document.documentElement.scrollLeft\",\n f = \"document.documentElement.scrollTop\",\n r = i[0].style;\n r.position = \"absolute\", n < 2 ? (r.removeExpression(\"height\"), r.removeExpression(\"width\"), r.setExpression(\"height\", \"\" + b + \" > \" + s + \" ? \" + b + \" : \" + s + ' + \"px\"'), r.setExpression(\"width\", \"\" + p + \" > \" + h + \" ? \" + p + \" : \" + h + ' + \"px\"')) : (t && t.constructor == Array ? (o = t[0] ? typeof t[0] == \"number\" ? t[0].toString() : t[0].replace(/px/, \"\") : i.css(\"top\").replace(/px/, \"\"), l = o.indexOf(\"%\") == -1 ? o + \" + (t = \" + f + \" ? \" + f + \" : \" + v + ') + \"px\"' : parseInt(o.replace(/%/, \"\")) + \" * ((\" + y + \" || \" + s + \") / 100) + (t = \" + f + \" ? \" + f + \" : \" + v + ') + \"px\"', t[1] && (e = typeof t[1] == \"number\" ? t[1].toString() : t[1].replace(/px/, \"\"), c = e.indexOf(\"%\") == -1 ? e + \" + (t = \" + u + \" ? \" + u + \" : \" + a + ') + \"px\"' : parseInt(e.replace(/%/, \"\")) + \" * ((\" + w + \" || \" + h + \") / 100) + (t = \" + u + \" ? \" + u + \" : \" + a + ') + \"px\"')) : (l = \"(\" + y + \" || \" + s + \") / 2 - (this.offsetHeight / 2) + (t = \" + f + \" ? \" + f + \" : \" + v + ') + \"px\"', c = \"(\" + w + \" || \" + h + \") / 2 - (this.offsetWidth / 2) + (t = \" + u + \" ? \" + u + \" : \" + a + ') + \"px\"'), r.removeExpression(\"top\"), r.removeExpression(\"left\"), r.setExpression(\"top\", l), r.setExpression(\"left\", c));\n }\n });\n },\n focus: function focus(t) {\n var r = this,\n u = t || \"first\",\n i = n(\":input:enabled:visible:\" + u, r.d.wrap);\n i.length > 0 ? i.focus() : r.d.wrap.focus();\n },\n getDimensions: function getDimensions() {\n var t = n(window),\n i = n.browser.opera && n.browser.version > \"9.5\" && n.fn.jquery <= \"1.2.6\" ? document.documentElement.clientHeight : n.browser.opera && n.browser.version < \"9.5\" && n.fn.jquery > \"1.2.6\" ? window.innerHeight : t.height();\n return [i, t.width()];\n },\n getVal: function getVal(n) {\n return n == \"auto\" ? 0 : n.indexOf(\"%\") > 0 ? n : parseInt(n.replace(/px/, \"\"));\n },\n setContainerDimensions: function setContainerDimensions(i) {\n var r = this;\n\n if (!i || i && r.o.autoResize) {\n var f = n.browser.opera ? r.d.container.height() : r.getVal(r.d.container.css(\"height\")),\n u = n.browser.opera ? r.d.container.width() : r.getVal(r.d.container.css(\"width\")),\n s = r.d.data.outerHeight(!0),\n h = r.d.data.outerWidth(!0),\n e = r.o.maxHeight && r.o.maxHeight < t[0] ? r.o.maxHeight : t[0],\n o = r.o.maxWidth && r.o.maxWidth < t[1] ? r.o.maxWidth : t[1];\n f = f ? f > e ? e : f : s ? s > e ? e : s < r.o.minHeight ? r.o.minHeight : s : r.o.minHeight, u = u ? u > o ? o : u : h ? h > o ? o : h < r.o.minWidth ? r.o.minWidth : h : r.o.minWidth, r.d.container.css({\n height: f,\n width: u\n });\n }\n\n r.o.autoPosition && r.setPosition();\n },\n setPosition: function setPosition() {\n var n = this,\n r,\n i,\n f = t[0] / 2 - n.d.container.outerHeight(!0) / 2,\n u = t[1] / 2 - n.d.container.outerWidth(!0) / 2;\n n.o.position && Object.prototype.toString.call(n.o.position) === \"[object Array]\" ? (r = n.o.position[0] || f, i = n.o.position[1] || u) : (r = f, i = u), n.d.container.css({\n left: i,\n top: r\n });\n },\n watchTab: function watchTab(t) {\n var i = this,\n r;\n n(t.target).parents(\".simplemodal-container\").length > 0 ? (i.inputs = n(\":input:enabled:visible:first, :input:enabled:visible:last\", i.d.data[0]), (!t.shiftKey && t.target == i.inputs[i.inputs.length - 1] || t.shiftKey && t.target == i.inputs[0] || i.inputs.length == 0) && (t.preventDefault(), r = t.shiftKey ? \"last\" : \"first\", setTimeout(function () {\n i.focus(r);\n }, 10))) : (t.preventDefault(), setTimeout(function () {\n i.focus();\n }, 10));\n },\n open: function open() {\n var t = this;\n t.d.iframe && t.d.iframe.show(), n.isFunction(t.o.onOpen) ? t.o.onOpen.apply(t, [t.d]) : (t.d.overlay.show(), t.d.container.show(), t.d.data.show()), t.focus(), t.bindEvents();\n },\n close: function close() {\n var t = this,\n i;\n if (!t.d.data) return !1;\n t.unbindEvents(), n.isFunction(t.o.onClose) && !t.occb ? (t.occb = !0, t.o.onClose.apply(t, [t.d])) : (t.d.placeholder ? (i = n(\"#simplemodal-placeholder\"), t.o.persist ? i.replaceWith(t.d.data.removeClass(\"simplemodal-data\").css(\"display\", t.display)) : (t.d.data.hide().remove(), i.replaceWith(t.d.orig))) : t.d.data.hide().remove(), t.d.container.hide().remove(), t.d.overlay.hide().remove(), t.d.iframe && t.d.iframe.hide().remove(), t.d = {});\n }\n };\n})(jQuery);\n\n; /// jquery.tipsy.js\n\n(function (n) {\n n.fn.tipsy = function (t) {\n return t = n.extend({}, n.fn.tipsy.defaults, t), this.each(function () {\n var i = n.fn.tipsy.elementOptions(this, t);\n n(this).hover(function () {\n var t, e, r;\n n.data(this, \"cancel.tipsy\", !0), t = n.data(this, \"active.tipsy\"), t || (t = n('<div class=\"tipsy\"><div class=\"tipsy-inner\"/></div>'), t.css({\n position: \"absolute\",\n zIndex: 999999\n }), n.data(this, \"active.tipsy\", t)), (n(this).attr(\"title\") || typeof n(this).attr(\"original-title\") != \"string\") && n(this).attr(\"original-title\", n(this).attr(\"title\") || \"\").removeAttr(\"title\"), typeof i.title == \"string\" ? e = n(this).attr(i.title == \"title\" ? \"original-title\" : i.title) : typeof i.title == \"function\" && (e = i.title.call(this)), t.find(\".tipsy-inner\")[i.html ? \"html\" : \"text\"](e || i.fallback), r = n.extend({}, n(this).offset(), {\n width: this.offsetWidth,\n height: this.offsetHeight\n }), t.get(0).className = \"tipsy\", t.remove().css({\n top: 0,\n left: 0,\n visibility: \"hidden\",\n display: \"block\"\n }).appendTo(document.body);\n var f = t[0].offsetWidth,\n u = t[0].offsetHeight,\n o = typeof i.gravity == \"function\" ? i.gravity.call(this) : i.gravity;\n\n switch (o.charAt(0)) {\n case \"n\":\n t.css({\n top: r.top + r.height,\n left: r.left + r.width / 2 - f / 2\n }).addClass(\"tipsy-north\");\n break;\n\n case \"s\":\n t.css({\n top: r.top - u,\n left: r.left + r.width / 2 - f / 2\n }).addClass(\"tipsy-south\");\n break;\n\n case \"e\":\n t.css({\n top: r.top + r.height / 2 - u / 2,\n left: r.left - f\n }).addClass(\"tipsy-east\");\n break;\n\n case \"w\":\n t.css({\n top: r.top + r.height / 2 - u / 2,\n left: r.left + r.width\n }).addClass(\"tipsy-west\");\n }\n\n i.fade ? t.css({\n opacity: 0,\n display: \"block\",\n visibility: \"visible\"\n }).animate({\n opacity: .8\n }) : t.css({\n visibility: \"visible\"\n });\n }, function () {\n n.data(this, \"cancel.tipsy\", !1);\n var t = this;\n setTimeout(function () {\n if (!n.data(this, \"cancel.tipsy\")) {\n var r = n.data(t, \"active.tipsy\");\n i.fade ? r.stop().fadeOut(function () {\n n(this).remove();\n }) : r.remove();\n }\n }, 100);\n });\n });\n }, n.fn.tipsy.elementOptions = function (t, i) {\n return n.metadata ? n.extend({}, i, n(t).metadata()) : i;\n }, n.fn.tipsy.defaults = {\n fade: !1,\n fallback: \"\",\n gravity: \"n\",\n html: !1,\n title: \"title\"\n }, n.fn.tipsy.autoNS = function () {\n return n(this).offset().top > n(document).scrollTop() + n(window).height() / 2 ? \"s\" : \"n\";\n }, n.fn.tipsy.autoWE = function () {\n return n(this).offset().left > n(document).scrollLeft() + n(window).width() / 2 ? \"e\" : \"w\";\n };\n})(jQuery);\n\n; /// AjaxAvatarThumbnail.js\n\nvar RobloxThumbs = function () {\n function n(t, i, r) {\n $.get(\"/thumbs/rawavatar.ashx\", {\n UserID: i,\n ThumbnailFormatID: r\n }, function (u) {\n u == \"PENDING\" ? window.setTimeout(function () {\n n(t, i, r);\n }, 3e3) : u.substring(5, 0) == \"ERROR\" || $(\"#\" + t).attr(\"src\", u);\n });\n }\n\n return {\n GenerateAvatarThumb: function GenerateAvatarThumb(t, i, r) {\n $(\"#\" + t).attr(\"src\", \"/images/spinners/waiting.gif\"), n(t, i, r);\n }\n };\n}();\n\n; /// extensions/string.js\n\n$.extend(String.prototype, function () {\n function n() {\n return this.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n }\n\n return {\n escapeHTML: n\n };\n}());\n; /// StringTruncator.min.js\n\nfunction InitStringTruncator() {\n isInitialized || (fitStringSpan = document.createElement(\"span\"), fitStringSpan.style.display = \"inline\", fitStringSpan.style.visibility = \"hidden\", fitStringSpan.style.padding = \"0px\", document.body.appendChild(fitStringSpan), isInitialized = !0);\n}\n\nfunction fitStringToWidth(n, t, i) {\n function f(n) {\n return n.replace(\"<\", \"<\").replace(\">\", \">\");\n }\n\n if (isInitialized || InitStringTruncator(), i && (fitStringSpan.className = i), i = f(n), fitStringSpan.innerHTML = i, fitStringSpan.offsetWidth > t) {\n for (var i = 0, r, u = n.length; r = u - i >> 1;) {\n r = i + r, fitStringSpan.innerHTML = f(n.substring(0, r)) + \"…\", fitStringSpan.offsetWidth > t ? u = r : i = r;\n }\n\n i = n.substring(0, i) + \"…\";\n }\n\n return i;\n}\n\nfunction fitStringToWidthSafe(n, t, i) {\n return n = fitStringToWidth(n, t, i), n.indexOf(\"…\") != -1 && (t = n.lastIndexOf(\" \"), t != -1 && t + 10 <= n.length && (n = n.substring(0, t + 2) + \"…\")), n;\n}\n\nvar isInitialized = !1,\n fitStringSpan = null;\n; /// json2.min.js\n\nvar JSON;\nJSON || (JSON = {}), function () {\n \"use strict\";\n\n function i(n) {\n return n < 10 ? \"0\" + n : n;\n }\n\n function f(n) {\n return o.lastIndex = 0, o.test(n) ? '\"' + n.replace(o, function (n) {\n var t = s[n];\n return typeof t == \"string\" ? t : \"\\\\u\" + (\"0000\" + n.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' : '\"' + n + '\"';\n }\n\n function r(i, e) {\n var c,\n l,\n h,\n a,\n v = n,\n s,\n o = e[i];\n o && _typeof(o) == \"object\" && typeof o.toJSON == \"function\" && (o = o.toJSON(i)), typeof t == \"function\" && (o = t.call(e, i, o));\n\n switch (_typeof(o)) {\n case \"string\":\n return f(o);\n\n case \"number\":\n return isFinite(o) ? String(o) : \"null\";\n\n case \"boolean\":\n case \"null\":\n return String(o);\n\n case \"object\":\n if (!o) return \"null\";\n\n if (n += u, s = [], Object.prototype.toString.apply(o) === \"[object Array]\") {\n for (a = o.length, c = 0; c < a; c += 1) {\n s[c] = r(c, o) || \"null\";\n }\n\n return h = s.length === 0 ? \"[]\" : n ? \"[\\n\" + n + s.join(\",\\n\" + n) + \"\\n\" + v + \"]\" : \"[\" + s.join(\",\") + \"]\", n = v, h;\n }\n\n if (t && _typeof(t) == \"object\") for (a = t.length, c = 0; c < a; c += 1) {\n l = t[c], typeof l == \"string\" && (h = r(l, o), h && s.push(f(l) + (n ? \": \" : \":\") + h));\n } else for (l in o) {\n Object.hasOwnProperty.call(o, l) && (h = r(l, o), h && s.push(f(l) + (n ? \": \" : \":\") + h));\n }\n return h = s.length === 0 ? \"{}\" : n ? \"{\\n\" + n + s.join(\",\\n\" + n) + \"\\n\" + v + \"}\" : \"{\" + s.join(\",\") + \"}\", n = v, h;\n }\n }\n\n typeof Date.prototype.toJSON != \"function\" && (Date.prototype.toJSON = function () {\n return isFinite(this.valueOf()) ? this.getUTCFullYear() + \"-\" + i(this.getUTCMonth() + 1) + \"-\" + i(this.getUTCDate()) + \"T\" + i(this.getUTCHours()) + \":\" + i(this.getUTCMinutes()) + \":\" + i(this.getUTCSeconds()) + \"Z\" : null;\n }, String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function () {\n return this.valueOf();\n });\n var e = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n o = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n n,\n u,\n s = {\n \"\\b\": \"\\\\b\",\n \"\\t\": \"\\\\t\",\n \"\\n\": \"\\\\n\",\n \"\\f\": \"\\\\f\",\n \"\\r\": \"\\\\r\",\n '\"': '\\\\\"',\n \"\\\\\": \"\\\\\\\\\"\n },\n t;\n typeof JSON.stringify != \"function\" && (JSON.stringify = function (i, f, e) {\n var o;\n if (n = \"\", u = \"\", typeof e == \"number\") for (o = 0; o < e; o += 1) {\n u += \" \";\n } else typeof e == \"string\" && (u = e);\n if (t = f, f && typeof f != \"function\" && (_typeof(f) != \"object\" || typeof f.length != \"number\")) throw new Error(\"JSON.stringify\");\n return r(\"\", {\n \"\": i\n });\n }), typeof JSON.parse != \"function\" && (JSON.parse = function (n, t) {\n function r(n, i) {\n var f,\n e,\n u = n[i];\n if (u && _typeof(u) == \"object\") for (f in u) {\n Object.hasOwnProperty.call(u, f) && (e = r(u, f), e !== undefined ? u[f] = e : delete u[f]);\n }\n return t.call(n, i, u);\n }\n\n var i;\n if (n = String(n), e.lastIndex = 0, e.test(n) && (n = n.replace(e, function (n) {\n return \"\\\\u\" + (\"0000\" + n.charCodeAt(0).toString(16)).slice(-4);\n })), /^[\\],:{}\\s]*$/.test(n.replace(/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g, \"@\").replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, \"]\").replace(/(?:^|:|,)(?:\\s*\\[)+/g, \"\"))) return i = eval(\"(\" + n + \")\"), typeof t == \"function\" ? r({\n \"\": i\n }, \"\") : i;\n throw new SyntaxError(\"JSON.parse\");\n });\n}();\n; /// webkit.js\n\ntypeof Sys.Browser.WebKit == \"undefined\" && (Sys.Browser.WebKit = {}), navigator.userAgent.indexOf(\"WebKit/\") > -1 && (Sys.Browser.agent = Sys.Browser.WebKit, Sys.Browser.version = parseFloat(navigator.userAgent.match(/WebKit\\/(\\d+(\\.\\d+)?)/)[1]), Sys.Browser.name = \"WebKit\");\n; /// GoogleAnalytics/GoogleAnalyticsEvents.js\n\nvar GoogleAnalyticsEvents = new function () {\n this.FireEvent = function (n) {\n if ((typeof _gaq === \"undefined\" ? \"undefined\" : _typeof(_gaq)) != ( true ? \"undefined\" : 0)) {\n var i = [\"_trackEvent\"],\n t = [\"b._trackEvent\"];\n _gaq.push(i.concat(n)), _gaq.push(t.concat(n));\n }\n };\n}();\n; /// MasterPageUI.js\n\n$(function () {\n $(\".tooltip\").tipsy(), $(\".tooltip-top\").tipsy({\n gravity: \"s\"\n }), $(\".tooltip-right\").tipsy({\n gravity: \"w\"\n }), $(\".tooltip-left\").tipsy({\n gravity: \"e\"\n }), $(\".tooltip-bottom\").tipsy({\n gravity: \"n\"\n });\n}), typeof Roblox == \"undefined\" && (Roblox = {}), Roblox.FixedUI = function () {\n function s() {\n if (typeof pageYOffset != \"undefined\") return pageYOffset;\n var t = document.body,\n n = document.documentElement;\n return n = n.clientHeight ? n : t, n.scrollTop;\n }\n\n function e() {\n var n = s();\n t || (t = $(\"iframe.IframeAdHide\")), t.each(function () {\n var t = $(this).offset().top - 73;\n !r.gutterAdsEnabled && n >= t ? $(this).css(\"visibility\", \"hidden\") : $(this).css(\"visibility\", \"visible\");\n });\n }\n\n function i() {\n $(\"#Nav\").css(\"cssText\", \"position: static !important;width:970px !important\"), $(\"#SmallHeaderContainer\").css(\"cssText\", \"position: relative !important;height: 36px !important;width:970px !important\"), $(\".forceSpace\").css(\"cssText\", \"width: 970px !important; height:9px !important;padding-top: 0px !important;background:white\"), $(\"#Container\").css(\"cssText\", \"width: 970px !important\"), $(\".mySubmenuFixed\").css(\"cssText\", \"position: relative; top: 0px;\"), $(\"#MasterContainer\").css(\"cssText\", \"width: 970px !important\"), $(\".mySubmenuFixed\").length == 1 && ($(\".forceSpaceUnderSubmenu\").hide(), $(\".forceSpace\").css(\"cssText\", \"width: 910px !important; height:7px !important;padding-top: 0px !important;\")), $(window).unbind(\"scroll\");\n }\n\n function h() {\n $(\"#Nav\").css(\"cssText\", \"position: fixed !important;width:100% !important\"), $(\"#SmallHeaderContainer\").css(\"cssText\", \"position: fixed !important;height: 40px !important;width:100% !important\"), $(\".forceSpace\").css(\"cssText\", \"width: 100% !important; height:15px !important;padding-top: 62px !important;\"), $(\"#Container\").css(\"cssText\", \"width: 100% !important\"), $(\".mySubmenuFixed\").css(\"cssText\", \"position: fixed; top: 68px;\"), $(\"#MasterContainer\").css(\"cssText\", \"width: 100%\"), $(\".mySubmenuFixed\").length == 1 && $(\".forceSpaceUnderSubmenu\").show(), $(window).scroll(e);\n }\n\n function o() {\n var n = 1024;\n return document.body && document.body.offsetWidth && (n = document.body.offsetWidth), window.innerWidth && window.innerHeight && (n = window.innerWidth), n;\n }\n\n function u() {\n o() < 978 ? i() : h();\n }\n\n var n = navigator.userAgent.toLowerCase(),\n f = /mobile/i.test(n) || /ipad/i.test(n) || /iphone/i.test(n) || /android/i.test(n) || /playbook/i.test(n) || /blackberry/i.test(n),\n t,\n r;\n return $(function () {\n f ? i() : $(window).load(u).resize(u);\n }), t = null, r = {\n isMobile: f,\n gutterAdsEnabled: !1,\n unfixHeader: i\n };\n}();\n; /// jquery.cookie.js\n\njQuery.cookie = function (n, t, i) {\n var o, r, f, e, u, s;\n\n if (typeof t != \"undefined\") {\n i = i || {}, t === null && (t = \"\", i.expires = -1), o = \"\", i.expires && (typeof i.expires == \"number\" || i.expires.toUTCString) && (typeof i.expires == \"number\" ? (r = new Date(), r.setTime(r.getTime() + i.expires * 864e5)) : r = i.expires, o = \"; expires=\" + r.toUTCString());\n var h = i.path ? \"; path=\" + i.path : \"\",\n c = i.domain ? \"; domain=\" + i.domain : \"\",\n l = i.secure ? \"; secure\" : \"\";\n document.cookie = [n, \"=\", encodeURIComponent(t), o, h, c, l].join(\"\");\n } else {\n if (f = null, document.cookie && document.cookie != \"\") for (e = document.cookie.split(\";\"), u = 0; u < e.length; u++) {\n if (s = jQuery.trim(e[u]), s.substring(0, n.length + 1) == n + \"=\") {\n f = decodeURIComponent(s.substring(n.length + 1));\n break;\n }\n }\n return f;\n }\n};\n\n; /// jquery.jsoncookie.js\n\nfunction RobloxJSONCookie(n) {\n this._cookiename = n;\n}\n\n(function (n) {\n var t = function t(n) {\n return _typeof(n) == \"object\" && !(n instanceof Array) && n !== null;\n };\n\n n.extend({\n getJSONCookie: function getJSONCookie(t, i) {\n var r = n.cookie(t);\n return i ? r : r ? JSON.parse(r) : {};\n },\n setJSONCookie: function setJSONCookie(i, r, u) {\n var f = \"\";\n return u = n.extend({\n expires: 90,\n path: \"/\"\n }, u), f = t(r) ? JSON.stringify(r) : r, n.cookie(i, f, u);\n },\n removeJSONCookie: function removeJSONCookie(t) {\n return n.cookie(t, null);\n },\n JSONCookie: function JSONCookie(t, i, r) {\n return i && n.setJSONCookie(t, i, r), n.getJSONCookie(t);\n }\n });\n})(jQuery), RobloxJSONCookie.prototype = {\n Delete: function Delete() {\n return $.removeJSONCookie(this._cookiename);\n },\n SetObj: function SetObj(n, t) {\n return t || (t = {\n path: \"/\"\n }), $.JSONCookie(this._cookiename, n, t);\n },\n SetJSON: function SetJSON(n, t) {\n return t || (t = {\n path: \"/\"\n }), $.JSONCookie(this._cookiename, n, t);\n },\n GetObj: function GetObj() {\n var n = $.getJSONCookie(this._cookiename, !1);\n return n == null ? {} : n;\n },\n GetJSON: function GetJSON() {\n return $.getJSONCookie(this._cookiename, !0);\n }\n};\n; /// XsrfToken.js\n\ntypeof Roblox == \"undefined\" && (Roblox = {}), Roblox.XsrfToken = function () {\n function f(n) {\n var u, t;\n if (i.allUrlsEnabled) return !0;\n\n for (u = n.split(\"?\")[0].toLowerCase(), t = 0; t < r.length; t++) {\n if (r[t] === u) return !0;\n }\n\n return !1;\n }\n\n function e(n) {\n r.push(n.toLowerCase());\n }\n\n function o(t) {\n n = t;\n }\n\n function u() {\n return n;\n }\n\n var n = \"\",\n t = /(^|\\?|&)token=[^&]*/,\n r = [\"/chat/friendhandler.ashx\", \"/chat/party.ashx\", \"/chat/send.ashx\", \"/chat/utility.ashx\", \"/groups/rolesetupdater.ashx\", \"groups.aspx/exileuseranddeleteposts\", \"messageshandler.ashx\", \"emailupgrademe.ashx\", \"/services/usercheck.asmx/updatepersonalinfo\", \"/thumbs/assetmedia/placemediaitemsorthandler.ashx\"],\n i;\n return $.ajaxPrefilter(function (i) {\n var o, e;\n i.dataType != \"jsonp\" && i.dataType != \"script\" && n != \"\" && f(i.url) && (o = $.param({\n token: n\n }), t.test(i.url) || typeof i.data != \"undefined\" && t.test(i.data) || (i.url += /\\?/.test(i.url) ? \"&token=\" + encodeURIComponent(n) : \"?token=\" + encodeURIComponent(n)), e = i.error, i.error = function (r, u, f) {\n if (r.status == 420) {\n var o = r.getResponseHeader(\"Token\");\n\n if (o == null) {\n typeof e == \"function\" && e(r, u, f);\n throw new Error(\"Null token returned by Xsrf enabled handler\");\n }\n\n t.test(i.url) ? i.url = i.url.replace(t, \"$1token=\" + encodeURIComponent(o)) : i.data = i.data.replace(t, \"$1token=\" + encodeURIComponent(o)), $.ajax(i), n = o;\n } else typeof e == \"function\" && e(r, u, f);\n });\n }), i = {\n setToken: o,\n getToken: u,\n allUrlsEnabled: !1,\n addEnabledUrl: e\n };\n}();\n; /// RobloxEventManager.js\n\nfunction RBXBaseEventListener() {\n if (!(this instanceof RBXBaseEventListener)) return new RBXBaseEventListener();\n this.init = function () {\n for (eventKey in this.events) {\n $(document).bind(this.events[eventKey], $.proxy(this.localCopy, this));\n }\n }, this.events = [], this.localCopy = function (n, t) {\n var r = $.extend(!0, {}, n),\n i = $.extend(!0, {}, t);\n this.handleEvent(r, i);\n }, this.distillData = function () {\n return console.log(\"RBXEventListener distillData - Please implement me\"), !1;\n }, this.handleEvent = function () {\n return console.log(\"EventListener handleEvent - Please implement me\"), !1;\n }, this.fireEvent = function () {\n return console.log(\"EventListener fireEvent - Please implement me\"), !1;\n };\n}\n\nRobloxEventManager = new function () {\n function u(n) {\n var i = new RegExp(n + \"=([^;]*)\"),\n t = i.exec(document.cookie);\n return t ? t[1] : null;\n }\n\n function t(n) {\n for (var u = {}, r = n.split(\"&\"), i, t = 0; t < r.length; t++) {\n i = r[t].split(\"=\"), u[i[0]] = i[1];\n }\n\n return u;\n }\n\n function i(n) {\n var i = u(n);\n return i ? t(i) : null;\n }\n\n var n = [],\n r = {};\n this.enabled = !1, this.initialized = !1, this.eventQueue = [], this.initialize = function (n) {\n for (this.initialized = !0, this.enabled = n; this.eventQueue.length > 0;) {\n var t = this.eventQueue.pop();\n this.triggerEvent(t.eventName, t.args);\n }\n }, this.getMarketingGuid = function () {\n var n = i(\"RBXEventTracker\");\n return n != null ? n.browserid : -1;\n }, this.triggerEvent = function (n, t) {\n this.initialized ? this.enabled && (typeof t == \"undefined\" && (t = {}), t.guid = this.getMarketingGuid(), t.guid != -1 && $(document).trigger(n, [t])) : this.eventQueue.push({\n eventName: n,\n args: t\n });\n }, this.registerCookieStoreEvent = function (t) {\n n.push(t);\n }, this.insertDataStoreKeyValuePair = function (n, t) {\n r[n] = t;\n }, this.monitorCookieStore = function () {\n var i, u, f, t, r;\n\n try {\n if (typeof Roblox == \"undefined\" || typeof Roblox.Client == \"undefined\" || window.location.protocol == \"https:\") return;\n if (i = Roblox.Client.CreateLauncher(!1), i == null) return;\n\n for (u = 0; u < n.length; u++) {\n try {\n f = n[u], t = i.GetKeyValue(f), t != \"\" && t != \"-1\" && t != \"RBX_NOT_VALID\" && (r = eval(\"(\" + t + \")\"), r.userType = r.userId > 0 ? \"user\" : \"guest\", RobloxEventManager.triggerEvent(f, r), i.SetKeyValue(f, \"RBX_NOT_VALID\"));\n } catch (e) {}\n }\n\n Roblox.Client.ReleaseLauncher(i, !1, !1);\n } catch (e) {}\n };\n}();\n; /// RobloxEventListener.js\n\nRobloxListener = new RBXBaseEventListener(), RobloxListener.handleEvent = function (n, t) {\n var r, u, i;\n\n switch (n.type) {\n case \"rbx_evt_install_begin\":\n i = {\n guid: \"guid\",\n userId: \"userid\"\n }, r = n.type;\n break;\n\n case \"rbx_evt_initial_install_start\":\n i = {\n guid: \"guid\",\n userId: \"userid\"\n }, r = n.type;\n break;\n\n case \"rbx_evt_ftp\":\n i = {\n guid: \"guid\",\n userId: \"userid\"\n }, r = n.type;\n break;\n\n case \"rbx_evt_initial_install_success\":\n i = {\n guid: \"guid\",\n userId: \"userid\"\n }, r = n.type;\n break;\n\n case \"rbx_evt_fmp\":\n i = {\n guid: \"guid\",\n userId: \"userid\"\n }, r = n.type;\n break;\n\n default:\n return console.log(\"RobloxEventListener - Event registered without handling instructions: \" + n.type), !1;\n }\n\n return u = this.distillData(t, i), this.fireEvent(this.eventToString(r, u)), !0;\n}, RobloxListener.distillData = function (n, t) {\n var i = {};\n\n for (dataKey in t) {\n _typeof(n[dataKey]) != ( true ? \"undefined\" : 0) && (i[t[dataKey]] = encodeURIComponent(n[dataKey]));\n }\n\n return i;\n}, RobloxListener.eventToString = function (n, t) {\n var i = RobloxListener.restUrl;\n if (i += \"?event=\" + n + \"&\", t != null) for (arg in t) {\n (typeof arg === \"undefined\" ? \"undefined\" : _typeof(arg)) != ( true ? \"undefined\" : 0) && t.hasOwnProperty(arg) && (i += arg + \"=\" + t[arg] + \"&\");\n }\n return i = i.slice(0, i.length - 1);\n}, RobloxListener.fireEvent = function (n) {\n var t = $('<img width=\"1\" height=\"1\" src=\"' + n + '\"/>');\n}, RobloxListener.events = [\"rbx_evt_install_begin\", \"rbx_evt_initial_install_start\", \"rbx_evt_ftp\", \"rbx_evt_initial_install_success\", \"rbx_evt_fmp\"];\n; /// KontagentEventListener.js\n\nKontagentListener = new RBXBaseEventListener(), KontagentListener.restUrl = \"\", KontagentListener.APIKey = \"\", KontagentListener.StagingAPIKey = \"\", KontagentListener.StagingEvents = [], KontagentListener.handleEvent = function (n, t) {\n function f(n) {\n return n = n.toLowerCase(), n == \"win32\" ? n = \"Windows\" : n == \"osx\" && (n = \"Mac\"), n;\n }\n\n var r, u, i, o, e;\n r = \"evt\";\n\n switch (n.type) {\n case \"rbx_evt_pageview\":\n i = {\n guid: \"s\",\n path: \"u\",\n ts: \"ts\",\n user_ip: \"ip\"\n }, r = \"pgr\";\n break;\n\n case \"rbx_evt_userinfo\":\n i = {\n guid: \"s\",\n age: \"b\",\n gender: \"g\"\n }, r = \"cpu\";\n break;\n\n case \"rbx_evt_ecomm_item\":\n t.total = Math.round(t.total * 100), t.productName = t.productName.replace(/\\s/g, \"\").replace(\"Outrageous\", \"O\").replace(\"Turbo\", \"T\").replace(\"Builders\", \"B\").replace(\"Club\", \"C\"), i = {\n guid: \"s\",\n total: \"v\",\n provider: \"st1\",\n category: \"st2\",\n productName: \"st3\",\n type: \"tu\"\n }, r = \"mtu\";\n break;\n\n case \"rbx_evt_ftp\":\n t.tracking = \"\", t.shorttracking = \"\", i = {\n guid: \"s\",\n trackingtag: \"u\",\n shorttracking: \"su\"\n }, u = this.distillData(t, i), r = \"apa\", this.fireEvent(this.eventToString(n.type, r, u)), t.eventName = \"Install Success Funnel\", t.eventType = \"Install Success Funnel\", t.os = f(t.os), i = {\n guid: \"s\",\n eventType: \"st1\",\n os: \"st2\",\n userType: \"st3\",\n eventName: \"n\"\n }, u = this.distillData(t, i), r = \"evt\", this.fireEvent(this.eventToString(n.type, r, u)), t.eventType = \"Install Success Place\", i = {\n guid: \"s\",\n eventType: \"st1\",\n os: \"st2\",\n userType: \"st3\",\n placeId: \"n\"\n };\n break;\n\n case \"rbx_evt_initial_install_success\":\n t.tracking = \"\", t.shorttracking = \"\", i = {\n guid: \"s\",\n trackingtag: \"u\",\n shorttracking: \"su\"\n }, u = this.distillData(t, i), r = \"apa\", this.fireEvent(this.eventToString(n.type, r, u)), t.eventName = \"Bootstrapper Install Success Funnel\", t.eventType = \"Bootstrapper Install Success Funnel\", t.os = f(t.os), i = {\n guid: \"s\",\n eventType: \"st1\",\n os: \"st2\",\n userType: \"st3\",\n eventName: \"n\"\n }, u = this.distillData(t, i), r = \"evt\", this.fireEvent(this.eventToString(n.type, r, u)), t.eventType = \"Bootstrapper Install Success Place\", i = {\n guid: \"s\",\n eventType: \"st1\",\n os: \"st2\",\n userType: \"st3\",\n placeId: \"n\"\n };\n break;\n\n case \"rbx_evt_install_begin\":\n t.eventName = \"Install Begin\", t.eventType = \"Install Begin\", i = {\n guid: \"s\",\n eventType: \"st1\",\n os: \"st2\",\n eventName: \"n\"\n };\n break;\n\n case \"rbx_evt_initial_install_start\":\n t.eventName = \"Bootstrapper Install Begin\", t.eventType = \"Bootstrapper Install Begin\", i = {\n guid: \"s\",\n eventType: \"st1\",\n os: \"st2\",\n eventName: \"n\"\n };\n break;\n\n case \"rbx_evt_fmp\":\n t.eventName = \"Five Minute Play Funnel\", t.eventType = \"Five Minute Play Funnel\", t.os = f(t.os), i = {\n guid: \"s\",\n eventType: \"st1\",\n os: \"st2\",\n userType: \"st3\",\n eventName: \"n\"\n }, u = this.distillData(t, i), this.fireEvent(this.eventToString(n.type, r, u)), t.eventType = \"Five Minute Play Place\", i = {\n guid: \"s\",\n eventType: \"st1\",\n os: \"st2\",\n userType: \"st3\",\n placeId: \"n\"\n };\n break;\n\n case \"rbx_evt_play_user\":\n t.eventName = \"Play User\", t.eventType = \"Play User\", t.gender = t.gender, i = {\n guid: \"s\",\n eventType: \"st1\",\n gender: \"st2\",\n age: \"st3\",\n placeId: \"l\",\n eventName: \"n\"\n };\n break;\n\n case \"rbx_evt_play_guest\":\n t.eventName = \"Play Guest\", t.eventType = \"Play Guest\", t.gender = t.gender, i = {\n guid: \"s\",\n eventType: \"st1\",\n gender: \"st2\",\n placeId: \"l\",\n eventName: \"n\"\n };\n break;\n\n case \"rbx_evt_signup\":\n t.eventName = \"Sign Up Funnel\", t.eventType = \"Sign Up Funnel\", i = {\n guid: \"s\",\n eventType: \"st1\",\n eventName: \"n\"\n }, u = this.distillData(t, i), r = \"evt\", this.fireEvent(this.eventToString(n.type, r, u)), t.eventName = \"Sign Up\", t.eventType = \"Sign Up\", t.gender = t.gender, i = {\n guid: \"s\",\n eventType: \"st1\",\n gender: \"st2\",\n age: \"st3\",\n eventName: \"n\"\n };\n break;\n\n case \"rbx_evt_ecomm_custom\":\n t.eventType = \"Purchase\", t.productName = t.productName.replace(/\\s/g, \"\").replace(\"Outrageous\", \"O\").replace(\"Turbo\", \"T\").replace(\"Builders\", \"B\").replace(\"Club\", \"C\"), i = {\n guid: \"s\",\n eventType: \"st1\",\n provider: \"st2\",\n category: \"st3\",\n productName: \"n\"\n };\n break;\n\n case \"rbx_evt_abtest\":\n i = {\n guid: \"s\",\n experiment: \"st1\",\n variation: \"n\"\n };\n break;\n\n case \"rbx_evt_pageview_custom\":\n t.eventName = t.page, i = typeof t.userType == \"undefined\" ? {\n guid: \"s\",\n page: \"st1\",\n eventName: \"n\"\n } : {\n guid: \"s\",\n page: \"st1\",\n userType: \"st2\",\n eventName: \"n\"\n };\n break;\n\n case \"rbx_evt_generic\":\n t.eventName = t.type, i = {\n guid: \"s\",\n type: \"st1\",\n eventName: \"n\"\n }, typeof t.opt1 != \"undefined\" && (i.opt1 = \"st2\"), typeof t.opt2 != \"undefined\" && typeof t.opt1 != \"undefined\" && (i.opt2 = \"st3\");\n break;\n\n case \"rbx_evt_source_tracking\":\n t.installed = 0, t.sourceType = \"ad\", i = {\n guid: \"s\",\n sourceType: \"tu\",\n installed: \"i\",\n source: \"st1\",\n campaign: \"st2\",\n medium: \"st3\"\n }, r = \"ucc\";\n break;\n\n case \"rbx_evt_card_redemption\":\n t.eventType = \"CardRedemption\", t.eventName = \"CardRedemption\", i = {\n guid: \"s\",\n eventType: \"st1\",\n merchant: \"st2\",\n cardValue: \"st3\",\n eventName: \"n\"\n };\n break;\n\n case \"rbx_evt_popup_action\":\n t.eventType = \"GuestPlayPopupAction\", t.eventName = \"GuestPlayPopupAction\", i = {\n guid: \"s\",\n eventType: \"st1\",\n action: \"st2\",\n eventName: \"n\"\n };\n break;\n\n default:\n return console.log(\"KontagentListener - Event registered without handling instructions: \" + n.type), !1;\n }\n\n return u = this.distillData(t, i), this.fireEvent(this.eventToString(n.type, r, u)), !0;\n}, KontagentListener.distillData = function (n, t) {\n var i = {};\n\n for (dataKey in t) {\n _typeof(n[dataKey]) != ( true ? \"undefined\" : 0) && (i[t[dataKey]] = encodeURIComponent(n[dataKey]));\n }\n\n return i;\n}, KontagentListener.eventToString = function (n, t, i) {\n var r = KontagentListener.restUrl,\n u = this.isStagingEvent(n, i) ? KontagentListener.StagingAPIKey : KontagentListener.APIKey;\n if (r += u + \"/\" + t + \"/?\", i != null) for (arg in i) {\n (typeof arg === \"undefined\" ? \"undefined\" : _typeof(arg)) != ( true ? \"undefined\" : 0) && i.hasOwnProperty(arg) && (r += arg + \"=\" + i[arg] + \"&\");\n }\n return r = r.slice(0, r.length - 1);\n}, KontagentListener.isStagingEvent = function (n, t) {\n var r, i;\n staging = !1;\n\n try {\n for (r in this.StagingEvents) {\n if (i = this.StagingEvents[r], typeof i == \"string\") {\n if (n == i) {\n staging = !0;\n break;\n }\n } else if (_typeof(i) == \"object\" && typeof i[n] != \"undefined\" && i[n] == t.st1) {\n staging = !0;\n break;\n }\n }\n } catch (u) {}\n\n return staging;\n}, KontagentListener.fireEvent = function (n) {\n var t = $('<img width=\"1\" height=\"1\" src=\"' + n + '\"/>');\n}, KontagentListener.events = [\"rbx_evt_pageview\", \"rbx_evt_install_begin\", \"rbx_evt_initial_install_start\", \"rbx_evt_ftp\", \"rbx_evt_initial_install_success\", \"rbx_evt_fmp\", \"rbx_evt_play_user\", \"rbx_evt_play_guest\", \"rbx_evt_signup\", \"rbx_evt_ecomm_item\", \"rbx_evt_ecomm_custom\", \"rbx_evt_userinfo\", \"rbx_evt_abtest\", \"rbx_evt_pageview_custom\", \"rbx_evt_generic\", \"rbx_evt_source_tracking\", \"rbx_evt_card_redemption\", \"rbx_evt_popup_action\"];\n; /// GoogleEventListener.js\n\nGoogleListener = new RBXBaseEventListener(), GoogleListener.handleEvent = function (n, t) {\n function r(n) {\n return n = n.toLowerCase(), n == \"win32\" ? n = \"Windows\" : n == \"osx\" && (n = \"Mac\"), n;\n }\n\n var f, u, i;\n\n switch (n.type) {\n case \"rbx_evt_initial_install_begin\":\n t.os = r(t.os), t.category = \"Bootstrapper Install Begin\", i = {\n os: \"action\"\n };\n break;\n\n case \"rbx_evt_ftp\":\n t.os = r(t.os), t.category = \"Install Success\", i = {\n os: \"action\"\n };\n break;\n\n case \"rbx_evt_initial_install_success\":\n t.os = r(t.os), t.category = \"Bootstrapper Install Success\", i = {\n os: \"action\"\n };\n break;\n\n case \"rbx_evt_fmp\":\n t.os = r(t.os), t.category = \"Five Minute Play\", i = {\n os: \"action\"\n };\n break;\n\n case \"rbx_evt_abtest\":\n i = {\n experiment: \"category\",\n variation: \"action\",\n version: \"opt_label\"\n };\n break;\n\n case \"rbx_evt_card_redemption\":\n t.category = \"CardRedemption\", i = {\n merchant: \"action\",\n cardValue: \"opt_label\"\n };\n break;\n\n default:\n return console.log(\"GoogleListener - Event registered without handling instructions: \" + n.type), !1;\n }\n\n return i.category = \"category\", u = this.distillData(t, i), this.fireEvent(u), !0;\n}, GoogleListener.distillData = function (n, t) {\n var i = {},\n r;\n\n for (dataKey in t) {\n _typeof(n[dataKey]) != ( true ? \"undefined\" : 0) && (i[t[dataKey]] = n[dataKey]);\n }\n\n return r = [i.category, i.action], i.opt_label != null && (r = r.concat(i.opt_label)), i.opt_value != null && (r = r.concat(i.opt_value)), r;\n}, GoogleListener.fireEvent = function (n) {\n if ((typeof _gaq === \"undefined\" ? \"undefined\" : _typeof(_gaq)) != ( true ? \"undefined\" : 0)) {\n var i = [\"_trackEvent\"],\n t = [\"b._trackEvent\"];\n _gaq.push(i.concat(n)), _gaq.push(t.concat(n));\n }\n}, GoogleListener.events = [\"rbx_evt_initial_install_begin\", \"rbx_evt_ftp\", \"rbx_evt_initial_install_success\", \"rbx_evt_fmp\", \"rbx_evt_abtest\", \"rbx_evt_card_redemption\"];\n; /// MongoEventListener.js\n\nMongoListener = new RBXBaseEventListener(), MongoListener.handleEvent = function (n, t) {\n var i;\n return i = typeof t.shard == \"undefined\" ? this.defaultShard : t.shard, typeof t.eventName == \"undefined\" && (t.eventName = n.type), t.eventName === \"JavascriptExceptionLoggingEvent\" ? dataMap = {\n category: \"category\",\n url: \"url\",\n msg: \"msg\",\n line: \"line\",\n ua: \"UA\"\n } : (typeof t.category == \"undefined\" && (t.category = MongoListener.getCategoryFromEventName(t.eventName)), t.userId = MongoListener.userId, t.ip = MongoListener.clientIpAddress, dataMap = {\n guid: \"guid\",\n category: \"category\",\n userId: \"userid\",\n ip: \"ip\"\n }), this.fireEvent(i, this.distillData(t, dataMap)), !0;\n}, MongoListener.getCategoryFromEventName = function (n) {\n switch (n) {\n case \"rbx_evt_sitetouch\":\n return \"SiteTouch\";\n\n case \"rbx_evt_fmp\":\n return \"FiveMinutePlay\";\n\n case \"rbx_evt_play_user\":\n case \"rbx_evt_play_guest\":\n return \"Play\";\n\n default:\n return n;\n }\n}, MongoListener.distillData = function (n, t) {\n var i = {};\n\n for (dataKey in t) {\n _typeof(n[dataKey]) != ( true ? \"undefined\" : 0) && (i[t[dataKey]] = encodeURIComponent(n[dataKey]));\n }\n\n return i;\n}, MongoListener.fireEvent = function (n, t) {\n $.ajax({\n url: MongoListener.loggingURI + n,\n dataType: \"jsonp\",\n jsonpCallback: \"MongoListener.callback\",\n data: t\n });\n}, MongoListener.callback = function () {}, MongoListener.events = [\"JavascriptExceptionLoggingEvent\"];\n; /// SearchVisionListener.js\n\nSearchVisionListener = new RBXBaseEventListener(), SearchVisionListener.handleEvent = function (n, t) {\n var i = null;\n\n switch (n.type) {\n case \"rbx_evt_fmp\":\n i = {\n esvtk_v: \"1\",\n esvtk_esvid: \"A40125\",\n event: \"five_minute_play\"\n };\n break;\n\n case \"rbx_evt_ftp\":\n i = {\n esvtk_v: \"1\",\n esvtk_esvid: \"A40125\",\n event: \"first_play\"\n };\n break;\n\n case \"rbx_evt_install_begin\":\n i = {\n esvtk_v: \"1\",\n esvtk_esvid: \"A40125\",\n event: \"download\"\n };\n break;\n\n case \"rbx_evt_signup\":\n i = {\n esvtk_v: \"1\",\n esvtk_esvid: \"A40125\",\n event: \"esv_signup\"\n };\n break;\n\n case \"rbx_evt_generic\":\n t.type === \"OneDayReturn\" && (i = {\n esvtk_v: \"1\",\n esvtk_esvid: \"A40125\",\n event: \"return\"\n });\n }\n\n return i !== null && (i.orderid = t.guid, this.fireEvent(i)), !0;\n}, SearchVisionListener.fireEvent = function (n) {\n typeof esvtk_track != \"undefined\" ? esvtk_track(n) : setTimeout(function () {\n SearchVisionListener.fireEvent(n);\n }, 500);\n}, SearchVisionListener.events = [\"rbx_evt_fmp\", \"rbx_evt_ftp\", \"rbx_evt_install_begin\", \"rbx_evt_signup\", \"rbx_evt_generic\"];\n; /// SiteTouchEvent.js\n\ntypeof Roblox == \"undefined\" && (Roblox = {}), Roblox.SiteTouchEvent = function () {\n function r() {\n var t, i;\n return typeof localStorage != \"undefined\" && (t = localStorage.getItem(n)), (typeof t == \"undefined\" || t === null) && (t = $.cookie(n)), i = Date.parse(t), t && !isNaN(i) ? new Date(i) : new Date(0);\n }\n\n function i(i) {\n typeof i == \"undefined\" && (i = new Date()), typeof localStorage != \"undefined\" && (t.useLocalStorage ? $.cookie(n, null) : localStorage.removeItem(n)), t.useLocalStorage && typeof localStorage != \"undefined\" ? localStorage.setItem(n, i) : $.cookie(n, i, {\n expires: 100\n });\n }\n\n function u() {\n var n = r();\n Math.floor((new Date() - n) / 36e5) >= t.dateDiffThresholdInHours && RobloxEventManager.triggerEvent(\"rbx_evt_sitetouch\"), i();\n }\n\n var n = \"LastActivity\",\n t = {\n updateLastActivityAndFireEvent: u,\n getLastActivity: r,\n setLastActivity: i,\n dateDiffThresholdInHours: 3,\n useLocalStorage: !1\n };\n return t;\n}();\n; /// JSErrorTracker.js\n\ntypeof Roblox == \"undefined\" && (Roblox = {}), Roblox.JSErrorTracker = {\n showAlert: !1,\n defaultPixel: \"GA\",\n internalEventListenerPixelEnabled: !1,\n javascriptStackTraceEnabled: !1,\n data: {\n category: \"Javascript Errors\"\n },\n initialize: function initialize(n) {\n typeof n != \"undefined\" && (typeof n.showAlert != \"undefined\" && (this.showAlert = n.showAlert), typeof n.internalEventListenerPixelEnabled != \"undefined\" && (this.internalEventListenerPixelEnabled = n.internalEventListenerPixelEnabled)), this.addOnErrorEventHandler(this.errorHandler);\n },\n errorHandler: function errorHandler(n, t, i) {\n try {\n Roblox.JSErrorTracker.data.msg = n, Roblox.JSErrorTracker.data.url = t, Roblox.JSErrorTracker.data.line = i, Roblox.JSErrorTracker.data.ua = window.navigator.userAgent, Roblox.JSErrorTracker.logException(Roblox.JSErrorTracker.data);\n } catch (r) {}\n\n return !0;\n },\n addOnErrorEventHandler: function addOnErrorEventHandler(n) {\n var t = window.onerror;\n window.onerror = typeof window.onerror == \"function\" ? function (i, r, u) {\n t(i, r, u), n(i, r, u);\n } : n;\n },\n processException: function processException(n, t) {\n if (typeof n != \"undefined\") {\n typeof n.category == \"undefined\" && (n.category = Roblox.JSErrorTracker.data.category);\n\n switch (t) {\n case \"GA\":\n var i = {\n category: \"category\",\n url: \"action\",\n msg: \"opt_label\",\n line: \"opt_value\"\n };\n Roblox.JSErrorTracker.fireGAPixel(Roblox.JSErrorTracker.distillGAData(n, i));\n break;\n\n case \"Diag\":\n Roblox.JSErrorTracker.internalEventListenerPixelEnabled && (n.category = \"JavascriptExceptions\", n.shard = \"WebMetrics\", n.eventName = \"JavascriptExceptionLoggingEvent\", RobloxEventManager.triggerEvent(\"JavascriptExceptionLoggingEvent\", n));\n break;\n\n default:\n console.log(\"Roblox JSErrorTracker received an unknown pixel to fire\");\n }\n\n return !0;\n }\n },\n logException: function logException(n) {\n Roblox.JSErrorTracker.processException(n, Roblox.JSErrorTracker.defaultPixel), Roblox.JSErrorTracker.internalEventListenerPixelEnabled && Roblox.JSErrorTracker.processException(n, \"Diag\"), Roblox.JSErrorTracker.showErrorMessage(n.msg);\n },\n distillData: function distillData(n, t) {\n var r = {},\n i;\n\n for (i in t) {\n typeof n[i] != \"undefined\" && (r[t[i]] = encodeURIComponent(n[i]));\n }\n\n return r;\n },\n distillGAData: function distillGAData(n, t) {\n var r = Roblox.JSErrorTracker.distillData(n, t),\n i = [decodeURIComponent([r.category])];\n return _typeof(r.action) != ( true ? \"undefined\" : 0) ? (i = i.concat(decodeURIComponent(r.action)), _typeof(r.opt_label) != ( true ? \"undefined\" : 0) && (i = i.concat(decodeURIComponent(r.opt_label)), _typeof(r.opt_value) != ( true ? \"undefined\" : 0) && (i = i.concat(parseInt(decodeURIComponent(r.opt_value)))))) : Roblox.JSErrorTracker.showAlert && alert(\"Missing a required parameter for GA\"), i;\n },\n createURL: function createURL(n, t, i) {\n var r = n,\n f = Roblox.JSErrorTracker.distillData(t, i),\n u;\n if (r += \"?\", f != null) for (u in f) {\n _typeof(u) != ( true ? \"undefined\" : 0) && t.hasOwnProperty(u) && (r += u + \"=\" + f[u] + \"&\");\n }\n return r = r.slice(0, r.length - 1);\n },\n fireGAPixel: function fireGAPixel(n) {\n typeof _gaq != \"undefined\" && _gaq.push([\"c._trackEvent\"].concat(n));\n },\n showErrorMessage: function showErrorMessage(n) {\n Roblox.JSErrorTracker.showAlert && (n !== null ? alert(n) : alert(\"An error occured\"));\n }\n};\n; /// Studio2Alert.js\n\nvar studio2AlertModal = {\n showPrompt: !1,\n userId: 0,\n updateStudioAlertUserPreference: function updateStudioAlertUserPreference() {\n $.ajax({\n type: \"GET\",\n url: \"/WebHandlers/Studio2Alert.ashx?uId=\" + studio2AlertModal.userId\n });\n },\n close: function close() {\n studio2AlertModal.updateStudioAlertUserPreference(), $.modal.close(\"#Studio2AlertModal\");\n },\n init: function init() {\n studio2AlertModal.showPrompt = $(\"#Studio2AlertModal\").data(\"showprompt\"), studio2AlertModal.userId = $(\"#Studio2AlertModal\").data(\"userid\");\n var n = {\n escClose: !0,\n opacity: 80,\n overlayCss: {\n backgroundColor: \"#000\"\n }\n };\n studio2AlertModal.showPrompt && Roblox.Client.isIDE() && (studio2AlertModal.updateStudioAlertUserPreference(), $(\"#Studio2AlertModal\").modal(n));\n }\n};\n$(\"#closeStudio2Alert\").click(function () {\n studio2AlertModal.close();\n}), $(function () {\n studio2AlertModal.init();\n});\n; /// ClientInstaller.js\n\nfunction tryToDownload() {\n oIFrm = document.getElementById(\"downloadInstallerIFrame\"), oIFrm.src = \"/install/setup.ashx\";\n}\n\nfunction logStatistics(n) {\n $.get(\"/install/VisitButtonHandler.ashx?reqtype=\" + n, function () {});\n}\n\nType.registerNamespace(\"Roblox.Client\"), Roblox.Client._installHost = null, Roblox.Client._installSuccess = null, Roblox.Client._CLSID = null, Roblox.Client._continuation = null, Roblox.Client._skip = null, Roblox.Client._isIDE = null, Roblox.Client._isRobloxBrowser = null, Roblox.Client._isPlaceLaunch = !1, Roblox.Client._silentModeEnabled = !1, Roblox.Client._bringAppToFrontEnabled = !1, Roblox.Client._numLocks = 0, Roblox.Client._logTiming = !1, Roblox.Client._logStartTime = null, Roblox.Client._logEndTime = null, Roblox.Client._hiddenModeEnabled = !1, Roblox.Client._runInstallABTest = function () {}, Roblox.Client.ReleaseLauncher = function (n, t, i) {\n if (t && Roblox.Client._numLocks--, (i || Roblox.Client._numLocks <= 0) && (n != null && (document.getElementById(\"pluginObjDiv\").innerHTML = \"\", n = null), Roblox.Client._numLocks = 0), Roblox.Client._logTiming) {\n Roblox.Client._logEndTime = new Date();\n\n var r = Roblox.Client._logEndTime.getTime() - Roblox.Client._logStartTime.getTime();\n\n console && console.log && console.log(\"Roblox.Client: \" + r + \"ms from Create to Release.\");\n }\n}, Roblox.Client.GetInstallHost = function (n) {\n if (window.ActiveXObject) return n.InstallHost;\n var t = n.Get_InstallHost();\n return t.match(/roblox.com$/) ? t : t.substring(0, t.length - 1);\n}, Roblox.Client.CreateLauncher = function (n) {\n var i, u, t, r;\n Roblox.Client._logTiming && (Roblox.Client._logStartTime = new Date()), n && Roblox.Client._numLocks++, (Roblox.Client._installHost == null || Roblox.Client._CLSID == null) && typeof initClientProps == \"function\" && initClientProps(), i = document.getElementById(\"robloxpluginobj\"), u = $(\"#pluginObjDiv\"), i || (Roblox.Client._hiddenModeEnabled = !1, window.ActiveXObject ? (t = '<object classid=\"clsid:' + Roblox.Client._CLSID + '\"', t += ' id=\"robloxpluginobj\" type=\"application/x-vnd-roblox-launcher\"', t += ' codebase=\"' + Roblox.Client._installHost + '\">Failed to INIT Plugin</object>', $(u).append(t)) : (t = '<object id=\"robloxpluginobj\" type=\"application/x-vnd-roblox-launcher\">', t += \"<p>You need Our Plugin for this. Get the latest version from\", t += '<a href=\"' + Roblox.Client._installHost + '\">here</a>.</p></object>', $(u).append(t)), i = document.getElementById(\"robloxpluginobj\"));\n\n try {\n if (i || (typeof console.log == \"undefined\" ? alert(\"Plugin installation failed!\") : console.log(\"Plugin installation failed!\")), i.Hello(), r = Roblox.Client.GetInstallHost(i), !r || r != Roblox.Client._installHost) throw \"wrong InstallHost: (plugins): \" + r + \" (servers): \" + Roblox.Client._installHost;\n return i;\n } catch (f) {\n return Roblox.Client.ReleaseLauncher(i, n, !1), null;\n }\n}, Roblox.Client.isIDE = function () {\n if (Roblox.Client._isIDE == null && (Roblox.Client._isIDE = !1, Roblox.Client._isRobloxBrowser = !1, window.external)) try {\n window.external.IsRobloxAppIDE !== undefined && (Roblox.Client._isIDE = window.external.IsRobloxAppIDE, Roblox.Client._isRobloxBrowser = !0);\n } catch (n) {}\n return Roblox.Client._isIDE;\n}, Roblox.Client.isRobloxBrowser = function () {\n return Roblox.Client.isIDE(), Roblox.Client._isRobloxBrowser;\n}, Roblox.Client.robloxBrowserInstallHost = function () {\n if (window.external) try {\n return window.external.InstallHost;\n } catch (n) {}\n return \"\";\n}, Roblox.Client.IsRobloxProxyInstalled = function () {\n var t = Roblox.Client.CreateLauncher(!1),\n n = !1;\n return (t != null && (n = !0), Roblox.Client.ReleaseLauncher(t, !1, !1), n || Roblox.Client.isRobloxBrowser()) ? !0 : !1;\n}, Roblox.Client.IsRobloxInstalled = function () {\n try {\n var t = Roblox.Client.CreateLauncher(!1),\n n = Roblox.Client.GetInstallHost(t);\n return Roblox.Client.ReleaseLauncher(t, !1, !1), n == Roblox.Client._installHost;\n } catch (i) {\n return Roblox.Client.isRobloxBrowser() ? (n = Roblox.Client.robloxBrowserInstallHost(), n == Roblox.Client._installHost) : !1;\n }\n}, Roblox.Client.SetStartInHiddenMode = function (n) {\n try {\n var t = Roblox.Client.CreateLauncher(!1);\n if (t !== null) return t.SetStartInHiddenMode(n), Roblox.Client._hiddenModeEnabled = n, !0;\n } catch (i) {}\n\n return !1;\n}, Roblox.Client.UnhideApp = function () {\n try {\n if (Roblox.Client._hiddenModeEnabled) {\n var n = Roblox.Client.CreateLauncher(!1);\n n.UnhideApp();\n }\n } catch (t) {}\n}, Roblox.Client.Update = function () {\n try {\n var n = Roblox.Client.CreateLauncher(!1);\n n.Update(), Roblox.Client.ReleaseLauncher(n, !1, !1);\n } catch (t) {\n alert(\"Error updating: \" + t);\n }\n}, Roblox.Client.WaitForRoblox = function (n) {\n if (Roblox.Client._skip) return window.location = Roblox.Client._skip, !1;\n\n if (Roblox.Client._continuation = n, Roblox.Client._cancelled = !1, !Roblox.Client.IsRobloxProxyInstalled() && Roblox.Client.ImplementsProxy) {\n Roblox.InstallationInstructions.show(), Roblox.Client.runInstallABTest();\n var t = \"Windows\";\n return navigator.appVersion.indexOf(\"Mac\") != -1 && (t = \"Mac\"), (typeof _gaq === \"undefined\" ? \"undefined\" : _typeof(_gaq)) != ( true ? \"undefined\" : 0) && (_gaq.push([\"_trackEvent\", \"Install Begin\", t]), _gaq.push([\"b._trackEvent\", \"Install Begin\", t])), RobloxEventManager.triggerEvent(\"rbx_evt_install_begin\", {\n os: t\n }), window.chrome && (window.location.hash = \"#chromeInstall\", $.cookie(\"chromeInstall\", n.toString().replace(/play_placeId/, play_placeId.toString()))), window.setTimeout(function () {\n Roblox.Client._ontimer();\n }, 1e3), tryToDownload(), !0;\n }\n\n return Roblox.Client._continuation(), !1;\n}, Roblox.Client.ResumeTimer = function (n) {\n Roblox.Client._continuation = n, Roblox.Client._cancelled = !1, window.setTimeout(function () {\n Roblox.Client._ontimer();\n }, 0);\n}, Roblox.Client.Refresh = function () {\n try {\n navigator.plugins.refresh(!1);\n } catch (n) {}\n}, Roblox.Client._onCancel = function () {\n return Roblox.InstallationInstructions.hide(), Roblox.Client._cancelled = !0, !1;\n}, Roblox.Client._ontimer = function () {\n Roblox.Client._cancelled || (Roblox.Client.Refresh(), Roblox.Client.IsRobloxProxyInstalled() ? (Roblox.InstallationInstructions.hide(), window.setTimeout(function () {\n window.chrome && window.location.hash == \"#chromeInstall\" && (window.location.hash = \"\", $.cookie(\"chromeInstall\", null));\n }, 5e3), Roblox.Client._continuation(), Roblox.Client._installSuccess && Roblox.Client._installSuccess()) : window.setTimeout(function () {\n Roblox.Client._ontimer();\n }, 1e3));\n};\n; /// InstallationInstructions.js\n\ntypeof Roblox == \"undefined\" && (Roblox = {}), Roblox.InstallationInstructions = function () {\n function i() {\n var t, i, r;\n n(), t = 0, i = $(\".InstallInstructionsImage\"), i && typeof $(i).attr(\"modalwidth\") != \"undefined\" && (t = $(\".InstallInstructionsImage\").attr(\"modalwidth\")), t > 0 ? (r = ($(window).width() - (t - 10)) / 2, $(\"#InstallationInstructions\").modal({\n escClose: !0,\n opacity: 50,\n minWidth: t,\n maxWidth: t,\n overlayCss: {\n backgroundColor: \"#000\"\n },\n position: [20, r]\n })) : $(\"#InstallationInstructions\").modal({\n escClose: !0,\n opacity: 50,\n maxWidth: $(window).width() / 2,\n minWidth: $(window).width() / 2,\n overlayCss: {\n backgroundColor: \"#000\"\n },\n position: [20, \"25%\"]\n });\n }\n\n function r() {\n $.modal.close();\n }\n\n function n() {\n var n = $(\".InstallInstructionsImage\");\n navigator.userAgent.match(/Mac OS X 10[_|\\.]5/) ? n && typeof $(n).attr(\"oldmacdelaysrc\") != \"undefined\" && $(\".InstallInstructionsImage\").attr(\"src\", $(\".InstallInstructionsImage\").attr(\"oldmacdelaysrc\")) : n && typeof $(n).attr(\"delaysrc\") != \"undefined\" && $(\".InstallInstructionsImage\").attr(\"src\", $(\".InstallInstructionsImage\").attr(\"delaysrc\"));\n }\n\n return {\n show: i,\n hide: r\n };\n}();\n; /// MadStatus.js\n\nMadStatus = {\n running: !1,\n init: function init(n, t, i, r) {\n MadStatus.running && MadStatus.stop(), MadStatus.updateInterval = i ? i : 2e3, MadStatus.fadeInterval = r ? r : 1e3, MadStatus.timeout = null, MadStatus.running = !0, MadStatus.field = n, MadStatus.backBuffer = t, MadStatus.field.show(), MadStatus.backBuffer.hide();\n },\n participle: [\"Accelerating\", \"Aggregating\", \"Allocating\", \"Aquiring\", \"Automating\", \"Backtracing\", \"Bloxxing\", \"Bootstraping\", \"Calibrating\", \"Correlating\", \"De-noobing\", \"De-ionizing\", \"Deriving\", \"Energizing\", \"Filtering\", \"Generating\", \"Indexing\", \"Loading\", \"Noobing\", \"Optimizing\", \"Oxidizing\", \"Queueing\", \"Parsing\", \"Processing\", \"Rasterizing\", \"Reading\", \"Registering\", \"Re-routing\", \"Resolving\", \"Sampling\", \"Updating\", \"Writing\"],\n modifier: [\"Blox\", \"Count Zero\", \"Cylon\", \"Data\", \"Ectoplasm\", \"Encryption\", \"Event\", \"Farnsworth\", \"Bebop\", \"Flux Capacitor\", \"Fusion\", \"Game\", \"Gibson\", \"Host\", \"Mainframe\", \"Metaverse\", \"Nerf Herder\", \"Neutron\", \"Noob\", \"Photon\", \"Profile\", \"Script\", \"Skynet\", \"TARDIS\", \"Virtual\"],\n subject: [\"Analogs\", \"Blocks\", \"Cannon\", \"Channels\", \"Core\", \"Database\", \"Dimensions\", \"Directives\", \"Engine\", \"Files\", \"Gear\", \"Index\", \"Layer\", \"Matrix\", \"Paradox\", \"Parameters\", \"Parsecs\", \"Pipeline\", \"Players\", \"Ports\", \"Protocols\", \"Reactors\", \"Sphere\", \"Spooler\", \"Stream\", \"Switches\", \"Table\", \"Targets\", \"Throttle\", \"Tokens\", \"Torpedoes\", \"Tubes\"],\n newLib: function newLib() {\n return libString = this.participle[Math.floor(Math.random() * this.participle.length)] + \" \" + this.modifier[Math.floor(Math.random() * this.modifier.length)] + \" \" + this.subject[Math.floor(Math.random() * this.subject.length)] + \"...\";\n },\n start: function start() {\n MadStatus.timeout == null && (MadStatus.timeout = setInterval(\"MadStatus.update()\", MadStatus.updateInterval), MadStatus.running = !0);\n },\n stop: function stop(n) {\n clearInterval(MadStatus.timeout), MadStatus.timeout = null, MadStatus.field[0].innerHTML = _typeof(n) != ( true ? \"undefined\" : 0) ? n : \"\", MadStatus.running = !1;\n },\n manualUpdate: function manualUpdate(n, t, i) {\n MadStatus.timeout && MadStatus.stop(), this.update(n, i), t && setTimeout(\"MadStatus.start()\", 1e3);\n },\n update: function update(n, t) {\n (MadStatus.backBuffer[0].innerHTML = _typeof(n) != ( true ? \"undefined\" : 0) ? n : this.newLib(), (typeof noAnim === \"undefined\" ? \"undefined\" : _typeof(noAnim)) == ( true ? \"undefined\" : 0) || t != !1) && (this.field.hide(), this.backBuffer.fadeIn(this.fadeInterval + 2, function () {\n MadStatus.field[0].innerHTML = MadStatus.backBuffer[0].innerHTML, MadStatus.field.show(), MadStatus.backBuffer.hide();\n }));\n }\n};\n; /// PlaceLauncher.js\n\nvar RBX = {},\n RobloxLaunchStates = {\n StartingServer: \"StartingServer\",\n StartingClient: \"StartingClient\",\n Upgrading: \"Upgrading\",\n None: \"None\"\n},\n RobloxLaunch = {\n launchGamePage: null,\n timer: null,\n clientMetricType: null,\n launcher: null,\n googleAnalyticsCallback: function googleAnalyticsCallback() {\n RobloxLaunch._GoogleAnalyticsCallback && RobloxLaunch._GoogleAnalyticsCallback();\n },\n state: RobloxLaunchStates.None,\n secureAuthenticate: !1\n},\n RobloxPlaceLauncherService = {\n LogJoinClick: function LogJoinClick() {\n $.get(\"/Game/Placelauncher.ashx\", {\n request: \"LogJoinClick\"\n });\n },\n RequestGame: function RequestGame(n, t, i, r, u, f) {\n i = i !== null && i !== undefined ? i : \"\", $.getJSON(\"/Game/PlaceLauncher.ashx\", {\n request: \"RequestGame\",\n placeId: n,\n isPartyLeader: t,\n gender: i\n }, function (n) {\n n.Error ? u(n.Error, f) : r(n, f);\n });\n },\n RequestPlayWithParty: function RequestPlayWithParty(n, t, i, r, u, f) {\n $.getJSON(\"/Game/PlaceLauncher.ashx\", {\n request: \"RequestPlayWithParty\",\n placeId: n,\n partyGuid: t,\n gameId: i\n }, function (n) {\n n.Error ? u(n.Error, f) : r(n, f);\n });\n },\n RequestGroupBuildGame: function RequestGroupBuildGame(n, t, i, r) {\n $.getJSON(\"/Game/PlaceLauncher.ashx\", {\n request: \"RequestGroupBuildGame\",\n placeId: n\n }, function (n) {\n n.Error ? i(n.Error, r) : t(n, r);\n });\n },\n RequestFollowUser: function RequestFollowUser(n, t, i, r) {\n $.getJSON(\"/Game/PlaceLauncher.ashx\", {\n request: \"RequestFollowUser\",\n userId: n\n }, function (n) {\n n.Error ? i(n.Error, r) : t(n, r);\n });\n },\n RequestGameJob: function RequestGameJob(n, t, i, r, u, f) {\n $.getJSON(\"/Game/PlaceLauncher.ashx\", {\n request: \"RequestGameJob\",\n placeId: n,\n gameId: t,\n gameJobId: i\n }, function (n) {\n n.Error ? u(n.Error, f) : r(n, f);\n });\n },\n CheckGameJobStatus: function CheckGameJobStatus(n, t, i, r) {\n $.getJSON(\"/Game/PlaceLauncher.ashx\", {\n request: \"CheckGameJobStatus\",\n jobId: n\n }, function (n) {\n n.Error ? i(n.Error, r) : t(n, r);\n });\n }\n};\nRobloxLaunch.RequestPlayWithParty = function (n, t, i, r) {\n RobloxPlaceLauncherService.LogJoinClick(), RobloxLaunch.timer = new Date(), RobloxLaunch.state = RobloxLaunchStates.None, RobloxLaunch.clientMetricType = \"WebPlay\", checkRobloxInstall() && (RobloxLaunch.launcher === null && (RobloxLaunch.launcher = new RBX.PlaceLauncher(n)), RobloxLaunch.launcher.RequestPlayWithParty(t, i, r));\n}, RobloxLaunch.RequestGame = function (n, t, i) {\n RobloxPlaceLauncherService.LogJoinClick(), RobloxLaunch.timer = new Date(), RobloxLaunch.state = RobloxLaunchStates.None, RobloxLaunch.clientMetricType = \"WebPlay\", checkRobloxInstall() && (RobloxLaunch.launcher === null && (RobloxLaunch.launcher = new RBX.PlaceLauncher(n)), RobloxLaunch.launcher.RequestGame(t, i));\n}, RobloxLaunch.RequestGroupBuildGame = function (n, t) {\n RobloxPlaceLauncherService.LogJoinClick(), RobloxLaunch.timer = new Date(), RobloxLaunch.state = RobloxLaunchStates.None, RobloxLaunch.clientMetricType = \"WebPlay\", checkRobloxInstall() && (RobloxLaunch.launcher === null && (RobloxLaunch.launcher = new RBX.PlaceLauncher(n)), RobloxLaunch.launcher.RequestGroupBuildGame(t));\n}, RobloxLaunch.RequestGameJob = function (n, t, i, r) {\n RobloxPlaceLauncherService.LogJoinClick(), RobloxLaunch.timer = new Date(), RobloxLaunch.state = RobloxLaunchStates.None, RobloxLaunch.clientMetricType = \"WebJoin\", checkRobloxInstall() && (RobloxLaunch.launcher === null && (RobloxLaunch.launcher = new RBX.PlaceLauncher(n)), RobloxLaunch.launcher.RequestGameJob(t, i, r));\n}, RobloxLaunch.RequestFollowUser = function (n, t) {\n RobloxPlaceLauncherService.LogJoinClick(), RobloxLaunch.timer = new Date(), RobloxLaunch.state = RobloxLaunchStates.None, RobloxLaunch.clientMetricType = \"WebFollow\", checkRobloxInstall() && (RobloxLaunch.launcher === null && (RobloxLaunch.launcher = new RBX.PlaceLauncher(n)), RobloxLaunch.launcher.RequestFollowUser(t));\n}, RobloxLaunch.StartGame = function (n, t, i, r, u) {\n var o, f, e, s;\n RobloxLaunch.secureAuthenticate && (i = i.replace(\"http://\", \"https://\")), n = typeof RobloxLaunch.SeleniumTestMode == \"undefined\" ? n + \"&testmode=false\" : n + \"&testmode=true\", typeof urchinTracker != \"undefined\" && urchinTracker(\"Visit/Try/\" + t), RobloxLaunch.state = RobloxLaunchStates.StartingClient, RobloxLaunch.googleAnalyticsCallback !== null && RobloxLaunch.googleAnalyticsCallback(), o = null;\n\n try {\n if (typeof window.external != \"undefined\" && window.external.IsRobloxABApp) window.external.StartGame(r, i, n);else if (typeof window.external != \"undefined\" && window.external.IsRoblox2App && (n.indexOf(\"visit\") != -1 || u)) window.external.StartGame(r, i, n);else if (o = \"RobloxProxy/\", f = Roblox.Client.CreateLauncher(!0), f) {\n o = \"RobloxProxy/StartGame/\";\n\n try {\n try {\n window.ActiveXObject ? f.AuthenticationTicket = r : f.Put_AuthenticationTicket(r), u && f.SetEditMode();\n } catch (a) {}\n\n try {\n if (Roblox.Client._silentModeEnabled) f.SetSilentModeEnabled(!0), Roblox.VideoPreRoll.videoInitialized && Roblox.VideoPreRoll.isPlaying() && Roblox.Client.SetStartInHiddenMode(!0), f.StartGame(i, n), RobloxLaunch.CheckGameStarted(f);else throw \"silent mode is disabled, fall back\";\n } catch (a) {\n if (f.StartGame(i, n), Roblox.Client._bringAppToFrontEnabled) try {\n f.BringAppToFront();\n } catch (h) {}\n Roblox.Client.ReleaseLauncher(f, !0, !1), $.modal.close();\n }\n } catch (a) {\n Roblox.Client.ReleaseLauncher(f, !0, !1);\n throw a;\n }\n } else {\n try {\n parent.playFromUrl(n);\n return;\n } catch (l) {}\n\n if (Roblox.Client.isRobloxBrowser()) try {\n window.external.StartGame(r, i, n);\n } catch (l) {\n throw \"window.external fallback failed, Roblox must not be installed or IE cannot access ActiveX\";\n } else throw \"launcher is null or undefined and external is missing\";\n RobloxLaunch.state = RobloxLaunchStates.None, $.modal.close();\n }\n } catch (a) {\n if (e = a.message, e === \"User cancelled\" && typeof urchinTracker != \"undefined\") return urchinTracker(\"Visit/UserCancelled/\" + t), !1;\n\n try {\n s = new ActiveXObject(\"Microsoft.XMLHTTP\");\n } catch (c) {\n e = \"FailedXMLHTTP/\" + e;\n }\n\n return Roblox.Client.isRobloxBrowser() ? typeof urchinTracker != \"undefined\" && urchinTracker(\"Visit/Fail/\" + o + encodeURIComponent(e)) : (typeof urchinTracker != \"undefined\" && urchinTracker(\"Visit/Redirect/\" + o + encodeURIComponent(e)), window.location = RobloxLaunch.launchGamePage), !1;\n }\n\n return typeof urchinTracker != \"undefined\" && urchinTracker(\"Visit/Success/\" + t), !0;\n}, RobloxLaunch.CheckGameStarted = function (n) {\n function r() {\n var e = !1;\n\n try {\n if (i || (i = window.ActiveXObject ? n.IsGameStarted : n.Get_GameStarted()), i && !Roblox.VideoPreRoll.isPlaying()) {\n if (MadStatus.stop(\"Connecting to Players...\"), RobloxLaunch.state = RobloxLaunchStates.None, $.modal.close(), t._cancelled = !0, Roblox.Client._hiddenModeEnabled && Roblox.Client.UnhideApp(), Roblox.Client._bringAppToFrontEnabled) try {\n n.BringAppToFront();\n } catch (f) {}\n Roblox.Client.ReleaseLauncher(n, !0, !1);\n } else t._cancelled || setTimeout(r, 1e3);\n } catch (u) {\n t._cancelled || setTimeout(r, 1e3);\n }\n }\n\n var t = RobloxLaunch.launcher,\n i;\n t === null && (t = new RBX.PlaceLauncher(\"PlaceLauncherStatusPanel\"), t._showDialog(), t._updateStatus(0)), i = !1, r();\n}, RobloxLaunch.CheckRobloxInstall = function (n) {\n if (Roblox.Client.IsRobloxInstalled()) return Roblox.Client.Update(), !0;\n window.location = n;\n}, RBX.PlaceLauncher = function (n) {\n this._cancelled = !1, this._popupID = n, this._popup = $(\"#\" + n);\n}, RBX.PlaceLauncher.prototype = {\n _showDialog: function _showDialog() {\n this._cancelled = !1, _popupOptions = {\n escClose: !0,\n opacity: 80,\n overlayCss: {\n backgroundColor: \"#000\"\n }\n }, this._popupID == \"PlaceLauncherStatusPanel\" && (Roblox.VideoPreRoll && Roblox.VideoPreRoll.showVideoPreRoll && !Roblox.VideoPreRoll.isExcluded() ? (this._popup = $(\"#videoPrerollPanel\"), _popupOptions.onShow = function (n) {\n Roblox.VideoPreRoll.correctIEModalPosition(n), Roblox.VideoPreRoll.start();\n }, _popupOptions.onClose = function () {\n Roblox.VideoPreRoll.close();\n }, _popupOptions.closeHTML = '<a href=\"#\" class=\"ImageButton closeBtnCircle_35h ABCloseCircle VprCloseButton\"></a>') : (this._popup = $(\"#\" + this._popupID), _popupOptions.onClose = function () {\n Roblox.VideoPreRoll.logVideoPreRoll(), $.modal.close();\n })), this._popup.modal(_popupOptions);\n var n = this;\n $(\".CancelPlaceLauncherButton\").click(function () {\n n.CancelLaunch();\n }), $(\".CancelPlaceLauncherButton\").show();\n },\n _reportDuration: function _reportDuration(n, t) {\n $.ajax({\n type: \"GET\",\n async: !0,\n cache: !1,\n timeout: 5e4,\n url: \"/Game/JoinRate.ashx?c=\" + RobloxLaunch.clientMetricType + \"&r=\" + t + \"&d=\" + n,\n success: function success() {}\n });\n },\n _onGameStatus: function _onGameStatus(n) {\n var r, i, t;\n\n if (this._cancelled) {\n r = +new Date() - RobloxLaunch.timer.getTime(), this._reportDuration(r, \"Cancel\");\n return;\n }\n\n if (this._updateStatus(n.status), n.status === 2) RobloxLaunch.StartGame(n.joinScriptUrl, \"Join\", n.authenticationUrl, n.authenticationTicket), i = +new Date() - RobloxLaunch.timer.getTime(), this._reportDuration(i, \"Success\");else if (n.status < 2 || n.status === 6) {\n var f = function f(n, t) {\n t._onGameStatus(n);\n },\n e = function e(n, t) {\n t._onGameError(n);\n },\n o = this,\n u = function u() {\n RobloxPlaceLauncherService.CheckGameJobStatus(n.jobId, f, e, o);\n };\n\n window.setTimeout(u, 2e3);\n } else n.status === 4 && (t = +new Date() - RobloxLaunch.timer.getTime(), this._reportDuration(t, \"Failure\"));\n },\n _updateStatus: function _updateStatus(n) {\n MadStatus.running || (MadStatus.init($(this._popup).find(\".MadStatusField\"), $(this._popup).find(\".MadStatusBackBuffer\"), 2e3, 800), MadStatus.start());\n\n switch (n) {\n case 0:\n break;\n\n case 1:\n MadStatus.manualUpdate(\"A server is loading the game...\", !0);\n break;\n\n case 2:\n MadStatus.manualUpdate(\"The server is ready. Joining the game...\", !0);\n break;\n\n case 3:\n MadStatus.manualUpdate(\"Joining games is temporarily disabled while we upgrade. Please try again soon.\", !1);\n break;\n\n case 4:\n MadStatus.manualUpdate(\"An error occurred. Please try again later.\", !1);\n break;\n\n case 5:\n MadStatus.manualUpdate(\"The game you requested has ended.\", !1);\n break;\n\n case 6:\n MadStatus.manualUpdate(\"The game you requested is currently full. Waiting for an opening...\", !0, !1);\n break;\n\n case 7:\n MadStatus.manualUpdate(\"Roblox is updating. Please wait...\", !0);\n break;\n\n case 8:\n MadStatus.manualUpdate(\"Requesting a server\", !0);\n break;\n\n default:\n MadStatus.stop(\"Connecting to Players...\");\n }\n\n $(this._popup).find(\".MadStatusStarting\").css(\"display\", \"none\"), $(this._popup).find(\".MadStatusSpinner\").css(\"visibility\", n === 3 || n === 4 || n === 5 ? \"hidden\" : \"visible\");\n },\n _onGameError: function _onGameError() {\n this._updateStatus(4);\n },\n _startUpdatePolling: function _startUpdatePolling(n) {\n var t, i;\n\n try {\n if (RobloxLaunch.state = RobloxLaunchStates.Upgrading, t = Roblox.Client.CreateLauncher(!0), i = window.ActiveXObject ? t.IsUpToDate : t.Get_IsUpToDate(), i || i === undefined) {\n try {\n t.PreStartGame();\n } catch (e) {}\n\n Roblox.Client.ReleaseLauncher(t, !0, !1), RobloxLaunch.state = RobloxLaunchStates.StartingServer, n();\n return;\n }\n\n var f = function f(t, i, r) {\n r._onUpdateStatus(t, i, n);\n },\n u = function u(n, t) {\n t._onUpdateError(n);\n },\n r = this;\n\n this.CheckUpdateStatus(f, u, t, n, r);\n } catch (e) {\n Roblox.Client.ReleaseLauncher(t, !0, !1), n();\n }\n },\n _onUpdateStatus: function _onUpdateStatus(n, t, i) {\n if (!this._cancelled) if (this._updateStatus(n), n === 8) Roblox.Client.ReleaseLauncher(t, !0, !0), Roblox.Client.Refresh(), RobloxLaunch.state = RobloxLaunchStates.StartingServer, i();else if (n === 7) {\n var f = function f(n, t, r) {\n r._onUpdateStatus(n, t, i);\n },\n e = function e(n, t) {\n t._onUpdateError(n);\n },\n r = this,\n u = function u() {\n r.CheckUpdateStatus(f, e, t, i, r);\n };\n\n window.setTimeout(u, 2e3);\n } else alert(\"Unknown status from CheckUpdateStatus\");\n },\n _onUpdateError: function _onUpdateError() {\n this._updateStatus(2);\n },\n CheckUpdateStatus: function CheckUpdateStatus(n, t, i, r, u) {\n try {\n if (i.PreStartGame(), window.ActiveXObject) var f = i.IsUpToDate;else f = i.Get_IsUpToDate();\n f || f === undefined ? n(8, i, u) : n(7, i, u);\n } catch (e) {\n n(8, i, u);\n }\n },\n RequestGame: function RequestGame(n, t) {\n var r;\n\n this._showDialog();\n\n var f = function f(n, t) {\n t._onGameStatus(n);\n },\n u = function u(n, t) {\n t._onGameError(n);\n },\n e = this,\n i = !1;\n\n return typeof Party != \"undefined\" && typeof Party.AmILeader == \"function\" && (i = Party.AmILeader()), r = function r() {\n RobloxPlaceLauncherService.RequestGame(n, i, t, f, u, e);\n }, this._startUpdatePolling(r), !1;\n },\n RequestPlayWithParty: function RequestPlayWithParty(n, t, i) {\n this._showDialog();\n\n var f = function f(n, t) {\n t._onGameStatus(n);\n },\n e = function e(n, t) {\n t._onGameError(n);\n },\n r = this,\n u = function u() {\n RobloxPlaceLauncherService.RequestPlayWithParty(n, t, i, f, e, r);\n };\n\n return this._startUpdatePolling(u), !1;\n },\n RequestGroupBuildGame: function RequestGroupBuildGame(n) {\n this._showDialog();\n\n var r = function r(n, t) {\n t._onGameStatus(n, !0);\n },\n u = function u(n, t) {\n t._onGameError(n);\n },\n t = this,\n i = function i() {\n RobloxPlaceLauncherService.RequestGroupBuildGame(n, r, u, t);\n };\n\n return this._startUpdatePolling(i), !1;\n },\n RequestFollowUser: function RequestFollowUser(n) {\n this._showDialog();\n\n var r = function r(n, t) {\n t._onGameStatus(n);\n },\n u = function u(n, t) {\n t._onError(n);\n },\n t = this,\n i = function i() {\n RobloxPlaceLauncherService.RequestFollowUser(n, r, u, t);\n };\n\n return this._startUpdatePolling(i), !1;\n },\n RequestGameJob: function RequestGameJob(n, t, i) {\n this._showDialog();\n\n var f = function f(n, t) {\n t._onGameStatus(n);\n },\n e = function e(n, t) {\n t._onGameError(n);\n },\n r = this,\n u = function u() {\n RobloxPlaceLauncherService.RequestGameJob(n, t, i, f, e, r);\n };\n\n return this._startUpdatePolling(u), !1;\n },\n CancelLaunch: function CancelLaunch() {\n return this._cancelled = !0, $.modal.close(), !1;\n },\n dispose: function dispose() {\n RBX.PlaceLauncher.callBaseMethod(this, \"dispose\");\n }\n};\n; /// VideoPreRoll.js\n\nfunction openVideoPreroll2(n) {\n Roblox.VideoPreRoll.test(n);\n}\n\nfunction flashCheck(n) {\n var i = !1,\n t,\n r;\n if (window.ActiveXObject) try {\n t = new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash.\" + n), i = !0;\n } catch (u) {} else navigator.plugins && navigator.mimeTypes.length > 0 && (t = navigator.plugins[\"Shockwave Flash\"], t && (r = navigator.plugins[\"Shockwave Flash\"].description.replace(/.*\\s(\\d+\\.\\d+).*/, \"$1\"), r >= n && (i = !0)));\n return i;\n}\n\ntypeof Roblox == \"undefined\" && (Roblox = {}), Roblox.VideoPreRoll = {\n newValue: \"\",\n showVideoPreRoll: !1,\n videoInitialized: !1,\n videoStarted: !1,\n videoCompleted: !1,\n videoSkipped: !1,\n videoCancelled: !1,\n videoErrored: !1,\n videoOptions: {\n key: \"integration_test\",\n companionId: \"videoPrerollCompanionAd\"\n },\n myvpaidad: null,\n loadingBarMaxTime: 3e4,\n loadingBarCurrentTime: 0,\n loadingBarIntervalID: 0,\n loadingBarID: \"videoPrerollLoadingBar\",\n loadingBarInnerID: \"videoPrerollLoadingBarCompleted\",\n loadingBarPercentageID: \"videoPrerollLoadingPercent\",\n videoLoadingTimeout: 7e3,\n videoPlayingTimeout: 23e3,\n videoLogNote: \"\",\n logsEnabled: !1,\n excludedPlaceIds: \"\",\n specificAdOnPlacePageEnabled: !1,\n specificAdOnPlacePageId: 0,\n specificAdOnPlacePageCategory: \"\",\n checkEligibility: function checkEligibility() {\n Roblox.VideoPreRoll.showVideoPreRoll && (flashCheck(8) ? typeof __adaptv__ == \"undefined\" ? (Roblox.VideoPreRoll.videoLogNote = \"NoAdapTv\", Roblox.VideoPreRoll.showVideoPreRoll = !1) : Roblox.Client.IsRobloxInstalled() ? Roblox.Client.isIDE() ? (Roblox.VideoPreRoll.videoLogNote = \"RobloxStudio\", Roblox.VideoPreRoll.showVideoPreRoll = !1) : Roblox.Client.isRobloxBrowser() ? (Roblox.VideoPreRoll.videoLogNote = \"RobloxPlayer\", Roblox.VideoPreRoll.showVideoPreRoll = !1) : window.chrome && window.location.hash == \"#chromeInstall\" && (Roblox.VideoPreRoll.showVideoPreRoll = !1) : Roblox.VideoPreRoll.showVideoPreRoll = !1 : (Roblox.VideoPreRoll.videoLogNote = \"NoFlash\", Roblox.VideoPreRoll.showVideoPreRoll = !1));\n },\n isExcluded: function isExcluded() {\n var t, n;\n if (Roblox.VideoPreRoll.showVideoPreRoll && Roblox.VideoPreRoll.excludedPlaceIds !== \"\" && (t = Roblox.VideoPreRoll.excludedPlaceIds.split(\",\"), typeof play_placeId != \"undefined\")) for (n = 0; n < t.length; n++) {\n if (play_placeId == t[n]) return Roblox.VideoPreRoll.videoLogNote = \"ExcludedPlace\", !0;\n }\n return !1;\n },\n start: function start() {\n var i, r, t, n;\n this.videoInitialized = !0, this.videoStarted = !1, this.videoCancelled = !1, this.videoCompleted = !1, this.videoSkipped = !1, this.loadingBarCurrentTime = 0, this.videoLogNote = \"\", Roblox.VideoPreRoll.specificAdOnPlacePageEnabled && typeof play_placeId != \"undefined\" && (i = \",\" + Roblox.VideoPreRoll.specificAdOnPlacePageCategory, play_placeId == Roblox.VideoPreRoll.specificAdOnPlacePageId && Roblox.VideoPreRoll.videoOptions.categories.indexOf(i) == -1 && (Roblox.VideoPreRoll.videoOptions.categories += i)), r = __adaptv__, this.myvpaidad = new r.ads.vpaid.VPAIDAd(\"videoPrerollMainDiv\"), t = 1e3, LoadingBar.init(this.loadingBarID, this.loadingBarInnerID, this.loadingBarPercentageID), this.loadingBarIntervalID = setInterval(function () {\n Roblox.VideoPreRoll.loadingBarCurrentTime += t, LoadingBar.update(Roblox.VideoPreRoll.loadingBarID, Roblox.VideoPreRoll.loadingBarCurrentTime / Roblox.VideoPreRoll.loadingBarMaxTime);\n }, t), n = r.ads.vpaid.VPAIDEvent;\n this.myvpaidad.on(n.AdLoaded, function (n) {\n Roblox.VideoPreRoll._onVideoLoaded(n);\n });\n this.myvpaidad.on(n.AdStarted, function (n) {\n Roblox.VideoPreRoll._onVideoStart(n);\n });\n this.myvpaidad.on(n.AdStopped, function (n) {\n Roblox.VideoPreRoll._onVideoComplete(n);\n });\n this.myvpaidad.on(n.AdError, function (n) {\n Roblox.VideoPreRoll._onVideoError(n);\n });\n\n try {\n this.myvpaidad.initAd(391, 312, this.videoOptions);\n } catch (u) {\n f();\n }\n },\n error: function error() {\n clearInterval(loadingBarInterval);\n },\n cancel: function cancel() {\n this.videoCancelled = !0, $.modal.close();\n },\n skip: function skip() {\n this.videoCompleted = !0, this.videoSkipped = !0, this.showVideoPreRoll = !1;\n },\n close: function close() {\n MadStatus.running && MadStatus.stop(\"\"), RobloxLaunch.launcher && (RobloxLaunch.launcher._cancelled = !0), clearInterval(this.loadingBarIntervalID), LoadingBar.dispose(this.loadingBarID);\n\n try {\n this.myvpaidad.stopAd();\n } catch (n) {}\n\n this.isPlaying() && (this.videoCancelled = !0), $.modal.close(), this.logVideoPreRoll();\n },\n _onVideoError: function f() {\n this.videoCompleted = !0, this.videoErrored = !0;\n },\n _onVideoLoaded: function _onVideoLoaded(n) {\n try {\n this.myvpaidad.startAd();\n } catch (t) {\n f(n);\n }\n },\n _onVideoStart: function _onVideoStart() {\n this.videoStarted = !0;\n },\n _onVideoComplete: function _onVideoComplete() {\n this.videoStarted && this.videoCancelled == !1 && (this.videoCompleted = !0, this.showVideoPreRoll = !1, this.newValue != \"\" && $.cookie(\"RBXVPR\", this.newValue, 180));\n },\n logVideoPreRoll: function logVideoPreRoll() {\n if (Roblox.VideoPreRoll.logsEnabled) {\n var n = \"\";\n if (Roblox.VideoPreRoll.videoCompleted) n = \"Complete\", Roblox.VideoPreRoll.videoLogNote == \"\" && (Roblox.VideoPreRoll.videoLogNote = \"NoTimeout\"), Roblox.VideoPreRoll.logsEnabled = !1;else if (Roblox.VideoPreRoll.videoCancelled) n = \"Cancelled\", Roblox.VideoPreRoll.videoLogNote = RobloxLaunch.state;else if (Roblox.VideoPreRoll.videoInitialized == !1 && Roblox.VideoPreRoll.videoLogNote != \"\") n = \"Failed\", Roblox.VideoPreRoll.logsEnabled = !1;else return;\n GoogleAnalyticsEvents.FireEvent([\"PreRoll\", n, Roblox.VideoPreRoll.videoLogNote]);\n }\n },\n isPlaying: function isPlaying() {\n return Roblox.VideoPreRoll.videoInitialized ? (Roblox.VideoPreRoll.videoInitialized && !Roblox.VideoPreRoll.videoStarted && Roblox.VideoPreRoll.loadingBarCurrentTime > Roblox.VideoPreRoll.videoLoadingTimeout && (Roblox.VideoPreRoll.videoCompleted = !0, Roblox.VideoPreRoll.videoLogNote = \"LoadingTimeout\"), Roblox.VideoPreRoll.videoStarted && !Roblox.VideoPreRoll.videoCompleted && Roblox.VideoPreRoll.loadingBarCurrentTime > Roblox.VideoPreRoll.videoPlayingTimeout && (Roblox.VideoPreRoll.videoCompleted = !0, Roblox.VideoPreRoll.videoLogNote = \"PlayingTimeout\"), !Roblox.VideoPreRoll.videoCompleted) : !1;\n },\n correctIEModalPosition: function correctIEModalPosition(n) {\n if (n.container.innerHeight() <= 30) {\n var i = $(\"#videoPrerollPanel\"),\n t = -Math.floor(i.innerHeight() / 2);\n i.css({\n position: \"relative\",\n top: t + \"px\"\n }), n.container.find(\".VprCloseButton\").css({\n top: t - 10 + \"px\",\n \"z-index\": \"1003\"\n });\n }\n },\n test: function test() {\n _popupOptions = {\n escClose: !0,\n opacity: 80,\n overlayCss: {\n backgroundColor: \"#000\"\n },\n onShow: function onShow(n) {\n Roblox.VideoPreRoll.correctIEModalPosition(n), Roblox.VideoPreRoll.start();\n },\n onClose: function onClose() {\n Roblox.VideoPreRoll.close();\n },\n closeHTML: '<a href=\"#\" class=\"ImageButton closeBtnCircle_35h ABCloseCircle VprCloseButton\"></a>'\n }, $(\"#videoPrerollPanel\").modal(_popupOptions), MadStatus.running || (MadStatus.init($(\"#videoPrerollPanel\").find(\".MadStatusField\"), $(\"#videoPrerollPanel\").find(\".MadStatusBackBuffer\"), 2e3, 800), MadStatus.start()), $(\"#videoPrerollPanel\").find(\".MadStatusStarting\").css(\"display\", \"none\"), $(\"#videoPrerollPanel\").find(\".MadStatusSpinner\").css(\"visibility\", status === 3 || status === 4 || status === 5 ? \"hidden\" : \"visible\");\n }\n};\nvar LoadingBar = {\n bars: [],\n init: function init(n, t, i, r) {\n var u = this.get(n);\n u == null && (u = {}), u.barID = n, u.innerBarID = t, u.percentageID = i, typeof r == \"undefined\" && (u.percentComplete = 0), this.bars.push(u), this.update(n, u.percentComplete);\n },\n get: function get(n) {\n for (var t = 0; t < this.bars.length; t++) {\n if (this.bars[t].barID == n) return this.bars[t];\n }\n\n return null;\n },\n dispose: function dispose(n) {\n for (var t = 0; t < this.bars.length; t++) {\n this.bars[t].barID == n && this.bars.splice(t, 1);\n }\n },\n update: function update(n, t) {\n var i = this.get(n),\n u,\n r;\n i && (t > 1 && (t = 1), u = $(\"#\" + n).width(), r = Math.round(u * t), $(\"#\" + i.innerBarID).animate({\n width: r\n }, 200, \"swing\"), i.percentageID && $(\"#\" + i.percentageID).length > 0 && $(\"#\" + i.percentageID).html(Math.round(t * 100) + \"%\"), i.percentComplete = t);\n }\n}; // end roblox.js//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvYXBwLmpzPzZkNDAiXSwibmFtZXMiOlsibiIsInQiLCJwIiwiaSIsInIiLCJzcGxpdCIsInNoaWZ0IiwibGVuZ3RoIiwiayIsInUiLCJudCIsImYiLCJjcmVhdGVFbGVtZW50IiwiaHJlZiIsInJlbCIsInR5cGUiLCJwYXJlbnROb2RlIiwiaW5zZXJ0QmVmb3JlIiwiZyIsInNyYyIsIm9ubG9hZCIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJkIiwicG9wIiwibyIsImluZGV4T2YiLCJtb2R1bGVQYXRoIiwicmVwbGFjZSIsInYiLCJiYXNlVXJsIiwidmVyc2lvbnMiLCJzIiwiUm9ibG94IiwicHVzaCIsImUiLCJsb2FkZWQiLCJkZXBzTG9hZGVkIiwibGlzdGVuZXJzIiwiYSIsImgiLCJiIiwiZXh0ZXJuYWxSZXNvdXJjZXMiLCJ0b1N0cmluZyIsImwiLCJjIiwiYXBwbHkiLCJzbGljZSIsInkiLCJ3IiwidW5zaGlmdCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJjYWxsIiwiY29uZmlnIiwicmVxdWlyZSIsImRlZmluZSIsIndpbmRvdyIsInRvSlNPTiIsIkpTT04iLCJzdHJpbmdpZnkiLCJ1bmRlZmluZWQiLCJxdW90ZVN0cmluZyIsImNvbnN0cnVjdG9yIiwiRGF0ZSIsImdldFVUQ01vbnRoIiwiZ2V0VVRDRGF0ZSIsImdldFVUQ0Z1bGxZZWFyIiwiZ2V0VVRDSG91cnMiLCJnZXRVVENNaW51dGVzIiwiZ2V0VVRDU2Vjb25kcyIsImdldFVUQ01pbGxpc2Vjb25kcyIsIkFycmF5Iiwiam9pbiIsImV2YWxKU09OIiwicGFyc2UiLCJldmFsIiwic2VjdXJlRXZhbEpTT04iLCJ0ZXN0IiwiU3ludGF4RXJyb3IiLCJtYXRjaCIsImNoYXJDb2RlQXQiLCJNYXRoIiwiZmxvb3IiLCJqUXVlcnkiLCJicm93c2VyIiwibXNpZSIsInBhcnNlSW50IiwidmVyc2lvbiIsIlhNTEh0dHBSZXF1ZXN0IiwibW9kYWwiLCJpbXBsIiwiaW5pdCIsImNsb3NlIiwiZm4iLCJkZWZhdWx0cyIsImFwcGVuZFRvIiwiZm9jdXMiLCJvcGFjaXR5Iiwib3ZlcmxheUlkIiwib3ZlcmxheUNzcyIsImNvbnRhaW5lcklkIiwiY29udGFpbmVyQ3NzIiwiZGF0YUlkIiwiZGF0YUNzcyIsIm1pbkhlaWdodCIsIm1pbldpZHRoIiwibWF4SGVpZ2h0IiwibWF4V2lkdGgiLCJhdXRvUmVzaXplIiwiYXV0b1Bvc2l0aW9uIiwiekluZGV4IiwiY2xvc2VIVE1MIiwiY2xvc2VDbGFzcyIsImVzY0Nsb3NlIiwib3ZlcmxheUNsb3NlIiwicG9zaXRpb24iLCJwZXJzaXN0Iiwib25PcGVuIiwib25TaG93Iiwib25DbG9zZSIsImRhdGEiLCJleHRlbmQiLCJvY2NiIiwicGxhY2Vob2xkZXIiLCJwYXJlbnQiLCJzaXplIiwiYmVmb3JlIiwiYXR0ciIsImNzcyIsImRpc3BsYXkiLCJvcmlnIiwiY2xvbmUiLCJodG1sIiwiYWxlcnQiLCJjcmVhdGUiLCJvcGVuIiwiaXNGdW5jdGlvbiIsImdldERpbWVuc2lvbnMiLCJpZnJhbWUiLCJpZnJhbWVDc3MiLCJoZWlnaHQiLCJ3aWR0aCIsInRvcCIsImxlZnQiLCJvdmVybGF5IiwiYWRkQ2xhc3MiLCJjb250YWluZXIiLCJhcHBlbmQiLCJ3cmFwIiwib3V0bGluZSIsIm92ZXJmbG93Iiwic2V0Q29udGFpbmVyRGltZW5zaW9ucyIsImZpeElFIiwiYmluZEV2ZW50cyIsImJpbmQiLCJwcmV2ZW50RGVmYXVsdCIsImtleUNvZGUiLCJ3YXRjaFRhYiIsInVuYmluZEV2ZW50cyIsInVuYmluZCIsImVhY2giLCJzdHlsZSIsInJlbW92ZUV4cHJlc3Npb24iLCJzZXRFeHByZXNzaW9uIiwib3BlcmEiLCJqcXVlcnkiLCJkb2N1bWVudEVsZW1lbnQiLCJjbGllbnRIZWlnaHQiLCJpbm5lckhlaWdodCIsImdldFZhbCIsIm91dGVySGVpZ2h0Iiwib3V0ZXJXaWR0aCIsInNldFBvc2l0aW9uIiwidGFyZ2V0IiwicGFyZW50cyIsImlucHV0cyIsInNoaWZ0S2V5Iiwic2V0VGltZW91dCIsInNob3ciLCJyZXBsYWNlV2l0aCIsInJlbW92ZUNsYXNzIiwiaGlkZSIsInJlbW92ZSIsInRpcHN5IiwiZWxlbWVudE9wdGlvbnMiLCJob3ZlciIsInJlbW92ZUF0dHIiLCJ0aXRsZSIsImZpbmQiLCJmYWxsYmFjayIsIm9mZnNldCIsIm9mZnNldFdpZHRoIiwib2Zmc2V0SGVpZ2h0IiwiZ2V0IiwiY2xhc3NOYW1lIiwidmlzaWJpbGl0eSIsImJvZHkiLCJncmF2aXR5IiwiY2hhckF0IiwiZmFkZSIsImFuaW1hdGUiLCJzdG9wIiwiZmFkZU91dCIsIm1ldGFkYXRhIiwiYXV0b05TIiwic2Nyb2xsVG9wIiwiYXV0b1dFIiwic2Nyb2xsTGVmdCIsIlJvYmxveFRodW1icyIsIiQiLCJVc2VySUQiLCJUaHVtYm5haWxGb3JtYXRJRCIsInN1YnN0cmluZyIsIkdlbmVyYXRlQXZhdGFyVGh1bWIiLCJTdHJpbmciLCJlc2NhcGVIVE1MIiwiSW5pdFN0cmluZ1RydW5jYXRvciIsImlzSW5pdGlhbGl6ZWQiLCJmaXRTdHJpbmdTcGFuIiwicGFkZGluZyIsImFwcGVuZENoaWxkIiwiZml0U3RyaW5nVG9XaWR0aCIsImlubmVySFRNTCIsImZpdFN0cmluZ1RvV2lkdGhTYWZlIiwibGFzdEluZGV4T2YiLCJsYXN0SW5kZXgiLCJpc0Zpbml0ZSIsImhhc093blByb3BlcnR5IiwidmFsdWVPZiIsIk51bWJlciIsIkJvb2xlYW4iLCJFcnJvciIsIlN5cyIsIkJyb3dzZXIiLCJXZWJLaXQiLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJhZ2VudCIsInBhcnNlRmxvYXQiLCJuYW1lIiwiR29vZ2xlQW5hbHl0aWNzRXZlbnRzIiwiRmlyZUV2ZW50IiwiX2dhcSIsImNvbmNhdCIsIkZpeGVkVUkiLCJwYWdlWU9mZnNldCIsImd1dHRlckFkc0VuYWJsZWQiLCJzY3JvbGwiLCJpbm5lcldpZHRoIiwidG9Mb3dlckNhc2UiLCJsb2FkIiwicmVzaXplIiwiaXNNb2JpbGUiLCJ1bmZpeEhlYWRlciIsImNvb2tpZSIsImV4cGlyZXMiLCJ0b1VUQ1N0cmluZyIsInNldFRpbWUiLCJnZXRUaW1lIiwicGF0aCIsImRvbWFpbiIsInNlY3VyZSIsImVuY29kZVVSSUNvbXBvbmVudCIsInRyaW0iLCJkZWNvZGVVUklDb21wb25lbnQiLCJSb2Jsb3hKU09OQ29va2llIiwiX2Nvb2tpZW5hbWUiLCJnZXRKU09OQ29va2llIiwic2V0SlNPTkNvb2tpZSIsInJlbW92ZUpTT05Db29raWUiLCJKU09OQ29va2llIiwiRGVsZXRlIiwiU2V0T2JqIiwiU2V0SlNPTiIsIkdldE9iaiIsIkdldEpTT04iLCJYc3JmVG9rZW4iLCJhbGxVcmxzRW5hYmxlZCIsImFqYXhQcmVmaWx0ZXIiLCJkYXRhVHlwZSIsInVybCIsInBhcmFtIiwidG9rZW4iLCJlcnJvciIsInN0YXR1cyIsImdldFJlc3BvbnNlSGVhZGVyIiwiYWpheCIsInNldFRva2VuIiwiZ2V0VG9rZW4iLCJhZGRFbmFibGVkVXJsIiwiUkJYQmFzZUV2ZW50TGlzdGVuZXIiLCJldmVudEtleSIsImV2ZW50cyIsInByb3h5IiwibG9jYWxDb3B5IiwiaGFuZGxlRXZlbnQiLCJkaXN0aWxsRGF0YSIsImNvbnNvbGUiLCJsb2ciLCJmaXJlRXZlbnQiLCJSb2Jsb3hFdmVudE1hbmFnZXIiLCJSZWdFeHAiLCJleGVjIiwiZW5hYmxlZCIsImluaXRpYWxpemVkIiwiZXZlbnRRdWV1ZSIsImluaXRpYWxpemUiLCJ0cmlnZ2VyRXZlbnQiLCJldmVudE5hbWUiLCJhcmdzIiwiZ2V0TWFya2V0aW5nR3VpZCIsImJyb3dzZXJpZCIsImd1aWQiLCJ0cmlnZ2VyIiwicmVnaXN0ZXJDb29raWVTdG9yZUV2ZW50IiwiaW5zZXJ0RGF0YVN0b3JlS2V5VmFsdWVQYWlyIiwibW9uaXRvckNvb2tpZVN0b3JlIiwiQ2xpZW50IiwibG9jYXRpb24iLCJwcm90b2NvbCIsIkNyZWF0ZUxhdW5jaGVyIiwiR2V0S2V5VmFsdWUiLCJ1c2VyVHlwZSIsInVzZXJJZCIsIlNldEtleVZhbHVlIiwiUmVsZWFzZUxhdW5jaGVyIiwiUm9ibG94TGlzdGVuZXIiLCJldmVudFRvU3RyaW5nIiwiZGF0YUtleSIsInJlc3RVcmwiLCJhcmciLCJLb250YWdlbnRMaXN0ZW5lciIsIkFQSUtleSIsIlN0YWdpbmdBUElLZXkiLCJTdGFnaW5nRXZlbnRzIiwidHMiLCJ1c2VyX2lwIiwiYWdlIiwiZ2VuZGVyIiwidG90YWwiLCJyb3VuZCIsInByb2R1Y3ROYW1lIiwicHJvdmlkZXIiLCJjYXRlZ29yeSIsInRyYWNraW5nIiwic2hvcnR0cmFja2luZyIsInRyYWNraW5ndGFnIiwiZXZlbnRUeXBlIiwib3MiLCJwbGFjZUlkIiwiZXhwZXJpbWVudCIsInZhcmlhdGlvbiIsInBhZ2UiLCJvcHQxIiwib3B0MiIsImluc3RhbGxlZCIsInNvdXJjZVR5cGUiLCJzb3VyY2UiLCJjYW1wYWlnbiIsIm1lZGl1bSIsIm1lcmNoYW50IiwiY2FyZFZhbHVlIiwiYWN0aW9uIiwiaXNTdGFnaW5nRXZlbnQiLCJzdGFnaW5nIiwic3QxIiwiR29vZ2xlTGlzdGVuZXIiLCJvcHRfbGFiZWwiLCJvcHRfdmFsdWUiLCJNb25nb0xpc3RlbmVyIiwic2hhcmQiLCJkZWZhdWx0U2hhcmQiLCJkYXRhTWFwIiwibXNnIiwibGluZSIsInVhIiwiZ2V0Q2F0ZWdvcnlGcm9tRXZlbnROYW1lIiwiaXAiLCJjbGllbnRJcEFkZHJlc3MiLCJsb2dnaW5nVVJJIiwianNvbnBDYWxsYmFjayIsImNhbGxiYWNrIiwiU2VhcmNoVmlzaW9uTGlzdGVuZXIiLCJlc3Z0a192IiwiZXN2dGtfZXN2aWQiLCJldmVudCIsIm9yZGVyaWQiLCJlc3Z0a190cmFjayIsIlNpdGVUb3VjaEV2ZW50IiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsImlzTmFOIiwidXNlTG9jYWxTdG9yYWdlIiwicmVtb3ZlSXRlbSIsInNldEl0ZW0iLCJkYXRlRGlmZlRocmVzaG9sZEluSG91cnMiLCJ1cGRhdGVMYXN0QWN0aXZpdHlBbmRGaXJlRXZlbnQiLCJnZXRMYXN0QWN0aXZpdHkiLCJzZXRMYXN0QWN0aXZpdHkiLCJKU0Vycm9yVHJhY2tlciIsInNob3dBbGVydCIsImRlZmF1bHRQaXhlbCIsImludGVybmFsRXZlbnRMaXN0ZW5lclBpeGVsRW5hYmxlZCIsImphdmFzY3JpcHRTdGFja1RyYWNlRW5hYmxlZCIsImFkZE9uRXJyb3JFdmVudEhhbmRsZXIiLCJlcnJvckhhbmRsZXIiLCJsb2dFeGNlcHRpb24iLCJvbmVycm9yIiwicHJvY2Vzc0V4Y2VwdGlvbiIsImZpcmVHQVBpeGVsIiwiZGlzdGlsbEdBRGF0YSIsInNob3dFcnJvck1lc3NhZ2UiLCJjcmVhdGVVUkwiLCJzdHVkaW8yQWxlcnRNb2RhbCIsInNob3dQcm9tcHQiLCJ1cGRhdGVTdHVkaW9BbGVydFVzZXJQcmVmZXJlbmNlIiwiYmFja2dyb3VuZENvbG9yIiwiaXNJREUiLCJjbGljayIsInRyeVRvRG93bmxvYWQiLCJvSUZybSIsImdldEVsZW1lbnRCeUlkIiwibG9nU3RhdGlzdGljcyIsIlR5cGUiLCJyZWdpc3Rlck5hbWVzcGFjZSIsIl9pbnN0YWxsSG9zdCIsIl9pbnN0YWxsU3VjY2VzcyIsIl9DTFNJRCIsIl9jb250aW51YXRpb24iLCJfc2tpcCIsIl9pc0lERSIsIl9pc1JvYmxveEJyb3dzZXIiLCJfaXNQbGFjZUxhdW5jaCIsIl9zaWxlbnRNb2RlRW5hYmxlZCIsIl9icmluZ0FwcFRvRnJvbnRFbmFibGVkIiwiX251bUxvY2tzIiwiX2xvZ1RpbWluZyIsIl9sb2dTdGFydFRpbWUiLCJfbG9nRW5kVGltZSIsIl9oaWRkZW5Nb2RlRW5hYmxlZCIsIl9ydW5JbnN0YWxsQUJUZXN0IiwiR2V0SW5zdGFsbEhvc3QiLCJBY3RpdmVYT2JqZWN0IiwiSW5zdGFsbEhvc3QiLCJHZXRfSW5zdGFsbEhvc3QiLCJpbml0Q2xpZW50UHJvcHMiLCJIZWxsbyIsImV4dGVybmFsIiwiSXNSb2Jsb3hBcHBJREUiLCJpc1JvYmxveEJyb3dzZXIiLCJyb2Jsb3hCcm93c2VySW5zdGFsbEhvc3QiLCJJc1JvYmxveFByb3h5SW5zdGFsbGVkIiwiSXNSb2Jsb3hJbnN0YWxsZWQiLCJTZXRTdGFydEluSGlkZGVuTW9kZSIsIlVuaGlkZUFwcCIsIlVwZGF0ZSIsIldhaXRGb3JSb2Jsb3giLCJfY2FuY2VsbGVkIiwiSW1wbGVtZW50c1Byb3h5IiwiSW5zdGFsbGF0aW9uSW5zdHJ1Y3Rpb25zIiwicnVuSW5zdGFsbEFCVGVzdCIsImFwcFZlcnNpb24iLCJjaHJvbWUiLCJoYXNoIiwicGxheV9wbGFjZUlkIiwiX29udGltZXIiLCJSZXN1bWVUaW1lciIsIlJlZnJlc2giLCJwbHVnaW5zIiwicmVmcmVzaCIsIl9vbkNhbmNlbCIsIk1hZFN0YXR1cyIsInJ1bm5pbmciLCJ1cGRhdGVJbnRlcnZhbCIsImZhZGVJbnRlcnZhbCIsInRpbWVvdXQiLCJmaWVsZCIsImJhY2tCdWZmZXIiLCJwYXJ0aWNpcGxlIiwibW9kaWZpZXIiLCJzdWJqZWN0IiwibmV3TGliIiwibGliU3RyaW5nIiwicmFuZG9tIiwic3RhcnQiLCJzZXRJbnRlcnZhbCIsImNsZWFySW50ZXJ2YWwiLCJtYW51YWxVcGRhdGUiLCJ1cGRhdGUiLCJub0FuaW0iLCJmYWRlSW4iLCJSQlgiLCJSb2Jsb3hMYXVuY2hTdGF0ZXMiLCJTdGFydGluZ1NlcnZlciIsIlN0YXJ0aW5nQ2xpZW50IiwiVXBncmFkaW5nIiwiTm9uZSIsIlJvYmxveExhdW5jaCIsImxhdW5jaEdhbWVQYWdlIiwidGltZXIiLCJjbGllbnRNZXRyaWNUeXBlIiwibGF1bmNoZXIiLCJnb29nbGVBbmFseXRpY3NDYWxsYmFjayIsIl9Hb29nbGVBbmFseXRpY3NDYWxsYmFjayIsInN0YXRlIiwic2VjdXJlQXV0aGVudGljYXRlIiwiUm9ibG94UGxhY2VMYXVuY2hlclNlcnZpY2UiLCJMb2dKb2luQ2xpY2siLCJyZXF1ZXN0IiwiUmVxdWVzdEdhbWUiLCJnZXRKU09OIiwiaXNQYXJ0eUxlYWRlciIsIlJlcXVlc3RQbGF5V2l0aFBhcnR5IiwicGFydHlHdWlkIiwiZ2FtZUlkIiwiUmVxdWVzdEdyb3VwQnVpbGRHYW1lIiwiUmVxdWVzdEZvbGxvd1VzZXIiLCJSZXF1ZXN0R2FtZUpvYiIsImdhbWVKb2JJZCIsIkNoZWNrR2FtZUpvYlN0YXR1cyIsImpvYklkIiwiY2hlY2tSb2Jsb3hJbnN0YWxsIiwiUGxhY2VMYXVuY2hlciIsIlN0YXJ0R2FtZSIsIlNlbGVuaXVtVGVzdE1vZGUiLCJ1cmNoaW5UcmFja2VyIiwiSXNSb2Jsb3hBQkFwcCIsIklzUm9ibG94MkFwcCIsIkF1dGhlbnRpY2F0aW9uVGlja2V0IiwiUHV0X0F1dGhlbnRpY2F0aW9uVGlja2V0IiwiU2V0RWRpdE1vZGUiLCJTZXRTaWxlbnRNb2RlRW5hYmxlZCIsIlZpZGVvUHJlUm9sbCIsInZpZGVvSW5pdGlhbGl6ZWQiLCJpc1BsYXlpbmciLCJDaGVja0dhbWVTdGFydGVkIiwiQnJpbmdBcHBUb0Zyb250IiwicGxheUZyb21VcmwiLCJtZXNzYWdlIiwiSXNHYW1lU3RhcnRlZCIsIkdldF9HYW1lU3RhcnRlZCIsIl9zaG93RGlhbG9nIiwiX3VwZGF0ZVN0YXR1cyIsIkNoZWNrUm9ibG94SW5zdGFsbCIsIl9wb3B1cElEIiwiX3BvcHVwIiwiX3BvcHVwT3B0aW9ucyIsInNob3dWaWRlb1ByZVJvbGwiLCJpc0V4Y2x1ZGVkIiwiY29ycmVjdElFTW9kYWxQb3NpdGlvbiIsImxvZ1ZpZGVvUHJlUm9sbCIsIkNhbmNlbExhdW5jaCIsIl9yZXBvcnREdXJhdGlvbiIsImFzeW5jIiwiY2FjaGUiLCJzdWNjZXNzIiwiX29uR2FtZVN0YXR1cyIsImpvaW5TY3JpcHRVcmwiLCJhdXRoZW50aWNhdGlvblVybCIsImF1dGhlbnRpY2F0aW9uVGlja2V0IiwiX29uR2FtZUVycm9yIiwiX3N0YXJ0VXBkYXRlUG9sbGluZyIsIklzVXBUb0RhdGUiLCJHZXRfSXNVcFRvRGF0ZSIsIlByZVN0YXJ0R2FtZSIsIl9vblVwZGF0ZVN0YXR1cyIsIl9vblVwZGF0ZUVycm9yIiwiQ2hlY2tVcGRhdGVTdGF0dXMiLCJQYXJ0eSIsIkFtSUxlYWRlciIsIl9vbkVycm9yIiwiZGlzcG9zZSIsImNhbGxCYXNlTWV0aG9kIiwib3BlblZpZGVvUHJlcm9sbDIiLCJmbGFzaENoZWNrIiwibWltZVR5cGVzIiwiZGVzY3JpcHRpb24iLCJuZXdWYWx1ZSIsInZpZGVvU3RhcnRlZCIsInZpZGVvQ29tcGxldGVkIiwidmlkZW9Ta2lwcGVkIiwidmlkZW9DYW5jZWxsZWQiLCJ2aWRlb0Vycm9yZWQiLCJ2aWRlb09wdGlvbnMiLCJrZXkiLCJjb21wYW5pb25JZCIsIm15dnBhaWRhZCIsImxvYWRpbmdCYXJNYXhUaW1lIiwibG9hZGluZ0JhckN1cnJlbnRUaW1lIiwibG9hZGluZ0JhckludGVydmFsSUQiLCJsb2FkaW5nQmFySUQiLCJsb2FkaW5nQmFySW5uZXJJRCIsImxvYWRpbmdCYXJQZXJjZW50YWdlSUQiLCJ2aWRlb0xvYWRpbmdUaW1lb3V0IiwidmlkZW9QbGF5aW5nVGltZW91dCIsInZpZGVvTG9nTm90ZSIsImxvZ3NFbmFibGVkIiwiZXhjbHVkZWRQbGFjZUlkcyIsInNwZWNpZmljQWRPblBsYWNlUGFnZUVuYWJsZWQiLCJzcGVjaWZpY0FkT25QbGFjZVBhZ2VJZCIsInNwZWNpZmljQWRPblBsYWNlUGFnZUNhdGVnb3J5IiwiY2hlY2tFbGlnaWJpbGl0eSIsIl9fYWRhcHR2X18iLCJjYXRlZ29yaWVzIiwiYWRzIiwidnBhaWQiLCJWUEFJREFkIiwiTG9hZGluZ0JhciIsIlZQQUlERXZlbnQiLCJvbiIsIkFkTG9hZGVkIiwiX29uVmlkZW9Mb2FkZWQiLCJBZFN0YXJ0ZWQiLCJfb25WaWRlb1N0YXJ0IiwiQWRTdG9wcGVkIiwiX29uVmlkZW9Db21wbGV0ZSIsIkFkRXJyb3IiLCJfb25WaWRlb0Vycm9yIiwiaW5pdEFkIiwibG9hZGluZ0JhckludGVydmFsIiwiY2FuY2VsIiwic2tpcCIsInN0b3BBZCIsInN0YXJ0QWQiLCJiYXJzIiwiYmFySUQiLCJpbm5lckJhcklEIiwicGVyY2VudGFnZUlEIiwicGVyY2VudENvbXBsZXRlIiwic3Bs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QUFVQSxDQUFDLEdBQUcsQ0FBZCxHQUFrQlEsQ0FBQyxHQUFHMk0sQ0FBQyxDQUFDLE1BQU1wTixDQUFQLENBQUQsQ0FBV2dKLEtBQVgsRUFBdEIsRUFBMEM1SSxDQUFDLEdBQUdnRixJQUFJLENBQUNtUSxLQUFMLENBQVc5VSxDQUFDLEdBQUdSLENBQWYsQ0FBOUMsRUFBaUVtTixDQUFDLENBQUMsTUFBTWpOLENBQUMsQ0FBQ2tuQixVQUFULENBQUQsQ0FBc0IxYSxPQUF0QixDQUE4QjtBQUNqRzNELFdBQUssRUFBRTVJO0FBRDBGLEtBQTlCLEVBRXBFLEdBRm9FLEVBRS9ELE9BRitELENBQWpFLEVBRVlELENBQUMsQ0FBQ21uQixZQUFGLElBQWtCbGEsQ0FBQyxDQUFDLE1BQU1qTixDQUFDLENBQUNtbkIsWUFBVCxDQUFELENBQXdCL21CLE1BQXhCLEdBQWlDLENBQW5ELElBQXdENk0sQ0FBQyxDQUFDLE1BQU1qTixDQUFDLENBQUNtbkIsWUFBVCxDQUFELENBQXdCL2UsSUFBeEIsQ0FBNkJuRCxJQUFJLENBQUNtUSxLQUFMLENBQVd0VixDQUFDLEdBQUcsR0FBZixJQUFzQixHQUFuRCxDQUZwRSxFQUU2SEUsQ0FBQyxDQUFDb25CLGVBQUYsR0FBb0J0bkIsQ0FGdEosQ0FBRDtBQUdIO0FBcEJZLENBQWpCLEMsQ0FzQkEiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvYXBwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy9yZXF1aXJlKCcuL2Jvb3RzdHJhcCcpO1xuXG47IC8vLyBmaWxlczogcm9ibG94LmpzLCBqcXVlcnkuanNvbi0yLjIuanMsIGpxdWVyeS5zaW1wbGVtb2RhbC0xLjMuNS5qcywganF1ZXJ5LnRpcHN5LmpzLCBBamF4QXZhdGFyVGh1bWJuYWlsLmpzLCBleHRlbnNpb25zL3N0cmluZy5qcywgU3RyaW5nVHJ1bmNhdG9yLm1pbi5qcywganNvbjIubWluLmpzLCB3ZWJraXQuanMsIEdvb2dsZUFuYWx5dGljcy9Hb29nbGVBbmFseXRpY3NFdmVudHMuanMsIE1hc3RlclBhZ2VVSS5qcywganF1ZXJ5LmNvb2tpZS5qcywganF1ZXJ5Lmpzb25jb29raWUuanMsIFhzcmZUb2tlbi5qcywgUm9ibG94RXZlbnRNYW5hZ2VyLmpzLCBSb2Jsb3hFdmVudExpc3RlbmVyLmpzLCBLb250YWdlbnRFdmVudExpc3RlbmVyLmpzLCBHb29nbGVFdmVudExpc3RlbmVyLmpzLCBNb25nb0V2ZW50TGlzdGVuZXIuanMsIFNlYXJjaFZpc2lvbkxpc3RlbmVyLmpzLCBTaXRlVG91Y2hFdmVudC5qcywgSlNFcnJvclRyYWNrZXIuanMsIFN0dWRpbzJBbGVydC5qcywgQ2xpZW50SW5zdGFsbGVyLmpzLCBJbnN0YWxsYXRpb25JbnN0cnVjdGlvbnMuanMsIE1hZFN0YXR1cy5qcywgUGxhY2VMYXVuY2hlci5qcywgVmlkZW9QcmVSb2xsLmpzXG5cbjsgLy8vIHJvYmxveC5qc1xuKGZ1bmN0aW9uKG4sIHQpIHtcbiAgICBmdW5jdGlvbiBwKG4sIGkpIHtcbiAgICAgICAgdmFyIHIgPSBpLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgZm9yIChpID0gci5zaGlmdCgpOyByLmxlbmd0aCA+IDA7IG4gPSBuW2ldLCBpID0gci5zaGlmdCgpKVxuICAgICAgICAgICAgaWYgKG5baV0gPT09IHQpIHJldHVybiB0O1xuICAgICAgICByZXR1cm4gbltpXVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGsobiwgaSwgcikge1xuICAgICAgICB2YXIgdSA9IGkuc3BsaXQoXCIuXCIpO1xuICAgICAgICBmb3IgKGkgPSB1LnNoaWZ0KCk7IHUubGVuZ3RoID4gMDsgbiA9IG5baV0sIGkgPSB1LnNoaWZ0KCkpIG5baV0gPT09IHQgJiYgKG5baV0gPSB7fSk7XG4gICAgICAgIG5baV0gPSByXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbnQobiwgdCkge1xuICAgICAgICB2YXIgaSA9IGYuY3JlYXRlRWxlbWVudChcImxpbmtcIik7XG4gICAgICAgIGkuaHJlZiA9IG4sIGkucmVsID0gXCJzdHlsZXNoZWV0XCIsIGkudHlwZSA9IFwidGV4dC9jc3NcIiwgdS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShpLCB1KSwgdCgpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZyhuLCB0KSB7XG4gICAgICAgIHZhciBpID0gZi5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgICAgICBpLnR5cGUgPSBcInRleHQvamF2YXNjcmlwdFwiLCBpLnNyYyA9IG4sIGkub25sb2FkID0gaS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGkucmVhZHlTdGF0ZSAmJiBpLnJlYWR5U3RhdGUgIT0gXCJsb2FkZWRcIiAmJiBpLnJlYWR5U3RhdGUgIT0gXCJjb21wbGV0ZVwiIHx8ICh0KCksIGkub25sb2FkID0gaS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsKVxuICAgICAgICB9LCB1LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGksIHUpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZChuKSB7XG4gICAgICAgIHJldHVybiBuLnNwbGl0KFwiLlwiKS5wb3AoKS5zcGxpdChcIj9cIikuc2hpZnQoKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG8obikge1xuICAgICAgICByZXR1cm4gbi5pbmRleE9mKFwiLmpzXCIpIDwgMCA/IG4gOiBuLmluZGV4T2Yoci5tb2R1bGVQYXRoKSA+PSAwID8gbi5zcGxpdChyLm1vZHVsZVBhdGgpLnBvcCgpLnNwbGl0KFwiLmpzXCIpLnNoaWZ0KCkucmVwbGFjZShcIi9cIiwgXCIuXCIpIDogblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHYobikge1xuICAgICAgICB2YXIgdCwgaTtcbiAgICAgICAgcmV0dXJuIHQgPSBuLmluZGV4T2YoXCIuanNcIikgPj0gMCB8fCBuLmluZGV4T2YoXCIuY3NzXCIpID49IDAgPyBuIDogci5iYXNlVXJsICsgci5tb2R1bGVQYXRoICsgbi5yZXBsYWNlKFwiLlwiLCBcIi9cIikgKyBcIi5qc1wiLCBpID0gci52ZXJzaW9uc1t0XSB8fCAxLCB0ICsgXCI/dj1cIiArIGlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzKG4pIHtcbiAgICAgICAgZm9yICh2YXIgciwgdSA9IFtdLCBpID0gMDsgaSA8IG4ubGVuZ3RoOyBpKyspIHIgPSBwKFJvYmxveCwgbyhuW2ldKSksIHIgIT09IHQgJiYgdS5wdXNoKHIpO1xuICAgICAgICByZXR1cm4gdVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGUobikge1xuICAgICAgICB2YXIgdCA9IGlbbl07XG4gICAgICAgIGlmICh0LmxvYWRlZCAmJiB0LmRlcHNMb2FkZWQpXG4gICAgICAgICAgICB3aGlsZSAodC5saXN0ZW5lcnMubGVuZ3RoID4gMCkgdC5saXN0ZW5lcnMuc2hpZnQoKSgpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYShuLCB1KSB7XG4gICAgICAgIHZhciBmLCBzLCBoO1xuICAgICAgICBpZiAoIWIobikgfHwgci5leHRlcm5hbFJlc291cmNlcy50b1N0cmluZygpLmluZGV4T2YobikgPj0gMCkgcmV0dXJuIHUoKTtcbiAgICAgICAgZiA9IG8obiksIGlbZl0gPT09IHQgPyAoaVtmXSA9IHtcbiAgICAgICAgICAgIGxvYWRlZDogITEsXG4gICAgICAgICAgICBkZXBzTG9hZGVkOiAhMCxcbiAgICAgICAgICAgIGxpc3RlbmVyczogW11cbiAgICAgICAgfSwgaVtmXS5saXN0ZW5lcnMucHVzaCh1KSwgcyA9IHYoZiksIGggPSBkKHMpID09IFwiY3NzXCIgPyBudCA6IGcsIGgocywgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpW2ZdLmxvYWRlZCA9ICEwLCBlKGYpXG4gICAgICAgIH0pKSA6IChpW2ZdLmxpc3RlbmVycy5wdXNoKHUpLCBlKGYpKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGgobiwgdCkge1xuICAgICAgICB2YXIgciA9IG4uc2hpZnQoKSxcbiAgICAgICAgICAgIGkgPSBuLmxlbmd0aCA9PSAwID8gdCA6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGgobiwgdClcbiAgICAgICAgICAgIH07XG4gICAgICAgIGEociwgaSlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsKG4sIHQpIHtcbiAgICAgICAgYyhuKSB8fCAobiA9IFtuXSk7XG4gICAgICAgIHZhciBpID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0LmFwcGx5KG51bGwsIHMobikpXG4gICAgICAgIH07XG4gICAgICAgIGgobi5zbGljZSgwKSwgaSlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB5KG4sIHQsIHIpIHtcbiAgICAgICAgdyh0KSA/IChyID0gdCwgdCA9IFtdKSA6IGModCkgfHwgKHQgPSBbdF0pLCBpW25dID0gaVtuXSB8fCB7XG4gICAgICAgICAgICBsb2FkZWQ6ICEwLFxuICAgICAgICAgICAgbGlzdGVuZXJzOiBbXVxuICAgICAgICB9LCBpW25dLmRlcHNMb2FkZWQgPSAhMSwgaVtuXS5saXN0ZW5lcnMudW5zaGlmdChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGsoUm9ibG94LCBuLCByLmFwcGx5KG51bGwsIHModCkpKVxuICAgICAgICB9KSwgbCh0LCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGlbbl0uZGVwc0xvYWRlZCA9ICEwLCBlKG4pXG4gICAgICAgIH0pXG4gICAgfVxuICAgIHZhciBmID0gbi5kb2N1bWVudCxcbiAgICAgICAgdSA9IGYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIilbMF0sXG4gICAgICAgIGIgPSBmdW5jdGlvbihuKSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIG4gPT0gXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBjID0gZnVuY3Rpb24obikge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuKSA9PSBcIltvYmplY3QgQXJyYXldXCJcbiAgICAgICAgfSxcbiAgICAgICAgdyA9IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobikgPT0gXCJbb2JqZWN0IEZ1bmN0aW9uXVwiXG4gICAgICAgIH0sXG4gICAgICAgIGkgPSB7fSxcbiAgICAgICAgciA9IHtcbiAgICAgICAgICAgIGJhc2VVcmw6IFwiL1wiLFxuICAgICAgICAgICAgbW9kdWxlUGF0aDogXCJqcy9tb2R1bGVzL1wiLFxuICAgICAgICAgICAgdmVyc2lvbnM6IHt9LFxuICAgICAgICAgICAgZXh0ZXJuYWxSZXNvdXJjZXM6IFtdXG4gICAgICAgIH07XG4gICAgdHlwZW9mIFJvYmxveCA9PSBcInVuZGVmaW5lZFwiICYmIChSb2Jsb3ggPSB7fSksIFJvYmxveC5jb25maWcgPSByLCBSb2Jsb3gucmVxdWlyZSA9IGwsIFJvYmxveC5kZWZpbmUgPSB5XG59KSh3aW5kb3cpO1xuXG47IC8vLyBqcXVlcnkuanNvbi0yLjIuanNcbihmdW5jdGlvbihuKSB7XG4gICAgbi50b0pTT04gPSBmdW5jdGlvbih0KSB7XG4gICAgICAgIHZhciBzLCBvLCBwLCBoLCBmLCBlLCByLCB2LCBjLCBhLCB1LCBsLCBpLCB5O1xuICAgICAgICBpZiAodHlwZW9mIEpTT04gPT0gXCJvYmplY3RcIiAmJiBKU09OLnN0cmluZ2lmeSkgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpO1xuICAgICAgICBpZiAoaSA9IHR5cGVvZiB0LCB0ID09PSBudWxsKSByZXR1cm4gXCJudWxsXCI7XG4gICAgICAgIGlmIChpID09IFwidW5kZWZpbmVkXCIpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChpID09IFwibnVtYmVyXCIgfHwgaSA9PSBcImJvb2xlYW5cIikgcmV0dXJuIHQgKyBcIlwiO1xuICAgICAgICBpZiAoaSA9PSBcInN0cmluZ1wiKSByZXR1cm4gbi5xdW90ZVN0cmluZyh0KTtcbiAgICAgICAgaWYgKGkgPT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0LnRvSlNPTiA9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBuLnRvSlNPTih0LnRvSlNPTigpKTtcbiAgICAgICAgICAgIGlmICh0LmNvbnN0cnVjdG9yID09PSBEYXRlKSByZXR1cm4gcyA9IHQuZ2V0VVRDTW9udGgoKSArIDEsIHMgPCAxMCAmJiAocyA9IFwiMFwiICsgcyksIG8gPSB0LmdldFVUQ0RhdGUoKSwgbyA8IDEwICYmIChvID0gXCIwXCIgKyBvKSwgcCA9IHQuZ2V0VVRDRnVsbFllYXIoKSwgaCA9IHQuZ2V0VVRDSG91cnMoKSwgaCA8IDEwICYmIChoID0gXCIwXCIgKyBoKSwgZiA9IHQuZ2V0VVRDTWludXRlcygpLCBmIDwgMTAgJiYgKGYgPSBcIjBcIiArIGYpLCBlID0gdC5nZXRVVENTZWNvbmRzKCksIGUgPCAxMCAmJiAoZSA9IFwiMFwiICsgZSksIHIgPSB0LmdldFVUQ01pbGxpc2Vjb25kcygpLCByIDwgMTAwICYmIChyID0gXCIwXCIgKyByKSwgciA8IDEwICYmIChyID0gXCIwXCIgKyByKSwgJ1wiJyArIHAgKyBcIi1cIiArIHMgKyBcIi1cIiArIG8gKyBcIlRcIiArIGggKyBcIjpcIiArIGYgKyBcIjpcIiArIGUgKyBcIi5cIiArIHIgKyAnWlwiJztcbiAgICAgICAgICAgIGlmICh0LmNvbnN0cnVjdG9yID09PSBBcnJheSkge1xuICAgICAgICAgICAgICAgIGZvciAodiA9IFtdLCBjID0gMDsgYyA8IHQubGVuZ3RoOyBjKyspIHYucHVzaChuLnRvSlNPTih0W2NdKSB8fCBcIm51bGxcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiW1wiICsgdi5qb2luKFwiLFwiKSArIFwiXVwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhID0gW107XG4gICAgICAgICAgICBmb3IgKHUgaW4gdCkge1xuICAgICAgICAgICAgICAgIGlmIChpID0gdHlwZW9mIHUsIGkgPT0gXCJudW1iZXJcIikgbCA9ICdcIicgKyB1ICsgJ1wiJztcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpID09IFwic3RyaW5nXCIpIGwgPSBuLnF1b3RlU3RyaW5nKHUpO1xuICAgICAgICAgICAgICAgIGVsc2UgY29udGludWU7XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRbdV0gIT0gXCJmdW5jdGlvblwiICYmICh5ID0gbi50b0pTT04odFt1XSksIGEucHVzaChsICsgXCI6XCIgKyB5KSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBcIntcIiArIGEuam9pbihcIiwgXCIpICsgXCJ9XCJcbiAgICAgICAgfVxuICAgIH0sIG4uZXZhbEpTT04gPSBmdW5jdGlvbihuKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgSlNPTiA9PSBcIm9iamVjdFwiICYmIEpTT04ucGFyc2UgPyBKU09OLnBhcnNlKG4pIDogZXZhbChcIihcIiArIG4gKyBcIilcIilcbiAgICB9LCBuLnNlY3VyZUV2YWxKU09OID0gZnVuY3Rpb24obikge1xuICAgICAgICBpZiAodHlwZW9mIEpTT04gPT0gXCJvYmplY3RcIiAmJiBKU09OLnBhcnNlKSByZXR1cm4gSlNPTi5wYXJzZShuKTtcbiAgICAgICAgdmFyIHQgPSBuO1xuICAgICAgICBpZiAodCA9IHQucmVwbGFjZSgvXFxcXFtcIlxcXFxcXC9iZm5ydHVdL2csIFwiQFwiKSwgdCA9IHQucmVwbGFjZSgvXCJbXlwiXFxcXFxcblxccl0qXCJ8dHJ1ZXxmYWxzZXxudWxsfC0/XFxkKyg/OlxcLlxcZCopPyg/OltlRV1bK1xcLV0/XFxkKyk/L2csIFwiXVwiKSwgdCA9IHQucmVwbGFjZSgvKD86Xnw6fCwpKD86XFxzKlxcWykrL2csIFwiXCIpLCAvXltcXF0sOnt9XFxzXSokLy50ZXN0KHQpKSByZXR1cm4gZXZhbChcIihcIiArIG4gKyBcIilcIik7XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcIkVycm9yIHBhcnNpbmcgSlNPTiwgc291cmNlIGlzIG5vdCB2YWxpZC5cIik7XG4gICAgfSwgbi5xdW90ZVN0cmluZyA9IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgcmV0dXJuIG4ubWF0Y2godCkgPyAnXCInICsgbi5yZXBsYWNlKHQsIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgIHZhciB0ID0gaVtuXTtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdCA9PSBcInN0cmluZ1wiID8gdCA6ICh0ID0gbi5jaGFyQ29kZUF0KCksIFwiXFxcXHUwMFwiICsgTWF0aC5mbG9vcih0IC8gMTYpLnRvU3RyaW5nKDE2KSArICh0ICUgMTYpLnRvU3RyaW5nKDE2KSlcbiAgICAgICAgfSkgKyAnXCInIDogJ1wiJyArIG4gKyAnXCInXG4gICAgfTtcbiAgICB2YXIgdCA9IC9bXCJcXFxcXFx4MDAtXFx4MWZcXHg3Zi1cXHg5Zl0vZyxcbiAgICAgICAgaSA9IHtcbiAgICAgICAgICAgIFwiXFxiXCI6IFwiXFxcXGJcIixcbiAgICAgICAgICAgIFwiXFx0XCI6IFwiXFxcXHRcIixcbiAgICAgICAgICAgIFwiXFxuXCI6IFwiXFxcXG5cIixcbiAgICAgICAgICAgIFwiXFxmXCI6IFwiXFxcXGZcIixcbiAgICAgICAgICAgIFwiXFxyXCI6IFwiXFxcXHJcIixcbiAgICAgICAgICAgICdcIic6ICdcXFxcXCInLFxuICAgICAgICAgICAgXCJcXFxcXCI6IFwiXFxcXFxcXFxcIlxuICAgICAgICB9XG59KShqUXVlcnkpO1xuXG47IC8vLyBqcXVlcnkuc2ltcGxlbW9kYWwtMS4zLjUuanNcbihmdW5jdGlvbihuKSB7XG4gICAgdmFyIGkgPSBuLmJyb3dzZXIubXNpZSAmJiBwYXJzZUludChuLmJyb3dzZXIudmVyc2lvbikgPT0gNiAmJiB0eXBlb2Ygd2luZG93LlhNTEh0dHBSZXF1ZXN0ICE9IFwib2JqZWN0XCIsXG4gICAgICAgIHIgPSAhMSxcbiAgICAgICAgdCA9IFtdO1xuICAgIG4ubW9kYWwgPSBmdW5jdGlvbih0LCBpKSB7XG4gICAgICAgIHJldHVybiBuLm1vZGFsLmltcGwuaW5pdCh0LCBpKVxuICAgIH0sIG4ubW9kYWwuY2xvc2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgbi5tb2RhbC5pbXBsLmNsb3NlKClcbiAgICB9LCBuLmZuLm1vZGFsID0gZnVuY3Rpb24odCkge1xuICAgICAgICByZXR1cm4gbi5tb2RhbC5pbXBsLmluaXQodGhpcywgdClcbiAgICB9LCBuLm1vZGFsLmRlZmF1bHRzID0ge1xuICAgICAgICBhcHBlbmRUbzogXCJib2R5XCIsXG4gICAgICAgIGZvY3VzOiAhMCxcbiAgICAgICAgb3BhY2l0eTogNTAsXG4gICAgICAgIG92ZXJsYXlJZDogXCJzaW1wbGVtb2RhbC1vdmVybGF5XCIsXG4gICAgICAgIG92ZXJsYXlDc3M6IHt9LFxuICAgICAgICBjb250YWluZXJJZDogXCJzaW1wbGVtb2RhbC1jb250YWluZXJcIixcbiAgICAgICAgY29udGFpbmVyQ3NzOiB7fSxcbiAgICAgICAgZGF0YUlkOiBcInNpbXBsZW1vZGFsLWRhdGFcIixcbiAgICAgICAgZGF0YUNzczoge30sXG4gICAgICAgIG1pbkhlaWdodDogbnVsbCxcbiAgICAgICAgbWluV2lkdGg6IG51bGwsXG4gICAgICAgIG1heEhlaWdodDogbnVsbCxcbiAgICAgICAgbWF4V2lkdGg6IG51bGwsXG4gICAgICAgIGF1dG9SZXNpemU6ICExLFxuICAgICAgICBhdXRvUG9zaXRpb246ICEwLFxuICAgICAgICB6SW5kZXg6IDFlMyxcbiAgICAgICAgY2xvc2U6ICEwLFxuICAgICAgICBjbG9zZUhUTUw6ICc8YSBjbGFzcz1cIm1vZGFsQ2xvc2VJbWdcIiB0aXRsZT1cIkNsb3NlXCI+PC9hPicsXG4gICAgICAgIGNsb3NlQ2xhc3M6IFwic2ltcGxlbW9kYWwtY2xvc2VcIixcbiAgICAgICAgZXNjQ2xvc2U6ICEwLFxuICAgICAgICBvdmVybGF5Q2xvc2U6ICExLFxuICAgICAgICBwb3NpdGlvbjogbnVsbCxcbiAgICAgICAgcGVyc2lzdDogITEsXG4gICAgICAgIG1vZGFsOiAhMCxcbiAgICAgICAgb25PcGVuOiBudWxsLFxuICAgICAgICBvblNob3c6IG51bGwsXG4gICAgICAgIG9uQ2xvc2U6IG51bGxcbiAgICB9LCBuLm1vZGFsLmltcGwgPSB7XG4gICAgICAgIG86IG51bGwsXG4gICAgICAgIGQ6IHt9LFxuICAgICAgICBpbml0OiBmdW5jdGlvbih0LCBpKSB7XG4gICAgICAgICAgICB2YXIgciA9IHRoaXM7XG4gICAgICAgICAgICBpZiAoci5kLmRhdGEpIHJldHVybiAhMTtcbiAgICAgICAgICAgIGlmIChyLm8gPSBuLmV4dGVuZCh7fSwgbi5tb2RhbC5kZWZhdWx0cywgaSksIHIuekluZGV4ID0gci5vLnpJbmRleCwgci5vY2NiID0gITEsIHR5cGVvZiB0ID09IFwib2JqZWN0XCIpIHQgPSB0IGluc3RhbmNlb2YgalF1ZXJ5ID8gdCA6IG4odCksIHIuZC5wbGFjZWhvbGRlciA9ICExLCB0LnBhcmVudCgpLnBhcmVudCgpLnNpemUoKSA+IDAgJiYgKHQuYmVmb3JlKG4oXCI8c3Bhbj48L3NwYW4+XCIpLmF0dHIoXCJpZFwiLCBcInNpbXBsZW1vZGFsLXBsYWNlaG9sZGVyXCIpLmNzcyh7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogXCJub25lXCJcbiAgICAgICAgICAgIH0pKSwgci5kLnBsYWNlaG9sZGVyID0gITAsIHIuZGlzcGxheSA9IHQuY3NzKFwiZGlzcGxheVwiKSwgci5vLnBlcnNpc3QgfHwgKHIuZC5vcmlnID0gdC5jbG9uZSghMCkpKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB0ID09IFwic3RyaW5nXCIgfHwgdHlwZW9mIHQgPT0gXCJudW1iZXJcIikgdCA9IG4oXCI8ZGl2PjwvZGl2PlwiKS5odG1sKHQpO1xuICAgICAgICAgICAgZWxzZSByZXR1cm4gYWxlcnQoXCJTaW1wbGVNb2RhbCBFcnJvcjogVW5zdXBwb3J0ZWQgZGF0YSB0eXBlOiBcIiArIHR5cGVvZiB0KSwgcjtcbiAgICAgICAgICAgIHJldHVybiByLmNyZWF0ZSh0KSwgdCA9IG51bGwsIHIub3BlbigpLCBuLmlzRnVuY3Rpb24oci5vLm9uU2hvdykgJiYgci5vLm9uU2hvdy5hcHBseShyLCBbci5kXSksIHJcbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlOiBmdW5jdGlvbihyKSB7XG4gICAgICAgICAgICB2YXIgdSA9IHRoaXM7XG4gICAgICAgICAgICB0ID0gdS5nZXREaW1lbnNpb25zKCksIHUuby5tb2RhbCAmJiBpICYmICh1LmQuaWZyYW1lID0gbignPGlmcmFtZSBzcmM9XCJqYXZhc2NyaXB0OmZhbHNlO1wiPjwvaWZyYW1lPicpLmNzcyhuLmV4dGVuZCh1Lm8uaWZyYW1lQ3NzLCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogXCJub25lXCIsXG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJmaXhlZFwiLFxuICAgICAgICAgICAgICAgIGhlaWdodDogdFswXSxcbiAgICAgICAgICAgICAgICB3aWR0aDogdFsxXSxcbiAgICAgICAgICAgICAgICB6SW5kZXg6IHUuby56SW5kZXgsXG4gICAgICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgICAgIGxlZnQ6IDBcbiAgICAgICAgICAgIH0pKS5hcHBlbmRUbyh1Lm8uYXBwZW5kVG8pKSwgdS5kLm92ZXJsYXkgPSBuKFwiPGRpdj48L2Rpdj5cIikuYXR0cihcImlkXCIsIHUuby5vdmVybGF5SWQpLmFkZENsYXNzKFwic2ltcGxlbW9kYWwtb3ZlcmxheVwiKS5jc3Mobi5leHRlbmQodS5vLm92ZXJsYXlDc3MsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBcIm5vbmVcIixcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiB1Lm8ub3BhY2l0eSAvIDEwMCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHUuby5tb2RhbCA/IHRbMF0gOiAwLFxuICAgICAgICAgICAgICAgIHdpZHRoOiB1Lm8ubW9kYWwgPyB0WzFdIDogMCxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJmaXhlZFwiLFxuICAgICAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgICAgIHpJbmRleDogdS5vLnpJbmRleCArIDFcbiAgICAgICAgICAgIH0pKS5hcHBlbmRUbyh1Lm8uYXBwZW5kVG8pLCB1LmQuY29udGFpbmVyID0gbihcIjxkaXY+PC9kaXY+XCIpLmF0dHIoXCJpZFwiLCB1Lm8uY29udGFpbmVySWQpLmFkZENsYXNzKFwic2ltcGxlbW9kYWwtY29udGFpbmVyXCIpLmNzcyhuLmV4dGVuZCh1Lm8uY29udGFpbmVyQ3NzLCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogXCJub25lXCIsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IFwiZml4ZWRcIixcbiAgICAgICAgICAgICAgICB6SW5kZXg6IHUuby56SW5kZXggKyAyXG4gICAgICAgICAgICB9KSkuYXBwZW5kKHUuby5jbG9zZSAmJiB1Lm8uY2xvc2VIVE1MID8gbih1Lm8uY2xvc2VIVE1MKS5hZGRDbGFzcyh1Lm8uY2xvc2VDbGFzcykgOiBcIlwiKS5hcHBlbmRUbyh1Lm8uYXBwZW5kVG8pLCB1LmQud3JhcCA9IG4oXCI8ZGl2PjwvZGl2PlwiKS5hdHRyKFwidGFiSW5kZXhcIiwgLTEpLmFkZENsYXNzKFwic2ltcGxlbW9kYWwtd3JhcFwiKS5jc3Moe1xuICAgICAgICAgICAgICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgb3V0bGluZTogMCxcbiAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IFwidmlzaWJsZVwiXG4gICAgICAgICAgICB9KS5hcHBlbmRUbyh1LmQuY29udGFpbmVyKSwgdS5kLmRhdGEgPSByLmF0dHIoXCJpZFwiLCByLmF0dHIoXCJpZFwiKSB8fCB1Lm8uZGF0YUlkKS5hZGRDbGFzcyhcInNpbXBsZW1vZGFsLWRhdGFcIikuY3NzKG4uZXh0ZW5kKHUuby5kYXRhQ3NzLCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogXCJub25lXCJcbiAgICAgICAgICAgIH0pKS5hcHBlbmRUbyhcImJvZHlcIiksIHIgPSBudWxsLCB1LnNldENvbnRhaW5lckRpbWVuc2lvbnMoKSwgdS5kLmRhdGEuYXBwZW5kVG8odS5kLndyYXApLCBpICYmIHUuZml4SUUoKVxuICAgICAgICB9LFxuICAgICAgICBiaW5kRXZlbnRzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciByID0gdGhpcztcbiAgICAgICAgICAgIG4oXCIuXCIgKyByLm8uY2xvc2VDbGFzcykuYmluZChcImNsaWNrLnNpbXBsZW1vZGFsXCIsIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgICAgICBuLnByZXZlbnREZWZhdWx0KCksIHIuY2xvc2UoKVxuICAgICAgICAgICAgfSksIHIuby5tb2RhbCAmJiByLm8uY2xvc2UgJiYgci5vLm92ZXJsYXlDbG9zZSAmJiByLmQub3ZlcmxheS5iaW5kKFwiY2xpY2suc2ltcGxlbW9kYWxcIiwgZnVuY3Rpb24obikge1xuICAgICAgICAgICAgICAgIG4ucHJldmVudERlZmF1bHQoKSwgci5jbG9zZSgpXG4gICAgICAgICAgICB9KSwgbihkb2N1bWVudCkuYmluZChcImtleWRvd24uc2ltcGxlbW9kYWxcIiwgZnVuY3Rpb24obikge1xuICAgICAgICAgICAgICAgIHIuby5tb2RhbCAmJiByLm8uZm9jdXMgJiYgbi5rZXlDb2RlID09IDkgPyByLndhdGNoVGFiKG4pIDogci5vLmNsb3NlICYmIHIuby5lc2NDbG9zZSAmJiBuLmtleUNvZGUgPT0gMjcgJiYgKG4ucHJldmVudERlZmF1bHQoKSwgci5jbG9zZSgpKVxuICAgICAgICAgICAgfSksIG4od2luZG93KS5iaW5kKFwicmVzaXplLnNpbXBsZW1vZGFsXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHQgPSByLmdldERpbWVuc2lvbnMoKSwgci5zZXRDb250YWluZXJEaW1lbnNpb25zKCEwKSwgaSA/IHIuZml4SUUoKSA6IHIuby5tb2RhbCAmJiAoci5kLmlmcmFtZSAmJiByLmQuaWZyYW1lLmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogdFswXSxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHRbMV1cbiAgICAgICAgICAgICAgICB9KSwgci5kLm92ZXJsYXkuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0WzBdLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogdFsxXVxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgdW5iaW5kRXZlbnRzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIG4oXCIuXCIgKyB0aGlzLm8uY2xvc2VDbGFzcykudW5iaW5kKFwiY2xpY2suc2ltcGxlbW9kYWxcIiksIG4oZG9jdW1lbnQpLnVuYmluZChcImtleWRvd24uc2ltcGxlbW9kYWxcIiksIG4od2luZG93KS51bmJpbmQoXCJyZXNpemUuc2ltcGxlbW9kYWxcIiksIHRoaXMuZC5vdmVybGF5LnVuYmluZChcImNsaWNrLnNpbXBsZW1vZGFsXCIpXG4gICAgICAgIH0sXG4gICAgICAgIGZpeElFOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciBpID0gdGhpcyxcbiAgICAgICAgICAgICAgICB0ID0gaS5vLnBvc2l0aW9uO1xuICAgICAgICAgICAgbi5lYWNoKFtpLmQuaWZyYW1lIHx8IG51bGwsIGkuby5tb2RhbCA/IGkuZC5vdmVybGF5IDogbnVsbCwgaS5kLmNvbnRhaW5lcl0sIGZ1bmN0aW9uKG4sIGkpIHtcbiAgICAgICAgICAgICAgICB2YXIgbCwgYywgbywgZTtcbiAgICAgICAgICAgICAgICBpZiAoaSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IFwiZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBcImRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBcImRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhID0gXCJkb2N1bWVudC5ib2R5LnNjcm9sbExlZnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBcImRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwID0gXCJkb2N1bWVudC5ib2R5LnNjcm9sbFdpZHRoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ID0gXCJkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB3ID0gXCJkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBcImRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBmID0gXCJkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICByID0gaVswXS5zdHlsZTtcbiAgICAgICAgICAgICAgICAgICAgci5wb3NpdGlvbiA9IFwiYWJzb2x1dGVcIiwgbiA8IDIgPyAoci5yZW1vdmVFeHByZXNzaW9uKFwiaGVpZ2h0XCIpLCByLnJlbW92ZUV4cHJlc3Npb24oXCJ3aWR0aFwiKSwgci5zZXRFeHByZXNzaW9uKFwiaGVpZ2h0XCIsIFwiXCIgKyBiICsgXCIgPiBcIiArIHMgKyBcIiA/IFwiICsgYiArIFwiIDogXCIgKyBzICsgJyArIFwicHhcIicpLCByLnNldEV4cHJlc3Npb24oXCJ3aWR0aFwiLCBcIlwiICsgcCArIFwiID4gXCIgKyBoICsgXCIgPyBcIiArIHAgKyBcIiA6IFwiICsgaCArICcgKyBcInB4XCInKSkgOiAodCAmJiB0LmNvbnN0cnVjdG9yID09IEFycmF5ID8gKG8gPSB0WzBdID8gdHlwZW9mIHRbMF0gPT0gXCJudW1iZXJcIiA/IHRbMF0udG9TdHJpbmcoKSA6IHRbMF0ucmVwbGFjZSgvcHgvLCBcIlwiKSA6IGkuY3NzKFwidG9wXCIpLnJlcGxhY2UoL3B4LywgXCJcIiksIGwgPSBvLmluZGV4T2YoXCIlXCIpID09IC0xID8gbyArIFwiICsgKHQgPSBcIiArIGYgKyBcIiA/IFwiICsgZiArIFwiIDogXCIgKyB2ICsgJykgKyBcInB4XCInIDogcGFyc2VJbnQoby5yZXBsYWNlKC8lLywgXCJcIikpICsgXCIgKiAoKFwiICsgeSArIFwiIHx8IFwiICsgcyArIFwiKSAvIDEwMCkgKyAodCA9IFwiICsgZiArIFwiID8gXCIgKyBmICsgXCIgOiBcIiArIHYgKyAnKSArIFwicHhcIicsIHRbMV0gJiYgKGUgPSB0eXBlb2YgdFsxXSA9PSBcIm51bWJlclwiID8gdFsxXS50b1N0cmluZygpIDogdFsxXS5yZXBsYWNlKC9weC8sIFwiXCIpLCBjID0gZS5pbmRleE9mKFwiJVwiKSA9PSAtMSA/IGUgKyBcIiArICh0ID0gXCIgKyB1ICsgXCIgPyBcIiArIHUgKyBcIiA6IFwiICsgYSArICcpICsgXCJweFwiJyA6IHBhcnNlSW50KGUucmVwbGFjZSgvJS8sIFwiXCIpKSArIFwiICogKChcIiArIHcgKyBcIiB8fCBcIiArIGggKyBcIikgLyAxMDApICsgKHQgPSBcIiArIHUgKyBcIiA/IFwiICsgdSArIFwiIDogXCIgKyBhICsgJykgKyBcInB4XCInKSkgOiAobCA9IFwiKFwiICsgeSArIFwiIHx8IFwiICsgcyArIFwiKSAvIDIgLSAodGhpcy5vZmZzZXRIZWlnaHQgLyAyKSArICh0ID0gXCIgKyBmICsgXCIgPyBcIiArIGYgKyBcIiA6IFwiICsgdiArICcpICsgXCJweFwiJywgYyA9IFwiKFwiICsgdyArIFwiIHx8IFwiICsgaCArIFwiKSAvIDIgLSAodGhpcy5vZmZzZXRXaWR0aCAvIDIpICsgKHQgPSBcIiArIHUgKyBcIiA/IFwiICsgdSArIFwiIDogXCIgKyBhICsgJykgKyBcInB4XCInKSwgci5yZW1vdmVFeHByZXNzaW9uKFwidG9wXCIpLCByLnJlbW92ZUV4cHJlc3Npb24oXCJsZWZ0XCIpLCByLnNldEV4cHJlc3Npb24oXCJ0b3BcIiwgbCksIHIuc2V0RXhwcmVzc2lvbihcImxlZnRcIiwgYykpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgZm9jdXM6IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgICAgIHZhciByID0gdGhpcyxcbiAgICAgICAgICAgICAgICB1ID0gdCB8fCBcImZpcnN0XCIsXG4gICAgICAgICAgICAgICAgaSA9IG4oXCI6aW5wdXQ6ZW5hYmxlZDp2aXNpYmxlOlwiICsgdSwgci5kLndyYXApO1xuICAgICAgICAgICAgaS5sZW5ndGggPiAwID8gaS5mb2N1cygpIDogci5kLndyYXAuZm9jdXMoKVxuICAgICAgICB9LFxuICAgICAgICBnZXREaW1lbnNpb25zOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0ID0gbih3aW5kb3cpLFxuICAgICAgICAgICAgICAgIGkgPSBuLmJyb3dzZXIub3BlcmEgJiYgbi5icm93c2VyLnZlcnNpb24gPiBcIjkuNVwiICYmIG4uZm4uanF1ZXJ5IDw9IFwiMS4yLjZcIiA/IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgOiBuLmJyb3dzZXIub3BlcmEgJiYgbi5icm93c2VyLnZlcnNpb24gPCBcIjkuNVwiICYmIG4uZm4uanF1ZXJ5ID4gXCIxLjIuNlwiID8gd2luZG93LmlubmVySGVpZ2h0IDogdC5oZWlnaHQoKTtcbiAgICAgICAgICAgIHJldHVybiBbaSwgdC53aWR0aCgpXVxuICAgICAgICB9LFxuICAgICAgICBnZXRWYWw6IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgIHJldHVybiBuID09IFwiYXV0b1wiID8gMCA6IG4uaW5kZXhPZihcIiVcIikgPiAwID8gbiA6IHBhcnNlSW50KG4ucmVwbGFjZSgvcHgvLCBcIlwiKSlcbiAgICAgICAgfSxcbiAgICAgICAgc2V0Q29udGFpbmVyRGltZW5zaW9uczogZnVuY3Rpb24oaSkge1xuICAgICAgICAgICAgdmFyIHIgPSB0aGlzO1xuICAgICAgICAgICAgaWYgKCFpIHx8IGkgJiYgci5vLmF1dG9SZXNpemUpIHtcbiAgICAgICAgICAgICAgICB2YXIgZiA9IG4uYnJvd3Nlci5vcGVyYSA/IHIuZC5jb250YWluZXIuaGVpZ2h0KCkgOiByLmdldFZhbChyLmQuY29udGFpbmVyLmNzcyhcImhlaWdodFwiKSksXG4gICAgICAgICAgICAgICAgICAgIHUgPSBuLmJyb3dzZXIub3BlcmEgPyByLmQuY29udGFpbmVyLndpZHRoKCkgOiByLmdldFZhbChyLmQuY29udGFpbmVyLmNzcyhcIndpZHRoXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgcyA9IHIuZC5kYXRhLm91dGVySGVpZ2h0KCEwKSxcbiAgICAgICAgICAgICAgICAgICAgaCA9IHIuZC5kYXRhLm91dGVyV2lkdGgoITApLFxuICAgICAgICAgICAgICAgICAgICBlID0gci5vLm1heEhlaWdodCAmJiByLm8ubWF4SGVpZ2h0IDwgdFswXSA/IHIuby5tYXhIZWlnaHQgOiB0WzBdLFxuICAgICAgICAgICAgICAgICAgICBvID0gci5vLm1heFdpZHRoICYmIHIuby5tYXhXaWR0aCA8IHRbMV0gPyByLm8ubWF4V2lkdGggOiB0WzFdO1xuICAgICAgICAgICAgICAgIGYgPSBmID8gZiA+IGUgPyBlIDogZiA6IHMgPyBzID4gZSA/IGUgOiBzIDwgci5vLm1pbkhlaWdodCA/IHIuby5taW5IZWlnaHQgOiBzIDogci5vLm1pbkhlaWdodCwgdSA9IHUgPyB1ID4gbyA/IG8gOiB1IDogaCA/IGggPiBvID8gbyA6IGggPCByLm8ubWluV2lkdGggPyByLm8ubWluV2lkdGggOiBoIDogci5vLm1pbldpZHRoLCByLmQuY29udGFpbmVyLmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogZixcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHVcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgci5vLmF1dG9Qb3NpdGlvbiAmJiByLnNldFBvc2l0aW9uKClcbiAgICAgICAgfSxcbiAgICAgICAgc2V0UG9zaXRpb246IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIG4gPSB0aGlzLFxuICAgICAgICAgICAgICAgIHIsIGksIGYgPSB0WzBdIC8gMiAtIG4uZC5jb250YWluZXIub3V0ZXJIZWlnaHQoITApIC8gMixcbiAgICAgICAgICAgICAgICB1ID0gdFsxXSAvIDIgLSBuLmQuY29udGFpbmVyLm91dGVyV2lkdGgoITApIC8gMjtcbiAgICAgICAgICAgIG4uby5wb3NpdGlvbiAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobi5vLnBvc2l0aW9uKSA9PT0gXCJbb2JqZWN0IEFycmF5XVwiID8gKHIgPSBuLm8ucG9zaXRpb25bMF0gfHwgZiwgaSA9IG4uby5wb3NpdGlvblsxXSB8fCB1KSA6IChyID0gZiwgaSA9IHUpLCBuLmQuY29udGFpbmVyLmNzcyh7XG4gICAgICAgICAgICAgICAgbGVmdDogaSxcbiAgICAgICAgICAgICAgICB0b3A6IHJcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIHdhdGNoVGFiOiBmdW5jdGlvbih0KSB7XG4gICAgICAgICAgICB2YXIgaSA9IHRoaXMsXG4gICAgICAgICAgICAgICAgcjtcbiAgICAgICAgICAgIG4odC50YXJnZXQpLnBhcmVudHMoXCIuc2ltcGxlbW9kYWwtY29udGFpbmVyXCIpLmxlbmd0aCA+IDAgPyAoaS5pbnB1dHMgPSBuKFwiOmlucHV0OmVuYWJsZWQ6dmlzaWJsZTpmaXJzdCwgOmlucHV0OmVuYWJsZWQ6dmlzaWJsZTpsYXN0XCIsIGkuZC5kYXRhWzBdKSwgKCF0LnNoaWZ0S2V5ICYmIHQudGFyZ2V0ID09IGkuaW5wdXRzW2kuaW5wdXRzLmxlbmd0aCAtIDFdIHx8IHQuc2hpZnRLZXkgJiYgdC50YXJnZXQgPT0gaS5pbnB1dHNbMF0gfHwgaS5pbnB1dHMubGVuZ3RoID09IDApICYmICh0LnByZXZlbnREZWZhdWx0KCksIHIgPSB0LnNoaWZ0S2V5ID8gXCJsYXN0XCIgOiBcImZpcnN0XCIsIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgaS5mb2N1cyhyKVxuICAgICAgICAgICAgfSwgMTApKSkgOiAodC5wcmV2ZW50RGVmYXVsdCgpLCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGkuZm9jdXMoKVxuICAgICAgICAgICAgfSwgMTApKVxuICAgICAgICB9LFxuICAgICAgICBvcGVuOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0ID0gdGhpcztcbiAgICAgICAgICAgIHQuZC5pZnJhbWUgJiYgdC5kLmlmcmFtZS5zaG93KCksIG4uaXNGdW5jdGlvbih0Lm8ub25PcGVuKSA/IHQuby5vbk9wZW4uYXBwbHkodCwgW3QuZF0pIDogKHQuZC5vdmVybGF5LnNob3coKSwgdC5kLmNvbnRhaW5lci5zaG93KCksIHQuZC5kYXRhLnNob3coKSksIHQuZm9jdXMoKSwgdC5iaW5kRXZlbnRzKClcbiAgICAgICAgfSxcbiAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHQgPSB0aGlzLFxuICAgICAgICAgICAgICAgIGk7XG4gICAgICAgICAgICBpZiAoIXQuZC5kYXRhKSByZXR1cm4gITE7XG4gICAgICAgICAgICB0LnVuYmluZEV2ZW50cygpLCBuLmlzRnVuY3Rpb24odC5vLm9uQ2xvc2UpICYmICF0Lm9jY2IgPyAodC5vY2NiID0gITAsIHQuby5vbkNsb3NlLmFwcGx5KHQsIFt0LmRdKSkgOiAodC5kLnBsYWNlaG9sZGVyID8gKGkgPSBuKFwiI3NpbXBsZW1vZGFsLXBsYWNlaG9sZGVyXCIpLCB0Lm8ucGVyc2lzdCA/IGkucmVwbGFjZVdpdGgodC5kLmRhdGEucmVtb3ZlQ2xhc3MoXCJzaW1wbGVtb2RhbC1kYXRhXCIpLmNzcyhcImRpc3BsYXlcIiwgdC5kaXNwbGF5KSkgOiAodC5kLmRhdGEuaGlkZSgpLnJlbW92ZSgpLCBpLnJlcGxhY2VXaXRoKHQuZC5vcmlnKSkpIDogdC5kLmRhdGEuaGlkZSgpLnJlbW92ZSgpLCB0LmQuY29udGFpbmVyLmhpZGUoKS5yZW1vdmUoKSwgdC5kLm92ZXJsYXkuaGlkZSgpLnJlbW92ZSgpLCB0LmQuaWZyYW1lICYmIHQuZC5pZnJhbWUuaGlkZSgpLnJlbW92ZSgpLCB0LmQgPSB7fSlcbiAgICAgICAgfVxuICAgIH1cbn0pKGpRdWVyeSk7XG5cbjsgLy8vIGpxdWVyeS50aXBzeS5qc1xuKGZ1bmN0aW9uKG4pIHtcbiAgICBuLmZuLnRpcHN5ID0gZnVuY3Rpb24odCkge1xuICAgICAgICByZXR1cm4gdCA9IG4uZXh0ZW5kKHt9LCBuLmZuLnRpcHN5LmRlZmF1bHRzLCB0KSwgdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIGkgPSBuLmZuLnRpcHN5LmVsZW1lbnRPcHRpb25zKHRoaXMsIHQpO1xuICAgICAgICAgICAgbih0aGlzKS5ob3ZlcihmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdCwgZSwgcjtcbiAgICAgICAgICAgICAgICBuLmRhdGEodGhpcywgXCJjYW5jZWwudGlwc3lcIiwgITApLCB0ID0gbi5kYXRhKHRoaXMsIFwiYWN0aXZlLnRpcHN5XCIpLCB0IHx8ICh0ID0gbignPGRpdiBjbGFzcz1cInRpcHN5XCI+PGRpdiBjbGFzcz1cInRpcHN5LWlubmVyXCIvPjwvZGl2PicpLCB0LmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIHpJbmRleDogOTk5OTk5XG4gICAgICAgICAgICAgICAgfSksIG4uZGF0YSh0aGlzLCBcImFjdGl2ZS50aXBzeVwiLCB0KSksIChuKHRoaXMpLmF0dHIoXCJ0aXRsZVwiKSB8fCB0eXBlb2Ygbih0aGlzKS5hdHRyKFwib3JpZ2luYWwtdGl0bGVcIikgIT0gXCJzdHJpbmdcIikgJiYgbih0aGlzKS5hdHRyKFwib3JpZ2luYWwtdGl0bGVcIiwgbih0aGlzKS5hdHRyKFwidGl0bGVcIikgfHwgXCJcIikucmVtb3ZlQXR0cihcInRpdGxlXCIpLCB0eXBlb2YgaS50aXRsZSA9PSBcInN0cmluZ1wiID8gZSA9IG4odGhpcykuYXR0cihpLnRpdGxlID09IFwidGl0bGVcIiA/IFwib3JpZ2luYWwtdGl0bGVcIiA6IGkudGl0bGUpIDogdHlwZW9mIGkudGl0bGUgPT0gXCJmdW5jdGlvblwiICYmIChlID0gaS50aXRsZS5jYWxsKHRoaXMpKSwgdC5maW5kKFwiLnRpcHN5LWlubmVyXCIpW2kuaHRtbCA/IFwiaHRtbFwiIDogXCJ0ZXh0XCJdKGUgfHwgaS5mYWxsYmFjayksIHIgPSBuLmV4dGVuZCh7fSwgbih0aGlzKS5vZmZzZXQoKSwge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogdGhpcy5vZmZzZXRXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLm9mZnNldEhlaWdodFxuICAgICAgICAgICAgICAgIH0pLCB0LmdldCgwKS5jbGFzc05hbWUgPSBcInRpcHN5XCIsIHQucmVtb3ZlKCkuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBcImhpZGRlblwiLFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBcImJsb2NrXCJcbiAgICAgICAgICAgICAgICB9KS5hcHBlbmRUbyhkb2N1bWVudC5ib2R5KTtcbiAgICAgICAgICAgICAgICB2YXIgZiA9IHRbMF0ub2Zmc2V0V2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIHUgPSB0WzBdLm9mZnNldEhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgbyA9IHR5cGVvZiBpLmdyYXZpdHkgPT0gXCJmdW5jdGlvblwiID8gaS5ncmF2aXR5LmNhbGwodGhpcykgOiBpLmdyYXZpdHk7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChvLmNoYXJBdCgwKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiblwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgdC5jc3Moe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogci50b3AgKyByLmhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiByLmxlZnQgKyByLndpZHRoIC8gMiAtIGYgLyAyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KS5hZGRDbGFzcyhcInRpcHN5LW5vcnRoXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICB0LmNzcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiByLnRvcCAtIHUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogci5sZWZ0ICsgci53aWR0aCAvIDIgLSBmIC8gMlxuICAgICAgICAgICAgICAgICAgICAgICAgfSkuYWRkQ2xhc3MoXCJ0aXBzeS1zb3V0aFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgdC5jc3Moe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogci50b3AgKyByLmhlaWdodCAvIDIgLSB1IC8gMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiByLmxlZnQgLSBmXG4gICAgICAgICAgICAgICAgICAgICAgICB9KS5hZGRDbGFzcyhcInRpcHN5LWVhc3RcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIndcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHQuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IHIudG9wICsgci5oZWlnaHQgLyAyIC0gdSAvIDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogci5sZWZ0ICsgci53aWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkuYWRkQ2xhc3MoXCJ0aXBzeS13ZXN0XCIpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGkuZmFkZSA/IHQuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogXCJibG9ja1wiLFxuICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBcInZpc2libGVcIlxuICAgICAgICAgICAgICAgIH0pLmFuaW1hdGUoe1xuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAuOFxuICAgICAgICAgICAgICAgIH0pIDogdC5jc3Moe1xuICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBcInZpc2libGVcIlxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9LCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBuLmRhdGEodGhpcywgXCJjYW5jZWwudGlwc3lcIiwgITEpO1xuICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcztcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW4uZGF0YSh0aGlzLCBcImNhbmNlbC50aXBzeVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBuLmRhdGEodCwgXCJhY3RpdmUudGlwc3lcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpLmZhZGUgPyByLnN0b3AoKS5mYWRlT3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4odGhpcykucmVtb3ZlKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogci5yZW1vdmUoKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgMTAwKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICB9LCBuLmZuLnRpcHN5LmVsZW1lbnRPcHRpb25zID0gZnVuY3Rpb24odCwgaSkge1xuICAgICAgICByZXR1cm4gbi5tZXRhZGF0YSA/IG4uZXh0ZW5kKHt9LCBpLCBuKHQpLm1ldGFkYXRhKCkpIDogaVxuICAgIH0sIG4uZm4udGlwc3kuZGVmYXVsdHMgPSB7XG4gICAgICAgIGZhZGU6ICExLFxuICAgICAgICBmYWxsYmFjazogXCJcIixcbiAgICAgICAgZ3Jhdml0eTogXCJuXCIsXG4gICAgICAgIGh0bWw6ICExLFxuICAgICAgICB0aXRsZTogXCJ0aXRsZVwiXG4gICAgfSwgbi5mbi50aXBzeS5hdXRvTlMgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG4odGhpcykub2Zmc2V0KCkudG9wID4gbihkb2N1bWVudCkuc2Nyb2xsVG9wKCkgKyBuKHdpbmRvdykuaGVpZ2h0KCkgLyAyID8gXCJzXCIgOiBcIm5cIlxuICAgIH0sIG4uZm4udGlwc3kuYXV0b1dFID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBuKHRoaXMpLm9mZnNldCgpLmxlZnQgPiBuKGRvY3VtZW50KS5zY3JvbGxMZWZ0KCkgKyBuKHdpbmRvdykud2lkdGgoKSAvIDIgPyBcImVcIiA6IFwid1wiXG4gICAgfVxufSkoalF1ZXJ5KTtcblxuOyAvLy8gQWpheEF2YXRhclRodW1ibmFpbC5qc1xudmFyIFJvYmxveFRodW1icyA9IGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIG4odCwgaSwgcikge1xuICAgICAgICAkLmdldChcIi90aHVtYnMvcmF3YXZhdGFyLmFzaHhcIiwge1xuICAgICAgICAgICAgVXNlcklEOiBpLFxuICAgICAgICAgICAgVGh1bWJuYWlsRm9ybWF0SUQ6IHJcbiAgICAgICAgfSwgZnVuY3Rpb24odSkge1xuICAgICAgICAgICAgdSA9PSBcIlBFTkRJTkdcIiA/IHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIG4odCwgaSwgcilcbiAgICAgICAgICAgIH0sIDNlMykgOiB1LnN1YnN0cmluZyg1LCAwKSA9PSBcIkVSUk9SXCIgfHwgJChcIiNcIiArIHQpLmF0dHIoXCJzcmNcIiwgdSlcbiAgICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgR2VuZXJhdGVBdmF0YXJUaHVtYjogZnVuY3Rpb24odCwgaSwgcikge1xuICAgICAgICAgICAgJChcIiNcIiArIHQpLmF0dHIoXCJzcmNcIiwgXCIvaW1hZ2VzL3NwaW5uZXJzL3dhaXRpbmcuZ2lmXCIpLCBuKHQsIGksIHIpXG4gICAgICAgIH1cbiAgICB9XG59KCk7XG5cbjsgLy8vIGV4dGVuc2lvbnMvc3RyaW5nLmpzXG4kLmV4dGVuZChTdHJpbmcucHJvdG90eXBlLCBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXBsYWNlKC8mL2csIFwiJmFtcDtcIikucmVwbGFjZSgvPC9nLCBcIiZsdDtcIikucmVwbGFjZSgvPi9nLCBcIiZndDtcIikucmVwbGFjZSgvXCIvZywgXCImcXVvdDtcIikucmVwbGFjZSgvJy9nLCBcIiYjMzk7XCIpXG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGVzY2FwZUhUTUw6IG5cbiAgICB9XG59KCkpO1xuXG47IC8vLyBTdHJpbmdUcnVuY2F0b3IubWluLmpzXG5mdW5jdGlvbiBJbml0U3RyaW5nVHJ1bmNhdG9yKCkge1xuICAgIGlzSW5pdGlhbGl6ZWQgfHwgKGZpdFN0cmluZ1NwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKSwgZml0U3RyaW5nU3Bhbi5zdHlsZS5kaXNwbGF5ID0gXCJpbmxpbmVcIiwgZml0U3RyaW5nU3Bhbi5zdHlsZS52aXNpYmlsaXR5ID0gXCJoaWRkZW5cIiwgZml0U3RyaW5nU3Bhbi5zdHlsZS5wYWRkaW5nID0gXCIwcHhcIiwgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmaXRTdHJpbmdTcGFuKSwgaXNJbml0aWFsaXplZCA9ICEwKVxufVxuXG5mdW5jdGlvbiBmaXRTdHJpbmdUb1dpZHRoKG4sIHQsIGkpIHtcbiAgICBmdW5jdGlvbiBmKG4pIHtcbiAgICAgICAgcmV0dXJuIG4ucmVwbGFjZShcIjxcIiwgXCImbHQ7XCIpLnJlcGxhY2UoXCI+XCIsIFwiJmd0O1wiKVxuICAgIH1cbiAgICBpZiAoaXNJbml0aWFsaXplZCB8fCBJbml0U3RyaW5nVHJ1bmNhdG9yKCksIGkgJiYgKGZpdFN0cmluZ1NwYW4uY2xhc3NOYW1lID0gaSksIGkgPSBmKG4pLCBmaXRTdHJpbmdTcGFuLmlubmVySFRNTCA9IGksIGZpdFN0cmluZ1NwYW4ub2Zmc2V0V2lkdGggPiB0KSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwLCByLCB1ID0gbi5sZW5ndGg7IHIgPSB1IC0gaSA+PiAxOykgciA9IGkgKyByLCBmaXRTdHJpbmdTcGFuLmlubmVySFRNTCA9IGYobi5zdWJzdHJpbmcoMCwgcikpICsgXCImaGVsbGlwO1wiLCBmaXRTdHJpbmdTcGFuLm9mZnNldFdpZHRoID4gdCA/IHUgPSByIDogaSA9IHI7XG4gICAgICAgIGkgPSBuLnN1YnN0cmluZygwLCBpKSArIFwiJmhlbGxpcDtcIlxuICAgIH1cbiAgICByZXR1cm4gaVxufVxuXG5mdW5jdGlvbiBmaXRTdHJpbmdUb1dpZHRoU2FmZShuLCB0LCBpKSB7XG4gICAgcmV0dXJuIG4gPSBmaXRTdHJpbmdUb1dpZHRoKG4sIHQsIGkpLCBuLmluZGV4T2YoXCImaGVsbGlwO1wiKSAhPSAtMSAmJiAodCA9IG4ubGFzdEluZGV4T2YoXCIgXCIpLCB0ICE9IC0xICYmIHQgKyAxMCA8PSBuLmxlbmd0aCAmJiAobiA9IG4uc3Vic3RyaW5nKDAsIHQgKyAyKSArIFwiJmhlbGxpcDtcIikpLCBuXG59XG52YXIgaXNJbml0aWFsaXplZCA9ICExLFxuICAgIGZpdFN0cmluZ1NwYW4gPSBudWxsO1xuXG47IC8vLyBqc29uMi5taW4uanNcbnZhciBKU09OO1xuSlNPTiB8fCAoSlNPTiA9IHt9KSxcbiAgICBmdW5jdGlvbigpIHtcbiAgICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAgICAgZnVuY3Rpb24gaShuKSB7XG4gICAgICAgICAgICByZXR1cm4gbiA8IDEwID8gXCIwXCIgKyBuIDogblxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZihuKSB7XG4gICAgICAgICAgICByZXR1cm4gby5sYXN0SW5kZXggPSAwLCBvLnRlc3QobikgPyAnXCInICsgbi5yZXBsYWNlKG8sIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgICAgICB2YXIgdCA9IHNbbl07XG4gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB0ID09IFwic3RyaW5nXCIgPyB0IDogXCJcXFxcdVwiICsgKFwiMDAwMFwiICsgbi5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpXG4gICAgICAgICAgICB9KSArICdcIicgOiAnXCInICsgbiArICdcIidcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHIoaSwgZSkge1xuICAgICAgICAgICAgdmFyIGMsIGwsIGgsIGEsIHYgPSBuLFxuICAgICAgICAgICAgICAgIHMsIG8gPSBlW2ldO1xuICAgICAgICAgICAgbyAmJiB0eXBlb2YgbyA9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvLnRvSlNPTiA9PSBcImZ1bmN0aW9uXCIgJiYgKG8gPSBvLnRvSlNPTihpKSksIHR5cGVvZiB0ID09IFwiZnVuY3Rpb25cIiAmJiAobyA9IHQuY2FsbChlLCBpLCBvKSk7XG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGVvZiBvKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZihvKTtcbiAgICAgICAgICAgICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpc0Zpbml0ZShvKSA/IFN0cmluZyhvKSA6IFwibnVsbFwiO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgICAgICAgICAgY2FzZSBcIm51bGxcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhvKTtcbiAgICAgICAgICAgICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgICAgICAgICAgICAgIGlmICghbykgcmV0dXJuIFwibnVsbFwiO1xuICAgICAgICAgICAgICAgICAgICBpZiAobiArPSB1LCBzID0gW10sIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkobykgPT09IFwiW29iamVjdCBBcnJheV1cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChhID0gby5sZW5ndGgsIGMgPSAwOyBjIDwgYTsgYyArPSAxKSBzW2NdID0gcihjLCBvKSB8fCBcIm51bGxcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoID0gcy5sZW5ndGggPT09IDAgPyBcIltdXCIgOiBuID8gXCJbXFxuXCIgKyBuICsgcy5qb2luKFwiLFxcblwiICsgbikgKyBcIlxcblwiICsgdiArIFwiXVwiIDogXCJbXCIgKyBzLmpvaW4oXCIsXCIpICsgXCJdXCIsIG4gPSB2LCBoXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgdHlwZW9mIHQgPT0gXCJvYmplY3RcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYSA9IHQubGVuZ3RoLCBjID0gMDsgYyA8IGE7IGMgKz0gMSkgbCA9IHRbY10sIHR5cGVvZiBsID09IFwic3RyaW5nXCIgJiYgKGggPSByKGwsIG8pLCBoICYmIHMucHVzaChmKGwpICsgKG4gPyBcIjogXCIgOiBcIjpcIikgKyBoKSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobCBpbiBvKSBPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChvLCBsKSAmJiAoaCA9IHIobCwgbyksIGggJiYgcy5wdXNoKGYobCkgKyAobiA/IFwiOiBcIiA6IFwiOlwiKSArIGgpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGggPSBzLmxlbmd0aCA9PT0gMCA/IFwie31cIiA6IG4gPyBcIntcXG5cIiArIG4gKyBzLmpvaW4oXCIsXFxuXCIgKyBuKSArIFwiXFxuXCIgKyB2ICsgXCJ9XCIgOiBcIntcIiArIHMuam9pbihcIixcIikgKyBcIn1cIiwgbiA9IHYsIGhcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0eXBlb2YgRGF0ZS5wcm90b3R5cGUudG9KU09OICE9IFwiZnVuY3Rpb25cIiAmJiAoRGF0ZS5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNGaW5pdGUodGhpcy52YWx1ZU9mKCkpID8gdGhpcy5nZXRVVENGdWxsWWVhcigpICsgXCItXCIgKyBpKHRoaXMuZ2V0VVRDTW9udGgoKSArIDEpICsgXCItXCIgKyBpKHRoaXMuZ2V0VVRDRGF0ZSgpKSArIFwiVFwiICsgaSh0aGlzLmdldFVUQ0hvdXJzKCkpICsgXCI6XCIgKyBpKHRoaXMuZ2V0VVRDTWludXRlcygpKSArIFwiOlwiICsgaSh0aGlzLmdldFVUQ1NlY29uZHMoKSkgKyBcIlpcIiA6IG51bGxcbiAgICAgICAgfSwgU3RyaW5nLnByb3RvdHlwZS50b0pTT04gPSBOdW1iZXIucHJvdG90eXBlLnRvSlNPTiA9IEJvb2xlYW4ucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVPZigpXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZSA9IC9bXFx1MDAwMFxcdTAwYWRcXHUwNjAwLVxcdTA2MDRcXHUwNzBmXFx1MTdiNFxcdTE3YjVcXHUyMDBjLVxcdTIwMGZcXHUyMDI4LVxcdTIwMmZcXHUyMDYwLVxcdTIwNmZcXHVmZWZmXFx1ZmZmMC1cXHVmZmZmXS9nLFxuICAgICAgICAgICAgbyA9IC9bXFxcXFxcXCJcXHgwMC1cXHgxZlxceDdmLVxceDlmXFx1MDBhZFxcdTA2MDAtXFx1MDYwNFxcdTA3MGZcXHUxN2I0XFx1MTdiNVxcdTIwMGMtXFx1MjAwZlxcdTIwMjgtXFx1MjAyZlxcdTIwNjAtXFx1MjA2ZlxcdWZlZmZcXHVmZmYwLVxcdWZmZmZdL2csXG4gICAgICAgICAgICBuLCB1LCBzID0ge1xuICAgICAgICAgICAgICAgIFwiXFxiXCI6IFwiXFxcXGJcIixcbiAgICAgICAgICAgICAgICBcIlxcdFwiOiBcIlxcXFx0XCIsXG4gICAgICAgICAgICAgICAgXCJcXG5cIjogXCJcXFxcblwiLFxuICAgICAgICAgICAgICAgIFwiXFxmXCI6IFwiXFxcXGZcIixcbiAgICAgICAgICAgICAgICBcIlxcclwiOiBcIlxcXFxyXCIsXG4gICAgICAgICAgICAgICAgJ1wiJzogJ1xcXFxcIicsXG4gICAgICAgICAgICAgICAgXCJcXFxcXCI6IFwiXFxcXFxcXFxcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHQ7XG4gICAgICAgIHR5cGVvZiBKU09OLnN0cmluZ2lmeSAhPSBcImZ1bmN0aW9uXCIgJiYgKEpTT04uc3RyaW5naWZ5ID0gZnVuY3Rpb24oaSwgZiwgZSkge1xuICAgICAgICAgICAgdmFyIG87XG4gICAgICAgICAgICBpZiAobiA9IFwiXCIsIHUgPSBcIlwiLCB0eXBlb2YgZSA9PSBcIm51bWJlclwiKVxuICAgICAgICAgICAgICAgIGZvciAobyA9IDA7IG8gPCBlOyBvICs9IDEpIHUgKz0gXCIgXCI7XG4gICAgICAgICAgICBlbHNlIHR5cGVvZiBlID09IFwic3RyaW5nXCIgJiYgKHUgPSBlKTtcbiAgICAgICAgICAgIGlmICh0ID0gZiwgZiAmJiB0eXBlb2YgZiAhPSBcImZ1bmN0aW9uXCIgJiYgKHR5cGVvZiBmICE9IFwib2JqZWN0XCIgfHwgdHlwZW9mIGYubGVuZ3RoICE9IFwibnVtYmVyXCIpKSB0aHJvdyBuZXcgRXJyb3IoXCJKU09OLnN0cmluZ2lmeVwiKTtcbiAgICAgICAgICAgIHJldHVybiByKFwiXCIsIHtcbiAgICAgICAgICAgICAgICBcIlwiOiBpXG4gICAgICAgICAgICB9KVxuICAgICAgICB9KSwgdHlwZW9mIEpTT04ucGFyc2UgIT0gXCJmdW5jdGlvblwiICYmIChKU09OLnBhcnNlID0gZnVuY3Rpb24obiwgdCkge1xuICAgICAgICAgICAgZnVuY3Rpb24gcihuLCBpKSB7XG4gICAgICAgICAgICAgICAgdmFyIGYsIGUsIHUgPSBuW2ldO1xuICAgICAgICAgICAgICAgIGlmICh1ICYmIHR5cGVvZiB1ID09IFwib2JqZWN0XCIpXG4gICAgICAgICAgICAgICAgICAgIGZvciAoZiBpbiB1KSBPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh1LCBmKSAmJiAoZSA9IHIodSwgZiksIGUgIT09IHVuZGVmaW5lZCA/IHVbZl0gPSBlIDogZGVsZXRlIHVbZl0pO1xuICAgICAgICAgICAgICAgIHJldHVybiB0LmNhbGwobiwgaSwgdSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBpO1xuICAgICAgICAgICAgaWYgKG4gPSBTdHJpbmcobiksIGUubGFzdEluZGV4ID0gMCwgZS50ZXN0KG4pICYmIChuID0gbi5yZXBsYWNlKGUsIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiXFxcXHVcIiArIChcIjAwMDBcIiArIG4uY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KVxuICAgICAgICAgICAgICAgIH0pKSwgL15bXFxdLDp7fVxcc10qJC8udGVzdChuLnJlcGxhY2UoL1xcXFwoPzpbXCJcXFxcXFwvYmZucnRdfHVbMC05YS1mQS1GXXs0fSkvZywgXCJAXCIpLnJlcGxhY2UoL1wiW15cIlxcXFxcXG5cXHJdKlwifHRydWV8ZmFsc2V8bnVsbHwtP1xcZCsoPzpcXC5cXGQqKT8oPzpbZUVdWytcXC1dP1xcZCspPy9nLCBcIl1cIikucmVwbGFjZSgvKD86Xnw6fCwpKD86XFxzKlxcWykrL2csIFwiXCIpKSkgcmV0dXJuIGkgPSBldmFsKFwiKFwiICsgbiArIFwiKVwiKSwgdHlwZW9mIHQgPT0gXCJmdW5jdGlvblwiID8gcih7XG4gICAgICAgICAgICAgICAgXCJcIjogaVxuICAgICAgICAgICAgfSwgXCJcIikgOiBpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFwiSlNPTi5wYXJzZVwiKTtcbiAgICAgICAgfSlcbiAgICB9KCk7XG5cbjsgLy8vIHdlYmtpdC5qc1xudHlwZW9mIFN5cy5Ccm93c2VyLldlYktpdCA9PSBcInVuZGVmaW5lZFwiICYmIChTeXMuQnJvd3Nlci5XZWJLaXQgPSB7fSksIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZihcIldlYktpdC9cIikgPiAtMSAmJiAoU3lzLkJyb3dzZXIuYWdlbnQgPSBTeXMuQnJvd3Nlci5XZWJLaXQsIFN5cy5Ccm93c2VyLnZlcnNpb24gPSBwYXJzZUZsb2F0KG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL1dlYktpdFxcLyhcXGQrKFxcLlxcZCspPykvKVsxXSksIFN5cy5Ccm93c2VyLm5hbWUgPSBcIldlYktpdFwiKTtcblxuOyAvLy8gR29vZ2xlQW5hbHl0aWNzL0dvb2dsZUFuYWx5dGljc0V2ZW50cy5qc1xudmFyIEdvb2dsZUFuYWx5dGljc0V2ZW50cyA9IG5ldyBmdW5jdGlvbigpIHtcbiAgICB0aGlzLkZpcmVFdmVudCA9IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgaWYgKHR5cGVvZiBfZ2FxICE9IHR5cGVvZiB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHZhciBpID0gW1wiX3RyYWNrRXZlbnRcIl0sXG4gICAgICAgICAgICAgICAgdCA9IFtcImIuX3RyYWNrRXZlbnRcIl07XG4gICAgICAgICAgICBfZ2FxLnB1c2goaS5jb25jYXQobikpLCBfZ2FxLnB1c2godC5jb25jYXQobikpXG4gICAgICAgIH1cbiAgICB9XG59O1xuXG47IC8vLyBNYXN0ZXJQYWdlVUkuanNcbiQoZnVuY3Rpb24oKSB7XG4gICAgJChcIi50b29sdGlwXCIpLnRpcHN5KCksICQoXCIudG9vbHRpcC10b3BcIikudGlwc3koe1xuICAgICAgICBncmF2aXR5OiBcInNcIlxuICAgIH0pLCAkKFwiLnRvb2x0aXAtcmlnaHRcIikudGlwc3koe1xuICAgICAgICBncmF2aXR5OiBcIndcIlxuICAgIH0pLCAkKFwiLnRvb2x0aXAtbGVmdFwiKS50aXBzeSh7XG4gICAgICAgIGdyYXZpdHk6IFwiZVwiXG4gICAgfSksICQoXCIudG9vbHRpcC1ib3R0b21cIikudGlwc3koe1xuICAgICAgICBncmF2aXR5OiBcIm5cIlxuICAgIH0pXG59KSwgdHlwZW9mIFJvYmxveCA9PSBcInVuZGVmaW5lZFwiICYmIChSb2Jsb3ggPSB7fSksIFJvYmxveC5GaXhlZFVJID0gZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcygpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBwYWdlWU9mZnNldCAhPSBcInVuZGVmaW5lZFwiKSByZXR1cm4gcGFnZVlPZmZzZXQ7XG4gICAgICAgIHZhciB0ID0gZG9jdW1lbnQuYm9keSxcbiAgICAgICAgICAgIG4gPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIHJldHVybiBuID0gbi5jbGllbnRIZWlnaHQgPyBuIDogdCwgbi5zY3JvbGxUb3BcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlKCkge1xuICAgICAgICB2YXIgbiA9IHMoKTtcbiAgICAgICAgdCB8fCAodCA9ICQoXCJpZnJhbWUuSWZyYW1lQWRIaWRlXCIpKSwgdC5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHQgPSAkKHRoaXMpLm9mZnNldCgpLnRvcCAtIDczO1xuICAgICAgICAgICAgIXIuZ3V0dGVyQWRzRW5hYmxlZCAmJiBuID49IHQgPyAkKHRoaXMpLmNzcyhcInZpc2liaWxpdHlcIiwgXCJoaWRkZW5cIikgOiAkKHRoaXMpLmNzcyhcInZpc2liaWxpdHlcIiwgXCJ2aXNpYmxlXCIpXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaSgpIHtcbiAgICAgICAgJChcIiNOYXZcIikuY3NzKFwiY3NzVGV4dFwiLCBcInBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDt3aWR0aDo5NzBweCAhaW1wb3J0YW50XCIpLCAkKFwiI1NtYWxsSGVhZGVyQ29udGFpbmVyXCIpLmNzcyhcImNzc1RleHRcIiwgXCJwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtoZWlnaHQ6IDM2cHggIWltcG9ydGFudDt3aWR0aDo5NzBweCAhaW1wb3J0YW50XCIpLCAkKFwiLmZvcmNlU3BhY2VcIikuY3NzKFwiY3NzVGV4dFwiLCBcIndpZHRoOiA5NzBweCAhaW1wb3J0YW50OyBoZWlnaHQ6OXB4ICFpbXBvcnRhbnQ7cGFkZGluZy10b3A6IDBweCAhaW1wb3J0YW50O2JhY2tncm91bmQ6d2hpdGVcIiksICQoXCIjQ29udGFpbmVyXCIpLmNzcyhcImNzc1RleHRcIiwgXCJ3aWR0aDogOTcwcHggIWltcG9ydGFudFwiKSwgJChcIi5teVN1Ym1lbnVGaXhlZFwiKS5jc3MoXCJjc3NUZXh0XCIsIFwicG9zaXRpb246IHJlbGF0aXZlOyB0b3A6IDBweDtcIiksICQoXCIjTWFzdGVyQ29udGFpbmVyXCIpLmNzcyhcImNzc1RleHRcIiwgXCJ3aWR0aDogOTcwcHggIWltcG9ydGFudFwiKSwgJChcIi5teVN1Ym1lbnVGaXhlZFwiKS5sZW5ndGggPT0gMSAmJiAoJChcIi5mb3JjZVNwYWNlVW5kZXJTdWJtZW51XCIpLmhpZGUoKSwgJChcIi5mb3JjZVNwYWNlXCIpLmNzcyhcImNzc1RleHRcIiwgXCJ3aWR0aDogOTEwcHggIWltcG9ydGFudDsgaGVpZ2h0OjdweCAhaW1wb3J0YW50O3BhZGRpbmctdG9wOiAwcHggIWltcG9ydGFudDtcIikpLCAkKHdpbmRvdykudW5iaW5kKFwic2Nyb2xsXCIpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaCgpIHtcbiAgICAgICAgJChcIiNOYXZcIikuY3NzKFwiY3NzVGV4dFwiLCBcInBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50O3dpZHRoOjEwMCUgIWltcG9ydGFudFwiKSwgJChcIiNTbWFsbEhlYWRlckNvbnRhaW5lclwiKS5jc3MoXCJjc3NUZXh0XCIsIFwicG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7aGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7d2lkdGg6MTAwJSAhaW1wb3J0YW50XCIpLCAkKFwiLmZvcmNlU3BhY2VcIikuY3NzKFwiY3NzVGV4dFwiLCBcIndpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IGhlaWdodDoxNXB4ICFpbXBvcnRhbnQ7cGFkZGluZy10b3A6IDYycHggIWltcG9ydGFudDtcIiksICQoXCIjQ29udGFpbmVyXCIpLmNzcyhcImNzc1RleHRcIiwgXCJ3aWR0aDogMTAwJSAhaW1wb3J0YW50XCIpLCAkKFwiLm15U3VibWVudUZpeGVkXCIpLmNzcyhcImNzc1RleHRcIiwgXCJwb3NpdGlvbjogZml4ZWQ7IHRvcDogNjhweDtcIiksICQoXCIjTWFzdGVyQ29udGFpbmVyXCIpLmNzcyhcImNzc1RleHRcIiwgXCJ3aWR0aDogMTAwJVwiKSwgJChcIi5teVN1Ym1lbnVGaXhlZFwiKS5sZW5ndGggPT0gMSAmJiAkKFwiLmZvcmNlU3BhY2VVbmRlclN1Ym1lbnVcIikuc2hvdygpLCAkKHdpbmRvdykuc2Nyb2xsKGUpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbygpIHtcbiAgICAgICAgdmFyIG4gPSAxMDI0O1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQuYm9keSAmJiBkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoICYmIChuID0gZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aCksIHdpbmRvdy5pbm5lcldpZHRoICYmIHdpbmRvdy5pbm5lckhlaWdodCAmJiAobiA9IHdpbmRvdy5pbm5lcldpZHRoKSwgblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHUoKSB7XG4gICAgICAgIG8oKSA8IDk3OCA/IGkoKSA6IGgoKVxuICAgIH1cbiAgICB2YXIgbiA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgZiA9IC9tb2JpbGUvaS50ZXN0KG4pIHx8IC9pcGFkL2kudGVzdChuKSB8fCAvaXBob25lL2kudGVzdChuKSB8fCAvYW5kcm9pZC9pLnRlc3QobikgfHwgL3BsYXlib29rL2kudGVzdChuKSB8fCAvYmxhY2tiZXJyeS9pLnRlc3QobiksXG4gICAgICAgIHQsIHI7XG4gICAgcmV0dXJuICQoZnVuY3Rpb24oKSB7XG4gICAgICAgIGYgPyBpKCkgOiAkKHdpbmRvdykubG9hZCh1KS5yZXNpemUodSlcbiAgICB9KSwgdCA9IG51bGwsIHIgPSB7XG4gICAgICAgIGlzTW9iaWxlOiBmLFxuICAgICAgICBndXR0ZXJBZHNFbmFibGVkOiAhMSxcbiAgICAgICAgdW5maXhIZWFkZXI6IGlcbiAgICB9XG59KCk7XG5cbjsgLy8vIGpxdWVyeS5jb29raWUuanNcbmpRdWVyeS5jb29raWUgPSBmdW5jdGlvbihuLCB0LCBpKSB7XG4gICAgdmFyIG8sIHIsIGYsIGUsIHUsIHM7XG4gICAgaWYgKHR5cGVvZiB0ICE9IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgaSA9IGkgfHwge30sIHQgPT09IG51bGwgJiYgKHQgPSBcIlwiLCBpLmV4cGlyZXMgPSAtMSksIG8gPSBcIlwiLCBpLmV4cGlyZXMgJiYgKHR5cGVvZiBpLmV4cGlyZXMgPT0gXCJudW1iZXJcIiB8fCBpLmV4cGlyZXMudG9VVENTdHJpbmcpICYmICh0eXBlb2YgaS5leHBpcmVzID09IFwibnVtYmVyXCIgPyAociA9IG5ldyBEYXRlLCByLnNldFRpbWUoci5nZXRUaW1lKCkgKyBpLmV4cGlyZXMgKiA4NjRlNSkpIDogciA9IGkuZXhwaXJlcywgbyA9IFwiOyBleHBpcmVzPVwiICsgci50b1VUQ1N0cmluZygpKTtcbiAgICAgICAgdmFyIGggPSBpLnBhdGggPyBcIjsgcGF0aD1cIiArIGkucGF0aCA6IFwiXCIsXG4gICAgICAgICAgICBjID0gaS5kb21haW4gPyBcIjsgZG9tYWluPVwiICsgaS5kb21haW4gOiBcIlwiLFxuICAgICAgICAgICAgbCA9IGkuc2VjdXJlID8gXCI7IHNlY3VyZVwiIDogXCJcIjtcbiAgICAgICAgZG9jdW1lbnQuY29va2llID0gW24sIFwiPVwiLCBlbmNvZGVVUklDb21wb25lbnQodCksIG8sIGgsIGMsIGxdLmpvaW4oXCJcIilcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZiA9IG51bGwsIGRvY3VtZW50LmNvb2tpZSAmJiBkb2N1bWVudC5jb29raWUgIT0gXCJcIilcbiAgICAgICAgICAgIGZvciAoZSA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdChcIjtcIiksIHUgPSAwOyB1IDwgZS5sZW5ndGg7IHUrKylcbiAgICAgICAgICAgICAgICBpZiAocyA9IGpRdWVyeS50cmltKGVbdV0pLCBzLnN1YnN0cmluZygwLCBuLmxlbmd0aCArIDEpID09IG4gKyBcIj1cIikge1xuICAgICAgICAgICAgICAgICAgICBmID0gZGVjb2RlVVJJQ29tcG9uZW50KHMuc3Vic3RyaW5nKG4ubGVuZ3RoICsgMSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH0gcmV0dXJuIGZcbiAgICB9XG59O1xuXG47IC8vLyBqcXVlcnkuanNvbmNvb2tpZS5qc1xuZnVuY3Rpb24gUm9ibG94SlNPTkNvb2tpZShuKSB7XG4gICAgdGhpcy5fY29va2llbmFtZSA9IG5cbn0oZnVuY3Rpb24obikge1xuICAgIHZhciB0ID0gZnVuY3Rpb24obikge1xuICAgICAgICByZXR1cm4gdHlwZW9mIG4gPT0gXCJvYmplY3RcIiAmJiAhKG4gaW5zdGFuY2VvZiBBcnJheSkgJiYgbiAhPT0gbnVsbFxuICAgIH07XG4gICAgbi5leHRlbmQoe1xuICAgICAgICBnZXRKU09OQ29va2llOiBmdW5jdGlvbih0LCBpKSB7XG4gICAgICAgICAgICB2YXIgciA9IG4uY29va2llKHQpO1xuICAgICAgICAgICAgcmV0dXJuIGkgPyByIDogciA/IEpTT04ucGFyc2UocikgOiB7fVxuICAgICAgICB9LFxuICAgICAgICBzZXRKU09OQ29va2llOiBmdW5jdGlvbihpLCByLCB1KSB7XG4gICAgICAgICAgICB2YXIgZiA9IFwiXCI7XG4gICAgICAgICAgICByZXR1cm4gdSA9IG4uZXh0ZW5kKHtcbiAgICAgICAgICAgICAgICBleHBpcmVzOiA5MCxcbiAgICAgICAgICAgICAgICBwYXRoOiBcIi9cIlxuICAgICAgICAgICAgfSwgdSksIGYgPSB0KHIpID8gSlNPTi5zdHJpbmdpZnkocikgOiByLCBuLmNvb2tpZShpLCBmLCB1KVxuICAgICAgICB9LFxuICAgICAgICByZW1vdmVKU09OQ29va2llOiBmdW5jdGlvbih0KSB7XG4gICAgICAgICAgICByZXR1cm4gbi5jb29raWUodCwgbnVsbClcbiAgICAgICAgfSxcbiAgICAgICAgSlNPTkNvb2tpZTogZnVuY3Rpb24odCwgaSwgcikge1xuICAgICAgICAgICAgcmV0dXJuIGkgJiYgbi5zZXRKU09OQ29va2llKHQsIGksIHIpLCBuLmdldEpTT05Db29raWUodClcbiAgICAgICAgfVxuICAgIH0pXG59KShqUXVlcnkpLCBSb2Jsb3hKU09OQ29va2llLnByb3RvdHlwZSA9IHtcbiAgICBEZWxldGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gJC5yZW1vdmVKU09OQ29va2llKHRoaXMuX2Nvb2tpZW5hbWUpXG4gICAgfSxcbiAgICBTZXRPYmo6IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICAgICAgcmV0dXJuIHQgfHwgKHQgPSB7XG4gICAgICAgICAgICBwYXRoOiBcIi9cIlxuICAgICAgICB9KSwgJC5KU09OQ29va2llKHRoaXMuX2Nvb2tpZW5hbWUsIG4sIHQpXG4gICAgfSxcbiAgICBTZXRKU09OOiBmdW5jdGlvbihuLCB0KSB7XG4gICAgICAgIHJldHVybiB0IHx8ICh0ID0ge1xuICAgICAgICAgICAgcGF0aDogXCIvXCJcbiAgICAgICAgfSksICQuSlNPTkNvb2tpZSh0aGlzLl9jb29raWVuYW1lLCBuLCB0KVxuICAgIH0sXG4gICAgR2V0T2JqOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIG4gPSAkLmdldEpTT05Db29raWUodGhpcy5fY29va2llbmFtZSwgITEpO1xuICAgICAgICByZXR1cm4gbiA9PSBudWxsID8ge30gOiBuXG4gICAgfSxcbiAgICBHZXRKU09OOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuICQuZ2V0SlNPTkNvb2tpZSh0aGlzLl9jb29raWVuYW1lLCAhMClcbiAgICB9XG59O1xuXG47IC8vLyBYc3JmVG9rZW4uanNcbnR5cGVvZiBSb2Jsb3ggPT0gXCJ1bmRlZmluZWRcIiAmJiAoUm9ibG94ID0ge30pLCBSb2Jsb3guWHNyZlRva2VuID0gZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZihuKSB7XG4gICAgICAgIHZhciB1LCB0O1xuICAgICAgICBpZiAoaS5hbGxVcmxzRW5hYmxlZCkgcmV0dXJuICEwO1xuICAgICAgICBmb3IgKHUgPSBuLnNwbGl0KFwiP1wiKVswXS50b0xvd2VyQ2FzZSgpLCB0ID0gMDsgdCA8IHIubGVuZ3RoOyB0KyspXG4gICAgICAgICAgICBpZiAoclt0XSA9PT0gdSkgcmV0dXJuICEwO1xuICAgICAgICByZXR1cm4gITFcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlKG4pIHtcbiAgICAgICAgci5wdXNoKG4udG9Mb3dlckNhc2UoKSlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvKHQpIHtcbiAgICAgICAgbiA9IHRcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1KCkge1xuICAgICAgICByZXR1cm4gblxuICAgIH1cbiAgICB2YXIgbiA9IFwiXCIsXG4gICAgICAgIHQgPSAvKF58XFw/fCYpdG9rZW49W14mXSovLFxuICAgICAgICByID0gW1wiL2NoYXQvZnJpZW5kaGFuZGxlci5hc2h4XCIsIFwiL2NoYXQvcGFydHkuYXNoeFwiLCBcIi9jaGF0L3NlbmQuYXNoeFwiLCBcIi9jaGF0L3V0aWxpdHkuYXNoeFwiLCBcIi9ncm91cHMvcm9sZXNldHVwZGF0ZXIuYXNoeFwiLCBcImdyb3Vwcy5hc3B4L2V4aWxldXNlcmFuZGRlbGV0ZXBvc3RzXCIsIFwibWVzc2FnZXNoYW5kbGVyLmFzaHhcIiwgXCJlbWFpbHVwZ3JhZGVtZS5hc2h4XCIsIFwiL3NlcnZpY2VzL3VzZXJjaGVjay5hc214L3VwZGF0ZXBlcnNvbmFsaW5mb1wiLCBcIi90aHVtYnMvYXNzZXRtZWRpYS9wbGFjZW1lZGlhaXRlbXNvcnRoYW5kbGVyLmFzaHhcIl0sXG4gICAgICAgIGk7XG4gICAgcmV0dXJuICQuYWpheFByZWZpbHRlcihmdW5jdGlvbihpKSB7XG4gICAgICAgIHZhciBvLCBlO1xuICAgICAgICBpLmRhdGFUeXBlICE9IFwianNvbnBcIiAmJiBpLmRhdGFUeXBlICE9IFwic2NyaXB0XCIgJiYgbiAhPSBcIlwiICYmIGYoaS51cmwpICYmIChvID0gJC5wYXJhbSh7XG4gICAgICAgICAgICB0b2tlbjogblxuICAgICAgICB9KSwgdC50ZXN0KGkudXJsKSB8fCB0eXBlb2YgaS5kYXRhICE9IFwidW5kZWZpbmVkXCIgJiYgdC50ZXN0KGkuZGF0YSkgfHwgKGkudXJsICs9IC9cXD8vLnRlc3QoaS51cmwpID8gXCImdG9rZW49XCIgKyBlbmNvZGVVUklDb21wb25lbnQobikgOiBcIj90b2tlbj1cIiArIGVuY29kZVVSSUNvbXBvbmVudChuKSksIGUgPSBpLmVycm9yLCBpLmVycm9yID0gZnVuY3Rpb24ociwgdSwgZikge1xuICAgICAgICAgICAgaWYgKHIuc3RhdHVzID09IDQyMCkge1xuICAgICAgICAgICAgICAgIHZhciBvID0gci5nZXRSZXNwb25zZUhlYWRlcihcIlRva2VuXCIpO1xuICAgICAgICAgICAgICAgIGlmIChvID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGUgPT0gXCJmdW5jdGlvblwiICYmIGUociwgdSwgZik7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk51bGwgdG9rZW4gcmV0dXJuZWQgYnkgWHNyZiBlbmFibGVkIGhhbmRsZXJcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHQudGVzdChpLnVybCkgPyBpLnVybCA9IGkudXJsLnJlcGxhY2UodCwgXCIkMXRva2VuPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KG8pKSA6IGkuZGF0YSA9IGkuZGF0YS5yZXBsYWNlKHQsIFwiJDF0b2tlbj1cIiArIGVuY29kZVVSSUNvbXBvbmVudChvKSksICQuYWpheChpKSwgbiA9IG9cbiAgICAgICAgICAgIH0gZWxzZSB0eXBlb2YgZSA9PSBcImZ1bmN0aW9uXCIgJiYgZShyLCB1LCBmKVxuICAgICAgICB9KVxuICAgIH0pLCBpID0ge1xuICAgICAgICBzZXRUb2tlbjogbyxcbiAgICAgICAgZ2V0VG9rZW46IHUsXG4gICAgICAgIGFsbFVybHNFbmFibGVkOiAhMSxcbiAgICAgICAgYWRkRW5hYmxlZFVybDogZVxuICAgIH1cbn0oKTtcblxuOyAvLy8gUm9ibG94RXZlbnRNYW5hZ2VyLmpzXG5mdW5jdGlvbiBSQlhCYXNlRXZlbnRMaXN0ZW5lcigpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUkJYQmFzZUV2ZW50TGlzdGVuZXIpKSByZXR1cm4gbmV3IFJCWEJhc2VFdmVudExpc3RlbmVyO1xuICAgIHRoaXMuaW5pdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBmb3IgKGV2ZW50S2V5IGluIHRoaXMuZXZlbnRzKSAkKGRvY3VtZW50KS5iaW5kKHRoaXMuZXZlbnRzW2V2ZW50S2V5XSwgJC5wcm94eSh0aGlzLmxvY2FsQ29weSwgdGhpcykpXG4gICAgfSwgdGhpcy5ldmVudHMgPSBbXSwgdGhpcy5sb2NhbENvcHkgPSBmdW5jdGlvbihuLCB0KSB7XG4gICAgICAgIHZhciByID0gJC5leHRlbmQoITAsIHt9LCBuKSxcbiAgICAgICAgICAgIGkgPSAkLmV4dGVuZCghMCwge30sIHQpO1xuICAgICAgICB0aGlzLmhhbmRsZUV2ZW50KHIsIGkpXG4gICAgfSwgdGhpcy5kaXN0aWxsRGF0YSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY29uc29sZS5sb2coXCJSQlhFdmVudExpc3RlbmVyIGRpc3RpbGxEYXRhIC0gUGxlYXNlIGltcGxlbWVudCBtZVwiKSwgITFcbiAgICB9LCB0aGlzLmhhbmRsZUV2ZW50ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjb25zb2xlLmxvZyhcIkV2ZW50TGlzdGVuZXIgaGFuZGxlRXZlbnQgLSBQbGVhc2UgaW1wbGVtZW50IG1lXCIpLCAhMVxuICAgIH0sIHRoaXMuZmlyZUV2ZW50ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjb25zb2xlLmxvZyhcIkV2ZW50TGlzdGVuZXIgZmlyZUV2ZW50IC0gUGxlYXNlIGltcGxlbWVudCBtZVwiKSwgITFcbiAgICB9XG59XG5Sb2Jsb3hFdmVudE1hbmFnZXIgPSBuZXcgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gdShuKSB7XG4gICAgICAgIHZhciBpID0gbmV3IFJlZ0V4cChuICsgXCI9KFteO10qKVwiKSxcbiAgICAgICAgICAgIHQgPSBpLmV4ZWMoZG9jdW1lbnQuY29va2llKTtcbiAgICAgICAgcmV0dXJuIHQgPyB0WzFdIDogbnVsbFxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHQobikge1xuICAgICAgICBmb3IgKHZhciB1ID0ge30sIHIgPSBuLnNwbGl0KFwiJlwiKSwgaSwgdCA9IDA7IHQgPCByLmxlbmd0aDsgdCsrKSBpID0gclt0XS5zcGxpdChcIj1cIiksIHVbaVswXV0gPSBpWzFdO1xuICAgICAgICByZXR1cm4gdVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGkobikge1xuICAgICAgICB2YXIgaSA9IHUobik7XG4gICAgICAgIHJldHVybiBpID8gdChpKSA6IG51bGxcbiAgICB9XG4gICAgdmFyIG4gPSBbXSxcbiAgICAgICAgciA9IHt9O1xuICAgIHRoaXMuZW5hYmxlZCA9ICExLCB0aGlzLmluaXRpYWxpemVkID0gITEsIHRoaXMuZXZlbnRRdWV1ZSA9IFtdLCB0aGlzLmluaXRpYWxpemUgPSBmdW5jdGlvbihuKSB7XG4gICAgICAgIGZvciAodGhpcy5pbml0aWFsaXplZCA9ICEwLCB0aGlzLmVuYWJsZWQgPSBuOyB0aGlzLmV2ZW50UXVldWUubGVuZ3RoID4gMDspIHtcbiAgICAgICAgICAgIHZhciB0ID0gdGhpcy5ldmVudFF1ZXVlLnBvcCgpO1xuICAgICAgICAgICAgdGhpcy50cmlnZ2VyRXZlbnQodC5ldmVudE5hbWUsIHQuYXJncylcbiAgICAgICAgfVxuICAgIH0sIHRoaXMuZ2V0TWFya2V0aW5nR3VpZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgbiA9IGkoXCJSQlhFdmVudFRyYWNrZXJcIik7XG4gICAgICAgIHJldHVybiBuICE9IG51bGwgPyBuLmJyb3dzZXJpZCA6IC0xXG4gICAgfSwgdGhpcy50cmlnZ2VyRXZlbnQgPSBmdW5jdGlvbihuLCB0KSB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPyB0aGlzLmVuYWJsZWQgJiYgKHR5cGVvZiB0ID09IFwidW5kZWZpbmVkXCIgJiYgKHQgPSB7fSksIHQuZ3VpZCA9IHRoaXMuZ2V0TWFya2V0aW5nR3VpZCgpLCB0Lmd1aWQgIT0gLTEgJiYgJChkb2N1bWVudCkudHJpZ2dlcihuLCBbdF0pKSA6IHRoaXMuZXZlbnRRdWV1ZS5wdXNoKHtcbiAgICAgICAgICAgIGV2ZW50TmFtZTogbixcbiAgICAgICAgICAgIGFyZ3M6IHRcbiAgICAgICAgfSlcbiAgICB9LCB0aGlzLnJlZ2lzdGVyQ29va2llU3RvcmVFdmVudCA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgbi5wdXNoKHQpXG4gICAgfSwgdGhpcy5pbnNlcnREYXRhU3RvcmVLZXlWYWx1ZVBhaXIgPSBmdW5jdGlvbihuLCB0KSB7XG4gICAgICAgIHJbbl0gPSB0XG4gICAgfSwgdGhpcy5tb25pdG9yQ29va2llU3RvcmUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGksIHUsIGYsIHQsIHI7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIFJvYmxveCA9PSBcInVuZGVmaW5lZFwiIHx8IHR5cGVvZiBSb2Jsb3guQ2xpZW50ID09IFwidW5kZWZpbmVkXCIgfHwgd2luZG93LmxvY2F0aW9uLnByb3RvY29sID09IFwiaHR0cHM6XCIpIHJldHVybjtcbiAgICAgICAgICAgIGlmIChpID0gUm9ibG94LkNsaWVudC5DcmVhdGVMYXVuY2hlcighMSksIGkgPT0gbnVsbCkgcmV0dXJuO1xuICAgICAgICAgICAgZm9yICh1ID0gMDsgdSA8IG4ubGVuZ3RoOyB1KyspIHRyeSB7XG4gICAgICAgICAgICAgICAgZiA9IG5bdV0sIHQgPSBpLkdldEtleVZhbHVlKGYpLCB0ICE9IFwiXCIgJiYgdCAhPSBcIi0xXCIgJiYgdCAhPSBcIlJCWF9OT1RfVkFMSURcIiAmJiAociA9IGV2YWwoXCIoXCIgKyB0ICsgXCIpXCIpLCByLnVzZXJUeXBlID0gci51c2VySWQgPiAwID8gXCJ1c2VyXCIgOiBcImd1ZXN0XCIsIFJvYmxveEV2ZW50TWFuYWdlci50cmlnZ2VyRXZlbnQoZiwgciksIGkuU2V0S2V5VmFsdWUoZiwgXCJSQlhfTk9UX1ZBTElEXCIpKVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgICAgIFJvYmxveC5DbGllbnQuUmVsZWFzZUxhdW5jaGVyKGksICExLCAhMSlcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICB9XG59O1xuXG47IC8vLyBSb2Jsb3hFdmVudExpc3RlbmVyLmpzXG5Sb2Jsb3hMaXN0ZW5lciA9IG5ldyBSQlhCYXNlRXZlbnRMaXN0ZW5lciwgUm9ibG94TGlzdGVuZXIuaGFuZGxlRXZlbnQgPSBmdW5jdGlvbihuLCB0KSB7XG4gICAgdmFyIHIsIHUsIGk7XG4gICAgc3dpdGNoIChuLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcInJieF9ldnRfaW5zdGFsbF9iZWdpblwiOlxuICAgICAgICAgICAgaSA9IHtcbiAgICAgICAgICAgICAgICBndWlkOiBcImd1aWRcIixcbiAgICAgICAgICAgICAgICB1c2VySWQ6IFwidXNlcmlkXCJcbiAgICAgICAgICAgIH0sIHIgPSBuLnR5cGU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInJieF9ldnRfaW5pdGlhbF9pbnN0YWxsX3N0YXJ0XCI6XG4gICAgICAgICAgICBpID0ge1xuICAgICAgICAgICAgICAgIGd1aWQ6IFwiZ3VpZFwiLFxuICAgICAgICAgICAgICAgIHVzZXJJZDogXCJ1c2VyaWRcIlxuICAgICAgICAgICAgfSwgciA9IG4udHlwZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9mdHBcIjpcbiAgICAgICAgICAgIGkgPSB7XG4gICAgICAgICAgICAgICAgZ3VpZDogXCJndWlkXCIsXG4gICAgICAgICAgICAgICAgdXNlcklkOiBcInVzZXJpZFwiXG4gICAgICAgICAgICB9LCByID0gbi50eXBlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X2luaXRpYWxfaW5zdGFsbF9zdWNjZXNzXCI6XG4gICAgICAgICAgICBpID0ge1xuICAgICAgICAgICAgICAgIGd1aWQ6IFwiZ3VpZFwiLFxuICAgICAgICAgICAgICAgIHVzZXJJZDogXCJ1c2VyaWRcIlxuICAgICAgICAgICAgfSwgciA9IG4udHlwZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9mbXBcIjpcbiAgICAgICAgICAgIGkgPSB7XG4gICAgICAgICAgICAgICAgZ3VpZDogXCJndWlkXCIsXG4gICAgICAgICAgICAgICAgdXNlcklkOiBcInVzZXJpZFwiXG4gICAgICAgICAgICB9LCByID0gbi50eXBlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gY29uc29sZS5sb2coXCJSb2Jsb3hFdmVudExpc3RlbmVyIC0gRXZlbnQgcmVnaXN0ZXJlZCB3aXRob3V0IGhhbmRsaW5nIGluc3RydWN0aW9uczogXCIgKyBuLnR5cGUpLCAhMVxuICAgIH1cbiAgICByZXR1cm4gdSA9IHRoaXMuZGlzdGlsbERhdGEodCwgaSksIHRoaXMuZmlyZUV2ZW50KHRoaXMuZXZlbnRUb1N0cmluZyhyLCB1KSksICEwXG59LCBSb2Jsb3hMaXN0ZW5lci5kaXN0aWxsRGF0YSA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICB2YXIgaSA9IHt9O1xuICAgIGZvciAoZGF0YUtleSBpbiB0KSB0eXBlb2YgbltkYXRhS2V5XSAhPSB0eXBlb2YgdW5kZWZpbmVkICYmIChpW3RbZGF0YUtleV1dID0gZW5jb2RlVVJJQ29tcG9uZW50KG5bZGF0YUtleV0pKTtcbiAgICByZXR1cm4gaVxufSwgUm9ibG94TGlzdGVuZXIuZXZlbnRUb1N0cmluZyA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICB2YXIgaSA9IFJvYmxveExpc3RlbmVyLnJlc3RVcmw7XG4gICAgaWYgKGkgKz0gXCI/ZXZlbnQ9XCIgKyBuICsgXCImXCIsIHQgIT0gbnVsbClcbiAgICAgICAgZm9yIChhcmcgaW4gdCkgdHlwZW9mIGFyZyAhPSB0eXBlb2YgdW5kZWZpbmVkICYmIHQuaGFzT3duUHJvcGVydHkoYXJnKSAmJiAoaSArPSBhcmcgKyBcIj1cIiArIHRbYXJnXSArIFwiJlwiKTtcbiAgICByZXR1cm4gaSA9IGkuc2xpY2UoMCwgaS5sZW5ndGggLSAxKVxufSwgUm9ibG94TGlzdGVuZXIuZmlyZUV2ZW50ID0gZnVuY3Rpb24obikge1xuICAgIHZhciB0ID0gJCgnPGltZyB3aWR0aD1cIjFcIiBoZWlnaHQ9XCIxXCIgc3JjPVwiJyArIG4gKyAnXCIvPicpXG59LCBSb2Jsb3hMaXN0ZW5lci5ldmVudHMgPSBbXCJyYnhfZXZ0X2luc3RhbGxfYmVnaW5cIiwgXCJyYnhfZXZ0X2luaXRpYWxfaW5zdGFsbF9zdGFydFwiLCBcInJieF9ldnRfZnRwXCIsIFwicmJ4X2V2dF9pbml0aWFsX2luc3RhbGxfc3VjY2Vzc1wiLCBcInJieF9ldnRfZm1wXCJdO1xuXG47IC8vLyBLb250YWdlbnRFdmVudExpc3RlbmVyLmpzXG5Lb250YWdlbnRMaXN0ZW5lciA9IG5ldyBSQlhCYXNlRXZlbnRMaXN0ZW5lciwgS29udGFnZW50TGlzdGVuZXIucmVzdFVybCA9IFwiXCIsIEtvbnRhZ2VudExpc3RlbmVyLkFQSUtleSA9IFwiXCIsIEtvbnRhZ2VudExpc3RlbmVyLlN0YWdpbmdBUElLZXkgPSBcIlwiLCBLb250YWdlbnRMaXN0ZW5lci5TdGFnaW5nRXZlbnRzID0gW10sIEtvbnRhZ2VudExpc3RlbmVyLmhhbmRsZUV2ZW50ID0gZnVuY3Rpb24obiwgdCkge1xuICAgIGZ1bmN0aW9uIGYobikge1xuICAgICAgICByZXR1cm4gbiA9IG4udG9Mb3dlckNhc2UoKSwgbiA9PSBcIndpbjMyXCIgPyBuID0gXCJXaW5kb3dzXCIgOiBuID09IFwib3N4XCIgJiYgKG4gPSBcIk1hY1wiKSwgblxuICAgIH1cbiAgICB2YXIgciwgdSwgaSwgbywgZTtcbiAgICByID0gXCJldnRcIjtcbiAgICBzd2l0Y2ggKG4udHlwZSkge1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9wYWdldmlld1wiOlxuICAgICAgICAgICAgaSA9IHtcbiAgICAgICAgICAgICAgICBndWlkOiBcInNcIixcbiAgICAgICAgICAgICAgICBwYXRoOiBcInVcIixcbiAgICAgICAgICAgICAgICB0czogXCJ0c1wiLFxuICAgICAgICAgICAgICAgIHVzZXJfaXA6IFwiaXBcIlxuICAgICAgICAgICAgfSwgciA9IFwicGdyXCI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInJieF9ldnRfdXNlcmluZm9cIjpcbiAgICAgICAgICAgIGkgPSB7XG4gICAgICAgICAgICAgICAgZ3VpZDogXCJzXCIsXG4gICAgICAgICAgICAgICAgYWdlOiBcImJcIixcbiAgICAgICAgICAgICAgICBnZW5kZXI6IFwiZ1wiXG4gICAgICAgICAgICB9LCByID0gXCJjcHVcIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9lY29tbV9pdGVtXCI6XG4gICAgICAgICAgICB0LnRvdGFsID0gTWF0aC5yb3VuZCh0LnRvdGFsICogMTAwKSwgdC5wcm9kdWN0TmFtZSA9IHQucHJvZHVjdE5hbWUucmVwbGFjZSgvXFxzL2csIFwiXCIpLnJlcGxhY2UoXCJPdXRyYWdlb3VzXCIsIFwiT1wiKS5yZXBsYWNlKFwiVHVyYm9cIiwgXCJUXCIpLnJlcGxhY2UoXCJCdWlsZGVyc1wiLCBcIkJcIikucmVwbGFjZShcIkNsdWJcIiwgXCJDXCIpLCBpID0ge1xuICAgICAgICAgICAgICAgIGd1aWQ6IFwic1wiLFxuICAgICAgICAgICAgICAgIHRvdGFsOiBcInZcIixcbiAgICAgICAgICAgICAgICBwcm92aWRlcjogXCJzdDFcIixcbiAgICAgICAgICAgICAgICBjYXRlZ29yeTogXCJzdDJcIixcbiAgICAgICAgICAgICAgICBwcm9kdWN0TmFtZTogXCJzdDNcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInR1XCJcbiAgICAgICAgICAgIH0sIHIgPSBcIm10dVwiO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X2Z0cFwiOlxuICAgICAgICAgICAgdC50cmFja2luZyA9IFwiXCIsIHQuc2hvcnR0cmFja2luZyA9IFwiXCIsIGkgPSB7XG4gICAgICAgICAgICAgICAgZ3VpZDogXCJzXCIsXG4gICAgICAgICAgICAgICAgdHJhY2tpbmd0YWc6IFwidVwiLFxuICAgICAgICAgICAgICAgIHNob3J0dHJhY2tpbmc6IFwic3VcIlxuICAgICAgICAgICAgfSwgdSA9IHRoaXMuZGlzdGlsbERhdGEodCwgaSksIHIgPSBcImFwYVwiLCB0aGlzLmZpcmVFdmVudCh0aGlzLmV2ZW50VG9TdHJpbmcobi50eXBlLCByLCB1KSksIHQuZXZlbnROYW1lID0gXCJJbnN0YWxsIFN1Y2Nlc3MgRnVubmVsXCIsIHQuZXZlbnRUeXBlID0gXCJJbnN0YWxsIFN1Y2Nlc3MgRnVubmVsXCIsIHQub3MgPSBmKHQub3MpLCBpID0ge1xuICAgICAgICAgICAgICAgIGd1aWQ6IFwic1wiLFxuICAgICAgICAgICAgICAgIGV2ZW50VHlwZTogXCJzdDFcIixcbiAgICAgICAgICAgICAgICBvczogXCJzdDJcIixcbiAgICAgICAgICAgICAgICB1c2VyVHlwZTogXCJzdDNcIixcbiAgICAgICAgICAgICAgICBldmVudE5hbWU6IFwiblwiXG4gICAgICAgICAgICB9LCB1ID0gdGhpcy5kaXN0aWxsRGF0YSh0LCBpKSwgciA9IFwiZXZ0XCIsIHRoaXMuZmlyZUV2ZW50KHRoaXMuZXZlbnRUb1N0cmluZyhuLnR5cGUsIHIsIHUpKSwgdC5ldmVudFR5cGUgPSBcIkluc3RhbGwgU3VjY2VzcyBQbGFjZVwiLCBpID0ge1xuICAgICAgICAgICAgICAgIGd1aWQ6IFwic1wiLFxuICAgICAgICAgICAgICAgIGV2ZW50VHlwZTogXCJzdDFcIixcbiAgICAgICAgICAgICAgICBvczogXCJzdDJcIixcbiAgICAgICAgICAgICAgICB1c2VyVHlwZTogXCJzdDNcIixcbiAgICAgICAgICAgICAgICBwbGFjZUlkOiBcIm5cIlxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9pbml0aWFsX2luc3RhbGxfc3VjY2Vzc1wiOlxuICAgICAgICAgICAgdC50cmFja2luZyA9IFwiXCIsIHQuc2hvcnR0cmFja2luZyA9IFwiXCIsIGkgPSB7XG4gICAgICAgICAgICAgICAgZ3VpZDogXCJzXCIsXG4gICAgICAgICAgICAgICAgdHJhY2tpbmd0YWc6IFwidVwiLFxuICAgICAgICAgICAgICAgIHNob3J0dHJhY2tpbmc6IFwic3VcIlxuICAgICAgICAgICAgfSwgdSA9IHRoaXMuZGlzdGlsbERhdGEodCwgaSksIHIgPSBcImFwYVwiLCB0aGlzLmZpcmVFdmVudCh0aGlzLmV2ZW50VG9TdHJpbmcobi50eXBlLCByLCB1KSksIHQuZXZlbnROYW1lID0gXCJCb290c3RyYXBwZXIgSW5zdGFsbCBTdWNjZXNzIEZ1bm5lbFwiLCB0LmV2ZW50VHlwZSA9IFwiQm9vdHN0cmFwcGVyIEluc3RhbGwgU3VjY2VzcyBGdW5uZWxcIiwgdC5vcyA9IGYodC5vcyksIGkgPSB7XG4gICAgICAgICAgICAgICAgZ3VpZDogXCJzXCIsXG4gICAgICAgICAgICAgICAgZXZlbnRUeXBlOiBcInN0MVwiLFxuICAgICAgICAgICAgICAgIG9zOiBcInN0MlwiLFxuICAgICAgICAgICAgICAgIHVzZXJUeXBlOiBcInN0M1wiLFxuICAgICAgICAgICAgICAgIGV2ZW50TmFtZTogXCJuXCJcbiAgICAgICAgICAgIH0sIHUgPSB0aGlzLmRpc3RpbGxEYXRhKHQsIGkpLCByID0gXCJldnRcIiwgdGhpcy5maXJlRXZlbnQodGhpcy5ldmVudFRvU3RyaW5nKG4udHlwZSwgciwgdSkpLCB0LmV2ZW50VHlwZSA9IFwiQm9vdHN0cmFwcGVyIEluc3RhbGwgU3VjY2VzcyBQbGFjZVwiLCBpID0ge1xuICAgICAgICAgICAgICAgIGd1aWQ6IFwic1wiLFxuICAgICAgICAgICAgICAgIGV2ZW50VHlwZTogXCJzdDFcIixcbiAgICAgICAgICAgICAgICBvczogXCJzdDJcIixcbiAgICAgICAgICAgICAgICB1c2VyVHlwZTogXCJzdDNcIixcbiAgICAgICAgICAgICAgICBwbGFjZUlkOiBcIm5cIlxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9pbnN0YWxsX2JlZ2luXCI6XG4gICAgICAgICAgICB0LmV2ZW50TmFtZSA9IFwiSW5zdGFsbCBCZWdpblwiLCB0LmV2ZW50VHlwZSA9IFwiSW5zdGFsbCBCZWdpblwiLCBpID0ge1xuICAgICAgICAgICAgICAgIGd1aWQ6IFwic1wiLFxuICAgICAgICAgICAgICAgIGV2ZW50VHlwZTogXCJzdDFcIixcbiAgICAgICAgICAgICAgICBvczogXCJzdDJcIixcbiAgICAgICAgICAgICAgICBldmVudE5hbWU6IFwiblwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X2luaXRpYWxfaW5zdGFsbF9zdGFydFwiOlxuICAgICAgICAgICAgdC5ldmVudE5hbWUgPSBcIkJvb3RzdHJhcHBlciBJbnN0YWxsIEJlZ2luXCIsIHQuZXZlbnRUeXBlID0gXCJCb290c3RyYXBwZXIgSW5zdGFsbCBCZWdpblwiLCBpID0ge1xuICAgICAgICAgICAgICAgIGd1aWQ6IFwic1wiLFxuICAgICAgICAgICAgICAgIGV2ZW50VHlwZTogXCJzdDFcIixcbiAgICAgICAgICAgICAgICBvczogXCJzdDJcIixcbiAgICAgICAgICAgICAgICBldmVudE5hbWU6IFwiblwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X2ZtcFwiOlxuICAgICAgICAgICAgdC5ldmVudE5hbWUgPSBcIkZpdmUgTWludXRlIFBsYXkgRnVubmVsXCIsIHQuZXZlbnRUeXBlID0gXCJGaXZlIE1pbnV0ZSBQbGF5IEZ1bm5lbFwiLCB0Lm9zID0gZih0Lm9zKSwgaSA9IHtcbiAgICAgICAgICAgICAgICBndWlkOiBcInNcIixcbiAgICAgICAgICAgICAgICBldmVudFR5cGU6IFwic3QxXCIsXG4gICAgICAgICAgICAgICAgb3M6IFwic3QyXCIsXG4gICAgICAgICAgICAgICAgdXNlclR5cGU6IFwic3QzXCIsXG4gICAgICAgICAgICAgICAgZXZlbnROYW1lOiBcIm5cIlxuICAgICAgICAgICAgfSwgdSA9IHRoaXMuZGlzdGlsbERhdGEodCwgaSksIHRoaXMuZmlyZUV2ZW50KHRoaXMuZXZlbnRUb1N0cmluZyhuLnR5cGUsIHIsIHUpKSwgdC5ldmVudFR5cGUgPSBcIkZpdmUgTWludXRlIFBsYXkgUGxhY2VcIiwgaSA9IHtcbiAgICAgICAgICAgICAgICBndWlkOiBcInNcIixcbiAgICAgICAgICAgICAgICBldmVudFR5cGU6IFwic3QxXCIsXG4gICAgICAgICAgICAgICAgb3M6IFwic3QyXCIsXG4gICAgICAgICAgICAgICAgdXNlclR5cGU6IFwic3QzXCIsXG4gICAgICAgICAgICAgICAgcGxhY2VJZDogXCJuXCJcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInJieF9ldnRfcGxheV91c2VyXCI6XG4gICAgICAgICAgICB0LmV2ZW50TmFtZSA9IFwiUGxheSBVc2VyXCIsIHQuZXZlbnRUeXBlID0gXCJQbGF5IFVzZXJcIiwgdC5nZW5kZXIgPSB0LmdlbmRlciwgaSA9IHtcbiAgICAgICAgICAgICAgICBndWlkOiBcInNcIixcbiAgICAgICAgICAgICAgICBldmVudFR5cGU6IFwic3QxXCIsXG4gICAgICAgICAgICAgICAgZ2VuZGVyOiBcInN0MlwiLFxuICAgICAgICAgICAgICAgIGFnZTogXCJzdDNcIixcbiAgICAgICAgICAgICAgICBwbGFjZUlkOiBcImxcIixcbiAgICAgICAgICAgICAgICBldmVudE5hbWU6IFwiblwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X3BsYXlfZ3Vlc3RcIjpcbiAgICAgICAgICAgIHQuZXZlbnROYW1lID0gXCJQbGF5IEd1ZXN0XCIsIHQuZXZlbnRUeXBlID0gXCJQbGF5IEd1ZXN0XCIsIHQuZ2VuZGVyID0gdC5nZW5kZXIsIGkgPSB7XG4gICAgICAgICAgICAgICAgZ3VpZDogXCJzXCIsXG4gICAgICAgICAgICAgICAgZXZlbnRUeXBlOiBcInN0MVwiLFxuICAgICAgICAgICAgICAgIGdlbmRlcjogXCJzdDJcIixcbiAgICAgICAgICAgICAgICBwbGFjZUlkOiBcImxcIixcbiAgICAgICAgICAgICAgICBldmVudE5hbWU6IFwiblwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X3NpZ251cFwiOlxuICAgICAgICAgICAgdC5ldmVudE5hbWUgPSBcIlNpZ24gVXAgRnVubmVsXCIsIHQuZXZlbnRUeXBlID0gXCJTaWduIFVwIEZ1bm5lbFwiLCBpID0ge1xuICAgICAgICAgICAgICAgIGd1aWQ6IFwic1wiLFxuICAgICAgICAgICAgICAgIGV2ZW50VHlwZTogXCJzdDFcIixcbiAgICAgICAgICAgICAgICBldmVudE5hbWU6IFwiblwiXG4gICAgICAgICAgICB9LCB1ID0gdGhpcy5kaXN0aWxsRGF0YSh0LCBpKSwgciA9IFwiZXZ0XCIsIHRoaXMuZmlyZUV2ZW50KHRoaXMuZXZlbnRUb1N0cmluZyhuLnR5cGUsIHIsIHUpKSwgdC5ldmVudE5hbWUgPSBcIlNpZ24gVXBcIiwgdC5ldmVudFR5cGUgPSBcIlNpZ24gVXBcIiwgdC5nZW5kZXIgPSB0LmdlbmRlciwgaSA9IHtcbiAgICAgICAgICAgICAgICBndWlkOiBcInNcIixcbiAgICAgICAgICAgICAgICBldmVudFR5cGU6IFwic3QxXCIsXG4gICAgICAgICAgICAgICAgZ2VuZGVyOiBcInN0MlwiLFxuICAgICAgICAgICAgICAgIGFnZTogXCJzdDNcIixcbiAgICAgICAgICAgICAgICBldmVudE5hbWU6IFwiblwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X2Vjb21tX2N1c3RvbVwiOlxuICAgICAgICAgICAgdC5ldmVudFR5cGUgPSBcIlB1cmNoYXNlXCIsIHQucHJvZHVjdE5hbWUgPSB0LnByb2R1Y3ROYW1lLnJlcGxhY2UoL1xccy9nLCBcIlwiKS5yZXBsYWNlKFwiT3V0cmFnZW91c1wiLCBcIk9cIikucmVwbGFjZShcIlR1cmJvXCIsIFwiVFwiKS5yZXBsYWNlKFwiQnVpbGRlcnNcIiwgXCJCXCIpLnJlcGxhY2UoXCJDbHViXCIsIFwiQ1wiKSwgaSA9IHtcbiAgICAgICAgICAgICAgICBndWlkOiBcInNcIixcbiAgICAgICAgICAgICAgICBldmVudFR5cGU6IFwic3QxXCIsXG4gICAgICAgICAgICAgICAgcHJvdmlkZXI6IFwic3QyXCIsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcnk6IFwic3QzXCIsXG4gICAgICAgICAgICAgICAgcHJvZHVjdE5hbWU6IFwiblwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X2FidGVzdFwiOlxuICAgICAgICAgICAgaSA9IHtcbiAgICAgICAgICAgICAgICBndWlkOiBcInNcIixcbiAgICAgICAgICAgICAgICBleHBlcmltZW50OiBcInN0MVwiLFxuICAgICAgICAgICAgICAgIHZhcmlhdGlvbjogXCJuXCJcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInJieF9ldnRfcGFnZXZpZXdfY3VzdG9tXCI6XG4gICAgICAgICAgICB0LmV2ZW50TmFtZSA9IHQucGFnZSwgaSA9IHR5cGVvZiB0LnVzZXJUeXBlID09IFwidW5kZWZpbmVkXCIgPyB7XG4gICAgICAgICAgICAgICAgZ3VpZDogXCJzXCIsXG4gICAgICAgICAgICAgICAgcGFnZTogXCJzdDFcIixcbiAgICAgICAgICAgICAgICBldmVudE5hbWU6IFwiblwiXG4gICAgICAgICAgICB9IDoge1xuICAgICAgICAgICAgICAgIGd1aWQ6IFwic1wiLFxuICAgICAgICAgICAgICAgIHBhZ2U6IFwic3QxXCIsXG4gICAgICAgICAgICAgICAgdXNlclR5cGU6IFwic3QyXCIsXG4gICAgICAgICAgICAgICAgZXZlbnROYW1lOiBcIm5cIlxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9nZW5lcmljXCI6XG4gICAgICAgICAgICB0LmV2ZW50TmFtZSA9IHQudHlwZSwgaSA9IHtcbiAgICAgICAgICAgICAgICBndWlkOiBcInNcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN0MVwiLFxuICAgICAgICAgICAgICAgIGV2ZW50TmFtZTogXCJuXCJcbiAgICAgICAgICAgIH0sIHR5cGVvZiB0Lm9wdDEgIT0gXCJ1bmRlZmluZWRcIiAmJiAoaS5vcHQxID0gXCJzdDJcIiksIHR5cGVvZiB0Lm9wdDIgIT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgdC5vcHQxICE9IFwidW5kZWZpbmVkXCIgJiYgKGkub3B0MiA9IFwic3QzXCIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X3NvdXJjZV90cmFja2luZ1wiOlxuICAgICAgICAgICAgdC5pbnN0YWxsZWQgPSAwLCB0LnNvdXJjZVR5cGUgPSBcImFkXCIsIGkgPSB7XG4gICAgICAgICAgICAgICAgZ3VpZDogXCJzXCIsXG4gICAgICAgICAgICAgICAgc291cmNlVHlwZTogXCJ0dVwiLFxuICAgICAgICAgICAgICAgIGluc3RhbGxlZDogXCJpXCIsXG4gICAgICAgICAgICAgICAgc291cmNlOiBcInN0MVwiLFxuICAgICAgICAgICAgICAgIGNhbXBhaWduOiBcInN0MlwiLFxuICAgICAgICAgICAgICAgIG1lZGl1bTogXCJzdDNcIlxuICAgICAgICAgICAgfSwgciA9IFwidWNjXCI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInJieF9ldnRfY2FyZF9yZWRlbXB0aW9uXCI6XG4gICAgICAgICAgICB0LmV2ZW50VHlwZSA9IFwiQ2FyZFJlZGVtcHRpb25cIiwgdC5ldmVudE5hbWUgPSBcIkNhcmRSZWRlbXB0aW9uXCIsIGkgPSB7XG4gICAgICAgICAgICAgICAgZ3VpZDogXCJzXCIsXG4gICAgICAgICAgICAgICAgZXZlbnRUeXBlOiBcInN0MVwiLFxuICAgICAgICAgICAgICAgIG1lcmNoYW50OiBcInN0MlwiLFxuICAgICAgICAgICAgICAgIGNhcmRWYWx1ZTogXCJzdDNcIixcbiAgICAgICAgICAgICAgICBldmVudE5hbWU6IFwiblwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X3BvcHVwX2FjdGlvblwiOlxuICAgICAgICAgICAgdC5ldmVudFR5cGUgPSBcIkd1ZXN0UGxheVBvcHVwQWN0aW9uXCIsIHQuZXZlbnROYW1lID0gXCJHdWVzdFBsYXlQb3B1cEFjdGlvblwiLCBpID0ge1xuICAgICAgICAgICAgICAgIGd1aWQ6IFwic1wiLFxuICAgICAgICAgICAgICAgIGV2ZW50VHlwZTogXCJzdDFcIixcbiAgICAgICAgICAgICAgICBhY3Rpb246IFwic3QyXCIsXG4gICAgICAgICAgICAgICAgZXZlbnROYW1lOiBcIm5cIlxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGNvbnNvbGUubG9nKFwiS29udGFnZW50TGlzdGVuZXIgLSBFdmVudCByZWdpc3RlcmVkIHdpdGhvdXQgaGFuZGxpbmcgaW5zdHJ1Y3Rpb25zOiBcIiArIG4udHlwZSksICExXG4gICAgfVxuICAgIHJldHVybiB1ID0gdGhpcy5kaXN0aWxsRGF0YSh0LCBpKSwgdGhpcy5maXJlRXZlbnQodGhpcy5ldmVudFRvU3RyaW5nKG4udHlwZSwgciwgdSkpLCAhMFxufSwgS29udGFnZW50TGlzdGVuZXIuZGlzdGlsbERhdGEgPSBmdW5jdGlvbihuLCB0KSB7XG4gICAgdmFyIGkgPSB7fTtcbiAgICBmb3IgKGRhdGFLZXkgaW4gdCkgdHlwZW9mIG5bZGF0YUtleV0gIT0gdHlwZW9mIHVuZGVmaW5lZCAmJiAoaVt0W2RhdGFLZXldXSA9IGVuY29kZVVSSUNvbXBvbmVudChuW2RhdGFLZXldKSk7XG4gICAgcmV0dXJuIGlcbn0sIEtvbnRhZ2VudExpc3RlbmVyLmV2ZW50VG9TdHJpbmcgPSBmdW5jdGlvbihuLCB0LCBpKSB7XG4gICAgdmFyIHIgPSBLb250YWdlbnRMaXN0ZW5lci5yZXN0VXJsLFxuICAgICAgICB1ID0gdGhpcy5pc1N0YWdpbmdFdmVudChuLCBpKSA/IEtvbnRhZ2VudExpc3RlbmVyLlN0YWdpbmdBUElLZXkgOiBLb250YWdlbnRMaXN0ZW5lci5BUElLZXk7XG4gICAgaWYgKHIgKz0gdSArIFwiL1wiICsgdCArIFwiLz9cIiwgaSAhPSBudWxsKVxuICAgICAgICBmb3IgKGFyZyBpbiBpKSB0eXBlb2YgYXJnICE9IHR5cGVvZiB1bmRlZmluZWQgJiYgaS5oYXNPd25Qcm9wZXJ0eShhcmcpICYmIChyICs9IGFyZyArIFwiPVwiICsgaVthcmddICsgXCImXCIpO1xuICAgIHJldHVybiByID0gci5zbGljZSgwLCByLmxlbmd0aCAtIDEpXG59LCBLb250YWdlbnRMaXN0ZW5lci5pc1N0YWdpbmdFdmVudCA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICB2YXIgciwgaTtcbiAgICBzdGFnaW5nID0gITE7XG4gICAgdHJ5IHtcbiAgICAgICAgZm9yIChyIGluIHRoaXMuU3RhZ2luZ0V2ZW50cylcbiAgICAgICAgICAgIGlmIChpID0gdGhpcy5TdGFnaW5nRXZlbnRzW3JdLCB0eXBlb2YgaSA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgaWYgKG4gPT0gaSkge1xuICAgICAgICAgICAgICAgICAgICBzdGFnaW5nID0gITA7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaSA9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBpW25dICE9IFwidW5kZWZpbmVkXCIgJiYgaVtuXSA9PSB0LnN0MSkge1xuICAgICAgICAgICAgc3RhZ2luZyA9ICEwO1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKHUpIHt9XG4gICAgcmV0dXJuIHN0YWdpbmdcbn0sIEtvbnRhZ2VudExpc3RlbmVyLmZpcmVFdmVudCA9IGZ1bmN0aW9uKG4pIHtcbiAgICB2YXIgdCA9ICQoJzxpbWcgd2lkdGg9XCIxXCIgaGVpZ2h0PVwiMVwiIHNyYz1cIicgKyBuICsgJ1wiLz4nKVxufSwgS29udGFnZW50TGlzdGVuZXIuZXZlbnRzID0gW1wicmJ4X2V2dF9wYWdldmlld1wiLCBcInJieF9ldnRfaW5zdGFsbF9iZWdpblwiLCBcInJieF9ldnRfaW5pdGlhbF9pbnN0YWxsX3N0YXJ0XCIsIFwicmJ4X2V2dF9mdHBcIiwgXCJyYnhfZXZ0X2luaXRpYWxfaW5zdGFsbF9zdWNjZXNzXCIsIFwicmJ4X2V2dF9mbXBcIiwgXCJyYnhfZXZ0X3BsYXlfdXNlclwiLCBcInJieF9ldnRfcGxheV9ndWVzdFwiLCBcInJieF9ldnRfc2lnbnVwXCIsIFwicmJ4X2V2dF9lY29tbV9pdGVtXCIsIFwicmJ4X2V2dF9lY29tbV9jdXN0b21cIiwgXCJyYnhfZXZ0X3VzZXJpbmZvXCIsIFwicmJ4X2V2dF9hYnRlc3RcIiwgXCJyYnhfZXZ0X3BhZ2V2aWV3X2N1c3RvbVwiLCBcInJieF9ldnRfZ2VuZXJpY1wiLCBcInJieF9ldnRfc291cmNlX3RyYWNraW5nXCIsIFwicmJ4X2V2dF9jYXJkX3JlZGVtcHRpb25cIiwgXCJyYnhfZXZ0X3BvcHVwX2FjdGlvblwiXTtcblxuOyAvLy8gR29vZ2xlRXZlbnRMaXN0ZW5lci5qc1xuR29vZ2xlTGlzdGVuZXIgPSBuZXcgUkJYQmFzZUV2ZW50TGlzdGVuZXIsIEdvb2dsZUxpc3RlbmVyLmhhbmRsZUV2ZW50ID0gZnVuY3Rpb24obiwgdCkge1xuICAgIGZ1bmN0aW9uIHIobikge1xuICAgICAgICByZXR1cm4gbiA9IG4udG9Mb3dlckNhc2UoKSwgbiA9PSBcIndpbjMyXCIgPyBuID0gXCJXaW5kb3dzXCIgOiBuID09IFwib3N4XCIgJiYgKG4gPSBcIk1hY1wiKSwgblxuICAgIH1cbiAgICB2YXIgZiwgdSwgaTtcbiAgICBzd2l0Y2ggKG4udHlwZSkge1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9pbml0aWFsX2luc3RhbGxfYmVnaW5cIjpcbiAgICAgICAgICAgIHQub3MgPSByKHQub3MpLCB0LmNhdGVnb3J5ID0gXCJCb290c3RyYXBwZXIgSW5zdGFsbCBCZWdpblwiLCBpID0ge1xuICAgICAgICAgICAgICAgIG9zOiBcImFjdGlvblwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X2Z0cFwiOlxuICAgICAgICAgICAgdC5vcyA9IHIodC5vcyksIHQuY2F0ZWdvcnkgPSBcIkluc3RhbGwgU3VjY2Vzc1wiLCBpID0ge1xuICAgICAgICAgICAgICAgIG9zOiBcImFjdGlvblwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X2luaXRpYWxfaW5zdGFsbF9zdWNjZXNzXCI6XG4gICAgICAgICAgICB0Lm9zID0gcih0Lm9zKSwgdC5jYXRlZ29yeSA9IFwiQm9vdHN0cmFwcGVyIEluc3RhbGwgU3VjY2Vzc1wiLCBpID0ge1xuICAgICAgICAgICAgICAgIG9zOiBcImFjdGlvblwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X2ZtcFwiOlxuICAgICAgICAgICAgdC5vcyA9IHIodC5vcyksIHQuY2F0ZWdvcnkgPSBcIkZpdmUgTWludXRlIFBsYXlcIiwgaSA9IHtcbiAgICAgICAgICAgICAgICBvczogXCJhY3Rpb25cIlxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9hYnRlc3RcIjpcbiAgICAgICAgICAgIGkgPSB7XG4gICAgICAgICAgICAgICAgZXhwZXJpbWVudDogXCJjYXRlZ29yeVwiLFxuICAgICAgICAgICAgICAgIHZhcmlhdGlvbjogXCJhY3Rpb25cIixcbiAgICAgICAgICAgICAgICB2ZXJzaW9uOiBcIm9wdF9sYWJlbFwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X2NhcmRfcmVkZW1wdGlvblwiOlxuICAgICAgICAgICAgdC5jYXRlZ29yeSA9IFwiQ2FyZFJlZGVtcHRpb25cIiwgaSA9IHtcbiAgICAgICAgICAgICAgICBtZXJjaGFudDogXCJhY3Rpb25cIixcbiAgICAgICAgICAgICAgICBjYXJkVmFsdWU6IFwib3B0X2xhYmVsXCJcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBjb25zb2xlLmxvZyhcIkdvb2dsZUxpc3RlbmVyIC0gRXZlbnQgcmVnaXN0ZXJlZCB3aXRob3V0IGhhbmRsaW5nIGluc3RydWN0aW9uczogXCIgKyBuLnR5cGUpLCAhMVxuICAgIH1cbiAgICByZXR1cm4gaS5jYXRlZ29yeSA9IFwiY2F0ZWdvcnlcIiwgdSA9IHRoaXMuZGlzdGlsbERhdGEodCwgaSksIHRoaXMuZmlyZUV2ZW50KHUpLCAhMFxufSwgR29vZ2xlTGlzdGVuZXIuZGlzdGlsbERhdGEgPSBmdW5jdGlvbihuLCB0KSB7XG4gICAgdmFyIGkgPSB7fSxcbiAgICAgICAgcjtcbiAgICBmb3IgKGRhdGFLZXkgaW4gdCkgdHlwZW9mIG5bZGF0YUtleV0gIT0gdHlwZW9mIHVuZGVmaW5lZCAmJiAoaVt0W2RhdGFLZXldXSA9IG5bZGF0YUtleV0pO1xuICAgIHJldHVybiByID0gW2kuY2F0ZWdvcnksIGkuYWN0aW9uXSwgaS5vcHRfbGFiZWwgIT0gbnVsbCAmJiAociA9IHIuY29uY2F0KGkub3B0X2xhYmVsKSksIGkub3B0X3ZhbHVlICE9IG51bGwgJiYgKHIgPSByLmNvbmNhdChpLm9wdF92YWx1ZSkpLCByXG59LCBHb29nbGVMaXN0ZW5lci5maXJlRXZlbnQgPSBmdW5jdGlvbihuKSB7XG4gICAgaWYgKHR5cGVvZiBfZ2FxICE9IHR5cGVvZiB1bmRlZmluZWQpIHtcbiAgICAgICAgdmFyIGkgPSBbXCJfdHJhY2tFdmVudFwiXSxcbiAgICAgICAgICAgIHQgPSBbXCJiLl90cmFja0V2ZW50XCJdO1xuICAgICAgICBfZ2FxLnB1c2goaS5jb25jYXQobikpLCBfZ2FxLnB1c2godC5jb25jYXQobikpXG4gICAgfVxufSwgR29vZ2xlTGlzdGVuZXIuZXZlbnRzID0gW1wicmJ4X2V2dF9pbml0aWFsX2luc3RhbGxfYmVnaW5cIiwgXCJyYnhfZXZ0X2Z0cFwiLCBcInJieF9ldnRfaW5pdGlhbF9pbnN0YWxsX3N1Y2Nlc3NcIiwgXCJyYnhfZXZ0X2ZtcFwiLCBcInJieF9ldnRfYWJ0ZXN0XCIsIFwicmJ4X2V2dF9jYXJkX3JlZGVtcHRpb25cIl07XG5cbjsgLy8vIE1vbmdvRXZlbnRMaXN0ZW5lci5qc1xuTW9uZ29MaXN0ZW5lciA9IG5ldyBSQlhCYXNlRXZlbnRMaXN0ZW5lciwgTW9uZ29MaXN0ZW5lci5oYW5kbGVFdmVudCA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICB2YXIgaTtcbiAgICByZXR1cm4gaSA9IHR5cGVvZiB0LnNoYXJkID09IFwidW5kZWZpbmVkXCIgPyB0aGlzLmRlZmF1bHRTaGFyZCA6IHQuc2hhcmQsIHR5cGVvZiB0LmV2ZW50TmFtZSA9PSBcInVuZGVmaW5lZFwiICYmICh0LmV2ZW50TmFtZSA9IG4udHlwZSksIHQuZXZlbnROYW1lID09PSBcIkphdmFzY3JpcHRFeGNlcHRpb25Mb2dnaW5nRXZlbnRcIiA/IGRhdGFNYXAgPSB7XG4gICAgICAgIGNhdGVnb3J5OiBcImNhdGVnb3J5XCIsXG4gICAgICAgIHVybDogXCJ1cmxcIixcbiAgICAgICAgbXNnOiBcIm1zZ1wiLFxuICAgICAgICBsaW5lOiBcImxpbmVcIixcbiAgICAgICAgdWE6IFwiVUFcIlxuICAgIH0gOiAodHlwZW9mIHQuY2F0ZWdvcnkgPT0gXCJ1bmRlZmluZWRcIiAmJiAodC5jYXRlZ29yeSA9IE1vbmdvTGlzdGVuZXIuZ2V0Q2F0ZWdvcnlGcm9tRXZlbnROYW1lKHQuZXZlbnROYW1lKSksIHQudXNlcklkID0gTW9uZ29MaXN0ZW5lci51c2VySWQsIHQuaXAgPSBNb25nb0xpc3RlbmVyLmNsaWVudElwQWRkcmVzcywgZGF0YU1hcCA9IHtcbiAgICAgICAgZ3VpZDogXCJndWlkXCIsXG4gICAgICAgIGNhdGVnb3J5OiBcImNhdGVnb3J5XCIsXG4gICAgICAgIHVzZXJJZDogXCJ1c2VyaWRcIixcbiAgICAgICAgaXA6IFwiaXBcIlxuICAgIH0pLCB0aGlzLmZpcmVFdmVudChpLCB0aGlzLmRpc3RpbGxEYXRhKHQsIGRhdGFNYXApKSwgITBcbn0sIE1vbmdvTGlzdGVuZXIuZ2V0Q2F0ZWdvcnlGcm9tRXZlbnROYW1lID0gZnVuY3Rpb24obikge1xuICAgIHN3aXRjaCAobikge1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9zaXRldG91Y2hcIjpcbiAgICAgICAgICAgIHJldHVybiBcIlNpdGVUb3VjaFwiO1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9mbXBcIjpcbiAgICAgICAgICAgIHJldHVybiBcIkZpdmVNaW51dGVQbGF5XCI7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X3BsYXlfdXNlclwiOlxuICAgICAgICBjYXNlIFwicmJ4X2V2dF9wbGF5X2d1ZXN0XCI6XG4gICAgICAgICAgICByZXR1cm4gXCJQbGF5XCI7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gblxuICAgIH1cbn0sIE1vbmdvTGlzdGVuZXIuZGlzdGlsbERhdGEgPSBmdW5jdGlvbihuLCB0KSB7XG4gICAgdmFyIGkgPSB7fTtcbiAgICBmb3IgKGRhdGFLZXkgaW4gdCkgdHlwZW9mIG5bZGF0YUtleV0gIT0gdHlwZW9mIHVuZGVmaW5lZCAmJiAoaVt0W2RhdGFLZXldXSA9IGVuY29kZVVSSUNvbXBvbmVudChuW2RhdGFLZXldKSk7XG4gICAgcmV0dXJuIGlcbn0sIE1vbmdvTGlzdGVuZXIuZmlyZUV2ZW50ID0gZnVuY3Rpb24obiwgdCkge1xuICAgICQuYWpheCh7XG4gICAgICAgIHVybDogTW9uZ29MaXN0ZW5lci5sb2dnaW5nVVJJICsgbixcbiAgICAgICAgZGF0YVR5cGU6IFwianNvbnBcIixcbiAgICAgICAganNvbnBDYWxsYmFjazogXCJNb25nb0xpc3RlbmVyLmNhbGxiYWNrXCIsXG4gICAgICAgIGRhdGE6IHRcbiAgICB9KVxufSwgTW9uZ29MaXN0ZW5lci5jYWxsYmFjayA9IGZ1bmN0aW9uKCkge30sIE1vbmdvTGlzdGVuZXIuZXZlbnRzID0gW1wiSmF2YXNjcmlwdEV4Y2VwdGlvbkxvZ2dpbmdFdmVudFwiXTtcblxuOyAvLy8gU2VhcmNoVmlzaW9uTGlzdGVuZXIuanNcblNlYXJjaFZpc2lvbkxpc3RlbmVyID0gbmV3IFJCWEJhc2VFdmVudExpc3RlbmVyLCBTZWFyY2hWaXNpb25MaXN0ZW5lci5oYW5kbGVFdmVudCA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICB2YXIgaSA9IG51bGw7XG4gICAgc3dpdGNoIChuLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcInJieF9ldnRfZm1wXCI6XG4gICAgICAgICAgICBpID0ge1xuICAgICAgICAgICAgICAgIGVzdnRrX3Y6IFwiMVwiLFxuICAgICAgICAgICAgICAgIGVzdnRrX2VzdmlkOiBcIkE0MDEyNVwiLFxuICAgICAgICAgICAgICAgIGV2ZW50OiBcImZpdmVfbWludXRlX3BsYXlcIlxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9mdHBcIjpcbiAgICAgICAgICAgIGkgPSB7XG4gICAgICAgICAgICAgICAgZXN2dGtfdjogXCIxXCIsXG4gICAgICAgICAgICAgICAgZXN2dGtfZXN2aWQ6IFwiQTQwMTI1XCIsXG4gICAgICAgICAgICAgICAgZXZlbnQ6IFwiZmlyc3RfcGxheVwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X2luc3RhbGxfYmVnaW5cIjpcbiAgICAgICAgICAgIGkgPSB7XG4gICAgICAgICAgICAgICAgZXN2dGtfdjogXCIxXCIsXG4gICAgICAgICAgICAgICAgZXN2dGtfZXN2aWQ6IFwiQTQwMTI1XCIsXG4gICAgICAgICAgICAgICAgZXZlbnQ6IFwiZG93bmxvYWRcIlxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmJ4X2V2dF9zaWdudXBcIjpcbiAgICAgICAgICAgIGkgPSB7XG4gICAgICAgICAgICAgICAgZXN2dGtfdjogXCIxXCIsXG4gICAgICAgICAgICAgICAgZXN2dGtfZXN2aWQ6IFwiQTQwMTI1XCIsXG4gICAgICAgICAgICAgICAgZXZlbnQ6IFwiZXN2X3NpZ251cFwiXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyYnhfZXZ0X2dlbmVyaWNcIjpcbiAgICAgICAgICAgIHQudHlwZSA9PT0gXCJPbmVEYXlSZXR1cm5cIiAmJiAoaSA9IHtcbiAgICAgICAgICAgICAgICBlc3Z0a192OiBcIjFcIixcbiAgICAgICAgICAgICAgICBlc3Z0a19lc3ZpZDogXCJBNDAxMjVcIixcbiAgICAgICAgICAgICAgICBldmVudDogXCJyZXR1cm5cIlxuICAgICAgICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIGkgIT09IG51bGwgJiYgKGkub3JkZXJpZCA9IHQuZ3VpZCwgdGhpcy5maXJlRXZlbnQoaSkpLCAhMFxufSwgU2VhcmNoVmlzaW9uTGlzdGVuZXIuZmlyZUV2ZW50ID0gZnVuY3Rpb24obikge1xuICAgIHR5cGVvZiBlc3Z0a190cmFjayAhPSBcInVuZGVmaW5lZFwiID8gZXN2dGtfdHJhY2sobikgOiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICBTZWFyY2hWaXNpb25MaXN0ZW5lci5maXJlRXZlbnQobilcbiAgICB9LCA1MDApXG59LCBTZWFyY2hWaXNpb25MaXN0ZW5lci5ldmVudHMgPSBbXCJyYnhfZXZ0X2ZtcFwiLCBcInJieF9ldnRfZnRwXCIsIFwicmJ4X2V2dF9pbnN0YWxsX2JlZ2luXCIsIFwicmJ4X2V2dF9zaWdudXBcIiwgXCJyYnhfZXZ0X2dlbmVyaWNcIl07XG5cbjsgLy8vIFNpdGVUb3VjaEV2ZW50LmpzXG50eXBlb2YgUm9ibG94ID09IFwidW5kZWZpbmVkXCIgJiYgKFJvYmxveCA9IHt9KSwgUm9ibG94LlNpdGVUb3VjaEV2ZW50ID0gZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcigpIHtcbiAgICAgICAgdmFyIHQsIGk7XG4gICAgICAgIHJldHVybiB0eXBlb2YgbG9jYWxTdG9yYWdlICE9IFwidW5kZWZpbmVkXCIgJiYgKHQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuKSksICh0eXBlb2YgdCA9PSBcInVuZGVmaW5lZFwiIHx8IHQgPT09IG51bGwpICYmICh0ID0gJC5jb29raWUobikpLCBpID0gRGF0ZS5wYXJzZSh0KSwgdCAmJiAhaXNOYU4oaSkgPyBuZXcgRGF0ZShpKSA6IG5ldyBEYXRlKDApXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaShpKSB7XG4gICAgICAgIHR5cGVvZiBpID09IFwidW5kZWZpbmVkXCIgJiYgKGkgPSBuZXcgRGF0ZSksIHR5cGVvZiBsb2NhbFN0b3JhZ2UgIT0gXCJ1bmRlZmluZWRcIiAmJiAodC51c2VMb2NhbFN0b3JhZ2UgPyAkLmNvb2tpZShuLCBudWxsKSA6IGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKG4pKSwgdC51c2VMb2NhbFN0b3JhZ2UgJiYgdHlwZW9mIGxvY2FsU3RvcmFnZSAhPSBcInVuZGVmaW5lZFwiID8gbG9jYWxTdG9yYWdlLnNldEl0ZW0obiwgaSkgOiAkLmNvb2tpZShuLCBpLCB7XG4gICAgICAgICAgICBleHBpcmVzOiAxMDBcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1KCkge1xuICAgICAgICB2YXIgbiA9IHIoKTtcbiAgICAgICAgTWF0aC5mbG9vcigobmV3IERhdGUgLSBuKSAvIDM2ZTUpID49IHQuZGF0ZURpZmZUaHJlc2hvbGRJbkhvdXJzICYmIFJvYmxveEV2ZW50TWFuYWdlci50cmlnZ2VyRXZlbnQoXCJyYnhfZXZ0X3NpdGV0b3VjaFwiKSwgaSgpXG4gICAgfVxuICAgIHZhciBuID0gXCJMYXN0QWN0aXZpdHlcIixcbiAgICAgICAgdCA9IHtcbiAgICAgICAgICAgIHVwZGF0ZUxhc3RBY3Rpdml0eUFuZEZpcmVFdmVudDogdSxcbiAgICAgICAgICAgIGdldExhc3RBY3Rpdml0eTogcixcbiAgICAgICAgICAgIHNldExhc3RBY3Rpdml0eTogaSxcbiAgICAgICAgICAgIGRhdGVEaWZmVGhyZXNob2xkSW5Ib3VyczogMyxcbiAgICAgICAgICAgIHVzZUxvY2FsU3RvcmFnZTogITFcbiAgICAgICAgfTtcbiAgICByZXR1cm4gdFxufSgpO1xuXG47IC8vLyBKU0Vycm9yVHJhY2tlci5qc1xudHlwZW9mIFJvYmxveCA9PSBcInVuZGVmaW5lZFwiICYmIChSb2Jsb3ggPSB7fSksIFJvYmxveC5KU0Vycm9yVHJhY2tlciA9IHtcbiAgICBzaG93QWxlcnQ6ICExLFxuICAgIGRlZmF1bHRQaXhlbDogXCJHQVwiLFxuICAgIGludGVybmFsRXZlbnRMaXN0ZW5lclBpeGVsRW5hYmxlZDogITEsXG4gICAgamF2YXNjcmlwdFN0YWNrVHJhY2VFbmFibGVkOiAhMSxcbiAgICBkYXRhOiB7XG4gICAgICAgIGNhdGVnb3J5OiBcIkphdmFzY3JpcHQgRXJyb3JzXCJcbiAgICB9LFxuICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgdHlwZW9mIG4gIT0gXCJ1bmRlZmluZWRcIiAmJiAodHlwZW9mIG4uc2hvd0FsZXJ0ICE9IFwidW5kZWZpbmVkXCIgJiYgKHRoaXMuc2hvd0FsZXJ0ID0gbi5zaG93QWxlcnQpLCB0eXBlb2Ygbi5pbnRlcm5hbEV2ZW50TGlzdGVuZXJQaXhlbEVuYWJsZWQgIT0gXCJ1bmRlZmluZWRcIiAmJiAodGhpcy5pbnRlcm5hbEV2ZW50TGlzdGVuZXJQaXhlbEVuYWJsZWQgPSBuLmludGVybmFsRXZlbnRMaXN0ZW5lclBpeGVsRW5hYmxlZCkpLCB0aGlzLmFkZE9uRXJyb3JFdmVudEhhbmRsZXIodGhpcy5lcnJvckhhbmRsZXIpXG4gICAgfSxcbiAgICBlcnJvckhhbmRsZXI6IGZ1bmN0aW9uKG4sIHQsIGkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIFJvYmxveC5KU0Vycm9yVHJhY2tlci5kYXRhLm1zZyA9IG4sIFJvYmxveC5KU0Vycm9yVHJhY2tlci5kYXRhLnVybCA9IHQsIFJvYmxveC5KU0Vycm9yVHJhY2tlci5kYXRhLmxpbmUgPSBpLCBSb2Jsb3guSlNFcnJvclRyYWNrZXIuZGF0YS51YSA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LCBSb2Jsb3guSlNFcnJvclRyYWNrZXIubG9nRXhjZXB0aW9uKFJvYmxveC5KU0Vycm9yVHJhY2tlci5kYXRhKVxuICAgICAgICB9IGNhdGNoIChyKSB7fVxuICAgICAgICByZXR1cm4gITBcbiAgICB9LFxuICAgIGFkZE9uRXJyb3JFdmVudEhhbmRsZXI6IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgdmFyIHQgPSB3aW5kb3cub25lcnJvcjtcbiAgICAgICAgd2luZG93Lm9uZXJyb3IgPSB0eXBlb2Ygd2luZG93Lm9uZXJyb3IgPT0gXCJmdW5jdGlvblwiID8gZnVuY3Rpb24oaSwgciwgdSkge1xuICAgICAgICAgICAgdChpLCByLCB1KSwgbihpLCByLCB1KVxuICAgICAgICB9IDogblxuICAgIH0sXG4gICAgcHJvY2Vzc0V4Y2VwdGlvbjogZnVuY3Rpb24obiwgdCkge1xuICAgICAgICBpZiAodHlwZW9mIG4gIT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgdHlwZW9mIG4uY2F0ZWdvcnkgPT0gXCJ1bmRlZmluZWRcIiAmJiAobi5jYXRlZ29yeSA9IFJvYmxveC5KU0Vycm9yVHJhY2tlci5kYXRhLmNhdGVnb3J5KTtcbiAgICAgICAgICAgIHN3aXRjaCAodCkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJHQVwiOlxuICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5OiBcImNhdGVnb3J5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFwiYWN0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBtc2c6IFwib3B0X2xhYmVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lOiBcIm9wdF92YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIFJvYmxveC5KU0Vycm9yVHJhY2tlci5maXJlR0FQaXhlbChSb2Jsb3guSlNFcnJvclRyYWNrZXIuZGlzdGlsbEdBRGF0YShuLCBpKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJEaWFnXCI6XG4gICAgICAgICAgICAgICAgICAgIFJvYmxveC5KU0Vycm9yVHJhY2tlci5pbnRlcm5hbEV2ZW50TGlzdGVuZXJQaXhlbEVuYWJsZWQgJiYgKG4uY2F0ZWdvcnkgPSBcIkphdmFzY3JpcHRFeGNlcHRpb25zXCIsIG4uc2hhcmQgPSBcIldlYk1ldHJpY3NcIiwgbi5ldmVudE5hbWUgPSBcIkphdmFzY3JpcHRFeGNlcHRpb25Mb2dnaW5nRXZlbnRcIiwgUm9ibG94RXZlbnRNYW5hZ2VyLnRyaWdnZXJFdmVudChcIkphdmFzY3JpcHRFeGNlcHRpb25Mb2dnaW5nRXZlbnRcIiwgbikpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIlJvYmxveCBKU0Vycm9yVHJhY2tlciByZWNlaXZlZCBhbiB1bmtub3duIHBpeGVsIHRvIGZpcmVcIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAhMFxuICAgICAgICB9XG4gICAgfSxcbiAgICBsb2dFeGNlcHRpb246IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgUm9ibG94LkpTRXJyb3JUcmFja2VyLnByb2Nlc3NFeGNlcHRpb24obiwgUm9ibG94LkpTRXJyb3JUcmFja2VyLmRlZmF1bHRQaXhlbCksIFJvYmxveC5KU0Vycm9yVHJhY2tlci5pbnRlcm5hbEV2ZW50TGlzdGVuZXJQaXhlbEVuYWJsZWQgJiYgUm9ibG94LkpTRXJyb3JUcmFja2VyLnByb2Nlc3NFeGNlcHRpb24obiwgXCJEaWFnXCIpLCBSb2Jsb3guSlNFcnJvclRyYWNrZXIuc2hvd0Vycm9yTWVzc2FnZShuLm1zZylcbiAgICB9LFxuICAgIGRpc3RpbGxEYXRhOiBmdW5jdGlvbihuLCB0KSB7XG4gICAgICAgIHZhciByID0ge30sXG4gICAgICAgICAgICBpO1xuICAgICAgICBmb3IgKGkgaW4gdCkgdHlwZW9mIG5baV0gIT0gXCJ1bmRlZmluZWRcIiAmJiAoclt0W2ldXSA9IGVuY29kZVVSSUNvbXBvbmVudChuW2ldKSk7XG4gICAgICAgIHJldHVybiByXG4gICAgfSxcbiAgICBkaXN0aWxsR0FEYXRhOiBmdW5jdGlvbihuLCB0KSB7XG4gICAgICAgIHZhciByID0gUm9ibG94LkpTRXJyb3JUcmFja2VyLmRpc3RpbGxEYXRhKG4sIHQpLFxuICAgICAgICAgICAgaSA9IFtkZWNvZGVVUklDb21wb25lbnQoW3IuY2F0ZWdvcnldKV07XG4gICAgICAgIHJldHVybiB0eXBlb2Ygci5hY3Rpb24gIT0gdHlwZW9mIHVuZGVmaW5lZCA/IChpID0gaS5jb25jYXQoZGVjb2RlVVJJQ29tcG9uZW50KHIuYWN0aW9uKSksIHR5cGVvZiByLm9wdF9sYWJlbCAhPSB0eXBlb2YgdW5kZWZpbmVkICYmIChpID0gaS5jb25jYXQoZGVjb2RlVVJJQ29tcG9uZW50KHIub3B0X2xhYmVsKSksIHR5cGVvZiByLm9wdF92YWx1ZSAhPSB0eXBlb2YgdW5kZWZpbmVkICYmIChpID0gaS5jb25jYXQocGFyc2VJbnQoZGVjb2RlVVJJQ29tcG9uZW50KHIub3B0X3ZhbHVlKSkpKSkpIDogUm9ibG94LkpTRXJyb3JUcmFja2VyLnNob3dBbGVydCAmJiBhbGVydChcIk1pc3NpbmcgYSByZXF1aXJlZCBwYXJhbWV0ZXIgZm9yIEdBXCIpLCBpXG4gICAgfSxcbiAgICBjcmVhdGVVUkw6IGZ1bmN0aW9uKG4sIHQsIGkpIHtcbiAgICAgICAgdmFyIHIgPSBuLFxuICAgICAgICAgICAgZiA9IFJvYmxveC5KU0Vycm9yVHJhY2tlci5kaXN0aWxsRGF0YSh0LCBpKSxcbiAgICAgICAgICAgIHU7XG4gICAgICAgIGlmIChyICs9IFwiP1wiLCBmICE9IG51bGwpXG4gICAgICAgICAgICBmb3IgKHUgaW4gZikgdHlwZW9mIHUgIT0gdHlwZW9mIHVuZGVmaW5lZCAmJiB0Lmhhc093blByb3BlcnR5KHUpICYmIChyICs9IHUgKyBcIj1cIiArIGZbdV0gKyBcIiZcIik7XG4gICAgICAgIHJldHVybiByID0gci5zbGljZSgwLCByLmxlbmd0aCAtIDEpXG4gICAgfSxcbiAgICBmaXJlR0FQaXhlbDogZnVuY3Rpb24obikge1xuICAgICAgICB0eXBlb2YgX2dhcSAhPSBcInVuZGVmaW5lZFwiICYmIF9nYXEucHVzaChbXCJjLl90cmFja0V2ZW50XCJdLmNvbmNhdChuKSlcbiAgICB9LFxuICAgIHNob3dFcnJvck1lc3NhZ2U6IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgUm9ibG94LkpTRXJyb3JUcmFja2VyLnNob3dBbGVydCAmJiAobiAhPT0gbnVsbCA/IGFsZXJ0KG4pIDogYWxlcnQoXCJBbiBlcnJvciBvY2N1cmVkXCIpKVxuICAgIH1cbn07XG5cbjsgLy8vIFN0dWRpbzJBbGVydC5qc1xudmFyIHN0dWRpbzJBbGVydE1vZGFsID0ge1xuICAgIHNob3dQcm9tcHQ6ICExLFxuICAgIHVzZXJJZDogMCxcbiAgICB1cGRhdGVTdHVkaW9BbGVydFVzZXJQcmVmZXJlbmNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgJC5hamF4KHtcbiAgICAgICAgICAgIHR5cGU6IFwiR0VUXCIsXG4gICAgICAgICAgICB1cmw6IFwiL1dlYkhhbmRsZXJzL1N0dWRpbzJBbGVydC5hc2h4P3VJZD1cIiArIHN0dWRpbzJBbGVydE1vZGFsLnVzZXJJZFxuICAgICAgICB9KVxuICAgIH0sXG4gICAgY2xvc2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICBzdHVkaW8yQWxlcnRNb2RhbC51cGRhdGVTdHVkaW9BbGVydFVzZXJQcmVmZXJlbmNlKCksICQubW9kYWwuY2xvc2UoXCIjU3R1ZGlvMkFsZXJ0TW9kYWxcIilcbiAgICB9LFxuICAgIGluaXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICBzdHVkaW8yQWxlcnRNb2RhbC5zaG93UHJvbXB0ID0gJChcIiNTdHVkaW8yQWxlcnRNb2RhbFwiKS5kYXRhKFwic2hvd3Byb21wdFwiKSwgc3R1ZGlvMkFsZXJ0TW9kYWwudXNlcklkID0gJChcIiNTdHVkaW8yQWxlcnRNb2RhbFwiKS5kYXRhKFwidXNlcmlkXCIpO1xuICAgICAgICB2YXIgbiA9IHtcbiAgICAgICAgICAgIGVzY0Nsb3NlOiAhMCxcbiAgICAgICAgICAgIG9wYWNpdHk6IDgwLFxuICAgICAgICAgICAgb3ZlcmxheUNzczoge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgc3R1ZGlvMkFsZXJ0TW9kYWwuc2hvd1Byb21wdCAmJiBSb2Jsb3guQ2xpZW50LmlzSURFKCkgJiYgKHN0dWRpbzJBbGVydE1vZGFsLnVwZGF0ZVN0dWRpb0FsZXJ0VXNlclByZWZlcmVuY2UoKSwgJChcIiNTdHVkaW8yQWxlcnRNb2RhbFwiKS5tb2RhbChuKSlcbiAgICB9XG59O1xuJChcIiNjbG9zZVN0dWRpbzJBbGVydFwiKS5jbGljayhmdW5jdGlvbigpIHtcbiAgICBzdHVkaW8yQWxlcnRNb2RhbC5jbG9zZSgpXG59KSwgJChmdW5jdGlvbigpIHtcbiAgICBzdHVkaW8yQWxlcnRNb2RhbC5pbml0KClcbn0pO1xuXG47IC8vLyBDbGllbnRJbnN0YWxsZXIuanNcbmZ1bmN0aW9uIHRyeVRvRG93bmxvYWQoKSB7XG4gICAgb0lGcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImRvd25sb2FkSW5zdGFsbGVySUZyYW1lXCIpLCBvSUZybS5zcmMgPSBcIi9pbnN0YWxsL3NldHVwLmFzaHhcIlxufVxuXG5mdW5jdGlvbiBsb2dTdGF0aXN0aWNzKG4pIHtcbiAgICAkLmdldChcIi9pbnN0YWxsL1Zpc2l0QnV0dG9uSGFuZGxlci5hc2h4P3JlcXR5cGU9XCIgKyBuLCBmdW5jdGlvbigpIHt9KVxufVxuVHlwZS5yZWdpc3Rlck5hbWVzcGFjZShcIlJvYmxveC5DbGllbnRcIiksIFJvYmxveC5DbGllbnQuX2luc3RhbGxIb3N0ID0gbnVsbCwgUm9ibG94LkNsaWVudC5faW5zdGFsbFN1Y2Nlc3MgPSBudWxsLCBSb2Jsb3guQ2xpZW50Ll9DTFNJRCA9IG51bGwsIFJvYmxveC5DbGllbnQuX2NvbnRpbnVhdGlvbiA9IG51bGwsIFJvYmxveC5DbGllbnQuX3NraXAgPSBudWxsLCBSb2Jsb3guQ2xpZW50Ll9pc0lERSA9IG51bGwsIFJvYmxveC5DbGllbnQuX2lzUm9ibG94QnJvd3NlciA9IG51bGwsIFJvYmxveC5DbGllbnQuX2lzUGxhY2VMYXVuY2ggPSAhMSwgUm9ibG94LkNsaWVudC5fc2lsZW50TW9kZUVuYWJsZWQgPSAhMSwgUm9ibG94LkNsaWVudC5fYnJpbmdBcHBUb0Zyb250RW5hYmxlZCA9ICExLCBSb2Jsb3guQ2xpZW50Ll9udW1Mb2NrcyA9IDAsIFJvYmxveC5DbGllbnQuX2xvZ1RpbWluZyA9ICExLCBSb2Jsb3guQ2xpZW50Ll9sb2dTdGFydFRpbWUgPSBudWxsLCBSb2Jsb3guQ2xpZW50Ll9sb2dFbmRUaW1lID0gbnVsbCwgUm9ibG94LkNsaWVudC5faGlkZGVuTW9kZUVuYWJsZWQgPSAhMSwgUm9ibG94LkNsaWVudC5fcnVuSW5zdGFsbEFCVGVzdCA9IGZ1bmN0aW9uKCkge30sIFJvYmxveC5DbGllbnQuUmVsZWFzZUxhdW5jaGVyID0gZnVuY3Rpb24obiwgdCwgaSkge1xuICAgIGlmICh0ICYmIFJvYmxveC5DbGllbnQuX251bUxvY2tzLS0sIChpIHx8IFJvYmxveC5DbGllbnQuX251bUxvY2tzIDw9IDApICYmIChuICE9IG51bGwgJiYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicGx1Z2luT2JqRGl2XCIpLmlubmVySFRNTCA9IFwiXCIsIG4gPSBudWxsKSwgUm9ibG94LkNsaWVudC5fbnVtTG9ja3MgPSAwKSwgUm9ibG94LkNsaWVudC5fbG9nVGltaW5nKSB7XG4gICAgICAgIFJvYmxveC5DbGllbnQuX2xvZ0VuZFRpbWUgPSBuZXcgRGF0ZTtcbiAgICAgICAgdmFyIHIgPSBSb2Jsb3guQ2xpZW50Ll9sb2dFbmRUaW1lLmdldFRpbWUoKSAtIFJvYmxveC5DbGllbnQuX2xvZ1N0YXJ0VGltZS5nZXRUaW1lKCk7XG4gICAgICAgIGNvbnNvbGUgJiYgY29uc29sZS5sb2cgJiYgY29uc29sZS5sb2coXCJSb2Jsb3guQ2xpZW50OiBcIiArIHIgKyBcIm1zIGZyb20gQ3JlYXRlIHRvIFJlbGVhc2UuXCIpXG4gICAgfVxufSwgUm9ibG94LkNsaWVudC5HZXRJbnN0YWxsSG9zdCA9IGZ1bmN0aW9uKG4pIHtcbiAgICBpZiAod2luZG93LkFjdGl2ZVhPYmplY3QpIHJldHVybiBuLkluc3RhbGxIb3N0O1xuICAgIHZhciB0ID0gbi5HZXRfSW5zdGFsbEhvc3QoKTtcbiAgICByZXR1cm4gdC5tYXRjaCgvcm9ibG94LmNvbSQvKSA/IHQgOiB0LnN1YnN0cmluZygwLCB0Lmxlbmd0aCAtIDEpXG59LCBSb2Jsb3guQ2xpZW50LkNyZWF0ZUxhdW5jaGVyID0gZnVuY3Rpb24obikge1xuICAgIHZhciBpLCB1LCB0LCByO1xuICAgIFJvYmxveC5DbGllbnQuX2xvZ1RpbWluZyAmJiAoUm9ibG94LkNsaWVudC5fbG9nU3RhcnRUaW1lID0gbmV3IERhdGUpLCBuICYmIFJvYmxveC5DbGllbnQuX251bUxvY2tzKyssIChSb2Jsb3guQ2xpZW50Ll9pbnN0YWxsSG9zdCA9PSBudWxsIHx8IFJvYmxveC5DbGllbnQuX0NMU0lEID09IG51bGwpICYmIHR5cGVvZiBpbml0Q2xpZW50UHJvcHMgPT0gXCJmdW5jdGlvblwiICYmIGluaXRDbGllbnRQcm9wcygpLCBpID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyb2Jsb3hwbHVnaW5vYmpcIiksIHUgPSAkKFwiI3BsdWdpbk9iakRpdlwiKSwgaSB8fCAoUm9ibG94LkNsaWVudC5faGlkZGVuTW9kZUVuYWJsZWQgPSAhMSwgd2luZG93LkFjdGl2ZVhPYmplY3QgPyAodCA9ICc8b2JqZWN0IGNsYXNzaWQ9XCJjbHNpZDonICsgUm9ibG94LkNsaWVudC5fQ0xTSUQgKyAnXCInLCB0ICs9ICcgaWQ9XCJyb2Jsb3hwbHVnaW5vYmpcIiB0eXBlPVwiYXBwbGljYXRpb24veC12bmQtcm9ibG94LWxhdW5jaGVyXCInLCB0ICs9ICcgY29kZWJhc2U9XCInICsgUm9ibG94LkNsaWVudC5faW5zdGFsbEhvc3QgKyAnXCI+RmFpbGVkIHRvIElOSVQgUGx1Z2luPC9vYmplY3Q+JywgJCh1KS5hcHBlbmQodCkpIDogKHQgPSAnPG9iamVjdCBpZD1cInJvYmxveHBsdWdpbm9ialwiIHR5cGU9XCJhcHBsaWNhdGlvbi94LXZuZC1yb2Jsb3gtbGF1bmNoZXJcIj4nLCB0ICs9IFwiPHA+WW91IG5lZWQgT3VyIFBsdWdpbiBmb3IgdGhpcy4gIEdldCB0aGUgbGF0ZXN0IHZlcnNpb24gZnJvbVwiLCB0ICs9ICc8YSBocmVmPVwiJyArIFJvYmxveC5DbGllbnQuX2luc3RhbGxIb3N0ICsgJ1wiPmhlcmU8L2E+LjwvcD48L29iamVjdD4nLCAkKHUpLmFwcGVuZCh0KSksIGkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInJvYmxveHBsdWdpbm9ialwiKSk7XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKGkgfHwgKHR5cGVvZiBjb25zb2xlLmxvZyA9PSBcInVuZGVmaW5lZFwiID8gYWxlcnQoXCJQbHVnaW4gaW5zdGFsbGF0aW9uIGZhaWxlZCFcIikgOiBjb25zb2xlLmxvZyhcIlBsdWdpbiBpbnN0YWxsYXRpb24gZmFpbGVkIVwiKSksIGkuSGVsbG8oKSwgciA9IFJvYmxveC5DbGllbnQuR2V0SW5zdGFsbEhvc3QoaSksICFyIHx8IHIgIT0gUm9ibG94LkNsaWVudC5faW5zdGFsbEhvc3QpIHRocm93IFwid3JvbmcgSW5zdGFsbEhvc3Q6IChwbHVnaW5zKTogIFwiICsgciArIFwiICAoc2VydmVycyk6ICBcIiArIFJvYmxveC5DbGllbnQuX2luc3RhbGxIb3N0O1xuICAgICAgICByZXR1cm4gaVxuICAgIH0gY2F0Y2ggKGYpIHtcbiAgICAgICAgcmV0dXJuIFJvYmxveC5DbGllbnQuUmVsZWFzZUxhdW5jaGVyKGksIG4sICExKSwgbnVsbFxuICAgIH1cbn0sIFJvYmxveC5DbGllbnQuaXNJREUgPSBmdW5jdGlvbigpIHtcbiAgICBpZiAoUm9ibG94LkNsaWVudC5faXNJREUgPT0gbnVsbCAmJiAoUm9ibG94LkNsaWVudC5faXNJREUgPSAhMSwgUm9ibG94LkNsaWVudC5faXNSb2Jsb3hCcm93c2VyID0gITEsIHdpbmRvdy5leHRlcm5hbCkpIHRyeSB7XG4gICAgICAgIHdpbmRvdy5leHRlcm5hbC5Jc1JvYmxveEFwcElERSAhPT0gdW5kZWZpbmVkICYmIChSb2Jsb3guQ2xpZW50Ll9pc0lERSA9IHdpbmRvdy5leHRlcm5hbC5Jc1JvYmxveEFwcElERSwgUm9ibG94LkNsaWVudC5faXNSb2Jsb3hCcm93c2VyID0gITApXG4gICAgfSBjYXRjaCAobikge31cbiAgICByZXR1cm4gUm9ibG94LkNsaWVudC5faXNJREVcbn0sIFJvYmxveC5DbGllbnQuaXNSb2Jsb3hCcm93c2VyID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIFJvYmxveC5DbGllbnQuaXNJREUoKSwgUm9ibG94LkNsaWVudC5faXNSb2Jsb3hCcm93c2VyXG59LCBSb2Jsb3guQ2xpZW50LnJvYmxveEJyb3dzZXJJbnN0YWxsSG9zdCA9IGZ1bmN0aW9uKCkge1xuICAgIGlmICh3aW5kb3cuZXh0ZXJuYWwpIHRyeSB7XG4gICAgICAgIHJldHVybiB3aW5kb3cuZXh0ZXJuYWwuSW5zdGFsbEhvc3RcbiAgICB9IGNhdGNoIChuKSB7fVxuICAgIHJldHVybiBcIlwiXG59LCBSb2Jsb3guQ2xpZW50LklzUm9ibG94UHJveHlJbnN0YWxsZWQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgdCA9IFJvYmxveC5DbGllbnQuQ3JlYXRlTGF1bmNoZXIoITEpLFxuICAgICAgICBuID0gITE7XG4gICAgcmV0dXJuICh0ICE9IG51bGwgJiYgKG4gPSAhMCksIFJvYmxveC5DbGllbnQuUmVsZWFzZUxhdW5jaGVyKHQsICExLCAhMSksIG4gfHwgUm9ibG94LkNsaWVudC5pc1JvYmxveEJyb3dzZXIoKSkgPyAhMCA6ICExXG59LCBSb2Jsb3guQ2xpZW50LklzUm9ibG94SW5zdGFsbGVkID0gZnVuY3Rpb24oKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgdmFyIHQgPSBSb2Jsb3guQ2xpZW50LkNyZWF0ZUxhdW5jaGVyKCExKSxcbiAgICAgICAgICAgIG4gPSBSb2Jsb3guQ2xpZW50LkdldEluc3RhbGxIb3N0KHQpO1xuICAgICAgICByZXR1cm4gUm9ibG94LkNsaWVudC5SZWxlYXNlTGF1bmNoZXIodCwgITEsICExKSwgbiA9PSBSb2Jsb3guQ2xpZW50Ll9pbnN0YWxsSG9zdFxuICAgIH0gY2F0Y2ggKGkpIHtcbiAgICAgICAgcmV0dXJuIFJvYmxveC5DbGllbnQuaXNSb2Jsb3hCcm93c2VyKCkgPyAobiA9IFJvYmxveC5DbGllbnQucm9ibG94QnJvd3Nlckluc3RhbGxIb3N0KCksIG4gPT0gUm9ibG94LkNsaWVudC5faW5zdGFsbEhvc3QpIDogITFcbiAgICB9XG59LCBSb2Jsb3guQ2xpZW50LlNldFN0YXJ0SW5IaWRkZW5Nb2RlID0gZnVuY3Rpb24obikge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciB0ID0gUm9ibG94LkNsaWVudC5DcmVhdGVMYXVuY2hlcighMSk7XG4gICAgICAgIGlmICh0ICE9PSBudWxsKSByZXR1cm4gdC5TZXRTdGFydEluSGlkZGVuTW9kZShuKSwgUm9ibG94LkNsaWVudC5faGlkZGVuTW9kZUVuYWJsZWQgPSBuLCAhMFxuICAgIH0gY2F0Y2ggKGkpIHt9XG4gICAgcmV0dXJuICExXG59LCBSb2Jsb3guQ2xpZW50LlVuaGlkZUFwcCA9IGZ1bmN0aW9uKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGlmIChSb2Jsb3guQ2xpZW50Ll9oaWRkZW5Nb2RlRW5hYmxlZCkge1xuICAgICAgICAgICAgdmFyIG4gPSBSb2Jsb3guQ2xpZW50LkNyZWF0ZUxhdW5jaGVyKCExKTtcbiAgICAgICAgICAgIG4uVW5oaWRlQXBwKClcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKHQpIHt9XG59LCBSb2Jsb3guQ2xpZW50LlVwZGF0ZSA9IGZ1bmN0aW9uKCkge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciBuID0gUm9ibG94LkNsaWVudC5DcmVhdGVMYXVuY2hlcighMSk7XG4gICAgICAgIG4uVXBkYXRlKCksIFJvYmxveC5DbGllbnQuUmVsZWFzZUxhdW5jaGVyKG4sICExLCAhMSlcbiAgICB9IGNhdGNoICh0KSB7XG4gICAgICAgIGFsZXJ0KFwiRXJyb3IgdXBkYXRpbmc6IFwiICsgdClcbiAgICB9XG59LCBSb2Jsb3guQ2xpZW50LldhaXRGb3JSb2Jsb3ggPSBmdW5jdGlvbihuKSB7XG4gICAgaWYgKFJvYmxveC5DbGllbnQuX3NraXApIHJldHVybiB3aW5kb3cubG9jYXRpb24gPSBSb2Jsb3guQ2xpZW50Ll9za2lwLCAhMTtcbiAgICBpZiAoUm9ibG94LkNsaWVudC5fY29udGludWF0aW9uID0gbiwgUm9ibG94LkNsaWVudC5fY2FuY2VsbGVkID0gITEsICFSb2Jsb3guQ2xpZW50LklzUm9ibG94UHJveHlJbnN0YWxsZWQoKSAmJiBSb2Jsb3guQ2xpZW50LkltcGxlbWVudHNQcm94eSkge1xuICAgICAgICBSb2Jsb3guSW5zdGFsbGF0aW9uSW5zdHJ1Y3Rpb25zLnNob3coKSwgUm9ibG94LkNsaWVudC5ydW5JbnN0YWxsQUJUZXN0KCk7XG4gICAgICAgIHZhciB0ID0gXCJXaW5kb3dzXCI7XG4gICAgICAgIHJldHVybiBuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmRleE9mKFwiTWFjXCIpICE9IC0xICYmICh0ID0gXCJNYWNcIiksIHR5cGVvZiBfZ2FxICE9IHR5cGVvZiB1bmRlZmluZWQgJiYgKF9nYXEucHVzaChbXCJfdHJhY2tFdmVudFwiLCBcIkluc3RhbGwgQmVnaW5cIiwgdF0pLCBfZ2FxLnB1c2goW1wiYi5fdHJhY2tFdmVudFwiLCBcIkluc3RhbGwgQmVnaW5cIiwgdF0pKSwgUm9ibG94RXZlbnRNYW5hZ2VyLnRyaWdnZXJFdmVudChcInJieF9ldnRfaW5zdGFsbF9iZWdpblwiLCB7XG4gICAgICAgICAgICBvczogdFxuICAgICAgICB9KSwgd2luZG93LmNocm9tZSAmJiAod2luZG93LmxvY2F0aW9uLmhhc2ggPSBcIiNjaHJvbWVJbnN0YWxsXCIsICQuY29va2llKFwiY2hyb21lSW5zdGFsbFwiLCBuLnRvU3RyaW5nKCkucmVwbGFjZSgvcGxheV9wbGFjZUlkLywgcGxheV9wbGFjZUlkLnRvU3RyaW5nKCkpKSksIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgUm9ibG94LkNsaWVudC5fb250aW1lcigpXG4gICAgICAgIH0sIDFlMyksIHRyeVRvRG93bmxvYWQoKSwgITBcbiAgICB9XG4gICAgcmV0dXJuIFJvYmxveC5DbGllbnQuX2NvbnRpbnVhdGlvbigpLCAhMVxufSwgUm9ibG94LkNsaWVudC5SZXN1bWVUaW1lciA9IGZ1bmN0aW9uKG4pIHtcbiAgICBSb2Jsb3guQ2xpZW50Ll9jb250aW51YXRpb24gPSBuLCBSb2Jsb3guQ2xpZW50Ll9jYW5jZWxsZWQgPSAhMSwgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIFJvYmxveC5DbGllbnQuX29udGltZXIoKVxuICAgIH0sIDApXG59LCBSb2Jsb3guQ2xpZW50LlJlZnJlc2ggPSBmdW5jdGlvbigpIHtcbiAgICB0cnkge1xuICAgICAgICBuYXZpZ2F0b3IucGx1Z2lucy5yZWZyZXNoKCExKVxuICAgIH0gY2F0Y2ggKG4pIHt9XG59LCBSb2Jsb3guQ2xpZW50Ll9vbkNhbmNlbCA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBSb2Jsb3guSW5zdGFsbGF0aW9uSW5zdHJ1Y3Rpb25zLmhpZGUoKSwgUm9ibG94LkNsaWVudC5fY2FuY2VsbGVkID0gITAsICExXG59LCBSb2Jsb3guQ2xpZW50Ll9vbnRpbWVyID0gZnVuY3Rpb24oKSB7XG4gICAgUm9ibG94LkNsaWVudC5fY2FuY2VsbGVkIHx8IChSb2Jsb3guQ2xpZW50LlJlZnJlc2goKSwgUm9ibG94LkNsaWVudC5Jc1JvYmxveFByb3h5SW5zdGFsbGVkKCkgPyAoUm9ibG94Lkluc3RhbGxhdGlvbkluc3RydWN0aW9ucy5oaWRlKCksIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICB3aW5kb3cuY2hyb21lICYmIHdpbmRvdy5sb2NhdGlvbi5oYXNoID09IFwiI2Nocm9tZUluc3RhbGxcIiAmJiAod2luZG93LmxvY2F0aW9uLmhhc2ggPSBcIlwiLCAkLmNvb2tpZShcImNocm9tZUluc3RhbGxcIiwgbnVsbCkpXG4gICAgfSwgNWUzKSwgUm9ibG94LkNsaWVudC5fY29udGludWF0aW9uKCksIFJvYmxveC5DbGllbnQuX2luc3RhbGxTdWNjZXNzICYmIFJvYmxveC5DbGllbnQuX2luc3RhbGxTdWNjZXNzKCkpIDogd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIFJvYmxveC5DbGllbnQuX29udGltZXIoKVxuICAgIH0sIDFlMykpXG59O1xuXG47IC8vLyBJbnN0YWxsYXRpb25JbnN0cnVjdGlvbnMuanNcbnR5cGVvZiBSb2Jsb3ggPT0gXCJ1bmRlZmluZWRcIiAmJiAoUm9ibG94ID0ge30pLCBSb2Jsb3guSW5zdGFsbGF0aW9uSW5zdHJ1Y3Rpb25zID0gZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gaSgpIHtcbiAgICAgICAgdmFyIHQsIGksIHI7XG4gICAgICAgIG4oKSwgdCA9IDAsIGkgPSAkKFwiLkluc3RhbGxJbnN0cnVjdGlvbnNJbWFnZVwiKSwgaSAmJiB0eXBlb2YgJChpKS5hdHRyKFwibW9kYWx3aWR0aFwiKSAhPSBcInVuZGVmaW5lZFwiICYmICh0ID0gJChcIi5JbnN0YWxsSW5zdHJ1Y3Rpb25zSW1hZ2VcIikuYXR0cihcIm1vZGFsd2lkdGhcIikpLCB0ID4gMCA/IChyID0gKCQod2luZG93KS53aWR0aCgpIC0gKHQgLSAxMCkpIC8gMiwgJChcIiNJbnN0YWxsYXRpb25JbnN0cnVjdGlvbnNcIikubW9kYWwoe1xuICAgICAgICAgICAgZXNjQ2xvc2U6ICEwLFxuICAgICAgICAgICAgb3BhY2l0eTogNTAsXG4gICAgICAgICAgICBtaW5XaWR0aDogdCxcbiAgICAgICAgICAgIG1heFdpZHRoOiB0LFxuICAgICAgICAgICAgb3ZlcmxheUNzczoge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwb3NpdGlvbjogWzIwLCByXVxuICAgICAgICB9KSkgOiAkKFwiI0luc3RhbGxhdGlvbkluc3RydWN0aW9uc1wiKS5tb2RhbCh7XG4gICAgICAgICAgICBlc2NDbG9zZTogITAsXG4gICAgICAgICAgICBvcGFjaXR5OiA1MCxcbiAgICAgICAgICAgIG1heFdpZHRoOiAkKHdpbmRvdykud2lkdGgoKSAvIDIsXG4gICAgICAgICAgICBtaW5XaWR0aDogJCh3aW5kb3cpLndpZHRoKCkgLyAyLFxuICAgICAgICAgICAgb3ZlcmxheUNzczoge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwb3NpdGlvbjogWzIwLCBcIjI1JVwiXVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHIoKSB7XG4gICAgICAgICQubW9kYWwuY2xvc2UoKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG4oKSB7XG4gICAgICAgIHZhciBuID0gJChcIi5JbnN0YWxsSW5zdHJ1Y3Rpb25zSW1hZ2VcIik7XG4gICAgICAgIG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL01hYyBPUyBYIDEwW198XFwuXTUvKSA/IG4gJiYgdHlwZW9mICQobikuYXR0cihcIm9sZG1hY2RlbGF5c3JjXCIpICE9IFwidW5kZWZpbmVkXCIgJiYgJChcIi5JbnN0YWxsSW5zdHJ1Y3Rpb25zSW1hZ2VcIikuYXR0cihcInNyY1wiLCAkKFwiLkluc3RhbGxJbnN0cnVjdGlvbnNJbWFnZVwiKS5hdHRyKFwib2xkbWFjZGVsYXlzcmNcIikpIDogbiAmJiB0eXBlb2YgJChuKS5hdHRyKFwiZGVsYXlzcmNcIikgIT0gXCJ1bmRlZmluZWRcIiAmJiAkKFwiLkluc3RhbGxJbnN0cnVjdGlvbnNJbWFnZVwiKS5hdHRyKFwic3JjXCIsICQoXCIuSW5zdGFsbEluc3RydWN0aW9uc0ltYWdlXCIpLmF0dHIoXCJkZWxheXNyY1wiKSlcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc2hvdzogaSxcbiAgICAgICAgaGlkZTogclxuICAgIH1cbn0oKTtcblxuOyAvLy8gTWFkU3RhdHVzLmpzXG5NYWRTdGF0dXMgPSB7XG4gICAgcnVubmluZzogITEsXG4gICAgaW5pdDogZnVuY3Rpb24obiwgdCwgaSwgcikge1xuICAgICAgICBNYWRTdGF0dXMucnVubmluZyAmJiBNYWRTdGF0dXMuc3RvcCgpLCBNYWRTdGF0dXMudXBkYXRlSW50ZXJ2YWwgPSBpID8gaSA6IDJlMywgTWFkU3RhdHVzLmZhZGVJbnRlcnZhbCA9IHIgPyByIDogMWUzLCBNYWRTdGF0dXMudGltZW91dCA9IG51bGwsIE1hZFN0YXR1cy5ydW5uaW5nID0gITAsIE1hZFN0YXR1cy5maWVsZCA9IG4sIE1hZFN0YXR1cy5iYWNrQnVmZmVyID0gdCwgTWFkU3RhdHVzLmZpZWxkLnNob3coKSwgTWFkU3RhdHVzLmJhY2tCdWZmZXIuaGlkZSgpXG4gICAgfSxcbiAgICBwYXJ0aWNpcGxlOiBbXCJBY2NlbGVyYXRpbmdcIiwgXCJBZ2dyZWdhdGluZ1wiLCBcIkFsbG9jYXRpbmdcIiwgXCJBcXVpcmluZ1wiLCBcIkF1dG9tYXRpbmdcIiwgXCJCYWNrdHJhY2luZ1wiLCBcIkJsb3h4aW5nXCIsIFwiQm9vdHN0cmFwaW5nXCIsIFwiQ2FsaWJyYXRpbmdcIiwgXCJDb3JyZWxhdGluZ1wiLCBcIkRlLW5vb2JpbmdcIiwgXCJEZS1pb25pemluZ1wiLCBcIkRlcml2aW5nXCIsIFwiRW5lcmdpemluZ1wiLCBcIkZpbHRlcmluZ1wiLCBcIkdlbmVyYXRpbmdcIiwgXCJJbmRleGluZ1wiLCBcIkxvYWRpbmdcIiwgXCJOb29iaW5nXCIsIFwiT3B0aW1pemluZ1wiLCBcIk94aWRpemluZ1wiLCBcIlF1ZXVlaW5nXCIsIFwiUGFyc2luZ1wiLCBcIlByb2Nlc3NpbmdcIiwgXCJSYXN0ZXJpemluZ1wiLCBcIlJlYWRpbmdcIiwgXCJSZWdpc3RlcmluZ1wiLCBcIlJlLXJvdXRpbmdcIiwgXCJSZXNvbHZpbmdcIiwgXCJTYW1wbGluZ1wiLCBcIlVwZGF0aW5nXCIsIFwiV3JpdGluZ1wiXSxcbiAgICBtb2RpZmllcjogW1wiQmxveFwiLCBcIkNvdW50IFplcm9cIiwgXCJDeWxvblwiLCBcIkRhdGFcIiwgXCJFY3RvcGxhc21cIiwgXCJFbmNyeXB0aW9uXCIsIFwiRXZlbnRcIiwgXCJGYXJuc3dvcnRoXCIsIFwiQmVib3BcIiwgXCJGbHV4IENhcGFjaXRvclwiLCBcIkZ1c2lvblwiLCBcIkdhbWVcIiwgXCJHaWJzb25cIiwgXCJIb3N0XCIsIFwiTWFpbmZyYW1lXCIsIFwiTWV0YXZlcnNlXCIsIFwiTmVyZiBIZXJkZXJcIiwgXCJOZXV0cm9uXCIsIFwiTm9vYlwiLCBcIlBob3RvblwiLCBcIlByb2ZpbGVcIiwgXCJTY3JpcHRcIiwgXCJTa3luZXRcIiwgXCJUQVJESVNcIiwgXCJWaXJ0dWFsXCJdLFxuICAgIHN1YmplY3Q6IFtcIkFuYWxvZ3NcIiwgXCJCbG9ja3NcIiwgXCJDYW5ub25cIiwgXCJDaGFubmVsc1wiLCBcIkNvcmVcIiwgXCJEYXRhYmFzZVwiLCBcIkRpbWVuc2lvbnNcIiwgXCJEaXJlY3RpdmVzXCIsIFwiRW5naW5lXCIsIFwiRmlsZXNcIiwgXCJHZWFyXCIsIFwiSW5kZXhcIiwgXCJMYXllclwiLCBcIk1hdHJpeFwiLCBcIlBhcmFkb3hcIiwgXCJQYXJhbWV0ZXJzXCIsIFwiUGFyc2Vjc1wiLCBcIlBpcGVsaW5lXCIsIFwiUGxheWVyc1wiLCBcIlBvcnRzXCIsIFwiUHJvdG9jb2xzXCIsIFwiUmVhY3RvcnNcIiwgXCJTcGhlcmVcIiwgXCJTcG9vbGVyXCIsIFwiU3RyZWFtXCIsIFwiU3dpdGNoZXNcIiwgXCJUYWJsZVwiLCBcIlRhcmdldHNcIiwgXCJUaHJvdHRsZVwiLCBcIlRva2Vuc1wiLCBcIlRvcnBlZG9lc1wiLCBcIlR1YmVzXCJdLFxuICAgIG5ld0xpYjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBsaWJTdHJpbmcgPSB0aGlzLnBhcnRpY2lwbGVbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogdGhpcy5wYXJ0aWNpcGxlLmxlbmd0aCldICsgXCIgXCIgKyB0aGlzLm1vZGlmaWVyW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHRoaXMubW9kaWZpZXIubGVuZ3RoKV0gKyBcIiBcIiArIHRoaXMuc3ViamVjdFtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiB0aGlzLnN1YmplY3QubGVuZ3RoKV0gKyBcIi4uLlwiXG4gICAgfSxcbiAgICBzdGFydDogZnVuY3Rpb24oKSB7XG4gICAgICAgIE1hZFN0YXR1cy50aW1lb3V0ID09IG51bGwgJiYgKE1hZFN0YXR1cy50aW1lb3V0ID0gc2V0SW50ZXJ2YWwoXCJNYWRTdGF0dXMudXBkYXRlKClcIiwgTWFkU3RhdHVzLnVwZGF0ZUludGVydmFsKSwgTWFkU3RhdHVzLnJ1bm5pbmcgPSAhMClcbiAgICB9LFxuICAgIHN0b3A6IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbChNYWRTdGF0dXMudGltZW91dCksIE1hZFN0YXR1cy50aW1lb3V0ID0gbnVsbCwgTWFkU3RhdHVzLmZpZWxkWzBdLmlubmVySFRNTCA9IHR5cGVvZiBuICE9IHR5cGVvZiB1bmRlZmluZWQgPyBuIDogXCJcIiwgTWFkU3RhdHVzLnJ1bm5pbmcgPSAhMVxuICAgIH0sXG4gICAgbWFudWFsVXBkYXRlOiBmdW5jdGlvbihuLCB0LCBpKSB7XG4gICAgICAgIE1hZFN0YXR1cy50aW1lb3V0ICYmIE1hZFN0YXR1cy5zdG9wKCksIHRoaXMudXBkYXRlKG4sIGkpLCB0ICYmIHNldFRpbWVvdXQoXCJNYWRTdGF0dXMuc3RhcnQoKVwiLCAxZTMpXG4gICAgfSxcbiAgICB1cGRhdGU6IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICAgICAgKE1hZFN0YXR1cy5iYWNrQnVmZmVyWzBdLmlubmVySFRNTCA9IHR5cGVvZiBuICE9IHR5cGVvZiB1bmRlZmluZWQgPyBuIDogdGhpcy5uZXdMaWIoKSwgdHlwZW9mIG5vQW5pbSA9PSB0eXBlb2YgdW5kZWZpbmVkIHx8IHQgIT0gITEpICYmICh0aGlzLmZpZWxkLmhpZGUoKSwgdGhpcy5iYWNrQnVmZmVyLmZhZGVJbih0aGlzLmZhZGVJbnRlcnZhbCArIDIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgTWFkU3RhdHVzLmZpZWxkWzBdLmlubmVySFRNTCA9IE1hZFN0YXR1cy5iYWNrQnVmZmVyWzBdLmlubmVySFRNTCwgTWFkU3RhdHVzLmZpZWxkLnNob3coKSwgTWFkU3RhdHVzLmJhY2tCdWZmZXIuaGlkZSgpXG4gICAgICAgIH0pKVxuICAgIH1cbn07XG5cbjsgLy8vIFBsYWNlTGF1bmNoZXIuanNcbnZhciBSQlggPSB7fSxcbiAgICBSb2Jsb3hMYXVuY2hTdGF0ZXMgPSB7XG4gICAgICAgIFN0YXJ0aW5nU2VydmVyOiBcIlN0YXJ0aW5nU2VydmVyXCIsXG4gICAgICAgIFN0YXJ0aW5nQ2xpZW50OiBcIlN0YXJ0aW5nQ2xpZW50XCIsXG4gICAgICAgIFVwZ3JhZGluZzogXCJVcGdyYWRpbmdcIixcbiAgICAgICAgTm9uZTogXCJOb25lXCJcbiAgICB9LFxuICAgIFJvYmxveExhdW5jaCA9IHtcbiAgICAgICAgbGF1bmNoR2FtZVBhZ2U6IG51bGwsXG4gICAgICAgIHRpbWVyOiBudWxsLFxuICAgICAgICBjbGllbnRNZXRyaWNUeXBlOiBudWxsLFxuICAgICAgICBsYXVuY2hlcjogbnVsbCxcbiAgICAgICAgZ29vZ2xlQW5hbHl0aWNzQ2FsbGJhY2s6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgUm9ibG94TGF1bmNoLl9Hb29nbGVBbmFseXRpY3NDYWxsYmFjayAmJiBSb2Jsb3hMYXVuY2guX0dvb2dsZUFuYWx5dGljc0NhbGxiYWNrKClcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdGU6IFJvYmxveExhdW5jaFN0YXRlcy5Ob25lLFxuICAgICAgICBzZWN1cmVBdXRoZW50aWNhdGU6ICExXG4gICAgfSxcbiAgICBSb2Jsb3hQbGFjZUxhdW5jaGVyU2VydmljZSA9IHtcbiAgICAgICAgTG9nSm9pbkNsaWNrOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICQuZ2V0KFwiL0dhbWUvUGxhY2VsYXVuY2hlci5hc2h4XCIsIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0OiBcIkxvZ0pvaW5DbGlja1wiXG4gICAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICBSZXF1ZXN0R2FtZTogZnVuY3Rpb24obiwgdCwgaSwgciwgdSwgZikge1xuICAgICAgICAgICAgaSA9IGkgIT09IG51bGwgJiYgaSAhPT0gdW5kZWZpbmVkID8gaSA6IFwiXCIsICQuZ2V0SlNPTihcIi9HYW1lL1BsYWNlTGF1bmNoZXIuYXNoeFwiLCB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdDogXCJSZXF1ZXN0R2FtZVwiLFxuICAgICAgICAgICAgICAgIHBsYWNlSWQ6IG4sXG4gICAgICAgICAgICAgICAgaXNQYXJ0eUxlYWRlcjogdCxcbiAgICAgICAgICAgICAgICBnZW5kZXI6IGlcbiAgICAgICAgICAgIH0sIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgICAgICBuLkVycm9yID8gdShuLkVycm9yLCBmKSA6IHIobiwgZilcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIFJlcXVlc3RQbGF5V2l0aFBhcnR5OiBmdW5jdGlvbihuLCB0LCBpLCByLCB1LCBmKSB7XG4gICAgICAgICAgICAkLmdldEpTT04oXCIvR2FtZS9QbGFjZUxhdW5jaGVyLmFzaHhcIiwge1xuICAgICAgICAgICAgICAgIHJlcXVlc3Q6IFwiUmVxdWVzdFBsYXlXaXRoUGFydHlcIixcbiAgICAgICAgICAgICAgICBwbGFjZUlkOiBuLFxuICAgICAgICAgICAgICAgIHBhcnR5R3VpZDogdCxcbiAgICAgICAgICAgICAgICBnYW1lSWQ6IGlcbiAgICAgICAgICAgIH0sIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgICAgICBuLkVycm9yID8gdShuLkVycm9yLCBmKSA6IHIobiwgZilcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIFJlcXVlc3RHcm91cEJ1aWxkR2FtZTogZnVuY3Rpb24obiwgdCwgaSwgcikge1xuICAgICAgICAgICAgJC5nZXRKU09OKFwiL0dhbWUvUGxhY2VMYXVuY2hlci5hc2h4XCIsIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0OiBcIlJlcXVlc3RHcm91cEJ1aWxkR2FtZVwiLFxuICAgICAgICAgICAgICAgIHBsYWNlSWQ6IG5cbiAgICAgICAgICAgIH0sIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgICAgICBuLkVycm9yID8gaShuLkVycm9yLCByKSA6IHQobiwgcilcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIFJlcXVlc3RGb2xsb3dVc2VyOiBmdW5jdGlvbihuLCB0LCBpLCByKSB7XG4gICAgICAgICAgICAkLmdldEpTT04oXCIvR2FtZS9QbGFjZUxhdW5jaGVyLmFzaHhcIiwge1xuICAgICAgICAgICAgICAgIHJlcXVlc3Q6IFwiUmVxdWVzdEZvbGxvd1VzZXJcIixcbiAgICAgICAgICAgICAgICB1c2VySWQ6IG5cbiAgICAgICAgICAgIH0sIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgICAgICBuLkVycm9yID8gaShuLkVycm9yLCByKSA6IHQobiwgcilcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIFJlcXVlc3RHYW1lSm9iOiBmdW5jdGlvbihuLCB0LCBpLCByLCB1LCBmKSB7XG4gICAgICAgICAgICAkLmdldEpTT04oXCIvR2FtZS9QbGFjZUxhdW5jaGVyLmFzaHhcIiwge1xuICAgICAgICAgICAgICAgIHJlcXVlc3Q6IFwiUmVxdWVzdEdhbWVKb2JcIixcbiAgICAgICAgICAgICAgICBwbGFjZUlkOiBuLFxuICAgICAgICAgICAgICAgIGdhbWVJZDogdCxcbiAgICAgICAgICAgICAgICBnYW1lSm9iSWQ6IGlcbiAgICAgICAgICAgIH0sIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgICAgICBuLkVycm9yID8gdShuLkVycm9yLCBmKSA6IHIobiwgZilcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIENoZWNrR2FtZUpvYlN0YXR1czogZnVuY3Rpb24obiwgdCwgaSwgcikge1xuICAgICAgICAgICAgJC5nZXRKU09OKFwiL0dhbWUvUGxhY2VMYXVuY2hlci5hc2h4XCIsIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0OiBcIkNoZWNrR2FtZUpvYlN0YXR1c1wiLFxuICAgICAgICAgICAgICAgIGpvYklkOiBuXG4gICAgICAgICAgICB9LCBmdW5jdGlvbihuKSB7XG4gICAgICAgICAgICAgICAgbi5FcnJvciA/IGkobi5FcnJvciwgcikgOiB0KG4sIHIpXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgfTtcblJvYmxveExhdW5jaC5SZXF1ZXN0UGxheVdpdGhQYXJ0eSA9IGZ1bmN0aW9uKG4sIHQsIGksIHIpIHtcbiAgICBSb2Jsb3hQbGFjZUxhdW5jaGVyU2VydmljZS5Mb2dKb2luQ2xpY2soKSwgUm9ibG94TGF1bmNoLnRpbWVyID0gbmV3IERhdGUsIFJvYmxveExhdW5jaC5zdGF0ZSA9IFJvYmxveExhdW5jaFN0YXRlcy5Ob25lLCBSb2Jsb3hMYXVuY2guY2xpZW50TWV0cmljVHlwZSA9IFwiV2ViUGxheVwiLCBjaGVja1JvYmxveEluc3RhbGwoKSAmJiAoUm9ibG94TGF1bmNoLmxhdW5jaGVyID09PSBudWxsICYmIChSb2Jsb3hMYXVuY2gubGF1bmNoZXIgPSBuZXcgUkJYLlBsYWNlTGF1bmNoZXIobikpLCBSb2Jsb3hMYXVuY2gubGF1bmNoZXIuUmVxdWVzdFBsYXlXaXRoUGFydHkodCwgaSwgcikpXG59LCBSb2Jsb3hMYXVuY2guUmVxdWVzdEdhbWUgPSBmdW5jdGlvbihuLCB0LCBpKSB7XG4gICAgUm9ibG94UGxhY2VMYXVuY2hlclNlcnZpY2UuTG9nSm9pbkNsaWNrKCksIFJvYmxveExhdW5jaC50aW1lciA9IG5ldyBEYXRlLCBSb2Jsb3hMYXVuY2guc3RhdGUgPSBSb2Jsb3hMYXVuY2hTdGF0ZXMuTm9uZSwgUm9ibG94TGF1bmNoLmNsaWVudE1ldHJpY1R5cGUgPSBcIldlYlBsYXlcIiwgY2hlY2tSb2Jsb3hJbnN0YWxsKCkgJiYgKFJvYmxveExhdW5jaC5sYXVuY2hlciA9PT0gbnVsbCAmJiAoUm9ibG94TGF1bmNoLmxhdW5jaGVyID0gbmV3IFJCWC5QbGFjZUxhdW5jaGVyKG4pKSwgUm9ibG94TGF1bmNoLmxhdW5jaGVyLlJlcXVlc3RHYW1lKHQsIGkpKVxufSwgUm9ibG94TGF1bmNoLlJlcXVlc3RHcm91cEJ1aWxkR2FtZSA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICBSb2Jsb3hQbGFjZUxhdW5jaGVyU2VydmljZS5Mb2dKb2luQ2xpY2soKSwgUm9ibG94TGF1bmNoLnRpbWVyID0gbmV3IERhdGUsIFJvYmxveExhdW5jaC5zdGF0ZSA9IFJvYmxveExhdW5jaFN0YXRlcy5Ob25lLCBSb2Jsb3hMYXVuY2guY2xpZW50TWV0cmljVHlwZSA9IFwiV2ViUGxheVwiLCBjaGVja1JvYmxveEluc3RhbGwoKSAmJiAoUm9ibG94TGF1bmNoLmxhdW5jaGVyID09PSBudWxsICYmIChSb2Jsb3hMYXVuY2gubGF1bmNoZXIgPSBuZXcgUkJYLlBsYWNlTGF1bmNoZXIobikpLCBSb2Jsb3hMYXVuY2gubGF1bmNoZXIuUmVxdWVzdEdyb3VwQnVpbGRHYW1lKHQpKVxufSwgUm9ibG94TGF1bmNoLlJlcXVlc3RHYW1lSm9iID0gZnVuY3Rpb24obiwgdCwgaSwgcikge1xuICAgIFJvYmxveFBsYWNlTGF1bmNoZXJTZXJ2aWNlLkxvZ0pvaW5DbGljaygpLCBSb2Jsb3hMYXVuY2gudGltZXIgPSBuZXcgRGF0ZSwgUm9ibG94TGF1bmNoLnN0YXRlID0gUm9ibG94TGF1bmNoU3RhdGVzLk5vbmUsIFJvYmxveExhdW5jaC5jbGllbnRNZXRyaWNUeXBlID0gXCJXZWJKb2luXCIsIGNoZWNrUm9ibG94SW5zdGFsbCgpICYmIChSb2Jsb3hMYXVuY2gubGF1bmNoZXIgPT09IG51bGwgJiYgKFJvYmxveExhdW5jaC5sYXVuY2hlciA9IG5ldyBSQlguUGxhY2VMYXVuY2hlcihuKSksIFJvYmxveExhdW5jaC5sYXVuY2hlci5SZXF1ZXN0R2FtZUpvYih0LCBpLCByKSlcbn0sIFJvYmxveExhdW5jaC5SZXF1ZXN0Rm9sbG93VXNlciA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICBSb2Jsb3hQbGFjZUxhdW5jaGVyU2VydmljZS5Mb2dKb2luQ2xpY2soKSwgUm9ibG94TGF1bmNoLnRpbWVyID0gbmV3IERhdGUsIFJvYmxveExhdW5jaC5zdGF0ZSA9IFJvYmxveExhdW5jaFN0YXRlcy5Ob25lLCBSb2Jsb3hMYXVuY2guY2xpZW50TWV0cmljVHlwZSA9IFwiV2ViRm9sbG93XCIsIGNoZWNrUm9ibG94SW5zdGFsbCgpICYmIChSb2Jsb3hMYXVuY2gubGF1bmNoZXIgPT09IG51bGwgJiYgKFJvYmxveExhdW5jaC5sYXVuY2hlciA9IG5ldyBSQlguUGxhY2VMYXVuY2hlcihuKSksIFJvYmxveExhdW5jaC5sYXVuY2hlci5SZXF1ZXN0Rm9sbG93VXNlcih0KSlcbn0sIFJvYmxveExhdW5jaC5TdGFydEdhbWUgPSBmdW5jdGlvbihuLCB0LCBpLCByLCB1KSB7XG4gICAgdmFyIG8sIGYsIGUsIHM7XG4gICAgUm9ibG94TGF1bmNoLnNlY3VyZUF1dGhlbnRpY2F0ZSAmJiAoaSA9IGkucmVwbGFjZShcImh0dHA6Ly9cIiwgXCJodHRwczovL1wiKSksIG4gPSB0eXBlb2YgUm9ibG94TGF1bmNoLlNlbGVuaXVtVGVzdE1vZGUgPT0gXCJ1bmRlZmluZWRcIiA/IG4gKyBcIiZ0ZXN0bW9kZT1mYWxzZVwiIDogbiArIFwiJnRlc3Rtb2RlPXRydWVcIiwgdHlwZW9mIHVyY2hpblRyYWNrZXIgIT0gXCJ1bmRlZmluZWRcIiAmJiB1cmNoaW5UcmFja2VyKFwiVmlzaXQvVHJ5L1wiICsgdCksIFJvYmxveExhdW5jaC5zdGF0ZSA9IFJvYmxveExhdW5jaFN0YXRlcy5TdGFydGluZ0NsaWVudCwgUm9ibG94TGF1bmNoLmdvb2dsZUFuYWx5dGljc0NhbGxiYWNrICE9PSBudWxsICYmIFJvYmxveExhdW5jaC5nb29nbGVBbmFseXRpY3NDYWxsYmFjaygpLCBvID0gbnVsbDtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdy5leHRlcm5hbCAhPSBcInVuZGVmaW5lZFwiICYmIHdpbmRvdy5leHRlcm5hbC5Jc1JvYmxveEFCQXBwKSB3aW5kb3cuZXh0ZXJuYWwuU3RhcnRHYW1lKHIsIGksIG4pO1xuICAgICAgICBlbHNlIGlmICh0eXBlb2Ygd2luZG93LmV4dGVybmFsICE9IFwidW5kZWZpbmVkXCIgJiYgd2luZG93LmV4dGVybmFsLklzUm9ibG94MkFwcCAmJiAobi5pbmRleE9mKFwidmlzaXRcIikgIT0gLTEgfHwgdSkpIHdpbmRvdy5leHRlcm5hbC5TdGFydEdhbWUociwgaSwgbik7XG4gICAgICAgIGVsc2UgaWYgKG8gPSBcIlJvYmxveFByb3h5L1wiLCBmID0gUm9ibG94LkNsaWVudC5DcmVhdGVMYXVuY2hlcighMCksIGYpIHtcbiAgICAgICAgICAgIG8gPSBcIlJvYmxveFByb3h5L1N0YXJ0R2FtZS9cIjtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LkFjdGl2ZVhPYmplY3QgPyBmLkF1dGhlbnRpY2F0aW9uVGlja2V0ID0gciA6IGYuUHV0X0F1dGhlbnRpY2F0aW9uVGlja2V0KHIpLCB1ICYmIGYuU2V0RWRpdE1vZGUoKVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGEpIHt9XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFJvYmxveC5DbGllbnQuX3NpbGVudE1vZGVFbmFibGVkKSBmLlNldFNpbGVudE1vZGVFbmFibGVkKCEwKSwgUm9ibG94LlZpZGVvUHJlUm9sbC52aWRlb0luaXRpYWxpemVkICYmIFJvYmxveC5WaWRlb1ByZVJvbGwuaXNQbGF5aW5nKCkgJiYgUm9ibG94LkNsaWVudC5TZXRTdGFydEluSGlkZGVuTW9kZSghMCksIGYuU3RhcnRHYW1lKGksIG4pLCBSb2Jsb3hMYXVuY2guQ2hlY2tHYW1lU3RhcnRlZChmKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB0aHJvdyBcInNpbGVudCBtb2RlIGlzIGRpc2FibGVkLCBmYWxsIGJhY2tcIjtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChhKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmLlN0YXJ0R2FtZShpLCBuKSwgUm9ibG94LkNsaWVudC5fYnJpbmdBcHBUb0Zyb250RW5hYmxlZCkgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGYuQnJpbmdBcHBUb0Zyb250KClcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoaCkge31cbiAgICAgICAgICAgICAgICAgICAgUm9ibG94LkNsaWVudC5SZWxlYXNlTGF1bmNoZXIoZiwgITAsICExKSwgJC5tb2RhbC5jbG9zZSgpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoYSkge1xuICAgICAgICAgICAgICAgIFJvYmxveC5DbGllbnQuUmVsZWFzZUxhdW5jaGVyKGYsICEwLCAhMSk7XG4gICAgICAgICAgICAgICAgdGhyb3cgYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcGFyZW50LnBsYXlGcm9tVXJsKG4pO1xuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfSBjYXRjaCAobCkge31cbiAgICAgICAgICAgIGlmIChSb2Jsb3guQ2xpZW50LmlzUm9ibG94QnJvd3NlcigpKSB0cnkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5leHRlcm5hbC5TdGFydEdhbWUociwgaSwgbilcbiAgICAgICAgICAgIH0gY2F0Y2ggKGwpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBcIndpbmRvdy5leHRlcm5hbCBmYWxsYmFjayBmYWlsZWQsIFJvYmxveCBtdXN0IG5vdCBiZSBpbnN0YWxsZWQgb3IgSUUgY2Fubm90IGFjY2VzcyBBY3RpdmVYXCI7XG4gICAgICAgICAgICB9IGVsc2UgdGhyb3cgXCJsYXVuY2hlciBpcyBudWxsIG9yIHVuZGVmaW5lZCBhbmQgZXh0ZXJuYWwgaXMgbWlzc2luZ1wiO1xuICAgICAgICAgICAgUm9ibG94TGF1bmNoLnN0YXRlID0gUm9ibG94TGF1bmNoU3RhdGVzLk5vbmUsICQubW9kYWwuY2xvc2UoKVxuICAgICAgICB9XG4gICAgfSBjYXRjaCAoYSkge1xuICAgICAgICBpZiAoZSA9IGEubWVzc2FnZSwgZSA9PT0gXCJVc2VyIGNhbmNlbGxlZFwiICYmIHR5cGVvZiB1cmNoaW5UcmFja2VyICE9IFwidW5kZWZpbmVkXCIpIHJldHVybiB1cmNoaW5UcmFja2VyKFwiVmlzaXQvVXNlckNhbmNlbGxlZC9cIiArIHQpLCAhMTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHMgPSBuZXcgQWN0aXZlWE9iamVjdChcIk1pY3Jvc29mdC5YTUxIVFRQXCIpXG4gICAgICAgIH0gY2F0Y2ggKGMpIHtcbiAgICAgICAgICAgIGUgPSBcIkZhaWxlZFhNTEhUVFAvXCIgKyBlXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFJvYmxveC5DbGllbnQuaXNSb2Jsb3hCcm93c2VyKCkgPyB0eXBlb2YgdXJjaGluVHJhY2tlciAhPSBcInVuZGVmaW5lZFwiICYmIHVyY2hpblRyYWNrZXIoXCJWaXNpdC9GYWlsL1wiICsgbyArIGVuY29kZVVSSUNvbXBvbmVudChlKSkgOiAodHlwZW9mIHVyY2hpblRyYWNrZXIgIT0gXCJ1bmRlZmluZWRcIiAmJiB1cmNoaW5UcmFja2VyKFwiVmlzaXQvUmVkaXJlY3QvXCIgKyBvICsgZW5jb2RlVVJJQ29tcG9uZW50KGUpKSwgd2luZG93LmxvY2F0aW9uID0gUm9ibG94TGF1bmNoLmxhdW5jaEdhbWVQYWdlKSwgITFcbiAgICB9XG4gICAgcmV0dXJuIHR5cGVvZiB1cmNoaW5UcmFja2VyICE9IFwidW5kZWZpbmVkXCIgJiYgdXJjaGluVHJhY2tlcihcIlZpc2l0L1N1Y2Nlc3MvXCIgKyB0KSwgITBcbn0sIFJvYmxveExhdW5jaC5DaGVja0dhbWVTdGFydGVkID0gZnVuY3Rpb24obikge1xuICAgIGZ1bmN0aW9uIHIoKSB7XG4gICAgICAgIHZhciBlID0gITE7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoaSB8fCAoaSA9IHdpbmRvdy5BY3RpdmVYT2JqZWN0ID8gbi5Jc0dhbWVTdGFydGVkIDogbi5HZXRfR2FtZVN0YXJ0ZWQoKSksIGkgJiYgIVJvYmxveC5WaWRlb1ByZVJvbGwuaXNQbGF5aW5nKCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoTWFkU3RhdHVzLnN0b3AoXCJDb25uZWN0aW5nIHRvIFBsYXllcnMuLi5cIiksIFJvYmxveExhdW5jaC5zdGF0ZSA9IFJvYmxveExhdW5jaFN0YXRlcy5Ob25lLCAkLm1vZGFsLmNsb3NlKCksIHQuX2NhbmNlbGxlZCA9ICEwLCBSb2Jsb3guQ2xpZW50Ll9oaWRkZW5Nb2RlRW5hYmxlZCAmJiBSb2Jsb3guQ2xpZW50LlVuaGlkZUFwcCgpLCBSb2Jsb3guQ2xpZW50Ll9icmluZ0FwcFRvRnJvbnRFbmFibGVkKSB0cnkge1xuICAgICAgICAgICAgICAgICAgICBuLkJyaW5nQXBwVG9Gcm9udCgpXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZikge31cbiAgICAgICAgICAgICAgICBSb2Jsb3guQ2xpZW50LlJlbGVhc2VMYXVuY2hlcihuLCAhMCwgITEpXG4gICAgICAgICAgICB9IGVsc2UgdC5fY2FuY2VsbGVkIHx8IHNldFRpbWVvdXQociwgMWUzKVxuICAgICAgICB9IGNhdGNoICh1KSB7XG4gICAgICAgICAgICB0Ll9jYW5jZWxsZWQgfHwgc2V0VGltZW91dChyLCAxZTMpXG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIHQgPSBSb2Jsb3hMYXVuY2gubGF1bmNoZXIsXG4gICAgICAgIGk7XG4gICAgdCA9PT0gbnVsbCAmJiAodCA9IG5ldyBSQlguUGxhY2VMYXVuY2hlcihcIlBsYWNlTGF1bmNoZXJTdGF0dXNQYW5lbFwiKSwgdC5fc2hvd0RpYWxvZygpLCB0Ll91cGRhdGVTdGF0dXMoMCkpLCBpID0gITEsIHIoKVxufSwgUm9ibG94TGF1bmNoLkNoZWNrUm9ibG94SW5zdGFsbCA9IGZ1bmN0aW9uKG4pIHtcbiAgICBpZiAoUm9ibG94LkNsaWVudC5Jc1JvYmxveEluc3RhbGxlZCgpKSByZXR1cm4gUm9ibG94LkNsaWVudC5VcGRhdGUoKSwgITA7XG4gICAgd2luZG93LmxvY2F0aW9uID0gblxufSwgUkJYLlBsYWNlTGF1bmNoZXIgPSBmdW5jdGlvbihuKSB7XG4gICAgdGhpcy5fY2FuY2VsbGVkID0gITEsIHRoaXMuX3BvcHVwSUQgPSBuLCB0aGlzLl9wb3B1cCA9ICQoXCIjXCIgKyBuKVxufSwgUkJYLlBsYWNlTGF1bmNoZXIucHJvdG90eXBlID0ge1xuICAgIF9zaG93RGlhbG9nOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy5fY2FuY2VsbGVkID0gITEsIF9wb3B1cE9wdGlvbnMgPSB7XG4gICAgICAgICAgICBlc2NDbG9zZTogITAsXG4gICAgICAgICAgICBvcGFjaXR5OiA4MCxcbiAgICAgICAgICAgIG92ZXJsYXlDc3M6IHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMFwiXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHRoaXMuX3BvcHVwSUQgPT0gXCJQbGFjZUxhdW5jaGVyU3RhdHVzUGFuZWxcIiAmJiAoUm9ibG94LlZpZGVvUHJlUm9sbCAmJiBSb2Jsb3guVmlkZW9QcmVSb2xsLnNob3dWaWRlb1ByZVJvbGwgJiYgIVJvYmxveC5WaWRlb1ByZVJvbGwuaXNFeGNsdWRlZCgpID8gKHRoaXMuX3BvcHVwID0gJChcIiN2aWRlb1ByZXJvbGxQYW5lbFwiKSwgX3BvcHVwT3B0aW9ucy5vblNob3cgPSBmdW5jdGlvbihuKSB7XG4gICAgICAgICAgICBSb2Jsb3guVmlkZW9QcmVSb2xsLmNvcnJlY3RJRU1vZGFsUG9zaXRpb24obiksIFJvYmxveC5WaWRlb1ByZVJvbGwuc3RhcnQoKVxuICAgICAgICB9LCBfcG9wdXBPcHRpb25zLm9uQ2xvc2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIFJvYmxveC5WaWRlb1ByZVJvbGwuY2xvc2UoKVxuICAgICAgICB9LCBfcG9wdXBPcHRpb25zLmNsb3NlSFRNTCA9ICc8YSBocmVmPVwiI1wiIGNsYXNzPVwiSW1hZ2VCdXR0b24gY2xvc2VCdG5DaXJjbGVfMzVoIEFCQ2xvc2VDaXJjbGUgVnByQ2xvc2VCdXR0b25cIj48L2E+JykgOiAodGhpcy5fcG9wdXAgPSAkKFwiI1wiICsgdGhpcy5fcG9wdXBJRCksIF9wb3B1cE9wdGlvbnMub25DbG9zZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgUm9ibG94LlZpZGVvUHJlUm9sbC5sb2dWaWRlb1ByZVJvbGwoKSwgJC5tb2RhbC5jbG9zZSgpXG4gICAgICAgIH0pKSwgdGhpcy5fcG9wdXAubW9kYWwoX3BvcHVwT3B0aW9ucyk7XG4gICAgICAgIHZhciBuID0gdGhpcztcbiAgICAgICAgJChcIi5DYW5jZWxQbGFjZUxhdW5jaGVyQnV0dG9uXCIpLmNsaWNrKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgbi5DYW5jZWxMYXVuY2goKVxuICAgICAgICB9KSwgJChcIi5DYW5jZWxQbGFjZUxhdW5jaGVyQnV0dG9uXCIpLnNob3coKVxuICAgIH0sXG4gICAgX3JlcG9ydER1cmF0aW9uOiBmdW5jdGlvbihuLCB0KSB7XG4gICAgICAgICQuYWpheCh7XG4gICAgICAgICAgICB0eXBlOiBcIkdFVFwiLFxuICAgICAgICAgICAgYXN5bmM6ICEwLFxuICAgICAgICAgICAgY2FjaGU6ICExLFxuICAgICAgICAgICAgdGltZW91dDogNWU0LFxuICAgICAgICAgICAgdXJsOiBcIi9HYW1lL0pvaW5SYXRlLmFzaHg/Yz1cIiArIFJvYmxveExhdW5jaC5jbGllbnRNZXRyaWNUeXBlICsgXCImcj1cIiArIHQgKyBcIiZkPVwiICsgbixcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKCkge31cbiAgICAgICAgfSlcbiAgICB9LFxuICAgIF9vbkdhbWVTdGF0dXM6IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgdmFyIHIsIGksIHQ7XG4gICAgICAgIGlmICh0aGlzLl9jYW5jZWxsZWQpIHtcbiAgICAgICAgICAgIHIgPSArbmV3IERhdGUgLSBSb2Jsb3hMYXVuY2gudGltZXIuZ2V0VGltZSgpLCB0aGlzLl9yZXBvcnREdXJhdGlvbihyLCBcIkNhbmNlbFwiKTtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl91cGRhdGVTdGF0dXMobi5zdGF0dXMpLCBuLnN0YXR1cyA9PT0gMikgUm9ibG94TGF1bmNoLlN0YXJ0R2FtZShuLmpvaW5TY3JpcHRVcmwsIFwiSm9pblwiLCBuLmF1dGhlbnRpY2F0aW9uVXJsLCBuLmF1dGhlbnRpY2F0aW9uVGlja2V0KSwgaSA9ICtuZXcgRGF0ZSAtIFJvYmxveExhdW5jaC50aW1lci5nZXRUaW1lKCksIHRoaXMuX3JlcG9ydER1cmF0aW9uKGksIFwiU3VjY2Vzc1wiKTtcbiAgICAgICAgZWxzZSBpZiAobi5zdGF0dXMgPCAyIHx8IG4uc3RhdHVzID09PSA2KSB7XG4gICAgICAgICAgICB2YXIgZiA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdC5fb25HYW1lU3RhdHVzKG4pXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlID0gZnVuY3Rpb24obiwgdCkge1xuICAgICAgICAgICAgICAgICAgICB0Ll9vbkdhbWVFcnJvcihuKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbyA9IHRoaXMsXG4gICAgICAgICAgICAgICAgdSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBSb2Jsb3hQbGFjZUxhdW5jaGVyU2VydmljZS5DaGVja0dhbWVKb2JTdGF0dXMobi5qb2JJZCwgZiwgZSwgbylcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQodSwgMmUzKVxuICAgICAgICB9IGVsc2Ugbi5zdGF0dXMgPT09IDQgJiYgKHQgPSArbmV3IERhdGUgLSBSb2Jsb3hMYXVuY2gudGltZXIuZ2V0VGltZSgpLCB0aGlzLl9yZXBvcnREdXJhdGlvbih0LCBcIkZhaWx1cmVcIikpXG4gICAgfSxcbiAgICBfdXBkYXRlU3RhdHVzOiBmdW5jdGlvbihuKSB7XG4gICAgICAgIE1hZFN0YXR1cy5ydW5uaW5nIHx8IChNYWRTdGF0dXMuaW5pdCgkKHRoaXMuX3BvcHVwKS5maW5kKFwiLk1hZFN0YXR1c0ZpZWxkXCIpLCAkKHRoaXMuX3BvcHVwKS5maW5kKFwiLk1hZFN0YXR1c0JhY2tCdWZmZXJcIiksIDJlMywgODAwKSwgTWFkU3RhdHVzLnN0YXJ0KCkpO1xuICAgICAgICBzd2l0Y2ggKG4pIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICBNYWRTdGF0dXMubWFudWFsVXBkYXRlKFwiQSBzZXJ2ZXIgaXMgbG9hZGluZyB0aGUgZ2FtZS4uLlwiLCAhMCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgTWFkU3RhdHVzLm1hbnVhbFVwZGF0ZShcIlRoZSBzZXJ2ZXIgaXMgcmVhZHkuIEpvaW5pbmcgdGhlIGdhbWUuLi5cIiwgITApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgIE1hZFN0YXR1cy5tYW51YWxVcGRhdGUoXCJKb2luaW5nIGdhbWVzIGlzIHRlbXBvcmFyaWx5IGRpc2FibGVkIHdoaWxlIHdlIHVwZ3JhZGUuIFBsZWFzZSB0cnkgYWdhaW4gc29vbi5cIiwgITEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgIE1hZFN0YXR1cy5tYW51YWxVcGRhdGUoXCJBbiBlcnJvciBvY2N1cnJlZC4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci5cIiwgITEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgIE1hZFN0YXR1cy5tYW51YWxVcGRhdGUoXCJUaGUgZ2FtZSB5b3UgcmVxdWVzdGVkIGhhcyBlbmRlZC5cIiwgITEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgIE1hZFN0YXR1cy5tYW51YWxVcGRhdGUoXCJUaGUgZ2FtZSB5b3UgcmVxdWVzdGVkIGlzIGN1cnJlbnRseSBmdWxsLiBXYWl0aW5nIGZvciBhbiBvcGVuaW5nLi4uXCIsICEwLCAhMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICAgICAgTWFkU3RhdHVzLm1hbnVhbFVwZGF0ZShcIlJvYmxveCBpcyB1cGRhdGluZy4gUGxlYXNlIHdhaXQuLi5cIiwgITApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgICAgIE1hZFN0YXR1cy5tYW51YWxVcGRhdGUoXCJSZXF1ZXN0aW5nIGEgc2VydmVyXCIsICEwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgTWFkU3RhdHVzLnN0b3AoXCJDb25uZWN0aW5nIHRvIFBsYXllcnMuLi5cIilcbiAgICAgICAgfVxuICAgICAgICAkKHRoaXMuX3BvcHVwKS5maW5kKFwiLk1hZFN0YXR1c1N0YXJ0aW5nXCIpLmNzcyhcImRpc3BsYXlcIiwgXCJub25lXCIpLCAkKHRoaXMuX3BvcHVwKS5maW5kKFwiLk1hZFN0YXR1c1NwaW5uZXJcIikuY3NzKFwidmlzaWJpbGl0eVwiLCBuID09PSAzIHx8IG4gPT09IDQgfHwgbiA9PT0gNSA/IFwiaGlkZGVuXCIgOiBcInZpc2libGVcIilcbiAgICB9LFxuICAgIF9vbkdhbWVFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVN0YXR1cyg0KVxuICAgIH0sXG4gICAgX3N0YXJ0VXBkYXRlUG9sbGluZzogZnVuY3Rpb24obikge1xuICAgICAgICB2YXIgdCwgaTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChSb2Jsb3hMYXVuY2guc3RhdGUgPSBSb2Jsb3hMYXVuY2hTdGF0ZXMuVXBncmFkaW5nLCB0ID0gUm9ibG94LkNsaWVudC5DcmVhdGVMYXVuY2hlcighMCksIGkgPSB3aW5kb3cuQWN0aXZlWE9iamVjdCA/IHQuSXNVcFRvRGF0ZSA6IHQuR2V0X0lzVXBUb0RhdGUoKSwgaSB8fCBpID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB0LlByZVN0YXJ0R2FtZSgpXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgICAgICAgICBSb2Jsb3guQ2xpZW50LlJlbGVhc2VMYXVuY2hlcih0LCAhMCwgITEpLCBSb2Jsb3hMYXVuY2guc3RhdGUgPSBSb2Jsb3hMYXVuY2hTdGF0ZXMuU3RhcnRpbmdTZXJ2ZXIsIG4oKTtcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBmID0gZnVuY3Rpb24odCwgaSwgcikge1xuICAgICAgICAgICAgICAgICAgICByLl9vblVwZGF0ZVN0YXR1cyh0LCBpLCBuKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdSA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdC5fb25VcGRhdGVFcnJvcihuKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgciA9IHRoaXM7XG4gICAgICAgICAgICB0aGlzLkNoZWNrVXBkYXRlU3RhdHVzKGYsIHUsIHQsIG4sIHIpXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIFJvYmxveC5DbGllbnQuUmVsZWFzZUxhdW5jaGVyKHQsICEwLCAhMSksIG4oKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBfb25VcGRhdGVTdGF0dXM6IGZ1bmN0aW9uKG4sIHQsIGkpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9jYW5jZWxsZWQpXG4gICAgICAgICAgICBpZiAodGhpcy5fdXBkYXRlU3RhdHVzKG4pLCBuID09PSA4KSBSb2Jsb3guQ2xpZW50LlJlbGVhc2VMYXVuY2hlcih0LCAhMCwgITApLCBSb2Jsb3guQ2xpZW50LlJlZnJlc2goKSwgUm9ibG94TGF1bmNoLnN0YXRlID0gUm9ibG94TGF1bmNoU3RhdGVzLlN0YXJ0aW5nU2VydmVyLCBpKCk7XG4gICAgICAgICAgICBlbHNlIGlmIChuID09PSA3KSB7XG4gICAgICAgICAgICB2YXIgZiA9IGZ1bmN0aW9uKG4sIHQsIHIpIHtcbiAgICAgICAgICAgICAgICAgICAgci5fb25VcGRhdGVTdGF0dXMobiwgdCwgaSlcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGUgPSBmdW5jdGlvbihuLCB0KSB7XG4gICAgICAgICAgICAgICAgICAgIHQuX29uVXBkYXRlRXJyb3IobilcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHIgPSB0aGlzLFxuICAgICAgICAgICAgICAgIHUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgci5DaGVja1VwZGF0ZVN0YXR1cyhmLCBlLCB0LCBpLCByKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCh1LCAyZTMpXG4gICAgICAgIH0gZWxzZSBhbGVydChcIlVua25vd24gc3RhdHVzIGZyb20gQ2hlY2tVcGRhdGVTdGF0dXNcIilcbiAgICB9LFxuICAgIF9vblVwZGF0ZUVycm9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy5fdXBkYXRlU3RhdHVzKDIpXG4gICAgfSxcbiAgICBDaGVja1VwZGF0ZVN0YXR1czogZnVuY3Rpb24obiwgdCwgaSwgciwgdSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKGkuUHJlU3RhcnRHYW1lKCksIHdpbmRvdy5BY3RpdmVYT2JqZWN0KSB2YXIgZiA9IGkuSXNVcFRvRGF0ZTtcbiAgICAgICAgICAgIGVsc2UgZiA9IGkuR2V0X0lzVXBUb0RhdGUoKTtcbiAgICAgICAgICAgIGYgfHwgZiA9PT0gdW5kZWZpbmVkID8gbig4LCBpLCB1KSA6IG4oNywgaSwgdSlcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgbig4LCBpLCB1KVxuICAgICAgICB9XG4gICAgfSxcbiAgICBSZXF1ZXN0R2FtZTogZnVuY3Rpb24obiwgdCkge1xuICAgICAgICB2YXIgcjtcbiAgICAgICAgdGhpcy5fc2hvd0RpYWxvZygpO1xuICAgICAgICB2YXIgZiA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICAgICAgICAgICAgICB0Ll9vbkdhbWVTdGF0dXMobilcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1ID0gZnVuY3Rpb24obiwgdCkge1xuICAgICAgICAgICAgICAgIHQuX29uR2FtZUVycm9yKG4pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZSA9IHRoaXMsXG4gICAgICAgICAgICBpID0gITE7XG4gICAgICAgIHJldHVybiB0eXBlb2YgUGFydHkgIT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgUGFydHkuQW1JTGVhZGVyID09IFwiZnVuY3Rpb25cIiAmJiAoaSA9IFBhcnR5LkFtSUxlYWRlcigpKSwgciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgUm9ibG94UGxhY2VMYXVuY2hlclNlcnZpY2UuUmVxdWVzdEdhbWUobiwgaSwgdCwgZiwgdSwgZSlcbiAgICAgICAgfSwgdGhpcy5fc3RhcnRVcGRhdGVQb2xsaW5nKHIpLCAhMVxuICAgIH0sXG4gICAgUmVxdWVzdFBsYXlXaXRoUGFydHk6IGZ1bmN0aW9uKG4sIHQsIGkpIHtcbiAgICAgICAgdGhpcy5fc2hvd0RpYWxvZygpO1xuICAgICAgICB2YXIgZiA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICAgICAgICAgICAgICB0Ll9vbkdhbWVTdGF0dXMobilcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlID0gZnVuY3Rpb24obiwgdCkge1xuICAgICAgICAgICAgICAgIHQuX29uR2FtZUVycm9yKG4pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgciA9IHRoaXMsXG4gICAgICAgICAgICB1ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgUm9ibG94UGxhY2VMYXVuY2hlclNlcnZpY2UuUmVxdWVzdFBsYXlXaXRoUGFydHkobiwgdCwgaSwgZiwgZSwgcilcbiAgICAgICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGFydFVwZGF0ZVBvbGxpbmcodSksICExXG4gICAgfSxcbiAgICBSZXF1ZXN0R3JvdXBCdWlsZEdhbWU6IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgdGhpcy5fc2hvd0RpYWxvZygpO1xuICAgICAgICB2YXIgciA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICAgICAgICAgICAgICB0Ll9vbkdhbWVTdGF0dXMobiwgITApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdSA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICAgICAgICAgICAgICB0Ll9vbkdhbWVFcnJvcihuKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHQgPSB0aGlzLFxuICAgICAgICAgICAgaSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIFJvYmxveFBsYWNlTGF1bmNoZXJTZXJ2aWNlLlJlcXVlc3RHcm91cEJ1aWxkR2FtZShuLCByLCB1LCB0KVxuICAgICAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0VXBkYXRlUG9sbGluZyhpKSwgITFcbiAgICB9LFxuICAgIFJlcXVlc3RGb2xsb3dVc2VyOiBmdW5jdGlvbihuKSB7XG4gICAgICAgIHRoaXMuX3Nob3dEaWFsb2coKTtcbiAgICAgICAgdmFyIHIgPSBmdW5jdGlvbihuLCB0KSB7XG4gICAgICAgICAgICAgICAgdC5fb25HYW1lU3RhdHVzKG4pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdSA9IGZ1bmN0aW9uKG4sIHQpIHtcbiAgICAgICAgICAgICAgICB0Ll9vbkVycm9yKG4pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdCA9IHRoaXMsXG4gICAgICAgICAgICBpID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgUm9ibG94UGxhY2VMYXVuY2hlclNlcnZpY2UuUmVxdWVzdEZvbGxvd1VzZXIobiwgciwgdSwgdClcbiAgICAgICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGFydFVwZGF0ZVBvbGxpbmcoaSksICExXG4gICAgfSxcbiAgICBSZXF1ZXN0R2FtZUpvYjogZnVuY3Rpb24obiwgdCwgaSkge1xuICAgICAgICB0aGlzLl9zaG93RGlhbG9nKCk7XG4gICAgICAgIHZhciBmID0gZnVuY3Rpb24obiwgdCkge1xuICAgICAgICAgICAgICAgIHQuX29uR2FtZVN0YXR1cyhuKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGUgPSBmdW5jdGlvbihuLCB0KSB7XG4gICAgICAgICAgICAgICAgdC5fb25HYW1lRXJyb3IobilcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByID0gdGhpcyxcbiAgICAgICAgICAgIHUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBSb2Jsb3hQbGFjZUxhdW5jaGVyU2VydmljZS5SZXF1ZXN0R2FtZUpvYihuLCB0LCBpLCBmLCBlLCByKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0VXBkYXRlUG9sbGluZyh1KSwgITFcbiAgICB9LFxuICAgIENhbmNlbExhdW5jaDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYW5jZWxsZWQgPSAhMCwgJC5tb2RhbC5jbG9zZSgpLCAhMVxuICAgIH0sXG4gICAgZGlzcG9zZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIFJCWC5QbGFjZUxhdW5jaGVyLmNhbGxCYXNlTWV0aG9kKHRoaXMsIFwiZGlzcG9zZVwiKVxuICAgIH1cbn07XG5cbjsgLy8vIFZpZGVvUHJlUm9sbC5qc1xuZnVuY3Rpb24gb3BlblZpZGVvUHJlcm9sbDIobikge1xuICAgIFJvYmxveC5WaWRlb1ByZVJvbGwudGVzdChuKVxufVxuXG5mdW5jdGlvbiBmbGFzaENoZWNrKG4pIHtcbiAgICB2YXIgaSA9ICExLFxuICAgICAgICB0LCByO1xuICAgIGlmICh3aW5kb3cuQWN0aXZlWE9iamVjdCkgdHJ5IHtcbiAgICAgICAgdCA9IG5ldyBBY3RpdmVYT2JqZWN0KFwiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2guXCIgKyBuKSwgaSA9ICEwXG4gICAgfSBjYXRjaCAodSkge30gZWxzZSBuYXZpZ2F0b3IucGx1Z2lucyAmJiBuYXZpZ2F0b3IubWltZVR5cGVzLmxlbmd0aCA+IDAgJiYgKHQgPSBuYXZpZ2F0b3IucGx1Z2luc1tcIlNob2Nrd2F2ZSBGbGFzaFwiXSwgdCAmJiAociA9IG5hdmlnYXRvci5wbHVnaW5zW1wiU2hvY2t3YXZlIEZsYXNoXCJdLmRlc2NyaXB0aW9uLnJlcGxhY2UoLy4qXFxzKFxcZCtcXC5cXGQrKS4qLywgXCIkMVwiKSwgciA+PSBuICYmIChpID0gITApKSk7XG4gICAgcmV0dXJuIGlcbn1cbnR5cGVvZiBSb2Jsb3ggPT0gXCJ1bmRlZmluZWRcIiAmJiAoUm9ibG94ID0ge30pLCBSb2Jsb3guVmlkZW9QcmVSb2xsID0ge1xuICAgIG5ld1ZhbHVlOiBcIlwiLFxuICAgIHNob3dWaWRlb1ByZVJvbGw6ICExLFxuICAgIHZpZGVvSW5pdGlhbGl6ZWQ6ICExLFxuICAgIHZpZGVvU3RhcnRlZDogITEsXG4gICAgdmlkZW9Db21wbGV0ZWQ6ICExLFxuICAgIHZpZGVvU2tpcHBlZDogITEsXG4gICAgdmlkZW9DYW5jZWxsZWQ6ICExLFxuICAgIHZpZGVvRXJyb3JlZDogITEsXG4gICAgdmlkZW9PcHRpb25zOiB7XG4gICAgICAgIGtleTogXCJpbnRlZ3JhdGlvbl90ZXN0XCIsXG4gICAgICAgIGNvbXBhbmlvbklkOiBcInZpZGVvUHJlcm9sbENvbXBhbmlvbkFkXCJcbiAgICB9LFxuICAgIG15dnBhaWRhZDogbnVsbCxcbiAgICBsb2FkaW5nQmFyTWF4VGltZTogM2U0LFxuICAgIGxvYWRpbmdCYXJDdXJyZW50VGltZTogMCxcbiAgICBsb2FkaW5nQmFySW50ZXJ2YWxJRDogMCxcbiAgICBsb2FkaW5nQmFySUQ6IFwidmlkZW9QcmVyb2xsTG9hZGluZ0JhclwiLFxuICAgIGxvYWRpbmdCYXJJbm5lcklEOiBcInZpZGVvUHJlcm9sbExvYWRpbmdCYXJDb21wbGV0ZWRcIixcbiAgICBsb2FkaW5nQmFyUGVyY2VudGFnZUlEOiBcInZpZGVvUHJlcm9sbExvYWRpbmdQZXJjZW50XCIsXG4gICAgdmlkZW9Mb2FkaW5nVGltZW91dDogN2UzLFxuICAgIHZpZGVvUGxheWluZ1RpbWVvdXQ6IDIzZTMsXG4gICAgdmlkZW9Mb2dOb3RlOiBcIlwiLFxuICAgIGxvZ3NFbmFibGVkOiAhMSxcbiAgICBleGNsdWRlZFBsYWNlSWRzOiBcIlwiLFxuICAgIHNwZWNpZmljQWRPblBsYWNlUGFnZUVuYWJsZWQ6ICExLFxuICAgIHNwZWNpZmljQWRPblBsYWNlUGFnZUlkOiAwLFxuICAgIHNwZWNpZmljQWRPblBsYWNlUGFnZUNhdGVnb3J5OiBcIlwiLFxuICAgIGNoZWNrRWxpZ2liaWxpdHk6IGZ1bmN0aW9uKCkge1xuICAgICAgICBSb2Jsb3guVmlkZW9QcmVSb2xsLnNob3dWaWRlb1ByZVJvbGwgJiYgKGZsYXNoQ2hlY2soOCkgPyB0eXBlb2YgX19hZGFwdHZfXyA9PSBcInVuZGVmaW5lZFwiID8gKFJvYmxveC5WaWRlb1ByZVJvbGwudmlkZW9Mb2dOb3RlID0gXCJOb0FkYXBUdlwiLCBSb2Jsb3guVmlkZW9QcmVSb2xsLnNob3dWaWRlb1ByZVJvbGwgPSAhMSkgOiBSb2Jsb3guQ2xpZW50LklzUm9ibG94SW5zdGFsbGVkKCkgPyBSb2Jsb3guQ2xpZW50LmlzSURFKCkgPyAoUm9ibG94LlZpZGVvUHJlUm9sbC52aWRlb0xvZ05vdGUgPSBcIlJvYmxveFN0dWRpb1wiLCBSb2Jsb3guVmlkZW9QcmVSb2xsLnNob3dWaWRlb1ByZVJvbGwgPSAhMSkgOiBSb2Jsb3guQ2xpZW50LmlzUm9ibG94QnJvd3NlcigpID8gKFJvYmxveC5WaWRlb1ByZVJvbGwudmlkZW9Mb2dOb3RlID0gXCJSb2Jsb3hQbGF5ZXJcIiwgUm9ibG94LlZpZGVvUHJlUm9sbC5zaG93VmlkZW9QcmVSb2xsID0gITEpIDogd2luZG93LmNocm9tZSAmJiB3aW5kb3cubG9jYXRpb24uaGFzaCA9PSBcIiNjaHJvbWVJbnN0YWxsXCIgJiYgKFJvYmxveC5WaWRlb1ByZVJvbGwuc2hvd1ZpZGVvUHJlUm9sbCA9ICExKSA6IFJvYmxveC5WaWRlb1ByZVJvbGwuc2hvd1ZpZGVvUHJlUm9sbCA9ICExIDogKFJvYmxveC5WaWRlb1ByZVJvbGwudmlkZW9Mb2dOb3RlID0gXCJOb0ZsYXNoXCIsIFJvYmxveC5WaWRlb1ByZVJvbGwuc2hvd1ZpZGVvUHJlUm9sbCA9ICExKSlcbiAgICB9LFxuICAgIGlzRXhjbHVkZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgdCwgbjtcbiAgICAgICAgaWYgKFJvYmxveC5WaWRlb1ByZVJvbGwuc2hvd1ZpZGVvUHJlUm9sbCAmJiBSb2Jsb3guVmlkZW9QcmVSb2xsLmV4Y2x1ZGVkUGxhY2VJZHMgIT09IFwiXCIgJiYgKHQgPSBSb2Jsb3guVmlkZW9QcmVSb2xsLmV4Y2x1ZGVkUGxhY2VJZHMuc3BsaXQoXCIsXCIpLCB0eXBlb2YgcGxheV9wbGFjZUlkICE9IFwidW5kZWZpbmVkXCIpKVxuICAgICAgICAgICAgZm9yIChuID0gMDsgbiA8IHQubGVuZ3RoOyBuKyspXG4gICAgICAgICAgICAgICAgaWYgKHBsYXlfcGxhY2VJZCA9PSB0W25dKSByZXR1cm4gUm9ibG94LlZpZGVvUHJlUm9sbC52aWRlb0xvZ05vdGUgPSBcIkV4Y2x1ZGVkUGxhY2VcIiwgITA7XG4gICAgICAgIHJldHVybiAhMVxuICAgIH0sXG4gICAgc3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgaSwgciwgdCwgbjtcbiAgICAgICAgdGhpcy52aWRlb0luaXRpYWxpemVkID0gITAsIHRoaXMudmlkZW9TdGFydGVkID0gITEsIHRoaXMudmlkZW9DYW5jZWxsZWQgPSAhMSwgdGhpcy52aWRlb0NvbXBsZXRlZCA9ICExLCB0aGlzLnZpZGVvU2tpcHBlZCA9ICExLCB0aGlzLmxvYWRpbmdCYXJDdXJyZW50VGltZSA9IDAsIHRoaXMudmlkZW9Mb2dOb3RlID0gXCJcIiwgUm9ibG94LlZpZGVvUHJlUm9sbC5zcGVjaWZpY0FkT25QbGFjZVBhZ2VFbmFibGVkICYmIHR5cGVvZiBwbGF5X3BsYWNlSWQgIT0gXCJ1bmRlZmluZWRcIiAmJiAoaSA9IFwiLFwiICsgUm9ibG94LlZpZGVvUHJlUm9sbC5zcGVjaWZpY0FkT25QbGFjZVBhZ2VDYXRlZ29yeSwgcGxheV9wbGFjZUlkID09IFJvYmxveC5WaWRlb1ByZVJvbGwuc3BlY2lmaWNBZE9uUGxhY2VQYWdlSWQgJiYgUm9ibG94LlZpZGVvUHJlUm9sbC52aWRlb09wdGlvbnMuY2F0ZWdvcmllcy5pbmRleE9mKGkpID09IC0xICYmIChSb2Jsb3guVmlkZW9QcmVSb2xsLnZpZGVvT3B0aW9ucy5jYXRlZ29yaWVzICs9IGkpKSwgciA9IF9fYWRhcHR2X18sIHRoaXMubXl2cGFpZGFkID0gbmV3IHIuYWRzLnZwYWlkLlZQQUlEQWQoXCJ2aWRlb1ByZXJvbGxNYWluRGl2XCIpLCB0ID0gMWUzLCBMb2FkaW5nQmFyLmluaXQodGhpcy5sb2FkaW5nQmFySUQsIHRoaXMubG9hZGluZ0JhcklubmVySUQsIHRoaXMubG9hZGluZ0JhclBlcmNlbnRhZ2VJRCksIHRoaXMubG9hZGluZ0JhckludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIFJvYmxveC5WaWRlb1ByZVJvbGwubG9hZGluZ0JhckN1cnJlbnRUaW1lICs9IHQsIExvYWRpbmdCYXIudXBkYXRlKFJvYmxveC5WaWRlb1ByZVJvbGwubG9hZGluZ0JhcklELCBSb2Jsb3guVmlkZW9QcmVSb2xsLmxvYWRpbmdCYXJDdXJyZW50VGltZSAvIFJvYmxveC5WaWRlb1ByZVJvbGwubG9hZGluZ0Jhck1heFRpbWUpXG4gICAgICAgIH0sIHQpLCBuID0gci5hZHMudnBhaWQuVlBBSURFdmVudDtcbiAgICAgICAgdGhpcy5teXZwYWlkYWQub24obi5BZExvYWRlZCwgZnVuY3Rpb24obikge1xuICAgICAgICAgICAgUm9ibG94LlZpZGVvUHJlUm9sbC5fb25WaWRlb0xvYWRlZChuKVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5teXZwYWlkYWQub24obi5BZFN0YXJ0ZWQsIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgIFJvYmxveC5WaWRlb1ByZVJvbGwuX29uVmlkZW9TdGFydChuKVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5teXZwYWlkYWQub24obi5BZFN0b3BwZWQsIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgIFJvYmxveC5WaWRlb1ByZVJvbGwuX29uVmlkZW9Db21wbGV0ZShuKVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5teXZwYWlkYWQub24obi5BZEVycm9yLCBmdW5jdGlvbihuKSB7XG4gICAgICAgICAgICBSb2Jsb3guVmlkZW9QcmVSb2xsLl9vblZpZGVvRXJyb3IobilcbiAgICAgICAgfSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLm15dnBhaWRhZC5pbml0QWQoMzkxLCAzMTIsIHRoaXMudmlkZW9PcHRpb25zKVxuICAgICAgICB9IGNhdGNoICh1KSB7XG4gICAgICAgICAgICBmKClcbiAgICAgICAgfVxuICAgIH0sXG4gICAgZXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICBjbGVhckludGVydmFsKGxvYWRpbmdCYXJJbnRlcnZhbClcbiAgICB9LFxuICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMudmlkZW9DYW5jZWxsZWQgPSAhMCwgJC5tb2RhbC5jbG9zZSgpXG4gICAgfSxcbiAgICBza2lwOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy52aWRlb0NvbXBsZXRlZCA9ICEwLCB0aGlzLnZpZGVvU2tpcHBlZCA9ICEwLCB0aGlzLnNob3dWaWRlb1ByZVJvbGwgPSAhMVxuICAgIH0sXG4gICAgY2xvc2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICBNYWRTdGF0dXMucnVubmluZyAmJiBNYWRTdGF0dXMuc3RvcChcIlwiKSwgUm9ibG94TGF1bmNoLmxhdW5jaGVyICYmIChSb2Jsb3hMYXVuY2gubGF1bmNoZXIuX2NhbmNlbGxlZCA9ICEwKSwgY2xlYXJJbnRlcnZhbCh0aGlzLmxvYWRpbmdCYXJJbnRlcnZhbElEKSwgTG9hZGluZ0Jhci5kaXNwb3NlKHRoaXMubG9hZGluZ0JhcklEKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMubXl2cGFpZGFkLnN0b3BBZCgpXG4gICAgICAgIH0gY2F0Y2ggKG4pIHt9XG4gICAgICAgIHRoaXMuaXNQbGF5aW5nKCkgJiYgKHRoaXMudmlkZW9DYW5jZWxsZWQgPSAhMCksICQubW9kYWwuY2xvc2UoKSwgdGhpcy5sb2dWaWRlb1ByZVJvbGwoKVxuICAgIH0sXG4gICAgX29uVmlkZW9FcnJvcjogZnVuY3Rpb24gZigpIHtcbiAgICAgICAgdGhpcy52aWRlb0NvbXBsZXRlZCA9ICEwLCB0aGlzLnZpZGVvRXJyb3JlZCA9ICEwXG4gICAgfSxcbiAgICBfb25WaWRlb0xvYWRlZDogZnVuY3Rpb24obikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5teXZwYWlkYWQuc3RhcnRBZCgpXG4gICAgICAgIH0gY2F0Y2ggKHQpIHtcbiAgICAgICAgICAgIGYobilcbiAgICAgICAgfVxuICAgIH0sXG4gICAgX29uVmlkZW9TdGFydDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMudmlkZW9TdGFydGVkID0gITBcbiAgICB9LFxuICAgIF9vblZpZGVvQ29tcGxldGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLnZpZGVvU3RhcnRlZCAmJiB0aGlzLnZpZGVvQ2FuY2VsbGVkID09ICExICYmICh0aGlzLnZpZGVvQ29tcGxldGVkID0gITAsIHRoaXMuc2hvd1ZpZGVvUHJlUm9sbCA9ICExLCB0aGlzLm5ld1ZhbHVlICE9IFwiXCIgJiYgJC5jb29raWUoXCJSQlhWUFJcIiwgdGhpcy5uZXdWYWx1ZSwgMTgwKSlcbiAgICB9LFxuICAgIGxvZ1ZpZGVvUHJlUm9sbDogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmIChSb2Jsb3guVmlkZW9QcmVSb2xsLmxvZ3NFbmFibGVkKSB7XG4gICAgICAgICAgICB2YXIgbiA9IFwiXCI7XG4gICAgICAgICAgICBpZiAoUm9ibG94LlZpZGVvUHJlUm9sbC52aWRlb0NvbXBsZXRlZCkgbiA9IFwiQ29tcGxldGVcIiwgUm9ibG94LlZpZGVvUHJlUm9sbC52aWRlb0xvZ05vdGUgPT0gXCJcIiAmJiAoUm9ibG94LlZpZGVvUHJlUm9sbC52aWRlb0xvZ05vdGUgPSBcIk5vVGltZW91dFwiKSwgUm9ibG94LlZpZGVvUHJlUm9sbC5sb2dzRW5hYmxlZCA9ICExO1xuICAgICAgICAgICAgZWxzZSBpZiAoUm9ibG94LlZpZGVvUHJlUm9sbC52aWRlb0NhbmNlbGxlZCkgbiA9IFwiQ2FuY2VsbGVkXCIsIFJvYmxveC5WaWRlb1ByZVJvbGwudmlkZW9Mb2dOb3RlID0gUm9ibG94TGF1bmNoLnN0YXRlO1xuICAgICAgICAgICAgZWxzZSBpZiAoUm9ibG94LlZpZGVvUHJlUm9sbC52aWRlb0luaXRpYWxpemVkID09ICExICYmIFJvYmxveC5WaWRlb1ByZVJvbGwudmlkZW9Mb2dOb3RlICE9IFwiXCIpIG4gPSBcIkZhaWxlZFwiLCBSb2Jsb3guVmlkZW9QcmVSb2xsLmxvZ3NFbmFibGVkID0gITE7XG4gICAgICAgICAgICBlbHNlIHJldHVybjtcbiAgICAgICAgICAgIEdvb2dsZUFuYWx5dGljc0V2ZW50cy5GaXJlRXZlbnQoW1wiUHJlUm9sbFwiLCBuLCBSb2Jsb3guVmlkZW9QcmVSb2xsLnZpZGVvTG9nTm90ZV0pXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGlzUGxheWluZzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSb2Jsb3guVmlkZW9QcmVSb2xsLnZpZGVvSW5pdGlhbGl6ZWQgPyAoUm9ibG94LlZpZGVvUHJlUm9sbC52aWRlb0luaXRpYWxpemVkICYmICFSb2Jsb3guVmlkZW9QcmVSb2xsLnZpZGVvU3RhcnRlZCAmJiBSb2Jsb3guVmlkZW9QcmVSb2xsLmxvYWRpbmdCYXJDdXJyZW50VGltZSA+IFJvYmxveC5WaWRlb1ByZVJvbGwudmlkZW9Mb2FkaW5nVGltZW91dCAmJiAoUm9ibG94LlZpZGVvUHJlUm9sbC52aWRlb0NvbXBsZXRlZCA9ICEwLCBSb2Jsb3guVmlkZW9QcmVSb2xsLnZpZGVvTG9nTm90ZSA9IFwiTG9hZGluZ1RpbWVvdXRcIiksIFJvYmxveC5WaWRlb1ByZVJvbGwudmlkZW9TdGFydGVkICYmICFSb2Jsb3guVmlkZW9QcmVSb2xsLnZpZGVvQ29tcGxldGVkICYmIFJvYmxveC5WaWRlb1ByZVJvbGwubG9hZGluZ0JhckN1cnJlbnRUaW1lID4gUm9ibG94LlZpZGVvUHJlUm9sbC52aWRlb1BsYXlpbmdUaW1lb3V0ICYmIChSb2Jsb3guVmlkZW9QcmVSb2xsLnZpZGVvQ29tcGxldGVkID0gITAsIFJvYmxveC5WaWRlb1ByZVJvbGwudmlkZW9Mb2dOb3RlID0gXCJQbGF5aW5nVGltZW91dFwiKSwgIVJvYmxveC5WaWRlb1ByZVJvbGwudmlkZW9Db21wbGV0ZWQpIDogITFcbiAgICB9LFxuICAgIGNvcnJlY3RJRU1vZGFsUG9zaXRpb246IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgaWYgKG4uY29udGFpbmVyLmlubmVySGVpZ2h0KCkgPD0gMzApIHtcbiAgICAgICAgICAgIHZhciBpID0gJChcIiN2aWRlb1ByZXJvbGxQYW5lbFwiKSxcbiAgICAgICAgICAgICAgICB0ID0gLU1hdGguZmxvb3IoaS5pbm5lckhlaWdodCgpIC8gMik7XG4gICAgICAgICAgICBpLmNzcyh7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgICAgICAgICAgICAgICB0b3A6IHQgKyBcInB4XCJcbiAgICAgICAgICAgIH0pLCBuLmNvbnRhaW5lci5maW5kKFwiLlZwckNsb3NlQnV0dG9uXCIpLmNzcyh7XG4gICAgICAgICAgICAgICAgdG9wOiB0IC0gMTAgKyBcInB4XCIsXG4gICAgICAgICAgICAgICAgXCJ6LWluZGV4XCI6IFwiMTAwM1wiXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgfSxcbiAgICB0ZXN0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgX3BvcHVwT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGVzY0Nsb3NlOiAhMCxcbiAgICAgICAgICAgIG9wYWNpdHk6IDgwLFxuICAgICAgICAgICAgb3ZlcmxheUNzczoge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvblNob3c6IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgICAgICAgICBSb2Jsb3guVmlkZW9QcmVSb2xsLmNvcnJlY3RJRU1vZGFsUG9zaXRpb24obiksIFJvYmxveC5WaWRlb1ByZVJvbGwuc3RhcnQoKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uQ2xvc2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIFJvYmxveC5WaWRlb1ByZVJvbGwuY2xvc2UoKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsb3NlSFRNTDogJzxhIGhyZWY9XCIjXCIgY2xhc3M9XCJJbWFnZUJ1dHRvbiBjbG9zZUJ0bkNpcmNsZV8zNWggQUJDbG9zZUNpcmNsZSBWcHJDbG9zZUJ1dHRvblwiPjwvYT4nXG4gICAgICAgIH0sICQoXCIjdmlkZW9QcmVyb2xsUGFuZWxcIikubW9kYWwoX3BvcHVwT3B0aW9ucyksIE1hZFN0YXR1cy5ydW5uaW5nIHx8IChNYWRTdGF0dXMuaW5pdCgkKFwiI3ZpZGVvUHJlcm9sbFBhbmVsXCIpLmZpbmQoXCIuTWFkU3RhdHVzRmllbGRcIiksICQoXCIjdmlkZW9QcmVyb2xsUGFuZWxcIikuZmluZChcIi5NYWRTdGF0dXNCYWNrQnVmZmVyXCIpLCAyZTMsIDgwMCksIE1hZFN0YXR1cy5zdGFydCgpKSwgJChcIiN2aWRlb1ByZXJvbGxQYW5lbFwiKS5maW5kKFwiLk1hZFN0YXR1c1N0YXJ0aW5nXCIpLmNzcyhcImRpc3BsYXlcIiwgXCJub25lXCIpLCAkKFwiI3ZpZGVvUHJlcm9sbFBhbmVsXCIpLmZpbmQoXCIuTWFkU3RhdHVzU3Bpbm5lclwiKS5jc3MoXCJ2aXNpYmlsaXR5XCIsIHN0YXR1cyA9PT0gMyB8fCBzdGF0dXMgPT09IDQgfHwgc3RhdHVzID09PSA1ID8gXCJoaWRkZW5cIiA6IFwidmlzaWJsZVwiKVxuICAgIH1cbn07XG52YXIgTG9hZGluZ0JhciA9IHtcbiAgICBiYXJzOiBbXSxcbiAgICBpbml0OiBmdW5jdGlvbihuLCB0LCBpLCByKSB7XG4gICAgICAgIHZhciB1ID0gdGhpcy5nZXQobik7XG4gICAgICAgIHUgPT0gbnVsbCAmJiAodSA9IHt9KSwgdS5iYXJJRCA9IG4sIHUuaW5uZXJCYXJJRCA9IHQsIHUucGVyY2VudGFnZUlEID0gaSwgdHlwZW9mIHIgPT0gXCJ1bmRlZmluZWRcIiAmJiAodS5wZXJjZW50Q29tcGxldGUgPSAwKSwgdGhpcy5iYXJzLnB1c2godSksIHRoaXMudXBkYXRlKG4sIHUucGVyY2VudENvbXBsZXRlKVxuICAgIH0sXG4gICAgZ2V0OiBmdW5jdGlvbihuKSB7XG4gICAgICAgIGZvciAodmFyIHQgPSAwOyB0IDwgdGhpcy5iYXJzLmxlbmd0aDsgdCsrKVxuICAgICAgICAgICAgaWYgKHRoaXMuYmFyc1t0XS5iYXJJRCA9PSBuKSByZXR1cm4gdGhpcy5iYXJzW3RdO1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgIH0sXG4gICAgZGlzcG9zZTogZnVuY3Rpb24obikge1xuICAgICAgICBmb3IgKHZhciB0ID0gMDsgdCA8IHRoaXMuYmFycy5sZW5ndGg7IHQrKykgdGhpcy5iYXJzW3RdLmJhcklEID09IG4gJiYgdGhpcy5iYXJzLnNwbGljZSh0LCAxKVxuICAgIH0sXG4gICAgdXBkYXRlOiBmdW5jdGlvbihuLCB0KSB7XG4gICAgICAgIHZhciBpID0gdGhpcy5nZXQobiksXG4gICAgICAgICAgICB1LCByO1xuICAgICAgICBpICYmICh0ID4gMSAmJiAodCA9IDEpLCB1ID0gJChcIiNcIiArIG4pLndpZHRoKCksIHIgPSBNYXRoLnJvdW5kKHUgKiB0KSwgJChcIiNcIiArIGkuaW5uZXJCYXJJRCkuYW5pbWF0ZSh7XG4gICAgICAgICAgICB3aWR0aDogclxuICAgICAgICB9LCAyMDAsIFwic3dpbmdcIiksIGkucGVyY2VudGFnZUlEICYmICQoXCIjXCIgKyBpLnBlcmNlbnRhZ2VJRCkubGVuZ3RoID4gMCAmJiAkKFwiI1wiICsgaS5wZXJjZW50YWdlSUQpLmh0bWwoTWF0aC5yb3VuZCh0ICogMTAwKSArIFwiJVwiKSwgaS5wZXJjZW50Q29tcGxldGUgPSB0KVxuICAgIH1cbn07XG4vLyBlbmQgcm9ibG94LmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/app.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./resources/sass/app.scss":
|
|
/*!*********************************!*\
|
|
!*** ./resources/sass/app.scss ***!
|
|
\*********************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvc2Fzcy9hcHAuc2Nzcz80NzVmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSIsImZpbGUiOiIuL3Jlc291cmNlcy9zYXNzL2FwcC5zY3NzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQge307Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/sass/app.scss\n");
|
|
|
|
/***/ })
|
|
|
|
/******/ });
|
|
/************************************************************************/
|
|
/******/ // The module cache
|
|
/******/ var __webpack_module_cache__ = {};
|
|
/******/
|
|
/******/ // The require function
|
|
/******/ function __webpack_require__(moduleId) {
|
|
/******/ // Check if module is in cache
|
|
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
|
/******/ if (cachedModule !== undefined) {
|
|
/******/ return cachedModule.exports;
|
|
/******/ }
|
|
/******/ // Create a new module (and put it into the cache)
|
|
/******/ var module = __webpack_module_cache__[moduleId] = {
|
|
/******/ // no module.id needed
|
|
/******/ // no module.loaded needed
|
|
/******/ exports: {}
|
|
/******/ };
|
|
/******/
|
|
/******/ // Execute the module function
|
|
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
|
/******/
|
|
/******/ // Return the exports of the module
|
|
/******/ return module.exports;
|
|
/******/ }
|
|
/******/
|
|
/******/ // expose the modules object (__webpack_modules__)
|
|
/******/ __webpack_require__.m = __webpack_modules__;
|
|
/******/
|
|
/************************************************************************/
|
|
/******/ /* webpack/runtime/chunk loaded */
|
|
/******/ (() => {
|
|
/******/ var deferred = [];
|
|
/******/ __webpack_require__.O = (result, chunkIds, fn, priority) => {
|
|
/******/ if(chunkIds) {
|
|
/******/ priority = priority || 0;
|
|
/******/ for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
|
|
/******/ deferred[i] = [chunkIds, fn, priority];
|
|
/******/ return;
|
|
/******/ }
|
|
/******/ var notFulfilled = Infinity;
|
|
/******/ for (var i = 0; i < deferred.length; i++) {
|
|
/******/ var [chunkIds, fn, priority] = deferred[i];
|
|
/******/ var fulfilled = true;
|
|
/******/ for (var j = 0; j < chunkIds.length; j++) {
|
|
/******/ if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {
|
|
/******/ chunkIds.splice(j--, 1);
|
|
/******/ } else {
|
|
/******/ fulfilled = false;
|
|
/******/ if(priority < notFulfilled) notFulfilled = priority;
|
|
/******/ }
|
|
/******/ }
|
|
/******/ if(fulfilled) {
|
|
/******/ deferred.splice(i--, 1)
|
|
/******/ result = fn();
|
|
/******/ }
|
|
/******/ }
|
|
/******/ return result;
|
|
/******/ };
|
|
/******/ })();
|
|
/******/
|
|
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
/******/ (() => {
|
|
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
|
/******/ })();
|
|
/******/
|
|
/******/ /* webpack/runtime/make namespace object */
|
|
/******/ (() => {
|
|
/******/ // define __esModule on exports
|
|
/******/ __webpack_require__.r = (exports) => {
|
|
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
/******/ }
|
|
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
/******/ };
|
|
/******/ })();
|
|
/******/
|
|
/******/ /* webpack/runtime/jsonp chunk loading */
|
|
/******/ (() => {
|
|
/******/ // no baseURI
|
|
/******/
|
|
/******/ // object to store loaded and loading chunks
|
|
/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
|
|
/******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded
|
|
/******/ var installedChunks = {
|
|
/******/ "/js/app": 0,
|
|
/******/ "css/app": 0
|
|
/******/ };
|
|
/******/
|
|
/******/ // no chunk on demand loading
|
|
/******/
|
|
/******/ // no prefetching
|
|
/******/
|
|
/******/ // no preloaded
|
|
/******/
|
|
/******/ // no HMR
|
|
/******/
|
|
/******/ // no HMR manifest
|
|
/******/
|
|
/******/ __webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);
|
|
/******/
|
|
/******/ // install a JSONP callback for chunk loading
|
|
/******/ var webpackJsonpCallback = (parentChunkLoadingFunction, data) => {
|
|
/******/ var [chunkIds, moreModules, runtime] = data;
|
|
/******/ // add "moreModules" to the modules object,
|
|
/******/ // then flag all "chunkIds" as loaded and fire callback
|
|
/******/ var moduleId, chunkId, i = 0;
|
|
/******/ for(moduleId in moreModules) {
|
|
/******/ if(__webpack_require__.o(moreModules, moduleId)) {
|
|
/******/ __webpack_require__.m[moduleId] = moreModules[moduleId];
|
|
/******/ }
|
|
/******/ }
|
|
/******/ if(runtime) var result = runtime(__webpack_require__);
|
|
/******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data);
|
|
/******/ for(;i < chunkIds.length; i++) {
|
|
/******/ chunkId = chunkIds[i];
|
|
/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
|
|
/******/ installedChunks[chunkId][0]();
|
|
/******/ }
|
|
/******/ installedChunks[chunkIds[i]] = 0;
|
|
/******/ }
|
|
/******/ return __webpack_require__.O(result);
|
|
/******/ }
|
|
/******/
|
|
/******/ var chunkLoadingGlobal = self["webpackChunk"] = self["webpackChunk"] || [];
|
|
/******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
|
|
/******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
|
|
/******/ })();
|
|
/******/
|
|
/************************************************************************/
|
|
/******/
|
|
/******/ // startup
|
|
/******/ // Load entry module and return exports
|
|
/******/ // This entry module depends on other loaded chunks and execution need to be delayed
|
|
/******/ __webpack_require__.O(undefined, ["css/app"], () => (__webpack_require__("./resources/js/app.js")))
|
|
/******/ var __webpack_exports__ = __webpack_require__.O(undefined, ["css/app"], () => (__webpack_require__("./resources/sass/app.scss")))
|
|
/******/ __webpack_exports__ = __webpack_require__.O(__webpack_exports__);
|
|
/******/
|
|
/******/ })()
|
|
; |