diff --git a/apps/designer/package.json b/apps/designer/package.json
index 0030eb8..7eb5907 100644
--- a/apps/designer/package.json
+++ b/apps/designer/package.json
@@ -15,17 +15,17 @@
"typecheck": "vue-tsc --noEmit --skipLibCheck"
},
"dependencies": {
- "@vtj/core": "^0.11.1",
- "@vtj/designer": "0.11.1",
- "@vtj/icons": "0.11.1",
- "@vtj/local": "^0.11.1",
- "@vtj/materials": "^0.11.1",
+ "@vtj/core": "^0.11.2",
+ "@vtj/designer": "0.11.2",
+ "@vtj/icons": "0.11.2",
+ "@vtj/local": "^0.11.2",
+ "@vtj/materials": "^0.11.2",
"@vtj/node": "0.11.1",
- "@vtj/pro": "^0.11.1",
- "@vtj/renderer": "^0.11.1",
- "@vtj/ui": "^0.11.1",
- "@vtj/utils": "0.11.1",
- "@vtj/web": "^0.11.1",
+ "@vtj/pro": "^0.11.2",
+ "@vtj/renderer": "^0.11.2",
+ "@vtj/ui": "^0.11.2",
+ "@vtj/utils": "0.11.2",
+ "@vtj/web": "^0.11.2",
"axios": "^1.8.1",
"element-plus": "^2.9.4",
"licia-es": "^1.46.0",
diff --git a/apps/docs/.vitepress/config/index.mts.timestamp-1742364269832-560ff792936a4.mjs b/apps/docs/.vitepress/config/index.mts.timestamp-1742364269832-560ff792936a4.mjs
new file mode 100644
index 0000000..18b08d5
--- /dev/null
+++ b/apps/docs/.vitepress/config/index.mts.timestamp-1742364269832-560ff792936a4.mjs
@@ -0,0 +1,577 @@
+// .vitepress/config/index.mts
+import { withPwa } from "file:///D:/Administrator/Documents/y-code/node_modules/.pnpm/@vite-pwa+vitepress@0.5.3_v_5acacc929a052f71508e46348a695010/node_modules/@vite-pwa/vitepress/dist/index.mjs";
+import { defineConfigWithTheme } from "file:///D:/Administrator/Documents/y-code/node_modules/.pnpm/vitepress@1.6.3_@algolia+cl_58ef46270d058512a4b08ef86c3fa101/node_modules/vitepress/dist/node/index.js";
+
+// .vitepress/config/shared.mts
+import { resolve } from "node:path";
+import {
+ viteArchiverPlugin,
+ viteVxeTableImportsPlugin
+} from "file:///D:/Administrator/Documents/y-code/internal/vite-config/dist/index.mjs";
+import {
+ GitChangelog,
+ GitChangelogMarkdownSection
+} from "file:///D:/Administrator/Documents/y-code/node_modules/.pnpm/@nolebase+vitepress-plugin-_421d7943276d8958ff1d13e9c6a26037/node_modules/@nolebase/vitepress-plugin-git-changelog/dist/vite/index.mjs";
+import tailwind from "file:///D:/Administrator/Documents/y-code/node_modules/.pnpm/tailwindcss@3.4.17/node_modules/tailwindcss/lib/index.js";
+import { defineConfig as defineConfig2, postcssIsolateStyles } from "file:///D:/Administrator/Documents/y-code/node_modules/.pnpm/vitepress@1.6.3_@algolia+cl_58ef46270d058512a4b08ef86c3fa101/node_modules/vitepress/dist/node/index.js";
+import {
+ groupIconMdPlugin,
+ groupIconVitePlugin
+} from "file:///D:/Administrator/Documents/y-code/node_modules/.pnpm/vitepress-plugin-group-icons@1.3.8/node_modules/vitepress-plugin-group-icons/dist/index.mjs";
+
+// .vitepress/config/plugins/demo-preview.ts
+import crypto from "node:crypto";
+import { readdirSync } from "node:fs";
+import { join } from "node:path";
+var rawPathRegexp = (
+ // eslint-disable-next-line regexp/no-super-linear-backtracking, regexp/strict
+ /^(.+?(?:\.([\da-z]+))?)(#[\w-]+)?(?: ?{(\d+(?:[,-]\d+)*)? ?(\S+)?})? ?(?:\[(.+)])?$/
+);
+function rawPathToToken(rawPath) {
+ const [
+ filepath = "",
+ extension = "",
+ region = "",
+ lines = "",
+ lang = "",
+ rawTitle = ""
+ ] = (rawPathRegexp.exec(rawPath) || []).slice(1);
+ const title = rawTitle || filepath.split("/").pop() || "";
+ return { extension, filepath, lang, lines, region, title };
+}
+var demoPreviewPlugin = (md) => {
+ md.core.ruler.after("inline", "demo-preview", (state) => {
+ const insertComponentImport = (importString) => {
+ const index = state.tokens.findIndex(
+ (i) => i.type === "html_block" && i.content.match(/
+`;
+ state.tokens.splice(0, 0, importComponent);
+ } else {
+ if (state.tokens[index]) {
+ const content = state.tokens[index].content;
+ state.tokens[index].content = content.replace(
+ "",
+ `${importString}
+`
+ );
+ }
+ }
+ };
+ const regex = /]*\sdir="([^"]*)"/g;
+ state.src = state.src.replaceAll(regex, (_match, dir) => {
+ const componentDir = join(process.cwd(), "src", dir).replaceAll(
+ "\\",
+ "/"
+ );
+ let childFiles = [];
+ let dirExists = true;
+ try {
+ childFiles = readdirSync(componentDir, {
+ encoding: "utf8",
+ recursive: false,
+ withFileTypes: false
+ }) || [];
+ } catch {
+ dirExists = false;
+ }
+ if (!dirExists) {
+ return "";
+ }
+ const uniqueWord = generateContentHash(componentDir);
+ const ComponentName = `DemoComponent_${uniqueWord}`;
+ insertComponentImport(
+ `import ${ComponentName} from '${componentDir}/index.vue'`
+ );
+ const { path: _path } = state.env;
+ const index = state.tokens.findIndex((i) => i.content.match(regex));
+ if (!state.tokens[index]) {
+ return "";
+ }
+ const firstString = "index.vue";
+ childFiles = childFiles.sort((a, b) => {
+ if (a === firstString) return -1;
+ if (b === firstString) return 1;
+ return a.localeCompare(b, "en", { sensitivity: "base" });
+ });
+ state.tokens[index].content = `<${ComponentName}/>
+ `;
+ const _dummyToken = new state.Token("", "", 0);
+ const tokenArray = [];
+ childFiles.forEach((filename) => {
+ const templateStart = new state.Token("html_inline", "", 0);
+ templateStart.content = ``;
+ tokenArray.push(templateStart);
+ const resolvedPath = join(componentDir, filename);
+ const { extension, filepath, lang, lines, title } = rawPathToToken(resolvedPath);
+ const token = new state.Token("fence", "code", 0);
+ token.info = `${lang || extension}${lines ? `{${lines}}` : ""}${title ? `[${title}]` : ""}`;
+ token.content = `<<< ${filepath}`;
+ token.src = [resolvedPath];
+ tokenArray.push(token);
+ const templateEnd = new state.Token("html_inline", "", 0);
+ templateEnd.content = "";
+ tokenArray.push(templateEnd);
+ });
+ const endTag = new state.Token("html_inline", "", 0);
+ endTag.content = "";
+ tokenArray.push(endTag);
+ state.tokens.splice(index + 1, 0, ...tokenArray);
+ return "";
+ });
+ });
+};
+function generateContentHash(input, length = 10) {
+ const hash = crypto.createHash("sha256").update(input).digest("hex");
+ return Number.parseInt(hash, 16).toString(36).slice(0, length);
+}
+
+// .vitepress/config/zh.mts
+import { defineConfig } from "file:///D:/Administrator/Documents/y-code/node_modules/.pnpm/vitepress@1.6.3_@algolia+cl_58ef46270d058512a4b08ef86c3fa101/node_modules/vitepress/dist/node/index.js";
+
+// ../../package.json
+var version = "1.0.0-alpha.1";
+
+// .vitepress/config/zh.mts
+var zh = defineConfig({
+ description: "\u60A6\u7801 & \u4F4E\u4EE3\u7801\u7BA1\u7406\u7CFB\u7EDF",
+ lang: "zh-Hans",
+ themeConfig: {
+ darkModeSwitchLabel: "\u4E3B\u9898",
+ darkModeSwitchTitle: "\u5207\u6362\u5230\u6DF1\u8272\u6A21\u5F0F",
+ docFooter: {
+ next: "\u4E0B\u4E00\u9875",
+ prev: "\u4E0A\u4E00\u9875"
+ },
+ // editLink: {
+ // pattern:
+ // 'https://github.com/vbenjs/vue-vben-admin/edit/main/docs/src/:path',
+ // text: '在 GitHub 上编辑此页面',
+ // },
+ // footer: {
+ // copyright: `Copyright © 2020-${new Date().getFullYear()} Vben`,
+ // message: '基于 MIT 许可发布.',
+ // },
+ // langMenuLabel: '多语言',
+ lastUpdated: {
+ formatOptions: {
+ dateStyle: "short",
+ timeStyle: "medium"
+ },
+ text: "\u6700\u540E\u66F4\u65B0\u4E8E"
+ },
+ lightModeSwitchTitle: "\u5207\u6362\u5230\u6D45\u8272\u6A21\u5F0F",
+ nav: nav(),
+ outline: {
+ label: "\u9875\u9762\u5BFC\u822A"
+ },
+ returnToTopLabel: "\u56DE\u5230\u9876\u90E8",
+ sidebar: {
+ "/commercial/": { base: "/commercial/", items: sidebarCommercial() },
+ "/components/": { base: "/components/", items: sidebarComponents() },
+ "/guide/": { base: "/guide/", items: sidebarGuide() }
+ },
+ sidebarMenuLabel: "\u83DC\u5355"
+ }
+});
+function sidebarGuide() {
+ return [
+ {
+ collapsed: false,
+ text: "\u7B80\u4ECB",
+ items: [
+ {
+ link: "introduction/platform",
+ text: "\u5173\u4E8E\u60A6\u7801"
+ },
+ { link: "introduction/quick-start", text: "\u5FEB\u901F\u5F00\u59CB" },
+ {
+ base: "/",
+ link: "components/index",
+ text: "\u7EC4\u4EF6\u6587\u6863"
+ }
+ ]
+ },
+ {
+ text: "\u57FA\u7840",
+ items: [
+ { link: "essentials/concept", text: "\u57FA\u7840\u6982\u5FF5" },
+ { link: "essentials/icons", text: "\u56FE\u6807" },
+ { link: "essentials/styles", text: "\u6837\u5F0F" }
+ ]
+ },
+ {
+ text: "\u6DF1\u5165",
+ items: [{ link: "in-depth/features", text: "\u5E38\u7528\u529F\u80FD" }]
+ },
+ {
+ text: "\u5176\u4ED6",
+ items: [
+ // { link: 'other/project-update', text: '项目更新' },
+ // { link: 'other/remove-code', text: '移除代码' },
+ // { link: 'other/faq', text: '常见问题' },
+ ]
+ }
+ ];
+}
+function sidebarCommercial() {
+ return [
+ {
+ link: "community",
+ text: "\u4EA4\u6D41\u7FA4"
+ },
+ {
+ link: "technical-support",
+ text: "\u6280\u672F\u652F\u6301"
+ }
+ ];
+}
+function sidebarComponents() {
+ return [
+ {
+ text: "\u7EC4\u4EF6",
+ items: [
+ {
+ link: "introduction",
+ text: "\u4ECB\u7ECD"
+ }
+ ]
+ },
+ {
+ collapsed: false,
+ text: "\u5E03\u5C40\u7EC4\u4EF6",
+ items: [
+ {
+ link: "layout-ui/page",
+ text: "Page \u9875\u9762"
+ }
+ ]
+ },
+ {
+ collapsed: false,
+ text: "\u901A\u7528\u7EC4\u4EF6",
+ items: [
+ {
+ link: "common-ui/vben-api-component",
+ text: "ApiComponent Api\u7EC4\u4EF6\u5305\u88C5\u5668"
+ },
+ {
+ link: "common-ui/vben-modal",
+ text: "Modal \u6A21\u6001\u6846"
+ },
+ {
+ link: "common-ui/vben-drawer",
+ text: "Drawer \u62BD\u5C49"
+ },
+ {
+ link: "common-ui/vben-form",
+ text: "Form \u8868\u5355"
+ },
+ {
+ link: "common-ui/vben-vxe-table",
+ text: "Vxe Table \u8868\u683C"
+ },
+ {
+ link: "common-ui/vben-count-to-animator",
+ text: "CountToAnimator \u6570\u5B57\u52A8\u753B"
+ },
+ {
+ link: "common-ui/vben-ellipsis-text",
+ text: "EllipsisText \u7701\u7565\u6587\u672C"
+ }
+ ]
+ }
+ ];
+}
+function nav() {
+ return [
+ {
+ activeMatch: "^/(guide|components)/",
+ text: "\u6587\u6863",
+ items: [
+ {
+ activeMatch: "^/guide/",
+ link: "/guide/introduction/platform",
+ text: "\u4F4E\u4EE3\u7801\u7BA1\u7406\u5E73\u53F0"
+ },
+ {
+ activeMatch: "^/renderer/",
+ link: "/renderer/index",
+ text: "\u6E32\u67D3\u5668"
+ },
+ {
+ activeMatch: "^/designer/",
+ link: "/designer/index",
+ text: "\u8BBE\u8BA1\u5668"
+ },
+ {
+ activeMatch: "^/materials/",
+ link: "/materials/index",
+ text: "\u7269\u6599"
+ }
+ ]
+ },
+ {
+ text: "\u4F4E\u4EE3\u7801\u7BA1\u7406\u5E73\u53F0",
+ items: [
+ {
+ text: "\u60A6\u7801 2.0",
+ items: [
+ {
+ link: "https://y-code.shiyue.com",
+ text: "\u751F\u4EA7\u7248\u672C"
+ },
+ {
+ link: "https://y-code-pre.shiyue.com",
+ text: "\u9884\u53D1\u5E03\u7248\u672C"
+ },
+ {
+ link: "https://y-code.shiyue.com",
+ text: "\u6F14\u793A\u7248\u672C"
+ }
+ ]
+ },
+ {
+ text: "\u5176\u4ED6",
+ items: [
+ {
+ link: "https://custom-chart.shiyuegame.com/",
+ text: "\u60A6\u7801 1.0\uFF08\u5DF2\u5E9F\u5F03\uFF0C\u4E0D\u518D\u66F4\u65B0\u529F\u80FD\uFF09"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ text: version,
+ items: [
+ {
+ link: "./changelog",
+ text: "\u66F4\u65B0\u65E5\u5FD7"
+ },
+ {
+ link: "https://doc.weixin.qq.com/smartsheet/s3_Aa0ASwZ0AOEr2TbPuaMRoCvs1yzjA?scode=AOwAYgeoAAkoT6VFa0Aa0ASwZ0AOE&tab=q979lj&viewId=vpDUFs",
+ text: "\u66F4\u65B0\u8DEF\u7EBF\u56FE"
+ }
+ ]
+ },
+ {
+ text: "\u{1F468}\u200D\u{1F466}\u200D\u{1F466} \u95EE\u9898\u53CD\u9988",
+ items: [
+ {
+ link: "https://qun.qq.com/qqweb/qunpro/share?_wv=3&_wwv=128&appChannel=share&inviteCode=22ySzj7pKiw&businessType=9&from=246610&biz=ka&mainSourceId=share&subSourceId=others&jumpsource=shorturl#/pc",
+ text: "\u70ED\u5FC3\u5927\u59D0"
+ }
+ ]
+ }
+ ];
+}
+var search = {
+ root: {
+ placeholder: "\u641C\u7D22\u6587\u6863",
+ translations: {
+ button: {
+ buttonAriaLabel: "\u641C\u7D22\u6587\u6863",
+ buttonText: "\u641C\u7D22\u6587\u6863"
+ },
+ modal: {
+ errorScreen: {
+ helpText: "\u4F60\u53EF\u80FD\u9700\u8981\u68C0\u67E5\u4F60\u7684\u7F51\u7EDC\u8FDE\u63A5",
+ titleText: "\u65E0\u6CD5\u83B7\u53D6\u7ED3\u679C"
+ },
+ footer: {
+ closeText: "\u5173\u95ED",
+ navigateText: "\u5207\u6362",
+ searchByText: "\u641C\u7D22\u63D0\u4F9B\u8005",
+ selectText: "\u9009\u62E9"
+ },
+ noResultsScreen: {
+ noResultsText: "\u65E0\u6CD5\u627E\u5230\u76F8\u5173\u7ED3\u679C",
+ reportMissingResultsLinkText: "\u70B9\u51FB\u53CD\u9988",
+ reportMissingResultsText: "\u4F60\u8BA4\u4E3A\u8BE5\u67E5\u8BE2\u5E94\u8BE5\u6709\u7ED3\u679C\uFF1F",
+ suggestedQueryText: "\u4F60\u53EF\u4EE5\u5C1D\u8BD5\u67E5\u8BE2"
+ },
+ searchBox: {
+ cancelButtonAriaLabel: "\u53D6\u6D88",
+ cancelButtonText: "\u53D6\u6D88",
+ resetButtonAriaLabel: "\u6E05\u9664\u67E5\u8BE2\u6761\u4EF6",
+ resetButtonTitle: "\u6E05\u9664\u67E5\u8BE2\u6761\u4EF6"
+ },
+ startScreen: {
+ favoriteSearchesTitle: "\u6536\u85CF",
+ noRecentSearchesText: "\u6CA1\u6709\u641C\u7D22\u5386\u53F2",
+ recentSearchesTitle: "\u641C\u7D22\u5386\u53F2",
+ removeFavoriteSearchButtonTitle: "\u4ECE\u6536\u85CF\u4E2D\u79FB\u9664",
+ removeRecentSearchButtonTitle: "\u4ECE\u641C\u7D22\u5386\u53F2\u4E2D\u79FB\u9664",
+ saveRecentSearchButtonTitle: "\u4FDD\u5B58\u81F3\u641C\u7D22\u5386\u53F2"
+ }
+ }
+ }
+ }
+};
+
+// .vitepress/config/shared.mts
+var shared = defineConfig2({
+ appearance: "dark",
+ head: head(),
+ markdown: {
+ preConfig(md) {
+ md.use(demoPreviewPlugin);
+ md.use(groupIconMdPlugin);
+ }
+ },
+ pwa: pwa(),
+ srcDir: "src",
+ themeConfig: {
+ i18nRouting: true,
+ logo: "https://unpkg.com/@vbenjs/static-source@0.1.7/source/logo-v1.webp",
+ search: {
+ options: {
+ locales: {
+ ...search
+ }
+ },
+ provider: "local"
+ },
+ siteTitle: "\u60A6\u7801",
+ socialLinks: [
+ { icon: "github", link: "https://ptdata-gitlab.shiyue.com/sy3570" }
+ ]
+ },
+ title: "\u60A6\u7801",
+ vite: {
+ build: {
+ chunkSizeWarningLimit: Infinity,
+ minify: "terser"
+ },
+ css: {
+ postcss: {
+ plugins: [
+ tailwind(),
+ postcssIsolateStyles({ includeFiles: [/vp-doc\.css/] })
+ ]
+ },
+ preprocessorOptions: {
+ scss: {
+ api: "modern"
+ }
+ }
+ },
+ json: {
+ stringify: true
+ },
+ plugins: [
+ GitChangelog({
+ mapAuthors: [
+ {
+ mapByNameAliases: ["\u738B\u96EA\u5CF0"],
+ name: "wangxuefeng",
+ username: "wangxuefeng"
+ }
+ ],
+ repoURL: () => "https://ptdata-gitlab.shiyue.com/workbench/y-code"
+ }),
+ GitChangelogMarkdownSection(),
+ viteArchiverPlugin({ outputDir: ".vitepress" }),
+ groupIconVitePlugin(),
+ await viteVxeTableImportsPlugin()
+ ],
+ server: {
+ fs: {
+ allow: ["../.."]
+ },
+ host: true,
+ port: 6173
+ },
+ ssr: {
+ external: ["@vue/repl"]
+ }
+ }
+});
+function head() {
+ return [
+ ["meta", { content: "wangxuefeng", name: "author" }],
+ [
+ "meta",
+ {
+ content: "vben, vitejs, vite, shacdn-ui, vue",
+ name: "keywords"
+ }
+ ],
+ ["link", { href: "/favicon.ico", rel: "icon", type: "image/svg+xml" }],
+ [
+ "meta",
+ {
+ content: "width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no",
+ name: "viewport"
+ }
+ ],
+ ["meta", { content: "vben admin docs", name: "keywords" }],
+ ["link", { href: "/favicon.ico", rel: "icon" }]
+ // [
+ // 'script',
+ // {
+ // src: 'https://cdn.tailwindcss.com',
+ // },
+ // ],
+ ];
+}
+function pwa() {
+ return {
+ includeManifestIcons: false,
+ manifest: {
+ description: "y-code-platform is a low-code management platform based on Vue 3 & vtj.pro ",
+ icons: [
+ {
+ sizes: "192x192",
+ src: "https://unpkg.com/@vbenjs/static-source@0.1.7/source/pwa-icon-192.png",
+ type: "image/png"
+ },
+ {
+ sizes: "512x512",
+ src: "https://unpkg.com/@vbenjs/static-source@0.1.7/source/pwa-icon-512.png",
+ type: "image/png"
+ }
+ ],
+ id: "/",
+ name: "y-code-platform Doc",
+ short_name: "y-code-platform_doc",
+ theme_color: "#ffffff"
+ },
+ outDir: resolve(process.cwd(), ".vitepress/dist"),
+ registerType: "autoUpdate",
+ workbox: {
+ globPatterns: ["**/*.{css,js,html,svg,png,ico,txt,woff2}"],
+ maximumFileSizeToCacheInBytes: 5 * 1024 * 1024
+ }
+ };
+}
+
+// .vitepress/config/index.mts
+var config_default = withPwa(
+ defineConfigWithTheme({
+ ...shared,
+ locales: {
+ // en: {
+ // label: 'English',
+ // lang: 'en',
+ // link: '/en/',
+ // ...en,
+ // },
+ root: {
+ label: "\u7B80\u4F53\u4E2D\u6587",
+ lang: "zh-CN",
+ ...zh
+ }
+ }
+ })
+);
+export {
+ config_default as default
+};
+//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLnZpdGVwcmVzcy9jb25maWcvaW5kZXgubXRzIiwgIi52aXRlcHJlc3MvY29uZmlnL3NoYXJlZC5tdHMiLCAiLnZpdGVwcmVzcy9jb25maWcvcGx1Z2lucy9kZW1vLXByZXZpZXcudHMiLCAiLnZpdGVwcmVzcy9jb25maWcvemgubXRzIiwgIi4uLy4uL3BhY2thZ2UuanNvbiJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkQ6XFxcXEFkbWluaXN0cmF0b3JcXFxcRG9jdW1lbnRzXFxcXHktY29kZVxcXFxhcHBzXFxcXGRvY3NcXFxcLnZpdGVwcmVzc1xcXFxjb25maWdcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkQ6XFxcXEFkbWluaXN0cmF0b3JcXFxcRG9jdW1lbnRzXFxcXHktY29kZVxcXFxhcHBzXFxcXGRvY3NcXFxcLnZpdGVwcmVzc1xcXFxjb25maWdcXFxcaW5kZXgubXRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9EOi9BZG1pbmlzdHJhdG9yL0RvY3VtZW50cy95LWNvZGUvYXBwcy9kb2NzLy52aXRlcHJlc3MvY29uZmlnL2luZGV4Lm10c1wiO2ltcG9ydCB7IHdpdGhQd2EgfSBmcm9tICdAdml0ZS1wd2Evdml0ZXByZXNzJztcbmltcG9ydCB7IGRlZmluZUNvbmZpZ1dpdGhUaGVtZSB9IGZyb20gJ3ZpdGVwcmVzcyc7XG5cbmltcG9ydCB7IHNoYXJlZCB9IGZyb20gJy4vc2hhcmVkLm10cyc7XG5pbXBvcnQgeyB6aCB9IGZyb20gJy4vemgubXRzJztcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFB3YShcbiAgZGVmaW5lQ29uZmlnV2l0aFRoZW1lKHtcbiAgICAuLi5zaGFyZWQsXG4gICAgbG9jYWxlczoge1xuICAgICAgLy8gZW46IHtcbiAgICAgIC8vICAgbGFiZWw6ICdFbmdsaXNoJyxcbiAgICAgIC8vICAgbGFuZzogJ2VuJyxcbiAgICAgIC8vICAgbGluazogJy9lbi8nLFxuICAgICAgLy8gICAuLi5lbixcbiAgICAgIC8vIH0sXG4gICAgICByb290OiB7XG4gICAgICAgIGxhYmVsOiAnXHU3QjgwXHU0RjUzXHU0RTJEXHU2NTg3JyxcbiAgICAgICAgbGFuZzogJ3poLUNOJyxcbiAgICAgICAgLi4uemgsXG4gICAgICB9LFxuICAgIH0sXG4gIH0pLFxuKTtcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRDpcXFxcQWRtaW5pc3RyYXRvclxcXFxEb2N1bWVudHNcXFxceS1jb2RlXFxcXGFwcHNcXFxcZG9jc1xcXFwudml0ZXByZXNzXFxcXGNvbmZpZ1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRDpcXFxcQWRtaW5pc3RyYXRvclxcXFxEb2N1bWVudHNcXFxceS1jb2RlXFxcXGFwcHNcXFxcZG9jc1xcXFwudml0ZXByZXNzXFxcXGNvbmZpZ1xcXFxzaGFyZWQubXRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9EOi9BZG1pbmlzdHJhdG9yL0RvY3VtZW50cy95LWNvZGUvYXBwcy9kb2NzLy52aXRlcHJlc3MvY29uZmlnL3NoYXJlZC5tdHNcIjtpbXBvcnQgdHlwZSB7IFB3YU9wdGlvbnMgfSBmcm9tICdAdml0ZS1wd2Evdml0ZXByZXNzJztcbmltcG9ydCB0eXBlIHsgSGVhZENvbmZpZyB9IGZyb20gJ3ZpdGVwcmVzcyc7XG5cbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnO1xuXG5pbXBvcnQge1xuICB2aXRlQXJjaGl2ZXJQbHVnaW4sXG4gIHZpdGVWeGVUYWJsZUltcG9ydHNQbHVnaW4sXG59IGZyb20gJ0B2YmVuL3ZpdGUtY29uZmlnJztcblxuaW1wb3J0IHtcbiAgR2l0Q2hhbmdlbG9nLFxuICBHaXRDaGFuZ2Vsb2dNYXJrZG93blNlY3Rpb24sXG59IGZyb20gJ0Bub2xlYmFzZS92aXRlcHJlc3MtcGx1Z2luLWdpdC1jaGFuZ2Vsb2cvdml0ZSc7XG5pbXBvcnQgdGFpbHdpbmQgZnJvbSAndGFpbHdpbmRjc3MnO1xuaW1wb3J0IHsgZGVmaW5lQ29uZmlnLCBwb3N0Y3NzSXNvbGF0ZVN0eWxlcyB9IGZyb20gJ3ZpdGVwcmVzcyc7XG5pbXBvcnQge1xuICBncm91cEljb25NZFBsdWdpbixcbiAgZ3JvdXBJY29uVml0ZVBsdWdpbixcbn0gZnJvbSAndml0ZXByZXNzLXBsdWdpbi1ncm91cC1pY29ucyc7XG5cbmltcG9ydCB7IGRlbW9QcmV2aWV3UGx1Z2luIH0gZnJvbSAnLi9wbHVnaW5zL2RlbW8tcHJldmlldyc7XG5pbXBvcnQgeyBzZWFyY2ggYXMgemhTZWFyY2ggfSBmcm9tICcuL3poLm10cyc7XG5cbmV4cG9ydCBjb25zdCBzaGFyZWQgPSBkZWZpbmVDb25maWcoe1xuICBhcHBlYXJhbmNlOiAnZGFyaycsXG4gIGhlYWQ6IGhlYWQoKSxcbiAgbWFya2Rvd246IHtcbiAgICBwcmVDb25maWcobWQpIHtcbiAgICAgIG1kLnVzZShkZW1vUHJldmlld1BsdWdpbik7XG4gICAgICBtZC51c2UoZ3JvdXBJY29uTWRQbHVnaW4pO1xuICAgIH0sXG4gIH0sXG4gIHB3YTogcHdhKCksXG4gIHNyY0RpcjogJ3NyYycsXG4gIHRoZW1lQ29uZmlnOiB7XG4gICAgaTE4blJvdXRpbmc6IHRydWUsXG4gICAgbG9nbzogJ2h0dHBzOi8vdW5wa2cuY29tL0B2YmVuanMvc3RhdGljLXNvdXJjZUAwLjEuNy9zb3VyY2UvbG9nby12MS53ZWJwJyxcbiAgICBzZWFyY2g6IHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgbG9jYWxlczoge1xuICAgICAgICAgIC4uLnpoU2VhcmNoLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHByb3ZpZGVyOiAnbG9jYWwnLFxuICAgIH0sXG4gICAgc2l0ZVRpdGxlOiAnXHU2MEE2XHU3ODAxJyxcbiAgICBzb2NpYWxMaW5rczogW1xuICAgICAgeyBpY29uOiAnZ2l0aHViJywgbGluazogJ2h0dHBzOi8vcHRkYXRhLWdpdGxhYi5zaGl5dWUuY29tL3N5MzU3MCcgfSxcbiAgICBdLFxuICB9LFxuICB0aXRsZTogJ1x1NjBBNlx1NzgwMScsXG4gIHZpdGU6IHtcbiAgICBidWlsZDoge1xuICAgICAgY2h1bmtTaXplV2FybmluZ0xpbWl0OiBJbmZpbml0eSxcbiAgICAgIG1pbmlmeTogJ3RlcnNlcicsXG4gICAgfSxcbiAgICBjc3M6IHtcbiAgICAgIHBvc3Rjc3M6IHtcbiAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgIHRhaWx3aW5kKCksXG4gICAgICAgICAgcG9zdGNzc0lzb2xhdGVTdHlsZXMoeyBpbmNsdWRlRmlsZXM6IFsvdnAtZG9jXFwuY3NzL10gfSksXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAgcHJlcHJvY2Vzc29yT3B0aW9uczoge1xuICAgICAgICBzY3NzOiB7XG4gICAgICAgICAgYXBpOiAnbW9kZXJuJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBqc29uOiB7XG4gICAgICBzdHJpbmdpZnk6IHRydWUsXG4gICAgfSxcbiAgICBwbHVnaW5zOiBbXG4gICAgICBHaXRDaGFuZ2Vsb2coe1xuICAgICAgICBtYXBBdXRob3JzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbWFwQnlOYW1lQWxpYXNlczogWydcdTczOEJcdTk2RUFcdTVDRjAnXSxcbiAgICAgICAgICAgIG5hbWU6ICd3YW5neHVlZmVuZycsXG4gICAgICAgICAgICB1c2VybmFtZTogJ3dhbmd4dWVmZW5nJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICByZXBvVVJMOiAoKSA9PiAnaHR0cHM6Ly9wdGRhdGEtZ2l0bGFiLnNoaXl1ZS5jb20vd29ya2JlbmNoL3ktY29kZScsXG4gICAgICB9KSxcbiAgICAgIEdpdENoYW5nZWxvZ01hcmtkb3duU2VjdGlvbigpLFxuICAgICAgdml0ZUFyY2hpdmVyUGx1Z2luKHsgb3V0cHV0RGlyOiAnLnZpdGVwcmVzcycgfSksXG4gICAgICBncm91cEljb25WaXRlUGx1Z2luKCksXG4gICAgICBhd2FpdCB2aXRlVnhlVGFibGVJbXBvcnRzUGx1Z2luKCksXG4gICAgXSxcbiAgICBzZXJ2ZXI6IHtcbiAgICAgIGZzOiB7XG4gICAgICAgIGFsbG93OiBbJy4uLy4uJ10sXG4gICAgICB9LFxuICAgICAgaG9zdDogdHJ1ZSxcbiAgICAgIHBvcnQ6IDYxNzMsXG4gICAgfSxcblxuICAgIHNzcjoge1xuICAgICAgZXh0ZXJuYWw6IFsnQHZ1ZS9yZXBsJ10sXG4gICAgfSxcbiAgfSxcbn0pO1xuXG5mdW5jdGlvbiBoZWFkKCk6IEhlYWRDb25maWdbXSB7XG4gIHJldHVybiBbXG4gICAgWydtZXRhJywgeyBjb250ZW50OiAnd2FuZ3h1ZWZlbmcnLCBuYW1lOiAnYXV0aG9yJyB9XSxcbiAgICBbXG4gICAgICAnbWV0YScsXG4gICAgICB7XG4gICAgICAgIGNvbnRlbnQ6ICd2YmVuLCB2aXRlanMsIHZpdGUsIHNoYWNkbi11aSwgdnVlJyxcbiAgICAgICAgbmFtZTogJ2tleXdvcmRzJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBbJ2xpbmsnLCB7IGhyZWY6ICcvZmF2aWNvbi5pY28nLCByZWw6ICdpY29uJywgdHlwZTogJ2ltYWdlL3N2Zyt4bWwnIH1dLFxuICAgIFtcbiAgICAgICdtZXRhJyxcbiAgICAgIHtcbiAgICAgICAgY29udGVudDpcbiAgICAgICAgICAnd2lkdGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MSxtaW5pbXVtLXNjYWxlPTEuMCxtYXhpbXVtLXNjYWxlPTEuMCx1c2VyLXNjYWxhYmxlPW5vJyxcbiAgICAgICAgbmFtZTogJ3ZpZXdwb3J0JyxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBbJ21ldGEnLCB7IGNvbnRlbnQ6ICd2YmVuIGFkbWluIGRvY3MnLCBuYW1lOiAna2V5d29yZHMnIH1dLFxuICAgIFsnbGluaycsIHsgaHJlZjogJy9mYXZpY29uLmljbycsIHJlbDogJ2ljb24nIH1dLFxuICAgIC8vIFtcbiAgICAvLyAgICdzY3JpcHQnLFxuICAgIC8vICAge1xuICAgIC8vICAgICBzcmM6ICdodHRwczovL2Nkbi50YWlsd2luZGNzcy5jb20nLFxuICAgIC8vICAgfSxcbiAgICAvLyBdLFxuICBdO1xufVxuXG5mdW5jdGlvbiBwd2EoKTogUHdhT3B0aW9ucyB7XG4gIHJldHVybiB7XG4gICAgaW5jbHVkZU1hbmlmZXN0SWNvbnM6IGZhbHNlLFxuICAgIG1hbmlmZXN0OiB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ3ktY29kZS1wbGF0Zm9ybSBpcyBhIGxvdy1jb2RlIG1hbmFnZW1lbnQgcGxhdGZvcm0gYmFzZWQgb24gVnVlIDMgJiB2dGoucHJvICcsXG4gICAgICBpY29uczogW1xuICAgICAgICB7XG4gICAgICAgICAgc2l6ZXM6ICcxOTJ4MTkyJyxcbiAgICAgICAgICBzcmM6ICdodHRwczovL3VucGtnLmNvbS9AdmJlbmpzL3N0YXRpYy1zb3VyY2VAMC4xLjcvc291cmNlL3B3YS1pY29uLTE5Mi5wbmcnLFxuICAgICAgICAgIHR5cGU6ICdpbWFnZS9wbmcnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgc2l6ZXM6ICc1MTJ4NTEyJyxcbiAgICAgICAgICBzcmM6ICdodHRwczovL3VucGtnLmNvbS9AdmJlbmpzL3N0YXRpYy1zb3VyY2VAMC4xLjcvc291cmNlL3B3YS1pY29uLTUxMi5wbmcnLFxuICAgICAgICAgIHR5cGU6ICdpbWFnZS9wbmcnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGlkOiAnLycsXG4gICAgICBuYW1lOiAneS1jb2RlLXBsYXRmb3JtIERvYycsXG4gICAgICBzaG9ydF9uYW1lOiAneS1jb2RlLXBsYXRmb3JtX2RvYycsXG4gICAgICB0aGVtZV9jb2xvcjogJyNmZmZmZmYnLFxuICAgIH0sXG4gICAgb3V0RGlyOiByZXNvbHZlKHByb2Nlc3MuY3dkKCksICcudml0ZXByZXNzL2Rpc3QnKSxcbiAgICByZWdpc3RlclR5cGU6ICdhdXRvVXBkYXRlJyxcbiAgICB3b3JrYm94OiB7XG4gICAgICBnbG9iUGF0dGVybnM6IFsnKiovKi57Y3NzLGpzLGh0bWwsc3ZnLHBuZyxpY28sdHh0LHdvZmYyfSddLFxuICAgICAgbWF4aW11bUZpbGVTaXplVG9DYWNoZUluQnl0ZXM6IDUgKiAxMDI0ICogMTAyNCxcbiAgICB9LFxuICB9O1xufVxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJEOlxcXFxBZG1pbmlzdHJhdG9yXFxcXERvY3VtZW50c1xcXFx5LWNvZGVcXFxcYXBwc1xcXFxkb2NzXFxcXC52aXRlcHJlc3NcXFxcY29uZmlnXFxcXHBsdWdpbnNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkQ6XFxcXEFkbWluaXN0cmF0b3JcXFxcRG9jdW1lbnRzXFxcXHktY29kZVxcXFxhcHBzXFxcXGRvY3NcXFxcLnZpdGVwcmVzc1xcXFxjb25maWdcXFxccGx1Z2luc1xcXFxkZW1vLXByZXZpZXcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6L0FkbWluaXN0cmF0b3IvRG9jdW1lbnRzL3ktY29kZS9hcHBzL2RvY3MvLnZpdGVwcmVzcy9jb25maWcvcGx1Z2lucy9kZW1vLXByZXZpZXcudHNcIjtpbXBvcnQgdHlwZSB7IE1hcmtkb3duRW52LCBNYXJrZG93blJlbmRlcmVyIH0gZnJvbSAndml0ZXByZXNzJztcblxuaW1wb3J0IGNyeXB0byBmcm9tICdub2RlOmNyeXB0byc7XG5pbXBvcnQgeyByZWFkZGlyU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCc7XG5cbmV4cG9ydCBjb25zdCByYXdQYXRoUmVnZXhwID1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlZ2V4cC9uby1zdXBlci1saW5lYXItYmFja3RyYWNraW5nLCByZWdleHAvc3RyaWN0XG4gIC9eKC4rPyg/OlxcLihbXFxkYS16XSspKT8pKCNbXFx3LV0rKT8oPzogP3soXFxkKyg/OlssLV1cXGQrKSopPyA/KFxcUyspP30pPyA/KD86XFxbKC4rKV0pPyQvO1xuXG5mdW5jdGlvbiByYXdQYXRoVG9Ub2tlbihyYXdQYXRoOiBzdHJpbmcpIHtcbiAgY29uc3QgW1xuICAgIGZpbGVwYXRoID0gJycsXG4gICAgZXh0ZW5zaW9uID0gJycsXG4gICAgcmVnaW9uID0gJycsXG4gICAgbGluZXMgPSAnJyxcbiAgICBsYW5nID0gJycsXG4gICAgcmF3VGl0bGUgPSAnJyxcbiAgXSA9IChyYXdQYXRoUmVnZXhwLmV4ZWMocmF3UGF0aCkgfHwgW10pLnNsaWNlKDEpO1xuXG4gIGNvbnN0IHRpdGxlID0gcmF3VGl0bGUgfHwgZmlsZXBhdGguc3BsaXQoJy8nKS5wb3AoKSB8fCAnJztcblxuICByZXR1cm4geyBleHRlbnNpb24sIGZpbGVwYXRoLCBsYW5nLCBsaW5lcywgcmVnaW9uLCB0aXRsZSB9O1xufVxuXG5leHBvcnQgY29uc3QgZGVtb1ByZXZpZXdQbHVnaW4gPSAobWQ6IE1hcmtkb3duUmVuZGVyZXIpID0+IHtcbiAgbWQuY29yZS5ydWxlci5hZnRlcignaW5saW5lJywgJ2RlbW8tcHJldmlldycsIChzdGF0ZSkgPT4ge1xuICAgIGNvbnN0IGluc2VydENvbXBvbmVudEltcG9ydCA9IChpbXBvcnRTdHJpbmc6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS50b2tlbnMuZmluZEluZGV4KFxuICAgICAgICAoaSkgPT4gaS50eXBlID09PSAnaHRtbF9ibG9jaycgJiYgaS5jb250ZW50Lm1hdGNoKC88c2NyaXB0IHNldHVwPi9nKSxcbiAgICAgICk7XG4gICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgIGNvbnN0IGltcG9ydENvbXBvbmVudCA9IG5ldyBzdGF0ZS5Ub2tlbignaHRtbF9ibG9jaycsICcnLCAwKTtcbiAgICAgICAgaW1wb3J0Q29tcG9uZW50LmNvbnRlbnQgPSBgPHNjcmlwdCBzZXR1cD5cXG4ke2ltcG9ydFN0cmluZ31cXG48L3NjcmlwdD5cXG5gO1xuICAgICAgICBzdGF0ZS50b2tlbnMuc3BsaWNlKDAsIDAsIGltcG9ydENvbXBvbmVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc3RhdGUudG9rZW5zW2luZGV4XSkge1xuICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBzdGF0ZS50b2tlbnNbaW5kZXhdLmNvbnRlbnQ7XG4gICAgICAgICAgc3RhdGUudG9rZW5zW2luZGV4XS5jb250ZW50ID0gY29udGVudC5yZXBsYWNlKFxuICAgICAgICAgICAgJzwvc2NyaXB0PicsXG4gICAgICAgICAgICBgJHtpbXBvcnRTdHJpbmd9XFxuPC9zY3JpcHQ+YCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICAvLyBEZWZpbmUgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBtYXRjaCB0aGUgZGVzaXJlZCBwYXR0ZXJuXG4gICAgY29uc3QgcmVnZXggPSAvPERlbW9QcmV2aWV3W14+XSpcXHNkaXI9XCIoW15cIl0qKVwiL2c7XG4gICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSBNYXJrZG93biBjb250ZW50IGFuZCByZXBsYWNlIHRoZSBwYXR0ZXJuXG4gICAgc3RhdGUuc3JjID0gc3RhdGUuc3JjLnJlcGxhY2VBbGwocmVnZXgsIChfbWF0Y2gsIGRpcikgPT4ge1xuICAgICAgY29uc3QgY29tcG9uZW50RGlyID0gam9pbihwcm9jZXNzLmN3ZCgpLCAnc3JjJywgZGlyKS5yZXBsYWNlQWxsKFxuICAgICAgICAnXFxcXCcsXG4gICAgICAgICcvJyxcbiAgICAgICk7XG5cbiAgICAgIGxldCBjaGlsZEZpbGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgbGV0IGRpckV4aXN0cyA9IHRydWU7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNoaWxkRmlsZXMgPVxuICAgICAgICAgIHJlYWRkaXJTeW5jKGNvbXBvbmVudERpciwge1xuICAgICAgICAgICAgZW5jb2Rpbmc6ICd1dGY4JyxcbiAgICAgICAgICAgIHJlY3Vyc2l2ZTogZmFsc2UsXG4gICAgICAgICAgICB3aXRoRmlsZVR5cGVzOiBmYWxzZSxcbiAgICAgICAgICB9KSB8fCBbXTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICBkaXJFeGlzdHMgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFkaXJFeGlzdHMpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB1bmlxdWVXb3JkID0gZ2VuZXJhdGVDb250ZW50SGFzaChjb21wb25lbnREaXIpO1xuXG4gICAgICBjb25zdCBDb21wb25lbnROYW1lID0gYERlbW9Db21wb25lbnRfJHt1bmlxdWVXb3JkfWA7XG4gICAgICBpbnNlcnRDb21wb25lbnRJbXBvcnQoXG4gICAgICAgIGBpbXBvcnQgJHtDb21wb25lbnROYW1lfSBmcm9tICcke2NvbXBvbmVudERpcn0vaW5kZXgudnVlJ2AsXG4gICAgICApO1xuICAgICAgY29uc3QgeyBwYXRoOiBfcGF0aCB9ID0gc3RhdGUuZW52IGFzIE1hcmtkb3duRW52O1xuXG4gICAgICBjb25zdCBpbmRleCA9IHN0YXRlLnRva2Vucy5maW5kSW5kZXgoKGkpID0+IGkuY29udGVudC5tYXRjaChyZWdleCkpO1xuXG4gICAgICBpZiAoIXN0YXRlLnRva2Vuc1tpbmRleF0pIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgICAgY29uc3QgZmlyc3RTdHJpbmcgPSAnaW5kZXgudnVlJztcbiAgICAgIGNoaWxkRmlsZXMgPSBjaGlsZEZpbGVzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgaWYgKGEgPT09IGZpcnN0U3RyaW5nKSByZXR1cm4gLTE7XG4gICAgICAgIGlmIChiID09PSBmaXJzdFN0cmluZykgcmV0dXJuIDE7XG4gICAgICAgIHJldHVybiBhLmxvY2FsZUNvbXBhcmUoYiwgJ2VuJywgeyBzZW5zaXRpdml0eTogJ2Jhc2UnIH0pO1xuICAgICAgfSk7XG4gICAgICBzdGF0ZS50b2tlbnNbaW5kZXhdLmNvbnRlbnQgPVxuICAgICAgICBgPERlbW9QcmV2aWV3IGZpbGVzPVwiJHtlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoY2hpbGRGaWxlcykpfVwiID48JHtDb21wb25lbnROYW1lfS8+XG4gICAgICAgIGA7XG5cbiAgICAgIGNvbnN0IF9kdW1teVRva2VuID0gbmV3IHN0YXRlLlRva2VuKCcnLCAnJywgMCk7XG4gICAgICBjb25zdCB0b2tlbkFycmF5OiBBcnJheTx0eXBlb2YgX2R1bW15VG9rZW4+ID0gW107XG4gICAgICBjaGlsZEZpbGVzLmZvckVhY2goKGZpbGVuYW1lKSA9PiB7XG4gICAgICAgIC8vIGNvbnN0IHNsb3ROYW1lID0gZmlsZW5hbWUucmVwbGFjZShleHRuYW1lKGZpbGVuYW1lKSwgJycpO1xuXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlU3RhcnQgPSBuZXcgc3RhdGUuVG9rZW4oJ2h0bWxfaW5saW5lJywgJycsIDApO1xuICAgICAgICB0ZW1wbGF0ZVN0YXJ0LmNvbnRlbnQgPSBgPHRlbXBsYXRlICMke2ZpbGVuYW1lfT5gO1xuICAgICAgICB0b2tlbkFycmF5LnB1c2godGVtcGxhdGVTdGFydCk7XG5cbiAgICAgICAgY29uc3QgcmVzb2x2ZWRQYXRoID0gam9pbihjb21wb25lbnREaXIsIGZpbGVuYW1lKTtcblxuICAgICAgICBjb25zdCB7IGV4dGVuc2lvbiwgZmlsZXBhdGgsIGxhbmcsIGxpbmVzLCB0aXRsZSB9ID1cbiAgICAgICAgICByYXdQYXRoVG9Ub2tlbihyZXNvbHZlZFBhdGgpO1xuICAgICAgICAvLyBBZGQgY29kZSB0b2tlbnMgZm9yIGVhY2ggbGluZVxuICAgICAgICBjb25zdCB0b2tlbiA9IG5ldyBzdGF0ZS5Ub2tlbignZmVuY2UnLCAnY29kZScsIDApO1xuICAgICAgICB0b2tlbi5pbmZvID0gYCR7bGFuZyB8fCBleHRlbnNpb259JHtsaW5lcyA/IGB7JHtsaW5lc319YCA6ICcnfSR7XG4gICAgICAgICAgdGl0bGUgPyBgWyR7dGl0bGV9XWAgOiAnJ1xuICAgICAgICB9YDtcblxuICAgICAgICB0b2tlbi5jb250ZW50ID0gYDw8PCAke2ZpbGVwYXRofWA7XG4gICAgICAgICh0b2tlbiBhcyBhbnkpLnNyYyA9IFtyZXNvbHZlZFBhdGhdO1xuICAgICAgICB0b2tlbkFycmF5LnB1c2godG9rZW4pO1xuXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlRW5kID0gbmV3IHN0YXRlLlRva2VuKCdodG1sX2lubGluZScsICcnLCAwKTtcbiAgICAgICAgdGVtcGxhdGVFbmQuY29udGVudCA9ICc8L3RlbXBsYXRlPic7XG4gICAgICAgIHRva2VuQXJyYXkucHVzaCh0ZW1wbGF0ZUVuZCk7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGVuZFRhZyA9IG5ldyBzdGF0ZS5Ub2tlbignaHRtbF9pbmxpbmUnLCAnJywgMCk7XG4gICAgICBlbmRUYWcuY29udGVudCA9ICc8L0RlbW9QcmV2aWV3Pic7XG4gICAgICB0b2tlbkFycmF5LnB1c2goZW5kVGFnKTtcblxuICAgICAgc3RhdGUudG9rZW5zLnNwbGljZShpbmRleCArIDEsIDAsIC4uLnRva2VuQXJyYXkpO1xuXG4gICAgICAvLyBjb25zb2xlLmxvZyhcbiAgICAgIC8vICAgc3RhdGUubWQucmVuZGVyZXIucmVuZGVyKHN0YXRlLnRva2Vucywgc3RhdGU/Lm9wdGlvbnMgPz8gW10sIHN0YXRlLmVudiksXG4gICAgICAvLyApO1xuICAgICAgcmV0dXJuICcnO1xuICAgIH0pO1xuICB9KTtcbn07XG5cbmZ1bmN0aW9uIGdlbmVyYXRlQ29udGVudEhhc2goaW5wdXQ6IHN0cmluZywgbGVuZ3RoOiBudW1iZXIgPSAxMCk6IHN0cmluZyB7XG4gIC8vIFx1NEY3Rlx1NzUyOCBTSEEtMjU2IFx1NzUxRlx1NjIxMFx1NTRDOFx1NUUwQ1x1NTAzQ1xuICBjb25zdCBoYXNoID0gY3J5cHRvLmNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShpbnB1dCkuZGlnZXN0KCdoZXgnKTtcblxuICAvLyBcdTVDMDZcdTU0QzhcdTVFMENcdTUwM0NcdThGNkNcdTYzNjJcdTRFM0EgQmFzZTM2IFx1N0YxNlx1NzgwMVx1RkYwQ1x1NUU3Nlx1NTNENlx1NjMwN1x1NUI5QVx1OTU3Rlx1NUVBNlx1NzY4NFx1NUI1N1x1N0IyNlx1NEY1Q1x1NEUzQVx1N0VEM1x1Njc5Q1xuICByZXR1cm4gTnVtYmVyLnBhcnNlSW50KGhhc2gsIDE2KS50b1N0cmluZygzNikuc2xpY2UoMCwgbGVuZ3RoKTtcbn1cbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRDpcXFxcQWRtaW5pc3RyYXRvclxcXFxEb2N1bWVudHNcXFxceS1jb2RlXFxcXGFwcHNcXFxcZG9jc1xcXFwudml0ZXByZXNzXFxcXGNvbmZpZ1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRDpcXFxcQWRtaW5pc3RyYXRvclxcXFxEb2N1bWVudHNcXFxceS1jb2RlXFxcXGFwcHNcXFxcZG9jc1xcXFwudml0ZXByZXNzXFxcXGNvbmZpZ1xcXFx6aC5tdHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6L0FkbWluaXN0cmF0b3IvRG9jdW1lbnRzL3ktY29kZS9hcHBzL2RvY3MvLnZpdGVwcmVzcy9jb25maWcvemgubXRzXCI7aW1wb3J0IHR5cGUgeyBEZWZhdWx0VGhlbWUgfSBmcm9tICd2aXRlcHJlc3MnO1xuXG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tICd2aXRlcHJlc3MnO1xuXG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vcGFja2FnZS5qc29uJztcblxuZXhwb3J0IGNvbnN0IHpoID0gZGVmaW5lQ29uZmlnKHtcbiAgZGVzY3JpcHRpb246ICdcdTYwQTZcdTc4MDEgJiBcdTRGNEVcdTRFRTNcdTc4MDFcdTdCQTFcdTc0MDZcdTdDRkJcdTdFREYnLFxuICBsYW5nOiAnemgtSGFucycsXG4gIHRoZW1lQ29uZmlnOiB7XG4gICAgZGFya01vZGVTd2l0Y2hMYWJlbDogJ1x1NEUzQlx1OTg5OCcsXG4gICAgZGFya01vZGVTd2l0Y2hUaXRsZTogJ1x1NTIwN1x1NjM2Mlx1NTIzMFx1NkRGMVx1ODI3Mlx1NkEyMVx1NUYwRicsXG4gICAgZG9jRm9vdGVyOiB7XG4gICAgICBuZXh0OiAnXHU0RTBCXHU0RTAwXHU5ODc1JyxcbiAgICAgIHByZXY6ICdcdTRFMEFcdTRFMDBcdTk4NzUnLFxuICAgIH0sXG4gICAgLy8gZWRpdExpbms6IHtcbiAgICAvLyAgIHBhdHRlcm46XG4gICAgLy8gICAgICdodHRwczovL2dpdGh1Yi5jb20vdmJlbmpzL3Z1ZS12YmVuLWFkbWluL2VkaXQvbWFpbi9kb2NzL3NyYy86cGF0aCcsXG4gICAgLy8gICB0ZXh0OiAnXHU1NzI4IEdpdEh1YiBcdTRFMEFcdTdGMTZcdThGOTFcdTZCNjRcdTk4NzVcdTk3NjInLFxuICAgIC8vIH0sXG4gICAgLy8gZm9vdGVyOiB7XG4gICAgLy8gICBjb3B5cmlnaHQ6IGBDb3B5cmlnaHQgXHUwMEE5IDIwMjAtJHtuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCl9IFZiZW5gLFxuICAgIC8vICAgbWVzc2FnZTogJ1x1NTdGQVx1NEU4RSBNSVQgXHU4QkI4XHU1M0VGXHU1M0QxXHU1RTAzLicsXG4gICAgLy8gfSxcbiAgICAvLyBsYW5nTWVudUxhYmVsOiAnXHU1OTFBXHU4QkVEXHU4QTAwJyxcbiAgICBsYXN0VXBkYXRlZDoge1xuICAgICAgZm9ybWF0T3B0aW9uczoge1xuICAgICAgICBkYXRlU3R5bGU6ICdzaG9ydCcsXG4gICAgICAgIHRpbWVTdHlsZTogJ21lZGl1bScsXG4gICAgICB9LFxuICAgICAgdGV4dDogJ1x1NjcwMFx1NTQwRVx1NjZGNFx1NjVCMFx1NEU4RScsXG4gICAgfSxcbiAgICBsaWdodE1vZGVTd2l0Y2hUaXRsZTogJ1x1NTIwN1x1NjM2Mlx1NTIzMFx1NkQ0NVx1ODI3Mlx1NkEyMVx1NUYwRicsXG4gICAgbmF2OiBuYXYoKSxcblxuICAgIG91dGxpbmU6IHtcbiAgICAgIGxhYmVsOiAnXHU5ODc1XHU5NzYyXHU1QkZDXHU4MjJBJyxcbiAgICB9LFxuICAgIHJldHVyblRvVG9wTGFiZWw6ICdcdTU2REVcdTUyMzBcdTk4NzZcdTkwRTgnLFxuXG4gICAgc2lkZWJhcjoge1xuICAgICAgJy9jb21tZXJjaWFsLyc6IHsgYmFzZTogJy9jb21tZXJjaWFsLycsIGl0ZW1zOiBzaWRlYmFyQ29tbWVyY2lhbCgpIH0sXG4gICAgICAnL2NvbXBvbmVudHMvJzogeyBiYXNlOiAnL2NvbXBvbmVudHMvJywgaXRlbXM6IHNpZGViYXJDb21wb25lbnRzKCkgfSxcbiAgICAgICcvZ3VpZGUvJzogeyBiYXNlOiAnL2d1aWRlLycsIGl0ZW1zOiBzaWRlYmFyR3VpZGUoKSB9LFxuICAgIH0sXG4gICAgc2lkZWJhck1lbnVMYWJlbDogJ1x1ODNEQ1x1NTM1NScsXG4gIH0sXG59KTtcblxuZnVuY3Rpb24gc2lkZWJhckd1aWRlKCk6IERlZmF1bHRUaGVtZS5TaWRlYmFySXRlbVtdIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxuICAgICAgdGV4dDogJ1x1N0I4MFx1NEVDQicsXG4gICAgICBpdGVtczogW1xuICAgICAgICB7XG4gICAgICAgICAgbGluazogJ2ludHJvZHVjdGlvbi9wbGF0Zm9ybScsXG4gICAgICAgICAgdGV4dDogJ1x1NTE3M1x1NEU4RVx1NjBBNlx1NzgwMScsXG4gICAgICAgIH0sXG4gICAgICAgIHsgbGluazogJ2ludHJvZHVjdGlvbi9xdWljay1zdGFydCcsIHRleHQ6ICdcdTVGRUJcdTkwMUZcdTVGMDBcdTU5Q0InIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiYXNlOiAnLycsXG4gICAgICAgICAgbGluazogJ2NvbXBvbmVudHMvaW5kZXgnLFxuICAgICAgICAgIHRleHQ6ICdcdTdFQzRcdTRFRjZcdTY1ODdcdTY4NjMnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRleHQ6ICdcdTU3RkFcdTc4NDAnLFxuICAgICAgaXRlbXM6IFtcbiAgICAgICAgeyBsaW5rOiAnZXNzZW50aWFscy9jb25jZXB0JywgdGV4dDogJ1x1NTdGQVx1Nzg0MFx1Njk4Mlx1NUZGNScgfSxcbiAgICAgICAgeyBsaW5rOiAnZXNzZW50aWFscy9pY29ucycsIHRleHQ6ICdcdTU2RkVcdTY4MDcnIH0sXG4gICAgICAgIHsgbGluazogJ2Vzc2VudGlhbHMvc3R5bGVzJywgdGV4dDogJ1x1NjgzN1x1NUYwRicgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICB0ZXh0OiAnXHU2REYxXHU1MTY1JyxcbiAgICAgIGl0ZW1zOiBbeyBsaW5rOiAnaW4tZGVwdGgvZmVhdHVyZXMnLCB0ZXh0OiAnXHU1RTM4XHU3NTI4XHU1MjlGXHU4MEZEJyB9XSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRleHQ6ICdcdTUxNzZcdTRFRDYnLFxuICAgICAgaXRlbXM6IFtcbiAgICAgICAgLy8geyBsaW5rOiAnb3RoZXIvcHJvamVjdC11cGRhdGUnLCB0ZXh0OiAnXHU5ODc5XHU3NkVFXHU2NkY0XHU2NUIwJyB9LFxuICAgICAgICAvLyB7IGxpbms6ICdvdGhlci9yZW1vdmUtY29kZScsIHRleHQ6ICdcdTc5RkJcdTk2NjRcdTRFRTNcdTc4MDEnIH0sXG4gICAgICAgIC8vIHsgbGluazogJ290aGVyL2ZhcScsIHRleHQ6ICdcdTVFMzhcdTg5QzFcdTk1RUVcdTk4OTgnIH0sXG4gICAgICBdLFxuICAgIH0sXG4gIF07XG59XG5cbmZ1bmN0aW9uIHNpZGViYXJDb21tZXJjaWFsKCk6IERlZmF1bHRUaGVtZS5TaWRlYmFySXRlbVtdIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBsaW5rOiAnY29tbXVuaXR5JyxcbiAgICAgIHRleHQ6ICdcdTRFQTRcdTZENDFcdTdGQTQnLFxuICAgIH0sXG4gICAge1xuICAgICAgbGluazogJ3RlY2huaWNhbC1zdXBwb3J0JyxcbiAgICAgIHRleHQ6ICdcdTYyODBcdTY3MkZcdTY1MkZcdTYzMDEnLFxuICAgIH0sXG4gIF07XG59XG5cbmZ1bmN0aW9uIHNpZGViYXJDb21wb25lbnRzKCk6IERlZmF1bHRUaGVtZS5TaWRlYmFySXRlbVtdIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICB0ZXh0OiAnXHU3RUM0XHU0RUY2JyxcbiAgICAgIGl0ZW1zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBsaW5rOiAnaW50cm9kdWN0aW9uJyxcbiAgICAgICAgICB0ZXh0OiAnXHU0RUNCXHU3RUNEJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxuICAgICAgdGV4dDogJ1x1NUUwM1x1NUM0MFx1N0VDNFx1NEVGNicsXG4gICAgICBpdGVtczogW1xuICAgICAgICB7XG4gICAgICAgICAgbGluazogJ2xheW91dC11aS9wYWdlJyxcbiAgICAgICAgICB0ZXh0OiAnUGFnZSBcdTk4NzVcdTk3NjInLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvbGxhcHNlZDogZmFsc2UsXG4gICAgICB0ZXh0OiAnXHU5MDFBXHU3NTI4XHU3RUM0XHU0RUY2JyxcbiAgICAgIGl0ZW1zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBsaW5rOiAnY29tbW9uLXVpL3ZiZW4tYXBpLWNvbXBvbmVudCcsXG4gICAgICAgICAgdGV4dDogJ0FwaUNvbXBvbmVudCBBcGlcdTdFQzRcdTRFRjZcdTUzMDVcdTg4QzVcdTU2NjgnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbGluazogJ2NvbW1vbi11aS92YmVuLW1vZGFsJyxcbiAgICAgICAgICB0ZXh0OiAnTW9kYWwgXHU2QTIxXHU2MDAxXHU2ODQ2JyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGxpbms6ICdjb21tb24tdWkvdmJlbi1kcmF3ZXInLFxuICAgICAgICAgIHRleHQ6ICdEcmF3ZXIgXHU2MkJEXHU1QzQ5JyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGxpbms6ICdjb21tb24tdWkvdmJlbi1mb3JtJyxcbiAgICAgICAgICB0ZXh0OiAnRm9ybSBcdTg4NjhcdTUzNTUnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbGluazogJ2NvbW1vbi11aS92YmVuLXZ4ZS10YWJsZScsXG4gICAgICAgICAgdGV4dDogJ1Z4ZSBUYWJsZSBcdTg4NjhcdTY4M0MnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbGluazogJ2NvbW1vbi11aS92YmVuLWNvdW50LXRvLWFuaW1hdG9yJyxcbiAgICAgICAgICB0ZXh0OiAnQ291bnRUb0FuaW1hdG9yIFx1NjU3MFx1NUI1N1x1NTJBOFx1NzUzQicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBsaW5rOiAnY29tbW9uLXVpL3ZiZW4tZWxsaXBzaXMtdGV4dCcsXG4gICAgICAgICAgdGV4dDogJ0VsbGlwc2lzVGV4dCBcdTc3MDFcdTc1NjVcdTY1ODdcdTY3MkMnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdO1xufVxuXG5mdW5jdGlvbiBuYXYoKTogRGVmYXVsdFRoZW1lLk5hdkl0ZW1bXSB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgYWN0aXZlTWF0Y2g6ICdeLyhndWlkZXxjb21wb25lbnRzKS8nLFxuICAgICAgdGV4dDogJ1x1NjU4N1x1Njg2MycsXG4gICAgICBpdGVtczogW1xuICAgICAgICB7XG4gICAgICAgICAgYWN0aXZlTWF0Y2g6ICdeL2d1aWRlLycsXG4gICAgICAgICAgbGluazogJy9ndWlkZS9pbnRyb2R1Y3Rpb24vcGxhdGZvcm0nLFxuICAgICAgICAgIHRleHQ6ICdcdTRGNEVcdTRFRTNcdTc4MDFcdTdCQTFcdTc0MDZcdTVFNzNcdTUzRjAnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYWN0aXZlTWF0Y2g6ICdeL3JlbmRlcmVyLycsXG4gICAgICAgICAgbGluazogJy9yZW5kZXJlci9pbmRleCcsXG4gICAgICAgICAgdGV4dDogJ1x1NkUzMlx1NjdEM1x1NTY2OCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBhY3RpdmVNYXRjaDogJ14vZGVzaWduZXIvJyxcbiAgICAgICAgICBsaW5rOiAnL2Rlc2lnbmVyL2luZGV4JyxcbiAgICAgICAgICB0ZXh0OiAnXHU4QkJFXHU4QkExXHU1NjY4JyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGFjdGl2ZU1hdGNoOiAnXi9tYXRlcmlhbHMvJyxcbiAgICAgICAgICBsaW5rOiAnL21hdGVyaWFscy9pbmRleCcsXG4gICAgICAgICAgdGV4dDogJ1x1NzI2OVx1NjU5OScsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgdGV4dDogJ1x1NEY0RVx1NEVFM1x1NzgwMVx1N0JBMVx1NzQwNlx1NUU3M1x1NTNGMCcsXG4gICAgICBpdGVtczogW1xuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogJ1x1NjBBNlx1NzgwMSAyLjAnLFxuICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGxpbms6ICdodHRwczovL3ktY29kZS5zaGl5dWUuY29tJyxcbiAgICAgICAgICAgICAgdGV4dDogJ1x1NzUxRlx1NEVBN1x1NzI0OFx1NjcyQycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsaW5rOiAnaHR0cHM6Ly95LWNvZGUtcHJlLnNoaXl1ZS5jb20nLFxuICAgICAgICAgICAgICB0ZXh0OiAnXHU5ODg0XHU1M0QxXHU1RTAzXHU3MjQ4XHU2NzJDJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGxpbms6ICdodHRwczovL3ktY29kZS5zaGl5dWUuY29tJyxcbiAgICAgICAgICAgICAgdGV4dDogJ1x1NkYxNFx1NzkzQVx1NzI0OFx1NjcyQycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiAnXHU1MTc2XHU0RUQ2JyxcbiAgICAgICAgICBpdGVtczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsaW5rOiAnaHR0cHM6Ly9jdXN0b20tY2hhcnQuc2hpeXVlZ2FtZS5jb20vJyxcbiAgICAgICAgICAgICAgdGV4dDogJ1x1NjBBNlx1NzgwMSAxLjBcdUZGMDhcdTVERjJcdTVFOUZcdTVGMDNcdUZGMENcdTRFMERcdTUxOERcdTY2RjRcdTY1QjBcdTUyOUZcdTgwRkRcdUZGMDknLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRleHQ6IHZlcnNpb24sXG4gICAgICBpdGVtczogW1xuICAgICAgICB7XG4gICAgICAgICAgbGluazogJy4vY2hhbmdlbG9nJyxcbiAgICAgICAgICB0ZXh0OiAnXHU2NkY0XHU2NUIwXHU2NUU1XHU1RkQ3JyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGxpbms6ICdodHRwczovL2RvYy53ZWl4aW4ucXEuY29tL3NtYXJ0c2hlZXQvczNfQWEwQVN3WjBBT0VyMlRiUHVhTVJvQ3ZzMXl6akE/c2NvZGU9QU93QVlnZW9BQWtvVDZWRmEwQWEwQVN3WjBBT0UmdGFiPXE5NzlsaiZ2aWV3SWQ9dnBEVUZzJyxcbiAgICAgICAgICB0ZXh0OiAnXHU2NkY0XHU2NUIwXHU4REVGXHU3RUJGXHU1NkZFJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICB0ZXh0OiAnXHVEODNEXHVEQzY4XHUyMDBEXHVEODNEXHVEQzY2XHUyMDBEXHVEODNEXHVEQzY2IFx1OTVFRVx1OTg5OFx1NTNDRFx1OTk4OCcsXG4gICAgICBpdGVtczogW1xuICAgICAgICB7XG4gICAgICAgICAgbGluazogJ2h0dHBzOi8vcXVuLnFxLmNvbS9xcXdlYi9xdW5wcm8vc2hhcmU/X3d2PTMmX3d3dj0xMjgmYXBwQ2hhbm5lbD1zaGFyZSZpbnZpdGVDb2RlPTIyeVN6ajdwS2l3JmJ1c2luZXNzVHlwZT05JmZyb209MjQ2NjEwJmJpej1rYSZtYWluU291cmNlSWQ9c2hhcmUmc3ViU291cmNlSWQ9b3RoZXJzJmp1bXBzb3VyY2U9c2hvcnR1cmwjL3BjJyxcbiAgICAgICAgICB0ZXh0OiAnXHU3MEVEXHU1RkMzXHU1OTI3XHU1OUQwJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgXTtcbn1cblxuZXhwb3J0IGNvbnN0IHNlYXJjaDogRGVmYXVsdFRoZW1lLkFsZ29saWFTZWFyY2hPcHRpb25zWydsb2NhbGVzJ10gPSB7XG4gIHJvb3Q6IHtcbiAgICBwbGFjZWhvbGRlcjogJ1x1NjQxQ1x1N0QyMlx1NjU4N1x1Njg2MycsXG4gICAgdHJhbnNsYXRpb25zOiB7XG4gICAgICBidXR0b246IHtcbiAgICAgICAgYnV0dG9uQXJpYUxhYmVsOiAnXHU2NDFDXHU3RDIyXHU2NTg3XHU2ODYzJyxcbiAgICAgICAgYnV0dG9uVGV4dDogJ1x1NjQxQ1x1N0QyMlx1NjU4N1x1Njg2MycsXG4gICAgICB9LFxuICAgICAgbW9kYWw6IHtcbiAgICAgICAgZXJyb3JTY3JlZW46IHtcbiAgICAgICAgICBoZWxwVGV4dDogJ1x1NEY2MFx1NTNFRlx1ODBGRFx1OTcwMFx1ODk4MVx1NjhDMFx1NjdFNVx1NEY2MFx1NzY4NFx1N0Y1MVx1N0VEQ1x1OEZERVx1NjNBNScsXG4gICAgICAgICAgdGl0bGVUZXh0OiAnXHU2NUUwXHU2Q0Q1XHU4M0I3XHU1M0Q2XHU3RUQzXHU2NzlDJyxcbiAgICAgICAgfSxcbiAgICAgICAgZm9vdGVyOiB7XG4gICAgICAgICAgY2xvc2VUZXh0OiAnXHU1MTczXHU5NUVEJyxcbiAgICAgICAgICBuYXZpZ2F0ZVRleHQ6ICdcdTUyMDdcdTYzNjInLFxuICAgICAgICAgIHNlYXJjaEJ5VGV4dDogJ1x1NjQxQ1x1N0QyMlx1NjNEMFx1NEY5Qlx1ODAwNScsXG4gICAgICAgICAgc2VsZWN0VGV4dDogJ1x1OTAwOVx1NjJFOScsXG4gICAgICAgIH0sXG4gICAgICAgIG5vUmVzdWx0c1NjcmVlbjoge1xuICAgICAgICAgIG5vUmVzdWx0c1RleHQ6ICdcdTY1RTBcdTZDRDVcdTYyN0VcdTUyMzBcdTc2RjhcdTUxNzNcdTdFRDNcdTY3OUMnLFxuICAgICAgICAgIHJlcG9ydE1pc3NpbmdSZXN1bHRzTGlua1RleHQ6ICdcdTcwQjlcdTUxRkJcdTUzQ0RcdTk5ODgnLFxuICAgICAgICAgIHJlcG9ydE1pc3NpbmdSZXN1bHRzVGV4dDogJ1x1NEY2MFx1OEJBNFx1NEUzQVx1OEJFNVx1NjdFNVx1OEJFMlx1NUU5NFx1OEJFNVx1NjcwOVx1N0VEM1x1Njc5Q1x1RkYxRicsXG4gICAgICAgICAgc3VnZ2VzdGVkUXVlcnlUZXh0OiAnXHU0RjYwXHU1M0VGXHU0RUU1XHU1QzFEXHU4QkQ1XHU2N0U1XHU4QkUyJyxcbiAgICAgICAgfSxcbiAgICAgICAgc2VhcmNoQm94OiB7XG4gICAgICAgICAgY2FuY2VsQnV0dG9uQXJpYUxhYmVsOiAnXHU1M0Q2XHU2RDg4JyxcbiAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAnXHU1M0Q2XHU2RDg4JyxcbiAgICAgICAgICByZXNldEJ1dHRvbkFyaWFMYWJlbDogJ1x1NkUwNVx1OTY2NFx1NjdFNVx1OEJFMlx1Njc2MVx1NEVGNicsXG4gICAgICAgICAgcmVzZXRCdXR0b25UaXRsZTogJ1x1NkUwNVx1OTY2NFx1NjdFNVx1OEJFMlx1Njc2MVx1NEVGNicsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXJ0U2NyZWVuOiB7XG4gICAgICAgICAgZmF2b3JpdGVTZWFyY2hlc1RpdGxlOiAnXHU2NTM2XHU4NUNGJyxcbiAgICAgICAgICBub1JlY2VudFNlYXJjaGVzVGV4dDogJ1x1NkNBMVx1NjcwOVx1NjQxQ1x1N0QyMlx1NTM4Nlx1NTNGMicsXG4gICAgICAgICAgcmVjZW50U2VhcmNoZXNUaXRsZTogJ1x1NjQxQ1x1N0QyMlx1NTM4Nlx1NTNGMicsXG4gICAgICAgICAgcmVtb3ZlRmF2b3JpdGVTZWFyY2hCdXR0b25UaXRsZTogJ1x1NEVDRVx1NjUzNlx1ODVDRlx1NEUyRFx1NzlGQlx1OTY2NCcsXG4gICAgICAgICAgcmVtb3ZlUmVjZW50U2VhcmNoQnV0dG9uVGl0bGU6ICdcdTRFQ0VcdTY0MUNcdTdEMjJcdTUzODZcdTUzRjJcdTRFMkRcdTc5RkJcdTk2NjQnLFxuICAgICAgICAgIHNhdmVSZWNlbnRTZWFyY2hCdXR0b25UaXRsZTogJ1x1NEZERFx1NUI1OFx1ODFGM1x1NjQxQ1x1N0QyMlx1NTM4Nlx1NTNGMicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG59O1xuIiwgIntcbiAgXCJuYW1lXCI6IFwieS1jb2RlLW1hdHJpeFwiLFxuICBcInZlcnNpb25cIjogXCIxLjAuMC1hbHBoYS4xXCIsXG4gIFwicHJpdmF0ZVwiOiB0cnVlLFxuICBcImtleXdvcmRzXCI6IFtcbiAgICBcIm1vbm9yZXBvXCIsXG4gICAgXCJ0dXJib3JlcG9cIixcbiAgICBcInktY29kZVwiLFxuICAgIFwibG93LWNvZGVcIixcbiAgICBcIm5vZGUtY29kZVwiXG4gIF0sXG4gIFwiYXV0aG9yXCI6IHtcbiAgICBcIm5hbWVcIjogXCJ3YW5neHVlZmVuZ1wiLFxuICAgIFwiZW1haWxcIjogXCJ3YW5neHVlZmVuZ0BzaGl5dWUuY29tXCJcbiAgfSxcbiAgXCJ0eXBlXCI6IFwibW9kdWxlXCIsXG4gIFwic2NyaXB0c1wiOiB7XG4gICAgXCJidWlsZFwiOiBcImNyb3NzLWVudiBOT0RFX09QVElPTlM9LS1tYXgtb2xkLXNwYWNlLXNpemU9ODE5MiB0dXJibyBidWlsZFwiLFxuICAgIFwiYnVpbGQ6c3RhZ2luZ1wiOiBcImNyb3NzLWVudiBOT0RFX09QVElPTlM9LS1tYXgtb2xkLXNwYWNlLXNpemU9ODE5MiB0dXJibyBidWlsZDpzdGFnaW5nXCIsXG4gICAgXCJidWlsZDpwcm9kXCI6IFwiY3Jvc3MtZW52IE5PREVfT1BUSU9OUz0tLW1heC1vbGQtc3BhY2Utc2l6ZT04MTkyIHR1cmJvIGJ1aWxkOnByb2RcIixcbiAgICBcImJ1aWxkOmFuYWx5emVcIjogXCJ0dXJibyBidWlsZDphbmFseXplXCIsXG4gICAgXCJidWlsZDpkb2NrZXJcIjogXCIuL3NjcmlwdHMvZGVwbG95L2J1aWxkLWxvY2FsLWRvY2tlci1pbWFnZS5zaFwiLFxuICAgIFwiYnVpbGQ6ZG9jc1wiOiBcInBucG0gcnVuIGJ1aWxkIC0tZmlsdGVyPUB2YmVuL2RvY3NcIixcbiAgICBcImJ1aWxkOnJlbmRlcmVyXCI6IFwicG5wbSBydW4gYnVpbGQgLS1maWx0ZXI9QHN5L3ktY29kZS1yZW5kZXJlclwiLFxuICAgIFwiYnVpbGQ6cGxhdGZvcm1cIjogXCJwbnBtIHJ1biBidWlsZCAtLWZpbHRlcj1Ac3kveS1jb2RlLXBsYXRmb3JtXCIsXG4gICAgXCJidWlsZDpkZXNpZ25lclwiOiBcInBucG0gcnVuIGJ1aWxkIC0tZmlsdGVyPUBzeS95LWNvZGUtZGVzaWduZXJcIixcbiAgICBcImJ1aWxkOnBsYXlcIjogXCJwbnBtIHJ1biBidWlsZCAtLWZpbHRlcj1AdmJlbi9wbGF5Z3JvdW5kXCIsXG4gICAgXCJjaGFuZ2VzZXRcIjogXCJwbnBtIGV4ZWMgY2hhbmdlc2V0XCIsXG4gICAgXCJjaGVja1wiOiBcInBucG0gcnVuIGNoZWNrOmNpcmN1bGFyICYmIHBucG0gcnVuIGNoZWNrOmRlcCAmJiBwbnBtIHJ1biBjaGVjazp0eXBlICYmIHBucG0gY2hlY2s6Y3NwZWxsXCIsXG4gICAgXCJjaGVjazpjaXJjdWxhclwiOiBcInZzaCBjaGVjay1jaXJjdWxhclwiLFxuICAgIFwiY2hlY2s6Y3NwZWxsXCI6IFwiY3NwZWxsIGxpbnQgKiovKi50cyAqKi9SRUFETUUubWQgLmNoYW5nZXNldC8qLm1kIC0tbm8tcHJvZ3Jlc3NcIixcbiAgICBcImNoZWNrOmRlcFwiOiBcInZzaCBjaGVjay1kZXBcIixcbiAgICBcImNoZWNrOnR5cGVcIjogXCJ0dXJibyBydW4gdHlwZWNoZWNrXCIsXG4gICAgXCJjbGVhblwiOiBcIm5vZGUgLi9zY3JpcHRzL2NsZWFuLm1qc1wiLFxuICAgIFwiY2xlYW46ZGlzdFwiOiBcIm5vZGUgLi9zY3JpcHRzL2NsZWFuLWRpc3QubWpzICYmIHBucG0gaVwiLFxuICAgIFwiY29tbWl0XCI6IFwiY3pnXCIsXG4gICAgXCJkZXZcIjogXCJ0dXJiby1ydW4gZGV2XCIsXG4gICAgXCJkZXY6ZG9jc1wiOiBcInBucG0gLUYgQHZiZW4vZG9jcyBydW4gZGV2XCIsXG4gICAgXCJkZXY6cmVuZGVyZXJcIjogXCJwbnBtIC1GIEBzeS95LWNvZGUtcmVuZGVyZXIgcnVuIGRldlwiLFxuICAgIFwiZGV2OnBsYXlcIjogXCJwbnBtIC1GIEB2YmVuL3BsYXlncm91bmQgcnVuIGRldlwiLFxuICAgIFwiZm9ybWF0XCI6IFwidnNoIGxpbnQgLS1mb3JtYXRcIixcbiAgICBcImxpbnRcIjogXCJ2c2ggbGludFwiLFxuICAgIFwicG9zdGluc3RhbGxcIjogXCJwbnBtIC1yIHJ1biBzdHViIC0taWYtcHJlc2VudFwiLFxuICAgIFwicHJlaW5zdGFsbFwiOiBcIm5weCBvbmx5LWFsbG93IHBucG1cIixcbiAgICBcInByZXBhcmVcIjogXCJpcy1jaSB8fCBodXNreVwiLFxuICAgIFwicHJldmlld1wiOiBcInR1cmJvLXJ1biBwcmV2aWV3XCIsXG4gICAgXCJwdWJsaW50XCI6IFwidnNoIHB1YmxpbnRcIixcbiAgICBcInJlaW5zdGFsbFwiOiBcInBucG0gY2xlYW4gLS1kZWwtbG9jayAmJiBwbnBtIGluc3RhbGwgJiYgcG5wbSBzdG9yZSBwcnVuZVwiLFxuICAgIFwidGVzdDp1bml0XCI6IFwidml0ZXN0IHJ1biAtLWRvbVwiLFxuICAgIFwidGVzdDplMmVcIjogXCJ0dXJibyBydW4gdGVzdDplMmVcIixcbiAgICBcInVwZGF0ZTpkZXBzXCI6IFwibnB4IHRhemUgLXIgLXdcIixcbiAgICBcInZlcnNpb25cIjogXCJwbnBtIGV4ZWMgY2hhbmdlc2V0IHZlcnNpb24gJiYgcG5wbSBpbnN0YWxsIC0tbm8tZnJvemVuLWxvY2tmaWxlXCIsXG4gICAgXCJyZXNldFwiOiBcInBucG0gY2xlYW4gJiYgcG5wbSBpbnN0YWxsXCJcbiAgfSxcbiAgXCJkZXZEZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQGNoYW5nZXNldHMvY2hhbmdlbG9nLWdpdGh1YlwiOiBcImNhdGFsb2c6XCIsXG4gICAgXCJAY2hhbmdlc2V0cy9jbGlcIjogXCJjYXRhbG9nOlwiLFxuICAgIFwiQHBsYXl3cmlnaHQvdGVzdFwiOiBcImNhdGFsb2c6XCIsXG4gICAgXCJAdHlwZXMvbm9kZVwiOiBcImNhdGFsb2c6XCIsXG4gICAgXCJAdmJlbi9jb21taXRsaW50LWNvbmZpZ1wiOiBcIndvcmtzcGFjZToqXCIsXG4gICAgXCJAdmJlbi9lc2xpbnQtY29uZmlnXCI6IFwid29ya3NwYWNlOipcIixcbiAgICBcIkB2YmVuL3ByZXR0aWVyLWNvbmZpZ1wiOiBcIndvcmtzcGFjZToqXCIsXG4gICAgXCJAdmJlbi9zdHlsZWxpbnQtY29uZmlnXCI6IFwid29ya3NwYWNlOipcIixcbiAgICBcIkB2YmVuL3RhaWx3aW5kLWNvbmZpZ1wiOiBcIndvcmtzcGFjZToqXCIsXG4gICAgXCJAdmJlbi90c2NvbmZpZ1wiOiBcIndvcmtzcGFjZToqXCIsXG4gICAgXCJAdmJlbi90dXJiby1ydW5cIjogXCJ3b3Jrc3BhY2U6KlwiLFxuICAgIFwiQHZiZW4vdml0ZS1jb25maWdcIjogXCJ3b3Jrc3BhY2U6KlwiLFxuICAgIFwiQHZiZW4vdnNoXCI6IFwid29ya3NwYWNlOipcIixcbiAgICBcIkB2aXRlanMvcGx1Z2luLXZ1ZVwiOiBcImNhdGFsb2c6XCIsXG4gICAgXCJAdml0ZWpzL3BsdWdpbi12dWUtanN4XCI6IFwiY2F0YWxvZzpcIixcbiAgICBcIkB2dWUvdGVzdC11dGlsc1wiOiBcImNhdGFsb2c6XCIsXG4gICAgXCJhdXRvcHJlZml4ZXJcIjogXCJjYXRhbG9nOlwiLFxuICAgIFwiY3Jvc3MtZW52XCI6IFwiY2F0YWxvZzpcIixcbiAgICBcImNzcGVsbFwiOiBcImNhdGFsb2c6XCIsXG4gICAgXCJoYXBweS1kb21cIjogXCJjYXRhbG9nOlwiLFxuICAgIFwiaHVza3lcIjogXCJjYXRhbG9nOlwiLFxuICAgIFwiaXMtY2lcIjogXCJjYXRhbG9nOlwiLFxuICAgIFwibGludC1zdGFnZWRcIjogXCJjYXRhbG9nOlwiLFxuICAgIFwicGxheXdyaWdodFwiOiBcImNhdGFsb2c6XCIsXG4gICAgXCJyaW1yYWZcIjogXCJjYXRhbG9nOlwiLFxuICAgIFwidGFpbHdpbmRjc3NcIjogXCJjYXRhbG9nOlwiLFxuICAgIFwidHVyYm9cIjogXCJjYXRhbG9nOlwiLFxuICAgIFwidHlwZXNjcmlwdFwiOiBcImNhdGFsb2c6XCIsXG4gICAgXCJ1bmJ1aWxkXCI6IFwiY2F0YWxvZzpcIixcbiAgICBcInZpdGVcIjogXCJjYXRhbG9nOlwiLFxuICAgIFwidml0ZXN0XCI6IFwiY2F0YWxvZzpcIixcbiAgICBcInZ1ZVwiOiBcImNhdGFsb2c6XCIsXG4gICAgXCJ2dWUtdHNjXCI6IFwiY2F0YWxvZzpcIlxuICB9LFxuICBcImVuZ2luZXNcIjoge1xuICAgIFwibm9kZVwiOiBcIj49MjAuMTAuMFwiLFxuICAgIFwicG5wbVwiOiBcIj49MTAuNi4yXCJcbiAgfSxcbiAgXCJwYWNrYWdlTWFuYWdlclwiOiBcInBucG1AMTAuNi4yXCIsXG4gIFwicG5wbVwiOiB7XG4gICAgXCJwZWVyRGVwZW5kZW5jeVJ1bGVzXCI6IHtcbiAgICAgIFwiYWxsb3dlZFZlcnNpb25zXCI6IHtcbiAgICAgICAgXCJlc2xpbnRcIjogXCIqXCJcbiAgICAgIH1cbiAgICB9LFxuICAgIFwib3ZlcnJpZGVzXCI6IHtcbiAgICAgIFwiQGFzdC1ncmVwL25hcGlcIjogXCJjYXRhbG9nOlwiLFxuICAgICAgXCJAY3RybC90aW55Y29sb3JcIjogXCJjYXRhbG9nOlwiLFxuICAgICAgXCJjbHN4XCI6IFwiY2F0YWxvZzpcIixcbiAgICAgIFwiZXNidWlsZFwiOiBcIjAuMjQuMFwiLFxuICAgICAgXCJwaW5pYVwiOiBcImNhdGFsb2c6XCIsXG4gICAgICBcInZ1ZVwiOiBcImNhdGFsb2c6XCJcbiAgICB9LFxuICAgIFwibmV2ZXJCdWlsdERlcGVuZGVuY2llc1wiOiBbXG4gICAgICBcImNhbnZhc1wiLFxuICAgICAgXCJub2RlLWd5cFwiXG4gICAgXVxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQStXLFNBQVMsZUFBZTtBQUN2WSxTQUFTLDZCQUE2Qjs7O0FDRXRDLFNBQVMsZUFBZTtBQUV4QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsT0FBTyxjQUFjO0FBQ3JCLFNBQVMsZ0JBQUFBLGVBQWMsNEJBQTRCO0FBQ25EO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLOzs7QUNqQlAsT0FBTyxZQUFZO0FBQ25CLFNBQVMsbUJBQW1CO0FBQzVCLFNBQVMsWUFBWTtBQUVkLElBQU07QUFBQTtBQUFBLEVBRVg7QUFBQTtBQUVGLFNBQVMsZUFBZSxTQUFpQjtBQUN2QyxRQUFNO0FBQUEsSUFDSixXQUFXO0FBQUEsSUFDWCxZQUFZO0FBQUEsSUFDWixTQUFTO0FBQUEsSUFDVCxRQUFRO0FBQUEsSUFDUixPQUFPO0FBQUEsSUFDUCxXQUFXO0FBQUEsRUFDYixLQUFLLGNBQWMsS0FBSyxPQUFPLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUUvQyxRQUFNLFFBQVEsWUFBWSxTQUFTLE1BQU0sR0FBRyxFQUFFLElBQUksS0FBSztBQUV2RCxTQUFPLEVBQUUsV0FBVyxVQUFVLE1BQU0sT0FBTyxRQUFRLE1BQU07QUFDM0Q7QUFFTyxJQUFNLG9CQUFvQixDQUFDLE9BQXlCO0FBQ3pELEtBQUcsS0FBSyxNQUFNLE1B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TztBQUFBLFFBQ0w7QUFBQSxVQUNFLGFBQWE7QUFBQSxVQUNiLE1BQU07QUFBQSxVQUNOLE1BQU07QUFBQSxRQUNSO0FBQUEsUUFDQTtBQUFBLFVBQ0UsYUFBYTtBQUFBLFVBQ2IsTUFBTTtBQUFBLFVBQ04sTUFBTTtBQUFBLFFBQ1I7QUFBQSxRQUNBO0FBQUEsVUFDRSxhQUFhO0FBQUEsVUFDYixNQUFNO0FBQUEsVUFDTixNQUFNO0FBQUEsUUFDUjtBQUFBLFFBQ0E7QUFBQSxVQUNFLGFBQWE7QUFBQSxVQUNiLE1BQU07QUFBQSxVQUNOLE1BQU07QUFBQSxRQUNSO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxJQUNBO0FBQUEsTUFDRSxNQUFNO0FBQUEsTUFDTixPQUFPO0FBQUEsUUFDTDtBQUFBLFVBQ0UsTUFBTTtBQUFBLFVBQ04sT0FBTztBQUFBLFlBQ0w7QUFBQSxjQUNFLE1BQU07QUFBQSxjQUNOLE1BQU07QUFBQSxZQUNSO0FBQUEsWUFDQTtBQUFBLGNBQ0UsTUFBTTtBQUFBLGNBQ04sTUFBTTtBQUFBLFlBQ1I7QUFBQSxZQUNBO0FBQUEsY0FDRSxNQUFNO0FBQUEsY0FDTixNQUFNO0FBQUEsWUFDUjtBQUFBLFVBQ0Y7QUFBQSxRQUNGO0FBQUEsUUFDQTtBQUFBLFVBQ0UsTUFBTTtBQUFBLFVBQ04sT0FBTztBQUFBLFlBQ0w7QUFBQSxjQUNFLE1BQU07QUFBQSxjQUNOLE1BQU07QUFBQSxZQUNSO0FBQUEsVUFDRjtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLElBQ0E7QUFBQSxNQUNFLE1BQU07QUFBQSxNQUNOLE9BQU87QUFBQSxRQUNMO0FBQUEsVUFDRSxNQUFNO0FBQUEsVUFDTixNQUFNO0FBQUEsUUFDUjtBQUFBLFFBQ0E7QUFBQSxVQUNFLE1BQU07QUFBQSxVQUNOLE1BQU07QUFBQSxRQUNSO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxJQUNBO0FBQUEsTUFDRSxNQUFNO0FBQUEsTUFDTixPQUFPO0FBQUEsUUFDTDtBQUFBLFVBQ0UsTUFBTTtBQUFBLFVBQ04sTUFB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QUNBLE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxJQUNSO0FBQUEsSUFFQSxLQUFLO0FBQUEsTUFDSCxVQUFVLENBQUMsV0FBVztBQUFBLElBQ3hCO0FBQUEsRUFDRjtBQUNGLENBQUM7QUFFRCxTQUFTLE9BQXFCO0FBQzVCLFNBQU87QUFBQSxJQUNMLENBQUMsUUFBUSxFQUFFLFNBQVMsZUFBZSxNQUFNLFNBQVMsQ0FBQztBQUFBLElBQ25EO0FBQUEsTUFDRTtBQUFBLE1BQ0E7QUFBQSxRQUNFLFNBQVM7QUFBQSxRQUNULE1BQU07QUFBQSxNQUNSO0FBQUEsSUFDRjtBQUFBLElBQ0EsQ0FBQyxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsS0FBSyxRQUFRLE1BQU0sZ0JBQWdCLENBQUM7QUFBQSxJQUNyRTtBQUFBLE1BQ0U7QUFBQSxNQUNBO0FBQUEsUUFDRSxTQUNFO0FBQUEsUUFDRixNQUFNO0FBQUEsTUFDUjtBQUFBLElBQ0Y7QUFBQSxJQUNBLENBQUMsUUFBUSxFQUFFLFNBQVMsbUJBQW1CLE1BQU0sV0FBVyxDQUFDO0FBQUEsSUFDekQsQ0FBQyxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsS0FBSyxPQUFPLENBQUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9oRDtBQUNGO0FBRUEsU0FBUyxNQUFrQjtBQUN6QixTQUFPO0FBQUEsSUFDTCxzQkFBc0I7QUFBQSxJQUN0QixVQUFVO0FBQUEsTUFDUixhQUNFO0FBQUEsTUFDRixPQUFPO0FBQUEsUUFDTDtBQUFBLFVBQ0UsT0FBTztBQUFBLFVBQ1AsS0FBSztBQUFBLFVBQ0wsTUFBTTtBQUFBLFFBQ1I7QUFBQSxRQUNBO0FBQUEsVUFDRSxPQUFPO0FBQUEsVUFDUCxLQUFLO0FBQUEsVUFDTCxNQUFNO0FBQUEsUUFDUjtBQUFBLE1BQ0Y7QUFBQSxNQUNBLElBQUk7QUFBQSxNQUNKLE1BQU07QUFBQSxNQUNOLFlBQVk7QUFBQSxNQUNaLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxRQUFRLFFBQVEsUUFBUSxJQUFJLEdBQUcsaUJBQWlCO0FBQUEsSUFDaEQsY0FBYztBQUFBLElBQ2QsU0FBUztBQUFBLE1BQ1AsY0FBYyxDQUFDLDBDQUEwQztBQUFBLE1BQ3pELCtCQUErQixJQUFJLE9BQU87QUFBQSxJQUM1QztBQUFBLEVBQ0Y7QUFDRjs7O0FEN0pBLElBQU8saUJBQVE7QUFBQSxFQUNiLHNCQUFzQjtBQUFBLElBQ3BCLEdBQUc7QUFBQSxJQUNILFNBQVM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQU9QLE1BQU07QUFBQSxRQUNKLE9BQU87QUFBQSxRQUNQLE1BQU07QUFBQSxRQUNOLEdBQUc7QUFBQSxNQUNMO0FBQUEsSUFDRjtBQUFBLEVBQ0YsQ0FBQztBQUNIOyIsCiAgIm5hbWVzIjogWyJkZWZpbmVDb25maWciLCAiZGVmaW5lQ29uZmlnIl0KfQo=
diff --git a/apps/platform/src/router/access.ts b/apps/platform/src/router/access.ts
index 59df48b..040b534 100644
--- a/apps/platform/src/router/access.ts
+++ b/apps/platform/src/router/access.ts
@@ -16,8 +16,6 @@ const forbiddenComponent = () => import('#/views/_core/fallback/forbidden.vue');
async function generateAccess(options: GenerateMenuAndRoutesOptions) {
const pageMap: ComponentRecordType = import.meta.glob('../views/**/*.vue');
- console.log('pageMap', pageMap);
-
const layoutMap: ComponentRecordType = {
BasicLayout,
IFrameView,
diff --git a/apps/platform/src/router/guard.ts b/apps/platform/src/router/guard.ts
index 78b3601..41391ed 100644
--- a/apps/platform/src/router/guard.ts
+++ b/apps/platform/src/router/guard.ts
@@ -95,7 +95,6 @@ function setupAccessGuard(router: Router) {
// 当前登录用户拥有的角色标识列表
// const userInfo = userStore.userInfo || (await authStore.fetchUserInfo());
const userInfo = userStore.userInfo;
- console.log('userInfo', userInfo);
const userRoles = userInfo?.roles ?? [];
// 生成菜单和路由
const { accessibleMenus, accessibleRoutes } = await generateAccess({
diff --git a/apps/platform/src/router/routes/modules/acl.ts b/apps/platform/src/router/routes/modules/acl.ts
index ec3add5..60ee0dc 100644
--- a/apps/platform/src/router/routes/modules/acl.ts
+++ b/apps/platform/src/router/routes/modules/acl.ts
@@ -20,6 +20,7 @@ const routes: Array = [
path: 'list',
name: `${moduleName}-list`,
meta: {
+ hideInMenu: true,
title: '权限列表',
keepAlive: true,
icon: 'ant-design:list',
@@ -30,6 +31,7 @@ const routes: Array = [
accessToken: localStorage.getItem('y-code-access-token'),
fileId: '1hsd0407hf',
projectId: '4',
+ degrade: false,
},
},
{
@@ -37,7 +39,7 @@ const routes: Array = [
name: `${moduleName}-user`,
meta: {
title: '用户列表',
- keepAlive: false,
+ keepAlive: true,
icon: 'ant-design:list',
},
component: WujieVueRendererAdapter,
@@ -46,6 +48,7 @@ const routes: Array = [
accessToken: localStorage.getItem('y-code-access-token'),
fileId: '7pfu5radx',
projectId: '4',
+ degrade: false,
},
},
],
diff --git a/apps/platform/src/router/routes/modules/application.ts b/apps/platform/src/router/routes/modules/application.ts
index 9a5c901..6e51722 100644
--- a/apps/platform/src/router/routes/modules/application.ts
+++ b/apps/platform/src/router/routes/modules/application.ts
@@ -34,8 +34,8 @@ const routes: Array = [
projectId: '4',
getRouter: () => router,
route,
+ degrade: false,
height: '100%',
- // degrade: true,
};
},
},
diff --git a/apps/platform/src/router/routes/modules/micro.ts b/apps/platform/src/router/routes/modules/micro.ts
index 15d1ece..3980c99 100644
--- a/apps/platform/src/router/routes/modules/micro.ts
+++ b/apps/platform/src/router/routes/modules/micro.ts
@@ -1,8 +1,9 @@
import type { RouteRecordRaw } from 'vue-router';
import RendererAdapter from '@sy/vue3-renderer-adapter';
+import WujieVueRendererAdapter from '@sy/wujie-vue3-renderer-adapter';
-import { VITE_DESIGNER_URL, VITE_V1_URL } from '#/constants';
+import { VITE_DESIGNER_URL, VITE_RENDERER_URL, VITE_V1_URL } from '#/constants';
const moduleName = 'micro';
@@ -55,6 +56,23 @@ const routes: RouteRecordRaw[] = [
accessToken: localStorage.getItem('y-code-access-token'),
},
},
+ {
+ path: 'test',
+ name: `Test`,
+ meta: {
+ keepAlive: false,
+ title: '测试',
+ icon: 'ant-design:delete-outlined',
+ },
+ component: WujieVueRendererAdapter,
+ props: {
+ url: `${VITE_RENDERER_URL}`,
+ fileId: '45ud9h6n3',
+ projectId: 4,
+ degrade: false,
+ name: '45ud9h6n3',
+ },
+ },
],
},
];
diff --git a/apps/platform/src/router/routes/modules/project.ts b/apps/platform/src/router/routes/modules/project.ts
index d28fde9..87ad538 100644
--- a/apps/platform/src/router/routes/modules/project.ts
+++ b/apps/platform/src/router/routes/modules/project.ts
@@ -43,14 +43,13 @@ const routes: Array = [
path: 'DSLFileList',
name: `${moduleName}-DSL-file-list`,
meta: {
+ hideInMenu: true,
title: 'dsl 文件列表',
keepAlive: false,
icon: 'ant-design:file',
},
component: WujieVueRendererAdapter,
props: (route) => {
- console.log('route', route);
- console.log('route.query', route.query);
return {
url: `${VITE_RENDERER_URL}`,
accessToken: localStorage.getItem('y-code-access-token'),
diff --git a/apps/platform/src/router/routes/modules/static-file.ts b/apps/platform/src/router/routes/modules/static-file.ts
index a9e8d13..348f776 100644
--- a/apps/platform/src/router/routes/modules/static-file.ts
+++ b/apps/platform/src/router/routes/modules/static-file.ts
@@ -28,7 +28,7 @@ const routes: RouteRecordRaw[] = [
fileId: '7pfr394d6',
projectId: 4,
name: '7pfr394d6',
- degrade: true,
+ degrade: false,
getRouter: () => router,
},
},
diff --git a/apps/renderer/package.json b/apps/renderer/package.json
index 241f51d..b849c71 100644
--- a/apps/renderer/package.json
+++ b/apps/renderer/package.json
@@ -17,14 +17,15 @@
"@sentry/vue": "^9.5.0",
"@sy/web-vitals": "workspace:*",
"@tanstack/vue-query": "^5.66.9",
- "@vtj/core": "^0.11.1",
- "@vtj/icons": "0.11.1",
- "@vtj/materials": "^0.11.1",
- "@vtj/pro": "^0.11.1",
- "@vtj/renderer": "^0.11.1",
- "@vtj/ui": "^0.11.1",
- "@vtj/utils": "^0.11.1",
- "@vtj/web": "^0.11.1",
+ "@vtj/charts": "^0.11.2",
+ "@vtj/core": "^0.11.2",
+ "@vtj/icons": "0.11.2",
+ "@vtj/materials": "^0.11.2",
+ "@vtj/pro": "^0.11.2",
+ "@vtj/renderer": "^0.11.2",
+ "@vtj/ui": "^0.11.2",
+ "@vtj/utils": "^0.11.2",
+ "@vtj/web": "^0.11.2",
"axios": "catalog:",
"core-js": "^3.40.0",
"element-plus": "catalog:",
diff --git a/apps/renderer/src/index.ts b/apps/renderer/src/index.ts
index 7f90dd2..47c2c8f 100644
--- a/apps/renderer/src/index.ts
+++ b/apps/renderer/src/index.ts
@@ -2,6 +2,7 @@ import { createApp } from 'vue';
import * as Sentry from '@sentry/vue';
import { VueQueryPlugin } from '@tanstack/vue-query';
+import * as VtjCharts from '@vtj/charts';
import { IconsPlugin } from '@vtj/icons';
import * as VtjUI from '@vtj/ui';
import ElementPlus from 'element-plus';
@@ -22,6 +23,9 @@ Sentry.init({
Object.entries(VtjUI).forEach(([name, component]) => {
app.component(name, component);
});
+Object.entries(VtjCharts).forEach(([name, component]) => {
+ app.component(name, component);
+});
app
.use(ElementPlus)
.use(IconsPlugin)
diff --git a/apps/renderer/src/service/index.ts b/apps/renderer/src/service/index.ts
index 5fd242d..01662eb 100644
--- a/apps/renderer/src/service/index.ts
+++ b/apps/renderer/src/service/index.ts
@@ -16,7 +16,6 @@ export class LowCodeService extends BaseService {
public async init(project: ProjectSchema) {
// @ts-ignore 忽略错误
const remoteProject = await getProject(project.id);
- console.log('remoteProject', remoteProject);
const model = new ProjectModel(remoteProject);
const dsl = model.toDsl();
return dsl;
diff --git a/packages/@core/ui-kit/layout-ui/src/vben-layout.vue b/packages/@core/ui-kit/layout-ui/src/vben-layout.vue
index 0d3ae55..4a8d62c 100644
--- a/packages/@core/ui-kit/layout-ui/src/vben-layout.vue
+++ b/packages/@core/ui-kit/layout-ui/src/vben-layout.vue
@@ -581,7 +581,7 @@ const idMainContent = ELEMENT_ID_MAIN_CONTENT;
:padding-right="contentPaddingRight"
:padding-top="contentPaddingTop"
:style="contentStyle"
- class="transition-[margin-top] duration-200"
+ class="h-[calc(100vh-7rem)] overflow-auto transition-[margin-top] duration-200"
>
diff --git a/packages/effects/layouts/src/basic/content/content.vue b/packages/effects/layouts/src/basic/content/content.vue
index 438154f..9387398 100644
--- a/packages/effects/layouts/src/basic/content/content.vue
+++ b/packages/effects/layouts/src/basic/content/content.vue
@@ -10,8 +10,6 @@ import { RouterView } from 'vue-router';
import { preferences, usePreferences } from '@vben/preferences';
import { storeToRefs, useTabbarStore } from '@vben/stores';
-import { IFrameRouterView } from '../../iframe';
-
defineOptions({ name: 'LayoutContent' });
const tabbarStore = useTabbarStore();
@@ -97,6 +95,7 @@ function transformComponent(
:include="getCachedTabs"
>
import type { Router, RouteRecordRaw } from 'vue-router';
-import { onBeforeUnmount, onMounted } from 'vue';
+import { computed, onBeforeUnmount, onMounted } from 'vue';
import WujieVue from 'wujie-vue3';
import { version } from '/package.json';
-const props = defineProps<{
- [key: string]: any;
- accessToken?: string;
- applicationId: number;
- degrade?: boolean;
- fileId: number | string;
- getRouter: () => Router;
- name: string;
- // 传递给子应用的参数 payload
- payload?: Record;
- projectId: number;
- route: RouteRecordRaw;
- sync: boolean;
- url: string;
-}>();
-
-console.log('props', props);
+const props = withDefaults(
+ defineProps<{
+ [key: string]: any;
+ accessToken?: string;
+ applicationId: number;
+ degrade?: boolean;
+ fileId: number | string;
+ getRouter: () => Router;
+ name: string;
+ // 传递给子应用的参数 payload
+ payload?: Record;
+ projectId: number;
+ route: RouteRecordRaw;
+ sync: boolean;
+ url: string;
+ }>(),
+ {
+ // 默认 wujie 降级
+ degrade: true,
+ },
+);
const { bus } = WujieVue;
+const isDegrade = computed(() => props.degrade ?? true);
// 生命周期钩子
const beforeLoad = (appWindow: Window) => {
console.log(`${props.name} 开始加载`, appWindow);
@@ -38,7 +43,7 @@ const afterMount = (appWindow: Window) => {
// 事件处理
const handleMessage = (data: any) => {
- console.log('收到子应用消息:', data);
+ console.log(`${props.name} 收到子应用消息:`, data);
};
// 准备传递给子应用的数据
@@ -51,17 +56,17 @@ const subAppProps = {
// 监听子应用的事件
const handleReady = (data: any) => {
- console.log('子应用就绪:', data);
+ console.log(`${props.name} 子应用就绪:`, data);
// 可以在这里执行一些操作
};
const handleRenderSuccess = () => {
- console.log('子应用渲染成功');
+ console.log(`${props.name} 子应用渲染成功`);
// 通知父应用
};
const handleRenderFail = (error: any) => {
- console.error('子应用渲染失败:', error);
+ console.error(`${props.name} 子应用渲染失败:`, error);
// 处理错误情况
};
@@ -90,7 +95,7 @@ onBeforeUnmount(() => {
:sync="sync"
width="100%"
height="100%"
- :degrade="degrade"
+ :degrade="isDegrade"
:props="subAppProps"
:before-load="beforeLoad"
:after-mount="afterMount"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index cdb7df3..cb4ecfa 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -626,38 +626,38 @@ importers:
apps/designer:
dependencies:
'@vtj/core':
- specifier: ^0.11.1
- version: 0.11.1
+ specifier: ^0.11.2
+ version: 0.11.2
'@vtj/designer':
- specifier: 0.11.1
- version: 0.11.1(vue@3.5.13(typescript@5.8.2))
+ specifier: 0.11.2
+ version: 0.11.2(vue@3.5.13(typescript@5.8.2))
'@vtj/icons':
- specifier: 0.11.1
- version: 0.11.1(vue@3.5.13(typescript@5.8.2))
+ specifier: 0.11.2
+ version: 0.11.2(vue@3.5.13(typescript@5.8.2))
'@vtj/local':
- specifier: ^0.11.1
- version: 0.11.1
+ specifier: ^0.11.2
+ version: 0.11.2
'@vtj/materials':
- specifier: ^0.11.1
- version: 0.11.1
+ specifier: ^0.11.2
+ version: 0.11.2
'@vtj/node':
specifier: 0.11.1
version: 0.11.1
'@vtj/pro':
- specifier: ^0.11.1
- version: 0.11.1(vue@3.5.13(typescript@5.8.2))
+ specifier: ^0.11.2
+ version: 0.11.2(vue@3.5.13(typescript@5.8.2))
'@vtj/renderer':
- specifier: ^0.11.1
- version: 0.11.1
+ specifier: ^0.11.2
+ version: 0.11.2
'@vtj/ui':
- specifier: ^0.11.1
- version: 0.11.1(vue@3.5.13(typescript@5.8.2))
+ specifier: ^0.11.2
+ version: 0.11.2(vue@3.5.13(typescript@5.8.2))
'@vtj/utils':
- specifier: 0.11.1
- version: 0.11.1
+ specifier: 0.11.2
+ version: 0.11.2
'@vtj/web':
- specifier: ^0.11.1
- version: 0.11.1(vue@3.5.13(typescript@5.8.2))
+ specifier: ^0.11.2
+ version: 0.11.2(vue@3.5.13(typescript@5.8.2))
axios:
specifier: ^1.8.1
version: 1.8.3(debug@4.4.0)
@@ -859,30 +859,33 @@ importers:
'@tanstack/vue-query':
specifier: ^5.66.9
version: 5.69.0(vue@3.5.13(typescript@5.8.2))
+ '@vtj/charts':
+ specifier: ^0.11.2
+ version: 0.11.2(vue@3.5.13(typescript@5.8.2))
'@vtj/core':
- specifier: ^0.11.1
- version: 0.11.1
+ specifier: ^0.11.2
+ version: 0.11.2
'@vtj/icons':
- specifier: 0.11.1
- version: 0.11.1(vue@3.5.13(typescript@5.8.2))
+ specifier: 0.11.2
+ version: 0.11.2(vue@3.5.13(typescript@5.8.2))
'@vtj/materials':
- specifier: ^0.11.1
- version: 0.11.1
+ specifier: ^0.11.2
+ version: 0.11.2
'@vtj/pro':
- specifier: ^0.11.1
- version: 0.11.1(vue@3.5.13(typescript@5.8.2))
+ specifier: ^0.11.2
+ version: 0.11.2(vue@3.5.13(typescript@5.8.2))
'@vtj/renderer':
- specifier: ^0.11.1
- version: 0.11.1
+ specifier: ^0.11.2
+ version: 0.11.2
'@vtj/ui':
- specifier: ^0.11.1
- version: 0.11.1(vue@3.5.13(typescript@5.8.2))
+ specifier: ^0.11.2
+ version: 0.11.2(vue@3.5.13(typescript@5.8.2))
'@vtj/utils':
- specifier: ^0.11.1
- version: 0.11.1
+ specifier: ^0.11.2
+ version: 0.11.2
'@vtj/web':
- specifier: ^0.11.1
- version: 0.11.1(vue@3.5.13(typescript@5.8.2))
+ specifier: ^0.11.2
+ version: 0.11.2(vue@3.5.13(typescript@5.8.2))
axios:
specifier: 'catalog:'
version: 1.8.3(debug@4.4.0)
@@ -1953,6 +1956,9 @@ importers:
packages/renderer-adapter/wujie-vue3:
dependencies:
+ licia-es:
+ specifier: 'catalog:'
+ version: 1.47.0
postmate:
specifier: 'catalog:'
version: 1.5.2
@@ -5540,8 +5546,8 @@ packages:
'@vtj/base@0.11.1':
resolution: {integrity: sha512-OrRUicY5gcturuY/MXNEU6QWPkglrqj/2Eth93n+zJh1szdHlFkFYMFbP9d/PAj3G4pGWcnRX3Kc4kZmGn2W+Q==}
- '@vtj/charts@0.11.1':
- resolution: {integrity: sha512-RfByHVbangTKCVcIDgWvVPPy4SNEHCAJUmozkcE6ZSSv9wNZAHQhRm0UkTxVOOGARW+uxNwUV+CcJUqF9i/CsA==}
+ '@vtj/charts@0.11.2':
+ resolution: {integrity: sha512-SrZ4sIrhq5oX7Zv5CCZDRp7tuQ3Ho6SEYD4QoLwQaZ0EZy/s5+M4N3VfzndgZHYApRAg0zw5+6v6D3DdM4216g==}
engines: {node: '>=16.0.0'}
'@vtj/cli@0.11.1':
@@ -5549,48 +5555,48 @@ packages:
engines: {node: '>=20.0.0'}
hasBin: true
- '@vtj/coder@0.11.1':
- resolution: {integrity: sha512-PYcBNAhU2vSlbUox/JghT9HMMwugvPxF1rzdB5yZc7WcpSO76KSg2nh2VyTyaGwsTiT/9PjSt9rhK4BXIvP9DA==}
+ '@vtj/coder@0.11.2':
+ resolution: {integrity: sha512-VKUIBuZF2+UnJLbur55nQMRlagb/SCtN+HUaWOlf6gZFc8V4hijABwhlAgRK05CfyncfMHYT2ynJkVJf6f6xRw==}
- '@vtj/core@0.11.1':
- resolution: {integrity: sha512-Y572NlT/EpM+6SlEo1q5vSu8sNI3wR1zeAAtuLf+LWd9cHZXs7KAGp34XsnEVY1dHb5gReL5F2GxCzM25avZhw==}
+ '@vtj/core@0.11.2':
+ resolution: {integrity: sha512-B7DW37aCTKLxI41+OnBu8ukoHnbiKoiNwG+Nqsl7o4Wm0WLaC7e2sh4GEQN6/gG6jZpm2xt6CZpPreWwQLZODg==}
- '@vtj/designer@0.11.1':
- resolution: {integrity: sha512-rjhma9WAZvbBhvHjlFV6nr6dAKf8W5nu+wh2dcUtYXRKIntELa6ez/Brw/PQzfSjb7t+yAunHJU8wpSr5jkJrA==}
+ '@vtj/designer@0.11.2':
+ resolution: {integrity: sha512-N2E29bvHw1N9ldqv9I0RbmnlvZ6QERWhxKuc5rAwBNGV8D4u+6lEZRi+lR5eA+0SzYCMkIkXSiaSQtyKu+NMzQ==}
- '@vtj/icons@0.11.1':
- resolution: {integrity: sha512-gX0UCEdDDICMGN+b1AEVoQcQcoU41R3Zr/2atNage1x//QmNVMLdEX8M1iSrvnOEIJuvJJw+H8bRG1jK1srcyg==}
+ '@vtj/icons@0.11.2':
+ resolution: {integrity: sha512-pZcNLcc+1GfEtV9NbSJf8nJKy2kq8Ry5bZ0lTAGMKXukbvHPpuAUD2xYDqsDn2uspAMlhOpaiA/2yEeZq22tcQ==}
- '@vtj/local@0.11.1':
- resolution: {integrity: sha512-4kbQ119uXW6mp8Zt6qmgZ2SEHCkFyVFWecbZIWm9C71W8zChRvCnGK1O70cc1FKtr+Jc0lwtsIQQp+w09wVWCQ==}
+ '@vtj/local@0.11.2':
+ resolution: {integrity: sha512-r9+eOpWBPmb/hIcN5N6grdq46qzMbfcujApnYDEYVhKVWOr6Rx1aJFn7po99wzJ9QdqMhJo0hJj25qkt2yuXLw==}
- '@vtj/materials@0.11.1':
- resolution: {integrity: sha512-9u1VM1H4NwAzvuD/mAx7jTQxT/tk7/Nh+BQQ98N8BJZIbfhH49RrTT2s8RxuM1AQm+ToNaxjoqSs9uOiyB7nUw==}
+ '@vtj/materials@0.11.2':
+ resolution: {integrity: sha512-EZzLQY+8E8JBqiK1qHhT3sc4nye77KaojuvLZhlrLz7ViQB2xy75+w/b93mOAZgj0kDV7E/v2AcIsQhlmD2tuA==}
'@vtj/node@0.11.1':
resolution: {integrity: sha512-PfIs7Bja6o2o/2R+15RuGSnpNLLiKZC+fJH1sJuVOXVjjkpakpwsUc0tDjzT5VoLZk52hQ7QQyzJFToPWT6NLg==}
- '@vtj/parser@0.11.1':
- resolution: {integrity: sha512-d/5izIH5/9V1dC0+WrpUg8Tyg1sla9Ej2veCCDyXpM2Gt6ONON+OBlIh8wRsTUkqRVSiic8WXOoyP3ldNcsZpw==}
+ '@vtj/parser@0.11.2':
+ resolution: {integrity: sha512-/jdSA//o93Nx1Of+Wgz0F73gFYNmVzV4JF6rYFpVk4aHDLxRGNPJGd2WNCuDmkYAmUEJuwAEB7xq7zTkXRE9ow==}
- '@vtj/pro@0.11.1':
- resolution: {integrity: sha512-DKkdBj/QzSoLldzwXvdIjZCk2ugMGv7VEtz4qfcrBBVgc2luqXi8tSNNxaFVbv5UZJVQjEC2kAICmBw6oE4AYQ==}
+ '@vtj/pro@0.11.2':
+ resolution: {integrity: sha512-axQmWtRh57HJDcymFyd+JDOnjFxZzGba2sBhJ9t0YII660c8f0fFeyrD4OEj/FJcwKeVEjSHkLQ/775QEJ1rhA==}
- '@vtj/renderer@0.11.1':
- resolution: {integrity: sha512-weKzc4E7OqiU+MuTzJQJC/+7yNvbUwYJ5Ew/TshuP9OxzPo59gMQTdau3aez2qQNUj/6qDl+Ps4xIC7hKyCDkw==}
+ '@vtj/renderer@0.11.2':
+ resolution: {integrity: sha512-ReBRw1p8svILr1C/VupSP2TQBx8dJD4sObFzT4f0Y9IDsqfBVJ5TdOKckpIzEHCwapDEXIZQvlILO3/Si5zMMQ==}
- '@vtj/ui@0.11.1':
- resolution: {integrity: sha512-HZ1GC5LzykWtLJ3vkz4dsO7bUWe3JnEoI5FhrLAlpKKWaM1IhIO6VI78R9a7WdVs42CMhbwV5DLpntP+1aG1vg==}
+ '@vtj/ui@0.11.2':
+ resolution: {integrity: sha512-MPnKfsiKOxrhn89ECrxjIvRKfYIHTbLzyD2/XAG4F3VIwaXsy5slGDZjkn8rZcyiJZb7gAMQ1d3wsulrbTxp1g==}
engines: {node: '>=16.0.0'}
- '@vtj/uni@0.11.1':
- resolution: {integrity: sha512-BS+iuR3B1lg6RBpOGBJmN4Mlb4Afym0VILwxgxaBmfco4QM9tVI9s3CV/Z5EDH78iIoG6XU7pZ7/1FPnyxm2FQ==}
+ '@vtj/uni@0.11.2':
+ resolution: {integrity: sha512-e5lDUoLsMF1NTZpcrTX4EUQmgyJrk/hpCRdSR2Lzls+V1T2VLrEuZl7YAWbuHE1pgOdxnd+KnpHUZynpVvPviQ==}
- '@vtj/utils@0.11.1':
- resolution: {integrity: sha512-wAXBp/UF6atLk5wll0A4UVQpSM1qt8Raqk04wDP5DKRG+Lbok1wkmOGvdfHsHh7oIr1QqufQx/lrfRRN46e8qQ==}
+ '@vtj/utils@0.11.2':
+ resolution: {integrity: sha512-4+0X4d/c9tv0H4EHVXWCw2pM26N9zufheHJz/Z+b4nT0B0fpqNtrnMK/RpjSakhu2OKXjh/++pJUgSwLGEdqdw==}
- '@vtj/web@0.11.1':
- resolution: {integrity: sha512-ioC69Oc+ChBinpDpaDB3no/qQXcbM9vCaJ5l2/lq/utVkyLjboEa6gw2U6L7L/dDNClt9mh9nVUw5I+GSF+C5g==}
+ '@vtj/web@0.11.2':
+ resolution: {integrity: sha512-twgZiYQ5iQ+c/qTQy0byinxW4ESYlxGHFABFLRUVkHdgvv4cn6A0QlskEajnO8+JGGlDE0u0ZxPTuYVTci8tGQ==}
'@vue/babel-helper-vue-transform-on@1.4.0':
resolution: {integrity: sha512-mCokbouEQ/ocRce/FpKCRItGo+013tHg7tixg3DUNS+6bmIchPt66012kBMm476vyEIJPafrvOf4E5OYj3shSw==}
@@ -15521,7 +15527,7 @@ snapshots:
'@grpc/grpc-js@1.9.15':
dependencies:
'@grpc/proto-loader': 0.7.13
- '@types/node': 20.17.24
+ '@types/node': 22.13.10
'@grpc/proto-loader@0.7.13':
dependencies:
@@ -16820,15 +16826,15 @@ snapshots:
'@types/body-parser@1.19.5':
dependencies:
'@types/connect': 3.4.38
- '@types/node': 20.17.24
+ '@types/node': 22.13.10
'@types/connect@3.4.38':
dependencies:
- '@types/node': 20.17.24
+ '@types/node': 22.13.10
'@types/conventional-commits-parser@5.0.1':
dependencies:
- '@types/node': 20.17.24
+ '@types/node': 22.13.10
'@types/css-font-loading-module@0.0.7': {}
@@ -16848,7 +16854,7 @@ snapshots:
'@types/fs-extra@11.0.4':
dependencies:
'@types/jsonfile': 6.1.4
- '@types/node': 20.17.24
+ '@types/node': 22.13.10
'@types/hast@3.0.4':
dependencies:
@@ -16860,13 +16866,13 @@ snapshots:
'@types/http-proxy@1.17.16':
dependencies:
- '@types/node': 20.17.24
+ '@types/node': 22.13.10
'@types/json-schema@7.0.15': {}
'@types/jsonfile@6.1.4':
dependencies:
- '@types/node': 20.17.24
+ '@types/node': 22.13.10
'@types/linkify-it@5.0.0': {}
@@ -16944,12 +16950,12 @@ snapshots:
'@types/send@0.17.4':
dependencies:
'@types/mime': 1.3.5
- '@types/node': 20.17.24
+ '@types/node': 22.13.10
'@types/serve-static@1.15.7':
dependencies:
'@types/http-errors': 2.0.4
- '@types/node': 20.17.24
+ '@types/node': 22.13.10
'@types/send': 0.17.4
'@types/sortablejs@1.15.8': {}
@@ -17413,10 +17419,10 @@ snapshots:
'@types/numeral': 2.0.5
reflect-metadata: 0.2.2
- '@vtj/charts@0.11.1(vue@3.5.13(typescript@5.8.2))':
+ '@vtj/charts@0.11.2(vue@3.5.13(typescript@5.8.2))':
dependencies:
- '@vtj/icons': 0.11.1(vue@3.5.13(typescript@5.8.2))
- '@vtj/utils': 0.11.1
+ '@vtj/icons': 0.11.2(vue@3.5.13(typescript@5.8.2))
+ '@vtj/utils': 0.11.2
'@vueuse/core': 13.0.0(vue@3.5.13(typescript@5.8.2))
echarts: 5.6.0
transitivePeerDependencies:
@@ -17544,24 +17550,24 @@ snapshots:
- vue
- yaml
- '@vtj/coder@0.11.1':
+ '@vtj/coder@0.11.2':
dependencies:
'@vtj/base': 0.11.1
- '@vtj/core': 0.11.1
+ '@vtj/core': 0.11.2
prettier: 3.5.3
- '@vtj/core@0.11.1':
+ '@vtj/core@0.11.2':
dependencies:
'@vtj/base': 0.11.1
- '@vtj/designer@0.11.1(vue@3.5.13(typescript@5.8.2))':
+ '@vtj/designer@0.11.2(vue@3.5.13(typescript@5.8.2))':
dependencies:
- '@vtj/core': 0.11.1
- '@vtj/icons': 0.11.1(vue@3.5.13(typescript@5.8.2))
- '@vtj/renderer': 0.11.1
- '@vtj/ui': 0.11.1(vue@3.5.13(typescript@5.8.2))
- '@vtj/uni': 0.11.1(vue@3.5.13(typescript@5.8.2))
- '@vtj/utils': 0.11.1
+ '@vtj/core': 0.11.2
+ '@vtj/icons': 0.11.2(vue@3.5.13(typescript@5.8.2))
+ '@vtj/renderer': 0.11.2
+ '@vtj/ui': 0.11.2(vue@3.5.13(typescript@5.8.2))
+ '@vtj/uni': 0.11.2(vue@3.5.13(typescript@5.8.2))
+ '@vtj/utils': 0.11.2
html2canvas: 1.4.1
mockjs: 1.1.0
monaco-editor: 0.52.2
@@ -17569,24 +17575,24 @@ snapshots:
- '@vue/composition-api'
- vue
- '@vtj/icons@0.11.1(vue@3.5.13(typescript@5.8.2))':
+ '@vtj/icons@0.11.2(vue@3.5.13(typescript@5.8.2))':
dependencies:
'@element-plus/icons-vue': 2.3.1(vue@3.5.13(typescript@5.8.2))
transitivePeerDependencies:
- vue
- '@vtj/local@0.11.1':
+ '@vtj/local@0.11.2':
dependencies:
- '@vtj/coder': 0.11.1
- '@vtj/core': 0.11.1
+ '@vtj/coder': 0.11.2
+ '@vtj/core': 0.11.2
'@vtj/node': 0.11.1
- '@vtj/parser': 0.11.1
+ '@vtj/parser': 0.11.2
formidable: 3.5.2
transitivePeerDependencies:
- debug
- supports-color
- '@vtj/materials@0.11.1': {}
+ '@vtj/materials@0.11.2': {}
'@vtj/node@0.11.1':
dependencies:
@@ -17597,42 +17603,42 @@ snapshots:
transitivePeerDependencies:
- debug
- '@vtj/parser@0.11.1':
+ '@vtj/parser@0.11.2':
dependencies:
'@babel/generator': 7.26.10
'@babel/parser': 7.26.10
'@babel/traverse': 7.26.10
'@vtj/base': 0.11.1
- '@vtj/coder': 0.11.1
- '@vtj/core': 0.11.1
+ '@vtj/coder': 0.11.2
+ '@vtj/core': 0.11.2
'@vue/compiler-dom': 3.5.13
'@vue/compiler-sfc': 3.5.13
transitivePeerDependencies:
- supports-color
- '@vtj/pro@0.11.1(vue@3.5.13(typescript@5.8.2))':
+ '@vtj/pro@0.11.2(vue@3.5.13(typescript@5.8.2))':
dependencies:
- '@vtj/core': 0.11.1
- '@vtj/designer': 0.11.1(vue@3.5.13(typescript@5.8.2))
- '@vtj/local': 0.11.1
- '@vtj/materials': 0.11.1
- '@vtj/renderer': 0.11.1
- '@vtj/uni': 0.11.1(vue@3.5.13(typescript@5.8.2))
+ '@vtj/core': 0.11.2
+ '@vtj/designer': 0.11.2(vue@3.5.13(typescript@5.8.2))
+ '@vtj/local': 0.11.2
+ '@vtj/materials': 0.11.2
+ '@vtj/renderer': 0.11.2
+ '@vtj/uni': 0.11.2(vue@3.5.13(typescript@5.8.2))
transitivePeerDependencies:
- '@vue/composition-api'
- debug
- supports-color
- vue
- '@vtj/renderer@0.11.1':
+ '@vtj/renderer@0.11.2':
dependencies:
- '@vtj/core': 0.11.1
- '@vtj/utils': 0.11.1
+ '@vtj/core': 0.11.2
+ '@vtj/utils': 0.11.2
- '@vtj/ui@0.11.1(vue@3.5.13(typescript@5.8.2))':
+ '@vtj/ui@0.11.2(vue@3.5.13(typescript@5.8.2))':
dependencies:
- '@vtj/icons': 0.11.1(vue@3.5.13(typescript@5.8.2))
- '@vtj/utils': 0.11.1
+ '@vtj/icons': 0.11.2(vue@3.5.13(typescript@5.8.2))
+ '@vtj/utils': 0.11.2
'@vueuse/core': 13.0.0(vue@3.5.13(typescript@5.8.2))
element-plus: 2.9.6(vue@3.5.13(typescript@5.8.2))
sortablejs: 1.15.6
@@ -17642,27 +17648,27 @@ snapshots:
- '@vue/composition-api'
- vue
- '@vtj/uni@0.11.1(vue@3.5.13(typescript@5.8.2))':
+ '@vtj/uni@0.11.2(vue@3.5.13(typescript@5.8.2))':
dependencies:
- '@vtj/core': 0.11.1
- '@vtj/icons': 0.11.1(vue@3.5.13(typescript@5.8.2))
- '@vtj/renderer': 0.11.1
- '@vtj/utils': 0.11.1
+ '@vtj/core': 0.11.2
+ '@vtj/icons': 0.11.2(vue@3.5.13(typescript@5.8.2))
+ '@vtj/renderer': 0.11.2
+ '@vtj/utils': 0.11.2
transitivePeerDependencies:
- vue
- '@vtj/utils@0.11.1':
+ '@vtj/utils@0.11.2':
dependencies:
'@vtj/base': 0.11.1
- '@vtj/web@0.11.1(vue@3.5.13(typescript@5.8.2))':
+ '@vtj/web@0.11.2(vue@3.5.13(typescript@5.8.2))':
dependencies:
- '@vtj/charts': 0.11.1(vue@3.5.13(typescript@5.8.2))
- '@vtj/core': 0.11.1
- '@vtj/icons': 0.11.1(vue@3.5.13(typescript@5.8.2))
- '@vtj/renderer': 0.11.1
- '@vtj/ui': 0.11.1(vue@3.5.13(typescript@5.8.2))
- '@vtj/utils': 0.11.1
+ '@vtj/charts': 0.11.2(vue@3.5.13(typescript@5.8.2))
+ '@vtj/core': 0.11.2
+ '@vtj/icons': 0.11.2(vue@3.5.13(typescript@5.8.2))
+ '@vtj/renderer': 0.11.2
+ '@vtj/ui': 0.11.2(vue@3.5.13(typescript@5.8.2))
+ '@vtj/utils': 0.11.2
core-js: 3.41.0
regenerator-runtime: 0.14.1
transitivePeerDependencies:
@@ -23415,7 +23421,7 @@ snapshots:
'@protobufjs/path': 1.1.2
'@protobufjs/pool': 1.1.0
'@protobufjs/utf8': 1.1.0
- '@types/node': 20.17.24
+ '@types/node': 22.13.10
long: 5.3.1
proxy-from-env@1.1.0: {}