From a7f62ffaa2f78e6d9dadc5884bc41582e11c5c71 Mon Sep 17 00:00:00 2001 From: wangxiaowei <1121133807@qq.com> Date: Mon, 24 Nov 2025 16:32:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/bundle/coupon/coupon.vue | 6 +- src/bundle/coupon/my-coupon.vue | 2 +- src/components/order/ComboCard.vue | 2 +- src/hooks/useWeiXin.ts | 22 +-- src/pages.json | 2 + src/pages/cashier/cashier.vue | 1 + src/pages/index/index.vue | 8 +- src/pages/my/my.vue | 2 +- src/utils/jwexin.ts | 1 + ....timestamp-1763707924428-d7286c67300ac.mjs | 162 ++++++++++++++++++ 10 files changed, 188 insertions(+), 20 deletions(-) create mode 100644 vite.config.ts.timestamp-1763707924428-d7286c67300ac.mjs diff --git a/src/bundle/coupon/coupon.vue b/src/bundle/coupon/coupon.vue index c1ee66a..0982674 100644 --- a/src/bundle/coupon/coupon.vue +++ b/src/bundle/coupon/coupon.vue @@ -71,14 +71,13 @@ diff --git a/src/bundle/coupon/my-coupon.vue b/src/bundle/coupon/my-coupon.vue index 67b9fb3..e0402df 100644 --- a/src/bundle/coupon/my-coupon.vue +++ b/src/bundle/coupon/my-coupon.vue @@ -1,6 +1,6 @@ { - // "needLogin": true, + "needLogin": true, "layout": "default", "style": { "navigationStyle": "custom" diff --git a/src/components/order/ComboCard.vue b/src/components/order/ComboCard.vue index 05339eb..44d8017 100644 --- a/src/components/order/ComboCard.vue +++ b/src/components/order/ComboCard.vue @@ -262,7 +262,7 @@ const comboCard = { - // 跳转到对饮茶室的详情页 + // 跳转茶室的详情页 handleToStore: () => { uni.navigateTo({ url: '/pages/store/store-detail/store-detail' diff --git a/src/hooks/useWeiXin.ts b/src/hooks/useWeiXin.ts index 17397b4..6fa3f5f 100644 --- a/src/hooks/useWeiXin.ts +++ b/src/hooks/useWeiXin.ts @@ -27,19 +27,19 @@ export const getUrlCode = (): { [key: string]: string | undefined } => { */ export async function snsapiBaseAuthorize() { // TODO 测试代码 - wxSnsapiBaseLogin({code: '011ganGa10NGEK0reKGa1l3rpS2ganGX'}).then((res: IUserInfoVo) => { - console.log("登录成功 ~ snsapiBaseAuthorize ~ res:", res) - // 映射 IUserLogin 到 IUserInfoVo - useUserStore().setUserInfo(res) - uni.$emit('loginSuccess') + // wxSnsapiBaseLogin({code: '011ganGa10NGEK0reKGa1l3rpS2ganGX'}).then((res: IUserInfoVo) => { + // console.log("登录成功 ~ snsapiBaseAuthorize ~ res:", res) + // // 映射 IUserLogin 到 IUserInfoVo + // useUserStore().setUserInfo(res) + // uni.$emit('loginSuccess') - }).catch(err => { - // 失败就重新授权 - uni.setStorageSync('wechatCode', 0) - console.log('请求失败', err) - }) + // }).catch(err => { + // // 失败就重新授权 + // uni.setStorageSync('wechatCode', 0) + // console.log('请求失败', err) + // }) - return + // return let local = window.location.href // 获取页面url let appid = import.meta.env.VITE_WX_SERVICE_ACCOUNT_APPID // 公众号的APPID diff --git a/src/pages.json b/src/pages.json index eeaa948..b1ffd89 100644 --- a/src/pages.json +++ b/src/pages.json @@ -100,6 +100,7 @@ { "path": "pages/cashier/cashier", "type": "page", + "needLogin": true, "layout": "default", "style": { "navigationStyle": "custom" @@ -202,6 +203,7 @@ { "path": "coupon/my-coupon", "type": "page", + "needLogin": true, "layout": "default", "style": { "navigationStyle": "custom" diff --git a/src/pages/cashier/cashier.vue b/src/pages/cashier/cashier.vue index 1b21b28..29a6379 100644 --- a/src/pages/cashier/cashier.vue +++ b/src/pages/cashier/cashier.vue @@ -1,5 +1,6 @@ { + "needLogin": true, "layout": "default", "style": { "navigationStyle": "custom" diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue index a8b285a..5c2c20d 100644 --- a/src/pages/index/index.vue +++ b/src/pages/index/index.vue @@ -286,8 +286,12 @@ } try { await wxGetLocation((res) => { - latitude.value = res.latitude - longitude.value = res.longitude + console.log("🚀 ~ res:", res) + if (res) { + latitude.value = res.latitude + longitude.value = res.longitude + } + Index.handleSetLocationCache(latitude.value, longitude.value) Index.handleSearch() Index.handleGetCityList() diff --git a/src/pages/my/my.vue b/src/pages/my/my.vue index 8cef20b..80b8e67 100644 --- a/src/pages/my/my.vue +++ b/src/pages/my/my.vue @@ -69,7 +69,7 @@ - {{ isLogin ? user?.user_money : '- -' }} + {{ isLogin ? user?.user_money : '- -' }} 平台余额 diff --git a/src/utils/jwexin.ts b/src/utils/jwexin.ts index 60d69fe..bda9f27 100644 --- a/src/utils/jwexin.ts +++ b/src/utils/jwexin.ts @@ -70,6 +70,7 @@ export async function wxGetLocation(callback: (res: any) => void ) { // 用户拒绝授权 uni.setStorageSync('location_deny_time', Date.now()) } + callback(false) } }); }); diff --git a/vite.config.ts.timestamp-1763707924428-d7286c67300ac.mjs b/vite.config.ts.timestamp-1763707924428-d7286c67300ac.mjs new file mode 100644 index 0000000..d37ecc8 --- /dev/null +++ b/vite.config.ts.timestamp-1763707924428-d7286c67300ac.mjs @@ -0,0 +1,162 @@ +// vite.config.ts +import path from "node:path"; +import process from "node:process"; +import Uni from "file:///D:/Hbuilder/Project/chazhi_h5/node_modules/.pnpm/@uni-helper+plugin-uni@0.1._13a08374fc746519ba2cdc3ac66336dc/node_modules/@uni-helper/plugin-uni/src/index.js"; +import Components from "file:///D:/Hbuilder/Project/chazhi_h5/node_modules/.pnpm/@uni-helper+vite-plugin-uni-components@0.2.0_rollup@4.46.2/node_modules/@uni-helper/vite-plugin-uni-components/dist/index.mjs"; +import UniLayouts from "file:///D:/Hbuilder/Project/chazhi_h5/node_modules/.pnpm/@uni-helper+vite-plugin-uni-layouts@0.1.11_rollup@4.46.2/node_modules/@uni-helper/vite-plugin-uni-layouts/dist/index.mjs"; +import UniManifest from "file:///D:/Hbuilder/Project/chazhi_h5/node_modules/.pnpm/@uni-helper+vite-plugin-uni_2e79d4912f4f16552fcb82978a6a988b/node_modules/@uni-helper/vite-plugin-uni-manifest/dist/index.mjs"; +import UniPages from "file:///D:/Hbuilder/Project/chazhi_h5/node_modules/.pnpm/@uni-helper+vite-plugin-uni_5216a1b2930e52cb254f93c3166fc8fc/node_modules/@uni-helper/vite-plugin-uni-pages/dist/index.mjs"; +import UniPlatform from "file:///D:/Hbuilder/Project/chazhi_h5/node_modules/.pnpm/@uni-helper+vite-plugin-uni-platform@0.0.5/node_modules/@uni-helper/vite-plugin-uni-platform/dist/index.mjs"; +import Optimization from "file:///D:/Hbuilder/Project/chazhi_h5/node_modules/.pnpm/@uni-ku+bundle-optimizer@1._5ab614773e6f14d4b1f53be3d75b20b3/node_modules/@uni-ku/bundle-optimizer/dist/index.mjs"; +import dayjs from "file:///D:/Hbuilder/Project/chazhi_h5/node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/dayjs.min.js"; +import { visualizer } from "file:///D:/Hbuilder/Project/chazhi_h5/node_modules/.pnpm/rollup-plugin-visualizer@5.14.0_rollup@4.46.2/node_modules/rollup-plugin-visualizer/dist/plugin/index.js"; +import UnoCSS from "file:///D:/Hbuilder/Project/chazhi_h5/node_modules/.pnpm/unocss@66.0.0_postcss@8.5.6_11a0fdb79703efeb72296cc703204d63/node_modules/unocss/dist/vite.mjs"; +import AutoImport from "file:///D:/Hbuilder/Project/chazhi_h5/node_modules/.pnpm/unplugin-auto-import@0.17.8_rollup@4.46.2/node_modules/unplugin-auto-import/dist/vite.js"; +import { defineConfig, loadEnv } from "file:///D:/Hbuilder/Project/chazhi_h5/node_modules/.pnpm/vite@5.2.8_@types+node@20.19.9_sass@1.77.8_terser@5.43.1/node_modules/vite/dist/node/index.js"; +import ViteRestart from "file:///D:/Hbuilder/Project/chazhi_h5/node_modules/.pnpm/vite-plugin-restart@0.4.2_v_30f4b30a1abde0501a9b6d1dbad04de5/node_modules/vite-plugin-restart/dist/index.js"; +var vite_config_default = ({ command, mode }) => { + console.log("command, mode -> ", command, mode); + const { UNI_PLATFORM } = process.env; + console.log("UNI_PLATFORM -> ", UNI_PLATFORM); + const env = loadEnv(mode, path.resolve(process.cwd(), "env")); + const { + VITE_APP_PORT, + VITE_SERVER_BASEURL, + VITE_DELETE_CONSOLE, + VITE_SHOW_SOURCEMAP, + VITE_APP_PUBLIC_BASE, + VITE_APP_PROXY, + VITE_APP_PROXY_PREFIX + } = env; + console.log("\u73AF\u5883\u53D8\u91CF env -> ", env); + return defineConfig({ + envDir: "./env", + // 自定义env目录 + base: VITE_APP_PUBLIC_BASE, + plugins: [ + UniPages({ + exclude: ["**/components/**/**.*"], + // homePage 通过 vue 文件的 route-block 的type="home"来设定 + // pages 目录为 src/pages,分包目录不能配置在pages目录下 + subPackages: ["src/bundle"], + // 是个数组,可以配置多个,但是不能为pages里面的目录 + dts: "src/types/uni-pages.d.ts" + }), + UniLayouts(), + UniPlatform(), + UniManifest(), + // UniXXX 需要在 Uni 之前引入 + { + // 临时解决 dcloudio 官方的 @dcloudio/uni-mp-compiler 出现的编译 BUG + // 参考 github issue: https://github.com/dcloudio/uni-app/issues/4952 + // 自定义插件禁用 vite:vue 插件的 devToolsEnabled,强制编译 vue 模板时 inline 为 true + name: "fix-vite-plugin-vue", + configResolved(config) { + const plugin = config.plugins.find((p) => p.name === "vite:vue"); + if (plugin && plugin.api && plugin.api.options) { + plugin.api.options.devToolsEnabled = false; + } + } + }, + UnoCSS(), + AutoImport({ + imports: ["vue", "uni-app"], + dts: "src/types/auto-import.d.ts", + dirs: ["src/hooks"], + // 自动导入 hooks + vueTemplate: true + // default false + }), + // Optimization 插件需要 page.json 文件,故应在 UniPages 插件之后执行 + Optimization({ + enable: { + "optimization": true, + "async-import": true, + "async-component": true + }, + dts: { + base: "src/types" + }, + logger: false + }), + ViteRestart({ + // 通过这个插件,在修改vite.config.js文件则不需要重新运行也生效配置 + restart: ["vite.config.js"] + }), + // h5环境增加 BUILD_TIME 和 BUILD_BRANCH + UNI_PLATFORM === "h5" && { + name: "html-transform", + transformIndexHtml(html) { + return html.replace("%BUILD_TIME%", dayjs().format("YYYY-MM-DD HH:mm:ss")); + } + }, + // 打包分析插件,h5 + 生产环境才弹出 + UNI_PLATFORM === "h5" && mode === "production" && visualizer({ + filename: "./node_modules/.cache/visualizer/stats.html", + open: true, + gzipSize: true, + brotliSize: true + }), + // 只有在 app 平台时才启用 copyNativeRes 插件 + // UNI_PLATFORM === 'app' && copyNativeRes(), + Components({ + extensions: ["vue"], + deep: true, + // 是否递归扫描子目录, + directoryAsNamespace: false, + // 是否把目录名作为命名空间前缀,true 时组件名为 目录名+组件名, + dts: "src/types/components.d.ts" + // 自动生成的组件类型声明文件路径(用于 TypeScript 支持) + }), + Uni() + ], + define: { + __UNI_PLATFORM__: JSON.stringify(UNI_PLATFORM), + __VITE_APP_PROXY__: JSON.stringify(VITE_APP_PROXY) + }, + css: { + postcss: { + plugins: [ + // autoprefixer({ + // // 指定目标浏览器 + // overrideBrowserslist: ['> 1%', 'last 2 versions'], + // }), + ] + } + }, + resolve: { + alias: { + "@": path.join(process.cwd(), "./src"), + "@img": path.join(process.cwd(), "./src/static/images") + } + }, + server: { + host: "0.0.0.0", + hmr: true, + port: Number.parseInt(VITE_APP_PORT, 10), + // 仅 H5 端生效,其他端不生效(其他端走build,不走devServer) + proxy: JSON.parse(VITE_APP_PROXY) ? { + [VITE_APP_PROXY_PREFIX]: { + target: VITE_SERVER_BASEURL, + changeOrigin: true, + rewrite: (path2) => path2.replace(new RegExp(`^${VITE_APP_PROXY_PREFIX}`), "") + } + } : void 0 + }, + esbuild: { + drop: VITE_DELETE_CONSOLE === "true" ? ["console", "debugger"] : ["debugger"] + }, + build: { + sourcemap: false, + // 方便非h5端调试 + // sourcemap: VITE_SHOW_SOURCEMAP === 'true', // 默认是false + target: "es6", + // 开发环境不用压缩 + minify: mode === "development" ? false : "esbuild" + } + }); +}; +export { + vite_config_default as default +}; +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJEOlxcXFxIYnVpbGRlclxcXFxQcm9qZWN0XFxcXGNoYXpoaV9oNVwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRDpcXFxcSGJ1aWxkZXJcXFxcUHJvamVjdFxcXFxjaGF6aGlfaDVcXFxcdml0ZS5jb25maWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6L0hidWlsZGVyL1Byb2plY3QvY2hhemhpX2g1L3ZpdGUuY29uZmlnLnRzXCI7aW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJ1xyXG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnXHJcbmltcG9ydCBVbmkgZnJvbSAnQHVuaS1oZWxwZXIvcGx1Z2luLXVuaSdcclxuaW1wb3J0IENvbXBvbmVudHMgZnJvbSAnQHVuaS1oZWxwZXIvdml0ZS1wbHVnaW4tdW5pLWNvbXBvbmVudHMnXHJcbi8vIEBzZWUgaHR0cHM6Ly91bmktaGVscGVyLmpzLm9yZy92aXRlLXBsdWdpbi11bmktbGF5b3V0c1xyXG5pbXBvcnQgVW5pTGF5b3V0cyBmcm9tICdAdW5pLWhlbHBlci92aXRlLXBsdWdpbi11bmktbGF5b3V0cydcclxuLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vdW5pLWhlbHBlci92aXRlLXBsdWdpbi11bmktbWFuaWZlc3RcclxuaW1wb3J0IFVuaU1hbmlmZXN0IGZyb20gJ0B1bmktaGVscGVyL3ZpdGUtcGx1Z2luLXVuaS1tYW5pZmVzdCdcclxuLy8gQHNlZSBodHRwczovL3VuaS1oZWxwZXIuanMub3JnL3ZpdGUtcGx1Z2luLXVuaS1wYWdlc1xyXG5pbXBvcnQgVW5pUGFnZXMgZnJvbSAnQHVuaS1oZWxwZXIvdml0ZS1wbHVnaW4tdW5pLXBhZ2VzJ1xyXG4vLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS91bmktaGVscGVyL3ZpdGUtcGx1Z2luLXVuaS1wbGF0Zm9ybVxyXG4vLyBcdTk3MDBcdTg5ODFcdTRFMEUgQHVuaS1oZWxwZXIvdml0ZS1wbHVnaW4tdW5pLXBhZ2VzIFx1NjNEMlx1NEVGNlx1NEUwMFx1OEQ3N1x1NEY3Rlx1NzUyOFxyXG5pbXBvcnQgVW5pUGxhdGZvcm0gZnJvbSAnQHVuaS1oZWxwZXIvdml0ZS1wbHVnaW4tdW5pLXBsYXRmb3JtJ1xyXG4vKipcclxuICogXHU1MjA2XHU1MzA1XHU0RjE4XHU1MzE2XHUzMDAxXHU2QTIxXHU1NzU3XHU1RjAyXHU2QjY1XHU4REU4XHU1MzA1XHU4QzAzXHU3NTI4XHUzMDAxXHU3RUM0XHU0RUY2XHU1RjAyXHU2QjY1XHU4REU4XHU1MzA1XHU1RjE1XHU3NTI4XHJcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3VuaS1rdS9idW5kbGUtb3B0aW1pemVyXHJcbiAqL1xyXG5pbXBvcnQgT3B0aW1pemF0aW9uIGZyb20gJ0B1bmkta3UvYnVuZGxlLW9wdGltaXplcidcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJ1xyXG5pbXBvcnQgeyB2aXN1YWxpemVyIH0gZnJvbSAncm9sbHVwLXBsdWdpbi12aXN1YWxpemVyJ1xyXG5pbXBvcnQgVW5vQ1NTIGZyb20gJ3Vub2Nzcy92aXRlJ1xyXG5pbXBvcnQgQXV0b0ltcG9ydCBmcm9tICd1bnBsdWdpbi1hdXRvLWltcG9ydC92aXRlJ1xyXG5pbXBvcnQgeyBkZWZpbmVDb25maWcsIGxvYWRFbnYgfSBmcm9tICd2aXRlJ1xyXG5pbXBvcnQgVml0ZVJlc3RhcnQgZnJvbSAndml0ZS1wbHVnaW4tcmVzdGFydCdcclxuXHJcbi8vIGh0dHBzOi8vdml0ZWpzLmRldi9jb25maWcvXHJcbmV4cG9ydCBkZWZhdWx0ICh7IGNvbW1hbmQsIG1vZGUgfSkgPT4ge1xyXG5cdC8vIEBzZWUgaHR0cHM6Ly91bm9jc3MuZGV2L1xyXG5cdC8vIGNvbnN0IFVub0NTUyA9IChhd2FpdCBpbXBvcnQoJ3Vub2Nzcy92aXRlJykpLmRlZmF1bHRcclxuXHQvLyBjb25zb2xlLmxvZyhtb2RlID09PSBwcm9jZXNzLmVudi5OT0RFX0VOVikgLy8gdHJ1ZVxyXG5cclxuXHQvLyBtb2RlOiBcdTUzM0FcdTUyMDZcdTc1MUZcdTRFQTdcdTczQUZcdTU4ODNcdThGRDhcdTY2MkZcdTVGMDBcdTUzRDFcdTczQUZcdTU4ODNcclxuXHRjb25zb2xlLmxvZygnY29tbWFuZCwgbW9kZSAtPiAnLCBjb21tYW5kLCBtb2RlKVxyXG5cdC8vIHBucG0gZGV2Omg1IFx1NjVGNlx1NUY5N1x1NTIzMCA9PiBzZXJ2ZSBkZXZlbG9wbWVudFxyXG5cdC8vIHBucG0gYnVpbGQ6aDUgXHU2NUY2XHU1Rjk3XHU1MjMwID0+IGJ1aWxkIHByb2R1Y3Rpb25cclxuXHQvLyBwbnBtIGRldjptcC13ZWl4aW4gXHU2NUY2XHU1Rjk3XHU1MjMwID0+IGJ1aWxkIGRldmVsb3BtZW50IChcdTZDRThcdTYxMEZcdTUzM0FcdTUyMkJcdUZGMENjb21tYW5kXHU0RTNBYnVpbGQpXHJcblx0Ly8gcG5wbSBidWlsZDptcC13ZWl4aW4gXHU2NUY2XHU1Rjk3XHU1MjMwID0+IGJ1aWxkIHByb2R1Y3Rpb25cclxuXHQvLyBwbnBtIGRldjphcHAgXHU2NUY2XHU1Rjk3XHU1MjMwID0+IGJ1aWxkIGRldmVsb3BtZW50IChcdTZDRThcdTYxMEZcdTUzM0FcdTUyMkJcdUZGMENjb21tYW5kXHU0RTNBYnVpbGQpXHJcblx0Ly8gcG5wbSBidWlsZDphcHAgXHU2NUY2XHU1Rjk3XHU1MjMwID0+IGJ1aWxkIHByb2R1Y3Rpb25cclxuXHQvLyBkZXYgXHU1NDhDIGJ1aWxkIFx1NTQ3RFx1NEVFNFx1NTNFRlx1NEVFNVx1NTIwNlx1NTIyQlx1NEY3Rlx1NzUyOCAuZW52LmRldmVsb3BtZW50IFx1NTQ4QyAuZW52LnByb2R1Y3Rpb24gXHU3Njg0XHU3M0FGXHU1ODgzXHU1M0Q4XHU5MUNGXHJcblxyXG5cdGNvbnN0IHsgVU5JX1BMQVRGT1JNIH0gPSBwcm9jZXNzLmVudlxyXG5cdGNvbnNvbGUubG9nKCdVTklfUExBVEZPUk0gLT4gJywgVU5JX1BMQVRGT1JNKSAvLyBcdTVGOTdcdTUyMzAgbXAtd2VpeGluLCBoNSwgYXBwIFx1N0I0OVxyXG5cclxuXHRjb25zdCBlbnYgPSBsb2FkRW52KG1vZGUsIHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnZW52JykpXHJcblx0Y29uc3Qge1xyXG5cdFx0VklURV9BUFBfUE9SVCxcclxuXHRcdFZJVEVfU0VSVkVSX0JBU0VVUkwsXHJcblx0XHRWSVRFX0RFTEVURV9DT05TT0xFLFxyXG5cdFx0VklURV9TSE9XX1NPVVJDRU1BUCxcclxuXHRcdFZJVEVfQVBQX1BVQkxJQ19CQVNFLFxyXG5cdFx0VklURV9BUFBfUFJPWFksXHJcblx0XHRWSVRFX0FQUF9QUk9YWV9QUkVGSVgsXHJcblx0fSA9IGVudlxyXG5cdGNvbnNvbGUubG9nKCdcdTczQUZcdTU4ODNcdTUzRDhcdTkxQ0YgZW52IC0+ICcsIGVudilcclxuXHJcblx0cmV0dXJuIGRlZmluZUNvbmZpZyh7XHJcblx0XHRlbnZEaXI6ICcuL2VudicsIC8vIFx1ODFFQVx1NUI5QVx1NEU0OWVudlx1NzZFRVx1NUY1NVxyXG5cdFx0YmFzZTogVklURV9BUFBfUFVCTElDX0JBU0UsXHJcblx0XHRwbHVnaW5zOiBbXHJcblx0XHRcdFVuaVBhZ2VzKHtcclxuXHRcdFx0XHRleGNsdWRlOiBbJyoqL2NvbXBvbmVudHMvKiovKiouKiddLFxyXG5cdFx0XHRcdC8vIGhvbWVQYWdlIFx1OTAxQVx1OEZDNyB2dWUgXHU2NTg3XHU0RUY2XHU3Njg0IHJvdXRlLWJsb2NrIFx1NzY4NHR5cGU9XCJob21lXCJcdTY3NjVcdThCQkVcdTVCOUFcclxuXHRcdFx0XHQvLyBwYWdlcyBcdTc2RUVcdTVGNTVcdTRFM0Egc3JjL3BhZ2VzXHVGRjBDXHU1MjA2XHU1MzA1XHU3NkVFXHU1RjU1XHU0RTBEXHU4MEZEXHU5MTREXHU3RjZFXHU1NzI4cGFnZXNcdTc2RUVcdTVGNTVcdTRFMEJcclxuXHRcdFx0XHRzdWJQYWNrYWdlczogWydzcmMvYnVuZGxlJ10sIC8vIFx1NjYyRlx1NEUyQVx1NjU3MFx1N0VDNFx1RkYwQ1x1NTNFRlx1NEVFNVx1OTE0RFx1N0Y2RVx1NTkxQVx1NEUyQVx1RkYwQ1x1NEY0Nlx1NjYyRlx1NEUwRFx1ODBGRFx1NEUzQXBhZ2VzXHU5MUNDXHU5NzYyXHU3Njg0XHU3NkVFXHU1RjU1XHJcblx0XHRcdFx0ZHRzOiAnc3JjL3R5cGVzL3VuaS1wYWdlcy5kLnRzJyxcclxuXHRcdFx0fSksXHJcblx0XHRcdFVuaUxheW91dHMoKSxcclxuXHRcdFx0VW5pUGxhdGZvcm0oKSxcclxuXHRcdFx0VW5pTWFuaWZlc3QoKSxcclxuXHRcdFx0Ly8gVW5pWFhYIFx1OTcwMFx1ODk4MVx1NTcyOCBVbmkgXHU0RTRCXHU1MjREXHU1RjE1XHU1MTY1XHJcblx0XHRcdHtcclxuXHRcdFx0XHQvLyBcdTRFMzRcdTY1RjZcdTg5RTNcdTUxQjMgZGNsb3VkaW8gXHU1Qjk4XHU2NUI5XHU3Njg0IEBkY2xvdWRpby91bmktbXAtY29tcGlsZXIgXHU1MUZBXHU3M0IwXHU3Njg0XHU3RjE2XHU4QkQxIEJVR1xyXG5cdFx0XHRcdC8vIFx1NTNDMlx1ODAwMyBnaXRodWIgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kY2xvdWRpby91bmktYXBwL2lzc3Vlcy80OTUyXHJcblx0XHRcdFx0Ly8gXHU4MUVBXHU1QjlBXHU0RTQ5XHU2M0QyXHU0RUY2XHU3OTgxXHU3NTI4IHZpdGU6dnVlIFx1NjNEMlx1NEVGNlx1NzY4NCBkZXZUb29sc0VuYWJsZWRcdUZGMENcdTVGM0FcdTUyMzZcdTdGMTZcdThCRDEgdnVlIFx1NkEyMVx1Njc3Rlx1NjVGNiBpbmxpbmUgXHU0RTNBIHRydWVcclxuXHRcdFx0XHRuYW1lOiAnZml4LXZpdGUtcGx1Z2luLXZ1ZScsXHJcblx0XHRcdFx0Y29uZmlnUmVzb2x2ZWQoY29uZmlnKSB7XHJcblx0XHRcdFx0XHRjb25zdCBwbHVnaW4gPSBjb25maWcucGx1Z2lucy5maW5kKHAgPT4gcC5uYW1lID09PSAndml0ZTp2dWUnKVxyXG5cdFx0XHRcdFx0aWYgKHBsdWdpbiAmJiBwbHVnaW4uYXBpICYmIHBsdWdpbi5hcGkub3B0aW9ucykge1xyXG5cdFx0XHRcdFx0XHRwbHVnaW4uYXBpLm9wdGlvbnMuZGV2VG9vbHNFbmFibGVkID0gZmFsc2VcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9LFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRVbm9DU1MoKSxcclxuXHRcdFx0QXV0b0ltcG9ydCh7XHJcblx0XHRcdFx0aW1wb3J0czogWyd2dWUnLCAndW5pLWFwcCddLFxyXG5cdFx0XHRcdGR0czogJ3NyYy90eXBlcy9hdXRvLWltcG9ydC5kLnRzJyxcclxuXHRcdFx0XHRkaXJzOiBbJ3NyYy9ob29rcyddLCAvLyBcdTgxRUFcdTUyQThcdTVCRkNcdTUxNjUgaG9va3NcclxuXHRcdFx0XHR2dWVUZW1wbGF0ZTogdHJ1ZSwgLy8gZGVmYXVsdCBmYWxzZVxyXG5cdFx0XHR9KSxcclxuXHRcdFx0Ly8gT3B0aW1pemF0aW9uIFx1NjNEMlx1NEVGNlx1OTcwMFx1ODk4MSBwYWdlLmpzb24gXHU2NTg3XHU0RUY2XHVGRjBDXHU2NTQ1XHU1RTk0XHU1NzI4IFVuaVBhZ2VzIFx1NjNEMlx1NEVGNlx1NEU0Qlx1NTQwRVx1NjI2N1x1ODg0Q1xyXG5cdFx0XHRPcHRpbWl6YXRpb24oe1xyXG5cdFx0XHRcdGVuYWJsZToge1xyXG5cdFx0XHRcdFx0J29wdGltaXphdGlvbic6IHRydWUsXHJcblx0XHRcdFx0XHQnYXN5bmMtaW1wb3J0JzogdHJ1ZSxcclxuXHRcdFx0XHRcdCdhc3luYy1jb21wb25lbnQnOiB0cnVlLFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0ZHRzOiB7XHJcblx0XHRcdFx0XHRiYXNlOiAnc3JjL3R5cGVzJyxcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGxvZ2dlcjogZmFsc2UsXHJcblx0XHRcdH0pLFxyXG5cclxuXHRcdFx0Vml0ZVJlc3RhcnQoe1xyXG5cdFx0XHRcdC8vIFx1OTAxQVx1OEZDN1x1OEZEOVx1NEUyQVx1NjNEMlx1NEVGNlx1RkYwQ1x1NTcyOFx1NEZFRVx1NjUzOXZpdGUuY29uZmlnLmpzXHU2NTg3XHU0RUY2XHU1MjE5XHU0RTBEXHU5NzAwXHU4OTgxXHU5MUNEXHU2NUIwXHU4RkQwXHU4ODRDXHU0RTVGXHU3NTFGXHU2NTQ4XHU5MTREXHU3RjZFXHJcblx0XHRcdFx0cmVzdGFydDogWyd2aXRlLmNvbmZpZy5qcyddLFxyXG5cdFx0XHR9KSxcclxuXHRcdFx0Ly8gaDVcdTczQUZcdTU4ODNcdTU4OUVcdTUyQTAgQlVJTERfVElNRSBcdTU0OEMgQlVJTERfQlJBTkNIXHJcblx0XHRcdFVOSV9QTEFURk9STSA9PT0gJ2g1JyAmJiB7XHJcblx0XHRcdFx0bmFtZTogJ2h0bWwtdHJhbnNmb3JtJyxcclxuXHRcdFx0XHR0cmFuc2Zvcm1JbmRleEh0bWwoaHRtbCkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIGh0bWwucmVwbGFjZSgnJUJVSUxEX1RJTUUlJywgZGF5anMoKS5mb3JtYXQoJ1lZWVktTU0tREQgSEg6bW06c3MnKSlcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyBcdTYyNTNcdTUzMDVcdTUyMDZcdTY3OTBcdTYzRDJcdTRFRjZcdUZGMENoNSArIFx1NzUxRlx1NEVBN1x1NzNBRlx1NTg4M1x1NjI0RFx1NUYzOVx1NTFGQVxyXG5cdFx0XHRVTklfUExBVEZPUk0gPT09ICdoNSdcclxuXHRcdFx0JiYgbW9kZSA9PT0gJ3Byb2R1Y3Rpb24nXHJcblx0XHRcdCYmIHZpc3VhbGl6ZXIoe1xyXG5cdFx0XHRcdGZpbGVuYW1lOiAnLi9ub2RlX21vZHVsZXMvLmNhY2hlL3Zpc3VhbGl6ZXIvc3RhdHMuaHRtbCcsXHJcblx0XHRcdFx0b3BlbjogdHJ1ZSxcclxuXHRcdFx0XHRnemlwU2l6ZTogdHJ1ZSxcclxuXHRcdFx0XHRicm90bGlTaXplOiB0cnVlLFxyXG5cdFx0XHR9KSxcclxuXHRcdFx0Ly8gXHU1M0VBXHU2NzA5XHU1NzI4IGFwcCBcdTVFNzNcdTUzRjBcdTY1RjZcdTYyNERcdTU0MkZcdTc1MjggY29weU5hdGl2ZVJlcyBcdTYzRDJcdTRFRjZcclxuXHRcdFx0Ly8gVU5JX1BMQVRGT1JNID09PSAnYXBwJyAmJiBjb3B5TmF0aXZlUmVzKCksXHJcblx0XHRcdENvbXBvbmVudHMoe1xyXG5cdFx0XHRcdGV4dGVuc2lvbnM6IFsndnVlJ10sXHJcblx0XHRcdFx0ZGVlcDogdHJ1ZSwgLy8gXHU2NjJGXHU1NDI2XHU5MDEyXHU1RjUyXHU2MjZCXHU2M0NGXHU1QjUwXHU3NkVFXHU1RjU1XHVGRjBDXHJcblx0XHRcdFx0ZGlyZWN0b3J5QXNOYW1lc3BhY2U6IGZhbHNlLCAvLyBcdTY2MkZcdTU0MjZcdTYyOEFcdTc2RUVcdTVGNTVcdTU0MERcdTRGNUNcdTRFM0FcdTU0N0RcdTU0MERcdTdBN0FcdTk1RjRcdTUyNERcdTdGMDBcdUZGMEN0cnVlIFx1NjVGNlx1N0VDNFx1NEVGNlx1NTQwRFx1NEUzQSBcdTc2RUVcdTVGNTVcdTU0MEQrXHU3RUM0XHU0RUY2XHU1NDBEXHVGRjBDXHJcblx0XHRcdFx0ZHRzOiAnc3JjL3R5cGVzL2NvbXBvbmVudHMuZC50cycsIC8vIFx1ODFFQVx1NTJBOFx1NzUxRlx1NjIxMFx1NzY4NFx1N0VDNFx1NEVGNlx1N0M3Qlx1NTc4Qlx1NThGMFx1NjYwRVx1NjU4N1x1NEVGNlx1OERFRlx1NUY4NFx1RkYwOFx1NzUyOFx1NEU4RSBUeXBlU2NyaXB0IFx1NjUyRlx1NjMwMVx1RkYwOVxyXG5cdFx0XHR9KSxcclxuXHRcdFx0VW5pKCksXHJcblx0XHRdLFxyXG5cdFx0ZGVmaW5lOiB7XHJcblx0XHRcdF9fVU5JX1BMQVRGT1JNX186IEpTT04uc3RyaW5naWZ5KFVOSV9QTEFURk9STSksXHJcblx0XHRcdF9fVklURV9BUFBfUFJPWFlfXzogSlNPTi5zdHJpbmdpZnkoVklURV9BUFBfUFJPWFkpLFxyXG5cdFx0fSxcclxuXHRcdGNzczoge1xyXG5cdFx0XHRwb3N0Y3NzOiB7XHJcblx0XHRcdFx0cGx1Z2luczogW1xyXG5cdFx0XHRcdFx0Ly8gYXV0b3ByZWZpeGVyKHtcclxuXHRcdFx0XHRcdC8vICAgLy8gXHU2MzA3XHU1QjlBXHU3NkVFXHU2ODA3XHU2RDRGXHU4OUM4XHU1NjY4XHJcblx0XHRcdFx0XHQvLyAgIG92ZXJyaWRlQnJvd3NlcnNsaXN0OiBbJz4gMSUnLCAnbGFzdCAyIHZlcnNpb25zJ10sXHJcblx0XHRcdFx0XHQvLyB9KSxcclxuXHRcdFx0XHRdLFxyXG5cdFx0XHR9LFxyXG5cdFx0fSxcclxuXHJcblx0XHRyZXNvbHZlOiB7XHJcblx0XHRcdGFsaWFzOiB7XHJcblx0XHRcdFx0J0AnOiBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJy4vc3JjJyksXHJcblx0XHRcdFx0J0BpbWcnOiBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJy4vc3JjL3N0YXRpYy9pbWFnZXMnKSxcclxuXHRcdFx0fSxcclxuXHRcdH0sXHJcblx0XHRzZXJ2ZXI6IHtcclxuXHRcdFx0aG9zdDogJzAuMC4wLjAnLFxyXG5cdFx0XHRobXI6IHRydWUsXHJcblx0XHRcdHBvcnQ6IE51bWJlci5wYXJzZUludChWSVRFX0FQUF9QT1JULCAxMCksXHJcblx0XHRcdC8vIFx1NEVDNSBINSBcdTdBRUZcdTc1MUZcdTY1NDhcdUZGMENcdTUxNzZcdTRFRDZcdTdBRUZcdTRFMERcdTc1MUZcdTY1NDhcdUZGMDhcdTUxNzZcdTRFRDZcdTdBRUZcdThENzBidWlsZFx1RkYwQ1x1NEUwRFx1OEQ3MGRldlNlcnZlcilcclxuXHRcdFx0cHJveHk6IEpTT04ucGFyc2UoVklURV9BUFBfUFJPWFkpXHJcblx0XHRcdFx0PyB7XHJcblx0XHRcdFx0XHRbVklURV9BUFBfUFJPWFlfUFJFRklYXToge1xyXG5cdFx0XHRcdFx0XHR0YXJnZXQ6IFZJVEVfU0VSVkVSX0JBU0VVUkwsXHJcblx0XHRcdFx0XHRcdGNoYW5nZU9yaWdpbjogdHJ1ZSxcclxuXHRcdFx0XHRcdFx0cmV3cml0ZTogcGF0aCA9PiBwYXRoLnJlcGxhY2UobmV3IFJlZ0V4cChgXiR7VklURV9BUFBfUFJPWFlfUFJFRklYfWApLCAnJyksXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQ6IHVuZGVmaW5lZCxcclxuXHRcdH0sXHJcblx0XHRlc2J1aWxkOiB7XHJcblx0XHRcdGRyb3A6IFZJVEVfREVMRVRFX0NPTlNPTEUgPT09ICd0cnVlJyA/IFsnY29uc29sZScsICdkZWJ1Z2dlciddIDogWydkZWJ1Z2dlciddLFxyXG5cdFx0fSxcclxuXHRcdGJ1aWxkOiB7XHJcblx0XHRcdHNvdXJjZW1hcDogZmFsc2UsXHJcblx0XHRcdC8vIFx1NjVCOVx1NEZCRlx1OTc1RWg1XHU3QUVGXHU4QzAzXHU4QkQ1XHJcblx0XHRcdC8vIHNvdXJjZW1hcDogVklURV9TSE9XX1NPVVJDRU1BUCA9PT0gJ3RydWUnLCAvLyBcdTlFRDhcdThCQTRcdTY2MkZmYWxzZVxyXG5cdFx0XHR0YXJnZXQ6ICdlczYnLFxyXG5cdFx0XHQvLyBcdTVGMDBcdTUzRDFcdTczQUZcdTU4ODNcdTRFMERcdTc1MjhcdTUzOEJcdTdGMjlcclxuXHRcdFx0bWluaWZ5OiBtb2RlID09PSAnZGV2ZWxvcG1lbnQnID8gZmFsc2UgOiAnZXNidWlsZCcsXHJcblxyXG5cdFx0fSxcclxuXHR9KVxyXG59XHJcbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBaVIsT0FBTyxVQUFVO0FBQ2xTLE9BQU8sYUFBYTtBQUNwQixPQUFPLFNBQVM7QUFDaEIsT0FBTyxnQkFBZ0I7QUFFdkIsT0FBTyxnQkFBZ0I7QUFFdkIsT0FBTyxpQkFBaUI7QUFFeEIsT0FBTyxjQUFjO0FBR3JCLE9BQU8saUJBQWlCO0FBS3hCLE9BQU8sa0JBQWtCO0FBQ3pCLE9BQU8sV0FBVztBQUNsQixTQUFTLGtCQUFrQjtBQUMzQixPQUFPLFlBQVk7QUFDbkIsT0FBTyxnQkFBZ0I7QUFDdkIsU0FBUyxjQUFjLGVBQWU7QUFDdEMsT0FBTyxpQkFBaUI7QUFHeEIsSUFBTyxzQkFBUSxDQUFDLEVBQUUsU0FBUyxLQUFLLE1BQU07QUFNckMsVUFBUSxJQUFJLHFCQUFxQixTQUFTLElBQUk7QUFTOUMsUUFBTSxFQUFFLGFBQWEsSUFBSSxRQUFRO0FBQ2pDLFVBQVEsSUFBSSxvQkFBb0IsWUFBWTtBQUU1QyxRQUFNLE1BQU0sUUFBUSxNQUFNLEtBQUssUUFBUSxRQUFRLElBQUksR0FBRyxLQUFLLENBQUM7QUFDNUQsUUFBTTtBQUFBLElBQ0w7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNELElBQUk7QUFDSixVQUFRLElBQUksb0NBQWdCLEdBQUc7QUFFL0IsU0FBTyxhQUFhO0FBQUEsSUFDbkIsUUFBUTtBQUFBO0FBQUEsSUFDUixNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsTUFDUixTQUFTO0FBQUEsUUFDUixTQUFTLENBQUMsdUJBQXVCO0FBQUE7QUFBQTtBQUFBLFFBR2pDLGFBQWEsQ0FBQyxZQUFZO0FBQUE7QUFBQSxRQUMxQixLQUFLO0FBQUEsTUFDTixDQUFDO0FBQUEsTUFDRCxXQUFXO0FBQUEsTUFDWCxZQUFZO0FBQUEsTUFDWixZQUFZO0FBQUE7QUFBQSxNQUVaO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFJQyxNQUFNO0FBQUEsUUFDTixlQUFlLFFBQVE7QUFDdEIsZ0JBQU0sU0FBUyxPQUFPLFFBQVEsS0FBSyxPQUFLLEVBQUUsU0FBUyxVQUFVO0FBQzdELGNBQUksVUFBVSxPQUFPLE9BQU8sT0FBTyxJQUFJLFNBQVM7QUFDL0MsbUJBQU8sSUFBSSxRQUFRLGtCQUFrQjtBQUFBLFVBQ3RDO0FBQUEsUUFDRDtBQUFBLE1BQ0Q7QUFBQSxNQUNBLE9BQU87QUFBQSxNQUNQLFdBQVc7QUFBQSxRQUNWLFNBQVMsQ0FBQyxPQUFPLFNBQVM7QUFBQSxRQUMxQixLQUFLO0FBQUEsUUFDTCxNQUFNLENBQUMsV0FBVztBQUFBO0FBQUEsUUFDbEIsYUFBYTtBQUFBO0FBQUEsTUFDZCxDQUFDO0FBQUE7QUFBQSxNQUVELGFBQWE7QUFBQSxRQUNaLFFBQVE7QUFBQSxVQUNQLGdCQUFnQjtBQUFBLFVBQ2hCLGdCQUFnQjtBQUFBLFVBQ2hCLG1CQUFtQjtBQUFBLFFBQ3BCO0FBQUEsUUFDQSxLQUFLO0FBQUEsVUFDSixNQUFNO0FBQUEsUUFDUDtBQUFBLFFBQ0EsUUFBUTtBQUFBLE1BQ1QsQ0FBQztBQUFBLE1BRUQsWUFBWTtBQUFBO0FBQUEsUUFFWCxTQUFTLENBQUMsZ0JBQWdCO0FBQUEsTUFDM0IsQ0FBQztBQUFBO0FBQUEsTUFFRCxpQkFBaUIsUUFBUTtBQUFBLFFBQ3hCLE1BQU07QUFBQSxRQUNOLG1CQUFtQixNQUFNO0FBQ3hCLGlCQUFPLEtBQUssUUFBUSxnQkFBZ0IsTUFBTSxFQUFFLE9BQU8scUJBQXFCLENBQUM7QUFBQSxRQUMxRTtBQUFBLE1BQ0Q7QUFBQTtBQUFBLE1BRUEsaUJBQWlCLFFBQ2QsU0FBUyxnQkFDVCxXQUFXO0FBQUEsUUFDYixVQUFVO0FBQUEsUUFDVixNQUFNO0FBQUEsUUFDTixVQUFVO0FBQUEsUUFDVixZQUFZO0FBQUEsTUFDYixDQUFDO0FBQUE7QUFBQTtBQUFBLE1BR0QsV0FBVztBQUFBLFFBQ1YsWUFBWSxDQUFDLEtBQUs7QUFBQSxRQUNsQixNQUFNO0FBQUE7QUFBQSxRQUNOLHNCQUFzQjtBQUFBO0FBQUEsUUFDdEIsS0FBSztBQUFBO0FBQUEsTUFDTixDQUFDO0FBQUEsTUFDRCxJQUFJO0FBQUEsSUFDTDtBQUFBLElBQ0EsUUFBUTtBQUFBLE1BQ1Asa0JBQWtCLEtBQUssVUFBVSxZQUFZO0FBQUEsTUFDN0Msb0JBQW9CLEtBQUssVUFBVSxjQUFjO0FBQUEsSUFDbEQ7QUFBQSxJQUNBLEtBQUs7QUFBQSxNQUNKLFNBQVM7QUFBQSxRQUNSLFNBQVM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBS1Q7QUFBQSxNQUNEO0FBQUEsSUFDRDtBQUFBLElBRUEsU0FBUztBQUFBLE1BQ1IsT0FBTztBQUFBLFFBQ04sS0FBSyxLQUFLLEtBQUssUUFBUSxJQUFJLEdBQUcsT0FBTztBQUFBLFFBQ3JDLFFBQVEsS0FBSyxLQUFLLFFBQVEsSUFBSSxHQUFHLHFCQUFxQjtBQUFBLE1BQ3ZEO0FBQUEsSUFDRDtBQUFBLElBQ0EsUUFBUTtBQUFBLE1BQ1AsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsTUFBTSxPQUFPLFNBQVMsZUFBZSxFQUFFO0FBQUE7QUFBQSxNQUV2QyxPQUFPLEtBQUssTUFBTSxjQUFjLElBQzdCO0FBQUEsUUFDRCxDQUFDLHFCQUFxQixHQUFHO0FBQUEsVUFDeEIsUUFBUTtBQUFBLFVBQ1IsY0FBYztBQUFBLFVBQ2QsU0FBUyxDQUFBQSxVQUFRQSxNQUFLLFFBQVEsSUFBSSxPQUFPLElBQUkscUJBQXFCLEVBQUUsR0FBRyxFQUFFO0FBQUEsUUFDMUU7QUFBQSxNQUNELElBQ0U7QUFBQSxJQUNKO0FBQUEsSUFDQSxTQUFTO0FBQUEsTUFDUixNQUFNLHdCQUF3QixTQUFTLENBQUMsV0FBVyxVQUFVLElBQUksQ0FBQyxVQUFVO0FBQUEsSUFDN0U7QUFBQSxJQUNBLE9BQU87QUFBQSxNQUNOLFdBQVc7QUFBQTtBQUFBO0FBQUEsTUFHWCxRQUFRO0FBQUE7QUFBQSxNQUVSLFFBQVEsU0FBUyxnQkFBZ0IsUUFBUTtBQUFBLElBRTFDO0FBQUEsRUFDRCxDQUFDO0FBQ0Y7IiwKICAibmFtZXMiOiBbInBhdGgiXQp9Cg==