From 2d469b10d7be6f58ff10d5cba17576120920f514 Mon Sep 17 00:00:00 2001 From: kritagya-khanna Date: Sat, 5 Jul 2025 13:25:06 +0530 Subject: [PATCH 1/9] labubu iniial commit --- Labubu/repo/.babelrc | 12 + Labubu/repo/manifest.json | 29 + Labubu/repo/package-lock.json | 5471 +++++++++++++++++++ Labubu/repo/package.json | 34 + Labubu/repo/postcss.config.js | 6 + Labubu/repo/src/.babelrc | 12 + Labubu/repo/src/background.js | 150 + Labubu/repo/src/components/LabubuSearch.jsx | 143 + Labubu/repo/src/content.js | 248 + Labubu/repo/src/popup/Popup.jsx | 94 + Labubu/repo/src/popup/index.jsx | 18 + Labubu/repo/src/popup/popup.css | 0 Labubu/repo/src/popup/popup.html | 10 + Labubu/repo/src/styles/index.css | 3 + Labubu/repo/tailwind.config.js | 29 + Labubu/repo/webpack.config.js | 49 + 16 files changed, 6308 insertions(+) create mode 100644 Labubu/repo/.babelrc create mode 100644 Labubu/repo/manifest.json create mode 100644 Labubu/repo/package-lock.json create mode 100644 Labubu/repo/package.json create mode 100644 Labubu/repo/postcss.config.js create mode 100644 Labubu/repo/src/.babelrc create mode 100644 Labubu/repo/src/background.js create mode 100644 Labubu/repo/src/components/LabubuSearch.jsx create mode 100644 Labubu/repo/src/content.js create mode 100644 Labubu/repo/src/popup/Popup.jsx create mode 100644 Labubu/repo/src/popup/index.jsx create mode 100644 Labubu/repo/src/popup/popup.css create mode 100644 Labubu/repo/src/popup/popup.html create mode 100644 Labubu/repo/src/styles/index.css create mode 100644 Labubu/repo/tailwind.config.js create mode 100644 Labubu/repo/webpack.config.js diff --git a/Labubu/repo/.babelrc b/Labubu/repo/.babelrc new file mode 100644 index 000000000..4e9bcded2 --- /dev/null +++ b/Labubu/repo/.babelrc @@ -0,0 +1,12 @@ +{ + "presets": [ + ["@babel/preset-env", { + "targets": { + "chrome": "88" + } + }], + ["@babel/preset-react", { + "runtime": "automatic" + }] + ] +} \ No newline at end of file diff --git a/Labubu/repo/manifest.json b/Labubu/repo/manifest.json new file mode 100644 index 000000000..feda9c44d --- /dev/null +++ b/Labubu/repo/manifest.json @@ -0,0 +1,29 @@ +{ + "manifest_version": 3, + "name": "Labubu Extension", + "version": "1.0.0", + "description": "A Chrome extension for Labubu", + "permissions": [ + "tabs", + "activeTab", + "wootz", + "storage" + ], + "host_permissions": [ + "https://popmart.com/*" + ], + "action": { + "default_popup": "popup.html", + "default_title": "Labubu" + }, + "content_scripts": [ + { + "matches": [""], + "js": ["content.js"], + "run_at": "document_end" + } + ], + "background": { + "service_worker": "background.js" + } +} \ No newline at end of file diff --git a/Labubu/repo/package-lock.json b/Labubu/repo/package-lock.json new file mode 100644 index 000000000..d4adf1e93 --- /dev/null +++ b/Labubu/repo/package-lock.json @@ -0,0 +1,5471 @@ +{ + "name": "labubu-extension", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "labubu-extension", + "version": "0.1.0", + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@babel/core": "^7.22.0", + "@babel/preset-env": "^7.22.0", + "@babel/preset-react": "^7.22.0", + "@types/chrome": "^0.0.246", + "@types/node": "^24.0.10", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0", + "autoprefixer": "^10.4.0", + "babel-loader": "^9.1.0", + "copy-webpack-plugin": "^11.0.0", + "css-loader": "^6.8.0", + "html-webpack-plugin": "^5.5.0", + "postcss": "^8.4.0", + "postcss-loader": "^7.3.0", + "style-loader": "^3.3.0", + "tailwindcss": "^3.3.0", + "webpack": "^5.88.0", + "webpack-cli": "^5.1.0" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz", + "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz", + "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.0", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.6", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.0", + "@babel/types": "^7.28.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", + "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.28.0", + "@babel/types": "^7.28.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz", + "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.27.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz", + "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "regexpu-core": "^6.2.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", + "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "debug": "^4.4.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.10" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", + "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", + "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", + "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", + "dev": true, + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz", + "integrity": "sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.27.1", + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", + "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", + "dev": true, + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", + "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.28.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz", + "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz", + "integrity": "sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", + "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", + "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", + "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.0.tgz", + "integrity": "sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz", + "integrity": "sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.0.tgz", + "integrity": "sha512-IjM1IoJNw72AZFlj33Cu8X0q2XK/6AaVC3jQu+cgQ5lThWD5ajnuUAml80dqRmOhmPkTH8uAwnpMu9Rvj0LTRA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/traverse": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", + "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/template": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz", + "integrity": "sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", + "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz", + "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz", + "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", + "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz", + "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz", + "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", + "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.0.tgz", + "integrity": "sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", + "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", + "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", + "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", + "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz", + "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz", + "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz", + "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", + "dev": true, + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz", + "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.0.tgz", + "integrity": "sha512-LOAozRVbqxEVjSKfhGnuLoE4Kz4Oc5UJzuvFUhSsQzdCdaAQu06mG8zDv2GFSerM62nImUZ7K92vxnQcLSDlCQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", + "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", + "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", + "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", + "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.0.tgz", + "integrity": "sha512-VmaxeGOwuDqzLl5JUkIRM1X2Qu2uKGxHEQWh+cvvbl7JuJRgKGJSfsEF/bUaxFhJl/XAyxBe7q7qSuTbKFuCyg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.28.0", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.27.1", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.27.1", + "@babel/plugin-syntax-import-attributes": "^7.27.1", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.28.0", + "@babel/plugin-transform-async-to-generator": "^7.27.1", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.0", + "@babel/plugin-transform-class-properties": "^7.27.1", + "@babel/plugin-transform-class-static-block": "^7.27.1", + "@babel/plugin-transform-classes": "^7.28.0", + "@babel/plugin-transform-computed-properties": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-dotall-regex": "^7.27.1", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.0", + "@babel/plugin-transform-exponentiation-operator": "^7.27.1", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.27.1", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-modules-systemjs": "^7.27.1", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", + "@babel/plugin-transform-numeric-separator": "^7.27.1", + "@babel/plugin-transform-object-rest-spread": "^7.28.0", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.27.1", + "@babel/plugin-transform-private-property-in-object": "^7.27.1", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.28.0", + "@babel/plugin-transform-regexp-modifiers": "^7.27.1", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.27.1", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.27.1", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "core-js-compat": "^3.43.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.27.1.tgz", + "integrity": "sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-transform-react-display-name": "^7.27.1", + "@babel/plugin-transform-react-jsx": "^7.27.1", + "@babel/plugin-transform-react-jsx-development": "^7.27.1", + "@babel/plugin-transform-react-pure-annotations": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", + "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.0.tgz", + "integrity": "sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.10.tgz", + "integrity": "sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", + "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@types/chrome": { + "version": "0.0.246", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.246.tgz", + "integrity": "sha512-MxGxEomGxsJiL9xe/7ZwVgwdn8XVKWbPvxpVQl3nWOjrS0Ce63JsfzxUc4aU3GvRcUPYsfufHmJ17BFyKxeA4g==", + "dev": true, + "dependencies": { + "@types/filesystem": "*", + "@types/har-format": "*" + } + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true + }, + "node_modules/@types/filesystem": { + "version": "0.0.36", + "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.36.tgz", + "integrity": "sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA==", + "dev": true, + "dependencies": { + "@types/filewriter": "*" + } + }, + "node_modules/@types/filewriter": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.33.tgz", + "integrity": "sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==", + "dev": true + }, + "node_modules/@types/har-format": { + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.16.tgz", + "integrity": "sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==", + "dev": true + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "24.0.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.10.tgz", + "integrity": "sha512-ENHwaH+JIRTDIEEbDK6QSQntAYGtbvdDXnMXnZaZ6k13Du1dPMmprkEHIL7ok2Wl2aZevetwTAb5S+7yIF+enA==", + "dev": true, + "dependencies": { + "undici-types": "~7.8.0" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.3.23", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.23.tgz", + "integrity": "sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", + "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", + "dev": true, + "peerDependencies": { + "@types/react": "^18.0.0" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/autoprefixer": { + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/babel-loader": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", + "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", + "dev": true, + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", + "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.27.7", + "@babel/helper-define-polyfill-provider": "^0.6.5", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", + "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.25.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz", + "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001726", + "electron-to-chromium": "^1.5.173", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001726", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001726.tgz", + "integrity": "sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/core-js-compat": { + "version": "3.43.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.43.0.tgz", + "integrity": "sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA==", + "dev": true, + "dependencies": { + "browserslist": "^4.25.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.5.179", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.179.tgz", + "integrity": "sha512-UWKi/EbBopgfFsc5k61wFpV7WrnnSlSzW/e2XcBmS6qKYTivZlLtoll5/rdqRTxGglGHkmkW0j0pFNJG10EUIQ==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/enhanced-resolve": { + "version": "5.18.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz", + "integrity": "sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", + "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ] + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.3.tgz", + "integrity": "sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-loader": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz", + "integrity": "sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==", + "dev": true, + "dependencies": { + "cosmiconfig": "^8.3.5", + "jiti": "^1.20.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-nested/node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regexpu-core": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.12.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "dev": true, + "dependencies": { + "jsesc": "~3.0.2" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/schema-utils": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/style-loader": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", + "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", + "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.6", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tapable": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", + "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.43.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz", + "integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.14.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, + "optional": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", + "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==", + "dev": true + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "node_modules/watchpack": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", + "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.99.9", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.9.tgz", + "integrity": "sha512-brOPwM3JnmOa+7kd3NsmOUOwbDAj8FT9xDsG3IW0MgbN9yZV7Oi/s/+MNQ/EcSMqw7qfoRyXPoeEWT8zLVdVGg==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.2", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.11", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", + "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yaml": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "dev": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, + "node_modules/yocto-queue": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", + "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/Labubu/repo/package.json b/Labubu/repo/package.json new file mode 100644 index 000000000..2236f31ce --- /dev/null +++ b/Labubu/repo/package.json @@ -0,0 +1,34 @@ +{ + "name": "labubu-extension", + "version": "0.1.0", + "description": "Labubu browser extension", + "main": "index.js", + "scripts": { + "build": "webpack --mode production", + "dev": "webpack --mode development --watch" + }, + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/chrome": "^0.0.246", + "@types/node": "^24.0.10", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0", + "autoprefixer": "^10.4.0", + "babel-loader": "^9.1.0", + "@babel/core": "^7.22.0", + "@babel/preset-env": "^7.22.0", + "@babel/preset-react": "^7.22.0", + "copy-webpack-plugin": "^11.0.0", + "css-loader": "^6.8.0", + "html-webpack-plugin": "^5.5.0", + "postcss": "^8.4.0", + "postcss-loader": "^7.3.0", + "style-loader": "^3.3.0", + "tailwindcss": "^3.3.0", + "webpack": "^5.88.0", + "webpack-cli": "^5.1.0" + } +} diff --git a/Labubu/repo/postcss.config.js b/Labubu/repo/postcss.config.js new file mode 100644 index 000000000..0cc9a9ded --- /dev/null +++ b/Labubu/repo/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} \ No newline at end of file diff --git a/Labubu/repo/src/.babelrc b/Labubu/repo/src/.babelrc new file mode 100644 index 000000000..4e9bcded2 --- /dev/null +++ b/Labubu/repo/src/.babelrc @@ -0,0 +1,12 @@ +{ + "presets": [ + ["@babel/preset-env", { + "targets": { + "chrome": "88" + } + }], + ["@babel/preset-react", { + "runtime": "automatic" + }] + ] +} \ No newline at end of file diff --git a/Labubu/repo/src/background.js b/Labubu/repo/src/background.js new file mode 100644 index 000000000..e43003e50 --- /dev/null +++ b/Labubu/repo/src/background.js @@ -0,0 +1,150 @@ +const webContentsId = 27; +let countryCode = ''; + +// Function to destroy background WebContents +function destroyBackgroundWebContents() { + chrome.wootz.destroyBackgroundWebContents(webContentsId, (result) => { + if (result.success) { + console.log('Background WebContents destroyed'); + } + }); +} + +// Function to handle auth check result +function handleAuthCheck() { + setTimeout(() => { + chrome.tabs.sendMessage(webContentsId, {type: 'GET_CURRENT_URL'}, function(response) { + if (chrome.runtime.lastError) { + console.error('Error sending message:', chrome.runtime.lastError); + return; + } + + if (response) { + handleAuthenticationResult(response.url); + } + }); + }, 20000); +} + +// Function to handle authentication result based on URL +function handleAuthenticationResult(url) { + const expectedUrlPattern = `https://m.popmart.com/${countryCode.toLowerCase()}`; + const isAuthenticated = url && url.startsWith(expectedUrlPattern); + + if (isAuthenticated) { + console.log('Authentication successful'); + chrome.runtime.sendMessage({ + type: 'AUTH_SUCCESS', + url: url + }); + } else { + console.log('Authentication failed'); + handleFailedAuthentication(); + } +} + +// Function to handle failed authentication +function handleFailedAuthentication() { + const loginUrl = `https://popmart.com/${countryCode.toLowerCase()}/user/login`; + + chrome.tabs.create({ + url: loginUrl, + active: true + }, (tab) => { + chrome.runtime.sendMessage({ + type: 'AUTH_FAILED', + loginUrl: loginUrl + }); + }); +} + +chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { + console.log('🔵 Background: Received message:', message.type); + + switch (message.type) { + case 'COUNTRY_CHANGED': + countryCode = message.country?.code || 'US'; + console.log('🔵 Background: Country changed to:', countryCode); + break; + + case 'CHECK_AUTH': + const authUrl = `https://popmart.com/${countryCode.toLowerCase()}/user/login`; + console.log('🔵 Background: Creating auth WebContents for:', authUrl); + + chrome.wootz.createBackgroundWebContents(webContentsId, authUrl, (result) => { + if (result.success) { + console.log('🔵 Background: Auth WebContents created successfully'); + handleAuthCheck(); + } else { + console.log('🔵 Background: Failed to create auth WebContents'); + } + }); + break; + + case 'SEARCH_LABUBU': + const searchQuery = message.query; + const formattedQuery = searchQuery.replace(/\s+/g, '-'); + const searchUrl = `https://popmart.com/us/search/${formattedQuery}`; + + console.log('🔵 Background: Starting search for:', searchQuery); + console.log('🔵 Background: Search URL:', searchUrl); + + chrome.wootz.createBackgroundWebContents(webContentsId, searchUrl, (result) => { + if (result.success) { + console.log('🔵 Background: Search WebContents created successfully'); + // Send message to content script to extract search results + setTimeout(() => { + console.log('🔵 Background: Sending EXTRACT_SEARCH_RESULTS to content script'); + chrome.tabs.sendMessage(webContentsId, { + type: 'EXTRACT_SEARCH_RESULTS', + searchQuery: searchQuery + }, function(response) { + if (chrome.runtime.lastError) { + console.error('🔵 Background: Error extracting search results:', chrome.runtime.lastError); + sendResponse({ success: false, error: 'Failed to extract results' }); + return; + } + + console.log('🔵 Background: Received search results:', response); + if (response && response.success) { + sendResponse({ + success: true, + results: response.results, + searchQuery: searchQuery + }); + } else { + sendResponse({ + success: false, + error: response?.error || 'No results found' + }); + } + }); + }, 3000); // Wait for page to load + } else { + console.log('🔵 Background: Failed to create search WebContents'); + sendResponse({ success: false, error: 'Failed to create search WebContents' }); + } + }); + return true; // Keep message channel open for async response + + case 'RETRY_AUTH': + console.log('🔵 Background: Retrying authentication'); + destroyBackgroundWebContents(); + setTimeout(() => { + const authUrl = `https://popmart.com/${countryCode.toLowerCase()}/user/login`; + chrome.wootz.createBackgroundWebContents(webContentsId, authUrl, (result) => { + if (result.success) { + console.log('🔵 Background: New background WebContents created for retry'); + handleAuthCheck(); + } + }); + }, 2000); + break; + + case 'DESTROY_WEB_CONTENTS': + console.log('🔵 Background: Destroying WebContents'); + destroyBackgroundWebContents(); + sendResponse({status: 'destroying'}); + break; + } +}); diff --git a/Labubu/repo/src/components/LabubuSearch.jsx b/Labubu/repo/src/components/LabubuSearch.jsx new file mode 100644 index 000000000..d83007f55 --- /dev/null +++ b/Labubu/repo/src/components/LabubuSearch.jsx @@ -0,0 +1,143 @@ +import React, { useState } from 'react'; + +const LabubuSearch = ({ onBack }) => { + const [searchQuery, setSearchQuery] = useState(''); + const [searchResults, setSearchResults] = useState([]); + const [isLoading, setIsLoading] = useState(false); + const [error, setError] = useState(''); + + const handleSearch = async () => { + if (!searchQuery.trim()) { + console.log('🔴 Search: Empty search query'); + setError('Please enter a search query'); + return; + } + + console.log('🔴 Search: Starting search for:', searchQuery); + setIsLoading(true); + setError(''); + setSearchResults([]); + + try { + console.log('🔴 Search: Sending SEARCH_LABUBU message to background'); + const response = await chrome.runtime.sendMessage({ + type: 'SEARCH_LABUBU', + query: searchQuery.trim() + }); + + console.log('🔴 Search: Received response:', response); + + if (response.success) { + console.log('🔴 Search: Search successful, found', response.results.length, 'results'); + setSearchResults(response.results); + } else { + console.log('🔴 Search: Search failed:', response.error); + setError(response.error || 'Search failed'); + } + } catch (error) { + console.error('🔴 Search: Search error:', error); + setError('Failed to perform search'); + } finally { + setIsLoading(false); + console.log('🔴 Search: Search completed'); + } + }; + + const handleKeyPress = (e) => { + if (e.key === 'Enter') { + console.log('🔴 Search: Enter key pressed, triggering search'); + handleSearch(); + } + }; + + return ( +
+
+

🔍 Labubu Search

+ +
+ +
+
+ setSearchQuery(e.target.value)} + onKeyPress={handleKeyPress} + className="flex-1 px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent" + /> + +
+ + {error && ( +
+ {error} +
+ )} + + {searchResults.length > 0 && ( +
+

+ Top Results for "{searchQuery}" +

+ {searchResults.map((result) => ( +
+
+ {result.image && ( + {result.name} e.target.style.display = 'none'} + /> + )} +
+

+ {result.name} +

+
+

+ {result.price} +

+ {result.availability && ( + + {result.availability} + + )} +
+ + View Product → + +
+
+
+ ))} +
+ )} +
+
+ ); +}; + +export default LabubuSearch; \ No newline at end of file diff --git a/Labubu/repo/src/content.js b/Labubu/repo/src/content.js new file mode 100644 index 000000000..28181eef7 --- /dev/null +++ b/Labubu/repo/src/content.js @@ -0,0 +1,248 @@ +console.log('Content script loaded'); +console.log('Current page URL:', window.location.href); +console.log('Document ready state:', document.readyState); + +class ContentScript { + constructor() { + this.isLoggedIn = false; + this.setupMessageListener(); + + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', () => { + setTimeout(() => this.checkLoginStatusAndNotify(), 2000); + }); + } else { + setTimeout(() => this.checkLoginStatusAndNotify(), 2000); + } + } + + async checkLoginStatusAndNotify() { + await this.checkLoginStatus(); + this.notifyReady(); + } + + async checkLoginStatus() { + try { + const loginIndicators = [ + '.user-profile', + '.account-menu', + '.logout-button', + '[data-testid="user-menu"]', + '.user-avatar' + ]; + + const isLoggedIn = loginIndicators.some(selector => + document.querySelector(selector) !== null + ); + + this.isLoggedIn = isLoggedIn; + console.log('Login status checked:', this.isLoggedIn); + + return this.isLoggedIn; + } catch (error) { + console.error('Error checking login status:', error); + return false; + } + } + + notifyReady() { + chrome.runtime.sendMessage({ + action: 'CONTENT_SCRIPT_READY', + isLoggedIn: this.isLoggedIn, + url: window.location.href + }); + } + + setupMessageListener() { + chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { + console.log('🟢 Content: Received message:', message.type); + + switch (message.type) { + case 'GET_CURRENT_URL': + const currentUrl = window.location.href; + console.log('🟢 Content: Returning current URL:', currentUrl); + sendResponse({ + url: currentUrl, + isLoggedIn: this.isLoggedIn + }); + break; + + case 'CHECK_LOGIN_STATUS': + console.log('🟢 Content: Checking login status'); + this.checkLoginStatus().then(() => { + sendResponse({ + isLoggedIn: this.isLoggedIn, + url: window.location.href + }); + }); + break; + + case 'EXTRACT_SEARCH_RESULTS': + console.log('🟢 Content: Extracting search results for:', message.searchQuery); + this.extractSearchResults(message.searchQuery).then((results) => { + console.log('🟢 Content: Successfully extracted', results.length, 'results'); + sendResponse({ + success: true, + results: results + }); + }).catch((error) => { + console.error('🟢 Content: Error extracting results:', error.message); + sendResponse({ + success: false, + error: error.message + }); + }); + break; + + default: + console.log('🟢 Content: Unknown message type:', message.type); + sendResponse({error: 'Unknown message type'}); + } + + return true; + }); + } + + async extractSearchResults(searchQuery) { + try { + console.log('🟢 Content: Starting search result extraction'); + + // Wait for search results to load using the actual Popmart selectors + console.log('🟢 Content: Waiting for product elements to load...'); + await this.waitForElement('.index_productItemContainer__rDwtr, .product-item, .search-result, [data-testid="product-card"]', 10000); + console.log('🟢 Content: Product elements found'); + + // Look for product cards/items with actual Popmart selectors first + const productSelectors = [ + '.index_productItemContainer__rDwtr', // Actual Popmart selector + '.product-item', + '.search-result', + '[data-testid="product-card"]', + '.product-card', + '.item-card' + ]; + + let products = []; + + for (const selector of productSelectors) { + const elements = document.querySelectorAll(selector); + console.log('🟢 Content: Found', elements.length, 'elements with selector:', selector); + if (elements.length > 0) { + products = Array.from(elements).slice(0, 5); // Get top 5 results + console.log('🟢 Content: Using selector:', selector); + break; + } + } + + if (products.length === 0) { + console.log('🟢 Content: No products found with any selector'); + throw new Error('No search results found'); + } + + console.log('🟢 Content: Processing', products.length, 'products'); + + const results = products.map((product, index) => { + // Extract product information using actual Popmart selectors + const nameElement = product.querySelector('.index_itemTitle__WaT6_, .index_itemSubTitle__mX6v_, .product-name, .item-name, h3, h4, .title'); + const priceElement = product.querySelector('.index_itemPrice__AQoMy, .price, .product-price, .item-price'); + const imageElement = product.querySelector('img'); + const linkElement = product.querySelector('a'); + + // Enhanced availability detection + const tagElement = product.querySelector('.index_tag__E64FE, .tag, .status, .availability'); + let availability = ''; + + // Check for availability in multiple ways + if (tagElement) { + availability = tagElement.textContent.trim(); + } else { + // Fallback: search for stock-related text in the entire product div + const productText = product.textContent.toLowerCase(); + if (productText.includes('out of stock') || productText.includes('sold out')) { + availability = 'OUT OF STOCK'; + } else if (productText.includes('in stock') || productText.includes('available')) { + availability = 'IN STOCK'; + } else if (productText.includes('pre-order') || productText.includes('preorder')) { + availability = 'PRE-ORDER'; + } + } + + // Get the full product name (subtitle + title) + const subTitleElement = product.querySelector('.index_itemSubTitle__mX6v_'); + const titleElement = product.querySelector('.index_itemTitle__WaT6_'); + let fullName = ''; + + if (subTitleElement && titleElement) { + fullName = `${subTitleElement.textContent.trim()} - ${titleElement.textContent.trim()}`; + } else if (nameElement) { + fullName = nameElement.textContent.trim(); + } else { + fullName = `Labubu Product ${index + 1}`; + } + + const result = { + id: index, + name: fullName, + price: priceElement?.textContent?.trim() || 'Price not available', + image: imageElement?.src || imageElement?.getAttribute('data-src') || '', + url: linkElement?.href || window.location.href, + availability: availability, + relevance: index + 1 // Top result has highest relevance + }; + + console.log('🟢 Content: Extracted product', index + 1, ':', result.name); + console.log('🟢 Content: Product details:', { + price: result.price, + availability: result.availability, + url: result.url + }); + return result; + }); + + console.log('🟢 Content: Successfully extracted', results.length, 'search results'); + return results; + + } catch (error) { + console.error('🟢 Content: Error extracting search results:', error); + throw error; + } + } + + async waitForElement(selector, timeout = 5000) { + console.log('🟢 Content: Waiting for element:', selector); + return new Promise((resolve, reject) => { + const element = document.querySelector(selector); + if (element) { + console.log('🟢 Content: Element found immediately:', selector); + resolve(element); + return; + } + + const observer = new MutationObserver(() => { + const element = document.querySelector(selector); + if (element) { + console.log('🟢 Content: Element found via observer:', selector); + observer.disconnect(); + resolve(element); + } + }); + + observer.observe(document.body, { + childList: true, + subtree: true + }); + + setTimeout(() => { + observer.disconnect(); + console.log('🟢 Content: Element not found within timeout:', selector); + reject(new Error(`Element ${selector} not found within ${timeout}ms`)); + }, timeout); + }); + } +} + +const contentScript = new ContentScript(); + +// Add a very visible log to confirm content script is running +console.log('🔵 LABUBU CONTENT SCRIPT INITIALIZED 🔵'); +console.log('🔵 If you see this, content script is working! 🔵'); diff --git a/Labubu/repo/src/popup/Popup.jsx b/Labubu/repo/src/popup/Popup.jsx new file mode 100644 index 000000000..8e857c489 --- /dev/null +++ b/Labubu/repo/src/popup/Popup.jsx @@ -0,0 +1,94 @@ +import React, { useEffect, useState } from "react"; +import LabubuSearch from "../components/LabubuSearch.jsx"; + +const Popup = () => { + const [isAuthenticated, setIsAuthenticated] = useState(false); + const [authStatus, setAuthStatus] = useState('idle'); + + useEffect(() => { + const handleMessage = (message) => { + switch (message.type) { + case 'AUTH_SUCCESS': + setIsAuthenticated(true); + setAuthStatus('success'); + break; + + case 'AUTH_FAILED': + setAuthStatus('failed'); + break; + } + }; + + chrome.runtime.onMessage.addListener(handleMessage); + + return () => { + chrome.runtime.onMessage.removeListener(handleMessage); + }; + }, []); + + const handleCheckAuth = () => { + setAuthStatus('loading'); + + chrome.runtime.sendMessage({ + type: 'CHECK_AUTH' + }); + }; + + const handleRetryAuth = () => { + setAuthStatus('loading'); + + chrome.runtime.sendMessage({ + type: 'RETRY_AUTH' + }); + }; + + const handleBackToLogin = () => { + setIsAuthenticated(false); + setAuthStatus('idle'); + }; + + if (isAuthenticated) { + return ( + + ); + } + + return ( +
+

Labubu Extension

+ + {authStatus === 'loading' && ( +
+
+

Checking authentication...

+
+ )} + + {authStatus === 'failed' && ( +
+

Authentication failed. Please try again.

+ +
+ )} + +
+ +
+
+ ); +}; + +export default Popup; \ No newline at end of file diff --git a/Labubu/repo/src/popup/index.jsx b/Labubu/repo/src/popup/index.jsx new file mode 100644 index 000000000..325a0193a --- /dev/null +++ b/Labubu/repo/src/popup/index.jsx @@ -0,0 +1,18 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import '../styles/index.css'; +import Popup from './Popup.jsx'; + +const rootElement = document.getElementById('root'); + +if (!rootElement) { + throw new Error('Root element not found'); +} + +const root = ReactDOM.createRoot(rootElement); + +root.render( + + + +); \ No newline at end of file diff --git a/Labubu/repo/src/popup/popup.css b/Labubu/repo/src/popup/popup.css new file mode 100644 index 000000000..e69de29bb diff --git a/Labubu/repo/src/popup/popup.html b/Labubu/repo/src/popup/popup.html new file mode 100644 index 000000000..f09cc41d2 --- /dev/null +++ b/Labubu/repo/src/popup/popup.html @@ -0,0 +1,10 @@ + + + + + Labubu Popup + + +
+ + \ No newline at end of file diff --git a/Labubu/repo/src/styles/index.css b/Labubu/repo/src/styles/index.css new file mode 100644 index 000000000..b5c61c956 --- /dev/null +++ b/Labubu/repo/src/styles/index.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/Labubu/repo/tailwind.config.js b/Labubu/repo/tailwind.config.js new file mode 100644 index 000000000..d81022257 --- /dev/null +++ b/Labubu/repo/tailwind.config.js @@ -0,0 +1,29 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: [ + "./src/**/*.{js,jsx}", + "./src/popup/**/*.{js,jsx}", + "./src/content/**/*.{js,jsx}", + "./src/background/**/*.{js,jsx}" + ], + theme: { + extend: { + // Custom colors for your Labubu theme + colors: { + labubu: { + primary: '#007bff', + secondary: '#6c757d', + accent: '#ff6b6b' + } + }, + // Custom sizing for popup + width: { + 'popup': '300px' + }, + height: { + 'popup': '400px' + } + }, + }, + plugins: [], +} \ No newline at end of file diff --git a/Labubu/repo/webpack.config.js b/Labubu/repo/webpack.config.js new file mode 100644 index 000000000..23b3a11a7 --- /dev/null +++ b/Labubu/repo/webpack.config.js @@ -0,0 +1,49 @@ +const path = require('path'); +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const CopyWebpackPlugin = require('copy-webpack-plugin'); + +module.exports = { + entry: { + popup: './src/popup/index.jsx', + content: './src/content.js', + background: './src/background.js' + }, + output: { + path: path.resolve(__dirname, 'dist'), + filename: '[name].js', + clean: true + }, + module: { + rules: [ + { + test: /\.(js|jsx)$/, + use: 'babel-loader', + exclude: /node_modules/ + }, + { + test: /\.css$/, + use: [ + 'style-loader', + 'css-loader', + 'postcss-loader' + ] + } + ] + }, + resolve: { + extensions: ['.jsx', '.js'] + }, + plugins: [ + new HtmlWebpackPlugin({ + template: './src/popup/popup.html', + filename: 'popup.html', + chunks: ['popup'] + }), + new CopyWebpackPlugin({ + patterns: [ + { from: 'manifest.json', to: 'manifest.json' }, + { from: 'src/popup/popup.css', to: 'popup.css' } + ] + }) + ] +}; \ No newline at end of file From dc6b2a443037113be0985e3de648a54da0d03020 Mon Sep 17 00:00:00 2001 From: kritagya-khanna Date: Mon, 7 Jul 2025 19:18:37 +0530 Subject: [PATCH 2/9] UI, login logout, product card --- Labubu/repo/package-lock.json | 53 +++- Labubu/repo/package.json | 10 +- Labubu/repo/src/background.js | 332 +++++++++++++++++--- Labubu/repo/src/components/LabubuSearch.jsx | 187 +++++++---- Labubu/repo/src/content.js | 311 +++++++++++++++--- Labubu/repo/src/popup/Popup.jsx | 164 ++++++++-- Labubu/repo/src/popup/index.jsx | 1 + Labubu/repo/src/popup/popup.css | 17 + Labubu/repo/src/popup/popup.html | 1 + 9 files changed, 886 insertions(+), 190 deletions(-) diff --git a/Labubu/repo/package-lock.json b/Labubu/repo/package-lock.json index d4adf1e93..ab1fa1e5a 100644 --- a/Labubu/repo/package-lock.json +++ b/Labubu/repo/package-lock.json @@ -8,8 +8,10 @@ "name": "labubu-extension", "version": "0.1.0", "dependencies": { + "framer-motion": "^10.16.4", "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "react-icons": "^4.10.1" }, "devDependencies": { "@babel/core": "^7.22.0", @@ -1645,6 +1647,21 @@ "node": ">=10.0.0" } }, + "node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "optional": true, + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "optional": true + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -3187,6 +3204,29 @@ "url": "https://github.com/sponsors/rawify" } }, + "node_modules/framer-motion": { + "version": "10.16.4", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-10.16.4.tgz", + "integrity": "sha512-p9V9nGomS3m6/CALXqv6nFGMuFOxbWsmaOrdmhyQimMIlLl3LC7h7l86wge/Js/8cRu5ktutS/zlzgR7eBOtFA==", + "dependencies": { + "tslib": "^2.4.0" + }, + "optionalDependencies": { + "@emotion/is-prop-valid": "^0.8.2" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -4415,6 +4455,14 @@ "react": "^18.3.1" } }, + "node_modules/react-icons": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.10.1.tgz", + "integrity": "sha512-/ngzDP/77tlCfqthiiGNZeYFACw85fUjZtLbedmJ5DTlNDIwETxhwBzdOJ21zj4iJdvc0J3y7yOsX3PpxAJzrw==", + "peerDependencies": { + "react": "*" + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -5079,8 +5127,7 @@ "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" }, "node_modules/typescript": { "version": "5.8.3", diff --git a/Labubu/repo/package.json b/Labubu/repo/package.json index 2236f31ce..4d43828b9 100644 --- a/Labubu/repo/package.json +++ b/Labubu/repo/package.json @@ -8,19 +8,21 @@ "dev": "webpack --mode development --watch" }, "dependencies": { + "framer-motion": "^10.16.4", "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "react-icons": "^4.10.1" }, "devDependencies": { + "@babel/core": "^7.22.0", + "@babel/preset-env": "^7.22.0", + "@babel/preset-react": "^7.22.0", "@types/chrome": "^0.0.246", "@types/node": "^24.0.10", "@types/react": "^18.2.0", "@types/react-dom": "^18.2.0", "autoprefixer": "^10.4.0", "babel-loader": "^9.1.0", - "@babel/core": "^7.22.0", - "@babel/preset-env": "^7.22.0", - "@babel/preset-react": "^7.22.0", "copy-webpack-plugin": "^11.0.0", "css-loader": "^6.8.0", "html-webpack-plugin": "^5.5.0", diff --git a/Labubu/repo/src/background.js b/Labubu/repo/src/background.js index e43003e50..ab327d2a4 100644 --- a/Labubu/repo/src/background.js +++ b/Labubu/repo/src/background.js @@ -1,5 +1,120 @@ const webContentsId = 27; -let countryCode = ''; +let countryCode = 'US'; // Set default country code to US +let authValidationInterval = null; // For periodic auth validation + +// Function to save authentication state to storage +function saveAuthState(isAuthenticated, userProfile = null) { + chrome.storage.local.set({ + isAuthenticated: isAuthenticated, + userProfile: userProfile, + lastAuthCheck: Date.now() + }, () => { + if (chrome.runtime.lastError) { + console.error('🔵 Background: Error saving auth state:', chrome.runtime.lastError); + } else { + console.log('🔵 Background: Auth state saved to storage:', { isAuthenticated, userProfile }); + } + }); +} + +// Function to get authentication state from storage +function getAuthState() { + return new Promise((resolve) => { + chrome.storage.local.get(['isAuthenticated', 'userProfile', 'lastAuthCheck'], (result) => { + if (chrome.runtime.lastError) { + console.error('🔵 Background: Error getting auth state:', chrome.runtime.lastError); + resolve({}); + } else { + console.log('🔵 Background: Retrieved auth state from storage:', result); + resolve(result); + } + }); + }); +} + +// Function to clear authentication state from storage +function clearAuthState() { + chrome.storage.local.remove(['isAuthenticated', 'userProfile', 'lastAuthCheck'], () => { + if (chrome.runtime.lastError) { + console.error('🔵 Background: Error clearing auth state:', chrome.runtime.lastError); + } else { + console.log('🔵 Background: Auth state cleared from storage'); + } + }); +} + +// Function to start periodic auth validation +function startPeriodicAuthValidation() { + // Clear any existing interval + if (authValidationInterval) { + clearInterval(authValidationInterval); + } + + // Check auth every hour (3600000 ms) + authValidationInterval = setInterval(async () => { + console.log('🔵 Background: Running periodic auth validation...'); + const storedState = await getAuthState(); + + if (storedState.isAuthenticated) { + // Perform a quick auth check to validate the stored state + const authUrl = `https://m.popmart.com/${countryCode.toLowerCase()}/account`; + try { + chrome.wootz.createBackgroundWebContents(webContentsId, authUrl, (result) => { + if (result.success) { + // Quick check - just verify we can access the account page + setTimeout(() => { + chrome.tabs.sendMessage(webContentsId, {type: 'GET_CURRENT_URL'}, function(response) { + if (chrome.runtime.lastError || !response) { + console.log('🔵 Background: Periodic auth validation failed - clearing stored state'); + clearAuthState(); + stopPeriodicAuthValidation(); + } else { + const expectedUrlPattern = `https://m.popmart.com/${countryCode.toLowerCase()}/account`; + const urlMatches = response.url && response.url.toLowerCase().startsWith(expectedUrlPattern); + + if (!urlMatches) { + console.log('🔵 Background: Periodic auth validation failed - URL mismatch'); + clearAuthState(); + stopPeriodicAuthValidation(); + } else { + console.log('🔵 Background: Periodic auth validation successful'); + // Update the last auth check timestamp + saveAuthState(true, storedState.userProfile); + } + } + // Clean up the WebContents + destroyBackgroundWebContents(); + }); + }, 5000); + } else { + console.log('🔵 Background: Periodic auth validation failed - could not create WebContents'); + clearAuthState(); + stopPeriodicAuthValidation(); + } + }); + } catch (error) { + console.error('🔵 Background: Error during periodic auth validation:', error); + clearAuthState(); + stopPeriodicAuthValidation(); + } + } else { + // No stored auth state, stop validation + console.log('🔵 Background: No stored auth state, stopping periodic validation'); + stopPeriodicAuthValidation(); + } + }, 3600000); // 1 hour + + console.log('🔵 Background: Started periodic auth validation (every hour)'); +} + +// Function to stop periodic auth validation +function stopPeriodicAuthValidation() { + if (authValidationInterval) { + clearInterval(authValidationInterval); + authValidationInterval = null; + console.log('🔵 Background: Stopped periodic auth validation'); + } +} // Function to destroy background WebContents function destroyBackgroundWebContents() { @@ -12,71 +127,165 @@ function destroyBackgroundWebContents() { // Function to handle auth check result function handleAuthCheck() { + console.log('🔵 Background: Starting auth check, will check URL in 10 seconds...'); setTimeout(() => { + console.log('🔵 Background: Checking URL after 10 seconds...'); chrome.tabs.sendMessage(webContentsId, {type: 'GET_CURRENT_URL'}, function(response) { if (chrome.runtime.lastError) { - console.error('Error sending message:', chrome.runtime.lastError); + console.error('🔵 Background: Error sending message:', chrome.runtime.lastError); + // If we can't get the URL, assume authentication failed + handleFailedAuthentication(); return; } if (response) { - handleAuthenticationResult(response.url); + console.log('🔵 Background: Received URL response:', response); + checkUrlAndLoginStatus(response.url); + } else { + console.log('🔵 Background: No response received, assuming authentication failed'); + handleFailedAuthentication(); } }); }, 20000); } -// Function to handle authentication result based on URL -function handleAuthenticationResult(url) { - const expectedUrlPattern = `https://m.popmart.com/${countryCode.toLowerCase()}`; - const isAuthenticated = url && url.startsWith(expectedUrlPattern); +// Function to check URL and login status with retry logic +function checkUrlAndLoginStatus(url) { + console.log('🔵 Background: Checking authentication for URL:', url); + + // Check if URL matches m.popmart.com/us (case insensitive) + const expectedUrlPattern = `https://m.popmart.com/${countryCode.toLowerCase()}/account`; + const urlMatches = url && url.toLowerCase().startsWith(expectedUrlPattern); + + console.log('🔵 Background: URL matches expected pattern:', urlMatches); + + const isAuthenticated = urlMatches; if (isAuthenticated) { - console.log('Authentication successful'); - chrome.runtime.sendMessage({ - type: 'AUTH_SUCCESS', - url: url + console.log('🔵 Background: Authentication successful - URL matches expected pattern'); + // Extract user profile and save auth state + chrome.tabs.sendMessage(webContentsId, {type: 'USER_PROFILE'}, function(response) { + const userProfile = response && response.success ? response.profile : null; + saveAuthState(true, userProfile); + // Start periodic validation when user is authenticated + startPeriodicAuthValidation(); + chrome.runtime.sendMessage({ + type: 'AUTH_SUCCESS', + url: url, + userProfile: userProfile + }); }); } else { - console.log('Authentication failed'); + console.log('🔵 Background: Authentication failed - URL does not match expected pattern'); handleFailedAuthentication(); } } // Function to handle failed authentication function handleFailedAuthentication() { - const loginUrl = `https://popmart.com/${countryCode.toLowerCase()}/user/login`; + console.log('🔵 Background: Authentication failed - sending AUTH_FAILED message'); + clearAuthState(); + stopPeriodicAuthValidation(); + chrome.runtime.sendMessage({ + type: 'AUTH_FAILED' + }); +} + +// Function to handle WebContents creation failure +function handleWebContentsCreationFailed(error) { + console.log('🔵 Background: WebContents creation failed:', error); + chrome.runtime.sendMessage({ + type: 'WEB_CONTENTS_FAILED', + error: error + }); +} + +// Function to open login tab +function openLoginTab() { + const loginUrl = `https://m.popmart.com/${countryCode.toLowerCase()}/user/login`; + console.log('🔵 Background: Opening login tab with URL:', loginUrl); chrome.tabs.create({ url: loginUrl, active: true - }, (tab) => { - chrome.runtime.sendMessage({ - type: 'AUTH_FAILED', - loginUrl: loginUrl - }); }); } +// Function to check if stored auth state is still valid (not older than 24 hours) +function isStoredAuthValid(lastAuthCheck) { + if (!lastAuthCheck) return false; + const twentyFourHours = 24 * 60 * 60 * 1000; // 24 hours in milliseconds + return (Date.now() - lastAuthCheck) < twentyFourHours; +} + +// Initialize periodic auth validation on startup +chrome.runtime.onStartup.addListener(() => { + console.log('🔵 Background: Extension started, checking for stored auth state...'); + getAuthState().then((storedState) => { + if (storedState.isAuthenticated && isStoredAuthValid(storedState.lastAuthCheck)) { + console.log('🔵 Background: Valid stored auth state found, starting periodic validation'); + startPeriodicAuthValidation(); + } else { + console.log('🔵 Background: No valid stored auth state found on startup'); + } + }); +}); + +// Initialize when extension is installed or updated +chrome.runtime.onInstalled.addListener((details) => { + console.log('🔵 Background: Extension installed/updated:', details.reason); + if (details.reason === 'install') { + console.log('🔵 Background: First time installation'); + // Clear any existing auth state on fresh install + clearAuthState(); + } else if (details.reason === 'update') { + console.log('🔵 Background: Extension updated, checking stored auth state...'); + getAuthState().then((storedState) => { + if (storedState.isAuthenticated && isStoredAuthValid(storedState.lastAuthCheck)) { + console.log('🔵 Background: Valid stored auth state found after update, starting periodic validation'); + startPeriodicAuthValidation(); + } else { + console.log('🔵 Background: No valid stored auth state found after update'); + } + }); + } +}); + chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { console.log('🔵 Background: Received message:', message.type); switch (message.type) { - case 'COUNTRY_CHANGED': - countryCode = message.country?.code || 'US'; - console.log('🔵 Background: Country changed to:', countryCode); - break; - case 'CHECK_AUTH': - const authUrl = `https://popmart.com/${countryCode.toLowerCase()}/user/login`; - console.log('🔵 Background: Creating auth WebContents for:', authUrl); - - chrome.wootz.createBackgroundWebContents(webContentsId, authUrl, (result) => { - if (result.success) { - console.log('🔵 Background: Auth WebContents created successfully'); - handleAuthCheck(); + // First check if we have a valid stored auth state + getAuthState().then((storedState) => { + if (storedState.isAuthenticated && isStoredAuthValid(storedState.lastAuthCheck)) { + console.log('🔵 Background: Using stored auth state'); + // Start periodic validation if not already running + startPeriodicAuthValidation(); + chrome.runtime.sendMessage({ + type: 'AUTH_SUCCESS', + url: `https://m.popmart.com/${countryCode.toLowerCase()}/account`, + userProfile: storedState.userProfile + }); } else { - console.log('🔵 Background: Failed to create auth WebContents'); + // No valid stored state, perform fresh auth check + console.log('🔵 Background: No valid stored auth state, performing fresh check'); + const authUrl = `https://m.popmart.com/${countryCode.toLowerCase()}/account`; + console.log('🔵 Background: Creating auth WebContents for:', authUrl); + try{ + chrome.wootz.createBackgroundWebContents(webContentsId, authUrl, (result) => { + if (result.success) { + console.log('🔵 Background: Auth WebContents created successfully'); + handleAuthCheck(); + } else { + console.log('🔵 Background: Failed to create auth WebContents'); + handleWebContentsCreationFailed('Failed to create WebContents'); + } + }); + } catch (error) { + console.error('🔵 Background: Error creating auth WebContents:', error); + handleWebContentsCreationFailed('Failed to create WebContents'); + } } }); break; @@ -84,11 +293,10 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { case 'SEARCH_LABUBU': const searchQuery = message.query; const formattedQuery = searchQuery.replace(/\s+/g, '-'); - const searchUrl = `https://popmart.com/us/search/${formattedQuery}`; + const searchUrl = `https://m.popmart.com/${countryCode.toLowerCase()}/search/${formattedQuery}`; console.log('🔵 Background: Starting search for:', searchQuery); console.log('🔵 Background: Search URL:', searchUrl); - chrome.wootz.createBackgroundWebContents(webContentsId, searchUrl, (result) => { if (result.success) { console.log('🔵 Background: Search WebContents created successfully'); @@ -119,32 +327,58 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { }); } }); - }, 3000); // Wait for page to load + }, 3000); } else { console.log('🔵 Background: Failed to create search WebContents'); sendResponse({ success: false, error: 'Failed to create search WebContents' }); } }); - return true; // Keep message channel open for async response - - case 'RETRY_AUTH': - console.log('🔵 Background: Retrying authentication'); - destroyBackgroundWebContents(); - setTimeout(() => { - const authUrl = `https://popmart.com/${countryCode.toLowerCase()}/user/login`; - chrome.wootz.createBackgroundWebContents(webContentsId, authUrl, (result) => { - if (result.success) { - console.log('🔵 Background: New background WebContents created for retry'); - handleAuthCheck(); - } - }); - }, 2000); - break; + return true; case 'DESTROY_WEB_CONTENTS': console.log('🔵 Background: Destroying WebContents'); destroyBackgroundWebContents(); sendResponse({status: 'destroying'}); break; + + case 'OPEN_LOGIN_TAB': + console.log('🔵 Background: Opening login tab'); + openLoginTab(); + break; + + case 'USER_PROFILE': + console.log('🔵 Background: Extracting user profile'); + // Send message to content script to extract user profile + chrome.tabs.sendMessage(webContentsId, { + type: 'USER_PROFILE' + }, function(response) { + if (chrome.runtime.lastError) { + console.error('🔵 Background: Error extracting user profile:', chrome.runtime.lastError); + sendResponse({ success: false, error: 'Failed to extract user profile' }); + return; + } + + console.log('🔵 Background: Received user profile:', response); + if (response && response.success) { + sendResponse({ + success: true, + profile: response.profile + }); + } else { + sendResponse({ + success: false, + error: response?.error || 'Failed to extract user profile' + }); + } + }); + return true; + + case 'LOGOUT': + console.log('🔵 Background: User logged out'); + clearAuthState(); + stopPeriodicAuthValidation(); + destroyBackgroundWebContents(); + sendResponse({success: true}); + break; } }); diff --git a/Labubu/repo/src/components/LabubuSearch.jsx b/Labubu/repo/src/components/LabubuSearch.jsx index d83007f55..533749d4f 100644 --- a/Labubu/repo/src/components/LabubuSearch.jsx +++ b/Labubu/repo/src/components/LabubuSearch.jsx @@ -1,142 +1,203 @@ import React, { useState } from 'react'; +import { motion, AnimatePresence } from 'framer-motion'; +import { FaCog } from 'react-icons/fa'; -const LabubuSearch = ({ onBack }) => { +const LABUBU_EMOJI = "🦊"; // Placeholder for Labubu mascot + +const resultVariants = { + hidden: { opacity: 0, y: 20 }, + visible: (i) => ({ opacity: 1, y: 0, transition: { delay: i * 0.08 } }), + exit: { opacity: 0, y: 20, transition: { duration: 0.2 } } +}; + +const LabubuSearch = ({ onBack, userProfile, onLogout }) => { const [searchQuery, setSearchQuery] = useState(''); const [searchResults, setSearchResults] = useState([]); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(''); + const [showSettings, setShowSettings] = useState(false); const handleSearch = async () => { if (!searchQuery.trim()) { - console.log('🔴 Search: Empty search query'); setError('Please enter a search query'); return; } - - console.log('🔴 Search: Starting search for:', searchQuery); setIsLoading(true); setError(''); setSearchResults([]); - try { - console.log('🔴 Search: Sending SEARCH_LABUBU message to background'); const response = await chrome.runtime.sendMessage({ type: 'SEARCH_LABUBU', query: searchQuery.trim() }); - - console.log('🔴 Search: Received response:', response); - if (response.success) { - console.log('🔴 Search: Search successful, found', response.results.length, 'results'); setSearchResults(response.results); } else { - console.log('🔴 Search: Search failed:', response.error); setError(response.error || 'Search failed'); } } catch (error) { - console.error('🔴 Search: Search error:', error); setError('Failed to perform search'); } finally { setIsLoading(false); - console.log('🔴 Search: Search completed'); } }; const handleKeyPress = (e) => { if (e.key === 'Enter') { - console.log('🔴 Search: Enter key pressed, triggering search'); handleSearch(); } }; return ( -
-
-

🔍 Labubu Search

+ + {/* Top mascot and title */} +
+ {/* Settings button */} +
+ + 🎀 +
+

Labubu Search

+

Find your favorite Popmart treasures!

- -
-
+
+
setSearchQuery(e.target.value)} onKeyPress={handleKeyPress} - className="flex-1 px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent" + className="flex-1 px-3 py-2 sm:px-4 sm:py-3 border border-pink-400 rounded-2xl focus:outline-none focus:ring-2 focus:ring-pink-400 focus:border-transparent bg-white/10 text-base sm:text-lg font-labubu shadow text-white placeholder-purple-200" /> - +
- {error && ( -
+ {error} -
+ )} - - {searchResults.length > 0 && ( -
-

- Top Results for "{searchQuery}" -

- {searchResults.map((result) => ( -
-
+ + {searchResults.length > 0 && ( + +

+ Top Results for "{searchQuery}" +

+ {searchResults.map((result, i) => ( + {result.image && ( - {result.name} e.target.style.display = 'none'} /> )}
-

+

{result.name}

-

+

{result.price}

- {result.availability && ( - - {result.availability} - - )} + + {result.stockStatus} +
- View Product →
-
-
- ))} -
- )} + + ))} + + )} +
-
+ + {/* Settings Modal */} + {showSettings && ( +
+
+ +
+ {userProfile?.avatar && ( + User Avatar e.target.style.display = 'none'} + /> + )} +
{userProfile?.username || 'Unknown User'}
+ +
+
+
+ )} + ); }; diff --git a/Labubu/repo/src/content.js b/Labubu/repo/src/content.js index 28181eef7..9b541d940 100644 --- a/Labubu/repo/src/content.js +++ b/Labubu/repo/src/content.js @@ -63,17 +63,6 @@ class ContentScript { console.log('🟢 Content: Returning current URL:', currentUrl); sendResponse({ url: currentUrl, - isLoggedIn: this.isLoggedIn - }); - break; - - case 'CHECK_LOGIN_STATUS': - console.log('🟢 Content: Checking login status'); - this.checkLoginStatus().then(() => { - sendResponse({ - isLoggedIn: this.isLoggedIn, - url: window.location.href - }); }); break; @@ -93,7 +82,21 @@ class ContentScript { }); }); break; - + case 'USER_PROFILE': + console.log('🟢 Content: Extracting user profile'); + this.extractUserProfile().then((profile) => { + console.log('🟢 Content: Successfully extracted user profile:', profile); + sendResponse({ + success: true, + profile: profile, + }); + }).catch((error) => { + sendResponse({ + success: false, + error: error.message, + }); + }); + return true; default: console.log('🟢 Content: Unknown message type:', message.type); sendResponse({error: 'Unknown message type'}); @@ -103,23 +106,237 @@ class ContentScript { }); } + async extractUserProfile() { + try { + console.log('🟢 Content: Extracting user profile'); + console.log('🟢 Content: Current URL:', window.location.href); + console.log('🟢 Content: Page title:', document.title); + + // Log all elements with class names containing 'user', 'profile', 'avatar', 'name' + const allElements = document.querySelectorAll('*'); + const relevantElements = Array.from(allElements).filter(el => { + const className = (el.className || '').toString(); + const id = (el.id || '').toString(); + return (className.includes('user') || className.includes('profile') || + className.includes('avatar') || className.includes('name') || + id.includes('user') || id.includes('profile') || + id.includes('avatar') || id.includes('name')); + }); + + console.log('🟢 Content: Found relevant elements:', relevantElements.map(el => ({ + tagName: el.tagName, + className: (el.className || '').toString(), + id: (el.id || '').toString(), + textContent: (el.textContent || '').substring(0, 50) + }))); + + // Try multiple selectors for user profile elements + const userProfileSelectors = [ + '.index_userTop__MEym8', + '.user-profile', + '.account-menu', + '.user-menu', + '[data-testid="user-menu"]', + '.user-info', + '.profile-section' + ]; + + let userProfile = null; + for (const selector of userProfileSelectors) { + userProfile = document.querySelector(selector); + if (userProfile) { + console.log('🟢 Content: Found user profile with selector:', selector); + break; + } + } + + if (!userProfile) { + // If no specific profile element found, try to find avatar and username separately + console.log('🟢 Content: No specific user profile element found, searching for individual elements'); + return this.extractUserProfileFromIndividualElements(); + } + + console.log('🟢 Content: User profile element found:', userProfile); + + // Extract avatar image src + const avatarSelectors = [ + '.index_avatar__k4xgD', + '.user-avatar', + '.avatar', + 'img[alt*="avatar"]', + 'img[alt*="user"]', + '.profile-image' + ]; + + let avatarUrl = ''; + for (const selector of avatarSelectors) { + const avatarElement = userProfile.querySelector(selector); + if (avatarElement) { + const img = avatarElement.querySelector('img') || avatarElement; + if (img && img.src) { + avatarUrl = img.src; + console.log('🟢 Content: Found avatar with selector:', selector); + break; + } else if (avatarElement.style.backgroundImage && avatarElement.style.backgroundImage.startsWith('url(')) { + avatarUrl = avatarElement.style.backgroundImage.slice(5, -2); + console.log('🟢 Content: Found avatar background with selector:', selector); + break; + } + } + } + + // Extract username - try both selectors + const usernameSelectors = [ + '.index_name__2CdgQ', + '.index_nickname__pnxE6' + ]; + + let username = ''; + for (const selector of usernameSelectors) { + const usernameElement = userProfile.querySelector(selector); + console.log('🟢 Content: Trying username selector:', selector, 'Found:', !!usernameElement); + if (usernameElement) { + let rawText = usernameElement.textContent || ''; + console.log('🟢 Content: Username element text:', rawText); + let cleaned = rawText.trim(); + if (cleaned) { + // Split by   and take first element, then remove "Sign Out" if present + username = cleaned.replace(/sign out/gi, '').trim(); + console.log('🟢 Content: Found username with selector:', selector, 'Value:', username); + break; + } + } + } + + if (!username) { + console.log('🟢 Content: Username not found in profile element, trying individual search'); + const individualResult = await this.extractUserProfileFromIndividualElements(); + return { + avatar: avatarUrl || individualResult.avatar, + username: individualResult.username + }; + } + + const profile = { + avatar: avatarUrl, + username: username, + }; + console.log('🟢 Content: Extracted user profile:', profile); + return profile; + } catch (error) { + console.error('🟢 Content: Error extracting user profile:', error); + // Return a fallback profile + return { + avatar: '', + username: 'User' + }; + } + } + + async extractUserProfileFromIndividualElements() { + console.log('🟢 Content: Extracting user profile from individual elements'); + + // Search for avatar anywhere on the page + const avatarSelectors = [ + 'img[alt*="avatar"]', + 'img[alt*="user"]', + '.avatar img', + '.user-avatar img', + '.profile-image img', + 'img[src*="avatar"]', + 'img[src*="user"]' + ]; + + let avatarUrl = ''; + for (const selector of avatarSelectors) { + const avatarImg = document.querySelector(selector); + if (avatarImg && avatarImg.src) { + avatarUrl = avatarImg.src; + console.log('🟢 Content: Found avatar with selector:', selector); + break; + } + } + + // Search for username anywhere on the page + const usernameSelectors = [ + '.index_name__2CdgQ', + '.index_nickname__pnxE6', + '.username', + '.user-name', + '.profile-name', + '.account-name', + '[data-testid="username"]', + '.user-info .name', + '.profile .name' + ]; + + let username = ''; + for (const selector of usernameSelectors) { + const usernameElement = document.querySelector(selector); + console.log('🟢 Content: Trying individual username selector:', selector, 'Found:', !!usernameElement); + if (usernameElement) { + console.log('🟢 Content: Individual username element text:', usernameElement.textContent); + } + if (usernameElement && usernameElement.textContent.trim()) { + let rawText = usernameElement.textContent.trim(); + // Split by   and take first element, then remove "Sign Out" if present + username = rawText.split(' ')[0].replace(/sign out/gi, '').trim(); + console.log('🟢 Content: Found individual username with selector:', selector, 'Value:', username); + break; + } + } + + // If still no username, try to extract from page title or other common elements + if (!username) { + const pageTitle = document.title || ''; + if (pageTitle && (pageTitle.includes('Account') || pageTitle.includes('Profile'))) { + // Try to extract username from page title or other elements + const possibleUsernameElements = document.querySelectorAll('h1, h2, h3, .title, .heading'); + for (const element of possibleUsernameElements) { + const text = element.textContent?.trim() || ''; + if (text && text.length > 0 && text.length < 50 && !text.includes('Account') && !text.includes('Profile')) { + username = text; + console.log('🟢 Content: Found username from general element:', text); + break; + } + } + } + } + + // Fallback username if nothing found + if (!username) { + username = 'User'; + console.log('🟢 Content: Using fallback username'); + } + + const profile = { + avatar: avatarUrl, + username: username, + }; + console.log('🟢 Content: Extracted user profile from individual elements:', profile); + return profile; + } + async extractSearchResults(searchQuery) { try { console.log('🟢 Content: Starting search result extraction'); + // Wait for search results to load using the actual Popmart selectors console.log('🟢 Content: Waiting for product elements to load...'); await this.waitForElement('.index_productItemContainer__rDwtr, .product-item, .search-result, [data-testid="product-card"]', 10000); console.log('🟢 Content: Product elements found'); + await this.waitForElement('.ant-tag','.index_tag__E64FE', 10000); // Look for product cards/items with actual Popmart selectors first const productSelectors = [ - '.index_productItemContainer__rDwtr', // Actual Popmart selector - '.product-item', - '.search-result', - '[data-testid="product-card"]', - '.product-card', - '.item-card' + '[data-pm-exposure-tracker-action="PopMartGlobalWebCommodityCardShow"]', + // '.index_productItemContainer__rDwtr', + // '.product-item', + // '.search-result', + // '[data-testid="product-card"]', + // '.product-card', + // '.item-card' ]; let products = []; @@ -128,7 +345,7 @@ class ContentScript { const elements = document.querySelectorAll(selector); console.log('🟢 Content: Found', elements.length, 'elements with selector:', selector); if (elements.length > 0) { - products = Array.from(elements).slice(0, 5); // Get top 5 results + products = Array.from(elements).slice(0, 5); console.log('🟢 Content: Using selector:', selector); break; } @@ -142,30 +359,35 @@ class ContentScript { console.log('🟢 Content: Processing', products.length, 'products'); const results = products.map((product, index) => { + console.log('🟢 Content: Processing product', index + 1); + console.log('🟢 Content: Product element:', product); + // Extract product information using actual Popmart selectors const nameElement = product.querySelector('.index_itemTitle__WaT6_, .index_itemSubTitle__mX6v_, .product-name, .item-name, h3, h4, .title'); const priceElement = product.querySelector('.index_itemPrice__AQoMy, .price, .product-price, .item-price'); const imageElement = product.querySelector('img'); - const linkElement = product.querySelector('a'); - // Enhanced availability detection - const tagElement = product.querySelector('.index_tag__E64FE, .tag, .status, .availability'); - let availability = ''; + // Check stock status using the tag container - // Check for availability in multiple ways - if (tagElement) { - availability = tagElement.textContent.trim(); - } else { - // Fallback: search for stock-related text in the entire product div - const productText = product.textContent.toLowerCase(); - if (productText.includes('out of stock') || productText.includes('sold out')) { - availability = 'OUT OF STOCK'; - } else if (productText.includes('in stock') || productText.includes('available')) { - availability = 'IN STOCK'; - } else if (productText.includes('pre-order') || productText.includes('preorder')) { - availability = 'PRE-ORDER'; + const stockTagContainer = product.querySelector('.index_tag__E64FE'); + console.log('🟢 Content: Stock tag container:', stockTagContainer); + let stockStatus = 'Available'; + if (stockTagContainer) { + const stockTag = stockTagContainer.querySelector('.ant-tag'); + if (stockTag && stockTag.textContent.trim() === 'OUT OF STOCK') { + stockStatus = 'Out of Stock'; } } + else { + stockStatus = 'balle balle'; + } + + // Find the link - it's the parent tag that wraps the entire product card + const linkElement = product.closest('a') || product.querySelector('a'); + const link = linkElement?.href || window.location.href; + + console.log('🟢 Content: Link element found:', linkElement); + console.log('🟢 Content: Link URL:', link); // Get the full product name (subtitle + title) const subTitleElement = product.querySelector('.index_itemSubTitle__mX6v_'); @@ -185,17 +407,22 @@ class ContentScript { name: fullName, price: priceElement?.textContent?.trim() || 'Price not available', image: imageElement?.src || imageElement?.getAttribute('data-src') || '', - url: linkElement?.href || window.location.href, - availability: availability, - relevance: index + 1 // Top result has highest relevance + url: link, + relevance: index + 1, + stockStatus: stockStatus, }; - console.log('🟢 Content: Extracted product', index + 1, ':', result.name); - console.log('🟢 Content: Product details:', { + // Add detailed logging for debugging + console.log('🟢 Content: Final extracted product', index + 1, ':', { + name: result.name, price: result.price, - availability: result.availability, - url: result.url + url: result.url, + stockStatus: result.stockStatus, + hasLink: !!linkElement, + linkElement: linkElement, + rawHtml: result.rawHtml }); + return result; }); diff --git a/Labubu/repo/src/popup/Popup.jsx b/Labubu/repo/src/popup/Popup.jsx index 8e857c489..8c630b07b 100644 --- a/Labubu/repo/src/popup/Popup.jsx +++ b/Labubu/repo/src/popup/Popup.jsx @@ -1,33 +1,68 @@ import React, { useEffect, useState } from "react"; import LabubuSearch from "../components/LabubuSearch.jsx"; +import { motion, AnimatePresence } from "framer-motion"; +import { FaBolt, FaLock, FaGift } from 'react-icons/fa'; + +const LABUBU_EMOJI = "🦊"; + +const popupVariants = { + hidden: { opacity: 0, y: 40 }, + visible: { opacity: 1, y: 0, transition: { type: "spring", stiffness: 120 } }, + exit: { opacity: 0, y: -40, transition: { duration: 0.2 } } +}; + +const statusVariants = { + hidden: { opacity: 0, scale: 0.9 }, + visible: { opacity: 1, scale: 1, transition: { type: "spring", stiffness: 200 } }, + exit: { opacity: 0, scale: 0.8, transition: { duration: 0.2 } } +}; const Popup = () => { const [isAuthenticated, setIsAuthenticated] = useState(false); const [authStatus, setAuthStatus] = useState('idle'); + const [showLoginPrompt, setShowLoginPrompt] = useState(false); + const [userProfile, setUserProfile] = useState(null); useEffect(() => { const handleMessage = (message) => { + console.log('🟡 Popup: Received message:', message.type); + switch (message.type) { case 'AUTH_SUCCESS': + console.log('🟡 Popup: Authentication successful'); setIsAuthenticated(true); setAuthStatus('success'); + setShowLoginPrompt(false); + // Set user profile if provided + if (message.userProfile) { + setUserProfile(message.userProfile); + console.log('🟡 Popup: User profile set:', message.userProfile); + } break; case 'AUTH_FAILED': + console.log('🟡 Popup: Authentication failed'); setAuthStatus('failed'); + setShowLoginPrompt(true); break; } }; chrome.runtime.onMessage.addListener(handleMessage); + // Don't automatically check authentication on mount + // User must click the button to start authentication + console.log('🟡 Popup: Popup mounted, waiting for user to click authentication button'); + return () => { chrome.runtime.onMessage.removeListener(handleMessage); }; }, []); const handleCheckAuth = () => { + console.log('🟡 Popup: Checking authentication...'); setAuthStatus('loading'); + setShowLoginPrompt(false); chrome.runtime.sendMessage({ type: 'CHECK_AUTH' @@ -35,59 +70,130 @@ const Popup = () => { }; const handleRetryAuth = () => { + console.log('🟡 Popup: Retrying authentication...'); setAuthStatus('loading'); + setShowLoginPrompt(false); chrome.runtime.sendMessage({ - type: 'RETRY_AUTH' + type: 'CHECK_AUTH' }); }; const handleBackToLogin = () => { setIsAuthenticated(false); setAuthStatus('idle'); + setShowLoginPrompt(false); }; - + + const handleOpenLoginTab = () => { + setShowLoginPrompt(false); + setAuthStatus('idle'); + + chrome.runtime.sendMessage({ + type: 'OPEN_LOGIN_TAB' + }); + }; + + const handleLogout = () => { + console.log('🟡 Popup: Logging out...'); + chrome.runtime.sendMessage({ + type: 'LOGOUT' + }, (response) => { + if (response && response.success) { + setIsAuthenticated(false); + setAuthStatus('idle'); + setShowLoginPrompt(false); + setUserProfile(null); + console.log('🟡 Popup: Logout successful'); + } + }); + }; + if (isAuthenticated) { return ( - ); } return ( -
-

Labubu Extension

- - {authStatus === 'loading' && ( -
-
-

Checking authentication...

+ +
+
+
+ + 🎀 +
+

Labubu Extension

+

Your playful Popmart helper!

- )} - - {authStatus === 'failed' && ( -
-

Authentication failed. Please try again.

+ + {authStatus === 'loading' && ( + +
+

Checking authentication...

+
+ )} + {showLoginPrompt && ( + +
+
+ 🔐 +
+

Login Required

+

Please login to Popmart to continue using the Labubu extension.

+
+ + +
+
+
+ )} +
+
- )} - -
-
-
+ ); }; diff --git a/Labubu/repo/src/popup/index.jsx b/Labubu/repo/src/popup/index.jsx index 325a0193a..b2780949e 100644 --- a/Labubu/repo/src/popup/index.jsx +++ b/Labubu/repo/src/popup/index.jsx @@ -1,6 +1,7 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; import '../styles/index.css'; +import './popup.css'; import Popup from './Popup.jsx'; const rootElement = document.getElementById('root'); diff --git a/Labubu/repo/src/popup/popup.css b/Labubu/repo/src/popup/popup.css index e69de29bb..59bf97cf1 100644 --- a/Labubu/repo/src/popup/popup.css +++ b/Labubu/repo/src/popup/popup.css @@ -0,0 +1,17 @@ +@import url('https://fonts.googleapis.com/css2?family=Fredoka:wght@400;700&display=swap'); + +.font-labubu { + font-family: 'Fredoka', 'Comic Sans MS', 'Comic Sans', cursive, sans-serif; +} +body{ + height: 100vh; + width: 100vw; +} + +.animate-float-slow { + animation: float-slow 6s ease-in-out infinite; +} +@keyframes float-slow { + 0%, 100% { transform: translateY(0); } + 50% { transform: translateY(-16px); } +} \ No newline at end of file diff --git a/Labubu/repo/src/popup/popup.html b/Labubu/repo/src/popup/popup.html index f09cc41d2..06dfa54c2 100644 --- a/Labubu/repo/src/popup/popup.html +++ b/Labubu/repo/src/popup/popup.html @@ -2,6 +2,7 @@ + Labubu Popup From 37964f58ca12ff10a7e850db5d1744bdb9564d19 Mon Sep 17 00:00:00 2001 From: kritagya-khanna Date: Mon, 14 Jul 2025 15:23:29 +0530 Subject: [PATCH 3/9] product detail page --- Labubu/repo/manifest.json | 7 +- Labubu/repo/src/.babelrc | 12 - Labubu/repo/src/background.js | 126 +++++++++ Labubu/repo/src/components/LabubuSearch.jsx | 95 +++++-- Labubu/repo/src/components/ProductDetails.jsx | 172 ++++++++++++ Labubu/repo/src/content.js | 258 +++++++++++++++++- 6 files changed, 636 insertions(+), 34 deletions(-) delete mode 100644 Labubu/repo/src/.babelrc create mode 100644 Labubu/repo/src/components/ProductDetails.jsx diff --git a/Labubu/repo/manifest.json b/Labubu/repo/manifest.json index feda9c44d..f9f63840c 100644 --- a/Labubu/repo/manifest.json +++ b/Labubu/repo/manifest.json @@ -18,9 +18,12 @@ }, "content_scripts": [ { - "matches": [""], + "matches": [ + "https://m.popmart.com/*", + "https://www.popmart.com/*" + ], "js": ["content.js"], - "run_at": "document_end" + "run_at": "document_idle" } ], "background": { diff --git a/Labubu/repo/src/.babelrc b/Labubu/repo/src/.babelrc deleted file mode 100644 index 4e9bcded2..000000000 --- a/Labubu/repo/src/.babelrc +++ /dev/null @@ -1,12 +0,0 @@ -{ - "presets": [ - ["@babel/preset-env", { - "targets": { - "chrome": "88" - } - }], - ["@babel/preset-react", { - "runtime": "automatic" - }] - ] -} \ No newline at end of file diff --git a/Labubu/repo/src/background.js b/Labubu/repo/src/background.js index ab327d2a4..5b142a18a 100644 --- a/Labubu/repo/src/background.js +++ b/Labubu/repo/src/background.js @@ -373,6 +373,46 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { }); return true; + case 'OPEN_PRODUCT_DETAILS': + const productUrl = message.url; + console.log('🔵 Background: Opening product details for:', productUrl); + + chrome.wootz.createBackgroundWebContents(webContentsId, productUrl, (result) => { + if (result.success) { + console.log('🔵 Background: Product details WebContents created successfully'); + // Send message to content script to extract product details + setTimeout(() => { + console.log('🔵 Background: Sending EXTRACT_PRODUCT_DETAILS to content script'); + chrome.tabs.sendMessage(webContentsId, { + type: 'EXTRACT_PRODUCT_DETAILS' + }, function(response) { + if (chrome.runtime.lastError) { + console.error('🔵 Background: Error extracting product details:', chrome.runtime.lastError); + sendResponse({ success: false, error: 'Failed to extract product details' }); + return; + } + + console.log('🔵 Background: Received product details:', response); + if (response && response.success) { + sendResponse({ + success: true, + productDetails: response.productDetails + }); + } else { + sendResponse({ + success: false, + error: response?.error || 'No product details found' + }); + } + }); + }, 5000); + } else { + console.log('🔵 Background: Failed to create product details WebContents'); + sendResponse({ success: false, error: 'Failed to create product details WebContents' }); + } + }); + return true; + case 'LOGOUT': console.log('🔵 Background: User logged out'); clearAuthState(); @@ -380,5 +420,91 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { destroyBackgroundWebContents(); sendResponse({success: true}); break; + + case 'CHECK_PRODUCT_IN_CART': { + const expectedProductName = message.productName; + console.log('🔵 Background: [CART] Received CHECK_PRODUCT_IN_CART for product:', expectedProductName); + const cartUrl = 'https://www.popmart.com/us/largeShoppingCart'; + chrome.wootz.createBackgroundWebContents(webContentsId, cartUrl, (result) => { + if (result.success) { + console.log('🔵 Background: [CART] Cart WebContents created successfully'); + // Wait for cart page to load + setTimeout(() => { + console.log('🔵 Background: [CART] Sending EXTRACT_CART_PRODUCTS to content script'); + chrome.tabs.sendMessage(webContentsId, { + type: 'EXTRACT_CART_PRODUCTS', + expectedProductName + }, function(response) { + if (chrome.runtime.lastError) { + console.error('🔵 Background: [CART] Error extracting cart products:', chrome.runtime.lastError); + sendResponse({ success: false, error: 'Failed to extract cart products' }); + return; + } + console.log('🔵 Background: [CART] Received cart products extraction response:', response); + sendResponse({ success: true, ...response }); + }); + }, 4000); // Wait 4s for cart page to load + } else { + console.log('🔵 Background: [CART] Failed to create cart WebContents'); + sendResponse({ success: false, error: 'Failed to create cart WebContents' }); + } + }); + return true; + } + + case 'CLICK_AND_CHECK_CART': { + const productUrl = message.url; + const productName = message.productName; + console.log('🔵 Background: [CART] CLICK_AND_CHECK_CART for product:', productName); + console.log('🔵 Background: [CART] Product URL:', productUrl); + + chrome.wootz.createBackgroundWebContents(webContentsId, productUrl, (result) => { + if (result.success) { + console.log('🔵 Background: [CART] Product details WebContents created successfully'); + // Send message to content script to click the Add to Cart button + setTimeout(() => { + console.log('🔵 Background: [CART] Sending CLICK_ADD_TO_CART to content script'); + chrome.tabs.sendMessage(webContentsId, { + type: 'CLICK_ADD_TO_CART', + productName: productName + }, function(response) { + if (chrome.runtime.lastError) { + console.error('🔵 Background: [CART] Error clicking Add to Cart button:', chrome.runtime.lastError); + sendResponse({ success: false, error: 'Failed to click Add to Cart button' }); + return; + } + + console.log('🔵 Background: [CART] Received click response:', response); + if (response && response.success) { + // After successful click, check the cart + setTimeout(() => { + console.log('🔵 Background: [CART] Checking cart after successful click'); + chrome.runtime.sendMessage({ + type: 'CHECK_PRODUCT_IN_CART', + productName: productName + }, (cartResponse) => { + console.log('🔵 Background: [CART] Cart check response:', cartResponse); + sendResponse({ + success: true, + clickSuccess: true, + cartResult: cartResponse + }); + }); + }, 4000); // Wait 4s for cart to update + } else { + sendResponse({ + success: false, + error: response?.error || 'Failed to click Add to Cart button' + }); + } + }); + }, 3000); // Wait 3s for page to load + } else { + console.log('🔵 Background: [CART] Failed to create product details WebContents'); + sendResponse({ success: false, error: 'Failed to create product details WebContents' }); + } + }); + return true; + } } }); diff --git a/Labubu/repo/src/components/LabubuSearch.jsx b/Labubu/repo/src/components/LabubuSearch.jsx index 533749d4f..0bfdd2ec3 100644 --- a/Labubu/repo/src/components/LabubuSearch.jsx +++ b/Labubu/repo/src/components/LabubuSearch.jsx @@ -1,6 +1,7 @@ import React, { useState } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import { FaCog } from 'react-icons/fa'; +import ProductDetails from './ProductDetails.jsx'; const LABUBU_EMOJI = "🦊"; // Placeholder for Labubu mascot @@ -16,6 +17,9 @@ const LabubuSearch = ({ onBack, userProfile, onLogout }) => { const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(''); const [showSettings, setShowSettings] = useState(false); + const [selectedProduct, setSelectedProduct] = useState(null); + const [productDetails, setProductDetails] = useState(null); + const [isLoadingProduct, setIsLoadingProduct] = useState(false); const handleSearch = async () => { if (!searchQuery.trim()) { @@ -48,6 +52,74 @@ const LabubuSearch = ({ onBack, userProfile, onLogout }) => { } }; + const handleProductClick = async (product) => { + setSelectedProduct(product); + setIsLoadingProduct(true); + setError(''); + + try { + const response = await chrome.runtime.sendMessage({ + type: 'OPEN_PRODUCT_DETAILS', + url: product.url + }); + + if (response.success) { + setProductDetails(response.productDetails); + } else { + setError(response.error || 'Failed to load product details'); + setSelectedProduct(null); + } + } catch (error) { + setError('Failed to load product details'); + setSelectedProduct(null); + } finally { + setIsLoadingProduct(false); + } + }; + + const handleBackToSearch = () => { + setSelectedProduct(null); + setProductDetails(null); + setIsLoadingProduct(false); + setError(''); + }; + + const handleNotifyWhenAvailable = async (productDetails) => { + // This would implement the notification logic + console.log('Setting notification for:', productDetails.name); + // You could store this in chrome.storage or send to a backend + }; + + // Show product details if a product is selected + if (selectedProduct && productDetails) { + return ( + + ); + } + + // Show loading state for product details + if (selectedProduct && isLoadingProduct) { + return ( + +
+
+

Loading product details...

+

Please wait while we fetch the product information

+
+
+ ); + } + return ( { animate="visible" exit="exit" variants={resultVariants} - className="border border-pink-400 rounded-2xl p-3 sm:p-4 bg-white/10 hover:bg-pink-400/10 shadow flex items-start space-x-3 sm:space-x-4 transition-colors" + whileHover={{ scale: 1.02 }} + whileTap={{ scale: 0.98 }} + onClick={() => handleProductClick(result)} + className="border border-pink-400 rounded-2xl p-3 sm:p-4 bg-white/10 hover:bg-pink-400/10 shadow flex items-start space-x-3 sm:space-x-4 transition-colors cursor-pointer" > {result.image && ( {

{result.price}

- - {result.stockStatus} -
-
- View Product → - +
+ Click to view details → +
))} diff --git a/Labubu/repo/src/components/ProductDetails.jsx b/Labubu/repo/src/components/ProductDetails.jsx new file mode 100644 index 000000000..38fd3cc3d --- /dev/null +++ b/Labubu/repo/src/components/ProductDetails.jsx @@ -0,0 +1,172 @@ +import React, { useState, useEffect } from 'react'; +import { motion, AnimatePresence } from 'framer-motion'; +import { FaArrowLeft, FaShoppingCart, FaBell, FaCheck, FaTimes } from 'react-icons/fa'; + +const ProductDetails = ({ productDetails, onBack, onNotifyWhenAvailable }) => { + const [isLoading, setIsLoading] = useState(false); + const [notificationSet, setNotificationSet] = useState(false); + const [checkingCart, setCheckingCart] = useState(false); + const [cartResult, setCartResult] = useState(null); + + const handleNotifyWhenAvailable = async () => { + setIsLoading(true); + try { + // Here you would implement the notification logic + // For now, we'll just simulate it + await new Promise(resolve => setTimeout(resolve, 1000)); + setNotificationSet(true); + } catch (error) { + console.error('Error setting notification:', error); + } finally { + setIsLoading(false); + } + }; + + const handleCheckInCart = async () => { + setCheckingCart(true); + setCartResult(null); + console.log('🟢 UI: [CART] Check in Cart button clicked.'); + // Send message to background to open product page in webcontent and click button + chrome.runtime.sendMessage({ + type: 'CLICK_AND_CHECK_CART', + url: productDetails.url, + productName: productDetails.name + }, (response) => { + setCheckingCart(false); + setCartResult(response); + if (response && response.success) { + console.log('🟢 UI: [CART] Cart check completed. See logs for details.'); + } else { + console.warn('🟢 UI: [CART] Cart check failed or not implemented.'); + } + }); + }; + + const isAvailable = productDetails.availabilityStatus === 'Available'; + + return ( + + {/* Header with back button */} +
+ + +

Product Details

+
+ +
+ {/* Product Image */} + + {productDetails.image ? ( + {productDetails.name} { + e.target.style.display = 'none'; + e.target.nextSibling.style.display = 'flex'; + }} + /> + ) : ( +
+ 🦊 +
+ )} + + {/* Fallback image placeholder */} +
+ 🦊 +
+
+ {/* Availability Status */} + + {productDetails.buyNowAvailable ? ( +
+ + + {productDetails.buyNowText || 'Available for Purchase'} + +
+ ) : ( +
+ + + {productDetails.outOfStockMessage || 'Out of Stock'} + +
+ )} +
+ + {/* Action Buttons */} + + {/* Buy Now Button - Always shown */} + productDetails.buyNowAvailable && window.open(productDetails.url, '_blank')} + disabled={!productDetails.buyNowAvailable} + > + + Buy Now + + + {/* Notify When Available Button - Always shown */} + + {isLoading ? ( +
+ ) : notificationSet ? ( + + ) : ( + + )} + + {notificationSet ? 'Notification Set!' : 'Notify When Available'} + +
+
+ +
+
+ ); +}; + +export default ProductDetails; \ No newline at end of file diff --git a/Labubu/repo/src/content.js b/Labubu/repo/src/content.js index 9b541d940..fbd500e93 100644 --- a/Labubu/repo/src/content.js +++ b/Labubu/repo/src/content.js @@ -97,6 +97,93 @@ class ContentScript { }); }); return true; + + case 'EXTRACT_PRODUCT_DETAILS': + console.log('🟢 Content: Extracting product details'); + this.extractProductDetails().then((productDetails) => { + console.log('🟢 Content: Successfully extracted product details:', productDetails); + sendResponse({ + success: true, + productDetails: productDetails, + }); + }).catch((error) => { + sendResponse({ + success: false, + error: error.message, + }); + }); + return true; + case 'EXTRACT_CART_PRODUCTS': + (async () => { + const expectedProductName = message.expectedProductName; + console.log('🟢 Content: [CART] Extracting cart products. Expected name:', expectedProductName); + const cartProducts = []; + let found = false; + const cartContainer = document.querySelector('.index_contentLeft__OnEFB'); + if (cartContainer) { + const nameNodes = cartContainer.querySelectorAll('.product_productName__TwvLM'); + nameNodes.forEach(node => { + const cartName = node.textContent.trim(); + cartProducts.push(cartName); + console.log('🟢 Content: [CART] Cart product name:', cartName); + console.log('🟢 Content: [CART] Product details page name:', expectedProductName); + if (cartName === expectedProductName) { + found = true; + console.log('🟢 Content: [CART] Product is AVAILABLE in cart.'); + } else { + console.log('🟢 Content: [CART] Product is NOT this one.'); + } + }); + if (!found) { + console.log('🟢 Content: [CART] Product is UNAVAILABLE in cart.'); + } + } else { + console.warn('🟢 Content: [CART] Cart container not found.'); + } + sendResponse({ + found, + cartProducts + }); + })(); + return true; + case 'CLICK_ADD_TO_CART': + (async () => { + console.log('🟢 Content: [CART] CLICK_ADD_TO_CART handler triggered.'); + this.waitForElement('.index_usBtn__2KlEx', 60000).then((addToCart) => { + console.log('🟢 Content: [CART] Add to Cart button found:', addToCart); + + let addToCartButton = addToCart.querySelector('.index_usBtn__2KlEx'); + + if (addToCartButton) { + console.log('🟢 Content: [CART] Add to Cart button found:', addToCartButton.outerHTML); + try { + const wasDisabled = addToCartButton.disabled; + console.log('🟢 Content: [CART] Button disabled:', wasDisabled); + if (!wasDisabled) { + // Dispatch touchend event for mobile + const touchEvent = new Event('touchend', { bubbles: true, cancelable: true }); + addToCartButton.dispatchEvent(touchEvent); + console.log('🟢 Content: [CART] Dispatched touchend event on Add to Cart button.'); + // Also dispatch click event for fallback/desktop + const clickEvent = new MouseEvent('click', { bubbles: true, cancelable: true, view: window }); + addToCartButton.dispatchEvent(clickEvent); + console.log('🟢 Content: [CART] Dispatched click event on Add to Cart button.'); + sendResponse({ success: true }); + } else { + console.warn('🟢 Content: [CART] Add to Cart button is disabled, not clicking.'); + sendResponse({ success: false, error: 'Add to Cart button is disabled.' }); + } + } catch (err) { + console.error('🟢 Content: [CART] Error clicking Add to Cart button:', err); + sendResponse({ success: false, error: err.message }); + } + } else { + console.warn('🟢 Content: [CART] Add to Cart button not found.'); + sendResponse({ success: false, error: 'Add to Cart button not found.' }); + } + }); + })(); + return true; default: console.log('🟢 Content: Unknown message type:', message.type); sendResponse({error: 'Unknown message type'}); @@ -326,7 +413,6 @@ class ContentScript { console.log('🟢 Content: Waiting for product elements to load...'); await this.waitForElement('.index_productItemContainer__rDwtr, .product-item, .search-result, [data-testid="product-card"]', 10000); console.log('🟢 Content: Product elements found'); - await this.waitForElement('.ant-tag','.index_tag__E64FE', 10000); // Look for product cards/items with actual Popmart selectors first const productSelectors = [ @@ -378,9 +464,7 @@ class ContentScript { stockStatus = 'Out of Stock'; } } - else { - stockStatus = 'balle balle'; - } + // Find the link - it's the parent tag that wraps the entire product card const linkElement = product.closest('a') || product.querySelector('a'); @@ -435,6 +519,172 @@ class ContentScript { } } + async extractProductDetails() { + try { + console.log('🟢 Content: Starting product details extraction'); + console.log('🟢 Content: Current URL:', window.location.href); + console.log('🟢 Content: Page title:', document.title); + + // Wait for the product container to be available + await this.waitForElement('.products_container__T0mpL', 60000); + const productContainer = document.querySelector('.products_container__T0mpL'); + console.log('🟢 Content: Product container found:', productContainer); + + // Extract product image - look for the main product image in the swiper + console.log('🟢 Content: Looking for product image...'); + let productImage = ''; + + // Try multiple selectors for the product image + const imageSelectors = [ + '.index_imgContainer___mAnP .adm-image-img', + '.index_imgContainer___mAnP img', + '.adm-swiper-slide-active img', + '.index_img__ZPq_y img', + '.adm-image-img', + '.index_imgContainer___mAnP .adm-image img', + '.adm-swiper-slide img', + 'img[src*="popmart.com"]', + 'img[alt*="doll"]', + 'img[alt*="plush"]' + ]; + + console.log('🟢 Content: Looking for product images with selectors:', imageSelectors); + + for (const selector of imageSelectors) { + const imageElements = document.querySelectorAll(selector); + console.log('🟢 Content: Found', imageElements.length, 'elements with selector:', selector); + + for (const imageElement of imageElements) { + console.log('🟢 Content: Checking image element:', { + src: imageElement.src, + alt: imageElement.alt, + className: imageElement.className, + parentClassName: imageElement.parentElement?.className + }); + + if (imageElement.src && imageElement.src.includes('popmart.com')) { + productImage = imageElement.src; + console.log('🟢 Content: Found product image with selector:', selector); + console.log('🟢 Content: Image URL:', productImage); + break; + } + } + + if (productImage) break; + } + + if (!productImage) { + console.log('🟢 Content: No product image found with any selector, waiting for images to load...'); + + // Wait for images to load if not found immediately + await new Promise((resolve) => { + const checkForImages = () => { + const allImages = document.querySelectorAll('img[src*="popmart.com"]'); + console.log('🟢 Content: Found', allImages.length, 'Popmart images after waiting'); + + for (const img of allImages) { + if (img.src && img.src.includes('popmart.com') && img.complete) { + productImage = img.src; + console.log('🟢 Content: Found product image after waiting:', productImage); + resolve(); + return; + } + } + + // If no images found after 3 seconds, give up + setTimeout(resolve, 3000); + }; + + setTimeout(checkForImages, 1000); + }); + } + + // Extract product name - look for the actual product title + console.log('🟢 Content: Looking for product name...'); + let productName = ''; + + // Try to find the product title in the breadcrumb or other title elements + const nameSelectors = [ + '.index_breadCrumb__dsPae span:last-child', + '.index_titleContainer__lPjts .index_title___0OsZ', + '.index_titleContainer__lPjts h1', + '.index_titleContainer__lPjts h2', + '.index_titleContainer__lPjts .index_itemText__2d10b', + '.index_titleContainer__lPjts', + '.index_titleBlock__stEbJ .index_title___0OsZ', + 'h1', + 'h2', + '.product-title', + '.item-title', + '[data-testid="product-title"]', + '.product-name' + ]; + + for (const selector of nameSelectors) { + const nameElement = document.querySelector(selector); + console.log('🟢 Content: Checking name selector:', selector, 'Found:', !!nameElement); + if (nameElement) { + console.log('🟢 Content: Name element text:', nameElement.textContent.trim()); + } + if (nameElement && nameElement.textContent.trim()) { + productName = nameElement.textContent.trim(); + console.log('🟢 Content: Found product name with selector:', selector); + console.log('🟢 Content: Product name:', productName); + break; + } + } + + // If no specific title found, try to extract from breadcrumb + if (!productName) { + const breadcrumbItems = document.querySelectorAll('.index_crumbItem__Ne_lT'); + if (breadcrumbItems.length > 0) { + const lastBreadcrumb = breadcrumbItems[breadcrumbItems.length - 1]; + const breadcrumbText = lastBreadcrumb.textContent.trim(); + if (breadcrumbText && breadcrumbText !== 'HOME' && breadcrumbText !== '/') { + productName = breadcrumbText; + console.log('🟢 Content: Using breadcrumb text as product name:', productName); + } + } + } + + let productPrice = ''; + const priceSelectors = [ + '.index_itemPrice__AQoMy', + '.price', + '.product-price', + '.item-price' + ]; + + for (const selector of priceSelectors) { + const priceElement = document.querySelector(selector); + if (priceElement && priceElement.textContent.trim()) { + productPrice = priceElement.textContent.trim(); + console.log('🟢 Content: Found product price with selector:', selector); + console.log('🟢 Content: Product price:', productPrice); + break; + } + } + + const productDetails = { + name: productName || 'Product', + image: productImage, + price: productPrice, + availabilityStatus: 'Unknown', // This will be updated by the cart check + url: window.location.href + }; + + console.log('🟢 Content: Extracted product details:', productDetails); + return productDetails; + + } catch (error) { + console.error('🟢 Content: Error extracting product details:', error); + throw error; + } + } + async getDOMContent(element) { + const serializer = new XMLSerializer(); + return serializer.serializeToString(element); +} async waitForElement(selector, timeout = 5000) { console.log('🟢 Content: Waiting for element:', selector); return new Promise((resolve, reject) => { From 11d874a5a1aae619b1c91d86891dcbc65701d76c Mon Sep 17 00:00:00 2001 From: kritagya-khanna Date: Fri, 18 Jul 2025 17:37:28 +0530 Subject: [PATCH 4/9] popmart add to cart automator --- Labubu/labubu automator.crx | Bin 0 -> 154998 bytes Labubu/repo/.gitignore | 2 + Labubu/repo/manifest.json | 22 +- Labubu/repo/package.json | 2 + Labubu/repo/postcss.config.js | 2 +- Labubu/repo/src/assets/icon.png | Bin 0 -> 47770 bytes Labubu/repo/src/background.js | 1196 +++++++++++++++-- Labubu/repo/src/components/CartManager.jsx | 293 ++++ .../repo/src/components/CountrySelector.jsx | 144 ++ Labubu/repo/src/components/LabubuSearch.jsx | 442 ++++-- Labubu/repo/src/components/ProductDetails.jsx | 294 ++-- Labubu/repo/src/content.js | 1055 +++++++-------- Labubu/repo/src/popup/Popup.jsx | 96 +- Labubu/repo/src/popup/popup.css | 8 +- Labubu/repo/src/styles/index.css | 244 ++++ Labubu/repo/webpack.config.js | 15 +- extensions.json | 17 + 17 files changed, 2779 insertions(+), 1053 deletions(-) create mode 100644 Labubu/labubu automator.crx create mode 100644 Labubu/repo/.gitignore create mode 100644 Labubu/repo/src/assets/icon.png create mode 100644 Labubu/repo/src/components/CartManager.jsx create mode 100644 Labubu/repo/src/components/CountrySelector.jsx diff --git a/Labubu/labubu automator.crx b/Labubu/labubu automator.crx new file mode 100644 index 0000000000000000000000000000000000000000..e13eaf81aec2e33098044eef74ac0ce9ad7ab381 GIT binary patch literal 154998 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%0AGl5QUkUZpeYF&m{f1e@o{=I=z(Vq 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

}bcueew(DK%Z?aImZIQNP)f;`7 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

%;C= za;4fZpcs(F?dIV7h|_p)2D)JR_^eJ+o_i2ZFM*I`4XXeIy-_+$KhMrzqK!a9m6V$Em6#RVn z9{$>Ulfb`20x7y^?J|G17r@3B|7cOn!k#nl3c>>YvPrB-IjN;hs^94xS$86Fgx!Ff zD~u((Y(!#5t`qhC9eiI&*LGHdDeZmLX8uWGdDu1XB3t*C19of$M>sQJC`_nM`?tKr zuVr>AZ2Ir9Ls1EE^E0&N^LzGkx-EBiEHX14#w;LvByc$1n-BwMQ4k9_n~cFAahRu3 zDz#lpl~ju$^_GV?^kN}pHKog`f~4*XhZWY$(E&wFWE{4Z(bmsH z14`Uiqw$x$_ZXIr4RBcNwz5;VwSRv?M&RZ@_6Q*9zW!oH*xfE>C8kH@WOdwa?8e#R zV(KhLg_TY)Di6_JQ;PI1a*Altc`3L*0<_cw8 z*v|ERrLp9tzzs|!a)j}15?c2~LN52%R&vpCHJM$zTnV%oBzt`gr zV-7fmkDs%iNNu1+JP1`J?VlAxoOWh5sEa4Xgkqvq_(fq6#+SP6xjIbhfz-&BAqX2J zkdPQbu26fn0f_PF#!E#Jg_wWxH*T{SRP76*`!S<#E2x+s^Gwl!&{xLfKKEywejCuY z1yZpe(##w7Q)#>jPbTP=Kt=Jc9(ke8&qI3ZJu%r^1^hIS=~_y7jUDsK^H!$iXON*# z9&68G3=t6V51B%lgs@nGSW7|^gFoz__1HwSTmHO_m}R;`X`Gd6JB3fKKCXWqX4QNG zdW7}n03qm|p^ej8F;-d`M3|0;@E+<|VT1j}&?ie>-kUEod#2lTFcJfI!Df;JHU$LR z5$A4d_^0=;%{Decn#dlk(1a=A>aSu0B!hxqb5Y;%l`+4Elfu1?Z{PEjAD z-@NJ5;Llp?==^X`{#tuLlNL#$ZmZ{klu-ry?(kdf$MDxxNe}1kvXF}(AQ8Ly5JAaw z_wmsOJJ$TTTTef9n!Ot}zuu-*vliJIRzx7N_>{G!Mp}t`aIwn)<)s~IX?wz0i?Ivrgy-bPOcuL39SU@|+<|WcjBpGT0)pnbpe`TFlha7SwtUByIXtbj^ibaD_U?Y%5)>R#&qKak z%b|qDp_B%2SJ zPI4{aS5(IKen4Rfu?>UbBElCO*^xzJ16(0Jo>p8ivmZ6DvIP3hq_!k=rhZFp$<^M$ zC(b>T{k4(NYYO#hJg>UcgnW3!AVK7oLB^3&HO9X8q`*|aDQR}`A-gHZD`!Jncifb> z2ALX0A4i6#_KM-@CrHbXWTB<7-LlYgg;P;ppz8|v`a;JYhD%>ZOMl|`2Y_aJ>iQdYljIU2n_PBcp0kUt|)oA6j&h6#?SH$&g}DqlA`Pp)A&+ zkzt29`R%UWaFjl4k6D=%&Zxab$+BXSOZaFtN3#viXtmWb!GHwTd(}NMQf^Vx=A1`E zYnpRjTz9wYoGc3K$hehTL=a0pYM?7J!m1^_8|twpufz;Wb9Ln(7vD&FqvGzHt}Bk4 z5Kj@hJKok*_btu&(Mtn2`aL*`5x$C^0Ewfgq$|)-W)OP%EMvREtbCF=*#8t=bFMb0X}IPdGfa9QUFn zV9A=sftMy25rIn6%VR}h;KF1yd;#`MB5<}Oop0_qkCoOn(E@&OnlQZY z$~-`1;qs(I><(p^dNFQY7Yn};Ce5l1U`aGEh1=870)7ZjR|f&e6?QU;>PvQXuZNHpR&bwlRY_)drG2Gk%b{eXmvv*TdhD zIK8WE8+CN^S|#6KTOs>OwqD>r@?63nHx7t8fgmqG_|+M?Be$-ux75IY5=B8Y_9tIm`JKdy<~X5ZQ71EVPg?X; z$V+{EnH;-Q&-Lf!ny{Bz*VoFJ2uGXP06+Pfb35mNuw?`mXzKNN;gMI*YqCGHQ?S4# z9JFf>kFS`GpRF%N!Z@3ul-1R2v?26bY^=Zh`G5S!mavl=9o&^Sv5Uu!GyL%Hs_;lC zvf1)~bFVvIDtCk8^K4p{W_uvIh)f**e^%zXoB3Zu_Ls*+$aw4)AnQ6HYXHIvur#4g#}q(s zJVAM~1xdW-M9s6r)(pRi(6O9qy{3}x3dGBW#tD*{EU<}dA@Rkjt*mGnY26xXdGltq z{m2(L>7py)M0s+4@qrBXL`m@&hVXa=&%9nzg%d%iRl#y$NPrSPoWBIZi5|jZ8XORM zP`-bk1A{-oR*0+%%k{t#R|0+46x%IR>?ZMCdN}Py*!f}I{m5y%cyqnmMS0PM~Y%JHV?x+SjgEvRzCo8x& zd3a2IfBcx~3}@^g)nZ1XM$-IxZ0LpIq+hp#3*!mCbd!x8@Q8OWA+nTO5i;8avnA;0 zoz~aEBGgc&t<`$?ZO_T;Z1x!y1N^?@f5yuk^|-eBvLV zB!3s2IAcTk2IBZo(W}{SjawLWh3#X>l5?|>5Q~-ppmoMp!Fx?ZO&%;q73FGfaWEZ{^h$y4*yE9Lb1> z8ZGJ)6|{zOxV0ABLP6egIu{m5tjQkCf~t~rs%K@UsFg{k_m@BaCBWLecCo|*c zti8ELruStkS-&vOfybbk!=S9jNiB6%3tV@z1+Gl~@b)Tat{PVg?&*qp;;Bxxz);i^TMa7(jl4io|Iez;oKpS- z>`1LwPhP+J;mz^)j~+caJ_b_s2`TRFwL=C*&%wNfjfVcs704$<;0JVGBR58Vup+C0 zTu5pc*yqUd9b`EUcEB`gTTycFZIvp(U03!%g$+GWed2-2oL$IXM8OhwqSQ~^CGG_N zGupOeInGlzPOy)owy&rJL~Z2=FM|ur)xW-0PjY|mYGTD}-zHteuxtlOw7z2Kv{sgz zl*bWc-^n^}XKtdWFAg8Sd35;d^_!QkUOfK((d%PaEx(h^ZEr7W=lG4^zc0Y!-9Y^D z@aXl^qhk>aF2DqBEP}bVt;AlmeT7UZ@NkFlr#9tEC<~S)Yl$2yvBoXcSFUHSZ+YGt z5Mn6T`Fgkyn}}g|o76 zLZ;;8Kr4)9II$NL2%#O<2frKP;!N==^??T=#=5FvI51RUrch!!X zd6Dl}=eo79>x(k%$KY+=+1V^74H*O2$w15>0gr&iKeK#mj-wl&BeXp|GhPPa68g*! zs8&UlX%c9#ZFvjP&dEhPDsQdYg_Pq^DMw{-rem*he8QzRK;$X=%^X17|NQaI(;KB7 z;fh4|P4s1yDT)od2$|g;#_;%PF7<%5zHECBTfCUl8n;@?Hm$WTj=_7_dWB~Zju+sq z?sQsX_P2Dwt1O`sxUh68feV9-*)%=&8u`G?-F;xULL zxZ`1eo-E2<=}#nnHzb}t(Vo$GW+lHVeXrj9>0_YpKU!|$x$*4@96AEElH9`wThJ{D zJVUlf;g(3@P0oi};r5Oq-nNE(G!1!c9C*Pws_HlAU2LLS+5DIDQ#U>=w!5fzF{1E< ze!K|65GXx67k~ow$z;N~@57Dg=Il!#7aC@B{DSfTKRE5Iw-v!z_yg~2G)v0zo#C7j zKK;=hROQI>c(*b-O!6sC=QmmP&V$-b=~MxW-(el;RIeSn*hAmU}|$nHtGf>F^vjV-~aw+)i0^Mp2!z%>Tca4Lrx>Pg=yBO~5~hFXmrfF1>@P72`oqefiyU^T+kqUF(mpbnCJ1K7TxSkG@@a z)*qd~VSj)3WBB8roJZ5{e022F;r!X7L;VH$_h|m((u=2$b$7ZPr9U1Y&GENJJoTTA zj+P7E`R;J=bUo@iT|0H&JxizEzxAKKJ6b(^e0X7ZfAo)j>iz!ZcYo{s(EY>QF}-u= zTj>7}y(9PQ;Kx6DzV+Q7*xyU*kC*Yw=Z{UwA6Z#OA{!UY%jw3=}6%5InL@;rDYN`2cZMa2M7>>TgI9b$=Q?BpVB zCTwTXI)u6T9pdvkOp4H%xP}#7#+3-2(g06dhtSy=wNxLk&|}DFlLJsXN$?adp<(!b zoPgoDT}1F)tA59I6lJIIyT(zee@zm~2bT3eoOr?s^h`3bJ|@YeKx`(Od}p22-R1UD;hddy`+;RqK1Q_T?+G;+|x0>@YOtrXs55%hP&uGFw*M%0I;22 ztIxOyJa^W%I!WX%+loScw(6XqH72VV-Z((-_{rg`N8i19dieGCUw_|H|1QPwdJ`X` z_b_hzoe0ONmxa!a=WU-x%e{XO0$^5#W^nYjxX8MByY-FbdNe9BCKtAeoty>YwJNUW zJfbe;BI@3$Yzq)n%xG0*e6hE8%vF1?mh+Art9-jh8G*da{!8$8&1EDx{1lq?DKzU- zXx2v;nq~5#S#X2t2X*?jKv zxcL3?i+Wse+q`VdBv0+M)J%+l+ATHoEE_KZ&%qI_K`w?;_9ET|P%kVm#bXQBasjG0 zi2Ol2Hx7|vMGgGl=n1jRk_$!Wc)hpxtgT#2QtE^rF!(Ui%pTa9dp9Ca z;m#zaQ5DkiW}j#(UH%U)$pU<#z2$;LDzwHuu6m1kUZ>HGKhn3AK) z$czeIW-b9q1s^KsgqIpYv3ctNRCZ3~_xAG*e*tZ6q-6SBqYa7$^pt|zIRZo5Qx()tFFhgvxv)cXbhB}}<> zU$xZxt^2o-&dd$MpkVTwC*8X;oxY6l64w0{wS`E70C$ez79#VyBr=a*TbFp0Al3P4!pgKw0XVZja^c|?v#1G;Vn|;)e=ebe0d)rNnWoeN#0iW#F%lN z0bnQJmynVQ@sE4nK4R$3GX&KIP}Ex&%Etzy_>KOwO`Lg?HGs~A$g*eanoNrIXKsz8AiOhrPnms-; z?`G+IZy%c1ShD!%|9t16dAw=`zS)}w=Dmg}IimYR48zJz7RYgDGfd1z=XkveA}7;% z)O+^c9+1c-=Ff*Wzfn@yRLLdwnRO9FFbL*(u>+619X|E= z3+;=BCLS4iNRlRU8L4Ud=|Nc`jhEXG4@j|CvE&=l6mHcaGr3TejXe`3Rrwrp<#$w$ z;H;!+9rA(ZD@asMEo>(v{bF@i4Bnr7<#*tnzL!xDT63Z)ws%SzD0j}*dPy47vM{%EC(T$oA*Gs{h+_{flq)G8o1c|FVmdASaxLB_ZabBB(WMuhX zwO%PsEDsJdudlDwm$JbWN#P{}V!WiupiEshsI2?prg0rk+C^lcuVQ(WUZPsnfIrvq zFa-Stsw;05tDZc7PoBz;PvaM_T+rND-Zn3ow_AVt^Pm4a95-n=Mz64q-3#oXTz^t& zoG z4_XGPpI}ENh6i>v9}q|e1ndG?B0eaSY~3_pVm5rAGa5efLilJ4 zesVsOtk+-A>EJ;pO=hkyx%OwuE{$Vxm1cTlgO&5feCYmRu+zlp-(Oo z?8h`e<<@I;tU*2_s(;-@E!#wkMVH2z-IL(XJ7_6Dueas!h8#A1n^^c@IT43^!MCqVo z#>4{UiW*3j@G`=~>c!UGJ$tz$vnM$BZnc0-ulDX9hRYd?x*w8x-7XaOpZ`lUGZBea zYLq2+?)vBz{=3wTa1(=}j5bA|I?I#mk*<@V$Z;4TJMa_NPccekAlGDpnOO=mt|a8= ztv6Lba74Erwfv%I;$9JhMsL`Z1fhoRxTi0^J$nA;_2JjVDZ@viW+@PF9)ZU2%ZSgL zX9wMlJuQ6PYAy44T3V+P5y-K(K^e<#zExQf!FIuk+|16l4egJN1PcrPjZlS&8vAF&>ujxZQ0_`OtYP*cgl1=y^Q>5fAgDndbZ?f0fj8?mY(e zXyOER3ZA~s94Fb6-CwVdoOUY;f~2J!xU=@XBPCfx!3u%D`3cQp|0)O)glT>9qEdD_ z@4)KV5w;Qx71~EiC&Ipiqjo`3Q3o#G+R3xP!JKcfsBoxW!QepqP2jciS?b$FjRuvN zy!mcTk`w<7hDObw_a+ld$+TpvgD=A%O6Y6i0jW8;a-FfSW(DJ`!X$uC{IhnT2CR`9 zDa9YxQD-^9sy{h7Q=`s{NgJz)YNCk;CJrcUfZ1n3R%Ngx$;>( zo75xtaVAz-&QaDS{{A4HuOou4Ln z@)h{A{S$n4KoLO3nbo$`fLx#klVzeh6CGB}?Lh7{i1&b%ftCuTCW|}^LgpH)7I;6R z&ho@Mo5Uy98Ch&kp-bhpBjp;J;JrQEPLu=Zcg&-H;C%U|5=`6^2WT5m1tjO61ZVW; ziGJ2rRQPS87Yp&CZNrV$NsPT&XN9MsWuHG6Sz zOOVBy0#y+5B@+MpdDg;(ASGuyd+#^T6AJ`ETo)D=*7f+XbMU-S2YEIXvJ?lIoEK`D z>a36lt6Zd|I4FfUxDs+!s51Vej9$Hsw%hT9#;bL?Ami~rzMrto{eD6O(@au+y17c# zf#Q;!eAlNe=~Txe7fT^^L|L)t?Odf7_I1YJoc|%FI$o(l7y5Q3 z;ze4%xt4ELu@Xw(vXZO#^XIc?Pu@Ly|M|u1_s`zFe)RI}^V2t-5q$txgi>GOx6U`Lub~|}%MhN7RVyq@ykJW?@vpEsnu83!1 zp00BZYk=_2!;6cXfT9I z=UkE*WedKUmSvKU2NSjwvn);W@%;%iVEigwCHeTlgq7w-Ijg5R1sE|CD7lVj#q!bH7eqVYJdn0) zL{R2IN7D@~sregE%Mz9oe!E>A2|xR{4m2^Vap61=w-Y=%pMjF;4%kr zC6}ZaXA?Tq<1$>-UaxZB=FlcfDO>aYa9vljc9l%AlJ$fR0Y~WZG_0uGC79!&gVxJG zWdlm9g6CCLvBBU0ZqL1=cgs}j+gzM2gwQm6fMt6xZZsDL@}TEK9nUjW>L-gVpAD(D z6O4}}d`E{mPFE`-XXf3kn63dK#Zx6xEuh}l#SDOlVn0v*ac4grHfmMz%p7eb!X8I{ z!J5dbB$|mh^^cT^IFqGN8ebGEXrrV|Lnr?Jj{q^sct$kayiEw@r;mz?4#U%SI4xwU z4^mG0OxYeiDWn!Rnv#uHsVsqZc$;2`w?!s3j83quJkzPprb%bOl$fojV)m+l9wdoDP~cJn{(s9O&QC1Ia2Yu6fe`;Vy&Oe=VGc8 z%rR-U-ruYtW|GdJqBUxt!lIbzjtV3jBJP?L-R{4jB+Q{ISY*$uh}KAF7Ss$)%Zs4q z?e>vU>1~{q_)A3a;r!cOid?}UH!gLmbY&KD!N*Z5vt_D9#G>m(mWvni*Gycyr{~3V zUAl)K3s@}s@IGC+V0%u$z>@3{! zjp+!0WH=$N@^4H44*FkD9Zu1NLFr`dW@@I=i)0+l%=EzzK%gq}GMcbCe4dQMx+ZJ^ z9dMbhH-*I18LVsl_)N~C3DfDy6*v7YWbj*m@;+TXN##`Juz)GdLLuL#65qW|WnB;+ zLxfM41R?D*iPq*J*AMc%s?56z_zb36)4lo7aFT zMKWi;kz`TPjp%m6lcAmo4KpF=`B+c*CXQoBz@~#OR8>ScjJ+}=oEPdkRkL?uPKmE@ z#V+V37y97V7Cy(S@Pl<(&qqq3<`r`ble{G>TCt5s@7EPSXP1pL3@hANbdYFf_f{gS z-6I*c^f$i{?uOvrb_PHrY_~I_=}0H$YT>__5lKhV=2n*0>j2pahv7n~OpkQ3foWnp zgDt2#THUKxVp&iE$0FI=J<7&cL{oM}B%RQTtSCF{DL zy5UJ7=h+4937nEx_tlf7oiIY#MLl23*dH=DL%TWdIDE25<%K8-r4{v%*&YOO zqi}eJP}cdMHOIa^R&Mu~Z-jRS(8Fa#7VM0jGwr5Q?!wv)5Nms&H8!Nyu(dC`U2@A? zc`@KsKiYFvGQlMEmpIj;kc;@ODz37bP;7IR=4+8$R_wOhZPhwze|O7To3Hf&Ai?vB zCdi4AWWiRfxrrU|;YXY1`FT3Mq(t%4jRMBPvRF&)6GTx4BUU5rGZG!IrFo!~0bgei zF(*e7icX0Ho{aSCqA0Bx5K$F5W9{x=PDWkVR>g%}GG$`|-b3 z#my~st$E;+;`-oKy7E_cacxS%#pXij1UV`Elt>`aiK5%BgxeEQ3}&7(8D9uYRn$_5 zPa1UcG*iuDVXQks)T$X=dxvb0qH!G@H5YHL;5UJb!ijjCHx4T&QhI5 zELx>{VScnwKzpr<{Pv=7DO-~QDxXEAE`W|JuQNS`uS!FVu&BI(=3zPDr(7Wwx5j>5 z0X-IwP5f}?2spM2CSDiaP>It4Yu3k@uS}FljB&6Qsc$e zOxa6dP`%>gsJ;~nRj$NTXIIddn}|iX5sSV;FQG`DYVjd__!vI?4kMeUIPLiR!6l%W zDzsS|llb6M^-HYa66sO+`CxxPMicfKA?8eI@+zR^-oc4x$x>YtJ+g++&j>%}9)h>3 z^0!PcNK~loB9jr_Zi(J*YvwF$(oW~)SWLFts92@bOy5Sx`LlEOhzow|4jyExUI_iG z$O|Y**;Br`Ng9)Nn>42DYtopoeKVg#t6&)__A7s7c`)oXw66K-4k&13Ow|Jvlzru| zN!05_ls$*kRjLR+z2QjC@l)OHMsmG87b*a$k&bazoeU~= z4`u?pp^CMfk%2fl6!dr?PS}t9nDpp~j6cmLho9mR{L-W23-%j7CjV#L@BJg~%_o}& z>_4k5Q5WaiMVZrd^ofujl>HP>j{Y_pvrpyZh;HszVJ`ht9*#e;PsfuHrXc(9Z=+9? z9$#eapZxg0{(o!W-f>m~{>N`&1q-Qv!VD3!ESjHwB$@({2sv{g((NK~j{G@|_iYDf z-&iosPruyT=<41^R9`B}KJY(DG!qvQWj{mmZxLlbKw@bLBD?p@Sw#GywspjF)8@wyihZte#>Thk^I2S)B9r8 z%y^ewEOayLaiMjwZ05Zb^H!;M=`359$q!7qgl_=~zuU>hmRi}Ssk`4aYPz=VFVh>> zm4$#$P2P_#U1ncJ@&nVw3VLTV&#}Jb2bPODJg?H(ERz>?>OB^>5AW<(_VKa%*gn5B zbu3eLkx8F0HJJ1}-!FLb-9Y*Jow3f8y3dEQ!#Pn-;<(-RDatnCqJpxK{Rj1k ztf9UV>!V4EzZFUe{CKxpl5e+al-60{<$WWN3H4*DX4k0_kET;^K>jH z+pVm~y$$47^x%uX8EGWtzM8TDg+TfgMdU@SRkkFQrK5s_08EXdC@E+nyIloeagcoq zC|eOxkDp04Wr`-jlyti!oFMxhWorjo9+-J_(*IlJAzC+{e@`UuSG*hsl^KA8v5M*d z4vB+%8(Dp+0@5bBv59;%bn{A3SWVfb8ISB@b>kte(A0l zsURs6Mv4S-G$358JRmL0>_U>Xz9iOilJ{b{f|W=_weR9sbDTDATiC6+se(-zKG|{hS#t33GAp%^LLnGI#szd1kV*j)qRvDvrkWS=Z{qwi)4%Lyy)V|&1>CrcwYK2L zidaMLBb2ufI$P`GTRVsVY5s7Z1;N5MML^lAuUS&bVIz2~h+wBq&BikH^|C*T& zPmbG8&1SG)aL`pTGsp{;T11x#fAk@ME_S9p~!Jo_JGgZyGrwH z7EyNu!zM5_v>S`)$W)rFjX->w>M7hDHWi4R*CLR-iY8}m_gXR%$qxZ7uaD%Rzg5o! z-xTwCDRdGUny5ER%Z15`SPG)S#v9CuDmLHw@abLOJ*_{hyS;#JZ$JwF0VD-ltB;Aq z-!r5%%QYmvutS;_{wAn zbm5{w7%Wj>P!k8iTgqkvHvK^(4?ghJP8x7h3Xm7q1)KF+I$=Lg_RGD^RG<#T4HGfm zdngbRQxFD-_?C&-+p} z*zsY8q*w>S@C1mg45p=oSy-@)l`LmKL|bVhZs>h1L*zc1ld^bOTnqIiEd>dX-O^n) zQb$J>{7!mD{`>R}GcXwtJ_}gde?j;RDz*|J;0!1icWP1w>;P%@f(3PxgK5y?0eT4a zAT5RD`Qw{vm>O`iJBYHvZK61iQI=4+dTf7-K=A>@*qwo=3vu3nDG7WRbAl&D#j<+F zN>1K`Fmx%BLQo=E!7^Z><#!OVswr4cjX2rS7M%06+uhYHiOqYs62Yu(w@6dTZnw0L zaO1FPQPXkVZrVBn@EE7Cfz>#ja4}B38t8$lh-ACGNSMPl&R!0)SE5>ITCvR(G_I78 zAS{)EXtai^M`TJzQ)KSbWXi_VNkhil5Cc&V765u>zTR0yE4u-%?1`qtDo>|^9FuX{ z`#PZndExZ>38EQR^I5THl{AgM#=C4OL3cQunpx?3@SNPB`>=yN#Lg`5IgewNMWMz8~%4xn8wg_0tFm1>pU z_{U#lrVUcUtlP5{NGVG5@IG5&GS8No&Lj|J;*q>S>eYxr3}?wdBJ(L?QO&6Uk~LKq zLVxfnAj`_Nnx|87<^%#OF75E&bzjLzNkw z202!ae~q5y%^dgP(<^qHT2xY4J9ka3Sx6%KOEbxnH6kxWEvE=ssX=^ngMZ1l}8fT6Ypq&`$&jj-^LN6V4z);pdBM z=7djj589XAu8f!24gBZ=cMb)Kj!6=lXw(&zw#V+ zA1jj6;Fj^S&AxSPE6}tCmF^ZRwxG!0d?E<&UMVndy*^Xs^_h^bYre`k2gS{Y5+tj*Y)^7#Sh|`6k9yeb2;PY`=(dlv->^x4LKy&oy-DC2X_zaYoG!#{or{?x0jhL{ zTF5Z|W(mi3cg*DGOY<44n=rN&g0fD(vUUi;1_;X4Y6L^X{Rr~)Ypd6<*?_jX9GknM z;Thy2Z4S}SDDStwvPB&U_fGI}v{C}J)KIG;1)k2@F`QP)A`^UP6RV=sHh01{uIl8G zU{h3{O`Zx?BI@`R5@J;*uSL~Rh%`{q88Bc(4m}Y*6S+>4KGQ%l>2$eD`YbEos$vSt zw(~bRyj*EV|vyLBZN4y4}3nO@U(Iy0I#hiOS8DKx+dJA}p)dwE~qv z7s>~rlhR!x&dMz3TMg&?HdF?g}v*)QE1u_ zo{cM^(DG7FMJ$VJLWc+`AkNBl%H?Pv9vpw)PrQPJSD8qAD)ykmz$|h=S&+q3rs5Eu zU;^I>j|mI9^L~ITX%Z5GWYnL8HIxLvSguF}&sDki4o!8QL1 zO@9L!KsuW}yAo16c^EPD9fRhD#hE(=+`ayV;m$1!Q2Ik&+zM>5gnECw5+kQU)v38T z=WDIO=-Q&<2&Z8t`Kcyw52oy%-~@~w?Cc;;`b7lS z?;k~QG=k~0W&1!imhd+BH)b{m7V_GkzX|@MFjAKv3zdB>q)zjQvVYe3zk;UuG;J7z zd=%k<50qtO)%`U8CoqFhBLT8+T=s7++oDo|IZWE}-L4#Ib7o*Rp;dx3Lr z{Bw&H5Lx((j))#b0+UIUqlgSnY$sMT?~SZ2i9pEauSWnj?*79hBfvj4q(OwT-3V_E z0MXkmjJH9-9~4|z#@VVQDA#DI#ussIQ3W^mmZCiHVNfrJG%T+)WyXm8k#H6Tur`o~ z9R%YTzrVvCjMc;g*AE_`JHR$2!kD!DfO8ld8w#(ZT?5ze!rRSsbaS+Z=zDAC9I*tc zR{(BsM8ejRURC!e;VHpa>52*6c+_~|^%VS1hHn6(aNx$_g-|2SW^Trt;7Hcq_DX5K z0kfL=mi*L46)X zv(lKL@y?(!OuO?^s4L+w3|_;2=!|ZRcs2nUSH(S?2TR8`swhAq*s7>WmSP==;t>om zV&EkpNrB^5a9eof@9xe<3G!dL8uUVma#7^7WJkSKjZ~t5OIGb#W;glxHKPRE6mT=u zRlNztcI)h7heBIc;&v-Es=iC)6u7zsp7DTpQ~uN0o7b`7c4hP1z!Dy~f!nQR3X1E4 z7q9}QVNCmpmYOyDLm7Nf1@-)d`wQT19S=YIR_yhENl?8-e*=05V*);19KX^kj%5YAn1c2JEoqI9-3 zo0ir=B3Vo8AW?TfZo&0PCTdu8y9G=itt|AL&CuE*HDN7jO~hUn(LWc9PgeHxgINPY@8VqhnL798S8YNvZ=fNuA1 zK!yjFvj1a5WGFK{!5n2)@>e2!`Ap94dIe-|S!UbT+5@qR5jg5oa-RcQ- zco4tHN8dKIytLBk@NF2wW_t9~YDtuuFnN+t-M-nRHI$Q(A$ z&&>~F&&Ku#&Il^-%c zF*VvSSzt+Z*Mi?eRx=IP)VEOuxiu)*#jdZ{g1^}}KOk_M71uIC1Q;2WB&6Xl#qD<6 z0tC2!e;a7_bpFnE0Xl+Kxoy?%yB3&qyT1z(g#gt6m^(m3wy7)w0*KX8v2RF5HVIrB+ExdCpsk_gX zf8*3a9|3TJ-8t>8Mcstl;lF~38uy4`0A73Ye{mcG$~tfH#IIFl50X5*db-vxRoR<1Ly|e7y z$ffya&(0y}F~@kt_#dCsS!uuoZU%)!?;6Bh)gcSD9K)5e(-bd(!3D;U3HGCRm0=$v z$NJLXEUDA4z5$|+TKp@}Ydwf~O0w>CpH_u@oUi>&#=ZLAZFsOdT`i)~t~tQKHvx+{ zl<8-ivVVn#ZFw_H+NRfxE0nt-;jV7}9JGp4+sqiW8w&V#g|4wiTck&wdx@I1@(!}* zMB+hgWgxz!6HFKnaWZrbhvpq>QkS)fe$8dcbo&a}JP51}wNd+Ts2C`xVz5s{T^ltx zH7|dkw=yT7thv=500o7HE42S+P0q;G*XVc?rREWsNB5#50M9wF;g#`B@B;WlsG+QZ zOkTrZJNr{)MGVA)L&0X47RLkefX($jEsA}ns^flOC%w>nJP-l%Y@Z6`Qlo+IT%%?1 zZd)P-pI5hJq5U9Nnv=0*i%uv%{W4vjXVc!f_?ig?7CjY1ix-9_FYs4Y^b1>Rz5#Ws zR3(x5jTpG=Od|Me(l4ZW>cRC25^vVp=AfG$Q>M<$q{#;x_ZKo*X)^A!`1=zUpPaD4 zgyIV*4sRe2%xL59P9~Irj|2Nj{9wT1{(!~bf6sdH$v^B{|J{QJY!IJ3VDb0=VDUfx zF$uZj7uw39g%dgBRE}2gH`(LRX_>Cbg{BEkyi?HAwP7(KWYBwXD32Z-YI-P+$b&=K z`~FZ2?cR3ZNoJt`iRJ$rpNbL!LKyQuvky9;`P7A=Nj5y2?yKfI)LCC?IHYHI|zR3Qjq;bd-#2(9l*YHDad}M zJ*2(|?>;)4W-Bz&0%7|hzfT_yM)AqvON7SwS`iDgH25?@ncZMOF z%}E<->1M6Tcf39nSo8$8{DIl>2dIW!9xT^@%RtZRtIvu6bb|l2Nt77mM=86 zur~2tk^qz)09JR}O^|h!R@3C&=6qJo+BPXLQ%~y*w@l#Wdg4ZQY235s=)%!dP1bzdEbu@7Q2l#HVh62Ey)RSR%zNaIAXia(6w#<+U&Ar{AK&*~J(MV7683Yw)UE7X|+& zuILUREy^4KDFAB+MxpnFdq4y4%a-)pp!7!9-aTN<#*55$`!z^E_vzZLLtS?CT6-4{ zNnLdGJjni9r<=R=BhnB_8wHs?h*dW{mOO7hSL{WApL+689LYm{6wnioJ(cb_)DQch zS98P%l*!Wpq5o7_Ks(3AA=d+)vS zkDv$jRp8Jc1LipXQ|a2VN}tI?q7QXX(IfN~^^4}?ubREq?70r;-g~;Cyehe1zks`2 zfB_J-TO?17lUO-iYwtEqQ})H283$Q;APaqv$^&!l1kH|vX^|HyKKP{+2YMk6z?|?Z z&4twF&B3&ofx=^{MLLVW7&;%cwcILtA5)z3=jc2ukbwO)_y)g<$Na(feI}3jpx?(f zQr>3;?=y6AJSQ68)K@HA6M0AmN17(`NcZF+sLtI#lsz>}`D0B=rkFSy96tboi+cuD zFPHAYJL8QY8<^5^S^kCntxgLoKcR!eWdD!cXKVA1GN04Tp%0n_r$S4{A7bTPJ zC*qPv+fM`&ho30L|MZB0-6D{?FnziGEELFusaQA(QCd=BkP;j(H_2_D|n| z--1t`0EC7gP5no2EQD6iw0|O<4S4hqW41s zQ$Ss3<`{*;*Sg=+%(s9hPpFzUo`7ExScIexDKobwZ6_<~*IM|dFM(S!=Xt8z{S%Je z-!x^I_@_&J)RYC5AU}s!dF-_vUR~sedMq2;OC5Ag`VOmLKxxIXHjuJwNb&C`eA`p?b!Z`v#cLj#;7eW;FP@cN(b^_#|71Z6=v&lUUVirusC zJjQey(7)sLWRI7wej?aU?pWUONY1?KZ&toeUn5WBBmO1CDpMg1=E!jB40quwJu=C} z%@G9`El2f-(tr3{<3s5_l;MY`{mO2EpS4xi^Hy6zB|m6(A*>1~96IQ9Wgn*sfx?Xn zm!D_^^520+Q!ycfo6eVe8+qCv=|ogt>aD7+A6t9T+MQI%PhU7%0MLY^Qhqc{#iVH- z4`3b9k+6c!)co3olX3@{k3s!y!W4J&gVZbx!Liz~1~3()AzU`y%_wv?12%#jbZLW0 zkyXXiZnJP^Sj~<*?8^dgHR&Yq2dVMVXpcbO#_5FV2AsO?1y+s9^iA#dE#2+gPu}YQ zQ$Vc0ehm_E(kZ)9Q}_+kSz^1bfs^CX-7aREo$p?lC;Q6cs8jRGK8@}PA|+84wXoDC zD6BonHR<%(7vt#S#$M#@1^XbCGf3*{KMr(J9Do@n1V7LRx;R*7H}SzU2|g|k(mXem zQhAUnaRA!73vp1UOM&-wh85{Wst-guT{tE}S(o~A4a^OF3!fTj#ZL_NWikH2^EA(a z1pq7&=s{-eD-UWDnD`52!pXW=A@|Uty60(8*ve`&NQmqSdaNo|hC9pek9u3>hK;tF z=3oVQVp8Hyp0xhZ>hvjjh7YCVKtu>CcSZhcsbbf1CE$5=1 zAM;g28L;*WS}TldU=0I*_*9IG-e7_{duIQ|3Rt^fo5(a~=^(2%#J@|03*&Ie?UuCB z2Prr-NJphic6d0&$YGNLut}227L&A~BPo*|bG~AvWKv2)yBEH5wGH90X*iJ?!wKW5 zDn-K+CdTq;U~J!YE#hp;Mn)Q)Q@s+29u`IdUeL-~3Kg{j-wFs0(2gj1=2k7|+8&?M zP~_$504+L((#O2%-S2igL_c)Bfqr^jHkjtRtE}Ge*;r193M~9anxE$61%at%W^Dng zle{Jk){<;y?ouK6gMJ@k6QNK7hy=8^NTdZ(9(mSeRMob5(kYS$^0B7}*0sITU8$Um%+V)nqGlk>F}V36Mt1nUd#{WazyCrnEV2 zDIKK=$vH&vNLg-9JIYVj+wF~}&Va1X^15bfK0O7d|ut64(l#TuemP1q7%lscQwkwL_wS-M;SVnNTu zW#}gOqBT4psv|hub!dZrCCR4V7lJ8K>ZfSorZIiC5@MD}ARJV%GjQV-O{ij78{EOy zgYS1zGTZMYXVC9t&91C0F_|*IS7$6M--)uwufz;YJp5YE_nGHyd=-6GHwE59U1Nj3 zX>D*GqX~O=JEZLdQ6hrmXSS&{Y_ah z%ry}Y`BalZpR(v|1xLhztI!{AgZ@D&rUgjIA>JP{29fKL@j*`yGya0a{S!7|8D#<= z25iu0GxY1svWJ5aNx2S>_QQ;&TzO_w-0u&1MD-*+UVyujj2gHUH!IRhfk0?~eh6yP z>QEj@R&p;$$=H4SB|K?(5-jI+T?*`x7gogN%COA)^T3XzMAOs$s5eLk^pKFESJK0r z9!pAAi+2}7RHebEG2M_@P<`7X~*VHV60)M8hZTgC#Qr7RKuN0w6Eg+VHRKz zb*O1rrHLe>Yo9fe1v|uSgo^2S|6br|32g74fYla!I_k|JxLnd_E1n;d`$6O7;hIvm z9!V zDGNz1*oqEsd1wY+FZSy2;;<$bik>_qWN`$!OM2|kZ6*nvt4B-ojH1p%yfZr69-tmq z^cHT~MX#>?0zqkcL>5O-;h|`m{ageSvN~M#2LGy~%$+8tOYA|ve@Ewi*B3<5BXL;w z9Wv;#_e8YsXqPLribSz2v^u+O9Y`K}HSe<( z_~%I^kN*=1IOjwrQT)OE6N`qQ+I^Dpfy2yaej641q~B-DVwTNs-=mUplCdQ?#|7`n zNgkYkYaX8jN8r?-elv6W&D*EltYQlQp4x-LC{O%DzTNuiDSLuG^iO$D&{3J>xI0!{ z9=h-dOFlbVu?t>1YZxt)j4bK!qQg1*XyX^XnOl%6XuP)y(6~5Olp#Q096_ipcHXcL z!YpZkVQyB+cS_TTe9h)|vCP}iMItNgH3UR_SOyN^@@`k3 z=D>ow=7QbuCIK>bH7tlt(Mb&g77E=Pj}p`1=r6)0Y_4B@fw&}n%JyxV=63N0f%dbT zU>w)ZF8Um1@e+^S`enB(POnEdF;qoF@0unAj8m}e9MmJN-iK@~2-(z51vE(XM9uZs zAkWFf`t#bW8r9+;z68E_3gwwBuJP$t(JJ=C7N4hXD1iezyd)hp+8FcPal1;kS#VSv46Hu@OhlHuY4>OfrA%Zv$D^eynZOS8`7cnJPBGm~9 zkWBI^){^;WFu_eq9_0l@?v(xpPbILBN?MAFzws zlf#v<4_I*<>SURf7yxav-~ud<%?Wws?A#8{`He*Dt+g~eZ+PC}d@c7}L)ExH!EKdG z&;%Rw`xCIwHvAZfkH{3a`L6aGeolZ=n1{1f8A9`N7%elU3N#V`XE2w03Ipdvh0GMc zS9`F5?E^4?E9*e!j7QlFT!Fnc0g|7YpC`uH*D{xH;@!R3?SgD%-y41{$&DlN_U-ET z6~Dp8U-H3mpS^;=L+ioieYZd&OTKk^(5o%yjiLcWyu4Iqe|Zzh_SCe0d5Y z;%D`N{tUE7*z#d3Tl8KXFWECnA%cl%`0eOzC=(RDXY_FCRZ>6q^dVWE^8RR$z&$(V z_#hwl6M6b-__@B2N(T3cc_y=Rfkt2atlPEyeB14k&-|6uz2u+Sn%}^=U)03a=i`?{ zv(vH0d0wC`F>L3*4Tj+BN1Sq$eS_$GV4Mf)UXST|beh4mc|ML8EdT93S~-A(9^nHa zX#_R(B+HCEJv)9$Y0?6(iCvuCA!_$9`k+W8@&)R zu}tSx3{S?w>jL04TZ-D4Wv0nzTCvi-z*xxUV)mH}RPnkIqfSSGzsW0#=GOx265RCfhnI&zzhY1PhXEDhZ|?DbR_y)0639&*17j&3u=oLJb_ZWQ zsMt%C%LFtuQjU&ae0qQML?$jE$EYc~G*Pz6X<0$N@Mx>C@yvzd6+8 znM~eG_R0&4IwUfYPte|QyWJsOzzOXh&udPAQkUCqJ3mJrbp^j$YSiM}N zv*J1m4Au{;uklv)s|0_59t^%(&br|dzLud>yTkcYi6qib+QuYo&gE!N z9?{eVyfw4@9GgAc|Zxhd<3fHo) z_(e-dG1e1w2<@WtI2FdnPHc=y1eBkq9!d)S0)1^#46BmyBF2l^cB@o^FZ=SbSfloWR<~$qP*@F7aezU7U^)+?dz*C? z!8@a97au^zex*_*dk=b0*fVgMnV;=Amo5pN`ITlEP(cQb{EcD9yeh)~|_+dc@@h%_y61gn953f{tL(;MtT8GAL!8*>>BRTQ{=>I*{^KXMWm3&as<2zjiWQl~9_AWT){}5ehUZ zL$4K-AzKavjE2Ig>94*az+VYVfxi-l-bPm-uz+BR1VpG|^u)@@T)=eFQrWLWO;5iP zRdBjqHW{P+2I1EaM(2l=Ry0Wot;oWtdBnvv257PgXSi!sgQkFmetiGxrH|v>aRmb# ze>Zu1q@bwnbI0TYOn|N{5I1L%K%jxQj&#{>({O3G+u-u=-n>WmU}&)yTLN^ujV!;= z6bt~MGZ@xpd!E&n+Z*l1O6$udtTN1%+pKP3`<4r*+fs%#Ffu%wXgnD@vt+}X)s{7@ zENd31RlJjdG*6o2NIRy3I^u)=aPFdoueoGXu6iJ(fTTN~8qFpbMwIYp-oCJYUvAWj4SCS%`u4#O-M&S)pcbp$Hg6$H2$ zU*YyyI4`Xr=OxxRsg*vgC@TnMdEk3}5f{?11FY{uJSxNBixxt32p`hIM-|ea-LAeT$`+z?^9CjIw}dlxm$$7w_#9AZA|p8R3EjJxA&h{KxL) zGcCgDL(X=C?bLW}SWtVpKZ_WS4!{@hQY~7npytaxys5f7Q);83BqeYt9ho+_{u88 zN#>n>{wDW%iU%9WsmfM}oA`L*T*KSJ-IHXu7_LkP89o3 z$u~{UkCk=O|FJps;87ROEn`QAHNzPIG;TEL$AjR)rgVk{>cn5I&Z_b$;=OQf)n=9}?ywf}vcK|<;&2Dy#R$XAv4<@WOgay!4 z++JC#LYgiH*v~p8B9Q@}2ymNIiw?$!E?`JA!+6z|)YI9`*BCp&t2wy(kqcy`Cd7J6 z_b%LbLD^$5>+sKr`YKu_(x9!toz|uuqPwn+wtD75XBcuP7_4NqErEuvHSmZwLY37Y>*dP(yxwVH z&&O7lx_{i>?`SKZ&%)a^B*Ju|2wt}U3Y{ltD}-f=_(w*$nLwSx#zP1p}u$IsIEEchT%q3(BMF8MQ9(6XQOg#Co2 zes7ejDRJS5#0@%$Fu~5Wji2V8j1z6J;!I~Vo5}u^=w!XN5mnxQoD<;@<19?qG7(Kt zj8K0i6#-AmT1>T={VZ-vv`-PUddU-AHQm6qd|80uL8othB70sS_+EqPGIdMJjMVZr zz|x?$^Luk8l*(qp>%AF13$VJvcv!}p+fy@`I=nWatQkcs!`Ph_iU2Q#QJSqKSwz=@ zn_!xw>nzXBi5wXnpo07Owren-n?k(OUC)O*4iDj+G-?lU5olSNmMxEZZjD*WA(Wqy ztp>Kq>2^EqcBLXyFc$+Ea3yNP>E~xg~Gdtj5i`i~a<*6l`q{yqUKL%(`92;s(8p zb%@nl!IJBlFC$DzW%gB!h~oX)y>nC81iaj~xGCEeHCg6$rfy6DN^X7y+F{k3319CML~y(hrLRvw;S3GFiREp zABM(4>E6&?qc&zqbgMDk>nZfY8({x+_^aFqD4K?Oe-JKw=u|K}_)A5#0rwXK|BhOjTAs68_d;%@l~6gy5Va@>Mz-qH7npZ+wIaso(-GqTz9(={NQv2 z!?B8@Ee)S5I=V{6S4QUfmY=x*Vkw5i@sstI`v^H3Xx>>m+7NrsFcQfHdxArM29Wc% zV((GK{}S%G(;$w`McgFdfjQLaSM4COPij;Ax8Rsl@@JquwrJD$pd3XsI(L3+qNlxu z@J^#nfgV8Vc6&2=5BgcHRWi-iJ}$K>HMLPZgBRWI)G2%3T@kJ7h2dAsJT#|?zh&X_ zgvuUoE0np3_&hJb87syBeiU4(FA>l#&7!WoH>xw|;2=ci!XtA-p)L)fR{_4t=46Tl zLBmt^)Su-tbfbr{4%5<7h6KE2c&#tE=EEgQA)#kF6douQtpKE!-gIH@d>45gOB?gJ zbTN;+-Oe|*+7f3#!L4mM(qv7Oo#Wk^ZdyESE=yp)=3Ttko*s;|4HP+KDCC0hncmfV z;P7~-6=zXH_K<_2*QRW{&HTJNlRmG+9{PN0-p}sv{8YQCM=!^eHG8bQ4QWBrX6Sig zoDoSIe>Fr@LDW{9Br|c(?IhK+1#Cnvo#3^O1}Ouc#=1e*>>lAG*rX!q>`_ZLdsPHP z(o_+2xbGq?dL#}3l|pvFrfTy8;5gYuQQ*xU0CJ|h3DR8g0Al}ISOwwYDu`Mo!Yv$x z6KrL1B+Ohmseqc0S`~SD7Rb+>d4#7T#2vvlLZAMGvbpg-*6{Q%oMi4iaPLps(F^`c zpXxwZf2niK7YKu0dBj-ag-sZw`tNk25&Qrtq5pXlj2WM)qoYQouTG=OrI1r$DVV0% z-b8W%xu#%+e0Gy*ucxJ%Avv3|Qd+gKpa!)&QH`=VWzD{|!7jvCo+kV&@h)H{Bi0dY z<2sFc&JZSH-|AXwy27xB9ntNk;YG;KYCGx+cyI&;s%pZ_YR@Re4jc!SHseyTg>t44 z-oRS)fOCf6uu^RSGuwDul(*@Hz|b(TMjNA2XL+`%(ik(+D6Dwl-zyh!_OARFa$W@Q z7O9-&5FMr|YsN;skyvN9n(cN^Ce+Dwum(^TvjgLvbpM$he zM8r2t$2V}+;?phD@vT3#YeN-zczFLv9Uk5{`dFx4#$3GPik|WZ25h_Cj%Fz73hWER5Q{13qk21fkboh>H9KxAfhcS}() zs?7F(UWJQoV-3N3?~HE`{D`}NX9-b^jeuzfPEqvf?9*G|1m^1dI`YeECq|xt;7;tn z4R#xMSuErksL5HzVr$A-3c%TlE{9q?KnINWx08H(^bMFEwid11wIT6RtF{KIigjMV zWy8m*Z0yQAo8oSVDOiuk!b?5(^~!=V+?zu%E_T3}kBt&nSY}d#u$fB($pFAZggC*j z6a=pchu(-1)d)eg8`lqtM0WrvW&2|s?t`LzWnDD5z2zOr@S~k=FH!c>FDit@&A!1{ zvY?e~H1FD=9}3i#O{SV2+0}tqy(?2V5q0s4MsWz-9pChHd;@X2k9oQjhtqa>zb^3IwQFbw;ve#?a z+|{i*X8TOvRSPny`hl0p_Qx6D+$1E8Z+a@ep~nTgg{Rw|if`$0;V&>*e8V|#kx&+N z!~4K;z74W&F{_@oo5s|F-G5Jj>3v<|(rBiEAC9>1uObHxdgCDvJ~&g}kSjg`iD{v- zi%fFGT+(2f7ofYo%p?P*=#75~Hwv^L zzf5nud>gZ{*u$XWZkLQ9$`&6hCMT3(S0#2yIjzmlipLL50%P5M!+T`9gI{7=h6wFZ zlM}FOR4Ec;4e9JOpDJT8w7E&JdNWJ?irqG!t3Wg1*I@sS1&MAV$^?mSBO2hw*NSXF zEnBc$%uz)iEL#)F&e56`O_n^`!KO4eC4JMv%}!nE*AR2mru8NcR&dBXS7d{m62dXS z?}tR2#77XbI87C-Zo7qFZGU9|UT?zIo}02S%#Vn_!XH)GYoJYisFNQ9bJVb&#|YeX zyTwEZ&5s*s5$q@bhJkeJ5`VM+;y@m02>TRv`WKH6fXUXFstyM=1tRz#Mg#+a8ZZgS z<4D(a+^f;=z|>=QGSqFbr>)=aXOo}a`20Xa9IDzt7=c@y`Fn0}du+zEMX@@>iUV5&Rp8WKh@mPrIMY_$@xE zu~>Q&PTNN_^<8m|mbtlcQprCRA4fM} z=8r%PM*arBM-%n|-rc%)AN{+Jp-a`D?RY-gWnh0Q%062B%08%IGJj~&b+1(;!klH= zv`zgb*92)g*z`!!>0*V>nruE|0eoTbfHx9EWC2GKq6;{_9HM|@3UP;uZ@?oY^2Wg` zEt3~d@=Qqm4wbxE9oX=9Wt3h;dig3{SDliNyF%e?uW+lk zu2rHAie0P%B|xv19(ED$eJom~plIbT56o574BI^eajj(V13a?y!tjz6DXD`Ko#O4dJN&FX6}vI|8V1%{SHs#0h_x zkKIV_dLMf&O$cgROfLfk*gL;5LGQUE8{x?JJ_OyAKDxzl9S?<^_=!P(Bpx6TgK#+msMowxW z+xMgi)ZpA~FDy10N#=fRm>qMXymWjoSUT*!A7;bjfDihPLdLu8&V?<$rKfr%d2|~k zLGBGb)#z&kiAY&N1Vn&25;9NQEqA+Vx0{mvU3O9$Bi*>kN}x}fHrNClOz*tD-F@BM z7RD|Hd>#Nl6IF$qoH)C@wT7}Ovybn+r}_(_-|rLzEpMyl-QW_pFv`$z7`s)YgV!JBvN85i8X4hS9`n!}xaFIa0^>Al+uon`ICTP`$sefD^( z4wqrMt?eVqpt9i|TX1*49l7@~*ne)^aYO(Vo1^Y7Br)(3N`S@COwpWh>Wl&kI-pQn}o5m669F#F(E=|Ug*^BMMQVI;-MZ1u0}6V0?m}U ze|uMu7=Wn0u7m4FiMJR0LYgnq8}|kHr3A$=CMr_w&|RR$5>i&+iw5Gtf%-f~0@*!u zgH;Iff$IpH#8l(KHphjw561#`tFs z3rJOpk>LHLQ#;7}tSDR;k@XQlmmo|n^dy2NO|}N_3z6w)gi$;wQ~t0BAyw`It2-t4 z65!pgC3NoIE^hxff$I*LUajR(1HR=3$$&RzSWhf0lirvz=}paKf-JG5D6RZpQN~93u>1pfLE{r1z0!W(Hf*$Xw1g^;z9YJ7Ddyq>Oy_g?-X*K%={3(I6 zfV4bF58jD%st=TyGZR5diMbCU0Ty~JyC`QTZJ4)5M=ywed(;L-8gDC>9!Uo8?vG|ohgDEL(Yv$S4X z^4Vczg-`DTQwGd9!)xXnJl{}i{j^aEZG(1kdAWmA5NqfBS4A?bOCVB=6!h(5*tje% zyWMh}O;FHI=?5O>2My1cUK2U@NGzZpZ!%+%R%*DOv-_eaCx% zBVAXK-M+u5ZHp1<6fs9W1<~W}?Hm2FH25R}N2goNkUQ{n3d*>Dg-raHD3jeyM`~*C zld5@p59Az0#di@97`7QQ4CE3$r0fb7pTPB;b9#u;E?oyq25=9PJxbL*^$8>7QX zGUVI0k2m(0I2E0#5gJIR!x3PK2LGo8mtN1I7PnfW!$I6P;J@jlMq8JUYL@~rck%ed zw}wJjmU5K3`NQf|jU*k$%>FyR)eVj9r_~W~kBRMna;cp@qTd2wC8c=tipi-+?E}wBPe7e^YDp zC;`R*5xOrjlk+c-9fV-q*VS1zGcHmhMyyX9!4_$0dSF!XXU36sn@7{_!hph~KVas1q2Z9njNJ^Cj94euK+a6A|9mC>*z*|7M&fS+J#>9QMg1eY0tW$H2=v03oXs!5DyxCNXGcoU~M*eb1-_lPfc+H5x1YAqCwBR?pR z4tGe$a#~RR-$Z{ftQ2ta?1hRt1#2N^$R^r+K7ns&#bnAifmQffCa2;Z0&&vm1He7I z0yQ*r)&sWLwbW6itw4@&t+iKS@PcUfa zi^5>aADkbDy0qYdyg;~n$CrB>(^Fe}d_$|h9kerVY4x`+RmF;C-!@taafUhvn$<|h zP}XSLSzGt86rx097wn;)IuG|Ju9M1ZaP18!4My~Q$Mt+V?oYs(IxD%1Zwy8`1U;IZ z%lOtm-wxAp|0tUr^OB|G0j6?)`FNp8$#S5K!0b1qoXX*w70i+9Fn0boxgnBN#nGvlT(wsvQ2n~3^wY1KiQ zOylOB1W5`3{HbUc;3z;ZA?BKV)guc zpWY)<)DmW%G6kwM?bb|u1h4p`M@0<2Io#AHdxpwHU9DAsNk;|rU|HZdMXW?FF0g{_ zw&}pECQ%LqFRc3x;PwyEyT?*s*mb*io$ssNnFcBm4Lqt4xPNKd_k>cCaKiSAMs|Se z&$U>KSJ@PlkIGBa@s4N21@??E9WTL`7j-mQyT5fOe}lP|%m3LXymRL%JSRcj)jO0! ze{hfHpw8^AthC>A_2#qwJCxmjGg0rr@Co8dR?YF*QG}Vz>Bf~sgGNJ+cvUM{zWT5& z(^epjAP9^D7}94dUYFjG3E~3OVYi$=(s8Gc5aRUG>wTl!yIC@C(F16U6~2iVGwN9m zF3&hWqE=W}P&S@`xJkAuC6iRet-vNXC(mq5;t`Od*sE*jx;z z(aJW#H1?D?FTzhI72DH5lBR553w3_GiT0bFk8aK|#!6D8|Bt+P;cnZ=)H*iHIP80g8H<fU>)L&b@cmtd&?q zy-=vV*Ld^g99;*k;WGWu3AqPnMd5U^ArWn$*zPqj_S%E~sF`NOZma zu?Y-2_h~pU1os&JL6a^!Svn3lPcC^lVExDJ4O*?jWB)PhfBzUziJf5IHR`ofCNIk8 zVmye;7jis|^H9m*OBdSehP(E8u4yt-l#ZppDhL&{cpQH#;kdQ?=PmY=WHQ-HBpW^g zV@cL#P&s@=CY6rC<}G(E0vTdA?09w)%El7HvvP<*4oEjhw*J)y1`1{3nYS>sV^8s8 zQ?k26i0_m!k$cV&02@HfW_N=V2C#5T6Pe|W* zHj7~1XiPfcgLSM-zTI^3ihqOY;)$7qdL_J7esAt0tITQL%fs z*nQLB{g^xUqXTlC(rjzDONhwWMaM?ot#XXr0vrThv+aH5?;bZ)V*d_jElCn5RjSl( zw_cRrwH4)e^`iH!t=_k_df(bAr8@Tc?w8(?74xGzWyDMr{X5=<>#V3G2hmwWIjbBd z$p3<907ZJi4UAVdZHJ#)s%Wz%aNPxx#zlyQXJfr)N@jx3YBB@W;KY5fzCI%j)u`!3 z5dkiXq8A-4fma>y{4hiq$W`#=#@EKtGNOpqiOwTO;swOO>Gj&11!D~0XNRaEHuq<= z$`d&{F9pBSkTE+uxg87YH&`kTqK)~ChQ0-c20?~Y{4IYZHCQtI7KF}r3&O4_T7kxb zLT~`_RiDL{iDiiBu)G!!tQ}e=iq<5NgK~Kz-ctZGfcOB3lHyCq<3>FsHl5kjK5W=Z zD(sKkx?xkwdYyYEutzA;Q-pO|Azh6EGPFY?V&-*PQg1Ybd|6c01qX0KKonFg7(urn zB|1-M7!3!Uy&HH&we8{IRVaHbg(U*v1*+wBnqR{307WfEvhUM|7#PJ%2^DdyT4|Ku zmP7cWwK?0~RpCs3W3IuxNpECWN1C_P4Q9A&%};lZn~8cmyS_PwXdqywATW|vI4sTK z{Rm_r01|ocr6JN#$k*#4La)1jn9TiI_}z+c7I&=k-KxO9gQ)WliWw{WcXS)bK13NU zcawkMtq^{<8p4}4PziqBZ?KNB=pxUMSTN-+0y9g_B0$gQ$lF0{lo&!Vs+qXNHl&yJ zYxvztnmq31{f0ePc^b_Ohr^14DjW(c4pOK3kdTZJ8m9JPDSlM7iT)7*Yfh>a?YG3W z!!yKKTgZ7&(qAR$`OtbTOciho;8JO^G;Oe9{hrW8jbV`~I&f}@pT42AS-I9+5wf(I zkiqQ(puIC*udlrTbTQkScHw#nluW<^pl^VV`FlY4POrJaKKabG9^dl9hY+$SV6u=r z13bDaM!h_us1O7Y$`L8qhG#vt%=Ew!xBkq-6+vc`c-H7=z+)Bx9glfQoR?B_koF?Z z*%TP?w-r5qC<+ONV4`v?Q5=h~4oyEXjfw>E}= zUKR?eOxsoBQDsma(&}R=gh8G$Q`2fPsQIppFy(oBZa0^ z?*`?n)F19?hMY$A&Exjt^N;2U5qCbojF=>ileW|*qb84)41uUnewtg0c4N!3tTJ{SnHbtbcg;kIltDzTQHdQCE+Zq@l zg{B}cvCak*x3;0L_g_K&NNtaV1Z-^wTbvzDt7(A%Y@|}VDZx1tmWhm5TW zg6ams7bj(3^2?w3wOT*AbRtKtj^OPq=1MXc7d0h;Hnr0vb9xb`-R@3m;}N8N^<9x& zq-vAlpxf{SvAqw1N$akWS!MtkBY`kN>B2sEVj#Cxdh z07-H*9&@o`HMiFYUj|p{$_;O0^$|QNdve5IBzunmW#Kilcp~Jzy~hJ5Ou3HSkpugO zy~L6ml%4Z_yFM3;9Jb}zo5(xye&S@PqESR(5VWxR#GFQekB75COsum6bd0-hHw6t1 zk>qs9{i_BKkn}-h9GoubM$lPWF{lRAYz~*GFa$&xd2UdiV;uP^DH9a;O`2En{V(*l zS`1hKD%^&%{dW%Dl=M+P;4d1m)-sHepxPv<4-32Fbew9f*E_G21C^W1%4ogL*)l;b zf$=TU-KIhNfVYG;yHPy50go|Eygn7y>*ab4+)HNcfD19C&1aIQ#wn+dSkfpl=K!R^-P3kzFuvXh&h%f=sW5qd87^*bopk zT+Il?WPO-wM$S^9Fw6D&C+?nbHHF#}Z9?Zxc2aI!Xt$Oxc&mAHSI62ojy0CP zXH$lS>grOrXNV10-zA8eNSx0fDn6!|L5>EPYa zt<}`>XuT6Q+YTMC*(O_~+H4!ZZ7o8yVKTt>Keh2i+SACT)LmLxz0SV?e$$k&!_)2V zqH*=dy20l*Wpa%wuuvEt6k@}EbmOc~fuWxC$<;;-nQw7LeWG#L+mroY+Ha8sj%;erZoW-< zHrgF-9GjX|+vMuAu`%a^HWM7DD25em8L3sv$o`;5*5Tt#=AYb(=ReghzA%D_#%2iG zZ$|}luzA4fX4PT_)jWg7_8@bHEw-r*!4T>e>f3Hb$E210dw0F21&tN}pOoA(G?<6l z+}hg4*IC{AZdLZ$JN_Zhvs->&DNo3E%H-Rl!qgt~&*}P0Tv~Q#8)+QprnX z$Lz@Y?T?h9Iw|uNS+0uNw_?n+i%)BYu8DiRHcnA%Q*ZlWJ%O}V&8G=u?b^UAN5=@E z9vwZ{EE8j4pN!7m8%mLwzUfdd8auy*ET&4eWvanZ-8_2mgxrZEq;b;y3X3_fgz|`% z#4ea!fF&I8bhu*MT4dNrELd8R7{4a}(MXwjEu9>Pom*FJDPG4xZY~OK|JXuWFqyP1 zmu`3G4G-ILjC)->0RT=LZdXXfwL;BY; z%mI#~r?bt+vioM@{U&1XOZ2jLP7&2gEme<8>%pU{G&5Mfsc-OqYcYO(2y=f35qrko z7A8s(q`xo2nq7^}KWyZI;-gLp8s6`98Aj0A62Nn7he^av(4*Nu_^ln#ICt%U{Cgju zN**3~Y`bOPF_g5US2Pv`(x$lzwf=SzeXHVmuyNcvgfEh#=wMC)L(6Mxf@IN9`z8@w zD9po#xDQ1wVLT4aeJHBJCEgSX=_b|eaM)L_RlO3idHsZMBu%?2nRNW4y#3t%jc zs$LZz$w-jhLPjR-CK?^FuNim=z9BBx`Cw&t9bovQO9D|9E7_~10D}1Z3 zkGz>?){<|EVB4sfDCCVK(?YAUgKenY79!u4W4E$LNV^hx#YlmvoFZ(|UftSGzZZOv@&nMT{HjaA$CD}Zsk2;5w?5S`gpfznvTGP9th zD(gOd>$p;Ba4$CpLG|^zty5V$Bi-?6JwDsdRO*mgYu~i0(!}`^R<(^X%aZNyVsA_u{#O0k$g(GUD^@fdkWYsG78;lsN*uP2{iEWgT(3FvAp^V5d9%PWYHJo~wII9tu zrh$iPo;vxhDwY2#(N(t)_D1xpYICDXs~f9my}Lm8d27ScYL@KZ(8T?0-)=TQm@?4; zO3wrW)4RPUzJE}b-qAOuHUdV||60=hXvfDn#7M6;e0Z*<0-hKcF$h^Yl6`QsyibNk zrcfn=QT3dUDi9(RNj|AgS(+4e39qq?DvUS*Forn+I(54N$PR!>g%D;cwLeR%MaI$T z0)$=dS43e%ImJ$r6jqdjfhc-Kn<%HA2%?-6jd$+;BT2RI1h|UAqjH^K7~CR_F#6g1 zGAvr8ID*wuqYVt%FDN_%rTRVnzK=E!%&(a(YnICpd)_P-X^6t1Rx&uVuH02>6A#PN z5H4HwF;pPV6lC~L*0hkYQ)~9V6xfH}xQ>Z1H7if`&# zDJz&)U|>q#Q4`J^ivq8+CeFeCx8Hy-^$7O=?jBem%5B3rIxbtsrd7qrOx#XSqPA_O zj@ng1wVm)l14*(}N4v8H$hE1y1(c@~Ci_PBgZ8DeMYUc+BvxFOfdM#iA-ljmDH>7&puR5Ma)dSW)E2A;)U!zZ^vk9g{BZHQUd-M1NLZdz?J zeVqW!fcEc1onODMd*W6y>Sk?N@!!2mM&Hchwi(d2S`BaKAUt!{ud!&-T>oEZJgOvw zVO1(T^_m@!q}iQ3c7E4NYDU|x955fw*6Xb1O#M6=vZ=rBQ`Uai748=QqBum0+`f6?7|G$s5fV&PS0D%5q~pLWfOXb47_=bkJZqc6C}PIBsOB`Da8@Ui0kI=m@iD|;R<7!A zWjL_lAh}K-n_uyeEqI79Avy^RN1>tv|E{Y^ry6u0Dn@aEUg^#&zf$un{V5}>5Ck_> z{(QJf`?T!4#lK6O-ww9w=$eTKAS-3ruu8A zDVoQbM$+}qvu!>ZE9tmD)P_(AvSJqjo94)NIbt!l0}5Vf8O|z*R1LCF?jNzR%Vcl6VW2N3;3%4^LX}mIuuy zo7j-i<|570YTg)}=1vP+7L3||wN*3}`&-Tc4V1rqb@&>O>SJN_^7XM)y6;SA!Gf=e ziX~I>2J55eo0}nCCvZK8DqR{5Xb0^jJu(Y0Sc;l?ukQ56`-Rv-P?Zkdgy1@JN9FeI zmT7lo*xG*oE*j;EA`%8^Rz->?sz_z;N~1;J+SolbcJDWKuNu2ojp6fdxk2lnJYs)^ zKy%neQ8stu?aXvuG7 zv=w9%8tWjw5^+QuvsqkSf#X=y?kt4><-Ww_iA)0 zJy^EFs`knjTT$WZg^2EIEFFV)wX(Pwv0%5swFtq;7g5dd2`DBi1in%B zUd;QThChnYlbwA2(Sm*3Vp`;__6M3*1m3^D+qF(8R(dIO#MTK?+ zdRxdxmMIN?2_$M?1%W_E{3>}RLg6Px>ou11<8U;YB_}M01vszK24*N4;`o|=tk9}( zYXR$rDr&kjhlVe9qH@=JX_@G4Iq^`34E@@eL`^`KZg*#k@o6X@3}n(Gr3SUC!T2hg zKzF|KNy*K&5o_N3ZIQya5C>K{l`1SU_bbBGZ8p+crMtLd_o!5AdCADBq2!|wN8LN5n5~EgV)Ga?ZG~&7 zq8dnpw485}cMxlkD>YhzATWB0#?VMCL-+&oAHcY_ca_l}`$xOLBfXqJe5})i6Z8QF zGUA)B?BV)xWJYYu9#s1W0`8#+bRC7zL8J6E4w@TP4pGABYaH|g7YdQAeI2}TGDvNr zuy3(TB{pm0ijo>0zpj|cA$Rb*fK9j9h+oh~UDU$S*!)Ax_brq|x7T)9w)IzyQv{@| zen8sHfvm8GrU*Xo!5cY9E|E|3kZ6ky05 zFen&%F}KR37#mN683opiYjHL?g&H4~1T_u*m>38VnJi4)<(nwZi;y!n7%JETeJ;b& zLGG!)tn^=2g24oEe3SAt8gYC9#}}lCo$4zcT2cPP7F!+=Ue&8l%2RBO1pc> zhJkt5c9O#B?Uc>BE4|kofGy<`20mc=4d0;s8=+pwU9EiE;D5Cp7?HwNIlY3rA5P$K ziS&Nm^@;!_!urxns>Ui+G=RJMmGL5k9^Qzi%*=s^(l%p~nPJNrp+;3q2N;2;w22{= zZO4#WZWLUPci!n4ss(P4EG%h6K0q>8kd5N{_Z819B{yHzO-F1X|)bMC&Cc0l$Gdgtcxwq;bY#WqqAJ_6O za75Bg{-BzyQ4_YnA8rBPaDT3o7}?)*)UZ_TXMmiW!K<4Qkl zfj>=wCOEY%^{WAxc0vJ=qR>XW8=&xqYyv5d%mas%PFD?xElII1+~|2G8K3Nn|LR0L zpm+?}FbQ^%?$GfVD4l~dGevW-jr{0B_KP}i+yvYIVRic{A=c+3O< z3{3h5Y{2?MHay+1zfeGtWj+%ZX)b0q0!7Ym(n~H25XtMG5D}()d5L}*#k=BGN7n79 z`7~S3K&TQiQ6zuiVF0(XxE1GDseBZG#W*BR=Vfs%9tF|Z1}=z?gatyD1N%zAAKoforvCx_jCt^UVi z(O&&yvDic{sL;@_odJX*E0UEWKeZT_74+Humk9b0;rB~;@A1*8Lmlmp7bdi+j?@JB6`bMiR6X8 zEQ5>mPRwB4C=g&ED2nUF64cDlI;cDJssm0iEt1uO=ke-LaJei+Oo-|_Zr-n=hOAyK z7or3tSzcb^WL8Eq3CG+q@y4%<+gvZih`FKmSLc^-g!A@$b4c^s0ln-<_F|D4PaZBLvhFrM&M15XvIxcRtS3s&mcnJ83>kr(B8-?@ZGY z?4wJsArf$uuc$xW{fRNF#t(1SAYdowzA^&+6;APV3buL zI+N3R_~?IKb6KW$`?KG}u)iDq9)0(SqT=d0^CIMv;VA^;HWOd3?bbCa>3I=Ks3;;d zcD{DURu9$}7?#T-IqF}enMBL_7dzK_fB=6nS>ZgyNWef$aXtgHC7@wqnFND?sT7RI z7w3?)!Eh)L)fmano)^K*eaa(7vm1x2d$;+I#lml$V*dT}&C6mz5sIO~jX$k2Vz8Jn zAAhtIpyg${*WS!-=yWGyrTQWouq`du>fFVPB0ONj{fOPe&&O`h2^z=O>V$a z+fDinlJ4!PbzfM{Nd?3d$qN@4Tw1}cmM&nQ&bE^#ll`VoDl2-vH^!xpC zV-~I3kc{+_nHD7SD~8#!=A5l$top5#E>o>onL6rHW6g7+b1(c{P{}OGfO-~<@o7w7;1mp(;QI|-aN33rqeXVn zdaq7S^(lH;n8lmBQOxb)&9%+<4hB98Wq+}(<{{j*G|;CY{e@2DWcpfx8abqJk3j@0 zGD5wVTCilrqK%_B6zm*C$Qd=vBZkHv_N5bkI);DnD_Pb5V|l%Ry|95g)TnhU%K9k; z=X-w<>U%YMkqpM_?qBdr@!NZaj=0P+h>5G@0?yaVcHB9hNJGsRNrQ~w5nCxAR)~R7 zFoj{9qX(7^#HCR_z1ga}M-iitQ4OIFZ`8j}}&Ahq}0s4ZLP zT6%Mh#!ooH6>e%V$?>)MX_(P##U=uvF_xKj3p2HLHH8>CnRsi{zKm$0U^8|VROU>| zO#~e+ItcMf$~VA>lJO{aOuUFWRAiSfAe#jub8W;Al%f$iccdN|7@FNWDLcaryCX{D z7s0O}_|8?~T^#2TJ1LSYJt*wBNG5?F;~`){!^}8ff!1oY%5Yg75jALw9??uT?VqwY zMY7Nedt%;R6&};JQaB5OVYqBzZM8MB{IksPe>NcywlsRvP zfF^v@`0hmc!=3ZWAhh)R{ZzvhlWDLjEA{i3%EYTp;|miL^U8&b!7omvnQ3>W`=PG@ zXV`?k(ycf4L84rUG^}6o&>Frr;g9^4f7za{=lX_{Ue)%Hs&cJ@Qz-YA_xTZsBCI|S zE?+HfRg(ko_oVlXGr%2ODk(}eE%`#YYag`KBvX+LWV1Enqot)UmH;PdO_(O)wA+2D z!d>GHfYwA{;PyuzW)V08QdG!jvw7&fPSCHFmd1(NIV0Fzp={5k6O6>HW#fBlQXH4& zdX9dDyLt?aoi{r>+o#$WKf%|i956d_fm>h@K0EVEM!u1IoZ0)8xO3VjX+HZ{I75a& zpb@(@g75X(kb!6-W^=%Bqyl1E-Mh$lABkDYEk)hP3WIP_iVIOzJ+%#bWTYQ~O(Y%* z=Z+wrYKm$kTzMI;^H7oZPVt@L#)u=E=X;Qg8w`J*Y}sRccpd9vkHU81gWc#HD|WzQP5(UFaTPatM1Vhe-M8zMI~GDPShZ@ zOg|loNJ9Y4%_$UgQR4Y^tkhEVpoE6dpjQ>8)D(qVOG9r!04&fq!;kTUHGF!+-bwLb zlNEfXGz?X^(n~6)u!|dV%_bm!fGG08j!z07-uMdGCALbdH#vy2XK~52@`BeT?Nv?C zo^6tIkdVOfT_oU?Oc&UWzX0=71m_OxsdzDSeS&A*ZkQ%n6m41z;L)tBmWI`f79;zu zo6n)v>P|hv#OWaoPRW$sq>?31a|uM5r%KhfQ>fxZaG?4^ZE9it_q2rCh&2@gf#}k1 zcMAUAHOm)pw(%EqY^ddiXSHuA+K}Ra;WkLm=K*W?B{LRw?O$!sq*JAnGpjOMJ$OR- z`2WsPH3DNMq{zf+I3P=@hF`rdwBR$%g z8d)>cKQ3B)u=3=%0N1Mr7+XB{!iNilVDn+s>s!lNIB78niaglOPe(wd<5a>p<&pIpn3ShB2&B=Vn(z?hMfp{>Qq*>WvoqWZ#_bC19FS3R za@8Jd&oushU>D#W1-QpHIHpMI){i6F(u(=6#w}^!RbYKxTY|o}v}Yxdn=OVk+bVg* z9K2SCCvAk8bn@^6TsT!1X0^YiIp^~p1P?zT5wtE-!Jy(C+h=$e0Q8wJ$T z_Iho-27RAE8cRhOkgYZSZpj9jx8sHA)0}T=H0J_H&eCZGh{$k;RL>3|HI^s_fg{WY ztdN^J>o00##FjZh$4@ipb?FeC1hph3XhBAxnW-2z5pB$|KsT)(HYJ514{Tqsp|5ea zMJ9npRGutDNok@c<$@PEsh2i>>npbb(_J5Iw}tyrA=y!68gA#2O@sd3RqGn7e>EIo zA1oyn8nY&ogt6aS2_5w*D&V_0)p6Jj)UrBh$g;PQ1a5w9hn326BTjkq=kJUJ)h~9J zVBD!ca}f5?EdUK@2R3JU0J;r?uHiHDeV((Ny(LbDE{SwTa{A1M<&Ex!<3Z>~`V+3Qq zAtKG+8b>5fx1W>EATckd+`2n#e{eR!C-`rpy#lOU_nOrLimo(gDTT$HEvkzA9E* z#Tagv_dvE@T*GDbT3K6LaR=zZd&A9^k#?I=rpROUcOng0@!)|2D-INPSPAr{# zEcH8wHT_kt$Hk}+H7%)xApzFqeyL>|k(Rh|m;3 zj2t=^oQ_@ES7>wyLHC6XOIB_mrWlX_qzO=7cOhN^35atD_&iTa45e3~q^ATTKZ1|h zsecE?fD=>H}{9_k9brokl*Kc1m#C#?v1_wX;M{(o=06w9K-RZ+`+x zlW>`2lfh}k)CsY~Bz=T(^Q%nqNqXv@ljXRKg*_w*R?p<}F^}Qx)bI|r+c>Kr@e|k= zt=EU}CmJtZgPCO%@B9VQyWPJ?!tPUD{*s3&0_ZxdM+&UR(<nois^-*MvXGQg;dZ zgsuS2sha{)-$wBoh*hW;OlY+Kj-ReGxyl?YcilJDH9^sffZw6bQCxJCuu5BSZL=rH zHzQhHE8H>gy)_k%by1dj@#5buc~q9G`^C@NA1bOTe=8U{e8 zNYFO5j79~LqT)0uSPtO?KyB|1y`Z57$Neb!ikU^e+2A-^#*eJ^60XBr0Qx-dd$l4k zCQ%axyC0p(+ycyEUzzuR^?1^!_&a-we=Jt*M1dx>NEaX-L$aUY-1Y+1D<78idayA| zCCn4SwwV^gvBHz^3tRwY)5=&zF#^%7*8}yQ#y;a?t}KsZzJUWM-#j3W6YcIA8*{t- zNX`r!5+ORal=^pz*y>wVvYk5`&CNFETPbQG-6gv<8_~$9Nst=(TF`Bk1TKX&dg-tz zjk@4s=_q`}7Sjs#*avp<6$LE-xDv7XN3_8m;aORj@w~Uc^;$gg*5WsM_8^eZM~>0U zzlC;~$kWaL)@82AvE*E+ienky2!f@=;2yF}&zA&8`M|<7YWuH>g}-&NU5VC}Jl7-d zjbHn^-Zp!;^cy2e`bGw3J{EvRBKhUd{8~f|=g$}mXhX6yV?+NDd>!!EwmP9^-aDcFN@@jwkB}z z#EYW5<)zxd$7Bu$%g{BxhIiw)eG%~?7>xi*vTDv?AvcR}Hx-efHEoC4*D5 z$O)~CZjlcKJ1fBMXz$rm%)pB}ZEL+OF49bt0iYzeX5XYU%+6Y}rzEKg09n1Ib2JBMrML(p zHf`(QvRa6|g3iravaiK;5k%~wB`f1!?gPLMS6Qiql~t5%k*tgkDt6396b{{R!$kh) zQY^(GMB7sEwN5#c|3NG=J{4r>)mGqy#L<4{hFxpInpahNnX^k|9JC9-ji$z%x{;~Y za%l0(MU`B-_8Mi9uh$Ff6nqaaG*9RMe#Luh6gXtT7z7|_jE8ZF_mOL#_W zA;6AfxgO|JUMf+;B9im6xb3_tOPF8XFkC26+>!iBR2`mos8uk&uOQoac~u=*bm%iW zMcLsUGa|S1bUN?Q#6R3bKTwtjYB>6}DJCKh#@BQ&i2U)mu*=CaT5oICS$ewVz^M;S z-`l1W=QS7~;5IpTa^bkWAKmtyJ2^RL*Ws<(y@=fcy1}v(wOQR6V3T)=$Dpw*y@>4x z&Uy9zHrEs&JE@x)A1A9TaUbstSSc>x&)HceGX0ApGwckUt?)+C+juT=G`a?eNPCf zVF8>tsLd#feU=!CMlry>J?Iq3!Lz8arog4qd<~yxq+f^n%S5xgY?=&4)92Y}y1N@K zC(~2g@?^TZcRF$!TY{B^OUaNn$&5gj)N%~RQxMuDeno~~p)R`bzN1YS=L~+tg27a! zI8&9fmWCS(8Q2r!Z*C8lS61%Zknvfc9PG4y7jR%m@_$So{r+h8(WRaFcP=UPaC_>A zfJq#?+X^L=$tp;KI7kKo3u5@O7ifJ+@LjMAG6Foq!$*@OK7Dk_+!i!#2tuW369!No zmP!nm4=2dSg!@k%42C0IubdSurT15+$0H9|BB{FF;GE1w@DU(la7F87Mc_+H@FAiM zwjr*d>NW+(LC_cRN@#W}#)o_fK}&)dOP`m5UyU$bjbE(l+8LlmIyqMFlvr^Ci_65x zN|Q9q62P)Z0x&l$#z8;WeHUhI5XA+%3)5&Ea=_VC^8k^86FaUSS@2!=Q4sA0kAjFD zAx0KwLC`kPAQy?L83Vb#7BR2baLAvkG==4wruvX->YwyTK-i zWwaYa{m$Eq&V8}$TnnB{pfHHr0;ljI%ZM!jLPDR~th1~H&=?#}d=$6|J_EW!&0S^> zk~2-InKQsBp6P-w!BrFDov2hec}mz;?K?}-{Nzk9h>fxVG)eQa4^S|@2zx^`Zaf3Z zXIbe3RP@gP!!45|P+Gx+%DKox^AZ`Y2!uz~>vnrX_Zh*j)bC`-Omhi@clg&@+4Eb8 znBQ|$cI&bOzpT2N?N=J5ges)(%@Hj;laBY)%Q{8#I`Kf-G3|4*A_|I1zD}zJT8EeM zOXg<$0IAAQ@3oino-SF35c(NqOAZOlrxK~(PFmsWua*no0u6G(Y^g|o5FS*p4Dkj1 z03tXV--^{WU&Loj$!p`fIsjIo!?{R;7bJSr3UWZMykS$|r{d=QYgTBzvE5xzwQiU! zkOGQZR;^dXyC&A_$teT}$^3dC4+c8KXBX(pjR^qM>WI4q0X^Wpor?4Z&>X5Xzs!U> zKNQbR``6i~0)ia&Eq#2$WdBex*$HQ|f2uxw=qAT{KZrS{}SGqL5Vqi4#-*<=Y`z01>R zLs$NGZebbmc5Y!Atunmg-38f0xI*GKj ziDh#~0)D({J7Z^Reo(j>3;%f!6673YxUcZY7=WERN|4B58LYOK*ZS#9O%An1Ntao1 z&NC29(uo`Obqh{6Dt4x18i3&-`nuUf*e}vM<&8->4mg zJjhfVAH+rC9CT{zy?X-+E76x%S~RKKrSc|>>DU1yw=A9Mp1)!w=X$V-3wE~P_aL~8 zSL)h}dqbu!HW;2Wuxf}u;2S`q_7#eIrddQ~4G=p<8c1VGYzdv^t$|?6puTogVI%he z1Y)whUx7j6MVf=h-^$CUH!MN2eV&OkeE=>i@k#;lw0=Y9rBQe|MM=)Cs&8H8wYu6e zP*;2{&X= zGWZ(>z|}B!XsutXq{`|h^GcMc!~E87sMT;khJ^dy+>%?|ZRTj(LiejfF}E5y>y_U$ zD5|VK7VSH}Uh%@tdtHdyUPal-m`eBg^v#_VWe#5JMfq*B*r?@qy=^nMH{{v{L**M$ zA{<{ZeAeIZ4}%TcA07a>;0l700qI(`oDUYp!%AFQ-mH8b79LYVsuYOp;XoZu9@`ct z2dMksO@jYa)N|Dd0}zr<0pDkGaLR(HvkHK{pX`~k*We%8amwwTvVe+}x=hCJMd=iI ze5$Vd7lU!o@iL+qm^P}P?4NE1RT18O|nyT@Aab2=HGHU@jTZLp`_VB6H;DTASm7!*hfvY47q_D;w8 z1+^KUni+32!XPinqgegLfFje$fo-d0rA_ThYisZTOjBa~8<;xW%ABTP6U5*?+~0o| zTdWt766E3cPlnOR&?ZFz*kksA$^QI)R@yA*X~Pbl>>Jgj1)8O^lJ=LGQ9-?t(MZHF z>7&8(d=%+k^oB29ycjZ`h)GFiJK^9t!pB8Xgo4VB7(rel36O=eJSiRNa_Jm<7>G-~ zm*@>K8Jya(T(N>~InC#z(m)9|CWBKnzF9!v3S>awh=^8@k>u(-=mQ4Ob&YqDCLF$I zR6b8fTFkrmA7QyWjCwF{5EoL)(KFMVNs}>+(78cHwEtG7J-2o+eWU z#S$0*OT_QJ|J~$7|~B> zJ=srZ8&5W;j*^8a!RCO_1zIG8PJTZxZt2}=;v|n8Ixa76Th8|sY65s9jsgw%Yj6n6 zl8Umv-i9jJ%QlJ=n*e~=9v5^;`S#o zC--gT(d}E;a3847dC~?tT?zU28jl_+#_j`FvZA3|SnYbHg4O3VQU`G&M-JDYkPHy$ z-H1aWyQDO!o?eURiBM~51cjKhE)oehbxPJ5P?mv7ql`B6QfIT?sSSuD2>oL_*O6iH zlM<{cuK}0gb$F%v(bD;D_j7p1oWAvh`;sfP%wN$|b-VPk`|wr7UM0O@1QSV$%OaU0 zF9Bn83y6Xj*aQ6@5H9S57qxGD0by-X zQ1TC@Qo@g$d4oTr!Jj#UpM!nJ&QKpJnc>UK<|%OVY&KtkP`81n43@fb7)|rbuVnYr z>TSMQ%3}(>>*BF*EuVZeBs%9lTO5J*SU0S4+>~p1CAChi;kN)h(bkprC^}G^q#xj|c@pCdC%>j<0 zyf^9&M+P=ea$oSZ;2`g5n{uyMNr)=P0EV%>&@u;POS39{*@(6s*z#HU=Yak^j{T1l z$-eV(!u>e;(8p;Ufi{sIGPZOpH%?a7)goz7tA#NfDY{*4E@AZGMS>7U9Ks_Go)_bE zw}?|_znCuW-q10v=gZpLlN7p>;S3ilFjv@7dF6!yZ2#wy@HV4+dakn}^>&+lxjn zQ{__N!CcBk6+e1}W~hHa(9g?9vtn93!jrQ%6VqZQ%KltlXX7+i9?D6uD*&v1ls~WQ zh!DeA?j}K(mzUM#6pH51#-|T&jcPHp`k&lbbp=Oho?fJ4rj>TkfzJOx9o?t{L3m{+ z*p<5h9LtDJe6h^3j=IyqRuW7WAU!Yg-nDLQCT=<+ze!8D{&R_yu_Cr#;b9M;-!M8n z>&!*AxL9VLTVCdAep&T{4Q*Tvk6C&4uNj>;OY)pvhGI8(#TODGL8U_qPyrlxge7fLc6XzcJSM?`cti509hU|&2Lt)HIPRv(;YEj)*`DL;lE6y&Yj%+r$)o=@iC^~q ze#U!WeqRm-uLeE%^ZE(?`wSlr@!=33_6`q!Uk>)4VzK?Fukqi*-tWudA>`~02CsVf z=QaF`#rB5JAm`Np9}eFf{=VEF42Hemm#?2fox|@j=kWC_czAt?4~K`ZPyhegvEO_B zLGOEb^$$RS6gXyZKc@t#h_LRJd4sY>>M zOJ1+{>CXZDQO@An2?Ugm8U)iztQLGKK>LrP=w&58RYFg=M%vT?C9n}?ca7>p^_Gf* zZ}AuL>BBpXtVtfRZ>|^eUP-@GT*hcI9%v13X9hk#WwETX`x7DG=D8?;`gruN<0?<} z!z&2!gLWdi6wp|us4C_D^JbRfvHS~dSCjn{N(R#+HyPjo7U;+doggxff9@H6slAzD z4h8@gC-B-q*tj8B?@T5E&BUuY_*VkNFFp6BD&dq(0(3Hhp$i!O##A^&4~sHD>u8lC z7jOPtrZ*6HLdr!?;KS)@YwxTmaCAA5x}%Z}v7;b{t@SmS`lA%E0IL0l$Pd$Aj9bjK=aa4%y1~C%Sv@fNBw%4 zE#~~&`%-&*z_YBlJzQql$+QHDo>%wzv;$o_gqPv3Tbl@1h+~BV$JF^r!G}Awh z)2T#HD)mFBe-PJ&6wnd|Qvn&_&jqTyfytl<@|~6A2rvraWF7Vt;#>r7NtCzay*1k(Pw6}|s0Q#YkO7qH-ZnaOm4 zGjk1Il(1w(hNej0GCBJU1O(0Y_5Bz?@Fmdne@kNrt(!5J7Fh-1S&CcuL!sS*YQghw zY4b^Yn`Lo(0xdu&0s!&;hL#?Gbzo6?a+5ro{N9UCF(lAwLjE_!%UZbyFW1jp1}4$*Y#^@G<(5;}IT1keG1K&>j%EyFd)r$>6lx4c_bD>vfRR z?;)iBtbYU1?JH@j%Z2SD#)Nf8+q$hcl@%;!a> zL#T^1ALV>?q&`r6_e!y%s;JaFm#zx;x#rNcW}*6-{|rhiOny>NUayBQv{yEu_Cn9V ztsLFnQK-er^;$7e-19zAm3C%iM7Cf8;E~kRoT20H1>pujm?c>GJA*i!(+^nS(T4Ci zRrC2+!;iTxsWG})IVmg%cJnBTd7TOwiwXBgkkiDpyl)nAw;Kd;9*5x6?h!cX+1@01 z*u%XG^8~1=kgMh+BCB|}yMqfB4D6x9tQ`9v^7BbpBKy_+K+t+c8zd2O*`pX39iF9^ z$c*#=cLmRWUh?yF+Jh^kqZ518JiU;eDPQP{(=1)|7F^EhR|z-Dw8)CGhcV<9MTRs_ zTUw9sFe;U&{3O*AS#1HCG%K#toVz_Er`I0baF-bOvvZMVSx-eRr3dT?h`DAxY*76+ zWr|$(F8Fntso!u;+h09C`vVL%DM6M(PUrgJK2rr1=SdH@G#r=N{bJtBK{iJ}i!v2C z1)%NCi!%LEadeGMb6XdRSq}%0;FEOq6Fjo1<#90^oAW3 ztguHYIUUm{oZ?(|sySb{U9DuXQ2oN6dLqEI;!1!)?ecPNyWuC>zErX-u0(Ift2wy= zI0*%YZP6+45mUZ!AHmW?KVO5BMwVWurh?NWc*LMz9k5aB@q9W5{vLjV^nu8DdbVE( zTybqMZIbMdYYuRAwA4kYKfkmh8lch^~7 z#dlenUv=)(hW{#cr@bDuv(F8?kJ@;HI)#j{iTPA6ff7|uB>?a0C+BB1FK*ROnM#w4 zF{l2wbr9K~_|c==+uQ!_K8m4+-+%x8BYaojl4p0L(uZTgbJ4 zrz5`}y@Sp?dz9;&#Osjc=O|qSUau^w>OD^Ow~&p)uhZj~eH?+GN^zm81tuY&2GnfM zG39IHh_^MH1XVeO!c>P7jfH&a^-FsA_qsn|h?TDVd&_^pSAg9;2rY2+5VXL_!_Wf9 zUxgNU^Dwl)tB0WlK0XL7@b0V70!I%+3!FWWeU_yayyU}n_<@&O;Ri-7?IM#Iv1ZN; zOo-29$)`e%8cz1>me%2}Ku)~%6`8o?)B7`Gms?*o<&VPhlcA|0gC>nhMD->YQ*6Scpd_eGf9_)VE71*h_;HPW)@q+<4*b(dXTg9^k z!RW2FMadKF4j}%5;rt17;UmoVXiK`XT}2%SBB8=Rt_IKlNTx=Jx58?tO72U4-Vetf_74)x>97;Aht&Kc5U^EK~Hi7u4WZ;E!M~sqF z87d0pk>j8iI91xG8|%RrQHlZ`?RLvUDe+kqc+noqOkOjKd; zoaaS;e_brA7XfgjS(4cX-Av{+0%0LGo7;JsiO_yvMB2~I#wg|9qIt`f^`CEyj}gYG zvdyp8q7T$V90buAj(|7_tWf6?SabLcTH7(7hAF#W`AUt zzqhv#Fd|R_w_5vBO%`m7;L!M)g{b$9g4jt5A|~j?A7W>95JYk9n^E93mhmUObJpts zykk_)U&iPxu3XI+bQt~0T>bo~5b;9o>1>RY@t!ve_dEBZMpT=Yt-Pm2d%-KDW~du_ zM}`j#dTqvr16%2zpR(aI-H+Eona|H^Yu#>cLGz_zS+#GnAYirEhd9&X>$6F(d%9)I znd7G>8}+xKKJWr?0tkH3Xz&pRp?+k3G9uJx<_$@b9FN`I8VAm%-P_X*zBiPtYISeR z39vUb8yYF-+VNc9{^n@*_rGfEvH2b%caMnL)#t2xb`PKWXZV3R%iE7o2d%z!S8hE* zZN>IY@so3I|DKX94+(%6&E(Ucc66bgfYKLz94fC6Q? zd@P{sq9*LTxC=_OVDJ_;l(8aOQw#7;T%W};) zTng!^bzTbs%LD`y7aPkVmcbbdT*?7=(uO$qRYR`Ha;pmj!Z~lrsf5&8CoIN_1QRt? z)=tlZjs)N>FVf3p39@8>(7N>LdDQ?{Bs1VcZ3ivn_3Jrgl#PPAy6dwIgtDcIsF+a$PP&WqW-<%CQ*Ot#(n z)pZk+`eXG#90I0;WGmmGMD>Pw4*M$Y#(hw&DWE6vFhUc+g#vrm82hT>jWb?{piuHtSgCNr&3BB=FI!Z-Ym_HHX&efg%CY(z=YS~T^)p%d9gR!oMhA#vV zFrR<&;rZzue-u-&*3;PQiZek!(l}5y;PU7iQMU`~Y-@2KQRrzZ{+%jPeYN6$3Z-7Q zrRs>)vgVOBlTFHTsG?{DbiQLXSXcN1N+b9VJ|(D$j7=Us*R!o-LbW`a3oy8D1sEJRKhj3CX2`WkaeXb} zr}|0B&Q86QGdF*6K%cgL4bTw}_g~9d>`d;M(FO0TZdZ-&4i2@0p>jj@%3gP;5gn%!bjD#vcz0?h8{p; znK*~h%7kem(qS;-&vR||3IJbn0_cVi)(xx)uwB7@F;vOqpl0L>-e=3u6h8cjgc%s zYGoTnzx9yb%v;}Voe4p<3}uuV8pK;kASK#ZcSF3Woo+kc#};1P?Dck&OAlJ92)`dj zQT^KVF2lCl(xAP6Wxcry4-j&rjqSdU!)}tktM?2`Ipa_|KfhPWe(x|Nk=PUf@=v`3f6}M?g!9>^PBQxQFtti># zdi`(%FiztNjfx)nlmsDRLFp>e%ly3ol9c0zn~zDKvlMJ9*i0nhv<7Bg|(qS&IGz`n18OA9)XvCZ$v~J|~Yr#zwMM99C#PqvCEJz)!Tgm7cs@EV^C% z(-(JQ`YEsYg?Lv?d3LCVcI=KZU3L$a51Wjo3jMH&Ht|$AUO5*|h&hXR;CvFr4$BE7 zf~(YScOMNYL7wr^8dDu`vpyY;0cVFUS<4xp&x!SS;}q-f9j7Y%Eg@1@JN1s zl77MOyiI4tEhc^;=Q{XR6xaB=G|S%Gme5+yc?R)@_XsvxueBAJpG0T(yPMZA0|!$IVmpzn%)wLB*QZ8(hB90Xbk4%Wulw~OR3TwRNN z2@VQ4!7Hw|7np3}-%@R9_#>{*1@4kLrl!}I_y=UN@Z(C{Uy5Aq0^H5lLSkzRUUFQ@ z28kbHPffARExuyo9IyA@@d_d=p@L}{5e5;OB=CNSWUi5p!~Lfa^>XwL#I{S2>-W`K zdorM=8U`s_TLnx0;Oq>^f;8V=uHNq_V6yFW2-j`5+wx+}sn_0%Typo^4zB_?wo5zE zEP0FlLR!_-uK~~VLYe5^0ilD5p2f0CQzpgJ#&Zu0+v;h{GHs+GqK|AO168CFuhR-J zc6(?(Y@7>*bw7Xsf%M!GB)(mAcTR9w@-x6#Q6PY-%Bc}^l7}XsX_cj@76rn9e5y1_ zh2UpmTW-YmalADJFcvEOGKLr;GVzK!#!l4V<9bKm2qoAR$vMDL5&38o0A?**)tABE zGgz;ViIT*4oD|nLx#Iv22Z5n%mcqFOBrP`@19spjBb1-5ZTX!~>SGKo3#kIH#o;^?o*C5# z;RwRctYHD#{*R#Wz?E{pGa!Z9pak1v+D+s{=p!gOMmZC_n88Q8U47~Cm+sJ81f{%z zB38nb%lP!Y}Bg)r%h$03BM~ z=FODWqDRF|OG<0ePmB6B-EqQB9q5A!>w?AZ(nM@+E6-Y~RF`e!3TB(G;yF@^4G(;m!+KbT3;=NY=rN)ahOR|&WynV8?mor^?{X2oh}Cp;K@{|pXbApSCbS&;{rE)6SF z|5o;HLI)G=?2~qfUyfCP0Bhu;FNq=DIB40TkAAQ$PQO5yO)lLt$V!567uj#Y3!+xf zM3Z%G5{!+?7AphYD;&L@I$V4a4xc@9)vdpXngK9%t<6!ubXI9z9dNo(CiuPvF$ga+ zkgaF~Lx_(CSrnp^mWdpVtR7v>p>3TjNIQa^;C@F`nbdWt48hw?O>VRTJa!GQv?1$7 zu+Ais6Jy2TFXCOG{V53;2!1bhZ;qcJq%*_!rtWP)>2j1NX}?O(0Xk~aHtf(v)iF@t z=sxBNXJwLFp%OvW>;N34?oLMCp^I!)!KTyI%s0^uMwumoaOzC3`P3bQ*{kSlGyU=H z&8N`Hw&qiK|JLT~U;jN^*ZBEn_Augmt=#tm8YOUP%yCOSu%L2#&1>*t@@0%A8WoKH z25YjmZU3e>$YZ^0*Xt){0~<>kqLPFf9ks5+Nbd%0#c^h}J9LChuNn(?i$cZUM8dZN zB(XoeY#&LC{p#1XXgut%0AN6$zg~_D7R7$_vhw1V{oPC10=LEf;+1M(tT7?o{5DiH zCcPp)+#1WhOb4Wmm0pgE`^LCZI~D40Dieegn`U43_r~^TTQCx`&Uo?SMKXxS`+M>J zuot59?xReu2hn-}HZ0U!R$Q`7{eJiJ9$U)f$pM?nUqyM-0K|F%sd0JyQm5kDn;~uA#Pd8|R|A_D)wyny)O4;|CuVdzxVWsD*5E`<9$_hxIY{`RfYGS>C>lsL)FUu{^Q372m9*9Po543 z&z?OoV>jF%4EFX9_6~Hj!~KK3;nSyk&uj^mpl0F8vxEJ|2anC*ngnHDx&P$Z)4}(~ zg3%^uGgAc$X1icgYAkTawf4A>K5w!hV9R$r7u84s9h)0wFmfS_$%$zuW>^>luq@L2 zQa`7O{)ER}yfDEKz{IXgyZ^;UkW!7yWG2HZis30Nx(P;R!$gQ-i$)xnl_q)jzj#FD zQz~CLMRj*e+gP44-uKhz+zYGk7XPcpv)oDAEVCPA8gIc9U{6crHf~PlnH*g9H1pmrAf&X5~5o zksy@$FRt$pCy>@$egjmVnR~elxN&Ox>Rqe%>i=;&RPH_&`?W>f8#;@4A>G4t2WZ5e zS^kf^{;CGgFS|FoV(e_4fo=0zhFWB?)FzWVp8!k2`mk*i z00SS4_J=QW0$kHV6GMI4x;IiwDEw}(6Uoe;H_BRn4`M_zXAdR=v=$V7^h5^?zbcwY zv+7Qh+zIDfI|%$Gy-wt)by1Hj5<4{u$n>zf%MtI&H9&`Vv8$8vbPdKjIV^DE=*}U8 zmj#=4Cvo^Z6y2mJqVd6VF}4SZ7!RMs_AESzhuG4cWLJ`%NOmmQ8_8Zlux<7c2mYP9 zkB`*fGxhg_Bp6!0U@z^@*I4JXOakya5&(JA!C%WoM;6QJoai3<4d?;*g8&2g@@@*k zlg{isqaO+gK-E!C*rxiuTyy~82^xaG)XuCd799wGqg>@7*LkEuSK=NUx)S$@panmc ziw;UW(EA=?iaXO{ao?FPC4|tDqC?%9&e5e_IU|7lzk^m=9c9Voc!@i{n5_p8;X$Rj z5zJ1PRk4&otcKl<6iQzzjrBM@XM%&I=%`s5M;#Csw0IYvq3N?`VKtmiah(DcJ^*J5 zR=wceN9k{8kz4<=kY=u2;Zs&rjf|JAtvRRB7wL)@S{ztGnUA)!uq)vb8$*<rM=ClwOjAYfIF6L=2$||1l(~V)!En6=^WGvy- zx`G3M2?X4%H@^lLIwJwMt?C9jL{LQ0gH{~CeX0&MU_l)g{!m&j{ho)qQJ+0ght4Mu z;(8!FT7VHs#c+9yv`oH3Ya#1bX2vj)6nW&0426M6cVh&ez)7{S5l{D({G-XW`C^ZL zT3JsVPlNBiofQ2jm~k7_Bl$MJC}IMxc5C^(;CtzK*r5rCDQS(*?H$vcE+93u5M2-P zuP`3&>SE35X8;ZN?+|J(q0D(~)NhT31`cXQ@`+tC&wLqE2;Q2=bK(_irh97B>*r0)gFKY@RoudeY zkDw(VmENbJ$3yMY;1Gp%U}xeFmzn1_x35e z-8<-$-dSPcu8FAIt*wN@5z+Ic*jN&#rK>~@m=^G>bESUzQ`YqGzxr!b88)i6SwZgF6b1QSL7K~HD z<)62(*cAZK*~M^qY0SNFDL9SY&V^Yu_-gmVFv0y4^(MEBN>Zgf{Y0Q53Iy5?=I>yA zL()}S^TIjgTJf4f2m&{A}713zZl)z zUnKHLc%>wNm*85eg97qIdFZ8i=SMmIQM--)C|xUYRv3_=ku{?#yWJc>;F5$-#3>q6 zDOGjZBSoT2h9ij(I{BpRNh(_OVzXB^K zWl;#0s_={+3uEn(+}Fubw>#X|Oiwc0k77Wt9}W_I$qe@+w!ilrBq(InFcz-BHn)cR zE+bev$&LXF&+A-|71(H&CdF9oV2g5w_+<#LuK@MWh&g?mS5kxaBi_Ek<9C=`joeQa zH2S`}nm7nAf9t4-3=M2;awXAICwR(=dk!o9Ad%_B=MW{DyoxQ#=v za>mW17*UM1X##mWjq^M%)hDHuLo1!gVzCgjL}hAS@}UO@wpvizs#`uHSXwoDppnc( zQXj(+xmNk@jq3?v6bH-vDu;{Eg2TBVgsnKw37{)(8@wE16W3@&_ZuGUYOUV5k+P+; zbi@9zJU`Ebxmy#l9RnD@UE%RiB-+ep> z!|wq*#}`)dfKdk!lVQMQdJPC#*NZkaw&OxNkxr2vo_2v0*!bn%;gjQQ5$cnm-%>UZoFjBCwo7~Htm_}R_32PTt_U(vUv zL$G$qz;OZoacBp!JOM-Hut39A8tGn^>z}N$>A%_Z-=et6lOj(BEXxxSu>zK+e&cTs z_3yWO|9*?B984P*IQjEDV%PW!=YO8F6~Mz|Oz;a)!ZL~2r7Zvp#Ge@~abrusQZsH< zC~zMzk?}<(W*GHqz!sHQ&delW{d;Gf0=V~i!OPieE_vIhc?I<6`L&cqrk4mGeUAOS z&m(s0_ZU8!x^kB%t2fm&4&GE#z7PRB0WZOGUdBNuVDH3*jDweDS=_?UfPGr1$4`rZ zeLzPgddA-Y1Djrzf(F0rwaDV&HOfu{_Dh<_!TXbd9f^DyYvd|;2-wTTqN*jGAc+_U z^!Hr>p-Ya6FUMt?qi7N~Snw%NXCjvv|0&q8t2|jfi-RBd^h$yEejf)P`FX&GdvWjz zLfi&yxE}{(63m8A;@|`}aKMI7>HTGq1#I{%4qj%E`h6T6BRj?R1~CMDs;DP>Pwk-X z@8NLm??c&3uu5k82lShUVgE6_aTc)sCvoso0kLBCpZ-7Gy$N&M#?mhQS1gu46y|EI zkkn!s^n~SjNxbilV;z-iM1m4x5TFO3Y(?bx?O%1z)&qdDl5^g-ZrxPM0)fF`)}CIU z4n}tOkc{l^op4z9`oW;??I*p*MU^Uebl}H#0DXKkfQ#Lv_h<+gdr9xnE?n#sUx`$Br04m?xOL{Ms zb3GmdXce8R;czeMJx^=dTl2StxV)FwNl#PA9ybG>^b8$^HBrl?X9#DHXUCWHBG|F$ z#QP<^u#Nj(9N}*OkcGb(?h`E7z`xGoxH=Vpr=VK9lL};!+1RY!M2FTQUB7P_VT7Bs zDg{@;YGpJDzREAAaqtqr$Oi2K#7YhT>PesHN8>ln1Wdl%K~ z7z6A(9QdZu8(#Zi$6c?Xu5V}ATkfh^|`4OVuX-adZn_tR2Q1yKMzkgt%j-a z6L7%2bHBAlV(M>n%yZ{@=$LBw@aOOdq6t5)b7sCV`wq|SG_PeRpQ4}GQ__^v8iWVr z(XDic+=F$1MLSsw{UoUJ4_f6P9aRPeI-a{PenJ*CujO;SRv5pB!}O+L{6Qg(?(o4b zAKvD>!(;xT5R)kC-S=uLqqn)`w!XdQn8t;a&K5F!))#C>VcPh%TbEJ7oNE5n@tzrf;eRYD4(}j7kkuV@X;hn9RIjIXcx&zCKiE}7&DtnHNk>)n(IH`G2YgGWvTG?w={)-T5`<(M%6I@Jz}90>2(OCXq7cC zbgCY2ZQX=}21e*O2?D2x+uH90X5l{AJb3?ZT#MHV(gu~qeXSg2%-K#M%TfC6#-xb- zV{R41#`FT#A`@V!rPHL~xrtP&l6q~Bj$Rwf_#Z_>%k~xf{}SvuR7>^I9`%33-!OvG znN^6zfor4G1dwPOmeKNaFhp=~ywu*ts`;uFYwTb)#7wYqb+o4gQBpNiS#YpCOO zfjh?fXY|U#9t>_W6@$5XZLR!XWv9$U82u)mzVuj$qK`%VhmFJs-@MW9MO^bg3Z8O| z*k$}p8h87KPc^iLctUe zzKPy2PE3XXVT6Kil<1F?M?6#3jYW#$NNJ!}lWDEy67sG=myYByuL1JQ)z#sW zv{cqBc!UHvfWQgyW7_m+qKJDgR{|?@dVZw?q(H<_9$!Y|a;4jfnhC5?A-#+KZa=$G zyoC1>#SKJAeJfpqwRfE+y3OVrY6r5?ztu5BfUz3fupzW-xbI`z*UBWDSYyi--KN0Pyhmk&<&u>_D4K%LVsOt5u9;b01b!SUip~_cN@AuJO!T3QqpC57 zshzZ#>a|}p?vE6N9)dMouwo~?D{4+|JuId=IBcE)%`UX5&{8_*YZ9m0r#5K4#|cAs zUW+=HrQba6#c66#5VI0O6hs=_iM0R%fwCPWr}QneeV1%xNdwZZw3v>|gcM7QDSAhx zJCK#Qm_||gGsNIXp|}zy7(F52V4~uJm)5k2zZ4tED9WM;bDN|)$WJ3k73gww-Z~%> zn4hvhw#VLni6jsoXle+LaH*IVGWP=Bb>%Zt9>a?eIv1HbTud=zz{}yB#rlif)(>p1 zL7&ZYEM3Knmp`j9#FS5`x&kbwhauK2;O>Jg(OA$AJD%~N4xn0S_B}f0sVFcc)RW8+ z8w3y~&aeA2wPpvNgH9Q>{-7yLXEm?Og}d>tT&(rU)QL)t0|uK3FJkMK8G2==LOW%e zZ<0>|pc;HJZ9IEdE)Wxbp$+hJC9W2sLE7!)arvnM0zWr@FU;Q)6$roI9FJ+-n|JgU z!64tlRhirgFyA0hKiqVq6PM=oRIOI0YD&F5r~vE5h=}MOGAxFi9Ug$NLdq+Qh{aETIx?#aKeA5 z92nqqSU32i#))_go^)Z7JqMb$ogRzcH*;OX1HeziyK}gxxzd-v>( z9{1N^lVIGH%`7h9<~JO4Abn3Sq>b0I2)hag00=~d%_mky+@Qwm*hORD#6XJieU~roa@$Ux{M1JX`@xBrdRotVE zg#?I=yBS#^&l=Avvk;!^`@!cR*`acwbZ?aC$&*qC#@*L}XF3pWB8ykKys&@Y=}fjZ zI1QXXZEPA?5q%6B__*Oe4^6xr+EDb>_e?*31}rb`2wsUzUh`J&F! z>5a6QsEb97S5x>G03B|emh~&Ghc}2sCc4h}enQ0E0~3Px%7);*U)+EUMfgvOR$Oxl zwy~-GsapiWWsMKaEvk~f0?;IV^>SI83+UBc10|WDK6Dkm0ZyX$52UJH*lKCu;R6zQ zh&7vQsM}sb?dBTlSLG@83>-+!nCVDC?KFBryNlu6872b}iJUu-)GzCgQ!J-3mLS74I2h{TcOVc+Ej#M-VY9 zrab^z|AD&u#%cma51hFFL5Vl&=z%&O-Ba-g)gb7-vgmEcAJkF*xBNs^or&n!~dA1-x7F z{&W0LgKqO>9O7>ABkw`ViTCI+Es9(3hegebcl8oSQyw^(HePVGU-d%Xp-eV(#f-}h zI}T4M?Ugjv6IU|`)ZyL|N!nljmp+}} zrghx2XE7eP_DI9CDhh;M-4&9t8%n=<1J*fd!w}J^UA4i*?8X~ z78_q8clf7;V8h%|9)ykmWs)%c)q)SZb7&@YA|9oqCSu%b6~9D4xW}oOu=P4t+-hGS zcCgjJFdWyMD7660wy36&kFD$%b|?VRLxNgEJGOwz*~%KDG%+DgCJis5-8$D}r=7kv z81?Up405+x>=Xs=z`3Y)tXh#TMZ=>QYO6%$KF3Y$lT^QFl&=WW}A^U$E;R0v;`8N*f#y5+IBJc zREQ{hQ+eaDaVB_*us9avMk^J6uL)+ujlD#Q*Y=LJ_e=3dy)J~@ImwD?Y(;+PnKb*1 zZ#_W0vyWEN144pU%ni+6>I^TjMBi&Qb}5bIIBmmh!nZC>gr&9T1CYI3L$a#Q;#+-| zT%*$K)I^hU{ibNFt0pu$D_uN@>eXr(c{`e7EKShHGorYOR)DtgA`l)pGFGN+wb~N| z&Pi>G8q|bH2)SAv3Lz?@SgeTJkwj?%%o0|u>5j!Aw4tHd$Y!9CZzeyuht6-?&45B?N=HJo~ez9pK(=dKH*vm?hImE{s=^BV5 zF_fX<%zW=nN^??Z;!<)6F{K6M1V1{qhe#zpD-71vxPNXvRd%c<1z(D0`efo)W1zF@ z0<0631b4?af^SbQ-W3!-#l=l7g^7#fxj1bXK_{K1(9w0RB3Fg!HOrdt&TJMBb$mVg z;fGDXIw-U=7PA>L7e;Pw4xkIdRCBQ?n!q<3BT@f(j9+&gYcA%&$FCQ+N%~FWICJrw zR(9jQ(&2LN%-?4!$;Ek42>95lfO3g%)K+&5u?xwscjZC8M=iH*(0N%2pCd;Wd^ z?ca-sBvH4yc&7EZ6U!~~sn`OGgc%DsQu$0w#+ICntL>fxzD5|@YBYfzZaKm;z7Wb% zpM@cUa}l431q%_yf$*FG)p58#^C*hX#N5WF&+LPEF7BoAg3lmuexkMFzpHq`=lqN@ z#;1lPFT}#qr2gHB*SA;5LgjJAm)2uTGM)wM^@^z1Cu;+=x)tA!YGznSzqgFX2N`P| zr+6!_1le+pV)ho`6bK={f&W0fM66yC_pw?PG8&|(EEBvFrt=$Dp@GCwacyQd0UbOa$GK1r6ksX38|FfM*ccn7!GQo<4&IsqV8D{G z)oOoBh^3y|1AB?Zv}YAd;#{-COQ9ID+Dkpk6R{}xTr^ZQGtp4C(SqNJ}4>p57IP-Cpe3Nm`_?fx0)OVJQo7FXm=X|l<({zyQ zCC03YX3DE@FvS_48?zk%M+mgJ$MM8eHG`@&#f2qHt2*P8MpaWj7ZYgfoaa%rWX2I@ zCYF35`ut2xL_RtjorynGe8$*fdmA_FndtMmn2qM6IXsy&c4nT8`ga$%&PHqk_a}@m zZr!r?&u%S7YzFsdjGx*2P{2%|5Hpu*U=~GqgCKOfbI(+5s#;G7T!X&0BqWcbuPWB^ z_C$*|`oYqXjj1UzB94?(}h>9q`9UkQ52tw zQZdUpo#KsC1Ttac--|for?`%i_&kcvC)Q^Ux54{jjQ;kR2D$5djkuO58VzaEFg{6V7KkB$qR(Fz<`sf< zqTfM(J!lu4T!0n!xG*^hn%EOa*4MZm8a}#^UcqAYHJhzDr>ze~6q(=+fS!bj0*H!F zwXnbyI=;c+(>KLN!;5#cs5uhI>eV|Y$O!UF>kuTkGBHS)b=njFXCqy}Kp8=NSriTK z>Z{OS_lCZSdQ&~f&fwn>zG924TdmzNvt&QiWLM_5UroF zn3++8IWt@WAvQHh`arT$fne>&w);dHd?Mw8BeXZ<# z?UgF$S(T2>Ut2iqEc|tuF4O1PM3uFyzKp}4Ua?+Ea=g1ZmJ-lzsxm)Malf&h`YeU# zJKC$hl5CwQ>8HMu2xI5EPt~)=GDQh-E(1dp2h-5Bbg6`B*aXI%)1=7&qaH+o6X8Z6v~|4X^A!#Ge?zq`L;MVb@kGXp?dA zzd7!O@0pRPS-=r>M9yGq(aTw-=UKU|?4Wz_+)#$(4LWNV&Pg=xRw=e zB5LotSli*&Z7rgx-rin!w564dXDY=t%z}I-MenmdbRK0Vsk+(Qo=Se^?}ClB(svjB zt^g8$nC7XzPg1x_5=e41lgHY;?Q&_53|rLsycij} zU4Tk%wJP9M6US7OSPB$tlCFB~N-Oxi3RAcaeS@+>+q3M;n*KQhI9R7?Q@83hZ% zn8+;oe5%ru6o8_@dRMCywTfD2mwKI@xg6~JYj^4Lk2xoEd7XSvG?!;^xb5x+4$P#T zH`1ds9ALZNzDS4%cq_#%;^Y2`ym4vx#e`;$d58u2Kfjf$RqXRzeUV3RlSIteM1`G%I$4i&b{wFF-+$3cM`mapGomb#_uHK&+!U$R-dJKN0!~2fZ}RTlpUjq zfDMf)ZMGbO`8#P%{~`0GfYmhX`*DGbE`M$?RNohKS$#=$vU&q{LpS}#7oWFY)3GwV zMCa&I#ZtR9mq+qgKs2FC0|P3|ls1z6t=7SSUb|7EWV|G~OX;F9)L!qc`(#*s`3Ev) zmk(w9Tr&Pp#?K^~^beBoX3wOZmf7_Ii+z`TLPV&@c*Ff=5# z%Nr5wPtllhV7oU>VyaHVNnEYoN!S~Hkhvbq)Q;tI_XNS5y*Jm@8ZRZggc>ahVV~FHq#pU$%$E`u1t6)9QXeCndXFzaAp#yx2^E9F z+^|q4{Ew}J=9}Qn+A@!>8Br9!l;WiW+}s{8#{Wp;CnLLMQ-ZVg5%690||ckfEZi*2F9 zyh~G{X4}Y;?e_1MdiXOTZ^{2}e^iQCMeth2ZVf2sG-O=;{Ikfoyd^U1_1(L^vQ=^S zu3RY?h;lpCT321BB#+4HoR)UE=>S8VfGCP_=mw1Acno--9>R6$gTRFlzsnK(U5cCX z=+>>@eq}_ebvKk8;F5O7RC2`YMn0=$e;*-EjYD_kCP3MXAdu^H-Lz$I7xH z0B0pVWZx{~eeRIYd7q668=411SM(k{eD?6&!v{T1QlVhXsva+c748^+h-3kUJZL8U zF9DvEsZNj!+1FTN!V>A3P?e$TR%g9MuY~=CvIL{xJcADpwrC`|Hpvouk$c)UW*Ma* zGpL`WgC%5-EyYsCHHqy9a?4DX#H7`Zp25J-iNBC}*Rk&;%>73n#CdQZ8SJ*da=58N zjnJ_LOKW_YO_QgRgSmH>m*0|KmLZR6;GL#MX#lKC4f7tz_}0y|D8WC})H2S>Sb+{dHVqQD_WE~j+vcr?W)nis z*&1om)!+SbHES|R6Gx4_Ce+DEL={S86e_xC+zR_zNonKEjwXal7p2G8fFYFjw{8G7 zu5U91;V8$oa9;rzjkp&3cx5kewAbVjCaVS zAJi76Hd+eI0|C@fCG<3HH<$oCz#I5Ia(t15jwN9Z%W_` zC6Q$O^a9bE!7^;i8Q?(E!nx6}?|eqjBBPZEehxNdn%?c-VUC{ofn9fU=zF(;n>Ngq z;+X)IdgBPJi4Iw%Guj2Bf5s>HXXmrlYrjcn;Hx{vn@L=E#VX);_2ALs@6x@ zaRUE{bj@p8AKJ6f(?qMz$#{i58y@cItgl;c&>98qXixUGQt-mC3O1g=00lYha>q0p zs2@)fb_cw7q-W9qCLL>VDKot{zGd|pL>*N(E_>S{0MX8$Wmd#Jext{>d+T13QqJ&% z99S_V^8B0?S9pIIbHkRZUqc_j2O@(I zWrz8zq?Y7z=jKg)UkGt8icZQHJ^O3T35?@d=^p5>V?SoXk!`MgzZCRWi4RMcfDjj) zd6Qd~*N@Z2dI(>2#Wd{MX#mHE4M7T8gH7**g|qoWj~50{Vd?M|PVvj@Ofj)I9vyF* z@2RtQxAK|RtJUpbVZESV1>^GHTUs-6vbK$MF5^v&#-jJEC^5_pHPZmv0UP5GXg;oM(h4(a zT?X%FGEwcukZ3a2>uuXaf2|24rXDw8#ij|nfm<4Vxjp4doC}bf0#a_$RnCpS9t-g5 zu`^JR8Blfx3Y>w0b$8NlD(!oTqhD+o{RQ1cJfr!p7mM?De*x z*3My8ZkT;&p4vFfOIp3*Iq)Pe68vkwh@T5be)6|pb(3L-ChmjYSx<)|(;@A2D4Y)E zreoSQ8W4r-=A(wW?3|BzEO`me(_To?PWW8AS@WqV`COEu&rbut>uD6t?^afIJO|bB zR5K1g&&Tnpm>TDJmYj;IV{f#Z^I0tUlvhXdW1iFem*-BdnMP4O6;_N}r%^O@48%EQ zAZn-zVr#SboR@s=5-Lu{OL3k|9B*{aC*qt>#VHKp9Q}_%H@rgEB+DrJBx4CxElJy^ zM%&rwv}L2FVg_-(x=SG0LyM-Z7EMWurhFo%&X5v(7en->LSd6OeezT+;whJWPCuKv zg?>thX=<|uo3@A9%*si;JspPLv92%$tv zm|flTDB8N%nU+O5I^EtT1=!`>tn$-wd@klDOoJuoVjisW6I|tUexY52`I0X56SvSI zq-ieB$wHsIg?`dp=yS#^k;Nyx;-_w=rsIh?N!%6_CwwYS_*|UBLf3tuOMFfy<&^OW zY1P~;@eMt<>+S-Vy6=~cG|J+ORHdp43zN~%p8P%LV0Pq8RB1*d-CMJHz@D&=^B8Gw}r$FoQ)@>ji zT4`9siaYwjcw7n@Pk5`rj&VaAOsBSU8DS?4k!sl?QZ1<)>9Q?SEtzf>Y80<*muGbq zpYV+Fvb%X$iQTj{{@@egs$Kg@8^>`83~RIFTxtF_=Q!AnaR31$2ku-~q|4YwY9`#i zPn%pqlXF^A?#_Kcfw0Vqne2(4XgkTJp5)R@@&tcDFnXyK=H(_a50_+cCoCMwbXYpP zrDvsV%u30#4N_fuGD_I)Ql8)fb*Fc0bxa)w1~cbTSOQ%#FW zmO_ZHGumszthQGgMEf}1$xV|WPN+iUkFaDjk--}>{*BRwVY?3s9dzGKAz_F%j;7q& zg0Ngt^8#(AFtPSfeOS`)g;!+v+H7*KZ2Q!FD4Qw*P@LMly;G_XMj6}KM@7LOlrcgWn;R1UaA_U` zCM&5&6#PXQhYGhBW(k<7TZwvPEnt2D!xFbj12A^GvWNxFJ4~P>wqb3@LCt77Z!X(L zl{P3$7>mxB*lm1XnZL@wq3ID0e!8PW24917ySO}&RjSi6HOz^6u78o0L0i=3`dqf} zRcBJA)8x|l8R(m2i0zxWgw{Nr%^+j7ZYF`mvV$&y7V5jRg{`rqfY9i3#ESSD3#jb-hgFMBAp?GlVK>?BJL{7fwUw+FH zJSay~Ee$1IAGPsyZdlD38c%e)htad#ZX#vfL0TI~+n`0A7;AK6 zEPSQ*uhjZ{z`Jg_(e0|P*sijAxJm5p0NEdY+* ztl4I9%I(~29Z=!k)YMm7v}B9+WRPFIL2e-C5qswLs9zKnyKFwy>qbK|ReWir^iggO zI?J@6Nxc-yB-0O;JQKOWHKfbd3Yn-#h(V5`OSU;~S}eBIry5UM!?;W;`@uHKk@3hSx2;6@a1vv*<|5yyQU_; zDQS(af0)1u@2}T(g}M=nB7_UW8A8WGV_iPjbKaRVA?>DRV|OWzs^es)dBKV?O+L;# zCT;c~Oqy4&#!E2~XFL~Embevi#~q}St!B(d6?Cs+`h1&_-Pqjm zV#Yi7^m^^T1FIJr$jRmqP*rQYwX2_Se@eO!(bJh-N>PJ{dA34wRHR&*gV_*yiAGF4 z5thtD=(Vj)pO<|$`YT_Fj2n&_uR_1hDLG1iqX#*F6qxDf?kW(uQl?Xk^hdP^My)9@ zYOR4$?PL?ODNULw`^fkti=r!hqZK!DXMj-_Qtu5&G=+Ti?+|3eU!%PJd&&48?&_<( z@?7^v=er0V+D)NraC^^(anOu`q4)898GkKJ?8+ad3A}h+a`)j!c@RxG`Eq z5S)#b|KTbzqD9am?Zua7FsXeqr*&pMU5%7ZoQ}}bPUjLs;%~ft!|gy;XyH#$Wc<7f zC-dQ;=y~bmL`|@+leMjyc5ugjH;P=eavl1s?x^%UmHA6GwQhmK!^k)QwQIEfG7*rM z=E5qdYVKmA91JC@;}9P~uOz1n!nRrK45g*DsSeyyOvO!jh1wNbyE;L#nE*EKCArV~Mq|i9UWvW(}Xu z2U)cMx6f4ZviXeogYpd6ohs85DmQ1q(Qa+m^n7588Wz}%%_ak*2yLJ)}UN7<$Ch<2diMp>sI^vod?EwW>8&I0h@l7 z*)rHu>a6MuUIxRabr4=Sb3d`u`sY`FNkqm_2e8b>Ro0l_WhT;OnTe&5K~lcVh_h-I z(}kI5wt-bfZ z!WiCV4MmzC(mW#quOC`-Tk8_O+FN+h!M9#(d@cQ>!~87^utqw3vd4h=n-CfId*)Tq zFiRY$?bn9tsfmKJJAf^uMdvr5L{{naO*&mpQssj5@(ejP-|b8k9a3*bbv@GJ-DnPV zWK>6X2kBqcn$#*Js4YU?I^+$l8cGSGi?A}aMZeVBQDhcxV=5*{mr&l!vS`ZCHN{&$ z;MDsXE1?ooPtGeq z$7&oPfUIw9E6t+?%6iGEGQaflSn_a{nm5*sIE<#ql;TlhB_`jmjB6>VLxxI28A^JK z0SHfeM;Sz<_L6YTJDAV&=Cav?$e`VRlx3^c!z?a1 zBw4j*izLt;nU&~CSnclN9#6$3=}b~{4b@nzNt|w#1)9cjjAXN_AEGY6*qG{4rN(B& z!xxa9)X%|~sExu}nzHvn-t{Fw7v8is-p{-;*WgKtg4c8=gyPRKObPfr3*LR_I`2HZ z2$WOs4teWYMyIuN!ZEZ}t1Hoc>J)#Q#rF8H zQRZbwnY~7t$3K=4^w#GfDsV#Qw5L5=Tc;df(8<7QP(G07*EVkrv3$44su2JoBeF>z z=IA{)y?LAk$$C;2T9Ct2{(W%D;{vPw0;>&_fn$%tMHEJ1_|S$Lmr>2t(cqYkA*myH zqJ*pBDCPArr)S8`|E;FzIr(veert~Ya1dqLIIaNG6M})_Ld<~~^6YPc>@S3C`7;2S zHv}Yb_s}9lN({L3ifSl@C=6{lKK1CNMmku zS5tJFt7As-ZwelkRTRkfnw0U6EcDo@mxvc<1TSR;ucpKW2+96eL&d^B!r?rAie$&R zy+P=hH$tP|(9&cGOP6pu|EgKGAi>zzuI6$1A2kmsDz=be3ndXa%cg5Y9~E}mC(dcU z%hjrn4wQJ`yVS*{IqMqi0ArRl${Gdq(O!uXP}`9sm!T*N;1H6Cu%ZHqvI751liuhm zKeK!s8?}RUerD!|w!3p((^N<}^ytnn*vB9|I2353=K5gs8mW zP)AXXcZiY6Y^rG{K-t)LUT#(qW2MQqZ&1iu)R+d{`UVjjPeu%V-WTT|y5hiFpE7Z& zQfcwNk~bw^R_T3f@Lgp1(>&C_4Bw@HJf1HwHST$;p(gF^qDmDsIVk*0UX;r^xCPK- z=F)Pe_Sei@=^di4AEYPCQ|*yyZ_HAqte2*~=kw*-k1R2(!rOAGCbrPqi(>NdyT(6z z3*4h^`4lezl=~!4KWEj8^xK;hj>jxdRkAf$^Cwr2nGc{K%)v#Az`+^OI*^Wex~3zp zt2QI{qI<;Y_pW=oKge+T?Dh{go$;;t>g-lf4{|4=3RmvIitJZ)zWiViUj{|9c`?+98qEYp%K_vOhW`vZe|pJzm?r z)DhML?#>Q2ly|I9J$kw!pPT#d&yM}q@sW+yl3hx;SZ$~HoM~o4q(}W@Pk(=>T~2`s z>ufbYs%_81olm~A?xq3VE2IJyBrX#JK;^Rdb*KjS`hW>kh$3bV5eoGU*VYOt{Pwyj z`q)&Dmqz8o14WRt8cDNUGXA2W6H`1RI$TQ~M7CxOMu*qpdA^fP)1uC1 zS*l*Cbe4S|5zwvza0F}7OM2V&cJEDZJ1#{0R7MCRsImT@N`M6naRIjr%sNtt8Kkxa zz2vs&{npzqf>Mmb?WCs_!|p2zzj6j|hL!e`o?BW?t;_oA698QJuQ&nTXB%nwU)?nP zm(El3QTx<<=}*m@!KwM(otpQ^sY&L^boF}{f6Fw*{rj8ww=71rZBqjPlFsHmZ4|`% z%SZiV-sbkZcI(>>=kzOkPQU)aIbHwXH%nixIZI#u(JXl*Mw81145$W`Onw8=;vdcA zm;dFNB_k4f{8uu

%^yj&IlMAzPzTL^5v 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 literal 0 HcmV?d00001 diff --git a/Labubu/repo/.gitignore b/Labubu/repo/.gitignore new file mode 100644 index 000000000..8225baa4a --- /dev/null +++ b/Labubu/repo/.gitignore @@ -0,0 +1,2 @@ +/node_modules +/dist diff --git a/Labubu/repo/manifest.json b/Labubu/repo/manifest.json index f9f63840c..2df15e3a9 100644 --- a/Labubu/repo/manifest.json +++ b/Labubu/repo/manifest.json @@ -2,19 +2,33 @@ "manifest_version": 3, "name": "Labubu Extension", "version": "1.0.0", - "description": "A Chrome extension for Labubu", + "description": "A Chrome extension for Labubu automation", + "icons": { + "16": "icon.png", + "32": "icon.png", + "48": "icon.png", + "128": "icon.png" + }, "permissions": [ "tabs", "activeTab", "wootz", - "storage" + "storage", + "notifications" ], "host_permissions": [ - "https://popmart.com/*" + "https://popmart.com/*", + "https://generativelanguage.googleapis.com/*" ], "action": { "default_popup": "popup.html", - "default_title": "Labubu" + "default_title": "Labubu", + "default_icon": { + "16": "icon.png", + "32": "icon.png", + "48": "icon.png", + "128": "icon.png" + } }, "content_scripts": [ { diff --git a/Labubu/repo/package.json b/Labubu/repo/package.json index 4d43828b9..6ad89301d 100644 --- a/Labubu/repo/package.json +++ b/Labubu/repo/package.json @@ -12,6 +12,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-icons": "^4.10.1" + }, "devDependencies": { "@babel/core": "^7.22.0", @@ -32,5 +33,6 @@ "tailwindcss": "^3.3.0", "webpack": "^5.88.0", "webpack-cli": "^5.1.0" + } } diff --git a/Labubu/repo/postcss.config.js b/Labubu/repo/postcss.config.js index 0cc9a9ded..96bb01e7d 100644 --- a/Labubu/repo/postcss.config.js +++ b/Labubu/repo/postcss.config.js @@ -3,4 +3,4 @@ module.exports = { tailwindcss: {}, autoprefixer: {}, }, -} \ No newline at end of file +} \ No newline at end of file diff --git a/Labubu/repo/src/assets/icon.png b/Labubu/repo/src/assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e7eb9a7de07ed54cdde5e75a933b0b79505e00f7 GIT binary patch literal 47770 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 JYD5eJ{s+=fr{Vwr literal 0 HcmV?d00001 diff --git a/Labubu/repo/src/background.js b/Labubu/repo/src/background.js index 5b142a18a..b6bcbf5d8 100644 --- a/Labubu/repo/src/background.js +++ b/Labubu/repo/src/background.js @@ -1,8 +1,16 @@ -const webContentsId = 27; -let countryCode = 'US'; // Set default country code to US -let authValidationInterval = null; // For periodic auth validation +const webContentsId = 27; // For auth operations +const searchWebContentsId = 29; // For search operations +const productWebContentsId = 30; // For product details +const cartWebContentsId = 31; // For cart operations +const retryWebContentsId = 28; // For retry operations (keep existing) +let countryCode = 'US'; +let authValidationInterval = null; +let retryIntervals = new Map(); // Store retry intervals for each product +let retryQueue = []; // Queue of products waiting to be retried +let isRetryInProgress = false; // Flag to prevent multiple retries at once +let backgroundCheckInterval = null; +let backgroundCheckQueue = []; // Products to check in background -// Function to save authentication state to storage function saveAuthState(isAuthenticated, userProfile = null) { chrome.storage.local.set({ isAuthenticated: isAuthenticated, @@ -17,7 +25,6 @@ function saveAuthState(isAuthenticated, userProfile = null) { }); } -// Function to get authentication state from storage function getAuthState() { return new Promise((resolve) => { chrome.storage.local.get(['isAuthenticated', 'userProfile', 'lastAuthCheck'], (result) => { @@ -32,7 +39,7 @@ function getAuthState() { }); } -// Function to clear authentication state from storage + function clearAuthState() { chrome.storage.local.remove(['isAuthenticated', 'userProfile', 'lastAuthCheck'], () => { if (chrome.runtime.lastError) { @@ -43,9 +50,7 @@ function clearAuthState() { }); } -// Function to start periodic auth validation function startPeriodicAuthValidation() { - // Clear any existing interval if (authValidationInterval) { clearInterval(authValidationInterval); } @@ -78,11 +83,9 @@ function startPeriodicAuthValidation() { stopPeriodicAuthValidation(); } else { console.log('🔵 Background: Periodic auth validation successful'); - // Update the last auth check timestamp saveAuthState(true, storedState.userProfile); } } - // Clean up the WebContents destroyBackgroundWebContents(); }); }, 5000); @@ -98,16 +101,14 @@ function startPeriodicAuthValidation() { stopPeriodicAuthValidation(); } } else { - // No stored auth state, stop validation console.log('🔵 Background: No stored auth state, stopping periodic validation'); stopPeriodicAuthValidation(); } - }, 3600000); // 1 hour + }, 600000); // 10 minute console.log('🔵 Background: Started periodic auth validation (every hour)'); } -// Function to stop periodic auth validation function stopPeriodicAuthValidation() { if (authValidationInterval) { clearInterval(authValidationInterval); @@ -116,7 +117,6 @@ function stopPeriodicAuthValidation() { } } -// Function to destroy background WebContents function destroyBackgroundWebContents() { chrome.wootz.destroyBackgroundWebContents(webContentsId, (result) => { if (result.success) { @@ -125,16 +125,40 @@ function destroyBackgroundWebContents() { }); } -// Function to handle auth check result function handleAuthCheck() { console.log('🔵 Background: Starting auth check, will check URL in 10 seconds...'); setTimeout(() => { console.log('🔵 Background: Checking URL after 10 seconds...'); + + // Add retry logic with exponential backoff for auth check + let retryCount = 0; + const maxRetries = 3; + + const attemptAuthCheck = () => { + setTimeout(() => { + console.log('🔵 Background: Attempting to get current URL (attempt ' + (retryCount + 1) + ')'); + + // First check if content script is ready + chrome.tabs.sendMessage(webContentsId, {type: 'PING'}, function(pingResponse) { + if (chrome.runtime.lastError) { + console.log('🔵 Background: Content script not ready yet, retrying...'); + retryCount++; + if (retryCount < maxRetries) { + attemptAuthCheck(); + } else { + console.error('🔵 Background: Content script never became ready'); + handleFailedAuthentication(); + destroyBackgroundWebContents(); + } + return; + } + + // Content script is ready, proceed with URL check chrome.tabs.sendMessage(webContentsId, {type: 'GET_CURRENT_URL'}, function(response) { if (chrome.runtime.lastError) { console.error('🔵 Background: Error sending message:', chrome.runtime.lastError); - // If we can't get the URL, assume authentication failed handleFailedAuthentication(); + destroyBackgroundWebContents(); return; } @@ -144,16 +168,19 @@ function handleAuthCheck() { } else { console.log('🔵 Background: No response received, assuming authentication failed'); handleFailedAuthentication(); + destroyBackgroundWebContents(); } }); + }); + }, 2000 + (retryCount * 1000)); // Exponential backoff: 2s, 3s, 4s + }; + + attemptAuthCheck(); }, 20000); } -// Function to check URL and login status with retry logic function checkUrlAndLoginStatus(url) { console.log('🔵 Background: Checking authentication for URL:', url); - - // Check if URL matches m.popmart.com/us (case insensitive) const expectedUrlPattern = `https://m.popmart.com/${countryCode.toLowerCase()}/account`; const urlMatches = url && url.toLowerCase().startsWith(expectedUrlPattern); @@ -163,21 +190,52 @@ function checkUrlAndLoginStatus(url) { if (isAuthenticated) { console.log('🔵 Background: Authentication successful - URL matches expected pattern'); - // Extract user profile and save auth state + + // Add retry logic with exponential backoff for user profile extraction + let retryCount = 0; + const maxRetries = 3; + + const attemptProfileExtraction = () => { + setTimeout(() => { + console.log('🔵 Background: Attempting to extract user profile (attempt ' + (retryCount + 1) + ')'); + + // First check if content script is ready + chrome.tabs.sendMessage(webContentsId, {type: 'PING'}, function(pingResponse) { + if (chrome.runtime.lastError) { + console.log('🔵 Background: Content script not ready yet, retrying...'); + retryCount++; + if (retryCount < maxRetries) { + attemptProfileExtraction(); + } else { + console.error('🔵 Background: Content script never became ready'); + handleFailedAuthentication(); + destroyBackgroundWebContents(); + } + return; + } + + // Content script is ready, proceed with profile extraction chrome.tabs.sendMessage(webContentsId, {type: 'USER_PROFILE'}, function(response) { const userProfile = response && response.success ? response.profile : null; saveAuthState(true, userProfile); - // Start periodic validation when user is authenticated startPeriodicAuthValidation(); + startBackgroundPeriodicCheck(); chrome.runtime.sendMessage({ type: 'AUTH_SUCCESS', url: url, userProfile: userProfile }); + destroyBackgroundWebContents(); }); + }); + }, 2000 + (retryCount * 1000)); // Exponential backoff: 2s, 3s, 4s + }; + + attemptProfileExtraction(); } else { console.log('🔵 Background: Authentication failed - URL does not match expected pattern'); handleFailedAuthentication(); + destroyBackgroundWebContents(); } } @@ -210,15 +268,240 @@ function openLoginTab() { active: true }); } - -// Function to check if stored auth state is still valid (not older than 24 hours) function isStoredAuthValid(lastAuthCheck) { if (!lastAuthCheck) return false; - const twentyFourHours = 24 * 60 * 60 * 1000; // 24 hours in milliseconds + const twentyFourHours = 10 * 60 * 1000; // 10 minutes in milliseconds return (Date.now() - lastAuthCheck) < twentyFourHours; } -// Initialize periodic auth validation on startup +function startBackgroundPeriodicCheck() { + if (backgroundCheckInterval) { + clearInterval(backgroundCheckInterval); + } + + // Check every 2 minutes (120000 ms) + backgroundCheckInterval = setInterval(() => { + console.log('🔵 Background: Running background periodic check...'); + checkWaitlistProductsInBackground(); + }, 120000); // 2 minutes + + console.log('🔵 Background: Started background periodic check (every 2 minutes)'); +} + +function stopBackgroundPeriodicCheck() { + if (backgroundCheckInterval) { + clearInterval(backgroundCheckInterval); + backgroundCheckInterval = null; + console.log('🔵 Background: Stopped background periodic check'); + } +} + +function checkWaitlistProductsInBackground() { + chrome.storage.local.get(['waitlistProducts'], (result) => { + const waitlistProducts = result.waitlistProducts || []; + + if (waitlistProducts.length === 0) { + console.log('🔵 Background: No waitlist products to check'); + return; + } + + console.log('🔵 Background: Checking', waitlistProducts.length, 'waitlist products in background'); + + // Add all waitlist products to background check queue + waitlistProducts.forEach(product => { + addToBackgroundCheckQueue(product); + }); + + // Process the queue + processBackgroundCheckQueue(); + }); +} + +function addToBackgroundCheckQueue(product) { + const existingIndex = backgroundCheckQueue.findIndex(item => item.url === product.url); + if (existingIndex !== -1) { + console.log('🔵 Background: Product already in background check queue:', product.name); + return; + } + + backgroundCheckQueue.push({ + productDetails: { + name: product.name, + image: product.image, + url: product.url + }, + productPrice: product.price + }); + + console.log('🔵 Background: Added to background check queue:', product.name); +} + +function processBackgroundCheckQueue() { + if (backgroundCheckQueue.length === 0) { + console.log('🔵 Background: Background check queue empty'); + return; + } + + const nextProduct = backgroundCheckQueue.shift(); + console.log('🔵 Background: Processing background check for:', nextProduct.productDetails.name); + + checkProductAvailabilityInBackground(nextProduct.productDetails, nextProduct.productPrice); +} + +function checkProductAvailabilityInBackground(productDetails, productPrice) { + console.log('🔵 Background: Checking product availability in background:', productDetails.name); + + try { + chrome.wootz.createBackgroundWebContents(retryWebContentsId, productDetails.url, (result) => { + if (result.success) { + console.log('🔵 Background: Background check WebContents created successfully'); + + // Add retry logic with exponential backoff for background check + let retryCount = 0; + const maxRetries = 3; + + const attemptBackgroundClick = () => { + setTimeout(() => { + console.log('🔵 Background: Attempting to click add to cart in background check (attempt ' + (retryCount + 1) + ')'); + + // First check if content script is ready + chrome.tabs.sendMessage(retryWebContentsId, {type: 'PING'}, function(pingResponse) { + if (chrome.runtime.lastError) { + console.log('🔵 Background: Content script not ready for background check, retrying...'); + retryCount++; + if (retryCount < maxRetries) { + attemptBackgroundClick(); + } else { + console.error('🔵 Background: Content script never became ready for background check'); + destroyRetryWebContents(); + processNextBackgroundCheck(); + } + return; + } + + // Content script is ready, proceed with click + chrome.tabs.sendMessage(retryWebContentsId, { + type: 'CLICK_ADD_TO_CART' + }, function(clickResponse) { + if (chrome.runtime.lastError) { + console.error('🔵 Background: Error in background check:', chrome.runtime.lastError); + destroyRetryWebContents(); + processNextBackgroundCheck(); + return; + } + + console.log('🔵 Background: Background check click response:', clickResponse); + if (clickResponse && clickResponse.success) { + console.log('🔵 Background: Product available in background check!'); + + setTimeout(() => { + let cartRetryCount = 0; + const maxCartRetries = 3; + + const attemptBackgroundCartCheck = () => { + chrome.wootz.createBackgroundWebContents(cartWebContentsId, `https://m.popmart.com/${countryCode.toLowerCase()}/largeShoppingCart`, (cartResult) => { + if (cartResult.success) { + console.log('🔵 Background: Background check cart WebContents created successfully'); + + setTimeout(() => { + console.log('🔵 Background: Attempting to check cart in background (attempt ' + (cartRetryCount + 1) + ')'); + + // First check if cart content script is ready + chrome.tabs.sendMessage(cartWebContentsId, {type: 'PING'}, function(pingResponse) { + if (chrome.runtime.lastError) { + console.log('🔵 Background: Cart content script not ready for background check, retrying...'); + cartRetryCount++; + if (cartRetryCount < maxCartRetries) { + attemptBackgroundCartCheck(); + } else { + console.error('🔵 Background: Cart content script never became ready for background check'); + destroyCartWebContents(); + destroyRetryWebContents(); + processNextBackgroundCheck(); + } + return; + } + + // Cart content script is ready, proceed with check + chrome.tabs.sendMessage(cartWebContentsId, { + type: 'CHECK_PRODUCT_IN_CART', + productName: productDetails.name + }, function(cartResponse) { + if (chrome.runtime.lastError) { + console.error('🔵 Background: Error checking cart in background:', chrome.runtime.lastError); + destroyCartWebContents(); + destroyRetryWebContents(); + processNextBackgroundCheck(); + return; + } + + if (cartResponse && cartResponse.inCart) { + console.log('🔵 Background: Product successfully added to cart in background check!'); + + // Move from waitlist to cart + moveFromWaitlistToCart(productDetails, productPrice); + + // Send notification to user + chrome.runtime.sendMessage({ + type: 'BACKGROUND_ADDED_TO_CART', + productName: productDetails.name + }); + + // Show notification + chrome.notifications.create({ + type: 'basic', + iconUrl: 'src/assets/icon.png', + title: 'Labubu Available! 🎉', + message: `${productDetails.name} has been added to your cart!` + }); + } + + destroyCartWebContents(); + destroyRetryWebContents(); + processNextBackgroundCheck(); + }); + }); + }, 3000); + } else { + console.log('🔵 Background: Failed to create cart WebContents in background check'); + destroyRetryWebContents(); + processNextBackgroundCheck(); + } + }); + }; + + attemptBackgroundCartCheck(); + }, 2000); + } else { + console.log('🔵 Background: Product still not available in background check'); + destroyRetryWebContents(); + processNextBackgroundCheck(); + } + }); + }); + }, 5000 + (retryCount * 1000)); // Exponential backoff: 5s, 6s, 7s + }; + + attemptBackgroundClick(); + } else { + console.log('🔵 Background: Failed to create background check WebContents'); + processNextBackgroundCheck(); + } + }); + } catch (error) { + console.error('🔵 Background: Error in background check:', error); + processNextBackgroundCheck(); + } +} + +function processNextBackgroundCheck() { + console.log('🔵 Background: Current background check completed, processing next'); + + setTimeout(() => { + processBackgroundCheckQueue(); + }, 5000); // Wait 5 seconds between checks +} + chrome.runtime.onStartup.addListener(() => { console.log('🔵 Background: Extension started, checking for stored auth state...'); getAuthState().then((storedState) => { @@ -229,14 +512,15 @@ chrome.runtime.onStartup.addListener(() => { console.log('🔵 Background: No valid stored auth state found on startup'); } }); + + // Start background periodic check regardless of auth state + startBackgroundPeriodicCheck(); }); -// Initialize when extension is installed or updated chrome.runtime.onInstalled.addListener((details) => { console.log('🔵 Background: Extension installed/updated:', details.reason); if (details.reason === 'install') { console.log('🔵 Background: First time installation'); - // Clear any existing auth state on fresh install clearAuthState(); } else if (details.reason === 'update') { console.log('🔵 Background: Extension updated, checking stored auth state...'); @@ -249,18 +533,20 @@ chrome.runtime.onInstalled.addListener((details) => { } }); } + + // Start background periodic check regardless of auth state + startBackgroundPeriodicCheck(); }); + chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { console.log('🔵 Background: Received message:', message.type); switch (message.type) { case 'CHECK_AUTH': - // First check if we have a valid stored auth state getAuthState().then((storedState) => { if (storedState.isAuthenticated && isStoredAuthValid(storedState.lastAuthCheck)) { console.log('🔵 Background: Using stored auth state'); - // Start periodic validation if not already running startPeriodicAuthValidation(); chrome.runtime.sendMessage({ type: 'AUTH_SUCCESS', @@ -268,7 +554,6 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { userProfile: storedState.userProfile }); } else { - // No valid stored state, perform fresh auth check console.log('🔵 Background: No valid stored auth state, performing fresh check'); const authUrl = `https://m.popmart.com/${countryCode.toLowerCase()}/account`; console.log('🔵 Background: Creating auth WebContents for:', authUrl); @@ -297,19 +582,43 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { console.log('🔵 Background: Starting search for:', searchQuery); console.log('🔵 Background: Search URL:', searchUrl); - chrome.wootz.createBackgroundWebContents(webContentsId, searchUrl, (result) => { + + chrome.wootz.createBackgroundWebContents(searchWebContentsId, searchUrl, (result) => { if (result.success) { console.log('🔵 Background: Search WebContents created successfully'); - // Send message to content script to extract search results + + // Add retry logic with exponential backoff + let retryCount = 0; + const maxRetries = 10; + + const attemptExtraction = () => { setTimeout(() => { - console.log('🔵 Background: Sending EXTRACT_SEARCH_RESULTS to content script'); - chrome.tabs.sendMessage(webContentsId, { + console.log('🔵 Background: Attempting to extract search results (attempt ' + (retryCount + 1) + ')'); + + // First check if content script is ready + chrome.tabs.sendMessage(searchWebContentsId, {type: 'PING'}, function(pingResponse) { + if (chrome.runtime.lastError) { + console.log('🔵 Background: Content script not ready yet, retrying...'); + retryCount++; + if (retryCount < maxRetries) { + attemptExtraction(); + } else { + console.error('🔵 Background: Content script never became ready'); + sendResponse({ success: false, error: 'Content script not available' }); + destroySearchWebContents(); + } + return; + } + + // Content script is ready, proceed with extraction + chrome.tabs.sendMessage(searchWebContentsId, { type: 'EXTRACT_SEARCH_RESULTS', searchQuery: searchQuery }, function(response) { if (chrome.runtime.lastError) { console.error('🔵 Background: Error extracting search results:', chrome.runtime.lastError); sendResponse({ success: false, error: 'Failed to extract results' }); + destroySearchWebContents(); return; } @@ -326,8 +635,13 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { error: response?.error || 'No results found' }); } - }); - }, 3000); + destroySearchWebContents(); + }); + }); + }, 2000 + (retryCount * 1000)); // Exponential backoff: 2s, 3s, 4s + }; + + attemptExtraction(); } else { console.log('🔵 Background: Failed to create search WebContents'); sendResponse({ success: false, error: 'Failed to create search WebContents' }); @@ -348,13 +662,38 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { case 'USER_PROFILE': console.log('🔵 Background: Extracting user profile'); - // Send message to content script to extract user profile + + // Add retry logic with exponential backoff for user profile extraction + let retryCount = 0; + const maxRetries = 10; + + const attemptProfileExtraction = () => { + setTimeout(() => { + console.log('🔵 Background: Attempting to extract user profile (attempt ' + (retryCount + 1) + ')'); + + // First check if content script is ready + chrome.tabs.sendMessage(webContentsId, {type: 'PING'}, function(pingResponse) { + if (chrome.runtime.lastError) { + console.log('🔵 Background: Content script not ready yet, retrying...'); + retryCount++; + if (retryCount < maxRetries) { + attemptProfileExtraction(); + } else { + console.error('🔵 Background: Content script never became ready'); + sendResponse({ success: false, error: 'Content script not available' }); + destroyBackgroundWebContents(); + } + return; + } + + // Content script is ready, proceed with extraction chrome.tabs.sendMessage(webContentsId, { type: 'USER_PROFILE' }, function(response) { if (chrome.runtime.lastError) { console.error('🔵 Background: Error extracting user profile:', chrome.runtime.lastError); sendResponse({ success: false, error: 'Failed to extract user profile' }); + destroyBackgroundWebContents(); return; } @@ -370,42 +709,237 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { error: response?.error || 'Failed to extract user profile' }); } + destroyBackgroundWebContents(); }); + }); + }, 2000 + (retryCount * 1000)); // Exponential backoff: 2s, 3s, 4s + }; + + attemptProfileExtraction(); return true; case 'OPEN_PRODUCT_DETAILS': const productUrl = message.url; + const productPrice = message.price; console.log('🔵 Background: Opening product details for:', productUrl); - chrome.wootz.createBackgroundWebContents(webContentsId, productUrl, (result) => { + chrome.wootz.createBackgroundWebContents(productWebContentsId, productUrl, (result) => { if (result.success) { console.log('🔵 Background: Product details WebContents created successfully'); - // Send message to content script to extract product details + + // Add retry logic with exponential backoff for product details extraction + let retryCount = 0; + const maxRetries = 10; + + const attemptProductExtraction = () => { setTimeout(() => { - console.log('🔵 Background: Sending EXTRACT_PRODUCT_DETAILS to content script'); - chrome.tabs.sendMessage(webContentsId, { - type: 'EXTRACT_PRODUCT_DETAILS' + console.log('🔵 Background: Attempting to extract product details (attempt ' + (retryCount + 1) + ')'); + + // First check if content script is ready + chrome.tabs.sendMessage(productWebContentsId, {type: 'PING'}, function(pingResponse) { + if (chrome.runtime.lastError) { + console.log('🔵 Background: Content script not ready yet, retrying...'); + retryCount++; + if (retryCount < maxRetries) { + attemptProductExtraction(); + } else { + console.error('🔵 Background: Content script never became ready'); + sendResponse({ success: false, error: 'Content script not available' }); + destroyProductWebContents(); + } + return; + } + + // Content script is ready, proceed with extraction + chrome.tabs.sendMessage(productWebContentsId, { + type: 'EXTRACT_PRODUCT_DETAILS', + productPrice: productPrice }, function(response) { if (chrome.runtime.lastError) { console.error('🔵 Background: Error extracting product details:', chrome.runtime.lastError); sendResponse({ success: false, error: 'Failed to extract product details' }); + destroyProductWebContents(); return; } console.log('🔵 Background: Received product details:', response); if (response && response.success) { - sendResponse({ - success: true, - productDetails: response.productDetails - }); + const productName = response.productDetails.name; + + // Click add to cart button using content script with retry logic + let clickRetryCount = 0; + const maxClickRetries = 3; + + const attemptClickAddToCart = () => { + setTimeout(() => { + console.log('🔵 Background: Attempting to click add to cart (attempt ' + (clickRetryCount + 1) + ')'); + + chrome.tabs.sendMessage(productWebContentsId, {type: 'PING'}, function(pingResponse) { + if (chrome.runtime.lastError) { + console.log('🔵 Background: Content script not ready for click, retrying...'); + clickRetryCount++; + if (clickRetryCount < maxClickRetries) { + attemptClickAddToCart(); + } else { + console.error('🔵 Background: Content script never became ready for click'); + sendResponse({ + success: true, + productDetails: response.productDetails, + productPrice: productPrice, + addedToCart: false + }); + destroyProductWebContents(); + } + return; + } + + // Content script is ready, proceed with click + chrome.tabs.sendMessage(productWebContentsId, { + type: 'CLICK_ADD_TO_CART' + }, function(clickResponse) { + if (chrome.runtime.lastError) { + console.error('🔵 Background: Error clicking add to cart button:', chrome.runtime.lastError); + sendResponse({ + success: true, + productDetails: response.productDetails, + productPrice: productPrice, + addedToCart: false + }); + destroyProductWebContents(); + return; + } + + console.log('🔵 Background: Click response:', clickResponse); + if (clickResponse && clickResponse.success) { + console.log('🔵 Background: Added to cart successfully'); + + // Wait a bit for the cart to update, then open cart to check + setTimeout(() => { + // Open cart to check if product was added with retry logic + let cartRetryCount = 0; + const maxCartRetries = 3; + + const attemptCartCheck = () => { + chrome.wootz.createBackgroundWebContents(cartWebContentsId, `https://m.popmart.com/${countryCode.toLowerCase()}/largeShoppingCart`, (cartResult) => { + if (cartResult.success) { + console.log('🔵 Background: Large shopping cart WebContents created successfully'); + + setTimeout(() => { + console.log('🔵 Background: Attempting to check cart (attempt ' + (cartRetryCount + 1) + ')'); + + chrome.tabs.sendMessage(cartWebContentsId, {type: 'PING'}, function(pingResponse) { + if (chrome.runtime.lastError) { + console.log('🔵 Background: Cart content script not ready, retrying...'); + cartRetryCount++; + if (cartRetryCount < maxCartRetries) { + attemptCartCheck(); + } else { + console.error('🔵 Background: Cart content script never became ready'); + sendResponse({ + success: true, + productDetails: response.productDetails, + productPrice: productPrice, + addedToCart: false, + cartCheck: false + }); + destroyCartWebContents(); + destroyProductWebContents(); + } + return; + } + + // Cart content script is ready, proceed with check + chrome.tabs.sendMessage(cartWebContentsId, { + type: 'CHECK_PRODUCT_IN_CART', + productName: productName + }, function(cartResponse) { + if (chrome.runtime.lastError) { + console.error('🔵 Background: Error checking product in cart:', chrome.runtime.lastError); + sendResponse({ + success: true, + productDetails: response.productDetails, + productPrice: productPrice, + addedToCart: false, + cartCheck: false + }); + destroyCartWebContents(); + destroyProductWebContents(); + return; + } + + console.log('🔵 Background: Received cart check response:', cartResponse); + const finalResponse = { + success: true, + productDetails: response.productDetails, + productPrice: productPrice, + addedToCart: cartResponse && cartResponse.inCart, + cartCheck: cartResponse && cartResponse.success, + inCart: cartResponse && cartResponse.inCart + }; + + // Add to cart storage if successfully added + if (cartResponse && cartResponse.inCart) { + addToCartStorage(response.productDetails, productPrice); + } + + sendResponse(finalResponse); + destroyCartWebContents(); + destroyProductWebContents(); + }); + }); + }, 3000); + } else { + console.log('🔵 Background: Failed to create large shopping cart WebContents'); + sendResponse({ + success: true, + productDetails: response.productDetails, + productPrice: productPrice, + addedToCart: false, + cartCheck: false + }); + destroyProductWebContents(); + } + }); + }; + + attemptCartCheck(); + }, 2000); + } else { + console.log('🔵 Background: Failed to add to cart'); + + // Add to waitlist if failed to add to cart + addToWaitlistStorage(response.productDetails, productPrice); + + // Start automatic retry process + startRetryProcess(response.productDetails, productPrice); + + sendResponse({ + success: true, + productDetails: response.productDetails, + productPrice: productPrice, + addedToCart: false + }); + destroyProductWebContents(); + } + }); + }); + }, 2000); + }; + + attemptClickAddToCart(); } else { sendResponse({ success: false, error: response?.error || 'No product details found' }); - } - }); - }, 5000); + destroyProductWebContents(); + } + }); + }); + }, 5000 + (retryCount * 1000)); // Exponential backoff: 5s, 6s, 7s + }; + + attemptProductExtraction(); } else { console.log('🔵 Background: Failed to create product details WebContents'); sendResponse({ success: false, error: 'Failed to create product details WebContents' }); @@ -417,94 +951,512 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { console.log('🔵 Background: User logged out'); clearAuthState(); stopPeriodicAuthValidation(); + stopBackgroundPeriodicCheck(); destroyBackgroundWebContents(); sendResponse({success: true}); break; + + case 'LOAD_CART_PRODUCTS': + console.log('🔵 Background: Loading cart products'); + loadCartProductsWithWebContents(sendResponse); + return true; + + case 'LOAD_WAITLIST_PRODUCTS': + console.log('🔵 Background: Loading waitlist products'); + loadWaitlistProducts(sendResponse); + return true; + + case 'REMOVE_FROM_CART': + console.log('🔵 Background: Removing from cart:', message.productId); + removeFromCart(message.productId, sendResponse); + return true; + + case 'REMOVE_FROM_WAITLIST': + console.log('🔵 Background: Removing from waitlist:', message.productId); + removeFromWaitlist(message.productId, sendResponse); + return true; + } +}); - case 'CHECK_PRODUCT_IN_CART': { - const expectedProductName = message.productName; - console.log('🔵 Background: [CART] Received CHECK_PRODUCT_IN_CART for product:', expectedProductName); - const cartUrl = 'https://www.popmart.com/us/largeShoppingCart'; - chrome.wootz.createBackgroundWebContents(webContentsId, cartUrl, (result) => { - if (result.success) { - console.log('🔵 Background: [CART] Cart WebContents created successfully'); - // Wait for cart page to load - setTimeout(() => { - console.log('🔵 Background: [CART] Sending EXTRACT_CART_PRODUCTS to content script'); - chrome.tabs.sendMessage(webContentsId, { - type: 'EXTRACT_CART_PRODUCTS', - expectedProductName - }, function(response) { + +function addToCartStorage(productDetails, price) { + const product = { + id: Date.now().toString(), + name: productDetails.name, + image: productDetails.image, + price: price, + url: productDetails.url, + addedAt: new Date().toISOString() + }; + + chrome.storage.local.get(['cartProducts'], (result) => { + const cartProducts = result.cartProducts || []; + cartProducts.push(product); + chrome.storage.local.set({ cartProducts }, () => { + console.log('🔵 Background: Product added to cart storage:', product); + }); + }); +} + +function addToWaitlistStorage(productDetails, price) { + const product = { + id: Date.now().toString(), + name: productDetails.name, + image: productDetails.image, + price: price, + url: productDetails.url, + addedAt: new Date().toISOString() + }; + + chrome.storage.local.get(['waitlistProducts'], (result) => { + const waitlistProducts = result.waitlistProducts || []; + waitlistProducts.push(product); + chrome.storage.local.set({ waitlistProducts }, () => { + console.log('🔵 Background: Product added to waitlist storage:', product); + }); + }); +} + +function loadCartProducts(sendResponse) { + chrome.storage.local.get(['cartProducts'], (result) => { + const cartProducts = result.cartProducts || []; + console.log('🔵 Background: Loaded cart products:', cartProducts); + sendResponse({ + success: true, + products: cartProducts + }); + }); +} + +function loadCartProductsWithWebContents(sendResponse) { + console.log('🔵 Background: Loading cart products with WebContents'); + + chrome.storage.local.get(['cartProducts'], (result) => { + const storedCartProducts = result.cartProducts || []; + console.log('🔵 Background: Stored cart products:', storedCartProducts); + + const cartUrl = `https://m.popmart.com/${countryCode.toLowerCase()}/largeShoppingCart`; + + chrome.wootz.createBackgroundWebContents(cartWebContentsId, cartUrl, (result) => { + if (result.success) { + console.log('🔵 Background: Cart WebContents created successfully'); + + // Add retry logic with exponential backoff for cart extraction + let retryCount = 0; + const maxRetries = 10; + + const attemptCartExtraction = () => { + setTimeout(() => { + console.log('🔵 Background: Attempting to extract cart products (attempt ' + (retryCount + 1) + ')'); + + // First check if content script is ready + chrome.tabs.sendMessage(cartWebContentsId, {type: 'PING'}, function(pingResponse) { if (chrome.runtime.lastError) { - console.error('🔵 Background: [CART] Error extracting cart products:', chrome.runtime.lastError); - sendResponse({ success: false, error: 'Failed to extract cart products' }); + console.log('🔵 Background: Content script not ready yet, retrying...'); + retryCount++; + if (retryCount < maxRetries) { + attemptCartExtraction(); + } else { + console.error('🔵 Background: Content script never became ready'); + // Fallback to stored products + sendResponse({ + success: true, + products: storedCartProducts + }); + destroyCartWebContents(); + } return; } - console.log('🔵 Background: [CART] Received cart products extraction response:', response); - sendResponse({ success: true, ...response }); + + // Content script is ready, proceed with extraction + chrome.tabs.sendMessage(cartWebContentsId, { + type: 'EXTRACT_CART_PRODUCTS' + }, function(response) { + if (chrome.runtime.lastError) { + console.error('🔵 Background: Error extracting cart products:', chrome.runtime.lastError); + // Fallback to stored products + sendResponse({ + success: true, + products: storedCartProducts + }); + destroyCartWebContents(); + return; + } + + console.log('🔵 Background: Received cart products from WebContents:', response); + if (response && response.success) { + const freshProducts = response.products || []; + const mergedProducts = mergeCartProducts(storedCartProducts, freshProducts); + + chrome.storage.local.set({ cartProducts: mergedProducts }, () => { + console.log('🔵 Background: Updated cart storage with fresh data'); + }); + + sendResponse({ + success: true, + products: mergedProducts + }); + } else { + sendResponse({ + success: true, + products: storedCartProducts + }); + } + destroyCartWebContents(); + }); }); - }, 4000); // Wait 4s for cart page to load - } else { - console.log('🔵 Background: [CART] Failed to create cart WebContents'); - sendResponse({ success: false, error: 'Failed to create cart WebContents' }); - } - }); - return true; + }, 3000 + (retryCount * 1000)); // Exponential backoff: 3s, 4s, 5s + }; + + attemptCartExtraction(); + } else { + console.log('🔵 Background: Failed to create cart WebContents, using stored data'); + sendResponse({ + success: true, + products: storedCartProducts + }); + } + }); + }); +} + +function mergeCartProducts(storedProducts, freshProducts) { + const storedMap = new Map(); + storedProducts.forEach(product => { + storedMap.set(product.url, product); + }); + + const merged = freshProducts.map(freshProduct => { + const storedProduct = storedMap.get(freshProduct.url); + if (storedProduct) { + return { + ...storedProduct, + name: freshProduct.name || storedProduct.name, + price: freshProduct.price || storedProduct.price, + image: freshProduct.image || storedProduct.image + }; } + return freshProduct; + }); + + freshProducts.forEach(product => { + storedMap.delete(product.url); + }); + + storedMap.forEach(product => { + merged.push(product); + }); + + return merged; +} - case 'CLICK_AND_CHECK_CART': { - const productUrl = message.url; - const productName = message.productName; - console.log('🔵 Background: [CART] CLICK_AND_CHECK_CART for product:', productName); - console.log('🔵 Background: [CART] Product URL:', productUrl); +function loadWaitlistProducts(sendResponse) { + chrome.storage.local.get(['waitlistProducts'], (result) => { + const waitlistProducts = result.waitlistProducts || []; + console.log('🔵 Background: Loaded waitlist products:', waitlistProducts); + sendResponse({ + success: true, + products: waitlistProducts + }); + }); +} + +function removeFromCart(productId, sendResponse) { + chrome.storage.local.get(['cartProducts'], (result) => { + const cartProducts = result.cartProducts || []; + const updatedCart = cartProducts.filter(p => p.id !== productId); + chrome.storage.local.set({ cartProducts: updatedCart }, () => { + console.log('🔵 Background: Product removed from cart:', productId); + sendResponse({ success: true }); + }); + }); +} + +function removeFromWaitlist(productId, sendResponse) { + chrome.storage.local.get(['waitlistProducts'], (result) => { + const waitlistProducts = result.waitlistProducts || []; + const updatedWaitlist = waitlistProducts.filter(p => p.id !== productId); + chrome.storage.local.set({ waitlistProducts: updatedWaitlist }, () => { + console.log('🔵 Background: Product removed from waitlist:', productId); + + stopRetryProcess(productId); - chrome.wootz.createBackgroundWebContents(webContentsId, productUrl, (result) => { - if (result.success) { - console.log('🔵 Background: [CART] Product details WebContents created successfully'); - // Send message to content script to click the Add to Cart button - setTimeout(() => { - console.log('🔵 Background: [CART] Sending CLICK_ADD_TO_CART to content script'); - chrome.tabs.sendMessage(webContentsId, { - type: 'CLICK_ADD_TO_CART', - productName: productName - }, function(response) { + sendResponse({ success: true }); + }); + }); +} + +function startRetryProcess(productDetails, productPrice) { + const productId = productDetails.url; + + stopRetryProcess(productId); + + console.log('🔵 Background: Starting retry process for product:', productDetails.name); + + const intervalId = setInterval(() => { + addToRetryQueue(productDetails, productPrice, productId); + }, 60000); + + retryIntervals.set(productId, intervalId); + + setTimeout(() => { + addToRetryQueue(productDetails, productPrice, productId); + }, 60000); +} + +function addToRetryQueue(productDetails, productPrice, productId) { + const existingIndex = retryQueue.findIndex(item => item.productId === productId); + if (existingIndex !== -1) { + console.log('🔵 Background: Product already in retry queue:', productDetails.name); + return; + } + + retryQueue.push({ + productDetails, + productPrice, + productId + }); + + console.log('🔵 Background: Added to retry queue:', productDetails.name, 'Queue length:', retryQueue.length); + + if (!isRetryInProgress) { + processRetryQueue(); + } +} + +function processRetryQueue() { + if (retryQueue.length === 0) { + isRetryInProgress = false; + console.log('🔵 Background: Retry queue empty, stopping processing'); + return; + } + + if (isRetryInProgress) { + console.log('🔵 Background: Retry already in progress, skipping'); + return; + } + + isRetryInProgress = true; + const nextProduct = retryQueue.shift(); + + console.log('🔵 Background: Processing retry for product:', nextProduct.productDetails.name); + retryAddToCart(nextProduct.productDetails, nextProduct.productPrice, nextProduct.productId); +} + +function stopRetryProcess(productId) { + const intervalId = retryIntervals.get(productId); + if (intervalId) { + clearInterval(intervalId); + retryIntervals.delete(productId); + console.log('🔵 Background: Stopped retry process for product:', productId); + } + + retryQueue = retryQueue.filter(item => item.productId !== productId); +} + +async function retryAddToCart(productDetails, productPrice, productId) { + console.log('🔵 Background: Retrying add to cart for product:', productDetails.name); + + try { + chrome.wootz.createBackgroundWebContents(retryWebContentsId, productDetails.url, (result) => { + if (result.success) { + console.log('🔵 Background: Retry WebContents created successfully for product:', productDetails.name); + + // Add retry logic with exponential backoff for retry click + let retryCount = 0; + const maxRetries = 10; + + const attemptRetryClick = () => { + setTimeout(() => { + console.log('🔵 Background: Attempting to click add to cart in retry (attempt ' + (retryCount + 1) + ')'); + + // First check if content script is ready + chrome.tabs.sendMessage(retryWebContentsId, {type: 'PING'}, function(pingResponse) { if (chrome.runtime.lastError) { - console.error('🔵 Background: [CART] Error clicking Add to Cart button:', chrome.runtime.lastError); - sendResponse({ success: false, error: 'Failed to click Add to Cart button' }); + console.log('🔵 Background: Content script not ready for retry click, retrying...'); + retryCount++; + if (retryCount < maxRetries) { + attemptRetryClick(); + } else { + console.error('🔵 Background: Content script never became ready for retry click'); + destroyRetryWebContents(); + processNextInQueue(); + } return; } - console.log('🔵 Background: [CART] Received click response:', response); - if (response && response.success) { - // After successful click, check the cart - setTimeout(() => { - console.log('🔵 Background: [CART] Checking cart after successful click'); - chrome.runtime.sendMessage({ - type: 'CHECK_PRODUCT_IN_CART', - productName: productName - }, (cartResponse) => { - console.log('🔵 Background: [CART] Cart check response:', cartResponse); - sendResponse({ - success: true, - clickSuccess: true, - cartResult: cartResponse - }); - }); - }, 4000); // Wait 4s for cart to update - } else { - sendResponse({ - success: false, - error: response?.error || 'Failed to click Add to Cart button' + // Content script is ready, proceed with click + chrome.tabs.sendMessage(retryWebContentsId, { + type: 'CLICK_ADD_TO_CART' + }, function(clickResponse) { + if (chrome.runtime.lastError) { + console.error('🔵 Background: Error clicking add to cart in retry:', chrome.runtime.lastError); + destroyRetryWebContents(); + processNextInQueue(); + return; + } + + console.log('🔵 Background: Retry click response:', clickResponse); + if (clickResponse && clickResponse.success) { + console.log('🔵 Background: Retry click successful, checking cart...'); + + // Check cart with retry logic + setTimeout(() => { + let cartRetryCount = 0; + const maxCartRetries = 3; + + const attemptCartCheck = () => { + chrome.wootz.createBackgroundWebContents(cartWebContentsId, `https://m.popmart.com/${countryCode.toLowerCase()}/largeShoppingCart`, (cartResult) => { + if (cartResult.success) { + console.log('🔵 Background: Retry cart WebContents created successfully'); + + setTimeout(() => { + console.log('🔵 Background: Attempting to check cart in retry (attempt ' + (cartRetryCount + 1) + ')'); + + // First check if cart content script is ready + chrome.tabs.sendMessage(cartWebContentsId, {type: 'PING'}, function(pingResponse) { + if (chrome.runtime.lastError) { + console.log('🔵 Background: Cart content script not ready for retry, retrying...'); + cartRetryCount++; + if (cartRetryCount < maxCartRetries) { + attemptCartCheck(); + } else { + console.error('🔵 Background: Cart content script never became ready for retry'); + destroyRetryWebContents(); + processNextInQueue(); + } + return; + } + + // Cart content script is ready, proceed with check + chrome.tabs.sendMessage(cartWebContentsId, { + type: 'CHECK_PRODUCT_IN_CART', + productName: productDetails.name + }, function(cartResponse) { + if (chrome.runtime.lastError) { + console.error('🔵 Background: Error checking cart in retry:', chrome.runtime.lastError); + destroyRetryWebContents(); + processNextInQueue(); + return; + } + + console.log('🔵 Background: Retry cart check response:', cartResponse); + if (cartResponse && cartResponse.inCart) { + console.log('🔵 Background: Product successfully added to cart in retry!'); + + moveFromWaitlistToCart(productDetails, productPrice); + + stopRetryProcess(productId); + + chrome.runtime.sendMessage({ + type: 'RETRY_SUCCESS', + productName: productDetails.name + }); + } else { + console.log('🔵 Background: Product still not in cart, will retry again'); + } + + destroyRetryWebContents(); + processNextInQueue(); + }); + }); + }, 3000); + } else { + console.log('🔵 Background: Failed to create retry cart WebContents'); + destroyRetryWebContents(); + processNextInQueue(); + } }); - } + }; + + attemptCartCheck(); + }, 2000); + } else { + console.log('🔵 Background: Retry click failed'); + destroyRetryWebContents(); + processNextInQueue(); + } + }); }); - }, 3000); // Wait 3s for page to load - } else { - console.log('🔵 Background: [CART] Failed to create product details WebContents'); - sendResponse({ success: false, error: 'Failed to create product details WebContents' }); - } - }); - return true; - } + }, 5000 + (retryCount * 1000)); // Exponential backoff: 5s, 6s, 7s + }; + + attemptRetryClick(); + } else { + console.log('🔵 Background: Failed to create retry WebContents'); + processNextInQueue(); + } + }); + } catch (error) { + console.error('🔵 Background: Error in retry add to cart:', error); + processNextInQueue(); } -}); +} + +function processNextInQueue() { + isRetryInProgress = false; + console.log('🔵 Background: Current retry completed, processing next in queue'); + + setTimeout(() => { + processRetryQueue(); + }, 2000); +} + +function moveFromWaitlistToCart(productDetails, productPrice) { + chrome.storage.local.get(['waitlistProducts', 'cartProducts'], (result) => { + const waitlistProducts = result.waitlistProducts || []; + const cartProducts = result.cartProducts || []; + + const updatedWaitlist = waitlistProducts.filter(p => p.url !== productDetails.url); + + const cartProduct = { + id: Date.now().toString(), + name: productDetails.name, + image: productDetails.image, + price: productPrice, + url: productDetails.url, + addedAt: new Date().toISOString() + }; + + const updatedCart = [...cartProducts, cartProduct]; + + chrome.storage.local.set({ + waitlistProducts: updatedWaitlist, + cartProducts: updatedCart + }, () => { + console.log('🔵 Background: Product moved from waitlist to cart:', productDetails.name); + }); + }); +} + +function destroyRetryWebContents() { + chrome.wootz.destroyBackgroundWebContents(retryWebContentsId, (result) => { + if (result.success) { + console.log('🔵 Background: Retry WebContents destroyed'); + } + }); +} + +function destroySearchWebContents() { + chrome.wootz.destroyBackgroundWebContents(searchWebContentsId, (result) => { + if (result.success) { + console.log('🔵 Background: Search WebContents destroyed'); + } + }); +} + +function destroyProductWebContents() { + chrome.wootz.destroyBackgroundWebContents(productWebContentsId, (result) => { + if (result.success) { + console.log('🔵 Background: Product WebContents destroyed'); + } + }); +} + +function destroyCartWebContents() { + chrome.wootz.destroyBackgroundWebContents(cartWebContentsId, (result) => { + if (result.success) { + console.log('🔵 Background: Cart WebContents destroyed'); + } + }); +} diff --git a/Labubu/repo/src/components/CartManager.jsx b/Labubu/repo/src/components/CartManager.jsx new file mode 100644 index 000000000..75b2f5abd --- /dev/null +++ b/Labubu/repo/src/components/CartManager.jsx @@ -0,0 +1,293 @@ +import React, { useState, useEffect } from 'react'; +import { motion } from 'framer-motion'; +import { FaShoppingCart, FaClock, FaSync, FaCheckCircle, FaExclamationTriangle, FaArrowLeft, FaTrash, FaHeart } from 'react-icons/fa'; + +const CartManager = ({ onBack }) => { + const [cartProducts, setCartProducts] = useState([]); + const [waitlistProducts, setWaitlistProducts] = useState([]); + const [loading, setLoading] = useState(true); + const [refreshing, setRefreshing] = useState(false); + const [toast, setToast] = useState({ show: false, message: '', type: 'success' }); + + useEffect(() => { + loadCartData(); + + const handleRetrySuccess = (message) => { + if (message.type === 'RETRY_SUCCESS') { + setToast({ + show: true, + message: `🎉 ${message.productName} is now back in stock and added to cart!`, + type: 'success' + }); + + loadCartData(); + setTimeout(() => { + setToast({ show: false, message: '', type: 'success' }); + }, 5000); + } + }; + + chrome.runtime.onMessage.addListener(handleRetrySuccess); + + return () => { + chrome.runtime.onMessage.removeListener(handleRetrySuccess); + }; + }, []); + + const loadCartData = async () => { + setLoading(true); + try { + const cartResponse = await chrome.runtime.sendMessage({ + type: 'LOAD_CART_PRODUCTS' + }); + + if (cartResponse.success) { + setCartProducts(cartResponse.products || []); + } + const waitlistResponse = await chrome.runtime.sendMessage({ + type: 'LOAD_WAITLIST_PRODUCTS' + }); + + if (waitlistResponse.success) { + setWaitlistProducts(waitlistResponse.products || []); + } + } catch (error) { + console.error('Error loading cart data:', error); + } finally { + setLoading(false); + } + }; + + const refreshCart = async () => { + setRefreshing(true); + try { + await loadCartData(); + } finally { + setRefreshing(false); + } + }; + + + + + if (loading) { + return ( +

+ ); + } + + return ( + + {/* Animated background elements */} +
+
+
+
+
+ + {/* Header */} +
+
+
+ + + +
+

Cart Manager

+

Manage your Popmart treasures

+
+
+ + + + {refreshing ? 'Refreshing...' : 'Refresh'} + +
+ + {/* Stats */} +
+
+
+
+
+ +
+
+

In Cart

+

Ready to purchase

+
+
+ {cartProducts.length} +
+
+ +
+
+
+
+ +
+
+

Waitlist

+

Waiting for stock

+
+
+ {waitlistProducts.length} +
+
+
+
+ + {/* Content */} +
+ {/* Products Added to Cart */} + +
+
+ +
+

Shopping Cart

+
+ + {cartProducts.length === 0 ? ( +
+
+ +
+

Your cart is empty

+

Start adding some treasures!

+
+ ) : ( +
+ {cartProducts.map((product) => ( + +
+ {product.name} { + e.target.src = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjQ4IiBoZWlnaHQ9IjQ4IiBmaWxsPSIjRjNGNEY2Ii8+CjxwYXRoIGQ9Ik0xNiAxNkgzMlYzMkgxNlYxNloiIGZpbGw9IiNEMUQ1REIiLz4KPC9zdmc+'; + }} + /> +
+

{product.name}

+
+ {product.price} + +
+ {product.addedAt && ( +

+ Added: {new Date(product.addedAt).toLocaleDateString()} +

+ )} +
+
+
+ ))} +
+ )} +
+ + {/* Add to Cart When Available */} + +
+
+ +
+

Waitlist

+
+ + {waitlistProducts.length === 0 ? ( +
+
+ +
+

No items in waitlist

+

Items will appear here when out of stock

+

Auto-retry system will attempt to add them every 5 minutes

+
+ ) : ( +
+ {waitlistProducts.map((product) => ( + +
+ {product.name} { + e.target.src = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjQ4IiBoZWlnaHQ9IjQ4IiBmaWxsPSIjRjNGNEY2Ii8+CjxwYXRoIGQ9Ik0xNiAxNkgzMlYzMkgxNlYxNloiIGZpbGw9IiNEMUQ1REIiLz4KPC9zdmc+'; + }} + /> +
+

{product.name}

+
+ {product.price} +
+ + Out of Stock +
+
+ {product.addedAt && ( +

+ Added: {new Date(product.addedAt).toLocaleDateString()} +

+ )} +
+ + Auto-retrying every 5 minutes +
+
+
+
+ ))} +
+ )} +
+
+
+ ); +}; + +export default CartManager; \ No newline at end of file diff --git a/Labubu/repo/src/components/CountrySelector.jsx b/Labubu/repo/src/components/CountrySelector.jsx new file mode 100644 index 000000000..7a4f55652 --- /dev/null +++ b/Labubu/repo/src/components/CountrySelector.jsx @@ -0,0 +1,144 @@ +import React, { useState, useEffect } from 'react'; +import { motion, AnimatePresence } from 'framer-motion'; + +const countries = [ + { code: 'AU', name: 'Australia', flag: '🇦🇺' }, + { code: 'AT', name: 'Austria', flag: '🇦🇹' }, + { code: 'BE', name: 'Belgium', flag: '🇧🇪' }, + { code: 'BR', name: 'Brazil', flag: '🇧🇷' }, + { code: 'CA', name: 'Canada', flag: '🇨🇦' }, + { code: 'HR', name: 'Croatia', flag: '🇭🇷' }, + { code: 'CZ', name: 'Czech Republic', flag: '🇨🇿' }, + { code: 'DK', name: 'Denmark', flag: '🇩🇰' }, + { code: 'EE', name: 'Estonia', flag: '🇪🇪' }, + { code: 'FI', name: 'Finland', flag: '🇫🇮' }, + { code: 'FR', name: 'France', flag: '🇫🇷' }, + { code: 'DE', name: 'Germany', flag: '🇩🇪' }, + { code: 'GR', name: 'Greece', flag: '🇬🇷' }, + { code: 'HK', name: 'Hong Kong, China', flag: '🇭🇰' }, + { code: 'HU', name: 'Hungary', flag: '🇭🇺' }, + { code: 'ID', name: 'Indonesia', flag: '🇮🇩' }, + { code: 'IE', name: 'Ireland', flag: '🇮🇪' }, + { code: 'IT', name: 'Italy', flag: '🇮🇹' }, + { code: 'JP', name: 'Japan', flag: '🇯🇵' }, + { code: 'LV', name: 'Latvia', flag: '🇱🇻' }, + { code: 'LT', name: 'Lithuania', flag: '🇱🇹' }, + { code: 'LU', name: 'Luxembourg', flag: '🇱🇺' }, + { code: 'MO', name: 'Macao, China', flag: '🇲🇴' }, + { code: 'MY', name: 'Malaysia', flag: '🇲🇾' }, + { code: 'NL', name: 'Netherlands', flag: '🇳🇱' }, + { code: 'NZ', name: 'New Zealand', flag: '🇳🇿' }, + { code: 'PH', name: 'Philippines', flag: '🇵🇭' }, + { code: 'PL', name: 'Poland', flag: '🇵🇱' }, + { code: 'PT', name: 'Portugal', flag: '🇵🇹' }, + { code: 'SG', name: 'Singapore', flag: '🇸🇬' }, + { code: 'SK', name: 'Slovakia', flag: '🇸🇰' }, + { code: 'SI', name: 'Slovenia', flag: '🇸🇮' }, + { code: 'KR', name: 'South Korea', flag: '🇰🇷' }, + { code: 'ES', name: 'Spain', flag: '🇪🇸' }, + { code: 'SE', name: 'Sweden', flag: '🇸🇪' }, + { code: 'CH', name: 'Switzerland', flag: '🇨🇭' }, + { code: 'TH', name: 'Thailand', flag: '🇹🇭' }, + { code: 'GB', name: 'United Kingdom', flag: '🇬🇧' }, + { code: 'US', name: 'United States', flag: '🇺🇸' }, + { code: 'VN', name: 'Vietnam', flag: '🇻🇳' } +]; + +const CountrySelector = ({ onCountrySelect, selectedCountry }) => { + const [isOpen, setIsOpen] = useState(false); + const [searchTerm, setSearchTerm] = useState(''); + const [filteredCountries, setFilteredCountries] = useState(countries); + + useEffect(() => { + const filtered = countries.filter(country => + country.name.toLowerCase().includes(searchTerm.toLowerCase()) || + country.code.toLowerCase().includes(searchTerm.toLowerCase()) + ); + setFilteredCountries(filtered); + }, [searchTerm]); + + const handleCountrySelect = (country) => { + onCountrySelect(country); + setIsOpen(false); + setSearchTerm(''); + }; + + const selectedCountryData = countries.find(c => c.code === selectedCountry) || countries.find(c => c.code === 'US'); + + return ( +
+
+ + +
+ + + {isOpen && ( + +
+ setSearchTerm(e.target.value)} + className="w-full px-3 py-2 bg-white/50 border border-gray-300 rounded-lg text-gray-700 placeholder-gray-500 focus:outline-none focus:ring-2 focus:ring-pink-500 focus:border-transparent" + autoFocus + /> +
+ +
+ {filteredCountries.map((country) => ( + handleCountrySelect(country)} + className={`w-full px-4 py-3 flex items-center space-x-3 hover:bg-pink-100 transition-colors duration-150 ${ + selectedCountry === country.code ? 'bg-pink-200' : '' + }`} + whileHover={{ backgroundColor: 'rgba(236, 72, 153, 0.1)' }} + whileTap={{ scale: 0.98 }} + > + {country.flag} + {country.name} + {selectedCountry === country.code && ( + + ✓ + + )} + + ))} +
+
+ )} +
+
+ ); +}; + +export default CountrySelector; \ No newline at end of file diff --git a/Labubu/repo/src/components/LabubuSearch.jsx b/Labubu/repo/src/components/LabubuSearch.jsx index 0bfdd2ec3..ddd91d12a 100644 --- a/Labubu/repo/src/components/LabubuSearch.jsx +++ b/Labubu/repo/src/components/LabubuSearch.jsx @@ -1,46 +1,58 @@ import React, { useState } from 'react'; -import { motion, AnimatePresence } from 'framer-motion'; -import { FaCog } from 'react-icons/fa'; +import { motion } from 'framer-motion'; +import { FaCog, FaShoppingCart, FaSearch, FaHeart, FaStar } from 'react-icons/fa'; import ProductDetails from './ProductDetails.jsx'; - -const LABUBU_EMOJI = "🦊"; // Placeholder for Labubu mascot - -const resultVariants = { - hidden: { opacity: 0, y: 20 }, - visible: (i) => ({ opacity: 1, y: 0, transition: { delay: i * 0.08 } }), - exit: { opacity: 0, y: 20, transition: { duration: 0.2 } } -}; +import CartManager from './CartManager.jsx'; const LabubuSearch = ({ onBack, userProfile, onLogout }) => { const [searchQuery, setSearchQuery] = useState(''); const [searchResults, setSearchResults] = useState([]); const [isLoading, setIsLoading] = useState(false); + const [hasSearched, setHasSearched] = useState(false); + const [loadingProducts, setLoadingProducts] = useState(new Set()); const [error, setError] = useState(''); const [showSettings, setShowSettings] = useState(false); + const [showCartManager, setShowCartManager] = useState(false); const [selectedProduct, setSelectedProduct] = useState(null); const [productDetails, setProductDetails] = useState(null); - const [isLoadingProduct, setIsLoadingProduct] = useState(false); + const [toast, setToast] = useState({ show: false, message: '', type: 'success' }); + + const resultVariants = { + hidden: { opacity: 0, y: 20 }, + visible: (i) => ({ + opacity: 1, + y: 0, + transition: { + delay: i * 0.1, + duration: 0.5, + type: 'spring', + stiffness: 100 + } + }), + exit: { opacity: 0, y: -20 } + }; const handleSearch = async () => { - if (!searchQuery.trim()) { - setError('Please enter a search query'); - return; - } + if (!searchQuery.trim()) return; + setIsLoading(true); setError(''); setSearchResults([]); + setHasSearched(true); // Mark that user has searched + try { const response = await chrome.runtime.sendMessage({ type: 'SEARCH_LABUBU', - query: searchQuery.trim() + query: searchQuery }); + if (response.success) { - setSearchResults(response.results); + setSearchResults(response.results || []); } else { - setError(response.error || 'Search failed'); + setError(response.error || 'No results found'); } } catch (error) { - setError('Failed to perform search'); + setError('Failed to search for products'); } finally { setIsLoading(false); } @@ -52,214 +64,350 @@ const LabubuSearch = ({ onBack, userProfile, onLogout }) => { } }; - const handleProductClick = async (product) => { - setSelectedProduct(product); - setIsLoadingProduct(true); + const handleAddToCart = async (product) => { + // Set loading state for this specific product + setLoadingProducts(prev => new Set(prev).add(product.id)); setError(''); try { const response = await chrome.runtime.sendMessage({ type: 'OPEN_PRODUCT_DETAILS', - url: product.url + url: product.url, + price: product.price }); if (response.success) { + // Check the actual addedToCart value from the response + if (response.addedToCart === true) { + setToast({ + show: true, + message: '🎉 Successfully added to cart!', + type: 'success' + }); + } else { + setToast({ + show: true, + message: '⏰ Added to waitlist - will notify when available!', + type: 'info' + }); + } + + // Redirect to product details + setSelectedProduct(product); setProductDetails(response.productDetails); } else { - setError(response.error || 'Failed to load product details'); - setSelectedProduct(null); + setToast({ + show: true, + message: response.error || 'Failed to add item to cart', + type: 'error' + }); } } catch (error) { - setError('Failed to load product details'); - setSelectedProduct(null); + setToast({ + show: true, + message: '❌ Failed to add item to cart', + type: 'error' + }); } finally { - setIsLoadingProduct(false); + // Clear loading state for this specific product + setLoadingProducts(prev => { + const newSet = new Set(prev); + newSet.delete(product.id); + return newSet; + }); + + // Auto-hide toast after 4 seconds + setTimeout(() => { + setToast({ show: false, message: '', type: 'success' }); + }, 4000); } }; const handleBackToSearch = () => { setSelectedProduct(null); setProductDetails(null); - setIsLoadingProduct(false); setError(''); }; - const handleNotifyWhenAvailable = async (productDetails) => { - // This would implement the notification logic - console.log('Setting notification for:', productDetails.name); - // You could store this in chrome.storage or send to a backend + const handleBackFromCartManager = () => { + setShowCartManager(false); }; - // Show product details if a product is selected - if (selectedProduct && productDetails) { + if (showCartManager) { return ( - ); } - // Show loading state for product details - if (selectedProduct && isLoadingProduct) { + if (selectedProduct && productDetails) { return ( - -
-
-

Loading product details...

-

Please wait while we fetch the product information

-
-
+ ); } return ( - {/* Top mascot and title */} -
- {/* Settings button */} - -
- - 🎀 -
-

Labubu Search

-

Find your favorite Popmart treasures!

+ {/* Animated background elements */} +
+
+
+
-
-
- setSearchQuery(e.target.value)} - onKeyPress={handleKeyPress} - className="flex-1 px-3 py-2 sm:px-4 sm:py-3 border border-pink-400 rounded-2xl focus:outline-none focus:ring-2 focus:ring-pink-400 focus:border-transparent bg-white/10 text-base sm:text-lg font-labubu shadow text-white placeholder-purple-200" - /> - - {isLoading ? 'Searching...' : 'Search'} - + + {/* Header */} +
+ {/* Top navigation */} +
+
+
+ 🎀 +
+
+

Labubu

+

Popmart Assistant

+
+
+ +
+ setShowCartManager(true)} + aria-label="Cart Manager" + > + + + + setShowSettings(true)} + aria-label="Settings" + > + + +
+
+ + {/* Search section */} +
+
+
+ +
+ setSearchQuery(e.target.value)} + onKeyPress={handleKeyPress} + className="w-full pl-12 pr-24 py-4 bg-white/10 backdrop-blur-md border border-white/20 rounded-2xl focus:outline-none focus:ring-2 focus:ring-pink-400 focus:border-transparent text-white placeholder-purple-300 font-medium shadow-xl transition-all duration-200" + /> + + {isLoading ? ( +
+ ) : ( + 'Search' + )} +
+
+
+ + {/* Results section */} +
{error && ( {error} )} - - {searchResults.length > 0 && ( - -

- Top Results for "{searchQuery}" -

+ + {searchResults.length > 0 && ( + +
+

+ Found {searchResults.length} treasures for "{searchQuery}" +

+
+ + Premium Results +
+
+ +
{searchResults.map((result, i) => ( handleProductClick(result)} - className="border border-pink-400 rounded-2xl p-3 sm:p-4 bg-white/10 hover:bg-pink-400/10 shadow flex items-start space-x-3 sm:space-x-4 transition-colors cursor-pointer" + whileHover={{ scale: 1.02, y: -5 }} + className="group bg-white/10 backdrop-blur-md border border-white/20 rounded-2xl p-4 hover:bg-white/15 transition-all duration-300 shadow-xl hover:shadow-2xl" > - {result.image && ( - {result.name} e.target.style.display = 'none'} - /> - )} -
-

- {result.name} -

-
-

- {result.price} -

+ {/* Product Image */} +
+ {result.image ? ( + {result.name} { + e.target.style.display = 'none'; + e.target.nextSibling.style.display = 'flex'; + }} + /> + ) : null} +
+ 🦊
-
- Click to view details → + +
+ + {/* Product Info */} +
+

+ {result.name} +

+ +
+
+ + {result.price} + + USD +
+ + {/* Add to Cart Button */} + handleAddToCart(result)} + disabled={loadingProducts.has(result.id)} + className="w-full py-3 bg-gradient-to-r from-pink-500 to-purple-500 text-white rounded-xl font-semibold shadow-lg hover:from-pink-600 hover:to-purple-600 transition-all disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center space-x-2" + > + {loadingProducts.has(result.id) ? ( + <> +
+ Adding... + + ) : ( + <> + + Add to Cart + + )} +
))} - - )} - +
+ + )} + + {/* Empty state - only show if user has actually searched */} + {!isLoading && hasSearched && searchResults.length === 0 && !error && ( + +
+ 🔍 +
+

No treasures found

+

Try searching with different keywords

+
+ )} + + {/* Initial state - show when no search has been performed */} + {!hasSearched && !isLoading && ( + +
+ 🦊 +
+

Ready to discover Labubu treasures?

+

Search for your favorite Popmart collectibles

+
+ )}
{/* Settings Modal */} {showSettings && ( -
-
- -
+ setShowSettings(false)} + > + e.stopPropagation()} + > +
{userProfile?.avatar && ( User Avatar e.target.style.display = 'none'} /> )} -
{userProfile?.username || 'Unknown User'}
- + Sign Out +
-
-
+ + )} + + ); }; diff --git a/Labubu/repo/src/components/ProductDetails.jsx b/Labubu/repo/src/components/ProductDetails.jsx index 38fd3cc3d..2fe2fc25c 100644 --- a/Labubu/repo/src/components/ProductDetails.jsx +++ b/Labubu/repo/src/components/ProductDetails.jsx @@ -1,170 +1,188 @@ import React, { useState, useEffect } from 'react'; -import { motion, AnimatePresence } from 'framer-motion'; -import { FaArrowLeft, FaShoppingCart, FaBell, FaCheck, FaTimes } from 'react-icons/fa'; +import { motion } from 'framer-motion'; +import { FaArrowLeft, FaHeart, FaTag, FaInfoCircle } from 'react-icons/fa'; -const ProductDetails = ({ productDetails, onBack, onNotifyWhenAvailable }) => { - const [isLoading, setIsLoading] = useState(false); - const [notificationSet, setNotificationSet] = useState(false); - const [checkingCart, setCheckingCart] = useState(false); - const [cartResult, setCartResult] = useState(null); +const ProductDetails = ({ productDetails, onBack, toastInfo }) => { + const [toast, setToast] = useState(toastInfo || { show: false, message: '', type: 'success' }); - const handleNotifyWhenAvailable = async () => { - setIsLoading(true); - try { - // Here you would implement the notification logic - // For now, we'll just simulate it - await new Promise(resolve => setTimeout(resolve, 1000)); - setNotificationSet(true); - } catch (error) { - console.error('Error setting notification:', error); - } finally { - setIsLoading(false); + useEffect(() => { + if (toastInfo && toastInfo.show) { + setToast(toastInfo); + // Auto-hide toast after 4 seconds + setTimeout(() => { + setToast({ show: false, message: '', type: 'success' }); + }, 4000); } - }; - - const handleCheckInCart = async () => { - setCheckingCart(true); - setCartResult(null); - console.log('🟢 UI: [CART] Check in Cart button clicked.'); - // Send message to background to open product page in webcontent and click button - chrome.runtime.sendMessage({ - type: 'CLICK_AND_CHECK_CART', - url: productDetails.url, - productName: productDetails.name - }, (response) => { - setCheckingCart(false); - setCartResult(response); - if (response && response.success) { - console.log('🟢 UI: [CART] Cart check completed. See logs for details.'); - } else { - console.warn('🟢 UI: [CART] Cart check failed or not implemented.'); - } - }); - }; - - const isAvailable = productDetails.availabilityStatus === 'Available'; + }, [toastInfo]); return ( - {/* Header with back button */} -
- - -

Product Details

+ {/* Animated background elements */} +
+
+
+
-
+ {/* Header */} +
+
+ + + Back to Search + +
+
+ + {/* Product Content */} +
{/* Product Image */} - {productDetails.image ? ( - {productDetails.name} { - e.target.style.display = 'none'; - e.target.nextSibling.style.display = 'flex'; - }} - /> - ) : ( -
- 🦊 +
+ {productDetails.image ? ( + {productDetails.name} { + e.target.style.display = 'none'; + e.target.nextSibling.style.display = 'flex'; + }} + /> + ) : null} +
+ 🦊 +
+ + {/* Image overlay */} +
+ + {/* Quick actions */} +
+ + +
- )} - - {/* Fallback image placeholder */} -
- 🦊
- {/* Availability Status */} + + {/* Product Information */} - {productDetails.buyNowAvailable ? ( -
- - - {productDetails.buyNowText || 'Available for Purchase'} - + {/* Product Name */} + +
+
+ +
+

Product Name

+
+

+ {productDetails.name || "Product name not available"} +

+
+ + {/* Product Price */} + +
+
+ +
+

Price

- ) : ( -
- - - {productDetails.outOfStockMessage || 'Out of Stock'} - +
+
+ + {productDetails.price || "Price not available"} + + USD +
- )} + +
- {/* Action Buttons */} + {/* Enhanced Toast Notification */} + {toast.show && ( - {/* Buy Now Button - Always shown */} - productDetails.buyNowAvailable && window.open(productDetails.url, '_blank')} - disabled={!productDetails.buyNowAvailable} - > - - Buy Now - - - {/* Notify When Available Button - Always shown */} - - {isLoading ? ( -
- ) : notificationSet ? ( - - ) : ( - - )} - - {notificationSet ? 'Notification Set!' : 'Notify When Available'} - -
+
+
+
+
+ + {toast.type === 'success' ? '🎉' : toast.type === 'error' ? '❌' : 'ℹ️'} + +
+
+ + {toast.type === 'success' ? 'Success!' : toast.type === 'error' ? 'Error!' : 'Info'} + + {toast.message} +
+
+ setToast({ show: false, message: '', type: 'success' })} + className="p-2 rounded-2xl bg-white/20 hover:bg-white/30 transition-all duration-200 backdrop-blur-md" + > + × + +
+
- -
+ )}
); }; diff --git a/Labubu/repo/src/content.js b/Labubu/repo/src/content.js index fbd500e93..6507efcae 100644 --- a/Labubu/repo/src/content.js +++ b/Labubu/repo/src/content.js @@ -1,483 +1,308 @@ -console.log('Content script loaded'); -console.log('Current page URL:', window.location.href); -console.log('Document ready state:', document.readyState); +console.log("Content script loaded"); +console.log("Current page URL:", window.location.href); +console.log("Document ready state:", document.readyState); class ContentScript { constructor() { this.isLoggedIn = false; this.setupMessageListener(); - - if (document.readyState === 'loading') { - document.addEventListener('DOMContentLoaded', () => { - setTimeout(() => this.checkLoginStatusAndNotify(), 2000); - }); - } else { - setTimeout(() => this.checkLoginStatusAndNotify(), 2000); - } - } - async checkLoginStatusAndNotify() { - await this.checkLoginStatus(); - this.notifyReady(); - } - - async checkLoginStatus() { - try { - const loginIndicators = [ - '.user-profile', - '.account-menu', - '.logout-button', - '[data-testid="user-menu"]', - '.user-avatar' - ]; - - const isLoggedIn = loginIndicators.some(selector => - document.querySelector(selector) !== null - ); - - this.isLoggedIn = isLoggedIn; - console.log('Login status checked:', this.isLoggedIn); - - return this.isLoggedIn; - } catch (error) { - console.error('Error checking login status:', error); - return false; + if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", () => { + console.log("🟢 Content: DOMContentLoaded event fired"); + }); } } - notifyReady() { - chrome.runtime.sendMessage({ - action: 'CONTENT_SCRIPT_READY', - isLoggedIn: this.isLoggedIn, - url: window.location.href - }); - } - setupMessageListener() { chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { - console.log('🟢 Content: Received message:', message.type); - + console.log("🟢 Content: Received message:", message.type); + switch (message.type) { - case 'GET_CURRENT_URL': + case "PING": + // Simple ping to check if content script is ready + console.log("🟢 Content: Ping received, content script is ready"); + sendResponse({ success: true, ready: true }); + break; + + case "GET_CURRENT_URL": const currentUrl = window.location.href; - console.log('🟢 Content: Returning current URL:', currentUrl); + console.log("🟢 Content: Returning current URL:", currentUrl); sendResponse({ url: currentUrl, }); break; - - case 'EXTRACT_SEARCH_RESULTS': - console.log('🟢 Content: Extracting search results for:', message.searchQuery); - this.extractSearchResults(message.searchQuery).then((results) => { - console.log('🟢 Content: Successfully extracted', results.length, 'results'); - sendResponse({ - success: true, - results: results - }); - }).catch((error) => { - console.error('🟢 Content: Error extracting results:', error.message); - sendResponse({ - success: false, - error: error.message + + case "EXTRACT_SEARCH_RESULTS": + console.log( + "🟢 Content: Extracting search results for:", + message.searchQuery + ); + this.extractSearchResults(message.searchQuery) + .then((results) => { + console.log( + "🟢 Content: Successfully extracted", + results.length, + "results" + ); + sendResponse({ + success: true, + results: results, + }); + }) + .catch((error) => { + console.error( + "🟢 Content: Error extracting results:", + error.message + ); + sendResponse({ + success: false, + error: error.message, + }); }); - }); break; - case 'USER_PROFILE': - console.log('🟢 Content: Extracting user profile'); - this.extractUserProfile().then((profile) => { - console.log('🟢 Content: Successfully extracted user profile:', profile); - sendResponse({ - success: true, - profile: profile, - }); - }).catch((error) => { - sendResponse({ - success: false, - error: error.message, + case "USER_PROFILE": + console.log("🟢 Content: Extracting user profile"); + this.extractUserProfile() + .then((profile) => { + console.log( + "🟢 Content: Successfully extracted user profile:", + profile + ); + sendResponse({ + success: true, + profile: profile, + }); + }) + .catch((error) => { + sendResponse({ + success: false, + error: error.message, + }); }); - }); return true; - - case 'EXTRACT_PRODUCT_DETAILS': - console.log('🟢 Content: Extracting product details'); - this.extractProductDetails().then((productDetails) => { - console.log('🟢 Content: Successfully extracted product details:', productDetails); - sendResponse({ - success: true, - productDetails: productDetails, + + case "EXTRACT_PRODUCT_DETAILS": + console.log("🟢 Content: Extracting product details"); + this.extractProductDetails(message.productPrice) + .then((productDetails) => { + console.log( + "🟢 Content: Successfully extracted product details:", + productDetails + ); + sendResponse({ + success: true, + productDetails: productDetails, + }); + }) + .catch((error) => { + sendResponse({ + success: false, + error: error.message, + }); }); - }).catch((error) => { - sendResponse({ - success: false, - error: error.message, + return true; + case "CHECK_PRODUCT_IN_CART": + console.log("🟢 Content: Checking product in cart"); + this.checkProductInCart(message.productName) + .then((inCart) => { + console.log("🟢 Content: Product in cart:", inCart); + sendResponse({ + success: true, + inCart: inCart, + }); + }) + .catch((error) => { + sendResponse({ + success: false, + error: error.message, + }); }); - }); return true; - case 'EXTRACT_CART_PRODUCTS': - (async () => { - const expectedProductName = message.expectedProductName; - console.log('🟢 Content: [CART] Extracting cart products. Expected name:', expectedProductName); - const cartProducts = []; - let found = false; - const cartContainer = document.querySelector('.index_contentLeft__OnEFB'); - if (cartContainer) { - const nameNodes = cartContainer.querySelectorAll('.product_productName__TwvLM'); - nameNodes.forEach(node => { - const cartName = node.textContent.trim(); - cartProducts.push(cartName); - console.log('🟢 Content: [CART] Cart product name:', cartName); - console.log('🟢 Content: [CART] Product details page name:', expectedProductName); - if (cartName === expectedProductName) { - found = true; - console.log('🟢 Content: [CART] Product is AVAILABLE in cart.'); - } else { - console.log('🟢 Content: [CART] Product is NOT this one.'); - } + + case "CLICK_ADD_TO_CART": + console.log("🟢 Content: Clicking add to cart button"); + this.clickAddToCart() + .then((success) => { + console.log("🟢 Content: Add to cart click result:", success); + sendResponse({ + success: success, + }); + }) + .catch((error) => { + console.error("🟢 Content: Error clicking add to cart:", error); + sendResponse({ + success: false, + error: error.message, }); - if (!found) { - console.log('🟢 Content: [CART] Product is UNAVAILABLE in cart.'); - } - } else { - console.warn('🟢 Content: [CART] Cart container not found.'); - } - sendResponse({ - found, - cartProducts }); - })(); return true; - case 'CLICK_ADD_TO_CART': - (async () => { - console.log('🟢 Content: [CART] CLICK_ADD_TO_CART handler triggered.'); - this.waitForElement('.index_usBtn__2KlEx', 60000).then((addToCart) => { - console.log('🟢 Content: [CART] Add to Cart button found:', addToCart); - - let addToCartButton = addToCart.querySelector('.index_usBtn__2KlEx'); - - if (addToCartButton) { - console.log('🟢 Content: [CART] Add to Cart button found:', addToCartButton.outerHTML); - try { - const wasDisabled = addToCartButton.disabled; - console.log('🟢 Content: [CART] Button disabled:', wasDisabled); - if (!wasDisabled) { - // Dispatch touchend event for mobile - const touchEvent = new Event('touchend', { bubbles: true, cancelable: true }); - addToCartButton.dispatchEvent(touchEvent); - console.log('🟢 Content: [CART] Dispatched touchend event on Add to Cart button.'); - // Also dispatch click event for fallback/desktop - const clickEvent = new MouseEvent('click', { bubbles: true, cancelable: true, view: window }); - addToCartButton.dispatchEvent(clickEvent); - console.log('🟢 Content: [CART] Dispatched click event on Add to Cart button.'); - sendResponse({ success: true }); - } else { - console.warn('🟢 Content: [CART] Add to Cart button is disabled, not clicking.'); - sendResponse({ success: false, error: 'Add to Cart button is disabled.' }); - } - } catch (err) { - console.error('🟢 Content: [CART] Error clicking Add to Cart button:', err); - sendResponse({ success: false, error: err.message }); - } - } else { - console.warn('🟢 Content: [CART] Add to Cart button not found.'); - sendResponse({ success: false, error: 'Add to Cart button not found.' }); - } + + case "EXTRACT_CART_PRODUCTS": + console.log("🟢 Content: Extracting cart products"); + this.extractCartProducts() + .then((products) => { + console.log("🟢 Content: Successfully extracted cart products:", products); + sendResponse({ + success: true, + products: products, + }); + }) + .catch((error) => { + console.error("🟢 Content: Error extracting cart products:", error); + sendResponse({ + success: false, + error: error.message, + }); }); - })(); return true; + + case "EXTRACT_PRODUCT_DETAILS": + console.log("🟢 Content: Extracting product details"); + this.extractProductDetails(message.productPrice) default: - console.log('🟢 Content: Unknown message type:', message.type); - sendResponse({error: 'Unknown message type'}); + console.log("🟢 Content: Unknown message type:", message.type); + sendResponse({ error: "Unknown message type" }); } - + return true; }); } async extractUserProfile() { try { - console.log('🟢 Content: Extracting user profile'); - console.log('🟢 Content: Current URL:', window.location.href); - console.log('🟢 Content: Page title:', document.title); - - // Log all elements with class names containing 'user', 'profile', 'avatar', 'name' - const allElements = document.querySelectorAll('*'); - const relevantElements = Array.from(allElements).filter(el => { - const className = (el.className || '').toString(); - const id = (el.id || '').toString(); - return (className.includes('user') || className.includes('profile') || - className.includes('avatar') || className.includes('name') || - id.includes('user') || id.includes('profile') || - id.includes('avatar') || id.includes('name')); - }); - - console.log('🟢 Content: Found relevant elements:', relevantElements.map(el => ({ - tagName: el.tagName, - className: (el.className || '').toString(), - id: (el.id || '').toString(), - textContent: (el.textContent || '').substring(0, 50) - }))); - - // Try multiple selectors for user profile elements - const userProfileSelectors = [ - '.index_userTop__MEym8', - '.user-profile', - '.account-menu', - '.user-menu', - '[data-testid="user-menu"]', - '.user-info', - '.profile-section' + console.log("🟢 Content: Extracting user profile"); + console.log("🟢 Content: Current URL:", window.location.href); + + const avatarSelectors = [ + ".index_avatar__k4xgD", + ".index_avatarImg__fE1kn", ]; - - let userProfile = null; - for (const selector of userProfileSelectors) { - userProfile = document.querySelector(selector); - if (userProfile) { - console.log('🟢 Content: Found user profile with selector:', selector); - break; - } - } - - if (!userProfile) { - // If no specific profile element found, try to find avatar and username separately - console.log('🟢 Content: No specific user profile element found, searching for individual elements'); - return this.extractUserProfileFromIndividualElements(); - } - - console.log('🟢 Content: User profile element found:', userProfile); - - // Extract avatar image src - const avatarSelectors = [ - '.index_avatar__k4xgD', - '.user-avatar', - '.avatar', - 'img[alt*="avatar"]', - 'img[alt*="user"]', - '.profile-image' - ]; - - let avatarUrl = ''; - for (const selector of avatarSelectors) { - const avatarElement = userProfile.querySelector(selector); - if (avatarElement) { - const img = avatarElement.querySelector('img') || avatarElement; - if (img && img.src) { - avatarUrl = img.src; - console.log('🟢 Content: Found avatar with selector:', selector); - break; - } else if (avatarElement.style.backgroundImage && avatarElement.style.backgroundImage.startsWith('url(')) { - avatarUrl = avatarElement.style.backgroundImage.slice(5, -2); - console.log('🟢 Content: Found avatar background with selector:', selector); - break; + + let avatarUrl = ""; + for (const selector of avatarSelectors) { + const avatarElement = document.querySelector(selector); + if (avatarElement) { + const img = avatarElement.querySelector("img") || avatarElement; + if (img && img.src) { + avatarUrl = img.src; + console.log("🟢 Content: Found avatar with selector:", selector); + break; + } else if ( + avatarElement.style.backgroundImage && + avatarElement.style.backgroundImage.startsWith("url(") + ) { + avatarUrl = avatarElement.style.backgroundImage.slice(5, -2); + console.log( + "🟢 Content: Found avatar background with selector:", + selector + ); + break; + } } } - } - - // Extract username - try both selectors - const usernameSelectors = [ - '.index_name__2CdgQ', - '.index_nickname__pnxE6' - ]; - - let username = ''; - for (const selector of usernameSelectors) { - const usernameElement = userProfile.querySelector(selector); - console.log('🟢 Content: Trying username selector:', selector, 'Found:', !!usernameElement); - if (usernameElement) { - let rawText = usernameElement.textContent || ''; - console.log('🟢 Content: Username element text:', rawText); - let cleaned = rawText.trim(); - if (cleaned) { - // Split by   and take first element, then remove "Sign Out" if present - username = cleaned.replace(/sign out/gi, '').trim(); - console.log('🟢 Content: Found username with selector:', selector, 'Value:', username); - break; + const usernameSelectors = [ + ".index_name__2CdgQ", + ".index_nickname__pnxE6", + ]; + + let username = ""; + for (const selector of usernameSelectors) { + const usernameElement = document.querySelector(selector); + console.log( + "🟢 Content: Trying username selector:", + selector, + "Found:", + !!usernameElement + ); + if (usernameElement) { + let rawText = usernameElement.textContent || ""; + console.log("🟢 Content: Username element text:", rawText); + let cleaned = rawText.trim(); + if (cleaned) { + username = cleaned.replace(/sign out/gi, "").trim(); + console.log( + "🟢 Content: Found username with selector:", + selector, + "Value:", + username + ); + break; } } - } - - if (!username) { - console.log('🟢 Content: Username not found in profile element, trying individual search'); - const individualResult = await this.extractUserProfileFromIndividualElements(); - return { - avatar: avatarUrl || individualResult.avatar, - username: individualResult.username + } + + const profile = { + avatar: avatarUrl, + username: username, }; - } - - const profile = { - avatar: avatarUrl, - username: username, - }; - console.log('🟢 Content: Extracted user profile:', profile); - return profile; + console.log("🟢 Content: Extracted user profile:", profile); + return profile; } catch (error) { - console.error('🟢 Content: Error extracting user profile:', error); - // Return a fallback profile + console.error("🟢 Content: Error extracting user profile:", error); return { - avatar: '', - username: 'User' + avatar: "", + username: "User", }; } } - async extractUserProfileFromIndividualElements() { - console.log('🟢 Content: Extracting user profile from individual elements'); - - // Search for avatar anywhere on the page - const avatarSelectors = [ - 'img[alt*="avatar"]', - 'img[alt*="user"]', - '.avatar img', - '.user-avatar img', - '.profile-image img', - 'img[src*="avatar"]', - 'img[src*="user"]' - ]; - - let avatarUrl = ''; - for (const selector of avatarSelectors) { - const avatarImg = document.querySelector(selector); - if (avatarImg && avatarImg.src) { - avatarUrl = avatarImg.src; - console.log('🟢 Content: Found avatar with selector:', selector); - break; - } - } - - // Search for username anywhere on the page - const usernameSelectors = [ - '.index_name__2CdgQ', - '.index_nickname__pnxE6', - '.username', - '.user-name', - '.profile-name', - '.account-name', - '[data-testid="username"]', - '.user-info .name', - '.profile .name' - ]; - - let username = ''; - for (const selector of usernameSelectors) { - const usernameElement = document.querySelector(selector); - console.log('🟢 Content: Trying individual username selector:', selector, 'Found:', !!usernameElement); - if (usernameElement) { - console.log('🟢 Content: Individual username element text:', usernameElement.textContent); - } - if (usernameElement && usernameElement.textContent.trim()) { - let rawText = usernameElement.textContent.trim(); - // Split by   and take first element, then remove "Sign Out" if present - username = rawText.split(' ')[0].replace(/sign out/gi, '').trim(); - console.log('🟢 Content: Found individual username with selector:', selector, 'Value:', username); - break; - } - } - - // If still no username, try to extract from page title or other common elements - if (!username) { - const pageTitle = document.title || ''; - if (pageTitle && (pageTitle.includes('Account') || pageTitle.includes('Profile'))) { - // Try to extract username from page title or other elements - const possibleUsernameElements = document.querySelectorAll('h1, h2, h3, .title, .heading'); - for (const element of possibleUsernameElements) { - const text = element.textContent?.trim() || ''; - if (text && text.length > 0 && text.length < 50 && !text.includes('Account') && !text.includes('Profile')) { - username = text; - console.log('🟢 Content: Found username from general element:', text); - break; - } - } - } - } - - // Fallback username if nothing found - if (!username) { - username = 'User'; - console.log('🟢 Content: Using fallback username'); - } - - const profile = { - avatar: avatarUrl, - username: username, - }; - console.log('🟢 Content: Extracted user profile from individual elements:', profile); - return profile; - } - async extractSearchResults(searchQuery) { try { - console.log('🟢 Content: Starting search result extraction'); - - - // Wait for search results to load using the actual Popmart selectors - console.log('🟢 Content: Waiting for product elements to load...'); - await this.waitForElement('.index_productItemContainer__rDwtr, .product-item, .search-result, [data-testid="product-card"]', 10000); - console.log('🟢 Content: Product elements found'); - - // Look for product cards/items with actual Popmart selectors first - const productSelectors = [ + console.log("🟢 Content: Starting search result extraction"); + console.log("🟢 Content: Waiting for product elements to load..."); + await this.waitForElement( '[data-pm-exposure-tracker-action="PopMartGlobalWebCommodityCardShow"]', - // '.index_productItemContainer__rDwtr', - // '.product-item', - // '.search-result', - // '[data-testid="product-card"]', - // '.product-card', - // '.item-card' - ]; - + 10000 + ); + console.log("🟢 Content: Product elements found"); + const productSelectors = + '[data-pm-exposure-tracker-action="PopMartGlobalWebCommodityCardShow"]'; + let products = []; - - for (const selector of productSelectors) { - const elements = document.querySelectorAll(selector); - console.log('🟢 Content: Found', elements.length, 'elements with selector:', selector); - if (elements.length > 0) { - products = Array.from(elements).slice(0, 5); - console.log('🟢 Content: Using selector:', selector); - break; - } + + const elements = document.querySelectorAll(productSelectors); + console.log( + "🟢 Content: Found", + elements.length, + "elements with selector:", + productSelectors + ); + if (elements.length > 0) { + products = Array.from(elements).slice(0, 5); + console.log("🟢 Content: Using selector:", productSelectors); } - + if (products.length === 0) { - console.log('🟢 Content: No products found with any selector'); - throw new Error('No search results found'); + console.log("🟢 Content: No products found with any selector"); + throw new Error("No search results found"); } - - console.log('🟢 Content: Processing', products.length, 'products'); - + console.log("🟢 Content: Processing", products.length, "products"); + const results = products.map((product, index) => { - console.log('🟢 Content: Processing product', index + 1); - console.log('🟢 Content: Product element:', product); - - // Extract product information using actual Popmart selectors - const nameElement = product.querySelector('.index_itemTitle__WaT6_, .index_itemSubTitle__mX6v_, .product-name, .item-name, h3, h4, .title'); - const priceElement = product.querySelector('.index_itemPrice__AQoMy, .price, .product-price, .item-price'); - const imageElement = product.querySelector('img'); - - // Check stock status using the tag container - - const stockTagContainer = product.querySelector('.index_tag__E64FE'); - console.log('🟢 Content: Stock tag container:', stockTagContainer); - let stockStatus = 'Available'; - if (stockTagContainer) { - const stockTag = stockTagContainer.querySelector('.ant-tag'); - if (stockTag && stockTag.textContent.trim() === 'OUT OF STOCK') { - stockStatus = 'Out of Stock'; - } - } + console.log("🟢 Content: Processing product", index + 1); + console.log("🟢 Content: Product element:", product); - - // Find the link - it's the parent tag that wraps the entire product card - const linkElement = product.closest('a') || product.querySelector('a'); + const nameElement = product.querySelector( + ".index_itemTitle__WaT6_, .index_itemSubTitle__mX6v_, .product-name, .item-name, h3, h4, .title" + ); + const priceElement = product.querySelector( + ".index_itemPrice__AQoMy" + ); + const imageElement = product.querySelector("img"); + + const linkElement = product.closest("a") || product.querySelector("a"); const link = linkElement?.href || window.location.href; - - console.log('🟢 Content: Link element found:', linkElement); - console.log('🟢 Content: Link URL:', link); - - // Get the full product name (subtitle + title) - const subTitleElement = product.querySelector('.index_itemSubTitle__mX6v_'); - const titleElement = product.querySelector('.index_itemTitle__WaT6_'); - let fullName = ''; - + + console.log("🟢 Content: Link element found:", linkElement); + console.log("🟢 Content: Link URL:", link); + + const subTitleElement = product.querySelector( + ".index_itemSubTitle__mX6v_" + ); + const titleElement = product.querySelector(".index_itemTitle__WaT6_"); + let fullName = ""; + if (subTitleElement && titleElement) { fullName = `${subTitleElement.textContent.trim()} - ${titleElement.textContent.trim()}`; } else if (nameElement) { @@ -485,241 +310,291 @@ class ContentScript { } else { fullName = `Labubu Product ${index + 1}`; } - + const result = { id: index, name: fullName, - price: priceElement?.textContent?.trim() || 'Price not available', - image: imageElement?.src || imageElement?.getAttribute('data-src') || '', + price: priceElement?.textContent?.trim() || "Price not available", + image: + imageElement?.src || imageElement?.getAttribute("data-src") || "", url: link, relevance: index + 1, - stockStatus: stockStatus, }; - - // Add detailed logging for debugging - console.log('🟢 Content: Final extracted product', index + 1, ':', { - name: result.name, - price: result.price, - url: result.url, - stockStatus: result.stockStatus, - hasLink: !!linkElement, - linkElement: linkElement, - rawHtml: result.rawHtml - }); - return result; }); - - console.log('🟢 Content: Successfully extracted', results.length, 'search results'); + + console.log( + "🟢 Content: Successfully extracted", + results.length, + "search results" + ); return results; - } catch (error) { - console.error('🟢 Content: Error extracting search results:', error); + console.error("🟢 Content: Error extracting search results:", error); throw error; } } - async extractProductDetails() { + async extractProductDetails(productPrice) { try { - console.log('🟢 Content: Starting product details extraction'); - console.log('🟢 Content: Current URL:', window.location.href); - console.log('🟢 Content: Page title:', document.title); - - // Wait for the product container to be available - await this.waitForElement('.products_container__T0mpL', 60000); - const productContainer = document.querySelector('.products_container__T0mpL'); - console.log('🟢 Content: Product container found:', productContainer); - - // Extract product image - look for the main product image in the swiper - console.log('🟢 Content: Looking for product image...'); - let productImage = ''; - // Try multiple selectors for the product image + console.log("🟢 Content: Starting product details extraction"); + console.log("🟢 Content: Current URL:", window.location.href); + console.log("🟢 Content: Product price:", productPrice); + + + await this.waitForElement(".products_container__T0mpL", 20000); + const productContainer = document.querySelector( + ".products_container__T0mpL" + ); + console.log("🟢 Content: Product container found:", productContainer); + + let productImage = ""; + const imageSelectors = [ - '.index_imgContainer___mAnP .adm-image-img', - '.index_imgContainer___mAnP img', - '.adm-swiper-slide-active img', - '.index_img__ZPq_y img', - '.adm-image-img', - '.index_imgContainer___mAnP .adm-image img', - '.adm-swiper-slide img', - 'img[src*="popmart.com"]', - 'img[alt*="doll"]', - 'img[alt*="plush"]' + ".index_imgContainer___mAnP img", + ".index_imgContainer___mAnP .adm-image-img", ]; - - console.log('🟢 Content: Looking for product images with selectors:', imageSelectors); - + + console.log( + "🟢 Content: Looking for product images with selectors:", + imageSelectors + ); + for (const selector of imageSelectors) { const imageElements = document.querySelectorAll(selector); - console.log('🟢 Content: Found', imageElements.length, 'elements with selector:', selector); - + console.log( + "🟢 Content: Found", + imageElements.length, + "elements with selector:", + selector + ); + for (const imageElement of imageElements) { - console.log('🟢 Content: Checking image element:', { + console.log("🟢 Content: Checking image element:", { src: imageElement.src, alt: imageElement.alt, className: imageElement.className, - parentClassName: imageElement.parentElement?.className + parentClassName: imageElement.parentElement?.className, }); - - if (imageElement.src && imageElement.src.includes('popmart.com')) { + + if (imageElement.src) { productImage = imageElement.src; - console.log('🟢 Content: Found product image with selector:', selector); - console.log('🟢 Content: Image URL:', productImage); + console.log( + "🟢 Content: Found product image with selector:", + selector + ); + console.log("🟢 Content: Image URL:", productImage); break; } } - + if (productImage) break; } - - if (!productImage) { - console.log('🟢 Content: No product image found with any selector, waiting for images to load...'); - - // Wait for images to load if not found immediately - await new Promise((resolve) => { - const checkForImages = () => { - const allImages = document.querySelectorAll('img[src*="popmart.com"]'); - console.log('🟢 Content: Found', allImages.length, 'Popmart images after waiting'); - - for (const img of allImages) { - if (img.src && img.src.includes('popmart.com') && img.complete) { - productImage = img.src; - console.log('🟢 Content: Found product image after waiting:', productImage); - resolve(); - return; - } - } - - // If no images found after 3 seconds, give up - setTimeout(resolve, 3000); - }; - - setTimeout(checkForImages, 1000); - }); - } - - // Extract product name - look for the actual product title - console.log('🟢 Content: Looking for product name...'); - let productName = ''; - - // Try to find the product title in the breadcrumb or other title elements - const nameSelectors = [ - '.index_breadCrumb__dsPae span:last-child', - '.index_titleContainer__lPjts .index_title___0OsZ', - '.index_titleContainer__lPjts h1', - '.index_titleContainer__lPjts h2', - '.index_titleContainer__lPjts .index_itemText__2d10b', - '.index_titleContainer__lPjts', - '.index_titleBlock__stEbJ .index_title___0OsZ', - 'h1', - 'h2', - '.product-title', - '.item-title', - '[data-testid="product-title"]', - '.product-name' - ]; - - for (const selector of nameSelectors) { - const nameElement = document.querySelector(selector); - console.log('🟢 Content: Checking name selector:', selector, 'Found:', !!nameElement); + + console.log("🟢 Content: Looking for product name..."); + let productName = ""; + const nameSelectors = ".index_title___0OsZ"; + + const nameElement = document.querySelector(nameSelectors); + console.log( + "🟢 Content: Checking name selector:", + "Found:", + !!nameElement + ); if (nameElement) { - console.log('🟢 Content: Name element text:', nameElement.textContent.trim()); + console.log( + "🟢 Content: Name element text:", + nameElement.textContent.trim() + ); } if (nameElement && nameElement.textContent.trim()) { productName = nameElement.textContent.trim(); - console.log('🟢 Content: Found product name with selector:', selector); - console.log('🟢 Content: Product name:', productName); - break; - } - } - - // If no specific title found, try to extract from breadcrumb - if (!productName) { - const breadcrumbItems = document.querySelectorAll('.index_crumbItem__Ne_lT'); - if (breadcrumbItems.length > 0) { - const lastBreadcrumb = breadcrumbItems[breadcrumbItems.length - 1]; - const breadcrumbText = lastBreadcrumb.textContent.trim(); - if (breadcrumbText && breadcrumbText !== 'HOME' && breadcrumbText !== '/') { - productName = breadcrumbText; - console.log('🟢 Content: Using breadcrumb text as product name:', productName); - } + console.log( + "🟢 Content: Found product name with selector:", + ); + console.log("🟢 Content: Product name:", productName); } - } - - let productPrice = ''; - const priceSelectors = [ - '.index_itemPrice__AQoMy', - '.price', - '.product-price', - '.item-price' - ]; - - for (const selector of priceSelectors) { - const priceElement = document.querySelector(selector); - if (priceElement && priceElement.textContent.trim()) { - productPrice = priceElement.textContent.trim(); - console.log('🟢 Content: Found product price with selector:', selector); - console.log('🟢 Content: Product price:', productPrice); - break; - } - } - + const productDetails = { - name: productName || 'Product', + name: productName || "Product", image: productImage, price: productPrice, - availabilityStatus: 'Unknown', // This will be updated by the cart check - url: window.location.href + url: window.location.href, }; - - console.log('🟢 Content: Extracted product details:', productDetails); + + console.log("🟢 Content: Extracted product details:", productDetails); return productDetails; - } catch (error) { - console.error('🟢 Content: Error extracting product details:', error); + console.error("🟢 Content: Error extracting product details:", error); throw error; } } - async getDOMContent(element) { - const serializer = new XMLSerializer(); - return serializer.serializeToString(element); -} async waitForElement(selector, timeout = 5000) { - console.log('🟢 Content: Waiting for element:', selector); + console.log("🟢 Content: Waiting for element:", selector); return new Promise((resolve, reject) => { const element = document.querySelector(selector); if (element) { - console.log('🟢 Content: Element found immediately:', selector); + console.log("🟢 Content: Element found immediately:", selector); resolve(element); return; } - + const observer = new MutationObserver(() => { const element = document.querySelector(selector); if (element) { - console.log('🟢 Content: Element found via observer:', selector); + console.log("🟢 Content: Element found via observer:", selector); observer.disconnect(); resolve(element); } }); - + observer.observe(document.body, { childList: true, - subtree: true + subtree: true, }); - + setTimeout(() => { observer.disconnect(); - console.log('🟢 Content: Element not found within timeout:', selector); - reject(new Error(`Element ${selector} not found within ${timeout}ms`)); - }, timeout); - }); + console.log("🟢 Content: Element not found within timeout:", selector); + reject(new Error(`Element ${selector} not found within ${timeout}ms`)); + }, timeout); + }); +} + +async checkProductInCart(productName) { + console.log("🟢 Content: Checking product in cart:", productName); + await this.waitForElement(".product_productName__TwvLM", 60000); + const cartList = document.querySelector(".index_contentLeft__OnEFB"); + console.log("🟢 Content: Cart list found:", cartList); + const cartProductNames = document.querySelectorAll(".product_productName__TwvLM"); + console.log("🟢 Content: Found", cartProductNames.length, "products in cart"); + for (const productElement of cartProductNames) { + const cartProductName = productElement.textContent.trim(); + console.log("🟢 Content: Comparing cart product:", cartProductName, "with:", productName); + } + try { + const cartProductNames = document.querySelectorAll(".product_productName__TwvLM"); + console.log("🟢 Content: Found", cartProductNames.length, "products in cart"); + + for (const productElement of cartProductNames) { + const cartProductName = productElement.textContent.trim(); + console.log("🟢 Content: Comparing cart product:", cartProductName, "with:", productName); + + if (cartProductName === productName) { + console.log("🟢 Content: Product found in cart!"); + return true; + } + } + + console.log("🟢 Content: Product not found in cart"); + return false; + } catch (error) { + console.error("🟢 Content: Error checking product in cart:", error); + return false; + } +} + + async clickAddToCart() { + try { + console.log("🟢 Content: Starting add to cart click"); + await this.waitForElement(".index_fixBottomBtn__Y3cIe", 10000); + + const addToCartButton = document.querySelector(".index_fixBottomBtn__Y3cIe"); + console.log("🟢 Content: Add to cart button found:", addToCartButton); + + if (!addToCartButton) { + console.log("🟢 Content: Add to cart button not found"); + return false; + } + + const buttonText = addToCartButton.textContent.trim(); + console.log("🟢 Content: Button text:", buttonText); + + console.log("🟢 Content: Clicking add to cart button"); + addToCartButton.click(); + + await new Promise(resolve => setTimeout(resolve, 1000)); + + console.log("🟢 Content: Add to cart click completed successfully"); + return true; + + } catch (error) { + console.error("🟢 Content: Error clicking add to cart button:", error); + return false; + } + } + + async extractCartProducts() { + try { + console.log("🟢 Content: Starting cart products extraction"); + console.log("🟢 Content: Current URL:", window.location.href); + + const selectors = [ + ".product_productName__TwvLM", + ".product_productContainer__JPqj", + "[class*='productContainer']", + "[class*='productName']" + ]; + + let cartProductElements = []; + for (const selector of selectors) { + cartProductElements = document.querySelectorAll(selector); + if (cartProductElements.length > 0) { + console.log("🟢 Content: Found products with selector:", selector); + break; + } + } + + if (cartProductElements.length === 0) { + await this.waitForElement("[class*='product']", 10000); + cartProductElements = document.querySelectorAll("[class*='productContainer']"); + } + + console.log("🟢 Content: Found", cartProductElements.length, "cart products"); + + const products = []; + + for (let i = 0; i < cartProductElements.length; i++) { + const productContainer = cartProductElements[i]; + console.log("🟢 Content: Processing cart product", i + 1); + + const nameElement = productContainer.querySelector(".product_productName__TwvLM, [class*='productName']"); + const productName = nameElement ? nameElement.textContent.trim() : "Product Name Not Available"; + + const priceElement = productContainer.querySelector(".product_productPrice__vmBKG, [class*='productPrice'], [class*='price']"); + const price = priceElement ? priceElement.textContent.trim() : "Price not available"; + + const imageElement = productContainer.querySelector("img"); + const image = imageElement ? (imageElement.src || imageElement.getAttribute("data-src")) : ""; + + const linkElement = productContainer.querySelector("a"); + const url = linkElement ? linkElement.href : window.location.href; + + const product = { + id: Date.now().toString() + i, + name: productName, + price: price, + image: image, + url: url, + addedAt: new Date().toISOString() + }; + + console.log("🟢 Content: Extracted cart product:", product); + products.push(product); + } + + console.log("🟢 Content: Successfully extracted", products.length, "cart products"); + return products; + + } catch (error) { + console.error("🟢 Content: Error extracting cart products:", error); + throw error; + } } } const contentScript = new ContentScript(); -// Add a very visible log to confirm content script is running -console.log('🔵 LABUBU CONTENT SCRIPT INITIALIZED 🔵'); -console.log('🔵 If you see this, content script is working! 🔵'); +console.log("🔵 LABUBU CONTENT SCRIPT INITIALIZED 🔵"); + diff --git a/Labubu/repo/src/popup/Popup.jsx b/Labubu/repo/src/popup/Popup.jsx index 8c630b07b..5ca56322f 100644 --- a/Labubu/repo/src/popup/Popup.jsx +++ b/Labubu/repo/src/popup/Popup.jsx @@ -1,8 +1,9 @@ import React, { useEffect, useState } from "react"; import LabubuSearch from "../components/LabubuSearch.jsx"; -import { motion, AnimatePresence } from "framer-motion"; +import { motion } from "framer-motion"; import { FaBolt, FaLock, FaGift } from 'react-icons/fa'; + const LABUBU_EMOJI = "🦊"; const popupVariants = { @@ -45,6 +46,11 @@ const Popup = () => { setAuthStatus('failed'); setShowLoginPrompt(true); break; + + case 'BACKGROUND_ADDED_TO_CART': + console.log('🟡 Popup: Product added to cart in background:', message.productName); + // You could show a toast or update the UI here + break; } }; @@ -136,53 +142,49 @@ const Popup = () => {

Labubu Extension

Your playful Popmart helper!

- - {authStatus === 'loading' && ( - -
-

Checking authentication...

-
- )} - {showLoginPrompt && ( - -
-
- 🔐 -
-

Login Required

-

Please login to Popmart to continue using the Labubu extension.

-
- - -
+ {authStatus === 'loading' && ( + +
+

Checking authentication...

+
+ )} + {showLoginPrompt && ( + +
+
+ 🔐 +
+

Login Required

+

Please login to Popmart to continue using the Labubu extension.

+
+ +
- - )} - +
+
+ )}

No items in waitlist

-

Items will appear here when out of stock

-

Auto-retry system will attempt to add them every 5 minutes

) : (
@@ -274,9 +272,9 @@ const CartManager = ({ onBack }) => { Added: {new Date(product.addedAt).toLocaleDateString()}

)} -
- - Auto-retrying every 5 minutes +
+ + Will be automatically added to cart when back in stock
diff --git a/Labubu/repo/src/components/LabubuSearch.jsx b/Labubu/repo/src/components/LabubuSearch.jsx index ddd91d12a..715f0bbfc 100644 --- a/Labubu/repo/src/components/LabubuSearch.jsx +++ b/Labubu/repo/src/components/LabubuSearch.jsx @@ -87,7 +87,7 @@ const LabubuSearch = ({ onBack, userProfile, onLogout }) => { } else { setToast({ show: true, - message: '⏰ Added to waitlist - will notify when available!', + message: '⏰ Added to waitlist - will automatically add to cart when available!', type: 'info' }); } From 95fe77fab6f6e55bac5cd32309fe458bbbee403a Mon Sep 17 00:00:00 2001 From: kritagya-khanna Date: Sat, 19 Jul 2025 19:52:10 +0530 Subject: [PATCH 8/9] fixed merge conflict --- Labubu/labubu_automator.crx | Bin 0 -> 154966 bytes extensions.json | 84 +++++++++++++++++++++++++++++++++--- 2 files changed, 77 insertions(+), 7 deletions(-) create mode 100644 Labubu/labubu_automator.crx diff --git a/Labubu/labubu_automator.crx b/Labubu/labubu_automator.crx new file mode 100644 index 0000000000000000000000000000000000000000..3c92999abe7ef65e4b2f1c1d7137ec9d36c53c32 GIT binary patch literal 154966 zcmcedWlSYq5T@_NeQ=k-VQ{y>-EDApcNp9m+}+*XT`ul}I}Gmb4$HU6X0yre-|ggd zC#QdOrMkN6t*6q$j?Ap!002M~3;;l_gn%msV+;V2Fd{<1{s@)`enbQUfsg?30N^*k z*FGFr01yZ$ZhZf(d28RY!#SW7Tc%TLt^Al=$aZPByt9d>h62me{^5UySWXA^HWF1? zyd+3N&iTUOfLg!U1kLJXwb}}Wh_UIij&TQ0j8Q4lotUrl!>zVN>*jmqWXbR)Hjg*2+E-b2G7rSYs2}0Mb+3l^;rg!`XcCEBFSbf25fAPewcsq za30LLhFPFj$mMu~u(%UxnaQVlSk>C(O%=|eCA^w`7-po$vs0TO4~zUx{6I*0@e0uj zV2YiOFPh(6( zOhJ~n(%^nTRc##4MP>W#75gSlFLa9CGLs(Lac758k<7f&r(rb8QOJ;1F~G01OO3$?R6s3>I;=3Kal2 zHv|9>0q6ij10yRlM>`i=V|q&`AOQI*^8U|bQv1?zjWgaCBb{xZgdKY|+U&u$kda

`@1Au^4LjPQLq{zvXK%X{u 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

`Q-8AeN}Y0KO8(& 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 J8{uxie*wGw(}4g0 literal 0 HcmV?d00001 diff --git a/extensions.json b/extensions.json index e0c85ed50..1c571c268 100644 --- a/extensions.json +++ b/extensions.json @@ -4,7 +4,7 @@ "id": "allmdcfldidgeghfoioaaiammdlpmnnk", "name": "Artifact", "description": "An extension to earn rewards for browsing the web.", - "version": "1.0.0", + "version": "1.0.1", "author": "Wootzapp Team", "download_url": "https://raw.githubusercontent.com/wootzapp/ext-store/main/Artifact/Artifact.crx", "icon_url": "https://raw.githubusercontent.com/wootzapp/ext-store/main/Artifact/repo/public/icons/icon128.png", @@ -15,13 +15,13 @@ "Browse" ], "created_at": "2025-02-26T15:00:00Z", - "updated_at": "2025-02-26T15:00:00Z" + "updated_at": "2025-05-31T15:00:00Z" }, { "id": "fdjkflhcgjnhmbfpbojnalpfmomjggkj", "name": "Wootzapp Wallet", "description": "Wallet for Ethereum and Solana blockchain networks.", - "version": "1.0.0", + "version": "1.0.4", "author": "Wootzapp Team", "download_url": "https://raw.githubusercontent.com/wootzapp/ext-store/main/Wootzapp%20Wallet/Wootzapp%20Wallet.crx", "icon_url": "https://raw.githubusercontent.com/wootzapp/ext-store/main/Wootzapp%20Wallet/repo/public/icons/icon128.png", @@ -34,6 +34,24 @@ "created_at": "2025-02-26T15:00:00Z", "updated_at": "2025-02-26T15:00:00Z" }, + { + "id": "lldicgmlhdphidpnhgeiibfkifemhgal", + "name": "AI Data Scraper", + "description": "An extension to earn passive money by scrolling tweets on twitter(X) using AI.", + "version": "1.0.0", + "author": "Wootzapp Team", + "download_url": "https://raw.githubusercontent.com/itskartike910/extensions/main/extensions/ai-data-scraper/ai-data-scraper.crx", + "icon_url": "https://raw.githubusercontent.com/itskartike910/extensions/main/extensions/ai-data-scraper/icon.png", + "github_url": "https://github.com/itskartike910/extensions/tree/main/extensions/ai-data-scraper", + "tags": [ + "Earn", + "Rewards", + "AI", + "Scraping" + ], + "created_at": "2025-05-21T12:10:33Z", + "updated_at": "2025-05-21T12:10:33Z" + }, { "id": "gpfellaldmjpgonllcjpjfpodfmgobnk", "name": "Tap.Eclipse", @@ -55,7 +73,7 @@ "id": "kpobgdhknoakgagflffeigaojlglkbhn", "name": "Blockmesh Network", "description": "BlockMesh Network allows you to generate passive income from your excessive bandwidth.", - "version": "0.0.539", + "version": "0.0.562", "author": "Wootzapp Team", "download_url": "https://raw.githubusercontent.com/wootzapp/ext-store/main/Blockmesh%20Network/Blockmesh.crx", "icon_url": "https://raw.githubusercontent.com/wootzapp/ext-store/main/Blockmesh%20Network/blockmesh-icon.png", @@ -86,7 +104,42 @@ "updated_at": "2025-02-26T15:00:00Z" }, { - "id": "oepnbacopffogclidcgdkonkjdhegcmn", + "id": "doklnekkemmhclakfekoccilofpdcncb", + "name": "Coddata Clip", + "description": "Turn Your Intelligence into AI", + "version": "1.0.0", + "author": "Wootzapp Team", + "download_url": "https://raw.githubusercontent.com/wootzapp/ext-store/main/Coddata%20Clip/COddata.crx", + "icon_url": "https://raw.githubusercontent.com/wootzapp/ext-store/main/Coddata%20Clip/Repo/assets/images/logo.png", + "github_url": "https://github.com/wootzapp/ext-store/tree/main/Coddata%20Clip/Repo", + "tags": [ + "Rewards", + "AI", + "Instagram" + ], + "created_at": "2025-02-26T15:00:00Z", + "updated_at": "2025-02-26T15:00:00Z" + }, + { + "id": "ficjckojhebnoogjmhacgodjcgddphac", + "name": "AI Twitter Agent", + "description": "An AI Twitter Agent that can post ai generated tweets on your behalf.", + "version": "1.0.0", + "author": "Wootzapp Team", + "download_url": "https://raw.githubusercontent.com/wootzapp/ext-store/main/AI%20Twitter%20Agent/AITwitterAgent.crx", + "icon_url": "https://raw.githubusercontent.com/wootzapp/ext-store/main/AI%20Twitter%20Agent/repo/public/icons/icon.png", + "github_url": "https://github.com/wootzapp/ext-store/tree/main/AI%20Twitter%20Agent/repo", + "tags": [ + "AI", + "Twitter", + "Agent", + "Automation" + ], + "created_at": "2025-07-02T15:00:00Z", + "updated_at": "2025-07-02T15:00:00Z" + }, + { + "id": "mafnkcehjhddilcnhlnkbcbelilbifhm", "name": "ZK Proofing", "description": "An extension to generate cryptographic proofs for zk-SNARKs.", "version": "1.0.0", @@ -108,7 +161,7 @@ "description": "An extension to automate labubu tasks.", "version": "1.0.0", "author": "Wootzapp Team", - "download_url": "https://raw.githubusercontent.com/wootzapp/ext-store/main/Labubu/Labubu.crx", + "download_url": "https://raw.githubusercontent.com/wootzapp/ext-store/main/Labubu/Labubu_automator.crx", "icon_url": "https://raw.githubusercontent.com/wootzapp/ext-store/main/Labubu/repo/assets/icon.png", "github_url": "https://github.com/wootzapp/ext-store/tree/main/Labubu/repo", "tags": [ @@ -136,6 +189,23 @@ "created_at": "2025-02-26T15:00:00Z", "updated_at": "2025-02-26T15:00:00Z" }, + { + "id": "gckloiljabipmjohgnklademghjaoboa", + "name": "Trex", + "description": "Get rewards by watching YouTube videos and using Twitter", + "version": "1.0.0", + "author": "Wootzapp Team", + "download_url": "https://raw.githubusercontent.com/wootzapp/ext-store/main/Trex/dist_chrome.crx", + "icon_url": "https://raw.githubusercontent.com/wootzapp/ext-store/main/Trex/Repo/icon-128.png", + "github_url": "https://github.com/wootzapp/ext-store/tree/main/Trex/Repo", + "tags": [ + "Rewards", + "YouTube", + "Twitter" + ], + "created_at": "2025-07-12T15:00:02Z", + "updated_at": "2025-07-12T15:00:02Z" + }, { "id": "nofldplihhlkcpbejlmccfafcpeejaef", "name": "Sapien", @@ -154,4 +224,4 @@ "updated_at": "2025-02-26T15:00:00Z" } ] -} +} \ No newline at end of file From 35dd82272eb201e031d44d407a5255942b753f62 Mon Sep 17 00:00:00 2001 From: kritagya-khanna Date: Tue, 22 Jul 2025 13:33:51 +0530 Subject: [PATCH 9/9] deleted extra crx file --- Labubu/labubu automator.crx | Bin 154966 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Labubu/labubu automator.crx diff --git a/Labubu/labubu automator.crx b/Labubu/labubu automator.crx deleted file mode 100644 index bff03922c6c811d9004e7cfe1e9d66abf65e3166..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154966 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%0An-gt0YfcoWX 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 z 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 K!

oJ*q(DW>wfyuLqCH?-jtSuY2GqsT$TM`-9PH7R}_{jKl4iFnFIljN^N@;n3E# zIK6Khu3tWdjMz{y=aH5qx!Jtf5Yd)=ElqtEYtVnCm2mOEHdHC?lCQm)Qe)nj(QjT8 z0@lOegsNpd@nqea7~8)W{7)UqH^Z6JM@kGAb%dW@-wfKz+zXB?NNqM6Fg-NITgeH+eugx5Dve(ij%L37g8?1BdM>Z47ICsDU%HTIjz zrlFde)LeBcm&F$!{s+;17nS6jFtR* zg8c!Y+Mg?o?L)4c-A|_fN-#2KY)y`MV97O)3lX5^Yxmd?Fu24>aaMFFaQ7zmt^W-b zJzPbzGB`Hz)_i!;{_0K=x;O5_itLyyU%?Q14M0|bRjFL@&sX+N21aN9BrhWJy zd7laf4Lp}d&&y4k7>6$4nk692-HAa?v1n$sq| z?ix!g4SJ_M$>-`d7HYMpo7M3~N?bC{HfwxKyTz!|^$_w5t_t7Af? znVk*oV(41&%(ziXB@ne_`BGT7be;rJ*c8F^3jv%J$q^;7NDB|fl5eJ=ON(YGWipCT zsb(O-%4KrWpi#|A7~$0&%NBi)n81sYQXv?mDTAF;GCt*A1`QRc_XA9Qz9;~E|9d~| zX9D`6zH|(u^&t|mm-AqrHYQl;fO6s^fRtqXH0wKf+J}6XEa8T$S1#l9>C*yW66=Ng z@R}q_IV=)FAd6|HDE9eYlWQ&;D4YFLqVe1ag)_2QfL`ZkId7JoR;WOTN=nv}wf7sm`fgIm#Q z+0lNs+?aqI`ouH=H~g|tsix9s(6z%;m@)ketX;VbyS8q^u5DYfW6Nf2+OScADYIsN zhf*ay*!V5ll@Zlv2lhtDxg%0{D}^D^fl>uT^NCr*BbZ{qDE|`g#pMHpGAHIe8 zUroW9C3A7%@Gis!UzQ3aR##bXg-c3>8ioF00ch?8aKZDAfAjy+WA*!nz!sw{0$I{- zkwLH|v63tj@4WbIewA14>eX=m>^a#gnaX3`H{%Y0=Z^_RFlQyPKAjr|bKg8lOhXP%^qm(P=eD)!3(+^IKl}7oLP;Z6Ghml)Gf`9KlrjLfyIN)wP za3=GROWaUu+(xR_Pb=AGVRY9o&LjC#w&11d=5EBH(1yu0zXo*oOy^wYb*Nz`R z*H%sQ!P~M~V}ylhT@ zMcejh(HyV#?~RJ~wn^rb?bFVVL>-47i(>TrI)gvTjxUGUsc_7c)|ulW<*%>e)!aCEY&E ztHuThXc-M=bT}uT5m{x?N6%mRKJNbw02f#W%J&tG8{v=Ks1S+LTW`c*-j|b6&Q;+u zE1`GBt1mteSV;cIh`h3%88=2Y%--!Cr(pBuCpgER6Zd+o9JGd+i*; zFP%Wp*`u)(6mf((9aWnoOpuj=%+29CU9?;f|$(?%za~zEz!1i z+qP}n-Mekuwry*-jor3w+qP}nzJ0#jlQ+3P;H_k(W>Q(TGRK%%V^qxtWLc`N+FgB= zu>@>bnby`&3>GYN7n(CquXqd#Il1;k$B(v>D8EFBjPo@wa z+Ve}ei3EXAs|XQ)9Y$_8f~K?9!_#O1siMJPD^z+H;kN~Q*N|(sqk?ETRauxOkjL(n zb6p^{bN&F__82p9TmJO_64fa}{P2tO)#Kua{O7A69LRxY@cXHa!1@QW;i&ATGIvcG z0+7+uQcY?VCbhi)A=m|rgHL@S_-}w~p-e6H`Ao6*UiZF0dr4RS5!{q4rc&>!@LSJY za8-a}LxrK8>mx}N=(WluPA)jNHmk!Z>0iY8u%`N+@9OoukaxcT=oZjZ0>ta5eMl) z?Ur}(Mj66i#b%=5&`{|h*qd&*AF=ai-HGC+dJugTQ?*4{OOlauc#v_q_d>Zj z7?PDbNg#E3is7v))q(mkoh6DD@>YXJTG8#e=OzO({Zxqiw!&DRO4woI&Kl zQlG(G)bB22IIUhGH{c4Oo4(?%)KTs8MZ_KS8n90HC%;Sb*K5VvFg#nq%!!r5>7Pn} zIw^F_fomWsv807;?oJ9eu72{cPsbQpIw==`9BT#rV+qtA=Y^w0i-FMk7I%KY&%?Sf zi;cY4q%{<ziZXg5NyXu&tESeraRrGugsRD}Fz z#7;RyHGo|lRw)CP%gveqjA(HhF_{3)hr(}t7(Th_c0h4UP^5uWXr6?y?9iu%W-g6y z`$z=gJ0G`DrZ}UcLC*1G16Av!-^-}!9%eQg$rF7lH{@D?Q6^rHW48--m19fsrf&+U z=mYg6FOvP&YpQ~nhA;8vX#Byo3GtA4P4Rv_3Ebe}uYU}qPiISEiJo-e49e$r zOc0X+?1v^}29JWs@kv*ioj+C{$Ts;w8iR1+AxcA;Kor(1A12Rsyj0 z@$Gl&TUKn$Cl&rJ6vkDryx)D)x!3KcS=T<>+Q;_MU}o5y>zixC>6-k6#e~EJ)BHEFZNqwXV=@uK-Fr@D znj^w*osjyY+lvIf+w}=#g*t5wj~M-5<%sl^ikQ@4*rAyRv)-3UgF<14O*5W2U!ieO z8%Tp^!FT}UUx2^^k7J#Ga0p5L<(q=a>w{C#b8kYynAeZdH*Hfzxq-<+?ivn04I?0+ z&O5B}&|l)$eu>ZL0iGz_Mf@fziY%?of9eQAr4bas3luEx}d3f*du{+jHRHL17s zjc?BLle^PW3l$q`fjVy~@iPU}g+ENTL`=I(V9%E%DKT-tx7*|DNkHGUzmPpxR=Rw1 zog)2#I@%|El%D;T?+!J8_FvlWN&ZSt`RgD}n{$2bq2fhlUHrO8&D`Mpk=|7J<^G=Yq~@z*c{Srl&gKMe9U zUM++(AIY=*He`C4%ghhq1y*`W!ECjRy(0{v@-;C%8XuIn?I=YSqK6eXWD?KmnVp7r zbZMU(*ty0dsej4*@n2qvYUKwDSGC4-hKHu6d!pVz<0;OmGB-taLWOE+ecU6_B1@I$ z@yBfd?D(~ytn1~=O7k`8oZ7eb+X}L8>lwy1IZBt?`DhvP;J{+9KYZebwp#!Qp|I7q+Rp`BK7H*L#x64+})u z>$On-2XaJoXIRR)ywNUH@QW)D14Kex`R;H@C05dEeFtQF?fo9n-vZ#j*m=w80pPVl zpIS##6NMK@C&wlX%5DPYB!Hq3G*2p-t5c!+>V1!r$?G90aiE#h+RI!ZCL!btnFaP+ zcayA$m;G@wK`wG=Q7`8o`Mb|MB*LD10@=xVs8@nl5|84wB?|%*RrVyDB#n}jp>!oR zyPs*neg#N6^FK+prJLURDw$iDFCN)pJj*gnhtNL4s;tFW%vn{@yOd;GN;Kd9y5~TT zT)9*KwJ;L}*L>Iyq-jMp=*yyje*4#Uk0jxDPOqZ8Hn);X^T#9|z`|l*DEO`3DpEAR zuGAzJkB3A>tZnUZgy^mVb#x+yu9TZS@pfxvp)hH7%NS`Y-}O-b;ein}m4AQch*v6C zA}hT=akE9rD++HBz9t$!I(EksRZsREzB}u)JIQ`JhYz!X?+0N=#sh!H`xCBM&J+5_ z=L)ow%alU&`6{9tcYU`^)Wx`fVy{v-tj&P~D22=qvI{NhUX@M_u7_4Hk7XmVH#-qS z-)AhT-18Izoo*MD{hN^P^cc*2Yhdb-nE3!f~k>P9LrN(SXtWYWAXb^mDzQ2>Utqw3H6T^=#BkF7S6kY?$f9Vl9jf|uz z0SQ!8z2X;|*Z(U>5q<{=g{hq_LSe?tJRck#v^gi&WRrDcQ~`S*eX%qQZr2m8tHZrF zHVoS><>DcxjkoK>dsuHn{JsS*GZ~G{gpCfYGmJsA6grnp7vAt61Mg71$u3e z#F^o|CWK*^tPydT30Pv{Z>y&kvHJRu53(6GZQ97fO*flP2>@4XEcT%RX$;!9$ON@S zP23FA3!x(&r5NAn@`lv9zJ|N;XG^v*bqegz*kl3%?HRJgdX5LbGxB({ZxvAp6eg;+ zz70qfTG4JxI4*~NI*W@ERr(K|w!g$pchH^Di2h()AI5A8yr=6~7~fV$uAl_`+`4Vl zJeS3;?QFg^B)a?4DO3&K7DK6?T@)T0#!NJJbWO2uK(y7$?re8g7))0T??!W8VMPT< z@hhKMEZ*>R^u=6@44^EK1a zP=twS@x8`-P8SgRD6CK<>wdGt?b5#;0%wRRUIk0XNUe05Hsz7JKM9^0KRwUYd>rNH z5q8g8FHP74vmmnoBG9XWs-Uz(&BU)FcLh|lyjeRQH@0{RgwBmhN1qNS*WE9!JKa0m zJG>{^PS>2G3x;PKqPm2&fTs=HW{c&u+X*)uMtO?Amg0>PD$oaL%gW;YDKM z->GPmwz*$TwDvFhy|`tRQZ36VRxtA7m@zhR!2AeFh>JU0;~Dqy0uGjayfhLFr*`ns znyWSHN?k#8JU80Ypdn5@A4|rPe)j(5gS z8MZ|sPA7^pnbV!R!CaZCx3Aj-14;{cq?RIr?P&Qd^~OYYE^&k)J8C+0S?|s>NBYpE zi$9(QfM>uiI10<{H7RVJ?NP;_`{XS9`A%hGB?RigFTErI%H7O(H2Uc9R3!GfBBwiS z)w#Lw$Pm4Pa5?Tqw0CYb6#3x?BMxOK*)aP7jUtO^STtLC$BXBbPnu>cSNOPzuYLtL zM^7gxfW*;^Mjzcf8*0-;a%*wJ7z9-@HkbwC>uMU5>}Xa`hIJ_lJ2;-^cbOW0V=vcJ z1St{J?eeGw6tQ5In<=UZw11J6$HoV+9j7UbD-FVc3MIUX;&#Gn0gb1{XWGg zv+qYDi#JgOTBKyb;VnCY;4e3OrA!E|ZEp+}PemCmw>N#PttWwLv52^v69y#|j?-%# z2nUvbAYM`_q7uxUFOKK)z(B5(82qwmiZDcsyR~r#lukYjQ@HK&iR*U*ioVeBZ>i8i5 zU;y8rVacAEX57gEEX_)UX#%JGMYbEznOJP4KXaHb=s3)4oVBu{Lny*WigZg_?lv%I z)>uTI|a!$#nY>ZRCha{Er;jhnC!xl7dKs62fE6_j|TX6M;e9XN=uqd%T*e8{G}_Zin$ z$Ywj zODXzA5V50|l|yj#j|NTb;I4~PLb2BGx#~l<#RjHvduKv-lA^S5$YJmE%Y!VMi{>ek zu2+{EY7M*>e<(*}l|b^D-CJz8xISVY!b&cU@-(NA)+&?N^nr4WXhKu26BEtTIBcyw zf7g)b&aEw}Q>7&O(k?g%81U8f~S$$Xz3{{XMS zzx(}&f@L0)5*(9~c!7ilaW32Vn~wq61wyLWEkuwg$3;qyxN$r8@nI~^ z(g+NU_IY1bY4Qg3u4TQe4XvNgzw8&O=+kpvP{X->KZ!jgalqUQcStJ-JYE(Yo;-fR-|L!%i~F2sW- zs!Xd#trU(%N6{ugunVgqwD!wGz$oJO;mc3$UEq3*=`VvsdBQObxN*B3JAd;M5UN?N z-pPjc&J}uu_7c$5d-v;rG-19hMaPXcHP+N8HN;APeRZ*T9zs+H27Ki9o#VPdhNR0C z>nh{|mL;$LGbCFh6bfC%eWO20UqAp9(yxr1@;B(IyPEtf3_;2yzKMm^v8x&2nKiBI zkTPyd6WT7_?l)umzC5?$sJS#%5#e6&2dYxRh}8gC=pp+mn1#U{0z$yhN!_|GX871I zj#x;)+173^aC@;evAL%y^!oeEhGnj8oh&c=++k z`@43V;4GC+pIdoasa4*Mmf2y}n%NwD`a;Nqk=eMK$0FHMDvWPYVVOEK;1#*mKncV| zBhme40t>(XrfS9?;Lw6Qyv$G`CA>Ef2xFvlk*qI*It^?i1X7z1pqb{ML&^?HqGT-} zEsH{ane}E_E@{)O#(I{p%Mrs(Hw8vsXZ=6C4x1QXi$XmsR^N5PH=ZXpTb(76N=8}5 z!|VK-D{6P`NL~qf&H04ri*x5lwxfAb_4%c+nd@pI$y)5QpKWpri+`cb=bRc!Ice&` zXAFqJ_#(4}#j|5x#OLAm3B`euF*9m4@XmbTlotSvq04IYuXgoKBsjvYNrMxR%25sP z1t<;#gdMN;qllkwx6N0=FR41V8?xHE6$hex`VrVA50O7p9VHRWg#d!UfX5Ip&AfMJUXmWHc3dTitc=;5 zF`uyJIW0EM3XS>#r-FymIn#zNOtWw!&wlY2kI6#x^MBgUM88Ju$gC>!BK15JdU_ma z&A>S6J`vv<^(i7)NcyD+N0#Tlgv)}oO@PX&EBBRu_--!yg#8cCw1@0p*s^i#`EHxQ z_EKnJm$ap&*_RwGkP)zKnFew3t36U(Q&F8l6JSN?=M&bLe~ZOfC;R)l)Zh7BzAefT z$if~CC1MM~f1pAgs>3DQrXVntpO~y^V^$m3+8bRHFJHPgrxVlyyU4--#%$$H3P%aq zZXW#($FFfXn5Y>leMwez6U0}V4p&15TzM$$rJIn}`J+&U%p^_7&DP094?S@O^cb^p zdVJQUc+8fC*$m$w@7*2bXCu%zD-AiB)v1#?ReCz_oxVZ^VdW7A5Qu|KJRbI~S4v8KqL?#BHxG}<7WvamCFG9(A%Js9Z`(W}Vxr;pC@FH&2 zULw!n%6fT*XLg{81$isn%z~S`ScRsz$`y8G7G{lbj$1>6i~a1Bxr4-Ir?dL~S9bR? z)${n=*X-~N@QwG8v&++QzzXNb&=yWFBh}s+9rdJ%i!9C_$zT8}%0OMIz)VQVxN6)= zb;IC?W|L=xJ;Za${Fw7j+9tSZUyR43>RGuHppbQ#Lf^x1@TijDmXZJf2pe@H4zp!! zVq#+Yxf8Mb0Oh^;tG(os7{9riNIw`G+ZO1;^|*`kFP|r0oOMd_a~1!%Nud@`^;RVf zSqpBY1&h$DdF;VI0DIa-pk*+@sa|2OylJL%kJ#?7VL&7Ai04|24pp2&nSj=8)SVN` zi=ApkW~3Mw-bJH0wg~Loey;_-kRFL{MFb8;Ak*74yuujY{)f&6LUJKin^%_n7MVtnM|=ChZW~j4hZN3UmOPq9s>sTi?*|kkIVo+wWN8l!h@alx_0of~sjz=~+{4ErWNW`j%!1At9@%HU9WVq((=o zsWpY`QnP$a&C*J+>8e8sWGmG*@@ z<|xXQ#>{$E^x&UWTLI6JPN?B>vkkl}&dG$hBb?$s_ubY%aV|q;rWu1UOHV>8v2TgC zW2X>*!k{x)OulON6_F1mK$7>i#4f%yJC5X!@uon3f?2qLM8sR=>6VXkcU@wU!5|MfPMhyyJOjEZp^v?eh&!|S>b9y{XlssU=UgW00;;GMY9J@ zTBvJCKR^HgVGsZSSO63N8v|PlQxhj=I!h-zTR;GW|9tcRIeZlRWG@+DIv-FKVj)~K z+&u-ogu<}JY#~%^&uxHZa7d@o0$$yctSe-ox3n%WXI8Vlbsz|Z^ZH78J*(kPJBgGo z2d|b8nR4q^!}lT2<-zY>`^=F{2IX*vnmg%gN<4#fxlB9;uZM(A#0z>Q_%Fx86;Oc^ z!KRIqNe&{jUL||V8o%&Eh~zaFVg`dZw<`&Mu9xGkrf?)jUruf3ERGJ6970o-(1os? zP~$4$USV8xal&4i>D|e|X^%;TDxW2bv%cm&U07~Lotn4=My$VV8|sW%Ip|2wrcA1N z5H(p&31U`)EPxx;n}uy+^^@^8OuHRYQB++Yz+MnMt7+Es54z^X*6OaEX2ORfJ}#R+ zMZ&>zJThmVy}M7Cb!RwDc%`%x3|O>r@vlCQBQ;oSFYRUDTzqt@K_4TzUPXB zI$pm4|C_x^kGo%IrGYk#-|Th$ejtCdXK!ckVozt}}GY4IChQOc6HEd>c3 zcK)!1HEk;Q{R8g9Lx+IfR_%LKdogf%_gcwQWYSVbl3df#@?Pye-iEiTiH3(u@PJLr z)ovzW)SD>9=#988|F^*QwSG{*p4Ef;A?RiM=yNHwJ`9bzm{s{@f=$`40+x}rwLC!u zOzu#7b6y)c*SR^))33>mPX6EPLVddn&A$~X$rzO*g&_{X614@si*`*#xw|W7W4ZB7 zwF2^~yV-kSSl;rlID2%mvr%PAP{~lkIr>R5-;jQ={x%7}E1u#vq)`7GQgde;>;E&RadomFj4;A}q^+jmrxck<$|xu! z;KoJ+SSE=ScgN0te(O5r)aJwKcZsC%dk zr*QEwvCo@p1^>AJJMaJe5on+z_6hO;03Ztk0zmxlyeSjp+j)8NFvgI?;kv}dZhu5v z&Hk8*pMKOvcf=CNISFn_^istDV`Eqisv>^?1MrI40pXOD9?njIZY z$YoPqeNxR!P->`PUpHXCsMdUes9IE`si!6anYfD??Hw70t1G+dJ5MwXDVzdFyY~|+ zCg(3F=a7Wa`vVOG+L1@K8Od9C8y!ym75RpqyaZF2ekskn_M&D@v+)4jSBJp;aIY%3 zr|%IFaWUUOVo6aQoj(AI=NIpN{t1hH@+-zJkUfiJsJ%lVki~qDV2>D z2%H@A`?K{resI*%kOHc$Xi!d*DOjjGL+=W4>X2xBLnrPkmNI_D7qV(zxY_X=uk&J#mfjyToQ`w`uNrr@|9`6CVDFfvK_Q*zw?=oIA4 zb5O3#v-uyHl7HeAXTS6^fI&^7!xhmhJ2EJ|;rkw;_*>XRN{POzf;nPo!lI+4>Ly z4iTfk&(I%c6HmjdJ}QDh?u^;Cgh5=efF35LwRhH*VGh|X4RJGjnjRHiPd}T`46|(! z&N`(o9gE_sVL*V=M;z_22XmXqA zwH`P#;*O{P_!a-Sap%bi%kzHc5eH)E#8jNkP&{uK6OS(}H9^e!;XQTk3F!iE@~N4Z zQiHh>D;xz=1@QrC(WrMhW*ytrKd~E_0N;c;_OcM)(;J@wfgO80*TN5Hr+|ZS9vN@* zMllTO+$yXJ^Rd#fkHKjhd^M;A%m`RpsWXhr9o1@#Mw6WmqUdy%JHAPlv6gp$Anu9) zXs%ovX}1Y66DY;iAf~~nJjK=MjSbu~`pVHqx>K#cyx{yj{lrtz0CVaWWd2Q{3sS+p z;JjUTaxJuyhC%EzdqW+Z$8&eU(r=C^e9g@P$cs{h7ZZsDgtqR(#6dr0T~zWj=#QoQJnf6+`^2yh)f_j&NO_p4Kw^ao3ar{~`}TmD=SLvB zMj8eVg6J1^@&N&-9tEz(Ctr2+zsx21)h=y0#gMFk$)UnXh|24%1);9+rtdWzUv@0d zes@3u{mvW!$T(-Y#lew~y+~Iw$9(MzO`NsfbU%<-wOOBPPOK$&4C!^4)#~)lKt|E2 zVM;A@ZvX}#%zP*VhG&pct;={5jRo3*V^bp6#hxm~XcF0))y7 z?L7gf{77+o(A!|hVVd2plzAm-E;N%ZCVO-_IB0jkG6|pDN^>@V0P#_pjKjQ3nfJ|7 z38UZh^CobFG44&%21?YQo!pB4&l~J$vWZr%fyeDSc5X3(vC;G)Y=JUyArSJuigJ7K7MFg!^T}U9#-@KFV~;Dcs2B)lEjhu@Rf7PnNmn z7S5a#b<`XRIdzne!Drp&X)$WGqpOTssdsRso zNp-|#66=JKAv8W!EtTO>OKP*sC`xicjkiiWlJsL#`vjCweGgnnz*-^&0#oC@Hdj*T zURrC3X3|X}w>+o>enPxd)i^qIv58FRWq7FUVG8-U%Br%9wlSOyUXYG&7@{9|H zl@1X{X6i#x@I(bC*!Ux+Q?9|pkH*XIG$Q&Ke$fir-#pES7%Idy^&@B@?mA{hi*HV) z_`tDTbGt=_DK-9wS5L zKbAU8C5}w6&4a-&%Exb78$<)&h1>BRa@01h6;r0{LOkaSwmuic**pV0)rSsWtjpk| zKP|dipB2C0B3jVRdwwnFWx7-Q{`K9>e9qmaFoP#kcjvE(hL2zlPlWRaAU%@X702({ zc?ZW*?xo`+f@5fLsb0a+w05#xt9Ys2y?@$Tc-q>q3wdVh9uBfVA8(JNIJX)14Ip6$ z8(|tzcnu4T`S9IU*d`QUqVJMk(i~)i)WCR-AXLQBwZO{V4{%ohXR(5sJ*;hEb!i`R~c< z%&JNgi~n8Gtx@<_5~l7!aN04mKf+%3mRHYzE30~K0eiP@UF01YCAld}zP*gy24hT?oF(goyp9i5W* zu{$txWf_S;EG1x$M|rswi!SeW<@VeXW3aHW;xFk(5NAs}@Q##rS&&p)l9fb;Tp zlIRFVI>H07iK_(0T(oaLgAWvU#g}JzF*`S`G;(XYN%=&-T?%wUUxi1oag*R)q^cbKlo{ z<87sAnwibV@OIC)fv?dvyLxHwlXyzJ?2)uq_^@qJMu;Z0o?-Z58ImpEM-kE2HVT`w zTaUq;l+Kg>VK{-OrhM+4!h{b%JEb9dqQjTxHkb?L5bdeEOrQFsv39QrY&$k_fHh?9 z3s3ZcmF!_<#<>KOXCMoXo0zfSI4-YIMz(yuyts~D@l^PGVVYmJ1jL@A%EZy7lXjIb zIe&iCDFP8JJ1I`Y?O#|~VQ^VxjCzq;l_3Ob=n~XsW|&LwbEV0se_bTqCM){&t|1r0 zp!gjZ<7%vVV_a@N3Mv%8(XXZnfMU3^qJef;V}i;-BnI%)tw|Z0_qgNUvHB(|6u6;5EIo@9F7#G9Z=HQFx~mk!UvGo5Ji?@8eynzR zE}GgQ?{I1yn7k)nn*#r_%l(v=YNS;@7QB5y+xTI;BZ zC>&{ZacE)orD>_UB3Gx$5EeyGBu(!@j#UAL%f3Z53k!+yzI9x@ycNoL4hQ5eT^>cU zE%STxWy(yPfdIo}vJ|gAQ8322IEkNKFuKiU+iSD$X>4R2F{|CR`L1oz`9xzUP5A^^ z$2u(ee$-HbA2@zg-3!?GYcKecJ9)%NveWFjsejbR;ExiT@|DTEw;Ar9>}>Z#s2|VS znJKU9ZT@*OnsO1g{gF!U+q_&kd$1(vxXWNiru&$$F^#%(K3`u)>2Y#cT;}FQJ)@fE z21dn{{2J1`{Zp66V4>9O9@=)z?{=#lA06pJ2oveeVz?jHl8@v~gdf1pX1bB>Eq=>H zLTw7J+x}=IPb_3jY9j;+*49Y3(H;?{k%SDjhvT}7+9^~}S7i*-h)uRl>W*o}_Wa=Q zW*ABI9pxTnE})7on7_5AS(@c%gm^!XMuQ}>9Sjms#|49`I%@pdhMFScMsej(6spd$ z8_8AVDpVb3H0F%ZYu_W-iF+n3;HUR3UyHpA#RH>|sppBj1h;X2=~}FoOCQmtZdpm; ztyR95l%DVhw$SEOh;nM=Q~#mu&DoYO;~G3;>U*lB!SCVik#E*J3R`x#bx(SkT{F#P zN;)iX6QRw@K^%3X@Ayau8e{LoDKUACFNgNkh6VF&eR;{uo^9~X1SNpu$@1LQZWjZCW7<{ zw@QhUOv8m_3sO>NZ(3Kr)m|Q0#9X0mu2HmJFlVm(PqkrPnvim7$%J<$N{}b80RXI< z$jvLLW*|z_khVd)g1lmhdL^4QN4>PuuwUxBVMtL`$@6V#pUbqQ9ut} z)4?q}dYg|)^kekWEmCUc=+_)E(bk5%0FVjH$N1T0UQBISEa%Z+`B|ae+a~4R-yC3S z(Ip1fm^5=jXS=~7CT@*2Ztbc7e25M$BdC%Vc&!Ul+$UJNAX3_>kyt$H>&j~Rim-uO zaJZXNhk1RXS!CmeaDk-{lT4>^_G!kB>th=NGl-B0)~RF-Ij##k@RD%gl+ehXIS!kV z)Kxc#YF(nnfxJtR9Fbv#7TWGvrhaZ$Z>?Vle}kM^ICPHmXPit(HgaJBd^l90SGD9v z5MERU{>iIrQ^=#C0gr7me^JN-%?ieC%uZ6;2RF?VK5baG@mHA$D+F&F)Kc&s3x(Uu zn5e*tNd0t+A313Yp*(DoO#WnjvElOJ_pXy%TG30P*)9pgKxpO!jaAu{^T$mm9KMTy*UR(2)FV~@6$?+!Uln2w{tte#`S3*|Gi z4gkTaRF5N9Bx68QmdC&b_LHw634~!u*g_qEEf~Ri;9wGnmKV8t!L01;%xvG{8Rv>2i(lhib8-*x6;1@@hJk3Z)-mdl2A zJ%fv7x3eqkG!JIQ7B3$y>updm&{DEJP={kOErN1L|+$aXury+~U%*Q%8t2ZvQD=7wK6xcH?0mx2?*;bpuC>g_st z0wp64=8y=hFM1mvwoqDin{>%Mod8^VD~N7=r*LM}0EIi>b#b|NC+BJ>cLZz|t<(?P z8k*mAb%eElUX&n1)p_yCwQi|(r2MTTz`Pz>7ofNJj;ooI!9;U+_!?_AC#GHK)lBXE z010skaJPcxJY{=y*&5zCdRBE=xkfN$I}T>Wq|t1uLOpdS>p#PXRPc%_k4CR# z3#CSv5Uvc>WaaSt3rSKErxs&z034PnI=tQ-jd7sY@s)j}fj3VnWgZ4$K}3Gj*9EK$!Sf&`wm?Rg`AOM&1cR(v+78X}v z#!XP+6@Fge@H!qXe&ahzZv6;&WeYIUhQJ#TFe0_6Z2;Kxns$;fdu#-c%UxHBudLi# z*MLy|QUbecuwp4P+-G1+r+b%xU!7Honrp+0DCO~aig8) zAb=yHU;1$`>T=u!ifD_o-pU12ay;TK?D=22(~l(Ap=b(=$r(Yue|oMsporUmnwF&x zp#yJkVhKKmZj%q!YaX&nwT?lQcxcT1Qj4(k@wyS;3@EJBtOHVoee_3A;6>N3Bcl@FJhp~jOx zO!ELtkGic5x805`@?lDE%cK-E#ThEJOeHCm!|tl0u44s zNJRQ;$Wn!|w?)l($AqJ-6Pk)T(Lmy!thBN*u;tz>x1I>ncBq9v`7?W%Tzga^5);r$ zqT(gIo=-uQd7Ow%w#8j9_f>0x>APk`SxbqUT|s%zG*{D?G{z^pExUxs{oo3xf@0+e zYEFvQ@xB!EMeRcTWw!w9u*SkZS^>%q{N3rdw$rS{@q8pezPq>8CDxMzMR#{cQ7ac8 z%~VO;8GCHcaN`8-y_)5H<+vGM76rbinXvkX8gQ;QET`u&Pmt{ZB*Ns$tCnxq)NGwl zn<20k(3jEU!&w=Q^B>AcVlWpaP-=;+3f@ZTf4Ne{krNjtosu24Y+=sB|(`)Dp zt0>$NuVhG#@p)aPLDVv{zP!As zJg#+bH8~c=lH~a%4ci+r&P<~vCf#czwWgt~r~Q@v(I(ZPIn%q}^!n52q;vPKENwtu zQ;q2j%tQnCzG);n%4ENNpUb=frn7m?FY-~_^{$hw(@+IhvMJEg93*gcyC2e_U0<}@ zPWMkI{u##=`X75_AH+gDE8$vzc>}$KO_8~-W-m*g97?=cCZo;}4>W#Ds5TbgdlNRX z^^m%gkGo5GQdI0kfjVS0^!?oCe2{;k%p=!4WSgUbjOCRpYB_44MQA@wN`O9{UueJ# z|3BEV)5n8xe|+zNZc;e|`XCDJ);lDFdnU@EvrLq$VO7f|i1N{6Z2vDiE#7fv@oIb& z@LT6}oX)fxXD;h#KZ@4A(+`B=^xm>dv{=Qjcc(yGac&nk z^g%zb)FNBdB5GKhHYfBOaybcRr=OYX9R`bJda~QxGW&kU48=ZI_kgIKBZQH{7kJ5> zmCchKpo#=XL@LMah)4`#5X#Z0xshHG*Ko5F%7OYwa(m(V(r8)`=u+tkl@^cyoX&n+F+e?TXGTc2fx@jqk-tYgPsSaDkH{`~Mkn9s(soOdmNb$>~t5zh=%`H-5Ty!(X4Gs+*I>9MG36Xf&aR(0#lA(B?5tSppyv zc}~)F>L<7Asn&q%qE0axl~b!bs}C8KKotxV=s4%FP&_cjxJ;l{A;LTn!{7~oCz)oq zAe%zDDoDl_tT27@hZV7=hc{TfKN7AL)2>336SJ+N@^$w(g3+7ycr7>*BMUgFByHXM z>^~mH75VS2l3dU!GkUr=0WkdT>YuL<;OJS{0o#Cuv%%&2Cz}62pH1;t#>0qP{R$J`*j^+%lEN&pf1h|5E|k`C99B zGbs@#^K7uH%Vw1+p={YOTb_SfHgf)fu=Utci#H9iA0Yn)4eOSlTFpGo zY-YT~-tqLFeiVFAd7?@Ok;p4pzty1~jAqp-$d{x>(4e;Y{v)G`sQY^r96I&;c38QQ zRMb3?fWjJOo-w!qQB>SCQzw-w!t(R4V~^Lc{8%y@lpRlZL-puvY>EMjwmv!cS!C+e z+k&q9r?%swS^8Y4QTJtdppAG|&@~aR&K7eUL+kpg{m{5Uz6>|z8rDC*Q zAS;-kgFbr@COJKg7+Iz4@J{43boupIR}uOkE6HT;GT6ST1pAbHe%2!BYQTU?iJh%RQ0Z4q!dWMd5VbG0?NsaTxR9?=+sy*7Q>&8CNzud%^>b2kPr^j z?)EdwA0D;qzL4dfT`lI(#fop=Ld?joo81M=1i@M1)t8;s`32#9V0WQyj3PloHEojY?_!xzZ`{;D8Xx{#)L2$nK|&NQ-sK>a|-{8+*^@%s44x zC_MFHz}1ZZ`YKy_YxrUuNVaoFj{QYz{fKl}&!W!C(XA!qi~IRqwJU{ex)kKLxti{| z%E^nnVSxf3e+(YCF$b->irFwPjX;FD%X-)uT8XdgiopGSthcW%^hZ|VlEx^m$fcU3^svcjbpXEgwyoFcn* z<=lQ1x5WpwBK#N7ao!&x&myt@m0exBOk&~IAtVAzCgHWCtn8NH{OOuodPiabKh>S@ zc_>v`I{iC-Cl+ZMLl;vJIyKELrM@RrUOXbPz?L_W?506=fzyks&ZiqqZOhjc9P!js zSQuM+5?Cj^K3rM;WL0VEcLw@rK2nA_%LQ%;S|qDa+-y_aY+roE|L7||KUJ`Beo2ROX^A-oc<_m-}T!z)zD&PHbH|h-xOzTZ4Y4HgI?x8+i&=rp$Uf zmdiW_KJtPHx5v*n)$iu$9j}niK1Zk&b5%-ur4WzpP?^mEhpi4ZIHK(Qs9AJQ+$%}Z zR_JtMS63mh&*fE9kZXP^qpWU+6iy*z6+&Z%f2*oj>u-N^F5y^QYNPX2_MqgANqyyV zVlv`Dzew#EaMRW_c(5G7X9wTm1?a}l_^j~cB1u$|V{AvAP3VriN8;6V2tyj+n!syr zA4>4x+DXC_{h~j`<1OLa8zW*Hn94Yzk7F=H)aN#NQml}wB?X$i)zo>1dN9x~S;=uQ zZSG!WnhF-FNKDOItuj6Bkeo;UKLCS3e7}S)0^$Yt>%3o)ckze8S55`nWN>3n0~@Sd@$lSI#Oe5|yti5BpK z(}dyWRptRA3zsJyVs|LR)QfTJx>)#)FloMP0865QDcqip7VtxOytW}^RNNzPJP4S$ z@xaVx{=h6OjEFZUk|N%aNItBz0StGbm&rDx+8lFzBs^X4pufX(`eZg|TPC!D$k{ft zF0~cOiM_nktTYMGa;goBE$~h=bdGMe0ux~Tlmc?WrxN$(#2?QDQ!LQD+4gM=;kN~2p_y#kl zC;y5%yx2g42=kVvj!NEWA!R_GI#9k1&pUtkw^4}^_R&J?qartIiGJhI^2H_KGPMdx ztT~V^I7d(tpkr)B_JR@-{9oP3Z)(YfxW)>p$Uxp)ki6zrxPhKH1mtIdgvnlxHQ`2O0g}^Kbzb?vh~UkS%oZC4Ege@bmKvS>B3y-{dUX%Tq zoq`1};hmmSDGihRaO%{v%|4C&jB0z-BZ2&@1iw|M4UVe7(a zn=|vAIENegxpdIyooCasG}{BwMP%ae|FbgB-OT?QvcEhoLdIja09n@oSpyJWfTam_ zI;H@6;|a=>ElA=uCu*K0wr2QEgpTD@>ot{hS0G+4G)|DrWPwdw3yE(*ZDmEvNbA;6 z%bPc=?MJ@2Nf%uSC(4uai%(au$3u!|Duibxc;@wzDx3&9tqPV4LjsiW;rxvbPV^9- zx!{1%gYy0R92oowwnAiGSgr?_xDx2Qrr2(oVmFEB(!*&t!p;xt?nh4B#cSxLx9e_0 z-K)R-!<|rf@s7qV$lJ9gbiKO{(^Rh9pnKFTV2zN`tJ!73z6xP_WMjE@bw@SO8N4|v zKUu-OmcwK6`{TzKfB>B7G#2FjPHxS2%ieAlrYuv)1D{LQ2mYkc7BzU077Fr~)48xfVog$#Rh6t$Ju5RstxPh#zx??h|ATDc|N1Zg z@c&2kumApk|KI=hPp$1H5y80Dn5ma|xnK^G4fdFRx+fbjQShMz`~f={hv0=BIeWJ{ znHfK4?aehZy)RSA`h{^0JO<4i24yu)YN@MQ;JTYFaAoqB9|9Y#YLYekKmVvQx! z>bpt%Ds$NQoRbEtNySNXa;B(K?+qz%)woh{Pgm3vPj#vVhN7O>YFH^~eZ;roz^yta)F_5B9NO5nk9WpR_4(2UvH1uz-Kt3S?KcMp(xiRvC z6_YY;3YNGNrGDZr zaVPMf(Y77Sah|$yf_)sdeMKc8YAZ*08C+nl{`IwblKXR46DwZ(Ht8aUWjjcs^%X;> zwX)o#JdPOqPS$xla}zy%arpSnqr+FP-@JVF;_>&7ULV71`JHTTdwWSc$8Y@peE}Zt z2I7y0N3WkA9gARa0VZf;5zMu1CHA82D`ZN6hdYEnwJBFZS+FcwOXOIIHEyZCay@f> z%k$QN5JS1n*Ta3-L=3wtm*Ccel5-R`75KR)P@A6Oe2{VOmZF#5@9P&BOG@+of4E#W}wLR3PCIL zApRc_G9@PmT46N9iM^me2<^B&_}vH>XNpJJW%S8~{Kn$n5qohQ~*9sRyj}W!rn$;>DcSxYbg&X{~i}4Bo@mD?E#E zyZ~=?r_&mzzFp?T`AT@N*! z?J)kXG?)P#r8nkmGLJ+9#&+aG*0*FQo<_Th1$+A|Y&mOCio-Or7gmg`qe(Ci_z){C-Bk= z+y3OM<{tF=z!yQt4bresH~S?95id(ec2CL`jEeSYYzaQSZIDErC$xD4t}&p7Q)&Dy z=c<>BCZOKP185_A(jw+;0{%gKG5_*%=^ae17!P{t%kQ3>Kd!&-T7P_{TaR`3`Qy2J z^zFj4{^$e_`}?~e!yo_TJeqdrqobb==g%G;>MzK@NAn+-UOauQyVK<;{qgu{j=weH zssC(rv|Q-UcZY+g>rvO~+NtyISvu|ht^f4h(dyab!wb9nqkr^M@Aogi`&;ja?jPok z>76^@LjQm09l2izKmO74t?&N8{$5&tyo_HSAN};|r{~{3fAWKQf2T+Dh7yR=Xf9P5KA;; zCl_HeVLOY~A##1l@SXOfBaF-ax`Vl&Ys4atP*3xA9gMLn6SbNL7s z>ZQEDRGrBSF4RX=K&j^`>dCSCvaaY*J-Sgqp89HXMdL84H(s)=&Ty!-OEL43OE1P3 zzM3cG?DW;z*b!X^rdtiR2Senw`iu)_b7yU( zfxOKAOYnEirS~}e6zB9Q&goN}(?=KQWb$!Na2@(r6zue2+?zMO7`w?0-1vUSU;g}$ z|L*poN=*zTPiZ{xcCSIaEX$}u&}$Z;bQs5OoLGL+FkWTnRlRYHlPo>PFB-wdUm%$g zX`^LDt_9~4_FAPNvb%Eh-39tS8mwJPuy%|SaJivTM5~kd`uUhK;*8N*ZXXXZBP%yL3lkQ!aSzktY3G4of+Croe zbvp+{3t?_u66VIQtxLR5kh@kXJWzt+f;_!5#<^*r#cTzPnp&A*3(mdBwfrO=zf$FS z0KqKP-{hsb;SmN~vFxVmZ*o&{Cl77MryOfY_&M7tN3q^T4!Yj(#_p?McmBEF@D};! zYKf$I^0^O?ajsXBac(PnV$8VC0I-vvOvvwq_?I$oAAWP^>2~U(5$dfA^ zw)mUJPhKA$Jw0xzY2=OlP8xYCK~aIK;xhTe_B|T+O59Pe15n=|9#!)PkVG9QOMn5J zy5zvRSM{2VW!?PiKmAX1$QrU33#6eH_{b^_GSNMj=TXXmxmm7_N01-jWpOJ$GxICb zG2q-oQMe!g7LY6h$N^K>K~2i`@;lswer zx|(s}XosBN*VhW5Dc2!ZorM)=eM=P5ySVSRK|{L3YjB&iqV0xH32)*s!-re_)cGc| z=8$K;#+>;~WifT^=Toco9LLNwz}x;yrI~&)(Yu z9>WCty}f(WyH{~;6Zr!^Dzwj@PRoaxyhYy=U+30f~H~hPx0w?~EGqi;j*PQ%$985q)^`8ykh0 zm0S{^SrBq<@6@tLM~9+Y*|c)9)XfE0!mPgd83-#V5>=#7xK>5kfs9?ZZlMH0pVPrvMKN1XRb~JQ*N;5 z2#f(sIm8E{Vb6x^Q9v&D&|m)iU;k6R1^%WkwvSqL6!+;B-KYui#uU8Co%`rTniMZF zkWjm0dH7e43;)^>`n4%;MwU-i>y<*s@^~@x`ubXZDH}|YbX_ta#!H$E%G70p%DNwJ z8rR{ZT?8BYDwYTCC8|}80dyS?LmXhBy7E@B>d9mJ+t*6-{r~n#H3Uylw#3d9-?aY!#9UV zPoF$)K7|=kY+GdD`R^`?D&)HU`tZ^3zkT)M`{$3}96o;h!$e#v*G)k z9r=+M#fS+_SoyXfG;%G3_{K$uZ%**iNj?qcbC^|-CZHU`dA>aZ;kPfof8DxPiLrQZ zk4taZmJUtzvarcbqX^PO*bKm2g=;mkn92=eMM)4_v5?E{v6qHr^ms2d!N3FSV{Qp6-H>jcmyBv0;ww;S+;nXu4_<-D&}wUY*@N zGM6(Jbw4EYx?ObcKmV6zW+D>6)F=z>-1X5b{CBAv;U)${8EuMgc9w_MBV8v!kwY** zcHk$jpJJ58K(5IGGqV(CTuI1(TW_j>c!_R3YWYRa#JwUcjb6Gb2|^7$bWdM=d-VLx z>%*^!Q-%*t%~A~BJSdIfm%HIc54szBTKG`bTITVzv`!@=kYjIyGL}SZIV&RAE;x~! z+1a+C{n2+%9{v6eC_WOD3vqzdY_bDJxtG&#hC4D_MA&buxYySrq_2fhund#dW}p2s z(T0R27Q#U#N#e~{W5dC4H>;65?u1iaW>LD-`nNMHF}@~-$TA+cyKN~SI!^@~!!sK_ zUnd~qVSY5zoSNjXl6ua)cc30koWM@O)7P2fBzqG3>-CY-Zbddi z4%I6d9B97@yaql?eVeG!pc0ce)vZZ#;-A6LsQL5WWMV0qmTYzKWf(*WeXTnnH78fD zGxpW2V0=}W1n`M})(+HwHBuv`_~Sb2EGJm?CnslW)Oj&!V>MANHOQ_|-b?6c+==l( zKbQqk+n(qL_V4`6X?b9O`K59N-!H7_gtR=H_$T(68c*)&syEROyx%3PviIeeV7b~0 z-oJOhngq(;-U|};1tH*ZJL?c$4Q1Sp zC-)3B_?^4A*LEj?Le?-=u6$O{CiMt@oQc&|4st9yps-II<@%c8=Q@}K@88quK?8eI zOb^0N{S#X=&Q8p;uYvlFh)5hwRHHLs43>`U>EKZSO7ZD>6R-#S-i=^!B-Gg6!@@s}i2hUs| zgR25Z$r{SkE9|F`APtP4_jGlRlQBL?2uqDR0Rxh?52GLnfG2^c|HaB@J#`@Tgj7|j zDG|owPp*c;{jq+15OrR3ewyIPSK!a~Pw?3RMF1IRR@+hoa;F+hmWk?2bXYOB1G&i{ z-UC(!S}K&9EOOtQ%r#am@P0&{<%xARiBGIEve=$Nm&$8L$~82>dwaN@CEmA3j{%27Zw)Q z_4u%J@Vrn5c{UZY6bG4{7iyX6tdIw*T%@HqD1|t<5^`3kGXA5CU%q(q?Dg5RSl{S_ z!{h%iT0;@7vZ;=Sq!jr)z82@Jbb9$@v6h#4dcHnie-<}d$TBM=|Cc4U+wp|Pt97{` zI@Azj^=pm$PS|-@N<$@y#!ve|z!r<>$xGK0kl)?%C7$9kldht(1`Z&9xMY z<$QA~Zj(-*DKUqi&!1r)Y^qqRsYp8gYB*oZDNg;`4%iHr6?{{%HJ9r=XH)zc!kE-S zCJ(NPYwlxsGSW^3mHDL_6R-khW_?Q075L(+w=C`5RBm5|$HwyImdQ{9p#AAj{7aX8R|6 zW#`Piu@CS9rw?;6MNNN(b$_^~70lIvjFngxSAx*0+6U(>HRCI|B7zG*wk+l8cDt$k zFvDG8%M2apWxPMk9u^MZG6!%am!ueH6FSu6GF;SNuX5k!&?ZYMTl4;KU01Spl}xdc z^@I)qN9gf1tf<>1nB$;>*2_O-14^rc=T%j)!QcUI&%L8}%T(&yT%0Y0&@_C2WqU7f zG#3W)pyxv!&ofo(CyOkf4XL&hjE^LIM~6C2S1TcB=H0BAt^py%QzcR@px)QT41kAX zKTrN~XFnY_YE|*f9Bm}R9!Gw`n#igonu$2|kCcfxlci7^Ulc27qohnjC;tAA05QsV zMl{>JO$gJTmbK}5G z8OwP&Qt`SJFVov%t)I>3VyY9&F=@8m->e~KlFp!_HEN&2qL}H93M3mM?wS`6_>?Q5Y10#M2z)>2BW+PzIt2~xkx2}nzmaJU!^Kbr7nZw zS3&Xi)Qv>^N0CVaXIvueEZp*q=?H*iI3cd`Z%hCV`d?2SPSJ!x>16C?YNpbQWE{=R z^uZ56peph*ny@*1o{Yn~CTsy6aG9<*g~ZeutZV)FOwOVS)9K0;H~lSS@LPZKK3zRY zXDF-@Q#`T@W5b2}F7$&$O1|1h@wMbQG8X1oup8+hv#YQlwWRLh7Jc z!`zre#BAclESgm8oNp>Tf6Rix9p&Jbo{zd9gB&9B*9NR9X%Ek zT3M`heJ6^!x%16sJjCqS?9>?}VHQl}JdN*MKQSGH1S#WKq$L=yt=Cp`Hm1Ga=~tSWoySj$=r`rh_e1 zRYW+9y)q-57wS4yvv*=niLY?QF6br~`ry_UKF6x?gLPTYM@pgQ6>|%dyd^7Iv5iOX z*A+i!myI(FE8JLgkZ5N2RwAq2BN?{zH@^_>hTz_I20$Zhw=<&YNGIlM;lG#>Nk`J= zR+iT50NDwL;XY;%?7Ymr=5 z?6%u&)jDc_cgtFvuk`^S!SjkH$cd3;!B(ufi5>CbN1NvPc{;tMMDf#&0>;9!SWE2_ zL{SDKRwL~*5*@Fld7zX5UuO?7Cr1*BPKgAbjP&cGD6JR}Q5893?e1StcE+yT*#K(} zlvm@+316^PO;Wuj8;|uxWpUJj-d)gZ8fPh0oZA!w$=0fNMIVt>q+b3n)q1Q@*)L8k2RKG^Xoo(wMM)GoM7OU>Pd*D}QBq zFzhw7uKDQ>C}?C%)dLiiedVu7)ayl*J%`j)st7*4;YiN$Q{C-Ga=knkDgddGj(wkq zpow5FxMw}QO7$XMW|EjhdP5`=z>j8+`38Usm9YY7v|_*5*Op723@UaHW&*pRinW}PfjBu7^mrgn*pK{}^yr9;Kg}kGpW+ex z(xc-G_8UJY|7YCq{UhzoCz}WCKdUWK7w6kWnbUOiiI5(Y{S;4*{x%x3Pvzu@ZthoM zF8x#fT0FUnKST0w5oJF> zVs#Ty_B*7m77=AXVd^@fObA@gpKU9GpZ*+UlE4D?`%NhLIe^DOzkdkupv4Zn)Syr? zDfs5RP&1)^%Vv6!{J_l9`(oA1c$Zx)bTjL5p>?rr=Dig2R;hRCEL)e!4@|j)ZvhIw z+sVb2TG^(lyWccwy0+~v(;L^7g@8{@-j6O_W?x0}1JlI{dS^4wvA*O7mWw$&uhQ8p zlNWXBJr=hQ@9bCh@v-~ZKEE_|EK_xnNuMw^nDjf}FL?6bn@9V(!T8AsoA}^UAARcg z@elj4^bgFQ56K_Q948+VA#CzvorJ2tqAVoQg3Yr$f8)O^wJI(}{VdnZH&dNn zi89e55Hu=bFQ3X?K9RSar0gnHAZn{OLRP2WVEai4*K%MU@8lWT`w6qjNwCTzyv5a<__cc(4#3Uc1*vkbnSvCfpb&xf+Z zIZ;mHxZU+}@eIt+w^<%1L z*QpYZrc;p%W$v>YDo^vgxPI?GeO*YANZ#pJOo2QGX0YHZtV!yzL;>m%|8j5hbSx*^t*pqs4dhq!;ETT*X(Z*onz8|fK>8F#8=>5ASn|@iUe{rAY80GAT7)6LXxz;B-V10_hPw%l}JRj z@8Vc4)%--EpzKcr0{pOo++L3!YzNwf3E_=z88K1ven%Mx+ zl5hT3xM!E6og9+VBz0fZA}e5d1E&XBa`5mnE47e9As9i%1#}jWN&yq1&O|PzniuhJ z;`}nxzwBncFV@oq+_;Oiw&2H#SVQh3oPOTvbJyI+6iA{~DtplpiEg6c-EEXaHvqg| zWkJL`Jx6TY?Gh0q+Z>4hnwbtyj@wSnX0Tsy&{Z)r$P1QQM3)JF_Xuy8R;m!lAG}1x z3jW|F%xtq1PJ4z-0v7FnS(x{$`+B-Ab+N=2kR^)Tc_S}-6tIib-WR~7&IQ)&-n|lO zxmG6Uv6vT1?B?&Ocz>0@AcqT+AVH~%TalAVfbap*wuz@kkWy-uW@cIn`80!Tb5_Wg z#q`pD_})*Ksp2y%{0Eo#_)Xc$UlD7tD7%n_5@$v?%3Q$Vbu?W=Ez~Y%MJc=YQUKlcf-CXo zI#Yr~|5q5H$Z=NofX~~zO7m0RGF ztv{=~y?}0SKnni>Bn4WlkBP+JGo(C~C+$*y4i*f!Kriv8lw|mD1{9pUNJ>7y=QpNH zIqw52a$T`0o3S~PMM%o6*_6#Gn>of9pf6$%rx+mcabfTm^rUn-yj6nIp)KLwxC0K( zJ#(1j>tw;qp|oPNY-tqu%47+2;i5qpEKy)k69>Ut%4PyK{XruSKJe5|8gNnykQdhl zoAp{cVLwmy%e~E1pbo?h6EWUUawC@P@%vke`JzKIk(?-7%K(PM>Z>T*Cz)SXO7j)6q;M zb1@X-A~t|I;o(N;DaVt~8u=R7@nMFfSO>!J1cPI^cF`}7VoFc}a&3s~BJLHGVdI15pqb0D5J< z-dRN}y8*83iKfIVPp5($lX2SnI-vx4;q>@|MfV21d-o%H*FLz#v%x@phx?MA!g3t4M;HPu%!|psYB-_eqdC0HIqoXTQPq~dxBc%b2!z7oB~^Z zmd)ozumhY9pj|G7k|KYVYL(si$6sWo4N}6a+p`r&DN6J3K3ifk&z70aBoJldk-R|a z)rdh1XURVz^C@Cc&8YyAHB}cvfAA?F%gVKyr&Dp}1Oh8DUFWF^dh4>D-550rB%EhY z#Z{I%@)$tUlfm}X1K|y@-GtQsu5KkWewYZtZ!8snf)@YEa5x{${#chy8t*#bvD})p zm8Pn2?Ihk-4XU9n{o`{(l^LA|K_n$Y2~ z1ljFAa>|h={~cUy>pd!)d(^jk8Mb>Mx$VcWbrl!TqA+)HdnrfRc$_FI9fZDXed-Wz~g zcM?$0PXq~$rAI~+&LBeJ=ZkCRgimr0+Lzs~jF;IB{OAIA4h4yhNfMf9)D@Ms$M3Og z#Ojqc6h~WXEPE6KGB~mTXV+Yla;nmmFbW`M+dfyt5{(MHij~o)atbJgd<6n@i&$CV zCLrU@BlIP(Mp9P5(W1f{2=!D1P;!}(&cm=IQB1ImQkEIEM#{<>@J2bI$&MOSATLJ^ z6I5aK->mZ-)4uK;0>_bU4vPO=i6Amfv43ulCmV@+9~e@928I*D!KNGpV<7t zly^GPs{Baz)o{wE+b!m0wkI<_9hFJu=4{sOM&|}#1Lfatw=*X*Kq}4MGNYqeGM-H+ zXu&;8rwdRv_2}x%qASqUl1{na;7}cM2@=KX=cE7jiD)rBH-qZe5j zqwELlMewPdF2rn|ig17NQ&gT!o(fhX>i88BVpS%uMb%J`bX-n6 ze2mKpCuswqKrM!#R19`OtLg0)+hch>{ctvy6vR(Bmo)$dL(nk2dJ>zLfE?^rRCXt( zRYmq$i{PcFta;kcRk{?Ty}8LNP<;`6(^A)dFTPElT<)V!j3)7apT9vpeS_!!CZt>> zYY;f9g4KBh>y^$7g9RA5GOihRd>?%Z6yoE@#m&g4fXc%(C_})NE{ChqJ23@X$un>p z6>n~mKD$l&R?DF8R15kQi~&1^%CgukWY(y^!mQD;PA^`kOK}I&=Gy2E!kwK~?D@aH zXgB|Ri&jB5YKrYma2r{{HUA1te*+mnI-5Pa5>h*P7%}u6gXV?BnL7pCz5a#a&Mga2 z`a@pa3T&~2dVjkTBd0;tsku4lYpucP+NB=ye&UF`@~z62sk*Iu{}_AEqZQ~kx;}5P ziDYw=h_OD3K136CYmy(MNfpRw{|Km6J6t;*#Au(r5J(`w>OF=erEt|%Zg9T{r(q`f zsU~m_rtF^J1dJZ+>>y71MFiLHA4PC9g6Xtn`#?38@HY21W;O>F^4g!j3I3xnQkNeK zm3=LwPV`E2LVbN71?lwNt)nAA5Dtptz}iLP@k5h%6qdBg zN<=kch6e-W$YLhAsH`SE-2`j=bBh%aS@?^Nh#o}(lS!1Lhzw3_Css4>jjSz+K*;8= zM*ueN{=+0Az&|#mL4>m12yYGm(c3MIw?V-l6kJ%w*{UQc*J!E67jbP-1vmGWqCD_n zP%noxEUz?W#)$oqa25ryHjsxM1mhULzr!Ak)x-nW4<4X9z&0hqn6&(Wa~K;N3a_JG z1K01u+s$-zbF_x&du!$#u>`4C0B&$Z!q$>rRre?1DZy9iiV59#)Og|b6#P$yZvdij z;Kt#FP$SJ|ZpNG7NY>u=N@>0Uv#bOaVL-<+)qG>^#Wq%{KQSPPZXjkmph!36dL+E8OLR(hib}KZhzDwj3xVi+M@ql+z{?pl; z*RkPtW%Jv>5+1mL+pT2^itB?HumYuFO#6wJnl<}F8GKL$_56hU3-2>b#fAA2E(D0@ zeiHSy0C*>|E>KmZULl7Y3g&@z1MBblBrg&TEDccVYQP5Pe*5gaL!LYA$~{o#KJwSr zHW2n{jVN~z&RuVIP>nO9bhb5{mexTcSxf66QFlOY!SzTcYFKo;1xz2UEcBbr(Apt2 zX1~MuV&8f<87C{tn_DSyWoRlLbZt0}%+@jNe^A5&UHw8w)`GK!=;pp;^|Qu(8kmeo zehN2YU?+eU9O6i7r+a6BZuf6Mh6k3i|6@dCC^J049A#GWS0a4*OwR6l1!QhnX6L!s zErFf4IQ^{>W$8|hjf2|V>Irpt5WmReMf;%G3nz;IA*|UOa|g$I6|tZ}!y=k4#PkxY zekNzFGk1eZCJ3G0w)if{95&C-%@1PF#`Xu!2q_)tOQO16g{i7>)Dr1bvmjw7?UxnU zs-=6zW^Rmrd}e5vhhxL+J++%LHQF#)U`ch?g5N_{GY!|&w^0STH7MA{uCLdEzu7lG zAaI)%*D^u`7#Wo$q~R~c?RMJ&1h{{H8))`){?2v*I)YZYZPo6(7MOIqzY7wD0M!7P zJ3vIXsVoBmu=12ag=Xxo%DwZ8_LTaLVVvh{6yr0 ztGE*ZHQ>5+zTLB&mij!sv+Ui-rTJ#h&LQYA$9To~AD`1%X}|<-28BfL8pK@HAq%w} z!-|VIL#M`qJPmsnf5%0iupt{43CFJ&1TpvhH=CR)u_=ul-HN zz53s6c(6NNEuzt`Il#a-0gE`4>1Ug=e}#u_c{5Dfrq_%sl)E9}u5SJuw2D*P%owyA z3ix(~uCYd2q(_~5iJG?Z4zlJ%;z4X>Aiks%Oc)PwGIR}x<{fHMm$iw0&1K1S`wG}R z2&@gYQTuPG7$~P=uunu?8#OpJFMpr6GAE#{xz!#31%-wywEt#J&dAl*=y(&Q<`I}j z_o5>J&pEK+mGMmQ0{BCyp{#*SUc+BI`%`2^48(&&!Dg5i#{=Sqh;`JTOtOZSGQ!L{UBGGld)xsPAEV9GF_i%)84uGnh6CK zJrzTX7ltM;@K;sz3tMWw0d=cXC6W1!7`W?9BKT|4FQj?u!SxCfZ`Ru8pqm|2rq0Zy z$p;(v7cyCCGVZhZ`x6$QoUp-!;tMDaZy*oMXyflrCX|7X1N%w*V8G)3fW_Z`&wBC6 zKkQro-Gc{g5T86?@%R5=@jw1C3Ay7J+RCAY6FK8lj#ltD+2hb@nXbr%rU_2GQ_$13 zVKE_O(0gzwj~*OqdMJ*_gG1T-{!mkRFnNJqp04@R& zb_-expdx&wNs~bnn0J91E$?t4NBgfE*NEv&zpkzttrE?moU9PTspVf!J!Pah6O@yX#!gvR*fklZ%| zUKQ8mKI;woheY%Sa9*)@h9R2GNgHbEX06G0ygn3I^aQs2f!Xp0sD@o0EZ2a`K-`eY zgL$!52Xeg>3Iq)Y7NbU%FEqBWHt}AP0F)g7R(IM>kaeJc_8E2%`|?7f5yyc@fl@z! zvIqYGSm-~#z%qc=5Lm1|(t#+(Va1Q=i{zii8w4a}({sRftN)^_JPG78dm3zHWtk5j zLF3hNA?@%})O0QROfHU};5v2NrPl#OL0C!;LQSBo_9Q&WzD*CkB` zRmFbQ`#cK-eglYgG;sgq1XL*TSYxlXb!YHMlSo~hqk_pSqSj*lDddV7DxwMjJhAh9 z4RVsY5wcNYmI#Ig63w6hFru-?iVr~A3pJ-CI{LNga^Waq2dzxKFH_pgd*qKGS5bNt z(Wqiy!!i6H-}hZTlqg~n{wVm9f`O|i2@K$$o{Ug$GSK8?58$2>W<6jhz?KTLPT1dp zn-gaJo&AH-WT&?K?b_}`1FF@)ckSA~gEsXM*GwL9$ zwM*eMC1&Ef_&kMqW|7j7&rTux`2NWWf>gc8uY={N*z<707bVyME)Xhepn+!=l|T+V z73UlT?NXFw3w#!9@Ty!F1^*_l=nfz)${YYG0BZ+Eq4$J)Km+f~mh{`8^hVd-Jz&hn zi_CWWHAp}A>DsMBU3T_vc| zdh$>l$wPe<&=Ze6mF_sy5Bs23bHoRf$DsYMpUFd_4|Pw`BlH#Zi{|66 zn!VQSxen;wd%B^#D!E|4fV*3O0T8uYBu|Z#SUFs4?>0?S_QjkT2U&R_3w@Bv19R;J z&5naQ=IeX=sYWs zfc-W22EU5O{K5BqCXe}`-^Vsm-e(2xGjwu1CmP?>S1eo;c}NCFnkMo{_v9g{&fPzh zJvB`EV@*n?m^d07KLCM?dj?f6m+rwkp(`t8f#gSjR(pXUE-q8>s{#3;O;dekj43C6nzZ;*v+(PXrT(pD4xu^oWArn@?b#GldKO&*C&s){U*c_k|LPv3#xf=`|RgoYnY{YP&sgjVdM|MbV;)7N;<48N8B+sF3P zdjI_i$ivp6>sqA!TGICB{w>f6Yjijv!HO}Lub|m zmkH)C@2J>|25WHRN@?h#_d^3yKwW3%7=^>vy5G~xw}2*3sG2sOfL{_=grpBCGq)yf zCoAdKTKJ|ffm<@?d8*s}6OP^AG-a6hr%Qa)lm(U`KZjR&?6nBC}}9vxB5(}&>t&&~R8+AIY_1Dqs%sE%at z`k(Igo5ooLWkEU575nIl-LvmJ#&jCczvJ~}kC(1~BG^yvSl;nS&b;bxR=!SOBTwTa z{w2gJQy~rJ$Z+Zmci}2MGRefv5d{}5NA-u&fB0MDL+L)0;fJUF%5H(5wN=*hR$D?P zKWKI#tO_R_I_Pv|AEyd|!i@@-pJ)W~-+@O{F(HGS&X;=|dDel$$Qq-h=xU>(tsu!7Fi{Mv<+atE1@LH%vQ6nFE3)GQ3avD&Z( zFcqUATsGa!D0DXiHi8^4fP9 zoVxA>R*lN^P3`tA-R;{?-s^r15^&NfyHQj44b)j;yRCtf$OW}BVwUYIBQ%HpU~ z^U6Mr?f_>%n7;`kB~cc&u+%0ftUbv!>GatbaZsj9f%kQW73oE)4@5d$I3_|_m-=%J z%nf}DpBiYzPYm^CG5*2xG|zzr04x#cL1yeL4{8&b_zPvi$+}n}_t2uc=V?*c%4#%7 zi0lb^tSVN9JIn8ndRyg&jkcNQU=xAb;>h7tY?<8%1!#BEIQ?p#`&yF%Evg)c<#C}G z2bo;0HIB4cYe*_|ers4Q=c1k;^HoF{u=WaCD~xJj4FiApRE&$>V1hb(X8*+sSi4}G z$TVi@AgeaSze|M+<8a9BmbB3aDL6DpN2N@5csRw#VUq%|Ns`JIleC~CDU%&@zG9?g zQc6R+7rt|~4dJk9IFT8{3FE0MMZ*&&#`0)jY~OV);%v)CMjD+{y%LEY7DfVI(8^j0 z6}1E33J4C+jwpHNRxRh+9-q=s5XXG70XJlCfj0k{T>X>-o?NE{Nd)zLHw1a`BX z4eu}Hx_837RyI^8duVh7H*|aG&m|w+4@6R}Wj?I0`GcN5^t8fC@^Lh)SwiQ<8lqTD z*b-ipI-AdtLByh2x?BNbLC?fx=qC80H9Q}xBRJf3XoG$w$)?^Hf+QqlV}rhFZE#n;odJenz))8moWLb;!!fmzwBAEC*CIeH|Jm;| zvr>uX@%@u}Op@D{kv)g~O<6I_H4zW_RFgrUvgm9DN5p}v&>wDt{y{0G1xUyt-XAgs zk?WE1K~E1e{({8)6E=R>b7Wu+01O zz>cIu)6@Q_H%JEbkdUHR(!-n{uPd6Ean$wcL*T6u4XibBG@w1G!1T6VNF0ho6yEt0 zz1%s`4H}fe2|5_chjWQXlj?EU+{b{;17{~7!8kb<#*qvxC2)=KhE+Og$L3C8tYN1b zdi?Dtr-TVq!<|aBuj2k;7GMx{sA*WGi6o+HpEZ&NJH%{+is^X&Uf^g6Z10|c)fRj@ z>dhdyT+(MNo*$F@LF47&no_ppMK5I+d}i5}=G8I0y5e3Yx}*_NYON9TRl7evt`aai{qGU&1QM6~Z{oOipk?bd`ofHP7AyBP=>ScW;x%t0wm z`OFNEVhaGC+JnLbWw$F%uSYjAR7FJZnkEE{Q?TqD z)FZ9lhiohe+0;%2G)VMB&GpzI&&kC4^V+K#)#4z&1ip9*<(Vw5@#$C5FxDRZDrzh9 zWXFI#)SkNz2&_JeWN{qUMbNM#5gcG;?~Ct-R3Gt^W-)h$obvnPyV2mdpE&0@HxfK3 zOw-%sRiYO!6t#lKE#a!A(jYy)&5VD zDRcf$lNp@3b4%_)z?mfp%rxHw@Y5~_eU9f#a|wh0w~JN zboDcLZa>~R?I7E~XHM&Uc?u%pXZ3;p475ks@?k4m^j;k=*)vKZf{AJP?dWYN6BNB? z^l<4_Qa|_fAz7aC{%DZEJv-(2ARqP8Z0ElXhT!W*oN|&7;R7LQ1U2;}%ZxldJAO%N(gL+LzqH_zaufbT(&6XRS4fXE zYU_4^N!bS`DwA-B$>OQF0Yf~nh6K`sE zyWNsoF3CH8T@w7(x;M$Y-JE#0M{h^Zxahr2o{p z3%fPa6mZ}ry4}|v^L^zTy$~|7Oy^Y$PsYOQ0^l`UirScErpaeovC_T3SjgsL_L&P- zug`6_3kURa^vn&dCytlNTP`ZB)?K9nGmvlKq!D7CWZ$b{-7`==fx1f|MCv{-O@B=; zbl4De5dVG21^bGpHOG;;3bZlvbPD4Y!$a^jTczvLc)Wl`$EO)!*w0l>9Bj~&jDedD zE(-BrwC;A-gtDjLmB9II!Efw(Kk0VgktbN7VpDhQ?EqQD$`szA2Ie!~XYWvt&P~Nv zyFJeWR*E&{2)sPhzR3jg>#YXjKD|R1ZO&^aGVhojoZZukQ1(^^t}|UECl*cfZ1vUz z@$&J$bl^r3#3&btnNfxm`6Kh0B14=+0quDb-1P5WVo&^s0TtqJ?(u(C z?EStH$W0vsV<{f6_yK5k2VXs?*h`el1T-{Kj*ee^dVlmpCN3bys42QMQM%~p?g5?D z12RFr2a{3A0XRA7)8s+FIn?BtOx{cO$_tD-Br=gt(B5#n-637T3GE)wYfgYtm)mYT zKUon9l!*EO%G!9utjD!hIf*D7w&CKRE3ae6B9OAFwA8g89{R4g@Dch0eOEKujUOu! zmzG`K8&DTCi9~pzj%MIkynyVv*(j z75uXagr_MSdY&U?-B%Zfr~$?FQADDn;wVM6JyYQ$$&KgR-sF&eBJtq}m1~|F!SGM} z#P8wF#EJSJ)iEK!RRW4TBy9w0uGp`pQYjdUD3dovQ9Ia9kX5WT=!pAgh=>Ef#!EYX zg#NyK0Ut!Em4ji1T6reeP%9Hc4u#EuP5x8KOf-t;?zv*G@mBV$1b=`Y48B^Fp*B*5c z*k6f7+QP=nuzRj=6VIUv*RrqpMN3FA))RCH?V|HI6~@O-Y>Y|-l%J*^N(%l0eQi<< ztCH~|#*5i@t6T#0_BJ9`&$owSMG79S}ef#5DJ|=j7C>}Z`tf2sv3quWnLr&Oo;NlTy zeUv4|SoFZ|=8ZJ|I=kK6yI9S|B05?7d{?(M{<2;bw%wT#2!>GiVno^Ke%pkTe`|`0^qxOPU zw`gckSPfBefI)s>IuD|In{^ezJELe9A3(-_rBWn&4|-78I1od7 zaUqn?Q7*?vPf1eG;s_ZUS%ceAGTa9_b9-_PCW5YPtMpq!PfMAIP zM5tl(#LCEAz;x15*{?)RPrnjXaJpVL8KeCM;nxpF=ZBP5G)W1q$ik?3#KkoRXtD`s zxNB8|rhtWheE;gDkK^2N1p^y@H+g%cps4M0$K(P`fUYYLH)oPSpn`r7}jQcp4FDy8}1IPt+1>%gZYC=Ue^;mMU4@} z2{WrKGOu_F^GYmL>*!_F&M^MWcCHQP$n7jN(J@p;Ay`35>&qpqGR&3RtZrfZmJ6rb zQie4!GCZ4TJQ+H(WW$=(mNly^YZjfd6A7r10F41yguiXeY;Y1S;DV1h^Sr;r3ZLFRdWwCDu2ol|HN}D+pzI;Cp=$7t*i;tnWiS zD#PH57D99gAJW1{71E#GuE{i)8~wNYoDV?XxyH{GS)=29i=~&qoM`ZjvVdolYMo9O z@9h*IW?uLi;erJ{N9qy$$L{4bEyC$T&US(}bbJi;GH zCvm=%WD#1e{~`Cd2zX=-{?pma`!BWku}{6xrx^s0{xsWrC%b2_PQ3v)PWFwnbaahs z5pJMx^Jq&!;R2M>@ zWnV?hlhMAeHGR(SE5Z9t6#GxfH%-rvm37kpu{rhNQ5ViFV@HQI!x;cHZZzn}gYV<- ztalzj2`Gqm9`5tB)P`J|xvXg_->Y-9V1X8aqk z_I9sgcTWko(){-PT{Y&7?dCN!1q8Yb7j902)p09$2XOpv&Y2tMA}tM@EAT(O(>xb< z06&qrv52woK>goDZj{^(=r$S z2QSj%Dl5=wSqPWVv#PO$8n4?sV>FfFE@)twUi$^qOg`6(+S(v?TEaWBb`aax z%=WbHrn`~!F}MB zz9}03Q2E%fa{M5jCnE3s;b+OmkJ%6GXZC^p#C~VqaYO{S1H_fJg9uSg*bi98&(ioT z_#jcC?ssD@`7>D1vY+&X{e-1{Z4LXT1!OpaepXQ#76K$~KOlLEj$^Mk+ zWWBZ#Ro;J`6X6l#EKJuj5lvByP=6&A0Z+O)bcjK(xA5Udvhg}%4Wjry%|0Wu)4x{SjL;%Q!|)4yf&e% z8AU6@*qs%M05646nyn>SMAw3wV49=rEYHn}92p&;g8TTkYcQXiLcG#l&xbn>58<3N zY7cM`Xjz$-EsuI`jakYel%J8U2DZuRc028Mr6N->7Xuk^CfCA?iQII0b~uJ@E|4{E zJQ2q~rgB!y=f^YW!;9_0xuGHd@fIq3YbK+<{GPe7jq<3y8 zkcU=W!Ou{}yBig?+V;J0>r`-sgk?C#hyfIn;72KVw}i+rdsom10ZS`(aJUYcFMq z3&$s_EyY!>ULIQXc|So7KsQ<@WaAMP2)zswCy`YcceLKKC=)SZzQ3``JC0$!K+v=a zampM;L5GTmy-KOK8`=#pOBMGYhQ>na-q2m6HfBk5t1;Z`DfGe{VE=XatK0}Enud9Q z5H5V^R6&>_7KE^XESrJhbAo5^XI?)+Oz_|l-36Oxag%9GRaQRbBPgbvw44rPCZdSp zBU%&`;8oG0N2HN0aur&+rD*C_)y8XqD_~Nv%q?x%IFFg9Sq#=NA#GtgP=&?PDOQ8b zDHBv|h5F-7e;lQ8$gy#jI~jPsU>97DmlJkXE1;C)n%CqOAKI4Smc(d2r3Iz?f*f1P>jyzHS$7>aM$8jEJ;M%+-VORhyi;;cG?eFWHqf zE8sWV?b1Y^4V&y-ce@b$;B*DUv5KNC4WBDIx=O}ZM&|jJpSb{HDTc)Hll7MS2ss;Q z-dQ@@5PQ!s63GR7fkn^@;?@`7767IRvAdbyN+$7+EIn?P_?I5yGYE%5T;FweL zXP`Z{Xw&zg97QxbcYbT4r@e*nPNPnN9zf}Kdoy|u`dO`2GR@XLF10B&wNX5S7v1jE zDSO^s5v}Tl;aAK&G^dHbW#RIK${uekl(~ucJTJf*E5-nR6kMq<5zsEpqOQF+sx#-{ zAVlWEBXdKcE)Ahq0lv!SWQqhq!&CLtpXD-iqld8$)6!Cg1iWQ--qm~H@OY;cXHi4;kb|Murfj>-{Jc7oKCi?c`h05M&+hR2 zRJ*B1FUOQMd#t<-X+hFv=y_qB5lI_=HAGZF)K;7%GjY%DB-OJ8Y(y@d;I)nhDFdFy zxQXV*grL1>xcM@boX7WbQn0?@!y&3;s%<>Ofe3sdLO12!maD#8~2mO&Fy5?{uOO`~WGT|9KRQ z8K0@6qei5!PNU1EkW*nPn5Nj?L~;SSreKA9c9UtZr=^)8Ih(OkTD7sD2DLj;jj}jp z&Azq4F2q-!Cj2Y$E?_1j))8#uI*oeH5GG;Y>RM{L!mx)O(e0+;Maa%-JL(H~a0CXb zYQoHF&nU$X90!#)<5IANa;6a8z*_WxbB5rsQf&b<+jv`)x9Nqz&@iw@8>3QZdA6z2 z7&Fo+ta#zyD;IJ0uKX8rUIgzJshs5y9i}O3#zwu7SZBAI?RHNl)ZJWM!LO`XbElwf zKPz>iZov_k)m(3lk4e6tgS1dY#5YXGH*nVC(=F5Stv|JELlt>=c>hQp9^N8 z55WrtM*Q2IEhfT1WM*}DOHnYY%=Uj?g^O)t4Z(ZwjBgM8h`WGi2~muVfN2L#QS|BT z(_7#K=IZ-8^2=%`MxKD+PVB!8b{ltDEaVxe$yvr?Ysy&)z}bo}hgv*92aNW&lYD#h z4VWIb7OmU0A@NeHwg#z+bzZ<_!^f#??8-Zv;%SN&nM(u70Kh|pIKi$I1g{B)-iQ*_2tlDul$%zQI_spp|Ph@7kar3e=WOrkWnv)qz;OD^oZTb@7WvaR}TU z-}H2R197|K+n$bZgSxLk28FeWD)`7|F{1#4HJ*cyP09=|G+DPM%iBm?1Ej};ua`%K?e3o@ztftShl#~I(;BqWV*dMdu5#|68E zr`w*2Z|QO2FECkr!#Qw~P!@E<`@nL(4YF=AtDd%-#?*q{e@}qveO=l>h8V9d4ITxAL04cqZJdomQ?l7quhAphi2p2Tq0Td{)K&L` z>)KmCa=JP5Bm|T34O1g!oBCjRDwLghx`N60HYoDZ6{)L!7D%9%ndCT}BQt-vY#j5C zaJK5tp0qy04|?)nefHje_M|Zk%APd(9DMT9e_{a`oF4^jCDV=%ehp5Mf`DY$mm}FD z0SJ0q!n%=HDzud}gTb;)A!{AKOmDn=8?&(3!=U1Bmy99G79T4nCzN4VC3ZMkDH3B1>FhM0Dq}FTxk<2kGfVx7-8P@AKr`Xj zVE>K?i+*fpqH5lvlb_!B{6Iq-s@gyp zfm@vUdv0%gY{s-ju{y+yl-)DCUIrzlEh!r%>&AWyXVCb>j!iK33t`vobP)H0e}nB- zJdFPl{2Pg6P}lfRyPwSXEk3ESSb7sq+eb6?V-pao_72@}K0bm!NqoXGI3Yxh6k;Rk3bDZ{szBC6ZQe#-MV)l{kxB$OVyw4cs|-?V1Fvg zK3e?BKB!+$oMqayP5mX;1Zg_h^hna_Vuj9{Y(8QEd|~i_Hxfi-0Y?&| z3plmAqIT*zk8{lwL)8`6^vm&csiu%}+E+ zwJRZi$cytde_2c~16D#-f=KWp3>s{;6uqKAP&%YCJRxPj!dBA^RN!4ri?n>T20Sr) zvgfUUds;T-{}L-(b?U5Kr@1wKN00k$<@Ms(JYh z;i&&F;m8U*0;q7!H`WEj34fT6-AL|wAA2oL2x?nQF9QYGJHIhO@3|uz;mG$s1l^QA zy2(nTnq^eg1T`)Qz&AoRCqFyaCN;ph>hFLxvo>bVFvhUlk>L(m z?$|EqhA?ZO*aHJVkb&byPHG|B_oNBb;M{C4EH)WQ=6-CL9dn|*bbK#ZI_$n5X2auv z5BiQm#=Gs#g)P3Nr+OrLbQ>i>?hQTF=xYRtNLfJyM1VOGGEdtrce`n~o09!qc2XK6 z-MGn0pih}L*aRF*@4UX;HhO#NMkMF&w`U|1o?-T?r zZ>#3r;1ahm%FuBby!M2p$}o!<~IE zSZiD9z1s?%W$ndVE;M+3_IRrfmtncB?IX&dvf&+DaCg8Rx%V*Ge{S4yL;w_E(VTGVj?KQ^c0`IwlXq-`eKM)NINLg7+Jh^P&}mScgt4;{0#w-@|EnlI8D_XYT+1jR5WDpKsw zU7*GiQdZ!L2I9hj`aDJg**$cFRS5Ed>j;~~RO7)nl*5`sYX1=z9I>dCWo<-*o&xMo zLE)wS!ckozH5pP2@5H>(e`~MQAU-j8cn9?I!?gm+TU)x@Q{9&4PQz>ZOLJ?GaPzx0 zPq!xWb46r*ID7eyBV+5v_-79bNL7lF;QgdiJIMR2C|nnj^$|grAWSXvB!VVQwg&GD zk?ClJQ9LM9{;&ukRqg_-J0kgS-t>sYzzU2nVfH!7XPb@5x z-k37!P0eJ2GO{t#9;}+y;HTwnpDS@+qv^+=;-idUo50scQ6G2Lexep-$7J6c4Ts0MXAs|xc za#ctn^?#HHUzC^|XGuOVb$IHiyQodDr|2k0Z?*=K-Wf3I2g7$`n{uj(JjdhG$7b(# z$v+iQ@eNC@Xcl;wm~~rc-C~eT0ud}#QRsbS#~pNmL)iPm?rd(7SAiJ$);t+8GDPOw zp`%&a4x$t|xPS{gy9I@^O>jpy{9l6|4CBJ048u}KG-BBK;8}?d@7`^^(-BPI(ec_S z>v#uWEfPgE&P0tU_*DV3v|d{B* zYv=q|MKY^PAX1DJ^zCEVxGXNa-Ey2wP~!spKj*x0o3BlZ)aZV{pA5wJ;KF9~9VGwG zX3n9e^BfdJXBmlcHc56v1gu+e1g6bU1Ajm12Oj1J4bPWe6FK)tETA55GGmceuTjQk zw08LvYJBHbYd@paT_5k#xcg}p$M>x5g@Ak6M?$p4Vb~Z{{*BA3F(yQ#*xk2YNi+Hk z@Dm*YE9;llN~k9(S_8;^$9sSyU00FazQ3q#ixKG*F-JZH(c|sy8~w60_#^^Hr(4XB zJMeT0%D8`pO#GK9lif{6YHIJ3s(E`4w3^m3f+T>#T_zqr*uu#?z7qV}E9@Db+^~&p#!G}qLchU3-V#+gG6KUvFiMU7OBksL|v`LZYRig~8|u zS>TT7MymYZfhWqe-}5PdQ)~1n0mc9kx-T-5^DmGcgkap))mb((E>a>!tWO-l7HMgE zU{vvE#*ucLN7L=XfWo8XoA5jIyylQmpeIKdh_5NA6Bwi&(9==#CE5^vgUePE5#HA* z9JikTW}GHju&Bw_Z{ZJSp%vsSyR25}vKw*)ml=X(>M|X%S@6%QNsMN=1)K|b6Q?-X zDy^3Hh%a{9Y&O_xEfkI;KPZq6cSy%_T2TGpM1L@>6matFg^D@_YawUICfa;Hfp2KV zWXd;zRrpyZr{Wy~ank7nz&*PHH8gbA1Gd?<)KR6aK#p*&wO3*Af_F>;tqFQK=sWF% zH07IVpsM z^|voo#foO%Hd+aBhB^nD)kw!s)@a&UTlcUOqC{gC?4h1I5BDdolgevw?F}dmM)Z8g z^?W++Pr#WvE4hqs3`RKwJ(`@$_|`w)4%2b}D4QJflBMGTrgDGzc%ezja-hMSPoTCM zNjkoNlmXArB#!x-vOR?!xIzzHp#n@zohz~|^|k{le&TNP8-K5Vn$2D{)Y%)`8x%_r z!Tq3$HSn*>>r77QKCtVAv@u!8Nj>A7wOET+*%XwI%1hJnj%UOL_KYwcFTs}=bu?MKzjY^n zgSnN<|Jf$IbLS~MCqdoSJCs9zaF6Do&g`wMwBK{}=Cl4gl-++bQSZR;3F1mt&GFe$ zgqh9h#+5~bMnjHxRV!G&`min2Rv?Wa2#f<5(q}4Om)?*G;sVrRx12xHai@RAph&p1D#R#;b1HlBdGLboeNzroDc@mJut9S=M81yFdM5OD@T~*Dc{(r80joqmkFY}l%=ax ze*3;i#*vSr0nso_A(RZ*Tnwhs$~M6?_LMg-!cQg@+tWajrfgpeb$+{v_M4rLZq6{q zN>Zf%kGyx`ZrjM#ME?qf$#4NjMVgf4M?k|oj%_9GwqmtqJ4rJdb%`vAh#-Igih7vj z`R#Y@z3T~pvb%fEy?55El~_c*P^jmAetW}~JedUQg#ionI|3HiX3Ya-ow6xUmYRfM zGo`lP)`1Iu1BbE_pa${m1MLTCKuk z|1s--{}@n-onYTJ>a|lQFUsd)Jc!E|ay*RlP|4v-7uxEEyY_jmX);ojj-|gU2o8h8= zh{Qh$41_WEtgNvor7L4kNZ)uii(uYpOgiC%b*xOj-E{Gae}n1biJ6#ab*pBP-Eo$W z^S-w0Mtk--nX@S-`XmrI`;YQm)?;T^P@Xu z#7q?ZJKl!ttf(Xh(OE+|s~jfC|AJ@$MS8&vj8`^oho4%iXtO17-35}yMTmuGW4&fd zW`fUZG6U7%#C@>7J|hj)sOd!!0WOQ87ac8uR~_*DFhm&0Rq*A;*T&H@qKMXs&LcSV+`PDho~Vo_h+=q6FE9B1;5geF*`fC9SiC=SSk*pjroj*z6FK`L55WP zEq^36STg(;gwA#g!mcPU&8PJ zMJ-0M@6(1D7{yBo6>+RuX_ViVL-?Y#IosY<;Y@#HuED%XZ)8|Unzz&qX1Ht3Pj`-+ ziF!M`zBz_yAYi5-Fp^d{EY0El2xK4t5_#{XA<|ID*Xtreue*Pk%>7yT-HLA(cdYZ> zs=&X4sPhks87upDbQ{P%L>Vo2lYii?5Pr8B!kacw34Yygu#U0lBF~UmFy$=*GfU1Q zK+osM+d*rT7(y_rnYhF@q?h$;_}xmHJnrTFhCNq#8qExc!-|6{911HAQm6WmkcGsIY1$azoFUnS`I(0VOQ6>tmSQfaX?ZLneep3p^& zVUa01aBhj8zM-^Pxz=0}vb33y!R-T}y)#~~ue|_tG25DU;d%*_Ouz!5Z-9>ZdqDV3 zuerfK`OLK*-}1tT5V9v=vXDFjJi01Iy*#3*5Cjm)5h>Y*XFaye^uQ6f{>;M_L1vS9 z*63%zV-^7&k9kR)mr`?(_9D*N6d3Tg6+M3_3JHc_qH-)z9E-3HPOtA&0k{i!qIg`X zF?2u=qDOp|yym;RHT>nbHim#+77D3M+g0LGWl$Z`>SHN{L7p*F(`quRv%FK>q}oBO z=bX%W=?-!|-;9Z$L9+8Bg{D;R2IZ>MAMR;}oJRG{dunM zG*W3$HxJo;Jlr^N(ArZR2m6RGjBkn^-A30>)Db^(_Jf#SktFJnr;rmmx+do;-S&xu z5S?ZEdLY%E^G-Vl)HKLz#ppBd+Z~g9=KZ!UL+NdMMz1&kMX`6Jajk1$e*7(ns>@C^P~uL*!gn@`Jml2ar~d|(ie@>FMH_ya{6;(?FN;ICZ>>FS4e zG%dOz9!(-ZWVNs4!N_)#=y<)9a`S;7I4a3~sk*0gYOHw$ET^QleinrdP;nDl_6sUD zMWnEWRgf90p%-8_RVT398WwxO^0UqSvzZI6TmY;6ZyoE=T8X@LN2 zq*A*n!8sF_iHw|>dMBTMG$HkZ>IT9WCuLvq%b)qRT0gpUB1f){;O#8tN-`K1H6?*I zwbLYXdJ(4G?oMjs5u|568ikk}+Lpzb!s|7U>^W4U>Y2iE zwMZmJd*UeinQRGdyfHS z;We^&BILcj#{(x!xsKeC1N(=)#F877o%4RXJ{OD}w&mHI$UE_V;$*0zQAA)6w6OZb zoJN3;hqFOUtg{4kjJs|(1q}_6HozDhcw~S$`~CjgJmf5(Zww+<t9f%*$J#iKHI}|-Q-+1=>QcAlH=NxHx7Hm9ebcDjS3@Q;lwGtzFju2s zeTXa{Y?k@AmmY2u`6|rm;N8%z)ztE6y%RRu4jr%ACR?N0Y#YFBEkd+mGQjpfwedyT z)5xXNU0PYa&c6VD)0D8o)9vn}arMW#!RIz*a*ZmmP#7K*V#9uP&?Z=& z94f&IoH@?c9J5_>RrcCD{vpq^TYg_DPsn%5H14tT6Sj}X&n8t@)5u5KCwl|?8y1;kCdT0Df1Osu8P^WV$8IQPiuy*iF>>@PEl)9 zZ~I|AfwWf5rwL^3+Q2JE#|WVw9X;4A6JueYjLzR1N|Bhp=};~jJHLf2rb@MCs=-m+ zJbLhi+=(Nkank(?i#e}^@`#qiE|^__B^>Z{xMJH{WY|b7SXz-7zb60DNSS#pog9aq zTUTuA<8lmPUv+tK4#!m*(g$QNm3_`qwhd0gj@lv(3k{`)1<(CSvbP^s;wO5!Fg9RgX*S!K11) zGg!WF@AjrbAJdCd&b@tCQ1^dzc0g@U5(8@Y~+FBqfQAL-tTo8M$p+3z;kPd zNyJXjquD?BtsT%fckO`udmo@m9v*mXyJg@pl(eH)G!_KXrnw5W{&o_5tKxaEaojqD zFOs9^U`_%<%WG?bWYJLjCJ|gH%)^Gb4@E6uJPyr$D5}CG-V_PxCe`e4*jKJrub4YZ z&2%rRPH2M71}Gm$yiS%2U@VTRUKJn7NRZt^Mkehh8Xd8(8F&f4AuiYXU}bk5VEEEz zGKJ8ATUs_8gNctAwJ!rJe5&gZRyU|G1EbvjHC-ap*>$AZHv+}jH+QSrMO<$)#a~|8d!po zYjNvjRx~LZXD?~BmLr|qvJ}0A$ad-*$a0ik?^bo$`>U*|L?!jN=9jdHwKQJ$%4p&m z)&%3QWe?~>?pt;xYw72=@|%7wQrdh&-H&CPI*zJuV-TCHD7)uv&1~pp$!xKe3wFEX2G% z-?XaI#Q73dwT&{%lI`zeZ%PPMz$$Qz1-ccV?^y-t!$8}{^+_0q+mEraI|;Ord`h=n z+7aJ-3fL_&5%yErEak3_Z*AvW&bQS!6f&re-+IvKffN3yCCLLf1BN4Pr_+V{&j0() zEj7P-0RG=NqqdmT?e1<6gJJ8un;TB6CwC4@H=#~+@4S5=+f$kt6{me^sCM8&*|a*v z9_r)9Z^OXzt3~;3hx0>?u&yFmDP zYs1oNmh9iq#QkjFZZ<%eGSLA_&jbR~yS*m9e^8d*(Kn?w0!GvSTGIV!$HzIuNUt`0 zc&?=ao){Q02w6IkeQ>qBPliUOP$h#=^_-6?5F!*wKB-PwniO>jud$3Oj5q->hB*N` zb-Mw`4uDC85N0a1KTE4c#?k2lgk9}dL}5fZ#ZHnGR+NK*D0)SkD5stXqMQ_sckccp zNwx0;xQfD~a-Cop+#-!I`q}$3ELx;Eg4I%^4Gh^YC_DqD`aS)=k2Vj?ubC}tmdg-( z-Ygbrh{B;(GB~rY+*N8556jaKE?f06R3Oe2WcW_jw2-hdNwQQ&yR!wzwW+=Zl&2FW`$qSJ_NB5# zwQ0MdEmN~7Vq0Agc6T@A8>qGF##XKX{X7}6 zsiDFEhI`rVBJj7jM2)ywFD%qcRK>Ljf8+}Lcs6S1`?UAVb$a*FrMO&dyGKK@kIK`G zU9dS@uxoZX`jv-89|S>naI50eJ;UHr)_&L(?iT-|I7ExwzIovo$>GNmK!#hzSKI5k z{QtaFO0w9#;@EYPvdbiAf92u4f5#U6J9gc_W0w)7+_Odho?Z9vA!UYO#%*u7NM;~o zK}3lpxu9R&ZbqO5ItkFuGXf{Tq@v|Yn#F-V#c|s z<}{vgRwt7Iu_IdXF~ne2uIg`PII!R#xlSLOU-6JFc!)3|ItdI%p`ru-uB%C>8gw5j zMsa~&>CP*^Qu8bQDI=>81UFUwe9A}MssM}R9|Y|3-D=4v{B%PAFaN;3m?m@3m=%DP zJqHDC5seIInRdJ8H(awR{13rE;h};bSZcji1ul4)f@J7|hgCEV#iTe*OgxCUGMqs^ zn?WvEVSq!6f=K~m4fQjnaG8_hbTQ|)Dw4{pIX-f=P?)(PO znUL#f8@}d|P1!PX?c%?t`fH~tn#Y+&()G`?Z9W;}q1cZHQ44f>JITU5my$r+ay9_N zT9XxacGC&Nbp+Amz?L>2EaSbP&TW&w(?g7SJ=woM8@WE><>~?Fr$PHLZ4DLhG8{zX zLHuVP4jddUgI*p4tOO%ij9gOMHLwW>Y@pD!G));xZG~B15O|oVQb4xp-yuaR^3VVw zHg0Z>*xe^%gsh$&&}v5m;LdfEylak3>v%mpO&h|XtMy^^FLuCHE_)^GI3vE#))ta@ z3zkQ-`SuS_TJM$z%>Yh7vA-sp*pSiYBF)ok-WZ(bP77NWjM{&-RWua)Th0Itl)rs- z_!^JuV`232^|4gC?@VaHg0G2+B~$VS>!atJn;~8&a6O1BT^bH(2kj+2G7B(Rikf+^ z?)1m|h1fz+l@8s6;5u_h<@W8CX?JDV+J65o8s&;25(a5jMT#b>NM-Lzqeb7^*gZ6M z?>Ba@8oO7G;qz{}LF=D9Vt<7|=saRuczAC{+8KJN4yIiV|4wwdrc2H-UH3e#-3;qz z{jSaA-Se`xW)x;NRj7nx1U149l3%2kBWX~NR@T!p1}?{WR9jA;0f$AF6}Rdnh|w*Z z>^qO!3XC7j4Nc&x4X7Dt$!}$}6=V|{>ma@oaYP%lSzKL#<5<(~EQJ8&zQo_YYm3w$ zQL$)t2wIy!pZ?i5kN?^CYIG?*Shm8d_R1DpQQ_%@i0*1E9fNnZvbY(sV9qj-+g5-R zDb;aCGLr@tgSv6ZgncEp2|c~z-2w0zIAKs7Kwr0eXpgPoX}`9Hc9ff?Di5WUIrj&k zWF2(Uf5H}bLL^9E`CtNr<#{rPvoGu%OKN8ROXwK0r{Oa>$Q{G|r9 z97)TM@FbwNg58%KVE;7pejewx5p26TcwsQ+@ipq8?xcCAj2cxW zMPC@T2*Jn~QO)oPC?+ZdzESpG%=@5*KZ?X!TI8oqp>N>7 zd9WFkeVgo}Ug?F=<}{~8g?0scTgXS2DGh%KBx+v;fj~$6DtRSB;U`7wHJ0<^a5R}E zCoG2rIIqzLW+)os_?mvK(5i520qchVP&x5}g#8&8871=fsfaW*-H8XuJeH4Xll7zh!W zEKJ=t>MI>uQU1dg zTOJTz)vHg+Q*6F99bOo1B2St0->FYKMkR+kc>3MdfBUi6ND3$BS+=U~UUUbk+2(X^a2E+pas?~ko{iM8u(F*@A-Ixnx?b%c7<@Mvi! zx?fc@I&|*2x9T2j8O?!BcnsJu33ie0(D4{3or5zoMRTx?{OCgVi#l)QFfffg zmxoaN<==U-nk`F;Q`bLu%me@oO!^0G!1_ZrJl(LrP(YDoJ`)#dE@n0YMb2;1OD+o# z$?KmG5vF{3iGCTyyW&PS@er9oV+V1#XT@}hK@If}9psSA zRv{?NdTk1w7qfdOhuwdz{>Ng`Uj1XS*hDR;(9o})0fZtel9eJqwHTKb^x6KG2>KA= z_e*&1@zJS69qo@7CbX&LD#dN5EW*_WBy@yYL%6yTN&k#6)wKv<;_!j3y6VDIgl3=r5b z5ThQR;`UM3L3gpcTVw5#1f(`Q4g#6mDWgchC)GJKu-oRY0Rg$S%f@=8^>rejq4_$Ga-3&Jw}OKB02^-@v+Rk4s!bktXgW2)Nh zg6LPv^J-eA=OXmp8Aa`V^9uF-;LYpxk!T-t@1e56W;ssviJ8v@B7}_>2AcvopET>I$`ub|3{zoPIsg6@6jWBeP-%DOoq{F zDZ~7Ea=`v^#P2$9 z-UMi<(?rYVAQac>Mwj-zi#o;DV_8OewZQj~hN#3g3VSCNeOad0=FI7Qf{xasuIU@+ zFyzrV17VS5`R*`^xgr{tg${iXPJ-KXCg%YQ=0XL5lf@!nK}JE~N|kty!QcXh@wFh1 zmZ435bsv5UP9rugfJR#uN-57S@EPEyeps*J&yQ?g=y)D(-}}`fOJx|aP7r}+j4ezt z07)@dfCW{yvf}mH40UHvS*CaUv){w8zZ?A?efNl>;_5o{BIJ|d zDFov-6JM|G)-@{Wc@aveC?Yg=zIMk}57rkLmdheJ>R+UpM9caYJJ))E0Dm!A;XK4h zz(7oKJ_EBQpkZQ}1cQL76pY6g=a96)a3~Pf7|G6_7s1Va$|FXz8;7fVxA~97!f%~o z{{8dK%VI$hilM=cKdmxiu$V9(f3y^!3p-pp?3bSGk^`XU;zEiKpT+{KF`JYd89 zh~2}_$82~IZALeR<+XlIZopF8P5KRz?(L~{Us%pb1;iA|3l-M)O5DSwl0o^jh@wzN z<4_%Qs|^E{ErK1AR{|E;I_gqm&2yo1FZ^6k$t=l$dKQiG zX-r?>6bzT(`wd-i+J+9JMRw78uTD<&DSBC$#hbfP%6ez z(5E2%g-+#U`dWb+IizrpK?Ex@LcNz-uw=!ejiWad>>NbM88yr!hQ=QDr4xQShJWxY zS=IkzdA)$Wuz@<%sC6sK`Y8nGdw&t?do_BI494p2U+_!u+k1tMxXdz$iL2xS&ezL! z+&P{|L(LaSgN)!2TPYt_h=EZsh-fr2_ar!|)$LFMRX$*j`)h#E!2u{HTm>YA2uyB@ zi8u{QR?vtVlNWs;wfEepEnDYWdUK7&PdLIAZfY^f@wNGBn9*y+CIX-_mYH@7GqrX# zg%~-Rcx%(XjA)@?Gj1RX6p2=PkFH^7LJ@hEppyofneWS1@=n*}0sZNv|h zq7gZFq#hU;n%z1nJHrjTBTC~J!LK0r&Q;-E9On@`DUvHaDD1dMCV?O0Az(qn%s60y z)@roMa9JG@HE4?-(M&e&pRzYavd{{9V%}aA9@Dl`I17SdxNL1emrr$cXN*z}u@PoR zj!|Y@st_TadoXxz|!h7a2>e>zQ=*tR!mct=9j8K)rgK|qcu3M zxls`!-4IC^#Jbv8V_4{fI6wu)=2ZYQMrv7EbFbVGTlNvg3#}6TwsbZL=V^Xz+o%6~dwDkM^RKpdMX|O6Q_4Am@#H&r? z3lkIb%7u%;FHWSHX?Lajp|1dE*o3~)tvB{TqFjhHtY7ia8ooB+kNlN?*`BWF`i7ET z)%K98a;<_>DEF54`4NaBtUeDeUoCD`lLPSgr1y+7z#UvFDM~dh`9ipBAGFjYQ;`g0 zvo+(RrKK;H04Hfpm?q-1+kL6RUE>Xa) zgK$xb3sF`*wGDb?q#uDzBpwUrjv$_DifSZWc^R(rP?7ge@txtuh$EZldytD841b<% z+lAe37!cBXkZdotUfWmxbHTqb>ub<7VM5}#w~0-q zSIW?>wT8aABku`;^Y!?Q z8uZ4dxih@r*k@W$22^m7gVqra!hjiXJoi=t0$jRxrFF}*3WLT3sjHARXSV54&|;Y| z09u)=?$H!~5PvR3C0p@M)F8A>KOKokLjcXqDHL>3;`w!~)Kc}JgoeN3{|+&ODd+YiyLyyCLn)+DDuIMPYNI2_zKu1 zwo0ovIf%1oamlpug4ZSORZY;IZIW}4kihX>B;b@x7ub%!0P|A>=ML+scrkN*f@j@s zm?l{iZCVWA(X6YMhSiG}Bm1qJ&!N`pPCdfJ=^+hH$&}utk|j@b2}GHvO4YVgsNzI$ zp!z~>YGM8Nw1nD-H5CGZ=+bU?3jW?T%NKCA@fUP#sO5%dwQnfekm7*hHb~Fs0c-aq zGZuF3Uv1E&Q>BwLt1?y7NzYVsBIhWM*yg~}t$$UE?RuB^5nPx*Q*B@TRir{hYN&Y^I_HNTgzEE zX)y_kJlM@oN99*rS3YeypzlWtyQsmew>s{-91j>4IOGP$&1|tTP~e!NbRGoHFT)~= z1X1bac~&3?Q$`>(0}7ExBW*YO62L0F!hhyr!B)jBMr+?hPE{2=(W#vRx?P0kr>@e# z94)?fVMn@{21?Kv7DQY7bv)0xXjJc@XZGUtcC)eLRKhsrk@Xvxl&3Zbq|u<7@DSuh z`Bk=3)OLciGu#Ts?F#H1kWq4S)gEilH2!^H7vLQQxW_g)rbz16k0aXBiuta_EotCY zV0~R%g1)x2XC;uEErvAPDtW~myjF)NZG@S0^6&#(I8_&BwZEk~=kqj|O2>)<#BVt6 zwl`g?tDAMbBwLv1ntyB?1=P~^dTqT1eV;%YOGOxvtu_5_$p)FXV$Z&>K&ki6pmM8{+Bg_V@kefQ|FKT4OmN`MkPc!Is=@6U*wIn5IK}MjNsTemA zZOpMiH?1BvC50dlY+taUuW`0TCV@s&o-9L2X`&|Of)_cdmo|RuE4KmDT_0?>h5Jz< z*->N~Zs(CrgZ|xB>l&+nH5_3dEF~5ivnG>-vEN$>9rYd^?~DZ1FLsw;+^Iiv5cbh601apdHfMPNx($S`;WP7np0k|2C0d5k zhaehTr%k=+e=s6oNBn3BBoVbbb(-FI?z(3$B6QYthNrYH>2;s-uMTr#Hu-w} z63m?ZW7QMQ%oI{f z&Q?;Tu`C4A0mazI!WcHbDpp&?7;cyMK(=07!)5eZSzB9i2k60j!_AhFcAHVA$Yb?) zA`Myb;DG}x4it7+3G}7LwiOO6^*e_({Z+2V#i$T9EvbYd%{Puom{RMM8zYw4ikGGC zPKVZZF-l7?my2xdU~pZC&=f$796A=9j$PVUXmkic_k|5hR&F4s7?1#@2~b{lAzlIr zh;s<|JWomtrB|S&rvxHDf{)p$e+S0pW84@Nwwnvd6WAB6*N5;Y8ZTXgnPn93`~}jx-M>h}?o(aTy&JMN?UMkvnR+mBU)T5+%fRIH5HC^QI>k~;_D8>S~wywYbgMIbG!UV&I}t8Av(5{`ge=i>RVN^ojV%M%{Jy+DQY3zCA&2n z(a5MtkQ(_~&~23jE`>FE>98n`y5M5zD15{g(+c(22X^um1uX!$60!M5w80(WSy`Cz zytlvgT0HXB;x~HsAdt{Uj?v4%g?5<8)6M_ZWv%?Hzjd))iPn`o*CX$ZU;Db=HhZ`98zV~kMh0d+7Jx<~`Q^|2T0{)z&ln46 zL$WhtL;n$c1<Ai{y>ACUEb>i=w>crP{#9WDW+)&^5k>cjLEx5%D1yjS0}+38TM@ zbGEFsBIgoU4Y?_O_S8NlgHyA}39XE7kq-qsE5Pn(@7Yu1u7&4ca&mutUSx2Mf<}~2 zWnWN3fCAH!3u};P0i49m%!`s=s=7r>HXO%Od3IgQz>7LApd`0u-=s6l z&RVjkB&iAjS-qumGzVv;xCkOPZR_8%T8O-Y&dpk~uf=r{MC_s^E8}181HcYfS*e7T zRg`Rztc(sScFaZ;4&89WME>VeEX5&2+fwkgPC1kRK`b&p6=dkuR^Wuh(SGKJU2DRc zS57I1e% zXl58_v$Vk&(9KsGE#a|Cct&d>z>Z_N9_UhDDpA8ClJl~-?Yt>Vm|xv6Tqsf8k^D+j z9iDfnRWQD7ps_2xi0uc?dG-D_*AyT-shb%eC#x%QAMXrUDK6m8*;yqr{fi_&Sin}qG=cyKmxx536M1e2P`(rw-ELUXuZTH0SK=N`7J^_G zA0j5BD}ZFk5MH+1-8rs(PY9`D0h~Cf%_xd}mKcggF~Ge&=oHAov#7A9z@^cA4WDPE zUx)h3M6WV*X|I&vCYf|Z3!$&fb5j6jyuaty~)5ZWYu zMTTFYF1qi&qfHm*41UCd!BnL0zAXR zN0THzeRRp(7Bp=LLZxUE22dWBN(`6}C&JaXm%>bhkOY^OM)0npO=DPjWAt} zU##ld8K6cwIacqKSaAc3%f!h_lQhf{z_LgJFgGm5K|k1i7iMe_#RaRt&5tb{4!Ac$ew@gZverd`mbD4!vS zriSyDB?DGC0~Qy%K^(9a3DGJ(Sd(Z0a6p93#mL~Jl^;%4V|NKu)DFvs|SkT!GYOiL^ z&J@2!BvU#$1yFf|(GK*!pQC~@>d%T?j3WAqL@8+KYv@B6d^t<4X@K4CNu@4+nW*h1 zAl@w!0d)IR9bSq~UZ6K!Is+Fw-oXp3gQsODyg*=;POuvW6Lq^&)l;;d9jmu>Zc{l2 zm%ysC3U+G_mwyy#PQJst!6t}hv>QbI&fAO5eX;CZ3!Y1$Fo@d%r|=@nh%Es^LZ8~K zv#bQr7#vP~6u1dK1G+-ZU1krGGfk4Go8RTJW!s8l$4O4wHIJ4@31#_sCth$=*R~n^+Dx~kt5iLBEj`!5dIz{t3 z@j%)!?Q^ms3W`d;POAl4hnMk7=4Si=smf6AwU_grE?I{V`Wa9z;^zHpR%pGk-Ca<%ZkQ~P0*YH!tyjgnCf4i8DFg?}{CXe{20FxN7wF542>{gU zh`R*=J>b5biu4B19I7!y&VG6O?%mlBZ_WG}l?26q0Mhi*yiBAtBjn$Ha8iyt68VozIY-I-^HRO|} z_T)t~vE`|wXUfLeWC>oq%hPB>SN?WxVHxpuZeba%GQ}k*XLq6!fLmB1w~)1P3r=I% z=IbO=fh1F^$R(}`r3%+NiL|tdWphUYe!OWrV`pl9P`DWj|9KA*3|zhWfkda#KLcDCU6Ah?WI>e`EYL#8e^7@jk*YKTAJ8$hD=6^eVNSwv+G5IaU1 zNMlND37zGwfndv^zIIe$BliIWVzRtnfkER%nuEvR%FCxWEJ3n;o{2Mk04^)>N&)e- zenaP_QFu5-NzSgSZ(ZfJy4o^OS9~qbmzTIq-Pt#p7osf1td_r}ZLhR_!<&l>F_qu& zT~yHhs<*S|lJx7m1q3Wr_{MK)%)o?$Cg!|vz zl3Uzu=4jhO_p3uOw;DO?mESZds;oa2?K{3+@xsn~U5MIVMcK)iO85En&7Blw4qod; z`E9eJNgK^ODGNKrmHmaZRCa6Nv?Q8L`MR)Ua;k>|1RjXbkxr(Q!6_KUnVADS4s**)Cyya>IvJie279_~u&3T& z+tlGHgQ1KV6i5oPn3_)ZPRIHMwHcq98E-VgATPc7&4xSNl9iq;ov#K$3;D_7KB##_A zE-!9d&i52*0(c~j0uA_Ua0twjin6}mhAP<0Hi{FQ0D#!!l+BVMyC9v?JlSUpz+SnA zf50Y%-6SpF1PHt7wSd^-_9rnX_ig3T?OWGyAE?fG(gr$R3HkOKj~*$;?gLh`qM=(@ z?Ruqx)#o%)2XP`t4%eTM3=rtuh(jT}q%^6XUW@06P-|)gg_yH05(zhTO4b=rmVrs5 zj5hRAXS3d^4TvKM{bM`Vkzw$Y609k&0hi%*c%}N$()n)pb9l#`zV(Frk}I^#U(r-` zyY#aA@KwZKCB0z;6G@88BAFvE0b_Ivh=Lc`1N|NlF6@LCwQqX?VQv8R;wX%wkzTbI zW(Z+Rx6E`Jt!x>+s4n`8GA+tf-oFz!f{vdmNgMBcp5)O8pw```9Jb2ctFiN%Dh5qj zi2?~8E+YnCNooR)A_L6Z*a^5$@(-m_!jGGIgFmCepE-k{gMG)&P#-Fp;mgeCDRA>_ zHeZ2Iw}Gb&mb!8nP4mmIWcSnRZN6B_V+y_N;<0Znq!{;>f<*6}uwz&{Z|E~%@vx7{ zWA-lT4ec&Fvi2cieS&)Lo_~y7*}d6yJ4y0J#i49W>*!rVqWm1@0TyVUya^%7jb(ZB z@da1yh#K*Ua#T12kazt<6(TJ zUH>Y%37uv{V@^ma?WDe)W#U+E!{o6mJ1_^U$sW4d?}}TKao}eB4EI-N^7h?45&;9Z zLU3I+=Tjxh9{~RjqUGqidv1v-T#8wX7(>O3uxE=W0?{VWZ|=l&S!dC%*XzZ49hyTo z@~Wa?$sr(EeyDSrgBN1G9_~GUF2-OzQe>hpNNns^(ndHP!hgR3b8V0p%UdDx&Y;8d zS!cNSn0269nqPJhFtY=sX4RRemvd2eLFt67;Ov_5@fk&*WW+gmI-FkUlTBMZhbER7!l5TyE{_Mwe z)9owuyb^E5GMSU{b21;z0gj@)H|h>Y1~yM}U+}fyAn$3La<5oPh$_bbhOxcSG6!T! zvnqYrh_)Tr@>%%jfc`v={f`sLzVmUy{W$s1$7vjaHjy4Owsb2uPFB^`B56>og)tl{ zx?OE9Vf5fdf)GX=!Xplz7vprdh*M_2m@e+#&@rv(?8Q~G_t>?z=sb?AWH@-b|MXz^ zY;WJqIe;8-P@DTIc`Wwzy(*GbI*Vt!yG(EOm@|)lhy^pZa$GQ+!>mAU3f+>2w&UfH6e^p@CW!yX?D99G$ipz?6<+0$sl z9zPzou+onY24G{Ghu=Tji$*R}pWIk=1xIO~ zUZi5Cm3Gj9&i_Ci-KYaWcx5NpmAe5P%ZN>UvCOiLy3@f{5=<5#JumX!wQg)CZaN~r zNlUo?bBUF)BDP=QVGp3+FgiTz%tf}iSZ1ADUgl|jS@nYrZCnkHS$X!a8J#yv@|<3V zVmElj7ZM>sr9%o(0UUURTt)us(ugE>ccYX%Cc%MtL-M8_mj*Hi1NpZ&?xxD&MTeEy zp5yD1z)JaRc99p!qyIIDU-tff#(Q6WUk(PZ20i%m`U(E~3?B~h;SeA84iA4{4)&j7 zvHhp7@!!MV@5|vK^5o=(L=RtmPMO7?(DUa$A*&jI{V&fwY!1eA^%1k+2b7JMo|`;VgNWhFmV zLQl9x+SCChun}c?20lJz zv8=ND6CvN`xhQ}7c=WF0Do^#pD+uv}b|ShI&{(CYD&_w3W|rcy{0nVYll>D)2Gb%p z8Q=jH=*SA4ATo}B?iqfmy_sPS1^^Z(@Y+GxxFJ~YOeO)%#H%^@R|3Q@J@=+6;gn4R zbTWdW3mE;zR5(Nri!wm#Xq6%tZ~k1SHxPJ2%0*A$!|7>j@2n_rbUBf_qmm7=qacQ@ z^);CKqZF_Ju*NRc?`k0cdq+&K0u~U!d;5#MVcEmC`GLe5FXl^Gd;o073SK0Xmga*X z!|4h@^U_kxa44qBN_9v_{d$=#=KS0HQhR&Av#hv1TxQwHv;>NtSNHj}16?|Vm*KDD zjNf;3;26E!;IAkWsYFjI^+TtB5Z8qi&=Lky0U6=X1**J($)E`GovbJp zoxC_IfH>^rHosViyaOQP)!RHvbI}1agZE(XQ>xMFlr(~~PBkqS@JI0LOjK1TmE!sY z(*C&>z5gv!H>Eunu;6-`$#j7;a}8dUuw+Drrbyp1Ir|I*1kLvK{TM*-CD8PLOJfJE zn=zOcSq0%)id*^Kn&N(;I!Kf-s|7%b&%8VA*BDTe*@9&D`-8FEf?Rmo=d3m=+2CNiL@V+=7SW8 zBbCLtkry^x(LU+9X{EM4># zT+ZoN2{+2L$cnOuG2|9ShBQxGT95EBDwU`FB-ImHZ2_4yE3VU=yFDYP*B;z(ml*f6 zbCG6QPem=I2kZ!lxn@0VQ2jP#id^O|UWu|N@|pg5otmF`k93L~QR2Mnu#+}L&eQ2t z4mbM(q+Y$E1mpY#&x=a*h8-2Gutz949n&YA;#_vBIbXP4tz@xK{lcGmBEYobN`OJ_ z@^Wsw;V0X^RI)6tL~q8cIk^Ei2?d62(JAl|Q@(H?!O}xNUxSlImR_f(g3}{-#Gqdt zuu<#rd^!jI9)5%Lfyj7zwqFQbacwYdlKp~Zo`US5cb?8t^H2f<0#CB)EnrlyJ2yQJ zB9ljx0~i8$%S|txiQ=;4i#euWb2%4)atll6Mu7QcPoS+<2UZlWqkH;kmXZ5( z-?=TynOQ=&Wr`~Z{Fys<*I8c0cUhWWb?(%L|0;E-y&kl)&kehe+IWLHg^aI>`BW}} z5>-zn0PpH2=Vvu9Zq-kjN|TH+r~bEf5ZRyj(WBej+y3o7ilK(zfB*d>d{^L-XLr|G z45t$W;k(Y_jOUl?Cm!-!$hCi`BflQKgU&pAlyYH6stRXK&iREHCdg?#DtOM3YCx<6oum9G4I z%YVUFfZaU^EpYV^w7|*3&;rL_g%)`8Ftos{hoJ>NJ_s%F?yJxOM-M{_oIQ|zmZcTE zcZzbh=S{y^ly6~eg^Nu&kuMXLKnWULmxK5cHzCUH!&jGFA?Yj zTrZbsGv!KsrH`#j^68a=9@5b`f6v3te}r6iqH**n8hrsP6kyNR>mX2kK=6AW?0(r5 z*r~VRr)&E0g8?|$5$p9^#j^y#=&iOz$rJ1jApU~k{0Vg7Bh2?`OS-aMMI8qsp~63| z2G9RUrbdY5+m?T|!f22P6^klhD+m#{wIR6C>dLbZ;sPWU-LCp!@dTn3^skW|N;WyI zjXXGDGz$tgf%vFo;DvKXjFM9sDhlP1%kXMiUJ+&cFS(JVHYcDQCMvb z#HFBhqAum%bHq_8TT;`6Yp0$es|+AsZ#Wu02Y=?lbMX4+lk^nSkCW^5B2WUiTKiH>7Ho{*(D<2!sP~P6*hvc_Cg{Z< zVrO*_L~-q#QQ$R}@h81=*6RSgV^q&y#^@}rT+JAC82!pz{rsm8@j~tCY>brgo;M5k zJNKeSRGXHqyr)Hb!7HR@s2h4mh7S#TZN`QJTj`&lvf(q`kJmz(&(CUW-EM9{^QB^0 zwQsT@V71qWIMd?mvq`Uex@F6mpd8lCP0j}e26_@7;|<%aGCtl z*ptrDlovA;3WI<@1>@U*0%f^;ETHV7ChWYp3rNQvlzf&J_~0mH{zkTrXQ)4g3Az#` z0YJDZEtW#i#j(-0#YzFoa?Lng3hAhIUJC-t1OyWo8_OYayU8ht$E)*KmcP6Tiw!+5?@}+H9goc5US$Drun5?y*}wE z3sIn{hz7a=osnxI{F_FCa5P~C%EWDp0&-YA6ESE`v}l@q2RSq>X^DxxT4UotmPNrMGhTmnJEl~lefN!^Q1Vk)sc^#0cZ|(1TU5PklqWxF915DsvHBb5 zfGFYhGgvYrCzqB>WI~{=8-j%P0DeoqG$wkzGF35SNH=;Blr$JC8&vv zO&&hiv#n!7wLHI0@!BY1UNTs=)CqdMck1FUv3>zuJbFJ@wxasY3u7j%~k zFt~077#uf0(nhmp$hApveJ$aq`bo*oPQ8>fH-B+JpSFGt&=C*!U&~qSOzxP`1@EhF zSB>rt4z+`!azpW@v;&q}6dI{r;z`}URcWW?>$P;3g_&vuQ+9iq$PMu>;DwkI-4N2R zBnX_+cHka9Bp5cA+g5UCV1;&LUpZ@8cDsLuqK`NyI-EsB!b`<3=i^$Zzw-UDU)){s z^=2U8INnLZN7b~l#9VlW9zbK6IET^7glQtuVKCy)b8Yqt0AF$f=!Ov14Xg>UWS$I0 zx%I#Xn_`e|)z=b$B2MyCeIVd(ZK1S-n)}d8OE`KtmpWa2>50yU>kdV9)Q2G0{Rw>V zD10rWt_!#8__Y(RdH|=5kt{%JWgAAn^^o4oTi0DWt15j#9K)qCE8ebL%gV+ zZadz`7GB)!^>&j>4_c`RzaK_X{o3>{!?xSfpuK-(y}1`77ygxvFR=)c3P~=pA&i-< z-JDFH_s&<=zh*C@cwC74j}l3y!oqmWeY3 zh4+EpmDM<+)vUwTqa~L|JLXt&ZlK(rSE;Vo0qQu-A3;%*+mPqey~p1fQvx?TL!7k6U%DX;j2cvnn$cBqDS?2a*Ab`O>hn~bFj{jiBP z@l-foITucdIg5DUd=kYD%LycctJH3H9}Ou%p7GHdQzG>lQu1fL_q?5)5JKc!Br6lP z`K?s33<&9LXTW#`u!A2U5gyOcDCsR&MZI52V9x!-6EK{trTqeSJ(PBLn29^*=Z|Hv zT&U;w)#)!MfDS6*w`nq33eaBrb|D+!XElhPHjqX8&D~_4X|qa1xW?VO#hladNPd2je!=g&O=ra|CVnC3I`~x-*Z8_L%ii0T&|1%V2JwdX z2sT=;wH273M0Q{{?Z}vV*|bJmdRc7PLL`&m7jb@-f+xi_7;zsJUji1q4^ADA7()|# z=P=0Rv@p>MCP5@khiDK(3_nFh?>GepB+#2T1Y|(k&&5QXjsZzoMmpG!+zl3Yj>7Iz zSbr|utr$KnQBmR;X};@?=Z4!M`{xv<<^4q%^m-T$<649{gHWUpv?;iN$Xx+3us|40 zs|tg8L0Ap4KeY`r9>s)2v)Q<4z;n@Vl|}geelim3au=jUynHFcLFAjD?}~o4JSPEd zIE>gF1X>9W*2dVki{vm|U5k7P4hlHIE3UQ|m~7$SQf+DYBd*T{?vgpCrq`GF2V}DF z<4W9Lid^ji+|AcQVrvUta$L#=i63H5O|i@^zGCAXulL^Z3L-3_f@v8M1`(Ph@P3G7 zu91$z{ihK1a`X+vwo8!f_tjc^GN7g!1}R%x1xxS@a|ZKNThk8C6ZRiqNH(+V(lduTpvoC}6^KY#&&^xP68zFl;8PH=uOwL3=s@fe=yE8kG?V+Hx%aJ79Sl%K6_ z`JGSdV+<_|sRFOX;XD(b8Px~j2*S>+VFB9ykD&0tm2$r`AcfkX1lwcUP2@!ABPcmW zITO5?!AHAYed+O+?$BEVrM!V6R>G9zkyEDh%H#=zzZ(f1c|rT&6#1(xonC1z96f0- zXPx-ESe|FXFX*JziysvL9a`Mx&6L)nN5xG`N^8+ii~4hGu{U5*AH-pq?36~-0+tFT zcwL__r9|bIauHG%1Xf$PUMpWX{RHGS+;#X2a01CrInsb<7F>dma2nPvd239e`u(uC zKV*`bOe3wKz$CAQ3dAu*i$XMo6d-$R*N=S$^E$9jyb%Fv!(2@kv^4)J&L?cbyd57x2c#ltS)zc3mS*h}#1`z5DppMu$ z9@~GkcHVFQXASr8gYdu}jQNu*b^)kAm`Ty+8M@9&5h*@b3AiJfnBT~qi$soQ#cF3K zJQ#fc3=Uu*{xW`9kq4MA4J%XsR`zZ}2NUh=lXiz+j#YpFYviIYi6PxMXxXBVey}V~ zzd)ExF5NT8N`i0~*>AxMqE^pDlXYzpjE%|`D+Apt9KD@7TznA@pFMNct-pwx0Wfu~ z%~8N~R%u=xaJor$Y6rz)si5!ir9$n3$ZJjGfJA$3yen(W9 z)ODx~!P`wuZnOeCb`7tzA?ro3&Lol(W5wVv;$5KqDG3+|elK-zj-Mc;GsE|$?rlNo za+D@%ze>*mI%?B4?9fHkF;L&=KIRE$Ws+K<5<%7M034<6PDb6Ki)>ZFrqk8TH_;77 znI(d7>P)ct)E$G_tLSSp{qgP1r_jo_=2Lk8*5>P9|2nCOd8%r9Zl7t!^wXVcS?*?qe zab~qUbc9T=8Vh%eLdD-i!nXq?u|K_RA4!b;>esbsJnXMtjtdsWe)O{P;+Fm0OW6Xq z#s1=zYGAA}A>I5oR5T{NB0k(2%e_noq>Ytcj*I)oxKcY6>TfC&gcF-)U-tLL0AN6$ zzxHQaFcPxPc=6&zGKj|ed-49T7ozj-qfD*`(Ru(jEYw_9T(V64e)sbpTgv3g0h`L? zVEFyP{@}pgax>{l?YljTHKpD<)F@NxdCxc8>m1a~?w-|6^M+59QJ-mIU$yZ>8?x;^ zQwDC2pD6sUp|*7!?5RR~g9BCSVDP;v_H6jQF85^rnJT!y_w