// vite.config.ts import { URL, fileURLToPath } from "node:url"; import { defineConfig, loadEnv } from "file:///C:/Users/22214/Desktop/%E6%99%BA%E8%83%BD%E5%B9%B3%E5%8F%B0/Industrial-image-management-system---web/node_modules/vite/dist/node/index.js"; // config/plugins/index.ts import vue from "file:///C:/Users/22214/Desktop/%E6%99%BA%E8%83%BD%E5%B9%B3%E5%8F%B0/Industrial-image-management-system---web/node_modules/@vitejs/plugin-vue/dist/index.mjs"; import vueJsx from "file:///C:/Users/22214/Desktop/%E6%99%BA%E8%83%BD%E5%B9%B3%E5%8F%B0/Industrial-image-management-system---web/node_modules/@vitejs/plugin-vue-jsx/dist/index.mjs"; // config/plugins/app-info.ts import boxen from "file:///C:/Users/22214/Desktop/%E6%99%BA%E8%83%BD%E5%B9%B3%E5%8F%B0/Industrial-image-management-system---web/node_modules/boxen/index.js"; import picocolors from "file:///C:/Users/22214/Desktop/%E6%99%BA%E8%83%BD%E5%B9%B3%E5%8F%B0/Industrial-image-management-system---web/node_modules/picocolors/picocolors.js"; function appInfo() { return { name: "appInfo", apply: "serve", async buildStart() { const { bold, green, cyan, bgGreen, underline } = picocolors; console.log( boxen( `${bold(green(`${bgGreen("ContiNew Admin v4.0.0-SNAPSHOT")}`))} ${cyan("\u5728\u7EBF\u6587\u6863\uFF1A")}${underline("https://continew.top")} ${cyan("\u5E38\u89C1\u95EE\u9898\uFF1A")}${underline("https://continew.top/admin/faq.html")} ${cyan("\u6301\u7EED\u8FED\u4EE3\u4F18\u5316\u7684\u524D\u540E\u7AEF\u5206\u79BB\u4E2D\u540E\u53F0\u7BA1\u7406\u7CFB\u7EDF\u6846\u67B6\u3002")}`, { padding: 1, margin: 1, borderStyle: "double", textAlignment: "center" } ) ); } }; } // config/plugins/devtools.ts import VueDevTools from "file:///C:/Users/22214/Desktop/%E6%99%BA%E8%83%BD%E5%B9%B3%E5%8F%B0/Industrial-image-management-system---web/node_modules/vite-plugin-vue-devtools/dist/vite.mjs"; function createDevtools(env) { const { VITE_OPEN_DEVTOOLS } = env; return VITE_OPEN_DEVTOOLS === "true" && VueDevTools(); } // config/plugins/auto-import.ts import autoImport from "file:///C:/Users/22214/Desktop/%E6%99%BA%E8%83%BD%E5%B9%B3%E5%8F%B0/Industrial-image-management-system---web/node_modules/unplugin-auto-import/dist/vite.js"; function createAutoImport() { return autoImport({ // 自动导入 vue 相关函数 imports: ["vue", "vue-router", { // vue 3.5.x vue: ["useTemplateRef", "onWatcherCleanup", "useId"] }], dts: "./src/types/auto-imports.d.ts" }); } // config/plugins/components.ts import components from "file:///C:/Users/22214/Desktop/%E6%99%BA%E8%83%BD%E5%B9%B3%E5%8F%B0/Industrial-image-management-system---web/node_modules/unplugin-vue-components/dist/vite.mjs"; function createComponents() { return components({ // 指定组件位置,默认是 src/components 自动导入自定义组件 dirs: ["src/components"], extensions: ["vue", "tsx"], // 配置文件生成位置 dts: "./src/types/components.d.ts" }); } // config/plugins/svg-icon.ts import path from "node:path"; import process2 from "node:process"; import { createSvgIconsPlugin } from "file:///C:/Users/22214/Desktop/%E6%99%BA%E8%83%BD%E5%B9%B3%E5%8F%B0/Industrial-image-management-system---web/node_modules/vite-plugin-svg-icons/dist/index.mjs"; function createSvgIcon(isBuild) { return createSvgIconsPlugin({ // 指定需要缓存的图标文件夹 iconDirs: [path.resolve(process2.cwd(), "src/assets/icons")], // 指定 symbolId 格式 symbolId: "icon-[dir]-[name]", svgoOptions: isBuild }); } // config/plugins/mock.ts import { viteMockServe } from "file:///C:/Users/22214/Desktop/%E6%99%BA%E8%83%BD%E5%B9%B3%E5%8F%B0/Industrial-image-management-system---web/node_modules/vite-plugin-mock/dist/index.js"; function createMock(env, isBuild) { const { VITE_BUILD_MOCK } = env; return viteMockServe({ mockPath: "src/mock", // 目录位置 logger: !isBuild, // 是否在控制台显示请求日志 supportTs: true, // 是否读取 ts 文件模块 localEnabled: true, // 设置是否启用本地mock文件 prodEnabled: isBuild && VITE_BUILD_MOCK === "true", // 设置打包是否启用mock功能 // 这样可以控制关闭mock的时候不让mock打包到最终代码内 injectCode: ` import { setupProdMockServer } from '../src/mock/index'; setupProdMockServer(); ` }); } // config/plugins/index.ts function createVitePlugins(viteEnv, isBuild = false) { const vitePlugins = [appInfo(), vue(), vueJsx()]; vitePlugins.push(createDevtools(viteEnv)); vitePlugins.push(createAutoImport()); vitePlugins.push(createComponents()); vitePlugins.push(createSvgIcon(isBuild)); vitePlugins.push(createMock(viteEnv, isBuild)); return vitePlugins; } // vite.config.ts var __vite_injected_original_import_meta_url = "file:///C:/Users/22214/Desktop/%E6%99%BA%E8%83%BD%E5%B9%B3%E5%8F%B0/Industrial-image-management-system---web/vite.config.ts"; var vite_config_default = defineConfig(({ command, mode }) => { const env = loadEnv(mode, process.cwd()); return { // 开发或生产环境服务的公共基础路径 base: env.VITE_BASE, // 路径别名 resolve: { alias: { "~": fileURLToPath(new URL("./", __vite_injected_original_import_meta_url)), "@": fileURLToPath(new URL("./src", __vite_injected_original_import_meta_url)) } }, // 引入sass全局样式变量 css: { preprocessorOptions: { scss: { additionalData: `@use "@/styles/var.scss" as *;`, api: "modern-compiler" } } }, // 添加需要vite优化的依赖 optimizeDeps: { include: ["vue-draggable-plus"] }, server: { // 服务启动时是否自动打开浏览器 open: true, // 本地跨域代理 -> 代理到服务器的接口地址 proxy: { [env.VITE_API_PREFIX]: { target: env.VITE_API_BASE_URL, // 后台服务器地址 changeOrigin: true, // 是否允许不同源 secure: false, // 支持https rewrite: (path2) => path2.replace(new RegExp(`^${env.VITE_API_PREFIX}`), "") } } }, plugins: createVitePlugins(env, command === "build"), // 构建 build: { chunkSizeWarningLimit: 2e3, // 消除打包大小超过500kb警告 outDir: "dist", // 指定打包路径,默认为项目根目录下的dist目录 minify: "terser", // Vite 2.6.x 以上需要配置 minify:"terser",terserOptions才能生效 terserOptions: { compress: { keep_infinity: true, // 防止 Infinity 被压缩成 1/0,这可能会导致 Chrome 上的性能问题 drop_console: command === "build", // 只在生产环境构建时去除 console drop_debugger: true // 生产环境去除 debugger }, format: { comments: false // 删除注释 } }, // 静态资源打包到dist下的不同目录 rollupOptions: { output: { chunkFileNames: "static/js/[name]-[hash].js", entryFileNames: "static/js/[name]-[hash].js", assetFileNames: "static/[ext]/[name]-[hash].[ext]" } } }, // 以 envPrefix 开头的环境变量会通过 import.meta.env 暴露在你的客户端源码中。 envPrefix: ["VITE", "FILE"] }; }); export { vite_config_default as default }; //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiLCAiY29uZmlnL3BsdWdpbnMvaW5kZXgudHMiLCAiY29uZmlnL3BsdWdpbnMvYXBwLWluZm8udHMiLCAiY29uZmlnL3BsdWdpbnMvZGV2dG9vbHMudHMiLCAiY29uZmlnL3BsdWdpbnMvYXV0by1pbXBvcnQudHMiLCAiY29uZmlnL3BsdWdpbnMvY29tcG9uZW50cy50cyIsICJjb25maWcvcGx1Z2lucy9zdmctaWNvbi50cyIsICJjb25maWcvcGx1Z2lucy9tb2NrLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiQzpcXFxcVXNlcnNcXFxcMjIyMTRcXFxcRGVza3RvcFxcXFxcdTY2N0FcdTgwRkRcdTVFNzNcdTUzRjBcXFxcSW5kdXN0cmlhbC1pbWFnZS1tYW5hZ2VtZW50LXN5c3RlbS0tLXdlYlwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiQzpcXFxcVXNlcnNcXFxcMjIyMTRcXFxcRGVza3RvcFxcXFxcdTY2N0FcdTgwRkRcdTVFNzNcdTUzRjBcXFxcSW5kdXN0cmlhbC1pbWFnZS1tYW5hZ2VtZW50LXN5c3RlbS0tLXdlYlxcXFx2aXRlLmNvbmZpZy50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vQzovVXNlcnMvMjIyMTQvRGVza3RvcC8lRTYlOTklQkElRTglODMlQkQlRTUlQjklQjMlRTUlOEYlQjAvSW5kdXN0cmlhbC1pbWFnZS1tYW5hZ2VtZW50LXN5c3RlbS0tLXdlYi92aXRlLmNvbmZpZy50c1wiO2ltcG9ydCB7IFVSTCwgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ25vZGU6dXJsJ1xyXG5pbXBvcnQgeyBkZWZpbmVDb25maWcsIGxvYWRFbnYgfSBmcm9tICd2aXRlJ1xyXG5pbXBvcnQgY3JlYXRlVml0ZVBsdWdpbnMgZnJvbSAnLi9jb25maWcvcGx1Z2lucydcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbmZpZygoeyBjb21tYW5kLCBtb2RlIH0pID0+IHtcclxuICBjb25zdCBlbnYgPSBsb2FkRW52KG1vZGUsIHByb2Nlc3MuY3dkKCkpIGFzIEltcG9ydE1ldGFFbnZcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIC8vIFx1NUYwMFx1NTNEMVx1NjIxNlx1NzUxRlx1NEVBN1x1NzNBRlx1NTg4M1x1NjcwRFx1NTJBMVx1NzY4NFx1NTE2Q1x1NTE3MVx1NTdGQVx1Nzg0MFx1OERFRlx1NUY4NFxyXG4gICAgYmFzZTogZW52LlZJVEVfQkFTRSxcclxuICAgIC8vIFx1OERFRlx1NUY4NFx1NTIyQlx1NTQwRFxyXG4gICAgcmVzb2x2ZToge1xyXG4gICAgICBhbGlhczoge1xyXG4gICAgICAgICd+JzogZmlsZVVSTFRvUGF0aChuZXcgVVJMKCcuLycsIGltcG9ydC5tZXRhLnVybCkpLFxyXG4gICAgICAgICdAJzogZmlsZVVSTFRvUGF0aChuZXcgVVJMKCcuL3NyYycsIGltcG9ydC5tZXRhLnVybCkpLFxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIC8vIFx1NUYxNVx1NTE2NXNhc3NcdTUxNjhcdTVDNDBcdTY4MzdcdTVGMEZcdTUzRDhcdTkxQ0ZcclxuICAgIGNzczoge1xyXG4gICAgICBwcmVwcm9jZXNzb3JPcHRpb25zOiB7XHJcbiAgICAgICAgc2Nzczoge1xyXG4gICAgICAgICAgYWRkaXRpb25hbERhdGE6IGBAdXNlIFwiQC9zdHlsZXMvdmFyLnNjc3NcIiBhcyAqO2AsXHJcbiAgICAgICAgICBhcGk6ICdtb2Rlcm4tY29tcGlsZXInLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgLy8gXHU2REZCXHU1MkEwXHU5NzAwXHU4OTgxdml0ZVx1NEYxOFx1NTMxNlx1NzY4NFx1NEY5RFx1OEQ1NlxyXG4gICAgb3B0aW1pemVEZXBzOiB7XHJcbiAgICAgIGluY2x1ZGU6IFsndnVlLWRyYWdnYWJsZS1wbHVzJ10sXHJcbiAgICB9LFxyXG4gICAgc2VydmVyOiB7XHJcbiAgICAgIC8vIFx1NjcwRFx1NTJBMVx1NTQyRlx1NTJBOFx1NjVGNlx1NjYyRlx1NTQyNlx1ODFFQVx1NTJBOFx1NjI1M1x1NUYwMFx1NkQ0Rlx1ODlDOFx1NTY2OFxyXG4gICAgICBvcGVuOiB0cnVlLFxyXG4gICAgICAvLyBcdTY3MkNcdTU3MzBcdThERThcdTU3REZcdTRFRTNcdTc0MDYgLT4gXHU0RUUzXHU3NDA2XHU1MjMwXHU2NzBEXHU1MkExXHU1NjY4XHU3Njg0XHU2M0E1XHU1M0UzXHU1NzMwXHU1NzQwXHJcbiAgICAgIHByb3h5OiB7XHJcbiAgICAgICAgW2Vudi5WSVRFX0FQSV9QUkVGSVhdOiB7XHJcbiAgICAgICAgICB0YXJnZXQ6IGVudi5WSVRFX0FQSV9CQVNFX1VSTCwgLy8gXHU1NDBFXHU1M0YwXHU2NzBEXHU1MkExXHU1NjY4XHU1NzMwXHU1NzQwXHJcbiAgICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsIC8vIFx1NjYyRlx1NTQyNlx1NTE0MVx1OEJCOFx1NEUwRFx1NTQwQ1x1NkU5MFxyXG4gICAgICAgICAgc2VjdXJlOiBmYWxzZSwgLy8gXHU2NTJGXHU2MzAxaHR0cHNcclxuICAgICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiBwYXRoLnJlcGxhY2UobmV3IFJlZ0V4cChgXiR7ZW52LlZJVEVfQVBJX1BSRUZJWH1gKSwgJycpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgcGx1Z2luczogY3JlYXRlVml0ZVBsdWdpbnMoZW52LCBjb21tYW5kID09PSAnYnVpbGQnKSxcclxuICAgIC8vIFx1Njc4NFx1NUVGQVxyXG4gICAgYnVpbGQ6IHtcclxuICAgICAgY2h1bmtTaXplV2FybmluZ0xpbWl0OiAyMDAwLCAvLyBcdTZEODhcdTk2NjRcdTYyNTNcdTUzMDVcdTU5MjdcdTVDMEZcdThEODVcdThGQzc1MDBrYlx1OEI2Nlx1NTQ0QVxyXG4gICAgICBvdXREaXI6ICdkaXN0JywgLy8gXHU2MzA3XHU1QjlBXHU2MjUzXHU1MzA1XHU4REVGXHU1Rjg0XHVGRjBDXHU5RUQ4XHU4QkE0XHU0RTNBXHU5ODc5XHU3NkVFXHU2ODM5XHU3NkVFXHU1RjU1XHU0RTBCXHU3Njg0ZGlzdFx1NzZFRVx1NUY1NVxyXG4gICAgICBtaW5pZnk6ICd0ZXJzZXInLCAvLyBWaXRlIDIuNi54IFx1NEVFNVx1NEUwQVx1OTcwMFx1ODk4MVx1OTE0RFx1N0Y2RSBtaW5pZnlcdUZGMUFcInRlcnNlclwiXHVGRjBDdGVyc2VyT3B0aW9uc1x1NjI0RFx1ODBGRFx1NzUxRlx1NjU0OFxyXG4gICAgICB0ZXJzZXJPcHRpb25zOiB7XHJcbiAgICAgICAgY29tcHJlc3M6IHtcclxuICAgICAgICAgIGtlZXBfaW5maW5pdHk6IHRydWUsIC8vIFx1OTYzMlx1NkI2MiBJbmZpbml0eSBcdTg4QUJcdTUzOEJcdTdGMjlcdTYyMTAgMS8wXHVGRjBDXHU4RkQ5XHU1M0VGXHU4MEZEXHU0RjFBXHU1QkZDXHU4MUY0IENocm9tZSBcdTRFMEFcdTc2ODRcdTYwMjdcdTgwRkRcdTk1RUVcdTk4OThcclxuICAgICAgICAgIGRyb3BfY29uc29sZTogY29tbWFuZCA9PT0gJ2J1aWxkJywgLy8gXHU1M0VBXHU1NzI4XHU3NTFGXHU0RUE3XHU3M0FGXHU1ODgzXHU2Nzg0XHU1RUZBXHU2NUY2XHU1M0JCXHU5NjY0IGNvbnNvbGVcclxuICAgICAgICAgIGRyb3BfZGVidWdnZXI6IHRydWUsIC8vIFx1NzUxRlx1NEVBN1x1NzNBRlx1NTg4M1x1NTNCQlx1OTY2NCBkZWJ1Z2dlclxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZm9ybWF0OiB7XHJcbiAgICAgICAgICBjb21tZW50czogZmFsc2UsIC8vIFx1NTIyMFx1OTY2NFx1NkNFOFx1OTFDQVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIC8vIFx1OTc1OVx1NjAwMVx1OEQ0NFx1NkU5MFx1NjI1M1x1NTMwNVx1NTIzMGRpc3RcdTRFMEJcdTc2ODRcdTRFMERcdTU0MENcdTc2RUVcdTVGNTVcclxuICAgICAgcm9sbHVwT3B0aW9uczoge1xyXG4gICAgICAgIG91dHB1dDoge1xyXG4gICAgICAgICAgY2h1bmtGaWxlTmFtZXM6ICdzdGF0aWMvanMvW25hbWVdLVtoYXNoXS5qcycsXHJcbiAgICAgICAgICBlbnRyeUZpbGVOYW1lczogJ3N0YXRpYy9qcy9bbmFtZV0tW2hhc2hdLmpzJyxcclxuICAgICAgICAgIGFzc2V0RmlsZU5hbWVzOiAnc3RhdGljL1tleHRdL1tuYW1lXS1baGFzaF0uW2V4dF0nLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgLy8gXHU0RUU1IGVudlByZWZpeCBcdTVGMDBcdTU5MzRcdTc2ODRcdTczQUZcdTU4ODNcdTUzRDhcdTkxQ0ZcdTRGMUFcdTkwMUFcdThGQzcgaW1wb3J0Lm1ldGEuZW52IFx1NjZCNFx1OTczMlx1NTcyOFx1NEY2MFx1NzY4NFx1NUJBMlx1NjIzN1x1N0FFRlx1NkU5MFx1NzgwMVx1NEUyRFx1MzAwMlxyXG4gICAgZW52UHJlZml4OiBbJ1ZJVEUnLCAnRklMRSddLFxyXG4gIH1cclxufSlcclxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJDOlxcXFxVc2Vyc1xcXFwyMjIxNFxcXFxEZXNrdG9wXFxcXFx1NjY3QVx1ODBGRFx1NUU3M1x1NTNGMFxcXFxJbmR1c3RyaWFsLWltYWdlLW1hbmFnZW1lbnQtc3lzdGVtLS0td2ViXFxcXGNvbmZpZ1xcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJDOlxcXFxVc2Vyc1xcXFwyMjIxNFxcXFxEZXNrdG9wXFxcXFx1NjY3QVx1ODBGRFx1NUU3M1x1NTNGMFxcXFxJbmR1c3RyaWFsLWltYWdlLW1hbmFnZW1lbnQtc3lzdGVtLS0td2ViXFxcXGNvbmZpZ1xcXFxwbHVnaW5zXFxcXGluZGV4LnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9DOi9Vc2Vycy8yMjIxNC9EZXNrdG9wLyVFNiU5OSVCQSVFOCU4MyVCRCVFNSVCOSVCMyVFNSU4RiVCMC9JbmR1c3RyaWFsLWltYWdlLW1hbmFnZW1lbnQtc3lzdGVtLS0td2ViL2NvbmZpZy9wbHVnaW5zL2luZGV4LnRzXCI7aW1wb3J0IHR5cGUgeyBQbHVnaW5PcHRpb24gfSBmcm9tICd2aXRlJ1xyXG5pbXBvcnQgdnVlIGZyb20gJ0B2aXRlanMvcGx1Z2luLXZ1ZSdcclxuaW1wb3J0IHZ1ZUpzeCBmcm9tICdAdml0ZWpzL3BsdWdpbi12dWUtanN4J1xyXG5cclxuaW1wb3J0IGFwcEluZm8gZnJvbSAnLi9hcHAtaW5mbydcclxuaW1wb3J0IGNyZWF0ZURldnRvb2xzIGZyb20gJy4vZGV2dG9vbHMnXHJcbmltcG9ydCBjcmVhdGVBdXRvSW1wb3J0IGZyb20gJy4vYXV0by1pbXBvcnQnXHJcbmltcG9ydCBjcmVhdGVDb21wb25lbnRzIGZyb20gJy4vY29tcG9uZW50cydcclxuaW1wb3J0IGNyZWF0ZVN2Z0ljb24gZnJvbSAnLi9zdmctaWNvbidcclxuaW1wb3J0IGNyZWF0ZU1vY2sgZnJvbSAnLi9tb2NrJ1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlVml0ZVBsdWdpbnModml0ZUVudiwgaXNCdWlsZCA9IGZhbHNlKSB7XHJcbiAgY29uc3Qgdml0ZVBsdWdpbnM6IChQbHVnaW5PcHRpb24gfCBQbHVnaW5PcHRpb25bXSlbXSA9IFthcHBJbmZvKCksIHZ1ZSgpLCB2dWVKc3goKV1cclxuICB2aXRlUGx1Z2lucy5wdXNoKGNyZWF0ZURldnRvb2xzKHZpdGVFbnYpKVxyXG4gIHZpdGVQbHVnaW5zLnB1c2goY3JlYXRlQXV0b0ltcG9ydCgpKVxyXG4gIHZpdGVQbHVnaW5zLnB1c2goY3JlYXRlQ29tcG9uZW50cygpKVxyXG4gIHZpdGVQbHVnaW5zLnB1c2goY3JlYXRlU3ZnSWNvbihpc0J1aWxkKSlcclxuICB2aXRlUGx1Z2lucy5wdXNoKGNyZWF0ZU1vY2sodml0ZUVudiwgaXNCdWlsZCkpXHJcbiAgcmV0dXJuIHZpdGVQbHVnaW5zXHJcbn1cclxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJDOlxcXFxVc2Vyc1xcXFwyMjIxNFxcXFxEZXNrdG9wXFxcXFx1NjY3QVx1ODBGRFx1NUU3M1x1NTNGMFxcXFxJbmR1c3RyaWFsLWltYWdlLW1hbmFnZW1lbnQtc3lzdGVtLS0td2ViXFxcXGNvbmZpZ1xcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJDOlxcXFxVc2Vyc1xcXFwyMjIxNFxcXFxEZXNrdG9wXFxcXFx1NjY3QVx1ODBGRFx1NUU3M1x1NTNGMFxcXFxJbmR1c3RyaWFsLWltYWdlLW1hbmFnZW1lbnQtc3lzdGVtLS0td2ViXFxcXGNvbmZpZ1xcXFxwbHVnaW5zXFxcXGFwcC1pbmZvLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9DOi9Vc2Vycy8yMjIxNC9EZXNrdG9wLyVFNiU5OSVCQSVFOCU4MyVCRCVFNSVCOSVCMyVFNSU4RiVCMC9JbmR1c3RyaWFsLWltYWdlLW1hbmFnZW1lbnQtc3lzdGVtLS0td2ViL2NvbmZpZy9wbHVnaW5zL2FwcC1pbmZvLnRzXCI7aW1wb3J0IGJveGVuIGZyb20gJ2JveGVuJ1xyXG5pbXBvcnQgcGljb2NvbG9ycyBmcm9tICdwaWNvY29sb3JzJ1xyXG5pbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gJ3ZpdGUnXHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhcHBJbmZvKCk6IFBsdWdpbiB7XHJcbiAgcmV0dXJuIHtcclxuICAgIG5hbWU6ICdhcHBJbmZvJyxcclxuICAgIGFwcGx5OiAnc2VydmUnLFxyXG4gICAgYXN5bmMgYnVpbGRTdGFydCgpIHtcclxuICAgICAgY29uc3QgeyBib2xkLCBncmVlbiwgY3lhbiwgYmdHcmVlbiwgdW5kZXJsaW5lIH0gPSBwaWNvY29sb3JzXHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICBib3hlbihcclxuICAgICAgICAgIGAke2JvbGQoZ3JlZW4oYCR7YmdHcmVlbignQ29udGlOZXcgQWRtaW4gdjQuMC4wLVNOQVBTSE9UJyl9YCkpfVxcbiR7Y3lhbignXHU1NzI4XHU3RUJGXHU2NTg3XHU2ODYzXHVGRjFBJyl9JHt1bmRlcmxpbmUoJ2h0dHBzOi8vY29udGluZXcudG9wJyl9XFxuJHtjeWFuKCdcdTVFMzhcdTg5QzFcdTk1RUVcdTk4OThcdUZGMUEnKX0ke3VuZGVybGluZSgnaHR0cHM6Ly9jb250aW5ldy50b3AvYWRtaW4vZmFxLmh0bWwnKX1cXG4ke2N5YW4oJ1x1NjMwMVx1N0VFRFx1OEZFRFx1NEVFM1x1NEYxOFx1NTMxNlx1NzY4NFx1NTI0RFx1NTQwRVx1N0FFRlx1NTIwNlx1NzlCQlx1NEUyRFx1NTQwRVx1NTNGMFx1N0JBMVx1NzQwNlx1N0NGQlx1N0VERlx1Njg0Nlx1NjdCNlx1MzAwMicpfWAsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDEsXHJcbiAgICAgICAgICAgIG1hcmdpbjogMSxcclxuICAgICAgICAgICAgYm9yZGVyU3R5bGU6ICdkb3VibGUnLFxyXG4gICAgICAgICAgICB0ZXh0QWxpZ25tZW50OiAnY2VudGVyJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgKSxcclxuICAgICAgKVxyXG4gICAgfSxcclxuICB9XHJcbn1cclxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJDOlxcXFxVc2Vyc1xcXFwyMjIxNFxcXFxEZXNrdG9wXFxcXFx1NjY3QVx1ODBGRFx1NUU3M1x1NTNGMFxcXFxJbmR1c3RyaWFsLWltYWdlLW1hbmFnZW1lbnQtc3lzdGVtLS0td2ViXFxcXGNvbmZpZ1xcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJDOlxcXFxVc2Vyc1xcXFwyMjIxNFxcXFxEZXNrdG9wXFxcXFx1NjY3QVx1ODBGRFx1NUU3M1x1NTNGMFxcXFxJbmR1c3RyaWFsLWltYWdlLW1hbmFnZW1lbnQtc3lzdGVtLS0td2ViXFxcXGNvbmZpZ1xcXFxwbHVnaW5zXFxcXGRldnRvb2xzLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9DOi9Vc2Vycy8yMjIxNC9EZXNrdG9wLyVFNiU5OSVCQSVFOCU4MyVCRCVFNSVCOSVCMyVFNSU4RiVCMC9JbmR1c3RyaWFsLWltYWdlLW1hbmFnZW1lbnQtc3lzdGVtLS0td2ViL2NvbmZpZy9wbHVnaW5zL2RldnRvb2xzLnRzXCI7aW1wb3J0IFZ1ZURldlRvb2xzIGZyb20gJ3ZpdGUtcGx1Z2luLXZ1ZS1kZXZ0b29scydcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZURldnRvb2xzKGVudikge1xyXG4gIGNvbnN0IHsgVklURV9PUEVOX0RFVlRPT0xTIH0gPSBlbnZcclxuICByZXR1cm4gVklURV9PUEVOX0RFVlRPT0xTID09PSAndHJ1ZScgJiYgVnVlRGV2VG9vbHMoKVxyXG59XHJcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiQzpcXFxcVXNlcnNcXFxcMjIyMTRcXFxcRGVza3RvcFxcXFxcdTY2N0FcdTgwRkRcdTVFNzNcdTUzRjBcXFxcSW5kdXN0cmlhbC1pbWFnZS1tYW5hZ2VtZW50LXN5c3RlbS0tLXdlYlxcXFxjb25maWdcXFxccGx1Z2luc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiQzpcXFxcVXNlcnNcXFxcMjIyMTRcXFxcRGVza3RvcFxcXFxcdTY2N0FcdTgwRkRcdTVFNzNcdTUzRjBcXFxcSW5kdXN0cmlhbC1pbWFnZS1tYW5hZ2VtZW50LXN5c3RlbS0tLXdlYlxcXFxjb25maWdcXFxccGx1Z2luc1xcXFxhdXRvLWltcG9ydC50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vQzovVXNlcnMvMjIyMTQvRGVza3RvcC8lRTYlOTklQkElRTglODMlQkQlRTUlQjklQjMlRTUlOEYlQjAvSW5kdXN0cmlhbC1pbWFnZS1tYW5hZ2VtZW50LXN5c3RlbS0tLXdlYi9jb25maWcvcGx1Z2lucy9hdXRvLWltcG9ydC50c1wiO2ltcG9ydCBhdXRvSW1wb3J0IGZyb20gJ3VucGx1Z2luLWF1dG8taW1wb3J0L3ZpdGUnXHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVBdXRvSW1wb3J0KCkge1xyXG4gIHJldHVybiBhdXRvSW1wb3J0KHtcclxuICAgIC8vIFx1ODFFQVx1NTJBOFx1NUJGQ1x1NTE2NSB2dWUgXHU3NkY4XHU1MTczXHU1MUZEXHU2NTcwXHJcbiAgICBpbXBvcnRzOiBbJ3Z1ZScsICd2dWUtcm91dGVyJywge1xyXG4gICAgICAvLyB2dWUgMy41LnhcclxuICAgICAgdnVlOiBbJ3VzZVRlbXBsYXRlUmVmJywgJ29uV2F0Y2hlckNsZWFudXAnLCAndXNlSWQnXSxcclxuICAgIH1dLFxyXG4gICAgZHRzOiAnLi9zcmMvdHlwZXMvYXV0by1pbXBvcnRzLmQudHMnLFxyXG4gIH0pXHJcbn1cclxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJDOlxcXFxVc2Vyc1xcXFwyMjIxNFxcXFxEZXNrdG9wXFxcXFx1NjY3QVx1ODBGRFx1NUU3M1x1NTNGMFxcXFxJbmR1c3RyaWFsLWltYWdlLW1hbmFnZW1lbnQtc3lzdGVtLS0td2ViXFxcXGNvbmZpZ1xcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJDOlxcXFxVc2Vyc1xcXFwyMjIxNFxcXFxEZXNrdG9wXFxcXFx1NjY3QVx1ODBGRFx1NUU3M1x1NTNGMFxcXFxJbmR1c3RyaWFsLWltYWdlLW1hbmFnZW1lbnQtc3lzdGVtLS0td2ViXFxcXGNvbmZpZ1xcXFxwbHVnaW5zXFxcXGNvbXBvbmVudHMudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0M6L1VzZXJzLzIyMjE0L0Rlc2t0b3AvJUU2JTk5JUJBJUU4JTgzJUJEJUU1JUI5JUIzJUU1JThGJUIwL0luZHVzdHJpYWwtaW1hZ2UtbWFuYWdlbWVudC1zeXN0ZW0tLS13ZWIvY29uZmlnL3BsdWdpbnMvY29tcG9uZW50cy50c1wiO2ltcG9ydCBjb21wb25lbnRzIGZyb20gJ3VucGx1Z2luLXZ1ZS1jb21wb25lbnRzL3ZpdGUnXHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVDb21wb25lbnRzKCkge1xyXG4gIHJldHVybiBjb21wb25lbnRzKHtcclxuICAgIC8vIFx1NjMwN1x1NUI5QVx1N0VDNFx1NEVGNlx1NEY0RFx1N0Y2RVx1RkYwQ1x1OUVEOFx1OEJBNFx1NjYyRiBzcmMvY29tcG9uZW50cyBcdTgxRUFcdTUyQThcdTVCRkNcdTUxNjVcdTgxRUFcdTVCOUFcdTRFNDlcdTdFQzRcdTRFRjZcclxuICAgIGRpcnM6IFsnc3JjL2NvbXBvbmVudHMnXSxcclxuICAgIGV4dGVuc2lvbnM6IFsndnVlJywgJ3RzeCddLFxyXG4gICAgLy8gXHU5MTREXHU3RjZFXHU2NTg3XHU0RUY2XHU3NTFGXHU2MjEwXHU0RjREXHU3RjZFXHJcbiAgICBkdHM6ICcuL3NyYy90eXBlcy9jb21wb25lbnRzLmQudHMnLFxyXG4gIH0pXHJcbn1cclxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJDOlxcXFxVc2Vyc1xcXFwyMjIxNFxcXFxEZXNrdG9wXFxcXFx1NjY3QVx1ODBGRFx1NUU3M1x1NTNGMFxcXFxJbmR1c3RyaWFsLWltYWdlLW1hbmFnZW1lbnQtc3lzdGVtLS0td2ViXFxcXGNvbmZpZ1xcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJDOlxcXFxVc2Vyc1xcXFwyMjIxNFxcXFxEZXNrdG9wXFxcXFx1NjY3QVx1ODBGRFx1NUU3M1x1NTNGMFxcXFxJbmR1c3RyaWFsLWltYWdlLW1hbmFnZW1lbnQtc3lzdGVtLS0td2ViXFxcXGNvbmZpZ1xcXFxwbHVnaW5zXFxcXHN2Zy1pY29uLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9DOi9Vc2Vycy8yMjIxNC9EZXNrdG9wLyVFNiU5OSVCQSVFOCU4MyVCRCVFNSVCOSVCMyVFNSU4RiVCMC9JbmR1c3RyaWFsLWltYWdlLW1hbmFnZW1lbnQtc3lzdGVtLS0td2ViL2NvbmZpZy9wbHVnaW5zL3N2Zy1pY29uLnRzXCI7aW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJ1xyXG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnXHJcbmltcG9ydCB7IGNyZWF0ZVN2Z0ljb25zUGx1Z2luIH0gZnJvbSAndml0ZS1wbHVnaW4tc3ZnLWljb25zJ1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlU3ZnSWNvbihpc0J1aWxkKSB7XHJcbiAgcmV0dXJuIGNyZWF0ZVN2Z0ljb25zUGx1Z2luKHtcclxuICAgIC8vIFx1NjMwN1x1NUI5QVx1OTcwMFx1ODk4MVx1N0YxM1x1NUI1OFx1NzY4NFx1NTZGRVx1NjgwN1x1NjU4N1x1NEVGNlx1NTkzOVxyXG4gICAgaWNvbkRpcnM6IFtwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ3NyYy9hc3NldHMvaWNvbnMnKV0sXHJcbiAgICAvLyBcdTYzMDdcdTVCOUEgc3ltYm9sSWQgXHU2ODNDXHU1RjBGXHJcbiAgICBzeW1ib2xJZDogJ2ljb24tW2Rpcl0tW25hbWVdJyxcclxuICAgIHN2Z29PcHRpb25zOiBpc0J1aWxkLFxyXG4gIH0pXHJcbn1cclxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJDOlxcXFxVc2Vyc1xcXFwyMjIxNFxcXFxEZXNrdG9wXFxcXFx1NjY3QVx1ODBGRFx1NUU3M1x1NTNGMFxcXFxJbmR1c3RyaWFsLWltYWdlLW1hbmFnZW1lbnQtc3lzdGVtLS0td2ViXFxcXGNvbmZpZ1xcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJDOlxcXFxVc2Vyc1xcXFwyMjIxNFxcXFxEZXNrdG9wXFxcXFx1NjY3QVx1ODBGRFx1NUU3M1x1NTNGMFxcXFxJbmR1c3RyaWFsLWltYWdlLW1hbmFnZW1lbnQtc3lzdGVtLS0td2ViXFxcXGNvbmZpZ1xcXFxwbHVnaW5zXFxcXG1vY2sudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0M6L1VzZXJzLzIyMjE0L0Rlc2t0b3AvJUU2JTk5JUJBJUU4JTgzJUJEJUU1JUI5JUIzJUU1JThGJUIwL0luZHVzdHJpYWwtaW1hZ2UtbWFuYWdlbWVudC1zeXN0ZW0tLS13ZWIvY29uZmlnL3BsdWdpbnMvbW9jay50c1wiO2ltcG9ydCB7IHZpdGVNb2NrU2VydmUgfSBmcm9tICd2aXRlLXBsdWdpbi1tb2NrJ1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlTW9jayhlbnYsIGlzQnVpbGQpIHtcclxuICBjb25zdCB7IFZJVEVfQlVJTERfTU9DSyB9ID0gZW52XHJcbiAgcmV0dXJuIHZpdGVNb2NrU2VydmUoe1xyXG4gICAgbW9ja1BhdGg6ICdzcmMvbW9jaycsIC8vIFx1NzZFRVx1NUY1NVx1NEY0RFx1N0Y2RVxyXG4gICAgbG9nZ2VyOiAhaXNCdWlsZCwgLy8gIFx1NjYyRlx1NTQyNlx1NTcyOFx1NjNBN1x1NTIzNlx1NTNGMFx1NjYzRVx1NzkzQVx1OEJGN1x1NkM0Mlx1NjVFNVx1NUZEN1xyXG4gICAgc3VwcG9ydFRzOiB0cnVlLCAvLyBcdTY2MkZcdTU0MjZcdThCRkJcdTUzRDYgdHMgXHU2NTg3XHU0RUY2XHU2QTIxXHU1NzU3XHJcbiAgICBsb2NhbEVuYWJsZWQ6IHRydWUsIC8vIFx1OEJCRVx1N0Y2RVx1NjYyRlx1NTQyNlx1NTQyRlx1NzUyOFx1NjcyQ1x1NTczMG1vY2tcdTY1ODdcdTRFRjZcclxuICAgIHByb2RFbmFibGVkOiBpc0J1aWxkICYmIFZJVEVfQlVJTERfTU9DSyA9PT0gJ3RydWUnLCAvLyBcdThCQkVcdTdGNkVcdTYyNTNcdTUzMDVcdTY2MkZcdTU0MjZcdTU0MkZcdTc1Mjhtb2NrXHU1MjlGXHU4MEZEXHJcbiAgICAvLyBcdThGRDlcdTY4MzdcdTUzRUZcdTRFRTVcdTYzQTdcdTUyMzZcdTUxNzNcdTk1RURtb2NrXHU3Njg0XHU2NUY2XHU1MDE5XHU0RTBEXHU4QkE5bW9ja1x1NjI1M1x1NTMwNVx1NTIzMFx1NjcwMFx1N0VDOFx1NEVFM1x1NzgwMVx1NTE4NVxyXG4gICAgaW5qZWN0Q29kZTogYFxyXG4gICAgICAgICAgaW1wb3J0IHsgc2V0dXBQcm9kTW9ja1NlcnZlciB9IGZyb20gJy4uL3NyYy9tb2NrL2luZGV4JztcclxuICAgICAgICAgIHNldHVwUHJvZE1vY2tTZXJ2ZXIoKTtcclxuICAgICAgICBgLFxyXG4gIH0pXHJcbn1cclxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUEwYSxTQUFTLEtBQUsscUJBQXFCO0FBQzdjLFNBQVMsY0FBYyxlQUFlOzs7QUNBdEMsT0FBTyxTQUFTO0FBQ2hCLE9BQU8sWUFBWTs7O0FDRmtjLE9BQU8sV0FBVztBQUN2ZSxPQUFPLGdCQUFnQjtBQUdSLFNBQVIsVUFBbUM7QUFDeEMsU0FBTztBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sT0FBTztBQUFBLElBQ1AsTUFBTSxhQUFhO0FBQ2pCLFlBQU0sRUFBRSxNQUFNLE9BQU8sTUFBTSxTQUFTLFVBQVUsSUFBSTtBQUVsRCxjQUFRO0FBQUEsUUFDTjtBQUFBLFVBQ0UsR0FBRyxLQUFLLE1BQU0sR0FBRyxRQUFRLGdDQUFnQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQUEsRUFBSyxLQUFLLGdDQUFPLENBQUMsR0FBRyxVQUFVLHNCQUFzQixDQUFDO0FBQUEsRUFBSyxLQUFLLGdDQUFPLENBQUMsR0FBRyxVQUFVLHFDQUFxQyxDQUFDO0FBQUEsRUFBSyxLQUFLLHNJQUF3QixDQUFDO0FBQUEsVUFDNU47QUFBQSxZQUNFLFNBQVM7QUFBQSxZQUNULFFBQVE7QUFBQSxZQUNSLGFBQWE7QUFBQSxZQUNiLGVBQWU7QUFBQSxVQUNqQjtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRjs7O0FDeEJxZCxPQUFPLGlCQUFpQjtBQUU5ZCxTQUFSLGVBQWdDLEtBQUs7QUFDMUMsUUFBTSxFQUFFLG1CQUFtQixJQUFJO0FBQy9CLFNBQU8sdUJBQXVCLFVBQVUsWUFBWTtBQUN0RDs7O0FDTDJkLE9BQU8sZ0JBQWdCO0FBRW5lLFNBQVIsbUJBQW9DO0FBQ3pDLFNBQU8sV0FBVztBQUFBO0FBQUEsSUFFaEIsU0FBUyxDQUFDLE9BQU8sY0FBYztBQUFBO0FBQUEsTUFFN0IsS0FBSyxDQUFDLGtCQUFrQixvQkFBb0IsT0FBTztBQUFBLElBQ3JELENBQUM7QUFBQSxJQUNELEtBQUs7QUFBQSxFQUNQLENBQUM7QUFDSDs7O0FDWHlkLE9BQU8sZ0JBQWdCO0FBRWplLFNBQVIsbUJBQW9DO0FBQ3pDLFNBQU8sV0FBVztBQUFBO0FBQUEsSUFFaEIsTUFBTSxDQUFDLGdCQUFnQjtBQUFBLElBQ3ZCLFlBQVksQ0FBQyxPQUFPLEtBQUs7QUFBQTtBQUFBLElBRXpCLEtBQUs7QUFBQSxFQUNQLENBQUM7QUFDSDs7O0FDVnFkLE9BQU8sVUFBVTtBQUN0ZSxPQUFPQSxjQUFhO0FBQ3BCLFNBQVMsNEJBQTRCO0FBRXRCLFNBQVIsY0FBK0IsU0FBUztBQUM3QyxTQUFPLHFCQUFxQjtBQUFBO0FBQUEsSUFFMUIsVUFBVSxDQUFDLEtBQUssUUFBUUMsU0FBUSxJQUFJLEdBQUcsa0JBQWtCLENBQUM7QUFBQTtBQUFBLElBRTFELFVBQVU7QUFBQSxJQUNWLGFBQWE7QUFBQSxFQUNmLENBQUM7QUFDSDs7O0FDWjZjLFNBQVMscUJBQXFCO0FBRTVkLFNBQVIsV0FBNEIsS0FBSyxTQUFTO0FBQy9DLFFBQU0sRUFBRSxnQkFBZ0IsSUFBSTtBQUM1QixTQUFPLGNBQWM7QUFBQSxJQUNuQixVQUFVO0FBQUE7QUFBQSxJQUNWLFFBQVEsQ0FBQztBQUFBO0FBQUEsSUFDVCxXQUFXO0FBQUE7QUFBQSxJQUNYLGNBQWM7QUFBQTtBQUFBLElBQ2QsYUFBYSxXQUFXLG9CQUFvQjtBQUFBO0FBQUE7QUFBQSxJQUU1QyxZQUFZO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJZCxDQUFDO0FBQ0g7OztBTkxlLFNBQVIsa0JBQW1DLFNBQVMsVUFBVSxPQUFPO0FBQ2xFLFFBQU0sY0FBaUQsQ0FBQyxRQUFRLEdBQUcsSUFBSSxHQUFHLE9BQU8sQ0FBQztBQUNsRixjQUFZLEtBQUssZUFBZSxPQUFPLENBQUM7QUFDeEMsY0FBWSxLQUFLLGlCQUFpQixDQUFDO0FBQ25DLGNBQVksS0FBSyxpQkFBaUIsQ0FBQztBQUNuQyxjQUFZLEtBQUssY0FBYyxPQUFPLENBQUM7QUFDdkMsY0FBWSxLQUFLLFdBQVcsU0FBUyxPQUFPLENBQUM7QUFDN0MsU0FBTztBQUNUOzs7QURuQjJQLElBQU0sMkNBQTJDO0FBSTVTLElBQU8sc0JBQVEsYUFBYSxDQUFDLEVBQUUsU0FBUyxLQUFLLE1BQU07QUFDakQsUUFBTSxNQUFNLFFBQVEsTUFBTSxRQUFRLElBQUksQ0FBQztBQUV2QyxTQUFPO0FBQUE7QUFBQSxJQUVMLE1BQU0sSUFBSTtBQUFBO0FBQUEsSUFFVixTQUFTO0FBQUEsTUFDUCxPQUFPO0FBQUEsUUFDTCxLQUFLLGNBQWMsSUFBSSxJQUFJLE1BQU0sd0NBQWUsQ0FBQztBQUFBLFFBQ2pELEtBQUssY0FBYyxJQUFJLElBQUksU0FBUyx3Q0FBZSxDQUFDO0FBQUEsTUFDdEQ7QUFBQSxJQUNGO0FBQUE7QUFBQSxJQUVBLEtBQUs7QUFBQSxNQUNILHFCQUFxQjtBQUFBLFFBQ25CLE1BQU07QUFBQSxVQUNKLGdCQUFnQjtBQUFBLFVBQ2hCLEtBQUs7QUFBQSxRQUNQO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQTtBQUFBLElBRUEsY0FBYztBQUFBLE1BQ1osU0FBUyxDQUFDLG9CQUFvQjtBQUFBLElBQ2hDO0FBQUEsSUFDQSxRQUFRO0FBQUE7QUFBQSxNQUVOLE1BQU07QUFBQTtBQUFBLE1BRU4sT0FBTztBQUFBLFFBQ0wsQ0FBQyxJQUFJLGVBQWUsR0FBRztBQUFBLFVBQ3JCLFFBQVEsSUFBSTtBQUFBO0FBQUEsVUFDWixjQUFjO0FBQUE7QUFBQSxVQUNkLFFBQVE7QUFBQTtBQUFBLFVBQ1IsU0FBUyxDQUFDQyxVQUFTQSxNQUFLLFFBQVEsSUFBSSxPQUFPLElBQUksSUFBSSxlQUFlLEVBQUUsR0FBRyxFQUFFO0FBQUEsUUFDM0U7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLElBQ0EsU0FBUyxrQkFBa0IsS0FBSyxZQUFZLE9BQU87QUFBQTtBQUFBLElBRW5ELE9BQU87QUFBQSxNQUNMLHVCQUF1QjtBQUFBO0FBQUEsTUFDdkIsUUFBUTtBQUFBO0FBQUEsTUFDUixRQUFRO0FBQUE7QUFBQSxNQUNSLGVBQWU7QUFBQSxRQUNiLFVBQVU7QUFBQSxVQUNSLGVBQWU7QUFBQTtBQUFBLFVBQ2YsY0FBYyxZQUFZO0FBQUE7QUFBQSxVQUMxQixlQUFlO0FBQUE7QUFBQSxRQUNqQjtBQUFBLFFBQ0EsUUFBUTtBQUFBLFVBQ04sVUFBVTtBQUFBO0FBQUEsUUFDWjtBQUFBLE1BQ0Y7QUFBQTtBQUFBLE1BRUEsZUFBZTtBQUFBLFFBQ2IsUUFBUTtBQUFBLFVBQ04sZ0JBQWdCO0FBQUEsVUFDaEIsZ0JBQWdCO0FBQUEsVUFDaEIsZ0JBQWdCO0FBQUEsUUFDbEI7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBO0FBQUEsSUFFQSxXQUFXLENBQUMsUUFBUSxNQUFNO0FBQUEsRUFDNUI7QUFDRixDQUFDOyIsCiAgIm5hbWVzIjogWyJwcm9jZXNzIiwgInByb2Nlc3MiLCAicGF0aCJdCn0K