217 lines
17 KiB
Plaintext
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,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STtBQUFBLE1BQ3ZCLG9CQU9NLE9BUE4sWUFPTTtBQUFBLFFBTko7QUFBQSxVQUVPO0FBQUEsVUFGUDtBQUFBLFVBRU8saUJBREYsZ0JBQVMsT0FBTyxpQkFBVSxJQUFJLEdBQUcsS0FBSztBQUFBO0FBQUE7QUFBQTtBQUFBLFFBRTNDO0FBQUEsVUFFTztBQUFBLFVBRlA7QUFBQSxVQUVPLGlCQURGLGdCQUFTLE9BQU8saUJBQVUsSUFBSSxHQUFHLFdBQVc7QUFBQTtBQUFBO0FBQUE7QUFBQSIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOlsiU2VydmVyUm9sZXMudnVlIl0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuICA8Rm9ybVNlbGVjdEJhc2VcclxuICAgIHYtbW9kZWw9XCJzZWxlY3RlZFZhbHVlXCJcclxuICAgIDppdGVtcz1cInJvbGVzXCJcclxuICAgIDptdWx0aXBsZT1cIm11bHRpcGxlXCJcclxuICAgIDpkaXNhYmxlZC1pdGVtLXByZWRpY2F0ZT1cImRpc2FibGVkSXRlbVByZWRpY2F0ZVwiXHJcbiAgICA6ZGlzYWJsZWQtaXRlbS10b29sdGlwPVwiXHJcbiAgICAgICFhbGxvd0d1ZXN0ID8gJ1RoZSBHdWVzdCByb2xlIGlzblxcJ3QgZW5hYmxlZCBvbiB0aGUgc2VydmVyJyA6ICcnXHJcbiAgICBcIlxyXG4gICAgOm5hbWU9XCJuYW1lID8/ICdzZXJ2ZXJSb2xlcydcIlxyXG4gICAgbGFiZWw9XCJSb2xlXCJcclxuICAgIDpzaG93LWxhYmVsPVwic2hvd0xhYmVsXCJcclxuICAgIGNsYXNzPVwibWluLXctWzExMHB4XVwiXHJcbiAgICA6ZnVsbHktY29udHJvbC12YWx1ZT1cImZ1bGx5Q29udHJvbFZhbHVlXCJcclxuICAgIDpsYWJlbC1pZD1cImxhYmVsSWRcIlxyXG4gICAgOmJ1dHRvbi1pZD1cImJ1dHRvbklkXCJcclxuICAgIG1vdW50LW1lbnUtb24tYm9keSBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9mb3JtL3NlbGVjdC9TZXJ2ZXJSb2xlcy52dWU6MjozXCJcclxuICA+XHJcbiAgICA8dGVtcGxhdGUgI25vdGhpbmctc2VsZWN0ZWQ+XHJcbiAgICAgIHt7IG11bHRpcGxlID8gJ1NlbGVjdCByb2xlcycgOiAnU2VsZWN0IHJvbGUnIH19XHJcbiAgICA8L3RlbXBsYXRlPlxyXG4gICAgPHRlbXBsYXRlICNzb21ldGhpbmctc2VsZWN0ZWQ9XCJ7IHZhbHVlIH1cIj5cclxuICAgICAgPHRlbXBsYXRlIHYtaWY9XCJpc011bHRpSXRlbUFycmF5VmFsdWUodmFsdWUpXCI+XHJcbiAgICAgICAgPGRpdiByZWY9XCJlbGVtZW50VG9XYXRjaEZvckNoYW5nZXNcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMC41XCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvZm9ybS9zZWxlY3QvU2VydmVyUm9sZXMudnVlOjI0OjlcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgcmVmPVwiaXRlbUNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgb3ZlcmZsb3ctaGlkZGVuIHNwYWNlLXgtMC41IGgtNlwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL2Zvcm0vc2VsZWN0L1NlcnZlclJvbGVzLnZ1ZToyNToxMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgdi1mb3I9XCIoaXRlbSwgaSkgaW4gdmFsdWVcIiA6a2V5PVwiaXRlbVwiIGNsYXNzPVwidGV4dC1mb3JlZ3JvdW5kXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvZm9ybS9zZWxlY3QvU2VydmVyUm9sZXMudnVlOjI5OjEzXCI+XHJcbiAgICAgICAgICAgICAge3sgUm9sZUluZm8uU2VydmVyW2l0ZW1dLnRpdGxlICsgKGkgPCB2YWx1ZS5sZW5ndGggLSAxID8gJywgJyA6ICcnKSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiB2LWlmPVwiaGlkZGVuU2VsZWN0ZWRJdGVtQ291bnQgPiAwXCIgY2xhc3M9XCJ0ZXh0LWZvcmVncm91bmQtMiBub3JtYWxcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9mb3JtL3NlbGVjdC9TZXJ2ZXJSb2xlcy52dWU6MzM6MTFcIj5cclxuICAgICAgICAgICAgK3t7IGhpZGRlblNlbGVjdGVkSXRlbUNvdW50IH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgPHRlbXBsYXRlIHYtZWxzZT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidHJ1bmNhdGUgdGV4dC1mb3JlZ3JvdW5kXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvZm9ybS9zZWxlY3QvU2VydmVyUm9sZXMudnVlOjM5OjlcIj5cclxuICAgICAgICAgIHt7IFJvbGVJbmZvLlNlcnZlcltmaXJzdEl0ZW0odmFsdWUpXS50aXRsZSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L3RlbXBsYXRlPlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuICAgIDx0ZW1wbGF0ZSAjb3B0aW9uPVwieyBpdGVtIH1cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgc3BhY2UteS0wLjVcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9mb3JtL3NlbGVjdC9TZXJ2ZXJSb2xlcy52dWU6NDU6N1wiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidHJ1bmNhdGUgZm9udC1tZWRpdW1cIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9mb3JtL3NlbGVjdC9TZXJ2ZXJSb2xlcy52dWU6NDY6OVwiPlxyXG4gICAgICAgICAge3sgUm9sZUluZm8uU2VydmVyW2ZpcnN0SXRlbShpdGVtKV0udGl0bGUgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWJvZHktMnhzIHRleHQtZm9yZWdyb3VuZC0yXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvZm9ybS9zZWxlY3QvU2VydmVyUm9sZXMudnVlOjQ5OjlcIj5cclxuICAgICAgICAgIHt7IFJvbGVJbmZvLlNlcnZlcltmaXJzdEl0ZW0oaXRlbSldLmRlc2NyaXB0aW9uIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvdGVtcGxhdGU+XHJcbiAgPC9Gb3JtU2VsZWN0QmFzZT5cclxuPC90ZW1wbGF0ZT5cclxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHsgUm9sZXMsIFJvbGVJbmZvIH0gZnJvbSAnQHNwZWNrbGUvc2hhcmVkJ1xyXG5pbXBvcnQgdHlwZSB7IE51bGxhYmxlLCBTZXJ2ZXJSb2xlcyB9IGZyb20gJ0BzcGVja2xlL3NoYXJlZCdcclxuaW1wb3J0IHsgdXNlRm9ybVNlbGVjdENoaWxkSW50ZXJuYWxzIH0gZnJvbSAnQHNwZWNrbGUvdWktY29tcG9uZW50cydcclxuaW1wb3J0IHR5cGUgeyBQcm9wVHlwZSB9IGZyb20gJ3Z1ZSdcclxuXHJcbnR5cGUgVmFsdWVUeXBlID0gU2VydmVyUm9sZXMgfCBTZXJ2ZXJSb2xlc1tdIHwgdW5kZWZpbmVkXHJcblxyXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xyXG4gIChlOiAndXBkYXRlOm1vZGVsVmFsdWUnLCB2OiBWYWx1ZVR5cGUpOiB2b2lkXHJcbn0+KClcclxuXHJcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xyXG4gIG11bHRpcGxlOiBCb29sZWFuLFxyXG4gIG1vZGVsVmFsdWU6IHtcclxuICAgIHR5cGU6IFtTdHJpbmcsIEFycmF5XSBhcyBQcm9wVHlwZTxWYWx1ZVR5cGU+LFxyXG4gICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgfSxcclxuICBhbGxvd0d1ZXN0OiBCb29sZWFuLFxyXG4gIGFsbG93QWRtaW46IEJvb2xlYW4sXHJcbiAgYWxsb3dBcmNoaXZlZDogQm9vbGVhbixcclxuICBmdWxseUNvbnRyb2xWYWx1ZTogQm9vbGVhbixcclxuICBzaG93TGFiZWw6IEJvb2xlYW4sXHJcbiAgbmFtZTogU3RyaW5nXHJcbn0pXHJcblxyXG5jb25zdCBlbGVtZW50VG9XYXRjaEZvckNoYW5nZXMgPSByZWYobnVsbCBhcyBOdWxsYWJsZTxIVE1MRWxlbWVudD4pXHJcbmNvbnN0IGl0ZW1Db250YWluZXIgPSByZWYobnVsbCBhcyBOdWxsYWJsZTxIVE1MRWxlbWVudD4pXHJcbmNvbnN0IGxhYmVsSWQgPSB1c2VJZCgpXHJcbmNvbnN0IGJ1dHRvbklkID0gdXNlSWQoKVxyXG5cclxuY29uc3QgeyBzZWxlY3RlZFZhbHVlLCBpc011bHRpSXRlbUFycmF5VmFsdWUsIGhpZGRlblNlbGVjdGVkSXRlbUNvdW50LCBmaXJzdEl0ZW0gfSA9XHJcbiAgdXNlRm9ybVNlbGVjdENoaWxkSW50ZXJuYWxzPFNlcnZlclJvbGVzPih7XHJcbiAgICBwcm9wczogdG9SZWZzKHByb3BzKSxcclxuICAgIGVtaXQsXHJcbiAgICBkeW5hbWljVmlzaWJpbGl0eTogeyBlbGVtZW50VG9XYXRjaEZvckNoYW5nZXMsIGl0ZW1Db250YWluZXIgfVxyXG4gIH0pXHJcblxyXG5jb25zdCByb2xlcyA9IGNvbXB1dGVkKCgpID0+XHJcbiAgT2JqZWN0LnZhbHVlcyhSb2xlcy5TZXJ2ZXIpLmZpbHRlcigocikgPT4ge1xyXG4gICAgaWYgKHIgPT09IFJvbGVzLlNlcnZlci5BZG1pbikgcmV0dXJuIHByb3BzLmFsbG93QWRtaW5cclxuICAgIGlmIChyID09PSBSb2xlcy5TZXJ2ZXIuQXJjaGl2ZWRVc2VyKSByZXR1cm4gcHJvcHMuYWxsb3dBcmNoaXZlZFxyXG4gICAgcmV0dXJuIHRydWVcclxuICB9KVxyXG4pXHJcblxyXG5jb25zdCBkaXNhYmxlZEl0ZW1QcmVkaWNhdGUgPSAoaXRlbTogU2VydmVyUm9sZXMpID0+IHtcclxuICBpZiAoaXRlbSA9PT0gUm9sZXMuU2VydmVyLkd1ZXN0KSByZXR1cm4gIXByb3BzLmFsbG93R3Vlc3RcclxuICByZXR1cm4gZmFsc2VcclxufVxyXG48L3NjcmlwdD5cclxuIl0sImZpbGUiOiJEOi9zcGVja2xlLXNlcnZlci9wYWNrYWdlcy9mcm9udGVuZC0yL2NvbXBvbmVudHMvZm9ybS9zZWxlY3QvU2VydmVyUm9sZXMudnVlIn0= |