Files
speckle-server/scratch/edge-debug-selection/Default/Cache/Cache_Data/f_00012e
T

217 lines
17 KiB
Plaintext

import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/form/select/ServerRoles.vue");import { FormSelectBase as __nuxt_component_0 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js";
/* Injection by vite-plugin-vue-inspector Start */
import { createElementBlock as __createElementBlock,createElementVNode as __createElementVNode,createBlock as __createBlock } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"
function _interopVNode(vnode) {
if (vnode && vnode.props && 'data-v-inspector' in vnode.props) {
const data = vnode.props['data-v-inspector']
delete vnode.props['data-v-inspector']
Object.defineProperty(vnode.props, '__v_inspector', { value: data, enumerable: false })
}
return vnode
}
function _createElementBlock(...args) { return _interopVNode(__createElementBlock(...args)) }
function _createElementVNode(...args) { return _interopVNode(__createElementVNode(...args)) }
function _createBlock(...args) { return _interopVNode(__createBlock(...args)) }
/* Injection by vite-plugin-vue-inspector End */
import { defineComponent as _defineComponent } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
import { Roles, RoleInfo } from "/_nuxt/@fs/D:/speckle-server/packages/shared/dist/esm/index.js";
import { useFormSelectChildInternals } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js";
import { ref, useId, toRefs, computed } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
const _sfc_main = /* @__PURE__ */ _defineComponent({
__name: "FormSelectServerRoles",
props: {
multiple: Boolean,
modelValue: {
type: [String, Array],
default: void 0
},
allowGuest: Boolean,
allowAdmin: Boolean,
allowArchived: Boolean,
fullyControlValue: Boolean,
showLabel: Boolean,
name: String
},
emits: ["update:modelValue"],
setup(__props, { expose: __expose, emit: __emit }) {
__expose();
const emit = __emit;
const props = __props;
const elementToWatchForChanges = ref(null);
const itemContainer = ref(null);
const labelId = useId();
const buttonId = useId();
const { selectedValue, isMultiItemArrayValue, hiddenSelectedItemCount, firstItem } = useFormSelectChildInternals({
props: toRefs(props),
emit,
dynamicVisibility: { elementToWatchForChanges, itemContainer }
});
const roles = computed(
() => Object.values(Roles.Server).filter((r) => {
if (r === Roles.Server.Admin) return props.allowAdmin;
if (r === Roles.Server.ArchivedUser) return props.allowArchived;
return true;
})
);
const disabledItemPredicate = (item) => {
if (item === Roles.Server.Guest) return !props.allowGuest;
return false;
};
const __returned__ = { emit, props, elementToWatchForChanges, itemContainer, labelId, buttonId, selectedValue, isMultiItemArrayValue, hiddenSelectedItemCount, firstItem, roles, disabledItemPredicate, get RoleInfo() {
return RoleInfo;
} };
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
return __returned__;
}
});
import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29";
const _hoisted_1 = {
key: 0,
ref: "elementToWatchForChanges",
class: "flex items-center space-x-0.5",
"data-v-inspector": "components/form/select/ServerRoles.vue:24:9"
};
const _hoisted_2 = {
ref: "itemContainer",
class: "flex flex-wrap overflow-hidden space-x-0.5 h-6",
"data-v-inspector": "components/form/select/ServerRoles.vue:25:11"
};
const _hoisted_3 = {
key: 0,
class: "text-foreground-2 normal",
"data-v-inspector": "components/form/select/ServerRoles.vue:33:11"
};
const _hoisted_4 = {
key: 1,
class: "truncate text-foreground",
"data-v-inspector": "components/form/select/ServerRoles.vue:39:9"
};
const _hoisted_5 = {
class: "flex flex-col space-y-0.5",
"data-v-inspector": "components/form/select/ServerRoles.vue:45:7"
};
const _hoisted_6 = {
class: "truncate font-medium",
"data-v-inspector": "components/form/select/ServerRoles.vue:46:9"
};
const _hoisted_7 = {
class: "text-body-2xs text-foreground-2",
"data-v-inspector": "components/form/select/ServerRoles.vue:49:9"
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_FormSelectBase = __nuxt_component_0;
return _openBlock(), _createBlock(_component_FormSelectBase, {
modelValue: $setup.selectedValue,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $setup.selectedValue = $event),
items: $setup.roles,
multiple: $props.multiple,
"disabled-item-predicate": $setup.disabledItemPredicate,
"disabled-item-tooltip": !$props.allowGuest ? "The Guest role isn't enabled on the server" : "",
name: $props.name ?? "serverRoles",
label: "Role",
"show-label": $props.showLabel,
class: "min-w-[110px]",
"fully-control-value": $props.fullyControlValue,
"label-id": $setup.labelId,
"button-id": $setup.buttonId,
"mount-menu-on-body": "",
"data-v-inspector": "components/form/select/ServerRoles.vue:2:3"
}, {
"nothing-selected": _withCtx(() => [
_createTextVNode(
_toDisplayString($props.multiple ? "Select roles" : "Select role"),
1
/* TEXT */
)
]),
"something-selected": _withCtx(({ value }) => [
$setup.isMultiItemArrayValue(value) ? (_openBlock(), _createElementBlock(
"div",
_hoisted_1,
[
_createElementVNode(
"div",
_hoisted_2,
[
(_openBlock(true), _createElementBlock(
_Fragment,
null,
_renderList(value, (item, i) => {
return _openBlock(), _createElementBlock(
"div",
{
key: item,
class: "text-foreground",
"data-v-inspector": "components/form/select/ServerRoles.vue:29:13"
},
_toDisplayString($setup.RoleInfo.Server[item].title + (i < value.length - 1 ? ", " : "")),
1
/* TEXT */
);
}),
128
/* KEYED_FRAGMENT */
))
],
512
/* NEED_PATCH */
),
$setup.hiddenSelectedItemCount > 0 ? (_openBlock(), _createElementBlock(
"div",
_hoisted_3,
" +" + _toDisplayString($setup.hiddenSelectedItemCount),
1
/* TEXT */
)) : _createCommentVNode("v-if", true)
],
512
/* NEED_PATCH */
)) : (_openBlock(), _createElementBlock(
"div",
_hoisted_4,
_toDisplayString($setup.RoleInfo.Server[$setup.firstItem(value)].title),
1
/* TEXT */
))
]),
option: _withCtx(({ item }) => [
_createElementVNode("div", _hoisted_5, [
_createElementVNode(
"span",
_hoisted_6,
_toDisplayString($setup.RoleInfo.Server[$setup.firstItem(item)].title),
1
/* TEXT */
),
_createElementVNode(
"span",
_hoisted_7,
_toDisplayString($setup.RoleInfo.Server[$setup.firstItem(item)].description),
1
/* TEXT */
)
])
]),
_: 1
/* STABLE */
}, 8, ["modelValue", "items", "multiple", "disabled-item-tooltip", "name", "show-label", "fully-control-value", "label-id", "button-id"]);
}
_sfc_main.__hmrId = "fb15e9ac";
typeof __VUE_HMR_RUNTIME__ !== "undefined" && __VUE_HMR_RUNTIME__.createRecord(_sfc_main.__hmrId, _sfc_main);
import.meta.hot.on("file-changed", ({ file }) => {
__VUE_HMR_RUNTIME__.CHANGED_FILE = file;
});
import.meta.hot.accept((mod) => {
if (!mod) return;
const { default: updated, _rerender_only } = mod;
if (_rerender_only) {
__VUE_HMR_RUNTIME__.rerender(updated.__hmrId, updated.render);
} else {
__VUE_HMR_RUNTIME__.reload(updated.__hmrId, updated);
}
});
import _export_sfc from "/_nuxt/@id/__x00__plugin-vue:export-helper";
export default /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__file", "D:/speckle-server/packages/frontend-2/components/form/select/ServerRoles.vue"]]);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQXdEQSxTQUFTLE9BQU8sZ0JBQWdCO0FBRWhDLFNBQVMsbUNBQW1DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLNUMsVUFBTSxPQUFPO0FBSWIsVUFBTSxRQUFRO0FBY2QsVUFBTSwyQkFBMkIsSUFBSSxJQUE2QjtBQUNsRSxVQUFNLGdCQUFnQixJQUFJLElBQTZCO0FBQ3ZELFVBQU0sVUFBVSxNQUFNO0FBQ3RCLFVBQU0sV0FBVyxNQUFNO0FBRXZCLFVBQU0sRUFBRSxlQUFlLHVCQUF1Qix5QkFBeUIsVUFBVSxJQUMvRSw0QkFBeUM7QUFBQSxNQUN2QyxPQUFPLE9BQU8sS0FBSztBQUFBLE1BQ25CO0FBQUEsTUFDQSxtQkFBbUIsRUFBRSwwQkFBMEIsY0FBYztBQUFBLElBQy9ELENBQUM7QUFFSCxVQUFNLFFBQVE7QUFBQSxNQUFTLE1BQ3JCLE9BQU8sT0FBTyxNQUFNLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtBQUN4QyxZQUFJLE1BQU0sTUFBTSxPQUFPLE1BQU8sUUFBTyxNQUFNO0FBQzNDLFlBQUksTUFBTSxNQUFNLE9BQU8sYUFBYyxRQUFPLE1BQU07QUFDbEQsZUFBTztBQUFBLE1BQ1QsQ0FBQztBQUFBLElBQ0g7QUFFQSxVQUFNLHdCQUF3QixDQUFDLFNBQXNCO0FBQ25ELFVBQUksU0FBUyxNQUFNLE9BQU8sTUFBTyxRQUFPLENBQUMsTUFBTTtBQUMvQyxhQUFPO0FBQUEsSUFDVDs7Ozs7Ozs7Ozs7RUFqRmEsS0FBSTtBQUFBLEVBQTJCLE9BQU07QUFBQSxFQUFnQyxvQkFBaUI7OztFQUV2RixLQUFJO0FBQUEsRUFDSixPQUFNO0FBQUEsRUFBaUQsb0JBQWlCOzs7O0VBTWxDLE9BQU07QUFBQSxFQUEyQixvQkFBaUI7Ozs7RUFNdkYsT0FBTTtBQUFBLEVBQTJCLG9CQUFpQjs7O0VBTXBELE9BQU07QUFBQSxFQUE0QixvQkFBaUI7OztFQUNoRCxPQUFNO0FBQUEsRUFBdUIsb0JBQWlCOzs7RUFHOUMsT0FBTTtBQUFBLEVBQWtDLG9CQUFpQjs7Ozt1QkEvQ3JFLGFBb0RpQjtBQUFBLGdCQW5ETjtBQUFBLHdGQUFhO0FBQUEsSUFDckIsT0FBTztBQUFBLElBQ1AsVUFBVTtBQUFBLElBQ1YsMkJBQXlCO0FBQUEsSUFDekIsMEJBQWdDLG9CQUFVO0FBQUEsSUFHMUMsTUFBTSxlQUFJO0FBQUEsSUFDWCxPQUFNO0FBQUEsSUFDTCxjQUFZO0FBQUEsSUFDYixPQUFNO0FBQUEsSUFDTCx1QkFBcUI7QUFBQSxJQUNyQixZQUFVO0FBQUEsSUFDVixhQUFXO0FBQUEsSUFDWjtBQUFBLElBQW1CLG9CQUFpQjtBQUFBO0lBRXpCLG9CQUFnQixTQUN6QixNQUErQztBQUFBO3lCQUE1QyxrQkFBUTtBQUFBO0FBQUE7QUFBQTtBQUFBO0lBRUYsc0JBQWtCLFNBRW5CLENBdUJSLEVBekIrQixNQUFLO0FBQUEsTUFDcEIsNkJBQXNCLEtBQUssbUJBQ3pDO0FBQUEsUUFZTTtBQUFBLFFBWk47QUFBQSxRQVlNO0FBQUEsVUFYSjtBQUFBLFlBT007QUFBQSxZQVBOO0FBQUEsWUFPTTtBQUFBLGlDQUhKO0FBQUEsZ0JBRU07QUFBQTtBQUFBLDRCQUZtQixPQUFLLENBQWpCLE1BQU0sTUFBQzt1Q0FBcEI7QUFBQSxvQkFFTTtBQUFBO0FBQUEsc0JBRjJCLEtBQUs7QUFBQSxzQkFBTSxPQUFNO0FBQUEsc0JBQWtCLG9CQUFpQjtBQUFBO3FDQUNoRixnQkFBUyxPQUFPLElBQUksRUFBRSxTQUFTLElBQUksTUFBTSxTQUFNO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7O1VBRzNDLGlDQUF1QixtQkFBbEM7QUFBQSxZQUVNO0FBQUEsWUFGTjtBQUFBLFlBQXlJLE9BQ3RJLGlCQUFHLDhCQUF1QjtBQUFBO0FBQUE7QUFBQTs7OzswQkFLL0I7QUFBQSxRQUVNO0FBQUEsUUFGTjtBQUFBLFFBRU0saUJBREQsZ0JBQVMsT0FBTyxpQkFBVSxLQUFLLEdBQUcsS0FBSztBQUFBO0FBQUE7QUFBQTtBQUFBO0lBSXJDLFFBQU0sU0FDZixDQU9NLEVBUmEsS0FBSTtBQUFBLE1BQ3ZCLG9CQU9NLE9BUE4sWUFPTTtBQUFBLFFBTko7QUFBQSxVQUVPO0FBQUEsVUFGUDtBQUFBLFVBRU8saUJBREYsZ0JBQVMsT0FBTyxpQkFBVSxJQUFJLEdBQUcsS0FBSztBQUFBO0FBQUE7QUFBQTtBQUFBLFFBRTNDO0FBQUEsVUFFTztBQUFBLFVBRlA7QUFBQSxVQUVPLGlCQURGLGdCQUFTLE9BQU8saUJBQVUsSUFBSSxHQUFHLFdBQVc7QUFBQTtBQUFBO0FBQUE7QUFBQSIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOlsiU2VydmVyUm9sZXMudnVlIl0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuICA8Rm9ybVNlbGVjdEJhc2VcclxuICAgIHYtbW9kZWw9XCJzZWxlY3RlZFZhbHVlXCJcclxuICAgIDppdGVtcz1cInJvbGVzXCJcclxuICAgIDptdWx0aXBsZT1cIm11bHRpcGxlXCJcclxuICAgIDpkaXNhYmxlZC1pdGVtLXByZWRpY2F0ZT1cImRpc2FibGVkSXRlbVByZWRpY2F0ZVwiXHJcbiAgICA6ZGlzYWJsZWQtaXRlbS10b29sdGlwPVwiXHJcbiAgICAgICFhbGxvd0d1ZXN0ID8gJ1RoZSBHdWVzdCByb2xlIGlzblxcJ3QgZW5hYmxlZCBvbiB0aGUgc2VydmVyJyA6ICcnXHJcbiAgICBcIlxyXG4gICAgOm5hbWU9XCJuYW1lID8/ICdzZXJ2ZXJSb2xlcydcIlxyXG4gICAgbGFiZWw9XCJSb2xlXCJcclxuICAgIDpzaG93LWxhYmVsPVwic2hvd0xhYmVsXCJcclxuICAgIGNsYXNzPVwibWluLXctWzExMHB4XVwiXHJcbiAgICA6ZnVsbHktY29udHJvbC12YWx1ZT1cImZ1bGx5Q29udHJvbFZhbHVlXCJcclxuICAgIDpsYWJlbC1pZD1cImxhYmVsSWRcIlxyXG4gICAgOmJ1dHRvbi1pZD1cImJ1dHRvbklkXCJcclxuICAgIG1vdW50LW1lbnUtb24tYm9keSBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9mb3JtL3NlbGVjdC9TZXJ2ZXJSb2xlcy52dWU6MjozXCJcclxuICA+XHJcbiAgICA8dGVtcGxhdGUgI25vdGhpbmctc2VsZWN0ZWQ+XHJcbiAgICAgIHt7IG11bHRpcGxlID8gJ1NlbGVjdCByb2xlcycgOiAnU2VsZWN0IHJvbGUnIH19XHJcbiAgICA8L3RlbXBsYXRlPlxyXG4gICAgPHRlbXBsYXRlICNzb21ldGhpbmctc2VsZWN0ZWQ9XCJ7IHZhbHVlIH1cIj5cclxuICAgICAgPHRlbXBsYXRlIHYtaWY9XCJpc011bHRpSXRlbUFycmF5VmFsdWUodmFsdWUpXCI+XHJcbiAgICAgICAgPGRpdiByZWY9XCJlbGVtZW50VG9XYXRjaEZvckNoYW5nZXNcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMC41XCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvZm9ybS9zZWxlY3QvU2VydmVyUm9sZXMudnVlOjI0OjlcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgcmVmPVwiaXRlbUNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgb3ZlcmZsb3ctaGlkZGVuIHNwYWNlLXgtMC41IGgtNlwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL2Zvcm0vc2VsZWN0L1NlcnZlclJvbGVzLnZ1ZToyNToxMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgdi1mb3I9XCIoaXRlbSwgaSkgaW4gdmFsdWVcIiA6a2V5PVwiaXRlbVwiIGNsYXNzPVwidGV4dC1mb3JlZ3JvdW5kXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvZm9ybS9zZWxlY3QvU2VydmVyUm9sZXMudnVlOjI5OjEzXCI+XHJcbiAgICAgICAgICAgICAge3sgUm9sZUluZm8uU2VydmVyW2l0ZW1dLnRpdGxlICsgKGkgPCB2YWx1ZS5sZW5ndGggLSAxID8gJywgJyA6ICcnKSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiB2LWlmPVwiaGlkZGVuU2VsZWN0ZWRJdGVtQ291bnQgPiAwXCIgY2xhc3M9XCJ0ZXh0LWZvcmVncm91bmQtMiBub3JtYWxcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9mb3JtL3NlbGVjdC9TZXJ2ZXJSb2xlcy52dWU6MzM6MTFcIj5cclxuICAgICAgICAgICAgK3t7IGhpZGRlblNlbGVjdGVkSXRlbUNvdW50IH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgPHRlbXBsYXRlIHYtZWxzZT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidHJ1bmNhdGUgdGV4dC1mb3JlZ3JvdW5kXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvZm9ybS9zZWxlY3QvU2VydmVyUm9sZXMudnVlOjM5OjlcIj5cclxuICAgICAgICAgIHt7IFJvbGVJbmZvLlNlcnZlcltmaXJzdEl0ZW0odmFsdWUpXS50aXRsZSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L3RlbXBsYXRlPlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuICAgIDx0ZW1wbGF0ZSAjb3B0aW9uPVwieyBpdGVtIH1cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgc3BhY2UteS0wLjVcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9mb3JtL3NlbGVjdC9TZXJ2ZXJSb2xlcy52dWU6NDU6N1wiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidHJ1bmNhdGUgZm9udC1tZWRpdW1cIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9mb3JtL3NlbGVjdC9TZXJ2ZXJSb2xlcy52dWU6NDY6OVwiPlxyXG4gICAgICAgICAge3sgUm9sZUluZm8uU2VydmVyW2ZpcnN0SXRlbShpdGVtKV0udGl0bGUgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWJvZHktMnhzIHRleHQtZm9yZWdyb3VuZC0yXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvZm9ybS9zZWxlY3QvU2VydmVyUm9sZXMudnVlOjQ5OjlcIj5cclxuICAgICAgICAgIHt7IFJvbGVJbmZvLlNlcnZlcltmaXJzdEl0ZW0oaXRlbSldLmRlc2NyaXB0aW9uIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvdGVtcGxhdGU+XHJcbiAgPC9Gb3JtU2VsZWN0QmFzZT5cclxuPC90ZW1wbGF0ZT5cclxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHsgUm9sZXMsIFJvbGVJbmZvIH0gZnJvbSAnQHNwZWNrbGUvc2hhcmVkJ1xyXG5pbXBvcnQgdHlwZSB7IE51bGxhYmxlLCBTZXJ2ZXJSb2xlcyB9IGZyb20gJ0BzcGVja2xlL3NoYXJlZCdcclxuaW1wb3J0IHsgdXNlRm9ybVNlbGVjdENoaWxkSW50ZXJuYWxzIH0gZnJvbSAnQHNwZWNrbGUvdWktY29tcG9uZW50cydcclxuaW1wb3J0IHR5cGUgeyBQcm9wVHlwZSB9IGZyb20gJ3Z1ZSdcclxuXHJcbnR5cGUgVmFsdWVUeXBlID0gU2VydmVyUm9sZXMgfCBTZXJ2ZXJSb2xlc1tdIHwgdW5kZWZpbmVkXHJcblxyXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xyXG4gIChlOiAndXBkYXRlOm1vZGVsVmFsdWUnLCB2OiBWYWx1ZVR5cGUpOiB2b2lkXHJcbn0+KClcclxuXHJcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xyXG4gIG11bHRpcGxlOiBCb29sZWFuLFxyXG4gIG1vZGVsVmFsdWU6IHtcclxuICAgIHR5cGU6IFtTdHJpbmcsIEFycmF5XSBhcyBQcm9wVHlwZTxWYWx1ZVR5cGU+LFxyXG4gICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgfSxcclxuICBhbGxvd0d1ZXN0OiBCb29sZWFuLFxyXG4gIGFsbG93QWRtaW46IEJvb2xlYW4sXHJcbiAgYWxsb3dBcmNoaXZlZDogQm9vbGVhbixcclxuICBmdWxseUNvbnRyb2xWYWx1ZTogQm9vbGVhbixcclxuICBzaG93TGFiZWw6IEJvb2xlYW4sXHJcbiAgbmFtZTogU3RyaW5nXHJcbn0pXHJcblxyXG5jb25zdCBlbGVtZW50VG9XYXRjaEZvckNoYW5nZXMgPSByZWYobnVsbCBhcyBOdWxsYWJsZTxIVE1MRWxlbWVudD4pXHJcbmNvbnN0IGl0ZW1Db250YWluZXIgPSByZWYobnVsbCBhcyBOdWxsYWJsZTxIVE1MRWxlbWVudD4pXHJcbmNvbnN0IGxhYmVsSWQgPSB1c2VJZCgpXHJcbmNvbnN0IGJ1dHRvbklkID0gdXNlSWQoKVxyXG5cclxuY29uc3QgeyBzZWxlY3RlZFZhbHVlLCBpc011bHRpSXRlbUFycmF5VmFsdWUsIGhpZGRlblNlbGVjdGVkSXRlbUNvdW50LCBmaXJzdEl0ZW0gfSA9XHJcbiAgdXNlRm9ybVNlbGVjdENoaWxkSW50ZXJuYWxzPFNlcnZlclJvbGVzPih7XHJcbiAgICBwcm9wczogdG9SZWZzKHByb3BzKSxcclxuICAgIGVtaXQsXHJcbiAgICBkeW5hbWljVmlzaWJpbGl0eTogeyBlbGVtZW50VG9XYXRjaEZvckNoYW5nZXMsIGl0ZW1Db250YWluZXIgfVxyXG4gIH0pXHJcblxyXG5jb25zdCByb2xlcyA9IGNvbXB1dGVkKCgpID0+XHJcbiAgT2JqZWN0LnZhbHVlcyhSb2xlcy5TZXJ2ZXIpLmZpbHRlcigocikgPT4ge1xyXG4gICAgaWYgKHIgPT09IFJvbGVzLlNlcnZlci5BZG1pbikgcmV0dXJuIHByb3BzLmFsbG93QWRtaW5cclxuICAgIGlmIChyID09PSBSb2xlcy5TZXJ2ZXIuQXJjaGl2ZWRVc2VyKSByZXR1cm4gcHJvcHMuYWxsb3dBcmNoaXZlZFxyXG4gICAgcmV0dXJuIHRydWVcclxuICB9KVxyXG4pXHJcblxyXG5jb25zdCBkaXNhYmxlZEl0ZW1QcmVkaWNhdGUgPSAoaXRlbTogU2VydmVyUm9sZXMpID0+IHtcclxuICBpZiAoaXRlbSA9PT0gUm9sZXMuU2VydmVyLkd1ZXN0KSByZXR1cm4gIXByb3BzLmFsbG93R3Vlc3RcclxuICByZXR1cm4gZmFsc2VcclxufVxyXG48L3NjcmlwdD5cclxuIl0sImZpbGUiOiJEOi9zcGVja2xlLXNlcnZlci9wYWNrYWdlcy9mcm9udGVuZC0yL2NvbXBvbmVudHMvZm9ybS9zZWxlY3QvU2VydmVyUm9sZXMudnVlIn0=