123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297 |
- // vite.config.ts
- import { defineConfig, loadEnv } from "file:///D:/01Work/01VberAdmin/ChickenFarm/UI/VAP_V3.VUE/node_modules/.pnpm/vite@4.5.14_@types+node@20._9936cbc52c6d3a93bb7d63bfdda7f30d/node_modules/vite/dist/node/index.js";
- import { resolve } from "path";
- // vite/plugins/index.ts
- import vue from "file:///D:/01Work/01VberAdmin/ChickenFarm/UI/VAP_V3.VUE/node_modules/.pnpm/@vitejs+plugin-vue@4.6.2_vi_d7044449df0c9964ca0d17834893fcbf/node_modules/@vitejs/plugin-vue/dist/index.mjs";
- // vite/plugins/_auto-import.ts
- import AutoImport from "file:///D:/01Work/01VberAdmin/ChickenFarm/UI/VAP_V3.VUE/node_modules/.pnpm/unplugin-auto-import@0.16.7_cc4052f13262357d34b96c154948362a/node_modules/unplugin-auto-import/dist/vite.js";
- import Components from "file:///D:/01Work/01VberAdmin/ChickenFarm/UI/VAP_V3.VUE/node_modules/.pnpm/unplugin-vue-components@0.2_8659420a227c5f6700b2ec297d85f86b/node_modules/unplugin-vue-components/dist/vite.mjs";
- import IconsResolver from "file:///D:/01Work/01VberAdmin/ChickenFarm/UI/VAP_V3.VUE/node_modules/.pnpm/unplugin-icons@0.19.3_@vue+_4ee465b8d170af8012a2d6ee20c72fa7/node_modules/unplugin-icons/dist/resolver.js";
- import { ElementPlusResolver } from "file:///D:/01Work/01VberAdmin/ChickenFarm/UI/VAP_V3.VUE/node_modules/.pnpm/unplugin-vue-components@0.2_8659420a227c5f6700b2ec297d85f86b/node_modules/unplugin-vue-components/dist/resolvers.mjs";
- function createAutoImport() {
- return [
- AutoImport({
- imports: ["vue", "vue-router", "@vueuse/core", "pinia"],
- // plus按需引入
- resolvers: [
- ElementPlusResolver(),
- IconsResolver({
- prefix: "Icon"
- })
- ],
- dirs: ["src/core/utils", "src/core/services", "src/core/use", "src/core/enums"],
- dts: "vite/auto-import/auto-import.d.ts",
- eslintrc: {
- enabled: true,
- filepath: "vite/auto-import/.eslintrc-auto-import.json",
- globalsPropValue: true
- }
- }),
- // plus按需引入
- Components({
- resolvers: [
- ElementPlusResolver(),
- // 自动注册图标组件
- IconsResolver({
- prefix: "Icon"
- //enabledCollections: ["ep", "mdi", "Simple Icons"]
- })
- ],
- // 指定组件位置,默认是src/components
- dirs: ["src/components"],
- // 组件的有效文件扩展名。
- extensions: ["vue"],
- // 搜索子目录
- deep: true,
- dts: "vite/auto-import/components.d.ts"
- })
- ];
- }
- // vite/plugins/_setup-extend.ts
- import setupExtend from "file:///D:/01Work/01VberAdmin/ChickenFarm/UI/VAP_V3.VUE/node_modules/.pnpm/vite-plugin-vue-setup-exten_691f2e652b2c24bcf8f6cb357bfa3543/node_modules/vite-plugin-vue-setup-extend/dist/index.mjs";
- function createSetupExtend() {
- return setupExtend();
- }
- // vite/plugins/_icons.ts
- import Icons from "file:///D:/01Work/01VberAdmin/ChickenFarm/UI/VAP_V3.VUE/node_modules/.pnpm/unplugin-icons@0.19.3_@vue+_4ee465b8d170af8012a2d6ee20c72fa7/node_modules/unplugin-icons/dist/vite.js";
- var icons_default = () => {
- return Icons({
- // 自动安装图标库
- autoInstall: true
- });
- };
- // vite/plugins/_svg-icon.ts
- import { createSvgIconsPlugin } from "file:///D:/01Work/01VberAdmin/ChickenFarm/UI/VAP_V3.VUE/node_modules/.pnpm/vite-plugin-svg-icons@2.0.1_05c04e5396fc630d362a825bc0d08786/node_modules/vite-plugin-svg-icons/dist/index.mjs";
- import path from "path";
- var __vite_injected_original_dirname = "D:\\01Work\\01VberAdmin\\ChickenFarm\\UI\\VAP_V3.VUE\\vite\\plugins";
- function createSvgIcon(isBuild) {
- return createSvgIconsPlugin({
- iconDirs: [path.resolve(path.resolve(__vite_injected_original_dirname, "../../src"), "assets/icons/svg")],
- symbolId: "icon-[dir]-[name]",
- svgoOptions: isBuild
- });
- }
- // vite/plugins/_compression.ts
- import compression from "file:///D:/01Work/01VberAdmin/ChickenFarm/UI/VAP_V3.VUE/node_modules/.pnpm/vite-plugin-compression@0.5_92e55f9fb121c8af4994a33c34ba3c98/node_modules/vite-plugin-compression/dist/index.mjs";
- function createCompression(env) {
- const { VITE_BUILD_COMPRESS } = env;
- const plugin = [];
- if (VITE_BUILD_COMPRESS != "") {
- const compressList = VITE_BUILD_COMPRESS.split(",");
- if (compressList.includes("gzip")) {
- plugin.push(
- compression({
- ext: ".gz",
- deleteOriginFile: false
- })
- );
- }
- if (compressList.includes("brotli")) {
- plugin.push(
- compression({
- ext: ".br",
- algorithm: "brotliCompress",
- deleteOriginFile: false
- })
- );
- }
- }
- return plugin;
- }
- // vite/plugins/index.ts
- function createVitePlugins(viteEnv, isBuild = false) {
- const vitePlugins = [vue()];
- vitePlugins.push(...createAutoImport());
- vitePlugins.push(createSetupExtend());
- vitePlugins.push(icons_default());
- vitePlugins.push(createSvgIcon(isBuild));
- isBuild && vitePlugins.push(...createCompression(viteEnv));
- return vitePlugins;
- }
- // vite.config.ts
- var __vite_injected_original_dirname2 = "D:\\01Work\\01VberAdmin\\ChickenFarm\\UI\\VAP_V3.VUE";
- var vite_config_default = defineConfig(({ mode, command }) => {
- const env = loadEnv(mode, process.cwd());
- return {
- // 部署生产环境和开发环境下的URL。
- // 默认情况下,vite 会假设你的应用是被部署在一个域名的根路径上
- // 例如 https://www.vber.net/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.vber.net/admin/,则设置 baseUrl 为 /admin/。
- base: env.VITE_APP_CONTEXT_PATH,
- plugins: [
- ...createVitePlugins(env, command === "build")
- //,visualizer()
- ],
- build: {
- minify: "terser",
- // 启用 terser 压缩
- terserOptions: {
- compress: {
- pure_funcs: ["console.log"],
- // 只删除 console.log
- //drop_console: true, // 删除所有 console
- drop_debugger: true
- // 删除 debugger
- }
- },
- rollupOptions: {
- output: {
- // 最小化拆分包
- manualChunks(id) {
- if (id.includes("node_modules")) {
- if (id.includes("node_modules/element-plus")) {
- return "vb_plugin_element-plus";
- }
- if (id.includes("node_modules/nprogress")) {
- return "vb_plugin_nprogress";
- }
- if (id.includes("node_modules/quill")) {
- return "vb_plugin_quill";
- }
- if (id.includes("node_modules/echarts")) {
- return "vb_plugin_echarts";
- }
- if (id.includes("node_modules/lodash")) {
- return "vb_plugin_lodash";
- }
- return "vb_plugin_vendor";
- }
- if (id.includes(resolve(__vite_injected_original_dirname2, "/src/stores/index.ts"))) {
- return "vb_store";
- }
- if (id.includes("/src/components/") && id.includes("/Vb")) {
- return "vb_components";
- }
- if (id.includes("/src/core/utils/") && id.includes("/Vb")) {
- return "vb_utils";
- }
- },
- // 设置chunk的文件名格式
- chunkFileNames: (chunkInfo) => {
- if (chunkInfo.isEntry) {
- return "index.[hash].js";
- }
- if (chunkInfo.name === "index") {
- const facadeModuleId = chunkInfo.facadeModuleId ? chunkInfo.facadeModuleId.split("/") : [];
- const fileName = facadeModuleId[facadeModuleId.length - 2] || "[name]";
- return `js/vb_view_${fileName}.[hash].js`;
- }
- return `js/[name].[hash].js`;
- },
- // 设置入口文件的文件名格式
- entryFileNames: "js/[name].[hash].js",
- // 设置静态资源文件的文件名格式
- assetFileNames(assetInfo) {
- var _a;
- if ((_a = assetInfo.name) == null ? void 0 : _a.endsWith(".css")) {
- return "css/[name].[hash].[ext]";
- }
- const imgArray = [".png", "jpg", ".jpeg", "webp ", ".svg", ".gif"];
- if (imgArray.some((v) => {
- var _a2;
- return (_a2 = assetInfo.name) == null ? void 0 : _a2.endsWith(v);
- })) {
- return "img/[name].[hash].[ext]";
- }
- return "media/asset/[name].[hash:4].[ext]";
- }
- }
- }
- },
- resolve: {
- // https://cn.vitejs.dev/config/#resolve-alias
- alias: {
- "@a": resolve(__vite_injected_original_dirname2, "./src/api"),
- "@s": resolve(__vite_injected_original_dirname2, "./src/stores"),
- "@r": resolve(__vite_injected_original_dirname2, "./src/router"),
- "@v": resolve(__vite_injected_original_dirname2, "./src/views"),
- "@@": resolve(__vite_injected_original_dirname2, "./src/core"),
- "@@@": resolve(__vite_injected_original_dirname2, "./src/components"),
- "@com": resolve(__vite_injected_original_dirname2, "./src/components"),
- "@": resolve(__vite_injected_original_dirname2, "./src"),
- "~": resolve(__vite_injected_original_dirname2, "./")
- },
- // https://cn.vitejs.dev/config/#resolve-extensions
- extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"]
- },
- // vite 相关配置
- server: {
- port: Number(env.VITE_APP_PORT),
- // host: true,
- host: "0.0.0.0",
- // 热更新
- hmr: true,
- // 设为 true 时若端口已被占用则会直接退出,而不是尝试下一个可用端口
- strictPort: true,
- open: true,
- proxy: {
- [env.VITE_APP_BASE_API]: {
- //target: "http://localhost:8080",
- target: env.VITE_APP_PROXY_URL,
- changeOrigin: true,
- rewrite: (path2) => path2.replace(new RegExp("^" + env.VITE_APP_BASE_API), "")
- }
- }
- },
- preview: {
- port: 6666,
- // host: true,
- host: "0.0.0.0",
- // 热更新
- hmr: true,
- // 设为 true 时若端口已被占用则会直接退出,而不是尝试下一个可用端口
- strictPort: true,
- open: true,
- cors: false,
- proxy: {
- // "/prod-api": {
- // target: "http://localhost:6060",
- // changeOrigin: true,
- // rewrite: (p) => p.replace(/^\/prod-api/, ""),
- // }, 1
- "/prod-api": {
- target: "http://192.168.0.82:6066",
- changeOrigin: true,
- rewrite: (p) => p.replace(/^\/prod-api/, "/prod-api")
- }
- }
- },
- // 预编译
- optimizeDeps: {
- include: [
- "vue",
- "vue-router",
- "pinia",
- "axios",
- "@vueuse/core",
- "path-to-regexp",
- "echarts",
- "vue-i18n",
- "@vueup/vue-quill",
- "bpmn-js/lib/Viewer",
- "bpmn-js/lib/Modeler.js",
- "bpmn-js-properties-panel",
- "min-dash",
- "diagram-js/lib/navigation/movecanvas",
- "diagram-js/lib/navigation/zoomscroll",
- "bpmn-js/lib/features/palette/PaletteProvider",
- "bpmn-js/lib/features/context-pad/ContextPadProvider",
- "diagram-js/lib/draw/BaseRenderer",
- "tiny-svg",
- "image-conversion",
- "element-plus/es/components/**/css"
- ]
- }
- };
- });
- export {
- vite_config_default as default
- };
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiLCAidml0ZS9wbHVnaW5zL2luZGV4LnRzIiwgInZpdGUvcGx1Z2lucy9fYXV0by1pbXBvcnQudHMiLCAidml0ZS9wbHVnaW5zL19zZXR1cC1leHRlbmQudHMiLCAidml0ZS9wbHVnaW5zL19pY29ucy50cyIsICJ2aXRlL3BsdWdpbnMvX3N2Zy1pY29uLnRzIiwgInZpdGUvcGx1Z2lucy9fY29tcHJlc3Npb24udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJEOlxcXFwwMVdvcmtcXFxcMDFWYmVyQWRtaW5cXFxcVmJlckFkbWluUGx1c1YzXFxcXFVJXFxcXFZBUF9WMy5WVUVcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkQ6XFxcXDAxV29ya1xcXFwwMVZiZXJBZG1pblxcXFxWYmVyQWRtaW5QbHVzVjNcXFxcVUlcXFxcVkFQX1YzLlZVRVxcXFx2aXRlLmNvbmZpZy50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRDovMDFXb3JrLzAxVmJlckFkbWluL1ZiZXJBZG1pblBsdXNWMy9VSS9WQVBfVjMuVlVFL3ZpdGUuY29uZmlnLnRzXCI7aW1wb3J0IHsgZGVmaW5lQ29uZmlnLCBsb2FkRW52IH0gZnJvbSBcInZpdGVcIlxyXG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSBcInBhdGhcIlxyXG5pbXBvcnQgY3JlYXRlVml0ZVBsdWdpbnMgZnJvbSBcIi4vdml0ZS9wbHVnaW5zXCJcclxuLy9pbXBvcnQgeyB2aXN1YWxpemVyIH0gZnJvbSBcInJvbGx1cC1wbHVnaW4tdmlzdWFsaXplclwiXHJcbi8vIGh0dHBzOi8vdml0ZWpzLmRldi9jb25maWcvXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbmZpZygoeyBtb2RlLCBjb21tYW5kIH0pID0+IHtcclxuXHRjb25zdCBlbnYgPSBsb2FkRW52KG1vZGUsIHByb2Nlc3MuY3dkKCkpXHJcblx0cmV0dXJuIHtcclxuXHRcdC8vIFx1OTBFOFx1N0Y3Mlx1NzUxRlx1NEVBN1x1NzNBRlx1NTg4M1x1NTQ4Q1x1NUYwMFx1NTNEMVx1NzNBRlx1NTg4M1x1NEUwQlx1NzY4NFVSTFx1MzAwMlxyXG5cdFx0Ly8gXHU5RUQ4XHU4QkE0XHU2MEM1XHU1MUI1XHU0RTBCXHVGRjBDdml0ZSBcdTRGMUFcdTUwNDdcdThCQkVcdTRGNjBcdTc2ODRcdTVFOTRcdTc1MjhcdTY2MkZcdTg4QUJcdTkwRThcdTdGNzJcdTU3MjhcdTRFMDBcdTRFMkFcdTU3REZcdTU0MERcdTc2ODRcdTY4MzlcdThERUZcdTVGODRcdTRFMEFcclxuXHRcdC8vIFx1NEY4Qlx1NTk4MiBodHRwczovL3d3dy52YmVyLm5ldC9cdTMwMDJcdTU5ODJcdTY3OUNcdTVFOTRcdTc1MjhcdTg4QUJcdTkwRThcdTdGNzJcdTU3MjhcdTRFMDBcdTRFMkFcdTVCNTBcdThERUZcdTVGODRcdTRFMEFcdUZGMENcdTRGNjBcdTVDMzFcdTk3MDBcdTg5ODFcdTc1MjhcdThGRDlcdTRFMkFcdTkwMDlcdTk4NzlcdTYzMDdcdTVCOUFcdThGRDlcdTRFMkFcdTVCNTBcdThERUZcdTVGODRcdTMwMDJcdTRGOEJcdTU5ODJcdUZGMENcdTU5ODJcdTY3OUNcdTRGNjBcdTc2ODRcdTVFOTRcdTc1MjhcdTg4QUJcdTkwRThcdTdGNzJcdTU3MjggaHR0cHM6Ly93d3cudmJlci5uZXQvYWRtaW4vXHVGRjBDXHU1MjE5XHU4QkJFXHU3RjZFIGJhc2VVcmwgXHU0RTNBIC9hZG1pbi9cdTMwMDJcclxuXHRcdGJhc2U6IGVudi5WSVRFX0FQUF9DT05URVhUX1BBVEgsXHJcblx0XHRwbHVnaW5zOiBbXHJcblx0XHRcdC4uLmNyZWF0ZVZpdGVQbHVnaW5zKGVudiwgY29tbWFuZCA9PT0gXCJidWlsZFwiKVxyXG5cdFx0XHQvLyx2aXN1YWxpemVyKClcclxuXHRcdF0sXHJcblx0XHRidWlsZDoge1xyXG5cdFx0XHRtaW5pZnk6IFwidGVyc2VyXCIsIC8vIFx1NTQyRlx1NzUyOCB0ZXJzZXIgXHU1MzhCXHU3RjI5XHJcblx0XHRcdHRlcnNlck9wdGlvbnM6IHtcclxuXHRcdFx0XHRjb21wcmVzczoge1xyXG5cdFx0XHRcdFx0cHVyZV9mdW5jczogW1wiY29uc29sZS5sb2dcIl0sIC8vIFx1NTNFQVx1NTIyMFx1OTY2NCBjb25zb2xlLmxvZ1xyXG5cdFx0XHRcdFx0Ly9kcm9wX2NvbnNvbGU6IHRydWUsIC8vIFx1NTIyMFx1OTY2NFx1NjI0MFx1NjcwOSBjb25zb2xlXHJcblx0XHRcdFx0XHRkcm9wX2RlYnVnZ2VyOiB0cnVlIC8vIFx1NTIyMFx1OTY2NCBkZWJ1Z2dlclxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0cm9sbHVwT3B0aW9uczoge1xyXG5cdFx0XHRcdG91dHB1dDoge1xyXG5cdFx0XHRcdFx0Ly8gXHU2NzAwXHU1QzBGXHU1MzE2XHU2MkM2XHU1MjA2XHU1MzA1XHJcblx0XHRcdFx0XHRtYW51YWxDaHVua3MoaWQpIHtcclxuXHRcdFx0XHRcdFx0aWYgKGlkLmluY2x1ZGVzKFwibm9kZV9tb2R1bGVzXCIpKSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKGlkLmluY2x1ZGVzKFwibm9kZV9tb2R1bGVzL2VsZW1lbnQtcGx1c1wiKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIFwidmJfcGx1Z2luX2VsZW1lbnQtcGx1c1wiXHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdGlmIChpZC5pbmNsdWRlcyhcIm5vZGVfbW9kdWxlcy9ucHJvZ3Jlc3NcIikpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBcInZiX3BsdWdpbl9ucHJvZ3Jlc3NcIiAvL1x1NTM1NVx1NzJFQ1x1NjI1M1x1NTMwNVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRpZiAoaWQuaW5jbHVkZXMoXCJub2RlX21vZHVsZXMvcXVpbGxcIikpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBcInZiX3BsdWdpbl9xdWlsbFwiXHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdGlmIChpZC5pbmNsdWRlcyhcIm5vZGVfbW9kdWxlcy9lY2hhcnRzXCIpKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gXCJ2Yl9wbHVnaW5fZWNoYXJ0c1wiXHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdGlmIChpZC5pbmNsdWRlcyhcIm5vZGVfbW9kdWxlcy9sb2Rhc2hcIikpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBcInZiX3BsdWdpbl9sb2Rhc2hcIlxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHQvLyBcdTkwMUFcdThGQzdcdTYyQzZcdTUyMDZcdTUzMDVcdTc2ODRcdTY1QjlcdTVGMEZcdTVDMDZcdTYyNDBcdTY3MDlcdTY3NjVcdTgxRUFub2RlX21vZHVsZXNcdTc2ODRcdTZBMjFcdTU3NTdcdTYyNTNcdTUzMDVcdTUyMzBcdTUzNTVcdTcyRUNcdTc2ODRjaHVua1x1NEUyRFxyXG5cdFx0XHRcdFx0XHRcdHJldHVybiBcInZiX3BsdWdpbl92ZW5kb3JcIlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdC8vIFx1NUMwNnBpbmlhXHU3Njg0XHU1MTY4XHU1QzQwXHU1RTkzXHU1MzU1XHU3MkVDXHU2MjUzXHU1MzA1XHVGRjBDXHU5MDdGXHU1MTREXHU1NDhDXHU5ODc1XHU5NzYyXHU0RTAwXHU4RDc3XHU2MjUzXHU1MzA1XHU5MDIwXHU2MjEwXHU4RDQ0XHU2RTkwXHU5MUNEXHU1OTBEXHU1RjE1XHU1MTY1XHJcblx0XHRcdFx0XHRcdGlmIChpZC5pbmNsdWRlcyhyZXNvbHZlKF9fZGlybmFtZSwgXCIvc3JjL3N0b3Jlcy9pbmRleC50c1wiKSkpIHtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gXCJ2Yl9zdG9yZVwiXHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0aWYgKGlkLmluY2x1ZGVzKFwiL3NyYy9jb21wb25lbnRzL1wiKSAmJiBpZC5pbmNsdWRlcyhcIi9WYlwiKSkge1xyXG5cdFx0XHRcdFx0XHRcdHJldHVybiBcInZiX2NvbXBvbmVudHNcIlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGlmIChpZC5pbmNsdWRlcyhcIi9zcmMvY29yZS91dGlscy9cIikgJiYgaWQuaW5jbHVkZXMoXCIvVmJcIikpIHtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gXCJ2Yl91dGlsc1wiXHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHQvLyBcdThCQkVcdTdGNkVjaHVua1x1NzY4NFx1NjU4N1x1NEVGNlx1NTQwRFx1NjgzQ1x1NUYwRlxyXG5cdFx0XHRcdFx0Y2h1bmtGaWxlTmFtZXM6IChjaHVua0luZm8pID0+IHtcclxuXHRcdFx0XHRcdFx0aWYgKGNodW5rSW5mby5pc0VudHJ5KSB7XHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuIFwiaW5kZXguW2hhc2hdLmpzXCJcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRpZiAoY2h1bmtJbmZvLm5hbWUgPT09IFwiaW5kZXhcIikge1xyXG5cdFx0XHRcdFx0XHRcdGNvbnN0IGZhY2FkZU1vZHVsZUlkID0gY2h1bmtJbmZvLmZhY2FkZU1vZHVsZUlkXHJcblx0XHRcdFx0XHRcdFx0XHQ/IGNodW5rSW5mby5mYWNhZGVNb2R1bGVJZC5zcGxpdChcIi9cIilcclxuXHRcdFx0XHRcdFx0XHRcdDogW11cclxuXHRcdFx0XHRcdFx0XHRjb25zdCBmaWxlTmFtZSA9IGZhY2FkZU1vZHVsZUlkW2ZhY2FkZU1vZHVsZUlkLmxlbmd0aCAtIDJdIHx8IFwiW25hbWVdXCJcclxuXHRcdFx0XHRcdFx0XHQvLyBcdTY4MzlcdTYzNkVjaHVua1x1NzY4NGZhY2FkZU1vZHVsZUlkXHVGRjA4XHU1MTY1XHU1M0UzXHU2QTIxXHU1NzU3XHU3Njg0XHU3NkY4XHU1QkY5XHU4REVGXHU1Rjg0XHVGRjA5XHU3NTFGXHU2MjEwY2h1bmtcdTc2ODRcdTY1ODdcdTRFRjZcdTU0MERcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gYGpzL3ZiX3ZpZXdfJHtmaWxlTmFtZX0uW2hhc2hdLmpzYFxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdHJldHVybiBganMvW25hbWVdLltoYXNoXS5qc2BcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHQvLyBcdThCQkVcdTdGNkVcdTUxNjVcdTUzRTNcdTY1ODdcdTRFRjZcdTc2ODRcdTY1ODdcdTRFRjZcdTU0MERcdTY4M0NcdTVGMEZcclxuXHRcdFx0XHRcdGVudHJ5RmlsZU5hbWVzOiBcImpzL1tuYW1lXS5baGFzaF0uanNcIixcclxuXHRcdFx0XHRcdC8vIFx1OEJCRVx1N0Y2RVx1OTc1OVx1NjAwMVx1OEQ0NFx1NkU5MFx1NjU4N1x1NEVGNlx1NzY4NFx1NjU4N1x1NEVGNlx1NTQwRFx1NjgzQ1x1NUYwRlxyXG5cdFx0XHRcdFx0YXNzZXRGaWxlTmFtZXMoYXNzZXRJbmZvKSB7XHJcblx0XHRcdFx0XHRcdGlmIChhc3NldEluZm8ubmFtZT8uZW5kc1dpdGgoXCIuY3NzXCIpKSB7XHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuIFwiY3NzL1tuYW1lXS5baGFzaF0uW2V4dF1cIlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGNvbnN0IGltZ0FycmF5ID0gW1wiLnBuZ1wiLCBcImpwZ1wiLCBcIi5qcGVnXCIsIFwid2VicCBcIiwgXCIuc3ZnXCIsIFwiLmdpZlwiXVxyXG5cdFx0XHRcdFx0XHRpZiAoaW1nQXJyYXkuc29tZSgodikgPT4gYXNzZXRJbmZvLm5hbWU/LmVuZHNXaXRoKHYpKSkge1xyXG5cdFx0XHRcdFx0XHRcdHJldHVybiBcImltZy9bbmFtZV0uW2hhc2hdLltleHRdXCJcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRyZXR1cm4gXCJtZWRpYS9hc3NldC9bbmFtZV0uW2hhc2g6NF0uW2V4dF1cIlxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdHJlc29sdmU6IHtcclxuXHRcdFx0Ly8gaHR0cHM6Ly9jbi52aXRlanMuZGV2L2NvbmZpZy8jcmVzb2x2ZS1hbGlhc1xyXG5cdFx0XHRhbGlhczoge1xyXG5cdFx0XHRcdFwiQGFcIjogcmVzb2x2ZShfX2Rpcm5hbWUsIFwiLi9zcmMvYXBpXCIpLFxyXG5cdFx0XHRcdFwiQHNcIjogcmVzb2x2ZShfX2Rpcm5hbWUsIFwiLi9zcmMvc3RvcmVzXCIpLFxyXG5cdFx0XHRcdFwiQHJcIjogcmVzb2x2ZShfX2Rpcm5hbWUsIFwiLi9zcmMvcm91dGVyXCIpLFxyXG5cdFx0XHRcdFwiQHZcIjogcmVzb2x2ZShfX2Rpcm5hbWUsIFwiLi9zcmMvdmlld3NcIiksXHJcblx0XHRcdFx0XCJAQFwiOiByZXNvbHZlKF9fZGlybmFtZSwgXCIuL3NyYy9jb3JlXCIpLFxyXG5cdFx0XHRcdFwiQEBAXCI6IHJlc29sdmUoX19kaXJuYW1lLCBcIi4vc3JjL2NvbXBvbmVudHNcIiksXHJcblx0XHRcdFx0XCJAY29tXCI6IHJlc29sdmUoX19kaXJuYW1lLCBcIi4vc3JjL2NvbXBvbmVudHNcIiksXHJcblx0XHRcdFx0XCJAXCI6IHJlc29sdmUoX19kaXJuYW1lLCBcIi4vc3JjXCIpLFxyXG5cdFx0XHRcdFwiflwiOiByZXNvbHZlKF9fZGlybmFtZSwgXCIuL1wiKVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyBodHRwczovL2NuLnZpdGVqcy5kZXYvY29uZmlnLyNyZXNvbHZlLWV4dGVuc2lvbnNcclxuXHRcdFx0ZXh0ZW5zaW9uczogW1wiLm1qc1wiLCBcIi5qc1wiLCBcIi50c1wiLCBcIi5qc3hcIiwgXCIudHN4XCIsIFwiLmpzb25cIiwgXCIudnVlXCJdXHJcblx0XHR9LFxyXG5cdFx0Ly8gdml0ZSBcdTc2RjhcdTUxNzNcdTkxNERcdTdGNkVcclxuXHRcdHNlcnZlcjoge1xyXG5cdFx0XHRwb3J0OiBOdW1iZXIoZW52LlZJVEVfQVBQX1BPUlQpLFxyXG5cdFx0XHQvLyBob3N0OiB0cnVlLFxyXG5cdFx0XHRob3N0OiBcIjAuMC4wLjBcIixcclxuXHRcdFx0Ly8gXHU3MEVEXHU2NkY0XHU2NUIwXHJcblx0XHRcdGhtcjogdHJ1ZSxcclxuXHRcdFx0Ly8gXHU4QkJFXHU0RTNBIHRydWUgXHU2NUY2XHU4MkU1XHU3QUVGXHU1M0UzXHU1REYyXHU4OEFCXHU1MzYwXHU3NTI4XHU1MjE5XHU0RjFBXHU3NkY0XHU2M0E1XHU5MDAwXHU1MUZBXHVGRjBDXHU4MDBDXHU0RTBEXHU2NjJGXHU1QzFEXHU4QkQ1XHU0RTBCXHU0RTAwXHU0RTJBXHU1M0VGXHU3NTI4XHU3QUVGXHU1M0UzXHJcblx0XHRcdHN0cmljdFBvcnQ6IHRydWUsXHJcblx0XHRcdG9wZW46IHRydWUsXHJcblx0XHRcdHByb3h5OiB7XHJcblx0XHRcdFx0W2Vudi5WSVRFX0FQUF9CQVNFX0FQSV06IHtcclxuXHRcdFx0XHRcdC8vdGFyZ2V0OiBcImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MFwiLFxyXG5cdFx0XHRcdFx0dGFyZ2V0OiBlbnYuVklURV9BUFBfUFJPWFlfVVJMLFxyXG5cdFx0XHRcdFx0Y2hhbmdlT3JpZ2luOiB0cnVlLFxyXG5cdFx0XHRcdFx0cmV3cml0ZTogKHBhdGgpID0+IHBhdGgucmVwbGFjZShuZXcgUmVnRXhwKFwiXlwiICsgZW52LlZJVEVfQVBQX0JBU0VfQVBJKSwgXCJcIilcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRwcmV2aWV3OiB7XHJcblx0XHRcdHBvcnQ6IDY2NjYsXHJcblx0XHRcdC8vIGhvc3Q6IHRydWUsXHJcblx0XHRcdGhvc3Q6IFwiMC4wLjAuMFwiLFxyXG5cdFx0XHQvLyBcdTcwRURcdTY2RjRcdTY1QjBcclxuXHRcdFx0aG1yOiB0cnVlLFxyXG5cdFx0XHQvLyBcdThCQkVcdTRFM0EgdHJ1ZSBcdTY1RjZcdTgyRTVcdTdBRUZcdTUzRTNcdTVERjJcdTg4QUJcdTUzNjBcdTc1MjhcdTUyMTlcdTRGMUFcdTc2RjRcdTYzQTVcdTkwMDBcdTUxRkFcdUZGMENcdTgwMENcdTRFMERcdTY2MkZcdTVDMURcdThCRDVcdTRFMEJcdTRFMDBcdTRFMkFcdTUzRUZcdTc1MjhcdTdBRUZcdTUzRTNcclxuXHRcdFx0c3RyaWN0UG9ydDogdHJ1ZSxcclxuXHRcdFx0b3BlbjogdHJ1ZSxcclxuXHRcdFx0Y29yczogZmFsc2UsXHJcblx0XHRcdHByb3h5OiB7XHJcblx0XHRcdFx0Ly8gXCIvcHJvZC1hcGlcIjoge1xyXG5cdFx0XHRcdC8vICAgdGFyZ2V0OiBcImh0dHA6Ly9sb2NhbGhvc3Q6NjA2MFwiLFxyXG5cdFx0XHRcdC8vICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxyXG5cdFx0XHRcdC8vICAgcmV3cml0ZTogKHApID0+IHAucmVwbGFjZSgvXlxcL3Byb2QtYXBpLywgXCJcIiksXHJcblx0XHRcdFx0Ly8gfSxcdDFcclxuXHRcdFx0XHRcIi9wcm9kLWFwaVwiOiB7XHJcblx0XHRcdFx0XHR0YXJnZXQ6IFwiaHR0cDovLzE5Mi4xNjguMC44Mjo2MDY2XCIsXHJcblx0XHRcdFx0XHRjaGFuZ2VPcmlnaW46IHRydWUsXHJcblx0XHRcdFx0XHRyZXdyaXRlOiAocCkgPT4gcC5yZXBsYWNlKC9eXFwvcHJvZC1hcGkvLCBcIi9wcm9kLWFwaVwiKVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdC8vIFx1OTg4NFx1N0YxNlx1OEJEMVxyXG5cdFx0b3B0aW1pemVEZXBzOiB7XHJcblx0XHRcdGluY2x1ZGU6IFtcclxuXHRcdFx0XHRcInZ1ZVwiLFxyXG5cdFx0XHRcdFwidnVlLXJvdXRlclwiLFxyXG5cdFx0XHRcdFwicGluaWFcIixcclxuXHRcdFx0XHRcImF4aW9zXCIsXHJcblx0XHRcdFx0XCJAdnVldXNlL2NvcmVcIixcclxuXHRcdFx0XHRcInBhdGgtdG8tcmVnZXhwXCIsXHJcblx0XHRcdFx0XCJlY2hhcnRzXCIsXHJcblx0XHRcdFx0XCJ2dWUtaTE4blwiLFxyXG5cdFx0XHRcdFwiQHZ1ZXVwL3Z1ZS1xdWlsbFwiLFxyXG5cdFx0XHRcdFwiYnBtbi1qcy9saWIvVmlld2VyXCIsXHJcblx0XHRcdFx0XCJicG1uLWpzL2xpYi9Nb2RlbGVyLmpzXCIsXHJcblx0XHRcdFx0XCJicG1uLWpzLXByb3BlcnRpZXMtcGFuZWxcIixcclxuXHRcdFx0XHRcIm1pbi1kYXNoXCIsXHJcblx0XHRcdFx0XCJkaWFncmFtLWpzL2xpYi9uYXZpZ2F0aW9uL21vdmVjYW52YXNcIixcclxuXHRcdFx0XHRcImRpYWdyYW0tanMvbGliL25hdmlnYXRpb24vem9vbXNjcm9sbFwiLFxyXG5cdFx0XHRcdFwiYnBtbi1qcy9saWIvZmVhdHVyZXMvcGFsZXR0ZS9QYWxldHRlUHJvdmlkZXJcIixcclxuXHRcdFx0XHRcImJwbW4tanMvbGliL2ZlYXR1cmVzL2NvbnRleHQtcGFkL0NvbnRleHRQYWRQcm92aWRlclwiLFxyXG5cdFx0XHRcdFwiZGlhZ3JhbS1qcy9saWIvZHJhdy9CYXNlUmVuZGVyZXJcIixcclxuXHRcdFx0XHRcInRpbnktc3ZnXCIsXHJcblx0XHRcdFx0XCJpbWFnZS1jb252ZXJzaW9uXCIsXHJcblx0XHRcdFx0XCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy8qKi9jc3NcIlxyXG5cdFx0XHRdXHJcblx0XHR9XHJcblx0fVxyXG59KVxyXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkQ6XFxcXDAxV29ya1xcXFwwMVZiZXJBZG1pblxcXFxWYmVyQWRtaW5QbHVzVjNcXFxcVUlcXFxcVkFQX1YzLlZVRVxcXFx2aXRlXFxcXHBsdWdpbnNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkQ6XFxcXDAxV29ya1xcXFwwMVZiZXJBZG1pblxcXFxWYmVyQWRtaW5QbHVzVjNcXFxcVUlcXFxcVkFQX1YzLlZVRVxcXFx2aXRlXFxcXHBsdWdpbnNcXFxcaW5kZXgudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6LzAxV29yay8wMVZiZXJBZG1pbi9WYmVyQWRtaW5QbHVzVjMvVUkvVkFQX1YzLlZVRS92aXRlL3BsdWdpbnMvaW5kZXgudHNcIjtpbXBvcnQgdnVlIGZyb20gXCJAdml0ZWpzL3BsdWdpbi12dWVcIlxyXG5pbXBvcnQgY3JlYXRlQXV0b0ltcG9ydCBmcm9tIFwiLi9fYXV0by1pbXBvcnRcIlxyXG5pbXBvcnQgY3JlYXRlU2V0dXBFeHRlbmQgZnJvbSBcIi4vX3NldHVwLWV4dGVuZFwiXHJcbmltcG9ydCBjcmVhdGVJY29ucyBmcm9tIFwiLi9faWNvbnNcIlxyXG5pbXBvcnQgY3JlYXRlU3ZnSWNvbiBmcm9tIFwiLi9fc3ZnLWljb25cIlxyXG5pbXBvcnQgY3JlYXRlQ29tcHJlc3Npb24gZnJvbSBcIi4vX2NvbXByZXNzaW9uXCJcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVZpdGVQbHVnaW5zKHZpdGVFbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIGlzQnVpbGQgPSBmYWxzZSk6IGFueVtdIHtcclxuXHRjb25zdCB2aXRlUGx1Z2lucyA9IFt2dWUoKV1cclxuXHR2aXRlUGx1Z2lucy5wdXNoKC4uLmNyZWF0ZUF1dG9JbXBvcnQoKSlcclxuXHR2aXRlUGx1Z2lucy5wdXNoKGNyZWF0ZVNldHVwRXh0ZW5kKCkpXHJcblx0dml0ZVBsdWdpbnMucHVzaChjcmVhdGVJY29ucygpKVxyXG5cdHZpdGVQbHVnaW5zLnB1c2goY3JlYXRlU3ZnSWNvbihpc0J1aWxkKSlcclxuXHRpc0J1aWxkICYmIHZpdGVQbHVnaW5zLnB1c2goLi4uY3JlYXRlQ29tcHJlc3Npb24odml0ZUVudikpXHJcblx0cmV0dXJuIHZpdGVQbHVnaW5zXHJcbn1cclxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJEOlxcXFwwMVdvcmtcXFxcMDFWYmVyQWRtaW5cXFxcVmJlckFkbWluUGx1c1YzXFxcXFVJXFxcXFZBUF9WMy5WVUVcXFxcdml0ZVxcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFwwMVdvcmtcXFxcMDFWYmVyQWRtaW5cXFxcVmJlckFkbWluUGx1c1YzXFxcXFVJXFxcXFZBUF9WMy5WVUVcXFxcdml0ZVxcXFxwbHVnaW5zXFxcXF9hdXRvLWltcG9ydC50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRDovMDFXb3JrLzAxVmJlckFkbWluL1ZiZXJBZG1pblBsdXNWMy9VSS9WQVBfVjMuVlVFL3ZpdGUvcGx1Z2lucy9fYXV0by1pbXBvcnQudHNcIjtpbXBvcnQgQXV0b0ltcG9ydCBmcm9tIFwidW5wbHVnaW4tYXV0by1pbXBvcnQvdml0ZVwiXHJcbmltcG9ydCBDb21wb25lbnRzIGZyb20gXCJ1bnBsdWdpbi12dWUtY29tcG9uZW50cy92aXRlXCJcclxuaW1wb3J0IEljb25zUmVzb2x2ZXIgZnJvbSBcInVucGx1Z2luLWljb25zL3Jlc29sdmVyXCJcclxuaW1wb3J0IHsgRWxlbWVudFBsdXNSZXNvbHZlciB9IGZyb20gXCJ1bnBsdWdpbi12dWUtY29tcG9uZW50cy9yZXNvbHZlcnNcIlxyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlQXV0b0ltcG9ydCgpIHtcclxuXHRyZXR1cm4gW1xyXG5cdFx0QXV0b0ltcG9ydCh7XHJcblx0XHRcdGltcG9ydHM6IFtcInZ1ZVwiLCBcInZ1ZS1yb3V0ZXJcIiwgXCJAdnVldXNlL2NvcmVcIiwgXCJwaW5pYVwiXSxcclxuXHRcdFx0Ly8gcGx1c1x1NjMwOVx1OTcwMFx1NUYxNVx1NTE2NVxyXG5cdFx0XHRyZXNvbHZlcnM6IFtcclxuXHRcdFx0XHRFbGVtZW50UGx1c1Jlc29sdmVyKCksXHJcblx0XHRcdFx0SWNvbnNSZXNvbHZlcih7XHJcblx0XHRcdFx0XHRwcmVmaXg6IFwiSWNvblwiXHJcblx0XHRcdFx0fSlcclxuXHRcdFx0XSxcclxuXHRcdFx0ZGlyczogW1wic3JjL2NvcmUvdXRpbHNcIiwgXCJzcmMvY29yZS9zZXJ2aWNlc1wiLCBcInNyYy9jb3JlL3VzZVwiLCBcInNyYy9jb3JlL2VudW1zXCJdLFxyXG5cdFx0XHRkdHM6IFwidml0ZS9hdXRvLWltcG9ydC9hdXRvLWltcG9ydC5kLnRzXCIsXHJcblx0XHRcdGVzbGludHJjOiB7XHJcblx0XHRcdFx0ZW5hYmxlZDogdHJ1ZSxcclxuXHRcdFx0XHRmaWxlcGF0aDogXCJ2aXRlL2F1dG8taW1wb3J0Ly5lc2xpbnRyYy1hdXRvLWltcG9ydC5qc29uXCIsXHJcblx0XHRcdFx0Z2xvYmFsc1Byb3BWYWx1ZTogdHJ1ZVxyXG5cdFx0XHR9XHJcblx0XHR9KSxcclxuXHRcdC8vIHBsdXNcdTYzMDlcdTk3MDBcdTVGMTVcdTUxNjVcclxuXHRcdENvbXBvbmVudHMoe1xyXG5cdFx0XHRyZXNvbHZlcnM6IFtcclxuXHRcdFx0XHRFbGVtZW50UGx1c1Jlc29sdmVyKCksXHJcblx0XHRcdFx0Ly8gXHU4MUVBXHU1MkE4XHU2Q0U4XHU1MThDXHU1NkZFXHU2ODA3XHU3RUM0XHU0RUY2XHJcblx0XHRcdFx0SWNvbnNSZXNvbHZlcih7XHJcblx0XHRcdFx0XHRwcmVmaXg6IFwiSWNvblwiXHJcblx0XHRcdFx0XHQvL2VuYWJsZWRDb2xsZWN0aW9uczogW1wiZXBcIiwgXCJtZGlcIiwgXCJTaW1wbGUgSWNvbnNcIl1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHRdLFxyXG5cdFx0XHQvLyBcdTYzMDdcdTVCOUFcdTdFQzRcdTRFRjZcdTRGNERcdTdGNkVcdUZGMENcdTlFRDhcdThCQTRcdTY2MkZzcmMvY29tcG9uZW50c1xyXG5cdFx0XHRkaXJzOiBbXCJzcmMvY29tcG9uZW50c1wiXSxcclxuXHRcdFx0Ly8gXHU3RUM0XHU0RUY2XHU3Njg0XHU2NzA5XHU2NTQ4XHU2NTg3XHU0RUY2XHU2MjY5XHU1QzU1XHU1NDBEXHUzMDAyXHJcblx0XHRcdGV4dGVuc2lvbnM6IFtcInZ1ZVwiXSxcclxuXHRcdFx0Ly8gXHU2NDFDXHU3RDIyXHU1QjUwXHU3NkVFXHU1RjU1XHJcblx0XHRcdGRlZXA6IHRydWUsXHJcblx0XHRcdGR0czogXCJ2aXRlL2F1dG8taW1wb3J0L2NvbXBvbmVudHMuZC50c1wiXHJcblx0XHR9KVxyXG5cdF1cclxufVxyXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkQ6XFxcXDAxV29ya1xcXFwwMVZiZXJBZG1pblxcXFxWYmVyQWRtaW5QbHVzVjNcXFxcVUlcXFxcVkFQX1YzLlZVRVxcXFx2aXRlXFxcXHBsdWdpbnNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkQ6XFxcXDAxV29ya1xcXFwwMVZiZXJBZG1pblxcXFxWYmVyQWRtaW5QbHVzVjNcXFxcVUlcXFxcVkFQX1YzLlZVRVxcXFx2aXRlXFxcXHBsdWdpbnNcXFxcX3NldHVwLWV4dGVuZC50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRDovMDFXb3JrLzAxVmJlckFkbWluL1ZiZXJBZG1pblBsdXNWMy9VSS9WQVBfVjMuVlVFL3ZpdGUvcGx1Z2lucy9fc2V0dXAtZXh0ZW5kLnRzXCI7aW1wb3J0IHNldHVwRXh0ZW5kIGZyb20gXCJ2aXRlLXBsdWdpbi12dWUtc2V0dXAtZXh0ZW5kXCJcclxuLy8gXHU2QjY0XHU2M0QyXHU0RUY2XHU1M0VGXHU0RUU1XHU1NzI4IFx1NEY3Rlx1NzUyOHNldHVwXHU4QkVEXHU2Q0Q1XHU3Q0Q2XHU3Njg0XHU2NUY2XHU1MDE5XHU3NkY0XHU2M0E1XHU0RTNBXHU3RUM0XHU0RUY2XHU1QjlBXHU0RTQ5bmFtZVxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVTZXR1cEV4dGVuZCgpIHtcclxuXHRyZXR1cm4gc2V0dXBFeHRlbmQoKVxyXG59XHJcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRDpcXFxcMDFXb3JrXFxcXDAxVmJlckFkbWluXFxcXFZiZXJBZG1pblBsdXNWM1xcXFxVSVxcXFxWQVBfVjMuVlVFXFxcXHZpdGVcXFxccGx1Z2luc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRDpcXFxcMDFXb3JrXFxcXDAxVmJlckFkbWluXFxcXFZiZXJBZG1pblBsdXNWM1xcXFxVSVxcXFxWQVBfVjMuVlVFXFxcXHZpdGVcXFxccGx1Z2luc1xcXFxfaWNvbnMudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6LzAxV29yay8wMVZiZXJBZG1pbi9WYmVyQWRtaW5QbHVzVjMvVUkvVkFQX1YzLlZVRS92aXRlL3BsdWdpbnMvX2ljb25zLnRzXCI7aW1wb3J0IEljb25zIGZyb20gXCJ1bnBsdWdpbi1pY29ucy92aXRlXCJcclxuXHJcbmV4cG9ydCBkZWZhdWx0ICgpID0+IHtcclxuXHRyZXR1cm4gSWNvbnMoe1xyXG5cdFx0Ly8gXHU4MUVBXHU1MkE4XHU1Qjg5XHU4OEM1XHU1NkZFXHU2ODA3XHU1RTkzXHJcblx0XHRhdXRvSW5zdGFsbDogdHJ1ZVxyXG5cdH0pXHJcbn1cclxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJEOlxcXFwwMVdvcmtcXFxcMDFWYmVyQWRtaW5cXFxcVmJlckFkbWluUGx1c1YzXFxcXFVJXFxcXFZBUF9WMy5WVUVcXFxcdml0ZVxcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFwwMVdvcmtcXFxcMDFWYmVyQWRtaW5cXFxcVmJlckFkbWluUGx1c1YzXFxcXFVJXFxcXFZBUF9WMy5WVUVcXFxcdml0ZVxcXFxwbHVnaW5zXFxcXF9zdmctaWNvbi50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRDovMDFXb3JrLzAxVmJlckFkbWluL1ZiZXJBZG1pblBsdXNWMy9VSS9WQVBfVjMuVlVFL3ZpdGUvcGx1Z2lucy9fc3ZnLWljb24udHNcIjtpbXBvcnQgeyBjcmVhdGVTdmdJY29uc1BsdWdpbiB9IGZyb20gXCJ2aXRlLXBsdWdpbi1zdmctaWNvbnNcIlxyXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVTdmdJY29uKGlzQnVpbGQ6IGJvb2xlYW4pIHtcclxuXHRyZXR1cm4gY3JlYXRlU3ZnSWNvbnNQbHVnaW4oe1xyXG5cdFx0aWNvbkRpcnM6IFtwYXRoLnJlc29sdmUocGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgXCIuLi8uLi9zcmNcIiksIFwiYXNzZXRzL2ljb25zL3N2Z1wiKV0sXHJcblx0XHRzeW1ib2xJZDogXCJpY29uLVtkaXJdLVtuYW1lXVwiLFxyXG5cdFx0c3Znb09wdGlvbnM6IGlzQnVpbGRcclxuXHR9KVxyXG59XHJcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRDpcXFxcMDFXb3JrXFxcXDAxVmJlckFkbWluXFxcXFZiZXJBZG1pblBsdXNWM1xcXFxVSVxcXFxWQVBfVjMuVlVFXFxcXHZpdGVcXFxccGx1Z2luc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRDpcXFxcMDFXb3JrXFxcXDAxVmJlckFkbWluXFxcXFZiZXJBZG1pblBsdXNWM1xcXFxVSVxcXFxWQVBfVjMuVlVFXFxcXHZpdGVcXFxccGx1Z2luc1xcXFxfY29tcHJlc3Npb24udHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6LzAxV29yay8wMVZiZXJBZG1pbi9WYmVyQWRtaW5QbHVzVjMvVUkvVkFQX1YzLlZVRS92aXRlL3BsdWdpbnMvX2NvbXByZXNzaW9uLnRzXCI7aW1wb3J0IGNvbXByZXNzaW9uIGZyb20gXCJ2aXRlLXBsdWdpbi1jb21wcmVzc2lvblwiXHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVDb21wcmVzc2lvbihlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pIHtcclxuXHRjb25zdCB7IFZJVEVfQlVJTERfQ09NUFJFU1MgfSA9IGVudlxyXG5cdGNvbnN0IHBsdWdpbiA9IFtdXHJcblx0aWYgKFZJVEVfQlVJTERfQ09NUFJFU1MgIT0gXCJcIikge1xyXG5cdFx0Y29uc3QgY29tcHJlc3NMaXN0ID0gVklURV9CVUlMRF9DT01QUkVTUy5zcGxpdChcIixcIilcclxuXHRcdGlmIChjb21wcmVzc0xpc3QuaW5jbHVkZXMoXCJnemlwXCIpKSB7XHJcblx0XHRcdHBsdWdpbi5wdXNoKFxyXG5cdFx0XHRcdGNvbXByZXNzaW9uKHtcclxuXHRcdFx0XHRcdGV4dDogXCIuZ3pcIixcclxuXHRcdFx0XHRcdGRlbGV0ZU9yaWdpbkZpbGU6IGZhbHNlXHJcblx0XHRcdFx0fSlcclxuXHRcdFx0KVxyXG5cdFx0fVxyXG5cdFx0aWYgKGNvbXByZXNzTGlzdC5pbmNsdWRlcyhcImJyb3RsaVwiKSkge1xyXG5cdFx0XHRwbHVnaW4ucHVzaChcclxuXHRcdFx0XHRjb21wcmVzc2lvbih7XHJcblx0XHRcdFx0XHRleHQ6IFwiLmJyXCIsXHJcblx0XHRcdFx0XHRhbGdvcml0aG06IFwiYnJvdGxpQ29tcHJlc3NcIixcclxuXHRcdFx0XHRcdGRlbGV0ZU9yaWdpbkZpbGU6IGZhbHNlXHJcblx0XHRcdFx0fSlcclxuXHRcdFx0KVxyXG5cdFx0fVxyXG5cdH1cclxuXHRyZXR1cm4gcGx1Z2luXHJcbn1cclxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUF1VixTQUFTLGNBQWMsZUFBZTtBQUM3WCxTQUFTLGVBQWU7OztBQ0Q4VixPQUFPLFNBQVM7OztBQ0FGLE9BQU8sZ0JBQWdCO0FBQzNaLE9BQU8sZ0JBQWdCO0FBQ3ZCLE9BQU8sbUJBQW1CO0FBQzFCLFNBQVMsMkJBQTJCO0FBRXJCLFNBQVIsbUJBQW9DO0FBQzFDLFNBQU87QUFBQSxJQUNOLFdBQVc7QUFB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
|