From 4afa2266ffaa492ca9e39168d80730c49b18b933 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Feb 2025 07:36:50 +0000 Subject: [PATCH 001/205] Bump swiper from 11.2.2 to 11.2.4 in /site Bumps [swiper](https://github.com/nolimits4web/Swiper) from 11.2.2 to 11.2.4. - [Release notes](https://github.com/nolimits4web/Swiper/releases) - [Changelog](https://github.com/nolimits4web/swiper/blob/master/CHANGELOG.md) - [Commits](https://github.com/nolimits4web/Swiper/compare/v11.2.2...v11.2.4) --- updated-dependencies: - dependency-name: swiper dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- site/package-lock.json | 8 ++++---- site/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/site/package-lock.json b/site/package-lock.json index 0876bc0a1..f7c42267c 100644 --- a/site/package-lock.json +++ b/site/package-lock.json @@ -10,7 +10,7 @@ "@vue-flow/background": "^1.3.2", "@vue-flow/minimap": "^1.5.2", "axios": "^1.7.9", - "swiper": "^11.2.2", + "swiper": "^11.2.4", "vuetify": "^3.7.12" }, "devDependencies": { @@ -2456,9 +2456,9 @@ } }, "node_modules/swiper": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/swiper/-/swiper-11.2.2.tgz", - "integrity": "sha512-FmAN6zACpVUbd/1prO9xQ9gKo9cc6RE2UKU/z4oXtS8fNyX4sdOW/HHT/e444WucLJs0jeMId6WjdWM2Lrs8zA==", + "version": "11.2.4", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-11.2.4.tgz", + "integrity": "sha512-DTtglrsFfMYytid+oNy4QI3t2N2+XhhwSYbnyOhlwBmvY8Bkoj3ombK1/b80w8vDpQ+Lqlnbm+0737+i32MrcA==", "funding": [ { "type": "patreon", diff --git a/site/package.json b/site/package.json index d385b184e..b2e97bbee 100644 --- a/site/package.json +++ b/site/package.json @@ -16,7 +16,7 @@ "dependencies": { "@vue-flow/background": "^1.3.2", "@vue-flow/minimap": "^1.5.2", - "swiper": "^11.2.2", + "swiper": "^11.2.4", "vuetify": "^3.7.12", "axios": "^1.7.9" } From c63007762d9844349dd510c51069e32b05ef0f72 Mon Sep 17 00:00:00 2001 From: SquirrelDeveloper Date: Sat, 22 Feb 2025 18:42:16 +0000 Subject: [PATCH 002/205] Updated CHANGELOG.md --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d54772da..6a0ea5724 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## [v0.1.30](https://github.com/SquirrelCorporation/SquirrelServersManager/tree/v0.1.30) (2025-02-22) + +[Full Changelog](https://github.com/SquirrelCorporation/SquirrelServersManager/compare/V0.1.30...v0.1.30) + ## [V0.1.30](https://github.com/SquirrelCorporation/SquirrelServersManager/tree/V0.1.30) (2025-02-22) [Full Changelog](https://github.com/SquirrelCorporation/SquirrelServersManager/compare/v0.1.29...V0.1.30) From 15919cd86d4af8beb15baf92817f737489a72c7f Mon Sep 17 00:00:00 2001 From: SquirrelDevelopper Date: Sun, 23 Feb 2025 14:28:04 +0100 Subject: [PATCH 003/205] Delete unused animation JSON file The `Animation-1707227617481.json` file is no longer required and has been removed. This helps clean up unused assets, reducing clutter in the repository. --- client/package-lock.json | 1143 ++++++++++------- client/package.json | 16 +- client/public/Animation-1705922266332.lottie | Bin 6824 -> 0 bytes client/public/Animation-1707227617481.json | 1 - client/public/Animation-1707227652919.json | 1 - client/public/Animation-1709649662243.json | 1 - client/public/lotties/running_squirrel.lottie | Bin 0 -> 5554 bytes .../public/lotties/squirrel_find_nut.lottie | Bin 0 -> 7586 bytes .../NewDeviceModal/AnimationPlayer.tsx | 42 +- .../PlaybookExecutionTerminalModal.tsx | 27 +- server/package-lock.json | 168 ++- server/package.json | 18 +- server/src/data/database/model/Device.ts | 9 + 13 files changed, 802 insertions(+), 624 deletions(-) delete mode 100644 client/public/Animation-1705922266332.lottie delete mode 100644 client/public/Animation-1707227617481.json delete mode 100644 client/public/Animation-1707227652919.json delete mode 100644 client/public/Animation-1709649662243.json create mode 100644 client/public/lotties/running_squirrel.lottie create mode 100644 client/public/lotties/squirrel_find_nut.lottie diff --git a/client/package-lock.json b/client/package-lock.json index b35a146f8..53084b04d 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -1,12 +1,12 @@ { "name": "ssm-client", - "version": "0.1.29", + "version": "0.1.31", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ssm-client", - "version": "0.1.29", + "version": "0.1.31", "hasInstallScript": true, "license": "AGPL-3.0 license", "dependencies": { @@ -16,8 +16,8 @@ "@ant-design/use-emotion-css": "1.0.4", "@antv/g2plot": "^2.4.32", "@dnd-kit/core": "^6.3.1", - "@dotlottie/react-player": "^1.6.19", - "@monaco-editor/react": "^4.6.0", + "@lottiefiles/dotlottie-react": "^0.13.0", + "@monaco-editor/react": "^4.7.0", "@umijs/max": "^4.4.5", "@umijs/plugin-antd-dayjs": "^0.3.0", "@umijs/route-utils": "^4.0.1", @@ -27,7 +27,7 @@ "classnames": "^2.5.1", "dayjs": "^1.11.13", "express": "^5.0.1", - "framer-motion": "^12.4.5", + "framer-motion": "^12.4.7", "lodash": "^4.17.21", "moment": "^2.30.1", "monaco-editor-webpack-plugin": "^7.1.0", @@ -38,7 +38,7 @@ "rc-queue-anim": "^2.0.0", "rc-tween-one": "^3.0.6", "react": "^18.3.1", - "react-confetti": "^6.2.2", + "react-confetti": "^6.2.3", "react-dev-inspector": "^2.0.1", "react-dom": "^18.3.1", "react-helmet-async": "^2.0.5", @@ -54,8 +54,8 @@ "@babel/preset-env": "^7.26.9", "@babel/preset-react": "^7.26.3", "@babel/preset-typescript": "^7.26.0", - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "^9.20.0", + "@eslint/eslintrc": "^3.3.0", + "@eslint/js": "^9.21.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.2.0", "@types/classnames": "^2.3.4", @@ -84,8 +84,8 @@ "lint-staged": "^15.4.3", "mockjs": "^1.1.0", "node-fetch": "^3.3.2", - "prettier": "^3.5.1", - "ts-jest": "^29.2.5", + "prettier": "^3.5.2", + "ts-jest": "^29.2.6", "ts-node": "^10.9.2", "typescript": "^5.7.3", "vitest": "^3.0.6" @@ -96,7 +96,7 @@ }, "../shared-lib": { "name": "ssm-shared-lib", - "version": "0.1.29", + "version": "0.1.31", "license": "AGPL-3.0 license", "dependencies": { "typescript": "^5.7.3" @@ -188,6 +188,29 @@ "pino": "7.11.0" } }, + "node_modules/@alita/plugins/node_modules/ahooks": { + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/ahooks/-/ahooks-3.8.4.tgz", + "integrity": "sha512-39wDEw2ZHvypaT14EpMMk4AzosHWt0z9bulY0BeDsvc9PqJEV+Kjh/4TZfftSsotBMq52iYIOFPd3PR56e0ZJg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.21.0", + "dayjs": "^1.9.1", + "intersection-observer": "^0.12.0", + "js-cookie": "^3.0.5", + "lodash": "^4.17.21", + "react-fast-compare": "^3.2.2", + "resize-observer-polyfill": "^1.5.1", + "screenfull": "^5.0.0", + "tslib": "^2.4.1" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/@alita/plugins/node_modules/dva": { "version": "2.5.0-beta.2", "license": "MIT", @@ -385,6 +408,37 @@ "license": "MIT", "peer": true }, + "node_modules/@alita/plugins/node_modules/react-redux": { + "version": "7.2.9", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz", + "integrity": "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.15.4", + "@types/react-redux": "^7.1.20", + "hoist-non-react-statics": "^3.3.2", + "loose-envify": "^1.4.0", + "prop-types": "^15.7.2", + "react-is": "^17.0.2" + }, + "peerDependencies": { + "react": "^16.8.3 || ^17 || ^18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/@alita/plugins/node_modules/react-redux/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "license": "MIT" + }, "node_modules/@alita/plugins/node_modules/react-router": { "version": "4.3.1", "license": "MIT", @@ -573,6 +627,19 @@ "react-dom": ">=16.8.4" } }, + "node_modules/@ant-design/graphs/node_modules/@antv/graphin": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@antv/graphin/-/graphin-3.0.4.tgz", + "integrity": "sha512-7ce6RDI5Z6ud93yiyS7b+mmFrHJhlkwwNo53kb7P7KoCsnV7ioMONDE6Gw0ROeMSR6TwHtxGZUhHw9wxnPp82Q==", + "license": "MIT", + "dependencies": { + "@antv/g6": "^5.0.28" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, "node_modules/@ant-design/icons": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.6.1.tgz", @@ -1939,14 +2006,15 @@ "license": "MIT" }, "node_modules/@antv/g": { - "version": "6.1.15", - "resolved": "https://registry.npmjs.org/@antv/g/-/g-6.1.15.tgz", - "integrity": "sha512-JO/CuvLPzOoBHsNC1Dz/FDzytPzIsuU3B+RGC1/Vsi2qWUKwXD4l1/US3b5Q67WHU/WGYvLHfivRq1FyDGXilA==", + "version": "6.1.21", + "resolved": "https://registry.npmjs.org/@antv/g/-/g-6.1.21.tgz", + "integrity": "sha512-3cWmsY1bYwDmVzsFmBeqN1tWVt+3JaWL6Uu54C1oF7qn1VXXa3V3KuXGEYCxuei8E8BMriN3D7fZosY5d+MQqw==", + "license": "MIT", "dependencies": { - "@antv/g-camera-api": "2.0.29", - "@antv/g-dom-mutation-observer-api": "2.0.26", - "@antv/g-lite": "2.2.10", - "@antv/g-web-animations-api": "2.1.15", + "@antv/g-camera-api": "2.0.35", + "@antv/g-dom-mutation-observer-api": "2.0.32", + "@antv/g-lite": "2.2.16", + "@antv/g-web-animations-api": "2.1.21", "@babel/runtime": "^7.25.6" } }, @@ -2002,11 +2070,12 @@ } }, "node_modules/@antv/g-camera-api": { - "version": "2.0.29", - "resolved": "https://registry.npmjs.org/@antv/g-camera-api/-/g-camera-api-2.0.29.tgz", - "integrity": "sha512-SADx+f+kQ1Jlx+LH9Pp4AXEk++1FCndVl7eZCosDClLUBBbAbLiMxtu4+K05whLiB4aF9rWmWc24VDNRlrC+Dg==", + "version": "2.0.35", + "resolved": "https://registry.npmjs.org/@antv/g-camera-api/-/g-camera-api-2.0.35.tgz", + "integrity": "sha512-z4WKmB6yN2fFi9EnapjuHbFVF0ilhMrWo2eZCxYXcb0dV5MiflU/WZi/bjs4WqVMJPNtYKx+yZhTyROncEiglw==", + "license": "MIT", "dependencies": { - "@antv/g-lite": "2.2.10", + "@antv/g-lite": "2.2.16", "@antv/util": "^3.3.5", "@babel/runtime": "^7.25.6", "gl-matrix": "^3.4.3", @@ -2014,14 +2083,15 @@ } }, "node_modules/@antv/g-camera-api/node_modules/@antv/g-lite": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/@antv/g-lite/-/g-lite-2.2.10.tgz", - "integrity": "sha512-XK2zKM1jx9nBQrxg5wxK4EOy7AvCE5c8iz7r+hfqILZn9/Mhrgj63u/YPDPyXjx0G3KUmy7XTY9231tOOtW+Wg==", + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/@antv/g-lite/-/g-lite-2.2.16.tgz", + "integrity": "sha512-473r6S5srkxUiUxI3ZkrM74HMkgyO9+2HR1xtJ75yDOOuT8F6osdXDgy0Or5cWqOlsVjiN3L3DaPnQLHlUGO5A==", + "license": "MIT", "dependencies": { "@antv/g-math": "3.0.0", "@antv/util": "^3.3.5", + "@antv/vendor": "^1.0.3", "@babel/runtime": "^7.25.6", - "d3-color": "^3.1.0", "eventemitter3": "^5.0.1", "gl-matrix": "^3.4.3", "rbush": "^3.0.1", @@ -2047,23 +2117,25 @@ } }, "node_modules/@antv/g-dom-mutation-observer-api": { - "version": "2.0.26", - "resolved": "https://registry.npmjs.org/@antv/g-dom-mutation-observer-api/-/g-dom-mutation-observer-api-2.0.26.tgz", - "integrity": "sha512-Yc/G/vSZ7Emh9Xb29mhOWp4CxHjyPOl0dK6eQVHFp6iKXEe6DUL5s1VMs66mle+DaQA4sZ2EZRiZjhLVT/A0Xw==", + "version": "2.0.32", + "resolved": "https://registry.npmjs.org/@antv/g-dom-mutation-observer-api/-/g-dom-mutation-observer-api-2.0.32.tgz", + "integrity": "sha512-50r7en1+doUtR9uXmFJk8YtENQ/+DFcj2g3a4XKu9xp58kmF2qBgtdst9n1deqGcL5s0ufX/Ck9rUhtHwka+Ow==", + "license": "MIT", "dependencies": { - "@antv/g-lite": "2.2.10", + "@antv/g-lite": "2.2.16", "@babel/runtime": "^7.25.6" } }, "node_modules/@antv/g-dom-mutation-observer-api/node_modules/@antv/g-lite": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/@antv/g-lite/-/g-lite-2.2.10.tgz", - "integrity": "sha512-XK2zKM1jx9nBQrxg5wxK4EOy7AvCE5c8iz7r+hfqILZn9/Mhrgj63u/YPDPyXjx0G3KUmy7XTY9231tOOtW+Wg==", + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/@antv/g-lite/-/g-lite-2.2.16.tgz", + "integrity": "sha512-473r6S5srkxUiUxI3ZkrM74HMkgyO9+2HR1xtJ75yDOOuT8F6osdXDgy0Or5cWqOlsVjiN3L3DaPnQLHlUGO5A==", + "license": "MIT", "dependencies": { "@antv/g-math": "3.0.0", "@antv/util": "^3.3.5", + "@antv/vendor": "^1.0.3", "@babel/runtime": "^7.25.6", - "d3-color": "^3.1.0", "eventemitter3": "^5.0.1", "gl-matrix": "^3.4.3", "rbush": "^3.0.1", @@ -2192,25 +2264,27 @@ } }, "node_modules/@antv/g-plugin-svg-picker": { - "version": "2.0.28", - "resolved": "https://registry.npmjs.org/@antv/g-plugin-svg-picker/-/g-plugin-svg-picker-2.0.28.tgz", - "integrity": "sha512-mDsdwK5BjFQKLUdrWfSQ4cbgWcSu0NODF38x41n1g0eB2+Tvay0NO6eC1M+aF9AoSYitdh2ZFGbvIv18eBIjUQ==", + "version": "2.0.34", + "resolved": "https://registry.npmjs.org/@antv/g-plugin-svg-picker/-/g-plugin-svg-picker-2.0.34.tgz", + "integrity": "sha512-++TjTwG832tvqjP3wlEJwkZvWH/lVHxMZQDG/3knUrkUAQfNNGiEQDIjDhwzUgkYd+J48cTZiVNHzmIZM9rbrQ==", + "license": "MIT", "dependencies": { - "@antv/g-lite": "2.2.10", - "@antv/g-plugin-svg-renderer": "2.2.10", + "@antv/g-lite": "2.2.16", + "@antv/g-plugin-svg-renderer": "2.2.16", "@babel/runtime": "^7.25.6", "tslib": "^2.5.3" } }, "node_modules/@antv/g-plugin-svg-picker/node_modules/@antv/g-lite": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/@antv/g-lite/-/g-lite-2.2.10.tgz", - "integrity": "sha512-XK2zKM1jx9nBQrxg5wxK4EOy7AvCE5c8iz7r+hfqILZn9/Mhrgj63u/YPDPyXjx0G3KUmy7XTY9231tOOtW+Wg==", + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/@antv/g-lite/-/g-lite-2.2.16.tgz", + "integrity": "sha512-473r6S5srkxUiUxI3ZkrM74HMkgyO9+2HR1xtJ75yDOOuT8F6osdXDgy0Or5cWqOlsVjiN3L3DaPnQLHlUGO5A==", + "license": "MIT", "dependencies": { "@antv/g-math": "3.0.0", "@antv/util": "^3.3.5", + "@antv/vendor": "^1.0.3", "@babel/runtime": "^7.25.6", - "d3-color": "^3.1.0", "eventemitter3": "^5.0.1", "gl-matrix": "^3.4.3", "rbush": "^3.0.1", @@ -2218,11 +2292,12 @@ } }, "node_modules/@antv/g-plugin-svg-renderer": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/@antv/g-plugin-svg-renderer/-/g-plugin-svg-renderer-2.2.10.tgz", - "integrity": "sha512-RC5sGxLa4/GdCjv8lYfrb4xJfaEaE9Q/5po0d5UJm2XvOH66l4dexr6+D6wApMbJRHEsLtNn0MjwubmUPjLOxg==", + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/@antv/g-plugin-svg-renderer/-/g-plugin-svg-renderer-2.2.16.tgz", + "integrity": "sha512-d/zZV+af8e1p1kEvRGtC57dXPZbHKKlyJ12jfnUlEFT+GhKpX3LNehc0LiO81dbpEsiZK9ffqJZMQrqsVAPWZg==", + "license": "MIT", "dependencies": { - "@antv/g-lite": "2.2.10", + "@antv/g-lite": "2.2.16", "@antv/util": "^3.3.5", "@babel/runtime": "^7.25.6", "gl-matrix": "^3.4.3", @@ -2230,14 +2305,15 @@ } }, "node_modules/@antv/g-plugin-svg-renderer/node_modules/@antv/g-lite": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/@antv/g-lite/-/g-lite-2.2.10.tgz", - "integrity": "sha512-XK2zKM1jx9nBQrxg5wxK4EOy7AvCE5c8iz7r+hfqILZn9/Mhrgj63u/YPDPyXjx0G3KUmy7XTY9231tOOtW+Wg==", + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/@antv/g-lite/-/g-lite-2.2.16.tgz", + "integrity": "sha512-473r6S5srkxUiUxI3ZkrM74HMkgyO9+2HR1xtJ75yDOOuT8F6osdXDgy0Or5cWqOlsVjiN3L3DaPnQLHlUGO5A==", + "license": "MIT", "dependencies": { "@antv/g-math": "3.0.0", "@antv/util": "^3.3.5", + "@antv/vendor": "^1.0.3", "@babel/runtime": "^7.25.6", - "d3-color": "^3.1.0", "eventemitter3": "^5.0.1", "gl-matrix": "^3.4.3", "rbush": "^3.0.1", @@ -2272,25 +2348,27 @@ } }, "node_modules/@antv/g-web-animations-api": { - "version": "2.1.15", - "resolved": "https://registry.npmjs.org/@antv/g-web-animations-api/-/g-web-animations-api-2.1.15.tgz", - "integrity": "sha512-aCjFaN8OXE2Ev/k7vOLdnfeKexDSttG86pd3YF98Dx4ovfebnpvTpfb3Q+jIyPb6aWC1G4oWv8wgZZZug+7bIw==", + "version": "2.1.21", + "resolved": "https://registry.npmjs.org/@antv/g-web-animations-api/-/g-web-animations-api-2.1.21.tgz", + "integrity": "sha512-EkIjeEH3QzHkDJn3sz1Mk83PqVQXGe5440mJV42QmnxuFuFcxGVJMi9vS8Te7kCUJl4eSb/eqnNi5AWfDMWm+w==", + "license": "MIT", "dependencies": { - "@antv/g-lite": "2.2.10", + "@antv/g-lite": "2.2.16", "@antv/util": "^3.3.5", "@babel/runtime": "^7.25.6", "tslib": "^2.5.3" } }, "node_modules/@antv/g-web-animations-api/node_modules/@antv/g-lite": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/@antv/g-lite/-/g-lite-2.2.10.tgz", - "integrity": "sha512-XK2zKM1jx9nBQrxg5wxK4EOy7AvCE5c8iz7r+hfqILZn9/Mhrgj63u/YPDPyXjx0G3KUmy7XTY9231tOOtW+Wg==", + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/@antv/g-lite/-/g-lite-2.2.16.tgz", + "integrity": "sha512-473r6S5srkxUiUxI3ZkrM74HMkgyO9+2HR1xtJ75yDOOuT8F6osdXDgy0Or5cWqOlsVjiN3L3DaPnQLHlUGO5A==", + "license": "MIT", "dependencies": { "@antv/g-math": "3.0.0", "@antv/util": "^3.3.5", + "@antv/vendor": "^1.0.3", "@babel/runtime": "^7.25.6", - "d3-color": "^3.1.0", "eventemitter3": "^5.0.1", "gl-matrix": "^3.4.3", "rbush": "^3.0.1", @@ -2298,14 +2376,15 @@ } }, "node_modules/@antv/g/node_modules/@antv/g-lite": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/@antv/g-lite/-/g-lite-2.2.10.tgz", - "integrity": "sha512-XK2zKM1jx9nBQrxg5wxK4EOy7AvCE5c8iz7r+hfqILZn9/Mhrgj63u/YPDPyXjx0G3KUmy7XTY9231tOOtW+Wg==", + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/@antv/g-lite/-/g-lite-2.2.16.tgz", + "integrity": "sha512-473r6S5srkxUiUxI3ZkrM74HMkgyO9+2HR1xtJ75yDOOuT8F6osdXDgy0Or5cWqOlsVjiN3L3DaPnQLHlUGO5A==", + "license": "MIT", "dependencies": { "@antv/g-math": "3.0.0", "@antv/util": "^3.3.5", + "@antv/vendor": "^1.0.3", "@babel/runtime": "^7.25.6", - "d3-color": "^3.1.0", "eventemitter3": "^5.0.1", "gl-matrix": "^3.4.3", "rbush": "^3.0.1", @@ -2513,9 +2592,10 @@ "license": "BSD-3-Clause" }, "node_modules/@antv/g6": { - "version": "5.0.38", - "resolved": "https://registry.npmjs.org/@antv/g6/-/g6-5.0.38.tgz", - "integrity": "sha512-qj6hcvETMbgl9SsxTF9pLsAziHOruSQAmMi+tazuu0f1Cccr4asD6iu1VizOolOOyeLOslhTIxhNtShpgZbjrg==", + "version": "5.0.43", + "resolved": "https://registry.npmjs.org/@antv/g6/-/g6-5.0.43.tgz", + "integrity": "sha512-xlx3P5G74gMhQII44RrWHtu+RIXIwxRRGxeozkd0iqteBdbcpGfGHCRH6TH8Qd084i6GIXc9C1Z1n0XOJlz/uQ==", + "license": "MIT", "dependencies": { "@antv/algorithm": "^0.1.26", "@antv/component": "^2.1.2", @@ -2532,29 +2612,31 @@ } }, "node_modules/@antv/g6-extension-react": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/@antv/g6-extension-react/-/g6-extension-react-0.1.13.tgz", - "integrity": "sha512-pw6/MhzlxQ0bwPDQuUlOgslpviQvYyuHEKV7H+y8cjeH6HaOpqo8Ur/Kh8dB/TtNapelyqE0BO7gcfkEt0zuSA==", + "version": "0.1.18", + "resolved": "https://registry.npmjs.org/@antv/g6-extension-react/-/g6-extension-react-0.1.18.tgz", + "integrity": "sha512-p1hkm6gc6gPp//6alRr6gcERUX0mZQ5KxxErJWy8pCGnuSHr5oDo2Pqq7ugyK6hhH5i/zxebNTnM9uXDvMUiJA==", + "license": "MIT", "dependencies": { "@antv/g": "^6.1.14", "@antv/g-svg": "^2.0.27", "@antv/react-g": "^2.0.30" }, "peerDependencies": { - "@antv/g6": "^5.0.38", + "@antv/g6": "^5.0.43", "react": ">=16.8", "react-dom": ">=16.8" } }, "node_modules/@antv/g6-extension-react/node_modules/@antv/g-lite": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/@antv/g-lite/-/g-lite-2.2.10.tgz", - "integrity": "sha512-XK2zKM1jx9nBQrxg5wxK4EOy7AvCE5c8iz7r+hfqILZn9/Mhrgj63u/YPDPyXjx0G3KUmy7XTY9231tOOtW+Wg==", + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/@antv/g-lite/-/g-lite-2.2.16.tgz", + "integrity": "sha512-473r6S5srkxUiUxI3ZkrM74HMkgyO9+2HR1xtJ75yDOOuT8F6osdXDgy0Or5cWqOlsVjiN3L3DaPnQLHlUGO5A==", + "license": "MIT", "dependencies": { "@antv/g-math": "3.0.0", "@antv/util": "^3.3.5", + "@antv/vendor": "^1.0.3", "@babel/runtime": "^7.25.6", - "d3-color": "^3.1.0", "eventemitter3": "^5.0.1", "gl-matrix": "^3.4.3", "rbush": "^3.0.1", @@ -2562,35 +2644,38 @@ } }, "node_modules/@antv/g6-extension-react/node_modules/@antv/g-plugin-dom-interaction": { - "version": "2.1.15", - "resolved": "https://registry.npmjs.org/@antv/g-plugin-dom-interaction/-/g-plugin-dom-interaction-2.1.15.tgz", - "integrity": "sha512-sxUobdgzst0P4bwSeMf9qiQLMvhtIBsEARAC7viuNNwno2D61TKBaQ/PMEohDlOsqLIbk/xI5Np9XGVwbAnNFQ==", + "version": "2.1.21", + "resolved": "https://registry.npmjs.org/@antv/g-plugin-dom-interaction/-/g-plugin-dom-interaction-2.1.21.tgz", + "integrity": "sha512-Vm8yeNjZ2aNgNH3LwDRExRChpuVv0Wv2zOblUGy5rgyRIh2Fkm8R89pKLmd3GlLo4AF1ZqAGWHiY2WOeMHEEIA==", + "license": "MIT", "dependencies": { - "@antv/g-lite": "2.2.10", + "@antv/g-lite": "2.2.16", "@babel/runtime": "^7.25.6", "tslib": "^2.5.3" } }, "node_modules/@antv/g6-extension-react/node_modules/@antv/g-svg": { - "version": "2.0.28", - "resolved": "https://registry.npmjs.org/@antv/g-svg/-/g-svg-2.0.28.tgz", - "integrity": "sha512-O7oibhMHHLIq/BP2LQVdux4kq17QR7TJU+4ABTD9DtXqEjuNZpoyNLi+LtMnNxgJfyz5tJUJRTU3cfsYNaXakg==", - "dependencies": { - "@antv/g-lite": "2.2.10", - "@antv/g-plugin-dom-interaction": "2.1.15", - "@antv/g-plugin-svg-picker": "2.0.28", - "@antv/g-plugin-svg-renderer": "2.2.10", + "version": "2.0.34", + "resolved": "https://registry.npmjs.org/@antv/g-svg/-/g-svg-2.0.34.tgz", + "integrity": "sha512-jx8BGZ1cNugbI8YMvJXabVauAj++Agzj6YUomTLjz7EE6K9rYwgqRb2YSV7NoRGGTfMqfIcYu+qMCoBWWsNEPg==", + "license": "MIT", + "dependencies": { + "@antv/g-lite": "2.2.16", + "@antv/g-plugin-dom-interaction": "2.1.21", + "@antv/g-plugin-svg-picker": "2.0.34", + "@antv/g-plugin-svg-renderer": "2.2.16", "@antv/util": "^3.3.5", "@babel/runtime": "^7.25.6", "tslib": "^2.5.3" } }, "node_modules/@antv/g6-extension-react/node_modules/@antv/react-g": { - "version": "2.0.31", - "resolved": "https://registry.npmjs.org/@antv/react-g/-/react-g-2.0.31.tgz", - "integrity": "sha512-Z2ok/YHf7pcdRD+/4SyeeWDuSZ/aLPU1L2400pJWJfh8kl3kgXUiVQ85Ox/erCamEO2wVN4/LeaB3X4+xMIVyQ==", + "version": "2.0.37", + "resolved": "https://registry.npmjs.org/@antv/react-g/-/react-g-2.0.37.tgz", + "integrity": "sha512-qXued1ZtJHdf8d6aApMLCMHFCZI0lLTjpv6vEpbUWHOGjHolwDTilQy/207UXu2nFd8VbJvnPNnvVyicWFmiKw==", + "license": "MIT", "dependencies": { - "@antv/g": "6.1.15", + "@antv/g": "6.1.21", "@antv/util": "^3.3.5", "@babel/runtime": "^7.25.6", "gl-matrix": "^3.4.3", @@ -2606,6 +2691,7 @@ "version": "0.26.2", "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.26.2.tgz", "integrity": "sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -2622,23 +2708,12 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" } }, - "node_modules/@antv/graphin": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@antv/graphin/-/graphin-3.0.4.tgz", - "integrity": "sha512-7ce6RDI5Z6ud93yiyS7b+mmFrHJhlkwwNo53kb7P7KoCsnV7ioMONDE6Gw0ROeMSR6TwHtxGZUhHw9wxnPp82Q==", - "dependencies": { - "@antv/g6": "^5.0.28" - }, - "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" - } - }, "node_modules/@antv/graphlib": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@antv/graphlib/-/graphlib-2.0.4.tgz", @@ -2719,6 +2794,64 @@ "tslib": "^2.3.1" } }, + "node_modules/@antv/vendor": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@antv/vendor/-/vendor-1.0.8.tgz", + "integrity": "sha512-lv8uKCP6TxKDQZkZ4OODHN7RTp3ciF4h6u+YT5YzXnoYvh1V52qp9xi0UnHt/UD789RQ9iTyVNvYm+kaxvWOnQ==", + "license": "MIT AND ISC", + "dependencies": { + "@types/d3-array": "^3.2.1", + "@types/d3-color": "^3.1.3", + "@types/d3-dispatch": "^3.0.6", + "@types/d3-dsv": "^3.0.7", + "@types/d3-fetch": "^3.0.7", + "@types/d3-force": "^3.0.10", + "@types/d3-format": "^3.0.4", + "@types/d3-geo": "^3.1.0", + "@types/d3-hierarchy": "^3.1.7", + "@types/d3-interpolate": "^3.0.4", + "@types/d3-path": "^3.1.0", + "@types/d3-quadtree": "^3.0.6", + "@types/d3-random": "^3.0.3", + "@types/d3-scale-chromatic": "^3.1.0", + "@types/d3-shape": "^3.1.7", + "@types/d3-timer": "^3.0.2", + "d3-array": "^3.2.4", + "d3-color": "^3.1.0", + "d3-dispatch": "^3.0.1", + "d3-dsv": "^3.0.1", + "d3-fetch": "^3.0.1", + "d3-force": "^3.0.0", + "d3-force-3d": "^3.0.5", + "d3-format": "^3.1.0", + "d3-geo": "^3.1.1", + "d3-geo-projection": "^4.0.0", + "d3-hierarchy": "^3.1.2", + "d3-interpolate": "^3.0.1", + "d3-path": "^3.1.0", + "d3-quadtree": "^3.0.1", + "d3-random": "^3.0.1", + "d3-regression": "^1.3.10", + "d3-scale-chromatic": "^3.1.0", + "d3-shape": "^3.2.0", + "d3-timer": "^3.0.1" + } + }, + "node_modules/@antv/vendor/node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, + "node_modules/@antv/vendor/node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/@babel/code-frame": { "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", @@ -4985,6 +5118,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/@dnd-kit/accessibility/-/accessibility-3.1.1.tgz", "integrity": "sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==", + "license": "MIT", "dependencies": { "tslib": "^2.0.0" }, @@ -5045,44 +5179,6 @@ "react": ">=16.8.0" } }, - "node_modules/@dotlottie/common": { - "version": "0.7.11", - "license": "MIT", - "dependencies": { - "@dotlottie/dotlottie-js": "^0.7.0", - "@preact/signals-core": "^1.2.3", - "howler": "^2.2.3", - "lottie-web": "^5.12.2", - "xstate": "^4.38.1" - }, - "engines": { - "node": ">18.0.0" - } - }, - "node_modules/@dotlottie/dotlottie-js": { - "version": "0.7.2", - "license": "MIT", - "dependencies": { - "browser-image-hash": "^0.0.5", - "fflate": "^0.8.1", - "sharp": "^0.33.2", - "sharp-phash": "^2.1.0", - "valibot": "^0.13.1" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@dotlottie/react-player": { - "version": "1.6.19", - "license": "MIT", - "dependencies": { - "@dotlottie/common": "0.7.11" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/@emotion/babel-plugin": { "version": "11.11.0", "license": "MIT", @@ -5140,6 +5236,8 @@ }, "node_modules/@emotion/hash": { "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", "license": "MIT" }, "node_modules/@emotion/is-prop-valid": { @@ -5178,6 +5276,8 @@ }, "node_modules/@emotion/unitless": { "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", "license": "MIT" }, "node_modules/@emotion/utils": { @@ -6052,10 +6152,11 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", - "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", + "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -6133,9 +6234,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.20.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.20.0.tgz", - "integrity": "sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==", + "version": "9.21.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.21.0.tgz", + "integrity": "sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==", "dev": true, "license": "MIT", "engines": { @@ -6334,50 +6435,6 @@ "local-pkg": "^0.4.2" } }, - "node_modules/@img/sharp-darwin-arm64": { - "version": "0.33.4", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.0.2" - } - }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.0.2", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "macos": ">=11", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "license": "ISC", @@ -6944,26 +7001,45 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "license": "MIT" }, - "node_modules/@monaco-editor/loader": { - "version": "1.4.0", + "node_modules/@lottiefiles/dotlottie-react": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@lottiefiles/dotlottie-react/-/dotlottie-react-0.13.0.tgz", + "integrity": "sha512-zSOqA/P6MAOjHWTBiQd2T/NAbIFDVM2rsCSVHjjBHvYZ1yB5ehdggUBVnj83Fb99xAgCdcHYWTC1c9Yl70zxMg==", "license": "MIT", "dependencies": { - "state-local": "^1.0.6" + "@lottiefiles/dotlottie-web": "0.40.1" }, "peerDependencies": { - "monaco-editor": ">= 0.21.0 < 1" + "react": "^17 || ^18 || ^19" + } + }, + "node_modules/@lottiefiles/dotlottie-web": { + "version": "0.40.1", + "resolved": "https://registry.npmjs.org/@lottiefiles/dotlottie-web/-/dotlottie-web-0.40.1.tgz", + "integrity": "sha512-iNz1rr8zRTSJ0xCZEPeoCX6YnaNhBdkF7gJWhSa8bwB4NTrYZm0vAuC0jF/aLLhU7q9nf6ykxffrz0Sf4JPSPg==", + "license": "MIT" + }, + "node_modules/@monaco-editor/loader": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.5.0.tgz", + "integrity": "sha512-hKoGSM+7aAc7eRTRjpqAZucPmoNOC4UUbknb/VNoTkEIkCPhqV8LfbsgM1webRM7S/z21eHEx9Fkwx8Z/C/+Xw==", + "license": "MIT", + "dependencies": { + "state-local": "^1.0.6" } }, "node_modules/@monaco-editor/react": { - "version": "4.6.0", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@monaco-editor/react/-/react-4.7.0.tgz", + "integrity": "sha512-cyzXQCtO47ydzxpQtCGSQGOC8Gk3ZUeBXFAxD+CWXYFo5OqZyZUonFl0DwUlTyAfRHntBfw2p3w4s9R6oe1eCA==", "license": "MIT", "dependencies": { - "@monaco-editor/loader": "^1.4.0" + "@monaco-editor/loader": "^1.5.0" }, "peerDependencies": { "monaco-editor": ">= 0.25.0 < 1", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/@naoak/workerize-transferable": { @@ -7769,14 +7845,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@preact/signals-core": { - "version": "1.8.0", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/preact" - } - }, "node_modules/@radix-ui/popper": { "version": "0.0.10", "license": "MIT", @@ -7787,6 +7855,8 @@ }, "node_modules/@rc-component/async-validator": { "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@rc-component/async-validator/-/async-validator-5.0.4.tgz", + "integrity": "sha512-qgGdcVIF604M9EqjNF0hbUTz42bz/RDtxWdWuU5EQe3hi7M8ob54B6B35rOsvX5eSvIHIzT9iH1R3n+hk3CGfg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.24.4" @@ -7797,6 +7867,8 @@ }, "node_modules/@rc-component/color-picker": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rc-component/color-picker/-/color-picker-2.0.1.tgz", + "integrity": "sha512-WcZYwAThV/b2GISQ8F+7650r5ZZJ043E57aVBFkQ+kSY4C6wdofXgB0hBx+GPGpIU0Z81eETNoDUJMr7oy/P8Q==", "license": "MIT", "dependencies": { "@ant-design/fast-color": "^2.0.6", @@ -7837,6 +7909,8 @@ }, "node_modules/@rc-component/mutate-observer": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rc-component/mutate-observer/-/mutate-observer-1.1.0.tgz", + "integrity": "sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.0", @@ -7853,6 +7927,8 @@ }, "node_modules/@rc-component/portal": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@rc-component/portal/-/portal-1.1.2.tgz", + "integrity": "sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.0", @@ -7869,6 +7945,8 @@ }, "node_modules/@rc-component/qrcode": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rc-component/qrcode/-/qrcode-1.0.0.tgz", + "integrity": "sha512-L+rZ4HXP2sJ1gHMGHjsg9jlYBX/SLN2D6OxP9Zn3qgtpMWtO2vUfxVFwiogHpAIqs54FnALxraUy/BCO1yRIgg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.24.7", @@ -7885,6 +7963,8 @@ }, "node_modules/@rc-component/tour": { "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@rc-component/tour/-/tour-1.15.1.tgz", + "integrity": "sha512-Tr2t7J1DKZUpfJuDZWHxyxWpfmj8EZrqSgyMZ+BCdvKZ6r1UDsfU46M/iWAAFBy961Ssfom2kv5f3UcjIL2CmQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.0", @@ -7993,37 +8073,11 @@ "node_modules/@remix-run/router": { "version": "1.15.3", "license": "MIT", + "peer": true, "engines": { "node": ">=14.0.0" } }, - "node_modules/@rgba-image/common": { - "version": "0.1.13", - "license": "MIT" - }, - "node_modules/@rgba-image/copy": { - "version": "0.1.3", - "license": "MIT", - "dependencies": { - "@rgba-image/common": "^0.1.13" - } - }, - "node_modules/@rgba-image/create-image": { - "version": "0.1.1", - "license": "MIT", - "dependencies": { - "@rgba-image/common": "^0.1.0" - } - }, - "node_modules/@rgba-image/lanczos": { - "version": "0.1.1", - "license": "MIT", - "dependencies": { - "@rgba-image/common": "^0.1.13", - "@rgba-image/copy": "^0.1.2", - "@rgba-image/create-image": "^0.1.1" - } - }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.34.8", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.8.tgz", @@ -9081,6 +9135,108 @@ "@types/node": "*" } }, + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-dispatch": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz", + "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==", + "license": "MIT" + }, + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "license": "MIT" + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", + "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", + "license": "MIT", + "dependencies": { + "@types/d3-dsv": "*" + } + }, + "node_modules/@types/d3-force": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", + "license": "MIT" + }, + "node_modules/@types/d3-format": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "license": "MIT" + }, + "node_modules/@types/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", + "license": "MIT", + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-hierarchy": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "license": "MIT" + }, + "node_modules/@types/d3-random": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", + "license": "MIT" + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", + "license": "MIT" + }, + "node_modules/@types/d3-shape": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", + "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, "node_modules/@types/d3-timer": { "version": "2.0.3", "license": "MIT" @@ -9126,6 +9282,12 @@ "@types/send": "*" } }, + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "license": "MIT" + }, "node_modules/@types/glob": { "version": "7.2.0", "license": "MIT", @@ -9316,9 +9478,9 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "18.3.12", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", - "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", + "version": "18.3.18", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz", + "integrity": "sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==", "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -9326,12 +9488,13 @@ } }, "node_modules/@types/react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==", + "version": "18.3.5", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.5.tgz", + "integrity": "sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==", "devOptional": true, - "dependencies": { - "@types/react": "*" + "license": "MIT", + "peerDependencies": { + "@types/react": "^18.0.0" } }, "node_modules/@types/react-helmet": { @@ -9350,7 +9513,9 @@ } }, "node_modules/@types/react-redux": { - "version": "7.1.33", + "version": "7.1.34", + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.34.tgz", + "integrity": "sha512-GdFaVjEbYv4Fthm2ZLvj1VSCedV7TqE5y1kNwnjSdBOTXuRSgowux6J8TAct15T3CKBr63UMk+2CO7ilRhyrAQ==", "license": "MIT", "dependencies": { "@types/hoist-non-react-statics": "^3.3.0", @@ -20007,26 +20172,6 @@ "node": ">=8" } }, - "node_modules/ahooks": { - "version": "3.7.10", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.21.0", - "dayjs": "^1.9.1", - "intersection-observer": "^0.12.0", - "js-cookie": "^2.x.x", - "lodash": "^4.17.21", - "resize-observer-polyfill": "^1.5.1", - "screenfull": "^5.0.0", - "tslib": "^2.4.1" - }, - "engines": { - "node": ">=8.0.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/ajv": { "version": "6.12.6", "license": "MIT", @@ -20367,6 +20512,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/@ant-design/colors": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-6.0.0.tgz", + "integrity": "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==", "dev": true, "license": "MIT", "peer": true, @@ -20376,6 +20523,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/@ant-design/dark-theme": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@ant-design/dark-theme/-/dark-theme-2.0.2.tgz", + "integrity": "sha512-wDzyDA8hky26PKMZ2pcqGq1rfprObGRbZcdh8C+aYH9JA7dzeQvKJ5CctOdjQKl/YyyR7HW5nFUcZfNOayfORw==", "dev": true, "license": "MIT", "peerDependencies": { @@ -20383,7 +20532,9 @@ } }, "node_modules/antd-pro-merge-less/node_modules/@ant-design/icons": { - "version": "4.8.2", + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-4.8.3.tgz", + "integrity": "sha512-HGlIQZzrEbAhpJR6+IGdzfbPym94Owr6JZkJ2QCCnOkPVIWMO2xgIVcOKnl8YcpijIo39V7l2qQL5fmtw56cMw==", "dev": true, "license": "MIT", "peer": true, @@ -20404,13 +20555,15 @@ } }, "node_modules/antd-pro-merge-less/node_modules/antd": { - "version": "4.24.15", + "version": "4.24.16", + "resolved": "https://registry.npmjs.org/antd/-/antd-4.24.16.tgz", + "integrity": "sha512-zZrK4UYxHtU6tGOOf0uG/kBRx1kTvypfuSB3GqE/SBQxFhZ/TZ+yj7Z1qwI8vGfMtUUJdLeuoCAqGDa1zPsXnQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "@ant-design/colors": "^6.0.0", - "@ant-design/icons": "^4.8.1", + "@ant-design/icons": "^4.8.2", "@ant-design/react-slick": "~1.0.2", "@babel/runtime": "^7.18.3", "@ctrl/tinycolor": "^3.6.1", @@ -20437,7 +20590,7 @@ "rc-progress": "~3.4.2", "rc-rate": "~2.9.3", "rc-resize-observer": "^1.3.1", - "rc-segmented": "~2.1.2", + "rc-segmented": "~2.3.0", "rc-select": "~14.1.18", "rc-slider": "~10.0.1", "rc-steps": "~5.0.0", @@ -20449,7 +20602,7 @@ "rc-tree": "~5.7.12", "rc-tree-select": "~5.5.5", "rc-trigger": "^5.3.4", - "rc-upload": "~4.3.5", + "rc-upload": "~4.3.6", "rc-util": "^5.37.0", "scroll-into-view-if-needed": "^2.2.25" }, @@ -20464,6 +20617,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/compute-scroll-into-view": { "version": "1.0.20", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz", + "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==", "dev": true, "license": "MIT", "peer": true @@ -20534,6 +20689,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-cascader": { "version": "3.7.3", + "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.7.3.tgz", + "integrity": "sha512-KBpT+kzhxDW+hxPiNk4zaKa99+Lie2/8nnI11XF+FIOPl4Bj9VlFZi61GrnWzhLGA7VEN+dTxAkNOjkySDa0dA==", "dev": true, "license": "MIT", "peer": true, @@ -20552,6 +20709,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-checkbox": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-3.0.1.tgz", + "integrity": "sha512-k7nxDWxYF+jDI0ZcCvuvj71xONmWRVe5+1MKcERRR9MRyP3tZ69b+yUCSXXh+sik4/Hc9P5wHr2nnUoGS2zBjA==", "dev": true, "license": "MIT", "peer": true, @@ -20567,6 +20726,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-collapse": { "version": "3.4.2", + "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.4.2.tgz", + "integrity": "sha512-jpTwLgJzkhAgp2Wpi3xmbTbbYExg6fkptL67Uu5LCRVEj6wqmy0DHTjjeynsjOLsppHGHu41t1ELntZ0lEvS/Q==", "dev": true, "license": "MIT", "peer": true, @@ -20583,7 +20744,9 @@ } }, "node_modules/antd-pro-merge-less/node_modules/rc-dialog": { - "version": "9.0.2", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-9.0.4.tgz", + "integrity": "sha512-pmnPRZKd9CGzGgf4a1ysBvMhxm8Afx5fF6M7AzLtJ0qh8X1bshurDlqnK4MBNAB4hAeAMMbz6Ytb1rkGMvKFbQ==", "dev": true, "license": "MIT", "peer": true, @@ -20601,6 +20764,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-drawer": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-6.3.0.tgz", + "integrity": "sha512-uBZVb3xTAR+dBV53d/bUhTctCw3pwcwJoM7g5aX+7vgwt2zzVzoJ6aqFjYJpBlZ9zp0dVYN8fV+hykFE7c4lig==", "dev": true, "license": "MIT", "peer": true, @@ -20618,6 +20783,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-dropdown": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-4.0.1.tgz", + "integrity": "sha512-OdpXuOcme1rm45cR0Jzgfl1otzmU4vuBVb+etXM8vcaULGokAKVpKlw8p6xzspG7jGd/XxShvq+N3VNEfk/l5g==", "dev": true, "license": "MIT", "peer": true, @@ -20634,6 +20801,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-field-form": { "version": "1.38.2", + "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.38.2.tgz", + "integrity": "sha512-O83Oi1qPyEv31Sg+Jwvsj6pXc8uQI2BtIAkURr5lvEYHVggXJhdU/nynK8wY1gbw0qR48k731sN5ON4egRCROA==", "dev": true, "license": "MIT", "peer": true, @@ -20652,6 +20821,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-image": { "version": "5.13.0", + "resolved": "https://registry.npmjs.org/rc-image/-/rc-image-5.13.0.tgz", + "integrity": "sha512-iZTOmw5eWo2+gcrJMMcnd7SsxVHl3w5xlyCgsULUdJhJbnuI8i/AL0tVOsE7aLn9VfOh1qgDT3mC2G75/c7mqg==", "dev": true, "license": "MIT", "peer": true, @@ -20670,6 +20841,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-input": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/rc-input/-/rc-input-0.1.4.tgz", + "integrity": "sha512-FqDdNz+fV2dKNgfXzcSLKvC+jEs1709t7nD+WdfjrdSaOcefpgc7BUJYadc3usaING+b7ediMTfKxuJBsEFbXA==", "dev": true, "license": "MIT", "peer": true, @@ -20685,6 +20858,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-input-number": { "version": "7.3.11", + "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-7.3.11.tgz", + "integrity": "sha512-aMWPEjFeles6PQnMqP5eWpxzsvHm9rh1jQOWXExUEIxhX62Fyl/ptifLHOn17+waDG1T/YUb6flfJbvwRhHrbA==", "dev": true, "license": "MIT", "peer": true, @@ -20700,6 +20875,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-mentions": { "version": "1.13.1", + "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-1.13.1.tgz", + "integrity": "sha512-FCkaWw6JQygtOz0+Vxz/M/NWqrWHB9LwqlY2RtcuFqWJNFK9njijOOzTSsBGANliGufVUzx/xuPHmZPBV0+Hgw==", "dev": true, "license": "MIT", "peer": true, @@ -20718,6 +20895,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-menu": { "version": "9.8.4", + "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-9.8.4.tgz", + "integrity": "sha512-lmw2j8I2fhdIzHmC9ajfImfckt0WDb2KVJJBBRIsxPEw2kGkEfjLMUoB1NgiNT/Q5cC8PdjGOGQjHJIJMwyNMw==", "dev": true, "license": "MIT", "peer": true, @@ -20736,6 +20915,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-notification": { "version": "4.6.1", + "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-4.6.1.tgz", + "integrity": "sha512-NSmFYwrrdY3+un1GvDAJQw62Xi9LNMSsoQyo95tuaYrcad5Bn9gJUL8AREufRxSQAQnr64u3LtP3EUyLYT6bhw==", "dev": true, "license": "MIT", "peer": true, @@ -20755,6 +20936,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-pagination": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-3.2.0.tgz", + "integrity": "sha512-5tIXjB670WwwcAJzAqp2J+cOBS9W3cH/WU1EiYwXljuZ4vtZXKlY2Idq8FZrnYBz8KhN3vwPo9CoV/SJS6SL1w==", "dev": true, "license": "MIT", "peer": true, @@ -20769,6 +20952,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-picker": { "version": "2.7.6", + "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-2.7.6.tgz", + "integrity": "sha512-H9if/BUJUZBOhPfWcPeT15JUI3/ntrG9muzERrXDkSoWmDj4yzmBvumozpxYrHwjcKnjyDGAke68d+whWwvhHA==", "dev": true, "license": "MIT", "peer": true, @@ -20792,6 +20977,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-progress": { "version": "3.4.2", + "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-3.4.2.tgz", + "integrity": "sha512-iAGhwWU+tsayP+Jkl9T4+6rHeQTG9kDz8JAHZk4XtQOcYN5fj9H34NXNEdRdZx94VUDHMqCb1yOIvi8eJRh67w==", "dev": true, "license": "MIT", "peer": true, @@ -20807,6 +20994,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-rate": { "version": "2.9.3", + "resolved": "https://registry.npmjs.org/rc-rate/-/rc-rate-2.9.3.tgz", + "integrity": "sha512-2THssUSnRhtqIouQIIXqsZGzRczvp4WsH4WvGuhiwm+LG2fVpDUJliP9O1zeDOZvYfBE/Bup4SgHun/eCkbjgQ==", "dev": true, "license": "MIT", "peer": true, @@ -20824,7 +21013,9 @@ } }, "node_modules/antd-pro-merge-less/node_modules/rc-segmented": { - "version": "2.1.2", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/rc-segmented/-/rc-segmented-2.3.0.tgz", + "integrity": "sha512-I3FtM5Smua/ESXutFfb8gJ8ZPcvFR+qUgeeGFQHBOvRiRKyAk4aBE5nfqrxXx+h8/vn60DQjOt6i4RNtrbOobg==", "dev": true, "license": "MIT", "peer": true, @@ -20841,6 +21032,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-select": { "version": "14.1.18", + "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-14.1.18.tgz", + "integrity": "sha512-4JgY3oG2Yz68ECMUSCON7mtxuJvCSj+LJpHEg/AONaaVBxIIrmI/ZTuMJkyojall/X50YdBe5oMKqHHPNiPzEg==", "dev": true, "license": "MIT", "peer": true, @@ -20863,6 +21056,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-slider": { "version": "10.0.1", + "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-10.0.1.tgz", + "integrity": "sha512-igTKF3zBet7oS/3yNiIlmU8KnZ45npmrmHlUUio8PNbIhzMcsh+oE/r2UD42Y6YD2D/s+kzCQkzQrPD6RY435Q==", "dev": true, "license": "MIT", "peer": true, @@ -20882,6 +21077,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-steps": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-5.0.0.tgz", + "integrity": "sha512-9TgRvnVYirdhbV0C3syJFj9EhCRqoJAsxt4i1rED5o8/ZcSv5TLIYyo4H8MCjLPvbe2R+oBAm/IYBEtC+OS1Rw==", "dev": true, "license": "MIT", "peer": true, @@ -20900,6 +21097,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-switch": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/rc-switch/-/rc-switch-3.2.2.tgz", + "integrity": "sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A==", "dev": true, "license": "MIT", "peer": true, @@ -20915,6 +21114,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-table": { "version": "7.26.0", + "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.26.0.tgz", + "integrity": "sha512-0cD8e6S+DTGAt5nBZQIPFYEaIukn17sfa5uFL98faHlH/whZzD8ii3dbFL4wmUDEL4BLybhYop+QUfZJ4CPvNQ==", "dev": true, "license": "MIT", "peer": true, @@ -20935,6 +21136,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-tabs": { "version": "12.5.10", + "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-12.5.10.tgz", + "integrity": "sha512-Ay0l0jtd4eXepFH9vWBvinBjqOpqzcsJTerBGwJy435P2S90Uu38q8U/mvc1sxUEVOXX5ZCFbxcWPnfG3dH+tQ==", "dev": true, "license": "MIT", "peer": true, @@ -20957,6 +21160,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-textarea": { "version": "0.4.7", + "resolved": "https://registry.npmjs.org/rc-textarea/-/rc-textarea-0.4.7.tgz", + "integrity": "sha512-IQPd1CDI3mnMlkFyzt2O4gQ2lxUsnBAeJEoZGJnkkXgORNqyM9qovdrCj9NzcRfpHgLdzaEbU3AmobNFGUznwQ==", "dev": true, "license": "MIT", "peer": true, @@ -20974,6 +21179,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-tooltip": { "version": "5.2.2", + "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-5.2.2.tgz", + "integrity": "sha512-jtQzU/18S6EI3lhSGoDYhPqNpWajMtS5VV/ld1LwyfrDByQpYmw/LW6U7oFXXLukjfDHQ7Ju705A82PRNFWYhg==", "dev": true, "license": "MIT", "peer": true, @@ -20989,6 +21196,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-tree": { "version": "5.7.12", + "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-5.7.12.tgz", + "integrity": "sha512-LXA5nY2hG5koIAlHW5sgXgLpOMz+bFRbnZZ+cCg0tQs4Wv1AmY7EDi1SK7iFXhslYockbqUerQan82jljoaItg==", "dev": true, "license": "MIT", "peer": true, @@ -21009,6 +21218,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-tree-select": { "version": "5.5.5", + "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-5.5.5.tgz", + "integrity": "sha512-k2av7jF6tW9bIO4mQhaVdV4kJ1c54oxV3/hHVU+oD251Gb5JN+m1RbJFTMf1o0rAFqkvto33rxMdpafaGKQRJw==", "dev": true, "license": "MIT", "peer": true, @@ -21026,6 +21237,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/rc-upload": { "version": "4.3.6", + "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-4.3.6.tgz", + "integrity": "sha512-Bt7ESeG5tT3IY82fZcP+s0tQU2xmo1W6P3S8NboUUliquJLQYLkUcsaExi3IlBVr43GQMCjo30RA2o0i70+NjA==", "dev": true, "license": "MIT", "peer": true, @@ -21041,6 +21254,8 @@ }, "node_modules/antd-pro-merge-less/node_modules/scroll-into-view-if-needed": { "version": "2.2.31", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz", + "integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==", "dev": true, "license": "MIT", "peer": true, @@ -22130,15 +22345,6 @@ "version": "1.1.0", "license": "MIT" }, - "node_modules/browser-image-hash": { - "version": "0.0.5", - "license": "MIT", - "dependencies": { - "@rgba-image/lanczos": "^0.1.0", - "decimal.js": "^10.2.0", - "wasm-imagemagick": "^1.2.3" - } - }, "node_modules/browserify-aes": { "version": "1.2.0", "license": "MIT", @@ -23226,17 +23432,6 @@ "devOptional": true, "license": "MIT" }, - "node_modules/color": { - "version": "4.2.3", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, "node_modules/color-convert": { "version": "2.0.1", "license": "MIT", @@ -24209,6 +24404,18 @@ "version": "1.0.7", "license": "BSD-3-Clause" }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/d3-force": { "version": "3.0.0", "license": "ISC", @@ -24257,6 +24464,27 @@ "node": ">=12" } }, + "node_modules/d3-geo-projection": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-4.0.0.tgz", + "integrity": "sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==", + "license": "ISC", + "dependencies": { + "commander": "7", + "d3-array": "1 - 3", + "d3-geo": "1.12.0 - 3" + }, + "bin": { + "geo2svg": "bin/geo2svg.js", + "geograticule": "bin/geograticule.js", + "geoproject": "bin/geoproject.js", + "geoquantize": "bin/geoquantize.js", + "geostitch": "bin/geostitch.js" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/d3-hierarchy": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", @@ -24301,6 +24529,15 @@ "node": ">=12" } }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/d3-regression": { "version": "1.3.10", "license": "BSD-3-Clause" @@ -24517,6 +24754,7 @@ }, "node_modules/decimal.js": { "version": "10.4.3", + "dev": true, "license": "MIT" }, "node_modules/decode-uri-component": { @@ -24825,13 +25063,6 @@ "node": ">=8" } }, - "node_modules/detect-libc": { - "version": "2.0.3", - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, "node_modules/detect-newline": { "version": "3.1.0", "license": "MIT", @@ -27077,10 +27308,6 @@ "node": "^12.20 || >= 14.13" } }, - "node_modules/fflate": { - "version": "0.8.2", - "license": "MIT" - }, "node_modules/figures": { "version": "3.2.0", "dev": true, @@ -27502,9 +27729,9 @@ } }, "node_modules/framer-motion": { - "version": "12.4.5", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.4.5.tgz", - "integrity": "sha512-9+8wglyIJFeUpVg4U8Ohvoo5x7zmvRqawWXhEUThcYdwL/5A1/OkLvQo68Zz5taUE11HKG/Ex+LPaN2+fMkRdA==", + "version": "12.4.7", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.4.7.tgz", + "integrity": "sha512-VhrcbtcAMXfxlrjeHPpWVu2+mkcoR31e02aNSR7OUS/hZAciKa8q6o3YN2mA1h+jjscRsSyKvX6E1CiY/7OLMw==", "license": "MIT", "dependencies": { "motion-dom": "^12.4.5", @@ -28293,10 +28520,6 @@ "url": "https://jaywcjlove.github.io/#/sponsor" } }, - "node_modules/howler": { - "version": "2.2.4", - "license": "MIT" - }, "node_modules/hpack.js": { "version": "2.1.6", "license": "MIT", @@ -28847,6 +29070,8 @@ }, "node_modules/intersection-observer": { "version": "0.12.2", + "resolved": "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.12.2.tgz", + "integrity": "sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg==", "license": "Apache-2.0" }, "node_modules/intl": { @@ -30622,8 +30847,13 @@ } }, "node_modules/js-cookie": { - "version": "2.2.1", - "license": "MIT" + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "license": "MIT", + "engines": { + "node": ">=14" + } }, "node_modules/js-sdsl": { "version": "4.4.2", @@ -31961,10 +32191,6 @@ "loose-envify": "cli.js" } }, - "node_modules/lottie-web": { - "version": "5.12.2", - "license": "MIT" - }, "node_modules/loupe": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", @@ -34143,13 +34369,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-map": { - "version": "2.1.0", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/p-queue": { "version": "6.6.2", "dev": true, @@ -36750,9 +36969,9 @@ } }, "node_modules/prettier": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.1.tgz", - "integrity": "sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.2.tgz", + "integrity": "sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==", "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" @@ -37274,6 +37493,8 @@ }, "node_modules/rc-align": { "version": "4.0.15", + "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-4.0.15.tgz", + "integrity": "sha512-wqJtVH60pka/nOX7/IspElA8gjPNQKIx/ZqJ6heATCkXpe1Zg4cPVrMD2vC96wjsFFL8WsmhPbx9tdMo1qqlIA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.1", @@ -37387,6 +37608,8 @@ }, "node_modules/rc-dialog": { "version": "9.6.0", + "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-9.6.0.tgz", + "integrity": "sha512-ApoVi9Z8PaCQg6FsUzS8yvBEQy0ZL2PkuvAgrmohPkN3okps5WZ5WQWPc1RNuiOKaAYv8B97ACdsFU5LizzCqg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.1", @@ -37402,6 +37625,8 @@ }, "node_modules/rc-drawer": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-7.2.0.tgz", + "integrity": "sha512-9lOQ7kBekEJRdEpScHvtmEtXnAsy+NGDXiRWc2ZVC7QXAazNVbeT4EraQKYwCME8BJLa8Bxqxvs5swwyOepRwg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.23.9", @@ -37458,6 +37683,8 @@ }, "node_modules/rc-image": { "version": "7.11.0", + "resolved": "https://registry.npmjs.org/rc-image/-/rc-image-7.11.0.tgz", + "integrity": "sha512-aZkTEZXqeqfPZtnSdNUnKQA0N/3MbgR7nUnZ+/4MfSFWPFHZau4p5r5ShaI0KPEMnNjv4kijSCFq/9wtJpwykw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.11.2", @@ -37576,7 +37803,9 @@ } }, "node_modules/rc-overflow": { - "version": "1.3.2", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.4.1.tgz", + "integrity": "sha512-3MoPQQPV1uKyOMVNd6SZfONi+f3st0r8PksexIdBTeIYbMX0Jr+k7pHEDvsXtR4BpCv90/Pv2MovVNhktKrwvw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.11.1", @@ -37605,9 +37834,9 @@ } }, "node_modules/rc-picker": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-4.11.1.tgz", - "integrity": "sha512-qHaZrHrYjAVwMcKqMXJz9xHifQgQpKSav0E1ejOe3SFTHZggPlmKzLnA5i//Y4DEumR4HZEsePSOdOlmX1JvAw==", + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-4.11.2.tgz", + "integrity": "sha512-Cwa3frWpefhESBF20HBJtvWx3q1hCrMxSUrzuuWMTGoZVPhQllGEp2IUfzo9jC5LKm4kJx7IrH8q/W/y9wClAw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.24.7", @@ -37645,6 +37874,8 @@ }, "node_modules/rc-progress": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-4.0.0.tgz", + "integrity": "sha512-oofVMMafOCokIUIBnZLNcOZFsABaUw8PPrf1/y0ZBvKZNpOiu5h4AO9vv11Sw0p4Hb3D0yGWuEattcQGtNJ/aw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.1", @@ -37759,6 +37990,8 @@ }, "node_modules/rc-steps": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-6.0.1.tgz", + "integrity": "sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.16.7", @@ -37784,6 +38017,8 @@ }, "node_modules/rc-switch": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rc-switch/-/rc-switch-4.1.0.tgz", + "integrity": "sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.21.0", @@ -37910,6 +38145,8 @@ }, "node_modules/rc-trigger": { "version": "5.3.4", + "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.3.4.tgz", + "integrity": "sha512-mQv+vas0TwKcjAO2izNPkqR4j86OemLRmvL2nOzdP9OWNWA1ivoTt5hzFqYNW9zACwmTezRiN8bttrC7cZzYSw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.3", @@ -37947,6 +38184,8 @@ }, "node_modules/rc-upload": { "version": "4.8.1", + "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-4.8.1.tgz", + "integrity": "sha512-toEAhwl4hjLAI1u8/CgKWt30BR06ulPa4iGQSMvSXoHzO88gPCslxqV/mnn4gJU7PDoltGIC9Eh+wkeudqgHyw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.3", @@ -37973,11 +38212,15 @@ } }, "node_modules/rc-util/node_modules/react-is": { - "version": "18.2.0", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "license": "MIT" }, "node_modules/rc-virtual-list": { - "version": "3.14.2", + "version": "3.18.2", + "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.18.2.tgz", + "integrity": "sha512-SkPabqstOQgJ2Q2Ob3eDPIHsNrDzQZFl8mzHiXuNablyYwddVU33Ws6oxoA7Fi/6pZeEYonrLEUiJGr/6aBVaw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.0", @@ -37995,6 +38238,8 @@ }, "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==", "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" @@ -38004,9 +38249,10 @@ } }, "node_modules/react-confetti": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/react-confetti/-/react-confetti-6.2.2.tgz", - "integrity": "sha512-K+kTyOPgX+ZujMZ+Rmb7pZdHBvg+DzinG/w4Eh52WOB8/pfO38efnnrtEZNJmjTvLxc16RBYO+tPM68Fg8viBA==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/react-confetti/-/react-confetti-6.2.3.tgz", + "integrity": "sha512-Jt6Fy3jE7FrpKxeDQ3oh36Bz6LoYt4o+vU578ghuF//NxADlcauDYvWr24S8hHKnQ90Uv01XXOngnKVBdZ73zQ==", + "license": "MIT", "dependencies": { "tween-functions": "^1.2.0" }, @@ -38080,6 +38326,8 @@ }, "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==", "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", @@ -38111,7 +38359,9 @@ }, "node_modules/react-is": { "version": "17.0.2", - "license": "MIT" + "dev": true, + "license": "MIT", + "peer": true }, "node_modules/react-js-cron": { "version": "5.0.1", @@ -38156,29 +38406,6 @@ "react-tween-state": "^0.1.5" } }, - "node_modules/react-redux": { - "version": "7.2.9", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.15.4", - "@types/react-redux": "^7.1.20", - "hoist-non-react-statics": "^3.3.2", - "loose-envify": "^1.4.0", - "prop-types": "^15.7.2", - "react-is": "^17.0.2" - }, - "peerDependencies": { - "react": "^16.8.3 || ^17 || ^18" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - }, - "react-native": { - "optional": true - } - } - }, "node_modules/react-refresh": { "version": "0.14.2", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", @@ -38191,6 +38418,7 @@ "node_modules/react-router": { "version": "6.22.3", "license": "MIT", + "peer": true, "dependencies": { "@remix-run/router": "1.15.3" }, @@ -38215,11 +38443,13 @@ } }, "node_modules/react-router-dom": { - "version": "6.22.3", + "version": "6.29.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.29.0.tgz", + "integrity": "sha512-pkEbJPATRJ2iotK+wUwHfy0xs2T59YPEN8BQxVCPeBZvK7kfPESRc/nyxzdcxR17hXgUPYx2whMwl+eo9cUdnQ==", "license": "MIT", "dependencies": { - "@remix-run/router": "1.15.3", - "react-router": "6.22.3" + "@remix-run/router": "1.22.0", + "react-router": "6.29.0" }, "engines": { "node": ">=14.0.0" @@ -38229,6 +38459,30 @@ "react-dom": ">=16.8" } }, + "node_modules/react-router-dom/node_modules/@remix-run/router": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.22.0.tgz", + "integrity": "sha512-MBOl8MeOzpK0HQQQshKB7pABXbmyHizdTpqnrIseTbsv0nAepwC2ENZa1aaBExNQcpLoXmWthhak8SABLzvGPw==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/react-router-dom/node_modules/react-router": { + "version": "6.29.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.29.0.tgz", + "integrity": "sha512-DXZJoE0q+KyeVw75Ck6GkPxFak63C4fGqZGNijnWgzB/HzSP1ZfTlBj5COaGWwhrMQ/R8bXiq5Ooy4KG+ReyjQ==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.22.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, "node_modules/react-router-redux": { "version": "5.0.0-alpha.9", "license": "MIT", @@ -39651,6 +39905,8 @@ }, "node_modules/scheduler": { "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" @@ -39682,6 +39938,8 @@ }, "node_modules/screenfull": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz", + "integrity": "sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -39702,7 +39960,9 @@ "license": "MIT" }, "node_modules/semver": { - "version": "7.6.3", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -39850,54 +40110,6 @@ "version": "1.1.0", "license": "MIT" }, - "node_modules/sharp": { - "version": "0.33.4", - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.3", - "semver": "^7.6.0" - }, - "engines": { - "libvips": ">=8.15.2", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.33.4", - "@img/sharp-darwin-x64": "0.33.4", - "@img/sharp-libvips-darwin-arm64": "1.0.2", - "@img/sharp-libvips-darwin-x64": "1.0.2", - "@img/sharp-libvips-linux-arm": "1.0.2", - "@img/sharp-libvips-linux-arm64": "1.0.2", - "@img/sharp-libvips-linux-s390x": "1.0.2", - "@img/sharp-libvips-linux-x64": "1.0.2", - "@img/sharp-libvips-linuxmusl-arm64": "1.0.2", - "@img/sharp-libvips-linuxmusl-x64": "1.0.2", - "@img/sharp-linux-arm": "0.33.4", - "@img/sharp-linux-arm64": "0.33.4", - "@img/sharp-linux-s390x": "0.33.4", - "@img/sharp-linux-x64": "0.33.4", - "@img/sharp-linuxmusl-arm64": "0.33.4", - "@img/sharp-linuxmusl-x64": "0.33.4", - "@img/sharp-wasm32": "0.33.4", - "@img/sharp-win32-ia32": "0.33.4", - "@img/sharp-win32-x64": "0.33.4" - } - }, - "node_modules/sharp-phash": { - "version": "2.1.0", - "license": "MIT", - "engines": { - "node": ">= 10" - }, - "peerDependencies": { - "sharp": ">= 0.25.4" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "license": "MIT", @@ -40641,13 +40853,6 @@ "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", "license": "MIT" }, - "node_modules/stack-generator": { - "version": "2.0.10", - "license": "MIT", - "dependencies": { - "stackframe": "^1.3.4" - } - }, "node_modules/stack-utils": { "version": "2.0.6", "devOptional": true, @@ -40678,32 +40883,10 @@ "version": "1.3.4", "license": "MIT" }, - "node_modules/stacktrace-gps": { - "version": "3.1.2", - "license": "MIT", - "dependencies": { - "source-map": "0.5.6", - "stackframe": "^1.3.4" - } - }, - "node_modules/stacktrace-gps/node_modules/source-map": { - "version": "0.5.6", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stacktrace-js": { - "version": "2.0.2", - "license": "MIT", - "dependencies": { - "error-stack-parser": "^2.0.6", - "stack-generator": "^2.0.5", - "stacktrace-gps": "^3.0.4" - } - }, "node_modules/state-local": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz", + "integrity": "sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==", "license": "MIT" }, "node_modules/statuses": { @@ -41146,16 +41329,17 @@ "license": "MIT" }, "node_modules/styled-components": { - "version": "6.1.13", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.13.tgz", - "integrity": "sha512-M0+N2xSnAtwcVAQeFEsGWFFxXDftHUD7XrKla06QbpUMmbmtFBMMTcKWvFXtWxuD5qQkB8iU5gk6QASlx2ZRMw==", + "version": "6.1.15", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.15.tgz", + "integrity": "sha512-PpOTEztW87Ua2xbmLa7yssjNyUF9vE7wdldRfn1I2E6RTkqknkBYpj771OxM/xrvRGinLy2oysa7GOd7NcZZIA==", + "license": "MIT", "dependencies": { "@emotion/is-prop-valid": "1.2.2", "@emotion/unitless": "0.8.1", "@types/stylis": "4.2.5", "css-to-react-native": "3.2.0", "csstype": "3.1.3", - "postcss": "8.4.38", + "postcss": "8.4.49", "shallowequal": "1.1.0", "stylis": "4.3.2", "tslib": "2.6.2" @@ -41175,12 +41359,19 @@ "node_modules/styled-components/node_modules/@emotion/unitless": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", - "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==", + "license": "MIT" + }, + "node_modules/styled-components/node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" }, "node_modules/styled-components/node_modules/postcss": { - "version": "8.4.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "funding": [ { "type": "opencollective", @@ -41195,10 +41386,11 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.2.0" + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -41207,7 +41399,8 @@ "node_modules/styled-components/node_modules/stylis": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz", - "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==" + "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==", + "license": "MIT" }, "node_modules/stylelint": { "version": "16.2.1", @@ -41736,15 +41929,6 @@ "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, - "node_modules/swr/node_modules/use-sync-external-store": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz", - "integrity": "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==", - "license": "MIT", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, "node_modules/symbol-observable": { "version": "1.2.0", "license": "MIT", @@ -42381,7 +42565,9 @@ } }, "node_modules/ts-jest": { - "version": "29.2.5", + "version": "29.2.6", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.6.tgz", + "integrity": "sha512-yTNZVZqc8lSixm+QGVFcPe6+yj7+TWZwIesuOWvfcn4B9bz5x4NDzVCQQjOs7Hfouu36aEqfEbo9Qpo+gq8dDg==", "dev": true, "license": "MIT", "dependencies": { @@ -42392,7 +42578,7 @@ "json5": "^2.2.3", "lodash.memoize": "^4.1.2", "make-error": "^1.3.6", - "semver": "^7.6.3", + "semver": "^7.7.1", "yargs-parser": "^21.1.1" }, "bin": { @@ -43799,10 +43985,12 @@ } }, "node_modules/use-sync-external-store": { - "version": "1.2.0", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz", + "integrity": "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==", "license": "MIT", "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/util": { @@ -43878,10 +44066,6 @@ "node": ">=10.12.0" } }, - "node_modules/valibot": { - "version": "0.13.1", - "license": "MIT" - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "license": "Apache-2.0", @@ -43921,6 +44105,15 @@ } } }, + "node_modules/valtio/node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/value-equal": { "version": "1.0.1", "license": "MIT", @@ -46962,14 +47155,6 @@ "loose-envify": "^1.0.0" } }, - "node_modules/wasm-imagemagick": { - "version": "1.2.8", - "license": "Apache-2.0", - "dependencies": { - "p-map": "^2.0.0", - "stacktrace-js": "^2.0.0" - } - }, "node_modules/watchpack": { "version": "2.4.1", "license": "MIT", @@ -47444,14 +47629,6 @@ "node": ">=0.4.0" } }, - "node_modules/xstate": { - "version": "4.38.3", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/xstate" - } - }, "node_modules/xtend": { "version": "4.0.2", "license": "MIT", diff --git a/client/package.json b/client/package.json index fda2dd145..b80d9b893 100644 --- a/client/package.json +++ b/client/package.json @@ -50,8 +50,7 @@ "@ant-design/pro-components": "^2.8.6", "@ant-design/use-emotion-css": "1.0.4", "@antv/g2plot": "^2.4.32", - "@dotlottie/react-player": "^1.6.19", - "@monaco-editor/react": "^4.6.0", + "@lottiefiles/dotlottie-react": "^0.13.0", "@umijs/max": "^4.4.5", "@umijs/plugin-antd-dayjs": "^0.3.0", "@umijs/route-utils": "^4.0.1", @@ -60,9 +59,10 @@ "buffer": "^6.0.3", "classnames": "^2.5.1", "dayjs": "^1.11.13", - "framer-motion": "^12.4.5", + "framer-motion": "^12.4.7", "lodash": "^4.17.21", "moment": "^2.30.1", + "@monaco-editor/react": "^4.7.0", "monaco-editor-webpack-plugin": "^7.1.0", "monaco-languageserver-types": "^0.4.0", "monaco-yaml": "^5.3.1", @@ -71,7 +71,7 @@ "rc-queue-anim": "^2.0.0", "rc-tween-one": "^3.0.6", "react": "^18.3.1", - "react-confetti": "^6.2.2", + "react-confetti": "^6.2.3", "react-dev-inspector": "^2.0.1", "react-dom": "^18.3.1", "react-helmet-async": "^2.0.5", @@ -89,8 +89,8 @@ "@babel/preset-env": "^7.26.9", "@babel/preset-react": "^7.26.3", "@babel/preset-typescript": "^7.26.0", - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "^9.20.0", + "@eslint/eslintrc": "^3.3.0", + "@eslint/js": "^9.21.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.2.0", "@types/classnames": "^2.3.4", @@ -119,8 +119,8 @@ "lint-staged": "^15.4.3", "mockjs": "^1.1.0", "node-fetch": "^3.3.2", - "prettier": "^3.5.1", - "ts-jest": "^29.2.5", + "prettier": "^3.5.2", + "ts-jest": "^29.2.6", "ts-node": "^10.9.2", "typescript": "^5.7.3", "vitest": "^3.0.6" diff --git a/client/public/Animation-1705922266332.lottie b/client/public/Animation-1705922266332.lottie deleted file mode 100644 index 26f4c0775a2b77307b15b65ebe4d399ed69144ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6824 zcmbVxbx<76vhLyu7A#nBcUT+}AhYGV_JY1ZW*+X=POdL! zB`0@x8?cOxJ=pEVYz1}%yPCQG3$b)^|2N2P`w#T;l!KZ3OZb-v27WX)mM>(8xrHUK zIaq+5hnHKBomWVZi`|T05W>#S4-vHBHRtAsK!7h)OB+|P#XnRU;g>|*oWbB1^2^ED z-pohY$rAh$$T#Zd(>qz%$d{NtXlYch z$s>R4H#Wji#8}Hl&JbK{d*MYH7^eJ67S*U%!RB-B!5`b~@8QxbO#{e;-~Jp3d#GsV z3E%vMo;}Cv#QJL2uMWAMnL)jJy{{gATGc@Vpq4P5^``n+a}S{{lKjcZ2NcC{Vk)3E2>KO{)RK-4mOjN*OV=V-8f`n_m11| z_!vE#WV;NK-ah)^qZr)OIHR%Ss^k%zW3^IcvkJbxpB)Gs0{UTb-j!Y}of z*f;}v%~Uw|WyVc&ABXNWG(`%6nvC8`_g*Gi=ku3oO5Wtq3pijwy?lJm&OD*#o4>tI zR9kk%3|+1`1D|eARQ`HB?ftpm8`N2W%UjE*-o)+wxchayI`ci#@uXv-Efc}uN;|*Z z0e0o17rpMW^i~_@;j?kkJTu+o)Qvc&TD;om$m-bGC~DNkC%}P#<-_qjEh=ibN_h8v zAItA#q&w%(WO426Au;D7@q}|DsIYxCX6rrf6F%}9gI#yk#CTf;G(GMaZneR$okOxn z8`E!r7SliI<@~`tbMBWUl1@(TK<_->sxI=yWS5_&YApT6$aWcOt;dJSHBkQC(Qun~ zx#8_4b@INaXl9gzOxkm&(3dW#7xcocFrL?7lxE>AQ^rJw8Gp*W+KR%+p^4bkC}Rsv z{>IXWVZ0@jL&eKHASCF>d}8Q=3zCpt9}1LAou10fLAyQwGw^d1mS}%B3j6Z54YR?> zUT?<-wapO9ZZ8y7SCGz*X5-ChumRN~TRBf=r(8K-8iVDP#}Q(G^)CtE`SaL+eG(9N z-=aG^t72?)t$23mciX~KA6dqiy*k3pG?30eg}reYk-Db7KKz{bI=0-F4r$XPqPn`@ z`RC#F`U;6^u4ncA)p?CI=<2+M<+}@p^g7WM ztf{h41!}n71)8Pmw~ljZYZpgn%YoPxM?Rfv^VBwY4mzxnvhMq0O!ik@C!jX1WR5kI zDeN&sN?eO*E)^AvevPV?YXQ2be;TvVr7snVXAL|U;A27Lbnpk4Bfs(`S% z^xvd8FvFVUo97^+T$#bPceh{}p6)g(smFRTZzg{RF_XfXyrLQ}tN=NiVP(OMX z4@#WK!|HMz?D19(Ex>(`eXxo7*xm0)qpMP`r)3A2uJVLh9H>6d;$#oTv@+gi{1l77 zX!aKSU5i<RJ#DE_18gIxd7el4EWmGp1L$OOy!YGFP*o+s}uG|{K}$oEDPj5?M2BNk9pUW+*np$?Lh49Xe( zi0tC`9i3KXHxIUuFOJq$N<4ml(p`S2RWx@NyU1WFV{MCPr6^`+!a{u*U;G;kZ>YJ2 zUC8A&V4$-F3)FGnel_aza4$3f2T;puadZIUA0;&Ry;8$BmvLg@MC1n?n1%rUXlBI5 z-^N_Q*%0l^2DOAL(Kj;5s~ph)qb;uns=9r)YgQqQO6_-oRVLyO3n;I73ZvUIIjmVQ zQxLM%S-1nThK|j~ugg*U9*$P`m<6+I#LB<<(%dXLm0wHWV1jI|uvDYq-horn*3f|F z-V~_So9avKf{iWBhwlaaw=;X9-96&H)z$3zU9va4`eGMtx~(3`b4%7_X#}~YSA6=D z`hs@)I>q#_U8oPU)9U&&OJvOG6yY{4;?7|NdO33o6$Kg99GVxO{Yd$AvGRm{(S?sS-xfKbhYn7Ar^-FO0WvD z{zp_|+Q!4h;n0r_l)KSJ@_v1`xy1*BdYCK0m|TdK@gqpc-`xZ8oBCkxxy|zT{GS*a z_66BP4*gxsdex9o<~6grr{_TIX({IFKfh}xPhsv|WqhEjzFFUkSBR^4KX+1cc~ zI1nc4`swfr4Yhj{xY||R$Y}KVZ{FJ)&)eN*y4PgrmTe^U+Uv>dhK-RZY!kV1ypQ@s z(3x)z0!|5d*TPw{FFrhK#fsm&u05`=6nFkw5nstaT-MN=m5MAfBN%yALLN_-mlMMo z=)Ci#CRL78h=qPLTjN|UcSxPtCrzUXch-BVfgw){^9ln_SN>T^NWOo^`)C}RZb2Xx zMnP@hzSfZmtC8#50uq$6;?1R=`cgl{PQhh^4+#aajh5+&awzP|JqJm#H;bUlHc)iS(#PG6!^n z6Nia+n>g8lT(iP$q2p6@DCCF9sg4U4$PQ!5+X#)g(dJ21G^~~H|CWg|$V==+m#!qz zGa|w|fOZVQ+QnR(AP%0&r&q41A;m>S3EV^KWrAY_Z$=4f8g$D#pn*?^zt&p!pN2|a zC#=>f3%AN1h9lCvlc2z+$=aGY*cL@gRuUBL;>F)$%EH0zR={T(7H>4fw%nE)gU{`Y z#xR7P*UTZu$n%RYDHVOE%Vr9spBxif`N+jz8gGlIsP=P!V5$@kBid9|B-E&>va!ZI zqvmX>&AXizKY?PVvEI#+cbf|@V4OM|l0_#wyginJKi~n_bItqo69RfAL#!BM)?|a! zds}VgOfJ>u6cT5n=DLx;FQbB+MuOBG%yD*F_<%r@X-8$v_CUHXvp0vQ`cn!-rG>m; zhDpWXXPJ2(qfg9C_>IsTyInjtVM{m+q0jmuoh$|~rofN0f_BF?T8_J8&}(ulgp>;v z2chnHFt7RKC_$-i!MsU1Y@9a#N02rEcMH$2%sN5=*8BuWWNQrf(aH?Sn!H1{!&4V( z_}e~fyGV#;5oH#msDbkd5e6z+mrE>;&^#}#_{bqpButE~$)){O9;7BQ8g~6YhYtM_M>=zGekw>Au>I*qK~AZ++FIzYb&%_R*ab{B%4(BD2KyVv;q<=9%GlWn=bLjV(u?coPYITGp8ltjl=E zwLV%q?XxomZTviT5oJsFHob3>ka|7l?x1HTONaH1QJ1s5g@0%z&$*>3}ttzR33rdpX`kN4Ya!TrC5Qq^<6%TBhe$j@uSQb!7%(n)a zIZ{f@A5$B+Wm;1tJVwM-hgNhgYv=GTjZk^Z3-ssuB`s4`wkWUC$@n(ctgd~Bgnac{ zKF4p}(|2^m{v8puSC@|gE|Zi-V3;Y$M-vg2wqkG`DqOUWAkm6!tgLD7pij#RODf}A zA~8b=v6m^!GXKS8YSMV5Xp6>OBvC#8eGmPf)DR_eVoMmgRBP~Oy>I=oO7>5~U@Phl z5?C*ZVI)Eqwk3L1vc#mMpZSL^18Pd7c7`urs7nuMKQhNGwSvW#=35{gFeG|cHyKM+ zy~e+cl9+QgMQw)3Fz_kY)5Mk@sux+6WfA|HA-#RdvOZtER!+Kl;ei2Hy!s8bxV+eZx-)l{`+n=PF}6S2sJVw6+Ys5_O~r5x>a*?>L#HI zFcd^SyiWLYrT*b$SzeW)kAq8gYeFxr(yIB1RLcrw>lnlP1JsszAJyAJ2n_`a;O1u5 zL@%E=^@J>Nk3@tHz3-M)=ig+oC@mXCX+5DS@VtCFUFf%sA5crSCg7RsFga^m*u8@DA1%zy zr8JEls^HYv6?WuV(KfGJRu5(Z>E&2jdcfJ~W4Si|>4S7R1Sum*J~|U(*GP-ecnO0c z#5iqwbKl&9Eo41ef0nXVR~7ZJq8y`>ich1}0bBtR^Fa;r;g$yHixgqQkU2@-Tf^U_ zD1$&rN{3DmGym#%aS&R@-krj?|Q? zGpp%r&*FeFO53$t1v%zN*yb%9R|TwsG!i%%4D%NC-%Oi_Xbg5BXNo0~qf?tZM&1Y1 z3SXFvVYb#r?NU_QoPQ-7L@YIZXpsw(%NXp3S-NC?m;5~r7k>vMNFyKz+PZ|z7FLlD zrbu7Aczo(Thia@=l*Y4fXB2B>%%)J^I&zq!fiSM;;hLu{(b_5kMj>iR48$=PekxZ&uD z))eK2%wh`LZ~U?yP{S&JiHlNFHmX;l!D8s#lRs+~`B$3j46Yq#E%O8Ulr$Bzv|3bv zHB>yx!Gz=JU|$M`@2q*rLYw%fqljls+o2$89I__74Ov>$2qEhD@Bq11o|~IYv$p!^ zDs@m56-#tO9KMt!{XDNAKBWUw&rXnT!Zg4-3YK&++Q+ngerj6QfXSPNQ1BbTD{UV2 znUty~;suZSJX(=V_i_1-63N<8yx-lvc(>;=@}!aKt72M7bySF7sb`dO^Y%_wF?&sd zUIi#J#f};ebY&;^L69A0>;|zVR4DJ{U>`ng#2Z)B(R!u7Le2VdSK63uuAl9|m}@eH zT7q7fZ4;#9u9jcP$3~;a%$QFTG2^R?_j;F_8pZ=>*J5yztE%8h5i4oHU_@~wv*7Io zzrD*`aK_0ahL9W%ZsxtKlq@Tu5WO9zbe)pYqCk#OqqMcMUtNqa;YagFr*+FG{$)?H zwxYDyUwNSXDJr;=cxOUSh~&W*6j~|n`y6rmmdJrrnxtf z9BRlK5Tms)_|M&S*FQ30COV<{On?RMA_lP&*^Wo&64;IdV5sxi3o`}7AUa zsq{rMgMM)+8VIyyG>2@8EhRGn!oN-IeQ^1{@-5vIb7aF-dI&g~0I@l`qm&xHXe~pmMujE* zd9>dC$9hIBHL8li0v`sImp!NOq-E^Hse|U*ZFuAa(h2GSNX~O}PRw|;`)k7E^Tm?d z&}?MnDvN>IDD^3J;U~jjr{*U6^EJ2}6}+zPfC)6}AfMF=+YA*X6O(wAj-xZ_ z#z(CZIjV7G7QJx&mnk)-vQol4@7J;3H~RpAM~0~xp2-@bUy_2RLpYW1dVDv&QEx84 zO)TIBiW+k3RaTmwT&u50$OUCKV1V)OT+oxT7}L(y_7PP&86@;%Q&AMo85f87(nHo)WP6!OPYPxWU|K}20&~DvIb)I&IV*X1Q*lz2S=hsnz+Jv^c`#bu2Rum zhN#&+Cc+e!9kmrh){k|&3f?AZOMeDD^X{~o55B+oJLsM(V3PmVqK^YKRgoT%Q6`Hc zBKG?1w4E6m1Kg=~ULa+Bvli@hfM}vhSsd3K+H?qN>aFjo!AV~5&Zma?%%H^8jY8f+ z!+8&tMc~pORL&%OA6aBVM^8ekK1mq-YS@+Bzj9>$5dF9=x{z;B`!yZGg&V%`+D(5r z3jb;%R@MJO@m-t16}4woUgZe#@5)b)Gsy~znuS;j+Xdinl$Y!vAa;r59b$&n5Y@wZ zI-}PJdbw9MGS!cbBoK;@MdZ=WE1S;}quyBxhYyI1`szAIrEgBTYMrVr;eM-%Z2MS3 z!LbzQU@e}%leuLy?9aW_wR2?#NiY;zs!0ewj~gL}V+FpNdI1t^bDg#gE&1_ehQj0w zwk&qiwamNr_QG17hpCxi+5~Ax6{Z<$Qp(Nd9rzNTB&AL z_uT11Vn#mrE7KJl`SFh&QU-gs_;A;gP8oKu;ZKOvzz0tPk0Z2PXlHwHcs9Lz(l;&a zapa%@rOUl{FaIk|-CXc}!oxP%GDjgVPcE*3eZKlUnHBx^>IXYm=#`hQX^FI5B&8Jk z4}ZT|P?&7QrF$4INAA-Ey;CEbBr$Ltm%>{=$tawQj}x_S>oZFN2Q)!olgHgU4Gl>6 zyp0Kto*ix-AeiO?b!uowkYQsWf4o;yPgnizz1AHBk?RPtbRm1QZK@t+>?eBT#fM5* zbS{!GFn@v z>l9_iwxgA2e=KXKxsLkQuoLIiu8gwGmbBj5BG@rUfF6jeZSKKEpYp2780(#+=PRTj zYFChb2zxeh{Ai~+SEVFy094*}JA|w@*HonwuRFy`0>=T#YCvj>AMAJJJVRJ?0G!-V z!s$aK85gif66pb@Z1HXTMEM`Sm}$_@UVazw^dXewuTM)fn&+3ZuExGUe6WmxKaDQQ z`mzAAF>tknhGswFYS_xhtKPL`fp0lHKmumc31jlKr1wD#b`9#@Rt;|pWJ(3Tne>?5 z1U3Hd$y)~~48=PbsN-=}H!8)y(|D&uB=NF7}sQ7caOnw^1AnRBDp zNb)N0Ci|~&7()V03dRyD761N_rNpGYc6#`V8Z3J;zh=51{`2Wj3|HwiA8UL3E^dIW~TLSqHjq^oA`rim5YKkbR|3pE2nRze! J70Exh{{o$Kx~2dC diff --git a/client/public/Animation-1707227617481.json b/client/public/Animation-1707227617481.json deleted file mode 100644 index 35ed159be..000000000 --- a/client/public/Animation-1707227617481.json +++ /dev/null @@ -1 +0,0 @@ -{"v":"5.7.4","fr":24,"ip":0,"op":48,"w":1600,"h":1200,"nm":"carbon-forest-35","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"rows of trees","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[800,630,0],"ix":2,"l":2},"a":{"a":0,"k":[218.3,183.33,0],"ix":1,"l":2},"s":{"a":0,"k":[235.273,235.273,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.663,7.072],[0,-0.327],[-5.918,-0.762]],"o":[[-2.211,6.881],[0,2.362],[0.969,-11.097]],"v":[[7.47,-25.995],[-7.471,20.858],[2.674,25.995]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[283.323,78.796],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-0.358],[-8.507,0],[0,3.018]],"o":[[0,0],[0,3.018],[8.507,0],[0,-0.359]],"v":[[-0.134,-26.668],[-15.403,21.203],[0,26.668],[15.403,21.203]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[291.254,78.45],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.85,0],[0,0],[0,0.85],[0,0],[-0.849,0],[0,0],[0,-0.85],[0,0]],"o":[[0,0],[-0.849,0],[0,0],[0,-0.85],[0,0],[0.85,0],[0,0],[0,0.85]],"v":[[0.296,5.422],[-0.296,5.422],[-1.835,3.883],[-1.835,-3.883],[-0.296,-5.422],[0.296,-5.422],[1.834,-3.883],[1.834,3.883]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[291.382,107.669],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[290.789,111.37],"ix":2},"a":{"a":0,"k":[290.789,111.37],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[2.26,-12.862]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":-4.805,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":0,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":8,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":16,"s":[120,100]},{"t":20.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.744,1.482],[0,0],[7.999,-1.08],[-2.95,0],[0,5.585],[0,0]],"o":[[0,0],[0,9.995],[1.848,2.016],[5.585,0],[0,0],[0,-4.271]],"v":[[2.389,-16.135],[2.389,-0.808],[-8.783,12.855],[-1.33,16.135],[8.783,6.023],[8.783,-6.732]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[241.013,55.086],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.585,0],[0,0],[0,5.585],[0,0],[-5.584,0],[0,-5.584],[0,0]],"o":[[0,0],[-5.584,0],[0,0],[0,-5.584],[5.585,0],[0,0],[0,5.585]],"v":[[0,16.489],[0,16.489],[-10.112,6.377],[-10.112,-6.377],[0,-16.489],[10.112,-6.377],[10.112,6.377]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[239.684,54.732],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.996,0],[0,0],[0,0.996],[0,0],[-0.996,0],[0,0],[0,-0.996],[0,0]],"o":[[0,0],[-0.996,0],[0,0],[0,-0.996],[0,0],[0.996,0],[0,0],[0,0.996]],"v":[[0.031,7.44],[-0.031,7.44],[-1.835,5.638],[-1.835,-5.637],[-0.031,-7.44],[0.031,-7.44],[1.835,-5.637],[1.835,5.638]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[239.684,75.135],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[239.307,80.69],"ix":2},"a":{"a":0,"k":[239.307,80.69],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":4,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":12,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":20,"s":[120,100]},{"t":24.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.321,2.056],[0,-2.06],[7.595,-1.7],[-2.475,0],[0,7.071]],"o":[[0.671,1.827],[0,8.108],[1.958,1.216],[7.07,0],[0,-5.104]],"v":[[2.463,-12.184],[3.501,-6.322],[-9.772,10.264],[-3.03,12.184],[9.772,-0.619]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[391.6,145.402],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-7.07],[7.071,0],[0,7.07],[-7.071,0]],"o":[[0,7.07],[-7.071,0],[0,-7.07],[7.071,0]],"v":[[12.802,0],[0,12.802],[-12.802,0],[0,-12.802]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[388.57,144.783],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.995,0],[0,0],[0,0.996],[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0]],"o":[[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0],[0.995,0],[0,0],[0,0.996]],"v":[[0.032,7.44],[-0.03,7.44],[-1.835,5.637],[-1.835,-5.637],[-0.03,-7.44],[0.032,-7.44],[1.835,-5.637],[1.835,5.637]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[388.57,162.147],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[388.597,167.864],"ix":2},"a":{"a":0,"k":[388.597,167.864],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":8,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":16,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":24,"s":[120,100]},{"t":28.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.321,2.056],[0,-2.06],[7.595,-1.7],[-2.474,0],[0,7.071]],"o":[[0.671,1.827],[0,8.108],[1.958,1.216],[7.071,0],[0,-5.104]],"v":[[2.463,-12.184],[3.501,-6.322],[-9.772,10.264],[-3.031,12.184],[9.772,-0.619]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[191.844,29.86],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-7.07],[7.071,0],[0,7.07],[-7.07,0]],"o":[[0,7.07],[-7.07,0],[0,-7.07],[7.071,0]],"v":[[12.803,0],[-0.001,12.802],[-12.803,0],[-0.001,-12.802]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[188.813,29.241],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.996,0],[0,0],[0,0.996],[0,0],[-0.996,0],[0,0],[0,-0.996],[0,0]],"o":[[0,0],[-0.996,0],[0,0],[0,-0.996],[0,0],[0.996,0],[0,0],[0,0.996]],"v":[[0.031,7.44],[-0.031,7.44],[-1.835,5.637],[-1.835,-5.637],[-0.031,-7.44],[0.031,-7.44],[1.835,-5.637],[1.835,5.637]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[188.813,46.605],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[188.708,53.856],"ix":2},"a":{"a":0,"k":[188.708,53.856],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":12,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":20,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":28,"s":[120,100]},{"t":32.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.321,2.056],[0,-2.06],[7.595,-1.699],[-2.475,0],[0,7.07]],"o":[[0.671,1.828],[0,8.109],[1.958,1.216],[7.07,0],[0,-5.105]],"v":[[2.463,-12.184],[3.501,-6.322],[-9.772,10.264],[-3.03,12.184],[9.772,-0.618]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[342.522,116.927],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-7.071],[7.071,0],[0,7.07],[-7.07,0]],"o":[[0,7.07],[-7.07,0],[0,-7.071],[7.071,0]],"v":[[12.802,0],[0,12.802],[-12.802,0],[0,-12.802]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[339.492,116.309],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.996,0],[0,0],[0,0.996],[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0]],"o":[[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0],[0.996,0],[0,0],[0,0.996]],"v":[[0.032,7.44],[-0.03,7.44],[-1.835,5.638],[-1.835,-5.637],[-0.03,-7.44],[0.032,-7.44],[1.835,-5.637],[1.835,5.638]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[339.492,133.673],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[339.524,141.168],"ix":2},"a":{"a":0,"k":[339.524,141.168],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":2,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":10,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":18,"s":[120,100]},{"t":22.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.744,1.481],[0,0],[7.999,-1.08],[-2.95,0],[0,5.584],[0,0]],"o":[[0,0],[0,9.995],[1.849,2.015],[5.585,0],[0,0],[0,-4.271]],"v":[[2.389,-16.135],[2.389,-0.808],[-8.783,12.855],[-1.33,16.135],[8.783,6.023],[8.783,-6.732]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[325.741,177.847],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.585,0],[0,0],[0,5.585],[0,0],[-5.585,0],[0,-5.585],[0,0]],"o":[[0,0],[-5.585,0],[0,0],[0,-5.585],[5.585,0],[0,0],[0,5.585]],"v":[[0,16.489],[0,16.489],[-10.112,6.377],[-10.112,-6.377],[0,-16.489],[10.112,-6.377],[10.112,6.377]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[324.411,177.492],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.996,0],[0,0],[0,0.995],[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0]],"o":[[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0],[0.996,0],[0,0],[0,0.995]],"v":[[0.031,7.44],[-0.031,7.44],[-1.835,5.637],[-1.835,-5.637],[-0.031,-7.44],[0.031,-7.44],[1.835,-5.637],[1.835,5.637]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[324.412,197.896],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[324.703,206.035],"ix":2},"a":{"a":0,"k":[324.703,206.035],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":6,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":14,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":22,"s":[120,100]},{"t":26.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-6","np":3,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.663,7.072],[0,-0.328],[-5.918,-0.762]],"o":[[-2.211,6.881],[0,2.362],[0.969,-11.097]],"v":[[7.471,-25.995],[-7.471,20.858],[2.674,25.995]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[167.935,85.205],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-0.358],[-8.507,0],[0,3.018]],"o":[[0,0],[0,3.018],[8.507,0],[0,-0.359]],"v":[[-0.134,-26.668],[-15.403,21.203],[0,26.668],[15.403,21.203]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[175.866,84.859],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.85,0],[0,0],[0,0.851],[0,0],[-0.85,0],[0,0],[0,-0.85],[0,0]],"o":[[0,0],[-0.85,0],[0,0],[0,-0.85],[0,0],[0.85,0],[0,0],[0,0.851]],"v":[[0.295,5.422],[-0.295,5.422],[-1.835,3.882],[-1.835,-3.883],[-0.295,-5.422],[0.295,-5.422],[1.835,-3.883],[1.835,3.882]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[175.995,114.078],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 23","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[176.136,119.99],"ix":2},"a":{"a":0,"k":[176.136,119.99],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":10,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":18,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":26,"s":[120,100]},{"t":30.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-7","np":3,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.321,2.056],[0,-2.06],[7.595,-1.699],[-2.475,0],[0,7.071]],"o":[[0.672,1.828],[0,8.108],[1.958,1.216],[7.07,0],[0,-5.104]],"v":[[2.463,-12.184],[3.501,-6.322],[-9.772,10.264],[-3.03,12.184],[9.772,-0.619]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[277.917,153.661],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 24","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-7.07],[7.071,0],[0,7.071],[-7.07,0]],"o":[[0,7.071],[-7.07,0],[0,-7.07],[7.071,0]],"v":[[12.802,0],[0,12.802],[-12.802,0],[0,-12.802]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[274.887,153.042],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 25","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.996,0],[0,0],[0,0.995],[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0]],"o":[[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0],[0.996,0],[0,0],[0,0.995]],"v":[[0.032,7.44],[-0.03,7.44],[-1.835,5.638],[-1.835,-5.637],[-0.03,-7.44],[0.032,-7.44],[1.835,-5.637],[1.835,5.638]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[274.886,170.406],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 26","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[274.44,177.656],"ix":2},"a":{"a":0,"k":[274.44,177.656],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":14,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":22,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":30,"s":[120,100]},{"t":34.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-8","np":3,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.663,7.072],[0,-0.327],[-5.918,-0.762]],"o":[[-2.211,6.881],[0,2.363],[0.969,-11.097]],"v":[[7.471,-25.995],[-7.471,20.857],[2.674,25.995]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[218.96,114.352],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 27","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-0.358],[-8.507,0],[0,3.018]],"o":[[0,0],[0,3.018],[8.507,0],[0,-0.359]],"v":[[-0.134,-26.668],[-15.403,21.203],[0,26.668],[15.403,21.203]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[226.892,114.005],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 29","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.85,0],[0,0],[0,0.851],[0,0],[-0.85,0],[0,0],[0,-0.85],[0,0]],"o":[[0,0],[-0.85,0],[0,0],[0,-0.85],[0,0],[0.85,0],[0,0],[0,0.851]],"v":[[0.295,5.422],[-0.296,5.422],[-1.835,3.883],[-1.835,-3.883],[-0.296,-5.422],[0.295,-5.422],[1.835,-3.883],[1.835,3.883]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[227.021,143.224],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 30","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[226.773,149.406],"ix":2},"a":{"a":0,"k":[226.773,149.406],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":4,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":12,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":20,"s":[120,100]},{"t":24.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-9","np":3,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.663,7.072],[0,-0.327],[-5.918,-0.762]],"o":[[-2.211,6.881],[0,2.362],[0.969,-11.097]],"v":[[7.471,-25.995],[-7.471,20.858],[2.674,25.995]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[116.42,56.488],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 31","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-0.358],[-8.507,0],[0,3.018]],"o":[[0,0],[0,3.018],[8.507,0],[0,-0.359]],"v":[[-0.134,-26.668],[-15.403,21.203],[0,26.668],[15.403,21.203]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[124.352,56.142],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 33","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.85,0],[0,0],[0,0.85],[0,0],[-0.85,0],[0,0],[0,-0.85],[0,0]],"o":[[0,0],[-0.85,0],[0,0],[0,-0.85],[0,0],[0.85,0],[0,0],[0,0.85]],"v":[[0.295,5.422],[-0.295,5.422],[-1.835,3.883],[-1.835,-3.883],[-0.295,-5.422],[0.295,-5.422],[1.835,-3.883],[1.835,3.883]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[124.48,85.361],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 34","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[124.559,91.148],"ix":2},"a":{"a":0,"k":[124.559,91.148],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":8,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":16,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":24,"s":[120,100]},{"t":28.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-10","np":3,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.744,1.482],[0,0],[7.999,-1.08],[-2.951,0],[0,5.585],[0,0]],"o":[[0,0],[0,9.995],[1.849,2.016],[5.585,0],[0,0],[0,-4.271]],"v":[[2.389,-16.135],[2.389,-0.808],[-8.783,12.855],[-1.329,16.135],[8.783,6.023],[8.783,-6.732]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[118.205,184.405],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 35","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.585,0],[0,0],[0,5.585],[0,0],[-5.585,0],[0,-5.584],[0,0]],"o":[[0,0],[-5.585,0],[0,0],[0,-5.584],[5.585,0],[0,0],[0,5.585]],"v":[[0,16.489],[0,16.489],[-10.112,6.377],[-10.112,-6.377],[0,-16.489],[10.112,-6.377],[10.112,6.377]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[116.876,184.051],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 36","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.996,0],[0,0],[0,0.996],[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0]],"o":[[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0],[0.996,0],[0,0],[0,0.996]],"v":[[0.032,7.44],[-0.031,7.44],[-1.835,5.637],[-1.835,-5.637],[-0.031,-7.44],[0.032,-7.44],[1.835,-5.637],[1.835,5.637]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[116.876,204.455],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 37","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[116.311,213.625],"ix":2},"a":{"a":0,"k":[116.311,213.625],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":13,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":21,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":29,"s":[120,100]},{"t":33.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-11","np":3,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.662,7.072],[0,-0.327],[-5.918,-0.762]],"o":[[-2.21,6.881],[0,2.362],[0.969,-11.097]],"v":[[7.471,-25.995],[-7.471,20.857],[2.675,25.995]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[208.606,235.28],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 38","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-0.358],[-8.507,0],[0,3.018]],"o":[[0,0],[0,3.018],[8.507,0],[0,-0.359]],"v":[[-0.134,-26.667],[-15.403,21.204],[0,26.667],[15.403,21.204]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[216.538,234.934],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 40","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.85,0],[0,0],[0,0.851],[0,0],[-0.85,0],[0,0],[0,-0.85],[0,0]],"o":[[0,0],[-0.85,0],[0,0],[0,-0.85],[0,0],[0.85,0],[0,0],[0,0.851]],"v":[[0.295,5.422],[-0.295,5.422],[-1.835,3.883],[-1.835,-3.883],[-0.295,-5.422],[0.295,-5.422],[1.835,-3.883],[1.835,3.883]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[216.667,264.153],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 41","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[217.205,271.086],"ix":2},"a":{"a":0,"k":[217.205,271.086],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":17,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":25,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":33,"s":[120,100]},{"t":37.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-12","np":3,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.321,2.056],[0,-2.06],[7.595,-1.7],[-2.474,0],[0,7.071]],"o":[[0.671,1.827],[0,8.108],[1.958,1.216],[7.071,0],[0,-5.104]],"v":[[2.463,-12.184],[3.501,-6.322],[-9.772,10.264],[-3.031,12.184],[9.772,-0.619]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[171.368,216.575],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 42","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-7.07],[7.071,0],[0,7.07],[-7.071,0]],"o":[[0,7.07],[-7.071,0],[0,-7.07],[7.071,0]],"v":[[12.802,0],[0,12.802],[-12.802,0],[0,-12.802]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[168.338,215.956],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 43","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.996,0],[0,0],[0,0.996],[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0]],"o":[[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0],[0.996,0],[0,0],[0,0.996]],"v":[[0.032,7.441],[-0.031,7.441],[-1.835,5.637],[-1.835,-5.637],[-0.031,-7.44],[0.032,-7.44],[1.835,-5.637],[1.835,5.637]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[168.338,233.32],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 44","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[168.069,241.501],"ix":2},"a":{"a":0,"k":[168.069,241.501],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":21,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":29,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":37,"s":[120,100]},{"t":41.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-13","np":3,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.321,2.056],[0,-2.06],[7.595,-1.699],[-2.474,0],[0,7.07]],"o":[[0.671,1.828],[0,8.109],[1.958,1.216],[7.071,0],[0,-5.105]],"v":[[2.463,-12.184],[3.501,-6.322],[-9.772,10.264],[-3.031,12.184],[9.772,-0.618]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[68.394,157.497],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 45","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-7.071],[7.071,0],[0,7.07],[-7.071,0]],"o":[[0,7.07],[-7.071,0],[0,-7.071],[7.071,0]],"v":[[12.802,0],[0,12.802],[-12.802,0],[0,-12.802]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[65.364,156.879],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 46","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.996,0],[0,0],[0,0.996],[0,0],[-0.996,0],[0,0],[0,-0.995],[0,0]],"o":[[0,0],[-0.996,0],[0,0],[0,-0.995],[0,0],[0.996,0],[0,0],[0,0.996]],"v":[[0.031,7.44],[-0.031,7.44],[-1.835,5.638],[-1.835,-5.637],[-0.031,-7.44],[0.031,-7.44],[1.835,-5.637],[1.835,5.638]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[65.363,174.243],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 47","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[65.437,181.945],"ix":2},"a":{"a":0,"k":[65.437,181.945],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":25,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":33,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":41,"s":[120,100]},{"t":45.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-14","np":3,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.662,7.072],[0,-0.327],[-5.918,-0.762]],"o":[[-2.21,6.881],[0,2.363],[0.969,-11.097]],"v":[[7.471,-25.995],[-7.471,20.857],[2.675,25.995]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[7.721,120.234],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 48","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-0.358],[-8.507,0],[0,3.018]],"o":[[0,0],[0,3.018],[8.507,0],[0,-0.359]],"v":[[-0.134,-26.668],[-15.403,21.203],[0,26.668],[15.403,21.203]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[15.653,119.888],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 50","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.85,0],[0,0],[0,0.851],[0,0],[-0.85,0],[0,0],[0,-0.85],[0,0]],"o":[[0,0],[-0.85,0],[0,0],[0,-0.85],[0,0],[0.85,0],[0,0],[0,0.851]],"v":[[0.296,5.422],[-0.294,5.422],[-1.835,3.883],[-1.835,-3.883],[-0.294,-5.422],[0.296,-5.422],[1.835,-3.883],[1.835,3.883]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[15.781,149.107],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 51","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[15.544,155.003],"ix":2},"a":{"a":0,"k":[15.544,155.003],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":29,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":37,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":45,"s":[120,100]},{"t":49.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-15","np":3,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.744,1.482],[0,0],[7.999,-1.08],[-2.951,0],[0,5.584],[0,0]],"o":[[0,0],[0,9.995],[1.849,2.015],[5.584,0],[0,0],[0,-4.271]],"v":[[2.389,-16.135],[2.389,-0.808],[-8.783,12.855],[-1.329,16.135],[8.783,6.023],[8.783,-6.732]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[201.939,193.932],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 52","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.584,0],[0,0],[0,5.585],[0,0],[-5.585,0],[0,-5.585],[0,0]],"o":[[0,0],[-5.585,0],[0,0],[0,-5.585],[5.584,0],[0,0],[0,5.585]],"v":[[0,16.489],[0,16.489],[-10.112,6.378],[-10.112,-6.376],[0,-16.49],[10.112,-6.376],[10.112,6.378]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[200.609,193.577],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 53","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.996,0],[0,0],[0,0.995],[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0]],"o":[[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0],[0.996,0],[0,0],[0,0.995]],"v":[[0.032,7.44],[-0.03,7.44],[-1.834,5.637],[-1.834,-5.637],[-0.03,-7.441],[0.032,-7.441],[1.835,-5.637],[1.835,5.637]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[200.609,213.981],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 54","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[200.77,222.518],"ix":2},"a":{"a":0,"k":[200.77,222.518],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":6,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":14,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":22,"s":[120,100]},{"t":26.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-16","np":3,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.744,1.481],[0,0],[7.999,-1.08],[-2.951,0],[0,5.584],[0,0]],"o":[[0,0],[0,9.995],[1.849,2.015],[5.585,0],[0,0],[0,-4.271]],"v":[[2.389,-16.135],[2.389,-0.808],[-8.783,12.855],[-1.329,16.135],[8.783,6.023],[8.783,-6.732]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[101.53,134.856],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 55","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.585,0],[0,0],[0,5.585],[0,0],[-5.585,0],[0,-5.585],[0,0]],"o":[[0,0],[-5.585,0],[0,0],[0,-5.585],[5.585,0],[0,0],[0,5.585]],"v":[[0,16.489],[0,16.489],[-10.112,6.377],[-10.112,-6.377],[0,-16.489],[10.112,-6.377],[10.112,6.377]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[100.201,134.502],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 56","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.996,0],[0,0],[0,0.995],[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0]],"o":[[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0],[0.996,0],[0,0],[0,0.995]],"v":[[0.032,7.44],[-0.031,7.44],[-1.835,5.638],[-1.835,-5.637],[-0.031,-7.44],[0.032,-7.44],[1.835,-5.637],[1.835,5.638]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[100.201,154.906],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 57","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[100.543,164.256],"ix":2},"a":{"a":0,"k":[100.543,164.256],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":10,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":18,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":26,"s":[120,100]},{"t":30.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-17","np":3,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.321,2.056],[0,-2.06],[7.595,-1.7],[-2.475,0],[0,7.071]],"o":[[0.672,1.827],[0,8.108],[1.959,1.216],[7.07,0],[0,-5.104]],"v":[[2.463,-12.184],[3.501,-6.322],[-9.773,10.264],[-3.031,12.184],[9.773,-0.619]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[253.133,224.942],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 58","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-7.07],[7.071,0],[0,7.07],[-7.07,0]],"o":[[0,7.07],[-7.07,0],[0,-7.07],[7.071,0]],"v":[[12.803,0],[-0.001,12.802],[-12.803,0],[-0.001,-12.802]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[250.103,224.324],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 59","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.996,0],[0,0],[0,0.996],[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0]],"o":[[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0],[0.996,0],[0,0],[0,0.996]],"v":[[0.031,7.441],[-0.031,7.441],[-1.835,5.637],[-1.835,-5.637],[-0.031,-7.44],[0.031,-7.44],[1.835,-5.637],[1.835,5.637]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[250.103,241.688],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 60","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[250.112,248.253],"ix":2},"a":{"a":0,"k":[250.112,248.253],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":14,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":22,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":30,"s":[120,100]},{"t":34.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-18","np":3,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.321,2.056],[0,-2.06],[7.595,-1.7],[-2.474,0],[0,7.071]],"o":[[0.671,1.827],[0,8.108],[1.958,1.216],[7.071,0],[0,-5.104]],"v":[[2.463,-12.184],[3.501,-6.322],[-9.772,10.264],[-3.031,12.184],[9.772,-0.619]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[52.144,110.881],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 61","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-7.071],[7.071,0],[0,7.07],[-7.07,0]],"o":[[0,7.07],[-7.07,0],[0,-7.071],[7.071,0]],"v":[[12.803,0],[-0.001,12.802],[-12.803,0],[-0.001,-12.802]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[49.114,110.262],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 62","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.996,0],[0,0],[0,0.996],[0,0],[-0.996,0],[0,0],[0,-0.996],[0,0]],"o":[[0,0],[-0.996,0],[0,0],[0,-0.996],[0,0],[0.996,0],[0,0],[0,0.996]],"v":[[0.031,7.44],[-0.031,7.44],[-1.835,5.637],[-1.835,-5.637],[-0.031,-7.44],[0.031,-7.44],[1.835,-5.637],[1.835,5.637]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[49.114,127.627],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 63","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[48.84,135.587],"ix":2},"a":{"a":0,"k":[48.84,135.587],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":18,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":26,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":34,"s":[120,100]},{"t":38.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-19","np":3,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.321,2.056],[0,-2.06],[7.595,-1.7],[-2.475,0],[0,7.071]],"o":[[0.671,1.827],[0,8.108],[1.958,1.216],[7.07,0],[0,-5.104]],"v":[[2.463,-12.184],[3.502,-6.322],[-9.772,10.264],[-3.03,12.184],[9.772,-0.619]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[154.896,169.449],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 64","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-7.07],[7.07,0],[0,7.07],[-7.071,0]],"o":[[0,7.07],[-7.071,0],[0,-7.07],[7.07,0]],"v":[[12.802,0],[0,12.802],[-12.802,0],[0,-12.802]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[151.866,168.831],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 65","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.996,0],[0,0],[0,0.996],[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0]],"o":[[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0],[0.996,0],[0,0],[0,0.996]],"v":[[0.032,7.44],[-0.031,7.44],[-1.835,5.637],[-1.835,-5.637],[-0.031,-7.44],[0.032,-7.44],[1.835,-5.637],[1.835,5.637]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[151.865,186.195],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 66","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[151.78,195.146],"ix":2},"a":{"a":0,"k":[151.78,195.146],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":22,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":30,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":38,"s":[120,100]},{"t":42.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-20","np":3,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.321,2.056],[0,-2.06],[7.595,-1.699],[-2.474,0],[0,7.071]],"o":[[0.671,1.828],[0,8.109],[1.958,1.216],[7.071,0],[0,-5.104]],"v":[[2.463,-12.184],[3.501,-6.322],[-9.772,10.264],[-3.031,12.184],[9.772,-0.619]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192.6,147.983],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 67","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-7.07],[7.071,0],[0,7.071],[-7.07,0]],"o":[[0,7.071],[-7.07,0],[0,-7.07],[7.071,0]],"v":[[12.803,-0.001],[-0.001,12.802],[-12.803,-0.001],[-0.001,-12.802]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[189.57,147.365],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 68","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.996,0],[0,0],[0,0.996],[0,0],[-0.996,0],[0,0],[0,-0.995],[0,0]],"o":[[0,0],[-0.996,0],[0,0],[0,-0.995],[0,0],[0.996,0],[0,0],[0,0.996]],"v":[[0.031,7.44],[-0.031,7.44],[-1.835,5.638],[-1.835,-5.637],[-0.031,-7.44],[0.031,-7.44],[1.835,-5.637],[1.835,5.638]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[189.57,164.728],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 69","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[189.469,173.231],"ix":2},"a":{"a":0,"k":[189.469,173.231],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":8,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":16,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":24,"s":[120,100]},{"t":28.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-21","np":3,"cix":2,"bm":0,"ix":21,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.321,2.056],[0,-2.06],[7.595,-1.699],[-2.475,0],[0,7.071]],"o":[[0.671,1.828],[0,8.109],[1.958,1.216],[7.07,0],[0,-5.104]],"v":[[2.463,-12.184],[3.502,-6.322],[-9.772,10.264],[-3.03,12.184],[9.772,-0.619]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[139.761,117.213],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 70","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-7.07],[7.07,0],[0,7.071],[-7.071,0]],"o":[[0,7.071],[-7.071,0],[0,-7.07],[7.07,0]],"v":[[12.802,-0.001],[0,12.802],[-12.802,-0.001],[0,-12.802]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[136.731,116.595],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 71","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.996,0],[0,0],[0,0.996],[0,0],[-0.997,0],[0,0],[0,-0.995],[0,0]],"o":[[0,0],[-0.997,0],[0,0],[0,-0.995],[0,0],[0.996,0],[0,0],[0,0.996]],"v":[[0.032,7.44],[-0.031,7.44],[-1.835,5.638],[-1.835,-5.637],[-0.031,-7.44],[0.032,-7.44],[1.835,-5.637],[1.835,5.638]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[136.731,133.958],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 72","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[136.093,141.379],"ix":2},"a":{"a":0,"k":[136.093,141.379],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":12,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":20,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":28,"s":[120,100]},{"t":32.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-22","np":3,"cix":2,"bm":0,"ix":22,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.663,7.072],[0,-0.327],[-5.918,-0.762]],"o":[[-2.211,6.881],[0,2.363],[0.969,-11.097]],"v":[[7.47,-25.995],[-7.471,20.857],[2.674,25.994]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[276.691,192.833],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 73","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-0.357],[-8.507,0],[0,3.018]],"o":[[0,0],[0,3.018],[8.507,0],[0,-0.358]],"v":[[-0.134,-26.668],[-15.403,21.202],[0,26.667],[15.403,21.202]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[284.622,192.487],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 75","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.851,0],[0,0],[0,0.851],[0,0],[-0.85,0],[0,0],[0,-0.85],[0,0]],"o":[[0,0],[-0.85,0],[0,0],[0,-0.85],[0,0],[0.851,0],[0,0],[0,0.851]],"v":[[0.296,5.422],[-0.294,5.422],[-1.834,3.882],[-1.834,-3.883],[-0.294,-5.422],[0.296,-5.422],[1.835,-3.883],[1.835,3.882]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[284.75,221.706],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 76","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[284.611,228.428],"ix":2},"a":{"a":0,"k":[284.611,228.428],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":16,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":24,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":32,"s":[120,100]},{"t":36.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-23","np":3,"cix":2,"bm":0,"ix":23,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.744,1.482],[0,0],[7.999,-1.08],[-2.951,0],[0,5.585],[0,0]],"o":[[0,0],[0,9.995],[1.848,2.016],[5.584,0],[0,0],[0,-4.271]],"v":[[2.389,-16.135],[2.389,-0.808],[-8.783,12.855],[-1.329,16.135],[8.783,6.023],[8.783,-6.732]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[238.143,172.465],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 77","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.584,0],[0,0],[0,5.585],[0,0],[-5.585,0],[0,-5.584],[0,0]],"o":[[0,0],[-5.585,0],[0,0],[0,-5.584],[5.584,0],[0,0],[0,5.585]],"v":[[0,16.489],[0,16.489],[-10.112,6.377],[-10.112,-6.377],[0,-16.489],[10.112,-6.377],[10.112,6.377]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[236.814,172.111],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 78","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.996,0],[0,0],[0,0.996],[0,0],[-0.996,0],[0,0],[0,-0.996],[0,0]],"o":[[0,0],[-0.996,0],[0,0],[0,-0.996],[0,0],[0.996,0],[0,0],[0,0.996]],"v":[[0.031,7.44],[-0.031,7.44],[-1.835,5.638],[-1.835,-5.637],[-0.031,-7.44],[0.031,-7.44],[1.835,-5.637],[1.835,5.638]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[236.814,192.514],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 79","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[236.647,200.128],"ix":2},"a":{"a":0,"k":[236.647,200.128],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":20,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":28,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":36,"s":[120,100]},{"t":40.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-24","np":3,"cix":2,"bm":0,"ix":24,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.662,7.072],[0,-0.327],[-5.918,-0.762]],"o":[[-2.21,6.881],[0,2.363],[0.969,-11.097]],"v":[[7.471,-25.995],[-7.471,20.857],[2.675,25.995]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[79.133,78.222],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 80","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-0.358],[-8.507,0],[0,3.018]],"o":[[0,0],[0,3.018],[8.507,0],[0,-0.359]],"v":[[-0.134,-26.668],[-15.403,21.203],[0,26.668],[15.403,21.203]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[87.065,77.876],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 82","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.85,0],[0,0],[0,0.851],[0,0],[-0.85,0],[0,0],[0,-0.85],[0,0]],"o":[[0,0],[-0.85,0],[0,0],[0,-0.85],[0,0],[0.85,0],[0,0],[0,0.851]],"v":[[0.295,5.422],[-0.295,5.422],[-1.835,3.882],[-1.835,-3.883],[-0.295,-5.422],[0.295,-5.422],[1.835,-3.883],[1.835,3.882]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[87.193,107.095],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 83","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[86.848,113.449],"ix":2},"a":{"a":0,"k":[86.848,113.449],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":24,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":32,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":40,"s":[120,100]},{"t":44.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-25","np":3,"cix":2,"bm":0,"ix":25,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.744,1.482],[0,0],[7.999,-1.08],[-2.95,0],[0,5.584],[0,0]],"o":[[0,0],[0,9.995],[1.849,2.015],[5.585,0],[0,0],[0,-4.271]],"v":[[2.389,-16.135],[2.389,-0.808],[-8.784,12.855],[-1.329,16.135],[8.784,6.023],[8.784,-6.732]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[358.859,158.653],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 84","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.585,0],[0,0],[0,5.585],[0,0],[-5.585,0],[0,-5.585],[0,0]],"o":[[0,0],[-5.585,0],[0,0],[0,-5.585],[5.585,0],[0,0],[0,5.585]],"v":[[0,16.489],[0,16.489],[-10.112,6.377],[-10.112,-6.377],[0,-16.489],[10.112,-6.377],[10.112,6.377]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[357.53,158.298],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 85","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.996,0],[0,0],[0,0.995],[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0]],"o":[[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0],[0.996,0],[0,0],[0,0.995]],"v":[[0.032,7.44],[-0.03,7.44],[-1.835,5.638],[-1.835,-5.637],[-0.03,-7.44],[0.032,-7.44],[1.835,-5.637],[1.835,5.638]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[357.53,178.702],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 86","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[357.869,186.304],"ix":2},"a":{"a":0,"k":[357.869,186.304],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":10,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":18,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":26,"s":[120,100]},{"t":30.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-26","np":3,"cix":2,"bm":0,"ix":26,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.663,7.072],[0,-0.327],[-5.918,-0.762]],"o":[[-2.21,6.881],[0,2.362],[0.968,-11.097]],"v":[[7.471,-25.995],[-7.471,20.858],[2.675,25.995]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[201.053,66.011],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 87","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-0.358],[-8.507,0],[0,3.018]],"o":[[0,0],[0,3.018],[8.507,0],[0,-0.359]],"v":[[-0.134,-26.668],[-15.403,21.203],[0,26.668],[15.403,21.203]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[208.986,65.665],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 89","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.851,0],[0,0],[0,0.85],[0,0],[-0.85,0],[0,0],[0,-0.85],[0,0]],"o":[[0,0],[-0.85,0],[0,0],[0,-0.85],[0,0],[0.851,0],[0,0],[0,0.85]],"v":[[0.295,5.422],[-0.296,5.422],[-1.835,3.883],[-1.835,-3.883],[-0.296,-5.422],[0.295,-5.422],[1.835,-3.883],[1.835,3.883]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[209.114,94.884],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 90","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[208.893,101.081],"ix":2},"a":{"a":0,"k":[208.893,101.081],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":14,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":22,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":30,"s":[120,100]},{"t":34.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-27","np":3,"cix":2,"bm":0,"ix":27,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.321,2.056],[0,-2.06],[7.595,-1.699],[-2.474,0],[0,7.071]],"o":[[0.671,1.828],[0,8.109],[1.958,1.216],[7.071,0],[0,-5.104]],"v":[[2.463,-12.184],[3.501,-6.322],[-9.772,10.264],[-3.031,12.184],[9.772,-0.619]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[311.036,134.467],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 91","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-7.07],[7.072,0],[0,7.071],[-7.07,0]],"o":[[0,7.071],[-7.07,0],[0,-7.07],[7.072,0]],"v":[[12.802,-0.001],[-0.001,12.802],[-12.802,-0.001],[-0.001,-12.802]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[308.006,133.849],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 92","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.996,0],[0,0],[0,0.996],[0,0],[-0.996,0],[0,0],[0,-0.995],[0,0]],"o":[[0,0],[-0.996,0],[0,0],[0,-0.995],[0,0],[0.996,0],[0,0],[0,0.996]],"v":[[0.031,7.44],[-0.031,7.44],[-1.835,5.638],[-1.835,-5.637],[-0.031,-7.44],[0.031,-7.44],[1.835,-5.637],[1.835,5.638]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[308.006,151.213],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 93","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[308.049,159.398],"ix":2},"a":{"a":0,"k":[308.049,159.398],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":18,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":26,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":34,"s":[120,100]},{"t":38.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-28","np":3,"cix":2,"bm":0,"ix":28,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.663,7.072],[0,-0.327],[-5.918,-0.762]],"o":[[-2.211,6.881],[0,2.363],[0.969,-11.097]],"v":[[7.471,-25.995],[-7.471,20.857],[2.674,25.995]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[252.079,95.158],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 94","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-0.358],[-8.507,0],[0,3.018]],"o":[[0,0],[0,3.018],[8.507,0],[0,-0.359]],"v":[[-0.134,-26.668],[-15.403,21.203],[0,26.668],[15.403,21.203]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[260.011,94.811],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 96","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.85,0],[0,0],[0,0.851],[0,0],[-0.849,0],[0,0],[0,-0.85],[0,0]],"o":[[0,0],[-0.849,0],[0,0],[0,-0.85],[0,0],[0.85,0],[0,0],[0,0.851]],"v":[[0.296,5.422],[-0.296,5.422],[-1.835,3.882],[-1.835,-3.883],[-0.296,-5.422],[0.296,-5.422],[1.834,-3.883],[1.834,3.882]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[260.139,124.031],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 97","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[259.818,130.555],"ix":2},"a":{"a":0,"k":[259.818,130.555],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":22,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":30,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":38,"s":[120,100]},{"t":42.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-29","np":3,"cix":2,"bm":0,"ix":29,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.663,7.072],[0,-0.327],[-5.918,-0.762]],"o":[[-2.21,6.881],[0,2.363],[0.968,-11.097]],"v":[[7.471,-25.995],[-7.471,20.857],[2.675,25.995]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[149.539,37.295],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 98","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-0.358],[-8.507,0],[0,3.018]],"o":[[0,0],[0,3.018],[8.507,0],[0,-0.359]],"v":[[-0.134,-26.668],[-15.403,21.203],[0,26.668],[15.403,21.203]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[157.471,36.948],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 100","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.851,0],[0,0],[0,0.851],[0,0],[-0.85,0],[0,0],[0,-0.85],[0,0]],"o":[[0,0],[-0.85,0],[0,0],[0,-0.85],[0,0],[0.851,0],[0,0],[0,0.851]],"v":[[0.295,5.422],[-0.296,5.422],[-1.835,3.883],[-1.835,-3.883],[-0.296,-5.422],[0.295,-5.422],[1.835,-3.883],[1.835,3.883]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[157.599,66.167],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 101","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[157.62,72.444],"ix":2},"a":{"a":0,"k":[157.62,72.444],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":26,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":34,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":42,"s":[120,100]},{"t":46.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-30","np":3,"cix":2,"bm":0,"ix":30,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.663,7.072],[0,-0.327],[-5.918,-0.762]],"o":[[-2.211,6.881],[0,2.363],[0.969,-11.097]],"v":[[7.471,-25.995],[-7.47,20.857],[2.674,25.995]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[311.61,62.607],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 102","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-0.357],[-8.507,0],[0,3.018]],"o":[[0,0],[0,3.018],[8.507,0],[0,-0.358]],"v":[[-0.134,-26.668],[-15.403,21.203],[0,26.668],[15.403,21.203]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[319.542,62.261],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 104","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.851,0],[0,0],[0,0.851],[0,0],[-0.85,0],[0,0],[0,-0.85],[0,0]],"o":[[0,0],[-0.85,0],[0,0],[0,-0.85],[0,0],[0.851,0],[0,0],[0,0.851]],"v":[[0.296,5.422],[-0.295,5.422],[-1.835,3.882],[-1.835,-3.883],[-0.295,-5.422],[0.296,-5.422],[1.834,-3.883],[1.834,3.882]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[319.67,91.48],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 105","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[319.47,96.978],"ix":2},"a":{"a":0,"k":[319.47,96.978],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":12,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":20,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":28,"s":[120,100]},{"t":32.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-31","np":3,"cix":2,"bm":0,"ix":31,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.744,1.482],[0,0],[7.999,-1.08],[-2.95,0],[0,5.585],[0,0]],"o":[[0,0],[0,9.995],[1.849,2.015],[5.585,0],[0,0],[0,-4.271]],"v":[[2.389,-16.135],[2.389,-0.808],[-8.783,12.855],[-1.33,16.135],[8.783,6.023],[8.783,-6.732]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[269.301,38.897],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 106","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.585,0],[0,0],[0,5.585],[0,0],[-5.584,0],[0,-5.585],[0,0]],"o":[[0,0],[-5.584,0],[0,0],[0,-5.585],[5.585,0],[0,0],[0,5.585]],"v":[[0,16.489],[0,16.489],[-10.112,6.377],[-10.112,-6.377],[0,-16.489],[10.112,-6.377],[10.112,6.377]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[267.972,38.543],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 107","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.996,0],[0,0],[0,0.996],[0,0],[-0.996,0],[0,0],[0,-0.995],[0,0]],"o":[[0,0],[-0.996,0],[0,0],[0,-0.995],[0,0],[0.996,0],[0,0],[0,0.996]],"v":[[0.031,7.44],[-0.031,7.44],[-1.835,5.638],[-1.835,-5.637],[-0.031,-7.44],[0.031,-7.44],[1.835,-5.637],[1.835,5.638]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[267.972,58.947],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 108","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[267.904,66.721],"ix":2},"a":{"a":0,"k":[267.904,66.721],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":16,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":24,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":32,"s":[120,100]},{"t":36.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-32","np":3,"cix":2,"bm":0,"ix":32,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.321,2.056],[0,-2.06],[7.595,-1.699],[-2.475,0],[0,7.07]],"o":[[0.672,1.828],[0,8.109],[1.958,1.216],[7.07,0],[0,-5.105]],"v":[[2.463,-12.184],[3.501,-6.322],[-9.772,10.264],[-3.03,12.184],[9.772,-0.618]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[419.889,129.212],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 109","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-7.071],[7.071,0],[0,7.07],[-7.07,0]],"o":[[0,7.07],[-7.07,0],[0,-7.071],[7.071,0]],"v":[[12.802,0],[0,12.802],[-12.802,0],[0,-12.802]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[416.858,128.594],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 110","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.996,0],[0,0],[0,0.996],[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0]],"o":[[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0],[0.996,0],[0,0],[0,0.996]],"v":[[0.032,7.44],[-0.03,7.44],[-1.835,5.638],[-1.835,-5.637],[-0.03,-7.44],[0.032,-7.44],[1.835,-5.637],[1.835,5.638]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[416.858,145.958],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 111","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[416.757,153.281],"ix":2},"a":{"a":0,"k":[416.757,153.281],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":20,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":28,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":36,"s":[120,100]},{"t":40.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-33","np":3,"cix":2,"bm":0,"ix":33,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.321,2.057],[0,-2.06],[7.595,-1.699],[-2.475,0],[0,7.07]],"o":[[0.671,1.828],[0,8.109],[1.958,1.216],[7.07,0],[0,-5.104]],"v":[[2.463,-12.184],[3.502,-6.322],[-9.772,10.264],[-3.03,12.184],[9.772,-0.618]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[220.132,13.67],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 112","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-7.071],[7.07,0],[0,7.07],[-7.071,0]],"o":[[0,7.07],[-7.071,0],[0,-7.071],[7.07,0]],"v":[[12.802,0],[0,12.802],[-12.802,0],[0,-12.802]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[217.102,13.052],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 113","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.996,0],[0,0],[0,0.996],[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0]],"o":[[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0],[0.996,0],[0,0],[0,0.996]],"v":[[0.032,7.44],[-0.03,7.44],[-1.835,5.638],[-1.835,-5.637],[-0.03,-7.44],[0.032,-7.44],[1.835,-5.637],[1.835,5.638]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[217.101,30.416],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 114","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[216.971,38.177],"ix":2},"a":{"a":0,"k":[216.971,38.177],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":24,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":32,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":40,"s":[120,100]},{"t":44.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-34","np":3,"cix":2,"bm":0,"ix":34,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.321,2.056],[0,-2.06],[7.595,-1.699],[-2.475,0],[0,7.071]],"o":[[0.672,1.828],[0,8.109],[1.958,1.216],[7.07,0],[0,-5.104]],"v":[[2.462,-12.184],[3.5,-6.322],[-9.773,10.264],[-3.031,12.184],[9.772,-0.619]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.039000002543,0.395999983245,0.305999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[370.811,100.738],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 115","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-7.07],[7.071,0],[0,7.071],[-7.07,0]],"o":[[0,7.071],[-7.07,0],[0,-7.07],[7.071,0]],"v":[[12.802,0],[-0.001,12.802],[-12.803,0],[-0.001,-12.802]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.532999973671,0.395999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[367.781,100.119],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 116","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.996,0],[0,0],[0,0.996],[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0]],"o":[[0,0],[-0.997,0],[0,0],[0,-0.996],[0,0],[0.996,0],[0,0],[0,0.996]],"v":[[0.031,7.44],[-0.031,7.44],[-1.835,5.638],[-1.835,-5.637],[-0.031,-7.44],[0.031,-7.44],[1.835,-5.637],[1.835,5.638]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.477999997606,0.426999978458,0.388000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[367.78,117.484],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 117","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[368.442,125.965],"ix":2},"a":{"a":0,"k":[368.442,125.965],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.07,0.192]},"t":28,"s":[90,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":36,"s":[60,120]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":44,"s":[120,100]},{"t":48.0003978587963,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"tree-35","np":3,"cix":2,"bm":0,"ix":35,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":48,"st":-503.703703703704,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"grassies","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[803.702,576.244,0],"ix":2,"l":2},"a":{"a":0,"k":[227.246,164.518,0],"ix":1,"l":2},"s":{"a":0,"k":[235.273,235.273,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-6.019,-4.609],[3.976,-3.7]],"o":[[2.912,2.513],[1.154,6.628]],"v":[[26.376,-43.555],[28.852,-64.546]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-6.019,-4.609],[3.978,-3.7]],"o":[[2.912,2.512],[1.155,6.628]],"v":[[167.173,54.085],[169.648,33.093]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[-0.211,-5.948],[1.595,-0.355]],"o":[[8.892,7.515],[-1.399,6.614]],"v":[[-180.219,13.312],[-181.71,-6.531]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[-6.018,-4.61],[3.977,-3.7]],"o":[[2.912,2.513],[1.154,6.628]],"v":[[-134.003,49.743],[-131.525,28.751]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[-6.018,-4.609],[3.977,-3.7]],"o":[[2.912,2.513],[1.154,6.629]],"v":[[-14.029,-16.674],[-11.551,-37.666]],"c":true},"ix":2},"nm":"Path 5","mn":"ADBE Vector Shape - Group","hd":false},{"ind":5,"ty":"sh","ix":6,"ks":{"a":0,"k":{"i":[[-6.018,-4.609],[3.977,-3.7]],"o":[[2.912,2.513],[1.154,6.628]],"v":[[-104.324,-37.133],[-101.848,-58.126]],"c":true},"ix":2},"nm":"Path 6","mn":"ADBE Vector Shape - Group","hd":false},{"ind":6,"ty":"sh","ix":7,"ks":{"a":0,"k":{"i":[[-7.726,-0.746],[3.107,-2.639]],"o":[[2.163,0.594],[1.163,5.455]],"v":[[-76.654,71.784],[-76.831,51.23]],"c":true},"ix":2},"nm":"Path 7","mn":"ADBE Vector Shape - Group","hd":false},{"ind":7,"ty":"sh","ix":8,"ks":{"a":0,"k":{"i":[[8.397,-1.016],[0.562,-3.242],[-4.696,3.836]],"o":[[0.513,3.466],[-0.209,3.149],[0.761,-4.75]],"v":[[40.314,1.723],[36.94,11.204],[41.052,21.317]],"c":true},"ix":2},"nm":"Path 8","mn":"ADBE Vector Shape - Group","hd":false},{"ind":8,"ty":"sh","ix":9,"ks":{"a":0,"k":{"i":[[8.397,-1.015],[0.561,-3.242],[-4.695,3.835]],"o":[[0.513,3.466],[-0.21,3.15],[0.762,-4.75]],"v":[[7.313,-107.919],[3.94,-98.438],[8.05,-88.325]],"c":true},"ix":2},"nm":"Path 9","mn":"ADBE Vector Shape - Group","hd":false},{"ind":9,"ty":"sh","ix":10,"ks":{"a":0,"k":{"i":[[8.603,-4.867],[-3.11,-6.791]],"o":[[-0.952,6.226],[3.396,10.105]],"v":[[-221.089,6.676],[-223.721,25.253]],"c":true},"ix":2},"nm":"Path 10","mn":"ADBE Vector Shape - Group","hd":false},{"ind":10,"ty":"sh","ix":11,"ks":{"a":0,"k":{"i":[[5.864,-0.368],[-2.737,-4.184],[-3.124,-0.752]],"o":[[-1.246,4.506],[0.575,2.218],[5.607,-2.201]],"v":[[85.479,18.218],[84.902,31.518],[86.605,36.697]],"c":true},"ix":2},"nm":"Path 11","mn":"ADBE Vector Shape - Group","hd":false},{"ind":11,"ty":"sh","ix":12,"ks":{"a":0,"k":{"i":[[5.865,-0.368],[-2.737,-4.184],[-3.124,-0.751]],"o":[[-1.244,4.505],[0.575,2.218],[5.606,-2.201]],"v":[[127.788,-69.869],[127.212,-56.57],[128.916,-51.391]],"c":true},"ix":2},"nm":"Path 12","mn":"ADBE Vector Shape - Group","hd":false},{"ind":12,"ty":"sh","ix":13,"ks":{"a":0,"k":{"i":[[5.865,-0.368],[-2.737,-4.184],[-3.124,-0.751]],"o":[[-1.245,4.506],[0.574,2.218],[5.606,-2.201]],"v":[[27.475,120.051],[26.898,133.352],[28.604,138.53]],"c":true},"ix":2},"nm":"Path 13","mn":"ADBE Vector Shape - Group","hd":false},{"ind":13,"ty":"sh","ix":14,"ks":{"a":0,"k":{"i":[[5.865,-0.368],[-2.738,-4.185],[-3.123,-0.751]],"o":[[-1.245,4.506],[0.574,2.217],[5.607,-2.201]],"v":[[-154.993,44.665],[-155.57,57.966],[-153.867,63.144]],"c":true},"ix":2},"nm":"Path 14","mn":"ADBE Vector Shape - Group","hd":false},{"ind":14,"ty":"sh","ix":15,"ks":{"a":0,"k":{"i":[[8.397,-1.015],[0.562,-3.242],[-4.696,3.834]],"o":[[0.513,3.466],[-0.209,3.15],[0.761,-4.751]],"v":[[-132.182,-18.929],[-135.557,-9.449],[-131.445,0.666]],"c":true},"ix":2},"nm":"Path 15","mn":"ADBE Vector Shape - Group","hd":false},{"ind":15,"ty":"sh","ix":16,"ks":{"a":0,"k":{"i":[[5.136,-2.269],[0.806,-7.306]],"o":[[-3.936,10.977],[9.316,6.308]],"v":[[95.721,73.822],[97.99,93.767]],"c":true},"ix":2},"nm":"Path 16","mn":"ADBE Vector Shape - Group","hd":false},{"ind":16,"ty":"sh","ix":17,"ks":{"a":0,"k":{"i":[[8.397,-1.015],[0.561,-3.242],[-4.695,3.835]],"o":[[0.513,3.466],[-0.21,3.15],[0.762,-4.75]],"v":[[-52.355,-24.488],[-55.727,-15.007],[-51.617,-4.894]],"c":true},"ix":2},"nm":"Path 17","mn":"ADBE Vector Shape - Group","hd":false},{"ind":17,"ty":"sh","ix":18,"ks":{"a":0,"k":{"i":[[8.397,-1.016],[0.561,-3.242],[-4.696,3.835]],"o":[[0.514,3.465],[-0.21,3.149],[0.761,-4.75]],"v":[[-60.471,93.846],[-63.844,103.326],[-59.734,113.44]],"c":true},"ix":2},"nm":"Path 18","mn":"ADBE Vector Shape - Group","hd":false},{"ind":18,"ty":"sh","ix":19,"ks":{"a":0,"k":{"i":[[4.123,-0.025],[-0.151,-4.863],[8.447,11.844]],"o":[[-5.436,3.084],[1.028,23.533],[-2.409,-2.47]],"v":[[-25.967,-95.761],[-23.865,-80.337],[-20.503,-86.637]],"c":true},"ix":2},"nm":"Path 19","mn":"ADBE Vector Shape - Group","hd":false},{"ind":19,"ty":"sh","ix":20,"ks":{"a":0,"k":{"i":[[6.877,15.182],[-5.235,-16.983]],"o":[[1.059,-26.103],[5.656,20.057]],"v":[[-34.338,-87.493],[-39.477,-83.695]],"c":true},"ix":2},"nm":"Path 20","mn":"ADBE Vector Shape - Group","hd":false},{"ind":20,"ty":"sh","ix":21,"ks":{"a":0,"k":{"i":[[0.859,-0.572],[-1.15,-1.521],[-3.532,-7.268],[9.663,-3.391],[-0.238,-0.212]],"o":[[-2.825,0.794],[8.493,6.851],[10.515,0.138],[-0.33,-0.212],[-0.652,-0.406]],"v":[[69.993,93.299],[70.32,96.549],[74.613,121.759],[70.86,94.615],[73.149,95.572]],"c":true},"ix":2},"nm":"Path 21","mn":"ADBE Vector Shape - Group","hd":false},{"ind":21,"ty":"sh","ix":22,"ks":{"a":0,"k":{"i":[[3.251,3.988],[4.852,2.941],[-0.867,-2.917],[1.642,-6.416]],"o":[[-5.248,-3.953],[-5.005,-0.932],[2.298,6.092],[6.508,9.246]],"v":[[65.206,102.227],[59.062,86.047],[56.442,97.73],[60.66,113.385]],"c":true},"ix":2},"nm":"Path 22","mn":"ADBE Vector Shape - Group","hd":false},{"ind":22,"ty":"sh","ix":23,"ks":{"a":0,"k":{"i":[[0.859,-0.572],[-1.15,-1.52],[-3.532,-7.269],[9.664,-3.392],[-0.238,-0.213]],"o":[[-2.825,0.794],[8.493,6.852],[10.515,0.138],[-0.33,-0.212],[-0.652,-0.407]],"v":[[72.24,-40.13],[72.566,-36.881],[76.86,-11.67],[73.107,-38.813],[75.396,-37.857]],"c":true},"ix":2},"nm":"Path 23","mn":"ADBE Vector Shape - Group","hd":false},{"ind":23,"ty":"sh","ix":24,"ks":{"a":0,"k":{"i":[[3.251,3.987],[4.853,2.942],[-0.867,-2.918],[1.642,-6.416]],"o":[[-5.248,-3.954],[-5.005,-0.932],[2.297,6.091],[6.507,9.246]],"v":[[67.453,-31.201],[61.309,-47.382],[58.69,-35.699],[62.906,-20.044]],"c":true},"ix":2},"nm":"Path 24","mn":"ADBE Vector Shape - Group","hd":false},{"ind":24,"ty":"sh","ix":25,"ks":{"a":0,"k":{"i":[[1.232,-0.833],[1.859,-6.689],[16.248,3.523]],"o":[[-6.558,3.195],[-0.521,29.823],[1.33,0.793]],"v":[[154.165,-21.115],[158.708,-2.085],[156.334,-17.342]],"c":true},"ix":2},"nm":"Path 25","mn":"ADBE Vector Shape - Group","hd":false},{"ind":25,"ty":"sh","ix":26,"ks":{"a":0,"k":{"i":[[11.664,20.72],[-0.936,-22.376]],"o":[[1.463,-23.446],[4.634,16.148]],"v":[[146.308,-13.012],[139.808,-13.617]],"c":true},"ix":2},"nm":"Path 26","mn":"ADBE Vector Shape - Group","hd":false},{"ind":26,"ty":"sh","ix":27,"ks":{"a":0,"k":{"i":[[4.124,-0.025],[-0.151,-4.863],[8.448,11.844]],"o":[[-5.436,3.084],[1.027,23.532],[-2.408,-2.47]],"v":[[-152.044,-60.115],[-149.94,-44.691],[-146.579,-50.99]],"c":true},"ix":2},"nm":"Path 27","mn":"ADBE Vector Shape - Group","hd":false},{"ind":27,"ty":"sh","ix":28,"ks":{"a":0,"k":{"i":[[6.877,15.181],[-5.236,-16.984]],"o":[[1.06,-26.103],[5.655,20.057]],"v":[[-160.414,-51.847],[-165.552,-48.049]],"c":true},"ix":2},"nm":"Path 28","mn":"ADBE Vector Shape - Group","hd":false},{"ind":28,"ty":"sh","ix":29,"ks":{"a":0,"k":{"i":[[0.859,-0.573],[-1.15,-1.521],[-3.532,-7.269],[9.662,-3.391],[-0.238,-0.212]],"o":[[-2.825,0.793],[8.492,6.851],[10.514,0.138],[-0.33,-0.211],[-0.653,-0.407]],"v":[[-81.352,-16.326],[-81.025,-13.077],[-76.73,12.133],[-80.484,-15.012],[-78.195,-14.055]],"c":true},"ix":2},"nm":"Path 29","mn":"ADBE Vector Shape - Group","hd":false},{"ind":29,"ty":"sh","ix":30,"ks":{"a":0,"k":{"i":[[3.251,3.988],[4.853,2.942],[-0.867,-2.917],[1.642,-6.416]],"o":[[-5.248,-3.953],[-5.006,-0.932],[2.298,6.092],[6.508,9.246]],"v":[[-86.139,-7.4],[-92.283,-23.58],[-94.902,-11.896],[-90.686,3.758]],"c":true},"ix":2},"nm":"Path 30","mn":"ADBE Vector Shape - Group","hd":false},{"ind":30,"ty":"sh","ix":31,"ks":{"a":0,"k":{"i":[[1.231,-0.834],[1.859,-6.689],[16.248,3.523]],"o":[[-6.557,3.195],[-0.52,29.823],[1.33,0.792]],"v":[[16.307,34.643],[20.85,53.674],[18.476,38.417]],"c":true},"ix":2},"nm":"Path 31","mn":"ADBE Vector Shape - Group","hd":false},{"ind":31,"ty":"sh","ix":32,"ks":{"a":0,"k":{"i":[[11.665,20.719],[-0.936,-22.377]],"o":[[1.465,-23.447],[4.634,16.148]],"v":[[8.449,42.747],[1.95,42.143]],"c":true},"ix":2},"nm":"Path 32","mn":"ADBE Vector Shape - Group","hd":false},{"ind":32,"ty":"sh","ix":33,"ks":{"a":0,"k":{"i":[[4.123,-0.026],[-0.151,-4.863],[8.447,11.843]],"o":[[-5.436,3.084],[1.028,23.533],[-2.409,-2.471]],"v":[[138.452,54.565],[140.554,69.988],[143.916,63.689]],"c":true},"ix":2},"nm":"Path 33","mn":"ADBE Vector Shape - Group","hd":false},{"ind":33,"ty":"sh","ix":34,"ks":{"a":0,"k":{"i":[[6.878,15.181],[-5.235,-16.983]],"o":[[1.061,-26.103],[5.656,20.057]],"v":[[130.08,62.832],[124.942,66.63]],"c":true},"ix":2},"nm":"Path 34","mn":"ADBE Vector Shape - Group","hd":false},{"ind":34,"ty":"sh","ix":35,"ks":{"a":0,"k":{"i":[[4.123,-0.026],[-0.15,-4.863],[8.448,11.844]],"o":[[-5.437,3.084],[1.028,23.532],[-2.409,-2.47]],"v":[[29.683,-146.588],[31.785,-131.163],[35.146,-137.464]],"c":true},"ix":2},"nm":"Path 35","mn":"ADBE Vector Shape - Group","hd":false},{"ind":35,"ty":"sh","ix":36,"ks":{"a":0,"k":{"i":[[6.877,15.181],[-5.236,-16.984]],"o":[[1.06,-26.103],[5.655,20.057]],"v":[[21.311,-138.32],[16.173,-134.521]],"c":true},"ix":2},"nm":"Path 36","mn":"ADBE Vector Shape - Group","hd":false},{"ind":36,"ty":"sh","ix":37,"ks":{"a":0,"k":{"i":[[0.859,-0.572],[-1.15,-1.521],[-3.532,-7.269],[9.662,-3.391],[-0.238,-0.212]],"o":[[-2.825,0.794],[8.492,6.852],[10.514,0.138],[-0.33,-0.212],[-0.652,-0.406]],"v":[[90.587,-104.95],[90.913,-101.701],[95.208,-76.49],[91.455,-103.635],[93.744,-102.679]],"c":true},"ix":2},"nm":"Path 37","mn":"ADBE Vector Shape - Group","hd":false},{"ind":37,"ty":"sh","ix":38,"ks":{"a":0,"k":{"i":[[3.251,3.987],[4.853,2.942],[-0.867,-2.918],[1.642,-6.417]],"o":[[-5.249,-3.954],[-5.006,-0.932],[2.298,6.091],[6.507,9.246]],"v":[[85.801,-96.021],[79.656,-112.202],[77.037,-100.519],[81.255,-84.864]],"c":true},"ix":2},"nm":"Path 38","mn":"ADBE Vector Shape - Group","hd":false},{"ind":38,"ty":"sh","ix":39,"ks":{"a":0,"k":{"i":[[1.231,-0.833],[1.859,-6.69],[16.248,3.523]],"o":[[-6.558,3.195],[-0.521,29.822],[1.33,0.792]],"v":[[193.301,-48.968],[197.846,-29.937],[195.471,-45.193]],"c":true},"ix":2},"nm":"Path 39","mn":"ADBE Vector Shape - Group","hd":false},{"ind":39,"ty":"sh","ix":40,"ks":{"a":0,"k":{"i":[[11.664,20.719],[-0.934,-22.378]],"o":[[1.464,-23.447],[4.635,16.147]],"v":[[185.445,-40.864],[178.945,-41.468]],"c":true},"ix":2},"nm":"Path 40","mn":"ADBE Vector Shape - Group","hd":false},{"ind":40,"ty":"sh","ix":41,"ks":{"a":0,"k":{"i":[[4.124,-0.026],[-0.151,-4.864],[8.447,11.843]],"o":[[-5.435,3.084],[1.027,23.532],[-2.409,-2.47]],"v":[[-186.373,20.811],[-184.27,36.235],[-180.908,29.936]],"c":true},"ix":2},"nm":"Path 41","mn":"ADBE Vector Shape - Group","hd":false},{"ind":41,"ty":"sh","ix":42,"ks":{"a":0,"k":{"i":[[6.878,15.181],[-5.236,-16.983]],"o":[[1.06,-26.103],[5.655,20.058]],"v":[[-194.744,29.079],[-199.882,32.876]],"c":true},"ix":2},"nm":"Path 42","mn":"ADBE Vector Shape - Group","hd":false},{"ind":42,"ty":"sh","ix":43,"ks":{"a":0,"k":{"i":[[0.858,-0.572],[-1.15,-1.52],[-3.532,-7.269],[9.663,-3.391],[-0.238,-0.213]],"o":[[-2.825,0.794],[8.492,6.851],[10.514,0.138],[-0.33,-0.212],[-0.652,-0.407]],"v":[[-115.68,64.598],[-115.354,67.847],[-111.061,93.059],[-114.813,65.914],[-112.524,66.87]],"c":true},"ix":2},"nm":"Path 43","mn":"ADBE Vector Shape - Group","hd":false},{"ind":43,"ty":"sh","ix":44,"ks":{"a":0,"k":{"i":[[3.251,3.987],[4.852,2.942],[-0.868,-2.918],[1.641,-6.416]],"o":[[-5.249,-3.954],[-5.006,-0.932],[2.297,6.091],[6.507,9.246]],"v":[[-120.467,73.526],[-126.611,57.345],[-129.23,69.029],[-125.014,84.684]],"c":true},"ix":2},"nm":"Path 44","mn":"ADBE Vector Shape - Group","hd":false},{"ind":44,"ty":"sh","ix":45,"ks":{"a":0,"k":{"i":[[18.764,7.033],[1.348,-5.642]],"o":[[-4.757,3.46],[-1.876,34.378]],"v":[[208.067,13.217],[211.611,28.704]],"c":true},"ix":2},"nm":"Path 45","mn":"ADBE Vector Shape - Group","hd":false},{"ind":45,"ty":"sh","ix":46,"ks":{"a":0,"k":{"i":[[3.969,4.65],[0.212,-19.559],[1.663,-6.379]],"o":[[-1.333,-7.178],[-0.045,6.51],[5.787,11.446]],"v":[[201.7,22.6],[193.769,15.915],[197.492,33.275]],"c":true},"ix":2},"nm":"Path 46","mn":"ADBE Vector Shape - Group","hd":false},{"ind":46,"ty":"sh","ix":47,"ks":{"a":0,"k":{"i":[[1.231,-0.834],[1.86,-6.689],[16.249,3.523]],"o":[[-6.558,3.194],[-0.52,29.823],[1.331,0.793]],"v":[[-18.023,115.569],[-13.48,134.599],[-15.854,119.342]],"c":true},"ix":2},"nm":"Path 47","mn":"ADBE Vector Shape - Group","hd":false},{"ind":47,"ty":"sh","ix":48,"ks":{"a":0,"k":{"i":[[-1.666,-6.258],[-4.656,15.773]],"o":[[15.08,27.725],[8.64,-22.625]],"v":[[-26.016,123.728],[-32.577,114.322]],"c":true},"ix":2},"nm":"Path 48","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.426999978458,0.769000004787,0.647000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[227.081,164.673],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":49,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":48,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"grass base","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[800.001,553.981,0],"ix":2,"l":2},"a":{"a":0,"k":[247.322,142.322,0],"ix":1,"l":2},"s":{"a":0,"k":[235.273,235.273,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[494.394,142.322],[247.322,284.394],[0.25,147.322],[252.322,0.25]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.510000011968,0.795999983245,0.698000021542,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":48,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"grass shadow","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[801.488,775.075,0],"ix":2,"l":2},"a":{"a":0,"k":[247.954,95.489,0],"ix":1,"l":2},"s":{"a":0,"k":[235.273,235.273,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.264,-1.265],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[246.44,-93.974],[246.44,-52.833],[-0.632,95.238],[-247.704,-47.833],[-247.704,-88.974]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.051000000449,0.616000007181,0.470999983245,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[247.954,95.489],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":48,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"land","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[801.488,803.087,0],"ix":2,"l":2},"a":{"a":0,"k":[247.954,97.87,0],"ix":1,"l":2},"s":{"a":0,"k":[235.273,235.273,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.264,-1.296],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[246.44,-96.325],[246.44,-54.156],[-0.632,97.62],[-247.704,-49.031],[-247.704,-91.2]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.458999992819,0.395999983245,0.372999991623,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[247.954,97.871],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":48,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"land-shadow","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[800.001,855.562,0],"ix":2,"l":2},"a":{"a":0,"k":[264.864,87.458,0],"ix":1,"l":2},"s":{"a":0,"k":[235.273,235.273,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[264.614,-77.344],[0,87.208],[-264.614,-71.855],[-242.996,-81.975],[241.488,-87.208]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.877999997606,0.885999971278,0.885999971278,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[264.864,87.458],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":48,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/client/public/Animation-1707227652919.json b/client/public/Animation-1707227652919.json deleted file mode 100644 index 364986a50..000000000 --- a/client/public/Animation-1707227652919.json +++ /dev/null @@ -1 +0,0 @@ -{"v":"5.5.8","fr":29.9700012207031,"ip":0,"op":75.0000030548126,"w":503,"h":519,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Tanah/forest Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[247.5,467.5,0],"ix":2},"a":{"a":0,"k":[252,464,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.694,0.694,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":0,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.793,0.793,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.115,0.115,0]},"t":1,"s":[1.006,1.006,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.811,0.811,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.139,0.139,0]},"t":2,"s":[3.689,3.689,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.819,0.819,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.149,0.149,0]},"t":3,"s":[7.678,7.678,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.823,0.823,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.154,0.154,0]},"t":4,"s":[12.718,12.718,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.826,0.826,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.158,0.158,0]},"t":5,"s":[18.623,18.623,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.827,0.827,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.16,0.16,0]},"t":6,"s":[25.248,25.248,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.829,0.829,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.161,0.161,0]},"t":7,"s":[32.48,32.48,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.83,0.83,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.162,0.162,0]},"t":8,"s":[40.224,40.224,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.831,0.831,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.163,0.163,0]},"t":9,"s":[48.393,48.393,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.832,0.832,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.164,0.164,0]},"t":10,"s":[56.906,56.906,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.165,0.165,0]},"t":11,"s":[65.68,65.68,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.836,0.836,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":12,"s":[74.611,74.611,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.842,0.842,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.169,0.169,0]},"t":13,"s":[83.555,83.555,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.822,0.822,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.177,0.177,0]},"t":14,"s":[92.25,92.25,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.985,0.985,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.157,0.157,0]},"t":15,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.83,0.83,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.018,-0.018,0]},"t":16,"s":[108.815,108.815,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.959,0.959,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.163,0.163,0]},"t":17,"s":[101.538,101.538,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.786,0.786,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.079,-0.079,0]},"t":18,"s":[93.954,93.954,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.94,0.94,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.136,0.136,0]},"t":19,"s":[97.844,97.844,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.69,0.69,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.213,-0.213,0]},"t":20,"s":[103.955,103.955,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.924,0.924,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.114,0.114,0]},"t":21,"s":[102.235,102.235,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.231,0.231,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.854,-0.854,0]},"t":22,"s":[97.557,97.557,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.909,0.909,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.093,0.093,0]},"t":23,"s":[97.973,97.973,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.585,1.585,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.037,1.037,0]},"t":24,"s":[101.396,101.396,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.895,0.895,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.073,0.073,0]},"t":25,"s":[101.695,101.695,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.128,1.128,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.399,0.399,0]},"t":26,"s":[99.296,99.296,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.879,0.879,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.051,0.051,0]},"t":27,"s":[98.663,98.663,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.033,1.033,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.266,0.266,0]},"t":28,"s":[100.271,100.271,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.859,0.859,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.024,0.024,0]},"t":29,"s":[101.005,101.005,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.989,0.989,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.204,0.204,0]},"t":30,"s":[99.981,99.981,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.013,-0.013,0]},"t":31,"s":[99.277,99.277,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.962,0.962,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":32,"s":[99.887,99.887,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.792,0.792,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.071,-0.071,0]},"t":33,"s":[100.498,100.498,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.942,0.942,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.139,0.139,0]},"t":34,"s":[100.168,100.168,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.706,0.706,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.191,-0.191,0]},"t":35,"s":[99.672,99.672,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.926,0.926,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.116,0.116,0]},"t":36,"s":[99.823,99.823,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.351,0.351,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.686,-0.686,0]},"t":37,"s":[100.204,100.204,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.911,0.911,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.096,0.096,0]},"t":38,"s":[100.163,100.163,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.769,1.769,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.293,1.293,0]},"t":39,"s":[99.882,99.882,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.896,0.896,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.075,0.075,0]},"t":40,"s":[99.863,99.863,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.146,1.146,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.424,0.424,0]},"t":41,"s":[100.06,100.06,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.88,0.88,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.053,0.053,0]},"t":42,"s":[100.109,100.109,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.035,1.035,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.275,0.275,0]},"t":43,"s":[99.976,99.976,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.917,0.917,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.025,0.025,0]},"t":44,"s":[99.918,99.918,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.007,0.007,0]},"t":45,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":46,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":47,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":48,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":49,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":50,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":51,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":52,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":53,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":54,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":55,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":56,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":57,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":58,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":59,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":60,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":61,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":62,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":63,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":64,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":65,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":66,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":67,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":68,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":69,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":70,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":71,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":72,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":73,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":74,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":75,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":76,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":77,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":78,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":79,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":80,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":81,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":82,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":83,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":84,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":85,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":86,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":87,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":88,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":89,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":90,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":91,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":92,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":93,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":94,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":95,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":96,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":97,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":98,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":99,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":100,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":101,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":102,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":103,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":104,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":105,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":106,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":107,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":108,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":109,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":110,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":111,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":112,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":113,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":114,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":115,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":116,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":117,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":118,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":119,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":120,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":121,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":122,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":123,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":124,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":125,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":126,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":127,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":128,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":129,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":130,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":131,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":132,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":133,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":134,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":135,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":136,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":137,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":138,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":139,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":140,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":141,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":142,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":143,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":144,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":145,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":146,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":147,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":148,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":149,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":150,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":151,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":152,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":153,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":154,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":155,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":156,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":157,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":158,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":159,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":160,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":161,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":162,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":163,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":164,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":165,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":166,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":167,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":168,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":169,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":171,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":172,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":173,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":174,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":175,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":176,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":177,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":178,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":179,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":180,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":181,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":182,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":183,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":184,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":185,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":186,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":187,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":188,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":189,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":190,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":191,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":192,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":193,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":194,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":195,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":196,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":197,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":198,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":199,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":200,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":201,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":202,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":203,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":204,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":205,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":206,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":207,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":208,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":209,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":210,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":211,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":212,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":213,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":214,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":215,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":216,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":217,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":218,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":219,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":220,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":221,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":222,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":223,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":224,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":225,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":226,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":227,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":228,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":229,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":230,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":231,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":232,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":233,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":234,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":235,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":236,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":237,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":238,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":239,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":240,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":241,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":242,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":243,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":244,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":245,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":246,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":247,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":248,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":249,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":250,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":251,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":252,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":253,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":254,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":255,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":256,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":257,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":258,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":259,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":260,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":261,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":262,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":263,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":264,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":265,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":266,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":267,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":268,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":269,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":270,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":271,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":272,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":273,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":274,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":275,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":276,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":277,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":278,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":279,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":280,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":281,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":282,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":283,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":284,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":285,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":286,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":287,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":288,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":289,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":290,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":291,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":292,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":293,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":294,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":295,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":296,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":297,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":298,"s":[100,100,100]},{"t":299.00001217852,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.285,-2.164],[0,0],[0,0],[0,0],[-2.168,-0.238],[0,0]],"o":[[0,0],[0,0],[0,0],[0.285,-2.164],[0,0],[2.168,-0.238]],"v":[[255.988,-14.076],[255.988,17.775],[-255.988,17.775],[-255.988,-14.076],[-251.574,-17.536],[251.575,-17.536]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.141000007181,0.681999954523,0.372999991623,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[256.012,458.896],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.285,-2.165],[0,0],[-2.172,0.23],[0,0],[-0.285,2.164],[0,0],[2.172,-0.23]],"o":[[0,0],[-2.172,-0.23],[0,0],[0.285,2.164],[0,0],[2.172,0.23],[0,0],[-0.285,-2.165],[0,0]],"v":[[-45.017,-35.205],[-251.574,-35.205],[-255.988,-31.728],[-255.988,31.937],[-251.574,35.413],[251.576,35.413],[255.989,31.937],[255.989,-31.728],[251.576,-35.205]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.298000021542,0.501999978458,0.337000020345,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[256.012,476.565],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300.00001221925,"st":10.0000004073083,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Pokok Middle/forest Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[259.5,479.5,0],"ix":2},"a":{"a":0,"k":[264,476,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.694,0.694,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":5,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.793,0.793,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.115,0.115,0]},"t":6,"s":[1.006,1.006,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.811,0.811,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.139,0.139,0]},"t":7,"s":[3.689,3.689,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.819,0.819,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.149,0.149,0]},"t":8,"s":[7.678,7.678,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.823,0.823,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.154,0.154,0]},"t":9,"s":[12.718,12.718,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.826,0.826,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.158,0.158,0]},"t":10,"s":[18.623,18.623,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.827,0.827,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.16,0.16,0]},"t":11,"s":[25.248,25.248,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.829,0.829,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.161,0.161,0]},"t":12,"s":[32.48,32.48,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.83,0.83,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.162,0.162,0]},"t":13,"s":[40.224,40.224,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.831,0.831,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.163,0.163,0]},"t":14,"s":[48.393,48.393,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.832,0.832,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.164,0.164,0]},"t":15,"s":[56.906,56.906,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.165,0.165,0]},"t":16,"s":[65.68,65.68,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.836,0.836,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":17,"s":[74.611,74.611,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.842,0.842,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.169,0.169,0]},"t":18,"s":[83.555,83.555,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.822,0.822,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.177,0.177,0]},"t":19,"s":[92.25,92.25,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.985,0.985,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.157,0.157,0]},"t":20,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.83,0.83,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.018,-0.018,0]},"t":21,"s":[108.815,108.815,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.959,0.959,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.163,0.163,0]},"t":22,"s":[101.538,101.538,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.786,0.786,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.079,-0.079,0]},"t":23,"s":[93.954,93.954,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.94,0.94,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.136,0.136,0]},"t":24,"s":[97.844,97.844,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.69,0.69,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.213,-0.213,0]},"t":25,"s":[103.955,103.955,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.924,0.924,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.114,0.114,0]},"t":26,"s":[102.235,102.235,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.231,0.231,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.854,-0.854,0]},"t":27,"s":[97.557,97.557,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.909,0.909,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.093,0.093,0]},"t":28,"s":[97.973,97.973,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.585,1.585,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.037,1.037,0]},"t":29,"s":[101.396,101.396,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.895,0.895,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.073,0.073,0]},"t":30,"s":[101.695,101.695,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.128,1.128,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.399,0.399,0]},"t":31,"s":[99.296,99.296,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.879,0.879,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.051,0.051,0]},"t":32,"s":[98.663,98.663,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.033,1.033,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.266,0.266,0]},"t":33,"s":[100.271,100.271,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.859,0.859,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.024,0.024,0]},"t":34,"s":[101.005,101.005,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.989,0.989,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.204,0.204,0]},"t":35,"s":[99.981,99.981,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.013,-0.013,0]},"t":36,"s":[99.277,99.277,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.962,0.962,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":37,"s":[99.887,99.887,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.792,0.792,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.071,-0.071,0]},"t":38,"s":[100.498,100.498,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.942,0.942,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.139,0.139,0]},"t":39,"s":[100.168,100.168,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.706,0.706,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.191,-0.191,0]},"t":40,"s":[99.672,99.672,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.926,0.926,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.116,0.116,0]},"t":41,"s":[99.823,99.823,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.351,0.351,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.686,-0.686,0]},"t":42,"s":[100.204,100.204,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.911,0.911,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.096,0.096,0]},"t":43,"s":[100.163,100.163,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.769,1.769,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.293,1.293,0]},"t":44,"s":[99.882,99.882,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.896,0.896,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.075,0.075,0]},"t":45,"s":[99.863,99.863,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.146,1.146,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.424,0.424,0]},"t":46,"s":[100.06,100.06,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.88,0.88,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.053,0.053,0]},"t":47,"s":[100.109,100.109,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.035,1.035,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.275,0.275,0]},"t":48,"s":[99.976,99.976,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.917,0.917,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.025,0.025,0]},"t":49,"s":[99.918,99.918,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.007,0.007,0]},"t":50,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":51,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":52,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":53,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":54,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":55,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":56,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":57,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":58,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":59,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":60,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":61,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":62,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":63,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":64,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":65,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":66,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":67,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":68,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":69,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":70,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":71,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":72,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":73,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":74,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":75,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":76,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":77,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":78,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":79,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":80,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":81,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":82,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":83,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":84,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":85,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":86,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":87,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":88,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":89,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":90,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":91,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":92,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":93,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":94,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":95,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":96,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":97,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":98,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":99,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":100,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":101,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":102,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":103,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":104,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":105,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":106,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":107,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":108,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":109,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":110,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":111,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":112,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":113,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":114,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":115,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":116,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":117,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":118,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":119,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":120,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":121,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":122,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":123,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":124,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":125,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":126,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":127,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":128,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":129,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":130,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":131,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":132,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":133,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":134,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":135,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":136,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":137,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":138,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":139,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":140,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":141,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":142,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":143,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":144,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":145,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":146,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":147,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":148,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":149,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":150,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":151,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":152,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":153,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":154,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":155,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":156,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":157,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":158,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":159,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":160,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":161,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":162,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":163,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":164,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":165,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":166,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":167,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":168,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":169,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":171,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":172,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":173,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":174,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":175,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":176,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":177,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":178,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":179,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":180,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":181,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":182,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":183,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":184,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":185,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":186,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":187,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":188,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":189,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":190,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":191,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":192,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":193,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":194,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":195,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":196,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":197,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":198,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":199,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":200,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":201,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":202,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":203,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":204,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":205,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":206,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":207,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":208,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":209,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":210,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":211,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":212,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":213,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":214,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":215,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":216,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":217,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":218,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":219,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":220,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":221,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":222,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":223,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":224,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":225,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":226,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":227,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":228,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":229,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":230,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":231,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":232,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":233,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":234,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":235,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":236,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":237,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":238,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":239,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":240,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":241,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":242,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":243,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":244,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":245,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":246,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":247,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":248,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":249,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":250,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":251,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":252,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":253,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":254,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":255,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":256,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":257,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":258,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":259,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":260,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":261,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":262,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":263,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":264,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":265,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":266,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":267,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":268,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":269,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":270,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":271,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":272,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":273,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":274,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":275,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":276,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":277,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":278,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":279,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":280,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":281,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":282,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":283,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":284,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":285,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":286,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":287,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":288,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":289,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":290,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":291,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":292,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":293,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":294,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":295,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":296,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":297,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":298,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":299,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":300,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":301,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":302,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":303,"s":[100,100,100]},{"t":304.000012382174,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[102.483,-3.972],[0.703,-0.074],[7.062,0],[6.269,0.176],[0.707,-0.016],[0,0],[0,0],[-11.109,-0.825],[0,0],[-11.828,0],[-21.245,4.406]],"o":[[0,0],[-0.707,-0.016],[-6.27,0.176],[-7.062,0],[-0.703,-0.074],[-102.484,-3.972],[0,0],[10.87,2.41],[0,0],[9.269,0.707],[21.694,0.418],[0,0]],"v":[[132.408,16.243],[22.155,51.198],[20.038,51.284],[0,51.55],[-20.038,51.284],[-22.155,51.198],[-132.408,16.243],[-64.614,-51.551],[-31.6,-46.695],[-31.514,-46.695],[0,-45.547],[64.614,-51.551]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.298000021542,0.501999978458,0.337000020345,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[256.012,328.019],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-3.929,-26.307],[0,0],[-0.36,26.597]],"o":[[0.355,26.597],[0,0],[3.933,-26.307],[0,0]],"v":[[20.04,-39.723],[26.481,39.723],[-26.481,39.723],[-20.036,-39.723]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501999978458,0.325,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[256.01,410.464],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[22.069,-5.648],[15.577,0.363],[15.203,3.41],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[-15.203,3.41],[-15.578,0.363],[-22.069,-5.648],[0,0],[0,0],[0,0],[0,0]],"v":[[70.618,29.389],[46.342,43.779],[0,48.369],[-46.342,43.779],[-70.618,29.389],[-62.146,19.945],[0,-48.732],[62.141,19.945]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.078000005086,0.626999978458,0.522000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[256.012,145.829],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[37.694,-8.737],[21.695,0.418],[9.269,0.707],[0,0],[10.871,2.41],[0,0],[0,0],[0,0],[-15.577,0.364],[-15.202,3.41],[0,0]],"o":[[0,0],[-21.245,4.406],[-11.827,0],[0,0],[-11.109,-0.824],[-37.694,-8.737],[0,0],[0,0],[15.203,3.41],[15.577,0.364],[0,0],[0,0]],"v":[[105.925,16.383],[64.614,40.218],[0,46.223],[-31.514,45.074],[-31.6,45.074],[-64.614,40.218],[-105.925,16.383],[-64.704,-27.22],[-46.342,-46.64],[0,-42.051],[46.342,-46.64],[64.704,-27.22]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.141000007181,0.681999954523,0.372999991623,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[256.011,236.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":5.00000020365417,"op":305.000012422905,"st":5.00000020365417,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Pokok Left/forest Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[155.5,483.5,0],"ix":2},"a":{"a":0,"k":[160,480,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.694,0.694,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":19,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.793,0.793,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.115,0.115,0]},"t":20,"s":[1.006,1.006,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.811,0.811,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.139,0.139,0]},"t":21,"s":[3.689,3.689,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.819,0.819,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.149,0.149,0]},"t":22,"s":[7.678,7.678,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.823,0.823,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.154,0.154,0]},"t":23,"s":[12.718,12.718,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.826,0.826,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.158,0.158,0]},"t":24,"s":[18.623,18.623,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.827,0.827,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.16,0.16,0]},"t":25,"s":[25.248,25.248,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.829,0.829,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.161,0.161,0]},"t":26,"s":[32.48,32.48,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.83,0.83,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.162,0.162,0]},"t":27,"s":[40.224,40.224,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.831,0.831,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.163,0.163,0]},"t":28,"s":[48.393,48.393,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.832,0.832,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.164,0.164,0]},"t":29,"s":[56.906,56.906,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.165,0.165,0]},"t":30,"s":[65.68,65.68,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.836,0.836,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":31,"s":[74.611,74.611,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.842,0.842,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.169,0.169,0]},"t":32,"s":[83.555,83.555,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.822,0.822,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.177,0.177,0]},"t":33,"s":[92.25,92.25,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.985,0.985,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.157,0.157,0]},"t":34,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.83,0.83,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.018,-0.018,0]},"t":35,"s":[108.815,108.815,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.959,0.959,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.163,0.163,0]},"t":36,"s":[101.538,101.538,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.786,0.786,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.079,-0.079,0]},"t":37,"s":[93.954,93.954,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.94,0.94,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.136,0.136,0]},"t":38,"s":[97.844,97.844,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.69,0.69,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.213,-0.213,0]},"t":39,"s":[103.955,103.955,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.924,0.924,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.114,0.114,0]},"t":40,"s":[102.235,102.235,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.231,0.231,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.854,-0.854,0]},"t":41,"s":[97.557,97.557,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.909,0.909,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.093,0.093,0]},"t":42,"s":[97.973,97.973,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.585,1.585,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.037,1.037,0]},"t":43,"s":[101.396,101.396,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.895,0.895,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.073,0.073,0]},"t":44,"s":[101.695,101.695,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.128,1.128,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.399,0.399,0]},"t":45,"s":[99.296,99.296,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.879,0.879,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.051,0.051,0]},"t":46,"s":[98.663,98.663,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.033,1.033,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.266,0.266,0]},"t":47,"s":[100.271,100.271,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.859,0.859,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.024,0.024,0]},"t":48,"s":[101.005,101.005,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.989,0.989,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.204,0.204,0]},"t":49,"s":[99.981,99.981,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.013,-0.013,0]},"t":50,"s":[99.277,99.277,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.962,0.962,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":51,"s":[99.887,99.887,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.792,0.792,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.071,-0.071,0]},"t":52,"s":[100.498,100.498,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.942,0.942,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.139,0.139,0]},"t":53,"s":[100.168,100.168,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.706,0.706,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.191,-0.191,0]},"t":54,"s":[99.672,99.672,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.926,0.926,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.116,0.116,0]},"t":55,"s":[99.823,99.823,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.351,0.351,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.686,-0.686,0]},"t":56,"s":[100.204,100.204,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.911,0.911,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.096,0.096,0]},"t":57,"s":[100.163,100.163,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.769,1.769,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.293,1.293,0]},"t":58,"s":[99.882,99.882,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.896,0.896,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.075,0.075,0]},"t":59,"s":[99.863,99.863,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.146,1.146,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.424,0.424,0]},"t":60,"s":[100.06,100.06,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.88,0.88,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.053,0.053,0]},"t":61,"s":[100.109,100.109,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.035,1.035,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.275,0.275,0]},"t":62,"s":[99.976,99.976,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.917,0.917,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.025,0.025,0]},"t":63,"s":[99.918,99.918,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.007,0.007,0]},"t":64,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":65,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":66,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":67,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":68,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":69,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":70,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":71,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":72,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":73,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":74,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":75,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":76,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":77,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":78,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":79,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":80,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":81,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":82,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":83,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":84,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":85,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":86,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":87,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":88,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":89,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":90,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":91,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":92,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":93,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":94,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":95,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":96,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":97,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":98,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":99,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":100,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":101,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":102,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":103,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":104,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":105,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":106,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":107,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":108,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":109,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":110,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":111,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":112,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":113,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":114,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":115,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":116,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":117,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":118,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":119,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":120,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":121,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":122,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":123,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":124,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":125,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":126,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":127,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":128,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":129,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":130,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":131,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":132,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":133,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":134,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":135,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":136,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":137,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":138,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":139,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":140,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":141,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":142,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":143,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":144,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":145,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":146,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":147,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":148,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":149,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":150,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":151,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":152,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":153,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":154,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":155,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":156,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":157,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":158,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":159,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":160,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":161,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":162,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":163,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":164,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":165,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":166,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":167,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":168,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":169,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":171,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":172,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":173,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":174,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":175,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":176,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":177,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":178,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":179,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":180,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":181,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":182,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":183,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":184,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":185,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":186,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":187,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":188,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":189,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":190,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":191,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":192,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":193,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":194,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":195,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":196,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":197,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":198,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":199,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":200,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":201,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":202,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":203,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":204,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":205,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":206,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":207,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":208,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":209,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":210,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":211,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":212,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":213,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":214,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":215,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":216,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":217,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":218,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":219,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":220,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":221,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":222,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":223,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":224,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":225,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":226,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":227,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":228,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":229,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":230,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":231,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":232,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":233,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":234,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":235,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":236,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":237,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":238,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":239,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":240,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":241,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":242,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":243,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":244,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":245,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":246,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":247,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":248,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":249,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":250,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":251,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":252,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":253,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":254,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":255,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":256,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":257,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":258,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":259,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":260,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":261,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":262,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":263,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":264,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":265,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":266,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":267,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":268,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":269,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":270,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":271,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":272,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":273,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":274,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":275,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":276,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":277,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":278,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":279,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":280,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":281,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":282,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":283,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":284,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":285,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":286,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":287,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":288,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":289,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":290,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":291,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":292,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":293,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":294,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":295,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":296,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":297,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":298,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":299,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":300,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":301,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":302,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":303,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":304,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":305,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":306,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":307,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":308,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":309,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":310,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":311,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":312,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":313,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":314,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":315,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":316,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":317,"s":[100,100,100]},{"t":318.000012952406,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[102.483,-3.972],[0.703,-0.074],[7.062,0],[6.27,0.176],[0.707,-0.016],[0,0],[0,0],[-11.109,-0.825],[0,0],[-11.828,0],[-21.245,4.406]],"o":[[0,0],[-0.707,-0.016],[-6.27,0.176],[-7.063,0],[-0.703,-0.074],[-102.484,-3.972],[0,0],[10.871,2.41],[0,0],[9.27,0.707],[21.694,0.418],[0,0]],"v":[[132.408,16.243],[22.155,51.198],[20.038,51.284],[0,51.55],[-20.039,51.284],[-22.155,51.198],[-132.408,16.243],[-64.615,-51.551],[-31.601,-46.695],[-31.515,-46.695],[0,-45.547],[64.614,-51.551]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.141000007181,0.681999954523,0.372999991623,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[160.087,336.019],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-3.929,-26.307],[0,0],[-0.359,26.597]],"o":[[0.355,26.597],[0,0],[3.933,-26.307],[0,0]],"v":[[20.04,-39.723],[26.481,39.723],[-26.481,39.723],[-20.037,-39.723]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501999978458,0.325,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[160.085,418.464],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[22.069,-5.648],[15.577,0.363],[15.202,3.41],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[-15.203,3.41],[-15.577,0.363],[-22.07,-5.648],[0,0],[0,0],[0,0],[0,0]],"v":[[70.618,29.389],[46.342,43.779],[0,48.369],[-46.341,43.779],[-70.618,29.389],[-62.146,19.945],[0,-48.732],[62.142,19.945]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.149000010771,0.725,0.603999956916,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[160.087,153.829],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[37.694,-8.737],[21.695,0.418],[9.269,0.707],[0,0],[10.871,2.41],[0,0],[0,0],[0,0],[-15.577,0.364],[-15.203,3.41],[0,0]],"o":[[0,0],[-21.245,4.406],[-11.827,0],[0,0],[-11.109,-0.824],[-37.693,-8.737],[0,0],[0,0],[15.203,3.41],[15.577,0.364],[0,0],[0,0]],"v":[[105.925,16.383],[64.614,40.218],[0,46.222],[-31.514,45.073],[-31.6,45.073],[-64.615,40.218],[-105.925,16.383],[-64.704,-27.221],[-46.342,-46.64],[0,-42.051],[46.342,-46.64],[64.704,-27.221]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.078000005086,0.626999978458,0.522000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[160.087,244.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":19.0000007738859,"op":319.000012993136,"st":19.0000007738859,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Pokok Right/forest Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[355.5,451.5,0],"ix":2},"a":{"a":0,"k":[360,448,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.694,0.694,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":34,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.793,0.793,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.115,0.115,0]},"t":35,"s":[1.006,1.006,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.811,0.811,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.139,0.139,0]},"t":36,"s":[3.689,3.689,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.819,0.819,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.149,0.149,0]},"t":37,"s":[7.678,7.678,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.823,0.823,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.154,0.154,0]},"t":38,"s":[12.718,12.718,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.826,0.826,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.158,0.158,0]},"t":39,"s":[18.623,18.623,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.827,0.827,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.16,0.16,0]},"t":40,"s":[25.248,25.248,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.829,0.829,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.161,0.161,0]},"t":41,"s":[32.48,32.48,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.83,0.83,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.162,0.162,0]},"t":42,"s":[40.224,40.224,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.831,0.831,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.163,0.163,0]},"t":43,"s":[48.393,48.393,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.832,0.832,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.164,0.164,0]},"t":44,"s":[56.906,56.906,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.165,0.165,0]},"t":45,"s":[65.68,65.68,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.836,0.836,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":46,"s":[74.611,74.611,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.842,0.842,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.169,0.169,0]},"t":47,"s":[83.555,83.555,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.822,0.822,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.177,0.177,0]},"t":48,"s":[92.25,92.25,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.985,0.985,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.157,0.157,0]},"t":49,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.83,0.83,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.018,-0.018,0]},"t":50,"s":[108.815,108.815,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.959,0.959,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.163,0.163,0]},"t":51,"s":[101.538,101.538,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.786,0.786,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.079,-0.079,0]},"t":52,"s":[93.954,93.954,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.94,0.94,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.136,0.136,0]},"t":53,"s":[97.844,97.844,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.69,0.69,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.213,-0.213,0]},"t":54,"s":[103.955,103.955,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.924,0.924,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.114,0.114,0]},"t":55,"s":[102.235,102.235,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.231,0.231,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.854,-0.854,0]},"t":56,"s":[97.557,97.557,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.909,0.909,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.093,0.093,0]},"t":57,"s":[97.973,97.973,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.585,1.585,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.037,1.037,0]},"t":58,"s":[101.396,101.396,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.895,0.895,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.073,0.073,0]},"t":59,"s":[101.695,101.695,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.128,1.128,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.399,0.399,0]},"t":60,"s":[99.296,99.296,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.879,0.879,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.051,0.051,0]},"t":61,"s":[98.663,98.663,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.033,1.033,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.266,0.266,0]},"t":62,"s":[100.271,100.271,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.859,0.859,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.024,0.024,0]},"t":63,"s":[101.005,101.005,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.989,0.989,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.204,0.204,0]},"t":64,"s":[99.981,99.981,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.013,-0.013,0]},"t":65,"s":[99.277,99.277,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.962,0.962,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":66,"s":[99.887,99.887,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.792,0.792,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.071,-0.071,0]},"t":67,"s":[100.498,100.498,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.942,0.942,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.139,0.139,0]},"t":68,"s":[100.168,100.168,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.706,0.706,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.191,-0.191,0]},"t":69,"s":[99.672,99.672,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.926,0.926,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.116,0.116,0]},"t":70,"s":[99.823,99.823,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.351,0.351,1]},"o":{"x":[0.167,0.167,0.167],"y":[-0.686,-0.686,0]},"t":71,"s":[100.204,100.204,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.911,0.911,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.096,0.096,0]},"t":72,"s":[100.163,100.163,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.769,1.769,1]},"o":{"x":[0.167,0.167,0.167],"y":[1.293,1.293,0]},"t":73,"s":[99.882,99.882,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.896,0.896,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.075,0.075,0]},"t":74,"s":[99.863,99.863,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.146,1.146,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.424,0.424,0]},"t":75,"s":[100.06,100.06,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.88,0.88,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.053,0.053,0]},"t":76,"s":[100.109,100.109,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1.035,1.035,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.275,0.275,0]},"t":77,"s":[99.976,99.976,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.917,0.917,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.025,0.025,0]},"t":78,"s":[99.918,99.918,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.007,0.007,0]},"t":79,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":80,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":81,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":82,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":83,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":84,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":85,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":86,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":87,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":88,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":89,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":90,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":91,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":92,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":93,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":94,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":95,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":96,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":97,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":98,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":99,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":100,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":101,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":102,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":103,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":104,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":105,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":106,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":107,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":108,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":109,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":110,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":111,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":112,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":113,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":114,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":115,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":116,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":117,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":118,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":119,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":120,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":121,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":122,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":123,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":124,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":125,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":126,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":127,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":128,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":129,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":130,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":131,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":132,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":133,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":134,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":135,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":136,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":137,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":138,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":139,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":140,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":141,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":142,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":143,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":144,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":145,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":146,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":147,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":148,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":149,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":150,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":151,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":152,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":153,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":154,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":155,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":156,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":157,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":158,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":159,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":160,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":161,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":162,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":163,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":164,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":165,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":166,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":167,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":168,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":169,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":170,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":171,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":172,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":173,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":174,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":175,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":176,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":177,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":178,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":179,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":180,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":181,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":182,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":183,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":184,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":185,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":186,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":187,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":188,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":189,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":190,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":191,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":192,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":193,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":194,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":195,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":196,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":197,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":198,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":199,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":200,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":201,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":202,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":203,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":204,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":205,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":206,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":207,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":208,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":209,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":210,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":211,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":212,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":213,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":214,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":215,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":216,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":217,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":218,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":219,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":220,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":221,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":222,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":223,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":224,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":225,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":226,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":227,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":228,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":229,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":230,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":231,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":232,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":233,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":234,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":235,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":236,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":237,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":238,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":239,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":240,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":241,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":242,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":243,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":244,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":245,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":246,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":247,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":248,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":249,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":250,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":251,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":252,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":253,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":254,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":255,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":256,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":257,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":258,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":259,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":260,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":261,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":262,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":263,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":264,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":265,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":266,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":267,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":268,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":269,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":270,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":271,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":272,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":273,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":274,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":275,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":276,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":277,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":278,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":279,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":280,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":281,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":282,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":283,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":284,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":285,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":286,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":287,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":288,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":289,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":290,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":291,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":292,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":293,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":294,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":295,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":296,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":297,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":298,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":299,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":300,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":301,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":302,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":303,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":304,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":305,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":306,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":307,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":308,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":309,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":310,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":311,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":312,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":313,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":314,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":315,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":316,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":317,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":318,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":319,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":320,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":321,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":322,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":323,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":324,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":325,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":326,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":327,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":328,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":329,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":330,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":331,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":332,"s":[100,100,100]},{"t":333.000013563368,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[102.483,-3.972],[0.703,-0.074],[7.062,0],[6.269,0.176],[0.707,-0.016],[0,0],[0,0],[-11.108,-0.825],[0,0],[-11.827,0],[-21.245,4.406]],"o":[[0,0],[-0.707,-0.016],[-6.27,0.176],[-7.063,0],[-0.703,-0.074],[-102.484,-3.972],[0,0],[10.87,2.41],[0,0],[9.27,0.707],[21.694,0.418],[0,0]],"v":[[132.408,16.243],[22.155,51.198],[20.038,51.284],[0,51.55],[-20.038,51.284],[-22.155,51.198],[-132.408,16.243],[-64.614,-51.551],[-31.601,-46.695],[-31.515,-46.695],[0,-45.547],[64.614,-51.551]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.141000007181,0.681999954523,0.372999991623,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[357.592,336.019],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-3.929,-26.307],[0,0],[-0.36,26.597]],"o":[[0.355,26.597],[0,0],[3.933,-26.307],[0,0]],"v":[[20.04,-39.723],[26.481,39.723],[-26.481,39.723],[-20.036,-39.723]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501999978458,0.325,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[357.59,418.464],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[22.069,-5.648],[15.577,0.363],[15.202,3.41],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[-15.203,3.41],[-15.577,0.363],[-22.069,-5.648],[0,0],[0,0],[0,0],[0,0]],"v":[[70.618,29.389],[46.342,43.779],[0,48.369],[-46.342,43.779],[-70.618,29.389],[-62.146,19.945],[0,-48.732],[62.141,19.945]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.149000010771,0.725,0.603999956916,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[357.592,153.829],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[37.694,-8.737],[21.695,0.418],[9.269,0.707],[0,0],[10.87,2.41],[0,0],[0,0],[0,0],[-15.577,0.364],[-15.202,3.41],[0,0]],"o":[[0,0],[-21.245,4.406],[-11.827,0],[0,0],[-11.109,-0.824],[-37.694,-8.737],[0,0],[0,0],[15.203,3.41],[15.577,0.364],[0,0],[0,0]],"v":[[105.925,16.383],[64.614,40.218],[0,46.222],[-31.514,45.073],[-31.6,45.073],[-64.614,40.218],[-105.925,16.383],[-64.704,-27.221],[-46.342,-46.64],[0,-42.051],[46.342,-46.64],[64.704,-27.221]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.078000005086,0.626999978458,0.522000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[357.592,244.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":34.0000013848484,"op":334.000013604099,"st":34.0000013848484,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/client/public/Animation-1709649662243.json b/client/public/Animation-1709649662243.json deleted file mode 100644 index 887c4b68f..000000000 --- a/client/public/Animation-1709649662243.json +++ /dev/null @@ -1 +0,0 @@ -{"v":"4.8.0","meta":{"g":"LottieFiles AE ","a":"","k":"","d":"","tc":""},"fr":30,"ip":0,"op":120,"w":1000,"h":807,"nm":"SquirlLove","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[210.554,318.52,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.372,-13.201999999999998],[-24.506,-33.733],[36.03,-4.058],[31.271,34.445],[29.869,33.158]],"o":[[-8.123000000000001,-32.914],[18.762999999999998,-36.134],[33.313,30.332],[28.813,36.817],[31.529,10.24]],"v":[[3.444,-25.423],[-33.851,-38.571],[33.636,26.35],[28.029,38.571],[30.408,25.703]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.675,0.42,0.225,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":2,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[172.889,363.348,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-18.312,-22.085],[-10.588000000000001,-36.827999999999996],[19.485,-3.569],[7.58,40.598],[-7.76,40.598],[2.678,31.971],[3.677,36.112],[-19.485,19.154]],"o":[[-13.846,-32.257],[-6.509,-40.598],[19.485,-3.569],[7.58,40.598],[-7.76,40.598],[2.678,31.971],[3.677,36.112],[-19.471,-16.593]],"v":[[-16.079,-27.171],[-6.509,-40.598],[19.485,-3.569],[7.58,40.598],[-7.76,40.598],[2.678,31.971],[3.677,36.112],[-19.485,-11.038]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.697,0.3717,0.123,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":3,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[159.892,345.175,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.425,22.425],[-6.493,12.301],[-5.3149999999999995,-3.911999999999999],[2.4090000000000007,-18.655]],"o":[[-5.7989999999999995,17.445],[-6.474,1.58],[-0.8489999999999998,-14.084],[6.488,-22.425]],"v":[[-4.425,22.425],[-6.488,7.135],[-3.082,-8.998],[6.488,-22.425]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"st","c":{"a":0,"k":[0.675,0.42,0.225,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4.543,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":4,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[99.322,276.984,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.077999999999999,10.318999999999999],[-3.096,-10.607],[-6.934,2.9790000000000005]],"o":[[6.637,9.111999999999998],[-3.096,-10.607],[-4.598000000000001,8.802]],"v":[[5.904,10.607],[-3.096,-10.607],[-5.698,6.049]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.675,0.42,0.225,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":5,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[92.423,334.209,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[15.463,-8.519],[9.309000000000001,0.3960000000000008],[-8.087,3.565],[-4.284,1.977]],"o":[[15.463,-8.519],[-0.992,3.825],[-8.677,3.335],[8.181000000000001,-2.0490000000000004]],"v":[[15.463,-8.519],[6.189,8.519],[-15.463,3.738],[0.978,0.28]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.675,0.42,0.225,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":6,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[43.173,322.757,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.571999999999999,-0.7839999999999998],[4.537,-5.823],[-0.28,3.228],[-1.947,5.622]],"o":[[-2.5089999999999995,-5.507],[4.537,-5.823],[-1.868,5.722],[-3.694,3.1559999999999997]],"v":[[-4.536,-5.636],[4.537,-5.823],[-1.782,5.823],[-2.019,5.521]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.4901,0.496,0.144,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":1,"completed":true},{"ddd":0,"ind":7,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[74.507,300.229,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.004,0.267],[7.487,-2.584],[5.9159999999999995,-5.0249999999999995],[3.5250000000000004,-6.675000000000001],[0.6839999999999999,-7.2829999999999995],[-2.173,-6.752],[-7.942,5.34],[0.5980000000000003,8.554],[5.735,5.479],[7.388999999999999,3.099]],"o":[[7.786,-1.6549999999999998],[6.548,-4.2780000000000005],[4.396,-6.229],[1.659,-7.205],[-1.242,-7.055],[-6.561999999999999,-4.3],[-7.942,5.34],[4.989000000000001,6.11],[6.941,3.9669999999999996],[7.923,1.2409999999999999]],"v":[[7.895,-0.694],[7.018,-3.43],[5.156,-5.627],[2.592,-6.94],[-0.279,-7.169],[-3.018,-6.277],[-7.942,5.34],[4.142,6.577],[6.338,4.723],[7.656,2.17]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.2392,0.2431,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":8,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[99.718,278.514,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-3.528,-21.475],[-13.888,-1.2960000000000003],[-5.9510000000000005,19.025],[13.839,25.955]],"o":[[-3.528,-21.475],[-11.817,13.655999999999999],[9.001,16.955],[11.769,11.003]],"v":[[-3.528,-21.475],[-12.874,6.18],[1.525,17.99],[12.804,18.479]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.697,0.3717,0.123,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":9,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[141.403,336.393,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-30.329,-46.43],[1.7999999999999972,-56.594],[102.772,-23.247],[40.777,67.582],[36.5,67.582],[24.876,5.041],[-9.989,67.582],[-16.373,67.582],[-19.866,35.664],[-57.419,1.741],[-98.374,-5.461],[-103.412,-32.699],[-85.116,-60.916000000000004],[-64.96,-68.271],[-44.216,-62.786]],"o":[[-10.227,-43.54],[86.497,-56.594],[102.772,28.123],[40.777,67.582],[36.5,67.582],[24.876,5.041],[-9.989,67.582],[-17.056,56.151999999999994],[-44.149,-1.9109999999999978],[-88.747,1.741],[-104.836,-14.591000000000001],[-90.451,-55.88],[-72.216,-67.186],[-50.79,-66.04299999999999],[-33.862,-52.86]],"v":[[-28.917,-39.399],[28.772,-56.594],[102.772,8.448],[40.777,67.582],[36.5,67.582],[24.876,5.041],[-9.989,67.582],[-16.373,67.582],[-29.65,20.518],[-72.271,1.741],[-100.25,-8.114],[-93.952,-49.621],[-78.666,-64.051],[-57.875,-67.157],[-39.039,-57.823]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.697,0.3717,0.123,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":10,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[72.879,278.339,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.612,-18.582],[-10.476,-0.9989999999999997],[-3.539,19.338],[10.292,11.279]],"o":[[-2.612,-18.582],[-8.42,13.867],[8.595,17.656],[8.222,-3.5869999999999997]],"v":[[-2.612,-18.582],[-9.448,6.434],[2.528,18.497],[9.257,3.846]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.675,0.42,0.225,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":11,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[145.648,358.607,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.143,45.353],[33.017,-17.188],[17.598,-41.68],[-14.499,-45.353],[-33.017,-30.041],[-36.007999999999996,-24.139999999999997],[-8.245,32.191]],"o":[[-1.143,45.353],[33.017,-17.188],[17.598,-41.68],[-14.499,-45.353],[-18.165000000000003,-30.041],[-11.724999999999998,13.435],[-7.526,45.353]],"v":[[-1.143,45.353],[33.017,-17.188],[17.598,-41.68],[-14.499,-45.353],[-33.017,-30.041],[-21.516,-1.711],[-7.526,45.353]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.675,0.42,0.225,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":12,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[205.015,273.318,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[50.324,-50.59],[33.287,-29.527],[58.246,0.6360000000000028],[24.387,91.199],[2.822,44.185],[6.445,20.268],[-58.21,0.0040000000000048885],[-39.081,-91.199]],"o":[[43.301,-29.527],[33.287,-18.032000000000004],[58.21,72.113],[24.387,91.199],[1.83,44.235],[-20.894,9.716],[-58.21,-68.914],[36.565,-91.199]],"v":[[43.301,-29.527],[33.287,-29.527],[58.21,32.877],[24.387,91.199],[2.822,44.185],[5.51,19.909],[-58.21,-37.068],[-7.25,-91.199]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[1,0.5569,0.2275,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true}]},{"id":"comp_1","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Vector 2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":65,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":67,"s":[100]},{"t":68,"s":[0]}],"ix":11},"r":{"a":0,"k":-8,"ix":10},"p":{"a":0,"k":[458.507,332.729,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":60,"s":[257,257,100]},{"t":65,"s":[365,365,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60,"s":[{"i":[[8.004,0.267],[7.487,-2.584],[5.9159999999999995,-5.0249999999999995],[3.5250000000000004,-6.675000000000001],[0.6839999999999999,-7.2829999999999995],[-2.173,-6.752],[-7.942,5.34],[0.5980000000000003,8.554],[5.735,5.479],[7.388999999999999,3.099]],"o":[[7.786,-1.6549999999999998],[6.548,-4.2780000000000005],[4.396,-6.229],[1.659,-7.205],[-1.242,-7.055],[-6.561999999999999,-4.3],[-7.942,5.34],[4.989000000000001,6.11],[6.941,3.9669999999999996],[7.923,1.2409999999999999]],"v":[[7.895,-0.694],[7.018,-3.43],[5.156,-5.627],[2.592,-6.94],[-0.279,-7.169],[-3.018,-6.277],[-7.942,5.34],[4.142,6.577],[6.338,4.723],[7.656,2.17]],"c":true}]},{"t":65,"s":[{"i":[[8.004,0.267],[7.487,-2.584],[5.9159999999999995,-5.0249999999999995],[3.5250000000000004,-6.675000000000001],[0.6839999999999999,-7.2829999999999995],[-2.189,-6.78],[-5.501,2.986],[-2.5599999999999996,8.603],[5.735,5.479],[7.388999999999999,3.099]],"o":[[7.786,-1.6549999999999998],[6.548,-4.2780000000000005],[4.396,-6.229],[1.659,-7.205],[-1.242,-7.055],[-7.528,-3.543],[-5.501,2.986],[5.0680000000000005,6.297],[6.941,3.9669999999999996],[7.923,1.2409999999999999]],"v":[[7.895,-0.694],[7.018,-3.43],[5.156,-5.627],[2.592,-6.94],[-0.279,-7.169],[-3.018,-6.277],[-5.501,2.986],[4.142,6.577],[6.338,4.723],[7.656,2.17]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[0.2392,0.2431,0,1]},{"t":65,"s":[0.9294,0.3137,0.6196,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":2,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":66,"s":[0]},{"t":67,"s":[100]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":67,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":72,"s":[9]},{"t":76,"s":[0]}],"ix":10},"p":{"a":0,"k":[465.592,334.502,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":67,"s":[133,133,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":76,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":79,"s":[78,78,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":81,"s":[120,120,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":84,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":100,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":103,"s":[78,78,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":105,"s":[120,120,100]},{"t":108,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-24.708000000000002,3.552],[-6.1160000000000005,20.021],[1.255,26.076],[11.372,16.151],[23.026,4.882],[31.387,-8.244],[26.774,-24.487],[9.391,-27.897000000000002],[1.361,-19.402],[-0.988,-18.88],[-19.580000000000002,-29.602],[-31.75,-12.777000000000001]],"o":[[-13.593000000000002,13.894],[0.614,26.85],[6.624,20.715],[19.457,8.134],[29.632,-3.1159999999999997],[29.528,-19.801000000000002],[15.033999999999999,-28.608999999999998],[2.723,-21.824],[-0.215,-17.335],[-6.385999999999999,-29.516],[-30.566000000000003,-18.860999999999997],[-28.321,-0.625]],"v":[[-20.629,7.349],[0.018,27.658],[1.938,25.34],[16.046,11.514],[26.093,1.202],[30.473,-13.955],[20.904,-26.548],[4.692,-23.603],[-0.215,-17.335],[-0.988,-18.88],[-25.524,-23.787],[-29.867,-6.109]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.9294,0.3137,0.6196,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":3,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[801.624,375.138,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[55.192,-32.57],[-60.457,-83.221],[88.887,-10.010999999999996],[77.146,84.976],[73.68900000000001,81.80099999999999]],"o":[[-20.039,-81.199],[46.28800000000001,-89.144],[82.18299999999999,74.83200000000001],[71.081,90.82900000000001],[77.786,25.262999999999998]],"v":[[8.496,-62.719],[-83.512,-95.156],[82.981,65.007],[69.148,95.156],[75.019,63.41]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.675,0.42,0.225,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":4,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[708.704,485.733,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-45.176,-54.483999999999995],[-26.123,-90.856],[48.07,-8.805],[18.701,100.157],[-19.145,100.157],[6.606,78.875],[9.071,89.09],[-48.07,47.254000000000005]],"o":[[-34.16,-79.58],[-16.059,-100.157],[48.07,-8.805],[18.701,100.157],[-19.145,100.157],[6.606,78.875],[9.071,89.09],[-48.036,-40.935]],"v":[[-39.668,-67.032],[-16.059,-100.157],[48.07,-8.805],[18.701,100.157],[-19.145,100.157],[6.606,78.875],[9.071,89.09],[-48.07,-27.232]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.697,0.3717,0.123,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":5,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[676.639,440.9,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-10.916,55.324],[-16.019000000000002,30.348],[-13.111,-9.65],[5.942,-46.022999999999996]],"o":[[-14.307,43.037],[-15.972,3.899000000000001],[-2.0949999999999998,-34.746],[16.006,-55.324]],"v":[[-10.916,55.324],[-16.006,17.602],[-7.603,-22.198],[16.006,-55.324]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"st","c":{"a":0,"k":[0.675,0.42,0.225,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":11.208,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":6,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[527.21,272.667,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[10.061,25.459],[-7.638,-26.168],[-17.108,7.350999999999999]],"o":[[16.375,22.479],[-7.638,-26.168],[-11.344999999999999,21.716]],"v":[[14.566,26.168],[-7.638,-26.168],[-14.058,14.924]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.675,0.42,0.225,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":7,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[510.19,413.845,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[38.147,-21.016],[22.967,0.9759999999999991],[-19.950999999999997,8.796],[-10.57,4.877]],"o":[[38.147,-21.016],[-2.446999999999999,9.434999999999999],[-21.404999999999998,8.229],[20.182,-5.054]],"v":[[38.147,-21.016],[15.27,21.016],[-38.147,9.222],[2.412,0.692]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.675,0.42,0.225,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":8,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[388.689,385.593,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-11.278,-1.9329999999999998],[11.192,-14.365],[-0.6900000000000004,7.963],[-4.805000000000001,13.867999999999999]],"o":[[-6.188,-13.584999999999999],[11.192,-14.365],[-4.61,14.117],[-9.114,7.784999999999999]],"v":[[-11.189,-13.904],[11.192,-14.365],[-4.397,14.365],[-4.982,13.62]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.4901,0.496,0.144,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":1,"completed":true},{"ddd":0,"ind":9,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[528.188,276.443,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-8.705,-52.98],[-34.261,-3.199],[-14.681,46.937000000000005],[34.143,64.033]],"o":[[-8.705,-52.98],[-29.153000000000002,33.689],[22.207,41.829],[29.035,27.145]],"v":[[-8.705,-52.98],[-31.76,15.245],[3.763,44.383],[31.589,45.589]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.697,0.3717,0.123,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":10,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[631.027,419.232,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-74.824,-114.547],[4.4410000000000025,-139.621],[253.543,-57.34899999999999],[100.599,166.729],[90.047,166.729],[61.37,12.437],[-24.644,166.729],[-40.392,166.729],[-49.010999999999996,87.98599999999999],[-141.65699999999998,4.296],[-242.692,-13.474],[-255.124,-80.67000000000002],[-209.98600000000002,-150.284],[-160.25900000000001,-168.426],[-109.085,-154.89499999999998]],"o":[[-25.229,-107.415],[213.392,-139.621],[253.543,69.383],[100.599,166.729],[90.047,166.729],[61.37,12.437],[-24.644,166.729],[-42.077000000000005,138.531],[-108.919,-4.713000000000001],[-218.945,4.296],[-258.636,-35.997],[-223.147,-137.859],[-178.16,-165.752],[-125.303,-162.93200000000002],[-83.539,-130.409]],"v":[[-71.339,-97.2],[70.982,-139.621],[253.543,20.843],[100.599,166.729],[90.047,166.729],[61.37,12.437],[-24.644,166.729],[-40.392,166.729],[-73.148,50.619],[-178.297,4.296],[-247.321,-20.018],[-231.785,-122.418],[-194.073,-158.018],[-142.781,-165.679],[-96.312,-142.652]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.697,0.3717,0.123,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":11,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[461.975,276.01,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-6.443,-45.843],[-25.845000000000002,-2.4640000000000004],[-8.731,47.708000000000006],[25.391,27.827]],"o":[[-6.443,-45.843],[-20.773,34.212],[21.205,43.558],[20.283,-8.849]],"v":[[-6.443,-45.843],[-23.309,15.874],[6.237,45.633],[22.837,9.489]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.675,0.42,0.225,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":12,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[641.499,474.036,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.82,111.888],[81.456,-42.404],[43.415,-102.826],[-35.771,-111.888],[-81.456,-74.113],[-88.833,-59.553],[-20.341,79.416]],"o":[[-2.82,111.888],[81.456,-42.404],[43.415,-102.826],[-35.771,-111.888],[-44.816,-74.113],[-28.924999999999997,33.146],[-18.568,111.888]],"v":[[-2.82,111.888],[81.456,-42.404],[43.415,-102.826],[-35.771,-111.888],[-81.456,-74.113],[-53.08,-4.221],[-18.568,111.888]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.675,0.42,0.225,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":13,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[787.961,263.623,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[124.152,-124.80799999999999],[82.121,-72.845],[143.696,1.5699999999999932],[60.165,224.992],[6.961,109.007],[15.899999999999999,50.003],[-143.607,0.009000000000000341],[-96.414,-224.992]],"o":[[106.825,-72.845],[82.121,-44.486999999999995],[143.607,177.906],[60.165,224.992],[4.514,109.131],[-51.546,23.968],[-143.607,-170.014],[90.208,-224.992]],"v":[[106.825,-72.845],[82.121,-72.845],[143.607,81.11],[60.165,224.992],[6.961,109.007],[13.594,49.116],[-143.607,-91.449],[-17.885,-224.992]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[1,0.5569,0.2275,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true}]}],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"!","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":31,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":42,"s":[100]},{"t":46,"s":[0]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":31,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":36,"s":[17]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":42,"s":[0]},{"t":46,"s":[-42]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":31,"s":[286.712,246.892,0],"to":[0.333,-1.667,0],"ti":[-0.021,-0.229,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":36,"s":[288.837,238.267,0],"to":[0.021,0.229,0],"ti":[-0.444,0.004,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":42,"s":[286.837,248.267,0],"to":[54.445,-0.456,0],"ti":[53.333,0,0]},{"t":46,"s":[-33.163,248.267,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":30,"s":[46,46,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":31,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":36,"s":[131,131,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":42,"s":[100,100,100]},{"t":46,"s":[34,34,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.097,15.519],[-3.973,15.519],[-5.835,-15.519],[-5.835,-44.073],[5.959,-44.073],[5.959,-15.519]],"o":[[4.097,15.519],[-3.973,15.519],[-5.835,-15.519],[-5.835,-44.073],[5.959,-44.073],[5.959,-15.519]],"v":[[4.097,15.519],[-3.973,15.519],[-5.835,-15.519],[-5.835,-44.073],[5.959,-44.073],[5.959,-15.519]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[4.842,44.073],[-8.69,40.224],[-4.842,26.692],[8.69,30.54]],"o":[[-4.842,44.073],[-8.69,30.54],[4.842,26.692],[8.69,40.224]],"v":[[0,44.073],[-8.69,35.382],[0,26.692],[8.69,35.382]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"!","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":3,"ty":0,"nm":"SmallSquirl","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[-499,403.5,0],"to":null,"ti":null},{"i":{"x":0.667,"y":0.667},"o":{"x":0.167,"y":0.167},"t":30,"s":[-211,403.5,0],"to":null,"ti":null},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"t":42,"s":[-211,403.5,0],"to":null,"ti":null},{"t":46,"s":[-499,403.5,0]}],"ix":2},"a":{"a":0,"k":[500,403.5,0],"ix":1},"s":{"a":0,"k":[-100,100,100],"ix":6}},"ao":0,"w":1000,"h":807,"ip":0,"op":150,"st":0,"bm":0,"completed":true,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[210.554,318.52,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.372,-13.201999999999998],[-24.506,-33.733],[36.03,-4.058],[31.271,34.445],[29.869,33.158]],"o":[[-8.123000000000001,-32.914],[18.762999999999998,-36.134],[33.313,30.332],[28.813,36.817],[31.529,10.24]],"v":[[3.444,-25.423],[-33.851,-38.571],[33.636,26.35],[28.029,38.571],[30.408,25.703]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.675,0.42,0.225,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":2,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[172.889,363.348,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-18.312,-22.085],[-10.588000000000001,-36.827999999999996],[19.485,-3.569],[7.58,40.598],[-7.76,40.598],[2.678,31.971],[3.677,36.112],[-19.485,19.154]],"o":[[-13.846,-32.257],[-6.509,-40.598],[19.485,-3.569],[7.58,40.598],[-7.76,40.598],[2.678,31.971],[3.677,36.112],[-19.471,-16.593]],"v":[[-16.079,-27.171],[-6.509,-40.598],[19.485,-3.569],[7.58,40.598],[-7.76,40.598],[2.678,31.971],[3.677,36.112],[-19.485,-11.038]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.697,0.3717,0.123,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":3,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[159.892,345.175,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.425,22.425],[-6.493,12.301],[-5.3149999999999995,-3.911999999999999],[2.4090000000000007,-18.655]],"o":[[-5.7989999999999995,17.445],[-6.474,1.58],[-0.8489999999999998,-14.084],[6.488,-22.425]],"v":[[-4.425,22.425],[-6.488,7.135],[-3.082,-8.998],[6.488,-22.425]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"st","c":{"a":0,"k":[0.675,0.42,0.225,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4.543,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":4,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[99.322,276.984,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.077999999999999,10.318999999999999],[-3.096,-10.607],[-6.934,2.9790000000000005]],"o":[[6.637,9.111999999999998],[-3.096,-10.607],[-4.598000000000001,8.802]],"v":[[5.904,10.607],[-3.096,-10.607],[-5.698,6.049]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.675,0.42,0.225,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":5,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[92.423,334.209,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[15.463,-8.519],[9.309000000000001,0.3960000000000008],[-8.087,3.565],[-4.284,1.977]],"o":[[15.463,-8.519],[-0.992,3.825],[-8.677,3.335],[8.181000000000001,-2.0490000000000004]],"v":[[15.463,-8.519],[6.189,8.519],[-15.463,3.738],[0.978,0.28]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.675,0.42,0.225,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":6,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[43.173,322.757,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.571999999999999,-0.7839999999999998],[4.537,-5.823],[-0.28,3.228],[-1.947,5.622]],"o":[[-2.5089999999999995,-5.507],[4.537,-5.823],[-1.868,5.722],[-3.694,3.1559999999999997]],"v":[[-4.536,-5.636],[4.537,-5.823],[-1.782,5.823],[-2.019,5.521]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.4901,0.496,0.144,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":1,"completed":true},{"ddd":0,"ind":7,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[74.507,300.229,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.004,0.267],[7.487,-2.584],[5.9159999999999995,-5.0249999999999995],[3.5250000000000004,-6.675000000000001],[0.6839999999999999,-7.2829999999999995],[-2.173,-6.752],[-7.942,5.34],[0.5980000000000003,8.554],[5.735,5.479],[7.388999999999999,3.099]],"o":[[7.786,-1.6549999999999998],[6.548,-4.2780000000000005],[4.396,-6.229],[1.659,-7.205],[-1.242,-7.055],[-6.561999999999999,-4.3],[-7.942,5.34],[4.989000000000001,6.11],[6.941,3.9669999999999996],[7.923,1.2409999999999999]],"v":[[7.895,-0.694],[7.018,-3.43],[5.156,-5.627],[2.592,-6.94],[-0.279,-7.169],[-3.018,-6.277],[-7.942,5.34],[4.142,6.577],[6.338,4.723],[7.656,2.17]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.2392,0.2431,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":8,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[99.718,278.514,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-3.528,-21.475],[-13.888,-1.2960000000000003],[-5.9510000000000005,19.025],[13.839,25.955]],"o":[[-3.528,-21.475],[-11.817,13.655999999999999],[9.001,16.955],[11.769,11.003]],"v":[[-3.528,-21.475],[-12.874,6.18],[1.525,17.99],[12.804,18.479]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.697,0.3717,0.123,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":9,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[141.403,336.393,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-30.329,-46.43],[1.7999999999999972,-56.594],[102.772,-23.247],[40.777,67.582],[36.5,67.582],[24.876,5.041],[-9.989,67.582],[-16.373,67.582],[-19.866,35.664],[-57.419,1.741],[-98.374,-5.461],[-103.412,-32.699],[-85.116,-60.916000000000004],[-64.96,-68.271],[-44.216,-62.786]],"o":[[-10.227,-43.54],[86.497,-56.594],[102.772,28.123],[40.777,67.582],[36.5,67.582],[24.876,5.041],[-9.989,67.582],[-17.056,56.151999999999994],[-44.149,-1.9109999999999978],[-88.747,1.741],[-104.836,-14.591000000000001],[-90.451,-55.88],[-72.216,-67.186],[-50.79,-66.04299999999999],[-33.862,-52.86]],"v":[[-28.917,-39.399],[28.772,-56.594],[102.772,8.448],[40.777,67.582],[36.5,67.582],[24.876,5.041],[-9.989,67.582],[-16.373,67.582],[-29.65,20.518],[-72.271,1.741],[-100.25,-8.114],[-93.952,-49.621],[-78.666,-64.051],[-57.875,-67.157],[-39.039,-57.823]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.697,0.3717,0.123,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":10,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[72.879,278.339,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.612,-18.582],[-10.476,-0.9989999999999997],[-3.539,19.338],[10.292,11.279]],"o":[[-2.612,-18.582],[-8.42,13.867],[8.595,17.656],[8.222,-3.5869999999999997]],"v":[[-2.612,-18.582],[-9.448,6.434],[2.528,18.497],[9.257,3.846]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.675,0.42,0.225,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":11,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[145.648,358.607,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.143,45.353],[33.017,-17.188],[17.598,-41.68],[-14.499,-45.353],[-33.017,-30.041],[-36.007999999999996,-24.139999999999997],[-8.245,32.191]],"o":[[-1.143,45.353],[33.017,-17.188],[17.598,-41.68],[-14.499,-45.353],[-18.165000000000003,-30.041],[-11.724999999999998,13.435],[-7.526,45.353]],"v":[[-1.143,45.353],[33.017,-17.188],[17.598,-41.68],[-14.499,-45.353],[-33.017,-30.041],[-21.516,-1.711],[-7.526,45.353]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.675,0.42,0.225,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":12,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[205.015,273.318,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[50.324,-50.59],[33.287,-29.527],[58.246,0.6360000000000028],[24.387,91.199],[2.822,44.185],[6.445,20.268],[-58.21,0.0040000000000048885],[-39.081,-91.199]],"o":[[43.301,-29.527],[33.287,-18.032000000000004],[58.21,72.113],[24.387,91.199],[1.83,44.235],[-20.894,9.716],[-58.21,-68.914],[36.565,-91.199]],"v":[[43.301,-29.527],[33.287,-29.527],[58.21,32.877],[24.387,91.199],[2.822,44.185],[5.51,19.909],[-58.21,-37.068],[-7.25,-91.199]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[1,0.5569,0.2275,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true}]},{"ddd":0,"ind":4,"ty":3,"nm":"▽ Acorn","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[453.091,600.086,0],"ix":2},"a":{"a":0,"k":[224.614,169.622,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":5,"ty":4,"nm":"Ellipse 11","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[418.874,227.925,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":27,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":28,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":31,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":32,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":65,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":66,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":69,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":70,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":106,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":107,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":110,"s":[150,150,100]},{"t":111,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[5.519,5.519],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Ellipse 11","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":6,"ty":4,"nm":"Ellipse 10","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[359.271,97.682,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":11,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":12,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":15,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":16,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":49,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":50,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":53,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":54,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":90,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":91,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":94,"s":[150,150,100]},{"t":95,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[5.519,5.519],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Ellipse 10","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":7,"ty":4,"nm":"Ellipse 9","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[99.889,204.746,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":1,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":4,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":5,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":38,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":39,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":42,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":43,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":79,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":80,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":83,"s":[150,150,100]},{"t":84,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[5.519,5.519],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Ellipse 9","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":8,"ty":4,"nm":"Ellipse 8","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[72.296,119.757,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":16,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":17,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":20,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":21,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":54,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":55,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":58,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":59,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":95,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":96,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":99,"s":[150,150,100]},{"t":100,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[5.519,5.519],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Ellipse 8","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":9,"ty":4,"nm":"Ellipse 12","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[55.74,227.925,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":8,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":9,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":12,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":13,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":46,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":47,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":50,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":51,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":87,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":88,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":91,"s":[150,150,100]},{"t":92,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[12.141,12.141],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Ellipse 12","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":10,"ty":4,"nm":"Ellipse 13","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[177.152,294.15,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":24,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":25,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":28,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":29,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":62,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":63,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":66,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":67,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":103,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":104,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":107,"s":[150,150,100]},{"t":108,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[12.141,12.141],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Ellipse 13","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":11,"ty":4,"nm":"Ellipse 7","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[413.355,247.793,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":10,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":11,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":14,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":15,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":48,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":49,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":52,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":53,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":89,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":90,"s":[150,150,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":93,"s":[150,150,100]},{"t":94,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[12.141,12.141],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Ellipse 7","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":12,"ty":4,"nm":"Star 3","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":20,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":35,"s":[50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":50,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":56,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":71,"s":[50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":96,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":101,"s":[100]},{"t":120,"s":[50]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[374.724,204.746,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[70,70,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":15,"s":[120,120,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":20,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":35,"s":[70,70,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":50,"s":[120,120,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":56,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":71,"s":[70,70,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":96,"s":[120,120,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":101,"s":[100,100,100]},{"t":120,"s":[70,70,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":4,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":24.214,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":0,"k":74.503,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Star 3","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":3,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":13,"ty":4,"nm":"Star 6","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":20,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":35,"s":[50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":50,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":56,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":71,"s":[50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":96,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":101,"s":[100]},{"t":120,"s":[50]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[209.713,61.81,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[70,70,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":15,"s":[120,120,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":20,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":35,"s":[70,70,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":50,"s":[120,120,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":56,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":71,"s":[70,70,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":96,"s":[120,120,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":101,"s":[100,100,100]},{"t":120,"s":[70,70,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":4,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":4.663,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":0,"k":14.349,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Star 6","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":1,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":14,"ty":4,"nm":"Star 5","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":35,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":50,"s":[50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":65,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":71,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":86,"s":[50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":97,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":102,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":113,"s":[50]},{"t":120,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[272.627,251.656,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":15,"s":[70,70,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":30,"s":[120,120,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":35,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":50,"s":[70,70,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":65,"s":[120,120,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":71,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":86,"s":[70,70,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":97,"s":[120,120,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":102,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":113,"s":[70,70,100]},{"t":120,"s":[120,120,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":4,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":4.663,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":0,"k":14.349,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Star 5","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":1,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":15,"ty":4,"nm":"Star 4","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":35,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":50,"s":[50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":65,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":71,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":86,"s":[50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":97,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":102,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":113,"s":[50]},{"t":120,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[331.126,120.309,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":15,"s":[70,70,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":30,"s":[120,120,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":35,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":50,"s":[70,70,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":65,"s":[120,120,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":71,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":86,"s":[70,70,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":97,"s":[120,120,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":102,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":113,"s":[70,70,100]},{"t":120,"s":[120,120,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":4,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":7.533,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":0,"k":23.179,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Star 4","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":1,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":16,"ty":4,"nm":"Star 2","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":20,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":35,"s":[50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":50,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":56,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":71,"s":[50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":96,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":101,"s":[100]},{"t":120,"s":[50]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[32.009,175.497,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[70,70,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":15,"s":[120,120,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":20,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":35,"s":[70,70,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":50,"s":[120,120,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":56,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":71,"s":[70,70,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":96,"s":[120,120,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":101,"s":[100,100,100]},{"t":120,"s":[70,70,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":4,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":10.403,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":0,"k":32.009,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Star 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":2,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":17,"ty":4,"nm":"Star 1","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":35,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":50,"s":[50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":65,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":71,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":86,"s":[50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":97,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":102,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":113,"s":[50]},{"t":120,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[96.026,94.923,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":15,"s":[70,70,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":30,"s":[120,120,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":35,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":50,"s":[70,70,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":65,"s":[120,120,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":71,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":86,"s":[70,70,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":97,"s":[120,120,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":102,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":113,"s":[70,70,100]},{"t":120,"s":[120,120,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":0,"k":4,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"ir":{"a":0,"k":20.806,"ix":6},"is":{"a":0,"k":0,"ix":8},"or":{"a":0,"k":64.018,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Star 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":3,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":18,"ty":3,"nm":"▽ Overlay Illustrations","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[224.043,169.622,0],"ix":2},"a":{"a":0,"k":[174.374,169.622,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":19,"ty":4,"nm":"Vector","parent":18,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[219.11,131.161,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[129.80599999999998,-19.012999999999998],[113.798,97.949],[86.068,126.059],[82.53500000000001,128.96],[76.05,131.161],[69.215,130.71],[63.075,127.676],[-124.535,-65.896],[-127.43700000000001,-69.429],[-129.637,-75.914],[-129.187,-82.749],[-126.152,-88.88900000000001],[-57.301,-132.073],[59.346000000000004,-113.741]],"o":[[129.466,60.056999999999995],[85.998,126.059],[84.453,127.676],[78.313,130.71],[71.478,131.161],[64.993,128.96],[61.46,126.059],[-126.152,-67.511],[-129.187,-73.65100000000001],[-129.637,-80.486],[-127.43700000000001,-86.971],[-95.632,-117.492],[21.765,-130.15900000000002],[114.46600000000001,-57.03699999999999]],"v":[[129.636,20.522],[85.998,126.059],[86.068,126.059],[80.424,129.835],[73.764,131.161],[67.104,129.835],[61.46,126.059],[-124.535,-65.896],[-128.312,-71.54],[-129.637,-78.2],[-128.312,-84.86],[-124.535,-90.504],[-17.768,-131.116],[86.909,-85.386]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.5134,0.3169,0.1666,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":20,"ty":4,"nm":"Vector","parent":18,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[211.798,242.365,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.902000000000001,-57.874],[-0.035,-57.874],[-16.09,-50.68600000000001],[-16.09,41.819],[-8.902000000000001,57.874],[0.035,57.874],[16.09,50.68600000000001],[16.09,-41.819]],"o":[[0.035,-57.874],[-8.902000000000001,-57.874],[-16.09,-41.819],[-16.09,50.68600000000001],[-0.035,57.874],[8.902000000000001,57.874],[16.09,41.819],[16.09,-50.68600000000001]],"v":[[0.035,-57.874],[-0.035,-57.874],[-16.09,-41.819],[-16.09,41.819],[-0.035,57.874],[0.035,57.874],[16.09,41.819],[16.09,-41.819]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.985,0.7187,0.515,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":45.81,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":21,"ty":4,"nm":"Vector","parent":18,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[310.192,40.882,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[40.207,-10.516],[-40.207,-10.516],[-40.207,10.516],[40.207,10.516]],"o":[[40.207,-10.516],[-40.207,-10.516],[-40.207,10.516],[40.207,10.516]],"v":[[40.207,-10.516],[-40.207,-10.516],[-40.207,10.516],[40.207,10.516]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.5134,0.3169,0.1666,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-44.2,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":22,"ty":4,"nm":"Vector","parent":18,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[184.486,165.512,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-141.299,137.348],[-35.297,158.381],[1.9730000000000025,156.89700000000002],[52.921,133.947],[119.151,69.554],[158.829,11.333000000000002],[146.338,-93.15799999999999],[63.594,-158.153],[-40.895999999999994,-145.662],[-119.005,-69.75],[-142.871,-41.076],[-159.952,12.143]],"o":[[-141.299,137.348],[-16.686999999999998,159.6],[36.971000000000004,143.999],[66.289,120.943],[144.382,44.94200000000001],[159.827,-59.153000000000006],[97.203,-143.706],[-6.892000000000003,-159.15099999999998],[-66.213,-121.139],[-132.378,-56.745],[-156.73499999999999,-6.438000000000002],[-159.246,30.784]],"v":[[-141.299,137.348],[-35.297,158.381],[19.472,150.448],[66.289,120.943],[119.151,69.554],[159.328,-23.91],[121.815,-118.475],[28.351,-158.652],[-66.213,-121.139],[-119.005,-69.75],[-149.803,-23.757],[-159.246,30.784]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[1,0.5569,0.2275,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":23,"ty":4,"nm":"Vector","parent":18,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[165.524,309.239,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-91.417,30.006],[165.524,16.572],[91.417,-30.006],[-165.524,-16.572]],"o":[[91.417,30.006],[165.524,-16.572],[-91.417,-30.006],[-165.524,16.572]],"v":[[0,30.006],[165.524,0],[0,-30.006],[-165.524,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.6118,0.451,0.9725,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":1,"completed":true},{"ddd":0,"ind":25,"ty":0,"nm":"BigSquirl","refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":46,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":53,"s":[10]},{"t":60,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":46,"s":[1200,391.5,0],"to":null,"ti":null},{"t":60,"s":[500,391.5,0]}],"ix":2},"a":{"a":0,"k":[500,403.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":1000,"h":807,"ip":0,"op":150,"st":0,"bm":0,"completed":true,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Vector 2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":65,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":67,"s":[100]},{"t":68,"s":[0]}],"ix":11},"r":{"a":0,"k":-8,"ix":10},"p":{"a":0,"k":[458.507,332.729,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":60,"s":[257,257,100]},{"t":65,"s":[365,365,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60,"s":[{"i":[[8.004,0.267],[7.487,-2.584],[5.9159999999999995,-5.0249999999999995],[3.5250000000000004,-6.675000000000001],[0.6839999999999999,-7.2829999999999995],[-2.173,-6.752],[-7.942,5.34],[0.5980000000000003,8.554],[5.735,5.479],[7.388999999999999,3.099]],"o":[[7.786,-1.6549999999999998],[6.548,-4.2780000000000005],[4.396,-6.229],[1.659,-7.205],[-1.242,-7.055],[-6.561999999999999,-4.3],[-7.942,5.34],[4.989000000000001,6.11],[6.941,3.9669999999999996],[7.923,1.2409999999999999]],"v":[[7.895,-0.694],[7.018,-3.43],[5.156,-5.627],[2.592,-6.94],[-0.279,-7.169],[-3.018,-6.277],[-7.942,5.34],[4.142,6.577],[6.338,4.723],[7.656,2.17]],"c":true}]},{"t":65,"s":[{"i":[[8.004,0.267],[7.487,-2.584],[5.9159999999999995,-5.0249999999999995],[3.5250000000000004,-6.675000000000001],[0.6839999999999999,-7.2829999999999995],[-2.189,-6.78],[-5.501,2.986],[-2.5599999999999996,8.603],[5.735,5.479],[7.388999999999999,3.099]],"o":[[7.786,-1.6549999999999998],[6.548,-4.2780000000000005],[4.396,-6.229],[1.659,-7.205],[-1.242,-7.055],[-7.528,-3.543],[-5.501,2.986],[5.0680000000000005,6.297],[6.941,3.9669999999999996],[7.923,1.2409999999999999]],"v":[[7.895,-0.694],[7.018,-3.43],[5.156,-5.627],[2.592,-6.94],[-0.279,-7.169],[-3.018,-6.277],[-5.501,2.986],[4.142,6.577],[6.338,4.723],[7.656,2.17]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[0.2392,0.2431,0,1]},{"t":65,"s":[0.9294,0.3137,0.6196,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":2,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":66,"s":[0]},{"t":67,"s":[100]}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":67,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":72,"s":[9]},{"t":76,"s":[0]}],"ix":10},"p":{"a":0,"k":[465.592,334.502,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":67,"s":[133,133,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":76,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":79,"s":[78,78,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":81,"s":[120,120,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":84,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":100,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":103,"s":[78,78,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":105,"s":[120,120,100]},{"t":108,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-24.708000000000002,3.552],[-6.1160000000000005,20.021],[1.255,26.076],[11.372,16.151],[23.026,4.882],[31.387,-8.244],[26.774,-24.487],[9.391,-27.897000000000002],[1.361,-19.402],[-0.988,-18.88],[-19.580000000000002,-29.602],[-31.75,-12.777000000000001]],"o":[[-13.593000000000002,13.894],[0.614,26.85],[6.624,20.715],[19.457,8.134],[29.632,-3.1159999999999997],[29.528,-19.801000000000002],[15.033999999999999,-28.608999999999998],[2.723,-21.824],[-0.215,-17.335],[-6.385999999999999,-29.516],[-30.566000000000003,-18.860999999999997],[-28.321,-0.625]],"v":[[-20.629,7.349],[0.018,27.658],[1.938,25.34],[16.046,11.514],[26.093,1.202],[30.473,-13.955],[20.904,-26.548],[4.692,-23.603],[-0.215,-17.335],[-0.988,-18.88],[-25.524,-23.787],[-29.867,-6.109]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.9294,0.3137,0.6196,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":3,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[801.624,375.138,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[55.192,-32.57],[-60.457,-83.221],[88.887,-10.010999999999996],[77.146,84.976],[73.68900000000001,81.80099999999999]],"o":[[-20.039,-81.199],[46.28800000000001,-89.144],[82.18299999999999,74.83200000000001],[71.081,90.82900000000001],[77.786,25.262999999999998]],"v":[[8.496,-62.719],[-83.512,-95.156],[82.981,65.007],[69.148,95.156],[75.019,63.41]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.675,0.42,0.225,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":4,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[708.704,485.733,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-45.176,-54.483999999999995],[-26.123,-90.856],[48.07,-8.805],[18.701,100.157],[-19.145,100.157],[6.606,78.875],[9.071,89.09],[-48.07,47.254000000000005]],"o":[[-34.16,-79.58],[-16.059,-100.157],[48.07,-8.805],[18.701,100.157],[-19.145,100.157],[6.606,78.875],[9.071,89.09],[-48.036,-40.935]],"v":[[-39.668,-67.032],[-16.059,-100.157],[48.07,-8.805],[18.701,100.157],[-19.145,100.157],[6.606,78.875],[9.071,89.09],[-48.07,-27.232]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.697,0.3717,0.123,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":5,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[676.639,440.9,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-10.916,55.324],[-16.019000000000002,30.348],[-13.111,-9.65],[5.942,-46.022999999999996]],"o":[[-14.307,43.037],[-15.972,3.899000000000001],[-2.0949999999999998,-34.746],[16.006,-55.324]],"v":[[-10.916,55.324],[-16.006,17.602],[-7.603,-22.198],[16.006,-55.324]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"st","c":{"a":0,"k":[0.675,0.42,0.225,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":11.208,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":6,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[527.21,272.667,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[10.061,25.459],[-7.638,-26.168],[-17.108,7.350999999999999]],"o":[[16.375,22.479],[-7.638,-26.168],[-11.344999999999999,21.716]],"v":[[14.566,26.168],[-7.638,-26.168],[-14.058,14.924]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.675,0.42,0.225,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":7,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[510.19,413.845,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[38.147,-21.016],[22.967,0.9759999999999991],[-19.950999999999997,8.796],[-10.57,4.877]],"o":[[38.147,-21.016],[-2.446999999999999,9.434999999999999],[-21.404999999999998,8.229],[20.182,-5.054]],"v":[[38.147,-21.016],[15.27,21.016],[-38.147,9.222],[2.412,0.692]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.675,0.42,0.225,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":8,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[388.689,385.593,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-11.278,-1.9329999999999998],[11.192,-14.365],[-0.6900000000000004,7.963],[-4.805000000000001,13.867999999999999]],"o":[[-6.188,-13.584999999999999],[11.192,-14.365],[-4.61,14.117],[-9.114,7.784999999999999]],"v":[[-11.189,-13.904],[11.192,-14.365],[-4.397,14.365],[-4.982,13.62]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.4901,0.496,0.144,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":1,"completed":true},{"ddd":0,"ind":9,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[528.188,276.443,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-8.705,-52.98],[-34.261,-3.199],[-14.681,46.937000000000005],[34.143,64.033]],"o":[[-8.705,-52.98],[-29.153000000000002,33.689],[22.207,41.829],[29.035,27.145]],"v":[[-8.705,-52.98],[-31.76,15.245],[3.763,44.383],[31.589,45.589]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.697,0.3717,0.123,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":10,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[631.027,419.232,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-74.824,-114.547],[4.4410000000000025,-139.621],[253.543,-57.34899999999999],[100.599,166.729],[90.047,166.729],[61.37,12.437],[-24.644,166.729],[-40.392,166.729],[-49.010999999999996,87.98599999999999],[-141.65699999999998,4.296],[-242.692,-13.474],[-255.124,-80.67000000000002],[-209.98600000000002,-150.284],[-160.25900000000001,-168.426],[-109.085,-154.89499999999998]],"o":[[-25.229,-107.415],[213.392,-139.621],[253.543,69.383],[100.599,166.729],[90.047,166.729],[61.37,12.437],[-24.644,166.729],[-42.077000000000005,138.531],[-108.919,-4.713000000000001],[-218.945,4.296],[-258.636,-35.997],[-223.147,-137.859],[-178.16,-165.752],[-125.303,-162.93200000000002],[-83.539,-130.409]],"v":[[-71.339,-97.2],[70.982,-139.621],[253.543,20.843],[100.599,166.729],[90.047,166.729],[61.37,12.437],[-24.644,166.729],[-40.392,166.729],[-73.148,50.619],[-178.297,4.296],[-247.321,-20.018],[-231.785,-122.418],[-194.073,-158.018],[-142.781,-165.679],[-96.312,-142.652]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.697,0.3717,0.123,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":11,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[461.975,276.01,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-6.443,-45.843],[-25.845000000000002,-2.4640000000000004],[-8.731,47.708000000000006],[25.391,27.827]],"o":[[-6.443,-45.843],[-20.773,34.212],[21.205,43.558],[20.283,-8.849]],"v":[[-6.443,-45.843],[-23.309,15.874],[6.237,45.633],[22.837,9.489]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.675,0.42,0.225,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":12,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[641.499,474.036,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.82,111.888],[81.456,-42.404],[43.415,-102.826],[-35.771,-111.888],[-81.456,-74.113],[-88.833,-59.553],[-20.341,79.416]],"o":[[-2.82,111.888],[81.456,-42.404],[43.415,-102.826],[-35.771,-111.888],[-44.816,-74.113],[-28.924999999999997,33.146],[-18.568,111.888]],"v":[[-2.82,111.888],[81.456,-42.404],[43.415,-102.826],[-35.771,-111.888],[-81.456,-74.113],[-53.08,-4.221],[-18.568,111.888]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[0.675,0.42,0.225,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true},{"ddd":0,"ind":13,"ty":4,"nm":"Vector","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[787.961,263.623,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[124.152,-124.80799999999999],[82.121,-72.845],[143.696,1.5699999999999932],[60.165,224.992],[6.961,109.007],[15.899999999999999,50.003],[-143.607,0.009000000000000341],[-96.414,-224.992]],"o":[[106.825,-72.845],[82.121,-44.486999999999995],[143.607,177.906],[60.165,224.992],[4.514,109.131],[-51.546,23.968],[-143.607,-170.014],[90.208,-224.992]],"v":[[106.825,-72.845],[82.121,-72.845],[143.607,81.11],[60.165,224.992],[6.961,109.007],[13.594,49.116],[-143.607,-91.449],[-17.885,-224.992]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false,"_render":true},{"ty":"fl","c":{"a":0,"k":[1,0.5569,0.2275,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false,"_render":true},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform","_render":true}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"_render":true}],"ip":0,"op":150,"st":0,"bm":0,"completed":true}]}],"markers":[],"__complete":true} \ No newline at end of file diff --git a/client/public/lotties/running_squirrel.lottie b/client/public/lotties/running_squirrel.lottie new file mode 100644 index 0000000000000000000000000000000000000000..6a9cd7af85e55893034f7461eb835336f1f45e3e GIT binary patch literal 5554 zcmZ{oWmFUlv&ZRf7Aa|#Zlt?A76}1qQEDmar9?WUq(eY@mxcuv7L*3*lrBMFiARuH ziR=4*x%a*I+?g|HX3ot2%zXYC>tW*nFfcF(Fvi_1tePiGq0j$zwts{4Z-5;*WbG=hGA9n;f5d-fSXfG7Hi*n$Q!}6&Mx9I%hID*YiEs(-nJuxh=2`bHrCu zz*bNzSsCaaUmKt**>D6x58Nuo0VT|v1LN{BTdzuZb=#WSFpU4>IvZ$f+5hh|fngXJ zlz*=~2pc%Kda^!ua`tro_Xj6M)?SRAG{e2RB|m5UPIKfhD{zU9u{5ql39tsUrA}pk z^7f+a8q-Ck$J<;?e8uh z?m`BR%DD9}6XK}HxHxUWQx85wc!olokLb#vmi6r27sW+&N$mx%*9+UYQ3eae^+^+} z?M@Nq;I6CR6IZQ=?FE&#*Hu;h2>SMke51V(9>h^ObQJ;PYYcwC{IXZ&!Lo4XpPdiZ z36)aA_RWVet#luvf!-U>`q@VC`yscLL93Er%LSAh&x-$?|6s^-uc<|~O}M|*{QBW{ zqzo$Y;RkrVezjc#=^1-<5>hQ)Ifpn-oSSO_ckyCvK#dw&79w&>CLr2M)eb-XAcQUbnlle_yn$Z*M&0ns zU-hH9lQ-W6@cqsP<5t6E+3Zk-0mJR++r<86>bup!!P|zVRoaU9xP=(X)uevP$F;TY z76&Tw_9xcIpVA_%u7l08@*u$zy7GPmoW|1=3wy$z=p<_F&|hAV;0T9T0T8*NZ2W@# z97xjWaMM^~cMZdX@KMlFi>p(FQg26N!sE?SEaZtlNhkAZigAc?|8TmmQZRfN?``!~ zoBFpNZ>6E3ohz@8DFwL89e=Qen0r1Z%rH#p-;EC>iTn7|QWLXn@=zC`U&bepY6TJ{ zLm1EhJ^Uu>BZ!r3a3d9fCja3OIuzf#T!`ZQFp?x>bb(rQCe9dQgCe?JQNTMyNc9E$ zum#?r4rrh0t@r)?h!uM9T{t&T`*5@(A;bPYlam^+=d%mB{*eFgwwPxBN5w$E0)P? z_i1R8vZE&ES7Kc4u`Uc^fFa zHZ5W$h{3G~^_xcMt@)KFp@z8`vs%%1lFV;cfVo_%h@d-qS`;&l%QUOgwW)K&ZP}>O z%$;`bo#BYvF-o*AI~#;L!G!ybYS>$5T=_ zIdPbmB*{U+)n=Ld8K9v4LR@$4B#_ivx8&,!$t1GKLz+&JDI@3C8zCv#42l7g2x=QR`EWXu>JKu%1vGt9 zo;GZ>R>9PvK1zw3nbH6~k;AGNWRLr%`6)lHyf2q`Y>u6|vji@_(n&D7hmd#cH^ zgaPpoG_tazx9}$88e*QV)+>xvO4U|P~0 zej^acrj3q#eNi524^wytTW`qKKl16D zYfLVQFnMJbph>Ut)65WC_H7@Ar0w$7IQ^v6XSq0CEwf7a5>w{gGn>Ed3ih)< z1Rq4q?jmO*V}rTI72)ei*X~dOAF0f7I~VBB`I`{GLLV0#+T*9o`2G8nobT)|F@W2C zb>)%K97(y}(6g^~b<965Ka+>R7#Eiuk+gwPIngPjH1v@i5Wmia9eU1nt?stFc?< zJhzX{Bfy5n((xPK@5R6zeWw!@5}aD9azl@||MCsa8IHS$0~U2Xrm3ShbYP7RN@j0n zYcCM%XOwR&>EWb7Xr+*hY2_%5^OmX~q)I(%tUpcl88^y2@B`J5?Z>oJgB;SGiiI(e z*0jQH5-R_^gf=+dQ`0DahA$ek-Rh-$q^#o~W+=Fa0>*ON(=3PaKM z?+@&UGT{Vc%qZ95Wzs1Nw$8+CRGQd6oywlH9UJ_Xr6h)kVW`7Jw7nmAn7ZjVw%RVP!jyBZI}tBz63?xkHxELPG=N}wC1ac0SY8ZY$blVoSgY9b}6Kn1EVY8aZ; zR9DSK``8C6I^&rH-2#YAKWYZ)T|VhzW)|~SUny$?9{np? z-#_>@5E>bkf%}GoUr@_HkmzvPuqUpl&_bHFaB5n>NqAE%%9E9^Zj|kEFA|7gf&_U)`8toCn!f!HB>A)2axMwF zbq)quB{V!EOs(qoi{1{=i;E`QOe%WTc_ge~*(In?#3gjqLHR2ECkZ9MBPH1=`BtIW z>}q1`#Hpu?@eb|I486#BNk`kLay2E6EuDGD8@vetjJ;IRQFmhui<%~ znL3$mj0IjfvN1Oort5=t1sL<(3Prz*CeX_{0*dg{dCdN~!XsysC?r8%9U0_jdRhSU z5>wuIqY3a3!MA$Vwa?e@Ns76wMkIK|cfbDA(3g3*#xDmaev>iQV!Gka#)Evr@%;C- zU*Bj_+oR>d5`LN}u^CZOJJO8ZamQ+qaRKjY`8-Q#NS>^j{g3T}6NOI-NM}O4XYf_P zMJv5dpvlyc+vIs=IbRMeNB2;hT1v3KTUc3*ZQi`v;#oaq(n^$7<@VOt1!Znx%I@PC zQLLHV^z%^I%7ZG(U0v~YHptL*ACV~W4;_U#-`C7jN0sPNp2m6X4)YpI-=8TG^tDtV z3AOwb^_#Nw_rxW6n1FU39V1aEs{CK+n#OoBdUutZ*dmeGYf7PZz;we751(kX!s zezW*~G|9|X6Gd^JnOSS@VC);%7f=w_69*l#*W51UW;LcdZI-OSz82cODfN8S@>%6g z^O}7Q*r^uVUjH07n90TW?OB}(O+T(+DpXus??<#tR zRUiD`2;0GznGK$}%-4Fgr5iOL5`^{r zo&f;3QU{oNd9l!m=TGHEY>+ub;s=+RIhoY+O>4IH^I}VNjeHTE;HeUd4pn!~%_8X7 z0!`qq@)`141qvovo6Hn;<|qaJ&K-}J-C9S{y0PwH52V&PzwZjorli|7 zwEx&{^?1_Y*o~CG53_7ifqe*(bX%)#d#Nr3ZC0aLb-?N@^nFO|oI&Cl1+O)G)EIfz zfrhM9#Tg_aiuhSfkJ0js$ie_na%|c-{R#I=9#u^7K+li~0|;ptZ2(iox_IBu4^yVz z9p`HA%d9Y^ny3u0)b4DQv&T(_pjCDwg4tNXSyU*=fed_BjKix=(gKjGeg5uJEa8(w zOi`H7O5^X3d$U0mHyie-+9&lsL^N57Cxe2Xp1!yA`8Jr_gI@e8*CoEPdb`_8-)Q9W_Iq zxAcrlcADu5w3kr=*#}(M0O!ZP21!yRVMe_WU?>ME^lSsqq;}_s1iYG0Pxz3GNXc|m zRAg3iTiPrgTnOL&JxoCG#%h?c>O84y=jp{a+xCJKQS)b$Bthrxi1*wWvw}*kqfxvJ zAlBQMv-{*gmC-Z~pI~Fjb`JZ!OhvU_eW+da;0V|{Cnr}rI`cCawW5*fj7S|xm*xd4 zG!-fe4*NJA<)z({ zGNDp909`(=3g9~^q zRswgxsDCbmAf>OnLn~YJVEqg3f?(}7u1}epKX5pE{Q0vtn{{n}yo5fA?6}HffGM%) z){7lpD;URWIDV|C_4)#y?LZ@(Sj(UbaGZz1txtB@?Zd`Oigd7+f~&pUO(h^vZUA4?mr%1L8lONqg37$@+o6l?By$u9vPYoV) zLF!`T>Mf0)*;ix+$u5KfD2g{ ze68ujH`KFA3!fx2&zIlwvZNER{4V!GF1TdOaPN=bCidxmAS?O2L+j@r}^@O&ZTz&_{Z5=i2V}&{ zOT&HLbgs(Nw9egTan81XGD=LB&drRg*K4U$<9{f{KcpqQrhtRndxeAJ`=|7uP-hDd z`_C@!oV?ru-2B#7yzE?70(|UzJbWM6E%|vqv0HL;|EpN=2=IR3{yzsg&4#(GDtLv1 z1|YTfj0OXcbH*MdJM&*;C6WzMoxkCuISQ$2B@_Q zWR|g&JxaErCAtawO<3o0VQ#W=zf!dPyGN5*M@M^?f!LepEuC{<`>(F9*5@CU$D?hw zU2lE76JHz#YIA#Qse5am^dDc`I{X6K{Bnwq=jNW~+`p|}jQYO*rRbVT5nrpyS+M`d zu-i) zlQ6YckB6hzy|m*qAA$XETYo_Mf{*akqWD_A0{w2^W=n{NDVo|ZI8>u)LAEt&7+q?h zFHs%Qo5>#Ifey{3fKyS6)mQ%q&1Ols(z7*__AWqU%-&oA?ak3QQozDuRGXk*IV}4N zI!Pz^=iq|lKEe6w=xq$+?<>o3Cu@HBkH0g%cKrTBukM+}@bUgwHAe{arNu(V5K@!e z&TQ6cB{#c0_^XJy@-}==&Xo8gi)rVbVvg=+$(Zdio4v!NMTQQ4f~%tL4yACb7bUTx znavTwo^Ox)bykdM^+#=L!?aoC1?%=vC7k^Hv5_Xu?^U>)u9=_b`|K%tGO#OVTf<7v zK8u?iIWNn+Jq^5M+G2A!uJ0Z@nvsz>tEy}14P@l}6f@JW_sXcG8-s%w4AtG=wru;W z{=s%^gmg|~4f#si-Wi_ZvU>|G8UI*y7FSf2I}ThkYj5)paDVc;P15HhhNDUtsKI^e zv0quf$`H@oXc=Mh9Jfj%8#5fD{XikZI65zzJkN;fo2-YMu4DN{^SV6uqR{axCvSeG z>cWDwH*At#wydQXt-7NR$^)Qyg>vXd*XZj3>_+xhMqNg!!Y_C(iGEQxTxofdYo(@GTIIN0pAyjBbCe+ z40vrBkH<(UnWj3>EOtLxCeyV{gZ?}Ovpm|jpG{wu z2(t}yATQIc5cAs2nBSzRt_#&T(?#xcjK0Z{+&76MG9(0AMk-v*4KGuBKTsB<7pMF% zHJHW`yfuO3;Sq^rX8u8?<)Rjz_XUXa1uFts?X8gP&zctp!S)8|H11%q2rJ6hKwNlV_-Wzo2%7*`JMi4Ts*E+XPop*5o|`=;#- z-1n=4Tq9OgkDDx`6^ky_EOUf(fmX!gphhbXDZK^pB<)Fndwd z&*PCOl!Jfy{cDIkvzQ`#3;q_eCRp`vHKT_bvG2) z>MHS>mTeCX&V5tI-5s_)y-UYsi*O0OKxm!g7F@4y&mu+$5HFc9`+J|Z`(+_j27{Vs z3$FV$Tdb*D>-nf68`_eIpk@vgBGH+oW(7-7E>-i^fyiW)KAK-*j zA#d3thBVd_f$spQ)LW`55;x((rZ7^9$cNoI5`&!Wbvd0G`G!jsrm$Lv*0T_(=^BF0-LA!|-BUTtrvA`ydcI=8bgcVt};RN_mAFZ-NRu2`ZdI{sw zkiF=!nin}jyren}y2-hs*(q`(9|H4i@h}ea>9ilK2AT3^9%zBZ*%hEm9#RWLFDV#~ z$6-Ap1Fk#1W<80YyDFjzT%;1Q4yJXONr4JsUZjNJ>UYl1+MM; z0DL=5KZjK(;?gu=dF7*8=b?+%7VKjZ>`0TJOz^fivBvt9=g0sz1$m4*8a1hh?&hxP zS%a}|gEz7Tc_^RQ5TlmHR9w;b$Rujw-2Fd|{TBN)7O?8P$q_PEeZ54s?fQwe)XK-g z&l(!ClGijm3p_`W4XPjErYj8fDtZ##%K>mye2#)<1#M62_iqf7rH(o2<;}T@7g|0P z3XD0WNpW_J_bTDOEebhlekig?@Z@TkSUg2}SzkJ>{)%4$I31-J8S~IiP8{)pm&zVE zeF$lM4~363pD%(Gzpz(0*7*W9Ot!~H*q*e16>l@ zP1+)T%p^qp! zL=3WkLID*Flrf=onre70gkR6XsP7j1M7cG0D9nFm6rc%y=If+^&{Na}p00x6W-(+d zlf+K8X#J^yRwn8DYSm-@dkMdb$$Q5g{(jc>YoZyCR$K0Bs}F~$0o(7YUia7m_zbyyW*jkDQ@#CA4W1^f2*H*NJyzK1yI9ziZauq1DPJSNeG67slC^yWQi|bdIHh z*MGL}lW2Sjn*kz~2W|&7*QPb1@hdIzWoJm}o?-FF%33Xh3OAAb`p90F8GX@{#9we9 zIBHeJN+WZl9oVZ^Cs=;F@HmYCpx^(d?x!TirzR{?99IYGC-A(*TGrLS6L8u+Ocseo* z4G?aTR9;loFd-iW&w;Y8aij=zW1i5zM37*kKct|+jcEWFJDf&;$;R+8ng@US)0y&t zLTwJ8~1uB@ftAjQa= z=x%|LLINzonA2zxzgXCW&^IR&8NmLjqN4_?OKm>%y_gJJDLTBG_}dlc;#Ff(*3+n} zC73t#^r(lQsj8INCbkrQWU^W{RGeh}na#pt_`|OxZP+pR%xmQE!O#VZUd1_8VrdFq z{cr+?rckPU%a$I+)O1m-#8M@Z-jFq^mncIkyte{7+R58wAhb{KTkL;UH(*vwa#AzM z`<^kC`F=pko2dpuNZ)0?6PlBM4edt>>ute0X zj?@9{H+@SEJt{+14SJuK1%AZEF2~4UEZX~lZUv*>o4Fn?R@hOj8e%b2)(h_V^8ULe zD;^$YUt`{-2;pCJ`(ss{#AL#jqDWC#PN)Hjv-(IlIz24fJpmcA zafFt2uGO^-GNYNShVy-?y;>;*2!kr1h%oybMO?hv0Z+1B{JQsoCC(esDY6gG4u0Vv z@NCN0ubtK(!gSfI+#B=pJ(4cmHsnaF@xEy|Yj)FdAmLsm8cBVEFkxbMya#&enHS`; zvfA{D)K-IWYv#?kDpnKc7m%SFD$t_!<^hvf4Z|%qg>G7P1iDp=;}CO;_EbUb+^`|w z{loNMo6RS~`C==6sL{@nFIkK>#Dy2!Haxy9BD>vj+ z-s>>`_8rarN1_Y7fjS9AbwMpAzJX;Jk7Jh246g4dB2CwZhh4gWw^od{Q^V zc;AxUpZmsDQbCXkQRibc_u8$Ew=}n)t%@Y=I%b?Q*ek8nc)S&GcVfco^w4=6=bg0P zqX>**u5gv?^`Px6Oro;}VT^~x*)T6HIRBO1D-KEPlf<;Co^g3q6^0(cD!iYOD6F*p zIp1oz(M*gfUQ&jZI7idc_M7#bS-R z2=kO@72BwA7%1Xj_5lj!L!9}vw0;RtEaf(zTI!GFFE(fH}V{;${Sr$7< zBo?t(otXHPF+^=7ps!rgdY{xnk*5xVhl2*tsMEJ8rF24RblRyon5vw9<3%>H;oKR! zL<$U|vC8x^H_{m>OonQDgxC#n0f55+#diFIwLRGcJ3521CF++v#yGo}L{Zj8+PcQK z2?ZeJ2X29{S`YcXW(Z{mS)KW_#Oi)JZ6P$;+9Tb!Bz9J0j9#-+VNJm^$kHy}&*p1l zdiwS)bxk@GvlT7+V4=|Ej@gvU_%w{h&3idRsc~Y@6119&s0k0Y5O}i=MPQ$s*Rui zT~F#Z)^Rav-|89#l2A7ZyCV9Q{ZZU7$`N>Xj=1m+t#BTG34t4_c+Wrtp2JvHtbUid zSkIu)&;5$Nf-N%oK7m|#sY%NJ@zzT<41-UjD+hwMn?Gj~0{juhL;%bDTdmMEAGRS> zfh&EbeO;kb{65pkj0#iz3vXVPgpEJ6et_z1*`xU~JR1{cVh@t6L_t3eX|lubIXN?w zIRMalbY>uq$mv+C3h7Vy^L@*$;~f5~U6yR?sQ81HfJnK}tDYXFm}Cu~5|$M|FJI49 zWZG@E*pO)2gW%AB&1X_gdT%F7B83pFZ3qFHYa|Pxw?_;Il7 zwsi9=r2UG~dAA6i3P8kUALo>9uUf0nu}HtW>K`G4milEG=7*P7>(W4b!{Hs%cH3}$ zPyD8|YF3VTLT4O9rkpuPk7|DFdAl72-I{cXcyB_z;&ZEFGl=4~Iku%7&pEaW@Xw}r zYJRWDiGc0bfLL3`lMQj z%q4y=(p}b-w6-s_*l!xrp2CicGsTkg$EStn+2%ct}3>LHCCNIdA_%GlU_k z2P;%&&LQKGUM2}0Kz>RsGVqCDD0~++@8*uZZ&N;@==JvMZfMlD_2kSVp}amc-Iey1 z3dyJozU;1T2D8x~XHNAqXH9M2kO%3}>F)74^kd#NGRG|ZHMKda+?=)_HGYd@=TPCwEoU8Th`x)??oFrx0=u7 zfoPY@O+G=)M&1!2JqQI4Jzo1$mIcpAyBw_Pr>a$`+7!e(zP<&%y^06Eb=h_Wdb&Tk zWN=k)G0sw@6=60~UjgyHZ+?|B63`5sW$)Yh)8YhIQHyk7&Yn03y0 zsPHJUt6Ib*l~UH!n?BMGsv(hDg4u-mKjgP2nU>Z1zi*A(O|QyA99Q z)U2N-IX zp;bQ~FuMP|*i|fC(V{S#c{s8UOnp;t`;Who#1mcqnjE!R$`mY9B~kGDtS)&M1PCbn zq($E|l3S`phZiwP7BNbu?7)Ei1H!tVkr^vQW5ZUSDn!GW$t^D_N4a=r;2>Lytt+A$ zO1t?PgAWk$?!lX};xAi!JrPrW%!HIDAyJ6eBmGPjce*mqO^qQ{s)Kj}l;Hb` zLbM`_j=ozPa;qqjDbCqarlQyD1PodXJky|9e6Hh48?L%bt591-afi~&)2HIQr6|?8Fk|p+MbbcK+5VGFHi0t#B!*{6)sYS# zV2azut5I^M9mH^xa9#3s%iKo3EOvHvwFG!6nOjy=8yi76vE80*y#;s#wLKQ}F;r%# zGHFzV=06UKV!53}@K}4Z&7`|l1)%tlZ&8YTIy=)SQWv-*q)wY%-BmaV*2f$4Q?l-_ zO5b_=)w9u_t4^hOTa^kqh5htY@?+pRPl-*Ltn!3Z8~q2H3jV{MJM&qwp1TLK*%(ND zgJMuqhQP~MFks!?t4Qd&5Z4vN4ssT(cMSJ#eRH4)Bb#6DBt$kVf>tiR7F$H*WFCXg zLL-T*e32ZXKJ`p*cc{b7yl-yTo2xjJujy3Ui_A%QXMes2JU>^fo!ajPtC4uL=FOl^ zmD@rLo=hkxxN}=@o`Y3wn_DpjOzRGVRRbZ5DOjsYo8uAr<((yIf|z_ST6RVsQ8HS! z^A0EWM^Ehs79vWtgW?sZLCupp{Zk(AxjwK|P@iH6GVo=WiQJ`S;U8l2OU%%$W@m48 zHFnjIc2b=#QZ|Nf5bjjf3LLl9e03>kbne|Ans6r(>j#tg7xQuok+D=7lIRR>=-#%v zt+9|D&Kj~}8JUW5hMw#EUBUerPrklp<)l86woBSoK9Ks?#x!cnsiuD-eC4k3s~ZEc zzNH&O4wNIhO8!&={h|KH1H3qH~M{KxUsjpL;nBa{L}!eRh_`Dqnrx^vqgv+4 z!j+uxFM?VZVOD&ng1@lPZ7Fyr`&?vkM(yEX2Y=seYehLrWJ}0f`^w_&%Q*B?+>nVF z{DG)<6*Edpi_EVd%=h@aW(6zjaw(aFPT6TpzWCNTMKxxkQJlB*ay#nn9E~p{qZ9WJ zZ>RgCu;Um|PJnm7%jVhZ-PY^T-s2107$VkxlY6!=4QI?T zo67-O?Q8GDy|rN^r2{ot(D9aDA-kQjfX`<79#alr!!3+uV8JZ3qWkQOWPf0)PPL$+ zbZdpruM#zp@&yWzG>d#exB&KwUr3q0m*Q4EurI16yVnKx=eL5hW#iM8-Xu)yG>62}&FnNTu}JX|{a~ zigVddz3E5N>KpLVJt&|y4Mf=@7x=UCm&g7nBixI0m6;E%)1ioaCvNZpGPognl9hVm zlT5hgZfKeZb4U^U+hsS~O}(p!cu8@mFrD3m)jpD3Q3R|b#$xa%hWyxbMP}7oQnfy? z+)fl)TlUi?R$N`o64D%8lg%7qkbP$)L%~^CL69V1qP4I1bGS1X<#EQ9gn~lqd~n#U zH5!kv2wnidzAX?QFWlAj;>u!!J@Q7M4Kin9c}x>OG-scz#Eda(Z!J~7uz@Qp zL%X1LMUynoMHwOTNa2O;U9)y}I*l-|gJOFN^ywcPVle-ZF*43(CDPWPqd3e%dlQdC zvU6(E5Bx+``T1=nEep|B^&M%Ht@bV!BI_8vQ#|wr3pUiHT3G*k$*R zC2RLXF@X`Lm5ZM+jMv0MpL`0tC>$?t4RL!Af3XD%5!KS)XehbE!d_oDThr4=G z*qwDUH zk9LOw;WU)t5eVV_--hQuC-MIp|HJv`Kf&A~jihtYxA3st<85!k2EC~N*_P=~i H`5*LO!w_`7 literal 0 HcmV?d00001 diff --git a/client/src/components/NewDeviceModal/AnimationPlayer.tsx b/client/src/components/NewDeviceModal/AnimationPlayer.tsx index 7adfaf0bd..dd2164f87 100644 --- a/client/src/components/NewDeviceModal/AnimationPlayer.tsx +++ b/client/src/components/NewDeviceModal/AnimationPlayer.tsx @@ -1,15 +1,33 @@ +import { DotLottie, DotLottieReact } from '@lottiefiles/dotlottie-react'; import React from 'react'; -import { DotLottiePlayer, PlayMode } from '@dotlottie/react-player'; - -const AnimationPlayer = () => ( - -); + +const intermission = 5000; + +const AnimationPlayer = () => { + const [dotLottie, setDotLottie] = React.useState(null); + React.useEffect(() => { + function onComplete() { + // Set a timeout to pause for the intermission duration, then replay the animation + setTimeout(() => dotLottie?.play(), intermission); + } + + // Add the event listener for the complete event + dotLottie?.addEventListener('complete', onComplete); + + return () => { + dotLottie?.removeEventListener('complete', onComplete); + }; + }, [dotLottie]); + return ( + + ); +}; export default AnimationPlayer; diff --git a/client/src/components/PlaybookExecutionModal/PlaybookExecutionTerminalModal.tsx b/client/src/components/PlaybookExecutionModal/PlaybookExecutionTerminalModal.tsx index e3cff19ca..faa502d35 100644 --- a/client/src/components/PlaybookExecutionModal/PlaybookExecutionTerminalModal.tsx +++ b/client/src/components/PlaybookExecutionModal/PlaybookExecutionTerminalModal.tsx @@ -7,18 +7,10 @@ import TerminalCore, { } from '@/components/Terminal/TerminalCore'; import { getAnsibleSmartFailure } from '@/services/rest/ansible'; import { ClockCircleOutlined, ThunderboltOutlined } from '@ant-design/icons'; -import { - DotLottieCommonPlayer, - DotLottiePlayer, -} from '@dotlottie/react-player'; +import { DotLottie, DotLottieReact } from '@lottiefiles/dotlottie-react'; + import { Button, Col, Modal, notification, Row, Steps, Typography } from 'antd'; -import React, { - LegacyRef, - useEffect, - useImperativeHandle, - useRef, - useState, -} from 'react'; +import React, { useEffect, useImperativeHandle, useRef, useState } from 'react'; import { API, SsmAnsible } from 'ssm-shared-lib'; export interface PlaybookExecutionTerminalModalHandles { @@ -71,13 +63,13 @@ const PlaybookExecutionTerminalModal = React.forwardRef< const timerIdRef = useRef(); const [hasReachedFinalStatus, setHasReachedFinalStatus] = useState(false); const terminalRef = useRef(null); - const lottieRef = useRef(); + const [dotLottie, setDotLottie] = useState(null); const [api, contextHolder] = notification.useNotification(); useEffect(() => { if (hasReachedFinalStatus) { terminalRef?.current?.onDataIn('# Playbook execution finished', true); - lottieRef.current?.stop(); + dotLottie?.stop(); } }, [hasReachedFinalStatus]); @@ -145,6 +137,7 @@ const PlaybookExecutionTerminalModal = React.forwardRef< const pollingCallback = () => terminalHandler.pollingCallback(execId); const startPolling = () => { + dotLottie?.play(); terminalRef?.current?.onDataIn( '---\n' + '# ,;;:;,\n' + @@ -208,12 +201,12 @@ const PlaybookExecutionTerminalModal = React.forwardRef< open={isOpen} title={
- } - src="/Animation-1705922266332.lottie" +
=21.1.0" } }, "node_modules/@eslint/object-schema": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", - "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", - "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", + "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.10.0", + "@eslint/core": "^0.12.0", "levn": "^0.4.1" }, "engines": { @@ -3348,9 +3351,10 @@ "license": "BSD-3-Clause" }, "node_modules/@humanwhocodes/retry": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", - "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", + "license": "Apache-2.0", "engines": { "node": ">=18.18" }, @@ -5014,9 +5018,9 @@ } }, "node_modules/@types/jsonwebtoken": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.8.tgz", - "integrity": "sha512-7fx54m60nLFUVYlxAB1xpe9CBWX2vSrk50Y6ogRJ1v5xxtba7qXTg5BgYDN5dq+yuQQ9HaVlHJyAAt1/mxryFg==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.9.tgz", + "integrity": "sha512-uoe+GxEuHbvy12OUQct2X9JenKM3qAscquYymuQN4fMWG9DBQtykrQEFcAbVACF7qaLw9BePSodUL0kquqBJpQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5924,9 +5928,9 @@ "license": "MIT" }, "node_modules/bare-events": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz", - "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==", + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", + "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", "dev": true, "license": "Apache-2.0", "optional": true @@ -7068,21 +7072,21 @@ } }, "node_modules/eslint": { - "version": "9.20.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.1.tgz", - "integrity": "sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g==", + "version": "9.21.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.21.0.tgz", + "integrity": "sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==", "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.11.0", - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.20.0", - "@eslint/plugin-kit": "^0.2.5", + "@eslint/config-array": "^0.19.2", + "@eslint/core": "^0.12.0", + "@eslint/eslintrc": "^3.3.0", + "@eslint/js": "9.21.0", + "@eslint/plugin-kit": "^0.2.7", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.1", + "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", @@ -7246,18 +7250,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/@eslint/core": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.11.0.tgz", - "integrity": "sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==", - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, "node_modules/eslint/node_modules/eslint-visitor-keys": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", @@ -8113,9 +8105,9 @@ } }, "node_modules/globals": { - "version": "15.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", - "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.0.0.tgz", + "integrity": "sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==", "dev": true, "license": "MIT", "engines": { @@ -9183,14 +9175,14 @@ } }, "node_modules/mongodb-memory-server": { - "version": "10.1.3", - "resolved": "https://registry.npmjs.org/mongodb-memory-server/-/mongodb-memory-server-10.1.3.tgz", - "integrity": "sha512-QCUjsIIXSYv/EgkpDAjfhlqRKo6N+qR6DD43q4lyrCVn24xQmvlArdWHW/Um5RS4LkC9YWC3XveSncJqht2Hbg==", + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/mongodb-memory-server/-/mongodb-memory-server-10.1.4.tgz", + "integrity": "sha512-+oKQ/kc3CX+816oPFRtaF0CN4vNcGKNjpOQe4bHo/21A3pMD+lC7Xz1EX5HP7siCX4iCpVchDMmCOFXVQSGkUg==", "dev": true, "hasInstallScript": true, "license": "MIT", "dependencies": { - "mongodb-memory-server-core": "10.1.3", + "mongodb-memory-server-core": "10.1.4", "tslib": "^2.7.0" }, "engines": { @@ -9198,9 +9190,9 @@ } }, "node_modules/mongodb-memory-server-core": { - "version": "10.1.3", - "resolved": "https://registry.npmjs.org/mongodb-memory-server-core/-/mongodb-memory-server-core-10.1.3.tgz", - "integrity": "sha512-ayBQHeV74wRHhgcAKpxHYI4th9Ufidy/m3XhJnLFRufKsOyDsyHYU3Zxv5Fm4hxsWE6wVd0GAVcQ7t7XNkivOg==", + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/mongodb-memory-server-core/-/mongodb-memory-server-core-10.1.4.tgz", + "integrity": "sha512-o8fgY7ZalEd8pGps43fFPr/hkQu1L8i6HFEGbsTfA2zDOW0TopgpswaBCqDr0qD7ptibyPfB5DmC+UlIxbThzA==", "dev": true, "license": "MIT", "dependencies": { @@ -10284,9 +10276,9 @@ } }, "node_modules/posthog-node": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/posthog-node/-/posthog-node-4.6.0.tgz", - "integrity": "sha512-Dq6sBTeBXfK0Ez9OWAl+lhUcSInGUshxtoe0b26gFZtnV4byWTEZtwitKB6Xel9wYx3pNHixKOTSIHC/6a6CIA==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/posthog-node/-/posthog-node-4.7.0.tgz", + "integrity": "sha512-RgdUKSW8MfMOkjUa8cYVqWndNjPePNuuxlGbrZC6z1WRBsVc6TdGl8caidmC10RW8mu/BOfmrGbP4cRTo2jARg==", "license": "MIT", "dependencies": { "axios": "^1.7.4" @@ -10305,9 +10297,9 @@ } }, "node_modules/prettier": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.1.tgz", - "integrity": "sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.2.tgz", + "integrity": "sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==", "dev": true, "license": "MIT", "bin": { @@ -10482,13 +10474,6 @@ ], "license": "MIT" }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", - "dev": true, - "license": "MIT" - }, "node_modules/quick-format-unescaped": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", @@ -11393,14 +11378,13 @@ } }, "node_modules/streamx": { - "version": "2.21.1", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.21.1.tgz", - "integrity": "sha512-PhP9wUnFLa+91CPy3N6tiQsK+gnYyUNuk15S3YG/zjYE7RuPeCjJngqnzpC31ow0lzBHQ+QGO4cNJnd0djYUsw==", + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz", + "integrity": "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==", "dev": true, "license": "MIT", "dependencies": { "fast-fifo": "^1.3.2", - "queue-tick": "^1.0.1", "text-decoder": "^1.1.0" }, "optionalDependencies": { diff --git a/server/package.json b/server/package.json index 4c7950ad1..b89c01923 100644 --- a/server/package.json +++ b/server/package.json @@ -58,7 +58,7 @@ "multer": "^1.4.5-lts.1", "js-yaml": "^4.1.0", "passport-mock-strategy": "^2.0.0", - "posthog-node": "^4.6.0", + "posthog-node": "^4.7.0", "ssh2": "^1.16.0", "bull": "^4.16.5", "prom-client": "^15.1.3", @@ -69,15 +69,15 @@ "glob": "8.1.0" }, "devDependencies": { - "@eslint/compat": "^1.2.6", - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "^9.20.0", + "@eslint/compat": "^1.2.7", + "@eslint/eslintrc": "^3.3.0", + "@eslint/js": "^9.21.0", "@types/bcrypt": "^5.0.2", "@types/cookie-parser": "^1.4.8", "@types/dockerode": "^3.3.34", "@types/dockerode-compose": "^1.4.1", "@types/fs-extra": "^11.0.4", - "@types/jsonwebtoken": "^9.0.8", + "@types/jsonwebtoken": "^9.0.9", "@types/lodash": "^4.17.15", "@types/luxon": "^3.4.2", "@types/node-cron": "^3.0.11", @@ -94,16 +94,16 @@ "@types/multer": "^1.4.12", "@typescript-eslint/eslint-plugin": "^8.24.1", "@vitest/coverage-v8": "^3.0.6", - "eslint": "^9.20.1", + "eslint": "^9.21.0", "eslint-config-prettier": "^10.0.1", "eslint-plugin-prettier": "^5.2.3", "eslint-plugin-import-x": "^4.6.1", "@stylistic/eslint-plugin": "^4.0.1", "@typescript-eslint/parser": "^8.24.1", - "globals": "^15.15.0", - "mongodb-memory-server": "^10.1.3", + "globals": "^16.0.0", + "mongodb-memory-server": "^10.1.4", "node-mocks-http": "^1.16.2", - "prettier": "^3.5.1", + "prettier": "^3.5.2", "supertest": "^7.0.0", "ts-node": "^10.9.2", "typescript": "^5.7.3", diff --git a/server/src/data/database/model/Device.ts b/server/src/data/database/model/Device.ts index b575f8b1f..09bbef9f1 100644 --- a/server/src/data/database/model/Device.ts +++ b/server/src/data/database/model/Device.ts @@ -23,6 +23,9 @@ export default interface Device { }; }; configuration: { + ansible: { + ansiblePythonInterpreter?: string; + }; containers: { proxmox?: { watchContainersCron?: string; @@ -363,6 +366,12 @@ const schema = new Schema( default: uuidv4, }, capabilities: { + ansible: { + ansiblePythonInterpreter: { + type: Schema.Types.String, + required: false, + }, + }, containers: { docker: { enabled: { From 45dab3575ed5df77cd7176f0a8fa8f0dd17562e1 Mon Sep 17 00:00:00 2001 From: SquirrelDevelopper Date: Sun, 23 Feb 2025 14:30:42 +0100 Subject: [PATCH 004/205] Move 'ansible' field under 'configuration' in Device model. The 'ansible' field was relocated from 'capabilities' to 'configuration' for better logical grouping. This improves model organization and aligns related properties more intuitively. --- server/src/data/database/model/Device.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/server/src/data/database/model/Device.ts b/server/src/data/database/model/Device.ts index 09bbef9f1..f404ad2c3 100644 --- a/server/src/data/database/model/Device.ts +++ b/server/src/data/database/model/Device.ts @@ -366,12 +366,6 @@ const schema = new Schema( default: uuidv4, }, capabilities: { - ansible: { - ansiblePythonInterpreter: { - type: Schema.Types.String, - required: false, - }, - }, containers: { docker: { enabled: { @@ -397,6 +391,12 @@ const schema = new Schema( }, }, configuration: { + ansible: { + ansiblePythonInterpreter: { + type: Schema.Types.String, + required: false, + }, + }, containers: { proxmox: { watchContainersCron: { From 49dfaf7f9fd396d1dca3d6b6a83a64e128628ecc Mon Sep 17 00:00:00 2001 From: SquirrelDevelopper Date: Sun, 23 Feb 2025 14:33:10 +0100 Subject: [PATCH 005/205] Remove ansible configuration from Device model. This change eliminates the `ansible` configuration section from the `Device` model. It simplifies the schema by focusing only on the relevant container configurations. This cleanup may also prevent potential confusion or misusage of deprecated fields. --- server/src/data/database/model/Device.ts | 9 --------- 1 file changed, 9 deletions(-) diff --git a/server/src/data/database/model/Device.ts b/server/src/data/database/model/Device.ts index f404ad2c3..b575f8b1f 100644 --- a/server/src/data/database/model/Device.ts +++ b/server/src/data/database/model/Device.ts @@ -23,9 +23,6 @@ export default interface Device { }; }; configuration: { - ansible: { - ansiblePythonInterpreter?: string; - }; containers: { proxmox?: { watchContainersCron?: string; @@ -391,12 +388,6 @@ const schema = new Schema( }, }, configuration: { - ansible: { - ansiblePythonInterpreter: { - type: Schema.Types.String, - required: false, - }, - }, containers: { proxmox: { watchContainersCron: { From b12df7f711b1c54eab7c752fba40e26b8fc1ec2b Mon Sep 17 00:00:00 2001 From: SquirrelDeveloper Date: Sun, 23 Feb 2025 14:28:55 +0000 Subject: [PATCH 006/205] Updated CHANGELOG.md --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a0ea5724..f3d8d282a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [Unreleased](https://github.com/SquirrelCorporation/SquirrelServersManager/tree/HEAD) + +[Full Changelog](https://github.com/SquirrelCorporation/SquirrelServersManager/compare/v0.1.30...HEAD) + +**Merged pull requests:** + +- \[CHORE\] Delete unused animation JSON file & bump libs [\#777](https://github.com/SquirrelCorporation/SquirrelServersManager/pull/777) ([SquirrelDeveloper](https://github.com/SquirrelDeveloper)) +- Bump swiper from 11.2.2 to 11.2.4 in /site [\#756](https://github.com/SquirrelCorporation/SquirrelServersManager/pull/756) ([dependabot[bot]](https://github.com/apps/dependabot)) + ## [v0.1.30](https://github.com/SquirrelCorporation/SquirrelServersManager/tree/v0.1.30) (2025-02-22) [Full Changelog](https://github.com/SquirrelCorporation/SquirrelServersManager/compare/V0.1.30...v0.1.30) @@ -32,6 +41,7 @@ - Bump vuetify from 3.7.11 to 3.7.12 in /site [\#755](https://github.com/SquirrelCorporation/SquirrelServersManager/pull/755) ([dependabot[bot]](https://github.com/apps/dependabot)) - Bump node from 23.7.0-alpine to 23.8.0-alpine in /client [\#754](https://github.com/SquirrelCorporation/SquirrelServersManager/pull/754) ([dependabot[bot]](https://github.com/apps/dependabot)) - Bump node from 23.7.0-alpine to 23.8.0-alpine in /server [\#753](https://github.com/SquirrelCorporation/SquirrelServersManager/pull/753) ([dependabot[bot]](https://github.com/apps/dependabot)) +- \[CHORE\] Delete unused animation JSON file & bump libs [\#777](https://github.com/SquirrelCorporation/SquirrelServersManager/pull/777) ([SquirrelDeveloper](https://github.com/SquirrelDeveloper)) ## [v0.1.29](https://github.com/SquirrelCorporation/SquirrelServersManager/tree/v0.1.29) (2025-02-18) From 4ed8617867abb9b8187252008a56985c56e475f3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2025 04:38:23 +0000 Subject: [PATCH 007/205] Bump vuetify from 3.7.12 to 3.7.13 in /site Bumps [vuetify](https://github.com/vuetifyjs/vuetify/tree/HEAD/packages/vuetify) from 3.7.12 to 3.7.13. - [Release notes](https://github.com/vuetifyjs/vuetify/releases) - [Commits](https://github.com/vuetifyjs/vuetify/commits/v3.7.13/packages/vuetify) --- updated-dependencies: - dependency-name: vuetify dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- site/package-lock.json | 8 ++++---- site/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/site/package-lock.json b/site/package-lock.json index f7c42267c..5eb353e9d 100644 --- a/site/package-lock.json +++ b/site/package-lock.json @@ -11,7 +11,7 @@ "@vue-flow/minimap": "^1.5.2", "axios": "^1.7.9", "swiper": "^11.2.4", - "vuetify": "^3.7.12" + "vuetify": "^3.7.13" }, "devDependencies": { "@vue-flow/core": "^1.42.1", @@ -2719,9 +2719,9 @@ } }, "node_modules/vuetify": { - "version": "3.7.12", - "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-3.7.12.tgz", - "integrity": "sha512-cBxWXKPNl3vWc10/EEpfK4RBrCZERAHEUZCWmrJPd6v+JU0sbm4sEgIpy8IU5d1BzA1kIhknpbgYy2IqiZponA==", + "version": "3.7.13", + "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-3.7.13.tgz", + "integrity": "sha512-4+RuQU+zLtXhlN2eZUpKXums9ftzUzhMeiNEJvvJY4XdOzVwUCth2dTnEZkSF6EKdLHk3WhtRk0cIWXZxpBvcw==", "license": "MIT", "engines": { "node": "^12.20 || >=14.13" diff --git a/site/package.json b/site/package.json index b2e97bbee..f44ed23d7 100644 --- a/site/package.json +++ b/site/package.json @@ -17,7 +17,7 @@ "@vue-flow/background": "^1.3.2", "@vue-flow/minimap": "^1.5.2", "swiper": "^11.2.4", - "vuetify": "^3.7.12", + "vuetify": "^3.7.13", "axios": "^1.7.9" } } From 9305b9b151c286d84ccb99e04e000dc3cba4061b Mon Sep 17 00:00:00 2001 From: SquirrelDevelopper Date: Mon, 24 Feb 2025 17:40:29 +0100 Subject: [PATCH 008/205] Refactor playbooks documentation and improve update instructions Restructured playbooks documentation by moving files to a new "playbooks-repositories" directory and adding concise summaries for clarity. Enhanced update instructions for Docker and Proxmox, including new commands and memory recommendations. --- site/.vitepress/config.ts | 4 +- site/docs/install/update.md | 16 +++++- .../local-playbooks.md | 12 ++++- .../remote-playbooks.md | 51 +++++++++++++++++++ site/docs/playbooks/remote-playbooks.md | 35 ------------- 5 files changed, 78 insertions(+), 40 deletions(-) rename site/docs/{playbooks => playbooks-repositories}/local-playbooks.md (89%) create mode 100644 site/docs/playbooks-repositories/remote-playbooks.md delete mode 100644 site/docs/playbooks/remote-playbooks.md diff --git a/site/.vitepress/config.ts b/site/.vitepress/config.ts index d57172c40..e1f34d7ae 100644 --- a/site/.vitepress/config.ts +++ b/site/.vitepress/config.ts @@ -181,8 +181,8 @@ export default defineConfig({ { text: 'Playbooks Repositories', items: [ - { text: 'Local Playbooks Repositories', link: '/docs/playbooks/local-playbooks.md' }, - { text: 'Remote Playbooks Repositories', link: '/docs/playbooks/remote-playbooks.md' } + { text: 'Local Playbooks Repositories', link: '/docs/playbooks-repositories/local-playbooks.md' }, + { text: 'Remote Playbooks Repositories', link: '/docs/playbooks-repositories/remote-playbooks.md' } ] }, { diff --git a/site/docs/install/update.md b/site/docs/install/update.md index e7e617348..4af44989d 100644 --- a/site/docs/install/update.md +++ b/site/docs/install/update.md @@ -6,7 +6,13 @@ Updating your installation depends on the method you used for the installation: ## Updating - Docker (getSsm Script or Pre-built Images) -Locate the SSM's `docker-compose.yml` file and execute: +Locate the SSM's `docker-compose.yml` file and update the file with: + +```shell +curl -o docker-compose.yml https://raw.githubusercontent.com/SquirrelCorporation/SquirrelServersManager/refs/heads/master/docker-compose.yml +``` + +then: ```shell docker-compose stop @@ -24,11 +30,19 @@ docker compose up ## Updating - Proxmox +:::warning ⚠️ Update the container memory +It is highly recommended that you temporary set the container memory to 4096MB for the duration of the update +::: + From the shell of the **LXC instance**: ```shell bash -c "$(wget -qLO - https://getssm.io/proxmox)" ``` +or +```shell +bash -c "$(wget -qO - https://getssm.io/proxmox)" +``` ## Updating - Manual Install diff --git a/site/docs/playbooks/local-playbooks.md b/site/docs/playbooks-repositories/local-playbooks.md similarity index 89% rename from site/docs/playbooks/local-playbooks.md rename to site/docs/playbooks-repositories/local-playbooks.md index 70e1fd185..fe5ccc4c2 100644 --- a/site/docs/playbooks/local-playbooks.md +++ b/site/docs/playbooks-repositories/local-playbooks.md @@ -1,7 +1,9 @@ # Local Playbooks Repositories -:::info Volume path -By default, according to the docker-compose.yml, local playbooks are stored on your filesystem thanks to a Docker volume `./.data.prod/playbooks:/playbooks`, meaning the files will be located locally on your system in `./.data.prod/playbooks/` +## 🌰 In a Nutshell + +:::info ℹ️ Sum-up +Local Playbooks repositories are spaces to organize, create and edit your custom Ansible playbooks. ::: ## Creating a new local repository @@ -29,3 +31,9 @@ This action is permanent. Deleting a local repository will effectively delete th Click on the local repository to open the modal, then click on the `Delete` button. ![add-file](/playbooks/delete-repo.png) + +--- + +:::info Volume path +By default, according to the docker-compose.yml, local playbooks are stored on your filesystem thanks to a Docker volume `./.data.prod/playbooks:/playbooks`, meaning the files will be located locally on your system in `./.data.prod/playbooks/` +::: \ No newline at end of file diff --git a/site/docs/playbooks-repositories/remote-playbooks.md b/site/docs/playbooks-repositories/remote-playbooks.md new file mode 100644 index 000000000..c3d189f3b --- /dev/null +++ b/site/docs/playbooks-repositories/remote-playbooks.md @@ -0,0 +1,51 @@ +# Remote Playbooks Repositories + +## 🌰 In a Nutshell + +:::info ℹ️ Sum-up +Remote playbooks repositories are Git repositories that will be cloned to your filesystem as separate folders. +::: + +## Adding a new remote repository + +![add-file](/playbooks/add-remote.gif) + +To add a Git playbooks repository, you must provide the following information: +![add-file](/playbooks/add-remote-options.png) + +| Field | Requires |Description | +|-------|:-------------:|-------------| +| Name | :red_circle: |Repository name to be displayed in the Playbooks page | +| Git Service | :red_circle: |Repository hosting service (GitHub, GitLab, Azure, Gitbucket) | +| Git Email | :red_circle: |Email address associated with the access token | +| Git Username | :red_circle: |Username associated with the access token | +| Branch | :red_circle: |Branch to checkout and push changes to (e.g., master or main) | +| Access Token | :red_circle: | Authentication token for repository access | +| IgnoreSSLErrors | :white_circle: | Whether to ignore SSL errors when connecting to remote repository (e.g., for self-signed certificates) | +| Vaults | :white_circle: | Associated repository vaults. Define vault and password in Vault section first before linking here | +| Exclude Directories | :white_circle: | Paths to exclude from playbook execution list (useful for excluding roles, vars folders, etc.) | + + +## Synchronization + +- SSM **will not** listen to changes (addition/deletion) made outside its interface unless a manual synchronization is triggered. +- Any changes made **inside** SSM will be automatically synchronized. + If you believe SSM is desynchronized from the actual file structure of the repository, click on `...` of the `Actions` button of the Repository modal, and click on `Sync to database` + +![add-file](/playbooks/manual-sync.gif) + +## Delete a remote repository + +:::warning ⚠️ Destructive action +This action is permanent. Deleting a remote repository will effectively delete the underlying files and directories permanently. Proceed with caution! +::: + +![add-file](/playbooks/delete-repo.png) + + +--- + + +:::info Volume path +By default, according to the docker-compose.yml, remote playbooks are stored on your filesystem thanks to a Docker volume `./.data.prod/playbooks:/playbooks`, meaning the files will be located locally on your system in `./.data.prod/playbooks/` +::: \ No newline at end of file diff --git a/site/docs/playbooks/remote-playbooks.md b/site/docs/playbooks/remote-playbooks.md deleted file mode 100644 index c14a0a2fe..000000000 --- a/site/docs/playbooks/remote-playbooks.md +++ /dev/null @@ -1,35 +0,0 @@ -# Remote Playbooks Repositories - -Remote playbooks repositories are Git repositories that will be cloned to your filesystem as separate folders. - -## Adding a new remote repository - -![add-file](/playbooks/add-remote.gif) - -To add a Git playbooks repository, you must provide the following information: -- The `Name` of the repo that will be displayed in the Playbooks page -- The `Git Service` of the repo (e.g: `Github`, `Gitlab`, `Azure`, `Gitbucket`) -- The `Git email` associated with the access token -- The `Git username` associated with the access token -- The `Branch` to checkout and push changes to (e.g., `master` or `main`) -- The `Access Token` associated with the user - -- `Exclude Directories from Execution List`: All files locates withing those paths will be excluded for the list of playbooks you can execute in SSM. It can be usefull to exclude folders containing roles, vars, etc... - -![add-file](/playbooks/add-remote-options.png) - -## Synchronization - -- SSM **will not** listen to changes (addition/deletion) made outside its interface unless a manual synchronization is triggered. -- Any changes made **inside** SSM will be automatically synchronized. - If you believe SSM is desynchronized from the actual file structure of the repository, click on `...` of the `Actions` button of the Repository modal, and click on `Sync to database` - -![add-file](/playbooks/manual-sync.gif) - -## Delete a remote repository - -:::warning ⚠️ Destructive action -This action is permanent. Deleting a remote repository will effectively delete the underlying files and directories permanently. Proceed with caution! -::: - -![add-file](/playbooks/delete-repo.png) From 096d12fb83fe22e112832da4d3238e9015f89636 Mon Sep 17 00:00:00 2001 From: SquirrelDevelopper Date: Mon, 24 Feb 2025 17:47:55 +0100 Subject: [PATCH 009/205] Update playbook repository links in documentation Corrected the paths to local and remote playbook repositories for better accuracy and navigation. This ensures the links align with the updated documentation structure. --- site/docs/playbooks/playbooks.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/site/docs/playbooks/playbooks.md b/site/docs/playbooks/playbooks.md index 37f452038..b416abbc6 100644 --- a/site/docs/playbooks/playbooks.md +++ b/site/docs/playbooks/playbooks.md @@ -28,7 +28,7 @@ :::warning Using your own repositories While it is currently possible, we strongly advise creating your own repository for your custom playbooks instead of using `ssm-core` or `ssm-tools`. These custom repositories will be erased after each update of SSM. -It is better to create a [local](/docs/playbooks/local-playbooks) or [remote](/docs/playbooks/remote-playbooks) repository. +It is better to create a [local](/docs/playbooks-repositories/local-playbooks) or [remote](/docs/playbooks-repositories/remote-playbooks) repository. ::: ## Editing playbooks @@ -45,7 +45,7 @@ You must click on the save button (bottom right floating menu) ## Syncing playbooks (only for remote repositories) -When working with a [remote repository](/docs/playbooks/remote-playbooks), a *right-click* on the root node will offer you additional options, such as Commit & Syncing your changes, or force pulling from the repository +When working with a [remote repository](/docs/playbooks-repositories/remote-playbooks), a *right-click* on the root node will offer you additional options, such as Commit & Syncing your changes, or force pulling from the repository ![edit-file](/playbooks/remote-dropdown.gif) From de3eb431f0e04599653b8e46c45a3ef9950cb77d Mon Sep 17 00:00:00 2001 From: SquirrelDeveloper Date: Tue, 25 Feb 2025 13:15:36 +0000 Subject: [PATCH 010/205] Updated CHANGELOG.md --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f3d8d282a..de2d3a1ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,8 +4,15 @@ [Full Changelog](https://github.com/SquirrelCorporation/SquirrelServersManager/compare/v0.1.30...HEAD) +**Closed issues:** + +- \[CHORE\] Optional trigger to force device ip when installing agent 🧹 [\#119](https://github.com/SquirrelCorporation/SquirrelServersManager/issues/119) +- Fix code scanning alert - Database query built from user-controlled sources [\#118](https://github.com/SquirrelCorporation/SquirrelServersManager/issues/118) +- \[CHORE\] Use system information in agent for mem & cpu, drop node-os-utils, and dont take into account swap for used meme 🧹 [\#101](https://github.com/SquirrelCorporation/SquirrelServersManager/issues/101) + **Merged pull requests:** +- \[DOC\] Refactor playbooks documentation and improve update instructions [\#786](https://github.com/SquirrelCorporation/SquirrelServersManager/pull/786) ([SquirrelDeveloper](https://github.com/SquirrelDeveloper)) - \[CHORE\] Delete unused animation JSON file & bump libs [\#777](https://github.com/SquirrelCorporation/SquirrelServersManager/pull/777) ([SquirrelDeveloper](https://github.com/SquirrelDeveloper)) - Bump swiper from 11.2.2 to 11.2.4 in /site [\#756](https://github.com/SquirrelCorporation/SquirrelServersManager/pull/756) ([dependabot[bot]](https://github.com/apps/dependabot)) @@ -41,6 +48,7 @@ - Bump vuetify from 3.7.11 to 3.7.12 in /site [\#755](https://github.com/SquirrelCorporation/SquirrelServersManager/pull/755) ([dependabot[bot]](https://github.com/apps/dependabot)) - Bump node from 23.7.0-alpine to 23.8.0-alpine in /client [\#754](https://github.com/SquirrelCorporation/SquirrelServersManager/pull/754) ([dependabot[bot]](https://github.com/apps/dependabot)) - Bump node from 23.7.0-alpine to 23.8.0-alpine in /server [\#753](https://github.com/SquirrelCorporation/SquirrelServersManager/pull/753) ([dependabot[bot]](https://github.com/apps/dependabot)) +- \[DOC\] Refactor playbooks documentation and improve update instructions [\#786](https://github.com/SquirrelCorporation/SquirrelServersManager/pull/786) ([SquirrelDeveloper](https://github.com/SquirrelDeveloper)) - \[CHORE\] Delete unused animation JSON file & bump libs [\#777](https://github.com/SquirrelCorporation/SquirrelServersManager/pull/777) ([SquirrelDeveloper](https://github.com/SquirrelDeveloper)) ## [v0.1.29](https://github.com/SquirrelCorporation/SquirrelServersManager/tree/v0.1.29) (2025-02-18) @@ -574,6 +582,7 @@ - \[CHORE\] Refacto ExtraVars 🧹 [\#263](https://github.com/SquirrelCorporation/SquirrelServersManager/issues/263) - \[FEATURE\] Compatibility for docker environments with a TLS Configuration [\#218](https://github.com/SquirrelCorporation/SquirrelServersManager/issues/218) - \[FEAT\] Enhanced services: Create Network, Volumes & deploy single image 🔥 [\#179](https://github.com/SquirrelCorporation/SquirrelServersManager/issues/179) +- \[TEST\] Unit tests for Directory Tree util 🧪 [\#55](https://github.com/SquirrelCorporation/SquirrelServersManager/issues/55) - \[FEAT\] Create docker network & volume [\#287](https://github.com/SquirrelCorporation/SquirrelServersManager/pull/287) ([SquirrelDeveloper](https://github.com/SquirrelDeveloper)) - \[FEAT\] Add Ansible SmartFailure detection and handling [\#251](https://github.com/SquirrelCorporation/SquirrelServersManager/pull/251) ([SquirrelDeveloper](https://github.com/SquirrelDeveloper)) - \[FEAT\] Feat ansible configuration mgt [\#236](https://github.com/SquirrelCorporation/SquirrelServersManager/pull/236) ([SquirrelDeveloper](https://github.com/SquirrelDeveloper)) From 75b2f4df47edc7848a55080a7620c3fe7dc5c20b Mon Sep 17 00:00:00 2001 From: SquirrelDevelopper Date: Tue, 25 Feb 2025 14:15:42 +0100 Subject: [PATCH 011/205] Refactor components to use direct prop destructuring This update improves code readability and consistency by switching to direct prop destructuring in various React components. Additionally, some redundant utilities and variables were removed or updated for better maintainability and reduced complexity. --- client/package.json | 2 +- .../ContainerQuickActionDropDown.tsx | 14 ++- .../DeviceInformationModal.tsx | 4 +- .../DeviceManagementModal.tsx | 18 +-- .../DeviceQuickActionDropDown.tsx | 54 ++++----- .../OsSoftwareVersions.tsx | 8 +- .../CheckDeviceConnection.tsx | 18 +-- .../SSHConnectionFormElements.tsx | 13 ++- .../docker/DockerWatchCard.tsx | 5 +- .../proxmox/ProxmoxWatcherCronsCard.tsx | 2 +- client/src/components/LiveLogs/LiveLogs.tsx | 12 +- .../NewDeviceModal/NewDeviceModal.tsx | 31 ++++-- .../src/components/NoDevice/NoDeviceModal.tsx | 14 +-- .../PlaybookExecutionTerminalModal.tsx | 3 +- .../PlaybookSelection/ExtraVarView.tsx | 6 +- .../PlaybookSelectionModal.tsx | 28 ++--- client/src/components/Template/CardHeader.tsx | 14 +-- .../Admin/Inventory/InventoryColumns.tsx | 13 ++- .../components/ConfigurationModal.tsx | 16 +-- .../tabs/ContainersConfigurationTab.tsx | 3 +- .../components/tabs/DiagnosticTab.tsx | 6 +- .../tabs/SSHConfigurationFormTab.tsx | 21 ++-- .../containers/DockerConfigurationForm.tsx | 27 ++--- .../containers/ProxmoxConfigurationForm.tsx | 26 ++--- client/src/pages/Admin/Logs/index.tsx | 6 +- .../subcomponents/AnsibleConfiguration.tsx | 10 +- .../ContainerStacksGitRepositoryModal.tsx | 93 ++++++++-------- .../subcomponents/CustomVaultModal.tsx | 6 +- .../PlaybooksGitRepositoryModal.tsx | 105 +++++++++--------- .../PlaybooksLocalRepositoryModal.tsx | 12 +- .../subcomponents/RegistryModal.tsx | 44 ++++---- .../components/AutomationQuickAction.tsx | 13 ++- .../Drawer/AutomationActionInnerCard.tsx | 19 ++-- .../Drawer/AutomationEditionDrawer.tsx | 41 +++---- .../Drawer/PlaybookActionSubForm.tsx | 19 ++-- .../components/containers/ContainerAvatar.tsx | 2 +- .../containers/ContainerDetailsModal.tsx | 4 +- .../components/containers/ContainerMetas.tsx | 18 ++- .../containers/ContainerStatProgress.tsx | 32 +++--- .../containers/ContainerStatsDetail.tsx | 8 +- .../containers/EditContainerNameModal.tsx | 30 +++-- .../containers/UpdateAvailableTag.tsx | 8 +- .../container-details/ContainerTypeIcon.tsx | 4 +- .../DockerContainerDetails.tsx | 8 +- .../ProxmoxContainerDetails.tsx | 5 +- .../ContainerBackUpVolumeInProgressModal.tsx | 21 +++- .../ContainerBackUpVolumeModal.tsx | 5 +- .../sub-components/CreateNetworkModal.tsx | 82 +------------- .../sub-components/DeployCustomStackModal.tsx | 4 +- .../components/sub-components/DeployModal.tsx | 34 +++--- .../ProCardEnvironmentConfiguration.tsx | 12 +- .../ProCardExtrasConfiguration.tsx | 14 ++- .../ProCardGeneralConfiguration.tsx | 16 ++- .../ProCardLabelsConfiguration.tsx | 12 +- .../ProCardPortsConfiguration.tsx | 12 +- .../ProCardVolumesConfiguration.tsx | 12 +- .../Dashboard/ChartComponents/ChartCard.tsx | 13 ++- .../Dashboard/Components/AvailabilityCard.tsx | 3 +- .../Components/CombinedPowerCard.tsx | 3 +- .../Dashboard/Components/ContainersCard.tsx | 9 +- .../Components/SystemPerformanceCard.tsx | 1 - .../Devices/components/ListComponent.tsx | 34 +++--- .../CreateFileInRepositoryModalForm.tsx | 51 +++++---- .../Playbooks/components/CreateNewVarForm.tsx | 2 +- .../components/DirectoryTreeView.tsx | 33 +++--- .../components/FloatingButtonsBar.tsx | 71 ++++++------ .../Playbooks/components/GalaxyStoreModal.tsx | 36 ++---- .../components/NewFileDrawerForm.tsx | 27 +++-- .../components/PlaybookDropdownMenu.tsx | 70 ++++++------ client/src/services/rest/containers.ts | 4 +- client/src/services/rest/containersstats.ts | 32 ++++-- .../services/rest/playbooks-repositories.ts | 23 ---- client/src/services/rest/services.ts | 4 +- client/src/utils/ip.ts | 76 +++++++++++++ server/src/helpers/proxmox-api/CREDIT.md | 1 + shared-lib/src/types/api.ts | 13 --- 76 files changed, 806 insertions(+), 769 deletions(-) create mode 100644 server/src/helpers/proxmox-api/CREDIT.md diff --git a/client/package.json b/client/package.json index b80d9b893..8a3b71fda 100644 --- a/client/package.json +++ b/client/package.json @@ -55,7 +55,7 @@ "@umijs/plugin-antd-dayjs": "^0.3.0", "@umijs/route-utils": "^4.0.1", "@xterm/addon-fit": "^0.10.0", - "antd": "^5.24.1", + "antd": "^5.24.2", "buffer": "^6.0.3", "classnames": "^2.5.1", "dayjs": "^1.11.13", diff --git a/client/src/components/ContainerComponents/ContainerQuickAction/ContainerQuickActionDropDown.tsx b/client/src/components/ContainerComponents/ContainerQuickAction/ContainerQuickActionDropDown.tsx index 1fe838122..d522ee01f 100644 --- a/client/src/components/ContainerComponents/ContainerQuickAction/ContainerQuickActionDropDown.tsx +++ b/client/src/components/ContainerComponents/ContainerQuickAction/ContainerQuickActionDropDown.tsx @@ -13,9 +13,11 @@ export type ServiceQuickActionProps = { container: API.Container; }; -const ContainerQuickActionDropDown: React.FC = ( - props, -) => { +const ContainerQuickActionDropDown: React.FC = ({ + onDropDownClicked, + children, + container, +}) => { const onClick: MenuProps['onClick'] = ({ key }) => { const idx = parseInt(key); if (idx >= 0) { @@ -24,11 +26,11 @@ const ContainerQuickActionDropDown: React.FC = ( return; } } - void props.onDropDownClicked(idx); + void onDropDownClicked(idx); }; const items = ServiceQuickActionReference.filter((e) => - e.supportedBy.includes(props.container.displayType), + e.supportedBy.includes(container.displayType), ).map((e, index) => { if (e.type === ServiceQuickActionReferenceTypes.DIVIDER) return { type: 'divider' }; @@ -46,7 +48,7 @@ const ContainerQuickActionDropDown: React.FC = ( <> e.preventDefault()}> - {props.children ? props.children : } + {children ? children : } diff --git a/client/src/components/DeviceComponents/DeviceInformation/DeviceInformationModal.tsx b/client/src/components/DeviceComponents/DeviceInformation/DeviceInformationModal.tsx index d8e295b55..e1fa9828c 100644 --- a/client/src/components/DeviceComponents/DeviceInformation/DeviceInformationModal.tsx +++ b/client/src/components/DeviceComponents/DeviceInformation/DeviceInformationModal.tsx @@ -31,6 +31,8 @@ type DeviceModalProps = { device: API.DeviceItem; }; +const MODAL_WIDTH = 1000; + const DeviceInformationModal = React.forwardRef< DeviceInformationModalHandles, DeviceModalProps @@ -111,7 +113,7 @@ const DeviceInformationModal = React.forwardRef< open={visible} onCancel={() => setVisible(false)} style={{ padding: '32px 40px 48px' }} - width={1000} + width={MODAL_WIDTH} destroyOnClose okText={'Close'} cancelButtonProps={{ style: { display: 'none' } }} diff --git a/client/src/components/DeviceComponents/DeviceInformation/DeviceManagementModal.tsx b/client/src/components/DeviceComponents/DeviceInformation/DeviceManagementModal.tsx index 9976c6dca..fedf3055b 100644 --- a/client/src/components/DeviceComponents/DeviceInformation/DeviceManagementModal.tsx +++ b/client/src/components/DeviceComponents/DeviceInformation/DeviceManagementModal.tsx @@ -1,18 +1,19 @@ import { - PlayCircleOutlined, - SettingOutlined, - ToolOutlined, - SyncOutlined, - LockOutlined, CloudOutlined, + ContainerOutlined, DatabaseOutlined, - WarningOutlined, GlobalOutlined, + LockOutlined, + PlayCircleOutlined, + SettingOutlined, + SyncOutlined, + ToolOutlined, UserOutlined, - ContainerOutlined, + WarningOutlined, } from '@ant-design/icons'; -import { Modal, Tabs, TabsProps, Button, List, Avatar } from 'antd'; +import { Avatar, Button, List, Modal, Tabs, TabsProps } from 'antd'; import React, { useImperativeHandle, useState } from 'react'; +import { API } from 'ssm-shared-lib'; export interface DeviceManagementModalHandles { open: () => void; @@ -20,6 +21,7 @@ export interface DeviceManagementModalHandles { type DeviceManagementModalProps = { onRunPlaybook: (playbook: string) => void; + device: API.DeviceItem; }; const DeviceManagementModal = React.forwardRef< diff --git a/client/src/components/DeviceComponents/DeviceQuickAction/DeviceQuickActionDropDown.tsx b/client/src/components/DeviceComponents/DeviceQuickAction/DeviceQuickActionDropDown.tsx index 26d2b1418..520025d44 100644 --- a/client/src/components/DeviceComponents/DeviceQuickAction/DeviceQuickActionDropDown.tsx +++ b/client/src/components/DeviceComponents/DeviceQuickAction/DeviceQuickActionDropDown.tsx @@ -1,6 +1,3 @@ -import DeviceManagementModal, { - DeviceManagementModalHandles, -} from '@/components/DeviceComponents/DeviceInformation/DeviceManagementModal'; import DeviceInformationModal, { DeviceInformationModalHandles, } from '@/components/DeviceComponents/DeviceInformation/DeviceInformationModal'; @@ -28,7 +25,13 @@ export type QuickActionProps = { children?: ReactNode; }; -const DeviceQuickActionDropDown: React.FC = (props) => { +const DeviceQuickActionDropDown: React.FC = ({ + onDropDownClicked, + advancedMenu, + setTerminal, + target, + children, +}) => { const [playbookSelectionModalIsOpened, setPlaybookSelectionModalIsOpened] = React.useState(false); const [showConfirmation, setShowConfirmation] = React.useState({ @@ -39,8 +42,6 @@ const DeviceQuickActionDropDown: React.FC = (props) => { React.createRef(); const deviceInformationRef: RefObject = React.createRef(); - const deviceManagementRef: RefObject = - React.createRef(); const onClick: MenuProps['onClick'] = ({ key }) => { const idx = parseInt(key); if (idx >= 0) { @@ -51,7 +52,7 @@ const DeviceQuickActionDropDown: React.FC = (props) => { if (DeviceQuickActionReference[idx].action === Actions.CONNECT) { history.push({ - pathname: `/manage/devices/ssh/${props.target?.uuid}`, + pathname: `/manage/devices/ssh/${target?.uuid}`, }); return; } @@ -64,7 +65,7 @@ const DeviceQuickActionDropDown: React.FC = (props) => { return; } if (DeviceQuickActionReference[idx].action === Actions.MANAGEMENT) { - deviceManagementRef?.current?.open(); + //deviceManagementRef?.current?.open(); return; } if (DeviceQuickActionReference[idx].type === Types.PLAYBOOK) { @@ -72,19 +73,19 @@ const DeviceQuickActionDropDown: React.FC = (props) => { setShowConfirmation({ visible: true, onConfirm: () => { - props.setTerminal({ + setTerminal({ isOpen: true, quickRef: DeviceQuickActionReference[idx].playbookQuickRef, - target: props.target ? [props.target] : undefined, + target: target ? [target] : undefined, }); }, }); return; } - props.setTerminal({ + setTerminal({ isOpen: true, quickRef: DeviceQuickActionReference[idx].playbookQuickRef, - target: props.target ? [props.target] : undefined, + target: target ? [target] : undefined, }); return; } @@ -92,15 +93,15 @@ const DeviceQuickActionDropDown: React.FC = (props) => { setPlaybookSelectionModalIsOpened(true); return; } - props.onDropDownClicked(idx); + onDropDownClicked(idx); } }; const items = DeviceQuickActionReference.map((e, index) => { - if (!props.target && e.action === Actions.CONNECT) { + if (!target && e.action === Actions.CONNECT) { return; } - if (e.onAdvancedMenu && props.advancedMenu === true) { + if (e.onAdvancedMenu && advancedMenu === true) { if (e.type === Types.DIVIDER) return { type: 'divider' }; return { icon: e.icon, @@ -126,14 +127,14 @@ const DeviceQuickActionDropDown: React.FC = (props) => { const onSelectPlaybook = ( playbook: string, playbookName: string, - target: API.DeviceItem[] | undefined, + _target: API.DeviceItem[] | undefined, extraVars?: API.ExtraVars, mode?: SsmAnsible.ExecutionMode, ) => { - props.setTerminal({ + setTerminal({ isOpen: true, command: playbook, - target: target, + target: _target, extraVars: extraVars, playbookName: playbookName, mode: mode, @@ -145,22 +146,15 @@ const DeviceQuickActionDropDown: React.FC = (props) => { - {props.target && ( + {target && ( <> - - + )} - + = (props) => { /> e.preventDefault()}> - {props.children ? props.children : } + {children ? children : } diff --git a/client/src/components/DeviceComponents/OSSoftwaresVersions/OsSoftwareVersions.tsx b/client/src/components/DeviceComponents/OSSoftwaresVersions/OsSoftwareVersions.tsx index ee78c2c76..7ff951301 100644 --- a/client/src/components/DeviceComponents/OSSoftwaresVersions/OsSoftwareVersions.tsx +++ b/client/src/components/DeviceComponents/OSSoftwaresVersions/OsSoftwareVersions.tsx @@ -7,7 +7,7 @@ type OsSoftwareVersionsType = { versions: Systeminformation.VersionData; }; -const OsSoftwareVersions: React.FC = (props) => { +const OsSoftwareVersions: React.FC = ({ versions }) => { interface DataType { key: React.Key; name: string; @@ -15,14 +15,14 @@ const OsSoftwareVersions: React.FC = (props) => { } const data: DataType[] = []; - const keys = Object.keys(props.versions); + const keys = Object.keys(versions); keys.forEach((key) => { - if (props.versions[key as keyof typeof props.versions]) { + if (versions[key as keyof typeof versions]) { data.push({ key: key, name: key, - version: props.versions[key as keyof typeof props.versions], + version: versions[key as keyof typeof versions], }); } }); diff --git a/client/src/components/DeviceConfiguration/CheckDeviceConnection.tsx b/client/src/components/DeviceConfiguration/CheckDeviceConnection.tsx index b8a2c7d1b..bbc6101c8 100644 --- a/client/src/components/DeviceConfiguration/CheckDeviceConnection.tsx +++ b/client/src/components/DeviceConfiguration/CheckDeviceConnection.tsx @@ -36,14 +36,14 @@ const animationVariants = { visible: { opacity: 1, y: 0 }, }; -const CheckDeviceConnection: React.FC = (props) => { - const { - execId, - dockerConnRes, - dockerConnErrorMessage, - rsiConnErrorMessage, - rsiConnRes, - } = props; +const CheckDeviceConnection: React.FC = ({ + execId, + dockerConnRes, + dockerConnErrorMessage, + rsiConnErrorMessage, + rsiConnRes, + installMethod, +}) => { const timerIdRef = useRef(); const [isPollingEnabled, setIsPollingEnabled] = useState(false); const [playbookStatus, setPlaybookStatus] = useState('running...'); @@ -221,7 +221,7 @@ const CheckDeviceConnection: React.FC = (props) => { ), }, - ...(props.installMethod === SsmAgent.InstallMethods.LESS + ...(installMethod === SsmAgent.InstallMethods.LESS ? [ { title: 'Remote System Information Connection test', diff --git a/client/src/components/DeviceConfiguration/SSHConnectionFormElements.tsx b/client/src/components/DeviceConfiguration/SSHConnectionFormElements.tsx index af0b3790c..734af5249 100644 --- a/client/src/components/DeviceConfiguration/SSHConnectionFormElements.tsx +++ b/client/src/components/DeviceConfiguration/SSHConnectionFormElements.tsx @@ -10,17 +10,18 @@ export type SSHConnectionFormElementsProps = { formRef: React.MutableRefObject; }; -const SSHConnectionFormElements: React.FC = ( - props, -) => { +const SSHConnectionFormElements: React.FC = ({ + deviceIp, + formRef, +}) => { const [showAdvanced, setShowAdvanced] = React.useState(false); const toggleShowAdvanced = () => setShowAdvanced(!showAdvanced); return ( <> - - - + + + { +const DockerWatchCard: React.FC = ({ + device, + showAdvanced, +}) => { const [dockerWatcher, setDockerWatcher] = useState( device.configuration?.containers?.docker?.watchContainers ?? true, ); diff --git a/client/src/components/DeviceConfiguration/proxmox/ProxmoxWatcherCronsCard.tsx b/client/src/components/DeviceConfiguration/proxmox/ProxmoxWatcherCronsCard.tsx index 459acdf5f..6c73fbeea 100644 --- a/client/src/components/DeviceConfiguration/proxmox/ProxmoxWatcherCronsCard.tsx +++ b/client/src/components/DeviceConfiguration/proxmox/ProxmoxWatcherCronsCard.tsx @@ -20,7 +20,7 @@ const ProxmoxWatcherCronsCard: React.FC = ({ const handleOnChangeEventsWatcher = async () => { if (device.uuid) { await updateDeviceProxmoxConfiguration(device.uuid, { - watcherCron, + watchContainersCron: watcherCron, }).then(() => { message.success({ content: 'Setting updated' }); }); diff --git a/client/src/components/LiveLogs/LiveLogs.tsx b/client/src/components/LiveLogs/LiveLogs.tsx index 245696da8..759e5d473 100644 --- a/client/src/components/LiveLogs/LiveLogs.tsx +++ b/client/src/components/LiveLogs/LiveLogs.tsx @@ -1,10 +1,10 @@ -import React, { useImperativeHandle, useEffect, useRef } from 'react'; -import { message } from 'antd'; -import { useParams } from '@@/exports'; import TerminalCore, { TerminalCoreHandles, } from '@/components/Terminal/TerminalCore'; import { socket } from '@/socket'; +import { useParams } from '@@/exports'; +import { message } from 'antd'; +import React, { useEffect, useImperativeHandle, useRef } from 'react'; import { SsmEvents } from 'ssm-shared-lib'; export interface LiveLogsHandles { @@ -19,12 +19,16 @@ export interface LiveLogsProps { const ROWS = Math.ceil(document.body.clientHeight / 16); const COLS = Math.ceil(document.body.clientWidth / 8); +interface LogData { + data: string; +} + const LiveLogs = React.forwardRef( ({ from }, ref) => { const { id } = useParams(); const terminalRef = useRef(null); - const onNewLogs = (value: any) => { + const onNewLogs = (value: LogData) => { if (value) { terminalRef.current?.onDataIn(value.data); } diff --git a/client/src/components/NewDeviceModal/NewDeviceModal.tsx b/client/src/components/NewDeviceModal/NewDeviceModal.tsx index c670843f3..64151cc87 100644 --- a/client/src/components/NewDeviceModal/NewDeviceModal.tsx +++ b/client/src/components/NewDeviceModal/NewDeviceModal.tsx @@ -20,7 +20,7 @@ import { } from '@ant-design/pro-components'; import { Alert, Button, Col, Grid, Modal, Row, Tag, Typography } from 'antd'; import { motion } from 'framer-motion'; -import React, { useRef, useState } from 'react'; +import React, { Dispatch, SetStateAction, useRef, useState } from 'react'; import { API, SsmAgent, SsmAnsible } from 'ssm-shared-lib'; import AnimationPlayer from './AnimationPlayer'; import StepFormCard from './StepFormCard'; @@ -28,20 +28,31 @@ import SummaryCard from './SummaryCard'; export type NewDeviceModalProps = { isModalOpen: boolean; - setIsModalOpen: any; + setIsModalOpen: Dispatch>; onAddNewDevice: ( target: API.DeviceItem, installMethod: SsmAgent.InstallMethods, ) => void; }; + const { useBreakpoint } = Grid; -const NewDeviceModal: React.FC = (props) => { +const MODAL_MIN_HEIGHT = 600; + +const MODAL_WIDTH = 1000; + +const NewDeviceModal: React.FC = ({ + isModalOpen, + setIsModalOpen, + onAddNewDevice, +}) => { const formRef = useRef(); const sshFormRef = useRef(); const installMethodFormRef = useRef(); const [loading, setLoading] = useState(false); - const [sshConnection, setSshConnection] = useState({}); + const [sshConnection, setSshConnection] = useState>( + {}, + ); const [execId, setExecId] = useState(); const [dockerConnectionStatus, setDockerConnectionStatus] = useState< string | undefined @@ -60,7 +71,7 @@ const NewDeviceModal: React.FC = (props) => { const screens = useBreakpoint(); const handleCancel = () => { - props.setIsModalOpen(false); + setIsModalOpen(false); }; const handleFinish = async (values: any) => { @@ -86,8 +97,8 @@ const NewDeviceModal: React.FC = (props) => { values.installMethod, ); formRef.current?.resetFields(); - props.setIsModalOpen(false); - props.onAddNewDevice(res.data?.device, values.installMethod); + setIsModalOpen(false); + onAddNewDevice(res.data?.device, values.installMethod); } finally { setLoading(false); } @@ -174,8 +185,6 @@ const NewDeviceModal: React.FC = (props) => { visible: { opacity: 1, x: 0 }, }; - const MODAL_MIN_HEIGHT = 600; - return ( = (props) => {   Add a new device } - open={props.isModalOpen} + open={isModalOpen} onCancel={handleCancel} - width={1000} + width={MODAL_WIDTH} footer={(_, { CancelBtn }) => } > { const [addNewDeviceModalIsOpen, setAddNewDeviceModalIsOpen] = useState(false); @@ -59,7 +53,7 @@ const NoDeviceModal = () => { onAddNewDevice={onAddNewDevice} /> >; }; +const MODAL_WIDTH = 1000; const modalStyles = { body: { height: '600px', @@ -222,7 +223,7 @@ const PlaybookExecutionTerminalModal = React.forwardRef< onOk={handleOk} onCancel={handleCancel} styles={modalStyles} - width={1000} + width={MODAL_WIDTH} footer={() => ( <> , + ]} + // Other props + /> + + + + ); +}; + +export default DevicesPage; +``` + +## Testing Architecture + +The testing architecture provides comprehensive test coverage across different levels: +### Testing Levels + +1. **Unit Tests**: Test individual components and functions in isolation +2. **Integration Tests**: Test interactions between components and services +3. **End-to-End Tests**: Test complete user flows and scenarios + +### Testing Configuration + +```typescript +// vitest.config.ts +import { defineConfig } from 'vitest/config'; +import react from '@vitejs/plugin-react'; + +export default defineConfig({ + plugins: [react()], + test: { + environment: 'jsdom', + globals: true, + setupFiles: ['./tests/setupTests.ts'], + coverage: { + provider: 'c8', + reporter: ['text', 'json', 'html'], + include: ['src/**/*.{ts,tsx}'], + exclude: [ + 'src/app.{ts,tsx}', + 'src/global.{ts,tsx}', + 'src/typings.d.ts', + 'src/**/*.d.ts', + ], + thresholds: { + branches: 70, + functions: 70, + lines: 70, + statements: 70, + }, + }, + }, + resolve: { + alias: { + '@': '/src', + }, + }, +}); +``` + +### Test Setup + +```typescript +// tests/setupTests.ts +import '@testing-library/jest-dom'; +import { vi } from 'vitest'; +import { configure } from '@testing-library/react'; + +// Configure testing library +configure({ testIdAttribute: 'data-testid' }); + +// Mock UmiJS Max's useModel hook +vi.mock('@umijs/max', async (importOriginal) => { + const originalModule = await importOriginal(); + return { + ...originalModule, + useModel: vi.fn().mockImplementation((namespace) => { + if (namespace === '@@initialState') { + return { + initialState: { + currentUser: { + name: 'Test User', + permissions: ['admin'], + }, + }, + }; + } + return {}; + }), + }; +}); + +// Mock antd components +vi.mock('antd', async (importOriginal) => { + const originalModule = await importOriginal(); + return { + ...originalModule, + message: { + ...originalModule.message, + success: vi.fn(), + error: vi.fn(), + warning: vi.fn(), + }, + notification: { + ...originalModule.notification, + open: vi.fn(), + }, + }; +}); + +// Mock matchMedia for tests +global.matchMedia = global.matchMedia || function () { + return { + matches: false, + addListener: vi.fn(), + removeListener: vi.fn(), + }; +}; +``` + +### Test Utilities + +```typescript +// tests/utils/test-utils.tsx +import React, { ReactElement } from 'react'; +import { render, RenderOptions } from '@testing-library/react'; +import { MemoryRouter } from 'react-router-dom'; +import { PluginProvider } from '@/plugins/contexts/plugin-context'; + +interface ExtendedRenderOptions extends Omit { + route?: string; +} + +export function renderWithProviders( + ui: ReactElement, + { + route = '/', + ...renderOptions + }: ExtendedRenderOptions = {} +) { + function Wrapper({ children }: { children: React.ReactNode }) { + return ( + + {children} + + ); + } + + return { ...render(ui, { wrapper: Wrapper, ...renderOptions }) }; +} +``` + +### API Mocking + +```typescript +// tests/mocks/handlers.ts +import { rest } from 'msw'; + +export const handlers = [ + rest.get('/api/devices', (req, res, ctx) => { + return res( + ctx.status(200), + ctx.json({ + success: true, + data: [ + { id: '1', name: 'Device 1', ip: '192.168.1.1', status: 'online' }, + { id: '2', name: 'Device 2', ip: '192.168.1.2', status: 'offline' }, + ], + }) + ); + }), + + rest.get('/api/devices/:id', (req, res, ctx) => { + const { id } = req.params; + return res( + ctx.status(200), + ctx.json({ + success: true, + data: { id, name: `Device ${id}`, ip: '192.168.1.1', status: 'online' }, + }) + ); + }), + + // Other API mocks +]; + +// tests/mocks/server.ts +import { setupServer } from 'msw/node'; +import { handlers } from './handlers'; + +// Setup requests interception using the given handlers +export const server = setupServer(...handlers); +``` + +### Component Testing Example + +```typescript +// src/components/domain/DeviceCard/index.test.tsx +import React from 'react'; +import { render, fireEvent } from '@testing-library/react'; +import DeviceCard from './index'; + +describe('DeviceCard', () => { + const mockDevice = { + id: '1', + name: 'Test Device', + ip: '192.168.1.1', + status: 'online', + }; + + it('renders device information correctly', () => { + const { getByText } = render(); + + expect(getByText('Test Device')).toBeInTheDocument(); + expect(getByText('192.168.1.1')).toBeInTheDocument(); + expect(getByText('Online')).toBeInTheDocument(); + }); + + it('calls onClick when clicked', () => { + const handleClick = vi.fn(); + const { container } = render( + + ); + + fireEvent.click(container.querySelector('.ant-card') as HTMLElement); + expect(handleClick).toHaveBeenCalledWith(mockDevice); + }); +}); +``` + +### Integration Testing Example + +```typescript +// src/pages/Devices/index.test.tsx +import React from 'react'; +import { screen, waitFor, fireEvent } from '@testing-library/react'; +import { renderWithProviders } from '@/tests/utils/test-utils'; +import { server } from '@/tests/mocks/server'; +import DevicesPage from './index'; +import { message } from 'antd'; + +// Establish API mocking before all tests +beforeAll(() => server.listen()); +// Reset any request handlers that we may add during the tests +afterEach(() => server.resetHandlers()); +// Clean up after the tests are finished +afterAll(() => server.close()); + +describe('DevicesPage', () => { + it('renders the devices list', async () => { + renderWithProviders(); + + // Wait for the devices to load + await waitFor(() => { + expect(screen.getByText('Device 1')).toBeInTheDocument(); + expect(screen.getByText('Device 2')).toBeInTheDocument(); + }); + }); + + it('can create a new device', async () => { + renderWithProviders(); + + // Click the add button + fireEvent.click(screen.getByText('Add Device')); + + // Fill the form + fireEvent.change(screen.getByLabelText('Device Name'), { + target: { value: 'New Device' }, + }); + fireEvent.change(screen.getByLabelText('IP Address'), { + target: { value: '192.168.1.3' }, + }); + + // Submit the form + fireEvent.click(screen.getByText('Submit')); + + // Check that the success message was shown + await waitFor(() => { + expect(message.success).toHaveBeenCalledWith('Device created successfully'); + }); + }); +}); +``` + +## Conclusion + +This architecture document outlines the target architecture for the Squirrel Servers Manager client application. The architecture is designed to provide a solid foundation for building a scalable, maintainable, and extensible application. + +### Key Benefits + +1. **Improved Developer Experience** + - Clear, consistent project structure + - Better separation of concerns + - Standardized patterns for common tasks + - Leveraging UmiJS Max's built-in capabilities + +2. **Enhanced Maintainability** + - Modular, decoupled components + - Comprehensive testing + - Consistent coding patterns + - Reduced boilerplate code by using UmiJS Max features + +3. **Better Performance** + - Optimized state management with UmiJS models and dva + - Efficient data fetching with built-in useRequest and caching + - Code splitting for faster loading + +4. **Scalability** + - Feature-based organization for easier scaling + - Robust plugin system for extensibility + - Clear boundaries between application domains + - Standardized approach to adding new features + +5. **Future-Proofing** + - Modern architecture based on industry best practices + - Strong typing throughout the application + - Flexible structure that can adapt to changing requirements + - Alignment with UmiJS Max's ecosystem and updates + +By following this architecture, the Squirrel Servers Manager client will be well-positioned for future growth and evolution, while providing a solid foundation for current development efforts. \ No newline at end of file diff --git a/client/documentation/CLIENT_IMPLEMENTATION_PLAN.md b/client/documentation/CLIENT_IMPLEMENTATION_PLAN.md new file mode 100644 index 000000000..9aa612b3d --- /dev/null +++ b/client/documentation/CLIENT_IMPLEMENTATION_PLAN.md @@ -0,0 +1,482 @@ +# Squirrel Servers Manager Client Implementation Plan + +This document outlines the detailed implementation plan for refactoring the Squirrel Servers Manager client architecture based on UmiJS Max and Ant Design Pro best practices. + +## Phase 1: Infrastructure Setup (2 weeks) + +### Week 1: Project Structure and Configuration +- [x] **Day 1-2: Project Structure Setup** (Already in place) + - [x] Create the new directory structure according to Ant Design Pro v5 conventions + - [x] Set up `config` directory with configuration files (Already has config/config.ts, config/defaultSettings.ts, config/routes.ts) + - [x] Set up `src` directory with proper subdirectories (Already has src/components, src/pages, src/services, etc.) + - [x] Set up `mock` directory for development data (Already in place) + - [ ] Set up `tests` directory for test files (Needs implementation) + - [x] Set up linting and formatting rules (Already in place) + - [x] Configure ESLint with Ant Design Pro recommended rules (Already has .eslintignore and ESLint config) + - [x] Configure Prettier for code formatting (Already in package.json) + - [x] Set up pre-commit hooks with husky (Already has lint-staged in package.json) + - [x] Configure TypeScript settings (Already in place) + - [x] Set up `tsconfig.json` with proper paths and aliases (Already in place) + - [x] Configure strict type checking (Already in place) + +- [x] **Day 3-4: UmiJS Max Configuration** (Already in place) + - [x] Configure UmiJS Max settings in config files + - [x] Set up `config/config.ts` with proper plugins (Already configured with UmiJS Max plugins) + - [x] Configure `config/routes.ts` for application routing (Already has comprehensive routes configuration) + - [x] Set up `config/defaultSettings.ts` for Pro components (Already configured with theme settings) + - [x] Configure `config/proxy.ts` for development API proxying (Already in place) + - [x] Set up build and development scripts + - [x] Configure npm scripts in `package.json` (Already has build, dev, analyze scripts) + - [x] Set up environment variables for different environments (Already using REACT_APP_ENV) + - [x] Configure routing system + - [x] Define route structure with access control (Already has access control in routes) + - [x] Set up layouts for different route groups (Already configured in routes.ts) + +- [x] **Day 5: Request Module Setup** (Already in place) + - [x] Implement request runtime configuration in app.ts + - [x] Set up error handling with proper error types (Already in requestErrorConfig.ts) + - [x] Configure response structure (Already defined in requestErrorConfig.ts) + - [x] Set up timeout and other request settings (Already configured) + - [x] Set up error handling for API requests + - [x] Implement `errorThrower` for business errors (Already in requestErrorConfig.ts) + - [x] Implement `errorHandler` for HTTP errors (Already in requestErrorConfig.ts) + - [x] Set up notification system for errors (Already using antd message/notification) + - [x] Configure request interceptors + - [x] Set up authentication token handling (Already implemented) + - [x] Configure request/response transformations (Already in place) + +### Week 2: State Management and Plugin System +- [x] **Day 1-2: State Management Setup** (Partially in place) + - [x] Configure UmiJS model system + - [x] Set up global models in `src/models` (Already has models for global state) + - [x] Implement `initialState` provider in `app.ts` (Already implemented) + - [ ] Create model hooks for data access (Needs enhancement) + - [x] Set up dva if needed for complex state management + - [x] Configure dva models for complex features (Already using dva for complex state) + - [x] Set up effects and reducers (Already implemented) + - [ ] Create base model templates + - [ ] Create reusable model patterns (Needs implementation) + - [ ] Set up model type definitions (Needs enhancement) + +- [x] **Day 3-5: Plugin System Architecture** (Already in place) + - [x] Implement plugin registry + - [x] Create `src/plugins/registry/pluginRegistry.ts` (Already implemented) + - [x] Implement plugin registration mechanism (Already implemented) + - [x] Set up slot management system (Already implemented) + - [ ] Implement event system for plugin communication (Needs enhancement) + - [x] Create plugin context provider + - [x] Create `src/plugins/contexts/plugin-context.tsx` (Already implemented) + - [x] Implement React Context for plugins (Already implemented) + - [x] Set up plugin loading and initialization (Already implemented) + - [x] Implement permission checking for plugins (Already implemented) + - [x] Define plugin types and interfaces + - [x] Create `src/plugins/types/index.ts` (Already implemented) + - [x] Define plugin metadata interface (Already implemented) + - [x] Define slot system types (Already implemented) + - [ ] Create plugin lifecycle hooks (Needs enhancement) + - [x] Set up plugin loading mechanism + - [x] Implement dynamic plugin loading (Already implemented) + - [ ] Create plugin dependency resolution (Needs enhancement) + - [x] Set up plugin error handling (Already implemented) + - [ ] Implement plugin hot-reloading for development (Needs implementation) + +## Phase 2: Feature Migration (4-6 weeks) + +### Week 1-2: Core Features Migration +- [ ] **Dashboard Feature** + - [ ] Create dashboard model + - [ ] Define dashboard data structure + - [ ] Implement dashboard state management + - [ ] Create dashboard data fetching hooks + - [ ] Implement dashboard API services + - [ ] Create dashboard API endpoints + - [ ] Implement data transformation + - [ ] Set up error handling + - [ ] Migrate dashboard components + - [ ] Create dashboard layout + - [ ] Implement dashboard widgets + - [ ] Create dashboard cards and charts + - [ ] Implement responsive design + - [ ] Write tests for dashboard feature + - [ ] Create unit tests for components + - [ ] Implement integration tests + - [ ] Set up snapshot testing + +- [ ] **User Authentication** + - [ ] Create authentication model + - [ ] Implement user state management + - [ ] Create login/logout logic + - [ ] Set up token management + - [ ] Implement permission checking + - [ ] Implement authentication API services + - [ ] Create login/logout endpoints + - [ ] Implement token refresh mechanism + - [ ] Set up secure storage for credentials + - [ ] Migrate login/logout components + - [ ] Create login form + - [ ] Implement form validation + - [ ] Create user profile components + - [ ] Implement password reset flow + - [ ] Write tests for authentication + - [ ] Test login/logout functionality + - [ ] Test token management + - [ ] Test permission checking + +### Week 3-4: Device Management Migration +- [ ] **Device Listing and Details** + - [ ] Create device model + - [ ] Define device data structure and types + - [ ] Implement device state management + - [ ] Create device selection and filtering logic + - [ ] Set up device data caching + - [ ] Implement device API services + - [ ] Create device CRUD endpoints + - [ ] Implement device search and filtering + - [ ] Set up pagination for device lists + - [ ] Create device status monitoring endpoints + - [ ] Migrate device list and detail components + - [ ] Create device list with ProTable + - [ ] Implement device detail page + - [ ] Create device cards and status indicators + - [ ] Implement device filtering and search UI + - [ ] Write tests for device management + - [ ] Test device CRUD operations + - [ ] Test device filtering and search + - [ ] Test device status monitoring + +- [ ] **Device Operations** + - [ ] Implement device operations API services + - [ ] Create device control endpoints + - [ ] Implement device monitoring endpoints + - [ ] Set up device logs and history endpoints + - [ ] Migrate device operation components + - [ ] Create device control panels + - [ ] Implement device monitoring dashboards + - [ ] Create device logs and history views + - [ ] Implement device operation modals + - [ ] Write tests for device operations + - [ ] Test device control operations + - [ ] Test device monitoring components + - [ ] Test device logs and history views + +### Week 5-6: Container and Playbook Features +- [ ] **Container Management** + - [ ] Create container model + - [ ] Define container data structure and types + - [ ] Implement container state management + - [ ] Create container filtering and grouping logic + - [ ] Implement container API services + - [ ] Create container CRUD endpoints + - [ ] Implement container registry integration + - [ ] Set up container monitoring endpoints + - [ ] Create container deployment endpoints + - [ ] Migrate container management components + - [ ] Create container list with ProTable + - [ ] Implement container detail page + - [ ] Create container deployment forms + - [ ] Implement container monitoring UI + - [ ] Write tests for container management + - [ ] Test container CRUD operations + - [ ] Test container registry integration + - [ ] Test container deployment + - [ ] Test container monitoring + +- [ ] **Playbook Management** + - [ ] Create playbook model + - [ ] Define playbook data structure and types + - [ ] Implement playbook state management + - [ ] Create playbook execution logic + - [ ] Implement playbook API services + - [ ] Create playbook CRUD endpoints + - [ ] Implement playbook execution endpoints + - [ ] Set up playbook history and logs endpoints + - [ ] Migrate playbook components + - [ ] Create playbook editor + - [ ] Implement playbook execution UI + - [ ] Create playbook history and logs views + - [ ] Implement playbook templates + - [ ] Write tests for playbook management + - [ ] Test playbook CRUD operations + - [ ] Test playbook execution + - [ ] Test playbook history and logs + - [ ] Test playbook templates + +## Phase 3: Component Library Development (3-4 weeks) + +### Week 1: Basic Components +- [ ] **Design System Setup** + - [ ] Define design tokens (colors, spacing, typography) + - [ ] Create color palette with primary, secondary, and accent colors + - [ ] Define spacing scale and grid system + - [ ] Set up typography with font families, sizes, and weights + - [ ] Define elevation and shadow system + - [ ] Create theme configuration + - [ ] Set up Ant Design theme customization + - [ ] Create dark mode theme + - [ ] Define responsive breakpoints + - [ ] Create theme switching mechanism + - [ ] Set up styled-components integration + - [ ] Configure styled-components with Ant Design + - [ ] Create global style system + - [ ] Set up theme provider + +- [ ] **Basic UI Components** + - [ ] Implement Button component + - [ ] Create different button variants (primary, secondary, text) + - [ ] Implement button sizes and states + - [ ] Add icon support + - [ ] Create button groups + - [ ] Implement Input component + - [ ] Create different input types + - [ ] Implement input validation + - [ ] Add prefix and suffix support + - [ ] Create input groups + - [ ] Implement Card component + - [ ] Create different card variants + - [ ] Implement card headers and footers + - [ ] Add loading states + - [ ] Create expandable cards + - [ ] Write tests for basic components + - [ ] Create unit tests for each component + - [ ] Test component variants and states + - [ ] Create snapshot tests + +### Week 2: Form Components +- [ ] **Form Components** + - [ ] Implement Form component + - [ ] Create form layouts (horizontal, vertical, inline) + - [ ] Implement form validation + - [ ] Add form submission handling + - [ ] Create form sections and groups + - [ ] Implement Select component + - [ ] Create single and multiple select + - [ ] Implement search and filtering + - [ ] Add custom option rendering + - [ ] Create cascading selects + - [ ] Implement Checkbox and Radio components + - [ ] Create checkbox and radio groups + - [ ] Implement indeterminate state + - [ ] Add custom rendering + - [ ] Create toggle switches + - [ ] Implement Date and Time components + - [ ] Create date picker + - [ ] Implement time picker + - [ ] Add range selection + - [ ] Create calendar component + - [ ] Write tests for form components + - [ ] Test form validation + - [ ] Test form submission + - [ ] Test component interactions + +### Week 3: Layout and Navigation Components +- [ ] **Layout Components** + - [ ] Implement Header component + - [ ] Create fixed and responsive headers + - [ ] Implement header navigation + - [ ] Add user profile section + - [ ] Create notification area + - [ ] Implement Sidebar component + - [ ] Create collapsible sidebar + - [ ] Implement nested menu items + - [ ] Add sidebar footer + - [ ] Create mini variant + - [ ] Implement Footer component + - [ ] Create standard and sticky footers + - [ ] Implement footer sections + - [ ] Add responsive behavior + - [ ] Implement Page Layout components + - [ ] Create different page layouts + - [ ] Implement responsive behavior + - [ ] Add page transitions + - [ ] Write tests for layout components + - [ ] Test responsive behavior + - [ ] Test navigation functionality + - [ ] Test layout combinations + +- [ ] **Navigation Components** + - [ ] Implement Menu component + - [ ] Create horizontal and vertical menus + - [ ] Implement dropdown menus + - [ ] Add icon support + - [ ] Create mega menus + - [ ] Implement Tabs component + - [ ] Create different tab styles + - [ ] Implement tab panels + - [ ] Add tab animations + - [ ] Create scrollable tabs + - [ ] Implement Breadcrumb component + - [ ] Create auto-generated breadcrumbs + - [ ] Implement custom separators + - [ ] Add dropdown support + - [ ] Create responsive breadcrumbs + - [ ] Write tests for navigation components + - [ ] Test navigation interactions + - [ ] Test keyboard accessibility + - [ ] Test responsive behavior + +### Week 4: Domain-Specific Components +- [ ] **Device Components** + - [ ] Implement DeviceCard component + - [ ] Create different card layouts + - [ ] Implement status indicators + - [ ] Add action buttons + - [ ] Create expandable details + - [ ] Implement DeviceStatusBadge component + - [ ] Create different status types + - [ ] Implement animated statuses + - [ ] Add tooltips + - [ ] Create status history + - [ ] Implement DeviceMetrics component + - [ ] Create metric cards + - [ ] Implement metric charts + - [ ] Add real-time updates + - [ ] Create metric alerts + - [ ] Write tests for device components + - [ ] Test component rendering + - [ ] Test status changes + - [ ] Test interactions + +- [ ] **Container Components** + - [ ] Implement ContainerList component + - [ ] Create list with filtering + - [ ] Implement grouping + - [ ] Add search functionality + - [ ] Create list actions + - [ ] Implement ContainerStatusBadge component + - [ ] Create different status types + - [ ] Implement status transitions + - [ ] Add detailed status information + - [ ] Implement ContainerMetrics component + - [ ] Create resource usage charts + - [ ] Implement logs viewer + - [ ] Add performance metrics + - [ ] Write tests for container components + - [ ] Test list filtering and grouping + - [ ] Test status changes + - [ ] Test metric calculations + +- [ ] **Documentation** + - [ ] Set up Storybook for component documentation + - [ ] Configure Storybook with Ant Design + - [ ] Set up theme switching + - [ ] Create documentation template + - [ ] Add code examples + - [ ] Document all components with examples and usage guidelines + - [ ] Create component API documentation + - [ ] Add usage examples + - [ ] Document accessibility features + - [ ] Create interactive examples + +## Phase 4: Testing and Optimization (2-3 weeks) + +### Week 1: Testing Infrastructure +- [ ] **Unit Testing Setup** + - [ ] Configure Vitest for unit testing + - [ ] Set up Jest compatibility mode + - [ ] Configure test environment + - [ ] Set up test file patterns + - [ ] Configure code coverage settings + - [ ] Set up test utilities and mocks + - [ ] Create test rendering utilities + - [ ] Set up MSW for API mocking + - [ ] Create common test fixtures + - [ ] Implement mock providers + - [ ] Implement CI pipeline for tests + - [ ] Configure GitHub Actions workflow + - [ ] Set up test reporting + - [ ] Configure test caching + - [ ] Implement test parallelization + +- [ ] **Integration Testing** + - [ ] Set up integration test environment + - [ ] Configure component integration tests + - [ ] Set up API integration tests + - [ ] Create test database setup + - [ ] Create integration tests for key user flows + - [ ] Test authentication flow + - [ ] Test device management flow + - [ ] Test container management flow + - [ ] Test playbook execution flow + - [ ] Configure test coverage reporting + - [ ] Set up coverage thresholds + - [ ] Create coverage reports + - [ ] Implement coverage badges + +### Week 2: E2E Testing and Performance +- [ ] **E2E Testing** + - [ ] Set up Cypress for E2E testing + - [ ] Configure Cypress environment + - [ ] Set up test fixtures and commands + - [ ] Create page object models + - [ ] Configure screenshot and video recording + - [ ] Create E2E tests for critical user journeys + - [ ] Test user login and navigation + - [ ] Test device creation and management + - [ ] Test container deployment + - [ ] Test playbook creation and execution + - [ ] Configure E2E tests in CI pipeline + - [ ] Set up Cypress GitHub Action + - [ ] Configure parallel test execution + - [ ] Set up test retries + - [ ] Implement test result reporting + +- [ ] **Performance Optimization** + - [ ] Analyze and optimize bundle size + - [ ] Set up bundle analysis + - [ ] Optimize dependencies + - [ ] Implement tree shaking + - [ ] Configure compression + - [ ] Implement code splitting + - [ ] Set up route-based code splitting + - [ ] Implement component lazy loading + - [ ] Configure dynamic imports + - [ ] Optimize chunk sizes + - [ ] Optimize component rendering performance + - [ ] Implement memoization + - [ ] Optimize re-renders + - [ ] Use virtualization for long lists + - [ ] Implement performance profiling + - [ ] Set up performance monitoring + - [ ] Configure Lighthouse CI + - [ ] Set up Web Vitals tracking + - [ ] Implement performance budgets + - [ ] Create performance dashboards + +### Week 3: Documentation and Final Polishing +- [ ] **Documentation** + - [ ] Create developer documentation + - [ ] Document project setup + - [ ] Create API documentation + - [ ] Document state management patterns + - [ ] Create plugin development guide + - [ ] Document architecture and patterns + - [ ] Create architecture diagrams + - [ ] Document code organization + - [ ] Create data flow diagrams + - [ ] Document plugin system + - [ ] Create onboarding guide for new developers + - [ ] Document development workflow + - [ ] Create coding standards guide + - [ ] Document testing practices + - [ ] Create troubleshooting guide + +- [ ] **Final Review and Polishing** + - [ ] Conduct code review of the entire codebase + - [ ] Review code quality + - [ ] Check for consistent patterns + - [ ] Verify error handling + - [ ] Ensure proper typing + - [ ] Fix any remaining issues + - [ ] Address code review feedback + - [ ] Fix edge cases + - [ ] Resolve any remaining bugs + - [ ] Ensure consistent coding patterns across the application + - [ ] Standardize component APIs + - [ ] Verify consistent state management + - [ ] Check naming conventions + - [ ] Ensure proper documentation + - [ ] Final performance and accessibility audit + - [ ] Run Lighthouse audits + - [ ] Verify accessibility compliance + - [ ] Check performance metrics + - [ ] Test cross-browser compatibility \ No newline at end of file diff --git a/client/documentation/client-refactoring-plan.md b/client/documentation/client-refactoring-plan.md new file mode 100644 index 000000000..6a0e53ab5 --- /dev/null +++ b/client/documentation/client-refactoring-plan.md @@ -0,0 +1,1121 @@ +# CLIENT_ARCHITECTURE_TARGET + +## Current Architecture Analysis + +The Squirrel Servers Manager (SSM) client is built using: +- React as the UI library +- UmiJS Max as the framework +- Ant Design Pro for UI components +- A plugin system for extensibility +- REST API services for backend communication + +UmiJS Max provides several built-in capabilities that we should leverage: +- Built-in data flow management (Model system based on hooks) +- Built-in request module based on axios and ahooks' useRequest +- Built-in dva integration (Redux + Saga) for more complex state management +- Built-in layout and routing system +- Built-in internationalization (i18n) support +- Built-in OpenAPI integration + +The current architecture has several areas that could be improved: +1. The project structure lacks clear organization for larger-scale development +2. The plugin system implementation is not fully modular +3. State management appears to be scattered across different approaches +4. API service layer lacks consistent patterns +5. Component organization could be more standardized +6. Testing infrastructure is minimal + +## Refactoring Plan + +### 1. Project Structure Reorganization + +Following Ant Design Pro v5 best practices, we'll adopt the following structure: + +``` +client/ +├── config/ # UmiJS configuration +│ ├── config.ts # Base configuration +│ ├── defaultSettings.ts # Default settings for Pro components +│ ├── proxy.ts # Proxy configuration for development +│ └── routes.ts # Application routes +├── mock/ # Mock data for development +├── public/ # Static assets +├── src/ +│ ├── assets/ # Images, icons, and other static assets +│ ├── components/ # Shared UI components +│ │ ├── Footer/ # Footer component +│ │ ├── HeaderSearch/ # Header search component +│ │ ├── RightContent/ # Right content for header +│ │ └── ... # Other shared components +│ ├── e2e/ # End-to-end tests +│ ├── hooks/ # Shared custom hooks +│ ├── layouts/ # Application layouts +│ │ ├── BasicLayout.tsx # Main layout +│ │ └── UserLayout.tsx # User-related layout (login, etc.) +│ ├── locales/ # Internationalization resources +│ │ ├── en-US/ # English translations +│ │ └── zh-CN/ # Chinese translations +│ ├── models/ # Global models for state management +│ │ ├── global.ts # Global model +│ │ └── user.ts # User model +│ ├── pages/ # Application pages +│ │ ├── Dashboard/ # Dashboard page +│ │ │ ├── components/ # Dashboard-specific components +│ │ │ ├── index.tsx # Main dashboard component +│ │ │ └── index.less # Dashboard styles +│ │ ├── Devices/ # Devices page +│ │ ├── Containers/ # Containers page +│ │ ├── Playbooks/ # Playbooks page +│ │ ├── User/ # User-related pages (login, etc.) +│ │ └── 404.tsx # 404 page +│ ├── plugins/ # Plugin system (refactored) +│ │ ├── components/ # Plugin UI components +│ │ ├── contexts/ # Plugin context providers +│ │ ├── hooks/ # Plugin hooks +│ │ ├── registry/ # Plugin registration system +│ │ ├── types/ # Plugin type definitions +│ │ └── utils/ # Plugin utilities +│ ├── services/ # API services +│ │ ├── ant-design-pro/ # API services for Pro components +│ │ ├── devices.ts # Devices API services +│ │ ├── containers.ts # Containers API services +│ │ ├── playbooks.ts # Playbooks API services +│ │ └── typings.d.ts # TypeScript definitions for API +│ ├── utils/ # Utility functions +│ │ ├── request.ts # Request utility (if needed) +│ │ ├── utils.ts # General utilities +│ │ └── authority.ts # Authority-related utilities +│ ├── access.ts # Access control configuration +│ ├── app.tsx # Application configuration +│ ├── global.less # Global styles +│ ├── global.tsx # Global scripts +│ ├── manifest.json # PWA manifest +│ ├── service-worker.js # Service worker for PWA +│ └── typings.d.ts # Global TypeScript definitions +└── tests/ # Test files + ├── run-tests.js # Test runner + └── setupTests.js # Test setup +``` + +This structure follows the Ant Design Pro v5 conventions while incorporating our plugin system and specific feature requirements. + +### 2. State Management Modernization + +#### Implementation Plan: +1. **Leverage UmiJS Max's built-in state management solutions** + - Use the built-in Model system for simpler state management needs + - Use dva for more complex state management scenarios + - Implement consistent patterns across the application + +2. **Create domain-specific models using UmiJS hooks-based approach**: + ```typescript + // src/models/deviceModel.ts + import { useState, useCallback } from 'react'; + import { useRequest } from 'umi'; + import { getDevices, getDeviceById } from '@/services/device'; + import type { Device } from '@/types/device'; + + export default function useDeviceModel() { + const [selectedDeviceId, setSelectedDeviceId] = useState(null); + + // Use UmiJS built-in useRequest for data fetching + const { data: devices, loading, error, refresh } = useRequest(getDevices); + + const { data: selectedDevice } = useRequest( + () => (selectedDeviceId ? getDeviceById(selectedDeviceId) : null), + { refreshDeps: [selectedDeviceId] } + ); + + const selectDevice = useCallback((deviceId: string) => { + setSelectedDeviceId(deviceId); + }, []); + + return { + devices, + selectedDevice, + loading, + error, + selectDevice, + refreshDevices: refresh + }; + }; + ``` + +3. **For more complex state management, use dva models**: + ```typescript + // src/models/devices.ts (dva model) + import { Effect, Reducer } from 'umi'; + import { getDevices, getDeviceById } from '@/services/device'; + import type { Device } from '@/types/device'; + + export interface DevicesModelState { + list: Device[]; + selectedDevice: Device | null; + } + + export interface DevicesModelType { + namespace: 'devices'; + state: DevicesModelState; + effects: { + fetchDevices: Effect; + fetchDevice: Effect; + }; + reducers: { + saveDevices: Reducer; + saveDevice: Reducer; + }; + } + + const DevicesModel: DevicesModelType = { + namespace: 'devices', + + state: { + list: [], + selectedDevice: null, + }, + + effects: { + *fetchDevices(_, { call, put }) { + const response = yield call(getDevices); + yield put({ + type: 'saveDevices', + payload: response.data, + }); + }, + *fetchDevice({ payload: id }, { call, put }) { + const response = yield call(getDeviceById, id); + yield put({ + type: 'saveDevice', + payload: response.data, + }); + }, + }, + + reducers: { + saveDevices(state, { payload }) { + return { + ...state, + list: payload, + }; + }, + saveDevice(state, { payload }) { + return { + ...state, + selectedDevice: payload, + }; + }, + }, + }; + + export default DevicesModel; + ``` + +### 3. API Service Layer Refactoring + +#### Implementation Plan: +1. **Leverage UmiJS Max's built-in request module with OpenAPI integration**: + ```typescript + // src/app.ts - Configure request runtime settings + import { message, notification } from 'antd'; + import type { RequestConfig } from '@umijs/max'; + import { history } from '@umijs/max'; + + // Error code type for standardized error handling + enum ErrorShowType { + SILENT = 0, + WARN_MESSAGE = 1, + ERROR_MESSAGE = 2, + NOTIFICATION = 3, + REDIRECT = 9, + } + + // Response structure following Ant Design Pro best practices + interface ResponseStructure { + success: boolean; + data: any; + errorCode?: string; + errorMessage?: string; + showType?: ErrorShowType; + } + + export const request: RequestConfig = { + timeout: 10000, + // Default error handling strategy + errorConfig: { + // Custom error throwing + errorThrower: (res: ResponseStructure) => { + const { success, data, errorCode, errorMessage, showType } = res; + if (!success) { + const error: any = new Error(errorMessage); + error.name = 'BizError'; + error.info = { errorCode, errorMessage, showType, data }; + throw error; + } + }, + // Custom error handling + errorHandler: (error: any, opts: any) => { + if (opts?.skipErrorHandler) throw error; + + // Business errors thrown by errorThrower + if (error.name === 'BizError') { + const errorInfo: ResponseStructure | undefined = error.info; + if (errorInfo) { + const { errorMessage, errorCode, showType } = errorInfo; + + switch (showType) { + case ErrorShowType.SILENT: + // Do nothing + break; + case ErrorShowType.WARN_MESSAGE: + message.warning(errorMessage); + break; + case ErrorShowType.ERROR_MESSAGE: + message.error(errorMessage); + break; + case ErrorShowType.NOTIFICATION: + notification.open({ + message: errorCode, + description: errorMessage, + }); + break; + case ErrorShowType.REDIRECT: + // Handle redirect, e.g., to login page + history.push('/user/login'); + break; + default: + message.error(errorMessage); + } + } + } else if (error.response) { + // Axios error handling + const status = error.response.status; + if (status === 401) { + message.error('Unauthorized, please login again'); + history.push('/user/login'); + } else if (status === 403) { + message.error('Forbidden access'); + } else if (status >= 500) { + message.error('Server error, please try again later'); + } else { + message.error(`Request failed with status: ${status}`); + } + } else if (error.request) { + // Request was made but no response received + message.error('Network error, please check your connection'); + } else { + // Something happened in setting up the request + message.error('Request error, please try again'); + } + }, + }, + requestInterceptors: [ + (config) => { + // Add auth token to headers + const token = localStorage.getItem('token'); + if (token) { + config.headers = { ...config.headers, Authorization: `Bearer ${token}` }; + } + return config; + }, + ], + responseInterceptors: [ + (response) => { + // Process successful responses + return response; + }, + ], + }; + ``` + +2. **Create domain-specific API services using OpenAPI and UmiJS request**: + ```typescript + // src/services/typings.d.ts - Define API response structure + declare namespace API { + interface Response { + success: boolean; + data: T; + errorCode?: string; + errorMessage?: string; + showType?: number; + } + + // Device-related types + interface Device { + id: string; + name: string; + ip: string; + status: string; + // Other device properties + } + + interface DeviceCreateDto { + name: string; + ip: string; + // Other creation properties + } + + interface DeviceUpdateDto { + name?: string; + ip?: string; + // Other update properties + } + } + ``` + + ```typescript + // src/services/device.ts + import { request } from '@umijs/max'; + + /** Get device list - GET /api/devices */ + export async function getDevices() { + return request>('/api/devices'); + } + + /** Get device by ID - GET /api/devices/${id} */ + export async function getDeviceById(id: string) { + return request>(`/api/devices/${id}`); + } + + /** Create device - POST /api/devices */ + export async function createDevice(data: API.DeviceCreateDto) { + return request>('/api/devices', { + method: 'POST', + data, + }); + } + + /** Update device - PUT /api/devices/${id} */ + export async function updateDevice(id: string, data: API.DeviceUpdateDto) { + return request>(`/api/devices/${id}`, { + method: 'PUT', + data, + }); + } + + /** Delete device - DELETE /api/devices/${id} */ + export async function deleteDevice(id: string) { + return request>(`/api/devices/${id}`, { + method: 'DELETE', + }); + } + ``` + +3. **Use UmiJS useRequest hook with Pro Table for data fetching in components**: + ```typescript + // src/pages/Devices/index.tsx + import React from 'react'; + import { useRequest } from '@umijs/max'; + import { PageContainer } from '@ant-design/pro-layout'; + import { ProTable } from '@ant-design/pro-components'; + import { Button, message, Popconfirm } from 'antd'; + import { PlusOutlined, DeleteOutlined } from '@ant-design/icons'; + import { getDevices, deleteDevice } from '@/services/device'; + import type { ProColumns } from '@ant-design/pro-components'; + import type { API } from '@/services/typings'; + + const DevicesPage: React.FC = () => { + // Handle device deletion with automatic loading state + const { run: runDelete, loading: deleteLoading } = useRequest(deleteDevice, { + manual: true, + onSuccess: () => { + message.success('Device deleted successfully'); + // The ProTable will automatically refresh + }, + }); + + const columns: ProColumns[] = [ + { + title: 'Name', + dataIndex: 'name', + sorter: true, + }, + { + title: 'IP Address', + dataIndex: 'ip', + }, + { + title: 'Status', + dataIndex: 'status', + valueEnum: { + online: { text: 'Online', status: 'Success' }, + offline: { text: 'Offline', status: 'Error' }, + }, + }, + { + title: 'Actions', + valueType: 'option', + render: (_, record) => [ + runDelete(record.id)} + > + + , + ], + }, + ]; + + return ( + + + headerTitle="Devices" + rowKey="id" + search={{ + labelWidth: 120, + }} + toolBarRender={() => [ + , + ]} + request={async (params, sort, filter) => { + const response = await getDevices(); + return { + data: response.data || [], + success: response.success, + total: response.data?.length || 0, + }; + }} + columns={columns} + /> + + ); + }; + + export default DevicesPage; + ``` + +### 4. Plugin System Enhancement + +#### Implementation Plan: +1. **Create a robust plugin registry**: + ```typescript + // src/plugins/registry/pluginRegistry.ts + import { Plugin, PluginMetadata } from '@/plugins/types'; + + class PluginRegistry { + private plugins: Map = new Map(); + private slots: Map> = new Map(); + + registerPlugin(plugin: Plugin): void { + if (this.plugins.has(plugin.id)) { + console.warn(`Plugin with ID ${plugin.id} is already registered`); + return; + } + + this.plugins.set(plugin.id, plugin); + + // Register plugin slots + if (plugin.slots) { + for (const slot of plugin.slots) { + if (!this.slots.has(slot)) { + this.slots.set(slot, new Set()); + } + this.slots.get(slot)?.add(plugin); + } + } + } + + getPlugin(id: string): Plugin | undefined { + return this.plugins.get(id); + } + + getPlugins(): Plugin[] { + return Array.from(this.plugins.values()); + } + + getPluginsForSlot(slotName: string): Plugin[] { + return Array.from(this.slots.get(slotName) || []); + } + + // Other methods + } + + export const pluginRegistry = new PluginRegistry(); + ``` + +2. **Create a plugin context provider**: + ```typescript + // src/plugins/contexts/plugin-context.tsx + import React, { createContext, useContext, useEffect, useState } from 'react'; + import { pluginRegistry } from '@/plugins/registry/pluginRegistry'; + import { Plugin, PluginMetadata } from '@/plugins/types'; + import { getPlugins } from '@/services/endpoints/pluginsService'; + + interface PluginContextType { + pluginRegistry: typeof pluginRegistry; + pluginMetadata: PluginMetadata[]; + loading: boolean; + error: Error | null; + refreshPlugins: () => Promise; + } + + const PluginContext = createContext(undefined); + + export const PluginProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { + const [pluginMetadata, setPluginMetadata] = useState([]); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + + const loadPlugins = async () => { + try { + setLoading(true); + setError(null); + + const response = await getPlugins(); + setPluginMetadata(response.data || []); + + // Register plugins + for (const metadata of response.data || []) { + if (metadata.enabled) { + // Load and register plugin + // This would be more complex in a real implementation + } + } + } catch (err) { + setError(err instanceof Error ? err : new Error('Failed to load plugins')); + } finally { + setLoading(false); + } + }; + + useEffect(() => { + loadPlugins(); + }, []); + + return ( + + {children} + + ); + }; + + export const usePlugins = () => { + const context = useContext(PluginContext); + if (context === undefined) { + throw new Error('usePlugins must be used within a PluginProvider'); + } + return context; + }; + + export const useSlot = (slotName: string) => { + const { pluginRegistry } = usePlugins(); + + return () => { + const plugins = pluginRegistry.getPluginsForSlot(slotName); + return ( + <> + {plugins.map((plugin) => { + const SlotComponent = plugin.renderSlot?.(slotName); + return SlotComponent ? : null; + })} + + ); + }; + }; + ``` + +3. **Define plugin types**: + ```typescript + // src/plugins/types/index.ts + export interface PluginMetadata { + id: string; + name: string; + version: string; + description: string; + author?: string; + enabled: boolean; + permissions?: string[]; + } + + export interface Plugin { + id: string; + metadata: PluginMetadata; + slots?: string[]; + initialize?: () => Promise; + renderSlot?: (slotName: string) => React.ComponentType | null; + // Other plugin methods and properties + } + ``` + +### 5. Component Architecture Standardization + +#### Implementation Plan: +1. **Create a component library structure**: + ``` + src/components/ + ├── common/ # Basic UI components + │ ├── Button/ + │ │ ├── Button.tsx + │ │ ├── Button.styles.ts + │ │ ├── Button.test.tsx + │ │ └── index.ts + │ ├── Card/ + │ ├── Input/ + │ └── ... + ├── layout/ # Layout components + │ ├── Header/ + │ ├── Sidebar/ + │ ├── Footer/ + │ └── ... + └── domain/ # Domain-specific components + ├── DeviceCard/ + ├── ContainerList/ + ├── PlaybookEditor/ + └── ... + ``` + +2. **Implement component patterns**: + ```typescript + // src/components/common/Button/Button.tsx + import React from 'react'; + import { ButtonWrapper } from './Button.styles'; + + export interface ButtonProps { + variant?: 'primary' | 'secondary' | 'danger'; + size?: 'small' | 'medium' | 'large'; + disabled?: boolean; + onClick?: () => void; + children: React.ReactNode; + } + + export const Button: React.FC = ({ + variant = 'primary', + size = 'medium', + disabled = false, + onClick, + children, + }) => { + return ( + + {children} + + ); + }; + ``` + +3. **Create styled components**: + ```typescript + // src/components/common/Button/Button.styles.ts + import styled, { css } from 'styled-components'; + import { ButtonProps } from './Button'; + + export const ButtonWrapper = styled.button` + border-radius: 4px; + font-weight: 500; + cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')}; + opacity: ${({ disabled }) => (disabled ? 0.6 : 1)}; + + ${({ variant }) => { + switch (variant) { + case 'primary': + return css` + background-color: #1890ff; + color: white; + border: none; + `; + case 'secondary': + return css` + background-color: transparent; + color: #1890ff; + border: 1px solid #1890ff; + `; + case 'danger': + return css` + background-color: #ff4d4f; + color: white; + border: none; + `; + default: + return ''; + } + }} + + ${({ size }) => { + switch (size) { + case 'small': + return css` + padding: 4px 12px; + font-size: 12px; + `; + case 'medium': + return css` + padding: 8px 16px; + font-size: 14px; + `; + case 'large': + return css` + padding: 12px 20px; + font-size: 16px; + `; + default: + return ''; + } + }} + `; + ``` + +### 6. Testing Infrastructure Enhancement + +#### Implementation Plan: +1. **Set up comprehensive testing tools**: + - Configure Vitest for unit and integration testing + - Set up React Testing Library for component testing + - Implement Cypress for E2E testing + +2. **Create test utilities for UmiJS Max**: + ```typescript + // tests/utils/test-utils.tsx + import React, { ReactElement } from 'react'; + import { render, RenderOptions } from '@testing-library/react'; + import { PluginProvider } from '@/plugins/contexts/plugin-context'; + import { createMemoryHistory } from 'history'; + import { Router } from 'react-router-dom'; + + interface ExtendedRenderOptions extends Omit { + initialRoute?: string; + } + + export function renderWithProviders( + ui: ReactElement, + { + initialRoute = '/', + ...renderOptions + }: ExtendedRenderOptions = {} + ) { + const history = createMemoryHistory({ initialEntries: [initialRoute] }); + + function Wrapper({ children }: { children: React.ReactNode }) { + return ( + + {children} + + ); + } + + return { history, ...render(ui, { wrapper: Wrapper, ...renderOptions }) }; + } + ``` + +3. **Create test mocks for UmiJS Max**: + ```typescript + // tests/mocks/handlers.ts + import { rest } from 'msw'; + + export const handlers = [ + rest.get('/api/devices', (req, res, ctx) => { + return res( + ctx.status(200), + ctx.json({ + data: [ + { id: '1', name: 'Device 1', ip: '192.168.1.1', status: 'online' }, + { id: '2', name: 'Device 2', ip: '192.168.1.2', status: 'offline' }, + ], + }) + ); + }), + + // Add more API mocks here + ]; + ``` + +4. **Set up mock for UmiJS models**: + ```typescript + // tests/mocks/modelMocks.ts + import { Device } from '@/types/device'; + + // Mock for the deviceModel + export const mockDeviceModel = { + devices: [ + { id: '1', name: 'Device 1', ip: '192.168.1.1', status: 'online' }, + { id: '2', name: 'Device 2', ip: '192.168.1.2', status: 'offline' }, + ], + selectedDevice: null, + loading: false, + error: null, + selectDevice: jest.fn(), + refreshDevices: jest.fn(), + }; + + // Mock the useModel hook from UmiJS + export function mockUseModel(namespace: string) { + if (namespace === 'deviceModel') { + return mockDeviceModel; + } + return {}; + } + ``` + +5. **Create component testing examples**: + ```typescript + // src/components/common/Button/Button.test.tsx + import React from 'react'; + import { render, fireEvent } from '@testing-library/react'; + import { Button } from './Button'; + + describe('Button component', () => { + it('renders correctly with default props', () => { + const { getByText } = render(); + expect(getByText('Click me')).toBeInTheDocument(); + }); + + it('calls onClick when clicked', () => { + const handleClick = jest.fn(); + const { getByText } = render(); + fireEvent.click(getByText('Click me')); + expect(handleClick).toHaveBeenCalledTimes(1); + }); + + it('does not call onClick when disabled', () => { + const handleClick = jest.fn(); + const { getByText } = render( + + ); + fireEvent.click(getByText('Click me')); + expect(handleClick).not.toHaveBeenCalled(); + }); + }); + ``` + +### 7. Migration Strategy + +To implement this refactoring plan without disrupting ongoing development, we recommend a phased approach: + +1. **Phase 1: Infrastructure Setup (2 weeks)** + - Set up the new project structure + - Configure UmiJS Max's built-in request module + - Set up the model system for state management + - Create the enhanced plugin system architecture + +2. **Phase 2: Feature Migration (4-6 weeks)** + - Migrate one feature at a time to the new architecture + - Start with smaller, less complex features + - Implement comprehensive tests for each migrated feature + +3. **Phase 3: Component Library Development (3-4 weeks)** + - Create the standardized component library + - Refactor existing components to use the new patterns + - Develop comprehensive component documentation + +4. **Phase 4: Testing and Optimization (2-3 weeks)** + - Implement end-to-end tests + - Optimize performance + - Refine documentation + +### 8. Benefits of the New Architecture + +1. **Improved Developer Experience** + - Clear, consistent project structure + - Better separation of concerns + - Standardized patterns for common tasks + - Leveraging UmiJS Max's built-in capabilities + +2. **Enhanced Maintainability** + - Modular, decoupled components + - Comprehensive testing + - Consistent coding patterns + - Reduced boilerplate code by using UmiJS Max features + +3. **Better Performance** + - Optimized state management with UmiJS models and dva + - Efficient data fetching with built-in useRequest and caching + - Code splitting for faster loading + +4. **Scalability** + - Feature-based organization for easier scaling + - Robust plugin system for extensibility + - Clear boundaries between application domains + - Standardized approach to adding new features + +5. **Future-Proofing** + - Modern architecture based on industry best practices + - Strong typing throughout the application + - Flexible structure that can adapt to changing requirements + - Alignment with UmiJS Max's ecosystem and updates + +## Detailed Implementation Plan + +### Phase 1: Infrastructure Setup (2 weeks) + +#### Week 1: Project Structure and Configuration +- [ ] **Day 1-2: Project Structure Setup** + - [ ] Create the new directory structure according to the plan + - [ ] Set up linting and formatting rules + - [ ] Configure TypeScript settings + +- [ ] **Day 3-4: UmiJS Max Configuration** + - [ ] Configure UmiJS Max settings in config files + - [ ] Set up build and development scripts + - [ ] Configure routing system + +- [ ] **Day 5: Request Module Setup** + - [ ] Implement request runtime configuration in app.ts + - [ ] Set up error handling for API requests + - [ ] Configure request interceptors + +#### Week 2: State Management and Plugin System +- [ ] **Day 1-2: State Management Setup** + - [ ] Configure UmiJS model system + - [ ] Set up dva if needed for complex state management + - [ ] Create base model templates + +- [ ] **Day 3-5: Plugin System Architecture** + - [ ] Implement plugin registry + - [ ] Create plugin context provider + - [ ] Define plugin types and interfaces + - [ ] Set up plugin loading mechanism + +### Phase 2: Feature Migration (4-6 weeks) + +#### Week 1-2: Core Features Migration +- [ ] **Dashboard Feature** + - [ ] Create dashboard model + - [ ] Implement dashboard API services + - [ ] Migrate dashboard components + - [ ] Write tests for dashboard feature + +- [ ] **User Authentication** + - [ ] Create authentication model + - [ ] Implement authentication API services + - [ ] Migrate login/logout components + - [ ] Write tests for authentication + +#### Week 3-4: Device Management Migration +- [ ] **Device Listing and Details** + - [ ] Create device model + - [ ] Implement device API services + - [ ] Migrate device list and detail components + - [ ] Write tests for device management + +- [ ] **Device Operations** + - [ ] Implement device operations API services + - [ ] Migrate device operation components + - [ ] Write tests for device operations + +#### Week 5-6: Container and Playbook Features +- [ ] **Container Management** + - [ ] Create container model + - [ ] Implement container API services + - [ ] Migrate container management components + - [ ] Write tests for container management + +- [ ] **Playbook Management** + - [ ] Create playbook model + - [ ] Implement playbook API services + - [ ] Migrate playbook components + - [ ] Write tests for playbook management + +### Phase 3: Component Library Development (3-4 weeks) + +#### Week 1: Basic Components +- [ ] **Design System Setup** + - [ ] Define design tokens (colors, spacing, typography) + - [ ] Create theme configuration + - [ ] Set up styled-components or emotion + +- [ ] **Basic UI Components** + - [ ] Implement Button component + - [ ] Implement Input component + - [ ] Implement Card component + - [ ] Write tests for basic components + +#### Week 2: Form Components +- [ ] **Form Components** + - [ ] Implement Form component + - [ ] Implement Select component + - [ ] Implement Checkbox and Radio components + - [ ] Write tests for form components + +#### Week 3: Layout and Navigation Components +- [ ] **Layout Components** + - [ ] Implement Header component + - [ ] Implement Sidebar component + - [ ] Implement Footer component + - [ ] Write tests for layout components + +- [ ] **Navigation Components** + - [ ] Implement Menu component + - [ ] Implement Tabs component + - [ ] Implement Breadcrumb component + - [ ] Write tests for navigation components + +#### Week 4: Domain-Specific Components +- [ ] **Device Components** + - [ ] Implement DeviceCard component + - [ ] Implement DeviceStatusBadge component + - [ ] Write tests for device components + +- [ ] **Container Components** + - [ ] Implement ContainerList component + - [ ] Implement ContainerStatusBadge component + - [ ] Write tests for container components + +- [ ] **Documentation** + - [ ] Set up Storybook for component documentation + - [ ] Document all components with examples and usage guidelines + +### Phase 4: Testing and Optimization (2-3 weeks) + +#### Week 1: Testing Infrastructure +- [ ] **Unit Testing Setup** + - [ ] Configure Vitest for unit testing + - [ ] Set up test utilities and mocks + - [ ] Implement CI pipeline for tests + +- [ ] **Integration Testing** + - [ ] Set up integration test environment + - [ ] Create integration tests for key user flows + - [ ] Configure test coverage reporting + +#### Week 2: E2E Testing and Performance +- [ ] **E2E Testing** + - [ ] Set up Cypress for E2E testing + - [ ] Create E2E tests for critical user journeys + - [ ] Configure E2E tests in CI pipeline + +- [ ] **Performance Optimization** + - [ ] Analyze and optimize bundle size + - [ ] Implement code splitting + - [ ] Optimize component rendering performance + - [ ] Set up performance monitoring + +#### Week 3: Documentation and Final Polishing +- [ ] **Documentation** + - [ ] Create developer documentation + - [ ] Document architecture and patterns + - [ ] Create onboarding guide for new developers + +- [ ] **Final Review and Polishing** + - [ ] Conduct code review of the entire codebase + - [ ] Fix any remaining issues + - [ ] Ensure consistent coding patterns across the application + - [ ] Final performance and accessibility audit diff --git a/client/package-lock.json b/client/package-lock.json index 6ff93ed11..fb0d0a9f1 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -10,24 +10,24 @@ "hasInstallScript": true, "license": "AGPL-3.0 license", "dependencies": { - "@ant-design/charts": "^2.2.6", - "@ant-design/icons": "^5.6.1", - "@ant-design/pro-components": "^2.8.6", + "@ant-design/charts": "^2.2.7", + "@ant-design/icons": "^6.0.0", + "@ant-design/pro-components": "^2.8.7", "@ant-design/use-emotion-css": "1.0.4", - "@antv/g2plot": "^2.4.32", + "@antv/g2plot": "^2.4.33", "@dnd-kit/core": "^6.3.1", - "@lottiefiles/dotlottie-react": "^0.13.0", + "@lottiefiles/dotlottie-react": "^0.13.3", "@monaco-editor/react": "^4.7.0", - "@umijs/max": "^4.4.5", + "@umijs/max": "^4.4.6", "@umijs/plugin-antd-dayjs": "^0.3.0", "@umijs/route-utils": "^4.0.1", "@xterm/addon-fit": "^0.10.0", - "antd": "^5.24.2", + "antd": "^5.24.6", "buffer": "^6.0.3", "classnames": "^2.5.1", "dayjs": "^1.11.13", - "express": "^5.0.1", - "framer-motion": "^12.4.7", + "express": "^5.1.0", + "framer-motion": "^12.6.5", "lodash": "^4.17.21", "moment": "^2.30.1", "monaco-editor-webpack-plugin": "^7.1.0", @@ -38,7 +38,7 @@ "rc-queue-anim": "^2.0.0", "rc-tween-one": "^3.0.6", "react": "^18.3.1", - "react-confetti": "^6.2.3", + "react-confetti": "^6.4.0", "react-dev-inspector": "^2.0.1", "react-dom": "^18.3.1", "react-helmet-async": "^2.0.5", @@ -53,42 +53,42 @@ "@ant-design/pro-cli": "^3.2.1", "@babel/preset-env": "^7.26.9", "@babel/preset-react": "^7.26.3", - "@babel/preset-typescript": "^7.26.0", - "@eslint/eslintrc": "^3.3.0", - "@eslint/js": "^9.21.0", + "@babel/preset-typescript": "^7.27.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "^9.23.0", "@testing-library/jest-dom": "^6.6.3", - "@testing-library/react": "^16.2.0", + "@testing-library/react": "^16.3.0", "@types/classnames": "^2.3.4", - "@types/express": "^5.0.0", + "@types/express": "^5.0.1", "@types/history": "^5.0.0", "@types/jest": "^29.5.14", - "@types/lodash": "^4.17.15", - "@types/luxon": "^3.4.2", + "@types/lodash": "^4.17.16", + "@types/luxon": "^3.6.2", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@types/react-helmet": "^6.1.11", "@types/testing-library__jest-dom": "^6.0.0", - "@typescript-eslint/eslint-plugin": "^8.24.1", + "@typescript-eslint/eslint-plugin": "^8.28.0", "@umijs/fabric": "^4.0.1", - "@umijs/lint": "^4.4.5", + "@umijs/lint": "^4.4.6", "antd-pro-merge-less": "^3.0.11", "babel-jest": "^29.7.0", "cross-env": "^7.0.3", "eslint": "^8.57.0", "eslint-plugin-jest": "^28.11.0", "eslint-plugin-react": "^7.37.4", - "eslint-plugin-react-hooks": "^5.1.0", + "eslint-plugin-react-hooks": "^5.2.0", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "jest-transform-stub": "^2.0.0", - "lint-staged": "^15.4.3", + "lint-staged": "^15.5.0", "mockjs": "^1.1.0", "node-fetch": "^3.3.2", - "prettier": "^3.5.2", - "ts-jest": "^29.2.6", + "prettier": "^3.5.3", + "ts-jest": "^29.3.0", "ts-node": "^10.9.2", - "typescript": "^5.7.3", - "vitest": "^3.0.6" + "typescript": "^5.8.3", + "vitest": "^3.1.1" }, "engines": { "node": ">=20.0.0" @@ -527,12 +527,13 @@ "license": "ISC" }, "node_modules/@ant-design/charts": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/@ant-design/charts/-/charts-2.2.6.tgz", - "integrity": "sha512-pkzdIkc+TdHejOkjnizIXleCQ3psqNQSStllhHul4Ep82IU/qfTbGZ9iaVGJoFOc0+uHBO9Y65RVS47TPMBerQ==", + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/@ant-design/charts/-/charts-2.2.7.tgz", + "integrity": "sha512-R8o+K3oskV3kgKkOnnfAJ8dRbF8gpuspgZ0p+xYAiOAX8tg+JpNCB10I/DU4/vipGxmSJQDDU7JiF3roxnN8HQ==", + "license": "MIT", "dependencies": { - "@ant-design/graphs": "^2.0.4", - "@ant-design/plots": "^2.3.2", + "@ant-design/graphs": "^2.0.5", + "@ant-design/plots": "^2.3.3", "lodash": "^4.17.21", "react": "^18.3.1", "react-dom": "^18.3.1" @@ -609,48 +610,35 @@ } }, "node_modules/@ant-design/graphs": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@ant-design/graphs/-/graphs-2.0.4.tgz", - "integrity": "sha512-8Os7/it/auQt7NWUA+Ml+NjVYz2VsRjaGJYGxlUnfT4w0KiW6A9aYgixjVqWYjsdNBK0J3lHtrlME5RLiJ5DTw==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@ant-design/graphs/-/graphs-2.0.5.tgz", + "integrity": "sha512-W5ySuwKLMd+aBUVGvWBlNJttt9feiL6vYhd39mTEg3qYrtvq1gzRwX6hqqf/d3Li4btapTnzjyukEMnkPH2ZAg==", + "license": "MIT", "dependencies": { "@ant-design/charts-util": "0.0.1-alpha.7", - "@antv/g6": "^5.0.38", - "@antv/g6-extension-react": "^0.1.13", + "@antv/g6": "^5.0.44", + "@antv/g6-extension-react": "^0.2.0", "@antv/graphin": "^3.0.4", "lodash": "^4.17.21", "react": "^18.3.1", "react-dom": "^18.3.1", - "styled-components": "^6.1.13" + "styled-components": "^6.1.15" }, "peerDependencies": { "react": ">=16.8.4", "react-dom": ">=16.8.4" } }, - "node_modules/@ant-design/graphs/node_modules/@antv/graphin": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@antv/graphin/-/graphin-3.0.4.tgz", - "integrity": "sha512-7ce6RDI5Z6ud93yiyS7b+mmFrHJhlkwwNo53kb7P7KoCsnV7ioMONDE6Gw0ROeMSR6TwHtxGZUhHw9wxnPp82Q==", - "license": "MIT", - "dependencies": { - "@antv/g6": "^5.0.28" - }, - "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" - } - }, "node_modules/@ant-design/icons": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.6.1.tgz", - "integrity": "sha512-0/xS39c91WjPAZOWsvi1//zjx6kAp4kxWwctR6kuU6p133w8RU0D2dSCvZC19uQyharg/sAvYxGYWl01BbZZfg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-6.0.0.tgz", + "integrity": "sha512-o0aCCAlHc1o4CQcapAwWzHeaW2x9F49g7P3IDtvtNXgHowtRWYb7kiubt8sQPFvfVIVU/jLw2hzeSlNt0FU+Uw==", "license": "MIT", "dependencies": { - "@ant-design/colors": "^7.0.0", + "@ant-design/colors": "^8.0.0", "@ant-design/icons-svg": "^4.4.0", - "@babel/runtime": "^7.24.8", - "classnames": "^2.2.6", - "rc-util": "^5.31.1" + "@rc-component/util": "^1.2.1", + "classnames": "^2.2.6" }, "engines": { "node": ">=8" @@ -664,6 +652,24 @@ "version": "4.4.2", "license": "MIT" }, + "node_modules/@ant-design/icons/node_modules/@ant-design/colors": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-8.0.0.tgz", + "integrity": "sha512-6YzkKCw30EI/E9kHOIXsQDHmMvTllT8STzjMb4K2qzit33RW2pqCJP0sk+hidBntXxE+Vz4n1+RvCTfBw6OErw==", + "license": "MIT", + "dependencies": { + "@ant-design/fast-color": "^3.0.0" + } + }, + "node_modules/@ant-design/icons/node_modules/@ant-design/fast-color": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@ant-design/fast-color/-/fast-color-3.0.0.tgz", + "integrity": "sha512-eqvpP7xEDm2S7dUzl5srEQCBTXZMmY3ekf97zI+M2DHOYyKdJGH0qua0JACHTqbkRnD/KHFQP9J1uMJ/XWVzzA==", + "license": "MIT", + "engines": { + "node": ">=8.x" + } + }, "node_modules/@ant-design/moment-webpack-plugin": { "version": "0.0.3", "license": "MIT" @@ -689,15 +695,15 @@ } }, "node_modules/@ant-design/pro-card": { - "version": "2.9.6", - "resolved": "https://registry.npmjs.org/@ant-design/pro-card/-/pro-card-2.9.6.tgz", - "integrity": "sha512-boUvowODMhc1l55ZZj/08YwnaggL50fAio2NaA7uXsgpbLduSPL2OE0RyiI24NCqFhPRZMZQHbPOmcHw4Bf3yQ==", + "version": "2.9.7", + "resolved": "https://registry.npmjs.org/@ant-design/pro-card/-/pro-card-2.9.7.tgz", + "integrity": "sha512-uDDYowmYH1ldRfG8Mb4QOwcEEz6ptRBQDLO1tkVADCRkdOMwz82xlZneR4uVuFyKcuNmgHzarYNncozBKhFuaA==", "license": "MIT", "dependencies": { "@ant-design/cssinjs": "^1.21.1", "@ant-design/icons": "^5.0.0", - "@ant-design/pro-provider": "2.15.3", - "@ant-design/pro-utils": "2.16.4", + "@ant-design/pro-provider": "2.15.4", + "@ant-design/pro-utils": "2.17.0", "@babel/runtime": "^7.18.0", "classnames": "^2.3.2", "rc-resize-observer": "^1.0.0", @@ -708,6 +714,26 @@ "react": ">=17.0.0" } }, + "node_modules/@ant-design/pro-card/node_modules/@ant-design/icons": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.6.1.tgz", + "integrity": "sha512-0/xS39c91WjPAZOWsvi1//zjx6kAp4kxWwctR6kuU6p133w8RU0D2dSCvZC19uQyharg/sAvYxGYWl01BbZZfg==", + "license": "MIT", + "dependencies": { + "@ant-design/colors": "^7.0.0", + "@ant-design/icons-svg": "^4.4.0", + "@babel/runtime": "^7.24.8", + "classnames": "^2.2.6", + "rc-util": "^5.31.1" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, "node_modules/@ant-design/pro-cli": { "version": "3.2.1", "dev": true, @@ -1560,21 +1586,21 @@ "license": "ISC" }, "node_modules/@ant-design/pro-components": { - "version": "2.8.6", - "resolved": "https://registry.npmjs.org/@ant-design/pro-components/-/pro-components-2.8.6.tgz", - "integrity": "sha512-iNd9kTLI0vAYGiyVrpDRflmee+h7486OLXIgIb89g3G+5YS9xSnRuCYt6UBRAEGsB1GRUPznRUGUd6Gsg33V+g==", - "license": "MIT", - "dependencies": { - "@ant-design/pro-card": "2.9.6", - "@ant-design/pro-descriptions": "2.6.6", - "@ant-design/pro-field": "3.0.3", - "@ant-design/pro-form": "2.31.6", - "@ant-design/pro-layout": "7.22.3", - "@ant-design/pro-list": "2.6.6", - "@ant-design/pro-provider": "2.15.3", + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/@ant-design/pro-components/-/pro-components-2.8.7.tgz", + "integrity": "sha512-QhibkPsUJryEjI1QmwUn+XCngGHidu0ekvricL6TIEvPgP+AUAca29XutN5+Mmn8Xfja1ca9HFTHTgFoV74Z7Q==", + "license": "MIT", + "dependencies": { + "@ant-design/pro-card": "2.9.7", + "@ant-design/pro-descriptions": "2.6.7", + "@ant-design/pro-field": "3.0.4", + "@ant-design/pro-form": "2.31.7", + "@ant-design/pro-layout": "7.22.4", + "@ant-design/pro-list": "2.6.7", + "@ant-design/pro-provider": "2.15.4", "@ant-design/pro-skeleton": "2.2.1", - "@ant-design/pro-table": "3.18.6", - "@ant-design/pro-utils": "2.16.4", + "@ant-design/pro-table": "3.19.0", + "@ant-design/pro-utils": "2.17.0", "@babel/runtime": "^7.16.3" }, "peerDependencies": { @@ -1584,16 +1610,16 @@ } }, "node_modules/@ant-design/pro-descriptions": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@ant-design/pro-descriptions/-/pro-descriptions-2.6.6.tgz", - "integrity": "sha512-Onwn79P5wNcFNHQmXVdTDgewXt4MCW5snEFctZuCY6T5KwpH7Y9UA8GWtFNIL2KfF5+uu83es20N0E2hg73G0w==", + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/@ant-design/pro-descriptions/-/pro-descriptions-2.6.7.tgz", + "integrity": "sha512-fgn2d0kDWUODGDWKpgziZuuqPlmIoKxQFJY9Yg4nbaRp8GDDKZeSSqgvW+OxjpYM8dxq31fiz1dZlZnOPoYKpg==", "license": "MIT", "dependencies": { - "@ant-design/pro-field": "3.0.3", - "@ant-design/pro-form": "2.31.6", - "@ant-design/pro-provider": "2.15.3", + "@ant-design/pro-field": "3.0.4", + "@ant-design/pro-form": "2.31.7", + "@ant-design/pro-provider": "2.15.4", "@ant-design/pro-skeleton": "2.2.1", - "@ant-design/pro-utils": "2.16.4", + "@ant-design/pro-utils": "2.17.0", "@babel/runtime": "^7.18.0", "rc-resize-observer": "^0.2.3", "rc-util": "^5.0.6" @@ -1620,14 +1646,14 @@ } }, "node_modules/@ant-design/pro-field": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@ant-design/pro-field/-/pro-field-3.0.3.tgz", - "integrity": "sha512-MrDZcx1kP4vpmnSJyHuxeool2o5hDRiJ8aRFloM2M7yW+Tw9ilABMlHFkKz1FLIt4esO9Zc4vd8Iv2ndlkB4/Q==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@ant-design/pro-field/-/pro-field-3.0.4.tgz", + "integrity": "sha512-nJSng/6/pPZFdiFeTtZcBQLNrHg9tIeiKFR1+zzbnQbI3qBOFP9aBZS/+LwkQZcI2G71vrRgz2x5OhHb7AX0wQ==", "license": "MIT", "dependencies": { "@ant-design/icons": "^5.0.0", - "@ant-design/pro-provider": "2.15.3", - "@ant-design/pro-utils": "2.16.4", + "@ant-design/pro-provider": "2.15.4", + "@ant-design/pro-utils": "2.17.0", "@babel/runtime": "^7.18.0", "@chenshuai2144/sketch-color": "^1.0.8", "classnames": "^2.3.2", @@ -1642,16 +1668,36 @@ "react": ">=17.0.0" } }, + "node_modules/@ant-design/pro-field/node_modules/@ant-design/icons": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.6.1.tgz", + "integrity": "sha512-0/xS39c91WjPAZOWsvi1//zjx6kAp4kxWwctR6kuU6p133w8RU0D2dSCvZC19uQyharg/sAvYxGYWl01BbZZfg==", + "license": "MIT", + "dependencies": { + "@ant-design/colors": "^7.0.0", + "@ant-design/icons-svg": "^4.4.0", + "@babel/runtime": "^7.24.8", + "classnames": "^2.2.6", + "rc-util": "^5.31.1" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, "node_modules/@ant-design/pro-form": { - "version": "2.31.6", - "resolved": "https://registry.npmjs.org/@ant-design/pro-form/-/pro-form-2.31.6.tgz", - "integrity": "sha512-pDthX9AjLiryFrtPFY+Ep1z/CfEbhg++K25p7jA6tyl1gVeOIcHVkLTEFMNKmWrc9ZSCA35D/UeSz3bn102GLg==", + "version": "2.31.7", + "resolved": "https://registry.npmjs.org/@ant-design/pro-form/-/pro-form-2.31.7.tgz", + "integrity": "sha512-0TCtIC/ynbLPoes8sLBFwFbi0tkeNmSU6the2EcyKIKDLfWHDbfkLM1OSFrzv3QD+H8OgFWMkTSOjhMOKSsOBg==", "license": "MIT", "dependencies": { "@ant-design/icons": "^5.0.0", - "@ant-design/pro-field": "3.0.3", - "@ant-design/pro-provider": "2.15.3", - "@ant-design/pro-utils": "2.16.4", + "@ant-design/pro-field": "3.0.4", + "@ant-design/pro-provider": "2.15.4", + "@ant-design/pro-utils": "2.17.0", "@babel/runtime": "^7.18.0", "@chenshuai2144/sketch-color": "^1.0.7", "@umijs/use-params": "^1.0.9", @@ -1669,16 +1715,36 @@ "react-dom": ">=17.0.0" } }, + "node_modules/@ant-design/pro-form/node_modules/@ant-design/icons": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.6.1.tgz", + "integrity": "sha512-0/xS39c91WjPAZOWsvi1//zjx6kAp4kxWwctR6kuU6p133w8RU0D2dSCvZC19uQyharg/sAvYxGYWl01BbZZfg==", + "license": "MIT", + "dependencies": { + "@ant-design/colors": "^7.0.0", + "@ant-design/icons-svg": "^4.4.0", + "@babel/runtime": "^7.24.8", + "classnames": "^2.2.6", + "rc-util": "^5.31.1" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, "node_modules/@ant-design/pro-layout": { - "version": "7.22.3", - "resolved": "https://registry.npmjs.org/@ant-design/pro-layout/-/pro-layout-7.22.3.tgz", - "integrity": "sha512-di/EOMDuoMDRjBweqesYyCxEYr2LCmO82y6A4bSwmmJ6ehxN7HGC73Wx4RuBkzDR7kHLTOXt7WxI6875ENT8mg==", + "version": "7.22.4", + "resolved": "https://registry.npmjs.org/@ant-design/pro-layout/-/pro-layout-7.22.4.tgz", + "integrity": "sha512-X2WO4L2itXemX4zhS+0NG+8kXQD5SX9sG+zjx/15BmIO3FvsUGqOHgoCg0vhd424EiyPj7WtdMZJ39G1xdgDwA==", "license": "MIT", "dependencies": { "@ant-design/cssinjs": "^1.21.1", "@ant-design/icons": "^5.0.0", - "@ant-design/pro-provider": "2.15.3", - "@ant-design/pro-utils": "2.16.4", + "@ant-design/pro-provider": "2.15.4", + "@ant-design/pro-utils": "2.17.0", "@babel/runtime": "^7.18.0", "@umijs/route-utils": "^4.0.0", "@umijs/use-params": "^1.0.9", @@ -1697,18 +1763,38 @@ "react-dom": ">=17.0.0" } }, + "node_modules/@ant-design/pro-layout/node_modules/@ant-design/icons": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.6.1.tgz", + "integrity": "sha512-0/xS39c91WjPAZOWsvi1//zjx6kAp4kxWwctR6kuU6p133w8RU0D2dSCvZC19uQyharg/sAvYxGYWl01BbZZfg==", + "license": "MIT", + "dependencies": { + "@ant-design/colors": "^7.0.0", + "@ant-design/icons-svg": "^4.4.0", + "@babel/runtime": "^7.24.8", + "classnames": "^2.2.6", + "rc-util": "^5.31.1" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, "node_modules/@ant-design/pro-list": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@ant-design/pro-list/-/pro-list-2.6.6.tgz", - "integrity": "sha512-Yea/KDd3kjOKklz1AHs66JGvtguvPYYFSaZFXW4m4VBjABHoaF6seo7ySW9UUWgwuoegdGtiglvleYv/rQoEcw==", + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/@ant-design/pro-list/-/pro-list-2.6.7.tgz", + "integrity": "sha512-6k/En7pioMgepho/1HMf2DAnkSTZiat1lDg2ggCok2lhSgqXzir7x22ewJQRgPvEiVb6/qqaFQNd7a8dnrFj1w==", "license": "MIT", "dependencies": { "@ant-design/cssinjs": "^1.21.1", "@ant-design/icons": "^5.0.0", - "@ant-design/pro-card": "2.9.6", - "@ant-design/pro-field": "3.0.3", - "@ant-design/pro-table": "3.18.6", - "@ant-design/pro-utils": "2.16.4", + "@ant-design/pro-card": "2.9.7", + "@ant-design/pro-field": "3.0.4", + "@ant-design/pro-table": "3.19.0", + "@ant-design/pro-utils": "2.17.0", "@babel/runtime": "^7.18.0", "classnames": "^2.3.2", "dayjs": "^1.11.10", @@ -1721,6 +1807,46 @@ "react-dom": ">=17.0.0" } }, + "node_modules/@ant-design/pro-list/node_modules/@ant-design/icons": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.6.1.tgz", + "integrity": "sha512-0/xS39c91WjPAZOWsvi1//zjx6kAp4kxWwctR6kuU6p133w8RU0D2dSCvZC19uQyharg/sAvYxGYWl01BbZZfg==", + "license": "MIT", + "dependencies": { + "@ant-design/colors": "^7.0.0", + "@ant-design/icons-svg": "^4.4.0", + "@babel/runtime": "^7.24.8", + "classnames": "^2.2.6", + "rc-util": "^5.31.1" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/@ant-design/pro-list/node_modules/@ant-design/icons/node_modules/rc-util": { + "version": "5.44.4", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.44.4.tgz", + "integrity": "sha512-resueRJzmHG9Q6rI/DfK6Kdv9/Lfls05vzMs1Sk3M2P+3cJa+MakaZyWY8IPfehVuhPJFKrIY1IK4GqbiaiY5w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "react-is": "^18.2.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@ant-design/pro-list/node_modules/@ant-design/icons/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, "node_modules/@ant-design/pro-list/node_modules/rc-util": { "version": "4.21.1", "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-4.21.1.tgz", @@ -1741,9 +1867,9 @@ "license": "MIT" }, "node_modules/@ant-design/pro-provider": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/@ant-design/pro-provider/-/pro-provider-2.15.3.tgz", - "integrity": "sha512-jUBCuRrhAXNMumSZ++704/zEg/7U1k2N3jMVBgtirvVaCAk5O9iZQKK4W3O3LRFc+D8yO16sXjsxhawvdGL4cA==", + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@ant-design/pro-provider/-/pro-provider-2.15.4.tgz", + "integrity": "sha512-DBX0JNUNOYXAucVqd/zTdqtXckCDqr2Lo85KIku2YzWdhptDPDZRTNqL04JShjGejDl8fzwQ8yREHgVUfzn6Gg==", "license": "MIT", "dependencies": { "@ant-design/cssinjs": "^1.21.1", @@ -1774,18 +1900,18 @@ } }, "node_modules/@ant-design/pro-table": { - "version": "3.18.6", - "resolved": "https://registry.npmjs.org/@ant-design/pro-table/-/pro-table-3.18.6.tgz", - "integrity": "sha512-ABXavpJWUOGGcer/WLBpRtzWCbfwZX3T8vAwMbLUQAl1xz3TTgkYzDDTcIdwUmtVdkgJUdWc8GdHWangWW30iQ==", + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@ant-design/pro-table/-/pro-table-3.19.0.tgz", + "integrity": "sha512-nL25734d5q5oqtmG7Apn2TNJUnJE8m9dkopXMQdoNZnv8qeRQLBH+i5cZT1yh7FIO8z6QLXleg+KnR/cI7VRRw==", "license": "MIT", "dependencies": { "@ant-design/cssinjs": "^1.21.1", "@ant-design/icons": "^5.0.0", - "@ant-design/pro-card": "2.9.6", - "@ant-design/pro-field": "3.0.3", - "@ant-design/pro-form": "2.31.6", - "@ant-design/pro-provider": "2.15.3", - "@ant-design/pro-utils": "2.16.4", + "@ant-design/pro-card": "2.9.7", + "@ant-design/pro-field": "3.0.4", + "@ant-design/pro-form": "2.31.7", + "@ant-design/pro-provider": "2.15.4", + "@ant-design/pro-utils": "2.17.0", "@babel/runtime": "^7.18.0", "@dnd-kit/core": "^6.0.8", "@dnd-kit/modifiers": "^6.0.1", @@ -1805,14 +1931,34 @@ "react-dom": ">=17.0.0" } }, + "node_modules/@ant-design/pro-table/node_modules/@ant-design/icons": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.6.1.tgz", + "integrity": "sha512-0/xS39c91WjPAZOWsvi1//zjx6kAp4kxWwctR6kuU6p133w8RU0D2dSCvZC19uQyharg/sAvYxGYWl01BbZZfg==", + "license": "MIT", + "dependencies": { + "@ant-design/colors": "^7.0.0", + "@ant-design/icons-svg": "^4.4.0", + "@babel/runtime": "^7.24.8", + "classnames": "^2.2.6", + "rc-util": "^5.31.1" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, "node_modules/@ant-design/pro-utils": { - "version": "2.16.4", - "resolved": "https://registry.npmjs.org/@ant-design/pro-utils/-/pro-utils-2.16.4.tgz", - "integrity": "sha512-PFxqF0fsUsLj8ORvJSuMgVv9NDHwAxZaglzPN/u3jZX7rWYcrHD04EMJEXooZaSyT6Q4+j7SqXDx6oBsdb9zNw==", + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@ant-design/pro-utils/-/pro-utils-2.17.0.tgz", + "integrity": "sha512-hHKUISjMEoS+E5ltJWyvNTrlEA3IimZNxtDrEhorRIbgVYAlmEN5Mj/ESSofzDM3+UlxiI5+A/Y6IHkByTfDEA==", "license": "MIT", "dependencies": { "@ant-design/icons": "^5.0.0", - "@ant-design/pro-provider": "2.15.3", + "@ant-design/pro-provider": "2.15.4", "@babel/runtime": "^7.18.0", "classnames": "^2.3.2", "dayjs": "^1.11.10", @@ -1828,6 +1974,26 @@ "react-dom": ">=17.0.0" } }, + "node_modules/@ant-design/pro-utils/node_modules/@ant-design/icons": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.6.1.tgz", + "integrity": "sha512-0/xS39c91WjPAZOWsvi1//zjx6kAp4kxWwctR6kuU6p133w8RU0D2dSCvZC19uQyharg/sAvYxGYWl01BbZZfg==", + "license": "MIT", + "dependencies": { + "@ant-design/colors": "^7.0.0", + "@ant-design/icons-svg": "^4.4.0", + "@babel/runtime": "^7.24.8", + "classnames": "^2.2.6", + "rc-util": "^5.31.1" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, "node_modules/@ant-design/react-slick": { "version": "1.0.2", "license": "MIT", @@ -1904,6 +2070,7 @@ "version": "0.1.26", "resolved": "https://registry.npmjs.org/@antv/algorithm/-/algorithm-0.1.26.tgz", "integrity": "sha512-DVhcFSQ8YQnMNW34Mk8BSsfc61iC1sAnmcfYoXTAshYHuU50p/6b7x3QYaGctDNKWGvi1ub7mPcSY0bK+aN0qg==", + "license": "MIT", "dependencies": { "@antv/util": "^2.0.13", "tslib": "^2.0.0" @@ -1913,6 +2080,7 @@ "version": "2.0.17", "resolved": "https://registry.npmjs.org/@antv/util/-/util-2.0.17.tgz", "integrity": "sha512-o6I9hi5CIUvLGDhth0RxNSFDRwXeywmt6ExR4+RmVAzIi48ps6HUy+svxOCayvrPBN37uE6TAc2KDofRo0nK9Q==", + "license": "ISC", "dependencies": { "csstype": "^3.0.8", "tslib": "^2.0.3" @@ -2264,13 +2432,13 @@ } }, "node_modules/@antv/g-plugin-svg-picker": { - "version": "2.0.34", - "resolved": "https://registry.npmjs.org/@antv/g-plugin-svg-picker/-/g-plugin-svg-picker-2.0.34.tgz", - "integrity": "sha512-++TjTwG832tvqjP3wlEJwkZvWH/lVHxMZQDG/3knUrkUAQfNNGiEQDIjDhwzUgkYd+J48cTZiVNHzmIZM9rbrQ==", + "version": "2.0.35", + "resolved": "https://registry.npmjs.org/@antv/g-plugin-svg-picker/-/g-plugin-svg-picker-2.0.35.tgz", + "integrity": "sha512-mNUwNTIjwSAN45pxS8rvhHcsjVdq9onzQgYgZhMAHgBnCTY+0iYTxWBc8b8tAjGhptBE543VSPyyXs4q7arvOw==", "license": "MIT", "dependencies": { "@antv/g-lite": "2.2.16", - "@antv/g-plugin-svg-renderer": "2.2.16", + "@antv/g-plugin-svg-renderer": "2.2.17", "@babel/runtime": "^7.25.6", "tslib": "^2.5.3" } @@ -2292,9 +2460,9 @@ } }, "node_modules/@antv/g-plugin-svg-renderer": { - "version": "2.2.16", - "resolved": "https://registry.npmjs.org/@antv/g-plugin-svg-renderer/-/g-plugin-svg-renderer-2.2.16.tgz", - "integrity": "sha512-d/zZV+af8e1p1kEvRGtC57dXPZbHKKlyJ12jfnUlEFT+GhKpX3LNehc0LiO81dbpEsiZK9ffqJZMQrqsVAPWZg==", + "version": "2.2.17", + "resolved": "https://registry.npmjs.org/@antv/g-plugin-svg-renderer/-/g-plugin-svg-renderer-2.2.17.tgz", + "integrity": "sha512-45GS2OrHh73s1Cs9nVHQpEA2459VsAG7bu77In6GUwAJimFOpsDxZi71WhGa9Sik1AyHEmRH7V+fYSTGFTZHoQ==", "license": "MIT", "dependencies": { "@antv/g-lite": "2.2.16", @@ -2431,7 +2599,9 @@ } }, "node_modules/@antv/g2plot": { - "version": "2.4.32", + "version": "2.4.33", + "resolved": "https://registry.npmjs.org/@antv/g2plot/-/g2plot-2.4.33.tgz", + "integrity": "sha512-f3Fx3IL2nC3jZR2InoY5tSpouA06Lpa7vAHehkFPwmwaSV6gVGfmp08z/LGg6EAaqPP7I58c/UrGZVTD+61qzw==", "license": "MIT", "dependencies": { "@antv/color-util": "^2.0.6", @@ -2592,9 +2762,9 @@ "license": "BSD-3-Clause" }, "node_modules/@antv/g6": { - "version": "5.0.43", - "resolved": "https://registry.npmjs.org/@antv/g6/-/g6-5.0.43.tgz", - "integrity": "sha512-xlx3P5G74gMhQII44RrWHtu+RIXIwxRRGxeozkd0iqteBdbcpGfGHCRH6TH8Qd084i6GIXc9C1Z1n0XOJlz/uQ==", + "version": "5.0.44", + "resolved": "https://registry.npmjs.org/@antv/g6/-/g6-5.0.44.tgz", + "integrity": "sha512-aYZB5ifySJU/XXu1pdA2AvzsLvxsn1qKmzxwFmWNJBubiPYLvMOD9BFhRgWRZmVciBdQSjcx1HQu3jpU3m/EqA==", "license": "MIT", "dependencies": { "@antv/algorithm": "^0.1.26", @@ -2612,17 +2782,16 @@ } }, "node_modules/@antv/g6-extension-react": { - "version": "0.1.18", - "resolved": "https://registry.npmjs.org/@antv/g6-extension-react/-/g6-extension-react-0.1.18.tgz", - "integrity": "sha512-p1hkm6gc6gPp//6alRr6gcERUX0mZQ5KxxErJWy8pCGnuSHr5oDo2Pqq7ugyK6hhH5i/zxebNTnM9uXDvMUiJA==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@antv/g6-extension-react/-/g6-extension-react-0.2.0.tgz", + "integrity": "sha512-3b4QnxdhWUqYqN9b3pa4gIoJoJ3gKZDzQw+J7W8GY6k0P8mnYxG4YU9nsVpMAqEQNdCK7NTfIhcdz4I3P47/sA==", "license": "MIT", "dependencies": { "@antv/g": "^6.1.14", - "@antv/g-svg": "^2.0.27", - "@antv/react-g": "^2.0.30" + "@antv/g-svg": "^2.0.27" }, "peerDependencies": { - "@antv/g6": "^5.0.43", + "@antv/g6": "^5.0.44", "react": ">=16.8", "react-dom": ">=16.8" } @@ -2655,69 +2824,38 @@ } }, "node_modules/@antv/g6-extension-react/node_modules/@antv/g-svg": { - "version": "2.0.34", - "resolved": "https://registry.npmjs.org/@antv/g-svg/-/g-svg-2.0.34.tgz", - "integrity": "sha512-jx8BGZ1cNugbI8YMvJXabVauAj++Agzj6YUomTLjz7EE6K9rYwgqRb2YSV7NoRGGTfMqfIcYu+qMCoBWWsNEPg==", + "version": "2.0.35", + "resolved": "https://registry.npmjs.org/@antv/g-svg/-/g-svg-2.0.35.tgz", + "integrity": "sha512-EyrpQ4t1WwWoPFuI1y+nLSPgOCnOauk7rVDAIr2dnOMVQgkReoXmpGdcd0hXaH5hPCYTEqVuxyDzwvv6v1YMtA==", "license": "MIT", "dependencies": { "@antv/g-lite": "2.2.16", "@antv/g-plugin-dom-interaction": "2.1.21", - "@antv/g-plugin-svg-picker": "2.0.34", - "@antv/g-plugin-svg-renderer": "2.2.16", + "@antv/g-plugin-svg-picker": "2.0.35", + "@antv/g-plugin-svg-renderer": "2.2.17", "@antv/util": "^3.3.5", "@babel/runtime": "^7.25.6", "tslib": "^2.5.3" } }, - "node_modules/@antv/g6-extension-react/node_modules/@antv/react-g": { - "version": "2.0.37", - "resolved": "https://registry.npmjs.org/@antv/react-g/-/react-g-2.0.37.tgz", - "integrity": "sha512-qXued1ZtJHdf8d6aApMLCMHFCZI0lLTjpv6vEpbUWHOGjHolwDTilQy/207UXu2nFd8VbJvnPNnvVyicWFmiKw==", - "license": "MIT", - "dependencies": { - "@antv/g": "6.1.21", - "@antv/util": "^3.3.5", - "@babel/runtime": "^7.25.6", - "gl-matrix": "^3.4.3", - "react-reconciler": "^0.26.2", - "scheduler": "^0.20.2", - "tslib": "^2.5.3" - }, - "peerDependencies": { - "react": "^16.13.1" - } - }, - "node_modules/@antv/g6-extension-react/node_modules/@antv/react-g/node_modules/react-reconciler": { - "version": "0.26.2", - "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.26.2.tgz", - "integrity": "sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q==", + "node_modules/@antv/graphin": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@antv/graphin/-/graphin-3.0.4.tgz", + "integrity": "sha512-7ce6RDI5Z6ud93yiyS7b+mmFrHJhlkwwNo53kb7P7KoCsnV7ioMONDE6Gw0ROeMSR6TwHtxGZUhHw9wxnPp82Q==", "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - }, - "engines": { - "node": ">=0.10.0" + "@antv/g6": "^5.0.28" }, "peerDependencies": { - "react": "^17.0.2" - } - }, - "node_modules/@antv/g6-extension-react/node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, "node_modules/@antv/graphlib": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@antv/graphlib/-/graphlib-2.0.4.tgz", "integrity": "sha512-zc/5oQlsdk42Z0ib1mGklwzhJ5vczLFiPa1v7DgJkTbgJ2YxRh9xdarf86zI49sKVJmgbweRpJs7Nu5bIiwv4w==", + "license": "MIT", "dependencies": { "@antv/event-emitter": "^0.1.3" } @@ -2725,12 +2863,14 @@ "node_modules/@antv/hierarchy": { "version": "0.6.14", "resolved": "https://registry.npmjs.org/@antv/hierarchy/-/hierarchy-0.6.14.tgz", - "integrity": "sha512-V3uknf7bhynOqQDw2sg+9r9DwZ9pc6k/EcqyTFdfXB1+ydr7urisP0MipIuimucvQKN+Qkd+d6w601r1UIroqQ==" + "integrity": "sha512-V3uknf7bhynOqQDw2sg+9r9DwZ9pc6k/EcqyTFdfXB1+ydr7urisP0MipIuimucvQKN+Qkd+d6w601r1UIroqQ==", + "license": "MIT" }, "node_modules/@antv/layout": { "version": "1.2.14-beta.9", "resolved": "https://registry.npmjs.org/@antv/layout/-/layout-1.2.14-beta.9.tgz", "integrity": "sha512-wPlwBFMtq2lWZFc89/7Lzb8fjHnyKVZZ9zBb2h+zZIP0YWmVmHRE8+dqCiPKOyOGUXEdDtn813f1g107dCHZlg==", + "license": "MIT", "dependencies": { "@antv/event-emitter": "^0.1.3", "@antv/graphlib": "^2.0.0", @@ -2956,13 +3096,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.8.tgz", - "integrity": "sha512-ef383X5++iZHWAXX0SXQR6ZyQhw/0KtTkrTz61WXRhFM6dhpHulO/RJz79L8S6ugZHJkOOkUrUdxgdF2YiPFnA==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", + "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.8", - "@babel/types": "^7.26.8", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -3017,17 +3157,17 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", - "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.0.tgz", + "integrity": "sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==", "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-member-expression-to-functions": "^7.25.9", "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-replace-supers": "^7.26.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/traverse": "^7.25.9", + "@babel/traverse": "^7.27.0", "semver": "^6.3.1" }, "engines": { @@ -3166,14 +3306,14 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", - "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", + "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", "license": "MIT", "dependencies": { "@babel/helper-member-expression-to-functions": "^7.25.9", "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/traverse": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -3332,12 +3472,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.8.tgz", - "integrity": "sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", + "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", "license": "MIT", "dependencies": { - "@babel/types": "^7.26.8" + "@babel/types": "^7.27.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -4494,14 +4634,14 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.9.tgz", - "integrity": "sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.0.tgz", + "integrity": "sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==", "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.27.0", + "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", "@babel/plugin-syntax-typescript": "^7.25.9" }, @@ -4698,16 +4838,16 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz", - "integrity": "sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.0.tgz", + "integrity": "sha512-vxaPFfJtHhgeOVXRKuHpHPAOgymmy8V8I65T1q53R7GCZlefKeCaTyDs3zOPHTTbmquvNlQYC5klEvWsBAtrBQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", "@babel/plugin-syntax-jsx": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.25.9", - "@babel/plugin-transform-typescript": "^7.25.9" + "@babel/plugin-transform-modules-commonjs": "^7.26.3", + "@babel/plugin-transform-typescript": "^7.27.0" }, "engines": { "node": ">=6.9.0" @@ -4729,30 +4869,30 @@ } }, "node_modules/@babel/template": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.8.tgz", - "integrity": "sha512-iNKaX3ZebKIsCvJ+0jd6embf+Aulaa3vNBqZ41kM7iTWjx5qzWKXGHiJUW3+nTpQ18SG11hdF8OAzKrpXkb96Q==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", + "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.26.8", - "@babel/types": "^7.26.8" + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.8.tgz", - "integrity": "sha512-nic9tRkjYH0oB2dzr/JoGIm+4Q6SuYeLEiIiZDwBscRMYFJ+tMAz98fuel9ZnbXViA2I0HVSSRRK8DW5fjXStA==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", + "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.8", - "@babel/parser": "^7.26.8", - "@babel/template": "^7.26.8", - "@babel/types": "^7.26.8", + "@babel/generator": "^7.27.0", + "@babel/parser": "^7.27.0", + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -4761,9 +4901,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.8.tgz", - "integrity": "sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", + "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.25.9", @@ -6000,9 +6140,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", - "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz", + "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==", "cpu": [ "arm64" ], @@ -6012,7 +6152,6 @@ "os": [ "netbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -6034,9 +6173,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", - "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz", + "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==", "cpu": [ "arm64" ], @@ -6046,7 +6185,6 @@ "os": [ "openbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -6152,9 +6290,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", - "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6234,9 +6372,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.21.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.21.0.tgz", - "integrity": "sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==", + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz", + "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==", "dev": true, "license": "MIT", "engines": { @@ -7002,23 +7140,69 @@ "license": "MIT" }, "node_modules/@lottiefiles/dotlottie-react": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@lottiefiles/dotlottie-react/-/dotlottie-react-0.13.0.tgz", - "integrity": "sha512-zSOqA/P6MAOjHWTBiQd2T/NAbIFDVM2rsCSVHjjBHvYZ1yB5ehdggUBVnj83Fb99xAgCdcHYWTC1c9Yl70zxMg==", + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/@lottiefiles/dotlottie-react/-/dotlottie-react-0.13.3.tgz", + "integrity": "sha512-V4FfdYlqzjBUX7f0KV6vfQOOI0Cp+3XeG/ZqSDFSEVg5P7fpROpDv5/I9aTM8sOCESK1SWT96Fem+QVUnBV1wQ==", "license": "MIT", "dependencies": { - "@lottiefiles/dotlottie-web": "0.40.1" + "@lottiefiles/dotlottie-web": "0.42.0" }, "peerDependencies": { "react": "^17 || ^18 || ^19" } }, "node_modules/@lottiefiles/dotlottie-web": { - "version": "0.40.1", - "resolved": "https://registry.npmjs.org/@lottiefiles/dotlottie-web/-/dotlottie-web-0.40.1.tgz", - "integrity": "sha512-iNz1rr8zRTSJ0xCZEPeoCX6YnaNhBdkF7gJWhSa8bwB4NTrYZm0vAuC0jF/aLLhU7q9nf6ykxffrz0Sf4JPSPg==", + "version": "0.42.0", + "resolved": "https://registry.npmjs.org/@lottiefiles/dotlottie-web/-/dotlottie-web-0.42.0.tgz", + "integrity": "sha512-Zr2LCaOAoPCsdAQgeLyCSiQ1+xrAJtRCyuEYDj0qR5heUwpc+Pxbb88JyTVumcXFfKOBMOMmrlsTScLz2mrvQQ==", + "license": "MIT" + }, + "node_modules/@module-federation/error-codes": { + "version": "0.8.12", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.8.12.tgz", + "integrity": "sha512-K+F4iiV62KY+IpjK6ggn3vI5Yt/T/LUb6xuazY78bhAGwLaHe1DYr7BfSutKMpiB+Dcs6U4dYOBogSMnnl0j4Q==", "license": "MIT" }, + "node_modules/@module-federation/runtime": { + "version": "0.8.12", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.8.12.tgz", + "integrity": "sha512-eYohRfambj/qzxz6tEakDn459ROcixWO4zL5gmTEOmwG+jCDnxGR14j1guopyrrpjb6EKFNrPVWtYZTPPfGdQQ==", + "license": "MIT", + "dependencies": { + "@module-federation/error-codes": "0.8.12", + "@module-federation/runtime-core": "0.6.20", + "@module-federation/sdk": "0.8.12" + } + }, + "node_modules/@module-federation/runtime-core": { + "version": "0.6.20", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.6.20.tgz", + "integrity": "sha512-rX7sd/i7tpkAbfMD4TtFt/57SWNC/iv7UYS8g+ad7mnCJggWE1YEKsKSFgcvp4zU3thwR+j2y+kOCwd1sQvxEA==", + "license": "MIT", + "dependencies": { + "@module-federation/error-codes": "0.8.12", + "@module-federation/sdk": "0.8.12" + } + }, + "node_modules/@module-federation/sdk": { + "version": "0.8.12", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.8.12.tgz", + "integrity": "sha512-zFgXYBHbzwIqlrLfn6ewIRXDZCctDDQT2nFhbsZr29yWQgpmW1fm2kJCxQsG0DENGGN1KpzfDoxjjvSKJS/ZHA==", + "license": "MIT", + "dependencies": { + "isomorphic-rslog": "0.0.7" + } + }, + "node_modules/@module-federation/webpack-bundler-runtime": { + "version": "0.8.12", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.8.12.tgz", + "integrity": "sha512-zd343RO7/R7Xjh5ym5KdnYQ70z4LBmMxWsa44FS0nyNv04sOq6V1eZSCGKbEhbfqqhbS5Wfj8OzJyedeVvV/OQ==", + "license": "MIT", + "dependencies": { + "@module-federation/runtime": "0.8.12", + "@module-federation/sdk": "0.8.12" + } + }, "node_modules/@monaco-editor/loader": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.5.0.tgz", @@ -7046,6 +7230,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/@naoak/workerize-transferable/-/workerize-transferable-0.1.0.tgz", "integrity": "sha512-fDLfuP71IPNP5+zSfxFb52OHgtjZvauRJWbVnpzQ7G7BjcbLjTny0OW1d3ZO806XKpLWNKmeeW3MhE0sy8iwYQ==", + "license": "MIT", "peerDependencies": { "workerize-loader": "*" } @@ -8002,6 +8187,25 @@ "react-dom": ">=16.9.0" } }, + "node_modules/@rc-component/util": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@rc-component/util/-/util-1.2.1.tgz", + "integrity": "sha512-AUVu6jO+lWjQnUOOECwu8iR0EdElQgWW5NBv5vP/Uf9dWbAX3udhMutRlkVXjuac2E40ghkFy+ve00mc/3Fymg==", + "license": "MIT", + "dependencies": { + "react-is": "^18.2.0" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/@rc-component/util/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, "node_modules/@react-dev-inspector/babel-plugin": { "version": "2.0.1", "license": "MIT", @@ -8079,9 +8283,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.8.tgz", - "integrity": "sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.38.0.tgz", + "integrity": "sha512-ldomqc4/jDZu/xpYU+aRxo3V4mGCV9HeTgUBANI3oIQMOL+SsxB+S2lxMpkFp5UamSS3XuTMQVbsS24R4J4Qjg==", "cpu": [ "arm" ], @@ -8093,9 +8297,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.8.tgz", - "integrity": "sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.38.0.tgz", + "integrity": "sha512-VUsgcy4GhhT7rokwzYQP+aV9XnSLkkhlEJ0St8pbasuWO/vwphhZQxYEKUP3ayeCYLhk6gEtacRpYP/cj3GjyQ==", "cpu": [ "arm64" ], @@ -8107,9 +8311,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.8.tgz", - "integrity": "sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.38.0.tgz", + "integrity": "sha512-buA17AYXlW9Rn091sWMq1xGUvWQFOH4N1rqUxGJtEQzhChxWjldGCCup7r/wUnaI6Au8sKXpoh0xg58a7cgcpg==", "cpu": [ "arm64" ], @@ -8121,9 +8325,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.8.tgz", - "integrity": "sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.38.0.tgz", + "integrity": "sha512-Mgcmc78AjunP1SKXl624vVBOF2bzwNWFPMP4fpOu05vS0amnLcX8gHIge7q/lDAHy3T2HeR0TqrriZDQS2Woeg==", "cpu": [ "x64" ], @@ -8135,9 +8339,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.8.tgz", - "integrity": "sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.38.0.tgz", + "integrity": "sha512-zzJACgjLbQTsscxWqvrEQAEh28hqhebpRz5q/uUd1T7VTwUNZ4VIXQt5hE7ncs0GrF+s7d3S4on4TiXUY8KoQA==", "cpu": [ "arm64" ], @@ -8149,9 +8353,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.8.tgz", - "integrity": "sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.38.0.tgz", + "integrity": "sha512-hCY/KAeYMCyDpEE4pTETam0XZS4/5GXzlLgpi5f0IaPExw9kuB+PDTOTLuPtM10TlRG0U9OSmXJ+Wq9J39LvAg==", "cpu": [ "x64" ], @@ -8163,9 +8367,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.8.tgz", - "integrity": "sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.38.0.tgz", + "integrity": "sha512-mimPH43mHl4JdOTD7bUMFhBdrg6f9HzMTOEnzRmXbOZqjijCw8LA5z8uL6LCjxSa67H2xiLFvvO67PT05PRKGg==", "cpu": [ "arm" ], @@ -8177,9 +8381,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.8.tgz", - "integrity": "sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.38.0.tgz", + "integrity": "sha512-tPiJtiOoNuIH8XGG8sWoMMkAMm98PUwlriOFCCbZGc9WCax+GLeVRhmaxjJtz6WxrPKACgrwoZ5ia/uapq3ZVg==", "cpu": [ "arm" ], @@ -8191,9 +8395,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.8.tgz", - "integrity": "sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.38.0.tgz", + "integrity": "sha512-wZco59rIVuB0tjQS0CSHTTUcEde+pXQWugZVxWaQFdQQ1VYub/sTrNdY76D1MKdN2NB48JDuGABP6o6fqos8mA==", "cpu": [ "arm64" ], @@ -8205,9 +8409,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.8.tgz", - "integrity": "sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.38.0.tgz", + "integrity": "sha512-fQgqwKmW0REM4LomQ+87PP8w8xvU9LZfeLBKybeli+0yHT7VKILINzFEuggvnV9M3x1Ed4gUBmGUzCo/ikmFbQ==", "cpu": [ "arm64" ], @@ -8219,9 +8423,9 @@ ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.8.tgz", - "integrity": "sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.38.0.tgz", + "integrity": "sha512-hz5oqQLXTB3SbXpfkKHKXLdIp02/w3M+ajp8p4yWOWwQRtHWiEOCKtc9U+YXahrwdk+3qHdFMDWR5k+4dIlddg==", "cpu": [ "loong64" ], @@ -8233,9 +8437,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.8.tgz", - "integrity": "sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.38.0.tgz", + "integrity": "sha512-NXqygK/dTSibQ+0pzxsL3r4Xl8oPqVoWbZV9niqOnIHV/J92fe65pOir0xjkUZDRSPyFRvu+4YOpJF9BZHQImw==", "cpu": [ "ppc64" ], @@ -8247,9 +8451,23 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.8.tgz", - "integrity": "sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.38.0.tgz", + "integrity": "sha512-GEAIabR1uFyvf/jW/5jfu8gjM06/4kZ1W+j1nWTSSB3w6moZEBm7iBtzwQ3a1Pxos2F7Gz+58aVEnZHU295QTg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.38.0.tgz", + "integrity": "sha512-9EYTX+Gus2EGPbfs+fh7l95wVADtSQyYw4DfSBcYdUEAmP2lqSZY0Y17yX/3m5VKGGJ4UmIH5LHLkMJft3bYoA==", "cpu": [ "riscv64" ], @@ -8261,9 +8479,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.8.tgz", - "integrity": "sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.38.0.tgz", + "integrity": "sha512-Mpp6+Z5VhB9VDk7RwZXoG2qMdERm3Jw07RNlXHE0bOnEeX+l7Fy4bg+NxfyN15ruuY3/7Vrbpm75J9QHFqj5+Q==", "cpu": [ "s390x" ], @@ -8275,9 +8493,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.8.tgz", - "integrity": "sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.38.0.tgz", + "integrity": "sha512-vPvNgFlZRAgO7rwncMeE0+8c4Hmc+qixnp00/Uv3ht2x7KYrJ6ERVd3/R0nUtlE6/hu7/HiiNHJ/rP6knRFt1w==", "cpu": [ "x64" ], @@ -8289,9 +8507,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.8.tgz", - "integrity": "sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.38.0.tgz", + "integrity": "sha512-q5Zv+goWvQUGCaL7fU8NuTw8aydIL/C9abAVGCzRReuj5h30TPx4LumBtAidrVOtXnlB+RZkBtExMsfqkMfb8g==", "cpu": [ "x64" ], @@ -8303,9 +8521,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.8.tgz", - "integrity": "sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.38.0.tgz", + "integrity": "sha512-u/Jbm1BU89Vftqyqbmxdq14nBaQjQX1HhmsdBWqSdGClNaKwhjsg5TpW+5Ibs1mb8Es9wJiMdl86BcmtUVXNZg==", "cpu": [ "arm64" ], @@ -8317,9 +8535,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.8.tgz", - "integrity": "sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.38.0.tgz", + "integrity": "sha512-mqu4PzTrlpNHHbu5qleGvXJoGgHpChBlrBx/mEhTPpnAL1ZAYFlvHD7rLK839LLKQzqEQMFJfGrrOHItN4ZQqA==", "cpu": [ "ia32" ], @@ -8331,9 +8549,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.8.tgz", - "integrity": "sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.38.0.tgz", + "integrity": "sha512-jjqy3uWlecfB98Psxb5cD6Fny9Fupv9LrDSPTQZUROqjvZmcCqNu4UMl7qqhlUUGpwiAkotj6GYu4SZdcr/nLw==", "cpu": [ "x64" ], @@ -8984,9 +9202,9 @@ "license": "MIT" }, "node_modules/@testing-library/react": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.2.0.tgz", - "integrity": "sha512-2cSskAvA1QNtKc8Y9VJQRv0tm3hLVgxRGDB+KYhIaPQJ1I+RHbhIXcM+zClKXzMes/wshsMVzf4B9vS4IZpqDQ==", + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.0.tgz", + "integrity": "sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==", "dev": true, "license": "MIT", "dependencies": { @@ -9250,9 +9468,9 @@ } }, "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", "license": "MIT" }, "node_modules/@types/expect": { @@ -9261,13 +9479,14 @@ "license": "MIT" }, "node_modules/@types/express": { - "version": "5.0.0", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.1.tgz", + "integrity": "sha512-UZUw8vjpWFXuDnjFTh7/5c2TWDlQqeXHi6hcN7F2XSVT5P+WmUnnbFS3KA6Jnc6IsEqI2qCVu2bK0R0J4A8ZQQ==", "dev": true, "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^5.0.0", - "@types/qs": "*", "@types/serve-static": "*" } }, @@ -9417,14 +9636,16 @@ "license": "MIT" }, "node_modules/@types/lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-w/P33JFeySuhN6JLkysYUK2gEmy9kHHFN7E8ro0tkfmlDOgxBDzWEZ/J8cWA+fHqFevpswDTFZnDx+R9lbL6xw==", + "version": "4.17.16", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.16.tgz", + "integrity": "sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==", "dev": true, "license": "MIT" }, "node_modules/@types/luxon": { - "version": "3.4.2", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.6.2.tgz", + "integrity": "sha512-R/BdP7OxEMc44l2Ex5lSXHoIXTB2JLNa3y2QISIbr58U/YcsffyQrYW//hZSdrfxrjRZj3GcUoxMPGdO8gSYuw==", "dev": true, "license": "MIT" }, @@ -9668,17 +9889,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.1.tgz", - "integrity": "sha512-ll1StnKtBigWIGqvYDVuDmXJHVH4zLVot1yQ4fJtLpL7qacwkxJc1T0bptqw+miBQ/QfUbhl1TcQ4accW5KUyA==", + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.28.0.tgz", + "integrity": "sha512-lvFK3TCGAHsItNdWZ/1FkvpzCxTHUVuFrdnOGLMa0GGCFIbCgQWVk3CzCGdA7kM3qGVc+dfW9tr0Z/sHnGDFyg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.24.1", - "@typescript-eslint/type-utils": "8.24.1", - "@typescript-eslint/utils": "8.24.1", - "@typescript-eslint/visitor-keys": "8.24.1", + "@typescript-eslint/scope-manager": "8.28.0", + "@typescript-eslint/type-utils": "8.28.0", + "@typescript-eslint/utils": "8.28.0", + "@typescript-eslint/visitor-keys": "8.28.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -9694,18 +9915,18 @@ "peerDependencies": { "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.1.tgz", - "integrity": "sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==", + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.28.0.tgz", + "integrity": "sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.24.1", - "@typescript-eslint/visitor-keys": "8.24.1" + "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/visitor-keys": "8.28.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -9716,14 +9937,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.24.1.tgz", - "integrity": "sha512-/Do9fmNgCsQ+K4rCz0STI7lYB4phTtEXqqCAs3gZW0pnK7lWNkvWd5iW545GSmApm4AzmQXmSqXPO565B4WVrw==", + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.28.0.tgz", + "integrity": "sha512-oRoXu2v0Rsy/VoOGhtWrOKDiIehvI+YNrDk5Oqj40Mwm0Yt01FC/Q7nFqg088d3yAsR1ZcZFVfPCTTFCe/KPwg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.24.1", - "@typescript-eslint/utils": "8.24.1", + "@typescript-eslint/typescript-estree": "8.28.0", + "@typescript-eslint/utils": "8.28.0", "debug": "^4.3.4", "ts-api-utils": "^2.0.1" }, @@ -9736,13 +9957,13 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.1.tgz", - "integrity": "sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==", + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.28.0.tgz", + "integrity": "sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==", "dev": true, "license": "MIT", "engines": { @@ -9754,14 +9975,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.1.tgz", - "integrity": "sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==", + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.28.0.tgz", + "integrity": "sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.24.1", - "@typescript-eslint/visitor-keys": "8.24.1", + "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/visitor-keys": "8.28.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -9777,17 +9998,17 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.1.tgz", - "integrity": "sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==", + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.28.0.tgz", + "integrity": "sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.24.1", + "@typescript-eslint/types": "8.28.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -9812,9 +10033,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/ts-api-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", - "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, "license": "MIT", "engines": { @@ -10137,16 +10358,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.24.1.tgz", - "integrity": "sha512-OOcg3PMMQx9EXspId5iktsI3eMaXVwlhC8BvNnX6B5w9a4dVgpkQZuU8Hy67TolKcl+iFWq0XX+jbDGN4xWxjQ==", + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.28.0.tgz", + "integrity": "sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.24.1", - "@typescript-eslint/types": "8.24.1", - "@typescript-eslint/typescript-estree": "8.24.1" + "@typescript-eslint/scope-manager": "8.28.0", + "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/typescript-estree": "8.28.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -10157,18 +10378,18 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.1.tgz", - "integrity": "sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==", + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.28.0.tgz", + "integrity": "sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.24.1", - "@typescript-eslint/visitor-keys": "8.24.1" + "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/visitor-keys": "8.28.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -10179,9 +10400,9 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.1.tgz", - "integrity": "sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==", + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.28.0.tgz", + "integrity": "sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==", "dev": true, "license": "MIT", "engines": { @@ -10193,14 +10414,14 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.1.tgz", - "integrity": "sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==", + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.28.0.tgz", + "integrity": "sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.24.1", - "@typescript-eslint/visitor-keys": "8.24.1", + "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/visitor-keys": "8.28.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -10216,17 +10437,17 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.1.tgz", - "integrity": "sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==", + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.28.0.tgz", + "integrity": "sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.24.1", + "@typescript-eslint/types": "8.28.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -10251,9 +10472,9 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/ts-api-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", - "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, "license": "MIT", "engines": { @@ -10554,15 +10775,15 @@ "peer": true }, "node_modules/@umijs/babel-preset-umi": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@umijs/babel-preset-umi/-/babel-preset-umi-4.4.5.tgz", - "integrity": "sha512-7tiF0ZBG1U2gslb6rIFWUW4QmtIp10H0+QfvrUdryjq3+er/IE0brHFNyd6GehSUgxwHKX9vui5LVB8ERJnOFg==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@umijs/babel-preset-umi/-/babel-preset-umi-4.4.6.tgz", + "integrity": "sha512-SsQezW0JKAUGF9xi4LM1Kx10D4OZBkg7krqATz9Qvtvods1B3MPwRVg4tjAtZCJn5/46Wl12VgQfqxNUcVIQ3A==", "license": "MIT", "dependencies": { "@babel/runtime": "7.23.6", "@bloomberg/record-tuple-polyfill": "0.0.4", - "@umijs/bundler-utils": "4.4.5", - "@umijs/utils": "4.4.5", + "@umijs/bundler-utils": "4.4.6", + "@umijs/utils": "4.4.6", "core-js": "3.34.0" } }, @@ -10579,13 +10800,13 @@ } }, "node_modules/@umijs/bundler-esbuild": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@umijs/bundler-esbuild/-/bundler-esbuild-4.4.5.tgz", - "integrity": "sha512-/ftn0VALj2Kb25Qbw9UrwfsIQYzMnKmWlfYzI7N6jJD7z5bbGy5J+juTIbP1zLGbQrwU1gWD+n0FTXwt7CfoHg==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@umijs/bundler-esbuild/-/bundler-esbuild-4.4.6.tgz", + "integrity": "sha512-H68yEMdYiRzDLxtAxv/UV07j0Cv8Fhj8/lcAcAspJwl78fjNKz+Qe3wprn9SJWT+lQELQxW9HENUJBzdybY+XQ==", "license": "MIT", "dependencies": { - "@umijs/bundler-utils": "4.4.5", - "@umijs/utils": "4.4.5", + "@umijs/bundler-utils": "4.4.6", + "@umijs/utils": "4.4.6", "enhanced-resolve": "5.9.3", "postcss": "^8.4.21", "postcss-flexbugs-fixes": "5.0.2", @@ -10612,9 +10833,9 @@ } }, "node_modules/@umijs/bundler-esbuild/node_modules/autoprefixer": { - "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", "funding": [ { "type": "opencollective", @@ -10631,11 +10852,11 @@ ], "license": "MIT", "dependencies": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", + "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -11231,12 +11452,12 @@ } }, "node_modules/@umijs/bundler-mako": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/@umijs/bundler-mako/-/bundler-mako-0.11.4.tgz", - "integrity": "sha512-WWw47jJbApEj4ytPeN4W234/vDEn5sZFZsYJ5zFWnrngvY52VRhQeFx1y0HRoDH1pH9IrkYhYxcg426exa7G7Q==", + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/@umijs/bundler-mako/-/bundler-mako-0.11.5.tgz", + "integrity": "sha512-BjEgctdazw5t5ROfbbqlkar2ZkvS4raYLH7dwZGGH9cVFX7cSOwstp7SKKUx6dKIiSyWo1+wUaBf1pq5qD73vQ==", "dependencies": { "@umijs/bundler-utils": "^4.0.81", - "@umijs/mako": "0.11.4", + "@umijs/mako": "0.11.5", "chalk": "^4.1.2", "compression": "^1.7.4", "connect-history-api-fallback": "^2.0.0", @@ -11497,12 +11718,12 @@ } }, "node_modules/@umijs/bundler-utils": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@umijs/bundler-utils/-/bundler-utils-4.4.5.tgz", - "integrity": "sha512-ECMq+XWLrEQfskpC/fglV+41e8h+0mQpwsnCA3t9L/ia+f0d1+ihAYHaHodDUb4fHfGniDYVmBo4ewrjswSTcA==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@umijs/bundler-utils/-/bundler-utils-4.4.6.tgz", + "integrity": "sha512-JTqva1w4OVNw9ARlHvRgWFiynGQEDXhG79dxaQ2OWw7Y/dKUk5NP67DIA6xlFFCWXLXWQYV0bsYm1ESmaSdk9g==", "license": "MIT", "dependencies": { - "@umijs/utils": "4.4.5", + "@umijs/utils": "4.4.6", "esbuild": "0.21.4", "regenerate": "^1.4.2", "regenerate-unicode-properties": "10.1.1", @@ -11564,14 +11785,14 @@ } }, "node_modules/@umijs/bundler-vite": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@umijs/bundler-vite/-/bundler-vite-4.4.5.tgz", - "integrity": "sha512-p2J+Y185sTqlZHe3yCEqavrNhY3hvkcvfcxJoAbuq21o/VhjZQ3/MZN0pOkd2dK30sSiLLzwiYyBfy45MzDKiA==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@umijs/bundler-vite/-/bundler-vite-4.4.6.tgz", + "integrity": "sha512-85npWFAKfFQHWQMLIXmkNMednp3j7snZcUfKfLlk+GjkUutO+mS9yblWz7R2bhlhI7lXtHRFcf5HMwCt6Aq2PA==", "license": "MIT", "dependencies": { "@svgr/core": "6.5.1", - "@umijs/bundler-utils": "4.4.5", - "@umijs/utils": "4.4.5", + "@umijs/bundler-utils": "4.4.6", + "@umijs/utils": "4.4.6", "@vitejs/plugin-react": "4.0.0", "core-js": "3.34.0", "less": "4.1.3", @@ -11601,9 +11822,9 @@ } }, "node_modules/@umijs/bundler-vite/node_modules/autoprefixer": { - "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", "funding": [ { "type": "opencollective", @@ -11620,11 +11841,11 @@ ], "license": "MIT", "dependencies": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", + "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -13545,9 +13766,9 @@ } }, "node_modules/@umijs/lint": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@umijs/lint/-/lint-4.4.5.tgz", - "integrity": "sha512-2bch1H6m4Bjv0xF9mFZuXEeh5boJ7w/UWinoJ8iMEIVdwsAU2VzfgZFw3+oiwfckMbllUJBcl/BXQoiDtpZ+eQ==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@umijs/lint/-/lint-4.4.6.tgz", + "integrity": "sha512-Qt/YIUlt+QMz37syPZnMp+asQm3a5rmBGzN0xe/Waz3kW8lsi2zDa/Pxo468289rRMXFAPTWxcjfJeikKNXVNg==", "license": "MIT", "dependencies": { "@babel/core": "7.23.6", @@ -13555,7 +13776,7 @@ "@stylelint/postcss-css-in-js": "^0.38.0", "@typescript-eslint/eslint-plugin": "^5.62.0", "@typescript-eslint/parser": "^5.62.0", - "@umijs/babel-preset-umi": "4.4.5", + "@umijs/babel-preset-umi": "4.4.6", "eslint-plugin-jest": "27.2.3", "eslint-plugin-react": "7.33.2", "eslint-plugin-react-hooks": "4.6.0", @@ -14088,11 +14309,12 @@ "peer": true }, "node_modules/@umijs/mako": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/@umijs/mako/-/mako-0.11.4.tgz", - "integrity": "sha512-XF+8w267Qm2biYQ4PoPBhsilWBCbeXtsU7Pp0wSvg/mK102admFWKzsbbFiW4dw2yJwdV8Qvq12tEz+g2DboEg==", + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/@umijs/mako/-/mako-0.11.5.tgz", + "integrity": "sha512-6sARFR5p3OBk7aDn7cUgULoHzjX+5YHufxV+RARpw2SUgCO2pqjutZbRGUywTZox0lCz4Ztzq0dK2sNXh0I5bg==", "license": "MIT", "dependencies": { + "@module-federation/webpack-bundler-runtime": "^0.8.0", "@swc/helpers": "0.5.1", "@types/resolve": "^1.20.6", "chalk": "^4.1.2", @@ -14114,20 +14336,20 @@ "node": ">= 16" }, "optionalDependencies": { - "@umijs/mako-darwin-arm64": "0.11.4", - "@umijs/mako-darwin-x64": "0.11.4", - "@umijs/mako-linux-arm64-gnu": "0.11.4", - "@umijs/mako-linux-arm64-musl": "0.11.4", - "@umijs/mako-linux-x64-gnu": "0.11.4", - "@umijs/mako-linux-x64-musl": "0.11.4", - "@umijs/mako-win32-ia32-msvc": "0.11.4", - "@umijs/mako-win32-x64-msvc": "0.11.4" + "@umijs/mako-darwin-arm64": "0.11.5", + "@umijs/mako-darwin-x64": "0.11.5", + "@umijs/mako-linux-arm64-gnu": "0.11.5", + "@umijs/mako-linux-arm64-musl": "0.11.5", + "@umijs/mako-linux-x64-gnu": "0.11.5", + "@umijs/mako-linux-x64-musl": "0.11.5", + "@umijs/mako-win32-ia32-msvc": "0.11.5", + "@umijs/mako-win32-x64-msvc": "0.11.5" } }, "node_modules/@umijs/mako-darwin-arm64": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/@umijs/mako-darwin-arm64/-/mako-darwin-arm64-0.11.4.tgz", - "integrity": "sha512-wPFKpgaZuzfiS9SwMtvrNxw+fneZsjS6D3bXCaK9sz/ROxl4THk4FdfstLIaxIBYFC6gEtwrddPgDMl2PVXWjA==", + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/@umijs/mako-darwin-arm64/-/mako-darwin-arm64-0.11.5.tgz", + "integrity": "sha512-qjm1teNYl6NqCAeOc6akvAHKMGx7LiH6fFdHGQpwoGtrhoNw8pZl5Kk7BQ15IYRbBv7uom/SG7Un70PHwi2MAA==", "cpu": [ "arm64" ], @@ -14141,9 +14363,9 @@ } }, "node_modules/@umijs/mako-darwin-x64": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/@umijs/mako-darwin-x64/-/mako-darwin-x64-0.11.4.tgz", - "integrity": "sha512-mrVeKuj6SVSLoONec/UgGWbJh9TOUMnBoyp0GVk3M3Z3JhOea5wvtr7IGpvC3R5TFlgqE2nUF1C50DGKF47jmg==", + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/@umijs/mako-darwin-x64/-/mako-darwin-x64-0.11.5.tgz", + "integrity": "sha512-xJKpFldId33aGASWqGKaM04XyXZHpZBZhR/13waDhCiVejfYCF6Dvv5Pcr6ZieP56CAfH32GLFb19beucsfxtA==", "cpu": [ "x64" ], @@ -14157,9 +14379,9 @@ } }, "node_modules/@umijs/mako-linux-arm64-gnu": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/@umijs/mako-linux-arm64-gnu/-/mako-linux-arm64-gnu-0.11.4.tgz", - "integrity": "sha512-eXxXi/VsEh6tqJZPuffYzCv6PUmzm1yLhTPWXPPatpVknKcPZsu3qJMUJhmmdd0PkCWFL7mz9JaLx9vIrZYUdg==", + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/@umijs/mako-linux-arm64-gnu/-/mako-linux-arm64-gnu-0.11.5.tgz", + "integrity": "sha512-aD7LBzplAFi3YZvAUKNo2/0b9PHTw4bcgCwEI9+0Rhf9qsoGKaErI1F9LoFpjO0zInU1xsbGCzkKemYO/7gpCw==", "cpu": [ "arm64" ], @@ -14173,9 +14395,9 @@ } }, "node_modules/@umijs/mako-linux-arm64-musl": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/@umijs/mako-linux-arm64-musl/-/mako-linux-arm64-musl-0.11.4.tgz", - "integrity": "sha512-uYqpajjrWHKG3y4d4e5dRkE2xmBcnCv/PId+eq9YeEjtVnhACutE9UylVeL/tfMjsXoFrZrpAhg+LGWftf6LgA==", + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/@umijs/mako-linux-arm64-musl/-/mako-linux-arm64-musl-0.11.5.tgz", + "integrity": "sha512-eZu+gU5b6Ezg/zeL4/SFU6KIiJ3DSR2S3Asy+zrChxrPsacKBJ+Los9QToUc7wxNCk/sGb6VLf3E4Z7pH1xxNQ==", "cpu": [ "arm64" ], @@ -14189,9 +14411,9 @@ } }, "node_modules/@umijs/mako-linux-x64-gnu": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/@umijs/mako-linux-x64-gnu/-/mako-linux-x64-gnu-0.11.4.tgz", - "integrity": "sha512-MNAaHRYhbwRSNbE5YNt+kStTbc6o+GYnMfgOdMYOC2uA9CGXlNVGLr4TRvnQ8n/JopYbyQciGcH+dl+wBs4yYA==", + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/@umijs/mako-linux-x64-gnu/-/mako-linux-x64-gnu-0.11.5.tgz", + "integrity": "sha512-RX3WU8tvmC3lYhwqDUgc929ppMK9qgmdj3Ks7GSzn2sDhdl7VG+bGBl2yGom1/yvL1aLChRo9YeRUIT5zNR5Zg==", "cpu": [ "x64" ], @@ -14205,9 +14427,9 @@ } }, "node_modules/@umijs/mako-linux-x64-musl": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/@umijs/mako-linux-x64-musl/-/mako-linux-x64-musl-0.11.4.tgz", - "integrity": "sha512-SXY8OKEnGCl7edlyPDAK+mcjCiJ3J9UGqxwZHTFexk02ulKAY93RcSb7Pkq2sWsh0RD6N/xJO0fF4jPrJ6ruJQ==", + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/@umijs/mako-linux-x64-musl/-/mako-linux-x64-musl-0.11.5.tgz", + "integrity": "sha512-3tmqidAfogQmARDHlzBERh05bhF7pAi8R8R3Gj1xlJazUMHNFg87KNMI0koo/RUaFl+oBcNvOa4QlGa5PGh0rQ==", "cpu": [ "x64" ], @@ -14221,9 +14443,9 @@ } }, "node_modules/@umijs/mako-win32-ia32-msvc": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/@umijs/mako-win32-ia32-msvc/-/mako-win32-ia32-msvc-0.11.4.tgz", - "integrity": "sha512-SkRiup3UF1yNrmIMrAgT5BLzruv0xwDVeM0zoZeNCsN/P3BzP92QTYgXbOex9fZLFvldqS5MCscLnh9STCKDLw==", + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/@umijs/mako-win32-ia32-msvc/-/mako-win32-ia32-msvc-0.11.5.tgz", + "integrity": "sha512-Cb0evqmssxhtqg1JbxQ/0Y/BQdg25otEicop2SYZYZpwu0leptfKr32DvHXJ97K2LhbJ3JTt5kl9XT4VppWKLw==", "cpu": [ "ia32" ], @@ -14237,9 +14459,9 @@ } }, "node_modules/@umijs/mako-win32-x64-msvc": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/@umijs/mako-win32-x64-msvc/-/mako-win32-x64-msvc-0.11.4.tgz", - "integrity": "sha512-sIuscK3dw9RXQU2Duq2klzKJsWoj5JdNv1fJIM7AwRiWVnEuYt8juiogFiDfA1TmttVQMbZjoPuz3hStsImbcQ==", + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/@umijs/mako-win32-x64-msvc/-/mako-win32-x64-msvc-0.11.5.tgz", + "integrity": "sha512-BHkpmiRpRypeaXDwftpydIk6zmZkTk26V4ukg8JmZedyRr3iOSTBJnWfPO3mk5qiG9qzghcsB17cJCqtwzUUSQ==", "cpu": [ "x64" ], @@ -14328,17 +14550,17 @@ } }, "node_modules/@umijs/max": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@umijs/max/-/max-4.4.5.tgz", - "integrity": "sha512-KM/bvNBUPSEBZxuLB/fHG6ASM8SL78YSwJGFMRd0UziuiJBeLLxdvzCQTLsBUrwlMTp9e35W/z6+pYTUj4Oqkw==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@umijs/max/-/max-4.4.6.tgz", + "integrity": "sha512-6RgZeo9C/Zbdq8DelUCzdX6tnuHyvFU87Ht2NFb778ydlN45+9q892j2kMRnictj5bfECfngEVMYKP2jx9becg==", "license": "MIT", "dependencies": { - "@umijs/lint": "4.4.5", - "@umijs/plugins": "4.4.5", + "@umijs/lint": "4.4.6", + "@umijs/plugins": "4.4.6", "antd": "^4.20.6", "eslint": "8.35.0", "stylelint": "14.8.2", - "umi": "4.4.5" + "umi": "4.4.6" }, "bin": { "max": "bin/max.js" @@ -14516,21 +14738,21 @@ } }, "node_modules/@umijs/max/node_modules/@umijs/bundler-webpack": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@umijs/bundler-webpack/-/bundler-webpack-4.4.5.tgz", - "integrity": "sha512-juAymP8NXJ8CnSQctxtp5fu2dUL6Q4iAN1URUoW8K090mXnNeta0nPV3k1JzutQtY33kuY9XQiJGFcZ8JDymng==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@umijs/bundler-webpack/-/bundler-webpack-4.4.6.tgz", + "integrity": "sha512-+FM/9+OD8tiHwlZOXdVX+4fsZOo75B968KJ0+mP/w7Z4cBnFAYgx6d6NrcpPUlS0Bx/oRBRpFYY0D+i22jQzdg==", "license": "MIT", "dependencies": { "@svgr/core": "6.5.1", "@svgr/plugin-jsx": "^6.5.1", "@svgr/plugin-svgo": "^6.5.1", "@types/hapi__joi": "17.1.9", - "@umijs/babel-preset-umi": "4.4.5", - "@umijs/bundler-utils": "4.4.5", + "@umijs/babel-preset-umi": "4.4.6", + "@umijs/bundler-utils": "4.4.6", "@umijs/case-sensitive-paths-webpack-plugin": "^1.0.1", - "@umijs/mfsu": "4.4.5", + "@umijs/mfsu": "4.4.6", "@umijs/react-refresh-webpack-plugin": "0.5.11", - "@umijs/utils": "4.4.5", + "@umijs/utils": "4.4.6", "cors": "^2.8.5", "css-loader": "6.7.1", "es5-imcompatible-versions": "^0.1.78", @@ -14548,19 +14770,19 @@ } }, "node_modules/@umijs/max/node_modules/@umijs/core": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@umijs/core/-/core-4.4.5.tgz", - "integrity": "sha512-yC18dv3ef2RYOmVxfbH4kZE8wznzbN16OXOgPYFMn5XK13UyHqUHNmtGQWgCrkZXh/E5L4ODtLLBXOSNKLMsow==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@umijs/core/-/core-4.4.6.tgz", + "integrity": "sha512-rQU7knNUDMKkautVSL4JOLl8QmRClMacFVGEBuM3CkS9ZDem9olbmiQe01y7xAzYKrcQRRqD9qnjnpPeeB6hOA==", "license": "MIT", "dependencies": { - "@umijs/bundler-utils": "4.4.5", - "@umijs/utils": "4.4.5" + "@umijs/bundler-utils": "4.4.6", + "@umijs/utils": "4.4.6" } }, "node_modules/@umijs/max/node_modules/@umijs/plugins": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@umijs/plugins/-/plugins-4.4.5.tgz", - "integrity": "sha512-MC2248NM4E+j3FzNz1luz4m55MkTHfe99DCKr43pAsKhOsKT3KOij+Eph3nNKYgSf4mcLAs99v4MLpxACv6qcw==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@umijs/plugins/-/plugins-4.4.6.tgz", + "integrity": "sha512-A6lhGITIR3cnjzlApGO/1sMXgX0wnGrC57cEtq9yrbEF6c13Ehi/8jAFeLP7EcbfLAKebRVTGky+LquSVs1UEQ==", "license": "MIT", "dependencies": { "@ahooksjs/use-request": "^2.0.0", @@ -14571,7 +14793,7 @@ "@ant-design/pro-components": "^2.0.1", "@tanstack/react-query": "^4.24.10", "@tanstack/react-query-devtools": "^4.24.10", - "@umijs/bundler-utils": "4.4.5", + "@umijs/bundler-utils": "4.4.6", "@umijs/valtio": "1.0.4", "antd-dayjs-webpack-plugin": "^1.0.6", "axios": "^0.27.2", @@ -14698,12 +14920,12 @@ } }, "node_modules/@umijs/max/node_modules/@umijs/server": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@umijs/server/-/server-4.4.5.tgz", - "integrity": "sha512-mhYxsX4Nbmx6uj6wVlRDuEbnT8zVQPmAppEeYsgJ+4oqD6hJuNp6vqgXAoCLOTfZMM9OYvs3gxaOxht2AmdHKg==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@umijs/server/-/server-4.4.6.tgz", + "integrity": "sha512-05ACeL7FyHhGGvR3X0P8MkbJYZIPjSNZcVItqjn3KQgEURJLK+AOYbYlDY1O4V66+rR7pyaCxkxZFSFAYWwHXA==", "license": "MIT", "dependencies": { - "@umijs/bundler-utils": "4.4.5", + "@umijs/bundler-utils": "4.4.6", "history": "5.3.0", "react": "18.3.1", "react-dom": "18.3.1", @@ -14837,9 +15059,9 @@ } }, "node_modules/@umijs/max/node_modules/autoprefixer": { - "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", "funding": [ { "type": "opencollective", @@ -14856,11 +15078,11 @@ ], "license": "MIT", "dependencies": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", + "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -16740,21 +16962,21 @@ } }, "node_modules/@umijs/max/node_modules/umi": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/umi/-/umi-4.4.5.tgz", - "integrity": "sha512-LtfJEnepls7+MCIj5LdKLo+beLoKUrVQjzDPAVbN/OzfiewvC4JG3X/8uQ84pEDDa5vwJoq9m9daGMS9YuVVRg==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/umi/-/umi-4.4.6.tgz", + "integrity": "sha512-RqYAYigyc6AdCesIfoAqldpj6qpUGzaDwLMiC85tkOxkhilNpEmEpI+g7SvyF9aJ5hFeE7wGEiSlojbcxIT8TA==", "license": "MIT", "dependencies": { "@babel/runtime": "7.23.6", - "@umijs/bundler-utils": "4.4.5", - "@umijs/bundler-webpack": "4.4.5", - "@umijs/core": "4.4.5", - "@umijs/lint": "4.4.5", - "@umijs/preset-umi": "4.4.5", - "@umijs/renderer-react": "4.4.5", - "@umijs/server": "4.4.5", - "@umijs/test": "4.4.5", - "@umijs/utils": "4.4.5", + "@umijs/bundler-utils": "4.4.6", + "@umijs/bundler-webpack": "4.4.6", + "@umijs/core": "4.4.6", + "@umijs/lint": "4.4.6", + "@umijs/preset-umi": "4.4.6", + "@umijs/renderer-react": "4.4.6", + "@umijs/server": "4.4.6", + "@umijs/test": "4.4.6", + "@umijs/utils": "4.4.6", "prettier-plugin-organize-imports": "^3.2.2", "prettier-plugin-packagejson": "2.4.3" }, @@ -16772,14 +16994,14 @@ "license": "ISC" }, "node_modules/@umijs/mfsu": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@umijs/mfsu/-/mfsu-4.4.5.tgz", - "integrity": "sha512-p3iW6GSy63ETiDFWxStaVfMxfyJ4vSoQnMcqK/PNaxcI9Y4IUEHJwEjZmbgvtWKNaAHV3zbB8hw34CI9HIbhiw==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@umijs/mfsu/-/mfsu-4.4.6.tgz", + "integrity": "sha512-/PILNQbPYUt66arww3BU23Xnz1MltumNWJeoRU/t+wm75jhEaSgA7BcL5wHZ5paTeVnVKadp27Cr+S5wu9TrTw==", "license": "MIT", "dependencies": { - "@umijs/bundler-esbuild": "4.4.5", - "@umijs/bundler-utils": "4.4.5", - "@umijs/utils": "4.4.5", + "@umijs/bundler-esbuild": "4.4.6", + "@umijs/bundler-utils": "4.4.6", + "@umijs/utils": "4.4.6", "enhanced-resolve": "5.9.3", "is-equal": "^1.6.4" } @@ -17586,9 +17808,9 @@ } }, "node_modules/@umijs/plugin-run": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@umijs/plugin-run/-/plugin-run-4.4.5.tgz", - "integrity": "sha512-bUGM5u4+2McrKX92rvL8rBTz6GvJOrp/Hhhk3vIU/oWcNuvz3PX1ijTRq0j5uKpI9j+vidYSpXGOjZqEh+lbhw==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@umijs/plugin-run/-/plugin-run-4.4.6.tgz", + "integrity": "sha512-Pxprnn4V/trHG144EpSaKIa7T4U1E540o3IWIKPWGqa8YK+Jr0Xlucj5sT15NYYHK1UueKGdw6C4gctCZ+DICA==", "license": "MIT", "dependencies": { "tsx": "3.12.2" @@ -18062,31 +18284,31 @@ } }, "node_modules/@umijs/preset-umi": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@umijs/preset-umi/-/preset-umi-4.4.5.tgz", - "integrity": "sha512-ATy2a0Wny5fvvRmCumS3SEAOBVfccnTq6s5OP++EVUuLawx5Dt4duGix0KNhoRW4GwWPkF13HKDbHr0NfHwABg==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@umijs/preset-umi/-/preset-umi-4.4.6.tgz", + "integrity": "sha512-1fZ5s868OGPXESSbM1KqvgZ49dcL2JTL+ppxhM3gD9qRJTtKidmb2Rn3YfRkLG4D8Z3NaOpqjrY/z7HbSl3bTw==", "license": "MIT", "dependencies": { "@iconify/utils": "2.1.1", "@svgr/core": "6.5.1", - "@umijs/ast": "4.4.5", - "@umijs/babel-preset-umi": "4.4.5", - "@umijs/bundler-esbuild": "4.4.5", - "@umijs/bundler-mako": "0.11.4", - "@umijs/bundler-utils": "4.4.5", - "@umijs/bundler-vite": "4.4.5", - "@umijs/bundler-webpack": "4.4.5", - "@umijs/core": "4.4.5", + "@umijs/ast": "4.4.6", + "@umijs/babel-preset-umi": "4.4.6", + "@umijs/bundler-esbuild": "4.4.6", + "@umijs/bundler-mako": "0.11.5", + "@umijs/bundler-utils": "4.4.6", + "@umijs/bundler-vite": "4.4.6", + "@umijs/bundler-webpack": "4.4.6", + "@umijs/core": "4.4.6", "@umijs/did-you-know": "1.0.3", "@umijs/es-module-parser": "0.0.7", "@umijs/history": "5.3.1", - "@umijs/mfsu": "4.4.5", - "@umijs/plugin-run": "4.4.5", - "@umijs/renderer-react": "4.4.5", - "@umijs/server": "4.4.5", + "@umijs/mfsu": "4.4.6", + "@umijs/plugin-run": "4.4.6", + "@umijs/renderer-react": "4.4.6", + "@umijs/server": "4.4.6", "@umijs/ui": "3.0.1", - "@umijs/utils": "4.4.5", - "@umijs/zod2ts": "4.4.5", + "@umijs/utils": "4.4.6", + "@umijs/zod2ts": "4.4.6", "babel-plugin-dynamic-import-node": "2.3.3", "babel-plugin-react-compiler": "0.0.0-experimental-c23de8d-20240515", "click-to-react-component": "1.1.0", @@ -18123,30 +18345,30 @@ } }, "node_modules/@umijs/preset-umi/node_modules/@umijs/ast": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@umijs/ast/-/ast-4.4.5.tgz", - "integrity": "sha512-IDSwLhoKn8CrGr97shImIrku/q3+yJ6hxErjrjPJhda3oDN7wgxRpQ2iD62Yc+dSHXT7GzqXELAmAG48F3G34g==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@umijs/ast/-/ast-4.4.6.tgz", + "integrity": "sha512-uFv5hIkN6TIXYOFZQVe7dHdKlRGNKtivu2BWkmxc58u5FefXsLb6ui2m3XKyrKl0RqDtwiDgKz0OB19nlTuFbg==", "license": "MIT", "dependencies": { - "@umijs/bundler-utils": "4.4.5" + "@umijs/bundler-utils": "4.4.6" } }, "node_modules/@umijs/preset-umi/node_modules/@umijs/bundler-webpack": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@umijs/bundler-webpack/-/bundler-webpack-4.4.5.tgz", - "integrity": "sha512-juAymP8NXJ8CnSQctxtp5fu2dUL6Q4iAN1URUoW8K090mXnNeta0nPV3k1JzutQtY33kuY9XQiJGFcZ8JDymng==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@umijs/bundler-webpack/-/bundler-webpack-4.4.6.tgz", + "integrity": "sha512-+FM/9+OD8tiHwlZOXdVX+4fsZOo75B968KJ0+mP/w7Z4cBnFAYgx6d6NrcpPUlS0Bx/oRBRpFYY0D+i22jQzdg==", "license": "MIT", "dependencies": { "@svgr/core": "6.5.1", "@svgr/plugin-jsx": "^6.5.1", "@svgr/plugin-svgo": "^6.5.1", "@types/hapi__joi": "17.1.9", - "@umijs/babel-preset-umi": "4.4.5", - "@umijs/bundler-utils": "4.4.5", + "@umijs/babel-preset-umi": "4.4.6", + "@umijs/bundler-utils": "4.4.6", "@umijs/case-sensitive-paths-webpack-plugin": "^1.0.1", - "@umijs/mfsu": "4.4.5", + "@umijs/mfsu": "4.4.6", "@umijs/react-refresh-webpack-plugin": "0.5.11", - "@umijs/utils": "4.4.5", + "@umijs/utils": "4.4.6", "cors": "^2.8.5", "css-loader": "6.7.1", "es5-imcompatible-versions": "^0.1.78", @@ -18164,22 +18386,22 @@ } }, "node_modules/@umijs/preset-umi/node_modules/@umijs/core": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@umijs/core/-/core-4.4.5.tgz", - "integrity": "sha512-yC18dv3ef2RYOmVxfbH4kZE8wznzbN16OXOgPYFMn5XK13UyHqUHNmtGQWgCrkZXh/E5L4ODtLLBXOSNKLMsow==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@umijs/core/-/core-4.4.6.tgz", + "integrity": "sha512-rQU7knNUDMKkautVSL4JOLl8QmRClMacFVGEBuM3CkS9ZDem9olbmiQe01y7xAzYKrcQRRqD9qnjnpPeeB6hOA==", "license": "MIT", "dependencies": { - "@umijs/bundler-utils": "4.4.5", - "@umijs/utils": "4.4.5" + "@umijs/bundler-utils": "4.4.6", + "@umijs/utils": "4.4.6" } }, "node_modules/@umijs/preset-umi/node_modules/@umijs/server": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@umijs/server/-/server-4.4.5.tgz", - "integrity": "sha512-mhYxsX4Nbmx6uj6wVlRDuEbnT8zVQPmAppEeYsgJ+4oqD6hJuNp6vqgXAoCLOTfZMM9OYvs3gxaOxht2AmdHKg==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@umijs/server/-/server-4.4.6.tgz", + "integrity": "sha512-05ACeL7FyHhGGvR3X0P8MkbJYZIPjSNZcVItqjn3KQgEURJLK+AOYbYlDY1O4V66+rR7pyaCxkxZFSFAYWwHXA==", "license": "MIT", "dependencies": { - "@umijs/bundler-utils": "4.4.5", + "@umijs/bundler-utils": "4.4.6", "history": "5.3.0", "react": "18.3.1", "react-dom": "18.3.1", @@ -18187,9 +18409,9 @@ } }, "node_modules/@umijs/preset-umi/node_modules/autoprefixer": { - "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", "funding": [ { "type": "opencollective", @@ -18206,11 +18428,11 @@ ], "license": "MIT", "dependencies": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", + "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -19064,9 +19286,9 @@ } }, "node_modules/@umijs/renderer-react": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@umijs/renderer-react/-/renderer-react-4.4.5.tgz", - "integrity": "sha512-E8lSiVxHwBpqhjg/bMGc9mdjltP2awiiYPcpNFAghuR1b95VStgWUvKhnkLDnSfXbpVPBAKr+cJtk4yTewfzhA==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@umijs/renderer-react/-/renderer-react-4.4.6.tgz", + "integrity": "sha512-XBu9xy0GmSkh287GQTQw/YDl5x4xCOSGkRBfdvyerNQKVD7djudGrL+YTexvDdc/4NRj6N7E/0svRwNuLzv4fA==", "license": "MIT", "dependencies": { "@babel/runtime": "7.23.6", @@ -19365,15 +19587,15 @@ "peer": true }, "node_modules/@umijs/test": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@umijs/test/-/test-4.4.5.tgz", - "integrity": "sha512-VZw6RdbYs/X+51xsSp2t4d/Si1LZk9Mhzr2k5OgC+QngD9ITN0sTUa0Y9rG88MmfN2E6940Mof5w7hKZg8BFSQ==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@umijs/test/-/test-4.4.6.tgz", + "integrity": "sha512-uY/ff0bpfQyjgJA6qgexIe/w2WbkokPlFkDMJnduGRyYLhlOhrdp24asT76q6KoklTnVTohPFzDNfm5ClKq/bA==", "license": "MIT", "dependencies": { "@babel/plugin-transform-modules-commonjs": "7.23.3", "@jest/types": "27.5.1", - "@umijs/bundler-utils": "4.4.5", - "@umijs/utils": "4.4.5", + "@umijs/bundler-utils": "4.4.6", + "@umijs/utils": "4.4.6", "babel-jest": "^29.7.0", "esbuild": "0.21.4", "identity-obj-proxy": "3.0.0", @@ -19763,9 +19985,9 @@ } }, "node_modules/@umijs/utils": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@umijs/utils/-/utils-4.4.5.tgz", - "integrity": "sha512-DMey4yrb7WQFhFeSNbrCqnnGtNtbYVV3FB174dEmKim5SK+stEh8aACRqhMFBqr+b1DlEI3/FpbUsawpIiJWTg==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@umijs/utils/-/utils-4.4.6.tgz", + "integrity": "sha512-W273HinahK0ZmfYQ/x8GsgS9ZMCknLB9ID+6sQhPoiA1ARKmD3RYD0ZHrboz19fILD4amFqeAYaF22rLuyz7OQ==", "license": "MIT", "dependencies": { "chokidar": "3.5.3", @@ -19780,9 +20002,9 @@ } }, "node_modules/@umijs/zod2ts": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@umijs/zod2ts/-/zod2ts-4.4.5.tgz", - "integrity": "sha512-FGUDBhjK27W1fgG8L571LnLkQD2pJB1AO/j2vmNAaBXc9I6IiwaZAskpy7f1LAZL75fmno6GGMiZ0ulaEAB7CQ==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@umijs/zod2ts/-/zod2ts-4.4.6.tgz", + "integrity": "sha512-mSEtl2RSeCYu6hFGZvn55P7fA6FwU0CPs+eYDOj590DgS8YBAkhDcgdTP9tnvdydH3UFK80LT0VdWum3Uyn7Fw==", "license": "MIT" }, "node_modules/@ungap/structured-clone": { @@ -19808,14 +20030,14 @@ } }, "node_modules/@vitest/expect": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.6.tgz", - "integrity": "sha512-zBduHf/ja7/QRX4HdP1DSq5XrPgdN+jzLOwaTq/0qZjYfgETNFCKf9nOAp2j3hmom3oTbczuUzrzg9Hafh7hNg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.1.tgz", + "integrity": "sha512-q/zjrW9lgynctNbwvFtQkGK9+vvHA5UzVi2V8APrp1C6fG6/MuYYkmlx4FubuqLycCeSdHD5aadWfua/Vr0EUA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.0.6", - "@vitest/utils": "3.0.6", + "@vitest/spy": "3.1.1", + "@vitest/utils": "3.1.1", "chai": "^5.2.0", "tinyrainbow": "^2.0.0" }, @@ -19824,9 +20046,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.6.tgz", - "integrity": "sha512-Zyctv3dbNL+67qtHfRnUE/k8qxduOamRfAL1BurEIQSyOEFffoMvx2pnDSSbKAAVxY0Ej2J/GH2dQKI0W2JyVg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.1.tgz", + "integrity": "sha512-dg0CIzNx+hMMYfNmSqJlLSXEmnNhMswcn3sXO7Tpldr0LiGmg3eXdLLhwkv2ZqgHb/d5xg5F7ezNFRA1fA13yA==", "dev": true, "license": "MIT", "dependencies": { @@ -19837,13 +20059,13 @@ } }, "node_modules/@vitest/runner": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.6.tgz", - "integrity": "sha512-JopP4m/jGoaG1+CBqubV/5VMbi7L+NQCJTu1J1Pf6YaUbk7bZtaq5CX7p+8sY64Sjn1UQ1XJparHfcvTTdu9cA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.1.1.tgz", + "integrity": "sha512-X/d46qzJuEDO8ueyjtKfxffiXraPRfmYasoC4i5+mlLEJ10UvPb0XH5M9C3gWuxd7BAQhpK42cJgJtq53YnWVA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "3.0.6", + "@vitest/utils": "3.1.1", "pathe": "^2.0.3" }, "funding": { @@ -19851,13 +20073,13 @@ } }, "node_modules/@vitest/snapshot": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.6.tgz", - "integrity": "sha512-qKSmxNQwT60kNwwJHMVwavvZsMGXWmngD023OHSgn873pV0lylK7dwBTfYP7e4URy5NiBCHHiQGA9DHkYkqRqg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.1.1.tgz", + "integrity": "sha512-bByMwaVWe/+1WDf9exFxWWgAixelSdiwo2p33tpqIlM14vW7PRV5ppayVXtfycqze4Qhtwag5sVhX400MLBOOw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.6", + "@vitest/pretty-format": "3.1.1", "magic-string": "^0.30.17", "pathe": "^2.0.3" }, @@ -19866,9 +20088,9 @@ } }, "node_modules/@vitest/spy": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.6.tgz", - "integrity": "sha512-HfOGx/bXtjy24fDlTOpgiAEJbRfFxoX3zIGagCqACkFKKZ/TTOE6gYMKXlqecvxEndKFuNHcHqP081ggZ2yM0Q==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.1.tgz", + "integrity": "sha512-+EmrUOOXbKzLkTDwlsc/xrwOlPDXyVk3Z6P6K4oiCndxz7YLpp/0R0UsWVOKT0IXWjjBJuSMk6D27qipaupcvQ==", "dev": true, "license": "MIT", "dependencies": { @@ -19879,13 +20101,13 @@ } }, "node_modules/@vitest/utils": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.6.tgz", - "integrity": "sha512-18ktZpf4GQFTbf9jK543uspU03Q2qya7ZGya5yiZ0Gx0nnnalBvd5ZBislbl2EhLjM8A8rt4OilqKG7QwcGkvQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.1.tgz", + "integrity": "sha512-1XIjflyaU2k3HMArJ50bwSh3wKWPD6Q47wz/NUSmRV0zNywPc4w79ARjg/i/aNINHwA+mIALhUVqD9/aUvZNgg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.6", + "@vitest/pretty-format": "3.1.1", "loupe": "^3.1.3", "tinyrainbow": "^2.0.0" }, @@ -20300,9 +20522,9 @@ } }, "node_modules/antd": { - "version": "5.24.2", - "resolved": "https://registry.npmjs.org/antd/-/antd-5.24.2.tgz", - "integrity": "sha512-7Z9HsE3ZIK3sE/WuUqii3w7Gl1IJuRL21sDUTtkN95JS5KhRYP8ISv7m/HxsJ3Mn/yxgojBCgLPJ212+Dn+aPw==", + "version": "5.24.6", + "resolved": "https://registry.npmjs.org/antd/-/antd-5.24.6.tgz", + "integrity": "sha512-xIlTa/1CTbgkZsdU/dOXkYvJXb9VoiMwsaCzpKFH2zAEY3xqOfwQ57/DdG7lAdrWP7QORtSld4UA6suxzuTHXw==", "license": "MIT", "dependencies": { "@ant-design/colors": "^7.2.0", @@ -20320,22 +20542,22 @@ "classnames": "^2.5.1", "copy-to-clipboard": "^3.3.3", "dayjs": "^1.11.11", - "rc-cascader": "~3.33.0", + "rc-cascader": "~3.33.1", "rc-checkbox": "~3.5.0", "rc-collapse": "~3.9.0", "rc-dialog": "~9.6.0", "rc-drawer": "~7.2.0", "rc-dropdown": "~4.2.1", "rc-field-form": "~2.7.0", - "rc-image": "~7.11.0", - "rc-input": "~1.7.2", + "rc-image": "~7.11.1", + "rc-input": "~1.7.3", "rc-input-number": "~9.4.0", "rc-mentions": "~2.19.1", "rc-menu": "~9.16.1", "rc-motion": "^2.9.5", "rc-notification": "~5.6.3", "rc-pagination": "~5.1.0", - "rc-picker": "~4.11.2", + "rc-picker": "~4.11.3", "rc-progress": "~4.0.0", "rc-rate": "~2.13.1", "rc-resize-observer": "^1.4.3", @@ -20344,11 +20566,11 @@ "rc-slider": "~11.1.8", "rc-steps": "~6.0.1", "rc-switch": "~4.1.0", - "rc-table": "~7.50.3", + "rc-table": "~7.50.4", "rc-tabs": "~15.5.1", "rc-textarea": "~1.9.0", "rc-tooltip": "~6.4.0", - "rc-tree": "~5.13.0", + "rc-tree": "~5.13.1", "rc-tree-select": "~5.27.0", "rc-upload": "~4.8.1", "rc-util": "^5.44.4", @@ -21279,6 +21501,26 @@ "node": ">= 4.0.0" } }, + "node_modules/antd/node_modules/@ant-design/icons": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.6.1.tgz", + "integrity": "sha512-0/xS39c91WjPAZOWsvi1//zjx6kAp4kxWwctR6kuU6p133w8RU0D2dSCvZC19uQyharg/sAvYxGYWl01BbZZfg==", + "license": "MIT", + "dependencies": { + "@ant-design/colors": "^7.0.0", + "@ant-design/icons-svg": "^4.4.0", + "@babel/runtime": "^7.24.8", + "classnames": "^2.2.6", + "rc-util": "^5.31.1" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, "node_modules/antd/node_modules/@ant-design/react-slick": { "version": "1.1.2", "license": "MIT", @@ -21394,10 +21636,6 @@ "node": ">=8" } }, - "node_modules/array-flatten": { - "version": "3.0.0", - "license": "MIT" - }, "node_modules/array-includes": { "version": "3.1.8", "license": "MIT", @@ -22225,55 +22463,67 @@ "license": "MIT" }, "node_modules/body-parser": { - "version": "2.0.1", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "3.1.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.5.2", - "on-finished": "2.4.1", - "qs": "6.13.0", + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", "raw-body": "^3.0.0", - "type-is": "~1.6.18", - "unpipe": "1.0.0" + "type-is": "^2.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=18" } }, "node_modules/body-parser/node_modules/debug": { - "version": "3.1.0", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.5.2", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "ms": "^2.1.3" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/body-parser/node_modules/media-typer": { - "version": "0.3.0", - "license": "MIT", - "engines": { - "node": ">= 0.6" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/body-parser/node_modules/raw-body": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", "license": "MIT", "dependencies": { "bytes": "3.1.2", @@ -22285,27 +22535,6 @@ "node": ">= 0.8" } }, - "node_modules/body-parser/node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.6.3", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/body-parser/node_modules/type-is": { - "version": "1.6.18", - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -22499,7 +22728,8 @@ "node_modules/bubblesets-js": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/bubblesets-js/-/bubblesets-js-2.3.4.tgz", - "integrity": "sha512-DyMjHmpkS2+xcFNtyN00apJYL3ESdp9fTrkDr5+9Qg/GPqFmcWgGsK1akZnttE1XFxJ/VMy4DNNGMGYtmFp1Sg==" + "integrity": "sha512-DyMjHmpkS2+xcFNtyN00apJYL3ESdp9fTrkDr5+9Qg/GPqFmcWgGsK1akZnttE1XFxJ/VMy4DNNGMGYtmFp1Sg==", + "license": "MIT" }, "node_modules/buffer": { "version": "6.0.3", @@ -22808,9 +23038,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001699", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001699.tgz", - "integrity": "sha512-b+uH5BakXZ9Do9iK+CkDmctUSEqZl+SP056vc5usa0PL+ev5OHw003rZXcnjNDv3L8P5j6rwT6C0BPKSikW08w==", + "version": "1.0.30001707", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz", + "integrity": "sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==", "funding": [ { "type": "opencollective", @@ -23494,7 +23724,8 @@ "node_modules/comlink": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.2.tgz", - "integrity": "sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==" + "integrity": "sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==", + "license": "Apache-2.0" }, "node_modules/commander": { "version": "7.2.0", @@ -24575,6 +24806,7 @@ "version": "0.8.5", "resolved": "https://registry.npmjs.org/dagre/-/dagre-0.8.5.tgz", "integrity": "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==", + "license": "MIT", "dependencies": { "graphlib": "^2.1.8", "lodash": "^4.17.15" @@ -25063,6 +25295,18 @@ "node": ">=8" } }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "license": "Apache-2.0", + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/detect-newline": { "version": "3.1.0", "license": "MIT", @@ -26445,9 +26689,9 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0.tgz", - "integrity": "sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", "dev": true, "license": "MIT", "engines": { @@ -26917,9 +27161,9 @@ } }, "node_modules/expect-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.1.0.tgz", - "integrity": "sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz", + "integrity": "sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==", "dev": true, "license": "Apache-2.0", "engines": { @@ -26932,45 +27176,45 @@ "license": "Apache-2.0" }, "node_modules/express": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.0.1.tgz", - "integrity": "sha512-ORF7g6qGnD+YtUG9yx4DFoqCShNMmUKiXuT5oWMHiOvt/4WFbHC6yCwQMTSBMno7AqntNCAzzcnnjowRkTL9eQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "license": "MIT", "dependencies": { "accepts": "^2.0.0", - "body-parser": "^2.0.1", + "body-parser": "^2.2.0", "content-disposition": "^1.0.0", - "content-type": "~1.0.4", - "cookie": "0.7.1", + "content-type": "^1.0.5", + "cookie": "^0.7.1", "cookie-signature": "^1.2.1", - "debug": "4.3.6", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "^2.0.0", - "fresh": "2.0.0", - "http-errors": "2.0.0", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", "merge-descriptors": "^2.0.0", - "methods": "~1.1.2", "mime-types": "^3.0.0", - "on-finished": "2.4.1", - "once": "1.4.0", - "parseurl": "~1.3.3", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "router": "^2.0.0", - "safe-buffer": "5.2.1", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", "send": "^1.1.0", - "serve-static": "^2.1.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "^2.0.0", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" }, "engines": { "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/express-http-proxy": { @@ -27021,6 +27265,23 @@ "node": ">= 0.6" } }, + "node_modules/express/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/express/node_modules/fresh": { "version": "2.0.0", "license": "MIT", @@ -27029,17 +27290,21 @@ } }, "node_modules/express/node_modules/mime-db": { - "version": "1.53.0", + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/express/node_modules/mime-types": { - "version": "3.0.0", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", "license": "MIT", "dependencies": { - "mime-db": "^1.53.0" + "mime-db": "^1.54.0" }, "engines": { "node": ">= 0.6" @@ -27047,6 +27312,8 @@ }, "node_modules/express/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==", "license": "MIT" }, "node_modules/express/node_modules/negotiator": { @@ -27056,18 +27323,34 @@ "node": ">= 0.6" } }, + "node_modules/express/node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/express/node_modules/send": { - "version": "1.1.0", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", "license": "MIT", "dependencies": { "debug": "^4.3.5", - "destroy": "^1.2.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", - "fresh": "^0.5.2", + "fresh": "^2.0.0", "http-errors": "^2.0.0", - "mime-types": "^2.1.35", + "mime-types": "^3.0.1", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", @@ -27077,38 +27360,16 @@ "node": ">= 18" } }, - "node_modules/express/node_modules/send/node_modules/fresh": { - "version": "0.5.2", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express/node_modules/send/node_modules/mime-db": { - "version": "1.52.0", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express/node_modules/send/node_modules/mime-types": { - "version": "2.1.35", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/express/node_modules/serve-static": { - "version": "2.1.0", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", "license": "MIT", "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "parseurl": "^1.3.3", - "send": "^1.0.0" + "send": "^1.2.0" }, "engines": { "node": ">= 18" @@ -27384,37 +27645,43 @@ } }, "node_modules/finalhandler": { - "version": "2.0.0", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", "license": "MIT", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" }, "engines": { "node": ">= 0.8" } }, "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "license": "MIT", "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/encodeurl": { - "version": "1.0.2", - "license": "MIT", + "ms": "^2.1.3" + }, "engines": { - "node": ">= 0.8" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, "node_modules/find-root": { @@ -27729,13 +27996,13 @@ } }, "node_modules/framer-motion": { - "version": "12.4.7", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.4.7.tgz", - "integrity": "sha512-VhrcbtcAMXfxlrjeHPpWVu2+mkcoR31e02aNSR7OUS/hZAciKa8q6o3YN2mA1h+jjscRsSyKvX6E1CiY/7OLMw==", + "version": "12.6.5", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.6.5.tgz", + "integrity": "sha512-MKvnWov0paNjvRJuIy6x418w23tFqRfS6CXHhZrCiSEpXVlo/F+usr8v4/3G6O0u7CpsaO1qop+v4Ip7PRCBqQ==", "license": "MIT", "dependencies": { - "motion-dom": "^12.4.5", - "motion-utils": "^12.0.0", + "motion-dom": "^12.6.5", + "motion-utils": "^12.6.5", "tslib": "^2.4.0" }, "peerDependencies": { @@ -28247,6 +28514,7 @@ "version": "2.1.8", "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", + "license": "MIT", "dependencies": { "lodash": "^4.17.15" } @@ -28756,7 +29024,8 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/hull.js/-/hull.js-1.0.6.tgz", "integrity": "sha512-TC7e9sHYOaCVms0sn2hN7buxnaGfcl9h5EPVoVX9DTPoMpqQiS9bf3tmGDgiNaMVHBD91RAvWjCxrJ5Jx8BI5A==", - "deprecated": "This package is no longer published on npmjs.com, you are using a deprecated and vulnerable version. Do not use it! Check project homepage on GitHub to see how to fetch the latest version: https://github.com/andriiheonia/hull?tab=readme-ov-file#npm-package" + "deprecated": "This package is unmaintained and vulnerable. Do not use it.", + "license": "BSD" }, "node_modules/human-signals": { "version": "2.1.0", @@ -29171,7 +29440,8 @@ "node_modules/is-any-array": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-any-array/-/is-any-array-2.0.1.tgz", - "integrity": "sha512-UtilS7hLRu++wb/WBAw9bNuP1Eg04Ivn1vERJck8zJthEvXCBEBpGR/33u/xLKWEQf95803oalHrVDptcAvFdQ==" + "integrity": "sha512-UtilS7hLRu++wb/WBAw9bNuP1Eg04Ivn1vERJck8zJthEvXCBEBpGR/33u/xLKWEQf95803oalHrVDptcAvFdQ==", + "license": "MIT" }, "node_modules/is-arguments": { "version": "1.1.1", @@ -29874,6 +30144,15 @@ "is-stream": "^1.0.1" } }, + "node_modules/isomorphic-rslog": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/isomorphic-rslog/-/isomorphic-rslog-0.0.7.tgz", + "integrity": "sha512-n6/XnKnZ5eLEj6VllG4XmamXG7/F69nls8dcynHyhcTpsPUYgcgx4ifEaCo4lQJ2uzwfmIT+F0KBGwBcMKmt5g==", + "license": "MIT", + "engines": { + "node": ">=14.17.6" + } + }, "node_modules/isomorphic-unfetch": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-4.0.2.tgz", @@ -31409,18 +31688,6 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/lightningcss/node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "license": "Apache-2.0", - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/lilconfig": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", @@ -31439,9 +31706,9 @@ "license": "MIT" }, "node_modules/lint-staged": { - "version": "15.4.3", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.4.3.tgz", - "integrity": "sha512-FoH1vOeouNh1pw+90S+cnuoFwRfUD9ijY2GKy5h7HS3OR7JVir2N2xrsa0+Twc1B7cW72L+88geG5cW4wIhn7g==", + "version": "15.5.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.5.0.tgz", + "integrity": "sha512-WyCzSbfYGhK7cU+UuDDkzUiytbfbi0ZdPy2orwtM75P3WTtQBzmG40cCxIa8Ii2+XjfxzLH6Be46tUfWS85Xfg==", "dev": true, "license": "MIT", "dependencies": { @@ -32420,6 +32687,8 @@ }, "node_modules/media-typer": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", "license": "MIT", "engines": { "node": ">= 0.8" @@ -32864,6 +33133,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/ml-array-max/-/ml-array-max-1.2.4.tgz", "integrity": "sha512-BlEeg80jI0tW6WaPyGxf5Sa4sqvcyY6lbSn5Vcv44lp1I2GR6AWojfUvLnGTNsIXrZ8uqWmo8VcG1WpkI2ONMQ==", + "license": "MIT", "dependencies": { "is-any-array": "^2.0.0" } @@ -32872,6 +33142,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/ml-array-min/-/ml-array-min-1.2.3.tgz", "integrity": "sha512-VcZ5f3VZ1iihtrGvgfh/q0XlMobG6GQ8FsNyQXD3T+IlstDv85g8kfV0xUG1QPRO/t21aukaJowDzMTc7j5V6Q==", + "license": "MIT", "dependencies": { "is-any-array": "^2.0.0" } @@ -32880,6 +33151,7 @@ "version": "1.3.7", "resolved": "https://registry.npmjs.org/ml-array-rescale/-/ml-array-rescale-1.3.7.tgz", "integrity": "sha512-48NGChTouvEo9KBctDfHC3udWnQKNKEWN0ziELvY3KG25GR5cA8K8wNVzracsqSW1QEkAXjTNx+ycgAv06/1mQ==", + "license": "MIT", "dependencies": { "is-any-array": "^2.0.0", "ml-array-max": "^1.2.4", @@ -32887,9 +33159,10 @@ } }, "node_modules/ml-matrix": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ml-matrix/-/ml-matrix-6.12.0.tgz", - "integrity": "sha512-AGfR+pWaC0GmzjUnB6BfwhndPEUGz0i7QUYdqNuw1zhTov/vSRJ9pP2hs6BoGpaSbtXgrKjZz2zjD1M0xuur6A==", + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/ml-matrix/-/ml-matrix-6.12.1.tgz", + "integrity": "sha512-TJ+8eOFdp+INvzR4zAuwBQJznDUfktMtOB6g/hUcGh3rcyjxbz4Te57Pgri8Q9bhSQ7Zys4IYOGhFdnlgeB6Lw==", + "license": "MIT", "dependencies": { "is-any-array": "^2.0.1", "ml-array-rescale": "^1.3.7" @@ -33039,18 +33312,18 @@ } }, "node_modules/motion-dom": { - "version": "12.4.5", - "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.4.5.tgz", - "integrity": "sha512-Q2xmhuyYug1CGTo0jdsL05EQ4RhIYXlggFS/yPhQQRNzbrhjKQ1tbjThx5Plv68aX31LsUQRq4uIkuDxdO5vRQ==", + "version": "12.6.5", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.6.5.tgz", + "integrity": "sha512-jpM9TQLXzYMWMJ7Ec7sAj0iis8oIuu6WvjI3yNKJLdrZyrsI/b2cRInDVL8dCl683zQQq19DpL9cSMP+k8T1NA==", "license": "MIT", "dependencies": { - "motion-utils": "^12.0.0" + "motion-utils": "^12.6.5" } }, "node_modules/motion-utils": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.0.0.tgz", - "integrity": "sha512-MNFiBKbbqnmvOjkPyOKgHUp3Q6oiokLkI1bEwm5QA28cxMZrv0CbbBGDNmhF6DIXsi1pCQBSs0dX8xjeER1tmA==", + "version": "12.6.5", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.6.5.tgz", + "integrity": "sha512-IsOeKsOF+FWBhxQEDFBO6ZYC8/jlidmVbbLpe9/lXSA9j9kzGIMUuIBx2SZY+0reAS0DjZZ1i7dJp4NHrjocPw==", "license": "MIT" }, "node_modules/ms": { @@ -34780,9 +35053,9 @@ } }, "node_modules/piscina": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.8.0.tgz", - "integrity": "sha512-EZJb+ZxDrQf3dihsUL7p42pjNyrNIFJCrRHPMgxu/svsj+P3xS3fuEWp7k2+rfsavfl1N0G29b1HGs7J0m8rZA==", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.9.2.tgz", + "integrity": "sha512-Fq0FERJWFEUpB4eSY59wSNwXD4RYqR+nR/WiEVcZW8IWfVBxJJafcgTEZDQo8k3w0sUarJ8RyVbbUF4GQ2LGbQ==", "license": "MIT", "optionalDependencies": { "@napi-rs/nice": "^1.0.1" @@ -36969,9 +37242,9 @@ } }, "node_modules/prettier": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.2.tgz", - "integrity": "sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" @@ -37559,9 +37832,9 @@ } }, "node_modules/rc-cascader": { - "version": "3.33.0", - "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.33.0.tgz", - "integrity": "sha512-JvZrMbKBXIbEDmpIORxqvedY/bck6hGbs3hxdWT8eS9wSQ1P7//lGxbyKjOSyQiVBbgzNWriSe6HoMcZO/+0rQ==", + "version": "3.33.1", + "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.33.1.tgz", + "integrity": "sha512-Kyl4EJ7ZfCBuidmZVieegcbFw0RcU5bHHSbtEdmuLYd0fYHCAiYKZ6zon7fWAVyC6rWWOOib0XKdTSf7ElC9rg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.25.7", @@ -37682,9 +37955,9 @@ } }, "node_modules/rc-image": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/rc-image/-/rc-image-7.11.0.tgz", - "integrity": "sha512-aZkTEZXqeqfPZtnSdNUnKQA0N/3MbgR7nUnZ+/4MfSFWPFHZau4p5r5ShaI0KPEMnNjv4kijSCFq/9wtJpwykw==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/rc-image/-/rc-image-7.11.1.tgz", + "integrity": "sha512-XuoWx4KUXg7hNy5mRTy1i8c8p3K8boWg6UajbHpDXS5AlRVucNfTi5YxTtPBTBzegxAZpvuLfh3emXFt6ybUdA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.11.2", @@ -37700,9 +37973,9 @@ } }, "node_modules/rc-input": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/rc-input/-/rc-input-1.7.2.tgz", - "integrity": "sha512-g3nYONnl4edWj2FfVoxsU3Ec4XTE+Hb39Kfh2MFxMZjp/0gGyPUgy/v7ZhS27ZxUFNkuIDYXm9PJsLyJbtg86A==", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/rc-input/-/rc-input-1.7.3.tgz", + "integrity": "sha512-A5w4egJq8+4JzlQ55FfQjDnPvOaAbzwC3VLOAdOytyek3TboSOP9qxN+Gifup+shVXfvecBLBbWBpWxmk02SWQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.11.1", @@ -37834,9 +38107,9 @@ } }, "node_modules/rc-picker": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-4.11.2.tgz", - "integrity": "sha512-Cwa3frWpefhESBF20HBJtvWx3q1hCrMxSUrzuuWMTGoZVPhQllGEp2IUfzo9jC5LKm4kJx7IrH8q/W/y9wClAw==", + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-4.11.3.tgz", + "integrity": "sha512-MJ5teb7FlNE0NFHTncxXQ62Y5lytq6sh5nUw0iH8OkHL/TjARSEvSHpr940pWgjGANpjCwyMdvsEV55l5tYNSg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.24.7", @@ -38031,9 +38304,9 @@ } }, "node_modules/rc-table": { - "version": "7.50.3", - "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.50.3.tgz", - "integrity": "sha512-Z4/zNCzjv7f/XzPRecb+vJU0DJKdsYt4YRkDzNl4G05m7JmxrKGYC2KqN1Ew6jw2zJq7cxVv3z39qyZOHMuf7A==", + "version": "7.50.4", + "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.50.4.tgz", + "integrity": "sha512-Y+YuncnQqoS5e7yHvfvlv8BmCvwDYDX/2VixTBEhkMDk9itS9aBINp4nhzXFKiBP/frG4w0pS9d9Rgisl0T1Bw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.1", @@ -38107,9 +38380,9 @@ } }, "node_modules/rc-tree": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-5.13.0.tgz", - "integrity": "sha512-2+lFvoVRnvHQ1trlpXMOWtF8BUgF+3TiipG72uOfhpL5CUdXCk931kvDdUkTL/IZVtNEDQKwEEmJbAYJSA5NnA==", + "version": "5.13.1", + "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-5.13.1.tgz", + "integrity": "sha512-FNhIefhftobCdUJshO7M8uZTA9F4OPGVXqGfZkkD/5soDeOhwO06T/aKTrg0WD8gRg/pyfq+ql3aMymLHCTC4A==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.1", @@ -38249,9 +38522,9 @@ } }, "node_modules/react-confetti": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/react-confetti/-/react-confetti-6.2.3.tgz", - "integrity": "sha512-Jt6Fy3jE7FrpKxeDQ3oh36Bz6LoYt4o+vU578ghuF//NxADlcauDYvWr24S8hHKnQ90Uv01XXOngnKVBdZ73zQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/react-confetti/-/react-confetti-6.4.0.tgz", + "integrity": "sha512-5MdGUcqxrTU26I2EU7ltkWPwxvucQTuqMm8dUz72z2YMqTD6s9vMcDUysk7n9jnC+lXuCPeJJ7Knf98VEYE9Rg==", "license": "MIT", "dependencies": { "tween-functions": "^1.2.0" @@ -39704,23 +39977,48 @@ } }, "node_modules/router": { - "version": "2.0.0", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", "license": "MIT", "dependencies": { - "array-flatten": "3.0.0", - "is-promise": "4.0.0", - "methods": "~1.1.2", - "parseurl": "~1.3.3", - "path-to-regexp": "^8.0.0", - "setprototypeof": "1.2.0", - "utils-merge": "1.0.1" + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 18" + } + }, + "node_modules/router/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/router/node_modules/is-promise": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/router/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==", "license": "MIT" }, "node_modules/run-applescript": { @@ -40897,9 +41195,9 @@ } }, "node_modules/std-env": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz", - "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.1.tgz", + "integrity": "sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==", "dev": true, "license": "MIT" }, @@ -41329,9 +41627,9 @@ "license": "MIT" }, "node_modules/styled-components": { - "version": "6.1.15", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.15.tgz", - "integrity": "sha512-PpOTEztW87Ua2xbmLa7yssjNyUF9vE7wdldRfn1I2E6RTkqknkBYpj771OxM/xrvRGinLy2oysa7GOd7NcZZIA==", + "version": "6.1.16", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.16.tgz", + "integrity": "sha512-KpWB6ORAWGmbWM10cDJfEV6sXc/uVkkkQV3SLwTNQ/E/PqWgNHIoMSLh1Lnk2FkB9+JHK7uuMq1i+9ArxDD7iQ==", "license": "MIT", "dependencies": { "@emotion/is-prop-valid": "1.2.2", @@ -41917,9 +42215,9 @@ } }, "node_modules/swr": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.2.tgz", - "integrity": "sha512-RosxFpiabojs75IwQ316DGoDRmOqtiAj0tg8wCcbEu4CiLZBs/a9QNtHV7TUfDXmmlgqij/NqzKq/eLelyv9xA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.3.tgz", + "integrity": "sha512-dshNvs3ExOqtZ6kJBaAsabhPdHyeY4P2cKwRCniDVifBMoG/SVI7tfLWqPXriVspf2Rg4tPzXJTnwaihIeFw2A==", "license": "MIT", "dependencies": { "dequal": "^2.0.3", @@ -42565,9 +42863,9 @@ } }, "node_modules/ts-jest": { - "version": "29.2.6", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.6.tgz", - "integrity": "sha512-yTNZVZqc8lSixm+QGVFcPe6+yj7+TWZwIesuOWvfcn4B9bz5x4NDzVCQQjOs7Hfouu36aEqfEbo9Qpo+gq8dDg==", + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.0.tgz", + "integrity": "sha512-4bfGBX7Gd1Aqz3SyeDS9O276wEU/BInZxskPrbhZLyv+c1wskDCqDFMJQJLWrIr/fKoAH4GE5dKUlrdyvo+39A==", "dev": true, "license": "MIT", "dependencies": { @@ -42579,6 +42877,7 @@ "lodash.memoize": "^4.1.2", "make-error": "^1.3.6", "semver": "^7.7.1", + "type-fest": "^4.37.0", "yargs-parser": "^21.1.1" }, "bin": { @@ -42613,6 +42912,19 @@ } } }, + "node_modules/ts-jest/node_modules/type-fest": { + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.38.0.tgz", + "integrity": "sha512-2dBz5D5ycHIoliLYLi0Q2V7KRaDlH0uWIvmk7TYlAg5slqwiPv1ezJdZm1QEM0xgk29oYWMCbIG7E6gHpvChlg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ts-jest/node_modules/yargs-parser": { "version": "21.1.1", "dev": true, @@ -43000,7 +43312,9 @@ } }, "node_modules/type-is": { - "version": "2.0.0", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", "license": "MIT", "dependencies": { "content-type": "^1.0.5", @@ -43012,17 +43326,21 @@ } }, "node_modules/type-is/node_modules/mime-db": { - "version": "1.53.0", + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/type-is/node_modules/mime-types": { - "version": "3.0.0", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", "license": "MIT", "dependencies": { - "mime-db": "^1.53.0" + "mime-db": "^1.54.0" }, "engines": { "node": ">= 0.6" @@ -43115,9 +43433,9 @@ } }, "node_modules/typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -44268,9 +44586,9 @@ } }, "node_modules/vite-node": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.6.tgz", - "integrity": "sha512-s51RzrTkXKJrhNbUzQRsarjmAae7VmMPAsRT7lppVpIg6mK3zGthP9Hgz0YQQKuNcF+Ii7DfYk3Fxz40jRmePw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.1.1.tgz", + "integrity": "sha512-V+IxPAE2FvXpTCHXyNem0M+gWm6J7eRyWPR6vYoG/Gl+IscNOjXzztUhimQgTxaAoUoj40Qqimaa0NLIOOAH4w==", "dev": true, "license": "MIT", "dependencies": { @@ -44291,9 +44609,9 @@ } }, "node_modules/vite-node/node_modules/@esbuild/aix-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", - "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz", + "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==", "cpu": [ "ppc64" ], @@ -44303,15 +44621,14 @@ "os": [ "aix" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vite-node/node_modules/@esbuild/android-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", - "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz", + "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==", "cpu": [ "arm" ], @@ -44321,15 +44638,14 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vite-node/node_modules/@esbuild/android-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", - "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz", + "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==", "cpu": [ "arm64" ], @@ -44339,15 +44655,14 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vite-node/node_modules/@esbuild/android-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", - "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz", + "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==", "cpu": [ "x64" ], @@ -44357,15 +44672,14 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vite-node/node_modules/@esbuild/darwin-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz", + "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==", "cpu": [ "arm64" ], @@ -44375,15 +44689,14 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vite-node/node_modules/@esbuild/darwin-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", - "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz", + "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==", "cpu": [ "x64" ], @@ -44393,15 +44706,14 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vite-node/node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", - "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz", + "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==", "cpu": [ "arm64" ], @@ -44411,15 +44723,14 @@ "os": [ "freebsd" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vite-node/node_modules/@esbuild/freebsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", - "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz", + "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==", "cpu": [ "x64" ], @@ -44429,15 +44740,14 @@ "os": [ "freebsd" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vite-node/node_modules/@esbuild/linux-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", - "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz", + "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==", "cpu": [ "arm" ], @@ -44447,15 +44757,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vite-node/node_modules/@esbuild/linux-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", - "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz", + "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==", "cpu": [ "arm64" ], @@ -44465,15 +44774,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vite-node/node_modules/@esbuild/linux-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", - "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz", + "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==", "cpu": [ "ia32" ], @@ -44483,15 +44791,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vite-node/node_modules/@esbuild/linux-loong64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", - "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz", + "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==", "cpu": [ "loong64" ], @@ -44501,15 +44808,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vite-node/node_modules/@esbuild/linux-mips64el": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", - "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz", + "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==", "cpu": [ "mips64el" ], @@ -44519,15 +44825,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vite-node/node_modules/@esbuild/linux-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", - "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz", + "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==", "cpu": [ "ppc64" ], @@ -44537,15 +44842,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vite-node/node_modules/@esbuild/linux-riscv64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", - "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz", + "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==", "cpu": [ "riscv64" ], @@ -44555,15 +44859,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vite-node/node_modules/@esbuild/linux-s390x": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", - "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz", + "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==", "cpu": [ "s390x" ], @@ -44573,15 +44876,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vite-node/node_modules/@esbuild/linux-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", - "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz", + "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==", "cpu": [ "x64" ], @@ -44591,15 +44893,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vite-node/node_modules/@esbuild/netbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", - "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz", + "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==", "cpu": [ "x64" ], @@ -44609,15 +44910,14 @@ "os": [ "netbsd" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vite-node/node_modules/@esbuild/openbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", - "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz", + "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==", "cpu": [ "x64" ], @@ -44627,15 +44927,14 @@ "os": [ "openbsd" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vite-node/node_modules/@esbuild/sunos-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", - "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz", + "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==", "cpu": [ "x64" ], @@ -44645,15 +44944,14 @@ "os": [ "sunos" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vite-node/node_modules/@esbuild/win32-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", - "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz", + "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==", "cpu": [ "arm64" ], @@ -44663,15 +44961,14 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vite-node/node_modules/@esbuild/win32-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", - "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz", + "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==", "cpu": [ "ia32" ], @@ -44681,15 +44978,14 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vite-node/node_modules/@esbuild/win32-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", - "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz", + "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==", "cpu": [ "x64" ], @@ -44699,7 +44995,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } @@ -44732,14 +45027,12 @@ } }, "node_modules/vite-node/node_modules/esbuild": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz", + "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==", "dev": true, "hasInstallScript": true, "license": "MIT", - "optional": true, - "peer": true, "bin": { "esbuild": "bin/esbuild" }, @@ -44747,31 +45040,31 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.0", - "@esbuild/android-arm": "0.25.0", - "@esbuild/android-arm64": "0.25.0", - "@esbuild/android-x64": "0.25.0", - "@esbuild/darwin-arm64": "0.25.0", - "@esbuild/darwin-x64": "0.25.0", - "@esbuild/freebsd-arm64": "0.25.0", - "@esbuild/freebsd-x64": "0.25.0", - "@esbuild/linux-arm": "0.25.0", - "@esbuild/linux-arm64": "0.25.0", - "@esbuild/linux-ia32": "0.25.0", - "@esbuild/linux-loong64": "0.25.0", - "@esbuild/linux-mips64el": "0.25.0", - "@esbuild/linux-ppc64": "0.25.0", - "@esbuild/linux-riscv64": "0.25.0", - "@esbuild/linux-s390x": "0.25.0", - "@esbuild/linux-x64": "0.25.0", - "@esbuild/netbsd-arm64": "0.25.0", - "@esbuild/netbsd-x64": "0.25.0", - "@esbuild/openbsd-arm64": "0.25.0", - "@esbuild/openbsd-x64": "0.25.0", - "@esbuild/sunos-x64": "0.25.0", - "@esbuild/win32-arm64": "0.25.0", - "@esbuild/win32-ia32": "0.25.0", - "@esbuild/win32-x64": "0.25.0" + "@esbuild/aix-ppc64": "0.25.2", + "@esbuild/android-arm": "0.25.2", + "@esbuild/android-arm64": "0.25.2", + "@esbuild/android-x64": "0.25.2", + "@esbuild/darwin-arm64": "0.25.2", + "@esbuild/darwin-x64": "0.25.2", + "@esbuild/freebsd-arm64": "0.25.2", + "@esbuild/freebsd-x64": "0.25.2", + "@esbuild/linux-arm": "0.25.2", + "@esbuild/linux-arm64": "0.25.2", + "@esbuild/linux-ia32": "0.25.2", + "@esbuild/linux-loong64": "0.25.2", + "@esbuild/linux-mips64el": "0.25.2", + "@esbuild/linux-ppc64": "0.25.2", + "@esbuild/linux-riscv64": "0.25.2", + "@esbuild/linux-s390x": "0.25.2", + "@esbuild/linux-x64": "0.25.2", + "@esbuild/netbsd-arm64": "0.25.2", + "@esbuild/netbsd-x64": "0.25.2", + "@esbuild/openbsd-arm64": "0.25.2", + "@esbuild/openbsd-x64": "0.25.2", + "@esbuild/sunos-x64": "0.25.2", + "@esbuild/win32-arm64": "0.25.2", + "@esbuild/win32-ia32": "0.25.2", + "@esbuild/win32-x64": "0.25.2" } }, "node_modules/vite-node/node_modules/ms": { @@ -44782,13 +45075,13 @@ "license": "MIT" }, "node_modules/vite-node/node_modules/rollup": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.8.tgz", - "integrity": "sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.38.0.tgz", + "integrity": "sha512-5SsIRtJy9bf1ErAOiFMFzl64Ex9X5V7bnJ+WlFMb+zmP459OSWCEG7b0ERZ+PEU7xPt4OG3RHbrp1LJlXxYTrw==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.6" + "@types/estree": "1.0.7" }, "bin": { "rollup": "dist/bin/rollup" @@ -44798,25 +45091,26 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.34.8", - "@rollup/rollup-android-arm64": "4.34.8", - "@rollup/rollup-darwin-arm64": "4.34.8", - "@rollup/rollup-darwin-x64": "4.34.8", - "@rollup/rollup-freebsd-arm64": "4.34.8", - "@rollup/rollup-freebsd-x64": "4.34.8", - "@rollup/rollup-linux-arm-gnueabihf": "4.34.8", - "@rollup/rollup-linux-arm-musleabihf": "4.34.8", - "@rollup/rollup-linux-arm64-gnu": "4.34.8", - "@rollup/rollup-linux-arm64-musl": "4.34.8", - "@rollup/rollup-linux-loongarch64-gnu": "4.34.8", - "@rollup/rollup-linux-powerpc64le-gnu": "4.34.8", - "@rollup/rollup-linux-riscv64-gnu": "4.34.8", - "@rollup/rollup-linux-s390x-gnu": "4.34.8", - "@rollup/rollup-linux-x64-gnu": "4.34.8", - "@rollup/rollup-linux-x64-musl": "4.34.8", - "@rollup/rollup-win32-arm64-msvc": "4.34.8", - "@rollup/rollup-win32-ia32-msvc": "4.34.8", - "@rollup/rollup-win32-x64-msvc": "4.34.8", + "@rollup/rollup-android-arm-eabi": "4.38.0", + "@rollup/rollup-android-arm64": "4.38.0", + "@rollup/rollup-darwin-arm64": "4.38.0", + "@rollup/rollup-darwin-x64": "4.38.0", + "@rollup/rollup-freebsd-arm64": "4.38.0", + "@rollup/rollup-freebsd-x64": "4.38.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.38.0", + "@rollup/rollup-linux-arm-musleabihf": "4.38.0", + "@rollup/rollup-linux-arm64-gnu": "4.38.0", + "@rollup/rollup-linux-arm64-musl": "4.38.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.38.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.38.0", + "@rollup/rollup-linux-riscv64-gnu": "4.38.0", + "@rollup/rollup-linux-riscv64-musl": "4.38.0", + "@rollup/rollup-linux-s390x-gnu": "4.38.0", + "@rollup/rollup-linux-x64-gnu": "4.38.0", + "@rollup/rollup-linux-x64-musl": "4.38.0", + "@rollup/rollup-win32-arm64-msvc": "4.38.0", + "@rollup/rollup-win32-ia32-msvc": "4.38.0", + "@rollup/rollup-win32-x64-msvc": "4.38.0", "fsevents": "~2.3.2" } }, @@ -44889,14 +45183,14 @@ } }, "node_modules/vite-node/node_modules/vite": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.1.1.tgz", - "integrity": "sha512-4GgM54XrwRfrOp297aIYspIti66k56v16ZnqHvrIM7mG+HjDlAwS7p+Srr7J6fGvEdOJ5JcQ/D9T7HhtdXDTzA==", + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.4.tgz", + "integrity": "sha512-veHMSew8CcRzhL5o8ONjy8gkfmFJAd5Ac16oxBUjlwgX3Gq2Wqr+qNC3TjPIpy7TPV/KporLga5GT9HqdrCizw==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.24.2", - "postcss": "^8.5.2", + "esbuild": "^0.25.0", + "postcss": "^8.5.3", "rollup": "^4.30.1" }, "bin": { @@ -44960,476 +45254,10 @@ } } }, - "node_modules/vite-node/node_modules/vite/node_modules/@esbuild/aix-ppc64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", - "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite-node/node_modules/vite/node_modules/@esbuild/android-arm": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", - "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite-node/node_modules/vite/node_modules/@esbuild/android-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", - "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite-node/node_modules/vite/node_modules/@esbuild/android-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", - "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite-node/node_modules/vite/node_modules/@esbuild/darwin-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", - "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite-node/node_modules/vite/node_modules/@esbuild/darwin-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", - "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite-node/node_modules/vite/node_modules/@esbuild/freebsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", - "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite-node/node_modules/vite/node_modules/@esbuild/freebsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", - "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite-node/node_modules/vite/node_modules/@esbuild/linux-arm": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", - "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite-node/node_modules/vite/node_modules/@esbuild/linux-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", - "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite-node/node_modules/vite/node_modules/@esbuild/linux-ia32": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", - "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite-node/node_modules/vite/node_modules/@esbuild/linux-loong64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", - "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite-node/node_modules/vite/node_modules/@esbuild/linux-mips64el": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", - "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite-node/node_modules/vite/node_modules/@esbuild/linux-ppc64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", - "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite-node/node_modules/vite/node_modules/@esbuild/linux-riscv64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", - "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite-node/node_modules/vite/node_modules/@esbuild/linux-s390x": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", - "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite-node/node_modules/vite/node_modules/@esbuild/linux-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", - "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite-node/node_modules/vite/node_modules/@esbuild/netbsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", - "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite-node/node_modules/vite/node_modules/@esbuild/netbsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", - "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite-node/node_modules/vite/node_modules/@esbuild/openbsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", - "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite-node/node_modules/vite/node_modules/@esbuild/openbsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", - "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite-node/node_modules/vite/node_modules/@esbuild/sunos-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", - "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite-node/node_modules/vite/node_modules/@esbuild/win32-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", - "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite-node/node_modules/vite/node_modules/@esbuild/win32-ia32": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", - "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite-node/node_modules/vite/node_modules/@esbuild/win32-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", - "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite-node/node_modules/vite/node_modules/esbuild": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", - "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.24.2", - "@esbuild/android-arm": "0.24.2", - "@esbuild/android-arm64": "0.24.2", - "@esbuild/android-x64": "0.24.2", - "@esbuild/darwin-arm64": "0.24.2", - "@esbuild/darwin-x64": "0.24.2", - "@esbuild/freebsd-arm64": "0.24.2", - "@esbuild/freebsd-x64": "0.24.2", - "@esbuild/linux-arm": "0.24.2", - "@esbuild/linux-arm64": "0.24.2", - "@esbuild/linux-ia32": "0.24.2", - "@esbuild/linux-loong64": "0.24.2", - "@esbuild/linux-mips64el": "0.24.2", - "@esbuild/linux-ppc64": "0.24.2", - "@esbuild/linux-riscv64": "0.24.2", - "@esbuild/linux-s390x": "0.24.2", - "@esbuild/linux-x64": "0.24.2", - "@esbuild/netbsd-arm64": "0.24.2", - "@esbuild/netbsd-x64": "0.24.2", - "@esbuild/openbsd-arm64": "0.24.2", - "@esbuild/openbsd-x64": "0.24.2", - "@esbuild/sunos-x64": "0.24.2", - "@esbuild/win32-arm64": "0.24.2", - "@esbuild/win32-ia32": "0.24.2", - "@esbuild/win32-x64": "0.24.2" - } - }, "node_modules/vite-node/node_modules/yaml": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", - "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz", + "integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==", "dev": true, "license": "ISC", "optional": true, @@ -45847,31 +45675,31 @@ } }, "node_modules/vitest": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.6.tgz", - "integrity": "sha512-/iL1Sc5VeDZKPDe58oGK4HUFLhw6b5XdY1MYawjuSaDA4sEfYlY9HnS6aCEG26fX+MgUi7MwlduTBHHAI/OvMA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.1.1.tgz", + "integrity": "sha512-kiZc/IYmKICeBAZr9DQ5rT7/6bD9G7uqQEki4fxazi1jdVl2mWGzedtBs5s6llz59yQhVb7FFY2MbHzHCnT79Q==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "3.0.6", - "@vitest/mocker": "3.0.6", - "@vitest/pretty-format": "^3.0.6", - "@vitest/runner": "3.0.6", - "@vitest/snapshot": "3.0.6", - "@vitest/spy": "3.0.6", - "@vitest/utils": "3.0.6", + "@vitest/expect": "3.1.1", + "@vitest/mocker": "3.1.1", + "@vitest/pretty-format": "^3.1.1", + "@vitest/runner": "3.1.1", + "@vitest/snapshot": "3.1.1", + "@vitest/spy": "3.1.1", + "@vitest/utils": "3.1.1", "chai": "^5.2.0", "debug": "^4.4.0", - "expect-type": "^1.1.0", + "expect-type": "^1.2.0", "magic-string": "^0.30.17", "pathe": "^2.0.3", - "std-env": "^3.8.0", + "std-env": "^3.8.1", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", "tinypool": "^1.0.2", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0", - "vite-node": "3.0.6", + "vite-node": "3.1.1", "why-is-node-running": "^2.3.0" }, "bin": { @@ -45887,8 +45715,8 @@ "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.0.6", - "@vitest/ui": "3.0.6", + "@vitest/browser": "3.1.1", + "@vitest/ui": "3.1.1", "happy-dom": "*", "jsdom": "*" }, @@ -45917,9 +45745,9 @@ } }, "node_modules/vitest/node_modules/@esbuild/aix-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", - "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz", + "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==", "cpu": [ "ppc64" ], @@ -45929,15 +45757,14 @@ "os": [ "aix" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vitest/node_modules/@esbuild/android-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", - "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz", + "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==", "cpu": [ "arm" ], @@ -45947,15 +45774,14 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vitest/node_modules/@esbuild/android-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", - "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz", + "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==", "cpu": [ "arm64" ], @@ -45965,15 +45791,14 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vitest/node_modules/@esbuild/android-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", - "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz", + "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==", "cpu": [ "x64" ], @@ -45983,15 +45808,14 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vitest/node_modules/@esbuild/darwin-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz", + "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==", "cpu": [ "arm64" ], @@ -46001,15 +45825,14 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vitest/node_modules/@esbuild/darwin-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", - "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz", + "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==", "cpu": [ "x64" ], @@ -46019,15 +45842,14 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vitest/node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", - "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz", + "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==", "cpu": [ "arm64" ], @@ -46037,15 +45859,14 @@ "os": [ "freebsd" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vitest/node_modules/@esbuild/freebsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", - "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz", + "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==", "cpu": [ "x64" ], @@ -46055,15 +45876,14 @@ "os": [ "freebsd" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vitest/node_modules/@esbuild/linux-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", - "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz", + "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==", "cpu": [ "arm" ], @@ -46073,15 +45893,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vitest/node_modules/@esbuild/linux-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", - "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz", + "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==", "cpu": [ "arm64" ], @@ -46091,15 +45910,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vitest/node_modules/@esbuild/linux-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", - "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz", + "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==", "cpu": [ "ia32" ], @@ -46109,15 +45927,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vitest/node_modules/@esbuild/linux-loong64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", - "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz", + "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==", "cpu": [ "loong64" ], @@ -46127,15 +45944,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vitest/node_modules/@esbuild/linux-mips64el": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", - "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz", + "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==", "cpu": [ "mips64el" ], @@ -46145,15 +45961,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vitest/node_modules/@esbuild/linux-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", - "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz", + "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==", "cpu": [ "ppc64" ], @@ -46163,15 +45978,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vitest/node_modules/@esbuild/linux-riscv64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", - "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz", + "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==", "cpu": [ "riscv64" ], @@ -46181,15 +45995,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vitest/node_modules/@esbuild/linux-s390x": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", - "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz", + "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==", "cpu": [ "s390x" ], @@ -46199,15 +46012,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vitest/node_modules/@esbuild/linux-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", - "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz", + "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==", "cpu": [ "x64" ], @@ -46217,15 +46029,14 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vitest/node_modules/@esbuild/netbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", - "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz", + "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==", "cpu": [ "x64" ], @@ -46235,15 +46046,14 @@ "os": [ "netbsd" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vitest/node_modules/@esbuild/openbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", - "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz", + "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==", "cpu": [ "x64" ], @@ -46253,15 +46063,14 @@ "os": [ "openbsd" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vitest/node_modules/@esbuild/sunos-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", - "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz", + "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==", "cpu": [ "x64" ], @@ -46271,15 +46080,14 @@ "os": [ "sunos" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vitest/node_modules/@esbuild/win32-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", - "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz", + "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==", "cpu": [ "arm64" ], @@ -46289,15 +46097,14 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vitest/node_modules/@esbuild/win32-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", - "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz", + "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==", "cpu": [ "ia32" ], @@ -46307,15 +46114,14 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vitest/node_modules/@esbuild/win32-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", - "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz", + "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==", "cpu": [ "x64" ], @@ -46325,19 +46131,18 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } }, "node_modules/vitest/node_modules/@vitest/mocker": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.6.tgz", - "integrity": "sha512-KPztr4/tn7qDGZfqlSPQoF2VgJcKxnDNhmfR3VgZ6Fy1bO8T9Fc1stUiTXtqz0yG24VpD00pZP5f8EOFknjNuQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.1.tgz", + "integrity": "sha512-bmpJJm7Y7i9BBELlLuuM1J1Q6EQ6K5Ye4wcyOpOMXMcePYKSIYlpcrCm4l/O6ja4VJA5G2aMJiuZkZdnxlC3SA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.0.6", + "@vitest/spy": "3.1.1", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, @@ -46385,14 +46190,12 @@ } }, "node_modules/vitest/node_modules/esbuild": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz", + "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==", "dev": true, "hasInstallScript": true, "license": "MIT", - "optional": true, - "peer": true, "bin": { "esbuild": "bin/esbuild" }, @@ -46400,31 +46203,31 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.0", - "@esbuild/android-arm": "0.25.0", - "@esbuild/android-arm64": "0.25.0", - "@esbuild/android-x64": "0.25.0", - "@esbuild/darwin-arm64": "0.25.0", - "@esbuild/darwin-x64": "0.25.0", - "@esbuild/freebsd-arm64": "0.25.0", - "@esbuild/freebsd-x64": "0.25.0", - "@esbuild/linux-arm": "0.25.0", - "@esbuild/linux-arm64": "0.25.0", - "@esbuild/linux-ia32": "0.25.0", - "@esbuild/linux-loong64": "0.25.0", - "@esbuild/linux-mips64el": "0.25.0", - "@esbuild/linux-ppc64": "0.25.0", - "@esbuild/linux-riscv64": "0.25.0", - "@esbuild/linux-s390x": "0.25.0", - "@esbuild/linux-x64": "0.25.0", - "@esbuild/netbsd-arm64": "0.25.0", - "@esbuild/netbsd-x64": "0.25.0", - "@esbuild/openbsd-arm64": "0.25.0", - "@esbuild/openbsd-x64": "0.25.0", - "@esbuild/sunos-x64": "0.25.0", - "@esbuild/win32-arm64": "0.25.0", - "@esbuild/win32-ia32": "0.25.0", - "@esbuild/win32-x64": "0.25.0" + "@esbuild/aix-ppc64": "0.25.2", + "@esbuild/android-arm": "0.25.2", + "@esbuild/android-arm64": "0.25.2", + "@esbuild/android-x64": "0.25.2", + "@esbuild/darwin-arm64": "0.25.2", + "@esbuild/darwin-x64": "0.25.2", + "@esbuild/freebsd-arm64": "0.25.2", + "@esbuild/freebsd-x64": "0.25.2", + "@esbuild/linux-arm": "0.25.2", + "@esbuild/linux-arm64": "0.25.2", + "@esbuild/linux-ia32": "0.25.2", + "@esbuild/linux-loong64": "0.25.2", + "@esbuild/linux-mips64el": "0.25.2", + "@esbuild/linux-ppc64": "0.25.2", + "@esbuild/linux-riscv64": "0.25.2", + "@esbuild/linux-s390x": "0.25.2", + "@esbuild/linux-x64": "0.25.2", + "@esbuild/netbsd-arm64": "0.25.2", + "@esbuild/netbsd-x64": "0.25.2", + "@esbuild/openbsd-arm64": "0.25.2", + "@esbuild/openbsd-x64": "0.25.2", + "@esbuild/sunos-x64": "0.25.2", + "@esbuild/win32-arm64": "0.25.2", + "@esbuild/win32-ia32": "0.25.2", + "@esbuild/win32-x64": "0.25.2" } }, "node_modules/vitest/node_modules/ms": { @@ -46435,13 +46238,13 @@ "license": "MIT" }, "node_modules/vitest/node_modules/rollup": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.8.tgz", - "integrity": "sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.38.0.tgz", + "integrity": "sha512-5SsIRtJy9bf1ErAOiFMFzl64Ex9X5V7bnJ+WlFMb+zmP459OSWCEG7b0ERZ+PEU7xPt4OG3RHbrp1LJlXxYTrw==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.6" + "@types/estree": "1.0.7" }, "bin": { "rollup": "dist/bin/rollup" @@ -46451,25 +46254,26 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.34.8", - "@rollup/rollup-android-arm64": "4.34.8", - "@rollup/rollup-darwin-arm64": "4.34.8", - "@rollup/rollup-darwin-x64": "4.34.8", - "@rollup/rollup-freebsd-arm64": "4.34.8", - "@rollup/rollup-freebsd-x64": "4.34.8", - "@rollup/rollup-linux-arm-gnueabihf": "4.34.8", - "@rollup/rollup-linux-arm-musleabihf": "4.34.8", - "@rollup/rollup-linux-arm64-gnu": "4.34.8", - "@rollup/rollup-linux-arm64-musl": "4.34.8", - "@rollup/rollup-linux-loongarch64-gnu": "4.34.8", - "@rollup/rollup-linux-powerpc64le-gnu": "4.34.8", - "@rollup/rollup-linux-riscv64-gnu": "4.34.8", - "@rollup/rollup-linux-s390x-gnu": "4.34.8", - "@rollup/rollup-linux-x64-gnu": "4.34.8", - "@rollup/rollup-linux-x64-musl": "4.34.8", - "@rollup/rollup-win32-arm64-msvc": "4.34.8", - "@rollup/rollup-win32-ia32-msvc": "4.34.8", - "@rollup/rollup-win32-x64-msvc": "4.34.8", + "@rollup/rollup-android-arm-eabi": "4.38.0", + "@rollup/rollup-android-arm64": "4.38.0", + "@rollup/rollup-darwin-arm64": "4.38.0", + "@rollup/rollup-darwin-x64": "4.38.0", + "@rollup/rollup-freebsd-arm64": "4.38.0", + "@rollup/rollup-freebsd-x64": "4.38.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.38.0", + "@rollup/rollup-linux-arm-musleabihf": "4.38.0", + "@rollup/rollup-linux-arm64-gnu": "4.38.0", + "@rollup/rollup-linux-arm64-musl": "4.38.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.38.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.38.0", + "@rollup/rollup-linux-riscv64-gnu": "4.38.0", + "@rollup/rollup-linux-riscv64-musl": "4.38.0", + "@rollup/rollup-linux-s390x-gnu": "4.38.0", + "@rollup/rollup-linux-x64-gnu": "4.38.0", + "@rollup/rollup-linux-x64-musl": "4.38.0", + "@rollup/rollup-win32-arm64-msvc": "4.38.0", + "@rollup/rollup-win32-ia32-msvc": "4.38.0", + "@rollup/rollup-win32-x64-msvc": "4.38.0", "fsevents": "~2.3.2" } }, @@ -46542,14 +46346,14 @@ } }, "node_modules/vitest/node_modules/vite": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.1.1.tgz", - "integrity": "sha512-4GgM54XrwRfrOp297aIYspIti66k56v16ZnqHvrIM7mG+HjDlAwS7p+Srr7J6fGvEdOJ5JcQ/D9T7HhtdXDTzA==", + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.4.tgz", + "integrity": "sha512-veHMSew8CcRzhL5o8ONjy8gkfmFJAd5Ac16oxBUjlwgX3Gq2Wqr+qNC3TjPIpy7TPV/KporLga5GT9HqdrCizw==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.24.2", - "postcss": "^8.5.2", + "esbuild": "^0.25.0", + "postcss": "^8.5.3", "rollup": "^4.30.1" }, "bin": { @@ -46613,476 +46417,10 @@ } } }, - "node_modules/vitest/node_modules/vite/node_modules/@esbuild/aix-ppc64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", - "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/vite/node_modules/@esbuild/android-arm": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", - "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/vite/node_modules/@esbuild/android-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", - "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/vite/node_modules/@esbuild/android-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", - "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/vite/node_modules/@esbuild/darwin-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", - "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/vite/node_modules/@esbuild/darwin-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", - "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/vite/node_modules/@esbuild/freebsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", - "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/vite/node_modules/@esbuild/freebsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", - "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/vite/node_modules/@esbuild/linux-arm": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", - "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/vite/node_modules/@esbuild/linux-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", - "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/vite/node_modules/@esbuild/linux-ia32": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", - "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/vite/node_modules/@esbuild/linux-loong64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", - "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/vite/node_modules/@esbuild/linux-mips64el": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", - "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/vite/node_modules/@esbuild/linux-ppc64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", - "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/vite/node_modules/@esbuild/linux-riscv64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", - "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/vite/node_modules/@esbuild/linux-s390x": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", - "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/vite/node_modules/@esbuild/linux-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", - "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/vite/node_modules/@esbuild/netbsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", - "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/vite/node_modules/@esbuild/netbsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", - "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/vite/node_modules/@esbuild/openbsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", - "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/vite/node_modules/@esbuild/openbsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", - "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/vite/node_modules/@esbuild/sunos-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", - "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/vite/node_modules/@esbuild/win32-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", - "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/vite/node_modules/@esbuild/win32-ia32": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", - "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/vite/node_modules/@esbuild/win32-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", - "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/vite/node_modules/esbuild": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", - "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.24.2", - "@esbuild/android-arm": "0.24.2", - "@esbuild/android-arm64": "0.24.2", - "@esbuild/android-x64": "0.24.2", - "@esbuild/darwin-arm64": "0.24.2", - "@esbuild/darwin-x64": "0.24.2", - "@esbuild/freebsd-arm64": "0.24.2", - "@esbuild/freebsd-x64": "0.24.2", - "@esbuild/linux-arm": "0.24.2", - "@esbuild/linux-arm64": "0.24.2", - "@esbuild/linux-ia32": "0.24.2", - "@esbuild/linux-loong64": "0.24.2", - "@esbuild/linux-mips64el": "0.24.2", - "@esbuild/linux-ppc64": "0.24.2", - "@esbuild/linux-riscv64": "0.24.2", - "@esbuild/linux-s390x": "0.24.2", - "@esbuild/linux-x64": "0.24.2", - "@esbuild/netbsd-arm64": "0.24.2", - "@esbuild/netbsd-x64": "0.24.2", - "@esbuild/openbsd-arm64": "0.24.2", - "@esbuild/openbsd-x64": "0.24.2", - "@esbuild/sunos-x64": "0.24.2", - "@esbuild/win32-arm64": "0.24.2", - "@esbuild/win32-ia32": "0.24.2", - "@esbuild/win32-x64": "0.24.2" - } - }, "node_modules/vitest/node_modules/yaml": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", - "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz", + "integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==", "dev": true, "license": "ISC", "optional": true, @@ -47524,6 +46862,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/workerize-loader/-/workerize-loader-2.0.2.tgz", "integrity": "sha512-HoZ6XY4sHWxA2w0WpzgBwUiR3dv1oo7bS+oCwIpb6n54MclQ/7KXdXsVIChTCygyuHtVuGBO1+i3HzTt699UJQ==", + "license": "MIT", "peer": true, "dependencies": { "loader-utils": "^2.0.0" @@ -47536,6 +46875,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "license": "MIT", "peer": true, "dependencies": { "big.js": "^5.2.2", diff --git a/client/package.json b/client/package.json index 8a3b71fda..c4cd910af 100644 --- a/client/package.json +++ b/client/package.json @@ -17,6 +17,8 @@ "lint:fix": "eslint --fix --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src ", "lint:js": "eslint --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src", "lint:prettier": "prettier -c --write \"**/**.{js,jsx,tsx,ts,less,md,json}\" --end-of-line auto", + "lint:check": "node scripts/lint-check.js", + "lint:check:fix": "node scripts/lint-check.js --fix", "prettier": "prettier -c --write \"**/**.{js,jsx,tsx,ts,less,md,json}\"", "preview": "npm run build && max preview --port 8000", "record": "cross-env NODE_ENV=development REACT_APP_ENV=test max record --scene=login", @@ -25,7 +27,8 @@ "start:no-mock": "cross-env MOCK=none UMI_ENV=dev max dev", "start:pre": "cross-env REACT_APP_ENV=pre UMI_ENV=dev max dev", "start:test": "cross-env REACT_APP_ENV=test MOCK=none UMI_ENV=dev max dev", - "test": "vitest --disable-console-intercept --reporter=basic ", + "test": "vitest run", + "test:dev": "vitest --disable-console-intercept", "tsc": "tsc --noEmit", "serve": "node production-server.js", "build-shared": "npm run build ../shared-lib" @@ -45,21 +48,21 @@ "immer": "^10.1.1" }, "dependencies": { - "@ant-design/charts": "^2.2.6", - "@ant-design/icons": "^5.6.1", - "@ant-design/pro-components": "^2.8.6", + "@ant-design/charts": "^2.2.7", + "@ant-design/icons": "^6.0.0", + "@ant-design/pro-components": "^2.8.7", "@ant-design/use-emotion-css": "1.0.4", - "@antv/g2plot": "^2.4.32", - "@lottiefiles/dotlottie-react": "^0.13.0", - "@umijs/max": "^4.4.5", + "@antv/g2plot": "^2.4.33", + "@lottiefiles/dotlottie-react": "^0.13.3", + "@umijs/max": "^4.4.6", "@umijs/plugin-antd-dayjs": "^0.3.0", "@umijs/route-utils": "^4.0.1", "@xterm/addon-fit": "^0.10.0", - "antd": "^5.24.2", + "antd": "^5.24.6", "buffer": "^6.0.3", "classnames": "^2.5.1", "dayjs": "^1.11.13", - "framer-motion": "^12.4.7", + "framer-motion": "^12.6.5", "lodash": "^4.17.21", "moment": "^2.30.1", "@monaco-editor/react": "^4.7.0", @@ -71,7 +74,7 @@ "rc-queue-anim": "^2.0.0", "rc-tween-one": "^3.0.6", "react": "^18.3.1", - "react-confetti": "^6.2.3", + "react-confetti": "^6.4.0", "react-dev-inspector": "^2.0.1", "react-dom": "^18.3.1", "react-helmet-async": "^2.0.5", @@ -82,48 +85,48 @@ "umi-presets-pro": "^2.0.3", "xterm": "^5.3.0", "@dnd-kit/core": "^6.3.1", - "express": "^5.0.1" + "express": "^5.1.0" }, "devDependencies": { "@ant-design/pro-cli": "^3.2.1", "@babel/preset-env": "^7.26.9", "@babel/preset-react": "^7.26.3", - "@babel/preset-typescript": "^7.26.0", - "@eslint/eslintrc": "^3.3.0", - "@eslint/js": "^9.21.0", + "@babel/preset-typescript": "^7.27.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "^9.23.0", "@testing-library/jest-dom": "^6.6.3", - "@testing-library/react": "^16.2.0", + "@testing-library/react": "^16.3.0", "@types/classnames": "^2.3.4", - "@types/express": "^5.0.0", + "@types/express": "^5.0.1", "@types/history": "^5.0.0", "@types/jest": "^29.5.14", - "@types/lodash": "^4.17.15", - "@types/luxon": "^3.4.2", + "@types/lodash": "^4.17.16", + "@types/luxon": "^3.6.2", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@types/react-helmet": "^6.1.11", "@types/testing-library__jest-dom": "^6.0.0", - "@typescript-eslint/eslint-plugin": "^8.24.1", + "@typescript-eslint/eslint-plugin": "^8.28.0", "@umijs/fabric": "^4.0.1", - "@umijs/lint": "^4.4.5", + "@umijs/lint": "^4.4.6", "antd-pro-merge-less": "^3.0.11", "babel-jest": "^29.7.0", "cross-env": "^7.0.3", "eslint": "^8.57.0", "eslint-plugin-jest": "^28.11.0", "eslint-plugin-react": "^7.37.4", - "eslint-plugin-react-hooks": "^5.1.0", + "eslint-plugin-react-hooks": "^5.2.0", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "jest-transform-stub": "^2.0.0", - "lint-staged": "^15.4.3", + "lint-staged": "^15.5.0", "mockjs": "^1.1.0", "node-fetch": "^3.3.2", - "prettier": "^3.5.2", - "ts-jest": "^29.2.6", + "prettier": "^3.5.3", + "ts-jest": "^29.3.0", "ts-node": "^10.9.2", - "typescript": "^5.7.3", - "vitest": "^3.0.6" + "typescript": "^5.8.3", + "vitest": "^3.1.1" }, "engines": { "node": ">=20.0.0" diff --git a/client/public/squirrels/cleaned_smooth_fox.svg b/client/public/squirrels/cleaned_smooth_fox.svg new file mode 100644 index 000000000..936851c7a --- /dev/null +++ b/client/public/squirrels/cleaned_smooth_fox.svg @@ -0,0 +1,525 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/client/public/squirrels/happy-fox.svg b/client/public/squirrels/happy-fox.svg new file mode 100644 index 000000000..549f39db8 --- /dev/null +++ b/client/public/squirrels/happy-fox.svg @@ -0,0 +1,3457 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/client/public/squirrels/optimized_running_fox.svg b/client/public/squirrels/optimized_running_fox.svg new file mode 100644 index 000000000..c1cc96065 --- /dev/null +++ b/client/public/squirrels/optimized_running_fox.svg @@ -0,0 +1,452 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/client/scripts/README.md b/client/scripts/README.md new file mode 100644 index 000000000..5fbda49fa --- /dev/null +++ b/client/scripts/README.md @@ -0,0 +1,86 @@ +# CLI Linter for SquirrelServersManager + +This directory contains scripts for linting and code quality checks. + +## Lint Check Script + +The `lint-check.js` script provides a CLI interface to run ESLint on specified files or directories. It's designed to help verify your code against the project's coding standards. + +### Features + +- Run ESLint on specific files or directories +- Automatically fix problems when possible +- Detailed output with error and warning counts +- Customizable file patterns +- Color-coded output for better readability + +### Usage + +```bash +# Basic usage +npm run lint:check src/pages/Devices + +# With auto-fix +npm run lint:check:fix src/pages/Devices + +# Check a specific file +npm run lint:check src/pages/Devices/index.tsx + +# Check multiple paths +npm run lint:check src/components src/pages/Devices + +# With custom pattern (only TypeScript files) +node scripts/lint-check.js --pattern "**/*.ts" src +``` + +### Command Line Options + +- `--fix`: Automatically fix problems when possible +- `--verbose`: Show detailed output +- `--pattern`: Specify file pattern (default: "**/*.{ts,tsx,js,jsx}") +- `--help`: Show help + +### NPM Scripts + +The following npm scripts are available: + +- `npm run lint:check`: Run the linter without fixing +- `npm run lint:check:fix`: Run the linter with auto-fix + +## Custom ESLint Configuration + +The project includes a custom ESLint configuration for the refactored components in `src/pages/Devices/.eslintrc.js`. This configuration enforces: + +- Comprehensive JSDoc documentation +- React best practices +- Proper hook usage +- TypeScript naming conventions +- Code complexity limits +- Accessibility standards + +## Integration with CI/CD + +You can integrate this linter into your CI/CD pipeline by adding the following step: + +```yaml +- name: Lint Check + run: npm run lint:check src/pages/Devices +``` + +This will fail the build if there are any linting errors, ensuring code quality standards are maintained. + +## Extending the Linter + +To extend the linter with additional rules or configurations: + +1. Modify the `.eslintrc.js` file in the relevant directory +2. Update the `lint-check.js` script if needed +3. Add new npm scripts for specific linting tasks + +## Best Practices + +- Run the linter before committing changes +- Fix all errors and address warnings when possible +- Use the custom ESLint configuration as a guide for writing high-quality code +- Add JSDoc comments to all functions, interfaces, and classes +- Follow the naming conventions established in the codebase diff --git a/client/scripts/lint-check.js b/client/scripts/lint-check.js new file mode 100755 index 000000000..8b57b0044 --- /dev/null +++ b/client/scripts/lint-check.js @@ -0,0 +1,93 @@ +#!/usr/bin/env node + +// Simple ESLint runner for checking code quality +const { ESLint } = require('eslint'); +const path = require('path'); +const fs = require('fs'); + +// Parse command line arguments +const args = process.argv.slice(2); +const options = { + fix: args.includes('--fix'), + verbose: args.includes('--verbose') +}; + +// Get paths to lint +const paths = args.filter(arg => !arg.startsWith('--')); + +if (paths.length === 0) { + console.log('Usage: node scripts/lint-check.js [--fix] [--verbose] '); + process.exit(0); +} + +// Main function +async function main() { + try { + console.log('🔍 Running ESLint to check code quality...'); + + // Initialize ESLint + const eslint = new ESLint({ + fix: options.fix, + extensions: ['.js', '.jsx', '.ts', '.tsx'], + useEslintrc: true, + }); + + // Get absolute paths + const resolvedPaths = paths.map(p => path.resolve(process.cwd(), p)); + + // Verify paths exist + for (const p of resolvedPaths) { + if (!fs.existsSync(p)) { + console.error(`Error: Path does not exist: ${p}`); + process.exit(1); + } + } + + if (options.verbose) { + console.log('Checking files in:', resolvedPaths); + } + + // Lint files + const results = await eslint.lintFiles(resolvedPaths); + + // Fix files if requested + if (options.fix) { + await ESLint.outputFixes(results); + } + + // Format and output results + const formatter = await eslint.loadFormatter('stylish'); + const resultText = formatter.format(results); + + // Count issues + const errorCount = results.reduce((sum, result) => sum + result.errorCount, 0); + const warningCount = results.reduce((sum, result) => sum + result.warningCount, 0); + + // Output results + if (resultText) { + console.log(resultText); + } + + // Summary + console.log('✅ Linting complete!'); + console.log(`Found ${errorCount} errors and ${warningCount} warnings`); + + // Exit with error code if there are errors + if (errorCount > 0) { + console.log('❌ Linting failed due to errors'); + process.exit(1); + } else if (warningCount > 0) { + console.log('⚠️ Linting passed with warnings'); + } else { + console.log('✨ Linting passed with no issues!'); + } + + } catch (error) { + console.error('Error running ESLint:'); + console.error(error); + process.exit(1); + } +} + +// Run the main function +main(); diff --git a/client/src/app.tsx b/client/src/app.tsx index bf4a30806..0a97fef4b 100644 --- a/client/src/app.tsx +++ b/client/src/app.tsx @@ -10,15 +10,20 @@ import { HealthWidget } from '@/components/HeaderComponents/HealthWidget'; import NotificationsWidget from '@/components/HeaderComponents/NotificationsWidget'; import UpdateAvailableWidget from '@/components/HeaderComponents/UpdateAvailableWidget'; import NoDeviceModal from '@/components/NoDevice/NoDeviceModal'; -import { currentUser as queryCurrentUser, hasUser } from '@/services/rest/user'; +import { + currentUser as queryCurrentUser, + hasUser, +} from '@/services/rest/users/users'; import type { Settings as LayoutSettings } from '@ant-design/pro-components'; // @ts-ignore import { history, RunTimeLayoutConfig } from '@umijs/max'; -import { Alert } from 'antd'; +import { Alert, message } from 'antd'; import { API } from 'ssm-shared-lib'; import defaultSettings from '../config/defaultSettings'; import { version } from '../package.json'; import Logo from '../public/logo.svg'; +import PluginRoutes from './plugins/components/PluginRoutes'; +import { PluginProvider } from './plugins/contexts/plugin-context'; import { errorConfig } from './requestErrorConfig'; const loginPath = '/user/login'; @@ -89,8 +94,11 @@ export const layout: RunTimeLayoutConfig = ({ // @ts-ignore setInitialState, }) => { + const [messageApi, contextHolder] = message.useMessage(); + return { logo: Logo, + title: 'Squirrel Servers Manager', actionsRender: () => [ , , @@ -121,13 +129,15 @@ export const layout: RunTimeLayoutConfig = ({ // 403 // unAccessible:
unAccessible
, // loading - childrenRender: (children: any) => { - // if (initialState?.loading) return ; + contentStyle: { margin: 0 }, + // @ts-ignore + childrenRender: (children) => { const versionMismatch = version != initialState?.currentUser?.settings?.server.version; + return ( - <> - + + {contextHolder} {initialState?.currentUser?.settings?.server.version && versionMismatch && ( )} {children} - + + + ); }, ...initialState?.settings, diff --git a/client/src/components/Alert/AlertNotification.tsx b/client/src/components/Alert/AlertNotification.tsx index 7e68614ed..3796a89c9 100644 --- a/client/src/components/Alert/AlertNotification.tsx +++ b/client/src/components/Alert/AlertNotification.tsx @@ -1,7 +1,7 @@ -import { socket } from '@/socket'; +import { notificationSocket as socket } from '@/socket'; import { notification, Typography } from 'antd'; import React, { useEffect } from 'react'; -import { SsmEvents, SsmAlert } from 'ssm-shared-lib'; +import { SsmAlert, SsmEvents } from 'ssm-shared-lib'; const AlertNotification: React.FC = () => { const [api, contextHolder] = notification.useNotification(); diff --git a/client/src/components/Charts/CustomRingProgress.tsx b/client/src/components/Charts/CustomRingProgress.tsx new file mode 100644 index 000000000..e2baa500b --- /dev/null +++ b/client/src/components/Charts/CustomRingProgress.tsx @@ -0,0 +1,141 @@ +import React, { useState } from 'react'; +import { Tooltip } from 'antd'; +import type { ReactNode } from 'react'; // Import ReactNode + +export type RingProgressType = 'cpu' | 'memory' | 'disk'; + +interface CustomRingProgressProps { + percent: number; // Percentage value (0 to 100) + size?: number; // Diameter of the ring in pixels + strokeWidth?: number; // Thickness of the ring + type?: RingProgressType; // Type to determine base color + showText?: boolean; // Whether to show the percentage text + tooltipText?: string; // Optional tooltip text + icon?: ReactNode; // Add icon prop +} + +const CustomRingProgress: React.FC = ({ + percent, + size = 60, + strokeWidth = 4, + type = 'cpu', + showText = true, + tooltipText, + icon, // Destructure icon prop +}) => { + const [isHovered, setIsHovered] = useState(false); + + const radius = (size - strokeWidth) / 2; + const circumference = 2 * Math.PI * radius; + const offset = circumference - (percent / 100) * circumference; + const center = size / 2; + + // Clamp percent between 0 and 100 + const clampedPercent = Math.max(0, Math.min(100, percent)); + + const getColor = (p: number, t: RingProgressType): string => { + const thresholds = { warning: 70, danger: 90 }; + const colors = { + cpu: { normal: '#38A169', warning: '#ECC94B', danger: '#E53E3E' }, + memory: { normal: '#3182CE', warning: '#ECC94B', danger: '#E53E3E' }, + disk: { normal: '#A0AEC0', warning: '#ECC94B', danger: '#E53E3E' }, + }; + const typeColors = colors[t] || colors.cpu; + + if (p >= thresholds.danger) return typeColors.danger; + if (p >= thresholds.warning) return typeColors.warning; + return typeColors.normal; + }; + + const progressColor = getColor(clampedPercent, type); + const baseTrackColor = '#4A5568'; + const hoverTrackColor = '#636E82'; // Lighter gray for hover + const trackColor = isHovered ? hoverTrackColor : baseTrackColor; + + const textFontSize = size * 0.22; // Slightly smaller font size to accommodate icon + const iconSize = size * 0.2; // Adjust icon size relative to overall size + + // Define the SVG content separately + const svgContent = ( + setIsHovered(true)} + onMouseLeave={() => setIsHovered(false)} + style={{ overflow: 'visible' }} // Allow foreignObject content to potentially overflow slightly if needed + > + {/* Background Track */} + + {/* Progress Arc */} + + {/* Content (Icon + Text) using foreignObject */} + {showText && ( + + {/* Required namespace for XHTML */} +
+ {icon && ( + + {icon} + + )} + {`${Math.round(clampedPercent)}%`} +
+
+ )} +
+ ); + + // Conditionally wrap the SVG content with Tooltip + if (tooltipText) { + return {svgContent}; + } + + // Return just the SVG if no tooltip text is provided + return svgContent; +}; + +export default CustomRingProgress; diff --git a/client/src/components/Charts/DeviceStatType.ts b/client/src/components/Charts/DeviceStatType.ts deleted file mode 100644 index 51213c7cd..000000000 --- a/client/src/components/Charts/DeviceStatType.ts +++ /dev/null @@ -1,6 +0,0 @@ -export enum DeviceStatType { - CPU = 'cpu', - MEM_FREE = 'memFree', - MEM_USED = 'memUsed', - CONTAINERS = 'containers', -} diff --git a/client/src/components/Charts/TinyLineDeviceGraph.tsx b/client/src/components/Charts/TinyLineDeviceGraph.tsx index aba9a6212..7e70c2eda 100644 --- a/client/src/components/Charts/TinyLineDeviceGraph.tsx +++ b/client/src/components/Charts/TinyLineDeviceGraph.tsx @@ -1,14 +1,13 @@ -import { DeviceStatType } from '@/components/Charts/DeviceStatType'; -import { getDeviceStats } from '@/services/rest/devicestat'; +import { getDeviceStats } from '@/services/rest/statistics/stastistics'; import { Tiny } from '@ant-design/charts'; -import { message } from 'antd'; +import message from '@/components/Message/DynamicMessage'; import moment from 'moment'; import React, { useEffect, useState, useCallback, useMemo } from 'react'; -import { API } from 'ssm-shared-lib'; +import { API, StatsType } from 'ssm-shared-lib'; export type TinyLineProps = { deviceUuid: string; - type: DeviceStatType; + type: StatsType.DeviceStatsType; from: number; }; @@ -39,12 +38,15 @@ const TinyLineDeviceGraph: React.FC = ({ const list = await getDeviceStats(deviceUuid, type, { from }); setData(formatData(list)); } catch (error: any) { - message.error(error); + message.error({ + content: error?.message || 'Unknown error', + duration: 6, + }); } }, [deviceUuid, type, from, formatData]); useEffect(() => { - asyncFetch(); + void asyncFetch(); }, [asyncFetch]); const config = useMemo( @@ -60,6 +62,9 @@ const TinyLineDeviceGraph: React.FC = ({ padding: 10, tooltip: { channel: 'y', valueFormatter: '.2%' }, interaction: { tooltip: { mount: 'body' } }, + style: { + lineWidth: 4, + }, }), [data], ); diff --git a/client/src/components/Charts/TinyRingProgressDeviceGraph.tsx b/client/src/components/Charts/TinyRingProgressDeviceGraph.tsx index 565bfe4c7..3197e70c9 100644 --- a/client/src/components/Charts/TinyRingProgressDeviceGraph.tsx +++ b/client/src/components/Charts/TinyRingProgressDeviceGraph.tsx @@ -1,93 +1,125 @@ -import { DeviceStatType } from '@/components/Charts/DeviceStatType'; -import { getDeviceStat } from '@/services/rest/devicestat'; -import { Tiny } from '@ant-design/charts'; -import { TinyRingConfig } from '@ant-design/plots/es/components/tiny'; -import { Skeleton, Tooltip } from 'antd'; +import { getDeviceStat } from '@/services/rest/statistics/stastistics'; +import message from '@/components/Message/DynamicMessage'; +import { Skeleton } from 'antd'; import moment from 'moment'; import React, { useEffect, useState, useCallback, useMemo } from 'react'; +import { StatsType } from 'ssm-shared-lib'; +import CustomRingProgress from './CustomRingProgress'; +import type { RingProgressType } from './CustomRingProgress'; +import { LaptopOutlined, HddOutlined } from '@ant-design/icons'; +import { WhhCpu, WhhRam } from '@/components/Icons/CustomIcons'; export type TinyRingProps = { deviceUuid: string; - type: DeviceStatType; + type: StatsType.DeviceStatsType; }; const TinyRingProgressDeviceGraph: React.FC = ({ deviceUuid, type, }) => { - const [value, setValue] = useState<{ percent: number; date: string }>({ - percent: 0, - date: 'never', - }); - const [isLoading, setIsLoading] = useState(false); + const [value, setValue] = useState(null); + const [date, setDate] = useState('never'); + const [isLoading, setIsLoading] = useState(true); const asyncFetch = useCallback(async () => { + setIsLoading(true); try { - const res = await getDeviceStat(deviceUuid, type); - if (res.data && res.data.value) { - setValue({ - percent: parseFloat((res.data.value / 100).toFixed(2)), - date: moment(res.data.date).format('YYYY-MM-DD, HH:mm'), - }); + const res = await getDeviceStat(deviceUuid, type, {}); + + if (res.data && typeof res.data.value === 'number') { + const percentValue = res.data.value; + if (!isNaN(percentValue)) { + setValue(percentValue); + setDate(moment(res.data.date).format('YYYY-MM-DD, HH:mm')); + } else { + console.warn(`NaN value received for ${type} on ${deviceUuid}`); + setValue(NaN); + setDate('invalid data'); + } + } else { + console.warn(`Invalid data structure for ${type} on ${deviceUuid}`); + setValue(NaN); + setDate('invalid data'); } - } catch (error) { - console.error(error); + } catch (error: any) { + console.error(`Error fetching ${type} for ${deviceUuid}:`, error); + message.error({ content: `Failed to fetch ${type} stats`, duration: 5 }); + setValue(NaN); + setDate('error'); } finally { setIsLoading(false); } }, [deviceUuid, type]); useEffect(() => { - setIsLoading(true); void asyncFetch(); }, [asyncFetch]); - const config: TinyRingConfig = useMemo( - () => ({ - percent: value.percent, - width: 50, - height: 50, - color: ['rgb(255,255,255)', value.percent < 0.8 ? '#1668dc' : '#dc4446'], - innerRadius: 0.92, - radius: 0.98, - annotations: [ - { - type: 'text', - style: { - text: `${((value.percent ?? 0) * 100).toFixed(0)}%`, - x: '50%', - y: '45%', - textAlign: 'center', - fontSize: 12, - fill: `${value.percent < 0.8 ? 'rgba(232,237,243,0.9)' : '#dc4446'}`, - fontStyle: 'bold', - }, - }, - { - type: 'text', - style: { - text: `${type === DeviceStatType.CPU ? 'cpu' : 'mem'}`, - x: '48%', - y: '68%', - textAlign: 'center', - fontSize: 8, - fill: 'rgba(232,237,243,0.9)', - fillOpacity: 0.95, - fontStyle: 'normal', - }, - }, - ], - }), - [value, type, deviceUuid], - ); + const { ringType, icon } = useMemo(() => { + switch (type) { + case StatsType.DeviceStatsType.CPU: + return { + ringType: 'cpu' as RingProgressType, + icon: , + }; + case StatsType.DeviceStatsType.MEM_USED: + return { + ringType: 'memory' as RingProgressType, + icon: , + }; + case StatsType.DeviceStatsType.DISK_USED: + return { ringType: 'disk' as RingProgressType, icon: }; + default: + return { + ringType: 'cpu' as RingProgressType, + icon: , + }; + } + }, [type]); + + const renderContent = () => { + if (isLoading) { + return ; + } + + const tooltipText = + value === null || isNaN(value) + ? 'Failed to load data' + : `${type === StatsType.DeviceStatsType.CPU ? 'CPU' : type === StatsType.DeviceStatsType.MEM_USED ? 'Memory' : 'Disk'} (Updated at ${date})`; + + const errorIcon = + type === StatsType.DeviceStatsType.CPU ? : ; + + if (value === null || isNaN(value)) { + return ( + + ); + } + + return ( + + ); + }; - return isLoading ? ( - - ) : ( - - - - ); + return renderContent(); }; export default React.memo(TinyRingProgressDeviceGraph); diff --git a/client/src/components/Charts/TinyRingProgressDeviceIndicator.tsx b/client/src/components/Charts/TinyRingProgressDeviceIndicator.tsx index c88377bfb..781b11d69 100644 --- a/client/src/components/Charts/TinyRingProgressDeviceIndicator.tsx +++ b/client/src/components/Charts/TinyRingProgressDeviceIndicator.tsx @@ -1,12 +1,14 @@ -import { DeviceStatType } from '@/components/Charts/DeviceStatType'; -import { getDeviceStat } from '@/services/rest/devicestat'; -import { Tiny, TinyProgressConfig } from '@ant-design/charts'; -import { message, Skeleton } from 'antd'; +import { getDeviceStat } from '@/services/rest/statistics/stastistics'; +import message from '@/components/Message/DynamicMessage'; +import { Skeleton, Tooltip } from 'antd'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; +import { StatsType } from 'ssm-shared-lib'; +import CountDisplay from '@/components/Indicators/CountDisplay'; +import moment from 'moment'; export type TinyRingProps = { deviceUuid: string; - type: DeviceStatType; + type: StatsType.DeviceStatsType; }; const TinyRingProgressDeviceIndicator: React.FC = ({ @@ -15,18 +17,31 @@ const TinyRingProgressDeviceIndicator: React.FC = ({ }) => { const [value, setValue] = useState(null); const [isLoading, setIsLoading] = useState(true); + const [date, setDate] = useState('never'); const asyncFetch = useCallback(async () => { + setIsLoading(true); try { const res = await getDeviceStat(deviceUuid, type, {}); - if (res.data && !isNaN(res.data.value)) { + + if ( + res.data && + typeof res.data.value === 'number' && + !isNaN(res.data.value) + ) { setValue(res.data.value); + setDate(moment(res.data.date).format('YYYY-MM-DD, HH:mm')); } else { + console.warn( + `Invalid count value received for ${type} on ${deviceUuid}`, + ); setValue(NaN); + setDate('invalid data'); } } catch (error: any) { message.error({ content: error.message, duration: 8 }); setValue(NaN); + setDate('error'); } finally { setIsLoading(false); } @@ -36,51 +51,20 @@ const TinyRingProgressDeviceIndicator: React.FC = ({ void asyncFetch(); }, [asyncFetch]); - const config: TinyProgressConfig = useMemo( - () => ({ - percent: 0.0, - width: 50, - height: 50, - innerRadius: 0.92, - radius: 0.98, - color: ['#ffffff', '#1668dc'], - annotations: [ - { - type: 'text', - style: { - text: `${value ?? '0'}`, - x: '50%', - y: '40%', - textAlign: 'center', - fontSize: 12, - fill: 'rgba(232,237,243,0.9)', - fontStyle: 'bold', - }, - }, - { - type: 'text', - style: { - text: 'Containers', - x: '48%', - y: '60%', - textAlign: 'center', - fontSize: 8, - fill: 'rgba(232,237,243,0.9)', - fillOpacity: 0.95, - fontStyle: 'normal', - }, - }, - ], - }), - [value, deviceUuid, type], - ); + const tooltipText = + date !== 'never' && date !== 'error' && date !== 'invalid data' + ? `Updated at ${date}` + : 'Failed to load data'; - return isLoading || isNaN(value as number) ? ( - - ) : ( - <> - - + return ( + ); }; diff --git a/client/src/components/ComposeEditor/ViewBuilderElements/SmartFields.tsx b/client/src/components/ComposeEditor/ViewBuilderElements/SmartFields.tsx index f8fe06175..eb480aaf0 100644 --- a/client/src/components/ComposeEditor/ViewBuilderElements/SmartFields.tsx +++ b/client/src/components/ComposeEditor/ViewBuilderElements/SmartFields.tsx @@ -1,4 +1,5 @@ -import { getImages, getNetworks } from '@/services/rest/services'; +import { getImages } from '@/services/rest/containers/container-images'; +import { getNetworks } from '@/services/rest/containers/container-networks'; import { ProForm, ProFormInstance, diff --git a/client/src/components/DeviceComponents/DeviceInformation/components/SystemInformationView.tsx b/client/src/components/DeviceComponents/DeviceInformation/components/SystemInformationView.tsx index 0b1ad4050..220a52e79 100644 --- a/client/src/components/DeviceComponents/DeviceInformation/components/SystemInformationView.tsx +++ b/client/src/components/DeviceComponents/DeviceInformation/components/SystemInformationView.tsx @@ -107,7 +107,7 @@ const SystemInformationView: React.FC = ({
{info.title}
-
+
{info.value}
diff --git a/client/src/components/DeviceComponents/DeviceStatusTag.tsx b/client/src/components/DeviceComponents/DeviceStatusTag.tsx index 618c464b7..f912aa49e 100644 --- a/client/src/components/DeviceComponents/DeviceStatusTag.tsx +++ b/client/src/components/DeviceComponents/DeviceStatusTag.tsx @@ -6,18 +6,25 @@ export type DeviceStatusTagType = { status: number; }; +// Updated color mapping with hex codes matching the image style const statusMap: { [key: number]: { color: string; label: string } } = { - [DeviceStatus.REGISTERING]: { color: 'warning', label: 'Registering' }, - [DeviceStatus.ONLINE]: { color: 'success', label: 'Online' }, - [DeviceStatus.OFFLINE]: { color: 'error', label: 'Down' }, - [DeviceStatus.UNMANAGED]: { color: 'processing', label: 'Unmanaged' }, + [DeviceStatus.REGISTERING]: { color: '#DD6B20', label: 'Registering' }, // Orange + [DeviceStatus.ONLINE]: { color: '#38A169', label: 'Online' }, // Green + [DeviceStatus.OFFLINE]: { color: '#E53E3E', label: 'Down' }, // Pinkish-Red from image + [DeviceStatus.UNMANAGED]: { color: '#4A5568', label: 'Unmanaged' }, // Gray }; const DeviceStatusTag: React.FC = ({ status }) => { const statusInfo = statusMap[status]; + // Apply styles for white text and slightly bolder font + const tagStyle: React.CSSProperties = { + color: '#FFFFFF', + fontWeight: 500, + }; + return statusInfo ? ( - + {statusInfo.label} ) : null; diff --git a/client/src/components/DeviceComponents/SFTPDrawer/Actions/DownloadModal.tsx b/client/src/components/DeviceComponents/SFTPDrawer/Actions/DownloadModal.tsx index d9132ebe5..f2e21c5cd 100644 --- a/client/src/components/DeviceComponents/SFTPDrawer/Actions/DownloadModal.tsx +++ b/client/src/components/DeviceComponents/SFTPDrawer/Actions/DownloadModal.tsx @@ -1,6 +1,7 @@ import { SFTPDataNode } from '@/components/DeviceComponents/SFTPDrawer/SFTPDrawer'; -import { socket } from '@/socket'; -import { Button, message, Modal, Result, Spin } from 'antd'; +import { sftpSocket as socket } from '@/socket'; +import message from '@/components/Message/DynamicMessage'; +import { Button, Modal, Result, Spin } from 'antd'; import React, { useEffect, useImperativeHandle, useState } from 'react'; import { SsmEvents } from 'ssm-shared-lib'; diff --git a/client/src/components/DeviceComponents/SFTPDrawer/Actions/MkdirModal.tsx b/client/src/components/DeviceComponents/SFTPDrawer/Actions/MkdirModal.tsx index a3529a836..cb2557287 100644 --- a/client/src/components/DeviceComponents/SFTPDrawer/Actions/MkdirModal.tsx +++ b/client/src/components/DeviceComponents/SFTPDrawer/Actions/MkdirModal.tsx @@ -1,7 +1,7 @@ import { SFTPDataNode } from '@/components/DeviceComponents/SFTPDrawer/SFTPDrawer'; -import { socket } from '@/socket'; +import { sftpSocket as socket } from '@/socket'; import { ModalForm, ProFormText } from '@ant-design/pro-components'; -import { message } from 'antd'; +import message from '@/components/Message/DynamicMessage'; import React, { useImperativeHandle, useState } from 'react'; import { SsmEvents } from 'ssm-shared-lib'; @@ -30,12 +30,15 @@ const MkdirModal = React.forwardRef( .emitWithAck(SsmEvents.SFTP.MKDIR, { path: newDirectory, }); // Wait for the response - if (response.status === 'OK') { - message.success('Directory created successfully!'); + if (response.success) { + message.success({ + content: 'Directory created successfully!', + duration: 6, + }); return true; // Indicate success } else { throw new Error( - `Failed to create directory: ${response.error || 'Unknown error'}`, + `Failed to create directory: ${response.message || 'Unknown error'}`, ); } } catch (error: any) { @@ -63,9 +66,11 @@ const MkdirModal = React.forwardRef( onCancel: () => onClose(), }} onFinish={async (values) => { - const success = await createDir( - `${node?.key?.replace('//', '/')}/${values.path}`, - ); // Wait for createDir execution + // Ensure proper path formatting + const basePath = node?.key?.replace('//', '/') || '/'; + const newPath = `${basePath}/${values.path}`.replace('//', '/'); + + const success = await createDir(newPath); // Wait for createDir execution if (success) { onSuccess(node?.key as string, values.path); onClose(); // Close the modal on success diff --git a/client/src/components/DeviceComponents/SFTPDrawer/Actions/RenameModal.tsx b/client/src/components/DeviceComponents/SFTPDrawer/Actions/RenameModal.tsx index 1ea42b231..84fd14c7b 100644 --- a/client/src/components/DeviceComponents/SFTPDrawer/Actions/RenameModal.tsx +++ b/client/src/components/DeviceComponents/SFTPDrawer/Actions/RenameModal.tsx @@ -1,6 +1,6 @@ -import { socket } from '@/socket'; +import { sftpSocket as socket } from '@/socket'; import { ModalForm, ProFormText } from '@ant-design/pro-components'; -import { message } from 'antd'; +import message from '@/components/Message/DynamicMessage'; import React, { useImperativeHandle, useState } from 'react'; import { SsmEvents } from 'ssm-shared-lib'; import { SFTPDataNode } from '../SFTPDrawer'; @@ -25,18 +25,23 @@ const RenameModal = React.forwardRef( const rename = async (newName: string): Promise => { try { socket.connect(); // Ensure the socket is connected + + // Construct new path using parent path + const { parentPath } = splitPath(node?.key); + const newPath = `${parentPath}/${newName}`.replace('//', '/'); + const response = await socket .timeout(5000) .emitWithAck(SsmEvents.SFTP.RENAME, { - path: node?.key, - newName, + oldPath: node?.key, + newPath: newPath, }); // Wait for the response - if (response.status === 'OK') { + if (response.success) { message.success('Renamed successfully!'); return true; // Indicate success } else { throw new Error( - `Failed to rename: ${response.error || 'Unknown error'}`, + `Failed to rename: ${response.message || 'Unknown error'}`, ); } } catch (error: any) { @@ -83,7 +88,7 @@ const RenameModal = React.forwardRef( onFinish={async (values) => { const success = await rename(values.newName); // Wait for createDir execution if (success) { - onSuccess(node?.key?.replace('//', '/') as string, values.newName); + onSuccess(node?.key as string, values.newName); onClose(); // Close the modal on success } }} @@ -91,7 +96,7 @@ const RenameModal = React.forwardRef( diff --git a/client/src/components/DeviceComponents/SFTPDrawer/Actions/UpdateModeModal.tsx b/client/src/components/DeviceComponents/SFTPDrawer/Actions/UpdateModeModal.tsx index fb5616aef..27dc1e161 100644 --- a/client/src/components/DeviceComponents/SFTPDrawer/Actions/UpdateModeModal.tsx +++ b/client/src/components/DeviceComponents/SFTPDrawer/Actions/UpdateModeModal.tsx @@ -1,7 +1,8 @@ import { SFTPDataNode } from '@/components/DeviceComponents/SFTPDrawer/SFTPDrawer'; -import { socket } from '@/socket'; +import { sftpSocket as socket } from '@/socket'; import { ModalForm, ProFormDigit } from '@ant-design/pro-components'; -import { Checkbox, message } from 'antd'; +import message from '@/components/Message/DynamicMessage'; +import { Checkbox } from 'antd'; import React, { useImperativeHandle, useState } from 'react'; import { SsmEvents } from 'ssm-shared-lib'; @@ -115,7 +116,7 @@ const UpdateModeModal = React.forwardRef< const updateMode = async (): Promise => { if (!node) { - message.error('No node selected'); + message.error({ content: 'No node selected', duration: 6 }); return false; } @@ -128,16 +129,22 @@ const UpdateModeModal = React.forwardRef< path: node?.key?.replace('//', '/'), mode: decimalMode, }); // Send the chmod request - if (response.status === 'OK') { - message.success('Permissions updated successfully!'); + if (response.success) { + message.success({ + content: 'Permissions updated successfully!', + duration: 6, + }); return true; // Successful chmod } else { throw new Error( - `Failed to update permissions: ${response.error || 'Unknown error'}`, + `Failed to update permissions: ${response.message || 'Unknown error'}`, ); } } catch (error: any) { - message.error(`Failed to update permissions (${error.message})`); + message.error({ + content: `Failed to update permissions (${error.message})`, + duration: 6, + }); return false; } }; @@ -234,8 +241,8 @@ const UpdateModeModal = React.forwardRef< label="Octal Mode" placeholder="e.g., 755" fieldProps={{ - value: Number.parseInt(mode), - onChange: (e) => handleModeInputChange(e?.toString() || '0'), + value: parseInt(mode, 8), + onChange: (value) => handleModeInputChange(value?.toString() || '0'), }} /> diff --git a/client/src/components/DeviceComponents/SFTPDrawer/SFTPDrawer.tsx b/client/src/components/DeviceComponents/SFTPDrawer/SFTPDrawer.tsx index c3dd7e176..bffb619e3 100644 --- a/client/src/components/DeviceComponents/SFTPDrawer/SFTPDrawer.tsx +++ b/client/src/components/DeviceComponents/SFTPDrawer/SFTPDrawer.tsx @@ -14,22 +14,12 @@ import SFTPDropdownMenu, { SFTPAction, } from '@/components/DeviceComponents/SFTPDrawer/SFTPDropdownMenu'; import { Restart } from '@/components/Icons/CustomIcons'; -import { socket } from '@/socket'; -import { - Button, - Col, - Drawer, - message, - Popconfirm, - Row, - Space, - Spin, - Tree, -} from 'antd'; +import { sftpSocket as socket } from '@/socket'; +import { Button, Col, Drawer, Popconfirm, Row, Space, Spin, Tree } from 'antd'; import React, { useEffect, useImperativeHandle, useState } from 'react'; import { API, SsmEvents } from 'ssm-shared-lib'; import { updateNodeKeyAndTitle, updateNodeMode, updateTreeData } from './utils'; - +import message from '@/components/Message/DynamicMessage'; export interface SFTPDrawerHandles { showDrawer: () => void; } @@ -88,7 +78,7 @@ const SFTPDrawer = React.forwardRef( const pathParts = fullPathWithName.split('/'); const newPath = [...pathParts.slice(0, -1), newName].join('/'); // Construct new full path const newTitle = newName; // The title is based on the newName - + console.log('onSuccessRename', fullPathWithName, newPath, newTitle); // Update the tree setTreeData((prevTreeData) => updateNodeKeyAndTitle( @@ -98,6 +88,7 @@ const SFTPDrawer = React.forwardRef( newTitle, ), ); + console.log('updatedTreeData', treeData); }; const onSuccessUpdateMode = ( @@ -111,6 +102,7 @@ const SFTPDrawer = React.forwardRef( }; const onSuccessDelete = (pathToDelete: string): void => { + console.log('onSuccessDelete, pathToDelete:', pathToDelete); setTreeData((prevTreeData) => updateTreeData(prevTreeData, pathToDelete, undefined, true), ); @@ -186,17 +178,34 @@ const SFTPDrawer = React.forwardRef( }; const startSFTPSession = () => { + console.log('Starting SFTP session, connecting socket...'); socket.connect(); // Ensure the socket is connected + + // Add connection event listeners for debugging + socket.on('connect', () => { + console.log('SFTP socket connected successfully!'); + console.log('Socket ID:', socket.id); + }); + + socket.on('connect_error', (error) => { + console.error('SFTP socket connection error:', error); + }); + socket.removeAllListeners(SsmEvents.SFTP.STATUS); socket.removeAllListeners(SsmEvents.SFTP.READ_DIR); setTreeData([{ title: '/', key: '/' }]); + console.log( + 'Emitting START_SESSION event with device UUID:', + device.uuid, + ); socket .emitWithAck(SsmEvents.SFTP.START_SESSION, { deviceUuid: device.uuid, }) .then((response) => { - if (response.status !== 'OK') { + console.log('Received START_SESSION response:', response); + if (!response.success) { void message.error({ content: `Socket failed to connect (${response.status} - ${response.error})`, duration: 6, @@ -209,6 +218,13 @@ const SFTPDrawer = React.forwardRef( socket.off(SsmEvents.SFTP.STATUS, handleStatus); }; } + }) + .catch((error) => { + console.error('Error in START_SESSION emitWithAck:', error); + void message.error({ + content: `Socket failed to connect: ${error.message}`, + duration: 6, + }); }); }; @@ -278,17 +294,19 @@ const SFTPDrawer = React.forwardRef( path: node.key, isDir: !node?.isLeaf, }); - if (response.status === 'OK') { - message.success( - !node?.isLeaf ? 'Directory deleted' : 'File deleted', - ); + if (response.success) { + message.success({ + content: !node?.isLeaf ? 'Directory deleted' : 'File deleted', + duration: 6, + }); if (node?.key) { onSuccessDelete(node.key); } } else { - message.error( - `Failed to create directory: ${response.error || 'Unknown error'}`, - ); + message.error({ + content: `Failed to delete: ${response.message || 'Unknown error'}`, + duration: 6, + }); } }, }); diff --git a/client/src/components/DeviceComponents/SFTPDrawer/utils.ts b/client/src/components/DeviceComponents/SFTPDrawer/utils.ts index 8fb91a7a1..4a2aac432 100644 --- a/client/src/components/DeviceComponents/SFTPDrawer/utils.ts +++ b/client/src/components/DeviceComponents/SFTPDrawer/utils.ts @@ -10,7 +10,9 @@ export const updateTreeData = ( list .map((node) => { if (node.key === key) { + console.log('updating node', node.key, isDelete); if (isDelete) { + console.log('deleting node', node.key); // If it's marked for deletion, exclude this node return null; } @@ -26,7 +28,7 @@ export const updateTreeData = ( if (node.children) { return { ...node, - children: updateTreeData(node.children, key, newChildren).filter( + children: updateTreeData(node.children, key, newChildren, isDelete).filter( Boolean, ), }; @@ -43,6 +45,7 @@ export const updateNodeKeyAndTitle = ( ): SFTPDataNode[] => nodes.map((node) => { if (node.key === oldKey) { + console.log('updating node', node.key, newKey, updatedTitle); // Update the node with the new key and title return { ...node, key: newKey, title: updatedTitle }; } diff --git a/client/src/components/DeviceConfiguration/CheckDeviceConnection.tsx b/client/src/components/DeviceConfiguration/CheckDeviceConnection.tsx index bbc6101c8..ccaf0c2c2 100644 --- a/client/src/components/DeviceConfiguration/CheckDeviceConnection.tsx +++ b/client/src/components/DeviceConfiguration/CheckDeviceConnection.tsx @@ -2,7 +2,7 @@ import SwitchConnexionMethod from '@/components/NewDeviceModal/SwitchConnexionMe import TerminalHandler, { TaskStatusTimelineType, } from '@/components/PlaybookExecutionModal/PlaybookExecutionHandler'; -import { getAnsibleSmartFailure } from '@/services/rest/ansible'; +import { getAnsibleSmartFailure } from '@/services/rest/smart-failure/smart-failure'; import { CheckCircleOutlined, ClockCircleOutlined, diff --git a/client/src/components/DeviceConfiguration/DockerConfigurationFormElements.tsx b/client/src/components/DeviceConfiguration/DockerConfigurationFormElements.tsx index 2027a8f3b..3931d434f 100644 --- a/client/src/components/DeviceConfiguration/DockerConfigurationFormElements.tsx +++ b/client/src/components/DeviceConfiguration/DockerConfigurationFormElements.tsx @@ -4,9 +4,9 @@ import DockerAdvancedConnectionCard from '@/components/DeviceConfiguration/docke import DockerEngineHostCard from '@/components/DeviceConfiguration/docker/DockerEngineHostCard'; import DockerWatchCard from '@/components/DeviceConfiguration/docker/DockerWatchCard'; import DockerWatcherCronsCard from '@/components/DeviceConfiguration/docker/DockerWatcherCronsCard'; -import { postDeviceCapabilities } from '@/services/rest/device'; +import { postDeviceCapabilities } from '@/services/rest/devices/devices'; import { ProFormInstance } from '@ant-design/pro-components'; -import { message } from 'antd'; +import message from '@/components/Message/DynamicMessage'; import { AnimatePresence, motion } from 'framer-motion'; import React from 'react'; import 'react-js-cron/dist/styles.css'; diff --git a/client/src/components/DeviceConfiguration/ProxmoxConfigurationFormElements.tsx b/client/src/components/DeviceConfiguration/ProxmoxConfigurationFormElements.tsx index 1d2196ad8..9ad71338b 100644 --- a/client/src/components/DeviceConfiguration/ProxmoxConfigurationFormElements.tsx +++ b/client/src/components/DeviceConfiguration/ProxmoxConfigurationFormElements.tsx @@ -1,9 +1,9 @@ import CapabilityCard from '@/components/DeviceConfiguration/capability/CapabilityCard'; import ProxmoxConnectionCard from '@/components/DeviceConfiguration/proxmox/ProxmoxConnectionCard'; import ProxmoxWatcherCronsCard from '@/components/DeviceConfiguration/proxmox/ProxmoxWatcherCronsCard'; -import { postDeviceCapabilities } from '@/services/rest/device'; +import { postDeviceCapabilities } from '@/services/rest/devices/devices'; import { ProFormInstance } from '@ant-design/pro-components'; -import { message } from 'antd'; +import message from '@/components/Message/DynamicMessage'; import React from 'react'; import 'react-js-cron/dist/styles.css'; import { API } from 'ssm-shared-lib'; diff --git a/client/src/components/DeviceConfiguration/diagnostic/ExistingDeviceAdvancedDiagnostic.tsx b/client/src/components/DeviceConfiguration/diagnostic/ExistingDeviceAdvancedDiagnostic.tsx index b7913d717..ad027aa18 100644 --- a/client/src/components/DeviceConfiguration/diagnostic/ExistingDeviceAdvancedDiagnostic.tsx +++ b/client/src/components/DeviceConfiguration/diagnostic/ExistingDeviceAdvancedDiagnostic.tsx @@ -1,19 +1,11 @@ import { MedicalSearchDiagnosisSolid } from '@/components/Icons/CustomIcons'; -import { postDeviceDiagnostic } from '@/services/rest/device'; -import { socket } from '@/socket'; +import { postDeviceDiagnostic } from '@/services/rest/diagnostic/diagnostic'; +import { diagnosticSocket as socket } from '@/socket'; import { history } from '@umijs/max'; -import { - Avatar, - Button, - Card, - Col, - message, - Row, - StepProps, - Steps, -} from 'antd'; +import { Avatar, Button, Card, Col, Row, StepProps, Steps } from 'antd'; import React, { useEffect } from 'react'; import { API, SsmDeviceDiagnostic, SsmEvents } from 'ssm-shared-lib'; +import message from '@/components/Message/DynamicMessage'; type ExistingDeviceAdvancedDiagnosticProps = { device: Partial; diff --git a/client/src/components/DeviceConfiguration/diagnostic/ExistingDeviceConnectionTest.tsx b/client/src/components/DeviceConfiguration/diagnostic/ExistingDeviceConnectionTest.tsx index 524d52e79..787b1e57f 100644 --- a/client/src/components/DeviceConfiguration/diagnostic/ExistingDeviceConnectionTest.tsx +++ b/client/src/components/DeviceConfiguration/diagnostic/ExistingDeviceConnectionTest.tsx @@ -1,10 +1,8 @@ import CheckDeviceConnection from '@/components/DeviceConfiguration/CheckDeviceConnection'; import { StreamlineComputerConnection } from '@/components/Icons/CustomIcons'; -import { - getCheckDeviceAnsibleConnection, - getCheckDeviceDockerConnection, - getCheckDeviceRemoteSystemInformationConnection, -} from '@/services/rest/device'; +import { getCheckDeviceDockerConnection } from '@/services/rest/containers/containers-diagnostic'; +import { getCheckDeviceRemoteSystemInformationConnection } from '@/services/rest/remote-system-information/diagnostic'; +import { getCheckDeviceAnsibleConnection } from '@/services/rest/playbooks/diagnostic'; import { Avatar, Button, Card, Col, Row } from 'antd'; import React, { useState } from 'react'; import { API, SsmAgent } from 'ssm-shared-lib'; diff --git a/client/src/components/DeviceConfiguration/docker/DockerEngineHostCard.tsx b/client/src/components/DeviceConfiguration/docker/DockerEngineHostCard.tsx index b4705ec44..822e22570 100644 --- a/client/src/components/DeviceConfiguration/docker/DockerEngineHostCard.tsx +++ b/client/src/components/DeviceConfiguration/docker/DockerEngineHostCard.tsx @@ -3,7 +3,7 @@ import { UilDocker, } from '@/components/Icons/CustomIcons'; import { CardHeader } from '@/components/Template/CardHeader'; -import { deleteDockerCert } from '@/services/rest/deviceauth'; +import { deleteDockerCert } from '@/services/rest/devices/device-credentials'; import { InfoCircleFilled } from '@ant-design/icons'; import { ProFormDependency, @@ -15,7 +15,8 @@ import { ProFormUploadButton, } from '@ant-design/pro-components'; import { ProForm } from '@ant-design/pro-form/lib'; -import { Card, message, Tooltip } from 'antd'; +import message from '@/components/Message/DynamicMessage'; +import { Card, Tooltip } from 'antd'; import { RcFile } from 'antd/lib/upload/interface'; import axios from 'axios'; import { AnimatePresence, motion } from 'framer-motion'; diff --git a/client/src/components/DeviceConfiguration/docker/DockerWatchCard.tsx b/client/src/components/DeviceConfiguration/docker/DockerWatchCard.tsx index e9b92539d..1c4504c7c 100644 --- a/client/src/components/DeviceConfiguration/docker/DockerWatchCard.tsx +++ b/client/src/components/DeviceConfiguration/docker/DockerWatchCard.tsx @@ -1,9 +1,10 @@ import { EosIconsCronjob } from '@/components/Icons/CustomIcons'; import { CardHeader } from '@/components/Template/CardHeader'; -import { updateDeviceDockerConfiguration } from '@/services/rest/device'; +import { updateDeviceDockerConfiguration } from '@/services/rest/devices/devices'; import { InfoCircleFilled } from '@ant-design/icons'; import { ProForm, ProFormSwitch } from '@ant-design/pro-components'; -import { Card, message, Tooltip } from 'antd'; +import message from '@/components/Message/DynamicMessage'; +import { Card, Tooltip } from 'antd'; import React, { useState } from 'react'; import { API } from 'ssm-shared-lib'; diff --git a/client/src/components/DeviceConfiguration/proxmox/ProxmoxWatcherCronsCard.tsx b/client/src/components/DeviceConfiguration/proxmox/ProxmoxWatcherCronsCard.tsx index 6c73fbeea..243488863 100644 --- a/client/src/components/DeviceConfiguration/proxmox/ProxmoxWatcherCronsCard.tsx +++ b/client/src/components/DeviceConfiguration/proxmox/ProxmoxWatcherCronsCard.tsx @@ -1,7 +1,8 @@ import { CardHeader } from '@/components/Template/CardHeader'; -import { updateDeviceProxmoxConfiguration } from '@/services/rest/device'; +import { updateDeviceProxmoxConfiguration } from '@/services/rest/devices/devices'; import { FieldTimeOutlined } from '@ant-design/icons'; -import { Card, message, Space } from 'antd'; +import message from '@/components/Message/DynamicMessage'; +import { Card, Space } from 'antd'; import React, { useEffect, useState } from 'react'; import Cron from 'react-js-cron'; import { API } from 'ssm-shared-lib'; diff --git a/client/src/components/DeviceConfiguration/ssh/HostCard.tsx b/client/src/components/DeviceConfiguration/ssh/HostCard.tsx index bdfa26aca..d0654c846 100644 --- a/client/src/components/DeviceConfiguration/ssh/HostCard.tsx +++ b/client/src/components/DeviceConfiguration/ssh/HostCard.tsx @@ -59,7 +59,7 @@ const HostCard: React.FC = ({ deviceIp, showAdvanced }) => ( { required: true }, { pattern: - /^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$|^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])(\.[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])*$/, + /^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$|^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])(\.[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])*(\.[a-zA-Z]{2,})$/, message: 'Please enter a valid IP address or hostname', }, ]} diff --git a/client/src/components/HeaderComponents/AvatarDropdown.tsx b/client/src/components/HeaderComponents/AvatarDropdown.tsx index 2b7e6368f..c081ec60f 100644 --- a/client/src/components/HeaderComponents/AvatarDropdown.tsx +++ b/client/src/components/HeaderComponents/AvatarDropdown.tsx @@ -1,4 +1,4 @@ -import { outLogin } from '@/services/rest/user'; +import { outLogin } from '@/services/rest/users/users'; import { LogoutOutlined, SettingOutlined, diff --git a/client/src/components/HeaderComponents/HealthWidget.tsx b/client/src/components/HeaderComponents/HealthWidget.tsx index 6f7f340c9..745d88203 100644 --- a/client/src/components/HeaderComponents/HealthWidget.tsx +++ b/client/src/components/HeaderComponents/HealthWidget.tsx @@ -1,10 +1,14 @@ import { FluentMdl2Health } from '@/components/Icons/CustomIcons'; +import { getDashboardSystemPerformance } from '@/services/rest/statistics/stastistics'; import { useEmotionCss } from '@ant-design/use-emotion-css'; -import { useModel } from '@umijs/max'; import { Avatar, Badge, Popover, Spin } from 'antd'; -import React, { useMemo } from 'react'; +import React, { useEffect, useMemo, useState } from 'react'; +import { API } from 'ssm-shared-lib'; export const HealthWidget: React.FC = React.memo(() => { + const [systemPerformance, setSystemPerformance] = + useState(null); + const [loading, setLoading] = useState(false); const actionClassName = useEmotionCss(({ token }) => ({ display: 'flex', height: '48px', @@ -19,10 +23,7 @@ export const HealthWidget: React.FC = React.memo(() => { }, })); - const { initialState } = useModel('@@initialState'); - const currentUser = initialState?.currentUser; - - const loading = useMemo( + const loadingView = useMemo( () => ( @@ -31,15 +32,23 @@ export const HealthWidget: React.FC = React.memo(() => { [actionClassName], ); - if (!initialState || !currentUser || !currentUser.devices) { - return loading; - } + const fetchSystemPerformance = async () => { + setLoading(true); + const response = await getDashboardSystemPerformance(); + setSystemPerformance(response.data); + setLoading(false); + }; + useEffect(() => { + void fetchSystemPerformance(); + }, []); + + if (loading) { + return loadingView; + } return ( - - + + ( diff --git a/client/src/components/Indicators/CountDisplay.tsx b/client/src/components/Indicators/CountDisplay.tsx new file mode 100644 index 000000000..b107f5477 --- /dev/null +++ b/client/src/components/Indicators/CountDisplay.tsx @@ -0,0 +1,96 @@ +import { Skeleton, Tooltip } from 'antd'; +import React, { useState } from 'react'; + +interface CountDisplayProps { + count: number | null | undefined; // The numerical count to display + size?: number; // Size of the square + isLoading: boolean; + tooltipText?: string; // Optional tooltip + label?: string; // Re-add label prop + errorText?: string; // Text to display on error/NaN +} + +const CountDisplay: React.FC = ({ + count, + size = 50, + isLoading, + tooltipText, + label, // Re-add label prop + errorText = 'N/A', +}) => { + const [isHovered, setIsHovered] = useState(false); // Hover state + + const renderContent = () => { + if (isLoading) { + // Use Skeleton matching the approximate size, maybe square? + return ( + +
+ + ); + // Or keep Skeleton.Avatar if preferred + // return ; + } + + const displayValue = + count === null || count === undefined || isNaN(count) ? errorText : count; + + const strokeWidth = 4; // Match ring thickness + const baseBorderColor = '#4A5568'; + const hoverBorderColor = '#636E82'; // Lighter gray for hover + const borderColor = isHovered ? hoverBorderColor : baseBorderColor; + const borderRadius = '8px'; // Rounded corners + + return ( +
setIsHovered(true)} + onMouseLeave={() => setIsHovered(false)} + > + + {displayValue} + + {/* Re-add label rendering */} + {label && ( + + {label} + + )} +
+ ); + }; + + if (tooltipText) { + return {renderContent()}; + } + + return renderContent(); +}; + +export default CountDisplay; diff --git a/client/src/components/LiveLogs/LiveLogs.tsx b/client/src/components/LiveLogs/LiveLogs.tsx index 759e5d473..ad7313657 100644 --- a/client/src/components/LiveLogs/LiveLogs.tsx +++ b/client/src/components/LiveLogs/LiveLogs.tsx @@ -1,9 +1,9 @@ import TerminalCore, { TerminalCoreHandles, } from '@/components/Terminal/TerminalCore'; -import { socket } from '@/socket'; +import { containerLiveLogsSocket as socket } from '@/socket'; import { useParams } from '@@/exports'; -import { message } from 'antd'; +import message from '@/components/Message/DynamicMessage'; import React, { useEffect, useImperativeHandle, useRef } from 'react'; import { SsmEvents } from 'ssm-shared-lib'; @@ -53,10 +53,11 @@ const LiveLogs = React.forwardRef( const startSocketConnection = () => { socket.connect(); resetTerminalContent(); + console.log('GET_LOGS', { containerId: id, from }); socket .emitWithAck(SsmEvents.Logs.GET_LOGS, { containerId: id, from }) .then((response) => { - if (response.status === 'OK') { + if (response.success) { terminalRef?.current?.onDataIn( '---\n' + '# ,;;:;,\n' + diff --git a/client/src/components/Message/DynamicMessage.tsx b/client/src/components/Message/DynamicMessage.tsx new file mode 100644 index 000000000..78a917306 --- /dev/null +++ b/client/src/components/Message/DynamicMessage.tsx @@ -0,0 +1,169 @@ +import { message as antMessage } from 'antd'; +import { MessageInstance } from 'antd/es/message/interface'; +import { motion } from 'framer-motion'; +import React from 'react'; +import { + CheckCircleFilled, + CloseCircleFilled, + InfoCircleFilled, + LoadingOutlined, + WarningFilled, +} from '@ant-design/icons'; + +// Reusable MessageContent component with styling and animation +const MessageContent: React.FC<{ + content: string; + type: 'success' | 'error' | 'info' | 'warning' | 'loading'; + onClose?: () => void; // Provided by antd message.open +}> = ({ content, type }) => { + const getBackgroundColorAndIcon = () => { + switch (type) { + case 'success': + return { + bgColor: 'rgba(22, 163, 74, 0.9)', // Green + icon: , + }; + case 'error': + return { + bgColor: 'rgba(220, 38, 38, 0.9)', // Red + icon: , + }; + case 'warning': + return { + bgColor: 'rgba(234, 179, 8, 0.9)', // Yellow + icon: , + }; + case 'loading': + return { + bgColor: 'rgba(59, 130, 246, 0.9)', // Blue + icon: , + }; + default: // Info + return { + bgColor: 'rgba(59, 130, 246, 0.9)', // Blue + icon: , + }; + } + }; + + const { bgColor, icon } = getBackgroundColorAndIcon(); + + return ( + + {/* Icon animation */} + + {icon} + + {/* Text - remains static relative to pill */} + {content} + + ); +}; + +// Function to show the message using Ant Design's system but with custom content +const showDynamicMessage = ( + content: string, + type: 'success' | 'error' | 'info' | 'warning' | 'loading', + duration?: number, +) => { + // Determine default duration based on type if none is provided + const defaultDuration = type === 'error' ? 6 : 3; + const finalDuration = duration !== undefined ? duration : defaultDuration; + + antMessage.open({ + content: , + duration: finalDuration, + icon: <>, // Explicitly remove the default icon + className: 'dynamic-message-override', + style: { + padding: 0, + margin: 0, + backgroundColor: 'transparent', + boxShadow: 'none', + display: 'flex', + justifyContent: 'center', + }, + }); +}; + +// Create enhanced message API +const message = { + ...antMessage, // Include standard antd methods + // Implement our custom dynamic methods + success({ content, duration }: { content: string; duration?: number }) { + showDynamicMessage(content, 'success', duration); + }, + error({ content, duration }: { content: string; duration?: number }) { + showDynamicMessage(content, 'error', duration); + }, + info({ content, duration }: { content: string; duration?: number }) { + showDynamicMessage(content, 'info', duration); + }, + warning({ content, duration }: { content: string; duration?: number }) { + showDynamicMessage(content, 'warning', duration); + }, + loading({ content, duration }: { content: string; duration?: number }) { + showDynamicMessage(content, 'loading', duration); + }, +}; + +export default message; + +// CSS overrides remain the same +const styleSheet = document.createElement('style'); +styleSheet.type = 'text/css'; +styleSheet.innerText = ` + .dynamic-message-override .ant-message-notice-content { + padding: 0 !important; + background-color: transparent !important; + box-shadow: none !important; + display: flex; + justify-content: center; + } + .dynamic-message-override { + /* Adjust positioning if needed - antd might add top/left */ + /* Example: position: relative !important; */ + } +`; +document.head.appendChild(styleSheet); diff --git a/client/src/components/NewDeviceModal/NewDeviceModal.tsx b/client/src/components/NewDeviceModal/NewDeviceModal.tsx index 64151cc87..6bdcbaf37 100644 --- a/client/src/components/NewDeviceModal/NewDeviceModal.tsx +++ b/client/src/components/NewDeviceModal/NewDeviceModal.tsx @@ -9,8 +9,8 @@ import { postCheckAnsibleConnection, postCheckDockerConnection, postCheckRemoteSystemInformationConnection, - putDevice, -} from '@/services/rest/device'; + createDevice, +} from '@/services/rest/devices/devices'; import { DownloadOutlined } from '@ant-design/icons'; import { ProFormDependency, @@ -77,7 +77,7 @@ const NewDeviceModal: React.FC = ({ const handleFinish = async (values: any) => { setLoading(true); try { - const res = await putDevice( + const res = await createDevice( values.deviceIp, { authType: values.authType, diff --git a/client/src/components/PlaybookExecutionModal/PlaybookExecutionHandler.ts b/client/src/components/PlaybookExecutionModal/PlaybookExecutionHandler.ts index 989b77997..76b564aa0 100644 --- a/client/src/components/PlaybookExecutionModal/PlaybookExecutionHandler.ts +++ b/client/src/components/PlaybookExecutionModal/PlaybookExecutionHandler.ts @@ -1,5 +1,5 @@ import taskStatusTimeline from '@/components/PlaybookExecutionModal/TaskStatusTimeline'; -import { getExecLogs, getTaskStatuses } from '@/services/rest/playbooks'; +import { getExecLogs, getTaskStatuses } from '@/services/rest/playbooks/playbooks'; import { StepsProps } from 'antd'; import React, { ReactNode } from 'react'; import { API, SsmAnsible } from 'ssm-shared-lib'; diff --git a/client/src/components/PlaybookExecutionModal/PlaybookExecutionTerminalModal.tsx b/client/src/components/PlaybookExecutionModal/PlaybookExecutionTerminalModal.tsx index c8206d669..07bfe3b6a 100644 --- a/client/src/components/PlaybookExecutionModal/PlaybookExecutionTerminalModal.tsx +++ b/client/src/components/PlaybookExecutionModal/PlaybookExecutionTerminalModal.tsx @@ -5,7 +5,7 @@ import TerminalHandler, { import TerminalCore, { TerminalCoreHandles, } from '@/components/Terminal/TerminalCore'; -import { getAnsibleSmartFailure } from '@/services/rest/ansible'; +import { getAnsibleSmartFailure } from '@/services/rest/smart-failure/smart-failure'; import { ClockCircleOutlined, ThunderboltOutlined } from '@ant-design/icons'; import { DotLottie, DotLottieReact } from '@lottiefiles/dotlottie-react'; diff --git a/client/src/components/PlaybookExecutionModal/index.tsx b/client/src/components/PlaybookExecutionModal/index.tsx index f55d630bf..1059f2387 100644 --- a/client/src/components/PlaybookExecutionModal/index.tsx +++ b/client/src/components/PlaybookExecutionModal/index.tsx @@ -4,8 +4,8 @@ import TerminalCoreModal, { import { executePlaybook, executePlaybookByQuickRef, -} from '@/services/rest/playbooks'; -import { message } from 'antd'; +} from '@/services/rest/playbooks/playbooks'; +import message from '@/components/Message/DynamicMessage'; import React, { RefObject, useEffect, useState } from 'react'; import { API, SsmAnsible } from 'ssm-shared-lib'; diff --git a/client/src/components/PlaybookSelection/PlaybookSelectionModal.tsx b/client/src/components/PlaybookSelection/PlaybookSelectionModal.tsx index 28d4181cf..f43a4fc4a 100644 --- a/client/src/components/PlaybookSelection/PlaybookSelectionModal.tsx +++ b/client/src/components/PlaybookSelection/PlaybookSelectionModal.tsx @@ -4,7 +4,7 @@ import { TriangleFlag, } from '@/components/Icons/CustomIcons'; import ExtraVarView from '@/components/PlaybookSelection/ExtraVarView'; -import { getPlaybooks } from '@/services/rest/playbooks'; +import { getPlaybooks } from '@/services/rest/playbooks/playbooks'; import { RightSquareOutlined } from '@ant-design/icons'; import { ModalForm, @@ -19,13 +19,13 @@ import { Dropdown, Form, MenuProps, - message, Tag, Tooltip, Typography, } from 'antd'; import React, { Dispatch, SetStateAction, useEffect } from 'react'; import { API, SsmAnsible } from 'ssm-shared-lib'; +import message from '@/components/Message/DynamicMessage'; export type PlaybookSelectionModalProps = { isModalOpen: boolean; diff --git a/client/src/components/Template/Title.tsx b/client/src/components/Template/Title.tsx index 800be1327..4e10fbc27 100644 --- a/client/src/components/Template/Title.tsx +++ b/client/src/components/Template/Title.tsx @@ -45,7 +45,7 @@ const PageContainerTitleRow: React.FC = ({ }) => ( - + {isMain ? ( diff --git a/client/src/components/Terminal/TerminalCore.tsx b/client/src/components/Terminal/TerminalCore.tsx index aa9844764..29fe25719 100644 --- a/client/src/components/Terminal/TerminalCore.tsx +++ b/client/src/components/Terminal/TerminalCore.tsx @@ -89,7 +89,10 @@ const TerminalCore = React.forwardRef( terminal.open(terminalElement); terminal.loadAddon(fitAddon); if (onDataOut) { - terminal.onData(onDataOut); + terminal.onData((value) => { + console.log('Received data from terminal:', value); + onDataOut(value); + }); } fitAddon.fit(); terminal.focus(); diff --git a/client/src/global.less b/client/src/global.less index 3792b9324..540a0365a 100644 --- a/client/src/global.less +++ b/client/src/global.less @@ -253,3 +253,8 @@ ol { transform: rotateZ(0); } } + +.ant-pro-layout .ant-pro-layout-bg-list { + background: #0a0a0a !important; +} + \ No newline at end of file diff --git a/client/src/global.tsx b/client/src/global.tsx index 4008dc045..65b672544 100644 --- a/client/src/global.tsx +++ b/client/src/global.tsx @@ -1,5 +1,6 @@ import '@umijs/max'; -import { Button, message, notification } from 'antd'; +import message from '@/components/Message/DynamicMessage'; +import { Button, notification } from 'antd'; import defaultSettings from '../config/defaultSettings'; const { pwa } = defaultSettings; @@ -23,7 +24,7 @@ const clearCache = () => { if (pwa) { // Notify user if offline now window.addEventListener('sw.offline', () => { - message.warning('You are offline now'); + message.warning({ content: 'You are offline now', duration: 6 }); }); // Pop up a prompt on the page asking the user if they want to use the latest version diff --git a/client/src/locales/en-US.ts b/client/src/locales/en-US.ts index 6c6e37aab..d488f7760 100644 --- a/client/src/locales/en-US.ts +++ b/client/src/locales/en-US.ts @@ -12,4 +12,5 @@ export default { 'menu.Stack': 'Stack', 'menu.Stack.Playbooks': 'Playbooks', 'menu.Stack.Container Stacks': 'Container Stacks', + 'menu.Plugins': 'Plugins', }; diff --git a/client/src/pages/Admin/Inventory/components/tabs/AgentConfigurationTab.tsx b/client/src/pages/Admin/Inventory/components/tabs/AgentConfigurationTab.tsx index 80ad8a07d..8ef8f3867 100644 --- a/client/src/pages/Admin/Inventory/components/tabs/AgentConfigurationTab.tsx +++ b/client/src/pages/Admin/Inventory/components/tabs/AgentConfigurationTab.tsx @@ -1,9 +1,10 @@ import AgentInstallMethod from '@/components/DeviceConfiguration/AgentInstallMethod'; import { GrommetIconsInstall } from '@/components/Icons/CustomIcons'; -import { updateAgentInstallMethod } from '@/services/rest/device'; +import { updateAgentInstallMethod } from '@/services/rest/devices/devices'; import { InfoCircleFilled } from '@ant-design/icons'; import { ProForm, ProFormDependency } from '@ant-design/pro-components'; -import { Alert, Avatar, Card, Col, message, Row, Space, Tag } from 'antd'; +import message from '@/components/Message/DynamicMessage'; +import { Alert, Avatar, Card, Col, Row, Space, Tag } from 'antd'; import React from 'react'; import { API, SsmAgent } from 'ssm-shared-lib'; diff --git a/client/src/pages/Admin/Inventory/components/tabs/SSHConfigurationFormTab.tsx b/client/src/pages/Admin/Inventory/components/tabs/SSHConfigurationFormTab.tsx index cf83d0478..8d7d4e5fe 100644 --- a/client/src/pages/Admin/Inventory/components/tabs/SSHConfigurationFormTab.tsx +++ b/client/src/pages/Admin/Inventory/components/tabs/SSHConfigurationFormTab.tsx @@ -1,8 +1,12 @@ import SSHConnectionFormElements from '@/components/DeviceConfiguration/SSHConnectionFormElements'; -import { getDeviceAuth, putDeviceAuth } from '@/services/rest/deviceauth'; +import { + getDeviceAuth, + updateDeviceAuth, +} from '@/services/rest/devices/device-credentials'; import { ProFormInstance } from '@ant-design/pro-components'; import { ProForm } from '@ant-design/pro-form/lib'; -import { message, Space } from 'antd'; +import message from '@/components/Message/DynamicMessage'; +import { Space } from 'antd'; import React, { useRef } from 'react'; import { API } from 'ssm-shared-lib'; @@ -34,7 +38,7 @@ const SSHConfigurationFormTab: React.FC = ({ }} onFinish={async (values) => { if (device?.uuid && values) { - await putDeviceAuth(device.uuid, { + await updateDeviceAuth(device.uuid, { sshPort: values.sshPort, authType: values.authType, sshUser: values.sshUser, diff --git a/client/src/pages/Admin/Inventory/components/tabs/SystemInformationConfigurationTab.tsx b/client/src/pages/Admin/Inventory/components/tabs/SystemInformationConfigurationTab.tsx index aebc68d65..0c663b66e 100644 --- a/client/src/pages/Admin/Inventory/components/tabs/SystemInformationConfigurationTab.tsx +++ b/client/src/pages/Admin/Inventory/components/tabs/SystemInformationConfigurationTab.tsx @@ -10,7 +10,7 @@ import { Wifi, } from '@/components/Icons/CustomIcons'; import { CardHeader } from '@/components/Template/CardHeader'; -import { updateDeviceSystemInformationConfiguration } from '@/services/rest/device'; +import { updateDeviceSystemInformationConfiguration } from '@/services/rest/devices/devices'; import { capitalizeFirstLetter } from '@/utils/strings'; import { CheckCircleFilled, @@ -22,7 +22,8 @@ import { ProFormSelect, ProFormSwitch, } from '@ant-design/pro-components'; -import { Card, message, Space, Tooltip } from 'antd'; +import message from '@/components/Message/DynamicMessage'; +import { Card, Space, Tooltip } from 'antd'; import React, { useEffect } from 'react'; import Cron from 'react-js-cron'; import { API } from 'ssm-shared-lib'; diff --git a/client/src/pages/Admin/Inventory/components/tabs/containers/DockerConfigurationForm.tsx b/client/src/pages/Admin/Inventory/components/tabs/containers/DockerConfigurationForm.tsx index 8351cde20..b04436fb4 100644 --- a/client/src/pages/Admin/Inventory/components/tabs/containers/DockerConfigurationForm.tsx +++ b/client/src/pages/Admin/Inventory/components/tabs/containers/DockerConfigurationForm.tsx @@ -1,8 +1,12 @@ import { DockerConfigurationFormElements } from '@/components/DeviceConfiguration/DockerConfigurationFormElements'; -import { getDeviceAuth, putDeviceDockerAuth } from '@/services/rest/deviceauth'; +import { + getDeviceAuth, + updateDeviceDockerAuth, +} from '@/services/rest/devices/device-credentials'; import { ProFormInstance } from '@ant-design/pro-components'; import { ProForm } from '@ant-design/pro-form/lib'; -import { message, Space } from 'antd'; +import message from '@/components/Message/DynamicMessage'; +import { Space } from 'antd'; import React from 'react'; import { API } from 'ssm-shared-lib'; @@ -35,7 +39,7 @@ const DockerConfigurationForm: React.FC = ({ }} onFinish={async (values) => { if (device?.uuid && values) { - await putDeviceDockerAuth(device.uuid, { + await updateDeviceDockerAuth(device.uuid, { customDockerSSH: values.customDockerSSH, dockerCustomAuthType: values.dockerCustomAuthType, dockerCustomSshUser: values.dockerCustomSshUser, diff --git a/client/src/pages/Admin/Inventory/components/tabs/containers/ProxmoxConfigurationForm.tsx b/client/src/pages/Admin/Inventory/components/tabs/containers/ProxmoxConfigurationForm.tsx index b07fef29c..422dc2f9a 100644 --- a/client/src/pages/Admin/Inventory/components/tabs/containers/ProxmoxConfigurationForm.tsx +++ b/client/src/pages/Admin/Inventory/components/tabs/containers/ProxmoxConfigurationForm.tsx @@ -2,11 +2,12 @@ import ProxmoxConfigurationFormElements from '@/components/DeviceConfiguration/P import { getDeviceAuth, postCheckDeviceProxmoxAuth, - postDeviceProxmoxAuth, -} from '@/services/rest/deviceauth'; + updateDeviceProxmoxAuth, +} from '@/services/rest/devices/device-credentials'; import { ProFormInstance } from '@ant-design/pro-components'; import { ProForm } from '@ant-design/pro-form/lib'; -import { Button, message, Space } from 'antd'; +import message from '@/components/Message/DynamicMessage'; +import { Button, Space } from 'antd'; import React from 'react'; import { API } from 'ssm-shared-lib'; @@ -66,7 +67,10 @@ const ProxmoxConfigurationForm: React.FC = ({ }} onFinish={async (values) => { if (device?.uuid && values) { - await postDeviceProxmoxAuth(device.uuid, values as API.ProxmoxAuth) + await updateDeviceProxmoxAuth( + device.uuid, + values as API.ProxmoxAuth, + ) .then(() => { message.success({ content: 'Configuration updated', diff --git a/client/src/pages/Admin/Inventory/index.tsx b/client/src/pages/Admin/Inventory/index.tsx index 2d83acf91..12fceb247 100644 --- a/client/src/pages/Admin/Inventory/index.tsx +++ b/client/src/pages/Admin/Inventory/index.tsx @@ -12,7 +12,7 @@ import TerminalModal, { import PlaybookSelectionModal from '@/components/PlaybookSelection/PlaybookSelectionModal'; import Title, { TitleColors } from '@/components/Template/Title'; import InventoryColumns from '@/pages/Admin/Inventory/InventoryColumns'; -import { deleteDevice, getDevices } from '@/services/rest/device'; +import { deleteDevice, getDevices } from '@/services/rest/devices/devices'; import { useParams } from '@@/exports'; import { DatabaseOutlined, WarningOutlined } from '@ant-design/icons'; import type { @@ -25,7 +25,8 @@ import { ProDescriptions, ProTable, } from '@ant-design/pro-components'; -import { Button, Drawer, message, Popconfirm } from 'antd'; +import message from '@/components/Message/DynamicMessage'; +import { Button, Drawer, Popconfirm } from 'antd'; import React, { useRef, useState } from 'react'; import { API, SsmAnsible, SsmAgent } from 'ssm-shared-lib'; import ConfigurationModal from './components/ConfigurationModal'; diff --git a/client/src/pages/Admin/Logs/TaskLogsColumns.tsx b/client/src/pages/Admin/Logs/TaskLogsColumns.tsx index 02a438865..88704dd4c 100644 --- a/client/src/pages/Admin/Logs/TaskLogsColumns.tsx +++ b/client/src/pages/Admin/Logs/TaskLogsColumns.tsx @@ -11,13 +11,20 @@ const EllipsisMiddle: React.FC<{ suffixCount: number; children: string }> = ({ suffixCount, children, }) => { - const start = children.slice(0, children.length - suffixCount); - const suffix = children.slice(-suffixCount).trim(); - return ( - - {start} + try { + const start = children.slice(0, children.length - suffixCount); + const suffix = children.slice(-suffixCount).trim(); + return ( + + {start} + + ); + } catch (error) { + return ( + {children} - ); + ); + } }; const TaskLogsColumns: ProColumns[] = [ diff --git a/client/src/pages/Admin/Logs/TaskLogsTerminalModal.tsx b/client/src/pages/Admin/Logs/TaskLogsTerminalModal.tsx index b5e10dbc2..a8e14a6c9 100644 --- a/client/src/pages/Admin/Logs/TaskLogsTerminalModal.tsx +++ b/client/src/pages/Admin/Logs/TaskLogsTerminalModal.tsx @@ -1,10 +1,7 @@ -import TerminalCoreModal, { - PlaybookExecutionTerminalModalHandles, -} from '@/components/PlaybookExecutionModal/PlaybookExecutionTerminalModal'; import TerminalCore, { TerminalCoreHandles, } from '@/components/Terminal/TerminalCore'; -import { getTaskEventsLogs } from '@/services/rest/logs'; +import { getTaskEventsLogs } from '@/services/rest/ansible/ansible.logs'; import { Modal } from 'antd'; import React, { useEffect, useRef, useState } from 'react'; import { API } from 'ssm-shared-lib'; diff --git a/client/src/pages/Admin/Logs/index.tsx b/client/src/pages/Admin/Logs/index.tsx index 59d1c961b..7551c53dc 100644 --- a/client/src/pages/Admin/Logs/index.tsx +++ b/client/src/pages/Admin/Logs/index.tsx @@ -1,7 +1,8 @@ import Title, { TitleColors } from '@/components/Template/Title'; import ServerLogsColumns from '@/pages/Admin/Logs/ServerLogsColums'; import TaskLogsColumns from '@/pages/Admin/Logs/TaskLogsColumns'; -import { getServerLogs, getTasksLogs } from '@/services/rest/logs'; +import { getServerLogs } from '@/services/rest/logs/logs'; +import { getTasksLogs } from '@/services/rest/ansible/ansible.logs'; import { UnorderedListOutlined } from '@ant-design/icons'; import { ColumnsState, diff --git a/client/src/pages/Admin/Settings/Settings.tsx b/client/src/pages/Admin/Settings/Settings.tsx index 0c1441968..e8b1dd3c8 100644 --- a/client/src/pages/Admin/Settings/Settings.tsx +++ b/client/src/pages/Admin/Settings/Settings.tsx @@ -6,14 +6,17 @@ import GeneralSettings from '@/pages/Admin/Settings/components/GeneralSettings'; import Information from '@/pages/Admin/Settings/components/Information'; import PlaybookSettings from '@/pages/Admin/Settings/components/PlaybooksSettings'; import RegistrySettings from '@/pages/Admin/Settings/components/RegistrySettings'; -import { InfoCircleOutlined, SettingOutlined } from '@ant-design/icons'; +import { InfoCircleOutlined, SettingOutlined, AppstoreOutlined } from '@ant-design/icons'; import { PageContainer } from '@ant-design/pro-components'; import React, { useEffect } from 'react'; import { TabsProps } from 'antd'; import { history, useLocation } from '@umijs/max'; +import { useSlot } from '@/plugins/contexts/plugin-context'; const Settings: React.FC = () => { const location = useLocation(); + // Get the settings panels slot renderer + const SettingsPanelsSlot = useSlot('settings-panels'); const settingsTabItems: TabsProps['items'] = [ { @@ -79,6 +82,24 @@ const Settings: React.FC = () => { ), children: , }, + { + key: 'plugins', + label: ( +
+ Plugins +
+ ), + children: ( +
+ + +
+ ), + }, ]; // Function to handle tab change diff --git a/client/src/pages/Admin/Settings/components/AdvancedSettings.tsx b/client/src/pages/Admin/Settings/components/AdvancedSettings.tsx index 71cf3b6fd..362fddc69 100644 --- a/client/src/pages/Admin/Settings/components/AdvancedSettings.tsx +++ b/client/src/pages/Admin/Settings/components/AdvancedSettings.tsx @@ -10,7 +10,7 @@ import { deletePlaybooksAndResync, deleteServerLogs, postRestartServer, -} from '@/services/rest/settings'; +} from '@/services/rest/settings/settings'; import { BugFilled, InfoCircleFilled, RedoOutlined } from '@ant-design/icons'; import { Button, Card, Col, Popover, Row, Typography } from 'antd'; import { DeleteOutline } from 'antd-mobile-icons'; diff --git a/client/src/pages/Admin/Settings/components/AuthenticationSettings.tsx b/client/src/pages/Admin/Settings/components/AuthenticationSettings.tsx index 503c6b460..9cb9fe754 100644 --- a/client/src/pages/Admin/Settings/components/AuthenticationSettings.tsx +++ b/client/src/pages/Admin/Settings/components/AuthenticationSettings.tsx @@ -1,23 +1,23 @@ import { LinkAlt, MynauiApi } from '@/components/Icons/CustomIcons'; import Title, { TitleColors } from '@/components/Template/Title'; -import { postMasterNodeUrlValue } from '@/services/rest/settings'; -import { postResetApiKey } from '@/services/rest/usersettings'; +import { postMasterNodeUrlValue } from '@/services/rest/settings/settings'; +import { postResetApiKey } from '@/services/rest/users/users'; import { useModel } from '@@/exports'; import { InfoCircleFilled, WarningOutlined } from '@ant-design/icons'; import { Button, Card, + Col, + Flex, Input, - message, + InputRef, Popconfirm, Popover, - Typography, Row, - Col, - Flex, - InputRef, + Typography, } from 'antd'; import React, { useState } from 'react'; +import message from '@/components/Message/DynamicMessage'; const AuthenticationSettings: React.FC = () => { const { initialState } = useModel('@@initialState'); @@ -30,7 +30,7 @@ const AuthenticationSettings: React.FC = () => { const onClickResetApiKey = async () => { await postResetApiKey().then((res) => { - setApiKey(res.data.uuid); + setApiKey(res.data.apiKey); message.success({ content: 'API Key successfully reset', duration: 6 }); }); }; diff --git a/client/src/pages/Admin/Settings/components/ContainerStacksSettings.tsx b/client/src/pages/Admin/Settings/components/ContainerStacksSettings.tsx index a5b5e7d97..9c4db11ed 100644 --- a/client/src/pages/Admin/Settings/components/ContainerStacksSettings.tsx +++ b/client/src/pages/Admin/Settings/components/ContainerStacksSettings.tsx @@ -4,7 +4,7 @@ import { } from '@/components/Icons/CustomIcons'; import Title, { TitleColors } from '@/components/Template/Title'; import ContainerStacksGitRepositoryModal from '@/pages/Admin/Settings/components/subcomponents/ContainerStacksGitRepositoryModal'; -import { getGitContainerStacksRepositories } from '@/services/rest/container-stacks-repositories'; +import { getGitContainerStacksRepositories } from '@/services/rest/container-stacks/repositories'; import { InfoCircleFilled } from '@ant-design/icons'; import { ProList } from '@ant-design/pro-components'; import { diff --git a/client/src/pages/Admin/Settings/components/GeneralSettings.tsx b/client/src/pages/Admin/Settings/components/GeneralSettings.tsx index a082c775c..e4cfb310f 100644 --- a/client/src/pages/Admin/Settings/components/GeneralSettings.tsx +++ b/client/src/pages/Admin/Settings/components/GeneralSettings.tsx @@ -11,7 +11,7 @@ import { postDeviceStatsSettings, postLogsSetting, postResetSettings, -} from '@/services/rest/settings'; +} from '@/services/rest/settings/settings'; import { useModel } from '@@/exports'; import { InfoCircleFilled, @@ -24,7 +24,6 @@ import { Col, Flex, InputNumber, - message, Popconfirm, Popover, Row, @@ -33,7 +32,7 @@ import { } from 'antd'; import React, { useState } from 'react'; import { SettingsKeys } from 'ssm-shared-lib'; - +import message from '@/components/Message/DynamicMessage'; const GeneralSettings: React.FC = () => { const { initialState } = useModel('@@initialState'); const { currentUser } = initialState || {}; diff --git a/client/src/pages/Admin/Settings/components/Information.tsx b/client/src/pages/Admin/Settings/components/Information.tsx index cc34ebc2d..2b59dec1a 100644 --- a/client/src/pages/Admin/Settings/components/Information.tsx +++ b/client/src/pages/Admin/Settings/components/Information.tsx @@ -2,7 +2,7 @@ import { getMongoDBServerStats, getPrometheusServerStats, getRedisServerStats, -} from '@/services/rest/settings'; +} from '@/services/rest/settings/settings'; import { useModel } from '@umijs/max'; import { Descriptions, Flex, Popover, Spin } from 'antd'; import React, { useEffect, useState } from 'react'; diff --git a/client/src/pages/Admin/Settings/components/PlaybooksSettings.tsx b/client/src/pages/Admin/Settings/components/PlaybooksSettings.tsx index 92732c181..27f77095d 100644 --- a/client/src/pages/Admin/Settings/components/PlaybooksSettings.tsx +++ b/client/src/pages/Admin/Settings/components/PlaybooksSettings.tsx @@ -8,12 +8,12 @@ import Title, { TitleColors } from '@/components/Template/Title'; import CustomVaultModal from '@/pages/Admin/Settings/components/subcomponents/CustomVaultModal'; import PlaybooksGitRepositoryModal from '@/pages/Admin/Settings/components/subcomponents/PlaybooksGitRepositoryModal'; import PlaybooksLocalRepositoryModal from '@/pages/Admin/Settings/components/subcomponents/PlaybooksLocalRepositoryModal'; -import { getAnsibleVaults } from '@/services/rest/ansible'; +import { getAnsibleVaults } from '@/services/rest/ansible-vaults/ansible-vault'; import { getGitPlaybooksRepositories, getPlaybooksLocalRepositories, -} from '@/services/rest/playbooks-repositories'; -import { postUserLogs } from '@/services/rest/usersettings'; +} from '@/services/rest/playbooks/repositories'; +import { postUserLogs } from '@/services/rest/users/users'; import { useModel } from '@@/exports'; import { InfoCircleFilled, @@ -29,7 +29,6 @@ import { Col, Flex, InputNumber, - message, Popover, Row, Slider, @@ -41,6 +40,7 @@ import { import { AddCircleOutline } from 'antd-mobile-icons'; import React, { useEffect, useState } from 'react'; import { API } from 'ssm-shared-lib'; +import message from '@/components/Message/DynamicMessage'; const PlaybookSettings: React.FC = () => { const { initialState } = useModel('@@initialState'); diff --git a/client/src/pages/Admin/Settings/components/RegistrySettings.tsx b/client/src/pages/Admin/Settings/components/RegistrySettings.tsx index 4cd5f7de5..f36d2386f 100644 --- a/client/src/pages/Admin/Settings/components/RegistrySettings.tsx +++ b/client/src/pages/Admin/Settings/components/RegistrySettings.tsx @@ -4,7 +4,7 @@ import { getRegistries, removeRegistry, resetRegistry, -} from '@/services/rest/containers'; +} from '@/services/rest/containers/container-registries'; import { CheckCircleOutlined, MinusCircleOutlined, @@ -12,7 +12,8 @@ import { UserOutlined, } from '@ant-design/icons'; import { ProList } from '@ant-design/pro-components'; -import { Avatar, Button, Card, message, Popconfirm, Tag, Tooltip } from 'antd'; +import message from '@/components/Message/DynamicMessage'; +import { Avatar, Button, Card, Popconfirm, Tag, Tooltip } from 'antd'; import { AddCircleOutline, DeleteOutline } from 'antd-mobile-icons'; import React, { useEffect, useState } from 'react'; import { API } from 'ssm-shared-lib'; diff --git a/client/src/pages/Admin/Settings/components/subcomponents/AnsibleConfiguration.tsx b/client/src/pages/Admin/Settings/components/subcomponents/AnsibleConfiguration.tsx index 03a6bd479..1a2d0000e 100644 --- a/client/src/pages/Admin/Settings/components/subcomponents/AnsibleConfiguration.tsx +++ b/client/src/pages/Admin/Settings/components/subcomponents/AnsibleConfiguration.tsx @@ -3,14 +3,15 @@ import { getAnsibleConfig, postAnsibleConfig, putAnsibleConfig, -} from '@/services/rest/ansible'; +} from '@/services/rest/ansible-config/ansible-config'; import { ActionType, EditableProTable, ProColumns, RequestData, } from '@ant-design/pro-components'; -import { Button, message, Popconfirm, Spin, Switch } from 'antd'; +import message from '@/components/Message/DynamicMessage'; +import { Button, Popconfirm, Spin, Switch } from 'antd'; import React, { useRef, useState } from 'react'; interface ConfigEntry { diff --git a/client/src/pages/Admin/Settings/components/subcomponents/ContainerStacksGitRepositoryModal.tsx b/client/src/pages/Admin/Settings/components/subcomponents/ContainerStacksGitRepositoryModal.tsx index 2a15cad51..a8d6d072d 100644 --- a/client/src/pages/Admin/Settings/components/subcomponents/ContainerStacksGitRepositoryModal.tsx +++ b/client/src/pages/Admin/Settings/components/subcomponents/ContainerStacksGitRepositoryModal.tsx @@ -3,18 +3,19 @@ import FileMatchesForm from '@/pages/Admin/Settings/components/subcomponents/for import GitForm from '@/pages/Admin/Settings/components/subcomponents/forms/GitForm'; import { commitAndSyncContainerStacksGitRepository, + createContainerStacksGitRepository, deleteContainerStacksGitRepository, forceCloneContainerStacksGitRepository, forcePullContainerStacksGitRepository, forceRegisterContainerStacksGitRepository, - postContainerStacksGitRepository, - putContainerStacksGitRepository, + updateContainerStacksGitRepository, syncToDatabaseContainerStacksGitRepository, -} from '@/services/rest/container-stacks-repositories'; +} from '@/services/rest/container-stacks/repositories'; import { DeleteOutlined, UnorderedListOutlined } from '@ant-design/icons'; import { ModalForm, ProForm } from '@ant-design/pro-components'; import { history } from '@umijs/max'; -import { Avatar, Button, Dropdown, MenuProps, message, Popconfirm } from 'antd'; +import message from '@/components/Message/DynamicMessage'; +import { Avatar, Button, Dropdown, MenuProps, Popconfirm } from 'antd'; import React from 'react'; import { API } from 'ssm-shared-lib'; @@ -195,14 +196,14 @@ const ContainerStacksGitRepositoryModal: React.FC< }} onFinish={async (values) => { if (selectedRecord) { - await postContainerStacksGitRepository( + await updateContainerStacksGitRepository( selectedRecord.uuid as string, values, ); setModalOpened(false); await asyncFetch(); } else { - await putContainerStacksGitRepository(values); + await createContainerStacksGitRepository(values); message.loading({ content: 'Repository cloning & processing in process...', duration: 6, diff --git a/client/src/pages/Admin/Settings/components/subcomponents/CustomVaultModal.tsx b/client/src/pages/Admin/Settings/components/subcomponents/CustomVaultModal.tsx index 4c9fb671d..db2c65c61 100644 --- a/client/src/pages/Admin/Settings/components/subcomponents/CustomVaultModal.tsx +++ b/client/src/pages/Admin/Settings/components/subcomponents/CustomVaultModal.tsx @@ -3,10 +3,11 @@ import { deleteAnsibleVault, postAnsibleVault, updateAnsibleVault, -} from '@/services/rest/ansible'; +} from '@/services/rest/ansible-vaults/ansible-vault'; import { DeleteOutlined } from '@ant-design/icons'; import { ModalForm, ProForm, ProFormText } from '@ant-design/pro-components'; -import { Avatar, Button, message, Popconfirm } from 'antd'; +import message from '@/components/Message/DynamicMessage'; +import { Avatar, Button, Popconfirm } from 'antd'; import React, { FC, useState } from 'react'; import { API } from 'ssm-shared-lib'; diff --git a/client/src/pages/Admin/Settings/components/subcomponents/PlaybooksGitRepositoryModal.tsx b/client/src/pages/Admin/Settings/components/subcomponents/PlaybooksGitRepositoryModal.tsx index 77e7f5c42..28f629df2 100644 --- a/client/src/pages/Admin/Settings/components/subcomponents/PlaybooksGitRepositoryModal.tsx +++ b/client/src/pages/Admin/Settings/components/subcomponents/PlaybooksGitRepositoryModal.tsx @@ -11,11 +11,12 @@ import { postPlaybooksGitRepository, putPlaybooksGitRepository, syncToDatabasePlaybooksGitRepository, -} from '@/services/rest/playbooks-repositories'; +} from '@/services/rest/playbooks/repositories'; import { DeleteOutlined, UnorderedListOutlined } from '@ant-design/icons'; import { ModalForm, ProForm } from '@ant-design/pro-components'; import { history } from '@umijs/max'; -import { Avatar, Button, Dropdown, MenuProps, message, Popconfirm } from 'antd'; +import message from '@/components/Message/DynamicMessage'; +import { Avatar, Button, Dropdown, MenuProps, Popconfirm } from 'antd'; import React from 'react'; import { API } from 'ssm-shared-lib'; diff --git a/client/src/pages/Admin/Settings/components/subcomponents/PlaybooksLocalRepositoryModal.tsx b/client/src/pages/Admin/Settings/components/subcomponents/PlaybooksLocalRepositoryModal.tsx index 989df7303..db963b2c4 100644 --- a/client/src/pages/Admin/Settings/components/subcomponents/PlaybooksLocalRepositoryModal.tsx +++ b/client/src/pages/Admin/Settings/components/subcomponents/PlaybooksLocalRepositoryModal.tsx @@ -6,7 +6,7 @@ import { postPlaybooksLocalRepositories, putPlaybooksLocalRepositories, syncToDatabasePlaybooksLocalRepository, -} from '@/services/rest/playbooks-repositories'; +} from '@/services/rest/playbooks/repositories'; import { DeleteOutlined, QuestionCircleOutlined, @@ -14,7 +14,8 @@ import { } from '@ant-design/icons'; import { ModalForm, ProForm, ProFormText } from '@ant-design/pro-components'; import { history } from '@umijs/max'; -import { Avatar, Button, Dropdown, MenuProps, message, Popconfirm } from 'antd'; +import message from '@/components/Message/DynamicMessage'; +import { Avatar, Button, Dropdown, MenuProps, Popconfirm } from 'antd'; import React, { FC, useState } from 'react'; import { API } from 'ssm-shared-lib'; diff --git a/client/src/pages/Admin/Settings/components/subcomponents/RegistryModal.tsx b/client/src/pages/Admin/Settings/components/subcomponents/RegistryModal.tsx index 6fa4d36fb..c1ba7eacf 100644 --- a/client/src/pages/Admin/Settings/components/subcomponents/RegistryModal.tsx +++ b/client/src/pages/Admin/Settings/components/subcomponents/RegistryModal.tsx @@ -2,7 +2,7 @@ import RegistryLogo from '@/components/RegistryComponents/RegistryLogo'; import { createCustomRegistry, updateRegistry, -} from '@/services/rest/containers'; +} from '@/services/rest/containers/container-registries'; import { ModalForm, ProForm, ProFormText } from '@ant-design/pro-components'; import { Alert, Avatar, Space } from 'antd'; import React from 'react'; diff --git a/client/src/pages/Admin/Settings/components/subcomponents/forms/CustomVault.tsx b/client/src/pages/Admin/Settings/components/subcomponents/forms/CustomVault.tsx index a131e431f..a7d4651fb 100644 --- a/client/src/pages/Admin/Settings/components/subcomponents/forms/CustomVault.tsx +++ b/client/src/pages/Admin/Settings/components/subcomponents/forms/CustomVault.tsx @@ -1,4 +1,4 @@ -import { getAnsibleVaults } from '@/services/rest/ansible'; +import { getAnsibleVaults } from '@/services/rest/ansible-vaults/ansible-vault'; import { ProFormSelect } from '@ant-design/pro-form'; import React from 'react'; import { API } from 'ssm-shared-lib'; diff --git a/client/src/pages/Admin/Settings/components/subcomponents/forms/DirectoryExclusionForm.tsx b/client/src/pages/Admin/Settings/components/subcomponents/forms/DirectoryExclusionForm.tsx index c5b8da8b3..cbfabd1a6 100644 --- a/client/src/pages/Admin/Settings/components/subcomponents/forms/DirectoryExclusionForm.tsx +++ b/client/src/pages/Admin/Settings/components/subcomponents/forms/DirectoryExclusionForm.tsx @@ -1,5 +1,5 @@ import { ProFormSelect } from '@ant-design/pro-form'; -import { message } from 'antd'; +import message from '@/components/Message/DynamicMessage'; import React, { useState } from 'react'; import { API } from 'ssm-shared-lib'; @@ -32,7 +32,10 @@ const DirectoryExclusionForm: React.FC = ( const handleTagsChange = (newTags: string[]) => { const invalidTag = newTags.find((tag) => !validateTag(tag)); if (invalidTag) { - void message.error('Characters / and \\ are not authorized'); + void message.error({ + content: 'Characters / and \\ are not authorized', + duration: 6, + }); } else { setTags(newTags); } diff --git a/client/src/pages/Admin/Settings/components/subcomponents/forms/FileMatchesForm.tsx b/client/src/pages/Admin/Settings/components/subcomponents/forms/FileMatchesForm.tsx index a632c4391..4c4f4aae8 100644 --- a/client/src/pages/Admin/Settings/components/subcomponents/forms/FileMatchesForm.tsx +++ b/client/src/pages/Admin/Settings/components/subcomponents/forms/FileMatchesForm.tsx @@ -1,5 +1,5 @@ import { ProFormSelect } from '@ant-design/pro-form'; -import { message } from 'antd'; +import message from '@/components/Message/DynamicMessage'; import React, { useState } from 'react'; import { API } from 'ssm-shared-lib'; diff --git a/client/src/pages/Admin/Settings/components/subcomponents/forms/GitForm.tsx b/client/src/pages/Admin/Settings/components/subcomponents/forms/GitForm.tsx index d88b6c3bc..a2d6e831b 100644 --- a/client/src/pages/Admin/Settings/components/subcomponents/forms/GitForm.tsx +++ b/client/src/pages/Admin/Settings/components/subcomponents/forms/GitForm.tsx @@ -5,7 +5,7 @@ import { ProFormSelect, ProFormText, } from '@ant-design/pro-components'; -import { message } from 'antd'; +import message from '@/components/Message/DynamicMessage'; import React from 'react'; import { API, SsmGit } from 'ssm-shared-lib'; diff --git a/client/src/pages/Automations/Automations.tsx b/client/src/pages/Automations/Automations.tsx index 250476ae3..6e985018c 100644 --- a/client/src/pages/Automations/Automations.tsx +++ b/client/src/pages/Automations/Automations.tsx @@ -3,8 +3,8 @@ import Title, { TitleColors } from '@/components/Template/Title'; import AutomationsColumns from '@/pages/Automations/AutomationsColumns'; import AutomationEditionDrawer from '@/pages/Automations/components/Drawer/AutomationEditionDrawer'; import CronColumns from '@/pages/Automations/CronsColumns'; -import { getAutomations } from '@/services/rest/automations'; -import { getCrons } from '@/services/rest/cron'; +import { getAutomations } from '@/services/rest/automations/automations'; +import { getCrons } from '@/services/rest/scheduler/scheduler'; import { InteractionOutlined, LockFilled } from '@ant-design/icons'; import { ActionType, diff --git a/client/src/pages/Automations/components/AutomationQuickAction.tsx b/client/src/pages/Automations/components/AutomationQuickAction.tsx index b2354a4e2..a4772bd0a 100644 --- a/client/src/pages/Automations/components/AutomationQuickAction.tsx +++ b/client/src/pages/Automations/components/AutomationQuickAction.tsx @@ -1,7 +1,7 @@ import { deleteAutomation, executeAutomation, -} from '@/services/rest/automations'; +} from '@/services/rest/automations/automations'; import { DeleteOutlined, DownOutlined, @@ -9,7 +9,8 @@ import { UnorderedListOutlined, } from '@ant-design/icons'; import { history } from '@umijs/max'; -import { Dropdown, MenuProps, message, Space } from 'antd'; +import message from '@/components/Message/DynamicMessage'; +import { Dropdown, MenuProps, Space } from 'antd'; import React from 'react'; import { API } from 'ssm-shared-lib'; diff --git a/client/src/pages/Automations/components/Drawer/AutomationEditionDrawer.tsx b/client/src/pages/Automations/components/Drawer/AutomationEditionDrawer.tsx index a0e3f5c95..0a8d61566 100644 --- a/client/src/pages/Automations/components/Drawer/AutomationEditionDrawer.tsx +++ b/client/src/pages/Automations/components/Drawer/AutomationEditionDrawer.tsx @@ -7,7 +7,7 @@ import { getTemplate, postAutomation, putAutomation, -} from '@/services/rest/automations'; +} from '@/services/rest/automations/automations'; import { ArrowDownOutlined, PlusOutlined, UpOutlined } from '@ant-design/icons'; import { DrawerForm, @@ -15,7 +15,8 @@ import { ProFormInstance, ProFormText, } from '@ant-design/pro-components'; -import { Button, Dropdown, Flex, MenuProps, message, Space } from 'antd'; +import message from '@/components/Message/DynamicMessage'; +import { Button, Dropdown, Flex, MenuProps, Space } from 'antd'; import React, { useEffect, useRef, useState } from 'react'; import { API, Automations } from 'ssm-shared-lib'; diff --git a/client/src/pages/Automations/components/Drawer/DockerActionSubForm.tsx b/client/src/pages/Automations/components/Drawer/DockerActionSubForm.tsx index 8e7e5cba5..995935a14 100644 --- a/client/src/pages/Automations/components/Drawer/DockerActionSubForm.tsx +++ b/client/src/pages/Automations/components/Drawer/DockerActionSubForm.tsx @@ -1,4 +1,4 @@ -import { getContainers } from '@/services/rest/containers'; +import { getContainers } from '@/services/rest/containers/containers'; import { CheckCircleFilled, CloseCircleOutlined, diff --git a/client/src/pages/Automations/components/Drawer/DockerVolumeActionSubForm.tsx b/client/src/pages/Automations/components/Drawer/DockerVolumeActionSubForm.tsx index d38b18f20..6a26e92aa 100644 --- a/client/src/pages/Automations/components/Drawer/DockerVolumeActionSubForm.tsx +++ b/client/src/pages/Automations/components/Drawer/DockerVolumeActionSubForm.tsx @@ -1,5 +1,5 @@ import { BackupSolid } from '@/components/Icons/CustomIcons'; -import { getVolumes } from '@/services/rest/services'; +import { getVolumes } from '@/services/rest/containers/container-volumes'; import { CheckCircleFilled } from '@ant-design/icons'; import { ProFormSelect } from '@ant-design/pro-components'; import { Space } from 'antd'; diff --git a/client/src/pages/Automations/components/Drawer/PlaybookActionSubForm.tsx b/client/src/pages/Automations/components/Drawer/PlaybookActionSubForm.tsx index 2e4d6dc47..56b5642e9 100644 --- a/client/src/pages/Automations/components/Drawer/PlaybookActionSubForm.tsx +++ b/client/src/pages/Automations/components/Drawer/PlaybookActionSubForm.tsx @@ -1,6 +1,6 @@ import ExtraVarView from '@/components/PlaybookSelection/ExtraVarView'; -import { getAllDevices } from '@/services/rest/device'; -import { getPlaybooks } from '@/services/rest/playbooks'; +import { getAllDevices } from '@/services/rest/devices/devices'; +import { getPlaybooks } from '@/services/rest/playbooks/playbooks'; import { CheckCircleFilled, FileOutlined, LockFilled } from '@ant-design/icons'; import { ProFormSelect } from '@ant-design/pro-components'; import { ProForm } from '@ant-design/pro-form/lib'; diff --git a/client/src/pages/ComposeEditor/index.tsx b/client/src/pages/ComposeEditor/index.tsx index 3f8f9d075..42bebbc94 100644 --- a/client/src/pages/ComposeEditor/index.tsx +++ b/client/src/pages/ComposeEditor/index.tsx @@ -15,7 +15,7 @@ import { postContainerCustomStack, postContainerCustomStackDryRun, postTransformContainerCustomStack, -} from '@/services/rest/containers'; +} from '@/services/rest/container-stacks/container-stacks'; import { ApartmentOutlined, CheckOutlined, @@ -31,7 +31,8 @@ import { ProFormSelect } from '@ant-design/pro-form'; import Editor, { Monaco } from '@monaco-editor/react'; import { useSearchParams } from '@umijs/max'; import { InputRef, Tag } from 'antd'; -import { Alert, Button, Col, message, notification, Row, Space } from 'antd'; +import message from '@/components/Message/DynamicMessage'; +import { Alert, Button, Col, notification, Row, Space } from 'antd'; import { AnimatePresence, motion } from 'framer-motion'; import { editor } from 'monaco-editor'; import { configureMonacoYaml } from 'monaco-yaml'; diff --git a/client/src/pages/Containers/components/Containers.tsx b/client/src/pages/Containers/components/Containers.tsx index 0b3f534e1..90014eb87 100644 --- a/client/src/pages/Containers/components/Containers.tsx +++ b/client/src/pages/Containers/components/Containers.tsx @@ -1,8 +1,8 @@ import ContainerDetailsModal from '@/pages/Containers/components/containers/ContainerDetailsModal'; import ContainerMetas from '@/pages/Containers/components/containers/ContainerMetas'; import EditContainerNameModal from '@/pages/Containers/components/containers/EditContainerNameModal'; -import { getContainers, postRefreshAll } from '@/services/rest/containers'; -import { socket } from '@/socket'; +import { getContainers, postRefreshAll } from '@/services/rest/containers/containers'; +import { containerSocket as socket } from '@/socket'; import { ReloadOutlined } from '@ant-design/icons'; import { ActionType, ProList } from '@ant-design/pro-components'; import { useSearchParams } from '@umijs/max'; diff --git a/client/src/pages/Containers/components/Images.tsx b/client/src/pages/Containers/components/Images.tsx index cdb5225ba..5d561407f 100644 --- a/client/src/pages/Containers/components/Images.tsx +++ b/client/src/pages/Containers/components/Images.tsx @@ -1,5 +1,5 @@ -import { getAllDevices } from '@/services/rest/device'; -import { getImages } from '@/services/rest/services'; +import { getAllDevices } from '@/services/rest/devices/devices'; +import { getImages } from '@/services/rest/containers/container-images'; import { PlusOutlined } from '@ant-design/icons'; import { ActionType, diff --git a/client/src/pages/Containers/components/Networks.tsx b/client/src/pages/Containers/components/Networks.tsx index 6ba482672..27954b044 100644 --- a/client/src/pages/Containers/components/Networks.tsx +++ b/client/src/pages/Containers/components/Networks.tsx @@ -1,7 +1,7 @@ import { Bridge, GrommetIconsHost } from '@/components/Icons/CustomIcons'; import CreateNetworkModal from '@/pages/Containers/components/sub-components/CreateNetworkModal'; -import { getAllDevices } from '@/services/rest/device'; -import { getNetworks } from '@/services/rest/services'; +import { getAllDevices } from '@/services/rest/devices/devices'; +import { getNetworks } from '@/services/rest/containers/container-networks'; import { ProColumns, ProFormSelect, diff --git a/client/src/pages/Containers/components/Stacks.tsx b/client/src/pages/Containers/components/Stacks.tsx index bfc9d3015..19312ca8b 100644 --- a/client/src/pages/Containers/components/Stacks.tsx +++ b/client/src/pages/Containers/components/Stacks.tsx @@ -3,7 +3,7 @@ import DeployCustomStackModal from '@/pages/Containers/components/sub-components import { deleteContainerCustomStack, getCustomStacks, -} from '@/services/rest/containers'; +} from '@/services/rest/container-stacks/container-stacks'; import { PlusOutlined } from '@ant-design/icons'; import { ActionType, @@ -12,7 +12,8 @@ import { TableDropdown, } from '@ant-design/pro-components'; import { history } from '@umijs/max'; -import { Button, message, Tag } from 'antd'; +import message from '@/components/Message/DynamicMessage'; +import { Button, Tag } from 'antd'; import React, { useRef } from 'react'; import { API } from 'ssm-shared-lib'; @@ -23,7 +24,10 @@ const Stacks: React.FC = () => { switch (key) { case 'delete': await deleteContainerCustomStack(uuid).then(() => { - message.success('Successfully deleted stack'); + message.success({ + content: 'Successfully deleted stack', + duration: 6, + }); actionRef?.current?.reload(); }); return; diff --git a/client/src/pages/Containers/components/Templates.tsx b/client/src/pages/Containers/components/Templates.tsx index 05c03b9ee..bfe542379 100644 --- a/client/src/pages/Containers/components/Templates.tsx +++ b/client/src/pages/Containers/components/Templates.tsx @@ -1,6 +1,6 @@ import { Deploy } from '@/components/Icons/CustomIcons'; import DeployModal from '@/pages/Containers/components/sub-components/DeployModal'; -import { getTemplates } from '@/services/rest/services'; +import { getTemplates } from '@/services/rest/containers/container-templates'; import { ProList } from '@ant-design/pro-components'; import { Avatar, Tag, Typography } from 'antd'; import React from 'react'; diff --git a/client/src/pages/Containers/components/Volumes.tsx b/client/src/pages/Containers/components/Volumes.tsx index 898fe5d1c..9e84d869b 100644 --- a/client/src/pages/Containers/components/Volumes.tsx +++ b/client/src/pages/Containers/components/Volumes.tsx @@ -1,7 +1,7 @@ import ContainerBackUpVolumeModal from '@/pages/Containers/components/sub-components/ContainerBackUpVolumeModal'; import CreateVolumeModal from '@/pages/Containers/components/sub-components/CreateVolumeModal'; -import { getAllDevices } from '@/services/rest/device'; -import { getVolumes } from '@/services/rest/services'; +import { getAllDevices } from '@/services/rest/devices/devices'; +import { getVolumes } from '@/services/rest/containers/container-volumes'; import { ProColumns, ProFormSelect, diff --git a/client/src/pages/Containers/components/containers/ContainerDetailsModal.tsx b/client/src/pages/Containers/components/containers/ContainerDetailsModal.tsx index c5d42f5c4..4e8526201 100644 --- a/client/src/pages/Containers/components/containers/ContainerDetailsModal.tsx +++ b/client/src/pages/Containers/components/containers/ContainerDetailsModal.tsx @@ -4,7 +4,7 @@ import ProxmoxContainerDetails from '@/pages/Containers/components/containers/co import { postDockerContainerAction, postProxmoxContainerAction, -} from '@/services/rest/containers'; +} from '@/services/rest/containers/containers'; import { CloseCircleOutlined, PauseOutlined, @@ -13,7 +13,8 @@ import { SwapOutlined, } from '@ant-design/icons'; import { history } from '@umijs/max'; -import { Button, Divider, message, Modal, Space } from 'antd'; +import message from '@/components/Message/DynamicMessage'; +import { Button, Divider, Modal, Space } from 'antd'; import React from 'react'; import { API, SsmContainer } from 'ssm-shared-lib'; diff --git a/client/src/pages/Containers/components/containers/ContainerMetas.tsx b/client/src/pages/Containers/components/containers/ContainerMetas.tsx index 9934cb2c7..deaee2807 100644 --- a/client/src/pages/Containers/components/containers/ContainerMetas.tsx +++ b/client/src/pages/Containers/components/containers/ContainerMetas.tsx @@ -10,8 +10,8 @@ import ContainerStatProgress from '@/pages/Containers/components/containers/Cont import InfoToolTipCard from '@/pages/Containers/components/containers/InfoToolTipCard'; import StatusTag from '@/pages/Containers/components/containers/StatusTag'; import UpdateAvailableTag from '@/pages/Containers/components/containers/UpdateAvailableTag'; -import { postDockerContainerAction } from '@/services/rest/containers'; -import { getAllDevices } from '@/services/rest/device'; +import { postDockerContainerAction } from '@/services/rest/containers/containers'; +import { getAllDevices } from '@/services/rest/devices/devices'; import { capitalizeFirstLetter } from '@/utils/strings'; import { InfoCircleOutlined } from '@ant-design/icons'; import { @@ -21,7 +21,8 @@ import { RequestOptionsType, } from '@ant-design/pro-components'; import { history } from '@umijs/max'; -import { Flex, message, Popover, Tag, Tooltip, Typography } from 'antd'; +import message from '@/components/Message/DynamicMessage'; +import { Flex, Popover, Tag, Tooltip, Typography } from 'antd'; import React from 'react'; import { API, SsmContainer } from 'ssm-shared-lib'; @@ -235,13 +236,12 @@ const ContainerMetas = ({ ), ( - } + content={} > - + )) : [],
= ({ autoFit: false, theme: { view: { - viewFill: '#1d222e', + viewFill: 'transparent', }, }, width: 280, diff --git a/client/src/pages/Containers/components/containers/EditContainerNameModal.tsx b/client/src/pages/Containers/components/containers/EditContainerNameModal.tsx index 64ba33e21..a259bbd87 100644 --- a/client/src/pages/Containers/components/containers/EditContainerNameModal.tsx +++ b/client/src/pages/Containers/components/containers/EditContainerNameModal.tsx @@ -1,6 +1,6 @@ -import { updateContainerCustomName } from '@/services/rest/containers'; +import { updateContainerCustomName } from '@/services/rest/containers/containers'; import { ActionType, ModalForm, ProFormText } from '@ant-design/pro-components'; -import { message } from 'antd'; +import message from '@/components/Message/DynamicMessage'; import React from 'react'; import { API } from 'ssm-shared-lib'; diff --git a/client/src/pages/Containers/components/sub-components/ContainerBackUpVolumeInProgressModal.tsx b/client/src/pages/Containers/components/sub-components/ContainerBackUpVolumeInProgressModal.tsx index 75bb6f985..28030bbf5 100644 --- a/client/src/pages/Containers/components/sub-components/ContainerBackUpVolumeInProgressModal.tsx +++ b/client/src/pages/Containers/components/sub-components/ContainerBackUpVolumeInProgressModal.tsx @@ -1,7 +1,11 @@ import { BackupSolid } from '@/components/Icons/CustomIcons'; -import { getBackUpVolume, postBackUpVolume } from '@/services/rest/services'; -import { socket } from '@/socket'; -import { Button, Flex, message, Modal, Result, Spin } from 'antd'; +import { + getBackUpVolume, + postBackUpVolume, +} from '@/services/rest/containers/container-volumes'; +import { containerVolumesSocket as socket } from '@/socket'; +import message from '@/components/Message/DynamicMessage'; +import { Button, Flex, Modal, Result, Spin } from 'antd'; import React, { Dispatch, SetStateAction, useEffect } from 'react'; import { SsmContainer, SsmEvents } from 'ssm-shared-lib'; @@ -31,6 +35,17 @@ const ContainerBackUpVolumeInProgressModal: React.FC< const [backupInfo, setBackupInfo] = React.useState< { fileName: string; mode: SsmContainer.VolumeBackupMode } | undefined >(); + + useEffect(() => { + socket.connect(); + socket.on(SsmEvents.VolumeBackup.PROGRESS, onVolumeBackupProgress); + + return () => { + socket.off(SsmEvents.VolumeBackup.PROGRESS, onVolumeBackupProgress); + socket.disconnect(); + }; + }, []); + useEffect(() => { if (inProgress?.visible === true) { setBackupInfo(undefined); @@ -76,16 +91,6 @@ const ContainerBackUpVolumeInProgressModal: React.FC< } }; - useEffect(() => { - socket.connect(); - socket.on(SsmEvents.VolumeBackup.PROGRESS, onVolumeBackupProgress); - - return () => { - socket.off(SsmEvents.VolumeBackup.PROGRESS, onVolumeBackupProgress); - socket.disconnect(); - }; - }, []); - return ( { setLoading(true); try { if (devices.length > 0) { + setGraphData(undefined); + setGraphMemData(undefined); + setGraphStorageData(undefined); + setTopTenData(undefined); const [deviceStats, averagedDeviceStats] = await Promise.all([ getDashboardDevicesStats(devices as string[], type, { from: rangePickerValue[0].toDate(), @@ -125,13 +129,13 @@ const MainChartCard: React.FC = () => { animate: { enter: { type: 'waveIn' } }, theme: { view: { - viewFill: '#151921', + viewFill: 'rgba(255,255,255,0.00)', }, }, loadingTemplate: ( diff --git a/client/src/pages/Dashboard/Components/SystemPerformanceCard.tsx b/client/src/pages/Dashboard/Components/SystemPerformanceCard.tsx index e95b3b3fa..21639a4ad 100644 --- a/client/src/pages/Dashboard/Components/SystemPerformanceCard.tsx +++ b/client/src/pages/Dashboard/Components/SystemPerformanceCard.tsx @@ -2,7 +2,7 @@ import styles from '@/pages/Dashboard/Analysis.less'; import ChartCard from '@/pages/Dashboard/ChartComponents/ChartCard'; import Field from '@/pages/Dashboard/ChartComponents/Field'; import Trend from '@/pages/Dashboard/ChartComponents/Trend'; -import { getDashboardSystemPerformance } from '@/services/rest/devicestat'; +import { getDashboardSystemPerformance } from '@/services/rest/statistics/stastistics'; import { InfoCircleFilled } from '@ant-design/icons'; import { Tooltip, Typography } from 'antd'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; diff --git a/client/src/pages/Dashboard/index.tsx b/client/src/pages/Dashboard/index.tsx index 1f389ad22..58addb0dc 100644 --- a/client/src/pages/Dashboard/index.tsx +++ b/client/src/pages/Dashboard/index.tsx @@ -2,12 +2,21 @@ import MainChartCard from '@/pages/Dashboard/Components/MainChartCard'; import DashboardTop from '@/pages/Dashboard/Components/DashboardTop'; import { PageContainer } from '@ant-design/pro-components'; import React from 'react'; +import { useSlot } from '@/plugins/contexts/plugin-context'; const Index: React.FC = () => { + // Get the dashboard widgets slot renderer + const DashboardWidgetsSlot = useSlot('dashboard-widgets'); + return ( + + {/* Render plugin dashboard widgets */} +
+ +
); }; diff --git a/client/src/pages/Devices/DeviceSSHTerminal.tsx b/client/src/pages/Devices/DeviceSSHTerminal.tsx index 5c60bc67f..2b711f17a 100644 --- a/client/src/pages/Devices/DeviceSSHTerminal.tsx +++ b/client/src/pages/Devices/DeviceSSHTerminal.tsx @@ -3,10 +3,10 @@ import Title, { TitleColors } from '@/components/Template/Title'; import TerminalCore, { TerminalCoreHandles, } from '@/components/Terminal/TerminalCore'; -import { socket } from '@/socket'; +import { sshSocket as socket } from '@/socket'; import { useParams } from '@@/exports'; import { PageContainer } from '@ant-design/pro-components'; -import { message } from 'antd'; +import message from '@/components/Message/DynamicMessage'; import React, { RefObject, useEffect } from 'react'; import { SsmEvents } from 'ssm-shared-lib'; @@ -22,16 +22,30 @@ const DeviceSSHTerminal = () => { React.createRef(); const handleDataOut = (value: string) => { + console.log('Sending data to SSH:' + value); socket.emit(SsmEvents.SSH.NEW_DATA, value); }; const handleResize = (newRows: number, newCols: number) => { + console.log('Resizing SSH terminal to:', { cols: newCols, rows: newRows }); socket.emit(SsmEvents.SSH.SCREEN_RESIZE, { cols: newCols, rows: newRows }); }; + // Flag to track if we've already initiated a connection + const connectionInitiated = React.useRef(false); + const setupSocket = ( onDataIn: (value: string, newLine?: boolean) => void, ) => { + // Prevent multiple setup attempts + if (connectionInitiated.current) { + console.log('SSH connection already initiated, ignoring duplicate setup'); + return; + } + + connectionInitiated.current = true; + console.log('Setting up new SSH connection...'); + terminalRef?.current?.resetTerminalContent(); socket.connect(); terminalRef?.current?.onDataIn('---', true); @@ -49,28 +63,45 @@ const DeviceSSHTerminal = () => { ); terminalRef?.current?.onDataIn('---', true); onDataIn('🛜 Connecting...', true); + + // Remove any existing listeners to prevent duplicates + socket.off(SsmEvents.SSH.NEW_DATA); + socket.off(SsmEvents.SSH.STATUS); + + // Set up event listeners first + socket.on(SsmEvents.SSH.NEW_DATA, (value: string, newLine?: boolean) => { + onDataIn(value, newLine); + console.log('Received data from SSH:', value); + }); + socket.on(SsmEvents.SSH.STATUS, (value) => { + void message.info({ + content: `${value.status} - ${value.message}`, + duration: 6, + }); + if (value.status !== 'OK') { + onDataIn(`${value.status} - ${value.message}`); + } + }); + + console.log('Connecting to SSH with device ID:', id); socket .emitWithAck(SsmEvents.SSH.START_SESSION, { deviceUuid: id, rows, cols }) .then((response) => { - if (response.status !== 'OK') { + if (!response.success) { void message.error({ - content: `Socket failed to connect (${response.status} - ${response.error})`, + content: `Socket failed to connect: ${response.message}`, duration: 6, }); + connectionInitiated.current = false; } else { - socket.on(SsmEvents.SSH.NEW_DATA, onDataIn); - socket.on(SsmEvents.SSH.STATUS, (value) => { - void message.info({ - content: `${value.status} - ${value.message}`, - duration: 6, - }); - if (value.status !== 'OK') { - onDataIn(`${value.status} - ${value.message}`); - } - }); + console.log( + 'SSH connection successful with session ID:', + response.sessionId, + ); } }) .catch((error) => { + connectionInitiated.current = false; void message.error({ content: `Socket failed to connect ${error.message}`, duration: 6, @@ -81,9 +112,12 @@ const DeviceSSHTerminal = () => { const cleanupSocket = ( onDataIn: (value: string, newLine?: boolean) => void, ) => { + console.log('Cleaning up SSH connection...'); socket.emit(SsmEvents.SSH.CLOSED); socket.off(SsmEvents.SSH.NEW_DATA, onDataIn); + socket.off(SsmEvents.SSH.STATUS); socket.disconnect(); + connectionInitiated.current = false; }; useEffect(() => { @@ -95,24 +129,27 @@ const DeviceSSHTerminal = () => { cleanupSocket(onDataIn); }; } - }, [id, terminalRef.current]); + }, [id]); return ( } - /> - } + header={{ + title: ( + } + title="SSH Terminal" + backgroundColor={TitleColors.SETTINGS_DEVICES} + /> + ), + }} + style={{ height: '100%' }} > ); diff --git a/client/src/pages/Devices/Devices.less b/client/src/pages/Devices/Devices.less index adf7a096a..168092fb7 100644 --- a/client/src/pages/Devices/Devices.less +++ b/client/src/pages/Devices/Devices.less @@ -36,7 +36,7 @@ .listItemCarousel { } - + .carouselCustom { color: red; ~ .slick-dots li button { @@ -69,6 +69,13 @@ margin-top: 24px; text-align: right; } + .ant-list-item { + padding: 16px 24px !important; + border-bottom: 1px solid rgba(255, 255, 255, 0.15); + } + .ant-list-item:last-child { + border-bottom: none; + } .ant-avatar-lg { width: 48px; height: 48px; @@ -254,3 +261,8 @@ margin-bottom: 8px; } } + +.elevated-avatar { + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.35); // Slightly stronger shadow for visibility + border-radius: 50%; // Ensure shadow follows avatar shape if applied to wrapper +} diff --git a/client/src/pages/Devices/components/ListComponent.tsx b/client/src/pages/Devices/components/ListComponent.tsx index 687883ae3..ab9c5df9a 100644 --- a/client/src/pages/Devices/components/ListComponent.tsx +++ b/client/src/pages/Devices/components/ListComponent.tsx @@ -1,4 +1,3 @@ -import { DeviceStatType } from '@/components/Charts/DeviceStatType'; import TinyLineDeviceGraph from '@/components/Charts/TinyLineDeviceGraph'; import TinyRingProgressDeviceGraph from '@/components/Charts/TinyRingProgressDeviceGraph'; import TinyRingProgressDeviceIndicator from '@/components/Charts/TinyRingProgressDeviceIndicator'; @@ -8,7 +7,7 @@ import styles from '@/pages/Devices/Devices.less'; import DeviceStatus from '@/utils/devicestatus'; import { Carousel, Col, Row, Typography } from 'antd'; import React, { useMemo } from 'react'; -import { API } from 'ssm-shared-lib'; +import { API, StatsType } from 'ssm-shared-lib'; const { Text } = Typography; @@ -49,21 +48,42 @@ const ListContent: React.FC> = React.memo((device) => { }} > - + - + - + @@ -75,7 +95,7 @@ const ListContent: React.FC> = React.memo((device) => { @@ -98,7 +118,7 @@ const ListContent: React.FC> = React.memo((device) => { diff --git a/client/src/pages/Devices/index.tsx b/client/src/pages/Devices/index.tsx index e92072dc1..58e1e1db8 100644 --- a/client/src/pages/Devices/index.tsx +++ b/client/src/pages/Devices/index.tsx @@ -2,7 +2,7 @@ import { OsLogo as OriginalOsLogo } from '@/components/DeviceComponents/OsLogo/O import { CarbonBatchJob } from '@/components/Icons/CustomIcons'; import { TerminalStateProps } from '@/components/PlaybookExecutionModal'; import Title, { TitleColors } from '@/components/Template/Title'; -import { getDevices } from '@/services/rest/device'; +import { getDevices } from '@/services/rest/devices/devices'; import { AppstoreOutlined, ControlOutlined, @@ -134,6 +134,7 @@ const DeviceListPage = memo(() => { : item.systemInformation?.os?.logofile, )} size="large" + className={styles['elevated-avatar']} /> ) : ( @@ -144,6 +145,7 @@ const DeviceListPage = memo(() => { : item.systemInformation?.os?.logofile, )} size="large" + className={styles['elevated-avatar']} /> ) } @@ -184,14 +186,6 @@ const DeviceListPage = memo(() => { bordered={false} style={{ marginTop: 0 }} bodyStyle={cardBodyStyle} - extra={ - - - - } > { setIsLoading(false); }); } else { - message.error( - 'Selected file has no uuid - try to synchronize again the repo', - ); + message.error({ + content: + 'Selected file has no uuid - try to synchronize again the repo', + duration: 6, + }); } } setIsLoading(false); @@ -124,7 +127,7 @@ const Index: React.FC = () => { setIsLoading(true); await deleteAnyInRepository(playbooksRepositoryUuid, path) .then(async () => { - message.warning(`File deleted`); + message.warning({ content: 'File deleted', duration: 6 }); if (selectedFile?.path === path) { setSelectedFile(undefined); } @@ -202,7 +205,10 @@ const Index: React.FC = () => { setIsLoading(true); await deletePlaybook(selectedFile.uuid) .then(async () => { - message.warning(`Playbook '${selectedFile.name}' deleted`); + message.warning({ + content: `Playbook '${selectedFile.name}' deleted`, + duration: 6, + }); setSelectedFile(undefined); await asyncFetch(); setIsLoading(false); @@ -211,7 +217,7 @@ const Index: React.FC = () => { setIsLoading(false); }); } else { - message.error(`Internal Error`); + message.error({ content: 'Internal Error', duration: 6 }); } }; @@ -222,14 +228,17 @@ const Index: React.FC = () => { // @ts-ignore await patchPlaybook(selectedFile.uuid, editorRef.current.getValue()) .then(() => { - message.success(`Playbook '${selectedFile.name}' saved`); + message.success({ + content: `Playbook '${selectedFile.name}' saved`, + duration: 6, + }); setIsLoading(false); }) .catch(() => { setIsLoading(false); }); } else { - message.error(`Internal - onClickSavePlaybook`); + message.error({ content: 'Internal - onClickSavePlaybook', duration: 6 }); } }; @@ -238,7 +247,7 @@ const Index: React.FC = () => { // @ts-ignore editorRef?.current.setValue(downloadedContent); } else { - message.error(`Internal - Error editorRef`); + message.error({ content: 'Internal - Error editorRef', duration: 6 }); } }; @@ -256,7 +265,10 @@ const Index: React.FC = () => { fullPath, ) .then(async (e) => { - message.success(`Playbook '${fileName}' successfully created`); + message.success({ + content: `Playbook '${fileName}' successfully created`, + duration: 6, + }); await asyncFetch(e.data); setIsLoading(false); return true; @@ -274,7 +286,10 @@ const Index: React.FC = () => { fullPath, ) .then(async () => { - message.success(`Directory '${fileName}' successfully created`); + message.success({ + content: `Directory '${fileName}' successfully created`, + duration: 6, + }); await asyncFetch(); setIsLoading(false); return true; diff --git a/client/src/pages/Plugins/index.tsx b/client/src/pages/Plugins/index.tsx new file mode 100644 index 000000000..e9bd7ded6 --- /dev/null +++ b/client/src/pages/Plugins/index.tsx @@ -0,0 +1,143 @@ +import Title from '@/components/Template/Title'; +import { usePlugins } from '@/plugins/contexts/plugin-context'; +import { + AppstoreOutlined, + CheckCircleOutlined, + CloseCircleOutlined, + PlayCircleOutlined, +} from '@ant-design/icons'; +import { PageContainer } from '@ant-design/pro-components'; +import { Button, Card, List, Modal, Space, Tag, Typography } from 'antd'; +import React, { useState } from 'react'; + +const { Text, Paragraph } = Typography; + +const PluginsPage: React.FC = () => { + const { pluginMetadata, pluginRegistry, loading, error, refreshPlugins } = + usePlugins(); + const [pluginModalVisible, setPluginModalVisible] = useState(false); + const [currentPlugin, setCurrentPlugin] = useState(null); + + const handleRefresh = () => { + refreshPlugins(); + }; + + const openPluginModal = (pluginName: string) => { + setCurrentPlugin(pluginName); + setPluginModalVisible(true); + }; + + const closePluginModal = () => { + setPluginModalVisible(false); + setCurrentPlugin(null); + }; + + return ( + } + /> + ), + }} + > + + Refresh Plugins + + } + loading={loading} + > + {error && ( + + Error loading plugins: {error.message} + + )} + + ( + + Status: + {plugin.enabled ? ( + }> + Enabled + + ) : ( + }> + Disabled + + )} + , + Version: {plugin.version}, + plugin.author && ( + Author: {plugin.author} + ), + plugin.enabled || + (true && ( + + )), + ]} + > + + + {plugin.permissions && ( +
+ Permissions: +
+ {plugin.permissions.map((permission: string) => ( + + {permission} + + ))} +
+
+ )} +
+ )} + locale={{ emptyText: 'No plugins installed' }} + /> +
+ + + {currentPlugin && ( +