diff --git a/package.json b/package.json index 1b66a7f..624fd56 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@lambdatest/smartui-cli", - "version": "4.1.71", + "version": "5.0.0-unified.2", "description": "A command line interface (CLI) to run SmartUI tests on LambdaTest", "files": [ "dist/**/*" @@ -24,26 +24,37 @@ "license": "MIT", "dependencies": { "@lambdatest/node-tunnel": "^4.0.9", - "@playwright/browser-chromium": "^1.47.2", - "@playwright/browser-firefox": "^1.47.2", - "@playwright/browser-webkit": "^1.47.2", - "@playwright/test": "^1.47.2", + "@playwright/browser-chromium": "~1.54.1", + "@playwright/browser-firefox": "~1.54.1", + "@playwright/browser-webkit": "~1.54.1", + "@playwright/test": "~1.54.1", "@types/cross-spawn": "^6.0.4", "@types/json-stringify-safe": "^5.0.3", "@types/node": "^20.8.9", "@types/which": "^3.0.2", "ajv": "^8.12.0", "ajv-errors": "^3.0.0", + "archiver": "^5.3.1", "axios": "^1.12.0", + "boxen": "^5.1.2", "chalk": "^4.1.2", + "cli-table3": "^0.6.3", "commander": "^11.1.0", "cross-spawn": "^7.0.6", "fastify": "^4.29.1", + "figlet": "^1.7.0", "form-data": "^4.0.4", + "gradient-string": "^2.0.2", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "jsdom": "^21.1.0", "json-stringify-safe": "^5.0.1", "listr2": "^7.0.1", + "log-symbols": "^4.1.0", "node-cache": "^5.1.2", + "ora": "^5.4.1", "postcss": "^8.5.6", + "puppeteer": "^19.5.2", "sharp": "^0.33.4", "uuid": "^11.0.3", "which": "^4.0.0", @@ -52,9 +63,23 @@ "overrides": { "simple-swizzle": "0.2.2" }, + "pnpm": { + "onlyBuiltDependencies": [ + "@playwright/browser-chromium", + "@playwright/browser-firefox", + "@playwright/browser-webkit", + "esbuild", + "puppeteer", + "sharp" + ] + }, "devDependencies": { + "@types/archiver": "^5.3.4", "find-free-port": "^2.0.0", - "typescript": "^5.3.2", - "tsup": "^8.5.1" + "tsup": "^8.5.1", + "typescript": "^5.3.2" + }, + "engines": { + "node": ">=20.3" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b49e672..32656fd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,21 +8,27 @@ importers: .: dependencies: + '@lambdatest/node-tunnel': + specifier: ^4.0.9 + version: 4.0.11 '@playwright/browser-chromium': - specifier: ^1.47.2 - version: 1.47.2 + specifier: ~1.54.1 + version: 1.54.2 '@playwright/browser-firefox': - specifier: ^1.47.2 - version: 1.47.2 + specifier: ~1.54.1 + version: 1.54.2 '@playwright/browser-webkit': - specifier: ^1.47.2 - version: 1.47.2 + specifier: ~1.54.1 + version: 1.54.2 '@playwright/test': - specifier: ^1.47.2 - version: 1.47.2 + specifier: ~1.54.1 + version: 1.54.2 '@types/cross-spawn': specifier: ^6.0.4 version: 6.0.5 + '@types/json-stringify-safe': + specifier: ^5.0.3 + version: 5.0.3 '@types/node': specifier: ^20.8.9 version: 20.9.0 @@ -35,33 +41,75 @@ importers: ajv-errors: specifier: ^3.0.0 version: 3.0.0(ajv@8.12.0) + archiver: + specifier: ^5.3.1 + version: 5.3.2 axios: - specifier: ^1.6.0 - version: 1.6.2 + specifier: ^1.12.0 + version: 1.18.1 + boxen: + specifier: ^5.1.2 + version: 5.1.2 chalk: specifier: ^4.1.2 version: 4.1.2 + cli-table3: + specifier: ^0.6.3 + version: 0.6.5 commander: specifier: ^11.1.0 version: 11.1.0 cross-spawn: - specifier: ^7.0.3 - version: 7.0.3 + specifier: ^7.0.6 + version: 7.0.6 fastify: - specifier: ^4.24.3 - version: 4.24.3 + specifier: ^4.29.1 + version: 4.29.1 + figlet: + specifier: ^1.7.0 + version: 1.11.0 form-data: - specifier: ^4.0.0 - version: 4.0.0 + specifier: ^4.0.4 + version: 4.0.6 + gradient-string: + specifier: ^2.0.2 + version: 2.0.2 + http-proxy-agent: + specifier: ^7.0.0 + version: 7.0.2 + https-proxy-agent: + specifier: ^7.0.0 + version: 7.0.6 + jsdom: + specifier: ^21.1.0 + version: 21.1.2 + json-stringify-safe: + specifier: ^5.0.1 + version: 5.0.1 listr2: specifier: ^7.0.1 version: 7.0.2 + log-symbols: + specifier: ^4.1.0 + version: 4.1.0 + node-cache: + specifier: ^5.1.2 + version: 5.1.2 + ora: + specifier: ^5.4.1 + version: 5.4.1 + postcss: + specifier: ^8.5.6 + version: 8.5.16 + puppeteer: + specifier: ^19.5.2 + version: 19.11.1(typescript@5.3.2) sharp: specifier: ^0.33.4 version: 0.33.4 - tsup: - specifier: ^7.2.0 - version: 7.2.0(typescript@5.3.2) + uuid: + specifier: ^11.0.3 + version: 11.1.1 which: specifier: ^4.0.0 version: 4.0.0 @@ -69,12 +117,29 @@ importers: specifier: ^3.10.0 version: 3.10.0 devDependencies: + '@types/archiver': + specifier: ^5.3.4 + version: 5.3.4 + find-free-port: + specifier: ^2.0.0 + version: 2.0.0 + tsup: + specifier: ^8.5.1 + version: 8.5.1(postcss@8.5.16)(typescript@5.3.2) typescript: specifier: ^5.3.2 version: 5.3.2 packages: + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} + '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} @@ -89,135 +154,159 @@ packages: '@emnapi/runtime@1.2.0': resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} - '@esbuild/android-arm64@0.18.20': - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} - engines: {node: '>=12'} + '@esbuild/aix-ppc64@0.27.7': + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.27.7': + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} + engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.18.20': - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} - engines: {node: '>=12'} + '@esbuild/android-arm@0.27.7': + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} + engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.18.20': - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} - engines: {node: '>=12'} + '@esbuild/android-x64@0.27.7': + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} + engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.18.20': - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} - engines: {node: '>=12'} + '@esbuild/darwin-arm64@0.27.7': + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} + engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.18.20': - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} - engines: {node: '>=12'} + '@esbuild/darwin-x64@0.27.7': + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} + engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.18.20': - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} - engines: {node: '>=12'} + '@esbuild/freebsd-arm64@0.27.7': + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} + engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.18.20': - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} - engines: {node: '>=12'} + '@esbuild/freebsd-x64@0.27.7': + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} + engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.18.20': - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} - engines: {node: '>=12'} + '@esbuild/linux-arm64@0.27.7': + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} + engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.18.20': - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} - engines: {node: '>=12'} + '@esbuild/linux-arm@0.27.7': + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} + engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.18.20': - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} - engines: {node: '>=12'} + '@esbuild/linux-ia32@0.27.7': + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} + engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.18.20': - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} - engines: {node: '>=12'} + '@esbuild/linux-loong64@0.27.7': + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} + engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.18.20': - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} - engines: {node: '>=12'} + '@esbuild/linux-mips64el@0.27.7': + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} + engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.18.20': - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} - engines: {node: '>=12'} + '@esbuild/linux-ppc64@0.27.7': + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} + engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.18.20': - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} - engines: {node: '>=12'} + '@esbuild/linux-riscv64@0.27.7': + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} + engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.18.20': - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} - engines: {node: '>=12'} + '@esbuild/linux-s390x@0.27.7': + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} + engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.18.20': - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} - engines: {node: '>=12'} + '@esbuild/linux-x64@0.27.7': + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} + engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.18.20': - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} - engines: {node: '>=12'} + '@esbuild/netbsd-arm64@0.27.7': + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.7': + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} + engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-x64@0.18.20': - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} - engines: {node: '>=12'} + '@esbuild/openbsd-arm64@0.27.7': + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.7': + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} + engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.18.20': - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} - engines: {node: '>=12'} + '@esbuild/openharmony-arm64@0.27.7': + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.27.7': + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} + engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.18.20': - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} - engines: {node: '>=12'} + '@esbuild/win32-arm64@0.27.7': + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} + engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.18.20': - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} - engines: {node: '>=12'} + '@esbuild/win32-ia32@0.27.7': + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} + engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.18.20': - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} - engines: {node: '>=12'} + '@esbuild/win32-x64@0.27.7': + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} + engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -262,72 +351,84 @@ packages: engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-arm@1.0.2': resolution: {integrity: sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==} engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-s390x@1.0.2': resolution: {integrity: sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==} engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [s390x] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-x64@1.0.2': resolution: {integrity: sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==} engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [x64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linuxmusl-arm64@1.0.2': resolution: {integrity: sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==} engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm64] os: [linux] + libc: [musl] '@img/sharp-libvips-linuxmusl-x64@1.0.2': resolution: {integrity: sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==} engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [x64] os: [linux] + libc: [musl] '@img/sharp-linux-arm64@0.33.4': resolution: {integrity: sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==} engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm64] os: [linux] + libc: [glibc] '@img/sharp-linux-arm@0.33.4': resolution: {integrity: sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==} engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm] os: [linux] + libc: [glibc] '@img/sharp-linux-s390x@0.33.4': resolution: {integrity: sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==} engines: {glibc: '>=2.31', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [s390x] os: [linux] + libc: [glibc] '@img/sharp-linux-x64@0.33.4': resolution: {integrity: sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==} engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [x64] os: [linux] + libc: [glibc] '@img/sharp-linuxmusl-arm64@0.33.4': resolution: {integrity: sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==} engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm64] os: [linux] + libc: [musl] '@img/sharp-linuxmusl-x64@0.33.4': resolution: {integrity: sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==} engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [x64] os: [linux] + libc: [musl] '@img/sharp-wasm32@0.33.4': resolution: {integrity: sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==} @@ -361,57 +462,248 @@ packages: '@jridgewell/sourcemap-codec@1.4.15': resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + '@jridgewell/trace-mapping@0.3.20': resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} + '@lambdatest/node-tunnel@4.0.11': + resolution: {integrity: sha512-IPCBUECSLHOsUhhaopMGkcBV3sRrt6w+y+Lfykm3rR9I0xNgjHNOQ73hxawDuN/188aneouWoDxnrOMEDeFpiA==} - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} + '@pinojs/redact@0.4.0': + resolution: {integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==} - '@playwright/browser-chromium@1.47.2': - resolution: {integrity: sha512-tsk9bLcGzIu4k4xI2ixlwDrdJhMqCalUCsSj7TRI8VuvK7cLiJIa5SR0dprKbX+wkku/JMR4EN6g9DMHvfna+Q==} + '@playwright/browser-chromium@1.54.2': + resolution: {integrity: sha512-DqmhKemShLoF3x4LxEnTc0XPlHSedB3grOpokz9nnXkRsdMHIjVjeGz5QyZXWh6wONWNQrLbdD5iU5cb3tRsLg==} engines: {node: '>=18'} - '@playwright/browser-firefox@1.47.2': - resolution: {integrity: sha512-0+APQGDqeTrb7XLCUr13sgTXV04ky121JsxE93JXj6mrEkoXeBqvbHLkXO3xrPUs1O1kL92Bc2eJ87KW2i5Jog==} + '@playwright/browser-firefox@1.54.2': + resolution: {integrity: sha512-I0ZEliCzZq9k5SXQVkYRM9AG0igpa9GcSvjp8xFkSbxQiRYwuEswbwU7DYybjQREkFJ+6XmQ2k7IfmKhjIhUkA==} engines: {node: '>=18'} - '@playwright/browser-webkit@1.47.2': - resolution: {integrity: sha512-NHXueW09Ou26raqzDccUaSUbmiBMY0eonqQVvUbrTRNNRlMA8Vp6lGqZiPy5qo/FvEeQBSsZSCfH/MnathYhdg==} + '@playwright/browser-webkit@1.54.2': + resolution: {integrity: sha512-r8zJRe5NBSvgctXqoiBCN+qlsZdcF6oLRV3lxYUH/gOo8oLXUcZrw4RnH5UNyOlxF3cXiHkJL7zDmN1IgP81Yg==} engines: {node: '>=18'} - '@playwright/test@1.47.2': - resolution: {integrity: sha512-jTXRsoSPONAs8Za9QEQdyjFn+0ZQFjCiIztAIF6bi1HqhBzG9Ma7g1WotyiGqFSBRZjIEqMdT8RUlbk1QVhzCQ==} + '@playwright/test@1.54.2': + resolution: {integrity: sha512-A+znathYxPf+72riFd1r1ovOLqsIIB0jKIoPjyK2kqEIe30/6jF6BC7QNluHuwUmsD2tv1XZVugN8GqfTMOxsA==} engines: {node: '>=18'} hasBin: true + '@puppeteer/browsers@0.5.0': + resolution: {integrity: sha512-Uw6oB7VvmPRLE4iKsjuOh8zgDabhNX67dzo8U/BB0f9527qx+4eeUs+korU98OhG5C4ubg7ufBgVi63XYwS6TQ==} + engines: {node: '>=14.1.0'} + hasBin: true + peerDependencies: + typescript: '>= 4.7.4' + peerDependenciesMeta: + typescript: + optional: true + + '@rollup/rollup-android-arm-eabi@4.62.2': + resolution: {integrity: sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.62.2': + resolution: {integrity: sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.62.2': + resolution: {integrity: sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.62.2': + resolution: {integrity: sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.62.2': + resolution: {integrity: sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.62.2': + resolution: {integrity: sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.62.2': + resolution: {integrity: sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.62.2': + resolution: {integrity: sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.62.2': + resolution: {integrity: sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.62.2': + resolution: {integrity: sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-loong64-gnu@4.62.2': + resolution: {integrity: sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-loong64-musl@4.62.2': + resolution: {integrity: sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==} + cpu: [loong64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-ppc64-gnu@4.62.2': + resolution: {integrity: sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-ppc64-musl@4.62.2': + resolution: {integrity: sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==} + cpu: [ppc64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-riscv64-gnu@4.62.2': + resolution: {integrity: sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-musl@4.62.2': + resolution: {integrity: sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-s390x-gnu@4.62.2': + resolution: {integrity: sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.62.2': + resolution: {integrity: sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.62.2': + resolution: {integrity: sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-openbsd-x64@4.62.2': + resolution: {integrity: sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.62.2': + resolution: {integrity: sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.62.2': + resolution: {integrity: sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.62.2': + resolution: {integrity: sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.62.2': + resolution: {integrity: sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.62.2': + resolution: {integrity: sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==} + cpu: [x64] + os: [win32] + + '@tootallnate/once@2.0.1': + resolution: {integrity: sha512-HqmEUIGRJ5fSXchkVgR5F7qn48bDBzv0kWj/Kfu5e6uci4UlEeng4331LnBkWffb++Ei3FOVLxo8JJWMFBDMeQ==} + engines: {node: '>= 10'} + + '@types/archiver@5.3.4': + resolution: {integrity: sha512-Lj7fLBIMwYFgViVVZHEdExZC3lVYsl+QL0VmdNdIzGZH544jHveYWij6qdnBgJQDnR7pMKliN9z2cPZFEbhyPw==} + '@types/cross-spawn@6.0.5': resolution: {integrity: sha512-wsIMP68FvGXk+RaWhraz6Xp4v7sl4qwzHAmtPaJEN2NRTXXI9LtFawUpeTsBNL/pd6QoLStdytCaAyiK7AEd/Q==} + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + + '@types/json-stringify-safe@5.0.3': + resolution: {integrity: sha512-oNOjRxLfPeYbBSQ60maucaFNqbslVOPU4WWs5t/sHvAh6tyo/CThXSG+E24tEzkgh/fzvxyDrYdOJufgeNy1sQ==} + '@types/node@20.9.0': resolution: {integrity: sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==} + '@types/readdir-glob@1.1.5': + resolution: {integrity: sha512-raiuEPUYqXu+nvtY2Pe8s8FEmZ3x5yAH4VkLdihcPdalvsHltomrRC9BzuStrJ9yk06470hS0Crw0f1pXqD+Hg==} + + '@types/tinycolor2@1.4.6': + resolution: {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==} + '@types/triple-beam@1.3.5': resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} '@types/which@3.0.2': resolution: {integrity: sha512-UqCG7NjNyume6e+BHcFkOQOS8of/E18V2z/jTRkiD98YiiryYOFBVvPxqA/8PQCwkn7icKqz/hFflMIRN2HGhQ==} - abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + + abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead abstract-logging@2.0.1: resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} + acorn-globals@7.0.1: + resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} + + acorn-walk@8.3.5: + resolution: {integrity: sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==} + engines: {node: '>=0.4.0'} + + acorn@8.17.0: + resolution: {integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==} + engines: {node: '>=0.4.0'} + hasBin: true + + adm-zip@0.5.18: + resolution: {integrity: sha512-ufJnssQGbxzLNS1Ho9bCtX4rQKCCvoVuDLHoJyc3F9dOGDB4BkWs2Ci0kv53lqocAEQ/Cbi+I2XCsNYGqVYqng==} + engines: {node: '>=12.0'} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + ajv-errors@3.0.0: resolution: {integrity: sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==} peerDependencies: @@ -428,10 +720,17 @@ packages: ajv@8.12.0: resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + ansi-escapes@5.0.0: resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} engines: {node: '>=12'} + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + ansi-regex@6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} @@ -447,16 +746,20 @@ packages: any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} + archiver-utils@2.1.0: + resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} + engines: {node: '>= 6'} - archy@1.0.0: - resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} + archiver-utils@3.0.4: + resolution: {integrity: sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==} + engines: {node: '>= 10'} - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} + archiver@5.3.2: + resolution: {integrity: sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==} + engines: {node: '>= 10'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} async@3.2.5: resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} @@ -468,11 +771,11 @@ packages: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} - avvio@8.2.1: - resolution: {integrity: sha512-TAlMYvOuwGyLK3PfBb5WKBXZmXz2fVCgv23d6zZFdle/q3gPjmxBaeuC0pY0Dzs5PWMSgfqqEZkrye19GlDTgw==} + avvio@8.4.0: + resolution: {integrity: sha512-CDSwaxINFy59iNwhYnkvALBwZiTydGkOecZyPkqBpABYR1KqGEsET0VOOYDwtleZSUIdeY36DC2bSZ24CO1igA==} - axios@1.6.2: - resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} + axios@1.18.1: + resolution: {integrity: sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g==} balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -480,46 +783,99 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + boxen@5.1.2: + resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} + engines: {node: '>=10'} brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} + brace-expansion@2.1.2: + resolution: {integrity: sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA==} - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - bundle-require@4.0.2: - resolution: {integrity: sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==} + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + bundle-require@5.1.0: + resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: - esbuild: '>=0.17' + esbuild: '>=0.18' cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + + chromium-bidi@0.4.7: + resolution: {integrity: sha512-6+mJuFXwTMU6I3vYLs6IL8A1DyQTPjCfIL971X0aMPVGRbGnNfl6i6Cl0NMbxi2bRYLGESt9T2ZIMRM5PAEcIQ==} + peerDependencies: + devtools-protocol: '*' + + cli-boxes@2.2.1: + resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} + engines: {node: '>=6'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} cli-cursor@4.0.0: resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} + cli-truncate@3.1.0: resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -557,21 +913,63 @@ packages: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} engines: {node: '>=16'} + commander@14.0.3: + resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} + engines: {node: '>=20'} + commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} + compress-commons@4.1.2: + resolution: {integrity: sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==} + engines: {node: '>= 10'} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + cookie@0.5.0: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cosmiconfig@8.1.3: + resolution: {integrity: sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==} + engines: {node: '>=14'} + + crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + + crc32-stream@4.0.3: + resolution: {integrity: sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==} + engines: {node: '>= 10'} + + cross-fetch@3.1.5: + resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + cssstyle@3.0.0: + resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} + engines: {node: '>=14'} + + data-urls@4.0.0: + resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} + engines: {node: '>=14'} + debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -581,6 +979,21 @@ packages: supports-color: optional: true + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -589,38 +1002,90 @@ packages: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} + devtools-protocol@0.0.1107588: + resolution: {integrity: sha512-yIR+pG9x65Xko7bErCUSQaDLrO/P1p3JUzEk7JCU4DowPcGHkTGUGQapcfcLc4qj0UaALwZ+cr0riFgiqpixcg==} + + domexception@4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} + deprecated: Use your platform's native DOMException instead + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} enabled@2.0.0: resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} - esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} - engines: {node: '>=12'} + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.2: + resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + esbuild@0.27.7: + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} + engines: {node: '>=18'} hasBin: true - event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true fast-content-type-parse@1.1.0: resolution: {integrity: sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==} @@ -631,45 +1096,56 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - fast-json-stringify@5.9.1: resolution: {integrity: sha512-NMrf+uU9UJnTzfxaumMDXK1NWqtPCfGoM9DYIE+ESlaTQqjlANFBy0VAbsm6FB88Mx0nceyi18zTo5kIEUlzxg==} fast-querystring@1.1.2: resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} - fast-redact@3.3.0: - resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} - engines: {node: '>=6'} - fast-uri@2.3.0: resolution: {integrity: sha512-eel5UKGn369gGEWOqBShmFJWfq/xSJvsgDzgLYC845GneayWvXBf0lJCBn5qTABfewy1ZDPoaR5OZCP+kssfuw==} - fastify@4.24.3: - resolution: {integrity: sha512-6HHJ+R2x2LS3y1PqxnwEIjOTZxFl+8h4kSC/TuDPXtA+v2JnV9yEtOsNSKK1RMD7sIR2y1ZsA4BEFaid/cK5pg==} + fastify@4.29.1: + resolution: {integrity: sha512-m2kMNHIG92tSNWv+Z3UeTR9AWLLuo7KctC7mlFPtMEVrfjIhmQhkQnT9v15qA/BfVq3vvj134Y0jl9SBje3jXQ==} - fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true fecha@4.2.3: resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} + figlet@1.11.0: + resolution: {integrity: sha512-EEx3OS/l2bFqcUNN2NM9FPJp8vAMrgbCxsbl2hbcJNNxOEwVe3mEzrhan7TbJQViZa8mMqhihlbCaqD+LyYKTQ==} + engines: {node: '>= 17.0.0'} + hasBin: true + + find-free-port@2.0.0: + resolution: {integrity: sha512-J1j8gfEVf5FN4PR5w5wrZZ7NYs2IvqsHcd03cAeQx3Ec/mo+lKceaVNhpsRKoZpZKbId88o8qh+dwUwzBV6WCg==} - find-my-way@7.7.0: - resolution: {integrity: sha512-+SrHpvQ52Q6W9f3wJoJBbAQULJuNEEQwBvlvYwACDhBTLOTMiQ0HYWh4+vC3OivGP2ENcTI1oKlFA2OepJNjhQ==} + find-my-way@8.2.2: + resolution: {integrity: sha512-Dobi7gcTEq8yszimcfp/R7+owiT4WncAJ7VTTgFH1jYJ5GaG1FbhjwDG820hptN0QDFvzVY3RfCzdInvGPGzjA==} engines: {node: '>=14'} + fix-dts-default-cjs-exports@1.0.1: + resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} + fn.name@1.1.0: resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} - follow-redirects@1.15.3: - resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} + follow-redirects@1.16.0: + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -677,14 +1153,17 @@ packages: debug: optional: true - form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + form-data@4.0.6: + resolution: {integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==} engines: {node: '>= 6'} forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -698,38 +1177,99 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-port@1.0.0: + resolution: {integrity: sha512-vg59F3kcXBOtcIijwtdAyCxFocyv/fVkGQvw1kVGrxFO1U4SSGkGjrbASg5DN3TVekVle/jltwOjYRnZWc1YdA==} + engines: {node: '>=0.10.0'} + hasBin: true + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} glob@7.1.6: resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + gradient-string@2.0.2: + resolution: {integrity: sha512-rEDCuqUQ4tbD78TpzsMtt5OIf0cBCSDWSJtUDaF6JsAh+k0v9r++NzxNEG87oDZx9ZwGhD8DaezR2L/yrw0Jdw==} engines: {node: '>=10'} has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} + engines: {node: '>= 0.4'} + + html-encoding-sniffer@3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + + http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore@5.3.0: - resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} - engines: {node: '>= 4'} + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -738,33 +1278,38 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - is-fullwidth-code-point@4.0.0: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} engines: {node: '>=12'} - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -776,21 +1321,47 @@ packages: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.3.0: + resolution: {integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==} + hasBin: true + + jsdom@21.1.2: + resolution: {integrity: sha512-sCpFmK2jv+1sjff4u7fzft+pUh2KSUbUrEHYHyfSIbGTIcmnjyp83qg6qLwdJ/I3LpTXx33ACxeRL7Lsyc6lGQ==} + engines: {node: '>=14'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + json-schema-ref-resolver@1.0.1: resolution: {integrity: sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==} json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + kuler@2.0.0: resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} + lazystream@1.0.1: + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} + engines: {node: '>= 0.6.3'} + light-my-request@5.11.0: resolution: {integrity: sha512-qkFCeloXCOMpmEdZ/MV91P8AT4fjwFXWaAFz3lUeStM8RcoM1ks4J/F8r1b3r6y/H4u3ACEJ1T+Gv5bopj7oDA==} - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -803,8 +1374,24 @@ packages: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + lodash.defaults@4.2.0: + resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + + lodash.difference@4.5.0: + resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} + + lodash.flatten@4.4.0: + resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.union@4.6.0: + resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} log-update@5.0.1: resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} @@ -814,20 +1401,12 @@ packages: resolution: {integrity: sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==} engines: {node: '>= 12.0.0'} - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} @@ -844,19 +1423,52 @@ packages: minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@5.1.9: + resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} + engines: {node: '>=10'} + + mitt@3.0.0: + resolution: {integrity: sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==} + + mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + + mlly@1.8.2: + resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} + ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + nanoid@3.3.15: + resolution: {integrity: sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + node-cache@5.1.2: + resolution: {integrity: sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==} + engines: {node: '>= 8.0.0'} + + node-fetch@2.6.7: + resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} + nwsapi@2.2.24: + resolution: {integrity: sha512-7YRhZ3jS45LwmSCT4b2sVFHt/WuovaktDU07QrtOBY2PXskss5a9jfmR9jptyumwXST+rFjrmppMY1KT/yn35A==} object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -876,6 +1488,21 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -888,52 +1515,83 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pino-abstract-transport@1.1.0: - resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==} + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - pino-std-serializers@6.2.2: - resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - pino@8.16.2: - resolution: {integrity: sha512-2advCDGVEvkKu9TTVSa/kWW7Z3htI/sBKEZpqiHk6ive0i/7f5b1rsU8jn0aimxqfnSz5bj/nOYkwhBUn5xxvg==} + picomatch@4.0.5: + resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} + engines: {node: '>=12'} + + pino-abstract-transport@2.0.0: + resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} + + pino-std-serializers@7.1.0: + resolution: {integrity: sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==} + + pino@9.14.0: + resolution: {integrity: sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w==} hasBin: true pirates@4.0.6: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} - playwright-core@1.47.2: - resolution: {integrity: sha512-3JvMfF+9LJfe16l7AbSmU555PaTl2tPyQsVInqm3id16pdDfvZ8TTZ/pyzmkbDrZTQefyzU7AIHlZqQnxpqHVQ==} + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + playwright-core@1.54.2: + resolution: {integrity: sha512-n5r4HFbMmWsB4twG7tJLDN9gmBUeSPcsBZiWSE4DnYz9mJMAFqr2ID7+eGC9kpEnxExJ1epttwR59LEWCk8mtA==} engines: {node: '>=18'} hasBin: true - playwright@1.47.2: - resolution: {integrity: sha512-nx1cLMmQWqmA3UsnjaaokyoUpdVaaDhJhMoxX2qj3McpjnsqFHs516QAKYhqHAgOP+oCFTEOCOAaD1RgD/RQfA==} + playwright@1.54.2: + resolution: {integrity: sha512-Hu/BMoA1NAdRUuulyvQC0pEqZ4vQbGfn8f7wPXcnqQmM+zct9UliKxsIkLNmz/ku7LElUNqmaiv1TG/aL5ACsw==} engines: {node: '>=18'} hasBin: true - postcss-load-config@4.0.1: - resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} - engines: {node: '>= 14'} + postcss-load-config@6.0.1: + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} + engines: {node: '>= 18'} peerDependencies: + jiti: '>=1.21.0' postcss: '>=8.0.9' - ts-node: '>=9.0.0' + tsx: ^4.8.1 + yaml: ^2.4.2 peerDependenciesMeta: + jiti: + optional: true postcss: optional: true - ts-node: + tsx: + optional: true + yaml: optional: true + postcss@8.5.16: + resolution: {integrity: sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==} + engines: {node: ^10 || ^12 || >=14} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + process-warning@2.3.0: resolution: {integrity: sha512-N6mp1+2jpQr3oCFMz6SeHRGbv6Slb20bRhj4v3xR99HqNToAcOe1MFOp4tytyzOfJn+QtN8Rf7U/h2KAn4kC6g==} - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} + process-warning@3.0.0: + resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} + + process-warning@5.0.0: + resolution: {integrity: sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==} + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} @@ -942,47 +1600,87 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + proxy-from-env@2.1.0: + resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} + engines: {node: '>=10'} + + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + + pump@3.0.4: + resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + puppeteer-core@19.11.1: + resolution: {integrity: sha512-qcuC2Uf0Fwdj9wNtaTZ2OvYRraXpAK+puwwVW8ofOhOgLPZyz1c68tsorfIZyCUOpyBisjr+xByu7BMbEYMepA==} + engines: {node: '>=14.14.0'} + peerDependencies: + typescript: '>= 4.7.4' + peerDependenciesMeta: + typescript: + optional: true + + puppeteer@19.11.1: + resolution: {integrity: sha512-39olGaX2djYUdhaQQHDZ0T0GwEp+5f9UB9HmEP0qHfdQHIq0xGQZuAZ5TLnJIc/88SrPLpEflPC+xUqOTv3c5g==} + deprecated: < 24.15.0 is no longer supported + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} - readable-stream@4.4.2: - resolution: {integrity: sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + readdir-glob@1.1.3: + resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} real-require@0.2.0: resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} engines: {node: '>= 12.13.0'} + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + restore-cursor@4.0.0: resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - ret@0.2.2: - resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} - engines: {node: '>=4'} + ret@0.4.3: + resolution: {integrity: sha512-0f4Memo5QP7WQyUEAYUO3esD/XjOc3Zjjg5CPsAq1p8sIu0XPeMbHJemKA0BO7tV0X7+A0FoEpbmHXWxPyD3wQ==} + engines: {node: '>=10'} reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} @@ -991,32 +1689,37 @@ packages: rfdc@1.3.0: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} - rollup@3.29.4: - resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} + rollup@4.62.2: + resolution: {integrity: sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + rrweb-cssom@0.6.0: + resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - safe-regex2@2.0.0: - resolution: {integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==} + safe-regex2@3.1.0: + resolution: {integrity: sha512-RAAZAGbap2kBfbVhvmnTFv73NWLMvDGOITFYTZBAaY8eR+Ir4ef7Up/e7amo+y1+AH+3PtLkrt9mvcTsG9LXug==} safe-stable-stringify@2.4.3: resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} engines: {node: '>=10'} + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} - semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true - semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} @@ -1043,52 +1746,76 @@ packages: simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} - sonic-boom@3.7.0: - resolution: {integrity: sha512-IudtNvSqA/ObjN97tfgNmOKyDOs4dNcg4cUUsHDebqsgb8wGBBwb31LIgShNO8fye0dFI52X1+tFoKKI6Rq1Gg==} + sonic-boom@4.2.1: + resolution: {integrity: sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==} - source-map@0.8.0-beta.0: - resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} - engines: {node: '>= 8'} + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} split2@4.2.0: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} + split@1.0.1: + resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==} + stack-trace@0.0.10: resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + string-width@5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + strip-ansi@7.1.0: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - - sucrase@3.34.0: - resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} - engines: {node: '>=8'} + sucrase@3.35.1: + resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} + engines: {node: '>=16 || 14 >=14.17'} hasBin: true supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + text-hex@1.0.0: resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} @@ -1099,19 +1826,39 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - thread-stream@2.4.1: - resolution: {integrity: sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==} + thread-stream@3.2.0: + resolution: {integrity: sha512-zLBvqpwr4Esa0kRjcrzGU6zL25lePWaCLMx0RQFrmteozIfeNdaMLpG5U7PeHzvlFkAWaRKA9/KVW4F60iB+qw==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tinycolor2@1.6.0: + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + + tinygradient@1.1.5: + resolution: {integrity: sha512-8nIfc2vgQ4TeLnk2lFj4tRLvvJwEfQuabdsmvDdQPT0xlk9TaNtpGd6nNRxXoK6vQhN6RSzj+Cnp5tTQmpxmbw==} toad-cache@3.3.0: resolution: {integrity: sha512-3oDzcogWGHZdkwrHyvJVpPjA7oNzY6ENOV3PsWJY9XYPZ6INo94Yd47s5may1U+nleBPwDhrRiTPMIvKaa3MQg==} engines: {node: '>=12'} - tr46@1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tr46@4.1.1: + resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} + engines: {node: '>=14'} tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} @@ -1127,15 +1874,18 @@ packages: tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} - tsup@7.2.0: - resolution: {integrity: sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==} - engines: {node: '>=16.14'} + tsup@8.5.1: + resolution: {integrity: sha512-xtgkqwdhpKWr3tKPmCkvYmS9xnQK3m3XgxZHwSUjvfTjp7YfXe5tT3GgWi0F2N+ZSMsOeWeZFh7ZZFg5iPhing==} + engines: {node: '>=18'} hasBin: true peerDependencies: + '@microsoft/api-extractor': ^7.36.0 '@swc/core': ^1 postcss: ^8.4.12 - typescript: '>=4.1.0' + typescript: '>=4.5.0' peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true '@swc/core': optional: true postcss: @@ -1143,6 +1893,10 @@ packages: typescript: optional: true + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + type-fest@1.4.0: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} @@ -1152,20 +1906,61 @@ packages: engines: {node: '>=14.17'} hasBin: true + ufo@1.6.4: + resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==} + + unbzip2-stream@1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + uuid@11.1.1: + resolution: {integrity: sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==} + hasBin: true + + w3c-xmlserializer@4.0.0: + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + + whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation + + whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + + whatwg-url@12.0.1: + resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} + engines: {node: '>=14'} - whatwg-url@7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} @@ -1177,6 +1972,10 @@ packages: engines: {node: ^16.13.0 || >=18.0.0} hasBin: true + widest-line@3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} + winston-transport@4.6.0: resolution: {integrity: sha512-wbBA9PbPAHxKiygo7ub7BYRiKxms0tpfU2ljtWzb3SjRjv5yl6Ozuy/TkXf00HTAt+Uylo3gSkNwzc4ME0wiIg==} engines: {node: '>= 12.0.0'} @@ -1185,6 +1984,10 @@ packages: resolution: {integrity: sha512-nT6SIDaE9B7ZRO0u3UvdrimG0HkB7dSTAgInQnNR2SOPJ4bvq5q79+pXLftKmP52lJGW15+H5MCK0nM9D3KB/g==} engines: {node: '>= 12.0.0'} + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + wrap-ansi@8.1.0: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} @@ -1192,15 +1995,66 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + ws@8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - yaml@2.3.4: - resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} - engines: {node: '>= 14'} + ws@8.21.0: + resolution: {integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.1: + resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==} + engines: {node: '>=12'} + + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + + zip-stream@4.1.1: + resolution: {integrity: sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==} + engines: {node: '>= 10'} snapshots: + '@babel/code-frame@7.29.7': + dependencies: + '@babel/helper-validator-identifier': 7.29.7 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/helper-validator-identifier@7.29.7': {} + '@colors/colors@1.5.0': {} '@colors/colors@1.6.0': {} @@ -1216,70 +2070,82 @@ snapshots: tslib: 2.6.3 optional: true - '@esbuild/android-arm64@0.18.20': + '@esbuild/aix-ppc64@0.27.7': + optional: true + + '@esbuild/android-arm64@0.27.7': + optional: true + + '@esbuild/android-arm@0.27.7': + optional: true + + '@esbuild/android-x64@0.27.7': optional: true - '@esbuild/android-arm@0.18.20': + '@esbuild/darwin-arm64@0.27.7': optional: true - '@esbuild/android-x64@0.18.20': + '@esbuild/darwin-x64@0.27.7': optional: true - '@esbuild/darwin-arm64@0.18.20': + '@esbuild/freebsd-arm64@0.27.7': optional: true - '@esbuild/darwin-x64@0.18.20': + '@esbuild/freebsd-x64@0.27.7': optional: true - '@esbuild/freebsd-arm64@0.18.20': + '@esbuild/linux-arm64@0.27.7': optional: true - '@esbuild/freebsd-x64@0.18.20': + '@esbuild/linux-arm@0.27.7': optional: true - '@esbuild/linux-arm64@0.18.20': + '@esbuild/linux-ia32@0.27.7': optional: true - '@esbuild/linux-arm@0.18.20': + '@esbuild/linux-loong64@0.27.7': optional: true - '@esbuild/linux-ia32@0.18.20': + '@esbuild/linux-mips64el@0.27.7': optional: true - '@esbuild/linux-loong64@0.18.20': + '@esbuild/linux-ppc64@0.27.7': optional: true - '@esbuild/linux-mips64el@0.18.20': + '@esbuild/linux-riscv64@0.27.7': optional: true - '@esbuild/linux-ppc64@0.18.20': + '@esbuild/linux-s390x@0.27.7': optional: true - '@esbuild/linux-riscv64@0.18.20': + '@esbuild/linux-x64@0.27.7': optional: true - '@esbuild/linux-s390x@0.18.20': + '@esbuild/netbsd-arm64@0.27.7': optional: true - '@esbuild/linux-x64@0.18.20': + '@esbuild/netbsd-x64@0.27.7': optional: true - '@esbuild/netbsd-x64@0.18.20': + '@esbuild/openbsd-arm64@0.27.7': optional: true - '@esbuild/openbsd-x64@0.18.20': + '@esbuild/openbsd-x64@0.27.7': optional: true - '@esbuild/sunos-x64@0.18.20': + '@esbuild/openharmony-arm64@0.27.7': optional: true - '@esbuild/win32-arm64@0.18.20': + '@esbuild/sunos-x64@0.27.7': optional: true - '@esbuild/win32-ia32@0.18.20': + '@esbuild/win32-arm64@0.27.7': optional: true - '@esbuild/win32-x64@0.18.20': + '@esbuild/win32-ia32@0.27.7': + optional: true + + '@esbuild/win32-x64@0.27.7': optional: true '@fastify/ajv-compiler@3.5.0': @@ -1383,57 +2249,190 @@ snapshots: '@jridgewell/sourcemap-codec@1.4.15': {} + '@jridgewell/sourcemap-codec@1.5.5': {} + '@jridgewell/trace-mapping@0.3.20': dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 - '@nodelib/fs.scandir@2.1.5': + '@lambdatest/node-tunnel@4.0.11': dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 + adm-zip: 0.5.18 + axios: 1.18.1 + get-port: 1.0.0 + https-proxy-agent: 5.0.1 + split: 1.0.1 + transitivePeerDependencies: + - debug + - supports-color - '@nodelib/fs.stat@2.0.5': {} + '@pinojs/redact@0.4.0': {} + + '@playwright/browser-chromium@1.54.2': + dependencies: + playwright-core: 1.54.2 - '@nodelib/fs.walk@1.2.8': + '@playwright/browser-firefox@1.54.2': dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 + playwright-core: 1.54.2 - '@playwright/browser-chromium@1.47.2': + '@playwright/browser-webkit@1.54.2': dependencies: - playwright-core: 1.47.2 + playwright-core: 1.54.2 - '@playwright/browser-firefox@1.47.2': + '@playwright/test@1.54.2': dependencies: - playwright-core: 1.47.2 + playwright: 1.54.2 - '@playwright/browser-webkit@1.47.2': + '@puppeteer/browsers@0.5.0(typescript@5.3.2)': dependencies: - playwright-core: 1.47.2 + debug: 4.3.4 + extract-zip: 2.0.1 + https-proxy-agent: 5.0.1 + progress: 2.0.3 + proxy-from-env: 1.1.0 + tar-fs: 2.1.1 + unbzip2-stream: 1.4.3 + yargs: 17.7.1 + optionalDependencies: + typescript: 5.3.2 + transitivePeerDependencies: + - supports-color + + '@rollup/rollup-android-arm-eabi@4.62.2': + optional: true + + '@rollup/rollup-android-arm64@4.62.2': + optional: true + + '@rollup/rollup-darwin-arm64@4.62.2': + optional: true + + '@rollup/rollup-darwin-x64@4.62.2': + optional: true + + '@rollup/rollup-freebsd-arm64@4.62.2': + optional: true - '@playwright/test@1.47.2': + '@rollup/rollup-freebsd-x64@4.62.2': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.62.2': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.62.2': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.62.2': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.62.2': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.62.2': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.62.2': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.62.2': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.62.2': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.62.2': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.62.2': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.62.2': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.62.2': + optional: true + + '@rollup/rollup-linux-x64-musl@4.62.2': + optional: true + + '@rollup/rollup-openbsd-x64@4.62.2': + optional: true + + '@rollup/rollup-openharmony-arm64@4.62.2': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.62.2': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.62.2': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.62.2': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.62.2': + optional: true + + '@tootallnate/once@2.0.1': {} + + '@types/archiver@5.3.4': dependencies: - playwright: 1.47.2 + '@types/readdir-glob': 1.1.5 '@types/cross-spawn@6.0.5': dependencies: '@types/node': 20.9.0 + '@types/estree@1.0.9': {} + + '@types/json-stringify-safe@5.0.3': {} + '@types/node@20.9.0': dependencies: undici-types: 5.26.5 + '@types/readdir-glob@1.1.5': + dependencies: + '@types/node': 20.9.0 + + '@types/tinycolor2@1.4.6': {} + '@types/triple-beam@1.3.5': {} '@types/which@3.0.2': {} - abort-controller@3.0.0: + '@types/yauzl@2.10.3': dependencies: - event-target-shim: 5.0.1 + '@types/node': 20.9.0 + optional: true + + abab@2.0.6: {} abstract-logging@2.0.1: {} + acorn-globals@7.0.1: + dependencies: + acorn: 8.17.0 + acorn-walk: 8.3.5 + + acorn-walk@8.3.5: + dependencies: + acorn: 8.17.0 + + acorn@8.17.0: {} + + adm-zip@0.5.18: {} + + agent-base@6.0.2: + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + agent-base@7.1.4: {} + ajv-errors@3.0.0(ajv@8.12.0): dependencies: ajv: 8.12.0 @@ -1449,10 +2448,16 @@ snapshots: require-from-string: 2.0.2 uri-js: 4.4.1 + ansi-align@3.0.1: + dependencies: + string-width: 4.2.3 + ansi-escapes@5.0.0: dependencies: type-fest: 1.4.0 + ansi-regex@5.0.1: {} + ansi-regex@6.0.1: {} ansi-styles@4.3.0: @@ -1463,14 +2468,43 @@ snapshots: any-promise@1.3.0: {} - anymatch@3.1.3: + archiver-utils@2.1.0: dependencies: + glob: 7.1.6 + graceful-fs: 4.2.11 + lazystream: 1.0.1 + lodash.defaults: 4.2.0 + lodash.difference: 4.5.0 + lodash.flatten: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.union: 4.6.0 normalize-path: 3.0.0 - picomatch: 2.3.1 + readable-stream: 2.3.8 + + archiver-utils@3.0.4: + dependencies: + glob: 7.2.3 + graceful-fs: 4.2.11 + lazystream: 1.0.1 + lodash.defaults: 4.2.0 + lodash.difference: 4.5.0 + lodash.flatten: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.union: 4.6.0 + normalize-path: 3.0.0 + readable-stream: 3.6.2 - archy@1.0.0: {} + archiver@5.3.2: + dependencies: + archiver-utils: 2.1.0 + async: 3.2.5 + buffer-crc32: 0.2.13 + readable-stream: 3.6.2 + readdir-glob: 1.1.3 + tar-stream: 2.2.0 + zip-stream: 4.1.1 - array-union@2.1.0: {} + argparse@2.0.1: {} async@3.2.5: {} @@ -1478,75 +2512,123 @@ snapshots: atomic-sleep@1.0.0: {} - avvio@8.2.1: + avvio@8.4.0: dependencies: - archy: 1.0.0 - debug: 4.3.4 - fastq: 1.15.0 - transitivePeerDependencies: - - supports-color + '@fastify/error': 3.4.1 + fastq: 1.20.1 - axios@1.6.2: + axios@1.18.1: dependencies: - follow-redirects: 1.15.3 - form-data: 4.0.0 - proxy-from-env: 1.1.0 + follow-redirects: 1.16.0 + form-data: 4.0.6 + https-proxy-agent: 5.0.1 + proxy-from-env: 2.1.0 transitivePeerDependencies: - debug + - supports-color balanced-match@1.0.2: {} base64-js@1.5.1: {} - binary-extensions@2.2.0: {} + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + boxen@5.1.2: + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 2.2.1 + string-width: 4.2.3 + type-fest: 0.20.2 + widest-line: 3.1.0 + wrap-ansi: 7.0.0 brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - braces@3.0.2: + brace-expansion@2.1.2: dependencies: - fill-range: 7.0.1 + balanced-match: 1.0.2 + + buffer-crc32@0.2.13: {} - buffer@6.0.3: + buffer@5.7.1: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - bundle-require@4.0.2(esbuild@0.18.20): + bundle-require@5.1.0(esbuild@0.27.7): dependencies: - esbuild: 0.18.20 + esbuild: 0.27.7 load-tsconfig: 0.2.5 cac@6.7.14: {} + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + callsites@3.1.0: {} + + camelcase@6.3.0: {} + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - chokidar@3.5.3: + chokidar@4.0.3: dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 + readdirp: 4.1.2 + + chownr@1.1.4: {} + + chromium-bidi@0.4.7(devtools-protocol@0.0.1107588): + dependencies: + devtools-protocol: 0.0.1107588 + mitt: 3.0.0 + + cli-boxes@2.2.1: {} + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 cli-cursor@4.0.0: dependencies: restore-cursor: 4.0.0 + cli-spinners@2.9.2: {} + + cli-table3@0.6.5: + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + cli-truncate@3.1.0: dependencies: slice-ansi: 5.0.0 string-width: 5.1.2 + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone@1.0.4: {} + + clone@2.1.2: {} + color-convert@1.9.3: dependencies: color-name: 1.1.3 @@ -1587,78 +2669,182 @@ snapshots: commander@11.1.0: {} + commander@14.0.3: {} + commander@4.1.1: {} + compress-commons@4.1.2: + dependencies: + buffer-crc32: 0.2.13 + crc32-stream: 4.0.3 + normalize-path: 3.0.0 + readable-stream: 3.6.2 + concat-map@0.0.1: {} + confbox@0.1.8: {} + + consola@3.4.2: {} + cookie@0.5.0: {} - cross-spawn@7.0.3: + core-util-is@1.0.3: {} + + cosmiconfig@8.1.3: + dependencies: + import-fresh: 3.3.1 + js-yaml: 4.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + + crc-32@1.2.2: {} + + crc32-stream@4.0.3: + dependencies: + crc-32: 1.2.2 + readable-stream: 3.6.2 + + cross-fetch@3.1.5: + dependencies: + node-fetch: 2.6.7 + transitivePeerDependencies: + - encoding + + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 + cssstyle@3.0.0: + dependencies: + rrweb-cssom: 0.6.0 + + data-urls@4.0.0: + dependencies: + abab: 2.0.6 + whatwg-mimetype: 3.0.0 + whatwg-url: 12.0.1 + debug@4.3.4: dependencies: ms: 2.1.2 + debug@4.4.3: + dependencies: + ms: 2.1.3 + + decimal.js@10.6.0: {} + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + delayed-stream@1.0.0: {} detect-libc@2.0.3: {} - dir-glob@3.0.1: + devtools-protocol@0.0.1107588: {} + + domexception@4.0.0: dependencies: - path-type: 4.0.0 + webidl-conversions: 7.0.0 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 eastasianwidth@0.2.0: {} + emoji-regex@8.0.0: {} + emoji-regex@9.2.2: {} enabled@2.0.0: {} - esbuild@0.18.20: + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + + entities@6.0.1: {} + + error-ex@1.3.4: + dependencies: + is-arrayish: 0.2.1 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-object-atoms@1.1.2: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.4 + + esbuild@0.27.7: optionalDependencies: - '@esbuild/android-arm': 0.18.20 - '@esbuild/android-arm64': 0.18.20 - '@esbuild/android-x64': 0.18.20 - '@esbuild/darwin-arm64': 0.18.20 - '@esbuild/darwin-x64': 0.18.20 - '@esbuild/freebsd-arm64': 0.18.20 - '@esbuild/freebsd-x64': 0.18.20 - '@esbuild/linux-arm': 0.18.20 - '@esbuild/linux-arm64': 0.18.20 - '@esbuild/linux-ia32': 0.18.20 - '@esbuild/linux-loong64': 0.18.20 - '@esbuild/linux-mips64el': 0.18.20 - '@esbuild/linux-ppc64': 0.18.20 - '@esbuild/linux-riscv64': 0.18.20 - '@esbuild/linux-s390x': 0.18.20 - '@esbuild/linux-x64': 0.18.20 - '@esbuild/netbsd-x64': 0.18.20 - '@esbuild/openbsd-x64': 0.18.20 - '@esbuild/sunos-x64': 0.18.20 - '@esbuild/win32-arm64': 0.18.20 - '@esbuild/win32-ia32': 0.18.20 - '@esbuild/win32-x64': 0.18.20 - - event-target-shim@5.0.1: {} + '@esbuild/aix-ppc64': 0.27.7 + '@esbuild/android-arm': 0.27.7 + '@esbuild/android-arm64': 0.27.7 + '@esbuild/android-x64': 0.27.7 + '@esbuild/darwin-arm64': 0.27.7 + '@esbuild/darwin-x64': 0.27.7 + '@esbuild/freebsd-arm64': 0.27.7 + '@esbuild/freebsd-x64': 0.27.7 + '@esbuild/linux-arm': 0.27.7 + '@esbuild/linux-arm64': 0.27.7 + '@esbuild/linux-ia32': 0.27.7 + '@esbuild/linux-loong64': 0.27.7 + '@esbuild/linux-mips64el': 0.27.7 + '@esbuild/linux-ppc64': 0.27.7 + '@esbuild/linux-riscv64': 0.27.7 + '@esbuild/linux-s390x': 0.27.7 + '@esbuild/linux-x64': 0.27.7 + '@esbuild/netbsd-arm64': 0.27.7 + '@esbuild/netbsd-x64': 0.27.7 + '@esbuild/openbsd-arm64': 0.27.7 + '@esbuild/openbsd-x64': 0.27.7 + '@esbuild/openharmony-arm64': 0.27.7 + '@esbuild/sunos-x64': 0.27.7 + '@esbuild/win32-arm64': 0.27.7 + '@esbuild/win32-ia32': 0.27.7 + '@esbuild/win32-x64': 0.27.7 + + escalade@3.2.0: {} + + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 - eventemitter3@5.0.1: {} + esprima@4.0.1: {} - events@3.3.0: {} + estraverse@5.3.0: {} - execa@5.1.1: + esutils@2.0.3: {} + + eventemitter3@5.0.1: {} + + extract-zip@2.0.1: dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 + debug: 4.3.4 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color fast-content-type-parse@1.1.0: {} @@ -1666,14 +2852,6 @@ snapshots: fast-deep-equal@3.1.3: {} - fast-glob@3.3.2: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - fast-json-stringify@5.9.1: dependencies: '@fastify/deepmerge': 1.3.0 @@ -1688,59 +2866,75 @@ snapshots: dependencies: fast-decode-uri-component: 1.0.1 - fast-redact@3.3.0: {} - fast-uri@2.3.0: {} - fastify@4.24.3: + fastify@4.29.1: dependencies: '@fastify/ajv-compiler': 3.5.0 '@fastify/error': 3.4.1 '@fastify/fast-json-stringify-compiler': 4.3.0 abstract-logging: 2.0.1 - avvio: 8.2.1 + avvio: 8.4.0 fast-content-type-parse: 1.1.0 fast-json-stringify: 5.9.1 - find-my-way: 7.7.0 + find-my-way: 8.2.2 light-my-request: 5.11.0 - pino: 8.16.2 - process-warning: 2.3.0 + pino: 9.14.0 + process-warning: 3.0.0 proxy-addr: 2.0.7 rfdc: 1.3.0 secure-json-parse: 2.7.0 - semver: 7.5.4 + semver: 7.6.3 toad-cache: 3.3.0 - transitivePeerDependencies: - - supports-color - fastq@1.15.0: + fastq@1.20.1: dependencies: reusify: 1.0.4 + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + + fdir@6.5.0(picomatch@4.0.5): + optionalDependencies: + picomatch: 4.0.5 + fecha@4.2.3: {} - fill-range@7.0.1: + figlet@1.11.0: dependencies: - to-regex-range: 5.0.1 + commander: 14.0.3 + + find-free-port@2.0.0: {} - find-my-way@7.7.0: + find-my-way@8.2.2: dependencies: fast-deep-equal: 3.1.3 fast-querystring: 1.1.2 - safe-regex2: 2.0.0 + safe-regex2: 3.1.0 + + fix-dts-default-cjs-exports@1.0.1: + dependencies: + magic-string: 0.30.21 + mlly: 1.8.2 + rollup: 4.62.2 fn.name@1.1.0: {} - follow-redirects@1.15.3: {} + follow-redirects@1.16.0: {} - form-data@4.0.0: + form-data@4.0.6: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.4 mime-types: 2.1.35 forwarded@0.2.0: {} + fs-constants@1.0.0: {} + fs.realpath@1.0.0: {} fsevents@2.3.2: @@ -1749,11 +2943,33 @@ snapshots: fsevents@2.3.3: optional: true - get-stream@6.0.1: {} + function-bind@1.1.2: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.4 + math-intrinsics: 1.1.0 + + get-port@1.0.0: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.2 - glob-parent@5.1.2: + get-stream@5.2.0: dependencies: - is-glob: 4.0.3 + pump: 3.0.4 glob@7.1.6: dependencies: @@ -1764,22 +2980,79 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - globby@11.1.0: + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + gradient-string@2.0.2: dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.0 - merge2: 1.4.1 - slash: 3.0.0 + chalk: 4.1.2 + tinygradient: 1.1.5 has-flag@4.0.0: {} - human-signals@2.1.0: {} + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.4: + dependencies: + function-bind: 1.1.2 + + html-encoding-sniffer@3.0.0: + dependencies: + whatwg-encoding: 2.0.0 + + http-proxy-agent@5.0.0: + dependencies: + '@tootallnate/once': 2.0.1 + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.4 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.4 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 ieee754@1.2.1: {} - ignore@5.3.0: {} + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 inflight@1.0.6: dependencies: @@ -1790,45 +3063,92 @@ snapshots: ipaddr.js@1.9.1: {} - is-arrayish@0.3.2: {} + is-arrayish@0.2.1: {} - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.2.0 + is-arrayish@0.3.2: {} - is-extglob@2.1.1: {} + is-fullwidth-code-point@3.0.0: {} is-fullwidth-code-point@4.0.0: {} - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 + is-interactive@1.0.0: {} - is-number@7.0.0: {} + is-potential-custom-element-name@1.0.1: {} is-stream@2.0.1: {} + is-unicode-supported@0.1.0: {} + + isarray@1.0.0: {} + isexe@2.0.0: {} isexe@3.1.1: {} joycon@3.1.1: {} + js-tokens@4.0.0: {} + + js-yaml@4.3.0: + dependencies: + argparse: 2.0.1 + + jsdom@21.1.2: + dependencies: + abab: 2.0.6 + acorn: 8.17.0 + acorn-globals: 7.0.1 + cssstyle: 3.0.0 + data-urls: 4.0.0 + decimal.js: 10.6.0 + domexception: 4.0.0 + escodegen: 2.1.0 + form-data: 4.0.6 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.24 + parse5: 7.3.0 + rrweb-cssom: 0.6.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.4 + w3c-xmlserializer: 4.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 12.0.1 + ws: 8.21.0 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + json-parse-even-better-errors@2.3.1: {} + json-schema-ref-resolver@1.0.1: dependencies: fast-deep-equal: 3.1.3 json-schema-traverse@1.0.0: {} + json-stringify-safe@5.0.1: {} + kuler@2.0.0: {} + lazystream@1.0.1: + dependencies: + readable-stream: 2.3.8 + light-my-request@5.11.0: dependencies: cookie: 0.5.0 process-warning: 2.3.0 set-cookie-parser: 2.6.0 - lilconfig@2.1.0: {} + lilconfig@3.1.3: {} lines-and-columns@1.2.4: {} @@ -1843,7 +3163,20 @@ snapshots: load-tsconfig@0.2.5: {} - lodash.sortby@4.7.0: {} + lodash.defaults@4.2.0: {} + + lodash.difference@4.5.0: {} + + lodash.flatten@4.4.0: {} + + lodash.isplainobject@4.0.6: {} + + lodash.union@4.6.0: {} + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 log-update@5.0.1: dependencies: @@ -1862,18 +3195,11 @@ snapshots: safe-stable-stringify: 2.4.3 triple-beam: 1.4.1 - lru-cache@6.0.0: + magic-string@0.30.21: dependencies: - yallist: 4.0.0 - - merge-stream@2.0.0: {} + '@jridgewell/sourcemap-codec': 1.5.5 - merge2@1.4.1: {} - - micromatch@4.0.5: - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 + math-intrinsics@1.1.0: {} mime-db@1.52.0: {} @@ -1887,19 +3213,44 @@ snapshots: dependencies: brace-expansion: 1.1.11 + minimatch@5.1.9: + dependencies: + brace-expansion: 2.1.2 + + mitt@3.0.0: {} + + mkdirp-classic@0.5.3: {} + + mlly@1.8.2: + dependencies: + acorn: 8.17.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.4 + ms@2.1.2: {} + ms@2.1.3: {} + mz@2.7.0: dependencies: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 - normalize-path@3.0.0: {} + nanoid@3.3.15: {} - npm-run-path@4.0.1: + node-cache@5.1.2: dependencies: - path-key: 3.1.1 + clone: 2.1.2 + + node-fetch@2.6.7: + dependencies: + whatwg-url: 5.0.0 + + normalize-path@3.0.0: {} + + nwsapi@2.2.24: {} object-assign@4.1.1: {} @@ -1917,53 +3268,104 @@ snapshots: dependencies: mimic-fn: 2.1.0 + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.29.7 + error-ex: 1.3.4 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse5@7.3.0: + dependencies: + entities: 6.0.1 + path-is-absolute@1.0.1: {} path-key@3.1.1: {} path-type@4.0.0: {} - picomatch@2.3.1: {} + pathe@2.0.3: {} + + pend@1.2.0: {} - pino-abstract-transport@1.1.0: + picocolors@1.1.1: {} + + picomatch@4.0.5: {} + + pino-abstract-transport@2.0.0: dependencies: - readable-stream: 4.4.2 split2: 4.2.0 - pino-std-serializers@6.2.2: {} + pino-std-serializers@7.1.0: {} - pino@8.16.2: + pino@9.14.0: dependencies: + '@pinojs/redact': 0.4.0 atomic-sleep: 1.0.0 - fast-redact: 3.3.0 on-exit-leak-free: 2.1.2 - pino-abstract-transport: 1.1.0 - pino-std-serializers: 6.2.2 - process-warning: 2.3.0 + pino-abstract-transport: 2.0.0 + pino-std-serializers: 7.1.0 + process-warning: 5.0.0 quick-format-unescaped: 4.0.4 real-require: 0.2.0 safe-stable-stringify: 2.4.3 - sonic-boom: 3.7.0 - thread-stream: 2.4.1 + sonic-boom: 4.2.1 + thread-stream: 3.2.0 pirates@4.0.6: {} - playwright-core@1.47.2: {} + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.2 + pathe: 2.0.3 + + playwright-core@1.54.2: {} - playwright@1.47.2: + playwright@1.54.2: dependencies: - playwright-core: 1.47.2 + playwright-core: 1.54.2 optionalDependencies: fsevents: 2.3.2 - postcss-load-config@4.0.1: + postcss-load-config@6.0.1(postcss@8.5.16): + dependencies: + lilconfig: 3.1.3 + optionalDependencies: + postcss: 8.5.16 + + postcss@8.5.16: dependencies: - lilconfig: 2.1.0 - yaml: 2.3.4 + nanoid: 3.3.15 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + process-nextick-args@2.0.1: {} process-warning@2.3.0: {} - process@0.11.10: {} + process-warning@3.0.0: {} + + process-warning@5.0.0: {} + + progress@2.0.3: {} proxy-addr@2.0.7: dependencies: @@ -1972,68 +3374,159 @@ snapshots: proxy-from-env@1.1.0: {} + proxy-from-env@2.1.0: {} + + psl@1.15.0: + dependencies: + punycode: 2.3.1 + + pump@3.0.4: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + punycode@2.3.1: {} - queue-microtask@1.2.3: {} + puppeteer-core@19.11.1(typescript@5.3.2): + dependencies: + '@puppeteer/browsers': 0.5.0(typescript@5.3.2) + chromium-bidi: 0.4.7(devtools-protocol@0.0.1107588) + cross-fetch: 3.1.5 + debug: 4.3.4 + devtools-protocol: 0.0.1107588 + extract-zip: 2.0.1 + https-proxy-agent: 5.0.1 + proxy-from-env: 1.1.0 + tar-fs: 2.1.1 + unbzip2-stream: 1.4.3 + ws: 8.13.0 + optionalDependencies: + typescript: 5.3.2 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + puppeteer@19.11.1(typescript@5.3.2): + dependencies: + '@puppeteer/browsers': 0.5.0(typescript@5.3.2) + cosmiconfig: 8.1.3 + https-proxy-agent: 5.0.1 + progress: 2.0.3 + proxy-from-env: 1.1.0 + puppeteer-core: 19.11.1(typescript@5.3.2) + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - typescript + - utf-8-validate + + querystringify@2.2.0: {} quick-format-unescaped@4.0.4: {} - readable-stream@3.6.2: + readable-stream@2.3.8: dependencies: + core-util-is: 1.0.3 inherits: 2.0.4 - string_decoder: 1.3.0 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 util-deprecate: 1.0.2 - readable-stream@4.4.2: + readable-stream@3.6.2: dependencies: - abort-controller: 3.0.0 - buffer: 6.0.3 - events: 3.3.0 - process: 0.11.10 + inherits: 2.0.4 string_decoder: 1.3.0 + util-deprecate: 1.0.2 - readdirp@3.6.0: + readdir-glob@1.1.3: dependencies: - picomatch: 2.3.1 + minimatch: 5.1.9 + + readdirp@4.1.2: {} real-require@0.2.0: {} + require-directory@2.1.1: {} + require-from-string@2.0.2: {} + requires-port@1.0.0: {} + + resolve-from@4.0.0: {} + resolve-from@5.0.0: {} + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + restore-cursor@4.0.0: dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - ret@0.2.2: {} + ret@0.4.3: {} reusify@1.0.4: {} rfdc@1.3.0: {} - rollup@3.29.4: + rollup@4.62.2: + dependencies: + '@types/estree': 1.0.9 optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.62.2 + '@rollup/rollup-android-arm64': 4.62.2 + '@rollup/rollup-darwin-arm64': 4.62.2 + '@rollup/rollup-darwin-x64': 4.62.2 + '@rollup/rollup-freebsd-arm64': 4.62.2 + '@rollup/rollup-freebsd-x64': 4.62.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.62.2 + '@rollup/rollup-linux-arm-musleabihf': 4.62.2 + '@rollup/rollup-linux-arm64-gnu': 4.62.2 + '@rollup/rollup-linux-arm64-musl': 4.62.2 + '@rollup/rollup-linux-loong64-gnu': 4.62.2 + '@rollup/rollup-linux-loong64-musl': 4.62.2 + '@rollup/rollup-linux-ppc64-gnu': 4.62.2 + '@rollup/rollup-linux-ppc64-musl': 4.62.2 + '@rollup/rollup-linux-riscv64-gnu': 4.62.2 + '@rollup/rollup-linux-riscv64-musl': 4.62.2 + '@rollup/rollup-linux-s390x-gnu': 4.62.2 + '@rollup/rollup-linux-x64-gnu': 4.62.2 + '@rollup/rollup-linux-x64-musl': 4.62.2 + '@rollup/rollup-openbsd-x64': 4.62.2 + '@rollup/rollup-openharmony-arm64': 4.62.2 + '@rollup/rollup-win32-arm64-msvc': 4.62.2 + '@rollup/rollup-win32-ia32-msvc': 4.62.2 + '@rollup/rollup-win32-x64-gnu': 4.62.2 + '@rollup/rollup-win32-x64-msvc': 4.62.2 fsevents: 2.3.3 - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 + rrweb-cssom@0.6.0: {} + + safe-buffer@5.1.2: {} safe-buffer@5.2.1: {} - safe-regex2@2.0.0: + safe-regex2@3.1.0: dependencies: - ret: 0.2.2 + ret: 0.4.3 safe-stable-stringify@2.4.3: {} - secure-json-parse@2.7.0: {} + safer-buffer@2.1.2: {} - semver@7.5.4: + saxes@6.0.0: dependencies: - lru-cache: 6.0.0 + xmlchars: 2.2.0 + + secure-json-parse@2.7.0: {} semver@7.6.3: {} @@ -2077,55 +3570,89 @@ snapshots: dependencies: is-arrayish: 0.3.2 - slash@3.0.0: {} - slice-ansi@5.0.0: dependencies: ansi-styles: 6.2.1 is-fullwidth-code-point: 4.0.0 - sonic-boom@3.7.0: + sonic-boom@4.2.1: dependencies: atomic-sleep: 1.0.0 - source-map@0.8.0-beta.0: - dependencies: - whatwg-url: 7.1.0 + source-map-js@1.2.1: {} + + source-map@0.6.1: + optional: true + + source-map@0.7.6: {} split2@4.2.0: {} + split@1.0.1: + dependencies: + through: 2.3.8 + stack-trace@0.0.10: {} + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + string-width@5.1.2: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + strip-ansi@7.1.0: dependencies: ansi-regex: 6.0.1 - strip-final-newline@2.0.0: {} - - sucrase@3.34.0: + sucrase@3.35.1: dependencies: '@jridgewell/gen-mapping': 0.3.3 commander: 4.1.1 - glob: 7.1.6 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 + tinyglobby: 0.2.17 ts-interface-checker: 0.1.13 supports-color@7.2.0: dependencies: has-flag: 4.0.0 + symbol-tree@3.2.4: {} + + tar-fs@2.1.1: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.4 + tar-stream: 2.2.0 + + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.5 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + text-hex@1.0.0: {} thenify-all@1.6.0: @@ -2136,17 +3663,38 @@ snapshots: dependencies: any-promise: 1.3.0 - thread-stream@2.4.1: + thread-stream@3.2.0: dependencies: real-require: 0.2.0 - to-regex-range@5.0.1: + through@2.3.8: {} + + tinycolor2@1.6.0: {} + + tinyexec@0.3.2: {} + + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.5) + picomatch: 4.0.5 + + tinygradient@1.1.5: dependencies: - is-number: 7.0.0 + '@types/tinycolor2': 1.4.6 + tinycolor2: 1.6.0 toad-cache@3.3.0: {} - tr46@1.0.1: + tough-cookie@4.1.4: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + + tr46@0.0.3: {} + + tr46@4.1.1: dependencies: punycode: 2.3.1 @@ -2159,47 +3707,91 @@ snapshots: tslib@2.6.3: optional: true - tsup@7.2.0(typescript@5.3.2): + tsup@8.5.1(postcss@8.5.16)(typescript@5.3.2): dependencies: - bundle-require: 4.0.2(esbuild@0.18.20) + bundle-require: 5.1.0(esbuild@0.27.7) cac: 6.7.14 - chokidar: 3.5.3 - debug: 4.3.4 - esbuild: 0.18.20 - execa: 5.1.1 - globby: 11.1.0 + chokidar: 4.0.3 + consola: 3.4.2 + debug: 4.4.3 + esbuild: 0.27.7 + fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 - postcss-load-config: 4.0.1 + picocolors: 1.1.1 + postcss-load-config: 6.0.1(postcss@8.5.16) resolve-from: 5.0.0 - rollup: 3.29.4 - source-map: 0.8.0-beta.0 - sucrase: 3.34.0 + rollup: 4.62.2 + source-map: 0.7.6 + sucrase: 3.35.1 + tinyexec: 0.3.2 + tinyglobby: 0.2.17 tree-kill: 1.2.2 optionalDependencies: + postcss: 8.5.16 typescript: 5.3.2 transitivePeerDependencies: + - jiti - supports-color - - ts-node + - tsx + - yaml + + type-fest@0.20.2: {} type-fest@1.4.0: {} typescript@5.3.2: {} + ufo@1.6.4: {} + + unbzip2-stream@1.4.3: + dependencies: + buffer: 5.7.1 + through: 2.3.8 + undici-types@5.26.5: {} + universalify@0.2.0: {} + uri-js@4.4.1: dependencies: punycode: 2.3.1 + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + util-deprecate@1.0.2: {} - webidl-conversions@4.0.2: {} + uuid@11.1.1: {} + + w3c-xmlserializer@4.0.0: + dependencies: + xml-name-validator: 4.0.0 + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + webidl-conversions@3.0.1: {} + + webidl-conversions@7.0.0: {} + + whatwg-encoding@2.0.0: + dependencies: + iconv-lite: 0.6.3 + + whatwg-mimetype@3.0.0: {} + + whatwg-url@12.0.1: + dependencies: + tr46: 4.1.1 + webidl-conversions: 7.0.0 - whatwg-url@7.1.0: + whatwg-url@5.0.0: dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 + tr46: 0.0.3 + webidl-conversions: 3.0.1 which@2.0.2: dependencies: @@ -2209,6 +3801,10 @@ snapshots: dependencies: isexe: 3.1.1 + widest-line@3.1.0: + dependencies: + string-width: 4.2.3 + winston-transport@4.6.0: dependencies: logform: 2.6.0 @@ -2229,6 +3825,12 @@ snapshots: triple-beam: 1.4.1 winston-transport: 4.6.0 + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi@8.1.0: dependencies: ansi-styles: 6.2.1 @@ -2237,6 +3839,35 @@ snapshots: wrappy@1.0.2: {} - yallist@4.0.0: {} + ws@8.13.0: {} + + ws@8.21.0: {} + + xml-name-validator@4.0.0: {} + + xmlchars@2.2.0: {} - yaml@2.3.4: {} + y18n@5.0.8: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.1: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + + zip-stream@4.1.1: + dependencies: + archiver-utils: 3.0.4 + compress-commons: 4.1.2 + readable-stream: 3.6.2 diff --git a/src/commander/commander.ts b/src/commander/commander.ts index 0e6bac9..12538fa 100644 --- a/src/commander/commander.ts +++ b/src/commander/commander.ts @@ -1,8 +1,9 @@ import { Command } from 'commander' import exec from './exec.js' -import { configWeb, configStatic, configFigma, configWebFigma, configAppFigma} from './config.js' +import { configWeb, configStatic, configFigma, configWebFigma, configAppFigma, configStorybook} from './config.js' import capture from './capture.js' import upload from './upload.js' +import storybook from './storybook.js' import { version } from '../../package.json' import { uploadFigma, uploadWebFigmaCommand,uploadAppFigmaCommand } from './uploadFigma.js' import startServer from './server.js'; @@ -32,6 +33,8 @@ program .addCommand(capture) .addCommand(configWeb) .addCommand(configStatic) + .addCommand(configStorybook) + .addCommand(storybook) .addCommand(upload) .addCommand(startServer) .addCommand(stopServer) diff --git a/src/commander/config.ts b/src/commander/config.ts index 546d73e..283570d 100644 --- a/src/commander/config.ts +++ b/src/commander/config.ts @@ -1,11 +1,12 @@ import { Command } from 'commander' -import { createConfig, createWebStaticConfig, createFigmaConfig, createWebFigmaConfig, createAppFigmaConfig } from '../lib/config.js' +import { createConfig, createWebStaticConfig, createFigmaConfig, createWebFigmaConfig, createAppFigmaConfig, createStorybookConfig } from '../lib/config.js' export const configWeb = new Command(); export const configStatic = new Command(); export const configFigma = new Command(); export const configWebFigma = new Command(); export const configAppFigma = new Command(); +export const configStorybook = new Command(); configWeb @@ -24,6 +25,14 @@ configStatic createWebStaticConfig(filepath); }) +configStorybook + .name('config:create-storybook') + .description('Create SmartUI Storybook config file') + .argument('[filepath]', 'Optional config filepath') + .action(async function(filepath, options) { + createStorybookConfig(filepath); + }) + configFigma .name('config:create-figma') .description('Create figma designs config file') diff --git a/src/commander/storybook.ts b/src/commander/storybook.ts new file mode 100644 index 0000000..397dcff --- /dev/null +++ b/src/commander/storybook.ts @@ -0,0 +1,109 @@ +// @ts-nocheck +import { Command, Option } from 'commander' +import fs from 'fs' +// Faithful vendored relocation of the proven @lambdatest/smartui-storybook engine. +// The Storybook capture path talks to the same /storybook/* backend the standalone +// package already uses in production, so behavior is unchanged — it now simply lives +// inside the single unified `smartui` binary (no more colliding bins / double install). +import vendor from '../storybookVendor/index.cjs' +import tui from '../lib/tui.cjs' +const { runStorybook } = vendor + +// Best-effort preview of what this run will cover (never throws). +function preview(target, mode, configPath) { + let browsers = 'chrome, firefox, safari, edge'; + let viewports = '1920×1080'; + let stories; + try { + if (configPath && fs.existsSync(configPath)) { + const sb = (JSON.parse(fs.readFileSync(configPath, 'utf8')).storybook) || {}; + if (Array.isArray(sb.browsers) && sb.browsers.length) browsers = sb.browsers.join(', '); + const vp = sb.resolutions || sb.viewports; + if (Array.isArray(vp) && vp.length) viewports = vp.map(v => v.join('×')).join(' '); + } + } catch (_) {} + try { + if (mode === 'dir') { + const idx = fs.existsSync(`${target}/stories.json`) ? `${target}/stories.json` + : fs.existsSync(`${target}/index.json`) ? `${target}/index.json` : null; + if (idx) { + const j = JSON.parse(fs.readFileSync(idx, 'utf8')); + const entries = j.stories || j.entries || {}; + const n = Object.values(entries).filter((e: any) => e.type !== 'docs').length; + stories = `${n} stories`; + } + } + } catch (_) {} + return { browsers, viewports, stories }; +} + +const command = new Command(); + +command + .name('storybook') + .description('Snapshot Storybook stories (URL or static build directory)') + .argument('', 'Storybook server URL or path to a storybook-static build directory') + .option('-c, --config ', 'Config file path') + .option('--force-rebuild', 'Force a rebuild of an already existing build', false) + .option('--buildName ', 'Specify the build name for the pipeline') + .addOption(new Option('--env ', 'Runtime environment').choices(['prod', 'stage'])) + .action(async function (target, options, command) { + // Merge root-level global flags (e.g. --config, --markBaseline) so they reach + // the engine even when the same flag exists globally and locally. + const globals = command.optsWithGlobals(); + options.config = options.config || globals.config; + options.env = options.env || 'prod'; + const mode = /^https?:\/\//.test(target) ? 'url' : 'dir'; + const p = preview(target, mode, options.config); + + tui.banner(); + tui.runHeader({ + target, + mode, + buildName: options.buildName, + env: options.env, + configPath: options.config, + browsers: p.browsers, + viewports: p.viewports, + storyHint: p.stories, + }); + + // Tee stdout so we can parse the final build stats for a summary box. + // The engine's polling isn't fully awaited, so we print the summary on + // 'beforeExit' — that fires only once the event loop drains, i.e. after + // polling truly finishes, guaranteeing the box is the last thing shown. + const origLog = console.log; + let captured = ''; + console.log = (...a: any[]) => { captured += a.map(String).join(' ') + '\n'; origLog(...a); }; + + const grab = (re: RegExp) => { const m = captured.match(re); return m && m[1]; }; + let printed = false; + const printSummary = () => { + if (printed) return; printed = true; + console.log = origLog; + const failed = /Build failed|\[smartui\] Error:/i.test(captured) || process.exitCode === 1; + if (failed) { tui.resultBox(false, { message: grab(/(?:Build failed|Error):\s*(.+)/i) || undefined }); return; } + const url = grab(/Build URL:\s*(\S+)/i); + const stats = tui.kv([ + ['Screenshots', grab(/Total Screenshots:\s*(\d+)/i)], + ['Approved', grab(/Approved:\s*(\d+)/i)], + ['Changes found', grab(/Changes found:\s*(\d+)/i)], + ['Rejected', grab(/Rejected:\s*(\d+)/i)], + ['Baseline', /baseline build/i.test(captured) ? 'yes (first run — no comparisons)' : undefined], + ]); + if (url) stats.unshift(tui.kv([['Dashboard', url]])[0]); + tui.box(`${tui.paint('Storybook build complete')}`, stats.length ? stats : [tui.dim('See log above.')], { tag: ' done ', color: 'green' }); + }; + process.once('beforeExit', printSummary); + + try { + await runStorybook(target, options); + } catch (error: any) { + console.log = origLog; + printed = true; + tui.resultBox(false, { message: error && error.message }); + process.exitCode = 1; + } + }) + +export default command; diff --git a/src/dom/dom-serializer.js b/src/dom/dom-serializer.js index b08054f..8ef7918 100644 --- a/src/dom/dom-serializer.js +++ b/src/dom/dom-serializer.js @@ -1 +1,2 @@ -(function(_0x40c4a2,_0x2284c6){var _0x1bcd3c=a0_0x51e0,_0x30d1ed=_0x40c4a2();while(!![]){try{var _0x60f52e=parseInt(_0x1bcd3c(0x1bb))/(0x1924+0x690+-0x1fb3)+parseInt(_0x1bcd3c(0x23d))/(-0x1830+-0x1c71+-0xb*-0x4c9)*(parseInt(_0x1bcd3c(0x179))/(-0x1d06+0x29*0x81+-0x2*-0x430))+parseInt(_0x1bcd3c(0x194))/(-0xe+0x1e31*0x1+-0x1e1f)*(-parseInt(_0x1bcd3c(0x1ca))/(-0xde3*0x1+0x6*-0x67d+-0x1*-0x34d6))+-parseInt(_0x1bcd3c(0x19e))/(-0x149*0x17+-0x1640+-0x3*-0x1147)+-parseInt(_0x1bcd3c(0x1f9))/(-0x1*0x72a+-0x1*0x1bc3+0x22f4)+-parseInt(_0x1bcd3c(0x1fe))/(0x1a1*0x7+-0x7c3+-0x39c)+parseInt(_0x1bcd3c(0x1c8))/(-0x2120+0x2564+-0x13*0x39)*(parseInt(_0x1bcd3c(0x252))/(-0x212d+0x1*0x2195+-0x1*0x5e));if(_0x60f52e===_0x2284c6)break;else _0x30d1ed['push'](_0x30d1ed['shift']());}catch(_0x24c1a8){_0x30d1ed['push'](_0x30d1ed['shift']());}}}(a0_0x305f,-0x3*-0x6f2d7+-0x1*-0x219e7+0x3f273*-0x2),!(function(){var _0x2c1230=a0_0x51e0,_0x402650=(function(){var _0x5731a1=!![];return function(_0x164381,_0x11cf26){var _0x3dda1e=_0x5731a1?function(){var _0x91b562=a0_0x51e0;if(_0x11cf26){var _0x581fb1=_0x11cf26[_0x91b562(0x192)](_0x164381,arguments);return _0x11cf26=null,_0x581fb1;}}:function(){};return _0x5731a1=![],_0x3dda1e;};}());'use strict';var _0xc7ac09={};function _0x476f21(_0x4b3bc7){var _0x55b799=a0_0x51e0;return _0x476f21=_0x55b799(0x14f)==typeof Symbol&&'symbol'==typeof Symbol[_0x55b799(0x1eb)]?function(_0x2bbfe6){return typeof _0x2bbfe6;}:function(_0x446b85){var _0x5f1b43=_0x55b799;return _0x446b85&&'function'==typeof Symbol&&_0x446b85[_0x5f1b43(0x231)+'r']===Symbol&&_0x446b85!==Symbol[_0x5f1b43(0x19b)]?'symbol':typeof _0x446b85;},_0x476f21(_0x4b3bc7);}function _0x1a44c1(_0x398292,_0xffb1a6){var _0x486d6c=a0_0x51e0,_0x61aab2=Object['keys'](_0x398292);if(Object[_0x486d6c(0x1fc)+_0x486d6c(0x1a6)+'s']){var _0x3587a6=Object[_0x486d6c(0x1fc)+_0x486d6c(0x1a6)+'s'](_0x398292);_0xffb1a6&&(_0x3587a6=_0x3587a6[_0x486d6c(0x1e5)](function(_0xa4644f){var _0x2dbbc4=_0x486d6c;return Object[_0x2dbbc4(0x1fc)+_0x2dbbc4(0x196)+'ptor'](_0x398292,_0xa4644f)[_0x2dbbc4(0x1e2)];})),_0x61aab2[_0x486d6c(0x19c)]['apply'](_0x61aab2,_0x3587a6);}return _0x61aab2;}function _0x625525(_0x534fcb){var _0x5bb447=a0_0x51e0;for(var _0x4fd63d=-0x3b*-0xa9+0x1*0x2027+0x4719*-0x1;_0x4fd63d_0x830b32['length'])&&(_0x3ef976=_0x830b32[_0x6ae7ae(0x23f)]);for(var _0x1c88b8=-0x1b7*0x1+0x3c0+-0x209,_0x3e73fe=Array(_0x3ef976);_0x1c88b8<_0x3ef976;_0x1c88b8++)_0x3e73fe[_0x1c88b8]=_0x830b32[_0x1c88b8];return _0x3e73fe;}function _0x2851dc(_0x1f6634,_0xe1a8fa){var _0x3d694b=a0_0x51e0,_0x418e12=_0x149c02(_0xe1a8fa[_0x3d694b(0x12e)](','),0x2*0x6b6+0x1*0x1de+-0x18*0xa3),_0x67745d=_0x418e12[-0x3*-0x221+0xd*0x4b+-0xa32],_0x9773e1=_0x418e12[-0x1d3f+-0x116a+-0x21f*-0x16],_0x56d088=_0x149c02(_0x67745d[_0x3d694b(0x12e)](':'),-0x469*0x6+-0x3c5*-0xa+-0xb3a)[0x6b*-0x11+-0x11d9*0x2+0x2ace],_0x5c5097=_0x149c02(_0x56d088[_0x3d694b(0x12e)](';'),-0x16d3+0x1ece+-0x7fa),_0xdd6757=_0x149c02((_0x56d088=_0x5c5097[0x1b63+-0xe7a+-0xce9])[_0x3d694b(0x12e)]('/'),-0x2071+-0x24c5+0x4538)[0x1f33+0x11ce+0x620*-0x8],_0x3cab2e=('/__seriali'+_0x3d694b(0x1d0))['concat'](_0x1f6634,'.')[_0x3d694b(0x15b)](_0xdd6757);return{'url':_0x49c265(new URL(_0x3cab2e,document[_0x3d694b(0x1ef)])[_0x3d694b(0x21b)]()),'content':_0x9773e1,'mimetype':_0x56d088};}function _0x85940(_0x37bcf7,_0x43003b,_0x4afa67){var _0x5787f0=a0_0x51e0,_0x583b52=_0x149c02(_0x43003b['split']('/'),0x1691+0x2*0xd77+0x67*-0x7b)[-0x2531*-0x1+-0xe30+-0x1700],_0xc7ee27=(_0x5787f0(0x22c)+_0x5787f0(0x1d0))[_0x5787f0(0x15b)](_0x37bcf7,'.')[_0x5787f0(0x15b)](_0x583b52);return{'url':_0x49c265(new URL(_0xc7ee27,document[_0x5787f0(0x1ef)])[_0x5787f0(0x21b)]()),'content':_0x4afa67,'mimetype':_0x43003b};}function _0x5baf0d(_0x3d9b3c){var _0x145cf3=a0_0x51e0;if(_0x3d9b3c[_0x145cf3(0x1fa)])return _0x3d9b3c[_0x145cf3(0x1fa)];var _0x5a5840=_0x3d9b3c[_0x145cf3(0x1c4)]();_0x5a5840[_0x145cf3(0x17e)+'te'](_0x145cf3(0x210)+_0x145cf3(0x171)+'elper',''),_0x5a5840[_0x145cf3(0x203)]=_0x3d9b3c['innerHTML'],document[_0x145cf3(0x1c4)]()[_0x145cf3(0x1f8)+'d'](_0x5a5840);var _0x1c0173=_0x5a5840[_0x145cf3(0x1fa)];return _0x5a5840[_0x145cf3(0x1d6)](),_0x1c0173;}function _0x49c265(_0x3b6ca1){var _0x51973e=a0_0x51e0;return _0x3b6ca1['replace'](/(http[s]{0,1}:\/\/)(localhost|127.0.0.1)[:\d+]*/,_0x51973e(0x15f)+_0x51973e(0x1e1)+'al');}function _0x1958da(_0x53be90,_0x16903f){var _0x5d2fd7=a0_0x51e0,_0x2d9ac4=arguments[_0x5d2fd7(0x23f)]>-0x92*0x3b+-0x12b3+0x345b&&void(0x314*-0x1+0x26ad+-0x1*0x2399)!==arguments[-0x1ae+-0x16c3+0x1873*0x1]?arguments[0xc9*0x16+-0x102f+-0x1*0x115]:null,_0x6f8024=arguments[_0x5d2fd7(0x23f)]>0xa50+-0x49f*0x2+-0x10f&&void(-0x2*-0xdb2+-0x1131+-0xa33*0x1)!==arguments[-0x1a69+-0x1e5c+0x38c8]?arguments[0x17fc+-0x3*0x52+0x1703*-0x1]:{},_0x2eb382={};throw _0x2d9ac4&&(_0x2eb382={'nodeName':_0x2d9ac4[_0x5d2fd7(0x1c2)],'classNames':_0x2d9ac4[_0x5d2fd7(0x24e)],'id':_0x2d9ac4['id']}),_0x6f8024=_0x625525(_0x625525({},_0x6f8024),_0x2eb382),_0x53be90[_0x5d2fd7(0x17a)]+='\x0a'[_0x5d2fd7(0x15b)](_0x16903f,'\x20\x0a')['concat'](JSON['stringify'](_0x6f8024)),_0x53be90[_0x5d2fd7(0x17a)]+='\x0a\x20Please\x20v'+_0x5d2fd7(0x20d)+_0x5d2fd7(0x18f)+'M\x20is\x20as\x20pe'+_0x5d2fd7(0x20f)+_0x5d2fd7(0x1c6)+_0x5d2fd7(0x176)+_0x5d2fd7(0x178),_0x53be90[_0x5d2fd7(0x1f1)]=!(-0x1e6e*0x1+0xa9*0x3a+-0x7dc),_0x53be90;}function _0x1a3473(_0x1ba02d,_0xedd0a3){var _0xbaea6d=a0_0x51e0,_0x7567d4=_0xbaea6d(0x1d9)!=typeof Symbol&&_0x1ba02d[Symbol['iterator']]||_0x1ba02d[_0xbaea6d(0x141)];if(!_0x7567d4){if(Array[_0xbaea6d(0x204)](_0x1ba02d)||(_0x7567d4=function(_0x4c3092,_0x1450a1){var _0x43e390=_0xbaea6d;if(_0x4c3092){if(_0x43e390(0x126)==typeof _0x4c3092)return _0xfdf844(_0x4c3092,_0x1450a1);var _0x5c4573={}['toString'][_0x43e390(0x20a)](_0x4c3092)[_0x43e390(0x14d)](0x3be+-0xdf*0x4+-0x3a,-(0x657*0x4+-0x1e88+0x52d));return'Object'===_0x5c4573&&_0x4c3092[_0x43e390(0x231)+'r']&&(_0x5c4573=_0x4c3092[_0x43e390(0x231)+'r'][_0x43e390(0x200)]),'Map'===_0x5c4573||'Set'===_0x5c4573?Array['from'](_0x4c3092):'Arguments'===_0x5c4573||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/[_0x43e390(0x1b1)](_0x5c4573)?_0xfdf844(_0x4c3092,_0x1450a1):void(-0x26f7+-0x4*0x62b+0x3fa3);}}(_0x1ba02d))||_0xedd0a3&&_0x1ba02d&&_0xbaea6d(0x1d5)==typeof _0x1ba02d[_0xbaea6d(0x23f)]){_0x7567d4&&(_0x1ba02d=_0x7567d4);var _0x1581f6=-0x2340+-0x1051+0x3391,_0x30c6d5=function(){},_0x44623f={};return _0x44623f['s']=_0x30c6d5,_0x44623f['n']=function(){var _0x402523=_0xbaea6d,_0x446ecf={};return _0x446ecf['done']=!(-0x1*0x1081+0x10d5*-0x1+0x2156),_0x1581f6>=_0x1ba02d[_0x402523(0x23f)]?_0x446ecf:{'done':!(0x943+0x25c8+-0x3*0xfae),'value':_0x1ba02d[_0x1581f6++]};},_0x44623f['e']=function(_0x1b8c97){throw _0x1b8c97;},_0x44623f['f']=_0x30c6d5,_0x44623f;}throw new TypeError(_0xbaea6d(0x221)+_0xbaea6d(0x1da)+_0xbaea6d(0x253)+_0xbaea6d(0x227)+_0xbaea6d(0x213)+_0xbaea6d(0x155)+_0xbaea6d(0x16f)+_0xbaea6d(0x127)+_0xbaea6d(0x18b)+_0xbaea6d(0x182)+_0xbaea6d(0x17f)+_0xbaea6d(0x152)+_0xbaea6d(0x1a3)+'d.');}var _0x163011,_0x410340=!(0xb0c*0x2+-0x1631+0x19),_0x256f6f=!(0x1a2*-0x5+-0x20fd+0x2928);return{'s':function(){var _0x8db463=_0xbaea6d;_0x7567d4=_0x7567d4[_0x8db463(0x20a)](_0x1ba02d);},'n':function(){var _0x56489d=_0xbaea6d,_0x4d69a5=_0x7567d4[_0x56489d(0x184)]();return _0x410340=_0x4d69a5[_0x56489d(0x22a)],_0x4d69a5;},'e':function(_0x2f5cd0){_0x256f6f=!(-0x23ef+0x16a4+-0x29*-0x53),_0x163011=_0x2f5cd0;},'f':function(){var _0x377742=_0xbaea6d;try{_0x410340||null==_0x7567d4[_0x377742(0x1bf)]||_0x7567d4['return']();}finally{if(_0x256f6f)throw _0x163011;}}};}function _0xfdf844(_0xebc7a3,_0x113b28){(null==_0x113b28||_0x113b28>_0xebc7a3['length'])&&(_0x113b28=_0xebc7a3['length']);for(var _0x32c1d3=0x18d6+0x14d8+-0x2dae,_0x56475b=Array(_0x113b28);_0x32c1d3<_0x113b28;_0x32c1d3++)_0x56475b[_0x32c1d3]=_0xebc7a3[_0x32c1d3];return _0x56475b;}_0xc7ac09['g']=(function(){var _0x47e42d=a0_0x51e0,_0x12c432=_0x402650(this,function(){var _0x4d9111=a0_0x51e0;return _0x12c432['toString']()[_0x4d9111(0x20b)](_0x4d9111(0x134)+'+$')['toString']()['constructo'+'r'](_0x12c432)[_0x4d9111(0x20b)]('(((.+)+)+)'+'+$');});_0x12c432();if('object'==typeof globalThis)return globalThis;try{return this||new Function(_0x47e42d(0x16e)+'s')();}catch(_0x178173){if(_0x47e42d(0x185)==typeof window)return window;}}());function _0x354762(_0xdfe80d,_0x1cd7c9){var _0x31fddd=a0_0x51e0,_0x3e28a5=_0x31fddd(0x1d9)!=typeof Symbol&&_0xdfe80d[Symbol[_0x31fddd(0x1eb)]]||_0xdfe80d[_0x31fddd(0x141)];if(!_0x3e28a5){if(Array[_0x31fddd(0x204)](_0xdfe80d)||(_0x3e28a5=function(_0xa4c53e,_0x23521d){var _0x38d3c2=_0x31fddd;if(_0xa4c53e){if('string'==typeof _0xa4c53e)return _0x5b1989(_0xa4c53e,_0x23521d);var _0x1d0ea2={}['toString'][_0x38d3c2(0x20a)](_0xa4c53e)['slice'](-0x95b*-0x3+0xfa0+-0x1*0x2ba9,-(-0x2200+-0x9fa*-0x2+-0x4af*-0x3));return _0x38d3c2(0x22b)===_0x1d0ea2&&_0xa4c53e['constructo'+'r']&&(_0x1d0ea2=_0xa4c53e[_0x38d3c2(0x231)+'r'][_0x38d3c2(0x200)]),_0x38d3c2(0x1dd)===_0x1d0ea2||'Set'===_0x1d0ea2?Array[_0x38d3c2(0x165)](_0xa4c53e):_0x38d3c2(0x1c3)===_0x1d0ea2||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/[_0x38d3c2(0x1b1)](_0x1d0ea2)?_0x5b1989(_0xa4c53e,_0x23521d):void(-0x1e72+0x18a8+-0x1a*-0x39);}}(_0xdfe80d))||_0x1cd7c9&&_0xdfe80d&&'number'==typeof _0xdfe80d[_0x31fddd(0x23f)]){_0x3e28a5&&(_0xdfe80d=_0x3e28a5);var _0x1bf635=-0x243d+-0x3*-0x2cd+0xdeb*0x2,_0xdf27fb=function(){},_0x179299={};return _0x179299['s']=_0xdf27fb,_0x179299['n']=function(){var _0x7e8ae8=_0x31fddd,_0x31ec22={};return _0x31ec22[_0x7e8ae8(0x22a)]=!(-0x9b4+0xb*-0x2b3+0x2765),_0x1bf635>=_0xdfe80d[_0x7e8ae8(0x23f)]?_0x31ec22:{'done':!(0x1*-0x1b0a+-0x12c2+-0x1d5*-0x19),'value':_0xdfe80d[_0x1bf635++]};},_0x179299['e']=function(_0x27d352){throw _0x27d352;},_0x179299['f']=_0xdf27fb,_0x179299;}throw new TypeError('Invalid\x20at'+_0x31fddd(0x1da)+_0x31fddd(0x253)+'-iterable\x20'+_0x31fddd(0x213)+_0x31fddd(0x155)+'o\x20be\x20itera'+'ble,\x20non-a'+_0x31fddd(0x18b)+'ts\x20must\x20ha'+_0x31fddd(0x17f)+_0x31fddd(0x152)+_0x31fddd(0x1a3)+'d.');}var _0x47d55f,_0x3e6f01=!(0x2200+0x3*0x90d+-0x1f9*0x1f),_0x44a980=!(-0x1*-0x155b+-0x1073+-0x5*0xfb);return{'s':function(){var _0x5f09c8=_0x31fddd;_0x3e28a5=_0x3e28a5[_0x5f09c8(0x20a)](_0xdfe80d);},'n':function(){var _0x6ae65d=_0x31fddd,_0x180d24=_0x3e28a5[_0x6ae65d(0x184)]();return _0x3e6f01=_0x180d24['done'],_0x180d24;},'e':function(_0x47947e){_0x44a980=!(0x1b70+0x6*-0x3eb+-0x3ee),_0x47d55f=_0x47947e;},'f':function(){var _0x418302=_0x31fddd;try{_0x3e6f01||null==_0x3e28a5[_0x418302(0x1bf)]||_0x3e28a5[_0x418302(0x1bf)]();}finally{if(_0x44a980)throw _0x47d55f;}}};}function _0x5b1989(_0x3bfc9b,_0x362a3b){(null==_0x362a3b||_0x362a3b>_0x3bfc9b['length'])&&(_0x362a3b=_0x3bfc9b['length']);for(var _0x1601c5=-0xc3d+0xb96+0xa7,_0x22366b=Array(_0x362a3b);_0x1601c5<_0x362a3b;_0x1601c5++)_0x22366b[_0x1601c5]=_0x3bfc9b[_0x1601c5];return _0x22366b;}function _0x5f0fd8(_0x1f09ba){var _0x3e5c3e=a0_0x51e0,_0x1caa6a;if(new URL(_0x1f09ba[_0x3e5c3e(0x193)])[_0x3e5c3e(0x1f3)]){var _0x4e0fb2=document[_0x3e5c3e(0x140)+_0x3e5c3e(0x240)](_0x3e5c3e(0x173));_0x4e0fb2['href']=_0x1f09ba[_0x3e5c3e(0x193)],null===(_0x1caa6a=_0x1f09ba['querySelec'+_0x3e5c3e(0x248)]('head'))||void(0x6a*0x1c+-0x2*-0x97d+0xe*-0x22f)===_0x1caa6a||_0x1caa6a[_0x3e5c3e(0x1d8)](_0x4e0fb2);}}function _0xb0de7f(){var _0x20eb74=a0_0x51e0;return'_'['concat'](Math['random']()[_0x20eb74(0x21b)](-0x1*0x2045+0x1bea*-0x1+0x3c53*0x1)[_0x20eb74(0x1ee)](-0x3*0x665+0x909+-0x145*-0x8,0x4*0x609+-0xd06*-0x1+-0x2521));}function _0xdf511c(_0x4f817f,_0x201a2c){var _0x345664=a0_0x51e0,_0x4349c1=_0x345664(0x1d9)!=typeof Symbol&&_0x4f817f[Symbol[_0x345664(0x1eb)]]||_0x4f817f['@@iterator'];if(!_0x4349c1){if(Array[_0x345664(0x204)](_0x4f817f)||(_0x4349c1=function(_0x599a86,_0x8787f4){var _0x5bfeb4=_0x345664;if(_0x599a86){if(_0x5bfeb4(0x126)==typeof _0x599a86)return _0x5221a8(_0x599a86,_0x8787f4);var _0x3c69b7={}[_0x5bfeb4(0x21b)]['call'](_0x599a86)[_0x5bfeb4(0x14d)](0x1*0xab2+0x1e81+-0x292b,-(0x3*0xac4+0x807+-0x2852));return'Object'===_0x3c69b7&&_0x599a86[_0x5bfeb4(0x231)+'r']&&(_0x3c69b7=_0x599a86['constructo'+'r'][_0x5bfeb4(0x200)]),'Map'===_0x3c69b7||'Set'===_0x3c69b7?Array['from'](_0x599a86):_0x5bfeb4(0x1c3)===_0x3c69b7||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/[_0x5bfeb4(0x1b1)](_0x3c69b7)?_0x5221a8(_0x599a86,_0x8787f4):void(0x10d*0xb+-0xd*0x171+0x72e);}}(_0x4f817f))||_0x201a2c&&_0x4f817f&&_0x345664(0x1d5)==typeof _0x4f817f[_0x345664(0x23f)]){_0x4349c1&&(_0x4f817f=_0x4349c1);var _0x36ea9d=0x9*0x1b2+-0x1*0x1edb+0xf99,_0x47c017=function(){},_0x4361bb={};return _0x4361bb['s']=_0x47c017,_0x4361bb['n']=function(){var _0x3e7156=_0x345664,_0x54e7df={};return _0x54e7df[_0x3e7156(0x22a)]=!(-0x1712+-0x1d98*0x1+-0x2ed*-0x12),_0x36ea9d>=_0x4f817f['length']?_0x54e7df:{'done':!(-0x5ef+-0x1*0x20e+-0x2*-0x3ff),'value':_0x4f817f[_0x36ea9d++]};},_0x4361bb['e']=function(_0x1b8807){throw _0x1b8807;},_0x4361bb['f']=_0x47c017,_0x4361bb;}throw new TypeError(_0x345664(0x221)+_0x345664(0x1da)+_0x345664(0x253)+_0x345664(0x227)+'instance.\x0a'+_0x345664(0x155)+_0x345664(0x16f)+'ble,\x20non-a'+_0x345664(0x18b)+_0x345664(0x182)+_0x345664(0x17f)+_0x345664(0x152)+_0x345664(0x1a3)+'d.');}var _0x1cd90c,_0x44803b=!(-0xd*-0x49+-0x10c1*0x2+-0x1*-0x1dcd),_0xf3d360=!(-0x4e4*0x6+-0x136c+0x30c5);return{'s':function(){var _0x39947d=_0x345664;_0x4349c1=_0x4349c1[_0x39947d(0x20a)](_0x4f817f);},'n':function(){var _0x190f52=_0x345664,_0x55c9db=_0x4349c1[_0x190f52(0x184)]();return _0x44803b=_0x55c9db[_0x190f52(0x22a)],_0x55c9db;},'e':function(_0x4005c4){_0xf3d360=!(-0x107f+-0x6b6+-0xd*-0x1c9),_0x1cd90c=_0x4005c4;},'f':function(){var _0x5dc22a=_0x345664;try{_0x44803b||null==_0x4349c1[_0x5dc22a(0x1bf)]||_0x4349c1[_0x5dc22a(0x1bf)]();}finally{if(_0xf3d360)throw _0x1cd90c;}}};}function _0x5221a8(_0x28b414,_0xa6044e){var _0x1da6ec=a0_0x51e0;(null==_0xa6044e||_0xa6044e>_0x28b414[_0x1da6ec(0x23f)])&&(_0xa6044e=_0x28b414[_0x1da6ec(0x23f)]);for(var _0x703f89=0x4*-0x2dc+-0x901+0x1471,_0x1e8a38=Array(_0xa6044e);_0x703f89<_0xa6044e;_0x703f89++)_0x1e8a38[_0x703f89]=_0x28b414[_0x703f89];return _0x1e8a38;}function _0x4a2d85(_0x16c088){var _0x5acdc6=a0_0x51e0;return!_0x16c088[_0x5acdc6(0x199)]&&_0x16c088[_0x5acdc6(0x23a)]&&_0x16c088[_0x5acdc6(0x20e)];}function _0x5d5910(_0xfb04,_0xc606f9){var _0x21f4bc=a0_0x51e0;for(var _0x84af86=-0xb4b*0x2+-0x1*-0x1c3+-0x6f1*-0x3;_0x84af86<_0xfb04['cssRules'][_0x21f4bc(0x23f)];_0x84af86++){var _0x43de8e;if(_0xfb04[_0x21f4bc(0x23a)][_0x84af86][_0x21f4bc(0x21c)]!==(null===(_0x43de8e=_0xc606f9[_0x21f4bc(0x23a)][_0x84af86])||void(-0x1bb*0x7+0x15b0+0x331*-0x3)===_0x43de8e?void(0x20*-0x17+0x2dc*-0x8+0x19c0):_0x43de8e[_0x21f4bc(0x21c)]))return!(-0xc0b+-0x1da3+0x3*0xde5);}return!(0xa95*-0x1+0x1*-0x1fe8+-0x49*-0x95);}function _0x23f644(_0x5c3663){var _0x3f127f=a0_0x51e0,_0x378fac=Array['from'](_0x5c3663[_0x3f127f(0x23a)])['map'](function(_0x28367b){var _0xe81583=_0x3f127f;return _0x28367b[_0xe81583(0x21c)];})[_0x3f127f(0x14c)]('\x0a');return _0x85940(_0xb0de7f(),_0x3f127f(0x1cc),_0x378fac);}function _0x906ae(_0x3a9685,_0x2dfc43){var _0x28ef7a=a0_0x51e0,_0x4997c3='undefined'!=typeof Symbol&&_0x3a9685[Symbol[_0x28ef7a(0x1eb)]]||_0x3a9685['@@iterator'];if(!_0x4997c3){if(Array[_0x28ef7a(0x204)](_0x3a9685)||(_0x4997c3=function(_0x590eb2,_0x334c59){var _0x1e39ce=_0x28ef7a;if(_0x590eb2){if(_0x1e39ce(0x126)==typeof _0x590eb2)return _0x562259(_0x590eb2,_0x334c59);var _0x2d99ef={}[_0x1e39ce(0x21b)][_0x1e39ce(0x20a)](_0x590eb2)[_0x1e39ce(0x14d)](0xe84*0x2+0x2223+0x1*-0x3f23,-(0x1e*-0xbc+-0x24+0x162d));return'Object'===_0x2d99ef&&_0x590eb2[_0x1e39ce(0x231)+'r']&&(_0x2d99ef=_0x590eb2[_0x1e39ce(0x231)+'r']['name']),_0x1e39ce(0x1dd)===_0x2d99ef||'Set'===_0x2d99ef?Array['from'](_0x590eb2):_0x1e39ce(0x1c3)===_0x2d99ef||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/[_0x1e39ce(0x1b1)](_0x2d99ef)?_0x562259(_0x590eb2,_0x334c59):void(0x1f8+0xf84+0x45f*-0x4);}}(_0x3a9685))||_0x2dfc43&&_0x3a9685&&_0x28ef7a(0x1d5)==typeof _0x3a9685['length']){_0x4997c3&&(_0x3a9685=_0x4997c3);var _0x160da9=0x1560+-0xd21+-0x83f,_0x3fdd88=function(){},_0x174515={};return _0x174515['s']=_0x3fdd88,_0x174515['n']=function(){var _0x3de116=_0x28ef7a,_0x132701={};return _0x132701[_0x3de116(0x22a)]=!(-0x601+0x1cad*-0x1+0x22ae),_0x160da9>=_0x3a9685[_0x3de116(0x23f)]?_0x132701:{'done':!(-0xff3+0x1*-0x77f+0x1773),'value':_0x3a9685[_0x160da9++]};},_0x174515['e']=function(_0x465b28){throw _0x465b28;},_0x174515['f']=_0x3fdd88,_0x174515;}throw new TypeError('Invalid\x20at'+_0x28ef7a(0x1da)+_0x28ef7a(0x253)+_0x28ef7a(0x227)+'instance.\x0a'+'In\x20order\x20t'+_0x28ef7a(0x16f)+'ble,\x20non-a'+_0x28ef7a(0x18b)+_0x28ef7a(0x182)+_0x28ef7a(0x17f)+_0x28ef7a(0x152)+'r]()\x20metho'+'d.');}var _0x3ffa57,_0x28b5f=!(0xb19+-0x9*0x117+0xf*-0x16),_0x30d606=!(0x2535+-0x36d*-0xb+-0x4ae3);return{'s':function(){var _0x327c19=_0x28ef7a;_0x4997c3=_0x4997c3[_0x327c19(0x20a)](_0x3a9685);},'n':function(){var _0x2fcc70=_0x28ef7a,_0x4a30f8=_0x4997c3[_0x2fcc70(0x184)]();return _0x28b5f=_0x4a30f8['done'],_0x4a30f8;},'e':function(_0x38f678){_0x30d606=!(0xef2+0x1f2d+0x1*-0x2e1f),_0x3ffa57=_0x38f678;},'f':function(){var _0x373c57=_0x28ef7a;try{_0x28b5f||null==_0x4997c3[_0x373c57(0x1bf)]||_0x4997c3[_0x373c57(0x1bf)]();}finally{if(_0x30d606)throw _0x3ffa57;}}};}function _0x562259(_0x51f341,_0x117738){var _0x279f76=a0_0x51e0;(null==_0x117738||_0x117738>_0x51f341[_0x279f76(0x23f)])&&(_0x117738=_0x51f341[_0x279f76(0x23f)]);for(var _0x3875f8=-0x10bf*-0x1+0x31*-0xa7+-0x2*-0x79c,_0x3f1796=Array(_0x117738);_0x3875f8<_0x117738;_0x3875f8++)_0x3f1796[_0x3875f8]=_0x51f341[_0x3875f8];return _0x3f1796;}function _0x38bd2a(_0x2518fd,_0x299095){var _0x2304a0=a0_0x51e0;(null==_0x299095||_0x299095>_0x2518fd[_0x2304a0(0x23f)])&&(_0x299095=_0x2518fd[_0x2304a0(0x23f)]);for(var _0x4e6971=0x4*0x19e+-0x3f*-0x51+-0x3*0x8cd,_0x31ff6b=Array(_0x299095);_0x4e6971<_0x299095;_0x4e6971++)_0x31ff6b[_0x4e6971]=_0x2518fd[_0x4e6971];return _0x31ff6b;}var _0x43a7ef=function(_0x48e114){var _0x2213db=a0_0x51e0,_0x7ea898,_0x24d286=_0x48e114[_0x2213db(0x197)],_0x2f571a=_0x48e114[_0x2213db(0x183)],_0x4fa4ca=_0x48e114[_0x2213db(0x1cb)],_0xfc60aa=_0x48e114['warnings'],_0x4cca6e=function(_0x1c5a5c,_0x34a4b3){var _0x4b1402=_0x2213db,_0x1be672='undefined'!=typeof Symbol&&_0x1c5a5c[Symbol[_0x4b1402(0x1eb)]]||_0x1c5a5c[_0x4b1402(0x141)];if(!_0x1be672){if(Array[_0x4b1402(0x204)](_0x1c5a5c)||(_0x1be672=function(_0x4251f4,_0x3cd8ea){var _0x2fcf6a=_0x4b1402;if(_0x4251f4){if(_0x2fcf6a(0x126)==typeof _0x4251f4)return _0x38bd2a(_0x4251f4,_0x3cd8ea);var _0x5a7fca={}['toString'][_0x2fcf6a(0x20a)](_0x4251f4)['slice'](0x1*0x69b+0xe08*-0x1+0x775,-(0x403*-0x1+0xf*0x281+-0x218b));return _0x2fcf6a(0x22b)===_0x5a7fca&&_0x4251f4[_0x2fcf6a(0x231)+'r']&&(_0x5a7fca=_0x4251f4[_0x2fcf6a(0x231)+'r'][_0x2fcf6a(0x200)]),'Map'===_0x5a7fca||_0x2fcf6a(0x243)===_0x5a7fca?Array['from'](_0x4251f4):'Arguments'===_0x5a7fca||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/[_0x2fcf6a(0x1b1)](_0x5a7fca)?_0x38bd2a(_0x4251f4,_0x3cd8ea):void(0x1fb3+-0x1dda+-0x1d9);}}(_0x1c5a5c))||_0x34a4b3&&_0x1c5a5c&&_0x4b1402(0x1d5)==typeof _0x1c5a5c['length']){_0x1be672&&(_0x1c5a5c=_0x1be672);var _0x5430c3=0x1ce2+0x129*-0x3+-0x1967,_0x5cf7ac=function(){},_0x46273d={};return _0x46273d['s']=_0x5cf7ac,_0x46273d['n']=function(){var _0x3cc73d=_0x4b1402,_0x1f1e4f={};return _0x1f1e4f['done']=!(-0x772+0x11*0x67+-0x1f*-0x5),_0x5430c3>=_0x1c5a5c[_0x3cc73d(0x23f)]?_0x1f1e4f:{'done':!(0x1191+-0x2*0xad4+0x418),'value':_0x1c5a5c[_0x5430c3++]};},_0x46273d['e']=function(_0x45628a){throw _0x45628a;},_0x46273d['f']=_0x5cf7ac,_0x46273d;}throw new TypeError(_0x4b1402(0x221)+_0x4b1402(0x1da)+_0x4b1402(0x253)+_0x4b1402(0x227)+_0x4b1402(0x213)+_0x4b1402(0x155)+_0x4b1402(0x16f)+_0x4b1402(0x127)+_0x4b1402(0x18b)+'ts\x20must\x20ha'+_0x4b1402(0x17f)+'ol.iterato'+_0x4b1402(0x1a3)+'d.');}var _0x22daf2,_0x281bf3=!(-0x1*0xc7f+-0x1e40+0x2abf),_0x40559f=!(-0x1*-0x10d+0xb9d+-0xca9);return{'s':function(){var _0x161689=_0x4b1402;_0x1be672=_0x1be672[_0x161689(0x20a)](_0x1c5a5c);},'n':function(){var _0x172c5d=_0x4b1402,_0x4ab380=_0x1be672[_0x172c5d(0x184)]();return _0x281bf3=_0x4ab380[_0x172c5d(0x22a)],_0x4ab380;},'e':function(_0xd13539){_0x40559f=!(-0x98*0x9+0x4f*0x5b+0x1*-0x16bd),_0x22daf2=_0xd13539;},'f':function(){var _0x350e51=_0x4b1402;try{_0x281bf3||null==_0x1be672['return']||_0x1be672[_0x350e51(0x1bf)]();}finally{if(_0x40559f)throw _0x22daf2;}}};}(_0x24d286['querySelec'+_0x2213db(0x15a)](_0x2213db(0x16d)));try{for(_0x4cca6e['s']();!(_0x7ea898=_0x4cca6e['n']())['done'];){var _0x44b24a=_0x7ea898[_0x2213db(0x215)];try{if(_0x44b24a[_0x2213db(0x148)+'te']('poster'))continue;var _0x1baa01=_0x44b24a[_0x2213db(0x148)+'te'](_0x2213db(0x210)+'ui-element'+_0x2213db(0x18d)),_0x586b52=_0x2f571a[_0x2213db(0x1ad)+'tor']((_0x2213db(0x156)+'tui-elemen'+_0x2213db(0x1e4))['concat'](_0x1baa01,'\x22]')),_0x585bb2=document[_0x2213db(0x140)+'ent']('canvas'),_0x28a02f=_0x585bb2[_0x2213db(0x256)]=_0x44b24a[_0x2213db(0x1fd)],_0x3b9d1c=_0x585bb2[_0x2213db(0x1b8)]=_0x44b24a['videoHeigh'+'t'],_0x468232=void(-0x205e+0xbb*0x23+0x6cd);_0x585bb2[_0x2213db(0x1b9)]('2d')[_0x2213db(0x205)](_0x44b24a,-0x2*0x239+-0x2571+0x29e3,-0x1666+-0xf87+0x25ed,_0x28a02f,_0x3b9d1c);try{_0x468232=_0x585bb2['toDataURL']();}catch(_0x41e617){_0xfc60aa[_0x2213db(0x1cf)](('data-smart'+'ui-element'+_0x2213db(0x21e))[_0x2213db(0x15b)](_0x1baa01,'\x22\x20:\x20')[_0x2213db(0x15b)](_0x41e617[_0x2213db(0x21b)]()));}if(!_0x468232||_0x2213db(0x1fb)===_0x468232)continue;var _0x6c16e4=_0x2851dc(_0x1baa01,_0x468232);_0x4fa4ca[_0x2213db(0x1cf)](_0x6c16e4),_0x586b52[_0x2213db(0x17e)+'te'](_0x2213db(0x210)+_0x2213db(0x206)+'zed-attrib'+_0x2213db(0x137),_0x6c16e4[_0x2213db(0x16a)]);}catch(_0x340629){_0x1958da(_0x340629,_0x2213db(0x1a8)+_0x2213db(0x147)+_0x2213db(0x1ff)+_0x2213db(0x1e6),_0x44b24a);}}}catch(_0x29531f){_0x4cca6e['e'](_0x29531f);}finally{_0x4cca6e['f']();}};function _0x5d13fe(_0x2ba331,_0x252242){var _0x181dde=a0_0x51e0;(null==_0x252242||_0x252242>_0x2ba331['length'])&&(_0x252242=_0x2ba331[_0x181dde(0x23f)]);for(var _0x1b2e59=0x63e+-0xa7a+0x43c,_0x557cd6=Array(_0x252242);_0x1b2e59<_0x252242;_0x1b2e59++)_0x557cd6[_0x1b2e59]=_0x2ba331[_0x1b2e59];return _0x557cd6;}var _0x3ffd1e=function(_0x35beb6){var _0x5bb46a=a0_0x51e0,_0xd949bc=_0x35beb6['dom'],_0x1e4f78=_0x35beb6['clone'];try{var _0x58950b=_0xd949bc['defaultVie'+'w']||('undefined'!=typeof window?window:null);_0x58950b&&(_0x58950b[_0x5bb46a(0x211)]||_0x58950b['scrollY'])&&(_0x1e4f78[_0x5bb46a(0x1e9)+_0x5bb46a(0x15d)][_0x5bb46a(0x17e)+'te']('data-smart'+'ui-page-sc'+_0x5bb46a(0x254),String(_0x58950b[_0x5bb46a(0x211)]||-0x8ab+-0x255f+-0x8e*-0x53)),_0x1e4f78[_0x5bb46a(0x1e9)+_0x5bb46a(0x15d)][_0x5bb46a(0x17e)+'te'](_0x5bb46a(0x210)+_0x5bb46a(0x242)+_0x5bb46a(0x23b),String(_0x58950b[_0x5bb46a(0x1b6)]||0x1e82+0x13a8+-0x322a)));}catch(_0x417727){_0x417727['handled']||_0x1958da(_0x417727,_0x5bb46a(0x142)+_0x5bb46a(0x247)+_0x5bb46a(0x144));}try{var _0x5931b1,_0x19605e=_0xd949bc['querySelec'+_0x5bb46a(0x15a)](_0x5bb46a(0x156)+_0x5bb46a(0x161)+_0x5bb46a(0x15c)),_0x4027ce=_0xd949bc[_0x5bb46a(0x1e9)+_0x5bb46a(0x15d)],_0x5f1421=_0xd949bc[_0x5bb46a(0x1be)],_0x294682=function(_0x3eca09,_0x383dde){var _0x2a600d=_0x5bb46a,_0x27825f=_0x2a600d(0x1d9)!=typeof Symbol&&_0x3eca09[Symbol[_0x2a600d(0x1eb)]]||_0x3eca09[_0x2a600d(0x141)];if(!_0x27825f){if(Array[_0x2a600d(0x204)](_0x3eca09)||(_0x27825f=function(_0x324d71,_0x8255ab){var _0x3a7634=_0x2a600d;if(_0x324d71){if('string'==typeof _0x324d71)return _0x5d13fe(_0x324d71,_0x8255ab);var _0x4cf0f6={}[_0x3a7634(0x21b)][_0x3a7634(0x20a)](_0x324d71)[_0x3a7634(0x14d)](-0x7b*-0x43+0x6e7*0x4+-0x8f*0x6b,-(0x503+-0x1099+0xb97*0x1));return _0x3a7634(0x22b)===_0x4cf0f6&&_0x324d71[_0x3a7634(0x231)+'r']&&(_0x4cf0f6=_0x324d71[_0x3a7634(0x231)+'r'][_0x3a7634(0x200)]),_0x3a7634(0x1dd)===_0x4cf0f6||_0x3a7634(0x243)===_0x4cf0f6?Array[_0x3a7634(0x165)](_0x324d71):_0x3a7634(0x1c3)===_0x4cf0f6||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/['test'](_0x4cf0f6)?_0x5d13fe(_0x324d71,_0x8255ab):void(0x14dd+-0x91b+-0x56*0x23);}}(_0x3eca09))||_0x383dde&&_0x3eca09&&_0x2a600d(0x1d5)==typeof _0x3eca09[_0x2a600d(0x23f)]){_0x27825f&&(_0x3eca09=_0x27825f);var _0x3879e7=-0x8e9*0x2+0x8b+0x1*0x1147,_0x143b50=function(){},_0x58a70c={};return _0x58a70c['s']=_0x143b50,_0x58a70c['n']=function(){var _0x3ab0db=_0x2a600d,_0x13857d={};return _0x13857d[_0x3ab0db(0x22a)]=!(0x2*0x123d+-0x2e+-0x244c),_0x3879e7>=_0x3eca09[_0x3ab0db(0x23f)]?_0x13857d:{'done':!(0x1*0x11a1+-0x9f3*0x1+-0x7ad),'value':_0x3eca09[_0x3879e7++]};},_0x58a70c['e']=function(_0x3e09cb){throw _0x3e09cb;},_0x58a70c['f']=_0x143b50,_0x58a70c;}throw new TypeError(_0x2a600d(0x221)+'tempt\x20to\x20i'+_0x2a600d(0x253)+_0x2a600d(0x227)+_0x2a600d(0x213)+_0x2a600d(0x155)+_0x2a600d(0x16f)+_0x2a600d(0x127)+'rray\x20objec'+'ts\x20must\x20ha'+'ve\x20a\x20[Symb'+_0x2a600d(0x152)+_0x2a600d(0x1a3)+'d.');}var _0x34df83,_0xcadaa9=!(0x216b+0x21ed+-0x4358),_0x510a2e=!(0x1f5a+0x159c+0x34f5*-0x1);return{'s':function(){_0x27825f=_0x27825f['call'](_0x3eca09);},'n':function(){var _0x31bedf=_0x2a600d,_0x3f196f=_0x27825f[_0x31bedf(0x184)]();return _0xcadaa9=_0x3f196f['done'],_0x3f196f;},'e':function(_0x5a97a4){_0x510a2e=!(-0xeab+0x34c*0xb+-0x1599),_0x34df83=_0x5a97a4;},'f':function(){var _0x5c789d=_0x2a600d;try{_0xcadaa9||null==_0x27825f[_0x5c789d(0x1bf)]||_0x27825f[_0x5c789d(0x1bf)]();}finally{if(_0x510a2e)throw _0x34df83;}}};}(_0x19605e);try{for(_0x294682['s']();!(_0x5931b1=_0x294682['n']())[_0x5bb46a(0x22a)];){var _0x575e62=_0x5931b1[_0x5bb46a(0x215)];try{if(_0x575e62===_0x4027ce||_0x575e62===_0x5f1421)continue;if(!_0x575e62[_0x5bb46a(0x21a)]&&!_0x575e62['scrollLeft'])continue;var _0x12794c=_0x575e62[_0x5bb46a(0x148)+'te'](_0x5bb46a(0x210)+_0x5bb46a(0x16c)+_0x5bb46a(0x18d)),_0x36afe2=_0x1e4f78[_0x5bb46a(0x1ad)+'tor']((_0x5bb46a(0x156)+_0x5bb46a(0x161)+_0x5bb46a(0x1e4))['concat'](_0x12794c,'\x22]'));if(!_0x36afe2)continue;_0x575e62[_0x5bb46a(0x191)]&&_0x36afe2[_0x5bb46a(0x17e)+'te']('data-smart'+'ui-scroll-'+_0x5bb46a(0x25f),String(_0x575e62[_0x5bb46a(0x191)])),_0x575e62['scrollTop']&&_0x36afe2[_0x5bb46a(0x17e)+'te']('data-smart'+_0x5bb46a(0x24a)+_0x5bb46a(0x13f),String(_0x575e62[_0x5bb46a(0x21a)]));}catch(_0x44d5f0){_0x44d5f0[_0x5bb46a(0x1f1)]||_0x1958da(_0x44d5f0,_0x5bb46a(0x1a8)+_0x5bb46a(0x1c9)+_0x5bb46a(0x174)+_0x5bb46a(0x1a0),_0x575e62);}}}catch(_0x149358){_0x294682['e'](_0x149358);}finally{_0x294682['f']();}}catch(_0x8fb5e9){_0x8fb5e9['handled']||_0x1958da(_0x8fb5e9,_0x5bb46a(0x25b)+'ing\x20marked'+_0x5bb46a(0x13c)+_0x5bb46a(0x250)+':\x20');}},_0x509d8f=null,_0x8d7cf8=[_0x2c1230(0x146)];function _0x42900f(_0x5b79cd){var _0x1aadaf=_0x2c1230;return _0x42900f='function'==typeof Symbol&&_0x1aadaf(0x1e0)==typeof Symbol[_0x1aadaf(0x1eb)]?function(_0x1c69e6){return typeof _0x1c69e6;}:function(_0x3d7cb8){var _0x411c33=_0x1aadaf;return _0x3d7cb8&&_0x411c33(0x14f)==typeof Symbol&&_0x3d7cb8[_0x411c33(0x231)+'r']===Symbol&&_0x3d7cb8!==Symbol[_0x411c33(0x19b)]?'symbol':typeof _0x3d7cb8;},_0x42900f(_0x5b79cd);}function _0xab08e4(_0x138ec8,_0x4f4046){var _0x49cf82=_0x2c1230,_0x2eaab3=Object['keys'](_0x138ec8);if(Object[_0x49cf82(0x1fc)+_0x49cf82(0x1a6)+'s']){var _0x2a3792=Object[_0x49cf82(0x1fc)+'ertySymbol'+'s'](_0x138ec8);_0x4f4046&&(_0x2a3792=_0x2a3792[_0x49cf82(0x1e5)](function(_0x3b3dad){var _0x5e7faf=_0x49cf82;return Object[_0x5e7faf(0x1fc)+_0x5e7faf(0x196)+_0x5e7faf(0x234)](_0x138ec8,_0x3b3dad)[_0x5e7faf(0x1e2)];})),_0x2eaab3['push'][_0x49cf82(0x192)](_0x2eaab3,_0x2a3792);}return _0x2eaab3;}function _0x1e39ca(_0x39f554){var _0x21ee18=_0x2c1230;for(var _0x1b87f1=0xc2+0xd68+0x19*-0x91;_0x1b87f1_0x532a4f[_0x29f6dc(0x23f)])&&(_0x487f2f=_0x532a4f['length']);for(var _0x3a4590=-0xc0d+-0x373*0x1+0xf80,_0x448952=Array(_0x487f2f);_0x3a4590<_0x487f2f;_0x3a4590++)_0x448952[_0x3a4590]=_0x532a4f[_0x3a4590];return _0x448952;}function _0x755311(_0x11cca3){var _0x36f91f=_0x2c1230,_0x3c5958,_0x186936,_0x100d51,_0x2539ca,_0x4c840d,_0x55e4c8,_0x3c8457,_0x2c2a87,_0x16457f,_0x209c23,_0x34757c=function(_0x38fcaa,_0x23e202){var _0x23e41f=a0_0x51e0,_0x408d8e=_0x23e202[_0x23e41f(0x21f)+_0x23e41f(0x25a)],_0x575d2e='',_0x157221={};_0x157221[_0x23e41f(0x154)+_0x23e41f(0x1f0)+_0x23e41f(0x24f)]=!(0x4a1+0x13ab+-0x184c),_0x157221[_0x23e41f(0x21f)+'s']=_0x408d8e;if(_0x38fcaa[_0x23e41f(0x212)])_0x575d2e=_0x38fcaa[_0x23e41f(0x212)](_0x157221);else{if(!_0x38fcaa['getInnerHT'+'ML'])return _0x38fcaa[_0x23e41f(0x22f)];var _0x398944={};_0x398944[_0x23e41f(0x131)+'dowRoots']=!(0x1cd8+-0x7*-0x16e+-0x2*0x136d),_0x575d2e=_0x38fcaa[_0x23e41f(0x1ec)+'ML'](_0x398944);}return _0x38fcaa[_0x23e41f(0x1c7)+'t']='',_0x38fcaa['outerHTML']['replace']('',function(){var _0x4d38b5=_0x23e41f;return''[_0x4d38b5(0x15b)](_0x575d2e,'');});}(_0x11cca3['clone'][_0x36f91f(0x1e9)+_0x36f91f(0x15d)],{'shadowRootElements':_0x11cca3['shadowRoot'+'Elements']});return _0x34757c=_0x34757c['replace'](/ data-smartui-serialized-attribute-(\w+?)=/gi,'\x20$1='),_0x4c840d=void(0x1*-0xaed+0x21ee+0x27*-0x97)===(_0x2539ca=(_0x100d51=null!==(_0x186936=null==(_0x3c5958=_0x11cca3['dom'])?void(0x12*-0x1f7+-0x3f2+-0x4a*-0x88):_0x3c5958['doctype'])&&void(0xbf8*-0x2+0x62b*0x5+-0x24d*0x3)!==_0x186936?_0x186936:{})[_0x36f91f(0x200)])?_0x36f91f(0x18a):_0x2539ca,_0x3c8457=void(-0x2d7+0xd0c+0x367*-0x3)===(_0x55e4c8=_0x100d51['publicId'])?'':_0x55e4c8,_0x16457f=void(-0xeaa*0x1+0x86*0x2b+-0xfb*0x8)===(_0x2c2a87=_0x100d51[_0x36f91f(0x1a1)])?'':_0x2c2a87,_0x209c23='',_0x3c8457&&_0x16457f?_0x209c23=_0x36f91f(0x25c)[_0x36f91f(0x15b)](_0x3c8457,_0x36f91f(0x186))[_0x36f91f(0x15b)](_0x16457f,'\x22'):_0x3c8457?_0x209c23='\x20PUBLIC\x20\x22'[_0x36f91f(0x15b)](_0x3c8457,'\x22'):_0x16457f&&(_0x209c23=_0x36f91f(0x128)[_0x36f91f(0x15b)](_0x16457f,'\x22')),_0x36f91f(0x236)['concat'](_0x4c840d)[_0x36f91f(0x15b)](_0x209c23,'>')+_0x34757c;}function _0x440235(_0x2aea07){var _0x32cc17=_0x2c1230;(function(_0x53fa0a){var _0x34eee5=a0_0x51e0,_0x2b4ff0,_0x9d0bc3=_0x53fa0a[_0x34eee5(0x197)],_0x2a171a=_0x53fa0a[_0x34eee5(0x183)],_0x257682=_0x1a3473(_0x9d0bc3[_0x34eee5(0x1ad)+'torAll'](_0x34eee5(0x164)+_0x34eee5(0x202)+_0x34eee5(0x226)));try{for(_0x257682['s']();!(_0x2b4ff0=_0x257682['n']())[_0x34eee5(0x22a)];){var _0xd9fd86=_0x2b4ff0[_0x34eee5(0x215)];try{var _0x45e332=_0xd9fd86[_0x34eee5(0x148)+'te'](_0x34eee5(0x210)+_0x34eee5(0x16c)+_0x34eee5(0x18d)),_0xf5f60e=_0x2a171a[_0x34eee5(0x1ad)+'tor']((_0x34eee5(0x156)+_0x34eee5(0x161)+'t-id=\x22')[_0x34eee5(0x15b)](_0x45e332,'\x22]'));switch(_0xd9fd86['type']){case _0x34eee5(0x249):case'radio':_0xf5f60e[_0x34eee5(0x150)+_0x34eee5(0x1d2)](_0x34eee5(0x188)),_0xd9fd86[_0x34eee5(0x188)]&&_0xf5f60e[_0x34eee5(0x17e)+'te'](_0x34eee5(0x188),'');break;case _0x34eee5(0x189):-(-0x668+-0x1472+-0x113*-0x19)!==_0xd9fd86[_0x34eee5(0x168)+_0x34eee5(0x1e7)]&&_0xf5f60e[_0x34eee5(0x158)][_0xd9fd86[_0x34eee5(0x168)+_0x34eee5(0x1e7)]][_0x34eee5(0x17e)+'te'](_0x34eee5(0x214),_0x34eee5(0x14b));break;case _0x34eee5(0x1aa)+_0x34eee5(0x257):var _0x1827bb,_0x49e9f5=_0x1a3473(_0xd9fd86[_0x34eee5(0x133)+_0x34eee5(0x13d)]);try{for(_0x49e9f5['s']();!(_0x1827bb=_0x49e9f5['n']())[_0x34eee5(0x22a)];){var _0x797224=_0x1827bb[_0x34eee5(0x215)];_0xf5f60e[_0x34eee5(0x158)][_0x797224[_0x34eee5(0x1df)]][_0x34eee5(0x17e)+'te']('selected',_0x34eee5(0x14b));}}catch(_0x5c81b4){_0x49e9f5['e'](_0x5c81b4);}finally{_0x49e9f5['f']();}break;case'textarea':_0xf5f60e[_0x34eee5(0x203)]=_0xd9fd86['value'];break;default:_0xf5f60e['setAttribu'+'te']('value',_0xd9fd86[_0x34eee5(0x215)]);}}catch(_0x50cfb4){_0x1958da(_0x50cfb4,_0x34eee5(0x1a8)+'alizing\x20in'+'put\x20elemen'+_0x34eee5(0x1e6),_0xd9fd86);}}}catch(_0x3eae31){_0x257682['e'](_0x3eae31);}finally{_0x257682['f']();}}(_0x2aea07),function(_0x1fbc70){var _0x2bb0fa=a0_0x51e0,_0x3ebba4,_0x30591f=_0x1fbc70[_0x2bb0fa(0x197)],_0x253dad=_0x1fbc70['clone'],_0x17df5f=_0x1fbc70['warnings'],_0x1fa36b=_0x1fbc70[_0x2bb0fa(0x1cb)],_0x17eceb=_0x1fbc70[_0x2bb0fa(0x1ed)+_0x2bb0fa(0x198)],_0x27fe23=_0x1fbc70[_0x2bb0fa(0x25e)+_0x2bb0fa(0x1c1)],_0x48b37a=_0x354762(_0x30591f[_0x2bb0fa(0x1ad)+_0x2bb0fa(0x15a)](_0x2bb0fa(0x1dc)));try{for(_0x48b37a['s']();!(_0x3ebba4=_0x48b37a['n']())['done'];){var _0x430764,_0x2ece8a=_0x3ebba4[_0x2bb0fa(0x215)],_0x8607a3=_0x2ece8a['getAttribu'+'te']('data-smart'+_0x2bb0fa(0x16c)+_0x2bb0fa(0x18d)),_0xda3998=_0x253dad[_0x2bb0fa(0x1ad)+_0x2bb0fa(0x248)](('[data-smar'+_0x2bb0fa(0x161)+_0x2bb0fa(0x1e4))[_0x2bb0fa(0x15b)](_0x8607a3,'\x22]')),_0x5a5280=!(_0x2ece8a[_0x2bb0fa(0x12a)]||_0x2ece8a[_0x2bb0fa(0x1b0)]&&'javascript'!==_0x2ece8a[_0x2bb0fa(0x1b0)][_0x2bb0fa(0x12e)](':')[0x648+-0x177a*-0x1+-0x2*0xee1]);if(null!==(_0x430764=_0x253dad[_0x2bb0fa(0x1bc)])&&void(0x239e+0xe3*-0x1b+-0xbad)!==_0x430764&&_0x430764[_0x2bb0fa(0x235)](_0xda3998))_0xda3998['remove']();else{if(_0x2ece8a[_0x2bb0fa(0x12c)+'ument']&&_0x2ece8a[_0x2bb0fa(0x12c)+_0x2bb0fa(0x21d)][_0x2bb0fa(0x1e9)+_0x2bb0fa(0x15d)]){if(_0x17eceb&&_0x5a5280)continue;if(!_0x5a5280&&!_0x2ece8a[_0x2bb0fa(0x1f4)+_0x2bb0fa(0x208)][_0x2bb0fa(0x217)+'e'][_0x2bb0fa(0x244)][_0x2bb0fa(0x160)+'nd'])continue;var _0x41a9d3={};_0x41a9d3[_0x2bb0fa(0x23e)+_0x2bb0fa(0x1a9)]=_0x5f0fd8,_0x41a9d3[_0x2bb0fa(0x197)]=_0x2ece8a[_0x2bb0fa(0x12c)+_0x2bb0fa(0x21d)],_0x41a9d3[_0x2bb0fa(0x1ed)+_0x2bb0fa(0x198)]=_0x17eceb,_0x41a9d3[_0x2bb0fa(0x25e)+_0x2bb0fa(0x1c1)]=_0x27fe23;var _0x3b0b18,_0x56fbc4=_0x543c2b(_0x41a9d3),_0x32f772=_0x354762(_0x56fbc4[_0x2bb0fa(0x225)]);try{for(_0x32f772['s']();!(_0x3b0b18=_0x32f772['n']())[_0x2bb0fa(0x22a)];){var _0x560fbb=_0x3b0b18[_0x2bb0fa(0x215)];_0x17df5f[_0x2bb0fa(0x1cf)](_0x560fbb);}}catch(_0x5f0053){_0x32f772['e'](_0x5f0053);}finally{_0x32f772['f']();}var _0x304320,_0x35dabb=_0x354762(_0x56fbc4['resources']);try{for(_0x35dabb['s']();!(_0x304320=_0x35dabb['n']())['done'];){var _0x1902d2=_0x304320[_0x2bb0fa(0x215)];_0x1fa36b['add'](_0x1902d2);}}catch(_0x2333cb){_0x35dabb['e'](_0x2333cb);}finally{_0x35dabb['f']();}_0xda3998[_0x2bb0fa(0x17e)+'te'](_0x2bb0fa(0x12a),_0x56fbc4['html']),_0xda3998[_0x2bb0fa(0x150)+'ibute']('src');}else!_0x17eceb&&_0x5a5280&&_0xda3998[_0x2bb0fa(0x1d6)]();}}}catch(_0x36d26b){_0x48b37a['e'](_0x36d26b);}finally{_0x48b37a['f']();}}(_0x2aea07),_0x43a7ef(_0x2aea07),_0x3ffd1e(_0x2aea07),_0x2aea07[_0x32cc17(0x1ed)+_0x32cc17(0x198)]||(function(_0x5a48d3){var _0x340835=_0x32cc17,_0x46771f=_0x5a48d3[_0x340835(0x197)],_0x33b6d6=_0x5a48d3[_0x340835(0x183)],_0x34f8e2=_0x5a48d3[_0x340835(0x1cb)],_0x1a7e0d=_0x5a48d3[_0x340835(0x151)],_0x23fa49=_0x5a48d3[_0x340835(0x225)],_0x45326a=null;try{_0x45326a=_0x46771f[_0x340835(0x1bd)+'s'];}catch(_0x586604){_0x23fa49[_0x340835(0x1cf)](_0x340835(0x218)+'styleSheet'+_0x340835(0x1f7)+_0x340835(0x175)+_0x340835(0x14a));}if(_0x45326a){var _0x41c127,_0x2792f0=_0xdf511c(_0x45326a);try{for(_0x2792f0['s']();!(_0x41c127=_0x2792f0['n']())[_0x340835(0x22a)];){var _0x231d84,_0x1fecb9=_0x41c127[_0x340835(0x215)];if(_0x4a2d85(_0x1fecb9)){var _0x3fed0a=void(-0x71*0x26+0x1*0xdfb+0x2cb),_0x2c717a=void(-0xf62+0xbfb+-0x43*-0xd);try{if(_0x3fed0a=_0x1fecb9[_0x340835(0x20e)][_0x340835(0x148)+'te']('data-smart'+_0x340835(0x16c)+_0x340835(0x18d)),_0x5d5910(_0x1fecb9,_0x5baf0d(_0x2c717a=_0x33b6d6[_0x340835(0x1ad)+_0x340835(0x248)]((_0x340835(0x156)+'tui-elemen'+_0x340835(0x1e4))[_0x340835(0x15b)](_0x3fed0a,'\x22]')))))continue;var _0x213972=document[_0x340835(0x140)+_0x340835(0x240)](_0x340835(0x1ba));_0x213972[_0x340835(0x1c5)]=_0x340835(0x1cc),_0x213972[_0x340835(0x17e)+'te']('data-smart'+_0x340835(0x16c)+_0x340835(0x18d),_0x3fed0a),_0x213972[_0x340835(0x17e)+'te'](_0x340835(0x210)+_0x340835(0x18c)+_0x340835(0x228),'true'),_0x213972[_0x340835(0x203)]=Array[_0x340835(0x165)](_0x1fecb9[_0x340835(0x23a)])['map'](function(_0xa40bb2){var _0x353d40=_0x340835;return _0xa40bb2[_0x353d40(0x21c)];})[_0x340835(0x14c)]('\x0a'),_0x2c717a[_0x340835(0x1c0)]['insertBefo'+'re'](_0x213972,_0x2c717a['nextSiblin'+'g']),_0x2c717a[_0x340835(0x1d6)]();}catch(_0x1901cd){var _0x6468be={};_0x6468be[_0x340835(0x163)]=_0x3fed0a,_0x1958da(_0x1901cd,_0x340835(0x1a8)+_0x340835(0x139)+_0x340835(0x181),_0x2c717a,_0x6468be);}}else{if(null!==(_0x231d84=_0x1fecb9['href'])&&void(-0x1b88+-0x2247+0x3dcf)!==_0x231d84&&_0x231d84[_0x340835(0x19f)](_0x340835(0x169)))try{var _0x1e9abf=document['createElem'+_0x340835(0x240)]('link');_0x1e9abf[_0x340835(0x17e)+'te'](_0x340835(0x22e),'stylesheet');var _0x3a4732=_0x23f644(_0x1fecb9);_0x34f8e2[_0x340835(0x1cf)](_0x3a4732),_0x1e9abf[_0x340835(0x17e)+'te'](_0x340835(0x210)+_0x340835(0x1e3)+_0x340835(0x223)+_0x340835(0x1d1),_0x340835(0x14b)),_0x1e9abf[_0x340835(0x17e)+'te'](_0x340835(0x210)+_0x340835(0x206)+_0x340835(0x255)+_0x340835(0x1af),_0x3a4732[_0x340835(0x16a)]),_0x340835(0x201)+'nt'===_0x33b6d6['constructo'+'r'][_0x340835(0x200)]||'DocumentFr'+_0x340835(0x220)===_0x33b6d6['constructo'+'r'][_0x340835(0x200)]?_0x33b6d6[_0x340835(0x1be)]['prepend'](_0x1e9abf):'ShadowRoot'===_0x33b6d6[_0x340835(0x231)+'r'][_0x340835(0x200)]&&_0x33b6d6[_0x340835(0x1d8)](_0x1e9abf);}catch(_0x40de46){var _0x48417e={};_0x48417e[_0x340835(0x251)+_0x340835(0x13e)]=_0x1fecb9[_0x340835(0x199)],_0x1958da(_0x40de46,_0x340835(0x1a8)+_0x340835(0x139)+'ylesheet\x20f'+'rom\x20blob:\x20',null,_0x48417e);}}}}catch(_0x17bcc2){_0x2792f0['e'](_0x17bcc2);}finally{_0x2792f0['f']();}}if(_0x46771f[_0x340835(0x17d)+_0x340835(0x230)]){var _0x23dfef,_0x139b8d=_0xdf511c(_0x46771f[_0x340835(0x17d)+_0x340835(0x230)]);try{for(_0x139b8d['s']();!(_0x23dfef=_0x139b8d['n']())['done'];){var _0xb89c6e=_0x23dfef[_0x340835(0x215)],_0x52fa10=document['createElem'+'ent'](_0x340835(0x1ce));if(_0x52fa10['setAttribu'+'te'](_0x340835(0x22e),_0x340835(0x251)),!_0x1a7e0d[_0x340835(0x1d7)](_0xb89c6e)){var _0x457606=_0x23f644(_0xb89c6e);_0x34f8e2[_0x340835(0x1cf)](_0x457606),_0x1a7e0d[_0x340835(0x157)](_0xb89c6e,_0x457606[_0x340835(0x16a)]);}_0x52fa10[_0x340835(0x17e)+'te'](_0x340835(0x210)+'ui-adopted'+_0x340835(0x24d)+'ts-seriali'+'zed',_0x340835(0x14b)),_0x52fa10['setAttribu'+'te']('data-smart'+_0x340835(0x206)+_0x340835(0x255)+_0x340835(0x1af),_0x1a7e0d['get'](_0xb89c6e)),_0x340835(0x201)+'nt'===_0x33b6d6[_0x340835(0x231)+'r'][_0x340835(0x200)]||_0x340835(0x1ea)+_0x340835(0x220)===_0x33b6d6[_0x340835(0x231)+'r']['name']?_0x33b6d6['body'][_0x340835(0x1d8)](_0x52fa10):_0x340835(0x1e8)===_0x33b6d6[_0x340835(0x231)+'r'][_0x340835(0x200)]&&_0x33b6d6['prepend'](_0x52fa10);}}catch(_0x51639b){_0x139b8d['e'](_0x51639b);}finally{_0x139b8d['f']();}}else _0x23fa49[_0x340835(0x1cf)](_0x340835(0x218)+_0x340835(0x17d)+'leSheets`\x20'+_0x340835(0x1b5)+'ot\x20support'+_0x340835(0x1f5));}(_0x2aea07),function(_0x6a4a30){var _0x51069e=_0x32cc17,_0x511625,_0x112d9a=_0x6a4a30[_0x51069e(0x197)],_0x4717b5=_0x6a4a30['clone'],_0x42dc0e=_0x6a4a30[_0x51069e(0x1cb)],_0x29b2c5=_0x906ae(_0x112d9a['querySelec'+_0x51069e(0x15a)](_0x51069e(0x1d4)));try{for(_0x29b2c5['s']();!(_0x511625=_0x29b2c5['n']())[_0x51069e(0x22a)];){var _0xc3e937=_0x511625[_0x51069e(0x215)];try{var _0x56f6d7=_0xc3e937[_0x51069e(0x1ae)]();if(!_0x56f6d7||'data:,'===_0x56f6d7)continue;var _0x68c9b4=_0xc3e937[_0x51069e(0x148)+'te'](_0x51069e(0x210)+_0x51069e(0x16c)+'-id'),_0x391a6a=_0x2851dc(_0x68c9b4,_0x56f6d7);_0x42dc0e[_0x51069e(0x1cf)](_0x391a6a);var _0x4e1ecb=document['createElem'+_0x51069e(0x240)]('img');_0x4e1ecb['setAttribu'+'te'](_0x51069e(0x210)+'ui-seriali'+_0x51069e(0x255)+_0x51069e(0x20c),_0x391a6a['url']);var _0x3bc89b,_0x361783=_0x906ae(_0xc3e937[_0x51069e(0x22d)]);try{for(_0x361783['s']();!(_0x3bc89b=_0x361783['n']())[_0x51069e(0x22a)];){var _0x529463=_0x3bc89b[_0x51069e(0x215)],_0x3c717b=_0x529463['name'],_0x1af2c3=_0x529463[_0x51069e(0x215)];_0x4e1ecb[_0x51069e(0x17e)+'te'](_0x3c717b,_0x1af2c3);}}catch(_0x2f44ac){_0x361783['e'](_0x2f44ac);}finally{_0x361783['f']();}_0x4e1ecb[_0x51069e(0x17e)+'te'](_0x51069e(0x210)+'ui-canvas-'+_0x51069e(0x1d1),''),_0x4e1ecb[_0x51069e(0x1ba)][_0x51069e(0x219)]=_0x4e1ecb[_0x51069e(0x1ba)][_0x51069e(0x219)]||_0x51069e(0x1f2);var _0x5647a4=_0x4717b5[_0x51069e(0x1ad)+_0x51069e(0x248)]((_0x51069e(0x156)+_0x51069e(0x161)+'t-id=')[_0x51069e(0x15b)](_0x68c9b4,']'));_0x5647a4[_0x51069e(0x159)+_0x51069e(0x240)]?_0x5647a4[_0x51069e(0x159)+_0x51069e(0x240)][_0x51069e(0x246)+'re'](_0x4e1ecb,_0x5647a4):_0x4717b5['insertBefo'+'re'](_0x4e1ecb,_0x5647a4),_0x5647a4[_0x51069e(0x1d6)]();}catch(_0x3f95ba){_0x1958da(_0x3f95ba,_0x51069e(0x1a8)+_0x51069e(0x1f6)+_0x51069e(0x13a)+_0x51069e(0x138),_0xc3e937);}}}catch(_0x4c894b){_0x29b2c5['e'](_0x4c894b);}finally{_0x29b2c5['f']();}}(_0x2aea07)));var _0x1275d4,_0x5f395e=function(_0x20a871,_0xe5712d){var _0x4495cf=_0x32cc17,_0x2f409a=_0x4495cf(0x1d9)!=typeof Symbol&&_0x20a871[Symbol[_0x4495cf(0x1eb)]]||_0x20a871[_0x4495cf(0x141)];if(!_0x2f409a){if(Array[_0x4495cf(0x204)](_0x20a871)||(_0x2f409a=function(_0x40985c,_0x3aa98f){var _0x34ee90=_0x4495cf;if(_0x40985c){if(_0x34ee90(0x126)==typeof _0x40985c)return _0x27e3f5(_0x40985c,_0x3aa98f);var _0x102687={}[_0x34ee90(0x21b)][_0x34ee90(0x20a)](_0x40985c)[_0x34ee90(0x14d)](0x2*-0x793+0xb65+-0x3c9*-0x1,-(0x1509+-0x1e1+-0x1327));return _0x34ee90(0x22b)===_0x102687&&_0x40985c[_0x34ee90(0x231)+'r']&&(_0x102687=_0x40985c[_0x34ee90(0x231)+'r'][_0x34ee90(0x200)]),'Map'===_0x102687||'Set'===_0x102687?Array['from'](_0x40985c):_0x34ee90(0x1c3)===_0x102687||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/[_0x34ee90(0x1b1)](_0x102687)?_0x27e3f5(_0x40985c,_0x3aa98f):void(-0x8ac+0x2332+-0x1a86);}}(_0x20a871))||_0xe5712d&&_0x20a871&&_0x4495cf(0x1d5)==typeof _0x20a871[_0x4495cf(0x23f)]){_0x2f409a&&(_0x20a871=_0x2f409a);var _0xcd82d8=-0x1*-0x2205+0x1dac*0x1+0x5*-0xcbd,_0x5664d9=function(){},_0x37912d={};return _0x37912d['s']=_0x5664d9,_0x37912d['n']=function(){var _0x3cbf58=_0x4495cf,_0x5c62c7={};return _0x5c62c7[_0x3cbf58(0x22a)]=!(-0x2276+-0x1fd*-0x7+0x148b),_0xcd82d8>=_0x20a871['length']?_0x5c62c7:{'done':!(-0x158c+-0x152e+0x2abb*0x1),'value':_0x20a871[_0xcd82d8++]};},_0x37912d['e']=function(_0xe750d5){throw _0xe750d5;},_0x37912d['f']=_0x5664d9,_0x37912d;}throw new TypeError('Invalid\x20at'+_0x4495cf(0x1da)+_0x4495cf(0x253)+_0x4495cf(0x227)+_0x4495cf(0x213)+_0x4495cf(0x155)+'o\x20be\x20itera'+_0x4495cf(0x127)+'rray\x20objec'+_0x4495cf(0x182)+_0x4495cf(0x17f)+_0x4495cf(0x152)+_0x4495cf(0x1a3)+'d.');}var _0x5e4727,_0x24ede2=!(-0x1*0x2657+-0x11c*0x14+0x3c87),_0x854e3c=!(0x41*-0x2b+-0x1432+-0xf8f*-0x2);return{'s':function(){var _0x58b6f5=_0x4495cf;_0x2f409a=_0x2f409a[_0x58b6f5(0x20a)](_0x20a871);},'n':function(){var _0x2d7968=_0x2f409a['next']();return _0x24ede2=_0x2d7968['done'],_0x2d7968;},'e':function(_0x2f77c4){_0x854e3c=!(0x14aa+-0x7f*0x4+-0x12ae),_0x5e4727=_0x2f77c4;},'f':function(){var _0x7e1993=_0x4495cf;try{_0x24ede2||null==_0x2f409a[_0x7e1993(0x1bf)]||_0x2f409a['return']();}finally{if(_0x854e3c)throw _0x5e4727;}}};}(_0x2aea07[_0x32cc17(0x197)][_0x32cc17(0x1ad)+'torAll'](_0x32cc17(0x156)+'tui-shadow'+'-host]'));try{for(_0x5f395e['s']();!(_0x1275d4=_0x5f395e['n']())[_0x32cc17(0x22a)];){var _0x1c8e6d=_0x1275d4[_0x32cc17(0x215)],_0x5ca824=_0x1c8e6d['getAttribu'+'te'](_0x32cc17(0x210)+_0x32cc17(0x16c)+_0x32cc17(0x18d)),_0x584a05=_0x2aea07['clone'][_0x32cc17(0x1ad)+_0x32cc17(0x248)](('[data-smar'+'tui-elemen'+_0x32cc17(0x1e4))['concat'](_0x5ca824,'\x22]'));_0x1c8e6d['shadowRoot']&&_0x584a05[_0x32cc17(0x21f)]?(_0x2aea07[_0x32cc17(0x21f)+_0x32cc17(0x25a)][_0x32cc17(0x19c)](_0x584a05[_0x32cc17(0x21f)]),_0x440235(_0x1e39ca(_0x1e39ca({},_0x2aea07),{},{'dom':_0x1c8e6d[_0x32cc17(0x21f)],'clone':_0x584a05[_0x32cc17(0x21f)]}))):_0x2aea07[_0x32cc17(0x225)][_0x32cc17(0x1cf)](_0x32cc17(0x210)+_0x32cc17(0x17c)+_0x32cc17(0x24c)+_0x32cc17(0x1ab)+_0x32cc17(0x125));}}catch(_0x17eb6f){_0x5f395e['e'](_0x17eb6f);}finally{_0x5f395e['f']();}}var _0x543c2b=function(_0x129aeb){var _0x2990de=_0x2c1230,_0x5e12ba=_0x129aeb||{},_0x481bba=_0x5e12ba[_0x2990de(0x197)],_0x41c7a6=void(0x1357+0xc18+-0x1f6f)===_0x481bba?document:_0x481bba,_0x5beb93=_0x5e12ba[_0x2990de(0x1ed)+_0x2990de(0x198)],_0x4cec78=void(-0x2d*0xab+-0x1b73+-0x22*-0x1b1)===_0x5beb93?null==_0x129aeb?void(-0xeb2+0x9a*-0xb+0x1550):_0x129aeb[_0x2990de(0x167)+_0x2990de(0x14e)]:_0x5beb93,_0x33212a=_0x5e12ba[_0x2990de(0x23e)+_0x2990de(0x1a9)],_0x4192cc=void(-0x24c8*0x1+0x1d8b+-0x6d*-0x11)===_0x33212a?null==_0x129aeb?void(-0x14bc+-0x2474+-0x5*-0xb70):_0x129aeb[_0x2990de(0x135)+_0x2990de(0x123)]:_0x33212a,_0x5dc805=_0x5e12ba[_0x2990de(0x172)+_0x2990de(0x1a2)],_0x410634=void(0x1439+0x20ee+0xb*-0x4d5)===_0x5dc805?null==_0x129aeb?void(0x632+0x107*-0x19+0x67f*0x3):_0x129aeb[_0x2990de(0x187)+_0x2990de(0x245)]:_0x5dc805,_0x2da5c2=_0x5e12ba[_0x2990de(0x25e)+_0x2990de(0x1c1)],_0x4a7038=void(-0x21c3+0x1ed7+0x2ec)===_0x2da5c2?null==_0x129aeb?void(0x9df+-0xe*-0x107+-0x7*0x377):_0x129aeb[_0x2990de(0x23c)+_0x2990de(0x209)]:_0x2da5c2,_0x5d37f7=_0x5e12ba[_0x2990de(0x1b4)+_0x2990de(0x239)],_0x4b63da=void(-0x3*0x45b+0xa45+0x1*0x2cc)===_0x5d37f7?null==_0x129aeb?void(0x91f+-0xd*-0x5+0x20*-0x4b):_0x129aeb[_0x2990de(0x153)+_0x2990de(0x1b7)+'gs']:_0x5d37f7,_0x3fe11b={'resources':new Set(),'warnings':new Set(),'hints':new Set(),'cache':new Map(),'shadowRootElements':[],'enableJavaScript':_0x4cec78,'disableShadowDOM':_0x4a7038};if(_0x3fe11b[_0x2990de(0x197)]=_0x41c7a6,_0x3fe11b['clone']=function(_0x327d7b){var _0x1c5e50=_0x2990de,_0x291645=_0x327d7b[_0x1c5e50(0x197)],_0x312d02=_0x327d7b[_0x1c5e50(0x25e)+_0x1c5e50(0x1c1)],_0x4d2699=_0x327d7b[_0x1c5e50(0x1cb)],_0x4ac0ba=_0x291645[_0x1c5e50(0x1de)+_0x1c5e50(0x1d3)+'nt']();return function _0x5d003c(_0x4d169d,_0x29ad7c){var _0x229e24=_0x1c5e50;try{var _0x3dee5d=function(_0x8b5893,_0x5a3a5d){var _0xd8b17f=a0_0x51e0;for(;_0x8b5893;)_0x8d7cf8['includes'](_0x8b5893[_0xd8b17f(0x1c2)])||_0x5d003c(_0x8b5893,_0x5a3a5d),_0x8b5893=_0x8b5893[_0xd8b17f(0x129)+'g'];};!function(_0x3bfd84,_0x51c342){var _0x472caf=a0_0x51e0,_0x87757e;['input','textarea','select',_0x472caf(0x1dc),_0x472caf(0x1d4),_0x472caf(0x16d),_0x472caf(0x1ba)][_0x472caf(0x190)](null===(_0x87757e=_0x3bfd84[_0x472caf(0x18e)])||void(0x105d*0x2+0x7*0x49d+-0x4105)===_0x87757e?void(-0x807+-0x15ad+0x1db4):_0x87757e[_0x472caf(0x132)+'e']())&&(_0x3bfd84[_0x472caf(0x148)+'te'](_0x472caf(0x210)+'ui-element'+'-id')||_0x3bfd84['setAttribu'+'te'](_0x472caf(0x210)+_0x472caf(0x16c)+'-id',_0xb0de7f())),0x339*0x6+-0x11bd+-0x198===_0x3bfd84[_0x472caf(0x259)]&&(_0x3bfd84[_0x472caf(0x21a)]||_0x3bfd84[_0x472caf(0x191)])&&(_0x3bfd84[_0x472caf(0x148)+'te']('data-smart'+_0x472caf(0x16c)+'-id')||_0x3bfd84[_0x472caf(0x17e)+'te'](_0x472caf(0x210)+'ui-element'+_0x472caf(0x18d),_0xb0de7f())),!_0x51c342&&_0x3bfd84[_0x472caf(0x21f)]&&(_0x3bfd84[_0x472caf(0x17e)+'te'](_0x472caf(0x210)+_0x472caf(0x17c)+_0x472caf(0x241),''),_0x3bfd84[_0x472caf(0x148)+'te'](_0x472caf(0x210)+_0x472caf(0x16c)+_0x472caf(0x18d))||_0x3bfd84[_0x472caf(0x17e)+'te'](_0x472caf(0x210)+_0x472caf(0x16c)+_0x472caf(0x18d),_0xb0de7f()));}(_0x4d169d,_0x312d02);var _0x50f20e=_0x4d169d[_0x229e24(0x1c4)](),_0x283097={};_0x283097[_0x229e24(0x237)]=_0x229e24(0x1cd),_0x283097[_0x229e24(0x154)+'le']=!(0x1068+-0x1*-0x28+-0x1090),(function(_0x3841b4){var _0x30d013=_0x229e24,_0x10a216;[_0x30d013(0x25d),'iframe']['includes'](null===(_0x10a216=_0x3841b4[_0x30d013(0x18e)])||void(-0x194a+-0x1*0x177b+0x30c5)===_0x10a216?void(-0x1423+-0x23a3+0x37c6):_0x10a216[_0x30d013(0x132)+'e']())&&_0x3841b4['removeAttr'+_0x30d013(0x1d2)]('loading');}(_0x50f20e),function(_0x9e45fa,_0x5c0319){var _0x5d9578=_0x229e24,_0xa3a3c4=_0x9e45fa['src'],_0x4d9d8b=!(0x7cc+-0x4*0x989+0x1c9*0x11);if(null==_0xa3a3c4&&_0x9e45fa['href']&&(_0x4d9d8b=!(-0x109d+-0x464+0x1501),_0xa3a3c4=_0x9e45fa[_0x5d9578(0x199)][_0x5d9578(0x130)]),null!=_0xa3a3c4){var _0x23dd94=function(_0x5c671a){var _0x957acd=_0x5d9578,_0x43af0c=_0x5c671a['indexOf'](_0x957acd(0x229));return-(-0x269c+0x2575+-0x4a*-0x4)===_0x43af0c?null:(_0x509d8f=_0x5c671a[_0x957acd(0x24b)](-0x709+0x62f*0x5+-0x17dd,_0x43af0c),_0x43af0c+=-0x1ae+0x1*0x25db+-0x2425,_0x5c671a[_0x957acd(0x24b)](_0x43af0c));}(_0xa3a3c4[_0x5d9578(0x21b)]());if(null!=_0x23dd94){var _0x41162b=_0x85940(_0xb0de7f(),_0x509d8f,_0x23dd94);_0x5c0319['add'](_0x41162b),!(-0x1752+-0x17b4+-0x1a*-0x1cf)===_0x4d9d8b?_0x9e45fa[_0x5d9578(0x199)][_0x5d9578(0x130)]=_0x41162b['url']:_0x9e45fa['src']=_0x41162b[_0x5d9578(0x16a)];}}}(_0x50f20e,_0x4d2699),_0x29ad7c['appendChil'+'d'](_0x50f20e),_0x50f20e[_0x229e24(0x258)]&&Array[_0x229e24(0x165)](_0x50f20e[_0x229e24(0x258)])[_0x229e24(0x1a7)](function(_0x16a0ca){var _0x27ac2f=_0x229e24;return _0x50f20e[_0x27ac2f(0x1a4)+'d'](_0x16a0ca);}),_0x4d169d[_0x229e24(0x21f)]&&!_0x312d02&&(_0x50f20e['shadowRoot']?_0x50f20e[_0x229e24(0x21f)][_0x229e24(0x203)]='':_0x50f20e[_0x229e24(0x12d)+'ow'](_0x283097),_0x3dee5d(_0x4d169d['shadowRoot'][_0x229e24(0x12b)],_0x50f20e[_0x229e24(0x21f)])),_0x3dee5d(_0x4d169d[_0x229e24(0x12b)],_0x50f20e));}catch(_0x3d4576){if(_0x3d4576['handled'])throw _0x3d4576;_0x1958da(_0x3d4576,_0x229e24(0x19d)+'ing\x20node:\x20',_0x4d169d);}}(_0x291645['documentEl'+_0x1c5e50(0x15d)],_0x4ac0ba),_0x4ac0ba[_0x1c5e50(0x1e9)+'ement']=_0x4ac0ba[_0x1c5e50(0x12b)],_0x4ac0ba[_0x1c5e50(0x1bc)]=_0x4ac0ba[_0x1c5e50(0x1ad)+_0x1c5e50(0x248)](_0x1c5e50(0x1bc)),_0x4ac0ba[_0x1c5e50(0x1be)]=_0x4ac0ba[_0x1c5e50(0x1ad)+_0x1c5e50(0x248)](_0x1c5e50(0x1be)),_0x4ac0ba;}(_0x3fe11b),_0x440235(_0x3fe11b),_0x5f0fd8(_0x3fe11b[_0x2990de(0x183)]['documentEl'+_0x2990de(0x15d)]),_0x4192cc)try{_0x2990de(0x126)==typeof _0x4192cc&&(_0x4192cc=window['eval'](_0x4192cc)),_0x4192cc(_0x3fe11b['clone']['documentEl'+'ement']);}catch(_0x14c32a){var _0x8d6091=(_0x2990de(0x224)+'transform\x20'+'the\x20dom:\x20')[_0x2990de(0x15b)](_0x14c32a['message']);_0x3fe11b['warnings'][_0x2990de(0x1cf)](_0x8d6091),console[_0x2990de(0x162)](_0x8d6091);}if(_0x4b63da)for(var _0x295fec=_0x3fe11b[_0x2990de(0x183)][_0x2990de(0x1be)];_0x295fec[_0x2990de(0x129)+'g'];){var _0x30d5ec=_0x295fec[_0x2990de(0x129)+'g'];_0x295fec['append'](_0x30d5ec);}else _0x3fe11b['clone']['body'][_0x2990de(0x129)+'g']&&_0x3fe11b['hints'][_0x2990de(0x1cf)](_0x2990de(0x195)+_0x2990de(0x177)+_0x2990de(0x1db)+_0x2990de(0x1ac));var _0xc9f4b0='';try{_0xc9f4b0=_0x41c7a6[_0x2990de(0x149)];}catch(_0x55f958){var _0x18c458=('Could\x20not\x20'+'capture\x20co'+_0x2990de(0x166))['concat'](_0x55f958[_0x2990de(0x17a)]);_0x3fe11b['warnings'][_0x2990de(0x1cf)](_0x18c458),console['error'](_0x18c458);}var _0x4b644b={'html':_0x755311(_0x3fe11b),'cookies':_0xc9f4b0,'warnings':Array['from'](_0x3fe11b[_0x2990de(0x225)]),'resources':Array[_0x2990de(0x165)](_0x3fe11b['resources']),'hints':Array[_0x2990de(0x165)](_0x3fe11b['hints'])};return _0x410634?JSON[_0x2990de(0x143)](_0x4b644b):_0x4b644b;},_0x39b034={'serialize':_0x543c2b};_0x2c1230(0x1d9)!=typeof window?window[_0x2c1230(0x19a)]=_0x39b034:_0xc7ac09['g']['SmartUIDOM']=_0x39b034;}()));function a0_0x51e0(_0x2703cd,_0x41eac5){var _0x5052f1=a0_0x305f();return a0_0x51e0=function(_0x4cb0ce,_0x40784b){_0x4cb0ce=_0x4cb0ce-(-0x210+0x1*0xac9+0x3cb*-0x2);var _0x9ce4eb=_0x5052f1[_0x4cb0ce];if(a0_0x51e0['EPZpaC']===undefined){var _0x12f12e=function(_0xca258b){var _0x229acc='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x511d69='',_0x1e0555='',_0x3137f9=_0x511d69+_0x12f12e;for(var _0x103cec=-0x24e4+0x1751+0xd93,_0x19ff63,_0x817775,_0x2cf092=0x1*0x1507+0x26f3+0x3*-0x13fe;_0x817775=_0xca258b['charAt'](_0x2cf092++);~_0x817775&&(_0x19ff63=_0x103cec%(0x3b8*0x3+0x21bb+-0xef5*0x3)?_0x19ff63*(0x16b1+0x111*-0x5+-0x111c)+_0x817775:_0x817775,_0x103cec++%(0x2541+0x1*0x1581+-0x3abe))?_0x511d69+=_0x3137f9['charCodeAt'](_0x2cf092+(-0x1*0xd8b+0x1348*-0x1+0xb3*0x2f))-(-0x76*-0x4d+0x326+-0x269a)!==-0x233d+0x144f+0xeee?String['fromCharCode'](-0x3*-0xa3+-0x25a4+-0x2*-0x125d&_0x19ff63>>(-(0x9*0x1d+0x3*-0x11b+-0x2*-0x127)*_0x103cec&0x11*0x17b+-0x3*-0x8dd+-0xb*0x4b4)):_0x103cec:0x10ed+0x1*0x1b62+-0x2c4f){_0x817775=_0x229acc['indexOf'](_0x817775);}for(var _0x2c137b=0x165a*-0x1+0x16aa+0x50*-0x1,_0x1c4b50=_0x511d69['length'];_0x2c137b<_0x1c4b50;_0x2c137b++){_0x1e0555+='%'+('00'+_0x511d69['charCodeAt'](_0x2c137b)['toString'](0x821*0x2+0x478*-0x7+0xf16))['slice'](-(-0x1c3b+-0x17*-0x181+0x65a*-0x1));}return decodeURIComponent(_0x1e0555);};a0_0x51e0['SePPrW']=_0x12f12e,_0x2703cd=arguments,a0_0x51e0['EPZpaC']=!![];}var _0x13d4dc=_0x5052f1[-0x17b5+0x1174+0x641],_0x55496c=_0x4cb0ce+_0x13d4dc,_0x2aecf9=_0x2703cd[_0x55496c];if(!_0x2aecf9){var _0x2b2bc2=function(_0x55c465){this['akDbUe']=_0x55c465,this['YBJufk']=[0x12*0x52+-0x1a5f+0x4*0x527,0x24d*0x2+-0x1*-0x2466+-0x2900,0x3c0+0xd80+-0x1140],this['PwNxqn']=function(){return'newState';},this['sQNPUq']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['ySUlem']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x2b2bc2['prototype']['ffqLQv']=function(){var _0x456bbf=new RegExp(this['sQNPUq']+this['ySUlem']),_0xd8772d=_0x456bbf['test'](this['PwNxqn']['toString']())?--this['YBJufk'][0x2*0x6b6+0x1*0x1de+-0x2b*0x5b]:--this['YBJufk'][-0x3*-0x221+0xd*0x4b+-0xa32];return this['SPUqhx'](_0xd8772d);},_0x2b2bc2['prototype']['SPUqhx']=function(_0x8ba36f){if(!Boolean(~_0x8ba36f))return _0x8ba36f;return this['OoXneU'](this['akDbUe']);},_0x2b2bc2['prototype']['OoXneU']=function(_0x47f6dd){for(var _0x56f178=-0x1d3f+-0x116a+-0x955*-0x5,_0x4b3a9f=this['YBJufk']['length'];_0x56f178<_0x4b3a9f;_0x56f178++){this['YBJufk']['push'](Math['round'](Math['random']())),_0x4b3a9f=this['YBJufk']['length'];}return _0x47f6dd(this['YBJufk'][-0x469*0x6+-0x3c5*-0xa+-0xb3c]);},new _0x2b2bc2(a0_0x51e0)['ffqLQv'](),_0x9ce4eb=a0_0x51e0['SePPrW'](_0x9ce4eb),_0x2703cd[_0x55496c]=_0x9ce4eb;}else _0x9ce4eb=_0x2aecf9;return _0x9ce4eb;},a0_0x51e0(_0x2703cd,_0x41eac5);}function a0_0x305f(){var _0x315e19=['Aw52ywXPzf90yq','AgvPz2H0','z2v0q29UDgv4Da','C3r5Bgu','mtmZmZKWmLbSy3Lowa','AgvHza','C3r5BgvtAgvLDa','yM9KEq','CMv0DxjU','CgfYzw50tM9Kzq','zg93re9n','BM9Kzu5HBwu','qxjNDw1LBNrZ','y2XVBMvoB2rL','DhLWzq','zgfYzhmGDxnPBG','Dgv4DenVBNrLBG','mtH5qvfvyM8','ywXPEMLUzYbLBa','mtyWmtKWnw5lt0r0vq','CMvZB3vYy2vZ','Dgv4Dc9JC3m','B3bLBG','BgLUAW','ywrK','EMvKx18V','C2vYAwfSAxPLza','Awj1Dgu','BwvUDezYywDTzq','y2fUDMfZ','BNvTyMvY','CMvTB3zL','AgfZ','ChjLCgvUza','Dw5KzwzPBMvK','DgvTChqGDg8GAq','DxrZAwrLidWVyG','AwzYyw1L','twfW','y3jLyxrLrg9JDq','Aw5KzxG','C3LTyM9S','BwfYDhvPlMXVyW','zw51BwvYywjSzq','DwKTyMXVyI1ZDa','Dc1Pzd0I','zMLSDgvY','DdOG','zgv4','u2HHzg93uM9VDa','zg9JDw1LBNrfBa','rg9JDw1LBNrgCG','AxrLCMf0B3i','z2v0sw5Uzxjiva','zw5HyMXLsMf2yq','C3vIC3rY','vvjm','BgvtAgfKB3DsBW','AgfUzgXLza','mtaWjq','Ag9ZDg5HBwu','y29UDgvUDfDPBG','zwqU','ywXPEMLUzYbJyq','C2aGyxmGAxqGAq','yxbWzw5Kq2HPBa','ndC0nda2muzhBNPHwG','C2HLzxq','zgf0ytOS','z2v0t3DUuhjVCa','DMLKzw9xAwr0Aa','oduWmJG0mfzeA0P2tG','zgvVigvSzw1LBG','BMfTzq','sfrnterVy3vTzq','DgfYzweSihnLBa','Aw5Uzxjive1m','AxnbCNjHEq','zhjHD0LTywDL','DwKTC2vYAwfSAq','yMPLy3rZig11CW','zg93','ywrVD19KB20','y2fSBa','C2vHCMnO','DxrLlxnYyW','ywXPzgf0zsb0Aa','B3DUzxjoB2rL','CIbxm0mGC3rHBG','zgf0ys1ZBwfYDa','C2nYB2XSwa','z2v0sfrnta','Aw5ZDgfUy2uUcG','C2vSzwn0zwq','DMfSDwu','zgvMAw5LuhjVCa','CgvYzM9YBwfUyW','u2TPChbPBMCGya','Bwf4v2LKDgG','C2nYB2XSvg9W','Dg9tDhjPBMC','y3nZvgv4Da','Dw1LBNq','lwLKpsi','C2HHzg93uM9VDa','ywDTzw50','sw52ywXPzcbHDa','qeb0B1bYAw1PDa','EwXLC2HLzxrZlq','q291BgqGBM90ia','D2fYBMLUz3m','zwn0','lwL0zxjHyMXLia','zxjPywXPEMvK','o2jHC2u2ncW','zg9Uzq','t2jQzwn0','l19FC2vYAwfSAq','yxr0CMLIDxrLCW','CMvS','B3v0zxjive1m','BgvtAgvLDhm','y29UC3rYDwn0BW','BhvLlG','zxiGDg8GyMuGAq','ChrVCG','y29UDgfPBNm','pcfet0nuwvbfia','Bw9Kzq','DcbOyxzLigeGwW','BNzHBgLKvgfNCW','y3nZuNvSzxm','CM9SBc15','zgLZywjSzv9ZAa','ndGYnJy2BK9XvKzu','zg9TvhjHBNnMBW','BgvUz3rO','zw50','Ag9ZDa','DwKTCgfNzs1ZyW','u2v0','DgLTAw5N','CMvZCg9UC2u','Aw5Zzxj0qMvMBW','DxjPBMCGCgfNzq','Dg9Y','y2HLy2TIB3G','DwKTC2nYB2XSlq','C3vIC3rYAw5N','Ag9ZDcbKB2vZia','lxn0EwXLC2HLzq','y2XHC3noyw1L','B3rZ','zM9YihnJCM9SBa','C3r5BgvZAgvLDa','mtq5nJiZotbrv2HeCfu','DgvYyxrLig5VBG','CM9SBc14','EMvKlwf0DhjPyG','D2LKDgG','DgLWBgu','y2HPBgrYzw4','BM9Kzvr5Cgu','rwXLBwvUDhm','rxjYB3iGD2fSAW','ifbvqKXjqYaI','Aw1N','zgLZywjSzvnOyq','BgvMDa','B3jTyxrPB24','zxr1CM4GysbWCG','AgfKB3DsB290','C3rYAw5N','yMXLlcbUB24Tyq','ifnzu1rftsaI','BMv4DfnPyMXPBG','C3jJzg9J','zMLYC3rdAgLSza','y29UDgvUDerVyW','yxr0ywnOu2HHza','C3bSAxq','AxzLig11C3qGCG','yMfZzvzHBa','Aw5JBhvKzvnOyq','Dg9mB3DLCKnHCW','C2vSzwn0zwrpCa','kcGOlISPkYKRkq','zg9Tx3rYyw5ZzG','zxj0AwvZ','DxrLlxbVC3rLCG','BNq6ia','ywXPEMLUzYbZDa','BNzHCYbLBgvTzq','u3LTyM9SlML0zq','igvSzw1LBNrZia','DgLVBNm','shjLzG','Dg9W','y3jLyxrLrwXLBq','qebPDgvYyxrVCG','rxjYB3iGy2fWDa','C3rYAw5NAwz5','ihnJCM9SBdOG','Dg9qCMLTAxrPDG','tK9tq1jjufq','ywXPEMLUzYb2Aq','z2v0qxr0CMLIDq','y29VA2LL','B3j0zwqU','Dhj1zq','AM9PBG','C2XPy2u','yxnJCMLWDa','zNvUy3rPB24','CMvTB3zLqxr0CG','y2fJAgu','B2WUAxrLCMf0BW','CMvZAhvMzMXLxW','C2vYAwfSAxPHyG','sw4GB3jKzxiGDa','w2rHDgeTC21HCG','C2v0','B3b0Aw9UCW','CgfYzw50rwXLBq','Dg9YqwXS','y29Uy2f0','Dc1Pzf0','zw1LBNq','y2uUcKLUig9Yza','jdfYzw5KzxiUCW','Bg9Hzev2zw50rq','DhvPlwvSzw1LBG','zxjYB3i','C3r5Bgvjza','Aw5WDxqSihrLEa','zNjVBq','B2TPzxm6ia','zw5HyMXLx2PHDG','C2vSzwn0zwrjBG','yMXVyJO','DxjS','DgvYywjSzsWGBG','DwKTzwXLBwvUDa','DMLKzw8','CMv0DxjUihrOAq','BYbIzsbPDgvYyq','zxj0Eq','DwKTC3r5BguTAa','C3rYAw5NAwz5uG','yMfZzq','zw1LBNqGC2nYBW','CYbUB3qGC3vWCa','zYbHBNKGB25SAq','DhmGzM91BMqGBW','BMuGDg9VBa','mJfpuKP4D0C','BwvZC2fNzq','ChrVCNm','DwKTC2HHzg93lq','ywrVChrLzfn0Eq','C2v0qxr0CMLIDq','DMuGysbBu3LTyG','zxn0CNvJDhvYzq','EwXLC2HLzxq6ia','DhmGBxvZDcbOyq','y2XVBMu','BMv4Da','B2jQzwn0','iIaI','C3rYAw5NAwz5xW','y2HLy2TLza','C2vSzwn0lw9Uzq','AhrTBa','CNjHEsbVyMPLyW','DwKTy3nZB20TCW','lwLK','DgfNtMfTzq','yxqGEw91CIbetW','Aw5JBhvKzxm','C2nYB2XStgvMDa','yxbWBhK','yMfZzvvssq','mJr6CeToswW','re9nigvSzw1LBG','zxj0EurLC2nYAq','zg9T','u2nYAxb0','AhjLzG','u21HCNrvsurptq','ChjVDg90ExbL','ChvZAa','rxjYB3iGy2XVBG','ode5oda3mfb2Chniva','C3rHCNrZv2L0Aa','BgW6ia','C3LZDgvTswq','zxnWB25Zzq','CL0OksbTzxrOBW','CMvTB3zLq2HPBa','CMf0B3jDkcKGBq','zxj0Evn5BwjVBa','zM9YrwfJAa','rxjYB3iGC2vYAq','CM1HDgLVBG','C2vSzwn0lw11Ba','BM90igHHDMuGCW','B2r5pG','CxvLCNLtzwXLyW','Dg9eyxrHvvjm','DxrLlwHYzwy','C3jJ','DgvZDa','DgvTChqGDg8Gza','yMXLigLUC3rHBG','CMvZAhvMzMXLsq','yxmGAxqGAxmGBG','C2nYB2XSwq'];a0_0x305f=function(){return _0x315e19;};return a0_0x305f();} \ No newline at end of file +(function(){!(function(){var _0x595dc7=(function(){var _0x4c44c4=!![];return function(_0x14df69,_0x6b464d){var _0x5bb92d=_0x4c44c4?function(){if(_0x6b464d){var _0x329218=_0x6b464d['apply'](_0x14df69,arguments);return _0x6b464d=null,_0x329218;}}:function(){};return _0x4c44c4=![],_0x5bb92d;};}());'use strict';var _0x42d7a4={};function _0x2314f6(_0x258a73){return _0x2314f6='function'==typeof Symbol&&'symbol'==typeof Symbol['iterator']?function(_0x1bc379){return typeof _0x1bc379;}:function(_0xa67bd8){return _0xa67bd8&&'function'==typeof Symbol&&_0xa67bd8['constructo'+'r']===Symbol&&_0xa67bd8!==Symbol['prototype']?'symbol':typeof _0xa67bd8;},_0x2314f6(_0x258a73);}function _0xb6852e(_0x3c0384,_0x4dea2d){var _0x54164e=Object['keys'](_0x3c0384);if(Object['getOwnProp'+'ertySymbol'+'s']){var _0x33ba08=Object['getOwnProp'+'ertySymbol'+'s'](_0x3c0384);_0x4dea2d&&(_0x33ba08=_0x33ba08['filter'](function(_0x26c825){return Object['getOwnProp'+'ertyDescri'+'ptor'](_0x3c0384,_0x26c825)['enumerable'];})),_0x54164e['push']['apply'](_0x54164e,_0x33ba08);}return _0x54164e;}function _0x125cd4(_0x4ca6d9){for(var _0x5ed7a0=0x218d+0xb89*0x2+-0x389e;_0x5ed7a0_0x303f7c['length'])&&(_0x110b22=_0x303f7c['length']);for(var _0x205b18=-0x112f+0x1*0x64+-0x599*-0x3,_0x20c5c4=Array(_0x110b22);_0x205b18<_0x110b22;_0x205b18++)_0x20c5c4[_0x205b18]=_0x303f7c[_0x205b18];return _0x20c5c4;}function _0x4eb672(_0x382c99,_0x3e9a75){var _0x1a65bb=_0x13bdd7(_0x3e9a75['split'](','),0xcf+-0x1e40+0x9d1*0x3),_0x201a92=_0x1a65bb[0x9f7*0x3+-0x1eb0+0x1d*0x7],_0x1c8175=_0x1a65bb[0x1*0x961+-0x2b9+-0x1*0x6a7],_0x41240e=_0x13bdd7(_0x201a92['split'](':'),-0xc4*0xe+-0xeff+-0x525*-0x5)[0xaec*0x2+-0x1720+-0x149*-0x1],_0x202c01=_0x13bdd7(_0x41240e['split'](';'),0x3*0xc25+0x1b33+-0x3fa1),_0x1fa50a=_0x13bdd7((_0x41240e=_0x202c01[0x601+0x429*-0x5+0x1*0xecc])['split']('/'),0x1d65+0xcd*-0x7+-0x17c8)[0x48*0x65+-0x2f*-0x86+-0x1*0x3501],_0x2b11ed=('/__seriali'+'zed__/')['concat'](_0x382c99,'.')['concat'](_0x1fa50a);return{'url':_0x3837c9(new URL(_0x2b11ed,document['URL'])['toString']()),'content':_0x1c8175,'mimetype':_0x41240e};}function _0x44cc56(_0x526d7f,_0x2b5b76,_0x2734f2){var _0x5d21d5=_0x13bdd7(_0x2b5b76['split']('/'),0x1de7+-0x62f+-0x17b6)[0x13ef+0x704*0x2+-0x21f6*0x1],_0x5b2d63=('/__seriali'+'zed__/')['concat'](_0x526d7f,'.')['concat'](_0x5d21d5);return{'url':_0x3837c9(new URL(_0x5b2d63,document['URL'])['toString']()),'content':_0x2734f2,'mimetype':_0x2b5b76};}function _0x4fd2de(_0x42ba48){if(_0x42ba48['sheet'])return _0x42ba48['sheet'];var _0x3e6e0a=_0x42ba48['cloneNode']();_0x3e6e0a['setAttribu'+'te']('data-smart'+'ui-style-h'+'elper',''),_0x3e6e0a['innerHTML']=_0x42ba48['innerHTML'],document['cloneNode']()['appendChil'+'d'](_0x3e6e0a);var _0x319e24=_0x3e6e0a['sheet'];return _0x3e6e0a['remove'](),_0x319e24;}function _0x3837c9(_0x184936){return _0x184936['replace'](/(http[s]{0,1}:\/\/)(localhost|127.0.0.1)[:\d+]*/,'$1render.s'+'martui.loc'+'al');}function _0x4394dd(_0xd97d4d,_0x16160f){var _0x5ec271=arguments['length']>-0x16*-0xbb+0x1*0x24f2+-0x3502&&void(0x6a7+-0x1*0xb12+0x46b)!==arguments[0x1e71+0x3ca+-0x2239]?arguments[0x2535+-0x1839*-0x1+0x1*-0x3d6c]:null,_0xe019c8=arguments['length']>0x2f*0x5f+0x584+0x7a6*-0x3&&void(0x53b+-0x9*0x1a5+-0x23*-0x46)!==arguments[-0x55*-0x35+-0xf77*-0x1+-0x1*0x210d]?arguments[0x1042+0x183b*0x1+-0x287a]:{},_0x4abb40={};throw _0x5ec271&&(_0x4abb40={'nodeName':_0x5ec271['nodeName'],'classNames':_0x5ec271['className'],'id':_0x5ec271['id']}),_0xe019c8=_0x125cd4(_0x125cd4({},_0xe019c8),_0x4abb40),_0xd97d4d['message']+='\x0a'['concat'](_0x16160f,'\x20\x0a')['concat'](JSON['stringify'](_0xe019c8)),_0xd97d4d['message']+='\x0a\x20Please\x20v'+'alidate\x20th'+'at\x20your\x20DO'+'M\x20is\x20as\x20pe'+'r\x20W3C\x20stan'+'dards\x20usin'+'g\x20any\x20onli'+'ne\x20tool',_0xd97d4d['handled']=!(-0xd*0x301+0x1*-0x7e3+0x4*0xbbc),_0xd97d4d;}function _0x5ab10a(_0x4fc452,_0x5a89d1){var _0x1a03b5='undefined'!=typeof Symbol&&_0x4fc452[Symbol['iterator']]||_0x4fc452['@@iterator'];if(!_0x1a03b5){if(Array['isArray'](_0x4fc452)||(_0x1a03b5=function(_0x4097f5,_0x3c4c03){if(_0x4097f5){if('string'==typeof _0x4097f5)return _0x252439(_0x4097f5,_0x3c4c03);var _0x5c955e={}['toString']['call'](_0x4097f5)['slice'](-0x1bc3+-0x1b7*-0xb+0x8ee,-(-0x1b9*0x7+0x1f*0x6d+-0x123*0x1));return'Object'===_0x5c955e&&_0x4097f5['constructo'+'r']&&(_0x5c955e=_0x4097f5['constructo'+'r']['name']),'Map'===_0x5c955e||'Set'===_0x5c955e?Array['from'](_0x4097f5):'Arguments'===_0x5c955e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/['test'](_0x5c955e)?_0x252439(_0x4097f5,_0x3c4c03):void(0x1635+-0xce*-0x1e+0xf73*-0x3);}}(_0x4fc452))||_0x5a89d1&&_0x4fc452&&'number'==typeof _0x4fc452['length']){_0x1a03b5&&(_0x4fc452=_0x1a03b5);var _0x56bfa2=0x97d+0x2612*-0x1+-0x10f*-0x1b,_0x57965f=function(){},_0x4ecbf1={};return _0x4ecbf1['s']=_0x57965f,_0x4ecbf1['n']=function(){var _0x4ceb11={};return _0x4ceb11['done']=!(-0x79f*-0x5+-0x2bc+0x235f*-0x1),_0x56bfa2>=_0x4fc452['length']?_0x4ceb11:{'done':!(0x1f*-0x109+0x1d99+0x27f),'value':_0x4fc452[_0x56bfa2++]};},_0x4ecbf1['e']=function(_0x360546){throw _0x360546;},_0x4ecbf1['f']=_0x57965f,_0x4ecbf1;}throw new TypeError('Invalid\x20at'+'tempt\x20to\x20i'+'terate\x20non'+'-iterable\x20'+'instance.\x0a'+'In\x20order\x20t'+'o\x20be\x20itera'+'ble,\x20non-a'+'rray\x20objec'+'ts\x20must\x20ha'+'ve\x20a\x20[Symb'+'ol.iterato'+'r]()\x20metho'+'d.');}var _0x4e8e4d,_0x5ee1ce=!(0x1dfc+0x21b0+-0x5*0xcbc),_0x4e3eb5=!(0xb3*0x33+0xa5b+-0x1*0x2e03);return{'s':function(){_0x1a03b5=_0x1a03b5['call'](_0x4fc452);},'n':function(){var _0x49d603=_0x1a03b5['next']();return _0x5ee1ce=_0x49d603['done'],_0x49d603;},'e':function(_0x122ac4){_0x4e3eb5=!(0x47*0x1f+0x1253+0x6bb*-0x4),_0x4e8e4d=_0x122ac4;},'f':function(){try{_0x5ee1ce||null==_0x1a03b5['return']||_0x1a03b5['return']();}finally{if(_0x4e3eb5)throw _0x4e8e4d;}}};}function _0x252439(_0x385618,_0x4220c1){(null==_0x4220c1||_0x4220c1>_0x385618['length'])&&(_0x4220c1=_0x385618['length']);for(var _0x5a65b5=-0x79d*0x1+0x20*0xfa+-0x17a3,_0x474e91=Array(_0x4220c1);_0x5a65b5<_0x4220c1;_0x5a65b5++)_0x474e91[_0x5a65b5]=_0x385618[_0x5a65b5];return _0x474e91;}_0x42d7a4['g']=(function(){var _0x389d91=_0x595dc7(this,function(){return _0x389d91['toString']()['search']('(((.+)+)+)'+'+$')['toString']()['constructo'+'r'](_0x389d91)['search']('(((.+)+)+)'+'+$');});_0x389d91();if('object'==typeof globalThis)return globalThis;try{return this||new Function('return\x20thi'+'s')();}catch(_0x35ab3b){if('object'==typeof window)return window;}}());function _0x2e753c(_0x257026,_0x594ba2){var _0x58ba00='undefined'!=typeof Symbol&&_0x257026[Symbol['iterator']]||_0x257026['@@iterator'];if(!_0x58ba00){if(Array['isArray'](_0x257026)||(_0x58ba00=function(_0x50b959,_0x152e92){if(_0x50b959){if('string'==typeof _0x50b959)return _0x567d43(_0x50b959,_0x152e92);var _0xd9be70={}['toString']['call'](_0x50b959)['slice'](-0x359+-0x7*-0x218+-0xb47*0x1,-(0x1*-0xf4d+0x3cd*0x4+0x1a));return'Object'===_0xd9be70&&_0x50b959['constructo'+'r']&&(_0xd9be70=_0x50b959['constructo'+'r']['name']),'Map'===_0xd9be70||'Set'===_0xd9be70?Array['from'](_0x50b959):'Arguments'===_0xd9be70||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/['test'](_0xd9be70)?_0x567d43(_0x50b959,_0x152e92):void(0x2074+0x1*0xa99+-0x2b0d*0x1);}}(_0x257026))||_0x594ba2&&_0x257026&&'number'==typeof _0x257026['length']){_0x58ba00&&(_0x257026=_0x58ba00);var _0x2ac77d=0x169c+0x1eca+-0x557*0xa,_0x1a65b1=function(){},_0x4277e6={};return _0x4277e6['s']=_0x1a65b1,_0x4277e6['n']=function(){var _0x59808c={};return _0x59808c['done']=!(0x433*-0x8+-0x1aed*0x1+0x3c85),_0x2ac77d>=_0x257026['length']?_0x59808c:{'done':!(0x2475+-0xf83+-0x14f1),'value':_0x257026[_0x2ac77d++]};},_0x4277e6['e']=function(_0x5e2848){throw _0x5e2848;},_0x4277e6['f']=_0x1a65b1,_0x4277e6;}throw new TypeError('Invalid\x20at'+'tempt\x20to\x20i'+'terate\x20non'+'-iterable\x20'+'instance.\x0a'+'In\x20order\x20t'+'o\x20be\x20itera'+'ble,\x20non-a'+'rray\x20objec'+'ts\x20must\x20ha'+'ve\x20a\x20[Symb'+'ol.iterato'+'r]()\x20metho'+'d.');}var _0x5428b3,_0x191ac9=!(-0x139d+0x60d+0xd90),_0x1d9edb=!(0x2d*-0xbf+-0xb09*0x3+0x42af);return{'s':function(){_0x58ba00=_0x58ba00['call'](_0x257026);},'n':function(){var _0xc3cc43=_0x58ba00['next']();return _0x191ac9=_0xc3cc43['done'],_0xc3cc43;},'e':function(_0x23c514){_0x1d9edb=!(-0x14dc+0x1*-0x2312+0x37ee),_0x5428b3=_0x23c514;},'f':function(){try{_0x191ac9||null==_0x58ba00['return']||_0x58ba00['return']();}finally{if(_0x1d9edb)throw _0x5428b3;}}};}function _0x567d43(_0x3a05f2,_0x5211a1){(null==_0x5211a1||_0x5211a1>_0x3a05f2['length'])&&(_0x5211a1=_0x3a05f2['length']);for(var _0x5a864b=0x17bb+0xcf+0x82e*-0x3,_0x566de6=Array(_0x5211a1);_0x5a864b<_0x5211a1;_0x5a864b++)_0x566de6[_0x5a864b]=_0x3a05f2[_0x5a864b];return _0x566de6;}function _0x140163(_0x1e924){var _0x1ba892;if(new URL(_0x1e924['baseURI'])['hostname']){var _0x31d6a5=document['createElem'+'ent']('base');_0x31d6a5['href']=_0x1e924['baseURI'],null===(_0x1ba892=_0x1e924['querySelec'+'tor']('head'))||void(0x2277+0x4e+-0x17*0x183)===_0x1ba892||_0x1ba892['prepend'](_0x31d6a5);}}function _0x586a0e(_0x10e58d,_0x29817d,_0x337b3a,_0x3dcea7){var _0x48cdf0=_0x10e58d['getAttribu'+'te']('data-smart'+'ui-element'+'-id');if(_0x10e58d['src']&&/\.(mp4|webm|ogg)(\?|$)/i['test'](_0x10e58d['src'])){var _0x167878=_0x29817d['ownerDocum'+'ent']['createElem'+'ent']('video');_0x167878['crossOrigi'+'n']='anonymous',_0x167878['muted']=!(0x1*0xd77+0x1b85+-0x1*0x28fc),_0x167878['onloadedda'+'ta']=function(){try{if(_0x167878['videoWidth']<=-0xeef+0x6*-0x409+0xb*0x38f||_0x167878['videoHeigh'+'t']<=0x1866+-0x1b23*0x1+0x2bd)return void _0x167878['remove']();var _0xc6427a=document['createElem'+'ent']('canvas');_0xc6427a['width']=_0x167878['videoWidth'],_0xc6427a['height']=_0x167878['videoHeigh'+'t'],_0xc6427a['getContext']('2d')['drawImage'](_0x167878,-0x555+0x1169*0x1+0xc14*-0x1,0xba1*-0x1+-0x369*0x1+0x5*0x302,_0xc6427a['width'],_0xc6427a['height']);var _0x4eab4f=_0xc6427a['toDataURL']('image/jpeg'),_0xd61cb7=_0x4eb672(('direct-vid'+'eo-')['concat'](_0x48cdf0),_0x4eab4f);_0x337b3a['add'](_0xd61cb7),_0x10e58d['setAttribu'+'te']('data-smart'+'ui-video-p'+'oster',_0xd61cb7['url']),_0xc6427a['remove'](),_0x167878['remove']();}catch(_0x51515f){_0x4394dd(_0x51515f,'Error\x20capt'+'uring\x20dire'+'ct\x20video\x20f'+'rom\x20URL:\x20',_0x10e58d['src']),_0x167878['remove']();}},_0x167878['onerror']=function(){_0x167878['remove']();},setTimeout(function(){_0x167878['parentNode']&&_0x167878['remove']();},-0x1954+0x18a9+0x1433),_0x167878['src']=_0x10e58d['src'];}else _0x10e58d['src']&&_0x10e58d['src']['includes']('youtube.co'+'m/embed/')&&function(_0x4b82ed,_0x5d70e9,_0x4743f2,_0x31374e){var _0x4fd9d7=(_0x4b82ed['src']||'')['match'](/(?:youtube\.com\/embed\/|youtu\.be\/)([^?&]+)/);if(_0x4fd9d7&&_0x4fd9d7[0xb*0xe3+-0x1*0x3b8+0x1*-0x608]){var _0x7abcf3=_0x4fd9d7[0x78b*0x2+0x8fa+-0x3*0x805],_0x4ccf90=parseInt(_0x31374e['width'])||_0x31374e['clientWidt'+'h']||-0x7a4*-0x2+-0x2140+0xec*0x14,_0x2619d2=parseInt(_0x31374e['height'])||_0x31374e['clientHeig'+'ht']||0x241a+0xde*-0x18+-0x10*0xef,_0x25f46d='mqdefault';_0x4ccf90>=0x221*-0xb+0xd5*-0x2e+0x3f91||_0x2619d2>=0x9d*0x23+0x1*-0xa67+-0x6*0x19c?_0x25f46d='hqdefault':(_0x4ccf90>=0x1*0xaf9+0x17*-0x5e+-0x7||_0x2619d2>=0x1c1a+0x16*-0x141+0x3*0x74)&&(_0x25f46d='sddefault'),_0x4b82ed['src']=('https://im'+'g.youtube.'+'com/vi/')['concat'](_0x7abcf3,'/')['concat'](_0x25f46d,'.jpg');var _0x163bd7=_0x5d70e9['ownerDocum'+'ent']['createElem'+'ent']('img');_0x163bd7['setAttribu'+'te']('width',_0x4ccf90),_0x163bd7['setAttribu'+'te']('height',_0x2619d2),Array['from'](_0x4b82ed['attributes'])['forEach'](function(_0x122ebc){_0x163bd7['setAttribu'+'te'](_0x122ebc['name'],_0x122ebc['value']);}),_0x4b82ed['parentNode']['replaceChi'+'ld'](_0x163bd7,_0x4b82ed);}}(_0x10e58d,_0x29817d,0x11e+0x1*-0x26ec+0x25ce,_0x3dcea7);}function _0x1371b5(){return'_'['concat'](Math['random']()['toString'](-0x1be3+-0x21a0+0x3da7)['substr'](-0x8fe+0x23e6+0xd73*-0x2,0x1278+0x12d7+-0x16f*0x1a));}function _0x21190e(_0x373ab3,_0x40fe1b){var _0x95233d='undefined'!=typeof Symbol&&_0x373ab3[Symbol['iterator']]||_0x373ab3['@@iterator'];if(!_0x95233d){if(Array['isArray'](_0x373ab3)||(_0x95233d=function(_0x206e54,_0x2290c9){if(_0x206e54){if('string'==typeof _0x206e54)return _0x3a548(_0x206e54,_0x2290c9);var _0x4a30af={}['toString']['call'](_0x206e54)['slice'](-0x1189+-0x455+0x15e6,-(-0x159b+-0x36f*-0x8+0x6*-0xfa));return'Object'===_0x4a30af&&_0x206e54['constructo'+'r']&&(_0x4a30af=_0x206e54['constructo'+'r']['name']),'Map'===_0x4a30af||'Set'===_0x4a30af?Array['from'](_0x206e54):'Arguments'===_0x4a30af||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/['test'](_0x4a30af)?_0x3a548(_0x206e54,_0x2290c9):void(-0x129e+0x13*-0x153+-0x7*-0x641);}}(_0x373ab3))||_0x40fe1b&&_0x373ab3&&'number'==typeof _0x373ab3['length']){_0x95233d&&(_0x373ab3=_0x95233d);var _0x22bbe6=0x23bf*0x1+-0x2049+-0x376,_0x95779f=function(){},_0x4a72d1={};return _0x4a72d1['s']=_0x95779f,_0x4a72d1['n']=function(){var _0xc0235={};return _0xc0235['done']=!(-0x8*-0x1af+-0x1d93+0x24d*0x7),_0x22bbe6>=_0x373ab3['length']?_0xc0235:{'done':!(-0x91c+0x1*-0x16f6+0x2013),'value':_0x373ab3[_0x22bbe6++]};},_0x4a72d1['e']=function(_0xff382){throw _0xff382;},_0x4a72d1['f']=_0x95779f,_0x4a72d1;}throw new TypeError('Invalid\x20at'+'tempt\x20to\x20i'+'terate\x20non'+'-iterable\x20'+'instance.\x0a'+'In\x20order\x20t'+'o\x20be\x20itera'+'ble,\x20non-a'+'rray\x20objec'+'ts\x20must\x20ha'+'ve\x20a\x20[Symb'+'ol.iterato'+'r]()\x20metho'+'d.');}var _0x22a88e,_0x348429=!(-0x1c14+-0x2a8+0x1ebc),_0x4ae409=!(0x37*0x17+0x1208+-0x16f8);return{'s':function(){_0x95233d=_0x95233d['call'](_0x373ab3);},'n':function(){var _0x16abc9=_0x95233d['next']();return _0x348429=_0x16abc9['done'],_0x16abc9;},'e':function(_0x5f23dd){_0x4ae409=!(-0x3*0x509+0x18f1*0x1+-0x9d6),_0x22a88e=_0x5f23dd;},'f':function(){try{_0x348429||null==_0x95233d['return']||_0x95233d['return']();}finally{if(_0x4ae409)throw _0x22a88e;}}};}function _0x3a548(_0x25f24e,_0x538ec6){(null==_0x538ec6||_0x538ec6>_0x25f24e['length'])&&(_0x538ec6=_0x25f24e['length']);for(var _0x3d7868=-0x2*0xf65+0x8be+0x160c,_0x3f3127=Array(_0x538ec6);_0x3d7868<_0x538ec6;_0x3d7868++)_0x3f3127[_0x3d7868]=_0x25f24e[_0x3d7868];return _0x3f3127;}function _0xbf3b38(_0x66bb76){return!_0x66bb76['href']&&_0x66bb76['cssRules']&&_0x66bb76['ownerNode'];}function _0x2beafc(_0x3367bc,_0x29e039){for(var _0x413e86=-0x1*0xea2+-0x207*0x3+0x14b7*0x1;_0x413e86<_0x3367bc['cssRules']['length'];_0x413e86++){var _0x46a3aa;if(_0x3367bc['cssRules'][_0x413e86]['cssText']!==(null===(_0x46a3aa=_0x29e039['cssRules'][_0x413e86])||void(0x5bc*0x3+0x2*0x8cd+0x6*-0x5cd)===_0x46a3aa?void(-0x13d9+0x1*0xeb5+0x1*0x524):_0x46a3aa['cssText']))return!(-0x17*-0x151+0x40*0xe+-0x21c6);}return!(0x18e*-0x3+0x43*-0xa+0x748*0x1);}function _0x34ebab(_0x2628f0){var _0x29e462=Array['from'](_0x2628f0['cssRules'])['map'](function(_0x596e0d){return _0x596e0d['cssText'];})['join']('\x0a');return _0x44cc56(_0x1371b5(),'text/css',_0x29e462);}function _0xe39489(_0x6f7127,_0x323b62){var _0x522274='undefined'!=typeof Symbol&&_0x6f7127[Symbol['iterator']]||_0x6f7127['@@iterator'];if(!_0x522274){if(Array['isArray'](_0x6f7127)||(_0x522274=function(_0xa03d4f,_0x557877){if(_0xa03d4f){if('string'==typeof _0xa03d4f)return _0x2b348a(_0xa03d4f,_0x557877);var _0x88b4e2={}['toString']['call'](_0xa03d4f)['slice'](0x6*-0x543+0x2192*0x1+-0x7*0x48,-(-0x2229+-0x1*0x8c6+0x2af0));return'Object'===_0x88b4e2&&_0xa03d4f['constructo'+'r']&&(_0x88b4e2=_0xa03d4f['constructo'+'r']['name']),'Map'===_0x88b4e2||'Set'===_0x88b4e2?Array['from'](_0xa03d4f):'Arguments'===_0x88b4e2||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/['test'](_0x88b4e2)?_0x2b348a(_0xa03d4f,_0x557877):void(0x1f51+0x1446+0x3397*-0x1);}}(_0x6f7127))||_0x323b62&&_0x6f7127&&'number'==typeof _0x6f7127['length']){_0x522274&&(_0x6f7127=_0x522274);var _0x16e89b=-0x154a+0xa1+0x14a9,_0x50fe58=function(){},_0x203c65={};return _0x203c65['s']=_0x50fe58,_0x203c65['n']=function(){var _0x33f191={};return _0x33f191['done']=!(-0x1db8+0x1*0x177b+0x1*0x63d),_0x16e89b>=_0x6f7127['length']?_0x33f191:{'done':!(0x10e6*0x2+-0x922*0x4+0x2bd*0x1),'value':_0x6f7127[_0x16e89b++]};},_0x203c65['e']=function(_0x4dd6b0){throw _0x4dd6b0;},_0x203c65['f']=_0x50fe58,_0x203c65;}throw new TypeError('Invalid\x20at'+'tempt\x20to\x20i'+'terate\x20non'+'-iterable\x20'+'instance.\x0a'+'In\x20order\x20t'+'o\x20be\x20itera'+'ble,\x20non-a'+'rray\x20objec'+'ts\x20must\x20ha'+'ve\x20a\x20[Symb'+'ol.iterato'+'r]()\x20metho'+'d.');}var _0x28177a,_0x531da2=!(0xf34*0x2+-0x25d3+0x76b),_0x34606e=!(0x1*-0x3cb+-0x1b*-0x11+0x201);return{'s':function(){_0x522274=_0x522274['call'](_0x6f7127);},'n':function(){var _0x23462e=_0x522274['next']();return _0x531da2=_0x23462e['done'],_0x23462e;},'e':function(_0x67f178){_0x34606e=!(0xa75+0x2*0x87d+-0x1b6f),_0x28177a=_0x67f178;},'f':function(){try{_0x531da2||null==_0x522274['return']||_0x522274['return']();}finally{if(_0x34606e)throw _0x28177a;}}};}function _0x2b348a(_0x40da61,_0x2906f1){(null==_0x2906f1||_0x2906f1>_0x40da61['length'])&&(_0x2906f1=_0x40da61['length']);for(var _0x84ea08=0x99*-0x28+-0x75+0x185d,_0x2b9643=Array(_0x2906f1);_0x84ea08<_0x2906f1;_0x84ea08++)_0x2b9643[_0x84ea08]=_0x40da61[_0x84ea08];return _0x2b9643;}function _0x11d762(_0x5f0d21,_0x4edfe3){(null==_0x4edfe3||_0x4edfe3>_0x5f0d21['length'])&&(_0x4edfe3=_0x5f0d21['length']);for(var _0x5d3d7c=0x1*0x1115+-0x172c+0x617*0x1,_0x245fe4=Array(_0x4edfe3);_0x5d3d7c<_0x4edfe3;_0x5d3d7c++)_0x245fe4[_0x5d3d7c]=_0x5f0d21[_0x5d3d7c];return _0x245fe4;}var _0x320480=function(_0x2603bc){var _0x21df59,_0x4f14d8=_0x2603bc['dom'],_0x4039f5=_0x2603bc['clone'],_0xd873ba=_0x2603bc['resources'],_0x4d5e75=_0x2603bc['warnings'],_0x3febd0=function(_0xbba5b2,_0x471537){var _0x26575c='undefined'!=typeof Symbol&&_0xbba5b2[Symbol['iterator']]||_0xbba5b2['@@iterator'];if(!_0x26575c){if(Array['isArray'](_0xbba5b2)||(_0x26575c=function(_0x33a645,_0x5c00bd){if(_0x33a645){if('string'==typeof _0x33a645)return _0x11d762(_0x33a645,_0x5c00bd);var _0x1408cb={}['toString']['call'](_0x33a645)['slice'](0xefe+-0x229f+0x13a9,-(-0xf3a+0x6*0x2b3+-0xf7*0x1));return'Object'===_0x1408cb&&_0x33a645['constructo'+'r']&&(_0x1408cb=_0x33a645['constructo'+'r']['name']),'Map'===_0x1408cb||'Set'===_0x1408cb?Array['from'](_0x33a645):'Arguments'===_0x1408cb||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/['test'](_0x1408cb)?_0x11d762(_0x33a645,_0x5c00bd):void(0x14d6+0x1e1+0x1*-0x16b7);}}(_0xbba5b2))||_0x471537&&_0xbba5b2&&'number'==typeof _0xbba5b2['length']){_0x26575c&&(_0xbba5b2=_0x26575c);var _0x1456d9=0x1*0x35e+0xced+0x61*-0x2b,_0x4bce50=function(){},_0x901fef={};return _0x901fef['s']=_0x4bce50,_0x901fef['n']=function(){var _0x13b85c={};return _0x13b85c['done']=!(-0x2175*-0x1+0x2*0xaa+-0x89*0x41),_0x1456d9>=_0xbba5b2['length']?_0x13b85c:{'done':!(-0x324+0x22b9+0xfca*-0x2),'value':_0xbba5b2[_0x1456d9++]};},_0x901fef['e']=function(_0x1e7b25){throw _0x1e7b25;},_0x901fef['f']=_0x4bce50,_0x901fef;}throw new TypeError('Invalid\x20at'+'tempt\x20to\x20i'+'terate\x20non'+'-iterable\x20'+'instance.\x0a'+'In\x20order\x20t'+'o\x20be\x20itera'+'ble,\x20non-a'+'rray\x20objec'+'ts\x20must\x20ha'+'ve\x20a\x20[Symb'+'ol.iterato'+'r]()\x20metho'+'d.');}var _0x505668,_0x35d469=!(0x23f8+-0x1a8e+-0x96a),_0x6b3863=!(-0x3e1*0x2+-0x227*0x6+0x14ad);return{'s':function(){_0x26575c=_0x26575c['call'](_0xbba5b2);},'n':function(){var _0x2a762d=_0x26575c['next']();return _0x35d469=_0x2a762d['done'],_0x2a762d;},'e':function(_0x48322e){_0x6b3863=!(-0x3*0x8eb+0x2222*-0x1+0x3ce3),_0x505668=_0x48322e;},'f':function(){try{_0x35d469||null==_0x26575c['return']||_0x26575c['return']();}finally{if(_0x6b3863)throw _0x505668;}}};}(_0x4f14d8['querySelec'+'torAll']('video'));try{for(_0x3febd0['s']();!(_0x21df59=_0x3febd0['n']())['done'];){var _0x5cde89=_0x21df59['value'];try{if(_0x5cde89['getAttribu'+'te']('poster'))continue;var _0x2261f8=_0x5cde89['getAttribu'+'te']('data-smart'+'ui-element'+'-id'),_0x4a7666=_0x4039f5['querySelec'+'tor'](('[data-smar'+'tui-elemen'+'t-id=\x22')['concat'](_0x2261f8,'\x22]')),_0xe928ce=document['createElem'+'ent']('canvas'),_0xd65d38=_0xe928ce['width']=_0x5cde89['videoWidth'],_0x405e75=_0xe928ce['height']=_0x5cde89['videoHeigh'+'t'],_0x4c2b82=void(-0xe03+-0xf4*0x2+0xfeb);_0xe928ce['getContext']('2d')['drawImage'](_0x5cde89,-0x1*-0x3f5+0x7fe+-0x1*0xbf3,-0x40*0x16+-0x1676+0x3*0x952,_0xd65d38,_0x405e75);try{_0x4c2b82=_0xe928ce['toDataURL']();}catch(_0x47a72a){_0x4d5e75['add'](('data-smart'+'ui-element'+'-id=\x22')['concat'](_0x2261f8,'\x22\x20:\x20')['concat'](_0x47a72a['toString']()));}if(!_0x4c2b82||'data:,'===_0x4c2b82)continue;var _0x2bbd5d=_0x4eb672(_0x2261f8,_0x4c2b82);_0xd873ba['add'](_0x2bbd5d),_0x4a7666['setAttribu'+'te']('data-smart'+'ui-seriali'+'zed-attrib'+'ute-poster',_0x2bbd5d['url']);}catch(_0x59a043){_0x4394dd(_0x59a043,'Error\x20seri'+'alizing\x20vi'+'deo\x20elemen'+'t:\x20',_0x5cde89);}}}catch(_0x218ebd){_0x3febd0['e'](_0x218ebd);}finally{_0x3febd0['f']();}};function _0x52f76b(_0x1a15ab,_0x237e09){(null==_0x237e09||_0x237e09>_0x1a15ab['length'])&&(_0x237e09=_0x1a15ab['length']);for(var _0x2a76e8=0x4*-0x65+0x1*0x26ef+-0x255b,_0x41e610=Array(_0x237e09);_0x2a76e8<_0x237e09;_0x2a76e8++)_0x41e610[_0x2a76e8]=_0x1a15ab[_0x2a76e8];return _0x41e610;}var _0x5696ce=function(_0x1c76fb){var _0x4ae274=_0x1c76fb['dom'],_0x5e6d64=_0x1c76fb['clone'];try{var _0x411803=_0x4ae274['defaultVie'+'w']||('undefined'!=typeof window?window:null);_0x411803&&(_0x411803['scrollX']||_0x411803['scrollY'])&&(_0x5e6d64['documentEl'+'ement']['setAttribu'+'te']('data-smart'+'ui-page-sc'+'roll-x',String(_0x411803['scrollX']||0x51*0x22+0x1*0x174b+-0x220d)),_0x5e6d64['documentEl'+'ement']['setAttribu'+'te']('data-smart'+'ui-page-sc'+'roll-y',String(_0x411803['scrollY']||-0x2143+-0x230f+0x4452)));}catch(_0x2cd2c9){_0x2cd2c9['handled']||_0x4394dd(_0x2cd2c9,'Error\x20capt'+'uring\x20page'+'\x20scroll:\x20');}try{var _0x238d37,_0x14e808=_0x4ae274['querySelec'+'torAll']('[data-smar'+'tui-elemen'+'t-id]'),_0x314bd6=_0x4ae274['documentEl'+'ement'],_0x59337a=_0x4ae274['body'],_0x536714=function(_0x605bf3,_0x2d872e){var _0x5d18d1='undefined'!=typeof Symbol&&_0x605bf3[Symbol['iterator']]||_0x605bf3['@@iterator'];if(!_0x5d18d1){if(Array['isArray'](_0x605bf3)||(_0x5d18d1=function(_0x35965a,_0x1b18c5){if(_0x35965a){if('string'==typeof _0x35965a)return _0x52f76b(_0x35965a,_0x1b18c5);var _0x1e4589={}['toString']['call'](_0x35965a)['slice'](-0x578+0x226d*0x1+-0x1*0x1ced,-(0x19a1*-0x1+-0x12e+0x1ad0));return'Object'===_0x1e4589&&_0x35965a['constructo'+'r']&&(_0x1e4589=_0x35965a['constructo'+'r']['name']),'Map'===_0x1e4589||'Set'===_0x1e4589?Array['from'](_0x35965a):'Arguments'===_0x1e4589||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/['test'](_0x1e4589)?_0x52f76b(_0x35965a,_0x1b18c5):void(-0x154e+-0x2*-0x353+0xea8);}}(_0x605bf3))||_0x2d872e&&_0x605bf3&&'number'==typeof _0x605bf3['length']){_0x5d18d1&&(_0x605bf3=_0x5d18d1);var _0x42bd81=-0x16f+0x2f0+0x37*-0x7,_0x478577=function(){},_0x2ad3ff={};return _0x2ad3ff['s']=_0x478577,_0x2ad3ff['n']=function(){var _0x515e81={};return _0x515e81['done']=!(-0x25*0xf1+0x1*-0x392+-0x57*-0x71),_0x42bd81>=_0x605bf3['length']?_0x515e81:{'done':!(-0x2444+0x2d*0x9c+0x8d9),'value':_0x605bf3[_0x42bd81++]};},_0x2ad3ff['e']=function(_0x55744b){throw _0x55744b;},_0x2ad3ff['f']=_0x478577,_0x2ad3ff;}throw new TypeError('Invalid\x20at'+'tempt\x20to\x20i'+'terate\x20non'+'-iterable\x20'+'instance.\x0a'+'In\x20order\x20t'+'o\x20be\x20itera'+'ble,\x20non-a'+'rray\x20objec'+'ts\x20must\x20ha'+'ve\x20a\x20[Symb'+'ol.iterato'+'r]()\x20metho'+'d.');}var _0x183c07,_0x1f6263=!(0x11*-0x124+-0xd*-0x250+-0xaac),_0x1b7fda=!(0x1726+-0x47*-0x49+0x4*-0xad9);return{'s':function(){_0x5d18d1=_0x5d18d1['call'](_0x605bf3);},'n':function(){var _0x33520e=_0x5d18d1['next']();return _0x1f6263=_0x33520e['done'],_0x33520e;},'e':function(_0x49e870){_0x1b7fda=!(0x23a+-0x8e3+0x1f*0x37),_0x183c07=_0x49e870;},'f':function(){try{_0x1f6263||null==_0x5d18d1['return']||_0x5d18d1['return']();}finally{if(_0x1b7fda)throw _0x183c07;}}};}(_0x14e808);try{for(_0x536714['s']();!(_0x238d37=_0x536714['n']())['done'];){var _0x439bc0=_0x238d37['value'];try{if(_0x439bc0===_0x314bd6||_0x439bc0===_0x59337a)continue;if(!_0x439bc0['scrollTop']&&!_0x439bc0['scrollLeft'])continue;var _0x1c9546=_0x439bc0['getAttribu'+'te']('data-smart'+'ui-element'+'-id'),_0x5d2097=_0x5e6d64['querySelec'+'tor'](('[data-smar'+'tui-elemen'+'t-id=\x22')['concat'](_0x1c9546,'\x22]'));if(!_0x5d2097)continue;_0x439bc0['scrollLeft']&&_0x5d2097['setAttribu'+'te']('data-smart'+'ui-scroll-'+'left',String(_0x439bc0['scrollLeft'])),_0x439bc0['scrollTop']&&_0x5d2097['setAttribu'+'te']('data-smart'+'ui-scroll-'+'top',String(_0x439bc0['scrollTop']));}catch(_0x4ac2b4){_0x4ac2b4['handled']||_0x4394dd(_0x4ac2b4,'Error\x20seri'+'alizing\x20el'+'ement\x20scro'+'ll:\x20',_0x439bc0);}}}catch(_0x21efae){_0x536714['e'](_0x21efae);}finally{_0x536714['f']();}}catch(_0xb04fb6){_0xb04fb6['handled']||_0x4394dd(_0xb04fb6,'Error\x20walk'+'ing\x20marked'+'\x20elements\x20'+'for\x20scroll'+':\x20');}};function _0x2fa634(_0x3c653f,_0x72429b){var _0x2ee866='undefined'!=typeof Symbol&&_0x3c653f[Symbol['iterator']]||_0x3c653f['@@iterator'];if(!_0x2ee866){if(Array['isArray'](_0x3c653f)||(_0x2ee866=function(_0x176df3,_0x528290){if(_0x176df3){if('string'==typeof _0x176df3)return _0x1dd6ef(_0x176df3,_0x528290);var _0x441861={}['toString']['call'](_0x176df3)['slice'](0x1f9c+0x1a*-0x1b+-0xe6b*0x2,-(-0x15fd+0x24f1*0x1+-0xef3));return'Object'===_0x441861&&_0x176df3['constructo'+'r']&&(_0x441861=_0x176df3['constructo'+'r']['name']),'Map'===_0x441861||'Set'===_0x441861?Array['from'](_0x176df3):'Arguments'===_0x441861||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/['test'](_0x441861)?_0x1dd6ef(_0x176df3,_0x528290):void(-0x7c*-0xf+-0x1e9d+0x1759);}}(_0x3c653f))||_0x72429b&&_0x3c653f&&'number'==typeof _0x3c653f['length']){_0x2ee866&&(_0x3c653f=_0x2ee866);var _0xfffb9f=-0x1*0x1b65+-0x233e+-0x5*-0xc87,_0x5e8f66=function(){},_0x3fcd38={};return _0x3fcd38['s']=_0x5e8f66,_0x3fcd38['n']=function(){var _0x5147b7={};return _0x5147b7['done']=!(0x1611+0x9c9*-0x3+0x2*0x3a5),_0xfffb9f>=_0x3c653f['length']?_0x5147b7:{'done':!(0x222f+-0x138d+-0x7*0x217),'value':_0x3c653f[_0xfffb9f++]};},_0x3fcd38['e']=function(_0x35d3e7){throw _0x35d3e7;},_0x3fcd38['f']=_0x5e8f66,_0x3fcd38;}throw new TypeError('Invalid\x20at'+'tempt\x20to\x20i'+'terate\x20non'+'-iterable\x20'+'instance.\x0a'+'In\x20order\x20t'+'o\x20be\x20itera'+'ble,\x20non-a'+'rray\x20objec'+'ts\x20must\x20ha'+'ve\x20a\x20[Symb'+'ol.iterato'+'r]()\x20metho'+'d.');}var _0x2fa0d1,_0x263344=!(-0x1*-0x5e7+-0x1*0x57f+0x34*-0x2),_0x78a11d=!(-0xc*0x65+-0x214*0x11+0x2811);return{'s':function(){_0x2ee866=_0x2ee866['call'](_0x3c653f);},'n':function(){var _0x338f58=_0x2ee866['next']();return _0x263344=_0x338f58['done'],_0x338f58;},'e':function(_0x19f112){_0x78a11d=!(-0x268a+-0x243f+0x4ac9),_0x2fa0d1=_0x19f112;},'f':function(){try{_0x263344||null==_0x2ee866['return']||_0x2ee866['return']();}finally{if(_0x78a11d)throw _0x2fa0d1;}}};}function _0x1dd6ef(_0x564720,_0x39da05){(null==_0x39da05||_0x39da05>_0x564720['length'])&&(_0x39da05=_0x564720['length']);for(var _0x12d698=0x2f*0x8d+-0x893+-0x1150,_0x2271d1=Array(_0x39da05);_0x12d698<_0x39da05;_0x12d698++)_0x2271d1[_0x12d698]=_0x564720[_0x12d698];return _0x2271d1;}var _0x3726bc='http://www'+'.w3.org/19'+'99/xhtml',_0x54f0f1=['button','a'],_0x3e5979=null,_0x2b19d4=['NOSCRIPT'];function _0x1be704(_0x2b7315){var _0x150d56=_0x2b7315['dom'],_0x445e5e=_0x2b7315['disableSha'+'dowDOM'],_0x4d1e23=_0x2b7315['resources'],_0x450bfb=_0x150d56['createDocu'+'mentFragme'+'nt']();return function _0x41eefe(_0x1c49aa,_0x2fd81e){try{var _0x186854=function(_0x239cd8,_0xa6d9fb){for(;_0x239cd8;)_0x2b19d4['includes'](_0x239cd8['nodeName'])||_0x41eefe(_0x239cd8,_0xa6d9fb),_0x239cd8=_0x239cd8['nextSiblin'+'g'];};!function(_0x5d3266,_0x498f54){var _0x27a103;['input','textarea','select','iframe','canvas','video','style']['includes'](null===(_0x27a103=_0x5d3266['tagName'])||void(0x113a+-0x481*0x8+0x53*0x3a)===_0x27a103?void(0x12b2+0x10*0x166+-0x2912):_0x27a103['toLowerCas'+'e']())&&(_0x5d3266['getAttribu'+'te']('data-smart'+'ui-element'+'-id')||_0x5d3266['setAttribu'+'te']('data-smart'+'ui-element'+'-id',_0x1371b5())),0x1ab*-0x16+0x2*-0x45a+-0x3b*-0xc5===_0x5d3266['nodeType']&&(_0x5d3266['scrollTop']||_0x5d3266['scrollLeft'])&&(_0x5d3266['getAttribu'+'te']('data-smart'+'ui-element'+'-id')||_0x5d3266['setAttribu'+'te']('data-smart'+'ui-element'+'-id',_0x1371b5())),!_0x498f54&&_0x5d3266['shadowRoot']&&(_0x5d3266['setAttribu'+'te']('data-smart'+'ui-shadow-'+'host',''),_0x5d3266['getAttribu'+'te']('data-smart'+'ui-element'+'-id')||_0x5d3266['setAttribu'+'te']('data-smart'+'ui-element'+'-id',_0x1371b5()));}(_0x1c49aa,_0x445e5e);var _0x16c34c=function(_0xab542b,_0x24c517){var _0x1b7e11,_0x5be19a=null===(_0x1b7e11=_0xab542b['tagName'])||void(0x247f*0x1+0x871*-0x1+0x1c0e*-0x1)===_0x1b7e11?void(0x1*-0x73d+0x3c2+-0x9*-0x63):_0x1b7e11['toLowerCas'+'e']();if(!_0x54f0f1['includes'](_0x5be19a)||_0xab542b['namespaceU'+'RI']!==_0x3726bc)return _0x24c517;var _0x3d581e,_0x3e7677=!(-0x4df*-0x8+-0x19a*-0x17+-0x5*0xf29),_0x1a4989=_0x2fa634(_0xab542b['querySelec'+'torAll'](_0x5be19a));try{for(_0x1a4989['s']();!(_0x3d581e=_0x1a4989['n']())['done'];)if(_0x3d581e['value']['namespaceU'+'RI']===_0x3726bc){_0x3e7677=!(-0x1073*-0x2+0x177+-0x225d);break;}}catch(_0x303d2d){_0x1a4989['e'](_0x303d2d);}finally{_0x1a4989['f']();}if(!_0x3e7677)return _0x24c517;var _0x7e76ff,_0x1e1af6=_0xab542b['ownerDocum'+'ent']['createElem'+'ent']('div'),_0x4c0065=_0x2fa634(_0x24c517['attributes']);try{for(_0x4c0065['s']();!(_0x7e76ff=_0x4c0065['n']())['done'];){var _0xc50869=_0x7e76ff['value'];_0x1e1af6['setAttribu'+'te'](_0xc50869['name'],_0xc50869['value']);}}catch(_0x51ac25){_0x4c0065['e'](_0x51ac25);}finally{_0x4c0065['f']();}return _0x1e1af6['setAttribu'+'te']('data-smart'+'ui-origina'+'l-tag',_0x5be19a),_0x1e1af6;}(_0x1c49aa,_0x1c49aa['cloneNode']()),_0x3b7836={};_0x3b7836['mode']='open',_0x3b7836['serializab'+'le']=!(-0x22e9+0x1189+0x1160),(function(_0x2579d0){var _0x3a3e5a;['img','iframe']['includes'](null===(_0x3a3e5a=_0x2579d0['tagName'])||void(0x147+0x5e3*0x1+-0x1*0x72a)===_0x3a3e5a?void(0x1b7c*-0x1+0x1*-0x2023+-0x1*-0x3b9f):_0x3a3e5a['toLowerCas'+'e']())&&_0x2579d0['removeAttr'+'ibute']('loading');}(_0x16c34c),function(_0x91f989,_0x3370c5){var _0x468a55=_0x91f989['src'],_0x40a066=!(0xdd5+0x43*-0x5e+-0x1*-0xac6);if(null==_0x468a55&&_0x91f989['href']&&(_0x40a066=!(-0x1f19+0x8ba*-0x4+0x4201*0x1),_0x468a55=_0x91f989['href']['baseVal']),null!=_0x468a55){var _0x202321=function(_0x38b89d){var _0x288522=_0x38b89d['indexOf'](';base64,');return-(-0x2ef*0xb+-0xea3+0x2ee9)===_0x288522?null:(_0x3e5979=_0x38b89d['substring'](-0x759+0x2*0xb3f+0x2c*-0x58,_0x288522),_0x288522+=0x1*-0x1de4+-0xb47+0x1*0x2933,_0x38b89d['substring'](_0x288522));}(_0x468a55['toString']());if(null!=_0x202321){var _0x4da7c7=_0x44cc56(_0x1371b5(),_0x3e5979,_0x202321);_0x3370c5['add'](_0x4da7c7),!(-0x3ec+0x5*-0x7cf+0x2af7)===_0x40a066?_0x91f989['href']['baseVal']=_0x4da7c7['url']:_0x91f989['src']=_0x4da7c7['url'];}}}(_0x16c34c,_0x4d1e23),_0x2fd81e['appendChil'+'d'](_0x16c34c),_0x16c34c['children']&&Array['from'](_0x16c34c['children'])['forEach'](function(_0x42d15f){return _0x16c34c['removeChil'+'d'](_0x42d15f);}),_0x1c49aa['shadowRoot']&&!_0x445e5e&&(_0x16c34c['shadowRoot']?_0x16c34c['shadowRoot']['innerHTML']='':_0x16c34c['attachShad'+'ow'](_0x3b7836),_0x186854(_0x1c49aa['shadowRoot']['firstChild'],_0x16c34c['shadowRoot'])),_0x186854(_0x1c49aa['firstChild'],_0x16c34c));}catch(_0x46ab72){if(_0x46ab72['handled'])throw _0x46ab72;_0x4394dd(_0x46ab72,'Error\x20clon'+'ing\x20node:\x20',_0x1c49aa);}}(_0x150d56['documentEl'+'ement'],_0x450bfb),_0x450bfb['documentEl'+'ement']=_0x450bfb['firstChild'],_0x450bfb['head']=_0x450bfb['querySelec'+'tor']('head'),_0x450bfb['body']=_0x450bfb['querySelec'+'tor']('body'),_0x450bfb;}function _0x443c94(_0x2096d1){return _0x443c94='function'==typeof Symbol&&'symbol'==typeof Symbol['iterator']?function(_0x1341a5){return typeof _0x1341a5;}:function(_0x57d2f2){return _0x57d2f2&&'function'==typeof Symbol&&_0x57d2f2['constructo'+'r']===Symbol&&_0x57d2f2!==Symbol['prototype']?'symbol':typeof _0x57d2f2;},_0x443c94(_0x2096d1);}function _0x2a4f66(_0x5b0ceb,_0x31c037){var _0x42b6fb=Object['keys'](_0x5b0ceb);if(Object['getOwnProp'+'ertySymbol'+'s']){var _0x4a9c09=Object['getOwnProp'+'ertySymbol'+'s'](_0x5b0ceb);_0x31c037&&(_0x4a9c09=_0x4a9c09['filter'](function(_0x232f3f){return Object['getOwnProp'+'ertyDescri'+'ptor'](_0x5b0ceb,_0x232f3f)['enumerable'];})),_0x42b6fb['push']['apply'](_0x42b6fb,_0x4a9c09);}return _0x42b6fb;}function _0x5b3a74(_0x7b773b){for(var _0x589512=-0x1*0x2673+-0x730+0x2da4;_0x589512=_0x186187['length']?_0x13710f:{'done':!(-0xe04+-0x1d5*0xb+-0x6*-0x5b2),'value':_0x186187[_0x12a5b1++]};},_0x5727f7['e']=function(_0x515533){throw _0x515533;},_0x5727f7['f']=_0x46963f,_0x5727f7;}throw new TypeError('Invalid\x20at'+'tempt\x20to\x20i'+'terate\x20non'+'-iterable\x20'+'instance.\x0a'+'In\x20order\x20t'+'o\x20be\x20itera'+'ble,\x20non-a'+'rray\x20objec'+'ts\x20must\x20ha'+'ve\x20a\x20[Symb'+'ol.iterato'+'r]()\x20metho'+'d.');}var _0x4a6b07,_0x389ad1=!(0x129f+0x2*-0xb57+0x40f),_0x1ab219=!(0xb*-0x17f+-0xff5+0x206b);return{'s':function(){_0x3e1bea=_0x3e1bea['call'](_0x186187);},'n':function(){var _0x16ce20=_0x3e1bea['next']();return _0x389ad1=_0x16ce20['done'],_0x16ce20;},'e':function(_0x352466){_0x1ab219=!(0x10af+-0x2*0x3de+-0x8f3*0x1),_0x4a6b07=_0x352466;},'f':function(){try{_0x389ad1||null==_0x3e1bea['return']||_0x3e1bea['return']();}finally{if(_0x1ab219)throw _0x4a6b07;}}};}function _0x2e741a(_0xcf4778,_0x54d30a){if(_0xcf4778){if('string'==typeof _0xcf4778)return _0x3246ee(_0xcf4778,_0x54d30a);var _0x1ac2fc={}['toString']['call'](_0xcf4778)['slice'](0xfe6+-0x1a7+-0xe37,-(-0x26a6+-0x21*0x33+-0x2d3a*-0x1));return'Object'===_0x1ac2fc&&_0xcf4778['constructo'+'r']&&(_0x1ac2fc=_0xcf4778['constructo'+'r']['name']),'Map'===_0x1ac2fc||'Set'===_0x1ac2fc?Array['from'](_0xcf4778):'Arguments'===_0x1ac2fc||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/['test'](_0x1ac2fc)?_0x3246ee(_0xcf4778,_0x54d30a):void(0x1458+-0x13*-0xbe+0x2272*-0x1);}}function _0x3246ee(_0x157da2,_0x5d703f){(null==_0x5d703f||_0x5d703f>_0x157da2['length'])&&(_0x5d703f=_0x157da2['length']);for(var _0x432854=0x52*0x1a+0xb79+-0x13cd,_0x176956=Array(_0x5d703f);_0x432854<_0x5d703f;_0x432854++)_0x176956[_0x432854]=_0x157da2[_0x432854];return _0x176956;}function _0x5a31cf(_0x5875e4){var _0x45e450,_0x4ac697,_0x1723ea,_0x385db1,_0x47b5e5,_0x2fadc6,_0x8df75b,_0x20aef3,_0x46c051,_0x5b7866,_0x19ae33=function(_0x301c46,_0x64834b){var _0x36cc1c=_0x64834b['shadowRoot'+'Elements'],_0x315504='',_0x404f26={};_0x404f26['serializab'+'leShadowRo'+'ots']=!(-0x6*-0x15d+0x306+0x59a*-0x2),_0x404f26['shadowRoot'+'s']=_0x36cc1c;if(_0x301c46['getHTML'])_0x315504=_0x301c46['getHTML'](_0x404f26);else{if(!_0x301c46['getInnerHT'+'ML'])return _0x301c46['outerHTML'];var _0x54cb7a={};_0x54cb7a['includeSha'+'dowRoots']=!(-0x2b*-0x1c+0x1*-0x98e+0x4da),_0x315504=_0x301c46['getInnerHT'+'ML'](_0x54cb7a);}return _0x301c46['textConten'+'t']='',_0x301c46['outerHTML']['replace']('',function(){return''['concat'](_0x315504,'');});}(_0x5875e4['clone']['documentEl'+'ement'],{'shadowRootElements':_0x5875e4['shadowRoot'+'Elements']});return _0x19ae33=_0x19ae33['replace'](/ data-smartui-serialized-attribute-(\w+?)=/gi,'\x20$1='),_0x47b5e5=void(0x7ac+0x1f13+-0xd*0x2fb)===(_0x385db1=(_0x1723ea=null!==(_0x4ac697=null==(_0x45e450=_0x5875e4['dom'])?void(0x13c1+-0x218+-0xb*0x19b):_0x45e450['doctype'])&&void(-0x1574+0x722+0xe52)!==_0x4ac697?_0x4ac697:{})['name'])?'html':_0x385db1,_0x8df75b=void(-0x1*0x1e0e+0x116a+0x4*0x329)===(_0x2fadc6=_0x1723ea['publicId'])?'':_0x2fadc6,_0x46c051=void(-0x788+-0x80c+0xf94)===(_0x20aef3=_0x1723ea['systemId'])?'':_0x20aef3,_0x5b7866='',_0x8df75b&&_0x46c051?_0x5b7866='\x20PUBLIC\x20\x22'['concat'](_0x8df75b,'\x22\x20\x22')['concat'](_0x46c051,'\x22'):_0x8df75b?_0x5b7866='\x20PUBLIC\x20\x22'['concat'](_0x8df75b,'\x22'):_0x46c051&&(_0x5b7866='\x20SYSTEM\x20\x22'['concat'](_0x46c051,'\x22')),'')+_0x19ae33;}function _0x4d83ce(_0x43c29f){(function(_0x50596e){var _0x18214a,_0x2d3206=_0x50596e['dom'],_0x2f52a1=_0x50596e['clone'],_0x2dda1f=_0x5ab10a(_0x2d3206['querySelec'+'torAll']('input,\x20tex'+'tarea,\x20sel'+'ect'));try{for(_0x2dda1f['s']();!(_0x18214a=_0x2dda1f['n']())['done'];){var _0x129715=_0x18214a['value'];try{var _0x2c19c9=_0x129715['getAttribu'+'te']('data-smart'+'ui-element'+'-id'),_0x1a8a57=_0x2f52a1['querySelec'+'tor'](('[data-smar'+'tui-elemen'+'t-id=\x22')['concat'](_0x2c19c9,'\x22]'));switch(_0x129715['type']){case'checkbox':case'radio':_0x1a8a57['removeAttr'+'ibute']('checked'),_0x129715['checked']&&_0x1a8a57['setAttribu'+'te']('checked','');break;case'select-one':-(-0x747+0x1*0x2523+-0x1ddb)!==_0x129715['selectedIn'+'dex']&&_0x1a8a57['options'][_0x129715['selectedIn'+'dex']]['setAttribu'+'te']('selected','true');break;case'select-mul'+'tiple':var _0x43d5e4,_0x2d3196=_0x5ab10a(_0x129715['selectedOp'+'tions']);try{for(_0x2d3196['s']();!(_0x43d5e4=_0x2d3196['n']())['done'];){var _0x2b118a=_0x43d5e4['value'];_0x1a8a57['options'][_0x2b118a['index']]['setAttribu'+'te']('selected','true');}}catch(_0x161918){_0x2d3196['e'](_0x161918);}finally{_0x2d3196['f']();}break;case'textarea':_0x1a8a57['innerHTML']=_0x129715['value'];break;default:_0x1a8a57['setAttribu'+'te']('value',_0x129715['value']);}}catch(_0x43551b){_0x4394dd(_0x43551b,'Error\x20seri'+'alizing\x20in'+'put\x20elemen'+'t:\x20',_0x129715);}}}catch(_0x4991df){_0x2dda1f['e'](_0x4991df);}finally{_0x2dda1f['f']();}}(_0x43c29f),function(_0x2b7c40){var _0x5aa7cf,_0x1ed90c=_0x2b7c40['dom'],_0x1b9558=_0x2b7c40['clone'],_0x238f2e=_0x2b7c40['warnings'],_0x1fe79e=_0x2b7c40['resources'],_0x49f4ef=_0x2b7c40['enableJava'+'Script'],_0x238e5c=_0x2b7c40['disableSha'+'dowDOM'],_0x18e881=_0x2e753c(_0x1ed90c['querySelec'+'torAll']('iframe'));try{for(_0x18e881['s']();!(_0x5aa7cf=_0x18e881['n']())['done'];){var _0x307ddc,_0x51a737=_0x5aa7cf['value'],_0x5635b7=_0x51a737['getAttribu'+'te']('data-smart'+'ui-element'+'-id'),_0x2792d7=_0x1b9558['querySelec'+'tor'](('[data-smar'+'tui-elemen'+'t-id=\x22')['concat'](_0x5635b7,'\x22]')),_0x55b555=!(_0x51a737['srcdoc']||_0x51a737['src']&&'javascript'!==_0x51a737['src']['split'](':')[-0x287*-0x4+0x1*0x10e4+0x60*-0x48]);if(null!==(_0x307ddc=_0x1b9558['head'])&&void(-0x836+0x1*-0x16eb+-0x1f21*-0x1)!==_0x307ddc&&_0x307ddc['contains'](_0x2792d7))_0x2792d7['remove']();else{if(_0x51a737['contentDoc'+'ument']&&_0x51a737['contentDoc'+'ument']['documentEl'+'ement']){if(_0x49f4ef&&_0x55b555)continue;if(!_0x55b555&&!_0x51a737['contentWin'+'dow']['performanc'+'e']['timing']['loadEventE'+'nd'])continue;var _0x5b4a0d={};_0x5b4a0d['domTransfo'+'rmation']=_0x140163,_0x5b4a0d['dom']=_0x51a737['contentDoc'+'ument'],_0x5b4a0d['enableJava'+'Script']=_0x49f4ef,_0x5b4a0d['disableSha'+'dowDOM']=_0x238e5c;var _0x4ae40c,_0x3ae917=_0x3044a4(_0x5b4a0d),_0x1b4a97=_0x2e753c(_0x3ae917['warnings']);try{for(_0x1b4a97['s']();!(_0x4ae40c=_0x1b4a97['n']())['done'];){var _0x2d9037=_0x4ae40c['value'];_0x238f2e['add'](_0x2d9037);}}catch(_0x541222){_0x1b4a97['e'](_0x541222);}finally{_0x1b4a97['f']();}var _0x5b1eb8,_0xa589a=_0x2e753c(_0x3ae917['resources']);try{for(_0xa589a['s']();!(_0x5b1eb8=_0xa589a['n']())['done'];){var _0xeae7aa=_0x5b1eb8['value'];_0x1fe79e['add'](_0xeae7aa);}}catch(_0x5e1575){_0xa589a['e'](_0x5e1575);}finally{_0xa589a['f']();}_0x2792d7['setAttribu'+'te']('srcdoc',_0x3ae917['html']),_0x2792d7['removeAttr'+'ibute']('src');}else!_0x49f4ef&&_0x55b555&&_0x2792d7['remove']();}_0x586a0e(_0x2792d7,_0x1b9558,_0x1fe79e,_0x51a737);}}catch(_0x3fca58){_0x18e881['e'](_0x3fca58);}finally{_0x18e881['f']();}}(_0x43c29f),_0x320480(_0x43c29f),_0x5696ce(_0x43c29f),_0x43c29f['enableJava'+'Script']||(function(_0x89ed20){var _0x39ef19=_0x89ed20['dom'],_0x5a6ea3=_0x89ed20['clone'],_0x2c0958=_0x89ed20['resources'],_0xc6b966=_0x89ed20['cache'],_0x4c2859=_0x89ed20['warnings'],_0x188215=null;try{_0x188215=_0x39ef19['styleSheet'+'s'];}catch(_0x48c55){_0x4c2859['add']('Skipping\x20`'+'styleSheet'+'s`\x20as\x20it\x20i'+'s\x20not\x20supp'+'orted.');}if(_0x188215){var _0x6c29cf,_0x27c6dd=_0x21190e(_0x188215);try{for(_0x27c6dd['s']();!(_0x6c29cf=_0x27c6dd['n']())['done'];){var _0x1c01dd,_0x4ebd2d=_0x6c29cf['value'];if(_0xbf3b38(_0x4ebd2d)){var _0x1d3614=void(0x67c+0x240f+0x2a8b*-0x1),_0x2e62d4=void(-0x42a+-0x14dc+0x1906);try{if(_0x1d3614=_0x4ebd2d['ownerNode']['getAttribu'+'te']('data-smart'+'ui-element'+'-id'),_0x2beafc(_0x4ebd2d,_0x4fd2de(_0x2e62d4=_0x5a6ea3['querySelec'+'tor'](('[data-smar'+'tui-elemen'+'t-id=\x22')['concat'](_0x1d3614,'\x22]')))))continue;var _0x371719=document['createElem'+'ent']('style');_0x371719['type']='text/css',_0x371719['setAttribu'+'te']('data-smart'+'ui-element'+'-id',_0x1d3614),_0x371719['setAttribu'+'te']('data-smart'+'ui-cssom-s'+'erialized','true'),_0x371719['innerHTML']=Array['from'](_0x4ebd2d['cssRules'])['map'](function(_0x32f3ba){return _0x32f3ba['cssText'];})['join']('\x0a'),_0x2e62d4['parentNode']['insertBefo'+'re'](_0x371719,_0x2e62d4['nextSiblin'+'g']),_0x2e62d4['remove']();}catch(_0x5940fd){var _0x2fda5e={};_0x2fda5e['styleId']=_0x1d3614,_0x4394dd(_0x5940fd,'Error\x20seri'+'alizing\x20st'+'ylesheet:\x20',_0x2e62d4,_0x2fda5e);}}else{if(null!==(_0x1c01dd=_0x4ebd2d['href'])&&void(-0x6d2+-0x3*-0x35+0x633)!==_0x1c01dd&&_0x1c01dd['startsWith']('blob:'))try{var _0xf2f8f4=document['createElem'+'ent']('link');_0xf2f8f4['setAttribu'+'te']('rel','stylesheet');var _0x40d54b=_0x34ebab(_0x4ebd2d);_0x2c0958['add'](_0x40d54b),_0xf2f8f4['setAttribu'+'te']('data-smart'+'ui-blob-st'+'ylesheets-'+'serialized','true'),_0xf2f8f4['setAttribu'+'te']('data-smart'+'ui-seriali'+'zed-attrib'+'ute-href',_0x40d54b['url']),'HTMLDocume'+'nt'===_0x5a6ea3['constructo'+'r']['name']||'DocumentFr'+'agment'===_0x5a6ea3['constructo'+'r']['name']?_0x5a6ea3['body']['prepend'](_0xf2f8f4):'ShadowRoot'===_0x5a6ea3['constructo'+'r']['name']&&_0x5a6ea3['prepend'](_0xf2f8f4);}catch(_0xbd0fa8){var _0x277892={};_0x277892['stylesheet'+'Href']=_0x4ebd2d['href'],_0x4394dd(_0xbd0fa8,'Error\x20seri'+'alizing\x20st'+'ylesheet\x20f'+'rom\x20blob:\x20',null,_0x277892);}}}}catch(_0x585b42){_0x27c6dd['e'](_0x585b42);}finally{_0x27c6dd['f']();}}if(_0x39ef19['adoptedSty'+'leSheets']){var _0x42a785,_0x27cf08=_0x21190e(_0x39ef19['adoptedSty'+'leSheets']);try{for(_0x27cf08['s']();!(_0x42a785=_0x27cf08['n']())['done'];){var _0xec9d91=_0x42a785['value'],_0x50bb5a=document['createElem'+'ent']('link');if(_0x50bb5a['setAttribu'+'te']('rel','stylesheet'),!_0xc6b966['has'](_0xec9d91)){var _0x22b67=_0x34ebab(_0xec9d91);_0x2c0958['add'](_0x22b67),_0xc6b966['set'](_0xec9d91,_0x22b67['url']);}_0x50bb5a['setAttribu'+'te']('data-smart'+'ui-adopted'+'-styleshee'+'ts-seriali'+'zed','true'),_0x50bb5a['setAttribu'+'te']('data-smart'+'ui-seriali'+'zed-attrib'+'ute-href',_0xc6b966['get'](_0xec9d91)),'HTMLDocume'+'nt'===_0x5a6ea3['constructo'+'r']['name']||'DocumentFr'+'agment'===_0x5a6ea3['constructo'+'r']['name']?_0x5a6ea3['body']['prepend'](_0x50bb5a):'ShadowRoot'===_0x5a6ea3['constructo'+'r']['name']&&_0x5a6ea3['prepend'](_0x50bb5a);}}catch(_0x4ba520){_0x27cf08['e'](_0x4ba520);}finally{_0x27cf08['f']();}}else _0x4c2859['add']('Skipping\x20`'+'adoptedSty'+'leSheets`\x20'+'as\x20it\x20is\x20n'+'ot\x20support'+'ed.');}(_0x43c29f),function(_0x5ad6fc){var _0x3f3849,_0x3230c4=_0x5ad6fc['dom'],_0x2bc349=_0x5ad6fc['clone'],_0x4c5379=_0x5ad6fc['resources'],_0x4da0a4=_0xe39489(_0x3230c4['querySelec'+'torAll']('canvas'));try{for(_0x4da0a4['s']();!(_0x3f3849=_0x4da0a4['n']())['done'];){var _0x402731=_0x3f3849['value'];try{var _0x574da2=_0x402731['toDataURL']();if(!_0x574da2||'data:,'===_0x574da2)continue;var _0x1e63d5=_0x402731['getAttribu'+'te']('data-smart'+'ui-element'+'-id'),_0x1b32c7=_0x4eb672(_0x1e63d5,_0x574da2);_0x4c5379['add'](_0x1b32c7);var _0x272984=document['createElem'+'ent']('img');_0x272984['setAttribu'+'te']('data-smart'+'ui-seriali'+'zed-attrib'+'ute-src',_0x1b32c7['url']);var _0x2cb705,_0x12254d=_0xe39489(_0x402731['attributes']);try{for(_0x12254d['s']();!(_0x2cb705=_0x12254d['n']())['done'];){var _0x44ef14=_0x2cb705['value'],_0x343b65=_0x44ef14['name'],_0x4e3b94=_0x44ef14['value'];_0x272984['setAttribu'+'te'](_0x343b65,_0x4e3b94);}}catch(_0x3dbb8f){_0x12254d['e'](_0x3dbb8f);}finally{_0x12254d['f']();}_0x272984['setAttribu'+'te']('data-smart'+'ui-canvas-'+'serialized',''),_0x272984['style']['maxWidth']=_0x272984['style']['maxWidth']||'100%';var _0x3c8ca2=_0x2bc349['querySelec'+'tor'](('[data-smar'+'tui-elemen'+'t-id=')['concat'](_0x1e63d5,']'));_0x3c8ca2['parentElem'+'ent']?_0x3c8ca2['parentElem'+'ent']['insertBefo'+'re'](_0x272984,_0x3c8ca2):_0x2bc349['insertBefo'+'re'](_0x272984,_0x3c8ca2),_0x3c8ca2['remove']();}catch(_0x1ab6ca){_0x4394dd(_0x1ab6ca,'Error\x20seri'+'alizing\x20ca'+'nvas\x20eleme'+'nt:\x20',_0x402731);}}}catch(_0x147e13){_0x4da0a4['e'](_0x147e13);}finally{_0x4da0a4['f']();}}(_0x43c29f)));var _0x2ae51a,_0x4fcb70=_0x4b852d(_0x43c29f['dom']['querySelec'+'torAll']('[data-smar'+'tui-shadow'+'-host]'));try{for(_0x4fcb70['s']();!(_0x2ae51a=_0x4fcb70['n']())['done'];){var _0x5730cc=_0x2ae51a['value'],_0x2d665a=_0x5730cc['getAttribu'+'te']('data-smart'+'ui-element'+'-id'),_0x253a0c=_0x43c29f['clone']['querySelec'+'tor'](('[data-smar'+'tui-elemen'+'t-id=\x22')['concat'](_0x2d665a,'\x22]'));_0x5730cc['shadowRoot']&&_0x253a0c['shadowRoot']?(_0x43c29f['shadowRoot'+'Elements']['push'](_0x253a0c['shadowRoot']),_0x4d83ce(_0x5b3a74(_0x5b3a74({},_0x43c29f),{},{'dom':_0x5730cc['shadowRoot'],'clone':_0x253a0c['shadowRoot']}))):_0x43c29f['warnings']['add']('data-smart'+'ui-shadow-'+'host\x20does\x20'+'not\x20have\x20s'+'hadowRoot');}}catch(_0x396b8a){_0x4fcb70['e'](_0x396b8a);}finally{_0x4fcb70['f']();}}var _0x3044a4=function(_0x501a11){var _0x39e9b2=_0x501a11||{},_0x2a2639=_0x39e9b2['dom'],_0x5de6d6=void(-0x4ec+-0x7f6*0x2+0x4*0x536)===_0x2a2639?document:_0x2a2639,_0x180fcc=_0x39e9b2['enableJava'+'Script'],_0x459ef1=void(0x1dae+-0xd2d+0x19*-0xa9)===_0x180fcc?null==_0x501a11?void(0x4*-0x28b+-0x227c+0x2ca8):_0x501a11['enable_jav'+'ascript']:_0x180fcc,_0x394a27=_0x39e9b2['domTransfo'+'rmation'],_0x5196ea=void(-0x7*-0x23e+-0x206*-0x13+-0x3624)===_0x394a27?null==_0x501a11?void(0xdfb+0x15ec+-0x23e7*0x1):_0x501a11['dom_transf'+'ormation']:_0x394a27,_0x4316bf=_0x39e9b2['stringifyR'+'esponse'],_0x48a8ed=void(-0x2175+-0x7*0x14e+-0x1*-0x2a97)===_0x4316bf?null==_0x501a11?void(0xb*0x97+-0x3*-0x1+-0x680):_0x501a11['stringify_'+'response']:_0x4316bf,_0x414e8b=_0x39e9b2['disableSha'+'dowDOM'],_0x82f2b6=void(0x8ca+-0x583*-0x1+-0xe4d)===_0x414e8b?null==_0x501a11?void(-0x618*-0x4+0xbcc+0x5*-0x73c):_0x501a11['disable_sh'+'adow_dom']:_0x414e8b,_0x3dea9a=_0x39e9b2['reshuffleI'+'nvalidTags'],_0x376b2a=void(0x6*0x662+-0x6b*0x1d+-0x1a2d)===_0x3dea9a?null==_0x501a11?void(0x1266+-0xf3c+-0x32a):_0x501a11['reshuffle_'+'invalid_ta'+'gs']:_0x3dea9a,_0x2c4fb1='undefined'!=typeof $A,_0x1f9a09=null!==_0x5de6d6['querySelec'+'tor']('[data-aura'+'-rendered-'+'by]');if(_0x2c4fb1||_0x1f9a09)return function(_0x31940b){var _0x268351,_0x4bbc4e=document['cloneNode'](!(-0x1*-0x385+-0x16ed+-0x48*-0x45));(_0x268351=document['styleSheet'+'s'],function(_0x216de7){if(Array['isArray'](_0x216de7))return _0x3246ee(_0x216de7);}(_0x268351)||function(_0x49f5d1){if('undefined'!=typeof Symbol&&null!=_0x49f5d1[Symbol['iterator']]||null!=_0x49f5d1['@@iterator'])return Array['from'](_0x49f5d1);}(_0x268351)||_0x2e741a(_0x268351)||(function(){throw new TypeError('Invalid\x20at'+'tempt\x20to\x20s'+'pread\x20non-'+'iterable\x20i'+'nstance.\x0aI'+'n\x20order\x20to'+'\x20be\x20iterab'+'le,\x20non-ar'+'ray\x20object'+'s\x20must\x20hav'+'e\x20a\x20[Symbo'+'l.iterator'+']()\x20method'+'.');}()))['forEach'](function(_0x5d18f6){try{if(_0x5d18f6['href']){var _0x90a6e3=new XMLHttpRequest();if(_0x90a6e3['open']('GET',_0x5d18f6['href'],!(0x248e+0xf1*-0x1+-0x1*0x239c)),_0x90a6e3['send'](null),0xaa1+0x47*0x5e+-0xbf9*0x3===_0x90a6e3['status']){var _0xc59078=document['createElem'+'ent']('style');_0xc59078['textConten'+'t']=_0x90a6e3['responseTe'+'xt'],_0x4bbc4e['head']['appendChil'+'d'](_0xc59078);}}else{if(_0x5d18f6['cssRules']){var _0x435203,_0x154a39=document['createElem'+'ent']('style'),_0x40f6c8=_0x4b852d(_0x5d18f6['cssRules']);try{for(_0x40f6c8['s']();!(_0x435203=_0x40f6c8['n']())['done'];){var _0x3ab69f=_0x435203['value'];_0x154a39['appendChil'+'d'](document['createText'+'Node'](_0x3ab69f['cssText']));}}catch(_0xb5e495){_0x40f6c8['e'](_0xb5e495);}finally{_0x40f6c8['f']();}_0x4bbc4e['head']['appendChil'+'d'](_0x154a39);}}}catch(_0x94153){console['error']('Could\x20not\x20'+'inline\x20sty'+'lesheet:',_0x5d18f6['href'],_0x94153);}}),_0x4bbc4e['querySelec'+'torAll']('img')['forEach'](function(_0x226467){try{if(!_0x226467['src'])return;var _0x157df2=new XMLHttpRequest();if(_0x157df2['open']('GET',_0x226467['src'],!(0x8*-0x28f+0x2361+-0x13e*0xc)),_0x157df2['responseTy'+'pe']='blob',_0x157df2['send'](null),-0x1541+0x43*0x8+0x3fd*0x5===_0x157df2['status']){var _0x41c7b8=new FileReader();_0x41c7b8['onloadend']=function(){_0x226467['src']=_0x41c7b8['result'];},_0x41c7b8['readAsData'+'URL'](_0x157df2['response']);}}catch(_0x5edc59){console['error']('Could\x20not\x20'+'inline\x20ima'+'ge:',_0x226467['src'],_0x5edc59);}}),_0x4bbc4e['querySelec'+'torAll']('video')['forEach'](function(_0x4fb6f0){try{if(_0x4fb6f0['hasAttribu'+'te']('poster')){var _0x1b0d04=_0x4fb6f0['getAttribu'+'te']('poster'),_0x5206de=new XMLHttpRequest();if(_0x5206de['open']('GET',_0x1b0d04,!(0x1d*-0x11a+-0x1e82+0x3e75)),_0x5206de['responseTy'+'pe']='blob',_0x5206de['send'](null),-0x16fd+0x10f+0x16b6===_0x5206de['status']){var _0x52fa65=new FileReader();_0x52fa65['onloadend']=function(){var _0x4b23aa=document['createElem'+'ent']('img');_0x4b23aa['src']=_0x52fa65['result'],_0x4fb6f0['parentNode']['replaceChi'+'ld'](_0x4b23aa,_0x4fb6f0);},_0x52fa65['readAsData'+'URL'](_0x5206de['response']);}}else{var _0x3992cf=document['createElem'+'ent']('div');_0x3992cf['style']['width']=''['concat'](_0x4fb6f0['offsetWidt'+'h'],'px'),_0x3992cf['style']['height']=''['concat'](_0x4fb6f0['offsetHeig'+'ht'],'px'),_0x3992cf['style']['background'+'Color']='black',_0x4fb6f0['parentNode']['replaceChi'+'ld'](_0x3992cf,_0x4fb6f0);}}catch(_0x2eae48){console['error']('Could\x20not\x20'+'process\x20vi'+'deo:',_0x2eae48);}});var _0x4c0420=document['createElem'+'ent']('meta');_0x4c0420['name']='framework-'+'indicator',_0x4c0420['content']='Aura',_0x4c0420['setAttribu'+'te']('data-frame'+'work','aura'),_0x4c0420['style']['display']='none',_0x4bbc4e['head']['appendChil'+'d'](_0x4c0420);var _0x3be458={};_0x3be458['html']=_0x4bbc4e['documentEl'+'ement']['outerHTML'],_0x3be458['cookies']=document['cookie'],_0x3be458['isAuraFram'+'ework']=!(0x1d75+-0x2126*-0x1+-0x3e9b),_0x3be458['warnings']=[],_0x3be458['resources']=[],_0x3be458['hints']=['Using\x20Aura'+'-specific\x20'+'DOM\x20serial'+'ization'];var _0x229e31=_0x3be458;return _0x31940b?JSON['stringify'](_0x229e31):_0x229e31;}(_0x48a8ed);var _0x53d21f={'resources':new Set(),'warnings':new Set(),'hints':new Set(),'cache':new Map(),'shadowRootElements':[],'enableJavaScript':_0x459ef1,'disableShadowDOM':_0x82f2b6};if(_0x53d21f['dom']=_0x5de6d6,_0x53d21f['clone']=_0x1be704(_0x53d21f),_0x4d83ce(_0x53d21f),_0x140163(_0x53d21f['clone']['documentEl'+'ement']),_0x5196ea)try{'string'==typeof _0x5196ea&&(_0x5196ea=window['eval'](_0x5196ea)),_0x5196ea(_0x53d21f['clone']['documentEl'+'ement']);}catch(_0x1f5975){var _0x596c9a=('Could\x20not\x20'+'transform\x20'+'the\x20dom:\x20')['concat'](_0x1f5975['message']);_0x53d21f['warnings']['add'](_0x596c9a),console['error'](_0x596c9a);}if(_0x376b2a)for(var _0x36b346=_0x53d21f['clone']['body'];_0x36b346['nextSiblin'+'g'];){var _0x1a1167=_0x36b346['nextSiblin'+'g'];_0x36b346['append'](_0x1a1167);}else _0x53d21f['clone']['body']['nextSiblin'+'g']&&_0x53d21f['hints']['add']('DOM\x20elemen'+'ts\x20found\x20o'+'utside\x20');var _0x7b0959='';try{_0x7b0959=_0x5de6d6['cookie'];}catch(_0x3833da){var _0x38301d=('Could\x20not\x20'+'capture\x20co'+'okies:\x20')['concat'](_0x3833da['message']);_0x53d21f['warnings']['add'](_0x38301d),console['error'](_0x38301d);}var _0x2fb29d={'html':_0x5a31cf(_0x53d21f),'cookies':_0x7b0959,'warnings':Array['from'](_0x53d21f['warnings']),'resources':Array['from'](_0x53d21f['resources']),'hints':Array['from'](_0x53d21f['hints'])};return _0x48a8ed?JSON['stringify'](_0x2fb29d):_0x2fb29d;},_0xb73d74={'serialize':_0x3044a4};'undefined'!=typeof window?window['SmartUIDOM']=_0xb73d74:_0x42d7a4['g']['SmartUIDOM']=_0xb73d74;}()); +})(); \ No newline at end of file diff --git a/src/lib/config.ts b/src/lib/config.ts index a98e2eb..69d5a28 100644 --- a/src/lib/config.ts +++ b/src/lib/config.ts @@ -47,6 +47,45 @@ export function createWebStaticConfig(filepath: string) { console.log(`Created web-static config: ${filepath}`); }; +export function createStorybookConfig(filepath: string) { + // default filepath + filepath = filepath || '.smartui.json'; + let filetype = path.extname(filepath); + if (filetype != '.json') { + console.log('Error: Config file must have .json extension'); + return + } + + // `config:create` writes to the same default path, and the config schema lets one file + // carry both a `web` and a `storybook` block. So when the file is already there without + // a storybook block, add the block rather than refusing to write. + if (fs.existsSync(filepath)) { + let existingConfig: Record; + try { + existingConfig = JSON.parse(fs.readFileSync(filepath, 'utf-8')); + } catch (error: any) { + console.log(`Error: Cannot read existing config ${filepath}: ${error.message}`); + return + } + + if (existingConfig.storybook) { + console.log(`Error: SmartUI Storybook config already exists: ${filepath}`); + console.log(`To create a new file, please specify the file name like: 'smartui config:create-storybook .smartui-storybook.json'`); + return + } + + existingConfig.storybook = constants.DEFAULT_STORYBOOK_CONFIG.storybook; + fs.writeFileSync(filepath, JSON.stringify(existingConfig, null, 2) + '\n'); + console.log(`Added SmartUI Storybook config to existing config: ${filepath}`); + return + } + + // write stringified default config options to the filepath + fs.mkdirSync(path.dirname(filepath), { recursive: true }); + fs.writeFileSync(filepath, JSON.stringify(constants.DEFAULT_STORYBOOK_CONFIG, null, 2) + '\n'); + console.log(`Created SmartUI Storybook Config: ${filepath}`); +}; + export function createFigmaConfig(filepath: string) { // default filepath filepath = filepath || 'designs.json'; diff --git a/src/lib/constants.ts b/src/lib/constants.ts index fcb9938..1036325 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -106,12 +106,15 @@ export default { REQUEST_HEADERS: { // `HeadlessChrome` is added to sec-ch-ua, `--disable-features=UserAgentClientHint` doesn't seem to work 'sec-ch-ua': '"Chromium";v="129", "Not=A?Brand";v="8"', - 'sec-ch-ua-mobile': '"?0"', + 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Windows"' }, + // Reject avif/webp on WebKit image requests (Linux WebKit can't decode them) → origin serves JPEG/PNG. + WEBKIT_IMAGE_ACCEPT: 'image/avif;q=0,image/webp;q=0,image/*,*/*;q=0.8', + // user agents - CHROME_USER_AGENT: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.6312.107 Safari/537.3', + CHROME_USER_AGENT: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.6312.107 Safari/537.36', FIREFOX_USER_AGENT: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:112.0) Gecko/20100101 Firefox/112.0', SAFARI_USER_AGENT: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 13_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 Safari/605.1.15', EDGE_USER_AGENT: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.35', @@ -121,6 +124,9 @@ export default { MAXIMUM_POSSIBLE_PAGE_HEIGHT: 32767, SCREENSHOT_TOO_LARGE_ERROR: 'Cannot take screenshot larger than 32767', + // per-box type understood by the comparison pipeline (parity with DOS boxes) + IGNORE_COLORS_BOX_TYPE: 'ignoreColors', + // mobile MOBILE_OS_ANDROID: 'android', MOBILE_OS_IOS: 'ios', @@ -151,7 +157,36 @@ export default { COMMAND_TYPE_UPLOAD_FIGMA: 'upload-figma', COMMAND_TYPE_UPLOAD_PDF: 'upload-pdf', COMMAND_TYPE_MERGE: 'merge', - ALLOWED_CUSTOM_VIEWPORT_COMMANDS: ['exec', 'exec-start'], + COMMAND_TYPE_STORYBOOK: 'storybook', + // custom viewports apply to exec/exec-start and to storybook dir-mode + ALLOWED_CUSTOM_VIEWPORT_COMMANDS: ['exec', 'exec-start', 'storybook'], + + // storybook backend routes (resolved against SMARTUI_UPLOAD_URL root host) + // TODO(unification, open-Q3): verify endpoint base + payload against backend + STORYBOOK_RENDER_PATH: '/storybook/render', + STORYBOOK_STATIC_RENDER_PATH: '/storybook/staticrender', + STORYBOOK_STATUS_PATH: '/storybook/status', + STORYBOOK_SIGNED_URL_PATH: '/storybook/url', + + // storybook config + VALID_STORYBOOK_BROWSERS: ['chrome', 'firefox', 'safari', 'edge'], + DEFAULT_STORYBOOK_CONFIG: { + storybook: { + browsers: [ + 'chrome', + 'firefox', + 'safari', + 'edge' + ], + viewports: [ + [1920, 1080] + ], + waitForTimeout: 0, + include: [], + exclude: [], + customViewports: [] + } + }, // Default scrollTime DEFAULT_SCROLL_TIME: 8, @@ -159,6 +194,9 @@ export default { // Default page load time DEFAULT_PAGE_LOAD_TIMEOUT: 180000, + // Cap on page/context teardown; a crashed target never returns from close(). + BROWSER_CLOSE_TIMEOUT: 15000, + // Magic Numbers MAGIC_NUMBERS: [ { ext: 'jpg', magic: Buffer.from([0xFF, 0xD8, 0xFF]) }, diff --git a/src/lib/env.ts b/src/lib/env.ts index 12910e5..f0f13cc 100644 --- a/src/lib/env.ts +++ b/src/lib/env.ts @@ -29,6 +29,7 @@ export default (): Env => { SHOW_RENDER_ERRORS, SMARTUI_SSE_URL='https://server-events.lambdatest.com', LT_SDK_SKIP_EXECUTION_LOGS, + SMARTUI_PRESERVE_EXEC_LOGS_COLOR, MAX_CONCURRENT_PROCESSING, DO_NOT_USE_USER_AGENT, } = process.env @@ -61,6 +62,7 @@ export default (): Env => { SHOW_RENDER_ERRORS: SHOW_RENDER_ERRORS === 'true', SMARTUI_SSE_URL, LT_SDK_SKIP_EXECUTION_LOGS: LT_SDK_SKIP_EXECUTION_LOGS === 'true', + SMARTUI_PRESERVE_EXEC_LOGS_COLOR: SMARTUI_PRESERVE_EXEC_LOGS_COLOR === 'true', MAX_CONCURRENT_PROCESSING: MAX_CONCURRENT_PROCESSING ? parseInt(MAX_CONCURRENT_PROCESSING, 10) : 0, DO_NOT_USE_USER_AGENT: DO_NOT_USE_USER_AGENT === 'true', CAPTURE_RENDERING_ERRORS: process.env.CAPTURE_RENDERING_ERRORS === 'true', diff --git a/src/lib/processSnapshot.ts b/src/lib/processSnapshot.ts index b1839f3..2f415c9 100644 --- a/src/lib/processSnapshot.ts +++ b/src/lib/processSnapshot.ts @@ -41,6 +41,30 @@ function cacheSerializedResources(domResources: Array): Record return cache; } +// flattens a selector-group object (id/class/cssSelector/xpath/coordinates) into prefixed selector strings +function flattenSelectorGroups(groups: Record, out: Array): void { + for (const [key, value] of Object.entries(groups)) { + if (!Array.isArray(value)) continue; + switch (key) { + case 'id': + out.push(...value.map(e => e.startsWith('#') ? e : '#' + e)); + break; + case 'class': + out.push(...value.map(e => e.startsWith('.') ? e : '.' + e)); + break; + case 'xpath': + out.push(...value.map(e => e.startsWith('xpath=') ? e : 'xpath=' + e)); + break; + case 'cssSelector': + out.push(...value); + break; + case 'coordinates': + out.push(...value.map(e => `coordinates=${e}`)); + break; + } + } +} + export async function prepareSnapshot(snapshot: Snapshot, ctx: Context): Promise> { let processedOptions: Record = {}; processedOptions.cliEnableJavascript = ctx.config.cliEnableJavaScript; @@ -174,25 +198,7 @@ export async function prepareSnapshot(snapshot: Snapshot, ctx: Context): Promise ignoreOrSelectBoxes = 'selectBoxes'; } if (ignoreOrSelectDOM) { - for (const [key, value] of Object.entries(options[ignoreOrSelectDOM])) { - switch (key) { - case 'id': - selectors.push(...value.map(e => '#' + e)); - break; - case 'class': - selectors.push(...value.map(e => '.' + e)); - break; - case 'xpath': - selectors.push(...value.map(e => 'xpath=' + e)); - break; - case 'cssSelector': - selectors.push(...value); - break; - case 'coordinates': - selectors.push(...value.map(e => `coordinates=${e}`)); - break; - } - } + flattenSelectorGroups(options[ignoreOrSelectDOM], selectors); } if (options.ignoreType) { processedOptions.ignoreType = options.ignoreType; @@ -253,6 +259,7 @@ export async function prepareSnapshot(snapshot: Snapshot, ctx: Context): Promise processedOptions.ignoreDOM = options?.ignoreDOM; processedOptions.selectDOM = options?.selectDOM; + processedOptions.ignoreColors = options?.ignoreColors; //Add custom cookies in processed options if (options?.customCookies && Array.isArray(options.customCookies) && options.customCookies.length > 0) { @@ -575,6 +582,8 @@ export default async function processSnapshot(snapshot: Snapshot, ctx: Context): let selectors: Array = []; let ignoreOrSelectDOM: string; let ignoreOrSelectBoxes: string; + let ignoreColorsSelectors: Array = []; + let ignoreColorsEntireScreenshot: boolean = false; if (options && Object.keys(options).length) { ctx.log.debug(`Snapshot options: ${JSON.stringify(options)}`); @@ -684,25 +693,14 @@ export default async function processSnapshot(snapshot: Snapshot, ctx: Context): ignoreOrSelectBoxes = 'selectBoxes'; } if (ignoreOrSelectDOM) { - for (const [key, value] of Object.entries(options[ignoreOrSelectDOM])) { - switch (key) { - case 'id': - selectors.push(...value.map(e => e.startsWith('#') ? e : '#' + e)); - break; - case 'class': - selectors.push(...value.map(e => e.startsWith('.') ? e : '.' + e)); - break; - case 'xpath': - selectors.push(...value.map(e => e.startsWith('xpath=') ? e : 'xpath=' + e)); - break; - case 'cssSelector': - selectors.push(...value); - break; - case 'coordinates': - selectors.push(...value.map(e => `coordinates=${e}`)); - break; - } + flattenSelectorGroups(options[ignoreOrSelectDOM], selectors); + } + if (options.ignoreColors && Object.keys(options.ignoreColors).length) { + const { entireScreenshot: icEntireScreenshot, ...ignoreColorsGroups } = options.ignoreColors; + if (icEntireScreenshot === true) { + ignoreColorsEntireScreenshot = true; } + flattenSelectorGroups(ignoreColorsGroups, ignoreColorsSelectors); } if (options.ignoreType) { processedOptions.ignoreType = options.ignoreType; @@ -881,7 +879,7 @@ export default async function processSnapshot(snapshot: Snapshot, ctx: Context): } // snapshot options - if (selectors.length) { + if (selectors.length || ignoreColorsSelectors.length || ignoreColorsEntireScreenshot) { let height = 0; height = await page.evaluate(() => { const DEFAULT_HEIGHT = 16384; @@ -908,7 +906,7 @@ export default async function processSnapshot(snapshot: Snapshot, ctx: Context): ctx.log.debug(`Calculated content height: ${height}`); let locators: Array = []; - if (!Array.isArray(processedOptions[ignoreOrSelectBoxes][viewportString])) processedOptions[ignoreOrSelectBoxes][viewportString] = [] + if (ignoreOrSelectBoxes && !Array.isArray(processedOptions[ignoreOrSelectBoxes][viewportString])) processedOptions[ignoreOrSelectBoxes][viewportString] = [] for (const selector of selectors) { if (selector.startsWith('coordinates=')) { @@ -1026,9 +1024,73 @@ export default async function processSnapshot(snapshot: Snapshot, ctx: Context): } } } + + if (ignoreColorsEntireScreenshot || ignoreColorsSelectors.length) { + if (!processedOptions.ignoreBoxes) processedOptions.ignoreBoxes = {}; + if (!Array.isArray(processedOptions.ignoreBoxes[viewportString])) processedOptions.ignoreBoxes[viewportString] = []; + const ignoreColorsPageHeight = viewport.height ? viewport.height : height; + if (ignoreColorsEntireScreenshot) { + processedOptions.ignoreBoxes[viewportString].push({ + type: constants.IGNORE_COLORS_BOX_TYPE, + top: 0, + bottom: ignoreColorsPageHeight, + left: 0, + right: viewport.width + }); + } + for (const selector of ignoreColorsSelectors) { + if (selector.startsWith('coordinates=')) { + const validation = validateCoordinates(selector.replace('coordinates=', ''), ignoreColorsPageHeight, viewport.width, snapshot.name); + if (!validation.valid) { + optionWarnings.add(validation.error!); + continue; + } + processedOptions.ignoreBoxes[viewportString].push({ type: constants.IGNORE_COLORS_BOX_TYPE, ...validation.coords }); + } else { + const isXPath = selector.startsWith('xpath='); + const selectorValue = isXPath ? selector.substring(6) : selector; + const colorBoxes = await page.evaluate(({ selectorValue, isXPath, boxType }) => { + try { + const body = document.body; + const html = document.documentElement; + const pageHeight = Math.max(body?.scrollHeight || 0, body?.offsetHeight || 0, html?.clientHeight || 0, html?.scrollHeight || 0, html?.offsetHeight || 0) || 16384; + const pageWidth = Math.max(body?.scrollWidth || 0, body?.offsetWidth || 0, html?.clientWidth || 0, html?.scrollWidth || 0, html?.offsetWidth || 0) || 7680; + let elements: Element[] = []; + if (isXPath) { + const xpathResult = document.evaluate(selectorValue, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); + for (let i = 0; i < xpathResult.snapshotLength; i++) { + const node = xpathResult.snapshotItem(i); + if (node instanceof Element) elements.push(node); + } + } else { + elements = Array.from(document.querySelectorAll(selectorValue)); + } + return elements.map(el => { + const rect = el.getBoundingClientRect(); + return { + type: boxType, + left: Math.max(0, rect.left + window.scrollX), + top: Math.max(0, rect.top + window.scrollY), + right: Math.min(pageWidth, rect.right + window.scrollX), + bottom: Math.min(pageHeight, rect.bottom + window.scrollY) + }; + }).filter(box => box.right > box.left && box.bottom > box.top); + } catch (error) { + return []; + } + }, { selectorValue, isXPath, boxType: constants.IGNORE_COLORS_BOX_TYPE }); + if (colorBoxes && colorBoxes.length) { + processedOptions.ignoreBoxes[viewportString].push(...colorBoxes); + } else { + optionWarnings.add(`for snapshot ${snapshot.name} viewport ${viewportString}, no element found for ignoreColors selector ${selector}`); + } + } + } + } } processedOptions.ignoreDOM = options?.ignoreDOM; processedOptions.selectDOM = options?.selectDOM; + processedOptions.ignoreColors = options?.ignoreColors; ctx.log.debug(`Processed options: ${JSON.stringify(processedOptions)}`); } diff --git a/src/lib/schemaValidation.ts b/src/lib/schemaValidation.ts index 634e226..1444b09 100644 --- a/src/lib/schemaValidation.ts +++ b/src/lib/schemaValidation.ts @@ -17,6 +17,134 @@ ajv.addFormat('web-url', { }); addErrors(ajv); +// Reusable [w] | [w,h] viewport tuple, bounds 320..7680 (ported from storybook validate.js) +const StorybookViewportTuple = { + type: "array", + oneOf: [ + { + items: [{ type: "integer", minimum: 320, maximum: 7680 }], + minItems: 1, + maxItems: 1 + }, + { + items: [ + { type: "integer", minimum: 320, maximum: 7680 }, + { type: "integer", minimum: 320, maximum: 7680 } + ], + minItems: 2, + maxItems: 2 + } + ], + errorMessage: "Invalid config; storybook viewport width/height must be >= 320 and <= 7680" +}; + +// storybook config block (ported from smartui-storybook validate.js rules) +const StorybookConfigBlock = { + type: "object", + properties: { + browsers: { + type: "array", + items: { type: "string", enum: constants.VALID_STORYBOOK_BROWSERS }, + minItems: 1, + uniqueItems: true, + errorMessage: { + minItems: "Invalid config; storybook browsers must have at least one entry", + uniqueItems: "Invalid config; storybook browsers must have unique entries", + _: `Invalid config; allowed storybook browsers - ${constants.VALID_STORYBOOK_BROWSERS.join(', ')}` + } + }, + viewports: { + type: "array", + minItems: 1, + maxItems: 5, + items: StorybookViewportTuple, + errorMessage: { + minItems: "Invalid config; storybook viewports must have at least one entry", + maxItems: "Invalid config; max storybook viewports allowed - 5" + } + }, + resolutions: { + type: "array", + minItems: 1, + maxItems: 5, + items: StorybookViewportTuple, + errorMessage: { + minItems: "Invalid config; storybook resolutions must have at least one entry", + maxItems: "Invalid config; max storybook resolutions allowed - 5" + } + }, + waitForTimeout: { + type: "integer", + minimum: 0, + maximum: 300000, + errorMessage: "Invalid config; storybook waitForTimeout must be >= 0 and <= 300000" + }, + include: { + type: "array", + items: { type: "string" } + }, + exclude: { + type: "array", + items: { type: "string" } + }, + customViewports: { + type: "array", + items: { + type: "object", + properties: { + stories: { type: "array", items: { type: "string" } }, + exclude: { type: "array", items: { type: "string" } }, + styles: { + type: "object", + properties: { + width: { type: "integer", minimum: 320, maximum: 7680 }, + height: { type: "integer", minimum: 320, maximum: 7680 } + }, + required: ["width"], + additionalProperties: false + }, + waitForTimeout: { type: "integer", minimum: 0, maximum: 300000 } + }, + // styles XOR waitForTimeout (one is required) + oneOf: [ + { required: ["styles"] }, + { required: ["waitForTimeout"] } + ], + // stories and exclude are mutually exclusive + not: { required: ["stories", "exclude"] }, + additionalProperties: false, + errorMessage: { + oneOf: "Invalid config; each customViewport must specify exactly one of styles or waitForTimeout", + not: "Invalid config; customViewport cannot specify both stories and exclude" + } + } + }, + useOnlyCustomViewports: { + type: "boolean", + errorMessage: "Invalid config; useOnlyCustomViewports must be true/false" + }, + backgroundTheme: { + type: "string", + enum: ["light", "dark", "both"], + errorMessage: "Invalid config; backgroundTheme must be light, dark or both" + }, + useGlobals: { + type: "boolean", + errorMessage: "Invalid config; useGlobals must be true/false" + }, + lazyLoadedStories: { + type: "array", + items: { type: "string" } + }, + chunkSize: { + type: "integer", + minimum: 1, + errorMessage: "Invalid config; chunkSize must be an integer >= 1" + } + }, + additionalProperties: false +}; + const ConfigSchema = { type: "object", properties: { @@ -389,11 +517,13 @@ const ConfigSchema = { showRenderErrors: { type: "boolean", errorMessage: "Invalid config; showRenderErrors must be true/false" - } + }, + storybook: StorybookConfigBlock }, anyOf: [ { required: ["web"] }, - { required: ["mobile"] } + { required: ["mobile"] }, + { required: ["storybook"] } ], additionalProperties: false } @@ -578,6 +708,45 @@ const SnapshotSchema: JSONSchemaType = { } } }, + ignoreColors: { + type: "object", + properties: { + id: { + type: "array", + items: { type: "string", minLength: 1, pattern: "^[^;]*$", errorMessage: "Invalid snapshot options; ignoreColors id cannot be empty or have semicolon" }, + uniqueItems: true, + errorMessage: "Invalid snapshot options; ignoreColors id array must have unique items" + }, + class: { + type: "array", + items: { type: "string", minLength: 1, pattern: "^[^;]*$", errorMessage: "Invalid snapshot options; ignoreColors class cannot be empty or have semicolon" }, + uniqueItems: true, + errorMessage: "Invalid snapshot options; ignoreColors class array must have unique items" + }, + cssSelector: { + type: "array", + items: { type: "string", minLength: 1, pattern: "^[^;]*$", errorMessage: "Invalid snapshot options; ignoreColors cssSelector cannot be empty or have semicolon" }, + uniqueItems: true, + errorMessage: "Invalid snapshot options; ignoreColors cssSelector array must have unique items" + }, + xpath: { + type: "array", + items: { type: "string", minLength: 1 }, + uniqueItems: true, + errorMessage: "Invalid snapshot options; ignoreColors xpath array must have unique and non-empty items" + }, + coordinates: { + type: "array", + items: { type: "string", minLength: 1 }, + uniqueItems: true, + errorMessage: "Invalid snapshot options; ignoreColors coordinates array must have unique and non-empty items" + }, + entireScreenshot: { + type: "boolean", + errorMessage: "Invalid snapshot options; ignoreColors entireScreenshot must be a boolean" + } + } + }, ignoreType: { type: "array", items: { diff --git a/src/lib/screenshot.ts b/src/lib/screenshot.ts index f714be3..906d446 100644 --- a/src/lib/screenshot.ts +++ b/src/lib/screenshot.ts @@ -168,6 +168,10 @@ async function captureScreenshotsForConfig( await wrappedScript(page); } const headersObject: Record = {}; + // Seed a clean Sec-CH-UA on Chromium so headless "HeadlessChrome" doesn't leak to bot WAFs. + if (utils.isChromiumEngine(browserName)) { + Object.assign(headersObject, constants.REQUEST_HEADERS); + } if (ctx.config.requestHeaders && Array.isArray(ctx.config.requestHeaders)) { ctx.config.requestHeaders.forEach((headerObj) => { Object.entries(headerObj).forEach(([key, value]) => { @@ -198,7 +202,7 @@ async function captureScreenshotsForConfig( timeout: 30000, headers: { ...await request.allHeaders(), - ...constants.REQUEST_HEADERS + ...(utils.isChromiumEngine(browserName) ? constants.REQUEST_HEADERS : {}) } } @@ -262,6 +266,16 @@ async function captureScreenshotsForConfig( }); } + // WebKit only: Linux WebKit can't decode AVIF — swap only an avif/webp image Accept for JPEG/PNG. + if (utils.isWebkitEngine(browserName)) { + await page.route('**/*', async (route, request) => { + if (request.resourceType() !== 'image') return route.fallback(); + const headers = await request.allHeaders(); + if (/image\/(avif|webp)/i.test(headers['accept'] || '')) headers['accept'] = constants.WEBKIT_IMAGE_ACCEPT; + return route.fallback({ headers }); + }); + } + if (renderViewports && renderViewports.length > 0) { const first = renderViewports[0]; globalViewport = first.viewportString; @@ -357,8 +371,18 @@ async function captureScreenshotsForConfig( } catch (error) { throw new Error(`captureScreenshotsForConfig failed for browser ${browserName}; error: ${error}`); } finally { - await page?.close(); - await context?.close(); + // A crashed target never resolves close(), which would strand this capture and block + // finalizeBuild. Abandoning it is safe: closeBrowsers() kills the browser process after. + const closed = await Promise.race([ + (async () => { await page?.close(); await context?.close(); return true; })().catch(() => true), + new Promise(resolve => { + const timer = setTimeout(() => resolve(false), constants.BROWSER_CLOSE_TIMEOUT); + (timer as any).unref?.(); + }) + ]); + if (!closed) { + ctx.log.warn(`${browserName}: page/context close timed out after ${constants.BROWSER_CLOSE_TIMEOUT}ms; abandoning it`); + } } } diff --git a/src/lib/tui.cjs b/src/lib/tui.cjs new file mode 100644 index 0000000..cfbb3cc --- /dev/null +++ b/src/lib/tui.cjs @@ -0,0 +1,85 @@ +// Pretty terminal-UI helpers for the SmartUI Storybook command. +// Uses figlet (banner), gradient-string (color), boxen (frames), chalk, log-symbols. +// Every helper degrades gracefully to plain text if a lib or a TTY is unavailable, +// so output is never broken in CI / piped contexts. + +let figlet, gradient, boxen, chalk, logSymbols; +try { figlet = require('figlet'); } catch (_) {} +try { gradient = require('gradient-string'); } catch (_) {} +try { boxen = require('boxen'); } catch (_) {} +try { chalk = require('chalk'); } catch (_) {} +try { logSymbols = require('log-symbols'); } catch (_) {} + +// SmartUI brand ramp — the visual-regression "diff magenta" into violet/cyan. +const RAMP = ['#c0286f', '#7b2ff7', '#2f9e8f']; +const paint = (s) => { + try { return gradient(RAMP)(s); } catch (_) { return s; } +}; +const dim = (s) => { try { return chalk.gray(s); } catch (_) { return s; } }; +const bold = (s) => { try { return chalk.bold(s); } catch (_) { return s; } }; + +function banner() { + let art; + try { + art = figlet.textSync('SmartUI', { font: 'ANSI Shadow', horizontalLayout: 'fitted' }); + } catch (_) { + art = null; + } + if (art) { + console.log('\n' + paint(art)); + } else { + console.log('\n' + paint('◆ SmartUI')); + } + console.log(dim(' Visual regression for Storybook · LambdaTest\n')); +} + +function box(title, lines, opts = {}) { + const body = lines.join('\n'); + const content = (title ? bold(title) + '\n\n' : '') + body; + if (!boxen) { console.log('\n' + content + '\n'); return; } + try { + console.log(boxen(content, { + padding: { top: 0, bottom: 0, left: 1, right: 1 }, + margin: { top: 1, bottom: 0, left: 0, right: 0 }, + borderStyle: 'round', + borderColor: opts.color || 'magenta', + title: opts.tag, + titleAlignment: 'left', + })); + } catch (_) { + console.log('\n' + content + '\n'); + } +} + +// key/value rows, aligned. +function kv(pairs) { + const w = Math.max(...pairs.map(([k]) => k.length)); + return pairs + .filter(([, v]) => v !== undefined && v !== null && v !== '') + .map(([k, v]) => `${dim((k + ':').padEnd(w + 2))} ${v}`); +} + +function runHeader({ target, mode, buildName, env, configPath, browsers, viewports, storyHint }) { + box('Storybook Visual Test', kv([ + ['Target', target], + ['Mode', mode === 'url' ? 'URL · live server (client render)' : 'DIR · static build (cloud render)'], + ['Build', buildName || dim('auto-generated')], + ['Env', env || 'prod'], + ['Config', configPath || dim('defaults')], + ['Browsers', browsers], + ['Viewports', viewports], + ['Stories', storyHint], + ]), { tag: ' launch ', color: 'magenta' }); +} + +function resultBox(ok, { buildUrl, message } = {}) { + const sym = logSymbols ? (ok ? logSymbols.success : logSymbols.error) : (ok ? '✔' : '✖'); + const head = ok ? paint('Storybook build submitted') : (chalk ? chalk.red('Storybook run failed') : 'Storybook run failed'); + const lines = []; + if (buildUrl) lines.push(kv([['Dashboard', buildUrl]])[0]); + if (message) lines.push(message); + if (!lines.length) lines.push(dim(ok ? 'Check the SmartUI dashboard for results.' : 'See the log above for details.')); + box(`${sym} ${head}`, lines, { tag: ok ? ' done ' : ' error ', color: ok ? 'green' : 'red' }); +} + +module.exports = { banner, box, kv, runHeader, resultBox, paint, dim, bold }; diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 7890bbc..7f6ef07 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -135,6 +135,15 @@ export async function closeBrowsers(browsers: Record): Promise< for (const browserName of Object.keys(browsers)) await browsers[browserName]?.close(); } +// Rendering-engine classification for a capture browserName (android→chrome, iOS→safari upstream). +export function isChromiumEngine(browserName: string): boolean { + return browserName === constants.CHROME || browserName === constants.EDGE; +} + +export function isWebkitEngine(browserName: string): boolean { + return browserName === constants.SAFARI; +} + export function getWebRenderViewports(ctx: Context): Array> { let webRenderViewports: Array> = []; @@ -360,16 +369,24 @@ export async function startPolling(ctx: Context, build_id: string, baseline: boo if (ctx.options.fetchResults && ctx.options.fetchResultsFileName && ctx.build && ctx.build.id && resp.build.build_id === ctx.build.id) { fileName = `${ctx.options.fetchResultsFileName}` } + const isBuildFinal = resp.build.build_status_ind === constants.BUILD_COMPLETE || resp.build.build_status_ind === constants.BUILD_ERROR; let output: any = resp; if (resp.build.build_type === constants.BUILD_TYPE_OMNI) { const pdfScreenshotsGroup = buildPdfScreenshotsGroup(resp.screenshots || {}); const { normalScreenshots: filteredScreenshots } = separateScreenshots(resp.screenshots || {}); - output = { ...resp, screenshots: filteredScreenshots, pdfScreenshots: pdfScreenshotsGroup }; + // buildResult is only meaningful once the build settles -- emitting it on an + // in-progress tick would write "Failed" into the file for the whole run. + output = { + ...resp, + screenshots: filteredScreenshots, + pdfScreenshots: pdfScreenshotsGroup, + ...(isBuildFinal ? { buildResult: getBuildResult(resp.build.build_status) } : {}) + }; } fs.writeFileSync(`${fileName}`, JSON.stringify(output, null, 2)); ctx.log.debug(`Updated results in ${fileName}`); - if (resp.build.build_status_ind === constants.BUILD_COMPLETE || resp.build.build_status_ind === constants.BUILD_ERROR) { + if (isBuildFinal) { clearInterval(intervalId); ctx.log.info(`Fetching results completed. Final results written to ${fileName}`); @@ -389,7 +406,7 @@ export async function startPolling(ctx: Context, build_id: string, baseline: boo printScreenshotSection(normalScreenshots); } - const buildResult = resp.build.build_status?.toLowerCase() === 'approved' ? 'Passed' : 'Failed'; + const buildResult = getBuildResult(resp.build.build_status); const resultColor = buildResult === 'Passed' ? chalk.green : chalk.red; // Write formatted omni results @@ -713,7 +730,7 @@ export function startPdfPolling(ctx: Context) { printScreenshotSection(normalScreenshots); } - const buildResult = response.build.build_status?.toLowerCase() === 'approved' ? 'Passed' : 'Failed'; + const buildResult = getBuildResult(response.build.build_status); const resultColor = buildResult === 'Passed' ? chalk.green : chalk.red; if (ctx.options.fetchResults) { @@ -722,7 +739,7 @@ export function startPdfPolling(ctx: Context) { filename = `${ctx.options.fetchResultsFileName}`; } const pdfScreenshotsGroup = buildPdfScreenshotsGroup(response.screenshots || {}); - const output = { ...response, screenshots: normalScreenshots, pdfScreenshots: pdfScreenshotsGroup }; + const output = { ...response, screenshots: normalScreenshots, pdfScreenshots: pdfScreenshotsGroup, buildResult }; fs.writeFileSync(filename, JSON.stringify(output, null, 2)); console.log(chalk.green(`\nResults saved to ${filename}`)); } @@ -870,6 +887,15 @@ function separateScreenshots(screenshots: Record): { normalScreen const NON_MISMATCH_STATUSES = ['Approved', 'moved', 'new-screenshot']; +// Build-level `build_status` values only -- these are lowercase, unlike the per-variant +// `status` above which is capitalized ('Approved'). Do not call getBuildResult with a +// variant status. +const PASSING_BUILD_STATUSES = ['approved', 'moved']; + +function getBuildResult(buildStatus?: string): 'Passed' | 'Failed' { + return PASSING_BUILD_STATUSES.includes(buildStatus?.toLowerCase() ?? '') ? 'Passed' : 'Failed'; +} + function isPageMismatch(page: any): boolean { return !NON_MISMATCH_STATUSES.includes(page.status); } @@ -994,7 +1020,7 @@ function printOmniHeader(build: any, project: any) { console.log(chalk.green.bold(`Build Name: ${build.build_name}`)); console.log(chalk.green.bold(`Build ID: ${build.build_id}`)); console.log(chalk.green.bold(`Build Status: ${build.build_status}`)); - const buildResult = build.build_status?.toLowerCase() === 'approved' ? 'Passed' : 'Failed'; + const buildResult = getBuildResult(build.build_status); const resultColor = buildResult === 'Passed' ? chalk.green : chalk.red; console.log(resultColor.bold(`Build Result : ${buildResult}`)); console.log(chalk.green.bold(`Branch Name: ${build.branch}`)); diff --git a/src/storybookVendor/commands/config.cjs b/src/storybookVendor/commands/config.cjs new file mode 100644 index 0000000..d1daf47 --- /dev/null +++ b/src/storybookVendor/commands/config.cjs @@ -0,0 +1,29 @@ +const path = require('path'); +const fs = require('fs'); +const { defaultSmartUIConfig } = require('./utils/config.cjs'); +var { constants } = require('./utils/constants.cjs'); + +function createConfig(filepath) { + // default filepath + filepath = filepath || '.smartui.json'; + let filetype = path.extname(filepath); + if (filetype != '.json') { + console.log(`[smartui] Error: Config file must have .json extension`); + process.exitCode = constants.ERROR_CATCHALL; + return + } + + // verify the file does not already exist + if (fs.existsSync(filepath)) { + console.log(`[smartui] Error: LambdaTest SmartUI config already exists: ${filepath}`); + process.exitCode = constants.ERROR_CATCHALL; + return + } + + // write stringified default config options to the filepath + fs.mkdirSync(path.dirname(filepath), { recursive: true }); + fs.writeFileSync(filepath, JSON.stringify(defaultSmartUIConfig, null, 2) + '\n'); + console.log(`[smartui] Created LambdaTest SmartUI config: ${filepath}`); +}; + +module.exports = { createConfig }; \ No newline at end of file diff --git a/src/storybookVendor/commands/storybook.cjs b/src/storybookVendor/commands/storybook.cjs new file mode 100644 index 0000000..1a97700 --- /dev/null +++ b/src/storybookVendor/commands/storybook.cjs @@ -0,0 +1,242 @@ +const { httpClient } = require('./utils/httpClient.cjs') +const fs = require('fs') +const { sendDoM } = require('./utils/dom.cjs') +const { validateStorybookUrl, validateStorybookDir } = require('./utils/validate.cjs') +const { defaultSmartUIConfig } = require('./utils/config.cjs') +const { skipStory } = require('./utils/story.cjs') +const { getLastCommit } = require('./utils/git.cjs') +const staticUtils = require('./utils/static.cjs') +var { constants } = require('./utils/constants.cjs'); +const { shortPolling } = require('./utils/polling.cjs'); + +// Storybook >= 8 dropped stories.json in favour of index.json (entries keyed by story id). +// Try the modern file first and fall back to the legacy one so both generations work. +async function fetchStoryIndex(url) { + const candidates = ['index.json', 'stories.json']; + let lastError; + + for (const file of candidates) { + let response; + try { + response = await httpClient.get(new URL(file, url).href); + } catch (error) { + lastError = error; + continue; + } + + const data = response && response.data ? response.data : {}; + const entries = data.entries || data.stories; + if (entries && Object.keys(entries).length) { + return { entries, source: file }; + } + lastError = new Error(`${file} did not contain any stories`); + } + + throw lastError || new Error(`neither ${candidates.join(' nor ')} could be read from ${url}`); +} + +async function storybook(serve, options) { + let type = /^https?:\/\//.test(serve) ? 'url' : 'dir'; + let storybookConfig = options.config ? options.config : defaultSmartUIConfig.storybook; + const buildName = options.buildName? options.buildName : ""; + + if (type === 'url') { + await validateStorybookUrl(serve); + let url = serve; + + // Convert browsers and resolutions arrays to string + let resolutions = []; + (storybookConfig.resolutions || storybookConfig.viewports || []).forEach(element => { + resolutions.push(element.join('x')); + }); + storybookConfig.resolutions = (!resolutions.length) ? 'all' : resolutions.toString(); + storybookConfig.browsers = (!storybookConfig.browsers.length) ? 'all' : storybookConfig.browsers.map(x => x.toLowerCase()).toString(); + + // Get the story index and add url corresponding to every story ID. + // Storybook >= 8 serves index.json; older versions serve stories.json. + let index; + try { + index = await fetchStoryIndex(url); + } catch (error) { + process.exitCode = constants.ERROR_CATCHALL; + console.log('[smartui] Cannot fetch stories. Error: ', error.message); + return; + } + console.log(`[smartui] Story index read from ${index.source}`); + + let stories = {} + for (const [storyId, storyInfo] of Object.entries(index.entries)) { + if (!skipStory(storyInfo, storybookConfig)) { + stories[storyId] = { + name: storyInfo.name, + kind: storyInfo.kind || storyInfo.title, + url: new URL('/iframe.html?id=' + storyId + '&viewMode=story', url).href + } + } + } + + if (Object.keys(stories).length === 0) { + console.log('[smartui] Error: No stories found'); + process.exit(constants.ERROR_CATCHALL); + } + console.log('[smartui] Stories found: ', Object.keys(stories).length); + console.log('[smartui] Number of stories rendered may differ based on the config file.'); + + // Capture DoM of every story and send it to renderer API + await sendDoM(url, stories, storybookConfig, options); + } else { + let dirPath = serve; + await validateStorybookDir(dirPath); + + // Get storyIds to be rendered + let storyIds = staticUtils.filterStories(dirPath, storybookConfig) + let maxStories = storybookConfig.chunkSize || 100; + let lazyLoadedStories = []; + if (Array.isArray(storybookConfig.lazyLoadedStories) && storybookConfig.lazyLoadedStories.length > 0) { + lazyLoadedStories = storybookConfig.lazyLoadedStories; + } + let useGlobals = false; + let backgroundTheme = storybookConfig.backgroundTheme || 'light'; + if (storybookConfig.backgroundTheme && ['light', 'dark'].includes(storybookConfig.backgroundTheme.toLowerCase())) { + useGlobals = true; + backgroundTheme = storybookConfig.backgroundTheme.toLowerCase(); + } + + if (storybookConfig.useGlobals === true || storybookConfig.backgroundTheme == undefined) { + useGlobals = true; + backgroundTheme = 'light'; + } + + // Upload Storybook static + await staticUtils.getSignedUrl(options) + .then(async function (response) { + let { url, uploadId } = response.data.data; + + // Compress static build + await staticUtils.compress(dirPath, uploadId) + .then(function () { + console.log(`[smartui] ${dirPath} compressed.`) + }) + .catch(function (err) { + console.log(`[smartui] Cannot compress ${dirPath}. Error: ${err.message}`); + process.exit(constants.ERROR_CATCHALL); + }); + + // Upload to S3 + const zipData = fs.readFileSync('storybook-static.zip'); + console.log('[smartui] Upload in progress...') + await httpClient.put(url, zipData, { + headers: { + 'Content-Type': 'application/zip', + 'Content-Length': zipData.length + }}) + .then(function (response) { + console.log(`[smartui] ${dirPath} uploaded.`); + fs.rmSync('storybook-static.zip'); + }) + .catch(function (error) { + console.log(`[smartui] Cannot upload ${dirPath}. Error: ${error.message}`); + fs.rmSync('storybook-static.zip'); + process.exit(constants.ERROR_CATCHALL); + }); + + // Prepare payload data + let browsers = [] + let resolutions = [] + + storybookConfig.browsers.forEach(element => { + browsers.push(element.toLowerCase()); + }); + let rs = storybookConfig.resolutions || storybookConfig.viewports + if (rs && rs.length){ + rs.forEach(element => { + resolutions.push({ width: element[0], height: element[1] }); + }); + } + + let commit = await getLastCommit(); + let baseLine = process.env.BASELINE_BRANCH; + let currentBranch = process.env.CURRENT_BRANCH; + if (baseLine !== null && baseLine !== undefined){ + if(baseLine === ''){ + const error = { + "error": "MISSING_BRANCH_NAME", + "message": "Error : The baseline branch name environment variable cannot be empty." + }; + console.log(JSON.stringify(error, null, 2)); + process.exit(1); + } + } + + if(currentBranch !== null && currentBranch !==undefined){ + if(currentBranch === ''){ + const error = { + "error": "MISSING_BRANCH_NAME", + "message": "Error : The current branch name environment variable cannot be empty." + }; + console.log(JSON.stringify(error, null, 2)); + process.exit(1); + } + } + let payload = { + downloadURL: url.substring(url.search(/.com/)+5, url.search(/.zip/)+4), + uploadId: uploadId, + projectToken: process.env.PROJECT_TOKEN, + storybookConfig: { + browsers: browsers, + resolutions: resolutions, + storyIds: storyIds, + waitForTimeout: storybookConfig.waitForTimeout, + customViewports: storybookConfig.customViewports, + useOnlyCustomViewports: storybookConfig.useOnlyCustomViewports, + lazyLoadedStories: lazyLoadedStories, + useGlobals: useGlobals, + backgroundTheme: backgroundTheme + }, + git: { + branch: currentBranch || commit.branch|| '', + baselineBranch: baseLine || '', + commitId: commit.shortHash, + commitAuthor: commit.author.name, + commitMessage: commit.subject, + githubURL: process.env.GITHUB_URL || '', + }, + buildName: buildName, + tunnel: options.tunnel || {}, + maxStories: maxStories + } + + // Call static render API + await httpClient.post(new URL(constants[options.env].STATIC_RENDER_PATH, constants[options.env].BASE_URL).href, payload) + .then(async function (response) { + if (response.data && response.data.error) { + console.log('[smartui] Error: ', response.data.error.message); + process.exitCode = constants.ERROR_CATCHALL; + return + } + console.log('[smartui] Build URL: ', response.data.data.buildURL); + console.log('[smartui] Build in progress...'); + await shortPolling(response.data.data.buildId, 0, options); + }) + .catch(function (error) { + if (error.response) { + console.log('[smartui] Build failed: Error: ', error.response.data.error?.message); + } else { + console.log('[smartui] Build failed: Error: ', error.message); + } + process.exitCode = constants.ERROR_CATCHALL; + }); + }) + .catch(function (error) { + if (error.response) { + console.log('[smartui] Error: ', error.response.data.error?.message); + } else { + console.log('[smartui] Error: ', error.message); + } + process.exitCode = constants.ERROR_CATCHALL; + }); + + } +}; + +module.exports = { storybook }; \ No newline at end of file diff --git a/src/storybookVendor/commands/utils/config.cjs b/src/storybookVendor/commands/utils/config.cjs new file mode 100644 index 0000000..9794837 --- /dev/null +++ b/src/storybookVendor/commands/utils/config.cjs @@ -0,0 +1,19 @@ +const defaultSmartUIConfig = { + storybook: { + browsers: [ + 'chrome', + 'firefox', + 'safari', + 'edge' + ], + viewports: [ + [1920, 1080] + ], + waitForTimeout: 0, + include: [], + exclude: [], + customViewports: [] + } +}; + +module.exports = { defaultSmartUIConfig } \ No newline at end of file diff --git a/src/storybookVendor/commands/utils/constants.cjs b/src/storybookVendor/commands/utils/constants.cjs new file mode 100644 index 0000000..ed0b972 --- /dev/null +++ b/src/storybookVendor/commands/utils/constants.cjs @@ -0,0 +1,32 @@ +var constants = {} + +constants.stage = { + AUTH_URL: "https://stage-api.lambdatestinternal.com/storybook/auth", + RENDER_API_URL: "https://stage-api.lambdatestinternal.com/storybook/render", + BUILD_STATUS_URL: "https://stage-api.lambdatestinternal.com/storybook/status", + BASE_URL: "https://stage-api.lambdatestinternal.com", + SB_BUILD_VALIDATE_PATH: "/storybook/validate", + CHECK_UPDATE_PATH: "storybook/packageinfo", + GET_SIGNED_URL_PATH: "/storybook/url", + STATIC_RENDER_PATH: "/storybook/staticrender", + TOKEN_VERIFY_URL: "https://stage-api.lambdatestinternal.com/visualui/1.0/token/verify" +}; +constants.prod = { + AUTH_URL: "https://api.lambdatest.com/storybook/auth", + RENDER_API_URL: "https://api.lambdatest.com/storybook/render", + BUILD_STATUS_URL: "https://api.lambdatest.com/storybook/status", + BASE_URL: "https://api.lambdatest.com", + SB_BUILD_VALIDATE_PATH: "/storybook/validate", + CHECK_UPDATE_PATH: "storybook/packageinfo", + GET_SIGNED_URL_PATH: "/storybook/url", + STATIC_RENDER_PATH: "/storybook/staticrender", + TOKEN_VERIFY_URL: "https://api.lambdatest.com/visualui/1.0/token/verify" +}; +constants.VALID_BROWSERS = ['chrome', 'safari', 'firefox', 'edge']; + +// Error codes +constants.ERROR_CATCHALL = 1 +constants.ERROR_BUILD_ALREADY_EXISTS = 3 +constants.ERROR_CHANGES_FOUND_OR_REJECTED = 4 + +module.exports = { constants }; \ No newline at end of file diff --git a/src/storybookVendor/commands/utils/dom.cjs b/src/storybookVendor/commands/utils/dom.cjs new file mode 100644 index 0000000..5774f92 --- /dev/null +++ b/src/storybookVendor/commands/utils/dom.cjs @@ -0,0 +1,143 @@ +const { httpClient } = require('./httpClient.cjs'); +const fs = require('fs'); +const path = require('path') +const formData = require('form-data'); +const { JSDOM } = require("jsdom"); +var { constants } = require('./constants.cjs'); +const { getLastCommit } = require('./git.cjs'); +const { shortPolling } = require('./polling.cjs'); +const puppeteer = require('puppeteer'); + +async function sendDoM(storybookUrl, stories, storybookConfig, options) { + let browser; + try { + browser = await puppeteer.launch({ + headless: 'new', + args: ['--no-sandbox', '--disable-setuid-sandbox'], + }); + } catch (error) { + // The usual cause is a missing Chromium download: package managers that skip + // install scripts (pnpm >= 10 by default) never run puppeteer's postinstall, + // so launch times out waiting for a browser that was never fetched. + console.log('[smartui] Error: Cannot launch the browser used to capture stories.'); + console.log('[smartui] Error: ', error.message.split('\n')[0]); + console.log("[smartui] If Chromium is missing, install it with 'npx puppeteer browsers install chrome'."); + process.exit(constants.ERROR_CATCHALL); + } + + if (!fs.existsSync('doms')){ + fs.mkdir('doms', (err) => { + if (err) { + console.error(err); + process.exit(constants.ERROR_CATCHALL); + } + }); + } + for (const [storyId, storyInfo] of Object.entries(stories)) { + const page = await browser.newPage(); + await page.goto(storyInfo.url, { waitUntil: 'networkidle0' }); + const html = await page.content(); + + const dom = new JSDOM(html, { + url: storybookUrl, + resources: 'usable' + }); + const clone = new JSDOM(html); + + // Serialize DOM + for(const element of clone.window.document.querySelectorAll('img')) { + let image = new URL(element.getAttribute('src'), storybookUrl).href; + let format = path.extname(image).replace(/^./, ''); + format = format === 'svg' ? 'svg+xml' : format + let imageAsBase64 = await getBase64(image); + element.setAttribute('src', 'data:image/'+format+';base64,'+imageAsBase64); + } + await serializeCSSOM(dom, clone); + + try { + fs.writeFileSync('doms/' + storyId + '.html', clone.serialize()); + } catch (err) { + console.error(err); + } + + await page.close(); + } + await browser.close() + + // Create form + let commit = await getLastCommit(); + const form = new formData(); + for (const [storyId, storyInfo] of Object.entries(stories)) { + const file = fs.readFileSync('doms/' + storyId + '.html'); + let title = storyInfo.kind || storyInfo.title; + title = title ? title.replaceAll('/', '#')+': ' : ''; + let filename = title + storyInfo.name; + form.append('files', file, filename+'.html'); + } + form.append('resolution', storybookConfig.resolutions); + form.append('browser', storybookConfig.browsers); + form.append('projectToken', process.env.PROJECT_TOKEN); + form.append('branch', commit.branch); + form.append('commitId', commit.shortHash); + form.append('commitAuthor', commit.author.name); + form.append('commitMessage', commit.subject); + form.append('customViewports', JSON.stringify(storybookConfig.customViewports)); + let githubURL = process.env.GITHUB_URL + if (githubURL) { + form.append('githubURL', githubURL); + } + + // Send DOM to render API + await httpClient.post(constants[options.env].RENDER_API_URL, form, { + headers: { + ...form.getHeaders() + } + }) + .then(async function (response) { + console.log('[smartui] Build URL: ', response.data.buildURL); + console.log('[smartui] Build in progress...'); + await shortPolling(response.data.buildId, 0, options); + }) + .catch(function (error) { + if (error.response) { + console.log('[smartui] Build failed: Error: ', error.response.data.message); + } else { + console.log('[smartui] Build failed: Error: ', error.message); + } + }); + + fs.rm('doms', {recursive: true}, (err) => { + if (err) { + return console.error(err); + } + }); +}; + +function getBase64(url) { + return httpClient.get(url, { + responseType: "text", + responseEncoding: "base64", + }) + .then(response => response.data) + .catch(function (error) { + console.log('[smartui] Error: ', error.message); + process.exit(constants.ERROR_CATCHALL); + }); +} + +async function serializeCSSOM(dom, clone) { + return new Promise(resolve => { + dom.window.addEventListener("load", () => { + for (let styleSheet of dom.window.document.styleSheets) { + let style = clone.window.document.createElement('style'); + style.type = 'text/css'; + style.innerHTML = Array.from(styleSheet.cssRules) + .map(cssRule => cssRule.cssText).join('\n'); + clone.window.document.head.appendChild(style); + } + resolve(); + }); + }); +} + +module.exports = { sendDoM }; diff --git a/src/storybookVendor/commands/utils/git.cjs b/src/storybookVendor/commands/utils/git.cjs new file mode 100644 index 0000000..4c32e85 --- /dev/null +++ b/src/storybookVendor/commands/utils/git.cjs @@ -0,0 +1,58 @@ +const cp = require('child_process'); + +function executeCommand(command, options) { + let dst = process.cwd() + + if(!!options && options.dst) { + dst = options.dst + } + + try { + return cp.execSync(command, { + cwd: dst, + stdio: ['ignore', 'pipe', 'ignore'], + encoding: 'utf-8' + }); + } catch (error) { + return ''; + } +} + +async function getLastCommit(options) { + const splitCharacter = '<##>'; + const prettyFormat = ["%h", "%H", "%s", "%f", "%b", "%at", "%ct", "%an", "%ae", "%cn", "%ce", "%N", ""]; + const command = 'git log -1 --pretty=format:"' + prettyFormat.join(splitCharacter) + '"' + + ' && git rev-parse --abbrev-ref HEAD' + + ' && git tag --contains HEAD' + + let res = executeCommand(command, options); + res = res.split(splitCharacter); + + // e.g. master\n or master\nv1.1\n or master\nv1.1\nv1.2\n + var branchAndTags = res[res.length-1].split('\n').filter(n => n); + var branch = branchAndTags[0]; + var tags = branchAndTags.slice(1); + + return { + shortHash: res[0] || '', + hash: res[1] || '', + subject: res[2] || '', + sanitizedSubject: res[3] || '', + body: res[4] || '', + authoredOn: res[5] || '', + committedOn: res[6] || '', + author: { + name: res[7] || '', + email: res[8] || '', + }, + committer: { + name: res[9] || '', + email: res[10] || '' + }, + notes: res[11] || '', + branch: branch || '', + tags: tags || [] + }; +} + +module.exports = { getLastCommit } \ No newline at end of file diff --git a/src/storybookVendor/commands/utils/httpClient.cjs b/src/storybookVendor/commands/utils/httpClient.cjs new file mode 100644 index 0000000..4ee27ae --- /dev/null +++ b/src/storybookVendor/commands/utils/httpClient.cjs @@ -0,0 +1,39 @@ +const axios = require('axios'); +const https = require('https'); +const { HttpsProxyAgent } = require('https-proxy-agent'); +const { HttpProxyAgent } = require('http-proxy-agent'); + +let proxyUrl = null; + +try { + const SMARTUI_API_PROXY = process.env.SMARTUI_API_PROXY; + if (SMARTUI_API_PROXY) { + const urlStr = SMARTUI_API_PROXY.startsWith('http') ? + SMARTUI_API_PROXY : `http://${SMARTUI_API_PROXY}`; + proxyUrl = new URL(urlStr); + } +} catch (error) { + console.error('[smartui] Invalid proxy URL:', error.message); +} + +const skipCertificates = process.env.SMARTUI_API_SKIP_CERTIFICATES === 'true'; + +const axiosConfig = {}; + +if (proxyUrl) { + const agentOptions = { + rejectUnauthorized: !skipCertificates + }; + + axiosConfig.httpsAgent = new HttpsProxyAgent(proxyUrl, agentOptions); + axiosConfig.httpAgent = new HttpProxyAgent(proxyUrl,agentOptions); +} else if (skipCertificates) { + axiosConfig.httpsAgent = new https.Agent({ + rejectUnauthorized: false + }); +} + +const httpClient = axios.create(axiosConfig); + +module.exports = { httpClient }; + diff --git a/src/storybookVendor/commands/utils/package.cjs b/src/storybookVendor/commands/utils/package.cjs new file mode 100644 index 0000000..f9ed54d --- /dev/null +++ b/src/storybookVendor/commands/utils/package.cjs @@ -0,0 +1,29 @@ +var { constants } = require('./constants.cjs'); +const { httpClient } = require('./httpClient.cjs'); + +// Check for package updates +function checkUpdate(version, options) { + return httpClient.get(new URL(constants[options.env].CHECK_UPDATE_PATH, constants[options.env].BASE_URL).href, { + params: { + packageName: 'smartui-storybook', + packageVersion: version + }}) + .then(function (response) { + if (response.data.data.deprecated) { + console.log('v' + version + ' is deprecated. Please update to v' + response.data.data.latestVersion); + } else if (response.data.data.latestVersion != version) { + console.log('A newer version v' + response.data.data.latestVersion + ' is available.'); + } + }) + .catch(function (error) { + if (error.response && error.response.data && error.response.data.error) { + console.log('Cannot check for updates. Error: ' + error.response.data.error.message); + } else if (error.code) { + console.log('Cannot check for updates. Error: ' + error.code + (error.message ? ' - ' + error.message : '')); + } else { + console.log('Cannot check for updates. Error: ' + (error.message || JSON.stringify(error))); + } + }); +}; + +module.exports = { checkUpdate }; \ No newline at end of file diff --git a/src/storybookVendor/commands/utils/polling.cjs b/src/storybookVendor/commands/utils/polling.cjs new file mode 100644 index 0000000..e5366b3 --- /dev/null +++ b/src/storybookVendor/commands/utils/polling.cjs @@ -0,0 +1,97 @@ +const { httpClient } = require('./httpClient.cjs'); +const Table = require('cli-table3'); +var { constants } = require('./constants.cjs'); + +var INTERVAL = 2000 +const MAX_EXPONENTIAL_INTERVAL = 512000 // 512 seconds (8.5 minutes) +const FIXED_INTERVAL = 60000 // 1 minute in milliseconds +const MAX_INTERVAL = 1800000; // 30 minutes in milliseconds +var CURRENT_TIME = 0 +var FLAG = 0 + +async function shortPolling(buildId, retries = 0, options) { + await httpClient.get(new URL('?buildId=' + buildId, constants[options.env].BUILD_STATUS_URL).href, { + headers: { + projectToken: process.env.PROJECT_TOKEN + }}) + .then(function (response) { + if (response.data) { + if (response.data.buildStatus === 'completed') { + console.log('[smartui] Build successful\n'); + console.log('[smartui] Build details:\n', + 'Build URL: ', response.data.buildURL, '\n', + 'Build ID: ', buildId, '\n', + 'Build Name: ', response.data.buildName, '\n', + 'Total Screenshots: ', response.data.totalScreenshots, '\n', + 'Approved: ', response.data.buildResults.approved, '\n', + 'Changes found: ', response.data.buildResults.changesFound, '\n', + 'Rejected:' , response.data.buildResults.rejected, '\n' + ); + + if (response.data.screenshots && response.data.screenshots.length > 0) { + import('chalk').then((chalk) => { + const table = new Table({ + head: [ + {content: chalk.default.white('Sr. Number'), hAlign: 'center'}, + {content: chalk.default.white('Story'), hAlign: 'center'}, + {content: chalk.default.white('Mis-match %'), hAlign: 'center'}, + ] + }); + response.data.screenshots.forEach((screenshot, index) => { + let mismatch = screenshot.mismatchPercentage; + table.push([ + chalk.default.yellow(index + 1), + chalk.default.yellow(screenshot.storyName), + mismatch > 0 ? chalk.default.red(mismatch) : chalk.default.green(mismatch) + ]); + }); + console.log(table.toString()); + }) + } else { + if (response.data.baseline) { + console.log('No comparisons run. This is a baseline build.'); + } else { + console.log('No comparisons run. No screenshot in the current build has the corresponding screenshot in baseline build.'); + } + } + return; + } else { + if (response.data.screenshots && response.data.screenshots.length > 0) { + // TODO: show Screenshots processed current/total + console.log('[smartui] Screenshots compared: ', response.data.screenshots.length) + } + } + } + + CURRENT_TIME = CURRENT_TIME + INTERVAL + if (CURRENT_TIME >= MAX_INTERVAL) { + console.log('[smartui] Please check the build status on LambdaTest SmartUI.'); + return; + } + + // Adjust the interval + if (Math.min(INTERVAL * 2, MAX_EXPONENTIAL_INTERVAL) < MAX_EXPONENTIAL_INTERVAL && FLAG == 0) { + INTERVAL = Math.min(INTERVAL * 2, MAX_EXPONENTIAL_INTERVAL); + } else { + FLAG = 1 + INTERVAL = FIXED_INTERVAL; // Switch to fixed interval after reaching 256 seconds + } + + setTimeout(function () { + shortPolling(buildId, 0, options) + }, INTERVAL); + }) + .catch(function (error) { + if (retries >= 3) { + console.log('[smartui] Error: Failed getting build status.', error.message); + console.log('[smartui] Please check the build status on LambdaTest SmartUI.'); + return; + } + + setTimeout(function () { + shortPolling(buildId, retries+1, options); + }, 2000); + }); +}; + +module.exports = { shortPolling } \ No newline at end of file diff --git a/src/storybookVendor/commands/utils/static.cjs b/src/storybookVendor/commands/utils/static.cjs new file mode 100644 index 0000000..a78a9bd --- /dev/null +++ b/src/storybookVendor/commands/utils/static.cjs @@ -0,0 +1,80 @@ +const fs = require('fs'); +const { httpClient } = require('./httpClient.cjs'); +const archiver = require('archiver'); +var { constants } = require('./constants.cjs'); +const { skipStory } = require('./story.cjs'); +const { shortPolling } = require('./polling.cjs'); + +var INTERVAL = 2000 +const MAX_INTERVAL = 512000 + +function getSignedUrl(options) { + return httpClient.get(new URL(constants[options.env].GET_SIGNED_URL_PATH, constants[options.env].BASE_URL).href, { + headers: { + projectToken: process.env.PROJECT_TOKEN + }}); +} + +async function compress(dirPath, uploadId) { + return new Promise(function (resolve, reject) { + // create a file to stream archive data to. + const output = fs.createWriteStream('storybook-static.zip', {autoClose: true, emitClose: false}); + const archive = archiver('zip', { + zlib: { level: 9 } // Sets the compression level. + }); + + output.on('end', function() { + console.log('Data has been drained'); + }); + + output.on('finish', function() { + resolve(); + }); + + // Catch warnings (ie stat failures and other non-blocking errors) + archive.on('warning', function(err) { + if (err.code === 'ENOENT') { + console.log('Warning: ', err) + } else { + reject(err) + } + }); + + // Catch errors + archive.on('error', function(err) { + reject(err); + }); + + // pipe archive data to the file + archive.pipe(output); + // append files from a sub-directory and naming it `new-subdir` within the archive + archive.directory(dirPath, uploadId); + archive.finalize(); + }); +} + +function filterStories(dirPath, storybookConfig) { + let storyIds = []; + let stories = [] + if (fs.existsSync((`${dirPath}/stories.json`))){ + stories = JSON.parse(fs.readFileSync(`${dirPath}/stories.json`)).stories; + } else if(fs.existsSync((`${dirPath}/index.json`))){ + stories = JSON.parse(fs.readFileSync(`${dirPath}/index.json`)).entries; + } + + for (const [storyId, storyInfo] of Object.entries(stories)) { + if (!skipStory(storyInfo, storybookConfig)) { + storyIds.push(storyId); + } + } + if (storyIds.length === 0) { + console.log('[smartui] Error: No stories found'); + process.exit(constants.ERROR_CATCHALL); + } + console.log('[smartui] Stories found: ', storyIds.length); + console.log('[smartui] Number of stories rendered may differ based on the config file.'); + + return storyIds +} + +module.exports = { getSignedUrl, compress, filterStories }; diff --git a/src/storybookVendor/commands/utils/story.cjs b/src/storybookVendor/commands/utils/story.cjs new file mode 100644 index 0000000..670a987 --- /dev/null +++ b/src/storybookVendor/commands/utils/story.cjs @@ -0,0 +1,30 @@ +// Returns true or false if the story should be skipped based on include and exclude config +function skipStory(story, config) { + // skip story if it's docs for version 7 + if (story.parameters && story.parameters.docsOnly) { + return true; + } + + // skip story if it's docs for version 8 + if(story.type && story.type === 'docs'){ + return true; + } + + let matches = regexp => { + if (typeof regexp === 'string') { + let [, parsed, flags] = /^\/(.+)\/(\w+)?$/.exec(regexp) || []; + regexp = new RegExp(parsed ?? regexp, flags); + } + + return regexp?.test?.(story.name); + }; + + let include = [].concat(config?.include).filter(Boolean); + let exclude = [].concat(config?.exclude).filter(Boolean); + + let skip = include?.length ? !include.some(matches) : false; + if (!skip && !exclude?.some(matches)) return false; + return true; +}; + +module.exports = { skipStory }; \ No newline at end of file diff --git a/src/storybookVendor/commands/utils/validate.cjs b/src/storybookVendor/commands/utils/validate.cjs new file mode 100644 index 0000000..540eb35 --- /dev/null +++ b/src/storybookVendor/commands/utils/validate.cjs @@ -0,0 +1,341 @@ +const { httpClient } = require('./httpClient.cjs'); +var { constants } = require('./constants.cjs'); +const fs = require('fs'); +const { getLastCommit } = require('./git.cjs'); + +const MAX_RESOLUTIONS = 5 +const MIN_RESOLUTION_WIDTH = 320 +const MIN_RESOLUTION_HEIGHT = 320 +const MAX_RESOLUTION_WIDTH = 7680 +const MAX_RESOLUTION_HEIGHT = 7680 + +class ValidationError extends Error { + constructor(message) { + super(message); + this.name = 'ValidationError'; + } +} + +// Resolve PROJECT_NAME into a project token the same way the core CLI does, so +// `smartui storybook` accepts PROJECT_NAME (auto-creating the project) and is not +// limited to a pre-issued PROJECT_TOKEN. +async function resolveProjectToken(options) { + const { PROJECT_NAME, LT_USERNAME, LT_ACCESS_KEY } = process.env; + + if (!LT_USERNAME || !LT_ACCESS_KEY) { + console.log('[smartui] Error: PROJECT_NAME requires LT_USERNAME and LT_ACCESS_KEY to be set'); + process.exit(constants.ERROR_CATCHALL); + } + + let response; + try { + response = await httpClient.get(constants[options.env].TOKEN_VERIFY_URL, { + headers: { + projectName: PROJECT_NAME, + userName: LT_USERNAME, + accessKey: LT_ACCESS_KEY + } + }); + } catch (error) { + const errorMsg = error.response + ? (error.response.data && error.response.data.message) || error.message + : error.message; + console.log(`[smartui] Error: Cannot resolve PROJECT_NAME '${PROJECT_NAME}'. Error: `, errorMsg); + process.exit(constants.ERROR_CATCHALL); + } + + const body = (response.data && response.data.data) || response.data || {}; + if (!body.projectToken) { + console.log(`[smartui] Error: Cannot resolve PROJECT_NAME '${PROJECT_NAME}'; project token not received`); + process.exit(constants.ERROR_CATCHALL); + } + + process.env.PROJECT_TOKEN = body.projectToken; + if (body.message && body.message.includes('Project created successfully')) { + console.log(`[smartui] Project '${PROJECT_NAME}' created`); + } + console.log(`[smartui] Resolved PROJECT_NAME '${PROJECT_NAME}' to a project token`); +} + +async function validateProjectToken(options) { + if (!process.env.PROJECT_TOKEN && process.env.PROJECT_NAME) { + await resolveProjectToken(options); + } + + if (process.env.PROJECT_TOKEN) { + return httpClient.get(constants[options.env].AUTH_URL, { + headers: { + projectToken: process.env.PROJECT_TOKEN + } + }) + .then(function (response) { + console.log('[smartui] Project Token Validated'); + }) + .catch(function (error) { + if (error.response) { + console.log('[smartui] Error: Invalid Project Token'); + } else if (error.request) { + const errorMsg = error.code ? `${error.code}${error.message ? ' - ' + error.message : ''}` : (error.message || 'Unknown error'); + console.log('[smartui] Project Token not validated. Error: ', errorMsg); + } else { + const errorMsg = error.code ? `${error.code}${error.message ? ' - ' + error.message : ''}` : (error.message || 'Unknown error'); + console.log('[smartui] Project Token not validated. Error: ', errorMsg); + } + process.exit(constants.ERROR_CATCHALL); + }); + } + + console.log('[smartui] Error: No PROJECT_TOKEN or PROJECT_NAME set'); + process.exit(constants.ERROR_CATCHALL); +}; + +function validateStorybookUrl(url) { + let aboutUrl; + try { + aboutUrl = new URL('?path=/settings/about', url).href; + } catch (error) { + console.log('[smartui] Error: ', error.message) + process.exit(constants.ERROR_CATCHALL); + } + return httpClient.get(aboutUrl) + .then(function (response) { + console.log('[smartui] Connection to storybook established'); + }) + .catch(function (error) { + if (error.response) { + console.log('[smartui] Connection to storybook not established. Error: ', error.message); + } else if (error.request) { + console.log('[smartui] Connection to storybook not established. Error: ', error.message); + } else { + console.log('[smartui] Connection to storybook not established. Error: ', error.message); + } + process.exit(constants.ERROR_CATCHALL); + }); +}; + +async function validateStorybookDir(dir) { + // verify the directory exists + if (!fs.existsSync(dir)) { + console.log(`[smartui] Error: No directory found: ${dir}`); + process.exit(constants.ERROR_CATCHALL); + } + // Verify project.json and stories.json exist to confirm it's a storybook-static dir + if (!fs.existsSync(dir + '/index.html')) { + console.log(`[smartui] Given directory is not a storybook static directory. Error: No index.html found`); + process.exit(constants.ERROR_CATCHALL); + } + if (!fs.existsSync(dir + '/stories.json') && !fs.existsSync(dir + '/index.json')) { + console.log(`[smartui] Given directory is not a storybook static directory. Error: stories.json or index.json not found`); + process.exit(constants.ERROR_CATCHALL); + } + +}; + +async function validateLatestBuild(options) { + let commit = await getLastCommit(); + + // Build de-duplication keys off branch + commit. Outside a git repo there is nothing + // to de-duplicate against, and sending empty keys makes the API reject the request with + // an error that reads like an auth failure. Skip the check instead, matching how the + // core CLI skips "Fetching git repo details" when it is not a git repo. + if (!commit.branch || !commit.shortHash) { + console.log('[smartui] Not a git repository; skipping duplicate-build check.'); + console.log('[smartui] Run inside a git repo to enable build de-duplication by branch and commit.'); + return; + } + + return httpClient.get(new URL(constants[options.env].SB_BUILD_VALIDATE_PATH, constants[options.env].BASE_URL).href, { + headers: { + projectToken: process.env.PROJECT_TOKEN + }, + params: { + branch: commit.branch, + commitId: commit.shortHash + } + }) + .then(function (response) { + if (response.data.status === 'Failure') { + console.log(`[smartui] Build with commit '${commit.shortHash}' on branch '${commit.branch}' already exists.`); + console.log('[smartui] Use option --force-rebuild to forcefully push a new build.'); + process.exit(constants.ERROR_BUILD_ALREADY_EXISTS); + } + }) + .catch(function (error) { + // TODO: Add retries + console.log('[smartui] Cannot fetch latest build of the project. Error: ', error.message); + process.exit(constants.ERROR_CATCHALL); + }); +} + +function validateConfig(configFile) { + // Verify config file exists + if (!fs.existsSync(configFile)) { + console.log(`[smartui] Error: Config file ${configFile} not found.`); + process.exit(constants.ERROR_CATCHALL); + } + + // Parse JSON + let storybookConfig; + try { + storybookConfig = JSON.parse(fs.readFileSync(configFile)).storybook; + } catch (error) { + console.log('[smartui] Error: ', error.message); + process.exit(constants.ERROR_CATCHALL); + } + + try { + validateConfigBrowsers(storybookConfig.browsers); + let resolutions = storybookConfig.resolutions || storybookConfig.viewports + if (resolutions) { + storybookConfig.resolutions = validateConfigResolutions(resolutions); + } + storybookConfig.viewports = storybookConfig.resolutions; + let customViewports = storybookConfig.customViewports; + if (customViewports && customViewports.length > 0) { + validateCustomViewPorts(storybookConfig.customViewports) + } + if (!resolutions && (!customViewports || customViewports.length === 0)) { + console.log('[smartui] Error: No resolutions or customViewports found in config file'); + process.exit(constants.ERROR_CATCHALL); + } + } catch (error) { + console.log(`[smartui] Error: Invalid config, ${error.message}`); + process.exit(constants.ERROR_CATCHALL); + } + + // Sanity check waitForTimeout + if (!Object.hasOwn(storybookConfig, 'waitForTimeout')) { + storybookConfig.waitForTimeout = 0; + } else if (storybookConfig.waitForTimeout <= 0 || storybookConfig.waitForTimeout > 300000) { + console.log('[smartui] Warning: Invalid config, value of waitForTimeout must be > 0 and <= 300000'); + console.log('[smartui] If you do not wish to include waitForTimeout parameter, remove it from the config file.'); + storybookConfig.waitForTimeout = 0; + } + + return storybookConfig +} + +function validateTunnel(configFile) { + // Verify config file exists + if (!fs.existsSync(configFile)) { + console.log(`[smartui] Error: Config file ${configFile} not found.`); + process.exit(constants.ERROR_CATCHALL); + } + + let tunnelConfig; + try { + let config = JSON.parse(fs.readFileSync(configFile)); + tunnelConfig = config.tunnel || {}; + if (tunnelConfig && tunnelConfig.type && tunnelConfig.type != "manual") { + throw new ValidationError('Invalid tunnel type. Accepted type is `manual` only'); + } + } catch (error) { + console.log('[smartui] Error: ', error.message); + process.exit(constants.ERROR_CATCHALL); + } + + return tunnelConfig +} + +function validateConfigBrowsers(browsers) { + if (browsers.length == 0) { + throw new ValidationError('empty browsers list.'); + } + const set = new Set(); + for (let element of browsers) { + if (!constants.VALID_BROWSERS.includes(element.toLowerCase()) || set.has(element)) { + throw new ValidationError(`invalid or duplicate value for browser. Accepted browsers are ${constants.VALID_BROWSERS.join(',')}`); + } + set.add(element); + }; +} + +function validateConfigResolutions(resolutions) { + if (!Array.isArray(resolutions)) { + throw new ValidationError('Invalid viewports config. Please add atleast one viewport.'); + } + if (resolutions.length == 0) { + throw new ValidationError('Empty viewports list in config.'); + } + if (resolutions.length > 5) { + throw new ValidationError(`max resolutions: ${MAX_RESOLUTIONS}`); + } + let res = []; + resolutions.forEach(element => { + if (!Array.isArray(element) || element.length == 0 || element.length > 2) { + throw new ValidationError('Invalid elements in viewports config.'); + } + let width = element[0]; + let height = element[1]; + if (typeof width != 'number') { + width = Number(width); + } + if (typeof height != 'number') { + height = Number(height); + } + if (width && width < MIN_RESOLUTION_WIDTH || width > MAX_RESOLUTION_WIDTH) { + throw new ValidationError(`width must be > ${MIN_RESOLUTION_WIDTH}, < ${MAX_RESOLUTION_WIDTH}`); + } + if (height && (height < MIN_RESOLUTION_HEIGHT|| height > MAX_RESOLUTION_HEIGHT)) { + throw new ValidationError(`height must be > ${MIN_RESOLUTION_HEIGHT}, < ${MAX_RESOLUTION_HEIGHT}`); + } + res.push([width, height || 0]); + }); + + return res +} + + +function validateCustomViewPorts(customViewports) { + if (!Array.isArray(customViewports)) { + return + } + if (customViewports && customViewports.length == 0) { + return + } + customViewports.forEach(element => { + if (element.stories && element.stories.length !== 0 && element.exclude && element.exclude.length !== 0) { + throw new ValidationError('Cannot specify both stories and excludeStories in customViewports'); + } + if (element.styles) { + if (!element.styles?.width) { + throw new ValidationError('Missing width in styles. please check the config file'); + } + let width = element.styles.width; + let height = element.styles.height; + if (width && typeof width != 'number') { + width = Number(width); + } + if (height && typeof height != 'number') { + height = Number(height); + } + if (width && width < MIN_RESOLUTION_WIDTH || width > MAX_RESOLUTION_WIDTH) { + throw new ValidationError(`customViewports.styles width must be > ${MIN_RESOLUTION_WIDTH}, < ${MAX_RESOLUTION_WIDTH}`); + } + if (height && (height < MIN_RESOLUTION_HEIGHT || height > MAX_RESOLUTION_HEIGHT)) { + throw new ValidationError(`customViewports.styles height must be > ${MIN_RESOLUTION_HEIGHT}, < ${MAX_RESOLUTION_HEIGHT}`); + } + element.styles.width = width; + element.styles.height = height; + } else { + if (!element.waitForTimeout) { + throw new ValidationError('Missing styles and waitForTimeout. Specify either of them. please check the config file'); + } + } + + }); + return +} + +module.exports = { + ValidationError, + validateProjectToken, + validateStorybookUrl, + validateStorybookDir, + validateLatestBuild, + validateConfig, + validateConfigBrowsers, + validateConfigResolutions, + validateCustomViewPorts, + validateTunnel, +}; diff --git a/src/storybookVendor/index.cjs b/src/storybookVendor/index.cjs new file mode 100644 index 0000000..8753b0b --- /dev/null +++ b/src/storybookVendor/index.cjs @@ -0,0 +1,46 @@ +// Vendored, faithful relocation of @lambdatest/smartui-storybook v1.1.32. +// This preserves the PROVEN, shipping Storybook engine and its /storybook/* backend +// flow verbatim — it is only relocated into the unified smartui-cli binary so there +// is one `smartui` binary instead of two colliding ones. Behavior is unchanged. +// +// The action bodies below mirror the original package's index.js command actions +// (minus the standalone version banner / update check, which the host CLI owns). +// +// NOTE: modules are required lazily inside the functions and accessed via the module +// object (not top-level destructuring) so the bundled graph is fully initialized +// before any binding is read — this avoids esbuild capturing an export too early. + +// Mirrors index.js `storybook` action. +async function runStorybook(serve, options) { + const { storybook } = require('./commands/storybook.cjs'); + const validate = require('./commands/utils/validate.cjs'); + + options.env = options.env || 'prod'; + + // Reject an explicitly-empty --buildName, exactly as the original did. + if (options.buildName === '') { + const error = { + error: 'MISSING_BUILD_NAME', + message: 'The --buildName flag requires a value.', + }; + console.log(JSON.stringify(error, null, 2)); + process.exit(1); + } + + if (options.config) { + options.tunnel = validate.validateTunnel(options.config); + options.config = validate.validateConfig(options.config); + } + + await validate.validateProjectToken(options); + if (!options.forceRebuild) await validate.validateLatestBuild(options); + await storybook(serve, options); +} + +// Mirrors index.js `config create` action. +function createStorybookConfig(filepath) { + const { createConfig } = require('./commands/config.cjs'); + createConfig(filepath); +} + +module.exports = { runStorybook, createStorybookConfig }; diff --git a/src/tasks/exec.ts b/src/tasks/exec.ts index 520cafd..120d253 100644 --- a/src/tasks/exec.ts +++ b/src/tasks/exec.ts @@ -36,7 +36,7 @@ export default (ctx: Context): ListrTask { totalOutput += chunk; - task.output = chalk.gray(totalOutput); + task.output = ctx.env.SMARTUI_PRESERVE_EXEC_LOGS_COLOR ? totalOutput : chalk.gray(totalOutput); }) childProcess.stdout?.pipe(output); childProcess.stderr?.pipe(output); diff --git a/src/types.ts b/src/types.ts index 27f3a1e..b117df8 100644 --- a/src/types.ts +++ b/src/types.ts @@ -48,13 +48,22 @@ export interface Context { rejectionThreshold?: number; showRenderErrors?: boolean; customCSS?: string; + storybook?: StorybookConfig; }; uploadFilePath: string; webStaticConfig: WebStaticConfig; build: Build; git: Git; + storybook?: { + mode?: 'url' | 'dir'; + // URL mode: map of storyId -> { name, kind, url(iframe) } + stories?: Record; + // DIR mode: enumerated storyIds to render server-side + storyIds?: Array; + }; args: { - execCommand?: Array + execCommand?: Array; + storybookTarget?: string; } tunnelDetails: { tunnelPort: number; @@ -146,6 +155,7 @@ export interface Env { SHOW_RENDER_ERRORS: boolean; SMARTUI_SSE_URL: string; LT_SDK_SKIP_EXECUTION_LOGS: boolean; + SMARTUI_PRESERVE_EXEC_LOGS_COLOR: boolean; MAX_CONCURRENT_PROCESSING: number; DO_NOT_USE_USER_AGENT: boolean; CAPTURE_RENDERING_ERRORS: boolean; @@ -170,6 +180,14 @@ export interface Snapshot { xpath?: Array, coordinates?: Array }, + ignoreColors?: { + id?: Array, + class?: Array, + cssSelector?: Array, + xpath?: Array, + coordinates?: Array, + entireScreenshot?: boolean + }, element?: { id?: string, class?: string, @@ -209,8 +227,8 @@ export interface ProcessedSnapshot { dom: string, resources: Record, options: { - ignoreBoxes?: Record>>, - selectBoxes?: Record>> + ignoreBoxes?: Record>>, + selectBoxes?: Record>> } } @@ -297,6 +315,35 @@ export interface tunnelConfig { environment:string; } +export interface StorybookStory { + name: string; + kind?: string; + url: string; +} + +export interface StorybookCustomViewport { + stories?: Array; + exclude?: Array; + styles?: { width: number, height?: number }; + waitForTimeout?: number; +} + +export interface StorybookConfig { + browsers?: Array; + // [ [w] | [w,h] ] pairs; resolutions takes precedence over viewports + viewports?: Array<[number] | [number, number]>; + resolutions?: Array<[number] | [number, number]>; + waitForTimeout?: number; + include?: Array; + exclude?: Array; + customViewports?: Array; + useOnlyCustomViewports?: boolean; + backgroundTheme?: 'light' | 'dark' | 'both'; + useGlobals?: boolean; + lazyLoadedStories?: Array; + chunkSize?: number; +} + export interface FigmaWebConfig { autoDetectViewports: Array; configs: Array<{ figma_file_token: string, figma_ids: Array, screenshot_names:Array }>;