From 626bb5f9f665e7d7e038733762b81394c70a7b33 Mon Sep 17 00:00:00 2001 From: awei <804636497@qq.com> Date: Sat, 24 Feb 2024 14:10:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=B8=AA=E4=BA=BA=E4=B8=AD?= =?UTF-8?q?=E5=BF=83=E3=80=81=E6=8A=A5=E5=90=8D=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/signUp/components/SignForm.vue | 22 ++- src/views/signUp/index.vue | 1 - src/views/user/index.vue | 25 ++- ....timestamp-1708754004762-94ff511867383.mjs | 164 ++++++++++++++++++ 4 files changed, 205 insertions(+), 7 deletions(-) create mode 100644 vite.config.ts.timestamp-1708754004762-94ff511867383.mjs diff --git a/src/views/signUp/components/SignForm.vue b/src/views/signUp/components/SignForm.vue index 1c461af..8525ad3 100644 --- a/src/views/signUp/components/SignForm.vue +++ b/src/views/signUp/components/SignForm.vue @@ -1,9 +1,10 @@ @@ -56,8 +70,8 @@ async function sendSmsHandler() { diff --git a/src/views/signUp/index.vue b/src/views/signUp/index.vue index 7c9cf0c..cfdd1c3 100644 --- a/src/views/signUp/index.vue +++ b/src/views/signUp/index.vue @@ -15,7 +15,6 @@ function checkIsApply() { const miceLink = getUrlMiceLink() openidIsApply({ openId: userStore.wxInfo.openid, miceLink }).then((res: any) => { userIsApply.value = res - if (res) { router.replace(`/user/${miceLink}`) } diff --git a/src/views/user/index.vue b/src/views/user/index.vue index 3cdb090..a495b7e 100644 --- a/src/views/user/index.vue +++ b/src/views/user/index.vue @@ -3,13 +3,34 @@ import vueQr from 'vue-qr/src/packages/vue-qr.vue' import useMiceStore from '@/stores/modules/mice' import useUserStore from '@/stores/modules/user' import SignForm from '@/views/signUp/components/SignForm.vue' +import { openidIsApply } from '@/api/weixin' +import router from '@/router' const userStore = useUserStore() const miceStore = useMiceStore() -const userApplyInfo = ref({}) +const userApplyInfo = ref({ + auditStatus: 3, +}) + +const userIsApply = ref(false) + +// 验证用户是否已经报名 +function checkIsApply() { + const miceLink = getUrlMiceLink() + openidIsApply({ openId: userStore.wxInfo.openid, miceLink }).then((res: any) => { + userIsApply.value = res + if (res) { + router.replace(`/user/${miceLink}`) + } + else { + router.replace(`/signUp/${miceLink}`) + } + }) +} onMounted(() => { + checkIsApply() userStore.getApplyUserInfo(getUrlMiceLink()).then((res) => { userApplyInfo.value = res }) @@ -58,7 +79,7 @@ onMounted(() => {
签到二维码 - +
出示二维码,签到更方便
diff --git a/vite.config.ts.timestamp-1708754004762-94ff511867383.mjs b/vite.config.ts.timestamp-1708754004762-94ff511867383.mjs new file mode 100644 index 0000000..51e4980 --- /dev/null +++ b/vite.config.ts.timestamp-1708754004762-94ff511867383.mjs @@ -0,0 +1,164 @@ +// vite.config.ts +import path2 from "node:path"; +import process from "node:process"; +import { loadEnv } from "file:///E:/web_project/sn-huiyi-h5/node_modules/.pnpm/vite@5.0.12_@types+node@20.11.16_less@4.2.0_terser@5.27.0/node_modules/vite/dist/node/index.js"; +import viewport from "file:///E:/web_project/sn-huiyi-h5/node_modules/.pnpm/postcss-mobile-forever@4.1.1/node_modules/postcss-mobile-forever/index.js"; +import autoprefixer from "file:///E:/web_project/sn-huiyi-h5/node_modules/.pnpm/autoprefixer@10.4.17/node_modules/autoprefixer/lib/autoprefixer.js"; + +// build/vite/index.ts +import vue from "file:///E:/web_project/sn-huiyi-h5/node_modules/.pnpm/@vitejs+plugin-vue@5.0.3_vite@5.0.12_vue@3.4.15/node_modules/@vitejs/plugin-vue/dist/index.mjs"; +import legacy from "file:///E:/web_project/sn-huiyi-h5/node_modules/.pnpm/@vitejs+plugin-legacy@5.3.0_terser@5.27.0_vite@5.0.12/node_modules/@vitejs/plugin-legacy/dist/index.mjs"; +import vueJsx from "file:///E:/web_project/sn-huiyi-h5/node_modules/.pnpm/@vitejs+plugin-vue-jsx@3.1.0_vite@5.0.12_vue@3.4.15/node_modules/@vitejs/plugin-vue-jsx/dist/index.mjs"; +import { visualizer } from "file:///E:/web_project/sn-huiyi-h5/node_modules/.pnpm/rollup-plugin-visualizer@5.12.0_rollup@4.9.6/node_modules/rollup-plugin-visualizer/dist/plugin/index.js"; +import Components from "file:///E:/web_project/sn-huiyi-h5/node_modules/.pnpm/unplugin-vue-components@0.26.0_rollup@4.9.6_vue@3.4.15/node_modules/unplugin-vue-components/dist/vite.js"; +import AutoImport from "file:///E:/web_project/sn-huiyi-h5/node_modules/.pnpm/unplugin-auto-import@0.17.5_@vueuse+core@10.7.2_rollup@4.9.6/node_modules/unplugin-auto-import/dist/vite.js"; +import VueRouter from "file:///E:/web_project/sn-huiyi-h5/node_modules/.pnpm/unplugin-vue-router@0.7.0_rollup@4.9.6_vue-router@4.2.5_vue@3.4.15/node_modules/unplugin-vue-router/dist/vite.mjs"; +import { VueRouterAutoImports } from "file:///E:/web_project/sn-huiyi-h5/node_modules/.pnpm/unplugin-vue-router@0.7.0_rollup@4.9.6_vue-router@4.2.5_vue@3.4.15/node_modules/unplugin-vue-router/dist/index.mjs"; +import { VantResolver } from "file:///E:/web_project/sn-huiyi-h5/node_modules/.pnpm/unplugin-vue-components@0.26.0_rollup@4.9.6_vue@3.4.15/node_modules/unplugin-vue-components/dist/resolvers.js"; +import { unheadVueComposablesImports } from "file:///E:/web_project/sn-huiyi-h5/node_modules/.pnpm/@unhead+vue@1.8.10_vue@3.4.15/node_modules/@unhead/vue/dist/index.mjs"; +import VueDevTools from "file:///E:/web_project/sn-huiyi-h5/node_modules/.pnpm/vite-plugin-vue-devtools@7.0.14_rollup@4.9.6_vite@5.0.12/node_modules/vite-plugin-vue-devtools/dist/vite.mjs"; +import mockDevServerPlugin from "file:///E:/web_project/sn-huiyi-h5/node_modules/.pnpm/vite-plugin-mock-dev-server@1.4.7_rollup@4.9.6_vite@5.0.12/node_modules/vite-plugin-mock-dev-server/dist/index.js"; +import UnoCSS from "file:///E:/web_project/sn-huiyi-h5/node_modules/.pnpm/unocss@0.58.5_rollup@4.9.6_vite@5.0.12/node_modules/unocss/dist/vite.mjs"; + +// build/vite/vconsole.ts +import path from "node:path"; +import { viteVConsole } from "file:///E:/web_project/sn-huiyi-h5/node_modules/.pnpm/vite-plugin-vconsole@2.1.1/node_modules/vite-plugin-vconsole/dist/main.mjs"; +function createViteVConsole() { + return viteVConsole({ + entry: [path.resolve("src/main.ts")], + enabled: false, + config: { + maxLogNumber: 1e3, + theme: "light" + }, + // https://github.com/vadxq/vite-plugin-vconsole/issues/21 + // dynamicConfig: { + // theme: `document.documentElement.classList.contains('dark') ? 'dark' : 'light'`, + // }, + eventListener: ` + const targetElement = document.querySelector('html'); // \u62E9\u8981\u76D1\u542C\u7684\u5143\u7D20 + const observerOptions = { + attributes: true, // \u76D1\u542C\u5C5E\u6027\u53D8\u5316 + attributeFilter: ['class'] // \u53EA\u76D1\u542Cclass\u5C5E\u6027\u53D8\u5316 + }; + + // \u5B9A\u4E49\u56DE\u8C03\u51FD\u6570\u6765\u5904\u7406\u89C2\u5BDF\u5230\u7684\u53D8\u5316 + function handleAttributeChange(mutationsList) { + for(let mutation of mutationsList) { + if (mutation.type === 'attributes' && mutation.attributeName === 'class') { + if (window && window.vConsole) { + window.vConsole.dynamicChange.value = new Date().getTime(); + } + } + } + } + + // \u521B\u5EFA\u89C2\u5BDF\u8005\u5B9E\u4F8B\u5E76\u4F20\u5165\u56DE\u8C03\u51FD\u6570 + const observer = new MutationObserver(handleAttributeChange); + + // \u5F00\u59CB\u89C2\u5BDF\u76EE\u6807\u5143\u7D20 + observer.observe(targetElement, observerOptions); + + // \u5F53\u4E0D\u518D\u9700\u8981\u89C2\u5BDF\u65F6\uFF0C\u505C\u6B62\u89C2\u5BDF + // observer.disconnect(); + ` + }); +} + +// build/vite/index.ts +function createVitePlugins() { + return [ + VueRouter({ + routesFolder: "src/views", + dts: "src/typed-router.d.ts" + }), + vue(), + vueJsx(), + visualizer(), + UnoCSS(), + mockDevServerPlugin(), + legacy({ + targets: ["defaults", "not IE 11"] + }), + Components({ + extensions: ["vue"], + resolvers: [VantResolver()], + include: [/\.vue$/, /\.vue\?vue/], + dts: "src/components.d.ts" + }), + AutoImport({ + include: [ + /\.[tj]sx?$/, + /\.vue$/, + /\.vue\?vue/ + ], + imports: [ + "vue", + "vitest", + "@vueuse/core", + VueRouterAutoImports, + { + "vue-router/auto": ["useLink"] + }, + unheadVueComposablesImports + ], + dts: "src/auto-imports.d.ts", + dirs: [ + "src/composables" + ] + }), + createViteVConsole(), + VueDevTools() + ]; +} + +// vite.config.ts +var __vite_injected_original_dirname = "E:\\web_project\\sn-huiyi-h5"; +var vite_config_default = ({ mode }) => { + const root = process.cwd(); + const env = loadEnv(mode, root); + return { + base: env.VITE_APP_PUBLIC_PATH, + plugins: createVitePlugins(), + server: { + host: true, + port: 3e3, + proxy: { + "/api": { + // 接口请求地址 + // target: 'http://localhost:8888/api', + target: "https://jihui.huiyipro.com/api", + changeOrigin: true, + rewrite: (path3) => path3.replace(/^\/api/, "") + } + } + }, + resolve: { + alias: { + "~@": path2.join(__vite_injected_original_dirname, "./src"), + "@": path2.join(__vite_injected_original_dirname, "./src"), + "~": path2.join(__vite_injected_original_dirname, "./src/assets") + } + }, + css: { + postcss: { + plugins: [ + autoprefixer(), + viewport({ + appSelector: "#app", + viewportWidth: 375, + maxDisplayWidth: 600 + }) + ] + } + }, + build: { + cssCodeSplit: false, + chunkSizeWarningLimit: 2048 + } + }; +}; +export { + vite_config_default as default +}; +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiLCAiYnVpbGQvdml0ZS9pbmRleC50cyIsICJidWlsZC92aXRlL3Zjb25zb2xlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRTpcXFxcd2ViX3Byb2plY3RcXFxcc24taHVpeWktaDVcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkU6XFxcXHdlYl9wcm9qZWN0XFxcXHNuLWh1aXlpLWg1XFxcXHZpdGUuY29uZmlnLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9FOi93ZWJfcHJvamVjdC9zbi1odWl5aS1oNS92aXRlLmNvbmZpZy50c1wiO2ltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2VzcydcbmltcG9ydCB7IGxvYWRFbnYgfSBmcm9tICd2aXRlJ1xuaW1wb3J0IHR5cGUgeyBDb25maWdFbnYsIFVzZXJDb25maWcgfSBmcm9tICd2aXRlJ1xuaW1wb3J0IHZpZXdwb3J0IGZyb20gJ3Bvc3Rjc3MtbW9iaWxlLWZvcmV2ZXInXG5pbXBvcnQgYXV0b3ByZWZpeGVyIGZyb20gJ2F1dG9wcmVmaXhlcidcbmltcG9ydCB7IGNyZWF0ZVZpdGVQbHVnaW5zIH0gZnJvbSAnLi9idWlsZC92aXRlJ1xuXG5leHBvcnQgZGVmYXVsdCAoeyBtb2RlIH06IENvbmZpZ0Vudik6IFVzZXJDb25maWcgPT4ge1xuICBjb25zdCByb290ID0gcHJvY2Vzcy5jd2QoKVxuICBjb25zdCBlbnYgPSBsb2FkRW52KG1vZGUsIHJvb3QpXG5cbiAgcmV0dXJuIHtcbiAgICBiYXNlOiBlbnYuVklURV9BUFBfUFVCTElDX1BBVEgsXG4gICAgcGx1Z2luczogY3JlYXRlVml0ZVBsdWdpbnMoKSxcblxuICAgIHNlcnZlcjoge1xuICAgICAgaG9zdDogdHJ1ZSxcbiAgICAgIHBvcnQ6IDMwMDAsXG4gICAgICBwcm94eToge1xuICAgICAgICAnL2FwaSc6IHtcbiAgICAgICAgICAvLyBcdTYzQTVcdTUzRTNcdThCRjdcdTZDNDJcdTU3MzBcdTU3NDBcbiAgICAgICAgICAvLyB0YXJnZXQ6ICdodHRwOi8vbG9jYWxob3N0Ojg4ODgvYXBpJyxcbiAgICAgICAgICB0YXJnZXQ6ICdodHRwczovL2ppaHVpLmh1aXlpcHJvLmNvbS9hcGknLFxuICAgICAgICAgIGNoYW5nZU9yaWdpbjogdHJ1ZSxcbiAgICAgICAgICByZXdyaXRlOiBwYXRoID0+IHBhdGgucmVwbGFjZSgvXlxcL2FwaS8sICcnKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIHJlc29sdmU6IHtcbiAgICAgIGFsaWFzOiB7XG4gICAgICAgICd+QCc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3NyYycpLFxuICAgICAgICAnQCc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3NyYycpLFxuICAgICAgICAnfic6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3NyYy9hc3NldHMnKSxcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIGNzczoge1xuICAgICAgcG9zdGNzczoge1xuICAgICAgICBwbHVnaW5zOiBbXG4gICAgICAgICAgYXV0b3ByZWZpeGVyKCksXG4gICAgICAgICAgdmlld3BvcnQoe1xuICAgICAgICAgICAgYXBwU2VsZWN0b3I6ICcjYXBwJyxcbiAgICAgICAgICAgIHZpZXdwb3J0V2lkdGg6IDM3NSxcbiAgICAgICAgICAgIG1heERpc3BsYXlXaWR0aDogNjAwLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9LFxuXG4gICAgYnVpbGQ6IHtcbiAgICAgIGNzc0NvZGVTcGxpdDogZmFsc2UsXG4gICAgICBjaHVua1NpemVXYXJuaW5nTGltaXQ6IDIwNDgsXG4gICAgfSxcbiAgfVxufVxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJFOlxcXFx3ZWJfcHJvamVjdFxcXFxzbi1odWl5aS1oNVxcXFxidWlsZFxcXFx2aXRlXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJFOlxcXFx3ZWJfcHJvamVjdFxcXFxzbi1odWl5aS1oNVxcXFxidWlsZFxcXFx2aXRlXFxcXGluZGV4LnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9FOi93ZWJfcHJvamVjdC9zbi1odWl5aS1oNS9idWlsZC92aXRlL2luZGV4LnRzXCI7aW1wb3J0IHZ1ZSBmcm9tICdAdml0ZWpzL3BsdWdpbi12dWUnXHJcbmltcG9ydCBsZWdhY3kgZnJvbSAnQHZpdGVqcy9wbHVnaW4tbGVnYWN5J1xyXG5pbXBvcnQgdnVlSnN4IGZyb20gJ0B2aXRlanMvcGx1Z2luLXZ1ZS1qc3gnXHJcbmltcG9ydCB7IHZpc3VhbGl6ZXIgfSBmcm9tICdyb2xsdXAtcGx1Z2luLXZpc3VhbGl6ZXInXHJcbmltcG9ydCBDb21wb25lbnRzIGZyb20gJ3VucGx1Z2luLXZ1ZS1jb21wb25lbnRzL3ZpdGUnXHJcbmltcG9ydCBBdXRvSW1wb3J0IGZyb20gJ3VucGx1Z2luLWF1dG8taW1wb3J0L3ZpdGUnXHJcbmltcG9ydCBWdWVSb3V0ZXIgZnJvbSAndW5wbHVnaW4tdnVlLXJvdXRlci92aXRlJ1xyXG5pbXBvcnQgeyBWdWVSb3V0ZXJBdXRvSW1wb3J0cyB9IGZyb20gJ3VucGx1Z2luLXZ1ZS1yb3V0ZXInXHJcbmltcG9ydCB7IFZhbnRSZXNvbHZlciB9IGZyb20gJ3VucGx1Z2luLXZ1ZS1jb21wb25lbnRzL3Jlc29sdmVycydcclxuaW1wb3J0IHsgdW5oZWFkVnVlQ29tcG9zYWJsZXNJbXBvcnRzIH0gZnJvbSAnQHVuaGVhZC92dWUnXHJcbmltcG9ydCBWdWVEZXZUb29scyBmcm9tICd2aXRlLXBsdWdpbi12dWUtZGV2dG9vbHMnXHJcbmltcG9ydCBtb2NrRGV2U2VydmVyUGx1Z2luIGZyb20gJ3ZpdGUtcGx1Z2luLW1vY2stZGV2LXNlcnZlcidcclxuaW1wb3J0IFVub0NTUyBmcm9tICd1bm9jc3Mvdml0ZSdcclxuaW1wb3J0IHsgY3JlYXRlVml0ZVZDb25zb2xlIH0gZnJvbSAnLi92Y29uc29sZSdcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVWaXRlUGx1Z2lucygpIHtcclxuICByZXR1cm4gW1xyXG4gICAgVnVlUm91dGVyKHtcclxuICAgICAgcm91dGVzRm9sZGVyOiAnc3JjL3ZpZXdzJyxcclxuICAgICAgZHRzOiAnc3JjL3R5cGVkLXJvdXRlci5kLnRzJyxcclxuICAgIH0pLFxyXG5cclxuICAgIHZ1ZSgpLFxyXG4gICAgdnVlSnN4KCksXHJcbiAgICB2aXN1YWxpemVyKCksXHJcbiAgICBVbm9DU1MoKSxcclxuICAgIG1vY2tEZXZTZXJ2ZXJQbHVnaW4oKSxcclxuXHJcbiAgICBsZWdhY3koe1xyXG4gICAgICB0YXJnZXRzOiBbJ2RlZmF1bHRzJywgJ25vdCBJRSAxMSddLFxyXG4gICAgfSksXHJcblxyXG4gICAgQ29tcG9uZW50cyh7XHJcbiAgICAgIGV4dGVuc2lvbnM6IFsndnVlJ10sXHJcbiAgICAgIHJlc29sdmVyczogW1ZhbnRSZXNvbHZlcigpXSxcclxuICAgICAgaW5jbHVkZTogWy9cXC52dWUkLywgL1xcLnZ1ZVxcP3Z1ZS9dLFxyXG4gICAgICBkdHM6ICdzcmMvY29tcG9uZW50cy5kLnRzJyxcclxuICAgIH0pLFxyXG5cclxuICAgIEF1dG9JbXBvcnQoe1xyXG4gICAgICBpbmNsdWRlOiBbXHJcbiAgICAgICAgL1xcLlt0al1zeD8kLyxcclxuICAgICAgICAvXFwudnVlJC8sXHJcbiAgICAgICAgL1xcLnZ1ZVxcP3Z1ZS8sXHJcbiAgICAgIF0sXHJcbiAgICAgIGltcG9ydHM6IFtcclxuICAgICAgICAndnVlJyxcclxuICAgICAgICAndml0ZXN0JyxcclxuICAgICAgICAnQHZ1ZXVzZS9jb3JlJyxcclxuICAgICAgICBWdWVSb3V0ZXJBdXRvSW1wb3J0cyxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAndnVlLXJvdXRlci9hdXRvJzogWyd1c2VMaW5rJ10sXHJcbiAgICAgICAgfSxcclxuICAgICAgICB1bmhlYWRWdWVDb21wb3NhYmxlc0ltcG9ydHMsXHJcbiAgICAgIF0sXHJcbiAgICAgIGR0czogJ3NyYy9hdXRvLWltcG9ydHMuZC50cycsXHJcbiAgICAgIGRpcnM6IFtcclxuICAgICAgICAnc3JjL2NvbXBvc2FibGVzJyxcclxuICAgICAgXSxcclxuICAgIH0pLFxyXG5cclxuICAgIGNyZWF0ZVZpdGVWQ29uc29sZSgpLFxyXG5cclxuICAgIFZ1ZURldlRvb2xzKCksXHJcbiAgXVxyXG59XHJcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRTpcXFxcd2ViX3Byb2plY3RcXFxcc24taHVpeWktaDVcXFxcYnVpbGRcXFxcdml0ZVwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRTpcXFxcd2ViX3Byb2plY3RcXFxcc24taHVpeWktaDVcXFxcYnVpbGRcXFxcdml0ZVxcXFx2Y29uc29sZS50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRTovd2ViX3Byb2plY3Qvc24taHVpeWktaDUvYnVpbGQvdml0ZS92Y29uc29sZS50c1wiO2ltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCdcclxuaW1wb3J0IHsgdml0ZVZDb25zb2xlIH0gZnJvbSAndml0ZS1wbHVnaW4tdmNvbnNvbGUnXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVml0ZVZDb25zb2xlKCkge1xyXG4gIHJldHVybiB2aXRlVkNvbnNvbGUoe1xyXG4gICAgZW50cnk6IFtwYXRoLnJlc29sdmUoJ3NyYy9tYWluLnRzJyldLFxyXG4gICAgZW5hYmxlZDogZmFsc2UsXHJcbiAgICBjb25maWc6IHtcclxuICAgICAgbWF4TG9nTnVtYmVyOiAxMDAwLFxyXG4gICAgICB0aGVtZTogJ2xpZ2h0JyxcclxuICAgIH0sXHJcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdmFkeHEvdml0ZS1wbHVnaW4tdmNvbnNvbGUvaXNzdWVzLzIxXHJcbiAgICAvLyBkeW5hbWljQ29uZmlnOiB7XHJcbiAgICAvLyAgIHRoZW1lOiBgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnZGFyaycpID8gJ2RhcmsnIDogJ2xpZ2h0J2AsXHJcbiAgICAvLyB9LFxyXG4gICAgZXZlbnRMaXN0ZW5lcjogYFxyXG4gICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaHRtbCcpOyAvLyBcdTYyRTlcdTg5ODFcdTc2RDFcdTU0MkNcdTc2ODRcdTUxNDNcdTdEMjBcclxuICAgICAgY29uc3Qgb2JzZXJ2ZXJPcHRpb25zID0ge1xyXG4gICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsIC8vIFx1NzZEMVx1NTQyQ1x1NUM1RVx1NjAyN1x1NTNEOFx1NTMxNlxyXG4gICAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydjbGFzcyddIC8vIFx1NTNFQVx1NzZEMVx1NTQyQ2NsYXNzXHU1QzVFXHU2MDI3XHU1M0Q4XHU1MzE2XHJcbiAgICAgIH07XHJcblxyXG4gICAgICAvLyBcdTVCOUFcdTRFNDlcdTU2REVcdThDMDNcdTUxRkRcdTY1NzBcdTY3NjVcdTU5MDRcdTc0MDZcdTg5QzJcdTVCREZcdTUyMzBcdTc2ODRcdTUzRDhcdTUzMTZcclxuICAgICAgZnVuY3Rpb24gaGFuZGxlQXR0cmlidXRlQ2hhbmdlKG11dGF0aW9uc0xpc3QpIHtcclxuICAgICAgICBmb3IobGV0IG11dGF0aW9uIG9mIG11dGF0aW9uc0xpc3QpIHtcclxuICAgICAgICAgIGlmIChtdXRhdGlvbi50eXBlID09PSAnYXR0cmlidXRlcycgJiYgbXV0YXRpb24uYXR0cmlidXRlTmFtZSA9PT0gJ2NsYXNzJykge1xyXG4gICAgICAgICAgICBpZiAod2luZG93ICYmIHdpbmRvdy52Q29uc29sZSkge1xyXG4gICAgICAgICAgICAgIHdpbmRvdy52Q29uc29sZS5keW5hbWljQ2hhbmdlLnZhbHVlID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFx1NTIxQlx1NUVGQVx1ODlDMlx1NUJERlx1ODAwNVx1NUI5RVx1NEY4Qlx1NUU3Nlx1NEYyMFx1NTE2NVx1NTZERVx1OEMwM1x1NTFGRFx1NjU3MFxyXG4gICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGhhbmRsZUF0dHJpYnV0ZUNoYW5nZSk7XHJcblxyXG4gICAgICAvLyBcdTVGMDBcdTU5Q0JcdTg5QzJcdTVCREZcdTc2RUVcdTY4MDdcdTUxNDNcdTdEMjBcclxuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0YXJnZXRFbGVtZW50LCBvYnNlcnZlck9wdGlvbnMpO1xyXG5cclxuICAgICAgLy8gXHU1RjUzXHU0RTBEXHU1MThEXHU5NzAwXHU4OTgxXHU4OUMyXHU1QkRGXHU2NUY2XHVGRjBDXHU1MDVDXHU2QjYyXHU4OUMyXHU1QkRGXHJcbiAgICAgIC8vIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcclxuICAgIGAsXHJcbiAgfSlcclxufVxyXG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQXNRLE9BQU9BLFdBQVU7QUFDdlIsT0FBTyxhQUFhO0FBQ3BCLFNBQVMsZUFBZTtBQUV4QixPQUFPLGNBQWM7QUFDckIsT0FBTyxrQkFBa0I7OztBQ0xzUSxPQUFPLFNBQVM7QUFDL1MsT0FBTyxZQUFZO0FBQ25CLE9BQU8sWUFBWTtBQUNuQixTQUFTLGtCQUFrQjtBQUMzQixPQUFPLGdCQUFnQjtBQUN2QixPQUFPLGdCQUFnQjtBQUN2QixPQUFPLGVBQWU7QUFDdEIsU0FBUyw0QkFBNEI7QUFDckMsU0FBUyxvQkFB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