vite.config.ts.timestamp-1726737794289-d2fd46f7ea0ce.mjs 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. // vite.config.ts
  2. import fs from "node:fs";
  3. import path2 from "node:path";
  4. import process2 from "node:process";
  5. import { defineConfig, loadEnv } from "file:///E:/WorkSpace/Web/insomnia-cognition-h5/node_modules/.pnpm/vite@5.4.2_@types+node@22.5.2_less@4.2.0_sass@1.77.8_terser@5.31.6/node_modules/vite/dist/node/index.js";
  6. // vite/plugins.ts
  7. import path from "node:path";
  8. import process from "node:process";
  9. import VueRouter from "file:///E:/WorkSpace/Web/insomnia-cognition-h5/node_modules/.pnpm/unplugin-vue-router@0.10.7_rollup@4.21.2_vue-router@4.4.3_vue@3.4.38_typescript@5.5.4___vue@3.4.38_typescript@5.5.4_/node_modules/unplugin-vue-router/dist/vite.js";
  10. import vue from "file:///E:/WorkSpace/Web/insomnia-cognition-h5/node_modules/.pnpm/@vitejs+plugin-vue@5.1.3_vite@5.4.2_@types+node@22.5.2_less@4.2.0_sass@1.77.8_terser@5.31.6___4repjllq6k2f2ar6knafw5fra4/node_modules/@vitejs/plugin-vue/dist/index.mjs";
  11. import vueJsx from "file:///E:/WorkSpace/Web/insomnia-cognition-h5/node_modules/.pnpm/@vitejs+plugin-vue-jsx@4.0.1_vite@5.4.2_@types+node@22.5.2_less@4.2.0_sass@1.77.8_terser@5.31_dlwz5wc7ah7vjzeedawr5fhwfq/node_modules/@vitejs/plugin-vue-jsx/dist/index.mjs";
  12. import vueLegacy from "file:///E:/WorkSpace/Web/insomnia-cognition-h5/node_modules/.pnpm/@vitejs+plugin-legacy@5.4.2_terser@5.31.6_vite@5.4.2_@types+node@22.5.2_less@4.2.0_sass@1.77.8_terser@5.31.6_/node_modules/@vitejs/plugin-legacy/dist/index.mjs";
  13. import VueDevTools from "file:///E:/WorkSpace/Web/insomnia-cognition-h5/node_modules/.pnpm/vite-plugin-vue-devtools@7.3.9_rollup@4.21.2_vite@5.4.2_@types+node@22.5.2_less@4.2.0_sass@1._qn2j5wbdvchbxqovwadctneqtu/node_modules/vite-plugin-vue-devtools/dist/vite.mjs";
  14. import autoImport from "file:///E:/WorkSpace/Web/insomnia-cognition-h5/node_modules/.pnpm/unplugin-auto-import@0.18.2_@vueuse+core@11.0.3_vue@3.4.38_typescript@5.5.4___rollup@4.21.2/node_modules/unplugin-auto-import/dist/vite.js";
  15. import { VueRouterAutoImports } from "file:///E:/WorkSpace/Web/insomnia-cognition-h5/node_modules/.pnpm/unplugin-vue-router@0.10.7_rollup@4.21.2_vue-router@4.4.3_vue@3.4.38_typescript@5.5.4___vue@3.4.38_typescript@5.5.4_/node_modules/unplugin-vue-router/dist/index.js";
  16. import components from "file:///E:/WorkSpace/Web/insomnia-cognition-h5/node_modules/.pnpm/unplugin-vue-components@0.27.4_@babel+parser@7.25.6_rollup@4.21.2_vue@3.4.38_typescript@5.5.4_/node_modules/unplugin-vue-components/dist/vite.js";
  17. import Unocss from "file:///E:/WorkSpace/Web/insomnia-cognition-h5/node_modules/.pnpm/unocss@0.62.3_postcss@8.4.42_rollup@4.21.2_vite@5.4.2_@types+node@22.5.2_less@4.2.0_sass@1.77.8_terser@5.31.6_/node_modules/unocss/dist/vite.mjs";
  18. import { createSvgIconsPlugin } from "file:///E:/WorkSpace/Web/insomnia-cognition-h5/node_modules/.pnpm/vite-plugin-svg-icons@2.0.1_vite@5.4.2_@types+node@22.5.2_less@4.2.0_sass@1.77.8_terser@5.31.6_/node_modules/vite-plugin-svg-icons/dist/index.mjs";
  19. import { vitePluginFakeServer } from "file:///E:/WorkSpace/Web/insomnia-cognition-h5/node_modules/.pnpm/vite-plugin-fake-server@2.1.1/node_modules/vite-plugin-fake-server/dist/index.mjs";
  20. import { compression } from "file:///E:/WorkSpace/Web/insomnia-cognition-h5/node_modules/.pnpm/vite-plugin-compression2@1.2.0_rollup@4.21.2/node_modules/vite-plugin-compression2/dist/index.mjs";
  21. import Archiver from "file:///E:/WorkSpace/Web/insomnia-cognition-h5/node_modules/.pnpm/vite-plugin-archiver@0.1.1/node_modules/vite-plugin-archiver/dist/index.js";
  22. import TurboConsole from "file:///E:/WorkSpace/Web/insomnia-cognition-h5/node_modules/.pnpm/unplugin-turbo-console@1.10.1_@babel+parser@7.25.6_esbuild@0.23.1_rollup@4.21.2_vite@5.4.2_@t_dydgrmrmjp3ucr7a367fsm5iiq/node_modules/unplugin-turbo-console/dist/vite.mjs";
  23. import banner from "file:///E:/WorkSpace/Web/insomnia-cognition-h5/node_modules/.pnpm/vite-plugin-banner@0.7.1/node_modules/vite-plugin-banner/dist/index.mjs";
  24. import boxen from "file:///E:/WorkSpace/Web/insomnia-cognition-h5/node_modules/.pnpm/boxen@8.0.1/node_modules/boxen/index.js";
  25. import picocolors from "file:///E:/WorkSpace/Web/insomnia-cognition-h5/node_modules/.pnpm/picocolors@1.0.1/node_modules/picocolors/picocolors.js";
  26. function createVitePlugins(viteEnv, isBuild = false) {
  27. const vitePlugins = [
  28. VueRouter({
  29. routesFolder: "./src/views",
  30. dts: "./src/types/typed-router.d.ts",
  31. exclude: ["**/components", "**/_*/**", "**/_*"]
  32. }),
  33. vue(),
  34. vueJsx(),
  35. vueLegacy({
  36. renderLegacyChunks: false,
  37. modernPolyfills: [
  38. "es.array.at"
  39. ]
  40. }),
  41. // https://github.com/vuejs/devtools-next
  42. viteEnv.VITE_OPEN_DEVTOOLS === "true" && VueDevTools(),
  43. // https://github.com/unplugin/unplugin-auto-import
  44. autoImport({
  45. imports: [
  46. "vue",
  47. "pinia",
  48. VueRouterAutoImports,
  49. {
  50. "vue-router/auto": ["useLink"]
  51. }
  52. ],
  53. dts: "./src/types/auto-imports.d.ts",
  54. dirs: [
  55. "./src/utils/composables/**"
  56. ]
  57. }),
  58. // https://github.com/unplugin/unplugin-vue-components
  59. components({
  60. dirs: [
  61. "src/components/*",
  62. "src/ui-kit"
  63. ],
  64. deep: false,
  65. include: [/\.vue$/, /\.vue\?vue/, /\.tsx$/],
  66. dts: "./src/types/components.d.ts"
  67. }),
  68. Unocss(),
  69. // https://github.com/vbenjs/vite-plugin-svg-icons
  70. createSvgIconsPlugin({
  71. iconDirs: [path.resolve(process.cwd(), "src/assets/icons/")],
  72. symbolId: "icon-[dir]-[name]",
  73. svgoOptions: isBuild
  74. }),
  75. // https://github.com/condorheroblog/vite-plugin-fake-server
  76. vitePluginFakeServer({
  77. logger: !isBuild,
  78. include: "src/mock",
  79. infixName: false,
  80. enableProd: isBuild && viteEnv.VITE_BUILD_MOCK === "true"
  81. }),
  82. // https://github.com/nonzzz/vite-plugin-compression
  83. viteEnv.VITE_BUILD_COMPRESS?.split(",").includes("gzip") && compression(),
  84. viteEnv.VITE_BUILD_COMPRESS?.split(",").includes("brotli") && compression({
  85. exclude: [/\.(br)$/, /\.(gz)$/],
  86. algorithm: "brotliCompress"
  87. }),
  88. viteEnv.VITE_BUILD_ARCHIVE && Archiver({
  89. archiveType: viteEnv.VITE_BUILD_ARCHIVE
  90. }),
  91. // https://github.com/unplugin/unplugin-turbo-console
  92. TurboConsole(),
  93. // https://github.com/chengpeiquan/vite-plugin-banner
  94. banner(`
  95. /**
  96. * \u7531 Fantastic-mobile \u63D0\u4F9B\u6280\u672F\u652F\u6301
  97. * Powered by Fantastic-mobile
  98. * https://fantastic-mobile.hurui.me/
  99. */
  100. `),
  101. {
  102. name: "vite-plugin-debug-plugin",
  103. transform: (code, id) => {
  104. if (/src\/main.ts$/.test(id)) {
  105. if (viteEnv.VITE_APP_DEBUG_TOOL === "eruda") {
  106. code = code.concat(`
  107. import eruda from 'eruda'
  108. eruda.init()
  109. `);
  110. } else if (viteEnv.VITE_APP_DEBUG_TOOL === "vconsole") {
  111. code = code.concat(`
  112. import VConsole from 'vconsole'
  113. new VConsole()
  114. `);
  115. }
  116. return {
  117. code,
  118. map: null
  119. };
  120. }
  121. }
  122. },
  123. {
  124. name: "appInfo",
  125. apply: "serve",
  126. async buildStart() {
  127. const { bold, green, cyan, bgGreen, underline } = picocolors;
  128. console.log(
  129. boxen(
  130. `${bold(green(`\u7531 ${bgGreen("Fantastic-mobile")} \u9A71\u52A8`))}
  131. ${underline("https://fantastic-mobile.hurui.me")}
  132. \u5F53\u524D\u4F7F\u7528\uFF1A${cyan("\u57FA\u7840\u7248")}`,
  133. {
  134. padding: 1,
  135. margin: 1,
  136. borderStyle: "double",
  137. textAlignment: "center"
  138. }
  139. )
  140. );
  141. }
  142. }
  143. ];
  144. return vitePlugins;
  145. }
  146. // vite.config.ts
  147. var __vite_injected_original_dirname = "E:\\WorkSpace\\Web\\insomnia-cognition-h5";
  148. var vite_config_default = ({ mode, command }) => {
  149. const env = loadEnv(mode, process2.cwd());
  150. const scssResources = [];
  151. fs.readdirSync("src/assets/styles/resources").forEach((dirname) => {
  152. if (fs.statSync(`src/assets/styles/resources/${dirname}`).isFile()) {
  153. scssResources.push(`@use "src/assets/styles/resources/${dirname}" as *;`);
  154. }
  155. });
  156. return defineConfig({
  157. base: "./",
  158. // 开发服务器选项 https://cn.vitejs.dev/config/server-options
  159. server: {
  160. open: true,
  161. port: 9e3,
  162. proxy: {
  163. "/proxy": {
  164. target: env.VITE_APP_API_BASE_URL,
  165. changeOrigin: command === "serve" && env.VITE_OPEN_PROXY === "true",
  166. rewrite: (path3) => path3.replace(/\/proxy/, "")
  167. }
  168. }
  169. },
  170. // 构建选项 https://cn.vitejs.dev/config/build-options
  171. build: {
  172. outDir: mode === "production" ? "dist" : `dist-${mode}`,
  173. sourcemap: env.VITE_BUILD_SOURCEMAP === "true"
  174. },
  175. plugins: createVitePlugins(env, command === "build"),
  176. resolve: {
  177. alias: {
  178. "@": path2.resolve(__vite_injected_original_dirname, "src"),
  179. "#": path2.resolve(__vite_injected_original_dirname, "src/types")
  180. }
  181. },
  182. css: {
  183. preprocessorOptions: {
  184. scss: {
  185. additionalData: scssResources.join("")
  186. }
  187. }
  188. }
  189. });
  190. };
  191. export {
  192. vite_config_default as default
  193. };
  194. //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiLCAidml0ZS9wbHVnaW5zLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRTpcXFxcV29ya1NwYWNlXFxcXFdlYlxcXFxpbnNvbW5pYS1jb2duaXRpb24taDVcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkU6XFxcXFdvcmtTcGFjZVxcXFxXZWJcXFxcaW5zb21uaWEtY29nbml0aW9uLWg1XFxcXHZpdGUuY29uZmlnLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9FOi9Xb3JrU3BhY2UvV2ViL2luc29tbmlhLWNvZ25pdGlvbi1oNS92aXRlLmNvbmZpZy50c1wiO2ltcG9ydCBmcyBmcm9tICdub2RlOmZzJ1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJ1xuaW1wb3J0IHsgZGVmaW5lQ29uZmlnLCBsb2FkRW52IH0gZnJvbSAndml0ZSdcbmltcG9ydCBjcmVhdGVWaXRlUGx1Z2lucyBmcm9tICcuL3ZpdGUvcGx1Z2lucydcblxuLy8gaHR0cHM6Ly92aXRlanMuZGV2L2NvbmZpZy9cbmV4cG9ydCBkZWZhdWx0ICh7IG1vZGUsIGNvbW1hbmQgfSkgPT4ge1xuICBjb25zdCBlbnYgPSBsb2FkRW52KG1vZGUsIHByb2Nlc3MuY3dkKCkpXG4gIC8vIFx1NTE2OFx1NUM0MCBzY3NzIFx1OEQ0NFx1NkU5MFxuICBjb25zdCBzY3NzUmVzb3VyY2VzID0gW11cbiAgZnMucmVhZGRpclN5bmMoJ3NyYy9hc3NldHMvc3R5bGVzL3Jlc291cmNlcycpLmZvckVhY2goKGRpcm5hbWUpID0+IHtcbiAgICBpZiAoZnMuc3RhdFN5bmMoYHNyYy9hc3NldHMvc3R5bGVzL3Jlc291cmNlcy8ke2Rpcm5hbWV9YCkuaXNGaWxlKCkpIHtcbiAgICAgIHNjc3NSZXNvdXJjZXMucHVzaChgQHVzZSBcInNyYy9hc3NldHMvc3R5bGVzL3Jlc291cmNlcy8ke2Rpcm5hbWV9XCIgYXMgKjtgKVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyh7XG4gICAgYmFzZTogJy4vJyxcbiAgICAvLyBcdTVGMDBcdTUzRDFcdTY3MERcdTUyQTFcdTU2NjhcdTkwMDlcdTk4NzkgaHR0cHM6Ly9jbi52aXRlanMuZGV2L2NvbmZpZy9zZXJ2ZXItb3B0aW9uc1xuICAgIHNlcnZlcjoge1xuICAgICAgb3BlbjogdHJ1ZSxcbiAgICAgIHBvcnQ6IDkwMDAsXG4gICAgICBwcm94eToge1xuICAgICAgICAnL3Byb3h5Jzoge1xuICAgICAgICAgIHRhcmdldDogZW52LlZJVEVfQVBQX0FQSV9CQVNFX1VSTCxcbiAgICAgICAgICBjaGFuZ2VPcmlnaW46IGNvbW1hbmQgPT09ICdzZXJ2ZScgJiYgZW52LlZJVEVfT1BFTl9QUk9YWSA9PT0gJ3RydWUnLFxuICAgICAgICAgIHJld3JpdGU6IHBhdGggPT4gcGF0aC5yZXBsYWNlKC9cXC9wcm94eS8sICcnKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICAvLyBcdTY3ODRcdTVFRkFcdTkwMDlcdTk4NzkgaHR0cHM6Ly9jbi52aXRlanMuZGV2L2NvbmZpZy9idWlsZC1vcHRpb25zXG4gICAgYnVpbGQ6IHtcbiAgICAgIG91dERpcjogbW9kZSA9PT0gJ3Byb2R1Y3Rpb24nID8gJ2Rpc3QnIDogYGRpc3QtJHttb2RlfWAsXG4gICAgICBzb3VyY2VtYXA6IGVudi5WSVRFX0JVSUxEX1NPVVJDRU1BUCA9PT0gJ3RydWUnLFxuICAgIH0sXG4gICAgcGx1Z2luczogY3JlYXRlVml0ZVBsdWdpbnMoZW52LCBjb21tYW5kID09PSAnYnVpbGQnKSxcbiAgICByZXNvbHZlOiB7XG4gICAgICBhbGlhczoge1xuICAgICAgICAnQCc6IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICdzcmMnKSxcbiAgICAgICAgJyMnOiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnc3JjL3R5cGVzJyksXG4gICAgICB9LFxuICAgIH0sXG4gICAgY3NzOiB7XG4gICAgICBwcmVwcm9jZXNzb3JPcHRpb25zOiB7XG4gICAgICAgIHNjc3M6IHtcbiAgICAgICAgICBhZGRpdGlvbmFsRGF0YTogc2Nzc1Jlc291cmNlcy5qb2luKCcnKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSlcbn1cbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRTpcXFxcV29ya1NwYWNlXFxcXFdlYlxcXFxpbnNvbW5pYS1jb2duaXRpb24taDVcXFxcdml0ZVwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRTpcXFxcV29ya1NwYWNlXFxcXFdlYlxcXFxpbnNvbW5pYS1jb2duaXRpb24taDVcXFxcdml0ZVxcXFxwbHVnaW5zLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9FOi9Xb3JrU3BhY2UvV2ViL2luc29tbmlhLWNvZ25pdGlvbi1oNS92aXRlL3BsdWdpbnMudHNcIjtpbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnXG5pbXBvcnQgdHlwZSB7IFBsdWdpbk9wdGlvbiB9IGZyb20gJ3ZpdGUnXG5pbXBvcnQgVnVlUm91dGVyIGZyb20gJ3VucGx1Z2luLXZ1ZS1yb3V0ZXIvdml0ZSdcbmltcG9ydCB2dWUgZnJvbSAnQHZpdGVqcy9wbHVnaW4tdnVlJ1xuaW1wb3J0IHZ1ZUpzeCBmcm9tICdAdml0ZWpzL3BsdWdpbi12dWUtanN4J1xuaW1wb3J0IHZ1ZUxlZ2FjeSBmcm9tICdAdml0ZWpzL3BsdWdpbi1sZWdhY3knXG5pbXBvcnQgVnVlRGV2VG9vbHMgZnJvbSAndml0ZS1wbHVnaW4tdnVlLWRldnRvb2xzJ1xuaW1wb3J0IGF1dG9JbXBvcnQgZnJvbSAndW5wbHVnaW4tYXV0by1pbXBvcnQvdml0ZSdcbmltcG9ydCB7IFZ1ZVJvdXRlckF1dG9JbXBvcnRzIH0gZnJvbSAndW5wbHVnaW4tdnVlLXJvdXRlcidcbmltcG9ydCBjb21wb25lbnRzIGZyb20gJ3VucGx1Z2luLXZ1ZS1jb21wb25lbnRzL3ZpdGUnXG5pbXBvcnQgVW5vY3NzIGZyb20gJ3Vub2Nzcy92aXRlJ1xuaW1wb3J0IHsgY3JlYXRlU3ZnSWNvbnNQbHVnaW4gfSBmcm9tICd2aXRlLXBsdWdpbi1zdmctaWNvbnMnXG5pbXBvcnQgeyB2aXRlUGx1Z2luRmFrZVNlcnZlciB9IGZyb20gJ3ZpdGUtcGx1Z2luLWZha2Utc2VydmVyJ1xuaW1wb3J0IHsgY29tcHJlc3Npb24gfSBmcm9tICd2aXRlLXBsdWdpbi1jb21wcmVzc2lvbjInXG5pbXBvcnQgQXJjaGl2ZXIgZnJvbSAndml0ZS1wbHVnaW4tYXJjaGl2ZXInXG5pbXBvcnQgVHVyYm9Db25zb2xlIGZyb20gJ3VucGx1Z2luLXR1cmJvLWNvbnNvbGUvdml0ZSdcbmltcG9ydCBiYW5uZXIgZnJvbSAndml0ZS1wbHVnaW4tYmFubmVyJ1xuaW1wb3J0IGJveGVuIGZyb20gJ2JveGVuJ1xuaW1wb3J0IHBpY29jb2xvcnMgZnJvbSAncGljb2NvbG9ycydcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlVml0ZVBsdWdpbnModml0ZUVudiwgaXNCdWlsZCA9IGZhbHNlKSB7XG4gIGNvbnN0IHZpdGVQbHVnaW5zOiAoUGx1Z2luT3B0aW9uIHwgUGx1Z2luT3B0aW9uW10pW10gPSBbXG4gICAgVnVlUm91dGVyKHtcbiAgICAgIHJvdXRlc0ZvbGRlcjogJy4vc3JjL3ZpZXdzJyxcbiAgICAgIGR0czogJy4vc3JjL3R5cGVzL3R5cGVkLXJvdXRlci5kLnRzJyxcbiAgICAgIGV4Y2x1ZGU6IFsnKiovY29tcG9uZW50cycsICcqKi9fKi8qKicsICcqKi9fKiddLFxuICAgIH0pLFxuICAgIHZ1ZSgpLFxuICAgIHZ1ZUpzeCgpLFxuICAgIHZ1ZUxlZ2FjeSh7XG4gICAgICByZW5kZXJMZWdhY3lDaHVua3M6IGZhbHNlLFxuICAgICAgbW9kZXJuUG9seWZpbGxzOiBbXG4gICAgICAgICdlcy5hcnJheS5hdCcsXG4gICAgICBdLFxuICAgIH0pLFxuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL2RldnRvb2xzLW5leHRcbiAgICB2aXRlRW52LlZJVEVfT1BFTl9ERVZUT09MUyA9PT0gJ3RydWUnICYmIFZ1ZURldlRvb2xzKCksXG5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5wbHVnaW4vdW5wbHVnaW4tYXV0by1pbXBvcnRcbiAgICBhdXRvSW1wb3J0KHtcbiAgICAgIGltcG9ydHM6IFtcbiAgICAgICAgJ3Z1ZScsXG4gICAgICAgICdwaW5pYScsXG4gICAgICAgIFZ1ZVJvdXRlckF1dG9JbXBvcnRzLFxuICAgICAgICB7XG4gICAgICAgICAgJ3Z1ZS1yb3V0ZXIvYXV0byc6IFsndXNlTGluayddLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGR0czogJy4vc3JjL3R5cGVzL2F1dG8taW1wb3J0cy5kLnRzJyxcbiAgICAgIGRpcnM6IFtcbiAgICAgICAgJy4vc3JjL3V0aWxzL2NvbXBvc2FibGVzLyoqJyxcbiAgICAgIF0sXG4gICAgfSksXG5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5wbHVnaW4vdW5wbHVnaW4tdnVlLWNvbXBvbmVudHNcbiAgICBjb21wb25lbnRzKHtcbiAgICAgIGRpcnM6IFtcbiAgICAgICAgJ3NyYy9jb21wb25lbnRzLyonLFxuICAgICAgICAnc3JjL3VpLWtpdCcsXG4gICAgICBdLFxuICAgICAgZGVlcDogZmFsc2UsXG4gICAgICBpbmNsdWRlOiBbL1xcLnZ1ZSQvLCAvXFwudnVlXFw/dnVlLywgL1xcLnRzeCQvXSxcbiAgICAgIGR0czogJy4vc3JjL3R5cGVzL2NvbXBvbmVudHMuZC50cycsXG4gICAgfSksXG5cbiAgICBVbm9jc3MoKSxcblxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS92YmVuanMvdml0ZS1wbHVnaW4tc3ZnLWljb25zXG4gICAgY3JlYXRlU3ZnSWNvbnNQbHVnaW4oe1xuICAgICAgaWNvbkRpcnM6IFtwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ3NyYy9hc3NldHMvaWNvbnMvJyldLFxuICAgICAgc3ltYm9sSWQ6ICdpY29uLVtkaXJdLVtuYW1lXScsXG4gICAgICBzdmdvT3B0aW9uczogaXNCdWlsZCxcbiAgICB9KSxcblxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9jb25kb3JoZXJvYmxvZy92aXRlLXBsdWdpbi1mYWtlLXNlcnZlclxuICAgIHZpdGVQbHVnaW5GYWtlU2VydmVyKHtcbiAgICAgIGxvZ2dlcjogIWlzQnVpbGQsXG4gICAgICBpbmNsdWRlOiAnc3JjL21vY2snLFxuICAgICAgaW5maXhOYW1lOiBmYWxzZSxcbiAgICAgIGVuYWJsZVByb2Q6IGlzQnVpbGQgJiYgdml0ZUVudi5WSVRFX0JVSUxEX01PQ0sgPT09ICd0cnVlJyxcbiAgICB9KSxcblxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub256enovdml0ZS1wbHVnaW4tY29tcHJlc3Npb25cbiAgICB2aXRlRW52LlZJVEVfQlVJTERfQ09NUFJFU1M/LnNwbGl0KCcsJykuaW5jbHVkZXMoJ2d6aXAnKSAmJiBjb21wcmVzc2lvbigpLFxuICAgIHZpdGVFbnYuVklURV9CVUlMRF9DT01QUkVTUz8uc3BsaXQoJywnKS5pbmNsdWRlcygnYnJvdGxpJykgJiYgY29tcHJlc3Npb24oe1xuICAgICAgZXhjbHVkZTogWy9cXC4oYnIpJC8sIC9cXC4oZ3opJC9dLFxuICAgICAgYWxnb3JpdGhtOiAnYnJvdGxpQ29tcHJlc3MnLFxuICAgIH0pLFxuXG4gICAgdml0ZUVudi5WSVRFX0JVSUxEX0FSQ0hJVkUgJiYgQXJjaGl2ZXIoe1xuICAgICAgYXJjaGl2ZVR5cGU6IHZpdGVFbnYuVklURV9CVUlMRF9BUkNISVZFLFxuICAgIH0pLFxuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VucGx1Z2luL3VucGx1Z2luLXR1cmJvLWNvbnNvbGVcbiAgICBUdXJib0NvbnNvbGUoKSxcblxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9jaGVuZ3BlaXF1YW4vdml0ZS1wbHVnaW4tYmFubmVyXG4gICAgYmFubmVyKGBcbi8qKlxuICogXHU3NTMxIEZhbnRhc3RpYy1tb2JpbGUgXHU2M0QwXHU0RjlCXHU2MjgwXHU2NzJGXHU2NTJGXHU2MzAxXG4gKiBQb3dlcmVkIGJ5IEZhbnRhc3RpYy1tb2JpbGVcbiAqIGh0dHBzOi8vZmFudGFzdGljLW1vYmlsZS5odXJ1aS5tZS9cbiAqL1xuICAgIGApLFxuXG4gICAge1xuICAgICAgbmFtZTogJ3ZpdGUtcGx1Z2luLWRlYnVnLXBsdWdpbicsXG4gICAgICB0cmFuc2Zvcm06IChjb2RlLCBpZCkgPT4ge1xuICAgICAgICBpZiAoL3NyY1xcL21haW4udHMkLy50ZXN0KGlkKSkge1xuICAgICAgICAgIGlmICh2aXRlRW52LlZJVEVfQVBQX0RFQlVHX1RPT0wgPT09ICdlcnVkYScpIHtcbiAgICAgICAgICAgIGNvZGUgPSBjb2RlLmNvbmNhdChgXG4gICAgICAgICAgICAgIGltcG9ydCBlcnVkYSBmcm9tICdlcnVkYSdcbiAgICAgICAgICAgICAgZXJ1ZGEuaW5pdCgpXG4gICAgICAgICAgICBgKVxuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmICh2aXRlRW52LlZJVEVfQVBQX0RFQlVHX1RPT0wgPT09ICd2Y29uc29sZScpIHtcbiAgICAgICAgICAgIGNvZGUgPSBjb2RlLmNvbmNhdChgXG4gICAgICAgICAgICAgIGltcG9ydCBWQ29uc29sZSBmcm9tICd2Y29uc29sZSdcbiAgICAgICAgICAgICAgbmV3IFZDb25zb2xlKClcbiAgICAgICAgICAgIGApXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb2RlLFxuICAgICAgICAgICAgbWFwOiBudWxsLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuXG4gICAge1xuICAgICAgbmFtZTogJ2FwcEluZm8nLFxuICAgICAgYXBwbHk6ICdzZXJ2ZScsXG4gICAgICBhc3luYyBidWlsZFN0YXJ0KCkge1xuICAgICAgICBjb25zdCB7IGJvbGQsIGdyZWVuLCBjeWFuLCBiZ0dyZWVuLCB1bmRlcmxpbmUgfSA9IHBpY29jb2xvcnNcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgYm94ZW4oXG4gICAgICAgICAgICBgJHtib2xkKGdyZWVuKGBcdTc1MzEgJHtiZ0dyZWVuKCdGYW50YXN0aWMtbW9iaWxlJyl9IFx1OUE3MVx1NTJBOGApKX1cXG5cXG4ke3VuZGVybGluZSgnaHR0cHM6Ly9mYW50YXN0aWMtbW9iaWxlLmh1cnVpLm1lJyl9XFxuXFxuXHU1RjUzXHU1MjREXHU0RjdGXHU3NTI4XHVGRjFBJHtjeWFuKCdcdTU3RkFcdTc4NDBcdTcyNDgnKX1gLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwYWRkaW5nOiAxLFxuICAgICAgICAgICAgICBtYXJnaW46IDEsXG4gICAgICAgICAgICAgIGJvcmRlclN0eWxlOiAnZG91YmxlJyxcbiAgICAgICAgICAgICAgdGV4dEFsaWdubWVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgfSxcbiAgXVxuICByZXR1cm4gdml0ZVBsdWdpbnNcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBNFMsT0FBTyxRQUFRO0FBQzNULE9BQU9BLFdBQVU7QUFDakIsT0FBT0MsY0FBYTtBQUNwQixTQUFTLGNBQWMsZUFBZTs7O0FDSCtRLE9BQU8sVUFBVTtBQUN0VSxPQUFPLGFBQWE7QUFFcEIsT0FBTyxlQUFlO0FBQ3RCLE9BQU8sU0FBUztBQUNoQixPQUFPLFlBQVk7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O0FBQUEsSUFDRjtBQUFBO0FBQUEsSUFFQSxPQUFPO0FBQUEsTUFDTCxRQUFRLFNBQVMsZUFBZSxTQUFTLFFBQVEsSUFBSTtBQUFBLE1BQ3JELFdBQVcsSUFBSSx5QkFBeUI7QUFBQSxJQUMxQztBQUFBLElBQ0EsU0FBUyxrQkFBa0IsS0FBSyxZQUFZLE9BQU87QUFBQSxJQUNuRCxTQUFTO0FBQUEsTUFDUCxPQUFPO0FBQUEsUUFDTCxLQUFLQSxNQUFLLFFBQVEsa0NBQVcsS0FBSztBQUFBLFFBQ2xDLEtBQUtBLE1BQUssUUFBUSxrQ0FBVyxXQUFXO0FBQUEsTUFDMUM7QUFBQSxJQUNGO0FBQUEsSUFDQSxLQUFLO0FBQUEsTUFDSCxxQkFBcUI7QUFBQSxRQUNuQixNQUFNO0FBQUEsVUFDSixnQkFBZ0IsY0FBYyxLQUFLLEVBQUU7QUFBQSxRQUN2QztBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRixDQUFDO0FBQ0g7IiwKICAibmFtZXMiOiBbInBhdGgiLCAicHJvY2VzcyIsICJwcm9jZXNzIiwgInBhdGgiXQp9Cg==