vite.config.ts.timestamp-1730356995889-b75240e8081e7.mjs 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
  1. // vite.config.ts
  2. import vue from "file:///D:/JingGe/Web/SynthesisManagement/node_modules/.pnpm/@vitejs+plugin-vue@5.0.4_vite@5.2.8_@types+node@20.12.5_less@4.2.0_sass@1.74.1_terser@5.30.3__ip7zcpo73usouomfctmwjw3lba/node_modules/@vitejs/plugin-vue/dist/index.mjs";
  3. import vueJsx from "file:///D:/JingGe/Web/SynthesisManagement/node_modules/.pnpm/@vitejs+plugin-vue-jsx@3.1.0_vite@5.2.8_@types+node@20.12.5_less@4.2.0_sass@1.74.1_terser@5.3_lch465eicfrr4nf65gkat47bey/node_modules/@vitejs/plugin-vue-jsx/dist/index.mjs";
  4. import { defineConfig, loadEnv } from "file:///D:/JingGe/Web/SynthesisManagement/node_modules/.pnpm/vite@5.2.8_@types+node@20.12.5_less@4.2.0_sass@1.74.1_terser@5.30.3/node_modules/vite/dist/node/index.js";
  5. import fs from "fs";
  6. import AutoImport from "file:///D:/JingGe/Web/SynthesisManagement/node_modules/.pnpm/unplugin-auto-import@0.17.5_@vueuse+core@10.9.0_vue@3.4.21_typescript@5.4.4___rollup@4.14.0/node_modules/unplugin-auto-import/dist/vite.js";
  7. import Components from "file:///D:/JingGe/Web/SynthesisManagement/node_modules/.pnpm/unplugin-vue-components@0.26.0_@babel+parser@7.24.4_rollup@4.14.0_vue@3.4.21_typescript@5.4.4_/node_modules/unplugin-vue-components/dist/vite.js";
  8. import { ElementPlusResolver } from "file:///D:/JingGe/Web/SynthesisManagement/node_modules/.pnpm/unplugin-vue-components@0.26.0_@babel+parser@7.24.4_rollup@4.14.0_vue@3.4.21_typescript@5.4.4_/node_modules/unplugin-vue-components/dist/resolvers.js";
  9. import Icons from "file:///D:/JingGe/Web/SynthesisManagement/node_modules/.pnpm/unplugin-icons@0.18.5_@vue+compiler-sfc@3.4.21_vue-template-compiler@2.7.16/node_modules/unplugin-icons/dist/vite.js";
  10. import IconsResolver from "file:///D:/JingGe/Web/SynthesisManagement/node_modules/.pnpm/unplugin-icons@0.18.5_@vue+compiler-sfc@3.4.21_vue-template-compiler@2.7.16/node_modules/unplugin-icons/dist/resolver.js";
  11. import { createSvgIconsPlugin } from "file:///D:/JingGe/Web/SynthesisManagement/node_modules/.pnpm/vite-plugin-svg-icons@2.0.1_vite@5.2.8_@types+node@20.12.5_less@4.2.0_sass@1.74.1_terser@5.30.3_/node_modules/vite-plugin-svg-icons/dist/index.mjs";
  12. import mockDevServerPlugin from "file:///D:/JingGe/Web/SynthesisManagement/node_modules/.pnpm/vite-plugin-mock-dev-server@1.5.0_bufferutil@4.0.8_rollup@4.14.0_utf-8-validate@5.0.10_vite@5_wxuxnqeoswem3syynbjpkpt4w4/node_modules/vite-plugin-mock-dev-server/dist/index.js";
  13. import UnoCSS from "file:///D:/JingGe/Web/SynthesisManagement/node_modules/.pnpm/unocss@0.58.9_postcss@8.4.38_rollup@4.14.0_vite@5.2.8_@types+node@20.12.5_less@4.2.0_sass@1.74.1_terser@5.30.3_/node_modules/unocss/dist/vite.mjs";
  14. import { resolve } from "path";
  15. // package.json
  16. var name = "\u6676\u683C\u667A\u6C47";
  17. var version = "1.0.0";
  18. var dependencies = {
  19. "@element-plus/icons-vue": "^2.3.1",
  20. "@kjgl77/datav-vue3": "^1.7.3",
  21. "@smallwei/avue": "^3.3.3",
  22. "@types/smallwei__avue": "^3.0.5",
  23. "@vueuse/core": "^10.9.0",
  24. "@wangeditor/editor": "^5.1.23",
  25. "@wangeditor/editor-for-vue": "5.1.10",
  26. "animate.css": "^4.1.1",
  27. axios: "^1.6.7",
  28. echarts: "^5.5.0",
  29. "element-plus": "^2.6.0",
  30. "lodash-es": "^4.17.21",
  31. nanoid: "^5.0.7",
  32. net: "^1.0.2",
  33. nprogress: "^0.2.0",
  34. "path-browserify": "^1.0.1",
  35. "path-to-regexp": "^6.2.1",
  36. pinia: "^2.1.7",
  37. "pinia-plugin-persistedstate": "^3.2.1",
  38. "sockjs-client": "1.6.1",
  39. sortablejs: "^1.15.2",
  40. stompjs: "^2.3.3",
  41. vue: "^3.4.21",
  42. "vue-i18n": "9.9.1",
  43. "vue-pdf-embed": "^2.0.2",
  44. "vue-router": "^4.3.0",
  45. "vue3-pdfjs": "^0.1.6",
  46. xlsx: "^0.18.5"
  47. };
  48. var devDependencies = {
  49. "@commitlint/cli": "^18.6.1",
  50. "@commitlint/config-conventional": "^18.6.2",
  51. "@iconify-json/ep": "^1.1.14",
  52. "@types/lodash": "^4.14.202",
  53. "@types/node": "^20.11.24",
  54. "@types/nprogress": "^0.2.3",
  55. "@types/path-browserify": "^1.0.2",
  56. "@types/sockjs-client": "^1.5.4",
  57. "@types/sortablejs": "^1.15.8",
  58. "@types/stompjs": "^2.3.9",
  59. "@typescript-eslint/eslint-plugin": "^7.1.1",
  60. "@typescript-eslint/parser": "^7.1.1",
  61. "@vitejs/plugin-vue": "^5.0.4",
  62. "@vitejs/plugin-vue-jsx": "^3.1.0",
  63. autoprefixer: "^10.4.18",
  64. commitizen: "^4.3.0",
  65. "cz-git": "^1.9.0",
  66. eslint: "^8.57.0",
  67. "eslint-config-prettier": "^9.1.0",
  68. "eslint-plugin-import": "^2.29.1",
  69. "eslint-plugin-prettier": "^5.1.3",
  70. "eslint-plugin-vue": "^9.22.0",
  71. "fast-glob": "^3.3.2",
  72. less: "^4.2.0",
  73. "lint-staged": "^15.2.2",
  74. postcss: "^8.4.35",
  75. "postcss-html": "^1.6.0",
  76. "postcss-scss": "^4.0.9",
  77. prettier: "^3.2.5",
  78. sass: "^1.71.1",
  79. stylelint: "^16.2.1",
  80. "stylelint-config-html": "^1.1.0",
  81. "stylelint-config-recess-order": "^4.6.0",
  82. "stylelint-config-recommended-scss": "^14.0.0",
  83. "stylelint-config-recommended-vue": "^1.5.0",
  84. "stylelint-config-standard": "^36.0.0",
  85. terser: "^5.28.1",
  86. typescript: "^5.3.3",
  87. unocss: "^0.58.5",
  88. "unplugin-auto-import": "^0.17.5",
  89. "unplugin-icons": "^0.18.5",
  90. "unplugin-vue-components": "^0.26.0",
  91. vite: "^5.1.5",
  92. "vite-plugin-mock-dev-server": "^1.4.7",
  93. "vite-plugin-svg-icons": "^2.0.1",
  94. "vue-tsc": "^2.0.4"
  95. };
  96. var engines = {
  97. node: ">=18.0.0"
  98. };
  99. // vite.config.ts
  100. var __vite_injected_original_dirname = "D:\\JingGe\\Web\\SynthesisManagement";
  101. var __APP_INFO__ = {
  102. pkg: { name, version, engines, dependencies, devDependencies },
  103. buildTimestamp: Date.now()
  104. };
  105. var pathSrc = resolve(__vite_injected_original_dirname, "src");
  106. var vite_config_default = defineConfig(({ mode }) => {
  107. const env = loadEnv(mode, process.cwd());
  108. return {
  109. resolve: {
  110. alias: {
  111. "@": pathSrc
  112. }
  113. },
  114. css: {
  115. // CSS 预处理器
  116. preprocessorOptions: {
  117. // 定义全局 SCSS 变量
  118. scss: {
  119. javascriptEnabled: true,
  120. additionalData: `
  121. @use "@/styles/variables.scss" as *;
  122. `
  123. }
  124. }
  125. },
  126. server: {
  127. cors: true,
  128. // 允许IP访问
  129. host: "0.0.0.0",
  130. // 应用端口 (默认:3000)
  131. port: 3008,
  132. // 运行是否自动打开浏览器
  133. open: true,
  134. proxy: {
  135. /** 代理前缀为 /dev-api 的请求 */
  136. [env.VITE_APP_BASE_API]: {
  137. changeOrigin: true,
  138. // 接口地址
  139. target: env.VITE_APP_API_URL,
  140. rewrite: (path) => path.replace(new RegExp("^" + env.VITE_APP_BASE_API), "")
  141. },
  142. [env.VITE_MEDIA_PREFIX]: {
  143. changeOrigin: true,
  144. // 接口地址
  145. target: env.VITE_APP_UPLOAD_URL
  146. }
  147. }
  148. },
  149. plugins: [
  150. vue(),
  151. // jsx、tsx语法支持
  152. vueJsx(),
  153. // MOCK 服务
  154. env.VITE_MOCK_DEV_SERVER === "true" ? mockDevServerPlugin() : null,
  155. UnoCSS({
  156. hmrTopLevelAwait: false
  157. }),
  158. // 自动导入参考: https://github.com/sxzz/element-plus-best-practices/blob/main/vite.config.ts
  159. AutoImport({
  160. // 自动导入 Vue 相关函数,如:ref, reactive, toRef 等
  161. imports: ["vue", "@vueuse/core", "pinia", "vue-router", "vue-i18n"],
  162. resolvers: [
  163. // 自动导入 Element Plus 相关函数,如:ElMessage, ElMessageBox... (带样式)
  164. ElementPlusResolver(),
  165. // 自动导入图标组件
  166. IconsResolver({})
  167. ],
  168. eslintrc: {
  169. // 是否自动生成 eslint 规则,建议生成之后设置 false
  170. enabled: false,
  171. // 指定自动导入函数 eslint 规则的文件
  172. filepath: "./.eslintrc-auto-import.json",
  173. globalsPropValue: true
  174. },
  175. // 是否在 vue 模板中自动导入
  176. vueTemplate: true,
  177. // 指定自动导入函数TS类型声明文件路径 (false:关闭自动生成)
  178. dts: false
  179. // dts: "src/typings/auto-imports.d.ts",
  180. }),
  181. Components({
  182. resolvers: [
  183. // 自动导入 Element Plus 组件
  184. ElementPlusResolver(),
  185. // 自动注册图标组件
  186. IconsResolver({
  187. // element-plus图标库,其他图标库 https://icon-sets.iconify.design/
  188. enabledCollections: ["ep"]
  189. })
  190. ],
  191. // 指定自定义组件位置(默认:src/components)
  192. dirs: ["src/components"],
  193. // 指定自动导入组件TS类型声明文件路径 (false:关闭自动生成)
  194. dts: false
  195. // dts: "src/typings/components.d.ts",
  196. }),
  197. Icons({
  198. // 自动安装图标库
  199. autoInstall: true
  200. }),
  201. createSvgIconsPlugin({
  202. // 指定需要缓存的图标文件夹
  203. iconDirs: [resolve(pathSrc, "assets/icons")],
  204. // 指定symbolId格式
  205. symbolId: "icon-[dir]-[name]"
  206. }),
  207. process.env.NODE_ENV === "production" && updateVersion()
  208. ],
  209. // 预加载项目必需的组件
  210. optimizeDeps: {
  211. include: [
  212. "vue",
  213. "vue-router",
  214. "pinia",
  215. "axios",
  216. "@vueuse/core",
  217. "sortablejs",
  218. "path-to-regexp",
  219. "echarts",
  220. "@wangeditor/editor",
  221. "@wangeditor/editor-for-vue",
  222. "vue-i18n",
  223. "path-browserify",
  224. "element-plus/es/components/form/style/css",
  225. "element-plus/es/components/form-item/style/css",
  226. "element-plus/es/components/button/style/css",
  227. "element-plus/es/components/input/style/css",
  228. "element-plus/es/components/input-number/style/css",
  229. "element-plus/es/components/switch/style/css",
  230. "element-plus/es/components/upload/style/css",
  231. "element-plus/es/components/menu/style/css",
  232. "element-plus/es/components/col/style/css",
  233. "element-plus/es/components/icon/style/css",
  234. "element-plus/es/components/row/style/css",
  235. "element-plus/es/components/tag/style/css",
  236. "element-plus/es/components/dialog/style/css",
  237. "element-plus/es/components/loading/style/css",
  238. "element-plus/es/components/radio/style/css",
  239. "element-plus/es/components/radio-group/style/css",
  240. "element-plus/es/components/popover/style/css",
  241. "element-plus/es/components/scrollbar/style/css",
  242. "element-plus/es/components/tooltip/style/css",
  243. "element-plus/es/components/dropdown/style/css",
  244. "element-plus/es/components/dropdown-menu/style/css",
  245. "element-plus/es/components/dropdown-item/style/css",
  246. "element-plus/es/components/sub-menu/style/css",
  247. "element-plus/es/components/menu-item/style/css",
  248. "element-plus/es/components/divider/style/css",
  249. "element-plus/es/components/card/style/css",
  250. "element-plus/es/components/link/style/css",
  251. "element-plus/es/components/breadcrumb/style/css",
  252. "element-plus/es/components/breadcrumb-item/style/css",
  253. "element-plus/es/components/table/style/css",
  254. "element-plus/es/components/tree-select/style/css",
  255. "element-plus/es/components/table-column/style/css",
  256. "element-plus/es/components/select/style/css",
  257. "element-plus/es/components/option/style/css",
  258. "element-plus/es/components/pagination/style/css",
  259. "element-plus/es/components/tree/style/css",
  260. "element-plus/es/components/alert/style/css",
  261. "element-plus/es/components/radio-button/style/css",
  262. "element-plus/es/components/checkbox-group/style/css",
  263. "element-plus/es/components/checkbox/style/css",
  264. "element-plus/es/components/tabs/style/css",
  265. "element-plus/es/components/tab-pane/style/css",
  266. "element-plus/es/components/rate/style/css",
  267. "element-plus/es/components/date-picker/style/css",
  268. "element-plus/es/components/notification/style/css",
  269. "element-plus/es/components/image/style/css",
  270. "element-plus/es/components/statistic/style/css",
  271. "element-plus/es/components/watermark/style/css",
  272. "element-plus/es/components/config-provider/style/css",
  273. "element-plus/es/components/text/style/css",
  274. "element-plus/es/components/drawer/style/css",
  275. "element-plus/es/components/color-picker/style/css"
  276. ]
  277. },
  278. // 构建配置
  279. build: {
  280. sourcemap: true,
  281. chunkSizeWarningLimit: 2e3,
  282. // 消除打包大小超过500kb警告
  283. minify: "terser",
  284. // Vite 2.6.x 以上需要配置 minify: "terser", terserOptions 才能生效
  285. terserOptions: {
  286. compress: {
  287. keep_infinity: true,
  288. // 防止 Infinity 被压缩成 1/0,这可能会导致 Chrome 上的性能问题
  289. drop_console: true,
  290. // 生产环境去除 console
  291. drop_debugger: true
  292. // 生产环境去除 debugger
  293. },
  294. format: {
  295. comments: false
  296. // 删除注释
  297. }
  298. },
  299. rollupOptions: {
  300. output: {
  301. // manualChunks: {
  302. // "vue-i18n": ["vue-i18n"],
  303. // },
  304. // 用于从入口点创建的块的打包输出格式[name]表示文件名,[hash]表示该文件内容hash值
  305. entryFileNames: "js/[name].[hash].js",
  306. // 用于命名代码拆分时创建的共享块的输出命名
  307. chunkFileNames: "js/[name].[hash].js",
  308. // 用于输出静态资源的命名,[ext]表示文件扩展名
  309. assetFileNames: (assetInfo) => {
  310. const info = assetInfo.name.split(".");
  311. let extType = info[info.length - 1];
  312. if (/\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/i.test(assetInfo.name)) {
  313. extType = "media";
  314. } else if (/\.(png|jpe?g|gif|svg)(\?.*)?$/.test(assetInfo.name)) {
  315. extType = "img";
  316. } else if (/\.(woff2?|eot|ttf|otf)(\?.*)?$/i.test(assetInfo.name)) {
  317. extType = "fonts";
  318. }
  319. return `${extType}/[name].[hash].[ext]`;
  320. }
  321. }
  322. }
  323. },
  324. define: {
  325. __APP_INFO__: JSON.stringify(__APP_INFO__),
  326. "process.env": process.env
  327. //尝试访问 Node.js 环境变量,但这些变量在浏览器环境中是不存在的。(main is not defined)
  328. }
  329. };
  330. });
  331. function updateVersion() {
  332. return {
  333. name: "update-version",
  334. buildStart() {
  335. let version2 = "";
  336. try {
  337. const packageJson = JSON.parse(
  338. fs.readFileSync("public/version.json", "utf-8")
  339. );
  340. version2 = Number(packageJson.version);
  341. version2 = (version2 + 0.1).toFixed(1);
  342. } catch (error) {
  343. console.log(error);
  344. }
  345. const versionData = { version: version2.toString() };
  346. fs.writeFileSync(
  347. "public/version.json",
  348. JSON.stringify(versionData, null, 2)
  349. );
  350. }
  351. };
  352. }
  353. export {
  354. vite_config_default as default
  355. };
  356. //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiLCAicGFja2FnZS5qc29uIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRDpcXFxcSmluZ0dlXFxcXFdlYlxcXFxTeW50aGVzaXNNYW5hZ2VtZW50XCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFxKaW5nR2VcXFxcV2ViXFxcXFN5bnRoZXNpc01hbmFnZW1lbnRcXFxcdml0ZS5jb25maWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6L0ppbmdHZS9XZWIvU3ludGhlc2lzTWFuYWdlbWVudC92aXRlLmNvbmZpZy50c1wiO2ltcG9ydCB2dWUgZnJvbSBcIkB2aXRlanMvcGx1Z2luLXZ1ZVwiO1xyXG5pbXBvcnQgdnVlSnN4IGZyb20gXCJAdml0ZWpzL3BsdWdpbi12dWUtanN4XCI7XHJcbmltcG9ydCB7IENvbmZpZ0VudiwgZGVmaW5lQ29uZmlnLCBsb2FkRW52LCBVc2VyQ29uZmlnIH0gZnJvbSBcInZpdGVcIjtcclxuaW1wb3J0IGZzIGZyb20gXCJmc1wiO1xyXG5pbXBvcnQgQXV0b0ltcG9ydCBmcm9tIFwidW5wbHVnaW4tYXV0by1pbXBvcnQvdml0ZVwiO1xyXG5pbXBvcnQgQ29tcG9uZW50cyBmcm9tIFwidW5wbHVnaW4tdnVlLWNvbXBvbmVudHMvdml0ZVwiO1xyXG5pbXBvcnQgeyBFbGVtZW50UGx1c1Jlc29sdmVyIH0gZnJvbSBcInVucGx1Z2luLXZ1ZS1jb21wb25lbnRzL3Jlc29sdmVyc1wiO1xyXG5pbXBvcnQgSWNvbnMgZnJvbSBcInVucGx1Z2luLWljb25zL3ZpdGVcIjtcclxuaW1wb3J0IEljb25zUmVzb2x2ZXIgZnJvbSBcInVucGx1Z2luLWljb25zL3Jlc29sdmVyXCI7XHJcblxyXG5pbXBvcnQgeyBjcmVhdGVTdmdJY29uc1BsdWdpbiB9IGZyb20gXCJ2aXRlLXBsdWdpbi1zdmctaWNvbnNcIjtcclxuaW1wb3J0IG1vY2tEZXZTZXJ2ZXJQbHVnaW4gZnJvbSBcInZpdGUtcGx1Z2luLW1vY2stZGV2LXNlcnZlclwiO1xyXG5cclxuaW1wb3J0IFVub0NTUyBmcm9tIFwidW5vY3NzL3ZpdGVcIjtcclxuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gXCJwYXRoXCI7XHJcbmltcG9ydCB7XHJcbiAgZGVwZW5kZW5jaWVzLFxyXG4gIGRldkRlcGVuZGVuY2llcyxcclxuICBlbmdpbmVzLFxyXG4gIG5hbWUsXHJcbiAgdmVyc2lvbixcclxufSBmcm9tIFwiLi9wYWNrYWdlLmpzb25cIjtcclxuXHJcbi8qKiBcdTVFNzNcdTUzRjBcdTc2ODRcdTU0MERcdTc5RjBcdTMwMDFcdTcyNDhcdTY3MkNcdTMwMDFcdThGRDBcdTg4NENcdTYyNDBcdTk3MDBcdTc2ODRgbm9kZWBcdTcyNDhcdTY3MkNcdTMwMDFcdTRGOURcdThENTZcdTMwMDFcdTY3ODRcdTVFRkFcdTY1RjZcdTk1RjRcdTc2ODRcdTdDN0JcdTU3OEJcdTYzRDBcdTc5M0EgKi9cclxuY29uc3QgX19BUFBfSU5GT19fID0ge1xyXG4gIHBrZzogeyBuYW1lLCB2ZXJzaW9uLCBlbmdpbmVzLCBkZXBlbmRlbmNpZXMsIGRldkRlcGVuZGVuY2llcyB9LFxyXG4gIGJ1aWxkVGltZXN0YW1wOiBEYXRlLm5vdygpLFxyXG59O1xyXG5cclxuY29uc3QgcGF0aFNyYyA9IHJlc29sdmUoX19kaXJuYW1lLCBcInNyY1wiKTtcclxuLy8gIGh0dHBzOi8vY24udml0ZWpzLmRldi9jb25maWdcclxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKCh7IG1vZGUgfTogQ29uZmlnRW52KTogVXNlckNvbmZpZyA9PiB7XHJcbiAgY29uc3QgZW52ID0gbG9hZEVudihtb2RlLCBwcm9jZXNzLmN3ZCgpKTtcclxuICByZXR1cm4ge1xyXG4gICAgcmVzb2x2ZToge1xyXG4gICAgICBhbGlhczoge1xyXG4gICAgICAgIFwiQFwiOiBwYXRoU3JjLFxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIGNzczoge1xyXG4gICAgICAvLyBDU1MgXHU5ODg0XHU1OTA0XHU3NDA2XHU1NjY4XHJcbiAgICAgIHByZXByb2Nlc3Nvck9wdGlvbnM6IHtcclxuICAgICAgICAvLyBcdTVCOUFcdTRFNDlcdTUxNjhcdTVDNDAgU0NTUyBcdTUzRDhcdTkxQ0ZcclxuICAgICAgICBzY3NzOiB7XHJcbiAgICAgICAgICBqYXZhc2NyaXB0RW5hYmxlZDogdHJ1ZSxcclxuICAgICAgICAgIGFkZGl0aW9uYWxEYXRhOiBgXHJcbiAgICAgICAgICAgIEB1c2UgXCJAL3N0eWxlcy92YXJpYWJsZXMuc2Nzc1wiIGFzICo7XHJcbiAgICAgICAgICBgLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgc2VydmVyOiB7XHJcbiAgICAgIGNvcnM6IHRydWUsXHJcbiAgICAgIC8vIFx1NTE0MVx1OEJCOElQXHU4QkJGXHU5NUVFXHJcbiAgICAgIGhvc3Q6IFwiMC4wLjAuMFwiLFxyXG4gICAgICAvLyBcdTVFOTRcdTc1MjhcdTdBRUZcdTUzRTMgKFx1OUVEOFx1OEJBNDozMDAwKVxyXG4gICAgICBwb3J0OiAzMDA4LFxyXG4gICAgICAvLyBcdThGRDBcdTg4NENcdTY2MkZcdTU0MjZcdTgxRUFcdTUyQThcdTYyNTNcdTVGMDBcdTZENEZcdTg5QzhcdTU2NjhcclxuICAgICAgb3BlbjogdHJ1ZSxcclxuICAgICAgcHJveHk6IHtcclxuICAgICAgICAvKiogXHU0RUUzXHU3NDA2XHU1MjREXHU3RjAwXHU0RTNBIC9kZXYtYXBpIFx1NzY4NFx1OEJGN1x1NkM0MiAgKi9cclxuICAgICAgICBbZW52LlZJVEVfQVBQX0JBU0VfQVBJXToge1xyXG4gICAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxyXG4gICAgICAgICAgLy8gXHU2M0E1XHU1M0UzXHU1NzMwXHU1NzQwXHJcbiAgICAgICAgICB0YXJnZXQ6IGVudi5WSVRFX0FQUF9BUElfVVJMLFxyXG4gICAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+XHJcbiAgICAgICAgICAgIHBhdGgucmVwbGFjZShuZXcgUmVnRXhwKFwiXlwiICsgZW52LlZJVEVfQVBQX0JBU0VfQVBJKSwgXCJcIiksXHJcbiAgICAgICAgfSxcclxuICAgICAgICBbZW52LlZJVEVfTUVESUFfUFJFRklYXToge1xyXG4gICAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxyXG4gICAgICAgICAgLy8gXHU2M0E1XHU1M0UzXHU1NzMwXHU1NzQwXHJcbiAgICAgICAgICB0YXJnZXQ6IGVudi5WSVRFX0FQUF9VUExPQURfVVJMLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgcGx1Z2luczogW1xyXG4gICAgICB2dWUoKSxcclxuICAgICAgLy8ganN4XHUzMDAxdHN4XHU4QkVEXHU2Q0Q1XHU2NTJGXHU2MzAxXHJcbiAgICAgIHZ1ZUpzeCgpLFxyXG4gICAgICAvLyBNT0NLIFx1NjcwRFx1NTJBMVxyXG4gICAgICBlbnYuVklURV9NT0NLX0RFVl9TRVJWRVIgPT09IFwidHJ1ZVwiID8gbW9ja0RldlNlcnZlclBsdWdpbigpIDogbnVsbCxcclxuICAgICAgVW5vQ1NTKHtcclxuICAgICAgICBobXJUb3BMZXZlbEF3YWl0OiBmYWxzZSxcclxuICAgICAgfSksXHJcbiAgICAgIC8vIFx1ODFFQVx1NTJBOFx1NUJGQ1x1NTE2NVx1NTNDMlx1ODAwM1x1RkYxQSBodHRwczovL2dpdGh1Yi5jb20vc3h6ei9lbGVtZW50LXBsdXMtYmVzdC1wcmFjdGljZXMvYmxvYi9tYWluL3ZpdGUuY29uZmlnLnRzXHJcbiAgICAgIEF1dG9JbXBvcnQoe1xyXG4gICAgICAgIC8vIFx1ODFFQVx1NTJBOFx1NUJGQ1x1NTE2NSBWdWUgXHU3NkY4XHU1MTczXHU1MUZEXHU2NTcwXHVGRjBDXHU1OTgyXHVGRjFBcmVmLCByZWFjdGl2ZSwgdG9SZWYgXHU3QjQ5XHJcbiAgICAgICAgaW1wb3J0czogW1widnVlXCIsIFwiQHZ1ZXVzZS9jb3JlXCIsIFwicGluaWFcIiwgXCJ2dWUtcm91dGVyXCIsIFwidnVlLWkxOG5cIl0sXHJcbiAgICAgICAgcmVzb2x2ZXJzOiBbXHJcbiAgICAgICAgICAvLyBcdTgxRUFcdTUyQThcdTVCRkNcdTUxNjUgRWxlbWVudCBQbHVzIFx1NzZGOFx1NTE3M1x1NTFGRFx1NjU3MFx1RkYwQ1x1NTk4Mlx1RkYxQUVsTWVzc2FnZSwgRWxNZXNzYWdlQm94Li4uIChcdTVFMjZcdTY4MzdcdTVGMEYpXHJcbiAgICAgICAgICBFbGVtZW50UGx1c1Jlc29sdmVyKCksXHJcbiAgICAgICAgICAvLyBcdTgxRUFcdTUyQThcdTVCRkNcdTUxNjVcdTU2RkVcdTY4MDdcdTdFQzRcdTRFRjZcclxuICAgICAgICAgIEljb25zUmVzb2x2ZXIoe30pLFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgZXNsaW50cmM6IHtcclxuICAgICAgICAgIC8vIFx1NjYyRlx1NTQyNlx1ODFFQVx1NTJBOFx1NzUxRlx1NjIxMCBlc2xpbnQgXHU4OUM0XHU1MjE5XHVGRjBDXHU1RUZBXHU4QkFFXHU3NTFGXHU2MjEwXHU0RTRCXHU1NDBFXHU4QkJFXHU3RjZFIGZhbHNlXHJcbiAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcclxuICAgICAgICAgIC8vIFx1NjMwN1x1NUI5QVx1ODFFQVx1NTJBOFx1NUJGQ1x1NTE2NVx1NTFGRFx1NjU3MCBlc2xpbnQgXHU4OUM0XHU1MjE5XHU3Njg0XHU2NTg3XHU0RUY2XHJcbiAgICAgICAgICBmaWxlcGF0aDogXCIuLy5lc2xpbnRyYy1hdXRvLWltcG9ydC5qc29uXCIsXHJcbiAgICAgICAgICBnbG9iYWxzUHJvcFZhbHVlOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gXHU2NjJGXHU1NDI2XHU1NzI4IHZ1ZSBcdTZBMjFcdTY3N0ZcdTRFMkRcdTgxRUFcdTUyQThcdTVCRkNcdTUxNjVcclxuICAgICAgICB2dWVUZW1wbGF0ZTogdHJ1ZSxcclxuICAgICAgICAvLyBcdTYzMDdcdTVCOUFcdTgxRUFcdTUyQThcdTVCRkNcdTUxNjVcdTUxRkRcdTY1NzBUU1x1N0M3Qlx1NTc4Qlx1NThGMFx1NjYwRVx1NjU4N1x1NEVGNlx1OERFRlx1NUY4NCAoZmFsc2U6XHU1MTczXHU5NUVEXHU4MUVBXHU1MkE4XHU3NTFGXHU2MjEwKVxyXG4gICAgICAgIGR0czogZmFsc2UsXHJcbiAgICAgICAgLy8gZHRzOiBcInNyYy90eXBpbmdzL2F1dG8taW1wb3J0cy5kLnRzXCIsXHJcbiAgICAgIH0pLFxyXG4gICAgICBDb21wb25lbnRzKHtcclxuICAgICAgICByZXNvbHZlcnM6IFtcclxuICAgICAgICAgIC8vIFx1ODFFQVx1NTJBOFx1NUJGQ1x1NTE2NSBFbGVtZW50IFBsdXMgXHU3RUM0XHU0RUY2XHJcbiAgICAgICAgICBFbGVtZW50UGx1c1Jlc29sdmVyKCksXHJcbiAgICAgICAgICAvLyBcdTgxRUFcdTUyQThcdTZDRThcdTUxOENcdTU2RkVcdTY4MDdcdTdFQzRcdTRFRjZcclxuICAgICAgICAgIEljb25zUmVzb2x2ZXIoe1xyXG4gICAgICAgICAgICAvLyBlbGVtZW50LXBsdXNcdTU2RkVcdTY4MDdcdTVFOTNcdUZGMENcdTUxNzZcdTRFRDZcdTU2RkVcdTY4MDdcdTVFOTMgaHR0cHM6Ly9pY29uLXNldHMuaWNvbmlmeS5kZXNpZ24vXHJcbiAgICAgICAgICAgIGVuYWJsZWRDb2xsZWN0aW9uczogW1wiZXBcIl0sXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICBdLFxyXG4gICAgICAgIC8vIFx1NjMwN1x1NUI5QVx1ODFFQVx1NUI5QVx1NEU0OVx1N0VDNFx1NEVGNlx1NEY0RFx1N0Y2RShcdTlFRDhcdThCQTQ6c3JjL2NvbXBvbmVudHMpXHJcbiAgICAgICAgZGlyczogW1wic3JjL2NvbXBvbmVudHNcIl0sXHJcbiAgICAgICAgLy8gXHU2MzA3XHU1QjlBXHU4MUVBXHU1MkE4XHU1QkZDXHU1MTY1XHU3RUM0XHU0RUY2VFNcdTdDN0JcdTU3OEJcdTU4RjBcdTY2MEVcdTY1ODdcdTRFRjZcdThERUZcdTVGODQgKGZhbHNlOlx1NTE3M1x1OTVFRFx1ODFFQVx1NTJBOFx1NzUxRlx1NjIxMClcclxuICAgICAgICBkdHM6IGZhbHNlLFxyXG4gICAgICAgIC8vIGR0czogXCJzcmMvdHlwaW5ncy9jb21wb25lbnRzLmQudHNcIixcclxuICAgICAgfSksXHJcbiAgICAgIEljb25zKHtcclxuICAgICAgICAvLyBcdTgxRUFcdTUyQThcdTVCODlcdTg4QzVcdTU2RkVcdTY4MDdcdTVFOTNcclxuICAgICAgICBhdXRvSW5zdGFsbDogdHJ1ZSxcclxuICAgICAgfSksXHJcbiAgICAgIGNyZWF0ZVN2Z0ljb25zUGx1Z2luKHtcclxuICAgICAgICAvLyBcdTYzMDdcdTVCOUFcdTk3MDBcdTg5ODFcdTdGMTNcdTVCNThcdTc2ODRcdTU2RkVcdTY4MDdcdTY1ODdcdTRFRjZcdTU5MzlcclxuICAgICAgICBpY29uRGlyczogW3Jlc29sdmUocGF0aFNyYywgXCJhc3NldHMvaWNvbnNcIildLFxyXG4gICAgICAgIC8vIFx1NjMwN1x1NUI5QXN5bWJvbElkXHU2ODNDXHU1RjBGXHJcbiAgICAgICAgc3ltYm9sSWQ6IFwiaWNvbi1bZGlyXS1bbmFtZV1cIixcclxuICAgICAgfSksXHJcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiAmJiB1cGRhdGVWZXJzaW9uKCksXHJcbiAgICBdLFxyXG4gICAgLy8gXHU5ODg0XHU1MkEwXHU4RjdEXHU5ODc5XHU3NkVFXHU1RkM1XHU5NzAwXHU3Njg0XHU3RUM0XHU0RUY2XHJcbiAgICBvcHRpbWl6ZURlcHM6IHtcclxuICAgICAgaW5jbHVkZTogW1xyXG4gICAgICAgIFwidnVlXCIsXHJcbiAgICAgICAgXCJ2dWUtcm91dGVyXCIsXHJcbiAgICAgICAgXCJwaW5pYVwiLFxyXG4gICAgICAgIFwiYXhpb3NcIixcclxuICAgICAgICBcIkB2dWV1c2UvY29yZVwiLFxyXG4gICAgICAgIFwic29ydGFibGVqc1wiLFxyXG4gICAgICAgIFwicGF0aC10by1yZWdleHBcIixcclxuICAgICAgICBcImVjaGFydHNcIixcclxuICAgICAgICBcIkB3YW5nZWRpdG9yL2VkaXRvclwiLFxyXG4gICAgICAgIFwiQHdhbmdlZGl0b3IvZWRpdG9yLWZvci12dWVcIixcclxuICAgICAgICBcInZ1ZS1pMThuXCIsXHJcbiAgICAgICAgXCJwYXRoLWJyb3dzZXJpZnlcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2Zvcm0vc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9mb3JtLWl0ZW0vc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9idXR0b24vc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9pbnB1dC9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2lucHV0LW51bWJlci9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3N3aXRjaC9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3VwbG9hZC9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL21lbnUvc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9jb2wvc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9pY29uL3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvcm93L3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvdGFnL3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvZGlhbG9nL3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvbG9hZGluZy9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3JhZGlvL3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvcmFkaW8tZ3JvdXAvc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9wb3BvdmVyL3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvc2Nyb2xsYmFyL3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvdG9vbHRpcC9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2Ryb3Bkb3duL3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvZHJvcGRvd24tbWVudS9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2Ryb3Bkb3duLWl0ZW0vc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9zdWItbWVudS9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL21lbnUtaXRlbS9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2RpdmlkZXIvc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9jYXJkL3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvbGluay9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2JyZWFkY3J1bWIvc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9icmVhZGNydW1iLWl0ZW0vc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy90YWJsZS9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3RyZWUtc2VsZWN0L3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvdGFibGUtY29sdW1uL3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvc2VsZWN0L3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvb3B0aW9uL3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3RyZWUvc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9hbGVydC9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3JhZGlvLWJ1dHRvbi9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2NoZWNrYm94LWdyb3VwL3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvY2hlY2tib3gvc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy90YWJzL3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvdGFiLXBhbmUvc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9yYXRlL3N0eWxlL2Nzc1wiLFxyXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvZGF0ZS1waWNrZXIvc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9ub3RpZmljYXRpb24vc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9pbWFnZS9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3N0YXRpc3RpYy9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3dhdGVybWFyay9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2NvbmZpZy1wcm92aWRlci9zdHlsZS9jc3NcIixcclxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3RleHQvc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9kcmF3ZXIvc3R5bGUvY3NzXCIsXHJcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9jb2xvci1waWNrZXIvc3R5bGUvY3NzXCIsXHJcbiAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAgLy8gXHU2Nzg0XHU1RUZBXHU5MTREXHU3RjZFXHJcbiAgICBidWlsZDoge1xyXG4gICAgICBzb3VyY2VtYXA6IHRydWUsXHJcbiAgICAgIGNodW5rU2l6ZVdhcm5pbmdMaW1pdDogMjAwMCwgLy8gXHU2RDg4XHU5NjY0XHU2MjUzXHU1MzA1XHU1OTI3XHU1QzBGXHU4RDg1XHU4RkM3NTAwa2JcdThCNjZcdTU0NEFcclxuICAgICAgbWluaWZ5OiBcInRlcnNlclwiLCAvLyBWaXRlIDIuNi54IFx1NEVFNVx1NEUwQVx1OTcwMFx1ODk4MVx1OTE0RFx1N0Y2RSBtaW5pZnk6IFwidGVyc2VyXCIsIHRlcnNlck9wdGlvbnMgXHU2MjREXHU4MEZEXHU3NTFGXHU2NTQ4XHJcbiAgICAgIHRlcnNlck9wdGlvbnM6IHtcclxuICAgICAgICBjb21wcmVzczoge1xyXG4gICAgICAgICAga2VlcF9pbmZpbml0eTogdHJ1ZSwgLy8gXHU5NjMyXHU2QjYyIEluZmluaXR5IFx1ODhBQlx1NTM4Qlx1N0YyOVx1NjIxMCAxLzBcdUZGMENcdThGRDlcdTUzRUZcdTgwRkRcdTRGMUFcdTVCRkNcdTgxRjQgQ2hyb21lIFx1NEUwQVx1NzY4NFx1NjAyN1x1ODBGRFx1OTVFRVx1OTg5OFxyXG4gICAgICAgICAgZHJvcF9jb25zb2xlOiB0cnVlLCAvLyBcdTc1MUZcdTRFQTdcdTczQUZcdTU4ODNcdTUzQkJcdTk2NjQgY29uc29sZVxyXG4gICAgICAgICAgZHJvcF9kZWJ1Z2dlcjogdHJ1ZSwgLy8gXHU3NTFGXHU0RUE3XHU3M0FGXHU1ODgzXHU1M0JCXHU5NjY0IGRlYnVnZ2VyXHJcbiAgICAgICAgfSxcclxuICAgICAgICBmb3JtYXQ6IHtcclxuICAgICAgICAgIGNvbW1lbnRzOiBmYWxzZSwgLy8gXHU1MjIwXHU5NjY0XHU2Q0U4XHU5MUNBXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAgcm9sbHVwT3B0aW9uczoge1xyXG4gICAgICAgIG91dHB1dDoge1xyXG4gICAgICAgICAgLy8gbWFudWFsQ2h1bmtzOiB7XHJcbiAgICAgICAgICAvLyAgIFwidnVlLWkxOG5cIjogW1widnVlLWkxOG5cIl0sXHJcbiAgICAgICAgICAvLyB9LFxyXG4gICAgICAgICAgLy8gXHU3NTI4XHU0RThFXHU0RUNFXHU1MTY1XHU1M0UzXHU3MEI5XHU1MjFCXHU1RUZBXHU3Njg0XHU1NzU3XHU3Njg0XHU2MjUzXHU1MzA1XHU4RjkzXHU1MUZBXHU2ODNDXHU1RjBGW25hbWVdXHU4ODY4XHU3OTNBXHU2NTg3XHU0RUY2XHU1NDBELFtoYXNoXVx1ODg2OFx1NzkzQVx1OEJFNVx1NjU4N1x1NEVGNlx1NTE4NVx1NUJCOWhhc2hcdTUwM0NcclxuICAgICAgICAgIGVudHJ5RmlsZU5hbWVzOiBcImpzL1tuYW1lXS5baGFzaF0uanNcIixcclxuICAgICAgICAgIC8vIFx1NzUyOFx1NEU4RVx1NTQ3RFx1NTQwRFx1NEVFM1x1NzgwMVx1NjJDNlx1NTIwNlx1NjVGNlx1NTIxQlx1NUVGQVx1NzY4NFx1NTE3MVx1NEVBQlx1NTc1N1x1NzY4NFx1OEY5M1x1NTFGQVx1NTQ3RFx1NTQwRFxyXG4gICAgICAgICAgY2h1bmtGaWxlTmFtZXM6IFwianMvW25hbWVdLltoYXNoXS5qc1wiLFxyXG4gICAgICAgICAgLy8gXHU3NTI4XHU0RThFXHU4RjkzXHU1MUZBXHU5NzU5XHU2MDAxXHU4RDQ0XHU2RTkwXHU3Njg0XHU1NDdEXHU1NDBEXHVGRjBDW2V4dF1cdTg4NjhcdTc5M0FcdTY1ODdcdTRFRjZcdTYyNjlcdTVDNTVcdTU0MERcclxuICAgICAgICAgIGFzc2V0RmlsZU5hbWVzOiAoYXNzZXRJbmZvOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW5mbyA9IGFzc2V0SW5mby5uYW1lLnNwbGl0KFwiLlwiKTtcclxuICAgICAgICAgICAgbGV0IGV4dFR5cGUgPSBpbmZvW2luZm8ubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdcdTY1ODdcdTRFRjZcdTRGRTFcdTYwNkYnLCBhc3NldEluZm8ubmFtZSlcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIC9cXC4obXA0fHdlYm18b2dnfG1wM3x3YXZ8ZmxhY3xhYWMpKFxcPy4qKT8kL2kudGVzdChhc3NldEluZm8ubmFtZSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgZXh0VHlwZSA9IFwibWVkaWFcIjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICgvXFwuKHBuZ3xqcGU/Z3xnaWZ8c3ZnKShcXD8uKik/JC8udGVzdChhc3NldEluZm8ubmFtZSkpIHtcclxuICAgICAgICAgICAgICBleHRUeXBlID0gXCJpbWdcIjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICgvXFwuKHdvZmYyP3xlb3R8dHRmfG90ZikoXFw/LiopPyQvaS50ZXN0KGFzc2V0SW5mby5uYW1lKSkge1xyXG4gICAgICAgICAgICAgIGV4dFR5cGUgPSBcImZvbnRzXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGAke2V4dFR5cGV9L1tuYW1lXS5baGFzaF0uW2V4dF1gO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIGRlZmluZToge1xyXG4gICAgICBfX0FQUF9JTkZPX186IEpTT04uc3RyaW5naWZ5KF9fQVBQX0lORk9fXyksXHJcbiAgICAgIFwicHJvY2Vzcy5lbnZcIjogcHJvY2Vzcy5lbnYsIC8vXHU1QzFEXHU4QkQ1XHU4QkJGXHU5NUVFIE5vZGUuanMgXHU3M0FGXHU1ODgzXHU1M0Q4XHU5MUNGXHVGRjBDXHU0RjQ2XHU4RkQ5XHU0RTlCXHU1M0Q4XHU5MUNGXHU1NzI4XHU2RDRGXHU4OUM4XHU1NjY4XHU3M0FGXHU1ODgzXHU0RTJEXHU2NjJGXHU0RTBEXHU1QjU4XHU1NzI4XHU3Njg0XHUzMDAyKG1haW4gaXMgbm90IGRlZmluZWQpXHJcbiAgICB9LFxyXG4gIH07XHJcbn0pO1xyXG5cclxuZnVuY3Rpb24gdXBkYXRlVmVyc2lvbigpIHtcclxuICByZXR1cm4ge1xyXG4gICAgbmFtZTogXCJ1cGRhdGUtdmVyc2lvblwiLFxyXG4gICAgYnVpbGRTdGFydCgpIHtcclxuICAgICAgbGV0IHZlcnNpb24gPSBcIlwiO1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIC8vIFx1OEJGQlx1NTNENiBqc29uIFx1NjU4N1x1NEVGNlx1OTFDQ1x1OTc2Mlx1NzI0OFx1NjcyQ1x1NTNGN1xyXG4gICAgICAgIGNvbnN0IHBhY2thZ2VKc29uID0gSlNPTi5wYXJzZShcclxuICAgICAgICAgIGZzLnJlYWRGaWxlU3luYyhcInB1YmxpYy92ZXJzaW9uLmpzb25cIiwgXCJ1dGYtOFwiKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdmVyc2lvbiA9IE51bWJlcihwYWNrYWdlSnNvbi52ZXJzaW9uKTtcclxuICAgICAgICB2ZXJzaW9uID0gKHZlcnNpb24gKyAwLjEpLnRvRml4ZWQoMSk7IC8vIFx1NTg5RVx1NTJBMDAuMVx1NUU3Nlx1NEZERFx1NzU1OTFcdTRGNERcdTVDMEZcdTY1NzBcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdmVyc2lvbkRhdGEgPSB7IHZlcnNpb246IHZlcnNpb24udG9TdHJpbmcoKSB9OyAvLyBcdTY4MzlcdTYzNkVcdTk3MDBcdTg5ODFcdTc1MUZcdTYyMTBcdTY1QjBcdTcyNDhcdTY3MkNcdTUzRjdcclxuICAgICAgLy8gXHU1MTk5XHU1MTY1IGpzb24gXHU2NTg3XHU0RUY2XHU5MUNDXHU5NzYyXHU3MjQ4XHU2NzJDXHU1M0Y3XHJcbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoXHJcbiAgICAgICAgXCJwdWJsaWMvdmVyc2lvbi5qc29uXCIsXHJcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkodmVyc2lvbkRhdGEsIG51bGwsIDIpXHJcbiAgICAgICk7XHJcbiAgICB9LFxyXG4gIH07XHJcbn1cclxuIiwgIntcclxuICBcIm5hbWVcIjogXCJcdTY2NzZcdTY4M0NcdTY2N0FcdTZDNDdcIixcclxuICBcInZlcnNpb25cIjogXCIxLjAuMFwiLFxyXG4gIFwicHJpdmF0ZVwiOiB0cnVlLFxyXG4gIFwidHlwZVwiOiBcIm1vZHVsZVwiLFxyXG4gIFwic2NyaXB0c1wiOiB7XHJcbiAgICBcInByZWluc3RhbGxcIjogXCJucHggb25seS1hbGxvdyBwbnBtXCIsXHJcbiAgICBcImRldlwiOiBcInZpdGUgc2VydmUgLS1tb2RlIGRldmVsb3BtZW50XCIsXHJcbiAgICBcImJ1aWxkXCI6IFwidml0ZSBidWlsZCAtLW1vZGUgcHJvZHVjdGlvbiBcIixcclxuICAgIFwibGludDplc2xpbnRcIjogXCJlc2xpbnQgIC0tZml4IC0tZXh0IC50cywuanMsLnZ1ZSAuL3NyYyBcIixcclxuICAgIFwibGludDpwcmV0dGllclwiOiBcInByZXR0aWVyIC0td3JpdGUgXFxcIioqLyoue2pzLGNqcyx0cyxqc29uLHRzeCxjc3MsbGVzcyxzY3NzLHZ1ZSxodG1sLG1kfVxcXCJcIixcclxuICAgIFwibGludDpzdHlsZWxpbnRcIjogXCJzdHlsZWxpbnQgIFxcXCIqKi8qLntjc3Msc2Nzcyx2dWV9XFxcIiAtLWZpeFwiLFxyXG4gICAgXCJsaW50OmxpbnQtc3RhZ2VkXCI6IFwibGludC1zdGFnZWRcIixcclxuICAgIFwiY29tbWl0XCI6IFwiZ2l0LWN6XCJcclxuICB9LFxyXG4gIFwiY29uZmlnXCI6IHtcclxuICAgIFwiY29tbWl0aXplblwiOiB7XHJcbiAgICAgIFwicGF0aFwiOiBcIm5vZGVfbW9kdWxlcy9jei1naXRcIlxyXG4gICAgfVxyXG4gIH0sXHJcbiAgXCJsaW50LXN0YWdlZFwiOiB7XHJcbiAgICBcIioue2pzLHRzfVwiOiBbXHJcbiAgICAgIFwiZXNsaW50IC0tZml4XCIsXHJcbiAgICAgIFwicHJldHRpZXIgLS13cml0ZVwiXHJcbiAgICBdLFxyXG4gICAgXCIqLntjanMsanNvbn1cIjogW1xyXG4gICAgICBcInByZXR0aWVyIC0td3JpdGVcIlxyXG4gICAgXSxcclxuICAgIFwiKi57dnVlLGh0bWx9XCI6IFtcclxuICAgICAgXCJlc2xpbnQgLS1maXhcIixcclxuICAgICAgXCJwcmV0dGllciAtLXdyaXRlXCIsXHJcbiAgICAgIFwic3R5bGVsaW50IC0tZml4XCJcclxuICAgIF0sXHJcbiAgICBcIioue3Njc3MsY3NzfVwiOiBbXHJcbiAgICAgIFwic3R5bGVsaW50IC0tZml4XCIsXHJcbiAgICAgIFwicHJldHRpZXIgLS13cml0ZVwiXHJcbiAgICBdLFxyXG4gICAgXCIqLm1kXCI6IFtcclxuICAgICAgXCJwcmV0dGllciAtLXdyaXRlXCJcclxuICAgIF1cclxuICB9LFxyXG4gIFwiZGVwZW5kZW5jaWVzXCI6IHtcclxuICAgIFwiQGVsZW1lbnQtcGx1cy9pY29ucy12dWVcIjogXCJeMi4zLjFcIixcclxuICAgIFwiQGtqZ2w3Ny9kYXRhdi12dWUzXCI6IFwiXjEuNy4zXCIsXHJcbiAgICBcIkBzbWFsbHdlaS9hdnVlXCI6IFwiXjMuMy4zXCIsXHJcbiAgICBcIkB0eXBlcy9zbWFsbHdlaV9fYXZ1ZVwiOiBcIl4zLjAuNVwiLFxyXG4gICAgXCJAdnVldXNlL2NvcmVcIjogXCJeMTAuOS4wXCIsXHJcbiAgICBcIkB3YW5nZWRpdG9yL2VkaXRvclwiOiBcIl41LjEuMjNcIixcclxuICAgIFwiQHdhbmdlZGl0b3IvZWRpdG9yLWZvci12dWVcIjogXCI1LjEuMTBcIixcclxuICAgIFwiYW5pbWF0ZS5jc3NcIjogXCJeNC4xLjFcIixcclxuICAgIFwiYXhpb3NcIjogXCJeMS42LjdcIixcclxuICAgIFwiZWNoYXJ0c1wiOiBcIl41LjUuMFwiLFxyXG4gICAgXCJlbGVtZW50LXBsdXNcIjogXCJeMi42LjBcIixcclxuICAgIFwibG9kYXNoLWVzXCI6IFwiXjQuMTcuMjFcIixcclxuICAgIFwibmFub2lkXCI6IFwiXjUuMC43XCIsXHJcbiAgICBcIm5ldFwiOiBcIl4xLjAuMlwiLFxyXG4gICAgXCJucHJvZ3Jlc3NcIjogXCJeMC4yLjBcIixcclxuICAgIFwicGF0aC1icm93c2VyaWZ5XCI6IFwiXjEuMC4xXCIsXHJcbiAgICBcInBhdGgtdG8tcmVnZXhwXCI6IFwiXjYuMi4xXCIsXHJcbiAgICBcInBpbmlhXCI6IFwiXjIuMS43XCIsXHJcbiAgICBcInBpbmlhLXBsdWdpbi1wZXJzaXN0ZWRzdGF0ZVwiOiBcIl4zLjIuMVwiLFxyXG4gICAgXCJzb2NranMtY2xpZW50XCI6IFwiMS42LjFcIixcclxuICAgIFwic29ydGFibGVqc1wiOiBcIl4xLjE1LjJcIixcclxuICAgIFwic3RvbXBqc1wiOiBcIl4yLjMuM1wiLFxyXG4gICAgXCJ2dWVcIjogXCJeMy40LjIxXCIsXHJcbiAgICBcInZ1ZS1pMThuXCI6IFwiOS45LjFcIixcclxuICAgIFwidnVlLXBkZi1lbWJlZFwiOiBcIl4yLjAuMlwiLFxyXG4gICAgXCJ2dWUtcm91dGVyXCI6IFwiXjQuMy4wXCIsXHJcbiAgICBcInZ1ZTMtcGRmanNcIjogXCJeMC4xLjZcIixcclxuICAgIFwieGxzeFwiOiBcIl4wLjE4LjVcIlxyXG4gIH0sXHJcbiAgXCJkZXZEZXBlbmRlbmNpZXNcIjoge1xyXG4gICAgXCJAY29tbWl0bGludC9jbGlcIjogXCJeMTguNi4xXCIsXHJcbiAgICBcIkBjb21taXRsaW50L2NvbmZpZy1jb252ZW50aW9uYWxcIjogXCJeMTguNi4yXCIsXHJcbiAgICBcIkBpY29uaWZ5LWpzb24vZXBcIjogXCJeMS4xLjE0XCIsXHJcbiAgICBcIkB0eXBlcy9sb2Rhc2hcIjogXCJeNC4xNC4yMDJcIixcclxuICAgIFwiQHR5cGVzL25vZGVcIjogXCJeMjAuMTEuMjRcIixcclxuICAgIFwiQHR5cGVzL25wcm9ncmVzc1wiOiBcIl4wLjIuM1wiLFxyXG4gICAgXCJAdHlwZXMvcGF0aC1icm93c2VyaWZ5XCI6IFwiXjEuMC4yXCIsXHJcbiAgICBcIkB0eXBlcy9zb2NranMtY2xpZW50XCI6IFwiXjEuNS40XCIsXHJcbiAgICBcIkB0eXBlcy9zb3J0YWJsZWpzXCI6IFwiXjEuMTUuOFwiLFxyXG4gICAgXCJAdHlwZXMvc3RvbXBqc1wiOiBcIl4yLjMuOVwiLFxyXG4gICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvZXNsaW50LXBsdWdpblwiOiBcIl43LjEuMVwiLFxyXG4gICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvcGFyc2VyXCI6IFwiXjcuMS4xXCIsXHJcbiAgICBcIkB2aXRlanMvcGx1Z2luLXZ1ZVwiOiBcIl41LjAuNFwiLFxyXG4gICAgXCJAdml0ZWpzL3BsdWdpbi12dWUtanN4XCI6IFwiXjMuMS4wXCIsXHJcbiAgICBcImF1dG9wcmVmaXhlclwiOiBcIl4xMC40LjE4XCIsXHJcbiAgICBcImNvbW1pdGl6ZW5cIjogXCJeNC4zLjBcIixcclxuICAgIFwiY3otZ2l0XCI6IFwiXjEuOS4wXCIsXHJcbiAgICBcImVzbGludFwiOiBcIl44LjU3LjBcIixcclxuICAgIFwiZXNsaW50LWNvbmZpZy1wcmV0dGllclwiOiBcIl45LjEuMFwiLFxyXG4gICAgXCJlc2xpbnQtcGx1Z2luLWltcG9ydFwiOiBcIl4yLjI5LjFcIixcclxuICAgIFwiZXNsaW50LXBsdWdpbi1wcmV0dGllclwiOiBcIl41LjEuM1wiLFxyXG4gICAgXCJlc2xpbnQtcGx1Z2luLXZ1ZVwiOiBcIl45LjIyLjBcIixcclxuICAgIFwiZmFzdC1nbG9iXCI6IFwiXjMuMy4yXCIsXHJcbiAgICBcImxlc3NcIjogXCJeNC4yLjBcIixcclxuICAgIFwibGludC1zdGFnZWRcIjogXCJeMTUuMi4yXCIsXHJcbiAgICBcInBvc3Rjc3NcIjogXCJeOC40LjM1XCIsXHJcbiAgICBcInBvc3Rjc3MtaHRtbFwiOiBcIl4xLjYuMFwiLFxyXG4gICAgXCJwb3N0Y3NzLXNjc3NcIjogXCJeNC4wLjlcIixcclxuICAgIFwicHJldHRpZXJcIjogXCJeMy4yLjVcIixcclxuICAgIFwic2Fzc1wiOiBcIl4xLjcxLjFcIixcclxuICAgIFwic3R5bGVsaW50XCI6IFwiXjE2LjIuMVwiLFxyXG4gICAgXCJzdHlsZWxpbnQtY29uZmlnLWh0bWxcIjogXCJeMS4xLjBcIixcclxuICAgIFwic3R5bGVsaW50LWNvbmZpZy1yZWNlc3Mtb3JkZXJcIjogXCJeNC42LjBcIixcclxuICAgIFwic3R5bGVsaW50LWNvbmZpZy1yZWNvbW1lbmRlZC1zY3NzXCI6IFwiXjE0LjAuMFwiLFxyXG4gICAgXCJzdHlsZWxpbnQtY29uZmlnLXJlY29tbWVuZGVkLXZ1ZVwiOiBcIl4xLjUuMFwiLFxyXG4gICAgXCJzdHlsZWxpbnQtY29uZmlnLXN0YW5kYXJkXCI6IFwiXjM2LjAuMFwiLFxyXG4gICAgXCJ0ZXJzZXJcIjogXCJeNS4yOC4xXCIsXHJcbiAgICBcInR5cGVzY3JpcHRcIjogXCJeNS4zLjNcIixcclxuICAgIFwidW5vY3NzXCI6IFwiXjAuNTguNVwiLFxyXG4gICAgXCJ1bnBsdWdpbi1hdXRvLWltcG9ydFwiOiBcIl4wLjE3LjVcIixcclxuICAgIFwidW5wbHVnaW4taWNvbnNcIjogXCJeMC4xOC41XCIsXHJcbiAgICBcInVucGx1Z2luLXZ1ZS1jb21wb25lbnRzXCI6IFwiXjAuMjYuMFwiLFxyXG4gICAgXCJ2aXRlXCI6IFwiXjUuMS41XCIsXHJcbiAgICBcInZpdGUtcGx1Z2luLW1vY2stZGV2LXNlcnZlclwiOiBcIl4xLjQuN1wiLFxyXG4gICAgXCJ2aXRlLXBsdWdpbi1zdmctaWNvbnNcIjogXCJeMi4wLjFcIixcclxuICAgIFwidnVlLXRzY1wiOiBcIl4yLjAuNFwiXHJcbiAgfSxcclxuICBcInJlcG9zaXRvcnlcIjogXCJodHRwczovL2dpdGVlLmNvbS95b3VsYWlvcmcvdnVlMy1lbGVtZW50LWFkbWluLmdpdFwiLFxyXG4gIFwiYXV0aG9yXCI6IFwiXHU2NzA5XHU2NzY1XHU1RjAwXHU2RTkwXHU3RUM0XHU3RUM3XCIsXHJcbiAgXCJsaWNlbnNlXCI6IFwiTUlUXCIsXHJcbiAgXCJlbmdpbmVzXCI6IHtcclxuICAgIFwibm9kZVwiOiBcIj49MTguMC4wXCJcclxuICB9XHJcbn1cclxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUE2UixPQUFPLFNBQVM7QUFDN1MsT0FBTyxZQUFZO0FBQ25CLFNBQW9CLGNBQWMsZUFBMkI7QUFDN0QsT0FBTyxRQUFRO0FBQ2YsT0FBTyxnQkFBZ0I7QUFDdkIsT0FBTyxnQkFBZ0I7QUFDdkIsU0FBUywyQkFBMkI7QUFDcEMsT0FBTyxXQUFXO0FBQ2xCLE9BQU8sbUJBQW1CO0FBRTFCLFNBQVMsNEJBQTRCO0FBQ3JDLE9BQU8seUJBQXlCO0FBRWhDLE9BQU8s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