commit fbb8138a911e6c0007fbf1c1064cc4882c90c513 Author: Andres Alvarez Date: Fri Jan 26 15:35:02 2024 -0500 Primer commit diff --git a/.env b/.env new file mode 100644 index 0000000..e4d1130 --- /dev/null +++ b/.env @@ -0,0 +1,10 @@ +VITE_MAP_KEY=your_google_map_api_key + +# Firebase Auth Development Configurations +VITE_API_KEY=YOUR_API_KEY +VITE_AUTH_DOMAIN=your-dev-app.firebaseapp.com +VITE_DATABASE_URL=https://your-dev-app.firebaseio.com +VITE_PROJECT_ID=your-dev-app +VITE_STORAGE_BUCKET=your-dev-app.appspot.com +VITE_MESSAGING_SENDER_ID=YOUR_MESSAGING_SENDER_ID +VITE_APP_ID=YOUR_APP_ID diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..5fe1614 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,24 @@ +# dependencies +node_modules/ +.yarn/ + +# production +build/ +public/ + +# ide +.vscode/ + +# external docs +src/app/main/documentation/material-ui-components/components/* +src/app/main/documentation/material-ui-components/pages/* +src/app/main/documentation/third-party-components/*/examples/* + +src/@fake-db/db/* +**/*.{js,jsx} + +.eslintrc.js +tailwind.config. + +aliases.js +config-overrides.js diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..bc7f78d --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,123 @@ +module.exports = { + "root": true, + "parser": '@typescript-eslint/parser', + "parserOptions": { + "tsconfigRootDir": __dirname, + "project": ['./tsconfig.json'], + "sourceType": "module", + }, + "plugins": [ + "@typescript-eslint", + "prettier", + "unused-imports", + ], + "extends": [ + "airbnb", + "plugin:@typescript-eslint/recommended-requiring-type-checking", + "plugin:prettier/recommended" + ], + "settings": { + "import/resolver": { + "node": { + "extensions": [ + ".js", + ".jsx", + ".ts", + ".tsx" + ] + } + } + }, + "ignorePatterns": [ + "src/app/main/documentation/material-ui-components/components/**", + "src/app/main/documentation/material-ui-components/pages/**", + "tailwind.config.js" + ], + "rules": { + "prettier/prettier": [ + "warn", + { + "endOfLine": "auto", + "arrowParens": "always", + "bracketSpacing": true, + "jsxBracketSameLine": false, + "printWidth": 120, + "proseWrap": "preserve", + "requirePragma": false, + "semi": true, + "singleQuote": true, + "tabWidth": 4, + "trailingComma": "none", + "useTabs": true, + "singleAttributePerLine": true + } + ], + "quotes": [ + 1, + "single", + { + "allowTemplateLiterals": true, + "avoidEscape": true + } + ], + // Disabling because this rule is extremely slow. + "import/no-cycle": "off", + // Disabling because this rule is slow and not a common violation. + "import/no-named-as-default": "off", + // Disabling because this rule is slow and not a common violation. + "import/no-named-as-default-member": "off", + // This rule is already covered by the TypeScript compiler. + "import/default": "off", + // This rule is already covered by the TypeScript compiler. + "import/no-unresolved": "off", + "operator-linebreak": "off", + "no-param-reassign": "off", + "implicit-arrow-linebreak": "off", + "max-len": "off", + "indent": "off", + "no-shadow": "off", + "arrow-parens": "off", + "no-confusing-arrow": "off", + "no-use-before-define": "off", + "object-curly-newline": "off", + "function-paren-newline": "off", + "import/prefer-default-export": "off", + "max-classes-per-file": "off", + "react/jsx-filename-extension": "off", + "import/extensions": "off", + "@typescript-eslint/no-unused-vars": "off", + "no-unused-vars": "off", // or "@typescript-eslint/no-unused-vars": "off", + "unused-imports/no-unused-imports": "error", + "unused-imports/no-unused-vars": [ + "warn", + { "vars": "all", "varsIgnorePattern": "^_", "args": "after-used", "argsIgnorePattern": "^_" } + ], + "@typescript-eslint/ban-ts-ignore": "off", + "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/no-var-requires": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-useless-constructor": "error", + "@typescript-eslint/explicit-module-boundary-types": "off", + "@typescript-eslint/no-floating-promises": "off", + "@typescript-eslint/no-misused-promises": "off", + "@typescript-eslint/require-await": "off", + "no-useless-constructor": "off", + "no-tabs": "off", + "react/jsx-indent": "off", + "react/jsx-indent-props": "off", + "react/react-in-jsx-scope": "off", + "react/jsx-uses-react": "off", + "react/jsx-wrap-multilines": "off", + "react/prop-types": "warn", + "react/require-default-props": "off", + "react/no-unescaped-entities": "off", + "no-underscore-dangle": "off", + "react/jsx-no-bind": "off", + "react/jsx-props-no-spreading": "off", + "react/no-array-index-key": "off", + "no-restricted-exports": ["off", { "restrictedNamedExports": ["default"] }], + "import/no-import-module-exports": "off", + "import/no-extraneous-dependencies": "off" + }, +} diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..94f480d --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..224ad62 --- /dev/null +++ b/.gitignore @@ -0,0 +1,37 @@ +# See https://help.github.com/ignore-files/ for more about ignoring files. + +# dependencies +/node_modules +/.yarn + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local +.eslintcache + +/.idea +/.vscode + +/src/styles/tailwind.css + +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +.yarn/* +!.yarn/patches +!.yarn/releases +!.yarn/plugins +!.yarn/sdks +!.yarn/versions +.pnp.* + diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..532e4a0 --- /dev/null +++ b/.npmrc @@ -0,0 +1,2 @@ +legacy-peer-deps=true +engine-strict=false diff --git a/CREDITS b/CREDITS new file mode 100644 index 0000000..682051e --- /dev/null +++ b/CREDITS @@ -0,0 +1,16 @@ +// ----------------------------------------------------------------------------------------------------- +// @ Image/Vector/Icon Credits +// ----------------------------------------------------------------------------------------------------- +Avatars - https://uifaces.co/ +Flag icons - http://www.famfamfam.com/lab/icons/flags/ +Frame vector created by Freepik - https://www.freepik.com/free-photos-vectors/frame +A Walk Amongst Friends - Photo by Kristin Ellis on Unsplash - https://unsplash.com/photos/CbZOGbazDWQ +Sunrise at Moraine Lake - Photo by Marlon Martinez on Unsplash - https://unsplash.com/photos/woNYcfrnp9M +Braies Lake - Photo by Luca Nicoletti on Unsplash - https://unsplash.com/photos/dH-L5zPcv3E +Lago di Sorapis - Photo by eberhard grossgasteiger on Unsplash - https://unsplash.com/photos/6uDg_zb20EM +Lago di Braies - Photo by Salmen Bejaoui on Unsplash - https://unsplash.com/photos/uXTozY3CcQg +Reaching - Photo by Justin Novello on Unsplash - https://unsplash.com/photos/Y14TNvIDllM +Yosemite - Photo by Tim Mossholder on Unsplash - https://unsplash.com/photos/ZCrtRSSUpGI +Never Stop Changing - Photo by John Westrock on Unsplash - https://unsplash.com/photos/_GY56uSG70U +Fall glow - Photo by Casey Horner on Unsplash - https://unsplash.com/photos/gz19zOdgN7w +First snow - Photo by eberhard grossgasteiger on Unsplash - https://unsplash.com/photos/LRrGf6dBjA4 \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..94e394b --- /dev/null +++ b/LICENSE @@ -0,0 +1 @@ +https://themeforest.net/licenses/terms/regular \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..d212e3d --- /dev/null +++ b/README.md @@ -0,0 +1,44 @@ +eThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). + +## Available Scripts + +In the project directory, you can run: + +### `npm start` + +Runs the app in the development mode.
+Open [http://localhost:3000](http://localhost:3000) to view it in the browser. + +The page will reload if you make edits.
+You will also see any lint errors in the console. + +### `npm run test` + +Launches the test runner in the interactive watch mode.
+See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. + +### `npm run run build` + +Builds the app for production to the `build` folder.
+It correctly bundles React in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.
+Your app is ready to be deployed! + +See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. + +### `npm run eject` + +**Note: this is a one-way operation. Once you `eject`, you can’t go back!** + +If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. + +Instead, it will copy all the configuration files and the transitive dependencies (Webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. + +You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. + +## Learn More + +You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). + +To learn React, check out the [React documentation](https://reactjs.org/). diff --git a/aliases.js b/aliases.js new file mode 100644 index 0000000..0cdf514 --- /dev/null +++ b/aliases.js @@ -0,0 +1,17 @@ +/** + * Create aliases for the paths + */ +const aliases = (prefix = `src`) => ({ + '@fuse': `${prefix}/@fuse`, + '@history': `${prefix}/@history`, + '@lodash': `${prefix}/@lodash`, + '@mock-api': `${prefix}/@mock-api`, + '@schema': `${prefix}/@schema`, + 'app/store': `${prefix}/app/store`, + 'app/shared-components': `${prefix}/app/shared-components`, + 'app/configs': `${prefix}/app/configs`, + 'app/theme-layouts': `${prefix}/app/theme-layouts`, + 'app/AppContext': `${prefix}/app/AppContext`, +}); + +module.exports = aliases; diff --git a/config-overrides.js b/config-overrides.js new file mode 100644 index 0000000..eafdb50 --- /dev/null +++ b/config-overrides.js @@ -0,0 +1,35 @@ +const path = require(`path`); +const alias = require(`./aliases`); +const { aliasWebpack } = require('react-app-alias'); + +const SRC = `./src`; + +/** + * @description Create aliases for the paths + */ +const aliases = alias(SRC); + +/** + * @description Resolve the aliases to absolute paths + */ +const resolvedAliases = Object.fromEntries( + Object.entries(aliases).map(([key, value]) => [key, path.resolve(__dirname, value)]) +); + +/** + * @description Options for the aliasWebpack plugin + */ +const options = { + alias: resolvedAliases +}; + +/** + * @description Override the webpack config + * @param {*} config + * @returns + */ +module.exports = function override(config) { + config.ignoreWarnings = [{ message: /Failed to parse source map/ }]; + + return aliasWebpack(options)(config); +}; diff --git a/index.html b/index.html new file mode 100644 index 0000000..4c55328 --- /dev/null +++ b/index.html @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Qsoftec facturación + + + + + + + + + +
+ +
+ +
+
+
+
+
+
+ +
+ + + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..7f27d14 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,17399 @@ +{ + "name": "fuse-react-app", + "version": "10.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "fuse-react-app", + "version": "10.0.1", + "hasInstallScript": true, + "dependencies": { + "@emotion/cache": "11.11.0", + "@emotion/react": "11.11.3", + "@emotion/styled": "11.11.0", + "@hookform/resolvers": "3.3.4", + "@mui/base": "5.0.0-beta.32", + "@mui/material": "5.15.5", + "@mui/styles": "5.15.5", + "@mui/system": "5.15.5", + "@mui/x-date-pickers": "6.19.0", + "@popperjs/core": "2.11.8", + "@reduxjs/toolkit": "2.0.1", + "autosuggest-highlight": "3.3.4", + "axios": "1.6.5", + "axios-mock-adapter": "1.21.5", + "clsx": "2.1.0", + "crypto-js": "4.2.0", + "date-fns": "2.30.0", + "draft-js": "0.11.7", + "draftjs-to-html": "0.9.1", + "firebase": "10.7.1", + "framer-motion": "10.18.0", + "history": "5.3.0", + "i18next": "23.7.16", + "jwt-decode": "3.1.2", + "keycode": "2.2.1", + "lodash": "4.17.21", + "mobile-detect": "1.4.5", + "moment": "2.29.4", + "notistack": "1.0.6-next.3", + "perfect-scrollbar": "1.5.5", + "prismjs": "1.29.0", + "qs": "6.11.2", + "react": "18.2.0", + "react-app-alias": "2.2.2", + "react-autosuggest": "10.1.0", + "react-dom": "18.2.0", + "react-draft-wysiwyg": "1.15.0", + "react-hook-form": "7.49.3", + "react-i18next": "14.0.0", + "react-popper": "2.3.0", + "react-redux": "9.1.0", + "react-router": "6.21.3", + "react-router-dom": "6.21.3", + "react-swipeable": "7.0.1", + "redux-logger": "4.0.0", + "reselect": "5.1.0", + "styled-components": "6.1.8", + "stylis": "4.3.1", + "stylis-plugin-rtl": "2.1.1", + "type-fest": "4.9.0", + "web-vitals": "3.5.1", + "zod": "3.22.4" + }, + "devDependencies": { + "@babel/core": "7.23.7", + "@babel/eslint-parser": "7.23.3", + "@babel/node": "7.22.19", + "@babel/parser": "7.23.6", + "@babel/plugin-proposal-private-property-in-object": "7.21.11", + "@babel/preset-env": "7.23.8", + "@babel/preset-react": "7.23.3", + "@babel/traverse": "7.23.7", + "@rtk-query/codegen-openapi": "1.2.0", + "@tailwindcss/aspect-ratio": "0.4.2", + "@tailwindcss/typography": "0.5.10", + "@types/autosuggest-highlight": "3.2.3", + "@types/babel__parser": "7.1.1", + "@types/babel__traverse": "7.20.5", + "@types/babel-traverse": "6.25.10", + "@types/crypto-js": "4.2.1", + "@types/draft-js": "0.11.17", + "@types/draftjs-to-html": "0.8.4", + "@types/glob": "8.1.0", + "@types/google-map-react": "2.1.10", + "@types/jest": "29.5.11", + "@types/js-beautify": "1.14.3", + "@types/lodash": "4.14.202", + "@types/material-ui": "0.21.16", + "@types/node": "20.11.0", + "@types/prismjs": "1.26.3", + "@types/qs": "6.9.11", + "@types/react": "18.2.47", + "@types/react-autosuggest": "10.1.11", + "@types/react-beautiful-dnd": "13.1.8", + "@types/react-dom": "18.2.18", + "@types/react-draft-wysiwyg": "1.13.8", + "@types/react-redux": "7.1.33", + "@types/react-router": "5.1.20", + "@types/react-router-dom": "5.3.3", + "@types/react-swipeable-views": "0.13.5", + "@types/redux-logger": "3.0.12", + "@types/styled-components": "5.1.34", + "@types/webpack-env": "1.18.4", + "@typescript-eslint/eslint-plugin": "6.18.1", + "@typescript-eslint/parser": "6.18.1", + "@vitejs/plugin-react": "4.2.1", + "ajv": "8.12.0", + "autoprefixer": "10.4.16", + "cross-env": "7.0.3", + "eslint": "8.56.0", + "eslint-config-airbnb": "19.0.4", + "eslint-config-prettier": "9.1.0", + "eslint-config-react-app": "7.0.1", + "eslint-plugin-flowtype": "8.0.3", + "eslint-plugin-import": "2.29.1", + "eslint-plugin-jsx-a11y": "6.8.0", + "eslint-plugin-prettier": "5.1.3", + "eslint-plugin-react": "7.33.2", + "eslint-plugin-react-hooks": "4.6.0", + "eslint-plugin-unused-imports": "3.0.0", + "espree": "9.6.1", + "glob": "10.3.10", + "immutable": "4.3.4", + "postcss": "8.4.33", + "postcss-loader": "7.3.4", + "prettier": "3.2.2", + "promise": "8.3.0", + "react-refresh": "0.14.0", + "s": "1.0.0", + "source-map-explorer": "2.5.3", + "tailwindcss": "3.3.2", + "ts-migrate": "0.1.35", + "ts-node": "10.9.2", + "typescript": "5.3.3", + "typescript-plugin-css-modules": "5.0.2", + "util": "0.12.5", + "vite": "^5.0.12", + "vite-plugin-svgr": "4.2.0", + "vite-tsconfig-paths": "4.3.1" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "peerDependencies": { + "autoprefixer": "10.4.16", + "postcss": "8.4.20", + "react": "18.2.0", + "react-dom": "18.2.0" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.2.tgz", + "integrity": "sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==", + "dev": true + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@apidevtools/json-schema-ref-parser": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.6.tgz", + "integrity": "sha512-M3YgsLjI0lZxvrpeGVk9Ap032W6TPQkH6pRAZz81Ac3WUNF79VQooAFnp8umjvVzUmD93NkogxEwbSce7qMsUg==", + "dev": true, + "dependencies": { + "@jsdevtools/ono": "^7.1.3", + "call-me-maybe": "^1.0.1", + "js-yaml": "^3.13.1" + } + }, + "node_modules/@apidevtools/openapi-schemas": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz", + "integrity": "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@apidevtools/swagger-methods": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz", + "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==", + "dev": true + }, + "node_modules/@apidevtools/swagger-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.1.0.tgz", + "integrity": "sha512-9Kt7EuS/7WbMAUv2gSziqjvxwDbFSg3Xeyfuj5laUODX8o/k/CpsAKiQ8W7/R88eXFTMbJYg6+7uAmOWNKmwnw==", + "dev": true, + "dependencies": { + "@apidevtools/json-schema-ref-parser": "9.0.6", + "@apidevtools/openapi-schemas": "^2.1.0", + "@apidevtools/swagger-methods": "^3.0.2", + "@jsdevtools/ono": "^7.1.3", + "ajv": "^8.6.3", + "ajv-draft-04": "^1.0.0", + "call-me-maybe": "^1.0.1" + }, + "peerDependencies": { + "openapi-types": ">=7" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz", + "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.7", + "@babel/parser": "^7.23.6", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.7", + "@babel/types": "^7.23.6", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.23.3.tgz", + "integrity": "sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw==", + "dev": true, + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.7.tgz", + "integrity": "sha512-xCoqR/8+BoNnXOY7RVSgv6X+o7pmT5q1d+gGcRlXYkI+9B31glE4jeejhKVpA04O1AtzOt7OSQ6VYKP5FcRl9g==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz", + "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.8.tgz", + "integrity": "sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.7", + "@babel/types": "^7.23.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/node": { + "version": "7.22.19", + "resolved": "https://registry.npmjs.org/@babel/node/-/node-7.22.19.tgz", + "integrity": "sha512-VsKSO9aEHdO16NdtqkJfrXZ9Sxlna1BVnBbToWr1KGdI3cyIk6KqOoa8mWvpK280lJDOwJqxvnl994KmLhq1Yw==", + "dev": true, + "dependencies": { + "@babel/register": "^7.22.15", + "commander": "^4.0.1", + "core-js": "^3.30.2", + "node-environment-flags": "^1.0.5", + "regenerator-runtime": "^0.14.0", + "v8flags": "^3.1.1" + }, + "bin": { + "babel-node": "bin/babel-node.js" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", + "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", + "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", + "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.7.tgz", + "integrity": "sha512-b1s5JyeMvqj7d9m9KhJNHKc18gEJiSyVzVX3bwbiPalQBQpuvfPh6lA9F7Kk/dWH0TIiXRpB9yicwijY6buPng==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.23.7", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-decorators": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", + "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.23.3.tgz", + "integrity": "sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz", + "integrity": "sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", + "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", + "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", + "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", + "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", + "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.7.tgz", + "integrity": "sha512-PdxEpL71bJp1byMG0va5gwQcXHxuEYC/BgI/e88mGTtohbZN28O5Yit0Plkkm/dBzCF/BxmbNcses1RH1T+urA==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", + "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", + "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", + "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", + "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", + "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", + "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", + "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", + "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz", + "integrity": "sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-flow": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", + "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", + "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", + "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", + "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", + "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", + "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", + "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", + "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", + "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", + "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", + "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", + "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", + "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz", + "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", + "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/types": "^7.23.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "dev": true, + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", + "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", + "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz", + "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", + "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", + "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.7.tgz", + "integrity": "sha512-fa0hnfmiXc9fq/weK34MUV0drz2pOL/vfKWvN7Qw127hiUPabFCUMgAbYWcchRzMJit4o5ARsK/s+5h0249pLw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.7", + "babel-plugin-polyfill-corejs3": "^0.8.7", + "babel-plugin-polyfill-regenerator": "^0.5.4", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", + "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", + "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", + "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", + "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", + "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz", + "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.23.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", + "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", + "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", + "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", + "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.8.tgz", + "integrity": "sha512-lFlpmkApLkEP6woIKprO6DO60RImpatTQKtz4sUcDjVcK8M8mQ4sZsuxaTMNOZf0sqAq/ReYW1ZBHnOQwKpLWA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.7", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.8", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.3", + "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.7", + "babel-plugin-polyfill-corejs3": "^0.8.7", + "babel-plugin-polyfill-regenerator": "^0.5.4", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-flow": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.23.3.tgz", + "integrity": "sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-flow-strip-types": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz", + "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-react-display-name": "^7.23.3", + "@babel/plugin-transform-react-jsx": "^7.22.15", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz", + "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-typescript": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.23.7.tgz", + "integrity": "sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.6", + "source-map-support": "^0.5.16" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "node_modules/@babel/runtime": { + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.8.tgz", + "integrity": "sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", + "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/serialize": "^1.1.2", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/@emotion/babel-plugin/node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + }, + "node_modules/@emotion/cache": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", + "dependencies": { + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/cache/node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + }, + "node_modules/@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", + "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", + "dependencies": { + "@emotion/memoize": "^0.8.1" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "node_modules/@emotion/react": { + "version": "11.11.3", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.3.tgz", + "integrity": "sha512-Cnn0kuq4DoONOMcnoVsTOR8E+AdnKFf//6kUWc4LCdnxj31pZWn7rIULd6Y7/Js1PiPHzn7SKCM9vB/jBni8eA==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.3.tgz", + "integrity": "sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA==", + "dependencies": { + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/unitless": "^0.8.1", + "@emotion/utils": "^1.2.1", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" + }, + "node_modules/@emotion/styled": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", + "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/is-prop-valid": "^1.2.1", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz", + "integrity": "sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz", + "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz", + "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz", + "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", + "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz", + "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz", + "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz", + "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz", + "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz", + "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz", + "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz", + "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz", + "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz", + "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz", + "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz", + "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz", + "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz", + "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz", + "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz", + "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz", + "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz", + "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz", + "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@exodus/schemasafe": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.3.0.tgz", + "integrity": "sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==", + "dev": true + }, + "node_modules/@fastify/busboy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", + "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@firebase/analytics": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.0.tgz", + "integrity": "sha512-Locv8gAqx0e+GX/0SI3dzmBY5e9kjVDtD+3zCFLJ0tH2hJwuCAiL+5WkHuxKj92rqQj/rvkBUCfA1ewlX2hehg==", + "dependencies": { + "@firebase/component": "0.6.4", + "@firebase/installations": "0.6.4", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.3", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/analytics-compat": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.6.tgz", + "integrity": "sha512-4MqpVLFkGK7NJf/5wPEEP7ePBJatwYpyjgJ+wQHQGHfzaCDgntOnl9rL2vbVGGKCnRqWtZDIWhctB86UWXaX2Q==", + "dependencies": { + "@firebase/analytics": "0.10.0", + "@firebase/analytics-types": "0.8.0", + "@firebase/component": "0.6.4", + "@firebase/util": "1.9.3", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/analytics-types": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.8.0.tgz", + "integrity": "sha512-iRP+QKI2+oz3UAh4nPEq14CsEjrjD6a5+fuypjScisAh9kXKFvdJOZJDwk7kikLvWVLGEs9+kIUS4LPQV7VZVw==" + }, + "node_modules/@firebase/app": { + "version": "0.9.25", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.9.25.tgz", + "integrity": "sha512-fX22gL5USXhOK21Hlh3oTeOzQZ6th6S2JrjXNEpBARmwzuUkqmVGVdsOCIFYIsLpK0dQE3o8xZnLrRg5wnzZ/g==", + "dependencies": { + "@firebase/component": "0.6.4", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.3", + "idb": "7.1.1", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/app-check": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.8.1.tgz", + "integrity": "sha512-zi3vbM5tb/eGRWyiqf+1DXbxFu9Q07dnm46rweodgUpH9B8svxYkHfNwYWx7F5mjHU70SQDuaojH1We5ws9OKA==", + "dependencies": { + "@firebase/component": "0.6.4", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.3", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/app-check-compat": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.8.tgz", + "integrity": "sha512-EaETtChR4UgMokJFw+r6jfcIyCTUZSe0a6ivF37D9MxlG9G3wzK1COyXgxoX96GzXmDPc2aubX4PxCrdVHhrnA==", + "dependencies": { + "@firebase/app-check": "0.8.1", + "@firebase/app-check-types": "0.5.0", + "@firebase/component": "0.6.4", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.3", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/app-check-interop-types": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.0.tgz", + "integrity": "sha512-xAxHPZPIgFXnI+vb4sbBjZcde7ZluzPPaSK7Lx3/nmuVk4TjZvnL8ONnkd4ERQKL8WePQySU+pRcWkh8rDf5Sg==" + }, + "node_modules/@firebase/app-check-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.5.0.tgz", + "integrity": "sha512-uwSUj32Mlubybw7tedRzR24RP8M8JUVR3NPiMk3/Z4bCmgEKTlQBwMXrehDAZ2wF+TsBq0SN1c6ema71U/JPyQ==" + }, + "node_modules/@firebase/app-compat": { + "version": "0.2.25", + "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.25.tgz", + "integrity": "sha512-B/JtCp1FsTuzlh1tIGQpYM2AXps21/zlzpFsk5LRsROOTRhBcR2N45AyaONPFD06C0yS0Tw19foxADzHyOSC3A==", + "dependencies": { + "@firebase/app": "0.9.25", + "@firebase/component": "0.6.4", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.3", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/app-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.0.tgz", + "integrity": "sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q==" + }, + "node_modules/@firebase/auth": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.5.1.tgz", + "integrity": "sha512-sVi7rq2YneLGJFqHa5S6nDfCHix9yuVV3RLhj/pWPlB4a36ofXal4E6PJwpeMc8uLjWEr1aovYN1jkXWNB6Avw==", + "dependencies": { + "@firebase/component": "0.6.4", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.3", + "tslib": "^2.1.0", + "undici": "5.26.5" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@react-native-async-storage/async-storage": "^1.18.1" + }, + "peerDependenciesMeta": { + "@react-native-async-storage/async-storage": { + "optional": true + } + } + }, + "node_modules/@firebase/auth-compat": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.5.1.tgz", + "integrity": "sha512-rgDZnrDoekRvtzXVji8Z61wxxkof6pTkjYEkybILrjM8tGP9tx4xa9qGpF4ax3AzF+rKr7mIa9NnoXEK4UNqmQ==", + "dependencies": { + "@firebase/auth": "1.5.1", + "@firebase/auth-types": "0.12.0", + "@firebase/component": "0.6.4", + "@firebase/util": "1.9.3", + "tslib": "^2.1.0", + "undici": "5.26.5" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/auth-interop-types": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.1.tgz", + "integrity": "sha512-VOaGzKp65MY6P5FI84TfYKBXEPi6LmOCSMMzys6o2BN2LOsqy7pCuZCup7NYnfbk5OkkQKzvIfHOzTm0UDpkyg==" + }, + "node_modules/@firebase/auth-types": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.12.0.tgz", + "integrity": "sha512-pPwaZt+SPOshK8xNoiQlK5XIrS97kFYc3Rc7xmy373QsOJ9MmqXxLaYssP5Kcds4wd2qK//amx/c+A8O2fVeZA==", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@firebase/component": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.4.tgz", + "integrity": "sha512-rLMyrXuO9jcAUCaQXCMjCMUsWrba5fzHlNK24xz5j2W6A/SRmK8mZJ/hn7V0fViLbxC0lPMtrK1eYzk6Fg03jA==", + "dependencies": { + "@firebase/util": "1.9.3", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.2.tgz", + "integrity": "sha512-8X6NBJgUQzDz0xQVaCISoOLINKat594N2eBbMR3Mu/MH/ei4WM+aAMlsNzngF22eljXu1SILP5G3evkyvsG3Ng==", + "dependencies": { + "@firebase/app-check-interop-types": "0.3.0", + "@firebase/auth-interop-types": "0.2.1", + "@firebase/component": "0.6.4", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.3", + "faye-websocket": "0.11.4", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database-compat": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-1.0.2.tgz", + "integrity": "sha512-09ryJnXDvuycsxn8aXBzLhBTuCos3HEnCOBWY6hosxfYlNCGnLvG8YMlbSAt5eNhf7/00B095AEfDsdrrLjxqA==", + "dependencies": { + "@firebase/component": "0.6.4", + "@firebase/database": "1.0.2", + "@firebase/database-types": "1.0.0", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.3", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database-types": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.0.tgz", + "integrity": "sha512-SjnXStoE0Q56HcFgNQ+9SsmJc0c8TqGARdI/T44KXy+Ets3r6x/ivhQozT66bMnCEjJRywYoxNurRTMlZF8VNg==", + "dependencies": { + "@firebase/app-types": "0.9.0", + "@firebase/util": "1.9.3" + } + }, + "node_modules/@firebase/firestore": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.4.0.tgz", + "integrity": "sha512-VeDXD9PUjvcWY1tInBOMTIu2pijR3YYy+QAe5cxCo1Q1vW+aA/mpQHhebPM1J6b4Zd1MuUh8xpBRvH9ujKR56A==", + "dependencies": { + "@firebase/component": "0.6.4", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.3", + "@firebase/webchannel-wrapper": "0.10.5", + "@grpc/grpc-js": "~1.9.0", + "@grpc/proto-loader": "^0.7.8", + "tslib": "^2.1.0", + "undici": "5.26.5" + }, + "engines": { + "node": ">=10.10.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/firestore-compat": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.23.tgz", + "integrity": "sha512-uUTBiP0GLVBETaOCfB11d33OWB8x1r2G1Xrl0sRK3Va0N5LJ/GRvKVSGfM7VScj+ypeHe8RpdwKoCqLpN1e+uA==", + "dependencies": { + "@firebase/component": "0.6.4", + "@firebase/firestore": "4.4.0", + "@firebase/firestore-types": "3.0.0", + "@firebase/util": "1.9.3", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/firestore-types": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-3.0.0.tgz", + "integrity": "sha512-Meg4cIezHo9zLamw0ymFYBD4SMjLb+ZXIbuN7T7ddXN6MGoICmOTq3/ltdCGoDCS2u+H1XJs2u/cYp75jsX9Qw==", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@firebase/functions": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.11.0.tgz", + "integrity": "sha512-n1PZxKnJ++k73Q8khTPwihlbeKo6emnGzE0hX6QVQJsMq82y/XKmNpw2t/q30VJgwaia3ZXU1fd1C5wHncL+Zg==", + "dependencies": { + "@firebase/app-check-interop-types": "0.3.0", + "@firebase/auth-interop-types": "0.2.1", + "@firebase/component": "0.6.4", + "@firebase/messaging-interop-types": "0.2.0", + "@firebase/util": "1.9.3", + "tslib": "^2.1.0", + "undici": "5.26.5" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/functions-compat": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.6.tgz", + "integrity": "sha512-RQpO3yuHtnkqLqExuAT2d0u3zh8SDbeBYK5EwSCBKI9mjrFeJRXBnd3pEG+x5SxGJLy56/5pQf73mwt0OuH5yg==", + "dependencies": { + "@firebase/component": "0.6.4", + "@firebase/functions": "0.11.0", + "@firebase/functions-types": "0.6.0", + "@firebase/util": "1.9.3", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/functions-types": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.6.0.tgz", + "integrity": "sha512-hfEw5VJtgWXIRf92ImLkgENqpL6IWpYaXVYiRkFY1jJ9+6tIhWM7IzzwbevwIIud/jaxKVdRzD7QBWfPmkwCYw==" + }, + "node_modules/@firebase/installations": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.4.tgz", + "integrity": "sha512-u5y88rtsp7NYkCHC3ElbFBrPtieUybZluXyzl7+4BsIz4sqb4vSAuwHEUgCgCeaQhvsnxDEU6icly8U9zsJigA==", + "dependencies": { + "@firebase/component": "0.6.4", + "@firebase/util": "1.9.3", + "idb": "7.0.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/installations-compat": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.4.tgz", + "integrity": "sha512-LI9dYjp0aT9Njkn9U4JRrDqQ6KXeAmFbRC0E7jI7+hxl5YmRWysq5qgQl22hcWpTk+cm3es66d/apoDU/A9n6Q==", + "dependencies": { + "@firebase/component": "0.6.4", + "@firebase/installations": "0.6.4", + "@firebase/installations-types": "0.5.0", + "@firebase/util": "1.9.3", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/installations-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.5.0.tgz", + "integrity": "sha512-9DP+RGfzoI2jH7gY4SlzqvZ+hr7gYzPODrbzVD82Y12kScZ6ZpRg/i3j6rleto8vTFC8n6Len4560FnV1w2IRg==", + "peerDependencies": { + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/installations/node_modules/idb": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.0.1.tgz", + "integrity": "sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg==" + }, + "node_modules/@firebase/logger": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.0.tgz", + "integrity": "sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/messaging": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.5.tgz", + "integrity": "sha512-i/rrEI2k9ueFhdIr8KQsptWGskrsnkC5TkohCTrJKz9P0C/PbNv14IAMkwhMJTqIur5VwuOnrUkc9Kdz7awekw==", + "dependencies": { + "@firebase/component": "0.6.4", + "@firebase/installations": "0.6.4", + "@firebase/messaging-interop-types": "0.2.0", + "@firebase/util": "1.9.3", + "idb": "7.1.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/messaging-compat": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.5.tgz", + "integrity": "sha512-qHQZxm4hEG8/HFU/ls5/bU+rpnlPDoZoqi3ATMeb6s4hovYV9+PfV5I7ZrKV5eFFv47Hx1PWLe5uPnS4e7gMwQ==", + "dependencies": { + "@firebase/component": "0.6.4", + "@firebase/messaging": "0.12.5", + "@firebase/util": "1.9.3", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/messaging-interop-types": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.0.tgz", + "integrity": "sha512-ujA8dcRuVeBixGR9CtegfpU4YmZf3Lt7QYkcj693FFannwNuZgfAYaTmbJ40dtjB81SAu6tbFPL9YLNT15KmOQ==" + }, + "node_modules/@firebase/performance": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.4.tgz", + "integrity": "sha512-HfTn/bd8mfy/61vEqaBelNiNnvAbUtME2S25A67Nb34zVuCSCRIX4SseXY6zBnOFj3oLisaEqhVcJmVPAej67g==", + "dependencies": { + "@firebase/component": "0.6.4", + "@firebase/installations": "0.6.4", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.3", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/performance-compat": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.4.tgz", + "integrity": "sha512-nnHUb8uP9G8islzcld/k6Bg5RhX62VpbAb/Anj7IXs/hp32Eb2LqFPZK4sy3pKkBUO5wcrlRWQa6wKOxqlUqsg==", + "dependencies": { + "@firebase/component": "0.6.4", + "@firebase/logger": "0.4.0", + "@firebase/performance": "0.6.4", + "@firebase/performance-types": "0.2.0", + "@firebase/util": "1.9.3", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/performance-types": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.2.0.tgz", + "integrity": "sha512-kYrbr8e/CYr1KLrLYZZt2noNnf+pRwDq2KK9Au9jHrBMnb0/C9X9yWSXmZkFt4UIdsQknBq8uBB7fsybZdOBTA==" + }, + "node_modules/@firebase/remote-config": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.4.tgz", + "integrity": "sha512-x1ioTHGX8ZwDSTOVp8PBLv2/wfwKzb4pxi0gFezS5GCJwbLlloUH4YYZHHS83IPxnua8b6l0IXUaWd0RgbWwzQ==", + "dependencies": { + "@firebase/component": "0.6.4", + "@firebase/installations": "0.6.4", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.3", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/remote-config-compat": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.4.tgz", + "integrity": "sha512-FKiki53jZirrDFkBHglB3C07j5wBpitAaj8kLME6g8Mx+aq7u9P7qfmuSRytiOItADhWUj7O1JIv7n9q87SuwA==", + "dependencies": { + "@firebase/component": "0.6.4", + "@firebase/logger": "0.4.0", + "@firebase/remote-config": "0.4.4", + "@firebase/remote-config-types": "0.3.0", + "@firebase/util": "1.9.3", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/remote-config-types": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.3.0.tgz", + "integrity": "sha512-RtEH4vdcbXZuZWRZbIRmQVBNsE7VDQpet2qFvq6vwKLBIQRQR5Kh58M4ok3A3US8Sr3rubYnaGqZSurCwI8uMA==" + }, + "node_modules/@firebase/storage": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.12.0.tgz", + "integrity": "sha512-SGs02Y/mmWBRsqZiYLpv4Sf7uZYZzMWVNN+aKiDqPsFBCzD6hLvGkXz+u98KAl8FqcjgB8BtSu01wm4pm76KHA==", + "dependencies": { + "@firebase/component": "0.6.4", + "@firebase/util": "1.9.3", + "tslib": "^2.1.0", + "undici": "5.26.5" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/storage-compat": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.3.tgz", + "integrity": "sha512-WNtjYPhpOA1nKcRu5lIodX0wZtP8pI0VxDJnk6lr+av7QZNS1s6zvr+ERDTve+Qu4Hq/ZnNaf3kBEQR2ccXn6A==", + "dependencies": { + "@firebase/component": "0.6.4", + "@firebase/storage": "0.12.0", + "@firebase/storage-types": "0.8.0", + "@firebase/util": "1.9.3", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/storage-types": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.8.0.tgz", + "integrity": "sha512-isRHcGrTs9kITJC0AVehHfpraWFui39MPaU7Eo8QfWlqW7YPymBmRgjDrlOgFdURh6Cdeg07zmkLP5tzTKRSpg==", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@firebase/util": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.3.tgz", + "integrity": "sha512-DY02CRhOZwpzO36fHpuVysz6JZrscPiBXD0fXp6qSrL9oNOx5KWICKdR95C0lSITzxp0TZosVyHqzatE8JbcjA==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/webchannel-wrapper": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.10.5.tgz", + "integrity": "sha512-eSkJsnhBWv5kCTSU1tSUVl9mpFu+5NXXunZc83le8GMjMlsWwQArSc7cJJ4yl+aDFY0NGLi0AjZWMn1axOrkRg==" + }, + "node_modules/@floating-ui/core": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.3.tgz", + "integrity": "sha512-O0WKDOo0yhJuugCx6trZQj5jVJ9yR0ystG2JaNAemYUWce+pmM6WUEFIibnWyEJKdrDxhm75NoSRME35FNaM/Q==", + "dependencies": { + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.4.tgz", + "integrity": "sha512-jByEsHIY+eEdCjnTVu+E3ephzTOzkQ8hgUfGwos+bg7NlH33Zc5uO+QHz1mrQUOgIKKDD1RtS201P9NvAfq3XQ==", + "dependencies": { + "@floating-ui/core": "^1.5.3", + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.6.tgz", + "integrity": "sha512-IB8aCRFxr8nFkdYZgH+Otd9EVQPJoynxeFRGTB8voPoZMRWo8XjYuCRgpI1btvuKY69XMiLnW+ym7zoBHM90Rw==", + "dependencies": { + "@floating-ui/dom": "^1.5.4" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" + }, + "node_modules/@grpc/grpc-js": { + "version": "1.9.13", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.13.tgz", + "integrity": "sha512-OEZZu9v9AA+7/tghMDE8o5DAMD5THVnwSqDWuh7PPYO5287rTyqy0xEHT6/e4pbqSrhyLPdQFsam4TwFQVVIIw==", + "dependencies": { + "@grpc/proto-loader": "^0.7.8", + "@types/node": ">=12.12.47" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.7.10", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.10.tgz", + "integrity": "sha512-CAqDfoaQ8ykFd9zqBDn4k6iWT9loLAlc2ETmDFS9JCD70gDcnA4L3AFEo2iV7KyAtAAHFW9ftq1Fz+Vsgq80RQ==", + "dependencies": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.2.4", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@grpc/proto-loader/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/@grpc/proto-loader/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@grpc/proto-loader/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@hookform/resolvers": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.3.4.tgz", + "integrity": "sha512-o5cgpGOuJYrd+iMKvkttOclgwRW86EsWJZZRC23prf0uU2i48Htq4PuT73AVb9ionFyZrwYEITuOFGF+BydEtQ==", + "peerDependencies": { + "react-hook-form": "^7.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.21.tgz", + "integrity": "sha512-SRfKmRe1KvYnxjEMtxEr+J4HIeMX5YBg/qhRHpxEIGjhX1rshcHlnFUE9K0GazhVKWM7B+nARSkV8LuvJdJ5/g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsdevtools/ono": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", + "dev": true + }, + "node_modules/@mui/base": { + "version": "5.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.32.tgz", + "integrity": "sha512-4VptvYeLUYMJhZapWBkD50GmKfOc0XT381KJcTK3ncZYIl8MdBhpR6l8jOyeP5cixUPBJhstjrnmQEAHjCLriw==", + "dependencies": { + "@babel/runtime": "^7.23.8", + "@floating-ui/react-dom": "^2.0.5", + "@mui/types": "^7.2.13", + "@mui/utils": "^5.15.5", + "@popperjs/core": "^2.11.8", + "clsx": "^2.1.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "5.15.5", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.5.tgz", + "integrity": "sha512-VhT8klyXy8GrWrARqLMoM6Nzz809Jc3Wn5wd7WOZfre2vFO1rBV1dBANAPBhBqpaQI0HCMRTWEYoSyOFgRnz4A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + } + }, + "node_modules/@mui/material": { + "version": "5.15.5", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.5.tgz", + "integrity": "sha512-2KfA39f/UWeQl0O22UJs3x1nG3chYlyu9wnux5vTnxUTLzkgYIzQIHaH+ZOGpv5JiZBMKktAPNfhqyhSaQ49qQ==", + "dependencies": { + "@babel/runtime": "^7.23.8", + "@mui/base": "5.0.0-beta.32", + "@mui/core-downloads-tracker": "^5.15.5", + "@mui/system": "^5.15.5", + "@mui/types": "^7.2.13", + "@mui/utils": "^5.15.5", + "@types/react-transition-group": "^4.4.10", + "clsx": "^2.1.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1", + "react-is": "^18.2.0", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/private-theming": { + "version": "5.15.5", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.5.tgz", + "integrity": "sha512-HU1KCyGNcJFsUamTbOM539ZDZJNI/XU7sZFdsN29glktUf+T6hNvDuO2ISinBiLTZy7Ab3R6DSSoYXRrLc4uwQ==", + "dependencies": { + "@babel/runtime": "^7.23.8", + "@mui/utils": "^5.15.5", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "5.15.5", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.5.tgz", + "integrity": "sha512-xoMUd8h270thNL7ZsOzmlluIAMsQg/HT7SCdRjPBVle+XHgTKaiWiRy1ekDOsrrF0rhjME3T7xeeUq2G269UUw==", + "dependencies": { + "@babel/runtime": "^7.23.8", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/styles": { + "version": "5.15.5", + "resolved": "https://registry.npmjs.org/@mui/styles/-/styles-5.15.5.tgz", + "integrity": "sha512-oKhGfhIf5lYxWeT6LWodHCyV834cUnU/xUp2LAevwT6Jay2U0q1H8RVUzPBuSyp/U+7ZZnxZ+NQfyHqNpQAJqg==", + "dependencies": { + "@babel/runtime": "^7.23.8", + "@emotion/hash": "^0.9.1", + "@mui/private-theming": "^5.15.5", + "@mui/types": "^7.2.13", + "@mui/utils": "^5.15.5", + "clsx": "^2.1.0", + "csstype": "^3.1.2", + "hoist-non-react-statics": "^3.3.2", + "jss": "^10.10.0", + "jss-plugin-camel-case": "^10.10.0", + "jss-plugin-default-unit": "^10.10.0", + "jss-plugin-global": "^10.10.0", + "jss-plugin-nested": "^10.10.0", + "jss-plugin-props-sort": "^10.10.0", + "jss-plugin-rule-value-function": "^10.10.0", + "jss-plugin-vendor-prefixer": "^10.10.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/system": { + "version": "5.15.5", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.5.tgz", + "integrity": "sha512-DMv2vGjUKaDt/m0RlzvLjpKiS5V0LoBhiMUHf5pWdj6uoNlN4FuKUe4pFeYmQMIO5DnVZKybmpPepfkdfEH+Og==", + "dependencies": { + "@babel/runtime": "^7.23.8", + "@mui/private-theming": "^5.15.5", + "@mui/styled-engine": "^5.15.5", + "@mui/types": "^7.2.13", + "@mui/utils": "^5.15.5", + "clsx": "^2.1.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/types": { + "version": "7.2.13", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.13.tgz", + "integrity": "sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g==", + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "5.15.5", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.5.tgz", + "integrity": "sha512-jEywgaMGZWPSlVFO7ZZAyXxNeLmq5XBp5At9Ne/sGohRJdesUcdxvyi8TP3odJxwQuL5L6PJV+JQ4DyIDM849A==", + "dependencies": { + "@babel/runtime": "^7.23.8", + "@types/prop-types": "^15.7.11", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/x-date-pickers": { + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-6.19.0.tgz", + "integrity": "sha512-/GccT+iFJTKjI6b9b0MWojyRKnizL/VYYAfPnR1q0wSVVXjYv7a1NK0uQlan4JbnovqoQCNVeTOCy/0bUJyD2Q==", + "dependencies": { + "@babel/runtime": "^7.23.2", + "@mui/base": "^5.0.0-beta.22", + "@mui/utils": "^5.14.16", + "@types/react-transition-group": "^4.4.8", + "clsx": "^2.0.0", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.9.0", + "@emotion/styled": "^11.8.1", + "@mui/material": "^5.8.6", + "@mui/system": "^5.8.0", + "date-fns": "^2.25.0 || ^3.2.0", + "date-fns-jalali": "^2.13.0-0", + "dayjs": "^1.10.7", + "luxon": "^3.0.2", + "moment": "^2.29.4", + "moment-hijri": "^2.1.2", + "moment-jalaali": "^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "date-fns": { + "optional": true + }, + "date-fns-jalali": { + "optional": true + }, + "dayjs": { + "optional": true + }, + "luxon": { + "optional": true + }, + "moment": { + "optional": true + }, + "moment-hijri": { + "optional": true + }, + "moment-jalaali": { + "optional": true + } + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dev": true, + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.0.tgz", + "integrity": "sha512-Zwq5OCzuwJC2jwqmpEQt7Ds1DTi6BWSwoGkbb1n9pO3hzb35BoJELx7c0T23iDkBGkh2e7tvOtjF3tr3OaQHDQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "node_modules/@reduxjs/toolkit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.0.1.tgz", + "integrity": "sha512-fxIjrR9934cmS8YXIGd9e7s1XRsEU++aFc9DVNMFMRTM5Vtsg2DCRMj21eslGtDt43IUf9bJL3h5bwUlZleibA==", + "dependencies": { + "immer": "^10.0.3", + "redux": "^5.0.0", + "redux-thunk": "^3.1.0", + "reselect": "^5.0.1" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18", + "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } + } + }, + "node_modules/@remix-run/router": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.14.2.tgz", + "integrity": "sha512-ACXpdMM9hmKZww21yEqWwiLws/UPLhNKvimN8RrYSqPSvB3ov7sLvAcfvaxePeLvccTQKGdkDIhLYApZVDFuKg==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.5.tgz", + "integrity": "sha512-idWaG8xeSRCfRq9KpRysDHJ/rEHBEXcHuJ82XY0yYFIWnLMjZv9vF/7DOq8djQ2n3Lk6+3qfSH8AqlmHlmi1MA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.5.tgz", + "integrity": "sha512-f14d7uhAMtsCGjAYwZGv6TwuS3IFaM4ZnGMUn3aCBgkcHAYErhV1Ad97WzBvS2o0aaDv4mVz+syiN0ElMyfBPg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.5.tgz", + "integrity": "sha512-ndoXeLx455FffL68OIUrVr89Xu1WLzAG4n65R8roDlCoYiQcGGg6MALvs2Ap9zs7AHg8mpHtMpwC8jBBjZrT/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.5.tgz", + "integrity": "sha512-UmElV1OY2m/1KEEqTlIjieKfVwRg0Zwg4PLgNf0s3glAHXBN99KLpw5A5lrSYCa1Kp63czTpVll2MAqbZYIHoA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.5.tgz", + "integrity": "sha512-Q0LcU61v92tQB6ae+udZvOyZ0wfpGojtAKrrpAaIqmJ7+psq4cMIhT/9lfV6UQIpeItnq/2QDROhNLo00lOD1g==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.5.tgz", + "integrity": "sha512-dkRscpM+RrR2Ee3eOQmRWFjmV/payHEOrjyq1VZegRUa5OrZJ2MAxBNs05bZuY0YCtpqETDy1Ix4i/hRqX98cA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.5.tgz", + "integrity": "sha512-QaKFVOzzST2xzY4MAmiDmURagWLFh+zZtttuEnuNn19AiZ0T3fhPyjPPGwLNdiDT82ZE91hnfJsUiDwF9DClIQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.5.tgz", + "integrity": "sha512-HeGqmRJuyVg6/X6MpE2ur7GbymBPS8Np0S/vQFHDmocfORT+Zt76qu+69NUoxXzGqVP1pzaY6QIi0FJWLC3OPA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.5.tgz", + "integrity": "sha512-Dq1bqBdLaZ1Gb/l2e5/+o3B18+8TI9ANlA1SkejZqDgdU/jK/ThYaMPMJpVMMXy2uRHvGKbkz9vheVGdq3cJfA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.5.tgz", + "integrity": "sha512-ezyFUOwldYpj7AbkwyW9AJ203peub81CaAIVvckdkyH8EvhEIoKzaMFJj0G4qYJ5sw3BpqhFrsCc30t54HV8vg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.5.tgz", + "integrity": "sha512-aHSsMnUw+0UETB0Hlv7B/ZHOGY5bQdwMKJSzGfDfvyhnpmVxLMGnQPGNE9wgqkLUs3+gbG1Qx02S2LLfJ5GaRQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.5.tgz", + "integrity": "sha512-AiqiLkb9KSf7Lj/o1U3SEP9Zn+5NuVKgFdRIZkvd4N0+bYrTOovVd0+LmYCPQGbocT4kvFyK+LXCDiXPBF3fyA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.5.tgz", + "integrity": "sha512-1q+mykKE3Vot1kaFJIDoUFv5TuW+QQVaf2FmTT9krg86pQrGStOSJJ0Zil7CFagyxDuouTepzt5Y5TVzyajOdQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rtk-query/codegen-openapi": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rtk-query/codegen-openapi/-/codegen-openapi-1.2.0.tgz", + "integrity": "sha512-Sru3aPHyFC0Tb7jeFh/kVMGBdQUcofb9frrHhjNSRLEoJWsG9fjaioUx3nPT5HZVbdAvAFF4xMWFQNfgJBrAGw==", + "dev": true, + "dependencies": { + "@apidevtools/swagger-parser": "^10.0.2", + "commander": "^6.2.0", + "oazapfts": "^4.8.0", + "prettier": "^2.2.1", + "semver": "^7.3.5", + "swagger2openapi": "^7.0.4", + "typescript": "^5.0.0" + }, + "bin": { + "rtk-query-codegen-openapi": "lib/bin/cli.js" + } + }, + "node_modules/@rtk-query/codegen-openapi/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@rtk-query/codegen-openapi/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.6.1.tgz", + "integrity": "sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw==", + "dev": true + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", + "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", + "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", + "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", + "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", + "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", + "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", + "dev": true, + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", + "@svgr/babel-plugin-transform-svg-component": "8.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/core": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", + "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^8.1.3", + "snake-case": "^3.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/core/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@svgr/core/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@svgr/core/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@svgr/core/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", + "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.21.3", + "entities": "^4.4.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", + "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "@svgr/hast-util-to-babel-ast": "8.0.0", + "svg-parser": "^2.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@tailwindcss/aspect-ratio": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/aspect-ratio/-/aspect-ratio-0.4.2.tgz", + "integrity": "sha512-8QPrypskfBa7QIMuKHg2TA7BqES6vhBrDLOv8Unb6FcFyd3TjKbc6lcmb9UPQHxfl24sXoJ41ux/H7qQQvfaSQ==", + "dev": true, + "peerDependencies": { + "tailwindcss": ">=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1" + } + }, + "node_modules/@tailwindcss/typography": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.10.tgz", + "integrity": "sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==", + "dev": true, + "dependencies": { + "lodash.castarray": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "postcss-selector-parser": "6.0.10" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders" + } + }, + "node_modules/@ts-morph/bootstrap": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@ts-morph/bootstrap/-/bootstrap-0.16.0.tgz", + "integrity": "sha512-FYW3bK5EBeAgpHu0qZ57gHbLjzgzC81y5EJmrebzIhXSYg6OgZu5lFHpF5NJ7CwM7ZMhxX1PG+DRA8e+skopKw==", + "dev": true, + "dependencies": { + "@ts-morph/common": "~0.16.0" + } + }, + "node_modules/@ts-morph/common": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.16.0.tgz", + "integrity": "sha512-SgJpzkTgZKLKqQniCjLaE3c2L2sdL7UShvmTmPBejAKd2OKV/yfMpQ2IWpAuA+VY5wy7PkSUaEObIqEK6afFuw==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.11", + "minimatch": "^5.1.0", + "mkdirp": "^1.0.4", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@ts-morph/common/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@ts-morph/common/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@types/autosuggest-highlight": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@types/autosuggest-highlight/-/autosuggest-highlight-3.2.3.tgz", + "integrity": "sha512-8Mb21KWtpn6PvRQXjsKhrXIcxbSloGqNH50RntwGeJsGPW4xvNhfml+3kKulaKpO/7pgZfOmzsJz7VbepArlGQ==", + "dev": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/babel__parser/-/babel__parser-7.1.1.tgz", + "integrity": "sha512-baSzIb0QQOUQSglfR9gwXVSbHH91YvY00C9Zjq6E7sPdnp8oyPyUsonIj3SF4wUl0s96vR/kyWeVv30gmM/xZw==", + "deprecated": "Deprecated", + "dev": true, + "dependencies": { + "@babel/parser": "*" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/babel-traverse": { + "version": "6.25.10", + "resolved": "https://registry.npmjs.org/@types/babel-traverse/-/babel-traverse-6.25.10.tgz", + "integrity": "sha512-B3XitTFG8YeXb5lr7Nj62t1DikCDuAJ/4BDeK6GCuWREEmdunI9DWnv+81oHl2yQBQPWY/C1PmV3vaRZB4LQmw==", + "dev": true, + "dependencies": { + "@types/babel-types": "*" + } + }, + "node_modules/@types/babel-types": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.15.tgz", + "integrity": "sha512-JUgfZHUOMbtjopxiOQaaF+Uovk5wpDqpXR+XLWiOivCWSy1FccO30lvNNpCt8geFwq8VmGT2y9OMkOpA0g5O5g==", + "dev": true + }, + "node_modules/@types/create-react-class": { + "version": "15.6.7", + "resolved": "https://registry.npmjs.org/@types/create-react-class/-/create-react-class-15.6.7.tgz", + "integrity": "sha512-fM/HDjJCUCzjfn9Bi6s0xz0QF0ZKhpSeOhnewa6PjsSXQ4hyeLwTZKG83V2yk3vBNSneS7OvgS+BNFEKVrt45w==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/crypto-js": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.2.1.tgz", + "integrity": "sha512-FSPGd9+OcSok3RsM0UZ/9fcvMOXJ1ENE/ZbLfOPlBWj7BgXtEAM8VYfTtT760GiLbQIMoVozwVuisjvsVwqYWw==", + "dev": true + }, + "node_modules/@types/draft-js": { + "version": "0.11.17", + "resolved": "https://registry.npmjs.org/@types/draft-js/-/draft-js-0.11.17.tgz", + "integrity": "sha512-th0OwSPftG2r5rvGxS7nt8I7hcWMlrQ9OJcNx6MdXAwO797W78IGEsGWonO+turVBWEd3qylZRGBVtpEX9vSYQ==", + "dev": true, + "dependencies": { + "@types/react": "*", + "immutable": "~3.7.4" + } + }, + "node_modules/@types/draft-js/node_modules/immutable": { + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", + "integrity": "sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@types/draftjs-to-html": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@types/draftjs-to-html/-/draftjs-to-html-0.8.4.tgz", + "integrity": "sha512-5FZcjFoJL57N/IttLCTCNI0krX+181oCl5hf76u3TqPkqBAphHrJAO9ReYesx9138kcObaYmpnWC2Yrqxoqd2Q==", + "dev": true, + "dependencies": { + "@types/draft-js": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", + "dev": true, + "dependencies": { + "@types/minimatch": "^5.1.2", + "@types/node": "*" + } + }, + "node_modules/@types/google-map-react": { + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/@types/google-map-react/-/google-map-react-2.1.10.tgz", + "integrity": "sha512-8/0UllZS7tF08WNBRPQlSJCkETvz3e3sZoPxzDaWkj2iV5dmFSnOKXVtoeKo8dLZSe+RkLn479t1wj6nXmLLSA==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/history": { + "version": "4.7.11", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==", + "dev": true + }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", + "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", + "dev": true, + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.11", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.11.tgz", + "integrity": "sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/js-beautify": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/@types/js-beautify/-/js-beautify-1.14.3.tgz", + "integrity": "sha512-FMbQHz+qd9DoGvgLHxeqqVPaNRffpIu5ZjozwV8hf9JAGpIOzuAf4wGbRSo8LNITHqGjmmVjaMggTT5P4v4IHg==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/lodash": { + "version": "4.14.202", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", + "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==", + "dev": true + }, + "node_modules/@types/material-ui": { + "version": "0.21.16", + "resolved": "https://registry.npmjs.org/@types/material-ui/-/material-ui-0.21.16.tgz", + "integrity": "sha512-US8P5IsLguspYFDtkG4097KZDyqz/GqBm0uftcZ2h2fTzyzLqJuFk8BliEQ9VS3EviRDJaB6l29gps3hkCTm7Q==", + "dev": true, + "dependencies": { + "@types/react": "*", + "@types/react-addons-linked-state-mixin": "*" + } + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.11.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.0.tgz", + "integrity": "sha512-o9bjXmDNcF7GbM4CNQpmi+TutCgap/K3w1JyKgxAjqx41zp9qlIAVFi0IhCNsJcXolEqLWhbFbEeL0PvYm4pcQ==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" + }, + "node_modules/@types/postcss-modules-local-by-default": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.2.tgz", + "integrity": "sha512-CtYCcD+L+trB3reJPny+bKWKMzPfxEyQpKIwit7kErnOexf5/faaGpkFy4I5AwbV4hp1sk7/aTg0tt0B67VkLQ==", + "dev": true, + "dependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/@types/postcss-modules-scope": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/postcss-modules-scope/-/postcss-modules-scope-3.0.4.tgz", + "integrity": "sha512-//ygSisVq9kVI0sqx3UPLzWIMCmtSVrzdljtuaAEJtGoGnpjBikZ2sXO5MpH9SnWX9HRfXxHifDAXcQjupWnIQ==", + "dev": true, + "dependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/@types/prismjs": { + "version": "1.26.3", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.3.tgz", + "integrity": "sha512-A0D0aTXvjlqJ5ZILMz3rNfDBOx9hHxLZYv2by47Sm/pqW35zzjusrZTryatjN/Rf8Us2gZrJD+KeHbUSTux1Cw==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" + }, + "node_modules/@types/qs": { + "version": "6.9.11", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", + "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.2.47", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.47.tgz", + "integrity": "sha512-xquNkkOirwyCgoClNk85BjP+aqnIS+ckAJ8i37gAbDs14jfW/J23f2GItAf33oiUPQnqNMALiFeoM9Y5mbjpVQ==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-addons-linked-state-mixin": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/@types/react-addons-linked-state-mixin/-/react-addons-linked-state-mixin-0.14.27.tgz", + "integrity": "sha512-yVxzQcKDiq32uziGQ/ka586qSFxz2ePYZ3dTCp4JHJKk/E6M0LP0R28ft3oFAnTGJRFBAB3if3pkP8w57Y04IA==", + "dev": true, + "dependencies": { + "@types/create-react-class": "*", + "@types/react": "*" + } + }, + "node_modules/@types/react-autosuggest": { + "version": "10.1.11", + "resolved": "https://registry.npmjs.org/@types/react-autosuggest/-/react-autosuggest-10.1.11.tgz", + "integrity": "sha512-lneJrX/5TZJzKHPJ6UuUjsh9OfeyQHKYEVHyBh5Y7LeRbCZxyIsjBmpxdPy1iH++Ger0qcyW+phPpYH+g3naLA==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-beautiful-dnd": { + "version": "13.1.8", + "resolved": "https://registry.npmjs.org/@types/react-beautiful-dnd/-/react-beautiful-dnd-13.1.8.tgz", + "integrity": "sha512-E3TyFsro9pQuK4r8S/OL6G99eq7p8v29sX0PM7oT8Z+PJfZvSQTx4zTQbUJ+QZXioAF0e7TGBEcA1XhYhCweyQ==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.18", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz", + "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-draft-wysiwyg": { + "version": "1.13.8", + "resolved": "https://registry.npmjs.org/@types/react-draft-wysiwyg/-/react-draft-wysiwyg-1.13.8.tgz", + "integrity": "sha512-qo0vIHjqAYq3Hz93Td3ecNodgVjKsvrWkBJ6mZXJSUmQzrQ5Fu7NS9oV5PXnVbnuqPoJLALbCSiz8UCksLribg==", + "dev": true, + "dependencies": { + "@types/draft-js": "*", + "@types/react": "*" + } + }, + "node_modules/@types/react-redux": { + "version": "7.1.33", + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.33.tgz", + "integrity": "sha512-NF8m5AjWCkert+fosDsN3hAlHzpjSiXlVy9EgQEmLoBhaNXbmyeGs/aj5dQzKuF+/q+S7JQagorGDW8pJ28Hmg==", + "dev": true, + "dependencies": { + "@types/hoist-non-react-statics": "^3.3.0", + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0", + "redux": "^4.0.0" + } + }, + "node_modules/@types/react-router": { + "version": "5.1.20", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", + "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", + "dev": true, + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*" + } + }, + "node_modules/@types/react-router-dom": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", + "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", + "dev": true, + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "*" + } + }, + "node_modules/@types/react-swipeable-views": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/@types/react-swipeable-views/-/react-swipeable-views-0.13.5.tgz", + "integrity": "sha512-ni6WjO7gBq2xB2Y/ZiRdQOgjGOxIik5ow2s7xKieDq8DxsXTdV46jJslSBVK2yoIJHf6mG3uqNTwxwgzbXRRzg==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", + "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/redux-logger": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@types/redux-logger/-/redux-logger-3.0.12.tgz", + "integrity": "sha512-5vAlwokZi/Unb1eGoZfVVzIBTPNDflwXiDzPLT1SynP6hdJfsOEf+w6ZOySOyboLWciCRYeE5DGYUnwVCq+Uyg==", + "dev": true, + "dependencies": { + "redux": "^4.0.0" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" + }, + "node_modules/@types/semver": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "node_modules/@types/styled-components": { + "version": "5.1.34", + "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.34.tgz", + "integrity": "sha512-mmiVvwpYklFIv9E8qfxuPyIt/OuyIrn6gMOAMOFUO3WJfSrSE+sGUoa4PiZj77Ut7bKZpaa6o1fBKS/4TOEvnA==", + "dev": true, + "dependencies": { + "@types/hoist-non-react-statics": "*", + "@types/react": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-n4sx2bqL0mW1tvDf/loQ+aMX7GQD3lc3fkCMC55VFNDu/vBOabO+LTIeXKM14xK0ppk5TUGcWRjiSpIlUpghKw==" + }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + }, + "node_modules/@types/webpack-env": { + "version": "1.18.4", + "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.4.tgz", + "integrity": "sha512-I6e+9+HtWADAWeeJWDFQtdk4EVSAbj6Rtz4q8fJ7mSr1M0jzlFcs8/HZ+Xb5SHzVm1dxH7aUiI+A8kA8Gcrm0A==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.18.1.tgz", + "integrity": "sha512-nISDRYnnIpk7VCFrGcu1rnZfM1Dh9LRHnfgdkjcbi/l7g16VYRri3TjXi9Ir4lOZSw5N/gnV/3H7jIPQ8Q4daA==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.18.1", + "@typescript-eslint/type-utils": "6.18.1", + "@typescript-eslint/utils": "6.18.1", + "@typescript-eslint/visitor-keys": "6.18.1", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz", + "integrity": "sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.18.1.tgz", + "integrity": "sha512-zct/MdJnVaRRNy9e84XnVtRv9Vf91/qqe+hZJtKanjojud4wAVy/7lXxJmMyX6X6J+xc6c//YEWvpeif8cAhWA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.18.1", + "@typescript-eslint/types": "6.18.1", + "@typescript-eslint/typescript-estree": "6.18.1", + "@typescript-eslint/visitor-keys": "6.18.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.18.1.tgz", + "integrity": "sha512-BgdBwXPFmZzaZUuw6wKiHKIovms97a7eTImjkXCZE04TGHysG+0hDQPmygyvgtkoB/aOQwSM/nWv3LzrOIQOBw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.18.1", + "@typescript-eslint/visitor-keys": "6.18.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.18.1.tgz", + "integrity": "sha512-wyOSKhuzHeU/5pcRDP2G2Ndci+4g653V43gXTpt4nbyoIOAASkGDA9JIAgbQCdCkcr1MvpSYWzxTz0olCn8+/Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.18.1", + "@typescript-eslint/utils": "6.18.1", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.18.1.tgz", + "integrity": "sha512-4TuMAe+tc5oA7wwfqMtB0Y5OrREPF1GeJBAjqwgZh1lEMH5PJQgWgHGfYufVB51LtjD+peZylmeyxUXPfENLCw==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.18.1.tgz", + "integrity": "sha512-fv9B94UAhywPRhUeeV/v+3SBDvcPiLxRZJw/xZeeGgRLQZ6rLMG+8krrJUyIf6s1ecWTzlsbp0rlw7n9sjufHA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.18.1", + "@typescript-eslint/visitor-keys": "6.18.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.18.1.tgz", + "integrity": "sha512-zZmTuVZvD1wpoceHvoQpOiewmWu3uP9FuTWo8vqpy2ffsmfCE8mklRPi+vmnIYAIk9t/4kOThri2QCDgor+OpQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.18.1", + "@typescript-eslint/types": "6.18.1", + "@typescript-eslint/typescript-estree": "6.18.1", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.18.1.tgz", + "integrity": "sha512-/kvt0C5lRqGoCfsbmm7/CwMqoSkY3zzHLIjdhHZQW3VFrnz7ATecOHR7nb7V+xn4286MBxfnQfQhAmCI0u+bJA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.18.1", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz", + "integrity": "sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.5", + "@babel/plugin-transform-react-jsx-self": "^7.23.3", + "@babel/plugin-transform-react-jsx-source": "^7.23.3", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0" + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-draft-04": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", + "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", + "dev": true, + "peerDependencies": { + "ajv": "^8.5.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.reduce": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz", + "integrity": "sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", + "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ast-types": { + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.7.tgz", + "integrity": "sha512-2mP3TwtkY/aTv5X3ZsMpNAbOnyoC/aMJwJSoaELPkHId0nSQgFcnU4dRW3isxiz7+zBexk0ym3WNVjMiQBnJSw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dev": true + }, + "node_modules/asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.16", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", + "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001538", + "fraction.js": "^4.3.6", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/autosuggest-highlight": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/autosuggest-highlight/-/autosuggest-highlight-3.3.4.tgz", + "integrity": "sha512-j6RETBD2xYnrVcoV1S5R4t3WxOlWZKyDQjkwnggDPSjF5L4jV98ZltBpvPvbkM1HtoSe5o+bNrTHyjPbieGeYA==", + "dependencies": { + "remove-accents": "^0.4.2" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", + "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", + "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", + "dependencies": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios-mock-adapter": { + "version": "1.21.5", + "resolved": "https://registry.npmjs.org/axios-mock-adapter/-/axios-mock-adapter-1.21.5.tgz", + "integrity": "sha512-5NI1V/VK+8+JeTF8niqOowuysA4b8mGzdlMN/QnTnoXbYh4HZSNiopsDclN2g/m85+G++IrEtUdZaQ3GnaMsSA==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "is-buffer": "^2.0.5" + }, + "peerDependencies": { + "axios": ">= 0.17.0" + } + }, + "node_modules/axobject-query": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", + "dev": true, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz", + "integrity": "sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.4", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz", + "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.4", + "core-js-compat": "^3.33.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz", + "integrity": "sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.4" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", + "dev": true + }, + "node_modules/babel-preset-react-app": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz", + "integrity": "sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-decorators": "^7.16.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-transform-flow-strip-types": "^7.16.0", + "@babel/plugin-transform-react-display-name": "^7.16.0", + "@babel/plugin-transform-runtime": "^7.16.4", + "@babel/preset-env": "^7.16.4", + "@babel/preset-react": "^7.16.0", + "@babel/preset-typescript": "^7.16.0", + "@babel/runtime": "^7.16.3", + "babel-plugin-macros": "^3.1.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", + "dev": true, + "bin": { + "btoa": "bin/btoa.js" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-me-maybe": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", + "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", + "dev": true + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/camelize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001576", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001576.tgz", + "integrity": "sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" + }, + "node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cliui/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clsx": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", + "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/core-js": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.35.0.tgz", + "integrity": "sha512-ntakECeqg81KqMueeGJ79Q5ZgQNR+6eaE8sxGCx62zMbAIj65q+uYvatToew3m6eAGdU4gNZwpZ34NMe4GYswg==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.35.0.tgz", + "integrity": "sha512-5blwFAddknKeNgsjBzilkdQ0+YK8L1PfqPYq40NOYMYFSS38qj+hpTcLLWwpIwA2A5bje/x5jmVn2tzUMg9IVw==", + "dev": true, + "dependencies": { + "browserslist": "^4.22.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/create-jest-runner": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/create-jest-runner/-/create-jest-runner-0.5.3.tgz", + "integrity": "sha512-a9VY2doMBmzRollJB3Ft3/Y5fBceSWJ4gdyVsg4/d7nP1S4715VG939s2VnITDj79YBmRgKhjGjNRv1c+Kre1g==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "jest-worker": "^24.0.0", + "throat": "^4.1.0" + }, + "bin": { + "create-jest-runner": "generator/index.js" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-fetch": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" + }, + "node_modules/css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/css-to-react-native": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", + "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", + "dependencies": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, + "node_modules/css-vendor": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", + "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", + "dependencies": { + "@babel/runtime": "^7.8.3", + "is-in-browser": "^1.0.2" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssjanus": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cssjanus/-/cssjanus-2.1.0.tgz", + "integrity": "sha512-kAijbny3GmdOi9k+QT6DGIXqFvL96aksNlGr4Rhk9qXDZYWUojU4bRc3IHWxdaLNOqgEZHuXoe5Wl2l7dxLW5g==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/deep-diff": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/deep-diff/-/deep-diff-0.3.8.tgz", + "integrity": "sha512-yVn6RZmHiGnxRKR9sJb3iVV2XTF1Ghh2DiWRZ3dMnGc43yUdWWF/kX6lQyk3+P84iprfWKU/8zFTrlkvtFm1ug==" + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, + "node_modules/draft-js": { + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/draft-js/-/draft-js-0.11.7.tgz", + "integrity": "sha512-ne7yFfN4sEL82QPQEn80xnADR8/Q6ALVworbC5UOSzOvjffmYfFsr3xSZtxbIirti14R7Y33EZC5rivpLgIbsg==", + "dependencies": { + "fbjs": "^2.0.0", + "immutable": "~3.7.4", + "object-assign": "^4.1.1" + }, + "peerDependencies": { + "react": ">=0.14.0", + "react-dom": ">=0.14.0" + } + }, + "node_modules/draft-js/node_modules/immutable": { + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", + "integrity": "sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/draftjs-to-html": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/draftjs-to-html/-/draftjs-to-html-0.9.1.tgz", + "integrity": "sha512-fFstE6+IayaVFBEvaFt/wN8vdj8FsTRzij7dy7LI9QIwf5LgfHFi9zSpvCg+feJ2tbYVqHxUkjcibwpsTpgFVQ==" + }, + "node_modules/draftjs-utils": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/draftjs-utils/-/draftjs-utils-0.10.2.tgz", + "integrity": "sha512-EstHqr3R3JVcilJrBaO/A+01GvwwKmC7e4TCjC7S94ZeMh4IVmf60OuQXtHHpwItK8C2JCi3iljgN5KHkJboUg==", + "peerDependencies": { + "draft-js": "^0.11.x", + "immutable": "3.x.x || 4.x.x" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.630", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.630.tgz", + "integrity": "sha512-osHqhtjojpCsACVnuD11xO5g9xaCyw7Qqn/C2KParkMv42i8jrJJgx3g7mkHfpxwhy9MnOJr8+pKOdZ7qzgizg==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "dev": true, + "dependencies": { + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "node_modules/esbuild": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", + "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.11", + "@esbuild/android-arm": "0.19.11", + "@esbuild/android-arm64": "0.19.11", + "@esbuild/android-x64": "0.19.11", + "@esbuild/darwin-arm64": "0.19.11", + "@esbuild/darwin-x64": "0.19.11", + "@esbuild/freebsd-arm64": "0.19.11", + "@esbuild/freebsd-x64": "0.19.11", + "@esbuild/linux-arm": "0.19.11", + "@esbuild/linux-arm64": "0.19.11", + "@esbuild/linux-ia32": "0.19.11", + "@esbuild/linux-loong64": "0.19.11", + "@esbuild/linux-mips64el": "0.19.11", + "@esbuild/linux-ppc64": "0.19.11", + "@esbuild/linux-riscv64": "0.19.11", + "@esbuild/linux-s390x": "0.19.11", + "@esbuild/linux-x64": "0.19.11", + "@esbuild/netbsd-x64": "0.19.11", + "@esbuild/openbsd-x64": "0.19.11", + "@esbuild/sunos-x64": "0.19.11", + "@esbuild/win32-arm64": "0.19.11", + "@esbuild/win32-ia32": "0.19.11", + "@esbuild/win32-x64": "0.19.11" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-airbnb": { + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz", + "integrity": "sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==", + "dev": true, + "dependencies": { + "eslint-config-airbnb-base": "^15.0.0", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5" + }, + "engines": { + "node": "^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.28.0", + "eslint-plugin-react-hooks": "^4.3.0" + } + }, + "node_modules/eslint-config-airbnb-base": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", + "dev": true, + "dependencies": { + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.2" + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-config-react-app": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz", + "integrity": "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/eslint-parser": "^7.16.3", + "@rushstack/eslint-patch": "^1.1.0", + "@typescript-eslint/eslint-plugin": "^5.5.0", + "@typescript-eslint/parser": "^5.5.0", + "babel-preset-react-app": "^10.0.1", + "confusing-browser-globals": "^1.0.11", + "eslint-plugin-flowtype": "^8.0.3", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jest": "^25.3.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.27.1", + "eslint-plugin-react-hooks": "^4.3.0", + "eslint-plugin-testing-library": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.0" + } + }, + "node_modules/eslint-config-react-app/node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-config-react-app/node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-config-react-app/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-config-react-app/node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-config-react-app/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-config-react-app/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-config-react-app/node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-config-react-app/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-config-react-app/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-flowtype": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", + "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==", + "dev": true, + "dependencies": { + "lodash": "^4.17.21", + "string-natural-compare": "^3.0.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@babel/plugin-syntax-flow": "^7.14.5", + "@babel/plugin-transform-react-jsx": "^7.14.9", + "eslint": "^8.1.0" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-jest": { + "version": "25.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz", + "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", + "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", + "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.6" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-testing-library": { + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz", + "integrity": "sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^5.58.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0", + "npm": ">=6" + }, + "peerDependencies": { + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-unused-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.0.0.tgz", + "integrity": "sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==", + "dev": true, + "dependencies": { + "eslint-rule-composer": "^0.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^6.0.0", + "eslint": "^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + } + } + }, + "node_modules/eslint-rule-composer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", + "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fbjs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-2.0.0.tgz", + "integrity": "sha512-8XA8ny9ifxrAWlyhAbexXcs3rRMtxWcs3M0lctLfB49jRDHiaxj+Mo0XxbwE7nKZYzgCFoq64FS+WFd4IycPPQ==", + "dependencies": { + "core-js": "^3.6.4", + "cross-fetch": "^3.0.4", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.18" + } + }, + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" + }, + "node_modules/fbjs/node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/firebase": { + "version": "10.7.1", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-10.7.1.tgz", + "integrity": "sha512-Mlt7y7zQ43FtKp4SCyYie3tnrOL3UMF2XXiV4ZXMrC0d0wtcOYmABuybhkJpJCKILpdekxr39wjnaai0DZlWFg==", + "dependencies": { + "@firebase/analytics": "0.10.0", + "@firebase/analytics-compat": "0.2.6", + "@firebase/app": "0.9.25", + "@firebase/app-check": "0.8.1", + "@firebase/app-check-compat": "0.3.8", + "@firebase/app-compat": "0.2.25", + "@firebase/app-types": "0.9.0", + "@firebase/auth": "1.5.1", + "@firebase/auth-compat": "0.5.1", + "@firebase/database": "1.0.2", + "@firebase/database-compat": "1.0.2", + "@firebase/firestore": "4.4.0", + "@firebase/firestore-compat": "0.3.23", + "@firebase/functions": "0.11.0", + "@firebase/functions-compat": "0.3.6", + "@firebase/installations": "0.6.4", + "@firebase/installations-compat": "0.2.4", + "@firebase/messaging": "0.12.5", + "@firebase/messaging-compat": "0.2.5", + "@firebase/performance": "0.6.4", + "@firebase/performance-compat": "0.2.4", + "@firebase/remote-config": "0.4.4", + "@firebase/remote-config-compat": "0.2.4", + "@firebase/storage": "0.12.0", + "@firebase/storage-compat": "0.3.3", + "@firebase/util": "1.9.3" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/flow-parser": { + "version": "0.226.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.226.0.tgz", + "integrity": "sha512-YlH+Y/P/5s0S7Vg14RwXlJMF/JsGfkG7gcKB/zljyoqaPNX9YVsGzx+g6MLTbhZaWbPhs4347aTpmSb9GgiPtw==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/framer-motion": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-10.18.0.tgz", + "integrity": "sha512-oGlDh1Q1XqYPksuTD/usb0I70hq95OUzmL9+6Zd+Hs4XV0oaISBa/UUMSjYiq6m8EUF32132mOJ8xVZS+I0S6w==", + "dependencies": { + "tslib": "^2.4.0" + }, + "optionalDependencies": { + "@emotion/is-prop-valid": "^0.8.2" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/framer-motion/node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "optional": true, + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + "node_modules/framer-motion/node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "optional": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/html-parse-stringify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", + "dependencies": { + "void-elements": "3.1.0" + } + }, + "node_modules/html-to-draftjs": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/html-to-draftjs/-/html-to-draftjs-1.5.0.tgz", + "integrity": "sha512-kggLXBNciKDwKf+KYsuE+V5gw4dZ7nHyGMX9m0wy7urzWjKGWyNFetmArRLvRV0VrxKN70WylFsJvMTJx02OBQ==", + "peerDependencies": { + "draft-js": "^0.10.x || ^0.11.x", + "immutable": "3.x.x || 4.x.x" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "node_modules/http2-client": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/http2-client/-/http2-client-1.3.5.tgz", + "integrity": "sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==", + "dev": true + }, + "node_modules/hyphenate-style-name": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", + "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" + }, + "node_modules/i18next": { + "version": "23.7.16", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.7.16.tgz", + "integrity": "sha512-SrqFkMn9W6Wb43ZJ9qrO6U2U4S80RsFMA7VYFSqp7oc7RllQOYDCdRfsse6A7Cq/V8MnpxKvJCYgM8++27n4Fw==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "dependencies": { + "@babel/runtime": "^7.23.2" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" + }, + "node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immer": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.3.tgz", + "integrity": "sha512-pwupu3eWfouuaowscykeckFmVTpqbzW+rXFCX8rQLkZzM9ftBmU/++Ra+o+L27mz03zJTlyV4UUr+fdKNffo4A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-in-browser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", + "integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==" + }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jake/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jake/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jake/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jake/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jake/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jake/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "dependencies": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jscodeshift": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.6.4.tgz", + "integrity": "sha512-+NF/tlNbc2WEhXUuc4WEJLsJumF84tnaMUZW2hyJw3jThKKRvsPX4sPJVgO1lPE28z0gNL+gwniLG9d8mYvQCQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.6", + "@babel/parser": "^7.1.6", + "@babel/plugin-proposal-class-properties": "^7.1.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/preset-env": "^7.1.6", + "@babel/preset-flow": "^7.0.0", + "@babel/preset-typescript": "^7.1.0", + "@babel/register": "^7.0.0", + "babel-core": "^7.0.0-bridge.0", + "colors": "^1.1.2", + "flow-parser": "0.*", + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.16.1", + "temp": "^0.8.1", + "write-file-atomic": "^2.3.0" + }, + "bin": { + "jscodeshift": "bin/jscodeshift.js" + } + }, + "node_modules/jscodeshift/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/jscodeshift/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jscodeshift/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/jscodeshift/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jscodeshift/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/jscodeshift/node_modules/temp": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", + "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", + "dev": true, + "dependencies": { + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/jscodeshift/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5-writer": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/json5-writer/-/json5-writer-0.1.8.tgz", + "integrity": "sha512-h5sqkk/vSKvESOUTBniGWs8p8nTzHsoDrxPS9enJfQVINqXv3lm+FAyizLwbrCwCn0q7NXqDBb+r8AdUdK3XZw==", + "dev": true, + "dependencies": { + "jscodeshift": "^0.6.3" + } + }, + "node_modules/jss": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz", + "integrity": "sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "csstype": "^3.0.2", + "is-in-browser": "^1.1.3", + "tiny-warning": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/jss" + } + }, + "node_modules/jss-plugin-camel-case": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz", + "integrity": "sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "hyphenate-style-name": "^1.0.3", + "jss": "10.10.0" + } + }, + "node_modules/jss-plugin-default-unit": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz", + "integrity": "sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.10.0" + } + }, + "node_modules/jss-plugin-global": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz", + "integrity": "sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.10.0" + } + }, + "node_modules/jss-plugin-nested": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz", + "integrity": "sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.10.0", + "tiny-warning": "^1.0.2" + } + }, + "node_modules/jss-plugin-props-sort": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz", + "integrity": "sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.10.0" + } + }, + "node_modules/jss-plugin-rule-value-function": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz", + "integrity": "sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.10.0", + "tiny-warning": "^1.0.2" + } + }, + "node_modules/jss-plugin-vendor-prefixer": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz", + "integrity": "sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "css-vendor": "^2.0.8", + "jss": "10.10.0" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" + }, + "node_modules/keycode": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.2.1.tgz", + "integrity": "sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg==" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/less": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", + "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", + "dev": true, + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/less/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/linkify-it": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", + "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" + }, + "node_modules/lodash.castarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", + "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true + }, + "node_modules/log-update": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-3.4.0.tgz", + "integrity": "sha512-ILKe88NeMt4gmDvk/eb615U/IVn7K9KWGkoYbdatQ69Z65nj1ZzjM6fHXfcs0Uge+e+EGnMW7DY4T9yko8vWFg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.2.0", + "cli-cursor": "^2.1.0", + "wrap-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/log-update/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mobile-detect": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/mobile-detect/-/mobile-detect-1.4.5.tgz", + "integrity": "sha512-yc0LhH6tItlvfLBugVUEtgawwFU2sIe+cSdmRJJCTMZ5GEJyLxNyC/NIOAOGk67Fa8GNpOttO3Xz/1bHpXFD/g==" + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/needle": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.2" + }, + "engines": { + "node": ">= 0.10.5" + } + }, + "node_modules/node-dir/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/node-dir/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/node-environment-flags": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "dev": true, + "dependencies": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch-h2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz", + "integrity": "sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==", + "dev": true, + "dependencies": { + "http2-client": "^1.2.5" + }, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/node-readfiles": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/node-readfiles/-/node-readfiles-0.2.0.tgz", + "integrity": "sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA==", + "dev": true, + "dependencies": { + "es6-promise": "^3.2.1" + } + }, + "node_modules/node-readfiles/node_modules/es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/notistack": { + "version": "1.0.6-next.3", + "resolved": "https://registry.npmjs.org/notistack/-/notistack-1.0.6-next.3.tgz", + "integrity": "sha512-vtRMCAOyfFzfRIaJgpftwPG/gojL0JqPvEFnpoYSWWZmW80C32dXU+Pq7BrWhW6Y4yO7wv/d2toNM7QJJxdW9Q==", + "dependencies": { + "clsx": "^1.1.0", + "hoist-non-react-statics": "^3.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/notistack" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "@mui/material": "^5.0.0-rc.0", + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/notistack/node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/oas-kit-common": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/oas-kit-common/-/oas-kit-common-1.0.8.tgz", + "integrity": "sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==", + "dev": true, + "dependencies": { + "fast-safe-stringify": "^2.0.7" + } + }, + "node_modules/oas-linter": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/oas-linter/-/oas-linter-3.2.2.tgz", + "integrity": "sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ==", + "dev": true, + "dependencies": { + "@exodus/schemasafe": "^1.0.0-rc.2", + "should": "^13.2.1", + "yaml": "^1.10.0" + }, + "funding": { + "url": "https://github.com/Mermade/oas-kit?sponsor=1" + } + }, + "node_modules/oas-resolver": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/oas-resolver/-/oas-resolver-2.5.6.tgz", + "integrity": "sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ==", + "dev": true, + "dependencies": { + "node-fetch-h2": "^2.3.0", + "oas-kit-common": "^1.0.8", + "reftools": "^1.1.9", + "yaml": "^1.10.0", + "yargs": "^17.0.1" + }, + "bin": { + "resolve": "resolve.js" + }, + "funding": { + "url": "https://github.com/Mermade/oas-kit?sponsor=1" + } + }, + "node_modules/oas-schema-walker": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz", + "integrity": "sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ==", + "dev": true, + "funding": { + "url": "https://github.com/Mermade/oas-kit?sponsor=1" + } + }, + "node_modules/oas-validator": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/oas-validator/-/oas-validator-5.0.8.tgz", + "integrity": "sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw==", + "dev": true, + "dependencies": { + "call-me-maybe": "^1.0.1", + "oas-kit-common": "^1.0.8", + "oas-linter": "^3.2.2", + "oas-resolver": "^2.5.6", + "oas-schema-walker": "^1.1.5", + "reftools": "^1.1.9", + "should": "^13.2.1", + "yaml": "^1.10.0" + }, + "funding": { + "url": "https://github.com/Mermade/oas-kit?sponsor=1" + } + }, + "node_modules/oazapfts": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/oazapfts/-/oazapfts-4.12.0.tgz", + "integrity": "sha512-hNKRG4eLYceuJuqDDx7Uqsi8p3j5k83gNKSo2qnUOTiiU03sCQOjXxOqCXDbzRcuDFyK94+1PBIpotK4NoxIjw==", + "dev": true, + "dependencies": { + "@apidevtools/swagger-parser": "^10.1.0", + "lodash": "^4.17.21", + "minimist": "^1.2.8", + "swagger2openapi": "^7.0.8", + "typescript": "^5.2.2" + }, + "bin": { + "oazapfts": "lib/codegen/cli.js" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz", + "integrity": "sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==", + "dev": true, + "dependencies": { + "array.prototype.reduce": "^1.0.6", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "safe-array-concat": "^1.0.0" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/object.hasown": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-json/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/parse-ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", + "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/perfect-scrollbar": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.5.tgz", + "integrity": "sha512-dzalfutyP3e/FOpdlhVryN4AJ5XDVauVWxybSkLZmakFE2sS3y3pc4JnSprw8tGmHvkaG5Edr5T7LBTZ+WWU2g==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "8.4.33", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", + "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", + "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/postcss-load-config/node_modules/yaml": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/postcss-loader": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz", + "integrity": "sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==", + "dev": true, + "dependencies": { + "cosmiconfig": "^8.3.5", + "jiti": "^1.20.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-loader/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/postcss-loader/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/postcss-loader/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.0.tgz", + "integrity": "sha512-SaIbK8XW+MZbd0xHPf7kdfA/3eOt7vxJ72IRecn3EzuZVLr1r0orzf0MX/pN8m+NMDoo6X/SQd8oeKqGZd8PXg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-nested/node_modules/postcss-selector-parser": { + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.2.tgz", + "integrity": "sha512-HTByuKZzw7utPiDO523Tt2pLtEyK7OibUD9suEJQrPUCYQqrHr74GGX6VidMrovbf/I50mPqr8j/II6oBAuc5A==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-ms": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", + "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", + "dev": true, + "dependencies": { + "parse-ms": "^2.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "dev": true, + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/protobufjs": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", + "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-app-alias": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/react-app-alias/-/react-app-alias-2.2.2.tgz", + "integrity": "sha512-mkebUkGLEBA8A8jripu5h1e3cccGl8wWHCUmyJo43/KhaN91DO3qyCLWGWneogqkG4PWhp2JHtlCJ06YSdHVYQ==" + }, + "node_modules/react-autosuggest": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/react-autosuggest/-/react-autosuggest-10.1.0.tgz", + "integrity": "sha512-/azBHmc6z/31s/lBf6irxPf/7eejQdR0IqnZUzjdSibtlS8+Rw/R79pgDAo6Ft5QqCUTyEQ+f0FhL+1olDQ8OA==", + "dependencies": { + "es6-promise": "^4.2.8", + "prop-types": "^15.7.2", + "react-themeable": "^1.1.0", + "section-iterator": "^2.0.0", + "shallow-equal": "^1.2.1" + }, + "peerDependencies": { + "react": ">=16.3.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-draft-wysiwyg": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/react-draft-wysiwyg/-/react-draft-wysiwyg-1.15.0.tgz", + "integrity": "sha512-p1cYZcWc6/ALFBVksbFoCM3b29fGQDlZLIMrXng0TU/UElxIOF2/AWWo4L5auIYVhmqKTZ0NkNjnXOzGGuxyeA==", + "dependencies": { + "classnames": "^2.2.6", + "draftjs-utils": "^0.10.2", + "html-to-draftjs": "^1.5.0", + "linkify-it": "^2.2.0", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "draft-js": "^0.10.x || ^0.11.x", + "immutable": "3.x.x || 4.x.x", + "react": "0.13.x || 0.14.x || ^15.0.0-0 || 15.x.x || ^16.0.0-0 || ^16.x.x || ^17.x.x || ^18.x.x", + "react-dom": "0.13.x || 0.14.x || ^15.0.0-0 || 15.x.x || ^16.0.0-0 || ^16.x.x || ^17.x.x || ^18.x.x" + } + }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" + }, + "node_modules/react-hook-form": { + "version": "7.49.3", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.49.3.tgz", + "integrity": "sha512-foD6r3juidAT1cOZzpmD/gOKt7fRsDhXXZ0y28+Al1CHgX+AY1qIN9VSIIItXRq1dN68QrRwl1ORFlwjBaAqeQ==", + "engines": { + "node": ">=18", + "pnpm": "8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18" + } + }, + "node_modules/react-i18next": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-14.0.0.tgz", + "integrity": "sha512-OCrS8rHNAmnr8ggGRDxjakzihrMW7HCbsplduTm3EuuQ6fyvWGT41ksZpqbduYoqJurBmEsEVZ1pILSUWkHZng==", + "dependencies": { + "@babel/runtime": "^7.22.5", + "html-parse-stringify": "^3.0.1" + }, + "peerDependencies": { + "i18next": ">= 23.2.3", + "react": ">= 16.8.0" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/react-popper": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz", + "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==", + "dependencies": { + "react-fast-compare": "^3.0.1", + "warning": "^4.0.2" + }, + "peerDependencies": { + "@popperjs/core": "^2.0.0", + "react": "^16.8.0 || ^17 || ^18", + "react-dom": "^16.8.0 || ^17 || ^18" + } + }, + "node_modules/react-redux": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.0.tgz", + "integrity": "sha512-6qoDzIO+gbrza8h3hjMA9aq4nwVFCKFtY2iLxCtVT38Swyy2C/dJCGBXHeHLtx6qlg/8qzc2MrhOeduf5K32wQ==", + "dependencies": { + "@types/use-sync-external-store": "^0.0.3", + "use-sync-external-store": "^1.0.0" + }, + "peerDependencies": { + "@types/react": "^18.2.25", + "react": "^18.0", + "react-native": ">=0.69", + "redux": "^5.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react-native": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "6.21.3", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.21.3.tgz", + "integrity": "sha512-a0H638ZXULv1OdkmiK6s6itNhoy33ywxmUFT/xtSoVyf9VnC7n7+VT4LjVzdIHSaF5TIh9ylUgxMXksHTgGrKg==", + "dependencies": { + "@remix-run/router": "1.14.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.21.3", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.21.3.tgz", + "integrity": "sha512-kNzubk7n4YHSrErzjLK72j0B5i969GsuCGazRl3G6j1zqZBLjuSlYBdVdkDOgzGdPIffUOc9nmgiadTEVoq91g==", + "dependencies": { + "@remix-run/router": "1.14.2", + "react-router": "6.21.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/react-swipeable": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/react-swipeable/-/react-swipeable-7.0.1.tgz", + "integrity": "sha512-RKB17JdQzvECfnVj9yDZsiYn3vH0eyva/ZbrCZXZR0qp66PBRhtg4F9yJcJTWYT5Adadi+x4NoG53BxKHwIYLQ==", + "peerDependencies": { + "react": "^16.8.3 || ^17 || ^18" + } + }, + "node_modules/react-themeable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/react-themeable/-/react-themeable-1.1.0.tgz", + "integrity": "sha512-kl5tQ8K+r9IdQXZd8WLa+xxYN04lLnJXRVhHfdgwsUJr/SlKJxIejoc9z9obEkx1mdqbTw1ry43fxEUwyD9u7w==", + "dependencies": { + "object-assign": "^3.0.0" + } + }, + "node_modules/react-themeable/node_modules/object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha512-jHP15vXVGeVh1HuaA2wY6lxk+whK/x4KBG88VXeRma7CCun7iGD5qPc4eYykQ9sdQvg8jkwFKsSxHln2ybW3xQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-cache/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/recast": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.16.2.tgz", + "integrity": "sha512-O/7qXi51DPjRVdbrpNzoBQH5dnAPQNbfoOFyRiUwreTMJfIHYOEBzwuH+c0+/BTSJ3CQyKs6ILSWXhESH6Op3A==", + "dev": true, + "dependencies": { + "ast-types": "0.11.7", + "esprima": "~4.0.0", + "private": "~0.1.5", + "source-map": "~0.6.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/recast/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==" + }, + "node_modules/redux-logger": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/redux-logger/-/redux-logger-4.0.0.tgz", + "integrity": "sha512-dl+5mQjk70HIlrgOgPMAL0d0hOhBTPQcG5zPPlPZKa/Yf4lU6A37mv3Xqn3lFp0eUguSApIa2GD/YJVOIQQi5A==", + "dependencies": { + "deep-diff": "^0.3.5" + } + }, + "node_modules/redux-thunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz", + "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==", + "peerDependencies": { + "redux": "^5.0.0" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", + "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reftools": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/reftools/-/reftools-1.1.9.tgz", + "integrity": "sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w==", + "dev": true, + "funding": { + "url": "https://github.com/Mermade/oas-kit?sponsor=1" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/remove-accents": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.4.tgz", + "integrity": "sha512-EpFcOa/ISetVHEXqu+VwI96KZBmq+a8LJnGkaeFw45epGlxIZz5dhEEnNZMsQXgORu3qaMoLX4qJCzOik6ytAg==" + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/reselect": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.0.tgz", + "integrity": "sha512-aw7jcGLDpSgNDyWBQLv2cedml85qd95/iszJjN988zX1t7AVRJi19d9kto5+W7oCfQ94gyo40dVbT6g2k4/kXg==" + }, + "node_modules/reserved-words": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz", + "integrity": "sha512-0S5SrIUJ9LfpbVl4Yzij6VipUdafHrOTzvmfazSw/jeZrZtQK303OPZW+obtkaw7jQlTQppy0UvZWm9872PbRw==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, + "node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/rollup": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.5.tgz", + "integrity": "sha512-E4vQW0H/mbNMw2yLSqJyjtkHY9dslf/p0zuT1xehNRqUTBOFMqEjguDvqhXr7N7r/4ttb2jr4T41d3dncmIgbQ==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.9.5", + "@rollup/rollup-android-arm64": "4.9.5", + "@rollup/rollup-darwin-arm64": "4.9.5", + "@rollup/rollup-darwin-x64": "4.9.5", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.5", + "@rollup/rollup-linux-arm64-gnu": "4.9.5", + "@rollup/rollup-linux-arm64-musl": "4.9.5", + "@rollup/rollup-linux-riscv64-gnu": "4.9.5", + "@rollup/rollup-linux-x64-gnu": "4.9.5", + "@rollup/rollup-linux-x64-musl": "4.9.5", + "@rollup/rollup-win32-arm64-msvc": "4.9.5", + "@rollup/rollup-win32-ia32-msvc": "4.9.5", + "@rollup/rollup-win32-x64-msvc": "4.9.5", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/s": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/s/-/s-1.0.0.tgz", + "integrity": "sha512-Tz63UXhdEBvvIV6Q0a+AV2Dx1TPq+vVWNYBxyCT9TG0uqn9kySwFTjfq3C1YuGBRwYtt9Tof11L6GCKi88foqw==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.2.tgz", + "integrity": "sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "get-intrinsic": "^1.2.2", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "optional": true + }, + "node_modules/sass": { + "version": "1.69.7", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.7.tgz", + "integrity": "sha512-rzj2soDeZ8wtE2egyLXgOOHQvaC2iosZrkF6v3EUG+tBwEvhqUCzm0VP3k9gHF9LXbSrRhT5SksoI56Iw8NPnQ==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", + "dev": true, + "optional": true + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/section-iterator": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/section-iterator/-/section-iterator-2.0.0.tgz", + "integrity": "sha512-xvTNwcbeDayXotnV32zLb3duQsP+4XosHpb/F+tu6VzEZFmIjzPdNk6/O+QOOx5XTh08KL2ufdXeCO33p380pQ==" + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/set-function-length": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", + "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", + "dependencies": { + "define-data-property": "^1.1.1", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.2", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shallow-equal": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz", + "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==" + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/should": { + "version": "13.2.3", + "resolved": "https://registry.npmjs.org/should/-/should-13.2.3.tgz", + "integrity": "sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==", + "dev": true, + "dependencies": { + "should-equal": "^2.0.0", + "should-format": "^3.0.3", + "should-type": "^1.4.0", + "should-type-adaptors": "^1.0.1", + "should-util": "^1.0.0" + } + }, + "node_modules/should-equal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-2.0.0.tgz", + "integrity": "sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==", + "dev": true, + "dependencies": { + "should-type": "^1.4.0" + } + }, + "node_modules/should-format": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/should-format/-/should-format-3.0.3.tgz", + "integrity": "sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q==", + "dev": true, + "dependencies": { + "should-type": "^1.3.0", + "should-type-adaptors": "^1.0.1" + } + }, + "node_modules/should-type": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz", + "integrity": "sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ==", + "dev": true + }, + "node_modules/should-type-adaptors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz", + "integrity": "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==", + "dev": true, + "dependencies": { + "should-type": "^1.3.0", + "should-util": "^1.0.0" + } + }, + "node_modules/should-util": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/should-util/-/should-util-1.0.1.tgz", + "integrity": "sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==", + "dev": true + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/snapdragon/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-explorer": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/source-map-explorer/-/source-map-explorer-2.5.3.tgz", + "integrity": "sha512-qfUGs7UHsOBE5p/lGfQdaAj/5U/GWYBw2imEpD6UQNkqElYonkow8t+HBL1qqIl3CuGZx7n8/CQo4x1HwSHhsg==", + "dev": true, + "dependencies": { + "btoa": "^1.2.1", + "chalk": "^4.1.0", + "convert-source-map": "^1.7.0", + "ejs": "^3.1.5", + "escape-html": "^1.0.3", + "glob": "^7.1.6", + "gzip-size": "^6.0.0", + "lodash": "^4.17.20", + "open": "^7.3.1", + "source-map": "^0.7.4", + "temp": "^0.9.4", + "yargs": "^16.2.0" + }, + "bin": { + "sme": "bin/cli.js", + "source-map-explorer": "bin/cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/source-map-explorer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/source-map-explorer/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/source-map-explorer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/source-map-explorer/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/source-map-explorer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/source-map-explorer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/source-map-explorer/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/source-map-explorer/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/source-map-explorer/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/source-map-explorer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-explorer/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/source-map-explorer/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-explorer/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-explorer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-explorer/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/source-map-explorer/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/source-map-explorer/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "dev": true + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string-natural-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", + "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", + "dev": true + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/styled-components": { + "version": "6.1.8", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.8.tgz", + "integrity": "sha512-PQ6Dn+QxlWyEGCKDS71NGsXoVLKfE1c3vApkvDYS5KAK+V8fNWGhbSUEo9Gg2iaID2tjLXegEW3bZDUGpofRWw==", + "dependencies": { + "@emotion/is-prop-valid": "1.2.1", + "@emotion/unitless": "0.8.0", + "@types/stylis": "4.2.0", + "css-to-react-native": "3.2.0", + "csstype": "3.1.2", + "postcss": "8.4.31", + "shallowequal": "1.1.0", + "stylis": "4.3.1", + "tslib": "2.5.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/styled-components" + }, + "peerDependencies": { + "react": ">= 16.8.0", + "react-dom": ">= 16.8.0" + } + }, + "node_modules/styled-components/node_modules/@emotion/unitless": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", + "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" + }, + "node_modules/styled-components/node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/styled-components/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/styled-components/node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + }, + "node_modules/stylis": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz", + "integrity": "sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==" + }, + "node_modules/stylis-plugin-rtl": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/stylis-plugin-rtl/-/stylis-plugin-rtl-2.1.1.tgz", + "integrity": "sha512-q6xIkri6fBufIO/sV55md2CbgS5c6gg9EhSVATtHHCdOnbN/jcI0u3lYhNVeuI65c4lQPo67g8xmq5jrREvzlg==", + "dependencies": { + "cssjanus": "^2.0.1" + }, + "peerDependencies": { + "stylis": "4.x" + } + }, + "node_modules/stylus": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz", + "integrity": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==", + "dev": true, + "dependencies": { + "@adobe/css-tools": "^4.0.1", + "debug": "^4.3.2", + "glob": "^7.1.6", + "sax": "~1.2.4", + "source-map": "^0.7.3" + }, + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://opencollective.com/stylus" + } + }, + "node_modules/stylus/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/stylus/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/stylus/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/stylus/node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "node_modules/stylus/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "dev": true + }, + "node_modules/swagger2openapi": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/swagger2openapi/-/swagger2openapi-7.0.8.tgz", + "integrity": "sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g==", + "dev": true, + "dependencies": { + "call-me-maybe": "^1.0.1", + "node-fetch": "^2.6.1", + "node-fetch-h2": "^2.3.0", + "node-readfiles": "^0.2.0", + "oas-kit-common": "^1.0.8", + "oas-resolver": "^2.5.6", + "oas-schema-walker": "^1.1.5", + "oas-validator": "^5.0.8", + "reftools": "^1.1.9", + "yaml": "^1.10.0", + "yargs": "^17.0.1" + }, + "bin": { + "boast": "boast.js", + "oas-validate": "oas-validate.js", + "swagger2openapi": "swagger2openapi.js" + }, + "funding": { + "url": "https://github.com/Mermade/oas-kit?sponsor=1" + } + }, + "node_modules/synckit": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", + "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", + "dev": true, + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/table/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tailwindcss": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.2.tgz", + "integrity": "sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.12", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.18.2", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tailwindcss/node_modules/postcss-selector-parser": { + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/temp": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", + "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", + "dev": true, + "dependencies": { + "mkdirp": "^0.5.1", + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/temp/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/temp/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/temp/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/temp/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha512-wCVxLDcFxw7ujDxaeJC6nfl2XfHJNYs8yUYJnvMgtPEFlttP9tHSfRUv2vBe6C4hkVFPWoP1P6ZccbYjmSEkKA==", + "dev": true + }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "engines": { + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, + "node_modules/ts-migrate": { + "version": "0.1.35", + "resolved": "https://registry.npmjs.org/ts-migrate/-/ts-migrate-0.1.35.tgz", + "integrity": "sha512-EmXahqwIP0a6fE1BLKKVMgJEeYn9V+CxJ19qFJ/DzkPL4PjDI/FcgPo8D519amBPy2nnlc/x1V6R6aIeHdD87w==", + "dev": true, + "dependencies": { + "create-jest-runner": "^0.5.3", + "json5": "^2.1.1", + "json5-writer": "^0.1.8", + "ts-migrate-plugins": "^0.1.35", + "ts-migrate-server": "^0.1.33", + "updatable-log": "^0.2.0", + "yargs": "^15.0.2" + }, + "bin": { + "ts-migrate": "build/cli.js", + "ts-migrate-full": "bin/ts-migrate-full.sh" + }, + "peerDependencies": { + "typescript": ">4.0" + } + }, + "node_modules/ts-migrate-plugins": { + "version": "0.1.35", + "resolved": "https://registry.npmjs.org/ts-migrate-plugins/-/ts-migrate-plugins-0.1.35.tgz", + "integrity": "sha512-DUkx7ClKhxKYPWDha9DJTZ6LhwEUszL90uH5I/O11K/6TbA96ytln1O3HL6Pt83i4mAKOlg0mQ6AMsPtL5FFkQ==", + "dev": true, + "dependencies": { + "eslint": "^7.14.0", + "jscodeshift": "^0.13.0", + "json-schema": "^0.4.0", + "ts-migrate-server": "^0.1.33" + }, + "peerDependencies": { + "typescript": ">4.0" + } + }, + "node_modules/ts-migrate-plugins/node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/ts-migrate-plugins/node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/ts-migrate-plugins/node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/ts-migrate-plugins/node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/ts-migrate-plugins/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ts-migrate-plugins/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ts-migrate-plugins/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-migrate-plugins/node_modules/ast-types": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", + "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", + "dev": true, + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ts-migrate-plugins/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/ts-migrate-plugins/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ts-migrate-plugins/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ts-migrate-plugins/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ts-migrate-plugins/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ts-migrate-plugins/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ts-migrate-plugins/node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/ts-migrate-plugins/node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/ts-migrate-plugins/node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ts-migrate-plugins/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ts-migrate-plugins/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ts-migrate-plugins/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ts-migrate-plugins/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ts-migrate-plugins/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-migrate-plugins/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ts-migrate-plugins/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/ts-migrate-plugins/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ts-migrate-plugins/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ts-migrate-plugins/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ts-migrate-plugins/node_modules/jscodeshift": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.13.1.tgz", + "integrity": "sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.13.16", + "@babel/parser": "^7.13.16", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.12", + "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/preset-flow": "^7.13.13", + "@babel/preset-typescript": "^7.13.0", + "@babel/register": "^7.13.16", + "babel-core": "^7.0.0-bridge.0", + "chalk": "^4.1.2", + "flow-parser": "0.*", + "graceful-fs": "^4.2.4", + "micromatch": "^3.1.10", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.20.4", + "temp": "^0.8.4", + "write-file-atomic": "^2.3.0" + }, + "bin": { + "jscodeshift": "bin/jscodeshift.js" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" + } + }, + "node_modules/ts-migrate-plugins/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/ts-migrate-plugins/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ts-migrate-plugins/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ts-migrate-plugins/node_modules/recast": { + "version": "0.20.5", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz", + "integrity": "sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==", + "dev": true, + "dependencies": { + "ast-types": "0.14.2", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ts-migrate-plugins/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ts-migrate-plugins/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ts-migrate-plugins/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-migrate-plugins/node_modules/temp": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", + "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", + "dev": true, + "dependencies": { + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/ts-migrate-plugins/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ts-migrate-plugins/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ts-migrate-server": { + "version": "0.1.33", + "resolved": "https://registry.npmjs.org/ts-migrate-server/-/ts-migrate-server-0.1.33.tgz", + "integrity": "sha512-MYHy10yzL2fkb2FHFQ9f54gqc5KkaVthTjtpwS4bTroYCONDelp1hbz5nxKWaP3q2oc3kBVeGuAR91RNI+yK+g==", + "dev": true, + "dependencies": { + "@ts-morph/bootstrap": "^0.16.0", + "pretty-ms": "^7.0.1", + "updatable-log": "^0.2.0" + }, + "peerDependencies": { + "typescript": ">4.0" + } + }, + "node_modules/ts-migrate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-migrate/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/ts-migrate/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ts-migrate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ts-migrate/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/ts-migrate/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-migrate/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-migrate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ts-migrate/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-migrate/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-migrate/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-migrate/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/ts-migrate/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-migrate/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/tsconfck": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.0.1.tgz", + "integrity": "sha512-7ppiBlF3UEddCLeI1JRx5m2Ryq+xk4JrZuq4EuYXykipebaq1dV0Fhgr1hb7CkmHt32QSgOZlcqVLEtHBG4/mg==", + "dev": true, + "bin": { + "tsconfck": "bin/tsconfck.js" + }, + "engines": { + "node": "^18 || >=20" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.9.0.tgz", + "integrity": "sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-plugin-css-modules": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/typescript-plugin-css-modules/-/typescript-plugin-css-modules-5.0.2.tgz", + "integrity": "sha512-ej/Og4Y8mF+43P14P9Ik1MGqNXcXBVgO1TltkESegdnZsaaRXnaJ5CoJmTPRkg25ysQlOV6P94wNhI4VxIzlkw==", + "dev": true, + "dependencies": { + "@types/postcss-modules-local-by-default": "^4.0.0", + "@types/postcss-modules-scope": "^3.0.1", + "dotenv": "^16.0.3", + "icss-utils": "^5.1.0", + "less": "^4.1.3", + "lodash.camelcase": "^4.3.0", + "postcss": "^8.4.21", + "postcss-load-config": "^3.1.4", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "reserved-words": "^0.1.2", + "sass": "^1.58.3", + "source-map-js": "^1.0.2", + "stylus": "^0.59.0", + "tsconfig-paths": "^4.1.2" + }, + "peerDependencies": { + "typescript": ">=4.0.0" + } + }, + "node_modules/typescript-plugin-css-modules/node_modules/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/typescript-plugin-css-modules/node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.37.tgz", + "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.26.5.tgz", + "integrity": "sha512-cSb4bPFd5qgR7qr2jYAi0hlX9n5YKK2ONKkLFkxl+v/9BvC0sOpZjBHDBSXc5lWAf5ty9oZdRXytBIHzgUcerw==", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/updatable-log": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/updatable-log/-/updatable-log-0.2.0.tgz", + "integrity": "sha512-gR48/mTR6YFB+B1sNoap3nx8HFbEvDl0ej9KhlQTFZdmP8yL5fzFiCUfeHCUf1QvNnXowY1pM9iiGkPKrd0XyQ==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "figures": "^3.0.0", + "log-update": "^3.3.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/v8-compile-cache": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", + "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", + "dev": true + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vite": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.12.tgz", + "integrity": "sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==", + "dev": true, + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.32", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-svgr": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vite-plugin-svgr/-/vite-plugin-svgr-4.2.0.tgz", + "integrity": "sha512-SC7+FfVtNQk7So0XMjrrtLAbEC8qjFPifyD7+fs/E6aaNdVde6umlVVh0QuwDLdOMu7vp5RiGFsB70nj5yo0XA==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.5", + "@svgr/core": "^8.1.0", + "@svgr/plugin-jsx": "^8.1.0" + }, + "peerDependencies": { + "vite": "^2.6.0 || 3 || 4 || 5" + } + }, + "node_modules/vite-tsconfig-paths": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.1.tgz", + "integrity": "sha512-cfgJwcGOsIxXOLU/nELPny2/LUD/lcf1IbfyeKTv2bsupVbTH/xpFtdQlBmIP1GEK2CjjLxYhFfB+QODFAx5aw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "globrex": "^0.1.2", + "tsconfck": "^3.0.1" + }, + "peerDependencies": { + "vite": "*" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/web-vitals": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-3.5.1.tgz", + "integrity": "sha512-xQ9lvIpfLxUj0eSmT79ZjRoU5wIRfIr7pNukL7ZE4EcWZSmfZQqOlhuAGfkVa3EFmzPHZhWhXfm2i5ys+THVPg==" + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true + }, + "node_modules/which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", + "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..905edda --- /dev/null +++ b/package.json @@ -0,0 +1,178 @@ +{ + "name": "fuse-react-app", + "version": "10.0.1", + "private": true, + "type": "module", + "dependencies": { + "@emotion/cache": "11.11.0", + "@emotion/react": "11.11.3", + "@emotion/styled": "11.11.0", + "@hookform/resolvers": "3.3.4", + "@mui/base": "5.0.0-beta.32", + "@mui/material": "5.15.5", + "@mui/styles": "5.15.5", + "@mui/system": "5.15.5", + "@mui/x-date-pickers": "6.19.0", + "@popperjs/core": "2.11.8", + "@reduxjs/toolkit": "2.0.1", + "autosuggest-highlight": "3.3.4", + "axios": "1.6.5", + "axios-mock-adapter": "1.21.5", + "clsx": "2.1.0", + "crypto-js": "4.2.0", + "date-fns": "2.30.0", + "draft-js": "0.11.7", + "draftjs-to-html": "0.9.1", + "firebase": "10.7.1", + "framer-motion": "10.18.0", + "history": "5.3.0", + "i18next": "23.7.16", + "jwt-decode": "3.1.2", + "keycode": "2.2.1", + "lodash": "4.17.21", + "mobile-detect": "1.4.5", + "moment": "2.29.4", + "notistack": "1.0.6-next.3", + "perfect-scrollbar": "1.5.5", + "prismjs": "1.29.0", + "qs": "6.11.2", + "react": "18.2.0", + "react-app-alias": "2.2.2", + "react-autosuggest": "10.1.0", + "react-dom": "18.2.0", + "react-draft-wysiwyg": "1.15.0", + "react-hook-form": "7.49.3", + "react-i18next": "14.0.0", + "react-popper": "2.3.0", + "react-redux": "9.1.0", + "react-router": "6.21.3", + "react-router-dom": "6.21.3", + "react-swipeable": "7.0.1", + "redux-logger": "4.0.0", + "reselect": "5.1.0", + "styled-components": "6.1.8", + "stylis": "4.3.1", + "stylis-plugin-rtl": "2.1.1", + "type-fest": "4.9.0", + "web-vitals": "3.5.1", + "zod": "3.22.4" + }, + "peerDependencies": { + "autoprefixer": "10.4.16", + "postcss": "8.4.20", + "react": "18.2.0", + "react-dom": "18.2.0" + }, + "overrides": { + "react": "18.2.0", + "react-dom": "18.2.0", + "redux": "^5.0.0", + "semver": "7.5.4" + }, + "devDependencies": { + "@babel/core": "7.23.7", + "@babel/eslint-parser": "7.23.3", + "@babel/node": "7.22.19", + "@babel/parser": "7.23.6", + "@babel/plugin-proposal-private-property-in-object": "7.21.11", + "@babel/preset-env": "7.23.8", + "@babel/preset-react": "7.23.3", + "@babel/traverse": "7.23.7", + "@rtk-query/codegen-openapi": "1.2.0", + "@tailwindcss/aspect-ratio": "0.4.2", + "@tailwindcss/typography": "0.5.10", + "@types/autosuggest-highlight": "3.2.3", + "@types/babel__parser": "7.1.1", + "@types/babel__traverse": "7.20.5", + "@types/babel-traverse": "6.25.10", + "@types/crypto-js": "4.2.1", + "@types/draft-js": "0.11.17", + "@types/draftjs-to-html": "0.8.4", + "@types/glob": "8.1.0", + "@types/google-map-react": "2.1.10", + "@types/jest": "29.5.11", + "@types/js-beautify": "1.14.3", + "@types/lodash": "4.14.202", + "@types/material-ui": "0.21.16", + "@types/node": "20.11.0", + "@types/prismjs": "1.26.3", + "@types/qs": "6.9.11", + "@types/react": "18.2.47", + "@types/react-autosuggest": "10.1.11", + "@types/react-beautiful-dnd": "13.1.8", + "@types/react-dom": "18.2.18", + "@types/react-draft-wysiwyg": "1.13.8", + "@types/react-redux": "7.1.33", + "@types/react-router": "5.1.20", + "@types/react-router-dom": "5.3.3", + "@types/react-swipeable-views": "0.13.5", + "@types/redux-logger": "3.0.12", + "@types/styled-components": "5.1.34", + "@types/webpack-env": "1.18.4", + "@typescript-eslint/eslint-plugin": "6.18.1", + "@typescript-eslint/parser": "6.18.1", + "@vitejs/plugin-react": "4.2.1", + "ajv": "8.12.0", + "autoprefixer": "10.4.16", + "cross-env": "7.0.3", + "eslint": "8.56.0", + "eslint-config-airbnb": "19.0.4", + "eslint-config-prettier": "9.1.0", + "eslint-config-react-app": "7.0.1", + "eslint-plugin-flowtype": "8.0.3", + "eslint-plugin-import": "2.29.1", + "eslint-plugin-jsx-a11y": "6.8.0", + "eslint-plugin-prettier": "5.1.3", + "eslint-plugin-react": "7.33.2", + "eslint-plugin-react-hooks": "4.6.0", + "eslint-plugin-unused-imports": "3.0.0", + "espree": "9.6.1", + "glob": "10.3.10", + "immutable": "4.3.4", + "postcss": "8.4.33", + "postcss-loader": "7.3.4", + "prettier": "3.2.2", + "promise": "8.3.0", + "react-refresh": "0.14.0", + "s": "1.0.0", + "source-map-explorer": "2.5.3", + "tailwindcss": "3.3.2", + "ts-migrate": "0.1.35", + "ts-node": "10.9.2", + "typescript": "5.3.3", + "typescript-plugin-css-modules": "5.0.2", + "util": "0.12.5", + "vite": "^5.0.12", + "vite-plugin-svgr": "4.2.0", + "vite-tsconfig-paths": "4.3.1" + }, + "scripts": { + "start": "npm run dev", + "dev": "vite", + "build": "NODE_OPTIONS=--max-old-space-size=4096 tsc && vite build", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview", + "build-docs": "ts-node --esm ./src/app/main/documentation/material-ui-components/build.ts", + "ext-rename-js-to-ts": "ts-node --esm ./src/node-scripts/file-ext-rename-js-to-ts.ts", + "analyze": "react-app-rewired build && source-map-explorer 'build/static/js/*.js' --html analyze-result.html", + "postinstall": "node --loader ts-node/esm ./src/node-scripts/fuse-react-message.ts", + "poststart": "node --loader ts-node/esm ./src/node-scripts/fuse-react-message.ts", + "audit": "npm audit --production" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 3 safari version" + ] + } +} diff --git a/postcss.config.mjs b/postcss.config.mjs new file mode 100644 index 0000000..7b75c83 --- /dev/null +++ b/postcss.config.mjs @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/public/_redirects b/public/_redirects new file mode 100644 index 0000000..ad37e2c --- /dev/null +++ b/public/_redirects @@ -0,0 +1 @@ +/* /index.html 200 diff --git a/public/assets/fonts/inter/Inter-italic.var.woff2 b/public/assets/fonts/inter/Inter-italic.var.woff2 new file mode 100644 index 0000000..0387531 Binary files /dev/null and b/public/assets/fonts/inter/Inter-italic.var.woff2 differ diff --git a/public/assets/fonts/inter/Inter-roman.var.woff2 b/public/assets/fonts/inter/Inter-roman.var.woff2 new file mode 100644 index 0000000..a6efdc4 Binary files /dev/null and b/public/assets/fonts/inter/Inter-roman.var.woff2 differ diff --git a/public/assets/fonts/inter/inter.css b/public/assets/fonts/inter/inter.css new file mode 100644 index 0000000..3294b01 --- /dev/null +++ b/public/assets/fonts/inter/inter.css @@ -0,0 +1,17 @@ +@font-face { + font-family: 'Inter var'; + font-weight: 100 900; + font-display: swap; + font-style: normal; + font-named-instance: 'Regular'; + src: url("Inter-roman.var.woff2?v=3.18") format("woff2"); +} + +@font-face { + font-family: 'Inter var'; + font-weight: 100 900; + font-display: swap; + font-style: italic; + font-named-instance: 'Italic'; + src: url("Inter-italic.var.woff2?v=3.18") format("woff2"); +} diff --git a/public/assets/fonts/material-design-icons/MaterialIcons-Regular.woff2 b/public/assets/fonts/material-design-icons/MaterialIcons-Regular.woff2 new file mode 100644 index 0000000..9d1dfcc Binary files /dev/null and b/public/assets/fonts/material-design-icons/MaterialIcons-Regular.woff2 differ diff --git a/public/assets/fonts/material-design-icons/MaterialIcons.css b/public/assets/fonts/material-design-icons/MaterialIcons.css new file mode 100644 index 0000000..76d1ded --- /dev/null +++ b/public/assets/fonts/material-design-icons/MaterialIcons.css @@ -0,0 +1,36 @@ +@font-face { + font-family: 'Material Icons'; + src: url('./MaterialIcons-Regular.woff2') format('woff2'); + font-weight: normal; + font-style: normal; +} + +.material-icons { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'Material Icons' !important; + font-size: 24px; + display: inline-block; + white-space: nowrap; + word-wrap: normal; + direction: ltr; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Enable Ligatures ================ */ + letter-spacing: 0; + -webkit-font-feature-settings: "liga"; + -moz-font-feature-settings: "liga=1"; + -moz-font-feature-settings: "liga"; + -ms-font-feature-settings: "liga" 1; + font-feature-settings: "liga"; + -webkit-font-variant-ligatures: discretionary-ligatures; + font-variant-ligatures: discretionary-ligatures; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} diff --git a/public/assets/fonts/material-design-icons/MaterialIconsOutlined-Regular.woff2 b/public/assets/fonts/material-design-icons/MaterialIconsOutlined-Regular.woff2 new file mode 100644 index 0000000..89591ea Binary files /dev/null and b/public/assets/fonts/material-design-icons/MaterialIconsOutlined-Regular.woff2 differ diff --git a/public/assets/fonts/material-design-icons/MaterialIconsOutlined.css b/public/assets/fonts/material-design-icons/MaterialIconsOutlined.css new file mode 100644 index 0000000..91d26d3 --- /dev/null +++ b/public/assets/fonts/material-design-icons/MaterialIconsOutlined.css @@ -0,0 +1,36 @@ +@font-face { + font-family: 'Material Icons Outlined'; + src: url('./MaterialIconsOutlined-Regular.woff2') format('woff2'); + font-weight: normal; + font-style: normal; +} + +.material-icons { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'Material Icons Outlined' !important; + font-size: 24px; + display: inline-block; + white-space: nowrap; + word-wrap: normal; + direction: ltr; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Enable Ligatures ================ */ + letter-spacing: 0; + -webkit-font-feature-settings: "liga"; + -moz-font-feature-settings: "liga=1"; + -moz-font-feature-settings: "liga"; + -ms-font-feature-settings: "liga" 1; + font-feature-settings: "liga"; + -webkit-font-variant-ligatures: discretionary-ligatures; + font-variant-ligatures: discretionary-ligatures; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} diff --git a/public/assets/fonts/material-design-icons/MaterialIconsRound-Regular.woff2 b/public/assets/fonts/material-design-icons/MaterialIconsRound-Regular.woff2 new file mode 100644 index 0000000..d992cf1 Binary files /dev/null and b/public/assets/fonts/material-design-icons/MaterialIconsRound-Regular.woff2 differ diff --git a/public/assets/fonts/material-design-icons/MaterialIconsRound.css b/public/assets/fonts/material-design-icons/MaterialIconsRound.css new file mode 100644 index 0000000..74a021c --- /dev/null +++ b/public/assets/fonts/material-design-icons/MaterialIconsRound.css @@ -0,0 +1,36 @@ +@font-face { + font-family: 'Material Icons Round'; + src: url('./MaterialIconsRound-Regular.woff2') format('woff2'); + font-weight: normal; + font-style: normal; +} + +.material-icons { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'Material Icons Round' !important; + font-size: 24px; + display: inline-block; + white-space: nowrap; + word-wrap: normal; + direction: ltr; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Enable Ligatures ================ */ + letter-spacing: 0; + -webkit-font-feature-settings: "liga"; + -moz-font-feature-settings: "liga=1"; + -moz-font-feature-settings: "liga"; + -ms-font-feature-settings: "liga" 1; + font-feature-settings: "liga"; + -webkit-font-variant-ligatures: discretionary-ligatures; + font-variant-ligatures: discretionary-ligatures; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} diff --git a/public/assets/fonts/material-design-icons/MaterialIconsSharp-Regular.woff2 b/public/assets/fonts/material-design-icons/MaterialIconsSharp-Regular.woff2 new file mode 100644 index 0000000..99d5d4a Binary files /dev/null and b/public/assets/fonts/material-design-icons/MaterialIconsSharp-Regular.woff2 differ diff --git a/public/assets/fonts/material-design-icons/MaterialIconsSharp.css b/public/assets/fonts/material-design-icons/MaterialIconsSharp.css new file mode 100644 index 0000000..81a181e --- /dev/null +++ b/public/assets/fonts/material-design-icons/MaterialIconsSharp.css @@ -0,0 +1,36 @@ +@font-face { + font-family: 'Material Icons Sharp'; + src: url('./MaterialIconsSharp-Regular.woff2') format('woff2'); + font-weight: normal; + font-style: normal; +} + +.material-icons { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'Material Icons Sharp' !important; + font-size: 24px; + display: inline-block; + white-space: nowrap; + word-wrap: normal; + direction: ltr; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Enable Ligatures ================ */ + letter-spacing: 0; + -webkit-font-feature-settings: "liga"; + -moz-font-feature-settings: "liga=1"; + -moz-font-feature-settings: "liga"; + -ms-font-feature-settings: "liga" 1; + font-feature-settings: "liga"; + -webkit-font-variant-ligatures: discretionary-ligatures; + font-variant-ligatures: discretionary-ligatures; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} diff --git a/public/assets/fonts/material-design-icons/MaterialIconsTwoTone-Regular.woff2 b/public/assets/fonts/material-design-icons/MaterialIconsTwoTone-Regular.woff2 new file mode 100644 index 0000000..6ac7845 Binary files /dev/null and b/public/assets/fonts/material-design-icons/MaterialIconsTwoTone-Regular.woff2 differ diff --git a/public/assets/fonts/material-design-icons/MaterialIconsTwoTone.css b/public/assets/fonts/material-design-icons/MaterialIconsTwoTone.css new file mode 100644 index 0000000..6126f72 --- /dev/null +++ b/public/assets/fonts/material-design-icons/MaterialIconsTwoTone.css @@ -0,0 +1,37 @@ +@font-face { + font-family: 'Material Icons Two Tone'; + src: url('./MaterialIconsTwoTone-Regular.woff2') format('woff2'); + font-weight: normal; + font-style: normal; +} + +.material-icons { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'Material Icons Two Tone' !important; + font-size: 24px; + display: inline-block; + white-space: nowrap; + word-wrap: normal; + direction: ltr; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + filter: contrast(0.1); + + /* Enable Ligatures ================ */ + letter-spacing: 0; + -webkit-font-feature-settings: "liga"; + -moz-font-feature-settings: "liga=1"; + -moz-font-feature-settings: "liga"; + -ms-font-feature-settings: "liga" 1; + font-feature-settings: "liga"; + -webkit-font-variant-ligatures: discretionary-ligatures; + font-variant-ligatures: discretionary-ligatures; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} diff --git a/public/assets/fonts/meteocons/Read Me.txt b/public/assets/fonts/meteocons/Read Me.txt new file mode 100644 index 0000000..8491652 --- /dev/null +++ b/public/assets/fonts/meteocons/Read Me.txt @@ -0,0 +1,7 @@ +Open *demo.html* to see a list of all the glyphs in your font along with their codes/ligatures. + +To use the generated font in desktop programs, you can install the TTF font. In order to copy the character associated with each icon, refer to the text box at the bottom right corner of each glyph in demo.html. The character inside this text box may be invisible; but it can still be copied. See this guide for more info: https://icomoon.io/#docs/local-fonts + +You won't need any of the files located under the *demo-files* directory when including the generated font in your own projects. + +You can import *selection.json* back to the IcoMoon app using the *Import Icons* button (or via Main Menu → Manage Projects) to retrieve your icon selection. diff --git a/public/assets/fonts/meteocons/demo-files/demo.css b/public/assets/fonts/meteocons/demo-files/demo.css new file mode 100644 index 0000000..a91b92b --- /dev/null +++ b/public/assets/fonts/meteocons/demo-files/demo.css @@ -0,0 +1,152 @@ +body { + padding: 0; + margin: 0; + font-family: sans-serif; + font-size: 1em; + line-height: 1.5; + color: #555; + background: #fff; +} +h1 { + font-size: 1.5em; + font-weight: normal; +} +small { + font-size: .66666667em; +} +a { + color: #e74c3c; + text-decoration: none; +} +a:hover, a:focus { + box-shadow: 0 1px #e74c3c; +} +.bshadow0, input { + box-shadow: inset 0 -2px #e7e7e7; +} +input:hover { + box-shadow: inset 0 -2px #ccc; +} +input, fieldset { + font-family: sans-serif; + font-size: 1em; + margin: 0; + padding: 0; + border: 0; +} +input { + color: inherit; + line-height: 1.5; + height: 1.5em; + padding: .25em 0; +} +input:focus { + outline: none; + box-shadow: inset 0 -2px #449fdb; +} +.glyph { + font-size: 16px; + width: 15em; + padding-bottom: 1em; + margin-right: 4em; + margin-bottom: 1em; + float: left; + overflow: hidden; +} +.liga { + width: 80%; + width: calc(100% - 2.5em); +} +.talign-right { + text-align: right; +} +.talign-center { + text-align: center; +} +.bgc1 { + background: #f1f1f1; +} +.fgc1 { + color: #999; +} +.fgc0 { + color: #000; +} +p { + margin-top: 1em; + margin-bottom: 1em; +} +.mvm { + margin-top: .75em; + margin-bottom: .75em; +} +.mtn { + margin-top: 0; +} +.mtl, .mal { + margin-top: 1.5em; +} +.mbl, .mal { + margin-bottom: 1.5em; +} +.mal, .mhl { + margin-left: 1.5em; + margin-right: 1.5em; +} +.mhmm { + margin-left: 1em; + margin-right: 1em; +} +.mls { + margin-left: .25em; +} +.ptl { + padding-top: 1.5em; +} +.pbs, .pvs { + padding-bottom: .25em; +} +.pvs, .pts { + padding-top: .25em; +} +.unit { + float: left; +} +.unitRight { + float: right; +} +.size1of2 { + width: 50%; +} +.size1of1 { + width: 100%; +} +.clearfix:before, .clearfix:after { + content: " "; + display: table; +} +.clearfix:after { + clear: both; +} +.hidden-true { + display: none; +} +.textbox0 { + width: 3em; + background: #f1f1f1; + padding: .25em .5em; + line-height: 1.5; + height: 1.5em; +} +#testDrive { + display: block; + padding-top: 24px; + line-height: 1.5; +} +.fs0 { + font-size: 16px; +} +.fs1 { + font-size: 24px; +} + diff --git a/public/assets/fonts/meteocons/demo-files/demo.js b/public/assets/fonts/meteocons/demo-files/demo.js new file mode 100644 index 0000000..6f45f1c --- /dev/null +++ b/public/assets/fonts/meteocons/demo-files/demo.js @@ -0,0 +1,30 @@ +if (!('boxShadow' in document.body.style)) { + document.body.setAttribute('class', 'noBoxShadow'); +} + +document.body.addEventListener("click", function(e) { + var target = e.target; + if (target.tagName === "INPUT" && + target.getAttribute('class').indexOf('liga') === -1) { + target.select(); + } +}); + +(function() { + var fontSize = document.getElementById('fontSize'), + testDrive = document.getElementById('testDrive'), + testText = document.getElementById('testText'); + function updateTest() { + testDrive.innerHTML = testText.value || String.fromCharCode(160); + if (window.icomoonLiga) { + window.icomoonLiga(testDrive); + } + } + function updateSize() { + testDrive.style.fontSize = fontSize.value + 'px'; + } + fontSize.addEventListener('change', updateSize, false); + testText.addEventListener('input', updateTest, false); + testText.addEventListener('change', updateTest, false); + updateSize(); +}()); diff --git a/public/assets/fonts/meteocons/demo.html b/public/assets/fonts/meteocons/demo.html new file mode 100644 index 0000000..1ac342a --- /dev/null +++ b/public/assets/fonts/meteocons/demo.html @@ -0,0 +1,790 @@ + + + + + IcoMoon Demo + + + + + +
+

Font Name: meteocons (Glyphs: 47)

+
+
+

Grid Size: 16

+
+
+ + + + sunrise +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + sun +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + moon +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + sun2 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + windy +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + wind +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + snowflake +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + cloudy +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + cloud +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + weather +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + weather2 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + weather3 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + lines +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + cloud2 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + lightning +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + lightning2 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + rainy +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + rainy2 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + windy2 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + windy3 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + snowy +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + snowy2 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + snowy3 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + weather4 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + cloudy2 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + cloud3 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + lightning3 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + sun3 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + moon2 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + cloudy3 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + cloud4 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + cloud5 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + lightning4 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + rainy3 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + rainy4 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + windy4 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + windy5 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + snowy4 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + snowy5 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + weather5 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + cloudy4 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + lightning5 +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + thermometer +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + compass +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + none +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + Celsius +
+
+ + +
+
+ liga: + +
+
+
+
+ + + + Fahrenheit +
+
+ + +
+
+ liga: + +
+
+
+ + +
+

Font Test Drive

+ + +
sunrise sun moon sun2 windy wind snowflake cloudy cloud weather weather2 weather3 lines cloud2 lightning lightning2 rainy rainy2 windy2 windy3 snowy snowy2 snowy3 weather4 cloudy2 cloud3 lightning3 sun3 moon2 cloudy3 cloud4 cloud5 lightning4 rainy3 rainy4 windy4 windy5 snowy4 snowy5 weather5 cloudy4 lightning5 thermometer compass none celsius fahrenheit  +
+
+ +
+

Generated by IcoMoon

+
+ + + + diff --git a/public/assets/fonts/meteocons/fonts/meteocons.svg b/public/assets/fonts/meteocons/fonts/meteocons.svg new file mode 100644 index 0000000..f4551fb --- /dev/null +++ b/public/assets/fonts/meteocons/fonts/meteocons.svg @@ -0,0 +1,104 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/assets/fonts/meteocons/fonts/meteocons.ttf b/public/assets/fonts/meteocons/fonts/meteocons.ttf new file mode 100644 index 0000000..7e21304 Binary files /dev/null and b/public/assets/fonts/meteocons/fonts/meteocons.ttf differ diff --git a/public/assets/fonts/meteocons/fonts/meteocons.woff b/public/assets/fonts/meteocons/fonts/meteocons.woff new file mode 100644 index 0000000..5e911d2 Binary files /dev/null and b/public/assets/fonts/meteocons/fonts/meteocons.woff differ diff --git a/public/assets/fonts/meteocons/liga.js b/public/assets/fonts/meteocons/liga.js new file mode 100644 index 0000000..fcfb7a3 --- /dev/null +++ b/public/assets/fonts/meteocons/liga.js @@ -0,0 +1,109 @@ +/* A polyfill for browsers that don't support ligatures. */ +/* The script tag referring to this file must be placed before the ending body tag. */ + +/* To provide support for elements dynamically added, this script adds + method 'icomoonLiga' to the window object. You can pass element references to this method. +*/ +(function () { + 'use strict'; + function supportsProperty(p) { + var prefixes = ['Webkit', 'Moz', 'O', 'ms'], + i, + div = document.createElement('div'), + ret = p in div.style; + if (!ret) { + p = p.charAt(0).toUpperCase() + p.substr(1); + for (i = 0; i < prefixes.length; i += 1) { + ret = prefixes[i] + p in div.style; + if (ret) { + break; + } + } + } + return ret; + } + var icons; + if (!supportsProperty('fontFeatureSettings')) { + icons = { + 'sunrise': '', + 'sun': '', + 'moon': '', + 'sun2': '', + 'windy': '', + 'wind': '', + 'snowflake': '', + 'cloudy': '', + 'cloud': '', + 'weather': '', + 'weather2': '', + 'weather3': '', + 'lines': '', + 'cloud2': '', + 'lightning': '', + 'lightning2': '', + 'rainy': '', + 'rainy2': '', + 'windy2': '', + 'windy3': '', + 'snowy': '', + 'snowy2': '', + 'snowy3': '', + 'weather4': '', + 'cloudy2': '', + 'cloud3': '', + 'lightning3': '', + 'sun3': '', + 'moon2': '', + 'cloudy3': '', + 'cloud4': '', + 'cloud5': '', + 'lightning4': '', + 'rainy3': '', + 'rainy4': '', + 'windy4': '', + 'windy5': '', + 'snowy4': '', + 'snowy5': '', + 'weather5': '', + 'cloudy4': '', + 'lightning5': '', + 'thermometer': '', + 'compass': '', + 'none': '', + 'celsius': '', + 'fahrenheit': '', + '0': 0 + }; + delete icons['0']; + window.icomoonLiga = function (els) { + var classes, + el, + i, + innerHTML, + key; + els = els || document.getElementsByTagName('*'); + if (!els.length) { + els = [els]; + } + for (i = 0; ; i += 1) { + el = els[i]; + if (!el) { + break; + } + classes = el.className; + if (/icomoon-liga/.test(classes)) { + innerHTML = el.innerHTML; + if (innerHTML && innerHTML.length > 1) { + for (key in icons) { + if (icons.hasOwnProperty(key)) { + innerHTML = innerHTML.replace(new RegExp(key, 'g'), icons[key]); + } + } + el.innerHTML = innerHTML; + } + } + } + }; + window.icomoonLiga(); + } +}()); diff --git a/public/assets/fonts/meteocons/selection.json b/public/assets/fonts/meteocons/selection.json new file mode 100644 index 0000000..2b3b703 --- /dev/null +++ b/public/assets/fonts/meteocons/selection.json @@ -0,0 +1 @@ +{"IcoMoonType":"selection","icons":[{"icon":{"paths":["M355.23 576c14.876-73.042 79.376-128 156.792-128 77.418 0 141.916 54.958 156.752 128h64c-15.668-108.25-108.168-192-220.752-192-112.542 0-205.082 83.75-220.75 192h63.958zM512.022 320c17.666 0 32-14.334 32-32v-64c0-17.666-14.334-32-32-32-17.664 0-32 14.334-32 32v64c-0 17.666 14.336 32 32 32zM806.146 313.834c-12.498-12.5-32.748-12.5-45.25 0l-45.25 45.25c-12.498 12.5-12.498 32.75 0 45.25 12.502 12.5 32.752 12.5 45.25 0l45.25-45.25c12.5-12.5 12.5-32.75 0-45.25zM308.354 359.084l-45.25-45.25c-12.498-12.5-32.746-12.5-45.25 0-12.498 12.5-12.498 32.75 0 45.25l45.25 45.25c12.504 12.5 32.752 12.5 45.25 0 12.504-12.5 12.504-32.75 0-45.25zM704.022 640h-384c-17.664 0-32 14.334-32 32s14.336 32 32 32h384c17.666 0 32-14.334 32-32s-14.334-32-32-32zM640.022 768h-256c-17.664 0-32 14.334-32 32s14.336 32 32 32h256c17.666 0 32-14.334 32-32s-14.334-32-32-32z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["sunrise","dawn","weather"],"grid":16},"attrs":[],"properties":{"id":0,"order":4246,"prevSize":24,"code":59648,"name":"sunrise","ligatures":"sunrise"},"setIdx":0,"setId":2,"iconIdx":0},{"icon":{"paths":["M512 288c-123.5 0-224 100.5-224 224s100.5 224 224 224 224-100.5 224-224c0-123.5-100.5-224-224-224zM512 672c-88.376 0-160-71.624-160-160s71.624-160 160-160 160 71.624 160 160-71.624 160-160 160zM512 224c17.666 0 32-14.334 32-32v-64c0-17.666-14.334-32-32-32s-32 14.334-32 32v64c0 17.666 14.334 32 32 32zM512 800c-17.666 0-32 14.334-32 32v64c0 17.666 14.334 32 32 32s32-14.334 32-32v-64c0-17.666-14.334-32-32-32zM760.876 308.334l45.25-45.25c12.5-12.5 12.5-32.75 0-45.25s-32.75-12.5-45.25 0l-45.25 45.25c-12.5 12.5-12.5 32.75 0 45.25 12.498 12.5 32.75 12.5 45.25 0zM263.124 715.668l-45.25 45.25c-12.5 12.498-12.5 32.748 0 45.248s32.75 12.5 45.25 0l45.25-45.248c12.5-12.542 12.5-32.752 0-45.25-12.498-12.502-32.75-12.544-45.25 0zM224 512c0-17.666-14.334-32-32-32h-64c-17.666 0-32 14.334-32 32s14.334 32 32 32h64c17.666 0 32-14.334 32-32zM896 480h-64c-17.666 0-32 14.334-32 32s14.334 32 32 32h64c17.666 0 32-14.334 32-32s-14.334-32-32-32zM263.082 308.334c12.502 12.5 32.752 12.5 45.25 0 12.502-12.5 12.502-32.75 0-45.25l-45.25-45.25c-12.5-12.5-32.748-12.5-45.25 0-12.5 12.5-12.5 32.75 0 45.25l45.25 45.25zM760.918 715.624c-12.542-12.5-32.752-12.5-45.25 0-12.502 12.5-12.542 32.75 0 45.25l45.25 45.25c12.498 12.5 32.748 12.5 45.248 0s12.5-32.748 0-45.25l-45.248-45.25z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["sun","weather"],"grid":16},"attrs":[],"properties":{"id":1,"order":4247,"prevSize":24,"code":59649,"name":"sun","ligatures":"sun"},"setIdx":0,"setId":2,"iconIdx":1},{"icon":{"paths":["M699.704 686.3c-99.752 99.832-262.166 99.832-362 0-99.832-99.834-99.832-262.25 0-362.042 26.418-26.374 58.624-46.5 95.664-59.624 11.668-4.084 24.586-1.124 33.25 7.584 8.752 8.75 11.71 21.666 7.586 33.25-25.084 70.75-8 147.332 44.498 199.834 52.418 52.456 129.002 69.5 199.834 44.5 11.584-4.124 24.542-1.166 33.25 7.584 8.752 8.666 11.668 21.624 7.542 33.25-13.042 37.040-33.208 69.246-59.624 95.664zM382.954 369.508c-74.876 74.876-74.876 196.708 0 271.542 80 80.042 216.25 72.834 286-16.334-71.918 4.5-142.75-21.458-195.5-74.168-52.75-52.708-78.666-123.542-74.168-195.458-5.748 4.502-11.208 9.294-16.332 14.418z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["moon","night","weather"],"grid":16},"attrs":[],"properties":{"id":2,"order":4248,"prevSize":24,"code":59650,"name":"moon","ligatures":"moon"},"setIdx":0,"setId":2,"iconIdx":2},{"icon":{"paths":["M542 254c17.666 0 32-14.334 32-32v-64c0-17.666-14.334-32-32-32s-32 14.334-32 32v64c0 17.666 14.334 32 32 32zM542 830c-17.666 0-32 14.334-32 32v64c0 17.666 14.334 32 32 32s32-14.334 32-32v-64c0-17.666-14.334-32-32-32zM293.124 745.668l-45.25 45.25c-12.5 12.498-12.5 32.748 0 45.248s32.75 12.5 45.25 0l45.25-45.248c12.5-12.542 12.5-32.752 0-45.25-12.498-12.502-32.75-12.544-45.25 0zM254 542c0-17.666-14.334-32-32-32h-64c-17.666 0-32 14.334-32 32s14.334 32 32 32h64c17.666 0 32-14.334 32-32zM293.082 338.334c12.502 12.5 32.752 12.5 45.25 0 12.502-12.5 12.502-32.75 0-45.25l-45.25-45.25c-12.5-12.5-32.748-12.5-45.25 0-12.5 12.5-12.5 32.75 0 45.25l45.25 45.25zM670 318c-22.376 0-43.624 4.334-64 10.416-20.376-6.084-41.624-10.416-64-10.416-123.5 0-224 100.5-224 224s100.5 224 224 224c22.376 0 43.624-4.332 64-10.418 20.376 6.086 41.624 10.418 64 10.418 123.5 0 224-100.5 224-224s-100.5-224-224-224zM510.458 698.834c-73.292-14.666-128.458-79.252-128.458-156.834 0-77.584 55.166-142.166 128.458-156.834-39.79 40.458-64.458 95.75-64.458 156.834s24.668 116.376 64.458 156.834z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["sun","weather"],"grid":16},"attrs":[],"properties":{"id":3,"order":4249,"prevSize":24,"code":59651,"name":"sun2","ligatures":"sun2"},"setIdx":0,"setId":2,"iconIdx":3},{"icon":{"paths":["M990 446h-163.25c-16.126-143.584-136.874-256-284.75-256-99.624 0-187.5 50.916-239.25 128h-208.75c-17.666 0-32 14.334-32 32s14.334 32 32 32h177.666c-7.248 20.416-11.958 41.792-14.416 64h-99.25c-17.666 0-32 14.334-32 32s14.334 32 32 32h99.25c2.458 22.168 7.168 43.624 14.416 64h-171.834c-20.914 0-37.832 14.334-37.832 32s16.918 32 37.832 32h202.918c51.75 77.124 139.624 128 239.25 128 99.624 0 187.5-50.876 239.248-128h74.92c20.914 0 37.832-14.334 37.832-32s-16.918-32-37.832-32h-43.834c7.248-20.376 11.916-41.832 14.416-64h163.25c17.666 0 32-14.334 32-32s-14.334-32-32-32zM340.458 382h201.542c17.666 0 32-14.334 32-32s-14.334-32-32-32h-156.292c40.418-39.458 95.458-64 156.292-64 112.582 0 205.084 83.75 220.75 192h-441.5c3.25-22.624 9.668-44.084 19.208-64zM542 702c-60.834 0-115.876-24.582-156.292-64h312.542c-40.374 39.418-95.416 64-156.25 64zM743.5 574h-403.042c-9.54-19.916-15.958-41.376-19.208-64h441.5c-3.25 22.624-9.668 44.084-19.25 64z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["windy","weather"],"grid":16},"attrs":[],"properties":{"id":4,"order":4250,"prevSize":24,"code":59652,"name":"windy","ligatures":"windy"},"setIdx":0,"setId":2,"iconIdx":4},{"icon":{"paths":["M862 384c-53 0-96 43-96 96 0 11.292 2.334 21.916 5.876 32h-613.876c-17.666 0-32 14.334-32 32s14.334 32 32 32h704c53 0 96-43 96-96s-43-96-96-96zM158 448h384c53 0 96-43 96-96s-43-96-96-96-96 43-96 96c0 11.292 2.334 21.916 5.876 32h-293.876c-17.666 0-32 14.334-32 32s14.334 32 32 32zM670 640c-1.876 0-3.668 0.416-5.582 0.582-1.25-0.082-2.292-0.582-3.542-0.582h-493.708c-22.75 0-41.168 14.334-41.168 32s18.418 32 41.168 32h412.708c-3.542 10.084-5.876 20.752-5.876 32 0 53 43 96 96 96s96-43 96-96-43-96-96-96z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["wind","weather"],"grid":16},"attrs":[],"properties":{"id":5,"order":4251,"prevSize":24,"code":59653,"name":"wind","ligatures":"wind"},"setIdx":0,"setId":2,"iconIdx":5},{"icon":{"paths":["M765.744 584.5l-65.25-37.668c2.084-11.332 3.5-22.916 3.5-34.832 0-11.958-1.416-23.584-3.584-34.916l65.25-37.708c30.666-17.75 41.084-56.876 23.458-87.376-17.708-30.624-56.75-41.124-87.376-23.5l-65.876 38.042c-17.624-15-37.708-26.834-59.876-34.708l-0-75.834c0-35.334-28.624-64-64-64-35.332 0-64 28.666-64 64v75.792c-22.166 7.876-42.25 19.71-59.874 34.708l-65.752-37.958c-30.624-17.666-69.792-7.208-87.498 23.416-17.626 30.584-7.124 69.708 23.498 87.376l65.126 37.626c-2.124 11.376-3.502 23.042-3.502 35.042 0 11.916 1.376 23.542 3.502 34.876l-65.168 37.624c-30.668 17.668-41.168 56.876-23.458 87.5 17.622 30.5 56.79 41 87.458 23.376l65.666-37.958c17.626 15 37.75 26.916 60 34.834v75.746c0 35.376 28.668 64 64 64 35.376 0 64-28.624 64-64v-75.834c22.25-7.916 42.376-19.75 59.916-34.79l65.834 37.998c30.624 17.624 69.752 7.124 87.376-23.376 17.714-30.622 7.256-69.748-23.37-87.498zM447.994 512c0-35.334 28.624-64 64-64 35.334 0 64 28.666 64 64 0 35.332-28.666 64-64 64-35.374 0-64-28.668-64-64z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["snowflake","gear","weather"],"grid":16},"attrs":[],"properties":{"id":6,"order":4252,"prevSize":24,"code":59654,"name":"snowflake","ligatures":"snowflake"},"setIdx":0,"setId":2,"iconIdx":6},{"icon":{"paths":["M416 128c17.666 0 32-14.334 32-32v-64c0-17.666-14.334-32-32-32s-32 14.334-32 32v64c0 17.666 14.334 32 32 32zM664.876 212.334l45.25-45.25c12.498-12.5 12.498-32.75 0-45.25-12.5-12.5-32.75-12.5-45.25 0l-45.25 45.25c-12.5 12.5-12.5 32.75 0 45.25 12.498 12.5 32.75 12.5 45.25 0zM32 448h64c17.666 0 32-14.334 32-32s-14.334-32-32-32h-64c-17.666 0-32 14.334-32 32s14.334 32 32 32zM704 416c0 17.666 14.334 32 32 32h64c17.666 0 32-14.334 32-32s-14.334-32-32-32h-64c-17.666 0-32 14.334-32 32zM167.082 212.334c12.502 12.5 32.752 12.5 45.25 0 12.502-12.5 12.502-32.75 0-45.25l-45.25-45.25c-12.5-12.5-32.748-12.5-45.25 0-12.5 12.5-12.5 32.75 0 45.25l45.25 45.25zM800 512c-10.624 0-21.124 0.75-31.584 2.25-33.542-45.75-78.248-80.666-128.916-103-2.582-121.25-101.624-219.25-223.5-219.25-123.5 0-224 100.5-224 224 0 34.876 8.668 67.5 23 96.876-119.25 4.874-215 102.748-215 223.124 0 123.5 100.5 224 224 224 27.376 0 54.168-5 79.418-14.666 57.914 50.5 131.582 78.666 208.582 78.666 77.084 0 150.666-28.166 208.582-78.666 25.25 9.666 52.042 14.666 79.418 14.666 123.5 0 224-100.5 224-224s-100.5-224-224-224zM416 256c79.624 0 145.124 58.334 157.416 134.5-20.042-4-40.498-6.5-61.416-6.5-91.876 0-177 39.624-236.75 106.5-11.874-22.334-19.25-47.416-19.25-74.5 0-88.376 71.624-160 160-160zM800 896c-34.25 0-65.832-11-91.876-29.334-46.956 56.584-116.876 93.334-196.124 93.334-79.25 0-149.168-36.75-196.124-93.334-26 18.334-57.626 29.334-91.876 29.334-88.376 0-160-71.624-160-160s71.624-160 160-160c15.5 0 30.124 2.916 44.25 7.082 5.624 1.584 11.334 2.834 16.624 5.042 8.75-17.124 19.75-32.792 31.958-47.5 46.752-56.248 116.292-92.624 195.168-92.624 20.25 0 39.668 2.916 58.5 7.418 21.124 4.998 41.084 12.582 59.668 22.582 46.582 24.75 84.832 63.084 108.914 110.126 18.794-7.75 39.336-12.126 60.918-12.126 88.376 0 160 71.624 160 160s-71.624 160-160 160z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["cloudy","weather"],"grid":16},"attrs":[],"properties":{"id":7,"order":4253,"prevSize":24,"code":59655,"name":"cloudy","ligatures":"cloudy"},"setIdx":0,"setId":2,"iconIdx":7},{"icon":{"paths":["M870.124 524.332c9.75-7.25 19.624-14.376 28.458-23.208 26.416-26.458 46.542-58.666 59.584-95.708 4.166-11.584 1.208-24.584-7.544-33.25-8.708-8.75-21.624-11.708-33.246-7.584-70.792 25-147.376 8-199.792-44.5-52.5-52.502-69.584-129.042-44.5-199.792 4.084-11.626 1.166-24.542-7.584-33.292-8.666-8.666-21.624-11.668-33.25-7.582-37.084 13.164-69.25 33.246-95.668 59.664-67.082 67-87.958 162-64.958 247.584-86.5 11.042-164.25 57-216.042 127.586-10.458-1.5-20.958-2.25-31.584-2.25-123.5 0-224 100.5-224 224.002 0 123.498 100.5 223.998 224 223.998 27.376 0 54.168-5 79.418-14.668 57.914 50.5 131.582 78.668 208.582 78.668 77.084 0 150.666-28.168 208.582-78.668 25.25 9.668 52.042 14.668 79.418 14.668 123.5 0 224-100.5 224-223.998 0.002-98.878-64.832-182.044-153.874-211.67zM581.832 184.332c5.084-5.166 10.542-9.958 16.292-14.458-4.5 71.958 21.458 142.75 74.208 195.458 52.752 52.75 123.542 78.666 195.502 74.208-27.584 35.168-65.584 57.042-106.252 66.376-54.75-69.5-135.208-113.25-223.916-120.374-24.542-67.918-10.166-146.876 44.166-201.21zM800 896c-34.25 0-65.832-11-91.876-29.334-46.958 56.584-116.876 93.334-196.124 93.334-79.25 0-149.168-36.75-196.124-93.334-26 18.334-57.624 29.334-91.876 29.334-88.376 0-160-71.624-160-159.998 0-88.376 71.624-160 160-160 21.624 0 42.124 4.376 60.876 12.124 40.376-78.71 119.5-133.792 212.624-139.086 4.876-0.29 9.624-1.042 14.5-1.042 25.832 0 50.624 4.042 74 11.166 31.582 9.668 60.376 25.416 85.376 45.708 23.876 19.376 43.876 43.124 59.624 69.792 2.666 4.5 5.668 8.75 8.082 13.458 18.792-7.75 39.336-12.124 60.918-12.124 88.376 0 160 71.624 160 160s-71.624 160.002-160 160.002z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["cloud","night","weather"],"grid":16},"attrs":[],"properties":{"id":8,"order":4254,"prevSize":24,"code":59656,"name":"cloud","ligatures":"cloud"},"setIdx":0,"setId":2,"iconIdx":8},{"icon":{"paths":["M512 190c17.666 0 32-14.334 32-32v-64c0-17.666-14.334-32-32-32s-32 14.334-32 32v64c0 17.666 14.334 32 32 32zM760.876 274.334l45.25-45.25c12.498-12.5 12.498-32.75 0-45.25-12.5-12.5-32.75-12.5-45.25 0l-45.25 45.25c-12.5 12.5-12.5 32.75 0 45.25s32.75 12.5 45.25 0zM128 510h64c17.666 0 32-14.334 32-32s-14.334-32-32-32h-64c-17.666 0-32 14.334-32 32s14.334 32 32 32zM800 478c0 17.666 14.334 32 32 32h64c17.666 0 32-14.334 32-32s-14.334-32-32-32h-64c-17.666 0-32 14.334-32 32zM263.082 274.334c12.502 12.5 32.752 12.5 45.25 0 12.502-12.5 12.502-32.75 0-45.25l-45.25-45.25c-12.5-12.5-32.748-12.5-45.25 0-12.5 12.5-12.5 32.75 0 45.25l45.25 45.25zM291.25 510h64c-2.124-10.334-3.25-21.042-3.25-32 0-88.376 71.624-160 160-160 88.376 0 160 71.624 160 160 0 10.958-1.124 21.666-3.25 32h64c1.584-10.542 3.25-21.042 3.25-32 0-123.5-100.5-224-224-224s-224 100.5-224 224c0 10.958 1.75 21.458 3.25 32zM896 574h-768c-17.666 0-32 14.334-32 32s14.334 32 32 32h768c17.666 0 32-14.334 32-32s-14.334-32-32-32zM896 702h-768c-17.666 0-32 14.334-32 32s14.334 32 32 32h768c17.666 0 32-14.334 32-32s-14.334-32-32-32zM896 830h-768c-17.666 0-32 14.334-32 32s14.334 32 32 32h768c17.666 0 32-14.334 32-32s-14.334-32-32-32z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["weather"],"grid":16},"attrs":[],"properties":{"id":9,"order":4255,"prevSize":24,"code":59657,"name":"weather","ligatures":"weather"},"setIdx":0,"setId":2,"iconIdx":9},{"icon":{"paths":["M128 638.002h768c17.666 0 32-14.334 32-32s-14.334-32-32-32h-768c-17.666 0-32 14.334-32 32s14.334 32 32 32zM896 702.002h-768c-17.666 0-32 14.334-32 32s14.334 32 32 32h768c17.666 0 32-14.334 32-32s-14.334-32-32-32zM896 830.002h-768c-17.666 0-32 14.334-32 32s14.334 32 32 32h768c17.666 0 32-14.334 32-32s-14.334-32-32-32zM410.084 510c-0.666-0.666-1.502-1.084-2.166-1.75-74.876-74.876-74.876-196.668 0-271.584 5.124-5.084 10.54-9.916 16.292-14.416-4.502 71.916 21.458 142.75 74.208 195.458 52.748 52.792 123.58 78.666 195.498 74.166-5.334 6.792-11.748 12.25-17.792 18.124h83.042c10.084-16.084 18.5-33.5 25.166-52.126 4.042-11.708 1.084-24.666-7.666-33.334-8.582-8.708-21.584-11.708-33.248-7.582-70.752 24.998-147.292 7.958-199.75-44.5-52.502-52.5-69.584-129.042-44.502-199.792 4.166-11.624 1.166-24.542-7.582-33.292-8.668-8.708-21.626-11.666-33.25-7.542-37.042 13.084-69.25 33.208-95.666 59.584-86.418 86.42-97.71 219.544-34.544 318.586h81.96z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["weather"],"grid":16},"attrs":[],"properties":{"id":10,"order":4256,"prevSize":24,"code":59658,"name":"weather2","ligatures":"weather2"},"setIdx":0,"setId":2,"iconIdx":10},{"icon":{"paths":["M67.208 512c-2.084-10.334-3.208-21.042-3.208-32 0-88.376 71.624-160 160-160 21.624 0 42.124 4.416 60.876 12.166 42.458-82.832 127.706-140.166 227.124-140.166s184.668 57.334 227.082 140.166c18.794-7.75 39.336-12.166 60.918-12.166 88.376 0 160 71.624 160 160 0 10.958-1.124 21.666-3.25 32h64c1.584-10.542 3.25-21.042 3.25-32 0-123.5-100.5-224-224-224-10.624 0-21.124 0.75-31.584 2.25-59.748-81.416-154.040-130.25-256.416-130.25s-196.624 48.834-256.416 130.25c-10.46-1.5-20.96-2.25-31.584-2.25-123.5 0-224 100.5-224 224 0 10.958 1.708 21.458 3.25 32h63.958zM992 576h-960c-17.666 0-32 14.334-32 32s14.334 32 32 32h960c17.666 0 32-14.334 32-32s-14.334-32-32-32zM992 704h-960c-17.666 0-32 14.334-32 32s14.334 32 32 32h960c17.666 0 32-14.334 32-32s-14.334-32-32-32zM992 832h-960c-17.666 0-32 14.334-32 32s14.334 32 32 32h960c17.666 0 32-14.334 32-32s-14.334-32-32-32z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["weather","cloud"],"grid":16},"attrs":[],"properties":{"id":11,"order":4257,"prevSize":24,"code":59659,"name":"weather3","ligatures":"weather3"},"setIdx":0,"setId":2,"iconIdx":11},{"icon":{"paths":["M224 320h576c17.666 0 32-14.334 32-32s-14.334-32-32-32h-576c-17.666 0-32 14.334-32 32s14.334 32 32 32zM800 384h-576c-17.666 0-32 14.334-32 32s14.334 32 32 32h576c17.666 0 32-14.334 32-32s-14.334-32-32-32zM800 512h-576c-17.666 0-32 14.334-32 32s14.334 32 32 32h576c17.666 0 32-14.334 32-32s-14.334-32-32-32zM800 640h-576c-17.666 0-32 14.334-32 32s14.334 32 32 32h576c17.666 0 32-14.334 32-32s-14.334-32-32-32z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["lines","list","weather"],"grid":16},"attrs":[],"properties":{"id":12,"order":4258,"prevSize":24,"code":59660,"name":"lines","ligatures":"lines"},"setIdx":0,"setId":2,"iconIdx":12},{"icon":{"paths":["M800 320c-10.624 0-21.124 0.75-31.584 2.25-59.748-81.416-154.040-130.25-256.416-130.25s-196.624 48.834-256.416 130.25c-10.46-1.5-20.96-2.25-31.584-2.25-123.5 0-224 100.5-224 224 0 123.5 100.5 224 224 224 27.376 0 54.168-5 79.418-14.666 57.914 50.5 131.582 78.666 208.582 78.666 77.084 0 150.666-28.166 208.582-78.666 25.25 9.666 52.042 14.666 79.418 14.666 123.5 0 224-100.5 224-224 0-123.5-100.5-224-224-224zM800 704c-34.25 0-65.832-11-91.876-29.334-46.956 56.582-116.876 93.334-196.124 93.334-79.25 0-149.168-36.752-196.124-93.334-26 18.334-57.626 29.334-91.876 29.334-88.376 0-160-71.624-160-160s71.624-160 160-160c21.624 0 42.124 4.416 60.876 12.166 42.458-82.832 127.706-140.166 227.124-140.166s184.668 57.334 227.082 140.166c18.794-7.75 39.336-12.166 60.918-12.166 88.376 0 160 71.624 160 160s-71.624 160-160 160z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["cloud","weather"],"grid":16},"attrs":[],"properties":{"id":13,"order":4259,"prevSize":24,"code":59661,"name":"cloud2","ligatures":"cloud2"},"setIdx":0,"setId":2,"iconIdx":13},{"icon":{"paths":["M800 128c-10.624 0-21.124 0.75-31.584 2.25-59.748-81.416-154.040-130.25-256.416-130.25-102.376 0-196.624 48.834-256.416 130.25-10.46-1.5-20.96-2.25-31.584-2.25-123.5 0-224 100.5-224 224s100.5 224 224 224c27.376 0 54.168-5 79.418-14.666 43.082 37.542 94.832 62.582 150.208 73.042l-69.626 69.624 64 64-64 192 192-192-64-64 22-65.998c68.916-4.876 134.25-31.086 186.582-76.668 25.25 9.666 52.042 14.666 79.418 14.666 123.5 0 224-100.5 224-224s-100.5-224-224-224zM800 512c-34.25 0-65.832-11-91.876-29.334-37.876 45.666-91.124 77.25-151.75 88.208l-44.374 5.126c-79.25 0-149.168-36.75-196.124-93.334-26 18.334-57.626 29.334-91.876 29.334-88.376 0-160-71.624-160-160s71.624-160 160-160c21.624 0 42.124 4.416 60.876 12.166 42.458-82.832 127.706-140.166 227.124-140.166s184.668 57.334 227.082 140.166c18.794-7.75 39.336-12.166 60.918-12.166 88.376 0 160 71.624 160 160s-71.624 160-160 160z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["lightning","weather","cloud"],"grid":16},"attrs":[],"properties":{"id":14,"order":4260,"prevSize":24,"code":59662,"name":"lightning","ligatures":"lightning"},"setIdx":0,"setId":2,"iconIdx":14},{"icon":{"paths":["M800 128c-10.624 0-21.124 0.75-31.584 2.25-59.748-81.416-154.040-130.25-256.416-130.25-102.376 0-196.624 48.834-256.416 130.25-10.46-1.5-20.96-2.25-31.584-2.25-123.5 0-224 100.5-224 224s100.5 224 224 224c27.376 0 54.168-5 79.418-14.666 24.582 21.416 52.5 37.916 81.832 50.832l49.832-49.748c-46.916-15.252-88.332-42.542-119.208-79.752-25.998 18.334-57.624 29.334-91.874 29.334-88.376 0-160-71.624-160-160s71.624-160 160-160c21.624 0 42.124 4.416 60.876 12.166 42.458-82.832 127.706-140.166 227.124-140.166s184.668 57.334 227.082 140.166c18.794-7.75 39.336-12.166 60.918-12.166 88.376 0 160 71.624 160 160s-71.624 160-160 160c-34.25 0-65.832-11-91.876-29.334-20.75 25.042-46.624 45.334-75.25 61.168l-26.874 80.666c41.75-13.124 81-33.876 114.582-63.166 25.25 9.666 52.042 14.666 79.418 14.666 123.5 0 224-100.5 224-224s-100.5-224-224-224zM384 704l64 64-64 192 192-192-64-64 64-192-192 192z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["lightning","weather","cloud"],"grid":16},"attrs":[],"properties":{"id":15,"order":4261,"prevSize":24,"code":59663,"name":"lightning2","ligatures":"lightning2"},"setIdx":0,"setId":2,"iconIdx":15},{"icon":{"paths":["M800 192c-10.624 0-21.124 0.75-31.584 2.25-59.748-81.416-154.040-130.25-256.416-130.25s-196.624 48.834-256.416 130.25c-10.46-1.5-20.96-2.25-31.584-2.25-123.5 0-224 100.5-224 224 0 123.5 100.5 224 224 224 27.376 0 54.168-5 79.418-14.666 57.914 50.5 131.582 78.666 208.582 78.666 77.084 0 150.666-28.166 208.582-78.666 25.25 9.666 52.042 14.666 79.418 14.666 123.5 0 224-100.5 224-224 0-123.5-100.5-224-224-224zM800 576c-34.25 0-65.832-11-91.876-29.334-46.956 56.584-116.876 93.334-196.124 93.334-79.25 0-149.168-36.75-196.124-93.334-26 18.334-57.626 29.334-91.876 29.334-88.376 0-160-71.624-160-160s71.624-160 160-160c21.624 0 42.124 4.416 60.876 12.166 42.458-82.832 127.706-140.166 227.124-140.166s184.668 57.334 227.082 140.166c18.794-7.75 39.336-12.166 60.918-12.166 88.376 0 160 71.624 160 160s-71.624 160-160 160zM448 896c0 35.376 28.624 64 64 64s64-28.624 64-64-64-128-64-128-64 92.624-64 128z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["rainy","weather","cloud"],"grid":16},"attrs":[],"properties":{"id":16,"order":4262,"prevSize":24,"code":59664,"name":"rainy","ligatures":"rainy"},"setIdx":0,"setId":2,"iconIdx":16},{"icon":{"paths":["M800 128c-10.624 0-21.124 0.75-31.584 2.25-59.748-81.416-154.040-130.25-256.416-130.25s-196.624 48.834-256.416 130.25c-10.46-1.5-20.96-2.25-31.584-2.25-123.5 0-224 100.5-224 224s100.5 224 224 224c27.376 0 54.168-5 79.418-14.666 57.914 50.5 131.582 78.666 208.582 78.666 77.084 0 150.666-28.166 208.582-78.666 25.25 9.666 52.042 14.666 79.418 14.666 123.5 0 224-100.5 224-224s-100.5-224-224-224zM800 512c-34.25 0-65.832-11-91.876-29.334-46.956 56.584-116.876 93.334-196.124 93.334-79.25 0-149.168-36.75-196.124-93.334-26 18.334-57.626 29.334-91.876 29.334-88.376 0-160-71.624-160-160s71.624-160 160-160c21.624 0 42.124 4.416 60.876 12.166 42.458-82.832 127.706-140.166 227.124-140.166s184.668 57.334 227.082 140.166c18.794-7.75 39.336-12.166 60.918-12.166 88.376 0 160 71.624 160 160s-71.624 160-160 160zM450 960c0 35.376 28.624 64 64 64s64-28.624 64-64-64-128-64-128-64 92.624-64 128zM704 896c0 35.376 28.624 64 64 64s64-28.624 64-64-64-128-64-128-64 92.624-64 128zM192 768c0 35.376 28.624 64 64 64s64-28.624 64-64-64-128-64-128-64 92.624-64 128z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["rainy","weather","cloud"],"grid":16},"attrs":[],"properties":{"id":17,"order":4263,"prevSize":24,"code":59665,"name":"rainy2","ligatures":"rainy2"},"setIdx":0,"setId":2,"iconIdx":17},{"icon":{"paths":["M834.084 332.166c-47.958-49.084-114.25-77.542-183.46-77.542-69.124 0-135.376 28.458-183.33 77.542-105.626 4.918-190.042 92.376-190.042 199.168 0 109.916 89.418 199.332 199.376 199.332 11.668 0 23.208-1 34.542-2.998 41.458 27.082 89.834 41.708 139.458 41.708 49.708 0 98.126-14.626 139.544-41.708 11.414 1.998 22.916 2.998 34.582 2.998 109.874 0 199.25-89.416 199.25-199.332-0.004-106.792-84.38-194.25-189.92-199.168zM824.75 666.666c-16.624 0-32.75-2.998-48-8.834-35 30.5-79.5 47.544-126.126 47.544-46.498 0-90.998-17.044-125.998-47.544-15.25 5.836-31.5 8.834-48 8.834-74.624 0-135.376-60.75-135.376-135.332 0-74.626 60.75-135.376 135.376-135.376 6.376 0 12.75 0.458 19.042 1.376 36.208-49.166 93.082-78.708 154.956-78.708 61.876 0 118.876 29.542 155.002 78.708 6.25-0.916 12.624-1.376 19.124-1.376 74.624 0 135.25 60.75 135.25 135.376 0 74.582-60.624 135.332-135.25 135.332zM288 704h-256c-17.666 0-32 14.334-32 32s14.334 32 32 32h256c17.666 0 32-14.334 32-32s-14.334-32-32-32zM32 640h128c17.666 0 32-14.334 32-32s-14.334-32-32-32h-128c-17.666 0-32 14.334-32 32s14.334 32 32 32zM96 512h128c17.666 0 32-14.334 32-32s-14.334-32-32-32h-128c-17.666 0-32 14.334-32 32s14.334 32 32 32z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["windy","weather","cloud"],"grid":16},"attrs":[],"properties":{"id":18,"order":4264,"prevSize":24,"code":59666,"name":"windy2","ligatures":"windy2"},"setIdx":0,"setId":2,"iconIdx":18},{"icon":{"paths":["M834.084 141.584c-47.96-49.126-114.25-77.584-183.46-77.584-69.124 0-135.376 28.458-183.33 77.584-105.626 4.876-190.042 92.334-190.042 199.084 0 109.956 89.418 199.416 199.376 199.416 11.668 0 23.208-1.002 34.542-3 41.458 27.042 89.834 41.666 139.458 41.666 49.708 0 98.126-14.624 139.544-41.666 11.414 1.998 22.916 3 34.582 3 109.876 0 199.25-89.46 199.25-199.416-0.004-106.752-84.38-194.252-189.92-199.084zM824.75 476.084c-16.624 0-32.75-3-48-8.916-35 30.5-79.5 47.584-126.126 47.584-46.498 0-90.998-17.084-125.998-47.584-15.25 5.918-31.5 8.916-48 8.916-74.624 0-135.376-60.75-135.376-135.416 0-74.584 60.75-135.334 135.376-135.334 6.376 0 12.75 0.5 19.042 1.376 36.208-49.168 93.082-78.71 154.956-78.71 61.876 0 118.876 29.542 155.002 78.708 6.25-0.876 12.624-1.376 19.124-1.376 74.624 0 135.25 60.75 135.25 135.334 0 74.668-60.624 135.418-135.25 135.418zM288 513.376h-256c-17.666 0-32 14.292-32 32 0 17.706 14.334 32 32 32h256c17.666 0 32-14.294 32-32 0-17.708-14.334-32-32-32zM32 449.376h128c17.666 0 32-14.292 32-32s-14.334-32-32-32h-128c-17.666 0-32 14.292-32 32s14.334 32 32 32zM96 321.376h128c17.666 0 32-14.292 32-32s-14.334-32-32-32h-128c-17.666 0-32 14.292-32 32s14.334 32 32 32zM448 768c0 35.376 28.624 64 64 64s64-28.624 64-64-64-128-64-128-64 92.624-64 128zM704 896c0 35.376 28.624 64 64 64s64-28.624 64-64-64-128-64-128-64 92.624-64 128z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["windy","rainy","weather","cloud"],"grid":16},"attrs":[],"properties":{"id":19,"order":4265,"prevSize":24,"code":59667,"name":"windy3","ligatures":"windy3"},"setIdx":0,"setId":2,"iconIdx":19},{"icon":{"paths":["M652.084 887.376l-36-20.752c1.084-6.248 1.916-12.622 1.916-19.248 0-6.624-0.832-13-2-19.25l36.084-20.792c16.834-9.834 22.582-31.458 12.916-48.208-9.752-16.958-31.334-22.75-48.25-13l-36.376 21c-9.752-8.292-20.75-14.792-33-19.208v-41.792c0-19.542-15.876-35.376-35.376-35.376s-35.332 15.834-35.332 35.376v41.75c-12.252 4.376-23.292 10.958-33.042 19.25l-36.292-21c-16.958-9.75-38.584-4-48.334 12.958-9.75 16.834-3.876 38.5 13 48.252l35.918 20.75c-1.168 6.292-1.918 12.668-1.918 19.292 0 6.626 0.75 13 1.918 19.248l-35.916 20.75c-16.918 9.75-22.75 31.5-13 48.376s31.376 22.624 48.25 12.876l36.334-20.876c9.748 8.25 20.792 14.75 33.084 19.124v41.876c0 19.498 15.832 35.248 35.332 35.248s35.376-15.75 35.376-35.248v-41.876c12.25-4.376 23.376-10.876 33.042-19.25l36.334 21c16.916 9.75 38.498 4 48.25-12.876 9.748-16.874 3.998-38.5-12.918-48.374zM512 882.75c-19.5 0-35.376-15.876-35.376-35.376s15.876-35.292 35.376-35.292 35.334 15.792 35.334 35.292-15.834 35.376-35.334 35.376zM800 128c-10.624 0-21.124 0.75-31.584 2.25-59.748-81.416-154.040-130.25-256.416-130.25s-196.624 48.834-256.416 130.25c-10.46-1.5-20.96-2.25-31.584-2.25-123.5 0-224 100.5-224 224s100.5 224 224 224c27.376 0 54.168-5 79.418-14.666 57.914 50.5 131.582 78.666 208.582 78.666 77.084 0 150.666-28.166 208.582-78.666 25.25 9.666 52.042 14.666 79.418 14.666 123.5 0 224-100.5 224-224s-100.5-224-224-224zM800 512c-34.25 0-65.832-11-91.876-29.334-46.956 56.584-116.876 93.334-196.124 93.334-79.25 0-149.168-36.75-196.124-93.334-26 18.334-57.626 29.334-91.876 29.334-88.376 0-160-71.624-160-160s71.624-160 160-160c21.624 0 42.124 4.416 60.876 12.166 42.458-82.832 127.706-140.166 227.124-140.166s184.668 57.334 227.082 140.166c18.794-7.75 39.336-12.166 60.918-12.166 88.376 0 160 71.624 160 160s-71.624 160-160 160z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["snowy","weather","cloud"],"grid":16},"attrs":[],"properties":{"id":20,"order":4266,"prevSize":24,"code":59668,"name":"snowy","ligatures":"snowy"},"setIdx":0,"setId":2,"iconIdx":20},{"icon":{"paths":["M652.084 695.376l-36-20.75c1.084-6.25 1.916-12.624 1.916-19.25 0-6.624-0.832-13-2-19.25l36.084-20.792c16.834-9.834 22.582-31.458 12.916-48.208-9.752-16.958-31.334-22.75-48.25-13l-36.376 21c-9.754-8.292-20.75-14.792-33-19.208v-41.792c0-19.542-15.876-35.376-35.376-35.376s-35.332 15.834-35.332 35.376v41.75c-12.252 4.376-23.292 10.958-33.042 19.25l-36.292-21c-16.958-9.75-38.584-4-48.334 12.958-9.75 16.834-3.876 38.5 13 48.252l35.918 20.75c-1.168 6.292-1.918 12.668-1.918 19.292s0.75 13 1.918 19.246l-35.916 20.752c-16.918 9.75-22.75 31.5-13 48.376s31.376 22.624 48.25 12.876l36.334-20.876c9.748 8.25 20.792 14.75 33.084 19.124v41.876c0 19.498 15.832 35.248 35.332 35.248s35.376-15.75 35.376-35.248v-41.876c12.25-4.376 23.376-10.876 33.042-19.25l36.334 21c16.916 9.75 38.498 4 48.25-12.876 9.748-16.874 3.998-38.5-12.918-48.374zM512 690.75c-19.5 0-35.376-15.876-35.376-35.376s15.876-35.292 35.376-35.292 35.334 15.792 35.334 35.292-15.834 35.376-35.334 35.376zM800 128c-10.624 0-21.124 0.75-31.584 2.25-59.748-81.416-154.040-130.25-256.416-130.25-102.376 0-196.624 48.834-256.416 130.25-10.46-1.5-20.96-2.25-31.584-2.25-123.5 0-224 100.5-224 224s100.5 224 224 224c23.624 0 46.668-4.416 68.876-11.668 2.124-10.164 5.458-20.082 10.75-29.29 7.876-13.708 19.124-24.624 32-33.004-6.624-6.458-13.876-12.208-19.75-19.376-26 18.338-57.626 29.338-91.876 29.338-88.376 0-160-71.624-160-160 0-88.376 71.624-160 160-160 21.624 0 42.124 4.416 60.876 12.166 42.458-82.832 127.706-140.166 227.124-140.166s184.668 57.334 227.082 140.166c18.794-7.75 39.336-12.166 60.918-12.166 88.376 0 160 71.624 160 160 0 88.376-71.624 160-160 160-34.25 0-65.832-11-91.876-29.334-5.876 7.166-13.208 12.918-19.792 19.376 12.918 8.414 24.25 19.376 32.084 33.124 5.416 9.292 8.708 19.168 10.832 29.166 22.128 7.252 45.128 11.668 68.752 11.668 123.5 0 224-100.5 224-224s-100.5-224-224-224z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["snowy","weather","cloud"],"grid":16},"attrs":[],"properties":{"id":21,"order":4267,"prevSize":24,"code":59669,"name":"snowy2","ligatures":"snowy2"},"setIdx":0,"setId":2,"iconIdx":21},{"icon":{"paths":["M652.084 887.376l-36-20.752c1.084-6.248 1.916-12.622 1.916-19.248 0-6.624-0.832-13-2-19.25l36.084-20.792c16.834-9.834 22.582-31.458 12.916-48.208-9.752-16.958-31.334-22.75-48.25-13l-36.376 21c-9.752-8.292-20.75-14.792-33-19.208v-41.792c0-19.542-15.876-35.376-35.376-35.376s-35.332 15.834-35.332 35.376v41.75c-12.252 4.376-23.292 10.958-33.042 19.25l-36.292-21c-16.958-9.75-38.584-4-48.334 12.958-9.75 16.834-3.876 38.5 13 48.252l35.918 20.75c-1.168 6.292-1.918 12.668-1.918 19.292 0 6.626 0.75 13 1.918 19.248l-35.916 20.75c-16.918 9.75-22.75 31.5-13 48.376s31.376 22.624 48.25 12.876l36.334-20.876c9.748 8.25 20.792 14.75 33.084 19.124v41.876c0 19.498 15.832 35.248 35.332 35.248s35.376-15.75 35.376-35.248v-41.876c12.25-4.376 23.376-10.876 33.042-19.25l36.334 21c16.916 9.75 38.498 4 48.25-12.876 9.748-16.874 3.998-38.5-12.918-48.374zM512 882.75c-19.5 0-35.376-15.876-35.376-35.376s15.876-35.292 35.376-35.292 35.334 15.792 35.334 35.292-15.834 35.376-35.334 35.376zM948.332 792.5l-24.166-6.416c-0.582-7.666-2.416-14.958-5.792-21.958l17.542-17.542c8.25-8.25 8.208-21.584 0-29.708-8.166-8.208-21.416-8.25-29.666 0l-17.582 17.5c-6.918-3.25-14.292-5.124-21.918-5.75l-6.418-24.124c-2.998-11.166-14.5-17.876-25.748-14.876-11.208 3.042-17.75 14.542-14.834 25.75l6.418 23.792c-3.168 2.168-6.168 4.584-9 7.334-2.75 2.834-5.084 5.832-7.252 8.918l-23.792-6.418c-11.208-2.998-22.792 3.752-25.792 14.876-2.998 11.25 3.752 22.708 14.834 25.75l24 6.458c0.668 7.542 2.584 14.916 5.958 21.918l-17.624 17.624c-8.166 8.208-8.124 21.458 0.084 29.624 8.166 8.166 21.416 8.25 29.584 0.084l17.664-17.666c6.918 3.414 14.336 5.332 22.002 5.914l6.332 24.042c3.084 11.208 14.5 17.876 25.752 14.876 11.166-3 17.914-14.498 14.916-25.834l-6.418-23.792c3-2.124 6.084-4.5 8.918-7.25 2.75-2.792 5.084-5.876 7.248-8.958l23.834 6.418c11.208 3 22.75-3.708 25.708-14.834 3-11.17-3.624-22.668-14.792-25.752zM876.624 805.876c-8.25 8.25-21.542 8.208-29.75 0-8.124-8.124-8.208-21.458 0-29.708 8.208-8.166 21.542-8.166 29.75 0 8.126 8.208 8.126 21.582 0 29.708zM237.876 685l-23.75 6.376c-2.208-3-4.5-6.042-7.292-8.876-2.832-2.75-5.832-5.124-8.958-7.25l6.376-23.876c3-11.208-3.668-22.75-14.75-25.708-11.25-3-22.75 3.668-25.75 14.834l-6.5 24.124c-7.624 0.624-14.916 2.5-21.876 5.792l-17.624-17.542c-8.25-8.25-21.5-8.208-29.668 0-8.208 8.208-8.208 21.5 0 29.708l17.542 17.542c-3.292 7-5.208 14.376-5.792 21.958l-24.084 6.416c-11.25 3.084-17.918 14.5-14.916 25.75 3.042 11.166 14.542 17.75 25.792 14.834l23.75-6.46c2.124 3.208 4.5 6.21 7.376 9.002 2.75 2.75 5.75 5.208 8.876 7.25l-6.376 23.792c-3 11.25 3.668 22.834 14.832 25.834 11.252 3 22.668-3.666 25.668-14.876l6.5-24c7.624-0.624 15-2.542 22-5.876l17.582 17.584c8.168 8.248 21.418 8.082 29.668-0.084 8.124-8.124 8.25-21.416 0-29.624l-17.624-17.624c3.376-6.92 5.376-14.376 5.876-22.002l24.124-6.376c11.124-3.042 17.792-14.5 14.792-25.75-3.002-11.12-14.502-17.788-25.794-14.872zM177.124 741.916c-8.208 8.208-21.5 8.208-29.75 0-8.124-8.166-8.124-21.542 0-29.666 8.25-8.166 21.542-8.166 29.75 0s8.126 21.5 0 29.666zM1024 352c0-123.5-100.5-224-224-224-10.624 0-21.124 0.75-31.584 2.25-59.748-81.416-154.040-130.25-256.416-130.25s-196.624 48.834-256.416 130.25c-10.46-1.5-20.96-2.25-31.584-2.25-123.5 0-224 100.5-224 224s100.5 224 224 224c27.376 0 54.168-5 79.418-14.666 57.914 50.5 131.582 78.666 208.582 78.666 77.084 0 150.666-28.166 208.582-78.666 25.25 9.666 52.042 14.666 79.418 14.666 123.5 0 224-100.5 224-224zM708.124 482.666c-46.956 56.584-116.876 93.334-196.124 93.334-79.25 0-149.168-36.75-196.124-93.334-26 18.334-57.626 29.334-91.876 29.334-88.376 0-160-71.624-160-160s71.624-160 160-160c21.624 0 42.124 4.416 60.876 12.166 42.458-82.832 127.706-140.166 227.124-140.166s184.668 57.334 227.082 140.166c18.794-7.75 39.336-12.166 60.918-12.166 88.376 0 160 71.624 160 160s-71.624 160-160 160c-34.25 0-65.832-11-91.876-29.334z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["snowy","weather","cloud"],"grid":16},"attrs":[],"properties":{"id":22,"order":4268,"prevSize":24,"code":59670,"name":"snowy3","ligatures":"snowy3"},"setIdx":0,"setId":2,"iconIdx":22},{"icon":{"paths":["M800 128c-10.624 0-21.124 0.75-31.584 2.25-59.748-81.416-154.040-130.25-256.416-130.25s-196.624 48.834-256.416 130.25c-10.46-1.5-20.96-2.25-31.584-2.25-123.5 0-224 100.5-224 224s100.5 224 224 224c27.376 0 54.168-5 79.418-14.666 57.914 50.5 131.582 78.666 208.582 78.666 77.084 0 150.666-28.166 208.582-78.666 25.25 9.666 52.042 14.666 79.418 14.666 123.5 0 224-100.5 224-224s-100.5-224-224-224zM800 512c-19.418 0-38.418-3.5-56.5-10.416l-36-13.834-29 25.334c-46.5 40.582-105.624 62.916-166.5 62.916s-120-22.334-166.5-62.916l-29-25.334-36 13.834c-18 6.916-37.082 10.416-56.5 10.416-88.25 0-160-71.792-160-160s71.75-160 160-160c7.584 0 15 0.542 22.5 1.584l37.916 5.5 22.708-30.916c48.626-66.21 123.294-104.168 204.876-104.168 81.624 0 156.25 37.916 204.834 104.126l22.75 30.958 37.998-5.5c7.418-1.042 14.834-1.584 22.418-1.584 88.25 0 160 71.792 160 160s-71.75 160-160 160zM192 640c-35.376 0-64 28.624-64 64s28.624 64 64 64 64-28.624 64-64-28.624-64-64-64zM512 704c-35.376 0-64 28.624-64 64s28.624 64 64 64 64-28.624 64-64-28.624-64-64-64zM832 640c-35.376 0-64 28.624-64 64s28.624 64 64 64 64-28.624 64-64-28.624-64-64-64zM704 896c-35.376 0-64 28.624-64 64s28.624 64 64 64 64-28.624 64-64-28.624-64-64-64zM320 896c-35.376 0-64 28.624-64 64s28.624 64 64 64 64-28.624 64-64-28.624-64-64-64z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["weather","cloud"],"grid":16},"attrs":[],"properties":{"id":23,"order":4269,"prevSize":24,"code":59671,"name":"weather4","ligatures":"weather4"},"setIdx":0,"setId":2,"iconIdx":23},{"icon":{"paths":["M1024 480.002c0-98.334-80-178.292-178.334-178.292-4.792 0-9.542 0.208-14.292 0.582-46.25-57.708-115.958-91.956-191.376-91.956-75.376 0-145.124 34.248-191.376 91.958-4.75-0.376-9.542-0.582-14.376-0.582-98.246-0.002-178.246 79.956-178.246 178.29 0 10.292 1.376 20.208 3 30.084-1.084 1.416-2.376 2.708-3.416 4.166-10.458-1.5-20.958-2.25-31.584-2.25-123.5 0-224 100.498-224 223.998 0 123.502 100.5 224 224 224 27.376 0 54.168-5 79.418-14.666 57.914 50.5 131.582 78.666 208.582 78.666 77.084 0 150.666-28.166 208.582-78.666 25.25 9.666 52.042 14.666 79.418 14.666 123.5 0 224-100.498 224-224 0-51.376-18.084-98.166-47.332-135.998 29.164-31.792 47.332-73.666 47.332-120zM800 896c-34.25 0-65.832-10.998-91.876-29.332-46.958 56.582-116.876 93.332-196.124 93.332-79.25 0-149.168-36.75-196.124-93.332-26 18.334-57.624 29.332-91.876 29.332-88.376 0-160-71.624-160-160s71.624-159.998 160-159.998c21.624 0 42.124 4.376 60.876 12.124 1.124-2.124 2.5-4 3.624-6.042 11.25-20.542 25.124-39.376 41.332-56.084 46.168-47.832 110.334-78 182.168-78 99.418 0 184.668 57.332 227.082 140.124 11.292-4.624 23.336-7.626 35.75-9.624l25.168-2.5c24.668 0 47.75 6.084 68.624 16 22.624 10.832 42.042 26.748 57.292 46.376 21 27.042 34.084 60.708 34.084 97.624 0 88.376-71.624 160-160 160zM931.124 555.25c-36.958-26.916-82-43.248-131.124-43.248-10.624 0-21.124 0.75-31.584 2.25-59.748-81.416-154.042-130.25-256.416-130.25-68.25 0-132.624 22.084-185.876 60.668 14.958-45.708 57.458-78.958 108.124-78.958 15.5 0 30.124 3.124 43.5 8.664 30.376-59.124 91.25-100.040 162.25-100.040s131.916 40.914 162.168 100.040c13.458-5.54 28.166-8.664 43.498-8.664 63.168 0 114.334 51.166 114.334 114.292 0.002 28.956-11.122 55.080-28.874 75.246z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["cloudy","weather","clouds"],"grid":16},"attrs":[],"properties":{"id":24,"order":4270,"prevSize":24,"code":59672,"name":"cloudy2","ligatures":"cloudy2"},"setIdx":0,"setId":2,"iconIdx":24},{"icon":{"paths":["M1024 269.666c0-98.292-80-178.248-178.334-178.248-4.792 0-9.542 0.166-14.292 0.54-46.25-57.666-115.956-91.958-191.374-91.958-75.376 0-145.124 34.292-191.376 91.958-4.75-0.374-9.542-0.54-14.376-0.54-98.248 0-178.248 79.958-178.248 178.248 0 10.292 1.376 20.25 3 30.084-1.084 1.416-2.376 2.708-3.416 4.166-10.458-1.5-20.958-2.25-31.584-2.25-123.5 0-224 100.5-224 224 0 123.502 100.5 224 224 224 27.376 0 54.168-4.998 79.418-14.666 36.708 32 80.208 53.876 126.414 66.416l-45.832 30.584 64 64-64 128 192-128-64-64 9.624-19.166c73.5-2.25 143.5-29.458 198.958-77.834 25.25 9.668 52.042 14.666 79.418 14.666 123.5 0 224-100.498 224-224 0-51.332-18.084-98.166-47.332-136 29.164-31.75 47.332-73.624 47.332-120zM800 685.666c-34.25 0-65.832-11-91.876-29.292-38 45.792-91.5 77.458-152.458 88.25l-47.542 4.624c-77.624-1.248-146.124-37.248-192.248-92.872-26 18.292-57.624 29.292-91.876 29.292-88.376 0-160-71.582-160-160 0-88.334 71.624-160 160-160 21.624 0 42.124 4.418 60.876 12.166 1.124-2.166 2.5-4 3.624-6.084 11.25-20.542 25.124-39.334 41.332-56.084 46.168-47.792 110.334-78 182.168-78 99.418 0 184.668 57.334 227.082 140.166 11.292-4.666 23.336-7.666 35.75-9.666l25.168-2.5c24.668 0 47.75 6.084 68.624 16 22.624 10.834 42.042 26.75 57.292 46.416 21 27.042 34.084 60.668 34.084 97.584 0 88.418-71.624 160-160 160zM931.124 344.916c-36.958-26.876-82-43.25-131.124-43.25-10.624 0-21.124 0.75-31.584 2.25-59.748-81.374-154.040-130.25-256.416-130.25-68.25 0-132.624 22.124-185.876 60.708 14.958-45.706 57.458-78.956 108.124-78.956 15.5 0 30.124 3.124 43.5 8.666 30.376-59.168 91.252-100.084 162.252-100.084s131.916 40.916 162.168 100.084c13.458-5.542 28.166-8.666 43.498-8.666 63.168 0 114.334 51.166 114.334 114.248 0 29-11.124 55.126-28.876 75.25z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["cloud","lightning","weather"],"grid":16},"attrs":[],"properties":{"id":25,"order":4271,"prevSize":24,"code":59673,"name":"cloud3","ligatures":"cloud3"},"setIdx":0,"setId":2,"iconIdx":25},{"icon":{"paths":["M384 768l64 64-64 192 192-192-64-64 64-128-192 128zM1024 269.666c0-98.292-80-178.248-178.334-178.248-4.792 0-9.542 0.166-14.292 0.54-46.25-57.666-115.956-91.958-191.374-91.958-75.376 0-145.124 34.292-191.376 91.958-4.75-0.374-9.542-0.54-14.376-0.54-98.248 0-178.248 79.958-178.248 178.248 0 10.292 1.376 20.25 3 30.084-1.084 1.416-2.376 2.708-3.416 4.166-10.458-1.5-20.958-2.25-31.584-2.25-123.5 0-224 100.5-224 224 0 123.502 100.5 224 224 224 27.376 0 54.168-4.998 79.418-14.666 2.208 1.918 4.832 3.25 7.082 5.124l56.624-37.75c-18.876-13.376-36.5-28.25-51.25-46-26 18.292-57.624 29.292-91.876 29.292-88.376 0-160-71.582-160-160 0-88.334 71.624-160 160-160 21.624 0 42.124 4.418 60.876 12.166 1.124-2.166 2.5-4 3.624-6.084 11.25-20.542 25.124-39.334 41.332-56.084 46.168-47.792 110.334-78 182.168-78 99.418 0 184.668 57.334 227.082 140.166 11.292-4.666 23.336-7.666 35.75-9.666l25.168-2.5c24.668 0 47.75 6.084 68.624 16 22.624 10.834 42.042 26.75 57.292 46.416 21 27.042 34.084 60.668 34.084 97.584 0 88.418-71.624 160-160 160-34.25 0-65.832-11-91.876-29.292-28 33.75-64.876 59.124-106.292 75.124l-11.958 23.876 36.5 36.5c34.124-13.292 66.042-32.376 94.208-56.876 25.25 9.668 52.042 14.666 79.418 14.666 123.5 0 224-100.498 224-224 0-51.332-18.084-98.166-47.332-136 29.166-31.746 47.334-73.62 47.334-119.996zM931.124 344.916c-36.958-26.876-82-43.25-131.124-43.25-10.624 0-21.124 0.75-31.584 2.25-59.748-81.374-154.040-130.25-256.416-130.25-68.25 0-132.624 22.124-185.876 60.708 14.958-45.706 57.458-78.956 108.124-78.956 15.5 0 30.124 3.124 43.5 8.666 30.376-59.168 91.252-100.084 162.252-100.084s131.916 40.916 162.168 100.084c13.458-5.542 28.166-8.666 43.498-8.666 63.168 0 114.334 51.166 114.334 114.248 0 29-11.124 55.126-28.876 75.25z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["lightning","clouds","weather"],"grid":16},"attrs":[],"properties":{"id":26,"order":4272,"prevSize":24,"code":59674,"name":"lightning3","ligatures":"lightning3"},"setIdx":0,"setId":2,"iconIdx":26},{"icon":{"paths":["M512 288c-123.5 0-224 100.5-224 224 0 123.498 100.5 224 224 224s224-100.502 224-224c0-123.5-100.5-224-224-224zM512 224c17.666 0 32-14.292 32-32v-64c0-17.666-14.334-32-32-32-17.708 0-32 14.334-32 32v64c0 17.708 14.292 32 32 32zM512 800c-17.708 0-32 14.334-32 32v64c0 17.708 14.292 32 32 32 17.666 0 32-14.292 32-32v-64c0-17.666-14.334-32-32-32zM760.834 308.334l45.25-45.25c12.5-12.5 12.5-32.75 0-45.25-12.502-12.5-32.75-12.5-45.25 0l-45.25 45.25c-12.502 12.5-12.502 32.75 0 45.25 12.5 12.498 32.748 12.498 45.25 0zM263.082 715.708l-45.246 45.25c-12.504 12.5-12.504 32.752 0 45.25 12.498 12.5 32.746 12.5 45.246 0l45.25-45.25c12.502-12.582 12.502-32.75 0-45.25-12.498-12.5-32.748-12.584-45.25 0zM224 512c0-17.666-14.334-32-32-32h-64c-17.708 0-32 14.334-32 32 0 17.708 14.292 32 32 32h64c17.666 0 32-14.292 32-32zM896 480h-64c-17.708 0-32 14.334-32 32 0 17.708 14.292 32 32 32h64c17.666 0 32-14.292 32-32 0-17.666-14.334-32-32-32zM263.042 308.334c12.498 12.5 32.75 12.5 45.25 0 12.498-12.5 12.498-32.75 0-45.25l-45.25-45.25c-12.5-12.5-32.752-12.5-45.25 0-12.5 12.5-12.5 32.75 0 45.25l45.25 45.25zM760.918 715.624c-12.586-12.5-32.752-12.5-45.25 0-12.5 12.498-12.586 32.75 0 45.25l45.25 45.25c12.498 12.498 32.748 12.498 45.25 0 12.498-12.5 12.498-32.752 0-45.25l-45.25-45.25z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["sun","weather"],"grid":16},"attrs":[],"properties":{"id":27,"order":4273,"prevSize":24,"code":59675,"name":"sun3","ligatures":"sun3"},"setIdx":0,"setId":2,"iconIdx":27},{"icon":{"paths":["M496.164 527.864c-63.040-63.084-79.958-154.21-52.040-233.084-30.5 10.79-59.336 27.666-83.708 52.040-87.502 87.5-87.502 229.334 0 316.79 87.458 87.46 229.25 87.504 316.748 0 24.458-24.372 41.292-53.208 52.042-83.708-78.83 27.918-169.998 11-233.042-52.038z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["moon","night","weather"],"grid":16},"attrs":[],"properties":{"id":28,"order":4274,"prevSize":24,"code":59676,"name":"moon2","ligatures":"moon2"},"setIdx":0,"setId":2,"iconIdx":28},{"icon":{"paths":["M416 128c17.666 0 32-14.334 32-32v-64c0-17.666-14.334-32-32-32s-32 14.334-32 32v64c0 17.666 14.334 32 32 32zM664.876 212.334l45.25-45.25c12.498-12.5 12.498-32.75 0-45.25-12.5-12.5-32.75-12.5-45.25 0l-45.25 45.25c-12.5 12.5-12.5 32.75 0 45.25 12.498 12.5 32.75 12.5 45.25 0zM32 448h64c17.666 0 32-14.334 32-32s-14.334-32-32-32h-64c-17.666 0-32 14.334-32 32s14.334 32 32 32zM704 416c0 17.666 14.334 32 32 32h64c17.666 0 32-14.334 32-32s-14.334-32-32-32h-64c-17.666 0-32 14.334-32 32zM167.082 212.334c12.502 12.5 32.752 12.5 45.25 0 12.502-12.5 12.502-32.75 0-45.25l-45.25-45.25c-12.5-12.5-32.748-12.5-45.25 0-12.5 12.5-12.5 32.75 0 45.25l45.25 45.25zM800 512c-10.624 0-21.124 0.75-31.584 2.25-33.542-45.75-78.248-80.666-128.916-103-2.582-121.25-101.624-219.25-223.5-219.25-123.5 0-224 100.5-224 224 0 34.876 8.668 67.5 23 96.876-119.25 4.874-215 102.748-215 223.124 0 123.5 100.5 224 224 224 27.376 0 54.168-5 79.418-14.666 57.914 50.5 131.582 78.666 208.582 78.666 77.084 0 150.666-28.166 208.582-78.666 25.25 9.666 52.042 14.666 79.418 14.666 123.5 0 224-100.5 224-224s-100.5-224-224-224zM512 384c-91.876 0-177 39.624-236.75 106.5-11.874-22.334-19.25-47.416-19.25-74.5 0-88.376 71.624-160 160-160 79.624 0 145.124 58.334 157.416 134.5-20.040-4-40.498-6.5-61.416-6.5z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["cloudy","weather"],"grid":16},"attrs":[],"properties":{"id":29,"order":4275,"prevSize":24,"code":59677,"name":"cloudy3","ligatures":"cloudy3"},"setIdx":0,"setId":2,"iconIdx":29},{"icon":{"paths":["M870.124 524.332c9.75-7.25 19.624-14.374 28.458-23.208 26.416-26.458 46.542-58.666 59.584-95.708 4.166-11.584 1.208-24.584-7.544-33.25-8.708-8.75-21.624-11.708-33.246-7.584-70.792 25-147.376 8-199.792-44.5-52.498-52.5-69.582-129.042-44.498-199.792 4.084-11.624 1.166-24.542-7.584-33.292-8.666-8.666-21.624-11.666-33.25-7.582-37.084 13.166-69.25 33.25-95.668 59.666-67.082 67-87.958 162-64.958 247.584-86.5 11.042-164.25 57-216.042 127.584-10.458-1.5-20.958-2.25-31.584-2.25-123.5 0-224 100.498-224 224 0 123.5 100.5 224 224 224 27.376 0 54.168-5.002 79.418-14.668 57.912 50.5 131.58 78.668 208.58 78.668 77.084 0 150.666-28.168 208.582-78.668 25.25 9.666 52.042 14.668 79.418 14.668 123.5 0 224-100.5 224-224 0.002-98.876-64.832-182.042-153.874-211.668zM581.832 184.334c5.084-5.166 10.542-9.958 16.292-14.458-4.5 71.958 21.458 142.75 74.208 195.458 52.752 52.75 123.542 78.666 195.502 74.208-27.584 35.168-65.584 57.042-106.252 66.376-54.75-69.5-135.208-113.248-223.916-120.374-24.542-67.918-10.166-146.878 44.166-201.21z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["cloud","night","weather"],"grid":16},"attrs":[],"properties":{"id":30,"order":4276,"prevSize":24,"code":59678,"name":"cloud4","ligatures":"cloud4"},"setIdx":0,"setId":2,"iconIdx":30},{"icon":{"paths":["M800 320c-10.624 0-21.124 0.75-31.584 2.25-59.748-81.416-154.040-130.25-256.416-130.25s-196.624 48.834-256.416 130.25c-10.46-1.5-20.96-2.25-31.584-2.25-123.5 0-224 100.5-224 224 0 123.5 100.5 224 224 224 27.376 0 54.168-5 79.418-14.666 57.914 50.5 131.582 78.666 208.582 78.666 77.084 0 150.666-28.166 208.582-78.666 25.25 9.666 52.042 14.666 79.418 14.666 123.5 0 224-100.5 224-224 0-123.5-100.5-224-224-224z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["cloud","weather"],"grid":16},"attrs":[],"properties":{"id":31,"order":4277,"prevSize":24,"code":59679,"name":"cloud5","ligatures":"cloud5"},"setIdx":0,"setId":2,"iconIdx":31},{"icon":{"paths":["M800 128c-10.624 0-21.124 0.75-31.584 2.25-59.748-81.416-154.040-130.25-256.416-130.25-102.376 0-196.624 48.834-256.416 130.25-10.46-1.5-20.96-2.25-31.584-2.25-123.5 0-224 100.5-224 224s100.5 224 224 224c27.376 0 54.168-5 79.418-14.666 43.082 37.542 94.832 62.582 150.208 73.042l-69.626 69.624 64 64-64 192 192-192-64-64 22-65.998c68.916-4.876 134.25-31.086 186.582-76.668 25.25 9.666 52.042 14.666 79.418 14.666 123.5 0 224-100.5 224-224s-100.5-224-224-224z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["lightning","weather"],"grid":16},"attrs":[],"properties":{"id":32,"order":4278,"prevSize":24,"code":59680,"name":"lightning4","ligatures":"lightning4"},"setIdx":0,"setId":2,"iconIdx":32},{"icon":{"paths":["M800 192c-10.624 0-21.124 0.75-31.584 2.25-59.748-81.416-154.040-130.25-256.416-130.25s-196.624 48.834-256.416 130.25c-10.46-1.5-20.96-2.25-31.584-2.25-123.5 0-224 100.5-224 224 0 123.5 100.5 224 224 224 27.376 0 54.168-5 79.418-14.666 57.914 50.5 131.582 78.666 208.582 78.666 77.084 0 150.666-28.166 208.582-78.666 25.25 9.666 52.042 14.666 79.418 14.666 123.5 0 224-100.5 224-224 0-123.5-100.5-224-224-224zM448 896c0 35.376 28.624 64 64 64s64-28.624 64-64-64-128-64-128-64 92.624-64 128z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["rainy","cloud","weather"],"grid":16},"attrs":[],"properties":{"id":33,"order":4279,"prevSize":24,"code":59681,"name":"rainy3","ligatures":"rainy3"},"setIdx":0,"setId":2,"iconIdx":33},{"icon":{"paths":["M800 128c-10.624 0-21.124 0.75-31.584 2.25-59.748-81.416-154.040-130.25-256.416-130.25s-196.624 48.834-256.416 130.25c-10.46-1.5-20.96-2.25-31.584-2.25-123.5 0-224 100.5-224 224s100.5 224 224 224c27.376 0 54.168-5 79.418-14.666 57.914 50.5 131.582 78.666 208.582 78.666 77.084 0 150.666-28.166 208.582-78.666 25.25 9.666 52.042 14.666 79.418 14.666 123.5 0 224-100.5 224-224s-100.5-224-224-224zM450 960c0 35.376 28.624 64 64 64s64-28.624 64-64-64-128-64-128-64 92.624-64 128zM704 896c0 35.376 28.624 64 64 64s64-28.624 64-64-64-128-64-128-64 92.624-64 128zM192 768c0 35.376 28.624 64 64 64s64-28.624 64-64-64-128-64-128-64 92.624-64 128z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["rainy","cloud","weather"],"grid":16},"attrs":[],"properties":{"id":34,"order":4280,"prevSize":24,"code":59682,"name":"rainy4","ligatures":"rainy4"},"setIdx":0,"setId":2,"iconIdx":34},{"icon":{"paths":["M834.084 332.166c-47.958-49.084-114.25-77.542-183.46-77.542-69.124 0-135.376 28.458-183.374 77.542-105.624 4.918-190 92.376-190 199.168 0 109.916 89.418 199.332 199.376 199.332 11.624 0 23.208-1 34.5-2.998 41.5 27.082 89.876 41.708 139.498 41.708 49.708 0 98.126-14.626 139.544-41.708 11.414 1.998 22.916 2.998 34.582 2.998 109.874 0 199.25-89.416 199.25-199.332 0-106.792-84.376-194.25-189.916-199.168zM288 704h-256c-17.666 0-32 14.334-32 32s14.334 32 32 32h256c17.666 0 32-14.334 32-32s-14.334-32-32-32zM32 640h128c17.666 0 32-14.334 32-32s-14.334-32-32-32h-128c-17.666 0-32 14.334-32 32s14.334 32 32 32zM96 512h128c17.666 0 32-14.334 32-32s-14.334-32-32-32h-128c-17.666 0-32 14.334-32 32s14.334 32 32 32z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["windy","cloud","weather"],"grid":16},"attrs":[],"properties":{"id":35,"order":4281,"prevSize":24,"code":59683,"name":"windy4","ligatures":"windy4"},"setIdx":0,"setId":2,"iconIdx":35},{"icon":{"paths":["M834.084 141.584c-47.96-49.126-114.25-77.584-183.46-77.584-69.124 0-135.376 28.458-183.33 77.584-105.626 4.876-190.042 92.334-190.042 199.084 0 109.956 89.418 199.416 199.376 199.416 11.668 0 23.208-1.002 34.542-3 41.458 27.042 89.834 41.666 139.458 41.666 49.708 0 98.126-14.624 139.544-41.666 11.414 1.998 22.916 3 34.582 3 109.874 0 199.25-89.46 199.25-199.416-0.004-106.752-84.38-194.252-189.92-199.084zM288 513.376h-256c-17.666 0-32 14.292-32 32 0 17.706 14.334 32 32 32h256c17.666 0 32-14.294 32-32 0-17.708-14.334-32-32-32zM32 449.376h128c17.666 0 32-14.292 32-32s-14.334-32-32-32h-128c-17.666 0-32 14.292-32 32s14.334 32 32 32zM96 321.376h128c17.666 0 32-14.292 32-32s-14.334-32-32-32h-128c-17.666 0-32 14.292-32 32s14.334 32 32 32zM448 768c0 35.376 28.624 64 64 64s64-28.624 64-64-64-128-64-128-64 92.624-64 128zM704 896c0 35.376 28.624 64 64 64s64-28.624 64-64-64-128-64-128-64 92.624-64 128z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["windy","rainy","weather","cloud"],"grid":16},"attrs":[],"properties":{"id":36,"order":4282,"prevSize":24,"code":59684,"name":"windy5","ligatures":"windy5"},"setIdx":0,"setId":2,"iconIdx":36},{"icon":{"paths":["M652.084 887.376l-36-20.752c1.084-6.248 1.914-12.622 1.914-19.248 0-6.624-0.83-13-1.998-19.25l36.084-20.792c16.834-9.834 22.582-31.458 12.916-48.208-9.752-16.958-31.334-22.75-48.25-13l-36.376 21c-9.752-8.292-20.75-14.792-33-19.208v-41.792c0-19.542-15.876-35.376-35.376-35.376s-35.334 15.834-35.334 35.376v41.75c-12.25 4.376-23.292 10.958-33.042 19.25l-36.292-21c-16.958-9.75-38.582-4-48.332 12.958-9.75 16.834-3.876 38.5 13 48.252l35.918 20.75c-1.168 6.292-1.918 12.668-1.918 19.292 0 6.626 0.75 13 1.918 19.248l-35.916 20.75c-16.918 9.75-22.75 31.5-13 48.376s31.376 22.624 48.25 12.876l36.334-20.876c9.748 8.25 20.792 14.75 33.082 19.124v41.876c0 19.498 15.834 35.248 35.334 35.248s35.376-15.75 35.376-35.248v-41.876c12.25-4.376 23.376-10.876 33.042-19.25l36.334 21c16.916 9.75 38.498 4 48.25-12.876 9.748-16.874 3.998-38.5-12.918-48.374zM512 882.75c-19.5 0-35.376-15.876-35.376-35.376s15.876-35.292 35.376-35.292 35.332 15.792 35.332 35.292-15.832 35.376-35.332 35.376zM800 128c-10.624 0-21.124 0.75-31.584 2.25-59.75-81.416-154.040-130.25-256.416-130.25s-196.624 48.834-256.416 130.25c-10.46-1.5-20.96-2.25-31.584-2.25-123.5 0-224 100.5-224 224s100.5 224 224 224c27.376 0 54.168-5 79.418-14.666 57.914 50.5 131.582 78.666 208.582 78.666 77.084 0 150.666-28.166 208.582-78.666 25.25 9.666 52.042 14.666 79.418 14.666 123.5 0 224-100.5 224-224s-100.5-224-224-224z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["snowy","cloud","weather"],"grid":16},"attrs":[],"properties":{"id":37,"order":4283,"prevSize":24,"code":59685,"name":"snowy4","ligatures":"snowy4"},"setIdx":0,"setId":2,"iconIdx":37},{"icon":{"paths":["M652.084 887.376l-36-20.752c1.084-6.248 1.916-12.622 1.916-19.248 0-6.624-0.832-13-2-19.25l36.084-20.792c16.834-9.834 22.582-31.458 12.916-48.208-9.752-16.958-31.334-22.75-48.25-13l-36.376 21c-9.752-8.292-20.75-14.792-33-19.208v-41.792c0-19.542-15.876-35.376-35.376-35.376s-35.332 15.834-35.332 35.376v41.75c-12.252 4.376-23.292 10.958-33.042 19.25l-36.292-21c-16.958-9.75-38.584-4-48.334 12.958-9.75 16.834-3.876 38.5 13 48.252l35.918 20.75c-1.168 6.292-1.918 12.668-1.918 19.292 0 6.626 0.75 13 1.918 19.248l-35.916 20.75c-16.918 9.75-22.75 31.5-13 48.376s31.376 22.624 48.25 12.876l36.334-20.876c9.748 8.25 20.792 14.75 33.084 19.124v41.876c0 19.498 15.832 35.248 35.332 35.248s35.376-15.75 35.376-35.248v-41.876c12.25-4.376 23.376-10.876 33.042-19.25l36.334 21c16.916 9.75 38.498 4 48.25-12.876 9.748-16.874 3.998-38.5-12.918-48.374zM512 882.75c-19.5 0-35.376-15.876-35.376-35.376s15.876-35.292 35.376-35.292 35.334 15.792 35.334 35.292-15.834 35.376-35.334 35.376zM948.332 792.5l-24.166-6.416c-0.582-7.666-2.416-14.958-5.792-21.958l17.542-17.542c8.25-8.25 8.208-21.584 0-29.708-8.166-8.208-21.416-8.25-29.666 0l-17.582 17.5c-6.918-3.25-14.292-5.124-21.918-5.75l-6.418-24.124c-2.998-11.166-14.5-17.876-25.748-14.876-11.208 3.042-17.75 14.542-14.834 25.75l6.418 23.792c-3.168 2.168-6.168 4.584-9 7.334-2.75 2.834-5.084 5.832-7.252 8.918l-23.792-6.418c-11.208-2.998-22.792 3.752-25.792 14.876-2.998 11.25 3.752 22.708 14.834 25.75l24 6.458c0.668 7.542 2.584 14.916 5.958 21.918l-17.624 17.624c-8.166 8.208-8.124 21.458 0.084 29.624 8.166 8.166 21.416 8.25 29.584 0.084l17.664-17.666c6.918 3.414 14.336 5.332 22.002 5.914l6.332 24.042c3.084 11.208 14.5 17.876 25.752 14.876 11.166-3 17.914-14.498 14.916-25.834l-6.418-23.792c3-2.124 6.084-4.5 8.918-7.25 2.75-2.792 5.084-5.876 7.248-8.958l23.834 6.418c11.208 3 22.75-3.708 25.708-14.834 3-11.17-3.624-22.668-14.792-25.752zM876.624 805.876c-8.25 8.25-21.542 8.208-29.75 0-8.124-8.124-8.208-21.458 0-29.708 8.208-8.166 21.542-8.166 29.75 0 8.126 8.208 8.126 21.582 0 29.708zM237.876 685l-23.75 6.376c-2.208-3-4.5-6.042-7.292-8.876-2.832-2.75-5.832-5.124-8.958-7.25l6.376-23.876c3-11.208-3.668-22.75-14.75-25.708-11.25-3-22.75 3.668-25.75 14.834l-6.5 24.124c-7.624 0.624-14.916 2.5-21.876 5.792l-17.624-17.542c-8.25-8.25-21.5-8.208-29.668 0-8.208 8.208-8.208 21.5 0 29.708l17.542 17.542c-3.292 7-5.208 14.376-5.792 21.958l-24.084 6.416c-11.25 3.084-17.918 14.5-14.916 25.75 3.042 11.166 14.542 17.75 25.792 14.834l23.75-6.46c2.124 3.208 4.5 6.21 7.376 9.002 2.75 2.75 5.75 5.208 8.876 7.25l-6.376 23.792c-3 11.25 3.668 22.834 14.832 25.834 11.252 3 22.668-3.666 25.668-14.876l6.5-24c7.624-0.624 15-2.542 22-5.876l17.582 17.584c8.168 8.248 21.418 8.082 29.668-0.084 8.124-8.124 8.25-21.416 0-29.624l-17.624-17.624c3.376-6.92 5.376-14.376 5.876-22.002l24.124-6.376c11.124-3.042 17.792-14.5 14.792-25.75-3.002-11.12-14.502-17.788-25.794-14.872zM177.124 741.916c-8.208 8.208-21.5 8.208-29.75 0-8.124-8.166-8.124-21.542 0-29.666 8.25-8.166 21.542-8.166 29.75 0s8.126 21.5 0 29.666zM1024 352c0-123.5-100.5-224-224-224-10.624 0-21.124 0.75-31.584 2.25-59.748-81.416-154.040-130.25-256.416-130.25s-196.624 48.834-256.416 130.25c-10.46-1.5-20.96-2.25-31.584-2.25-123.5 0-224 100.5-224 224s100.5 224 224 224c27.376 0 54.168-5 79.418-14.666 57.914 50.5 131.582 78.666 208.582 78.666 77.084 0 150.666-28.166 208.582-78.666 25.25 9.666 52.042 14.666 79.418 14.666 123.5 0 224-100.5 224-224z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["snowy","cloud","weather"],"grid":16},"attrs":[],"properties":{"id":38,"order":4284,"prevSize":24,"code":59686,"name":"snowy5","ligatures":"snowy5"},"setIdx":0,"setId":2,"iconIdx":38},{"icon":{"paths":["M800 128c-10.624 0-21.124 0.75-31.584 2.25-59.748-81.416-154.040-130.25-256.416-130.25s-196.624 48.834-256.416 130.25c-10.46-1.5-20.96-2.25-31.584-2.25-123.5 0-224 100.5-224 224s100.5 224 224 224c27.376 0 54.168-5 79.418-14.666 57.914 50.5 131.582 78.666 208.582 78.666 77.084 0 150.666-28.166 208.582-78.666 25.25 9.666 52.042 14.666 79.418 14.666 123.5 0 224-100.5 224-224s-100.5-224-224-224zM192 640c-35.376 0-64 28.624-64 64s28.624 64 64 64 64-28.624 64-64-28.624-64-64-64zM512 704c-35.376 0-64 28.624-64 64s28.624 64 64 64 64-28.624 64-64-28.624-64-64-64zM832 640c-35.376 0-64 28.624-64 64s28.624 64 64 64 64-28.624 64-64-28.624-64-64-64zM704 896c-35.376 0-64 28.624-64 64s28.624 64 64 64 64-28.624 64-64-28.624-64-64-64zM320 896c-35.376 0-64 28.624-64 64s28.624 64 64 64 64-28.624 64-64-28.624-64-64-64z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["weather","cloud"],"grid":16},"attrs":[],"properties":{"id":39,"order":4285,"prevSize":24,"code":59687,"name":"weather5","ligatures":"weather5"},"setIdx":0,"setId":2,"iconIdx":39},{"icon":{"paths":["M976.668 494.834c29.248 37.832 47.332 84.624 47.332 136 0 123.498-100.5 224-224 224-27.376 0-54.168-5-79.418-14.666-57.916 50.498-131.498 78.666-208.582 78.666-77 0-150.668-28.168-208.582-78.666-25.25 9.666-52.042 14.666-79.418 14.666-123.5 0-224-100.502-224-224 0-123.5 100.5-224 224-224 10.624 0 21.124 0.75 31.584 2.25 1.042-1.458 2.332-2.75 3.416-4.166-1.624-9.876-3-19.792-3-30.082 0-98.334 80-178.292 178.25-178.292 4.832 0 9.624 0.208 14.376 0.584 46.25-57.708 116-91.958 191.376-91.958 75.418 0 145.124 34.25 191.376 91.958 4.75-0.376 9.5-0.584 14.292-0.584 98.33-0.002 178.33 79.956 178.33 178.29 0 46.332-18.168 88.208-47.332 120z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["cloudy","weather","clouds"],"grid":16},"attrs":[],"properties":{"id":40,"order":4286,"prevSize":24,"code":59688,"name":"cloudy4","ligatures":"cloudy4"},"setIdx":0,"setId":2,"iconIdx":40},{"icon":{"paths":["M1024 269.666c0-98.292-80-178.248-178.334-178.248-4.792 0-9.542 0.166-14.292 0.54-46.25-57.666-115.956-91.958-191.374-91.958-75.376 0-145.124 34.292-191.376 91.958-4.75-0.374-9.542-0.54-14.376-0.54-98.248 0-178.248 79.958-178.248 178.248 0 10.292 1.376 20.25 3 30.084-1.084 1.416-2.376 2.708-3.416 4.166-10.458-1.5-20.958-2.25-31.584-2.25-123.5 0-224 100.5-224 224 0 123.502 100.5 224 224 224 27.376 0 54.168-4.998 79.418-14.666 36.708 32 80.208 53.876 126.414 66.416l-45.832 30.584 64 64-64 128 192-128-64-64 9.624-19.166c73.5-2.25 143.5-29.458 198.958-77.834 25.25 9.668 52.042 14.666 79.418 14.666 123.5 0 224-100.498 224-224 0-51.332-18.084-98.166-47.332-136 29.164-31.75 47.332-73.624 47.332-120z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["lightning","clouds","weather"],"grid":16},"attrs":[],"properties":{"id":41,"order":4287,"prevSize":24,"code":59689,"name":"lightning5","ligatures":"lightning5"},"setIdx":0,"setId":2,"iconIdx":41},{"icon":{"paths":["M576 721.75v-587.916c0-38.584-28.668-69.834-64-69.834-35.334 0-64 31.25-64 69.834v587.916c-38.084 22.166-64 63.002-64 110.25 0 70.666 57.332 128 128 128 70.666 0 128-57.334 128-128 0-47.248-25.876-88.084-64-110.25z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["thermometer","temperature"],"grid":16},"attrs":[],"properties":{"id":42,"order":4288,"prevSize":24,"code":59690,"name":"thermometer","ligatures":"thermometer"},"setIdx":0,"setId":2,"iconIdx":42},{"icon":{"paths":["M512 0c-282.792 0-512 229.208-512 512 0 282.75 229.208 512 512 512 282.75 0 512-229.25 512-512 0-282.792-229.25-512-512-512zM512 896c-211.75 0-384-172.25-384-384s172.25-384 384-384 384 172.25 384 384-172.25 384-384 384zM320 704l256-128 128-256-256 128-128 256z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["compass","location","map"],"grid":16},"attrs":[],"properties":{"id":43,"order":4289,"prevSize":24,"code":59691,"name":"compass","ligatures":"compass"},"setIdx":0,"setId":2,"iconIdx":43},{"icon":{"paths":["M318.188 557.292h-2.084l-67.042-102.376-81.876-120.874h-63.5v352.79h70.124l0-222.208h3.042l58.208 89.084 89.376 133.124h63.876v-352.79h-70.124v223.25zM412.938 708.332h51.668l129.582-392.664h-52.25l-129 392.664zM797.438 334.042h-71.666l-123.958 352.79h74.75l23.042-72.75h122.918l21.498 72.75h76.292l-122.876-352.79zM718.562 555.25l14.292-46.584 27.208-91.664h2l27.708 93.208 13.792 45.042h-85z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["none","nothing"],"grid":16},"attrs":[],"properties":{"id":44,"order":4290,"prevSize":24,"code":59692,"name":"none","ligatures":"none"},"setIdx":0,"setId":2,"iconIdx":44},{"icon":{"paths":["M418.334 352.75c-7.208-6.792-15.584-12.166-25.084-16.124-9.624-3.876-19.876-5.876-30.75-5.876-10.916 0-21.168 2-30.75 5.876-9.5 3.958-17.876 9.334-25.082 16.124-7.168 6.834-12.792 14.834-16.918 24.084-4.084 9.21-6.124 18.958-6.124 29.166 0 10.25 2.042 20 6.124 29.21 4.124 9.208 9.75 17.25 16.918 24.040 7.208 6.834 15.582 12.25 25.082 16.126 9.582 3.958 19.834 5.916 30.75 5.916 10.876 0 21.124-1.958 30.75-5.916 9.5-3.876 17.876-9.292 25.084-16.126 7.166-6.79 12.792-14.834 16.832-24.040 4.084-9.21 6.208-18.958 6.208-29.21 0-10.208-2.124-19.958-6.208-29.166-4.042-9.252-9.666-17.252-16.832-24.084zM387.624 430.082c-6.876 6.834-15.25 10.25-25.124 10.25s-18.25-3.418-25.124-10.25c-6.792-6.834-10.25-14.834-10.25-24.084 0-9.5 3.458-17.666 10.25-24.29 6.876-6.666 15.25-9.958 25.124-9.958s18.25 3.292 25.124 9.958c6.75 6.624 10.208 14.79 10.208 24.29-0 9.252-3.456 17.252-10.208 24.084zM670.5 623.582c-12.124 3.46-24.166 5.166-36.124 5.166-7.876 0-15.624-1.208-23.292-3.58-7.708-2.418-14.708-6.168-20.998-11.292-6.334-5.126-11.46-11.668-15.334-19.708-3.918-8-5.916-17.834-5.916-29.418v-102.916c0-11.584 1.998-21.5 5.916-29.708 3.874-8.166 8.918-14.834 15.082-19.958 6.168-5.124 13.084-8.792 21-11 7.834-2.21 15.668-3.334 23.542-3.334 11.958 0 24.248 1.75 36.874 5.376 12.626 3.582 24.376 9.998 35.336 19.208l33.792-54.292c-13.708-11.916-29.958-20.624-48.958-26.124-18.918-5.416-38.584-8.166-59.086-8.166-16.708 0-33.166 2.416-49.166 7.168-16.042 4.792-30.292 11.958-42.75 21.5-12.416 9.584-22.542 21.416-30.166 35.582-7.75 14.168-11.582 30.666-11.582 49.416v132.084c0 19.124 3.958 35.75 11.832 49.918 7.834 14.168 18.082 25.958 30.668 35.332 12.664 9.416 26.958 16.458 42.998 21.25 16.084 4.75 32.458 7.168 49.208 7.168 20.792 0 40.542-3.084 59.376-9.208 18.75-6.166 34.624-14.708 47.624-25.584l-33.292-54.292c-12.252 9.58-24.5 16.038-36.584 19.412z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["Celsius","temperature"],"grid":16},"attrs":[],"properties":{"id":45,"order":4291,"prevSize":24,"code":59693,"name":"Celsius","ligatures":"celsius"},"setIdx":0,"setId":2,"iconIdx":45},{"icon":{"paths":["M417.062 354.542c-7.208-6.792-15.582-12.168-25.082-16.124-9.624-3.876-19.876-5.876-30.75-5.876-10.918 0-21.168 2-30.75 5.876-9.5 3.958-17.876 9.334-25.084 16.124-7.166 6.832-12.792 14.832-16.918 24.082-4.084 9.21-6.124 18.958-6.124 29.168 0 10.25 2.040 20 6.124 29.208 4.126 9.208 9.752 17.25 16.918 24.042 7.208 6.832 15.584 12.25 25.084 16.124 9.582 3.958 19.832 5.916 30.75 5.916 10.876 0 21.124-1.958 30.75-5.916 9.5-3.876 17.876-9.292 25.082-16.124 7.168-6.792 12.792-14.834 16.832-24.042 4.084-9.208 6.21-18.958 6.21-29.208 0-10.208-2.126-19.958-6.21-29.168-4.040-9.25-9.664-17.25-16.832-24.082zM386.354 431.874c-6.876 6.834-15.25 10.252-25.124 10.252s-18.25-3.418-25.124-10.252c-6.792-6.832-10.25-14.832-10.25-24.082 0-9.5 3.458-17.666 10.25-24.292 6.876-6.666 15.25-9.958 25.124-9.958s18.25 3.292 25.124 9.958c6.748 6.624 10.208 14.792 10.208 24.292 0 9.25-3.46 17.25-10.208 24.082zM741.644 401.666v-63h-243.164v352.792h70.126v-143.876h147.958v-62.958h-147.958v-82.958h173.038z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["Fahrenheit","temperature"],"grid":16},"attrs":[],"properties":{"id":46,"order":4292,"prevSize":24,"code":59694,"name":"Fahrenheit","ligatures":"fahrenheit"},"setIdx":0,"setId":2,"iconIdx":46}],"height":1024,"metadata":{"name":"meteocons"},"preferences":{"showGlyphs":true,"showQuickUse":false,"showQuickUse2":true,"showSVGs":true,"fontPref":{"prefix":"","metadata":{"fontFamily":"meteocons","majorVersion":1,"minorVersion":0},"metrics":{"emSize":1024,"baseline":0,"whitespace":0},"embed":false,"resetPoint":59648,"showSelector":true,"showMetrics":true,"showMetadata":true,"showVersion":true,"noie8":true,"ie7":false,"selector":"i","classSelector":".icon"},"imagePref":{"prefix":"icon-","png":true,"useClassSelector":true,"color":4473924,"bgColor":16777215,"classSelector":".icon","height":32,"columns":16,"margin":16},"historySize":100,"gridSize":16,"showGrid":true,"showCodes":true,"showLiga":true}} \ No newline at end of file diff --git a/public/assets/fonts/meteocons/style.css b/public/assets/fonts/meteocons/style.css new file mode 100644 index 0000000..20f7ce6 --- /dev/null +++ b/public/assets/fonts/meteocons/style.css @@ -0,0 +1,34 @@ +@font-face { + font-family: 'meteocons'; + src: + url('./fonts/meteocons.ttf?kx31oc') format('truetype'), + url('./fonts/meteocons.woff?kx31oc') format('woff'), + url('./fonts/meteocons.svg?kx31oc#meteocons') format('svg'); + font-weight: normal; + font-style: normal; +} + +.meteocons { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'meteocons' !important; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Enable Ligatures ================ */ + letter-spacing: 0; + -webkit-font-feature-settings: "liga"; + -moz-font-feature-settings: "liga=1"; + -moz-font-feature-settings: "liga"; + -ms-font-feature-settings: "liga" 1; + font-feature-settings: "liga"; + -webkit-font-variant-ligatures: discretionary-ligatures; + font-variant-ligatures: discretionary-ligatures; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} diff --git a/public/assets/icons/feather.svg b/public/assets/icons/feather.svg new file mode 100644 index 0000000..14afbff --- /dev/null +++ b/public/assets/icons/feather.svg @@ -0,0 +1,1314 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/icons/heroicons-outline.svg b/public/assets/icons/heroicons-outline.svg new file mode 100644 index 0000000..ffcb0f4 --- /dev/null +++ b/public/assets/icons/heroicons-outline.svg @@ -0,0 +1,707 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/icons/heroicons-solid.svg b/public/assets/icons/heroicons-solid.svg new file mode 100644 index 0000000..0b9c1ad --- /dev/null +++ b/public/assets/icons/heroicons-solid.svg @@ -0,0 +1,738 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/icons/material-outline.svg b/public/assets/icons/material-outline.svg new file mode 100644 index 0000000..d1acdd6 --- /dev/null +++ b/public/assets/icons/material-outline.svg @@ -0,0 +1,3586 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/icons/material-solid.svg b/public/assets/icons/material-solid.svg new file mode 100644 index 0000000..5c2361d --- /dev/null +++ b/public/assets/icons/material-solid.svg @@ -0,0 +1,3586 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Asset 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ic_edit_off_24px + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ic_recommend_24px + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ic_dialer_rtt_revised_24px + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/icons/material-twotone.svg b/public/assets/icons/material-twotone.svg new file mode 100644 index 0000000..33ea953 --- /dev/null +++ b/public/assets/icons/material-twotone.svg @@ -0,0 +1,3586 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/images/apps/contacts/flags.png b/public/assets/images/apps/contacts/flags.png new file mode 100644 index 0000000..7fdb59b Binary files /dev/null and b/public/assets/images/apps/contacts/flags.png differ diff --git a/public/assets/images/apps/ecommerce/a-walk-amongst-friends.jpg b/public/assets/images/apps/ecommerce/a-walk-amongst-friends.jpg new file mode 100644 index 0000000..c3539b2 Binary files /dev/null and b/public/assets/images/apps/ecommerce/a-walk-amongst-friends.jpg differ diff --git a/public/assets/images/apps/ecommerce/braies-lake.jpg b/public/assets/images/apps/ecommerce/braies-lake.jpg new file mode 100644 index 0000000..7190901 Binary files /dev/null and b/public/assets/images/apps/ecommerce/braies-lake.jpg differ diff --git a/public/assets/images/apps/ecommerce/fall-glow.jpg b/public/assets/images/apps/ecommerce/fall-glow.jpg new file mode 100644 index 0000000..4d0274f Binary files /dev/null and b/public/assets/images/apps/ecommerce/fall-glow.jpg differ diff --git a/public/assets/images/apps/ecommerce/first-snow.jpg b/public/assets/images/apps/ecommerce/first-snow.jpg new file mode 100644 index 0000000..53ffe31 Binary files /dev/null and b/public/assets/images/apps/ecommerce/first-snow.jpg differ diff --git a/public/assets/images/apps/ecommerce/lago-di-braies.jpg b/public/assets/images/apps/ecommerce/lago-di-braies.jpg new file mode 100644 index 0000000..05fc892 Binary files /dev/null and b/public/assets/images/apps/ecommerce/lago-di-braies.jpg differ diff --git a/public/assets/images/apps/ecommerce/lago-di-sorapis.jpg b/public/assets/images/apps/ecommerce/lago-di-sorapis.jpg new file mode 100644 index 0000000..0d772a2 Binary files /dev/null and b/public/assets/images/apps/ecommerce/lago-di-sorapis.jpg differ diff --git a/public/assets/images/apps/ecommerce/morain-lake.jpg b/public/assets/images/apps/ecommerce/morain-lake.jpg new file mode 100644 index 0000000..bd45084 Binary files /dev/null and b/public/assets/images/apps/ecommerce/morain-lake.jpg differ diff --git a/public/assets/images/apps/ecommerce/never-stop-changing.jpg b/public/assets/images/apps/ecommerce/never-stop-changing.jpg new file mode 100644 index 0000000..8906090 Binary files /dev/null and b/public/assets/images/apps/ecommerce/never-stop-changing.jpg differ diff --git a/public/assets/images/apps/ecommerce/product-image-placeholder.png b/public/assets/images/apps/ecommerce/product-image-placeholder.png new file mode 100644 index 0000000..397f8c1 Binary files /dev/null and b/public/assets/images/apps/ecommerce/product-image-placeholder.png differ diff --git a/public/assets/images/apps/ecommerce/reaching.jpg b/public/assets/images/apps/ecommerce/reaching.jpg new file mode 100644 index 0000000..8e625a6 Binary files /dev/null and b/public/assets/images/apps/ecommerce/reaching.jpg differ diff --git a/public/assets/images/apps/ecommerce/yosemite.jpg b/public/assets/images/apps/ecommerce/yosemite.jpg new file mode 100644 index 0000000..565f3cc Binary files /dev/null and b/public/assets/images/apps/ecommerce/yosemite.jpg differ diff --git a/public/assets/images/apps/help-center/image-1.jpg b/public/assets/images/apps/help-center/image-1.jpg new file mode 100644 index 0000000..8e734f4 Binary files /dev/null and b/public/assets/images/apps/help-center/image-1.jpg differ diff --git a/public/assets/images/apps/mailbox/birds-eye-sydney_preview.jpg b/public/assets/images/apps/mailbox/birds-eye-sydney_preview.jpg new file mode 100644 index 0000000..434d5a2 Binary files /dev/null and b/public/assets/images/apps/mailbox/birds-eye-sydney_preview.jpg differ diff --git a/public/assets/images/apps/mailbox/lake-of-carrezza_preview.png b/public/assets/images/apps/mailbox/lake-of-carrezza_preview.png new file mode 100644 index 0000000..8ae3d25 Binary files /dev/null and b/public/assets/images/apps/mailbox/lake-of-carrezza_preview.png differ diff --git a/public/assets/images/apps/mailbox/mystery-forest_preview.jpg b/public/assets/images/apps/mailbox/mystery-forest_preview.jpg new file mode 100644 index 0000000..4afe9bd Binary files /dev/null and b/public/assets/images/apps/mailbox/mystery-forest_preview.jpg differ diff --git a/public/assets/images/apps/mailbox/yosemite-national-park_preview.png b/public/assets/images/apps/mailbox/yosemite-national-park_preview.png new file mode 100644 index 0000000..3ec32ab Binary files /dev/null and b/public/assets/images/apps/mailbox/yosemite-national-park_preview.png differ diff --git a/public/assets/images/apps/profile/a-walk-amongst-friends-small.jpg b/public/assets/images/apps/profile/a-walk-amongst-friends-small.jpg new file mode 100644 index 0000000..ddc5657 Binary files /dev/null and b/public/assets/images/apps/profile/a-walk-amongst-friends-small.jpg differ diff --git a/public/assets/images/apps/profile/braies-lake-small.jpg b/public/assets/images/apps/profile/braies-lake-small.jpg new file mode 100644 index 0000000..8232d54 Binary files /dev/null and b/public/assets/images/apps/profile/braies-lake-small.jpg differ diff --git a/public/assets/images/apps/profile/fall-glow-small.jpg b/public/assets/images/apps/profile/fall-glow-small.jpg new file mode 100644 index 0000000..aff4ca3 Binary files /dev/null and b/public/assets/images/apps/profile/fall-glow-small.jpg differ diff --git a/public/assets/images/apps/profile/first-snow-small.jpg b/public/assets/images/apps/profile/first-snow-small.jpg new file mode 100644 index 0000000..bcc4721 Binary files /dev/null and b/public/assets/images/apps/profile/first-snow-small.jpg differ diff --git a/public/assets/images/apps/profile/lago-di-braies-small.jpg b/public/assets/images/apps/profile/lago-di-braies-small.jpg new file mode 100644 index 0000000..5944816 Binary files /dev/null and b/public/assets/images/apps/profile/lago-di-braies-small.jpg differ diff --git a/public/assets/images/apps/profile/lago-di-sorapis-small.jpg b/public/assets/images/apps/profile/lago-di-sorapis-small.jpg new file mode 100644 index 0000000..a1abf22 Binary files /dev/null and b/public/assets/images/apps/profile/lago-di-sorapis-small.jpg differ diff --git a/public/assets/images/apps/profile/morain-lake-small.jpg b/public/assets/images/apps/profile/morain-lake-small.jpg new file mode 100644 index 0000000..d13ae3d Binary files /dev/null and b/public/assets/images/apps/profile/morain-lake-small.jpg differ diff --git a/public/assets/images/apps/profile/morain-lake.jpg b/public/assets/images/apps/profile/morain-lake.jpg new file mode 100644 index 0000000..cc8e7a3 Binary files /dev/null and b/public/assets/images/apps/profile/morain-lake.jpg differ diff --git a/public/assets/images/apps/profile/never-stop-changing-small.jpg b/public/assets/images/apps/profile/never-stop-changing-small.jpg new file mode 100644 index 0000000..18eeddb Binary files /dev/null and b/public/assets/images/apps/profile/never-stop-changing-small.jpg differ diff --git a/public/assets/images/apps/profile/never-stop-changing.jpg b/public/assets/images/apps/profile/never-stop-changing.jpg new file mode 100644 index 0000000..3aecde6 Binary files /dev/null and b/public/assets/images/apps/profile/never-stop-changing.jpg differ diff --git a/public/assets/images/apps/profile/reaching-small.jpg b/public/assets/images/apps/profile/reaching-small.jpg new file mode 100644 index 0000000..5f315da Binary files /dev/null and b/public/assets/images/apps/profile/reaching-small.jpg differ diff --git a/public/assets/images/apps/profile/yosemite-small.jpg b/public/assets/images/apps/profile/yosemite-small.jpg new file mode 100644 index 0000000..36b1779 Binary files /dev/null and b/public/assets/images/apps/profile/yosemite-small.jpg differ diff --git a/public/assets/images/apps/scrumboard/calendar.jpg b/public/assets/images/apps/scrumboard/calendar.jpg new file mode 100644 index 0000000..7bdc93c Binary files /dev/null and b/public/assets/images/apps/scrumboard/calendar.jpg differ diff --git a/public/assets/images/apps/scrumboard/header-1.jpg b/public/assets/images/apps/scrumboard/header-1.jpg new file mode 100644 index 0000000..7cdd517 Binary files /dev/null and b/public/assets/images/apps/scrumboard/header-1.jpg differ diff --git a/public/assets/images/apps/scrumboard/header-2.jpg b/public/assets/images/apps/scrumboard/header-2.jpg new file mode 100644 index 0000000..b77768f Binary files /dev/null and b/public/assets/images/apps/scrumboard/header-2.jpg differ diff --git a/public/assets/images/apps/scrumboard/mail.jpg b/public/assets/images/apps/scrumboard/mail.jpg new file mode 100644 index 0000000..b7c252d Binary files /dev/null and b/public/assets/images/apps/scrumboard/mail.jpg differ diff --git a/public/assets/images/avatars/brian-hughes.jpg b/public/assets/images/avatars/brian-hughes.jpg new file mode 100644 index 0000000..5abb9cb Binary files /dev/null and b/public/assets/images/avatars/brian-hughes.jpg differ diff --git a/public/assets/images/avatars/female-01.jpg b/public/assets/images/avatars/female-01.jpg new file mode 100644 index 0000000..0d6a700 Binary files /dev/null and b/public/assets/images/avatars/female-01.jpg differ diff --git a/public/assets/images/avatars/female-02.jpg b/public/assets/images/avatars/female-02.jpg new file mode 100644 index 0000000..179005a Binary files /dev/null and b/public/assets/images/avatars/female-02.jpg differ diff --git a/public/assets/images/avatars/female-03.jpg b/public/assets/images/avatars/female-03.jpg new file mode 100644 index 0000000..7a2263d Binary files /dev/null and b/public/assets/images/avatars/female-03.jpg differ diff --git a/public/assets/images/avatars/female-04.jpg b/public/assets/images/avatars/female-04.jpg new file mode 100644 index 0000000..9bf6d23 Binary files /dev/null and b/public/assets/images/avatars/female-04.jpg differ diff --git a/public/assets/images/avatars/female-05.jpg b/public/assets/images/avatars/female-05.jpg new file mode 100644 index 0000000..da7274e Binary files /dev/null and b/public/assets/images/avatars/female-05.jpg differ diff --git a/public/assets/images/avatars/female-06.jpg b/public/assets/images/avatars/female-06.jpg new file mode 100644 index 0000000..a3b4fd7 Binary files /dev/null and b/public/assets/images/avatars/female-06.jpg differ diff --git a/public/assets/images/avatars/female-07.jpg b/public/assets/images/avatars/female-07.jpg new file mode 100644 index 0000000..c151118 Binary files /dev/null and b/public/assets/images/avatars/female-07.jpg differ diff --git a/public/assets/images/avatars/female-08.jpg b/public/assets/images/avatars/female-08.jpg new file mode 100644 index 0000000..319d9b9 Binary files /dev/null and b/public/assets/images/avatars/female-08.jpg differ diff --git a/public/assets/images/avatars/female-09.jpg b/public/assets/images/avatars/female-09.jpg new file mode 100644 index 0000000..48e1c78 Binary files /dev/null and b/public/assets/images/avatars/female-09.jpg differ diff --git a/public/assets/images/avatars/female-10.jpg b/public/assets/images/avatars/female-10.jpg new file mode 100644 index 0000000..dc272f6 Binary files /dev/null and b/public/assets/images/avatars/female-10.jpg differ diff --git a/public/assets/images/avatars/female-11.jpg b/public/assets/images/avatars/female-11.jpg new file mode 100644 index 0000000..f14d50d Binary files /dev/null and b/public/assets/images/avatars/female-11.jpg differ diff --git a/public/assets/images/avatars/female-12.jpg b/public/assets/images/avatars/female-12.jpg new file mode 100644 index 0000000..ab9dfa6 Binary files /dev/null and b/public/assets/images/avatars/female-12.jpg differ diff --git a/public/assets/images/avatars/female-13.jpg b/public/assets/images/avatars/female-13.jpg new file mode 100644 index 0000000..950e157 Binary files /dev/null and b/public/assets/images/avatars/female-13.jpg differ diff --git a/public/assets/images/avatars/female-14.jpg b/public/assets/images/avatars/female-14.jpg new file mode 100644 index 0000000..cdd6638 Binary files /dev/null and b/public/assets/images/avatars/female-14.jpg differ diff --git a/public/assets/images/avatars/female-15.jpg b/public/assets/images/avatars/female-15.jpg new file mode 100644 index 0000000..e8a3efe Binary files /dev/null and b/public/assets/images/avatars/female-15.jpg differ diff --git a/public/assets/images/avatars/female-16.jpg b/public/assets/images/avatars/female-16.jpg new file mode 100644 index 0000000..f697340 Binary files /dev/null and b/public/assets/images/avatars/female-16.jpg differ diff --git a/public/assets/images/avatars/female-17.jpg b/public/assets/images/avatars/female-17.jpg new file mode 100644 index 0000000..5753fe4 Binary files /dev/null and b/public/assets/images/avatars/female-17.jpg differ diff --git a/public/assets/images/avatars/female-18.jpg b/public/assets/images/avatars/female-18.jpg new file mode 100644 index 0000000..be2a702 Binary files /dev/null and b/public/assets/images/avatars/female-18.jpg differ diff --git a/public/assets/images/avatars/female-19.jpg b/public/assets/images/avatars/female-19.jpg new file mode 100644 index 0000000..44ac8e0 Binary files /dev/null and b/public/assets/images/avatars/female-19.jpg differ diff --git a/public/assets/images/avatars/female-20.jpg b/public/assets/images/avatars/female-20.jpg new file mode 100644 index 0000000..f998071 Binary files /dev/null and b/public/assets/images/avatars/female-20.jpg differ diff --git a/public/assets/images/avatars/male-01.jpg b/public/assets/images/avatars/male-01.jpg new file mode 100644 index 0000000..dd0b05b Binary files /dev/null and b/public/assets/images/avatars/male-01.jpg differ diff --git a/public/assets/images/avatars/male-02.jpg b/public/assets/images/avatars/male-02.jpg new file mode 100644 index 0000000..a1c5fef Binary files /dev/null and b/public/assets/images/avatars/male-02.jpg differ diff --git a/public/assets/images/avatars/male-03.jpg b/public/assets/images/avatars/male-03.jpg new file mode 100644 index 0000000..0b5d1f1 Binary files /dev/null and b/public/assets/images/avatars/male-03.jpg differ diff --git a/public/assets/images/avatars/male-04.jpg b/public/assets/images/avatars/male-04.jpg new file mode 100644 index 0000000..5abb9cb Binary files /dev/null and b/public/assets/images/avatars/male-04.jpg differ diff --git a/public/assets/images/avatars/male-05.jpg b/public/assets/images/avatars/male-05.jpg new file mode 100644 index 0000000..e7b19d7 Binary files /dev/null and b/public/assets/images/avatars/male-05.jpg differ diff --git a/public/assets/images/avatars/male-06.jpg b/public/assets/images/avatars/male-06.jpg new file mode 100644 index 0000000..fdaaf3c Binary files /dev/null and b/public/assets/images/avatars/male-06.jpg differ diff --git a/public/assets/images/avatars/male-07.jpg b/public/assets/images/avatars/male-07.jpg new file mode 100644 index 0000000..55ea470 Binary files /dev/null and b/public/assets/images/avatars/male-07.jpg differ diff --git a/public/assets/images/avatars/male-08.jpg b/public/assets/images/avatars/male-08.jpg new file mode 100644 index 0000000..7a4eaa0 Binary files /dev/null and b/public/assets/images/avatars/male-08.jpg differ diff --git a/public/assets/images/avatars/male-09.jpg b/public/assets/images/avatars/male-09.jpg new file mode 100644 index 0000000..14e3fe3 Binary files /dev/null and b/public/assets/images/avatars/male-09.jpg differ diff --git a/public/assets/images/avatars/male-10.jpg b/public/assets/images/avatars/male-10.jpg new file mode 100644 index 0000000..beeb6fb Binary files /dev/null and b/public/assets/images/avatars/male-10.jpg differ diff --git a/public/assets/images/avatars/male-11.jpg b/public/assets/images/avatars/male-11.jpg new file mode 100644 index 0000000..7da7ce6 Binary files /dev/null and b/public/assets/images/avatars/male-11.jpg differ diff --git a/public/assets/images/avatars/male-12.jpg b/public/assets/images/avatars/male-12.jpg new file mode 100644 index 0000000..a6712de Binary files /dev/null and b/public/assets/images/avatars/male-12.jpg differ diff --git a/public/assets/images/avatars/male-13.jpg b/public/assets/images/avatars/male-13.jpg new file mode 100644 index 0000000..6af7b6b Binary files /dev/null and b/public/assets/images/avatars/male-13.jpg differ diff --git a/public/assets/images/avatars/male-14.jpg b/public/assets/images/avatars/male-14.jpg new file mode 100644 index 0000000..d04d3d6 Binary files /dev/null and b/public/assets/images/avatars/male-14.jpg differ diff --git a/public/assets/images/avatars/male-15.jpg b/public/assets/images/avatars/male-15.jpg new file mode 100644 index 0000000..fd8ecd2 Binary files /dev/null and b/public/assets/images/avatars/male-15.jpg differ diff --git a/public/assets/images/avatars/male-16.jpg b/public/assets/images/avatars/male-16.jpg new file mode 100644 index 0000000..b2c063b Binary files /dev/null and b/public/assets/images/avatars/male-16.jpg differ diff --git a/public/assets/images/avatars/male-17.jpg b/public/assets/images/avatars/male-17.jpg new file mode 100644 index 0000000..41ffcbc Binary files /dev/null and b/public/assets/images/avatars/male-17.jpg differ diff --git a/public/assets/images/avatars/male-18.jpg b/public/assets/images/avatars/male-18.jpg new file mode 100644 index 0000000..60ee45f Binary files /dev/null and b/public/assets/images/avatars/male-18.jpg differ diff --git a/public/assets/images/avatars/male-19.jpg b/public/assets/images/avatars/male-19.jpg new file mode 100644 index 0000000..7853dbd Binary files /dev/null and b/public/assets/images/avatars/male-19.jpg differ diff --git a/public/assets/images/avatars/male-20.jpg b/public/assets/images/avatars/male-20.jpg new file mode 100644 index 0000000..c33807a Binary files /dev/null and b/public/assets/images/avatars/male-20.jpg differ diff --git a/public/assets/images/cards/01-320x200.jpg b/public/assets/images/cards/01-320x200.jpg new file mode 100644 index 0000000..adfeba7 Binary files /dev/null and b/public/assets/images/cards/01-320x200.jpg differ diff --git a/public/assets/images/cards/02-320x200.jpg b/public/assets/images/cards/02-320x200.jpg new file mode 100644 index 0000000..7cc6ac9 Binary files /dev/null and b/public/assets/images/cards/02-320x200.jpg differ diff --git a/public/assets/images/cards/03-320x200.jpg b/public/assets/images/cards/03-320x200.jpg new file mode 100644 index 0000000..766c7cd Binary files /dev/null and b/public/assets/images/cards/03-320x200.jpg differ diff --git a/public/assets/images/cards/04-320x200.jpg b/public/assets/images/cards/04-320x200.jpg new file mode 100644 index 0000000..114ca88 Binary files /dev/null and b/public/assets/images/cards/04-320x200.jpg differ diff --git a/public/assets/images/cards/05-320x200.jpg b/public/assets/images/cards/05-320x200.jpg new file mode 100644 index 0000000..64dca04 Binary files /dev/null and b/public/assets/images/cards/05-320x200.jpg differ diff --git a/public/assets/images/cards/06-320x200.jpg b/public/assets/images/cards/06-320x200.jpg new file mode 100644 index 0000000..6eb295b Binary files /dev/null and b/public/assets/images/cards/06-320x200.jpg differ diff --git a/public/assets/images/cards/07-320x200.jpg b/public/assets/images/cards/07-320x200.jpg new file mode 100644 index 0000000..101dfe1 Binary files /dev/null and b/public/assets/images/cards/07-320x200.jpg differ diff --git a/public/assets/images/cards/08-320x200.jpg b/public/assets/images/cards/08-320x200.jpg new file mode 100644 index 0000000..049dbcf Binary files /dev/null and b/public/assets/images/cards/08-320x200.jpg differ diff --git a/public/assets/images/cards/09-320x200.jpg b/public/assets/images/cards/09-320x200.jpg new file mode 100644 index 0000000..bbd8cf0 Binary files /dev/null and b/public/assets/images/cards/09-320x200.jpg differ diff --git a/public/assets/images/cards/10-320x200.jpg b/public/assets/images/cards/10-320x200.jpg new file mode 100644 index 0000000..64cee47 Binary files /dev/null and b/public/assets/images/cards/10-320x200.jpg differ diff --git a/public/assets/images/cards/11-512x512.jpg b/public/assets/images/cards/11-512x512.jpg new file mode 100644 index 0000000..5aa3a9c Binary files /dev/null and b/public/assets/images/cards/11-512x512.jpg differ diff --git a/public/assets/images/cards/12-512x512.jpg b/public/assets/images/cards/12-512x512.jpg new file mode 100644 index 0000000..d8fe1d6 Binary files /dev/null and b/public/assets/images/cards/12-512x512.jpg differ diff --git a/public/assets/images/cards/13-160x160.jpg b/public/assets/images/cards/13-160x160.jpg new file mode 100644 index 0000000..9343c8e Binary files /dev/null and b/public/assets/images/cards/13-160x160.jpg differ diff --git a/public/assets/images/cards/14-640x480.jpg b/public/assets/images/cards/14-640x480.jpg new file mode 100644 index 0000000..d7d7769 Binary files /dev/null and b/public/assets/images/cards/14-640x480.jpg differ diff --git a/public/assets/images/cards/15-640x480.jpg b/public/assets/images/cards/15-640x480.jpg new file mode 100644 index 0000000..a0dd48a Binary files /dev/null and b/public/assets/images/cards/15-640x480.jpg differ diff --git a/public/assets/images/cards/16-640x480.jpg b/public/assets/images/cards/16-640x480.jpg new file mode 100644 index 0000000..ce3d1a3 Binary files /dev/null and b/public/assets/images/cards/16-640x480.jpg differ diff --git a/public/assets/images/cards/17-640x480.jpg b/public/assets/images/cards/17-640x480.jpg new file mode 100644 index 0000000..896ac4c Binary files /dev/null and b/public/assets/images/cards/17-640x480.jpg differ diff --git a/public/assets/images/cards/18-640x480.jpg b/public/assets/images/cards/18-640x480.jpg new file mode 100644 index 0000000..1ff403f Binary files /dev/null and b/public/assets/images/cards/18-640x480.jpg differ diff --git a/public/assets/images/cards/19-640x480.jpg b/public/assets/images/cards/19-640x480.jpg new file mode 100644 index 0000000..242c5d0 Binary files /dev/null and b/public/assets/images/cards/19-640x480.jpg differ diff --git a/public/assets/images/cards/20-640x480.jpg b/public/assets/images/cards/20-640x480.jpg new file mode 100644 index 0000000..47222dc Binary files /dev/null and b/public/assets/images/cards/20-640x480.jpg differ diff --git a/public/assets/images/cards/21-640x480.jpg b/public/assets/images/cards/21-640x480.jpg new file mode 100644 index 0000000..dabf1c9 Binary files /dev/null and b/public/assets/images/cards/21-640x480.jpg differ diff --git a/public/assets/images/cards/22-640x480.jpg b/public/assets/images/cards/22-640x480.jpg new file mode 100644 index 0000000..a81c474 Binary files /dev/null and b/public/assets/images/cards/22-640x480.jpg differ diff --git a/public/assets/images/cards/23-640x480.jpg b/public/assets/images/cards/23-640x480.jpg new file mode 100644 index 0000000..f479adf Binary files /dev/null and b/public/assets/images/cards/23-640x480.jpg differ diff --git a/public/assets/images/cards/24-640x480.jpg b/public/assets/images/cards/24-640x480.jpg new file mode 100644 index 0000000..15b6b17 Binary files /dev/null and b/public/assets/images/cards/24-640x480.jpg differ diff --git a/public/assets/images/cards/25-640x480.jpg b/public/assets/images/cards/25-640x480.jpg new file mode 100644 index 0000000..07f25c1 Binary files /dev/null and b/public/assets/images/cards/25-640x480.jpg differ diff --git a/public/assets/images/cards/26-640x480.jpg b/public/assets/images/cards/26-640x480.jpg new file mode 100644 index 0000000..fa1faf0 Binary files /dev/null and b/public/assets/images/cards/26-640x480.jpg differ diff --git a/public/assets/images/cards/27-640x480.jpg b/public/assets/images/cards/27-640x480.jpg new file mode 100644 index 0000000..f4f5e9c Binary files /dev/null and b/public/assets/images/cards/27-640x480.jpg differ diff --git a/public/assets/images/cards/28-640x480.jpg b/public/assets/images/cards/28-640x480.jpg new file mode 100644 index 0000000..8a9d5ea Binary files /dev/null and b/public/assets/images/cards/28-640x480.jpg differ diff --git a/public/assets/images/cards/29-640x480.jpg b/public/assets/images/cards/29-640x480.jpg new file mode 100644 index 0000000..bb491a0 Binary files /dev/null and b/public/assets/images/cards/29-640x480.jpg differ diff --git a/public/assets/images/cards/30-640x480.jpg b/public/assets/images/cards/30-640x480.jpg new file mode 100644 index 0000000..525dd79 Binary files /dev/null and b/public/assets/images/cards/30-640x480.jpg differ diff --git a/public/assets/images/cards/31-640x480.jpg b/public/assets/images/cards/31-640x480.jpg new file mode 100644 index 0000000..b09020d Binary files /dev/null and b/public/assets/images/cards/31-640x480.jpg differ diff --git a/public/assets/images/cards/32-640x480.jpg b/public/assets/images/cards/32-640x480.jpg new file mode 100644 index 0000000..3bb94c6 Binary files /dev/null and b/public/assets/images/cards/32-640x480.jpg differ diff --git a/public/assets/images/cards/33-640x480.jpg b/public/assets/images/cards/33-640x480.jpg new file mode 100644 index 0000000..36cde18 Binary files /dev/null and b/public/assets/images/cards/33-640x480.jpg differ diff --git a/public/assets/images/cards/34-640x480.jpg b/public/assets/images/cards/34-640x480.jpg new file mode 100644 index 0000000..34f07fa Binary files /dev/null and b/public/assets/images/cards/34-640x480.jpg differ diff --git a/public/assets/images/cards/35-640x480.jpg b/public/assets/images/cards/35-640x480.jpg new file mode 100644 index 0000000..41f4a61 Binary files /dev/null and b/public/assets/images/cards/35-640x480.jpg differ diff --git a/public/assets/images/cards/36-640x480.jpg b/public/assets/images/cards/36-640x480.jpg new file mode 100644 index 0000000..0cdc47b Binary files /dev/null and b/public/assets/images/cards/36-640x480.jpg differ diff --git a/public/assets/images/cards/avatar-400x400.jpg b/public/assets/images/cards/avatar-400x400.jpg new file mode 100644 index 0000000..7898e4e Binary files /dev/null and b/public/assets/images/cards/avatar-400x400.jpg differ diff --git a/public/assets/images/cards/coffee-shop-01-320x200.jpg b/public/assets/images/cards/coffee-shop-01-320x200.jpg new file mode 100644 index 0000000..e1fe307 Binary files /dev/null and b/public/assets/images/cards/coffee-shop-01-320x200.jpg differ diff --git a/public/assets/images/cards/coffee-shop-02-512x512.jpg b/public/assets/images/cards/coffee-shop-02-512x512.jpg new file mode 100644 index 0000000..2ac8a09 Binary files /dev/null and b/public/assets/images/cards/coffee-shop-02-512x512.jpg differ diff --git a/public/assets/images/cards/coffee-shop-03-320x320.jpg b/public/assets/images/cards/coffee-shop-03-320x320.jpg new file mode 100644 index 0000000..28a9128 Binary files /dev/null and b/public/assets/images/cards/coffee-shop-03-320x320.jpg differ diff --git a/public/assets/images/cards/mansion-01-320x200.jpg b/public/assets/images/cards/mansion-01-320x200.jpg new file mode 100644 index 0000000..869f40f Binary files /dev/null and b/public/assets/images/cards/mansion-01-320x200.jpg differ diff --git a/public/assets/images/cards/product-01-224x256.jpg b/public/assets/images/cards/product-01-224x256.jpg new file mode 100644 index 0000000..b4144e8 Binary files /dev/null and b/public/assets/images/cards/product-01-224x256.jpg differ diff --git a/public/assets/images/cards/sneakers-01-320x200.jpg b/public/assets/images/cards/sneakers-01-320x200.jpg new file mode 100644 index 0000000..64bc157 Binary files /dev/null and b/public/assets/images/cards/sneakers-01-320x200.jpg differ diff --git a/public/assets/images/cards/sneakers-02-448x560.jpg b/public/assets/images/cards/sneakers-02-448x560.jpg new file mode 100644 index 0000000..08b2040 Binary files /dev/null and b/public/assets/images/cards/sneakers-02-448x560.jpg differ diff --git a/public/assets/images/cards/sneakers-03-448x560.jpg b/public/assets/images/cards/sneakers-03-448x560.jpg new file mode 100644 index 0000000..15f9fdc Binary files /dev/null and b/public/assets/images/cards/sneakers-03-448x560.jpg differ diff --git a/public/assets/images/demo-content/morain-lake.jpg b/public/assets/images/demo-content/morain-lake.jpg new file mode 100644 index 0000000..cc8e7a3 Binary files /dev/null and b/public/assets/images/demo-content/morain-lake.jpg differ diff --git a/public/assets/images/etc/directory-structure.png b/public/assets/images/etc/directory-structure.png new file mode 100644 index 0000000..2175ca4 Binary files /dev/null and b/public/assets/images/etc/directory-structure.png differ diff --git a/public/assets/images/etc/sample-file-preview.jpg b/public/assets/images/etc/sample-file-preview.jpg new file mode 100644 index 0000000..2c09db0 Binary files /dev/null and b/public/assets/images/etc/sample-file-preview.jpg differ diff --git a/public/assets/images/flags/SA.svg b/public/assets/images/flags/SA.svg new file mode 100644 index 0000000..aca3abd --- /dev/null +++ b/public/assets/images/flags/SA.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/public/assets/images/flags/TR.svg b/public/assets/images/flags/TR.svg new file mode 100644 index 0000000..f092549 --- /dev/null +++ b/public/assets/images/flags/TR.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/public/assets/images/flags/US.svg b/public/assets/images/flags/US.svg new file mode 100644 index 0000000..847c732 --- /dev/null +++ b/public/assets/images/flags/US.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/assets/images/flags/where-to-find-other-flags.txt b/public/assets/images/flags/where-to-find-other-flags.txt new file mode 100644 index 0000000..dcee53a --- /dev/null +++ b/public/assets/images/flags/where-to-find-other-flags.txt @@ -0,0 +1,5 @@ +### Main repository of the flags ### +https://github.com/Yummygum/flagpack-core + +### We used the medium (m) detailed SVGs which are located here ### +https://github.com/Yummygum/flagpack-core/tree/main/svg/m diff --git a/public/assets/images/logo/auth0.svg b/public/assets/images/logo/auth0.svg new file mode 100644 index 0000000..1862884 --- /dev/null +++ b/public/assets/images/logo/auth0.svg @@ -0,0 +1 @@ +auth0-glyph \ No newline at end of file diff --git a/public/assets/images/logo/firebase.svg b/public/assets/images/logo/firebase.svg new file mode 100644 index 0000000..f396a8f --- /dev/null +++ b/public/assets/images/logo/firebase.svg @@ -0,0 +1,52 @@ + + + + logo_lockup_firebase_vertical + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/assets/images/logo/jwt.svg b/public/assets/images/logo/jwt.svg new file mode 100644 index 0000000..4afa1fb --- /dev/null +++ b/public/assets/images/logo/jwt.svg @@ -0,0 +1,27 @@ + + + + Group + Created with Sketch. + + + + + \ No newline at end of file diff --git a/public/assets/images/logo/logo-text-on-dark.svg b/public/assets/images/logo/logo-text-on-dark.svg new file mode 100644 index 0000000..525ec8e --- /dev/null +++ b/public/assets/images/logo/logo-text-on-dark.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/images/logo/logo-text.svg b/public/assets/images/logo/logo-text.svg new file mode 100644 index 0000000..03f1862 --- /dev/null +++ b/public/assets/images/logo/logo-text.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/images/logo/logo.svg b/public/assets/images/logo/logo.svg new file mode 100644 index 0000000..4c2cbfc --- /dev/null +++ b/public/assets/images/logo/logo.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + diff --git a/public/assets/images/logo/logo1.svg b/public/assets/images/logo/logo1.svg new file mode 100644 index 0000000..5e61031 --- /dev/null +++ b/public/assets/images/logo/logo1.svg @@ -0,0 +1,30 @@ + + + + + + + + + diff --git a/public/assets/images/logo/vite.svg b/public/assets/images/logo/vite.svg new file mode 100644 index 0000000..de4aedd --- /dev/null +++ b/public/assets/images/logo/vite.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/public/assets/images/pages/help-center/image-1.jpg b/public/assets/images/pages/help-center/image-1.jpg new file mode 100644 index 0000000..8e734f4 Binary files /dev/null and b/public/assets/images/pages/help-center/image-1.jpg differ diff --git a/public/assets/images/pages/profile/cover.jpg b/public/assets/images/pages/profile/cover.jpg new file mode 100644 index 0000000..9b2a414 Binary files /dev/null and b/public/assets/images/pages/profile/cover.jpg differ diff --git a/public/assets/tailwind-base.css b/public/assets/tailwind-base.css new file mode 100644 index 0000000..efe482a --- /dev/null +++ b/public/assets/tailwind-base.css @@ -0,0 +1,420 @@ + +/** + * HEY HO + */ + +/*! tailwindcss v3.0.24 | MIT License | https://tailwindcss.com + */ + +/* +1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) +2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) +*/ + +*, +::before, +::after { + box-sizing: border-box; /* 1 */ + border-width: 0; /* 2 */ + border-style: solid; /* 2 */ + border-color: #EEEEEE; /* 2 */ +} + +::before, +::after { + --tw-content: ''; +} + +/* +1. Use a consistent sensible line-height in all browsers. +2. Prevent adjustments of font size after orientation changes in iOS. +3. Use a more readable tab size. +4. Use the user's configured `sans` font-family by default. +*/ + +html { + line-height: 1.5; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ /* 3 */ + tab-size: 4; /* 3 */ + font-family: Inter var, Roboto, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 4 */ +} + +/* +1. Remove the margin in all browsers. +2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. +*/ + +body { + margin: 0; /* 1 */ + line-height: inherit; /* 2 */ +} + +/* +1. Add the correct height in Firefox. +2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) +3. Ensure horizontal rules are visible by default. +*/ + +hr { + height: 0; /* 1 */ + color: inherit; /* 2 */ + border-top-width: 1px; /* 3 */ +} + +/* +Add the correct text decoration in Chrome, Edge, and Safari. +*/ + +abbr:where([title]) { + text-decoration: underline dotted; +} + +/* +Remove the default font size and weight for headings. +*/ + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: inherit; + font-weight: inherit; +} + +/* +Reset links to optimize for opt-in styling instead of opt-out. +*/ + +a { + color: inherit; + text-decoration: inherit; +} + +/* +Add the correct font weight in Edge and Safari. +*/ + +b, +strong { + font-weight: bolder; +} + +/* +1. Use the user's configured `mono` font family by default. +2. Correct the odd `em` font sizing in all browsers. +*/ + +code, +kbd, +samp, +pre { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* +Add the correct font size in all browsers. +*/ + +small { + font-size: 80%; +} + +/* +Prevent `sub` and `sup` elements from affecting the line height in all browsers. +*/ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* +1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) +2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) +3. Remove gaps between table borders by default. +*/ + +table { + text-indent: 0; /* 1 */ + border-color: inherit; /* 2 */ + border-collapse: collapse; /* 3 */ +} + +/* +1. Change the font styles in all browsers. +2. Remove the margin in Firefox and Safari. +3. Remove default padding in all browsers. +*/ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: inherit; /* 1 */ + color: inherit; /* 1 */ + margin: 0; /* 2 */ + padding: 0; /* 3 */ +} + +/* +Remove the inheritance of text transform in Edge and Firefox. +*/ + +button, +select { + text-transform: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Remove default button styles. +*/ + +button, +[type='button'], +[type='reset'], +[type='submit'] { + -webkit-appearance: button; /* 1 */ + background-color: transparent; /* 2 */ + background-image: none; /* 2 */ +} + +/* +Use the modern Firefox focus style for all focusable elements. +*/ + +:-moz-focusring { + outline: auto; +} + +/* +Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) +*/ + +:-moz-ui-invalid { + box-shadow: none; +} + +/* +Add the correct vertical alignment in Chrome and Firefox. +*/ + +progress { + vertical-align: baseline; +} + +/* +Correct the cursor style of increment and decrement buttons in Safari. +*/ + +::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height: auto; +} + +/* +1. Correct the odd appearance in Chrome and Safari. +2. Correct the outline style in Safari. +*/ + +[type='search'] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/* +Remove the inner padding in Chrome and Safari on macOS. +*/ + +::-webkit-search-decoration { + -webkit-appearance: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Change font properties to `inherit` in Safari. +*/ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* +Add the correct display in Chrome and Safari. +*/ + +summary { + display: list-item; +} + +/* +Removes the default spacing and border for appropriate elements. +*/ + +blockquote, +dl, +dd, +h1, +h2, +h3, +h4, +h5, +h6, +hr, +figure, +p, +pre { + margin: 0; +} + +fieldset { + margin: 0; + padding: 0; +} + +legend { + padding: 0; +} + +ol, +ul, +menu { + list-style: none; + margin: 0; + padding: 0; +} + +/* +Prevent resizing textareas horizontally by default. +*/ + +textarea { + resize: vertical; +} + +/* +1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) +2. Set the default placeholder color to the user's configured gray 400 color. +*/ + +input::placeholder, +textarea::placeholder { + opacity: 1; /* 1 */ + color: #BDBDBD; /* 2 */ +} + +/* +Set the default cursor for buttons. +*/ + +button, +[role="button"] { + cursor: pointer; +} + +/* +Make sure disabled buttons don't get the pointer cursor. +*/ + +:disabled { + cursor: default; +} + +/* +1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) +2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) + This can trigger a poorly considered lint error in some tools but is included by design. +*/ + +img, +svg, +video, +canvas, +audio, +iframe, +embed, +object { + display: block; /* 1 */ + vertical-align: middle; /* 2 */ +} + +/* +Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) +*/ + +img, +video { + max-width: 100%; + height: auto; +} + +/* +Ensure the default browser behavior of the `hidden` attribute. +*/ + +[hidden] { + display: none; +} + +*, ::before, ::after { + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ''; + --tw-pan-y: ''; + --tw-pinch-zoom: ''; + --tw-scroll-snap-strictness: proximity; + --tw-ordinal: ''; + --tw-slashed-zero: ''; + --tw-numeric-figure: ''; + --tw-numeric-spacing: ''; + --tw-numeric-fraction: ''; + --tw-ring-inset: ''; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(33 150 243 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ''; + --tw-brightness: ''; + --tw-contrast: ''; + --tw-grayscale: ''; + --tw-hue-rotate: ''; + --tw-invert: ''; + --tw-saturate: ''; + --tw-sepia: ''; + --tw-drop-shadow: ''; + --tw-backdrop-blur: ''; + --tw-backdrop-brightness: ''; + --tw-backdrop-contrast: ''; + --tw-backdrop-grayscale: ''; + --tw-backdrop-hue-rotate: ''; + --tw-backdrop-invert: ''; + --tw-backdrop-opacity: ''; + --tw-backdrop-saturate: ''; + --tw-backdrop-sepia: ''; +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..8487576 Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/logo1.svg b/public/logo1.svg new file mode 100644 index 0000000..5e61031 --- /dev/null +++ b/public/logo1.svg @@ -0,0 +1,30 @@ + + + + + + + + + diff --git a/public/manifest.json b/public/manifest.json new file mode 100644 index 0000000..ef19ec2 --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,15 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + } + ], + "start_url": "./index.html", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/public/material-ui-static/brand.png b/public/material-ui-static/brand.png new file mode 100644 index 0000000..7104e3f Binary files /dev/null and b/public/material-ui-static/brand.png differ diff --git a/public/material-ui-static/carbon.png b/public/material-ui-static/carbon.png new file mode 100644 index 0000000..92323f1 Binary files /dev/null and b/public/material-ui-static/carbon.png differ diff --git a/public/material-ui-static/favicon.ico b/public/material-ui-static/favicon.ico new file mode 100644 index 0000000..c87a0e9 Binary files /dev/null and b/public/material-ui-static/favicon.ico differ diff --git a/public/material-ui-static/icons/150x150.png b/public/material-ui-static/icons/150x150.png new file mode 100644 index 0000000..4dc645c Binary files /dev/null and b/public/material-ui-static/icons/150x150.png differ diff --git a/public/material-ui-static/icons/152x152.png b/public/material-ui-static/icons/152x152.png new file mode 100644 index 0000000..5c33950 Binary files /dev/null and b/public/material-ui-static/icons/152x152.png differ diff --git a/public/material-ui-static/icons/192x192.png b/public/material-ui-static/icons/192x192.png new file mode 100644 index 0000000..5306239 Binary files /dev/null and b/public/material-ui-static/icons/192x192.png differ diff --git a/public/material-ui-static/icons/256x256.png b/public/material-ui-static/icons/256x256.png new file mode 100644 index 0000000..4948f92 Binary files /dev/null and b/public/material-ui-static/icons/256x256.png differ diff --git a/public/material-ui-static/icons/310x310.png b/public/material-ui-static/icons/310x310.png new file mode 100644 index 0000000..1769a21 Binary files /dev/null and b/public/material-ui-static/icons/310x310.png differ diff --git a/public/material-ui-static/icons/384x384.png b/public/material-ui-static/icons/384x384.png new file mode 100644 index 0000000..1334709 Binary files /dev/null and b/public/material-ui-static/icons/384x384.png differ diff --git a/public/material-ui-static/icons/48x48.png b/public/material-ui-static/icons/48x48.png new file mode 100644 index 0000000..9578e33 Binary files /dev/null and b/public/material-ui-static/icons/48x48.png differ diff --git a/public/material-ui-static/icons/512x512.png b/public/material-ui-static/icons/512x512.png new file mode 100644 index 0000000..4e9219e Binary files /dev/null and b/public/material-ui-static/icons/512x512.png differ diff --git a/public/material-ui-static/icons/70x70.png b/public/material-ui-static/icons/70x70.png new file mode 100644 index 0000000..80619c2 Binary files /dev/null and b/public/material-ui-static/icons/70x70.png differ diff --git a/public/material-ui-static/icons/96x96.png b/public/material-ui-static/icons/96x96.png new file mode 100644 index 0000000..8a470f8 Binary files /dev/null and b/public/material-ui-static/icons/96x96.png differ diff --git a/public/material-ui-static/images/avatar/1.jpg b/public/material-ui-static/images/avatar/1.jpg new file mode 100644 index 0000000..ecb65e0 Binary files /dev/null and b/public/material-ui-static/images/avatar/1.jpg differ diff --git a/public/material-ui-static/images/avatar/2.jpg b/public/material-ui-static/images/avatar/2.jpg new file mode 100644 index 0000000..74687c0 Binary files /dev/null and b/public/material-ui-static/images/avatar/2.jpg differ diff --git a/public/material-ui-static/images/avatar/3.jpg b/public/material-ui-static/images/avatar/3.jpg new file mode 100644 index 0000000..689b36e Binary files /dev/null and b/public/material-ui-static/images/avatar/3.jpg differ diff --git a/public/material-ui-static/images/avatar/4.jpg b/public/material-ui-static/images/avatar/4.jpg new file mode 100644 index 0000000..91e3f8a Binary files /dev/null and b/public/material-ui-static/images/avatar/4.jpg differ diff --git a/public/material-ui-static/images/avatar/5.jpg b/public/material-ui-static/images/avatar/5.jpg new file mode 100644 index 0000000..da5f487 Binary files /dev/null and b/public/material-ui-static/images/avatar/5.jpg differ diff --git a/public/material-ui-static/images/avatar/6.jpg b/public/material-ui-static/images/avatar/6.jpg new file mode 100644 index 0000000..e160285 Binary files /dev/null and b/public/material-ui-static/images/avatar/6.jpg differ diff --git a/public/material-ui-static/images/avatar/7.jpg b/public/material-ui-static/images/avatar/7.jpg new file mode 100644 index 0000000..8986170 Binary files /dev/null and b/public/material-ui-static/images/avatar/7.jpg differ diff --git a/public/material-ui-static/images/blokt.jpg b/public/material-ui-static/images/blokt.jpg new file mode 100644 index 0000000..d9c5f45 Binary files /dev/null and b/public/material-ui-static/images/blokt.jpg differ diff --git a/public/material-ui-static/images/cards/contemplative-reptile.jpg b/public/material-ui-static/images/cards/contemplative-reptile.jpg new file mode 100644 index 0000000..b453de2 Binary files /dev/null and b/public/material-ui-static/images/cards/contemplative-reptile.jpg differ diff --git a/public/material-ui-static/images/cards/live-from-space.jpg b/public/material-ui-static/images/cards/live-from-space.jpg new file mode 100644 index 0000000..f74b27b Binary files /dev/null and b/public/material-ui-static/images/cards/live-from-space.jpg differ diff --git a/public/material-ui-static/images/cards/paella.jpg b/public/material-ui-static/images/cards/paella.jpg new file mode 100644 index 0000000..df174bc Binary files /dev/null and b/public/material-ui-static/images/cards/paella.jpg differ diff --git a/public/material-ui-static/images/color/colorTool.png b/public/material-ui-static/images/color/colorTool.png new file mode 100644 index 0000000..263c685 Binary files /dev/null and b/public/material-ui-static/images/color/colorTool.png differ diff --git a/public/material-ui-static/images/customization/dev-tools.png b/public/material-ui-static/images/customization/dev-tools.png new file mode 100644 index 0000000..bc1a2a7 Binary files /dev/null and b/public/material-ui-static/images/customization/dev-tools.png differ diff --git a/public/material-ui-static/images/font-size.gif b/public/material-ui-static/images/font-size.gif new file mode 100644 index 0000000..5dcc3de Binary files /dev/null and b/public/material-ui-static/images/font-size.gif differ diff --git a/public/material-ui-static/images/grid-list/bike.jpg b/public/material-ui-static/images/grid-list/bike.jpg new file mode 100644 index 0000000..72c17df Binary files /dev/null and b/public/material-ui-static/images/grid-list/bike.jpg differ diff --git a/public/material-ui-static/images/grid-list/breakfast.jpg b/public/material-ui-static/images/grid-list/breakfast.jpg new file mode 100644 index 0000000..707be70 Binary files /dev/null and b/public/material-ui-static/images/grid-list/breakfast.jpg differ diff --git a/public/material-ui-static/images/grid-list/burgers.jpg b/public/material-ui-static/images/grid-list/burgers.jpg new file mode 100644 index 0000000..06ee579 Binary files /dev/null and b/public/material-ui-static/images/grid-list/burgers.jpg differ diff --git a/public/material-ui-static/images/grid-list/camera.jpg b/public/material-ui-static/images/grid-list/camera.jpg new file mode 100644 index 0000000..3a1d944 Binary files /dev/null and b/public/material-ui-static/images/grid-list/camera.jpg differ diff --git a/public/material-ui-static/images/grid-list/hats.jpg b/public/material-ui-static/images/grid-list/hats.jpg new file mode 100644 index 0000000..507808e Binary files /dev/null and b/public/material-ui-static/images/grid-list/hats.jpg differ diff --git a/public/material-ui-static/images/grid-list/honey.jpg b/public/material-ui-static/images/grid-list/honey.jpg new file mode 100644 index 0000000..6ca4a13 Binary files /dev/null and b/public/material-ui-static/images/grid-list/honey.jpg differ diff --git a/public/material-ui-static/images/grid-list/morning.jpg b/public/material-ui-static/images/grid-list/morning.jpg new file mode 100644 index 0000000..ee2068e Binary files /dev/null and b/public/material-ui-static/images/grid-list/morning.jpg differ diff --git a/public/material-ui-static/images/grid-list/mushroom.jpg b/public/material-ui-static/images/grid-list/mushroom.jpg new file mode 100644 index 0000000..393e0bc Binary files /dev/null and b/public/material-ui-static/images/grid-list/mushroom.jpg differ diff --git a/public/material-ui-static/images/grid-list/olive.jpg b/public/material-ui-static/images/grid-list/olive.jpg new file mode 100644 index 0000000..0c5ca5d Binary files /dev/null and b/public/material-ui-static/images/grid-list/olive.jpg differ diff --git a/public/material-ui-static/images/grid-list/plant.jpg b/public/material-ui-static/images/grid-list/plant.jpg new file mode 100644 index 0000000..f4e855c Binary files /dev/null and b/public/material-ui-static/images/grid-list/plant.jpg differ diff --git a/public/material-ui-static/images/grid-list/star.jpg b/public/material-ui-static/images/grid-list/star.jpg new file mode 100644 index 0000000..411a865 Binary files /dev/null and b/public/material-ui-static/images/grid-list/star.jpg differ diff --git a/public/material-ui-static/images/grid-list/vegetables.jpg b/public/material-ui-static/images/grid-list/vegetables.jpg new file mode 100644 index 0000000..7d5863b Binary files /dev/null and b/public/material-ui-static/images/grid-list/vegetables.jpg differ diff --git a/public/material-ui-static/images/grid/complex.jpg b/public/material-ui-static/images/grid/complex.jpg new file mode 100644 index 0000000..1e9fddc Binary files /dev/null and b/public/material-ui-static/images/grid/complex.jpg differ diff --git a/public/material-ui-static/images/icons/icons.png b/public/material-ui-static/images/icons/icons.png new file mode 100644 index 0000000..b2f28a0 Binary files /dev/null and b/public/material-ui-static/images/icons/icons.png differ diff --git a/public/material-ui-static/images/material-ui-logo.svg b/public/material-ui-static/images/material-ui-logo.svg new file mode 100644 index 0000000..9c2dba7 --- /dev/null +++ b/public/material-ui-static/images/material-ui-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-ui-static/images/misc/circle.png b/public/material-ui-static/images/misc/circle.png new file mode 100644 index 0000000..bd2033b Binary files /dev/null and b/public/material-ui-static/images/misc/circle.png differ diff --git a/public/material-ui-static/images/progress/heavy-load.gif b/public/material-ui-static/images/progress/heavy-load.gif new file mode 100644 index 0000000..24aaf1d Binary files /dev/null and b/public/material-ui-static/images/progress/heavy-load.gif differ diff --git a/public/material-ui-static/images/showcase/aexdownloadcenter.jpg b/public/material-ui-static/images/showcase/aexdownloadcenter.jpg new file mode 100644 index 0000000..a5fef8f Binary files /dev/null and b/public/material-ui-static/images/showcase/aexdownloadcenter.jpg differ diff --git a/public/material-ui-static/images/showcase/arkoclub.jpg b/public/material-ui-static/images/showcase/arkoclub.jpg new file mode 100644 index 0000000..a5f2f71 Binary files /dev/null and b/public/material-ui-static/images/showcase/arkoclub.jpg differ diff --git a/public/material-ui-static/images/showcase/audionodes.jpg b/public/material-ui-static/images/showcase/audionodes.jpg new file mode 100644 index 0000000..85d4206 Binary files /dev/null and b/public/material-ui-static/images/showcase/audionodes.jpg differ diff --git a/public/material-ui-static/images/showcase/barks.jpg b/public/material-ui-static/images/showcase/barks.jpg new file mode 100644 index 0000000..2af7841 Binary files /dev/null and b/public/material-ui-static/images/showcase/barks.jpg differ diff --git a/public/material-ui-static/images/showcase/bethesda.jpg b/public/material-ui-static/images/showcase/bethesda.jpg new file mode 100644 index 0000000..6817ecc Binary files /dev/null and b/public/material-ui-static/images/showcase/bethesda.jpg differ diff --git a/public/material-ui-static/images/showcase/bitcambio.jpg b/public/material-ui-static/images/showcase/bitcambio.jpg new file mode 100644 index 0000000..afa7924 Binary files /dev/null and b/public/material-ui-static/images/showcase/bitcambio.jpg differ diff --git a/public/material-ui-static/images/showcase/builderbook.jpg b/public/material-ui-static/images/showcase/builderbook.jpg new file mode 100644 index 0000000..8b83101 Binary files /dev/null and b/public/material-ui-static/images/showcase/builderbook.jpg differ diff --git a/public/material-ui-static/images/showcase/cityads.jpg b/public/material-ui-static/images/showcase/cityads.jpg new file mode 100644 index 0000000..3767449 Binary files /dev/null and b/public/material-ui-static/images/showcase/cityads.jpg differ diff --git a/public/material-ui-static/images/showcase/cloudhealth.jpg b/public/material-ui-static/images/showcase/cloudhealth.jpg new file mode 100644 index 0000000..466cd59 Binary files /dev/null and b/public/material-ui-static/images/showcase/cloudhealth.jpg differ diff --git a/public/material-ui-static/images/showcase/code-typing-tutor.png b/public/material-ui-static/images/showcase/code-typing-tutor.png new file mode 100644 index 0000000..e6df370 Binary files /dev/null and b/public/material-ui-static/images/showcase/code-typing-tutor.png differ diff --git a/public/material-ui-static/images/showcase/codementor.jpg b/public/material-ui-static/images/showcase/codementor.jpg new file mode 100644 index 0000000..bdf8af9 Binary files /dev/null and b/public/material-ui-static/images/showcase/codementor.jpg differ diff --git a/public/material-ui-static/images/showcase/collegeai.jpg b/public/material-ui-static/images/showcase/collegeai.jpg new file mode 100644 index 0000000..857eb1d Binary files /dev/null and b/public/material-ui-static/images/showcase/collegeai.jpg differ diff --git a/public/material-ui-static/images/showcase/comet.jpg b/public/material-ui-static/images/showcase/comet.jpg new file mode 100644 index 0000000..e255a08 Binary files /dev/null and b/public/material-ui-static/images/showcase/comet.jpg differ diff --git a/public/material-ui-static/images/showcase/commitswimming.jpg b/public/material-ui-static/images/showcase/commitswimming.jpg new file mode 100644 index 0000000..c41b9d9 Binary files /dev/null and b/public/material-ui-static/images/showcase/commitswimming.jpg differ diff --git a/public/material-ui-static/images/showcase/cryptoverview.jpg b/public/material-ui-static/images/showcase/cryptoverview.jpg new file mode 100644 index 0000000..4fba3dc Binary files /dev/null and b/public/material-ui-static/images/showcase/cryptoverview.jpg differ diff --git a/public/material-ui-static/images/showcase/dropdesk.jpg b/public/material-ui-static/images/showcase/dropdesk.jpg new file mode 100644 index 0000000..c1b87c3 Binary files /dev/null and b/public/material-ui-static/images/showcase/dropdesk.jpg differ diff --git a/public/material-ui-static/images/showcase/eostoolkit.jpg b/public/material-ui-static/images/showcase/eostoolkit.jpg new file mode 100644 index 0000000..2348f9d Binary files /dev/null and b/public/material-ui-static/images/showcase/eostoolkit.jpg differ diff --git a/public/material-ui-static/images/showcase/eq3.jpg b/public/material-ui-static/images/showcase/eq3.jpg new file mode 100644 index 0000000..42e7db9 Binary files /dev/null and b/public/material-ui-static/images/showcase/eq3.jpg differ diff --git a/public/material-ui-static/images/showcase/eventhi.jpg b/public/material-ui-static/images/showcase/eventhi.jpg new file mode 100644 index 0000000..3be467b Binary files /dev/null and b/public/material-ui-static/images/showcase/eventhi.jpg differ diff --git a/public/material-ui-static/images/showcase/fizix.jpg b/public/material-ui-static/images/showcase/fizix.jpg new file mode 100644 index 0000000..fcd9678 Binary files /dev/null and b/public/material-ui-static/images/showcase/fizix.jpg differ diff --git a/public/material-ui-static/images/showcase/flink.jpg b/public/material-ui-static/images/showcase/flink.jpg new file mode 100644 index 0000000..0e6bbfc Binary files /dev/null and b/public/material-ui-static/images/showcase/flink.jpg differ diff --git a/public/material-ui-static/images/showcase/fluxguard.jpg b/public/material-ui-static/images/showcase/fluxguard.jpg new file mode 100644 index 0000000..243efd2 Binary files /dev/null and b/public/material-ui-static/images/showcase/fluxguard.jpg differ diff --git a/public/material-ui-static/images/showcase/forex.jpg b/public/material-ui-static/images/showcase/forex.jpg new file mode 100644 index 0000000..d1f3898 Binary files /dev/null and b/public/material-ui-static/images/showcase/forex.jpg differ diff --git a/public/material-ui-static/images/showcase/govx.jpg b/public/material-ui-static/images/showcase/govx.jpg new file mode 100644 index 0000000..d3ee1fa Binary files /dev/null and b/public/material-ui-static/images/showcase/govx.jpg differ diff --git a/public/material-ui-static/images/showcase/hijup.jpg b/public/material-ui-static/images/showcase/hijup.jpg new file mode 100644 index 0000000..a785618 Binary files /dev/null and b/public/material-ui-static/images/showcase/hijup.jpg differ diff --git a/public/material-ui-static/images/showcase/hkn.jpg b/public/material-ui-static/images/showcase/hkn.jpg new file mode 100644 index 0000000..79354f3 Binary files /dev/null and b/public/material-ui-static/images/showcase/hkn.jpg differ diff --git a/public/material-ui-static/images/showcase/housecall.jpg b/public/material-ui-static/images/showcase/housecall.jpg new file mode 100644 index 0000000..75aa173 Binary files /dev/null and b/public/material-ui-static/images/showcase/housecall.jpg differ diff --git a/public/material-ui-static/images/showcase/icebergfinder.jpg b/public/material-ui-static/images/showcase/icebergfinder.jpg new file mode 100644 index 0000000..3bd78df Binary files /dev/null and b/public/material-ui-static/images/showcase/icebergfinder.jpg differ diff --git a/public/material-ui-static/images/showcase/ifit.jpg b/public/material-ui-static/images/showcase/ifit.jpg new file mode 100644 index 0000000..5a5241f Binary files /dev/null and b/public/material-ui-static/images/showcase/ifit.jpg differ diff --git a/public/material-ui-static/images/showcase/johnnymetrics.jpg b/public/material-ui-static/images/showcase/johnnymetrics.jpg new file mode 100644 index 0000000..38ae714 Binary files /dev/null and b/public/material-ui-static/images/showcase/johnnymetrics.jpg differ diff --git a/public/material-ui-static/images/showcase/learnseeker.jpg b/public/material-ui-static/images/showcase/learnseeker.jpg new file mode 100644 index 0000000..fdb7718 Binary files /dev/null and b/public/material-ui-static/images/showcase/learnseeker.jpg differ diff --git a/public/material-ui-static/images/showcase/leroymerlin.jpg b/public/material-ui-static/images/showcase/leroymerlin.jpg new file mode 100644 index 0000000..78e727a Binary files /dev/null and b/public/material-ui-static/images/showcase/leroymerlin.jpg differ diff --git a/public/material-ui-static/images/showcase/lesswrong.jpg b/public/material-ui-static/images/showcase/lesswrong.jpg new file mode 100644 index 0000000..9c44444 Binary files /dev/null and b/public/material-ui-static/images/showcase/lesswrong.jpg differ diff --git a/public/material-ui-static/images/showcase/localinsights.jpg b/public/material-ui-static/images/showcase/localinsights.jpg new file mode 100644 index 0000000..c8c3cdf Binary files /dev/null and b/public/material-ui-static/images/showcase/localinsights.jpg differ diff --git a/public/material-ui-static/images/showcase/localmonero.jpg b/public/material-ui-static/images/showcase/localmonero.jpg new file mode 100644 index 0000000..60f08c4 Binary files /dev/null and b/public/material-ui-static/images/showcase/localmonero.jpg differ diff --git a/public/material-ui-static/images/showcase/magicmondayz.jpg b/public/material-ui-static/images/showcase/magicmondayz.jpg new file mode 100644 index 0000000..c59974c Binary files /dev/null and b/public/material-ui-static/images/showcase/magicmondayz.jpg differ diff --git a/public/material-ui-static/images/showcase/manty.jpg b/public/material-ui-static/images/showcase/manty.jpg new file mode 100644 index 0000000..d526ca4 Binary files /dev/null and b/public/material-ui-static/images/showcase/manty.jpg differ diff --git a/public/material-ui-static/images/showcase/melbournemint.jpg b/public/material-ui-static/images/showcase/melbournemint.jpg new file mode 100644 index 0000000..65a472e Binary files /dev/null and b/public/material-ui-static/images/showcase/melbournemint.jpg differ diff --git a/public/material-ui-static/images/showcase/metafact.jpg b/public/material-ui-static/images/showcase/metafact.jpg new file mode 100644 index 0000000..cdd9de5 Binary files /dev/null and b/public/material-ui-static/images/showcase/metafact.jpg differ diff --git a/public/material-ui-static/images/showcase/modole.jpg b/public/material-ui-static/images/showcase/modole.jpg new file mode 100644 index 0000000..dc21f95 Binary files /dev/null and b/public/material-ui-static/images/showcase/modole.jpg differ diff --git a/public/material-ui-static/images/showcase/mqtt-explorer.png b/public/material-ui-static/images/showcase/mqtt-explorer.png new file mode 100644 index 0000000..85dafb6 Binary files /dev/null and b/public/material-ui-static/images/showcase/mqtt-explorer.png differ diff --git a/public/material-ui-static/images/showcase/neotracker.jpg b/public/material-ui-static/images/showcase/neotracker.jpg new file mode 100644 index 0000000..c440d71 Binary files /dev/null and b/public/material-ui-static/images/showcase/neotracker.jpg differ diff --git a/public/material-ui-static/images/showcase/npm-registry-browser.jpg b/public/material-ui-static/images/showcase/npm-registry-browser.jpg new file mode 100644 index 0000000..f1651d1 Binary files /dev/null and b/public/material-ui-static/images/showcase/npm-registry-browser.jpg differ diff --git a/public/material-ui-static/images/showcase/numerai.jpg b/public/material-ui-static/images/showcase/numerai.jpg new file mode 100644 index 0000000..02801ed Binary files /dev/null and b/public/material-ui-static/images/showcase/numerai.jpg differ diff --git a/public/material-ui-static/images/showcase/odigeo.jpg b/public/material-ui-static/images/showcase/odigeo.jpg new file mode 100644 index 0000000..0f243b5 Binary files /dev/null and b/public/material-ui-static/images/showcase/odigeo.jpg differ diff --git a/public/material-ui-static/images/showcase/oneplanetcrowd.jpg b/public/material-ui-static/images/showcase/oneplanetcrowd.jpg new file mode 100644 index 0000000..445e8d0 Binary files /dev/null and b/public/material-ui-static/images/showcase/oneplanetcrowd.jpg differ diff --git a/public/material-ui-static/images/showcase/oneshotmove.jpg b/public/material-ui-static/images/showcase/oneshotmove.jpg new file mode 100644 index 0000000..e9d8268 Binary files /dev/null and b/public/material-ui-static/images/showcase/oneshotmove.jpg differ diff --git a/public/material-ui-static/images/showcase/openclassrooms.jpg b/public/material-ui-static/images/showcase/openclassrooms.jpg new file mode 100644 index 0000000..c35dce0 Binary files /dev/null and b/public/material-ui-static/images/showcase/openclassrooms.jpg differ diff --git a/public/material-ui-static/images/showcase/persona.jpg b/public/material-ui-static/images/showcase/persona.jpg new file mode 100644 index 0000000..2ba68d6 Binary files /dev/null and b/public/material-ui-static/images/showcase/persona.jpg differ diff --git a/public/material-ui-static/images/showcase/photoutils.jpg b/public/material-ui-static/images/showcase/photoutils.jpg new file mode 100644 index 0000000..f860b9a Binary files /dev/null and b/public/material-ui-static/images/showcase/photoutils.jpg differ diff --git a/public/material-ui-static/images/showcase/pilcro.jpg b/public/material-ui-static/images/showcase/pilcro.jpg new file mode 100644 index 0000000..15695d9 Binary files /dev/null and b/public/material-ui-static/images/showcase/pilcro.jpg differ diff --git a/public/material-ui-static/images/showcase/planalyze.jpg b/public/material-ui-static/images/showcase/planalyze.jpg new file mode 100644 index 0000000..e0b5358 Binary files /dev/null and b/public/material-ui-static/images/showcase/planalyze.jpg differ diff --git a/public/material-ui-static/images/showcase/pointer.jpg b/public/material-ui-static/images/showcase/pointer.jpg new file mode 100644 index 0000000..69be815 Binary files /dev/null and b/public/material-ui-static/images/showcase/pointer.jpg differ diff --git a/public/material-ui-static/images/showcase/posters-galore.jpg b/public/material-ui-static/images/showcase/posters-galore.jpg new file mode 100644 index 0000000..a9952f1 Binary files /dev/null and b/public/material-ui-static/images/showcase/posters-galore.jpg differ diff --git a/public/material-ui-static/images/showcase/quintoandar.png b/public/material-ui-static/images/showcase/quintoandar.png new file mode 100644 index 0000000..fb880e7 Binary files /dev/null and b/public/material-ui-static/images/showcase/quintoandar.png differ diff --git a/public/material-ui-static/images/showcase/rarebits.jpg b/public/material-ui-static/images/showcase/rarebits.jpg new file mode 100644 index 0000000..fd4811c Binary files /dev/null and b/public/material-ui-static/images/showcase/rarebits.jpg differ diff --git a/public/material-ui-static/images/showcase/roast.jpg b/public/material-ui-static/images/showcase/roast.jpg new file mode 100644 index 0000000..e21a222 Binary files /dev/null and b/public/material-ui-static/images/showcase/roast.jpg differ diff --git a/public/material-ui-static/images/showcase/rung.jpg b/public/material-ui-static/images/showcase/rung.jpg new file mode 100644 index 0000000..82a5826 Binary files /dev/null and b/public/material-ui-static/images/showcase/rung.jpg differ diff --git a/public/material-ui-static/images/showcase/selfeducationapp.jpg b/public/material-ui-static/images/showcase/selfeducationapp.jpg new file mode 100644 index 0000000..849dfc8 Binary files /dev/null and b/public/material-ui-static/images/showcase/selfeducationapp.jpg differ diff --git a/public/material-ui-static/images/showcase/sfrpresse.jpg b/public/material-ui-static/images/showcase/sfrpresse.jpg new file mode 100644 index 0000000..539785c Binary files /dev/null and b/public/material-ui-static/images/showcase/sfrpresse.jpg differ diff --git a/public/material-ui-static/images/showcase/slidesup.jpg b/public/material-ui-static/images/showcase/slidesup.jpg new file mode 100644 index 0000000..25ed56d Binary files /dev/null and b/public/material-ui-static/images/showcase/slidesup.jpg differ diff --git a/public/material-ui-static/images/showcase/snippets.jpg b/public/material-ui-static/images/showcase/snippets.jpg new file mode 100644 index 0000000..2bf81ef Binary files /dev/null and b/public/material-ui-static/images/showcase/snippets.jpg differ diff --git a/public/material-ui-static/images/showcase/sweek.jpg b/public/material-ui-static/images/showcase/sweek.jpg new file mode 100644 index 0000000..42a3464 Binary files /dev/null and b/public/material-ui-static/images/showcase/sweek.jpg differ diff --git a/public/material-ui-static/images/showcase/swimmy.jpg b/public/material-ui-static/images/showcase/swimmy.jpg new file mode 100644 index 0000000..f7bb11f Binary files /dev/null and b/public/material-ui-static/images/showcase/swimmy.jpg differ diff --git a/public/material-ui-static/images/showcase/tentu.jpg b/public/material-ui-static/images/showcase/tentu.jpg new file mode 100644 index 0000000..70f882b Binary files /dev/null and b/public/material-ui-static/images/showcase/tentu.jpg differ diff --git a/public/material-ui-static/images/showcase/themediaant.jpg b/public/material-ui-static/images/showcase/themediaant.jpg new file mode 100644 index 0000000..e3415b9 Binary files /dev/null and b/public/material-ui-static/images/showcase/themediaant.jpg differ diff --git a/public/material-ui-static/images/showcase/trafikito-monitoring.jpg b/public/material-ui-static/images/showcase/trafikito-monitoring.jpg new file mode 100644 index 0000000..4a8e45e Binary files /dev/null and b/public/material-ui-static/images/showcase/trafikito-monitoring.jpg differ diff --git a/public/material-ui-static/images/showcase/tree.jpg b/public/material-ui-static/images/showcase/tree.jpg new file mode 100644 index 0000000..0e21e95 Binary files /dev/null and b/public/material-ui-static/images/showcase/tree.jpg differ diff --git a/public/material-ui-static/images/showcase/tudiscovery.jpg b/public/material-ui-static/images/showcase/tudiscovery.jpg new file mode 100644 index 0000000..046c780 Binary files /dev/null and b/public/material-ui-static/images/showcase/tudiscovery.jpg differ diff --git a/public/material-ui-static/images/showcase/typekev.jpg b/public/material-ui-static/images/showcase/typekev.jpg new file mode 100644 index 0000000..273fa55 Binary files /dev/null and b/public/material-ui-static/images/showcase/typekev.jpg differ diff --git a/public/material-ui-static/images/showcase/venuemob.jpg b/public/material-ui-static/images/showcase/venuemob.jpg new file mode 100644 index 0000000..334a572 Binary files /dev/null and b/public/material-ui-static/images/showcase/venuemob.jpg differ diff --git a/public/material-ui-static/images/templates/album.png b/public/material-ui-static/images/templates/album.png new file mode 100644 index 0000000..0e55422 Binary files /dev/null and b/public/material-ui-static/images/templates/album.png differ diff --git a/public/material-ui-static/images/templates/blog.png b/public/material-ui-static/images/templates/blog.png new file mode 100644 index 0000000..484a9a5 Binary files /dev/null and b/public/material-ui-static/images/templates/blog.png differ diff --git a/public/material-ui-static/images/templates/checkout.png b/public/material-ui-static/images/templates/checkout.png new file mode 100644 index 0000000..1920446 Binary files /dev/null and b/public/material-ui-static/images/templates/checkout.png differ diff --git a/public/material-ui-static/images/templates/dashboard.png b/public/material-ui-static/images/templates/dashboard.png new file mode 100644 index 0000000..0e627f1 Binary files /dev/null and b/public/material-ui-static/images/templates/dashboard.png differ diff --git a/public/material-ui-static/images/templates/pricing.png b/public/material-ui-static/images/templates/pricing.png new file mode 100644 index 0000000..baf70cf Binary files /dev/null and b/public/material-ui-static/images/templates/pricing.png differ diff --git a/public/material-ui-static/images/templates/sign-in-side.png b/public/material-ui-static/images/templates/sign-in-side.png new file mode 100644 index 0000000..1ccf575 Binary files /dev/null and b/public/material-ui-static/images/templates/sign-in-side.png differ diff --git a/public/material-ui-static/images/templates/sign-in.png b/public/material-ui-static/images/templates/sign-in.png new file mode 100644 index 0000000..47e0482 Binary files /dev/null and b/public/material-ui-static/images/templates/sign-in.png differ diff --git a/public/material-ui-static/images/templates/sign-up.png b/public/material-ui-static/images/templates/sign-up.png new file mode 100644 index 0000000..6c5a98e Binary files /dev/null and b/public/material-ui-static/images/templates/sign-up.png differ diff --git a/public/material-ui-static/images/templates/sticky-footer.png b/public/material-ui-static/images/templates/sticky-footer.png new file mode 100644 index 0000000..a332845 Binary files /dev/null and b/public/material-ui-static/images/templates/sticky-footer.png differ diff --git a/public/material-ui-static/images/text-fields/shrink.png b/public/material-ui-static/images/text-fields/shrink.png new file mode 100644 index 0000000..e13d6a9 Binary files /dev/null and b/public/material-ui-static/images/text-fields/shrink.png differ diff --git a/public/material-ui-static/images/themes-dark.jpg b/public/material-ui-static/images/themes-dark.jpg new file mode 100644 index 0000000..311f91c Binary files /dev/null and b/public/material-ui-static/images/themes-dark.jpg differ diff --git a/public/material-ui-static/images/themes-light.jpg b/public/material-ui-static/images/themes-light.jpg new file mode 100644 index 0000000..b6d4d6b Binary files /dev/null and b/public/material-ui-static/images/themes-light.jpg differ diff --git a/public/material-ui-static/images/users/bethesda.png b/public/material-ui-static/images/users/bethesda.png new file mode 100644 index 0000000..d358323 Binary files /dev/null and b/public/material-ui-static/images/users/bethesda.png differ diff --git a/public/material-ui-static/images/users/capgemini.png b/public/material-ui-static/images/users/capgemini.png new file mode 100644 index 0000000..29fbb9d Binary files /dev/null and b/public/material-ui-static/images/users/capgemini.png differ diff --git a/public/material-ui-static/images/users/nasa.png b/public/material-ui-static/images/users/nasa.png new file mode 100644 index 0000000..cf8c5a7 Binary files /dev/null and b/public/material-ui-static/images/users/nasa.png differ diff --git a/public/material-ui-static/images/users/uniqlo.png b/public/material-ui-static/images/users/uniqlo.png new file mode 100644 index 0000000..4edeef2 Binary files /dev/null and b/public/material-ui-static/images/users/uniqlo.png differ diff --git a/public/material-ui-static/images/users/walmart-labs.png b/public/material-ui-static/images/users/walmart-labs.png new file mode 100644 index 0000000..d29d0c1 Binary files /dev/null and b/public/material-ui-static/images/users/walmart-labs.png differ diff --git a/public/material-ui-static/logo.png b/public/material-ui-static/logo.png new file mode 100644 index 0000000..4e9219e Binary files /dev/null and b/public/material-ui-static/logo.png differ diff --git a/public/material-ui-static/manifest.json b/public/material-ui-static/manifest.json new file mode 100644 index 0000000..c2e44f6 --- /dev/null +++ b/public/material-ui-static/manifest.json @@ -0,0 +1,34 @@ +{ + "name": "Material-UI", + "short_name": "MUI", + "display": "browser", + "start_url": "/", + "theme_color": "#2196f3", + "background_color": "#2196f3", + "icons": [ + { + "src": "/static/icons/48x48.png", + "sizes": "48x48" + }, + { + "src": "/static/icons/96x96.png", + "sizes": "96x96" + }, + { + "src": "/static/icons/192x192.png", + "sizes": "192x192" + }, + { + "src": "/static/icons/256x256.png", + "sizes": "256x256" + }, + { + "src": "/static/icons/384x384.png", + "sizes": "384x384" + }, + { + "src": "/static/icons/512x512.png", + "sizes": "512x512" + } + ] +} diff --git a/src/@fuse/colors/fuseDark.ts b/src/@fuse/colors/fuseDark.ts new file mode 100644 index 0000000..2f45ac5 --- /dev/null +++ b/src/@fuse/colors/fuseDark.ts @@ -0,0 +1,22 @@ +/** + * The FuseDark object is a color palette for the Fuse application. + */ +const fuseDark = { + 50: '#e5e6e8', + 100: '#bec1c5', + 200: '#92979f', + 300: '#666d78', + 400: '#464e5b', + 500: '#252f3e', + 600: '#212a38', + 700: '#1b2330', + 800: '#161d28', + 900: '#0d121b', + A100: '#5d8eff', + A200: '#2a6aff', + A400: '#004af6', + A700: '#0042dd', + contrastDefaultColor: 'light' +}; + +export default fuseDark; diff --git a/src/@fuse/colors/index.ts b/src/@fuse/colors/index.ts new file mode 100644 index 0000000..029f831 --- /dev/null +++ b/src/@fuse/colors/index.ts @@ -0,0 +1,2 @@ +export { default as fuseDark } from './fuseDark'; +export { default as skyBlue } from './skyBlue'; diff --git a/src/@fuse/colors/skyBlue.ts b/src/@fuse/colors/skyBlue.ts new file mode 100644 index 0000000..3ae436c --- /dev/null +++ b/src/@fuse/colors/skyBlue.ts @@ -0,0 +1,22 @@ +/** + * The skyBlue object is a color palette for the Fuse application. + */ +const skyBlue = { + 50: '#e4fafd', + 100: '#bdf2fa', + 200: '#91e9f7', + 300: '#64e0f3', + 400: '#43daf1', + 500: '#22d3ee', + 600: '#1eceec', + 700: '#19c8e9', + 800: '#14c2e7', + 900: '#0cb7e2', + A100: '#ffffff', + A200: '#daf7ff', + A400: '#a7ecff', + A700: '#8de6ff', + contrastDefaultColor: 'dark' +}; + +export default skyBlue; diff --git a/src/@fuse/core/BrowserRouter/BrowserRouter.tsx b/src/@fuse/core/BrowserRouter/BrowserRouter.tsx new file mode 100644 index 0000000..112f8be --- /dev/null +++ b/src/@fuse/core/BrowserRouter/BrowserRouter.tsx @@ -0,0 +1,32 @@ +import React, { useLayoutEffect, useState } from 'react'; +import history from '@history'; +import { BrowserRouterProps, Router } from 'react-router-dom'; + +/** + * The BrowserRouter component provides an interface for users to interact with the application's history. + * It is responsible for managing the routing through the use of the `react-router-dom` library and the browser's `history` object. + * It also integrates with `useLayoutEffect` to listen for changes to the `location` state from the browser's `history` object. + */ +function BrowserRouter(props: BrowserRouterProps) { + const { basename, children } = props; + + const [state, setState] = useState({ + action: history.action, + location: history.location + }); + + useLayoutEffect(() => history.listen(setState), [history]); + + return ( + + {children} + + ); +} + +export default BrowserRouter; diff --git a/src/@fuse/core/BrowserRouter/index.ts b/src/@fuse/core/BrowserRouter/index.ts new file mode 100644 index 0000000..8912b1d --- /dev/null +++ b/src/@fuse/core/BrowserRouter/index.ts @@ -0,0 +1 @@ +export { default } from './BrowserRouter'; diff --git a/src/@fuse/core/DemoContent/DemoContent.tsx b/src/@fuse/core/DemoContent/DemoContent.tsx new file mode 100644 index 0000000..7f8d0d7 --- /dev/null +++ b/src/@fuse/core/DemoContent/DemoContent.tsx @@ -0,0 +1,123 @@ +import { memo } from 'react'; + +/** + * DemoContent is a React component used to render a demo content on the page. + * It renders a image on the page followed by a heading, some text and a footer. + * It also renders a quote and some content about a person being transformed into a vermin. + */ +function DemoContent() { + return ( +
+ beach +

Early Sunrise

+

Demo Content

+

+ One morning, when Gregor Samsa woke from troubled dreams, he found himself transformed in his bed into a + horrible vermin. He lay on his armour-like back, and if he lifted his head a little he could see his + brown belly, slightly domed and divided by arches into stiff sections. +

+
+

+ The bedding was hardly able to cover it and seemed ready to slide off any moment. His many legs, + pitifully thin compared with the size of the rest of him, waved about helplessly as he looked. + "What's happened to me? " he thought. It wasn't a dream. +

+
John Doe
+
+

+ His room, a proper human room although a little too small, lay peacefully between its four familiar + walls. A collection of textile samples lay spread out on the table - Samsa was a travelling salesman - + and above it there hung a picture that he had recently cut out of an illustrated magazine and housed in + a nice, gilded frame. +

+

+ It showed a lady fitted out with a fur hat and fur boa who sat upright, raising a heavy fur muff that + covered the whole of her lower arm towards the viewer. Gregor then turned to look out the window at the + dull weather. Drops of rain could be heard hitting the pane, which made him feel quite sad. +

+

+ "How about if I sleep a little bit longer and forget all this nonsense", he thought, but that was + something he was unable to do because he was used to sleeping on his right, and in his present state + couldn't get into that position. However hard he threw himself onto his right, he always rolled back to + where he was. +

+

+ He must have tried it a hundred times, shut his eyes so that he wouldn't have to look at the floundering + legs, and only stopped when he began to feel a mild, dull pain there that he had never felt before. "Oh, + God", he thought, "what a strenuous career it is that I've chosen! +

+

+ Travelling day in and day out. Doing business like this takes much more effort than doing your own + business at home, and on top of that there's the curse of travelling, worries about making train + connections, bad and irregular food, contact with different people all the time so that you can never + get to know anyone or become friendly with them. +

+

+ "He felt a slight itch up on his belly; pushed himself slowly up on his back towards the headboard so + that he could lift his head better; found where the itch was, and saw that it was covered with lots of + little white spots which he didn't know what to make of; and when he tried to feel the place with one of + his legs he drew it quickly back because as soon as he touched it he was overcome by a cold shudder. He + slid back into his former position. +

+

+ "Getting up early all the time", he thought, "it makes you stupid. You've got to get enough sleep. Other + travelling salesmen live a life of luxury. For instance, whenever I go back to the guest house during + the morning to copy out the contract, these gentlemen are always still sitting there eating their + breakfasts. I ought to just try that with my boss; I'd get kicked out on the spot. But who knows, maybe + that would be the best thing for me... +

+

+ His room, a proper human room although a little too small, lay peacefully between its four familiar + walls. A collection of textile samples lay spread out on the table - Samsa was a travelling salesman - + and above it there hung a picture that he had recently cut out of an illustrated magazine and housed in + a nice, gilded frame. +

+

+ It showed a lady fitted out with a fur hat and fur boa who sat upright, raising a heavy fur muff that + covered the whole of her lower arm towards the viewer. Gregor then turned to look out the window at the + dull weather. Drops of rain could be heard hitting the pane, which made him feel quite sad. +

+

+ "How about if I sleep a little bit longer and forget all this nonsense", he thought, but that was + something he was unable to do because he was used to sleeping on his right, and in his present state + couldn't get into that position. However hard he threw himself onto his right, he always rolled back to + where he was. +

+

+ He must have tried it a hundred times, shut his eyes so that he wouldn't have to look at the floundering + legs, and only stopped when he began to feel a mild, dull pain there that he had never felt before. "Oh, + God", he thought, "what a strenuous career it is that I've chosen! +

+

+ Travelling day in and day out. Doing business like this takes much more effort than doing your own + business at home, and on top of that there's the curse of travelling, worries about making train + connections, bad and irregular food, contact with different people all the time so that you can never + get to know anyone or become friendly with them. +

+

+ "He felt a slight itch up on his belly; pushed himself slowly up on his back towards the headboard so + that he could lift his head better; found where the itch was, and saw that it was covered with lots of + little white spots which he didn't know what to make of; and when he tried to feel the place with one of + his legs he drew it quickly back because as soon as he touched it he was overcome by a cold shudder. He + slid back into his former position. +

+

+ "Getting up early all the time", he thought, "it makes you stupid. You've got to get enough sleep. Other + travelling salesmen live a life of luxury. For instance, whenever I go back to the guest house during + the morning to copy out the contract, these gentlemen are always still sitting there eating their + breakfasts. I ought to just try that with my boss; I'd get kicked out on the spot. But who knows, maybe + that would be the best thing for me... +

+
+ ); +} + +export default memo(DemoContent); diff --git a/src/@fuse/core/DemoContent/index.ts b/src/@fuse/core/DemoContent/index.ts new file mode 100644 index 0000000..18c506a --- /dev/null +++ b/src/@fuse/core/DemoContent/index.ts @@ -0,0 +1 @@ +export { default } from './DemoContent'; diff --git a/src/@fuse/core/DemoSidebarContent/DemoSidebarContent.tsx b/src/@fuse/core/DemoSidebarContent/DemoSidebarContent.tsx new file mode 100644 index 0000000..fcef009 --- /dev/null +++ b/src/@fuse/core/DemoSidebarContent/DemoSidebarContent.tsx @@ -0,0 +1,32 @@ +import _ from '@lodash'; +import List from '@mui/material/List'; +import ListItemButton from '@mui/material/ListItemButton'; +import ListItemText from '@mui/material/ListItemText'; +import { cloneElement, memo } from 'react'; + +/** + * This component renders a demo sidebar content which contains List with ListItemButton and ListItemText for -30- times. + */ +function DemoSidebarContent() { + function generate(element: JSX.Element) { + return _(30).times((value) => + cloneElement(element, { + key: value + }) + ); + } + + return ( +
+ + {generate( + + + + )} + +
+ ); +} + +export default memo(DemoSidebarContent); diff --git a/src/@fuse/core/DemoSidebarContent/index.ts b/src/@fuse/core/DemoSidebarContent/index.ts new file mode 100644 index 0000000..843f3aa --- /dev/null +++ b/src/@fuse/core/DemoSidebarContent/index.ts @@ -0,0 +1 @@ +export { default } from './DemoSidebarContent'; diff --git a/src/@fuse/core/FuseAuthorization/FuseAuthorization.tsx b/src/@fuse/core/FuseAuthorization/FuseAuthorization.tsx new file mode 100644 index 0000000..c0f351d --- /dev/null +++ b/src/@fuse/core/FuseAuthorization/FuseAuthorization.tsx @@ -0,0 +1,135 @@ +import { Component, ReactNode } from 'react'; +import { matchRoutes } from 'react-router-dom'; +import FuseUtils from '@fuse/utils'; +import AppContext, { AppContextType } from 'app/AppContext'; +import withRouter from '@fuse/core/withRouter'; +import history from '@history'; +import { WithRouterProps } from '@fuse/core/withRouter/withRouter'; +import { FuseRouteItemType } from '@fuse/utils/FuseUtils'; +import { + getSessionRedirectUrl, + resetSessionRedirectUrl, + setSessionRedirectUrl +} from '@fuse/core/FuseAuthorization/sessionRedirectUrl'; +import FuseLoading from '@fuse/core/FuseLoading'; + +type FuseAuthorizationProps = { + children: ReactNode; + location: Location; + userRole: string[] | string; + loginRedirectUrl?: string; +} & WithRouterProps; + +type State = AppContextType & { + accessGranted: boolean; +}; + +function isUserGuest(role: string[] | string) { + return !role || (Array.isArray(role) && role.length === 0); +} + +/** + * FuseAuthorization is a higher-order component that wraps its child component which handles the authorization logic of the app. + * It checks the provided Auth property from FuseRouteItemType (auth property) against the current logged-in user role. + */ +class FuseAuthorization extends Component { + constructor(props: FuseAuthorizationProps, context: AppContextType) { + super(props); + + const { routes } = context; + + this.state = { + accessGranted: true, + routes + }; + } + + componentDidMount() { + const { accessGranted } = this.state; + + if (!accessGranted) { + this.redirectRoute(); + } + } + + shouldComponentUpdate(nextProps: FuseAuthorizationProps, nextState: State) { + const { accessGranted } = this.state; + + return nextState.accessGranted !== accessGranted; + } + + componentDidUpdate() { + const { accessGranted } = this.state; + + if (!accessGranted) { + this.redirectRoute(); + } + } + + static getDerivedStateFromProps(props: FuseAuthorizationProps, state: State) { + const { location, userRole } = props; + const { pathname } = location; + const matchedRoutes = matchRoutes(state.routes, pathname); + const matched = matchedRoutes ? matchedRoutes[0] : false; + + const isGuest = isUserGuest(userRole); + + if (!matched) { + return { accessGranted: true }; + } + + const { route }: { route: FuseRouteItemType } = matched; + + const userHasPermission = FuseUtils.hasPermission(route.auth, userRole); + + const ignoredPaths = ['/', '/callback', '/sign-in', '/sign-out', '/logout', '/404']; + + if (matched && !userHasPermission && !ignoredPaths.includes(pathname)) { + setSessionRedirectUrl(pathname); + } + + /** + * If user is member but don't have permission to view the route + * redirected to main route '/' + */ + if (!userHasPermission && !isGuest && !ignoredPaths.includes(pathname)) { + setSessionRedirectUrl('/'); + } + + return { + accessGranted: matched ? userHasPermission : true + }; + } + + redirectRoute() { + const { userRole, loginRedirectUrl = '/' } = this.props; + const redirectUrl = getSessionRedirectUrl() || loginRedirectUrl; + + /* + User is guest + Redirect to Login Page + */ + if (!userRole || userRole.length === 0) { + setTimeout(() => history.push('/sign-in'), 0); + } else { + /* + User is member + User must be on unAuthorized page or just logged in + Redirect to dashboard or loginRedirectUrl + */ + setTimeout(() => history.push(redirectUrl), 0); + resetSessionRedirectUrl(); + } + } + + render() { + const { accessGranted } = this.state; + const { children } = this.props; + + return accessGranted ? children : ; + } +} + +FuseAuthorization.contextType = AppContext; + +export default withRouter(FuseAuthorization); diff --git a/src/@fuse/core/FuseAuthorization/index.ts b/src/@fuse/core/FuseAuthorization/index.ts new file mode 100644 index 0000000..7932d0b --- /dev/null +++ b/src/@fuse/core/FuseAuthorization/index.ts @@ -0,0 +1 @@ +export { default } from './FuseAuthorization'; diff --git a/src/@fuse/core/FuseAuthorization/sessionRedirectUrl.ts b/src/@fuse/core/FuseAuthorization/sessionRedirectUrl.ts new file mode 100644 index 0000000..66c442c --- /dev/null +++ b/src/@fuse/core/FuseAuthorization/sessionRedirectUrl.ts @@ -0,0 +1,25 @@ +/** + * Session redirect url + */ +const sessionStorageKey = 'fuseRedirectUrl'; + +/** + * Get session redirect url + */ +export const getSessionRedirectUrl = () => { + return window.sessionStorage.getItem(sessionStorageKey); +}; + +/** + * Set session redirect url + */ +export const setSessionRedirectUrl = (url: string) => { + window.sessionStorage.setItem(sessionStorageKey, url); +}; + +/** + * Reset session redirect url + */ +export const resetSessionRedirectUrl = () => { + window.sessionStorage.removeItem(sessionStorageKey); +}; diff --git a/src/@fuse/core/FuseCountdown/FuseCountdown.tsx b/src/@fuse/core/FuseCountdown/FuseCountdown.tsx new file mode 100644 index 0000000..a43c219 --- /dev/null +++ b/src/@fuse/core/FuseCountdown/FuseCountdown.tsx @@ -0,0 +1,126 @@ +import Typography from '@mui/material/Typography'; +import clsx from 'clsx'; +import moment from 'moment'; +import { memo, useCallback, useEffect, useRef, useState } from 'react'; +import { Moment } from 'moment/moment'; + +type FuseCountdownProps = { + onComplete?: () => void; + endDate?: Moment | Date | string; + className?: string; +}; + +/** + * FuseCountdown + * A React component used to display the number of days, hours, minutes and seconds left until a specified end date. + * It allows a callback function to be passed in to be executed when the end date is reached. + */ +function FuseCountdown(props: FuseCountdownProps) { + const { onComplete, endDate = moment().add(15, 'days'), className } = props; + + const [endDateVal] = useState(moment.isMoment(endDate) ? endDate : moment(endDate)); + const [countdown, setCountdown] = useState({ + days: 0, + hours: 0, + minutes: 0, + seconds: 0 + }); + const intervalRef = useRef(null); + + const complete = useCallback(() => { + if (intervalRef.current) { + window.clearInterval(intervalRef.current); + } + if (onComplete) { + onComplete(); + } + }, [onComplete]); + + const tick = useCallback(() => { + const currDate = moment(); + const diff = endDateVal.diff(currDate, 'seconds'); + if (diff < 0) { + complete(); + return; + } + const timeLeft = moment.duration(diff, 'seconds'); + setCountdown({ + days: Number(timeLeft.asDays().toFixed(0)), + hours: timeLeft.hours(), + minutes: timeLeft.minutes(), + seconds: timeLeft.seconds() + }); + }, [complete, endDateVal]); + + useEffect(() => { + intervalRef.current = window.setInterval(tick, 1000); + return () => { + if (intervalRef.current) { + clearInterval(intervalRef.current); + } + }; + }, [tick]); + + return ( +
+
+ + {countdown.days} + + + days + +
+
+ + {countdown.hours} + + + hours + +
+
+ + {countdown.minutes} + + + minutes + +
+
+ + {countdown.seconds} + + + seconds + +
+
+ ); +} + +export default memo(FuseCountdown); diff --git a/src/@fuse/core/FuseCountdown/index.ts b/src/@fuse/core/FuseCountdown/index.ts new file mode 100644 index 0000000..f4430dd --- /dev/null +++ b/src/@fuse/core/FuseCountdown/index.ts @@ -0,0 +1 @@ +export { default } from './FuseCountdown'; diff --git a/src/@fuse/core/FuseDialog/FuseDialog.tsx b/src/@fuse/core/FuseDialog/FuseDialog.tsx new file mode 100644 index 0000000..60d7d6c --- /dev/null +++ b/src/@fuse/core/FuseDialog/FuseDialog.tsx @@ -0,0 +1,28 @@ +import Dialog from '@mui/material/Dialog'; +import { useAppDispatch } from 'app/store/store'; +import { useSelector } from 'react-redux'; +import withSlices from 'app/store/withSlices'; +import { closeDialog, fuseDialogSlice, selectFuseDialogProps } from '@fuse/core/FuseDialog/store/fuseDialogSlice'; + +/** + * FuseDialog component + * This component renders a material UI ```Dialog``` component + * with properties pulled from the redux store + */ +function FuseDialog() { + const dispatch = useAppDispatch(); + const options = useSelector(selectFuseDialogProps); + + return ( + dispatch(closeDialog())} + aria-labelledby="fuse-dialog-title" + classes={{ + paper: 'rounded-8' + }} + {...options} + /> + ); +} + +export default withSlices([fuseDialogSlice])(FuseDialog); diff --git a/src/@fuse/core/FuseDialog/index.ts b/src/@fuse/core/FuseDialog/index.ts new file mode 100644 index 0000000..c34e9ac --- /dev/null +++ b/src/@fuse/core/FuseDialog/index.ts @@ -0,0 +1 @@ +export { default } from './FuseDialog'; diff --git a/src/@fuse/core/FuseDialog/store/fuseDialogSlice.ts b/src/@fuse/core/FuseDialog/store/fuseDialogSlice.ts new file mode 100644 index 0000000..d28ccc0 --- /dev/null +++ b/src/@fuse/core/FuseDialog/store/fuseDialogSlice.ts @@ -0,0 +1,44 @@ +import { createSlice, PayloadAction } from '@reduxjs/toolkit'; +import { RootStateType } from 'src/app/store/types'; +import { appSelector } from 'src/app/store/store'; +import { ReactElement } from 'react'; + +type AppRootStateType = RootStateType; + +type InitialStateProps = { + open: boolean; + children: ReactElement | string; +}; + +/** + * The initial state of the dialog slice. + */ +const initialState: InitialStateProps = { + open: false, + children: '' +}; + +/** + * The Fuse Dialog slice + */ +export const fuseDialogSlice = createSlice({ + name: 'fuseDialog', + initialState, + reducers: { + openDialog: (state, action: PayloadAction<{ children: InitialStateProps['children'] }>) => { + state.open = true; + state.children = action.payload.children; + }, + closeDialog: () => initialState + } +}); + +export const { closeDialog, openDialog } = fuseDialogSlice.actions; + +export const selectFuseDialogState = appSelector((state: AppRootStateType) => state.fuseDialog.open); + +export const selectFuseDialogProps = appSelector((state: AppRootStateType) => state.fuseDialog); + +export type dialogSliceType = typeof fuseDialogSlice; + +export default fuseDialogSlice.reducer; diff --git a/src/@fuse/core/FuseExample/DemoFrame.tsx b/src/@fuse/core/FuseExample/DemoFrame.tsx new file mode 100644 index 0000000..9985fb4 --- /dev/null +++ b/src/@fuse/core/FuseExample/DemoFrame.tsx @@ -0,0 +1,66 @@ +import * as React from 'react'; +import ReactDOM from 'react-dom'; +import { styled } from '@mui/material/styles'; +import { useRef } from 'react'; +import FramedDemo from './FramedDemo'; + +const Frame = styled('iframe')(({ theme }) => ({ + backgroundColor: theme.palette.background.default, + flexGrow: 1, + height: 400, + border: 0, + boxShadow: theme.shadows[1] +})); + +type DemoFrameProps = { + name: string; + children: React.ReactElement; + other?: React.HTMLAttributes; +}; + +/** + * DemoFrame component for creating styled iframe + */ +function DemoFrame(props: DemoFrameProps) { + const { children, name, ...other } = props; + const title = `${name} demo`; + + const frameRef = useRef(null); + + // If we load portal content into the iframe before the load event then that content + // is dropped in firefox. + const [iframeLoaded, onLoad] = React.useReducer(() => true, false); + + React.useEffect(() => { + const document = frameRef.current?.contentDocument; + + // When we hydrate the iframe then the load event is already dispatched + // once the iframe markup is parsed (maybe later but the important part is + // that it happens before React can attach event listeners). + // We need to check the readyState of the document once the iframe is mounted + // and "replay" the missed load event. + // See https://github.com/facebook/react/pull/13862 for ongoing effort in React + // (though not with iframes in mind). + if (document != null && document.readyState === 'complete' && !iframeLoaded) { + onLoad(); + } + }, [iframeLoaded]); + + const document = frameRef.current?.contentDocument; + + return ( + <> + + {iframeLoaded !== false + ? ReactDOM.createPortal({children}, document.body) + : null} + + ); +} + +export default React.memo(DemoFrame); diff --git a/src/@fuse/core/FuseExample/FramedDemo.tsx b/src/@fuse/core/FuseExample/FramedDemo.tsx new file mode 100644 index 0000000..62cf996 --- /dev/null +++ b/src/@fuse/core/FuseExample/FramedDemo.tsx @@ -0,0 +1,61 @@ +import * as React from 'react'; +import { useTheme } from '@mui/material/styles'; +import createCache from '@emotion/cache'; +import rtlPlugin from 'stylis-plugin-rtl'; +import { CacheProvider } from '@emotion/react'; +import GlobalStyles from '@mui/material/GlobalStyles'; +import { StyleSheetManager } from 'styled-components'; +import { ReactElement } from 'react'; + +type FramedDemoProps = { + document: Document; + children: ReactElement; +}; + +/** + * Renders document wrapped with emotion and styling-components cache providers, and proper direction for rtl theme. + * This also add window property to the child with `getWindow` function, which is useful to fetch window property. + */ +function FramedDemo(props: FramedDemoProps) { + const { children, document } = props; + + const theme = useTheme(); + React.useEffect(() => { + document.body.dir = theme.direction; + }, [document, theme.direction]); + + const cache = React.useMemo( + () => + createCache({ + key: `iframe-demo-${theme.direction}`, + prepend: true, + container: document.head, + stylisPlugins: theme.direction === 'rtl' ? [rtlPlugin] : [] + }), + [document, theme.direction] + ); + + const getWindow = React.useCallback(() => document.defaultView, [document]); + + return ( + + + ({ + html: { + fontSize: '62.5%' + } + })} + /> + {React.cloneElement(children, { + window: getWindow + })} + + + ); +} + +export default FramedDemo; diff --git a/src/@fuse/core/FuseExample/FuseExample.tsx b/src/@fuse/core/FuseExample/FuseExample.tsx new file mode 100644 index 0000000..5157f6a --- /dev/null +++ b/src/@fuse/core/FuseExample/FuseExample.tsx @@ -0,0 +1,97 @@ +import FuseHighlight from '@fuse/core/FuseHighlight'; +import Card from '@mui/material/Card'; +import Tab from '@mui/material/Tab'; +import Tabs from '@mui/material/Tabs'; +import clsx from 'clsx'; +import { ElementType, ReactNode, useState } from 'react'; +import { darken } from '@mui/material/styles'; +import Box from '@mui/material/Box'; +import DemoFrame from './DemoFrame'; +import FuseSvgIcon from '../FuseSvgIcon'; + +type FuseExampleProps = { + name?: string; + raw?: string; + currentTabIndex?: number; + component: ElementType; + iframe?: ReactNode; + className: string; +}; + +/** + * FuseExample component gives a visual display as well as code for a component example. + * It consists of two tabs, a visual tab and code tab. + */ +function FuseExample(props: FuseExampleProps) { + const { component: Component, raw, iframe, className, name = '', currentTabIndex = 0 } = props; + + const [currentTab, setCurrentTab] = useState(currentTabIndex); + + function handleChange(event: React.SyntheticEvent, value: number) { + setCurrentTab(value); + } + + return ( + + + darken(theme.palette.background.paper, theme.palette.mode === 'light' ? 0.02 : 0.2) + }} + > + + {Component && ( + heroicons-outline:eye} + /> + )} + {raw && ( + heroicons-outline:code} + /> + )} + + +
+
+ {Component && + (iframe ? ( + + + + ) : ( +
+ +
+ ))} +
+
+ {raw && ( +
+ + {raw} + +
+ )} +
+
+
+ ); +} + +export default FuseExample; diff --git a/src/@fuse/core/FuseExample/index.ts b/src/@fuse/core/FuseExample/index.ts new file mode 100644 index 0000000..5f3d37e --- /dev/null +++ b/src/@fuse/core/FuseExample/index.ts @@ -0,0 +1 @@ +export { default } from './FuseExample'; diff --git a/src/@fuse/core/FuseHighlight/FuseHighlight.tsx b/src/@fuse/core/FuseHighlight/FuseHighlight.tsx new file mode 100644 index 0000000..a13fadb --- /dev/null +++ b/src/@fuse/core/FuseHighlight/FuseHighlight.tsx @@ -0,0 +1,89 @@ +import * as Prism from 'prismjs'; +import { ElementType, forwardRef, memo, useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react'; +import './prism-languages'; +import { styled } from '@mui/material/styles'; +import clsx from 'clsx'; + +type FuseHighlightProps = { + async?: boolean; + children: string | { default?: string }; + component?: ElementType; + className: string; +}; + +/** + * FuseHighlight + * Highlight language-specific syntax with Prism.js + */ +const FuseHighlight = forwardRef((props, ref) => { + const { async = false, children, className, component: Wrapper = 'code' } = props; + const innerRef = useRef(null); + useImperativeHandle(ref, () => innerRef.current, [innerRef]); + + const [source, setSource] = useState(trimCode(children)); + + const highlight = useCallback(() => { + if (innerRef.current) { + Prism.highlightElement(innerRef.current, async); + } + }, [async]); + + useEffect(() => { + setSource(trimCode(children)); + }, [trimCode]); + + useEffect(() => { + highlight(); + }, [highlight, source]); + + return ( + + {source} + + ); +}); + +function trimCode(children: FuseHighlightProps['children']) { + const sourceString = typeof children === 'string' ? children : children?.default; + + // Split the source into lines + const sourceLines = sourceString.split('\n'); + + // Remove the first and the last line of the source + // code if they are blank lines. This way, the html + // can be formatted properly while using fuse-highlight + // component + if (!sourceLines[0].trim()) { + sourceLines.shift(); + } + + if (!sourceLines[sourceLines.length - 1].trim()) { + sourceLines.pop(); + } + + // Find the first non-whitespace char index in + // the first line of the source code + const indexOfFirstChar = sourceLines[0].search(/\S|$/); + + // Generate the trimmed source + let sourceRaw = ''; + + // Iterate through all the lines + sourceLines.forEach((line: string, index: number) => { + // Trim the beginning white space depending on the index + // and concat the source code + sourceRaw += line.substr(indexOfFirstChar, line.length); + + // If it's not the last line... + if (index !== sourceLines.length - 1) { + // Add a line break at the end + sourceRaw = `${sourceRaw}\n`; + } + }); + return sourceRaw; +} + +export default memo(styled(FuseHighlight)``); diff --git a/src/@fuse/core/FuseHighlight/index.ts b/src/@fuse/core/FuseHighlight/index.ts new file mode 100644 index 0000000..a0fbf5a --- /dev/null +++ b/src/@fuse/core/FuseHighlight/index.ts @@ -0,0 +1 @@ +export { default } from './FuseHighlight'; diff --git a/src/@fuse/core/FuseHighlight/prism-languages.ts b/src/@fuse/core/FuseHighlight/prism-languages.ts new file mode 100644 index 0000000..1adc38c --- /dev/null +++ b/src/@fuse/core/FuseHighlight/prism-languages.ts @@ -0,0 +1,18 @@ +import 'prismjs/components/prism-c'; +import 'prismjs/components/prism-cpp'; +import 'prismjs/components/prism-csharp'; +import 'prismjs/components/prism-css'; +import 'prismjs/components/prism-diff'; +import 'prismjs/components/prism-java'; +import 'prismjs/components/prism-javascript'; +import 'prismjs/components/prism-json'; +import 'prismjs/components/prism-jsx'; +import 'prismjs/components/prism-markup'; +import 'prismjs/components/prism-markup-templating'; +import 'prismjs/components/prism-perl'; +import 'prismjs/components/prism-php'; +import 'prismjs/components/prism-python'; +import 'prismjs/components/prism-sass'; +import 'prismjs/components/prism-scss'; +import 'prismjs/components/prism-typescript'; +import 'prismjs/prism'; diff --git a/src/@fuse/core/FuseLayout/FuseLayout.tsx b/src/@fuse/core/FuseLayout/FuseLayout.tsx new file mode 100644 index 0000000..6b14619 --- /dev/null +++ b/src/@fuse/core/FuseLayout/FuseLayout.tsx @@ -0,0 +1,122 @@ +import { useDeepCompareEffect } from '@fuse/hooks'; +import _ from '@lodash'; +import AppContext from 'app/AppContext'; +import { + generateSettings, + selectFuseCurrentSettings, + selectFuseDefaultSettings, + setSettings, + fuseSettingsSlice +} from '@fuse/core/FuseSettings/store/fuseSettingsSlice'; +import React, { useCallback, useContext, useEffect, useMemo, useRef } from 'react'; +import { useAppDispatch } from 'app/store/store'; +import { matchRoutes, useLocation, RouteMatch, RouteObject } from 'react-router-dom'; +import { FuseSettingsConfigType } from '@fuse/core/FuseSettings/FuseSettings'; +import { themeLayoutsType } from 'app/theme-layouts/themeLayouts'; +import { PartialDeep } from 'type-fest'; +import { useSelector } from 'react-redux'; +import withSlices from 'app/store/withSlices'; +import FuseLoading from '../FuseLoading'; + +export type FuseRouteObjectType = RouteObject & { + settings?: FuseSettingsConfigType; +}; + +export type FuseRouteMatchType = RouteMatch & { + route: FuseRouteObjectType; +}; + +type FuseLayoutProps = { + layouts: themeLayoutsType; + children?: React.ReactNode; +}; + +/** + * FuseLayout + * React frontend component in a React project that is used for layouting the user interface. The component + * handles generating user interface settings related to current routes, merged with default settings, and uses + * the new settings to generate layouts. + */ +function FuseLayout(props: FuseLayoutProps) { + const { layouts, children } = props; + const dispatch = useAppDispatch(); + const settings = useSelector(selectFuseCurrentSettings); + const defaultSettings = useSelector(selectFuseDefaultSettings); + + const layoutStyle = settings.layout.style; + + const appContext = useContext(AppContext); + const { routes } = appContext; + + const location = useLocation(); + const { pathname } = location; + + const matchedRoutes = matchRoutes(routes, pathname) as FuseRouteMatchType[] | null; + + const matched = matchedRoutes?.[0] || false; + + const newSettings = useRef>(settings); + + const shouldAwaitRender = useCallback(() => { + let _newSettings: FuseSettingsConfigType; + + /** + * On Path changed + */ + // if (prevPathname !== pathname) { + if (typeof matched !== 'boolean') { + /** + * if matched route has settings + */ + + const routeSettings = matched.route.settings; + + _newSettings = generateSettings(defaultSettings, routeSettings); + } else if (!_.isEqual(newSettings.current, defaultSettings)) { + /** + * Reset to default settings on the new path + */ + _newSettings = _.merge({}, defaultSettings); + } else { + _newSettings = newSettings.current as FuseSettingsConfigType; + } + + if (!_.isEqual(newSettings.current, _newSettings)) { + newSettings.current = _newSettings; + } + }, [defaultSettings, matched]); + + shouldAwaitRender(); + + const currentSettings = useMemo(() => newSettings.current, [newSettings.current]); + + useDeepCompareEffect(() => { + if (!_.isEqual(currentSettings, settings)) { + dispatch(setSettings(currentSettings as FuseSettingsConfigType)); + } + }, [dispatch, currentSettings, settings]); + + useEffect(() => { + window.scrollTo(0, 0); + }, [pathname]); + + return useMemo(() => { + if (!_.isEqual(currentSettings, settings)) { + return ; + } + + return Object.entries(layouts).map(([key, Layout]) => { + if (key === layoutStyle) { + return ( + + {children} + + ); + } + + return null; + }); + }, [layouts, layoutStyle, children, currentSettings, settings]); +} + +export default withSlices([fuseSettingsSlice])(FuseLayout); diff --git a/src/@fuse/core/FuseLayout/index.ts b/src/@fuse/core/FuseLayout/index.ts new file mode 100644 index 0000000..edbf20c --- /dev/null +++ b/src/@fuse/core/FuseLayout/index.ts @@ -0,0 +1 @@ +export { default } from './FuseLayout'; diff --git a/src/@fuse/core/FuseLoading/FuseLoading.tsx b/src/@fuse/core/FuseLoading/FuseLoading.tsx new file mode 100644 index 0000000..ebd0769 --- /dev/null +++ b/src/@fuse/core/FuseLoading/FuseLoading.tsx @@ -0,0 +1,53 @@ +import { useTimeout } from '@fuse/hooks'; +import Typography from '@mui/material/Typography'; +import { useState } from 'react'; +import clsx from 'clsx'; +import Box from '@mui/material/Box'; + +export type FuseLoadingProps = { + delay?: number; + className?: string; +}; + +/** + * FuseLoading displays a loading state with an optional delay + */ +function FuseLoading(props: FuseLoadingProps) { + const { delay = 0, className } = props; + const [showLoading, setShowLoading] = useState(!delay); + + useTimeout(() => { + setShowLoading(true); + }, delay); + + return ( +
+ + Loading + + div': { + backgroundColor: 'palette.secondary.main' + } + }} + > +
+
+
+ +
+ ); +} + +export default FuseLoading; diff --git a/src/@fuse/core/FuseLoading/index.ts b/src/@fuse/core/FuseLoading/index.ts new file mode 100644 index 0000000..ec6683d --- /dev/null +++ b/src/@fuse/core/FuseLoading/index.ts @@ -0,0 +1 @@ +export { default } from './FuseLoading'; diff --git a/src/@fuse/core/FuseMessage/FuseMessage.tsx b/src/@fuse/core/FuseMessage/FuseMessage.tsx new file mode 100644 index 0000000..ccaa920 --- /dev/null +++ b/src/@fuse/core/FuseMessage/FuseMessage.tsx @@ -0,0 +1,97 @@ +import { amber, blue, green } from '@mui/material/colors'; +import { styled } from '@mui/material/styles'; +import IconButton from '@mui/material/IconButton'; +import Snackbar from '@mui/material/Snackbar'; +import SnackbarContent from '@mui/material/SnackbarContent'; +import Typography from '@mui/material/Typography'; +import { memo } from 'react'; +import { + hideMessage, + fuseMessageSlice, + selectFuseMessageOptions, + selectFuseMessageState +} from '@fuse/core/FuseMessage/store/fuseMessageSlice'; +import { useAppDispatch } from 'app/store/store'; +import { useSelector } from 'react-redux'; +import withSlices from 'app/store/withSlices'; +import FuseSvgIcon from '../FuseSvgIcon'; + +export type FuseMessageVariantType = 'success' | 'error' | 'warning' | 'info'; + +type StyledSnackbarProps = { + variant?: FuseMessageVariantType; +}; + +const StyledSnackbar = styled(Snackbar)(({ theme, variant }) => ({ + '& .FuseMessage-content': { + ...(variant === 'success' && { + backgroundColor: green[600], + color: '#FFFFFF' + }), + + ...(variant === 'error' && { + backgroundColor: theme.palette.error.dark, + color: theme.palette.getContrastText(theme.palette.error.dark) + }), + + ...(variant === 'info' && { + backgroundColor: blue[600], + color: '#FFFFFF' + }), + + ...(variant === 'warning' && { + backgroundColor: amber[600], + color: '#FFFFFF' + }) + } +})); + +const variantIcon = { + success: 'check_circle', + warning: 'warning', + error: 'error_outline', + info: 'info' +}; + +/** + * FuseMessage + * The FuseMessage component holds a snackbar that is capable of displaying message with 4 different variant. It uses the @mui/material React packages to create the components. + */ +function FuseMessage() { + const dispatch = useAppDispatch(); + const state = useSelector(selectFuseMessageState); + const options = useSelector(selectFuseMessageOptions); + + return ( + dispatch(hideMessage())} + > + + {variantIcon[options.variant] && ( + {variantIcon[options.variant]} + )} + {options.message} +
+ } + action={[ + dispatch(hideMessage())} + size="large" + > + heroicons-outline:x + + ]} + /> + + ); +} + +export default withSlices([fuseMessageSlice])(memo(FuseMessage)); diff --git a/src/@fuse/core/FuseMessage/index.ts b/src/@fuse/core/FuseMessage/index.ts new file mode 100644 index 0000000..ff28db7 --- /dev/null +++ b/src/@fuse/core/FuseMessage/index.ts @@ -0,0 +1 @@ +export { default } from './FuseMessage'; diff --git a/src/@fuse/core/FuseMessage/store/fuseMessageSlice.ts b/src/@fuse/core/FuseMessage/store/fuseMessageSlice.ts new file mode 100644 index 0000000..121b0ef --- /dev/null +++ b/src/@fuse/core/FuseMessage/store/fuseMessageSlice.ts @@ -0,0 +1,68 @@ +import { createSlice, PayloadAction } from '@reduxjs/toolkit'; +import { RootStateType } from 'app/store/types'; +import { appSelector } from 'app/store/store'; +import { ReactElement } from 'react'; + +type AppRootStateType = RootStateType; + +/** + * The type definition for the initial state of the message slice. + */ +type initialStateProps = { + state: boolean; + options: { + variant: 'success' | 'error' | 'warning' | 'info'; + anchorOrigin: { + vertical: 'top' | 'bottom'; + horizontal: 'left' | 'center' | 'right'; + }; + autoHideDuration: number | null; + message: ReactElement | string; + }; +}; + +/** + * The initial state of the message slice. + */ +const initialState: initialStateProps = { + state: false, + options: { + variant: 'info', + anchorOrigin: { + vertical: 'top', + horizontal: 'center' + }, + autoHideDuration: 2000, + message: 'Hi' + } +}; + +/** + * The Message slice. + */ +export const fuseMessageSlice = createSlice({ + name: 'fuseMessage', + initialState, + reducers: { + showMessage(state, action: PayloadAction>) { + state.state = true; + state.options = { + ...initialState.options, + ...action.payload + }; + }, + hideMessage(state) { + state.state = false; + } + } +}); + +export const { hideMessage, showMessage } = fuseMessageSlice.actions; + +export const selectFuseMessageState = appSelector((state: AppRootStateType) => state.fuseMessage.state); + +export const selectFuseMessageOptions = appSelector((state: AppRootStateType) => state.fuseMessage.options); + +export type messageSliceType = typeof fuseMessageSlice; + +export default fuseMessageSlice.reducer; diff --git a/src/@fuse/core/FuseNavigation/FuseNavBadge.tsx b/src/@fuse/core/FuseNavigation/FuseNavBadge.tsx new file mode 100644 index 0000000..c35d0a1 --- /dev/null +++ b/src/@fuse/core/FuseNavigation/FuseNavBadge.tsx @@ -0,0 +1,46 @@ +import { styled } from '@mui/material/styles'; +import clsx from 'clsx'; +import { memo } from 'react'; +import { FuseNavBadgeType } from './types/FuseNavBadgeType'; + +const Root = styled('div')(({ theme }) => ({ + padding: '0 7px', + fontSize: 11, + fontWeight: 600, + height: 20, + minWidth: 20, + borderRadius: 20, + display: 'flex', + alignItems: 'center', + backgroundColor: theme.palette.secondary.main, + color: theme.palette.secondary.contrastText +})); + +type FuseNavBadgeProps = { + className?: string; + classes?: string; + badge: FuseNavBadgeType; +}; + +/** + * FuseNavBadge component. + * This component will render a badge on a FuseNav element. It accepts a `FuseNavBadgeType` as a prop, + * which is an object containing a title and background and foreground colour. + */ +function FuseNavBadge(props: FuseNavBadgeProps) { + const { className = '', classes = '', badge } = props; + + return ( + + {badge.title} + + ); +} + +export default memo(FuseNavBadge); diff --git a/src/@fuse/core/FuseNavigation/FuseNavItem.tsx b/src/@fuse/core/FuseNavigation/FuseNavItem.tsx new file mode 100644 index 0000000..7b8fa5f --- /dev/null +++ b/src/@fuse/core/FuseNavigation/FuseNavItem.tsx @@ -0,0 +1,30 @@ +import { FuseNavItemType } from './types/FuseNavItemType'; + +const components: { [key: string]: React.FC } = {}; + +/** + * Register a component to FuseNavItem. + */ +export function registerComponent(name: string, Component: React.FC) { + components[name] = Component as React.FC; +} + +export type FuseNavItemComponentProps = { + type: string; + item: FuseNavItemType; + dense?: boolean; + nestedLevel?: number; + onItemClick?: (T: FuseNavItemType) => void; + checkPermission?: boolean; +}; + +/** +Component to render NavItem depending on its type. +*/ +export default function FuseNavItem(props: FuseNavItemComponentProps) { + const { type } = props; + + const C = components[type]; + + return C ? : null; +} diff --git a/src/@fuse/core/FuseNavigation/FuseNavigation.tsx b/src/@fuse/core/FuseNavigation/FuseNavigation.tsx new file mode 100644 index 0000000..de85f6b --- /dev/null +++ b/src/@fuse/core/FuseNavigation/FuseNavigation.tsx @@ -0,0 +1,108 @@ +import Divider from '@mui/material/Divider'; +import { memo } from 'react'; +import GlobalStyles from '@mui/material/GlobalStyles'; +import FuseNavHorizontalLayout1 from './horizontal/FuseNavHorizontalLayout1'; +import FuseNavVerticalLayout1 from './vertical/FuseNavVerticalLayout1'; +import FuseNavVerticalLayout2 from './vertical/FuseNavVerticalLayout2'; +import FuseNavHorizontalCollapse from './horizontal/types/FuseNavHorizontalCollapse'; +import FuseNavHorizontalGroup from './horizontal/types/FuseNavHorizontalGroup'; +import FuseNavHorizontalItem from './horizontal/types/FuseNavHorizontalItem'; +import FuseNavHorizontalLink from './horizontal/types/FuseNavHorizontalLink'; +import FuseNavVerticalCollapse from './vertical/types/FuseNavVerticalCollapse'; +import FuseNavVerticalGroup from './vertical/types/FuseNavVerticalGroup'; +import FuseNavVerticalItem from './vertical/types/FuseNavVerticalItem'; +import FuseNavVerticalLink from './vertical/types/FuseNavVerticalLink'; +import { registerComponent } from './FuseNavItem'; +import { FuseNavItemType } from './types/FuseNavItemType'; + +const inputGlobalStyles = ( + ({ + '.popper-navigation-list': { + '& .fuse-list-item': { + padding: '8px 12px 8px 12px', + height: 40, + minHeight: 40, + '& .fuse-list-item-text': { + padding: '0 0 0 8px' + } + }, + '&.dense': { + '& .fuse-list-item': { + minHeight: 32, + height: 32, + '& .fuse-list-item-text': { + padding: '0 0 0 8px' + } + } + } + } + })} + /> +); + +/* +Register Fuse Navigation Components + */ +registerComponent('vertical-group', FuseNavVerticalGroup); +registerComponent('vertical-collapse', FuseNavVerticalCollapse); +registerComponent('vertical-item', FuseNavVerticalItem); +registerComponent('vertical-link', FuseNavVerticalLink); +registerComponent('horizontal-group', FuseNavHorizontalGroup); +registerComponent('horizontal-collapse', FuseNavHorizontalCollapse); +registerComponent('horizontal-item', FuseNavHorizontalItem); +registerComponent('horizontal-link', FuseNavHorizontalLink); +registerComponent('divider', () => ); +registerComponent('vertical-divider', () => ); +registerComponent('horizontal-divider', () => ); + +export type FuseNavigationProps = { + className?: string; + dense?: boolean; + active?: boolean; + onItemClick?: (T: FuseNavItemType) => void; + navigation?: FuseNavItemType[]; + layout?: 'horizontal' | 'vertical' | 'vertical-2'; + firstLevel?: boolean; + selectedId?: string; + checkPermission?: boolean; +}; + +/** + * FuseNavigation + * Component for displaying a navigation bar which contains FuseNavItem components + * and acts as parent for providing props to its children components + */ +function FuseNavigation(props: FuseNavigationProps) { + const { navigation, layout = 'vertical' } = props; + + if (!navigation || navigation.length === 0) { + return null; + } + + return ( + <> + {inputGlobalStyles} + {layout === 'horizontal' && ( + + )} + {layout === 'vertical' && ( + + )} + {layout === 'vertical-2' && ( + + )} + + ); +} + +export default memo(FuseNavigation); diff --git a/src/@fuse/core/FuseNavigation/horizontal/FuseNavHorizontalLayout1.tsx b/src/@fuse/core/FuseNavigation/horizontal/FuseNavHorizontalLayout1.tsx new file mode 100644 index 0000000..e0fc865 --- /dev/null +++ b/src/@fuse/core/FuseNavigation/horizontal/FuseNavHorizontalLayout1.tsx @@ -0,0 +1,63 @@ +import List from '@mui/material/List'; +import { styled } from '@mui/material/styles'; +import clsx from 'clsx'; +import FuseNavItem from '../FuseNavItem'; +import { FuseNavigationProps } from '../FuseNavigation'; + +const StyledList = styled(List)(({ theme }) => ({ + '& .fuse-list-item': { + '&:hover': { + backgroundColor: theme.palette.mode === 'dark' ? 'rgba(255, 255, 255, 0.05)' : 'rgba(0,0,0,.04)' + }, + '&:focus:not(.active)': { + backgroundColor: theme.palette.mode === 'dark' ? 'rgba(255, 255, 255, 0.06)' : 'rgba(0,0,0,.05)' + }, + padding: '8px 12px 8px 12px', + height: 40, + minHeight: 40, + '&.level-0': { + minHeight: 44, + minminHeight: 44 + }, + '& .fuse-list-item-text': { + padding: '0 0 0 8px' + } + }, + '&.active-square-list': { + '& .fuse-list-item': { + borderRadius: '0' + } + } +})); + +/** + * FuseNavHorizontalLayout1 is a react component used for building and + * rendering horizontal navigation menus, using the Material UI List component. + */ +function FuseNavHorizontalLayout1(props: FuseNavigationProps) { + const { navigation, active, dense, className, checkPermission } = props; + + return ( + + {navigation.map((_item) => ( + + ))} + + ); +} + +export default FuseNavHorizontalLayout1; diff --git a/src/@fuse/core/FuseNavigation/horizontal/types/FuseNavHorizontalCollapse.tsx b/src/@fuse/core/FuseNavigation/horizontal/types/FuseNavHorizontalCollapse.tsx new file mode 100644 index 0000000..2ae5f0b --- /dev/null +++ b/src/@fuse/core/FuseNavigation/horizontal/types/FuseNavHorizontalCollapse.tsx @@ -0,0 +1,198 @@ +import NavLinkAdapter from '@fuse/core/NavLinkAdapter'; +import { styled, useTheme } from '@mui/material/styles'; +import { useDebounce } from '@fuse/hooks'; +import Grow from '@mui/material/Grow'; +import IconButton from '@mui/material/IconButton'; +import ListItemText from '@mui/material/ListItemText'; +import Paper from '@mui/material/Paper'; +import clsx from 'clsx'; +import { memo, useMemo, useState } from 'react'; +import * as ReactDOM from 'react-dom'; +import { Manager, Popper, Reference } from 'react-popper'; +import withRouter from '@fuse/core/withRouter'; +import { ListItemButton, ListItemButtonProps } from '@mui/material'; +import { Location } from 'history'; +import isUrlInChildren from '@fuse/core/FuseNavigation/isUrlInChildren'; +import FuseNavBadge from '../../FuseNavBadge'; +import FuseNavItem, { FuseNavItemComponentProps } from '../../FuseNavItem'; +import FuseSvgIcon from '../../../FuseSvgIcon'; + +const Root = styled(ListItemButton)(({ theme }) => ({ + color: theme.palette.text.primary, + minHeight: 48, + cursor: 'pointer', + '&.active, &.active:hover, &.active:focus': { + backgroundColor: `${theme.palette.secondary.main}!important`, + color: `${theme.palette.secondary.contrastText}!important`, + + '&.open': { + backgroundColor: 'rgba(0,0,0,.08)' + }, + + '& > .fuse-list-item-text': { + padding: '0 0 0 16px' + }, + + '& .fuse-list-item-icon': { + color: 'inherit' + } + } +})); + +type FuseNavHorizontalCollapseProps = FuseNavItemComponentProps & { + location: Location; +}; + +/** + * FuseNavHorizontalCollapse component helps rendering Horizontal Fuse Navigation Item with children + * Used in FuseNavVerticalItems and FuseNavHorizontalItems + */ +function FuseNavHorizontalCollapse(props: FuseNavHorizontalCollapseProps) { + const [opened, setOpened] = useState(false); + const { item, nestedLevel, dense, location, checkPermission } = props; + const theme = useTheme(); + + const handleToggle = useDebounce((open: boolean) => { + setOpened(open); + }, 150); + + const component = item.url ? NavLinkAdapter : 'li'; + + let itemProps; + + if (typeof component !== 'string') { + itemProps = { + disabled: item.disabled, + to: item.url, + end: item.end, + role: 'button' + }; + } + + if (checkPermission && !item?.hasPermission) { + return null; + } + + return useMemo( + () => ( +
    + + + {({ ref }) => ( +
    + handleToggle(true)} + onMouseLeave={() => handleToggle(false)} + aria-owns={opened ? 'menu-fuse-list-grow' : null} + aria-haspopup="true" + sx={item.sx} + {...itemProps} + > + {item.icon && ( + + {item.icon} + + )} + + + + {item.badge && ( + + )} + + + {theme.direction === 'ltr' + ? 'heroicons-outline:arrow-sm-right' + : 'heroicons-outline:arrow-sm-left'} + + + +
    + )} +
    + {ReactDOM.createPortal( + + {({ ref, style, placement }) => + opened && ( +
    + + handleToggle(true)} + onMouseLeave={() => handleToggle(false)} + > + {item.children && ( +
      + {item.children.map((_item) => ( + + ))} +
    + )} +
    +
    +
    + ) + } +
    , + document.querySelector('#root') + )} +
    +
+ ), + [dense, handleToggle, item, nestedLevel, opened, location.pathname, theme.direction] + ); +} + +FuseNavHorizontalCollapse.defaultProps = {}; + +const NavHorizontalCollapse = withRouter(memo(FuseNavHorizontalCollapse)); + +export default NavHorizontalCollapse; diff --git a/src/@fuse/core/FuseNavigation/horizontal/types/FuseNavHorizontalGroup.tsx b/src/@fuse/core/FuseNavigation/horizontal/types/FuseNavHorizontalGroup.tsx new file mode 100644 index 0000000..cf6685d --- /dev/null +++ b/src/@fuse/core/FuseNavigation/horizontal/types/FuseNavHorizontalGroup.tsx @@ -0,0 +1,196 @@ +import NavLinkAdapter from '@fuse/core/NavLinkAdapter'; +import { styled, useTheme } from '@mui/material/styles'; +import { useDebounce } from '@fuse/hooks'; +import Grow from '@mui/material/Grow'; +import IconButton from '@mui/material/IconButton'; +import ListItemText from '@mui/material/ListItemText'; +import Paper from '@mui/material/Paper'; +import clsx from 'clsx'; +import { memo, useMemo, useState } from 'react'; +import * as ReactDOM from 'react-dom'; +import { Manager, Popper, Reference } from 'react-popper'; +import withRouter from '@fuse/core/withRouter'; +import { ListItemButton, ListItemButtonProps } from '@mui/material'; +import isUrlInChildren from '@fuse/core/FuseNavigation/isUrlInChildren'; +import { WithRouterProps } from '@fuse/core/withRouter/withRouter'; +import * as PopperJS from '@popperjs/core'; +import FuseNavItem, { FuseNavItemComponentProps } from '../../FuseNavItem'; +import FuseSvgIcon from '../../../FuseSvgIcon'; + +const Root = styled(ListItemButton)(({ theme }) => ({ + color: theme.palette.text.primary, + cursor: 'pointer', + '&.active, &.active:hover, &.active:focus': { + backgroundColor: `${theme.palette.secondary.main}!important`, + color: `${theme.palette.secondary.contrastText}!important`, + '& .fuse-list-item-text-primary': { + color: 'inherit' + }, + '& .fuse-list-item-icon': { + color: 'inherit' + } + }, + '& .fuse-list-item-text': { + padding: '0 0 0 16px' + }, + '&.level-0': { + minHeight: 44, + borderRadius: 4, + '&:hover': { + background: 'transparent' + } + } +})); + +type FuseNavHorizontalGroupProps = FuseNavItemComponentProps & WithRouterProps; + +/** + * FuseNavHorizontalGroup. + * Represents a horizontal group component used in the Fuse navigation navigation list. + * It shows the list item as well as its children with a flyout effect. + */ +function FuseNavHorizontalGroup(props: FuseNavHorizontalGroupProps) { + const [opened, setOpened] = useState(false); + const { item, nestedLevel, dense, location, checkPermission } = props; + const theme = useTheme(); + + const handleToggle = useDebounce((open: boolean) => { + setOpened(open); + }, 150); + + return useMemo(() => { + let popperPlacement: PopperJS.Placement; + + if (nestedLevel === 0) { + popperPlacement = theme.direction === 'ltr' ? 'bottom-start' : 'bottom-end'; + } else { + popperPlacement = theme.direction === 'ltr' ? 'right' : 'left'; + } + + const component = item.url ? NavLinkAdapter : 'li'; + + let itemProps; + + if (typeof component !== 'string') { + itemProps = { + disabled: item.disabled, + to: item.url, + end: item.end, + role: 'button' + }; + } + + if (checkPermission && !item?.hasPermission) { + return null; + } + + return ( + + + {({ ref }) => ( +
+ handleToggle(true)} + onMouseLeave={() => handleToggle(false)} + aria-owns={opened ? 'menu-fuse-list-grow' : null} + aria-haspopup="true" + sx={item.sx} + {...itemProps} + > + {item.icon && ( + + {item.icon} + + )} + + + + {nestedLevel > 0 && ( + + + {theme.direction === 'ltr' + ? 'heroicons-outline:arrow-sm-right' + : 'heroicons-outline:arrow-sm-left'} + + + )} + +
+ )} +
+ {ReactDOM.createPortal( + + {({ ref, style, placement }) => + opened && ( +
+ + handleToggle(true)} + onMouseLeave={() => handleToggle(false)} + > + {item.children && ( +
    + {item.children.map((_item) => ( + + ))} +
+ )} +
+
+
+ ) + } +
, + document.querySelector('#root') + )} +
+ ); + }, [dense, handleToggle, item, nestedLevel, opened, props.location.pathname, theme.direction]); +} + +const NavHorizontalGroup = withRouter(memo(FuseNavHorizontalGroup)); + +export default NavHorizontalGroup; diff --git a/src/@fuse/core/FuseNavigation/horizontal/types/FuseNavHorizontalItem.tsx b/src/@fuse/core/FuseNavigation/horizontal/types/FuseNavHorizontalItem.tsx new file mode 100644 index 0000000..be83874 --- /dev/null +++ b/src/@fuse/core/FuseNavigation/horizontal/types/FuseNavHorizontalItem.tsx @@ -0,0 +1,96 @@ +import NavLinkAdapter from '@fuse/core/NavLinkAdapter'; +import { styled } from '@mui/material/styles'; +import ListItemText from '@mui/material/ListItemText'; +import clsx from 'clsx'; +import { memo, useMemo } from 'react'; +import withRouter from '@fuse/core/withRouter'; +import { ListItemButton, ListItemButtonProps } from '@mui/material'; +import { WithRouterProps } from '@fuse/core/withRouter/withRouter'; +import FuseNavBadge from '../../FuseNavBadge'; +import FuseSvgIcon from '../../../FuseSvgIcon'; +import { FuseNavItemComponentProps } from '../../FuseNavItem'; + +const Root = styled(ListItemButton)(({ theme }) => ({ + color: theme.palette.text.primary, + textDecoration: 'none!important', + minHeight: 48, + '&.active': { + backgroundColor: `${theme.palette.secondary.main}!important`, + color: `${theme.palette.secondary.contrastText}!important`, + pointerEvents: 'none', + '& .fuse-list-item-text-primary': { + color: 'inherit' + }, + '& .fuse-list-item-icon': { + color: 'inherit' + } + }, + '& .fuse-list-item-icon': {}, + '& .fuse-list-item-text': { + padding: '0 0 0 16px' + } +})); + +type FuseNavHorizontalItemProps = FuseNavItemComponentProps & WithRouterProps; + +/** + * FuseNavHorizontalItem is a component responsible for rendering the navigation element in the horizontal menu in the Fuse theme. + */ +function FuseNavHorizontalItem(props: FuseNavHorizontalItemProps) { + const { item, checkPermission } = props; + + const component = item.url ? NavLinkAdapter : 'li'; + + let itemProps; + + if (typeof component !== 'string') { + itemProps = { + disabled: item.disabled, + to: item.url || '', + end: item.end, + role: 'button' + }; + } + + if (checkPermission && !item?.hasPermission) { + return null; + } + + return useMemo( + () => ( + + {item.icon && ( + + {item.icon} + + )} + + + + {item.badge && ( + + )} + + ), + [item.badge, item.exact, item.icon, item.iconClass, item.title, item.url] + ); +} + +const NavHorizontalItem = withRouter(memo(FuseNavHorizontalItem)); + +export default NavHorizontalItem; diff --git a/src/@fuse/core/FuseNavigation/horizontal/types/FuseNavHorizontalLink.tsx b/src/@fuse/core/FuseNavigation/horizontal/types/FuseNavHorizontalLink.tsx new file mode 100644 index 0000000..b190f20 --- /dev/null +++ b/src/@fuse/core/FuseNavigation/horizontal/types/FuseNavHorizontalLink.tsx @@ -0,0 +1,97 @@ +import { styled } from '@mui/material/styles'; +import ListItemText from '@mui/material/ListItemText'; +import clsx from 'clsx'; +import { memo, useMemo } from 'react'; +import withRouter from '@fuse/core/withRouter'; +import { Link, ListItemButton, ListItemButtonProps } from '@mui/material'; +import { WithRouterProps } from '@fuse/core/withRouter/withRouter'; +import FuseNavBadge from '../../FuseNavBadge'; +import FuseSvgIcon from '../../../FuseSvgIcon'; +import { FuseNavItemComponentProps } from '../../FuseNavItem'; + +const Root = styled(ListItemButton)(({ theme }) => ({ + color: theme.palette.text.primary, + textDecoration: 'none!important', + minHeight: 48, + '&.active': { + backgroundColor: `${theme.palette.secondary.main}!important`, + color: `${theme.palette.secondary.contrastText}!important`, + pointerEvents: 'none', + '& .fuse-list-item-text-primary': { + color: 'inherit' + }, + '& .fuse-list-item-icon': { + color: 'inherit' + } + }, + '& .fuse-list-item-icon': {}, + '& .fuse-list-item-text': { + padding: '0 0 0 16px' + } +})); + +type FuseNavHorizontalLinkProps = FuseNavItemComponentProps & WithRouterProps; + +/* + * FuseNavHorizontalLink + * This is a component to render horizontal navigation links in the Fuse navigations. + * It receieves `FuseNavItemComponentProps` and `WithRouterProps` as props. + */ +function FuseNavHorizontalLink(props: FuseNavHorizontalLinkProps) { + const { item, checkPermission } = props; + + let itemProps; + + const component = item.url ? Link : 'li'; + + if (typeof component !== 'string') { + itemProps = { + disabled: item.disabled, + href: item.url, + role: 'button', + target: item.target ? item.target : '_blank' + }; + } + + if (checkPermission && !item?.hasPermission) { + return null; + } + + return useMemo( + () => ( + + {item.icon && ( + + {item.icon} + + )} + + + + {item.badge && ( + + )} + + ), + [item.badge, item.icon, item.iconClass, item.target, item.title, item.url] + ); +} + +const NavHorizontalLink = withRouter(memo(FuseNavHorizontalLink)); + +export default NavHorizontalLink; diff --git a/src/@fuse/core/FuseNavigation/index.ts b/src/@fuse/core/FuseNavigation/index.ts new file mode 100644 index 0000000..f9df21e --- /dev/null +++ b/src/@fuse/core/FuseNavigation/index.ts @@ -0,0 +1 @@ +export { default } from './FuseNavigation'; diff --git a/src/@fuse/core/FuseNavigation/isUrlInChildren.ts b/src/@fuse/core/FuseNavigation/isUrlInChildren.ts new file mode 100644 index 0000000..e44ecb8 --- /dev/null +++ b/src/@fuse/core/FuseNavigation/isUrlInChildren.ts @@ -0,0 +1,27 @@ +import { Pathname } from 'history'; +import { FuseNavItemType } from './types/FuseNavItemType'; + +/** + * Determines whether a given URL is present in the parent's child list or not. + */ +const isUrlInChildren = (parent: FuseNavItemType, url: Pathname) => { + if (!parent.children) { + return false; + } + + for (let i = 0; i < parent.children.length; i += 1) { + if (parent.children[i].children) { + if (isUrlInChildren(parent.children[i], url)) { + return true; + } + } + + if (parent.children[i].url === url || url.includes(parent.children[i].url)) { + return true; + } + } + + return false; +}; + +export default isUrlInChildren; diff --git a/src/@fuse/core/FuseNavigation/models/FuseNavItemModel.ts b/src/@fuse/core/FuseNavigation/models/FuseNavItemModel.ts new file mode 100644 index 0000000..dbb9ebd --- /dev/null +++ b/src/@fuse/core/FuseNavigation/models/FuseNavItemModel.ts @@ -0,0 +1,33 @@ +import _ from '@lodash'; +import { PartialDeep } from 'type-fest'; +import { FuseNavItemType } from '../types/FuseNavItemType'; + +/** + * FuseNavItemModel + * Constructs a navigation item based on FuseNavItemType + */ +function FuseNavItemModel(data?: PartialDeep) { + data = data || {}; + + return _.defaults(data, { + id: _.uniqueId(), + title: '', + translate: '', + auth: null, + subtitle: '', + icon: '', + iconClass: '', + url: '', + target: '', + type: 'item', + sx: {}, + disabled: false, + active: false, + exact: false, + end: false, + badge: null, + children: [] + }); +} + +export default FuseNavItemModel; diff --git a/src/@fuse/core/FuseNavigation/types/FuseNavBadgeType.ts b/src/@fuse/core/FuseNavigation/types/FuseNavBadgeType.ts new file mode 100644 index 0000000..7c4e01b --- /dev/null +++ b/src/@fuse/core/FuseNavigation/types/FuseNavBadgeType.ts @@ -0,0 +1,9 @@ +/** + * Represents a FuseNavBadge. + */ +export type FuseNavBadgeType = { + bg?: string; + fg?: string; + title: string; + classes?: string; +}; diff --git a/src/@fuse/core/FuseNavigation/types/FuseNavItemType.ts b/src/@fuse/core/FuseNavigation/types/FuseNavItemType.ts new file mode 100644 index 0000000..e74f241 --- /dev/null +++ b/src/@fuse/core/FuseNavigation/types/FuseNavItemType.ts @@ -0,0 +1,29 @@ +import { SxProps } from '@mui/system'; +import { FuseNavBadgeType } from './FuseNavBadgeType'; + +/** + * FuseNavItemType + * A type for Fuse navigation item and its properties. + */ +export type FuseNavItemType = { + id: string; + title?: string; + translate?: string; + auth?: string[] | string; + subtitle?: string; + icon?: string; + iconClass?: string; + url?: string; + target?: string; + type?: string; + sx?: SxProps; + disabled?: boolean; + active?: boolean; + exact?: boolean; + end?: boolean; + badge?: FuseNavBadgeType; + children?: FuseNavItemType[]; + hasPermission?: boolean; +}; + +export type FuseFlatNavItemType = Omit & { children?: string[]; order: string }; diff --git a/src/@fuse/core/FuseNavigation/vertical/FuseNavVerticalLayout1.tsx b/src/@fuse/core/FuseNavigation/vertical/FuseNavVerticalLayout1.tsx new file mode 100644 index 0000000..e6e3889 --- /dev/null +++ b/src/@fuse/core/FuseNavigation/vertical/FuseNavVerticalLayout1.tsx @@ -0,0 +1,74 @@ +import List from '@mui/material/List'; +import { styled } from '@mui/material/styles'; +import clsx from 'clsx'; +import FuseNavItem from '../FuseNavItem'; +import { FuseNavigationProps } from '../FuseNavigation'; +import { FuseNavItemType } from '../types/FuseNavItemType'; + +const StyledList = styled(List)(({ theme }) => ({ + '& .fuse-list-item': { + '&:hover': { + backgroundColor: theme.palette.mode === 'dark' ? 'rgba(255, 255, 255, 0.05)' : 'rgba(0,0,0,.04)' + }, + '&:focus:not(.active)': { + backgroundColor: theme.palette.mode === 'dark' ? 'rgba(255, 255, 255, 0.06)' : 'rgba(0,0,0,.05)' + } + }, + '& .fuse-list-item-text': { + margin: 0 + }, + '& .fuse-list-item-text-primary': { + lineHeight: '20px' + }, + '&.active-square-list': { + '& .fuse-list-item, & .active.fuse-list-item': { + width: '100%', + borderRadius: '0' + } + }, + '&.dense': { + '& .fuse-list-item': { + paddingTop: 0, + paddingBottom: 0, + height: 32 + } + } +})); + +/** + * FuseNavVerticalLayout1 + * This component is used to render vertical navigations using + * the Material-UI List component. It accepts the FuseNavigationProps props + * and renders the FuseNavItem components accordingly + */ +function FuseNavVerticalLayout1(props: FuseNavigationProps) { + const { navigation, active, dense, className, onItemClick, checkPermission } = props; + + function handleItemClick(item: FuseNavItemType) { + onItemClick?.(item); + } + + return ( + + {navigation.map((_item) => ( + + ))} + + ); +} + +export default FuseNavVerticalLayout1; diff --git a/src/@fuse/core/FuseNavigation/vertical/FuseNavVerticalLayout2.tsx b/src/@fuse/core/FuseNavigation/vertical/FuseNavVerticalLayout2.tsx new file mode 100644 index 0000000..5016ac0 --- /dev/null +++ b/src/@fuse/core/FuseNavigation/vertical/FuseNavVerticalLayout2.tsx @@ -0,0 +1,66 @@ +import List from '@mui/material/List'; +import { styled } from '@mui/material/styles'; +import clsx from 'clsx'; +import FuseNavVerticalTab from './types/FuseNavVerticalTab'; +import { FuseNavigationProps } from '../FuseNavigation'; +import { FuseNavItemType } from '../types/FuseNavItemType'; + +const StyledList = styled(List)(({ theme }) => ({ + '& .fuse-list-item': { + '&:hover': { + backgroundColor: theme.palette.mode === 'dark' ? 'rgba(255, 255, 255, 0.05)' : 'rgba(0,0,0,.04)' + }, + '&:focus:not(.active)': { + backgroundColor: theme.palette.mode === 'dark' ? 'rgba(255, 255, 255, 0.06)' : 'rgba(0,0,0,.05)' + } + }, + '& .fuse-list-item-text-primary': { + lineHeight: '1' + }, + '&.active-square-list': { + '& .fuse-list-item, & .active.fuse-list-item': { + width: '100%', + borderRadius: '0' + } + }, + '&.dense': {} +})); + +/** + * FuseNavVerticalLayout2 component represents a vertical navigation layout with material UI elements. + * It displays the navigation object in the structured vertical menu and allows to handle onClick events for each navigation item. + */ +function FuseNavVerticalLayout2(props: FuseNavigationProps) { + const { navigation, active, dense, className, onItemClick, firstLevel, selectedId, checkPermission } = props; + + function handleItemClick(item: FuseNavItemType) { + onItemClick?.(item); + } + + return ( + + {navigation.map((_item) => ( + + ))} + + ); +} + +export default FuseNavVerticalLayout2; diff --git a/src/@fuse/core/FuseNavigation/vertical/types/FuseNavVerticalCollapse.tsx b/src/@fuse/core/FuseNavigation/vertical/types/FuseNavVerticalCollapse.tsx new file mode 100644 index 0000000..cc3bfbc --- /dev/null +++ b/src/@fuse/core/FuseNavigation/vertical/types/FuseNavVerticalCollapse.tsx @@ -0,0 +1,183 @@ +import NavLinkAdapter from '@fuse/core/NavLinkAdapter'; +import { alpha, styled } from '@mui/material/styles'; +import Collapse from '@mui/material/Collapse'; +import IconButton from '@mui/material/IconButton'; +import ListItemText from '@mui/material/ListItemText'; +import clsx from 'clsx'; +import { useEffect, useMemo, useState } from 'react'; +import { useLocation } from 'react-router-dom'; +import List, { ListProps } from '@mui/material/List'; +import isUrlInChildren from '@fuse/core/FuseNavigation/isUrlInChildren'; +import type { Location } from 'history'; +import { ListItemButton } from '@mui/material'; +import FuseNavBadge from '../../FuseNavBadge'; +import FuseNavItem, { FuseNavItemComponentProps } from '../../FuseNavItem'; +import FuseSvgIcon from '../../../FuseSvgIcon'; +import { FuseNavItemType } from '../../types/FuseNavItemType'; + +type ListComponentProps = ListProps & { + itempadding: number; +}; + +const Root = styled(List)(({ theme, ...props }) => ({ + padding: 0, + '&.open': {}, + '& > .fuse-list-item': { + minHeight: 44, + width: '100%', + borderRadius: '6px', + margin: '0 0 4px 0', + paddingRight: 16, + paddingLeft: props.itempadding > 80 ? 80 : props.itempadding, + paddingTop: 10, + paddingBottom: 10, + color: alpha(theme.palette.text.primary, 0.7), + '&:hover': { + color: theme.palette.text.primary + }, + '& > .fuse-list-item-icon': { + marginRight: 16, + color: 'inherit' + } + } +})); + +function needsToBeOpened(location: Location, item: FuseNavItemType) { + return location && isUrlInChildren(item, location.pathname); +} + +/** + * FuseNavVerticalCollapse component used for vertical navigation items with collapsible children. + */ +function FuseNavVerticalCollapse(props: FuseNavItemComponentProps) { + const location = useLocation(); + const { item, nestedLevel = 0, onItemClick, checkPermission } = props; + + const [open, setOpen] = useState(() => needsToBeOpened(location, item)); + + const itempadding = nestedLevel > 0 ? 38 + nestedLevel * 16 : 16; + + useEffect(() => { + if (needsToBeOpened(location, item)) { + if (!open) { + setOpen(true); + } + } + // eslint-disable-next-line + }, [location, item]); + + const component = item.url ? NavLinkAdapter : 'li'; + + let itemProps = {}; + + if (typeof component !== 'string') { + itemProps = { + disabled: item.disabled, + to: item.url, + end: item.end, + role: 'button' + }; + } + + if (checkPermission && !item?.hasPermission) { + return null; + } + + return useMemo( + () => ( + + { + setOpen(!open); + }} + {...itemProps} + > + {item.icon && ( + + {item.icon} + + )} + + + + {item.badge && ( + + )} + + { + ev.preventDefault(); + ev.stopPropagation(); + setOpen(!open); + }} + size="large" + > + + {open ? 'heroicons-solid:chevron-down' : 'heroicons-solid:chevron-right'} + + + + + {item.children && ( + + {item.children.map((_item) => ( + + ))} + + )} + + ), + [ + item.badge, + item.children, + item.icon, + item.iconClass, + item.title, + item.url, + itempadding, + nestedLevel, + onItemClick, + open + ] + ); +} + +const NavVerticalCollapse = FuseNavVerticalCollapse; + +export default NavVerticalCollapse; diff --git a/src/@fuse/core/FuseNavigation/vertical/types/FuseNavVerticalGroup.tsx b/src/@fuse/core/FuseNavigation/vertical/types/FuseNavVerticalGroup.tsx new file mode 100644 index 0000000..96ede83 --- /dev/null +++ b/src/@fuse/core/FuseNavigation/vertical/types/FuseNavVerticalGroup.tsx @@ -0,0 +1,110 @@ +import NavLinkAdapter from '@fuse/core/NavLinkAdapter'; +import { alpha, styled } from '@mui/material/styles'; +import clsx from 'clsx'; +import { useMemo } from 'react'; +import { ListItem, ListItemButtonProps, ListItemText } from '@mui/material'; +import FuseNavItem, { FuseNavItemComponentProps } from '../../FuseNavItem'; + +type ListItemButtonComponentProps = ListItemButtonProps & { + itempadding: number; +}; + +const Root = styled(ListItem)(({ theme, ...props }) => ({ + minminHeight: 44, + width: '100%', + borderRadius: '6px', + margin: '28px 0 0 0', + paddingRight: 16, + paddingLeft: props.itempadding > 80 ? 80 : props.itempadding, + paddingTop: 10, + paddingBottom: 10, + color: alpha(theme.palette.text.primary, 0.7), + fontWeight: 600, + letterSpacing: '0.025em' +})); + +/** + * FuseNavVerticalGroup is a component used to render a group of navigation items in a vertical layout. + */ +function FuseNavVerticalGroup(props: FuseNavItemComponentProps) { + const { item, nestedLevel = 0, onItemClick, checkPermission } = props; + + const itempadding = nestedLevel > 0 ? 38 + nestedLevel * 16 : 16; + + const component = item.url ? NavLinkAdapter : 'li'; + + let itemProps = {}; + + if (typeof component !== 'string') { + itemProps = { + disabled: item.disabled, + to: item.url, + end: item.end, + role: 'button' + }; + } + + if (checkPermission && !item?.hasPermission) { + return null; + } + + return useMemo( + () => ( + <> + onItemClick && onItemClick(item)} + sx={item.sx} + {...itemProps} + > + .MuiListItemText-primary': { + fontSize: 12, + color: (theme) => + theme.palette.mode === 'dark' ? 'secondary.light' : 'secondary.main', + fontWeight: 600, + textTransform: 'uppercase', + letterSpacing: '.05em', + lineHeight: '20px' + }, + + '& > .MuiListItemText-secondary': { + fontSize: 11, + color: 'text.disabled', + letterSpacing: '.06px', + fontWeight: 500, + lineHeight: '1.5' + } + }} + primary={item.title} + secondary={item.subtitle} + /> + + {item.children && ( + <> + {item.children.map((_item) => ( + + ))} + + )} + + ), + [item, itempadding, nestedLevel, onItemClick] + ); +} + +const NavVerticalGroup = FuseNavVerticalGroup; + +export default NavVerticalGroup; diff --git a/src/@fuse/core/FuseNavigation/vertical/types/FuseNavVerticalItem.tsx b/src/@fuse/core/FuseNavigation/vertical/types/FuseNavVerticalItem.tsx new file mode 100644 index 0000000..f1ab0de --- /dev/null +++ b/src/@fuse/core/FuseNavigation/vertical/types/FuseNavVerticalItem.tsx @@ -0,0 +1,112 @@ +import NavLinkAdapter from '@fuse/core/NavLinkAdapter'; +import { alpha, styled } from '@mui/material/styles'; +import ListItemText from '@mui/material/ListItemText'; +import clsx from 'clsx'; +import { useMemo } from 'react'; +import { ListItemButton, ListItemButtonProps } from '@mui/material'; +import FuseNavBadge from '../../FuseNavBadge'; +import FuseSvgIcon from '../../../FuseSvgIcon'; +import { FuseNavItemComponentProps } from '../../FuseNavItem'; + +type ListItemButtonStyleProps = ListItemButtonProps & { + itempadding: number; +}; + +const Root = styled(ListItemButton)(({ theme, ...props }) => ({ + minHeight: 44, + width: '100%', + borderRadius: '6px', + margin: '0 0 4px 0', + paddingRight: 16, + paddingLeft: props.itempadding > 80 ? 80 : props.itempadding, + paddingTop: 10, + paddingBottom: 10, + color: alpha(theme.palette.text.primary, 0.7), + cursor: 'pointer', + textDecoration: 'none!important', + '&:hover': { + color: theme.palette.text.primary + }, + '&.active': { + color: theme.palette.text.primary, + backgroundColor: + theme.palette.mode === 'light' ? 'rgba(0, 0, 0, .05)!important' : 'rgba(255, 255, 255, .1)!important', + pointerEvents: 'none', + transition: 'border-radius .15s cubic-bezier(0.4,0.0,0.2,1)', + '& > .fuse-list-item-text-primary': { + color: 'inherit' + }, + '& > .fuse-list-item-icon': { + color: 'inherit' + } + }, + '& >.fuse-list-item-icon': { + marginRight: 16, + color: 'inherit' + }, + '& > .fuse-list-item-text': {} +})); + +/** + * FuseNavVerticalItem is a React component used to render FuseNavItem as part of the Fuse navigational component. + */ +function FuseNavVerticalItem(props: FuseNavItemComponentProps) { + const { item, nestedLevel = 0, onItemClick, checkPermission } = props; + + const itempadding = nestedLevel > 0 ? 38 + nestedLevel * 16 : 16; + + const component = item.url ? NavLinkAdapter : 'li'; + + let itemProps = {}; + + if (typeof component !== 'string') { + itemProps = { + disabled: item.disabled, + to: item.url || '', + end: item.end, + role: 'button' + }; + } + + if (checkPermission && !item?.hasPermission) { + return null; + } + + return useMemo( + () => ( + onItemClick && onItemClick(item)} + itempadding={itempadding} + sx={item.sx} + {...itemProps} + > + {item.icon && ( + + {item.icon} + + )} + + + {item.badge && } + + ), + [item, itempadding, onItemClick] + ); +} + +const NavVerticalItem = FuseNavVerticalItem; + +export default NavVerticalItem; diff --git a/src/@fuse/core/FuseNavigation/vertical/types/FuseNavVerticalLink.tsx b/src/@fuse/core/FuseNavigation/vertical/types/FuseNavVerticalLink.tsx new file mode 100644 index 0000000..18245c9 --- /dev/null +++ b/src/@fuse/core/FuseNavigation/vertical/types/FuseNavVerticalLink.tsx @@ -0,0 +1,107 @@ +import { styled } from '@mui/material/styles'; +import ListItemText from '@mui/material/ListItemText'; +import clsx from 'clsx'; +import { useMemo } from 'react'; +import { Link, ListItemButton, ListItemButtonProps } from '@mui/material'; +import FuseNavBadge from '../../FuseNavBadge'; +import FuseSvgIcon from '../../../FuseSvgIcon'; +import { FuseNavItemComponentProps } from '../../FuseNavItem'; + +type ListItemButtonStyleProps = ListItemButtonProps & { + itempadding: number; +}; + +const Root = styled(ListItemButton)(({ theme, ...props }) => ({ + minHeight: 44, + width: '100%', + borderRadius: '6px', + margin: '0 0 4px 0', + paddingRight: 16, + paddingLeft: props.itempadding > 80 ? 80 : props.itempadding, + paddingTop: 10, + paddingBottom: 10, + '&.active': { + backgroundColor: `${theme.palette.secondary.main}!important`, + color: `${theme.palette.secondary.contrastText}!important`, + pointerEvents: 'none', + transition: 'border-radius .15s cubic-bezier(0.4,0.0,0.2,1)', + '& > .fuse-list-item-text-primary': { + color: 'inherit' + }, + '& > .fuse-list-item-icon': { + color: 'inherit' + } + }, + '& > .fuse-list-item-icon': { + marginRight: 16 + }, + '& > .fuse-list-item-text': {}, + color: theme.palette.text.primary, + textDecoration: 'none!important' +})); + +/** + * FuseNavVerticalLink + * Create a vertical Link to use inside the navigation component. + */ +function FuseNavVerticalLink(props: FuseNavItemComponentProps) { + const { item, nestedLevel = 0, onItemClick, checkPermission } = props; + + const itempadding = nestedLevel > 0 ? 38 + nestedLevel * 16 : 16; + + let itemProps = {}; + + const component = item.url ? Link : 'li'; + + if (typeof component !== 'string') { + itemProps = { + disabled: item.disabled, + href: item.url, + role: 'button', + target: item.target ? item.target : '_blank' + }; + } + + if (checkPermission && !item?.hasPermission) { + return null; + } + + return useMemo( + () => ( + onItemClick && onItemClick(item)} + itempadding={itempadding} + sx={item.sx} + {...itemProps} + > + {item.icon && ( + + {item.icon} + + )} + + + + {item.badge && } + + ), + [item, itempadding, onItemClick, checkPermission] + ); +} + +const NavVerticalLink = FuseNavVerticalLink; + +export default NavVerticalLink; diff --git a/src/@fuse/core/FuseNavigation/vertical/types/FuseNavVerticalTab.tsx b/src/@fuse/core/FuseNavigation/vertical/types/FuseNavVerticalTab.tsx new file mode 100644 index 0000000..74788d4 --- /dev/null +++ b/src/@fuse/core/FuseNavigation/vertical/types/FuseNavVerticalTab.tsx @@ -0,0 +1,183 @@ +import NavLinkAdapter from '@fuse/core/NavLinkAdapter'; +import { alpha, styled } from '@mui/material/styles'; +import Tooltip from '@mui/material/Tooltip'; +import ListItemText from '@mui/material/ListItemText'; +import clsx from 'clsx'; +import { useMemo } from 'react'; +import Box from '@mui/material/Box'; +import { ListItemButton } from '@mui/material'; +import FuseNavBadge from '../../FuseNavBadge'; +import FuseSvgIcon from '../../../FuseSvgIcon'; +import { FuseNavigationProps } from '../../FuseNavigation'; +import { FuseNavItemComponentProps } from '../../FuseNavItem'; + +const Root = styled(Box)(({ theme }) => ({ + '& > .fuse-list-item': { + minHeight: 100, + height: 100, + width: 100, + borderRadius: 12, + margin: '0 0 4px 0', + color: alpha(theme.palette.text.primary, 0.7), + cursor: 'pointer', + textDecoration: 'none!important', + padding: 0, + '&.dense': { + minHeight: 52, + height: 52, + width: 52 + }, + '&.type-divider': { + padding: 0, + height: 2, + minHeight: 2, + margin: '12px 0', + backgroundColor: + theme.palette.mode === 'light' ? 'rgba(0, 0, 0, .05)!important' : 'rgba(255, 255, 255, .1)!important', + pointerEvents: 'none' + }, + '&:hover': { + color: theme.palette.text.primary + }, + '&.active': { + color: theme.palette.text.primary, + backgroundColor: + theme.palette.mode === 'light' ? 'rgba(0, 0, 0, .05)!important' : 'rgba(255, 255, 255, .1)!important', + + // pointerEvents: 'none', + transition: 'border-radius .15s cubic-bezier(0.4,0.0,0.2,1)', + '& .fuse-list-item-text-primary': { + color: 'inherit' + }, + '& .fuse-list-item-icon': { + color: 'inherit' + } + }, + '& .fuse-list-item-icon': { + color: 'inherit' + }, + '& .fuse-list-item-text': {} + } +})); + +export type FuseNavVerticalTabProps = Omit & FuseNavItemComponentProps; + +/** + * The `FuseNavVerticalTab` component renders vertical navigation item with an adaptable + * layout to be used within the `FuseNavigation`. It only supports the `type`s of 'item', + * 'selection' and 'divider' + * */ +function FuseNavVerticalTab(props: FuseNavVerticalTabProps) { + const { item, onItemClick, firstLevel, dense, selectedId, checkPermission } = props; + + const component = item.url ? NavLinkAdapter : 'li'; + + let itemProps = {}; + + if (typeof component !== 'string') { + itemProps = { + disabled: item.disabled, + to: item.url, + end: item.end, + role: 'button' + }; + } + + if (checkPermission && !item?.hasPermission) { + return null; + } + + return useMemo( + () => ( + + onItemClick && onItemClick(item)} + {...itemProps} + > + {dense ? ( + +
+ {item.icon ? ( + + {item.icon} + + ) : ( + item.title &&
{item.title[0]}
+ )} + {item.badge && ( + + )} +
+
+ ) : ( + <> +
+ {item.icon ? ( + + {item.icon} + + ) : ( + item.title &&
{item.title[0]}
+ )} + {item.badge && ( + + )} +
+ + + + )} +
+ {!firstLevel && + item.children && + item.children.map((_item) => ( + + ))} +
+ ), + [firstLevel, item, onItemClick, dense, selectedId] + ); +} + +const NavVerticalTab = FuseNavVerticalTab; + +export default NavVerticalTab; diff --git a/src/@fuse/core/FusePageCarded/FusePageCarded.tsx b/src/@fuse/core/FusePageCarded/FusePageCarded.tsx new file mode 100644 index 0000000..0f150d9 --- /dev/null +++ b/src/@fuse/core/FusePageCarded/FusePageCarded.tsx @@ -0,0 +1,289 @@ +import FuseScrollbars from '@fuse/core/FuseScrollbars'; +import { styled } from '@mui/material/styles'; +import clsx from 'clsx'; +import { forwardRef, memo, ReactNode, useImperativeHandle, useRef } from 'react'; +import GlobalStyles from '@mui/material/GlobalStyles'; +import { SystemStyleObject } from '@mui/system/styleFunctionSx/styleFunctionSx'; +import { Theme } from '@mui/system'; +import FusePageCardedSidebar from './FusePageCardedSidebar'; +import FusePageCardedHeader from './FusePageCardedHeader'; + +const headerHeight = 120; +const toolbarHeight = 64; + +/** + * Props for the FusePageCarded component. + */ +type FusePageCardedProps = SystemStyleObject & { + className?: string; + leftSidebarContent?: ReactNode; + leftSidebarVariant?: 'permanent' | 'persistent' | 'temporary'; + rightSidebarContent?: ReactNode; + rightSidebarVariant?: 'permanent' | 'persistent' | 'temporary'; + header?: ReactNode; + content?: ReactNode; + scroll?: 'normal' | 'page' | 'content'; + leftSidebarOpen?: boolean; + rightSidebarOpen?: boolean; + leftSidebarWidth?: number; + rightSidebarWidth?: number; + rightSidebarOnClose?: () => void; + leftSidebarOnClose?: () => void; +}; + +const Root = styled('div')(({ theme, ...props }) => ({ + display: 'flex', + flexDirection: 'column', + minWidth: 0, + minHeight: '100%', + position: 'relative', + flex: '1 1 auto', + width: '100%', + height: 'auto', + backgroundColor: theme.palette.background.default, + + '& .FusePageCarded-scroll-content': { + height: '100%' + }, + + '& .FusePageCarded-wrapper': { + display: 'flex', + flexDirection: 'row', + flex: '1 1 auto', + zIndex: 2, + maxWidth: '100%', + minWidth: 0, + height: '100%', + backgroundColor: theme.palette.background.paper, + + ...(props.scroll === 'content' && { + position: 'absolute', + top: 0, + bottom: 0, + right: 0, + left: 0, + overflow: 'hidden' + }) + }, + + '& .FusePageCarded-header': { + display: 'flex', + flex: '0 0 auto' + }, + + '& .FusePageCarded-contentWrapper': { + display: 'flex', + flexDirection: 'column', + flex: '1 1 auto', + overflow: 'auto', + WebkitOverflowScrolling: 'touch', + zIndex: 9999 + }, + + '& .FusePageCarded-toolbar': { + height: toolbarHeight, + minHeight: toolbarHeight, + display: 'flex', + alignItems: 'center' + }, + + '& .FusePageCarded-content': { + flex: '1 0 auto' + }, + + '& .FusePageCarded-sidebarWrapper': { + overflow: 'hidden', + backgroundColor: 'transparent', + position: 'absolute', + '&.permanent': { + [theme.breakpoints.up('lg')]: { + position: 'relative', + marginLeft: 0, + marginRight: 0, + transition: theme.transitions.create('margin', { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.leavingScreen + }), + '&.closed': { + transition: theme.transitions.create('margin', { + easing: theme.transitions.easing.easeOut, + duration: theme.transitions.duration.enteringScreen + }), + + '&.FusePageCarded-leftSidebar': { + marginLeft: -props.leftSidebarWidth + }, + '&.FusePageCarded-rightSidebar': { + marginRight: -props.rightSidebarWidth + } + } + } + } + }, + + '& .FusePageCarded-sidebar': { + position: 'absolute', + backgroundColor: theme.palette.background.paper, + color: theme.palette.text.primary, + + '&.permanent': { + [theme.breakpoints.up('lg')]: { + position: 'relative' + } + }, + maxWidth: '100%', + height: '100%' + }, + + '& .FusePageCarded-leftSidebar': { + width: props.leftSidebarWidth, + + [theme.breakpoints.up('lg')]: { + // borderRight: `1px solid ${theme.palette.divider}`, + // borderLeft: 0, + } + }, + + '& .FusePageCarded-rightSidebar': { + width: props.rightSidebarWidth, + + [theme.breakpoints.up('lg')]: { + // borderLeft: `1px solid ${theme.palette.divider}`, + // borderRight: 0, + } + }, + + '& .FusePageCarded-sidebarHeader': { + height: headerHeight, + minHeight: headerHeight, + backgroundColor: theme.palette.primary.dark, + color: theme.palette.primary.contrastText + }, + + '& .FusePageCarded-sidebarHeaderInnerSidebar': { + backgroundColor: 'transparent', + color: 'inherit', + height: 'auto', + minHeight: 'auto' + }, + + '& .FusePageCarded-sidebarContent': { + display: 'flex', + flexDirection: 'column', + minHeight: '100%' + }, + + '& .FusePageCarded-backdrop': { + position: 'absolute' + } +})); + +/** + * The FusePageCarded component is a carded page layout with left and right sidebars. + */ +const FusePageCarded = forwardRef< + { toggleLeftSidebar: (T: boolean) => void; toggleRightSidebar: (T: boolean) => void }, + FusePageCardedProps +>((props, ref) => { + const { + scroll = 'page', + className, + header, + content, + leftSidebarContent, + rightSidebarContent, + leftSidebarOpen = false, + rightSidebarOpen = false, + rightSidebarWidth = 240, + leftSidebarWidth = 240, + leftSidebarVariant = 'permanent', + rightSidebarVariant = 'permanent', + rightSidebarOnClose, + leftSidebarOnClose + } = props; + + const leftSidebarRef = useRef<{ toggleSidebar: (T: boolean) => void }>(null); + const rightSidebarRef = useRef<{ toggleSidebar: (T: boolean) => void }>(null); + const rootRef = useRef(null); + + useImperativeHandle(ref, () => ({ + rootRef, + toggleLeftSidebar: (val: boolean) => { + leftSidebarRef.current.toggleSidebar(val); + }, + toggleRightSidebar: (val: boolean) => { + rightSidebarRef.current.toggleSidebar(val); + } + })); + + return ( + <> + ({ + ...(scroll !== 'page' && { + '#fuse-toolbar': { + position: 'static' + }, + '#fuse-footer': { + position: 'static' + } + }), + ...(scroll === 'page' && { + '#fuse-toolbar': { + position: 'sticky', + top: 0 + }, + '#fuse-footer': { + position: 'sticky', + bottom: 0 + } + }) + })} + /> + + {header && } + +
+
+ {leftSidebarContent && ( + + {leftSidebarContent} + + )} + + {content &&
{content}
} +
+ {rightSidebarContent && ( + + {rightSidebarContent} + + )} +
+
+
+ + ); +}); + +export default memo(styled(FusePageCarded)``); diff --git a/src/@fuse/core/FusePageCarded/FusePageCardedHeader.tsx b/src/@fuse/core/FusePageCarded/FusePageCardedHeader.tsx new file mode 100644 index 0000000..ded0146 --- /dev/null +++ b/src/@fuse/core/FusePageCarded/FusePageCardedHeader.tsx @@ -0,0 +1,20 @@ +import clsx from 'clsx'; +import { ReactNode } from 'react'; + +/** + * Props for the FusePageCardedHeader component. + */ +type FusePageCardedHeaderProps = { + header?: ReactNode; +}; + +/** + * The FusePageCardedHeader component is a header for the FusePageCarded component. + */ +function FusePageCardedHeader(props: FusePageCardedHeaderProps) { + const { header = null } = props; + + return
{header}
; +} + +export default FusePageCardedHeader; diff --git a/src/@fuse/core/FusePageCarded/FusePageCardedSidebar.tsx b/src/@fuse/core/FusePageCarded/FusePageCardedSidebar.tsx new file mode 100644 index 0000000..89eaecb --- /dev/null +++ b/src/@fuse/core/FusePageCarded/FusePageCardedSidebar.tsx @@ -0,0 +1,98 @@ +import Drawer from '@mui/material/Drawer'; +import Hidden from '@mui/material/Hidden'; +import SwipeableDrawer from '@mui/material/SwipeableDrawer'; +import clsx from 'clsx'; +import { forwardRef, useCallback, useEffect, useImperativeHandle, useState, ReactNode } from 'react'; +import { SwipeableDrawerProps } from '@mui/material/SwipeableDrawer/SwipeableDrawer'; +import FusePageCardedSidebarContent from './FusePageCardedSidebarContent'; + +/** + * Props for the FusePageCardedSidebar component. + */ +type FusePageCardedSidebarProps = { + open?: boolean; + position?: SwipeableDrawerProps['anchor']; + variant?: SwipeableDrawerProps['variant']; + onClose?: () => void; + children?: ReactNode; +}; + +/** + * The FusePageCardedSidebar component is a sidebar for the FusePageCarded component. + */ +const FusePageCardedSidebar = forwardRef<{ toggleSidebar: (T: boolean) => void }, FusePageCardedSidebarProps>( + (props, ref) => { + const { open = true, position, variant, onClose = () => {} } = props; + + const [isOpen, setIsOpen] = useState(open); + + const handleToggleDrawer = useCallback((val: boolean) => { + setIsOpen(val); + }, []); + + useImperativeHandle(ref, () => ({ + toggleSidebar: handleToggleDrawer + })); + + useEffect(() => { + handleToggleDrawer(open); + }, [handleToggleDrawer, open]); + + return ( + <> + + {}} + onClose={() => onClose()} + disableSwipeToOpen + classes={{ + root: clsx('FusePageCarded-sidebarWrapper', variant), + paper: clsx( + 'FusePageCarded-sidebar', + variant, + position === 'left' ? 'FusePageCarded-leftSidebar' : 'FusePageCarded-rightSidebar' + ) + }} + ModalProps={{ + keepMounted: true // Better open performance on mobile. + }} + BackdropProps={{ + classes: { + root: 'FusePageCarded-backdrop' + } + }} + style={{ position: 'absolute' }} + > + + + + {variant === 'permanent' && ( + + + + + + )} + + ); + } +); + +export default FusePageCardedSidebar; diff --git a/src/@fuse/core/FusePageCarded/FusePageCardedSidebarContent.tsx b/src/@fuse/core/FusePageCarded/FusePageCardedSidebarContent.tsx new file mode 100644 index 0000000..8f27b32 --- /dev/null +++ b/src/@fuse/core/FusePageCarded/FusePageCardedSidebarContent.tsx @@ -0,0 +1,29 @@ +import FuseScrollbars from '@fuse/core/FuseScrollbars'; +import { ReactNode } from 'react'; + +/** + * Props for the FusePageCardedSidebarContent component. + */ +type FusePageCardedSidebarContentProps = { + innerScroll?: boolean; + children?: ReactNode; +}; + +/** + * The FusePageCardedSidebarContent component is a content container for the FusePageCardedSidebar component. + */ +function FusePageCardedSidebarContent(props: FusePageCardedSidebarContentProps) { + const { innerScroll, children } = props; + + if (!children) { + return null; + } + + return ( + +
{children}
+
+ ); +} + +export default FusePageCardedSidebarContent; diff --git a/src/@fuse/core/FusePageCarded/index.ts b/src/@fuse/core/FusePageCarded/index.ts new file mode 100644 index 0000000..cfde708 --- /dev/null +++ b/src/@fuse/core/FusePageCarded/index.ts @@ -0,0 +1 @@ +export { default } from './FusePageCarded'; diff --git a/src/@fuse/core/FusePageSimple/FusePageSimple.tsx b/src/@fuse/core/FusePageSimple/FusePageSimple.tsx new file mode 100644 index 0000000..2a89594 --- /dev/null +++ b/src/@fuse/core/FusePageSimple/FusePageSimple.tsx @@ -0,0 +1,316 @@ +import FuseScrollbars from '@fuse/core/FuseScrollbars'; +import { styled } from '@mui/material/styles'; +import clsx from 'clsx'; +import { forwardRef, memo, ReactNode, useImperativeHandle, useRef } from 'react'; +import GlobalStyles from '@mui/material/GlobalStyles'; +import { SystemStyleObject } from '@mui/system/styleFunctionSx/styleFunctionSx'; +import { Theme } from '@mui/system'; +import FusePageSimpleHeader from './FusePageSimpleHeader'; +import FusePageSimpleSidebar from './FusePageSimpleSidebar'; + +const headerHeight = 120; +const toolbarHeight = 64; + +/** + * Props for the FusePageSimple component. + */ +type FusePageSimpleProps = SystemStyleObject & { + className?: string; + leftSidebarContent?: ReactNode; + leftSidebarVariant?: 'permanent' | 'persistent' | 'temporary'; + rightSidebarContent?: ReactNode; + rightSidebarVariant?: 'permanent' | 'persistent' | 'temporary'; + header?: ReactNode; + content?: ReactNode; + scroll?: 'normal' | 'page' | 'content'; + leftSidebarOpen?: boolean; + rightSidebarOpen?: boolean; + leftSidebarWidth?: number; + rightSidebarWidth?: number; + rightSidebarOnClose?: () => void; + leftSidebarOnClose?: () => void; +}; + +/** + * The Root styled component is the top-level container for the FusePageSimple component. + */ +const Root = styled('div')(({ theme, ...props }) => ({ + display: 'flex', + flexDirection: 'column', + minWidth: 0, + minHeight: '100%', + position: 'relative', + flex: '1 1 auto', + width: '100%', + height: 'auto', + backgroundColor: theme.palette.background.default, + + '&.FusePageSimple-scroll-content': { + height: '100%' + }, + + '& .FusePageSimple-wrapper': { + display: 'flex', + flexDirection: 'row', + flex: '1 1 auto', + zIndex: 2, + minWidth: 0, + height: '100%', + backgroundColor: theme.palette.background.default, + + ...(props.scroll === 'content' && { + position: 'absolute', + top: 0, + bottom: 0, + right: 0, + left: 0, + overflow: 'hidden' + }) + }, + + '& .FusePageSimple-header': { + display: 'flex', + flex: '0 0 auto', + backgroundSize: 'cover' + }, + + '& .FusePageSimple-topBg': { + position: 'absolute', + left: 0, + right: 0, + top: 0, + height: headerHeight, + pointerEvents: 'none' + }, + + '& .FusePageSimple-contentWrapper': { + display: 'flex', + flexDirection: 'column', + width: '100%', + flex: '1 1 auto', + overflow: 'hidden', + + // WebkitOverflowScrolling: 'touch', + zIndex: 9999 + }, + + '& .FusePageSimple-toolbar': { + height: toolbarHeight, + minHeight: toolbarHeight, + display: 'flex', + alignItems: 'center' + }, + + '& .FusePageSimple-content': { + display: 'flex', + flex: '1 1 auto', + alignItems: 'start', + minHeight: 0, + overflowY: 'auto' + }, + + '& .FusePageSimple-sidebarWrapper': { + overflow: 'hidden', + backgroundColor: 'transparent', + position: 'absolute', + '&.permanent': { + [theme.breakpoints.up('lg')]: { + position: 'relative', + marginLeft: 0, + marginRight: 0, + transition: theme.transitions.create('margin', { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.leavingScreen + }), + '&.closed': { + transition: theme.transitions.create('margin', { + easing: theme.transitions.easing.easeOut, + duration: theme.transitions.duration.enteringScreen + }), + + '&.FusePageSimple-leftSidebar': { + marginLeft: -props.leftSidebarWidth + }, + '&.FusePageSimple-rightSidebar': { + marginRight: -props.rightSidebarWidth + } + } + } + } + }, + + '& .FusePageSimple-sidebar': { + position: 'absolute', + backgroundColor: theme.palette.background.paper, + color: theme.palette.text.primary, + + '&.permanent': { + [theme.breakpoints.up('lg')]: { + position: 'relative' + } + }, + maxWidth: '100%', + height: '100%' + }, + + '& .FusePageSimple-leftSidebar': { + width: props.leftSidebarWidth, + + [theme.breakpoints.up('lg')]: { + borderRight: `1px solid ${theme.palette.divider}`, + borderLeft: 0 + } + }, + + '& .FusePageSimple-rightSidebar': { + width: props.rightSidebarWidth, + + [theme.breakpoints.up('lg')]: { + borderLeft: `1px solid ${theme.palette.divider}`, + borderRight: 0 + } + }, + + '& .FusePageSimple-sidebarHeader': { + height: headerHeight, + minHeight: headerHeight, + backgroundColor: theme.palette.primary.dark, + color: theme.palette.primary.contrastText + }, + + '& .FusePageSimple-sidebarHeaderInnerSidebar': { + backgroundColor: 'transparent', + color: 'inherit', + height: 'auto', + minHeight: 'auto' + }, + + '& .FusePageSimple-sidebarContent': { + display: 'flex', + flexDirection: 'column', + minHeight: '100%' + }, + + '& .FusePageSimple-backdrop': { + position: 'absolute' + } +})); + +/** + * The FusePageSimple component is a layout component that provides a simple page layout with a header, left sidebar, right sidebar, and content area. + * It is designed to be used as a top-level component for an application or as a sub-component within a larger layout. + */ +const FusePageSimple = forwardRef< + { toggleLeftSidebar: (T: boolean) => void; toggleRightSidebar: (T: boolean) => void }, + FusePageSimpleProps +>((props, ref) => { + const { + scroll = 'page', + className, + header, + content, + leftSidebarContent, + rightSidebarContent, + leftSidebarOpen = false, + rightSidebarOpen = false, + rightSidebarWidth = 240, + leftSidebarWidth = 240, + leftSidebarVariant = 'permanent', + rightSidebarVariant = 'permanent', + rightSidebarOnClose, + leftSidebarOnClose + } = props; + + const leftSidebarRef = useRef<{ toggleSidebar: (T: boolean) => void }>(null); + const rightSidebarRef = useRef<{ toggleSidebar: (T: boolean) => void }>(null); + const rootRef = useRef(null); + + useImperativeHandle(ref, () => ({ + rootRef, + toggleLeftSidebar: (val: boolean) => { + leftSidebarRef?.current?.toggleSidebar(val); + }, + toggleRightSidebar: (val: boolean) => { + rightSidebarRef?.current?.toggleSidebar(val); + } + })); + + return ( + <> + ({ + ...(scroll !== 'page' && { + '#fuse-toolbar': { + position: 'static' + }, + '#fuse-footer': { + position: 'static' + } + }), + ...(scroll === 'page' && { + '#fuse-toolbar': { + position: 'sticky', + top: 0 + }, + '#fuse-footer': { + position: 'sticky', + bottom: 0 + } + }) + })} + /> + +
+
+ {leftSidebarContent && ( + + {leftSidebarContent} + + )} +
+ {header && } + + {content && ( + + {content} + + )} +
+ {rightSidebarContent && ( + + {rightSidebarContent} + + )} +
+
+
+ + ); +}); + +export default memo(styled(FusePageSimple)``); diff --git a/src/@fuse/core/FusePageSimple/FusePageSimpleHeader.tsx b/src/@fuse/core/FusePageSimple/FusePageSimpleHeader.tsx new file mode 100644 index 0000000..7b450af --- /dev/null +++ b/src/@fuse/core/FusePageSimple/FusePageSimpleHeader.tsx @@ -0,0 +1,25 @@ +import clsx from 'clsx'; +import { ReactNode } from 'react'; + +/** + * Props for the FusePageSimpleHeader component. + */ +type FusePageSimpleHeaderProps = { + className?: string; + header?: ReactNode; +}; + +/** + * The FusePageSimpleHeader component is a sub-component of the FusePageSimple layout component. + * It provides a header area for the layout. + */ +function FusePageSimpleHeader(props: FusePageSimpleHeaderProps) { + const { header = null, className } = props; + return ( +
+
{header}
+
+ ); +} + +export default FusePageSimpleHeader; diff --git a/src/@fuse/core/FusePageSimple/FusePageSimpleSidebar.tsx b/src/@fuse/core/FusePageSimple/FusePageSimpleSidebar.tsx new file mode 100644 index 0000000..10c49c8 --- /dev/null +++ b/src/@fuse/core/FusePageSimple/FusePageSimpleSidebar.tsx @@ -0,0 +1,101 @@ +import Drawer from '@mui/material/Drawer'; +import Hidden from '@mui/material/Hidden'; +import SwipeableDrawer from '@mui/material/SwipeableDrawer'; +import clsx from 'clsx'; +import { forwardRef, ReactNode, useCallback, useEffect, useImperativeHandle, useState } from 'react'; +import { SwipeableDrawerProps } from '@mui/material/SwipeableDrawer/SwipeableDrawer'; +import FusePageSimpleSidebarContent from './FusePageSimpleSidebarContent'; + +/** + * Props for the FusePageSimpleSidebar component. + */ +type FusePageSimpleSidebarProps = { + open?: boolean; + position?: SwipeableDrawerProps['anchor']; + variant?: SwipeableDrawerProps['variant']; + onClose?: () => void; + children?: ReactNode; +}; + +/** + * The FusePageSimpleSidebar component. + */ +const FusePageSimpleSidebar = forwardRef<{ toggleSidebar: (T: boolean) => void }, FusePageSimpleSidebarProps>( + (props, ref) => { + const { open = true, position, variant, onClose = () => {} } = props; + + const [isOpen, setIsOpen] = useState(open); + + useImperativeHandle(ref, () => ({ + toggleSidebar: handleToggleDrawer + })); + + const handleToggleDrawer = useCallback((val: boolean) => { + setIsOpen(val); + }, []); + + useEffect(() => { + handleToggleDrawer(open); + }, [handleToggleDrawer, open]); + + return ( + <> + + {}} + onClose={() => onClose()} + disableSwipeToOpen + classes={{ + root: clsx('FusePageSimple-sidebarWrapper', variant), + paper: clsx( + 'FusePageSimple-sidebar', + variant, + position === 'left' ? 'FusePageSimple-leftSidebar' : 'FusePageSimple-rightSidebar', + 'max-w-full' + ) + }} + ModalProps={{ + keepMounted: true // Better open performance on mobile. + }} + // container={rootRef.current} + BackdropProps={{ + classes: { + root: 'FusePageSimple-backdrop' + } + }} + style={{ position: 'absolute' }} + > + + + + + {variant === 'permanent' && ( + + + + + + )} + + ); + } +); + +export default FusePageSimpleSidebar; diff --git a/src/@fuse/core/FusePageSimple/FusePageSimpleSidebarContent.tsx b/src/@fuse/core/FusePageSimple/FusePageSimpleSidebarContent.tsx new file mode 100644 index 0000000..5955bc0 --- /dev/null +++ b/src/@fuse/core/FusePageSimple/FusePageSimpleSidebarContent.tsx @@ -0,0 +1,29 @@ +import FuseScrollbars from '@fuse/core/FuseScrollbars'; +import { ReactNode } from 'react'; + +/** + * Props for the FusePageSimpleSidebarContent component. + */ +type FusePageSimpleSidebarContentProps = { + innerScroll?: boolean; + children?: ReactNode; +}; + +/** + * The FusePageSimpleSidebarContent component is a content container for the FusePageSimpleSidebar component. + */ +function FusePageSimpleSidebarContent(props: FusePageSimpleSidebarContentProps) { + const { innerScroll, children } = props; + + if (!children) { + return null; + } + + return ( + +
{children}
+
+ ); +} + +export default FusePageSimpleSidebarContent; diff --git a/src/@fuse/core/FusePageSimple/index.ts b/src/@fuse/core/FusePageSimple/index.ts new file mode 100644 index 0000000..a6e1196 --- /dev/null +++ b/src/@fuse/core/FusePageSimple/index.ts @@ -0,0 +1 @@ +export { default } from './FusePageSimple'; diff --git a/src/@fuse/core/FuseScrollbars/FuseScrollbars.tsx b/src/@fuse/core/FuseScrollbars/FuseScrollbars.tsx new file mode 100644 index 0000000..2d0b36d --- /dev/null +++ b/src/@fuse/core/FuseScrollbars/FuseScrollbars.tsx @@ -0,0 +1,163 @@ +import { styled } from '@mui/material/styles'; +import MobileDetect from 'mobile-detect'; +import PerfectScrollbar from 'perfect-scrollbar'; +import 'perfect-scrollbar/css/perfect-scrollbar.css'; +import React, { forwardRef, useEffect, useRef, ReactNode, useCallback, useState } from 'react'; +import history from '@history'; +import { selectCustomScrollbarsEnabled } from '@fuse/core/FuseSettings/store/fuseSettingsSlice'; +import { useSelector } from 'react-redux'; + +const Root = styled('div')(() => ({ + overscrollBehavior: 'contain', + minHeight: '100%' +})); + +const md = new MobileDetect(window.navigator.userAgent); +const isMobile = md.mobile(); + +type EventHandlerMap = { [key: string]: string }; + +const handlerNameByEvent: EventHandlerMap = { + 'ps-scroll-y': 'onScrollY', + 'ps-scroll-x': 'onScrollX', + 'ps-scroll-up': 'onScrollUp', + 'ps-scroll-down': 'onScrollDown', + 'ps-scroll-left': 'onScrollLeft', + 'ps-scroll-right': 'onScrollRight', + 'ps-y-reach-start': 'onYReachStart', + 'ps-y-reach-end': 'onYReachEnd', + 'ps-x-reach-start': 'onXReachStart', + 'ps-x-reach-end': 'onXReachEnd' +}; + +Object.freeze(handlerNameByEvent); + +type FuseScrollbarsProps = { + id?: string; + className?: string; + children: ReactNode; + enable?: boolean; + scrollToTopOnChildChange?: () => void; + scrollToTopOnRouteChange?: () => void; + option?: { + wheelPropagation?: boolean; + suppressScrollX?: boolean; + }; +}; + +/** + * FuseScrollbars Component for app-level scrollbar + * Unlike normal scrollbars, this component supports mobile device as well + */ +const FuseScrollbars = forwardRef((props, ref) => { + const { + className = '', + children, + id = '', + scrollToTopOnChildChange = false, + scrollToTopOnRouteChange = false, + enable = true, + option = { + wheelPropagation: true + } + } = props; + const containerRef = useRef(null); + const psRef = useRef(null); + const handlerByEvent = useRef>(new Map()); + const [style, setStyle] = useState({}); + const customScrollbars = useSelector(selectCustomScrollbarsEnabled); + + const hookUpEvents = useCallback(() => { + Object.keys(handlerNameByEvent).forEach((key) => { + const callback = props[handlerNameByEvent[key] as keyof FuseScrollbarsProps] as (T: HTMLDivElement) => void; + + if (callback) { + const handler: EventListener = () => callback(containerRef.current); + handlerByEvent.current.set(key, handler); + + if ('current' in containerRef && containerRef.current instanceof HTMLDivElement) { + containerRef.current.addEventListener(key, handler, false); + } + } + }); + }, [ref]); + + const unHookUpEvents = useCallback(() => { + handlerByEvent.current.forEach((value, key) => { + if ('current' in containerRef && containerRef.current instanceof HTMLDivElement) { + containerRef.current.removeEventListener(key, value, false); + } + }); + handlerByEvent.current.clear(); + }, [ref]); + + useEffect(() => { + if (customScrollbars && containerRef.current && !isMobile) { + psRef.current = new PerfectScrollbar(containerRef.current, option); + hookUpEvents(); + } + + return () => { + if (psRef.current) { + psRef.current.destroy(); + psRef.current = null; + unHookUpEvents(); + } + }; + }, [customScrollbars]); + + const scrollToTop = useCallback(() => { + if (ref && containerRef.current) { + containerRef.current.scrollTop = 0; + } + }, [ref]); + + useEffect(() => { + if (scrollToTopOnChildChange) { + scrollToTop(); + } + }, [scrollToTop, children, scrollToTopOnChildChange]); + + useEffect( + () => + history.listen(() => { + if (scrollToTopOnRouteChange) { + scrollToTop(); + } + }), + [scrollToTop, scrollToTopOnRouteChange] + ); + + useEffect(() => { + if (customScrollbars && enable && !isMobile) { + setStyle({ + position: 'relative', + overflow: 'hidden!important' + }); + } else { + setStyle({}); + } + }, [customScrollbars, enable, isMobile]); + + return ( + { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + containerRef.current = el; + if (typeof ref === 'function') { + ref(el); + } else if (ref) { + ref.current = el; + } + }} + > + {children} + + ); +}); + +export default FuseScrollbars; diff --git a/src/@fuse/core/FuseScrollbars/index.ts b/src/@fuse/core/FuseScrollbars/index.ts new file mode 100644 index 0000000..c40dd19 --- /dev/null +++ b/src/@fuse/core/FuseScrollbars/index.ts @@ -0,0 +1 @@ +export { default } from './FuseScrollbars'; diff --git a/src/@fuse/core/FuseSearch/FuseSearch.tsx b/src/@fuse/core/FuseSearch/FuseSearch.tsx new file mode 100644 index 0000000..6d42329 --- /dev/null +++ b/src/@fuse/core/FuseSearch/FuseSearch.tsx @@ -0,0 +1,520 @@ +import ClickAwayListener from '@mui/material/ClickAwayListener'; +import { styled } from '@mui/material/styles'; +import IconButton from '@mui/material/IconButton'; +import ListItemIcon from '@mui/material/ListItemIcon'; +import ListItemText from '@mui/material/ListItemText'; +import MenuItem from '@mui/material/MenuItem'; +import Paper from '@mui/material/Paper'; +import Popper from '@mui/material/Popper'; +import TextField from '@mui/material/TextField'; +import Tooltip from '@mui/material/Tooltip'; +import Typography from '@mui/material/Typography'; +import match from 'autosuggest-highlight/match'; +import parse from 'autosuggest-highlight/parse'; +import clsx from 'clsx'; +import _ from '@lodash'; +import { memo, useEffect, useReducer, useRef, ReactNode } from 'react'; +import Autosuggest, { RenderInputComponentProps, RenderSuggestionParams, ChangeEvent } from 'react-autosuggest'; +import { useNavigate } from 'react-router-dom'; +import * as React from 'react'; +import { PopperOwnProps } from '@mui/base/Popper'; +import FuseSvgIcon from '../FuseSvgIcon'; +import { FuseFlatNavItemType } from '../FuseNavigation/types/FuseNavItemType'; + +const Root = styled('div')(({ theme }) => ({ + '& .FuseSearch-container': { + position: 'relative' + }, + + '& .FuseSearch-suggestionsContainerOpen': { + position: 'absolute', + zIndex: 1, + marginTop: theme.spacing(), + left: 0, + right: 0 + }, + + '& .FuseSearch-suggestion': { + display: 'block' + }, + + '& .FuseSearch-suggestionsList': { + margin: 0, + padding: 0, + listStyleType: 'none' + }, + + '& .FuseSearch-input': { + transition: theme.transitions.create(['background-color'], { + easing: theme.transitions.easing.easeInOut, + duration: theme.transitions.duration.short + }), + '&:focus': { + backgroundColor: theme.palette.background.paper + } + } +})); + +type RenderInputComponentType = { + variant?: 'basic' | 'standard'; + inputRef?: (node: HTMLInputElement) => void; + ref?: (node: HTMLInputElement) => void; +}; + +function renderInputComponent(props: RenderInputComponentProps) { + const { variant, ref, inputRef = () => {}, ...other } = props as RenderInputComponentType; + return ( +
+ {variant === 'basic' ? ( + // Outlined + <> + { + ref?.(node); + inputRef(node); + }, + classes: { + input: 'FuseSearch-input py-0 px-16 h-40 md:h-48 ltr:pr-48 rtl:pl-48', + notchedOutline: 'rounded-8' + } + }} + variant="outlined" + {...other} + /> + + heroicons-outline:search + + + ) : ( + // Standard + { + ref?.(node); + inputRef(node); + }, + classes: { + input: 'FuseSearch-input py-0 px-16 h-48 md:h-64' + } + }} + variant="standard" + {...other} + /> + )} +
+ ); +} + +function renderSuggestion(suggestion: FuseFlatNavItemType, { query, isHighlighted }: RenderSuggestionParams) { + const matches = match(suggestion.title, query); + const parts = parse(suggestion.title, matches); + + return ( + + + {suggestion.icon ? ( + {suggestion.icon} + ) : ( + {suggestion.title[0]} + )} + + + part.highlight ? ( + + {part.text} + + ) : ( + + {part.text} + + ) + )} + /> + + ); +} + +function getSuggestions(value: string, data: FuseFlatNavItemType[]): FuseFlatNavItemType[] { + const inputValue = _.deburr(value.trim()).toLowerCase(); + const inputLength = inputValue.length; + let count = 0; + + if (inputLength === 0) { + return []; + } + + return data.filter((suggestion) => { + const keep = count < 10 && suggestion?.title && match(suggestion?.title, inputValue)?.length > 0; + + if (keep) { + count += 1; + } + + return keep; + }); +} + +function getSuggestionValue(suggestion: FuseFlatNavItemType) { + return suggestion.title; +} + +type StateType = { + searchText: string; + search: boolean; + navigation: FuseFlatNavItemType[]; + suggestions: FuseFlatNavItemType[]; + noSuggestions: boolean; + opened: boolean; +}; + +const initialState: StateType = { + searchText: '', + search: false, + navigation: [], + suggestions: [], + noSuggestions: false, + opened: false +}; + +type ActionType = + | { type: 'setSearchText'; value: string } + | { type: 'setNavigation'; data: FuseFlatNavItemType[] } + | { type: 'updateSuggestions'; value: string } + | { type: 'clearSuggestions' } + | { type: 'open' } + | { type: 'close' }; + +function reducer(state: StateType, action: ActionType): StateType { + switch (action.type) { + case 'open': { + return { + ...state, + opened: true + }; + } + case 'close': { + return { + ...state, + opened: false, + searchText: '' + }; + } + case 'setSearchText': { + return { + ...state, + searchText: action.value + }; + } + case 'setNavigation': { + return { + ...state, + navigation: action.data + }; + } + case 'updateSuggestions': { + const suggestions = getSuggestions(action.value, state.navigation); + const isInputBlank = typeof action.value === 'string' && action.value.trim() === ''; + const noSuggestions = !isInputBlank && suggestions.length === 0; + + return { + ...state, + suggestions, + noSuggestions + }; + } + case 'clearSuggestions': { + return { + ...state, + suggestions: [], + noSuggestions: false + }; + } + default: { + throw new Error(); + } + } +} + +/** + * Props for FuseSearch component + */ +type FuseSearchProps = { + className?: string; + navigation: FuseFlatNavItemType[]; + variant?: 'basic' | 'full'; + trigger?: ReactNode; + placeholder?: string; + noResults?: string; +}; + +/** + * FuseSearch component + */ +function FuseSearch(props: FuseSearchProps) { + const { + navigation = [], + className, + variant = 'full', + placeholder = 'Search', + noResults = 'No results..', + trigger = ( + + heroicons-outline:search + + ) + } = props; + + const [state, dispatch] = useReducer(reducer, initialState); + const navigate = useNavigate(); + + const suggestionsNode = useRef(null); + const popperAnchor = useRef(null); + const popperNode = useRef(null); + const buttonNode = useRef(null); + + useEffect(() => { + dispatch({ + type: 'setNavigation', + data: navigation + }); + }, [navigation]); + + function showSearch() { + dispatch({ type: 'open' }); + document.addEventListener('keydown', escFunction, false); + } + + function hideSearch() { + dispatch({ type: 'close' }); + document.removeEventListener('keydown', escFunction, false); + } + + function escFunction(event: KeyboardEvent) { + if (event.key === 'Esc' || event.key === 'Escape') { + hideSearch(); + } + } + + function handleSuggestionsFetchRequested({ value }: { value: string }) { + dispatch({ + type: 'updateSuggestions', + value + }); + } + + function handleSuggestionSelected( + event: React.FormEvent, + { suggestion }: { suggestion: FuseFlatNavItemType } + ) { + event.preventDefault(); + event.stopPropagation(); + if (!suggestion.url) { + return; + } + navigate(suggestion.url); + hideSearch(); + } + + function handleSuggestionsClearRequested() { + dispatch({ + type: 'clearSuggestions' + }); + } + + function handleChange(event: React.FormEvent, { newValue }: ChangeEvent) { + dispatch({ + type: 'setSearchText', + value: newValue + }); + } + + function handleClickAway(event: MouseEvent | TouchEvent) { + if ( + state.opened && + (!suggestionsNode.current || + !(event.target instanceof Node && suggestionsNode.current.contains(event.target))) + ) { + hideSearch(); + } + } + + switch (variant) { + case 'basic': { + return ( +
+ ( + +
+ + {options.children} + {state.noSuggestions && ( + {noResults} + )} + +
+
+ )} + /> +
+ ); + } + case 'full': { + return ( + + +
+ {trigger} +
+
+ + {state.opened && ( + + +
+ ( + +
+ + {options.children} + {state.noSuggestions && ( + {noResults} + )} + +
+
+ )} + /> + + heroicons-outline:x + +
+
+
+ )} +
+ ); + } + default: { + return null; + } + } +} + +export default memo(FuseSearch); diff --git a/src/@fuse/core/FuseSearch/index.ts b/src/@fuse/core/FuseSearch/index.ts new file mode 100644 index 0000000..dbeb42b --- /dev/null +++ b/src/@fuse/core/FuseSearch/index.ts @@ -0,0 +1 @@ +export { default } from './FuseSearch'; diff --git a/src/@fuse/core/FuseSettings/FuseSettings.tsx b/src/@fuse/core/FuseSettings/FuseSettings.tsx new file mode 100644 index 0000000..2129e6b --- /dev/null +++ b/src/@fuse/core/FuseSettings/FuseSettings.tsx @@ -0,0 +1,477 @@ +import { useDebounce, usePrevious } from '@fuse/hooks'; +import { styled } from '@mui/material/styles'; +import { Controller, useForm } from 'react-hook-form'; +import themeLayoutConfigs, { themeLayoutDefaultsProps } from 'app/theme-layouts/themeLayoutConfigs'; +import _ from '@lodash'; +import TextField from '@mui/material/TextField'; +import FormControl from '@mui/material/FormControl'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import FormLabel from '@mui/material/FormLabel'; +import Radio from '@mui/material/Radio'; +import RadioGroup from '@mui/material/RadioGroup'; +import Switch from '@mui/material/Switch'; +import Typography from '@mui/material/Typography'; +import { memo, useCallback, useEffect, useMemo } from 'react'; +import { useSelector } from 'react-redux'; +import { selectFuseCurrentSettings, setDefaultSettings } from '@fuse/core/FuseSettings/store/fuseSettingsSlice'; +import { selectUser } from 'src/app/auth/user/store/userSlice'; +import { useAppDispatch } from 'app/store/store'; +import { Palette } from '@mui/material/styles/createPalette'; +import ThemeFormConfigTypes from '@fuse/core/FuseSettings/ThemeFormConfigTypes'; +import { PartialDeep } from 'type-fest'; +import { showMessage } from '@fuse/core/FuseMessage/store/fuseMessageSlice'; +import PaletteSelector from './palette-generator/PaletteSelector'; +import SectionPreview from './palette-generator/SectionPreview'; + +/** + * The Root styled component is used to style the root div of the FuseSettings component. + * It uses the styled function from the MUI styles library to create a styled component. + */ +const Root = styled('div')(({ theme }) => ({ + '& .FuseSettings-formControl': { + margin: '6px 0', + width: '100%', + '&:last-child': { + marginBottom: 0 + } + }, + + '& .FuseSettings-group': {}, + + '& .FuseSettings-formGroupTitle': { + position: 'absolute', + top: -10, + left: 8, + fontWeight: 600, + padding: '0 4px', + backgroundColor: theme.palette.background.paper + }, + + '& .FuseSettings-formGroup': { + position: 'relative', + border: `1px solid ${theme.palette.divider}`, + borderRadius: 2, + padding: '12px 12px 0 12px', + margin: '24px 0 16px 0', + '&:first-of-type': { + marginTop: 16 + } + } +})); + +export type FuseThemeType = { + palette: PartialDeep; +}; + +export type FuseThemesType = { [key: string]: FuseThemeType }; + +export type FuseSettingsConfigType = { + layout: { + style?: string; + config?: PartialDeep; + }; + customScrollbars?: boolean; + direction: 'rtl' | 'ltr'; + theme: { + main: FuseThemeType; + navbar: FuseThemeType; + toolbar: FuseThemeType; + footer: FuseThemeType; + }; + defaultAuth?: string[]; + loginRedirectUrl: string; +}; + +/** + * The FuseSettings component is responsible for rendering the settings form for the Fuse React application. + * It uses the useForm hook from the react-hook-form library to handle form state and validation. + * It also uses various MUI components to render the form fields and sections. + * The component is memoized to prevent unnecessary re-renders. + */ +function FuseSettings() { + const dispatch = useAppDispatch(); + const user = useSelector(selectUser); + const settings = useSelector(selectFuseCurrentSettings); + const { reset, watch, control } = useForm({ + mode: 'onChange', + defaultValues: settings + }); + const form = watch(); + const formConfigs = themeLayoutConfigs[form.layout.style].form; + const prevForm = usePrevious(form ? _.merge({}, form) : null); + const prevSettings = usePrevious(settings ? _.merge({}, settings) : null); + const formChanged = !_.isEqual(form, prevForm); + const settingsChanged = !_.isEqual(settings, prevSettings); + + const handleUpdate = useDebounce((newSettings: FuseSettingsConfigType) => { + dispatch(setDefaultSettings(newSettings)).then(() => { + dispatch(showMessage({ message: 'User settings saved with the api' })); + }); + }, 300); + + useEffect(() => { + // Skip initial changes + if (!prevForm && !prevSettings) { + return; + } + + // If theme settings changed update form data + if (settingsChanged) { + reset(settings); + return; + } + + const newSettings = _.merge({}, settings, form); + + // No need to change + if (_.isEqual(newSettings, settings)) { + return; + } + + // If form changed update theme settings + if (formChanged) { + if (settings.layout.style !== newSettings.layout.style) { + _.set(newSettings, 'layout.config', themeLayoutConfigs[newSettings?.layout?.style]?.defaults); + } + handleUpdate(newSettings); + } + }, [dispatch, form, formChanged, handleUpdate, prevForm, prevSettings, reset, settings, settingsChanged, user]); + + const getForm = useCallback( + (_formConfigs: ThemeFormConfigTypes, prefix: string) => + Object.entries(_formConfigs).map(([key, formControl]) => { + const target = prefix ? `${prefix}.${key}` : key; + switch (formControl.type) { + case 'radio': { + return ( + ( + + + {formControl.title} + + + {formControl.options.map((opt: { value: string; name: string }) => ( + } + label={opt.name} + /> + ))} + + + )} + /> + ); + } + case 'switch': { + return ( + ( + + + {formControl.title} + + onChange(ev.target.checked)} + aria-label={formControl.title} + /> + + )} + /> + ); + } + case 'number': { + return ( +
+ ( + + )} + /> +
+ ); + } + case 'group': { + return ( +
+ + {formControl.title} + + {getForm(formControl.children, target)} +
+ ); + } + default: { + return ''; + } + } + }), + [control] + ); + + return ( + +
+ + Layout + + + ( + + + Style + + + {Object.entries(themeLayoutConfigs).map(([key, layout]) => ( + } + label={layout.title} + /> + ))} + + + )} + /> + + {useMemo(() => getForm(formConfigs, 'layout.config'), [formConfigs, getForm])} + + + *Not all option combinations are available + +
+ +
+ + Theme + + +
+ ( + + + + Main Palette + +
+ } + /> + )} + /> + + ( + + + + Navbar Palette + +
+ } + /> + )} + /> + + ( + + + + Toolbar Palette + +
+ } + /> + )} + /> + + ( + + + + Footer Palette + +
+ } + /> + )} + /> + + + + ( + + + Custom Scrollbars + + onChange(ev.target.checked)} + aria-label="Custom Scrollbars" + /> + + )} + /> + + ( + + + Direction + + + } + label="RTL" + /> + } + label="LTR" + /> + + + )} + /> + + ); +} + +export default memo(FuseSettings); diff --git a/src/@fuse/core/FuseSettings/ThemeFormConfigTypes.ts b/src/@fuse/core/FuseSettings/ThemeFormConfigTypes.ts new file mode 100644 index 0000000..de3000f --- /dev/null +++ b/src/@fuse/core/FuseSettings/ThemeFormConfigTypes.ts @@ -0,0 +1,46 @@ +type RadioOptionType = { + name: string; + value: string; +}; + +type FormFieldBaseType = { + title: string; +}; + +type RadioFieldType = FormFieldBaseType & { + type: 'radio'; + options: RadioOptionType[]; +}; + +type NumberFieldType = FormFieldBaseType & { + type: 'number'; +}; + +type SwitchFieldType = FormFieldBaseType & { + type: 'switch'; +}; + +type GroupFieldChildrenType = { + [key: string]: RadioFieldType | SwitchFieldType | NumberFieldType | GroupFieldType; +}; + +/** + * The GroupFieldType type defines the shape of a group form field. + * It extends the FormFieldBaseType type and adds a children property which is a GroupFieldChildrenType object. + */ +type GroupFieldType = FormFieldBaseType & { + type: 'group'; + children: GroupFieldChildrenType; +}; + +type AnyFormFieldType = RadioFieldType | SwitchFieldType | NumberFieldType | GroupFieldType; + +/** + * The ThemeFormConfigTypes type is an object where the keys are strings and the values are AnyFormFieldType objects. + * It is used to generate the form fields based on the configuration in the themeLayoutConfigs object. + */ +type ThemeFormConfigTypes = { + [key: string]: AnyFormFieldType; +}; + +export default ThemeFormConfigTypes; diff --git a/src/@fuse/core/FuseSettings/index.ts b/src/@fuse/core/FuseSettings/index.ts new file mode 100644 index 0000000..66bcf32 --- /dev/null +++ b/src/@fuse/core/FuseSettings/index.ts @@ -0,0 +1 @@ +export { default } from './FuseSettings'; diff --git a/src/@fuse/core/FuseSettings/palette-generator/PalettePreview.tsx b/src/@fuse/core/FuseSettings/palette-generator/PalettePreview.tsx new file mode 100644 index 0000000..d56afbb --- /dev/null +++ b/src/@fuse/core/FuseSettings/palette-generator/PalettePreview.tsx @@ -0,0 +1,70 @@ +import clsx from 'clsx'; +import Box from '@mui/material/Box'; +import { Palette } from '@mui/material/styles/createPalette'; +import { PartialDeep } from 'type-fest'; + +/** + * Props for PalettePreview component + */ +type PalettePreviewProps = { + className?: string; + palette: PartialDeep; +}; + +/** + * PalettePreview component + */ +function PalettePreview(props: PalettePreviewProps) { + const { palette, className } = props; + + return ( + + palette.primary.contrastText || palette.getContrastText(palette.primary.main) + }} + > + Header (Primary) + + palette.secondary.contrastText || palette.getContrastText(palette.secondary.main) + }} + > + S + + +
+ + Paper + +
+ +
+ Background +
+ + {/*
{JSON.stringify(palette, null, 2)}
*/} +
+ ); +} + +export default PalettePreview; diff --git a/src/@fuse/core/FuseSettings/palette-generator/PaletteSelector.tsx b/src/@fuse/core/FuseSettings/palette-generator/PaletteSelector.tsx new file mode 100644 index 0000000..a6d8b25 --- /dev/null +++ b/src/@fuse/core/FuseSettings/palette-generator/PaletteSelector.tsx @@ -0,0 +1,313 @@ +import { MouseEvent, ReactNode, useEffect, useState } from 'react'; +import { Controller, useForm } from 'react-hook-form'; +import _ from '@lodash'; +import { darkPaletteText, lightPaletteText } from 'app/configs/themesConfig'; +import { Theme, darken, getContrastRatio, lighten } from '@mui/material/styles'; +import { useTheme } from '@mui/styles'; +import AppBar from '@mui/material/AppBar'; +import Toolbar from '@mui/material/Toolbar'; +import { Dialog, DialogActions, DialogContent, Icon, TextField } from '@mui/material'; +import Typography from '@mui/material/Typography'; +import ButtonGroup from '@mui/material/ButtonGroup'; +import Button from '@mui/material/Button'; +import PalettePreview from './PalettePreview'; +import SectionPreview from './SectionPreview'; +import { FuseThemeType } from '../FuseSettings'; + +/** + * Check if a color is dark + */ +function isDark(color: string) { + return getContrastRatio(color, '#ffffff') >= 3; +} + +/** + * Props for PaletteSelector component + */ +type PaletteSelectorProps = { + triggerElement: ReactNode; + value: FuseThemeType; + onChange: (value: FuseThemeType) => void; +}; + +/** + * PaletteSelector component + */ +function PaletteSelector(props: PaletteSelectorProps) { + const { + value, + onChange, + triggerElement = ( +
+ + Edit Palette +
+ ) + } = props; + const [openDialog, setOpenDialog] = useState(false); + + const theme: Theme = useTheme(); + + const methods = useForm({ + defaultValues: {}, + mode: 'onChange' + }); + + const { reset, formState, trigger, handleSubmit, watch, control, setValue } = methods; + + const { isValid, dirtyFields, errors } = formState; + + useEffect(() => { + reset(value); + }, [value, reset]); + + const form = watch(); + + const formType = watch('palette.mode'); + + useEffect(() => { + if (!formType || !openDialog) { + return; + } + + setTimeout(() => { + trigger(['palette.background.paper', 'palette.background.default']); + }); + }, [formType, openDialog, trigger]); + + const backgroundColorValidation = (colorVal: string) => { + if (formType === 'light' && isDark(colorVal)) { + return 'Must be a light color'; + } + if (formType === 'dark' && !isDark(colorVal)) { + return 'Must be a dark color'; + } + return true; + }; + + /** + * Open Dialog + */ + function handleOpenDialog(ev: MouseEvent) { + ev.preventDefault(); + ev.stopPropagation(); + setOpenDialog(true); + } + + /** + * Close Dialog + */ + function handleCloseDialog() { + setOpenDialog(false); + } + + function onSubmit(formData: FuseThemeType) { + onChange(formData); + handleCloseDialog(); + } + + return ( + <> + {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/interactive-supports-focus */} +
+ {triggerElement} +
+ + + + palette + + Edit palette + + + + + +
+
+ ( + + + + + + )} + /> + + ( + { + _onChange(ev.target.value); + setValue('palette.primary.light', lighten(ev.target.value, 0.8), { + shouldDirty: true + }); + setValue('palette.primary.dark', darken(ev.target.value, 0.2), { + shouldDirty: true + }); + setValue( + 'palette.primary.contrastText', + theme.palette.getContrastText(ev.target.value), + { shouldDirty: true } + ); + }} + type="color" + variant="outlined" + className="mb-32" + label="Primary color" + InputProps={{ className: 'w-200 h-32' }} + /> + )} + /> + + ( + { + _onChange(ev.target.value); + setValue('palette.secondary.light', lighten(ev.target.value, 0.8), { + shouldDirty: true + }); + setValue('palette.secondary.dark', darken(ev.target.value, 0.2), { + shouldDirty: true + }); + setValue( + 'palette.secondary.contrastText', + theme.palette.getContrastText(ev.target.value), + { shouldDirty: true } + ); + }} + type="color" + variant="outlined" + className="mb-32" + label="Secondary color" + InputProps={{ className: 'w-200 h-32' }} + /> + )} + /> + + ( + + )} + /> + + ( + + )} + /> +
+ +
+ + Preview + + +
+
+
+ + + + +
+ + ); +} + +export default PaletteSelector; diff --git a/src/@fuse/core/FuseSettings/palette-generator/SectionPreview.tsx b/src/@fuse/core/FuseSettings/palette-generator/SectionPreview.tsx new file mode 100644 index 0000000..880fe95 --- /dev/null +++ b/src/@fuse/core/FuseSettings/palette-generator/SectionPreview.tsx @@ -0,0 +1,116 @@ +import clsx from 'clsx'; +import Box from '@mui/material/Box'; +import { darken, lighten } from '@mui/material/styles'; +import { red } from '@mui/material/colors'; + +/** + * Props for SectionPreview component + */ +type SectionPreviewProps = { + className?: string; + section?: 'main' | 'navbar' | 'toolbar' | 'footer'; +}; + +/** + * SectionPreview component + */ +function SectionPreview(props: SectionPreviewProps) { + const { section, className } = props; + return ( +
+ + theme.palette.mode === 'light' + ? lighten(theme.palette.background.default, 0.4) + : lighten(theme.palette.background.default, 0.02), + '& > div': { + backgroundColor: + section === 'navbar' + ? red['200'] + : (theme) => + theme.palette.mode === 'light' + ? darken(theme.palette.background.default, 0.1) + : lighten(theme.palette.background.default, 0.1) + } + }} + className="w-32 space-y-1 px-6 pt-12" + > +
+
+
+
+
+ +
+ + theme.palette.mode === 'light' + ? lighten(theme.palette.background.default, 0.4) + : lighten(theme.palette.background.default, 0.02), + '& > div': { + backgroundColor: + section === 'toolbar' + ? red['200'] + : (theme) => + theme.palette.mode === 'light' + ? darken(theme.palette.background.default, 0.1) + : lighten(theme.palette.background.default, 0.1) + } + }} + className={clsx('flex h-12 items-center justify-end pr-6')} + > +
+
+
+ + + theme.palette.mode === 'light' + ? lighten(theme.palette.background.default, 0.4) + : lighten(theme.palette.background.default, 0.02) + }} + className={clsx('flex flex-auto border-y')} + /> + + theme.palette.mode === 'light' + ? lighten(theme.palette.background.default, 0.4) + : lighten(theme.palette.background.default, 0.02), + '& > div': { + backgroundColor: + section === 'footer' + ? red['200'] + : (theme) => + theme.palette.mode === 'light' + ? darken(theme.palette.background.default, 0.1) + : lighten(theme.palette.background.default, 0.1) + } + }} + className={clsx('flex h-12 items-center pr-6')} + > +
+
+
+ +
+
+ ); +} + +export default SectionPreview; diff --git a/src/@fuse/core/FuseSettings/store/fuseSettingsSlice.ts b/src/@fuse/core/FuseSettings/store/fuseSettingsSlice.ts new file mode 100644 index 0000000..70d03dd --- /dev/null +++ b/src/@fuse/core/FuseSettings/store/fuseSettingsSlice.ts @@ -0,0 +1,301 @@ +import { createTheme, getContrastRatio } from '@mui/material/styles'; +import { createAsyncThunk, createSelector, createSlice, PayloadAction } from '@reduxjs/toolkit'; +import _ from '@lodash'; +import { + defaultSettings, + defaultThemeOptions, + extendThemeWithMixins, + getParsedQuerySettings, + mustHaveThemeOptions +} from '@fuse/default-settings'; +import settingsConfig from 'app/configs/settingsConfig'; +import themeLayoutConfigs from 'app/theme-layouts/themeLayoutConfigs'; +import { resetUser, setUser, setUserSettings } from 'src/app/auth/user/store/userSlice'; +import { darkPaletteText, lightPaletteText } from 'app/configs/themesConfig'; +import { AppThunk, RootStateType } from 'app/store/types'; +import { FuseSettingsConfigType, FuseThemesType, FuseThemeType } from '@fuse/core/FuseSettings/FuseSettings'; +import { ThemeOptions } from '@mui/material/styles/createTheme'; +import { PartialDeep } from 'type-fest'; +import { appSelector } from 'app/store/store'; +import { showMessage } from '@fuse/core/FuseMessage/store/fuseMessageSlice'; + +type AppRootStateType = RootStateType; + +export const changeFuseTheme = + (theme: FuseThemesType): AppThunk => + (dispatch, getState) => { + const AppState = getState() as AppRootStateType; + const settings = AppState.fuseSettings; + + const { navbar, footer, toolbar, main } = theme; + + const newSettings: FuseSettingsConfigType = { + ...settings.current, + theme: { + main, + navbar, + toolbar, + footer + } + }; + + dispatch(setDefaultSettings(newSettings)).then(() => { + dispatch(showMessage({ message: 'User theme selection saved with the api' })); + }); + }; + +type layoutProps = { + style: string; + config: unknown; +}; + +/** + * Gets the initial settings for the application. + */ +function getInitialSettings(): FuseSettingsConfigType { + const defaultLayoutStyle = + settingsConfig.layout && settingsConfig.layout.style ? settingsConfig.layout.style : 'layout1'; + + const layout: layoutProps = { + style: defaultLayoutStyle, + config: themeLayoutConfigs[defaultLayoutStyle].defaults + }; + + return _.merge({}, defaultSettings, { layout }, settingsConfig, getParsedQuerySettings()); +} + +/** + * Generates the settings object by merging the default settings with the new settings. + */ +export function generateSettings( + _defaultSettings: PartialDeep, + _newSettings: FuseSettingsConfigType +) { + return _.merge( + {}, + _defaultSettings, + { layout: { config: themeLayoutConfigs[_newSettings?.layout?.style]?.defaults } }, + _newSettings + ); +} + +const initialSettings = getInitialSettings(); + +/** + * The type definition for the initial state. + */ +type initialStateProps = { + initial: FuseSettingsConfigType; + defaults: FuseSettingsConfigType; + current: FuseSettingsConfigType; +}; + +/** + * The initial state. + */ +const initialState: initialStateProps = { + initial: initialSettings, + defaults: _.merge({}, initialSettings), + current: _.merge({}, initialSettings) +}; + +/** + * Sets the default settings for the application. + */ +export const setDefaultSettings = createAsyncThunk( + 'fuseSettings/setDefaultSettings', + async (val: PartialDeep, { dispatch, getState }) => { + const AppState = getState() as AppRootStateType; + + const settings = AppState.fuseSettings; + + const defaults = generateSettings(settings.defaults, val as FuseSettingsConfigType); + + dispatch(setUserSettings(defaults)); + + return { + ...settings, + defaults: _.merge({}, defaults), + current: _.merge({}, defaults) + }; + } +); + +/** + * The settings slice. + */ +export const fuseSettingsSlice = createSlice({ + name: 'fuseSettings', + initialState, + reducers: { + setSettings: (state, action: PayloadAction) => { + const current = generateSettings(state.defaults, action.payload); + + return { + ...state, + current + }; + }, + + setInitialSettings: () => _.merge({}, initialState), + resetSettings: (state) => ({ + ...state, + defaults: _.merge({}, state.defaults), + current: _.merge({}, state.defaults) + }) + }, + extraReducers: (builder) => { + builder + .addCase(setDefaultSettings.fulfilled, (state, action) => action.payload) + .addCase(setUser.fulfilled, (state, action) => { + const defaults = generateSettings( + state.defaults, + action.payload?.data?.settings as FuseSettingsConfigType + ); + return { + ...state, + defaults: _.merge({}, defaults), + current: _.merge({}, defaults) + }; + }) + .addCase(resetUser.fulfilled, (state) => { + return { + ...state, + defaults: _.merge({}, initialSettings), + current: _.merge({}, initialSettings) + }; + }); + } +}); + +type directionType = 'ltr' | 'rtl'; + +const getDirection = appSelector((state: AppRootStateType) => state.fuseSettings.current.direction); +const getMainTheme = appSelector((state: AppRootStateType) => state.fuseSettings.current.theme.main); +const getNavbarTheme = appSelector((state: AppRootStateType) => state.fuseSettings.current.theme.navbar); +const getToolbarTheme = appSelector((state: AppRootStateType) => state.fuseSettings.current.theme.toolbar); +const getFooterTheme = appSelector((state: AppRootStateType) => state.fuseSettings.current.theme.footer); + +/** + * Generates the MUI theme object. + */ +function generateMuiTheme(theme: FuseThemeType, direction: directionType) { + const data = _.merge({}, defaultThemeOptions, theme, mustHaveThemeOptions) as ThemeOptions; + + return createTheme( + _.merge({}, data, { + mixins: extendThemeWithMixins(data), + direction + } as ThemeOptions) + ); +} + +/** + * Selects the contrast theme based on the background color. + */ +export const selectContrastMainTheme = (bgColor: string) => { + function isDark(color: string) { + return getContrastRatio(color, '#ffffff') >= 3; + } + return isDark(bgColor) ? selectMainThemeDark : selectMainThemeLight; +}; + +/** + * Changes the theme mode. + */ +function changeThemeMode(theme: FuseThemeType, mode: 'dark' | 'light'): FuseThemeType { + const modes = { + dark: { + palette: { + mode: 'dark', + divider: 'rgba(241,245,249,.12)', + background: { + paper: '#1E2125', + default: '#121212' + }, + text: darkPaletteText + } + }, + light: { + palette: { + mode: 'light', + divider: '#e2e8f0', + background: { + paper: '#FFFFFF', + default: '#F7F7F7' + }, + text: lightPaletteText + } + } + }; + + return _.merge({}, theme, modes[mode]); +} + +export const selectMainTheme = createSelector([getMainTheme, getDirection], (theme, direction) => + generateMuiTheme(theme, direction) +); + +export const selectMainThemeDark = createSelector([getMainTheme, getDirection], (theme, direction) => + generateMuiTheme(changeThemeMode(theme, 'dark'), direction) +); + +export const selectMainThemeLight = createSelector([getMainTheme, getDirection], (theme, direction) => + generateMuiTheme(changeThemeMode(theme, 'light'), direction) +); + +export const selectNavbarTheme = createSelector([getNavbarTheme, getDirection], (theme, direction) => + generateMuiTheme(theme, direction) +); + +export const selectNavbarThemeDark = createSelector([getNavbarTheme, getDirection], (theme, direction) => + generateMuiTheme(changeThemeMode(theme, 'dark'), direction) +); + +export const selectNavbarThemeLight = createSelector([getNavbarTheme, getDirection], (theme, direction) => + generateMuiTheme(changeThemeMode(theme, 'light'), direction) +); + +export const selectToolbarTheme = createSelector([getToolbarTheme, getDirection], (theme, direction) => + generateMuiTheme(theme, direction) +); + +export const selectToolbarThemeDark = createSelector([getToolbarTheme, getDirection], (theme, direction) => + generateMuiTheme(changeThemeMode(theme, 'dark'), direction) +); + +export const selectToolbarThemeLight = createSelector([getToolbarTheme, getDirection], (theme, direction) => + generateMuiTheme(changeThemeMode(theme, 'light'), direction) +); + +export const selectFooterTheme = createSelector([getFooterTheme, getDirection], (theme, direction) => + generateMuiTheme(theme, direction) +); + +export const selectFooterThemeDark = createSelector([getFooterTheme, getDirection], (theme, direction) => + generateMuiTheme(changeThemeMode(theme, 'dark'), direction) +); + +export const selectFooterThemeLight = createSelector([getFooterTheme, getDirection], (theme, direction) => + generateMuiTheme(changeThemeMode(theme, 'light'), direction) +); + +export const selectFuseCurrentSettings = appSelector((state: AppRootStateType) => state.fuseSettings.current); + +export const selectFuseCurrentLayoutConfig = appSelector( + (state: AppRootStateType) => state.fuseSettings.current.layout.config +); + +export const selectFuseDefaultSettings = appSelector((state: AppRootStateType) => state.fuseSettings.defaults); + +export const selectCustomScrollbarsEnabled = appSelector( + (state: AppRootStateType) => state.fuseSettings.current.customScrollbars +); + +// export const selectFuseThemesSettings = (state: RootState) => state.fuseSettings.themes; + +export const { resetSettings, setInitialSettings, setSettings } = fuseSettingsSlice.actions; + +export type settingsSliceType = typeof fuseSettingsSlice; + +export default fuseSettingsSlice.reducer; diff --git a/src/@fuse/core/FuseShortcuts/FuseShortcuts.tsx b/src/@fuse/core/FuseShortcuts/FuseShortcuts.tsx new file mode 100644 index 0000000..b98c095 --- /dev/null +++ b/src/@fuse/core/FuseShortcuts/FuseShortcuts.tsx @@ -0,0 +1,250 @@ +import { amber } from '@mui/material/colors'; +import Divider from '@mui/material/Divider'; +import IconButton from '@mui/material/IconButton'; +import Input from '@mui/material/Input'; +import ListItemIcon from '@mui/material/ListItemIcon'; +import ListItemText from '@mui/material/ListItemText'; +import Menu from '@mui/material/Menu'; +import MenuItem from '@mui/material/MenuItem'; +import Tooltip from '@mui/material/Tooltip'; +import Typography from '@mui/material/Typography'; +import clsx from 'clsx'; +import { memo, useEffect, useMemo, useRef, useState } from 'react'; +import { Link } from 'react-router-dom'; +import _ from '@lodash'; +import FuseSvgIcon from '../FuseSvgIcon'; +import { FuseFlatNavItemType } from '../FuseNavigation/types/FuseNavItemType'; + +type FuseShortcutsProps = { + className?: string; + navigation: FuseFlatNavItemType[]; + onChange: (T: string[]) => void; + shortcuts?: string[]; + variant?: 'horizontal' | 'vertical'; +}; + +/** + * The FuseShortcuts component is responsible for rendering a list of shortcuts based on the navigation and shortcuts props. + * It uses various MUI components to render the list items and search input. + * The component is memoized to prevent unnecessary re-renders. + */ +function FuseShortcuts(props: FuseShortcutsProps) { + const { navigation = [], shortcuts = [], onChange, variant = 'horizontal', className = '' } = props; + + const searchInputRef = useRef(null); + const [addMenu, setAddMenu] = useState(null); + const [searchText, setSearchText] = useState(''); + const [searchResults, setSearchResults] = useState([]); + const [shortcutItems, setShortcutItems] = useState([]); + + useEffect(() => { + const _shortcutItems = shortcuts + ? shortcuts.map((id) => _.find(navigation, { id })) + : ([] as FuseFlatNavItemType[]); + + setShortcutItems(_shortcutItems); + }, [shortcuts]); + + function addMenuClick(event: React.MouseEvent) { + setAddMenu(event.currentTarget); + } + + function addMenuClose() { + setAddMenu(null); + } + + function search(ev: React.ChangeEvent) { + const newSearchText = ev.target.value; + + setSearchText(newSearchText); + + if (newSearchText.length !== 0 && navigation) { + setSearchResults( + navigation.filter((item) => item?.title?.toLowerCase()?.includes(newSearchText?.toLowerCase())) + ); + return; + } + setSearchResults([]); + } + + function toggleInShortcuts(id: string) { + let newShortcuts = [...shortcuts]; + + newShortcuts = _.xor(newShortcuts, [id]); + + onChange(newShortcuts); + } + + return ( +
+ {useMemo(() => { + return ( +
+ {shortcutItems.map( + (_item) => + _item && ( + + + + {_item.icon ? ( + {_item.icon} + ) : ( + + {_item.title[0]} + + )} + + + + ) + )} + + + + heroicons-solid:star + + +
+ ); + }, [addMenu, variant, shortcutItems])} + + { + searchInputRef?.current?.focus(); + }, + onExited: () => { + setSearchText(''); + } + }} + > +
+ +
+ + + + {useMemo(() => { + if (searchText.length === 0 || !searchResults || searchResults.length === 0) { + return null; + } + + return searchResults.map((_item) => ( + toggleInShortcuts(_item.id)} + /> + )); + }, [searchResults, shortcuts, searchText])} + + {searchText.length !== 0 && searchResults.length === 0 && ( + + No results.. + + )} + + {useMemo(() => { + if (searchText.length !== 0) { + return null; + } + + return shortcutItems.map( + (_item) => + _item && ( + toggleInShortcuts(_item.id)} + /> + ) + ); + }, [shortcutItems, shortcuts, searchText])} +
+
+ ); +} + +function ShortcutMenuItem(props: { + shortcuts: FuseShortcutsProps['shortcuts']; + item: FuseFlatNavItemType; + onToggle: (T: string) => void; +}) { + const { item, onToggle, shortcuts = [] } = props; + + if (!item || !item.id) { + return null; + } + + return ( + + + + {item.icon ? ( + {item.icon} + ) : ( + {item.title[0]} + )} + + + { + ev.preventDefault(); + ev.stopPropagation(); + onToggle(item.id); + }} + size="large" + > + + {shortcuts.includes(item.id) ? 'heroicons-solid:star' : 'heroicons-outline:star'} + + + + + ); +} + +export default memo(FuseShortcuts); diff --git a/src/@fuse/core/FuseShortcuts/index.ts b/src/@fuse/core/FuseShortcuts/index.ts new file mode 100644 index 0000000..f2b57e8 --- /dev/null +++ b/src/@fuse/core/FuseShortcuts/index.ts @@ -0,0 +1 @@ +export { default } from './FuseShortcuts'; diff --git a/src/@fuse/core/FuseSidePanel/FuseSidePanel.tsx b/src/@fuse/core/FuseSidePanel/FuseSidePanel.tsx new file mode 100644 index 0000000..7122d4f --- /dev/null +++ b/src/@fuse/core/FuseSidePanel/FuseSidePanel.tsx @@ -0,0 +1,263 @@ +import FuseScrollbars from '@fuse/core/FuseScrollbars'; +import { styled } from '@mui/material/styles'; +import Fab from '@mui/material/Fab'; +import Hidden from '@mui/material/Hidden'; +import IconButton from '@mui/material/IconButton'; +import Paper from '@mui/material/Paper'; +import SwipeableDrawer from '@mui/material/SwipeableDrawer'; +import Tooltip from '@mui/material/Tooltip'; +import clsx from 'clsx'; +import { memo, ReactNode, useState } from 'react'; +import FuseSvgIcon from '../FuseSvgIcon'; + +const Root = styled('div')(({ theme }) => ({ + '& .FuseSidePanel-paper': { + display: 'flex', + width: 56, + transition: theme.transitions.create(['transform', 'width', 'min-width'], { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.shorter + }), + paddingBottom: 64, + height: '100%', + maxHeight: '100vh', + position: 'sticky', + top: 0, + zIndex: 999, + '&.left': { + '& .FuseSidePanel-buttonWrapper': { + left: 0, + right: 'auto' + }, + '& .FuseSidePanel-buttonIcon': { + transform: 'rotate(0deg)' + } + }, + '&.right': { + '& .FuseSidePanel-buttonWrapper': { + right: 0, + left: 'auto' + }, + '& .FuseSidePanel-buttonIcon': { + transform: 'rotate(-180deg)' + } + }, + '&.closed': { + [theme.breakpoints.up('lg')]: { + width: 0 + }, + '&.left': { + '& .FuseSidePanel-buttonWrapper': { + justifyContent: 'start' + }, + '& .FuseSidePanel-button': { + borderBottomLeftRadius: 0, + borderTopLeftRadius: 0, + paddingLeft: 4 + }, + '& .FuseSidePanel-buttonIcon': { + transform: 'rotate(-180deg)' + } + }, + '&.right': { + '& .FuseSidePanel-buttonWrapper': { + justifyContent: 'flex-end' + }, + '& .FuseSidePanel-button': { + borderBottomRightRadius: 0, + borderTopRightRadius: 0, + paddingRight: 4 + }, + '& .FuseSidePanel-buttonIcon': { + transform: 'rotate(0deg)' + } + }, + '& .FuseSidePanel-buttonWrapper': { + width: 'auto' + }, + '& .FuseSidePanel-button': { + backgroundColor: theme.palette.background.paper, + borderRadius: 38, + transition: theme.transitions.create( + ['background-color', 'border-radius', 'width', 'min-width', 'padding'], + { + easing: theme.transitions.easing.easeInOut, + duration: theme.transitions.duration.shorter + } + ), + width: 24, + '&:hover': { + width: 52, + paddingLeft: 8, + paddingRight: 8 + } + }, + '& .FuseSidePanel-content': { + opacity: 0 + } + } + }, + + '& .FuseSidePanel-content': { + overflow: 'hidden', + opacity: 1, + transition: theme.transitions.create(['opacity'], { + easing: theme.transitions.easing.easeInOut, + duration: theme.transitions.duration.short + }) + }, + + '& .FuseSidePanel-buttonWrapper': { + position: 'absolute', + bottom: 0, + left: 0, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + padding: '12px 0', + width: '100%', + minWidth: 56 + }, + + '& .FuseSidePanel-button': { + padding: 8, + width: 40, + height: 40 + }, + + '& .FuseSidePanel-buttonIcon': { + transition: theme.transitions.create(['transform'], { + easing: theme.transitions.easing.easeInOut, + duration: theme.transitions.duration.short + }) + }, + + '& .FuseSidePanel-mobileButton': { + height: 40, + position: 'absolute', + zIndex: 99, + bottom: 12, + width: 24, + borderRadius: 38, + padding: 8, + backgroundColor: theme.palette.background.paper, + transition: theme.transitions.create(['background-color', 'border-radius', 'width', 'min-width', 'padding'], { + easing: theme.transitions.easing.easeInOut, + duration: theme.transitions.duration.shorter + }), + '&:hover': { + width: 52, + paddingLeft: 8, + paddingRight: 8 + }, + '&.left': { + borderBottomLeftRadius: 0, + borderTopLeftRadius: 0, + paddingLeft: 4, + left: 0 + }, + + '&.right': { + borderBottomRightRadius: 0, + borderTopRightRadius: 0, + paddingRight: 4, + right: 0, + '& .FuseSidePanel-buttonIcon': { + transform: 'rotate(-180deg)' + } + } + } +})); + +type FuseSidePanelProps = { + position?: 'left'; + opened?: true; + className?: string; + children?: ReactNode; +}; + +/** + * The FuseSidePanel component is responsible for rendering a side panel that can be opened and closed. + * It uses various MUI components to render the panel and its contents. + * The component is memoized to prevent unnecessary re-renders. + */ +function FuseSidePanel(props: FuseSidePanelProps) { + const { position = 'left', opened = true, className, children } = props; + + const [panelOpened, setPanelOpened] = useState(Boolean(opened)); + const [mobileOpen, setMobileOpen] = useState(false); + + function toggleOpened() { + setPanelOpened(!panelOpened); + } + + function toggleMobileDrawer() { + setMobileOpen(!mobileOpen); + } + + return ( + + + + {children} + +
+ + + + heroicons-outline:chevron-left + + + +
+
+
+ + {}} + onClose={toggleMobileDrawer} + disableSwipeToOpen + > + {children} + + + + + heroicons-outline:chevron-right + + + +
+ ); +} + +export default memo(FuseSidePanel); diff --git a/src/@fuse/core/FuseSidePanel/index.ts b/src/@fuse/core/FuseSidePanel/index.ts new file mode 100644 index 0000000..d07fb96 --- /dev/null +++ b/src/@fuse/core/FuseSidePanel/index.ts @@ -0,0 +1 @@ +export { default } from './FuseSidePanel'; diff --git a/src/@fuse/core/FuseSplashScreen/FuseSplashScreen.tsx b/src/@fuse/core/FuseSplashScreen/FuseSplashScreen.tsx new file mode 100644 index 0000000..a82b86e --- /dev/null +++ b/src/@fuse/core/FuseSplashScreen/FuseSplashScreen.tsx @@ -0,0 +1,35 @@ +import { memo } from 'react'; +import Box from '@mui/material/Box'; + +/** + * The FuseSplashScreen component is responsible for rendering a splash screen with a logo and a loading spinner. + * It uses various MUI components to render the logo and spinner. + * The component is memoized to prevent unnecessary re-renders. + */ +function FuseSplashScreen() { + return ( +
+
+ logo +
+ div': { + backgroundColor: 'palette.secondary.main' + } + }} + > +
+
+
+ +
+ ); +} + +export default memo(FuseSplashScreen); diff --git a/src/@fuse/core/FuseSplashScreen/index.ts b/src/@fuse/core/FuseSplashScreen/index.ts new file mode 100644 index 0000000..8683740 --- /dev/null +++ b/src/@fuse/core/FuseSplashScreen/index.ts @@ -0,0 +1 @@ +export { default } from './FuseSplashScreen'; diff --git a/src/@fuse/core/FuseSuspense/FuseSuspense.tsx b/src/@fuse/core/FuseSuspense/FuseSuspense.tsx new file mode 100644 index 0000000..bf67f6b --- /dev/null +++ b/src/@fuse/core/FuseSuspense/FuseSuspense.tsx @@ -0,0 +1,22 @@ +import FuseLoading from '@fuse/core/FuseLoading'; +import { ReactNode, Suspense } from 'react'; +import { FuseLoadingProps } from '@fuse/core/FuseLoading/FuseLoading'; + +type FuseSuspenseProps = { + loadingProps?: FuseLoadingProps; + children: ReactNode; +}; + +/** + * The FuseSuspense component is a wrapper around the React Suspense component. + * It is used to display a loading spinner while the wrapped components are being loaded. + * The component is memoized to prevent unnecessary re-renders. + * React Suspense defaults + * For to Avoid Repetition + */ +function FuseSuspense(props: FuseSuspenseProps) { + const { children, loadingProps } = props; + return }>{children}; +} + +export default FuseSuspense; diff --git a/src/@fuse/core/FuseSuspense/index.ts b/src/@fuse/core/FuseSuspense/index.ts new file mode 100644 index 0000000..d3347f7 --- /dev/null +++ b/src/@fuse/core/FuseSuspense/index.ts @@ -0,0 +1 @@ +export { default } from './FuseSuspense'; diff --git a/src/@fuse/core/FuseSvgIcon/FuseSvgIcon.tsx b/src/@fuse/core/FuseSvgIcon/FuseSvgIcon.tsx new file mode 100644 index 0000000..ae82ad6 --- /dev/null +++ b/src/@fuse/core/FuseSvgIcon/FuseSvgIcon.tsx @@ -0,0 +1,79 @@ +import { styled } from '@mui/material/styles'; +import { Box, BoxProps } from '@mui/system'; +import Icon from '@mui/material/Icon'; +import clsx from 'clsx'; +import { forwardRef } from 'react'; + +type FuseSvgIconProps = BoxProps & { + fill?: string; + xmlns?: string; + viewBox?: string; + size?: number | string; + color?: 'inherit' | 'disabled' | 'primary' | 'secondary' | 'action' | 'error' | 'info' | 'success' | 'warning'; +}; + +/** + * The Root styled component is used to style the root div of the FuseSvgIcon component. + * It uses the styled function from the MUI styles library to create a styled component. + */ +const Root = styled(Box)(({ theme, size = 24, color = 'inherit' }) => ({ + width: size, + height: size, + minWidth: size, + minHeight: size, + fontSize: size, + lineHeight: size, + color: { + primary: theme.palette.primary.main, + secondary: theme.palette.secondary.main, + info: theme.palette.info.main, + success: theme.palette.success.main, + warning: theme.palette.warning.main, + action: theme.palette.action.active, + error: theme.palette.error.main, + disabled: theme.palette.action.disabled, + inherit: 'currentColor' + }[color] as string +})); + +/** + * The FuseSvgIcon component is responsible for rendering an SVG icon with a specified size and color. + * It uses various MUI components to render the icon. + * The component is memoized to prevent unnecessary re-renders. + */ +const FuseSvgIcon = forwardRef((props, ref) => { + const { children, className = '', color = 'inherit' } = props; + + if (typeof children !== 'string') { + return null; + } + + if (!children.includes(':')) { + return ( + + ); + } + + const iconPath = children.replace(':', '.svg#'); + + return ( + + + + ); +}); + +export default FuseSvgIcon; diff --git a/src/@fuse/core/FuseSvgIcon/index.ts b/src/@fuse/core/FuseSvgIcon/index.ts new file mode 100644 index 0000000..902f8a3 --- /dev/null +++ b/src/@fuse/core/FuseSvgIcon/index.ts @@ -0,0 +1 @@ +export { default } from './FuseSvgIcon'; diff --git a/src/@fuse/core/FuseTheme/FuseTheme.tsx b/src/@fuse/core/FuseTheme/FuseTheme.tsx new file mode 100644 index 0000000..dcce8df --- /dev/null +++ b/src/@fuse/core/FuseTheme/FuseTheme.tsx @@ -0,0 +1,113 @@ +import { alpha, ThemeProvider } from '@mui/material/styles'; +import { memo, ReactNode, useEffect, useLayoutEffect } from 'react'; +import { Theme } from '@mui/material/styles/createTheme'; +import GlobalStyles from '@mui/material/GlobalStyles'; + +/** + * The useEnhancedEffect function is used to conditionally use the useLayoutEffect hook if the window object is defined. + * Otherwise, it uses the useEffect hook. + */ +const useEnhancedEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect; + +type FuseThemeProps = { + children: ReactNode; + direction: string; + theme: Theme; +}; + +const inputGlobalStyles = ( + ({ + html: { + backgroundColor: `${theme.palette.background.default}!important`, + color: `${theme.palette.text.primary}!important` + }, + body: { + backgroundColor: theme.palette.background.default, + color: theme.palette.text.primary + }, + + /* 'code:not([class*="language-"])': { + color: theme.palette.secondary.dark, + backgroundColor: + theme.palette.mode === 'light' ? 'rgba(255, 255, 255, .9)' : 'rgba(0, 0, 0, .9)', + padding: '2px 3px', + borderRadius: 2, + lineHeight: 1.7, + }, */ + 'table.simple tbody tr th': { + borderColor: theme.palette.divider + }, + 'table.simple thead tr th': { + borderColor: theme.palette.divider + }, + 'a:not([role=button]):not(.MuiButtonBase-root)': { + color: theme.palette.secondary.main, + textDecoration: 'underline', + '&:hover': {} + }, + 'a.link, a:not([role=button])[target=_blank]': { + background: alpha(theme.palette.secondary.main, 0.2), + color: 'inherit', + borderBottom: `1px solid ${theme.palette.divider}`, + textDecoration: 'none', + '&:hover': { + background: alpha(theme.palette.secondary.main, 0.3), + textDecoration: 'none' + } + }, + '[class^="border"]': { + borderColor: theme.palette.divider + }, + '[class*="border"]': { + borderColor: theme.palette.divider + }, + '[class*="divide-"] > :not([hidden]) ~ :not([hidden])': { + borderColor: theme.palette.divider + }, + hr: { + borderColor: theme.palette.divider + }, + + '::-webkit-scrollbar-thumb': { + boxShadow: `inset 0 0 0 20px ${ + theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.24)' : 'rgba(255, 255, 255, 0.24)' + }` + }, + '::-webkit-scrollbar-thumb:active': { + boxShadow: `inset 0 0 0 20px ${ + theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.37)' : 'rgba(255, 255, 255, 0.37)' + }` + } + })} + /> +); + +/** + * The FuseTheme component is responsible for rendering the MUI ThemeProvider component with the specified theme and direction. + * It also sets the direction of the document body and adds a class to the body based on the current theme mode. + * The component is memoized to prevent unnecessary re-renders. + */ +function FuseTheme(props: FuseThemeProps) { + const { direction, theme, children } = props; + const { mode } = theme.palette; + + useEnhancedEffect(() => { + document.body.dir = direction; + }, [direction]); + + useEffect(() => { + document.body.classList.add(mode === 'light' ? 'light' : 'dark'); + document.body.classList.remove(mode === 'light' ? 'dark' : 'light'); + }, [mode]); + + // console.warn('FuseTheme:: rendered',mainTheme); + return ( + + {children} + {inputGlobalStyles} + + ); +} + +export default memo(FuseTheme); diff --git a/src/@fuse/core/FuseTheme/index.ts b/src/@fuse/core/FuseTheme/index.ts new file mode 100644 index 0000000..df22417 --- /dev/null +++ b/src/@fuse/core/FuseTheme/index.ts @@ -0,0 +1 @@ +export { default } from './FuseTheme'; diff --git a/src/@fuse/core/FuseThemeSelector/FuseThemeSelector.tsx b/src/@fuse/core/FuseThemeSelector/FuseThemeSelector.tsx new file mode 100644 index 0000000..6ef9b79 --- /dev/null +++ b/src/@fuse/core/FuseThemeSelector/FuseThemeSelector.tsx @@ -0,0 +1,33 @@ +import { memo } from 'react'; +import ThemePreview, { FuseThemeOption } from '@fuse/core/FuseThemeSelector/ThemePreview'; + +type FuseThemeSchemesProps = { + onSelect?: (t: FuseThemeOption) => void; + options: FuseThemeOption[]; +}; + +/** + * The FuseThemeSchemes component is responsible for rendering a list of theme schemes with preview images. + * It uses the SchemePreview component to render each scheme preview. + * The component is memoized to prevent unnecessary re-renders. + */ +function FuseThemeSelector(props: FuseThemeSchemesProps) { + const { onSelect, options } = props; + + return ( +
+
+ {options.map((item) => ( + + ))} +
+
+ ); +} + +export default memo(FuseThemeSelector); diff --git a/src/@fuse/core/FuseThemeSelector/SchemePreview.tsx b/src/@fuse/core/FuseThemeSelector/SchemePreview.tsx new file mode 100644 index 0000000..86f75c8 --- /dev/null +++ b/src/@fuse/core/FuseThemeSelector/SchemePreview.tsx @@ -0,0 +1,90 @@ +import { useTheme } from '@mui/material/styles'; +import clsx from 'clsx'; +import Typography from '@mui/material/Typography'; +import { FuseThemeType } from '@fuse/core/FuseSettings/FuseSettings'; + +type SchemePreviewProps = { + id: string; + className?: string; + onSelect: (T: FuseThemeType) => void; + theme: FuseThemeType; +}; + +/** + * The SchemePreview component is responsible for rendering a preview of a theme scheme. + * It uses various MUI components to render the preview. + * The component is memoized to prevent unnecessary re-renders. + */ +function SchemePreview(props: SchemePreviewProps) { + const { theme, className, id, onSelect = () => {} } = props; + + const _theme = useTheme(); + + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const primaryColor: string = theme.palette.primary[500] ? theme.palette.primary[500] : theme.palette.primary.main; + const primaryColorContrast = theme.palette.primary.contrastText || _theme.palette.getContrastText(primaryColor); + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const secondaryColor: string = theme.palette.secondary[500] + ? theme.palette.secondary[500] + : theme.palette.secondary.main; + const secondaryColorContrast = + theme.palette.secondary.contrastText || _theme.palette.getContrastText(secondaryColor); + const backgroundColor = theme.palette.background.default; + const backgroundColorContrast = _theme.palette.getContrastText(theme.palette.background.default); + const paperColor = theme.palette.background.paper; + const paperColorContrast = _theme.palette.getContrastText(theme.palette.background.paper); + + return ( +
+ + {id} +
+ ); +} + +export default SchemePreview; diff --git a/src/@fuse/core/FuseThemeSelector/ThemePreview.tsx b/src/@fuse/core/FuseThemeSelector/ThemePreview.tsx new file mode 100644 index 0000000..1f69fa7 --- /dev/null +++ b/src/@fuse/core/FuseThemeSelector/ThemePreview.tsx @@ -0,0 +1,121 @@ +import clsx from 'clsx'; +import Typography from '@mui/material/Typography'; +import { FuseThemesType } from '@fuse/core/FuseSettings/FuseSettings'; + +export type FuseThemeOption = { + id: string; + section: FuseThemesType; +}; + +type ThemePreviewProps = { + className?: string; + onSelect?: (T: FuseThemeOption) => void; + theme: FuseThemeOption; +}; + +/** + * The ThemePreview component is responsible for rendering a preview of a theme scheme. + * It uses various MUI components to render the preview. + * The component is memoized to prevent unnecessary re-renders. + */ +function ThemePreview(props: ThemePreviewProps) { + const { theme, className, onSelect = () => {} } = props; + const { section, id } = theme; + + const { navbar, toolbar, footer, main } = section; + + return ( +
+ + {id} +
+ ); +} + +export default ThemePreview; diff --git a/src/@fuse/core/FuseThemeSelector/index.ts b/src/@fuse/core/FuseThemeSelector/index.ts new file mode 100644 index 0000000..0e7ce5c --- /dev/null +++ b/src/@fuse/core/FuseThemeSelector/index.ts @@ -0,0 +1 @@ +export { default } from './FuseThemeSelector'; diff --git a/src/@fuse/core/NavLinkAdapter/NavLinkAdapter.tsx b/src/@fuse/core/NavLinkAdapter/NavLinkAdapter.tsx new file mode 100644 index 0000000..c419ace --- /dev/null +++ b/src/@fuse/core/NavLinkAdapter/NavLinkAdapter.tsx @@ -0,0 +1,41 @@ +import { NavLink, NavLinkProps, useNavigate } from 'react-router-dom'; +import { CSSProperties, forwardRef, ReactNode } from 'react'; + +export type NavLinkAdapterPropsType = NavLinkProps & { + activeClassName?: string; + activeStyle?: CSSProperties; + children?: ReactNode; +}; + +/** + * The NavLinkAdapter component is a wrapper around the React Router NavLink component. + * It adds the ability to navigate programmatically using the useNavigate hook. + * The component is memoized to prevent unnecessary re-renders. + */ +const NavLinkAdapter = forwardRef((props, ref) => { + const { activeClassName = 'active', activeStyle, role = 'button', ..._props } = props; + const navigate = useNavigate(); + + return ( + { + e.preventDefault(); + navigate(_props.to); + }} + className={({ isActive }) => + [_props.className, isActive ? activeClassName : null].filter(Boolean).join(' ') + } + style={({ isActive }) => ({ + ..._props.style, + ...(isActive ? activeStyle : null) + })} + > + {props.children} + + ); +}); + +export default NavLinkAdapter; diff --git a/src/@fuse/core/NavLinkAdapter/index.ts b/src/@fuse/core/NavLinkAdapter/index.ts new file mode 100644 index 0000000..2e42825 --- /dev/null +++ b/src/@fuse/core/NavLinkAdapter/index.ts @@ -0,0 +1 @@ +export { default } from './NavLinkAdapter'; diff --git a/src/@fuse/core/withRouter/index.ts b/src/@fuse/core/withRouter/index.ts new file mode 100644 index 0000000..3aefa26 --- /dev/null +++ b/src/@fuse/core/withRouter/index.ts @@ -0,0 +1 @@ +export { default } from './withRouter'; diff --git a/src/@fuse/core/withRouter/withRouter.tsx b/src/@fuse/core/withRouter/withRouter.tsx new file mode 100644 index 0000000..bd72385 --- /dev/null +++ b/src/@fuse/core/withRouter/withRouter.tsx @@ -0,0 +1,31 @@ +import { useLocation, useNavigate, useParams } from 'react-router-dom'; +import { ComponentType } from 'react'; + +export type WithRouterProps = { + location?: ReturnType; + params?: Record; + navigate?: ReturnType; +}; + +/** + * The withRouter function is a higher-order component that wraps a component with the useLocation, useParams, and useNavigate hooks from React Router. + * It passes the location, params, and navigate objects as props to the wrapped component. + * The component is memoized to prevent unnecessary re-renders. + */ +const withRouter = (Component: ComponentType) => + function WithRouterWrapper(props: Omit) { + const location = useLocation(); + const params = useParams(); + const navigate = useNavigate(); + + return ( + + ); + }; + +export default withRouter; diff --git a/src/@fuse/core/withRouterAndRef/index.ts b/src/@fuse/core/withRouterAndRef/index.ts new file mode 100644 index 0000000..625d6be --- /dev/null +++ b/src/@fuse/core/withRouterAndRef/index.ts @@ -0,0 +1 @@ +export { default } from './withRouterAndRef'; diff --git a/src/@fuse/core/withRouterAndRef/withRouterAndRef.tsx b/src/@fuse/core/withRouterAndRef/withRouterAndRef.tsx new file mode 100644 index 0000000..ff82413 --- /dev/null +++ b/src/@fuse/core/withRouterAndRef/withRouterAndRef.tsx @@ -0,0 +1,44 @@ +import { forwardRef, ComponentType } from 'react'; +import { useLocation, useNavigate, useParams } from 'react-router-dom'; + +export type WithRouterProps = { + location: ReturnType; + params: Record; + navigate: ReturnType; +}; + +/** + * The withRouter function is a higher-order component that wraps a component with the useLocation, useParams, and useNavigate hooks from React Router. + * It passes the location, params, and navigate objects as props to the wrapped component. + * The component is memoized to prevent unnecessary re-renders. + */ +const withRouterAndRef = + /** + * A higher-order function that takes a component and returns a new component with the withRouter props. + */ + + + (Component: ComponentType) => + /** + * A higher-order function that returns the wrapped component with the withRouter props. + */ + () => { + const location = useLocation(); + const params = useParams(); + const navigate = useNavigate(); + const WithRouterAndRef = forwardRef((props, ref) => ( + + )); + + const name = Component.displayName || Component.name; + WithRouterAndRef.displayName = `withRouterAndRef(${name})`; + return WithRouterAndRef; + }; + +export default withRouterAndRef; diff --git a/src/@fuse/default-settings/FuseDefaultSettings.ts b/src/@fuse/default-settings/FuseDefaultSettings.ts new file mode 100644 index 0000000..56396bd --- /dev/null +++ b/src/@fuse/default-settings/FuseDefaultSettings.ts @@ -0,0 +1,350 @@ +import { fuseDark } from '@fuse/colors'; +import { lightBlue, red } from '@mui/material/colors'; +import { createTheme } from '@mui/material/styles'; +import qs from 'qs'; +import { ThemeOptions } from '@mui/material/styles/createTheme'; +import { FuseSettingsConfigType } from '@fuse/core/FuseSettings/FuseSettings'; + +/** + * The defaultTheme object defines the default color palette for the application. + */ +const defaultTheme = { + palette: { + mode: 'light', + text: { + primary: 'rgb(17, 24, 39)', + secondary: 'rgb(107, 114, 128)', + disabled: 'rgb(149, 156, 169)' + }, + common: { + black: 'rgb(17, 24, 39)', + white: 'rgb(255, 255, 255)' + }, + primary: { + light: '#bec1c5', + main: '#252f3e', + dark: '#0d121b', + contrastDefaultColor: 'light' + }, + secondary: { + light: '#bdf2fa', + main: '#22d3ee', + dark: '#0cb7e2' + }, + background: { + paper: '#FFFFFF', + default: '#f6f7f9' + }, + error: { + light: '#ffcdd2', + main: '#f44336', + dark: '#b71c1c' + } + } +}; + +/** + * The defaultSettings object defines the default settings for the Fuse application. + */ +export const defaultSettings = { + customScrollbars: true, + direction: 'ltr', + theme: { + main: defaultTheme, + navbar: defaultTheme, + toolbar: defaultTheme, + footer: defaultTheme + } +}; + +/** + * The getParsedQuerySettings function parses the query string to retrieve the default settings for the Fuse application. + * It returns a FuseSettingsConfigType object that can be used to configure the application. + */ +export function getParsedQuerySettings() { + const parsedQueryString = qs.parse(window.location.search, { ignoreQueryPrefix: true }); + + const { defaultSettings = {} } = parsedQueryString; + + if (typeof defaultSettings === 'string') { + // Handle the case when defaultSettings is a string + return JSON.parse(defaultSettings) as FuseSettingsConfigType; + } + + return {}; + + // Generating route params from settings + /* const settings = qs.stringify({ + defaultSettings: JSON.stringify(defaultSettings, {strictNullHandling: true}) + }); + console.info(settings); */ +} + +/** + * The defaultThemeOptions object defines the default options for the MUI theme. + */ +export const defaultThemeOptions = { + typography: { + fontFamily: ['Inter var', 'Roboto', '"Helvetica"', 'Arial', 'sans-serif'].join(','), + fontWeightLight: 300, + fontWeightRegular: 400, + fontWeightMedium: 500 + }, + components: { + MuiAppBar: { + defaultProps: { + enableColorOnDark: true + }, + styleOverrides: { + root: { + backgroundImage: 'none' + } + } + }, + MuiPickersPopper: { + styleOverrides: { + root: { + zIndex: 99999 + } + } + }, + MuiAutocomplete: { + styleOverrides: { + popper: { + zIndex: 99999 + } + } + }, + MuiButtonBase: { + defaultProps: { + disableRipple: true + } + }, + MuiButton: { + defaultProps: { + variant: 'text', + color: 'inherit' + }, + styleOverrides: { + root: { + textTransform: 'none' + + // lineHeight: 1, + }, + sizeMedium: { + borderRadius: 20, + height: 40, + minHeight: 40, + maxHeight: 40 + }, + sizeSmall: { + borderRadius: '15px' + }, + sizeLarge: { + borderRadius: '28px' + }, + contained: { + boxShadow: 'none', + '&:hover, &:focus': { + boxShadow: 'none' + } + } + } + }, + MuiButtonGroup: { + defaultProps: { + color: 'secondary' + }, + styleOverrides: { + contained: { + borderRadius: 18 + } + } + }, + MuiTab: { + styleOverrides: { + root: { + textTransform: 'none' + } + } + }, + MuiDialog: { + styleOverrides: { + paper: { + borderRadius: 16 + } + } + }, + MuiPaper: { + styleOverrides: { + root: { + backgroundImage: 'none' + }, + rounded: { + borderRadius: 16 + } + } + }, + MuiPopover: { + styleOverrides: { + paper: { + borderRadius: 8 + } + } + }, + MuiTextField: { + defaultProps: { + color: 'secondary' + } + }, + MuiInputLabel: { + defaultProps: { + color: 'secondary' + } + }, + MuiSelect: { + defaultProps: { + color: 'secondary' + } + }, + MuiOutlinedInput: { + defaultProps: { + color: 'secondary' + } + }, + MuiInputBase: { + styleOverrides: { + root: { + minHeight: 40, + lineHeight: 1 + } + } + }, + MuiFilledInput: { + styleOverrides: { + root: { + borderRadius: 4, + '&:before, &:after': { + display: 'none' + } + } + } + }, + MuiSlider: { + defaultProps: { + color: 'secondary' + } + }, + MuiCheckbox: { + defaultProps: { + color: 'secondary' + } + }, + MuiRadio: { + defaultProps: { + color: 'secondary' + } + }, + MuiSwitch: { + defaultProps: { + color: 'secondary' + } + }, + MuiTypography: { + variants: [ + { + props: { color: 'text.secondary' }, + style: { + color: 'text.secondary' + } + } + ] + } + } +}; + +/** + * The mustHaveThemeOptions object defines the options that must be present in the MUI theme. + */ +export const mustHaveThemeOptions = { + typography: { + htmlFontSize: 10, + fontSize: 14, + body1: { + fontSize: '1.4rem' + }, + body2: { + fontSize: '1.4rem' + } + } +}; + +/** + * The defaultThemes object defines the default themes for the application. + */ +export const defaultThemes = { + default: { + palette: { + mode: 'light', + primary: fuseDark, + secondary: { + light: lightBlue[400], + main: lightBlue[600], + dark: lightBlue[700] + }, + error: red + }, + status: { + danger: 'orange' + } + }, + defaultDark: { + palette: { + mode: 'dark', + primary: fuseDark, + secondary: { + light: lightBlue[400], + main: lightBlue[600], + dark: lightBlue[700] + }, + error: red + }, + status: { + danger: 'orange' + } + } +}; + +/** + * The extendThemeWithMixins function extends the theme with mixins. + */ +export function extendThemeWithMixins(obj: ThemeOptions) { + const theme = createTheme(obj); + return { + border: (width = 1) => ({ + borderWidth: width, + borderStyle: 'solid', + borderColor: theme.palette.divider + }), + borderLeft: (width = 1) => ({ + borderLeftWidth: width, + borderStyle: 'solid', + borderColor: theme.palette.divider + }), + borderRight: (width = 1) => ({ + borderRightWidth: width, + borderStyle: 'solid', + borderColor: theme.palette.divider + }), + borderTop: (width = 1) => ({ + borderTopWidth: width, + borderStyle: 'solid', + borderColor: theme.palette.divider + }), + borderBottom: (width = 1) => ({ + borderBottomWidth: width, + borderStyle: 'solid', + borderColor: theme.palette.divider + }) + }; +} diff --git a/src/@fuse/default-settings/index.ts b/src/@fuse/default-settings/index.ts new file mode 100644 index 0000000..45f356e --- /dev/null +++ b/src/@fuse/default-settings/index.ts @@ -0,0 +1 @@ +export * from './FuseDefaultSettings'; diff --git a/src/@fuse/hooks/index.ts b/src/@fuse/hooks/index.ts new file mode 100644 index 0000000..46fe7f3 --- /dev/null +++ b/src/@fuse/hooks/index.ts @@ -0,0 +1,7 @@ +export { default as useDebounce } from './useDebounce'; +export { default as useTimeout } from './useTimeout'; +export { default as usePrevious } from './usePrevious'; +export { default as useUpdateEffect } from './useUpdateEffect'; +export { default as useDeepCompareEffect } from './useDeepCompareEffect'; +export { default as useThemeMediaQuery } from './useThemeMediaQuery'; +export { default as useEventListener } from './useEventListener'; diff --git a/src/@fuse/hooks/useDebounce.ts b/src/@fuse/hooks/useDebounce.ts new file mode 100644 index 0000000..977000f --- /dev/null +++ b/src/@fuse/hooks/useDebounce.ts @@ -0,0 +1,35 @@ +import { useCallback, useEffect, useRef } from 'react'; +import _ from '@lodash'; + +/** + * Debounce hook. + * @param {T} callback + * @param {number} delay + * @returns {T} + */ +function useDebounce void>(callback: T, delay: number): T { + const callbackRef = useRef(callback); + + // Update the current callback each time it changes. + useEffect(() => { + callbackRef.current = callback; + }, [callback]); + + const debouncedFn = useCallback( + _.debounce((...args: never[]) => { + callbackRef.current(...args); + }, delay), + [delay] + ); + + useEffect(() => { + // Cleanup function to cancel any pending debounced calls + return () => { + debouncedFn.cancel(); + }; + }, [debouncedFn]); + + return debouncedFn as unknown as T; +} + +export default useDebounce; diff --git a/src/@fuse/hooks/useDeepCompareEffect.ts b/src/@fuse/hooks/useDeepCompareEffect.ts new file mode 100644 index 0000000..d3a2b12 --- /dev/null +++ b/src/@fuse/hooks/useDeepCompareEffect.ts @@ -0,0 +1,70 @@ +import React from 'react'; +import deepEqual from 'lodash/isEqual'; + +type UseEffectParamsType = Parameters; +type EffectCallbackType = UseEffectParamsType[0]; +type DependencyListType = UseEffectParamsType[1]; + +// yes, I know it's void, but I like what this communicates about +// the intent of these functions: It's just like useEffect +type UseEffectReturn = ReturnType; + +/** + * The checkDeps function checks if the dependency list is valid for use with useDeepCompareEffect. + * It throws an error if the dependency list is empty or contains only primitive values. + */ +function checkDeps(deps: DependencyListType) { + if (!deps || !deps.length) { + throw new Error('useDeepCompareEffect should not be used with no dependencies. Use React.useEffect instead.'); + } + if (deps.every(isPrimitive)) { + throw new Error( + 'useDeepCompareEffect should not be used with dependencies that are all primitive values. Use React.useEffect instead.' + ); + } +} + +/** + * The isPrimitive function checks if a value is a primitive type. + * It returns true if the value is null, undefined, a string, a boolean, or a number. + */ +function isPrimitive(val: unknown) { + return val == null || /^[sbn]/.test(typeof val); +} + +/** + * The isPrimitive function checks if a value is a primitive type. + * It returns true if the value is null, undefined, a string, a boolean, or a number. + */ +export function useDeepCompareMemoize(value: T) { + const ref = React.useRef(value); + const signalRef = React.useRef(0); + + if (!deepEqual(value, ref.current)) { + ref.current = value; + signalRef.current += 1; + } + + return React.useMemo(() => ref.current, [signalRef.current]); +} + +/** + * The isPrimitive function checks if a value is a primitive type. + * It returns true if the value is null, undefined, a string, a boolean, or a number. + */ +function useDeepCompareEffect(callback: EffectCallbackType, dependencies: DependencyListType): UseEffectReturn { + if (process.env.NODE_ENV !== 'production') { + checkDeps(dependencies); + } + + return React.useEffect(callback, useDeepCompareMemoize(dependencies)); +} + +export function useDeepCompareEffectNoCheck( + callback: EffectCallbackType, + dependencies: DependencyListType +): UseEffectReturn { + return React.useEffect(callback, useDeepCompareMemoize(dependencies)); +} + +export default useDeepCompareEffect; diff --git a/src/@fuse/hooks/useEventListener.ts b/src/@fuse/hooks/useEventListener.ts new file mode 100644 index 0000000..98a8848 --- /dev/null +++ b/src/@fuse/hooks/useEventListener.ts @@ -0,0 +1,40 @@ +import { useEffect, useRef } from 'react'; + +function useEventListener( + eventName: string, + handler: (event: T) => void, + element: HTMLElement | Window = window +) { + // Create a mutable ref object to store the handler + const savedHandler = useRef<(event: T) => void>(); + + // Update ref.current value if handler changes + useEffect(() => { + savedHandler.current = handler; + }, [handler]); + + useEffect(() => { + // Check and ensure the element supports addEventListener + const isSupported = Boolean(element && element.addEventListener); + + // Create event listener that calls handler function stored in ref + const eventListener = (event: Event) => { + if (savedHandler.current) { + savedHandler.current(event as T); + } + }; + + if (isSupported) { + // Add event listener + element.addEventListener(eventName, eventListener); + } + // Clean up event listener on component unmount + return () => { + if (isSupported) { + element.removeEventListener(eventName, eventListener); + } + }; + }, [eventName, element]); +} + +export default useEventListener; diff --git a/src/@fuse/hooks/usePrevious.ts b/src/@fuse/hooks/usePrevious.ts new file mode 100644 index 0000000..b8078e2 --- /dev/null +++ b/src/@fuse/hooks/usePrevious.ts @@ -0,0 +1,19 @@ +import { useEffect, useRef } from 'react'; + +/** + * The usePrevious function is a custom hook that returns the previous value of a variable. + * It takes in a value as a parameter and returns the previous value. + */ +function usePrevious(value: T): T | undefined { + const ref = useRef(); + + // Store current value in ref + useEffect(() => { + ref.current = value; + }, [value]); + + // Return previous value (happens before update in useEffect above) + return ref.current; +} + +export default usePrevious; diff --git a/src/@fuse/hooks/useThemeMediaQuery.ts b/src/@fuse/hooks/useThemeMediaQuery.ts new file mode 100644 index 0000000..2ad10ad --- /dev/null +++ b/src/@fuse/hooks/useThemeMediaQuery.ts @@ -0,0 +1,48 @@ +import { useEffect, useState } from 'react'; +import { useTheme } from '@mui/material/styles'; +import { Theme } from '@mui/system/createTheme/createTheme'; + +/** + * The useThemeMediaQuery function is a custom hook that returns a boolean indicating whether the current screen matches the specified media query. + * It takes in a themeCallbackFunc as a parameter, which is a function that returns a string representing the media query to match. + * It returns a boolean indicating whether the current screen matches the specified media query. + */ +function useThemeMediaQuery(themeCallbackFunc: (theme: Theme) => string) { + const theme = useTheme(); + + const query = themeCallbackFunc(theme).replace('@media ', ''); + + /** + * The getMatches function checks if the current screen matches the specified media query. + * It takes in a media query string as a parameter and returns a boolean indicating whether the screen matches the query. + * + */ + function getMatches(q: string) { + return window.matchMedia(q).matches; + } + + const [matches, setMatches] = useState(getMatches(query)); + + useEffect( + () => { + const mediaQuery = window.matchMedia(query); + + // Update the state with the current value + setMatches(getMatches(query)); + + // Create an event listener + const handler = (event: MediaQueryListEvent) => setMatches(event.matches); + + // Attach the event listener to know when the matches value changes + mediaQuery.addEventListener('change', handler); + + // Remove the event listener on cleanup + return () => mediaQuery.removeEventListener('change', handler); + }, + [query] // Empty array ensures effect is only run on mount and unmount + ); + + return matches; +} + +export default useThemeMediaQuery; diff --git a/src/@fuse/hooks/useTimeout.ts b/src/@fuse/hooks/useTimeout.ts new file mode 100644 index 0000000..f6fa204 --- /dev/null +++ b/src/@fuse/hooks/useTimeout.ts @@ -0,0 +1,30 @@ +import { useEffect, useRef } from 'react'; + +/** + * The useTimeout function is a custom hook that sets a timeout for a given callback function. + * It takes in a callback function and a delay time in milliseconds as parameters. + * It returns nothing. + */ +function useTimeout(callback: () => void, delay: number) { + const callbackRef = useRef(callback); + + useEffect(() => { + callbackRef.current = callback; + }, [callback]); + + useEffect(() => { + let timer: NodeJS.Timeout | undefined; + + if (delay !== null && callback && typeof callback === 'function') { + timer = setTimeout(callbackRef.current, delay); + } + + return () => { + if (timer) { + clearTimeout(timer); + } + }; + }, [callback, delay]); +} + +export default useTimeout; diff --git a/src/@fuse/hooks/useUpdateEffect.ts b/src/@fuse/hooks/useUpdateEffect.ts new file mode 100644 index 0000000..24f031b --- /dev/null +++ b/src/@fuse/hooks/useUpdateEffect.ts @@ -0,0 +1,19 @@ +import { DependencyList, EffectCallback, useEffect, useRef } from 'react'; + +/** + * The useUpdateEffect function is a custom hook that behaves like useEffect, but only runs on updates and not on initial mount. + * It takes in an effect function and an optional dependency list as parameters. + * It returns nothing. + */ +const useUpdateEffect = (effect: EffectCallback, deps?: DependencyList) => { + const isInitialMount = useRef(true); + + useEffect(() => { + if (isInitialMount.current) { + isInitialMount.current = false; + } + return effect(); + }, deps); +}; + +export default useUpdateEffect; diff --git a/src/@fuse/tailwind/plugins/icon-size.js b/src/@fuse/tailwind/plugins/icon-size.js new file mode 100644 index 0000000..c422ae9 --- /dev/null +++ b/src/@fuse/tailwind/plugins/icon-size.js @@ -0,0 +1,45 @@ +/* eslint-disable */ + +// eslint-disable-next-line import/no-extraneous-dependencies +const plugin = require('tailwindcss/plugin'); + +/** + * The iconSize function is a Tailwind CSS plugin that generates utility classes for setting the size of icons. + * It takes in an object with addUtilities, theme, e, and variants properties as parameters. + * It returns nothing. + */ +const iconSize = plugin( + ({ addUtilities, theme, e, variants }) => { + const values = theme('iconSize'); + + addUtilities( + Object.entries(values).map(([key, value]) => ({ + [`.${e(`icon-size-${key}`)}`]: { + width: value, + height: value, + minWidth: value, + minHeight: value, + fontSize: value, + lineHeight: value, + [`svg`]: { + width: value, + height: value + } + } + })), + variants('iconSize') + ); + }, + { + theme: { + iconSize: (theme) => ({ + ...theme('spacing') + }) + }, + variants: { + iconSize: ['responsive'] + } + } +); + +module.exports = iconSize; diff --git a/src/@fuse/utils/ErrorBoundary.tsx b/src/@fuse/utils/ErrorBoundary.tsx new file mode 100644 index 0000000..f55e119 --- /dev/null +++ b/src/@fuse/utils/ErrorBoundary.tsx @@ -0,0 +1,50 @@ +import React, { Component, ErrorInfo, ReactNode } from 'react'; + +interface ErrorBoundaryProps { + children: ReactNode; +} + +interface ErrorBoundaryState { + hasError: boolean; + error: Error | null; + errorInfo: ErrorInfo | null; +} + +class ErrorBoundary extends Component { + constructor(props: ErrorBoundaryProps) { + super(props); + this.state = { hasError: false, error: null, errorInfo: null }; + } + + static getDerivedStateFromError(error: Error): ErrorBoundaryState { + // Update state so the next render will show the fallback UI. + return { hasError: true, error, errorInfo: null }; + } + + componentDidCatch(error: Error, errorInfo: ErrorInfo) { + // You can also log the error to an error reporting service + this.setState({ error, errorInfo }); + console.error('Uncaught error:', error, errorInfo); + } + + render() { + const { children } = this.props; + const { error, errorInfo, hasError } = this.state; + if (hasError) { + return ( +
+

Something went wrong.

+

+ {error && error.toString()} +
+ {errorInfo && errorInfo.componentStack} +

+
+ ); + } + + return children; + } +} + +export default ErrorBoundary; diff --git a/src/@fuse/utils/EventEmitter.ts b/src/@fuse/utils/EventEmitter.ts new file mode 100644 index 0000000..10d61d4 --- /dev/null +++ b/src/@fuse/utils/EventEmitter.ts @@ -0,0 +1,63 @@ +/** + * The EventEmitter class is a custom implementation of an event emitter. + * It provides methods for registering and emitting events. + */ +class EventEmitter { + private events: { [eventName: string]: Set<(...args: unknown[]) => void> }; + + constructor() { + this.events = {}; + } + + /** + * The _getEventListByName method returns the event list for a given event name. + * If the event list does not exist, it creates a new one. + * + */ + private _getEventListByName(eventName: string): Set<(...args: T) => void> { + if (typeof this.events[eventName] === 'undefined') { + this.events[eventName] = new Set(); + } + return this.events[eventName]; + } + + /** + * The on method registers a callback function for a given event name. + * + */ + on(eventName: string, fn: (...args: T) => void): void { + this._getEventListByName(eventName).add(fn); + } + + /** + * The once method registers a callback function for a given event name that will only be called once. + * + */ + once(eventName: string, fn: (...args: unknown[]) => void): void { + const onceFn = (...args: unknown[]) => { + this.removeListener(eventName, onceFn); + fn.apply(this, args); + }; + this.on(eventName, onceFn); + } + + /** + * The emit method triggers all registered callback functions for a given event name. + * + */ + emit(eventName: string, ...args: unknown[]): void { + this._getEventListByName(eventName).forEach((fn) => { + fn.apply(this, args); + }); + } + + /** + * The removeListener method removes a registered callback function for a given event name. + * + */ + removeListener(eventName: string, fn: (...args: unknown[]) => void): void { + this._getEventListByName(eventName).delete(fn); + } +} + +export default EventEmitter; diff --git a/src/@fuse/utils/FuseAwaitRender.tsx b/src/@fuse/utils/FuseAwaitRender.tsx new file mode 100644 index 0000000..8dc1e8a --- /dev/null +++ b/src/@fuse/utils/FuseAwaitRender.tsx @@ -0,0 +1,21 @@ +import { useEffect, useState } from 'react'; + +type FuseAwaitRenderProps = { + delay?: number; + children: React.ReactNode; +}; + +function FuseAwaitRender(props: FuseAwaitRenderProps) { + const { delay = 0, children } = props; + const [awaitRender, setAwaitRender] = useState(true); + + useEffect(() => { + setTimeout(() => { + setAwaitRender(false); + }, delay); + }, [delay]); + + return awaitRender ? null : children; +} + +export default FuseAwaitRender; diff --git a/src/@fuse/utils/FuseNavigationHelper.ts b/src/@fuse/utils/FuseNavigationHelper.ts new file mode 100644 index 0000000..a69f638 --- /dev/null +++ b/src/@fuse/utils/FuseNavigationHelper.ts @@ -0,0 +1,213 @@ +import { User } from 'src/app/auth/user'; +import { FuseFlatNavItemType, FuseNavItemType } from '@fuse/core/FuseNavigation/types/FuseNavItemType'; +import FuseNavItemModel from '@fuse/core/FuseNavigation/models/FuseNavItemModel'; +import _ from '@lodash'; +import { PartialDeep } from 'type-fest'; + +class FuseNavigationHelper { + static selectById(nav: FuseNavItemType[], id: string): FuseNavItemType | undefined { + for (let i = 0; i < nav.length; i += 1) { + const item = nav[i]; + if (item.id === id) { + return item; + } + + if (item.children) { + const childItem = this.selectById(item.children, id); + if (childItem) { + return childItem; + } + } + } + + return undefined; + } + + static appendNavItem( + nav: FuseNavItemType[], + item: FuseNavItemType, + parentId: string | null = null + ): FuseNavItemType[] { + if (!parentId) { + return [...nav, item]; + } + return nav.map((node) => { + if (node.id === parentId) { + const newNode = { ...node }; + newNode.children = [...(node.children || []), item]; + return newNode; + } + if (node.children) { + return { ...node, children: this.appendNavItem(node.children, item, parentId) }; + } + return { ...node }; + }); + } + + static prependNavItem( + nav: FuseNavItemType[], + item: FuseNavItemType, + parentId: string | null = null + ): FuseNavItemType[] { + if (!parentId) { + return [item, ...nav]; + } + return nav.map((node) => { + if (node.id === parentId) { + const newNode = { ...node }; + newNode.children = [item, ...(node.children || [])]; + return newNode; + } + if (node.children) { + return { ...node, children: this.prependNavItem(node.children, item, parentId) }; + } + return { ...node }; + }); + } + + static filterNavigationByPermission(nav: FuseNavItemType[], userRole: User['role']): FuseNavItemType[] { + return nav.reduce((acc: FuseNavItemType[], item) => { + // If item has children, recursively filter them + const children = item.children ? this.filterNavigationByPermission(item.children, userRole) : []; + + if (this.hasPermission(item.auth, userRole) || children.length) { + const newItem = { ...item }; + newItem.children = children.length ? children : undefined; + acc.push(newItem); + } + + return acc; + }, []); + } + + /** + * The removeNavItem function removes a navigation item by its ID. + */ + static removeNavItem(nav: FuseNavItemType[], id: string): FuseNavItemType[] { + return nav.reduce((acc, node) => { + if (node.id !== id) { + if (node.children) { + acc.push({ + ...node, + children: this.removeNavItem(node.children, id) + }); + } else { + acc.push(node); + } + } + return acc; + }, [] as FuseNavItemType[]); + } + + /** + * The updateNavItem function updates a navigation item by its ID with new data. + */ + static updateNavItem(nav: FuseNavItemType[], id: string, item: PartialDeep): FuseNavItemType[] { + return nav.map((node) => { + if (node.id === id) { + return _.merge({}, node, item); // merge original node data with updated item data + } + if (node.children) { + return { + ...node, + children: this.updateNavItem(node.children, id, item) + }; + } + return node; + }); + } + + /** + * Convert to flat navigation + */ + static getFlatNavigation(navigationItems: FuseNavItemType[] = [], flatNavigation = []) { + for (let i = 0; i < navigationItems.length; i += 1) { + const navItem = navigationItems[i]; + + if (navItem.type === 'item') { + const _navtItem = FuseNavItemModel(navItem); + flatNavigation.push(_navtItem); + } + + if (navItem.type === 'collapse' || navItem.type === 'group') { + if (navItem.children) { + this.getFlatNavigation(navItem.children, flatNavigation); + } + } + } + return flatNavigation as FuseNavItemType[] | []; + } + + static hasPermission(authArr: string[] | string | undefined, userRole: User['role']): boolean { + /** + * If auth array is not defined + * Pass and allow + */ + if (authArr === null || authArr === undefined) { + return true; + } + + if (authArr.length === 0) { + /** + * if auth array is empty means, + * allow only user role is guest (null or empty[]) + */ + return !userRole || userRole.length === 0; + } + + /** + * Check if user has grants + */ + if (userRole && Array.isArray(authArr) && Array.isArray(userRole)) { + return authArr.some((r: string) => userRole.indexOf(r) >= 0); + } + + /* + Check if user role is string, + */ + return authArr.includes(userRole as string); + } + + static flattenNavigation(navigation: FuseNavItemType[], parentOrder: string = ''): FuseFlatNavItemType[] { + return navigation.flatMap((item, index) => { + const order = parentOrder ? `${parentOrder}.${index + 1}` : `${index + 1}`; + let flattened: FuseFlatNavItemType[] = [ + { ...item, order, children: item.children?.map((child) => child.id) } + ]; + + if (item.children) { + flattened = flattened.concat(this.flattenNavigation(item.children, order)); + } + + return flattened; + }); + } + + static unflattenNavigation(navigation: FuseFlatNavItemType[]): FuseNavItemType[] { + const itemMap: { [id: string]: FuseNavItemType } = {}; + navigation.forEach((item) => { + itemMap[item.id] = { ...item, children: [] }; + }); + + const rootItems: FuseNavItemType[] = []; + + navigation.forEach((item) => { + if (item.order.includes('.')) { + const parentOrder = item.order.substring(0, item.order.lastIndexOf('.')); + const parent = navigation.find((navItem) => navItem.order === parentOrder); + if (parent) { + itemMap[parent.id].children.push(itemMap[item.id]); + } + } else { + rootItems.push(itemMap[item.id]); + } + }); + + return rootItems.map((item) => { + const { ...rest } = item; + return rest; + }); + } +} + +export default FuseNavigationHelper; diff --git a/src/@fuse/utils/FuseUtils.ts b/src/@fuse/utils/FuseUtils.ts new file mode 100644 index 0000000..3f11df9 --- /dev/null +++ b/src/@fuse/utils/FuseUtils.ts @@ -0,0 +1,414 @@ +import _ from '@lodash'; +import * as colors from '@mui/material/colors'; +import { FuseSettingsConfigType } from '@fuse/core/FuseSettings/FuseSettings'; +import { RouteObject } from 'react-router-dom'; +import { User } from 'src/app/auth/user'; +import EventEmitter from './EventEmitter'; + +type TreeNode = { + id: string; + children?: TreeNode[]; +}; +/** + * The FuseRouteItemType type is a custom type that extends the RouteObject type from react-router-dom. + * It adds an optional auth property and an optional settings property. + */ +export type FuseRouteItemType = RouteObject & { + auth?: string[] | []; + settings?: unknown; +}; + +/** + * The FuseRoutesType type is a custom type that is an array of FuseRouteItemType objects. + */ +export type FuseRoutesType = FuseRouteItemType[]; + +/** + * The FuseRouteConfigType type is a custom type that defines the configuration for a set of routes. + * It includes an optional routes property, an optional settings property, and an optional auth property. + */ +export type FuseRouteConfigType = { + routes: FuseRoutesType; + settings?: unknown; + auth?: string[] | []; +}; + +/** + * The FuseRouteConfigsType type is a custom type that is an array of FuseRouteConfigType objects. + */ +export type FuseRouteConfigsType = FuseRouteConfigType[] | []; + +/** + * The hueTypes type is a custom type that defines the possible values for a hue. + */ +type hueTypes = + | '50' + | '100' + | '200' + | '300' + | '400' + | '500' + | '600' + | '700' + | '800' + | '900' + | 'A100' + | 'A200' + | 'A400' + | 'A700'; + +type Color = { + 50?: string; + 100?: string; + 200?: string; + 300?: string; + 400?: string; + 500?: string; + 600?: string; + 700?: string; + 800?: string; + 900?: string; + A100?: string; + A200?: string; + A400?: string; + A700?: string; + [key: string]: string | undefined; +}; + +/** + * The FuseUtils class provides utility functions for the Fuse project. + */ +class FuseUtils { + /** + * The filterArrayByString function filters an array of objects by a search string. + * It takes in an array of objects and a search string as parameters and returns a filtered array of objects. + * + */ + + static filterArrayByString(mainArr: T[], searchText: string): T[] { + if (searchText?.length === 0 || !searchText) { + return mainArr; // Return the original array + } + + searchText = searchText.toLowerCase(); + const filtered = mainArr.filter((itemObj) => this.searchInObj(itemObj, searchText)); + if (filtered.length === mainArr.length) { + return mainArr; // If the filtered array is identical, return the original + } + return filtered; + } + + static filterArrayByString2(mainArr: T[], searchText: string): T[] { + if (typeof searchText !== 'string' || searchText === '') { + return mainArr; + } + + searchText = searchText?.toLowerCase(); + + return mainArr.filter((itemObj: unknown) => this.searchInObj(itemObj, searchText)); + } + + /** + * The searchInObj function searches an object for a given search string. + * It takes in an object and a search string as parameters and returns a boolean indicating whether the search string was found in the object. + * + */ + static searchInObj(itemObj: unknown, searchText: string) { + if (!isRecord(itemObj)) { + return false; + } + + const propArray = Object.keys(itemObj); + + function isRecord(value: unknown): value is Record { + return Boolean(value && typeof value === 'object' && !Array.isArray(value) && typeof value !== 'function'); + } + + for (let i = 0; i < propArray.length; i += 1) { + const prop = propArray[i]; + + const value = itemObj[prop]; + + if (typeof value === 'string') { + if (this.searchInString(value, searchText)) { + return true; + } + } else if (Array.isArray(value)) { + if (this.searchInArray(value, searchText)) { + return true; + } + } + + if (typeof value === 'object') { + if (this.searchInObj(value, searchText)) { + return true; + } + } + } + return false; + } + + /** + * The searchInArray function searches an array for a given search string. + * It takes in an array and a search string as parameters and returns a boolean indicating whether the search string was found in the array. + * + */ + static searchInArray(arr: unknown[], searchText: string) { + arr.forEach((value) => { + if (typeof value === 'string') { + if (this.searchInString(value, searchText)) { + return true; + } + } + + if (value && typeof value === 'object') { + if (this.searchInObj(value, searchText)) { + return true; + } + } + return false; + }); + return false; + } + + /** + * The searchInString function searches a string for a given search string. + * It takes in a string and a search string as parameters and returns a boolean indicating whether the search string was found in the string. + * + */ + static searchInString(value: string, searchText: string) { + return value.toLowerCase().includes(searchText); + } + + /** + * The generateGUID function generates a globally unique identifier. + * It returns a string representing the GUID. + * + */ + static generateGUID(): string { + function S4() { + return Math.floor((1 + Math.random()) * 0x10000) + .toString(16) + .substring(1); + } + + return S4() + S4(); + } + + /** + * The toggleInArray function toggles an item in an array. + */ + static toggleInArray(item: unknown, array: unknown[]) { + if (array.indexOf(item) === -1) { + array.push(item); + } else { + array.splice(array.indexOf(item), 1); + } + } + + /** + * The handleize function converts a string to a handle. + */ + static handleize(text: string) { + return text + .toString() + .toLowerCase() + .replace(/\s+/g, '-') // Replace spaces with - + .replace(/\W+/g, '') // Remove all non-word chars + .replace(/--+/g, '-') // Replace multiple - with single - + .replace(/^-+/, '') // Trim - from start of text + .replace(/-+$/, ''); // Trim - from end of text + } + + /** + * The setRoutes function sets the routes for the Fuse project. + */ + static setRoutes( + config: FuseRouteConfigType, + defaultAuth: FuseSettingsConfigType['defaultAuth'] = undefined + ): FuseRouteItemType[] { + let routes = [...config.routes]; + + routes = routes.map((route) => { + let auth = config.auth || config.auth === null ? config.auth : defaultAuth || null; + + auth = route.auth || route.auth === null ? route.auth : auth; + + const settings = _.merge({}, config.settings, route.settings); + + return { + ...route, + settings, + auth + }; + }) as FuseRouteItemType[]; + + return [...routes]; + } + + /** + * The generateRoutesFromConfigs function generates routes from a set of route configurations. + * It takes in an array of route configurations as a parameter and returns an array of routes. + * + */ + static generateRoutesFromConfigs( + configs: FuseRouteConfigsType, + defaultAuth: FuseSettingsConfigType['defaultAuth'] + ) { + let allRoutes: FuseRouteItemType[] = []; + configs.forEach((config: FuseRouteConfigType) => { + allRoutes = [...allRoutes, ...this.setRoutes(config, defaultAuth)]; + }); + return allRoutes; + } + + /** + * The findById function finds an object by its id. + */ + static findById(tree: TreeNode[], idToFind: string): TreeNode | undefined { + // Try to find the node at the current level + const node = _.find(tree, { id: idToFind }); + + if (node) { + return node; + } + + let foundNode: TreeNode | undefined; + + // If not found, search in the children using lodash's some for iteration + _.some(tree, (item) => { + if (item.children) { + foundNode = this.findById(item.children, idToFind); + return foundNode; // If foundNode is truthy, _.some will stop iterating + } + return false; // Continue iterating + }); + + return foundNode; + } + + /** + * The randomMatColor function generates a random material color. + */ + static randomMatColor(hue: hueTypes = '400') { + const mainColors = [ + 'red', + 'pink', + 'purple', + 'deepPurple', + 'indigo', + 'blue', + 'lightBlue', + 'cyan', + 'teal', + 'green', + 'lightGreen', + 'lime', + 'yellow', + 'amber', + 'orange', + 'deepOrange' + ]; + + const randomColor = mainColors[Math.floor(Math.random() * mainColors.length)]; + + return (colors as { [key: string]: Color })[randomColor][hue]; + } + + /** + * The findNavItemById function finds a navigation item by its id. + */ + static difference(object: Record, base: Record): Record { + function changes(_object: Record, _base: Record): Record { + return _.transform( + _object, + (result: Record, value: unknown, key: string) => { + if (!_.isEqual(value, _base[key])) { + result[key] = + _.isObject(value) && _.isObject(_base[key]) + ? changes(value as Record, _base[key] as Record) + : value; + } + }, + {} + ); + } + + return changes(object, base); + } + + /** + * The EventEmitter class is a custom implementation of an event emitter. + * It provides methods for registering and emitting events. + */ + static EventEmitter = EventEmitter; + + /** + * The hasPermission function checks if a user has permission to access a resource. + */ + static hasPermission(authArr: string[] | string | undefined, userRole: User['role']): boolean { + /** + * If auth array is not defined + * Pass and allow + */ + if (authArr === null || authArr === undefined) { + return true; + } + + if (authArr.length === 0) { + /** + * if auth array is empty means, + * allow only user role is guest (null or empty[]) + */ + return !userRole || userRole.length === 0; + } + + /** + * Check if user has grants + */ + /* + Check if user role is array, + */ + if (userRole && Array.isArray(authArr) && Array.isArray(userRole)) { + return authArr.some((r: string) => userRole.indexOf(r) >= 0); + } + + /* + Check if user role is string, + */ + return authArr.includes(userRole as string); + } + + /** + * The filterArrayByString function filters an array of objects by a search string. + */ + static filterRecursive(data: [] | null, predicate: (arg0: unknown) => boolean) { + // if no data is sent in, return null, otherwise transform the data + return !data + ? null + : data.reduce((list: unknown[], entry: { children?: [] }) => { + let clone: unknown = null; + if (predicate(entry)) { + // if the object matches the filter, clone it as it is + clone = { ...entry }; + } + if (entry.children != null) { + // if the object has childrens, filter the list of children + const children = this.filterRecursive(entry.children, predicate); + if (children && children?.length > 0) { + // if any of the children matches, clone the parent object, overwrite + // the children list with the filtered list + clone = { ...entry, children }; + } + } + + // if there's a cloned object, push it to the output list + if (clone) { + list.push(clone); + } + return list; + }, []); + } +} + +export default FuseUtils; diff --git a/src/@fuse/utils/index.ts b/src/@fuse/utils/index.ts new file mode 100644 index 0000000..fb22ff1 --- /dev/null +++ b/src/@fuse/utils/index.ts @@ -0,0 +1 @@ +export { default } from './FuseUtils'; diff --git a/src/@history/@history.ts b/src/@history/@history.ts new file mode 100644 index 0000000..f77d053 --- /dev/null +++ b/src/@history/@history.ts @@ -0,0 +1,6 @@ +import * as history from 'history'; + +/** + * The default history object for the Fuse project. + */ +export default history.createBrowserHistory(); diff --git a/src/@history/index.ts b/src/@history/index.ts new file mode 100644 index 0000000..49de519 --- /dev/null +++ b/src/@history/index.ts @@ -0,0 +1 @@ +export { default } from './@history'; diff --git a/src/@lodash/@lodash.ts b/src/@lodash/@lodash.ts new file mode 100644 index 0000000..d28f454 --- /dev/null +++ b/src/@lodash/@lodash.ts @@ -0,0 +1,26 @@ +/* eslint-disable */ +import _ from 'lodash'; + +declare module 'lodash' { + interface LoDashStatic { + /** + * A function that sets a value at a given path in an object. + */ + setIn: (state: any, name: string, value: any) => any; + } + interface LoDashExplicitWrapper { + /** + * A function that sets a value at a given path in an object. + */ + setIn: (name: string, value: any) => LoDashExplicitWrapper; + } +} + +_.mixin({ + /** + * A function that sets a value at a given path in an object. + */ + setIn: (state, name, value) => _.setWith(_.clone(state), name, value, _.clone) +}); + +export default _; diff --git a/src/@lodash/index.ts b/src/@lodash/index.ts new file mode 100644 index 0000000..bca5a03 --- /dev/null +++ b/src/@lodash/index.ts @@ -0,0 +1 @@ +export { default } from './@lodash'; diff --git a/src/@mock-api/ExtendedMockAdapter.ts b/src/@mock-api/ExtendedMockAdapter.ts new file mode 100644 index 0000000..5739764 --- /dev/null +++ b/src/@mock-api/ExtendedMockAdapter.ts @@ -0,0 +1,112 @@ +import MockAdapter, { RequestHandler } from 'axios-mock-adapter'; +import { AxiosRequestConfig } from 'axios'; +/* eslint-disable */ + +export type ExtConfig = AxiosRequestConfig & { + params: Record; +} + +type CustomReplyFunc = ( + config: ExtConfig +) => [number, any] | Promise<[number, any]>; + +export type Params = Record; + +type matcherType = string | RegExp | undefined; + +type RequestMatcherFunc = (matcher?: matcherType) => MockAdapter.RequestHandler; + +class ExtendedMockAdapter extends MockAdapter { + + private baseUrl: string; + + constructor(axiosInstance: any, mockAdapterOptions, baseUrl: string = '') { + super(axiosInstance); + this.baseUrl = baseUrl; + } + + private RequestMatcherFunc(url: string | RegExp | undefined, requestType: string): RequestHandler { + const transformedUrl = transformUrlIfNeeded(this.baseUrl + (url || '')); + // @ts-ignore + return createExtendedHandler(super[requestType](transformedUrl), transformedUrl, url); + } + + onGet: RequestMatcherFunc = (url) => this.RequestMatcherFunc(url, 'onGet'); + + onPost: RequestMatcherFunc = (url) => this.RequestMatcherFunc(url, 'onPost'); + + onPut: RequestMatcherFunc = (url) => this.RequestMatcherFunc(url, 'onPut'); + + onDelete: RequestMatcherFunc = (url) => this.RequestMatcherFunc(url, 'onDelete'); + + onPatch: RequestMatcherFunc = (url) => this.RequestMatcherFunc(url, 'onPatch'); +} + +function transformUrlIfNeeded(url: matcherType): string | RegExp { + if (typeof url === 'string' && url.includes(':')) { + return convertUrlToRegex(url); + } + return url as string; +} + +function convertUrlToRegex(url: string): RegExp { + return new RegExp( + `^${url + .split('/') + .map((segment) => { + if (segment.startsWith(':')) { + const paramName = segment.slice(1); + return `(?<${paramName}>[^/]+)`; + } + return segment; + }) + .join('/')}$` + ); +} + +function createExtendedHandler(handler: RequestHandler, matcherUrl: string | RegExp, url: string): RequestHandler { + const originalReply = handler.reply.bind(handler); + + // @ts-ignore + handler.reply = (func: CustomReplyFunc) => { + return originalReply((config) => { + const params = extractParamsFromUrl(config.url, matcherUrl); + + // Assigning the extracted parameters to config.params + config.params = {...config.params, ...params}; + + return func(config as ExtConfig); + }); + }; + return handler; +} + +function extractParamsFromUrl(configUrl: string | undefined, matcherUrl: string | RegExp): Record { + if (typeof configUrl !== 'string' || !(matcherUrl instanceof RegExp || typeof matcherUrl === 'string')) { + return {}; + } + + const params: Record = {}; + + if (matcherUrl instanceof RegExp) { + const regexResult = matcherUrl.exec(configUrl); + if (regexResult && regexResult.groups) { + for (const key in regexResult.groups) { + params[key] = regexResult.groups[key]; + } + } + } else { + const matcherParts = matcherUrl.split('/'); + const urlParts = configUrl.split('/'); + for (let i = 0; i < matcherParts.length; i += 1) { + if (matcherParts[i].startsWith(':')) { + const key = matcherParts[i].slice(1); + params[key] = urlParts[i] || ''; + } + } + } + + return params; +} + +export default ExtendedMockAdapter; diff --git a/src/@mock-api/MockAdapterProvider.tsx b/src/@mock-api/MockAdapterProvider.tsx new file mode 100644 index 0000000..7a1fd22 --- /dev/null +++ b/src/@mock-api/MockAdapterProvider.tsx @@ -0,0 +1,63 @@ +import { useEffect, useRef, useState } from 'react'; +import axios from 'axios'; +import FuseSplashScreen from '@fuse/core/FuseSplashScreen'; +import { useAppDispatch } from 'app/store/store'; +import apiService from 'app/store/apiService'; +import ExtendedMockAdapter from './ExtendedMockAdapter'; +import { authApiMocks } from './api/auth-api'; + +const mockAdapterOptions = { + delayResponse: 0 +}; + +const baseURL = '/mock-api'; + +type MockAdapterProviderProps = { + enabled?: boolean; + children: React.ReactNode; +}; + +const mock = new ExtendedMockAdapter(axios, mockAdapterOptions, baseURL); + +function MockAdapterProvider(props: MockAdapterProviderProps) { + const { enabled = true, children } = props; + const [loading, setLoading] = useState(true); + const dispatch = useAppDispatch(); + const isInitialMount = useRef(true); + useEffect(() => { + const setupAllMocks = () => { + [authApiMocks].forEach((mockSetup) => { + mockSetup(mock); + }); + }; + + if (enabled) { + setupAllMocks(); + mock.onAny().passThrough(); + } else { + mock.restore(); + } + + setLoading(false); + + return () => { + if (!enabled && mock) { + mock.restore(); + } + setLoading(false); + }; + }, [enabled]); + + useEffect(() => { + if (import.meta.hot) { + if (!isInitialMount.current) { + dispatch(apiService.util.resetApiState()); + } + isInitialMount.current = false; + } + }, [dispatch]); + + return loading ? : children; +} + +export default MockAdapterProvider; diff --git a/src/@mock-api/api/auth-api.ts b/src/@mock-api/api/auth-api.ts new file mode 100644 index 0000000..8c53cee --- /dev/null +++ b/src/@mock-api/api/auth-api.ts @@ -0,0 +1,289 @@ +/* +eslint-disable camelcase + */ +import FuseUtils from '@fuse/utils'; +import _ from '@lodash'; +import Base64 from 'crypto-js/enc-base64'; +import HmacSHA256 from 'crypto-js/hmac-sha256'; +import Utf8 from 'crypto-js/enc-utf8'; +import jwtDecode from 'jwt-decode'; +import { PartialDeep } from 'type-fest'; +import UserModel from 'src/app/auth/user/models/UserModel'; +import { User } from 'src/app/auth/user'; +import axios, { AxiosRequestConfig } from 'axios'; +import mockApi from '../mock-api.json'; +import ExtendedMockAdapter from '../ExtendedMockAdapter'; + +type UserAuthType = User & { uid: string; password: string }; + +let usersApi = mockApi.components.examples.auth_users.value as unknown as UserAuthType[]; + +export const authApiMocks = (mock: ExtendedMockAdapter) => { + mock.onPost('/auth/sign-in').reply((config) => { + const data = JSON.parse(config.data as string) as { email: string; password: string }; + + const { email, password } = data; + + const user = _.cloneDeep(usersApi.find((_user) => _user.data.email === email)); + + const error = []; + + if (!user) { + error.push({ + type: 'email', + message: 'Check your email address' + }); + } + + if (user && user.password !== password) { + error.push({ + type: 'password', + message: 'Check your password' + }); + } + + if (error.length === 0) { + delete (user as Partial).password; + + const access_token = generateJWTToken({ id: user.uid }); + + const response = { + user, + access_token + }; + + return [200, response]; + } + + return [400, error]; + }); + + mock.onPost('/auth/refresh').reply((config) => { + const newTokenResponse = generateAccessToken(config); + + if (newTokenResponse) { + const { access_token } = newTokenResponse; + + return [200, null, { 'New-Access-Token': access_token }]; + } + + const error = 'Invalid access token detected or user not found'; + + return [401, { data: error }]; + }); + + mock.onGet('/auth/user').reply((config) => { + const newTokenResponse = generateAccessToken(config); + + if (newTokenResponse) { + const { access_token, user } = newTokenResponse; + + return [200, user, { 'New-Access-Token': access_token }]; + } + + const error = 'Invalid access token detected or user not found'; + + return [401, { error }]; + }); + + function generateAccessToken(config: AxiosRequestConfig): { access_token: string; user: User } | null { + const authHeader = config.headers.Authorization as string; + + if (!authHeader) { + return null; + } + + const [scheme, access_token] = authHeader.split(' '); + + if (scheme !== 'Bearer' || !access_token) { + return null; + } + + if (verifyJWTToken(access_token)) { + const { id }: { id: string } = jwtDecode(access_token); + + const user = _.cloneDeep(usersApi.find((_user) => _user.uid === id)); + + if (user) { + delete (user as Partial).password; + const access_token = generateJWTToken({ id: user.uid }); + return { access_token, user }; + } + } + + return null; + } + + mock.onPost('/auth/sign-up').reply((request) => { + const data = JSON.parse(request.data as string) as { displayName: string; password: string; email: string }; + const { displayName, password, email } = data; + const isEmailExists = usersApi.find((_user) => _user.data.email === email); + const error = []; + + if (isEmailExists) { + error.push({ + type: 'email', + message: 'The email address is already in use' + }); + } + + if (error.length === 0) { + const newUser = UserModel({ + role: ['admin'], + data: { + displayName, + photoURL: 'assets/images/avatars/Abbott.jpg', + email, + shortcuts: [], + settings: {} + } + }) as UserAuthType; + + newUser.uid = FuseUtils.generateGUID(); + newUser.password = password; + + usersApi = [...usersApi, newUser]; + + const user = _.cloneDeep(newUser); + + delete (user as Partial).password; + + const access_token = generateJWTToken({ id: user.uid }); + + const response = { + user, + access_token + }; + + return [200, response]; + } + return [200, { error }]; + }); + + mock.onPut('/auth/user').reply((config) => { + const access_token = config?.headers?.Authorization as string; + + const userData = jwtDecode(access_token); + const uid = (userData as { [key: string]: string }).id; + + const user = JSON.parse(config.data as string) as { user: PartialDeep }; + + let updatedUser: User; + + usersApi = usersApi.map((_user) => { + if (uid === _user.uid) { + updatedUser = _.assign({}, _user, user); + } + return _user; + }); + + delete (updatedUser as Partial).password; + + return [200, updatedUser]; + }); + + /** + * JWT Token Generator/Verifier Helpers + * !! Created for Demonstration Purposes, cannot be used for PRODUCTION + */ + + const jwtSecret = 'some-secret-code-goes-here'; + +/* eslint-disable */ + +function base64url(source: CryptoJS.lib.WordArray) { + // Encode in classical base64 + let encodedSource = Base64.stringify(source); + + // Remove padding equal characters + encodedSource = encodedSource.replace(/=+$/, ''); + + // Replace characters according to base64url specifications + encodedSource = encodedSource.replace(/\+/g, '-'); + encodedSource = encodedSource.replace(/\//g, '_'); + + // Return the base64 encoded string + return encodedSource; +} + +function generateJWTToken(tokenPayload: { [key:string]: unknown } ) { + // Define token header + const header = { + alg: 'HS256', + typ: 'JWT' + }; + + // Calculate the issued at and expiration dates + const date = new Date(); + const iat = Math.floor(date.getTime() / 1000); + const exp = Math.floor(date.setDate(date.getDate() + 7) / 1000); + + // Define token payload + const payload: unknown = { + iat, + iss: 'Fuse', + exp, + ...tokenPayload + }; + + // Stringify and encode the header + const stringifiedHeader = Utf8.parse(JSON.stringify(header)); + const encodedHeader = base64url(stringifiedHeader); + + // Stringify and encode the payload + const stringifiedPayload = Utf8.parse(JSON.stringify(payload)); + const encodedPayload = base64url(stringifiedPayload); + + // Sign the encoded header and mock-api + let signature = `${encodedHeader}.${encodedPayload}`; + // @ts-ignore + signature = HmacSHA256(signature, jwtSecret); + // @ts-ignore + signature = base64url(signature); + + // Build and return the token + return `${encodedHeader}.${encodedPayload}.${signature}`; +} + +function verifyJWTToken(token: string) { + // Split the token into parts + const parts = token.split('.'); + const header = parts[0]; + const payload = parts[1]; + const signature = parts[2]; + + // Re-sign and encode the header and payload using the secret + const signatureCheck = base64url(HmacSHA256(`${header}.${payload}`, jwtSecret)); + + // Verify that the resulting signature is valid + return signature === signatureCheck; +} + +// Generate Authorization header on each successfull response +axios.interceptors.response.use( + (response) =>{ + // get access token from response headers + const requestHeaders = response.config.headers; + const authorization = requestHeaders.Authorization as string; + const accessToken = authorization?.split(' ')[1]; + const responseUrl = response.config.url; + + if(responseUrl.startsWith('/mock-api') && authorization){ + + if(!accessToken || !verifyJWTToken(accessToken)){ + const error = new Error("Invalid access token detected."); + // @ts-ignore + error.status = 401; + return Promise.reject(error); + } + + const newAccessToken = generateAccessToken(response.config); + + if(newAccessToken){ + response.headers['New-Access-Token'] = newAccessToken.access_token as string; + } + return response; + } + return response; + }); +}; diff --git a/src/@mock-api/declarations.d.ts b/src/@mock-api/declarations.d.ts new file mode 100644 index 0000000..8cb2932 --- /dev/null +++ b/src/@mock-api/declarations.d.ts @@ -0,0 +1 @@ +declare module '*.json'; diff --git a/src/@mock-api/index.ts b/src/@mock-api/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/@mock-api/mock-api.json b/src/@mock-api/mock-api.json new file mode 100644 index 0000000..c537593 --- /dev/null +++ b/src/@mock-api/mock-api.json @@ -0,0 +1,32900 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Fuse Mock API", + "version": "1.0.0", + "contact": { + "url": "http://fusetheme.com/", + "email": "themes@withinpixels.com", + "name": "Fuse Theme" + }, + "description": "Fuse Theme Family Mock API Open API Definitions", + "license": { + "name": "private", + "url": "https://themeforest.net/licenses/terms/regular" + } + }, + "servers": [ + { + "url": "http://localhost:3000/api" + } + ], + "paths": { + "/auth/user": { + "parameters": [], + "put": { + "summary": "Update user", + "x-stoplight": { + "id": "73d7f4c16f9e1" + }, + "operationId": "updateAuthUser", + "responses": { + "200": { + "description": "OK" + } + }, + "description": "Update user data.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/auth_user" + }, + "examples": { + "example-1": { + "value": { + "uid": "string", + "password": "string", + "role": "string", + "data": { + "displayName": "string", + "photoURL": "string", + "email": "string", + "settings": { + "layout": {}, + "theme": {} + }, + "shortcuts": [ + "string" + ] + } + } + } + } + } + } + }, + "tags": [ + "auth_user" + ] + } + }, + "/auth/sign-in": { + "post": { + "summary": "Sign in", + "x-stoplight": { + "id": "2364e0950cfbd" + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/auth_user" + }, + "examples": { + "example-1": { + "value": { + "uid": "string", + "password": "string", + "role": "string", + "data": { + "displayName": "string", + "photoURL": "string", + "email": "string", + "settings": { + "layout": {}, + "theme": {} + }, + "shortcuts": [ + "string" + ] + } + } + } + } + } + } + } + }, + "operationId": "signInAuthUser", + "description": "User sign in.", + "tags": [ + "auth_user" + ] + }, + "parameters": [] + }, + "/auth/sign-up": { + "post": { + "summary": "Sign up", + "x-stoplight": { + "id": "1304e09a14509" + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/auth_user" + }, + "examples": { + "example-1": { + "value": { + "uid": "string", + "password": "string", + "role": "string", + "data": { + "displayName": "string", + "photoURL": "string", + "email": "string", + "settings": { + "layout": {}, + "theme": {} + }, + "shortcuts": [ + "string" + ] + } + } + } + } + } + } + } + }, + "operationId": "signUpAuthUser", + "description": "User sign up.", + "tags": [ + "auth_user" + ] + }, + "parameters": [] + }, + "/auth/sign-in/token": { + "post": { + "summary": "Sign in with access token", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/auth_user" + }, + "examples": { + "example-1": { + "value": { + "uid": "string", + "password": "string", + "role": "string", + "data": { + "displayName": "string", + "photoURL": "string", + "email": "string", + "settings": { + "layout": {}, + "theme": {} + }, + "shortcuts": [ + "string" + ] + } + } + } + } + } + } + } + }, + "operationId": "signInAuthWithToken", + "description": "User sign in with access token.", + "tags": [ + "auth_user" + ], + "x-stoplight": { + "id": "l0c1z42buxfgf" + } + }, + "parameters": [] + }, + "/profile/photos-videos": { + "get": { + "summary": "Get photos & videos", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/profile_photos_videos" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/profile_photos_videos" + } + } + } + } + } + }, + "operationId": "getProfilePhotosVideos", + "description": "Retrieve photos and videos.", + "tags": [ + "profile_photos_videos" + ] + }, + "parameters": [] + }, + "/profile/timeline": { + "get": { + "summary": "Get timeline", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/profile_timeline" + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/profile_timeline" + } + } + } + } + } + }, + "operationId": "getProfileTimeline", + "description": "Retrieve timeline.", + "tags": [ + "profile_timeline" + ] + }, + "parameters": [] + }, + "/profile/about": { + "get": { + "summary": "Get about", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/profile_about" + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/profile_about" + } + } + } + } + } + }, + "operationId": "getProfileAbout", + "description": "Retrieve about.", + "tags": [ + "profile_about" + ] + }, + "parameters": [] + }, + "/ui/icons/feather": { + "get": { + "summary": "Get Feather Icons", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/icons_feather" + } + } + } + } + } + }, + "operationId": "getIconsFeatherIcons", + "description": "Retrieve feather icons data.", + "tags": [ + "icons_feather_icons_list" + ] + }, + "parameters": [] + }, + "/ui/icons/heroicons": { + "get": { + "summary": "Get Heroicons", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/icons_heroicons" + } + } + } + } + } + }, + "operationId": "getIconsHeroicons", + "description": "Retrieve heroicons data.", + "tags": [ + "icons_heroicons_list" + ] + }, + "parameters": [] + }, + "/ui/icons/material": { + "get": { + "summary": "Get Material Icons", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/icons_material" + } + } + } + } + } + }, + "operationId": "getIconsMaterialIcons", + "description": "Retrieve material icons data.", + "tags": [ + "icons_material_icons_list" + ] + }, + "parameters": [] + }, + "/dashboards/project/widgets": { + "get": { + "summary": "Get widgets", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/project_dashboard_widgets" + } + } + } + } + } + }, + "operationId": "getProjectDashboardWidgets", + "description": "Retrieve Project dashboard widgets.", + "tags": [ + "project_dashboard_widgets" + ] + }, + "parameters": [] + }, + "/dashboards/project/projects": { + "get": { + "summary": "Get projects", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/project_dashboard_projects" + } + } + } + } + } + }, + "operationId": "getProjectDashboardProjects", + "description": "Retrieve Project dashboard projects.", + "tags": [ + "project_dashboard_projects" + ] + }, + "parameters": [] + }, + "/dashboards/crypto/widgets": { + "get": { + "summary": "Get widgets", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/crypto_dashboard_widgets" + } + } + } + } + } + }, + "operationId": "getCryptoDashboardWidgets", + "description": "Retrieve Crypto dashboard widgets.", + "tags": [ + "crypto_dashboard_widgets" + ] + }, + "parameters": [] + }, + "/dashboards/finance/widgets": { + "get": { + "summary": "Get widgets", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/finance_dashboard_widgets" + } + } + } + } + } + }, + "operationId": "getFinanceDashboardWidgets", + "description": "Retrieve Finance dashboard widgets.", + "tags": [ + "finance_dashboard_widgets" + ] + }, + "parameters": [] + }, + "/dashboards/analytics/widgets": { + "get": { + "summary": "Get widgets", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/analytics_dashboard_widgets" + } + } + } + } + } + }, + "operationId": "getAnalyticsDashboardWidgets", + "description": "Retrieve Analytics dashboard widgets.", + "tags": [ + "analytics_dashboard_widgets" + ] + }, + "parameters": [] + }, + "/calendar/events": { + "get": { + "summary": "Get events", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/calendar_event" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/calendar_events" + } + } + } + } + } + }, + "operationId": "getCalendarEvents", + "description": "Retrieve Calendar events.", + "tags": [ + "calendar_events" + ] + }, + "parameters": [], + "post": { + "summary": "Create event", + "operationId": "createCalendarEvent", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/calendar_event" + } + } + } + } + }, + "description": "Create event.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/calendar_event" + } + } + } + }, + "tags": [ + "calendar_events" + ] + } + }, + "/calendar/events/{eventSlug}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "eventSlug", + "in": "path", + "required": true, + "description": "Event slug" + } + ], + "put": { + "summary": "Update event", + "operationId": "updateCalendarEvent", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/calendar_event" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "title": "string", + "allDay": true, + "start": "string", + "end": "string", + "extendedProps": { + "desc": "string", + "label": "string" + } + } + } + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/calendar_event" + } + } + }, + "description": "" + }, + "description": "Update Calendar event.", + "tags": [ + "calendar_event", + "calendar_events" + ] + }, + "delete": { + "summary": "Delete event", + "operationId": "deleteCalendarEvent", + "responses": { + "200": { + "description": "OK" + } + }, + "description": "Delete event.", + "tags": [ + "calendar_events" + ] + } + }, + "/calendar/labels": { + "get": { + "summary": "Get labels", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/calendar_label" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/calendar_labels" + } + } + } + } + } + }, + "operationId": "getCalendarLabels", + "description": "Retrieve Calendar labels.", + "tags": [ + "calendar_labels" + ] + }, + "parameters": [], + "post": { + "summary": "Create label", + "operationId": "createCalendarLabel", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/calendar_label" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "title": "string", + "color": "string" + } + } + } + } + } + } + }, + "description": "Create Calendar label.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/calendar_label" + } + } + } + }, + "tags": [ + "calendar_label", + "calendar_labels" + ] + } + }, + "/calendar/labels/{labelSlug}": { + "put": { + "summary": "Update label", + "operationId": "updateCalendarLabel", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/calendar_label" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "title": "string", + "color": "string" + } + } + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/calendar_label" + } + } + } + }, + "description": "Update Calendar label.", + "tags": [ + "calendar_label" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "labelSlug", + "in": "path", + "required": true, + "description": "Label slug" + } + ], + "delete": { + "summary": "Delete label", + "operationId": "deleteCalendarLabel", + "responses": { + "200": { + "description": "OK" + } + }, + "description": "Delete Calendar label.", + "tags": [ + "calendar_labels", + "calendar_events" + ] + } + }, + "/mailbox/mails/actions": { + "parameters": [], + "post": { + "summary": "Apply mail action", + "operationId": "applyMailboxMailAction", + "responses": { + "200": { + "description": "OK" + } + }, + "description": "Apply action to given mails.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object" + } + }, + "application/xml": { + "schema": { + "$ref": "#/components/schemas/mailbox_action" + } + } + }, + "description": "" + }, + "tags": [ + "mailbox_mails" + ] + } + }, + "/mailbox/mails/{folderSlug}": { + "get": { + "summary": "Get mails", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/mailbox_mail" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/mailbox_mails" + } + } + } + } + } + }, + "operationId": "getMailboxMails", + "description": "Retrieve mails by folder.", + "tags": [ + "mailbox_mails" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "folderSlug", + "in": "path", + "required": true, + "description": "folder slug" + } + ], + "post": { + "summary": "Create mail", + "operationId": "createMailboxMail", + "responses": { + "200": { + "description": "OK" + } + }, + "description": "Create Mail in a folder.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/mailbox_mail" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "type": "string", + "from": { + "avatar": "string", + "contact": "string" + }, + "to": "string", + "cc": [ + null + ], + "bcc": [ + null + ], + "date": "string", + "subject": "string", + "content": "string", + "attachments": [ + { + "type": "string", + "name": "string", + "size": 0, + "preview": "string", + "downloadUrl": "string" + } + ], + "starred": true, + "important": true, + "unread": true, + "folder": "string", + "labels": [ + null + ] + } + } + } + } + } + }, + "tags": [ + "mailbox_mails" + ] + } + }, + "/mailbox/mail/{mailId}": { + "get": { + "summary": "Get mail", + "responses": { + "200": { + "description": "OK", + "content": {} + } + }, + "operationId": "getMailboxMail", + "description": "Retrieve mail.", + "x-stoplight": { + "id": "uh9lhs0ze7ow8" + }, + "tags": [ + "mailbox_mail" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "mailId", + "in": "path", + "required": true + } + ] + }, + "/mailbox/mails/labels/{labelSlug}": { + "get": { + "summary": "Get mails by label", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/mailbox_mail" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/mailbox_mails" + } + } + } + } + } + }, + "operationId": "getMailboxMailsByLabel", + "description": "Retrieve mails by label.", + "tags": [ + "mailbox_mails" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "labelSlug", + "in": "path", + "required": true, + "description": "label slug" + } + ] + }, + "/mailbox/mails/filters/{filterSlug}": { + "get": { + "summary": "Get mails by filter", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/mailbox_mail" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/mailbox_mails" + } + } + } + } + } + }, + "operationId": "getMailboxMailsByFilter", + "description": "Retrieve mails by filter.", + "tags": [ + "mailbox_mails" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "filterSlug", + "in": "path", + "required": true, + "description": "filter slug" + } + ] + }, + "/mailbox/filters": { + "get": { + "summary": "Get filters", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/mailbox_filter" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/mailbox_filters" + } + } + } + } + } + }, + "operationId": "getMailboxFilters", + "description": "Retrieve mail filters.", + "tags": [ + "mailbox_filters" + ] + }, + "parameters": [] + }, + "/mailbox/labels": { + "get": { + "summary": "Get labels", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/mailbox_label" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/mailbox_labels" + } + } + } + } + } + }, + "operationId": "getMailboxLabels", + "description": "Retrieve mail labels.", + "tags": [ + "mailbox_labels" + ] + }, + "parameters": [], + "post": { + "summary": "Create label", + "operationId": "createMailboxLabel", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/mailbox_label" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "title": "string", + "slug": "string", + "icon": "string" + } + } + } + } + } + } + }, + "description": "Create mail label.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/mailbox_label" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "title": "string", + "slug": "string", + "icon": "string" + } + } + } + } + } + }, + "tags": [ + "mailbox_labels" + ] + } + }, + "/mailbox/labels/{labelSlug}": { + "put": { + "summary": "Update label", + "operationId": "updateMailboxLabel", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/mailbox_label" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "title": "string", + "slug": "string", + "icon": "string" + } + } + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/mailbox_label" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "title": "string", + "slug": "string", + "icon": "string" + } + } + } + } + } + }, + "description": "Update mail label.", + "tags": [ + "mailbox_label", + "mailbox_labels" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "labelSlug", + "in": "path", + "required": true, + "description": "label slug" + } + ], + "delete": { + "summary": "Delete label", + "operationId": "deleteMailboxLabel", + "responses": { + "200": { + "description": "OK" + } + }, + "description": "Delete mail label.", + "tags": [ + "mailbox_labels" + ] + } + }, + "/mailbox/folders": { + "get": { + "summary": "Get folders", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/mailbox_folder" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/mailbox_folders" + } + } + } + } + } + }, + "operationId": "getMailboxFolders", + "description": "Retrieve mail folders.", + "tags": [ + "mailbox_folders" + ] + }, + "parameters": [] + }, + "/notification": { + "get": { + "summary": "Get notifications", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/notification" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/notifications" + } + } + } + } + } + }, + "operationId": "getAllNotifications", + "description": "Retrieve all notifications.", + "x-stoplight": { + "id": "xcxy2obssii7n" + }, + "tags": [ + "notifications" + ] + }, + "parameters": [], + "post": { + "summary": "Create notification", + "operationId": "createNotification", + "responses": { + "200": { + "description": "OK" + } + }, + "description": "Create a notification item.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/notification" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "icon": "string", + "title": "string", + "description": "string", + "time": "string", + "read": true, + "link": "string", + "useRouter": true + } + } + } + } + } + }, + "x-stoplight": { + "id": "bkfugw68skahc" + }, + "tags": [ + "notifications" + ] + }, + "delete": { + "summary": "Delete all notifications", + "operationId": "deleteAllNotifications", + "responses": { + "200": { + "description": "OK" + } + }, + "description": "Delete all notifications.", + "x-stoplight": { + "id": "gn76hrsnko738" + }, + "tags": [ + "notifications" + ] + } + }, + "/notifications/{notificationId}": { + "get": { + "summary": "Get notification", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/notification" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "icon": "string", + "title": "string", + "description": "string", + "time": "string", + "read": true, + "link": "string", + "useRouter": true + } + } + } + } + } + } + }, + "operationId": "getNotification", + "description": "Retrieve notification by id.", + "tags": [ + "notification" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "notificationId", + "in": "path", + "required": true, + "description": "notification id" + } + ], + "delete": { + "summary": "Delete notification", + "operationId": "deleteNotification", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Delete notification.", + "tags": [ + "notifications" + ] + } + }, + "/scrumboard/members": { + "get": { + "summary": "Get members", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/scrumboard_member" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/scrumboard_members" + } + } + } + } + } + }, + "operationId": "getScrumboardMembers", + "description": "Retrieve scrumboard members.", + "tags": [ + "scrumboard_members" + ] + }, + "parameters": [], + "post": { + "summary": "Create member", + "operationId": "createScrumboardMember", + "responses": { + "200": { + "description": "OK" + } + }, + "description": "Create Scrumboard member.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/scrumboard_member" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "name": "string", + "avatar": "string" + } + } + } + } + } + }, + "tags": [ + "scrumboard_members" + ] + } + }, + "/scrumboard/boards/{boardId}/lists": { + "get": { + "summary": "Get lists", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/scrumboard_list" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/scrumboard_lists" + } + } + } + } + } + }, + "operationId": "getScrumboardBoardLists", + "description": "Retrieve Scrumboard board lists.", + "tags": [ + "scrumboard_board_lists" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "boardId", + "in": "path", + "required": true, + "description": "boar id" + } + ], + "post": { + "summary": "Create list", + "operationId": "createScrumboardBoardList", + "responses": { + "200": { + "description": "OK" + } + }, + "description": "Create Scrumboard board list.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/scrumboard_list" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "boardId": "string", + "title": "string" + } + } + } + } + } + }, + "tags": [ + "scrumboard_board_lists" + ] + } + }, + "/scrumboard/members/{memberId}": { + "get": { + "summary": "Get member", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/scrumboard_member" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "name": "string", + "avatar": "string" + } + } + } + } + } + } + }, + "operationId": "getScrumboardMember", + "description": "Retrieve Scrumboard member by id.", + "tags": [ + "scrumboard_member" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "memberId", + "in": "path", + "required": true, + "description": "member id" + } + ], + "put": { + "summary": "Update member", + "operationId": "updateScrumboardMember", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Update Scrumboard member information.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/scrumboard_member" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "name": "string", + "avatar": "string" + } + } + } + } + }, + "description": "" + }, + "tags": [ + "scrumboard_member" + ] + }, + "delete": { + "summary": "Delete Member", + "operationId": "deleteScrumboardMember", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Delete Scrumboard member.", + "tags": [ + "scrumboard_members" + ] + } + }, + "/scrumboard/boards/{boardId}/lists/{listId}": { + "get": { + "summary": "Get List", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/scrumboard_list" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "boardId": "string", + "title": "string" + } + } + } + } + } + } + }, + "operationId": "getScrumboardBoardList", + "description": "Retrieve Scrumboard board list by id.", + "tags": [ + "scrumboard_board_list" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "listId", + "in": "path", + "required": true, + "description": "list id" + }, + { + "schema": { + "type": "string" + }, + "name": "boardId", + "in": "path", + "required": true, + "description": "board id" + } + ], + "put": { + "summary": "Update list", + "operationId": "updateScrumboardBoardList", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Update Scrumboard board list information.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/scrumboard_list" + } + } + }, + "description": "" + }, + "tags": [ + "scrumboard_board_list" + ] + }, + "delete": { + "summary": "Delete list", + "operationId": "deleteScrumboardBoardList", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Delete Scrumboard board list.", + "tags": [ + "scrumboard_board_lists" + ] + } + }, + "/scrumboard/boards/{boardId}/labels": { + "get": { + "summary": "Get labels", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/scrumboard_label" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/scrumboard_labels" + } + } + } + } + } + }, + "operationId": "getScrumboardBoardLabels", + "description": "Retrieve Scrumboard board label list.", + "tags": [ + "scrumboard_board_labels" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "boardId", + "in": "path", + "required": true, + "description": "board id" + } + ], + "post": { + "summary": "Create label", + "operationId": "createScrumboardBoardLabel", + "responses": { + "200": { + "description": "OK" + } + }, + "description": "Create Scrumboard board label.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/scrumboard_label" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "boardId": "string", + "title": "string" + } + } + } + } + } + }, + "tags": [ + "scrumboard_board_labels" + ] + } + }, + "/scrumboard/boards/{boardId}/labels/{labelId}": { + "get": { + "summary": "Get label", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/scrumboard_label" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "boardId": "string", + "title": "string" + } + } + } + } + } + } + }, + "operationId": "getScrumboardBoardLabel", + "description": "Retrieve Scrumboard board label by id.", + "tags": [ + "scrumboard_board_label" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "labelId", + "in": "path", + "required": true, + "description": "label id" + }, + { + "schema": { + "type": "string" + }, + "name": "boardId", + "in": "path", + "required": true, + "description": "board id" + } + ], + "put": { + "summary": "Update label", + "operationId": "updateScrumboardBoardLabel", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Update Scrumboard board label information.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/scrumboard_label" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "boardId": "string", + "title": "string" + } + } + } + } + }, + "description": "" + }, + "tags": [ + "scrumboard_board_label" + ] + }, + "delete": { + "summary": "Delete label", + "operationId": "deleteScrumboardBoardLabel", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Delete Scrumboard board label.", + "tags": [ + "scrumboard_board_labels" + ] + } + }, + "/scrumboard/boards/{boardId}/cards": { + "get": { + "summary": "Get cards", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/scrumboard_card" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/scrumboard_cards" + } + } + } + } + } + }, + "operationId": "getScrumboardBoardCards", + "description": "Retrieve Scrumboard board cards.", + "tags": [ + "scrumboard_board_cards" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "boardId", + "in": "path", + "required": true, + "description": "board id" + } + ], + "post": { + "summary": "Create card", + "operationId": "createScrumboardBoardCard", + "responses": { + "200": { + "description": "OK" + } + }, + "description": "Create Scrumboard board card.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/scrumboard_card" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "boardId": "string", + "listId": "string", + "title": "string", + "description": "string", + "labels": [ + {} + ], + "dueDate": 0, + "attachmentCoverId": "string", + "memberIds": [ + null + ], + "attachments": [ + { + "id": "string", + "name": "string", + "src": "string", + "time": 0, + "type": "string" + } + ], + "subscribed": true, + "checklists": [ + { + "id": "string", + "name": "string", + "checkItems": [ + { + "id": 0, + "name": "string", + "checked": true + } + ] + } + ], + "activities": [ + { + "id": "0", + "type": "string", + "idMember": "string", + "message": "string", + "time": 0 + } + ] + } + } + } + } + } + }, + "tags": [ + "scrumboard_board_cards" + ] + } + }, + "/scrumboard/boards/{boardId}/cards/{cardId}": { + "get": { + "summary": "Get card", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/scrumboard_card" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "boardId": "string", + "listId": "string", + "title": "string", + "description": "string", + "labels": [ + null + ], + "dueDate": 0, + "attachmentCoverId": "string", + "memberIds": [ + null + ], + "attachments": [ + { + "id": "string", + "name": "string", + "src": "string", + "time": 0, + "type": "string" + } + ], + "subscribed": true, + "checklists": [ + { + "id": "string", + "name": "string", + "checkItems": [ + { + "id": 0, + "name": "string", + "checked": true + } + ] + } + ], + "activities": [ + { + "id": "0", + "type": "string", + "idMember": "string", + "message": "string", + "time": 0 + } + ] + } + } + } + } + } + } + }, + "operationId": "getScrumboardBoardCard", + "description": "Retrieve Scrumboard board card by id.", + "tags": [ + "scrumboard_board_card" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "cardId", + "in": "path", + "required": true, + "description": "car id" + }, + { + "schema": { + "type": "string" + }, + "name": "boardId", + "in": "path", + "required": true, + "description": "board id" + } + ], + "put": { + "summary": "Update card", + "operationId": "updateScrumboardBoardCard", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Update Scrumboard board card information.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/scrumboard_card" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "boardId": "string", + "listId": "string", + "title": "string", + "description": "string", + "labels": [ + null + ], + "dueDate": 0, + "attachmentCoverId": "string", + "memberIds": [ + null + ], + "attachments": [ + { + "id": "string", + "name": "string", + "src": "string", + "time": 0, + "type": "string" + } + ], + "subscribed": true, + "checklists": [ + { + "id": "string", + "name": "string", + "checkItems": [ + { + "id": 0, + "name": "string", + "checked": true + } + ] + } + ], + "activities": [ + { + "id": "0", + "type": "string", + "idMember": "string", + "message": "string", + "time": 0 + } + ] + } + } + } + } + }, + "description": "" + }, + "tags": [ + "scrumboard_board_card" + ] + }, + "delete": { + "summary": "Delete card", + "operationId": "deleteScrumboardBoardCard", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Delete Scrumboard board card.", + "tags": [ + "scrumboard_board_cards" + ] + } + }, + "/scrumboard/boards": { + "get": { + "summary": "Get boards", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/scrumboard_board" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/scrumboard_boards" + } + } + } + } + } + }, + "operationId": "getScrumboardBoards", + "description": "Retrieve Scrumboard boards.", + "tags": [ + "scrumboard_boards" + ] + }, + "parameters": [], + "post": { + "summary": "Create board", + "operationId": "createScrumboardBoard", + "responses": { + "200": { + "description": "OK" + } + }, + "description": "Create Scrumboard board.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/scrumboard_board" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "title": "string", + "description": "string", + "icon": "string", + "lastActivity": "string", + "members": [ + null + ], + "settings": { + "subscribed": true, + "cardCoverImages": true + }, + "lists": [ + { + "id": "string", + "cards": [] + } + ] + } + } + } + } + } + }, + "tags": [ + "scrumboard_boards" + ] + } + }, + "/scrumboard/boards/{boardId}": { + "get": { + "summary": "Get board", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/scrumboard_board" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "title": "string", + "description": "string", + "icon": "string", + "lastActivity": "string", + "members": [ + null + ], + "settings": { + "subscribed": true, + "cardCoverImages": true + }, + "lists": [ + { + "id": "string", + "cards": [ + "string" + ] + } + ] + } + } + } + } + } + } + }, + "operationId": "getScrumboardBoard", + "description": "Retrieve Scrumboard board by id.", + "tags": [ + "scrumboard_board" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "boardId", + "in": "path", + "required": true, + "description": "board id" + } + ], + "put": { + "summary": "Update board", + "operationId": "updateScrumboardBoard", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Update Scrumboard board information.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/scrumboard_board" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "title": "string", + "description": "string", + "icon": "string", + "lastActivity": "string", + "members": [ + null + ], + "settings": { + "subscribed": true, + "cardCoverImages": true + }, + "lists": [ + { + "id": "string", + "cards": [ + "string" + ] + } + ] + } + } + } + } + }, + "description": "" + }, + "tags": [ + "scrumboard_board" + ] + }, + "delete": { + "summary": "Delete board", + "operationId": "deleteScrumboardBoard", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Delete Scrumboard board.", + "tags": [ + "scrumboard_boards" + ] + } + }, + "/notes": { + "get": { + "summary": "Get notes", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/notes_note" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/notes_notes" + } + } + } + } + } + }, + "operationId": "getNotesList", + "description": "Retrieve all notes except archived ones.", + "tags": [ + "notes_list" + ] + }, + "parameters": [], + "post": { + "summary": "Create note", + "operationId": "createNotesItem", + "responses": { + "200": { + "description": "OK" + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/notes_note" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "title": "string", + "content": "string", + "tasks": null, + "image": null, + "reminder": null, + "labels": [ + null + ], + "archived": true, + "createdAt": "string", + "updatedAt": null + } + } + } + } + }, + "description": "" + }, + "description": "Create new note.", + "tags": [ + "notes_list", + "notes_item" + ] + } + }, + "/notes/{noteId}": { + "get": { + "summary": "Get note", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/notes_note" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "title": "string", + "content": "string", + "tasks": null, + "image": null, + "reminder": null, + "labels": [ + null + ], + "archived": true, + "createdAt": "string", + "updatedAt": null + } + } + } + } + } + } + }, + "operationId": "getNotesItem", + "description": "Retrieve note by id.", + "tags": [ + "notes_item" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "noteId", + "in": "path", + "required": true, + "description": "note id" + } + ], + "put": { + "summary": "Update note", + "operationId": "updateNotesItem", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Update note information.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/notes_note" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "title": "string", + "content": "string", + "tasks": null, + "image": null, + "reminder": null, + "labels": [ + null + ], + "archived": true, + "createdAt": "string", + "updatedAt": null + } + } + } + } + }, + "description": "" + }, + "tags": [ + "notes_item", + "notes_list" + ] + }, + "delete": { + "summary": "Delete Note", + "operationId": "deleteNotesItem", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Delete note.", + "tags": [ + "notes_list" + ] + } + }, + "/notes/labels": { + "get": { + "summary": "Get labels", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/notes_label" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/notes_labels" + } + } + } + } + } + }, + "operationId": "getNotesLabels", + "description": "Retrieve note labels.", + "tags": [ + "notes_labels" + ] + }, + "parameters": [], + "post": { + "summary": "Create label", + "operationId": "createNotesLabel", + "responses": { + "200": { + "description": "OK" + } + }, + "description": "Create a note Label.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/notes_label" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "title": "string" + } + } + } + } + }, + "description": "" + }, + "tags": [ + "notes_labels", + "notes_label" + ] + } + }, + "/notes/labels/{labelId}": { + "get": { + "summary": "Get label", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/notes_label" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "title": "string" + } + } + } + } + } + } + }, + "operationId": "getNotesLabel", + "description": "Retrieve note label by id.", + "tags": [ + "note_labels" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "labelId", + "in": "path", + "required": true, + "description": "label id" + } + ], + "put": { + "summary": "Update label", + "operationId": "updateNotesLabel", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Update label information.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/notes_label" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "title": "string" + } + } + } + } + }, + "description": "" + }, + "tags": [ + "notes_labels" + ] + }, + "delete": { + "summary": "Delete label", + "operationId": "deleteNotesLabel", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Delete note label.", + "tags": [ + "notes_labels" + ] + } + }, + "/notes/archive": { + "get": { + "summary": "Get archived notes", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/notes_note" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/notes_notes" + } + } + } + } + } + }, + "operationId": "getNotesArchivedItems", + "description": "Retrieve all archived notes.", + "tags": [ + "notes_archived_items" + ] + }, + "parameters": [] + }, + "/notes/reminder": { + "get": { + "summary": "Get reminder notes", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/notes_note" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/notes_notes" + } + } + } + } + } + }, + "operationId": "getNotesReminderItems", + "description": "Retrieve all notes with reminder.", + "tags": [ + "notes_reminder_items" + ] + }, + "parameters": [] + }, + "/help-center/guides": { + "get": { + "summary": "Get guides", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/help_center_guide" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/help_center_guides" + } + } + } + } + } + }, + "operationId": "getHelpCenterGuides", + "description": "Retrieve Help Center guides.", + "tags": [ + "help_center_guides" + ] + }, + "parameters": [] + }, + "/help-center/guides/{categorySlug}": { + "get": { + "summary": "Get guides by category", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/help_center_guide" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/help_center_guides" + } + } + } + } + } + }, + "operationId": "getHelpCenterGuidesByCategory", + "description": "Retrieve Help Center guide list by category slug.", + "tags": [ + "help_center_guides_by_category" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "categorySlug", + "in": "path", + "required": true, + "description": "category slug" + } + ] + }, + "/help-center/guides/{categorySlug}/{guideSlug}": { + "get": { + "summary": "Get guide by category", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/help_center_guide" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "categoryId": "string", + "slug": "string", + "title": "string", + "subtitle": "string" + } + } + } + } + } + } + }, + "operationId": "getHelpCenterGuideByCategory", + "description": "Retrieve Help Center guide by category and guide slug.", + "tags": [ + "help_center_guide" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "categorySlug", + "in": "path", + "required": true, + "description": "category slug" + }, + { + "schema": { + "type": "string" + }, + "name": "guideSlug", + "in": "path", + "required": true, + "description": "guide slug" + } + ] + }, + "/help-center/guides/categories": { + "get": { + "summary": "Get guide categories", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/help_center_guide_category" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/help_center_guide_categories" + } + } + } + } + } + }, + "operationId": "getHelpCenterGuideCategories", + "description": "Retrieve Help Center guide categories.", + "tags": [ + "help_center_guide_categories" + ] + }, + "parameters": [] + }, + "/help-center/faqs": { + "get": { + "summary": "Get faqs", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/help_center_faq" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/help_center_faqs" + } + } + } + } + } + }, + "operationId": "getHelpCenterFaqs", + "description": "Retrieve Help Center faqs.", + "tags": [ + "help_center_faqs" + ] + }, + "parameters": [] + }, + "/help-center/faqs/{categorySlug}": { + "get": { + "summary": "Get faqs by category", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/help_center_faq" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/help_center_faqs" + } + } + } + } + } + }, + "operationId": "getHelpCenterFaqsByCategory", + "description": "Retrieve Help Center faqs by category slug.", + "tags": [ + "help_center_faqs_by_category" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "categorySlug", + "in": "path", + "required": true, + "description": "category slug" + } + ] + }, + "/help-center/faqs/most": { + "get": { + "summary": "Get most asked faqs", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/help_center_faq" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/help_center_faqs" + } + } + } + } + } + }, + "operationId": "getHelpCenterMostlyFaqs", + "description": "Retrieve Help Center mostly asked faqs.", + "tags": [ + "help_center_most_asked_faqs" + ] + }, + "parameters": [] + }, + "/help-center/faqs/categories": { + "get": { + "summary": "Get faq categories", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/help_center_faq_category" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/help_center_faq_categories" + } + } + } + } + } + }, + "operationId": "getHelpCenterFaqCategories", + "description": "Retrieve Help Center faq categories.", + "tags": [ + "help_center_faq_categories" + ] + }, + "parameters": [] + }, + "/file-manager/{folderId}": { + "get": { + "summary": "Get folder", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/file_manager_item" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "folderId": null, + "name": "string", + "createdBy": "string", + "createdAt": "string", + "modifiedAt": "string", + "size": "string", + "type": "string", + "contents": "string", + "description": "string" + } + } + } + } + } + } + }, + "operationId": "getFileManagerFolder", + "description": "Retrieve File Manager folder by id.", + "tags": [ + "file_manager_folder" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "folderId", + "in": "path", + "required": true, + "description": "folder id" + } + ], + "put": { + "summary": "Update folder", + "operationId": "updateFileManagerFolder", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Update folder information.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/file_manager_item" + } + } + }, + "description": "" + }, + "tags": [ + "file_manager_folder" + ] + }, + "delete": { + "summary": "Delete folder", + "operationId": "deleteFileManagerFolder", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Delete folder.", + "tags": [ + "file_manager_folder" + ] + } + }, + "/ecommerce/products": { + "get": { + "summary": "Get products", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ecommerce_product" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/ecommerce_products" + } + } + } + } + } + }, + "operationId": "getECommerceProducts", + "description": "Retrieve E-commerce products.", + "tags": [ + "eCommerce_products" + ] + }, + "parameters": [], + "delete": { + "summary": "Delete products", + "operationId": "deleteECommerceProducts", + "responses": { + "200": { + "description": "OK" + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "description": "Product ids" + }, + "description": "Remove E-commerce products by ids", + "tags": [ + "eCommerce_products" + ] + } + }, + "/ecommerce/products/{productId}": { + "get": { + "summary": "Get product", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ecommerce_product" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "name": "string", + "handle": "string", + "description": "string", + "categories": [ + null + ], + "tags": [ + null + ], + "featuredImageId": "string", + "images": [ + null + ], + "priceTaxExcl": 0, + "priceTaxIncl": 0, + "taxRate": 0, + "comparedPrice": 0, + "quantity": 0, + "sku": "string", + "width": "string", + "height": "string", + "depth": "string", + "weight": "string", + "extraShippingFee": 0, + "active": true + } + } + } + } + } + } + }, + "operationId": "getECommerceProduct", + "description": "Retrieve E-commerce product by id.", + "tags": [ + "eCommerce_product", + "eCommerce_products" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "productId", + "in": "path", + "required": true, + "description": "product id" + } + ], + "put": { + "summary": "Update product", + "operationId": "updateECommerceProduct", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Update E-commerce product information.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ecommerce_product" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "name": "string", + "handle": "string", + "description": "string", + "categories": [ + null + ], + "tags": [ + null + ], + "featuredImageId": "string", + "images": [ + null + ], + "priceTaxExcl": 0, + "priceTaxIncl": 0, + "taxRate": 0, + "comparedPrice": 0, + "quantity": 0, + "sku": "string", + "width": "string", + "height": "string", + "depth": "string", + "weight": "string", + "extraShippingFee": 0, + "active": true + } + } + } + } + } + }, + "tags": [ + "eCommerce_product", + "eCommerce_products" + ] + }, + "delete": { + "summary": "Delete product", + "operationId": "deleteECommerceProduct", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Delete E-commerce product.", + "tags": [ + "eCommerce_products", + "eCommerce_product" + ] + } + }, + "/ecommerce/orders": { + "get": { + "summary": "Get orders", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ecommerce_order" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/ecommerce_orders" + } + } + } + } + } + }, + "operationId": "getECommerceOrders", + "description": "Retrieve E-commerce orders.", + "tags": [ + "eCommerce_orders" + ], + "x-stoplight": { + "id": "x71nx4hzq184b" + } + }, + "parameters": [], + "delete": { + "summary": "Delete Orders", + "operationId": "deleteEcommerceOrders", + "responses": { + "200": { + "description": "OK" + } + }, + "x-stoplight": { + "id": "92bu4y5riik1p" + }, + "requestBody": { + "description": "Order ids", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "x-stoplight": { + "id": "xs3u6yv88qfix" + }, + "type": "string" + } + } + } + } + }, + "tags": [ + "eCommerce_order", + "eCommerce_orders" + ], + "description": "Delete E-commerce orders." + } + }, + "/ecommerce/orders/{orderId}": { + "get": { + "summary": "Get order", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ecommerce_order" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "reference": "string", + "subtotal": "string", + "tax": "string", + "discount": "string", + "total": "string", + "date": "string", + "customer": { + "id": "0", + "firstName": "string", + "lastName": "string", + "avatar": "string", + "company": "string", + "jobTitle": "string", + "email": "string", + "phone": "string", + "invoiceAddress": { + "address": "string", + "lat": 0, + "lng": 0 + }, + "shippingAddress": { + "address": "string", + "lat": 0, + "lng": 0 + } + }, + "products": [ + null + ], + "status": [ + { + "id": "0", + "name": "string", + "color": "string", + "date": "string" + } + ], + "payment": { + "transactionId": "string", + "amount": "string", + "method": "string", + "date": "string" + }, + "shippingDetails": [ + { + "tracking": "string", + "carrier": "string", + "weight": "string", + "fee": "string", + "date": "string" + } + ] + } + } + } + } + } + } + }, + "operationId": "getECommerceOrder", + "description": "Retrieve E-commerce order by id.", + "tags": [ + "eCommerce_order" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "orderId", + "in": "path", + "required": true, + "description": "order id" + } + ], + "put": { + "summary": "Update order", + "operationId": "updateECommerceOrder", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Update E-commerce order information.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ecommerce_order" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "reference": "string", + "subtotal": "string", + "tax": "string", + "discount": "string", + "total": "string", + "date": "string", + "customer": { + "id": "0", + "firstName": "string", + "lastName": "string", + "avatar": "string", + "company": "string", + "jobTitle": "string", + "email": "string", + "phone": "string", + "invoiceAddress": { + "address": "string", + "lat": 0, + "lng": 0 + }, + "shippingAddress": { + "address": "string", + "lat": 0, + "lng": 0 + } + }, + "products": [ + null + ], + "status": [ + { + "id": "0", + "name": "string", + "color": "string", + "date": "string" + } + ], + "payment": { + "transactionId": "string", + "amount": "string", + "method": "string", + "date": "string" + }, + "shippingDetails": [ + { + "tracking": "string", + "carrier": "string", + "weight": "string", + "fee": "string", + "date": "string" + } + ] + } + } + } + } + } + }, + "tags": [ + "eCommerce_order", + "eCommerce_orders" + ] + }, + "delete": { + "summary": "Delete order", + "operationId": "deleteECommerceOrder", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Delete E-commerce order.", + "tags": [ + "eCommerce_orders", + "eCommerce_order" + ] + } + }, + "/academy/courses": { + "get": { + "summary": "Get courses", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/academy_course" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/academy_courses" + } + } + } + } + } + }, + "operationId": "getAcademyCourses", + "description": "Retrieve Academy courses.", + "tags": [ + "academy_courses" + ] + }, + "parameters": [] + }, + "/academy/courses/{courseId}": { + "get": { + "summary": "Get course", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/academy_course" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "title": "string", + "slug": "string", + "description": "string", + "category": "string", + "duration": 0, + "totalSteps": 0, + "updatedAt": "string", + "featured": true, + "progress": { + "currentStep": 0, + "completed": 0 + } + } + } + } + } + } + } + }, + "operationId": "getAcademyCourse", + "description": "Retrieve Academy course by id.", + "tags": [ + "academy_course" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "courseId", + "in": "path", + "required": true, + "description": "course id" + } + ], + "put": { + "summary": "Update course", + "operationId": "updateAcademyCourse", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Update Academy course information.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/academy_course" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "title": "string", + "slug": "string", + "description": "string", + "category": "string", + "duration": 0, + "totalSteps": 0, + "updatedAt": "string", + "featured": true, + "progress": { + "currentStep": 0, + "completed": 0 + } + } + } + } + } + } + }, + "tags": [ + "academy_course", + "academy_courses" + ] + }, + "delete": { + "summary": "Delete course", + "operationId": "deleteAcademyCourse", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Delete Academy course.", + "tags": [ + "academy_courses" + ] + } + }, + "/academy/categories": { + "get": { + "summary": "Get categories", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/academy_category" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/academy_categories" + } + } + } + } + } + }, + "operationId": "getAcademyCategories", + "description": "Retrieve Academy category list.", + "tags": [ + "academy_categories" + ] + }, + "parameters": [] + }, + "/messenger/contacts": { + "get": { + "summary": "Get contacts", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/chat_contact" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/chat_contacts" + } + } + } + } + } + }, + "operationId": "getMessengerContacts", + "description": "Retrieve Messenger contacts.", + "x-stoplight": { + "id": "8wjzq1q8ngoef" + }, + "tags": [ + "messenger_contacts" + ] + }, + "parameters": [] + }, + "/messenger/contacts/{contactId}": { + "get": { + "summary": "Get contact", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/chat_contact" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "avatar": "string", + "name": "string", + "about": "string", + "details": { + "emails": [ + { + "email": "string", + "label": "string" + } + ], + "phoneNumbers": [ + { + "country": "string", + "phoneNumber": "string", + "label": "string" + } + ], + "title": "string", + "company": "string", + "birthday": "string", + "address": "string" + }, + "attachments": { + "media": [ + null + ], + "docs": [ + null + ], + "links": [ + null + ] + } + } + } + } + } + } + } + }, + "operationId": "getMessengerContact", + "description": "Retrieve Messenger contact by id.", + "x-stoplight": { + "id": "9isbvxatj57nk" + }, + "tags": [ + "messenger_contact" + ] + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "contactId", + "in": "path", + "required": true, + "description": "contact id" + } + ], + "put": { + "summary": "Update contact", + "operationId": "updateMessengerContact", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Update contact information.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/chat_contact" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "avatar": "string", + "name": "string", + "about": "string", + "details": { + "emails": [ + { + "email": "string", + "label": "string" + } + ], + "phoneNumbers": [ + { + "country": "string", + "phoneNumber": "string", + "label": "string" + } + ], + "title": "string", + "company": "string", + "birthday": "string", + "address": "string" + }, + "attachments": { + "media": [ + null + ], + "docs": [ + null + ], + "links": [ + null + ] + } + } + } + } + } + } + }, + "x-stoplight": { + "id": "y44id5lgo0dfq" + }, + "tags": [ + "messenger_contact" + ] + }, + "delete": { + "summary": "Delete contact", + "operationId": "deleteMessengerContact", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Delete contact.", + "x-stoplight": { + "id": "9q07xu89n43oz" + }, + "tags": [ + "messenger_contacts" + ] + } + }, + "/messenger/chats": { + "get": { + "summary": "Get chats", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/chat_chat" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/chat_chats" + } + } + } + } + } + }, + "operationId": "getMessengerChats", + "description": "Retrieve list of chats.", + "x-stoplight": { + "id": "a914zho6g0v8j" + }, + "tags": [ + "messenger_chats" + ] + }, + "parameters": [] + }, + "/messenger/chats/{contactId}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "contactId", + "in": "path", + "required": true, + "description": "contact id" + } + ], + "get": { + "summary": "Get chat", + "operationId": "getMessengerChat", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/chat_message" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/chat_messages" + } + } + } + } + }, + "404": { + "description": "Not Found" + } + }, + "description": "Retrieve the messages of the chat with the matching contact ID.", + "x-stoplight": { + "id": "h0ammo8n1ki73" + } + }, + "delete": { + "summary": "Delete chat", + "operationId": "deleteMessengerChat", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Delete an existing chat.", + "x-stoplight": { + "id": "2cgne09z6ye9x" + }, + "tags": [ + "messenger_chats" + ] + }, + "put": { + "summary": "Send message", + "operationId": "sendMessengerMessage", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/task" + } + } + } + } + }, + "description": "Send chat message.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/chat_message" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/chat_messages" + } + } + } + }, + "description": "Update chat messages." + }, + "x-stoplight": { + "id": "satehp9hs0v2m" + }, + "tags": [ + "messenger_chat", + "messenger_chats" + ] + } + }, + "/messenger/profile": { + "get": { + "summary": "Get user profile", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/chat_profile" + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/chat_profile" + } + } + } + } + } + }, + "operationId": "getMessengerUserProfile", + "description": "Retrieve Messenger user profile.", + "x-stoplight": { + "id": "ssc3msz8jtmf2" + }, + "tags": [ + "messenger_user_profile" + ] + }, + "parameters": [] + }, + "/tasks": { + "get": { + "summary": "Get tasks", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/task" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/tasks" + } + } + } + } + } + }, + "operationId": "getTasks", + "description": "Retrieve all of the tasks.", + "tags": [ + "tasks_list" + ] + }, + "post": { + "summary": "Create new task", + "operationId": "createTasksItem", + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/task" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "type": "string", + "title": "string", + "notes": "string", + "completed": true, + "dueDate": "string", + "priority": 0, + "tags": [ + null + ], + "assignedTo": null, + "subTasks": [ + { + "id": "string", + "title": "string", + "completed": true + } + ], + "order": 0 + } + } + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/task" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "type": "string", + "title": "string", + "notes": "string", + "completed": true, + "dueDate": "string", + "priority": 0, + "tags": [ + null + ], + "assignedTo": null, + "subTasks": [ + { + "id": "string", + "title": "string", + "completed": true + } + ], + "order": 0 + } + } + } + } + } + }, + "description": "Creates a new task.", + "tags": [ + "tasks_list" + ] + }, + "parameters": [] + }, + "/tasks/{taskId}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "taskId", + "in": "path", + "required": true, + "description": "task id" + } + ], + "get": { + "summary": "Get task by id", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/task" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "type": "string", + "title": "string", + "notes": "string", + "completed": true, + "dueDate": "string", + "priority": 0, + "tags": [ + null + ], + "assignedTo": null, + "subTasks": [ + { + "id": "string", + "title": "string", + "completed": true + } + ], + "order": 0 + } + } + } + } + } + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "getTasksItem", + "description": "Retrieve the information of the task with the matching task ID.", + "tags": [ + "tasks_item" + ] + }, + "delete": { + "summary": "Delete task", + "operationId": "deleteTasksItem", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Delete an existing task.", + "tags": [ + "tasks_list" + ] + }, + "put": { + "summary": "Update task", + "operationId": "updateTasksItem", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/task" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "type": "string", + "title": "string", + "notes": "string", + "completed": true, + "dueDate": "string", + "priority": 0, + "tags": [ + null + ], + "assignedTo": null, + "subTasks": [ + { + "id": "string", + "title": "string", + "completed": true + } + ], + "order": 0 + } + } + } + } + } + } + }, + "description": "Update the information of an existing task.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/task" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "type": "string", + "title": "string", + "notes": "string", + "completed": true, + "dueDate": "string", + "priority": 0, + "tags": [ + null + ], + "assignedTo": null, + "subTasks": [ + { + "id": "string", + "title": "string", + "completed": true + } + ], + "order": 0 + } + } + } + } + }, + "description": "Update task properties." + }, + "tags": [ + "tasks_item", + "tasks_list" + ] + } + }, + "/tasks/tags": { + "get": { + "summary": "Get tags", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/tag" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/tasks_tags" + } + } + } + } + } + }, + "operationId": "getTasksTags", + "description": "Retrieve all of the tags.", + "tags": [ + "tasks_tags" + ] + }, + "parameters": [], + "post": { + "summary": "Create new tag", + "operationId": "createTasksTag", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/tag" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "title": "string" + } + } + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/tag" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "title": "string" + } + } + } + } + } + }, + "description": "Creates a new tag.", + "tags": [ + "tasks_tags" + ] + } + }, + "/contacts/{contactId}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "contactId", + "in": "path", + "required": true, + "description": "contact id" + } + ], + "get": { + "summary": "Get contact by id", + "responses": { + "200": { + "description": "User Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/contact" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "avatar": "string", + "background": "string", + "name": "string", + "emails": [ + { + "email": "string", + "label": "string" + } + ], + "phoneNumbers": [ + { + "country": "string", + "phoneNumber": "string", + "label": "string" + } + ], + "title": "string", + "company": "string", + "birthday": "string", + "address": "string", + "notes": "string", + "tags": [ + "string" + ] + } + } + } + } + } + }, + "404": { + "description": "Contact Not Found" + } + }, + "operationId": "getContactsItem", + "description": "Retrieve the information of the contact with the matching contact ID.", + "tags": [ + "contacts_item" + ] + }, + "put": { + "summary": "Update contact", + "operationId": "updateContactsItem", + "responses": { + "200": { + "description": "Contact Updated", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/contact" + }, + "examples": {} + } + } + }, + "404": { + "description": "Contact Not Found" + } + }, + "description": "Update the information of an existing contact.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/contact" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "avatar": "string", + "background": "string", + "name": "string", + "emails": [ + { + "email": "string", + "label": "string" + } + ], + "phoneNumbers": [ + { + "country": "string", + "phoneNumber": "string", + "label": "string" + } + ], + "title": "string", + "company": "string", + "birthday": "string", + "address": "string", + "notes": "string", + "tags": [ + "string" + ] + } + } + } + } + }, + "description": "Update user properties." + }, + "tags": [ + "contacts" + ] + }, + "delete": { + "summary": "Delete contact", + "operationId": "deleteContactsItem", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Delete an existing contact.", + "tags": [ + "contacts" + ] + } + }, + "/contacts": { + "get": { + "summary": "Get contacts", + "tags": [ + "contacts" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/contact" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/contacts" + } + } + } + } + } + }, + "operationId": "getContactsList", + "description": "Retrieve all of the contacts." + }, + "post": { + "summary": "Create new contact", + "operationId": "createContactsItem", + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/contact" + }, + "examples": { + "Dejesus Michael": { + "value": { + "id": "string", + "avatar": "string", + "background": "string", + "name": "string", + "emails": [ + { + "email": "string", + "label": "string" + } + ], + "phoneNumbers": [ + { + "country": "string", + "phoneNumber": "string", + "label": "string" + } + ], + "title": "string", + "company": "string", + "birthday": "string", + "address": "string", + "notes": "string", + "tags": [ + "string" + ] + } + } + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/contact" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "avatar": "string", + "background": "string", + "name": "string", + "emails": [ + { + "email": "string", + "label": "string" + } + ], + "phoneNumbers": [ + { + "country": "string", + "phoneNumber": "string", + "label": "string" + } + ], + "title": "string", + "company": "string", + "birthday": "string", + "address": "string", + "notes": "string", + "tags": [ + "string" + ] + } + } + } + } + } + }, + "description": "Creates a new contact.", + "tags": [ + "contacts" + ] + }, + "parameters": [] + }, + "/contacts/tags/{tagId}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "tagId", + "in": "path", + "required": true, + "description": "tag id" + } + ], + "get": { + "summary": "Get tag by id", + "responses": { + "200": { + "description": "Tag Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/tag" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "title": "string" + } + } + } + } + } + }, + "404": { + "description": "Not Found" + } + }, + "operationId": "getContactsTag", + "description": "Retrieve the information of the tag with the matching tag ID.", + "tags": [ + "contacts_tag" + ] + }, + "put": { + "summary": "Update tag info", + "operationId": "updateContactsTag", + "responses": { + "200": { + "description": "Contact Updated", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/tag" + }, + "examples": {} + } + } + }, + "404": { + "description": "Not Found" + } + }, + "description": "Update the information of an existing tag.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/tag" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "title": "string" + } + } + } + } + }, + "description": "Update tag properties to update." + }, + "tags": [ + "contacts_tag" + ] + }, + "delete": { + "summary": "Delete tag", + "operationId": "deleteContactsTag", + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + } + }, + "description": "Delete an existing tag.", + "tags": [ + "contacts" + ] + } + }, + "/contacts/tags": { + "get": { + "summary": "Get tags", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/tag" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/contacts_tags" + } + } + } + } + } + }, + "operationId": "getContactsTags", + "description": "Retrieve all of the tags.", + "tags": [ + "contacts_tags" + ] + }, + "parameters": [], + "post": { + "summary": "Create new tag", + "operationId": "createContactsTag", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/tag" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "title": "string" + } + } + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/tag" + }, + "examples": { + "example-1": { + "value": { + "id": "string", + "title": "string" + } + } + } + } + } + }, + "description": "Creates new tag." + } + }, + "/countries": { + "get": { + "summary": "Get countries", + "tags": [ + "countries" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/country" + } + }, + "examples": { + "example-1": { + "$ref": "#/components/examples/countries" + } + } + } + } + } + }, + "operationId": "getCountries", + "description": "Retrieve all of the countries." + } + } + }, + "components": { + "schemas": { + "contact": { + "description": "", + "type": "object", + "x-examples": { + "Dejesus Michael": { + "id": "cd5fa417-b667-482d-b208-798d9da3213c", + "avatar": "assets/images/avatars/male-01.jpg", + "background": "assets/images/cards/14-640x480.jpg", + "name": "Dejesus Michael", + "emails": [ + { + "email": "dejesusmichael@mail.org", + "label": "Personal" + }, + { + "email": "michael.dejesus@vitricomp.io", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "bs", + "phoneNumber": "984 531 2468", + "label": "Mobile" + }, + { + "country": "bs", + "phoneNumber": "806 470 2693", + "label": "Work" + } + ], + "title": "Track Service Worker", + "company": "Vitricomp", + "birthday": "1975-01-10T12:00:00.000Z", + "address": "279 Independence Avenue, Calvary, Guam, PO4127", + "notes": "

Do incididunt cillum duis eu pariatur enim proident minim officia amet proident consequat consequat qui consequat magna magna occaecat aliquip culpa pariatur velit nisi nostrud irure eu ullamco exercitation sint.

Cillum deserunt laborum laborum quis nisi enim et aliquip labore excepteur in excepteur labore amet in ipsum ipsum nostrud deserunt lorem nisi voluptate dolor minim enim ut eu cupidatat enim.

", + "tags": [ + "56ddbd47-4078-4ddd-8448-73c5e88d5f59" + ] + } + }, + "properties": { + "id": { + "type": "string", + "minLength": 1, + "readOnly": true + }, + "avatar": { + "type": "string", + "minLength": 1, + "nullable": true + }, + "background": { + "type": "string", + "minLength": 1, + "nullable": true + }, + "name": { + "type": "string", + "minLength": 1 + }, + "emails": { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "type": "object", + "properties": { + "email": { + "type": "string", + "minLength": 1 + }, + "label": { + "type": "string", + "minLength": 1 + } + } + } + }, + "phoneNumbers": { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "type": "object", + "properties": { + "country": { + "type": "string", + "minLength": 1 + }, + "phoneNumber": { + "type": "string", + "minLength": 1 + }, + "label": { + "type": "string", + "minLength": 1 + } + } + } + }, + "title": { + "type": "string", + "minLength": 1 + }, + "company": { + "type": "string", + "minLength": 1 + }, + "birthday": { + "type": "string", + "minLength": 1, + "nullable": true + }, + "address": { + "type": "string", + "minLength": 1, + "nullable": true + }, + "notes": { + "type": "string", + "minLength": 1, + "nullable": true + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "title": "Contact" + }, + "country": { + "description": "", + "type": "object", + "x-examples": { + "Afghanistan": { + "id": "19430ee3-b0fe-4987-a7c8-74453ad5504d", + "iso": "af", + "name": "Afghanistan", + "code": "+93", + "flagImagePos": "-1px -3180px" + } + }, + "properties": { + "id": { + "type": "string", + "minLength": 1, + "readOnly": true + }, + "iso": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string", + "minLength": 1 + }, + "code": { + "type": "string", + "minLength": 1 + }, + "flagImagePos": { + "type": "string", + "minLength": 1 + } + }, + "title": "Country" + }, + "tag": { + "description": "", + "type": "object", + "x-examples": { + "Work": { + "id": "c31e9e5d-e0cb-4574-a13f-8a6ee5ff8309", + "title": "Work" + } + }, + "properties": { + "id": { + "type": "string", + "minLength": 1, + "readOnly": true + }, + "title": { + "type": "string", + "minLength": 1 + } + }, + "title": "Tag" + }, + "task": { + "description": "", + "type": "object", + "x-examples": { + "example-1": { + "id": "f65d517a-6f69-4c88-81f5-416f47405ce1", + "type": "section", + "title": "Company internal application v2.0.0", + "notes": "Magna consectetur culpa duis ad est tempor pariatur velit ullamco aute exercitation magna sunt commodo minim enim aliquip eiusmod ipsum adipisicing magna ipsum reprehenderit lorem magna voluptate magna aliqua culpa.\n\nSit nisi adipisicing pariatur enim enim sunt officia ad labore voluptate magna proident velit excepteur pariatur cillum sit excepteur elit veniam excepteur minim nisi cupidatat proident dolore irure veniam mollit.", + "completed": false, + "dueDate": "2017-10-18T13:03:37.943Z", + "priority": 1, + "tags": [ + "91658b8a-f382-4b0c-a53f-e9390351c2c5", + "51483dd3-cb98-4400-9128-4bd66b455807" + ], + "assignedTo": null, + "subTasks": [ + { + "id": "2768a969-a316-449b-bf82-93cff4252cbf", + "title": "Minim irure fugiat ullamco irure", + "completed": false + }, + { + "id": "6cc5ac8f-3a02-47e6-ad4b-0bd0222e2717", + "title": "Sint velit ex in adipisicing fugiat", + "completed": false + } + ], + "order": 0 + } + }, + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "type": { + "type": "string", + "minLength": 1 + }, + "title": { + "type": "string", + "minLength": 1 + }, + "notes": { + "type": "string", + "minLength": 1 + }, + "completed": { + "type": "boolean" + }, + "dueDate": { + "type": "string", + "nullable": true + }, + "priority": { + "type": "number" + }, + "tags": { + "type": "array", + "items": {} + }, + "assignedTo": {}, + "subTasks": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "title": { + "type": "string", + "minLength": 1 + }, + "completed": { + "type": "boolean" + } + }, + "required": [ + "id", + "title", + "completed" + ] + } + }, + "order": { + "type": "number" + } + }, + "required": [ + "id", + "type", + "title", + "notes", + "completed", + "priority", + "tags", + "subTasks", + "order" + ] + }, + "chat_message": { + "description": "", + "type": "object", + "x-examples": { + "example-1": { + "id": "e6b2b82f-b199-4a60-9696-5f3e40d2715d", + "chatId": "", + "contactId": "me", + "value": "Hi!", + "createdAt": "2022-01-05T15:56:48.732Z" + } + }, + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "chatId": { + "type": "string" + }, + "contactId": { + "type": "string" + }, + "value": { + "type": "string", + "minLength": 1 + }, + "createdAt": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "id", + "chatId", + "contactId", + "value", + "createdAt" + ] + }, + "chat_chat": { + "description": "", + "type": "object", + "x-examples": { + "example-1": { + "id": "ff6bc7f1-449a-4419-af62-b89ce6cae0aa", + "contactId": "9d3f0e7f-dcbd-4e56-a5e8-87b8154e9edf", + "unreadCount": 2, + "muted": false, + "lastMessage": "See you tomorrow!", + "lastMessageAt": "26/04/2021" + } + }, + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "contactId": { + "type": "string" + }, + "unreadCount": { + "type": "number" + }, + "muted": { + "type": "boolean" + }, + "lastMessage": { + "type": "string", + "minLength": 1 + }, + "lastMessageAt": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "id", + "contactId", + "unreadCount", + "muted", + "lastMessage", + "lastMessageAt" + ] + }, + "chat_contact": { + "description": "", + "type": "object", + "x-examples": { + "example-1": { + "id": "cd5fa417-b667-482d-b208-798d9da3213c", + "avatar": "assets/images/avatars/male-01.jpg", + "name": "Dejesus Michael", + "about": "Hi there! I'm using FuseChat.", + "details": { + "emails": [ + { + "email": "dejesusmichael@mail.org", + "label": "Personal" + }, + { + "email": "michael.dejesus@vitricomp.io", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "bs", + "phoneNumber": "984 531 2468", + "label": "Mobile" + }, + { + "country": "bs", + "phoneNumber": "806 470 2693", + "label": "Work" + } + ], + "title": "Track Service Worker", + "company": "Vitricomp", + "birthday": "1975-01-10T12:00:00.000Z", + "address": "279 Independence Avenue, Calvary, Guam, PO4127" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + } + }, + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "avatar": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "minLength": 1 + }, + "about": { + "type": "string", + "minLength": 1 + }, + "details": { + "type": "object", + "required": [ + "emails", + "phoneNumbers", + "company", + "birthday", + "address" + ], + "properties": { + "emails": { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "type": "object", + "properties": { + "email": { + "type": "string", + "minLength": 1 + }, + "label": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "email", + "label" + ] + } + }, + "phoneNumbers": { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "type": "object", + "properties": { + "country": { + "type": "string", + "minLength": 1 + }, + "phoneNumber": { + "type": "string", + "minLength": 1 + }, + "label": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "country", + "phoneNumber", + "label" + ] + } + }, + "title": { + "type": "string", + "minLength": 1 + }, + "company": { + "type": "string", + "minLength": 1 + }, + "birthday": { + "type": "string", + "minLength": 1 + }, + "address": { + "type": "string", + "minLength": 1 + } + } + }, + "attachments": { + "type": "object", + "required": [ + "media", + "docs", + "links" + ], + "properties": { + "media": { + "type": "array", + "items": {} + }, + "docs": { + "type": "array", + "items": {} + }, + "links": { + "type": "array", + "items": {} + } + } + } + }, + "required": [ + "id", + "name", + "about", + "details", + "attachments" + ] + }, + "chat_profile": { + "description": "", + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string", + "minLength": 1 + }, + "email": { + "type": "string", + "minLength": 1 + }, + "avatar": { + "type": "string", + "minLength": 1 + }, + "about": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "id", + "name", + "email", + "avatar", + "about" + ], + "x-examples": { + "example-1": { + "id": "cfaad35d-07a3-4447-a6c3-d8c3d54fd5df", + "name": "Brian Hughes", + "email": "hughes.brian@company.com", + "avatar": "assets/images/avatars/brian-hughes.jpg", + "about": "Hi there! I'm using FuseChat." + } + } + }, + "academy_course": { + "type": "object", + "x-examples": { + "example-1": { + "id": "694e4e5f-f25f-470b-bd0e-26b1d4f64028", + "title": "Basics of Angular", + "slug": "basics-of-angular", + "description": "Introductory course for Angular and framework basics", + "category": "web", + "duration": 30, + "totalSteps": 11, + "updatedAt": "Jun 28, 2021", + "featured": true, + "progress": { + "currentStep": 3, + "completed": 2 + } + } + }, + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "title": { + "type": "string", + "minLength": 1 + }, + "slug": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "minLength": 1 + }, + "category": { + "type": "string", + "minLength": 1 + }, + "duration": { + "type": "number" + }, + "totalSteps": { + "type": "number" + }, + "updatedAt": { + "type": "string", + "minLength": 1 + }, + "featured": { + "type": "boolean" + }, + "progress": { + "type": "object", + "required": [ + "currentStep", + "completed" + ], + "properties": { + "currentStep": { + "type": "number" + }, + "completed": { + "type": "number" + } + } + }, + "activeStep": { + "type": "number", + "x-stoplight": { + "id": "jgxsmp6cj1m6r" + } + }, + "steps": { + "type": "array", + "x-stoplight": { + "id": "kh3diwk23a2sn" + }, + "items": { + "x-stoplight": { + "id": "47yp0y08xmcu9" + }, + "type": "object", + "properties": { + "content": { + "type": "string", + "x-stoplight": { + "id": "th8nsquqfvhdw" + } + }, + "title": { + "type": "string", + "x-stoplight": { + "id": "ow8eu2rsuap3d" + } + }, + "subtitle": { + "type": "string", + "x-stoplight": { + "id": "3z4gyiqtnarkm" + } + }, + "order": { + "type": "number", + "x-stoplight": { + "id": "e8idhf4zaq9w7" + } + } + } + } + } + }, + "required": [ + "id", + "title", + "slug", + "description", + "category", + "duration", + "totalSteps", + "updatedAt", + "featured", + "progress" + ] + }, + "academy_category": { + "description": "", + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "title": { + "type": "string", + "minLength": 1 + }, + "slug": { + "type": "string", + "minLength": 1 + }, + "color": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "id", + "title", + "slug", + "color" + ], + "x-examples": { + "example-1": { + "id": "9a67dff7-3c38-4052-a335-0cef93438ff6", + "title": "Web", + "slug": "web", + "color": "#2196f3" + } + } + }, + "ecommerce_order": { + "type": "object", + "x-examples": { + "example-1": { + "id": "1", + "reference": "70d4d7d0", + "subtotal": "39.97", + "tax": "77.44", + "discount": "-10.17", + "total": "73.31", + "date": "2015/04/25 02:07:59", + "customer": { + "id": 1, + "firstName": "Dollie", + "lastName": "Bullock", + "avatar": "assets/images/avatars/Abbott.jpg", + "company": "Saois", + "jobTitle": "Digital Archivist", + "email": "abbott@withinpixels.com", + "phone": "+1-202-555-0175", + "invoiceAddress": { + "address": "704 6th Ave, New York, NY 10010, USA", + "lat": 40.7424739, + "lng": -73.99283919999999 + }, + "shippingAddress": { + "address": "377 E South Omaha Bridge Rd, Council Bluffs, IA 51501, USA", + "lat": 41.2183223, + "lng": -95.8420876 + } + }, + "products": [], + "status": [ + { + "id": 13, + "name": "On pre-order (not paid)", + "color": "purple-300", + "date": "2016/04/03 10:06:18" + }, + { + "id": 1, + "name": "Awaiting check payment", + "color": "blue-500", + "date": "2015/03/17 18:28:37" + } + ], + "payment": { + "transactionId": "2a894b9e", + "amount": "73.31", + "method": "Credit Card", + "date": "2016/02/23 15:50:23" + }, + "shippingDetails": [ + { + "tracking": "", + "carrier": "TNT", + "weight": "10.44", + "fee": "7.00", + "date": "2015/04/10 07:03:52" + } + ] + } + }, + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "reference": { + "type": "string", + "minLength": 1 + }, + "subtotal": { + "type": "string", + "minLength": 1 + }, + "tax": { + "type": "string", + "minLength": 1 + }, + "discount": { + "type": "string", + "minLength": 1 + }, + "total": { + "type": "string", + "minLength": 1 + }, + "date": { + "type": "string", + "minLength": 1 + }, + "customer": { + "type": "object", + "required": [ + "id", + "firstName", + "lastName", + "avatar", + "company", + "jobTitle", + "email", + "phone", + "invoiceAddress", + "shippingAddress" + ], + "properties": { + "id": { + "type": "string" + }, + "firstName": { + "type": "string", + "minLength": 1 + }, + "lastName": { + "type": "string", + "minLength": 1 + }, + "avatar": { + "type": "string", + "minLength": 1 + }, + "company": { + "type": "string", + "minLength": 1 + }, + "jobTitle": { + "type": "string", + "minLength": 1 + }, + "email": { + "type": "string", + "minLength": 1 + }, + "phone": { + "type": "string", + "minLength": 1 + }, + "invoiceAddress": { + "type": "object", + "required": [ + "address", + "lat", + "lng" + ], + "properties": { + "address": { + "type": "string", + "minLength": 1 + }, + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + } + } + }, + "shippingAddress": { + "type": "object", + "required": [ + "address", + "lat", + "lng" + ], + "properties": { + "address": { + "type": "string", + "minLength": 1 + }, + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + } + } + } + } + }, + "products": { + "type": "array", + "items": {} + }, + "status": { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string", + "minLength": 1 + }, + "color": { + "type": "string", + "minLength": 1 + }, + "date": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "id", + "name", + "color", + "date" + ] + } + }, + "payment": { + "type": "object", + "required": [ + "transactionId", + "amount", + "method", + "date" + ], + "properties": { + "transactionId": { + "type": "string" + }, + "amount": { + "type": "string", + "minLength": 1 + }, + "method": { + "type": "string", + "minLength": 1 + }, + "date": { + "type": "string", + "minLength": 1 + } + } + }, + "shippingDetails": { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "type": "object", + "properties": { + "tracking": { + "type": "string" + }, + "carrier": { + "type": "string", + "minLength": 1 + }, + "weight": { + "type": "string", + "minLength": 1 + }, + "fee": { + "type": "string", + "minLength": 1 + }, + "date": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "tracking", + "carrier", + "weight", + "fee", + "date" + ] + } + } + }, + "required": [ + "id", + "reference", + "subtotal", + "tax", + "discount", + "total", + "date", + "customer", + "products", + "status", + "payment", + "shippingDetails" + ] + }, + "ecommerce_product": { + "description": "", + "type": "object", + "x-examples": { + "example-1": { + "id": "1", + "name": "A Walk Amongst Friends - Canvas Print", + "handle": "a-walk-amongst-friends-canvas-print", + "description": "Officia amet eiusmod eu sunt tempor voluptate laboris velit nisi amet enim proident et. Consequat laborum non eiusmod cillum eu exercitation. Qui adipisicing est fugiat eiusmod esse. Sint aliqua cupidatat pariatur mollit ad est proident reprehenderit. Eiusmod adipisicing laborum incididunt sit aliqua ullamco.", + "categories": [ + "Canvas Print", + "Nature" + ], + "tags": [ + "canvas-print", + "nature" + ], + "featuredImageId": "1", + "images": [], + "priceTaxExcl": 9.309, + "priceTaxIncl": 10.24, + "taxRate": 10, + "comparedPrice": 19.9, + "quantity": 3, + "sku": "A445BV", + "width": "22cm", + "height": "24cm", + "depth": "15cm", + "weight": "3kg", + "extraShippingFee": 3, + "active": true + } + }, + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string", + "minLength": 1 + }, + "handle": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "minLength": 1 + }, + "categories": { + "type": "array", + "items": {} + }, + "tags": { + "type": "array", + "items": {} + }, + "featuredImageId": { + "type": "string", + "minLength": 1 + }, + "images": { + "type": "array", + "items": {} + }, + "priceTaxExcl": { + "type": "number" + }, + "priceTaxIncl": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "comparedPrice": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "sku": { + "type": "string", + "minLength": 1 + }, + "width": { + "type": "string", + "minLength": 1 + }, + "height": { + "type": "string", + "minLength": 1 + }, + "depth": { + "type": "string", + "minLength": 1 + }, + "weight": { + "type": "string", + "minLength": 1 + }, + "extraShippingFee": { + "type": "number" + }, + "active": { + "type": "boolean" + } + }, + "required": [ + "id", + "name", + "handle", + "description", + "categories", + "tags", + "featuredImageId", + "images", + "priceTaxExcl", + "priceTaxIncl", + "taxRate", + "comparedPrice", + "quantity", + "sku", + "width", + "height", + "depth", + "weight", + "extraShippingFee", + "active" + ] + }, + "file_manager_item": { + "description": "", + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "folderId": {}, + "name": { + "type": "string", + "minLength": 1 + }, + "createdBy": { + "type": "string", + "minLength": 1 + }, + "createdAt": { + "type": "string", + "minLength": 1 + }, + "modifiedAt": { + "type": "string", + "minLength": 1 + }, + "size": { + "type": "string", + "minLength": 1 + }, + "type": { + "type": "string", + "minLength": 1 + }, + "contents": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "id", + "name", + "createdBy", + "createdAt", + "modifiedAt", + "size", + "type", + "contents", + "description" + ], + "x-examples": { + "example-1": { + "id": "cd6897cb-acfd-4016-8b53-3f66a5b5fc68", + "folderId": null, + "name": "Personal", + "createdBy": "Brian Hughes", + "createdAt": "April 24, 2018", + "modifiedAt": "April 24, 2018", + "size": "87 MB", + "type": "folder", + "contents": "57 files", + "description": "Personal documents such as insurance policies, tax papers and etc." + } + } + }, + "help_center_guide": { + "type": "object", + "x-examples": { + "example-1": { + "id": "a008ffa3-7b3f-43be-8a8f-dbf5272ed2dd", + "categoryId": "0ee72de7-49c0-4880-9e89-b72a4edd6a81", + "slug": "what-is-this-app", + "title": "What is this app?", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + } + }, + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "categoryId": { + "type": "string", + "minLength": 1 + }, + "slug": { + "type": "string", + "minLength": 1 + }, + "title": { + "type": "string", + "minLength": 1 + }, + "subtitle": { + "type": "string", + "minLength": 1 + }, + "content": { + "type": "string", + "x-stoplight": { + "id": "8cob0a7979x9b" + } + } + }, + "required": [ + "id", + "categoryId", + "slug", + "title", + "subtitle" + ] + }, + "help_center_faq": { + "description": "", + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "categoryId": { + "type": "string", + "minLength": 1 + }, + "question": { + "type": "string", + "minLength": 1 + }, + "answer": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "id", + "categoryId", + "question", + "answer" + ], + "x-examples": { + "example-1": { + "id": "f65d517a-6f69-4c88-81f5-416f47405ce1", + "categoryId": "28924eab-97cc-465a-ba21-f232bb95843f", + "question": "Is there a 14-days trial?", + "answer": "Magna consectetur culpa duis ad est tempor pariatur velit ullamco aute exercitation magna sunt commodo minim enim aliquip eiusmod ipsum adipisicing magna ipsum reprehenderit lorem magna voluptate magna aliqua culpa.\n\nSit nisi adipisicing pariatur enim enim sunt officia ad labore voluptate magna proident velit excepteur pariatur cillum sit excepteur elit veniam excepteur minim nisi cupidatat proident dolore irure veniam mollit." + } + } + }, + "help_center_faq_category": { + "description": "", + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "slug": { + "type": "string", + "minLength": 1 + }, + "title": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "id", + "slug", + "title" + ], + "x-examples": { + "example-1": { + "id": "28924eab-97cc-465a-ba21-f232bb95843f", + "slug": "most-asked", + "title": "Most asked" + } + } + }, + "help_center_guide_category": { + "description": "", + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "slug": { + "type": "string", + "minLength": 1 + }, + "title": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "id", + "slug", + "title" + ], + "x-examples": { + "example-1": { + "id": "0ee72de7-49c0-4880-9e89-b72a4edd6a81", + "slug": "getting-started", + "title": "Getting Started" + } + } + }, + "notes_label": { + "description": "", + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "title": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "id", + "title" + ], + "x-examples": { + "example-1": { + "id": "f47c92e5-20b9-44d9-917f-9ff4ad25dfd0", + "title": "Family" + } + } + }, + "notes_note": { + "description": "", + "type": "object", + "x-examples": { + "example-1": { + "id": "8f011ac5-b71c-4cd7-a317-857dcd7d85e0", + "title": "", + "content": "Find a new company name", + "tasks": null, + "image": null, + "reminder": null, + "labels": [ + "e2f749f5-41ed-49d0-a92a-1c83d879e371" + ], + "archived": false, + "createdAt": "2022-10-13T07:19:08.245Z", + "updatedAt": null + } + }, + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "title": { + "type": "string" + }, + "content": { + "type": "string" + }, + "tasks": {}, + "image": {}, + "reminder": {}, + "labels": { + "type": "array", + "items": {} + }, + "archived": { + "type": "boolean" + }, + "createdAt": { + "type": "string", + "minLength": 1 + }, + "updatedAt": {} + }, + "required": [ + "id", + "title", + "content", + "labels", + "archived", + "createdAt" + ] + }, + "scrumboard_board": { + "description": "", + "type": "object", + "x-examples": { + "example-1": { + "id": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "title": "Admin Dashboard", + "description": "Roadmap for the new project", + "icon": "heroicons-outline:template", + "lastActivity": "2022-01-18T21:00:00.000Z", + "members": [ + "319ecb5b-f99c-4ee4-81b2-3aeffd1d4735", + "5bf7ed5b-8b04-46b7-b364-005958b7d82e", + "23a47d2c-c6cb-40cc-af87-e946a9df5028", + "6726643d-e8dc-42fa-83a6-b4ec06921a6b", + "6f6a1c34-390b-4b2e-97c8-ff0e0d787839" + ], + "settings": { + "subscribed": true, + "cardCoverImages": true + }, + "lists": [ + { + "id": "a2df7786-519c-485a-a85f-c09a61cc5f37", + "cards": [ + "ed58add1-45a7-41db-887d-3ca7ee7f2719", + "e74e66e9-fe0f-441e-a8ce-28ed6eccc48d", + "cd6897cb-acfd-4016-8b53-3f66a5b5fc68", + "6da8747f-b474-4c9a-9eba-5ef212285500" + ] + }, + { + "id": "83ca2a34-65af-49c0-a42e-94a34003fcf2", + "cards": [ + "94fb1dee-dd83-4cca-acdd-02e96d3cc4f1", + "fc16f7d8-957d-43ed-ba85-20f99b5ce011", + "cd7f01c5-a941-4076-8cef-37da0354e643" + ] + }, + { + "id": "a85ea483-f8f7-42d9-a314-3fed6aac22ab", + "cards": [ + "c0b32f1f-64ec-4f8d-8b11-a8dc809df331" + ] + }, + { + "id": "34cbef38-5687-4813-bd66-141a6df6d832", + "cards": [ + "532c2747-be79-464a-9897-6a682bf22b64", + "1d908efe-c830-476e-9e87-d06e30d89bc2", + "b1da11ed-7896-4826-962d-4b7b718896d4", + "3b7f3ceb-107f-42bc-a204-c268c9a56cb4" + ] + } + ] + } + }, + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "title": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "minLength": 1 + }, + "icon": { + "type": "string", + "minLength": 1 + }, + "lastActivity": { + "type": "string", + "minLength": 1 + }, + "members": { + "type": "array", + "items": {} + }, + "settings": { + "type": "object", + "required": [ + "subscribed", + "cardCoverImages" + ], + "properties": { + "subscribed": { + "type": "boolean" + }, + "cardCoverImages": { + "type": "boolean" + } + } + }, + "lists": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "cards": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "id" + ] + } + } + }, + "required": [ + "id", + "title", + "description", + "icon", + "lastActivity", + "members", + "settings", + "lists" + ], + "title": "" + }, + "scrumboard_card": { + "type": "object", + "x-examples": { + "example-1": { + "id": "ed58add1-45a7-41db-887d-3ca7ee7f2719", + "boardId": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "listId": "a2df7786-519c-485a-a85f-c09a61cc5f37", + "title": "Do a research about most needed admin applications", + "description": "Current application doesn't support Node.js 7 and above.", + "labels": [ + "e0175175-2784-48f1-a519-a1d2e397c9b3" + ], + "dueDate": 1643026537, + "attachmentCoverId": "67027cahbe3b52ecf2dc631c", + "memberIds": [ + "5bf7ed5b-8b04-46b7-b364-005958b7d82e", + "d1f612e6-3e3b-481f-a8a9-f917e243b06e", + "fe0fec0d-002b-406f-87ab-47eb87ba577c", + "23a47d2c-c6cb-40cc-af87-e946a9df5028", + "6726643d-e8dc-42fa-83a6-b4ec06921a6b", + "0d1eb062-13d5-4286-b8d4-e0bea15f3d56" + ], + "attachments": [ + { + "id": "67027cahbe3b52ecf2dc631c", + "name": "mail.jpg", + "src": "assets/images/apps/scrumboard/mail.jpg", + "time": 1642766617, + "type": "image" + }, + { + "id": "56027cfcbe1b72ecf1fc452a", + "name": "calendar.jpg", + "src": "assets/images/apps/scrumboard/calendar.jpg", + "time": 1642766617, + "type": "image" + } + ], + "subscribed": true, + "checklists": [ + { + "id": "63021cfdbe1x72wcf1fc451v", + "name": "Checklist", + "checkItems": [ + { + "id": 1, + "name": "Implement a calendar library", + "checked": false + }, + { + "id": 2, + "name": "Replace event colors with Material Design colors", + "checked": true + }, + { + "id": 3, + "name": "Replace icons with Material Design icons", + "checked": false + }, + { + "id": 4, + "name": "Use date-fns", + "checked": false + } + ] + }, + { + "name": "Checklist 2", + "id": "74031cfdbe1x72wcz1dc166z", + "checkItems": [ + { + "id": 1, + "name": "Replace event colors with Material Design colors", + "checked": true + }, + { + "id": 2, + "name": "Replace icons with Material Design icons", + "checked": false + }, + { + "id": 3, + "name": "Use date-fns", + "checked": false + } + ] + } + ], + "activities": [ + { + "id": "1", + "type": "comment", + "idMember": "6726643d-e8dc-42fa-83a6-b4ec06921a6b", + "message": "AngularCLI could be a nice alternative.", + "time": 1642766617 + } + ] + } + }, + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "boardId": { + "type": "string", + "minLength": 1 + }, + "listId": { + "type": "string", + "minLength": 1 + }, + "title": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string" + }, + "labels": { + "type": "array", + "items": {} + }, + "labels - copy": { + "type": "array", + "items": {} + }, + "dueDate": { + "type": "number", + "nullable": true + }, + "attachmentCoverId": { + "type": "string" + }, + "memberIds": { + "type": "array", + "items": {} + }, + "attachments": { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string", + "minLength": 1 + }, + "src": { + "type": "string", + "minLength": 1 + }, + "time": { + "type": "number" + }, + "type": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "id", + "name", + "src", + "time", + "type" + ] + } + }, + "subscribed": { + "type": "boolean" + }, + "checklists": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string", + "minLength": 1 + }, + "checkItems": { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "name": { + "type": "string", + "minLength": 1 + }, + "checked": { + "type": "boolean" + } + }, + "required": [ + "id", + "name", + "checked" + ] + } + } + }, + "required": [ + "id", + "name" + ] + } + }, + "activities": { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string", + "minLength": 1 + }, + "idMember": { + "type": "string", + "minLength": 1 + }, + "message": { + "type": "string", + "minLength": 1 + }, + "time": { + "type": "number" + } + }, + "required": [ + "id", + "type", + "idMember", + "message", + "time" + ] + } + } + }, + "required": [ + "id", + "boardId", + "listId", + "title", + "description", + "labels", + "attachmentCoverId", + "memberIds", + "attachments", + "subscribed", + "checklists", + "activities" + ], + "x-tags": [ + "courses", + "course" + ] + }, + "scrumboard_label": { + "description": "", + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "boardId": { + "type": "string", + "minLength": 1 + }, + "title": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "id", + "boardId", + "title" + ], + "x-examples": { + "example-1": { + "id": "e0175175-2784-48f1-a519-a1d2e397c9b3", + "boardId": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "title": "Research" + } + } + }, + "scrumboard_member": { + "description": "", + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string", + "minLength": 1 + }, + "avatar": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "id", + "name", + "avatar" + ], + "x-examples": { + "example-1": { + "id": "6f6a1c34-390b-4b2e-97c8-ff0e0d787839", + "name": "Angeline Vinson", + "avatar": "assets/images/avatars/female-01.jpg" + } + } + }, + "scrumboard_list": { + "description": "", + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "boardId": { + "type": "string", + "minLength": 1 + }, + "title": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "id", + "boardId", + "title" + ], + "x-examples": { + "example-1": { + "id": "a2df7786-519c-485a-a85f-c09a61cc5f37", + "boardId": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "title": "To do" + } + } + }, + "mailbox_mail": { + "description": "", + "type": "object", + "x-examples": { + "example-1": { + "id": "f9c4c091-3ac4-4df9-ac5d-aec7b07c8e3f", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-01.jpg", + "contact": "Myra Dudley " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "bcc": [ + "Julie T. " + ], + "date": "2022-01-25T17:13:22.073Z", + "subject": "Please review and sign the attached agreement", + "content": "Hi Brian,\n\nUllamco deserunt commodo esse deserunt deserunt quis eiusmod. Laborum sint excepteur non sit eiusmod sunt voluptate ipsum nisi ullamco magna. Lorem consectetur est dolor minim exercitation deserunt quis duis fugiat ipsum incididunt non. Anim aute ipsum cupidatat nisi occaecat quis sit nisi labore labore dolore do. Pariatur veniam culpa quis veniam nisi exercitation veniam ut. Quis do sint proident fugiat ad.\n\nNon id nisi commodo veniam. Veniam veniam minim ea laborum voluptate id duis deserunt. Anim ut ut amet et ullamco nulla fugiat id incididunt adipisicing excepteur amet. Ex amet eu cillum non fugiat velit dolore. Incididunt duis est eu et ex sunt consectetur cillum nisi aute proident.\n\nIncididunt excepteur laborum quis sit. Ex quis officia incididunt proident aliqua adipisicing. Irure ad in Lorem laborum deserunt nulla consequat. Pariatur excepteur exercitation cupidatat aute.\n\nCheers!\nMyra Dudley", + "attachments": [ + { + "type": "image/jpeg", + "name": "mystery-forest.jpg", + "size": 15539, + "preview": "mystery-forest_preview.jpg", + "downloadUrl": "" + }, + { + "type": "application/pdf", + "name": "montly-invoice.pdf", + "size": 243449, + "preview": "pdf", + "downloadUrl": "" + }, + { + "type": "image/jpeg", + "name": "birds-eye-sydney.jpg", + "size": 14294, + "preview": "birds-eye-sydney_preview.jpg", + "downloadUrl": "" + } + ], + "starred": true, + "important": true, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3" + ] + } + }, + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "type": { + "type": "string", + "minLength": 1 + }, + "from": { + "type": "object", + "required": [ + "avatar", + "contact" + ], + "properties": { + "avatar": { + "type": "string", + "minLength": 1 + }, + "contact": { + "type": "string", + "minLength": 1 + } + } + }, + "to": { + "type": "string", + "minLength": 1 + }, + "cc": { + "type": "array", + "items": {} + }, + "bcc": { + "type": "array", + "items": {} + }, + "date": { + "type": "string", + "minLength": 1 + }, + "subject": { + "type": "string", + "minLength": 1 + }, + "content": { + "type": "string", + "minLength": 1 + }, + "attachments": { + "type": "array", + "uniqueItems": false, + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string", + "minLength": 1 + }, + "size": { + "type": "number" + }, + "preview": { + "type": "string", + "minLength": 1 + }, + "downloadUrl": { + "type": "string" + }, + "": { + "type": "string" + } + }, + "required": [ + "type", + "name", + "size", + "preview", + "downloadUrl" + ] + } + }, + "starred": { + "type": "boolean" + }, + "important": { + "type": "boolean" + }, + "unread": { + "type": "boolean" + }, + "folder": { + "type": "string", + "minLength": 1 + }, + "labels": { + "type": "array", + "items": {} + } + }, + "required": [ + "id", + "type", + "from", + "to", + "date", + "subject", + "content", + "attachments", + "starred", + "important", + "unread", + "folder", + "labels" + ] + }, + "mailbox_filter": { + "description": "", + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "title": { + "type": "string", + "minLength": 1 + }, + "slug": { + "type": "string", + "minLength": 1 + }, + "icon": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "id", + "title", + "slug", + "icon" + ], + "x-examples": { + "example-1": { + "id": "de1b41f6-6839-4f1b-9d2c-07e55f6f8f82", + "title": "Starred", + "slug": "starred", + "icon": "heroicons-outline:star" + } + } + }, + "mailbox_folder": { + "description": "", + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "title": { + "type": "string", + "minLength": 1 + }, + "slug": { + "type": "string", + "minLength": 1 + }, + "icon": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "id", + "title", + "slug", + "icon" + ], + "x-examples": { + "example-1": { + "id": "7c004a19-4506-48ef-93ab-f16381302e3b", + "title": "Inbox", + "slug": "inbox", + "icon": "heroicons-outline:inbox" + } + } + }, + "calendar_label": { + "description": "", + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "title": { + "type": "string", + "minLength": 1 + }, + "color": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "id", + "title", + "color" + ], + "x-examples": { + "example-1": { + "id": "1a470c8e-40ed-4c2d-b590-a4f1f6ead6cc", + "title": "Personal", + "color": "bg-teal-500" + } + } + }, + "mailbox_label": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "color": { + "type": "string" + } + }, + "x-examples": { + "example-1": { + "id": "b67fc437-6118-4ec8-a3c7-9320b828e3fc", + "title": "Forums", + "slug": "forums", + "color": "green" + } + } + }, + "mailbox_action": { + "description": "", + "type": "object", + "x-examples": { + "example-1": { + "type": "mark-as-unread", + "ids": [ + 1, + 2, + 3 + ] + } + }, + "properties": { + "type": { + "type": "string", + "minLength": 1 + }, + "value": { + "type": "string", + "minLength": 1 + }, + "ids": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "type", + "value", + "ids" + ] + }, + "calendar_event": { + "description": "", + "type": "object", + "x-examples": { + "example-1": { + "id": 0, + "title": "All Day Event very long title", + "allDay": true, + "start": "2022-04-01T00:00:00+03:00", + "end": "2022-04-02T00:00:00+03:00", + "extendedProps": { + "desc": "Big conference for important people", + "label": "5dab5f7b-757a-4467-ace1-305fe07b11fe" + } + } + }, + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string", + "minLength": 1 + }, + "allDay": { + "type": "boolean" + }, + "start": { + "type": "string", + "minLength": 1 + }, + "end": { + "type": "string", + "minLength": 1 + }, + "extendedProps": { + "type": "object", + "required": [ + "desc", + "label" + ], + "properties": { + "desc": { + "type": "string", + "minLength": 0 + }, + "label": { + "type": "string", + "minLength": 1 + } + } + } + }, + "required": [ + "id", + "title", + "allDay", + "start", + "end", + "extendedProps" + ] + }, + "notification": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "time": { + "type": "string" + }, + "read": { + "type": "boolean" + }, + "link": { + "type": "string" + }, + "useRouter": { + "type": "boolean" + } + }, + "x-examples": { + "example-1": { + "id": "8f8e1bf9-4661-4939-9e43-390957b60f42", + "icon": "heroicons-solid:star", + "title": "Daily challenges", + "description": "Your submission has been accepted and you are ready to sign-up for the final assigment which will be ready in 2 days", + "time": "2022-05-06T10:57:42.703Z", + "read": true, + "link": "/dashboards/project", + "useRouter": true + } + }, + "title": "" + }, + "auth_user": { + "type": "object", + "properties": { + "uid": { + "type": "string" + }, + "from": { + "type": "string" + }, + "password": { + "type": "string" + }, + "role": { + "type": "string" + }, + "data": { + "type": "object", + "properties": { + "displayName": { + "type": "string" + }, + "photoURL": { + "type": "string" + }, + "email": { + "type": "string" + }, + "settings": { + "type": "object", + "properties": { + "layout": { + "type": "object", + "properties": {} + }, + "theme": { + "type": "object", + "properties": {} + } + } + }, + "shortcuts": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "x-examples": { + "example-1": { + "uid": "XgbuVEXBU5gtSKdbQRP1Zbbby1i1", + "password": "admin", + "role": "admin", + "data": { + "displayName": "Abbott Keitch", + "photoURL": "assets/images/avatars/brian-hughes.jpg", + "email": "admin@fusetheme.com", + "settings": { + "layout": {}, + "theme": {} + }, + "shortcuts": [ + "apps.calendar", + "apps.mailbox", + "apps.contacts" + ] + } + } + } + }, + "profile_photos_videos": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "info": { + "type": "string" + }, + "media": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "title": { + "type": "string" + }, + "preview": { + "type": "string" + } + } + } + } + }, + "x-examples": { + "example-1": { + "id": "1", + "name": "June 2018", + "info": "5 Photos", + "media": [ + { + "type": "photo", + "title": "A Walk Amongst Friends", + "preview": "assets/images/apps/profile/a-walk-amongst-friends-small.jpg" + }, + { + "type": "photo", + "title": "Braies Lake", + "preview": "assets/images/apps/profile/braies-lake-small.jpg" + }, + { + "type": "photo", + "title": "Fall Glow", + "preview": "assets/images/apps/profile/fall-glow-small.jpg" + }, + { + "type": "photo", + "title": "First Snow", + "preview": "assets/images/apps/profile/first-snow-small.jpg" + }, + { + "type": "photo", + "title": "Lago di Braies", + "preview": "assets/images/apps/profile/lago-di-braies-small.jpg" + } + ] + } + } + }, + "profile_timeline": { + "type": "object", + "properties": { + "activities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "user": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "avatar": { + "type": "string" + } + } + }, + "message": { + "type": "string" + }, + "time": { + "type": "string" + } + } + } + }, + "posts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "user": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "avatar": { + "type": "string" + } + } + }, + "message": { + "type": "string" + }, + "time": { + "type": "string" + }, + "type": { + "type": "string" + }, + "like": { + "type": "integer" + }, + "share": { + "type": "integer" + }, + "media": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "preview": { + "type": "string" + } + } + }, + "comments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "user": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "avatar": { + "type": "string" + } + } + }, + "time": { + "type": "string" + }, + "message": { + "type": "string" + } + } + } + }, + "article": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "subtitle": { + "type": "string" + }, + "excerpt": { + "type": "string" + }, + "media": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "preview": { + "type": "string" + } + } + } + } + } + } + } + } + }, + "x-examples": { + "example-1": { + "activities": [ + { + "id": "1", + "user": { + "name": "Bernard Langley", + "avatar": "assets/images/avatars/male-02.jpg" + }, + "message": "started following you.", + "time": "13 mins. ago" + }, + { + "id": "2", + "user": { + "name": "Mclaughlin Steele", + "avatar": "assets/images/avatars/male-03.jpg" + }, + "message": "sent you a message.", + "time": "June 10,2015" + }, + { + "id": "3", + "user": { + "name": "Garry Newman", + "avatar": "assets/images/avatars/male-04.jpg" + }, + "message": "shared a public post with your group.", + "time": "June 9,2015" + }, + { + "id": "4", + "user": { + "name": "Carl Henderson", + "avatar": "assets/images/avatars/male-05.jpg" + }, + "message": "wants to play Fallout Shelter with you.", + "time": "June 8,2015" + }, + { + "id": "5", + "user": { + "name": "Jane Dean", + "avatar": "assets/images/avatars/female-05.jpg" + }, + "message": "started following you.", + "time": "June 7,2015" + }, + { + "id": "6", + "user": { + "name": "Juan Carpenter", + "avatar": "assets/images/avatars/male-07.jpg" + }, + "message": "sent you a message.", + "time": "June 6,2015" + }, + { + "id": "7", + "user": { + "name": "Judith Burton", + "avatar": "assets/images/avatars/female-06.jpg" + }, + "message": "shared a photo with you.", + "time": "June 5,2015" + }, + { + "id": "8", + "user": { + "name": "Vincent Munoz", + "avatar": "assets/images/avatars/male-08.jpg" + }, + "message": "shared a photo with you.", + "time": "June 4,2015" + } + ], + "posts": [ + { + "id": "1", + "user": { + "name": "Garry Newman", + "avatar": "assets/images/avatars/male-09.jpg" + }, + "message": "Remember the place we were talking about the other night? Found it!", + "time": "32 minutes ago", + "type": "post", + "like": 5, + "share": 21, + "media": { + "type": "image", + "preview": "assets/images/cards/14-640x480.jpg" + }, + "comments": [ + { + "id": "1", + "user": { + "name": "Alice Freeman", + "avatar": "assets/images/avatars/female-07.jpg" + }, + "time": "June 10, 2015", + "message": "That’s a wonderful place. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce et eleifend ligula. Fusce posuere in sapien ac facilisis. Etiam sit amet justo non felis ornare feugiat." + } + ] + }, + { + "id": "2", + "user": { + "name": "Andrew Green", + "avatar": "assets/images/avatars/male-11.jpg" + }, + "message": "Hey, man! Check this, it’s pretty awesome!", + "time": "June 12, 2015", + "type": "article", + "like": 98, + "share": 6, + "article": { + "title": "Never stop changing!", + "subtitle": "John Westrock", + "excerpt": "John Westrock's new photo album called 'Never stop changing' is published! It features more than 200 photos that will take you right in.", + "media": { + "type": "image", + "preview": "assets/images/cards/36-640x480.jpg" + } + }, + "comments": [ + { + "id": "1", + "user": { + "name": "Alice Freeman", + "avatar": "assets/images/avatars/female-09.jpg" + }, + "time": "June 10, 2015", + "message": "That’s a wonderful place. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce et eleifend ligula. Fusce posuere in sapien ac facilisis. Etiam sit amet justo non felis ornare feugiat." + } + ] + }, + { + "id": "3", + "user": { + "name": "Carl Henderson", + "avatar": "assets/images/avatars/male-12.jpg" + }, + "message": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce et eleifend ligula. Fusce posuere in sapien ac facilisis. Etiam sit amet justo non felis ornare feugiat. Aenean lorem ex, ultrices sit amet ligula sed...", + "time": "June 10, 2015", + "type": "something", + "like": 4, + "share": 1 + } + ] + } + } + }, + "profile_about": { + "type": "object", + "properties": { + "general": { + "type": "object", + "properties": { + "gender": { + "type": "string" + }, + "birthday": { + "type": "string" + }, + "locations": { + "type": "array", + "items": { + "type": "string" + } + }, + "about": { + "type": "string" + } + } + }, + "work": { + "type": "object", + "properties": { + "occupation": { + "type": "string" + }, + "skills": { + "type": "string" + }, + "jobs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "company": { + "type": "string" + }, + "date": { + "type": "string" + } + } + } + } + } + }, + "contact": { + "type": "object", + "properties": { + "address": { + "type": "string" + }, + "tel": { + "type": "array", + "items": { + "type": "string" + } + }, + "websites": { + "type": "array", + "items": { + "type": "string" + } + }, + "emails": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "groups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "category": { + "type": "string" + }, + "members": { + "type": "string" + } + } + } + }, + "friends": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "avatar": { + "type": "string" + } + } + } + } + }, + "x-examples": { + "example-1": { + "general": { + "gender": "Male", + "birthday": "February 30th, 1974", + "locations": [ + "London, UK", + "New York, USA" + ], + "about": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis eget pharetra felis, sed ullamcorper dui. Sed et elementum neque. Vestibulum pellente viverra ultrices. Etiam justo augue, vehicula ac gravida a, interdum sit amet nisl. Integer vitae nisi id nibh dictum mollis in vitae tortor." + }, + "work": { + "occupation": "Developer", + "skills": "C#, PHP, Javascript, Angular, JS, HTML, CSS", + "jobs": [ + { + "company": "Self-Employed", + "date": "2010 - Now" + }, + { + "company": "Google", + "date": "2008 - 2010" + } + ] + }, + "contact": { + "address": "Ut pharetra luctus est quis sodales. Duis nisi tortor, bibendum eget tincidunt, aliquam ac elit. Mauris nec euismod odio.", + "tel": [ + "+6 555 6600", + "+9 555 5255" + ], + "websites": [ + "withinpixels.com" + ], + "emails": [ + "mail@withinpixels.com", + "mail@creapond.com" + ] + }, + "groups": [ + { + "id": "1", + "name": "Android", + "category": "Technology", + "members": "1.856.546" + }, + { + "id": "2", + "name": "Google", + "category": "Web", + "members": "1.226.121" + }, + { + "id": "3", + "name": "Fallout", + "category": "Games", + "members": "526.142" + } + ], + "friends": [ + { + "id": "1", + "name": "Garry Newman", + "avatar": "assets/images/avatars/male-11.jpg" + }, + { + "id": "2", + "name": "Carl Henderson", + "avatar": "assets/images/avatars/male-12.jpg" + }, + { + "id": "3", + "name": "Jane Dean", + "avatar": "assets/images/avatars/female-11.jpg" + }, + { + "id": "4", + "name": "Garry Arnold", + "avatar": "assets/images/avatars/male-13.jpg" + }, + { + "id": "5", + "name": "Vincent Munoz", + "avatar": "assets/images/avatars/male-14.jpg" + }, + { + "id": "6", + "name": "Alice Freeman", + "avatar": "assets/images/avatars/female-12.jpg" + }, + { + "id": "7", + "name": "Andrew Green", + "avatar": "assets/images/avatars/male-16.jpg" + } + ] + } + } + } + }, + "securitySchemes": {}, + "examples": { + "contacts": { + "value": [ + { + "id": "cd5fa417-b667-482d-b208-798d9da3213c", + "avatar": "assets/images/avatars/male-01.jpg", + "background": "assets/images/cards/14-640x480.jpg", + "name": "Dejesus Michael", + "emails": [ + { + "email": "dejesusmichael@mail.org", + "label": "Personal" + }, + { + "email": "michael.dejesus@vitricomp.io", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "bs", + "phoneNumber": "984 531 2468", + "label": "Mobile" + }, + { + "country": "bs", + "phoneNumber": "806 470 2693", + "label": "Work" + } + ], + "title": "Track Service Worker", + "company": "Vitricomp", + "birthday": "1975-01-10T12:00:00.000Z", + "address": "279 Independence Avenue, Calvary, Guam, PO4127", + "notes": "

Do incididunt cillum duis eu pariatur enim proident minim officia amet proident consequat consequat qui consequat magna magna occaecat aliquip culpa pariatur velit nisi nostrud irure eu ullamco exercitation sint.

Cillum deserunt laborum laborum quis nisi enim et aliquip labore excepteur in excepteur labore amet in ipsum ipsum nostrud deserunt lorem nisi voluptate dolor minim enim ut eu cupidatat enim.

", + "tags": [ + "56ddbd47-4078-4ddd-8448-73c5e88d5f59" + ] + }, + { + "id": "beec5287-ed50-4504-858a-5dc3f8ce6935", + "avatar": null, + "background": null, + "name": "Dena Molina", + "emails": [ + { + "email": "denamolina@mail.us", + "label": "Personal" + }, + { + "email": "molina.dena@envire.tv", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "io", + "phoneNumber": "934 537 3180", + "label": "Mobile" + } + ], + "title": "Weather Analyst", + "company": "Envire", + "birthday": "1994-12-05T12:00:00.000Z", + "address": "856 Woodside Avenue, Alfarata, Iowa, PO4992", + "notes": "

Consequat duis ullamco sint elit pariatur esse dolore nostrud consequat lorem duis sunt veniam ipsum exercitation eiusmod consequat nisi quis voluptate quis officia irure fugiat ex duis eu amet ex.

Irure est nisi dolor culpa sunt nulla irure lorem adipisicing non do consequat deserunt et ea eu non reprehenderit fugiat ex elit nulla sunt quis voluptate enim nulla aliquip veniam.

", + "tags": [ + "56ddbd47-4078-4ddd-8448-73c5e88d5f59" + ] + }, + { + "id": "9d3f0e7f-dcbd-4e56-a5e8-87b8154e9edf", + "avatar": "assets/images/avatars/male-02.jpg", + "background": "assets/images/cards/15-640x480.jpg", + "name": "Bernard Langley", + "emails": [ + { + "email": "bernardlangley@mail.com", + "label": "Personal" + }, + { + "email": "langley.bernard@boilcat.name", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "md", + "phoneNumber": "893 548 2862", + "label": "Mobile" + } + ], + "title": "Electromedical Equipment Technician", + "company": "Boilcat", + "birthday": "1988-05-26T12:00:00.000Z", + "address": "943 Adler Place, Hamilton, South Dakota, PO5592", + "notes": "

Est amet in adipisicing ex excepteur ullamco est lorem adipisicing veniam reprehenderit elit commodo cillum commodo eu officia fugiat id reprehenderit sunt mollit eiusmod dolor fugiat ad do esse aliquip.

Mollit amet adipisicing enim est est commodo sint et eu nulla in laboris ipsum aliqua elit aliqua adipisicing ea nulla nulla consectetur velit laborum labore ullamco eu sit consectetur velit.

", + "tags": [ + "c31e9e5d-e0cb-4574-a13f-8a6ee5ff8309" + ] + }, + { + "id": "42a5da95-5e6d-42fd-a09d-de755d123a47", + "avatar": "assets/images/avatars/male-03.jpg", + "background": "assets/images/cards/16-640x480.jpg", + "name": "Mclaughlin Steele", + "emails": [ + { + "email": "mclaughlinsteele@mail.me", + "label": "Personal" + }, + { + "email": "steele.mclaughlin@accel.info", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "va", + "phoneNumber": "830 484 3813", + "label": "Mobile" + }, + { + "country": "va", + "phoneNumber": "999 475 2789", + "label": "Work" + }, + { + "country": "va", + "phoneNumber": "933 406 3598", + "label": "Home" + } + ], + "company": "Accel", + "birthday": "1968-08-13T12:00:00.000Z", + "address": "334 Sandford Street, Savage, Virgin Islands, PO1858", + "notes": "

Consequat eu aliquip dolor non consequat laborum ad non labore cillum consectetur quis dolore do ea nulla incididunt proident ea eiusmod in do qui eiusmod et irure dolor ea adipisicing.

Reprehenderit occaecat nostrud ad aliquip commodo amet velit id ut minim dolor mollit mollit in eiusmod voluptate lorem nisi labore culpa elit proident laborum ipsum occaecat esse sint nostrud esse.

", + "tags": [ + "56ddbd47-4078-4ddd-8448-73c5e88d5f59" + ] + }, + { + "id": "a7806ced-03f1-4197-8b30-00bdd463366b", + "avatar": "assets/images/avatars/male-04.jpg", + "background": "assets/images/cards/17-640x480.jpg", + "name": "Marsh Cochran", + "emails": [ + { + "email": "marshcochran@mail.biz", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "tz", + "phoneNumber": "864 401 3980", + "label": "Mobile" + }, + { + "country": "tz", + "phoneNumber": "956 546 2589", + "label": "Work" + } + ], + "title": "Fundraising Director", + "company": "Xsports", + "birthday": "1983-12-22T12:00:00.000Z", + "address": "487 Hamilton Walk, Bergoo, American Samoa, PO5616", + "notes": "

Id eiusmod deserunt amet lorem commodo consequat nostrud magna aliquip ex et pariatur labore non elit ad ad nulla culpa reprehenderit enim magna aliqua enim pariatur occaecat sint do lorem.

Adipisicing ut est nulla nisi cupidatat consequat aliqua et esse in voluptate amet eiusmod ut esse ea do irure commodo aute culpa amet consequat id adipisicing et incididunt ut duis.

", + "tags": [ + "2026ce08-d08f-4b4f-9506-b10cdb5b104f" + ] + }, + { + "id": "f4ad15d9-5a24-463a-88ea-6189d6bb3a53", + "avatar": "assets/images/avatars/male-05.jpg", + "background": "assets/images/cards/18-640x480.jpg", + "name": "Parrish Austin", + "emails": [ + { + "email": "parrishaustin@mail.co.uk", + "label": "Personal" + }, + { + "email": "austin.parrish@insource.net", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "lv", + "phoneNumber": "834 426 3574", + "label": "Mobile" + }, + { + "country": "lv", + "phoneNumber": "816 573 3694", + "label": "Work" + }, + { + "country": "lv", + "phoneNumber": "967 515 2009", + "label": "Home" + } + ], + "title": "Motor Winder", + "company": "Insource", + "birthday": "1963-08-24T12:00:00.000Z", + "address": "610 Harbor Lane, Cascades, Minnesota, PO8639", + "notes": "

Cillum enim eiusmod dolor aliqua ipsum exercitation sint aliqua lorem dolore id velit sint velit labore cupidatat minim cupidatat elit est magna eu proident eiusmod non pariatur est esse pariatur.

Sint do enim officia velit pariatur excepteur commodo adipisicing labore elit velit velit id exercitation excepteur veniam reprehenderit sint nulla duis ad incididunt cillum in in labore laboris magna esse.

", + "tags": [ + "c31e9e5d-e0cb-4574-a13f-8a6ee5ff8309" + ] + }, + { + "id": "780d0111-5e5c-4694-8d1d-0ea421971fbf", + "avatar": "assets/images/avatars/female-02.jpg", + "background": "assets/images/cards/19-640x480.jpg", + "name": "Laverne Dodson", + "emails": [ + { + "email": "lavernedodson@mail.ca", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "ar", + "phoneNumber": "964 417 2318", + "label": "Mobile" + }, + { + "country": "ar", + "phoneNumber": "830 410 2506", + "label": "Work" + } + ], + "title": "Television News Producer", + "company": "Lovepad", + "birthday": "1973-09-25T12:00:00.000Z", + "address": "428 Newport Street, Neahkahnie, Arkansas, PO8324", + "notes": "

Incididunt lorem proident est anim amet nulla do nulla ea anim ullamco ea amet voluptate laboris do elit elit consequat in esse in dolor enim irure ut irure ad commodo.

Aliqua dolore nulla sunt ad nostrud aute labore occaecat non amet nulla adipisicing sint eu lorem velit sint do sint adipisicing esse adipisicing anim culpa quis dolor non magna ea.

", + "tags": [ + "a8991c76-2fda-4bbd-a718-df13d6478847" + ] + }, + { + "id": "bf172879-423a-4fd6-8df3-6d1938bbfe1f", + "avatar": "assets/images/avatars/male-06.jpg", + "background": "assets/images/cards/20-640x480.jpg", + "name": "Edwards Mckenzie", + "emails": [ + { + "email": "edwardsmckenzie@mail.org", + "label": "Personal" + }, + { + "email": "mckenzie.edwards@bugsall.io", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "pe", + "phoneNumber": "934 519 2903", + "label": "Mobile" + }, + { + "country": "pe", + "phoneNumber": "989 489 3662", + "label": "Work" + }, + { + "country": "pe", + "phoneNumber": "813 461 2790", + "label": "Home" + } + ], + "title": "Legal Assistant", + "company": "Bugsall", + "birthday": "1988-07-27T12:00:00.000Z", + "address": "384 Polhemus Place, Dalton, Palau, PO6038", + "notes": "

Eu veniam consectetur eiusmod anim sint anim consectetur do consectetur aliqua cillum proident fugiat do in aliqua ipsum id consequat commodo qui officia adipisicing ullamco occaecat laboris proident incididunt exercitation.

Velit ullamco magna aute proident irure ut magna ullamco labore dolor deserunt deserunt tempor fugiat ex ullamco do sunt veniam reprehenderit officia elit duis sint ut proident pariatur est reprehenderit.

", + "tags": [ + "3eaab175-ec0d-4db7-bc3b-efc633c769be" + ] + }, + { + "id": "1eaa3213-ece2-4ba6-8e15-eb36ca388f50", + "avatar": "assets/images/avatars/female-03.jpg", + "background": "assets/images/cards/21-640x480.jpg", + "name": "Trudy Berg", + "emails": [ + { + "email": "trudyberg@mail.us", + "label": "Personal" + }, + { + "email": "berg.trudy@satiance.tv", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "ls", + "phoneNumber": "912 539 2770", + "label": "Mobile" + } + ], + "title": "Meteorologist", + "company": "Satiance", + "birthday": "1989-12-15T12:00:00.000Z", + "address": "945 Jerome Avenue, Riceville, North Carolina, PO1625", + "notes": "

Excepteur ullamco aute aliqua reprehenderit ullamco do anim ut ut veniam et ut et ut commodo aliqua consequat occaecat fugiat dolor labore proident ipsum ad culpa est cillum aliqua reprehenderit.

Amet aliqua sint laboris in aute nostrud voluptate tempor ea tempor laborum tempor culpa dolore aliqua nulla dolore ad enim id cupidatat nostrud nostrud amet non velit id fugiat lorem.

", + "tags": [ + "65930b5a-5d2a-4303-b11f-865d69e6fdb5" + ] + }, + { + "id": "abd9e78b-9e96-428f-b3ff-4d934c401bee", + "avatar": "assets/images/avatars/female-04.jpg", + "background": "assets/images/cards/22-640x480.jpg", + "name": "Elsie Melendez", + "emails": [ + { + "email": "elsiemelendez@mail.com", + "label": "Personal" + }, + { + "email": "melendez.elsie@chillium.name", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "tg", + "phoneNumber": "907 515 3007", + "label": "Mobile" + }, + { + "country": "tg", + "phoneNumber": "967 534 2803", + "label": "Work" + } + ], + "title": "Fundraising Director", + "company": "Chillium", + "birthday": "1980-06-28T12:00:00.000Z", + "address": "428 Varanda Place, Veyo, Oklahoma, PO6188", + "notes": "

Laboris commodo consequat duis dolor ullamco nisi sunt ipsum nisi elit dolore aute sint tempor qui ad sit aliqua laboris consequat dolore aliqua est deserunt irure cillum tempor ut veniam.

Eiusmod nulla ex esse in deserunt consectetur non qui cillum reprehenderit magna sit ipsum lorem aute consequat sint magna id laboris velit adipisicing non ipsum ipsum sint velit ex non.

", + "tags": [ + "3eaab175-ec0d-4db7-bc3b-efc633c769be" + ] + }, + { + "id": "efae92cc-3bd1-4c6a-a395-b6760c69bd55", + "avatar": "assets/images/avatars/male-07.jpg", + "background": "assets/images/cards/23-640x480.jpg", + "name": "Lamb Underwood", + "emails": [ + { + "email": "lambunderwood@mail.me", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "pf", + "phoneNumber": "855 517 2767", + "label": "Mobile" + }, + { + "country": "pf", + "phoneNumber": "906 442 3593", + "label": "Work" + }, + { + "country": "pf", + "phoneNumber": "905 402 2121", + "label": "Home" + } + ], + "title": "Legal Assistant", + "company": "Exotechno", + "birthday": "1990-07-26T12:00:00.000Z", + "address": "609 Greenpoint Avenue, Beason, Vermont, PO5229", + "notes": "

Exercitation tempor laboris dolor deserunt nulla et nisi ullamco minim duis sint nulla sint deserunt irure excepteur nostrud ipsum duis enim sit exercitation eiusmod tempor commodo excepteur mollit cupidatat fugiat.

Deserunt est dolore nulla laborum consequat veniam elit lorem do exercitation incididunt ea ad laboris lorem ipsum ex incididunt nostrud ipsum laborum et nostrud minim aute velit incididunt quis quis.

", + "tags": [ + "3eaab175-ec0d-4db7-bc3b-efc633c769be" + ] + }, + { + "id": "bde636a7-c3d2-4bff-939a-aab11df1516b", + "avatar": null, + "background": null, + "name": "Tessa Valdez", + "emails": [ + { + "email": "tessavaldez@mail.info", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "dz", + "phoneNumber": "892 430 2631", + "label": "Mobile" + }, + { + "country": "dz", + "phoneNumber": "997 525 2354", + "label": "Work" + }, + { + "country": "dz", + "phoneNumber": "907 472 2857", + "label": "Home" + } + ], + "title": "Banker Mason", + "company": "Securia", + "birthday": "1994-01-10T12:00:00.000Z", + "address": "183 Crosby Avenue, Blanco, Mississippi, PO3463", + "notes": "

Mollit qui amet in esse ipsum nostrud cupidatat occaecat proident aliquip non mollit commodo ex labore enim culpa dolor aute occaecat cillum sit excepteur tempor culpa nostrud nulla qui commodo.

Labore nulla id excepteur non velit adipisicing tempor reprehenderit cillum sint do consectetur laboris ut proident pariatur quis aute ad dolor quis labore labore nostrud sunt elit proident enim aliqua.

", + "tags": [ + "cbde2486-5033-4e09-838e-e901b108cd41" + ] + }, + { + "id": "6519600a-5eaa-45f8-8bed-c46fddb3b26a", + "avatar": "assets/images/avatars/male-08.jpg", + "background": "assets/images/cards/24-640x480.jpg", + "name": "Mcleod Wagner", + "emails": [ + { + "email": "mcleodwagner@mail.biz", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "at", + "phoneNumber": "977 590 2773", + "label": "Mobile" + }, + { + "country": "at", + "phoneNumber": "828 496 3813", + "label": "Work" + }, + { + "country": "at", + "phoneNumber": "831 432 2512", + "label": "Home" + } + ], + "company": "Inrt", + "birthday": "1980-12-03T12:00:00.000Z", + "address": "736 Glen Street, Kaka, West Virginia, PO9350", + "notes": "

Laboris consequat est anim quis quis eiusmod ipsum non quis fugiat anim culpa non elit mollit pariatur veniam nisi irure velit dolore dolor proident nisi deserunt culpa nisi et laborum.

Eiusmod eu esse ipsum voluptate excepteur ipsum et proident cupidatat sint sunt aliquip lorem culpa esse et dolor fugiat sit est id consectetur sint et ea pariatur occaecat nulla irure.

", + "tags": [ + "56ddbd47-4078-4ddd-8448-73c5e88d5f59" + ] + }, + { + "id": "6d80a6f6-2884-4ac4-9c73-06b82c220017", + "avatar": "assets/images/avatars/female-06.jpg", + "background": "assets/images/cards/25-640x480.jpg", + "name": "Kristie Hall", + "emails": [ + { + "email": "kristiehall@mail.co.uk", + "label": "Personal" + }, + { + "email": "hall.kristie@austech.net", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "tn", + "phoneNumber": "841 530 3641", + "label": "Mobile" + }, + { + "country": "tn", + "phoneNumber": "941 410 3743", + "label": "Work" + }, + { + "country": "tn", + "phoneNumber": "938 599 3850", + "label": "Home" + } + ], + "title": "Electromedical Equipment Technician", + "company": "Austech", + "birthday": "1975-08-31T12:00:00.000Z", + "address": "547 Revere Place, Hoehne, New Hampshire, PO2125", + "notes": "

Duis incididunt minim nisi sit qui dolor aliquip quis ipsum id amet occaecat sit ullamco minim velit est eiusmod anim proident consectetur non reprehenderit ea reprehenderit dolore in nisi eiusmod.

Ut commodo aliqua non ut proident velit et commodo voluptate eu mollit dolor veniam ipsum velit aute esse est adipisicing id aliqua nostrud nostrud nisi enim officia eiusmod in enim.

", + "tags": [ + "56ddbd47-4078-4ddd-8448-73c5e88d5f59" + ] + }, + { + "id": "35190d23-036e-44ef-b545-cc744c626edd", + "avatar": "assets/images/avatars/female-07.jpg", + "background": "assets/images/cards/26-640x480.jpg", + "name": "Shannon Kennedy", + "emails": [ + { + "email": "shannonkennedy@mail.ca", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "gb", + "phoneNumber": "899 508 2992", + "label": "Mobile" + }, + { + "country": "gb", + "phoneNumber": "834 499 3354", + "label": "Work" + }, + { + "country": "gb", + "phoneNumber": "834 526 3388", + "label": "Home" + } + ], + "title": "Gas Meter Mechanic", + "company": "Eventix", + "birthday": "1994-09-07T12:00:00.000Z", + "address": "480 Chase Court, Edinburg, Kansas, PO5357", + "notes": "

Lorem ex amet anim anim qui consequat ullamco consectetur et voluptate in velit dolore culpa pariatur amet enim ut non magna duis qui excepteur esse ullamco velit fugiat aute dolor.

Reprehenderit ullamco veniam sit laborum nulla sunt excepteur eiusmod anim eu ullamco tempor est qui adipisicing sit fugiat voluptate minim non incididunt quis ipsum et exercitation officia laborum incididunt nostrud.

", + "tags": [ + "a8991c76-2fda-4bbd-a718-df13d6478847" + ] + }, + { + "id": "b018c194-68ec-4915-ab56-e9f3bd2d98db", + "avatar": "assets/images/avatars/female-08.jpg", + "background": "assets/images/cards/27-640x480.jpg", + "name": "Martha Swanson", + "emails": [ + { + "email": "marthaswanson@mail.org", + "label": "Personal" + }, + { + "email": "swanson.martha@sequitur.io", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "gb", + "phoneNumber": "844 480 3309", + "label": "Mobile" + }, + { + "country": "gb", + "phoneNumber": "981 591 3239", + "label": "Work" + }, + { + "country": "gb", + "phoneNumber": "923 484 3147", + "label": "Home" + } + ], + "title": "Short Story Writer", + "company": "Sequitur", + "birthday": "1993-12-31T12:00:00.000Z", + "address": "595 Howard Place, Convent, Rhode Island, PO6993", + "notes": "

Lorem nostrud cillum non cillum nisi eu labore anim ipsum consequat consectetur sunt ipsum ipsum ad culpa laborum in ea exercitation quis voluptate velit id elit labore cillum cillum consectetur.

Ullamco ullamco nostrud aute pariatur nulla officia proident magna laborum dolor reprehenderit ullamco in reprehenderit veniam aliqua elit magna voluptate amet ut minim in labore irure culpa consequat sit pariatur.

", + "tags": [ + "a8991c76-2fda-4bbd-a718-df13d6478847" + ] + }, + { + "id": "b7c355e9-e003-467e-82d2-4f6978c1a696", + "avatar": "assets/images/avatars/female-09.jpg", + "background": "assets/images/cards/28-640x480.jpg", + "name": "Jacklyn Morgan", + "emails": [ + { + "email": "jacklynmorgan@mail.us", + "label": "Personal" + }, + { + "email": "morgan.jacklyn@shopabout.tv", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "so", + "phoneNumber": "974 542 2061", + "label": "Mobile" + } + ], + "title": "Animal Sitter", + "company": "Shopabout", + "birthday": "1976-09-30T12:00:00.000Z", + "address": "971 Conover Street, Statenville, Louisiana, PO6622", + "notes": "

Pariatur fugiat labore aliquip aute in adipisicing veniam et consequat magna nulla laboris eiusmod eu esse cupidatat ipsum amet sint est anim lorem consequat eiusmod sit aliquip consequat nisi duis.

Est esse excepteur non amet reprehenderit cillum ullamco ex excepteur laboris excepteur dolor magna enim consequat lorem commodo ipsum elit ea veniam non quis id nisi esse tempor enim ut.

", + "tags": [ + "3eaab175-ec0d-4db7-bc3b-efc633c769be" + ] + }, + { + "id": "cfa07b7c-93d1-42e7-9592-493d9efc78ae", + "avatar": "assets/images/avatars/female-10.jpg", + "background": "assets/images/cards/29-640x480.jpg", + "name": "Tonya Bowers", + "emails": [ + { + "email": "tonyabowers@mail.com", + "label": "Personal" + }, + { + "email": "bowers.tonya@tourmania.name", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "tv", + "phoneNumber": "922 585 2914", + "label": "Mobile" + }, + { + "country": "tv", + "phoneNumber": "913 538 2961", + "label": "Work" + } + ], + "title": "Track Service Worker", + "company": "Tourmania", + "birthday": "1976-06-14T12:00:00.000Z", + "address": "197 Marconi Place, Welda, Delaware, PO6061", + "notes": "

Aliqua ea dolor est enim ipsum esse pariatur tempor nulla excepteur aliquip irure fugiat reprehenderit adipisicing ex tempor proident voluptate dolore ea dolore nostrud id incididunt culpa in do occaecat.

Aute fugiat magna velit enim in duis duis elit ipsum excepteur reprehenderit do ipsum qui cillum aliquip ut occaecat do ea et adipisicing cupidatat voluptate non elit ad aliqua ad.

", + "tags": [ + "2026ce08-d08f-4b4f-9506-b10cdb5b104f" + ] + }, + { + "id": "00feeb63-c83a-4655-a37e-a07da10cfa1c", + "avatar": "assets/images/avatars/female-11.jpg", + "background": "assets/images/cards/30-640x480.jpg", + "name": "Latonya Cruz", + "emails": [ + { + "email": "latonyacruz@mail.me", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "tm", + "phoneNumber": "981 508 2080", + "label": "Mobile" + }, + { + "country": "tm", + "phoneNumber": "817 425 2052", + "label": "Work" + }, + { + "country": "tm", + "phoneNumber": "939 434 3805", + "label": "Home" + } + ], + "title": "Motor Winder", + "company": "Zilch", + "birthday": "1967-11-28T12:00:00.000Z", + "address": "775 Dahill Road, Iberia, California, PO2169", + "notes": "

Ut occaecat tempor deserunt proident enim ex ullamco ex aliquip mollit aute reprehenderit in occaecat anim aliquip ea laboris anim laboris do non aute aute ea laboris magna sunt sit.

Ullamco in in minim culpa eiusmod amet consequat consequat magna nisi cillum occaecat irure officia voluptate et eu duis officia nostrud culpa non eiusmod anim sint et anim enim voluptate.

", + "tags": [ + "c31e9e5d-e0cb-4574-a13f-8a6ee5ff8309" + ] + }, + { + "id": "142abf21-e635-4a7d-9330-e57f66adcdbe", + "avatar": "assets/images/avatars/female-12.jpg", + "background": "assets/images/cards/31-640x480.jpg", + "name": "Evangelina Mcclain", + "emails": [ + { + "email": "evangelinamcclain@mail.info", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "ck", + "phoneNumber": "992 583 3187", + "label": "Mobile" + }, + { + "country": "ck", + "phoneNumber": "881 472 3297", + "label": "Work" + }, + { + "country": "ck", + "phoneNumber": "846 477 3596", + "label": "Home" + } + ], + "title": "Congressional Representative", + "company": "Straloy", + "birthday": "1976-02-15T12:00:00.000Z", + "address": "305 Columbia Street, Dupuyer, Puerto Rico, PO8744", + "notes": "

Proident nulla culpa magna nostrud do aliqua ullamco sit culpa ullamco eu amet culpa laborum enim fugiat non ad quis esse pariatur exercitation lorem incididunt exercitation aliquip labore minim adipisicing.

Sint ea voluptate tempor irure consequat aute laboris exercitation id minim voluptate aliquip tempor occaecat elit incididunt laboris enim labore sit aute sunt cillum ipsum ad laboris nostrud dolor excepteur.

", + "tags": [ + "2026ce08-d08f-4b4f-9506-b10cdb5b104f" + ] + }, + { + "id": "e4f255a3-b5dd-45a7-975f-c399604a399a", + "avatar": "assets/images/avatars/male-09.jpg", + "background": "assets/images/cards/32-640x480.jpg", + "name": "Herring Gonzales", + "emails": [ + { + "email": "herringgonzales@mail.biz", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "ai", + "phoneNumber": "995 411 2513", + "label": "Mobile" + }, + { + "country": "ai", + "phoneNumber": "839 492 2760", + "label": "Work" + } + ], + "title": "Gas Meter Mechanic", + "company": "Cubix", + "birthday": "1995-02-16T12:00:00.000Z", + "address": "195 Brooklyn Road, Jeff, Marshall Islands, PO2943", + "notes": "

Ex nulla nisi do cillum consequat amet incididunt eu minim eu ut excepteur ad anim minim aliquip ullamco fugiat labore esse aliquip ea incididunt incididunt nisi officia consectetur dolore minim.

Et dolor consectetur anim deserunt laborum eu lorem et in nisi et officia nostrud fugiat deserunt aute irure ullamco officia fugiat voluptate exercitation ut deserunt officia nostrud tempor velit pariatur.

", + "tags": [ + "56ddbd47-4078-4ddd-8448-73c5e88d5f59" + ] + }, + { + "id": "ab4f712d-d712-41a8-b567-be4c66c349a3", + "avatar": "assets/images/avatars/female-13.jpg", + "background": "assets/images/cards/33-640x480.jpg", + "name": "Alyce Cash", + "emails": [ + { + "email": "alycecash@mail.co.uk", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "ht", + "phoneNumber": "969 499 3077", + "label": "Mobile" + }, + { + "country": "ht", + "phoneNumber": "907 513 2784", + "label": "Work" + } + ], + "title": "Weather Analyst", + "company": "Qnekt", + "birthday": "1973-12-19T12:00:00.000Z", + "address": "964 Henry Street, Eureka, Indiana, PO1035", + "notes": "

Non proident pariatur nostrud dolor incididunt occaecat amet officia sunt magna anim dolor labore culpa ut laborum id incididunt officia amet mollit anim ea proident laboris non incididunt incididunt sint.

Nulla minim consectetur nostrud magna anim irure consectetur labore cupidatat laborum reprehenderit et et adipisicing in qui elit ipsum reprehenderit esse nisi non ipsum exercitation sunt eu elit velit fugiat.

", + "tags": [ + "c31e9e5d-e0cb-4574-a13f-8a6ee5ff8309" + ] + }, + { + "id": "5d067800-c301-46c6-a7f7-28dc89d9a554", + "avatar": null, + "background": null, + "name": "Kristine Pacheco", + "emails": [ + { + "email": "kristinepacheco@mail.net", + "label": "Personal" + }, + { + "email": "pacheco.kristine@vurbo.ca", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "mm", + "phoneNumber": "977 516 2492", + "label": "Mobile" + } + ], + "title": "Short Story Writer", + "company": "Vurbo", + "birthday": "1985-10-22T12:00:00.000Z", + "address": "622 Dodworth Street, Rose, Arizona, PO9530", + "notes": "

Lorem laboris excepteur magna pariatur occaecat voluptate pariatur cillum exercitation anim enim elit laborum reprehenderit laboris ad velit ut ipsum irure id ullamco minim sint ipsum occaecat esse tempor ea.

Pariatur non labore cillum consectetur aute voluptate sint adipisicing nisi laborum culpa nisi elit et amet dolor incididunt velit ex laboris ea reprehenderit eiusmod qui esse veniam labore ea sit.

", + "tags": [ + "2026ce08-d08f-4b4f-9506-b10cdb5b104f" + ] + }, + { + "id": "c500255a-1173-47d0-a0e4-4944d48fc12a", + "avatar": "assets/images/avatars/male-10.jpg", + "background": "assets/images/cards/34-640x480.jpg", + "name": "English Haney", + "emails": [ + { + "email": "englishhaney@mail.org", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "lb", + "phoneNumber": "989 567 3834", + "label": "Mobile" + } + ], + "title": "Meteorologist", + "company": "Photobin", + "birthday": "1969-09-05T12:00:00.000Z", + "address": "579 Pooles Lane, Belleview, Montana, PO4106", + "notes": "

Incididunt labore sunt ullamco in deserunt dolore labore voluptate adipisicing eu id duis eiusmod elit ea ad cillum culpa excepteur labore fugiat excepteur ea culpa labore sit id dolor ullamco.

Eu eu ex dolore proident nostrud et minim lorem nulla lorem nulla duis velit voluptate nisi cillum anim minim amet dolore officia id cillum in cupidatat ipsum veniam velit dolor.

", + "tags": [ + "56ddbd47-4078-4ddd-8448-73c5e88d5f59" + ] + }, + { + "id": "b62359fd-f2a8-46e6-904e-31052d1cd675", + "avatar": "assets/images/avatars/male-11.jpg", + "background": "assets/images/cards/35-640x480.jpg", + "name": "Joseph Strickland", + "emails": [ + { + "email": "josephstrickland@mail.io", + "label": "Personal" + }, + { + "email": "strickland.joseph@bytrex.us", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "jo", + "phoneNumber": "990 450 2729", + "label": "Mobile" + } + ], + "title": "Hotel Manager", + "company": "Bytrex", + "birthday": "1991-09-08T12:00:00.000Z", + "address": "844 Ellery Street, Hondah, Texas, PO1272", + "notes": "

Excepteur consequat magna laborum dolore ut laborum ea excepteur ad officia mollit exercitation sunt tempor amet ex ipsum aliquip cillum mollit amet laborum voluptate ipsum sit esse duis eiusmod adipisicing.

Non tempor ad pariatur adipisicing excepteur est pariatur aute et velit lorem ut est eu voluptate pariatur ea consectetur excepteur sunt reprehenderit id irure aliqua tempor anim id voluptate culpa.

", + "tags": [ + "3eaab175-ec0d-4db7-bc3b-efc633c769be" + ] + }, + { + "id": "16b9e696-ea95-4dd8-86c4-3caf705a1dc6", + "avatar": "assets/images/avatars/male-12.jpg", + "background": "assets/images/cards/36-640x480.jpg", + "name": "Nunez Faulkner", + "emails": [ + { + "email": "nunezfaulkner@mail.tv", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "xk", + "phoneNumber": "909 552 3327", + "label": "Mobile" + } + ], + "title": "Hotel Manager", + "company": "Buzzopia", + "birthday": "1982-01-23T12:00:00.000Z", + "address": "614 Herkimer Court, Darrtown, Nebraska, PO9308", + "notes": "

Culpa labore ullamco veniam est ullamco ipsum culpa excepteur esse esse aliqua nulla ullamco nulla amet consequat tempor aute exercitation do eu do ullamco elit excepteur est anim nisi excepteur.

Cillum eiusmod cupidatat officia ipsum ullamco adipisicing cillum adipisicing sint exercitation non enim consectetur est esse tempor fugiat sit eiusmod in exercitation enim quis duis dolor amet consequat pariatur dolor.

", + "tags": [ + "a8991c76-2fda-4bbd-a718-df13d6478847" + ] + }, + { + "id": "19662ecf-0686-4aad-a46c-24b552eb2ff5", + "avatar": "assets/images/avatars/female-15.jpg", + "background": "assets/images/cards/14-640x480.jpg", + "name": "Juana Morrow", + "emails": [ + { + "email": "juanamorrow@mail.com", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "ee", + "phoneNumber": "868 438 3943", + "label": "Mobile" + } + ], + "title": "Meteorologist", + "company": "Lyria", + "birthday": "1992-03-29T12:00:00.000Z", + "address": "663 Drew Street, Juntura, Georgia, PO9857", + "notes": "

Mollit et amet qui incididunt officia anim est in consectetur qui anim qui labore ea mollit veniam adipisicing ex magna commodo mollit adipisicing sunt commodo laboris labore aliquip deserunt est.

Cupidatat ut cillum anim reprehenderit ea magna enim fugiat proident anim esse lorem lorem commodo cupidatat pariatur qui commodo nulla aliqua nisi labore in adipisicing minim excepteur do eu amet.

", + "tags": [ + "cbde2486-5033-4e09-838e-e901b108cd41" + ] + }, + { + "id": "26dfe954-8bf3-45ee-b285-1d0a88c8d3ea", + "avatar": "assets/images/avatars/male-13.jpg", + "background": "assets/images/cards/15-640x480.jpg", + "name": "Lara Gaines", + "emails": [ + { + "email": "laragaines@mail.name", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "mr", + "phoneNumber": "891 498 2043", + "label": "Mobile" + } + ], + "title": "Electromedical Equipment Technician", + "company": "Acruex", + "birthday": "1961-06-07T12:00:00.000Z", + "address": "762 Troutman Street, Drummond, Oregon, PO6973", + "notes": "

Laboris dolor incididunt eiusmod deserunt officia labore eu est nulla velit id ex veniam qui fugiat velit irure reprehenderit dolor proident aliquip culpa nisi magna occaecat do nostrud cillum lorem.

Sit consequat laboris culpa quis laborum lorem ullamco occaecat labore duis ea et consequat pariatur reprehenderit excepteur excepteur exercitation sunt enim amet adipisicing laborum incididunt dolor aliquip culpa ea laboris.

", + "tags": [ + "65930b5a-5d2a-4303-b11f-865d69e6fdb5" + ] + }, + { + "id": "d6462af2-c488-4de7-9b26-3845bd2983f9", + "avatar": "assets/images/avatars/male-14.jpg", + "background": "assets/images/cards/16-640x480.jpg", + "name": "Johnston Riddle", + "emails": [ + { + "email": "johnstonriddle@mail.me", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "bt", + "phoneNumber": "979 541 2691", + "label": "Mobile" + }, + { + "country": "bt", + "phoneNumber": "909 407 3887", + "label": "Work" + }, + { + "country": "bt", + "phoneNumber": "864 557 3128", + "label": "Home" + } + ], + "title": "Hotel Manager", + "company": "Xleen", + "birthday": "1972-09-13T12:00:00.000Z", + "address": "674 Bryant Street, Grahamtown, Federated States Of Micronesia, PO2757", + "notes": "

Velit consequat elit anim qui eu elit aliquip consectetur aliqua cupidatat lorem laboris dolor qui ad laborum adipisicing adipisicing consequat et nostrud ullamco consequat dolore deserunt irure do aliquip non.

Ipsum commodo voluptate qui ex ullamco amet do ex dolore quis cupidatat ut anim sunt dolore excepteur anim do dolor aliqua ex aute esse eiusmod sint laborum consequat laboris cillum.

", + "tags": [ + "a8991c76-2fda-4bbd-a718-df13d6478847" + ] + }, + { + "id": "a1723c04-69fe-4573-a135-6645658afe76", + "avatar": null, + "background": null, + "name": "Vargas Gardner", + "emails": [ + { + "email": "vargasgardner@mail.info", + "label": "Personal" + }, + { + "email": "gardner.vargas@cosmosis.biz", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "bi", + "phoneNumber": "855 456 2754", + "label": "Mobile" + } + ], + "title": "Bindery Machine Operator", + "company": "Cosmosis", + "birthday": "1979-10-21T12:00:00.000Z", + "address": "869 Seton Place, Chemung, Maine, PO8109", + "notes": "

Amet non anim ex ullamco pariatur ullamco laboris eiusmod ut magna nisi amet incididunt sunt anim nisi qui ut ex sunt adipisicing consequat deserunt qui mollit duis anim quis veniam.

Magna ut id duis qui ea proident quis officia lorem commodo et et proident dolore qui quis incididunt nulla incididunt ut aliqua veniam est adipisicing adipisicing reprehenderit ad velit incididunt.

", + "tags": [ + "cbde2486-5033-4e09-838e-e901b108cd41" + ] + }, + { + "id": "823e6166-c0c8-4373-9270-8a0d17489a08", + "avatar": "assets/images/avatars/male-16.jpg", + "background": "assets/images/cards/17-640x480.jpg", + "name": "Mccall Day", + "emails": [ + { + "email": "mccallday@mail.co.uk", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "se", + "phoneNumber": "993 504 3286", + "label": "Mobile" + }, + { + "country": "se", + "phoneNumber": "924 434 2238", + "label": "Work" + }, + { + "country": "se", + "phoneNumber": "816 466 2634", + "label": "Home" + } + ], + "title": "Historiographer", + "company": "Nipaz", + "birthday": "1964-03-05T12:00:00.000Z", + "address": "854 Hanover Place, Harleigh, New Jersey, PO9459", + "notes": "

Ea occaecat nisi cillum officia in velit ipsum reprehenderit ex fugiat fugiat ad velit pariatur ullamco sint in elit quis aute id cupidatat nostrud quis culpa aliquip id officia excepteur.

Ea ut consequat sit ullamco do pariatur quis officia ad ipsum quis nisi in nulla incididunt esse pariatur amet qui ullamco consectetur dolor voluptate sit qui mollit reprehenderit reprehenderit amet.

", + "tags": [ + "65930b5a-5d2a-4303-b11f-865d69e6fdb5" + ] + }, + { + "id": "2c37ed00-427a-46d7-8f8f-d711c768d1ee", + "avatar": "assets/images/avatars/male-17.jpg", + "background": "assets/images/cards/18-640x480.jpg", + "name": "Silva Foster", + "emails": [ + { + "email": "silvafoster@mail.net", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "bn", + "phoneNumber": "916 511 3837", + "label": "Mobile" + }, + { + "country": "bn", + "phoneNumber": "949 564 3247", + "label": "Work" + } + ], + "title": "Insurance Analyst", + "company": "Extrawear", + "birthday": "1980-04-29T12:00:00.000Z", + "address": "137 Bridge Street, Sisquoc, District Of Columbia, PO4105", + "notes": "

Ipsum velit est do velit do deserunt cupidatat officia duis laborum veniam sunt in ex reprehenderit esse ex ad aute anim duis ut sunt reprehenderit occaecat ut nostrud eu minim.

Aliqua consequat adipisicing adipisicing aliquip voluptate fugiat eu amet nostrud id proident non nisi fugiat velit nostrud ea officia non laboris magna cillum exercitation culpa eiusmod mollit fugiat et lorem.

", + "tags": [ + "cbde2486-5033-4e09-838e-e901b108cd41" + ] + }, + { + "id": "944764c0-b261-4428-9188-bbd3022d66a8", + "avatar": "assets/images/avatars/female-16.jpg", + "background": "assets/images/cards/19-640x480.jpg", + "name": "Cathryn Snider", + "emails": [ + { + "email": "cathrynsnider@mail.ca", + "label": "Personal" + }, + { + "email": "snider.cathryn@phormula.org", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "na", + "phoneNumber": "896 471 3036", + "label": "Mobile" + }, + { + "country": "na", + "phoneNumber": "851 491 3567", + "label": "Work" + }, + { + "country": "na", + "phoneNumber": "805 487 2016", + "label": "Home" + } + ], + "title": "Short Story Writer", + "company": "Phormula", + "birthday": "1981-06-09T12:00:00.000Z", + "address": "528 Glenmore Avenue, Elrama, Illinois, PO2952", + "notes": "

Ea enim exercitation lorem excepteur officia nulla culpa culpa nisi veniam quis non duis exercitation labore commodo et occaecat reprehenderit ex velit exercitation commodo cupidatat amet veniam mollit magna consectetur.

Voluptate consectetur eu id eiusmod anim reprehenderit incididunt duis veniam tempor cillum ea esse tempor do laborum dolore sint ea duis incididunt in do aliqua voluptate incididunt officia excepteur do.

", + "tags": [ + "56ddbd47-4078-4ddd-8448-73c5e88d5f59" + ] + }, + { + "id": "f2b3c756-5ad2-4d4b-aee5-b32c91457128", + "avatar": null, + "background": null, + "name": "Mooney Cantrell", + "emails": [ + { + "email": "mooneycantrell@mail.io", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "bh", + "phoneNumber": "915 577 3020", + "label": "Mobile" + }, + { + "country": "bh", + "phoneNumber": "923 431 3594", + "label": "Work" + } + ], + "title": "Fundraising Director", + "company": "Crustatia", + "birthday": "1968-12-07T12:00:00.000Z", + "address": "277 Coventry Road, Fairforest, Nevada, PO6031", + "notes": "

Lorem mollit dolore nostrud sunt id anim veniam labore duis eiusmod duis fugiat aliqua occaecat do labore culpa consectetur consectetur sunt amet tempor incididunt tempor esse sunt id elit non.

Laborum mollit ullamco quis ad culpa nisi sit nisi veniam minim adipisicing sint eiusmod velit amet minim aliquip nulla eiusmod nulla laboris quis proident in adipisicing aute et ea anim.

", + "tags": [ + "2026ce08-d08f-4b4f-9506-b10cdb5b104f" + ] + }, + { + "id": "54b1c201-4b2b-4be0-ad70-a6413e9628cd", + "avatar": "assets/images/avatars/female-17.jpg", + "background": "assets/images/cards/20-640x480.jpg", + "name": "Saundra Murphy", + "emails": [ + { + "email": "saundramurphy@mail.us", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "mt", + "phoneNumber": "902 529 2999", + "label": "Mobile" + } + ], + "title": "Dental Laboratory Worker", + "company": "Zilencio", + "birthday": "1983-11-07T12:00:00.000Z", + "address": "557 Monroe Street, Mayfair, Maryland, PO7200", + "notes": "

Fugiat mollit sunt aliquip consectetur ipsum ut aliqua id ex laboris labore id elit nulla irure id aute pariatur do officia proident eiusmod proident reprehenderit dolor non dolor laborum nulla.

Pariatur reprehenderit incididunt voluptate enim aliqua laborum anim veniam pariatur irure exercitation non dolore velit et ex culpa lorem ipsum mollit eu sint duis aliquip elit amet consectetur velit minim.

", + "tags": [ + "56ddbd47-4078-4ddd-8448-73c5e88d5f59" + ] + }, + { + "id": "faf979c7-a13b-445a-b30a-08845f5fa90e", + "avatar": "assets/images/avatars/female-18.jpg", + "background": "assets/images/cards/21-640x480.jpg", + "name": "Enid Sparks", + "emails": [ + { + "email": "enidsparks@mail.tv", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "bh", + "phoneNumber": "813 410 3258", + "label": "Mobile" + }, + { + "country": "bh", + "phoneNumber": "877 501 2767", + "label": "Work" + } + ], + "title": "Historiographer", + "company": "Skybold", + "birthday": "1984-05-04T12:00:00.000Z", + "address": "219 Village Court, Keyport, Alabama, PO7776", + "notes": "

Velit enim anim est aliqua consequat exercitation velit quis magna est incididunt ipsum minim minim nulla adipisicing ad eiusmod id veniam eiusmod sit elit est pariatur velit ea laborum anim.

Ad lorem ea nisi irure id consequat ullamco nisi nostrud dolore officia ipsum veniam velit minim pariatur culpa culpa esse minim adipisicing sit labore commodo aute excepteur non do in.

", + "tags": [ + "cbde2486-5033-4e09-838e-e901b108cd41" + ] + }, + { + "id": "2bfa2be5-7688-48d5-b5ac-dc0d9ac97f14", + "avatar": null, + "background": null, + "name": "Nadia Mcknight", + "emails": [ + { + "email": "nadiamcknight@mail.com", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "tk", + "phoneNumber": "943 511 2203", + "label": "Mobile" + }, + { + "country": "tk", + "phoneNumber": "817 578 2993", + "label": "Work" + } + ], + "title": "Legal Assistant", + "company": "Pearlesex", + "birthday": "1973-10-06T12:00:00.000Z", + "address": "448 Berriman Street, Reinerton, Washington, PO6704", + "notes": "

Esse sint lorem exercitation velit tempor tempor voluptate nulla proident excepteur magna tempor consectetur aliquip qui nisi mollit cupidatat est adipisicing ipsum sint et excepteur sit labore velit dolore labore.

Duis nisi adipisicing lorem do excepteur magna consequat labore magna ut consectetur eu enim occaecat id nulla laboris minim officia est id nisi mollit ullamco irure ut dolore esse aliqua.

", + "tags": [ + "cbde2486-5033-4e09-838e-e901b108cd41" + ] + }, + { + "id": "77a4383b-b5a5-4943-bc46-04c3431d1566", + "avatar": "assets/images/avatars/male-19.jpg", + "background": "assets/images/cards/22-640x480.jpg", + "name": "Best Blackburn", + "emails": [ + { + "email": "bestblackburn@mail.name", + "label": "Personal" + }, + { + "email": "blackburn.best@beadzza.me", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "gl", + "phoneNumber": "814 498 3701", + "label": "Mobile" + } + ], + "title": "Hotel Manager", + "company": "Beadzza", + "birthday": "1987-06-07T12:00:00.000Z", + "address": "578 Tampa Court, Wescosville, Ohio, PO4108", + "notes": "

Lorem do deserunt nulla nostrud incididunt et laboris labore eu nisi ut ullamco veniam deserunt do non labore commodo amet aliquip exercitation ea occaecat amet non eiusmod ut minim fugiat.

Esse eu ex irure pariatur qui cillum labore nulla quis officia consequat commodo consequat fugiat culpa nostrud labore eu adipisicing magna irure aliquip est amet irure eiusmod esse reprehenderit mollit.

", + "tags": [ + "3eaab175-ec0d-4db7-bc3b-efc633c769be" + ] + }, + { + "id": "8bb0f597-673a-47ca-8c77-2f83219cb9af", + "avatar": null, + "background": null, + "name": "Duncan Carver", + "emails": [ + { + "email": "duncancarver@mail.info", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "jm", + "phoneNumber": "968 547 2111", + "label": "Mobile" + }, + { + "country": "jm", + "phoneNumber": "968 433 3120", + "label": "Work" + }, + { + "country": "jm", + "phoneNumber": "905 425 2777", + "label": "Home" + } + ], + "title": "Historiographer", + "company": "Hotcakes", + "birthday": "1980-09-15T12:00:00.000Z", + "address": "931 Bristol Street, Why, South Carolina, PO9700", + "notes": "

Dolore laboris aute officia reprehenderit cupidatat aliquip duis labore aliquip officia est nostrud nisi voluptate eiusmod ad aute et ea cillum aliqua elit ipsum officia cillum laborum minim labore sit.

Exercitation labore ut pariatur occaecat ullamco non occaecat aliqua amet nostrud aliquip ipsum ad do ullamco enim laborum commodo minim elit ut quis laboris elit laborum proident sunt ullamco sit.

", + "tags": [ + "56ddbd47-4078-4ddd-8448-73c5e88d5f59" + ] + }, + { + "id": "c318e31f-1d74-49c5-8dae-2bc5805e2fdb", + "avatar": "assets/images/avatars/male-01.jpg", + "background": "assets/images/cards/23-640x480.jpg", + "name": "Martin Richards", + "emails": [ + { + "email": "martinrichards@mail.biz", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "mg", + "phoneNumber": "902 500 2668", + "label": "Mobile" + }, + { + "country": "mg", + "phoneNumber": "947 559 2919", + "label": "Work" + }, + { + "country": "mg", + "phoneNumber": "934 434 3768", + "label": "Home" + } + ], + "title": "Dental Laboratory Worker", + "company": "Overfork", + "birthday": "1977-04-12T12:00:00.000Z", + "address": "268 Hutchinson Court, Drytown, Florida, PO3041", + "notes": "

Eu ipsum nisi eu lorem cupidatat mollit exercitation elit ea culpa enim qui culpa ad aliqua exercitation tempor nulla excepteur fugiat ipsum quis amet occaecat adipisicing ullamco duis dolore occaecat.

Non eu et elit ea labore lorem adipisicing voluptate incididunt ut officia aute minim incididunt lorem qui adipisicing mollit magna nisi consectetur cillum sit exercitation eiusmod qui eu nisi sunt.

", + "tags": [ + "a8991c76-2fda-4bbd-a718-df13d6478847" + ] + }, + { + "id": "0a8bc517-631a-4a93-aacc-000fa2e8294c", + "avatar": "assets/images/avatars/female-20.jpg", + "background": "assets/images/cards/24-640x480.jpg", + "name": "Candice Munoz", + "emails": [ + { + "email": "candicemunoz@mail.co.uk", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "fm", + "phoneNumber": "838 562 2769", + "label": "Mobile" + } + ], + "title": "Legal Assistant", + "company": "Eclipto", + "birthday": "1976-09-09T12:00:00.000Z", + "address": "946 Remsen Street, Caroline, New Mexico, PO3247", + "notes": "

Amet dolore elit irure in commodo in et eu eu nulla labore elit sunt et nisi quis officia nostrud et mollit dolor aute fugiat sunt reprehenderit quis sint minim ipsum.

Laboris ut sunt nisi aute incididunt reprehenderit mollit culpa velit exercitation reprehenderit irure id sunt officia magna est ea labore consectetur incididunt cillum qui tempor ea ullamco quis pariatur aliquip.

", + "tags": [ + "56ddbd47-4078-4ddd-8448-73c5e88d5f59" + ] + }, + { + "id": "a4c9945a-757b-40b0-8942-d20e0543cabd", + "avatar": "assets/images/avatars/female-01.jpg", + "background": "assets/images/cards/25-640x480.jpg", + "name": "Vickie Mosley", + "emails": [ + { + "email": "vickiemosley@mail.net", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "tr", + "phoneNumber": "939 555 3054", + "label": "Mobile" + }, + { + "country": "tr", + "phoneNumber": "852 486 2053", + "label": "Work" + } + ], + "title": "Bindery Machine Operator", + "company": "Strozen", + "birthday": "1989-06-21T12:00:00.000Z", + "address": "397 Vandalia Avenue, Rockingham, Michigan, PO8089", + "notes": "

Velit sunt sunt commodo ex amet laboris voluptate eu lorem aliqua minim occaecat cupidatat aliqua ipsum nisi velit id reprehenderit exercitation velit fugiat minim nisi deserunt voluptate anim cillum commodo.

Cillum velit nostrud cupidatat ex sit culpa deserunt cillum cupidatat cillum aute cupidatat exercitation ullamco sunt incididunt non magna sint lorem et incididunt laborum culpa qui sint sunt duis fugiat.

", + "tags": [ + "cbde2486-5033-4e09-838e-e901b108cd41" + ] + }, + { + "id": "b8258ccf-48b5-46a2-9c95-e0bd7580c645", + "avatar": "assets/images/avatars/female-02.jpg", + "background": "assets/images/cards/26-640x480.jpg", + "name": "Tina Harris", + "emails": [ + { + "email": "tinaharris@mail.ca", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "gp", + "phoneNumber": "933 464 2431", + "label": "Mobile" + }, + { + "country": "gp", + "phoneNumber": "894 535 3609", + "label": "Work" + } + ], + "title": "Short Story Writer", + "company": "Gallaxia", + "birthday": "1976-09-10T12:00:00.000Z", + "address": "821 Beverly Road, Tyro, Colorado, PO4248", + "notes": "

Incididunt non est consequat qui sit sunt aliquip sit quis minim laboris ullamco est culpa velit culpa cupidatat veniam incididunt non quis elit reprehenderit et officia cillum magna aliqua occaecat.

Cupidatat amet incididunt id pariatur minim veniam id dolor nisi labore cillum ea officia cupidatat do culpa aliqua consequat deserunt aliquip sit ea excepteur eiusmod labore tempor reprehenderit commodo exercitation.

", + "tags": [ + "56ddbd47-4078-4ddd-8448-73c5e88d5f59" + ] + }, + { + "id": "f004ea79-98fc-436c-9ba5-6cfe32fe583d", + "avatar": "assets/images/avatars/male-02.jpg", + "background": "assets/images/cards/27-640x480.jpg", + "name": "Holt Manning", + "emails": [ + { + "email": "holtmanning@mail.org", + "label": "Personal" + }, + { + "email": "manning.holt@idetica.io", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "nz", + "phoneNumber": "822 531 2600", + "label": "Mobile" + }, + { + "country": "nz", + "phoneNumber": "922 549 2094", + "label": "Work" + } + ], + "title": "Fundraising Director", + "company": "Idetica", + "birthday": "1973-11-08T12:00:00.000Z", + "address": "364 Porter Avenue, Delshire, Missouri, PO8911", + "notes": "

Velit fugiat minim sit nisi esse laboris ad velit proident non et cillum labore sint excepteur nisi eu amet voluptate duis duis id enim ea anim adipisicing consectetur id consectetur.

Ex eiusmod id magna in non lorem sunt sunt officia do adipisicing officia mollit occaecat sunt laborum aliquip adipisicing ullamco in sit proident et quis incididunt pariatur fugiat mollit anim.

", + "tags": [ + "65930b5a-5d2a-4303-b11f-865d69e6fdb5" + ] + }, + { + "id": "8b69fe2d-d7cc-4a3d-983d-559173e37d37", + "avatar": "assets/images/avatars/female-03.jpg", + "background": "assets/images/cards/28-640x480.jpg", + "name": "Misty Ramsey", + "emails": [ + { + "email": "mistyramsey@mail.us", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "kp", + "phoneNumber": "990 457 2106", + "label": "Mobile" + }, + { + "country": "kp", + "phoneNumber": "918 550 2946", + "label": "Work" + } + ], + "company": "Grupoli", + "birthday": "1969-08-10T12:00:00.000Z", + "address": "101 Sackett Street, Naomi, Tennessee, PO6335", + "notes": "

Ut cupidatat sint minim consectetur cupidatat aute ut anim consequat fugiat laboris quis sint sit nulla irure nulla officia eiusmod consequat ex quis ad ex ullamco et ut labore tempor.

Deserunt minim dolore voluptate aute aliqua est elit mollit ut ut consequat in esse est do ex officia nostrud aute id fugiat reprehenderit quis cillum fugiat id fugiat minim tempor.

", + "tags": [ + "cbde2486-5033-4e09-838e-e901b108cd41" + ] + }, + { + "id": "cdcc62e4-1520-4ccc-803d-52868c7e01ba", + "avatar": "assets/images/avatars/female-04.jpg", + "background": "assets/images/cards/29-640x480.jpg", + "name": "Dee Alvarado", + "emails": [ + { + "email": "deealvarado@mail.tv", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "nu", + "phoneNumber": "855 445 2483", + "label": "Mobile" + }, + { + "country": "nu", + "phoneNumber": "858 415 2860", + "label": "Work" + }, + { + "country": "nu", + "phoneNumber": "968 587 2752", + "label": "Home" + } + ], + "title": "Dental Laboratory Worker", + "company": "Tsunamia", + "birthday": "1996-06-17T12:00:00.000Z", + "address": "956 Pierrepont Street, Crumpler, Hawaii, PO3299", + "notes": "

Esse excepteur ad aliquip amet elit reprehenderit ut nostrud magna ex esse dolore magna excepteur irure esse incididunt sunt enim laborum ex mollit magna elit quis ullamco aute minim veniam.

Duis id ullamco laboris elit ea ea dolore tempor est eu esse aliqua quis quis ut laborum mollit cillum proident deserunt fugiat ipsum elit exercitation quis mollit eiusmod officia non.

", + "tags": [ + "56ddbd47-4078-4ddd-8448-73c5e88d5f59" + ] + }, + { + "id": "e2946946-b4b5-4fd7-bab4-62c38cdff2f1", + "avatar": "assets/images/avatars/female-05.jpg", + "background": "assets/images/cards/30-640x480.jpg", + "name": "Samantha Jacobson", + "emails": [ + { + "email": "samanthajacobson@mail.com", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "es", + "phoneNumber": "879 591 3327", + "label": "Mobile" + } + ], + "title": "Dental Laboratory Worker", + "company": "Emoltra", + "birthday": "1972-02-04T12:00:00.000Z", + "address": "384 Love Lane, Dyckesville, New York, PO4115", + "notes": "

Consectetur eu et ea anim magna occaecat anim labore velit nulla non magna laboris duis sit adipisicing commodo laboris consequat id quis aliqua est culpa quis in ex est culpa.

Sunt qui excepteur reprehenderit nostrud voluptate eu laborum laborum id esse occaecat irure esse elit magna tempor ad est elit non labore tempor laborum deserunt voluptate cupidatat excepteur sunt sint.

", + "tags": [ + "a8991c76-2fda-4bbd-a718-df13d6478847" + ] + }, + { + "id": "fdc77706-6ba2-4397-b2f8-a9a0b6495153", + "avatar": "assets/images/avatars/female-06.jpg", + "background": "assets/images/cards/31-640x480.jpg", + "name": "Rhea Landry", + "emails": [ + { + "email": "rhealandry@mail.name", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "jp", + "phoneNumber": "906 579 3698", + "label": "Mobile" + }, + { + "country": "jp", + "phoneNumber": "841 475 2681", + "label": "Work" + } + ], + "title": "Electromedical Equipment Technician", + "company": "Comtent", + "birthday": "1988-05-22T12:00:00.000Z", + "address": "725 Arlington Avenue, Mathews, Wyoming, PO4562", + "notes": "

Eiusmod ullamco laboris tempor reprehenderit culpa non sunt ea consequat velit id ipsum commodo eiusmod exercitation laboris aliqua magna reprehenderit culpa tempor mollit pariatur consectetur amet aliqua cillum voluptate exercitation.

Qui cillum consectetur qui proident adipisicing id qui esse aute velit excepteur pariatur ea excepteur sunt velit nostrud esse mollit sint ex irure sunt aliquip velit consequat minim do officia.

", + "tags": [ + "c31e9e5d-e0cb-4574-a13f-8a6ee5ff8309" + ] + }, + { + "id": "12148fa2-e0a4-49fb-b3c5-daeecdb5180a", + "avatar": "assets/images/avatars/female-07.jpg", + "background": "assets/images/cards/32-640x480.jpg", + "name": "Olga Rhodes", + "emails": [ + { + "email": "olgarhodes@mail.me", + "label": "Personal" + }, + { + "email": "rhodes.olga@moreganic.info", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "tl", + "phoneNumber": "971 514 3366", + "label": "Mobile" + }, + { + "country": "tl", + "phoneNumber": "807 480 2033", + "label": "Work" + }, + { + "country": "tl", + "phoneNumber": "810 528 3783", + "label": "Home" + } + ], + "title": "Pastry Baker", + "company": "Moreganic", + "birthday": "1971-08-13T12:00:00.000Z", + "address": "253 Beard Street, Staples, Massachusetts, PO8089", + "notes": "

Proident est est et in commodo incididunt anim fugiat laboris pariatur eu enim dolor eiusmod dolor voluptate officia eiusmod excepteur culpa aute do do anim pariatur irure incididunt incididunt est.

Sint duis mollit dolor laborum ex non esse consequat anim et qui est nostrud incididunt fugiat anim veniam sunt cupidatat ut voluptate commodo non ex tempor ullamco magna culpa culpa.

", + "tags": [ + "65930b5a-5d2a-4303-b11f-865d69e6fdb5" + ] + }, + { + "id": "07dd64eb-8b8f-4765-a16c-8db083c45096", + "avatar": "assets/images/avatars/female-08.jpg", + "background": "assets/images/cards/33-640x480.jpg", + "name": "Lorraine Pennington", + "emails": [ + { + "email": "lorrainepennington@mail.biz", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "fm", + "phoneNumber": "932 404 3308", + "label": "Mobile" + }, + { + "country": "fm", + "phoneNumber": "979 550 3200", + "label": "Work" + }, + { + "country": "fm", + "phoneNumber": "868 557 3568", + "label": "Home" + } + ], + "title": "Electromedical Equipment Technician", + "company": "Marvane", + "birthday": "1967-06-10T12:00:00.000Z", + "address": "962 Whitney Avenue, Sussex, North Dakota, PO5796", + "notes": "

Nulla nisi officia quis aliquip voluptate mollit ut anim eu et quis tempor incididunt consectetur exercitation cupidatat in nisi exercitation est culpa nostrud sit elit sit sunt do ipsum eu.

Enim voluptate ad ullamco tempor voluptate culpa et ut ullamco eu consequat est esse excepteur est nostrud velit enim culpa dolore non quis occaecat eiusmod velit ex mollit tempor labore.

", + "tags": [ + "c31e9e5d-e0cb-4574-a13f-8a6ee5ff8309" + ] + }, + { + "id": "81fdc48c-5572-4123-8a73-71b7892120de", + "avatar": "assets/images/avatars/female-09.jpg", + "background": "assets/images/cards/34-640x480.jpg", + "name": "Earlene Rosales", + "emails": [ + { + "email": "earlenerosales@mail.co.uk", + "label": "Personal" + }, + { + "email": "rosales.earlene@softmicro.net", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "ki", + "phoneNumber": "927 589 3619", + "label": "Mobile" + } + ], + "title": "Historiographer", + "company": "Softmicro", + "birthday": "1960-11-13T12:00:00.000Z", + "address": "981 Kingston Avenue, Topaz, Connecticut, PO6866", + "notes": "

Adipisicing fugiat magna eiusmod consectetur id commodo incididunt ullamco ut sint minim nulla in do aute in sit pariatur irure dolor magna pariatur ad officia excepteur duis ullamco dolor sunt.

Dolor laborum proident voluptate eu esse lorem adipisicing enim consectetur veniam nisi pariatur aliquip sit laborum sunt adipisicing anim labore eiusmod nostrud irure irure nisi ipsum dolor aliquip ex exercitation.

", + "tags": [ + "3eaab175-ec0d-4db7-bc3b-efc633c769be" + ] + }, + { + "id": "f8bbf6be-d49a-41a3-bb80-3d51df84c12b", + "avatar": "assets/images/avatars/female-10.jpg", + "background": "assets/images/cards/35-640x480.jpg", + "name": "Marcia Hatfield", + "emails": [ + { + "email": "marciahatfield@mail.ca", + "label": "Personal" + }, + { + "email": "hatfield.marcia@datagen.org", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "no", + "phoneNumber": "883 432 3718", + "label": "Mobile" + }, + { + "country": "no", + "phoneNumber": "934 516 2135", + "label": "Work" + }, + { + "country": "no", + "phoneNumber": "923 596 3843", + "label": "Home" + } + ], + "title": "Track Service Worker", + "company": "Datagen", + "birthday": "1980-02-26T12:00:00.000Z", + "address": "802 Preston Court, Waikele, Pennsylvania, PO7421", + "notes": "

Aliqua sint aute in cillum deserunt enim fugiat tempor est pariatur irure commodo commodo deserunt eu nulla laboris enim occaecat incididunt voluptate enim est reprehenderit qui anim veniam sint adipisicing.

Commodo veniam occaecat ex et laborum minim fugiat sunt commodo velit dolor labore excepteur fugiat ipsum eiusmod in esse ex nulla deserunt minim consectetur in est sunt eu commodo fugiat.

", + "tags": [ + "65930b5a-5d2a-4303-b11f-865d69e6fdb5" + ] + }, + { + "id": "cd482941-3eaf-4560-ac37-56a9296025df", + "avatar": "assets/images/avatars/female-11.jpg", + "background": "assets/images/cards/36-640x480.jpg", + "name": "Liliana Ayala", + "emails": [ + { + "email": "lilianaayala@mail.io", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "bd", + "phoneNumber": "936 590 2412", + "label": "Mobile" + } + ], + "title": "Insurance Analyst", + "company": "Pharmex", + "birthday": "1988-04-27T12:00:00.000Z", + "address": "935 Guider Avenue, Kipp, Wisconsin, PO5282", + "notes": "

Magna et culpa cillum sint labore consequat aute aliqua amet ea consequat ut ullamco nisi commodo lorem enim amet dolor sit nisi dolor do sit lorem cillum esse reprehenderit ut.

Quis veniam anim nulla adipisicing veniam fugiat elit duis pariatur anim irure adipisicing elit labore eu aute exercitation qui exercitation commodo exercitation ipsum tempor non et ex eu aute proident.

", + "tags": [ + "a8991c76-2fda-4bbd-a718-df13d6478847" + ] + }, + { + "id": "22f18d47-ff8d-440e-888d-a1747c093052", + "avatar": "assets/images/avatars/female-12.jpg", + "background": "assets/images/cards/14-640x480.jpg", + "name": "Alice Harding", + "emails": [ + { + "email": "aliceharding@mail.us", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "sx", + "phoneNumber": "881 472 3113", + "label": "Mobile" + }, + { + "country": "sx", + "phoneNumber": "974 548 3124", + "label": "Work" + }, + { + "country": "sx", + "phoneNumber": "800 518 3615", + "label": "Home" + } + ], + "title": "Track Service Worker", + "company": "Futurity", + "birthday": "1985-09-17T12:00:00.000Z", + "address": "387 Holt Court, Thomasville, Alaska, PO2867", + "notes": "

Adipisicing exercitation dolor nisi ipsum nostrud anim dolore sint veniam consequat lorem sit ex commodo nostrud occaecat elit magna magna commodo incididunt laborum ad irure pariatur et sit ullamco adipisicing.

Ullamco in dolore amet est quis consectetur fugiat non nisi incididunt id laborum adipisicing dolor proident velit ut quis aliquip dolore id anim sit adipisicing nisi incididunt enim amet pariatur.

", + "tags": [ + "cbde2486-5033-4e09-838e-e901b108cd41" + ] + }, + { + "id": "a9a9f382-e4c3-42fb-9fe9-65aa534732b5", + "avatar": "assets/images/avatars/female-13.jpg", + "background": "assets/images/cards/15-640x480.jpg", + "name": "Francisca Perkins", + "emails": [ + { + "email": "franciscaperkins@mail.tv", + "label": "Personal" + }, + { + "email": "perkins.francisca@overplex.com", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "au", + "phoneNumber": "830 430 3437", + "label": "Mobile" + }, + { + "country": "au", + "phoneNumber": "868 538 2886", + "label": "Work" + } + ], + "title": "Dental Laboratory Worker", + "company": "Overplex", + "birthday": "1966-08-14T12:00:00.000Z", + "address": "733 Delmonico Place, Belvoir, Virginia, PO7102", + "notes": "

Voluptate nisi adipisicing ex magna mollit non cillum dolor in magna duis exercitation irure elit duis eiusmod deserunt lorem nulla sunt laboris quis voluptate ullamco labore adipisicing quis minim ipsum.

Id ut esse elit proident mollit nulla exercitation magna voluptate sit eiusmod labore velit commodo exercitation dolore anim est eiusmod occaecat et consequat eiusmod culpa ipsum deserunt lorem non incididunt.

", + "tags": [ + "2026ce08-d08f-4b4f-9506-b10cdb5b104f" + ] + }, + { + "id": "0222b24b-c288-48d1-b356-0f087fa172f8", + "avatar": null, + "background": null, + "name": "Warren Gates", + "emails": [ + { + "email": "warrengates@mail.name", + "label": "Personal" + }, + { + "email": "gates.warren@qualitex.me", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "gt", + "phoneNumber": "847 513 2248", + "label": "Mobile" + }, + { + "country": "gt", + "phoneNumber": "866 591 3665", + "label": "Work" + }, + { + "country": "gt", + "phoneNumber": "877 539 3840", + "label": "Home" + } + ], + "title": "Banker Mason", + "company": "Qualitex", + "birthday": "1977-02-23T12:00:00.000Z", + "address": "713 Fane Court, Lemoyne, Kentucky, PO3601", + "notes": "

Sint tempor consectetur ullamco ullamco consequat exercitation ea occaecat eiusmod cupidatat anim pariatur nisi pariatur excepteur ut labore anim excepteur sit eu consequat do enim pariatur et dolore in irure.

Commodo ut non minim sunt nisi tempor culpa duis anim ipsum qui irure lorem est voluptate voluptate officia occaecat lorem labore elit officia laboris mollit et eiusmod esse laborum nisi.

", + "tags": [ + "cbde2486-5033-4e09-838e-e901b108cd41" + ] + }, + { + "id": "0630f1ca-cdb9-405d-b134-68f733334089", + "avatar": "assets/images/avatars/female-14.jpg", + "background": "assets/images/cards/16-640x480.jpg", + "name": "Maryann Mcintyre", + "emails": [ + { + "email": "maryannmcintyre@mail.info", + "label": "Personal" + }, + { + "email": "mcintyre.maryann@aquafire.biz", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "bf", + "phoneNumber": "861 419 2752", + "label": "Mobile" + }, + { + "country": "bf", + "phoneNumber": "935 553 3031", + "label": "Work" + } + ], + "title": "Fundraising Director", + "company": "Aquafire", + "birthday": "1963-04-07T12:00:00.000Z", + "address": "698 Brooklyn Avenue, Dixonville, Utah, PO2712", + "notes": "

Pariatur velit ea ad quis elit pariatur consectetur eiusmod veniam non incididunt ex ex et nulla voluptate fugiat esse sit dolore voluptate in dolor nulla laborum irure consequat sit pariatur.

Dolore ex officia incididunt pariatur ea amet sunt enim aute labore cupidatat laboris eiusmod enim lorem labore nostrud ea consectetur et eu sunt exercitation dolore consequat fugiat anim in exercitation.

", + "tags": [ + "a8991c76-2fda-4bbd-a718-df13d6478847" + ] + }, + { + "id": "999c24f3-7bb8-4a01-85ca-2fca7863c57e", + "avatar": "assets/images/avatars/female-15.jpg", + "background": "assets/images/cards/17-640x480.jpg", + "name": "Sharon Marshall", + "emails": [ + { + "email": "sharonmarshall@mail.co.uk", + "label": "Personal" + }, + { + "email": "marshall.sharon@utara.net", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "fo", + "phoneNumber": "947 441 2999", + "label": "Mobile" + }, + { + "country": "fo", + "phoneNumber": "984 441 2615", + "label": "Work" + }, + { + "country": "fo", + "phoneNumber": "824 541 2714", + "label": "Home" + } + ], + "title": "Legal Assistant", + "company": "Utara", + "birthday": "1960-01-26T12:00:00.000Z", + "address": "923 Ivan Court, Hatteras, Idaho, PO7573", + "notes": "

Est duis sint ullamco nulla do tempor do dolore laboris in sint ad duis est eu consequat nisi esse irure tempor sunt pariatur qui mollit ipsum quis esse ex ipsum.

Dolore anim irure quis ipsum adipisicing sint et incididunt aute nisi minim aliquip consectetur duis tempor laborum nostrud exercitation do mollit irure anim lorem non excepteur commodo laborum dolore dolor.

", + "tags": [ + "3eaab175-ec0d-4db7-bc3b-efc633c769be" + ] + }, + { + "id": "7e8e1f1e-d19f-45c7-86bd-6fef599dae71", + "avatar": "assets/images/avatars/female-16.jpg", + "background": "assets/images/cards/18-640x480.jpg", + "name": "Margo Witt", + "emails": [ + { + "email": "margowitt@mail.ca", + "label": "Personal" + }, + { + "email": "witt.margo@norsul.org", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "ao", + "phoneNumber": "992 596 3391", + "label": "Mobile" + }, + { + "country": "ao", + "phoneNumber": "950 489 2505", + "label": "Work" + }, + { + "country": "ao", + "phoneNumber": "891 540 2231", + "label": "Home" + } + ], + "title": "Television News Producer", + "company": "Norsul", + "birthday": "1975-08-31T12:00:00.000Z", + "address": "539 Rockaway Avenue, Whitmer, Guam, PO4871", + "notes": "

Sunt quis officia elit laborum excepteur consequat amet cillum labore deserunt cillum cillum labore exercitation minim laboris anim incididunt voluptate minim duis enim eu duis veniam labore nisi culpa duis.

Pariatur irure sunt et commodo reprehenderit consectetur duis et ullamco fugiat occaecat culpa enim incididunt officia minim aliqua sit amet do dolore pariatur fugiat et adipisicing labore dolor id dolore.

", + "tags": [ + "56ddbd47-4078-4ddd-8448-73c5e88d5f59" + ] + }, + { + "id": "bedcb6a2-da83-4631-866a-77d10d239477", + "avatar": "assets/images/avatars/male-04.jpg", + "background": "assets/images/cards/19-640x480.jpg", + "name": "Alvarado Turner", + "emails": [ + { + "email": "alvaradoturner@mail.io", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "lv", + "phoneNumber": "961 537 3956", + "label": "Mobile" + } + ], + "title": "Fundraising Director", + "company": "Geologix", + "birthday": "1985-12-08T12:00:00.000Z", + "address": "233 Willmohr Street, Cressey, Iowa, PO1962", + "notes": "

In amet voluptate ad eiusmod cupidatat nulla sunt eu amet occaecat qui cillum occaecat tempor minim nostrud ullamco amet elit aliquip est nisi officia lorem occaecat ea lorem officia veniam.

Nulla tempor id excepteur irure do do veniam eiusmod esse ipsum sint dolore commodo enim officia nulla nulla proident in dolor et aliquip sit nulla sit proident duis aute deserunt.

", + "tags": [ + "56ddbd47-4078-4ddd-8448-73c5e88d5f59" + ] + }, + { + "id": "66f9de1b-f842-4d4c-bb59-f97e91db0462", + "avatar": "assets/images/avatars/male-05.jpg", + "background": "assets/images/cards/20-640x480.jpg", + "name": "Maldonado Rodriquez", + "emails": [ + { + "email": "maldonadorodriquez@mail.us", + "label": "Personal" + }, + { + "email": "rodriquez.maldonado@zentility.tv", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "et", + "phoneNumber": "811 502 3398", + "label": "Mobile" + }, + { + "country": "et", + "phoneNumber": "877 402 2443", + "label": "Work" + }, + { + "country": "et", + "phoneNumber": "949 536 3451", + "label": "Home" + } + ], + "title": "Dental Laboratory Worker", + "company": "Zentility", + "birthday": "1993-06-01T12:00:00.000Z", + "address": "916 Cobek Court, Morningside, South Dakota, PO2019", + "notes": "

Laboris consequat labore nisi aute voluptate minim amet nulla elit tempor dolor nulla do et consequat esse dolore fugiat laboris deserunt velit minim laboris voluptate enim ut non laboris nisi.

Magna pariatur voluptate veniam nostrud irure magna pariatur ut quis reprehenderit voluptate aute duis sunt laboris consequat lorem eu pariatur nulla incididunt quis lorem consectetur ex lorem commodo magna dolore.

", + "tags": [ + "c31e9e5d-e0cb-4574-a13f-8a6ee5ff8309" + ] + }, + { + "id": "9cb0ea57-3461-4182-979b-593b0c1ec6c3", + "avatar": "assets/images/avatars/male-06.jpg", + "background": "assets/images/cards/21-640x480.jpg", + "name": "Tran Duke", + "emails": [ + { + "email": "tranduke@mail.com", + "label": "Personal" + }, + { + "email": "duke.tran@splinx.name", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "si", + "phoneNumber": "837 503 2254", + "label": "Mobile" + }, + { + "country": "si", + "phoneNumber": "893 405 3190", + "label": "Work" + }, + { + "country": "si", + "phoneNumber": "931 402 3874", + "label": "Home" + } + ], + "title": "Legal Assistant", + "company": "Splinx", + "birthday": "1976-04-27T12:00:00.000Z", + "address": "405 Canarsie Road, Richville, Virgin Islands, PO2744", + "notes": "

Occaecat do excepteur non ipsum labore consequat id eu sunt minim aliquip elit occaecat velit ut aute cupidatat irure ex eiusmod fugiat ea ea cupidatat nulla dolor labore consectetur amet.

Mollit enim dolore deserunt tempor aliqua velit nostrud nostrud id consectetur lorem in enim excepteur nisi laborum ex commodo sint ea et culpa lorem esse culpa ad officia do amet.

", + "tags": [ + "3eaab175-ec0d-4db7-bc3b-efc633c769be" + ] + }, + { + "id": "2fb89a90-5622-4b5b-8df3-d49b85905392", + "avatar": null, + "background": null, + "name": "Estela Lyons", + "emails": [ + { + "email": "estelalyons@mail.me", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "vg", + "phoneNumber": "864 459 3205", + "label": "Mobile" + }, + { + "country": "vg", + "phoneNumber": "886 524 2880", + "label": "Work" + }, + { + "country": "vg", + "phoneNumber": "815 484 3420", + "label": "Home" + } + ], + "title": "Animal Sitter", + "company": "Gonkle", + "birthday": "1968-03-11T12:00:00.000Z", + "address": "540 Metrotech Courtr, Garfield, American Samoa, PO2290", + "notes": "

Ullamco dolore ipsum exercitation officia dolore sit consequat nisi consequat occaecat et ipsum veniam anim tempor pariatur sunt in adipisicing aliqua non dolor laborum veniam nisi dolore quis sunt incididunt.

Incididunt ullamco sunt magna reprehenderit velit dolor qui anim eiusmod nostrud commodo exercitation velit incididunt exercitation nulla ad aute eiusmod est amet exercitation est nostrud sit esse esse ad irure.

", + "tags": [ + "2026ce08-d08f-4b4f-9506-b10cdb5b104f" + ] + }, + { + "id": "8141dd08-3a6e-4770-912c-59d0ed06dde6", + "avatar": null, + "background": null, + "name": "Madeleine Fletcher", + "emails": [ + { + "email": "madeleinefletcher@mail.info", + "label": "Personal" + }, + { + "email": "fletcher.madeleine@genmom.biz", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "uy", + "phoneNumber": "898 554 3354", + "label": "Mobile" + } + ], + "title": "Fundraising Director", + "company": "Genmom", + "birthday": "1970-07-15T12:00:00.000Z", + "address": "825 Cherry Street, Foscoe, Minnesota, PO7290", + "notes": "

Fugiat in exercitation nostrud labore labore irure ex magna ex aliquip veniam sit irure irure deserunt occaecat tempor cillum aliqua dolore ea tempor dolore laboris est amet quis consequat quis.

Esse officia velit consectetur ullamco ea pariatur mollit sit consectetur sint mollit commodo anim anim ea amet consectetur eiusmod aliqua excepteur elit laborum magna non fugiat nisi pariatur ut velit.

", + "tags": [ + "56ddbd47-4078-4ddd-8448-73c5e88d5f59" + ] + }, + { + "id": "7585015c-ada2-4f88-998d-9646865d1ad2", + "avatar": "assets/images/avatars/male-07.jpg", + "background": "assets/images/cards/22-640x480.jpg", + "name": "Meyer Roach", + "emails": [ + { + "email": "meyerroach@mail.co.uk", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "uz", + "phoneNumber": "891 543 2053", + "label": "Mobile" + }, + { + "country": "uz", + "phoneNumber": "842 564 3671", + "label": "Work" + }, + { + "country": "uz", + "phoneNumber": "992 491 3514", + "label": "Home" + } + ], + "title": "Electromedical Equipment Technician", + "company": "Zentime", + "birthday": "1968-10-16T12:00:00.000Z", + "address": "315 Albemarle Road, Allison, Arkansas, PO6008", + "notes": "

Eiusmod deserunt aliqua dolore ipsum cillum veniam minim dolore nulla aute aliqua voluptate labore sint cillum excepteur nulla nostrud do cupidatat eu adipisicing reprehenderit deserunt elit qui mollit adipisicing eu.

Proident commodo magna eu voluptate eiusmod aliqua laborum eu ea elit quis ullamco ullamco magna minim enim amet dolore sit lorem aliqua officia amet officia non magna enim cillum sit.

", + "tags": [ + "c31e9e5d-e0cb-4574-a13f-8a6ee5ff8309" + ] + }, + { + "id": "32c73a6a-67f2-48a9-b2a1-b23da83187bb", + "avatar": null, + "background": null, + "name": "Bolton Obrien", + "emails": [ + { + "email": "boltonobrien@mail.net", + "label": "Personal" + }, + { + "email": "obrien.bolton@enersol.ca", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "tn", + "phoneNumber": "860 472 2458", + "label": "Mobile" + }, + { + "country": "tn", + "phoneNumber": "887 499 3580", + "label": "Work" + } + ], + "title": "Banker Mason", + "company": "Enersol", + "birthday": "1968-09-08T12:00:00.000Z", + "address": "818 Aviation Road, Geyserville, Palau, PO9655", + "notes": "

Cupidatat lorem tempor commodo do eu ea dolor eiusmod do nisi occaecat fugiat labore non esse aliquip ullamco laboris adipisicing pariatur nostrud enim minim do fugiat culpa exercitation lorem duis.

Pariatur cupidatat tempor est et nostrud in amet aliquip sint nulla amet ea lorem irure sint sit ea aliquip voluptate id laboris fugiat cillum cillum dolore deserunt fugiat ad tempor.

", + "tags": [ + "a8991c76-2fda-4bbd-a718-df13d6478847" + ] + }, + { + "id": "114642a2-ccb7-4cb1-ad2b-5e9b6a0c1d2e", + "avatar": "assets/images/avatars/male-09.jpg", + "background": "assets/images/cards/23-640x480.jpg", + "name": "Barber Johnson", + "emails": [ + { + "email": "barberjohnson@mail.org", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "az", + "phoneNumber": "928 567 2521", + "label": "Mobile" + }, + { + "country": "az", + "phoneNumber": "898 515 2048", + "label": "Work" + }, + { + "country": "az", + "phoneNumber": "935 495 3348", + "label": "Home" + } + ], + "title": "Talent Manager", + "company": "Zounds", + "birthday": "1967-03-02T12:00:00.000Z", + "address": "386 Vernon Avenue, Dragoon, North Carolina, PO4559", + "notes": "

Esse amet ex duis esse aliqua non tempor ullamco dolore et aliquip nisi pariatur qui laborum id consequat tempor sint eiusmod exercitation velit aliquip occaecat tempor nisi aute magna sint.

Deserunt veniam voluptate dolore eiusmod eu consequat dolor sit pariatur laboris anim excepteur consequat nulla officia exercitation magna sint ea excepteur qui eu officia pariatur culpa sint elit nulla officia.

", + "tags": [ + "56ddbd47-4078-4ddd-8448-73c5e88d5f59" + ] + }, + { + "id": "310ece7d-dbb0-45d6-9e69-14c24e50fe3d", + "avatar": "assets/images/avatars/male-10.jpg", + "background": "assets/images/cards/24-640x480.jpg", + "name": "Cervantes Kramer", + "emails": [ + { + "email": "cervanteskramer@mail.io", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "vg", + "phoneNumber": "998 498 2507", + "label": "Mobile" + }, + { + "country": "vg", + "phoneNumber": "856 477 3445", + "label": "Work" + } + ], + "title": "Motor Winder", + "company": "Xeronk", + "birthday": "1992-09-04T12:00:00.000Z", + "address": "238 Rochester Avenue, Lydia, Oklahoma, PO3914", + "notes": "

Excepteur do ullamco voluptate deserunt tempor ullamco enim non incididunt adipisicing sunt sint sit qui occaecat occaecat id laboris et duis amet reprehenderit cupidatat aliquip dolore ea eu ea nulla.

Cillum nulla deserunt laboris eu sint dolor non laboris cupidatat aute nisi amet mollit ipsum cillum excepteur consequat tempor exercitation consequat nostrud ipsum qui excepteur eiusmod nostrud laboris pariatur sint.

", + "tags": [ + "a8991c76-2fda-4bbd-a718-df13d6478847" + ] + }, + { + "id": "dcc673f6-de59-4715-94ed-8f64663d449b", + "avatar": "assets/images/avatars/female-19.jpg", + "background": "assets/images/cards/25-640x480.jpg", + "name": "Megan Suarez", + "emails": [ + { + "email": "megansuarez@mail.us", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "bb", + "phoneNumber": "875 422 2053", + "label": "Mobile" + }, + { + "country": "bb", + "phoneNumber": "861 487 2597", + "label": "Work" + }, + { + "country": "bb", + "phoneNumber": "873 414 3953", + "label": "Home" + } + ], + "title": "Bindery Machine Operator", + "company": "Cemention", + "birthday": "1984-09-08T12:00:00.000Z", + "address": "112 Tillary Street, Camptown, Vermont, PO8827", + "notes": "

Pariatur tempor laborum deserunt commodo eiusmod adipisicing amet anim irure fugiat laboris velit do velit elit aute deserunt officia fugiat nulla ullamco est elit veniam officia sit veniam velit commodo.

Laboris duis eu adipisicing esse fugiat voluptate enim sint in voluptate lorem laboris eiusmod commodo nostrud dolor qui incididunt non fugiat culpa aliquip minim voluptate lorem sint sunt velit eiusmod.

", + "tags": [ + "65930b5a-5d2a-4303-b11f-865d69e6fdb5" + ] + }, + { + "id": "3e4ca731-d39b-4ad9-b6e0-f84e67f4b74a", + "avatar": "assets/images/avatars/female-20.jpg", + "background": "assets/images/cards/26-640x480.jpg", + "name": "Ofelia Ratliff", + "emails": [ + { + "email": "ofeliaratliff@mail.tv", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "vu", + "phoneNumber": "978 546 3699", + "label": "Mobile" + }, + { + "country": "vu", + "phoneNumber": "892 551 2229", + "label": "Work" + }, + { + "country": "vu", + "phoneNumber": "949 495 3479", + "label": "Home" + } + ], + "company": "Buzzmaker", + "birthday": "1988-11-11T12:00:00.000Z", + "address": "951 Hampton Avenue, Bartonsville, Mississippi, PO4232", + "notes": "

Ad lorem id irure aute ipsum ex occaecat commodo dolore eu dolor exercitation anim quis officia deserunt lorem sunt officia eu sit aliquip laborum id duis aliqua quis aute magna.

Do do lorem est amet aliqua ex excepteur nisi cupidatat esse consequat ipsum in ad eiusmod proident cupidatat dolore anim ut pariatur sint do elit incididunt officia adipisicing amet eu.

", + "tags": [ + "a8991c76-2fda-4bbd-a718-df13d6478847" + ] + }, + { + "id": "2012d4a5-19e4-444d-aaff-1d8b1d853650", + "avatar": "assets/images/avatars/female-01.jpg", + "background": "assets/images/cards/27-640x480.jpg", + "name": "Laurel Parker", + "emails": [ + { + "email": "laurelparker@mail.com", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "lu", + "phoneNumber": "805 502 3677", + "label": "Mobile" + }, + { + "country": "lu", + "phoneNumber": "925 527 2973", + "label": "Work" + }, + { + "country": "lu", + "phoneNumber": "975 495 2977", + "label": "Home" + } + ], + "title": "Fundraising Director", + "company": "Omnigog", + "birthday": "1987-05-17T12:00:00.000Z", + "address": "157 Woodhull Street, Rutherford, West Virginia, PO6646", + "notes": "

Duis laboris consectetur et anim eiusmod laborum aute mollit ut officia ipsum dolore eiusmod ex eu elit officia est amet aliquip ullamco veniam proident id aliquip duis qui voluptate fugiat.

Sunt aliquip nulla amet sint culpa laboris quis proident qui veniam excepteur ullamco irure non eu occaecat est enim ut velit dolore sit tempor cillum reprehenderit proident velit lorem ad.

", + "tags": [ + "2026ce08-d08f-4b4f-9506-b10cdb5b104f" + ] + }, + { + "id": "012b8219-74bf-447c-af2c-66904d90a956", + "avatar": "assets/images/avatars/female-02.jpg", + "background": "assets/images/cards/28-640x480.jpg", + "name": "Tracy Delacruz", + "emails": [ + { + "email": "tracydelacruz@mail.name", + "label": "Personal" + }, + { + "email": "delacruz.tracy@shepard.me", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "co", + "phoneNumber": "974 428 2886", + "label": "Mobile" + } + ], + "title": "Bindery Machine Operator", + "company": "Shepard", + "birthday": "1963-08-10T12:00:00.000Z", + "address": "604 Merit Court, Wyano, New Hampshire, PO1641", + "notes": "

Dolor anim fugiat aliquip eiusmod lorem nisi adipisicing ea deserunt est quis non sit nulla voluptate deserunt magna eiusmod irure labore fugiat consectetur laboris velit voluptate exercitation aute magna sit.

Sunt ullamco quis qui ea ullamco quis sit ex nisi deserunt fugiat qui culpa minim proident dolor veniam lorem nulla amet do dolor proident sunt ex incididunt ipsum cillum non.

", + "tags": [ + "c31e9e5d-e0cb-4574-a13f-8a6ee5ff8309" + ] + }, + { + "id": "8b1befd2-66a7-4981-ae52-77f01b382d18", + "avatar": "assets/images/avatars/female-03.jpg", + "background": "assets/images/cards/29-640x480.jpg", + "name": "Jeannette Stanton", + "emails": [ + { + "email": "jeannettestanton@mail.info", + "label": "Personal" + }, + { + "email": "stanton.jeannette@zentury.biz", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "dz", + "phoneNumber": "947 561 3783", + "label": "Mobile" + }, + { + "country": "dz", + "phoneNumber": "917 463 3737", + "label": "Work" + }, + { + "country": "dz", + "phoneNumber": "835 510 2059", + "label": "Home" + } + ], + "title": "Hotel Manager", + "company": "Zentury", + "birthday": "1975-09-02T12:00:00.000Z", + "address": "100 Menahan Street, Snyderville, Kansas, PO1006", + "notes": "

Sint anim sint tempor proident irure proident exercitation dolor enim in sint non occaecat tempor mollit dolore ea labore ipsum sunt in incididunt proident excepteur id in velit et quis.

Amet mollit ut nostrud cupidatat ut culpa irure in ex occaecat aute aliqua tempor incididunt elit nulla irure aliqua ea do amet ex elit incididunt minim eu fugiat elit pariatur.

", + "tags": [ + "56ddbd47-4078-4ddd-8448-73c5e88d5f59" + ] + }, + { + "id": "844668c3-5e20-4fed-9e3a-7d274f696e61", + "avatar": "assets/images/avatars/female-04.jpg", + "background": "assets/images/cards/30-640x480.jpg", + "name": "Johnnie Cleveland", + "emails": [ + { + "email": "johnniecleveland@mail.co.uk", + "label": "Personal" + }, + { + "email": "cleveland.johnnie@viasia.net", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "au", + "phoneNumber": "947 468 2942", + "label": "Mobile" + } + ], + "title": "Fundraising Director", + "company": "Viasia", + "birthday": "1986-03-15T12:00:00.000Z", + "address": "283 Albany Avenue, Jennings, Rhode Island, PO1646", + "notes": "

Id est dolore nostrud consectetur ullamco aliquip dolore nisi consectetur cupidatat consectetur ut lorem exercitation laborum est culpa qui aliquip fugiat fugiat laborum minim sint sit laborum elit consectetur occaecat.

Cillum eu aliquip ex enim dolore enim ea pariatur elit voluptate in eu magna eu voluptate est cupidatat aliqua cupidatat ex eu dolor voluptate velit fugiat ipsum labore labore aliqua.

", + "tags": [ + "65930b5a-5d2a-4303-b11f-865d69e6fdb5" + ] + }, + { + "id": "5a01e870-8be1-45a5-b58a-ec09c06e8f28", + "avatar": "assets/images/avatars/female-05.jpg", + "background": "assets/images/cards/31-640x480.jpg", + "name": "Staci Hyde", + "emails": [ + { + "email": "stacihyde@mail.ca", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "id", + "phoneNumber": "944 525 2944", + "label": "Mobile" + }, + { + "country": "id", + "phoneNumber": "877 500 2506", + "label": "Work" + } + ], + "title": "Banker Mason", + "company": "Zilla", + "birthday": "1975-04-22T12:00:00.000Z", + "address": "560 Dooley Street, Ellerslie, Louisiana, PO1005", + "notes": "

Pariatur esse ex laborum ex dolor laborum proident enim consectetur occaecat magna adipisicing magna dolore officia aute et dolor aliquip enim adipisicing culpa reprehenderit aliqua officia qui pariatur aliquip occaecat.

Excepteur est nisi officia eiusmod et duis mollit labore minim duis officia lorem ipsum duis deserunt cupidatat excepteur nostrud incididunt non cillum fugiat adipisicing anim consectetur nostrud aliquip labore cupidatat.

", + "tags": [ + "56ddbd47-4078-4ddd-8448-73c5e88d5f59" + ] + }, + { + "id": "5ac1f193-f150-45f9-bfe4-b7b4e1a83ff9", + "avatar": "assets/images/avatars/female-06.jpg", + "background": "assets/images/cards/32-640x480.jpg", + "name": "Angela Gallagher", + "emails": [ + { + "email": "angelagallagher@mail.org", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "et", + "phoneNumber": "996 514 3856", + "label": "Mobile" + }, + { + "country": "et", + "phoneNumber": "903 539 2049", + "label": "Work" + }, + { + "country": "et", + "phoneNumber": "938 463 3685", + "label": "Home" + } + ], + "title": "Electromedical Equipment Technician", + "company": "Zenolux", + "birthday": "1965-08-02T12:00:00.000Z", + "address": "445 Remsen Avenue, Ruckersville, Delaware, PO2712", + "notes": "

Pariatur do nisi labore culpa minim aliquip excepteur voluptate id id aute eu aliquip adipisicing nulla laboris consectetur dolore ullamco ut exercitation fugiat excepteur veniam ex cillum cupidatat ad adipisicing.

Dolor culpa dolor magna incididunt voluptate sunt amet dolor cillum ut nostrud nisi quis ex pariatur enim dolore sunt sunt cupidatat id non lorem magna esse amet commodo minim id.

", + "tags": [ + "cbde2486-5033-4e09-838e-e901b108cd41" + ] + }, + { + "id": "995df091-d78a-4bb7-840c-ba6a7d14a1bd", + "avatar": "assets/images/avatars/male-11.jpg", + "background": "assets/images/cards/33-640x480.jpg", + "name": "Hutchinson Levy", + "emails": [ + { + "email": "hutchinsonlevy@mail.io", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "et", + "phoneNumber": "970 546 3452", + "label": "Mobile" + }, + { + "country": "et", + "phoneNumber": "894 438 2430", + "label": "Work" + } + ], + "title": "Congressional Representative", + "company": "Zytrek", + "birthday": "1978-03-22T12:00:00.000Z", + "address": "911 Lois Avenue, Epworth, California, PO6557", + "notes": "

Veniam deserunt aliquip culpa commodo et est ea cillum ea pariatur reprehenderit dolore adipisicing voluptate dolor eiusmod tempor exercitation reprehenderit nostrud labore nostrud do nulla commodo officia qui culpa ea.

Velit deserunt do ut esse tempor minim cupidatat amet qui consequat enim duis elit veniam sunt sit aliquip irure cillum irure sunt officia incididunt cupidatat commodo amet non qui anim.

", + "tags": [ + "65930b5a-5d2a-4303-b11f-865d69e6fdb5" + ] + }, + { + "id": "7184be71-a28f-4f2b-8c45-15f78cf2f825", + "avatar": "assets/images/avatars/female-05.jpg", + "background": "assets/images/cards/34-640x480.jpg", + "name": "Alissa Nelson", + "emails": [ + { + "email": "alissanelson@mail.us", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "lu", + "phoneNumber": "893 600 2639", + "label": "Mobile" + } + ], + "title": "Bindery Machine Operator", + "company": "Emtrak", + "birthday": "1993-10-19T12:00:00.000Z", + "address": "514 Sutter Avenue, Shindler, Puerto Rico, PO3862", + "notes": "

Ullamco ut aute reprehenderit velit incididunt veniam consequat ut ipsum sint laborum duis officia pariatur mollit enim nulla reprehenderit dolor aliquip labore ex aute in sunt dolor nulla reprehenderit dolor.

Ad enim ex non minim commodo culpa culpa ex est anim aute adipisicing proident ut ex et aliquip amet exercitation lorem tempor laborum quis reprehenderit veniam proident ullamco id eiusmod.

", + "tags": [ + "3eaab175-ec0d-4db7-bc3b-efc633c769be" + ] + }, + { + "id": "325d508c-ca49-42bf-b0d5-c4a6b8da3d5c", + "avatar": null, + "background": null, + "name": "Oliver Head", + "emails": [ + { + "email": "oliverhead@mail.tv", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "bn", + "phoneNumber": "977 528 3294", + "label": "Mobile" + } + ], + "title": "Meteorologist", + "company": "Rameon", + "birthday": "1967-01-05T12:00:00.000Z", + "address": "569 Clermont Avenue, Movico, Marshall Islands, PO7293", + "notes": "

Duis laborum magna ipsum officia cillum ea ut commodo anim exercitation incididunt id ipsum nisi consectetur aute officia culpa anim in veniam ad officia consequat qui ullamco ea laboris ad.

Ad ea excepteur ea veniam nostrud est labore ea consectetur laboris cupidatat aute pariatur aute mollit dolor do deserunt nisi mollit fugiat qui officia ullamco est officia est ullamco consequat.

", + "tags": [ + "65930b5a-5d2a-4303-b11f-865d69e6fdb5" + ] + }, + { + "id": "c674b6e1-b846-4bba-824b-0b4df0cdec48", + "avatar": "assets/images/avatars/male-13.jpg", + "background": "assets/images/cards/35-640x480.jpg", + "name": "Duran Barr", + "emails": [ + { + "email": "duranbarr@mail.com", + "label": "Personal" + }, + { + "email": "barr.duran@hinway.name", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "sr", + "phoneNumber": "857 457 2508", + "label": "Mobile" + }, + { + "country": "sr", + "phoneNumber": "887 522 2146", + "label": "Work" + }, + { + "country": "sr", + "phoneNumber": "947 574 3174", + "label": "Home" + } + ], + "title": "Insurance Analyst", + "company": "Hinway", + "birthday": "1977-11-06T12:00:00.000Z", + "address": "103 Chestnut Avenue, Glenbrook, Indiana, PO2578", + "notes": "

Ad ipsum occaecat dolore ullamco labore ex sint est pariatur aliquip ea do esse do est dolore duis excepteur esse irure eiusmod pariatur elit nostrud laboris ad ex nostrud nostrud.

Occaecat proident magna elit ullamco ea incididunt fugiat est nulla reprehenderit in veniam esse qui minim aliqua tempor excepteur dolor et tempor occaecat in veniam esse qui exercitation laborum esse.

", + "tags": [ + "a8991c76-2fda-4bbd-a718-df13d6478847" + ] + } + ] + }, + "countries": { + "value": [ + { + "id": "19430ee3-b0fe-4987-a7c8-74453ad5504d", + "iso": "af", + "name": "Afghanistan", + "code": "+93", + "flagImagePos": "-1px -3180px" + }, + { + "id": "6c6b5c5c-97d5-4881-b5e1-e05b8f739ee7", + "iso": "al", + "name": "Albania", + "code": "+355", + "flagImagePos": "-1px -1310px" + }, + { + "id": "d1f3941f-075e-4777-a5fd-8b196d98cd5a", + "iso": "dz", + "name": "Algeria", + "code": "+213", + "flagImagePos": "-1px -681px" + }, + { + "id": "0dc3d1b8-f7f3-4c3d-8493-0d8b5a679910", + "iso": "as", + "name": "American Samoa", + "code": "+1", + "flagImagePos": "-1px -2058px" + }, + { + "id": "e2e88578-b410-499f-aa59-9bb8da13c781", + "iso": "ad", + "name": "Andorra", + "code": "+376", + "flagImagePos": "-1px -766px" + }, + { + "id": "4446885b-b391-4b84-866f-2b36603053c4", + "iso": "ao", + "name": "Angola", + "code": "+244", + "flagImagePos": "-1px -2636px" + }, + { + "id": "07024099-a3db-4881-a628-24e8c0ba2508", + "iso": "ai", + "name": "Anguilla", + "code": "+1", + "flagImagePos": "-1px -2687px" + }, + { + "id": "26be08bc-d87a-4134-9fb0-73b6a5b47cea", + "iso": "ag", + "name": "Antigua & Barbuda", + "code": "+1", + "flagImagePos": "-1px -1140px" + }, + { + "id": "53c77399-494e-49df-9e3a-587b536c033e", + "iso": "ar", + "name": "Argentina", + "code": "+54", + "flagImagePos": "-1px -3282px" + }, + { + "id": "9f5753c4-e9e4-4975-86b4-9eb9f4f484de", + "iso": "am", + "name": "Armenia", + "code": "+374", + "flagImagePos": "-1px -205px" + }, + { + "id": "f1bbb833-5c47-4e17-b8c3-1d492107dc86", + "iso": "aw", + "name": "Aruba", + "code": "+297", + "flagImagePos": "-1px -1021px" + }, + { + "id": "dc7e3322-8bd5-4c49-932d-a8e50bd1f9ad", + "iso": "ac", + "name": "Ascension Island", + "code": "+247", + "flagImagePos": "-1px -86px" + }, + { + "id": "4505ba35-afa5-47ef-a6c7-9b57f1dcd187", + "iso": "au", + "name": "Australia", + "code": "+61", + "flagImagePos": "-1px -2279px" + }, + { + "id": "57b3cd1f-d5d6-403b-8137-fbeeacaf136a", + "iso": "at", + "name": "Austria", + "code": "+43", + "flagImagePos": "-1px -1735px" + }, + { + "id": "11cbde08-3c33-422c-bf4b-85561595ffb5", + "iso": "az", + "name": "Azerbaijan", + "code": "+994", + "flagImagePos": "-1px -1599px" + }, + { + "id": "48c1e060-e685-4e91-8de8-725f42576e6c", + "iso": "bs", + "name": "Bahamas", + "code": "+1", + "flagImagePos": "-1px -460px" + }, + { + "id": "ee23ffb8-9540-4630-948e-ceba52fa54ce", + "iso": "bh", + "name": "Bahrain", + "code": "+973", + "flagImagePos": "-1px -1956px" + }, + { + "id": "b5f37cb6-7870-4ed9-8f92-3864bd870062", + "iso": "bd", + "name": "Bangladesh", + "code": "+880", + "flagImagePos": "-1px -2364px" + }, + { + "id": "92de9080-f709-493e-a9fa-d23b3d4093d4", + "iso": "bb", + "name": "Barbados", + "code": "+1", + "flagImagePos": "-1px -2075px" + }, + { + "id": "a2f4ff04-86b8-4bc0-952f-686bfe99c07f", + "iso": "by", + "name": "Belarus", + "code": "+375", + "flagImagePos": "-1px -1412px" + }, + { + "id": "2025b6b3-1287-4b4c-8b13-36deb44e5751", + "iso": "be", + "name": "Belgium", + "code": "+32", + "flagImagePos": "-1px -1px" + }, + { + "id": "70d82950-3eca-496f-866d-d99c136260e5", + "iso": "bz", + "name": "Belize", + "code": "+501", + "flagImagePos": "-1px -613px" + }, + { + "id": "dc0bedf5-e197-46b4-af21-c2e495b15768", + "iso": "bj", + "name": "Benin", + "code": "+229", + "flagImagePos": "-1px -1684px" + }, + { + "id": "aeee4f9d-99a1-4c6b-826c-f3c0ff707dce", + "iso": "bm", + "name": "Bermuda", + "code": "+1", + "flagImagePos": "-1px -2585px" + }, + { + "id": "73b80fa7-50d0-4fd5-8d26-24baade525a2", + "iso": "bt", + "name": "Bhutan", + "code": "+975", + "flagImagePos": "-1px -2483px" + }, + { + "id": "571bf396-810b-4fc4-9ffc-c9e4db9d3bef", + "iso": "bo", + "name": "Bolivia", + "code": "+591", + "flagImagePos": "-1px -2177px" + }, + { + "id": "cbfbf28b-b79b-4b7d-a2e9-37a2000aa15b", + "iso": "ba", + "name": "Bosnia & Herzegovina", + "code": "+387", + "flagImagePos": "-1px -2092px" + }, + { + "id": "f929da82-915c-4ac8-ba13-aa1b44174c71", + "iso": "bw", + "name": "Botswana", + "code": "+267", + "flagImagePos": "-1px -3724px" + }, + { + "id": "2dea0689-0548-400c-a58f-ebcd6373cd07", + "iso": "br", + "name": "Brazil", + "code": "+55", + "flagImagePos": "-1px -1004px" + }, + { + "id": "d2c2c16f-15f8-467b-8c42-a02babe5362b", + "iso": "io", + "name": "British Indian Ocean Territory", + "code": "+246", + "flagImagePos": "-1px -86px" + }, + { + "id": "1d90db23-ca7c-4d23-a995-9b2a8021f4ad", + "iso": "vg", + "name": "British Virgin Islands", + "code": "+1", + "flagImagePos": "-1px -1854px" + }, + { + "id": "f16aebb2-cdae-4af2-aba5-f66f34d6ac3a", + "iso": "bn", + "name": "Brunei", + "code": "+673", + "flagImagePos": "-1px -2228px" + }, + { + "id": "499d6ee6-8f8b-4a5b-bb92-9cce9d1c6546", + "iso": "bg", + "name": "Bulgaria", + "code": "+359", + "flagImagePos": "-1px -3537px" + }, + { + "id": "67e2986b-98d0-44c3-b08f-6cbba8b14ff8", + "iso": "bf", + "name": "Burkina Faso", + "code": "+226", + "flagImagePos": "-1px -953px" + }, + { + "id": "fea611f2-4aa3-427f-86e1-657e8aef24a8", + "iso": "bi", + "name": "Burundi", + "code": "+257", + "flagImagePos": "-1px -2551px" + }, + { + "id": "3b959360-3d04-4018-afdf-a392afa1881d", + "iso": "kh", + "name": "Cambodia", + "code": "+855", + "flagImagePos": "-1px -290px" + }, + { + "id": "9336ba3b-01be-4b84-82b5-f02395856ac5", + "iso": "cm", + "name": "Cameroon", + "code": "+237", + "flagImagePos": "-1px -2806px" + }, + { + "id": "36a159b0-f33e-4481-85b0-751bdd9ea79d", + "iso": "ca", + "name": "Canada", + "code": "+1", + "flagImagePos": "-1px -1803px" + }, + { + "id": "a3038010-382e-436e-b61d-e4b923aa1cb3", + "iso": "cv", + "name": "Cape Verde", + "code": "+238", + "flagImagePos": "-1px -3639px" + }, + { + "id": "dd898165-12a9-4c90-a3e4-012149c0feac", + "iso": "bq", + "name": "Caribbean Netherlands", + "code": "+599", + "flagImagePos": "-1px -3741px" + }, + { + "id": "a1f30091-26da-481a-a84f-2638b2d7c14d", + "iso": "ky", + "name": "Cayman Islands", + "code": "+1", + "flagImagePos": "-1px -375px" + }, + { + "id": "469b4a79-8a1a-4428-b7bd-4665202b7292", + "iso": "cf", + "name": "Central African Republic", + "code": "+236", + "flagImagePos": "-1px -2466px" + }, + { + "id": "a9c2fa4b-c22a-41bd-9735-b4adeadab7f7", + "iso": "td", + "name": "Chad", + "code": "+235", + "flagImagePos": "-1px -1055px" + }, + { + "id": "f0825f0d-e086-49e0-846e-9e4784bf872c", + "iso": "cl", + "name": "Chile", + "code": "+56", + "flagImagePos": "-1px -1752px" + }, + { + "id": "89d3f07d-446e-459d-b168-595af96d708f", + "iso": "cn", + "name": "China", + "code": "+86", + "flagImagePos": "-1px -1072px" + }, + { + "id": "903801ce-2f83-4df8-a380-9dc6df6c35cf", + "iso": "co", + "name": "Colombia", + "code": "+57", + "flagImagePos": "-1px -409px" + }, + { + "id": "55d7d2be-8273-4770-844c-1ef87524cd27", + "iso": "km", + "name": "Comoros", + "code": "+269", + "flagImagePos": "-1px -1871px" + }, + { + "id": "a5b00b2f-01de-4c0d-914f-fe05c92c8f43", + "iso": "cg", + "name": "Congo - Brazzaville", + "code": "+242", + "flagImagePos": "-1px -2398px" + }, + { + "id": "58e07572-21b9-4630-a17c-a51c0ade4b8a", + "iso": "cd", + "name": "Congo - Kinshasa", + "code": "+243", + "flagImagePos": "-1px -1990px" + }, + { + "id": "5a09d08e-b6ab-4084-8350-1d97d504c222", + "iso": "ck", + "name": "Cook Islands", + "code": "+682", + "flagImagePos": "-1px -3112px" + }, + { + "id": "760f2b33-0822-4ad9-83cf-b497dcf273bb", + "iso": "cr", + "name": "Costa Rica", + "code": "+506", + "flagImagePos": "-1px -2857px" + }, + { + "id": "489db55f-6316-4f43-a1c7-a0921e16743a", + "iso": "ci", + "name": "Côte d’Ivoire", + "code": "+225", + "flagImagePos": "-1px -2194px" + }, + { + "id": "398c1d99-7ee4-44cd-9c2a-067acba2c8fb", + "iso": "hr", + "name": "Croatia", + "code": "+385", + "flagImagePos": "-1px -1174px" + }, + { + "id": "572da7dc-8463-4797-ad84-7fcf8f53bb80", + "iso": "cu", + "name": "Cuba", + "code": "+53", + "flagImagePos": "-1px -987px" + }, + { + "id": "572674e5-b0d4-4206-8310-70f4656e65e2", + "iso": "cw", + "name": "Curaçao", + "code": "+599", + "flagImagePos": "-1px -3758px" + }, + { + "id": "ac1e2a9d-a888-427e-9ad3-a0cbb27e603a", + "iso": "cy", + "name": "Cyprus", + "code": "+357", + "flagImagePos": "-1px -732px" + }, + { + "id": "075ce3fd-83e7-472a-89cb-8b5e224102c4", + "iso": "cz", + "name": "Czechia", + "code": "+420", + "flagImagePos": "-1px -3095px" + }, + { + "id": "4cde631a-97e9-4fc2-9465-9d9a433ca5c1", + "iso": "dk", + "name": "Denmark", + "code": "+45", + "flagImagePos": "-1px -1820px" + }, + { + "id": "1b9c40a6-bf03-4759-b6ab-8edefafd8b44", + "iso": "dj", + "name": "Djibouti", + "code": "+253", + "flagImagePos": "-1px -2874px" + }, + { + "id": "f5eec2ba-1a0b-465c-b3e5-9bd8458d0704", + "iso": "dm", + "name": "Dominica", + "code": "+1", + "flagImagePos": "-1px -3350px" + }, + { + "id": "cb6921fc-df2a-4a97-8a34-4d901ac1e994", + "iso": "do", + "name": "Dominican Republic", + "code": "+1", + "flagImagePos": "-1px -2007px" + }, + { + "id": "7d6641f1-ef97-4bee-b1b8-0f54fea35aeb", + "iso": "ec", + "name": "Ecuador", + "code": "+593", + "flagImagePos": "-1px -1531px" + }, + { + "id": "dfeb30b9-b4b8-4931-9334-c3961b7843a6", + "iso": "eg", + "name": "Egypt", + "code": "+20", + "flagImagePos": "-1px -3027px" + }, + { + "id": "7d9f7158-7206-491f-a614-6a3e7e6af354", + "iso": "sv", + "name": "El Salvador", + "code": "+503", + "flagImagePos": "-1px -2160px" + }, + { + "id": "bcdbebc2-a51d-4891-93b0-52b463d0841d", + "iso": "gq", + "name": "Equatorial Guinea", + "code": "+240", + "flagImagePos": "-1px -1973px" + }, + { + "id": "53c2c225-f321-406f-b377-7c8b6720bcb4", + "iso": "er", + "name": "Eritrea", + "code": "+291", + "flagImagePos": "-1px -936px" + }, + { + "id": "ba0e995a-17a8-48ff-88e6-54ff8207b038", + "iso": "ee", + "name": "Estonia", + "code": "+372", + "flagImagePos": "-1px -3333px" + }, + { + "id": "abe9af9b-91da-4bba-9adf-a496bf414719", + "iso": "sz", + "name": "Eswatini", + "code": "+268", + "flagImagePos": "-1px -3129px" + }, + { + "id": "e993ecc8-732a-4446-8ab1-144c084f3192", + "iso": "et", + "name": "Ethiopia", + "code": "+251", + "flagImagePos": "-1px -3367px" + }, + { + "id": "6c7aae9d-e18d-4d09-8467-7bb99d925768", + "iso": "fk", + "name": "Falkland Islands (Islas Malvinas)", + "code": "+500", + "flagImagePos": "-1px -3809px" + }, + { + "id": "92e704eb-9573-4d91-b932-2b1eddaacb3e", + "iso": "fo", + "name": "Faroe Islands", + "code": "+298", + "flagImagePos": "-1px -1429px" + }, + { + "id": "561c079c-69c2-4e62-b947-5cd76783a67c", + "iso": "fj", + "name": "Fiji", + "code": "+679", + "flagImagePos": "-1px -2500px" + }, + { + "id": "3f31a88e-c7ed-47fa-9aae-2058be7cbe09", + "iso": "fi", + "name": "Finland", + "code": "+358", + "flagImagePos": "-1px -2568px" + }, + { + "id": "4c8ba1fc-0203-4a8f-8321-4dda4a0c6732", + "iso": "fr", + "name": "France", + "code": "+33", + "flagImagePos": "-1px -324px" + }, + { + "id": "198074d5-67a2-4fd3-b13d-429a394b6371", + "iso": "gf", + "name": "French Guiana", + "code": "+594", + "flagImagePos": "-1px -324px" + }, + { + "id": "2f5ff3d1-745e-48a1-b4e8-a377b22af812", + "iso": "pf", + "name": "French Polynesia", + "code": "+689", + "flagImagePos": "-1px -2262px" + }, + { + "id": "a8b80121-5529-4cfe-83fb-6b1f6c81abcb", + "iso": "ga", + "name": "Gabon", + "code": "+241", + "flagImagePos": "-1px -1157px" + }, + { + "id": "c9bc7d57-7883-4f63-bc6e-5dcc3db8612d", + "iso": "gm", + "name": "Gambia", + "code": "+220", + "flagImagePos": "-1px -817px" + }, + { + "id": "1fc146d8-cebe-4ef1-bb0f-30bd0870ccf9", + "iso": "ge", + "name": "Georgia", + "code": "+995", + "flagImagePos": "-1px -1123px" + }, + { + "id": "e74ac4b1-0b4b-4630-bac0-2e53e270b363", + "iso": "de", + "name": "Germany", + "code": "+49", + "flagImagePos": "-1px -3452px" + }, + { + "id": "adda89c9-4b47-4552-85c4-668f2cef2dbd", + "iso": "gh", + "name": "Ghana", + "code": "+233", + "flagImagePos": "-1px -2891px" + }, + { + "id": "962a059b-a5ac-4e2f-9405-5c418cadb6b0", + "iso": "gi", + "name": "Gibraltar", + "code": "+350", + "flagImagePos": "-1px -341px" + }, + { + "id": "0acd0dae-0f39-4c23-be1d-c0295539d8c4", + "iso": "gr", + "name": "Greece", + "code": "+30", + "flagImagePos": "-1px -188px" + }, + { + "id": "7529a6e4-8a6a-4c27-885e-ff0c5e15e515", + "iso": "gl", + "name": "Greenland", + "code": "+299", + "flagImagePos": "-1px -2347px" + }, + { + "id": "416ba85d-f860-48dc-9c60-32602c07e266", + "iso": "gd", + "name": "Grenada", + "code": "+1", + "flagImagePos": "-1px -3316px" + }, + { + "id": "f43f1f96-1fb1-4e5e-b818-71e60e501fd4", + "iso": "gp", + "name": "Guadeloupe", + "code": "+590", + "flagImagePos": "-1px -511px" + }, + { + "id": "e29122da-20cf-4d24-bc68-93f9c3296730", + "iso": "gu", + "name": "Guam", + "code": "+1", + "flagImagePos": "-1px -3265px" + }, + { + "id": "8a24ff28-dcae-4846-b0c1-18cfcb04de06", + "iso": "gt", + "name": "Guatemala", + "code": "+502", + "flagImagePos": "-1px -1208px" + }, + { + "id": "b617a005-be15-49c8-9533-c0376681a564", + "iso": "gn", + "name": "Guinea", + "code": "+224", + "flagImagePos": "-1px -3520px" + }, + { + "id": "d9913e74-e340-4a4f-bf4b-aaaf1747364b", + "iso": "gw", + "name": "Guinea-Bissau", + "code": "+245", + "flagImagePos": "-1px -2602px" + }, + { + "id": "c8245da4-cd4f-4818-a41e-42afec6faa9a", + "iso": "gy", + "name": "Guyana", + "code": "+592", + "flagImagePos": "-1px -1038px" + }, + { + "id": "c598961d-3040-4dbb-8934-6d8eb4b9be97", + "iso": "ht", + "name": "Haiti", + "code": "+509", + "flagImagePos": "-1px -392px" + }, + { + "id": "f51aadf1-3c7a-4d24-b8fb-69c7e05243e4", + "iso": "hn", + "name": "Honduras", + "code": "+504", + "flagImagePos": "-1px -2959px" + }, + { + "id": "a621dbe5-fb11-4f7f-9a8d-2330bd20c563", + "iso": "hk", + "name": "Hong Kong", + "code": "+852", + "flagImagePos": "-1px -3707px" + }, + { + "id": "a113fe26-d409-4ab7-b27c-0e8ac112071f", + "iso": "hu", + "name": "Hungary", + "code": "+36", + "flagImagePos": "-1px -902px" + }, + { + "id": "6430b612-4071-4614-bfdb-408fbb0b8fa4", + "iso": "is", + "name": "Iceland", + "code": "+354", + "flagImagePos": "-1px -2704px" + }, + { + "id": "4cce1334-df1f-4b11-9f15-a4faaac3d0db", + "iso": "in", + "name": "India", + "code": "+91", + "flagImagePos": "-1px -2245px" + }, + { + "id": "54969b2f-6aa9-4a58-850d-b4779ef3038e", + "iso": "id", + "name": "Indonesia", + "code": "+62", + "flagImagePos": "-1px -2653px" + }, + { + "id": "cb631628-5854-44d2-9dbc-47cdf9c9ea5e", + "iso": "ir", + "name": "Iran", + "code": "+98", + "flagImagePos": "-1px -2738px" + }, + { + "id": "21a50cc1-954c-49c2-8296-696f1f57b79e", + "iso": "iq", + "name": "Iraq", + "code": "+964", + "flagImagePos": "-1px -851px" + }, + { + "id": "3e17cb8a-9c44-4c75-b417-556546ceebff", + "iso": "ie", + "name": "Ireland", + "code": "+353", + "flagImagePos": "-1px -2670px" + }, + { + "id": "0a15f5a3-7571-478a-9fcd-6cbd6563e08c", + "iso": "il", + "name": "Israel", + "code": "+972", + "flagImagePos": "-1px -426px" + }, + { + "id": "2cbab786-d79b-4ea1-ab26-0553c5e423d3", + "iso": "it", + "name": "Italy", + "code": "+39", + "flagImagePos": "-1px -154px" + }, + { + "id": "33a67cd8-0858-46c3-b833-4fd395d2daa4", + "iso": "jm", + "name": "Jamaica", + "code": "+1", + "flagImagePos": "-1px -2296px" + }, + { + "id": "5edf8bb6-6a29-44ee-b5f2-7d7cbf61f971", + "iso": "jp", + "name": "Japan", + "code": "+81", + "flagImagePos": "-1px -528px" + }, + { + "id": "879b69bb-3f8f-484f-a767-7fdeef6bae15", + "iso": "jo", + "name": "Jordan", + "code": "+962", + "flagImagePos": "-1px -1905px" + }, + { + "id": "4217e52c-2835-4c7b-87d3-e290c4fa6074", + "iso": "kz", + "name": "Kazakhstan", + "code": "+7", + "flagImagePos": "-1px -1565px" + }, + { + "id": "934b172d-4427-47f6-8648-6411652be23d", + "iso": "ke", + "name": "Kenya", + "code": "+254", + "flagImagePos": "-1px -3605px" + }, + { + "id": "2358e177-3956-4bcf-a954-56275e90e28d", + "iso": "ki", + "name": "Kiribati", + "code": "+686", + "flagImagePos": "-1px -477px" + }, + { + "id": "98e8fae8-cd1b-419f-813b-ee348b51d843", + "iso": "xk", + "name": "Kosovo", + "code": "+383", + "flagImagePos": "-1px -3860px" + }, + { + "id": "5376f774-4fcb-47dc-b118-e48d34b030ef", + "iso": "kw", + "name": "Kuwait", + "code": "+965", + "flagImagePos": "-1px -3435px" + }, + { + "id": "9bc380c4-5840-4d26-a615-310cd817ae94", + "iso": "kg", + "name": "Kyrgyzstan", + "code": "+996", + "flagImagePos": "-1px -2143px" + }, + { + "id": "3278e7f0-176b-4352-9e38-df59b052b91f", + "iso": "la", + "name": "Laos", + "code": "+856", + "flagImagePos": "-1px -562px" + }, + { + "id": "e2ba5fad-f531-467c-b195-a6cd90136e19", + "iso": "lv", + "name": "Latvia", + "code": "+371", + "flagImagePos": "-1px -2619px" + }, + { + "id": "49f74ca5-9ff1-44af-8e9c-59e1c4704e83", + "iso": "lb", + "name": "Lebanon", + "code": "+961", + "flagImagePos": "-1px -1616px" + }, + { + "id": "d94b6d96-17c1-4de8-abc3-3e14873b62c0", + "iso": "ls", + "name": "Lesotho", + "code": "+266", + "flagImagePos": "-1px -3010px" + }, + { + "id": "e35005f8-285e-4fe5-9cda-def721d9cc7b", + "iso": "lr", + "name": "Liberia", + "code": "+231", + "flagImagePos": "-1px -2823px" + }, + { + "id": "60788779-78f0-4b2b-8ad8-c7e4bbde10b5", + "iso": "ly", + "name": "Libya", + "code": "+218", + "flagImagePos": "-1px -137px" + }, + { + "id": "f24ad4ea-454a-4d40-a1f1-db188ec0b75e", + "iso": "li", + "name": "Liechtenstein", + "code": "+423", + "flagImagePos": "-1px -1276px" + }, + { + "id": "f6709b72-4150-4cde-a37b-e6eb95f5bd1d", + "iso": "lt", + "name": "Lithuania", + "code": "+370", + "flagImagePos": "-1px -1446px" + }, + { + "id": "0d0c1a84-f645-4ffe-87d2-9a7bb4f88bbc", + "iso": "lu", + "name": "Luxembourg", + "code": "+352", + "flagImagePos": "-1px -1922px" + }, + { + "id": "5b3fdebe-a4ed-47c6-88c3-d867d3a79bf0", + "iso": "mo", + "name": "Macao", + "code": "+853", + "flagImagePos": "-1px -3554px" + }, + { + "id": "6a84f456-bc77-4b76-8651-e2a0994f3278", + "iso": "mg", + "name": "Madagascar", + "code": "+261", + "flagImagePos": "-1px -1667px" + }, + { + "id": "2a5d5baf-1db7-4606-a330-227834c77098", + "iso": "mw", + "name": "Malawi", + "code": "+265", + "flagImagePos": "-1px -2942px" + }, + { + "id": "f2b32090-6d8d-40db-ba50-a63037926508", + "iso": "my", + "name": "Malaysia", + "code": "+60", + "flagImagePos": "-1px -2517px" + }, + { + "id": "51c7830c-0c76-44ed-bcdf-be75688e1d0c", + "iso": "mv", + "name": "Maldives", + "code": "+960", + "flagImagePos": "-1px -800px" + }, + { + "id": "ea7a2274-0542-4bbb-b629-aa63bef97442", + "iso": "ml", + "name": "Mali", + "code": "+223", + "flagImagePos": "-1px -3469px" + }, + { + "id": "6f70796e-8f64-4a1a-ac2a-990d7d502db3", + "iso": "mt", + "name": "Malta", + "code": "+356", + "flagImagePos": "-1px -2041px" + }, + { + "id": "c60f429e-0d4f-42cf-96f9-e7dc4fdcd5ee", + "iso": "mh", + "name": "Marshall Islands", + "code": "+692", + "flagImagePos": "-1px -1463px" + }, + { + "id": "e8afae89-e5b0-4551-bbd4-bbfcee50c8ad", + "iso": "mq", + "name": "Martinique", + "code": "+596", + "flagImagePos": "-1px -239px" + }, + { + "id": "361afc7c-ee94-464b-b5cb-f059ecd79e99", + "iso": "mr", + "name": "Mauritania", + "code": "+222", + "flagImagePos": "-1px -307px" + }, + { + "id": "bce43b5e-d2f7-47ca-b5c9-9ae72ba67bda", + "iso": "mu", + "name": "Mauritius", + "code": "+230", + "flagImagePos": "-1px -2993px" + }, + { + "id": "d153dc32-4821-4f05-a5c8-564d003da5e1", + "iso": "mx", + "name": "Mexico", + "code": "+52", + "flagImagePos": "-1px -2755px" + }, + { + "id": "80f9f386-231f-4d96-b950-5f6b6edbeb63", + "iso": "fm", + "name": "Micronesia", + "code": "+691", + "flagImagePos": "-1px -2313px" + }, + { + "id": "a1d89e32-4b91-4519-b0d9-7d61299394ef", + "iso": "md", + "name": "Moldova", + "code": "+373", + "flagImagePos": "-1px -3690px" + }, + { + "id": "0afeb22c-c106-479b-af45-1380fb8b404c", + "iso": "mc", + "name": "Monaco", + "code": "+377", + "flagImagePos": "-1px -1191px" + }, + { + "id": "a18d0204-7c4a-425c-a33e-cbfac01be162", + "iso": "mn", + "name": "Mongolia", + "code": "+976", + "flagImagePos": "-1px -3503px" + }, + { + "id": "260479fc-0410-4ccd-a963-e06c9f059bdb", + "iso": "me", + "name": "Montenegro", + "code": "+382", + "flagImagePos": "-1px -2976px" + }, + { + "id": "a66872f1-ba90-420f-8f55-f0fbb10abce1", + "iso": "ms", + "name": "Montserrat", + "code": "+1", + "flagImagePos": "-1px -749px" + }, + { + "id": "8fd1ba13-cb1a-488d-b715-01724d56d9dd", + "iso": "ma", + "name": "Morocco", + "code": "+212", + "flagImagePos": "-1px -3214px" + }, + { + "id": "5d26fba4-6d15-4cd4-a23f-9034d952e580", + "iso": "mz", + "name": "Mozambique", + "code": "+258", + "flagImagePos": "-1px -834px" + }, + { + "id": "f9c12031-14dc-495f-b150-28dddce17e3f", + "iso": "mm", + "name": "Myanmar (Burma)", + "code": "+95", + "flagImagePos": "-1px -18px" + }, + { + "id": "6e21e956-2740-4058-a758-3b249f628a7b", + "iso": "na", + "name": "Namibia", + "code": "+264", + "flagImagePos": "-1px -2534px" + }, + { + "id": "4a07dd5a-9341-4b06-969f-4bcd9c32e2a0", + "iso": "nr", + "name": "Nauru", + "code": "+674", + "flagImagePos": "-1px -2330px" + }, + { + "id": "9d7121ce-1445-4c84-9401-ddc703d9dedb", + "iso": "np", + "name": "Nepal", + "code": "+977", + "flagImagePos": "-1px -120px" + }, + { + "id": "31fbb24d-7c38-4ca8-b385-48d76a0685e3", + "iso": "nl", + "name": "Netherlands", + "code": "+31", + "flagImagePos": "-1px -1888px" + }, + { + "id": "18071cc2-c457-4b4f-9217-2519a0b52c25", + "iso": "nc", + "name": "New Caledonia", + "code": "+687", + "flagImagePos": "-1px -1650px" + }, + { + "id": "c4b0e7d1-08b2-421b-8ff6-913020cbf271", + "iso": "nz", + "name": "New Zealand", + "code": "+64", + "flagImagePos": "-1px -2024px" + }, + { + "id": "25719230-2c64-4525-96c4-d4427dd2e40b", + "iso": "ni", + "name": "Nicaragua", + "code": "+505", + "flagImagePos": "-1px -171px" + }, + { + "id": "a1090a0b-7f89-4d75-8c92-e460da9103ab", + "iso": "ne", + "name": "Niger", + "code": "+227", + "flagImagePos": "-1px -715px" + }, + { + "id": "6869e4bb-32b8-43ff-84d1-67d9ee832e1f", + "iso": "ng", + "name": "Nigeria", + "code": "+234", + "flagImagePos": "-1px -3418px" + }, + { + "id": "52b3ae35-196a-4e22-81e2-67b816a32d0e", + "iso": "nu", + "name": "Niue", + "code": "+683", + "flagImagePos": "-1px -2840px" + }, + { + "id": "9f4e45d4-c7e1-4ba9-84d0-e712e7213c95", + "iso": "nf", + "name": "Norfolk Island", + "code": "+672", + "flagImagePos": "-1px -256px" + }, + { + "id": "2db1b02c-631e-40a0-94d8-f1e567b1f705", + "iso": "kp", + "name": "North Korea", + "code": "+850", + "flagImagePos": "-1px -2415px" + }, + { + "id": "92621b3f-55f5-42bb-8604-d0302e355e31", + "iso": "mk", + "name": "North Macedonia", + "code": "+389", + "flagImagePos": "-1px -1769px" + }, + { + "id": "3cee8ab2-5cb3-43ea-b8ab-7016187d33e9", + "iso": "mp", + "name": "Northern Mariana Islands", + "code": "+1", + "flagImagePos": "-1px -919px" + }, + { + "id": "77683fad-f106-4a94-a629-9562650edb35", + "iso": "no", + "name": "Norway", + "code": "+47", + "flagImagePos": "-1px -1089px" + }, + { + "id": "09090411-ef9b-44f3-aeb9-65b5e338b8d6", + "iso": "om", + "name": "Oman", + "code": "+968", + "flagImagePos": "-1px -3384px" + }, + { + "id": "18d4f06b-233b-4398-a9f8-6b4a4eaf6c71", + "iso": "pk", + "name": "Pakistan", + "code": "+92", + "flagImagePos": "-1px -2772px" + }, + { + "id": "b1da5023-aab9-431c-921c-4f3e12b1aa7a", + "iso": "pw", + "name": "Palau", + "code": "+680", + "flagImagePos": "-1px -273px" + }, + { + "id": "e6442ab2-ac99-4a02-9d7c-fd878e50de8a", + "iso": "ps", + "name": "Palestine", + "code": "+970", + "flagImagePos": "-1px -1548px" + }, + { + "id": "6bb10fb5-8b4a-4136-a82e-6be6c017ab76", + "iso": "pa", + "name": "Panama", + "code": "+507", + "flagImagePos": "-1px -1106px" + }, + { + "id": "b070a014-2ce4-4939-a868-951bd1e70923", + "iso": "pg", + "name": "Papua New Guinea", + "code": "+675", + "flagImagePos": "-1px -1939px" + }, + { + "id": "5e23c743-ce7d-4abc-9dd4-44a700b29090", + "iso": "py", + "name": "Paraguay", + "code": "+595", + "flagImagePos": "-1px -3231px" + }, + { + "id": "1a83f99d-91b3-438d-a576-5bf0f05fdd12", + "iso": "pe", + "name": "Peru", + "code": "+51", + "flagImagePos": "-1px -1225px" + }, + { + "id": "667c9699-46b9-40f9-a41f-2c52826bb3cb", + "iso": "ph", + "name": "Philippines", + "code": "+63", + "flagImagePos": "-1px -2432px" + }, + { + "id": "b84030ab-3193-4aa2-aef2-d4d21997e536", + "iso": "pl", + "name": "Poland", + "code": "+48", + "flagImagePos": "-1px -1514px" + }, + { + "id": "e26d0064-6173-42ab-b761-bf8c639199fa", + "iso": "pt", + "name": "Portugal", + "code": "+351", + "flagImagePos": "-1px -664px" + }, + { + "id": "0fd9770d-2a91-4b81-8633-f465bc151e16", + "iso": "pr", + "name": "Puerto Rico", + "code": "+1", + "flagImagePos": "-1px -596px" + }, + { + "id": "f866eeeb-e64f-4123-ab63-c16e0a00d029", + "iso": "qa", + "name": "Qatar", + "code": "+974", + "flagImagePos": "-1px -579px" + }, + { + "id": "c3a3fb54-5731-4a28-96bd-4190cfeeaff0", + "iso": "re", + "name": "Réunion", + "code": "+262", + "flagImagePos": "-1px -324px" + }, + { + "id": "a6a48809-7e33-42c8-a25a-56ccdd7ccdfe", + "iso": "ro", + "name": "Romania", + "code": "+40", + "flagImagePos": "-1px -885px" + }, + { + "id": "9556d1e9-3d02-4c5b-a0ce-97a2fd55c74a", + "iso": "ru", + "name": "Russia", + "code": "+7", + "flagImagePos": "-1px -868px" + }, + { + "id": "6f7f0a97-e8b5-455d-bace-6953de7324eb", + "iso": "rw", + "name": "Rwanda", + "code": "+250", + "flagImagePos": "-1px -3673px" + }, + { + "id": "e251cad5-7655-48f7-9892-6edf04a14fd7", + "iso": "ws", + "name": "Samoa", + "code": "+685", + "flagImagePos": "-1px -3163px" + }, + { + "id": "f1cfec8c-a960-43b3-8e11-2cad72b4fff8", + "iso": "sm", + "name": "San Marino", + "code": "+378", + "flagImagePos": "-1px -2908px" + }, + { + "id": "c5301260-13dc-4012-9678-2b57a5e409ae", + "iso": "st", + "name": "São Tomé & Príncipe", + "code": "+239", + "flagImagePos": "-1px -3299px" + }, + { + "id": "02599f80-225a-451b-8c25-03b8993f88ac", + "iso": "sa", + "name": "Saudi Arabia", + "code": "+966", + "flagImagePos": "-1px -52px" + }, + { + "id": "a54c3469-9668-4063-bfa0-04c450b43d3e", + "iso": "sn", + "name": "Senegal", + "code": "+221", + "flagImagePos": "-1px -2925px" + }, + { + "id": "687ea07b-a7df-4778-b802-b040676fa56c", + "iso": "rs", + "name": "Serbia", + "code": "+381", + "flagImagePos": "-1px -3401px" + }, + { + "id": "d010fb25-7044-4055-9c60-25bc89d83f64", + "iso": "sc", + "name": "Seychelles", + "code": "+248", + "flagImagePos": "-1px -1327px" + }, + { + "id": "0c46a1e9-fcd8-4e7e-bbb1-ef3bfa83539b", + "iso": "sl", + "name": "Sierra Leone", + "code": "+232", + "flagImagePos": "-1px -970px" + }, + { + "id": "e724edb6-9df4-42fb-bc1e-417996aa3020", + "iso": "sg", + "name": "Singapore", + "code": "+65", + "flagImagePos": "-1px -35px" + }, + { + "id": "7478814a-dc3f-41ff-9341-da7e07ba8499", + "iso": "sx", + "name": "Sint Maarten", + "code": "+1", + "flagImagePos": "-1px -3826px" + }, + { + "id": "b1a34e32-38dd-4a38-b63a-7133baf1417a", + "iso": "sk", + "name": "Slovakia", + "code": "+421", + "flagImagePos": "-1px -3044px" + }, + { + "id": "1c1689a5-580b-411f-9283-b1e8333b351e", + "iso": "si", + "name": "Slovenia", + "code": "+386", + "flagImagePos": "-1px -1582px" + }, + { + "id": "4b1c6a42-90b0-49ea-b968-8c95b871f0ec", + "iso": "sb", + "name": "Solomon Islands", + "code": "+677", + "flagImagePos": "-1px -1361px" + }, + { + "id": "7ec9fdff-8ae6-4a14-b55e-6262d46bc3ef", + "iso": "so", + "name": "Somalia", + "code": "+252", + "flagImagePos": "-1px -1786px" + }, + { + "id": "5e62f404-3e2c-4d63-ad7b-ab0755903842", + "iso": "za", + "name": "South Africa", + "code": "+27", + "flagImagePos": "-1px -3248px" + }, + { + "id": "31966c2a-7d24-4ebc-8e02-392e4f04f12b", + "iso": "kr", + "name": "South Korea", + "code": "+82", + "flagImagePos": "-1px -3078px" + }, + { + "id": "1b7ba825-bf7d-42c0-bb73-81f10a4009bf", + "iso": "ss", + "name": "South Sudan", + "code": "+211", + "flagImagePos": "-1px -3775px" + }, + { + "id": "55c4137b-e437-4e80-bc8f-7857cd7c9364", + "iso": "es", + "name": "Spain", + "code": "+34", + "flagImagePos": "-1px -1480px" + }, + { + "id": "fce4c284-e6a1-4e8c-96ca-6edf09e8a401", + "iso": "lk", + "name": "Sri Lanka", + "code": "+94", + "flagImagePos": "-1px -3622px" + }, + { + "id": "0ae719a5-ae43-45d0-b669-66976a050ef1", + "iso": "bl", + "name": "St. Barthélemy", + "code": "+590", + "flagImagePos": "-1px -324px" + }, + { + "id": "a588cc85-32a4-45ff-ba69-627105dab27a", + "iso": "sh", + "name": "St. Helena", + "code": "+290", + "flagImagePos": "-1px -630px" + }, + { + "id": "f065aa7c-8d9e-419c-bbf0-9a97011cf272", + "iso": "kn", + "name": "St. Kitts & Nevis", + "code": "+1", + "flagImagePos": "-1px -103px" + }, + { + "id": "9ea73bcc-2bf5-4ad9-9b39-de33de125f98", + "iso": "lc", + "name": "St. Lucia", + "code": "+1", + "flagImagePos": "-1px -1837px" + }, + { + "id": "86a5a0e8-bfd4-480e-9bc0-7b88b2248a57", + "iso": "mf", + "name": "St. Martin", + "code": "+590", + "flagImagePos": "-1px -86px" + }, + { + "id": "540857ba-923a-4656-a19f-cb3914825ecc", + "iso": "pm", + "name": "St. Pierre & Miquelon", + "code": "+508", + "flagImagePos": "-1px -1378px" + }, + { + "id": "d381eb44-e77a-4dbd-abbb-224d7158e96d", + "iso": "vc", + "name": "St. Vincent & Grenadines", + "code": "+1", + "flagImagePos": "-1px -3588px" + }, + { + "id": "7015db62-072d-49a2-8320-7587ec8b952f", + "iso": "sd", + "name": "Sudan", + "code": "+249", + "flagImagePos": "-1px -443px" + }, + { + "id": "d7bbb285-aa4e-4a92-8613-8d2645c351ee", + "iso": "sr", + "name": "Suriname", + "code": "+597", + "flagImagePos": "-1px -3656px" + }, + { + "id": "78978092-7be3-4ec8-b201-068089035cff", + "iso": "se", + "name": "Sweden", + "code": "+46", + "flagImagePos": "-1px -494px" + }, + { + "id": "9f3fbec3-b58a-4b5a-9c4b-3997398c4148", + "iso": "ch", + "name": "Switzerland", + "code": "+41", + "flagImagePos": "-1px -1718px" + }, + { + "id": "7ce0562c-fdc4-444c-bba3-02239c3c17da", + "iso": "sy", + "name": "Syria", + "code": "+963", + "flagImagePos": "-1px -2449px" + }, + { + "id": "2d57a4a1-3f5a-41a2-a320-74a8f0db92e5", + "iso": "tw", + "name": "Taiwan", + "code": "+886", + "flagImagePos": "-1px -647px" + }, + { + "id": "e1f747c5-4e91-487b-8265-8f70b3430849", + "iso": "tj", + "name": "Tajikistan", + "code": "+992", + "flagImagePos": "-1px -222px" + }, + { + "id": "f07e257c-e049-4046-b031-f4348fb1734a", + "iso": "tz", + "name": "Tanzania", + "code": "+255", + "flagImagePos": "-1px -3146px" + }, + { + "id": "684a0dde-5b5f-4072-98a4-46fc8de09556", + "iso": "th", + "name": "Thailand", + "code": "+66", + "flagImagePos": "-1px -1242px" + }, + { + "id": "0376e29f-d9dd-4449-aa4e-d47353c16873", + "iso": "tl", + "name": "Timor-Leste", + "code": "+670", + "flagImagePos": "-1px -3843px" + }, + { + "id": "fd647814-fc64-4724-bba7-4cd4da26c11e", + "iso": "tg", + "name": "Togo", + "code": "+228", + "flagImagePos": "-1px -783px" + }, + { + "id": "ed271b14-39ee-4403-9be6-b54ac89b0ed3", + "iso": "tk", + "name": "Tokelau", + "code": "+690", + "flagImagePos": "-1px -3792px" + }, + { + "id": "e2b83ecb-5a79-4ca0-9860-4baeae0380bb", + "iso": "to", + "name": "Tonga", + "code": "+676", + "flagImagePos": "-1px -1395px" + }, + { + "id": "33bca09c-cc33-4680-929b-191ccbbc959a", + "iso": "tt", + "name": "Trinidad & Tobago", + "code": "+1", + "flagImagePos": "-1px -545px" + }, + { + "id": "ab25c5da-7698-4b96-af34-5d20523915d9", + "iso": "tn", + "name": "Tunisia", + "code": "+216", + "flagImagePos": "-1px -698px" + }, + { + "id": "784ac645-bc50-4b35-b5fb-effd72f99749", + "iso": "tr", + "name": "Turkey", + "code": "+90", + "flagImagePos": "-1px -2126px" + }, + { + "id": "9a3b8bd3-bc73-4251-a068-a4842365e91a", + "iso": "tm", + "name": "Turkmenistan", + "code": "+993", + "flagImagePos": "-1px -3486px" + }, + { + "id": "361bcad4-44d1-41fb-9bbf-39ea0fb87d49", + "iso": "tc", + "name": "Turks & Caicos Islands", + "code": "+1", + "flagImagePos": "-1px -1701px" + }, + { + "id": "26fb1484-c756-4592-8523-99af9c870bb5", + "iso": "tv", + "name": "Tuvalu", + "code": "+688", + "flagImagePos": "-1px -358px" + }, + { + "id": "cdb8455e-4eda-48f7-b30a-63c20838a364", + "iso": "vi", + "name": "U.S. Virgin Islands", + "code": "+1", + "flagImagePos": "-1px -2381px" + }, + { + "id": "f47476cc-3da6-4377-83c9-33ab9f5293d1", + "iso": "ug", + "name": "Uganda", + "code": "+256", + "flagImagePos": "-1px -1497px" + }, + { + "id": "5fcb791a-91be-416a-895d-0502fc509838", + "iso": "ua", + "name": "Ukraine", + "code": "+380", + "flagImagePos": "-1px -2721px" + }, + { + "id": "7c8e1ced-0dd7-42b6-880b-19b3486d11e5", + "iso": "ae", + "name": "United Arab Emirates", + "code": "+971", + "flagImagePos": "-1px -3061px" + }, + { + "id": "9f1362e7-e87c-4123-ade8-e5cfa6e99c09", + "iso": "gb", + "name": "United Kingdom", + "code": "+44", + "flagImagePos": "-1px -86px" + }, + { + "id": "f9033267-9df0-46e4-9f79-c8b022e5c835", + "iso": "us", + "name": "United States", + "code": "+1", + "flagImagePos": "-1px -69px" + }, + { + "id": "2cab7122-ec9a-48ac-8415-392b4f67ae51", + "iso": "uy", + "name": "Uruguay", + "code": "+598", + "flagImagePos": "-1px -3571px" + }, + { + "id": "f442740c-94c3-4f2f-afb2-c7c279224b5f", + "iso": "uz", + "name": "Uzbekistan", + "code": "+998", + "flagImagePos": "-1px -1293px" + }, + { + "id": "e6774547-6ab1-41a2-8107-201f913937b2", + "iso": "vu", + "name": "Vanuatu", + "code": "+678", + "flagImagePos": "-1px -1633px" + }, + { + "id": "d600d6b0-e21f-4b6e-9036-0435a6ac2ea6", + "iso": "va", + "name": "Vatican City", + "code": "+39", + "flagImagePos": "-1px -3197px" + }, + { + "id": "b8e0072d-498b-4bb4-a5b6-354d4200f882", + "iso": "ve", + "name": "Venezuela", + "code": "+58", + "flagImagePos": "-1px -1344px" + }, + { + "id": "15dc081a-4690-42e9-a40d-b3bcea3173fc", + "iso": "vn", + "name": "Vietnam", + "code": "+84", + "flagImagePos": "-1px -1259px" + }, + { + "id": "4452a787-5f31-4eb7-b14c-ae3175564ae5", + "iso": "wf", + "name": "Wallis & Futuna", + "code": "+681", + "flagImagePos": "-1px -324px" + }, + { + "id": "237c9f8d-3b6c-4b70-af72-8a58a7154144", + "iso": "ye", + "name": "Yemen", + "code": "+967", + "flagImagePos": "-1px -2211px" + }, + { + "id": "02a76f62-3078-472a-bd42-edb759cf3079", + "iso": "zm", + "name": "Zambia", + "code": "+260", + "flagImagePos": "-1px -2109px" + }, + { + "id": "10e8e117-6832-4d3f-9b05-f66832c2f5ec", + "iso": "zw", + "name": "Zimbabwe", + "code": "+263", + "flagImagePos": "-1px -2789px" + } + ] + }, + "contacts_tags": { + "value": [ + { + "id": "c31e9e5d-e0cb-4574-a13f-8a6ee5ff8309", + "title": "Work" + }, + { + "id": "a8991c76-2fda-4bbd-a718-df13d6478847", + "title": "Friend" + }, + { + "id": "56ddbd47-4078-4ddd-8448-73c5e88d5f59", + "title": "Family" + }, + { + "id": "2026ce08-d08f-4b4f-9506-b10cdb5b104f", + "title": "High School" + }, + { + "id": "65930b5a-5d2a-4303-b11f-865d69e6fdb5", + "title": "College" + }, + { + "id": "3eaab175-ec0d-4db7-bc3b-efc633c769be", + "title": "Baseball Team" + }, + { + "id": "cbde2486-5033-4e09-838e-e901b108cd41", + "title": "Band" + } + ] + }, + "tasks": { + "value": [ + { + "id": "f65d517a-6f69-4c88-81f5-416f47405ce1", + "type": "section", + "title": "Company internal application v2.0.0", + "notes": "Magna consectetur culpa duis ad est tempor pariatur velit ullamco aute exercitation magna sunt commodo minim enim aliquip eiusmod ipsum adipisicing magna ipsum reprehenderit lorem magna voluptate magna aliqua culpa.\n\nSit nisi adipisicing pariatur enim enim sunt officia ad labore voluptate magna proident velit excepteur pariatur cillum sit excepteur elit veniam excepteur minim nisi cupidatat proident dolore irure veniam mollit.", + "completed": false, + "dueDate": "2017-10-18T13:03:37.943Z", + "priority": 1, + "tags": [ + "91658b8a-f382-4b0c-a53f-e9390351c2c5", + "51483dd3-cb98-4400-9128-4bd66b455807" + ], + "assignedTo": null, + "subTasks": [ + { + "id": "2768a969-a316-449b-bf82-93cff4252cbf", + "title": "Minim irure fugiat ullamco irure", + "completed": false + }, + { + "id": "6cc5ac8f-3a02-47e6-ad4b-0bd0222e2717", + "title": "Sint velit ex in adipisicing fugiat", + "completed": false + } + ], + "order": 0 + }, + { + "id": "0fcece82-1691-4b98-a9b9-b63218f9deef", + "type": "task", + "title": "Create the landing/marketing page and host it on the beta channel", + "notes": "Et in lorem qui ipsum deserunt duis exercitation lorem elit qui qui ipsum tempor nulla velit aliquip enim consequat incididunt pariatur duis excepteur elit irure nulla ipsum dolor dolore est.\n\nAute deserunt nostrud id non ipsum do adipisicing laboris in minim officia magna elit minim mollit elit velit veniam lorem pariatur veniam sit excepteur irure commodo excepteur duis quis in.", + "completed": false, + "dueDate": null, + "priority": 0, + "tags": [], + "assignedTo": "e2c81627-a8a1-4bbc-9adc-ac4281e040d4", + "subTasks": [], + "order": 1 + }, + { + "id": "2e6971cd-49d5-49f1-8cbd-fba5c71e6062", + "type": "task", + "title": "Move dependency system to Yarn for easier package management", + "notes": "Id fugiat et cupidatat magna nulla nulla eu cillum officia nostrud dolore in veniam ullamco nulla ex duis est enim nisi aute ipsum velit et laboris est pariatur est culpa.\n\nCulpa sunt ipsum esse quis excepteur enim culpa est voluptate reprehenderit consequat duis officia irure voluptate veniam dolore fugiat dolor est amet nostrud non velit irure do voluptate id sit.", + "completed": false, + "dueDate": "2019-05-24T03:55:38.969Z", + "priority": 0, + "tags": [ + "c6058d0d-a4b0-4453-986a-9d249ec230b1", + "2b884143-419a-45ca-a7f6-48f99f4e7798", + "91658b8a-f382-4b0c-a53f-e9390351c2c5" + ], + "assignedTo": "88a2a76c-0e6f-49da-b617-46d7c3b6e64d", + "subTasks": [ + { + "id": "b9566b52-82cd-4d2a-b9b6-240c6b44e52b", + "title": "Nulla officia elit adipisicing", + "completed": false + }, + { + "id": "76f4dc8d-4803-4d98-b461-367a1d3746a8", + "title": "Magna nisi ut aliquip aliquip amet deserunt", + "completed": false + } + ], + "order": 2 + }, + { + "id": "974f93b8-336f-4eec-b011-9ddb412ee828", + "type": "task", + "title": "Fix permission issues that the 0.0.7-alpha.2 has introduced", + "notes": "Excepteur deserunt tempor do lorem elit id magna pariatur irure ullamco elit dolor consectetur ad officia fugiat incididunt do elit aute esse eu voluptate adipisicing incididunt ea dolor aliqua dolor.\n\nConsequat est quis deserunt voluptate ipsum incididunt laboris occaecat irure laborum voluptate non sit labore voluptate sunt id sint ut laboris aute cupidatat occaecat eiusmod non magna aliquip deserunt nisi.", + "completed": true, + "dueDate": null, + "priority": 2, + "tags": [ + "a0bf42ca-c3a5-47be-8341-b9c0bb8ef270" + ], + "assignedTo": null, + "subTasks": [ + { + "id": "8e9644dc-0815-4258-8a08-4ce8d9912ec0", + "title": "Adipisicing aliquip voluptate veniam", + "completed": false + }, + { + "id": "fc0f2283-3802-4ebe-b164-774bc2b84549", + "title": "Magna amet adipisicing velit nisi est", + "completed": false + }, + { + "id": "8a74b56f-14c0-4700-b737-8ccfa912f4b6", + "title": "Eiusmod dolore voluptate excepteur ipsum nostrud", + "completed": false + }, + { + "id": "439ed5b7-156d-414a-ba20-ce779e3ec037", + "title": "Laborum adipisicing quis culpa amet", + "completed": true + } + ], + "order": 3 + }, + { + "id": "5d877fc7-b881-4527-a6aa-d39d642feb23", + "type": "task", + "title": "Start Twitter promotions using the company Twitter account", + "notes": "Labore mollit in aliqua exercitation aliquip elit nisi nisi voluptate reprehenderit et dolor incididunt cupidatat ullamco nulla consequat voluptate adipisicing dolor qui magna sint aute do excepteur in aliqua consectetur.\n\nElit laborum non duis irure ad ullamco aliqua enim exercitation quis fugiat aute esse esse magna et ad cupidatat voluptate sint nulla nulla lorem et enim deserunt proident deserunt consectetur.", + "completed": true, + "dueDate": null, + "priority": 1, + "tags": [ + "51483dd3-cb98-4400-9128-4bd66b455807" + ], + "assignedTo": "4678ad07-e057-48a9-a5d1-3cf98e722eeb", + "subTasks": [ + { + "id": "b076c673-7d76-43b5-aaca-d0c496f397e5", + "title": "Esse dolore nostrud lorem consectetur", + "completed": false + }, + { + "id": "a01522ff-07fa-4fbd-a168-47802446b705", + "title": "Lorem velit voluptate laborum ad", + "completed": false + } + ], + "order": 4 + }, + { + "id": "3d1c26c5-1e5e-4eb6-8006-ed6037ed9aca", + "type": "task", + "title": "Add more error pages - 401, 301, 303, 500 etc.", + "notes": "Sunt mollit irure dolor aliquip sit veniam amet ut sunt dolore cillum sint pariatur qui irure proident velit non excepteur quis ut et quis velit aliqua ea sunt cillum sit.\n\nReprehenderit est culpa ut incididunt sit dolore mollit in occaecat velit culpa consequat reprehenderit ex lorem cupidatat proident reprehenderit ad eu sunt sit ut sit culpa ea reprehenderit aliquip est.", + "completed": false, + "dueDate": "2018-09-29T19:30:45.325Z", + "priority": 1, + "tags": [ + "c6058d0d-a4b0-4453-986a-9d249ec230b1" + ], + "assignedTo": "6617b0a3-0ccd-44ea-af78-c6633115d683", + "subTasks": [], + "order": 5 + }, + { + "id": "11bd2b9a-85b4-41c9-832c-bd600dfa3a52", + "type": "task", + "title": "Clear the caches before the production build", + "notes": "Sint mollit consectetur voluptate fugiat sunt ipsum adipisicing labore exercitation eiusmod enim excepteur enim proident velit sint magna commodo dolor ex ipsum sit nisi deserunt labore eu irure amet ea.\n\nOccaecat ut velit et sint pariatur laboris voluptate duis aliqua aliqua exercitation et duis duis eu laboris excepteur occaecat quis esse enim ex dolore commodo fugiat excepteur adipisicing in fugiat.", + "completed": true, + "dueDate": "2017-10-12T12:03:55.559Z", + "priority": 2, + "tags": [], + "assignedTo": "271e6a06-0d37-433d-bc8d-607b12bcbed9", + "subTasks": [ + { + "id": "9cd8eba8-7c41-4230-9d80-f71f7ed1cfe9", + "title": "Eu exercitation proident dolore velit", + "completed": true + } + ], + "order": 6 + }, + { + "id": "f55c023a-785e-4f0f-b5b7-47da75224deb", + "type": "task", + "title": "Examine the package loss rates that the 0.0.7-alpha.1 has introduced", + "notes": "In exercitation sunt ad anim commodo sunt do in sunt est officia amet ex ullamco do nisi consectetur lorem proident lorem adipisicing incididunt consequat fugiat voluptate sint est anim officia.\n\nVelit sint aliquip elit culpa amet eu mollit veniam esse deserunt ex occaecat quis lorem minim occaecat culpa esse veniam enim duis excepteur ipsum esse ut ut velit cillum adipisicing.", + "completed": false, + "dueDate": "2022-06-05T19:41:12.501Z", + "priority": 2, + "tags": [], + "assignedTo": "7f5db993-ec36-412f-9db3-16d076a98807", + "subTasks": [ + { + "id": "cdb08aa2-980d-48c6-b15c-7970775b7b5a", + "title": "Veniam magna minim duis", + "completed": true + }, + { + "id": "dc19e213-687e-4391-8b61-9aabed2fb288", + "title": "Eu dolore et adipisicing commodo adipisicing consequat", + "completed": false + }, + { + "id": "7e365400-59b9-4ec9-b397-8bf40de56ec4", + "title": "Do culpa quis consequat cupidatat", + "completed": true + }, + { + "id": "1a0f98b0-dfc4-4ac9-b8f5-ce322da2a849", + "title": "Est duis do sunt esse magna ex", + "completed": true + } + ], + "order": 7 + }, + { + "id": "c577a67d-357a-4b88-96e8-a0ee1fe9162e", + "type": "task", + "title": "Start Google ads using the company coupons", + "notes": "Ad adipisicing duis consequat magna sunt consequat aliqua eiusmod qui et nostrud voluptate sit enim reprehenderit anim exercitation ipsum ipsum anim ipsum laboris aliqua ex lorem aute officia voluptate culpa.\n\nNostrud anim ex pariatur ipsum et nostrud esse veniam ipsum ipsum irure velit ad quis irure tempor nulla amet aute id esse reprehenderit ea consequat consequat ea minim magna magna.", + "completed": false, + "dueDate": "2020-04-06T02:57:58.506Z", + "priority": 1, + "tags": [ + "c6058d0d-a4b0-4453-986a-9d249ec230b1", + "a0bf42ca-c3a5-47be-8341-b9c0bb8ef270" + ], + "assignedTo": "a21ec32e-54ba-480b-afdc-d1cbe18a96fd", + "subTasks": [ + { + "id": "b1849778-a69c-46ad-8373-99aa6a655965", + "title": "Ipsum ipsum occaecat nulla", + "completed": true + }, + { + "id": "8325f17a-2af0-4f64-b043-8ffdaaa62408", + "title": "Quis proident amet id non nulla", + "completed": true + } + ], + "order": 8 + }, + { + "id": "1a680c29-7ece-4a80-9709-277ad4da8b4b", + "type": "section", + "title": "Developer API for the payment system", + "notes": "Magna laborum et amet magna fugiat officia deserunt in exercitation aliquip nulla magna velit ea labore quis deserunt ipsum occaecat id id consequat non eiusmod mollit est voluptate ea ex.\n\nReprehenderit mollit ut excepteur minim veniam fugiat enim id pariatur amet elit nostrud occaecat pariatur et esse aliquip irure quis officia reprehenderit voluptate voluptate est et voluptate sint esse dolor.", + "completed": false, + "dueDate": "2020-02-08T22:42:35.937Z", + "priority": 2, + "tags": [ + "a0bf42ca-c3a5-47be-8341-b9c0bb8ef270", + "2b884143-419a-45ca-a7f6-48f99f4e7798" + ], + "assignedTo": "3e353312-6a9b-46af-adda-5061b06e806b", + "subTasks": [], + "order": 9 + }, + { + "id": "c49c2216-8bdb-4df0-be25-d5ea1dbb5688", + "type": "task", + "title": "Re-think the current API restrictions to loosen them a bit", + "notes": "Adipisicing laboris ipsum fugiat et cupidatat aute esse ad labore et est cillum ipsum sunt duis do veniam minim officia deserunt in eiusmod eu duis dolore excepteur consectetur id elit.\n\nAnim excepteur occaecat laborum sunt in elit quis sit duis adipisicing laboris anim laborum et pariatur elit qui consectetur laborum reprehenderit occaecat nostrud pariatur aliqua elit nisi commodo eu excepteur.", + "completed": false, + "dueDate": "2019-08-10T06:18:17.785Z", + "priority": 1, + "tags": [ + "a0bf42ca-c3a5-47be-8341-b9c0bb8ef270" + ], + "assignedTo": "368aab1e-ebce-43ba-8925-4cf13937867b", + "subTasks": [ + { + "id": "756ceee7-a9b2-45b6-9f22-5be974da7cf5", + "title": "Irure incididunt adipisicing consectetur enim", + "completed": false + } + ], + "order": 10 + }, + { + "id": "3ef176fa-6cba-4536-9f43-540c686a4faa", + "type": "task", + "title": "Pre-flight checks causes random crashes on logging service", + "notes": "Culpa duis nostrud qui velit sint magna officia fugiat ipsum eiusmod enim laborum pariatur anim culpa elit ipsum lorem pariatur exercitation laborum do labore cillum exercitation nisi reprehenderit exercitation quis.\n\nMollit aute dolor non elit et incididunt eiusmod non in commodo occaecat id in excepteur aliqua ea anim pariatur sint elit voluptate dolor eu non laborum laboris voluptate qui duis.", + "completed": false, + "dueDate": "2024-08-23T14:33:06.227Z", + "priority": 2, + "tags": [ + "91658b8a-f382-4b0c-a53f-e9390351c2c5" + ], + "assignedTo": "271e6a06-0d37-433d-bc8d-607b12bcbed9", + "subTasks": [ + { + "id": "35b06803-2019-4025-b642-841e44de7571", + "title": "Reprehenderit et eiusmod do consectetur ipsum", + "completed": false + }, + { + "id": "7ec47bbc-e644-45ae-84e3-de36ee35a22b", + "title": "Officia lorem tempor occaecat fugiat elit elit", + "completed": false + }, + { + "id": "b4560302-7bed-412c-8e43-a5ce0bce5eed", + "title": "Incididunt commodo amet fugiat nulla et", + "completed": false + }, + { + "id": "494bfcac-44ee-46db-add2-0e5dbc3952c4", + "title": "Enim ipsum fugiat ipsum aute quis", + "completed": true + }, + { + "id": "ffa45bc0-4466-4584-891a-0f75e39766c1", + "title": "Esse excepteur commodo ullamco", + "completed": true + } + ], + "order": 11 + }, + { + "id": "7bc6b7b4-7ad8-4cbe-af36-7301642d35fb", + "type": "task", + "title": "Increase the timeout amount to allow more retries on client side", + "notes": "Ea proident dolor tempor dolore incididunt velit incididunt ullamco quis proident consectetur magna excepteur cillum officia ex do aliqua reprehenderit est esse officia labore dolore aute laboris eu commodo aute.\n\nOfficia quis id ipsum adipisicing ipsum eu exercitation cillum ex elit pariatur adipisicing ullamco ullamco nulla dolore magna aliqua reprehenderit eu laborum voluptate reprehenderit non eiusmod deserunt velit magna do.", + "completed": true, + "dueDate": "2017-08-16T12:56:48.039Z", + "priority": 1, + "tags": [ + "51483dd3-cb98-4400-9128-4bd66b455807", + "d3ef4226-ef2c-43b0-a986-3e3e07f32799", + "a0bf42ca-c3a5-47be-8341-b9c0bb8ef270" + ], + "assignedTo": "4d24cf48-a322-4d53-89cb-9140dfd5c6ba", + "subTasks": [ + { + "id": "a72f756b-e1db-4492-96b9-93785400e8bb", + "title": "Amet eiusmod consequat non culpa", + "completed": false + }, + { + "id": "07fb282a-141a-4014-96d2-030894a6e211", + "title": "Nulla laboris veniam qui et nostrud enim", + "completed": false + }, + { + "id": "40629855-8ba8-4590-9ebe-2e2ff3f20820", + "title": "Est est nulla cillum aliquip duis ipsum", + "completed": true + }, + { + "id": "96e283b2-cd3e-4ab9-9770-07247691304b", + "title": "Non elit tempor commodo enim laboris", + "completed": true + }, + { + "id": "95c6a48a-4e42-4909-8c25-0fafd62aeefa", + "title": "Proident est anim do laborum nostrud", + "completed": false + } + ], + "order": 12 + }, + { + "id": "56c9ed66-a1d2-4803-a160-fba29b826cb4", + "type": "task", + "title": "Create the landing/marketing page and host it on the beta channel", + "notes": "Elit cillum incididunt enim cupidatat ex elit cillum aute dolor consectetur proident non minim eu est deserunt proident mollit ullamco laborum anim ea labore anim ex enim ullamco consectetur enim.\n\nEx magna consectetur esse enim consequat non aliqua nulla labore mollit sit quis ex fugiat commodo eu cupidatat irure incididunt consequat enim ut deserunt consequat elit consequat sint adipisicing sunt.", + "completed": true, + "dueDate": "2023-09-15T15:12:36.910Z", + "priority": 0, + "tags": [ + "2b884143-419a-45ca-a7f6-48f99f4e7798" + ], + "assignedTo": "3a23baf7-2db8-4ef5-8d49-86d3e708dff5", + "subTasks": [ + { + "id": "f1890ef6-89ed-47ca-a124-8305d7fe71fd", + "title": "Sit eu aliqua et et", + "completed": true + }, + { + "id": "647f63b9-27b8-4d65-8e09-874ef5a48573", + "title": "Voluptate esse cillum commodo", + "completed": true + }, + { + "id": "2934f015-1fd1-41c0-8b5a-d7adb5c50553", + "title": "Qui commodo fugiat eiusmod sint anim", + "completed": true + }, + { + "id": "f964fc8d-662c-4586-a39f-dab6674f2760", + "title": "Consequat nulla anim velit reprehenderit", + "completed": false + }, + { + "id": "ab3dd1a9-a9fb-4864-8630-da270cf71ee5", + "title": "Adipisicing officia ex laboris", + "completed": true + } + ], + "order": 13 + }, + { + "id": "21c1b662-33c8-44d7-9530-91896afeeac7", + "type": "task", + "title": "Move dependency system to Yarn for easier package management", + "notes": "Duis culpa ut veniam voluptate consequat proident magna eiusmod id est magna culpa nulla enim culpa mollit velit lorem mollit ut minim dolore in tempor reprehenderit cillum occaecat proident ea.\n\nVeniam fugiat ea duis qui et eu eiusmod voluptate id cillum eiusmod eu reprehenderit minim reprehenderit nisi cillum nostrud duis eu magna minim sunt voluptate eu pariatur nulla ullamco elit.", + "completed": true, + "dueDate": "2020-08-08T16:32:24.768Z", + "priority": 1, + "tags": [], + "assignedTo": null, + "subTasks": [ + { + "id": "e5fece14-cc26-40df-9319-23568cf89662", + "title": "Tempor qui eiusmod et", + "completed": false + }, + { + "id": "30e6117d-e2a2-4f97-a674-19a554a94829", + "title": "Tempor magna eu dolore aliquip", + "completed": false + }, + { + "id": "a5dd7270-1bc7-4b2b-abf0-9366eaca972d", + "title": "Lorem duis esse commodo", + "completed": false + }, + { + "id": "40ffd839-046f-4272-9232-5391d62477f7", + "title": "Minim aute eu ut id", + "completed": false + } + ], + "order": 14 + }, + { + "id": "5fa52c90-82be-41ae-96ec-5fc67cf054a4", + "type": "task", + "title": "Fix permission issues that the 0.0.7-alpha.2 has introduced", + "notes": "Mollit nostrud ea irure ex ipsum in cupidatat irure sit officia reprehenderit adipisicing et occaecat cupidatat exercitation mollit esse in excepteur qui elit exercitation velit fugiat exercitation est officia excepteur.\n\nQuis esse voluptate laborum non veniam duis est fugiat tempor culpa minim velit minim ut duis qui officia consectetur ex nostrud ut elit elit nulla in consectetur voluptate aliqua aliqua.", + "completed": false, + "dueDate": "2019-10-13T08:25:17.064Z", + "priority": 0, + "tags": [ + "2b884143-419a-45ca-a7f6-48f99f4e7798" + ], + "assignedTo": "b2e97a96-2f15-4e3d-aff5-4ddf2af924d4", + "subTasks": [ + { + "id": "2ef107fb-3c21-4801-861f-abaf4fd6def0", + "title": "Voluptate qui excepteur id in", + "completed": true + }, + { + "id": "0afb4ebf-fcc7-47dc-8351-a88cb47c39ee", + "title": "Laborum ipsum aute nisi anim", + "completed": false + }, + { + "id": "2f22bff2-72be-4ff5-b037-c3bf0f1d5637", + "title": "Amet duis velit sunt non", + "completed": false + } + ], + "order": 15 + }, + { + "id": "b6d8909f-f36d-4885-8848-46b8230d4476", + "type": "task", + "title": "Start Twitter promotions using the company Twitter account", + "notes": "Laboris ea nisi commodo nulla cillum consequat consectetur nisi velit adipisicing minim nulla culpa amet quis sit duis id id aliqua aute exercitation non reprehenderit aliquip enim eiusmod eu irure.\n\nNon irure consectetur sunt cillum do adipisicing excepteur labore proident ut officia dolor fugiat velit sint consectetur cillum qui amet enim anim mollit laboris consectetur non do laboris lorem aliqua.", + "completed": true, + "dueDate": "2020-02-03T05:39:30.880Z", + "priority": 1, + "tags": [ + "2b884143-419a-45ca-a7f6-48f99f4e7798" + ], + "assignedTo": "65e15136-5168-4655-8bbc-e3ad8a94bf67", + "subTasks": [], + "order": 16 + }, + { + "id": "9496235d-4d0c-430b-817e-1cba96404f95", + "type": "task", + "title": "Add more error pages - 401, 301, 303, 500 etc.", + "notes": "Ullamco eiusmod do pariatur pariatur consectetur commodo proident ex voluptate ullamco culpa commodo deserunt pariatur incididunt nisi magna dolor est minim eu ex voluptate deserunt labore id magna excepteur et.\n\nReprehenderit dolore pariatur exercitation ad non fugiat quis proident fugiat incididunt ea magna pariatur et exercitation tempor cillum eu consequat adipisicing est laborum sit cillum ea fugiat mollit cupidatat est.", + "completed": true, + "dueDate": "2020-03-09T19:42:06.383Z", + "priority": 1, + "tags": [], + "assignedTo": "7f5db993-ec36-412f-9db3-16d076a98807", + "subTasks": [ + { + "id": "9e710568-306f-47f9-b397-5634dc7a1a52", + "title": "Lorem excepteur non anim non exercitation fugiat", + "completed": true + }, + { + "id": "bd10d3d5-22d1-467d-aa6b-431d23203f51", + "title": "Nulla non in occaecat nulla", + "completed": false + }, + { + "id": "0a768b47-7248-4000-a201-e51f86401317", + "title": "Dolor qui deserunt duis enim do veniam", + "completed": true + } + ], + "order": 17 + }, + { + "id": "7fde17e6-4ac1-47dd-a363-2f4f14dcf76a", + "type": "task", + "title": "Clear the caches before the production build", + "notes": "Qui quis nulla excepteur voluptate elit culpa occaecat id ex do adipisicing est mollit id anim nisi irure amet officia ut sint aliquip dolore labore cupidatat magna laborum esse ea.\n\nEnim magna duis sit incididunt amet anim et nostrud laborum eiusmod et ea fugiat aliquip velit sit fugiat consectetur ipsum anim do enim excepteur cupidatat consequat sunt irure tempor ut.", + "completed": true, + "dueDate": "2022-08-24T03:03:09.899Z", + "priority": 1, + "tags": [ + "2b884143-419a-45ca-a7f6-48f99f4e7798", + "91658b8a-f382-4b0c-a53f-e9390351c2c5", + "c6058d0d-a4b0-4453-986a-9d249ec230b1", + "a0bf42ca-c3a5-47be-8341-b9c0bb8ef270" + ], + "assignedTo": "88a2a76c-0e6f-49da-b617-46d7c3b6e64d", + "subTasks": [ + { + "id": "f82708c3-2b58-4ac0-b58c-164c0804c631", + "title": "Mollit laborum tempor lorem cupidatat dolore nostrud", + "completed": true + }, + { + "id": "0017121e-79fc-403c-bb1c-84dc28f79e06", + "title": "Nisi sint sint et et ad", + "completed": true + }, + { + "id": "9073242a-5be6-487a-9e50-ea298700af79", + "title": "Duis nulla ad magna", + "completed": false + } + ], + "order": 18 + }, + { + "id": "90a3ed58-e13b-40cf-9219-f933bf9c9b8f", + "type": "task", + "title": "Examine the package loss rates that the 0.0.7-alpha.1 has introduced", + "notes": "Consequat consectetur commodo deserunt sunt aliquip deserunt ex tempor esse nostrud sit dolore anim nostrud nulla dolore veniam minim laboris non dolor veniam lorem veniam deserunt laborum aute amet irure.\n\nEiusmod officia veniam reprehenderit ea aliquip velit anim aute minim aute nisi tempor qui sunt deserunt voluptate velit elit ut adipisicing ipsum et excepteur ipsum eu ullamco nisi esse dolor.", + "completed": false, + "dueDate": "2023-10-04T15:48:16.507Z", + "priority": 1, + "tags": [ + "d3ef4226-ef2c-43b0-a986-3e3e07f32799" + ], + "assignedTo": null, + "subTasks": [ + { + "id": "eaab24ed-cf9e-4ee7-b7ff-acd8f62f617a", + "title": "Eiusmod nulla enim laborum deserunt in", + "completed": false + }, + { + "id": "700d067c-c5be-4532-95e3-ba575effae7c", + "title": "Sunt sint ea est commodo id", + "completed": false + } + ], + "order": 19 + }, + { + "id": "81ac908c-35a2-4705-8d75-539863c35c09", + "type": "task", + "title": "Start Google ads using the company coupons", + "notes": "Sit occaecat sint nulla in esse dolor occaecat in ea sit irure magna magna veniam fugiat consequat exercitation ipsum ex officia velit consectetur consequat voluptate lorem eu proident lorem incididunt.\n\nExcepteur exercitation et qui labore nisi eu voluptate ipsum deserunt deserunt eu est minim dolor ad proident nulla reprehenderit culpa minim voluptate dolor nostrud dolor anim labore aliqua officia nostrud.", + "completed": true, + "dueDate": "2024-02-01T10:02:52.745Z", + "priority": 1, + "tags": [ + "a0bf42ca-c3a5-47be-8341-b9c0bb8ef270" + ], + "assignedTo": "368aab1e-ebce-43ba-8925-4cf13937867b", + "subTasks": [ + { + "id": "651a87c6-4376-42c4-9dfd-fad7525e7eb3", + "title": "Aliqua est excepteur excepteur deserunt id", + "completed": true + } + ], + "order": 20 + }, + { + "id": "153376ed-691f-4dfd-ae99-e204a49edc44", + "type": "task", + "title": "Re-think the current API restrictions to loosen them a bit", + "notes": "Duis sint velit incididunt exercitation eiusmod nisi sunt ex est fugiat ad cupidatat sunt nisi elit do duis amet voluptate ipsum aliquip lorem aliqua sint esse in magna irure officia.\n\nNon eu ex elit ut est voluptate tempor amet ut officia in duis deserunt cillum labore do culpa id dolore magna anim consectetur qui consectetur fugiat labore mollit magna irure.", + "completed": true, + "dueDate": "2022-02-22T17:42:00.257Z", + "priority": 2, + "tags": [], + "assignedTo": "65f1c421-83c5-4cdf-99da-d97794328679", + "subTasks": [], + "order": 21 + }, + { + "id": "1ebde495-1bcd-4e8f-b6f6-cf63b521ad06", + "type": "section", + "title": "Marketing and promotions for the mobile app", + "notes": "Aute commodo reprehenderit cupidatat duis nulla mollit sint cupidatat elit adipisicing fugiat sunt cupidatat amet proident fugiat aute adipisicing et non minim occaecat ea esse consectetur aute culpa exercitation incididunt.\n\nEnim et lorem anim dolor excepteur qui tempor cupidatat do proident adipisicing esse incididunt mollit quis irure amet ad officia culpa minim cillum veniam voluptate lorem exercitation sunt cillum dolor.", + "completed": false, + "dueDate": "2018-08-04T19:32:53.652Z", + "priority": 1, + "tags": [], + "assignedTo": "e62ab50e-90d3-4ed7-a911-093bb44d0c50", + "subTasks": [ + { + "id": "c5a8b915-0b0f-4dd3-a1a3-e538fa191747", + "title": "Adipisicing do minim voluptate", + "completed": true + }, + { + "id": "52b50615-0d80-42b6-97cb-1b71eaec1632", + "title": "Et eiusmod est adipisicing officia", + "completed": true + } + ], + "order": 22 + }, + { + "id": "4e7ce72f-863a-451f-9160-cbd4fbbc4c3d", + "type": "task", + "title": "Pre-flight checks causes random crashes on logging service", + "notes": "Exercitation sit eiusmod enim officia exercitation eiusmod sunt eiusmod excepteur ad commodo eiusmod qui proident quis aliquip excepteur sit cillum occaecat non dolore sit in labore ut duis esse duis.\n\nConsequat sunt voluptate consectetur dolor laborum enim nostrud deserunt incididunt sint veniam laboris sunt amet velit anim duis aliqua sunt aliqua aute qui nisi mollit qui irure ullamco aliquip laborum.", + "completed": true, + "dueDate": "2020-09-29T02:25:14.111Z", + "priority": 1, + "tags": [], + "assignedTo": "ef44b39b-3272-45f5-a15e-264c3b2d118e", + "subTasks": [ + { + "id": "654c9b65-6f94-4ae7-bf11-27f979cc670e", + "title": "Esse exercitation cillum ex", + "completed": false + }, + { + "id": "3c49aba9-1e83-471f-b8b8-21cc7d20292e", + "title": "Duis sunt commodo fugiat irure minim", + "completed": false + }, + { + "id": "4fcb2e0b-677c-4915-978d-70e82b16745a", + "title": "Anim in qui ut", + "completed": false + }, + { + "id": "dd864dea-61d2-4fb0-b433-286993b6ad08", + "title": "Reprehenderit irure exercitation occaecat", + "completed": true + } + ], + "order": 23 + }, + { + "id": "0795a74f-7a84-4edf-8d66-296cdef70003", + "type": "task", + "title": "Increase the timeout amount to allow more retries on client side", + "notes": "Minim commodo cillum do id qui irure aliqua laboris excepteur laboris magna enim est lorem consectetur tempor laboris proident proident eu irure dolor eiusmod in officia lorem quis laborum ullamco.\n\nQui excepteur ex sit esse dolore deserunt ullamco occaecat laboris fugiat cupidatat excepteur laboris amet dolore enim velit ipsum velit sint cupidatat consectetur cupidatat deserunt sit eu do ullamco quis.", + "completed": true, + "dueDate": "2019-03-09T02:34:29.592Z", + "priority": 2, + "tags": [ + "c6058d0d-a4b0-4453-986a-9d249ec230b1", + "d3ef4226-ef2c-43b0-a986-3e3e07f32799" + ], + "assignedTo": "6617b0a3-0ccd-44ea-af78-c6633115d683", + "subTasks": [ + { + "id": "56f3dccb-a72b-485c-94e7-fe68477023e2", + "title": "Velit velit voluptate in occaecat nostrud", + "completed": true + }, + { + "id": "70cb77a9-82fa-407b-a63e-55aedc241495", + "title": "Minim anim velit eiusmod qui", + "completed": true + }, + { + "id": "08a31dbc-6be4-469b-9ff4-0ed5342082bd", + "title": "Laboris commodo laborum irure", + "completed": false + }, + { + "id": "34d6c603-6f5a-4bc4-9f94-12bfd940c3c7", + "title": "Mollit mollit nostrud mollit id velit ullamco", + "completed": true + } + ], + "order": 24 + }, + { + "id": "05532574-c102-4228-89a8-55fff32ec6fc", + "type": "task", + "title": "Create the landing/marketing page and host it on the beta channel", + "notes": "Reprehenderit anim consectetur anim dolor magna consequat excepteur tempor enim duis magna proident ullamco aute voluptate elit laborum mollit labore id ex lorem est mollit do qui ex labore nulla.\n\nUt proident elit proident adipisicing elit fugiat ex ullamco dolore excepteur excepteur labore laborum sunt ipsum proident magna ex voluptate laborum voluptate sint proident eu reprehenderit non excepteur quis eiusmod.", + "completed": true, + "dueDate": "2023-12-08T23:20:50.910Z", + "priority": 2, + "tags": [ + "a0bf42ca-c3a5-47be-8341-b9c0bb8ef270" + ], + "assignedTo": null, + "subTasks": [], + "order": 25 + }, + { + "id": "b3917466-aa51-4293-9d5b-120b0ce6635c", + "type": "task", + "title": "Move dependency system to Yarn for easier package management", + "notes": "Ipsum officia mollit qui laboris sunt amet aliquip cupidatat minim non elit commodo eiusmod labore mollit pariatur aute reprehenderit ullamco occaecat enim pariatur aute amet occaecat incididunt irure ad ut.\n\nIncididunt cupidatat pariatur magna sint sit culpa ad cupidatat cillum exercitation consequat minim pariatur consectetur aliqua non adipisicing magna ad nulla ea do est nostrud eu aute id occaecat ut.", + "completed": false, + "dueDate": "2018-01-14T09:58:38.444Z", + "priority": 1, + "tags": [], + "assignedTo": "56a3e7ce-01da-43fc-ab9f-a8a39fa980de", + "subTasks": [ + { + "id": "3a4c4013-27f1-4164-8a64-e7bb4f1a63a9", + "title": "Adipisicing excepteur mollit non sunt amet laboris", + "completed": false + }, + { + "id": "103bf29e-06a1-4d30-89b9-b67aa442d605", + "title": "Consectetur voluptate anim labore aliqua elit", + "completed": false + }, + { + "id": "b77729f1-9ed1-4d9e-95d0-347f4cd0943c", + "title": "Laboris occaecat aliquip esse magna nulla", + "completed": true + }, + { + "id": "695aace7-8679-4b35-96c7-cf23737cd9f1", + "title": "Exercitation eu aliquip cillum ipsum", + "completed": false + }, + { + "id": "ffd45f31-7f0a-4c6a-b62c-18148f6841db", + "title": "Minim aute ad et esse officia nostrud", + "completed": true + } + ], + "order": 26 + }, + { + "id": "2f2fb472-24d4-4a00-aa80-d513fa6c059c", + "type": "task", + "title": "Fix permission issues that the 0.0.7-alpha.2 has introduced", + "notes": "Dolor cupidatat do qui in tempor dolor magna magna ut dolor est aute veniam consectetur enim sunt sunt duis magna magna aliquip id reprehenderit dolor in veniam ullamco incididunt occaecat.\n\nId duis pariatur anim cillum est sint non veniam voluptate deserunt anim nostrud duis voluptate occaecat elit ut veniam voluptate do qui est ad velit irure sint lorem ullamco aliqua.", + "completed": true, + "dueDate": "2020-06-08T00:23:24.051Z", + "priority": 1, + "tags": [ + "91658b8a-f382-4b0c-a53f-e9390351c2c5" + ], + "assignedTo": "65f1c421-83c5-4cdf-99da-d97794328679", + "subTasks": [ + { + "id": "4028671b-ef75-4b76-a03f-9f2bddadc618", + "title": "Commodo excepteur proident ipsum reprehenderit", + "completed": true + }, + { + "id": "b122168f-8327-408f-8b9c-498dd6ba6c81", + "title": "Mollit ullamco eiusmod exercitation deserunt", + "completed": false + }, + { + "id": "f233d812-be56-4d8a-ab14-a083f7d7cd70", + "title": "Mollit nostrud ea deserunt mollit aliquip", + "completed": false + }, + { + "id": "0833be70-82b2-46cb-ad84-f11120ea634a", + "title": "Labore occaecat proident ullamco", + "completed": false + } + ], + "order": 27 + }, + { + "id": "2fffd148-7644-466d-8737-7dde88c54154", + "type": "task", + "title": "Start Twitter promotions using the company Twitter account", + "notes": "Velit commodo pariatur ullamco elit sunt dolor quis irure amet tempor laboris labore tempor nisi consectetur ea proident dolore culpa nostrud esse amet commodo do esse laboris laboris in magna.\n\nAute officia labore minim laborum irure cupidatat occaecat laborum ex labore ipsum aliqua cillum do exercitation esse et veniam excepteur mollit incididunt ut qui irure culpa qui deserunt nostrud tempor.", + "completed": false, + "dueDate": "2024-01-27T11:17:52.198Z", + "priority": 1, + "tags": [ + "d3ef4226-ef2c-43b0-a986-3e3e07f32799" + ], + "assignedTo": "b2e97a96-2f15-4e3d-aff5-4ddf2af924d4", + "subTasks": [ + { + "id": "d2ffe439-2f80-4dce-84a7-d4ac5e17bbf3", + "title": "Occaecat anim sunt dolor proident", + "completed": false + } + ], + "order": 28 + }, + { + "id": "24a1034e-b4d6-4a86-a1ea-90516e87e810", + "type": "task", + "title": "Add more error pages - 401, 301, 303, 500 etc.", + "notes": "Exercitation eu in officia lorem commodo pariatur pariatur nisi consectetur qui elit in aliquip et ullamco duis nostrud aute laborum laborum est dolor non qui amet deserunt ex et aliquip.\n\nProident consectetur eu amet minim labore anim ad non aute duis eiusmod sit ad elit magna do aliquip aliqua laborum dolor laboris ea irure duis mollit fugiat tempor eu est.", + "completed": false, + "dueDate": "2024-06-24T04:38:28.087Z", + "priority": 1, + "tags": [ + "51483dd3-cb98-4400-9128-4bd66b455807" + ], + "assignedTo": "7f5db993-ec36-412f-9db3-16d076a98807", + "subTasks": [ + { + "id": "75f55d75-c835-4a6c-a2ae-7a42ae3a7c9d", + "title": "Et laboris quis lorem est laboris", + "completed": true + }, + { + "id": "c7c91a52-b060-45af-b1b1-a4cff26bf11e", + "title": "Reprehenderit elit dolore exercitation pariatur", + "completed": true + } + ], + "order": 29 + } + ] + }, + "tasks_tags": { + "value": [ + { + "id": "a0bf42ca-c3a5-47be-8341-b9c0bb8ef270", + "title": "Api" + }, + { + "id": "c6058d0d-a4b0-4453-986a-9d249ec230b1", + "title": "Frontend" + }, + { + "id": "d3ef4226-ef2c-43b0-a986-3e3e07f32799", + "title": "Bug" + }, + { + "id": "51483dd3-cb98-4400-9128-4bd66b455807", + "title": "Backend" + }, + { + "id": "91658b8a-f382-4b0c-a53f-e9390351c2c5", + "title": "Urgent" + }, + { + "id": "2b884143-419a-45ca-a7f6-48f99f4e7798", + "title": "Discuss" + } + ] + }, + "chat_messages": { + "value": [ + { + "id": "e6b2b82f-b199-4a60-9696-5f3e40d2715d", + "chatId": "", + "contactId": "cfaad35d-07a3-4447-a6c3-d8c3d54fd5df", + "value": "Hi!", + "createdAt": "2022-01-05T15:56:48.732Z" + }, + { + "id": "eb82cf4b-fa93-4bf4-a88a-99e987ddb7ea", + "chatId": "", + "contactId": "", + "value": "Hey, dude!", + "createdAt": "2022-01-05T16:04:48.732Z" + }, + { + "id": "3cf9b2a6-ae54-47db-97b2-ee139a8f84e5", + "chatId": "", + "contactId": "", + "value": "Long time no see.", + "createdAt": "2022-01-05T16:04:48.732Z" + }, + { + "id": "2ab91b0f-fafb-45f3-88df-7efaff29134b", + "chatId": "", + "contactId": "cfaad35d-07a3-4447-a6c3-d8c3d54fd5df", + "value": "Yeah, man... Things were quite busy for me and my family.", + "createdAt": "2022-01-05T16:06:48.732Z" + }, + { + "id": "10e81481-378f-49ac-b06b-7c59dcc639ae", + "chatId": "", + "contactId": "", + "value": "What's up? Anything I can help with?", + "createdAt": "2022-01-05T16:06:48.732Z" + }, + { + "id": "3b334e72-6605-4ebd-a4f6-3850067048de", + "chatId": "", + "contactId": "cfaad35d-07a3-4447-a6c3-d8c3d54fd5df", + "value": "We've been on the move, changed 3 places over 4 months", + "createdAt": "2022-01-05T16:07:48.732Z" + }, + { + "id": "25998113-3a96-4dd0-a7b9-4d2bb58db3f3", + "chatId": "", + "contactId": "", + "value": "Wow! That's crazy! 🤯 What happened?", + "createdAt": "2022-01-05T16:07:48.732Z" + }, + { + "id": "30adb3da-0e4f-487e-aec2-6d9f31e097f6", + "chatId": "", + "contactId": "cfaad35d-07a3-4447-a6c3-d8c3d54fd5df", + "value": "You know I got a job in that big software company. First move was because of that.", + "createdAt": "2022-01-05T16:08:48.732Z" + }, + { + "id": "c0d6fd6e-d294-4845-8751-e84b8f2c4d3b", + "chatId": "", + "contactId": "cfaad35d-07a3-4447-a6c3-d8c3d54fd5df", + "value": "Then they decided to re-locate me after a month", + "createdAt": "2022-01-05T16:08:48.732Z" + }, + { + "id": "8d3c442b-62fa-496f-bffa-210ff5c1866b", + "chatId": "", + "contactId": "cfaad35d-07a3-4447-a6c3-d8c3d54fd5df", + "value": "Which was an absolute pain because we just set up everything, house, kids school and all that.", + "createdAt": "2022-01-05T16:08:48.732Z" + }, + { + "id": "3cf26ef0-e81f-4698-ac39-487454413332", + "chatId": "", + "contactId": "cfaad35d-07a3-4447-a6c3-d8c3d54fd5df", + "value": "So we moved the second time.", + "createdAt": "2022-01-05T16:09:48.732Z" + }, + { + "id": "415151b9-9ee9-40a4-a4ad-2d88146bc71b", + "chatId": "", + "contactId": "", + "value": "It's crazy!", + "createdAt": "2022-01-05T16:09:48.732Z" + }, + { + "id": "3a2d3a0e-839b-46e7-86ae-ca0826ecda7c", + "chatId": "", + "contactId": "cfaad35d-07a3-4447-a6c3-d8c3d54fd5df", + "value": "Then this virus thing happened and just after a week we moved in, they decided the whole department will be working remotely.", + "createdAt": "2022-01-05T16:10:48.732Z" + }, + { + "id": "5329c20d-6754-47ec-af8c-660c72be3528", + "chatId": "", + "contactId": "cfaad35d-07a3-4447-a6c3-d8c3d54fd5df", + "value": "And then we decided to move back our first location because, you know, everything was already setup so that's the third time.", + "createdAt": "2022-01-05T16:10:48.732Z" + }, + { + "id": "415151b9-9ee9-40a4-a4ad-2d88146bc71b", + "chatId": "", + "contactId": "", + "value": "Ohh dude, I'm really sorry you had to go through all that in such a short period of time", + "createdAt": "2022-01-05T16:11:48.732Z" + }, + { + "id": "ea7662d5-7b72-4c19-ad6c-f80320541001", + "chatId": "", + "contactId": "", + "value": "😕", + "createdAt": "2022-01-05T16:11:48.732Z" + }, + { + "id": "3a2d3a0e-839b-46e7-86ae-ca0826ecda7c", + "chatId": "", + "contactId": "cfaad35d-07a3-4447-a6c3-d8c3d54fd5df", + "value": "Thanks, man! It was good catching up with you.", + "createdAt": "2022-01-05T16:11:48.732Z" + }, + { + "id": "5329c20d-6754-47ec-af8c-660c72be3528", + "chatId": "", + "contactId": "", + "value": "Yeah dude. Hit me again next week so we can grab a coffee, remotely!", + "createdAt": "2022-01-05T16:12:48.732Z" + }, + { + "id": "5329c20d-6754-47ec-af8c-660c72be3528", + "chatId": "", + "contactId": "cfaad35d-07a3-4447-a6c3-d8c3d54fd5df", + "value": ":) Sure, man! See you next week!", + "createdAt": "2022-01-05T16:12:48.732Z" + }, + { + "id": "5329c20d-6754-47ec-af8c-660c72be3528", + "chatId": "", + "contactId": "", + "value": "See you later!", + "createdAt": "2022-01-05T16:12:48.732Z" + }, + { + "id": "bab8ca0e-b8e5-4375-807b-1c91fca25a5d", + "chatId": "", + "contactId": "cfaad35d-07a3-4447-a6c3-d8c3d54fd5df", + "value": "Hey! Are you available right now? How about if we grab that coffee today? Remotely, of course :)", + "createdAt": "2022-01-12T09:45:48.732Z" + }, + { + "id": "8445a84d-599d-4e2d-a31c-5f4f29ad2b4c", + "chatId": "", + "contactId": "", + "value": "Hi!", + "createdAt": "2022-01-12T09:56:48.732Z" + }, + { + "id": "9f506742-50da-4350-af9d-61e53392fa08", + "chatId": "", + "contactId": "", + "value": "Sure thing! I'm gonna call you in 5, is it okay?", + "createdAt": "2022-01-12T09:56:48.732Z" + }, + { + "id": "ca8523d8-faed-45f7-af09-f6bd5c3f3875", + "chatId": "", + "contactId": "cfaad35d-07a3-4447-a6c3-d8c3d54fd5df", + "value": "Awesome! Call me in 5 minutes..", + "createdAt": "2022-01-12T09:58:48.732Z" + }, + { + "id": "39944b00-1ffe-4ffb-8ca6-13c292812e06", + "chatId": "", + "contactId": "", + "value": "👍🏻", + "createdAt": "2022-01-12T10:00:48.732Z" + } + ] + }, + "chat_contacts": { + "value": [ + { + "id": "cd5fa417-b667-482d-b208-798d9da3213c", + "avatar": "assets/images/avatars/male-01.jpg", + "name": "Dejesus Michael", + "about": "Hi there! I'm using FuseChat.", + "status": "online", + "details": { + "emails": [ + { + "email": "dejesusmichael@mail.org", + "label": "Personal" + }, + { + "email": "michael.dejesus@vitricomp.io", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "bs", + "phoneNumber": "984 531 2468", + "label": "Mobile" + }, + { + "country": "bs", + "phoneNumber": "806 470 2693", + "label": "Work" + } + ], + "title": "Track Service Worker", + "company": "Vitricomp", + "birthday": "1975-01-10T12:00:00.000Z", + "address": "279 Independence Avenue, Calvary, Guam, PO4127" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "beec5287-ed50-4504-858a-5dc3f8ce6935", + "avatar": null, + "name": "Dena Molina", + "about": "Hi there! I'm using FuseChat.", + "status": "online", + "details": { + "emails": [ + { + "email": "denamolina@mail.us", + "label": "Personal" + }, + { + "email": "molina.dena@envire.tv", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "io", + "phoneNumber": "934 537 3180", + "label": "Mobile" + } + ], + "title": "Weather Analyst", + "company": "Envire", + "birthday": "1994-12-05T12:00:00.000Z", + "address": "856 Woodside Avenue, Alfarata, Iowa, PO4992" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "9d3f0e7f-dcbd-4e56-a5e8-87b8154e9edf", + "avatar": "assets/images/avatars/male-02.jpg", + "name": "Bernard Langley", + "about": "Hi there! I'm using FuseChat.", + "status": "away", + "details": { + "emails": [ + { + "email": "bernardlangley@mail.com", + "label": "Personal" + }, + { + "email": "langley.bernard@boilcat.name", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "md", + "phoneNumber": "893 548 2862", + "label": "Mobile" + } + ], + "title": "Electromedical Equipment Technician", + "company": "Boilcat", + "birthday": "1988-05-26T12:00:00.000Z", + "address": "943 Adler Place, Hamilton, South Dakota, PO5592" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "42a5da95-5e6d-42fd-a09d-de755d123a47", + "background": "assets/images/cards/16-640x480.jpg", + "name": "Mclaughlin Steele", + "about": "Hi there! I'm using FuseChat.", + "status": "offline", + "details": { + "emails": [ + { + "email": "mclaughlinsteele@mail.me", + "label": "Personal" + }, + { + "email": "steele.mclaughlin@accel.info", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "va", + "phoneNumber": "830 484 3813", + "label": "Mobile" + }, + { + "country": "va", + "phoneNumber": "999 475 2789", + "label": "Work" + }, + { + "country": "va", + "phoneNumber": "933 406 3598", + "label": "Home" + } + ], + "company": "Accel", + "birthday": "1968-08-13T12:00:00.000Z", + "address": "334 Sandford Street, Savage, Virgin Islands, PO1858" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "a7806ced-03f1-4197-8b30-00bdd463366b", + "avatar": "assets/images/avatars/male-04.jpg", + "name": "Marsh Cochran", + "about": "Hi there! I'm using FuseChat.", + "status": "online", + "details": { + "emails": [ + { + "email": "marshcochran@mail.biz", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "tz", + "phoneNumber": "864 401 3980", + "label": "Mobile" + }, + { + "country": "tz", + "phoneNumber": "956 546 2589", + "label": "Work" + } + ], + "title": "Fundraising Director", + "company": "Xsports", + "birthday": "1983-12-22T12:00:00.000Z", + "address": "487 Hamilton Walk, Bergoo, American Samoa, PO5616" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "f4ad15d9-5a24-463a-88ea-6189d6bb3a53", + "avatar": "assets/images/avatars/male-05.jpg", + "name": "Parrish Austin", + "about": "Hi there! I'm using FuseChat.", + "status": "online", + "details": { + "emails": [ + { + "email": "parrishaustin@mail.co.uk", + "label": "Personal" + }, + { + "email": "austin.parrish@insource.net", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "lv", + "phoneNumber": "834 426 3574", + "label": "Mobile" + }, + { + "country": "lv", + "phoneNumber": "816 573 3694", + "label": "Work" + }, + { + "country": "lv", + "phoneNumber": "967 515 2009", + "label": "Home" + } + ], + "title": "Motor Winder", + "company": "Insource", + "birthday": "1963-08-24T12:00:00.000Z", + "address": "610 Harbor Lane, Cascades, Minnesota, PO8639" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "780d0111-5e5c-4694-8d1d-0ea421971fbf", + "avatar": "assets/images/avatars/female-02.jpg", + "name": "Laverne Dodson", + "about": "Hi there! I'm using FuseChat.", + "status": "online", + "details": { + "emails": [ + { + "email": "lavernedodson@mail.ca", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "ar", + "phoneNumber": "964 417 2318", + "label": "Mobile" + }, + { + "country": "ar", + "phoneNumber": "830 410 2506", + "label": "Work" + } + ], + "title": "Television News Producer", + "company": "Lovepad", + "birthday": "1973-09-25T12:00:00.000Z", + "address": "428 Newport Street, Neahkahnie, Arkansas, PO8324" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "bf172879-423a-4fd6-8df3-6d1938bbfe1f", + "avatar": "assets/images/avatars/male-06.jpg", + "name": "Edwards Mckenzie", + "about": "Hi there! I'm using FuseChat.", + "status": "online", + "details": { + "emails": [ + { + "email": "edwardsmckenzie@mail.org", + "label": "Personal" + }, + { + "email": "mckenzie.edwards@bugsall.io", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "pe", + "phoneNumber": "934 519 2903", + "label": "Mobile" + }, + { + "country": "pe", + "phoneNumber": "989 489 3662", + "label": "Work" + }, + { + "country": "pe", + "phoneNumber": "813 461 2790", + "label": "Home" + } + ], + "title": "Legal Assistant", + "company": "Bugsall", + "birthday": "1988-07-27T12:00:00.000Z", + "address": "384 Polhemus Place, Dalton, Palau, PO6038" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "1eaa3213-ece2-4ba6-8e15-eb36ca388f50", + "avatar": "assets/images/avatars/female-03.jpg", + "name": "Trudy Berg", + "about": "Hi there! I'm using FuseChat.", + "status": "online", + "details": { + "emails": [ + { + "email": "trudyberg@mail.us", + "label": "Personal" + }, + { + "email": "berg.trudy@satiance.tv", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "ls", + "phoneNumber": "912 539 2770", + "label": "Mobile" + } + ], + "title": "Meteorologist", + "company": "Satiance", + "birthday": "1989-12-15T12:00:00.000Z", + "address": "945 Jerome Avenue, Riceville, North Carolina, PO1625" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "abd9e78b-9e96-428f-b3ff-4d934c401bee", + "avatar": "assets/images/avatars/female-04.jpg", + "name": "Elsie Melendez", + "about": "Hi there! I'm using FuseChat.", + "status": "online", + "details": { + "emails": [ + { + "email": "elsiemelendez@mail.com", + "label": "Personal" + }, + { + "email": "melendez.elsie@chillium.name", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "tg", + "phoneNumber": "907 515 3007", + "label": "Mobile" + }, + { + "country": "tg", + "phoneNumber": "967 534 2803", + "label": "Work" + } + ], + "title": "Fundraising Director", + "company": "Chillium", + "birthday": "1980-06-28T12:00:00.000Z", + "address": "428 Varanda Place, Veyo, Oklahoma, PO6188" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "efae92cc-3bd1-4c6a-a395-b6760c69bd55", + "avatar": "assets/images/avatars/male-07.jpg", + "name": "Lamb Underwood", + "about": "Hi there! I'm using FuseChat.", + "status": "online", + "details": { + "emails": [ + { + "email": "lambunderwood@mail.me", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "pf", + "phoneNumber": "855 517 2767", + "label": "Mobile" + }, + { + "country": "pf", + "phoneNumber": "906 442 3593", + "label": "Work" + }, + { + "country": "pf", + "phoneNumber": "905 402 2121", + "label": "Home" + } + ], + "title": "Legal Assistant", + "company": "Exotechno", + "birthday": "1990-07-26T12:00:00.000Z", + "address": "609 Greenpoint Avenue, Beason, Vermont, PO5229" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "bde636a7-c3d2-4bff-939a-aab11df1516b", + "avatar": null, + "name": "Tessa Valdez", + "about": "Hi there! I'm using FuseChat.", + "status": "online", + "details": { + "emails": [ + { + "email": "tessavaldez@mail.info", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "dz", + "phoneNumber": "892 430 2631", + "label": "Mobile" + }, + { + "country": "dz", + "phoneNumber": "997 525 2354", + "label": "Work" + }, + { + "country": "dz", + "phoneNumber": "907 472 2857", + "label": "Home" + } + ], + "title": "Banker Mason", + "company": "Securia", + "birthday": "1994-01-10T12:00:00.000Z", + "address": "183 Crosby Avenue, Blanco, Mississippi, PO3463" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "6519600a-5eaa-45f8-8bed-c46fddb3b26a", + "background": "assets/images/cards/24-640x480.jpg", + "name": "Mcleod Wagner", + "about": "Hi there! I'm using FuseChat.", + "status": "online", + "details": { + "emails": [ + { + "email": "mcleodwagner@mail.biz", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "at", + "phoneNumber": "977 590 2773", + "label": "Mobile" + }, + { + "country": "at", + "phoneNumber": "828 496 3813", + "label": "Work" + }, + { + "country": "at", + "phoneNumber": "831 432 2512", + "label": "Home" + } + ], + "company": "Inrt", + "birthday": "1980-12-03T12:00:00.000Z", + "address": "736 Glen Street, Kaka, West Virginia, PO9350" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "6d80a6f6-2884-4ac4-9c73-06b82c220017", + "avatar": "assets/images/avatars/female-06.jpg", + "name": "Kristie Hall", + "about": "Hi there! I'm using FuseChat.", + "status": "online", + "details": { + "emails": [ + { + "email": "kristiehall@mail.co.uk", + "label": "Personal" + }, + { + "email": "hall.kristie@austech.net", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "tn", + "phoneNumber": "841 530 3641", + "label": "Mobile" + }, + { + "country": "tn", + "phoneNumber": "941 410 3743", + "label": "Work" + }, + { + "country": "tn", + "phoneNumber": "938 599 3850", + "label": "Home" + } + ], + "title": "Electromedical Equipment Technician", + "company": "Austech", + "birthday": "1975-08-31T12:00:00.000Z", + "address": "547 Revere Place, Hoehne, New Hampshire, PO2125" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "35190d23-036e-44ef-b545-cc744c626edd", + "avatar": "assets/images/avatars/female-07.jpg", + "name": "Shannon Kennedy", + "about": "Hi there! I'm using FuseChat.", + "status": "online", + "details": { + "emails": [ + { + "email": "shannonkennedy@mail.ca", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "gb", + "phoneNumber": "899 508 2992", + "label": "Mobile" + }, + { + "country": "gb", + "phoneNumber": "834 499 3354", + "label": "Work" + }, + { + "country": "gb", + "phoneNumber": "834 526 3388", + "label": "Home" + } + ], + "title": "Gas Meter Mechanic", + "company": "Eventix", + "birthday": "1994-09-07T12:00:00.000Z", + "address": "480 Chase Court, Edinburg, Kansas, PO5357" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "b018c194-68ec-4915-ab56-e9f3bd2d98db", + "avatar": "assets/images/avatars/female-08.jpg", + "name": "Martha Swanson", + "about": "Hi there! I'm using FuseChat.", + "status": "offline", + "details": { + "emails": [ + { + "email": "marthaswanson@mail.org", + "label": "Personal" + }, + { + "email": "swanson.martha@sequitur.io", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "gb", + "phoneNumber": "844 480 3309", + "label": "Mobile" + }, + { + "country": "gb", + "phoneNumber": "981 591 3239", + "label": "Work" + }, + { + "country": "gb", + "phoneNumber": "923 484 3147", + "label": "Home" + } + ], + "title": "Short Story Writer", + "company": "Sequitur", + "birthday": "1993-12-31T12:00:00.000Z", + "address": "595 Howard Place, Convent, Rhode Island, PO6993" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "b7c355e9-e003-467e-82d2-4f6978c1a696", + "avatar": "assets/images/avatars/female-09.jpg", + "name": "Jacklyn Morgan", + "about": "Hi there! I'm using FuseChat.", + "status": "offline", + "details": { + "emails": [ + { + "email": "jacklynmorgan@mail.us", + "label": "Personal" + }, + { + "email": "morgan.jacklyn@shopabout.tv", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "so", + "phoneNumber": "974 542 2061", + "label": "Mobile" + } + ], + "title": "Animal Sitter", + "company": "Shopabout", + "birthday": "1976-09-30T12:00:00.000Z", + "address": "971 Conover Street, Statenville, Louisiana, PO6622" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "cfa07b7c-93d1-42e7-9592-493d9efc78ae", + "avatar": "assets/images/avatars/female-10.jpg", + "name": "Tonya Bowers", + "about": "Hi there! I'm using FuseChat.", + "status": "offline", + "details": { + "emails": [ + { + "email": "tonyabowers@mail.com", + "label": "Personal" + }, + { + "email": "bowers.tonya@tourmania.name", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "tv", + "phoneNumber": "922 585 2914", + "label": "Mobile" + }, + { + "country": "tv", + "phoneNumber": "913 538 2961", + "label": "Work" + } + ], + "title": "Track Service Worker", + "company": "Tourmania", + "birthday": "1976-06-14T12:00:00.000Z", + "address": "197 Marconi Place, Welda, Delaware, PO6061" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "00feeb63-c83a-4655-a37e-a07da10cfa1c", + "avatar": "assets/images/avatars/female-11.jpg", + "name": "Latonya Cruz", + "about": "Hi there! I'm using FuseChat.", + "status": "offline", + "details": { + "emails": [ + { + "email": "latonyacruz@mail.me", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "tm", + "phoneNumber": "981 508 2080", + "label": "Mobile" + }, + { + "country": "tm", + "phoneNumber": "817 425 2052", + "label": "Work" + }, + { + "country": "tm", + "phoneNumber": "939 434 3805", + "label": "Home" + } + ], + "title": "Motor Winder", + "company": "Zilch", + "birthday": "1967-11-28T12:00:00.000Z", + "address": "775 Dahill Road, Iberia, California, PO2169" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "142abf21-e635-4a7d-9330-e57f66adcdbe", + "avatar": "assets/images/avatars/female-12.jpg", + "name": "Evangelina Mcclain", + "about": "Hi there! I'm using FuseChat.", + "status": "offline", + "details": { + "emails": [ + { + "email": "evangelinamcclain@mail.info", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "ck", + "phoneNumber": "992 583 3187", + "label": "Mobile" + }, + { + "country": "ck", + "phoneNumber": "881 472 3297", + "label": "Work" + }, + { + "country": "ck", + "phoneNumber": "846 477 3596", + "label": "Home" + } + ], + "title": "Congressional Representative", + "company": "Straloy", + "birthday": "1976-02-15T12:00:00.000Z", + "address": "305 Columbia Street, Dupuyer, Puerto Rico, PO8744" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "e4f255a3-b5dd-45a7-975f-c399604a399a", + "avatar": "assets/images/avatars/male-09.jpg", + "name": "Herring Gonzales", + "about": "Hi there! I'm using FuseChat.", + "status": "offline", + "details": { + "emails": [ + { + "email": "herringgonzales@mail.biz", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "ai", + "phoneNumber": "995 411 2513", + "label": "Mobile" + }, + { + "country": "ai", + "phoneNumber": "839 492 2760", + "label": "Work" + } + ], + "title": "Gas Meter Mechanic", + "company": "Cubix", + "birthday": "1995-02-16T12:00:00.000Z", + "address": "195 Brooklyn Road, Jeff, Marshall Islands, PO2943" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "ab4f712d-d712-41a8-b567-be4c66c349a3", + "avatar": "assets/images/avatars/female-13.jpg", + "name": "Alyce Cash", + "about": "Hi there! I'm using FuseChat.", + "status": "offline", + "details": { + "emails": [ + { + "email": "alycecash@mail.co.uk", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "ht", + "phoneNumber": "969 499 3077", + "label": "Mobile" + }, + { + "country": "ht", + "phoneNumber": "907 513 2784", + "label": "Work" + } + ], + "title": "Weather Analyst", + "company": "Qnekt", + "birthday": "1973-12-19T12:00:00.000Z", + "address": "964 Henry Street, Eureka, Indiana, PO1035" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "5d067800-c301-46c6-a7f7-28dc89d9a554", + "avatar": null, + "name": "Kristine Pacheco", + "about": "Hi there! I'm using FuseChat.", + "status": "offline", + "details": { + "emails": [ + { + "email": "kristinepacheco@mail.net", + "label": "Personal" + }, + { + "email": "pacheco.kristine@vurbo.ca", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "mm", + "phoneNumber": "977 516 2492", + "label": "Mobile" + } + ], + "title": "Short Story Writer", + "company": "Vurbo", + "birthday": "1985-10-22T12:00:00.000Z", + "address": "622 Dodworth Street, Rose, Arizona, PO9530" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "c500255a-1173-47d0-a0e4-4944d48fc12a", + "avatar": "assets/images/avatars/male-10.jpg", + "name": "English Haney", + "about": "Hi there! I'm using FuseChat.", + "status": "offline", + "details": { + "emails": [ + { + "email": "englishhaney@mail.org", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "lb", + "phoneNumber": "989 567 3834", + "label": "Mobile" + } + ], + "title": "Meteorologist", + "company": "Photobin", + "birthday": "1969-09-05T12:00:00.000Z", + "address": "579 Pooles Lane, Belleview, Montana, PO4106" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "b62359fd-f2a8-46e6-904e-31052d1cd675", + "avatar": "assets/images/avatars/male-11.jpg", + "name": "Joseph Strickland", + "about": "Hi there! I'm using FuseChat.", + "status": "offline", + "details": { + "emails": [ + { + "email": "josephstrickland@mail.io", + "label": "Personal" + }, + { + "email": "strickland.joseph@bytrex.us", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "jo", + "phoneNumber": "990 450 2729", + "label": "Mobile" + } + ], + "title": "Hotel Manager", + "company": "Bytrex", + "birthday": "1991-09-08T12:00:00.000Z", + "address": "844 Ellery Street, Hondah, Texas, PO1272" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "16b9e696-ea95-4dd8-86c4-3caf705a1dc6", + "avatar": "assets/images/avatars/male-12.jpg", + "name": "Nunez Faulkner", + "about": "Hi there! I'm using FuseChat.", + "status": "offline", + "details": { + "emails": [ + { + "email": "nunezfaulkner@mail.tv", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "xk", + "phoneNumber": "909 552 3327", + "label": "Mobile" + } + ], + "title": "Hotel Manager", + "company": "Buzzopia", + "birthday": "1982-01-23T12:00:00.000Z", + "address": "614 Herkimer Court, Darrtown, Nebraska, PO9308" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "19662ecf-0686-4aad-a46c-24b552eb2ff5", + "avatar": "assets/images/avatars/female-15.jpg", + "name": "Juana Morrow", + "about": "Hi there! I'm using FuseChat.", + "status": "offline", + "details": { + "emails": [ + { + "email": "juanamorrow@mail.com", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "ee", + "phoneNumber": "868 438 3943", + "label": "Mobile" + } + ], + "title": "Meteorologist", + "company": "Lyria", + "birthday": "1992-03-29T12:00:00.000Z", + "address": "663 Drew Street, Juntura, Georgia, PO9857" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "26dfe954-8bf3-45ee-b285-1d0a88c8d3ea", + "avatar": "assets/images/avatars/male-13.jpg", + "name": "Lara Gaines", + "about": "Hi there! I'm using FuseChat.", + "status": "offline", + "details": { + "emails": [ + { + "email": "laragaines@mail.name", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "mr", + "phoneNumber": "891 498 2043", + "label": "Mobile" + } + ], + "title": "Electromedical Equipment Technician", + "company": "Acruex", + "birthday": "1961-06-07T12:00:00.000Z", + "address": "762 Troutman Street, Drummond, Oregon, PO6973" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "d6462af2-c488-4de7-9b26-3845bd2983f9", + "avatar": "assets/images/avatars/male-14.jpg", + "name": "Johnston Riddle", + "about": "Hi there! I'm using FuseChat.", + "status": "online", + "details": { + "emails": [ + { + "email": "johnstonriddle@mail.me", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "bt", + "phoneNumber": "979 541 2691", + "label": "Mobile" + }, + { + "country": "bt", + "phoneNumber": "909 407 3887", + "label": "Work" + }, + { + "country": "bt", + "phoneNumber": "864 557 3128", + "label": "Home" + } + ], + "title": "Hotel Manager", + "company": "Xleen", + "birthday": "1972-09-13T12:00:00.000Z", + "address": "674 Bryant Street, Grahamtown, Federated States Of Micronesia, PO2757" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "a1723c04-69fe-4573-a135-6645658afe76", + "avatar": null, + "name": "Vargas Gardner", + "about": "Hi there! I'm using FuseChat.", + "status": "away", + "details": { + "emails": [ + { + "email": "vargasgardner@mail.info", + "label": "Personal" + }, + { + "email": "gardner.vargas@cosmosis.biz", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "bi", + "phoneNumber": "855 456 2754", + "label": "Mobile" + } + ], + "title": "Bindery Machine Operator", + "company": "Cosmosis", + "birthday": "1979-10-21T12:00:00.000Z", + "address": "869 Seton Place, Chemung, Maine, PO8109" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "823e6166-c0c8-4373-9270-8a0d17489a08", + "avatar": "assets/images/avatars/male-16.jpg", + "name": "Mccall Day", + "about": "Hi there! I'm using FuseChat.", + "status": "away", + "details": { + "emails": [ + { + "email": "mccallday@mail.co.uk", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "se", + "phoneNumber": "993 504 3286", + "label": "Mobile" + }, + { + "country": "se", + "phoneNumber": "924 434 2238", + "label": "Work" + }, + { + "country": "se", + "phoneNumber": "816 466 2634", + "label": "Home" + } + ], + "title": "Historiographer", + "company": "Nipaz", + "birthday": "1964-03-05T12:00:00.000Z", + "address": "854 Hanover Place, Harleigh, New Jersey, PO9459" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "2c37ed00-427a-46d7-8f8f-d711c768d1ee", + "avatar": "assets/images/avatars/male-17.jpg", + "name": "Silva Foster", + "about": "Hi there! I'm using FuseChat.", + "status": "away", + "details": { + "emails": [ + { + "email": "silvafoster@mail.net", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "bn", + "phoneNumber": "916 511 3837", + "label": "Mobile" + }, + { + "country": "bn", + "phoneNumber": "949 564 3247", + "label": "Work" + } + ], + "title": "Insurance Analyst", + "company": "Extrawear", + "birthday": "1980-04-29T12:00:00.000Z", + "address": "137 Bridge Street, Sisquoc, District Of Columbia, PO4105" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "944764c0-b261-4428-9188-bbd3022d66a8", + "avatar": "assets/images/avatars/female-16.jpg", + "name": "Cathryn Snider", + "about": "Hi there! I'm using FuseChat.", + "status": "away", + "details": { + "emails": [ + { + "email": "cathrynsnider@mail.ca", + "label": "Personal" + }, + { + "email": "snider.cathryn@phormula.org", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "na", + "phoneNumber": "896 471 3036", + "label": "Mobile" + }, + { + "country": "na", + "phoneNumber": "851 491 3567", + "label": "Work" + }, + { + "country": "na", + "phoneNumber": "805 487 2016", + "label": "Home" + } + ], + "title": "Short Story Writer", + "company": "Phormula", + "birthday": "1981-06-09T12:00:00.000Z", + "address": "528 Glenmore Avenue, Elrama, Illinois, PO2952" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "f2b3c756-5ad2-4d4b-aee5-b32c91457128", + "avatar": null, + "name": "Mooney Cantrell", + "about": "Hi there! I'm using FuseChat.", + "status": "away", + "details": { + "emails": [ + { + "email": "mooneycantrell@mail.io", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "bh", + "phoneNumber": "915 577 3020", + "label": "Mobile" + }, + { + "country": "bh", + "phoneNumber": "923 431 3594", + "label": "Work" + } + ], + "title": "Fundraising Director", + "company": "Crustatia", + "birthday": "1968-12-07T12:00:00.000Z", + "address": "277 Coventry Road, Fairforest, Nevada, PO6031" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "54b1c201-4b2b-4be0-ad70-a6413e9628cd", + "avatar": "assets/images/avatars/female-17.jpg", + "name": "Saundra Murphy", + "about": "Hi there! I'm using FuseChat.", + "status": "away", + "details": { + "emails": [ + { + "email": "saundramurphy@mail.us", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "mt", + "phoneNumber": "902 529 2999", + "label": "Mobile" + } + ], + "title": "Dental Laboratory Worker", + "company": "Zilencio", + "birthday": "1983-11-07T12:00:00.000Z", + "address": "557 Monroe Street, Mayfair, Maryland, PO7200" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "faf979c7-a13b-445a-b30a-08845f5fa90e", + "avatar": "assets/images/avatars/female-18.jpg", + "name": "Enid Sparks", + "about": "Hi there! I'm using FuseChat.", + "status": "away", + "details": { + "emails": [ + { + "email": "enidsparks@mail.tv", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "bh", + "phoneNumber": "813 410 3258", + "label": "Mobile" + }, + { + "country": "bh", + "phoneNumber": "877 501 2767", + "label": "Work" + } + ], + "title": "Historiographer", + "company": "Skybold", + "birthday": "1984-05-04T12:00:00.000Z", + "address": "219 Village Court, Keyport, Alabama, PO7776" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "2bfa2be5-7688-48d5-b5ac-dc0d9ac97f14", + "avatar": null, + "name": "Nadia Mcknight", + "about": "Hi there! I'm using FuseChat.", + "status": "away", + "details": { + "emails": [ + { + "email": "nadiamcknight@mail.com", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "tk", + "phoneNumber": "943 511 2203", + "label": "Mobile" + }, + { + "country": "tk", + "phoneNumber": "817 578 2993", + "label": "Work" + } + ], + "title": "Legal Assistant", + "company": "Pearlesex", + "birthday": "1973-10-06T12:00:00.000Z", + "address": "448 Berriman Street, Reinerton, Washington, PO6704" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "77a4383b-b5a5-4943-bc46-04c3431d1566", + "avatar": "assets/images/avatars/male-19.jpg", + "name": "Best Blackburn", + "about": "Hi there! I'm using FuseChat.", + "status": "away", + "details": { + "emails": [ + { + "email": "bestblackburn@mail.name", + "label": "Personal" + }, + { + "email": "blackburn.best@beadzza.me", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "gl", + "phoneNumber": "814 498 3701", + "label": "Mobile" + } + ], + "title": "Hotel Manager", + "company": "Beadzza", + "birthday": "1987-06-07T12:00:00.000Z", + "address": "578 Tampa Court, Wescosville, Ohio, PO4108" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "8bb0f597-673a-47ca-8c77-2f83219cb9af", + "avatar": null, + "name": "Duncan Carver", + "about": "Hi there! I'm using FuseChat.", + "status": "away", + "details": { + "emails": [ + { + "email": "duncancarver@mail.info", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "jm", + "phoneNumber": "968 547 2111", + "label": "Mobile" + }, + { + "country": "jm", + "phoneNumber": "968 433 3120", + "label": "Work" + }, + { + "country": "jm", + "phoneNumber": "905 425 2777", + "label": "Home" + } + ], + "title": "Historiographer", + "company": "Hotcakes", + "birthday": "1980-09-15T12:00:00.000Z", + "address": "931 Bristol Street, Why, South Carolina, PO9700" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "c318e31f-1d74-49c5-8dae-2bc5805e2fdb", + "avatar": "assets/images/avatars/male-01.jpg", + "name": "Martin Richards", + "about": "Hi there! I'm using FuseChat.", + "status": "away", + "details": { + "emails": [ + { + "email": "martinrichards@mail.biz", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "mg", + "phoneNumber": "902 500 2668", + "label": "Mobile" + }, + { + "country": "mg", + "phoneNumber": "947 559 2919", + "label": "Work" + }, + { + "country": "mg", + "phoneNumber": "934 434 3768", + "label": "Home" + } + ], + "title": "Dental Laboratory Worker", + "company": "Overfork", + "birthday": "1977-04-12T12:00:00.000Z", + "address": "268 Hutchinson Court, Drytown, Florida, PO3041" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "0a8bc517-631a-4a93-aacc-000fa2e8294c", + "avatar": "assets/images/avatars/female-20.jpg", + "name": "Candice Munoz", + "about": "Hi there! I'm using FuseChat.", + "status": "away", + "details": { + "emails": [ + { + "email": "candicemunoz@mail.co.uk", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "fm", + "phoneNumber": "838 562 2769", + "label": "Mobile" + } + ], + "title": "Legal Assistant", + "company": "Eclipto", + "birthday": "1976-09-09T12:00:00.000Z", + "address": "946 Remsen Street, Caroline, New Mexico, PO3247" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "a4c9945a-757b-40b0-8942-d20e0543cabd", + "avatar": "assets/images/avatars/female-01.jpg", + "name": "Vickie Mosley", + "about": "Hi there! I'm using FuseChat.", + "status": "away", + "details": { + "emails": [ + { + "email": "vickiemosley@mail.net", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "tr", + "phoneNumber": "939 555 3054", + "label": "Mobile" + }, + { + "country": "tr", + "phoneNumber": "852 486 2053", + "label": "Work" + } + ], + "title": "Bindery Machine Operator", + "company": "Strozen", + "birthday": "1989-06-21T12:00:00.000Z", + "address": "397 Vandalia Avenue, Rockingham, Michigan, PO8089" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "b8258ccf-48b5-46a2-9c95-e0bd7580c645", + "avatar": "assets/images/avatars/female-02.jpg", + "name": "Tina Harris", + "about": "Hi there! I'm using FuseChat.", + "status": "away", + "details": { + "emails": [ + { + "email": "tinaharris@mail.ca", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "gp", + "phoneNumber": "933 464 2431", + "label": "Mobile" + }, + { + "country": "gp", + "phoneNumber": "894 535 3609", + "label": "Work" + } + ], + "title": "Short Story Writer", + "company": "Gallaxia", + "birthday": "1976-09-10T12:00:00.000Z", + "address": "821 Beverly Road, Tyro, Colorado, PO4248" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "f004ea79-98fc-436c-9ba5-6cfe32fe583d", + "avatar": "assets/images/avatars/male-02.jpg", + "name": "Holt Manning", + "about": "Hi there! I'm using FuseChat.", + "status": "away", + "details": { + "emails": [ + { + "email": "holtmanning@mail.org", + "label": "Personal" + }, + { + "email": "manning.holt@idetica.io", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "nz", + "phoneNumber": "822 531 2600", + "label": "Mobile" + }, + { + "country": "nz", + "phoneNumber": "922 549 2094", + "label": "Work" + } + ], + "title": "Fundraising Director", + "company": "Idetica", + "birthday": "1973-11-08T12:00:00.000Z", + "address": "364 Porter Avenue, Delshire, Missouri, PO8911" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "8b69fe2d-d7cc-4a3d-983d-559173e37d37", + "background": "assets/images/cards/28-640x480.jpg", + "name": "Misty Ramsey", + "about": "Hi there! I'm using FuseChat.", + "status": "away", + "details": { + "emails": [ + { + "email": "mistyramsey@mail.us", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "kp", + "phoneNumber": "990 457 2106", + "label": "Mobile" + }, + { + "country": "kp", + "phoneNumber": "918 550 2946", + "label": "Work" + } + ], + "company": "Grupoli", + "birthday": "1969-08-10T12:00:00.000Z", + "address": "101 Sackett Street, Naomi, Tennessee, PO6335" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "cdcc62e4-1520-4ccc-803d-52868c7e01ba", + "avatar": "assets/images/avatars/female-04.jpg", + "name": "Dee Alvarado", + "about": "Hi there! I'm using FuseChat.", + "status": "away", + "details": { + "emails": [ + { + "email": "deealvarado@mail.tv", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "nu", + "phoneNumber": "855 445 2483", + "label": "Mobile" + }, + { + "country": "nu", + "phoneNumber": "858 415 2860", + "label": "Work" + }, + { + "country": "nu", + "phoneNumber": "968 587 2752", + "label": "Home" + } + ], + "title": "Dental Laboratory Worker", + "company": "Tsunamia", + "birthday": "1996-06-17T12:00:00.000Z", + "address": "956 Pierrepont Street, Crumpler, Hawaii, PO3299" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "e2946946-b4b5-4fd7-bab4-62c38cdff2f1", + "avatar": "assets/images/avatars/female-05.jpg", + "name": "Samantha Jacobson", + "about": "Hi there! I'm using FuseChat.", + "status": "do-not-disturb", + "details": { + "emails": [ + { + "email": "samanthajacobson@mail.com", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "es", + "phoneNumber": "879 591 3327", + "label": "Mobile" + } + ], + "title": "Dental Laboratory Worker", + "company": "Emoltra", + "birthday": "1972-02-04T12:00:00.000Z", + "address": "384 Love Lane, Dyckesville, New York, PO4115" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "fdc77706-6ba2-4397-b2f8-a9a0b6495153", + "avatar": "assets/images/avatars/female-06.jpg", + "name": "Rhea Landry", + "about": "Hi there! I'm using FuseChat.", + "status": "do-not-disturb", + "details": { + "emails": [ + { + "email": "rhealandry@mail.name", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "jp", + "phoneNumber": "906 579 3698", + "label": "Mobile" + }, + { + "country": "jp", + "phoneNumber": "841 475 2681", + "label": "Work" + } + ], + "title": "Electromedical Equipment Technician", + "company": "Comtent", + "birthday": "1988-05-22T12:00:00.000Z", + "address": "725 Arlington Avenue, Mathews, Wyoming, PO4562" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "12148fa2-e0a4-49fb-b3c5-daeecdb5180a", + "avatar": "assets/images/avatars/female-07.jpg", + "name": "Olga Rhodes", + "about": "Hi there! I'm using FuseChat.", + "status": "do-not-disturb", + "details": { + "emails": [ + { + "email": "olgarhodes@mail.me", + "label": "Personal" + }, + { + "email": "rhodes.olga@moreganic.info", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "tl", + "phoneNumber": "971 514 3366", + "label": "Mobile" + }, + { + "country": "tl", + "phoneNumber": "807 480 2033", + "label": "Work" + }, + { + "country": "tl", + "phoneNumber": "810 528 3783", + "label": "Home" + } + ], + "title": "Pastry Baker", + "company": "Moreganic", + "birthday": "1971-08-13T12:00:00.000Z", + "address": "253 Beard Street, Staples, Massachusetts, PO8089" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "07dd64eb-8b8f-4765-a16c-8db083c45096", + "avatar": "assets/images/avatars/female-08.jpg", + "name": "Lorraine Pennington", + "about": "Hi there! I'm using FuseChat.", + "status": "do-not-disturb", + "details": { + "emails": [ + { + "email": "lorrainepennington@mail.biz", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "fm", + "phoneNumber": "932 404 3308", + "label": "Mobile" + }, + { + "country": "fm", + "phoneNumber": "979 550 3200", + "label": "Work" + }, + { + "country": "fm", + "phoneNumber": "868 557 3568", + "label": "Home" + } + ], + "title": "Electromedical Equipment Technician", + "company": "Marvane", + "birthday": "1967-06-10T12:00:00.000Z", + "address": "962 Whitney Avenue, Sussex, North Dakota, PO5796" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "81fdc48c-5572-4123-8a73-71b7892120de", + "avatar": "assets/images/avatars/female-09.jpg", + "name": "Earlene Rosales", + "about": "Hi there! I'm using FuseChat.", + "status": "do-not-disturb", + "details": { + "emails": [ + { + "email": "earlenerosales@mail.co.uk", + "label": "Personal" + }, + { + "email": "rosales.earlene@softmicro.net", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "ki", + "phoneNumber": "927 589 3619", + "label": "Mobile" + } + ], + "title": "Historiographer", + "company": "Softmicro", + "birthday": "1960-11-13T12:00:00.000Z", + "address": "981 Kingston Avenue, Topaz, Connecticut, PO6866" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "f8bbf6be-d49a-41a3-bb80-3d51df84c12b", + "avatar": "assets/images/avatars/female-10.jpg", + "name": "Marcia Hatfield", + "about": "Hi there! I'm using FuseChat.", + "status": "do-not-disturb", + "details": { + "emails": [ + { + "email": "marciahatfield@mail.ca", + "label": "Personal" + }, + { + "email": "hatfield.marcia@datagen.org", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "no", + "phoneNumber": "883 432 3718", + "label": "Mobile" + }, + { + "country": "no", + "phoneNumber": "934 516 2135", + "label": "Work" + }, + { + "country": "no", + "phoneNumber": "923 596 3843", + "label": "Home" + } + ], + "title": "Track Service Worker", + "company": "Datagen", + "birthday": "1980-02-26T12:00:00.000Z", + "address": "802 Preston Court, Waikele, Pennsylvania, PO7421" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "cd482941-3eaf-4560-ac37-56a9296025df", + "avatar": "assets/images/avatars/female-11.jpg", + "name": "Liliana Ayala", + "about": "Hi there! I'm using FuseChat.", + "status": "do-not-disturb", + "details": { + "emails": [ + { + "email": "lilianaayala@mail.io", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "bd", + "phoneNumber": "936 590 2412", + "label": "Mobile" + } + ], + "title": "Insurance Analyst", + "company": "Pharmex", + "birthday": "1988-04-27T12:00:00.000Z", + "address": "935 Guider Avenue, Kipp, Wisconsin, PO5282" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "22f18d47-ff8d-440e-888d-a1747c093052", + "avatar": "assets/images/avatars/female-12.jpg", + "name": "Alice Harding", + "about": "Hi there! I'm using FuseChat.", + "status": "do-not-disturb", + "details": { + "emails": [ + { + "email": "aliceharding@mail.us", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "sx", + "phoneNumber": "881 472 3113", + "label": "Mobile" + }, + { + "country": "sx", + "phoneNumber": "974 548 3124", + "label": "Work" + }, + { + "country": "sx", + "phoneNumber": "800 518 3615", + "label": "Home" + } + ], + "title": "Track Service Worker", + "company": "Futurity", + "birthday": "1985-09-17T12:00:00.000Z", + "address": "387 Holt Court, Thomasville, Alaska, PO2867" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "a9a9f382-e4c3-42fb-9fe9-65aa534732b5", + "avatar": "assets/images/avatars/female-13.jpg", + "name": "Francisca Perkins", + "about": "Hi there! I'm using FuseChat.", + "status": "do-not-disturb", + "details": { + "emails": [ + { + "email": "franciscaperkins@mail.tv", + "label": "Personal" + }, + { + "email": "perkins.francisca@overplex.com", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "au", + "phoneNumber": "830 430 3437", + "label": "Mobile" + }, + { + "country": "au", + "phoneNumber": "868 538 2886", + "label": "Work" + } + ], + "title": "Dental Laboratory Worker", + "company": "Overplex", + "birthday": "1966-08-14T12:00:00.000Z", + "address": "733 Delmonico Place, Belvoir, Virginia, PO7102" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "0222b24b-c288-48d1-b356-0f087fa172f8", + "avatar": null, + "name": "Warren Gates", + "about": "Hi there! I'm using FuseChat.", + "status": "do-not-disturb", + "details": { + "emails": [ + { + "email": "warrengates@mail.name", + "label": "Personal" + }, + { + "email": "gates.warren@qualitex.me", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "gt", + "phoneNumber": "847 513 2248", + "label": "Mobile" + }, + { + "country": "gt", + "phoneNumber": "866 591 3665", + "label": "Work" + }, + { + "country": "gt", + "phoneNumber": "877 539 3840", + "label": "Home" + } + ], + "title": "Banker Mason", + "company": "Qualitex", + "birthday": "1977-02-23T12:00:00.000Z", + "address": "713 Fane Court, Lemoyne, Kentucky, PO3601" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "0630f1ca-cdb9-405d-b134-68f733334089", + "avatar": "assets/images/avatars/female-14.jpg", + "name": "Maryann Mcintyre", + "about": "Hi there! I'm using FuseChat.", + "status": "do-not-disturb", + "details": { + "emails": [ + { + "email": "maryannmcintyre@mail.info", + "label": "Personal" + }, + { + "email": "mcintyre.maryann@aquafire.biz", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "bf", + "phoneNumber": "861 419 2752", + "label": "Mobile" + }, + { + "country": "bf", + "phoneNumber": "935 553 3031", + "label": "Work" + } + ], + "title": "Fundraising Director", + "company": "Aquafire", + "birthday": "1963-04-07T12:00:00.000Z", + "address": "698 Brooklyn Avenue, Dixonville, Utah, PO2712" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "999c24f3-7bb8-4a01-85ca-2fca7863c57e", + "avatar": "assets/images/avatars/female-15.jpg", + "name": "Sharon Marshall", + "about": "Hi there! I'm using FuseChat.", + "status": "do-not-disturb", + "details": { + "emails": [ + { + "email": "sharonmarshall@mail.co.uk", + "label": "Personal" + }, + { + "email": "marshall.sharon@utara.net", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "fo", + "phoneNumber": "947 441 2999", + "label": "Mobile" + }, + { + "country": "fo", + "phoneNumber": "984 441 2615", + "label": "Work" + }, + { + "country": "fo", + "phoneNumber": "824 541 2714", + "label": "Home" + } + ], + "title": "Legal Assistant", + "company": "Utara", + "birthday": "1960-01-26T12:00:00.000Z", + "address": "923 Ivan Court, Hatteras, Idaho, PO7573" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "7e8e1f1e-d19f-45c7-86bd-6fef599dae71", + "avatar": "assets/images/avatars/female-16.jpg", + "name": "Margo Witt", + "about": "Hi there! I'm using FuseChat.", + "status": "do-not-disturb", + "details": { + "emails": [ + { + "email": "margowitt@mail.ca", + "label": "Personal" + }, + { + "email": "witt.margo@norsul.org", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "ao", + "phoneNumber": "992 596 3391", + "label": "Mobile" + }, + { + "country": "ao", + "phoneNumber": "950 489 2505", + "label": "Work" + }, + { + "country": "ao", + "phoneNumber": "891 540 2231", + "label": "Home" + } + ], + "title": "Television News Producer", + "company": "Norsul", + "birthday": "1975-08-31T12:00:00.000Z", + "address": "539 Rockaway Avenue, Whitmer, Guam, PO4871" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "bedcb6a2-da83-4631-866a-77d10d239477", + "avatar": "assets/images/avatars/male-04.jpg", + "name": "Alvarado Turner", + "about": "Hi there! I'm using FuseChat.", + "status": "do-not-disturb", + "details": { + "emails": [ + { + "email": "alvaradoturner@mail.io", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "lv", + "phoneNumber": "961 537 3956", + "label": "Mobile" + } + ], + "title": "Fundraising Director", + "company": "Geologix", + "birthday": "1985-12-08T12:00:00.000Z", + "address": "233 Willmohr Street, Cressey, Iowa, PO1962" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "66f9de1b-f842-4d4c-bb59-f97e91db0462", + "avatar": "assets/images/avatars/male-05.jpg", + "name": "Maldonado Rodriquez", + "about": "Hi there! I'm using FuseChat.", + "status": "do-not-disturb", + "details": { + "emails": [ + { + "email": "maldonadorodriquez@mail.us", + "label": "Personal" + }, + { + "email": "rodriquez.maldonado@zentility.tv", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "et", + "phoneNumber": "811 502 3398", + "label": "Mobile" + }, + { + "country": "et", + "phoneNumber": "877 402 2443", + "label": "Work" + }, + { + "country": "et", + "phoneNumber": "949 536 3451", + "label": "Home" + } + ], + "title": "Dental Laboratory Worker", + "company": "Zentility", + "birthday": "1993-06-01T12:00:00.000Z", + "address": "916 Cobek Court, Morningside, South Dakota, PO2019" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "9cb0ea57-3461-4182-979b-593b0c1ec6c3", + "avatar": "assets/images/avatars/male-06.jpg", + "name": "Tran Duke", + "about": "Hi there! I'm using FuseChat.", + "status": "do-not-disturb", + "details": { + "emails": [ + { + "email": "tranduke@mail.com", + "label": "Personal" + }, + { + "email": "duke.tran@splinx.name", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "si", + "phoneNumber": "837 503 2254", + "label": "Mobile" + }, + { + "country": "si", + "phoneNumber": "893 405 3190", + "label": "Work" + }, + { + "country": "si", + "phoneNumber": "931 402 3874", + "label": "Home" + } + ], + "title": "Legal Assistant", + "company": "Splinx", + "birthday": "1976-04-27T12:00:00.000Z", + "address": "405 Canarsie Road, Richville, Virgin Islands, PO2744" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "2fb89a90-5622-4b5b-8df3-d49b85905392", + "avatar": null, + "name": "Estela Lyons", + "about": "Hi there! I'm using FuseChat.", + "status": "do-not-disturb", + "details": { + "emails": [ + { + "email": "estelalyons@mail.me", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "vg", + "phoneNumber": "864 459 3205", + "label": "Mobile" + }, + { + "country": "vg", + "phoneNumber": "886 524 2880", + "label": "Work" + }, + { + "country": "vg", + "phoneNumber": "815 484 3420", + "label": "Home" + } + ], + "title": "Animal Sitter", + "company": "Gonkle", + "birthday": "1968-03-11T12:00:00.000Z", + "address": "540 Metrotech Courtr, Garfield, American Samoa, PO2290" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "8141dd08-3a6e-4770-912c-59d0ed06dde6", + "avatar": null, + "name": "Madeleine Fletcher", + "about": "Hi there! I'm using FuseChat.", + "status": "do-not-disturb", + "details": { + "emails": [ + { + "email": "madeleinefletcher@mail.info", + "label": "Personal" + }, + { + "email": "fletcher.madeleine@genmom.biz", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "uy", + "phoneNumber": "898 554 3354", + "label": "Mobile" + } + ], + "title": "Fundraising Director", + "company": "Genmom", + "birthday": "1970-07-15T12:00:00.000Z", + "address": "825 Cherry Street, Foscoe, Minnesota, PO7290" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "7585015c-ada2-4f88-998d-9646865d1ad2", + "avatar": "assets/images/avatars/male-07.jpg", + "name": "Meyer Roach", + "about": "Hi there! I'm using FuseChat.", + "status": "online", + "details": { + "emails": [ + { + "email": "meyerroach@mail.co.uk", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "uz", + "phoneNumber": "891 543 2053", + "label": "Mobile" + }, + { + "country": "uz", + "phoneNumber": "842 564 3671", + "label": "Work" + }, + { + "country": "uz", + "phoneNumber": "992 491 3514", + "label": "Home" + } + ], + "title": "Electromedical Equipment Technician", + "company": "Zentime", + "birthday": "1968-10-16T12:00:00.000Z", + "address": "315 Albemarle Road, Allison, Arkansas, PO6008" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "32c73a6a-67f2-48a9-b2a1-b23da83187bb", + "avatar": null, + "name": "Bolton Obrien", + "about": "Hi there! I'm using FuseChat.", + "status": "online", + "details": { + "emails": [ + { + "email": "boltonobrien@mail.net", + "label": "Personal" + }, + { + "email": "obrien.bolton@enersol.ca", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "tn", + "phoneNumber": "860 472 2458", + "label": "Mobile" + }, + { + "country": "tn", + "phoneNumber": "887 499 3580", + "label": "Work" + } + ], + "title": "Banker Mason", + "company": "Enersol", + "birthday": "1968-09-08T12:00:00.000Z", + "address": "818 Aviation Road, Geyserville, Palau, PO9655" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "114642a2-ccb7-4cb1-ad2b-5e9b6a0c1d2e", + "avatar": "assets/images/avatars/male-09.jpg", + "name": "Barber Johnson", + "about": "Hi there! I'm using FuseChat.", + "status": "online", + "details": { + "emails": [ + { + "email": "barberjohnson@mail.org", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "az", + "phoneNumber": "928 567 2521", + "label": "Mobile" + }, + { + "country": "az", + "phoneNumber": "898 515 2048", + "label": "Work" + }, + { + "country": "az", + "phoneNumber": "935 495 3348", + "label": "Home" + } + ], + "title": "Talent Manager", + "company": "Zounds", + "birthday": "1967-03-02T12:00:00.000Z", + "address": "386 Vernon Avenue, Dragoon, North Carolina, PO4559" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "310ece7d-dbb0-45d6-9e69-14c24e50fe3d", + "avatar": "assets/images/avatars/male-10.jpg", + "name": "Cervantes Kramer", + "about": "Hi there! I'm using FuseChat.", + "status": "online", + "details": { + "emails": [ + { + "email": "cervanteskramer@mail.io", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "vg", + "phoneNumber": "998 498 2507", + "label": "Mobile" + }, + { + "country": "vg", + "phoneNumber": "856 477 3445", + "label": "Work" + } + ], + "title": "Motor Winder", + "company": "Xeronk", + "birthday": "1992-09-04T12:00:00.000Z", + "address": "238 Rochester Avenue, Lydia, Oklahoma, PO3914" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "dcc673f6-de59-4715-94ed-8f64663d449b", + "avatar": "assets/images/avatars/female-19.jpg", + "name": "Megan Suarez", + "about": "Hi there! I'm using FuseChat.", + "status": "online", + "details": { + "emails": [ + { + "email": "megansuarez@mail.us", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "bb", + "phoneNumber": "875 422 2053", + "label": "Mobile" + }, + { + "country": "bb", + "phoneNumber": "861 487 2597", + "label": "Work" + }, + { + "country": "bb", + "phoneNumber": "873 414 3953", + "label": "Home" + } + ], + "title": "Bindery Machine Operator", + "company": "Cemention", + "birthday": "1984-09-08T12:00:00.000Z", + "address": "112 Tillary Street, Camptown, Vermont, PO8827" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "3e4ca731-d39b-4ad9-b6e0-f84e67f4b74a", + "background": "assets/images/cards/26-640x480.jpg", + "name": "Ofelia Ratliff", + "about": "Hi there! I'm using FuseChat.", + "status": "online", + "details": { + "emails": [ + { + "email": "ofeliaratliff@mail.tv", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "vu", + "phoneNumber": "978 546 3699", + "label": "Mobile" + }, + { + "country": "vu", + "phoneNumber": "892 551 2229", + "label": "Work" + }, + { + "country": "vu", + "phoneNumber": "949 495 3479", + "label": "Home" + } + ], + "company": "Buzzmaker", + "birthday": "1988-11-11T12:00:00.000Z", + "address": "951 Hampton Avenue, Bartonsville, Mississippi, PO4232" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "2012d4a5-19e4-444d-aaff-1d8b1d853650", + "avatar": "assets/images/avatars/female-01.jpg", + "name": "Laurel Parker", + "about": "Hi there! I'm using FuseChat.", + "status": "online", + "details": { + "emails": [ + { + "email": "laurelparker@mail.com", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "lu", + "phoneNumber": "805 502 3677", + "label": "Mobile" + }, + { + "country": "lu", + "phoneNumber": "925 527 2973", + "label": "Work" + }, + { + "country": "lu", + "phoneNumber": "975 495 2977", + "label": "Home" + } + ], + "title": "Fundraising Director", + "company": "Omnigog", + "birthday": "1987-05-17T12:00:00.000Z", + "address": "157 Woodhull Street, Rutherford, West Virginia, PO6646" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "012b8219-74bf-447c-af2c-66904d90a956", + "avatar": "assets/images/avatars/female-02.jpg", + "name": "Tracy Delacruz", + "about": "Hi there! I'm using FuseChat.", + "status": "online", + "details": { + "emails": [ + { + "email": "tracydelacruz@mail.name", + "label": "Personal" + }, + { + "email": "delacruz.tracy@shepard.me", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "co", + "phoneNumber": "974 428 2886", + "label": "Mobile" + } + ], + "title": "Bindery Machine Operator", + "company": "Shepard", + "birthday": "1963-08-10T12:00:00.000Z", + "address": "604 Merit Court, Wyano, New Hampshire, PO1641" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "8b1befd2-66a7-4981-ae52-77f01b382d18", + "avatar": "assets/images/avatars/female-03.jpg", + "name": "Jeannette Stanton", + "about": "Hi there! I'm using FuseChat.", + "status": "do-not-disturb", + "details": { + "emails": [ + { + "email": "jeannettestanton@mail.info", + "label": "Personal" + }, + { + "email": "stanton.jeannette@zentury.biz", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "dz", + "phoneNumber": "947 561 3783", + "label": "Mobile" + }, + { + "country": "dz", + "phoneNumber": "917 463 3737", + "label": "Work" + }, + { + "country": "dz", + "phoneNumber": "835 510 2059", + "label": "Home" + } + ], + "title": "Hotel Manager", + "company": "Zentury", + "birthday": "1975-09-02T12:00:00.000Z", + "address": "100 Menahan Street, Snyderville, Kansas, PO1006" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "844668c3-5e20-4fed-9e3a-7d274f696e61", + "avatar": "assets/images/avatars/female-04.jpg", + "name": "Johnnie Cleveland", + "about": "Hi there! I'm using FuseChat.", + "status": "do-not-disturb", + "details": { + "emails": [ + { + "email": "johnniecleveland@mail.co.uk", + "label": "Personal" + }, + { + "email": "cleveland.johnnie@viasia.net", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "au", + "phoneNumber": "947 468 2942", + "label": "Mobile" + } + ], + "title": "Fundraising Director", + "company": "Viasia", + "birthday": "1986-03-15T12:00:00.000Z", + "address": "283 Albany Avenue, Jennings, Rhode Island, PO1646" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "5a01e870-8be1-45a5-b58a-ec09c06e8f28", + "avatar": "assets/images/avatars/female-05.jpg", + "name": "Staci Hyde", + "about": "Hi there! I'm using FuseChat.", + "status": "do-not-disturb", + "details": { + "emails": [ + { + "email": "stacihyde@mail.ca", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "id", + "phoneNumber": "944 525 2944", + "label": "Mobile" + }, + { + "country": "id", + "phoneNumber": "877 500 2506", + "label": "Work" + } + ], + "title": "Banker Mason", + "company": "Zilla", + "birthday": "1975-04-22T12:00:00.000Z", + "address": "560 Dooley Street, Ellerslie, Louisiana, PO1005" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "5ac1f193-f150-45f9-bfe4-b7b4e1a83ff9", + "avatar": "assets/images/avatars/female-06.jpg", + "name": "Angela Gallagher", + "about": "Hi there! I'm using FuseChat.", + "status": "offline", + "details": { + "emails": [ + { + "email": "angelagallagher@mail.org", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "et", + "phoneNumber": "996 514 3856", + "label": "Mobile" + }, + { + "country": "et", + "phoneNumber": "903 539 2049", + "label": "Work" + }, + { + "country": "et", + "phoneNumber": "938 463 3685", + "label": "Home" + } + ], + "title": "Electromedical Equipment Technician", + "company": "Zenolux", + "birthday": "1965-08-02T12:00:00.000Z", + "address": "445 Remsen Avenue, Ruckersville, Delaware, PO2712" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "995df091-d78a-4bb7-840c-ba6a7d14a1bd", + "avatar": "assets/images/avatars/male-11.jpg", + "name": "Hutchinson Levy", + "about": "Hi there! I'm using FuseChat.", + "status": "offline", + "details": { + "emails": [ + { + "email": "hutchinsonlevy@mail.io", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "et", + "phoneNumber": "970 546 3452", + "label": "Mobile" + }, + { + "country": "et", + "phoneNumber": "894 438 2430", + "label": "Work" + } + ], + "title": "Congressional Representative", + "company": "Zytrek", + "birthday": "1978-03-22T12:00:00.000Z", + "address": "911 Lois Avenue, Epworth, California, PO6557" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "7184be71-a28f-4f2b-8c45-15f78cf2f825", + "avatar": "assets/images/avatars/female-05.jpg", + "name": "Alissa Nelson", + "about": "Hi there! I'm using FuseChat.", + "status": "offline", + "details": { + "emails": [ + { + "email": "alissanelson@mail.us", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "lu", + "phoneNumber": "893 600 2639", + "label": "Mobile" + } + ], + "title": "Bindery Machine Operator", + "company": "Emtrak", + "birthday": "1993-10-19T12:00:00.000Z", + "address": "514 Sutter Avenue, Shindler, Puerto Rico, PO3862" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "325d508c-ca49-42bf-b0d5-c4a6b8da3d5c", + "avatar": null, + "name": "Oliver Head", + "about": "Hi there! I'm using FuseChat.", + "status": "do-not-disturb", + "details": { + "emails": [ + { + "email": "oliverhead@mail.tv", + "label": "Personal" + } + ], + "phoneNumbers": [ + { + "country": "bn", + "phoneNumber": "977 528 3294", + "label": "Mobile" + } + ], + "title": "Meteorologist", + "company": "Rameon", + "birthday": "1967-01-05T12:00:00.000Z", + "address": "569 Clermont Avenue, Movico, Marshall Islands, PO7293" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + }, + { + "id": "c674b6e1-b846-4bba-824b-0b4df0cdec48", + "avatar": "assets/images/avatars/male-13.jpg", + "name": "Duran Barr", + "about": "Hi there! I'm using FuseChat.", + "status": "do-not-disturb", + "details": { + "emails": [ + { + "email": "duranbarr@mail.com", + "label": "Personal" + }, + { + "email": "barr.duran@hinway.name", + "label": "Work" + } + ], + "phoneNumbers": [ + { + "country": "sr", + "phoneNumber": "857 457 2508", + "label": "Mobile" + }, + { + "country": "sr", + "phoneNumber": "887 522 2146", + "label": "Work" + }, + { + "country": "sr", + "phoneNumber": "947 574 3174", + "label": "Home" + } + ], + "title": "Insurance Analyst", + "company": "Hinway", + "birthday": "1977-11-06T12:00:00.000Z", + "address": "103 Chestnut Avenue, Glenbrook, Indiana, PO2578" + }, + "attachments": { + "media": [ + "assets/images/cards/01-320x200.jpg", + "assets/images/cards/02-320x200.jpg", + "assets/images/cards/03-320x200.jpg", + "assets/images/cards/04-320x200.jpg", + "assets/images/cards/05-320x200.jpg", + "assets/images/cards/06-320x200.jpg", + "assets/images/cards/07-320x200.jpg", + "assets/images/cards/08-320x200.jpg" + ], + "docs": [], + "links": [] + } + } + ] + }, + "chat_profile": { + "value": { + "id": "cfaad35d-07a3-4447-a6c3-d8c3d54fd5df", + "name": "Brian Hughes", + "email": "hughes.brian@company.com", + "status": "online", + "avatar": "assets/images/avatars/brian-hughes.jpg", + "about": "Hi there! I'm using FuseChat." + } + }, + "chat_chats": { + "value": [ + { + "id": "ff6bc7f1-449a-4419-af62-b89ce6cae0aa", + "contactId": "9d3f0e7f-dcbd-4e56-a5e8-87b8154e9edf", + "unreadCount": 2, + "muted": false, + "lastMessage": "See you tomorrow!", + "lastMessageAt": "2022-01-05T15:56:48.732Z" + }, + { + "id": "4459a3f0-b65e-4df2-8c37-6ec72fcc4b31", + "contactId": "16b9e696-ea95-4dd8-86c4-3caf705a1dc6", + "unreadCount": 0, + "muted": false, + "lastMessage": "See you tomorrow!", + "lastMessageAt": "2022-01-05T15:56:48.732Z" + }, + { + "id": "f73a5a34-a723-4b35-8439-5289e0164c83", + "contactId": "bf172879-423a-4fd6-8df3-6d1938bbfe1f", + "unreadCount": 1, + "muted": false, + "lastMessage": "See you tomorrow!", + "lastMessageAt": "2022-01-05T15:56:48.732Z" + }, + { + "id": "747f101c-0371-4ca3-9f20-cb913a80fe89", + "contactId": "abd9e78b-9e96-428f-b3ff-4d934c401bee", + "unreadCount": 0, + "muted": true, + "lastMessage": "See you tomorrow!", + "lastMessageAt": "2022-01-05T15:56:48.732Z" + }, + { + "id": "b3facfc4-dfc2-4ac2-b55d-cb70b3e68419", + "contactId": "6519600a-5eaa-45f8-8bed-c46fddb3b26a", + "unreadCount": 0, + "muted": false, + "lastMessage": "See you tomorrow!", + "lastMessageAt": "2022-01-05T15:56:48.732Z" + } + ] + }, + "academy_courses": { + "value": [ + { + "id": "694e4e5f-f25f-470b-bd0e-26b1d4f64028", + "title": "Basics of Angular", + "slug": "basics-of-angular", + "description": "Introductory course for Angular and framework basics", + "category": "web", + "duration": 30, + "totalSteps": 11, + "updatedAt": "Jun 28, 2021", + "featured": true, + "progress": { + "currentStep": 3, + "completed": 2 + } + }, + { + "id": "f924007a-2ee9-470b-a316-8d21ed78277f", + "title": "Basics of TypeScript", + "slug": "basics-of-typeScript", + "description": "Beginner course for Typescript and its basics", + "category": "web", + "duration": 60, + "totalSteps": 11, + "updatedAt": "Nov 01, 2021", + "featured": true, + "progress": { + "currentStep": 5, + "completed": 3 + } + }, + { + "id": "0c06e980-abb5-4ba7-ab65-99a228cab36b", + "title": "Android N: Quick Settings", + "slug": "android-n-quick-settings", + "description": "Step by step guide for Android N: Quick Settings", + "category": "android", + "duration": 120, + "totalSteps": 11, + "updatedAt": "May 08, 2021", + "featured": false, + "progress": { + "currentStep": 10, + "completed": 1 + } + }, + { + "id": "1b9a9acc-9a36-403e-a1e7-b11780179e38", + "title": "Build an App for the Google Assistant with Firebase", + "slug": "build-an-app-for-the-google-assistant-with-firebase", + "description": "Dive deep into Google Assistant apps using Firebase", + "category": "firebase", + "duration": 30, + "totalSteps": 11, + "updatedAt": "Jan 09, 2021", + "featured": false, + "progress": { + "currentStep": 4, + "completed": 3 + } + }, + { + "id": "55eb415f-3f4e-4853-a22b-f0ae91331169", + "title": "Keep Sensitive Data Safe and Private", + "slug": "keep-sensitive-data-safe-and-private", + "description": "Learn how to keep your important data safe and private", + "category": "android", + "duration": 45, + "totalSteps": 11, + "updatedAt": "Jan 14, 2021", + "featured": false, + "progress": { + "currentStep": 6, + "completed": 0 + } + }, + { + "id": "fad2ab23-1011-4028-9a54-e52179ac4a50", + "title": "Manage Your Pivotal Cloud Foundry App's Using Apigee Edge", + "slug": "manage-your-pivotal-cloud-foundry-apps-using-apigee-Edge", + "description": "Introductory course for Pivotal Cloud Foundry App", + "category": "cloud", + "duration": 90, + "totalSteps": 11, + "updatedAt": "Jun 24, 2021", + "featured": false, + "progress": { + "currentStep": 6, + "completed": 0 + } + }, + { + "id": "c4bc107b-edc4-47a7-a7a8-4fb09732e794", + "title": "Build a PWA Using Workbox", + "slug": "build-a-pwa-using-workbox", + "description": "Step by step guide for building a PWA using Workbox", + "category": "web", + "duration": 120, + "totalSteps": 11, + "updatedAt": "Nov 19, 2021", + "featured": false, + "progress": { + "currentStep": 0, + "completed": 0 + } + }, + { + "id": "1449f945-d032-460d-98e3-406565a22293", + "title": "Cloud Functions for Firebase", + "slug": "cloud-functions-for-firebase", + "description": "Beginners guide of Firebase Cloud Functions", + "category": "firebase", + "duration": 45, + "totalSteps": 11, + "updatedAt": "Jul 11, 2021", + "featured": false, + "progress": { + "currentStep": 3, + "completed": 1 + } + }, + { + "id": "f05e08ab-f3e3-4597-a032-6a4b69816f24", + "title": "Building a gRPC Service with Java", + "slug": "building-a-grpc-service-with-java", + "description": "Learn more about building a gRPC Service with Java", + "category": "cloud", + "duration": 30, + "totalSteps": 11, + "updatedAt": "Mar 13, 2021", + "featured": false, + "progress": { + "currentStep": 0, + "completed": 1 + } + }, + { + "id": "181728f4-87c8-45c5-b9cc-92265bcd2f4d", + "title": "Looking at Campaign Finance with BigQuery", + "slug": "looking-at-campaign-finance-with-bigquery", + "description": "Dive deep into BigQuery: Campaign Finance", + "category": "cloud", + "duration": 60, + "totalSteps": 11, + "updatedAt": "Nov 01, 2021", + "featured": false, + "progress": { + "currentStep": 0, + "completed": 0 + } + }, + { + "id": "fcbfedbf-6187-4b3b-89d3-1a7cb4e11616", + "title": "Personalize Your iOS App with Firebase User Management", + "slug": "personalize-your-ios-app-with-firebase-user-management", + "description": "Dive deep into User Management on iOS apps using Firebase", + "category": "firebase", + "duration": 90, + "totalSteps": 11, + "updatedAt": "Aug 08, 2021", + "featured": false, + "progress": { + "currentStep": 0, + "completed": 0 + } + }, + { + "id": "5213f6a1-1dd7-4b1d-b6e9-ffb7af534f28", + "title": "Customize Network Topology with Subnetworks", + "slug": "customize-network-topology-with-subnetworks", + "description": "Dive deep into Network Topology with Subnetworks", + "category": "web", + "duration": 45, + "totalSteps": 11, + "updatedAt": "May 12, 2021", + "featured": false, + "progress": { + "currentStep": 0, + "completed": 0 + } + }, + { + "id": "02992ac9-d1a3-4167-b70e-8a1d5b5ba253", + "title": "Building Beautiful UIs with Flutter", + "slug": "building-beautiful-uis-with-flutter", + "description": "Dive deep into Flutter's hidden secrets for creating beautiful UIs", + "category": "web", + "duration": 90, + "totalSteps": 11, + "updatedAt": "Sep 18, 2021", + "featured": false, + "progress": { + "currentStep": 8, + "completed": 2 + } + }, + { + "id": "2139512f-41fb-4a4a-841a-0b4ac034f9b4", + "title": "Firebase Android", + "slug": "firebase-android", + "description": "Beginners guide of Firebase for Android", + "category": "android", + "duration": 45, + "totalSteps": 11, + "updatedAt": "Apr 24, 2021", + "featured": false, + "progress": { + "currentStep": 0, + "completed": 0 + } + }, + { + "id": "65e0a0e0-d8c0-4117-a3cb-eb74f8e28809", + "title": "Simulating a Thread Network Using OpenThread", + "slug": "simulating-a-thread-network-using-openthread", + "description": "Introductory course for OpenThread and Simulating a Thread Network", + "category": "web", + "duration": 45, + "totalSteps": 11, + "updatedAt": "Jun 05, 2021", + "featured": false, + "progress": { + "currentStep": 0, + "completed": 0 + } + }, + { + "id": "c202ebc9-9be3-433a-9d38-7003b3ed7b7a", + "title": "Your First Progressive Web App", + "slug": "your-first-progressive-web-app", + "description": "Step by step guide for creating a PWA from scratch", + "category": "web", + "duration": 30, + "totalSteps": 11, + "updatedAt": "Oct 14, 2021", + "featured": false, + "progress": { + "currentStep": 0, + "completed": 0 + } + }, + { + "id": "980ae7da-9f77-4e30-aa98-1b1ea594e775", + "title": "Launch Cloud Datalab", + "slug": "launch-cloud-datalab", + "description": "From start to finish: Launch Cloud Datalab", + "category": "cloud", + "duration": 60, + "totalSteps": 11, + "updatedAt": "Dec 16, 2021", + "featured": false, + "progress": { + "currentStep": 0, + "completed": 0 + } + }, + { + "id": "c9748ea9-4117-492c-bdb2-55085b515978", + "title": "Cloud Firestore", + "slug": "cloud-firestore", + "description": "Step by step guide for setting up Cloud Firestore", + "category": "firebase", + "duration": 90, + "totalSteps": 11, + "updatedAt": "Apr 04, 2021", + "featured": false, + "progress": { + "currentStep": 2, + "completed": 0 + } + } + ] + }, + "academy_categories": { + "value": [ + { + "id": "9a67dff7-3c38-4052-a335-0cef93438ff6", + "title": "Web", + "slug": "web", + "color": "#2196f3" + }, + { + "id": "a89672f5-e00d-4be4-9194-cb9d29f82165", + "title": "Firebase", + "slug": "firebase", + "color": "#ffc107" + }, + { + "id": "02f42092-bb23-4552-9ddb-cfdcc235d48f", + "title": "Cloud", + "slug": "cloud", + "color": "#607d8b" + }, + { + "id": "5648a630-979f-4403-8c41-fc9790dea8cd", + "title": "Android", + "slug": "android", + "color": "#4caf50" + } + ] + }, + "academy_demo_course_content": { + "value": "\n

\n Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus aperiam lab et fugiat id magnam minus nemo quam\n voluptatem. Culpa deleniti explica nisi quod soluta.\n

\n

\n Alias animi labque, deserunt distinctio eum excepturi fuga iure labore magni molestias mollitia natus, officia pofro\n quis sunt temporibus veritatis voluptatem, voluptatum. Aut blanditiis esse et illum maxim, obcaecati possimus\n voluptate! Accusamus adipisci amet aperiam, assumenda consequuntur fugiat inventore iusto magnam molestias\n natus necessitatibus, nulla pariatur.\n

\n

\n Amet distinctio enim itaque minima minus nesciunt recusandae soluta voluptatibus:\n

\n
\n

\n Ad aliquid amet asperiores lab distinctio doloremque eaque, exercitationem explicabo, minus mollitia\n natus necessitatibus odio omnis pofro rem.\n

\n
\n

\n Alias architecto asperiores, dignissimos illum ipsam ipsum itaque, natus necessitatibus officiis, perferendis quae\n sed ullam veniam vitae voluptas! Magni, nisi, quis! A accusamus animi commodi, consectetur distinctio\n eaque, eos excepturi illum laboriosam maiores nam natus nulla officiis perspiciatis rem reprehenderit sed\n tenetur veritatis.\n

\n

\n Consectetur dicta enim error eveniet expedita, facere in itaque labore natus quasi? Ad consectetur\n eligendi facilis magni quae quis, quo temporibus voluptas voluptate voluptatem!\n

\n

\n Adipisci alias animi debitis eos et impedit maiores, modi nam nobis officia optio perspiciatis, rerum.\n Accusantium esse nostrum odit quis quo:\n

\n
h1 a {\n    display: block;\n    width: 300px;\n    height: 80px;\n}
\n

\n Accusantium aut autem, lab deleniti eaque fugiat fugit id ipsa iste molestiae,\n necessitatibus nemo quasi\n .\n

\n
\n

\n Accusantium aspernatur autem enim\n

\n

\n Blanditiis, fugit voluptate! Assumenda blanditiis consectetur, labque cupiditate ducimus eaque earum, fugiat illum\n ipsa, necessitatibus omnis quaerat reiciendis totam. Architecto, facere illum molestiae nihil nulla\n quibusdam quidem vel! Atque blanditiis deserunt.\n

\n

\n Debitis deserunt doloremque labore laboriosam magni minus odit:\n

\n
    \n
  1. Asperiores dicta esse maiores nobis officiis.
  2. \n
  3. Accusamus aliquid debitis dolore illo ipsam molettiae possimus.
  4. \n
  5. Magnam mollitia pariatur perspiciatis quasi quidem tenetur voluptatem! Adipisci aspernatur assumenda dicta.
  6. \n
\n

\n Animi fugit incidunt iure magni maiores molestias.\n

\n

\n Consequatur iusto soluta\n

\n

\n Aliquid asperiores corporis — deserunt dolorum ducimus eius eligendi explicabo quaerat suscipit voluptas.\n

\n

\n Deserunt dolor eos et illum laborum magni molestiae mollitia:\n

\n
\n

Autem beatae consectetur consequatur, facere, facilis fugiat id illo, impedit numquam optio quis sunt ducimus illo.

\n
\n

\n Adipisci consequuntur doloribus facere in ipsam maxime molestias pofro quam:\n

\n
\n \n
\n Accusamus blanditiis labque delectus esse et eum excepturi, impedit ipsam iste maiores minima mollitia, nihil obcaecati\n placeat quaerat qui quidem sint unde!\n
\n
\n

\n A beatae lab deleniti explicabo id inventore magni nisi omnis placeat praesentium quibusdam:\n

\n
    \n
  • Dolorem eaque laboriosam omnis praesentium.
  • \n
  • Atque debitis delectus distinctio doloremque.
  • \n
  • Fuga illo impedit minima mollitia neque obcaecati.
  • \n
\n

\n Consequ eius eum excepturi explicabo.\n

\n

\n Adipisicing elit atque impedit?\n

\n

\n Atque distinctio doloremque ea qui quo, repellendus.\n

\n

\n Delectus deserunt explicabo facilis numquam quasi! Laboriosam, magni, quisquam. Aut, blanditiis commodi distinctio, facere fuga\n hic itaque iure labore laborum maxime nemo neque provident quos recusandae sequi veritatis illum inventore iure qui rerum sapiente.\n

\n

\n Accusamus iusto sint aperiam consectetur …\n

\n

\n Aliquid assumenda ipsa nam odit pofro quaerat, quasi recusandae sint! Aut, esse explicabo facilis fugit illum iure magni\n necessitatibus odio quas.\n

\n
    \n
  • \n

    Dolore natus placeat rem atque dignissimos laboriosam.

    \n

    \n Amet repudiandae voluptates architecto dignissimos repellendus voluptas dignissimos eveniet itaque maiores natus.\n

    \n

    \n Accusamus aliquam debitis delectus dolorem ducimus enim eos, exercitationem fugiat id iusto nostrum quae quos\n recusandae reiciendis rerum sequi temporibus veniam vero? Accusantium culpa, cupiditate ducimus eveniet id maiores modi\n mollitia nisi aliquid dolorum ducimus et illo in.\n

    \n
  • \n
  • \n

    Ab amet deleniti dolor, et hic optio placeat.

    \n

    \n Accusantium ad alias beatae, consequatur consequuntur eos error eveniet expedita fuga laborum libero maxime nulla pofro\n praesentium rem rerum saepe soluta ullam vero, voluptas? Architecto at debitis, doloribus harum iure libero natus odio\n optio soluta veritatis voluptate.\n

    \n
  • \n
  • \n

    At aut consectetur nam necessitatibus neque nesciunt.

    \n

    \n Aut dignissimos labore nobis nostrum optio! Dolor id minima velit voluptatibus. Aut consequuntur eum exercitationem\n fuga, harum id impedit molestiae natus neque numquam perspiciatis quam rem voluptatum.\n

    \n
  • \n
\n

\n Animi aperiam autem labque dolore enim ex expedita harum hic id impedit ipsa laborum modi mollitia non perspiciatis quae ratione.\n

\n

\n Alias eos excepturi facilis fugit.\n

\n

\n Alias asperiores, aspernatur corporis\n delectus\n est\n facilis\n inventore dolore\n ipsa nobis nostrum officia quia, veritatis vero! At dolore est nesciunt numquam quam. Ab animi architecto aut, dignissimos\n eos est eum explicabo.\n

\n

\n Adipisci autem consequuntur labque cupiditate dolor ducimus fuga neque nesciunt:\n

\n
module.exports = {\n    purge: [],\n    theme: {\n        extend: {},\n    },\n    variants: {},\n    plugins: [],\n}
\n

\n Aliquid aspernatur eius fugit hic iusto.\n

\n

\n Dolorum ducimus expedita?\n

\n

\n Culpa debitis explicabo maxime minus quaerat reprehenderit temporibus! Asperiores, cupiditate ducimus esse est expedita fuga hic\n ipsam necessitatibus placeat possimus? Amet animi aut consequuntur earum eveniet.\n

\n
    \n
  1. \n Aspernatur at beatae corporis debitis.\n
      \n
    • \n Aperiam assumenda commodi lab dicta eius, “fugit ipsam“ itaque iure molestiae nihil numquam, officia omnis quia\n repellendus sapiente sed.\n
    • \n
    • \n Nulla odio quod saepe accusantium, adipisci autem blanditiis lab doloribus.\n
    • \n
    • \n Explicabo facilis iusto molestiae nisi nostrum obcaecati officia.\n
    • \n
    \n
  2. \n
  3. \n Nobis odio officiis optio quae quis quisquam quos rem.\n
      \n
    • Modi pariatur quod totam. Deserunt doloribus eveniet, expedita.
    • \n
    • Ad beatae dicta et fugit libero optio quaerat rem repellendus./
    • \n
    • Architecto atque consequuntur corporis id iste magni.
    • \n
    \n
  4. \n
  5. \n Deserunt non placeat unde veniam veritatis? Odio quod.\n
      \n
    • Inventore iure magni quod repellendus tempora. Magnam neque, quia. Adipisci amet.
    • \n
    • Consectetur adipisicing elit.
    • \n
    • labque eum expedita illo inventore iusto laboriosam nesciunt non, odio provident.
    • \n
    \n
  6. \n
\n

\n A aliquam architecto consequatur labque dicta doloremque <li> doloribus, ducimus earum, est <p>\n eveniet explicabo fuga fugit ipsum minima minus molestias nihil nisi non qui sunt vel voluptatibus? A dolorum illum nihil quidem.\n

\n
    \n
  • \n

    \n Laboriosam nesciunt obcaecati optio qui.\n

    \n

    \n Doloremque magni molestias reprehenderit.\n

    \n
      \n
    • Accusamus aperiam blanditiis <p> commodi
    • \n
    • Dolorum ea explicabo fugiat in ipsum
    • \n
    \n
  • \n
  • \n

    \n Commodi dolor dolorem dolores eum expedita libero.\n

    \n

    \n Accusamus alias consectetur dolores et, excepturi fuga iusto possimus.\n

    \n
      \n
    • \n

      \n Accusantium ad alias atque aut autem consequuntur deserunt dignissimos eaque iure <p> maxime.\n

      \n

      \n Dolorum in nisi numquam omnis quam sapiente sit vero.\n

      \n
    • \n
    • \n

      \n Adipisci lab in nisi odit soluta sunt vitae commodi excepturi.\n

      \n
    • \n
    \n
  • \n
  • \n

    \n Assumenda deserunt distinctio dolor iste mollitia nihil non?\n

    \n
  • \n
\n

\n Consectetur adipisicing elit dicta dolor iste.\n

\n

\n Consectetur ea natus officia omnis reprehenderit.\n

\n

\n Distinctio impedit quaerat sed! Accusamus\n aliquam aspernatur enim expedita explicabo\n . Libero molestiae\n odio quasi unde ut? Ab exercitationem id numquam odio quisquam!\n

\n

\n Explicabo facilis nemo quidem natus tempore:\n

\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
WrestlerOriginFinisher
Bret “The Hitman” HartCalgary, ABSharpshooter
Stone Cold Steve AustinAustin, TXStone Cold Stunner
Randy SavageSarasota, FLElbow Drop
VaderBoulder, COVader Bomb
Razor RamonChuluota, FLRazor’s Edge
\n

\n A aliquid autem lab doloremque, ea earum eum fuga fugit illo ipsa minus natus nisi <span> obcaecati pariatur\n perferendis pofro suscipit tempore.\n

\n

\n Ad alias atque culpa illum earum optio\n

\n

\n Architecto consequatur eveniet illo in iure laborum minus omnis quibusdam sequi temporibus? Ab aliquid “atque dolores molestiae\n nemo perferendis” reprehenderit saepe.\n

\n

\n Accusantium aliquid eligendi est fuga natus, quos vel? Adipisci aperiam asperiores aspernatur consectetur cupiditate\n @distinctio/doloribus\n et exercitationem expedita, facere facilis illum, impedit inventore\n ipsa iure iusto magnam, magni minus nesciunt non officia possimus quod reiciendis.\n

\n

\n Cupiditate explicabo hic maiores\n

\n

\n Aliquam amet consequuntur distinctio ea est excepturi facere illum maiores nisi nobis non odit officiis\n quisquam, similique tempora temporibus, tenetur ullam voluptates adipisci aperiam deleniti doloremque\n ducimus eos.\n

\n

\n Ducimus qui quo tempora. lab enim explicabo hic inventore qui soluta voluptates voluptatum? Asperiores consectetur\n delectus dolorem fugiat ipsa pariatur, quas quos repellendus repudiandae sunt aut blanditiis.\n

\n

\n Asperiores aspernatur autem error praesentium quidem.\n

\n

\n Ad blanditiis commodi, doloribus id iste repudiandae vero vitae.\n

\n

\n Atque consectetur lab debitis enim est et, facere fugit impedit, possimus quaerat quibusdam.\n

\n

\n Dolorem nihil placeat quibusdam veniam? Amet architecto at consequatur eligendi eveniet excepturi hic illo impedit in iste magni maxime\n modi nisi nulla odio placeat quidem, quos rem repellat similique suscipit voluptate voluptates nobis omnis quo repellendus.\n

\n

\n Assumenda, eum, minima! Autem consectetur fugiat iste sit! Nobis omnis quo repellendus.\n

\n" + }, + "academy_demo_course_steps": { + "value": [ + { + "order": 0, + "title": "Introduction", + "subtitle": "Introducing the library and how it works", + "content": "

Introduction

" + }, + { + "order": 1, + "title": "Get the sample code", + "subtitle": "Where to find the sample code and how to access it", + "content": "

Get the sample code

" + }, + { + "order": 2, + "title": "Create a Firebase project and Set up your app", + "subtitle": "How to create a basic Firebase project and how to run it locally", + "content": "

Create a Firebase project and Set up your app

" + }, + { + "order": 3, + "title": "Install the Firebase Command Line Interface", + "subtitle": "Setting up the Firebase CLI to access command line tools", + "content": "

Install the Firebase Command Line Interface

" + }, + { + "order": 4, + "title": "Deploy and run the web app", + "subtitle": "How to build, push and run the project remotely", + "content": "

Deploy and run the web app

" + }, + { + "order": 5, + "title": "The Functions Directory", + "subtitle": "Introducing the Functions and Functions Directory", + "content": "

The Functions Directory

" + }, + { + "order": 6, + "title": "Import the Cloud Functions and Firebase Admin modules", + "subtitle": "Create your first Function and run it to administer your app", + "content": "

Import the Cloud Functions and Firebase Admin modules

" + }, + { + "order": 7, + "title": "Welcome New Users", + "subtitle": "How to create a welcome message for the new users", + "content": "

Welcome New Users

" + }, + { + "order": 8, + "title": "Images moderation", + "subtitle": "How to moderate images; crop, resize, optimize", + "content": "

Images moderation

" + }, + { + "order": 9, + "title": "New Message Notifications", + "subtitle": "How to create and push a notification to a user", + "content": "

New Message Notifications

" + }, + { + "order": 10, + "title": "Congratulations!", + "subtitle": "Nice work, you have created your first application", + "content": "

Congratulations!

" + } + ] + }, + "ecommerce_products": { + "value": [ + { + "id": "1", + "name": "A Walk Amongst Friends - Canvas Print", + "handle": "a-walk-amongst-friends-canvas-print", + "description": "Officia amet eiusmod eu sunt tempor voluptate laboris velit nisi amet enim proident et. Consequat laborum non eiusmod cillum eu exercitation. Qui adipisicing est fugiat eiusmod esse. Sint aliqua cupidatat pariatur mollit ad est proident reprehenderit. Eiusmod adipisicing laborum incididunt sit aliqua ullamco.", + "categories": [ + "Canvas Print", + "Nature" + ], + "tags": [ + "canvas-print", + "nature" + ], + "featuredImageId": "1", + "images": [ + { + "id": "0", + "url": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg", + "type": "image" + }, + { + "id": "1", + "url": "assets/images/apps/ecommerce/braies-lake.jpg", + "type": "image" + }, + { + "id": "2", + "url": "assets/images/apps/ecommerce/fall-glow.jpg", + "type": "image" + }, + { + "id": "3", + "url": "assets/images/apps/ecommerce/first-snow.jpg", + "type": "image" + }, + { + "id": "4", + "url": "assets/images/apps/ecommerce/lago-di-braies.jpg", + "type": "image" + }, + { + "id": "5", + "url": "assets/images/apps/ecommerce/lago-di-sorapis.jpg", + "type": "image" + }, + { + "id": "6", + "url": "assets/images/apps/ecommerce/never-stop-changing.jpg", + "type": "image" + }, + { + "id": "7", + "url": "assets/images/apps/ecommerce/reaching.jpg", + "type": "image" + }, + { + "id": "8", + "url": "assets/images/apps/ecommerce/morain-lake.jpg", + "type": "image" + }, + { + "id": "9", + "url": "assets/images/apps/ecommerce/yosemite.jpg", + "type": "image" + } + ], + "priceTaxExcl": 9.309, + "priceTaxIncl": 10.24, + "taxRate": 10, + "comparedPrice": 19.9, + "quantity": 3, + "sku": "A445BV", + "width": "22cm", + "height": "24cm", + "depth": "15cm", + "weight": "3kg", + "extraShippingFee": 3, + "active": true + }, + { + "id": "2", + "name": "Braies Lake - Canvas Print", + "handle": "braies-lake-canvas-print", + "description": "Duis anim est non exercitation consequat. Ullamco ut ipsum dolore est elit est ea elit ad fugiat exercitation. Adipisicing eu ad sit culpa sint. Minim irure Lorem eiusmod minim nisi sit est consectetur.", + "categories": [ + "Canvas Print", + "Nature" + ], + "tags": [ + "canvas-print", + "nature" + ], + "featuredImageId": "2", + "images": [ + { + "id": "0", + "url": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg", + "type": "image" + }, + { + "id": "1", + "url": "assets/images/apps/ecommerce/braies-lake.jpg", + "type": "image" + }, + { + "id": "2", + "url": "assets/images/apps/ecommerce/fall-glow.jpg", + "type": "image" + }, + { + "id": "3", + "url": "assets/images/apps/ecommerce/first-snow.jpg", + "type": "image" + }, + { + "id": "4", + "url": "assets/images/apps/ecommerce/lago-di-braies.jpg", + "type": "image" + }, + { + "id": "5", + "url": "assets/images/apps/ecommerce/lago-di-sorapis.jpg", + "type": "image" + }, + { + "id": "6", + "url": "assets/images/apps/ecommerce/never-stop-changing.jpg", + "type": "image" + }, + { + "id": "7", + "url": "assets/images/apps/ecommerce/reaching.jpg", + "type": "image" + }, + { + "id": "8", + "url": "assets/images/apps/ecommerce/morain-lake.jpg", + "type": "image" + }, + { + "id": "9", + "url": "assets/images/apps/ecommerce/yosemite.jpg", + "type": "image" + } + ], + "priceTaxExcl": 22.381, + "priceTaxIncl": 24.62, + "taxRate": 10, + "comparedPrice": 29.9, + "quantity": 92, + "sku": "A445BV", + "width": "22cm", + "height": "24cm", + "depth": "15cm", + "weight": "3kg", + "extraShippingFee": 3, + "active": true + }, + { + "id": "3", + "name": "Fall Glow - Canvas Print", + "handle": "fall-glow-canvas-print", + "description": "Sit ipsum esse eu consequat veniam sit consectetur consectetur anim. Ut Lorem dolor ullamco do. Laboris excepteur consectetur tempor nisi commodo amet deserunt duis.", + "categories": [ + "Canvas Print", + "Nature" + ], + "tags": [ + "canvas-print", + "nature" + ], + "featuredImageId": "3", + "images": [ + { + "id": "0", + "url": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg", + "type": "image" + }, + { + "id": "1", + "url": "assets/images/apps/ecommerce/braies-lake.jpg", + "type": "image" + }, + { + "id": "2", + "url": "assets/images/apps/ecommerce/fall-glow.jpg", + "type": "image" + }, + { + "id": "3", + "url": "assets/images/apps/ecommerce/first-snow.jpg", + "type": "image" + }, + { + "id": "4", + "url": "assets/images/apps/ecommerce/lago-di-braies.jpg", + "type": "image" + }, + { + "id": "5", + "url": "assets/images/apps/ecommerce/lago-di-sorapis.jpg", + "type": "image" + }, + { + "id": "6", + "url": "assets/images/apps/ecommerce/never-stop-changing.jpg", + "type": "image" + }, + { + "id": "7", + "url": "assets/images/apps/ecommerce/reaching.jpg", + "type": "image" + }, + { + "id": "8", + "url": "assets/images/apps/ecommerce/morain-lake.jpg", + "type": "image" + }, + { + "id": "9", + "url": "assets/images/apps/ecommerce/yosemite.jpg", + "type": "image" + } + ], + "priceTaxExcl": 44.809, + "priceTaxIncl": 49.29, + "taxRate": 10, + "comparedPrice": 59.9, + "quantity": 60, + "sku": "A445BV", + "width": "22cm", + "height": "24cm", + "depth": "15cm", + "weight": "3kg", + "extraShippingFee": 3, + "active": true + }, + { + "id": "4", + "name": "First Snow - Canvas Print", + "handle": "first-snow-canvas-print", + "description": "Incididunt nostrud culpa labore nostrud veniam nostrud dolore velit sunt laborum ad reprehenderit. Excepteur enim irure ut labore elit ut deserunt qui qui consequat quis do nostrud ad. Aliqua dolor labore ut occaecat laborum irure. Aute in deserunt do aute laborum sit et reprehenderit minim voluptate proident do est.", + "categories": [ + "Canvas Print", + "Nature" + ], + "tags": [ + "canvas-print", + "nature" + ], + "featuredImageId": "4", + "images": [ + { + "id": "0", + "url": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg", + "type": "image" + }, + { + "id": "1", + "url": "assets/images/apps/ecommerce/braies-lake.jpg", + "type": "image" + }, + { + "id": "2", + "url": "assets/images/apps/ecommerce/fall-glow.jpg", + "type": "image" + }, + { + "id": "3", + "url": "assets/images/apps/ecommerce/first-snow.jpg", + "type": "image" + }, + { + "id": "4", + "url": "assets/images/apps/ecommerce/lago-di-braies.jpg", + "type": "image" + }, + { + "id": "5", + "url": "assets/images/apps/ecommerce/lago-di-sorapis.jpg", + "type": "image" + }, + { + "id": "6", + "url": "assets/images/apps/ecommerce/never-stop-changing.jpg", + "type": "image" + }, + { + "id": "7", + "url": "assets/images/apps/ecommerce/reaching.jpg", + "type": "image" + }, + { + "id": "8", + "url": "assets/images/apps/ecommerce/morain-lake.jpg", + "type": "image" + }, + { + "id": "9", + "url": "assets/images/apps/ecommerce/yosemite.jpg", + "type": "image" + } + ], + "priceTaxExcl": 62.827, + "priceTaxIncl": 69.11, + "taxRate": 10, + "comparedPrice": 79.9, + "quantity": 101, + "sku": "A445BV", + "width": "22cm", + "height": "24cm", + "depth": "15cm", + "weight": "3kg", + "extraShippingFee": 3, + "active": false + }, + { + "id": "5", + "name": "Lago di Braies - Canvas Print", + "handle": "lago-di-braies-canvas-print", + "description": "Laboris laborum minim qui reprehenderit duis fugiat ea anim labore incididunt duis. Officia adipisicing anim amet in sit aliqua fugiat quis do sint non velit eu. Labore occaecat labore elit voluptate Lorem adipisicing et ipsum id et reprehenderit ullamco. Elit in nulla laborum nulla quis dolor deserunt magna dolor ad anim magna. Esse aute reprehenderit anim sit est et quis est. Ex reprehenderit culpa deserunt qui sint eiusmod reprehenderit ipsum consequat ut.", + "categories": [ + "Canvas Print", + "Nature" + ], + "tags": [ + "canvas-print", + "nature" + ], + "featuredImageId": "5", + "images": [ + { + "id": "0", + "url": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg", + "type": "image" + }, + { + "id": "1", + "url": "assets/images/apps/ecommerce/braies-lake.jpg", + "type": "image" + }, + { + "id": "2", + "url": "assets/images/apps/ecommerce/fall-glow.jpg", + "type": "image" + }, + { + "id": "3", + "url": "assets/images/apps/ecommerce/first-snow.jpg", + "type": "image" + }, + { + "id": "4", + "url": "assets/images/apps/ecommerce/lago-di-braies.jpg", + "type": "image" + }, + { + "id": "5", + "url": "assets/images/apps/ecommerce/lago-di-sorapis.jpg", + "type": "image" + }, + { + "id": "6", + "url": "assets/images/apps/ecommerce/never-stop-changing.jpg", + "type": "image" + }, + { + "id": "7", + "url": "assets/images/apps/ecommerce/reaching.jpg", + "type": "image" + }, + { + "id": "8", + "url": "assets/images/apps/ecommerce/morain-lake.jpg", + "type": "image" + }, + { + "id": "9", + "url": "assets/images/apps/ecommerce/yosemite.jpg", + "type": "image" + } + ], + "priceTaxExcl": 9.309, + "priceTaxIncl": 10.24, + "taxRate": 10, + "comparedPrice": 19.9, + "quantity": 19, + "sku": "A445BV", + "width": "22cm", + "height": "24cm", + "depth": "15cm", + "weight": "3kg", + "extraShippingFee": 3, + "active": true + }, + { + "id": "6", + "name": "Lago di Sorapis - Canvas Print", + "handle": "lago-di-sorapis-canvas-print", + "description": "Tempor sunt tempor veniam non culpa excepteur. Ea irure elit non cupidatat cillum dolore. Sit incididunt qui dolore ipsum commodo aliqua amet cupidatat incididunt nisi qui consectetur. Cillum eu aute qui irure aute adipisicing cupidatat magna.", + "categories": [ + "Canvas Print", + "Nature" + ], + "tags": [ + "canvas-print", + "nature" + ], + "featuredImageId": "6", + "images": [ + { + "id": "0", + "url": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg", + "type": "image" + }, + { + "id": "1", + "url": "assets/images/apps/ecommerce/braies-lake.jpg", + "type": "image" + }, + { + "id": "2", + "url": "assets/images/apps/ecommerce/fall-glow.jpg", + "type": "image" + }, + { + "id": "3", + "url": "assets/images/apps/ecommerce/first-snow.jpg", + "type": "image" + }, + { + "id": "4", + "url": "assets/images/apps/ecommerce/lago-di-braies.jpg", + "type": "image" + }, + { + "id": "5", + "url": "assets/images/apps/ecommerce/lago-di-sorapis.jpg", + "type": "image" + }, + { + "id": "6", + "url": "assets/images/apps/ecommerce/never-stop-changing.jpg", + "type": "image" + }, + { + "id": "7", + "url": "assets/images/apps/ecommerce/reaching.jpg", + "type": "image" + }, + { + "id": "8", + "url": "assets/images/apps/ecommerce/morain-lake.jpg", + "type": "image" + }, + { + "id": "9", + "url": "assets/images/apps/ecommerce/yosemite.jpg", + "type": "image" + } + ], + "priceTaxExcl": 53.963, + "priceTaxIncl": 59.36, + "taxRate": 10, + "comparedPrice": 69.9, + "quantity": 101, + "sku": "A445BV", + "width": "22cm", + "height": "24cm", + "depth": "15cm", + "weight": "3kg", + "extraShippingFee": 3, + "active": true + }, + { + "id": "7", + "name": "Never Stop Changing - Canvas Print", + "handle": "never-stop-changing-canvas-print", + "description": "Excepteur commodo ipsum in ex esse elit ea id voluptate id occaecat. Sunt Lorem ipsum ut proident eu aliquip velit non minim. Sunt velit deserunt veniam eu non veniam. Eiusmod sit ex et id incididunt labore aliqua eu aute dolor cillum ex mollit mollit. Incididunt voluptate adipisicing eiusmod non ipsum cupidatat excepteur enim in pariatur eu. Labore dolor qui exercitation amet labore laboris Lorem do adipisicing. Minim non consectetur adipisicing esse ut occaecat incididunt eiusmod commodo et cillum pariatur.", + "categories": [ + "Canvas Print", + "Nature" + ], + "tags": [ + "canvas-print", + "nature" + ], + "featuredImageId": "7", + "images": [ + { + "id": "0", + "url": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg", + "type": "image" + }, + { + "id": "1", + "url": "assets/images/apps/ecommerce/braies-lake.jpg", + "type": "image" + }, + { + "id": "2", + "url": "assets/images/apps/ecommerce/fall-glow.jpg", + "type": "image" + }, + { + "id": "3", + "url": "assets/images/apps/ecommerce/first-snow.jpg", + "type": "image" + }, + { + "id": "4", + "url": "assets/images/apps/ecommerce/lago-di-braies.jpg", + "type": "image" + }, + { + "id": "5", + "url": "assets/images/apps/ecommerce/lago-di-sorapis.jpg", + "type": "image" + }, + { + "id": "6", + "url": "assets/images/apps/ecommerce/never-stop-changing.jpg", + "type": "image" + }, + { + "id": "7", + "url": "assets/images/apps/ecommerce/reaching.jpg", + "type": "image" + }, + { + "id": "8", + "url": "assets/images/apps/ecommerce/morain-lake.jpg", + "type": "image" + }, + { + "id": "9", + "url": "assets/images/apps/ecommerce/yosemite.jpg", + "type": "image" + } + ], + "priceTaxExcl": 58.372, + "priceTaxIncl": 64.21, + "taxRate": 10, + "comparedPrice": 69.9, + "quantity": 34, + "sku": "A445BV", + "width": "22cm", + "height": "24cm", + "depth": "15cm", + "weight": "3kg", + "extraShippingFee": 3, + "active": true + }, + { + "id": "8", + "name": "Reaching - Canvas Print", + "handle": "reaching-canvas-print", + "description": "Velit cillum cupidatat eiusmod ea quis sit. Consequat dolore elit sunt sunt voluptate irure incididunt consectetur non. Dolore veniam ipsum anim commodo ex. Proident ipsum nostrud ullamco sit. Ad dolore nulla qui mollit laborum ex ipsum.", + "categories": [ + "Canvas Print", + "Nature" + ], + "tags": [ + "canvas-print", + "nature" + ], + "featuredImageId": "8", + "images": [ + { + "id": "0", + "url": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg", + "type": "image" + }, + { + "id": "1", + "url": "assets/images/apps/ecommerce/braies-lake.jpg", + "type": "image" + }, + { + "id": "2", + "url": "assets/images/apps/ecommerce/fall-glow.jpg", + "type": "image" + }, + { + "id": "3", + "url": "assets/images/apps/ecommerce/first-snow.jpg", + "type": "image" + }, + { + "id": "4", + "url": "assets/images/apps/ecommerce/lago-di-braies.jpg", + "type": "image" + }, + { + "id": "5", + "url": "assets/images/apps/ecommerce/lago-di-sorapis.jpg", + "type": "image" + }, + { + "id": "6", + "url": "assets/images/apps/ecommerce/never-stop-changing.jpg", + "type": "image" + }, + { + "id": "7", + "url": "assets/images/apps/ecommerce/reaching.jpg", + "type": "image" + }, + { + "id": "8", + "url": "assets/images/apps/ecommerce/morain-lake.jpg", + "type": "image" + }, + { + "id": "9", + "url": "assets/images/apps/ecommerce/yosemite.jpg", + "type": "image" + } + ], + "priceTaxExcl": 63.39, + "priceTaxIncl": 69.73, + "taxRate": 10, + "comparedPrice": 79.9, + "quantity": 4, + "sku": "A445BV", + "width": "22cm", + "height": "24cm", + "depth": "15cm", + "weight": "3kg", + "extraShippingFee": 3, + "active": false + }, + { + "id": "9", + "name": "Morain Lake - Canvas Print", + "handle": "morain-lake-canvas-print", + "description": "Consequat minim velit commodo Lorem ipsum velit elit amet ut. In deserunt id duis nisi labore. Proident cillum et reprehenderit excepteur ex nulla enim.", + "categories": [ + "Canvas Print", + "Nature" + ], + "tags": [ + "canvas-print", + "nature" + ], + "featuredImageId": "9", + "images": [ + { + "id": "0", + "url": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg", + "type": "image" + }, + { + "id": "1", + "url": "assets/images/apps/ecommerce/braies-lake.jpg", + "type": "image" + }, + { + "id": "2", + "url": "assets/images/apps/ecommerce/fall-glow.jpg", + "type": "image" + }, + { + "id": "3", + "url": "assets/images/apps/ecommerce/first-snow.jpg", + "type": "image" + }, + { + "id": "4", + "url": "assets/images/apps/ecommerce/lago-di-braies.jpg", + "type": "image" + }, + { + "id": "5", + "url": "assets/images/apps/ecommerce/lago-di-sorapis.jpg", + "type": "image" + }, + { + "id": "6", + "url": "assets/images/apps/ecommerce/never-stop-changing.jpg", + "type": "image" + }, + { + "id": "7", + "url": "assets/images/apps/ecommerce/reaching.jpg", + "type": "image" + }, + { + "id": "8", + "url": "assets/images/apps/ecommerce/morain-lake.jpg", + "type": "image" + }, + { + "id": "9", + "url": "assets/images/apps/ecommerce/yosemite.jpg", + "type": "image" + } + ], + "priceTaxExcl": 52.154, + "priceTaxIncl": 57.37, + "taxRate": 10, + "comparedPrice": 59.9, + "quantity": 58, + "sku": "A445BV", + "width": "22cm", + "height": "24cm", + "depth": "15cm", + "weight": "3kg", + "extraShippingFee": 3, + "active": true + }, + { + "id": "10", + "name": "Yosemite - Canvas Print", + "handle": "yosemite-canvas-print", + "description": "Proident do sunt dolor tempor aliquip adipisicing dolor reprehenderit officia proident. Culpa non reprehenderit velit anim consequat velit elit eu culpa quis incididunt id. Eu incididunt exercitation nostrud est mollit officia. Laboris deserunt dolore sit occaecat exercitation quis sunt sunt nisi commodo.", + "categories": [ + "Canvas Print", + "Nature" + ], + "tags": [ + "canvas-print", + "nature" + ], + "featuredImageId": "9", + "images": [ + { + "id": "0", + "url": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg", + "type": "image" + }, + { + "id": "1", + "url": "assets/images/apps/ecommerce/braies-lake.jpg", + "type": "image" + }, + { + "id": "2", + "url": "assets/images/apps/ecommerce/fall-glow.jpg", + "type": "image" + }, + { + "id": "3", + "url": "assets/images/apps/ecommerce/first-snow.jpg", + "type": "image" + }, + { + "id": "4", + "url": "assets/images/apps/ecommerce/lago-di-braies.jpg", + "type": "image" + }, + { + "id": "5", + "url": "assets/images/apps/ecommerce/lago-di-sorapis.jpg", + "type": "image" + }, + { + "id": "6", + "url": "assets/images/apps/ecommerce/never-stop-changing.jpg", + "type": "image" + }, + { + "id": "7", + "url": "assets/images/apps/ecommerce/reaching.jpg", + "type": "image" + }, + { + "id": "8", + "url": "assets/images/apps/ecommerce/morain-lake.jpg", + "type": "image" + }, + { + "id": "9", + "url": "assets/images/apps/ecommerce/yosemite.jpg", + "type": "image" + } + ], + "priceTaxExcl": 62.18, + "priceTaxIncl": 68.4, + "taxRate": 10, + "comparedPrice": 69.9, + "quantity": 125, + "sku": "A445BV", + "width": "22cm", + "height": "24cm", + "depth": "15cm", + "weight": "3kg", + "extraShippingFee": 3, + "active": true + }, + { + "id": "11", + "name": "A Walk Amongst Friends - Canvas Print", + "handle": "a-walk-amongst-friends-canvas-print", + "description": "Officia amet eiusmod eu sunt tempor voluptate laboris velit nisi amet enim proident et. Consequat laborum non eiusmod cillum eu exercitation. Qui adipisicing est fugiat eiusmod esse. Sint aliqua cupidatat pariatur mollit ad est proident reprehenderit. Eiusmod adipisicing laborum incididunt sit aliqua ullamco.", + "categories": [ + "Canvas Print", + "Nature" + ], + "tags": [ + "canvas-print", + "nature" + ], + "featuredImageId": "1", + "images": [ + { + "id": "0", + "url": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg", + "type": "image" + }, + { + "id": "1", + "url": "assets/images/apps/ecommerce/braies-lake.jpg", + "type": "image" + }, + { + "id": "2", + "url": "assets/images/apps/ecommerce/fall-glow.jpg", + "type": "image" + }, + { + "id": "3", + "url": "assets/images/apps/ecommerce/first-snow.jpg", + "type": "image" + }, + { + "id": "4", + "url": "assets/images/apps/ecommerce/lago-di-braies.jpg", + "type": "image" + }, + { + "id": "5", + "url": "assets/images/apps/ecommerce/lago-di-sorapis.jpg", + "type": "image" + }, + { + "id": "6", + "url": "assets/images/apps/ecommerce/never-stop-changing.jpg", + "type": "image" + }, + { + "id": "7", + "url": "assets/images/apps/ecommerce/reaching.jpg", + "type": "image" + }, + { + "id": "8", + "url": "assets/images/apps/ecommerce/morain-lake.jpg", + "type": "image" + }, + { + "id": "9", + "url": "assets/images/apps/ecommerce/yosemite.jpg", + "type": "image" + } + ], + "priceTaxExcl": 9.309, + "priceTaxIncl": 10.24, + "taxRate": 10, + "comparedPrice": 19.9, + "quantity": 3, + "sku": "A445BV", + "width": "22cm", + "height": "24cm", + "depth": "15cm", + "weight": "3kg", + "extraShippingFee": 3, + "active": true + }, + { + "id": "12", + "name": "Never Stop Changing - Canvas Print", + "handle": "never-stop-changing-canvas-print", + "description": "Excepteur commodo ipsum in ex esse elit ea id voluptate id occaecat. Sunt Lorem ipsum ut proident eu aliquip velit non minim. Sunt velit deserunt veniam eu non veniam. Eiusmod sit ex et id incididunt labore aliqua eu aute dolor cillum ex mollit mollit. Incididunt voluptate adipisicing eiusmod non ipsum cupidatat excepteur enim in pariatur eu. Labore dolor qui exercitation amet labore laboris Lorem do adipisicing. Minim non consectetur adipisicing esse ut occaecat incididunt eiusmod commodo et cillum pariatur.", + "categories": [ + "Canvas Print", + "Nature" + ], + "tags": [ + "canvas-print", + "nature" + ], + "featuredImageId": "7", + "images": [ + { + "id": "0", + "url": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg", + "type": "image" + }, + { + "id": "1", + "url": "assets/images/apps/ecommerce/braies-lake.jpg", + "type": "image" + }, + { + "id": "2", + "url": "assets/images/apps/ecommerce/fall-glow.jpg", + "type": "image" + }, + { + "id": "3", + "url": "assets/images/apps/ecommerce/first-snow.jpg", + "type": "image" + }, + { + "id": "4", + "url": "assets/images/apps/ecommerce/lago-di-braies.jpg", + "type": "image" + }, + { + "id": "5", + "url": "assets/images/apps/ecommerce/lago-di-sorapis.jpg", + "type": "image" + }, + { + "id": "6", + "url": "assets/images/apps/ecommerce/never-stop-changing.jpg", + "type": "image" + }, + { + "id": "7", + "url": "assets/images/apps/ecommerce/reaching.jpg", + "type": "image" + }, + { + "id": "8", + "url": "assets/images/apps/ecommerce/morain-lake.jpg", + "type": "image" + }, + { + "id": "9", + "url": "assets/images/apps/ecommerce/yosemite.jpg", + "type": "image" + } + ], + "priceTaxExcl": 58.372, + "priceTaxIncl": 64.21, + "taxRate": 10, + "comparedPrice": 69.9, + "quantity": 34, + "sku": "A445BV", + "width": "22cm", + "height": "24cm", + "depth": "15cm", + "weight": "3kg", + "extraShippingFee": 3, + "active": true + }, + { + "id": "13", + "name": "Morain Lake - Canvas Print", + "handle": "morain-lake-canvas-print", + "description": "Consequat minim velit commodo Lorem ipsum velit elit amet ut. In deserunt id duis nisi labore. Proident cillum et reprehenderit excepteur ex nulla enim.", + "categories": [ + "Canvas Print", + "Nature" + ], + "tags": [ + "canvas-print", + "nature" + ], + "featuredImageId": "9", + "images": [ + { + "id": "0", + "url": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg", + "type": "image" + }, + { + "id": "1", + "url": "assets/images/apps/ecommerce/braies-lake.jpg", + "type": "image" + }, + { + "id": "2", + "url": "assets/images/apps/ecommerce/fall-glow.jpg", + "type": "image" + }, + { + "id": "3", + "url": "assets/images/apps/ecommerce/first-snow.jpg", + "type": "image" + }, + { + "id": "4", + "url": "assets/images/apps/ecommerce/lago-di-braies.jpg", + "type": "image" + }, + { + "id": "5", + "url": "assets/images/apps/ecommerce/lago-di-sorapis.jpg", + "type": "image" + }, + { + "id": "6", + "url": "assets/images/apps/ecommerce/never-stop-changing.jpg", + "type": "image" + }, + { + "id": "7", + "url": "assets/images/apps/ecommerce/reaching.jpg", + "type": "image" + }, + { + "id": "8", + "url": "assets/images/apps/ecommerce/morain-lake.jpg", + "type": "image" + }, + { + "id": "9", + "url": "assets/images/apps/ecommerce/yosemite.jpg", + "type": "image" + } + ], + "priceTaxExcl": 52.154, + "priceTaxIncl": 57.37, + "taxRate": 10, + "comparedPrice": 59.9, + "quantity": 58, + "sku": "A445BV", + "width": "22cm", + "height": "24cm", + "depth": "15cm", + "weight": "3kg", + "extraShippingFee": 3, + "active": true + }, + { + "id": "14", + "name": "Braies Lake - Canvas Print", + "handle": "braies-lake-canvas-print", + "description": "Duis anim est non exercitation consequat. Ullamco ut ipsum dolore est elit est ea elit ad fugiat exercitation. Adipisicing eu ad sit culpa sint. Minim irure Lorem eiusmod minim nisi sit est consectetur.", + "categories": [ + "Canvas Print", + "Nature" + ], + "tags": [ + "canvas-print", + "nature" + ], + "featuredImageId": "2", + "images": [ + { + "id": "0", + "url": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg", + "type": "image" + }, + { + "id": "1", + "url": "assets/images/apps/ecommerce/braies-lake.jpg", + "type": "image" + }, + { + "id": "2", + "url": "assets/images/apps/ecommerce/fall-glow.jpg", + "type": "image" + }, + { + "id": "3", + "url": "assets/images/apps/ecommerce/first-snow.jpg", + "type": "image" + }, + { + "id": "4", + "url": "assets/images/apps/ecommerce/lago-di-braies.jpg", + "type": "image" + }, + { + "id": "5", + "url": "assets/images/apps/ecommerce/lago-di-sorapis.jpg", + "type": "image" + }, + { + "id": "6", + "url": "assets/images/apps/ecommerce/never-stop-changing.jpg", + "type": "image" + }, + { + "id": "7", + "url": "assets/images/apps/ecommerce/reaching.jpg", + "type": "image" + }, + { + "id": "8", + "url": "assets/images/apps/ecommerce/morain-lake.jpg", + "type": "image" + }, + { + "id": "9", + "url": "assets/images/apps/ecommerce/yosemite.jpg", + "type": "image" + } + ], + "priceTaxExcl": 22.381, + "priceTaxIncl": 24.62, + "taxRate": 10, + "comparedPrice": 29.9, + "quantity": 92, + "sku": "A445BV", + "width": "22cm", + "height": "24cm", + "depth": "15cm", + "weight": "3kg", + "extraShippingFee": 3, + "active": true + }, + { + "id": "15", + "name": "Lago di Braies - Canvas Print", + "handle": "lago-di-braies-canvas-print", + "description": "Laboris laborum minim qui reprehenderit duis fugiat ea anim labore incididunt duis. Officia adipisicing anim amet in sit aliqua fugiat quis do sint non velit eu. Labore occaecat labore elit voluptate Lorem adipisicing et ipsum id et reprehenderit ullamco. Elit in nulla laborum nulla quis dolor deserunt magna dolor ad anim magna. Esse aute reprehenderit anim sit est et quis est. Ex reprehenderit culpa deserunt qui sint eiusmod reprehenderit ipsum consequat ut.", + "categories": [ + "Canvas Print", + "Nature" + ], + "tags": [ + "canvas-print", + "nature" + ], + "featuredImageId": "5", + "images": [ + { + "id": "0", + "url": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg", + "type": "image" + }, + { + "id": "1", + "url": "assets/images/apps/ecommerce/braies-lake.jpg", + "type": "image" + }, + { + "id": "2", + "url": "assets/images/apps/ecommerce/fall-glow.jpg", + "type": "image" + }, + { + "id": "3", + "url": "assets/images/apps/ecommerce/first-snow.jpg", + "type": "image" + }, + { + "id": "4", + "url": "assets/images/apps/ecommerce/lago-di-braies.jpg", + "type": "image" + }, + { + "id": "5", + "url": "assets/images/apps/ecommerce/lago-di-sorapis.jpg", + "type": "image" + }, + { + "id": "6", + "url": "assets/images/apps/ecommerce/never-stop-changing.jpg", + "type": "image" + }, + { + "id": "7", + "url": "assets/images/apps/ecommerce/reaching.jpg", + "type": "image" + }, + { + "id": "8", + "url": "assets/images/apps/ecommerce/morain-lake.jpg", + "type": "image" + }, + { + "id": "9", + "url": "assets/images/apps/ecommerce/yosemite.jpg", + "type": "image" + } + ], + "priceTaxExcl": 9.309, + "priceTaxIncl": 10.24, + "taxRate": 10, + "comparedPrice": 19.9, + "quantity": 19, + "sku": "A445BV", + "width": "22cm", + "height": "24cm", + "depth": "15cm", + "weight": "3kg", + "extraShippingFee": 3, + "active": true + }, + { + "id": "16", + "name": "Fall Glow - Canvas Print", + "handle": "fall-glow-canvas-print", + "description": "Sit ipsum esse eu consequat veniam sit consectetur consectetur anim. Ut Lorem dolor ullamco do. Laboris excepteur consectetur tempor nisi commodo amet deserunt duis.", + "categories": [ + "Canvas Print", + "Nature" + ], + "tags": [ + "canvas-print", + "nature" + ], + "featuredImageId": "3", + "images": [ + { + "id": "0", + "url": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg", + "type": "image" + }, + { + "id": "1", + "url": "assets/images/apps/ecommerce/braies-lake.jpg", + "type": "image" + }, + { + "id": "2", + "url": "assets/images/apps/ecommerce/fall-glow.jpg", + "type": "image" + }, + { + "id": "3", + "url": "assets/images/apps/ecommerce/first-snow.jpg", + "type": "image" + }, + { + "id": "4", + "url": "assets/images/apps/ecommerce/lago-di-braies.jpg", + "type": "image" + }, + { + "id": "5", + "url": "assets/images/apps/ecommerce/lago-di-sorapis.jpg", + "type": "image" + }, + { + "id": "6", + "url": "assets/images/apps/ecommerce/never-stop-changing.jpg", + "type": "image" + }, + { + "id": "7", + "url": "assets/images/apps/ecommerce/reaching.jpg", + "type": "image" + }, + { + "id": "8", + "url": "assets/images/apps/ecommerce/morain-lake.jpg", + "type": "image" + }, + { + "id": "9", + "url": "assets/images/apps/ecommerce/yosemite.jpg", + "type": "image" + } + ], + "priceTaxExcl": 44.809, + "priceTaxIncl": 49.29, + "taxRate": 10, + "comparedPrice": 59.9, + "quantity": 60, + "sku": "A445BV", + "width": "22cm", + "height": "24cm", + "depth": "15cm", + "weight": "3kg", + "extraShippingFee": 3, + "active": true + }, + { + "id": "17", + "name": "Lago di Sorapis - Canvas Print", + "handle": "lago-di-sorapis-canvas-print", + "description": "Tempor sunt tempor veniam non culpa excepteur. Ea irure elit non cupidatat cillum dolore. Sit incididunt qui dolore ipsum commodo aliqua amet cupidatat incididunt nisi qui consectetur. Cillum eu aute qui irure aute adipisicing cupidatat magna.", + "categories": [ + "Canvas Print", + "Nature" + ], + "tags": [ + "canvas-print", + "nature" + ], + "featuredImageId": "6", + "images": [ + { + "id": "0", + "url": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg", + "type": "image" + }, + { + "id": "1", + "url": "assets/images/apps/ecommerce/braies-lake.jpg", + "type": "image" + }, + { + "id": "2", + "url": "assets/images/apps/ecommerce/fall-glow.jpg", + "type": "image" + }, + { + "id": "3", + "url": "assets/images/apps/ecommerce/first-snow.jpg", + "type": "image" + }, + { + "id": "4", + "url": "assets/images/apps/ecommerce/lago-di-braies.jpg", + "type": "image" + }, + { + "id": "5", + "url": "assets/images/apps/ecommerce/lago-di-sorapis.jpg", + "type": "image" + }, + { + "id": "6", + "url": "assets/images/apps/ecommerce/never-stop-changing.jpg", + "type": "image" + }, + { + "id": "7", + "url": "assets/images/apps/ecommerce/reaching.jpg", + "type": "image" + }, + { + "id": "8", + "url": "assets/images/apps/ecommerce/morain-lake.jpg", + "type": "image" + }, + { + "id": "9", + "url": "assets/images/apps/ecommerce/yosemite.jpg", + "type": "image" + } + ], + "priceTaxExcl": 53.963, + "priceTaxIncl": 59.36, + "taxRate": 10, + "comparedPrice": 69.9, + "quantity": 101, + "sku": "A445BV", + "width": "22cm", + "height": "24cm", + "depth": "15cm", + "weight": "3kg", + "extraShippingFee": 3, + "active": true + }, + { + "id": "18", + "name": "Reaching - Canvas Print", + "handle": "reaching-canvas-print", + "description": "Velit cillum cupidatat eiusmod ea quis sit. Consequat dolore elit sunt sunt voluptate irure incididunt consectetur non. Dolore veniam ipsum anim commodo ex. Proident ipsum nostrud ullamco sit. Ad dolore nulla qui mollit laborum ex ipsum.", + "categories": [ + "Canvas Print", + "Nature" + ], + "tags": [ + "canvas-print", + "nature" + ], + "featuredImageId": "8", + "images": [ + { + "id": "0", + "url": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg", + "type": "image" + }, + { + "id": "1", + "url": "assets/images/apps/ecommerce/braies-lake.jpg", + "type": "image" + }, + { + "id": "2", + "url": "assets/images/apps/ecommerce/fall-glow.jpg", + "type": "image" + }, + { + "id": "3", + "url": "assets/images/apps/ecommerce/first-snow.jpg", + "type": "image" + }, + { + "id": "4", + "url": "assets/images/apps/ecommerce/lago-di-braies.jpg", + "type": "image" + }, + { + "id": "5", + "url": "assets/images/apps/ecommerce/lago-di-sorapis.jpg", + "type": "image" + }, + { + "id": "6", + "url": "assets/images/apps/ecommerce/never-stop-changing.jpg", + "type": "image" + }, + { + "id": "7", + "url": "assets/images/apps/ecommerce/reaching.jpg", + "type": "image" + }, + { + "id": "8", + "url": "assets/images/apps/ecommerce/morain-lake.jpg", + "type": "image" + }, + { + "id": "9", + "url": "assets/images/apps/ecommerce/yosemite.jpg", + "type": "image" + } + ], + "priceTaxExcl": 63.39, + "priceTaxIncl": 69.73, + "taxRate": 10, + "comparedPrice": 79.9, + "quantity": 4, + "sku": "A445BV", + "width": "22cm", + "height": "24cm", + "depth": "15cm", + "weight": "3kg", + "extraShippingFee": 3, + "active": false + }, + { + "id": "19", + "name": "First Snow - Canvas Print", + "handle": "first-snow-canvas-print", + "description": "Incididunt nostrud culpa labore nostrud veniam nostrud dolore velit sunt laborum ad reprehenderit. Excepteur enim irure ut labore elit ut deserunt qui qui consequat quis do nostrud ad. Aliqua dolor labore ut occaecat laborum irure. Aute in deserunt do aute laborum sit et reprehenderit minim voluptate proident do est.", + "categories": [ + "Canvas Print", + "Nature" + ], + "tags": [ + "canvas-print", + "nature" + ], + "featuredImageId": "4", + "images": [ + { + "id": "0", + "url": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg", + "type": "image" + }, + { + "id": "1", + "url": "assets/images/apps/ecommerce/braies-lake.jpg", + "type": "image" + }, + { + "id": "2", + "url": "assets/images/apps/ecommerce/fall-glow.jpg", + "type": "image" + }, + { + "id": "3", + "url": "assets/images/apps/ecommerce/first-snow.jpg", + "type": "image" + }, + { + "id": "4", + "url": "assets/images/apps/ecommerce/lago-di-braies.jpg", + "type": "image" + }, + { + "id": "5", + "url": "assets/images/apps/ecommerce/lago-di-sorapis.jpg", + "type": "image" + }, + { + "id": "6", + "url": "assets/images/apps/ecommerce/never-stop-changing.jpg", + "type": "image" + }, + { + "id": "7", + "url": "assets/images/apps/ecommerce/reaching.jpg", + "type": "image" + }, + { + "id": "8", + "url": "assets/images/apps/ecommerce/morain-lake.jpg", + "type": "image" + }, + { + "id": "9", + "url": "assets/images/apps/ecommerce/yosemite.jpg", + "type": "image" + } + ], + "priceTaxExcl": 62.827, + "priceTaxIncl": 69.11, + "taxRate": 10, + "comparedPrice": 79.9, + "quantity": 101, + "sku": "A445BV", + "width": "22cm", + "height": "24cm", + "depth": "15cm", + "weight": "3kg", + "extraShippingFee": 3, + "active": false + }, + { + "id": "20", + "name": "Yosemite - Canvas Print", + "handle": "yosemite-canvas-print", + "description": "Proident do sunt dolor tempor aliquip adipisicing dolor reprehenderit officia proident. Culpa non reprehenderit velit anim consequat velit elit eu culpa quis incididunt id. Eu incididunt exercitation nostrud est mollit officia. Laboris deserunt dolore sit occaecat exercitation quis sunt sunt nisi commodo.", + "categories": [ + "Canvas Print", + "Nature" + ], + "tags": [ + "canvas-print", + "nature" + ], + "featuredImageId": "9", + "images": [ + { + "id": "0", + "url": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg", + "type": "image" + }, + { + "id": "1", + "url": "assets/images/apps/ecommerce/braies-lake.jpg", + "type": "image" + }, + { + "id": "2", + "url": "assets/images/apps/ecommerce/fall-glow.jpg", + "type": "image" + }, + { + "id": "3", + "url": "assets/images/apps/ecommerce/first-snow.jpg", + "type": "image" + }, + { + "id": "4", + "url": "assets/images/apps/ecommerce/lago-di-braies.jpg", + "type": "image" + }, + { + "id": "5", + "url": "assets/images/apps/ecommerce/lago-di-sorapis.jpg", + "type": "image" + }, + { + "id": "6", + "url": "assets/images/apps/ecommerce/never-stop-changing.jpg", + "type": "image" + }, + { + "id": "7", + "url": "assets/images/apps/ecommerce/reaching.jpg", + "type": "image" + }, + { + "id": "8", + "url": "assets/images/apps/ecommerce/morain-lake.jpg", + "type": "image" + }, + { + "id": "9", + "url": "assets/images/apps/ecommerce/yosemite.jpg", + "type": "image" + } + ], + "priceTaxExcl": 62.18, + "priceTaxIncl": 68.4, + "taxRate": 10, + "comparedPrice": 69.9, + "quantity": 125, + "sku": "A445BV", + "width": "22cm", + "height": "24cm", + "depth": "15cm", + "weight": "3kg", + "extraShippingFee": 3, + "active": true + } + ] + }, + "ecommerce_orders": { + "value": [ + { + "id": "1", + "reference": "70d4d7d0", + "subtotal": "39.97", + "tax": "77.44", + "discount": "-10.17", + "total": "73.31", + "date": "2015/04/25 02:07:59", + "customer": { + "id": "1", + "firstName": "Dollie", + "lastName": "Bullock", + "avatar": "assets/images/avatars/Abbott.jpg", + "company": "Saois", + "jobTitle": "Digital Archivist", + "email": "abbott@withinpixels.com", + "phone": "+1-202-555-0175", + "invoiceAddress": { + "address": "704 6th Ave, New York, NY 10010, USA", + "lat": 40.7424739, + "lng": -73.99283919999999 + }, + "shippingAddress": { + "address": "377 E South Omaha Bridge Rd, Council Bluffs, IA 51501, USA", + "lat": 41.2183223, + "lng": -95.8420876 + } + }, + "products": [ + { + "id": "1", + "name": "A Walk Amongst Friends - Canvas Print", + "price": "10.24", + "quantity": 1, + "image": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg" + }, + { + "id": "2", + "name": "Lago di Braies - Canvas Print", + "price": "24.62", + "quantity": 1, + "image": "assets/images/apps/ecommerce/lago-di-braies.jpg" + }, + { + "id": "3", + "name": "Never Stop Changing - Canvas Print", + "price": "49.29", + "quantity": 1, + "image": "assets/images/apps/ecommerce/never-stop-changing.jpg" + } + ], + "status": [ + { + "id": "1", + "name": "On pre-order (not paid)", + "color": "purple-300", + "date": "2016/04/03 10:06:18" + }, + { + "id": "2", + "name": "Awaiting check payment", + "color": "blue-500", + "date": "2015/03/17 18:28:37" + } + ], + "payment": { + "transactionId": "2a894b9e", + "amount": "73.31", + "method": "Credit Card", + "date": "2016/02/23 15:50:23" + }, + "shippingDetails": [ + { + "tracking": "", + "carrier": "TNT", + "weight": "10.44", + "fee": "7.00", + "date": "2015/04/10 07:03:52" + } + ] + }, + { + "id": "2", + "reference": "2003479c", + "subtotal": "98.68", + "tax": "45.55", + "discount": "-10.25", + "total": "24.51", + "date": "2015/11/07 15:47:31", + "customer": { + "id": "1", + "firstName": "Holmes", + "lastName": "Hines", + "avatar": "assets/images/avatars/Abbott.jpg", + "company": "Saois", + "jobTitle": "Digital Archivist", + "email": "abbott@withinpixels.com", + "phone": "+1-202-555-0175", + "invoiceAddress": { + "address": "704 6th Ave, New York, NY 10010, USA", + "lat": 40.7424739, + "lng": -73.99283919999999 + }, + "shippingAddress": { + "address": "377 E South Omaha Bridge Rd, Council Bluffs, IA 51501, USA", + "lat": 41.2183223, + "lng": -95.8420876 + } + }, + "products": [ + { + "id": "1", + "name": "A Walk Amongst Friends - Canvas Print", + "price": "10.24", + "quantity": 1, + "image": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg" + }, + { + "id": "2", + "name": "Lago di Braies - Canvas Print", + "price": "24.62", + "quantity": 1, + "image": "assets/images/apps/ecommerce/lago-di-braies.jpg" + }, + { + "id": "3", + "name": "Never Stop Changing - Canvas Print", + "price": "49.29", + "quantity": 1, + "image": "assets/images/apps/ecommerce/never-stop-changing.jpg" + } + ], + "status": [ + { + "id": "2", + "name": "Payment accepted", + "color": "green-500", + "date": "2015/10/04 08:54:33" + }, + { + "id": "1", + "name": "Awaiting check payment", + "color": "blue-500", + "date": "2015/05/03 03:43:04" + } + ], + "payment": { + "transactionId": "79c640c8", + "amount": "24.51", + "method": "Check", + "date": "2015/04/22 04:49:49" + }, + "shippingDetails": [ + { + "tracking": "", + "carrier": "USPS", + "weight": "2.92", + "fee": "4.00", + "date": "2015/07/11 14:57:12" + } + ] + }, + { + "id": "3", + "reference": "09f5443b", + "subtotal": "23.03", + "tax": "16.36", + "discount": "-19.46", + "total": "87.17", + "date": "2015/11/26 16:04:40", + "customer": { + "id": "1", + "firstName": "Serena", + "lastName": "Glover", + "avatar": "assets/images/avatars/Abbott.jpg", + "company": "Saois", + "jobTitle": "Digital Archivist", + "email": "abbott@withinpixels.com", + "phone": "+1-202-555-0175", + "invoiceAddress": { + "address": "704 6th Ave, New York, NY 10010, USA", + "lat": 40.7424739, + "lng": -73.99283919999999 + }, + "shippingAddress": { + "address": "377 E South Omaha Bridge Rd, Council Bluffs, IA 51501, USA", + "lat": 41.2183223, + "lng": -95.8420876 + } + }, + "products": [ + { + "id": "1", + "name": "A Walk Amongst Friends - Canvas Print", + "price": "10.24", + "quantity": 1, + "image": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg" + }, + { + "id": "2", + "name": "Lago di Braies - Canvas Print", + "price": "24.62", + "quantity": 1, + "image": "assets/images/apps/ecommerce/lago-di-braies.jpg" + }, + { + "id": "3", + "name": "Never Stop Changing - Canvas Print", + "price": "49.29", + "quantity": 1, + "image": "assets/images/apps/ecommerce/never-stop-changing.jpg" + } + ], + "status": [ + { + "id": "8", + "name": "Payment error", + "color": "red-900", + "date": "2015/07/02 20:44:34" + }, + { + "id": "3", + "name": "Preparing the order", + "color": "orange-500", + "date": "2015/03/23 04:59:45" + } + ], + "payment": { + "transactionId": "5ff44b0c", + "amount": "87.17", + "method": "PayPal", + "date": "2016/01/25 11:46:28" + }, + "shippingDetails": [ + { + "tracking": "", + "carrier": "USPS", + "weight": "7.53", + "fee": "7.00", + "date": "2015/11/25 00:40:54" + } + ] + }, + { + "id": "4", + "reference": "960898d0", + "subtotal": "13.47", + "tax": "53.45", + "discount": "-15.55", + "total": "26.98", + "date": "2015/11/23 05:35:18", + "customer": { + "id": "1", + "firstName": "Dianne", + "lastName": "Prince", + "avatar": "assets/images/avatars/Abbott.jpg", + "company": "Saois", + "jobTitle": "Digital Archivist", + "email": "abbott@withinpixels.com", + "phone": "+1-202-555-0175", + "invoiceAddress": { + "address": "704 6th Ave, New York, NY 10010, USA", + "lat": 40.7424739, + "lng": -73.99283919999999 + }, + "shippingAddress": { + "address": "377 E South Omaha Bridge Rd, Council Bluffs, IA 51501, USA", + "lat": 41.2183223, + "lng": -95.8420876 + } + }, + "products": [ + { + "id": "1", + "name": "A Walk Amongst Friends - Canvas Print", + "price": "10.24", + "quantity": 1, + "image": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg" + }, + { + "id": "2", + "name": "Lago di Braies - Canvas Print", + "price": "24.62", + "quantity": 1, + "image": "assets/images/apps/ecommerce/lago-di-braies.jpg" + }, + { + "id": "3", + "name": "Never Stop Changing - Canvas Print", + "price": "49.29", + "quantity": 1, + "image": "assets/images/apps/ecommerce/never-stop-changing.jpg" + } + ], + "status": [ + { + "id": "5", + "name": "Delivered", + "color": "green-800", + "date": "2015/10/26 16:12:47" + }, + { + "id": "4", + "name": "Shipped", + "color": "purple-500", + "date": "2016/02/06 06:42:37" + } + ], + "payment": { + "transactionId": "787d49b1", + "amount": "26.98", + "method": "Check", + "date": "2015/03/07 05:50:57" + }, + "shippingDetails": [ + { + "tracking": "", + "carrier": "FedEx", + "weight": "11.93", + "fee": "5.00", + "date": "2016/03/21 07:08:26" + } + ] + }, + { + "id": "5", + "reference": "2d7f68de", + "subtotal": "46.93", + "tax": "12.14", + "discount": "-19.16", + "total": "12.97", + "date": "2015/01/13 06:21:21", + "customer": { + "id": "1", + "firstName": "Frankie", + "lastName": "Hewitt", + "avatar": "assets/images/avatars/Abbott.jpg", + "company": "Saois", + "jobTitle": "Digital Archivist", + "email": "abbott@withinpixels.com", + "phone": "+1-202-555-0175", + "invoiceAddress": { + "address": "704 6th Ave, New York, NY 10010, USA", + "lat": 40.7424739, + "lng": -73.99283919999999 + }, + "shippingAddress": { + "address": "377 E South Omaha Bridge Rd, Council Bluffs, IA 51501, USA", + "lat": 41.2183223, + "lng": -95.8420876 + } + }, + "products": [ + { + "id": "1", + "name": "A Walk Amongst Friends - Canvas Print", + "price": "10.24", + "quantity": 1, + "image": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg" + }, + { + "id": "2", + "name": "Lago di Braies - Canvas Print", + "price": "24.62", + "quantity": 1, + "image": "assets/images/apps/ecommerce/lago-di-braies.jpg" + }, + { + "id": "3", + "name": "Never Stop Changing - Canvas Print", + "price": "49.29", + "quantity": 1, + "image": "assets/images/apps/ecommerce/never-stop-changing.jpg" + } + ], + "status": [ + { + "id": "8", + "name": "Payment error", + "color": "red-900", + "date": "2015/02/01 09:21:46" + }, + { + "id": "6", + "name": "Canceled", + "color": "pink-500", + "date": "2015/11/16 04:48:32" + } + ], + "payment": { + "transactionId": "cd8c4727", + "amount": "12.97", + "method": "Bank-wire", + "date": "2016/05/15 21:15:32" + }, + "shippingDetails": [ + { + "tracking": "", + "carrier": "USPS", + "weight": "5.43", + "fee": "3.00", + "date": "2016/01/06 00:51:59" + } + ] + }, + { + "id": "6", + "reference": "9c991708", + "subtotal": "32.55", + "tax": "11.81", + "discount": "-12.33", + "total": "30.96", + "date": "2015/01/17 04:21:08", + "customer": { + "id": "1", + "firstName": "Cole", + "lastName": "Holcomb", + "avatar": "assets/images/avatars/Abbott.jpg", + "company": "Saois", + "jobTitle": "Digital Archivist", + "email": "abbott@withinpixels.com", + "phone": "+1-202-555-0175", + "invoiceAddress": { + "address": "704 6th Ave, New York, NY 10010, USA", + "lat": 40.7424739, + "lng": -73.99283919999999 + }, + "shippingAddress": { + "address": "377 E South Omaha Bridge Rd, Council Bluffs, IA 51501, USA", + "lat": 41.2183223, + "lng": -95.8420876 + } + }, + "products": [ + { + "id": "1", + "name": "A Walk Amongst Friends - Canvas Print", + "price": "10.24", + "quantity": 1, + "image": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg" + }, + { + "id": "2", + "name": "Lago di Braies - Canvas Print", + "price": "24.62", + "quantity": 1, + "image": "assets/images/apps/ecommerce/lago-di-braies.jpg" + }, + { + "id": "3", + "name": "Never Stop Changing - Canvas Print", + "price": "49.29", + "quantity": 1, + "image": "assets/images/apps/ecommerce/never-stop-changing.jpg" + } + ], + "status": [ + { + "id": "3", + "name": "Preparing the order", + "color": "orange-500", + "date": "2015/11/30 01:04:32" + }, + { + "id": "2", + "name": "Payment accepted", + "color": "green-500", + "date": "2015/11/12 21:27:18" + } + ], + "payment": { + "transactionId": "a41f4b7c", + "amount": "30.96", + "method": "Check", + "date": "2015/04/27 03:59:22" + }, + "shippingDetails": [ + { + "tracking": "", + "carrier": "FedEx", + "weight": "6.05", + "fee": "4.00", + "date": "2015/09/10 11:28:47" + } + ] + }, + { + "id": "7", + "reference": "7683b54d", + "subtotal": "14.08", + "tax": "74.96", + "discount": "-16.60", + "total": "63.36", + "date": "2015/06/14 14:49:47", + "customer": { + "id": "1", + "firstName": "Merrill", + "lastName": "Richardson", + "avatar": "assets/images/avatars/Abbott.jpg", + "company": "Saois", + "jobTitle": "Digital Archivist", + "email": "abbott@withinpixels.com", + "phone": "+1-202-555-0175", + "invoiceAddress": { + "address": "704 6th Ave, New York, NY 10010, USA", + "lat": 40.7424739, + "lng": -73.99283919999999 + }, + "shippingAddress": { + "address": "377 E South Omaha Bridge Rd, Council Bluffs, IA 51501, USA", + "lat": 41.2183223, + "lng": -95.8420876 + } + }, + "products": [ + { + "id": "1", + "name": "A Walk Amongst Friends - Canvas Print", + "price": "10.24", + "quantity": 1, + "image": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg" + }, + { + "id": "2", + "name": "Lago di Braies - Canvas Print", + "price": "24.62", + "quantity": 1, + "image": "assets/images/apps/ecommerce/lago-di-braies.jpg" + }, + { + "id": "3", + "name": "Never Stop Changing - Canvas Print", + "price": "49.29", + "quantity": 1, + "image": "assets/images/apps/ecommerce/never-stop-changing.jpg" + } + ], + "status": [ + { + "id": "1", + "name": "Awaiting PayPal payment", + "color": "blue-500", + "date": "2015/09/03 18:53:02" + }, + { + "id": "2", + "name": "On pre-order (not paid)", + "color": "purple-300", + "date": "2015/12/13 18:14:40" + } + ], + "payment": { + "transactionId": "1974588", + "amount": "63.36", + "method": "PayPal", + "date": "2015/11/28 22:24:58" + }, + "shippingDetails": [ + { + "tracking": "", + "carrier": "FedEx", + "weight": "2.89", + "fee": "3.00", + "date": "2016/02/10 09:03:44" + } + ] + }, + { + "id": "8", + "reference": "c1de0f75", + "subtotal": "13.77", + "tax": "55.78", + "discount": "-17.20", + "total": "45.74", + "date": "2015/01/18 01:31:47", + "customer": { + "id": "1", + "firstName": "Morgan", + "lastName": "Pitts", + "avatar": "assets/images/avatars/Abbott.jpg", + "company": "Saois", + "jobTitle": "Digital Archivist", + "email": "abbott@withinpixels.com", + "phone": "+1-202-555-0175", + "invoiceAddress": { + "address": "704 6th Ave, New York, NY 10010, USA", + "lat": 40.7424739, + "lng": -73.99283919999999 + }, + "shippingAddress": { + "address": "377 E South Omaha Bridge Rd, Council Bluffs, IA 51501, USA", + "lat": 41.2183223, + "lng": -95.8420876 + } + }, + "products": [ + { + "id": "1", + "name": "A Walk Amongst Friends - Canvas Print", + "price": "10.24", + "quantity": 1, + "image": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg" + }, + { + "id": "2", + "name": "Lago di Braies - Canvas Print", + "price": "24.62", + "quantity": 1, + "image": "assets/images/apps/ecommerce/lago-di-braies.jpg" + }, + { + "id": "3", + "name": "Never Stop Changing - Canvas Print", + "price": "49.29", + "quantity": 1, + "image": "assets/images/apps/ecommerce/never-stop-changing.jpg" + } + ], + "status": [ + { + "id": "4", + "name": "Shipped", + "color": "purple-500", + "date": "2015/04/29 07:57:43" + }, + { + "id": "3", + "name": "Preparing the order", + "color": "orange-500", + "date": "2015/04/23 11:14:38" + } + ], + "payment": { + "transactionId": "1e704aaf", + "amount": "45.74", + "method": "Credit Card", + "date": "2015/06/08 03:50:41" + }, + "shippingDetails": [ + { + "tracking": "", + "carrier": "USPS", + "weight": "6.35", + "fee": "2.00", + "date": "2015/06/01 09:18:26" + } + ] + }, + { + "id": "9", + "reference": "35a4dbc6", + "subtotal": "56.49", + "tax": "11.44", + "discount": "-17.45", + "total": "15.31", + "date": "2016/02/14 14:22:58", + "customer": { + "id": "1", + "firstName": "Krista", + "lastName": "Mathis", + "avatar": "assets/images/avatars/Abbott.jpg", + "company": "Saois", + "jobTitle": "Digital Archivist", + "email": "abbott@withinpixels.com", + "phone": "+1-202-555-0175", + "invoiceAddress": { + "address": "704 6th Ave, New York, NY 10010, USA", + "lat": 40.7424739, + "lng": -73.99283919999999 + }, + "shippingAddress": { + "address": "377 E South Omaha Bridge Rd, Council Bluffs, IA 51501, USA", + "lat": 41.2183223, + "lng": -95.8420876 + } + }, + "products": [ + { + "id": "1", + "name": "A Walk Amongst Friends - Canvas Print", + "price": "10.24", + "quantity": 1, + "image": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg" + }, + { + "id": "2", + "name": "Lago di Braies - Canvas Print", + "price": "24.62", + "quantity": 1, + "image": "assets/images/apps/ecommerce/lago-di-braies.jpg" + }, + { + "id": "3", + "name": "Never Stop Changing - Canvas Print", + "price": "49.29", + "quantity": 1, + "image": "assets/images/apps/ecommerce/never-stop-changing.jpg" + } + ], + "status": [ + { + "id": "1", + "name": "Remote payment accepted", + "color": "green-500", + "date": "2015/07/15 15:48:00" + }, + { + "id": "2", + "name": "Awaiting Cash-on-delivery payment", + "color": "blue-500", + "date": "2015/11/08 18:30:15" + } + ], + "payment": { + "transactionId": "762c4e1a", + "amount": "15.31", + "method": "Bank-wire", + "date": "2015/06/19 14:52:53" + }, + "shippingDetails": [ + { + "tracking": "", + "carrier": "USPS", + "weight": "7.93", + "fee": "8.00", + "date": "2015/08/25 15:18:55" + } + ] + }, + { + "id": "10", + "reference": "a8bc5b17", + "subtotal": "29.34", + "tax": "87.50", + "discount": "-18.11", + "total": "20.97", + "date": "2015/10/23 03:02:55", + "customer": { + "id": "1", + "firstName": "Hayden", + "lastName": "Fitzgerald", + "avatar": "assets/images/avatars/Abbott.jpg", + "company": "Saois", + "jobTitle": "Digital Archivist", + "email": "abbott@withinpixels.com", + "phone": "+1-202-555-0175", + "invoiceAddress": { + "address": "704 6th Ave, New York, NY 10010, USA", + "lat": 40.7424739, + "lng": -73.99283919999999 + }, + "shippingAddress": { + "address": "377 E South Omaha Bridge Rd, Council Bluffs, IA 51501, USA", + "lat": 41.2183223, + "lng": -95.8420876 + } + }, + "products": [ + { + "id": "1", + "name": "A Walk Amongst Friends - Canvas Print", + "price": "10.24", + "quantity": 1, + "image": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg" + }, + { + "id": "2", + "name": "Lago di Braies - Canvas Print", + "price": "24.62", + "quantity": 1, + "image": "assets/images/apps/ecommerce/lago-di-braies.jpg" + }, + { + "id": "3", + "name": "Never Stop Changing - Canvas Print", + "price": "49.29", + "quantity": 1, + "image": "assets/images/apps/ecommerce/never-stop-changing.jpg" + } + ], + "status": [ + { + "id": "5", + "name": "Delivered", + "color": "green-800", + "date": "2016/05/02 09:53:55" + }, + { + "id": "2", + "name": "Payment accepted", + "color": "green-500", + "date": "2015/07/11 05:33:31" + } + ], + "payment": { + "transactionId": "3dce47a3", + "amount": "20.97", + "method": "Credit Card", + "date": "2015/07/28 23:53:49" + }, + "shippingDetails": [ + { + "tracking": "", + "carrier": "TNT", + "weight": "9.20", + "fee": "2.00", + "date": "2015/08/05 08:45:55" + } + ] + }, + { + "id": "11", + "reference": "54ab8191", + "subtotal": "50.35", + "tax": "71.75", + "discount": "-10.46", + "total": "72.30", + "date": "2015/07/28 13:22:49", + "customer": { + "id": "1", + "firstName": "Cotton", + "lastName": "Carlson", + "avatar": "assets/images/avatars/Abbott.jpg", + "company": "Saois", + "jobTitle": "Digital Archivist", + "email": "abbott@withinpixels.com", + "phone": "+1-202-555-0175", + "invoiceAddress": { + "address": "704 6th Ave, New York, NY 10010, USA", + "lat": 40.7424739, + "lng": -73.99283919999999 + }, + "shippingAddress": { + "address": "377 E South Omaha Bridge Rd, Council Bluffs, IA 51501, USA", + "lat": 41.2183223, + "lng": -95.8420876 + } + }, + "products": [ + { + "id": "1", + "name": "A Walk Amongst Friends - Canvas Print", + "price": "10.24", + "quantity": 1, + "image": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg" + }, + { + "id": "2", + "name": "Lago di Braies - Canvas Print", + "price": "24.62", + "quantity": 1, + "image": "assets/images/apps/ecommerce/lago-di-braies.jpg" + }, + { + "id": "3", + "name": "Never Stop Changing - Canvas Print", + "price": "49.29", + "quantity": 1, + "image": "assets/images/apps/ecommerce/never-stop-changing.jpg" + } + ], + "status": [ + { + "id": "9", + "name": "On pre-order (paid)", + "color": "purple-300", + "date": "2016/02/26 14:15:38" + }, + { + "id": "4", + "name": "Shipped", + "color": "purple-500", + "date": "2015/10/17 03:32:39" + } + ], + "payment": { + "transactionId": "f4154419", + "amount": "72.30", + "method": "PayPal", + "date": "2016/03/07 15:10:12" + }, + "shippingDetails": [ + { + "tracking": "", + "carrier": "USPS", + "weight": "2.81", + "fee": "7.00", + "date": "2016/05/01 11:15:22" + } + ] + }, + { + "id": "12", + "reference": "6919050", + "subtotal": "81.95", + "tax": "22.44", + "discount": "-10.89", + "total": "42.54", + "date": "2015/06/07 17:54:36", + "customer": { + "id": "1", + "firstName": "Kaye", + "lastName": "Baldwin", + "avatar": "assets/images/avatars/Abbott.jpg", + "company": "Saois", + "jobTitle": "Digital Archivist", + "email": "abbott@withinpixels.com", + "phone": "+1-202-555-0175", + "invoiceAddress": { + "address": "704 6th Ave, New York, NY 10010, USA", + "lat": 40.7424739, + "lng": -73.99283919999999 + }, + "shippingAddress": { + "address": "377 E South Omaha Bridge Rd, Council Bluffs, IA 51501, USA", + "lat": 41.2183223, + "lng": -95.8420876 + } + }, + "products": [ + { + "id": "1", + "name": "A Walk Amongst Friends - Canvas Print", + "price": "10.24", + "quantity": 1, + "image": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg" + }, + { + "id": "2", + "name": "Lago di Braies - Canvas Print", + "price": "24.62", + "quantity": 1, + "image": "assets/images/apps/ecommerce/lago-di-braies.jpg" + }, + { + "id": "3", + "name": "Never Stop Changing - Canvas Print", + "price": "49.29", + "quantity": 1, + "image": "assets/images/apps/ecommerce/never-stop-changing.jpg" + } + ], + "status": [ + { + "id": "1", + "name": "Awaiting bank wire payment", + "color": "blue-500", + "date": "2015/09/01 20:50:07" + }, + { + "id": "2", + "name": "Remote payment accepted", + "color": "green-500", + "date": "2016/02/13 21:19:04" + } + ], + "payment": { + "transactionId": "44464979", + "amount": "42.54", + "method": "Credit Card", + "date": "2015/06/30 11:59:49" + }, + "shippingDetails": [ + { + "tracking": "", + "carrier": "FedEx", + "weight": "5.52", + "fee": "2.00", + "date": "2015/03/15 07:08:37" + } + ] + }, + { + "id": "13", + "reference": "1d4e89f0", + "subtotal": "67.10", + "tax": "46.96", + "discount": "-11.64", + "total": "97.49", + "date": "2016/02/06 13:26:55", + "customer": { + "id": "1", + "firstName": "Iva", + "lastName": "Clark", + "avatar": "assets/images/avatars/Abbott.jpg", + "company": "Saois", + "jobTitle": "Digital Archivist", + "email": "abbott@withinpixels.com", + "phone": "+1-202-555-0175", + "invoiceAddress": { + "address": "704 6th Ave, New York, NY 10010, USA", + "lat": 40.7424739, + "lng": -73.99283919999999 + }, + "shippingAddress": { + "address": "377 E South Omaha Bridge Rd, Council Bluffs, IA 51501, USA", + "lat": 41.2183223, + "lng": -95.8420876 + } + }, + "products": [ + { + "id": "1", + "name": "A Walk Amongst Friends - Canvas Print", + "price": "10.24", + "quantity": 1, + "image": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg" + }, + { + "id": "2", + "name": "Lago di Braies - Canvas Print", + "price": "24.62", + "quantity": 1, + "image": "assets/images/apps/ecommerce/lago-di-braies.jpg" + }, + { + "id": "3", + "name": "Never Stop Changing - Canvas Print", + "price": "49.29", + "quantity": 1, + "image": "assets/images/apps/ecommerce/never-stop-changing.jpg" + } + ], + "status": [ + { + "id": "6", + "name": "Canceled", + "color": "pink-500", + "date": "2015/03/31 03:01:12" + }, + { + "id": "8", + "name": "Payment error", + "color": "red-900", + "date": "2016/03/11 18:53:35" + } + ], + "payment": { + "transactionId": "2aef4aa3", + "amount": "97.49", + "method": "Check", + "date": "2015/05/13 13:28:52" + }, + "shippingDetails": [ + { + "tracking": "", + "carrier": "TNT", + "weight": "5.37", + "fee": "6.00", + "date": "2015/04/22 01:48:15" + } + ] + }, + { + "id": "14", + "reference": "d897564e", + "subtotal": "55.50", + "tax": "48.92", + "discount": "-18.45", + "total": "16.95", + "date": "2016/01/17 04:23:11", + "customer": { + "id": "1", + "firstName": "Shauna", + "lastName": "Rosales", + "avatar": "assets/images/avatars/Abbott.jpg", + "company": "Saois", + "jobTitle": "Digital Archivist", + "email": "abbott@withinpixels.com", + "phone": "+1-202-555-0175", + "invoiceAddress": { + "address": "704 6th Ave, New York, NY 10010, USA", + "lat": 40.7424739, + "lng": -73.99283919999999 + }, + "shippingAddress": { + "address": "377 E South Omaha Bridge Rd, Council Bluffs, IA 51501, USA", + "lat": 41.2183223, + "lng": -95.8420876 + } + }, + "products": [ + { + "id": "1", + "name": "A Walk Amongst Friends - Canvas Print", + "price": "10.24", + "quantity": 1, + "image": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg" + }, + { + "id": "2", + "name": "Lago di Braies - Canvas Print", + "price": "24.62", + "quantity": 1, + "image": "assets/images/apps/ecommerce/lago-di-braies.jpg" + }, + { + "id": "3", + "name": "Never Stop Changing - Canvas Print", + "price": "49.29", + "quantity": 1, + "image": "assets/images/apps/ecommerce/never-stop-changing.jpg" + } + ], + "status": [ + { + "id": "7", + "name": "Refunded", + "color": "red-500", + "date": "2015/12/29 15:34:46" + }, + { + "id": "1", + "name": "Awaiting PayPal payment", + "color": "blue-500", + "date": "2015/07/14 19:10:43" + } + ], + "payment": { + "transactionId": "b7ea43c9", + "amount": "16.95", + "method": "PayPal", + "date": "2015/07/11 07:18:06" + }, + "shippingDetails": [ + { + "tracking": "", + "carrier": "TNT", + "weight": "6.49", + "fee": "6.00", + "date": "2015/01/05 13:42:13" + } + ] + }, + { + "id": "15", + "reference": "1a803de2", + "subtotal": "13.73", + "tax": "64.42", + "discount": "-19.64", + "total": "20.34", + "date": "2015/09/26 14:26:33", + "customer": { + "id": "1", + "firstName": "Carroll", + "lastName": "Dotson", + "avatar": "assets/images/avatars/Abbott.jpg", + "company": "Saois", + "jobTitle": "Digital Archivist", + "email": "abbott@withinpixels.com", + "phone": "+1-202-555-0175", + "invoiceAddress": { + "address": "704 6th Ave, New York, NY 10010, USA", + "lat": 40.7424739, + "lng": -73.99283919999999 + }, + "shippingAddress": { + "address": "377 E South Omaha Bridge Rd, Council Bluffs, IA 51501, USA", + "lat": 41.2183223, + "lng": -95.8420876 + } + }, + "products": [ + { + "id": "1", + "name": "A Walk Amongst Friends - Canvas Print", + "price": "10.24", + "quantity": 1, + "image": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg" + }, + { + "id": "2", + "name": "Lago di Braies - Canvas Print", + "price": "24.62", + "quantity": 1, + "image": "assets/images/apps/ecommerce/lago-di-braies.jpg" + }, + { + "id": "3", + "name": "Never Stop Changing - Canvas Print", + "price": "49.29", + "quantity": 1, + "image": "assets/images/apps/ecommerce/never-stop-changing.jpg" + } + ], + "status": [ + { + "id": "1", + "name": "Awaiting check payment", + "color": "blue-500", + "date": "2015/12/21 10:42:21" + }, + { + "id": "6", + "name": "Canceled", + "color": "pink-500", + "date": "2016/02/11 05:58:55" + } + ], + "payment": { + "transactionId": "0633458c", + "amount": "20.34", + "method": "Check", + "date": "2015/07/17 20:54:14" + }, + "shippingDetails": [ + { + "tracking": "", + "carrier": "TNT", + "weight": "3.30", + "fee": "2.00", + "date": "2015/11/04 14:08:16" + } + ] + }, + { + "id": "16", + "reference": "7d90eaa6", + "subtotal": "99.07", + "tax": "31.36", + "discount": "-18.23", + "total": "10.64", + "date": "2015/08/10 14:28:10", + "customer": { + "id": "1", + "firstName": "Jeannie", + "lastName": "Reese", + "avatar": "assets/images/avatars/Abbott.jpg", + "company": "Saois", + "jobTitle": "Digital Archivist", + "email": "abbott@withinpixels.com", + "phone": "+1-202-555-0175", + "invoiceAddress": { + "address": "704 6th Ave, New York, NY 10010, USA", + "lat": 40.7424739, + "lng": -73.99283919999999 + }, + "shippingAddress": { + "address": "377 E South Omaha Bridge Rd, Council Bluffs, IA 51501, USA", + "lat": 41.2183223, + "lng": -95.8420876 + } + }, + "products": [ + { + "id": "1", + "name": "A Walk Amongst Friends - Canvas Print", + "price": "10.24", + "quantity": 1, + "image": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg" + }, + { + "id": "2", + "name": "Lago di Braies - Canvas Print", + "price": "24.62", + "quantity": 1, + "image": "assets/images/apps/ecommerce/lago-di-braies.jpg" + }, + { + "id": "3", + "name": "Never Stop Changing - Canvas Print", + "price": "49.29", + "quantity": 1, + "image": "assets/images/apps/ecommerce/never-stop-changing.jpg" + } + ], + "status": [ + { + "id": "9", + "name": "On pre-order (paid)", + "color": "purple-300", + "date": "2015/06/20 08:37:46" + }, + { + "id": "2", + "name": "Payment accepted", + "color": "green-500", + "date": "2015/01/01 01:42:21" + } + ], + "payment": { + "transactionId": "45f7440a", + "amount": "10.64", + "method": "PayPal", + "date": "2015/11/23 11:14:47" + }, + "shippingDetails": [ + { + "tracking": "", + "carrier": "USPS", + "weight": "9.94", + "fee": "6.00", + "date": "2016/04/30 19:17:39" + } + ] + }, + { + "id": "17", + "reference": "cf9b4bfc", + "subtotal": "96.93", + "tax": "74.32", + "discount": "-12.63", + "total": "27.06", + "date": "2015/11/10 16:54:11", + "customer": { + "id": "1", + "firstName": "Dena", + "lastName": "Rowe", + "avatar": "assets/images/avatars/Abbott.jpg", + "company": "Saois", + "jobTitle": "Digital Archivist", + "email": "abbott@withinpixels.com", + "phone": "+1-202-555-0175", + "invoiceAddress": { + "address": "704 6th Ave, New York, NY 10010, USA", + "lat": 40.7424739, + "lng": -73.99283919999999 + }, + "shippingAddress": { + "address": "377 E South Omaha Bridge Rd, Council Bluffs, IA 51501, USA", + "lat": 41.2183223, + "lng": -95.8420876 + } + }, + "products": [ + { + "id": "1", + "name": "A Walk Amongst Friends - Canvas Print", + "price": "10.24", + "quantity": 1, + "image": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg" + }, + { + "id": "2", + "name": "Lago di Braies - Canvas Print", + "price": "24.62", + "quantity": 1, + "image": "assets/images/apps/ecommerce/lago-di-braies.jpg" + }, + { + "id": "3", + "name": "Never Stop Changing - Canvas Print", + "price": "49.29", + "quantity": 1, + "image": "assets/images/apps/ecommerce/never-stop-changing.jpg" + } + ], + "status": [ + { + "id": "5", + "name": "Delivered", + "color": "green-800", + "date": "2015/03/23 00:18:52" + }, + { + "id": "3", + "name": "Preparing the order", + "color": "orange-500", + "date": "2015/03/22 04:48:12" + } + ], + "payment": { + "transactionId": "966f4c8e", + "amount": "27.06", + "method": "PayPal", + "date": "2015/07/10 17:22:44" + }, + "shippingDetails": [ + { + "tracking": "", + "carrier": "FedEx", + "weight": "6.81", + "fee": "3.00", + "date": "2015/01/23 07:31:46" + } + ] + }, + { + "id": "18", + "reference": "07a938c4", + "subtotal": "67.73", + "tax": "33.33", + "discount": "-12.33", + "total": "91.50", + "date": "2015/08/26 16:24:38", + "customer": { + "id": "1", + "firstName": "Blankenship", + "lastName": "Lynch", + "avatar": "assets/images/avatars/Abbott.jpg", + "company": "Saois", + "jobTitle": "Digital Archivist", + "email": "abbott@withinpixels.com", + "phone": "+1-202-555-0175", + "invoiceAddress": { + "address": "704 6th Ave, New York, NY 10010, USA", + "lat": 40.7424739, + "lng": -73.99283919999999 + }, + "shippingAddress": { + "address": "377 E South Omaha Bridge Rd, Council Bluffs, IA 51501, USA", + "lat": 41.2183223, + "lng": -95.8420876 + } + }, + "products": [ + { + "id": "1", + "name": "A Walk Amongst Friends - Canvas Print", + "price": "10.24", + "quantity": 1, + "image": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg" + }, + { + "id": "2", + "name": "Lago di Braies - Canvas Print", + "price": "24.62", + "quantity": 1, + "image": "assets/images/apps/ecommerce/lago-di-braies.jpg" + }, + { + "id": "3", + "name": "Never Stop Changing - Canvas Print", + "price": "49.29", + "quantity": 1, + "image": "assets/images/apps/ecommerce/never-stop-changing.jpg" + } + ], + "status": [ + { + "id": "6", + "name": "Canceled", + "color": "pink-500", + "date": "2016/03/24 22:56:35" + }, + { + "id": "4", + "name": "Shipped", + "color": "purple-500", + "date": "2016/04/09 13:33:26" + } + ], + "payment": { + "transactionId": "411a4e97", + "amount": "91.50", + "method": "PayPal", + "date": "2016/02/05 05:35:52" + }, + "shippingDetails": [ + { + "tracking": "", + "carrier": "USPS", + "weight": "6.11", + "fee": "7.00", + "date": "2015/10/20 10:46:31" + } + ] + }, + { + "id": "19", + "reference": "d460f4ff", + "subtotal": "15.83", + "tax": "41.90", + "discount": "-16.54", + "total": "47.99", + "date": "2015/01/04 21:13:53", + "customer": { + "id": "1", + "firstName": "Whitley", + "lastName": "Mcgee", + "avatar": "assets/images/avatars/Abbott.jpg", + "company": "Saois", + "jobTitle": "Digital Archivist", + "email": "abbott@withinpixels.com", + "phone": "+1-202-555-0175", + "invoiceAddress": { + "address": "704 6th Ave, New York, NY 10010, USA", + "lat": 40.7424739, + "lng": -73.99283919999999 + }, + "shippingAddress": { + "address": "377 E South Omaha Bridge Rd, Council Bluffs, IA 51501, USA", + "lat": 41.2183223, + "lng": -95.8420876 + } + }, + "products": [ + { + "id": "1", + "name": "A Walk Amongst Friends - Canvas Print", + "price": "10.24", + "quantity": 1, + "image": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg" + }, + { + "id": "2", + "name": "Lago di Braies - Canvas Print", + "price": "24.62", + "quantity": 1, + "image": "assets/images/apps/ecommerce/lago-di-braies.jpg" + }, + { + "id": "3", + "name": "Never Stop Changing - Canvas Print", + "price": "49.29", + "quantity": 1, + "image": "assets/images/apps/ecommerce/never-stop-changing.jpg" + } + ], + "status": [ + { + "id": "7", + "name": "Refunded", + "color": "red-500", + "date": "2015/08/10 17:14:57" + }, + { + "id": "5", + "name": "Delivered", + "color": "green-800", + "date": "2016/03/30 01:38:14" + } + ], + "payment": { + "transactionId": "761943c2", + "amount": "47.99", + "method": "PayPal", + "date": "2015/10/11 20:10:46" + }, + "shippingDetails": [ + { + "tracking": "", + "carrier": "USPS", + "weight": "5.51", + "fee": "5.00", + "date": "2015/08/28 21:24:36" + } + ] + }, + { + "id": "20", + "reference": "ba6a946d", + "subtotal": "36.84", + "tax": "20.12", + "discount": "-14.57", + "total": "44.40", + "date": "2015/02/24 00:57:18", + "customer": { + "id": "1", + "firstName": "Hood", + "lastName": "Hodges", + "avatar": "assets/images/avatars/Abbott.jpg", + "company": "Saois", + "jobTitle": "Digital Archivist", + "email": "abbott@withinpixels.com", + "phone": "+1-202-555-0175", + "invoiceAddress": { + "address": "704 6th Ave, New York, NY 10010, USA", + "lat": 40.7424739, + "lng": -73.99283919999999 + }, + "shippingAddress": { + "address": "377 E South Omaha Bridge Rd, Council Bluffs, IA 51501, USA", + "lat": 41.2183223, + "lng": -95.8420876 + } + }, + "products": [ + { + "id": "1", + "name": "A Walk Amongst Friends - Canvas Print", + "price": "10.24", + "quantity": 1, + "image": "assets/images/apps/ecommerce/a-walk-amongst-friends.jpg" + }, + { + "id": "2", + "name": "Lago di Braies - Canvas Print", + "price": "24.62", + "quantity": 1, + "image": "assets/images/apps/ecommerce/lago-di-braies.jpg" + }, + { + "id": "3", + "name": "Never Stop Changing - Canvas Print", + "price": "49.29", + "quantity": 1, + "image": "assets/images/apps/ecommerce/never-stop-changing.jpg" + } + ], + "status": [ + { + "id": "1", + "name": "Awaiting bank wire payment", + "color": "blue-500", + "date": "2015/05/19 11:09:56" + }, + { + "id": "2", + "name": "Remote payment accepted", + "color": "green-500", + "date": "2015/03/27 05:02:33" + } + ], + "payment": { + "transactionId": "4af94368", + "amount": "44.40", + "method": "PayPal", + "date": "2015/11/11 14:25:39" + }, + "shippingDetails": [ + { + "tracking": "", + "carrier": "USPS", + "weight": "3.63", + "fee": "5.00", + "date": "2016/03/01 09:07:49" + } + ] + } + ] + }, + "file_manager_items": { + "value": [ + { + "id": "cd6897cb-acfd-4016-8b53-3f66a5b5fc68", + "folderId": null, + "name": "Personal", + "createdBy": "Brian Hughes", + "createdAt": "April 24, 2018", + "modifiedAt": "April 24, 2018", + "size": "87 MB", + "type": "folder", + "contents": "57 files", + "description": "Personal documents such as insurance policies, tax papers and etc." + }, + { + "id": "6da8747f-b474-4c9a-9eba-5ef212285500", + "folderId": null, + "name": "Photos", + "createdBy": "Brian Hughes", + "createdAt": "November 01, 2021", + "modifiedAt": "November 01, 2021", + "size": "3015 MB", + "type": "folder", + "contents": "907 files", + "description": "Personal photos; selfies, family, vacation and etc." + }, + { + "id": "ed58add1-45a7-41db-887d-3ca7ee7f2719", + "folderId": null, + "name": "Work", + "createdBy": "Brian Hughes", + "createdAt": "May 8, 2020", + "modifiedAt": "May 8, 2020", + "size": "14 MB", + "type": "folder", + "contents": "24 files", + "description": "Work related files, mainly documents and paychecks." + }, + { + "id": "5cb66e32-d1ac-4b9a-8c34-5991ce25add2", + "folderId": null, + "name": "Contract #123", + "createdBy": "Brian Hughes", + "createdAt": "January 14, 2021", + "modifiedAt": "January 14, 2021", + "size": "1.2 MB", + "type": "PDF", + "contents": null, + "description": null + }, + { + "id": "3ffc3d84-8f2d-4929-903a-ef6fc21657a7", + "folderId": null, + "name": "Estimated budget", + "createdBy": "Brian Hughes", + "createdAt": "December 14, 2020", + "modifiedAt": "December 14, 2020", + "size": "679 KB", + "type": "XLS", + "contents": null, + "description": null + }, + { + "id": "157adb9a-14f8-4559-ac93-8be893c9f80a", + "folderId": null, + "name": "DMCA notice #42", + "createdBy": "Brian Hughes", + "createdAt": "May 8, 2021", + "modifiedAt": "May 8, 2021", + "size": "1.5 MB", + "type": "DOC", + "contents": null, + "description": null + }, + { + "id": "4f64597a-df7e-461c-ad60-f33e5f7e0747", + "folderId": null, + "name": "Invoices", + "createdBy": "Brian Hughes", + "createdAt": "January 12, 2020", + "modifiedAt": "January 12, 2020", + "size": "17.8 MB", + "type": "PDF", + "contents": null, + "description": null + }, + { + "id": "e445c445-57b2-4476-8c62-b068e3774b8e", + "folderId": null, + "name": "Crash logs", + "createdBy": "Brian Hughes", + "createdAt": "June 8, 2020", + "modifiedAt": "June 8, 2020", + "size": "11.3 MB", + "type": "TXT", + "contents": null, + "description": null + }, + { + "id": "b482f93e-7847-4614-ad48-b78b78309f81", + "folderId": null, + "name": "System logs", + "createdBy": "Brian Hughes", + "createdAt": "June 8, 2020", + "modifiedAt": "June 8, 2020", + "size": "9.3 MB", + "type": "TXT", + "contents": null, + "description": null + }, + { + "id": "ec07a98d-2e5b-422c-a9b2-b5d1c0e263f5", + "folderId": null, + "name": "Personal projects", + "createdBy": "Brian Hughes", + "createdAt": "March 18, 2020", + "modifiedAt": "March 18, 2020", + "size": "4.3 MB", + "type": "DOC", + "contents": null, + "description": null + }, + { + "id": "ae908d59-07da-4dd8-aba0-124e50289295", + "folderId": null, + "name": "Biometric portrait", + "createdBy": "Brian Hughes", + "createdAt": "August 29, 2020", + "modifiedAt": "August 29, 2020", + "size": "4.5 MB", + "type": "JPG", + "contents": null, + "description": null + }, + { + "id": "4038a5b6-5b1a-432d-907c-e037aeb817a8", + "folderId": null, + "name": "Scanned image 20201012-1", + "createdBy": "Brian Hughes", + "createdAt": "September 13, 2020", + "modifiedAt": "September 13, 2020", + "size": "7.8 MB", + "type": "JPG", + "contents": null, + "description": null + }, + { + "id": "630d2e9a-d110-47a0-ac03-256073a0f56d", + "folderId": null, + "name": "Scanned image 20201012-2", + "createdBy": "Brian Hughes", + "createdAt": "September 14, 2020", + "modifiedAt": "September 14, 2020", + "size": "7.4 MB", + "type": "JPG", + "contents": null, + "description": null + }, + { + "id": "1417d5ed-b616-4cff-bfab-286677b69d79", + "folderId": null, + "name": "Prices", + "createdBy": "Brian Hughes", + "createdAt": "April 07, 2020", + "modifiedAt": "April 07, 2020", + "size": "2.6 MB", + "type": "DOC", + "contents": null, + "description": null + }, + { + "id": "bd2817c7-6751-40dc-b252-b6b5634c0689", + "folderId": null, + "name": "Shopping list", + "createdBy": "Brian Hughes", + "createdAt": "March 26, 2021", + "modifiedAt": "March 26, 2021", + "size": "2.1 MB", + "type": "DOC", + "contents": null, + "description": null + }, + { + "id": "14fb47c9-6eeb-4070-919c-07c8133285d1", + "folderId": null, + "name": "Summer budget", + "createdBy": "Brian Hughes", + "createdAt": "June 02, 2020", + "modifiedAt": "June 02, 2020", + "size": "943 KB", + "type": "XLS", + "contents": null, + "description": null + }, + { + "id": "894e8514-03d3-4f5e-bb28-f6c092501fae", + "folderId": "cd6897cb-acfd-4016-8b53-3f66a5b5fc68", + "name": "A personal file", + "createdBy": "Brian Hughes", + "createdAt": "June 02, 2020", + "modifiedAt": "June 02, 2020", + "size": "943 KB", + "type": "XLS", + "contents": null, + "description": null + }, + { + "id": "74010810-16cf-441d-a1aa-c9fb620fceea", + "folderId": "cd6897cb-acfd-4016-8b53-3f66a5b5fc68", + "name": "A personal folder", + "createdBy": "Brian Hughes", + "createdAt": "November 01, 2021", + "modifiedAt": "November 01, 2021", + "size": "3015 MB", + "type": "folder", + "contents": "907 files", + "description": "Personal photos; selfies, family, vacation and etc." + }, + { + "id": "a8c73e5a-8114-436d-ab54-d900b50b3762", + "folderId": "74010810-16cf-441d-a1aa-c9fb620fceea", + "name": "A personal file within the personal folder", + "createdBy": "Brian Hughes", + "createdAt": "June 02, 2020", + "modifiedAt": "June 02, 2020", + "size": "943 KB", + "type": "XLS", + "contents": null, + "description": null + }, + { + "id": "12d851a8-4f60-473e-8a59-abe4b422ea99", + "folderId": "6da8747f-b474-4c9a-9eba-5ef212285500", + "name": "Photos file", + "createdBy": "Brian Hughes", + "createdAt": "June 02, 2020", + "modifiedAt": "June 02, 2020", + "size": "943 KB", + "type": "XLS", + "contents": null, + "description": null + }, + { + "id": "2836766d-27e1-4f40-a31a-5a8419105e7e", + "folderId": "ed58add1-45a7-41db-887d-3ca7ee7f2719", + "name": "Work file", + "createdBy": "Brian Hughes", + "createdAt": "June 02, 2020", + "modifiedAt": "June 02, 2020", + "size": "943 KB", + "type": "XLS", + "contents": null, + "description": null + } + ] + }, + "help_center_faqs": { + "value": [ + { + "id": "f65d517a-6f69-4c88-81f5-416f47405ce1", + "categoryId": "28924eab-97cc-465a-ba21-f232bb95843f", + "question": "Is there a 14-days trial?", + "answer": "Magna consectetur culpa duis ad est tempor pariatur velit ullamco aute exercitation magna sunt commodo minim enim aliquip eiusmod ipsum adipisicing magna ipsum reprehenderit lorem magna voluptate magna aliqua culpa.\n\nSit nisi adipisicing pariatur enim enim sunt officia ad labore voluptate magna proident velit excepteur pariatur cillum sit excepteur elit veniam excepteur minim nisi cupidatat proident dolore irure veniam mollit." + }, + { + "id": "0fcece82-1691-4b98-a9b9-b63218f9deef", + "categoryId": "28924eab-97cc-465a-ba21-f232bb95843f", + "question": "What’s the benefits of the Premium Membership?", + "answer": "Et in lorem qui ipsum deserunt duis exercitation lorem elit qui qui ipsum tempor nulla velit aliquip enim consequat incididunt pariatur duis excepteur elit irure nulla ipsum dolor dolore est.\n\nAute deserunt nostrud id non ipsum do adipisicing laboris in minim officia magna elit minim mollit elit velit veniam lorem pariatur veniam sit excepteur irure commodo excepteur duis quis in." + }, + { + "id": "2e6971cd-49d5-49f1-8cbd-fba5c71e6062", + "categoryId": "28924eab-97cc-465a-ba21-f232bb95843f", + "question": "How much time I will need to learn this app?", + "answer": "Id fugiat et cupidatat magna nulla nulla eu cillum officia nostrud dolore in veniam ullamco nulla ex duis est enim nisi aute ipsum velit et laboris est pariatur est culpa.\n\nCulpa sunt ipsum esse quis excepteur enim culpa est voluptate reprehenderit consequat duis officia irure voluptate veniam dolore fugiat dolor est amet nostrud non velit irure do voluptate id sit." + }, + { + "id": "974f93b8-336f-4eec-b011-9ddb412ee828", + "categoryId": "28924eab-97cc-465a-ba21-f232bb95843f", + "question": "Are there any free tutorials available?", + "answer": "Excepteur deserunt tempor do lorem elit id magna pariatur irure ullamco elit dolor consectetur ad officia fugiat incididunt do elit aute esse eu voluptate adipisicing incididunt ea dolor aliqua dolor.\n\nConsequat est quis deserunt voluptate ipsum incididunt laboris occaecat irure laborum voluptate non sit labore voluptate sunt id sint ut laboris aute cupidatat occaecat eiusmod non magna aliquip deserunt nisi." + }, + { + "id": "5d877fc7-b881-4527-a6aa-d39d642feb23", + "categoryId": "28924eab-97cc-465a-ba21-f232bb95843f", + "question": "Is there a month-to-month payment option?", + "answer": "Labore mollit in aliqua exercitation aliquip elit nisi nisi voluptate reprehenderit et dolor incididunt cupidatat ullamco nulla consequat voluptate adipisicing dolor qui magna sint aute do excepteur in aliqua consectetur.\n\nElit laborum non duis irure ad ullamco aliqua enim exercitation quis fugiat aute esse esse magna et ad cupidatat voluptate sint nulla nulla lorem et enim deserunt proident deserunt consectetur." + }, + { + "id": "3d1c26c5-1e5e-4eb6-8006-ed6037ed9aca", + "categoryId": "395b0d41-b9a8-4cd6-8b5c-f07855e82d62", + "question": "How to download your items", + "answer": "Sunt mollit irure dolor aliquip sit veniam amet ut sunt dolore cillum sint pariatur qui irure proident velit non excepteur quis ut et quis velit aliqua ea sunt cillum sit.\n\nReprehenderit est culpa ut incididunt sit dolore mollit in occaecat velit culpa consequat reprehenderit ex lorem cupidatat proident reprehenderit ad eu sunt sit ut sit culpa ea reprehenderit aliquip est." + }, + { + "id": "11bd2b9a-85b4-41c9-832c-bd600dfa3a52", + "categoryId": "395b0d41-b9a8-4cd6-8b5c-f07855e82d62", + "question": "View and download invoices", + "answer": "Sint mollit consectetur voluptate fugiat sunt ipsum adipisicing labore exercitation eiusmod enim excepteur enim proident velit sint magna commodo dolor ex ipsum sit nisi deserunt labore eu irure amet ea.\n\nOccaecat ut velit et sint pariatur laboris voluptate duis aliqua aliqua exercitation et duis duis eu laboris excepteur occaecat quis esse enim ex dolore commodo fugiat excepteur adipisicing in fugiat." + }, + { + "id": "f55c023a-785e-4f0f-b5b7-47da75224deb", + "categoryId": "395b0d41-b9a8-4cd6-8b5c-f07855e82d62", + "question": "I've forgotten my username or password", + "answer": "In exercitation sunt ad anim commodo sunt do in sunt est officia amet ex ullamco do nisi consectetur lorem proident lorem adipisicing incididunt consequat fugiat voluptate sint est anim officia.\n\nVelit sint aliquip elit culpa amet eu mollit veniam esse deserunt ex occaecat quis lorem minim occaecat culpa esse veniam enim duis excepteur ipsum esse ut ut velit cillum adipisicing." + }, + { + "id": "c577a67d-357a-4b88-96e8-a0ee1fe9162e", + "categoryId": "395b0d41-b9a8-4cd6-8b5c-f07855e82d62", + "question": "Where is my license code?", + "answer": "Ad adipisicing duis consequat magna sunt consequat aliqua eiusmod qui et nostrud voluptate sit enim reprehenderit anim exercitation ipsum ipsum anim ipsum laboris aliqua ex lorem aute officia voluptate culpa.\n\nNostrud anim ex pariatur ipsum et nostrud esse veniam ipsum ipsum irure velit ad quis irure tempor nulla amet aute id esse reprehenderit ea consequat consequat ea minim magna magna." + }, + { + "id": "1a680c29-7ece-4a80-9709-277ad4da8b4b", + "categoryId": "395b0d41-b9a8-4cd6-8b5c-f07855e82d62", + "question": "How to contact an author", + "answer": "Magna laborum et amet magna fugiat officia deserunt in exercitation aliquip nulla magna velit ea labore quis deserunt ipsum occaecat id id consequat non eiusmod mollit est voluptate ea ex.\n\nReprehenderit mollit ut excepteur minim veniam fugiat enim id pariatur amet elit nostrud occaecat pariatur et esse aliquip irure quis officia reprehenderit voluptate voluptate est et voluptate sint esse dolor." + }, + { + "id": "c49c2216-8bdb-4df0-be25-d5ea1dbb5688", + "categoryId": "395b0d41-b9a8-4cd6-8b5c-f07855e82d62", + "question": "How does the affiliate program work?", + "answer": "Adipisicing laboris ipsum fugiat et cupidatat aute esse ad labore et est cillum ipsum sunt duis do veniam minim officia deserunt in eiusmod eu duis dolore excepteur consectetur id elit.\n\nAnim excepteur occaecat laborum sunt in elit quis sit duis adipisicing laboris anim laborum et pariatur elit qui consectetur laborum reprehenderit occaecat nostrud pariatur aliqua elit nisi commodo eu excepteur." + }, + { + "id": "3ef176fa-6cba-4536-9f43-540c686a4faa", + "categoryId": "b388a87f-bfbb-44d0-800c-0ddbce2a5d22", + "question": "How do licenses work for items I bought?", + "answer": "Culpa duis nostrud qui velit sint magna officia fugiat ipsum eiusmod enim laborum pariatur anim culpa elit ipsum lorem pariatur exercitation laborum do labore cillum exercitation nisi reprehenderit exercitation quis.\n\nMollit aute dolor non elit et incididunt eiusmod non in commodo occaecat id in excepteur aliqua ea anim pariatur sint elit voluptate dolor eu non laborum laboris voluptate qui duis." + }, + { + "id": "7bc6b7b4-7ad8-4cbe-af36-7301642d35fb", + "categoryId": "b388a87f-bfbb-44d0-800c-0ddbce2a5d22", + "question": "Do licenses have an expiry date?", + "answer": "Ea proident dolor tempor dolore incididunt velit incididunt ullamco quis proident consectetur magna excepteur cillum officia ex do aliqua reprehenderit est esse officia labore dolore aute laboris eu commodo aute.\n\nOfficia quis id ipsum adipisicing ipsum eu exercitation cillum ex elit pariatur adipisicing ullamco ullamco nulla dolore magna aliqua reprehenderit eu laborum voluptate reprehenderit non eiusmod deserunt velit magna do." + }, + { + "id": "56c9ed66-a1d2-4803-a160-fba29b826cb4", + "categoryId": "b388a87f-bfbb-44d0-800c-0ddbce2a5d22", + "question": "I want to make multiple end products with the same item", + "answer": "Elit cillum incididunt enim cupidatat ex elit cillum aute dolor consectetur proident non minim eu est deserunt proident mollit ullamco laborum anim ea labore anim ex enim ullamco consectetur enim.\n\nEx magna consectetur esse enim consequat non aliqua nulla labore mollit sit quis ex fugiat commodo eu cupidatat irure incididunt consequat enim ut deserunt consequat elit consequat sint adipisicing sunt." + }, + { + "id": "21c1b662-33c8-44d7-9530-91896afeeac7", + "categoryId": "b388a87f-bfbb-44d0-800c-0ddbce2a5d22", + "question": "How easy is it to change the license type?", + "answer": "Duis culpa ut veniam voluptate consequat proident magna eiusmod id est magna culpa nulla enim culpa mollit velit lorem mollit ut minim dolore in tempor reprehenderit cillum occaecat proident ea.\n\nVeniam fugiat ea duis qui et eu eiusmod voluptate id cillum eiusmod eu reprehenderit minim reprehenderit nisi cillum nostrud duis eu magna minim sunt voluptate eu pariatur nulla ullamco elit." + }, + { + "id": "5fa52c90-82be-41ae-96ec-5fc67cf054a4", + "categoryId": "b388a87f-bfbb-44d0-800c-0ddbce2a5d22", + "question": "Do I need a Regular License or an Extended License?", + "answer": "Mollit nostrud ea irure ex ipsum in cupidatat irure sit officia reprehenderit adipisicing et occaecat cupidatat exercitation mollit esse in excepteur qui elit exercitation velit fugiat exercitation est officia excepteur.\n\nQuis esse voluptate laborum non veniam duis est fugiat tempor culpa minim velit minim ut duis qui officia consectetur ex nostrud ut elit elit nulla in consectetur voluptate aliqua aliqua." + }, + { + "id": "81ac908c-35a2-4705-8d75-539863c35c09", + "categoryId": "71c34043-d89d-4aca-951d-8606c3943c43", + "question": "Common PayPal, Skrill, and credit card issues", + "answer": "Sit occaecat sint nulla in esse dolor occaecat in ea sit irure magna magna veniam fugiat consequat exercitation ipsum ex officia velit consectetur consequat voluptate lorem eu proident lorem incididunt.\n\nExcepteur exercitation et qui labore nisi eu voluptate ipsum deserunt deserunt eu est minim dolor ad proident nulla reprehenderit culpa minim voluptate dolor nostrud dolor anim labore aliqua officia nostrud." + }, + { + "id": "b6d8909f-f36d-4885-8848-46b8230d4476", + "categoryId": "71c34043-d89d-4aca-951d-8606c3943c43", + "question": "How do I find my transaction ID?", + "answer": "Laboris ea nisi commodo nulla cillum consequat consectetur nisi velit adipisicing minim nulla culpa amet quis sit duis id id aliqua aute exercitation non reprehenderit aliquip enim eiusmod eu irure.\n\nNon irure consectetur sunt cillum do adipisicing excepteur labore proident ut officia dolor fugiat velit sint consectetur cillum qui amet enim anim mollit laboris consectetur non do laboris lorem aliqua." + }, + { + "id": "9496235d-4d0c-430b-817e-1cba96404f95", + "categoryId": "71c34043-d89d-4aca-951d-8606c3943c43", + "question": "PayPal disputes And chargebacks", + "answer": "Ullamco eiusmod do pariatur pariatur consectetur commodo proident ex voluptate ullamco culpa commodo deserunt pariatur incididunt nisi magna dolor est minim eu ex voluptate deserunt labore id magna excepteur et.\n\nReprehenderit dolore pariatur exercitation ad non fugiat quis proident fugiat incididunt ea magna pariatur et exercitation tempor cillum eu consequat adipisicing est laborum sit cillum ea fugiat mollit cupidatat est." + }, + { + "id": "7fde17e6-4ac1-47dd-a363-2f4f14dcf76a", + "categoryId": "71c34043-d89d-4aca-951d-8606c3943c43", + "question": "Saving your credit card details", + "answer": "Qui quis nulla excepteur voluptate elit culpa occaecat id ex do adipisicing est mollit id anim nisi irure amet officia ut sint aliquip dolore labore cupidatat magna laborum esse ea.\n\nEnim magna duis sit incididunt amet anim et nostrud laborum eiusmod et ea fugiat aliquip velit sit fugiat consectetur ipsum anim do enim excepteur cupidatat consequat sunt irure tempor ut." + }, + { + "id": "90a3ed58-e13b-40cf-9219-f933bf9c9b8f", + "categoryId": "71c34043-d89d-4aca-951d-8606c3943c43", + "question": "Why do prepaid credits expire?", + "answer": "Consequat consectetur commodo deserunt sunt aliquip deserunt ex tempor esse nostrud sit dolore anim nostrud nulla dolore veniam minim laboris non dolor veniam lorem veniam deserunt laborum aute amet irure.\n\nEiusmod officia veniam reprehenderit ea aliquip velit anim aute minim aute nisi tempor qui sunt deserunt voluptate velit elit ut adipisicing ipsum et excepteur ipsum eu ullamco nisi esse dolor." + }, + { + "id": "153376ed-691f-4dfd-ae99-e204a49edc44", + "categoryId": "71c34043-d89d-4aca-951d-8606c3943c43", + "question": "Why is there a minimum $20 credit?", + "answer": "Duis sint velit incididunt exercitation eiusmod nisi sunt ex est fugiat ad cupidatat sunt nisi elit do duis amet voluptate ipsum aliquip lorem aliqua sint esse in magna irure officia.\n\nNon eu ex elit ut est voluptate tempor amet ut officia in duis deserunt cillum labore do culpa id dolore magna anim consectetur qui consectetur fugiat labore mollit magna irure." + }, + { + "id": "4e7ce72f-863a-451f-9160-cbd4fbbc4c3d", + "categoryId": "bea49ee0-26da-46ad-97be-116cd7ab416d", + "question": "What is item support?", + "answer": "Exercitation sit eiusmod enim officia exercitation eiusmod sunt eiusmod excepteur ad commodo eiusmod qui proident quis aliquip excepteur sit cillum occaecat non dolore sit in labore ut duis esse duis.\n\nConsequat sunt voluptate consectetur dolor laborum enim nostrud deserunt incididunt sint veniam laboris sunt amet velit anim duis aliqua sunt aliqua aute qui nisi mollit qui irure ullamco aliquip laborum." + }, + { + "id": "0795a74f-7a84-4edf-8d66-296cdef70003", + "categoryId": "bea49ee0-26da-46ad-97be-116cd7ab416d", + "question": "How to contact an author", + "answer": "Minim commodo cillum do id qui irure aliqua laboris excepteur laboris magna enim est lorem consectetur tempor laboris proident proident eu irure dolor eiusmod in officia lorem quis laborum ullamco.\n\nQui excepteur ex sit esse dolore deserunt ullamco occaecat laboris fugiat cupidatat excepteur laboris amet dolore enim velit ipsum velit sint cupidatat consectetur cupidatat deserunt sit eu do ullamco quis." + }, + { + "id": "05532574-c102-4228-89a8-55fff32ec6fc", + "categoryId": "bea49ee0-26da-46ad-97be-116cd7ab416d", + "question": "Extending and renewing item support", + "answer": "Reprehenderit anim consectetur anim dolor magna consequat excepteur tempor enim duis magna proident ullamco aute voluptate elit laborum mollit labore id ex lorem est mollit do qui ex labore nulla.\n\nUt proident elit proident adipisicing elit fugiat ex ullamco dolore excepteur excepteur labore laborum sunt ipsum proident magna ex voluptate laborum voluptate sint proident eu reprehenderit non excepteur quis eiusmod." + }, + { + "id": "b3917466-aa51-4293-9d5b-120b0ce6635c", + "categoryId": "bea49ee0-26da-46ad-97be-116cd7ab416d", + "question": "Rating or review removal policy", + "answer": "Ipsum officia mollit qui laboris sunt amet aliquip cupidatat minim non elit commodo eiusmod labore mollit pariatur aute reprehenderit ullamco occaecat enim pariatur aute amet occaecat incididunt irure ad ut.\n\nIncididunt cupidatat pariatur magna sint sit culpa ad cupidatat cillum exercitation consequat minim pariatur consectetur aliqua non adipisicing magna ad nulla ea do est nostrud eu aute id occaecat ut." + }, + { + "id": "2f2fb472-24d4-4a00-aa80-d513fa6c059c", + "categoryId": "bea49ee0-26da-46ad-97be-116cd7ab416d", + "question": "Purchasing supported and unsupported items", + "answer": "Dolor cupidatat do qui in tempor dolor magna magna ut dolor est aute veniam consectetur enim sunt sunt duis magna magna aliquip id reprehenderit dolor in veniam ullamco incididunt occaecat.\n\nId duis pariatur anim cillum est sint non veniam voluptate deserunt anim nostrud duis voluptate occaecat elit ut veniam voluptate do qui est ad velit irure sint lorem ullamco aliqua." + }, + { + "id": "2fffd148-7644-466d-8737-7dde88c54154", + "categoryId": "bea49ee0-26da-46ad-97be-116cd7ab416d", + "question": "I haven't received a response from the author", + "answer": "Velit commodo pariatur ullamco elit sunt dolor quis irure amet tempor laboris labore tempor nisi consectetur ea proident dolore culpa nostrud esse amet commodo do esse laboris laboris in magna.\n\nAute officia labore minim laborum irure cupidatat occaecat laborum ex labore ipsum aliqua cillum do exercitation esse et veniam excepteur mollit incididunt ut qui irure culpa qui deserunt nostrud tempor." + }, + { + "id": "24a1034e-b4d6-4a86-a1ea-90516e87e810", + "categoryId": "bea49ee0-26da-46ad-97be-116cd7ab416d", + "question": "Responding to requests outside of support", + "answer": "Exercitation eu in officia lorem commodo pariatur pariatur nisi consectetur qui elit in aliquip et ullamco duis nostrud aute laborum laborum est dolor non qui amet deserunt ex et aliquip.\n\nProident consectetur eu amet minim labore anim ad non aute duis eiusmod sit ad elit magna do aliquip aliqua laborum dolor laboris ea irure duis mollit fugiat tempor eu est." + } + ] + }, + "help_center_faq_categories": { + "value": [ + { + "id": "28924eab-97cc-465a-ba21-f232bb95843f", + "slug": "most-asked", + "title": "Most asked" + }, + { + "id": "395b0d41-b9a8-4cd6-8b5c-f07855e82d62", + "slug": "general-inquiries", + "title": "General inquiries" + }, + { + "id": "b388a87f-bfbb-44d0-800c-0ddbce2a5d22", + "slug": "licenses", + "title": "Licenses" + }, + { + "id": "71c34043-d89d-4aca-951d-8606c3943c43", + "slug": "payments", + "title": "Payments" + }, + { + "id": "bea49ee0-26da-46ad-97be-116cd7ab416d", + "slug": "support", + "title": "Support" + } + ] + }, + "help_center_guides": { + "value": [ + { + "id": "a008ffa3-7b3f-43be-8a8f-dbf5272ed2dd", + "categoryId": "0ee72de7-49c0-4880-9e89-b72a4edd6a81", + "slug": "what-is-this-app", + "title": "What is this app?", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "7643d388-12ab-4025-a2f1-5045ac7b1c4c", + "categoryId": "0ee72de7-49c0-4880-9e89-b72a4edd6a81", + "slug": "start-using-the-app", + "title": "Start using the app", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "1fecee67-c4b4-413a-b0f2-949dcab73249", + "categoryId": "0ee72de7-49c0-4880-9e89-b72a4edd6a81", + "slug": "signing-in-to-the-dashboard", + "title": "Signing in to the dashboard", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "d2e2ea8f-5298-4ba2-898b-afc60c064bba", + "categoryId": "0ee72de7-49c0-4880-9e89-b72a4edd6a81", + "slug": "navigating-within-the-app", + "title": "Navigating within the app", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "f2592886-11b8-4b56-baab-96802c2ed93e", + "categoryId": "07b8421f-20bf-45b6-90ee-169ebe3a5bcc", + "slug": "creating-a-project", + "title": "Creating a project", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "9ec3f4b9-a355-4f57-9e93-efa8611cc1c9", + "categoryId": "07b8421f-20bf-45b6-90ee-169ebe3a5bcc", + "slug": "renaming-a-project", + "title": "Renaming a project", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "1bc6e7f9-b046-4f4f-9b18-741c9d5429f6", + "categoryId": "07b8421f-20bf-45b6-90ee-169ebe3a5bcc", + "slug": "displaying-a-project", + "title": "Displaying a project", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "a005d5f1-938d-45c5-8ed4-d0cf8d02e533", + "categoryId": "07b8421f-20bf-45b6-90ee-169ebe3a5bcc", + "slug": "deleting-a-project", + "title": "Deleting a project", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "43837279-dce2-4dc0-beac-30b5ba829f14", + "categoryId": "07b8421f-20bf-45b6-90ee-169ebe3a5bcc", + "slug": "changing-the-visibility-of-a-project", + "title": "Changing the visibility of a project", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "4cf5a435-eaa0-463c-8d2b-efde193c7fb3", + "categoryId": "07b8421f-20bf-45b6-90ee-169ebe3a5bcc", + "slug": "adding-media-to-a-project", + "title": "Adding media to a project", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "cd3fb87e-e138-4721-9e29-a5c751bfd949", + "categoryId": "07b8421f-20bf-45b6-90ee-169ebe3a5bcc", + "slug": "removing-a-media-from-a-project", + "title": "Removing a media from a project", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "f26205c6-882e-4713-b067-c73758b45551", + "categoryId": "07b8421f-20bf-45b6-90ee-169ebe3a5bcc", + "slug": "cropping-a-media", + "title": "Cropping a media", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "1cbdeaeb-bbf1-4d04-b43d-f37b55e6a229", + "categoryId": "c88a1f54-360a-4b9b-a54b-2f92b7a1f63b", + "slug": "general-settings", + "title": "General settings", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "98de7d4a-2ca2-4d47-bbe6-083ed26467db", + "categoryId": "c88a1f54-360a-4b9b-a54b-2f92b7a1f63b", + "slug": "project-settings", + "title": "Project settings", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "145f497c-1fdb-47b5-a6c1-31f856403571", + "categoryId": "c88a1f54-360a-4b9b-a54b-2f92b7a1f63b", + "slug": "media-settings", + "title": "Media settings", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "0a007f59-a5ea-4875-991d-f22d6fd69898", + "categoryId": "c88a1f54-360a-4b9b-a54b-2f92b7a1f63b", + "slug": "domain-settings", + "title": "Domain settings", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "4707c8eb-31f9-415c-bd07-86f226c75feb", + "categoryId": "c88a1f54-360a-4b9b-a54b-2f92b7a1f63b", + "slug": "privacy-settings", + "title": "Privacy settings", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "c771bf0a-1e0c-4b6d-af7e-189e10cc6fb8", + "categoryId": "7b25b38c-1ab3-4474-8569-65b3ea232add", + "slug": "subscriptions", + "title": "Subscriptions", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "3d7150d2-feb3-4f20-bd3f-8e525cef77a4", + "categoryId": "7b25b38c-1ab3-4474-8569-65b3ea232add", + "slug": "discounts", + "title": "Discounts", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "79239bc4-4fb5-428b-b30d-62c5289b061d", + "categoryId": "7b25b38c-1ab3-4474-8569-65b3ea232add", + "slug": "payment-methods", + "title": "Payment methods", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "8d68c5e6-5404-450c-9d5f-d9800c164041", + "categoryId": "7b25b38c-1ab3-4474-8569-65b3ea232add", + "slug": "overdue-payments", + "title": "Overdue payments", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "60df0d4c-dda1-439c-bd44-179c57a7597d", + "categoryId": "41fdf071-aec4-49de-9dd4-b4f746596928", + "slug": "changing-your-username", + "title": "Changing your username", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "0a9c3321-1db3-42bc-92b6-7e257368123e", + "categoryId": "41fdf071-aec4-49de-9dd4-b4f746596928", + "slug": "changing-your-email", + "title": "Changing your email", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "80ba5106-5f9c-4ed7-b8f3-8544035e3095", + "categoryId": "41fdf071-aec4-49de-9dd4-b4f746596928", + "slug": "changing-your-password", + "title": "Changing your password", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "db2e97a6-d657-4e9d-9b6c-5f213ea3301c", + "categoryId": "41fdf071-aec4-49de-9dd4-b4f746596928", + "slug": "closing-your-account", + "title": "Closing your account", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "3374c887-2fb7-4223-9f40-7f2cbbf76795", + "categoryId": "41fdf071-aec4-49de-9dd4-b4f746596928", + "slug": "account-limits", + "title": "Account limits", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + }, + { + "id": "cc65f92a-7d46-4557-b15b-6f8f59a60576", + "categoryId": "41fdf071-aec4-49de-9dd4-b4f746596928", + "slug": "two-factor-authentication", + "title": "Two factor authentication", + "subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt" + } + ] + }, + "help_center_guide_categories": { + "value": [ + { + "id": "0ee72de7-49c0-4880-9e89-b72a4edd6a81", + "slug": "getting-started", + "title": "Getting Started" + }, + { + "id": "07b8421f-20bf-45b6-90ee-169ebe3a5bcc", + "slug": "projects", + "title": "Projects" + }, + { + "id": "c88a1f54-360a-4b9b-a54b-2f92b7a1f63b", + "slug": "settings", + "title": "Settings" + }, + { + "id": "7b25b38c-1ab3-4474-8569-65b3ea232add", + "slug": "payments", + "title": "Payments" + }, + { + "id": "41fdf071-aec4-49de-9dd4-b4f746596928", + "slug": "your-account", + "title": "Your Account" + } + ] + }, + "help_center_guide_content": { + "value": "

Header Level 2

\n

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis.

\n

Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur vitae sagittis odio. Suspendisse ullamcorper nunc non pellentesque laoreet. Curabitur eu tortor id quam pretium mattis. Proin ut quam velit.

\n

Header Level 3

\n

Nullam sagittis nulla in diam finibus, sed pharetra velit vestibulum. Suspendisse euismod in urna eu posuere.

\n

Header Level 4

\n

Blockquote. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus magna. Cras in mi at felis aliquet congue. Ut a est eget ligula molestie gravida. Curabitur massa. Donec eleifend, libero at sagittis mollis, tellus est malesuada tellus, at luctus turpis elit sit amet quam. Vivamus pretium ornare est.

Brian Hughes
\n
  1. Ordered list
  2. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
  3. Aliquam tincidunt mauris eu risus.
\n
Header Level 5
\n
  • Unordered list
  • Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
  • Aliquam tincidunt mauris eu risus.
\n
Header Level 6
\n
Definition list
Quisque sit amet risus enim. Aliquam sit amet interdum justo, at ultricies sapien. Suspendisse et semper urna, in gravida eros. Quisque id nibh iaculis, euismod urna sed, egestas nisi. Donec eros metus, congue a imperdiet feugiat, sagittis nec ipsum. Quisque dapibus mollis felis non tristique.
\n
Definition list
Ut auctor, metus sed dapibus tempus, urna diam auctor odio, in malesuada odio risus vitae nisi. Etiam blandit ante urna, vitae placerat massa mollis in. Duis nec urna ac purus semper dictum ut eget justo. Aenean non sagittis augue. Sed venenatis rhoncus enim eget ornare. Donec viverra sed felis at venenatis. Mauris aliquam fringilla nulla, sit amet congue felis dignissim at.
" + }, + "notes_notes": { + "value": [ + { + "id": "8f011ac5-b71c-4cd7-a317-857dcd7d85e0", + "title": "", + "content": "Find a new company name", + "tasks": [], + "image": null, + "reminder": null, + "labels": [ + "e2f749f5-41ed-49d0-a92a-1c83d879e371" + ], + "archived": false, + "createdAt": "2022-10-13T07:19:08.245Z", + "updatedAt": null + }, + { + "id": "ced0a1ce-051d-41a3-b080-e2161e4ae621", + "title": "", + "content": "Send the photos of last summer to John", + "tasks": [], + "image": "assets/images/cards/14-640x480.jpg", + "reminder": null, + "labels": [ + "bbc73458-940b-421c-8d5f-8dcd23a9b0d6", + "b1cde9ee-e54d-4142-ad8b-cf55dafc9528" + ], + "archived": false, + "createdAt": "2022-10-31T12:37:08.245Z", + "updatedAt": null + }, + { + "id": "d3ac02a9-86e4-4187-bbd7-2c965518b3a3", + "title": "", + "content": "Update the design of the theme", + "tasks": [], + "image": null, + "reminder": null, + "labels": [ + "6c288794-47eb-4605-8bdf-785b61a449d3" + ], + "archived": false, + "createdAt": "2022-11-06T16:27:08.245Z", + "updatedAt": "2022-11-30T12:36:08.245Z" + }, + { + "id": "89861bd4-0144-4bb4-8b39-332ca10371d5", + "title": "", + "content": "Theming support for all apps", + "tasks": [], + "image": null, + "reminder": "2022-03-10T09:34:08.245Z", + "labels": [ + "e2f749f5-41ed-49d0-a92a-1c83d879e371" + ], + "archived": false, + "createdAt": "2022-11-21T09:34:08.245Z", + "updatedAt": null + }, + { + "id": "ffd20f3c-2d43-4c6b-8021-278032fc9e92", + "title": "Gift Ideas", + "content": "Stephanie's birthday is coming and I need to pick a present for her. Take a look at the below list and buy one of them (or all of them)", + "tasks": [ + { + "id": "330a924f-fb51-48f6-a374-1532b1dd353d", + "content": "Scarf", + "completed": false + }, + { + "id": "781855a6-2ad2-4df4-b0af-c3cb5f302b40", + "content": "A new bike helmet", + "completed": true + }, + { + "id": "bcb8923b-33cd-42c2-9203-170994fa24f5", + "content": "Necklace", + "completed": false + }, + { + "id": "726bdf6e-5cd7-408a-9a4f-0d7bb98c1c4b", + "content": "Flowers", + "completed": false + } + ], + "image": null, + "reminder": null, + "labels": [ + "f47c92e5-20b9-44d9-917f-9ff4ad25dfd0" + ], + "archived": false, + "createdAt": "2022-12-03T13:04:08.245Z", + "updatedAt": null + }, + { + "id": "71d223bb-abab-4183-8919-cd3600a950b4", + "title": "Shopping list", + "content": "", + "tasks": [ + { + "id": "e3cbc986-641c-4448-bc26-7ecfa0549c22", + "content": "Bread", + "completed": true + }, + { + "id": "34013111-ab2c-4b2f-9352-d2ae282f57d3", + "content": "Milk", + "completed": false + }, + { + "id": "0fbdea82-cc79-4433-8ee4-54fd542c380d", + "content": "Onions", + "completed": false + }, + { + "id": "66490222-743e-4262-ac91-773fcd98a237", + "content": "Coffee", + "completed": true + }, + { + "id": "ab367215-d06a-48b0-a7b8-e161a63b07bd", + "content": "Toilet Paper", + "completed": true + } + ], + "image": null, + "reminder": "2022-12-15T07:44:08.245Z", + "labels": [ + "b1cde9ee-e54d-4142-ad8b-cf55dafc9528" + ], + "archived": false, + "createdAt": "2022-12-15T07:44:08.245Z", + "updatedAt": null + }, + { + "id": "11fbeb98-ae5e-41ad-bed6-330886fd7906", + "title": "Keynote Schedule", + "content": "", + "tasks": [ + { + "id": "2711bac1-7d8a-443a-a4fe-506ef51d3fcb", + "content": "Breakfast", + "completed": true + }, + { + "id": "e3a2d675-a3e5-4cef-9205-feeccaf949d7", + "content": "Opening ceremony", + "completed": true + }, + { + "id": "7a721b6d-9d85-48e0-b6c3-f927079af582", + "content": "Talk 1: How we did it!", + "completed": true + }, + { + "id": "bdb4d5cd-5bb8-45e2-9186-abfd8307e429", + "content": "Talk 2: How can you do it!", + "completed": false + }, + { + "id": "c8293bb4-8ab4-4310-bbc2-52ecf8ec0c54", + "content": "Lunch break", + "completed": false + } + ], + "image": null, + "reminder": "2022-01-05T08:27:08.245Z", + "labels": [ + "b1cde9ee-e54d-4142-ad8b-cf55dafc9528", + "e2f749f5-41ed-49d0-a92a-1c83d879e371" + ], + "archived": false, + "createdAt": "2022-12-26T08:27:08.245Z", + "updatedAt": null + }, + { + "id": "d46dee8b-8761-4b6d-a1df-449d6e6feb6a", + "title": "", + "content": "Organize the dad's surprise retirement party", + "tasks": [], + "image": null, + "reminder": "2022-12-25T11:56:08.245Z", + "labels": [ + "f47c92e5-20b9-44d9-917f-9ff4ad25dfd0" + ], + "archived": false, + "createdAt": "2022-12-30T11:56:08.245Z", + "updatedAt": null + }, + { + "id": "6bc9f002-1675-417c-93c4-308fba39023e", + "title": "Plan the road trip", + "content": "", + "tasks": [], + "image": "assets/images/cards/17-640x480.jpg", + "reminder": null, + "labels": [ + "2dc11344-3507-48e0-83d6-1c047107f052", + "b1cde9ee-e54d-4142-ad8b-cf55dafc9528" + ], + "archived": false, + "createdAt": "2022-01-04T06:32:08.245Z", + "updatedAt": "2022-01-07T14:06:08.245Z" + }, + { + "id": "15188348-78aa-4ed6-b5c2-028a214ba987", + "title": "Office Address", + "content": "933 8th Street Stamford, CT 06902", + "tasks": [], + "image": null, + "reminder": null, + "labels": [ + "e2f749f5-41ed-49d0-a92a-1c83d879e371" + ], + "archived": false, + "createdAt": "2022-01-07T17:05:08.245Z", + "updatedAt": null + }, + { + "id": "1dbfc685-1a0a-4070-9ca7-ed896c523037", + "title": "Tasks", + "content": "", + "tasks": [ + { + "id": "004638bf-3ee6-47a5-891c-3be7b9f3df09", + "content": "Wash the dishes", + "completed": true + }, + { + "id": "86e6820b-1ae3-4c14-a13e-35605a0d654b", + "content": "Walk the dog", + "completed": false + } + ], + "image": null, + "reminder": "2022-01-17T10:43:08.245Z", + "labels": [ + "bbc73458-940b-421c-8d5f-8dcd23a9b0d6" + ], + "archived": false, + "createdAt": "2022-01-12T10:43:08.245Z", + "updatedAt": null + }, + { + "id": "49548409-90a3-44d4-9a9a-f5af75aa9a66", + "title": "", + "content": "Dinner with parents", + "tasks": [], + "image": null, + "reminder": null, + "labels": [ + "f47c92e5-20b9-44d9-917f-9ff4ad25dfd0", + "6c288794-47eb-4605-8bdf-785b61a449d3" + ], + "archived": false, + "createdAt": "2022-01-17T04:12:08.245Z", + "updatedAt": null + }, + { + "id": "c6d13a35-500d-4491-a3f3-6ca05d6632d3", + "title": "", + "content": "Re-fill the medicine cabinet", + "tasks": [], + "image": null, + "reminder": null, + "labels": [ + "bbc73458-940b-421c-8d5f-8dcd23a9b0d6", + "6c288794-47eb-4605-8bdf-785b61a449d3" + ], + "archived": true, + "createdAt": "2022-10-11T14:14:08.245Z", + "updatedAt": null + }, + { + "id": "c6d13a35-500d-4491-a3f3-6ca05d6632d3", + "title": "", + "content": "Update the icons pack", + "tasks": [], + "image": null, + "reminder": null, + "labels": [ + "e2f749f5-41ed-49d0-a92a-1c83d879e371" + ], + "archived": true, + "createdAt": "2022-10-26T07:29:08.245Z", + "updatedAt": null + }, + { + "id": "46214383-f8e7-44da-aa2e-0b685e0c5027", + "title": "Team Meeting", + "content": "Talk about the future of the web apps", + "tasks": [], + "image": null, + "reminder": null, + "labels": [ + "e2f749f5-41ed-49d0-a92a-1c83d879e371", + "b1cde9ee-e54d-4142-ad8b-cf55dafc9528" + ], + "archived": true, + "createdAt": "2022-11-11T12:30:08.245Z", + "updatedAt": null + } + ] + }, + "notes_labels": { + "value": [ + { + "id": "f47c92e5-20b9-44d9-917f-9ff4ad25dfd0", + "title": "Family" + }, + { + "id": "e2f749f5-41ed-49d0-a92a-1c83d879e371", + "title": "Work" + }, + { + "id": "b1cde9ee-e54d-4142-ad8b-cf55dafc9528", + "title": "Tasks" + }, + { + "id": "6c288794-47eb-4605-8bdf-785b61a449d3", + "title": "Priority" + }, + { + "id": "bbc73458-940b-421c-8d5f-8dcd23a9b0d6", + "title": "Personal" + }, + { + "id": "2dc11344-3507-48e0-83d6-1c047107f052", + "title": "Friends" + } + ] + }, + "scrumboard_boards": { + "value": [ + { + "id": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "title": "Admin Dashboard", + "description": "Roadmap for the new project", + "icon": "heroicons-outline:template", + "lastActivity": "2022-01-18T21:00:00.000Z", + "members": [ + "319ecb5b-f99c-4ee4-81b2-3aeffd1d4735", + "5bf7ed5b-8b04-46b7-b364-005958b7d82e", + "23a47d2c-c6cb-40cc-af87-e946a9df5028", + "6726643d-e8dc-42fa-83a6-b4ec06921a6b", + "6f6a1c34-390b-4b2e-97c8-ff0e0d787839" + ], + "settings": { + "subscribed": true, + "cardCoverImages": true + }, + "lists": [ + { + "id": "a2df7786-519c-485a-a85f-c09a61cc5f37", + "cards": [ + "ed58add1-45a7-41db-887d-3ca7ee7f2719", + "e74e66e9-fe0f-441e-a8ce-28ed6eccc48d", + "cd6897cb-acfd-4016-8b53-3f66a5b5fc68", + "6da8747f-b474-4c9a-9eba-5ef212285500" + ] + }, + { + "id": "83ca2a34-65af-49c0-a42e-94a34003fcf2", + "cards": [ + "94fb1dee-dd83-4cca-acdd-02e96d3cc4f1", + "fc16f7d8-957d-43ed-ba85-20f99b5ce011", + "cd7f01c5-a941-4076-8cef-37da0354e643" + ] + }, + { + "id": "a85ea483-f8f7-42d9-a314-3fed6aac22ab", + "cards": [ + "c0b32f1f-64ec-4f8d-8b11-a8dc809df331" + ] + }, + { + "id": "34cbef38-5687-4813-bd66-141a6df6d832", + "cards": [ + "532c2747-be79-464a-9897-6a682bf22b64", + "1d908efe-c830-476e-9e87-d06e30d89bc2", + "b1da11ed-7896-4826-962d-4b7b718896d4", + "3b7f3ceb-107f-42bc-a204-c268c9a56cb4" + ] + } + ] + }, + { + "id": "0168b519-3dab-4b46-b2ea-0e678e38a583", + "title": "Weekly Planning", + "description": "Job related tasks for the week", + "icon": "heroicons-outline:calendar", + "lastActivity": "2022-01-17T21:00:00.000Z", + "members": [ + "9c510cf3-460d-4a8c-b3be-bcc3db578c08", + "baa88231-0ee6-4028-96d5-7f187e0f4cd5", + "18bb18f3-ea7d-4465-8913-e8c9adf6f568" + ], + "settings": { + "subscribed": true, + "cardCoverImages": true + }, + "lists": [] + }, + { + "id": "bc7db965-3c4f-4233-abf5-69bd70c3c175", + "title": "Personal Tasks", + "description": "Personal tasks around the house", + "icon": "heroicons-outline:home", + "lastActivity": "2022-01-12T21:00:00.000Z", + "members": [ + "6f6a1c34-390b-4b2e-97c8-ff0e0d787839" + ], + "settings": { + "subscribed": true, + "cardCoverImages": true + }, + "lists": [] + } + ] + }, + "scrumboard_members": { + "value": [ + { + "id": "6f6a1c34-390b-4b2e-97c8-ff0e0d787839", + "name": "Angeline Vinson", + "avatar": "assets/images/avatars/female-01.jpg" + }, + { + "id": "4ce4be48-c8c0-468d-9df8-ddfda14cdb37", + "name": "Roseann Greer", + "avatar": "assets/images/avatars/female-02.jpg" + }, + { + "id": "9c510cf3-460d-4a8c-b3be-bcc3db578c08", + "name": "Lorraine Barnett", + "avatar": "assets/images/avatars/female-03.jpg" + }, + { + "id": "7ec887d9-b01a-4057-b5dc-aaed18637cc1", + "name": "Middleton Bradford", + "avatar": "assets/images/avatars/male-01.jpg" + }, + { + "id": "74975a82-addb-427b-9b43-4d2e03331b68", + "name": "Sue Hays", + "avatar": "assets/images/avatars/female-04.jpg" + }, + { + "id": "18bb18f3-ea7d-4465-8913-e8c9adf6f568", + "name": "Keith Neal", + "avatar": "assets/images/avatars/male-02.jpg" + }, + { + "id": "baa88231-0ee6-4028-96d5-7f187e0f4cd5", + "name": "Wilkins Gilmore", + "avatar": "assets/images/avatars/male-03.jpg" + }, + { + "id": "0d1eb062-13d5-4286-b8d4-e0bea15f3d56", + "name": "Baldwin Stein", + "avatar": "assets/images/avatars/male-04.jpg" + }, + { + "id": "5bf7ed5b-8b04-46b7-b364-005958b7d82e", + "name": "Bobbie Cohen", + "avatar": "assets/images/avatars/female-05.jpg" + }, + { + "id": "93b1a72b-e2db-4f77-82d6-272047433508", + "name": "Melody Peters", + "avatar": "assets/images/avatars/female-06.jpg" + }, + { + "id": "d1f612e6-3e3b-481f-a8a9-f917e243b06e", + "name": "Marquez Ryan", + "avatar": "assets/images/avatars/male-05.jpg" + }, + { + "id": "79ebb9ee-1e57-4706-810c-03edaec8f56d", + "name": "Roberta Briggs", + "avatar": "assets/images/avatars/female-07.jpg" + }, + { + "id": "6726643d-e8dc-42fa-83a6-b4ec06921a6b", + "name": "Robbie Buckley", + "avatar": "assets/images/avatars/female-08.jpg" + }, + { + "id": "8af617d7-898e-4992-beda-d5ac1d7ceda4", + "name": "Garcia Whitney", + "avatar": "assets/images/avatars/male-06.jpg" + }, + { + "id": "bcff44c4-9943-4adc-9049-08b1d922a658", + "name": "Spencer Pate", + "avatar": "assets/images/avatars/male-07.jpg" + }, + { + "id": "54160ca2-29c9-4475-88a1-31a9307ad913", + "name": "Monica Mcdaniel", + "avatar": "assets/images/avatars/female-09.jpg" + }, + { + "id": "51286603-3a43-444e-9242-f51fe57d5363", + "name": "Mcmillan Durham", + "avatar": "assets/images/avatars/male-08.jpg" + }, + { + "id": "319ecb5b-f99c-4ee4-81b2-3aeffd1d4735", + "name": "Jeoine Hebert", + "avatar": "assets/images/avatars/female-10.jpg" + }, + { + "id": "fe0fec0d-002b-406f-87ab-47eb87ba577c", + "name": "Susanna Kline", + "avatar": "assets/images/avatars/female-11.jpg" + }, + { + "id": "23a47d2c-c6cb-40cc-af87-e946a9df5028", + "name": "Suzette Singleton", + "avatar": "assets/images/avatars/female-12.jpg" + } + ] + }, + "scrumboard_lists": { + "value": [ + { + "id": "a2df7786-519c-485a-a85f-c09a61cc5f37", + "boardId": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "title": "To do" + }, + { + "id": "83ca2a34-65af-49c0-a42e-94a34003fcf2", + "boardId": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "title": "In progress" + }, + { + "id": "a85ea483-f8f7-42d9-a314-3fed6aac22ab", + "boardId": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "title": "In review" + }, + { + "id": "34cbef38-5687-4813-bd66-141a6df6d832", + "boardId": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "title": "Completed" + } + ] + }, + "scrumboard_cards": { + "value": [ + { + "id": "ed58add1-45a7-41db-887d-3ca7ee7f2719", + "boardId": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "listId": "a2df7786-519c-485a-a85f-c09a61cc5f37", + "title": "Do a research about most needed admin applications", + "description": "Current application doesn't support Node.js 7 and above.", + "labels": [ + "e0175175-2784-48f1-a519-a1d2e397c9b3" + ], + "dueDate": 1643026537, + "attachmentCoverId": "67027cahbe3b52ecf2dc631c", + "memberIds": [ + "5bf7ed5b-8b04-46b7-b364-005958b7d82e", + "d1f612e6-3e3b-481f-a8a9-f917e243b06e", + "fe0fec0d-002b-406f-87ab-47eb87ba577c", + "23a47d2c-c6cb-40cc-af87-e946a9df5028", + "6726643d-e8dc-42fa-83a6-b4ec06921a6b", + "0d1eb062-13d5-4286-b8d4-e0bea15f3d56" + ], + "attachments": [ + { + "id": "67027cahbe3b52ecf2dc631c", + "name": "mail.jpg", + "src": "assets/images/apps/scrumboard/mail.jpg", + "time": 1642766617, + "type": "image" + }, + { + "id": "56027cfcbe1b72ecf1fc452a", + "name": "calendar.jpg", + "src": "assets/images/apps/scrumboard/calendar.jpg", + "time": 1642766617, + "type": "image" + } + ], + "subscribed": true, + "checklists": [ + { + "id": "63021cfdbe1x72wcf1fc451v", + "name": "Checklist", + "checkItems": [ + { + "id": 1, + "name": "Implement a calendar library", + "checked": false + }, + { + "id": 2, + "name": "Replace event colors with Material Design colors", + "checked": true + }, + { + "id": 3, + "name": "Replace icons with Material Design icons", + "checked": false + }, + { + "id": 4, + "name": "Use date-fns", + "checked": false + } + ] + }, + { + "name": "Checklist 2", + "id": "74031cfdbe1x72wcz1dc166z", + "checkItems": [ + { + "id": 1, + "name": "Replace event colors with Material Design colors", + "checked": true + }, + { + "id": 2, + "name": "Replace icons with Material Design icons", + "checked": false + }, + { + "id": 3, + "name": "Use date-fns", + "checked": false + } + ] + } + ], + "activities": [ + { + "id": "1", + "type": "comment", + "idMember": "6726643d-e8dc-42fa-83a6-b4ec06921a6b", + "message": "AngularCLI could be a nice alternative.", + "time": 1642766617 + } + ] + }, + { + "id": "e74e66e9-fe0f-441e-a8ce-28ed6eccc48d", + "boardId": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "listId": "a2df7786-519c-485a-a85f-c09a61cc5f37", + "title": "Showcase all of the available bits on the card", + "description": "Example that showcase all of the available bits on the card with a fairly long title compared to other cards. Example that showcase all of the available bits on the card with a fairly long title compared to other cards.", + "labels": [ + "e0175175-2784-48f1-a519-a1d2e397c9b3", + "51779701-818a-4a53-bc16-137c3bd7a564", + "e8364d69-9595-46ce-a0f9-ce428632a0ac", + "caff9c9b-a198-4564-b1f4-8b3df1d345bb", + "f9eeb436-13a3-4208-a239-0d555960a567" + ], + "dueDate": null, + "attachmentCoverId": "", + "memberIds": [ + "fe0fec0d-002b-406f-87ab-47eb87ba577c", + "23a47d2c-c6cb-40cc-af87-e946a9df5028", + "6726643d-e8dc-42fa-83a6-b4ec06921a6b" + ], + "attachments": [ + { + "id": "67027cahbe3b52ecf2dc631c", + "name": "mail.jpg", + "src": "assets/images/apps/scrumboard/mail.jpg", + "time": 1642766617, + "type": "image" + }, + { + "id": "56027cfcbe1b72ecf1fc452a", + "name": "calendar.jpg", + "src": "assets/images/apps/scrumboard/calendar.jpg", + "time": 1642766617, + "type": "image" + } + ], + "subscribed": false, + "checklists": [], + "activities": [ + { + "id": "1", + "type": "comment", + "idMember": "0d1eb062-13d5-4286-b8d4-e0bea15f3d56", + "message": "We should be able to add date-fns without any problems", + "time": 1642766737 + }, + { + "id": "2", + "type": "comment", + "idMember": "d1f612e6-3e3b-481f-a8a9-f917e243b06e", + "message": "I added a link for a page that might help us deciding the colors", + "time": 1642766137 + }, + { + "id": "3", + "type": "attachment", + "idMember": "8af617d7-898e-4992-beda-d5ac1d7ceda4", + "message": "attached a link", + "time": 1642764637 + } + ] + }, + { + "id": "cd6897cb-acfd-4016-8b53-3f66a5b5fc68", + "boardId": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "listId": "a2df7786-519c-485a-a85f-c09a61cc5f37", + "title": "Implement the Project dashboard", + "description": "", + "labels": [ + "caff9c9b-a198-4564-b1f4-8b3df1d345bb" + ], + "dueDate": 1643026537, + "attachmentCoverId": "", + "memberIds": [], + "attachments": [ + { + "id": "67027cahbe3b52ecf2dc631c", + "name": "mail.jpg", + "src": "assets/images/apps/scrumboard/mail.jpg", + "time": 1642766617, + "type": "image" + }, + { + "id": "56027cfcbe1b72ecf1fc452a", + "name": "calendar.jpg", + "src": "assets/images/apps/scrumboard/calendar.jpg", + "time": 1642766617, + "type": "image" + } + ], + "subscribed": false, + "checklists": [], + "activities": [ + { + "id": "1", + "type": "comment", + "idMember": "6726643d-e8dc-42fa-83a6-b4ec06921a6b", + "message": "AngularCLI could be a nice alternative.", + "time": 1642766617 + } + ] + }, + { + "id": "6da8747f-b474-4c9a-9eba-5ef212285500", + "boardId": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "listId": "a2df7786-519c-485a-a85f-c09a61cc5f37", + "title": "Implement the Analytics dashboard", + "description": "", + "labels": [ + "caff9c9b-a198-4564-b1f4-8b3df1d345bb" + ], + "dueDate": 1643026537, + "attachmentCoverId": "", + "memberIds": [ + "9c510cf3-460d-4a8c-b3be-bcc3db578c08", + "baa88231-0ee6-4028-96d5-7f187e0f4cd5", + "18bb18f3-ea7d-4465-8913-e8c9adf6f568" + ], + "attachments": [ + { + "id": "67027cahbe3b52ecf2dc631c", + "name": "mail.jpg", + "src": "assets/images/apps/scrumboard/mail.jpg", + "time": 1642766617, + "type": "image" + }, + { + "id": "56027cfcbe1b72ecf1fc452a", + "name": "calendar.jpg", + "src": "assets/images/apps/scrumboard/calendar.jpg", + "time": 1642766617, + "type": "image" + } + ], + "subscribed": false, + "checklists": [], + "activities": [ + { + "id": "1", + "type": "comment", + "idMember": "6726643d-e8dc-42fa-83a6-b4ec06921a6b", + "message": "AngularCLI could be a nice alternative.", + "time": 1642766617 + } + ] + }, + { + "id": "94fb1dee-dd83-4cca-acdd-02e96d3cc4f1", + "boardId": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "listId": "83ca2a34-65af-49c0-a42e-94a34003fcf2", + "title": "Analytics dashboard design", + "description": "", + "labels": [ + "e8364d69-9595-46ce-a0f9-ce428632a0ac" + ], + "dueDate": null, + "attachmentCoverId": "", + "memberIds": [ + "6726643d-e8dc-42fa-83a6-b4ec06921a6b", + "0d1eb062-13d5-4286-b8d4-e0bea15f3d56" + ], + "attachments": [ + { + "id": "67027cahbe3b52ecf2dc631c", + "name": "mail.jpg", + "src": "assets/images/apps/scrumboard/mail.jpg", + "time": 1642766617, + "type": "image" + }, + { + "id": "56027cfcbe1b72ecf1fc452a", + "name": "calendar.jpg", + "src": "assets/images/apps/scrumboard/calendar.jpg", + "time": 1642766617, + "type": "image" + } + ], + "subscribed": false, + "checklists": [ + { + "id": "dbfb.99bd0ad37dabc.e05046f0c824d.18f26bb524c96.78bebc8488634.240c0ee6a5e45.4cb872965", + "name": "Pages", + "checkItems": [ + { + "id": 1, + "name": "Login", + "checked": true + }, + { + "id": 2, + "name": "Register", + "checked": true + }, + { + "id": 3, + "name": "Lost Password", + "checked": false + }, + { + "id": 4, + "name": "Recover Password", + "checked": false + }, + { + "id": 5, + "name": "Activate Account", + "checked": false + } + ] + } + ], + "activities": [ + { + "id": "1", + "type": "comment", + "idMember": "6726643d-e8dc-42fa-83a6-b4ec06921a6b", + "message": "AngularCLI could be a nice alternative.", + "time": 1642766617 + } + ] + }, + { + "id": "fc16f7d8-957d-43ed-ba85-20f99b5ce011", + "boardId": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "listId": "83ca2a34-65af-49c0-a42e-94a34003fcf2", + "title": "Project dashboard design", + "description": "", + "labels": [ + "e8364d69-9595-46ce-a0f9-ce428632a0ac" + ], + "dueDate": null, + "attachmentCoverId": "", + "memberIds": [], + "attachments": [ + { + "id": "67027cahbe3b52ecf2dc631c", + "name": "mail.jpg", + "src": "assets/images/apps/scrumboard/mail.jpg", + "time": 1642766617, + "type": "image" + }, + { + "id": "56027cfcbe1b72ecf1fc452a", + "name": "calendar.jpg", + "src": "assets/images/apps/scrumboard/calendar.jpg", + "time": 1642766617, + "type": "image" + } + ], + "subscribed": false, + "checklists": [], + "activities": [ + { + "id": "1", + "type": "comment", + "idMember": "0d1eb062-13d5-4286-b8d4-e0bea15f3d56", + "message": "We should be able to add date-fns without any problems", + "time": 1642766737 + }, + { + "id": "2", + "type": "comment", + "idMember": "d1f612e6-3e3b-481f-a8a9-f917e243b06e", + "message": "I added a link for a page that might help us deciding the colors", + "time": 1642766137 + }, + { + "id": "3", + "type": "attachment", + "idMember": "8af617d7-898e-4992-beda-d5ac1d7ceda4", + "message": "attached a link", + "time": 1642764637 + } + ] + }, + { + "id": "c0b32f1f-64ec-4f8d-8b11-a8dc809df331", + "boardId": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "listId": "a85ea483-f8f7-42d9-a314-3fed6aac22ab", + "title": "JWT Auth implementation", + "description": "", + "labels": [ + "caff9c9b-a198-4564-b1f4-8b3df1d345bb" + ], + "dueDate": null, + "attachmentCoverId": "56027cfcbe1b72ecf1fc452a", + "memberIds": [], + "attachments": [ + { + "id": "67027cahbe3b52ecf2dc631c", + "name": "mail.jpg", + "src": "assets/images/apps/scrumboard/mail.jpg", + "time": 1642766617, + "type": "image" + }, + { + "id": "56027cfcbe1b72ecf1fc452a", + "name": "calendar.jpg", + "src": "assets/images/apps/scrumboard/calendar.jpg", + "time": 1642766617, + "type": "image" + } + ], + "subscribed": false, + "checklists": [], + "activities": [ + { + "id": "1", + "type": "comment", + "idMember": "6726643d-e8dc-42fa-83a6-b4ec06921a6b", + "message": "AngularCLI could be a nice alternative.", + "time": 1642766617 + } + ] + }, + { + "id": "532c2747-be79-464a-9897-6a682bf22b64", + "boardId": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "listId": "34cbef38-5687-4813-bd66-141a6df6d832", + "title": "Create low fidelity wireframes", + "description": "", + "labels": [], + "dueDate": null, + "attachmentCoverId": "", + "memberIds": [], + "attachments": [ + { + "id": "67027cahbe3b52ecf2dc631c", + "name": "mail.jpg", + "src": "assets/images/apps/scrumboard/mail.jpg", + "time": 1642766617, + "type": "image" + }, + { + "id": "56027cfcbe1b72ecf1fc452a", + "name": "calendar.jpg", + "src": "assets/images/apps/scrumboard/calendar.jpg", + "time": 1642766617, + "type": "image" + } + ], + "subscribed": false, + "checklists": [], + "activities": [ + { + "id": "1", + "type": "comment", + "idMember": "6726643d-e8dc-42fa-83a6-b4ec06921a6b", + "message": "AngularCLI could be a nice alternative.", + "time": 1642766617 + } + ] + }, + { + "id": "1d908efe-c830-476e-9e87-d06e30d89bc2", + "boardId": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "listId": "34cbef38-5687-4813-bd66-141a6df6d832", + "title": "Create high fidelity wireframes", + "description": "", + "labels": [], + "dueDate": 1643026537, + "attachmentCoverId": "", + "memberIds": [], + "attachments": [ + { + "id": "67027cahbe3b52ecf2dc631c", + "name": "mail.jpg", + "src": "assets/images/apps/scrumboard/mail.jpg", + "time": 1642766617, + "type": "image" + }, + { + "id": "56027cfcbe1b72ecf1fc452a", + "name": "calendar.jpg", + "src": "assets/images/apps/scrumboard/calendar.jpg", + "time": 1642766617, + "type": "image" + } + ], + "subscribed": false, + "checklists": [], + "activities": [ + { + "id": "1", + "type": "comment", + "idMember": "6726643d-e8dc-42fa-83a6-b4ec06921a6b", + "message": "AngularCLI could be a nice alternative.", + "time": 1642766617 + } + ] + }, + { + "id": "b1da11ed-7896-4826-962d-4b7b718896d4", + "boardId": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "listId": "34cbef38-5687-4813-bd66-141a6df6d832", + "title": "Collect information about most used admin layouts", + "description": "", + "labels": [ + "e0175175-2784-48f1-a519-a1d2e397c9b3" + ], + "dueDate": null, + "attachmentCoverId": "", + "memberIds": [ + "5bf7ed5b-8b04-46b7-b364-005958b7d82e", + "d1f612e6-3e3b-481f-a8a9-f917e243b06e" + ], + "attachments": [ + { + "id": "67027cahbe3b52ecf2dc631c", + "name": "mail.jpg", + "src": "assets/images/apps/scrumboard/mail.jpg", + "time": 1642766617, + "type": "image" + }, + { + "id": "56027cfcbe1b72ecf1fc452a", + "name": "calendar.jpg", + "src": "assets/images/apps/scrumboard/calendar.jpg", + "time": 1642766617, + "type": "image" + } + ], + "subscribed": false, + "checklists": [], + "activities": [ + { + "id": "1", + "type": "comment", + "idMember": "6726643d-e8dc-42fa-83a6-b4ec06921a6b", + "message": "AngularCLI could be a nice alternative.", + "time": 1642766617 + } + ] + }, + { + "id": "3b7f3ceb-107f-42bc-a204-c268c9a56cb4", + "boardId": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "listId": "34cbef38-5687-4813-bd66-141a6df6d832", + "title": "Do a research about latest UI trends", + "description": "", + "labels": [ + "e0175175-2784-48f1-a519-a1d2e397c9b3" + ], + "dueDate": null, + "attachmentCoverId": "", + "memberIds": [ + "d1f612e6-3e3b-481f-a8a9-f917e243b06e" + ], + "attachments": [ + { + "id": "67027cahbe3b52ecf2dc631c", + "name": "mail.jpg", + "src": "assets/images/apps/scrumboard/mail.jpg", + "time": 1642766617, + "type": "image" + }, + { + "id": "56027cfcbe1b72ecf1fc452a", + "name": "calendar.jpg", + "src": "assets/images/apps/scrumboard/calendar.jpg", + "time": 1642766617, + "type": "image" + } + ], + "subscribed": false, + "checklists": [ + { + "id": "6926.2b31d119e4a.889401e0ca7a0.13ad8ce2e569d.976e54e8b5d87.456afccd7e820.d6c77106a", + "name": "API Monitoring", + "checkItems": [ + { + "id": 1, + "name": "Simple dashboard design", + "checked": false + }, + { + "id": 2, + "name": "Should be able to see different time periods on the same dashboard", + "checked": true + }, + { + "id": 3, + "name": "Different colors for different clusters", + "checked": true + } + ] + }, + { + "id": "7c22.5261c7924387f.248e8b1d32205.003f7a9f501d1.1d48dcdbe8b23.8099dcc5f75a7.29a966196", + "name": "API Recovery", + "checkItems": [ + { + "id": 1, + "name": "Warning notifications to all developers", + "checked": false + }, + { + "id": 2, + "name": "Immediate recovery options attached to the notifications", + "checked": true + }, + { + "id": 3, + "name": "Backups every 6hours", + "checked": false + } + ] + } + ], + "activities": [ + { + "id": "1", + "type": "comment", + "idMember": "6726643d-e8dc-42fa-83a6-b4ec06921a6b", + "message": "AngularCLI could be a nice alternative.", + "time": 1642766617 + } + ] + }, + { + "id": "cd7f01c5-a941-4076-8cef-37da0354e643", + "boardId": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "listId": "34cbef38-5687-4813-bd66-141a6df6d832", + "title": "Learn more about UX", + "description": "", + "labels": [ + "e0175175-2784-48f1-a519-a1d2e397c9b3" + ], + "dueDate": null, + "attachmentCoverId": "", + "memberIds": [ + "5bf7ed5b-8b04-46b7-b364-005958b7d82e", + "d1f612e6-3e3b-481f-a8a9-f917e243b06e" + ], + "attachments": [ + { + "id": "67027cahbe3b52ecf2dc631c", + "name": "mail.jpg", + "src": "assets/images/apps/scrumboard/mail.jpg", + "time": 1642766617, + "type": "image" + }, + { + "id": "56027cfcbe1b72ecf1fc452a", + "name": "calendar.jpg", + "src": "assets/images/apps/scrumboard/calendar.jpg", + "time": 1642766617, + "type": "image" + } + ], + "subscribed": false, + "checklists": [], + "activities": [ + { + "id": "1", + "type": "comment", + "idMember": "6726643d-e8dc-42fa-83a6-b4ec06921a6b", + "message": "AngularCLI could be a nice alternative.", + "time": 1642766617 + } + ] + } + ] + }, + "scrumboard_labels": { + "value": [ + { + "id": "e0175175-2784-48f1-a519-a1d2e397c9b3", + "boardId": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "title": "Research" + }, + { + "id": "51779701-818a-4a53-bc16-137c3bd7a564", + "boardId": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "title": "Wireframing" + }, + { + "id": "e8364d69-9595-46ce-a0f9-ce428632a0ac", + "boardId": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "title": "Design" + }, + { + "id": "caff9c9b-a198-4564-b1f4-8b3df1d345bb", + "boardId": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "title": "Development" + }, + { + "id": "f9eeb436-13a3-4208-a239-0d555960a567", + "boardId": "2c82225f-2a6c-45d3-b18a-1132712a4234", + "title": "Bug" + } + ] + }, + "mailbox_mails": { + "value": [ + { + "id": "f9c4c091-3ac4-4df9-ac5d-aec7b07c8e3f", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-01.jpg", + "contact": "Myra Dudley " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "bcc": [ + "Julie T. " + ], + "date": "2022-01-25T17:13:22.073Z", + "subject": "Please review and sign the attached agreement", + "content": "Hi Brian,\n\nUllamco deserunt commodo esse deserunt deserunt quis eiusmod. Laborum sint excepteur non sit eiusmod sunt voluptate ipsum nisi ullamco magna. Lorem consectetur est dolor minim exercitation deserunt quis duis fugiat ipsum incididunt non. Anim aute ipsum cupidatat nisi occaecat quis sit nisi labore labore dolore do. Pariatur veniam culpa quis veniam nisi exercitation veniam ut. Quis do sint proident fugiat ad.\n\nNon id nisi commodo veniam. Veniam veniam minim ea laborum voluptate id duis deserunt. Anim ut ut amet et ullamco nulla fugiat id incididunt adipisicing excepteur amet. Ex amet eu cillum non fugiat velit dolore. Incididunt duis est eu et ex sunt consectetur cillum nisi aute proident.\n\nIncididunt excepteur laborum quis sit. Ex quis officia incididunt proident aliqua adipisicing. Irure ad in Lorem laborum deserunt nulla consequat. Pariatur excepteur exercitation cupidatat aute.\n\nCheers!\nMyra Dudley", + "attachments": [ + { + "type": "image/jpeg", + "name": "mystery-forest.jpg", + "size": 15539, + "preview": "mystery-forest_preview.jpg", + "downloadUrl": "" + }, + { + "type": "application/pdf", + "name": "montly-invoice.pdf", + "size": 243449, + "preview": "pdf", + "downloadUrl": "" + }, + { + "type": "image/jpeg", + "name": "birds-eye-sydney.jpg", + "size": 14294, + "preview": "birds-eye-sydney_preview.jpg", + "downloadUrl": "" + } + ], + "starred": true, + "important": true, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3" + ] + }, + { + "id": "c531bc01-8a9e-481b-adf8-95303a6938c5", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-01.jpg", + "contact": "Shaw Murray " + }, + "to": "me ", + "date": "2022-01-25T15:56:22.073Z", + "subject": "Delivery address confirmation", + "content": "Dear Brian,\n\nDolore consectetur est cupidatat ipsum reprehenderit anim quis veniam anim ipsum incididunt exercitation. Velit exercitation culpa eiusmod dolore labore irure. Duis esse quis elit pariatur labore occaecat esse voluptate dolore deserunt cillum irure. Aute qui nulla est exercitation qui sunt anim aliquip. Ex ad est velit laboris exercitation ea ut pariatur. Amet reprehenderit ut est id sunt commodo anim et est voluptate et.\n\nMagna aliqua incididunt non ut voluptate nulla aliqua exercitation elit consectetur cupidatat. Proident in reprehenderit occaecat laborum non eu amet id aliqua nulla dolore. Eiusmod quis adipisicing quis cupidatat labore.\n\nReprehenderit nulla ullamco est dolore ex irure sunt nostrud reprehenderit quis dolor. Tempor nostrud elit elit aute ut ut eiusmod laboris excepteur consequat ex. Velit id ex ullamco in. Ea elit Lorem Lorem aliquip amet consequat irure nisi qui cillum incididunt. Commodo aute Lorem eiusmod veniam consectetur aute eu dolore. Ea magna incididunt laboris quis quis et tempor dolore dolore ut nisi.\n\nBest Regards,\nShaw Murray", + "attachments": [], + "starred": false, + "important": false, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e" + ] + }, + { + "id": "ebc80fc3-6c56-4cae-a45a-771b15ced076", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-02.jpg", + "contact": "Sanders Beck " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2022-01-25T11:35:22.073Z", + "subject": "Insurance documents", + "content": "Hi Brian,\n\nAliquip ipsum sunt sit sunt velit velit pariatur. Nisi incididunt eiusmod consequat ut cillum eu exercitation. Enim proident nostrud aute in. Non irure nisi duis aliquip commodo proident veniam adipisicing id velit. Enim magna Lorem fugiat tempor.\n\nCommodo non nulla incididunt irure voluptate. Fugiat culpa cillum aute quis. Voluptate veniam adipisicing dolor sint. Proident eiusmod quis duis ipsum sit eu.\n\nDeserunt reprehenderit adipisicing reprehenderit ipsum. Laborum in veniam amet occaecat tempor esse enim dolore elit sit quis adipisicing. Aute occaecat eiusmod enim cupidatat sunt.\n\nBest Regards,\nSanders Beck", + "attachments": [], + "starred": false, + "important": false, + "unread": false, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [] + }, + { + "id": "981c5ffb-7c88-47a8-b60f-f16150eeae9d", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-03.jpg", + "contact": "Zimmerman Gould " + }, + "to": "me ", + "date": "2022-01-24T19:26:22.073Z", + "subject": "Previous clients and their invoices", + "content": "Dear Brian,\n\nDo aute eu dolore officia laborum id anim fugiat incididunt nulla esse proident. Veniam veniam nostrud ut nisi magna ipsum ea eiusmod esse velit id aliqua nisi irure. Amet laborum fugiat deserunt est. Quis amet veniam anim nostrud irure cillum voluptate consequat qui cupidatat minim occaecat elit enim. Ut ut incididunt cillum sit sit irure culpa. Culpa exercitation minim velit eu. Ipsum exercitation excepteur et ad do sit.\n\nVeniam cupidatat officia aliqua ad excepteur cillum laboris deserunt esse laboris adipisicing reprehenderit. Reprehenderit anim consectetur pariatur labore do in irure. Ad consequat commodo non pariatur occaecat. Eiusmod cillum non anim consequat culpa nisi. Est nulla ut sint qui deserunt anim. Excepteur qui occaecat dolore nulla occaecat cupidatat aute sit laborum magna.\n\nConsequat aliqua commodo officia excepteur. Ex consectetur elit dolor exercitation ullamco amet laboris. Deserunt nulla non proident est pariatur reprehenderit reprehenderit. Ea nisi id aliqua cillum velit tempor ipsum dolor proident cillum eiusmod et ipsum anim. Elit non quis mollit enim Lorem cupidatat et labore. Laboris cillum reprehenderit aute veniam aliqua esse officia proident deserunt. Eiusmod laboris ullamco amet consectetur amet.\n\nKind Regards,\nZimmerman Gould", + "attachments": [], + "starred": false, + "important": false, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [] + }, + { + "id": "a8d0645d-ac30-4f1a-a163-06e949120289", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-02.jpg", + "contact": "Karina Alford " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2022-01-24T17:05:22.073Z", + "subject": "Quote for a new web design project", + "content": "Hey Brian,\n\nNisi officia aliqua ex non cupidatat sint ullamco. Irure pariatur ullamco consequat ut eu anim. Ut ad elit pariatur est non sunt. Tempor dolore quis commodo dolore duis officia laboris nostrud sint. Exercitation ullamco laboris eiusmod culpa ut.\n\nAute Lorem aute occaecat dolore tempor ipsum proident fugiat deserunt non incididunt velit nulla. Dolor pariatur tempor amet qui eu exercitation. Tempor minim culpa proident nisi esse ea. Enim est fugiat aliqua aliqua aute velit laborum cupidatat irure nisi dolor deserunt aliqua.\n\nFugiat ut dolor tempor sunt aliquip dolor nostrud. Consequat incididunt ullamco cillum dolore excepteur deserunt est dolor aliquip irure do mollit officia. Consectetur cillum et non minim nisi. Esse quis sunt deserunt elit sint velit tempor et ullamco laboris officia excepteur. Veniam ad ut aliqua sunt consequat reprehenderit nostrud non in duis aute quis pariatur. Occaecat mollit anim non pariatur. Ad do ad id fugiat et culpa laborum esse cupidatat voluptate elit ut magna voluptate.\n\nBest Regards,\nKarina Alford", + "attachments": [], + "starred": false, + "important": true, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [] + }, + { + "id": "fd117ed9-1285-4aca-8c1c-5c96e732c558", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-03.jpg", + "contact": "Carla Gray " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2022-01-24T13:43:22.073Z", + "subject": "Nulla culpa consectetur aute ex eu irure incididunt aliqua cupidatat sit cillum fugiat anim ea", + "content": "Hey Brian,\n\nDo pariatur occaecat tempor duis. Aute occaecat non consequat ut occaecat sint. Cillum reprehenderit elit nisi incididunt in labore pariatur. Labore mollit pariatur nulla officia esse anim exercitation nisi commodo culpa laborum amet nisi.\n\nSunt culpa mollit nostrud excepteur adipisicing sit do. Cillum voluptate amet do sit quis aliquip ea est qui elit. Veniam exercitation sit reprehenderit labore officia in labore excepteur eiusmod exercitation.\n\nEnim nostrud est non esse reprehenderit in ea eiusmod. Duis incididunt amet aliquip dolor esse. Nostrud qui commodo in non nostrud proident enim cupidatat. Aute sunt aliqua excepteur qui occaecat nulla incididunt commodo adipisicing ipsum.\n\nKind Regards,\nCarla Gray", + "attachments": [], + "starred": false, + "important": false, + "unread": false, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [] + }, + { + "id": "a307d83b-d256-4af5-948a-148878a7eaad", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-04.jpg", + "contact": "Rice Cash " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2022-01-23T08:28:22.073Z", + "subject": "Ipsum laborum minim aute labore in", + "content": "Dear Brian,\n\nLaboris non ad et aute sint aliquip mollit voluptate velit dolore magna fugiat ex. Voluptate amet aute deserunt tempor non laboris cillum. Voluptate veniam magna sint magna proident exercitation adipisicing aute id ad tempor reprehenderit magna ullamco. Laborum Lorem anim elit aliquip ut aute minim fugiat aliquip. Eiusmod est et occaecat dolore anim laborum ullamco ipsum commodo.\n\nCommodo amet veniam nostrud mollit quis sint qui nulla elit esse excepteur ullamco esse magna. Nisi duis aute est in mollit irure enim tempor in. Mollit ipsum laboris et velit ex excepteur pariatur. Cillum veniam id ipsum magna. Laborum duis aliquip ut ipsum ad aliqua id sit pariatur consequat sit. Sit nulla nulla ullamco nulla eiusmod et in dolore sint reprehenderit cupidatat.\n\nIpsum mollit cupidatat magna occaecat labore est fugiat est fugiat fugiat nulla labore laboris. Eiusmod aute adipisicing pariatur aliquip sint enim anim in dolore enim aute culpa nulla. Minim magna enim officia ipsum elit quis do velit deserunt Lorem veniam excepteur.\n\nKind Regards,\nRice Cash", + "attachments": [ + { + "type": "image/png", + "name": "lake-of-carezza.png", + "size": 13071, + "preview": "lake-of-carrezza_preview.png", + "downloadUrl": "" + }, + { + "type": "image/jpeg", + "name": "birds-eye-sydney.jpg", + "size": 14294, + "preview": "birds-eye-sydney_preview.jpg", + "downloadUrl": "" + }, + { + "type": "image/png", + "name": "yosemite-national-park.png", + "size": 14242, + "preview": "yosemite-national-park_preview.png", + "downloadUrl": "" + } + ], + "starred": true, + "important": true, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [] + }, + { + "id": "67664fa3-3a87-4ab8-8c2c-dfd2b1de4c14", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-04.jpg", + "contact": "Elaine Ortiz " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2022-01-23T04:12:22.073Z", + "subject": "Ipsum fugiat ad deserunt cillum sunt fugiat", + "content": "Hello Brian,\n\nId Lorem laborum eiusmod eiusmod mollit magna dolore. Et commodo officia fugiat dolor aliqua proident mollit ut commodo ullamco. Sunt nulla eu dolor velit velit reprehenderit. Culpa esse veniam fugiat eiusmod id veniam sunt reprehenderit minim mollit. Esse qui ea irure pariatur eu ullamco pariatur ipsum reprehenderit proident mollit proident. Nisi fugiat ut est aliquip nulla in non dolore.\n\nCulpa irure cillum ex fugiat cupidatat eiusmod non. Qui irure velit consectetur minim eu excepteur eiusmod veniam irure ad culpa nisi. Nisi sit nostrud quis ullamco aliquip non consequat sunt reprehenderit velit dolor dolor laboris. Dolore in Lorem consectetur nostrud. Laborum cupidatat exercitation voluptate duis amet. Sunt sint minim do in commodo ipsum commodo ea qui velit deserunt qui anim fugiat.\n\nExercitation et qui consequat incididunt nisi incididunt cupidatat officia in. Sit eiusmod anim aliqua elit. Nisi mollit ut non pariatur enim fugiat sint labore velit nostrud eu. Eiusmod id laboris laboris duis enim aute ipsum in magna. Sit eiusmod amet duis commodo sint et anim ex sunt deserunt dolor incididunt. Eiusmod duis dolore dolor elit occaecat do adipisicing ullamco ex laboris aliqua adipisicing. Labore pariatur aute proident mollit elit commodo labore minim dolore non in cillum.\n\nCheers!\nElaine Ortiz", + "attachments": [], + "starred": true, + "important": true, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754" + ] + }, + { + "id": "d5913a7e-25f8-4163-bbf0-81d034163ce7", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-05.jpg", + "contact": "Fleming Stone " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2022-01-23T03:01:22.073Z", + "subject": "Deserunt exercitation ut nulla elit Lorem", + "content": "Hi Brian,\n\nEst labore sunt sunt Lorem dolore. In excepteur esse proident ut consectetur dolor voluptate laborum veniam pariatur. Excepteur ut veniam sit culpa exercitation qui nulla nulla magna ea in dolore et consequat. Irure minim ad cupidatat amet reprehenderit excepteur incididunt nulla eu et excepteur anim et aliqua.\n\nSint sint Lorem magna est irure sint ea cupidatat fugiat. Occaecat non adipisicing magna magna culpa sit commodo aute ex consequat amet minim esse ut. In nulla eiusmod veniam deserunt in.\n\nIn aute excepteur qui pariatur fugiat. Occaecat velit voluptate proident occaecat ut laboris occaecat pariatur aute dolore do. Ut commodo ipsum est non commodo ut ea qui labore veniam. Occaecat nostrud eu dolor tempor velit excepteur sint occaecat excepteur aliqua aliquip. Magna mollit ea aliquip exercitation do elit ex reprehenderit esse aliqua elit.\n\nKind Regards,\nFleming Stone", + "attachments": [], + "starred": false, + "important": true, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3" + ] + }, + { + "id": "b099a8e2-ffcc-4ae1-866d-8f8f6bd95ab3", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-06.jpg", + "contact": "England Wiley " + }, + "to": "me ", + "date": "2022-01-20T12:36:22.073Z", + "subject": "Minim do reprehenderit dolor ipsum officia magna laborum est anim in fugiat", + "content": "Dear Brian,\n\nAd do minim id ad ex sit reprehenderit labore do occaecat fugiat ut enim. Et sunt dolore sint non consequat ut. Esse deserunt nostrud pariatur nulla ullamco nulla sit aliquip culpa sunt ipsum. Ut ad minim qui anim amet aute cupidatat. Est ullamco duis laboris nulla labore incididunt consectetur. Cillum sunt mollit nulla laborum non tempor veniam consequat.\n\nAmet fugiat velit id deserunt pariatur velit laboris consectetur quis officia. Culpa nostrud deserunt nostrud esse labore esse consequat labore fugiat. Nostrud duis ex nulla et do.\n\nPariatur mollit ex adipisicing nostrud nostrud occaecat. Id tempor irure cupidatat duis cillum cupidatat nostrud enim anim. Esse nisi pariatur nisi elit elit sit quis ullamco dolor dolore pariatur est sint. Sint ex aliqua id sunt sunt magna amet ex sit anim. Irure aliquip fugiat ipsum tempor irure nisi Lorem anim sit ullamco. Exercitation nostrud mollit est non enim.\n\nBest Regards,\nEngland Wiley", + "attachments": [], + "starred": true, + "important": false, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3" + ] + }, + { + "id": "7bd21940-3388-479c-b1bc-3ebceb0472d8", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-07.jpg", + "contact": "Ingram Fowler " + }, + "to": "me ", + "date": "2018-01-07T03:51:20.000Z", + "subject": "Aliquip eiusmod pariatur adipisicing id consectetur sunt ad dolore consequat commodo", + "content": "Dear Brian,\n\nDolore sit occaecat est do fugiat sunt est amet nostrud. Aliqua ad veniam officia Lorem id aute fugiat laborum dolor magna dolor. Eiusmod nostrud qui sunt ut exercitation deserunt ipsum. Commodo veniam velit reprehenderit minim amet occaecat consectetur sint aliquip Lorem voluptate cupidatat. Aute aliquip do veniam nostrud nisi minim amet. Ex id ullamco non ea ullamco cillum et Lorem sunt sunt officia dolore excepteur.\n\nSit enim anim occaecat eu adipisicing velit ut excepteur consectetur sunt. Non fugiat deserunt quis fugiat eiusmod magna voluptate nisi commodo minim sunt dolore consequat labore. Pariatur ad aliqua do non labore exercitation aute minim culpa adipisicing qui. Anim et et anim dolore consequat fugiat amet aliquip nisi aliqua irure occaecat et laboris. Aute aliquip incididunt sit ipsum do. Ullamco in anim laboris incididunt tempor duis irure ipsum cillum duis ea. Magna culpa adipisicing ad ullamco id consequat qui ullamco cupidatat pariatur.\n\nMollit amet enim sint cupidatat eu aute exercitation dolor. Minim exercitation nostrud ullamco magna laboris. Pariatur proident aute proident et. Officia cillum pariatur nisi sint anim officia. Sunt minim anim ad tempor deserunt commodo magna labore incididunt ex ad nulla nulla ut. Sint ipsum aliqua dolor mollit do anim officia incididunt. Irure nulla ex elit id pariatur dolore et nostrud occaecat.\n\nCheers!\nIngram Fowler", + "attachments": [], + "starred": true, + "important": true, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [] + }, + { + "id": "2d105bae-b4e5-4ba3-a40e-e9e2b5cc671a", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-05.jpg", + "contact": "Diana Walsh " + }, + "to": "me ", + "date": "2018-06-29T07:37:52.000Z", + "subject": "Non anim id laborum in et id", + "content": "Dear Brian,\n\nTempor veniam do dolor laborum consectetur in sit incididunt nulla officia consectetur fugiat. In dolor consequat consectetur deserunt sit. Voluptate reprehenderit tempor dolor dolore nulla aliquip commodo elit cillum laboris occaecat laboris. Eu dolor magna velit ea commodo dolor. Occaecat sit mollit amet voluptate eiusmod aliqua sunt irure sunt fugiat ipsum eu. Consequat ea sit consequat esse.\n\nAdipisicing adipisicing voluptate duis ullamco sint anim sunt nostrud deserunt minim velit aute nisi et. Do ea cupidatat culpa eu qui. Lorem enim laboris amet officia fugiat nisi Lorem laborum ex. Aliquip nostrud sit esse nisi labore.\n\nId amet tempor tempor Lorem fugiat culpa. Elit nulla pariatur adipisicing proident. In qui esse eiusmod ad est minim ipsum mollit aute mollit ad duis aliqua.\n\nCheers!\nDiana Walsh", + "attachments": [ + { + "type": "image/png", + "name": "yosemite-national-park.png", + "size": 14242, + "preview": "yosemite-national-park_preview.png", + "downloadUrl": "" + }, + { + "type": "application/pdf", + "name": "montly-invoice.pdf", + "size": 243449, + "preview": "pdf", + "downloadUrl": "" + }, + { + "type": "image/jpeg", + "name": "mystery-forest.jpg", + "size": 15539, + "preview": "mystery-forest_preview.jpg", + "downloadUrl": "" + } + ], + "starred": true, + "important": false, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754" + ] + }, + { + "id": "4c3bd79a-6429-466d-b962-8eb09c524969", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-08.jpg", + "contact": "Mckinney Marsh " + }, + "to": "me ", + "date": "2018-06-20T15:24:03.000Z", + "subject": "Adipisicing proident laborum qui deserunt adipisicing exercitation id sint", + "content": "Hi Brian,\n\nAmet eiusmod est ipsum fugiat. Laborum dolor exercitation esse nostrud cillum. Sunt laboris culpa incididunt ullamco sint veniam dolore tempor non irure ipsum. Laborum quis dolore dolor veniam quis exercitation sint dolore tempor occaecat pariatur officia. Non labore consectetur elit laborum exercitation ut exercitation pariatur Lorem.\n\nExercitation cillum sint exercitation incididunt laboris ut veniam irure sit. Id voluptate esse dolore in fugiat sit sint labore ex ea. Lorem laborum officia occaecat ipsum adipisicing do nostrud proident. Adipisicing fugiat anim aute amet consequat labore non et enim veniam anim. Elit do pariatur pariatur nulla consectetur sit anim cillum cillum.\n\nId qui pariatur enim laborum eu qui. Fugiat sint duis nisi culpa non. Labore cupidatat magna dolor eu et. Anim nulla elit ut eiusmod et excepteur aute culpa labore aliquip.\n\nCheers!\nMckinney Marsh", + "attachments": [], + "starred": true, + "important": false, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754", + "184cd689-4ee4-47cf-9f8a-12233d614326" + ] + }, + { + "id": "770d24d1-1b9b-49ec-bcb4-f6feffc305ff", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-09.jpg", + "contact": "Meyer Fuller " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-01-31T08:17:08.000Z", + "subject": "Excepteur sunt ut ipsum ad culpa aliqua quis", + "content": "Hey Brian,\n\nCupidatat cupidatat irure culpa est dolore qui laborum adipisicing occaecat nulla officia deserunt fugiat aliqua. Dolor quis sunt aliqua officia culpa esse eiusmod eiusmod ad laboris. Sit deserunt cillum ad cillum minim officia in velit fugiat aliqua ullamco duis elit. Anim incididunt consequat ex amet duis tempor voluptate cillum officia exercitation culpa dolor enim.\n\nEa velit minim officia fugiat culpa nostrud. Ex aute amet veniam anim consequat dolor Lorem sint. Sunt culpa cillum magna est veniam adipisicing. Reprehenderit eu tempor duis veniam velit Lorem elit amet amet ut anim do dolor.\n\nOfficia minim eiusmod et reprehenderit est proident aute amet non nulla fugiat. Proident enim ea cupidatat dolore ea id ad. Qui et eu adipisicing esse mollit mollit exercitation velit in. Consequat mollit magna est quis est duis proident sunt eu officia reprehenderit. Elit esse incididunt adipisicing consequat culpa aliquip deserunt dolore ullamco velit mollit sit sit Lorem. Do quis qui quis veniam aliqua consequat excepteur.\n\nCheers!\nMeyer Fuller", + "attachments": [], + "starred": true, + "important": true, + "unread": false, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754", + "184cd689-4ee4-47cf-9f8a-12233d614326" + ] + }, + { + "id": "3e2100de-ca0a-4a8e-a1c5-6c13172333dc", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-06.jpg", + "contact": "Carolina Wade " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-03-24T17:50:27.000Z", + "subject": "In sunt pariatur sunt sint exercitation", + "content": "Hey Brian,\n\nReprehenderit proident mollit non eu mollit eu. Mollit exercitation non enim commodo sit eu eiusmod est cupidatat esse magna sint quis dolore. Esse deserunt ea sunt quis tempor est deserunt qui proident Lorem. Adipisicing dolore non laboris proident. Incididunt fugiat labore proident eu et ad magna tempor ipsum nostrud adipisicing eiusmod eu.\n\nNisi excepteur ullamco minim laboris sit labore tempor officia commodo officia sit enim qui occaecat. Quis ullamco enim minim voluptate consectetur mollit elit voluptate fugiat. Laboris sint eu magna ullamco laboris aliquip duis laboris sit enim reprehenderit occaecat labore. Mollit nulla magna et labore officia et voluptate fugiat non commodo esse et laboris exercitation.\n\nLaboris amet Lorem sint in. Quis nulla sit et non qui fugiat et culpa pariatur incididunt duis. Dolor tempor incididunt Lorem irure anim velit tempor voluptate.\n\nKind Regards,\nCarolina Wade", + "attachments": [], + "starred": true, + "important": true, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3" + ] + }, + { + "id": "e1291d1a-fba6-4b23-b259-dd7c9074e976", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-10.jpg", + "contact": "Graves Huber " + }, + "to": "me ", + "date": "2018-03-25T02:46:44.000Z", + "subject": "Elit est aute anim ea culpa labore occaecat adipisicing officia", + "content": "Dear Brian,\n\nAd ex enim mollit quis nostrud nulla quis non minim voluptate cillum sint tempor mollit. Culpa anim occaecat aliquip do. Aliquip velit minim irure nostrud commodo eiusmod consequat ipsum consectetur deserunt dolore. Pariatur dolor dolore consectetur dolor aliqua dolor dolor deserunt minim commodo.\n\nAd qui qui ex et irure eiusmod. Excepteur esse fugiat officia non ex excepteur minim sint voluptate in incididunt. Exercitation culpa laboris non consequat excepteur pariatur est consequat aliquip occaecat ullamco laborum culpa. Ut fugiat duis incididunt incididunt excepteur enim sunt in amet irure nulla. Commodo officia fugiat do nostrud adipisicing sint voluptate voluptate dolor laboris. Nisi id aliqua quis id ullamco reprehenderit enim elit in magna. Proident consectetur voluptate id mollit sint do ipsum id sint proident.\n\nLaboris mollit nulla culpa veniam est dolor fugiat id consequat nulla veniam enim enim. Ullamco sunt proident fugiat cillum labore nostrud incididunt exercitation esse. Labore aliqua est non consequat in excepteur ullamco cupidatat aute nostrud proident. Consectetur enim veniam eiusmod incididunt culpa qui ipsum ea elit non nostrud reprehenderit incididunt veniam. Sint amet Lorem ipsum et dolore pariatur anim consectetur.\n\nBest Regards,\nGraves Huber", + "attachments": [], + "starred": true, + "important": true, + "unread": false, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e" + ] + }, + { + "id": "7cba834c-3011-4897-be7d-ee43bbe69114", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-11.jpg", + "contact": "Tucker Santiago " + }, + "to": "me ", + "date": "2018-09-17T14:41:42.000Z", + "subject": "Ullamco qui ex eu ea officia labore incididunt", + "content": "Dear Brian,\n\nNon tempor sint incididunt adipisicing cupidatat laboris elit incididunt ipsum magna. Voluptate labore cillum irure dolor eu est commodo nulla. Cupidatat aliquip reprehenderit proident duis labore aliquip ullamco dolor occaecat anim esse tempor enim dolore. Elit veniam minim cupidatat aute ea voluptate eu et labore amet eu tempor.\n\nExercitation et exercitation labore cillum reprehenderit eiusmod anim magna ex. Lorem aliqua est velit eu. Qui et ullamco adipisicing elit eiusmod aliquip exercitation laboris consequat esse. Sint velit deserunt est quis ad proident sit eiusmod commodo eiusmod Lorem. Est consequat cillum magna est. Sunt pariatur voluptate elit officia aute.\n\nConsectetur velit deserunt non enim exercitation esse irure aliqua cillum sint in officia Lorem esse. Adipisicing consequat anim magna exercitation mollit. Ipsum irure in culpa mollit cillum eiusmod sunt amet consectetur anim eiusmod ea.\n\nBest Regards,\nTucker Santiago", + "attachments": [], + "starred": false, + "important": false, + "unread": false, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754", + "184cd689-4ee4-47cf-9f8a-12233d614326" + ] + }, + { + "id": "d0de071d-2d72-4e0f-b903-79ca6ade9dbd", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-07.jpg", + "contact": "Becky Cain " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-11-30T09:14:15.000Z", + "subject": "Exercitation amet laborum officia nulla nulla adipisicing mollit culpa eiusmod irure deserunt voluptate laborum", + "content": "Dear Brian,\n\nAd tempor veniam exercitation et occaecat do quis do cillum nulla mollit mollit nulla minim. Id sint do excepteur pariatur eu pariatur do sint ipsum ea. Enim in ex irure eu incididunt aliqua eu velit ipsum magna elit eu.\n\nCupidatat fugiat proident aliqua labore nostrud Lorem veniam tempor dolor exercitation. Aliqua magna pariatur exercitation voluptate do duis ea voluptate est culpa sint id. Irure labore esse adipisicing culpa ad velit consectetur. Sint mollit voluptate tempor exercitation fugiat consectetur cillum officia non dolor.\n\nIpsum amet esse duis duis est voluptate ipsum ipsum ipsum qui labore exercitation veniam. Proident sint incididunt ut sunt ut labore sunt ex. Ea enim velit qui elit non sit excepteur dolore eiusmod.\n\nKind Regards,\nBecky Cain", + "attachments": [ + { + "type": "image/jpeg", + "name": "mystery-forest.jpg", + "size": 15539, + "preview": "mystery-forest_preview.jpg", + "downloadUrl": "" + }, + { + "type": "image/png", + "name": "lake-of-carezza.png", + "size": 13071, + "preview": "lake-of-carrezza_preview.png", + "downloadUrl": "" + }, + { + "type": "image/png", + "name": "yosemite-national-park.png", + "size": 14242, + "preview": "yosemite-national-park_preview.png", + "downloadUrl": "" + } + ], + "starred": false, + "important": false, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e" + ] + }, + { + "id": "d39c93b9-10d3-426f-a205-0ee5b30cd983", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-12.jpg", + "contact": "Miller Vazquez " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-05-06T19:35:14.000Z", + "subject": "Ullamco eu nulla labore occaecat", + "content": "Hey Brian,\n\nIrure reprehenderit enim anim ad ex officia qui. Cillum amet reprehenderit aliquip minim adipisicing. Sint sit tempor non nostrud esse adipisicing eu.\n\nLabore dolor sint minim enim officia voluptate. Eu esse est velit ipsum ullamco amet anim aliquip culpa sit laborum velit. Eiusmod est nulla dolor duis voluptate deserunt. Labore do qui amet laborum tempor anim. Do aliqua est anim consequat proident minim. Commodo eiusmod labore elit sunt irure labore proident non ipsum in eiusmod laboris sit. Ad nostrud cupidatat ea est veniam commodo culpa laboris mollit id.\n\nLabore aute fugiat commodo sint aliquip ullamco sint esse. Deserunt aliqua amet tempor Lorem pariatur. Eiusmod proident reprehenderit pariatur cupidatat. Ad consequat laboris nisi in ipsum nisi dolor et velit duis do ad. Ipsum minim reprehenderit quis incididunt culpa. Et laborum laborum quis in elit nisi proident cillum sit ad. Nisi ullamco aliquip elit nisi sint sunt enim est commodo aute aliquip cupidatat eiusmod adipisicing.\n\nBest Regards,\nMiller Vazquez", + "attachments": [], + "starred": false, + "important": true, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3" + ] + }, + { + "id": "4e881b4f-bf47-472f-a1fe-f787a66d37dd", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-13.jpg", + "contact": "Delgado Stevens " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-01-17T09:56:25.000Z", + "subject": "Ut velit occaecat nostrud ullamco non excepteur velit ipsum ut", + "content": "Hey Brian,\n\nEsse dolore exercitation id sint id eu dolor nisi. Irure consectetur aute eu ad aute velit et tempor ad eiusmod voluptate. Sit proident pariatur anim in culpa ut esse nostrud incididunt ullamco ut. Proident nostrud est voluptate sint nostrud dolore amet dolore culpa eiusmod enim voluptate in. Do qui voluptate ex aliqua ut.\n\nQui ullamco incididunt nulla adipisicing tempor aute commodo eu adipisicing. Tempor exercitation tempor adipisicing ipsum incididunt mollit commodo adipisicing. Cupidatat officia in ut duis non commodo ut.\n\nCulpa eiusmod mollit culpa nostrud ullamco irure. Est adipisicing ut irure Lorem esse. Deserunt deserunt non sit sit labore et minim fugiat irure Lorem et velit.\n\nKind Regards,\nDelgado Stevens", + "attachments": [], + "starred": true, + "important": false, + "unread": false, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754" + ] + }, + { + "id": "5dad8b60-8d98-4215-88b8-41158e167686", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-08.jpg", + "contact": "Concepcion Cleveland " + }, + "to": "me ", + "date": "2018-08-17T04:41:26.000Z", + "subject": "Aliqua pariatur non tempor velit eu amet sit et proident Lorem", + "content": "Hey Brian,\n\nPariatur anim aute excepteur consequat esse aliqua proident culpa duis duis veniam occaecat cupidatat eu. Lorem officia occaecat duis et exercitation mollit consectetur pariatur ut sit exercitation. Velit consectetur incididunt ad non nostrud dolor consequat esse deserunt. Nisi consectetur ea ut cupidatat ipsum. Sint cillum cupidatat elit laboris incididunt consectetur veniam fugiat sit voluptate officia.\n\nCillum est dolore et aliqua elit pariatur cupidatat eiusmod officia. Nisi officia velit commodo id anim qui commodo aliquip mollit. Quis magna sunt in duis laboris fugiat veniam. Proident consequat deserunt sunt amet officia veniam.\n\nIrure irure aliqua officia deserunt. Excepteur excepteur magna Lorem minim esse in sit. Magna elit laborum sunt magna labore eu eiusmod qui aliqua laborum.\n\nCheers!\nConcepcion Cleveland", + "attachments": [], + "starred": false, + "important": false, + "unread": false, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3" + ] + }, + { + "id": "eeccc250-8952-47e1-adff-31847289b4dd", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-09.jpg", + "contact": "Robin Berger " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-04-26T20:55:18.000Z", + "subject": "Reprehenderit ipsum aute cupidatat qui exercitation dolore voluptate labore veniam consequat quis", + "content": "Hello Brian,\n\nExercitation minim anim commodo eu deserunt voluptate consectetur. Sit enim excepteur ipsum ea esse labore fugiat nulla. Do est tempor duis in consectetur proident do consectetur. Cupidatat ex id voluptate fugiat aute Lorem elit tempor.\n\nMinim nulla occaecat mollit laboris ea et laboris velit. Velit ullamco quis esse veniam exercitation veniam quis nostrud qui officia commodo. Lorem excepteur magna officia in eu exercitation qui ad. Nisi velit qui ipsum anim veniam deserunt velit adipisicing tempor esse excepteur ipsum. Voluptate sit dolore irure deserunt dolor incididunt laboris tempor. Minim id deserunt ea duis labore incididunt est ullamco mollit pariatur sit duis commodo. Proident ipsum eiusmod ea excepteur.\n\nIrure adipisicing veniam dolor consequat sit incididunt ad cupidatat fugiat eiusmod aliqua id amet labore. Excepteur minim deserunt eiusmod sunt aliqua ipsum. Ullamco nostrud minim ullamco amet Lorem ut irure officia mollit duis enim. Laborum dolore dolor nulla consequat consequat nostrud velit eu deserunt aute deserunt est. Adipisicing laborum dolore pariatur ad tempor culpa exercitation consequat eu anim nulla magna. In est culpa tempor laborum voluptate.\n\nKind Regards,\nRobin Berger", + "attachments": [], + "starred": true, + "important": false, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e" + ] + }, + { + "id": "e8b006ad-e140-4fea-bb32-cc346e66eb93", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-10.jpg", + "contact": "Lynnette Burton " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-11-02T16:15:50.000Z", + "subject": "Consectetur deserunt qui ex occaecat dolore officia cillum magna magna adipisicing elit magna velit", + "content": "Hi Brian,\n\nNulla mollit excepteur ex officia anim cillum eiusmod. Fugiat ullamco ad eu elit Lorem eiusmod veniam ut ipsum cillum culpa. Dolore commodo ea quis labore qui irure velit duis nostrud aute dolore non amet dolor. Qui ullamco elit reprehenderit anim tempor aliquip mollit id pariatur voluptate cupidatat anim voluptate. Exercitation nostrud sint adipisicing ad consectetur. Culpa officia occaecat aute pariatur duis occaecat mollit ea deserunt ipsum. Adipisicing non ipsum sint quis mollit consectetur occaecat anim sint.\n\nOfficia ea excepteur elit non. Velit aute ad consequat deserunt labore culpa consectetur ullamco occaecat ullamco qui laborum labore. Magna consequat dolore proident incididunt adipisicing exercitation sint anim et laboris occaecat quis. Tempor do anim magna ullamco reprehenderit aliqua et laboris non nostrud sunt. Elit aliquip irure officia reprehenderit voluptate nisi officia ex. Quis mollit sit qui eiusmod veniam eu non. Eiusmod ullamco velit occaecat pariatur ea.\n\nCillum velit sit duis esse dolor do velit sit Lorem. Enim occaecat voluptate excepteur irure anim officia nisi culpa. Quis fugiat cupidatat veniam deserunt pariatur. Exercitation ad irure nulla cupidatat nisi nostrud Lorem proident veniam ullamco labore dolore velit. Reprehenderit eiusmod ea cillum sit anim nostrud proident consequat nostrud duis adipisicing.\n\nKind Regards,\nLynnette Burton", + "attachments": [], + "starred": true, + "important": true, + "unread": false, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [] + }, + { + "id": "c6fc1d86-4a1f-4071-9c75-618fe2d853aa", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-11.jpg", + "contact": "Carmella Rios " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-07-05T14:26:57.000Z", + "subject": "Proident dolore minim deserunt commodo elit aute laborum ullamco laboris anim consequat", + "content": "Dear Brian,\n\nIn do ex sit amet fugiat duis eu non non duis id sit. Elit pariatur nostrud veniam Lorem aliquip tempor ipsum ut minim eiusmod ad. Sunt et veniam ad incididunt sint occaecat. Exercitation voluptate culpa ex enim. Excepteur exercitation aute consequat non culpa. Lorem ut consectetur commodo laboris esse exercitation laborum do ut duis sunt sint. Aliquip laboris fugiat officia irure consequat pariatur velit ea ut commodo.\n\nIpsum adipisicing proident cupidatat commodo nulla culpa nostrud ipsum voluptate occaecat sit. Occaecat anim cupidatat qui reprehenderit ex commodo dolore. Consectetur id magna esse amet do nulla esse aute velit id minim nostrud cupidatat. Nostrud dolore sunt labore sunt sit velit magna nulla. Sunt enim adipisicing sint deserunt enim veniam reprehenderit reprehenderit. Incididunt fugiat labore minim pariatur mollit ea veniam. Do voluptate id consequat qui ut aliqua qui dolore ex ea.\n\nDo esse duis culpa nisi in elit veniam exercitation consequat. Proident dolor laborum enim velit non nostrud. In reprehenderit proident enim sint tempor cupidatat enim fugiat. Duis laboris officia sit in sunt sunt sunt non. Quis mollit veniam cupidatat non enim Lorem aliquip et sit fugiat eiusmod cillum ad exercitation.\n\nCheers!\nCarmella Rios", + "attachments": [], + "starred": false, + "important": true, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7" + ] + }, + { + "id": "c062a90f-52e9-4102-8def-1f8f9813deb4", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-14.jpg", + "contact": "Molina Pace " + }, + "to": "me ", + "date": "2018-09-17T21:45:31.000Z", + "subject": "Dolor anim non labore est aliquip sunt pariatur", + "content": "Hi Brian,\n\nNon fugiat eu aute nulla deserunt Lorem id fugiat consectetur duis ut reprehenderit nostrud. Laboris culpa id nulla duis id proident. Eiusmod consequat commodo aute est deserunt aliquip esse aute qui aute et nostrud culpa.\n\nCillum minim reprehenderit sit nulla aliqua adipisicing deserunt non sit excepteur fugiat velit et. Amet excepteur non ipsum voluptate dolore irure. Laboris sit sunt id mollit et in nulla eiusmod duis ut tempor ea est. Dolor est laborum ipsum labore sint aliquip est minim ex. Aliqua cillum qui consectetur amet elit nostrud quis duis. Dolore consequat laborum laboris ullamco qui do cupidatat sunt deserunt ex elit cillum.\n\nVeniam exercitation eiusmod exercitation cupidatat sunt incididunt. Labore occaecat eiusmod sint consectetur eiusmod sunt quis ad Lorem ex. Ipsum labore ipsum nulla Lorem incididunt proident. Sit officia ut nostrud nisi ipsum adipisicing qui. Non nulla commodo nostrud aliqua Lorem consequat ea do dolore nisi veniam veniam occaecat. Tempor amet ex eiusmod irure aliquip minim. Laborum officia fugiat nisi magna.\n\nBest Regards,\nMolina Pace", + "attachments": [ + { + "type": "image/jpeg", + "name": "birds-eye-sydney.jpg", + "size": 14294, + "preview": "birds-eye-sydney_preview.jpg", + "downloadUrl": "" + }, + { + "type": "image/png", + "name": "yosemite-national-park.png", + "size": 14242, + "preview": "yosemite-national-park_preview.png", + "downloadUrl": "" + } + ], + "starred": true, + "important": false, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e" + ] + }, + { + "id": "545d12a6-e0f3-464d-af45-618163933a71", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-12.jpg", + "contact": "Olga Osborn " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-09-27T13:45:14.000Z", + "subject": "Elit tempor enim nisi cillum cillum esse do magna exercitation minim", + "content": "Dear Brian,\n\nEu voluptate dolore anim deserunt nostrud pariatur voluptate exercitation et et veniam fugiat sint consequat. Aute esse pariatur ullamco reprehenderit velit pariatur mollit sunt enim culpa qui anim sit officia. Labore minim elit commodo sunt fugiat in sint adipisicing aute incididunt adipisicing in officia esse. Sit enim eu irure ullamco ea pariatur dolore exercitation labore excepteur laborum exercitation dolore. Magna dolor Lorem fugiat eiusmod consectetur sit.\n\nExcepteur sunt officia minim in do esse. Nostrud ullamco dolore esse laborum aliquip sit consequat. Excepteur irure occaecat cupidatat cupidatat deserunt esse deserunt voluptate non labore culpa. Sit voluptate non eu sit. Velit pariatur esse et ex in laboris cillum Lorem tempor consequat. Magna consequat nostrud duis minim. In ad irure commodo deserunt incididunt duis sit quis voluptate ullamco laboris laborum commodo.\n\nIn duis eiusmod proident excepteur. Magna proident do ad est amet pariatur sint cupidatat ullamco velit cillum. Ea esse proident non culpa do in minim eiusmod.\n\nCheers!\nOlga Osborn", + "attachments": [], + "starred": true, + "important": false, + "unread": false, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754", + "184cd689-4ee4-47cf-9f8a-12233d614326" + ] + }, + { + "id": "23456530-2cd4-4558-95d0-6311c2ee2ee8", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-13.jpg", + "contact": "Brooke Petersen " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-07-22T14:49:16.000Z", + "subject": "Anim laboris aliquip excepteur consectetur eu enim sunt velit qui deserunt", + "content": "Hello Brian,\n\nConsequat velit voluptate exercitation sint anim laboris. Consectetur dolor sunt veniam incididunt ad laboris proident tempor voluptate enim excepteur. Nostrud eu id tempor cupidatat. Deserunt ullamco consequat esse et. Dolore qui cupidatat commodo ea nisi tempor velit sit aliquip amet.\n\nMagna fugiat cupidatat mollit mollit. Consectetur consequat occaecat pariatur commodo quis labore est cillum voluptate culpa tempor elit incididunt. Voluptate anim est eiusmod voluptate ipsum commodo do et elit. Aute pariatur adipisicing eu laboris proident Lorem qui enim magna adipisicing deserunt pariatur. Fugiat eiusmod occaecat dolor tempor sunt exercitation est amet mollit est. Est in duis adipisicing nostrud aute voluptate quis in fugiat veniam reprehenderit.\n\nIpsum id deserunt ex non nisi nostrud enim pariatur nulla. In labore qui esse veniam ut. Est id ut pariatur esse nulla dolore aliqua ad aliqua fugiat. Ad incididunt amet culpa labore enim proident tempor. Aliquip non dolore sunt eu deserunt tempor anim qui dolore quis. Est sunt enim ipsum aliqua.\n\nKind Regards,\nBrooke Petersen", + "attachments": [], + "starred": true, + "important": false, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3" + ] + }, + { + "id": "affeecf6-e3c5-4377-8070-96f5ed9c6500", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-15.jpg", + "contact": "Estes Walter " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-07-17T03:52:54.000Z", + "subject": "Reprehenderit ad do quis ut fugiat proident labore", + "content": "Hello Brian,\n\nFugiat labore incididunt aute sint id laboris nisi eiusmod reprehenderit. Sint sint Lorem aute cillum velit occaecat sit quis laboris ipsum laborum. Ex ipsum ea proident duis ex nostrud dolore exercitation nostrud ullamco cupidatat irure dolor. In aliqua occaecat commodo irure dolore. Nisi laborum anim cillum aute adipisicing labore fugiat velit officia cupidatat aliquip voluptate veniam. Aute incididunt consequat est id commodo elit occaecat ea Lorem deserunt est.\n\nPariatur deserunt sunt excepteur nisi ex. Enim consequat esse in deserunt ut. Cillum incididunt exercitation fugiat reprehenderit amet dolor nulla irure id quis.\n\nEnim id incididunt labore commodo voluptate. Non sint sint in eu anim dolor aliquip ullamco occaecat esse id consectetur cupidatat. Mollit aute nisi et fugiat consequat.\n\nKind Regards,\nEstes Walter", + "attachments": [], + "starred": false, + "important": true, + "unread": false, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e" + ] + }, + { + "id": "cb00d05c-6660-4dbb-a794-f22cff93f001", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-16.jpg", + "contact": "Holman Oconnor " + }, + "to": "me ", + "date": "2018-01-13T22:30:44.000Z", + "subject": "Duis dolore eu sint anim ipsum commodo esse cillum ipsum culpa commodo", + "content": "Dear Brian,\n\nDolore amet sunt ullamco enim quis tempor enim pariatur nostrud id nulla adipisicing. Reprehenderit amet ex ullamco pariatur proident et amet consequat ipsum sit ut. Laboris fugiat nulla consequat nulla qui tempor dolore dolore minim nisi. Excepteur non est pariatur cupidatat adipisicing veniam ea cillum ex duis laborum ullamco.\n\nDo quis cupidatat adipisicing sint minim veniam velit amet nulla nisi tempor voluptate nulla adipisicing. Ex dolor adipisicing dolor ad cupidatat consectetur cillum ex. Non velit laborum fugiat est fugiat officia esse ullamco. Ut amet sit mollit dolor. Sit ipsum reprehenderit consectetur excepteur. Enim ad aliqua consequat ipsum labore laborum culpa aliqua dolor voluptate.\n\nVelit cupidatat labore sint id excepteur anim qui do do non. Esse tempor aute nisi aliqua velit ad elit nulla pariatur aliqua consectetur. Proident pariatur mollit cupidatat ullamco est velit ullamco dolore. Ipsum sunt reprehenderit consequat eu dolore nisi nostrud ipsum cillum. Quis non esse fugiat ipsum ad laboris aliquip eiusmod deserunt qui ipsum aliqua consequat duis. Ad nisi sunt sint ut officia adipisicing labore voluptate commodo ullamco exercitation.\n\nKind Regards,\nHolman Oconnor", + "attachments": [], + "starred": false, + "important": false, + "unread": false, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e" + ] + }, + { + "id": "7bd27a67-df7c-4a2d-8042-1fb8a690d98e", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-17.jpg", + "contact": "Oneill Irwin " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-11-17T08:17:34.000Z", + "subject": "Eu in ut dolor amet consequat aute esse non fugiat minim cillum sunt aliquip cillum", + "content": "Dear Brian,\n\nNostrud sint ea laboris excepteur dolor nisi mollit dolor voluptate irure ex. Laboris adipisicing id ad minim minim magna nostrud nulla quis nulla tempor. Qui incididunt velit qui et proident eu in tempor in aliqua reprehenderit nostrud aute nulla. Nisi officia fugiat officia irure cillum qui adipisicing qui. Culpa duis sunt aute nostrud elit esse sit ullamco commodo ex.\n\nVeniam Lorem est minim sint ut aliqua ut est exercitation ad aliquip ullamco in culpa. Amet qui do adipisicing magna eu reprehenderit anim enim. Ipsum consequat ut eiusmod irure amet commodo aliqua sint aliquip non nulla. Irure excepteur tempor in ullamco sit culpa labore dolor enim sit. Nostrud eiusmod ex nulla exercitation est esse velit dolore aliqua eiusmod sit. Elit dolore id proident fugiat culpa anim ea Lorem eiusmod aliqua ex culpa in tempor.\n\nDeserunt officia id excepteur esse nisi elit labore irure. Et sint dolor ex incididunt ipsum dolore in mollit tempor. Qui cillum consequat laboris non culpa laborum amet cillum mollit laboris anim duis pariatur consequat. Ipsum fugiat cupidatat proident magna nisi consectetur adipisicing minim labore. Officia consequat quis labore sunt.\n\nKind Regards,\nOneill Irwin", + "attachments": [], + "starred": true, + "important": true, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754", + "184cd689-4ee4-47cf-9f8a-12233d614326" + ] + }, + { + "id": "ccfb3a90-e18c-4645-8c00-4357d9bcd321", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-14.jpg", + "contact": "Marcie Morgan " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-11-20T05:55:32.000Z", + "subject": "Magna velit cillum dolor reprehenderit aliqua ut aute nisi in sunt Lorem laboris elit do", + "content": "Hi Brian,\n\nCommodo id eu mollit dolor laboris incididunt exercitation labore duis eu mollit labore labore labore. Cupidatat fugiat aute non consequat eiusmod in Lorem. Consequat officia ullamco minim aliquip aliqua.\n\nIrure elit ipsum minim ad Lorem. In amet Lorem aute minim id consequat nulla. Tempor ipsum incididunt occaecat sit ipsum adipisicing pariatur magna aliquip adipisicing quis id pariatur est. Tempor sit dolor aute do aliqua. Est cillum adipisicing ut aliquip adipisicing est nostrud tempor tempor culpa laboris occaecat. Ipsum culpa veniam sit aliqua ad culpa Lorem esse pariatur incididunt adipisicing irure ea. Sunt nostrud do quis tempor reprehenderit anim dolore mollit fugiat nisi.\n\nPariatur nostrud id occaecat dolor sunt. Ipsum dolore ex minim ex tempor sint ad elit eiusmod ipsum veniam. Aliquip occaecat nisi sunt aliquip id. Reprehenderit aliquip nisi ea culpa eu commodo Lorem consectetur.\n\nKind Regards,\nMarcie Morgan", + "attachments": [], + "starred": true, + "important": false, + "unread": false, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [] + }, + { + "id": "a18b1961-ad32-4d00-984f-afef8ee0f4e9", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-18.jpg", + "contact": "Crane Trevino " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-11-03T01:52:28.000Z", + "subject": "Tempor consectetur officia excepteur culpa", + "content": "Dear Brian,\n\nExercitation in non sint adipisicing reprehenderit eu est aute aute quis Lorem. Magna labore nisi amet magna do in. Eiusmod fugiat mollit mollit minim aute. Voluptate qui sunt eiusmod aliquip pariatur consectetur et culpa laborum dolore. Exercitation ad incididunt exercitation voluptate sit qui eu incididunt sit.\n\nVoluptate cillum qui proident dolore tempor excepteur aute magna esse ex est culpa in. Officia officia quis veniam sunt irure eu. Voluptate ullamco velit culpa laboris anim commodo esse sunt minim esse nostrud ea. Est eiusmod commodo occaecat anim sint exercitation. Sunt irure nisi est sit excepteur aute amet. Non labore ullamco tempor nostrud nostrud ea do nostrud Lorem veniam in. Dolor est esse duis aute.\n\nEnim fugiat sunt et ut officia fugiat reprehenderit. Id cupidatat qui occaecat proident incididunt deserunt nisi magna enim dolore. Dolor aute anim ex tempor nisi ex minim sint reprehenderit ex ullamco ullamco culpa ipsum. Voluptate occaecat esse consequat non aliqua proident. Deserunt exercitation Lorem ea nisi consequat et culpa pariatur. Incididunt commodo deserunt dolore irure ea sint ipsum ad voluptate.\n\nBest Regards,\nCrane Trevino", + "attachments": [], + "starred": false, + "important": false, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754", + "184cd689-4ee4-47cf-9f8a-12233d614326" + ] + }, + { + "id": "3aaa5e3f-b8b5-47fc-9967-5f65dd8c7251", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-15.jpg", + "contact": "Kristine Wiggins " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-01-09T13:55:10.000Z", + "subject": "Magna aute enim magna aliqua aliquip enim elit eiusmod nulla nostrud", + "content": "Hi Brian,\n\nCulpa incididunt qui nulla velit consectetur. Exercitation ut voluptate proident commodo non deserunt. Consectetur anim aute sunt aliquip fugiat laborum tempor exercitation duis sint excepteur ullamco culpa consequat. Aliqua ex quis pariatur excepteur commodo adipisicing ut anim et. Duis ex sit ex nulla proident est consequat aliquip. Quis exercitation labore veniam anim sit irure laborum occaecat laborum labore cillum sunt nulla. Exercitation laborum sunt consequat aliqua.\n\nLabore fugiat ullamco quis incididunt quis duis consectetur aute incididunt cupidatat cupidatat deserunt. Cillum fugiat ex minim tempor consectetur duis labore reprehenderit excepteur enim anim qui. Reprehenderit pariatur aliqua mollit in amet id. Duis anim nostrud incididunt adipisicing incididunt velit minim tempor adipisicing est elit ipsum duis.\n\nFugiat nostrud ad enim officia est. Voluptate velit in pariatur cupidatat irure dolor eiusmod voluptate irure voluptate ad reprehenderit est. Esse aute aliquip aute minim amet pariatur minim tempor nostrud consectetur. Sunt reprehenderit excepteur occaecat ea reprehenderit eiusmod duis cupidatat sunt nulla fugiat et velit elit. Do ut tempor cillum nisi. Magna sint do et mollit cupidatat ad culpa voluptate.\n\nKind Regards,\nKristine Wiggins", + "attachments": [ + { + "type": "application/pdf", + "name": "account-details.pdf", + "size": 127844, + "preview": "pdf", + "downloadUrl": "" + }, + { + "type": "image/jpeg", + "name": "mystery-forest.jpg", + "size": 15539, + "preview": "mystery-forest_preview.jpg", + "downloadUrl": "" + }, + { + "type": "image/jpeg", + "name": "birds-eye-sydney.jpg", + "size": 14294, + "preview": "birds-eye-sydney_preview.jpg", + "downloadUrl": "" + } + ], + "starred": true, + "important": false, + "unread": false, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e" + ] + }, + { + "id": "0f72d2d0-bea4-4c0f-ace0-0be9f14c37f1", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-16.jpg", + "contact": "Terrie Carney " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-01-23T00:03:55.000Z", + "subject": "Laboris in incididunt labore labore deserunt deserunt nostrud mollit voluptate non ex", + "content": "Hello Brian,\n\nReprehenderit veniam fugiat sunt in nulla anim commodo magna ex nulla. Mollit nostrud eiusmod aute veniam. Sint do cupidatat velit sit amet.\n\nUllamco elit anim veniam culpa veniam velit. Nisi aute esse consectetur ea occaecat ea laboris eu. Velit proident quis mollit nulla mollit dolor ad commodo. Non deserunt ipsum id dolor est ad consectetur sunt commodo adipisicing in irure.\n\nCupidatat consequat officia adipisicing amet esse veniam veniam elit veniam sint nulla quis qui commodo. Ipsum nisi deserunt pariatur nostrud in. Sint duis pariatur esse do duis proident consequat ullamco excepteur mollit nulla veniam non. Reprehenderit incididunt ipsum duis dolor nulla fugiat fugiat culpa laboris velit sint.\n\nKind Regards,\nTerrie Carney", + "attachments": [], + "starred": false, + "important": false, + "unread": false, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [] + }, + { + "id": "f825c5a3-2be8-4d48-9c4e-da60ff0e63f3", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-19.jpg", + "contact": "Goff Jennings " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-08-07T05:20:39.000Z", + "subject": "Labore sint dolor nulla nostrud commodo amet nisi mollit commodo eiusmod duis quis irure non", + "content": "Dear Brian,\n\nNisi sit ut in do aliqua nostrud consectetur incididunt. Non et pariatur nulla mollit aute aliquip amet minim irure tempor eu id ipsum. Velit sunt tempor proident voluptate ad reprehenderit. Dolor consectetur est in nulla. Reprehenderit incididunt magna deserunt mollit officia non aliqua. Elit est dolore ea Lorem velit ipsum occaecat cupidatat. Mollit magna laborum qui sit sunt mollit amet.\n\nDuis excepteur labore laboris adipisicing culpa culpa eiusmod et velit aliquip velit. Proident tempor in excepteur minim irure duis ex in non est. Labore minim sunt culpa enim tempor labore ea adipisicing nulla elit magna. Fugiat enim ex voluptate officia pariatur pariatur ipsum eu in. Veniam commodo occaecat laborum excepteur nisi Lorem.\n\nExcepteur adipisicing amet ea commodo dolor nisi labore deserunt adipisicing pariatur. Pariatur magna et esse id occaecat minim minim. Labore cupidatat tempor deserunt reprehenderit anim duis magna laborum excepteur aliquip consectetur.\n\nBest Regards,\nGoff Jennings", + "attachments": [], + "starred": false, + "important": false, + "unread": false, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754" + ] + }, + { + "id": "e6dc9600-a3ab-4571-b2f2-ed00ee08e163", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-20.jpg", + "contact": "Browning Sanchez " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-03-16T20:31:08.000Z", + "subject": "Mollit cupidatat commodo consectetur duis ea elit est sint sunt ea qui nostrud incididunt", + "content": "Hey Brian,\n\nVelit ut elit ex voluptate nisi nostrud sunt pariatur dolore est dolor deserunt sint nostrud. Aute magna ipsum cillum cillum tempor voluptate cupidatat sunt eiusmod officia sit. Aliqua adipisicing officia adipisicing dolore id nulla nulla irure non enim esse anim. Tempor occaecat excepteur duis ex aliquip eu reprehenderit labore ea. Adipisicing anim amet culpa culpa cillum elit cupidatat consequat laboris.\n\nEx dolore fugiat incididunt deserunt deserunt quis elit ipsum. Exercitation dolore dolore deserunt eu voluptate deserunt non id duis incididunt. Dolor proident quis enim cillum fugiat. Ex nisi pariatur aliqua exercitation. Incididunt laborum pariatur deserunt anim laboris sint consequat aliqua nostrud sint. Elit tempor laboris do tempor eu minim sunt proident.\n\nAmet aute esse minim qui sit pariatur aliquip laborum. Irure nulla sit laboris dolor reprehenderit veniam occaecat non commodo do qui. Eiusmod pariatur dolor consectetur qui quis occaecat. Et consectetur occaecat nulla elit officia nostrud. Est aute est nisi dolor mollit sunt et aliqua aliqua nulla labore cupidatat. Do pariatur aliquip cillum ullamco. Nostrud tempor consectetur eu nisi incididunt in voluptate est.\n\nKind Regards,\nBrowning Sanchez", + "attachments": [], + "starred": false, + "important": true, + "unread": false, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3" + ] + }, + { + "id": "0f22fedf-ea89-414e-91a4-0df0d9501ef2", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-01.jpg", + "contact": "Carey Lyons " + }, + "to": "me ", + "date": "2018-05-01T07:56:59.000Z", + "subject": "Laboris esse ipsum esse eu do ipsum do incididunt", + "content": "Hello Brian,\n\nIpsum elit ut magna occaecat dolor sint reprehenderit eu incididunt sunt irure esse mollit. Sit fugiat amet laborum ullamco sit laborum Lorem irure minim ut. Labore aliqua dolore minim elit consequat sit. Labore mollit esse ad magna voluptate anim pariatur. Irure enim excepteur adipisicing cillum minim culpa elit nostrud consectetur quis laborum velit. Ea eiusmod aliqua ipsum ad tempor veniam fugiat elit.\n\nDolor mollit adipisicing ut duis cillum proident id sunt non sit cillum. Sit aliqua elit aute tempor cupidatat esse mollit do deserunt cillum velit irure cillum. Ea aliqua Lorem minim cupidatat elit Lorem.\n\nEu deserunt nostrud Lorem reprehenderit sit veniam consectetur proident. Duis elit duis excepteur sit proident est ut est cillum. Sit tempor aliqua qui laborum eu cillum laborum consequat adipisicing sit exercitation. Anim non do consequat duis pariatur. Velit excepteur magna enim tempor occaecat consequat exercitation laborum deserunt.\n\nKind Regards,\nCarey Lyons", + "attachments": [], + "starred": true, + "important": false, + "unread": false, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e" + ] + }, + { + "id": "d942f99b-8925-49f0-b75b-2c48b714b1cf", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-02.jpg", + "contact": "Hendrix Goodwin " + }, + "to": "me ", + "date": "2018-01-22T19:04:29.000Z", + "subject": "Magna consectetur occaecat excepteur elit", + "content": "Hello Brian,\n\nSunt consequat elit aliquip sit nulla ad. Voluptate elit qui magna ipsum culpa pariatur laboris nisi sit laboris. Mollit eiusmod ut elit est aliquip nulla ea laborum. Irure ipsum officia cillum labore occaecat esse consequat ut culpa et ut.\n\nAliquip aliquip veniam aute velit aliquip culpa cillum. Eu culpa pariatur in exercitation est nostrud duis quis voluptate. Anim pariatur ipsum aliquip proident et enim veniam duis velit adipisicing id ad exercitation commodo. Sit commodo qui reprehenderit et elit officia in aliquip amet occaecat. Nulla aute officia duis cupidatat cillum. Commodo amet consequat qui ipsum nisi nulla veniam laborum. Et excepteur est irure non officia ipsum sunt fugiat exercitation eu laboris sunt.\n\nElit reprehenderit aute consectetur eiusmod sit pariatur elit fugiat irure id et. In in dolore sunt magna cillum excepteur minim aute. Lorem sint occaecat elit est sint ut ea eiusmod anim esse cillum anim enim. Officia sint velit qui minim veniam ut nisi reprehenderit occaecat laborum qui. Elit eiusmod commodo dolor sunt incididunt labore.\n\nBest Regards,\nHendrix Goodwin", + "attachments": [], + "starred": false, + "important": true, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754" + ] + }, + { + "id": "036c24e8-d8bc-4f0e-9a72-6fa884d69bb3", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-17.jpg", + "contact": "Leticia Fulton " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-03-31T05:44:48.000Z", + "subject": "Est nostrud labore excepteur quis consectetur proident cupidatat", + "content": "Hello Brian,\n\nOfficia incididunt sint est non aliquip eu deserunt sunt ad minim aliqua excepteur. Cillum dolor nostrud magna sunt nulla aute ut esse dolore magna eu. Dolore minim non dolor aliquip reprehenderit excepteur irure dolore anim incididunt sit. Nulla commodo pariatur consectetur sit reprehenderit amet consectetur duis.\n\nCupidatat tempor commodo aliqua sunt incididunt. Occaecat occaecat eu officia aliqua in exercitation sint commodo aute aliquip laborum consectetur enim. Voluptate do aute irure ullamco. Qui consectetur id aliqua laborum incididunt cupidatat proident ea irure mollit minim.\n\nDolore reprehenderit occaecat enim eu veniam tempor dolor. Aliquip proident tempor aute nostrud ut. Eiusmod consectetur qui mollit ut ut ullamco aliquip exercitation quis dolore irure labore. Nisi officia aliquip pariatur Lorem velit ex cupidatat cillum consequat. Elit ea sunt reprehenderit do minim cillum. Aute irure ad velit quis et adipisicing esse reprehenderit et quis voluptate. Aliquip reprehenderit duis eiusmod eiusmod aliqua mollit amet id cillum deserunt.\n\nCheers!\nLeticia Fulton", + "attachments": [], + "starred": true, + "important": false, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e" + ] + }, + { + "id": "3dac4463-73aa-4bd4-a3d8-662ce38635cc", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-18.jpg", + "contact": "Carmen Shannon " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-06-15T23:26:09.000Z", + "subject": "Aute est laboris laborum consectetur cupidatat", + "content": "Hey Brian,\n\nEsse dolore laboris enim quis. Ullamco dolor exercitation nostrud occaecat in et ad Lorem sunt nisi. Ipsum quis dolor fugiat ex eu. Consequat voluptate elit ut exercitation enim sint aliqua qui id est in eu adipisicing veniam. Deserunt est occaecat sit irure aute. Anim veniam cupidatat exercitation labore duis pariatur velit est exercitation dolore ad. Pariatur non adipisicing et nulla sit.\n\nIncididunt dolor pariatur est aute ad. Non aliqua qui excepteur cillum enim. Magna proident incididunt eu dolor non ut. Eiusmod Lorem tempor laborum amet ex.\n\nExcepteur quis duis cupidatat ea cupidatat magna irure ad exercitation eiusmod. Quis magna minim nulla ullamco. Sit dolor ipsum tempor laboris eiusmod deserunt ex. Est incididunt culpa commodo ad sunt cillum eiusmod labore nisi nulla ea sit anim incididunt. In labore id sint ipsum id nulla ad aliqua mollit minim occaecat. Velit do velit nostrud nostrud dolor esse consequat velit ullamco in cupidatat. Amet culpa fugiat Lorem nisi tempor labore magna reprehenderit aliquip elit et esse fugiat.\n\nKind Regards,\nCarmen Shannon", + "attachments": [], + "starred": false, + "important": true, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e" + ] + }, + { + "id": "6bb27e81-ee53-4db3-acc7-bd1267cd475d", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-19.jpg", + "contact": "Hattie Snow " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-06-08T01:23:42.000Z", + "subject": "Officia exercitation exercitation ad exercitation ea ut ullamco", + "content": "Hello Brian,\n\nIncididunt aute pariatur quis reprehenderit tempor occaecat laborum nostrud labore sunt minim non eiusmod incididunt. Ipsum cupidatat qui reprehenderit ex enim irure. Eiusmod sunt proident Lorem veniam non magna dolore eu laboris nostrud quis pariatur. Velit do eu commodo tempor laboris excepteur in. Laborum mollit dolor aliquip enim sunt cillum minim. Dolor elit ipsum proident adipisicing consectetur aliquip nisi proident eiusmod Lorem adipisicing aliqua velit ea.\n\nDo adipisicing incididunt proident Lorem ullamco. Cupidatat fugiat et minim elit deserunt est. Occaecat laboris cillum elit aute cupidatat reprehenderit consequat est est ea occaecat sit consequat labore. Enim proident consectetur culpa anim est culpa nulla nostrud esse proident officia ut dolore ipsum. Do qui sunt id quis Lorem officia anim fugiat occaecat ut.\n\nEsse incididunt excepteur adipisicing fugiat deserunt sint Lorem culpa excepteur tempor ullamco qui. Non aliquip ullamco Lorem do. Ex enim elit minim reprehenderit in qui aliqua qui laborum.\n\nKind Regards,\nHattie Snow", + "attachments": [], + "starred": false, + "important": true, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754" + ] + }, + { + "id": "bfac8e5d-6487-4747-b827-67179ac5c206", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-20.jpg", + "contact": "Brandi Bradley " + }, + "to": "me ", + "date": "2018-11-17T10:51:44.000Z", + "subject": "Eiusmod nulla incididunt nostrud est mollit quis velit in non irure elit consectetur commodo irure", + "content": "Hey Brian,\n\nOfficia ad enim aliqua ex labore nisi. Commodo cillum non occaecat laboris. Irure eu ut voluptate officia excepteur.\n\nNostrud ad proident qui cupidatat exercitation labore occaecat in. Aliquip culpa veniam magna eiusmod proident irure reprehenderit pariatur adipisicing velit. Aliqua non labore tempor irure do duis ut voluptate.\n\nNon sit dolore voluptate sint ullamco proident enim non do dolor deserunt nisi velit. Quis pariatur esse sunt quis voluptate ut minim proident officia exercitation ipsum ipsum cillum. Duis non nostrud ullamco excepteur occaecat. Deserunt sit sint quis et ad. Nisi enim excepteur magna laboris occaecat laborum non esse sit enim mollit. Et elit eiusmod eiusmod Lorem ex qui elit adipisicing proident aute eu.\n\nBest Regards,\nBrandi Bradley", + "attachments": [ + { + "type": "image/png", + "name": "yosemite-national-park.png", + "size": 14242, + "preview": "yosemite-national-park_preview.png", + "downloadUrl": "" + }, + { + "type": "image/png", + "name": "yosemite-national-park.png", + "size": 14242, + "preview": "yosemite-national-park_preview.png", + "downloadUrl": "" + } + ], + "starred": true, + "important": false, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7" + ] + }, + { + "id": "81b49a0a-e934-422a-81a8-8506d6f24e0e", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-01.jpg", + "contact": "Patsy Potter " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-05-15T15:37:38.000Z", + "subject": "Ullamco fugiat fugiat non occaecat proident exercitation proident Lorem adipisicing commodo fugiat", + "content": "Hello Brian,\n\nAute in culpa nulla aliqua laboris adipisicing in sit laborum. Enim exercitation duis qui ullamco. Ullamco eiusmod deserunt cillum nisi nulla nostrud voluptate fugiat non nulla. Tempor sint consequat in nostrud cupidatat exercitation aliqua Lorem. Fugiat officia excepteur consequat id cillum amet consectetur mollit nostrud in ex aliquip. Velit ut cupidatat excepteur deserunt.\n\nSit culpa eu dolor Lorem ipsum anim dolor proident. Cupidatat qui laboris incididunt Lorem cillum anim dolore ad ipsum ullamco deserunt aliquip exercitation. Nostrud magna fugiat aliquip veniam cupidatat cupidatat fugiat voluptate consectetur irure minim officia officia. Tempor commodo tempor sint amet. Ex sint adipisicing fugiat excepteur do ad elit esse commodo duis et. Ullamco irure laborum sint duis duis irure officia culpa non Lorem est deserunt exercitation.\n\nDolor ullamco fugiat eu cupidatat consequat exercitation magna. In ad aute aliquip eu laboris adipisicing proident ad. Eu aliquip enim cillum aliqua.\n\nKind Regards,\nPatsy Potter", + "attachments": [], + "starred": true, + "important": false, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [] + }, + { + "id": "8355b50a-f347-4177-8cef-6410c0aa46d1", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-02.jpg", + "contact": "Kathleen Cox " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-08-26T04:47:12.000Z", + "subject": "Est fugiat reprehenderit cupidatat sunt velit aliquip reprehenderit exercitation", + "content": "Hey Brian,\n\nReprehenderit elit do qui ut occaecat veniam. Laboris culpa cupidatat irure ipsum ea cupidatat. Occaecat ea nisi cillum eiusmod. Excepteur dolore ut commodo magna consequat laboris aliquip pariatur reprehenderit laboris. Velit ullamco ipsum ut excepteur enim ipsum consequat reprehenderit eiusmod. Occaecat enim exercitation ipsum nulla dolor anim irure sint dolor do aliquip. Eu tempor sunt non pariatur ut anim eu.\n\nDeserunt cupidatat elit sit cillum qui ut velit ea dolor id sint. Laborum excepteur commodo sit duis. Sit sunt proident laborum ex deserunt cupidatat aliquip tempor id qui deserunt est deserunt et. Qui voluptate veniam nostrud deserunt ullamco nisi occaecat cillum aliquip ullamco. Duis labore sunt ad sunt cillum veniam fugiat deserunt commodo Lorem fugiat et. Eu laborum enim culpa duis esse tempor ex ex. Occaecat cupidatat est reprehenderit cupidatat fugiat amet dolor anim eiusmod.\n\nDolore est occaecat anim aute adipisicing do magna ea aute duis dolore nisi. Irure veniam dolore tempor sint. Irure ullamco aliqua id nisi elit Lorem amet do tempor. Irure aute consectetur dolore nisi nisi excepteur et labore fugiat excepteur duis adipisicing.\n\nKind Regards,\nKathleen Cox", + "attachments": [], + "starred": true, + "important": false, + "unread": false, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [] + }, + { + "id": "6d2bfbce-465b-4e8f-a79e-cd13ab8571c6", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-03.jpg", + "contact": "Kristina Ramirez " + }, + "to": "me ", + "date": "2018-03-06T16:13:56.000Z", + "subject": "Ea eu cupidatat voluptate magna et Lorem veniam aute ipsum consectetur nisi voluptate", + "content": "Dear Brian,\n\nVoluptate esse cillum dolor aliqua. Qui aliqua consectetur tempor irure dolor sunt excepteur eu. Aliqua incididunt velit id minim consequat.\n\nLorem cupidatat aliqua enim fugiat ex aliqua fugiat do ut sint eiusmod. Ex Lorem incididunt velit laboris exercitation aliqua commodo est velit nisi excepteur aute dolor eu. Ad culpa excepteur non laboris occaecat aute sunt ea nostrud ut exercitation fugiat laboris. Ad eiusmod in culpa cupidatat sit pariatur deserunt velit velit elit aliqua duis eiusmod enim.\n\nFugiat ut proident consectetur aliquip consequat sunt ipsum adipisicing. Nisi velit eiusmod sunt voluptate do ea voluptate esse veniam deserunt consectetur Lorem laboris labore. Consectetur aute quis id nisi cillum magna elit veniam fugiat elit aliqua. Mollit aute laborum incididunt sit voluptate consectetur magna do do in duis sunt non culpa.\n\nKind Regards,\nKristina Ramirez", + "attachments": [], + "starred": false, + "important": false, + "unread": true, + "folder": "7c004a19-4506-48ef-93ab-f16381302e3b", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754" + ] + }, + { + "id": "d8815854-8726-4280-a5bf-eafd40b3972a", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-03.jpg", + "contact": "Mays Glass " + }, + "to": "me ", + "date": "2018-01-04T11:10:36.000Z", + "subject": "Culpa ex pariatur aliqua reprehenderit do occaecat nulla ipsum culpa adipisicing", + "content": "Hello Brian,\n\nQuis qui elit eiusmod sint adipisicing in. Adipisicing ipsum reprehenderit id tempor ut. Amet reprehenderit mollit commodo proident nulla velit aliqua ut labore ullamco ea reprehenderit proident deserunt. Consequat deserunt laborum consectetur ea aliquip. Lorem est cillum esse esse consequat sunt enim in deserunt velit. Consectetur velit sunt dolore fugiat eu dolor occaecat occaecat consequat et adipisicing ex ullamco. Officia labore esse esse ipsum ex laborum irure est id veniam aliqua sunt do.\n\nVeniam aute mollit elit duis. Voluptate veniam fugiat occaecat culpa velit fugiat. Irure cillum qui ullamco cillum ut. Culpa id eu nostrud reprehenderit. Aliquip irure cillum tempor non ex. Ex cillum aute minim ut anim sunt dolore cupidatat exercitation ex. In id nostrud sunt ut ea quis aliqua fugiat nostrud fugiat qui dolore adipisicing.\n\nExercitation sint fugiat ullamco id. Consectetur anim duis dolor eiusmod consectetur enim officia dolor elit velit do in laboris id. Reprehenderit fugiat nostrud ea elit do consectetur anim quis enim esse nostrud. Ea ullamco sit anim consequat anim cillum ullamco nostrud commodo fugiat occaecat mollit sint et. Consequat et do do mollit nostrud eiusmod ut magna. Id tempor cillum duis nisi anim velit officia incididunt. Cillum aliqua pariatur laboris deserunt commodo laboris amet.\n\nBest Regards,\nMays Glass", + "attachments": [], + "starred": true, + "important": false, + "unread": true, + "folder": "1ee2ea29-9a1f-4c27-b4d2-5e465703b6a0", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3" + ] + }, + { + "id": "bd7ac4df-77fa-45da-8eaf-31303ba794c4", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-04.jpg", + "contact": "Barber Zimmerman " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-08-09T01:33:05.000Z", + "subject": "Sit elit aliquip sint ullamco tempor in duis Lorem laboris sunt laborum", + "content": "Hi Brian,\n\nAliquip nisi ullamco cupidatat dolore Lorem consectetur quis eiusmod pariatur. Deserunt quis et veniam ea dolore nisi dolor irure anim nisi reprehenderit ex. Deserunt aliqua eu sunt duis ad veniam exercitation nisi deserunt eu. Sint ad ipsum enim laboris. Ut minim proident ut amet officia sit culpa occaecat dolor consequat aliquip minim elit.\n\nElit dolore minim duis officia ullamco reprehenderit laborum incididunt enim do excepteur voluptate elit. Magna adipisicing cupidatat nisi excepteur. Ipsum ex velit pariatur ea veniam aliquip duis consectetur voluptate. Eu velit exercitation veniam nulla consectetur et reprehenderit ullamco. Laborum nisi occaecat laborum adipisicing. Ullamco culpa qui ex pariatur incididunt anim dolor consectetur fugiat et.\n\nIn sunt consequat consectetur culpa. Id aliquip culpa commodo sunt esse anim nulla quis nisi aute occaecat. Anim enim dolor anim dolore.\n\nKind Regards,\nBarber Zimmerman", + "attachments": [], + "starred": true, + "important": true, + "unread": false, + "folder": "1ee2ea29-9a1f-4c27-b4d2-5e465703b6a0", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e" + ] + }, + { + "id": "f5fe9764-70b0-407e-a015-96b04da948a7", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-04.jpg", + "contact": "Ginger Fry " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-01-12T15:46:37.000Z", + "subject": "Fugiat voluptate Lorem id sint enim irure in velit nostrud commodo incididunt", + "content": "Hey Brian,\n\nCillum sunt irure sit reprehenderit ad do mollit Lorem dolor voluptate magna Lorem ad proident. Aliqua qui incididunt nostrud proident. Occaecat voluptate tempor Lorem magna nostrud. Pariatur excepteur id esse proident enim culpa nostrud consectetur tempor exercitation proident ex voluptate tempor. Do id ullamco qui nostrud est occaecat Lorem ipsum ut consectetur culpa velit sunt. Do nisi laborum dolore dolor eu.\n\nAliquip commodo proident tempor est. Aliqua consequat non irure proident consectetur laborum id cupidatat ex enim culpa adipisicing incididunt. Nisi fugiat nisi id reprehenderit fugiat voluptate nostrud esse deserunt. Laboris commodo aliqua qui pariatur. Quis labore commodo aliquip deserunt.\n\nMinim sint tempor consequat consequat commodo velit magna fugiat dolor consectetur est cillum. Minim consequat do excepteur anim consequat. Anim culpa esse adipisicing culpa sit non ut.\n\nKind Regards,\nGinger Fry", + "attachments": [], + "starred": true, + "important": false, + "unread": false, + "folder": "1ee2ea29-9a1f-4c27-b4d2-5e465703b6a0", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7" + ] + }, + { + "id": "3de07c8c-e687-4138-9967-7fd1feea17ee", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-05.jpg", + "contact": "Gardner Burnett " + }, + "to": "me ", + "date": "2018-03-19T13:34:20.000Z", + "subject": "Labore anim ullamco labore nisi eiusmod duis commodo", + "content": "Hello Brian,\n\nAute et mollit quis proident proident. Tempor qui sint proident nulla sit ut nulla incididunt enim. Ut cillum nulla nostrud irure sit. Excepteur culpa magna sunt velit consectetur proident labore laborum amet cillum ex elit excepteur nisi. Consectetur voluptate incididunt nulla dolore in culpa excepteur.\n\nQuis duis consequat est elit pariatur deserunt incididunt in enim excepteur deserunt. Aliquip ea exercitation eiusmod deserunt. Qui incididunt consectetur tempor sunt labore id minim deserunt pariatur adipisicing do. Officia nisi pariatur in ea eiusmod Lorem ut commodo.\n\nLaborum ipsum consectetur excepteur cupidatat labore culpa Lorem. Enim pariatur eu aliqua nisi. Tempor pariatur dolore fugiat nulla est tempor incididunt id cupidatat.\n\nCheers!\nGardner Burnett", + "attachments": [], + "starred": false, + "important": true, + "unread": false, + "folder": "1ee2ea29-9a1f-4c27-b4d2-5e465703b6a0", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7" + ] + }, + { + "id": "d2bbcbbb-aa31-48ee-bbe4-2976b7043e78", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-05.jpg", + "contact": "Lula Lucas " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-11-26T16:08:25.000Z", + "subject": "Quis anim labore esse proident", + "content": "Hi Brian,\n\nEt enim eu esse nostrud minim labore dolor dolor proident ipsum nisi. Occaecat commodo ullamco cupidatat non deserunt eu nisi dolor. Tempor laboris ipsum occaecat consequat reprehenderit do reprehenderit proident elit mollit aliquip officia excepteur eu. Esse excepteur mollit nulla elit non sint. Consectetur sint reprehenderit pariatur pariatur laborum ullamco tempor consectetur consequat proident velit nisi fugiat anim. Lorem reprehenderit enim non excepteur non cupidatat duis aliqua do culpa occaecat velit.\n\nAliqua est ad pariatur ex velit fugiat id do et amet in aliqua. Mollit esse quis culpa mollit. Amet labore nulla qui pariatur aliquip occaecat do ipsum nostrud ipsum consectetur consequat cillum.\n\nNostrud duis cupidatat minim reprehenderit sunt duis consequat veniam enim velit dolore sint. Sint ad aliquip excepteur in tempor anim fugiat ipsum ex ullamco. Aute anim reprehenderit nulla anim pariatur elit mollit et non qui labore culpa laborum pariatur. Cupidatat consequat incididunt aute id. Cillum incididunt ipsum duis reprehenderit cillum ullamco.\n\nKind Regards,\nLula Lucas", + "attachments": [], + "starred": false, + "important": true, + "unread": true, + "folder": "1ee2ea29-9a1f-4c27-b4d2-5e465703b6a0", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754", + "184cd689-4ee4-47cf-9f8a-12233d614326" + ] + }, + { + "id": "1a166107-cc66-42dd-96a2-91b1a40f8c62", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-06.jpg", + "contact": "Mcguire Crosby " + }, + "to": "me ", + "date": "2018-03-09T04:54:41.000Z", + "subject": "Eiusmod esse pariatur ipsum elit laborum tempor cillum amet irure labore duis ad amet aliqua", + "content": "Hey Brian,\n\nNisi laborum deserunt eiusmod veniam eiusmod aliqua dolor. Nostrud dolor deserunt occaecat ipsum sit. Sint nisi magna adipisicing duis id velit pariatur magna est tempor ad.\n\nEt ea pariatur duis voluptate irure. Dolore nisi exercitation nulla officia. Ea eiusmod amet aliqua ut ea velit veniam eu aliqua. Commodo est nisi nulla nulla in eu dolor eiusmod enim do consequat aliqua reprehenderit. Proident ad nulla reprehenderit incididunt incididunt ut. Anim deserunt officia ad dolor ex occaecat veniam mollit ex voluptate occaecat ullamco amet duis.\n\nDuis esse cillum in sit deserunt. Consequat ut tempor consequat qui. Laboris esse ex est ipsum et id est in magna tempor amet irure veniam. Occaecat veniam pariatur Lorem pariatur mollit ullamco occaecat. Labore dolor sit irure sit. Sunt sint dolore ex voluptate nisi sit cillum fugiat aliqua dolore dolore irure sunt commodo. Anim ullamco duis consequat sint in nulla voluptate velit irure.\n\nKind Regards,\nMcguire Crosby", + "attachments": [], + "starred": false, + "important": true, + "unread": false, + "folder": "1ee2ea29-9a1f-4c27-b4d2-5e465703b6a0", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7" + ] + }, + { + "id": "3fbf66d3-cc2d-4256-a276-ad73da93b7fd", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-07.jpg", + "contact": "Walsh Bender " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-11-22T20:26:17.000Z", + "subject": "Mollit voluptate eu excepteur nisi labore dolor aliquip magna incididunt ipsum quis ex irure", + "content": "Dear Brian,\n\nOccaecat id commodo aliqua irure officia consectetur exercitation. Dolor ex aliqua velit proident excepteur enim aliqua cupidatat mollit nisi cillum anim reprehenderit. Lorem nulla amet id laborum fugiat mollit ullamco. Cillum in ea ex Lorem cupidatat eiusmod proident. Cillum nulla ullamco excepteur velit eu sint mollit aliqua sint et officia dolor. Est sit laboris non aute aliqua qui non cillum officia cupidatat. Deserunt voluptate ullamco nisi id aute laboris.\n\nNisi sint do consequat mollit fugiat in est quis. Reprehenderit laboris consectetur exercitation anim dolore occaecat sint. Dolore Lorem dolore veniam cillum ea officia.\n\nSint irure sunt sint ullamco. Nisi est dolore ex ea nostrud enim ex deserunt duis enim tempor pariatur. Minim laborum commodo officia officia do deserunt. Officia consequat elit deserunt quis tempor eiusmod irure sint Lorem magna ea culpa. Adipisicing labore sint elit ex commodo esse duis eiusmod. Id quis non fugiat amet incididunt cillum tempor voluptate.\n\nKind Regards,\nWalsh Bender", + "attachments": [ + { + "type": "image/jpeg", + "name": "mystery-forest.jpg", + "size": 15539, + "preview": "mystery-forest_preview.jpg", + "downloadUrl": "" + }, + { + "type": "application/pdf", + "name": "montly-invoice.pdf", + "size": 243449, + "preview": "pdf", + "downloadUrl": "" + } + ], + "starred": false, + "important": false, + "unread": false, + "folder": "1ee2ea29-9a1f-4c27-b4d2-5e465703b6a0", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3" + ] + }, + { + "id": "b460fff2-8530-4464-8c44-744cd3de3bf8", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-08.jpg", + "contact": "Baker Guthrie " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-07-21T07:51:09.000Z", + "subject": "In ipsum elit esse laboris qui", + "content": "Hey Brian,\n\nId magna ut laborum cillum nisi mollit reprehenderit consectetur aliquip laborum. Tempor excepteur enim esse officia ex Lorem quis exercitation irure ut nisi ex ipsum. Dolor consectetur sint incididunt reprehenderit reprehenderit magna in. Ullamco labore aute dolor do ad mollit velit aliqua. Amet consectetur adipisicing dolore tempor ea. Cupidatat magna occaecat aliquip non eiusmod dolore aliquip cillum irure.\n\nDolore laborum sunt fugiat officia voluptate consectetur sint enim qui dolor cupidatat consequat cupidatat elit. Commodo Lorem ut ut nostrud duis. Id nisi adipisicing incididunt dolor voluptate sit ad cupidatat voluptate. Labore consequat exercitation sint occaecat eu cupidatat incididunt irure ullamco et aute anim cupidatat. Quis aliqua ut eu sunt id.\n\nDeserunt veniam dolor exercitation labore do enim nisi. Veniam ipsum duis consectetur ex voluptate incididunt dolore laborum ad consequat. Fugiat Lorem pariatur duis nostrud duis aliqua ex do. Nisi sunt eiusmod minim exercitation exercitation aliquip non labore nulla proident nisi ipsum. Sunt elit esse officia cupidatat cupidatat. Ad fugiat est ex fugiat.\n\nKind Regards,\nBaker Guthrie", + "attachments": [], + "starred": true, + "important": false, + "unread": true, + "folder": "1ee2ea29-9a1f-4c27-b4d2-5e465703b6a0", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3" + ] + }, + { + "id": "16c18231-82ea-403d-895a-2a4bc27b61ca", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-06.jpg", + "contact": "Olivia Ratliff " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-02-19T13:18:23.000Z", + "subject": "Mollit ex magna non Lorem id", + "content": "Hi Brian,\n\nNostrud dolore tempor amet nostrud ex aliqua duis. Aliqua enim reprehenderit magna et occaecat. Officia veniam sint fugiat dolor esse ullamco ad non nulla deserunt ullamco commodo occaecat consequat.\n\nSunt nisi reprehenderit nisi incididunt sunt do veniam sint proident duis labore nostrud. Nostrud ad voluptate nisi dolor labore Lorem ex minim nostrud ipsum do. Eiusmod officia sunt tempor duis sunt. In anim in excepteur velit id commodo non nisi aute nisi labore. Ea esse velit eiusmod nulla nisi id eiusmod ex mollit voluptate ad ut ea. Reprehenderit magna quis reprehenderit velit ea veniam magna sint ipsum nulla est officia.\n\nEst ex nostrud quis amet mollit aliquip. Et mollit amet id anim sint amet. Officia do nostrud laboris ullamco cupidatat labore quis exercitation proident aliqua. Eiusmod dolore consectetur nisi deserunt culpa occaecat eu culpa do. Voluptate officia dolore non deserunt. Dolore culpa fugiat eiusmod aliquip. Eu laborum irure fugiat duis esse mollit laborum sit et excepteur irure ipsum.\n\nKind Regards,\nOlivia Ratliff", + "attachments": [], + "starred": false, + "important": false, + "unread": false, + "folder": "1ee2ea29-9a1f-4c27-b4d2-5e465703b6a0", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e" + ] + }, + { + "id": "dfa4d802-b833-49c1-afdc-02116d73e35a", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-09.jpg", + "contact": "Schneider Kirby " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-11-12T09:55:21.000Z", + "subject": "Occaecat eiusmod cillum nostrud dolore et proident est esse magna mollit enim", + "content": "Hello Brian,\n\nNon in est voluptate veniam do minim. Ullamco mollit occaecat officia irure tempor deserunt tempor magna voluptate. Id commodo voluptate commodo qui aliqua excepteur aute in eiusmod occaecat quis velit veniam id. Ipsum in sunt aliqua ad eu. Consequat enim commodo ex excepteur pariatur ut.\n\nSunt officia nisi deserunt culpa mollit et duis duis id in nisi. Eiusmod mollit ea qui laborum veniam adipisicing ullamco adipisicing dolor quis enim laboris dolor. Culpa exercitation velit mollit labore incididunt. Veniam deserunt ex ea quis ullamco. Et ex laborum officia non et.\n\nAmet exercitation irure mollit nostrud. Officia dolore nostrud ad do ipsum et laborum consequat ullamco sint consequat amet. Nisi adipisicing ullamco aliqua Lorem quis sint magna veniam. Consequat mollit dolore aliqua ad occaecat. Voluptate aute ea quis sit enim aliquip. Eu dolore nulla minim eu esse minim non cupidatat voluptate laborum do non et. Ut pariatur cillum non labore nostrud amet consectetur consectetur eu cillum.\n\nKind Regards,\nSchneider Kirby", + "attachments": [], + "starred": false, + "important": true, + "unread": false, + "folder": "1ee2ea29-9a1f-4c27-b4d2-5e465703b6a0", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754", + "184cd689-4ee4-47cf-9f8a-12233d614326" + ] + }, + { + "id": "84c4ef35-da0d-4d1f-a966-f7f413545b04", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-10.jpg", + "contact": "Griffith Keith " + }, + "to": "me ", + "date": "2018-12-11T06:27:01.000Z", + "subject": "Ex occaecat qui veniam qui consectetur aliquip ad reprehenderit laborum proident", + "content": "Hi Brian,\n\nExercitation labore cupidatat incididunt velit laboris ipsum anim commodo in do fugiat ea. Incididunt labore quis pariatur laboris sint tempor. Lorem commodo do do ipsum aliqua. Consectetur occaecat ad incididunt consectetur do excepteur ea laborum. Laboris enim proident excepteur ea exercitation deserunt. Sit dolor fugiat velit adipisicing proident ut cillum nisi adipisicing.\n\nConsectetur quis id non mollit minim. Consectetur ut cupidatat enim occaecat sint ex dolor sunt pariatur mollit exercitation. Magna Lorem aliqua nostrud aute ut enim laboris dolore eiusmod est occaecat dolor fugiat occaecat.\n\nCommodo exercitation sit laboris aute deserunt nostrud occaecat do dolore cupidatat consectetur commodo. Cupidatat laborum excepteur voluptate commodo irure. Excepteur enim labore dolore adipisicing ut aute irure. Labore sunt dolor sint magna dolor consequat. Nulla deserunt mollit cillum adipisicing enim est voluptate minim pariatur aliqua elit sint do eiusmod.\n\nCheers!\nGriffith Keith", + "attachments": [], + "starred": false, + "important": true, + "unread": true, + "folder": "1ee2ea29-9a1f-4c27-b4d2-5e465703b6a0", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754" + ] + }, + { + "id": "0c78627f-5cbe-4d21-8491-455e98bf6f69", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-07.jpg", + "contact": "Beverly Pugh " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-10-21T14:36:41.000Z", + "subject": "Mollit irure adipisicing in consectetur aliqua labore pariatur minim", + "content": "Hello Brian,\n\nAute in dolore irure non exercitation. Laborum enim qui nulla irure enim id labore excepteur eiusmod consectetur consequat voluptate exercitation. In laborum reprehenderit incididunt occaecat laborum sit velit.\n\nNulla aliquip labore mollit qui dolore consequat. Enim sunt est nisi reprehenderit tempor amet culpa ex. Eiusmod esse ullamco veniam sunt anim nisi dolore cupidatat id aute.\n\nLorem commodo Lorem qui aliquip eiusmod nisi cupidatat occaecat. Aliqua eiusmod nisi laboris elit commodo qui. Voluptate veniam aliquip ad et pariatur voluptate. Officia non ea laboris dolor excepteur ullamco Lorem dolor esse aute excepteur cillum magna. Cillum et anim adipisicing occaecat consectetur. Non aute culpa pariatur aute fugiat in sint exercitation cillum laborum est non.\n\nBest Regards,\nBeverly Pugh", + "attachments": [], + "starred": true, + "important": true, + "unread": false, + "folder": "1ee2ea29-9a1f-4c27-b4d2-5e465703b6a0", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754" + ] + }, + { + "id": "3d382fb3-b5f5-43e3-b0bc-f2a6f29a5ee6", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-08.jpg", + "contact": "Ila Mclaughlin " + }, + "to": "me ", + "date": "2018-08-01T13:55:15.000Z", + "subject": "Enim proident sit dolor officia sit magna ea tempor", + "content": "Hey Brian,\n\nExcepteur ut minim qui minim mollit. Tempor cupidatat Lorem sint aliquip excepteur sunt est velit nostrud ea. Velit esse ea irure veniam. Dolore tempor nisi occaecat tempor laborum et nulla enim do sint.\n\nId officia ea ad ad occaecat occaecat consequat veniam ad magna cillum incididunt quis tempor. Veniam reprehenderit qui excepteur sint sunt proident ipsum. Exercitation nostrud eiusmod incididunt consequat enim velit sit qui veniam consectetur. Est exercitation tempor ea sunt enim nulla ea proident officia pariatur. Dolor aute exercitation cillum dolore eu sunt veniam id dolore voluptate ut nostrud deserunt. Eiusmod labore anim veniam labore anim nostrud ad nulla labore consequat enim nisi.\n\nLaboris fugiat quis aute duis reprehenderit ut pariatur non incididunt excepteur ea ut. Nisi deserunt tempor Lorem commodo ad pariatur aliquip duis tempor officia irure. Eu fugiat dolore exercitation veniam cillum.\n\nBest Regards,\nIla Mclaughlin", + "attachments": [], + "starred": true, + "important": true, + "unread": true, + "folder": "1ee2ea29-9a1f-4c27-b4d2-5e465703b6a0", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754", + "184cd689-4ee4-47cf-9f8a-12233d614326" + ] + }, + { + "id": "7fd27d57-ccca-432d-af26-c3b609448fb7", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-09.jpg", + "contact": "Jenna Manning " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-12-08T20:09:08.000Z", + "subject": "Quis deserunt excepteur eiusmod reprehenderit enim exercitation voluptate anim", + "content": "Hi Brian,\n\nExcepteur qui anim sint elit. Ad et nostrud non et reprehenderit duis pariatur irure deserunt commodo sit reprehenderit tempor reprehenderit. Aliquip duis mollit duis consequat aute non id do irure. Aute esse sunt labore et voluptate sunt adipisicing tempor. Occaecat tempor exercitation sit duis fugiat ea irure laborum. Consequat quis officia magna fugiat ex.\n\nAliqua non in elit ipsum enim duis dolore laboris in esse duis sunt ea anim. Et laborum sunt in anim ut consequat laborum irure. Deserunt ex veniam laborum tempor cupidatat amet mollit non labore.\n\nDuis veniam occaecat eiusmod velit Lorem ad. Commodo cillum minim id pariatur cupidatat tempor reprehenderit commodo. Dolor anim pariatur nulla qui ut magna nisi reprehenderit sit cupidatat est do. Esse enim Lorem laboris amet reprehenderit pariatur et nostrud minim pariatur. Et dolore qui quis ex consequat consectetur enim veniam veniam veniam magna.\n\nKind Regards,\nJenna Manning", + "attachments": [], + "starred": false, + "important": true, + "unread": true, + "folder": "1ee2ea29-9a1f-4c27-b4d2-5e465703b6a0", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3" + ] + }, + { + "id": "18ba20d3-d7bc-4fc7-85dd-2db4db3196fe", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-10.jpg", + "contact": "Deann Hansen " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2019-01-10T12:13:47.000Z", + "subject": "Duis minim quis in labore voluptate laboris do consequat eu anim sit deserunt incididunt", + "content": "Dear Brian,\n\nPariatur ipsum ipsum aute dolore ipsum ea mollit labore duis tempor aliquip et reprehenderit. Pariatur amet esse minim ad esse aute excepteur in. Quis eu laborum dolore ullamco ipsum incididunt fugiat non laborum est. Duis anim incididunt Lorem Lorem nulla fugiat qui reprehenderit pariatur. Ut est duis in quis excepteur officia. Ullamco excepteur dolor cillum non aliqua non aliqua sit cillum ipsum laboris proident sint. Nulla in dolore deserunt proident commodo enim occaecat cupidatat reprehenderit incididunt dolor laborum do aliqua.\n\nLaboris velit tempor non adipisicing pariatur culpa culpa amet sint deserunt enim. Est aute sit officia quis ex do id ex deserunt ea. Velit in dolor quis exercitation proident mollit sit ad veniam nisi. Cupidatat esse exercitation commodo velit. Commodo veniam occaecat elit deserunt. Sint adipisicing culpa aute occaecat nisi id consequat nisi.\n\nAdipisicing veniam deserunt ipsum mollit. Adipisicing laborum exercitation sint nulla veniam ex ut dolor. Fugiat do ad proident tempor. Id ipsum ex elit id quis laboris ut irure nulla minim reprehenderit minim dolor sunt. Anim nisi cupidatat sint minim fugiat sit sit cupidatat laborum excepteur duis exercitation anim commodo.\n\nBest Regards,\nDeann Hansen", + "attachments": [], + "starred": true, + "important": false, + "unread": false, + "folder": "1ee2ea29-9a1f-4c27-b4d2-5e465703b6a0", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e" + ] + }, + { + "id": "476cb471-b3c1-4235-b5ef-3066b028483d", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-11.jpg", + "contact": "Tisha Moore " + }, + "to": "me ", + "date": "2018-03-07T05:58:09.000Z", + "subject": "Qui irure ea qui labore fugiat ad voluptate esse", + "content": "Hey Brian,\n\nAnim ex voluptate in amet duis labore. Esse id ut exercitation labore velit irure amet laborum. Aliqua ex et est reprehenderit amet quis anim ut qui dolore et sit ea amet.\n\nEnim incididunt sunt deserunt voluptate tempor ut minim laborum pariatur Lorem esse ex cillum. Irure proident amet labore aliqua elit excepteur. Pariatur fugiat sit duis ut in elit.\n\nLorem proident duis occaecat eu proident reprehenderit incididunt amet magna officia et ut. Nisi do labore sit sit eiusmod nostrud consectetur proident enim. Ipsum culpa proident consequat nostrud.\n\nCheers!\nTisha Moore", + "attachments": [], + "starred": true, + "important": true, + "unread": true, + "folder": "1ee2ea29-9a1f-4c27-b4d2-5e465703b6a0", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754" + ] + }, + { + "id": "a8aea501-17e9-4e40-b3a9-04f33b13cb8a", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-12.jpg", + "contact": "Janette Elliott " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-05-07T20:07:15.000Z", + "subject": "Veniam amet voluptate Lorem qui ut id culpa mollit reprehenderit est", + "content": "Hi Brian,\n\nAute veniam laborum ad veniam adipisicing pariatur pariatur eiusmod nulla. Labore ullamco cillum cillum eiusmod id ex occaecat cupidatat ea consequat consequat Lorem amet consectetur. Ullamco irure enim officia ut nostrud. Nisi enim aliqua excepteur voluptate et amet commodo aliqua nulla. Adipisicing in eiusmod in commodo veniam id ea ad dolor sunt pariatur ea non consequat.\n\nDeserunt mollit dolor quis irure ullamco. Consectetur Lorem ipsum ex proident aute aute occaecat adipisicing mollit. Lorem mollit consectetur ad dolor enim mollit non. Laboris pariatur laborum minim magna culpa fugiat ad. Duis ea Lorem cillum adipisicing Lorem.\n\nEnim laboris laboris magna culpa. Consectetur anim occaecat commodo labore nostrud id pariatur. Dolore aliquip irure laborum pariatur mollit sit aute minim in nisi.\n\nCheers!\nJanette Elliott", + "attachments": [], + "starred": false, + "important": true, + "unread": true, + "folder": "1ee2ea29-9a1f-4c27-b4d2-5e465703b6a0", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e" + ] + }, + { + "id": "cb55f824-40ed-4696-afaa-f3f8d3fb8614", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-13.jpg", + "contact": "Bettie Wyatt " + }, + "to": "me ", + "date": "2018-12-03T17:07:32.000Z", + "subject": "Est aliquip nisi pariatur cupidatat veniam qui cillum eu sit ullamco voluptate minim", + "content": "Dear Brian,\n\nEsse laboris commodo ullamco dolor ipsum. Aute cillum velit in aliquip ad adipisicing pariatur ex tempor cillum eu cupidatat laborum. Consectetur aute cupidatat incididunt quis minim elit cupidatat.\n\nEiusmod ea eiusmod nostrud qui amet pariatur laboris non. Proident dolor et pariatur id duis minim enim. Aute ut dolore cupidatat velit sunt.\n\nVeniam magna laborum tempor nostrud aliqua tempor. Pariatur in do id do exercitation non dolor. In elit velit ad Lorem veniam minim Lorem voluptate sint ullamco consectetur aute est. Enim sunt reprehenderit id nisi id. Eu sint incididunt nulla consequat veniam reprehenderit.\n\nBest Regards,\nBettie Wyatt", + "attachments": [], + "starred": true, + "important": false, + "unread": false, + "folder": "fbdc8e79-a0c4-4a27-bc98-9c81ee7a86e5", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7" + ] + }, + { + "id": "92dddecc-4758-4c48-8ef4-a59de4ab0705", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-11.jpg", + "contact": "Hardy Dale " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-11-16T21:53:34.000Z", + "subject": "Aute commodo nostrud nisi quis sunt ex", + "content": "Dear Brian,\n\nDeserunt laborum elit in dolor. Enim duis occaecat minim dolor ex. Consequat et anim mollit nisi ex exercitation culpa non esse velit veniam ad. Sit excepteur nulla laboris reprehenderit. Consequat labore cupidatat Lorem proident proident laborum adipisicing aliqua commodo voluptate esse officia.\n\nAliqua adipisicing sint Lorem id in ad qui. Reprehenderit ullamco labore consectetur commodo Lorem eiusmod culpa. Lorem voluptate ipsum anim ipsum do ullamco eiusmod ad est proident officia. Ut anim deserunt minim laborum minim ea et minim non ad ut. Non ipsum et enim pariatur.\n\nNulla voluptate consectetur id aute ad officia incididunt velit voluptate aliqua deserunt ex. Dolore commodo labore aliqua aliquip magna ipsum laboris cupidatat velit. Et elit labore eu id laborum. Ipsum est pariatur irure aute magna. Fugiat sit voluptate eiusmod consequat.\n\nKind Regards,\nHardy Dale", + "attachments": [], + "starred": false, + "important": true, + "unread": false, + "folder": "fbdc8e79-a0c4-4a27-bc98-9c81ee7a86e5", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e" + ] + }, + { + "id": "3f3f6154-a8ff-40d6-8b57-4c0f73d2cd8b", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-14.jpg", + "contact": "Eileen Bush " + }, + "to": "me ", + "date": "2018-02-24T12:22:13.000Z", + "subject": "Lorem deserunt dolor sunt sit sit mollit", + "content": "Hey Brian,\n\nEu Lorem laborum qui elit id consequat ipsum ex. Minim aute proident aliquip non esse quis voluptate nisi enim. Velit Lorem ea exercitation adipisicing amet deserunt pariatur Lorem amet anim dolore ipsum. Tempor magna voluptate laboris fugiat. Elit ea fugiat cillum Lorem fugiat ipsum officia tempor sit excepteur pariatur minim sint proident.\n\nDeserunt adipisicing dolor do fugiat commodo dolor sit ut culpa ea officia Lorem officia. Nulla elit tempor nostrud nulla. Amet tempor deserunt labore irure est ut officia ullamco velit. Officia tempor anim ex dolor consequat dolore anim do velit qui laboris nisi ipsum. Aute ipsum aliqua ut ullamco laborum pariatur minim mollit consectetur ipsum.\n\nNisi commodo labore nostrud veniam ut aute dolore veniam in. Consectetur commodo proident incididunt aliqua reprehenderit ex nostrud est magna elit reprehenderit. Proident veniam sint occaecat ullamco labore aliquip eiusmod duis sint. Ea ex id eiusmod eu elit ullamco aliqua. Dolore consectetur magna eu voluptate ea aliquip eu et veniam ullamco deserunt magna.\n\nKind Regards,\nEileen Bush", + "attachments": [], + "starred": true, + "important": false, + "unread": false, + "folder": "fbdc8e79-a0c4-4a27-bc98-9c81ee7a86e5", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e" + ] + }, + { + "id": "2c80bcbe-c9cd-4eec-83fa-b9994713a784", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-15.jpg", + "contact": "Melody Mcintosh " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-07-27T07:20:48.000Z", + "subject": "Reprehenderit consequat aliquip duis incididunt excepteur aliquip excepteur velit labore laboris", + "content": "Hey Brian,\n\nEnim ea ad veniam qui magna aliqua ipsum id anim adipisicing voluptate id velit. Elit pariatur magna quis ea adipisicing deserunt officia consectetur in magna culpa sint. Culpa cupidatat anim amet ea elit adipisicing sunt. Incididunt nulla est non cupidatat sit excepteur consectetur culpa labore in sit. Aliqua cupidatat aute qui esse labore aliquip sit exercitation aliqua est magna sint nisi quis.\n\nTempor laboris ullamco culpa dolor ipsum ad aliqua consequat anim reprehenderit aliqua. Proident elit mollit commodo ut Lorem incididunt cillum Lorem eu adipisicing fugiat. Sint velit eiusmod magna occaecat tempor nulla ex ea.\n\nDolore est proident ea deserunt dolore non elit Lorem ipsum sint. Quis ut pariatur cupidatat deserunt. Aliqua sunt labore dolore officia ullamco exercitation id excepteur est et eu consequat esse consectetur. Veniam eu culpa reprehenderit id fugiat aliqua anim id esse commodo velit labore adipisicing. In anim Lorem reprehenderit occaecat do laboris veniam cillum incididunt aute dolor id duis. Est pariatur Lorem consectetur proident est culpa ullamco ea elit incididunt veniam enim elit ipsum.\n\nCheers!\nMelody Mcintosh", + "attachments": [], + "starred": false, + "important": true, + "unread": false, + "folder": "fbdc8e79-a0c4-4a27-bc98-9c81ee7a86e5", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e" + ] + }, + { + "id": "2a44e5b7-e01c-43db-b586-540390f46f95", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-12.jpg", + "contact": "Dale Talley " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-01-02T07:20:01.000Z", + "subject": "Aute occaecat est amet adipisicing aute voluptate incididunt adipisicing pariatur esse anim ipsum labore", + "content": "Hello Brian,\n\nNostrud deserunt do anim pariatur adipisicing cillum enim. Reprehenderit ex ut ullamco deserunt non voluptate laboris eu deserunt sint incididunt anim. Minim non amet quis officia ullamco non do id. Aute deserunt enim laborum elit magna veniam do. Id Lorem mollit eu id ex eiusmod fugiat ad sint quis sunt ipsum eu exercitation. Eiusmod occaecat sit esse cupidatat occaecat quis commodo magna qui. Non consectetur non ad cillum minim eiusmod magna ad nulla.\n\nAd esse anim nostrud do. Officia eiusmod eu reprehenderit do ipsum velit enim. In ullamco ex commodo laboris ut adipisicing elit sit occaecat fugiat officia. Commodo duis aliqua minim nisi.\n\nDuis proident mollit ea do Lorem excepteur. Commodo ex duis minim aute Lorem. Est in quis aliquip in qui minim excepteur aliqua dolor adipisicing. Laborum do tempor voluptate anim elit nisi minim sunt cupidatat.\n\nKind Regards,\nDale Talley", + "attachments": [], + "starred": true, + "important": true, + "unread": false, + "folder": "fbdc8e79-a0c4-4a27-bc98-9c81ee7a86e5", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3" + ] + }, + { + "id": "be1e969d-d52f-4824-83e5-c184b042b601", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-13.jpg", + "contact": "Britt Massey " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-10-09T00:12:17.000Z", + "subject": "Cillum tempor cillum ex esse eu Lorem", + "content": "Hey Brian,\n\nVelit laboris excepteur nulla aliquip excepteur. Culpa incididunt magna minim non aute incididunt officia cillum quis labore pariatur tempor amet. Eiusmod nulla consectetur mollit anim anim aute quis reprehenderit sint eu. Voluptate deserunt voluptate est adipisicing adipisicing qui ullamco ex officia eiusmod. Velit nostrud Lorem enim aute sint anim cupidatat excepteur ea aliqua et. Minim et do irure ut commodo. Cillum quis nulla commodo ipsum tempor.\n\nCulpa duis laboris anim nostrud ipsum laboris exercitation exercitation ut. Dolore duis laborum do sunt non. Eiusmod irure consectetur sint do. Officia adipisicing est id reprehenderit labore.\n\nConsequat eiusmod est labore commodo Lorem ullamco cupidatat id Lorem eiusmod amet do enim qui. Consequat ad ipsum elit non esse labore. Cupidatat eu reprehenderit ad est cillum esse. Nulla eiusmod eiusmod mollit culpa quis sint sit elit aliquip. Incididunt quis consequat amet ipsum amet. Ut officia eu consectetur incididunt adipisicing tempor aute. Reprehenderit labore consequat excepteur esse adipisicing.\n\nBest Regards,\nBritt Massey", + "attachments": [], + "starred": true, + "important": false, + "unread": false, + "folder": "fbdc8e79-a0c4-4a27-bc98-9c81ee7a86e5", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754", + "184cd689-4ee4-47cf-9f8a-12233d614326" + ] + }, + { + "id": "8c7c9bff-6ca6-47ba-9242-cd9b1715eac7", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-16.jpg", + "contact": "Madelyn Haynes " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-03-03T18:08:05.000Z", + "subject": "Irure enim minim dolore et", + "content": "Dear Brian,\n\nSit incididunt Lorem ad cupidatat eiusmod dolore velit. Aliquip dolore quis qui irure consequat velit. Dolor incididunt est magna sit.\n\nConsequat officia nulla culpa officia eiusmod sint. Proident elit irure pariatur eiusmod enim mollit mollit qui. Amet ullamco aliquip sunt fugiat proident est nulla ex ex est ipsum officia. Exercitation qui veniam duis ut veniam aliqua excepteur.\n\nDeserunt ipsum eiusmod labore do minim enim anim. Aliquip mollit magna do eu. Qui duis consectetur exercitation veniam qui. Ea duis nisi aute aute occaecat deserunt magna.\n\nBest Regards,\nMadelyn Haynes", + "attachments": [], + "starred": false, + "important": false, + "unread": false, + "folder": "fbdc8e79-a0c4-4a27-bc98-9c81ee7a86e5", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754" + ] + }, + { + "id": "afd52898-82e9-4fd4-8d6a-2391ec817e2a", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-14.jpg", + "contact": "Rowland Sweet " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-06-22T14:39:18.000Z", + "subject": "Sunt et proident ullamco qui id irure occaecat anim aute elit amet", + "content": "Hey Brian,\n\nLaborum sunt labore esse occaecat duis magna aliquip dolor. Cupidatat irure aute enim minim nisi reprehenderit voluptate occaecat exercitation anim est quis. Magna esse ipsum tempor consectetur non excepteur nostrud. Est consectetur tempor deserunt magna anim culpa sint id elit. Et ullamco non non aute id cupidatat proident aute dolor exercitation excepteur.\n\nEx officia quis irure enim eu in qui sit non. Aliqua fugiat ut sint deserunt veniam quis qui cillum dolor commodo ea exercitation. Deserunt id velit deserunt Lorem elit elit non. Voluptate fugiat est adipisicing non eiusmod voluptate. Reprehenderit tempor id quis cillum nulla sint sit ipsum veniam aliqua.\n\nPariatur dolore ipsum proident irure elit dolore pariatur occaecat qui adipisicing occaecat et aliquip. Ex quis mollit ad Lorem laboris dolor incididunt. Ex consectetur nulla nulla labore dolor. Cillum aliqua duis nulla quis sit laborum magna et exercitation anim deserunt incididunt elit.\n\nBest Regards,\nRowland Sweet", + "attachments": [], + "starred": false, + "important": true, + "unread": true, + "folder": "0197c436-2ef3-424d-b546-8b7f49186e15", + "labels": [] + }, + { + "id": "e43d83f0-51ea-4da9-b18f-0de380b5156a", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-17.jpg", + "contact": "Fern Shaw " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-02-21T06:23:12.000Z", + "subject": "Nisi esse incididunt nisi aliqua aliqua laborum occaecat quis duis minim", + "content": "Dear Brian,\n\nCommodo magna officia qui labore ullamco nostrud. Labore nostrud consequat quis laborum esse velit dolore eu. Esse officia duis nisi dolore culpa elit velit excepteur irure in excepteur officia. Ad anim magna excepteur deserunt aute dolore nulla dolore aute tempor laboris adipisicing. Sit culpa culpa occaecat nostrud magna labore sunt pariatur exercitation qui. Esse ea mollit non sint cupidatat aliqua mollit qui ex tempor exercitation labore minim. Veniam aliquip exercitation ad ex.\n\nOfficia nulla exercitation ullamco proident eu amet occaecat Lorem est est non nulla tempor. Exercitation occaecat ipsum sunt tempor et enim nisi reprehenderit Lorem. Culpa elit ea aliqua est. Et exercitation aliquip aliqua et magna et magna exercitation aliqua exercitation pariatur occaecat.\n\nUllamco ea esse consequat nisi et officia veniam. Duis esse ullamco cupidatat do eiusmod aliquip velit irure sit ad irure officia. Irure veniam sunt aliqua elit ex Lorem qui ullamco qui enim dolore aliquip consectetur quis.\n\nBest Regards,\nFern Shaw", + "attachments": [], + "starred": true, + "important": false, + "unread": true, + "folder": "0197c436-2ef3-424d-b546-8b7f49186e15", + "labels": [] + }, + { + "id": "4e1d4820-e907-405a-990a-4a5772f482ad", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-18.jpg", + "contact": "Lorraine Ballard " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-06-24T13:46:02.000Z", + "subject": "Velit nisi ut laboris id et do aliquip", + "content": "Hey Brian,\n\nOccaecat fugiat minim dolor excepteur. Ullamco quis cillum consectetur mollit id. Duis eiusmod occaecat consectetur duis laborum aliqua occaecat cillum laboris proident cillum. Amet in elit dolore quis amet cupidatat id laboris Lorem do velit occaecat nostrud ad. Eu est pariatur nulla est proident Lorem quis velit fugiat nisi quis. Dolor mollit occaecat duis veniam amet Lorem tempor eiusmod. Consequat ullamco deserunt nulla occaecat officia est qui pariatur velit.\n\nConsequat culpa do ullamco est et veniam incididunt. Exercitation laborum eu proident ex nostrud minim eu proident ad Lorem aute est non ea. Ut quis mollit anim sunt et labore deserunt tempor magna exercitation irure dolor incididunt elit. Mollit amet ad Lorem eiusmod cupidatat adipisicing nostrud. Non dolor ad occaecat officia in dolor. Irure sint quis aliqua deserunt dolore qui sunt cupidatat quis aliqua eu Lorem. Elit sint incididunt do ea amet laborum.\n\nReprehenderit reprehenderit veniam sit exercitation. Tempor ea adipisicing consequat nostrud sint irure nostrud. Dolor est officia adipisicing dolor et pariatur proident quis sint pariatur exercitation commodo. Esse id quis qui aliquip quis.\n\nKind Regards,\nLorraine Ballard", + "attachments": [], + "starred": false, + "important": true, + "unread": false, + "folder": "0197c436-2ef3-424d-b546-8b7f49186e15", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3" + ] + }, + { + "id": "f0f2d069-50a0-484f-a4a2-3a272fcb433b", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-15.jpg", + "contact": "Jennings Franklin " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-04-26T06:34:54.000Z", + "subject": "Enim esse aliqua elit incididunt aliqua mollit amet quis occaecat veniam occaecat proident", + "content": "Hey Brian,\n\nConsectetur laboris voluptate cillum tempor aliqua ullamco sunt do est ea non mollit cupidatat cillum. Aute aliqua eiusmod proident officia enim duis est elit. Fugiat occaecat culpa aliqua in velit elit duis reprehenderit enim dolor eiusmod sit incididunt. Commodo velit ipsum elit amet qui laboris culpa aliquip ad dolor sit. Commodo laboris laborum eiusmod qui in esse excepteur laboris in ad proident deserunt adipisicing. Esse aliqua sit ad veniam sint et culpa minim labore.\n\nUt officia sint nulla enim consectetur eiusmod. Minim nulla cillum aliquip elit ad pariatur ea nulla. Anim occaecat nulla irure ea nisi dolor cupidatat et consectetur id tempor aliqua magna esse. Laborum culpa incididunt cillum excepteur. Nulla laborum dolore qui sit laboris et mollit labore ea magna occaecat. Dolore cillum fugiat eiusmod Lorem ea veniam.\n\nEt cillum enim nulla anim ipsum labore quis amet exercitation occaecat. Et sint eiusmod sint minim do. In esse id ea ut excepteur amet minim Lorem id consectetur cupidatat est. Dolor pariatur commodo eu est. Consequat aliquip est qui mollit excepteur ex do adipisicing.\n\nKind Regards,\nJennings Franklin", + "attachments": [], + "starred": false, + "important": false, + "unread": true, + "folder": "0197c436-2ef3-424d-b546-8b7f49186e15", + "labels": [] + }, + { + "id": "7c93dbde-8b56-43a3-ade1-b132906679c4", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-19.jpg", + "contact": "Colette Cole " + }, + "to": "me ", + "date": "2018-09-21T08:37:21.000Z", + "subject": "Sit non consequat et fugiat id laboris", + "content": "Hello Brian,\n\nIpsum non nisi ut do occaecat pariatur et duis eiusmod sint. Consequat do eu adipisicing fugiat incididunt dolor proident cupidatat reprehenderit dolor proident. Duis non eiusmod sit enim esse fugiat sit amet tempor ea ad adipisicing quis aliquip. Labore in cillum ipsum officia est irure incididunt fugiat id in eu Lorem. Occaecat eu veniam voluptate fugiat fugiat laborum veniam voluptate. Do exercitation mollit fugiat duis deserunt. Mollit aute non quis ex officia non amet amet dolor ullamco sint sunt.\n\nDolore incididunt ad ad anim minim. Sunt reprehenderit duis occaecat labore dolore irure elit. Excepteur laboris et proident nulla magna duis et. Eiusmod veniam ea culpa cillum incididunt ad officia. Labore in non voluptate ullamco velit ex aliqua aliqua amet nisi incididunt exercitation. Labore qui est adipisicing labore anim officia ullamco aliquip anim commodo ipsum mollit.\n\nQuis cillum non consequat ea esse laboris duis mollit et id consectetur nisi eu pariatur. In fugiat culpa aliqua eu culpa ea nisi incididunt. Pariatur excepteur laborum nulla ea ex reprehenderit ea deserunt.\n\nKind Regards,\nColette Cole", + "attachments": [], + "starred": false, + "important": false, + "unread": false, + "folder": "0197c436-2ef3-424d-b546-8b7f49186e15", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3" + ] + }, + { + "id": "7335d11d-04b1-4250-817a-6fdf3e099239", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-20.jpg", + "contact": "Kim Carlson " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-11-28T07:57:15.000Z", + "subject": "Ullamco ad consectetur ut esse", + "content": "Dear Brian,\n\nReprehenderit aliqua nulla tempor nostrud. Excepteur nostrud nostrud velit magna pariatur nisi anim excepteur consectetur proident irure cillum dolore et. Nostrud esse deserunt veniam exercitation et dolore fugiat tempor. Sit duis adipisicing sint aliqua. Ipsum anim sit velit ipsum ipsum occaecat sit ea Lorem ex pariatur. Anim laboris exercitation tempor officia in enim.\n\nEsse sunt aliquip nulla ipsum laborum irure minim Lorem eiusmod ut et occaecat. Ipsum deserunt nulla duis nisi dolore. Aliquip ea exercitation magna esse laboris consectetur culpa labore reprehenderit ipsum dolor veniam sunt. In consequat cillum irure elit sunt ea Lorem mollit sint tempor reprehenderit laborum velit consequat. Proident aute deserunt Lorem tempor labore incididunt eu adipisicing proident nulla anim exercitation. Laborum adipisicing id id aliquip. Velit proident consectetur consequat nisi dolor aliquip mollit ad officia proident ea nostrud ea.\n\nProident sunt velit adipisicing voluptate amet est dolor reprehenderit deserunt laboris ullamco velit. Veniam nulla esse cupidatat magna ut consequat in et ipsum mollit ad non Lorem. Sit duis qui eiusmod exercitation commodo voluptate laborum. Exercitation consequat mollit nisi mollit deserunt sunt. Fugiat incididunt magna ad nostrud non amet incididunt veniam et veniam nulla ipsum fugiat.\n\nBest Regards,\nKim Carlson", + "attachments": [], + "starred": true, + "important": false, + "unread": false, + "folder": "0197c436-2ef3-424d-b546-8b7f49186e15", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3" + ] + }, + { + "id": "e9dd17ec-4fc3-424e-89e5-c58d9d235764", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-01.jpg", + "contact": "Rena Park " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-10-13T12:57:58.000Z", + "subject": "Nulla qui anim ullamco officia elit", + "content": "Hi Brian,\n\nDuis qui qui ad aliqua ad incididunt non exercitation do qui aliqua quis. Eiusmod amet irure minim fugiat ex et sint. Occaecat laboris minim eu exercitation nostrud commodo qui deserunt. Sunt voluptate eiusmod minim commodo. Est excepteur est irure laborum mollit qui excepteur culpa consequat.\n\nEx consectetur minim elit excepteur ad ad ea anim in elit. Velit dolor qui incididunt pariatur aliquip reprehenderit laboris fugiat. Veniam laboris elit ipsum eiusmod dolore labore excepteur enim pariatur.\n\nDolore sit aliquip velit voluptate ipsum in dolor laboris nisi occaecat minim. Ad sunt reprehenderit sit proident occaecat amet aute esse enim. Elit aute adipisicing mollit reprehenderit tempor ex elit proident. Aute exercitation commodo esse exercitation.\n\nBest Regards,\nRena Park", + "attachments": [], + "starred": true, + "important": false, + "unread": false, + "folder": "0197c436-2ef3-424d-b546-8b7f49186e15", + "labels": [] + }, + { + "id": "5fb8f4b5-fad4-4a82-8519-a732e68a48be", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-16.jpg", + "contact": "Haney Gibson " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-10-23T00:16:47.000Z", + "subject": "Veniam consequat ipsum occaecat ipsum", + "content": "Hey Brian,\n\nMinim adipisicing sint do irure. Reprehenderit reprehenderit dolor tempor anim exercitation qui aliqua. Laboris consectetur labore quis deserunt culpa amet eiusmod minim cillum. Id consequat dolore aliqua sit sunt cillum incididunt aliqua sint dolore quis eiusmod elit aliquip. Nisi aute mollit ipsum dolore eiusmod incididunt. Tempor officia culpa consequat laboris culpa. Lorem pariatur irure minim dolore elit enim elit esse nostrud.\n\nAmet ipsum officia sunt aliqua laborum mollit Lorem et. Est consectetur eu nostrud minim minim irure occaecat sint ea. Ut magna aliqua labore exercitation. Minim sint excepteur cupidatat esse quis do duis ad. Est magna in velit ut cupidatat mollit non do id ea ut non.\n\nDolor dolor elit fugiat aliqua aliquip in officia. Elit et cupidatat commodo laboris nostrud fugiat non cupidatat velit pariatur. Labore anim velit proident nisi ullamco. Reprehenderit adipisicing nisi laboris ut.\n\nBest Regards,\nHaney Gibson", + "attachments": [], + "starred": false, + "important": true, + "unread": true, + "folder": "0197c436-2ef3-424d-b546-8b7f49186e15", + "labels": [] + }, + { + "id": "e766ddd9-e9ea-499c-bb10-72fa57a03059", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-02.jpg", + "contact": "Freda Frank " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-11-21T01:26:11.000Z", + "subject": "Magna sint dolor sit laborum enim", + "content": "Hello Brian,\n\nExcepteur occaecat dolor ex Lorem sunt velit enim eiusmod et fugiat mollit fugiat labore proident. Lorem mollit exercitation labore dolor ullamco proident non irure aliquip. Cillum laboris sit incididunt nulla dolor. Irure mollit mollit irure incididunt eiusmod consequat. Mollit in nisi enim veniam culpa mollit id dolor.\n\nSunt cillum esse est ut exercitation voluptate Lorem. Duis labore ut ullamco non ea do minim in cupidatat magna officia. Ullamco qui occaecat esse magna Lorem occaecat veniam in. Deserunt voluptate do voluptate nulla fugiat laborum officia Lorem mollit quis. Eiusmod sit pariatur qui sint ea irure cillum officia deserunt. Eiusmod irure in enim ullamco Lorem aliqua ad.\n\nDuis deserunt in nisi aute excepteur exercitation minim. Tempor pariatur qui irure laborum in incididunt. Dolor eu aliqua enim cupidatat ad aliquip culpa ipsum consequat consequat. Lorem nostrud deserunt officia commodo. Dolore officia ipsum cupidatat tempor ex occaecat pariatur anim ea consectetur incididunt. Veniam ad pariatur pariatur dolor enim tempor sint aliqua quis minim aliquip magna mollit eiusmod.\n\nKind Regards,\nFreda Frank", + "attachments": [], + "starred": false, + "important": false, + "unread": false, + "folder": "0197c436-2ef3-424d-b546-8b7f49186e15", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e" + ] + }, + { + "id": "03693a62-d6bd-47c8-8f8e-112f21042722", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-17.jpg", + "contact": "Burns White " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-05-14T20:06:57.000Z", + "subject": "Veniam cillum ad proident incididunt nisi exercitation est", + "content": "Hi Brian,\n\nEsse reprehenderit duis labore aliqua magna mollit ut aliquip. Fugiat aliquip ipsum aliqua laborum ipsum sint nisi proident laborum consectetur dolor veniam commodo. Ea veniam eu laborum nulla non voluptate incididunt nostrud nulla fugiat velit. Nulla aliqua sit eu amet mollit. Aute laboris excepteur ut quis elit non anim aliqua ut et ea cillum consequat ex. Pariatur tempor esse excepteur ea nostrud incididunt culpa elit aliquip proident tempor non id consectetur. Duis eiusmod sint deserunt tempor mollit sint do ad labore adipisicing.\n\nElit enim ipsum mollit pariatur in officia non qui est ipsum dolore Lorem nostrud nulla. Adipisicing aliquip enim ullamco minim in sint aliqua magna enim adipisicing. Reprehenderit ea nulla velit nostrud veniam qui est elit dolore. Et dolor labore commodo veniam aliquip laborum consequat voluptate fugiat et eu. Veniam minim sunt ex laborum. Aliquip nostrud minim pariatur nostrud eiusmod mollit minim irure aliqua. Minim id Lorem magna nostrud consequat irure.\n\nDuis id deserunt eiusmod adipisicing fugiat in irure sit aliqua ipsum velit. Aute aliquip Lorem pariatur cillum fugiat labore et. Ipsum commodo sunt enim eiusmod adipisicing exercitation elit adipisicing culpa laborum cupidatat laboris duis. Mollit officia consectetur voluptate nisi mollit. Magna ipsum sint sint est culpa in magna ad eu quis officia.\n\nBest Regards,\nBurns White", + "attachments": [], + "starred": true, + "important": false, + "unread": false, + "folder": "0197c436-2ef3-424d-b546-8b7f49186e15", + "labels": [] + }, + { + "id": "c59f5ea4-4f5d-4b9e-9c3c-a996b18fd98c", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-18.jpg", + "contact": "Fischer Cervantes " + }, + "to": "me ", + "date": "2018-12-13T03:52:15.000Z", + "subject": "Amet aute tempor sit tempor minim nulla dolor commodo aute eu", + "content": "Hi Brian,\n\nCulpa nulla est deserunt ut. Culpa eu velit occaecat ut sint voluptate. Nostrud sint officia pariatur eiusmod commodo laborum. Proident consequat nostrud anim qui velit quis.\n\nVoluptate occaecat pariatur minim eu culpa ex sit nostrud. Amet id proident consequat commodo ullamco deserunt eu occaecat anim do exercitation sit quis non. Voluptate eiusmod aute cillum culpa sit. Dolore cillum ea ex reprehenderit occaecat ullamco. Est nulla minim est do adipisicing id in et nostrud voluptate. Proident eiusmod enim cupidatat minim. Amet minim sunt incididunt pariatur amet cupidatat eu exercitation officia laborum.\n\nId elit minim exercitation occaecat exercitation. Cupidatat officia duis duis id nisi nostrud quis dolor officia. Dolore occaecat aliqua eiusmod mollit commodo officia sunt sit laboris nisi excepteur irure duis fugiat.\n\nKind Regards,\nFischer Cervantes", + "attachments": [], + "starred": true, + "important": true, + "unread": true, + "folder": "0197c436-2ef3-424d-b546-8b7f49186e15", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7" + ] + }, + { + "id": "9ed5d4c1-819a-4719-88d7-cd7b08b2228d", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-19.jpg", + "contact": "Cervantes Reyes " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-10-16T11:06:27.000Z", + "subject": "Et eu adipisicing aliqua nisi minim commodo anim aliqua aliquip", + "content": "Hi Brian,\n\nDo irure id voluptate occaecat quis eiusmod. Nulla non incididunt do ut excepteur proident nulla aliqua minim ex. Enim et elit eiusmod ex dolor aliqua et cupidatat consectetur nulla consectetur et fugiat cillum. Amet ea laboris non duis voluptate id fugiat voluptate et sit magna fugiat quis non.\n\nAmet tempor tempor ut eu proident deserunt. Velit exercitation irure sunt mollit veniam exercitation eiusmod nisi do velit labore sit. In exercitation et Lorem pariatur dolor aliquip aliquip occaecat. Consectetur aliqua ea voluptate aliquip consectetur do tempor sunt sint elit. Exercitation ipsum cupidatat qui exercitation cillum non cupidatat occaecat. Cupidatat consequat ut quis ad incididunt proident culpa qui minim.\n\nEu adipisicing voluptate amet occaecat amet est qui eu nisi aliqua. Quis labore in minim esse deserunt labore nulla qui dolor nulla id veniam nulla. Nulla aliquip pariatur id sunt fugiat laboris incididunt sunt ipsum. Sint dolor non nulla aliqua ea dolor officia veniam officia deserunt duis deserunt. Veniam esse consectetur deserunt excepteur laborum aliquip qui labore. Reprehenderit labore ex do nostrud esse.\n\nBest Regards,\nCervantes Reyes", + "attachments": [], + "starred": false, + "important": true, + "unread": true, + "folder": "0197c436-2ef3-424d-b546-8b7f49186e15", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3" + ] + }, + { + "id": "a769720b-0c64-483c-925c-5d747c61bff4", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-20.jpg", + "contact": "Cooke Whitney " + }, + "to": "me ", + "date": "2018-07-28T14:16:37.000Z", + "subject": "Est veniam aliquip culpa deserunt commodo ad laboris ad ullamco", + "content": "Hi Brian,\n\nVoluptate consequat ullamco eiusmod deserunt eu laborum ullamco Lorem minim eiusmod est eu elit esse. Enim ipsum irure occaecat magna. Esse labore irure incididunt mollit dolor veniam ut magna aliquip. In ex consequat culpa nisi in exercitation. Sunt tempor quis deserunt laborum nulla ad.\n\nVoluptate mollit nostrud consectetur amet enim dolor. Consequat deserunt eiusmod incididunt cupidatat ex anim aliquip minim mollit incididunt tempor. Quis quis deserunt et tempor sunt laboris quis non enim veniam nisi nulla. Ea adipisicing incididunt laboris incididunt exercitation voluptate exercitation ipsum velit duis aute cupidatat labore. Nulla ea non est deserunt proident deserunt qui irure quis enim occaecat cupidatat. Sint veniam consequat Lorem dolore commodo aliqua et. Ad commodo qui ad ea consectetur non dolore dolor.\n\nAnim exercitation id do laborum quis laborum elit officia cupidatat sunt consectetur officia ex excepteur. Cillum cupidatat et consectetur ex aliquip anim Lorem eiusmod nostrud reprehenderit. Magna ullamco qui incididunt dolore anim ad laborum. Laborum occaecat laboris consequat et esse nostrud elit anim amet incididunt aliquip mollit ad proident. Voluptate pariatur ex adipisicing dolore dolor adipisicing cupidatat tempor amet duis dolore sunt consequat qui. Mollit do ullamco enim nulla dolore proident in. Ipsum irure cillum irure aute culpa duis eu est dolore est laborum.\n\nKind Regards,\nCooke Whitney", + "attachments": [], + "starred": true, + "important": false, + "unread": true, + "folder": "0197c436-2ef3-424d-b546-8b7f49186e15", + "labels": [] + }, + { + "id": "e6b83f13-c25e-4355-913f-54d93d8393f6", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-03.jpg", + "contact": "Lee Lloyd " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-10-18T02:56:36.000Z", + "subject": "Culpa incididunt amet sunt ipsum ad nostrud exercitation ea", + "content": "Hi Brian,\n\nDolore voluptate ea id aliquip qui cillum. Adipisicing velit esse et sunt culpa quis velit mollit culpa mollit nostrud. Nulla ad elit cupidatat ex id velit proident aliquip sit irure aliquip exercitation exercitation. Occaecat proident reprehenderit consectetur tempor velit amet cupidatat.\n\nAd est sunt commodo occaecat cillum fugiat minim reprehenderit minim nulla id velit. Ullamco enim ullamco qui eu ut est qui dolore reprehenderit non tempor excepteur. Fugiat irure in pariatur qui incididunt minim cillum. Aliquip incididunt reprehenderit cillum laborum eiusmod sint aute sint. Deserunt pariatur deserunt elit ut velit cupidatat. Ad deserunt ea laborum reprehenderit laboris ut pariatur labore.\n\nLabore ullamco irure mollit aliqua irure officia est excepteur ut. Dolore amet ut id fugiat deserunt reprehenderit pariatur anim. Dolor est amet ipsum labore fugiat culpa minim anim aliqua. Officia ad duis est irure in consequat nostrud duis. Irure sit quis ad nisi qui adipisicing labore consectetur consequat duis eiusmod nisi. Non dolore tempor exercitation nulla nisi Lorem eu adipisicing aliqua dolore qui non. Enim non exercitation occaecat reprehenderit adipisicing dolore laboris eiusmod.\n\nCheers!\nLee Lloyd", + "attachments": [], + "starred": false, + "important": true, + "unread": true, + "folder": "2fa74637-d362-4fd2-9a88-f7195a88bdde", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3" + ] + }, + { + "id": "5c5c4ba7-542b-46b0-b0ce-976f5189d72c", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-01.jpg", + "contact": "Benson Shields " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-04-01T20:39:05.000Z", + "subject": "Sit incididunt ad tempor veniam duis", + "content": "Dear Brian,\n\nAnim dolor exercitation magna qui incididunt ullamco enim. Voluptate qui laborum tempor ex minim eu dolore officia Lorem do pariatur laborum. Esse et ullamco reprehenderit nisi anim nostrud est deserunt.\n\nQuis qui commodo exercitation minim ea nisi. Aliqua culpa ad aliqua velit eiusmod do duis ex commodo eiusmod. Laborum nostrud nulla qui non reprehenderit voluptate cillum mollit exercitation anim ipsum cillum.\n\nEiusmod nisi ullamco ex ut velit. Ipsum sint dolor minim aute minim mollit ullamco voluptate magna nulla sint. Pariatur Lorem pariatur velit laboris tempor excepteur tempor reprehenderit culpa Lorem.\n\nKind Regards,\nBenson Shields", + "attachments": [], + "starred": true, + "important": true, + "unread": true, + "folder": "2fa74637-d362-4fd2-9a88-f7195a88bdde", + "labels": [] + }, + { + "id": "36abfef2-f86a-4c9e-99de-1869f0b3e71b", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-02.jpg", + "contact": "Emerson Whitehead " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-06-24T11:19:49.000Z", + "subject": "Esse ea ut est excepteur", + "content": "Hey Brian,\n\nEst consequat aute laborum voluptate do aliqua cillum non excepteur nostrud culpa enim veniam nulla. Proident et nisi consequat nisi labore incididunt eiusmod fugiat. Nisi sint ut sint proident culpa pariatur ipsum quis dolor voluptate. Elit proident laboris eu elit. Id nisi dolor quis nostrud cillum quis ut ad quis velit eiusmod.\n\nMinim reprehenderit ullamco culpa cupidatat voluptate ut sunt. Exercitation sit dolore ullamco commodo exercitation cupidatat nulla officia Lorem exercitation officia minim. Reprehenderit ex incididunt magna id culpa incididunt ex reprehenderit ea veniam culpa id occaecat.\n\nDo esse ut non laborum aute. Aute laborum tempor eiusmod id amet anim. Quis exercitation id fugiat deserunt in do irure duis. Id ad ea eiusmod magna excepteur nulla.\n\nCheers!\nEmerson Whitehead", + "attachments": [], + "starred": true, + "important": false, + "unread": true, + "folder": "2fa74637-d362-4fd2-9a88-f7195a88bdde", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754" + ] + }, + { + "id": "b1a0ab26-6c86-4888-b2f1-69928b3ca718", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-04.jpg", + "contact": "Annabelle Greene " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-08-30T03:24:13.000Z", + "subject": "Commodo reprehenderit laborum nostrud culpa et aliquip", + "content": "Hey Brian,\n\nConsequat amet proident esse laboris nisi excepteur mollit enim ad ipsum. Eiusmod culpa anim magna laboris amet veniam qui. Mollit minim elit tempor in nostrud incididunt pariatur. Ea dolor laboris cupidatat in aliquip elit proident ipsum ad. Ad do pariatur do magna eu voluptate eu qui commodo consectetur exercitation pariatur eu.\n\nSit est nisi tempor eiusmod esse laboris reprehenderit laborum quis incididunt duis amet esse. Lorem do do nulla est. Deserunt magna laborum do pariatur excepteur amet laboris anim sunt nulla. Veniam aliqua non adipisicing id cillum laborum aliqua. Reprehenderit deserunt amet nulla proident. Voluptate aliqua occaecat ex ut deserunt amet voluptate quis id pariatur excepteur incididunt. Magna ex nulla minim magna id cillum nisi id quis culpa consequat ea exercitation.\n\nIncididunt et aliqua officia sit nulla anim commodo est. Irure commodo veniam quis qui ad sit labore mollit in officia non incididunt in tempor. Tempor nulla velit excepteur esse. Duis enim sunt irure consectetur excepteur fugiat duis pariatur exercitation cupidatat commodo. Do cupidatat et labore magna dolor aliquip aute tempor aute. Et sit fugiat commodo eiusmod qui ex minim dolor eu do minim qui veniam.\n\nBest Regards,\nAnnabelle Greene", + "attachments": [], + "starred": false, + "important": true, + "unread": false, + "folder": "2fa74637-d362-4fd2-9a88-f7195a88bdde", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e" + ] + }, + { + "id": "87cf5188-34dc-4947-b780-48c7fb6b6b23", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-03.jpg", + "contact": "Dawson Lewis " + }, + "to": "me ", + "date": "2018-08-03T03:03:12.000Z", + "subject": "Ipsum duis sint incididunt nulla in labore nulla", + "content": "Hello Brian,\n\nAdipisicing quis deserunt consectetur proident eiusmod velit irure minim dolore sunt aliqua aliqua. Dolore excepteur ea commodo consectetur. Qui veniam est do cillum non excepteur adipisicing excepteur quis sit. Do cupidatat consectetur pariatur nulla exercitation dolor exercitation mollit. Elit culpa ea mollit laboris anim nisi id velit. Elit esse ad commodo dolor culpa nostrud consequat Lorem laboris pariatur et esse. Nisi elit esse ad cupidatat commodo eiusmod irure aliquip sit deserunt id anim tempor.\n\nIrure deserunt dolore nisi magna ipsum ut qui amet elit consectetur ex pariatur. Aliquip anim nostrud enim exercitation commodo eiusmod mollit qui id nulla. Lorem aute exercitation commodo enim veniam ea aute laborum consequat sunt proident eu. Quis deserunt incididunt mollit adipisicing nostrud laboris. Laborum elit velit proident aliquip ex aliqua dolore magna cillum adipisicing nisi cillum sunt esse.\n\nCillum eu id cillum eu incididunt adipisicing pariatur est sint minim voluptate Lorem Lorem excepteur. Aliqua ipsum non occaecat aute eiusmod deserunt aliquip. Sit incididunt cupidatat pariatur exercitation laborum id qui ut pariatur deserunt fugiat occaecat occaecat incididunt. Amet ad do esse et aliquip magna ullamco commodo deserunt exercitation irure. Consequat dolor magna mollit laboris pariatur laboris.\n\nBest Regards,\nDawson Lewis", + "attachments": [], + "starred": true, + "important": true, + "unread": true, + "folder": "2fa74637-d362-4fd2-9a88-f7195a88bdde", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754" + ] + }, + { + "id": "8749e3bc-24b3-43f3-997b-ee0b5bd7a442", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-04.jpg", + "contact": "Cole Dotson " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-09-04T09:09:08.000Z", + "subject": "Sint quis veniam tempor sint", + "content": "Hi Brian,\n\nReprehenderit magna Lorem voluptate mollit irure nulla duis est adipisicing. Velit labore ullamco sit dolore. Officia magna est sunt esse veniam eiusmod nostrud laboris eiusmod ullamco nostrud cupidatat veniam.\n\nAliqua veniam magna laborum laboris officia. Excepteur occaecat nisi culpa anim amet dolore culpa culpa laborum veniam deserunt esse sunt. Nostrud tempor adipisicing sit eiusmod dolore.\n\nUt adipisicing labore officia ipsum qui officia aute. Qui in et quis ut qui labore irure. Minim voluptate qui occaecat est. Laborum aliquip enim elit incididunt eiusmod ea sit id in. Qui nostrud ad nostrud deserunt incididunt aute in aliquip.\n\nBest Regards,\nCole Dotson", + "attachments": [], + "starred": false, + "important": false, + "unread": true, + "folder": "2fa74637-d362-4fd2-9a88-f7195a88bdde", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754" + ] + }, + { + "id": "108ca3fa-a4dd-4988-a7ea-659ab4446050", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-05.jpg", + "contact": "Bernard Cunningham " + }, + "to": "me ", + "date": "2018-08-21T08:51:03.000Z", + "subject": "Consequat Lorem fugiat et veniam ad veniam proident excepteur laborum", + "content": "Dear Brian,\n\nEu voluptate exercitation nulla aliqua id laboris ipsum voluptate nulla ea laboris. Magna exercitation reprehenderit mollit velit irure minim elit officia eiusmod reprehenderit non quis. Esse sunt non nisi id irure commodo incididunt amet.\n\nAdipisicing quis mollit velit ullamco enim ad laborum ex dolor ut culpa exercitation sit commodo. Amet eu et ullamco ut elit anim nulla fugiat sint. Laborum tempor incididunt laboris id pariatur velit excepteur officia nostrud mollit occaecat sit. Nulla do fugiat tempor quis reprehenderit fugiat aute. Dolor laboris amet do anim occaecat sunt in duis reprehenderit cupidatat mollit consequat nisi.\n\nUllamco ad minim dolore excepteur amet ullamco quis esse officia voluptate. Ipsum ex dolore labore enim. Cupidatat cillum exercitation cupidatat id eu esse aute tempor ut qui sit.\n\nCheers!\nBernard Cunningham", + "attachments": [], + "starred": true, + "important": true, + "unread": true, + "folder": "2fa74637-d362-4fd2-9a88-f7195a88bdde", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754" + ] + }, + { + "id": "63a362be-4ea7-4cc1-985f-5202db9c1370", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-06.jpg", + "contact": "Edwards Mcconnell " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-07-20T05:22:32.000Z", + "subject": "Amet ipsum voluptate voluptate dolore proident voluptate officia cillum adipisicing tempor tempor ad anim", + "content": "Hey Brian,\n\nAliqua Lorem fugiat in fugiat commodo laborum sit mollit Lorem elit. Nulla incididunt sint nostrud magna labore elit quis ex. Ex dolore labore tempor cillum magna tempor est exercitation in proident. Dolor est esse consectetur veniam sint proident enim mollit.\n\nQui eiusmod laborum veniam officia quis nisi cillum dolor cupidatat magna. Quis exercitation excepteur incididunt duis laboris ex Lorem laborum excepteur adipisicing. Fugiat exercitation reprehenderit veniam minim occaecat. Excepteur fugiat irure magna aliquip ut amet quis fugiat consectetur ea. Commodo est fugiat ea et labore dolore ullamco nulla excepteur officia ea. Lorem sunt officia pariatur ullamco sunt commodo fugiat enim. Consectetur amet duis et deserunt elit pariatur eiusmod amet excepteur fugiat dolore aliqua eu.\n\nLabore velit ea non elit esse commodo fugiat. Culpa eiusmod consequat sint laboris. Irure proident non laboris duis nisi.\n\nBest Regards,\nEdwards Mcconnell", + "attachments": [], + "starred": true, + "important": false, + "unread": false, + "folder": "2fa74637-d362-4fd2-9a88-f7195a88bdde", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7" + ] + }, + { + "id": "ce206b7e-bbd0-4cd1-b69a-a8d4ef5b10bf", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-05.jpg", + "contact": "Lizzie Sanders " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-09-07T01:29:31.000Z", + "subject": "Sint enim elit Lorem laboris", + "content": "Dear Brian,\n\nNostrud Lorem sit dolore eiusmod culpa ut deserunt do. Esse nulla nostrud cupidatat aliquip ut veniam velit cillum amet cillum ea culpa culpa in. Pariatur eu duis adipisicing sint velit eu duis ex officia enim nulla. Sunt fugiat incididunt et id nulla ut ea in.\n\nCillum id ea nisi consectetur nostrud adipisicing magna incididunt ipsum reprehenderit. Exercitation labore nisi magna fugiat officia culpa id commodo eu. Ad ullamco amet pariatur deserunt elit et dolore quis cillum laboris Lorem dolore labore laboris.\n\nEst mollit aliquip labore ad duis quis mollit sunt cillum cupidatat excepteur. Ad dolor cupidatat incididunt deserunt. Ullamco id sunt et ad nisi Lorem irure. Aliquip enim occaecat velit laboris et ullamco sint dolore anim. Proident nisi nulla labore enim dolor. Ipsum eu qui nisi minim aliqua ullamco exercitation. In sint id pariatur id aliqua velit reprehenderit consequat aliquip.\n\nCheers!\nLizzie Sanders", + "attachments": [], + "starred": false, + "important": true, + "unread": true, + "folder": "2fa74637-d362-4fd2-9a88-f7195a88bdde", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754", + "184cd689-4ee4-47cf-9f8a-12233d614326" + ] + }, + { + "id": "f7c2e821-b2e2-4103-bb20-ddcd3a42dc7c", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-06.jpg", + "contact": "Elise Hicks " + }, + "to": "me ", + "cc": [ + "Graham Belltower ", + "Julie T. " + ], + "date": "2018-03-04T15:45:07.000Z", + "subject": "Cillum proident non officia mollit nulla dolor eiusmod et aliquip laboris ut adipisicing dolor deserunt", + "content": "Hi Brian,\n\nVelit proident et qui quis enim. Aute cillum ad ipsum esse nulla. Enim elit quis laborum id excepteur non consectetur ut incididunt enim adipisicing minim est. Dolor pariatur pariatur est cillum consectetur eu do deserunt labore duis incididunt et. Magna laboris labore velit velit ad aliquip magna.\n\nLaboris occaecat duis aliqua culpa culpa culpa quis eu et dolore. Quis irure mollit irure sint fugiat. Ea elit adipisicing incididunt cillum proident esse esse tempor nulla laborum incididunt reprehenderit. Sit minim laborum dolor magna sunt pariatur. Voluptate ullamco exercitation deserunt ea consequat aliqua Lorem non velit irure et adipisicing labore.\n\nVoluptate id exercitation eiusmod mollit et commodo sit consequat minim id. Consectetur eiusmod reprehenderit veniam elit dolor qui quis occaecat nisi ut commodo excepteur. Minim do ad veniam ullamco ea magna occaecat velit. Non do ea officia cupidatat ex proident veniam nostrud. Non occaecat laboris ad est quis ad. Commodo non aliquip nisi ullamco ullamco consequat eiusmod aliqua est sunt incididunt commodo et nostrud.\n\nCheers!\nElise Hicks", + "attachments": [], + "starred": true, + "important": true, + "unread": false, + "folder": "2fa74637-d362-4fd2-9a88-f7195a88bdde", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e" + ] + }, + { + "id": "d8ca28a0-7fb7-4cd4-9058-3a867f841f76", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-07.jpg", + "contact": "Sherri Roth " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-12-20T09:37:24.000Z", + "subject": "Ex laboris et sunt ex aute aute nisi", + "content": "Hey Brian,\n\nLaboris eu incididunt reprehenderit eiusmod. Non ad tempor fugiat aliquip aliquip ullamco deserunt deserunt occaecat Lorem. Esse ut velit labore magna nostrud do eu fugiat do adipisicing fugiat fugiat id in. Reprehenderit magna aute sunt proident anim nostrud ex Lorem.\n\nDolor proident et quis ea anim sit deserunt ea non nisi. Ullamco fugiat proident consectetur qui reprehenderit incididunt anim fugiat pariatur eiusmod quis quis. Amet anim veniam labore aliquip est occaecat do magna consectetur mollit fugiat. Ut fugiat eu deserunt mollit mollit cupidatat.\n\nNisi culpa et magna est officia duis laboris adipisicing ullamco pariatur sunt nulla aute proident. Ex incididunt veniam fugiat do proident ullamco tempor qui eu qui consequat anim. Commodo minim consectetur excepteur amet in sint adipisicing cillum tempor sint et nulla. Cupidatat ut commodo esse labore anim.\n\nCheers!\nSherri Roth", + "attachments": [], + "starred": true, + "important": false, + "unread": true, + "folder": "2fa74637-d362-4fd2-9a88-f7195a88bdde", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3" + ] + }, + { + "id": "b48be636-410c-485a-9442-7de7ce807dc2", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-07.jpg", + "contact": "Skinner Hawkins " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-06-10T07:50:01.000Z", + "subject": "Eu cillum amet dolore labore voluptate qui mollit ad anim ipsum laborum eiusmod aliquip", + "content": "Hi Brian,\n\nFugiat nisi eu aliquip do elit irure enim consectetur officia consequat. Quis eiusmod minim sint veniam quis dolor sit excepteur officia reprehenderit. Aute ex ea eu eiusmod. Consectetur velit dolore laboris proident ex. Enim sint dolore adipisicing occaecat et magna quis. Enim nostrud nisi sunt deserunt.\n\nOccaecat laborum voluptate quis culpa duis cillum excepteur velit ullamco duis nisi. Nulla cillum ea Lorem reprehenderit. Ea proident deserunt mollit esse pariatur est duis aute Lorem. Id deserunt nulla elit velit veniam ut consectetur Lorem exercitation do laborum nisi Lorem.\n\nVelit sint exercitation et ullamco ipsum deserunt irure. Consectetur mollit aliqua duis commodo laboris sit consequat laborum mollit aliquip anim. Occaecat enim quis in ullamco voluptate dolore enim culpa Lorem est consectetur deserunt tempor labore. Do non ex irure dolor elit ea Lorem duis esse sit eu fugiat eiusmod.\n\nCheers!\nSkinner Hawkins", + "attachments": [], + "starred": true, + "important": true, + "unread": true, + "folder": "2fa74637-d362-4fd2-9a88-f7195a88bdde", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7" + ] + }, + { + "id": "efe990eb-6559-48a6-a909-320c465de739", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-08.jpg", + "contact": "Velma Ellison " + }, + "to": "me ", + "date": "2018-11-01T10:59:46.000Z", + "subject": "Ex duis cupidatat qui velit", + "content": "Hey Brian,\n\nSint labore adipisicing consequat ipsum. Proident aute et reprehenderit sint laborum nulla dolor. Dolor commodo consectetur nulla id reprehenderit veniam enim culpa ad irure esse Lorem amet. Tempor laboris aute ea sint. Elit laboris eu aliquip tempor eu Lorem eu ex.\n\nMagna dolore officia in excepteur. Reprehenderit in ipsum ea ex voluptate reprehenderit et aliquip commodo deserunt excepteur nisi reprehenderit quis. Consectetur do mollit non nisi exercitation elit anim laboris elit cillum excepteur. Veniam qui deserunt culpa enim esse eu Lorem. Est in consequat cupidatat elit in nisi deserunt.\n\nProident consequat ea nisi eiusmod esse incididunt exercitation. Consequat labore veniam non elit duis aute eiusmod labore est irure. Aliquip velit minim nisi qui est. Consequat ea dolor nostrud incididunt. Nulla commodo consectetur occaecat eu nisi ullamco cillum culpa ea magna. Eiusmod quis in ex veniam duis esse do. Laboris quis mollit mollit ex nulla officia irure pariatur qui aute consectetur ad esse.\n\nCheers!\nVelma Ellison", + "attachments": [], + "starred": true, + "important": false, + "unread": false, + "folder": "2fa74637-d362-4fd2-9a88-f7195a88bdde", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7" + ] + }, + { + "id": "d2bc3670-63f7-47c3-9d3d-4998c716f04a", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-09.jpg", + "contact": "Tamara Fitzgerald " + }, + "to": "me ", + "date": "2018-02-24T15:37:16.000Z", + "subject": "Et esse sit eiusmod dolore eiusmod ad sit ipsum adipisicing ut esse", + "content": "Dear Brian,\n\nIn exercitation pariatur id occaecat reprehenderit exercitation ullamco nostrud consequat nostrud anim labore reprehenderit. Pariatur ea amet eiusmod consequat aliquip culpa aute. Officia elit non nulla ullamco aliquip est nulla quis nostrud consequat irure.\n\nFugiat nisi labore excepteur non mollit duis. Irure voluptate fugiat duis ullamco exercitation cupidatat est ullamco culpa. Quis nisi nostrud nisi non commodo veniam Lorem officia proident fugiat elit exercitation consectetur. Cupidatat cupidatat mollit amet nisi voluptate et ea sint sint. Excepteur ad aute reprehenderit nisi dolore sint eu fugiat consequat nulla proident ipsum ad voluptate. Ea officia aute incididunt commodo consectetur aliquip sint. Irure veniam ipsum anim incididunt aliquip est enim consequat anim cillum veniam laborum enim laborum.\n\nAnim non eiusmod elit id cillum minim minim qui amet sint. Incididunt ullamco exercitation consequat ipsum sit eiusmod minim dolore sint laborum labore. Velit incididunt nulla consectetur duis duis. Sit labore duis nostrud tempor. Elit excepteur nostrud adipisicing eu quis ex. Aute aliquip esse laborum irure in officia qui voluptate laboris magna reprehenderit.\n\nKind Regards,\nTamara Fitzgerald", + "attachments": [], + "starred": true, + "important": true, + "unread": true, + "folder": "2fa74637-d362-4fd2-9a88-f7195a88bdde", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e" + ] + }, + { + "id": "07b4d696-7657-4535-9838-3efb42355cbb", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-08.jpg", + "contact": "Duncan Gilmore " + }, + "to": "me ", + "date": "2018-12-31T08:15:40.000Z", + "subject": "Ipsum non ad commodo dolor enim labore ullamco", + "content": "Hey Brian,\n\nDuis commodo commodo exercitation ex incididunt fugiat incididunt duis ex. Proident tempor nulla culpa consequat non est incididunt amet ipsum anim. Non ipsum irure consectetur nisi exercitation. Nostrud occaecat ullamco ad et tempor magna sint ea minim duis consectetur aute velit incididunt. Ad amet exercitation consectetur mollit proident minim anim excepteur nostrud.\n\nEt in nulla laboris minim ex excepteur culpa exercitation officia labore nostrud quis. Est officia velit ullamco aute consectetur Lorem consectetur voluptate qui eu. Elit non nulla laboris enim in esse quis. Pariatur ullamco cupidatat cupidatat non et anim in dolor magna quis Lorem dolore et. Sit ullamco cillum reprehenderit eu. Ut id ipsum duis occaecat occaecat.\n\nFugiat excepteur et aute magna fugiat ut consequat adipisicing quis deserunt id sint occaecat. Ut cupidatat est nisi fugiat enim laborum. Nostrud est nisi occaecat ut Lorem.\n\nKind Regards,\nDuncan Gilmore", + "attachments": [], + "starred": true, + "important": false, + "unread": true, + "folder": "2fa74637-d362-4fd2-9a88-f7195a88bdde", + "labels": [] + }, + { + "id": "b8424db5-c607-4b9a-b88f-78c54343a342", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/female-10.jpg", + "contact": "Betty Dean " + }, + "to": "me ", + "date": "2018-08-16T06:17:15.000Z", + "subject": "Laborum magna cupidatat qui sint proident aliquip ut commodo aute sint", + "content": "Dear Brian,\n\nConsequat aliquip ut laboris non velit dolor fugiat. Nisi ut laborum amet occaecat proident deserunt excepteur sunt occaecat pariatur sint ullamco fugiat aliquip. Ea excepteur commodo magna ut deserunt. Reprehenderit eu quis nisi esse eiusmod ut ullamco. Esse est pariatur id labore anim cillum dolore nulla esse dolor eiusmod do magna est.\n\nDo fugiat dolore duis ex consequat amet sunt reprehenderit enim non dolore incididunt pariatur. Excepteur ipsum labore est cupidatat laborum do consectetur tempor ipsum eiusmod. Voluptate eiusmod nostrud occaecat nisi laboris et velit non nostrud. Nulla id commodo laboris culpa id cillum nostrud deserunt fugiat excepteur nisi irure laborum. Irure in aute ea non magna Lorem aute consequat excepteur duis occaecat cupidatat ea. Tempor Lorem ullamco ullamco occaecat ipsum duis aliqua velit labore dolore veniam. Mollit ex commodo qui esse.\n\nLabore et nostrud do dolor. Sit duis proident nulla mollit officia. Deserunt voluptate ad anim in id consectetur excepteur Lorem quis. Consectetur officia esse cillum Lorem aliqua ex sit proident qui occaecat. Deserunt magna in consectetur velit proident sint cupidatat commodo veniam sint cillum amet aliqua. Aute cillum officia culpa Lorem mollit amet culpa incididunt dolore voluptate minim. Aliqua fugiat aliquip nulla dolore elit aliqua quis veniam ullamco in adipisicing deserunt.\n\nCheers!\nBetty Dean", + "attachments": [], + "starred": true, + "important": false, + "unread": true, + "folder": "2fa74637-d362-4fd2-9a88-f7195a88bdde", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754" + ] + }, + { + "id": "edf1399f-e829-4bde-ae5b-e03d18ad2f76", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-09.jpg", + "contact": "Pate Gardner " + }, + "to": "me ", + "date": "2018-05-26T10:36:30.000Z", + "subject": "Non labore sit dolor quis in qui esse velit ad sit", + "content": "Hi Brian,\n\nMinim ea eiusmod eu cillum enim amet minim commodo reprehenderit ullamco pariatur sunt adipisicing excepteur. Laboris aute velit cillum aute laborum exercitation. Aute esse qui aliquip et proident excepteur nulla ullamco id quis culpa consectetur ea in. Aute ad dolor culpa voluptate deserunt consectetur Lorem ex est. Id consequat laborum qui elit velit. Nostrud incididunt ullamco ad aute officia adipisicing proident consectetur qui in fugiat elit. Qui sit officia amet ex occaecat irure.\n\nIncididunt sit est quis mollit ex nostrud dolore ullamco officia laboris. Reprehenderit labore anim ea tempor officia officia et duis cupidatat adipisicing dolore. Dolore exercitation minim culpa ut est magna aute adipisicing quis. Eiusmod nulla mollit nulla dolor elit aute incididunt aute officia tempor enim do. Fugiat tempor non dolore quis nisi do laborum qui.\n\nEst et cupidatat nulla laboris amet ut laboris. Lorem in esse culpa sunt laborum. Commodo est nisi ullamco esse veniam.\n\nKind Regards,\nPate Gardner", + "attachments": [], + "starred": true, + "important": false, + "unread": true, + "folder": "2fa74637-d362-4fd2-9a88-f7195a88bdde", + "labels": [] + }, + { + "id": "bcc422a2-8a39-416e-8205-a5ce354ea622", + "type": "mail", + "from": { + "avatar": "assets/images/avatars/male-10.jpg", + "contact": "Lawson Kidd " + }, + "to": "me ", + "cc": [ + "Graham Belltower " + ], + "date": "2018-03-18T02:18:44.000Z", + "subject": "Proident non proident dolore non dolor reprehenderit", + "content": "Hello Brian,\n\nDeserunt cillum in non et. Occaecat consequat cupidatat occaecat dolor laboris id nostrud laborum. Incididunt commodo eiusmod id irure ex amet. Aute officia ut voluptate id ex ut ex minim velit. Ullamco est pariatur et quis. Sint eiusmod labore qui minim laboris esse aliquip culpa in incididunt reprehenderit.\n\nNon aliqua anim occaecat cupidatat qui adipisicing elit et aliquip adipisicing cillum in in eu. Velit esse exercitation eiusmod ad id sunt duis voluptate sint veniam proident. Ullamco sit ut laboris minim voluptate ut velit excepteur ad. Ad aute et consequat pariatur aute in ipsum enim ea nostrud excepteur consequat est. Et magna excepteur irure do adipisicing. Id fugiat quis et deserunt sit nostrud fugiat eu do eu ullamco.\n\nVelit aliqua ea id ipsum irure exercitation. Et duis aliquip exercitation amet in minim aliqua proident nisi velit irure excepteur non eu. Eiusmod irure tempor mollit velit culpa excepteur in minim eiusmod. Duis et commodo qui elit quis anim consectetur elit reprehenderit. Labore aliqua cupidatat Lorem eu officia exercitation labore aliqua mollit magna ullamco cupidatat. Nostrud ea commodo ad ad eiusmod velit eiusmod. Laborum aliquip exercitation mollit et irure occaecat.\n\nKind Regards,\nLawson Kidd", + "attachments": [], + "starred": true, + "important": true, + "unread": false, + "folder": "2fa74637-d362-4fd2-9a88-f7195a88bdde", + "labels": [ + "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "b2d1e4e7-7cfd-4b51-ae59-217a093df754", + "184cd689-4ee4-47cf-9f8a-12233d614326" + ] + } + ] + }, + "mailbox_folders": { + "value": [ + { + "id": "7c004a19-4506-48ef-93ab-f16381302e3b", + "title": "Inbox", + "slug": "inbox", + "icon": "heroicons-outline:inbox" + }, + { + "id": "1ee2ea29-9a1f-4c27-b4d2-5e465703b6a0", + "title": "Sent", + "slug": "sent", + "icon": "heroicons-outline:paper-airplane" + }, + { + "id": "fbdc8e79-a0c4-4a27-bc98-9c81ee7a86e5", + "title": "Drafts", + "slug": "drafts", + "icon": "heroicons-outline:document" + }, + { + "id": "0197c436-2ef3-424d-b546-8b7f49186e15", + "title": "Spam", + "slug": "spam", + "icon": "heroicons-outline:exclamation" + }, + { + "id": "2fa74637-d362-4fd2-9a88-f7195a88bdde", + "title": "Trash", + "slug": "trash", + "icon": "heroicons-outline:trash" + } + ] + }, + "mailbox_filters": { + "value": [ + { + "id": "de1b41f6-6839-4f1b-9d2c-07e55f6f8f82", + "title": "Starred", + "slug": "starred", + "icon": "heroicons-outline:star" + }, + { + "id": "71bba1ec-a90e-4a71-9932-4bab0a99aa1c", + "title": "Important", + "slug": "important", + "icon": "heroicons-outline:exclamation-circle" + } + ] + }, + "mailbox_labels": { + "value": [ + { + "id": "b167d3c4-f6ed-4ea6-9579-a12f95a9d76e", + "title": "Personal", + "slug": "personal", + "color": "blue" + }, + { + "id": "745cf30e-ca84-47a1-a553-b70eb630d8e7", + "title": "Work", + "slug": "work", + "color": "indigo" + }, + { + "id": "8b035cb5-65c0-4ab1-bb4c-43b0e442d1f3", + "title": "Payments", + "slug": "payments", + "color": "red" + }, + { + "id": "b2d1e4e7-7cfd-4b51-ae59-217a093df754", + "title": "Invoices", + "slug": "invoices", + "color": "teal" + }, + { + "id": "184cd689-4ee4-47cf-9f8a-12233d614326", + "title": "Accounts", + "slug": "accounts", + "color": "purple" + }, + { + "id": "b67fc437-6118-4ec8-a3c7-9320b828e3fc", + "title": "Forums", + "slug": "forums", + "color": "green" + } + ] + }, + "calendar_labels": { + "value": [ + { + "id": "1a470c8e-40ed-4c2d-b590-a4f1f6ead6cc", + "title": "Personal", + "color": "#419388" + }, + { + "id": "5dab5f7b-757a-4467-ace1-305fe07b11fe", + "title": "Work", + "color": "#4151B0" + }, + { + "id": "09887870-f85a-40eb-8171-1b13d7a7f529", + "title": "Appointments", + "color": "#D63E63" + } + ] + }, + "calendar_events": { + "value": [ + { + "id": "0", + "title": "All Day Event very long title", + "allDay": true, + "start": "2022-04-01T00:00:00+03:00", + "end": "2022-04-02T00:00:00+03:00", + "extendedProps": { + "desc": "Big conference for important people", + "label": "5dab5f7b-757a-4467-ace1-305fe07b11fe" + } + }, + { + "id": "1", + "title": "Long Event", + "allDay": false, + "start": "2022-04-07T00:00:00+03:00", + "end": "2022-04-10T00:00:00+03:00", + "extendedProps": { + "desc": "", + "label": "09887870-f85a-40eb-8171-1b13d7a7f529" + } + }, + { + "id": "2", + "title": "DTS STARTS", + "allDay": false, + "start": "2022-03-13T00:00:00+03:00", + "end": "2022-03-20T00:00:00+03:00", + "extendedProps": { + "desc": "", + "label": "1a470c8e-40ed-4c2d-b590-a4f1f6ead6cc" + } + }, + { + "id": "3", + "title": "DTS ENDS", + "allDay": false, + "start": "2022-11-06T00:00:00+03:00", + "end": "2022-11-13T00:00:00+03:00", + "extendedProps": { + "desc": "", + "label": "09887870-f85a-40eb-8171-1b13d7a7f529" + } + }, + { + "id": "4", + "title": "Some Event", + "allDay": false, + "start": "2022-04-09T00:00:00+03:00", + "end": "2022-04-10T00:00:00+03:00", + "extendedProps": { + "desc": "", + "label": "1a470c8e-40ed-4c2d-b590-a4f1f6ead6cc" + } + }, + { + "id": "5", + "title": "Conference", + "allDay": false, + "start": "2022-04-11T00:00:00+03:00", + "end": "2022-04-13T00:00:00+03:00", + "extendedProps": { + "desc": "Big conference for important people", + "label": "09887870-f85a-40eb-8171-1b13d7a7f529" + } + }, + { + "id": "6", + "title": "Meeting", + "allDay": false, + "start": "2022-04-12T10:30:00+03:00", + "end": "2022-04-12T12:30:00+03:00", + "extendedProps": { + "desc": "Pre-meeting meeting, to prepare for the meeting", + "label": "5dab5f7b-757a-4467-ace1-305fe07b11fe" + } + }, + { + "id": "7", + "title": "Lunch", + "allDay": false, + "start": "2022-04-12T12:00:00+03:00", + "end": "2022-04-12T13:00:00+03:00", + "extendedProps": { + "desc": "Power lunch", + "label": "1a470c8e-40ed-4c2d-b590-a4f1f6ead6cc" + } + }, + { + "id": "8", + "title": "Meeting", + "allDay": false, + "start": "2022-04-12T14:00:00+03:00", + "end": "2022-04-12T15:00:00+03:00", + "extendedProps": { + "desc": "", + "label": "1a470c8e-40ed-4c2d-b590-a4f1f6ead6cc" + } + }, + { + "id": "9", + "title": "Happy Hour", + "allDay": false, + "start": "2022-04-12T17:00:00+03:00", + "end": "2022-04-12T17:30:00+03:00", + "extendedProps": { + "desc": "Most important meal of the day", + "label": "09887870-f85a-40eb-8171-1b13d7a7f529" + } + }, + { + "id": "10", + "title": "Dinner", + "allDay": false, + "start": "2022-04-12T20:00:00+03:00", + "end": "2022-04-12T21:00:00+03:00", + "extendedProps": { + "desc": "", + "label": "1a470c8e-40ed-4c2d-b590-a4f1f6ead6cc" + } + }, + { + "id": "11", + "title": "Birthday Party", + "allDay": false, + "start": "2022-04-13T07:00:00+03:00", + "end": "2022-04-13T10:30:00+03:00", + "extendedProps": { + "desc": "", + "label": "5dab5f7b-757a-4467-ace1-305fe07b11fe" + } + }, + { + "id": "12", + "title": "Late Night Event", + "allDay": false, + "start": "2022-04-17T19:30:00+03:00", + "end": "2022-04-18T02:00:00+03:00", + "extendedProps": { + "desc": "", + "label": "09887870-f85a-40eb-8171-1b13d7a7f529" + } + }, + { + "id": "13", + "title": "Multi-day Event", + "allDay": false, + "start": "2022-04-20T19:30:00+03:00", + "end": "2022-04-22T02:00:00+03:00", + "extendedProps": { + "desc": "", + "label": "09887870-f85a-40eb-8171-1b13d7a7f529" + } + } + ] + }, + "project_dashboard_widgets": { + "value": { + "summary": { + "ranges": { + "DY": "Yesterday", + "DT": "Today", + "DTM": "Tomorrow" + }, + "currentRange": "DT", + "data": { + "name": "Due Tasks", + "count": { + "DY": 21, + "DT": 25, + "DTM": 19 + }, + "extra": { + "name": "Completed", + "count": { + "DY": 6, + "DT": 7, + "DTM": "-" + } + } + }, + "detail": "You can show some detailed information about this widget in here." + }, + "overdue": { + "title": "Overdue", + "data": { + "name": "Tasks", + "count": 4, + "extra": { + "name": "Yesterday's overdue", + "count": 2 + } + }, + "detail": "You can show some detailed information about this widget in here." + }, + "issues": { + "title": "Issues", + "data": { + "name": "Open", + "count": 32, + "extra": { + "name": "Closed today", + "count": 0 + } + }, + "detail": "You can show some detailed information about this widget in here." + }, + "features": { + "title": "Features", + "data": { + "name": "Proposals", + "count": 42, + "extra": { + "name": "Implemented", + "count": 8 + } + }, + "detail": "You can show some detailed information about this widget in here." + }, + "githubIssues": { + "overview": { + "this-week": { + "new-issues": 214, + "closed-issues": 75, + "fixed": 3, + "wont-fix": 4, + "re-opened": 8, + "needs-triage": 6 + }, + "last-week": { + "new-issues": 197, + "closed-issues": 72, + "fixed": 6, + "wont-fix": 11, + "re-opened": 6, + "needs-triage": 5 + } + }, + "ranges": { + "this-week": "This Week", + "last-week": "Last Week" + }, + "labels": [ + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat", + "Sun" + ], + "series": { + "this-week": [ + { + "name": "New issues", + "type": "line", + "data": [ + 42, + 28, + 43, + 34, + 20, + 25, + 22 + ] + }, + { + "name": "Closed issues", + "type": "column", + "data": [ + 11, + 10, + 8, + 11, + 8, + 10, + 17 + ] + } + ], + "last-week": [ + { + "name": "New issues", + "type": "line", + "data": [ + 37, + 32, + 39, + 27, + 18, + 24, + 20 + ] + }, + { + "name": "Closed issues", + "type": "column", + "data": [ + 9, + 8, + 10, + 12, + 7, + 11, + 15 + ] + } + ] + } + }, + "taskDistribution": { + "ranges": { + "this-week": "This Week", + "last-week": "Last Week" + }, + "overview": { + "this-week": { + "new": 594, + "completed": 287 + }, + "last-week": { + "new": 526, + "completed": 260 + } + }, + "labels": [ + "API", + "Backend", + "Frontend", + "Issues" + ], + "series": { + "this-week": [ + 15, + 20, + 38, + 27 + ], + "last-week": [ + 19, + 16, + 42, + 23 + ] + } + }, + "schedule": { + "ranges": { + "today": "Today", + "tomorrow": "Tomorrow" + }, + "series": { + "today": [ + { + "title": "Group Meeting", + "time": "in 32 minutes", + "location": "Conference room 1B" + }, + { + "title": "Coffee Break", + "time": "10:30 AM" + }, + { + "title": "Public Beta Release", + "time": "11:00 AM" + }, + { + "title": "Lunch", + "time": "12:10 PM" + }, + { + "title": "Dinner with David", + "time": "05:30 PM", + "location": "Magnolia" + }, + { + "title": "Jane's Birthday Party", + "time": "07:30 PM", + "location": "Home" + }, + { + "title": "Overseer's Retirement Party", + "time": "09:30 PM", + "location": "Overseer's room" + } + ], + "tomorrow": [ + { + "title": "Marketing Meeting", + "time": "09:00 AM", + "location": "Conference room 1A" + }, + { + "title": "Public Announcement", + "time": "11:00 AM" + }, + { + "title": "Lunch", + "time": "12:10 PM" + }, + { + "title": "Meeting with Beta Testers", + "time": "03:00 PM", + "location": "Conference room 2C" + }, + { + "title": "Live Stream", + "time": "05:30 PM" + }, + { + "title": "Release Party", + "time": "07:30 PM", + "location": "CEO's house" + }, + { + "title": "CEO's Private Party", + "time": "09:30 PM", + "location": "CEO's Penthouse" + } + ] + } + }, + "budgetDistribution": { + "categories": [ + "Concept", + "Design", + "Development", + "Extras", + "Marketing" + ], + "series": [ + { + "name": "Budget", + "data": [ + 12, + 20, + 28, + 15, + 25 + ] + } + ] + }, + "weeklyExpenses": { + "amount": 17663, + "labels": [ + "05 Jan - 12 Jan", + "13 Jan - 20 Jan", + "21 Jan - 28 Jan", + "29 Jan - 05 Feb", + "06 Feb - 13 Feb", + "14 Feb - 21 Feb" + ], + "series": [ + { + "name": "Expenses", + "data": [ + 4412, + 4345, + 4541, + 4677, + 4322, + 4123 + ] + } + ] + }, + "monthlyExpenses": { + "amount": 54663, + "labels": [ + "21 Jan - 28 Jan", + "29 Jan - 05 Feb", + "06 Feb - 13 Feb", + "14 Feb - 21 Feb" + ], + "series": [ + { + "name": "Expenses", + "data": [ + 15521, + 15519, + 15522, + 15521 + ] + } + ] + }, + "yearlyExpenses": { + "amount": 648813, + "labels": [ + "04 Dec - 11 Dec", + "12 Dec - 19 Dec", + "20 Dec - 27 Dec", + "28 Dec - 04 Jan", + "05 Jan - 12 Jan", + "13 Jan - 20 Jan", + "21 Jan - 28 Jan", + "29 Jan - 05 Feb", + "06 Feb - 13 Feb", + "14 Feb - 21 Feb" + ], + "series": [ + { + "name": "Expenses", + "data": [ + 45891, + 45801, + 45834, + 45843, + 45800, + 45900, + 45814, + 45856, + 45910, + 45849 + ] + } + ] + }, + "budgetDetails": { + "columns": [ + "Type", + "Total Budget", + "Expenses (USD)", + "Expenses (%)", + "Remaining (USD)", + "Remaining (%)" + ], + "rows": [ + { + "type": "Concept", + "total": 14880, + "expensesAmount": 14000, + "expensesPercentage": 94.08, + "remainingAmount": 880, + "remainingPercentage": 5.92 + }, + { + "type": "Design", + "total": 21080, + "expensesAmount": 17240.34, + "expensesPercentage": 81.78, + "remainingAmount": 3839.66, + "remainingPercentage": 18.22 + }, + { + "type": "Development", + "total": 34720, + "expensesAmount": 3518, + "expensesPercentage": 10.13, + "remainingAmount": 31202, + "remainingPercentage": 89.87 + }, + { + "type": "Extras", + "total": 18600, + "expensesAmount": 0, + "expensesPercentage": 0, + "remainingAmount": 18600, + "remainingPercentage": 100 + }, + { + "type": "Marketing", + "total": 34720, + "expensesAmount": 19859.84, + "expensesPercentage": 57.2, + "remainingAmount": 14860.16, + "remainingPercentage": 42.8 + } + ] + }, + "teamMembers": [ + { + "id": "2bfa2be5-7688-48d5-b5ac-dc0d9ac97f14", + "avatar": "assets/images/avatars/female-10.jpg", + "name": "Nadia Mcknight", + "email": "nadiamcknight@mail.com", + "phone": "+1-943-511-2203", + "title": "Project Director" + }, + { + "id": "77a4383b-b5a5-4943-bc46-04c3431d1566", + "avatar": "assets/images/avatars/male-19.jpg", + "name": "Best Blackburn", + "email": "blackburn.best@beadzza.me", + "phone": "+1-814-498-3701", + "title": "Senior Developer" + }, + { + "id": "8bb0f597-673a-47ca-8c77-2f83219cb9af", + "avatar": "assets/images/avatars/male-14.jpg", + "name": "Duncan Carver", + "email": "duncancarver@mail.info", + "phone": "+1-968-547-2111", + "title": "Senior Developer" + }, + { + "id": "c318e31f-1d74-49c5-8dae-2bc5805e2fdb", + "avatar": "assets/images/avatars/male-01.jpg", + "name": "Martin Richards", + "email": "martinrichards@mail.biz", + "phone": "+1-902-500-2668", + "title": "Junior Developer" + }, + { + "id": "0a8bc517-631a-4a93-aacc-000fa2e8294c", + "avatar": "assets/images/avatars/female-20.jpg", + "name": "Candice Munoz", + "email": "candicemunoz@mail.co.uk", + "phone": "+1-838-562-2769", + "title": "Lead Designer" + }, + { + "id": "a4c9945a-757b-40b0-8942-d20e0543cabd", + "avatar": "assets/images/avatars/female-01.jpg", + "name": "Vickie Mosley", + "email": "vickiemosley@mail.net", + "phone": "+1-939-555-3054", + "title": "Designer" + }, + { + "id": "b8258ccf-48b5-46a2-9c95-e0bd7580c645", + "avatar": "assets/images/avatars/female-02.jpg", + "name": "Tina Harris", + "email": "tinaharris@mail.ca", + "phone": "+1-933-464-2431", + "title": "Designer" + }, + { + "id": "f004ea79-98fc-436c-9ba5-6cfe32fe583d", + "avatar": "assets/images/avatars/male-02.jpg", + "name": "Holt Manning", + "email": "holtmanning@mail.org", + "phone": "+1-822-531-2600", + "title": "Marketing Manager" + }, + { + "id": "8b69fe2d-d7cc-4a3d-983d-559173e37d37", + "avatar": "assets/images/avatars/female-03.jpg", + "name": "Misty Ramsey", + "email": "mistyramsey@mail.us", + "phone": "+1-990-457-2106", + "title": "Consultant" + } + ] + } + }, + "analytics_dashboard_widgets": { + "value": { + "visitors": { + "ranges": { + "this-year": "This Year", + "last-year": "Last Year" + }, + "series": { + "this-year": [ + { + "name": "Visitors", + "data": [ + { + "x": "2021-02-22T09:21:32.663Z", + "y": 4884 + }, + { + "x": "2021-02-25T09:21:32.663Z", + "y": 5351 + }, + { + "x": "2021-02-28T09:21:32.663Z", + "y": 5293 + }, + { + "x": "2021-03-03T09:21:32.663Z", + "y": 4908 + }, + { + "x": "2021-03-06T09:21:32.663Z", + "y": 5027 + }, + { + "x": "2021-03-09T09:21:32.663Z", + "y": 4837 + }, + { + "x": "2021-03-12T09:21:32.663Z", + "y": 4484 + }, + { + "x": "2021-03-15T09:21:32.663Z", + "y": 4071 + }, + { + "x": "2021-03-18T09:21:32.663Z", + "y": 4124 + }, + { + "x": "2021-03-21T09:21:32.663Z", + "y": 4563 + }, + { + "x": "2021-03-22T09:21:32.663Z", + "y": 3820 + }, + { + "x": "2021-03-25T09:21:32.663Z", + "y": 3968 + }, + { + "x": "2021-03-28T09:21:32.663Z", + "y": 4102 + }, + { + "x": "2021-03-31T09:21:32.663Z", + "y": 3941 + }, + { + "x": "2021-04-03T09:21:32.663Z", + "y": 3566 + }, + { + "x": "2021-04-06T09:21:32.663Z", + "y": 3853 + }, + { + "x": "2021-04-09T09:21:32.663Z", + "y": 3853 + }, + { + "x": "2021-04-12T09:21:32.663Z", + "y": 4069 + }, + { + "x": "2021-04-15T09:21:32.663Z", + "y": 3879 + }, + { + "x": "2021-04-18T09:21:32.663Z", + "y": 4298 + }, + { + "x": "2021-04-19T09:21:32.663Z", + "y": 4355 + }, + { + "x": "2021-04-22T09:21:32.663Z", + "y": 4065 + }, + { + "x": "2021-04-25T09:21:32.663Z", + "y": 3650 + }, + { + "x": "2021-04-28T09:21:32.663Z", + "y": 3379 + }, + { + "x": "2021-05-01T09:21:32.663Z", + "y": 3191 + }, + { + "x": "2021-05-04T09:21:32.663Z", + "y": 2968 + }, + { + "x": "2021-05-07T09:21:32.663Z", + "y": 2957 + }, + { + "x": "2021-05-10T09:21:32.663Z", + "y": 3313 + }, + { + "x": "2021-05-13T09:21:32.663Z", + "y": 3708 + }, + { + "x": "2021-05-16T09:21:32.663Z", + "y": 3586 + }, + { + "x": "2021-05-17T09:21:32.663Z", + "y": 3965 + }, + { + "x": "2021-05-20T09:21:32.663Z", + "y": 3901 + }, + { + "x": "2021-05-23T09:21:32.663Z", + "y": 3410 + }, + { + "x": "2021-05-26T09:21:32.663Z", + "y": 3748 + }, + { + "x": "2021-05-29T09:21:32.663Z", + "y": 3929 + }, + { + "x": "2021-06-01T09:21:32.663Z", + "y": 3846 + }, + { + "x": "2021-06-04T09:21:32.663Z", + "y": 3771 + }, + { + "x": "2021-06-07T09:21:32.663Z", + "y": 4015 + }, + { + "x": "2021-06-10T09:21:32.663Z", + "y": 3589 + }, + { + "x": "2021-06-13T09:21:32.663Z", + "y": 3150 + }, + { + "x": "2021-06-21T09:21:32.663Z", + "y": 3050 + }, + { + "x": "2021-06-24T09:21:32.663Z", + "y": 2574 + }, + { + "x": "2021-06-27T09:21:32.663Z", + "y": 2823 + }, + { + "x": "2021-06-30T09:21:32.663Z", + "y": 2848 + }, + { + "x": "2021-07-03T09:21:32.663Z", + "y": 3000 + }, + { + "x": "2021-07-06T09:21:32.663Z", + "y": 3216 + }, + { + "x": "2021-07-09T09:21:32.663Z", + "y": 3299 + }, + { + "x": "2021-07-12T09:21:32.663Z", + "y": 3768 + }, + { + "x": "2021-07-15T09:21:32.663Z", + "y": 3524 + }, + { + "x": "2021-07-18T09:21:32.663Z", + "y": 3918 + }, + { + "x": "2021-07-19T09:21:32.663Z", + "y": 4145 + }, + { + "x": "2021-07-22T09:21:32.663Z", + "y": 4378 + }, + { + "x": "2021-07-25T09:21:32.663Z", + "y": 3941 + }, + { + "x": "2021-07-28T09:21:32.663Z", + "y": 3932 + }, + { + "x": "2021-07-31T09:21:32.663Z", + "y": 4380 + }, + { + "x": "2021-08-03T09:21:32.663Z", + "y": 4243 + }, + { + "x": "2021-08-06T09:21:32.663Z", + "y": 4367 + }, + { + "x": "2021-08-09T09:21:32.663Z", + "y": 3879 + }, + { + "x": "2021-08-12T09:21:32.663Z", + "y": 4357 + }, + { + "x": "2021-08-15T09:21:32.664Z", + "y": 4181 + }, + { + "x": "2021-08-16T09:21:32.664Z", + "y": 4619 + }, + { + "x": "2021-08-19T09:21:32.664Z", + "y": 4769 + }, + { + "x": "2021-08-22T09:21:32.664Z", + "y": 4901 + }, + { + "x": "2021-08-25T09:21:32.664Z", + "y": 4640 + }, + { + "x": "2021-08-28T09:21:32.664Z", + "y": 5128 + }, + { + "x": "2021-08-31T09:21:32.664Z", + "y": 5015 + }, + { + "x": "2021-09-03T09:21:32.664Z", + "y": 5360 + }, + { + "x": "2021-09-06T09:21:32.664Z", + "y": 5608 + }, + { + "x": "2021-09-09T09:21:32.664Z", + "y": 5272 + }, + { + "x": "2021-09-12T09:21:32.664Z", + "y": 5660 + }, + { + "x": "2021-09-20T09:21:32.664Z", + "y": 5836 + }, + { + "x": "2021-09-23T09:21:32.664Z", + "y": 5659 + }, + { + "x": "2021-09-26T09:21:32.664Z", + "y": 5575 + }, + { + "x": "2021-09-29T09:21:32.664Z", + "y": 5474 + }, + { + "x": "2021-10-02T09:21:32.664Z", + "y": 5427 + }, + { + "x": "2021-10-05T09:21:32.664Z", + "y": 5865 + }, + { + "x": "2021-10-08T09:21:32.664Z", + "y": 5700 + }, + { + "x": "2021-10-11T09:21:32.664Z", + "y": 6052 + }, + { + "x": "2021-10-14T09:21:32.664Z", + "y": 5760 + }, + { + "x": "2021-10-17T09:21:32.664Z", + "y": 5648 + }, + { + "x": "2021-10-18T09:21:32.664Z", + "y": 5435 + }, + { + "x": "2021-10-21T09:21:32.664Z", + "y": 5239 + }, + { + "x": "2021-10-24T09:21:32.664Z", + "y": 5452 + }, + { + "x": "2021-10-27T09:21:32.664Z", + "y": 5416 + }, + { + "x": "2021-10-30T09:21:32.664Z", + "y": 5195 + }, + { + "x": "2021-11-02T09:21:32.664Z", + "y": 5119 + }, + { + "x": "2021-11-05T09:21:32.664Z", + "y": 4635 + }, + { + "x": "2021-11-08T09:21:32.664Z", + "y": 4833 + }, + { + "x": "2021-11-11T09:21:32.664Z", + "y": 4584 + }, + { + "x": "2021-11-14T09:21:32.664Z", + "y": 4822 + }, + { + "x": "2021-11-22T09:21:32.664Z", + "y": 4582 + }, + { + "x": "2021-11-25T09:21:32.664Z", + "y": 4348 + }, + { + "x": "2021-11-28T09:21:32.664Z", + "y": 4132 + }, + { + "x": "2021-12-01T09:21:32.664Z", + "y": 4099 + }, + { + "x": "2021-12-04T09:21:32.664Z", + "y": 3849 + }, + { + "x": "2021-12-07T09:21:32.664Z", + "y": 4010 + }, + { + "x": "2021-12-10T09:21:32.664Z", + "y": 4486 + }, + { + "x": "2021-12-13T09:21:32.664Z", + "y": 4403 + }, + { + "x": "2021-12-16T09:21:32.664Z", + "y": 4141 + }, + { + "x": "2021-12-19T09:21:32.664Z", + "y": 3780 + }, + { + "x": "2021-12-20T09:21:32.664Z", + "y": 3524 + }, + { + "x": "2021-12-23T09:21:32.664Z", + "y": 3212 + }, + { + "x": "2021-12-26T09:21:32.664Z", + "y": 3568 + }, + { + "x": "2021-12-29T09:21:32.664Z", + "y": 3800 + }, + { + "x": "2022-01-01T09:21:32.664Z", + "y": 3796 + }, + { + "x": "2022-01-04T09:21:32.664Z", + "y": 3870 + }, + { + "x": "2022-01-07T09:21:32.664Z", + "y": 3745 + }, + { + "x": "2022-01-10T09:21:32.664Z", + "y": 3751 + }, + { + "x": "2022-01-13T09:21:32.664Z", + "y": 3310 + }, + { + "x": "2022-01-16T09:21:32.664Z", + "y": 3509 + }, + { + "x": "2022-01-17T09:21:32.664Z", + "y": 3187 + }, + { + "x": "2022-01-20T09:21:32.664Z", + "y": 2918 + }, + { + "x": "2022-01-23T09:21:32.664Z", + "y": 3191 + }, + { + "x": "2022-01-26T09:21:32.664Z", + "y": 3437 + }, + { + "x": "2022-01-29T09:21:32.664Z", + "y": 3291 + }, + { + "x": "2022-02-01T09:21:32.664Z", + "y": 3317 + }, + { + "x": "2022-02-04T09:21:32.664Z", + "y": 3716 + }, + { + "x": "2022-02-07T09:21:32.664Z", + "y": 3260 + }, + { + "x": "2022-02-10T09:21:32.664Z", + "y": 3694 + }, + { + "x": "2022-02-13T09:21:32.664Z", + "y": 3598 + } + ] + } + ], + "last-year": [ + { + "name": "Visitors", + "data": [ + { + "x": "2021-02-22T09:21:32.664Z", + "y": 2021 + }, + { + "x": "2021-02-25T09:21:32.664Z", + "y": 1749 + }, + { + "x": "2021-02-28T09:21:32.664Z", + "y": 1654 + }, + { + "x": "2021-03-03T09:21:32.664Z", + "y": 1900 + }, + { + "x": "2021-03-06T09:21:32.664Z", + "y": 1647 + }, + { + "x": "2021-03-09T09:21:32.664Z", + "y": 1315 + }, + { + "x": "2021-03-12T09:21:32.664Z", + "y": 1807 + }, + { + "x": "2021-03-15T09:21:32.664Z", + "y": 1793 + }, + { + "x": "2021-03-18T09:21:32.664Z", + "y": 1892 + }, + { + "x": "2021-03-21T09:21:32.664Z", + "y": 1846 + }, + { + "x": "2021-03-22T09:21:32.664Z", + "y": 1804 + }, + { + "x": "2021-03-25T09:21:32.664Z", + "y": 1778 + }, + { + "x": "2021-03-28T09:21:32.664Z", + "y": 2015 + }, + { + "x": "2021-03-31T09:21:32.664Z", + "y": 1892 + }, + { + "x": "2021-04-03T09:21:32.664Z", + "y": 1708 + }, + { + "x": "2021-04-06T09:21:32.664Z", + "y": 1711 + }, + { + "x": "2021-04-09T09:21:32.664Z", + "y": 1570 + }, + { + "x": "2021-04-12T09:21:32.664Z", + "y": 1507 + }, + { + "x": "2021-04-15T09:21:32.664Z", + "y": 1451 + }, + { + "x": "2021-04-18T09:21:32.664Z", + "y": 1522 + }, + { + "x": "2021-04-19T09:21:32.664Z", + "y": 1977 + }, + { + "x": "2021-04-22T09:21:32.664Z", + "y": 2367 + }, + { + "x": "2021-04-25T09:21:32.664Z", + "y": 2798 + }, + { + "x": "2021-04-28T09:21:32.664Z", + "y": 3080 + }, + { + "x": "2021-05-01T09:21:32.664Z", + "y": 2856 + }, + { + "x": "2021-05-04T09:21:32.664Z", + "y": 2745 + }, + { + "x": "2021-05-07T09:21:32.664Z", + "y": 2750 + }, + { + "x": "2021-05-10T09:21:32.664Z", + "y": 2728 + }, + { + "x": "2021-05-13T09:21:32.664Z", + "y": 2436 + }, + { + "x": "2021-05-16T09:21:32.664Z", + "y": 2289 + }, + { + "x": "2021-05-17T09:21:32.664Z", + "y": 2804 + }, + { + "x": "2021-05-20T09:21:32.664Z", + "y": 2777 + }, + { + "x": "2021-05-23T09:21:32.664Z", + "y": 3024 + }, + { + "x": "2021-05-26T09:21:32.664Z", + "y": 2657 + }, + { + "x": "2021-05-29T09:21:32.664Z", + "y": 2218 + }, + { + "x": "2021-06-01T09:21:32.664Z", + "y": 1964 + }, + { + "x": "2021-06-04T09:21:32.664Z", + "y": 1674 + }, + { + "x": "2021-06-07T09:21:32.664Z", + "y": 1721 + }, + { + "x": "2021-06-10T09:21:32.664Z", + "y": 2005 + }, + { + "x": "2021-06-13T09:21:32.664Z", + "y": 1613 + }, + { + "x": "2021-06-21T09:21:32.664Z", + "y": 1071 + }, + { + "x": "2021-06-24T09:21:32.664Z", + "y": 1079 + }, + { + "x": "2021-06-27T09:21:32.664Z", + "y": 1133 + }, + { + "x": "2021-06-30T09:21:32.664Z", + "y": 1536 + }, + { + "x": "2021-07-03T09:21:32.664Z", + "y": 2016 + }, + { + "x": "2021-07-06T09:21:32.664Z", + "y": 2256 + }, + { + "x": "2021-07-09T09:21:32.664Z", + "y": 1934 + }, + { + "x": "2021-07-12T09:21:32.664Z", + "y": 1832 + }, + { + "x": "2021-07-15T09:21:32.664Z", + "y": 2075 + }, + { + "x": "2021-07-18T09:21:32.664Z", + "y": 1709 + }, + { + "x": "2021-07-19T09:21:32.664Z", + "y": 1831 + }, + { + "x": "2021-07-22T09:21:32.664Z", + "y": 1434 + }, + { + "x": "2021-07-25T09:21:32.664Z", + "y": 1293 + }, + { + "x": "2021-07-28T09:21:32.664Z", + "y": 1064 + }, + { + "x": "2021-07-31T09:21:32.664Z", + "y": 1080 + }, + { + "x": "2021-08-03T09:21:32.664Z", + "y": 1032 + }, + { + "x": "2021-08-06T09:21:32.664Z", + "y": 1280 + }, + { + "x": "2021-08-09T09:21:32.664Z", + "y": 1344 + }, + { + "x": "2021-08-12T09:21:32.664Z", + "y": 1835 + }, + { + "x": "2021-08-15T09:21:32.664Z", + "y": 2287 + }, + { + "x": "2021-08-16T09:21:32.664Z", + "y": 2692 + }, + { + "x": "2021-08-19T09:21:32.664Z", + "y": 2250 + }, + { + "x": "2021-08-22T09:21:32.664Z", + "y": 1814 + }, + { + "x": "2021-08-25T09:21:32.664Z", + "y": 1906 + }, + { + "x": "2021-08-28T09:21:32.664Z", + "y": 1973 + }, + { + "x": "2021-08-31T09:21:32.664Z", + "y": 1882 + }, + { + "x": "2021-09-03T09:21:32.664Z", + "y": 2333 + }, + { + "x": "2021-09-06T09:21:32.664Z", + "y": 2048 + }, + { + "x": "2021-09-09T09:21:32.664Z", + "y": 2547 + }, + { + "x": "2021-09-12T09:21:32.664Z", + "y": 2884 + }, + { + "x": "2021-09-20T09:21:32.664Z", + "y": 2771 + }, + { + "x": "2021-09-23T09:21:32.664Z", + "y": 2522 + }, + { + "x": "2021-09-26T09:21:32.664Z", + "y": 2543 + }, + { + "x": "2021-09-29T09:21:32.664Z", + "y": 2413 + }, + { + "x": "2021-10-02T09:21:32.664Z", + "y": 2002 + }, + { + "x": "2021-10-05T09:21:32.664Z", + "y": 1838 + }, + { + "x": "2021-10-08T09:21:32.664Z", + "y": 1830 + }, + { + "x": "2021-10-11T09:21:32.664Z", + "y": 1872 + }, + { + "x": "2021-10-14T09:21:32.664Z", + "y": 2246 + }, + { + "x": "2021-10-17T09:21:32.664Z", + "y": 2171 + }, + { + "x": "2021-10-18T09:21:32.664Z", + "y": 2988 + }, + { + "x": "2021-10-21T09:21:32.664Z", + "y": 2694 + }, + { + "x": "2021-10-24T09:21:32.664Z", + "y": 2806 + }, + { + "x": "2021-10-27T09:21:32.664Z", + "y": 3040 + }, + { + "x": "2021-10-30T09:21:32.664Z", + "y": 2898 + }, + { + "x": "2021-11-02T09:21:32.664Z", + "y": 3013 + }, + { + "x": "2021-11-05T09:21:32.664Z", + "y": 2760 + }, + { + "x": "2021-11-08T09:21:32.664Z", + "y": 3021 + }, + { + "x": "2021-11-11T09:21:32.664Z", + "y": 2688 + }, + { + "x": "2021-11-14T09:21:32.664Z", + "y": 2572 + }, + { + "x": "2021-11-22T09:21:32.664Z", + "y": 2789 + }, + { + "x": "2021-11-25T09:21:32.664Z", + "y": 3069 + }, + { + "x": "2021-11-28T09:21:32.664Z", + "y": 3142 + }, + { + "x": "2021-12-01T09:21:32.664Z", + "y": 3614 + }, + { + "x": "2021-12-04T09:21:32.664Z", + "y": 3202 + }, + { + "x": "2021-12-07T09:21:32.664Z", + "y": 2730 + }, + { + "x": "2021-12-10T09:21:32.664Z", + "y": 2951 + }, + { + "x": "2021-12-13T09:21:32.664Z", + "y": 3267 + }, + { + "x": "2021-12-16T09:21:32.664Z", + "y": 2882 + }, + { + "x": "2021-12-19T09:21:32.664Z", + "y": 2885 + }, + { + "x": "2021-12-20T09:21:32.664Z", + "y": 2915 + }, + { + "x": "2021-12-23T09:21:32.664Z", + "y": 2790 + }, + { + "x": "2021-12-26T09:21:32.664Z", + "y": 3071 + }, + { + "x": "2021-12-29T09:21:32.664Z", + "y": 2802 + }, + { + "x": "2022-01-01T09:21:32.664Z", + "y": 2382 + }, + { + "x": "2022-01-04T09:21:32.664Z", + "y": 1883 + }, + { + "x": "2022-01-07T09:21:32.664Z", + "y": 1448 + }, + { + "x": "2022-01-10T09:21:32.664Z", + "y": 1176 + }, + { + "x": "2022-01-13T09:21:32.664Z", + "y": 1275 + }, + { + "x": "2022-01-16T09:21:32.664Z", + "y": 1136 + }, + { + "x": "2022-01-17T09:21:32.664Z", + "y": 1160 + }, + { + "x": "2022-01-20T09:21:32.664Z", + "y": 1524 + }, + { + "x": "2022-01-23T09:21:32.664Z", + "y": 1305 + }, + { + "x": "2022-01-26T09:21:32.664Z", + "y": 1725 + }, + { + "x": "2022-01-29T09:21:32.665Z", + "y": 1850 + }, + { + "x": "2022-02-01T09:21:32.665Z", + "y": 2304 + }, + { + "x": "2022-02-04T09:21:32.665Z", + "y": 2187 + }, + { + "x": "2022-02-07T09:21:32.665Z", + "y": 2597 + }, + { + "x": "2022-02-10T09:21:32.665Z", + "y": 2246 + }, + { + "x": "2022-02-13T09:21:32.665Z", + "y": 1767 + } + ] + } + ] + } + }, + "conversions": { + "amount": 4123, + "labels": [ + "05 Jan - 12 Jan", + "13 Jan - 20 Jan", + "21 Jan - 28 Jan", + "29 Jan - 05 Feb", + "06 Feb - 13 Feb", + "14 Feb - 21 Feb" + ], + "series": [ + { + "name": "Conversions", + "data": [ + 4412, + 4345, + 4541, + 4677, + 4322, + 4123 + ] + } + ] + }, + "impressions": { + "amount": 46085, + "labels": [ + "21 Jan - 28 Jan", + "29 Jan - 05 Feb", + "06 Feb - 13 Feb", + "14 Feb - 21 Feb" + ], + "series": [ + { + "name": "Impressions", + "data": [ + 11577, + 11441, + 11544, + 11523 + ] + } + ] + }, + "visits": { + "amount": 62083, + "labels": [ + "21 Jan - 28 Jan", + "29 Jan - 05 Feb", + "06 Feb - 13 Feb", + "14 Feb - 21 Feb" + ], + "series": [ + { + "name": "Visits", + "data": [ + 15521, + 15519, + 15522, + 15521 + ] + } + ] + }, + "visitorsVsPageViews": { + "overallScore": 472, + "averageRatio": 45, + "predictedRatio": 55, + "series": [ + { + "name": "Page Views", + "data": [ + { + "x": "2021-12-18T09:21:32.665Z", + "y": 4769 + }, + { + "x": "2021-12-19T09:21:32.665Z", + "y": 4901 + }, + { + "x": "2021-12-20T09:21:32.665Z", + "y": 4640 + }, + { + "x": "2021-12-21T09:21:32.665Z", + "y": 5128 + }, + { + "x": "2021-12-22T09:21:32.665Z", + "y": 5015 + }, + { + "x": "2021-12-23T09:21:32.665Z", + "y": 5360 + }, + { + "x": "2021-12-24T09:21:32.665Z", + "y": 5608 + }, + { + "x": "2021-12-25T09:21:32.665Z", + "y": 5272 + }, + { + "x": "2021-12-26T09:21:32.665Z", + "y": 5660 + }, + { + "x": "2021-12-27T09:21:32.665Z", + "y": 6026 + }, + { + "x": "2021-12-28T09:21:32.665Z", + "y": 5836 + }, + { + "x": "2021-12-29T09:21:32.665Z", + "y": 5659 + }, + { + "x": "2021-12-30T09:21:32.665Z", + "y": 5575 + }, + { + "x": "2021-12-31T09:21:32.665Z", + "y": 5474 + }, + { + "x": "2022-01-01T09:21:32.665Z", + "y": 5427 + }, + { + "x": "2022-01-02T09:21:32.665Z", + "y": 5865 + }, + { + "x": "2022-01-03T09:21:32.665Z", + "y": 5700 + }, + { + "x": "2022-01-04T09:21:32.665Z", + "y": 6052 + }, + { + "x": "2022-01-05T09:21:32.665Z", + "y": 5760 + }, + { + "x": "2022-01-06T09:21:32.665Z", + "y": 5648 + }, + { + "x": "2022-01-07T09:21:32.665Z", + "y": 5510 + }, + { + "x": "2022-01-08T09:21:32.665Z", + "y": 5435 + }, + { + "x": "2022-01-09T09:21:32.665Z", + "y": 5239 + }, + { + "x": "2022-01-10T09:21:32.665Z", + "y": 5452 + }, + { + "x": "2022-01-11T09:21:32.665Z", + "y": 5416 + }, + { + "x": "2022-01-12T09:21:32.665Z", + "y": 5195 + }, + { + "x": "2022-01-13T09:21:32.665Z", + "y": 5119 + }, + { + "x": "2022-01-14T09:21:32.665Z", + "y": 4635 + }, + { + "x": "2022-01-15T09:21:32.665Z", + "y": 4833 + }, + { + "x": "2022-01-16T09:21:32.665Z", + "y": 4584 + }, + { + "x": "2022-01-17T09:21:32.665Z", + "y": 4822 + }, + { + "x": "2022-01-18T09:21:32.665Z", + "y": 4330 + }, + { + "x": "2022-01-19T09:21:32.665Z", + "y": 4582 + }, + { + "x": "2022-01-20T09:21:32.665Z", + "y": 4348 + }, + { + "x": "2022-01-21T09:21:32.665Z", + "y": 4132 + }, + { + "x": "2022-01-22T09:21:32.665Z", + "y": 4099 + }, + { + "x": "2022-01-23T09:21:32.665Z", + "y": 3849 + }, + { + "x": "2022-01-24T09:21:32.665Z", + "y": 4010 + }, + { + "x": "2022-01-25T09:21:32.665Z", + "y": 4486 + }, + { + "x": "2022-01-26T09:21:32.665Z", + "y": 4403 + }, + { + "x": "2022-01-27T09:21:32.665Z", + "y": 4141 + }, + { + "x": "2022-01-28T09:21:32.665Z", + "y": 3780 + }, + { + "x": "2022-01-29T09:21:32.665Z", + "y": 3929 + }, + { + "x": "2022-01-30T09:21:32.665Z", + "y": 3524 + }, + { + "x": "2022-01-31T09:21:32.665Z", + "y": 3212 + }, + { + "x": "2022-02-01T09:21:32.665Z", + "y": 3568 + }, + { + "x": "2022-02-02T09:21:32.665Z", + "y": 3800 + }, + { + "x": "2022-02-03T09:21:32.665Z", + "y": 3796 + }, + { + "x": "2022-02-04T09:21:32.665Z", + "y": 3870 + }, + { + "x": "2022-02-05T09:21:32.665Z", + "y": 3745 + }, + { + "x": "2022-02-06T09:21:32.665Z", + "y": 3751 + }, + { + "x": "2022-02-07T09:21:32.665Z", + "y": 3310 + }, + { + "x": "2022-02-08T09:21:32.665Z", + "y": 3509 + }, + { + "x": "2022-02-09T09:21:32.665Z", + "y": 3311 + }, + { + "x": "2022-02-10T09:21:32.665Z", + "y": 3187 + }, + { + "x": "2022-02-11T09:21:32.665Z", + "y": 2918 + }, + { + "x": "2022-02-12T09:21:32.665Z", + "y": 3191 + }, + { + "x": "2022-02-13T09:21:32.665Z", + "y": 3437 + }, + { + "x": "2022-02-14T09:21:32.665Z", + "y": 3291 + }, + { + "x": "2022-02-15T09:21:32.665Z", + "y": 3317 + }, + { + "x": "2022-02-16T09:21:32.665Z", + "y": 3716 + }, + { + "x": "2022-02-17T09:21:32.665Z", + "y": 3260 + }, + { + "x": "2022-02-18T09:21:32.665Z", + "y": 3694 + }, + { + "x": "2022-02-19T09:21:32.665Z", + "y": 3598 + }, + { + "x": "2022-02-20T09:21:32.665Z", + "y": 3812 + } + ] + }, + { + "name": "Visitors", + "data": [ + { + "x": "2021-12-18T09:21:32.665Z", + "y": 1654 + }, + { + "x": "2021-12-19T09:21:32.665Z", + "y": 1900 + }, + { + "x": "2021-12-20T09:21:32.665Z", + "y": 1647 + }, + { + "x": "2021-12-21T09:21:32.665Z", + "y": 1315 + }, + { + "x": "2021-12-22T09:21:32.665Z", + "y": 1807 + }, + { + "x": "2021-12-23T09:21:32.665Z", + "y": 1793 + }, + { + "x": "2021-12-24T09:21:32.665Z", + "y": 1892 + }, + { + "x": "2021-12-25T09:21:32.665Z", + "y": 1846 + }, + { + "x": "2021-12-26T09:21:32.665Z", + "y": 1966 + }, + { + "x": "2021-12-27T09:21:32.665Z", + "y": 1804 + }, + { + "x": "2021-12-28T09:21:32.665Z", + "y": 1778 + }, + { + "x": "2021-12-29T09:21:32.665Z", + "y": 2015 + }, + { + "x": "2021-12-30T09:21:32.665Z", + "y": 1892 + }, + { + "x": "2021-12-31T09:21:32.665Z", + "y": 1708 + }, + { + "x": "2022-01-01T09:21:32.665Z", + "y": 1711 + }, + { + "x": "2022-01-02T09:21:32.665Z", + "y": 1570 + }, + { + "x": "2022-01-03T09:21:32.666Z", + "y": 1507 + }, + { + "x": "2022-01-04T09:21:32.666Z", + "y": 1451 + }, + { + "x": "2022-01-05T09:21:32.666Z", + "y": 1522 + }, + { + "x": "2022-01-06T09:21:32.666Z", + "y": 1801 + }, + { + "x": "2022-01-07T09:21:32.666Z", + "y": 1977 + }, + { + "x": "2022-01-08T09:21:32.666Z", + "y": 2367 + }, + { + "x": "2022-01-09T09:21:32.666Z", + "y": 2798 + }, + { + "x": "2022-01-10T09:21:32.666Z", + "y": 3080 + }, + { + "x": "2022-01-11T09:21:32.666Z", + "y": 2856 + }, + { + "x": "2022-01-12T09:21:32.666Z", + "y": 2745 + }, + { + "x": "2022-01-13T09:21:32.666Z", + "y": 2750 + }, + { + "x": "2022-01-14T09:21:32.666Z", + "y": 2728 + }, + { + "x": "2022-01-15T09:21:32.666Z", + "y": 2436 + }, + { + "x": "2022-01-16T09:21:32.666Z", + "y": 2289 + }, + { + "x": "2022-01-17T09:21:32.666Z", + "y": 2657 + }, + { + "x": "2022-01-18T09:21:32.666Z", + "y": 2804 + }, + { + "x": "2022-01-19T09:21:32.666Z", + "y": 2777 + }, + { + "x": "2022-01-20T09:21:32.666Z", + "y": 3024 + }, + { + "x": "2022-01-21T09:21:32.666Z", + "y": 2657 + }, + { + "x": "2022-01-22T09:21:32.666Z", + "y": 2218 + }, + { + "x": "2022-01-23T09:21:32.666Z", + "y": 1964 + }, + { + "x": "2022-01-24T09:21:32.666Z", + "y": 1674 + }, + { + "x": "2022-01-25T09:21:32.666Z", + "y": 1721 + }, + { + "x": "2022-01-26T09:21:32.666Z", + "y": 2005 + }, + { + "x": "2022-01-27T09:21:32.666Z", + "y": 1613 + }, + { + "x": "2022-01-28T09:21:32.666Z", + "y": 1295 + }, + { + "x": "2022-01-29T09:21:32.666Z", + "y": 1071 + }, + { + "x": "2022-01-30T09:21:32.666Z", + "y": 799 + }, + { + "x": "2022-01-31T09:21:32.666Z", + "y": 1133 + }, + { + "x": "2022-02-01T09:21:32.666Z", + "y": 1536 + }, + { + "x": "2022-02-02T09:21:32.666Z", + "y": 2016 + }, + { + "x": "2022-02-03T09:21:32.666Z", + "y": 2256 + }, + { + "x": "2022-02-04T09:21:32.666Z", + "y": 1934 + }, + { + "x": "2022-02-05T09:21:32.666Z", + "y": 1832 + }, + { + "x": "2022-02-06T09:21:32.666Z", + "y": 2075 + }, + { + "x": "2022-02-07T09:21:32.666Z", + "y": 1709 + }, + { + "x": "2022-02-08T09:21:32.666Z", + "y": 1932 + }, + { + "x": "2022-02-09T09:21:32.666Z", + "y": 1831 + }, + { + "x": "2022-02-10T09:21:32.666Z", + "y": 1434 + }, + { + "x": "2022-02-11T09:21:32.666Z", + "y": 993 + }, + { + "x": "2022-02-12T09:21:32.666Z", + "y": 1064 + }, + { + "x": "2022-02-13T09:21:32.666Z", + "y": 618 + }, + { + "x": "2022-02-14T09:21:32.666Z", + "y": 1032 + }, + { + "x": "2022-02-15T09:21:32.666Z", + "y": 1280 + }, + { + "x": "2022-02-16T09:21:32.666Z", + "y": 1344 + }, + { + "x": "2022-02-17T09:21:32.666Z", + "y": 1835 + }, + { + "x": "2022-02-18T09:21:32.666Z", + "y": 2287 + }, + { + "x": "2022-02-19T09:21:32.666Z", + "y": 2226 + }, + { + "x": "2022-02-20T09:21:32.666Z", + "y": 2692 + } + ] + } + ] + }, + "newVsReturning": { + "uniqueVisitors": 46085, + "series": [ + 80, + 20 + ], + "labels": [ + "New", + "Returning" + ] + }, + "gender": { + "uniqueVisitors": 46085, + "series": [ + 55, + 45 + ], + "labels": [ + "Male", + "Female" + ] + }, + "age": { + "uniqueVisitors": 46085, + "series": [ + 35, + 65 + ], + "labels": [ + "Under 30", + "Over 30" + ] + }, + "language": { + "uniqueVisitors": 46085, + "series": [ + 25, + 75 + ], + "labels": [ + "English", + "Other" + ] + } + } + }, + "crypto_dashboard_widgets": { + "value": { + "btc": { + "amount": 8878.48, + "trend": { + "dir": "up", + "amount": 0.17 + }, + "marketCap": 148752956966, + "volume": 22903438381, + "supply": 18168448, + "allTimeHigh": 19891, + "price": { + "series": [ + { + "name": "Price", + "data": [ + { + "x": -145, + "y": 6554.36 + }, + { + "x": -144, + "y": 6554.36 + }, + { + "x": -143, + "y": 6546.94 + }, + { + "x": -142, + "y": 6546.96 + }, + { + "x": -141, + "y": 6546.11 + }, + { + "x": -140, + "y": 6550.26 + }, + { + "x": -139, + "y": 6546.11 + }, + { + "x": -138, + "y": 6550.79 + }, + { + "x": -137, + "y": 6545.36 + }, + { + "x": -136, + "y": 6541.06 + }, + { + "x": -135, + "y": 6540.1 + }, + { + "x": -134, + "y": 6538.31 + }, + { + "x": -133, + "y": 6538.42 + }, + { + "x": -132, + "y": 6538.48 + }, + { + "x": -131, + "y": 6538.71 + }, + { + "x": -130, + "y": 6548.42 + }, + { + "x": -129, + "y": 6546.87 + }, + { + "x": -128, + "y": 6547.07 + }, + { + "x": -127, + "y": 6535.07 + }, + { + "x": -126, + "y": 6535.01 + }, + { + "x": -125, + "y": 6539.02 + }, + { + "x": -124, + "y": 6547.96 + }, + { + "x": -123, + "y": 6547.92 + }, + { + "x": -122, + "y": 6546.56 + }, + { + "x": -121, + "y": 6546.56 + }, + { + "x": -120, + "y": 6564.16 + }, + { + "x": -119, + "y": 6560.83 + }, + { + "x": -118, + "y": 6559.08 + }, + { + "x": -117, + "y": 6553.02 + }, + { + "x": -116, + "y": 6564.99 + }, + { + "x": -115, + "y": 6558.7 + }, + { + "x": -114, + "y": 6568.73 + }, + { + "x": -113, + "y": 6568.8 + }, + { + "x": -112, + "y": 6568.8 + }, + { + "x": -111, + "y": 6568.8 + }, + { + "x": -110, + "y": 6571.83 + }, + { + "x": -109, + "y": 6562.64 + }, + { + "x": -108, + "y": 6561.28 + }, + { + "x": -107, + "y": 6561.28 + }, + { + "x": -106, + "y": 6560.4 + }, + { + "x": -105, + "y": 6564.41 + }, + { + "x": -104, + "y": 6562.44 + }, + { + "x": -103, + "y": 6565.13 + }, + { + "x": -102, + "y": 6553.3 + }, + { + "x": -101, + "y": 6552.68 + }, + { + "x": -100, + "y": 6551.92 + }, + { + "x": -99, + "y": 6553.85 + }, + { + "x": -98, + "y": 6560 + }, + { + "x": -97, + "y": 6560 + }, + { + "x": -96, + "y": 6565.01 + }, + { + "x": -95, + "y": 6583.19 + }, + { + "x": -94, + "y": 6555.79 + }, + { + "x": -93, + "y": 6556.04 + }, + { + "x": -92, + "y": 6558.85 + }, + { + "x": -91, + "y": 6564.75 + }, + { + "x": -90, + "y": 6564.88 + }, + { + "x": -89, + "y": 6565.1 + }, + { + "x": -88, + "y": 6565.72 + }, + { + "x": -87, + "y": 6565.72 + }, + { + "x": -86, + "y": 6565.95 + }, + { + "x": -85, + "y": 6561.82 + }, + { + "x": -84, + "y": 6566.26 + }, + { + "x": -83, + "y": 6568.81 + }, + { + "x": -82, + "y": 6588.57 + }, + { + "x": -81, + "y": 6587.11 + }, + { + "x": -80, + "y": 6577.86 + }, + { + "x": -79, + "y": 6586.51 + }, + { + "x": -78, + "y": 6581.14 + }, + { + "x": -77, + "y": 6581.45 + }, + { + "x": -76, + "y": 6589.54 + }, + { + "x": -75, + "y": 6580.91 + }, + { + "x": -74, + "y": 6581.67 + }, + { + "x": -73, + "y": 6579.06 + }, + { + "x": -72, + "y": 6578.73 + }, + { + "x": -71, + "y": 6578.64 + }, + { + "x": -70, + "y": 6579.08 + }, + { + "x": -69, + "y": 6577.43 + }, + { + "x": -68, + "y": 6582.12 + }, + { + "x": -67, + "y": 6572.42 + }, + { + "x": -66, + "y": 6578.72 + }, + { + "x": -65, + "y": 6572.43 + }, + { + "x": -64, + "y": 6570.64 + }, + { + "x": -63, + "y": 6561.64 + }, + { + "x": -62, + "y": 6550.84 + }, + { + "x": -61, + "y": 6561.83 + }, + { + "x": -60, + "y": 6561.84 + }, + { + "x": -59, + "y": 6552.44 + }, + { + "x": -58, + "y": 6552.47 + }, + { + "x": -57, + "y": 6562.31 + }, + { + "x": -56, + "y": 6562.1 + }, + { + "x": -55, + "y": 6561.65 + }, + { + "x": -54, + "y": 6547.96 + }, + { + "x": -53, + "y": 6559.95 + }, + { + "x": -52, + "y": 6562.08 + }, + { + "x": -51, + "y": 6557.71 + }, + { + "x": -50, + "y": 6559.05 + }, + { + "x": -49, + "y": 6562.69 + }, + { + "x": -48, + "y": 6578.18 + }, + { + "x": -47, + "y": 6580.15 + }, + { + "x": -46, + "y": 6584.26 + }, + { + "x": -45, + "y": 6574.75 + }, + { + "x": -44, + "y": 6574.85 + }, + { + "x": -43, + "y": 6582.63 + }, + { + "x": -42, + "y": 6569.7 + }, + { + "x": -41, + "y": 6570.1 + }, + { + "x": -40, + "y": 6570.11 + }, + { + "x": -39, + "y": 6569.71 + }, + { + "x": -38, + "y": 6578.03 + }, + { + "x": -37, + "y": 6579.92 + }, + { + "x": -36, + "y": 6571.03 + }, + { + "x": -35, + "y": 6571.48 + }, + { + "x": -34, + "y": 6576.67 + }, + { + "x": -33, + "y": 6576.67 + }, + { + "x": -32, + "y": 6576.63 + }, + { + "x": -31, + "y": 6576.68 + }, + { + "x": -30, + "y": 6573.29 + }, + { + "x": -29, + "y": 6577.28 + }, + { + "x": -28, + "y": 6577.73 + }, + { + "x": -27, + "y": 6577.7 + }, + { + "x": -26, + "y": 6578.36 + }, + { + "x": -25, + "y": 6578.24 + }, + { + "x": -24, + "y": 6581.3 + }, + { + "x": -23, + "y": 6582.59 + }, + { + "x": -22, + "y": 6602.51 + }, + { + "x": -21, + "y": 6582.65 + }, + { + "x": -20, + "y": 6574.77 + }, + { + "x": -19, + "y": 6574.41 + }, + { + "x": -18, + "y": 6575.08 + }, + { + "x": -17, + "y": 6575.08 + }, + { + "x": -16, + "y": 6574.09 + }, + { + "x": -15, + "y": 6568.84 + }, + { + "x": -14, + "y": 6567.49 + }, + { + "x": -13, + "y": 6559.75 + }, + { + "x": -12, + "y": 6566.65 + }, + { + "x": -11, + "y": 6567.52 + }, + { + "x": -10, + "y": 6567.59 + }, + { + "x": -9, + "y": 6564.18 + }, + { + "x": -8, + "y": 6570.11 + }, + { + "x": -7, + "y": 6562.7 + }, + { + "x": -6, + "y": 6562.7 + }, + { + "x": -5, + "y": 6562.77 + }, + { + "x": -4, + "y": 6569.46 + }, + { + "x": -3, + "y": 6571.04 + }, + { + "x": -2, + "y": 6571.48 + }, + { + "x": -1, + "y": 6571.3 + } + ] + } + ] + } + }, + "prices": { + "btc": 8878.48, + "eth": 170.46, + "bch": 359.93, + "xrp": 0.23512 + }, + "wallets": { + "btc": 24.97311243, + "eth": 126.3212, + "bch": 78.454412, + "xrp": 11278.771123 + }, + "watchlist": [ + { + "title": "Ethereum", + "iso": "ETH", + "amount": 170.46, + "trend": { + "dir": "up", + "amount": 2.35 + }, + "series": [ + { + "name": "Price", + "data": [ + { + "x": "12:02", + "y": 154.36 + }, + { + "x": "12:03", + "y": 154.36 + }, + { + "x": "12:04", + "y": 146.94 + }, + { + "x": "12:05", + "y": 146.96 + }, + { + "x": "12:06", + "y": 146.11 + }, + { + "x": "12:07", + "y": 150.26 + }, + { + "x": "12:08", + "y": 146.11 + }, + { + "x": "12:09", + "y": 150.79 + }, + { + "x": "12:10", + "y": 145.36 + }, + { + "x": "12:11", + "y": 141.06 + }, + { + "x": "12:12", + "y": 140.1 + }, + { + "x": "12:13", + "y": 138.31 + }, + { + "x": "12:14", + "y": 138.42 + }, + { + "x": "12:15", + "y": 138.48 + }, + { + "x": "12:16", + "y": 138.71 + }, + { + "x": "12:17", + "y": 148.42 + }, + { + "x": "12:18", + "y": 146.87 + }, + { + "x": "12:19", + "y": 147.07 + }, + { + "x": "12:20", + "y": 135.07 + }, + { + "x": "12:21", + "y": 135.01 + } + ] + } + ] + }, + { + "title": "Bitcoin Cash", + "iso": "BCH", + "amount": 359.93, + "trend": { + "dir": "up", + "amount": 9.94 + }, + "series": [ + { + "name": "Price", + "data": [ + { + "x": "12:02", + "y": 374.77 + }, + { + "x": "12:03", + "y": 374.41 + }, + { + "x": "12:04", + "y": 375.08 + }, + { + "x": "12:05", + "y": 375.08 + }, + { + "x": "12:06", + "y": 374.09 + }, + { + "x": "12:07", + "y": 368.84 + }, + { + "x": "12:08", + "y": 367.49 + }, + { + "x": "12:09", + "y": 359.75 + }, + { + "x": "12:10", + "y": 366.65 + }, + { + "x": "12:11", + "y": 367.52 + }, + { + "x": "12:12", + "y": 367.59 + }, + { + "x": "12:13", + "y": 364.18 + }, + { + "x": "12:14", + "y": 370.11 + }, + { + "x": "12:15", + "y": 362.7 + }, + { + "x": "12:16", + "y": 362.7 + }, + { + "x": "12:17", + "y": 362.77 + }, + { + "x": "12:18", + "y": 369.46 + }, + { + "x": "12:19", + "y": 371.04 + }, + { + "x": "12:20", + "y": 371.48 + }, + { + "x": "12:21", + "y": 371.3 + } + ] + } + ] + }, + { + "title": "XRP", + "iso": "XRP", + "amount": 0.23512, + "trend": { + "dir": "down", + "amount": 0.35 + }, + "series": [ + { + "name": "Price", + "data": [ + { + "x": "12:02", + "y": 0.258 + }, + { + "x": "12:03", + "y": 0.256 + }, + { + "x": "12:04", + "y": 0.255 + }, + { + "x": "12:05", + "y": 0.255 + }, + { + "x": "12:06", + "y": 0.254 + }, + { + "x": "12:07", + "y": 0.248 + }, + { + "x": "12:08", + "y": 0.247 + }, + { + "x": "12:09", + "y": 0.249 + }, + { + "x": "12:10", + "y": 0.246 + }, + { + "x": "12:11", + "y": 0.247 + }, + { + "x": "12:12", + "y": 0.247 + }, + { + "x": "12:13", + "y": 0.244 + }, + { + "x": "12:14", + "y": 0.25 + }, + { + "x": "12:15", + "y": 0.242 + }, + { + "x": "12:16", + "y": 0.251 + }, + { + "x": "12:17", + "y": 0.251 + }, + { + "x": "12:18", + "y": 0.251 + }, + { + "x": "12:19", + "y": 0.249 + }, + { + "x": "12:20", + "y": 0.242 + }, + { + "x": "12:21", + "y": 0.24 + } + ] + } + ] + }, + { + "title": "Litecoin", + "iso": "LTC", + "amount": 60.15, + "trend": { + "dir": "up", + "amount": 0.99 + }, + "series": [ + { + "name": "Price", + "data": [ + { + "x": "12:02", + "y": 62.54 + }, + { + "x": "12:03", + "y": 61.54 + }, + { + "x": "12:04", + "y": 62.55 + }, + { + "x": "12:05", + "y": 60.55 + }, + { + "x": "12:06", + "y": 59.54 + }, + { + "x": "12:07", + "y": 58.48 + }, + { + "x": "12:08", + "y": 54.47 + }, + { + "x": "12:09", + "y": 51.49 + }, + { + "x": "12:10", + "y": 51.46 + }, + { + "x": "12:11", + "y": 53.47 + }, + { + "x": "12:12", + "y": 52.47 + }, + { + "x": "12:13", + "y": 54.44 + }, + { + "x": "12:14", + "y": 59.5 + }, + { + "x": "12:15", + "y": 62.42 + }, + { + "x": "12:16", + "y": 61.42 + }, + { + "x": "12:17", + "y": 60.42 + }, + { + "x": "12:18", + "y": 58.49 + }, + { + "x": "12:19", + "y": 57.51 + }, + { + "x": "12:20", + "y": 54.51 + }, + { + "x": "12:21", + "y": 51.25 + } + ] + } + ] + }, + { + "title": "Zcash", + "iso": "ZEC", + "amount": 58.41, + "trend": { + "dir": "down", + "amount": 8.79 + }, + "series": [ + { + "name": "Price", + "data": [ + { + "x": "12:02", + "y": 53.54 + }, + { + "x": "12:03", + "y": 52.54 + }, + { + "x": "12:04", + "y": 52.55 + }, + { + "x": "12:05", + "y": 46.44 + }, + { + "x": "12:06", + "y": 49.5 + }, + { + "x": "12:07", + "y": 55.42 + }, + { + "x": "12:08", + "y": 54.42 + }, + { + "x": "12:09", + "y": 43.49 + }, + { + "x": "12:10", + "y": 43.46 + }, + { + "x": "12:11", + "y": 41.47 + }, + { + "x": "12:12", + "y": 41.47 + }, + { + "x": "12:13", + "y": 51.55 + }, + { + "x": "12:14", + "y": 48.54 + }, + { + "x": "12:15", + "y": 49.48 + }, + { + "x": "12:16", + "y": 45.47 + }, + { + "x": "12:17", + "y": 51.42 + }, + { + "x": "12:18", + "y": 49.49 + }, + { + "x": "12:19", + "y": 46.51 + }, + { + "x": "12:20", + "y": 41.51 + }, + { + "x": "12:21", + "y": 44.25 + } + ] + } + ] + }, + { + "title": "Bitcoin Gold", + "iso": "BTG", + "amount": 12.23, + "trend": { + "dir": "down", + "amount": 4.42 + }, + "series": [ + { + "name": "Price", + "data": [ + { + "x": "12:02", + "y": 14.77 + }, + { + "x": "12:03", + "y": 14.41 + }, + { + "x": "12:04", + "y": 15.08 + }, + { + "x": "12:05", + "y": 15.08 + }, + { + "x": "12:06", + "y": 14.09 + }, + { + "x": "12:07", + "y": 18.84 + }, + { + "x": "12:08", + "y": 17.49 + }, + { + "x": "12:09", + "y": 19.75 + }, + { + "x": "12:10", + "y": 16.65 + }, + { + "x": "12:11", + "y": 17.52 + }, + { + "x": "12:12", + "y": 17.59 + }, + { + "x": "12:13", + "y": 14.18 + }, + { + "x": "12:14", + "y": 10.11 + }, + { + "x": "12:15", + "y": 12.7 + }, + { + "x": "12:16", + "y": 12.7 + }, + { + "x": "12:17", + "y": 12.77 + }, + { + "x": "12:18", + "y": 19.46 + }, + { + "x": "12:19", + "y": 11.04 + }, + { + "x": "12:20", + "y": 11.48 + }, + { + "x": "12:21", + "y": 11.3 + } + ] + } + ] + } + ] + } + }, + "finance_dashboard_widgets": { + "value": { + "accountBalance": { + "growRate": 38.33, + "ami": 45332, + "series": [ + { + "name": "Predicted", + "data": [ + { + "x": "2021-02-22T09:23:21.407Z", + "y": 48.84 + }, + { + "x": "2021-02-25T09:23:21.407Z", + "y": 53.51 + }, + { + "x": "2021-02-28T09:23:21.407Z", + "y": 52.93 + }, + { + "x": "2021-03-03T09:23:21.407Z", + "y": 49.08 + }, + { + "x": "2021-03-06T09:23:21.407Z", + "y": 50.27 + }, + { + "x": "2021-03-09T09:23:21.407Z", + "y": 48.37 + }, + { + "x": "2021-03-12T09:23:21.407Z", + "y": 44.84 + }, + { + "x": "2021-03-15T09:23:21.407Z", + "y": 40.71 + }, + { + "x": "2021-03-18T09:23:21.407Z", + "y": 41.24 + }, + { + "x": "2021-03-21T09:23:21.407Z", + "y": 45.63 + }, + { + "x": "2021-03-22T09:23:21.407Z", + "y": 38.2 + }, + { + "x": "2021-03-25T09:23:21.407Z", + "y": 39.68 + }, + { + "x": "2021-03-28T09:23:21.407Z", + "y": 41.02 + }, + { + "x": "2021-03-31T09:23:21.407Z", + "y": 39.41 + }, + { + "x": "2021-04-03T09:23:21.407Z", + "y": 35.66 + }, + { + "x": "2021-04-06T09:23:21.407Z", + "y": 38.53 + }, + { + "x": "2021-04-09T09:23:21.407Z", + "y": 38.53 + }, + { + "x": "2021-04-12T09:23:21.407Z", + "y": 40.69 + }, + { + "x": "2021-04-15T09:23:21.407Z", + "y": 38.79 + }, + { + "x": "2021-04-18T09:23:21.407Z", + "y": 42.98 + }, + { + "x": "2021-04-19T09:23:21.407Z", + "y": 43.55 + }, + { + "x": "2021-04-22T09:23:21.407Z", + "y": 40.65 + }, + { + "x": "2021-04-25T09:23:21.407Z", + "y": 36.5 + }, + { + "x": "2021-04-28T09:23:21.408Z", + "y": 33.79 + }, + { + "x": "2021-05-01T09:23:21.408Z", + "y": 31.91 + }, + { + "x": "2021-05-04T09:23:21.408Z", + "y": 29.68 + }, + { + "x": "2021-05-07T09:23:21.408Z", + "y": 29.57 + }, + { + "x": "2021-05-10T09:23:21.408Z", + "y": 33.13 + }, + { + "x": "2021-05-13T09:23:21.408Z", + "y": 37.08 + }, + { + "x": "2021-05-16T09:23:21.408Z", + "y": 35.86 + }, + { + "x": "2021-05-17T09:23:21.408Z", + "y": 39.65 + }, + { + "x": "2021-05-20T09:23:21.408Z", + "y": 39.01 + }, + { + "x": "2021-05-23T09:23:21.408Z", + "y": 34.1 + }, + { + "x": "2021-05-26T09:23:21.408Z", + "y": 37.48 + }, + { + "x": "2021-05-29T09:23:21.408Z", + "y": 39.29 + }, + { + "x": "2021-06-01T09:23:21.408Z", + "y": 38.46 + }, + { + "x": "2021-06-04T09:23:21.408Z", + "y": 37.71 + }, + { + "x": "2021-06-07T09:23:21.408Z", + "y": 40.15 + }, + { + "x": "2021-06-10T09:23:21.408Z", + "y": 35.89 + }, + { + "x": "2021-06-13T09:23:21.408Z", + "y": 31.5 + }, + { + "x": "2021-06-21T09:23:21.408Z", + "y": 30.5 + }, + { + "x": "2021-06-24T09:23:21.408Z", + "y": 25.74 + }, + { + "x": "2021-06-27T09:23:21.408Z", + "y": 28.23 + }, + { + "x": "2021-06-30T09:23:21.408Z", + "y": 28.48 + }, + { + "x": "2021-07-03T09:23:21.408Z", + "y": 30 + }, + { + "x": "2021-07-06T09:23:21.408Z", + "y": 32.16 + }, + { + "x": "2021-07-09T09:23:21.408Z", + "y": 32.99 + }, + { + "x": "2021-07-12T09:23:21.408Z", + "y": 37.68 + }, + { + "x": "2021-07-15T09:23:21.408Z", + "y": 35.24 + }, + { + "x": "2021-07-18T09:23:21.408Z", + "y": 39.18 + }, + { + "x": "2021-07-19T09:23:21.408Z", + "y": 41.45 + }, + { + "x": "2021-07-22T09:23:21.408Z", + "y": 43.78 + }, + { + "x": "2021-07-25T09:23:21.408Z", + "y": 39.41 + }, + { + "x": "2021-07-28T09:23:21.408Z", + "y": 39.32 + }, + { + "x": "2021-07-31T09:23:21.408Z", + "y": 43.8 + }, + { + "x": "2021-08-03T09:23:21.408Z", + "y": 42.43 + }, + { + "x": "2021-08-06T09:23:21.408Z", + "y": 43.67 + }, + { + "x": "2021-08-09T09:23:21.408Z", + "y": 38.79 + }, + { + "x": "2021-08-12T09:23:21.408Z", + "y": 43.57 + }, + { + "x": "2021-08-15T09:23:21.408Z", + "y": 41.81 + }, + { + "x": "2021-08-16T09:23:21.408Z", + "y": 46.19 + }, + { + "x": "2021-08-19T09:23:21.408Z", + "y": 47.69 + }, + { + "x": "2021-08-22T09:23:21.408Z", + "y": 49.01 + }, + { + "x": "2021-08-25T09:23:21.408Z", + "y": 46.4 + }, + { + "x": "2021-08-28T09:23:21.408Z", + "y": 51.28 + }, + { + "x": "2021-08-31T09:23:21.408Z", + "y": 50.15 + }, + { + "x": "2021-09-03T09:23:21.408Z", + "y": 53.6 + }, + { + "x": "2021-09-06T09:23:21.408Z", + "y": 56.08 + }, + { + "x": "2021-09-09T09:23:21.408Z", + "y": 52.72 + }, + { + "x": "2021-09-12T09:23:21.408Z", + "y": 56.6 + }, + { + "x": "2021-09-20T09:23:21.408Z", + "y": 58.36 + }, + { + "x": "2021-09-23T09:23:21.408Z", + "y": 56.59 + }, + { + "x": "2021-09-26T09:23:21.408Z", + "y": 55.75 + }, + { + "x": "2021-09-29T09:23:21.408Z", + "y": 54.74 + }, + { + "x": "2021-10-02T09:23:21.408Z", + "y": 54.27 + }, + { + "x": "2021-10-05T09:23:21.408Z", + "y": 58.65 + }, + { + "x": "2021-10-08T09:23:21.408Z", + "y": 57 + }, + { + "x": "2021-10-11T09:23:21.408Z", + "y": 60.52 + }, + { + "x": "2021-10-14T09:23:21.408Z", + "y": 57.6 + }, + { + "x": "2021-10-17T09:23:21.408Z", + "y": 56.48 + }, + { + "x": "2021-10-18T09:23:21.408Z", + "y": 54.35 + }, + { + "x": "2021-10-21T09:23:21.408Z", + "y": 52.39 + }, + { + "x": "2021-10-24T09:23:21.408Z", + "y": 54.52 + }, + { + "x": "2021-10-27T09:23:21.408Z", + "y": 54.16 + }, + { + "x": "2021-10-30T09:23:21.408Z", + "y": 51.95 + }, + { + "x": "2021-11-02T09:23:21.408Z", + "y": 51.19 + }, + { + "x": "2021-11-05T09:23:21.408Z", + "y": 46.35 + }, + { + "x": "2021-11-08T09:23:21.408Z", + "y": 48.33 + }, + { + "x": "2021-11-11T09:23:21.408Z", + "y": 45.84 + }, + { + "x": "2021-11-14T09:23:21.408Z", + "y": 48.22 + }, + { + "x": "2021-11-22T09:23:21.408Z", + "y": 45.82 + }, + { + "x": "2021-11-25T09:23:21.408Z", + "y": 43.48 + }, + { + "x": "2021-11-28T09:23:21.408Z", + "y": 41.32 + }, + { + "x": "2021-12-01T09:23:21.408Z", + "y": 40.99 + }, + { + "x": "2021-12-04T09:23:21.408Z", + "y": 38.49 + }, + { + "x": "2021-12-07T09:23:21.408Z", + "y": 40.1 + }, + { + "x": "2021-12-10T09:23:21.408Z", + "y": 44.86 + }, + { + "x": "2021-12-13T09:23:21.408Z", + "y": 44.03 + }, + { + "x": "2021-12-16T09:23:21.408Z", + "y": 41.41 + }, + { + "x": "2021-12-19T09:23:21.408Z", + "y": 37.8 + }, + { + "x": "2021-12-20T09:23:21.408Z", + "y": 35.24 + }, + { + "x": "2021-12-23T09:23:21.408Z", + "y": 32.12 + }, + { + "x": "2021-12-26T09:23:21.408Z", + "y": 35.68 + }, + { + "x": "2021-12-29T09:23:21.408Z", + "y": 38 + }, + { + "x": "2022-01-01T09:23:21.408Z", + "y": 37.96 + }, + { + "x": "2022-01-04T09:23:21.408Z", + "y": 38.7 + }, + { + "x": "2022-01-07T09:23:21.408Z", + "y": 37.45 + }, + { + "x": "2022-01-10T09:23:21.408Z", + "y": 37.51 + }, + { + "x": "2022-01-13T09:23:21.408Z", + "y": 33.1 + }, + { + "x": "2022-01-16T09:23:21.408Z", + "y": 35.09 + }, + { + "x": "2022-01-17T09:23:21.408Z", + "y": 31.87 + }, + { + "x": "2022-01-20T09:23:21.408Z", + "y": 29.18 + }, + { + "x": "2022-01-23T09:23:21.408Z", + "y": 31.91 + }, + { + "x": "2022-01-26T09:23:21.408Z", + "y": 34.37 + }, + { + "x": "2022-01-29T09:23:21.408Z", + "y": 32.91 + }, + { + "x": "2022-02-01T09:23:21.408Z", + "y": 33.17 + }, + { + "x": "2022-02-04T09:23:21.408Z", + "y": 37.16 + }, + { + "x": "2022-02-07T09:23:21.408Z", + "y": 32.6 + }, + { + "x": "2022-02-10T09:23:21.408Z", + "y": 36.94 + }, + { + "x": "2022-02-13T09:23:21.408Z", + "y": 35.98 + } + ] + }, + { + "name": "Actual", + "data": [ + { + "x": "2021-02-22T09:23:21.408Z", + "y": 20.21 + }, + { + "x": "2021-02-25T09:23:21.408Z", + "y": 17.49 + }, + { + "x": "2021-02-28T09:23:21.408Z", + "y": 16.54 + }, + { + "x": "2021-03-03T09:23:21.408Z", + "y": 19 + }, + { + "x": "2021-03-06T09:23:21.408Z", + "y": 16.47 + }, + { + "x": "2021-03-09T09:23:21.408Z", + "y": 13.15 + }, + { + "x": "2021-03-12T09:23:21.408Z", + "y": 18.07 + }, + { + "x": "2021-03-15T09:23:21.408Z", + "y": 17.93 + }, + { + "x": "2021-03-18T09:23:21.408Z", + "y": 18.92 + }, + { + "x": "2021-03-21T09:23:21.408Z", + "y": 18.46 + }, + { + "x": "2021-03-22T09:23:21.408Z", + "y": 18.04 + }, + { + "x": "2021-03-25T09:23:21.408Z", + "y": 17.78 + }, + { + "x": "2021-03-28T09:23:21.408Z", + "y": 20.15 + }, + { + "x": "2021-03-31T09:23:21.408Z", + "y": 18.92 + }, + { + "x": "2021-04-03T09:23:21.408Z", + "y": 17.08 + }, + { + "x": "2021-04-06T09:23:21.408Z", + "y": 17.11 + }, + { + "x": "2021-04-09T09:23:21.408Z", + "y": 15.7 + }, + { + "x": "2021-04-12T09:23:21.408Z", + "y": 15.07 + }, + { + "x": "2021-04-15T09:23:21.408Z", + "y": 14.51 + }, + { + "x": "2021-04-18T09:23:21.408Z", + "y": 15.22 + }, + { + "x": "2021-04-19T09:23:21.408Z", + "y": 19.77 + }, + { + "x": "2021-04-22T09:23:21.408Z", + "y": 23.67 + }, + { + "x": "2021-04-25T09:23:21.408Z", + "y": 27.98 + }, + { + "x": "2021-04-28T09:23:21.408Z", + "y": 30.8 + }, + { + "x": "2021-05-01T09:23:21.408Z", + "y": 28.56 + }, + { + "x": "2021-05-04T09:23:21.408Z", + "y": 27.45 + }, + { + "x": "2021-05-07T09:23:21.408Z", + "y": 27.5 + }, + { + "x": "2021-05-10T09:23:21.408Z", + "y": 27.28 + }, + { + "x": "2021-05-13T09:23:21.408Z", + "y": 24.36 + }, + { + "x": "2021-05-16T09:23:21.408Z", + "y": 22.89 + }, + { + "x": "2021-05-17T09:23:21.408Z", + "y": 28.04 + }, + { + "x": "2021-05-20T09:23:21.408Z", + "y": 27.77 + }, + { + "x": "2021-05-23T09:23:21.408Z", + "y": 30.24 + }, + { + "x": "2021-05-26T09:23:21.408Z", + "y": 26.57 + }, + { + "x": "2021-05-29T09:23:21.408Z", + "y": 22.18 + }, + { + "x": "2021-06-01T09:23:21.408Z", + "y": 19.64 + }, + { + "x": "2021-06-04T09:23:21.408Z", + "y": 16.74 + }, + { + "x": "2021-06-07T09:23:21.408Z", + "y": 17.21 + }, + { + "x": "2021-06-10T09:23:21.408Z", + "y": 20.05 + }, + { + "x": "2021-06-13T09:23:21.408Z", + "y": 16.13 + }, + { + "x": "2021-06-21T09:23:21.408Z", + "y": 10.71 + }, + { + "x": "2021-06-24T09:23:21.408Z", + "y": 7.99 + }, + { + "x": "2021-06-27T09:23:21.408Z", + "y": 11.33 + }, + { + "x": "2021-06-30T09:23:21.408Z", + "y": 15.36 + }, + { + "x": "2021-07-03T09:23:21.408Z", + "y": 20.16 + }, + { + "x": "2021-07-06T09:23:21.408Z", + "y": 22.56 + }, + { + "x": "2021-07-09T09:23:21.408Z", + "y": 19.34 + }, + { + "x": "2021-07-12T09:23:21.408Z", + "y": 18.32 + }, + { + "x": "2021-07-15T09:23:21.408Z", + "y": 20.75 + }, + { + "x": "2021-07-18T09:23:21.408Z", + "y": 17.09 + }, + { + "x": "2021-07-19T09:23:21.408Z", + "y": 18.31 + }, + { + "x": "2021-07-22T09:23:21.408Z", + "y": 14.34 + }, + { + "x": "2021-07-25T09:23:21.408Z", + "y": 9.93 + }, + { + "x": "2021-07-28T09:23:21.408Z", + "y": 10.64 + }, + { + "x": "2021-07-31T09:23:21.408Z", + "y": 6.18 + }, + { + "x": "2021-08-03T09:23:21.408Z", + "y": 10.32 + }, + { + "x": "2021-08-06T09:23:21.408Z", + "y": 12.8 + }, + { + "x": "2021-08-09T09:23:21.408Z", + "y": 13.44 + }, + { + "x": "2021-08-12T09:23:21.408Z", + "y": 18.35 + }, + { + "x": "2021-08-15T09:23:21.408Z", + "y": 22.87 + }, + { + "x": "2021-08-16T09:23:21.408Z", + "y": 26.92 + }, + { + "x": "2021-08-19T09:23:21.408Z", + "y": 22.5 + }, + { + "x": "2021-08-22T09:23:21.408Z", + "y": 18.14 + }, + { + "x": "2021-08-25T09:23:21.408Z", + "y": 19.06 + }, + { + "x": "2021-08-28T09:23:21.408Z", + "y": 19.73 + }, + { + "x": "2021-08-31T09:23:21.408Z", + "y": 18.82 + }, + { + "x": "2021-09-03T09:23:21.408Z", + "y": 23.33 + }, + { + "x": "2021-09-06T09:23:21.408Z", + "y": 20.48 + }, + { + "x": "2021-09-09T09:23:21.408Z", + "y": 25.47 + }, + { + "x": "2021-09-12T09:23:21.408Z", + "y": 28.84 + }, + { + "x": "2021-09-20T09:23:21.408Z", + "y": 27.71 + }, + { + "x": "2021-09-23T09:23:21.408Z", + "y": 25.22 + }, + { + "x": "2021-09-26T09:23:21.408Z", + "y": 25.43 + }, + { + "x": "2021-09-29T09:23:21.408Z", + "y": 24.13 + }, + { + "x": "2021-10-02T09:23:21.408Z", + "y": 20.02 + }, + { + "x": "2021-10-05T09:23:21.409Z", + "y": 18.38 + }, + { + "x": "2021-10-08T09:23:21.409Z", + "y": 18.3 + }, + { + "x": "2021-10-11T09:23:21.409Z", + "y": 18.72 + }, + { + "x": "2021-10-14T09:23:21.409Z", + "y": 22.46 + }, + { + "x": "2021-10-17T09:23:21.409Z", + "y": 21.71 + }, + { + "x": "2021-10-18T09:23:21.409Z", + "y": 29.88 + }, + { + "x": "2021-10-21T09:23:21.409Z", + "y": 26.94 + }, + { + "x": "2021-10-24T09:23:21.409Z", + "y": 28.06 + }, + { + "x": "2021-10-27T09:23:21.409Z", + "y": 30.4 + }, + { + "x": "2021-10-30T09:23:21.409Z", + "y": 28.98 + }, + { + "x": "2021-11-02T09:23:21.409Z", + "y": 30.13 + }, + { + "x": "2021-11-05T09:23:21.409Z", + "y": 27.6 + }, + { + "x": "2021-11-08T09:23:21.409Z", + "y": 30.21 + }, + { + "x": "2021-11-11T09:23:21.409Z", + "y": 26.88 + }, + { + "x": "2021-11-14T09:23:21.409Z", + "y": 25.72 + }, + { + "x": "2021-11-22T09:23:21.409Z", + "y": 27.89 + }, + { + "x": "2021-11-25T09:23:21.409Z", + "y": 30.69 + }, + { + "x": "2021-11-28T09:23:21.409Z", + "y": 31.42 + }, + { + "x": "2021-12-01T09:23:21.409Z", + "y": 36.14 + }, + { + "x": "2021-12-04T09:23:21.409Z", + "y": 32.02 + }, + { + "x": "2021-12-07T09:23:21.409Z", + "y": 27.3 + }, + { + "x": "2021-12-10T09:23:21.409Z", + "y": 29.51 + }, + { + "x": "2021-12-13T09:23:21.409Z", + "y": 32.67 + }, + { + "x": "2021-12-16T09:23:21.409Z", + "y": 28.82 + }, + { + "x": "2021-12-19T09:23:21.409Z", + "y": 28.85 + }, + { + "x": "2021-12-20T09:23:21.409Z", + "y": 29.15 + }, + { + "x": "2021-12-23T09:23:21.409Z", + "y": 27.9 + }, + { + "x": "2021-12-26T09:23:21.409Z", + "y": 30.71 + }, + { + "x": "2021-12-29T09:23:21.409Z", + "y": 28.02 + }, + { + "x": "2022-01-01T09:23:21.409Z", + "y": 23.82 + }, + { + "x": "2022-01-04T09:23:21.409Z", + "y": 18.83 + }, + { + "x": "2022-01-07T09:23:21.409Z", + "y": 14.48 + }, + { + "x": "2022-01-10T09:23:21.409Z", + "y": 11.76 + }, + { + "x": "2022-01-13T09:23:21.409Z", + "y": 12.75 + }, + { + "x": "2022-01-16T09:23:21.409Z", + "y": 11.36 + }, + { + "x": "2022-01-17T09:23:21.409Z", + "y": 11.6 + }, + { + "x": "2022-01-20T09:23:21.409Z", + "y": 15.24 + }, + { + "x": "2022-01-23T09:23:21.409Z", + "y": 13.05 + }, + { + "x": "2022-01-26T09:23:21.409Z", + "y": 17.25 + }, + { + "x": "2022-01-29T09:23:21.409Z", + "y": 18.5 + }, + { + "x": "2022-02-01T09:23:21.409Z", + "y": 23.04 + }, + { + "x": "2022-02-04T09:23:21.409Z", + "y": 21.87 + }, + { + "x": "2022-02-07T09:23:21.409Z", + "y": 25.97 + }, + { + "x": "2022-02-10T09:23:21.409Z", + "y": 22.46 + }, + { + "x": "2022-02-13T09:23:21.409Z", + "y": 17.67 + } + ] + } + ] + }, + "budget": { + "expenses": 11763.34, + "expensesLimit": 20000, + "savings": 10974.12, + "savingsGoal": 250000, + "bills": 1789.22, + "billsLimit": 1000 + }, + "previousStatement": { + "status": "paid", + "date": "February 6, 2022", + "limit": 34500, + "spent": 27221.21, + "minimum": 7331.94 + }, + "currentStatement": { + "status": "pending", + "date": "March 6, 2022", + "limit": 34500, + "spent": 39819.41, + "minimum": 9112.51 + }, + "recentTransactions": { + "columns": [ + "Transaction ID", + "Date", + "Name", + "Amount", + "Status" + ], + "rows": [ + { + "id": "528651571NT", + "date": "2019-10-07T22:22:37.274Z", + "name": "Morgan Page", + "amount": 1358.75, + "status": "completed" + }, + { + "id": "421436904YT", + "date": "2019-12-18T14:51:24.461Z", + "name": "Nita Hebert", + "amount": -1042.82, + "status": "completed" + }, + { + "id": "685377421YT", + "date": "2019-12-25T17:52:14.304Z", + "name": "Marsha Chambers", + "amount": 1828.16, + "status": "pending" + }, + { + "id": "884960091RT", + "date": "2019-11-29T06:32:16.111Z", + "name": "Charmaine Jackson", + "amount": 1647.55, + "status": "completed" + }, + { + "id": "361402213NT", + "date": "2019-11-24T12:13:23.064Z", + "name": "Maura Carey", + "amount": -927.43, + "status": "completed" + } + ] + } + } + }, + "icons_heroicons": { + "value": [ + "academic-cap", + "annotation", + "adjustments", + "archive", + "arrow-circle-down", + "arrow-circle-left", + "arrow-circle-right", + "arrow-circle-up", + "arrow-down", + "arrow-left", + "arrow-narrow-down", + "arrow-narrow-left", + "arrow-narrow-right", + "arrow-narrow-up", + "arrow-right", + "arrow-sm-left", + "arrow-sm-down", + "arrow-sm-right", + "arrow-sm-up", + "arrow-up", + "arrows-expand", + "at-symbol", + "badge-check", + "backspace", + "ban", + "beaker", + "bell", + "book-open", + "bookmark-alt", + "bookmark", + "briefcase", + "cake", + "calculator", + "calendar", + "camera", + "cash", + "chart-bar", + "chart-pie", + "chart-square-bar", + "chat-alt-2", + "chat-alt", + "chat", + "check-circle", + "check", + "chevron-double-down", + "chevron-double-left", + "chevron-double-up", + "chevron-double-right", + "chevron-down", + "chevron-left", + "chevron-right", + "chevron-up", + "chip", + "clipboard-check", + "clipboard-copy", + "clipboard-list", + "clipboard", + "clock", + "cloud-download", + "cloud-upload", + "cloud", + "code", + "cog", + "collection", + "credit-card", + "color-swatch", + "cube-transparent", + "cube", + "currency-bangladeshi", + "currency-dollar", + "currency-euro", + "currency-pound", + "currency-rupee", + "currency-yen", + "cursor-click", + "database", + "desktop-computer", + "device-mobile", + "device-tablet", + "document-add", + "document-download", + "document-duplicate", + "document-remove", + "document-report", + "document-search", + "document-text", + "document", + "dots-circle-horizontal", + "dots-horizontal", + "dots-vertical", + "download", + "duplicate", + "emoji-happy", + "emoji-sad", + "exclamation-circle", + "exclamation", + "external-link", + "eye-off", + "eye", + "fast-forward", + "film", + "filter", + "finger-print", + "fire", + "flag", + "folder-add", + "folder-download", + "folder-open", + "folder-remove", + "folder", + "gift", + "globe-alt", + "globe", + "hand", + "hashtag", + "heart", + "home", + "identification", + "inbox-in", + "inbox", + "information-circle", + "key", + "library", + "light-bulb", + "lightning-bolt", + "link", + "location-marker", + "lock-closed", + "lock-open", + "login", + "logout", + "mail-open", + "mail", + "map", + "menu-alt-1", + "menu-alt-2", + "menu-alt-3", + "menu-alt-4", + "menu", + "microphone", + "minus-circle", + "minus-sm", + "minus", + "moon", + "music-note", + "newspaper", + "office-building", + "paper-airplane", + "paper-clip", + "pause", + "pencil-alt", + "pencil", + "phone-incoming", + "phone-missed-call", + "phone-outgoing", + "photograph", + "phone", + "play", + "plus-circle", + "plus-sm", + "plus", + "presentation-chart-bar", + "presentation-chart-line", + "printer", + "qrcode", + "puzzle", + "question-mark-circle", + "receipt-refund", + "receipt-tax", + "refresh", + "reply", + "rewind", + "rss", + "save-as", + "save", + "scale", + "scissors", + "search-circle", + "search", + "selector", + "server", + "share", + "shield-check", + "shield-exclamation", + "shopping-bag", + "shopping-cart", + "sort-ascending", + "sort-descending", + "speakerphone", + "sparkles", + "star", + "status-online", + "status-offline", + "stop", + "sun", + "support", + "switch-vertical", + "switch-horizontal", + "table", + "tag", + "template", + "terminal", + "thumb-up", + "thumb-down", + "ticket", + "translate", + "trash", + "trending-down", + "trending-up", + "truck", + "upload", + "user-add", + "user-group", + "user-circle", + "user-remove", + "user", + "users", + "variable", + "video-camera", + "view-boards", + "view-grid-add", + "view-grid", + "view-list", + "volume-up", + "volume-off", + "x-circle", + "zoom-in", + "wifi", + "zoom-out", + "x" + ] + }, + "icons_material": { + "value": [ + "10k", + "10mp", + "11mp", + "12mp", + "13mp", + "14mp", + "15mp", + "16mp", + "17mp", + "18mp", + "19mp", + "1k", + "1k_plus", + "1x_mobiledata", + "20mp", + "21mp", + "22mp", + "23mp", + "24mp", + "2k", + "2k_plus", + "2mp", + "30fps", + "30fps_select", + "360", + "3d_rotation", + "3g_mobiledata", + "3k", + "3k_plus", + "3mp", + "3p", + "4g_mobiledata", + "4g_plus_mobiledata", + "4k", + "4k_plus", + "4mp", + "5g", + "5k", + "5k_plus", + "5mp", + "60fps", + "60fps_select", + "6_ft_apart", + "6k", + "6k_plus", + "6mp", + "7k", + "7k_plus", + "7mp", + "8k", + "8k_plus", + "8mp", + "9k", + "9k_plus", + "9mp", + "ac_unit", + "access_alarm", + "access_alarms", + "access_time", + "access_time_filled", + "accessibility", + "accessibility_new", + "accessible", + "accessible_forward", + "account_balance", + "account_balance_wallet", + "account_box", + "account_circle", + "account_tree", + "ad_units", + "adb", + "add", + "add_a_photo", + "add_alarm", + "add_alert", + "add_box", + "add_business", + "add_chart", + "add_circle", + "add_circle_outline", + "add_comment", + "add_ic_call", + "add_link", + "add_location", + "add_location_alt", + "add_moderator", + "add_photo_alternate", + "add_reaction", + "add_road", + "add_shopping_cart", + "add_task", + "add_to_drive", + "add_to_home_screen", + "add_to_photos", + "add_to_queue", + "addchart", + "adjust", + "admin_panel_settings", + "ads_click", + "agriculture", + "air", + "airline_seat_flat", + "airline_seat_flat_angled", + "airline_seat_individual_suite", + "airline_seat_legroom_extra", + "airline_seat_legroom_normal", + "airline_seat_legroom_reduced", + "airline_seat_recline_extra", + "airline_seat_recline_normal", + "airplane_ticket", + "airplanemode_active", + "airplanemode_inactive", + "airplay", + "airport_shuttle", + "alarm", + "alarm_add", + "alarm_off", + "alarm_on", + "album", + "align_horizontal_center", + "align_horizontal_left", + "align_horizontal_right", + "align_vertical_bottom", + "align_vertical_center", + "align_vertical_top", + "all_inbox", + "all_inclusive", + "all_out", + "alt_route", + "alternate_email", + "analytics", + "anchor", + "android", + "animation", + "announcement", + "aod", + "apartment", + "api", + "app_blocking", + "app_registration", + "app_settings_alt", + "approval", + "apps", + "architecture", + "archive", + "area_chart", + "arrow_back", + "arrow_back_ios", + "arrow_back_ios_new", + "arrow_circle_down", + "arrow_circle_up", + "arrow_downward", + "arrow_drop_down", + "arrow_drop_down_circle", + "arrow_drop_up", + "arrow_forward", + "arrow_forward_ios", + "arrow_left", + "arrow_right", + "arrow_right_alt", + "arrow_upward", + "art_track", + "article", + "aspect_ratio", + "assessment", + "assignment", + "assignment_ind", + "assignment_late", + "assignment_return", + "assignment_returned", + "assignment_turned_in", + "assistant", + "assistant_direction", + "assistant_photo", + "atm", + "attach_email", + "attach_file", + "attach_money", + "attachment", + "attractions", + "attribution", + "audiotrack", + "auto_awesome", + "auto_awesome_mosaic", + "auto_awesome_motion", + "auto_delete", + "auto_fix_high", + "auto_fix_normal", + "auto_fix_off", + "auto_graph", + "auto_stories", + "autofps_select", + "autorenew", + "av_timer", + "baby_changing_station", + "back_hand", + "backpack", + "backspace", + "backup", + "backup_table", + "badge", + "bakery_dining", + "balcony", + "ballot", + "bar_chart", + "batch_prediction", + "bathroom", + "bathtub", + "battery_alert", + "battery_charging_full", + "battery_full", + "battery_saver", + "battery_std", + "battery_unknown", + "beach_access", + "bed", + "bedroom_baby", + "bedroom_child", + "bedroom_parent", + "bedtime", + "beenhere", + "bento", + "bike_scooter", + "biotech", + "blender", + "block", + "bloodtype", + "bluetooth", + "bluetooth_audio", + "bluetooth_connected", + "bluetooth_disabled", + "bluetooth_drive", + "bluetooth_searching", + "blur_circular", + "blur_linear", + "blur_off", + "blur_on", + "bolt", + "book", + "book_online", + "bookmark", + "bookmark_add", + "bookmark_added", + "bookmark_border", + "bookmark_remove", + "bookmarks", + "border_all", + "border_bottom", + "border_clear", + "border_color", + "border_horizontal", + "border_inner", + "border_left", + "border_outer", + "border_right", + "border_style", + "border_top", + "border_vertical", + "branding_watermark", + "breakfast_dining", + "brightness_1", + "brightness_2", + "brightness_3", + "brightness_4", + "brightness_5", + "brightness_6", + "brightness_7", + "brightness_auto", + "brightness_high", + "brightness_low", + "brightness_medium", + "broken_image", + "browser_not_supported", + "brunch_dining", + "brush", + "bubble_chart", + "bug_report", + "build", + "build_circle", + "bungalow", + "burst_mode", + "bus_alert", + "business", + "business_center", + "cabin", + "cable", + "cached", + "cake", + "calculate", + "calendar_today", + "calendar_view_day", + "calendar_view_month", + "calendar_view_week", + "call", + "call_end", + "call_made", + "call_merge", + "call_missed", + "call_missed_outgoing", + "call_received", + "call_split", + "call_to_action", + "camera", + "camera_alt", + "camera_enhance", + "camera_front", + "camera_indoor", + "camera_outdoor", + "camera_rear", + "camera_roll", + "cameraswitch", + "campaign", + "cancel", + "cancel_presentation", + "cancel_schedule_send", + "car_rental", + "car_repair", + "card_giftcard", + "card_membership", + "card_travel", + "carpenter", + "cases", + "casino", + "cast", + "cast_connected", + "cast_for_education", + "catching_pokemon", + "category", + "celebration", + "cell_wifi", + "center_focus_strong", + "center_focus_weak", + "chair", + "chair_alt", + "chalet", + "change_circle", + "change_history", + "charging_station", + "chat", + "chat_bubble", + "chat_bubble_outline", + "check", + "check_box", + "check_box_outline_blank", + "check_circle", + "check_circle_outline", + "checklist", + "checklist_rtl", + "checkroom", + "chevron_left", + "chevron_right", + "child_care", + "child_friendly", + "chrome_reader_mode", + "circle", + "circle_notifications", + "class", + "clean_hands", + "cleaning_services", + "clear", + "clear_all", + "close", + "close_fullscreen", + "closed_caption", + "closed_caption_disabled", + "closed_caption_off", + "cloud", + "cloud_circle", + "cloud_done", + "cloud_download", + "cloud_off", + "cloud_queue", + "cloud_upload", + "code", + "code_off", + "coffee", + "coffee_maker", + "collections", + "collections_bookmark", + "color_lens", + "colorize", + "comment", + "comment_bank", + "commute", + "compare", + "compare_arrows", + "compass_calibration", + "compost", + "compress", + "computer", + "confirmation_number", + "connect_without_contact", + "connected_tv", + "construction", + "contact_mail", + "contact_page", + "contact_phone", + "contact_support", + "contactless", + "contacts", + "content_copy", + "content_cut", + "content_paste", + "content_paste_off", + "control_camera", + "control_point", + "control_point_duplicate", + "copy_all", + "copyright", + "coronavirus", + "corporate_fare", + "cottage", + "countertops", + "create", + "create_new_folder", + "credit_card", + "credit_card_off", + "credit_score", + "crib", + "crop", + "crop_16_9", + "crop_3_2", + "crop_5_4", + "crop_7_5", + "crop_din", + "crop_free", + "crop_landscape", + "crop_original", + "crop_portrait", + "crop_rotate", + "crop_square", + "cruelty_free", + "dangerous", + "dark_mode", + "dashboard", + "dashboard_customize", + "data_exploration", + "data_saver_off", + "data_saver_on", + "data_usage", + "date_range", + "deck", + "dehaze", + "delete", + "delete_forever", + "delete_outline", + "delete_sweep", + "delivery_dining", + "departure_board", + "description", + "design_services", + "desktop_access_disabled", + "desktop_mac", + "desktop_windows", + "details", + "developer_board", + "developer_board_off", + "developer_mode", + "device_hub", + "device_thermostat", + "device_unknown", + "devices", + "devices_other", + "dialer_sip", + "dialpad", + "dining", + "dinner_dining", + "directions", + "directions_bike", + "directions_boat", + "directions_boat_filled", + "directions_bus", + "directions_bus_filled", + "directions_car", + "directions_car_filled", + "directions_off", + "directions_railway", + "directions_railway_filled", + "directions_run", + "directions_subway", + "directions_subway_filled", + "directions_transit", + "directions_transit_filled", + "directions_walk", + "dirty_lens", + "disabled_by_default", + "disabled_visible", + "disc_full", + "dns", + "do_disturb", + "do_disturb_alt", + "do_disturb_off", + "do_disturb_on", + "do_not_disturb", + "do_not_disturb_alt", + "do_not_disturb_off", + "do_not_disturb_on", + "do_not_disturb_on_total_silence", + "do_not_step", + "do_not_touch", + "dock", + "document_scanner", + "domain", + "domain_disabled", + "domain_verification", + "done", + "done_all", + "done_outline", + "donut_large", + "donut_small", + "door_back", + "door_front", + "door_sliding", + "doorbell", + "double_arrow", + "downhill_skiing", + "download", + "download_done", + "download_for_offline", + "downloading", + "drafts", + "drag_handle", + "drag_indicator", + "draw", + "drive_eta", + "drive_file_move", + "drive_file_move_rtl", + "drive_file_rename_outline", + "drive_folder_upload", + "dry", + "dry_cleaning", + "duo", + "dvr", + "dynamic_feed", + "dynamic_form", + "e_mobiledata", + "earbuds", + "earbuds_battery", + "east", + "edgesensor_high", + "edgesensor_low", + "edit", + "edit_attributes", + "edit_calendar", + "edit_location", + "edit_location_alt", + "edit_note", + "edit_notifications", + "edit_off", + "edit_road", + "eject", + "elderly", + "electric_bike", + "electric_car", + "electric_moped", + "electric_rickshaw", + "electric_scooter", + "electrical_services", + "elevator", + "email", + "emergency", + "emoji_emotions", + "emoji_events", + "emoji_flags", + "emoji_food_beverage", + "emoji_nature", + "emoji_objects", + "emoji_people", + "emoji_symbols", + "emoji_transportation", + "engineering", + "enhanced_encryption", + "equalizer", + "error", + "error_outline", + "escalator", + "escalator_warning", + "euro", + "euro_symbol", + "ev_station", + "event", + "event_available", + "event_busy", + "event_note", + "event_seat", + "exit_to_app", + "expand", + "expand_less", + "expand_more", + "explicit", + "explore", + "explore_off", + "exposure", + "exposure_neg_1", + "exposure_neg_2", + "exposure_plus_1", + "exposure_plus_2", + "exposure_zero", + "extension", + "extension_off", + "face", + "face_retouching_natural", + "face_retouching_off", + "facebook", + "fact_check", + "family_restroom", + "fast_forward", + "fast_rewind", + "fastfood", + "favorite", + "favorite_border", + "featured_play_list", + "featured_video", + "feed", + "feedback", + "female", + "fence", + "festival", + "fiber_dvr", + "fiber_manual_record", + "fiber_new", + "fiber_pin", + "fiber_smart_record", + "file_copy", + "file_download", + "file_download_done", + "file_download_off", + "file_present", + "file_upload", + "filter", + "filter_1", + "filter_2", + "filter_3", + "filter_4", + "filter_5", + "filter_6", + "filter_7", + "filter_8", + "filter_9", + "filter_9_plus", + "filter_alt", + "filter_b_and_w", + "filter_center_focus", + "filter_drama", + "filter_frames", + "filter_hdr", + "filter_list", + "filter_none", + "filter_tilt_shift", + "filter_vintage", + "find_in_page", + "find_replace", + "fingerprint", + "fire_extinguisher", + "fireplace", + "first_page", + "fit_screen", + "fitness_center", + "flag", + "flaky", + "flare", + "flash_auto", + "flash_off", + "flash_on", + "flashlight_off", + "flashlight_on", + "flatware", + "flight", + "flight_land", + "flight_takeoff", + "flip", + "flip_camera_android", + "flip_camera_ios", + "flip_to_back", + "flip_to_front", + "flourescent", + "flutter_dash", + "fmd_bad", + "fmd_good", + "folder", + "folder_open", + "folder_shared", + "folder_special", + "follow_the_signs", + "font_download", + "font_download_off", + "food_bank", + "format_align_center", + "format_align_justify", + "format_align_left", + "format_align_right", + "format_bold", + "format_clear", + "format_color_fill", + "format_color_reset", + "format_color_text", + "format_indent_decrease", + "format_indent_increase", + "format_italic", + "format_line_spacing", + "format_list_bulleted", + "format_list_numbered", + "format_list_numbered_rtl", + "format_paint", + "format_quote", + "format_shapes", + "format_size", + "format_strikethrough", + "format_textdirection_l_to_r", + "format_textdirection_r_to_l", + "format_underlined", + "forum", + "forward", + "forward_10", + "forward_30", + "forward_5", + "forward_to_inbox", + "foundation", + "free_breakfast", + "free_cancellation", + "front_hand", + "fullscreen", + "fullscreen_exit", + "functions", + "g_mobiledata", + "g_translate", + "gamepad", + "games", + "garage", + "gavel", + "generating_tokens", + "gesture", + "get_app", + "gif", + "gite", + "golf_course", + "gpp_bad", + "gpp_good", + "gpp_maybe", + "gps_fixed", + "gps_not_fixed", + "gps_off", + "grade", + "gradient", + "grading", + "grain", + "graphic_eq", + "grass", + "grid_3x3", + "grid_4x4", + "grid_goldenratio", + "grid_off", + "grid_on", + "grid_view", + "group", + "group_add", + "group_off", + "group_work", + "groups", + "h_mobiledata", + "h_plus_mobiledata", + "hail", + "handyman", + "hardware", + "hd", + "hdr_auto", + "hdr_auto_select", + "hdr_enhanced_select", + "hdr_off", + "hdr_off_select", + "hdr_on", + "hdr_on_select", + "hdr_plus", + "hdr_strong", + "hdr_weak", + "headphones", + "headphones_battery", + "headset", + "headset_mic", + "headset_off", + "healing", + "health_and_safety", + "hearing", + "hearing_disabled", + "height", + "help", + "help_center", + "help_outline", + "hevc", + "hide_image", + "hide_source", + "high_quality", + "highlight", + "highlight_alt", + "highlight_off", + "hiking", + "history", + "history_edu", + "history_toggle_off", + "holiday_village", + "home", + "home_max", + "home_mini", + "home_repair_service", + "home_work", + "horizontal_distribute", + "horizontal_rule", + "horizontal_split", + "hot_tub", + "hotel", + "hotel_class", + "hourglass_bottom", + "hourglass_disabled", + "hourglass_empty", + "hourglass_full", + "hourglass_top", + "house", + "house_siding", + "houseboat", + "how_to_reg", + "how_to_vote", + "http", + "https", + "hvac", + "ice_skating", + "icecream", + "image", + "image_aspect_ratio", + "image_not_supported", + "image_search", + "imagesearch_roller", + "import_contacts", + "import_export", + "important_devices", + "inbox", + "incomplete_circle", + "indeterminate_check_box", + "info", + "input", + "insert_chart", + "insert_chart_outlined", + "insert_comment", + "insert_drive_file", + "insert_emoticon", + "insert_invitation", + "insert_link", + "insert_photo", + "insights", + "integration_instructions", + "inventory", + "inventory_2", + "invert_colors", + "invert_colors_off", + "ios_share", + "iron", + "iso", + "kayaking", + "keyboard", + "keyboard_alt", + "keyboard_arrow_down", + "keyboard_arrow_left", + "keyboard_arrow_right", + "keyboard_arrow_up", + "keyboard_backspace", + "keyboard_capslock", + "keyboard_hide", + "keyboard_return", + "keyboard_tab", + "keyboard_voice", + "king_bed", + "kitchen", + "kitesurfing", + "label", + "label_important", + "label_off", + "landscape", + "language", + "laptop", + "laptop_chromebook", + "laptop_mac", + "laptop_windows", + "last_page", + "launch", + "layers", + "layers_clear", + "leaderboard", + "leak_add", + "leak_remove", + "legend_toggle", + "lens", + "lens_blur", + "library_add", + "library_add_check", + "library_books", + "library_music", + "light", + "light_mode", + "lightbulb", + "line_style", + "line_weight", + "linear_scale", + "link", + "link_off", + "linked_camera", + "liquor", + "list", + "list_alt", + "live_help", + "live_tv", + "living", + "local_activity", + "local_airport", + "local_atm", + "local_bar", + "local_cafe", + "local_car_wash", + "local_convenience_store", + "local_dining", + "local_drink", + "local_fire_department", + "local_florist", + "local_gas_station", + "local_grocery_store", + "local_hospital", + "local_hotel", + "local_laundry_service", + "local_library", + "local_mall", + "local_movies", + "local_offer", + "local_parking", + "local_pharmacy", + "local_phone", + "local_pizza", + "local_play", + "local_police", + "local_post_office", + "local_printshop", + "local_see", + "local_shipping", + "local_taxi", + "location_city", + "location_disabled", + "location_off", + "location_on", + "location_searching", + "lock", + "lock_clock", + "lock_open", + "login", + "logout", + "looks", + "looks_3", + "looks_4", + "looks_5", + "looks_6", + "looks_one", + "looks_two", + "loop", + "loupe", + "low_priority", + "loyalty", + "lte_mobiledata", + "lte_plus_mobiledata", + "luggage", + "lunch_dining", + "mail", + "mail_outline", + "male", + "manage_accounts", + "manage_search", + "map", + "maps_home_work", + "maps_ugc", + "margin", + "mark_as_unread", + "mark_chat_read", + "mark_chat_unread", + "mark_email_read", + "mark_email_unread", + "markunread", + "markunread_mailbox", + "masks", + "maximize", + "media_bluetooth_off", + "media_bluetooth_on", + "mediation", + "medical_services", + "medication", + "meeting_room", + "memory", + "menu", + "menu_book", + "menu_open", + "merge_type", + "message", + "mic", + "mic_external_off", + "mic_external_on", + "mic_none", + "mic_off", + "microwave", + "military_tech", + "minimize", + "miscellaneous_services", + "missed_video_call", + "mms", + "mobile_friendly", + "mobile_off", + "mobile_screen_share", + "mobiledata_off", + "mode", + "mode_comment", + "mode_edit", + "mode_edit_outline", + "mode_night", + "mode_standby", + "model_training", + "monetization_on", + "money", + "money_off", + "money_off_csred", + "monitor", + "monitor_weight", + "monochrome_photos", + "mood", + "mood_bad", + "moped", + "more", + "more_horiz", + "more_time", + "more_vert", + "motion_photos_auto", + "motion_photos_off", + "motion_photos_on", + "motion_photos_pause", + "motion_photos_paused", + "mouse", + "move_to_inbox", + "movie", + "movie_creation", + "movie_filter", + "moving", + "mp", + "multiline_chart", + "multiple_stop", + "museum", + "music_note", + "music_off", + "music_video", + "my_location", + "nat", + "nature", + "nature_people", + "navigate_before", + "navigate_next", + "navigation", + "near_me", + "near_me_disabled", + "nearby_error", + "nearby_off", + "network_cell", + "network_check", + "network_locked", + "network_wifi", + "new_label", + "new_releases", + "next_plan", + "next_week", + "nfc", + "night_shelter", + "nightlife", + "nightlight", + "nightlight_round", + "nights_stay", + "no_accounts", + "no_backpack", + "no_cell", + "no_drinks", + "no_encryption", + "no_encryption_gmailerrorred", + "no_flash", + "no_food", + "no_luggage", + "no_meals", + "no_meeting_room", + "no_photography", + "no_sim", + "no_stroller", + "no_transfer", + "nordic_walking", + "north", + "north_east", + "north_west", + "not_accessible", + "not_interested", + "not_listed_location", + "not_started", + "note", + "note_add", + "note_alt", + "notes", + "notification_add", + "notification_important", + "notifications", + "notifications_active", + "notifications_none", + "notifications_off", + "notifications_paused", + "offline_bolt", + "offline_pin", + "offline_share", + "ondemand_video", + "online_prediction", + "opacity", + "open_in_browser", + "open_in_full", + "open_in_new", + "open_in_new_off", + "open_with", + "other_houses", + "outbound", + "outbox", + "outdoor_grill", + "outlet", + "outlined_flag", + "padding", + "pages", + "pageview", + "paid", + "palette", + "pan_tool", + "panorama", + "panorama_fish_eye", + "panorama_horizontal", + "panorama_horizontal_select", + "panorama_photosphere", + "panorama_photosphere_select", + "panorama_vertical", + "panorama_vertical_select", + "panorama_wide_angle", + "panorama_wide_angle_select", + "paragliding", + "park", + "party_mode", + "password", + "pattern", + "pause", + "pause_circle", + "pause_circle_filled", + "pause_circle_outline", + "pause_presentation", + "payment", + "payments", + "pedal_bike", + "pending", + "pending_actions", + "people", + "people_alt", + "people_outline", + "perm_camera_mic", + "perm_contact_calendar", + "perm_data_setting", + "perm_device_information", + "perm_identity", + "perm_media", + "perm_phone_msg", + "perm_scan_wifi", + "person", + "person_add", + "person_add_alt", + "person_add_alt_1", + "person_add_disabled", + "person_off", + "person_outline", + "person_pin", + "person_pin_circle", + "person_remove", + "person_remove_alt_1", + "person_search", + "personal_injury", + "personal_video", + "pest_control", + "pest_control_rodent", + "pets", + "phone", + "phone_android", + "phone_bluetooth_speaker", + "phone_callback", + "phone_disabled", + "phone_enabled", + "phone_forwarded", + "phone_in_talk", + "phone_iphone", + "phone_locked", + "phone_missed", + "phone_paused", + "phonelink", + "phonelink_erase", + "phonelink_lock", + "phonelink_off", + "phonelink_ring", + "phonelink_setup", + "photo", + "photo_album", + "photo_camera", + "photo_camera_back", + "photo_camera_front", + "photo_filter", + "photo_library", + "photo_size_select_actual", + "photo_size_select_large", + "photo_size_select_small", + "piano", + "piano_off", + "picture_as_pdf", + "picture_in_picture", + "picture_in_picture_alt", + "pie_chart", + "pie_chart_outline", + "pin", + "pin_drop", + "pin_end", + "pin_invoke", + "pivot_table_chart", + "place", + "plagiarism", + "play_arrow", + "play_circle", + "play_circle_filled", + "play_circle_outline", + "play_disabled", + "play_for_work", + "play_lesson", + "playlist_add", + "playlist_add_check", + "playlist_play", + "plumbing", + "plus_one", + "podcasts", + "point_of_sale", + "policy", + "poll", + "polymer", + "pool", + "portable_wifi_off", + "portrait", + "post_add", + "power", + "power_input", + "power_off", + "power_settings_new", + "precision_manufacturing", + "pregnant_woman", + "present_to_all", + "preview", + "price_change", + "price_check", + "print", + "print_disabled", + "priority_high", + "privacy_tip", + "private_connectivity", + "production_quantity_limits", + "psychology", + "public", + "public_off", + "publish", + "published_with_changes", + "push_pin", + "qr_code", + "qr_code_2", + "qr_code_scanner", + "query_builder", + "query_stats", + "question_answer", + "queue", + "queue_music", + "queue_play_next", + "quickreply", + "quiz", + "r_mobiledata", + "radar", + "radio", + "radio_button_checked", + "radio_button_unchecked", + "railway_alert", + "ramen_dining", + "rate_review", + "raw_off", + "raw_on", + "read_more", + "real_estate_agent", + "receipt", + "receipt_long", + "recent_actors", + "recommend", + "record_voice_over", + "recycling", + "redeem", + "redo", + "reduce_capacity", + "refresh", + "remember_me", + "remove", + "remove_circle", + "remove_circle_outline", + "remove_done", + "remove_from_queue", + "remove_moderator", + "remove_red_eye", + "remove_shopping_cart", + "reorder", + "repeat", + "repeat_on", + "repeat_one", + "repeat_one_on", + "replay", + "replay_10", + "replay_30", + "replay_5", + "replay_circle_filled", + "reply", + "reply_all", + "report", + "report_gmailerrorred", + "report_off", + "report_problem", + "request_page", + "request_quote", + "reset_tv", + "restart_alt", + "restaurant", + "restaurant_menu", + "restore", + "restore_from_trash", + "restore_page", + "reviews", + "rice_bowl", + "ring_volume", + "roofing", + "room", + "room_preferences", + "room_service", + "rotate_90_degrees_ccw", + "rotate_left", + "rotate_right", + "rounded_corner", + "router", + "rowing", + "rss_feed", + "rsvp", + "rtt", + "rule", + "rule_folder", + "run_circle", + "running_with_errors", + "rv_hookup", + "safety_divider", + "sailing", + "sanitizer", + "satellite", + "save", + "save_alt", + "saved_search", + "savings", + "scanner", + "scatter_plot", + "schedule", + "schedule_send", + "schema", + "school", + "science", + "score", + "screen_lock_landscape", + "screen_lock_portrait", + "screen_lock_rotation", + "screen_rotation", + "screen_search_desktop", + "screen_share", + "screenshot", + "sd", + "sd_card", + "sd_card_alert", + "sd_storage", + "search", + "search_off", + "security", + "security_update", + "security_update_good", + "security_update_warning", + "segment", + "select_all", + "self_improvement", + "sell", + "send", + "send_and_archive", + "send_to_mobile", + "sensor_door", + "sensor_window", + "sensors", + "sensors_off", + "sentiment_dissatisfied", + "sentiment_neutral", + "sentiment_satisfied", + "sentiment_satisfied_alt", + "sentiment_very_dissatisfied", + "sentiment_very_satisfied", + "set_meal", + "settings", + "settings_accessibility", + "settings_applications", + "settings_backup_restore", + "settings_bluetooth", + "settings_brightness", + "settings_cell", + "settings_ethernet", + "settings_input_antenna", + "settings_input_component", + "settings_input_composite", + "settings_input_hdmi", + "settings_input_svideo", + "settings_overscan", + "settings_phone", + "settings_power", + "settings_remote", + "settings_suggest", + "settings_system_daydream", + "settings_voice", + "share", + "share_location", + "shield", + "shop", + "shop_2", + "shop_two", + "shopping_bag", + "shopping_basket", + "shopping_cart", + "short_text", + "shortcut", + "show_chart", + "shower", + "shuffle", + "shuffle_on", + "shutter_speed", + "sick", + "signal_cellular_0_bar", + "signal_cellular_4_bar", + "signal_cellular_alt", + "signal_cellular_connected_no_internet_0_bar", + "signal_cellular_connected_no_internet_4_bar", + "signal_cellular_no_sim", + "signal_cellular_nodata", + "signal_cellular_null", + "signal_cellular_off", + "signal_wifi_0_bar", + "signal_wifi_4_bar", + "signal_wifi_4_bar_lock", + "signal_wifi_bad", + "signal_wifi_connected_no_internet_4", + "signal_wifi_off", + "signal_wifi_statusbar_4_bar", + "signal_wifi_statusbar_connected_no_internet_4", + "signal_wifi_statusbar_null", + "sim_card", + "sim_card_alert", + "sim_card_download", + "single_bed", + "sip", + "skateboarding", + "skip_next", + "skip_previous", + "sledding", + "slideshow", + "slow_motion_video", + "smart_button", + "smart_display", + "smart_screen", + "smart_toy", + "smartphone", + "smoke_free", + "smoking_rooms", + "sms", + "sms_failed", + "snippet_folder", + "snooze", + "snowboarding", + "snowmobile", + "snowshoeing", + "soap", + "social_distance", + "sort", + "sort_by_alpha", + "source", + "south", + "south_east", + "south_west", + "spa", + "space_bar", + "space_dashboard", + "speaker", + "speaker_group", + "speaker_notes", + "speaker_notes_off", + "speaker_phone", + "speed", + "spellcheck", + "splitscreen", + "sports", + "sports_bar", + "sports_baseball", + "sports_basketball", + "sports_cricket", + "sports_esports", + "sports_football", + "sports_golf", + "sports_handball", + "sports_hockey", + "sports_kabaddi", + "sports_mma", + "sports_motorsports", + "sports_rugby", + "sports_score", + "sports_soccer", + "sports_tennis", + "sports_volleyball", + "square_foot", + "stacked_bar_chart", + "stacked_line_chart", + "stairs", + "star", + "star_border", + "star_border_purple500", + "star_half", + "star_outline", + "star_purple500", + "star_rate", + "stars", + "stay_current_landscape", + "stay_current_portrait", + "stay_primary_landscape", + "stay_primary_portrait", + "sticky_note_2", + "stop", + "stop_circle", + "stop_screen_share", + "storage", + "store", + "store_mall_directory", + "storefront", + "storm", + "straighten", + "stream", + "streetview", + "strikethrough_s", + "stroller", + "style", + "subdirectory_arrow_left", + "subdirectory_arrow_right", + "subject", + "subscript", + "subscriptions", + "subtitles", + "subtitles_off", + "subway", + "summarize", + "superscript", + "supervised_user_circle", + "supervisor_account", + "support", + "support_agent", + "surfing", + "surround_sound", + "swap_calls", + "swap_horiz", + "swap_horizontal_circle", + "swap_vert", + "swap_vertical_circle", + "swipe", + "switch_account", + "switch_camera", + "switch_left", + "switch_right", + "switch_video", + "sync", + "sync_alt", + "sync_disabled", + "sync_problem", + "system_security_update", + "system_security_update_good", + "system_security_update_warning", + "system_update", + "system_update_alt", + "tab", + "tab_unselected", + "table_chart", + "table_rows", + "table_view", + "tablet", + "tablet_android", + "tablet_mac", + "tag", + "tag_faces", + "takeout_dining", + "tap_and_play", + "tapas", + "task", + "task_alt", + "taxi_alert", + "terrain", + "text_fields", + "text_format", + "text_rotate_up", + "text_rotate_vertical", + "text_rotation_angledown", + "text_rotation_angleup", + "text_rotation_down", + "text_rotation_none", + "text_snippet", + "textsms", + "texture", + "theater_comedy", + "theaters", + "thermostat", + "thermostat_auto", + "thumb_down", + "thumb_down_alt", + "thumb_down_off_alt", + "thumb_up", + "thumb_up_alt", + "thumb_up_off_alt", + "thumbs_up_down", + "time_to_leave", + "timelapse", + "timeline", + "timer", + "timer_10", + "timer_10_select", + "timer_3", + "timer_3_select", + "timer_off", + "tips_and_updates", + "title", + "toc", + "today", + "toggle_off", + "toggle_on", + "toll", + "tonality", + "topic", + "touch_app", + "tour", + "toys", + "track_changes", + "traffic", + "train", + "tram", + "transfer_within_a_station", + "transform", + "transgender", + "transit_enterexit", + "translate", + "travel_explore", + "trending_down", + "trending_flat", + "trending_up", + "trip_origin", + "try", + "tty", + "tune", + "tungsten", + "turned_in", + "turned_in_not", + "tv", + "tv_off", + "two_wheeler", + "umbrella", + "unarchive", + "undo", + "unfold_less", + "unfold_more", + "unpublished", + "unsubscribe", + "upcoming", + "update", + "update_disabled", + "upgrade", + "upload", + "upload_file", + "usb", + "usb_off", + "verified", + "verified_user", + "vertical_align_bottom", + "vertical_align_center", + "vertical_align_top", + "vertical_distribute", + "vertical_split", + "vibration", + "video_call", + "video_camera_back", + "video_camera_front", + "video_label", + "video_library", + "video_settings", + "video_stable", + "videocam", + "videocam_off", + "videogame_asset", + "videogame_asset_off", + "view_agenda", + "view_array", + "view_carousel", + "view_column", + "view_comfy", + "view_compact", + "view_day", + "view_headline", + "view_in_ar", + "view_list", + "view_module", + "view_quilt", + "view_sidebar", + "view_stream", + "view_week", + "vignette", + "villa", + "visibility", + "visibility_off", + "voice_chat", + "voice_over_off", + "voicemail", + "volume_down", + "volume_mute", + "volume_off", + "volume_up", + "volunteer_activism", + "vpn_key", + "vpn_lock", + "vrpano", + "wallpaper", + "warning", + "warning_amber", + "wash", + "watch", + "watch_later", + "water", + "water_damage", + "water_drop", + "waterfall_chart", + "waves", + "waving_hand", + "wb_auto", + "wb_cloudy", + "wb_incandescent", + "wb_iridescent", + "wb_shade", + "wb_sunny", + "wb_twilight", + "wc", + "web", + "web_asset", + "web_asset_off", + "weekend", + "west", + "whatshot", + "wheelchair_pickup", + "where_to_vote", + "widgets", + "wifi", + "wifi_calling", + "wifi_calling_3", + "wifi_lock", + "wifi_off", + "wifi_protected_setup", + "wifi_tethering", + "wifi_tethering_error_rounded", + "wifi_tethering_off", + "window", + "wine_bar", + "work", + "work_off", + "work_outline", + "workspaces", + "wrap_text", + "wrong_location", + "wysiwyg", + "yard", + "youtube_searched_for", + "zoom_in", + "zoom_out", + "zoom_out_map" + ] + }, + "icons_feather": { + "value": [ + "activity", + "airplay", + "alert-circle", + "alert-octagon", + "alert-triangle", + "align-center", + "align-justify", + "align-left", + "align-right", + "anchor", + "aperture", + "archive", + "arrow-down-circle", + "arrow-down-left", + "arrow-down-right", + "arrow-down", + "arrow-left-circle", + "arrow-left", + "arrow-right-circle", + "arrow-right", + "arrow-up-circle", + "arrow-up-left", + "arrow-up-right", + "arrow-up", + "at-sign", + "award", + "bar-chart-2", + "bar-chart", + "battery-charging", + "battery", + "bell-off", + "bell", + "bluetooth", + "bold", + "book-open", + "book", + "bookmark", + "box", + "briefcase", + "calendar", + "camera-off", + "camera", + "cast", + "check-circle", + "check-square", + "check", + "chevron-down", + "chevron-left", + "chevron-right", + "chevron-up", + "chevrons-down", + "chevrons-left", + "chevrons-right", + "chevrons-up", + "chrome", + "circle", + "clipboard", + "clock", + "cloud-drizzle", + "cloud-lightning", + "cloud-off", + "cloud-rain", + "cloud-snow", + "cloud", + "code", + "codepen", + "codesandbox", + "coffee", + "columns", + "command", + "compass", + "copy", + "corner-down-left", + "corner-down-right", + "corner-left-down", + "corner-left-up", + "corner-right-down", + "corner-right-up", + "corner-up-left", + "corner-up-right", + "cpu", + "credit-card", + "crop", + "crosshair", + "database", + "delete", + "disc", + "dollar-sign", + "download-cloud", + "download", + "droplet", + "edit-2", + "edit-3", + "edit", + "external-link", + "eye-off", + "eye", + "facebook", + "fast-forward", + "feather", + "figma", + "file-minus", + "file-plus", + "file-text", + "file", + "film", + "filter", + "flag", + "folder-minus", + "folder-plus", + "folder", + "framer", + "frown", + "gift", + "git-branch", + "git-commit", + "git-merge", + "git-pull-request", + "github", + "gitlab", + "globe", + "grid", + "hard-drive", + "hash", + "headphones", + "heart", + "help-circle", + "hexagon", + "home", + "image", + "inbox", + "info", + "instagram", + "italic", + "key", + "layers", + "layout", + "life-buoy", + "link-2", + "link", + "linkedin", + "list", + "loader", + "lock", + "log-in", + "log-out", + "mail", + "map-pin", + "map", + "maximize-2", + "maximize", + "meh", + "menu", + "message-circle", + "message-square", + "mic-off", + "mic", + "minimize-2", + "minimize", + "minus-circle", + "minus-square", + "minus", + "monitor", + "moon", + "more-horizontal", + "more-vertical", + "mouse-pointer", + "move", + "music", + "navigation-2", + "navigation", + "octagon", + "package", + "paperclip", + "pause-circle", + "pause", + "pen-tool", + "percent", + "phone-call", + "phone-forwarded", + "phone-incoming", + "phone-missed", + "phone-off", + "phone-outgoing", + "phone", + "pie-chart", + "play-circle", + "play", + "plus-circle", + "plus-square", + "plus", + "pocket", + "power", + "printer", + "radio", + "refresh-ccw", + "refresh-cw", + "repeat", + "rewind", + "rotate-ccw", + "rotate-cw", + "rss", + "save", + "scissors", + "search", + "send", + "server", + "settings", + "share-2", + "share", + "shield-off", + "shield", + "shopping-bag", + "shopping-cart", + "shuffle", + "sidebar", + "skip-back", + "skip-forward", + "slack", + "slash", + "sliders", + "smartphone", + "smile", + "speaker", + "square", + "star", + "stop-circle", + "sun", + "sunrise", + "sunset", + "tablet", + "tag", + "target", + "terminal", + "thermometer", + "thumbs-down", + "thumbs-up", + "toggle-left", + "toggle-right", + "tool", + "trash-2", + "trash", + "trello", + "trending-down", + "trending-up", + "triangle", + "truck", + "tv", + "twitch", + "twitter", + "type", + "umbrella", + "underline", + "unlock", + "upload-cloud", + "upload", + "user-check", + "user-minus", + "user-plus", + "user-x", + "user", + "users", + "video-off", + "video", + "voicemail", + "volume-1", + "volume-2", + "volume-x", + "volume", + "watch", + "wifi-off", + "wifi", + "wind", + "x-circle", + "x-octagon", + "x-square", + "x", + "youtube", + "zap-off", + "zap", + "zoom-in", + "zoom-out" + ] + }, + "project_dashboard_projects": { + "value": [ + { + "id": 1, + "name": "ACME Corp. Backend App" + }, + { + "id": 2, + "name": "ACME Corp. Frontend App" + }, + { + "id": 3, + "name": "Creapond" + }, + { + "id": 4, + "name": "Withinpixels" + } + ] + }, + "profile_timeline": { + "value": { + "activities": [ + { + "id": "1", + "user": { + "name": "Bernard Langley", + "avatar": "assets/images/avatars/male-02.jpg" + }, + "message": "started following you.", + "time": "13 mins. ago" + }, + { + "id": "2", + "user": { + "name": "Mclaughlin Steele", + "avatar": "assets/images/avatars/male-03.jpg" + }, + "message": "sent you a message.", + "time": "June 10,2015" + }, + { + "id": "3", + "user": { + "name": "Garry Newman", + "avatar": "assets/images/avatars/male-04.jpg" + }, + "message": "shared a public post with your group.", + "time": "June 9,2015" + }, + { + "id": "4", + "user": { + "name": "Carl Henderson", + "avatar": "assets/images/avatars/male-05.jpg" + }, + "message": "wants to play Fallout Shelter with you.", + "time": "June 8,2015" + }, + { + "id": "5", + "user": { + "name": "Jane Dean", + "avatar": "assets/images/avatars/female-05.jpg" + }, + "message": "started following you.", + "time": "June 7,2015" + }, + { + "id": "6", + "user": { + "name": "Juan Carpenter", + "avatar": "assets/images/avatars/male-07.jpg" + }, + "message": "sent you a message.", + "time": "June 6,2015" + }, + { + "id": "7", + "user": { + "name": "Judith Burton", + "avatar": "assets/images/avatars/female-06.jpg" + }, + "message": "shared a photo with you.", + "time": "June 5,2015" + }, + { + "id": "8", + "user": { + "name": "Vincent Munoz", + "avatar": "assets/images/avatars/male-08.jpg" + }, + "message": "shared a photo with you.", + "time": "June 4,2015" + } + ], + "posts": [ + { + "id": "1", + "user": { + "name": "Garry Newman", + "avatar": "assets/images/avatars/male-09.jpg" + }, + "message": "Remember the place we were talking about the other night? Found it!", + "time": "32 minutes ago", + "type": "post", + "like": 5, + "share": 21, + "media": { + "type": "image", + "preview": "assets/images/cards/14-640x480.jpg" + }, + "comments": [ + { + "id": "1", + "user": { + "name": "Alice Freeman", + "avatar": "assets/images/avatars/female-07.jpg" + }, + "time": "June 10, 2015", + "message": "That’s a wonderful place. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce et eleifend ligula. Fusce posuere in sapien ac facilisis. Etiam sit amet justo non felis ornare feugiat." + } + ] + }, + { + "id": "2", + "user": { + "name": "Andrew Green", + "avatar": "assets/images/avatars/male-11.jpg" + }, + "message": "Hey, man! Check this, it’s pretty awesome!", + "time": "June 12, 2015", + "type": "article", + "like": 98, + "share": 6, + "article": { + "title": "Never stop changing!", + "subtitle": "John Westrock", + "excerpt": "John Westrock's new photo album called 'Never stop changing' is published! It features more than 200 photos that will take you right in.", + "media": { + "type": "image", + "preview": "assets/images/cards/36-640x480.jpg" + } + }, + "comments": [ + { + "id": "1", + "user": { + "name": "Alice Freeman", + "avatar": "assets/images/avatars/female-09.jpg" + }, + "time": "June 10, 2015", + "message": "That’s a wonderful place. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce et eleifend ligula. Fusce posuere in sapien ac facilisis. Etiam sit amet justo non felis ornare feugiat." + } + ] + }, + { + "id": "3", + "user": { + "name": "Carl Henderson", + "avatar": "assets/images/avatars/male-12.jpg" + }, + "message": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce et eleifend ligula. Fusce posuere in sapien ac facilisis. Etiam sit amet justo non felis ornare feugiat. Aenean lorem ex, ultrices sit amet ligula sed...", + "time": "June 10, 2015", + "type": "something", + "like": 4, + "share": 1 + } + ] + } + }, + "profile_photos_videos": { + "value": [ + { + "id": "1", + "name": "June 2018", + "info": "5 Photos", + "media": [ + { + "type": "photo", + "title": "A Walk Amongst Friends", + "preview": "assets/images/apps/profile/a-walk-amongst-friends-small.jpg" + }, + { + "type": "photo", + "title": "Braies Lake", + "preview": "assets/images/apps/profile/braies-lake-small.jpg" + }, + { + "type": "photo", + "title": "Fall Glow", + "preview": "assets/images/apps/profile/fall-glow-small.jpg" + }, + { + "type": "photo", + "title": "First Snow", + "preview": "assets/images/apps/profile/first-snow-small.jpg" + }, + { + "type": "photo", + "title": "Lago di Braies", + "preview": "assets/images/apps/profile/lago-di-braies-small.jpg" + } + ] + }, + { + "id": "2", + "name": "May 2018", + "info": "7 Photos, 3 Videos", + "media": [ + { + "type": "photo", + "title": "Lago di Sorapis", + "preview": "assets/images/apps/profile/lago-di-sorapis-small.jpg" + }, + { + "type": "photo", + "title": "Morain Lake", + "preview": "assets/images/apps/profile/morain-lake-small.jpg" + }, + { + "type": "photo", + "title": "Never Stop Changing", + "preview": "assets/images/apps/profile/never-stop-changing-small.jpg" + }, + { + "type": "photo", + "title": "Reaching", + "preview": "assets/images/apps/profile/reaching-small.jpg" + }, + { + "type": "photo", + "title": "Yosemite", + "preview": "assets/images/apps/profile/yosemite-small.jpg" + }, + { + "type": "photo", + "title": "A Walk Amongst Friends", + "preview": "assets/images/apps/profile/a-walk-amongst-friends-small.jpg" + }, + { + "type": "photo", + "title": "Braies Lake", + "preview": "assets/images/apps/profile/braies-lake-small.jpg" + }, + { + "type": "photo", + "title": "Fall Glow", + "preview": "assets/images/apps/profile/fall-glow-small.jpg" + }, + { + "type": "photo", + "title": "First Snow", + "preview": "assets/images/apps/profile/first-snow-small.jpg" + }, + { + "type": "photo", + "title": "Lago di Braies", + "preview": "assets/images/apps/profile/lago-di-braies-small.jpg" + } + ] + }, + { + "id": "3", + "name": "April 2018", + "info": "7 Photos", + "media": [ + { + "type": "photo", + "title": "Lago di Sorapis", + "preview": "assets/images/apps/profile/lago-di-sorapis-small.jpg" + }, + { + "type": "photo", + "title": "Morain Lake", + "preview": "assets/images/apps/profile/morain-lake-small.jpg" + }, + { + "type": "photo", + "title": "Never Stop Changing", + "preview": "assets/images/apps/profile/never-stop-changing-small.jpg" + }, + { + "type": "photo", + "title": "Reaching", + "preview": "assets/images/apps/profile/reaching-small.jpg" + }, + { + "type": "photo", + "title": "Yosemite", + "preview": "assets/images/apps/profile/yosemite-small.jpg" + }, + { + "type": "photo", + "title": "A Walk Amongst Friends", + "preview": "assets/images/apps/profile/a-walk-amongst-friends-small.jpg" + }, + { + "type": "photo", + "title": "Braies Lake", + "preview": "assets/images/apps/profile/braies-lake-small.jpg" + } + ] + } + ] + }, + "profile_about": { + "value": { + "general": { + "gender": "Male", + "birthday": "February 30th, 1974", + "locations": [ + "London, UK", + "New York, USA" + ], + "about": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis eget pharetra felis, sed ullamcorper dui. Sed et elementum neque. Vestibulum pellente viverra ultrices. Etiam justo augue, vehicula ac gravida a, interdum sit amet nisl. Integer vitae nisi id nibh dictum mollis in vitae tortor." + }, + "work": { + "occupation": "Developer", + "skills": "C#, PHP, Javascript, Angular, JS, HTML, CSS", + "jobs": [ + { + "company": "Self-Employed", + "date": "2010 - Now" + }, + { + "company": "Google", + "date": "2008 - 2010" + } + ] + }, + "contact": { + "address": "Ut pharetra luctus est quis sodales. Duis nisi tortor, bibendum eget tincidunt, aliquam ac elit. Mauris nec euismod odio.", + "tel": [ + "+6 555 6600", + "+9 555 5255" + ], + "websites": [ + "withinpixels.com" + ], + "emails": [ + "mail@withinpixels.com", + "mail@creapond.com" + ] + }, + "groups": [ + { + "id": "1", + "name": "Android", + "category": "Technology", + "members": "1.856.546" + }, + { + "id": "2", + "name": "Google", + "category": "Web", + "members": "1.226.121" + }, + { + "id": "3", + "name": "Fallout", + "category": "Games", + "members": "526.142" + } + ], + "friends": [ + { + "id": "1", + "name": "Garry Newman", + "avatar": "assets/images/avatars/male-11.jpg" + }, + { + "id": "2", + "name": "Carl Henderson", + "avatar": "assets/images/avatars/male-12.jpg" + }, + { + "id": "3", + "name": "Jane Dean", + "avatar": "assets/images/avatars/female-11.jpg" + }, + { + "id": "4", + "name": "Garry Arnold", + "avatar": "assets/images/avatars/male-13.jpg" + }, + { + "id": "5", + "name": "Vincent Munoz", + "avatar": "assets/images/avatars/male-14.jpg" + }, + { + "id": "6", + "name": "Alice Freeman", + "avatar": "assets/images/avatars/female-12.jpg" + }, + { + "id": "7", + "name": "Andrew Green", + "avatar": "assets/images/avatars/male-16.jpg" + } + ] + } + }, + "auth_users": { + "value": [ + { + "uid": "XgbuVEXBU5gtSKdbQRP1Zbbby1i1", + "password": "admin", + "role": "admin", + "data": { + "displayName": "Abbott Keitch", + "photoURL": "assets/images/avatars/brian-hughes.jpg", + "email": "admin@fusetheme.com", + "settings": { + "layout": {}, + "theme": {} + }, + "shortcuts": [ + "apps.calendar", + "apps.mailbox", + "apps.contacts" + ] + } + }, + { + "uid": "XgbuVEXBU6gtSKdbTYR1Zbbby1i3", + "password": "staff", + "role": "staff", + "data": { + "displayName": "Arnold Matlock", + "photoURL": "assets/images/avatars/Arnold.jpg", + "email": "staff@fusetheme.com", + "settings": { + "layout": { + "style": "layout2", + "config": { + "mode": "boxed", + "scroll": "content", + "navbar": { + "display": true + }, + "toolbar": { + "display": true, + "position": "below" + }, + "footer": { + "display": true, + "style": "fixed" + } + } + }, + "customScrollbars": true, + "theme": {} + }, + "shortcuts": [ + "apps.calendar", + "apps.mailbox", + "apps.contacts", + "apps.tasks" + ] + } + } + ] + }, + "notifications": { + "value": [ + { + "id": "493190c9-5b61-4912-afe5-78c21f1044d7", + "icon": "heroicons-solid:star", + "title": "Daily challenges", + "description": "Your submission has been accepted", + "time": "2022-05-09T10:32:42.703Z", + "read": false + }, + { + "id": "6e3e97e5-effc-4fb7-b730-52a151f0b641", + "image": "assets/images/avatars/male-04.jpg", + "description": "Leo Gill added you to Top Secret Project group and assigned you as a Project Manager", + "time": "2022-05-09T10:07:42.703Z", + "read": true, + "link": "/dashboards/project", + "useRouter": true + }, + { + "id": "b91ccb58-b06c-413b-b389-87010e03a120", + "icon": "heroicons-solid:mail", + "title": "Mailbox", + "description": "You have 15 unread mails across 3 mailboxes", + "time": "2022-05-09T07:57:42.703Z", + "read": false, + "link": "/apps/mailbox", + "useRouter": true + }, + { + "id": "541416c9-84a7-408a-8d74-27a43c38d797", + "icon": "heroicons-solid:refresh", + "title": "Cron jobs", + "description": "Your Docker container is ready to publish", + "time": "2022-05-09T05:57:42.703Z", + "read": false, + "link": "/dashboards/project", + "useRouter": true + }, + { + "id": "ef7b95a7-8e8b-4616-9619-130d9533add9", + "image": "assets/images/avatars/male-06.jpg", + "description": "Roger Murray accepted your friend request", + "time": "2022-05-09T03:57:42.703Z", + "read": true, + "link": "/dashboards/project", + "useRouter": true + }, + { + "id": "eb8aa470-635e-461d-88e1-23d9ea2a5665", + "image": "assets/images/avatars/female-04.jpg", + "description": "Sophie Stone sent you a direct message", + "time": "2022-05-09T01:57:42.703Z", + "read": true, + "link": "/dashboards/project", + "useRouter": true + }, + { + "id": "b85c2338-cc98-4140-bbf8-c226ce4e395e", + "icon": "heroicons-solid:mail", + "title": "Mailbox", + "description": "You have 3 new mails", + "time": "2022-05-08T10:57:42.703Z", + "read": true, + "link": "/apps/mailbox", + "useRouter": true + }, + { + "id": "8f8e1bf9-4661-4939-9e43-390957b60f42", + "icon": "heroicons-solid:star", + "title": "Daily challenges", + "description": "Your submission has been accepted and you are ready to sign-up for the final assigment which will be ready in 2 days", + "time": "2022-05-06T10:57:42.703Z", + "read": true, + "link": "/dashboards/project", + "useRouter": true + }, + { + "id": "30af917b-7a6a-45d1-822f-9e7ad7f8bf69", + "icon": "heroicons-solid:refresh", + "title": "Cron jobs", + "description": "Your Vagrant container is ready to download", + "time": "2022-05-05T10:57:42.703Z", + "read": true, + "link": "/apps/file-manager", + "useRouter": true + } + ] + } + }, + "responses": {} + } +} diff --git a/src/app/App.tsx b/src/app/App.tsx new file mode 100644 index 0000000..5b4f4c8 --- /dev/null +++ b/src/app/App.tsx @@ -0,0 +1,77 @@ +import FuseLayout from '@fuse/core/FuseLayout'; +import FuseTheme from '@fuse/core/FuseTheme'; +import { SnackbarProvider } from 'notistack'; +import { useSelector } from 'react-redux'; +import rtlPlugin from 'stylis-plugin-rtl'; +import createCache, { Options } from '@emotion/cache'; +import { CacheProvider } from '@emotion/react'; +import { selectCurrentLanguageDirection } from 'app/store/i18nSlice'; +import themeLayouts from 'app/theme-layouts/themeLayouts'; +import { selectMainTheme } from '@fuse/core/FuseSettings/store/fuseSettingsSlice'; +import MockAdapterProvider from '@mock-api/MockAdapterProvider'; +import withAppProviders from './withAppProviders'; +import { AuthRouteProvider } from './auth/AuthRouteProvider'; + +// import axios from 'axios'; +/** + * Axios HTTP Request defaults + */ +// axios.defaults.baseURL = ""; +// axios.defaults.headers.common['Access-Control-Allow-Origin'] = '*'; +// axios.defaults.headers.common['Content-Type'] = 'application/x-www-form-urlencoded'; + +const emotionCacheOptions = { + rtl: { + key: 'muirtl', + stylisPlugins: [rtlPlugin], + insertionPoint: document.getElementById('emotion-insertion-point') + }, + ltr: { + key: 'muiltr', + stylisPlugins: [], + insertionPoint: document.getElementById('emotion-insertion-point') + } +}; + +/** + * The main App component. + */ +function App() { + /** + * The language direction from the Redux store. + */ + const langDirection = useSelector(selectCurrentLanguageDirection); + + /** + * The main theme from the Redux store. + */ + const mainTheme = useSelector(selectMainTheme); + + return ( + + + + + + + + + + + + ); +} + +export default withAppProviders(App); diff --git a/src/app/AppContext.ts b/src/app/AppContext.ts new file mode 100644 index 0000000..d836669 --- /dev/null +++ b/src/app/AppContext.ts @@ -0,0 +1,21 @@ +import { createContext } from 'react'; +import { RouteObject } from 'react-router/dist/lib/context'; + +// import { FuseRoutesType } from '@fuse/utils/FuseUtils'; + +/** + * The type of the AppContext value. + */ +export type AppContextType = { + /** + * The routes to be used in the app. + */ + routes: RouteObject[]; +}; + +/** + * The AppContext object. + */ +const AppContext = createContext({ routes: [] }); + +export default AppContext; diff --git a/src/app/auth/AuthRouteProvider.tsx b/src/app/auth/AuthRouteProvider.tsx new file mode 100644 index 0000000..3b97e13 --- /dev/null +++ b/src/app/auth/AuthRouteProvider.tsx @@ -0,0 +1,242 @@ +import React, { createContext, useCallback, useContext, useMemo } from 'react'; +import FuseAuthorization from '@fuse/core/FuseAuthorization'; +import { useAppDispatch } from 'app/store/store'; +import FuseSplashScreen from '@fuse/core/FuseSplashScreen/FuseSplashScreen'; +import { + resetUser, + selectUser, + selectUserRole, + setUser, + updateUser, + userSlice +} from 'src/app/auth/user/store/userSlice'; +import BrowserRouter from '@fuse/core/BrowserRouter'; +import { PartialDeep } from 'type-fest'; +import firebase from 'firebase/compat/app'; +import _ from '@lodash'; +import { useSelector } from 'react-redux'; +import withReducer from 'app/store/withReducer'; +import useJwtAuth, { JwtAuth } from './services/jwt/useJwtAuth'; +import { User } from './user'; +import useFirebaseAuth from './services/firebase/useFirebaseAuth'; +import UserModel from './user/models/UserModel'; + +/** + * Initialize Firebase + */ + +export type SignInPayload = { + email: string; + password: string; +}; + +export type SignUpPayload = { + displayName: string; + password: string; + email: string; +}; + +type AuthContext = { + jwtService?: JwtAuth; + firebaseService?: ReturnType; + signOut?: () => void; + updateUser?: (U: PartialDeep) => void; + isAuthenticated: boolean; +}; + +const AuthContext = createContext({ + isAuthenticated: false +}); + +type AuthProviderProps = { children: React.ReactNode }; + +function AuthRoute(props: AuthProviderProps) { + const { children } = props; + const dispatch = useAppDispatch(); + const user = useSelector(selectUser); + /** + * Get user role from store + */ + const userRole = useSelector(selectUserRole); + + /** + * Jwt auth service + */ + const jwtService = useJwtAuth({ + config: { + tokenStorageKey: 'jwt_access_token', + signInUrl: 'mock-api/auth/sign-in', + signUpUrl: 'mock-api/auth/sign-up', + tokenRefreshUrl: 'mock-api/auth/refresh', + getUserUrl: 'mock-api/auth/user', + updateUserUrl: 'mock-api/auth/user', + updateTokenFromHeader: true + }, + onSignedIn: (user: User) => { + dispatch(setUser(user)); + setAuthService('jwt'); + }, + onSignedUp: (user: User) => { + dispatch(setUser(user)); + setAuthService('jwt'); + }, + onSignedOut: () => { + dispatch(resetUser()); + resetAuthService(); + }, + onUpdateUser: (user) => { + dispatch(updateUser(user)); + }, + onError: (error) => { + // eslint-disable-next-line no-console + console.warn(error); + } + }); + + /** + * Firebase auth service + */ + const firebaseService: AuthContext['firebaseService'] = useFirebaseAuth({ + onSignedIn: (_user) => { + firebase + .database() + .ref(`users/${_user.uid}`) + .once('value') + .then((snapshot) => { + const user = snapshot.val() as User; + dispatch(setUser(user)); + setAuthService('firebase'); + }); + }, + onSignedUp: (userCredential, displayName) => { + const _user = userCredential.user; + + const user = UserModel({ + uid: _user.uid, + role: ['admin'], + data: { + displayName, + email: _user.email + } + }); + + firebaseService.updateUser(user); + + setAuthService('firebase'); + }, + onSignedOut: () => { + dispatch(resetUser()); + resetAuthService(); + }, + onUpdateUser: (user) => { + dispatch(updateUser(user)); + }, + onError: (error) => { + // eslint-disable-next-line no-console + console.warn(error); + } + }); + + /** + * Check if services is in loading state + */ + const isLoading = useMemo( + () => jwtService?.isLoading || firebaseService?.isLoading, + [jwtService?.isLoading, firebaseService?.isLoading] + ); + + /** + * Check if user is authenticated + */ + const isAuthenticated = useMemo( + () => jwtService?.isAuthenticated || firebaseService?.isAuthenticated, + [jwtService?.isAuthenticated, firebaseService?.isAuthenticated] + ); + + /** + * Combine auth services + */ + const combinedAuth = useMemo( + () => ({ + jwtService, + firebaseService, + signOut: () => { + const authService = getAuthService(); + + if (authService === 'jwt') { + return jwtService?.signOut(); + } + + if (authService === 'firebase') { + return firebaseService?.signOut(); + } + + return null; + }, + updateUser: (userData) => { + const authService = getAuthService(); + + if (authService === 'jwt') { + return jwtService?.updateUser(userData); + } + + if (authService === 'firebase') { + return firebaseService?.updateUser(_.merge({}, user, userData)); + } + + return null; + }, + isAuthenticated + }), + [isAuthenticated, user] + ); + + /** + * Get auth service + */ + const getAuthService = useCallback(() => { + return localStorage.getItem('authService'); + }, []); + + /** + * Set auth service + */ + const setAuthService = useCallback((authService: string) => { + if (authService) { + localStorage.setItem('authService', authService); + } + }, []); + + /** + * Reset auth service + */ + const resetAuthService = useCallback(() => { + localStorage.removeItem('authService'); + }, []); + + /** + * Render loading screen while loading user data + */ + if (isLoading) { + return ; + } + + return ( + + + {children} + + + ); +} + +function useAuth(): AuthContext { + const context = useContext(AuthContext); + if (!context) { + throw new Error('useAuth must be used within a AuthRouteProvider'); + } + return context; +} +const AuthRouteProvider = withReducer('user', userSlice.reducer)(AuthRoute); + +export { useAuth, AuthRouteProvider }; diff --git a/src/app/auth/authRoles.ts b/src/app/auth/authRoles.ts new file mode 100644 index 0000000..bb182a7 --- /dev/null +++ b/src/app/auth/authRoles.ts @@ -0,0 +1,26 @@ +/** + * The authRoles object defines the authorization roles for the Fuse application. + */ +const authRoles = { + /** + * The admin role grants access to users with the 'admin' role. + */ + admin: ['admin'], + + /** + * The staff role grants access to users with the 'admin' or 'staff' role. + */ + staff: ['admin', 'staff'], + + /** + * The user role grants access to users with the 'admin', 'staff', or 'user' role. + */ + user: ['admin', 'staff', 'user'], + + /** + * The onlyGuest role grants access to unauthenticated users. + */ + onlyGuest: [] +}; + +export default authRoles; diff --git a/src/app/auth/index.ts b/src/app/auth/index.ts new file mode 100644 index 0000000..174e805 --- /dev/null +++ b/src/app/auth/index.ts @@ -0,0 +1 @@ +export { default as authRoles } from './authRoles'; diff --git a/src/app/auth/services/firebase/firebaseConfig.ts b/src/app/auth/services/firebase/firebaseConfig.ts new file mode 100644 index 0000000..a309afa --- /dev/null +++ b/src/app/auth/services/firebase/firebaseConfig.ts @@ -0,0 +1,19 @@ +type FirebaseConfig = { + apiKey: string; + authDomain: string; + databaseURL: string; + projectId: string; + storageBucket: string; + messagingSenderId: string; +}; + +const firebaseConfig: FirebaseConfig = { + apiKey: import.meta.env.VITE_API_KEY, + authDomain: import.meta.env.VITE_AUTH_DOMAIN, + databaseURL: import.meta.env.VITE_DATABASE_URL, + projectId: import.meta.env.VITE_PROJECT_ID, + storageBucket: import.meta.env.VITE_STORAGE_BUCKET, + messagingSenderId: import.meta.env.VITE_MESSAGING_SENDER_ID +}; + +export default firebaseConfig; diff --git a/src/app/auth/services/firebase/initializeFirebase.tsx b/src/app/auth/services/firebase/initializeFirebase.tsx new file mode 100644 index 0000000..adaaccf --- /dev/null +++ b/src/app/auth/services/firebase/initializeFirebase.tsx @@ -0,0 +1,24 @@ +import firebase from 'firebase/compat/app'; +import 'firebase/compat/auth'; +import 'firebase/compat/database'; +import firebaseConfig from './firebaseConfig'; + +/** + * Initialize Firebase + */ +export const firebaseApp = firebase.initializeApp(firebaseConfig); + +/** + * Firebase App initialization check + */ +let initialized = false; + +try { + firebase?.auth(); + initialized = true; +} catch (e) { + // eslint-disable-next-line no-console + console.error(e); +} + +export const firebaseInitialized = initialized; diff --git a/src/app/auth/services/firebase/useFirebaseAuth.tsx b/src/app/auth/services/firebase/useFirebaseAuth.tsx new file mode 100644 index 0000000..39df0d4 --- /dev/null +++ b/src/app/auth/services/firebase/useFirebaseAuth.tsx @@ -0,0 +1,118 @@ +import { useState, useEffect, useCallback } from 'react'; +import firebase from 'firebase/compat/app'; +import 'firebase/compat/auth'; +import { firebaseInitialized } from './initializeFirebase'; + +export type FirebaseAuthProps = { + enabled?: boolean; + onSignedIn?: (user: firebase.User) => void; + onSignedUp?: (user: firebase.auth.UserCredential, displayName: string) => void; + onUpdateUser?: (user: T) => void; + onSignedOut?: () => void; + onError?: (error: firebase.auth.Error) => void; +}; + +export type FirebaseAuth = { + enabled: boolean; + user: firebase.User | null; + isAuthenticated: boolean; + isLoading: boolean; + signIn: (email: string, password: string) => Promise; + signUp: (email: string, password: string, displayName: string) => Promise; + signOut: () => Promise; + updateUser: (U: T) => Promise; + setIsLoading: (isLoading: boolean) => void; +}; + +const useFirebaseAuth = (props: FirebaseAuthProps): FirebaseAuth | null => { + const { onSignedIn, onSignedUp, onUpdateUser, onSignedOut, onError, enabled = true } = props; + + const [user, setUser] = useState(null); + const [isLoading, setIsLoading] = useState(true); + const [isAuthenticated, setIsAuthenticated] = useState(false); + + if (!firebaseInitialized || !enabled) { + return null; + } + + // Effect to handle the initial authentication state + useEffect(() => { + let isInitialCheck = true; + + const unsubscribe = + firebase.apps.length && + firebase.auth().onAuthStateChanged( + (user) => { + if (user && !isAuthenticated) { + setUser(user); + setIsAuthenticated(true); + onSignedIn?.(user); + } else if (!isInitialCheck && isAuthenticated) { + setUser(null); + setIsAuthenticated(false); + onSignedOut?.(); + } + setIsLoading(false); + isInitialCheck = false; + }, + (error) => { + onError?.(error); + setIsLoading(false); + } + ); + return unsubscribe; + }, [isAuthenticated]); + + const signIn = useCallback((email: string, password: string) => { + return firebase.auth().signInWithEmailAndPassword(email, password); + }, []); + + const signUp = useCallback((email: string, password: string, displayName: string) => { + const signUpResponse = new Promise((resolve, reject) => { + firebase + .auth() + .createUserWithEmailAndPassword(email, password) + .then((userCredential) => { + onSignedUp(userCredential, displayName); + resolve(userCredential); + }) + .catch((_error) => { + const error = _error as firebase.auth.Error; + onError?.(error); + reject(error); + }); + }); + + return signUpResponse; + }, []); + + const signOut = useCallback(() => { + return firebase.auth().signOut(); + }, []); + + const updateUser = useCallback((_user: T & { uid: string }) => { + if (!_user) { + return Promise.reject(new Error('No user is signed in')); + } + + firebase.database().ref(`users/${_user.uid}`).set(_user); + + onUpdateUser?.(_user); + + return Promise.resolve(_user); + }, []); + + return { + user, + isAuthenticated, + isLoading, + signIn, + signUp, + signOut, + updateUser, + enabled, + setIsLoading + }; +}; + +export default useFirebaseAuth; diff --git a/src/app/auth/services/jwt/useJwtAuth.tsx b/src/app/auth/services/jwt/useJwtAuth.tsx new file mode 100644 index 0000000..3409c60 --- /dev/null +++ b/src/app/auth/services/jwt/useJwtAuth.tsx @@ -0,0 +1,360 @@ +import { useState, useEffect, useCallback } from 'react'; +import axios, { AxiosError, AxiosResponse } from 'axios'; +import jwtDecode, { JwtPayload } from 'jwt-decode'; +import _ from '@lodash'; +import { PartialDeep } from 'type-fest'; + +const defaultAuthConfig = { + tokenStorageKey: 'jwt_access_token', + signInUrl: 'api/auth/sign-in', + signUpUrl: 'api/auth/sign-up', + tokenRefreshUrl: 'api/auth/refresh', + getUserUrl: 'api/auth/user', + updateUserUrl: 'api/auth/user', + updateTokenFromHeader: false +}; + +export type JwtAuthProps = { + config: { + tokenStorageKey: string; + signInUrl: string; + signUpUrl: string; + tokenRefreshUrl: string; + getUserUrl: string; + updateUserUrl: string; + /** + * If the response auth header contains a new access token, update the token + * in the Authorization header of the successful responses + */ + updateTokenFromHeader: boolean; + }; + onSignedIn?: (U: T) => void; + onSignedUp?: (U: T) => void; + onSignedOut?: () => void; + onUpdateUser?: (U: T) => void; + onError?: (error: AxiosError) => void; +}; + +export type JwtAuth = { + user: User; + isAuthenticated: boolean; + isLoading: boolean; + signIn: (U: SignInPayload) => Promise>; + signOut: () => void; + signUp: (U: SignUpPayload) => Promise>; + updateUser: (U: PartialDeep) => void; + refreshToken: () => void; + setIsLoading: (isLoading: boolean) => void; +}; + +/** + * useJwtAuth hook + * Description: This hook handles the authentication flow using JWT + * It uses axios to make the HTTP requests + * It uses jwt-decode to decode the access token + * It uses localStorage to store the access token + * It uses Axios interceptors to update the access token from the response headers + * It uses Axios interceptors to sign out the user if the refresh token is invalid or expired + */ + +const useJwtAuth = ( + props: JwtAuthProps +): JwtAuth => { + const { config, onSignedIn, onSignedOut, onSignedUp, onError, onUpdateUser } = props; + + // Merge default config with the one from the props + const authConfig = _.defaults(config, defaultAuthConfig); + + const [user, setUser] = useState(null); + const [isLoading, setIsLoading] = useState(true); + const [isAuthenticated, setIsAuthenticated] = useState(false); + + /** + * Set session + */ + const setSession = useCallback((accessToken: string) => { + if (accessToken) { + localStorage.setItem(authConfig.tokenStorageKey, accessToken); + axios.defaults.headers.common.Authorization = `Bearer ${accessToken}`; + } + }, []); + + const resetSession = useCallback(() => { + localStorage.removeItem(authConfig.tokenStorageKey); + delete axios.defaults.headers.common.Authorization; + }, []); + + /** + * Get access token from local storage + */ + const getAccessToken = useCallback(() => { + return localStorage.getItem(authConfig.tokenStorageKey); + }, []); + + /** + * Handle sign-in success + */ + const handleSignInSuccess = useCallback((userData: User, accessToken: string) => { + setSession(accessToken); + + setIsAuthenticated(true); + + setUser(userData); + + onSignedIn(userData); + }, []); + /** + * Handle sign-up success + */ + + const handleSignUpSuccess = useCallback((userData: User, accessToken: string) => { + setSession(accessToken); + + setIsAuthenticated(true); + + setUser(userData); + + onSignedUp(userData); + }, []); + + /** + * Handle sign-in failure + */ + const handleSignInFailure = useCallback((error: AxiosError) => { + resetSession(); + + setIsAuthenticated(false); + setUser(null); + + handleError(error); + }, []); + + /** + * Handle sign-up failure + */ + const handleSignUpFailure = useCallback((error: AxiosError) => { + resetSession(); + + setIsAuthenticated(false); + setUser(null); + + handleError(error); + }, []); + + /** + * Handle error + */ + const handleError = useCallback((error: AxiosError) => { + onError(error); + }, []); + + /** + * Check if the access token is valid + */ + const isTokenValid = useCallback((accessToken: string) => { + if (accessToken) { + try { + const decoded = jwtDecode(accessToken); + const currentTime = Date.now() / 1000; + return decoded.exp > currentTime; + } catch (error) { + return false; + } + } + return false; + }, []); + + /** + * Check if the access token exist and is valid on mount + * If it is, set the user and isAuthenticated states + * If not, clear the session + */ + useEffect(() => { + const attemptAutoLogin = async () => { + const accessToken = getAccessToken(); + if (isTokenValid(accessToken)) { + try { + setIsLoading(true); + + const response: AxiosResponse = await axios.get(authConfig.getUserUrl, { + headers: { Authorization: `Bearer ${accessToken}` } + }); + + const userData = response?.data; + + handleSignInSuccess(userData, accessToken); + + return true; + } catch (error) { + const axiosError = error as AxiosError; + + handleSignInFailure(axiosError); + return false; + } + } else { + resetSession(); + return false; + } + }; + + if (!isAuthenticated) { + attemptAutoLogin().then(() => { + setIsLoading(false); + }); + } + }, [ + isTokenValid, + setSession, + handleSignInSuccess, + handleSignInFailure, + handleError, + getAccessToken, + isAuthenticated + ]); + + /** + * Sign in + */ + const signIn = async (credentials: SignInPayload) => { + const response = axios.post(authConfig.signInUrl, credentials); + + response.then( + (res: AxiosResponse<{ user: User; access_token: string }>) => { + const userData = res?.data?.user; + const accessToken = res?.data?.access_token; + + handleSignInSuccess(userData, accessToken); + + return userData; + }, + (error) => { + const axiosError = error as AxiosError; + + handleSignInFailure(axiosError); + + return axiosError; + } + ); + + return response; + }; + + /** + * Sign up + */ + const signUp = useCallback((data: SignUpPayload) => { + const response = axios.post(authConfig.signUpUrl, data); + + response.then( + (res: AxiosResponse<{ user: User; access_token: string }>) => { + const userData = res?.data?.user; + const accessToken = res?.data?.access_token; + + handleSignUpSuccess(userData, accessToken); + + return userData; + }, + (error) => { + const axiosError = error as AxiosError; + + handleSignUpFailure(axiosError); + + return axiosError; + } + ); + + return response; + }, []); + + /** + * Sign out + */ + const signOut = useCallback(() => { + resetSession(); + + setIsAuthenticated(false); + setUser(null); + + onSignedOut(); + }, []); + + /** + * Update user + */ + const updateUser = useCallback(async (userData: PartialDeep) => { + try { + const response: AxiosResponse> = await axios.put( + authConfig.updateUserUrl, + userData + ); + + const updatedUserData = response?.data; + + onUpdateUser(updatedUserData); + + return null; + } catch (error) { + const axiosError = error as AxiosError; + + handleError(axiosError); + return axiosError; + } + }, []); + + /** + * Refresh access token + */ + const refreshToken = async () => { + setIsLoading(true); + try { + const response: AxiosResponse = await axios.post(authConfig.tokenRefreshUrl); + + const accessToken = response?.headers?.['New-Access-Token'] as string; + + if (accessToken) { + setSession(accessToken); + return accessToken; + } + return null; + } catch (error) { + const axiosError = error as AxiosError; + + handleError(axiosError); + return axiosError; + } + }; + + /** + * if a successful response contains a new Authorization header, + * updates the access token from it. + * + */ + useEffect(() => { + if (authConfig.updateTokenFromHeader && isAuthenticated) { + axios.interceptors.response.use( + (response) => { + const newAccessToken = response?.headers?.['New-Access-Token'] as string; + + if (newAccessToken) { + setSession(newAccessToken); + } + return response; + }, + (error) => { + const axiosError = error as AxiosError; + + if (axiosError?.response?.status === 401) { + signOut(); + // eslint-disable-next-line no-console + console.warn('Unauthorized request. User was signed out.'); + } + return Promise.reject(axiosError); + } + ); + } + }, [isAuthenticated]); + + return { user, isAuthenticated, isLoading, signIn, signUp, signOut, updateUser, refreshToken, setIsLoading }; +}; + +export default useJwtAuth; diff --git a/src/app/auth/user/index.ts b/src/app/auth/user/index.ts new file mode 100644 index 0000000..abdb665 --- /dev/null +++ b/src/app/auth/user/index.ts @@ -0,0 +1,17 @@ +import { FuseSettingsConfigType } from '@fuse/core/FuseSettings/FuseSettings'; + +/** + * The type definition for a user object. + */ +export type User = { + uid: string; + role: string[] | string | null; + data: { + displayName: string; + photoURL?: string; + email?: string; + shortcuts?: string[]; + settings?: Partial; + loginRedirectUrl?: string; // The URL to redirect to after login. + }; +}; diff --git a/src/app/auth/user/models/UserModel.ts b/src/app/auth/user/models/UserModel.ts new file mode 100644 index 0000000..01e8f23 --- /dev/null +++ b/src/app/auth/user/models/UserModel.ts @@ -0,0 +1,24 @@ +import _ from '@lodash'; +import { PartialDeep } from 'type-fest'; +import { User } from 'src/app/auth/user'; + +/** + * Creates a new user object with the specified data. + */ +function UserModel(data: PartialDeep): User { + data = data || {}; + + return _.defaults(data, { + uid: '', + role: null, // guest + data: { + displayName: 'Guest User', + photoURL: '', + email: '', + shortcuts: [], + settings: {} + } + }); +} + +export default UserModel; diff --git a/src/app/auth/user/store/userSlice.ts b/src/app/auth/user/store/userSlice.ts new file mode 100644 index 0000000..9a73df7 --- /dev/null +++ b/src/app/auth/user/store/userSlice.ts @@ -0,0 +1,125 @@ +/* eslint import/no-extraneous-dependencies: off */ +import { createAsyncThunk, createSlice } from '@reduxjs/toolkit'; +import settingsConfig from 'app/configs/settingsConfig'; +import { RootStateType } from 'app/store/types'; +import { User } from 'src/app/auth/user'; +import { PartialDeep } from 'type-fest'; +import _ from '@lodash'; +import userModel from '../models/UserModel'; + +type AppRootStateType = RootStateType; + +function updateRedirectUrl(user: PartialDeep) { + /* + You can redirect the logged-in user to a specific route depending on his role + */ + if (user?.data?.loginRedirectUrl && user?.data?.loginRedirectUrl !== '') { + settingsConfig.loginRedirectUrl = user.data.loginRedirectUrl; // for example 'apps/academy' + } +} + +/** + * Sets the user object in the Redux store. + */ +export const setUser = createAsyncThunk('user/setUser', async (user) => { + updateRedirectUrl(user); + + return user; +}); + +/** + * Reset the user state. + */ +export const resetUser = createAsyncThunk('user/resetUser', async () => { + return true; +}); + +/** + * The initial state of the user slice. + */ +const initialState: User = userModel({}); + +/** + * The User slice + */ +export const userSlice = createSlice({ + name: 'user', + initialState, + reducers: { + /** + * Updates the user's settings + */ + setUserShortcuts: (state, action) => { + const oldState = _.cloneDeep(state); + const newUser = _.setIn(oldState, 'data.shortcuts', action.payload) as User; + + if (_.isEqual(oldState, newUser)) { + return undefined; + } + return newUser; + }, + /** + * Updates the user's settings + */ + setUserSettings: (state, action) => { + const oldState = _.cloneDeep(state); + const newUser = _.setIn(oldState, 'data.settings', action.payload) as User; + + if (_.isEqual(oldState, newUser)) { + return undefined; + } + return newUser; + }, + /** + * Updates the user object in the Redux store. + */ + updateUser: (state, action) => { + const oldState = _.cloneDeep(state); + const user = action.payload as PartialDeep; + const newUser = _.merge({}, oldState, user); + + if (_.isEqual(oldState, newUser)) { + return undefined; + } + return newUser as User; + }, + userSignOut: () => initialState + }, + extraReducers: (builder) => { + builder.addCase(setUser.fulfilled, (state, action) => { + const user = action.payload as PartialDeep; + const newUser = _.defaults(user, state); + + if (_.isEqual(state, newUser)) { + return undefined; + } + return action.payload; + }); + builder.addCase(resetUser.fulfilled, (state) => { + if (!_.isEqual(state, initialState)) { + return initialState; + } + return undefined; + }); + } +}); + +export const { userSignOut, updateUser, setUserShortcuts, setUserSettings } = userSlice.actions; + +export const selectUser = (state: AppRootStateType) => state?.user; + +export const selectUserRole = (state: AppRootStateType) => state?.user?.role; + +export const selectIsUserGuest = (state: AppRootStateType) => { + const userRole = state?.user?.role; + + return !userRole || userRole?.length === 0; +}; + +export const selectUserShortcuts = (state: AppRootStateType) => state.user?.data?.shortcuts; + +export const selectUserSettings = (state: AppRootStateType) => state.user?.data?.settings; + +export type userSliceType = typeof userSlice; + +export default userSlice.reducer; diff --git a/src/app/configs/navigation-i18n/ar.ts b/src/app/configs/navigation-i18n/ar.ts new file mode 100644 index 0000000..5650c26 --- /dev/null +++ b/src/app/configs/navigation-i18n/ar.ts @@ -0,0 +1,6 @@ +const locale = { + APPLICATIONS: 'تطبيقات', + EXAMPLE: 'مثال' +}; + +export default locale; diff --git a/src/app/configs/navigation-i18n/en.ts b/src/app/configs/navigation-i18n/en.ts new file mode 100644 index 0000000..1ca126b --- /dev/null +++ b/src/app/configs/navigation-i18n/en.ts @@ -0,0 +1,6 @@ +const locale = { + APPLICATIONS: 'Applications', + EXAMPLE: 'Example' +}; + +export default locale; diff --git a/src/app/configs/navigation-i18n/tr.ts b/src/app/configs/navigation-i18n/tr.ts new file mode 100644 index 0000000..19ec65a --- /dev/null +++ b/src/app/configs/navigation-i18n/tr.ts @@ -0,0 +1,6 @@ +const locale = { + APPLICATIONS: 'Programlar', + EXAMPLE: 'Örnek Sayfa' +}; + +export default locale; diff --git a/src/app/configs/navigationConfig.ts b/src/app/configs/navigationConfig.ts new file mode 100644 index 0000000..58b83cf --- /dev/null +++ b/src/app/configs/navigationConfig.ts @@ -0,0 +1,25 @@ +import i18next from 'i18next'; +import { FuseNavItemType } from '@fuse/core/FuseNavigation/types/FuseNavItemType'; +import ar from './navigation-i18n/ar'; +import en from './navigation-i18n/en'; +import tr from './navigation-i18n/tr'; + +i18next.addResourceBundle('en', 'navigation', en); +i18next.addResourceBundle('tr', 'navigation', tr); +i18next.addResourceBundle('ar', 'navigation', ar); + +/** + * The navigationConfig object is an array of navigation items for the Fuse application. + */ +const navigationConfig: FuseNavItemType[] = [ + { + id: 'example-component', + title: 'Example', + translate: 'EXAMPLE', + type: 'item', + icon: 'heroicons-outline:star', + url: 'example' + } +]; + +export default navigationConfig; diff --git a/src/app/configs/routesConfig.tsx b/src/app/configs/routesConfig.tsx new file mode 100644 index 0000000..5ced73e --- /dev/null +++ b/src/app/configs/routesConfig.tsx @@ -0,0 +1,38 @@ +import FuseUtils from '@fuse/utils'; +import FuseLoading from '@fuse/core/FuseLoading'; +import { Navigate } from 'react-router-dom'; +import settingsConfig from 'app/configs/settingsConfig'; +import { FuseRouteConfigsType, FuseRoutesType } from '@fuse/utils/FuseUtils'; +import SignInConfig from '../main/sign-in/SignInConfig'; +import SignUpConfig from '../main/sign-up/SignUpConfig'; +import SignOutConfig from '../main/sign-out/SignOutConfig'; +import Error404Page from '../main/404/Error404Page'; +import ExampleConfig from '../main/example/ExampleConfig'; + +const routeConfigs: FuseRouteConfigsType = [ExampleConfig, SignOutConfig, SignInConfig, SignUpConfig]; + +/** + * The routes of the application. + */ +const routes: FuseRoutesType = [ + ...FuseUtils.generateRoutesFromConfigs(routeConfigs, settingsConfig.defaultAuth), + { + path: '/', + element: , + auth: settingsConfig.defaultAuth + }, + { + path: 'loading', + element: + }, + { + path: '404', + element: + }, + { + path: '*', + element: + } +]; + +export default routes; diff --git a/src/app/configs/settingsConfig.ts b/src/app/configs/settingsConfig.ts new file mode 100644 index 0000000..a0cb81f --- /dev/null +++ b/src/app/configs/settingsConfig.ts @@ -0,0 +1,58 @@ +import themesConfig from 'app/configs/themesConfig'; +import { FuseSettingsConfigType } from '@fuse/core/FuseSettings/FuseSettings'; + +import i18n from '../../i18n'; + +/** + * The settingsConfig object is a configuration object for the Fuse application's settings. + */ +const settingsConfig: FuseSettingsConfigType = { + /** + * The layout object defines the layout style and configuration for the application. + */ + layout: { + /** + * The style property defines the layout style for the application. + */ + style: 'layout1', // layout1 layout2 layout3 + /** + * The config property defines the layout configuration for the application. + * Check out default layout configs at app/theme-layouts for example app/theme-layouts/layout1/Layout1Config.js + */ + config: {} // checkout default layout configs at app/theme-layouts for example app/theme-layouts/layout1/Layout1Config.js + }, + + /** + * The customScrollbars property defines whether or not to use custom scrollbars in the application. + */ + customScrollbars: false, + + /** + * The direction property defines the text direction for the application. + */ + direction: i18n.dir(i18n.options.lng) || 'ltr', // rtl, ltr + /** + * The theme object defines the color theme for the application. + */ + theme: { + main: themesConfig.default, + navbar: themesConfig.defaultDark, + toolbar: themesConfig.default, + footer: themesConfig.defaultDark + }, + + /** + * The defaultAuth property defines the default authorization roles for the application. + * To make the whole app auth protected by default set defaultAuth:['admin','staff','user'] + * To make the whole app accessible without authorization by default set defaultAuth: null + * The individual route configs which have auth option won't be overridden. + */ + defaultAuth: ['admin'], + + /** + * The loginRedirectUrl property defines the default redirect URL for the logged-in user. + */ + loginRedirectUrl: '/' +}; + +export default settingsConfig; diff --git a/src/app/configs/themeOptions.ts b/src/app/configs/themeOptions.ts new file mode 100644 index 0000000..20cc5e8 --- /dev/null +++ b/src/app/configs/themeOptions.ts @@ -0,0 +1,168 @@ +import themesConfig from 'app/configs/themesConfig'; + +const themeOptions = [ + { + id: 'Default ', + section: { + main: themesConfig.default, + navbar: themesConfig.defaultDark, + toolbar: themesConfig.default, + footer: themesConfig.defaultDark + } + }, + { + id: 'Default Dark', + section: { + main: themesConfig.defaultDark, + navbar: themesConfig.defaultDark, + toolbar: themesConfig.defaultDark, + footer: themesConfig.defaultDark + } + }, + { + id: 'Charcoal Teal', + section: { + main: themesConfig.charcoalTeal, + navbar: themesConfig.charcoalTealDark, + toolbar: themesConfig.charcoalTeal, + footer: themesConfig.charcoalTealDark + } + }, + { + id: 'Charcoal Teal Dark', + section: { + main: themesConfig.charcoalTealDark, + navbar: themesConfig.charcoalTealDark, + toolbar: themesConfig.charcoalTealDark, + footer: themesConfig.charcoalTealDark + } + }, + { + id: 'Blue Silver', + section: { + main: themesConfig.darkBlueSilver, + navbar: themesConfig.darkBlueSilverDark, + toolbar: themesConfig.darkBlueSilver, + footer: themesConfig.darkBlueSilverDark + } + }, + { + id: 'Blue Silver Dark', + section: { + main: themesConfig.darkBlueSilverDark, + navbar: themesConfig.darkBlueSilverDark, + toolbar: themesConfig.darkBlueSilverDark, + footer: themesConfig.darkBlueSilverDark + } + }, + { + id: 'Slate Crimson', + section: { + main: themesConfig.slateCrimson, + navbar: themesConfig.slateCrimsonDark, + toolbar: themesConfig.slateCrimson, + footer: themesConfig.slateCrimsonDark + } + }, + { + id: 'Slate Crimson Dark', + section: { + main: themesConfig.slateCrimsonDark, + navbar: themesConfig.slateCrimsonDark, + toolbar: themesConfig.slateCrimsonDark, + footer: themesConfig.slateCrimsonDark + } + }, + { + id: 'Emarald Gold', + section: { + main: themesConfig.emeraldGold, + navbar: themesConfig.emeraldGoldDark, + toolbar: themesConfig.emeraldGold, + footer: themesConfig.emeraldGoldDark + } + }, + { + id: 'Emarald Gold Dark', + section: { + main: themesConfig.emeraldGoldDark, + navbar: themesConfig.emeraldGoldDark, + toolbar: themesConfig.emeraldGoldDark, + footer: themesConfig.emeraldGoldDark + } + }, + { + id: 'Indigo Coral', + section: { + main: themesConfig.indigoCoral, + navbar: themesConfig.indigoCoralDark, + toolbar: themesConfig.indigoCoral, + footer: themesConfig.indigoCoralDark + } + }, + { + id: 'Indigo Coral Dark', + section: { + main: themesConfig.indigoCoralDark, + navbar: themesConfig.indigoCoralDark, + toolbar: themesConfig.indigoCoralDark, + footer: themesConfig.indigoCoralDark + } + }, + { + id: 'Sky Blue Orange', + section: { + main: themesConfig.skyBlueOrange, + navbar: themesConfig.skyBlueOrangeDark, + toolbar: themesConfig.skyBlueOrange, + footer: themesConfig.skyBlueOrangeDark + } + }, + { + id: 'Sky Blue Orange Dark', + section: { + main: themesConfig.skyBlueOrangeDark, + navbar: themesConfig.skyBlueOrangeDark, + toolbar: themesConfig.skyBlueOrangeDark, + footer: themesConfig.skyBlueOrangeDark + } + }, + { + id: 'Soft Green Maroon', + section: { + main: themesConfig.softGreenMaroon, + navbar: themesConfig.softGreenMaroonDark, + toolbar: themesConfig.softGreenMaroon, + footer: themesConfig.softGreenMaroonDark + } + }, + { + id: 'Soft Green Maroon Dark', + section: { + main: themesConfig.softGreenMaroonDark, + navbar: themesConfig.softGreenMaroonDark, + toolbar: themesConfig.softGreenMaroonDark, + footer: themesConfig.softGreenMaroonDark + } + }, + { + id: 'Cool Grey Pink', + section: { + main: themesConfig.coolGreyPink, + navbar: themesConfig.coolGreyPinkDark, + toolbar: themesConfig.coolGreyPink, + footer: themesConfig.coolGreyPinkDark + } + }, + { + id: 'Cool Grey Pink Dark', + section: { + main: themesConfig.coolGreyPinkDark, + navbar: themesConfig.coolGreyPinkDark, + toolbar: themesConfig.coolGreyPinkDark, + footer: themesConfig.coolGreyPinkDark + } + } +]; + +export default themeOptions; diff --git a/src/app/configs/themesConfig.ts b/src/app/configs/themesConfig.ts new file mode 100644 index 0000000..f23c26f --- /dev/null +++ b/src/app/configs/themesConfig.ts @@ -0,0 +1,858 @@ +import { fuseDark, skyBlue } from '@fuse/colors'; +import { blueGrey } from '@mui/material/colors'; +import { FuseThemesType } from '@fuse/core/FuseSettings/FuseSettings'; + +/** + * The lightPaletteText object defines the text color palette for the light theme. + */ +export const lightPaletteText = { + primary: 'rgb(17, 24, 39)', + secondary: 'rgb(107, 114, 128)', + disabled: 'rgb(149, 156, 169)' +}; + +/** + * The darkPaletteText object defines the text color palette for the dark theme. + */ +export const darkPaletteText = { + primary: 'rgb(255,255,255)', + secondary: 'rgb(148, 163, 184)', + disabled: 'rgb(156, 163, 175)' +}; + +/** + * The themesConfig object is a configuration object for the color themes of the Fuse application. + */ +export const themesConfig: FuseThemesType = { + default: { + palette: { + mode: 'light', + divider: '#e2e8f0', + text: lightPaletteText, + common: { + black: 'rgb(17, 24, 39)', + white: 'rgb(255, 255, 255)' + }, + primary: { + light: '#64748b', + main: '#1e293b', + dark: '#0f172a', + contrastText: darkPaletteText.primary + }, + secondary: { + light: '#818cf8', + main: '#4f46e5', + dark: '#3730a3', + contrastText: darkPaletteText.primary + }, + background: { + paper: '#FFFFFF', + default: '#f1f5f9' + }, + error: { + light: '#ffcdd2', + main: '#f44336', + dark: '#b71c1c', + contrastText: darkPaletteText.primary + } + } + }, + defaultDark: { + palette: { + mode: 'dark', + divider: 'rgba(241,245,249,.12)', + text: darkPaletteText, + common: { + black: 'rgb(17, 24, 39)', + white: 'rgb(255, 255, 255)' + }, + primary: { + light: '#64748b', + main: '#334155', + dark: '#0f172a', + contrastText: darkPaletteText.primary + }, + secondary: { + light: '#818cf8', + main: '#4f46e5', + dark: '#3730a3', + contrastText: darkPaletteText.primary + }, + background: { + paper: '#1e293b', + default: '#111827' + }, + error: { + light: '#ffcdd2', + main: '#f44336', + dark: '#b71c1c' + } + } + }, + darkBlueSilver: { + palette: { + mode: 'light', + primary: { + main: '#0D47A1', + light: '#5472D3', + dark: '#002171', + contrastText: darkPaletteText.primary + }, + secondary: { + main: '#B0BEC5', + light: '#E2F1F8', + dark: '#808E95', + contrastText: lightPaletteText.primary + }, + background: { + paper: '#FFFFFF', + default: '#f1f5f9' + }, + text: lightPaletteText, + divider: '#d8d9da' + } + }, + darkBlueSilverDark: { + palette: { + mode: 'dark', + primary: { + main: '#0D47A1', + light: '#5472D3', + dark: '#002171', + contrastText: darkPaletteText.primary + }, + secondary: { + main: '#B0BEC5', + light: '#E2F1F8', + dark: '#808E95', + contrastText: lightPaletteText.primary + }, + background: { + default: '#263238', + paper: '#2d3940' + }, + text: darkPaletteText, + divider: '#42474d' + } + }, + slateCrimson: { + palette: { + mode: 'light', + primary: { + main: '#37474F', + light: '#62727B', + dark: '#102027', + contrastText: darkPaletteText.primary + }, + secondary: { + main: '#D32F2F', + light: '#FF6659', + dark: '#9A0007', + contrastText: darkPaletteText.primary + }, + background: { + default: '#e6e6e6', + paper: '#f2f2f2' + }, + text: lightPaletteText, + divider: '#d9d9d9' + } + }, + slateCrimsonDark: { + palette: { + mode: 'dark', + primary: { + main: '#37474F', + light: '#62727B', + dark: '#102027', + contrastText: darkPaletteText.primary + }, + secondary: { + main: '#D32F2F', + light: '#FF6659', + dark: '#9A0007', + contrastText: darkPaletteText.primary + }, + background: { + default: '#212121', + paper: '#2e2e2e' + }, + text: darkPaletteText, + divider: '#3a3d40' + } + }, + emeraldGold: { + palette: { + mode: 'light', + primary: { + main: '#00695C', + light: '#439889', + dark: '#003D33', + contrastText: darkPaletteText.primary + }, + secondary: { + main: '#FFD740', + light: '#FFFF74', + dark: '#C8A600', + contrastText: lightPaletteText.primary + }, + background: { + default: '#dcf2f2', + paper: '#f2fdfa' + }, + text: lightPaletteText, + divider: '#b3c4c3' + } + }, + emeraldGoldDark: { + palette: { + mode: 'dark', + primary: { + main: '#00695C', + light: '#439889', + dark: '#003D33', + contrastText: darkPaletteText.primary + }, + secondary: { + main: '#FFD740', + light: '#FFFF74', + dark: '#C8A600', + contrastText: lightPaletteText.primary + }, + background: { + default: '#004D40', + paper: '#00544a' + }, + text: darkPaletteText, + divider: '#2d6360' + } + }, + indigoCoral: { + palette: { + mode: 'light', + primary: { + main: '#283593', + light: '#5F5FC4', + dark: '#001064', + contrastText: darkPaletteText.primary + }, + secondary: { + main: '#FF7043', + light: '#FFA270', + dark: '#C63F17', + contrastText: lightPaletteText.primary + }, + background: { + default: '#eaebfb', + paper: '#f6f7fd' + }, + text: lightPaletteText, + divider: '#dcdcf2' + } + }, + indigoCoralDark: { + palette: { + mode: 'dark', + primary: { + main: '#283593', + light: '#5F5FC4', + dark: '#001064', + contrastText: darkPaletteText.primary + }, + secondary: { + main: '#FF7043', + light: '#FFA270', + dark: '#C63F17', + contrastText: lightPaletteText.primary + }, + background: { + default: '#1A237E', + paper: '#283593' + }, + text: darkPaletteText, + divider: '#4d557e' + } + }, + charcoalTeal: { + palette: { + mode: 'light', + primary: { + main: '#094a43', + light: '#28635a', + dark: '#004a41', + contrastText: darkPaletteText.primary + }, + secondary: { + main: '#009688', + light: '#52C7B8', + dark: '#00675B', + contrastText: darkPaletteText.primary + }, + background: { + default: '#edf6fa', + paper: '#f7fcfc' + }, + text: lightPaletteText, + divider: '#cee5f0' + } + }, + charcoalTealDark: { + palette: { + mode: 'dark', + primary: { + main: '#455A64', + light: '#718792', + dark: '#1C313A', + contrastText: darkPaletteText.primary + }, + secondary: { + main: '#009688', + light: '#52C7B8', + dark: '#00675B', + contrastText: darkPaletteText.primary + }, + background: { + default: '#000000', + paper: '#102027' + }, + text: darkPaletteText, + divider: '#2d383d' + } + }, + skyBlueOrange: { + palette: { + mode: 'light', + primary: { + main: '#64B5F6', + light: '#9BE7FF', + dark: '#2286C3', + contrastText: lightPaletteText.primary + }, + secondary: { + main: '#faa528', + light: '#f6ad3f', + dark: '#cb8721', + contrastText: lightPaletteText.primary + }, + background: { + default: '#F5F5F5', + paper: '#FFFFFF' + }, + text: lightPaletteText, + divider: '#e9e6e0' + } + }, + skyBlueOrangeDark: { + palette: { + mode: 'dark', + primary: { + main: '#64B5F6', + light: '#9BE7FF', + dark: '#2286C3', + contrastText: lightPaletteText.primary + }, + secondary: { + main: '#faa528', + light: '#f6ad3f', + dark: '#cb8721', + contrastText: lightPaletteText.primary + }, + background: { + default: '#1a1a1a', + paper: '#333333' + }, + text: darkPaletteText, + divider: '#544949' + } + }, + softGreenMaroon: { + palette: { + mode: 'light', + primary: { + main: '#81C784', + light: '#B2F2B6', + dark: '#519657', + contrastText: lightPaletteText.primary + }, + secondary: { + main: '#D81B60', + light: '#FF5C8D', + dark: '#A00037', + contrastText: darkPaletteText.primary + }, + background: { + default: '#f5f5f5', + paper: '#fafcfa' + }, + text: lightPaletteText, + divider: '#dadeda' + } + }, + softGreenMaroonDark: { + palette: { + mode: 'dark', + primary: { + main: '#81C784', + light: '#B2F2B6', + dark: '#519657', + contrastText: lightPaletteText.primary + }, + secondary: { + main: '#D81B60', + light: '#FF5C8D', + dark: '#A00037', + contrastText: darkPaletteText.primary + }, + background: { + default: '#1a1a1a', + paper: '#323332' + }, + text: darkPaletteText, + divider: '#505250' + } + }, + coolGreyPink: { + palette: { + mode: 'light', + primary: { + main: '#dde6eb', + light: '#FFFFFF', + dark: '#9EA7AA', + contrastText: lightPaletteText.primary + }, + secondary: { + main: '#F06292', + light: '#FF94C2', + dark: '#BA2D65', + contrastText: darkPaletteText.primary + }, + background: { + default: '#F5F5F5', + paper: '#FFFFFF' + }, + text: lightPaletteText, + divider: '#e1e1e1' + } + }, + coolGreyPinkDark: { + palette: { + mode: 'dark', + primary: { + main: '#dde6eb', + light: '#FFFFFF', + dark: '#9EA7AA', + contrastText: lightPaletteText.primary + }, + secondary: { + main: '#F06292', + light: '#FF94C2', + dark: '#BA2D65', + contrastText: darkPaletteText.primary + }, + background: { + default: '#1a1a1a', + paper: '#292929' + }, + text: darkPaletteText, + divider: '#424242' + } + }, + legacy: { + palette: { + mode: 'light', + divider: '#e2e8f0', + text: lightPaletteText, + common: { + black: 'rgb(17, 24, 39)', + white: 'rgb(255, 255, 255)' + }, + primary: { + light: fuseDark[200], + main: fuseDark[500], + dark: fuseDark[800], + contrastText: darkPaletteText.primary + }, + secondary: { + light: skyBlue[100], + main: skyBlue[500], + dark: skyBlue[900], + contrastText: lightPaletteText.primary + }, + background: { + paper: '#FFFFFF', + default: '#f6f7f9' + }, + error: { + light: '#ffcdd2', + main: '#f44336', + dark: '#b71c1c' + } + } + }, + light1: { + palette: { + mode: 'light', + divider: '#e2e8f0', + text: lightPaletteText, + primary: { + light: '#b3d1d1', + main: '#006565', + dark: '#003737', + contrastText: darkPaletteText.primary + }, + secondary: { + light: '#ffecc0', + main: '#FFBE2C', + dark: '#ff9910', + contrastText: lightPaletteText.primary + }, + background: { + paper: '#FFFFFF', + default: '#F0F7F7' + }, + error: { + light: '#ffcdd2', + main: '#f44336', + dark: '#b71c1c' + } + } + }, + light2: { + palette: { + mode: 'light', + divider: '#e2e8f0', + text: lightPaletteText, + primary: { + light: '#BBE2DA', + main: '#1B9E85', + dark: '#087055', + contrastText: darkPaletteText.primary + }, + secondary: { + light: '#FFD0C1', + main: '#FF6231', + dark: '#FF3413', + contrastText: darkPaletteText.primary + }, + background: { + paper: '#FFFFFF', + default: '#F2F8F1' + }, + error: { + light: '#ffcdd2', + main: '#f44336', + dark: '#b71c1c' + } + } + }, + light3: { + palette: { + mode: 'light', + divider: '#e2e8f0', + text: lightPaletteText, + primary: { + light: '#D3C0CD', + main: '#6B2C57', + dark: '#3C102C', + contrastText: darkPaletteText.primary + }, + secondary: { + light: '#C3C2D2', + main: '#36336A', + dark: '#16143C', + contrastText: darkPaletteText.primary + }, + background: { + paper: '#FFFFFF', + default: '#FAFAFE' + }, + error: { + light: '#ffcdd2', + main: '#f44336', + dark: '#b71c1c' + } + } + }, + light4: { + palette: { + mode: 'light', + divider: '#e2e8f0', + text: lightPaletteText, + primary: { + light: '#C6C9CD', + main: '#404B57', + dark: '#1C232C', + contrastText: darkPaletteText.primary + }, + secondary: { + light: '#C2C8D2', + main: '#354968', + dark: '#16213A', + contrastText: darkPaletteText.primary + }, + background: { + paper: '#FFFFFF', + default: '#F5F4F6' + }, + error: { + light: '#ffcdd2', + main: '#f44336', + dark: '#b71c1c' + } + } + }, + light5: { + palette: { + mode: 'light', + divider: '#e2e8f0', + text: lightPaletteText, + primary: { + light: '#C4C4C4', + main: '#3A3A3A', + dark: '#181818', + contrastText: darkPaletteText.primary + }, + secondary: { + light: '#EFEFED', + main: '#CBCAC3', + dark: '#ACABA1', + contrastText: lightPaletteText.primary + }, + background: { + paper: '#EFEEE7', + default: '#FAF8F2' + }, + error: { + light: '#F7EAEA', + main: '#EBCECE', + dark: '#E3B9B9' + } + } + }, + dark1: { + palette: { + mode: 'dark', + divider: 'rgba(241,245,249,.12)', + text: darkPaletteText, + primary: { + light: '#C2C2C3', + main: '#323338', + dark: '#131417', + contrastText: darkPaletteText.primary + }, + secondary: { + light: '#B8E1D9', + main: '#129B7F', + dark: '#056D4F', + contrastText: darkPaletteText.primary + }, + background: { + paper: '#262526', + default: '#1E1D1E' + }, + error: { + light: '#ffcdd2', + main: '#f44336', + dark: '#b71c1c' + } + } + }, + dark2: { + palette: { + mode: 'dark', + divider: 'rgba(241,245,249,.12)', + text: darkPaletteText, + primary: { + light: '#C9CACE', + main: '#4B4F5A', + dark: '#23262E', + contrastText: darkPaletteText.primary + }, + secondary: { + light: '#F8F5F2', + main: '#E6DED5', + dark: '#D5C8BA', + contrastText: lightPaletteText.primary + }, + background: { + paper: '#31343E', + default: '#2A2D35' + }, + error: { + light: '#F7EAEA', + main: '#EBCECE', + dark: '#E3B9B9' + } + } + }, + dark3: { + palette: { + mode: 'dark', + divider: 'rgba(241,245,249,.12)', + text: darkPaletteText, + primary: { + light: '#C2C8D2', + main: '#354968', + dark: '#16213A', + contrastText: darkPaletteText.primary + }, + secondary: { + light: '#F4CFCA', + main: '#D55847', + dark: '#C03325', + contrastText: darkPaletteText.primary + }, + background: { + paper: '#23354E', + default: '#1B2A3F' + }, + error: { + light: '#ffcdd2', + main: '#f44336', + dark: '#b71c1c' + } + } + }, + dark4: { + palette: { + mode: 'dark', + divider: 'rgba(241,245,249,.12)', + text: darkPaletteText, + primary: { + light: '#CECADF', + main: '#5A4E93', + dark: '#2E2564', + contrastText: darkPaletteText.primary + }, + secondary: { + light: '#B3EBD6', + main: '#00BC77', + dark: '#009747', + contrastText: darkPaletteText.primary + }, + background: { + paper: '#22184B', + default: '#180F3D' + }, + error: { + light: '#ffcdd2', + main: '#f44336', + dark: '#b71c1c' + } + } + }, + dark5: { + palette: { + mode: 'dark', + divider: 'rgba(241,245,249,.12)', + text: darkPaletteText, + primary: { + light: '#CCD7E2', + main: '#56789D', + dark: '#2B486F', + contrastText: darkPaletteText.primary + }, + secondary: { + light: '#D7D3ED', + main: '#796CC4', + dark: '#493DA2', + contrastText: darkPaletteText.primary + }, + background: { + paper: '#465261', + default: '#232931' + }, + error: { + light: '#ffcdd2', + main: '#f44336', + dark: '#b71c1c' + } + } + }, + dark6: { + palette: { + mode: 'dark', + divider: 'rgba(241,245,249,.12)', + text: darkPaletteText, + primary: { + light: '#BEBFC8', + main: '#252949', + dark: '#0D0F21', + contrastText: darkPaletteText.primary + }, + secondary: { + light: '#CBD7FE', + main: '#5079FC', + dark: '#2749FA', + contrastText: darkPaletteText.primary + }, + background: { + paper: '#2D3159', + default: '#202441' + }, + error: { + light: '#ffcdd2', + main: '#f44336', + dark: '#b71c1c' + } + } + }, + dark7: { + palette: { + mode: 'dark', + divider: 'rgba(241,245,249,.12)', + text: darkPaletteText, + primary: { + light: '#BCC8CD', + main: '#204657', + dark: '#0B202C', + contrastText: darkPaletteText.primary + }, + secondary: { + light: '#B3EBC5', + main: '#00BD3E', + dark: '#00981B', + contrastText: darkPaletteText.primary + }, + background: { + paper: '#1C1E27', + default: '#15171E' + }, + error: { + light: '#ffcdd2', + main: '#f44336', + dark: '#b71c1c' + } + } + }, + greyDark: { + palette: { + mode: 'dark', + divider: 'rgba(241,245,249,.12)', + text: darkPaletteText, + primary: { + light: fuseDark[200], + main: fuseDark[700], + dark: fuseDark[800], + contrastText: darkPaletteText.primary + }, + secondary: { + light: skyBlue[100], + main: skyBlue[500], + dark: skyBlue[900], + contrastText: lightPaletteText.primary + }, + background: { + paper: blueGrey[700], + default: blueGrey[900] + }, + error: { + light: '#ffcdd2', + main: '#f44336', + dark: '#b71c1c' + } + } + } +}; + +export default themesConfig; diff --git a/src/app/main/404/Error404Page.tsx b/src/app/main/404/Error404Page.tsx new file mode 100644 index 0000000..2ae1ca5 --- /dev/null +++ b/src/app/main/404/Error404Page.tsx @@ -0,0 +1,258 @@ +import Typography from '@mui/material/Typography'; +import { motion } from 'framer-motion'; +import { Link } from 'react-router-dom'; +import Box from '@mui/material/Box'; + +/** + * The Error404Page component renders a custom 404 error page. + */ +function Error404Page() { + return ( +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The page you requested could not be found. + + + +
+
+ ); +} + +export default Error404Page; diff --git a/src/app/main/example/Example.tsx b/src/app/main/example/Example.tsx new file mode 100644 index 0000000..a176ba6 --- /dev/null +++ b/src/app/main/example/Example.tsx @@ -0,0 +1,39 @@ +import DemoContent from '@fuse/core/DemoContent'; +import FusePageSimple from '@fuse/core/FusePageSimple'; +import { useTranslation } from 'react-i18next'; +import { styled } from '@mui/material/styles'; + +const Root = styled(FusePageSimple)(({ theme }) => ({ + '& .FusePageSimple-header': { + backgroundColor: theme.palette.background.paper, + borderBottomWidth: 1, + borderStyle: 'solid', + borderColor: theme.palette.divider + }, + '& .FusePageSimple-content': {}, + '& .FusePageSimple-sidebarHeader': {}, + '& .FusePageSimple-sidebarContent': {} +})); + +function Example() { + const { t } = useTranslation('examplePage'); + + return ( + +

{t('TITLE')}

+
+ } + content={ +
+

Content

+
+ +
+ } + /> + ); +} + +export default Example; diff --git a/src/app/main/example/ExampleConfig.tsx b/src/app/main/example/ExampleConfig.tsx new file mode 100644 index 0000000..b734bae --- /dev/null +++ b/src/app/main/example/ExampleConfig.tsx @@ -0,0 +1,28 @@ +import i18next from 'i18next'; +import { lazy } from 'react'; +import en from './i18n/en'; +import tr from './i18n/tr'; +import ar from './i18n/ar'; + +i18next.addResourceBundle('en', 'examplePage', en); +i18next.addResourceBundle('tr', 'examplePage', tr); +i18next.addResourceBundle('ar', 'examplePage', ar); + +const Example = lazy(() => import('./Example')); + +/** + * The Example page config. + */ +const ExampleConfig = { + settings: { + layout: {} + }, + routes: [ + { + path: 'example', + element: + } + ] +}; + +export default ExampleConfig; diff --git a/src/app/main/example/i18n/ar.ts b/src/app/main/example/i18n/ar.ts new file mode 100644 index 0000000..e5c9c9c --- /dev/null +++ b/src/app/main/example/i18n/ar.ts @@ -0,0 +1,5 @@ +const locale = { + TITLE: 'مثال على الصفحة' +}; + +export default locale; diff --git a/src/app/main/example/i18n/en.ts b/src/app/main/example/i18n/en.ts new file mode 100644 index 0000000..dd02f83 --- /dev/null +++ b/src/app/main/example/i18n/en.ts @@ -0,0 +1,5 @@ +const locale = { + TITLE: 'Example Page' +}; + +export default locale; diff --git a/src/app/main/example/i18n/tr.ts b/src/app/main/example/i18n/tr.ts new file mode 100644 index 0000000..40aee61 --- /dev/null +++ b/src/app/main/example/i18n/tr.ts @@ -0,0 +1,5 @@ +const locale = { + TITLE: 'Örnek Sayfa' +}; + +export default locale; diff --git a/src/app/main/sign-in/SignInConfig.tsx b/src/app/main/sign-in/SignInConfig.tsx new file mode 100644 index 0000000..7b5aa5b --- /dev/null +++ b/src/app/main/sign-in/SignInConfig.tsx @@ -0,0 +1,36 @@ +import { FuseRouteConfigType } from '@fuse/utils/FuseUtils'; +import SignInPage from './SignInPage'; +import authRoles from '../../auth/authRoles'; + +const SignInConfig: FuseRouteConfigType = { + settings: { + layout: { + config: { + navbar: { + display: false + }, + toolbar: { + display: false + }, + footer: { + display: false + }, + leftSidePanel: { + display: false + }, + rightSidePanel: { + display: false + } + } + } + }, + auth: authRoles.onlyGuest, + routes: [ + { + path: 'sign-in', + element: + } + ] +}; + +export default SignInConfig; diff --git a/src/app/main/sign-in/SignInPage.tsx b/src/app/main/sign-in/SignInPage.tsx new file mode 100644 index 0000000..cc480c1 --- /dev/null +++ b/src/app/main/sign-in/SignInPage.tsx @@ -0,0 +1,249 @@ +import Typography from '@mui/material/Typography'; +import { Link } from 'react-router-dom'; +import AvatarGroup from '@mui/material/AvatarGroup'; +import Avatar from '@mui/material/Avatar'; +import Box from '@mui/material/Box'; +import Paper from '@mui/material/Paper'; +import { useState } from 'react'; +import Tabs from '@mui/material/Tabs'; +import Tab from '@mui/material/Tab'; +import CardContent from '@mui/material/CardContent'; +import _ from '@lodash'; +import Alert from '@mui/material/Alert'; +import Button from '@mui/material/Button'; +import FuseSvgIcon from '@fuse/core/FuseSvgIcon'; +import JwtLoginTab from './tabs/JwtSignInTab'; +import FirebaseSignInTab from './tabs/FirebaseSignInTab'; + +const tabs = [ + { + id: 'jwt', + title: 'JWT', + logo: 'assets/images/logo/jwt.svg', + logoClass: 'h-40 p-4 bg-black rounded-12' + }, + { + id: 'firebase', + title: 'Firebase', + logo: 'assets/images/logo/firebase.svg', + logoClass: 'h-40' + } +]; + +/** + * The sign in page. + */ +function SignInPage() { + const [selectedTabId, setSelectedTabId] = useState(tabs[0].id); + + function handleSelectTab(id: string) { + setSelectedTabId(id); + } + + return ( +
+ + + logo + + + Sign in + +
+ Don't have an account? + + Sign up + +
+ + + You are browsing Fuse React Demo. Click on the "Sign in" button to access the Demo and + Documentation. + + + + {tabs.map((item) => ( + handleSelectTab(item.id)} + key={item.id} + icon={ + {item.title} + } + className="min-w-0" + label={item.title} + /> + ))} + + + {selectedTabId === 'jwt' && } + {selectedTabId === 'firebase' && } + +
+
+ + Or continue with + +
+
+ +
+ + + +
+ + + + + + + + + + + + + + + + + + + +
+
+
Welcome to
+
our community
+
+
+ Fuse helps developers to build organized and well coded dashboards full of beautiful and rich + modules. Join us and start building your application today. +
+
+ + + + + + + +
+ More than 17k people joined us, it's your turn +
+
+
+
+
+ ); +} + +export default SignInPage; diff --git a/src/app/main/sign-in/tabs/FirebaseSignInTab.tsx b/src/app/main/sign-in/tabs/FirebaseSignInTab.tsx new file mode 100644 index 0000000..4646f2c --- /dev/null +++ b/src/app/main/sign-in/tabs/FirebaseSignInTab.tsx @@ -0,0 +1,192 @@ +import TextField from '@mui/material/TextField'; +import Button from '@mui/material/Button'; +import { useEffect } from 'react'; +import { Controller, useForm } from 'react-hook-form'; +import _ from '@lodash'; +import FormControl from '@mui/material/FormControl'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Checkbox from '@mui/material/Checkbox'; +import { Link } from 'react-router-dom'; +import { useAuth } from 'src/app/auth/AuthRouteProvider'; +import { z } from 'zod'; +import { zodResolver } from '@hookform/resolvers/zod'; +import { useAppDispatch } from 'app/store/store'; +import { showMessage } from '@fuse/core/FuseMessage/store/fuseMessageSlice'; +import firebase from 'firebase/compat/app'; + +/** + * Form Validation Schema + */ +const schema = z.object({ + email: z.string().email('You must enter a valid email').nonempty('You must enter an email'), + password: z + .string() + .min(4, 'Password is too short - must be at least 4 chars.') + .nonempty('Please enter your password.') +}); + +type FormType = { + email: string; + password: string; + remember?: boolean; +}; + +const defaultValues = { + email: '', + password: '', + remember: true +}; + +function FirebaseSignInTab() { + const { firebaseService } = useAuth(); + const dispatch = useAppDispatch(); + + const { control, formState, handleSubmit, setValue, setError } = useForm({ + mode: 'onChange', + defaultValues, + resolver: zodResolver(schema) + }); + + const { isValid, dirtyFields, errors } = formState; + + useEffect(() => { + setValue('email', 'hi@withinpixels.com', { shouldDirty: true, shouldValidate: true }); + setValue('password', 'dummyPassword', { shouldDirty: true, shouldValidate: true }); + }, [setValue]); + + function onSubmit(formData: FormType) { + const { email, password } = formData; + + firebaseService?.signIn(email, password).catch((_error) => { + const error = _error as firebase.auth.Error; + + const errors: { + type: 'email' | 'password'; + message: string; + }[] = []; + + const emailErrorCodes = [ + 'auth/email-already-in-use', + 'auth/invalid-email', + 'auth/operation-not-allowed', + 'auth/user-not-found', + 'auth/user-disabled' + ]; + const passwordErrorCodes = ['auth/weak-password', 'auth/wrong-password']; + + if (emailErrorCodes.includes(error.code)) { + errors.push({ + type: 'email', + message: error.message + }); + } + + if (passwordErrorCodes.includes(error.code)) { + errors.push({ + type: 'password', + message: error.message + }); + } + + if (!emailErrorCodes.includes(error.code)) { + dispatch(showMessage({ message: error.message })); + } + + errors.forEach((err) => { + setError(err.type, { + type: 'manual', + message: err.message + }); + }); + }); + } + + return ( +
+
+ ( + + )} + /> + + ( + + )} + /> + +
+ ( + + + } + /> + + )} + /> + + + Forgot password? + +
+ + + +
+ ); +} + +export default FirebaseSignInTab; diff --git a/src/app/main/sign-in/tabs/JwtSignInTab.tsx b/src/app/main/sign-in/tabs/JwtSignInTab.tsx new file mode 100644 index 0000000..d161a7e --- /dev/null +++ b/src/app/main/sign-in/tabs/JwtSignInTab.tsx @@ -0,0 +1,171 @@ +import TextField from '@mui/material/TextField'; +import Button from '@mui/material/Button'; +import { useEffect } from 'react'; +import { Controller, useForm } from 'react-hook-form'; +import _ from '@lodash'; +import { AxiosError } from 'axios'; +import FormControl from '@mui/material/FormControl'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Checkbox from '@mui/material/Checkbox'; +import { Link } from 'react-router-dom'; +import { useAuth } from 'src/app/auth/AuthRouteProvider'; +import { z } from 'zod'; +import { zodResolver } from '@hookform/resolvers/zod'; + +/** + * Form Validation Schema + */ +const schema = z.object({ + email: z.string().email('You must enter a valid email').nonempty('You must enter an email'), + password: z + .string() + .min(4, 'Password is too short - must be at least 4 chars.') + .nonempty('Please enter your password.') +}); + +type FormType = { + email: string; + password: string; + remember?: boolean; +}; + +const defaultValues = { + email: '', + password: '', + remember: true +}; + +function jwtSignInTab() { + const { jwtService } = useAuth(); + + const { control, formState, handleSubmit, setValue, setError } = useForm({ + mode: 'onChange', + defaultValues, + resolver: zodResolver(schema) + }); + + const { isValid, dirtyFields, errors } = formState; + + useEffect(() => { + setValue('email', 'admin@fusetheme.com', { shouldDirty: true, shouldValidate: true }); + setValue('password', 'admin', { shouldDirty: true, shouldValidate: true }); + }, [setValue]); + + function onSubmit(formData: FormType) { + const { email, password } = formData; + + jwtService + .signIn({ + email, + password + }) + .catch( + ( + error: AxiosError< + { + type: 'email' | 'password' | 'remember' | `root.${string}` | 'root'; + message: string; + }[] + > + ) => { + const errorData = error.response.data; + + errorData.forEach((err) => { + setError(err.type, { + type: 'manual', + message: err.message + }); + }); + } + ); + } + + return ( +
+
+ ( + + )} + /> + + ( + + )} + /> + +
+ ( + + + } + /> + + )} + /> + + + Forgot password? + +
+ + + +
+ ); +} + +export default jwtSignInTab; diff --git a/src/app/main/sign-out/SignOutConfig.tsx b/src/app/main/sign-out/SignOutConfig.tsx new file mode 100644 index 0000000..daf8bd0 --- /dev/null +++ b/src/app/main/sign-out/SignOutConfig.tsx @@ -0,0 +1,35 @@ +import { FuseRouteConfigType } from '@fuse/utils/FuseUtils'; +import SignOutPage from './SignOutPage'; + +const SignOutConfig: FuseRouteConfigType = { + settings: { + layout: { + config: { + navbar: { + display: false + }, + toolbar: { + display: false + }, + footer: { + display: false + }, + leftSidePanel: { + display: false + }, + rightSidePanel: { + display: false + } + } + } + }, + auth: null, + routes: [ + { + path: 'sign-out', + element: + } + ] +}; + +export default SignOutConfig; diff --git a/src/app/main/sign-out/SignOutPage.tsx b/src/app/main/sign-out/SignOutPage.tsx new file mode 100644 index 0000000..2c21b0e --- /dev/null +++ b/src/app/main/sign-out/SignOutPage.tsx @@ -0,0 +1,27 @@ +import Typography from '@mui/material/Typography'; +import Paper from '@mui/material/Paper'; + +/** + * The sign out page. + */ +function SignOutPage() { + return ( +
+ +
+ logo + + + You have signed out! + +
+
+
+ ); +} + +export default SignOutPage; diff --git a/src/app/main/sign-up/SignUpConfig.tsx b/src/app/main/sign-up/SignUpConfig.tsx new file mode 100644 index 0000000..3cbc9a3 --- /dev/null +++ b/src/app/main/sign-up/SignUpConfig.tsx @@ -0,0 +1,36 @@ +import { FuseRouteConfigType } from '@fuse/utils/FuseUtils'; +import SignUpPage from './SignUpPage'; +import authRoles from '../../auth/authRoles'; + +const SignUpConfig: FuseRouteConfigType = { + settings: { + layout: { + config: { + navbar: { + display: false + }, + toolbar: { + display: false + }, + footer: { + display: false + }, + leftSidePanel: { + display: false + }, + rightSidePanel: { + display: false + } + } + } + }, + auth: authRoles.onlyGuest, + routes: [ + { + path: 'sign-up', + element: + } + ] +}; + +export default SignUpConfig; diff --git a/src/app/main/sign-up/SignUpPage.tsx b/src/app/main/sign-up/SignUpPage.tsx new file mode 100644 index 0000000..3b0051b --- /dev/null +++ b/src/app/main/sign-up/SignUpPage.tsx @@ -0,0 +1,189 @@ +import Typography from '@mui/material/Typography'; +import { Link } from 'react-router-dom'; +import AvatarGroup from '@mui/material/AvatarGroup'; +import Avatar from '@mui/material/Avatar'; +import Box from '@mui/material/Box'; +import Paper from '@mui/material/Paper'; +import Tabs from '@mui/material/Tabs'; +import Tab from '@mui/material/Tab'; +import { useState } from 'react'; +import _ from '../../../@lodash/@lodash'; +import JwtSignUpTab from './tabs/JwSignUpTab'; +import FirebaseSignUpTab from './tabs/FirebaseSignUpTab'; + +const tabs = [ + { + id: 'jwt', + title: 'JWT', + logo: 'assets/images/logo/jwt.svg', + logoClass: 'h-40 p-4 bg-black rounded-12' + }, + { + id: 'firebase', + title: 'Firebase', + logo: 'assets/images/logo/firebase.svg', + logoClass: 'h-40' + } +]; + +/** + * The sign up page. + */ +function SignUpPage() { + const [selectedTabId, setSelectedTabId] = useState(tabs[0].id); + + function handleSelectTab(id: string) { + setSelectedTabId(id); + } + + return ( +
+ +
+ logo + + + Sign up + +
+ Already have an account? + + Sign in + +
+ + + {tabs.map((item) => ( + handleSelectTab(item.id)} + key={item.id} + icon={ + {item.title} + } + className="min-w-0" + label={item.title} + /> + ))} + + + {selectedTabId === 'jwt' && } + {selectedTabId === 'firebase' && } +
+
+ + + + + + + + + + + + + + + + + +
+
+
Welcome to
+
our community
+
+
+ Fuse helps developers to build organized and well coded dashboards full of beautiful and rich + modules. Join us and start building your application today. +
+
+ + + + + + + +
+ More than 17k people joined us, it's your turn +
+
+
+
+
+ ); +} + +export default SignUpPage; diff --git a/src/app/main/sign-up/tabs/FirebaseSignUpTab.tsx b/src/app/main/sign-up/tabs/FirebaseSignUpTab.tsx new file mode 100644 index 0000000..2a57c8f --- /dev/null +++ b/src/app/main/sign-up/tabs/FirebaseSignUpTab.tsx @@ -0,0 +1,214 @@ +import { Controller, useForm } from 'react-hook-form'; +import TextField from '@mui/material/TextField'; +import FormControl from '@mui/material/FormControl'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Checkbox from '@mui/material/Checkbox'; +import FormHelperText from '@mui/material/FormHelperText'; +import Button from '@mui/material/Button'; +import _ from '@lodash'; +import { zodResolver } from '@hookform/resolvers/zod'; +import { z } from 'zod'; +import firebase from 'firebase/compat/app'; +import { SignUpPayload, useAuth } from '../../../auth/AuthRouteProvider'; + +/** + * Form Validation Schema + */ +const schema = z + .object({ + displayName: z.string().nonempty('You must enter your name'), + email: z.string().email('You must enter a valid email').nonempty('You must enter an email'), + password: z + .string() + .nonempty('Please enter your password.') + .min(8, 'Password is too short - should be 8 chars minimum.'), + passwordConfirm: z.string().nonempty('Password confirmation is required'), + acceptTermsConditions: z.boolean().refine((val) => val === true, 'The terms and conditions must be accepted.') + }) + .refine((data) => data.password === data.passwordConfirm, { + message: 'Passwords must match', + path: ['passwordConfirm'] + }); + +const defaultValues = { + displayName: '', + email: '', + password: '', + passwordConfirm: '', + acceptTermsConditions: false +}; + +function FirebaseSignUpTab() { + const { firebaseService } = useAuth(); + + const { control, formState, handleSubmit, setError } = useForm({ + mode: 'onChange', + defaultValues, + resolver: zodResolver(schema) + }); + + const { isValid, dirtyFields, errors } = formState; + + function onSubmit(formData: SignUpPayload) { + const { displayName, email, password } = formData; + firebaseService?.signUp(email, password, displayName).catch((_error) => { + const error = _error as firebase.auth.Error; + + const usernameErrorCodes = ['auth/operation-not-allowed', 'auth/user-not-found', 'auth/user-disabled']; + + const emailErrorCodes = ['auth/email-already-in-use', 'auth/invalid-email']; + + const passwordErrorCodes = ['auth/weak-password', 'auth/wrong-password']; + + const errors: { + type: 'displayName' | 'email' | 'password' | `root.${string}` | 'root'; + message: string; + }[] = []; + + if (usernameErrorCodes.includes(error.code)) { + errors.push({ + type: 'displayName', + message: error.message + }); + } + + if (emailErrorCodes.includes(error.code)) { + errors.push({ + type: 'email', + message: error.message + }); + } + + if (passwordErrorCodes.includes(error.code)) { + errors.push({ + type: 'password', + message: error.message + }); + } + + errors.forEach((err) => { + setError(err.type, { + type: 'manual', + message: err.message + }); + }); + }); + } + + return ( +
+ ( + + )} + /> + + ( + + )} + /> + + ( + + )} + /> + + ( + + )} + /> + + ( + + + } + /> + {errors?.acceptTermsConditions?.message} + + )} + /> + + + + ); +} + +export default FirebaseSignUpTab; diff --git a/src/app/main/sign-up/tabs/JwSignUpTab.tsx b/src/app/main/sign-up/tabs/JwSignUpTab.tsx new file mode 100644 index 0000000..586e76e --- /dev/null +++ b/src/app/main/sign-up/tabs/JwSignUpTab.tsx @@ -0,0 +1,186 @@ +import { Controller, useForm } from 'react-hook-form'; +import TextField from '@mui/material/TextField'; +import FormControl from '@mui/material/FormControl'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Checkbox from '@mui/material/Checkbox'; +import FormHelperText from '@mui/material/FormHelperText'; +import Button from '@mui/material/Button'; +import _ from '@lodash'; +import { zodResolver } from '@hookform/resolvers/zod'; +import { z } from 'zod'; +import { SignUpPayload, useAuth } from '../../../auth/AuthRouteProvider'; + +/** + * Form Validation Schema + */ +const schema = z + .object({ + displayName: z.string().nonempty('You must enter your name'), + email: z.string().email('You must enter a valid email').nonempty('You must enter an email'), + password: z + .string() + .nonempty('Please enter your password.') + .min(8, 'Password is too short - should be 8 chars minimum.'), + passwordConfirm: z.string().nonempty('Password confirmation is required'), + acceptTermsConditions: z.boolean().refine((val) => val === true, 'The terms and conditions must be accepted.') + }) + .refine((data) => data.password === data.passwordConfirm, { + message: 'Passwords must match', + path: ['passwordConfirm'] + }); + +const defaultValues = { + displayName: '', + email: '', + password: '', + passwordConfirm: '', + acceptTermsConditions: false +}; + +function JwtSignUpTab() { + const { jwtService } = useAuth(); + + const { control, formState, handleSubmit, setError } = useForm({ + mode: 'onChange', + defaultValues, + resolver: zodResolver(schema) + }); + + const { isValid, dirtyFields, errors } = formState; + + function onSubmit(formData: SignUpPayload) { + const { displayName, email, password } = formData; + jwtService + .signUp({ + displayName, + password, + email + }) + .then(() => { + // No need to do anything, registered user data will be set at app/auth/AuthRouteProvider + }) + .catch((_errors: { type: 'email' | 'password' | `root.${string}` | 'root'; message: string }[]) => { + _errors.forEach(({ message, type }) => { + setError(type, { type: 'manual', message }); + }); + }); + } + + return ( +
+ ( + + )} + /> + + ( + + )} + /> + + ( + + )} + /> + + ( + + )} + /> + + ( + + + } + /> + {errors?.acceptTermsConditions?.message} + + )} + /> + + + + ); +} + +export default JwtSignUpTab; diff --git a/src/app/shared-components/WYSIWYGEditor.tsx b/src/app/shared-components/WYSIWYGEditor.tsx new file mode 100644 index 0000000..8197535 --- /dev/null +++ b/src/app/shared-components/WYSIWYGEditor.tsx @@ -0,0 +1,67 @@ +/* eslint-disable @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-argument */ + +import React, { useState } from 'react'; +import { styled } from '@mui/material/styles'; +import { convertToRaw, EditorState } from 'draft-js'; +import { Editor } from 'react-draft-wysiwyg'; +import draftToHtml from 'draftjs-to-html'; +import 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css'; +import clsx from 'clsx'; + +/** + * The root component of the WYSIWYG editor. + */ +const Root = styled('div')({ + '& .rdw-dropdown-selectedtext': { + color: 'inherit' + }, + '& .rdw-editor-toolbar': { + borderWidth: '0 0 1px 0!important', + margin: '0!important' + }, + '& .rdw-editor-main': { + padding: '8px 12px', + height: `${256}px!important` + } +}); + +/* The props for the WYSIWYG editor component. + */ +type WYSIWYGEditorComponentProps = { + className?: string; + onChange: (T: string) => void; +}; + +/** + * The WYSIWYG editor component. + */ +function WYSIWYGEditorComponent(props: WYSIWYGEditorComponentProps, ref: React.ForwardedRef) { + const { onChange, className = '' } = props; + + const [editorState, setEditorState] = useState(EditorState.createEmpty()); + + /** + * The function to call when the editor state changes. + */ + function onEditorStateChange(_editorState) { + setEditorState(_editorState); + + return onChange(draftToHtml(convertToRaw(_editorState.getCurrentContent()))); + } + + return ( + + + + ); +} + +const WYSIWYGEditor = React.forwardRef(WYSIWYGEditorComponent); + +export default WYSIWYGEditor; diff --git a/src/app/store/apiService.ts b/src/app/store/apiService.ts new file mode 100644 index 0000000..fb473b8 --- /dev/null +++ b/src/app/store/apiService.ts @@ -0,0 +1,31 @@ +import { BaseQueryFn, createApi } from '@reduxjs/toolkit/query/react'; +import Axios, { AxiosError, AxiosRequestConfig } from 'axios'; + +const axiosBaseQuery = + (): BaseQueryFn, unknown, AxiosError> => + async ({ url, method, data, params }) => { + try { + Axios.defaults.baseURL = '/api'; + const result = await Axios({ + url, + method, + data, + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + params + }); + return { data: result.data }; + } catch (axiosError) { + const error = axiosError as AxiosError; + return { + error + }; + } + }; + +export const apiService = createApi({ + baseQuery: axiosBaseQuery(), + endpoints: () => ({}), + reducerPath: 'apiService' +}); + +export default apiService; diff --git a/src/app/store/generateReducersFromSlices.ts b/src/app/store/generateReducersFromSlices.ts new file mode 100644 index 0000000..b3d3a7a --- /dev/null +++ b/src/app/store/generateReducersFromSlices.ts @@ -0,0 +1,34 @@ +import { combineReducers, Reducer, ReducersMapObject } from '@reduxjs/toolkit'; +import { DeepPartial } from 'react-hook-form'; +import { SlicesType } from 'app/store/withSlices'; + +export const generateReducersFromSlices = (slices: SlicesType): ReducersMapObject => { + const reducerGroups: DeepPartial = {}; + + // Group reducers based on common key derived from slice name. + slices?.forEach((slice) => { + const [primary, secondary] = slice.name.split('/'); + if (secondary) { + if (!reducerGroups[primary]) { + reducerGroups[primary] = {}; + } + (reducerGroups[primary] as ReducersMapObject)[secondary] = slice.reducer; + } else { + reducerGroups[primary] = slice.reducer; + } + }); + + const combinedReducers = {}; + + // Combine the grouped reducers. + Object.entries(reducerGroups).forEach(([key, reducerGroup]) => { + if (typeof reducerGroup === 'function') { + combinedReducers[key] = reducerGroup as Reducer; + } else if (typeof reducerGroup === 'object') { + combinedReducers[key] = combineReducers(reducerGroup); + } + }); + + return combinedReducers as ReducersMapObject; +}; +export default generateReducersFromSlices; diff --git a/src/app/store/i18nSlice.ts b/src/app/store/i18nSlice.ts new file mode 100644 index 0000000..0a35379 --- /dev/null +++ b/src/app/store/i18nSlice.ts @@ -0,0 +1,88 @@ +import { createSelector, createSlice, PayloadAction } from '@reduxjs/toolkit'; +import i18n from 'src/i18n'; +import { AppThunk, RootStateType } from 'app/store/types'; +import { setDefaultSettings, settingsSliceType } from '@fuse/core/FuseSettings/store/fuseSettingsSlice'; + +/** + * Changes the language of the application and updates the settings if necessary. + */ +export const changeLanguage = + (languageId: string): AppThunk => + async (dispatch, getState) => { + const AppState = getState() as AppRootStateType; + const { direction } = AppState.fuseSettings.defaults; + + const newLangDirection = i18n.dir(languageId); + + /* + If necessary, change theme direction + */ + if (newLangDirection !== direction) { + await dispatch(setDefaultSettings({ direction: newLangDirection })); + } + + /* + Change Language + */ + return i18n.changeLanguage(languageId).then(() => { + dispatch(i18nSlice.actions.languageChanged(languageId)); + }); + }; + +/** + * The type definition for a language object. + */ +export type LanguageType = { + id: string; + title: string; + flag: string; +}; + +/** + * The type definition for the i18n state. + */ +type I18nState = { + language: string; + languages: LanguageType[]; +}; + +/** + * The i18n slice + */ +export const i18nSlice = createSlice({ + name: 'i18n', + initialState: { + language: i18n.options.lng, + languages: [ + { id: 'en', title: 'English', flag: 'US' }, + { id: 'tr', title: 'Turkish', flag: 'TR' }, + { id: 'ar', title: 'Arabic', flag: 'SA' } + ] + } as I18nState, + reducers: { + /** + * Updates the state with the new language. + */ + languageChanged: (state, action: PayloadAction) => { + state.language = action.payload; + } + } +}); + +export const selectCurrentLanguageId = (state: AppRootStateType) => state.i18n.language; + +export const selectLanguages = (state: AppRootStateType) => state.i18n.languages; + +export const selectCurrentLanguageDirection = createSelector([selectCurrentLanguageId], (id: string): string => + i18n.dir(id) +); + +export const selectCurrentLanguage = createSelector([selectCurrentLanguageId, selectLanguages], (id, languages) => + languages.find((lng) => lng.id === id) +); + +export type i18nSliceType = typeof i18nSlice; + +type AppRootStateType = RootStateType<[i18nSliceType, settingsSliceType]>; + +export default i18nSlice.reducer; diff --git a/src/app/store/store.ts b/src/app/store/store.ts new file mode 100644 index 0000000..0f3fee3 --- /dev/null +++ b/src/app/store/store.ts @@ -0,0 +1,111 @@ +import i18n from 'app/store/i18nSlice'; +import apiService from 'app/store/apiService'; +import { + ReducersMapObject, + configureStore, + Store, + combineSlices, + buildCreateSlice, + asyncThunkCreator, + Middleware +} from '@reduxjs/toolkit'; +import { createDynamicMiddleware } from '@reduxjs/toolkit/react'; +import { AppDispatchType } from 'app/store/types'; +import { useDispatch } from 'react-redux'; +import { setupListeners } from '@reduxjs/toolkit/query'; +import { createLogger } from 'redux-logger'; + +/** + * The dynamic middleware instance. + */ +const dynamicInstance = createDynamicMiddleware(); + +export const { middleware: dynamicMiddleware } = dynamicInstance; + +export const addAppMiddleware = dynamicInstance.addMiddleware.withTypes(); + +const middlewares: Middleware[] = [apiService.middleware, dynamicMiddleware]; + +if (process.env.NODE_ENV === 'development') { + const logger = createLogger({ collapsed: (getState, action, logEntry) => (logEntry ? !logEntry.error : true) }); + middlewares.push(logger); +} + +/** + * The type definition for the lazy loaded slices. + */ +export interface LazyLoadedSlices {} + +/** + * The static reducers. + */ +const staticReducers: ReducersMapObject = { + i18n, + [apiService.reducerPath]: apiService.reducer +}; + +/** + * The root reducer. + */ +export const rootReducer = combineSlices(staticReducers).withLazyLoadedSlices(); + +/** + * The type definition for the root state. + */ +export type RootState = ReturnType; + +/** + * Configures the app store. + */ +export function configureAppStore(initialState?: RootState) { + const store = configureStore({ + reducer: rootReducer, + preloadedState: initialState, + middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(middlewares) + }) as Store; + + setupListeners(store.dispatch); + + return store; +} + +/** + * The type definition for the app store. + */ +export type AppStore = typeof store; + +/** + * The type definition for the app dispatch. + */ +export type AppDispatch = AppStore['dispatch']; + +/** + * Typed hook to get the dispatch function from the Redux store. + */ +export const useAppDispatch: () => AppDispatchType = useDispatch; + +/** + * Shortage for the root state selector. + */ +export const appSelector = rootReducer.selector; + +/** + * createAppSlice is a wrapper around createSlice that adds support for asyncThunkCreator. + */ +export const createAppSlice = buildCreateSlice({ + creators: { asyncThunk: asyncThunkCreator } +}); + +/** + * The type definition for the config object passed to `withAppMiddleware`. + */ +type Config = { + state: RootState; + dispatch: AppDispatch; +}; + +export const withAppMiddleware = dynamicInstance.withMiddleware.withTypes(); + +const store = configureAppStore(); + +export default store; diff --git a/src/app/store/types.ts b/src/app/store/types.ts new file mode 100644 index 0000000..b35f251 --- /dev/null +++ b/src/app/store/types.ts @@ -0,0 +1,97 @@ +import { Action, Reducer, ThunkAction, ThunkDispatch, Dispatch, AnyAction } from '@reduxjs/toolkit'; +import { RootState } from './store'; + +/** + * The type of the dispatch function for this application (AppState). + */ +// export type AppDispatchType = typeof store.dispatch; +// export type AppDispatchType = ThunkDispatch> & Dispatch>; + +// export type AppDispatchType = ThunkDispatch; + +// This represents any action that can be dispatched to the store, either regular actions or thunks. +export type AppAction> = Action | ThunkAction>; + +// export type AppThunk = ThunkAction>; +export type AppThunk = ThunkAction>; + +export type AppDispatchType = Dispatch> & ((thunk: AppThunk) => Promise); + +/** + * The extended type of the root state for this application (AppState). + */ +type ExtendedRootStateType = RootState & { [K in T]: State }; + +/** + * The type of the async reducers for this application (AppState). + */ +export type AsyncReducersType = { + [key: string]: Reducer; +}; + +/** + * Type to return from async actions (redux-thunk). + * `R` describes the return value of the thunk. + * `E` describes the extra argument type given to the action thunk, e.g. + * `(dispatch, getState, extraArgument) => {}` + */ + +// export type AppThunkAction = (dispatch: AppThunkDispatchType, getState: () => S, extraArgument: E) => R; + +export type AppThunkType, E = unknown> = ThunkAction>; + +// export type AppThunkDispatchTyp3e = ( +// thunkAction: AppThunkAction, RootStateType, E, Action> +// ) => Promise; + +// export type AppThunk = ThunkAction>; + +/** + * Dispatch function for this application (AppState). + * `E` describes the extra argument type given to the action thunk, e.g. + * `(dispatch, getState, extraArgument) => {}` + */ +export type AppThunkDispatchType = ThunkDispatch>; + +/** + * The type of a path to a specific type. + */ +type PathToType = Str extends `${infer Start}/${infer Rest}` + ? { [P in Start as P]: PathToType } + : { [P in Str]: T }; + +/** + * The type of multiple paths to specific types. + * _T - The type to return. + */ +type MultiplePathsToType = Slices extends [infer First, ...infer Rest] + ? First extends { name: string; getInitialState: () => unknown } + ? PathToType> & MultiplePathsToType + : Record + : Record; + +/** + * The type of the root state for this application (AppState) with a specific slice. + */ +export type RootStateWithSliceType unknown }> = RootState & + PathToType>; + +export type RootStateType< + T extends + | string + | { name: string; getInitialState: () => unknown } + | Array<{ name: string; getInitialState: () => unknown }> = never, + State = never +> = T extends string + ? ExtendedRootStateType + : T extends { name: string; getInitialState: () => unknown } + ? RootStateWithSliceType + : T extends Array<{ name: string; getInitialState: () => unknown }> + ? RootState & MultiplePathsToType + : RootState; + +export type AsyncStateType = { + data: T | null; + status: 'idle' | 'loading' | 'succeeded' | 'failed'; + error?: string | null; +}; diff --git a/src/app/store/withReducer.tsx b/src/app/store/withReducer.tsx new file mode 100644 index 0000000..7f7f483 --- /dev/null +++ b/src/app/store/withReducer.tsx @@ -0,0 +1,26 @@ +import { Reducer } from '@reduxjs/toolkit'; +import { rootReducer } from './store'; +/** + * A Higher Order Component that injects a reducer into the Redux store. + */ +const withReducer = +

(key: string, reducer: Reducer) => + (WrappedComponent: React.FC

) => { + rootReducer.inject( + { + reducerPath: key, + reducer + }, + { + overrideExisting: true + } + ); + + /** + * The component that wraps the provided component with the injected reducer. + */ + return function WithInjectedReducer(props: P) { + return ; + }; + }; +export default withReducer; diff --git a/src/app/store/withSlices.tsx b/src/app/store/withSlices.tsx new file mode 100644 index 0000000..e1164cb --- /dev/null +++ b/src/app/store/withSlices.tsx @@ -0,0 +1,50 @@ +import React from 'react'; +import { Reducer, Slice } from '@reduxjs/toolkit'; +import generateReducersFromSlices from './generateReducersFromSlices'; +import { rootReducer } from './store'; + +export type SlicesType = Slice[]; + +/** + * Injects reducers grouped by common key. + */ +export const injectReducersGroupedByCommonKey = async (slices: SlicesType) => { + const reducers = generateReducersFromSlices(slices); + + if (reducers) { + Object.keys(reducers).forEach((key) => { + const reducer = reducers[key] as Reducer; + + if (!key || !reducer) { + return; + } + + rootReducer.inject( + { + reducerPath: key, + reducer + }, + { + overrideExisting: true + } + ); + }); + } + + return true; +}; + +/** + * A Higher Order Component that injects reducers for the provided slices. + */ +const withSlices = +

(slices: SlicesType) => + (WrappedComponent: React.FC

) => { + injectReducersGroupedByCommonKey(slices); + + return function WithInjectedReducer(props: P) { + return ; + }; + }; + +export default withSlices; diff --git a/src/app/theme-layouts/layout1/Layout1.tsx b/src/app/theme-layouts/layout1/Layout1.tsx new file mode 100644 index 0000000..b7909b8 --- /dev/null +++ b/src/app/theme-layouts/layout1/Layout1.tsx @@ -0,0 +1,93 @@ +import { styled } from '@mui/material/styles'; +import FuseMessage from '@fuse/core/FuseMessage'; +import AppContext from 'app/AppContext'; +import { lazy, memo, ReactNode, Suspense, useContext } from 'react'; +import { useSelector } from 'react-redux'; +import { useRoutes } from 'react-router-dom'; +import { selectFuseCurrentLayoutConfig } from '@fuse/core/FuseSettings/store/fuseSettingsSlice'; +import { Layout1ConfigDefaultsType } from 'app/theme-layouts/layout1/Layout1Config'; +import FuseSuspense from '@fuse/core/FuseSuspense'; +import FooterLayout1 from './components/FooterLayout1'; +import LeftSideLayout1 from './components/LeftSideLayout1'; +import NavbarWrapperLayout1 from './components/NavbarWrapperLayout1'; +import RightSideLayout1 from './components/RightSideLayout1'; +import ToolbarLayout1 from './components/ToolbarLayout1'; + +const FuseDialog = lazy(() => import('@fuse/core/FuseDialog/FuseDialog')); + +const Root = styled('div')(({ config }: { config: Layout1ConfigDefaultsType }) => ({ + ...(config.mode === 'boxed' && { + clipPath: 'inset(0)', + maxWidth: `${config.containerWidth}px`, + margin: '0 auto', + boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)' + }), + ...(config.mode === 'container' && { + '& .container': { + maxWidth: `${config.containerWidth}px`, + width: '100%', + margin: '0 auto' + } + }) +})); + +type Layout1Props = { + children?: ReactNode; +}; + +/** + * The layout 1. + */ +function Layout1(props: Layout1Props) { + const { children } = props; + const config = useSelector(selectFuseCurrentLayoutConfig) as Layout1ConfigDefaultsType; + const appContext = useContext(AppContext); + const { routes } = appContext; + + return ( + + {config.leftSidePanel.display && } + +

+ {config.navbar.display && config.navbar.position === 'left' && } + +
+ {config.toolbar.display && ( + + )} + + {/*
+ +
*/} + +
+ {useRoutes(routes)} + + + + + {children} +
+ + {config.footer.display && ( + + )} +
+ + {config.navbar.display && config.navbar.position === 'right' && } +
+ + {config.rightSidePanel.display && } + + + ); +} + +export default memo(Layout1); diff --git a/src/app/theme-layouts/layout1/Layout1Config.ts b/src/app/theme-layouts/layout1/Layout1Config.ts new file mode 100644 index 0000000..245b733 --- /dev/null +++ b/src/app/theme-layouts/layout1/Layout1Config.ts @@ -0,0 +1,158 @@ +/** + * The Layout1 Config object. + */ +const Layout1Config = { + title: 'Layout 1 - Vertical', + defaults: { + mode: 'container', + containerWidth: 1570, + navbar: { + display: true, + style: 'style-1', + folded: true, + position: 'left', + open: true + }, + toolbar: { + display: true, + style: 'fixed' + }, + footer: { + display: true, + style: 'fixed' + }, + leftSidePanel: { + display: true + }, + rightSidePanel: { + display: true + } + }, + form: { + mode: { + title: 'Mode', + type: 'radio', + options: [ + { + name: 'Boxed', + value: 'boxed' + }, + { + name: 'Full Width', + value: 'fullwidth' + }, + { + name: 'Container', + value: 'container' + } + ] + }, + containerWidth: { + title: 'Container Width (px)', + type: 'number' + }, + + navbar: { + type: 'group', + title: 'Navbar', + children: { + display: { + title: 'Display', + type: 'switch' + }, + position: { + title: 'Position', + type: 'radio', + options: [ + { + name: 'Left', + value: 'left' + }, + { + name: 'Right', + value: 'right' + } + ] + }, + style: { + title: 'Style', + type: 'radio', + options: [ + { + name: 'Slide (style-1)', + value: 'style-1' + }, + { + name: 'Folded (style-2)', + value: 'style-2' + }, + { + name: 'Tabbed (style-3)', + value: 'style-3' + }, + { + name: 'Tabbed Dense (style-3-dense)', + value: 'style-3-dense' + } + ] + }, + folded: { + title: 'Folded (style-2, style-3)', + type: 'switch' + } + } + }, + toolbar: { + type: 'group', + title: 'Toolbar', + children: { + display: { + title: 'Display', + type: 'switch' + }, + style: { + title: 'Style', + type: 'radio', + options: [ + { + name: 'Fixed', + value: 'fixed' + }, + { + name: 'Static', + value: 'static' + } + ] + } + } + }, + footer: { + type: 'group', + title: 'Footer', + children: { + display: { + title: 'Display', + type: 'switch' + }, + style: { + title: 'Style', + type: 'radio', + options: [ + { + name: 'Fixed', + value: 'fixed' + }, + { + name: 'Static', + value: 'static' + } + ] + } + } + } + } +}; + +export type Layout1ConfigDefaultsType = (typeof Layout1Config)['defaults']; + +export default Layout1Config; diff --git a/src/app/theme-layouts/layout1/components/FooterLayout1.tsx b/src/app/theme-layouts/layout1/components/FooterLayout1.tsx new file mode 100644 index 0000000..3292ffa --- /dev/null +++ b/src/app/theme-layouts/layout1/components/FooterLayout1.tsx @@ -0,0 +1,41 @@ +import AppBar from '@mui/material/AppBar'; +import { ThemeProvider } from '@mui/material/styles'; +import Toolbar from '@mui/material/Toolbar'; +import { memo } from 'react'; +import { useSelector } from 'react-redux'; +import { selectFooterTheme } from '@fuse/core/FuseSettings/store/fuseSettingsSlice'; +import clsx from 'clsx'; + +type FooterLayout1Props = { className?: string }; + +/** + * The footer layout 1. + */ +function FooterLayout1(props: FooterLayout1Props) { + const { className } = props; + + const footerTheme = useSelector(selectFooterTheme); + + return ( + + + theme.palette.mode === 'light' + ? footerTheme.palette.background.paper + : footerTheme.palette.background.default + }} + elevation={0} + > + + Footer + + + + ); +} + +export default memo(FooterLayout1); diff --git a/src/app/theme-layouts/layout1/components/LeftSideLayout1.tsx b/src/app/theme-layouts/layout1/components/LeftSideLayout1.tsx new file mode 100644 index 0000000..8d3bc63 --- /dev/null +++ b/src/app/theme-layouts/layout1/components/LeftSideLayout1.tsx @@ -0,0 +1,10 @@ +import { memo } from 'react'; + +/** + * The left side layout 1. + */ +function LeftSideLayout1() { + return
; +} + +export default memo(LeftSideLayout1); diff --git a/src/app/theme-layouts/layout1/components/NavbarToggleFabLayout1.tsx b/src/app/theme-layouts/layout1/components/NavbarToggleFabLayout1.tsx new file mode 100644 index 0000000..b9f423a --- /dev/null +++ b/src/app/theme-layouts/layout1/components/NavbarToggleFabLayout1.tsx @@ -0,0 +1,36 @@ +import { useSelector } from 'react-redux'; +import { useAppDispatch } from 'app/store/store'; +import useThemeMediaQuery from '@fuse/hooks/useThemeMediaQuery'; +import { selectFuseCurrentLayoutConfig } from '@fuse/core/FuseSettings/store/fuseSettingsSlice'; +import { Layout1ConfigDefaultsType } from 'app/theme-layouts/layout1/Layout1Config'; +import { navbarToggle, navbarToggleMobile } from 'app/theme-layouts/shared-components/navbar/store/navbarSlice'; +import NavbarToggleFab from 'app/theme-layouts/shared-components/navbar/NavbarToggleFab'; + +type NavbarToggleFabLayout1Props = { + className?: string; +}; + +/** + * The navbar toggle fab layout 1. + */ +function NavbarToggleFabLayout1(props: NavbarToggleFabLayout1Props) { + const { className } = props; + + const isMobile = useThemeMediaQuery((theme) => theme.breakpoints.down('lg')); + + const config = useSelector(selectFuseCurrentLayoutConfig) as Layout1ConfigDefaultsType; + + const dispatch = useAppDispatch(); + + return ( + { + dispatch(isMobile ? navbarToggleMobile() : navbarToggle()); + }} + position={config.navbar.position} + /> + ); +} + +export default NavbarToggleFabLayout1; diff --git a/src/app/theme-layouts/layout1/components/NavbarWrapperLayout1.tsx b/src/app/theme-layouts/layout1/components/NavbarWrapperLayout1.tsx new file mode 100644 index 0000000..3fee27a --- /dev/null +++ b/src/app/theme-layouts/layout1/components/NavbarWrapperLayout1.tsx @@ -0,0 +1,54 @@ +import { ThemeProvider } from '@mui/material/styles'; +import { memo, useEffect } from 'react'; +import { useSelector } from 'react-redux'; +import { selectFuseCurrentLayoutConfig, selectNavbarTheme } from '@fuse/core/FuseSettings/store/fuseSettingsSlice'; +import { Layout1ConfigDefaultsType } from 'app/theme-layouts/layout1/Layout1Config'; +import NavbarToggleFabLayout1 from 'app/theme-layouts/layout1/components/NavbarToggleFabLayout1'; +import { useLocation } from 'react-router'; +import useThemeMediaQuery from '@fuse/hooks/useThemeMediaQuery'; +import { useAppDispatch } from 'app/store/store'; +import { + navbarCloseMobile, + navbarSlice, + selectFuseNavbar +} from 'app/theme-layouts/shared-components/navbar/store/navbarSlice'; +import withSlices from 'app/store/withSlices'; +import NavbarStyle1 from './navbar/style-1/NavbarStyle1'; +import NavbarStyle2 from './navbar/style-2/NavbarStyle2'; +import NavbarStyle3 from './navbar/style-3/NavbarStyle3'; + +/** + * The navbar wrapper layout 1. + */ +function NavbarWrapperLayout1() { + const config = useSelector(selectFuseCurrentLayoutConfig) as Layout1ConfigDefaultsType; + const navbar = useSelector(selectFuseNavbar); + const location = useLocation(); + const isMobile = useThemeMediaQuery((theme) => theme.breakpoints.down('lg')); + const { pathname } = location; + const dispatch = useAppDispatch(); + + useEffect(() => { + if (isMobile) { + dispatch(navbarCloseMobile()); + } + }, [pathname, isMobile]); + + const navbarTheme = useSelector(selectNavbarTheme); + + return ( + <> + + <> + {config.navbar.style === 'style-1' && } + {config.navbar.style === 'style-2' && } + {config.navbar.style === 'style-3' && } + {config.navbar.style === 'style-3-dense' && } + + + {config.navbar.display && !config.toolbar.display && !navbar.open && } + + ); +} + +export default withSlices([navbarSlice])(memo(NavbarWrapperLayout1)); diff --git a/src/app/theme-layouts/layout1/components/RightSideLayout1.tsx b/src/app/theme-layouts/layout1/components/RightSideLayout1.tsx new file mode 100644 index 0000000..3631fd1 --- /dev/null +++ b/src/app/theme-layouts/layout1/components/RightSideLayout1.tsx @@ -0,0 +1,16 @@ +import { memo, lazy, Suspense } from 'react'; + +const QuickPanel = lazy(() => import('app/theme-layouts/shared-components/quickPanel/QuickPanel')); + +/** + * The right side layout 1. + */ +function RightSideLayout1() { + return ( + + + + ); +} + +export default memo(RightSideLayout1); diff --git a/src/app/theme-layouts/layout1/components/ToolbarLayout1.tsx b/src/app/theme-layouts/layout1/components/ToolbarLayout1.tsx new file mode 100644 index 0000000..a90bba1 --- /dev/null +++ b/src/app/theme-layouts/layout1/components/ToolbarLayout1.tsx @@ -0,0 +1,99 @@ +import { ThemeProvider } from '@mui/material/styles'; +import AppBar from '@mui/material/AppBar'; +import Hidden from '@mui/material/Hidden'; +import Toolbar from '@mui/material/Toolbar'; +import clsx from 'clsx'; +import { memo } from 'react'; +import { useSelector } from 'react-redux'; +import { selectFuseCurrentLayoutConfig, selectToolbarTheme } from '@fuse/core/FuseSettings/store/fuseSettingsSlice'; +import { Layout1ConfigDefaultsType } from 'app/theme-layouts/layout1/Layout1Config'; +import NavbarToggleButton from 'app/theme-layouts/shared-components/navbar/NavbarToggleButton'; +import { selectFuseNavbar } from 'app/theme-layouts/shared-components/navbar/store/navbarSlice'; +import AdjustFontSize from '../../shared-components/AdjustFontSize'; +import FullScreenToggle from '../../shared-components/FullScreenToggle'; +import LanguageSwitcher from '../../shared-components/LanguageSwitcher'; +import NavigationShortcuts from '../../shared-components/navigation/NavigationShortcuts'; +import NavigationSearch from '../../shared-components/navigation/NavigationSearch'; +import UserMenu from '../../shared-components/UserMenu'; +import QuickPanelToggleButton from '../../shared-components/quickPanel/QuickPanelToggleButton'; + +type ToolbarLayout1Props = { + className?: string; +}; + +/** + * The toolbar layout 1. + */ +function ToolbarLayout1(props: ToolbarLayout1Props) { + const { className } = props; + const config = useSelector(selectFuseCurrentLayoutConfig) as Layout1ConfigDefaultsType; + const navbar = useSelector(selectFuseNavbar); + const toolbarTheme = useSelector(selectToolbarTheme); + + return ( + + + theme.palette.mode === 'light' + ? toolbarTheme.palette.background.paper + : toolbarTheme.palette.background.default + }} + position="static" + elevation={0} + > + +
+ {config.navbar.display && config.navbar.position === 'left' && ( + <> + + {(config.navbar.style === 'style-3' || config.navbar.style === 'style-3-dense') && ( + + )} + + {config.navbar.style === 'style-1' && !navbar.open && ( + + )} + + + + + + + )} + + + + +
+ +
+ + + + + + +
+ + {config.navbar.display && config.navbar.position === 'right' && ( + <> + + {!navbar.open && } + + + + + + + )} +
+
+
+ ); +} + +export default memo(ToolbarLayout1); diff --git a/src/app/theme-layouts/layout1/components/navbar/style-1/NavbarStyle1.tsx b/src/app/theme-layouts/layout1/components/navbar/style-1/NavbarStyle1.tsx new file mode 100644 index 0000000..26ae454 --- /dev/null +++ b/src/app/theme-layouts/layout1/components/navbar/style-1/NavbarStyle1.tsx @@ -0,0 +1,94 @@ +import Hidden from '@mui/material/Hidden'; +import { Theme } from '@mui/system/createTheme'; +import { styled } from '@mui/material/styles'; +import SwipeableDrawer from '@mui/material/SwipeableDrawer'; +import { useSelector } from 'react-redux'; +import { selectFuseCurrentLayoutConfig } from '@fuse/core/FuseSettings/store/fuseSettingsSlice'; +import { useAppDispatch } from 'app/store/store'; +import { Layout1ConfigDefaultsType } from 'app/theme-layouts/layout1/Layout1Config'; +import { navbarCloseMobile, selectFuseNavbar } from 'app/theme-layouts/shared-components/navbar/store/navbarSlice'; +import NavbarStyle1Content from './NavbarStyle1Content'; + +const navbarWidth = 280; + +type StyledNavBarProps = { + theme?: Theme; + open: boolean; + position: string; +}; + +const StyledNavBar = styled('div')(({ theme, open, position }) => ({ + minWidth: navbarWidth, + width: navbarWidth, + maxWidth: navbarWidth, + ...(!open && { + transition: theme.transitions.create('margin', { + easing: theme.transitions.easing.easeOut, + duration: theme.transitions.duration.leavingScreen + }), + ...(position === 'left' && { + marginLeft: `-${navbarWidth}px` + }), + ...(position === 'right' && { + marginRight: `-${navbarWidth}px` + }) + }), + ...(open && { + transition: theme.transitions.create('margin', { + easing: theme.transitions.easing.easeOut, + duration: theme.transitions.duration.enteringScreen + }) + }) +})); + +const StyledNavBarMobile = styled(SwipeableDrawer)(() => ({ + '& .MuiDrawer-paper': { + minWidth: navbarWidth, + width: navbarWidth, + maxWidth: navbarWidth + } +})); + +/** + * The navbar style 1. + */ +function NavbarStyle1() { + const dispatch = useAppDispatch(); + const config = useSelector(selectFuseCurrentLayoutConfig) as Layout1ConfigDefaultsType; + const navbar = useSelector(selectFuseNavbar); + + return ( + <> + + + + + + + + dispatch(navbarCloseMobile())} + onOpen={() => {}} + disableSwipeToOpen + ModalProps={{ + keepMounted: true // Better open performance on mobile. + }} + > + + + + + ); +} + +export default NavbarStyle1; diff --git a/src/app/theme-layouts/layout1/components/navbar/style-1/NavbarStyle1Content.tsx b/src/app/theme-layouts/layout1/components/navbar/style-1/NavbarStyle1Content.tsx new file mode 100644 index 0000000..3c983ed --- /dev/null +++ b/src/app/theme-layouts/layout1/components/navbar/style-1/NavbarStyle1Content.tsx @@ -0,0 +1,75 @@ +import FuseScrollbars from '@fuse/core/FuseScrollbars'; +import { styled } from '@mui/material/styles'; +import clsx from 'clsx'; +import { memo } from 'react'; +import Navigation from 'app/theme-layouts/shared-components/navigation/Navigation'; +import NavbarToggleButton from 'app/theme-layouts/shared-components/navbar/NavbarToggleButton'; +import Logo from '../../../../shared-components/Logo'; +import UserNavbarHeader from '../../../../shared-components/UserNavbarHeader'; + +const Root = styled('div')(({ theme }) => ({ + backgroundColor: theme.palette.background.default, + color: theme.palette.text.primary, + '& ::-webkit-scrollbar-thumb': { + boxShadow: `inset 0 0 0 20px ${ + theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.24)' : 'rgba(255, 255, 255, 0.24)' + }` + }, + '& ::-webkit-scrollbar-thumb:active': { + boxShadow: `inset 0 0 0 20px ${ + theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.37)' : 'rgba(255, 255, 255, 0.37)' + }` + } +})); + +const StyledContent = styled(FuseScrollbars)(() => ({ + overscrollBehavior: 'contain', + overflowX: 'hidden', + overflowY: 'auto', + WebkitOverflowScrolling: 'touch', + backgroundRepeat: 'no-repeat', + backgroundSize: '100% 40px, 100% 10px', + backgroundAttachment: 'local, scroll' +})); + +type NavbarStyle1ContentProps = { + className?: string; +}; + +/** + * The navbar style 1 content. + */ +function NavbarStyle1Content(props: NavbarStyle1ContentProps) { + const { className = '' } = props; + + return ( + +
+
+ +
+ + +
+ + + + + + +
+ footer logo +
+
+
+ ); +} + +export default memo(NavbarStyle1Content); diff --git a/src/app/theme-layouts/layout1/components/navbar/style-2/NavbarStyle2.tsx b/src/app/theme-layouts/layout1/components/navbar/style-2/NavbarStyle2.tsx new file mode 100644 index 0000000..85bb2f1 --- /dev/null +++ b/src/app/theme-layouts/layout1/components/navbar/style-2/NavbarStyle2.tsx @@ -0,0 +1,193 @@ +import Hidden from '@mui/material/Hidden'; +import { styled } from '@mui/material/styles'; +import SwipeableDrawer from '@mui/material/SwipeableDrawer'; +import { + navbarCloseFolded, + navbarCloseMobile, + navbarOpenFolded, + selectFuseNavbar +} from 'app/theme-layouts/shared-components/navbar/store/navbarSlice'; +import { useAppDispatch } from 'app/store/store'; +import { useSelector } from 'react-redux'; +import { selectFuseCurrentLayoutConfig } from '@fuse/core/FuseSettings/store/fuseSettingsSlice'; +import { Theme } from '@mui/system/createTheme'; +import { Layout1ConfigDefaultsType } from 'app/theme-layouts/layout1/Layout1Config'; +import NavbarStyle2Content from './NavbarStyle2Content'; + +const navbarWidth = 280; + +type StyledNavBarPropsProps = { + theme?: Theme; + folded: number; + open: boolean; +}; + +const Root = styled('div')(({ theme, folded }) => ({ + display: 'flex', + flexDirection: 'column', + zIndex: 4, + [theme.breakpoints.up('lg')]: { + width: navbarWidth, + minWidth: navbarWidth + }, + + ...(folded && { + [theme.breakpoints.up('lg')]: { + width: 76, + minWidth: 76 + } + }) +})); + +type StyledNavBarProps = { + theme?: Theme; + open?: boolean; + folded: number; + foldedandopened: number; + foldedandclosed: number; + position?: string; + anchor?: string; +}; + +const StyledNavbar = styled('div')( + ({ theme, position, folded, foldedandopened, foldedandclosed }) => ({ + minWidth: navbarWidth, + width: navbarWidth, + maxWidth: navbarWidth, + maxHeight: '100%', + transition: theme.transitions.create(['width', 'min-width'], { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.shorter + }), + + ...(position === 'left' && { + left: 0 + }), + + ...(position === 'right' && { + right: 0 + }), + + ...(folded && { + position: 'absolute', + width: 76, + minWidth: 76, + top: 0, + bottom: 0 + }), + + ...(foldedandopened && { + width: navbarWidth, + minWidth: navbarWidth + }), + + ...(foldedandclosed && { + '& .NavbarStyle2-content': { + '& .logo-icon': { + width: 44, + height: 44 + }, + '& .logo-text': { + opacity: 0 + }, + '& .react-badge': { + opacity: 0 + }, + '& .fuse-list-item': { + width: 56 + }, + '& .fuse-list-item-text, & .arrow-icon, & .item-badge': { + opacity: 0 + }, + '& .fuse-list-subheader .fuse-list-subheader-text': { + opacity: 0 + }, + '& .fuse-list-subheader:before': { + content: '""', + display: 'block', + position: 'absolute', + minWidth: 16, + borderTop: '2px solid', + opacity: 0.2 + }, + '& .collapse-children': { + display: 'none' + } + } + }) + }) +); + +const StyledNavbarMobile = styled(SwipeableDrawer)(({ theme }) => ({ + '& > .MuiDrawer-paper': { + minWidth: navbarWidth, + width: navbarWidth, + maxWidth: navbarWidth, + maxHeight: '100%', + transition: theme.transitions.create(['width', 'min-width'], { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.shorter + }) + } +})); + +/** + * The navbar style 2. + */ +function NavbarStyle2() { + const dispatch = useAppDispatch(); + const config = useSelector(selectFuseCurrentLayoutConfig) as Layout1ConfigDefaultsType; + const navbar = useSelector(selectFuseNavbar); + + // const folded = !navbar.open; + const folded = config.navbar?.folded; + const foldedandclosed = folded && !navbar.foldedOpen; + const foldedandopened = folded && navbar.foldedOpen; + + return ( + + + foldedandclosed && dispatch(navbarOpenFolded())} + onMouseLeave={() => foldedandopened && dispatch(navbarCloseFolded())} + > + + + + + + dispatch(navbarCloseMobile())} + onOpen={() => {}} + disableSwipeToOpen + ModalProps={{ + keepMounted: true // Better open performance on mobile. + }} + > + + + + + ); +} + +export default NavbarStyle2; diff --git a/src/app/theme-layouts/layout1/components/navbar/style-2/NavbarStyle2Content.tsx b/src/app/theme-layouts/layout1/components/navbar/style-2/NavbarStyle2Content.tsx new file mode 100644 index 0000000..f9aae44 --- /dev/null +++ b/src/app/theme-layouts/layout1/components/navbar/style-2/NavbarStyle2Content.tsx @@ -0,0 +1,61 @@ +import FuseScrollbars from '@fuse/core/FuseScrollbars'; +import { styled } from '@mui/material/styles'; +import clsx from 'clsx'; +import { memo } from 'react'; +import Navigation from 'app/theme-layouts/shared-components/navigation/Navigation'; +import NavbarToggleButton from 'app/theme-layouts/shared-components/navbar/NavbarToggleButton'; +import Logo from '../../../../shared-components/Logo'; + +const Root = styled('div')(({ theme }) => ({ + backgroundColor: theme.palette.background.default, + color: theme.palette.text.primary, + '& ::-webkit-scrollbar-thumb': { + boxShadow: `inset 0 0 0 20px ${ + theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.24)' : 'rgba(255, 255, 255, 0.24)' + }` + }, + '& ::-webkit-scrollbar-thumb:active': { + boxShadow: `inset 0 0 0 20px ${ + theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.37)' : 'rgba(255, 255, 255, 0.37)' + }` + } +})); + +const StyledContent = styled(FuseScrollbars)(() => ({ + overscrollBehavior: 'contain', + overflowX: 'hidden', + overflowY: 'auto', + WebkitOverflowScrolling: 'touch', + background: + 'linear-gradient(rgba(0, 0, 0, 0) 30%, rgba(0, 0, 0, 0) 30%), linear-gradient(rgba(0, 0, 0, 0.25) 0, rgba(0, 0, 0, 0) 40%)', + backgroundRepeat: 'no-repeat', + backgroundSize: '100% 40px, 100% 10px', + backgroundAttachment: 'local, scroll' +})); + +type NavbarStyle2ContentProps = { className?: string }; + +/** + * The navbar style 2 content. + */ +function NavbarStyle2Content(props: NavbarStyle2ContentProps) { + const { className = '' } = props; + + return ( + +
+
+ +
+ + +
+ + + + +
+ ); +} + +export default memo(NavbarStyle2Content); diff --git a/src/app/theme-layouts/layout1/components/navbar/style-3/NavbarStyle3.tsx b/src/app/theme-layouts/layout1/components/navbar/style-3/NavbarStyle3.tsx new file mode 100644 index 0000000..e28097f --- /dev/null +++ b/src/app/theme-layouts/layout1/components/navbar/style-3/NavbarStyle3.tsx @@ -0,0 +1,172 @@ +import Hidden from '@mui/material/Hidden'; +import { styled } from '@mui/material/styles'; +import SwipeableDrawer from '@mui/material/SwipeableDrawer'; +import { useAppDispatch } from 'app/store/store'; +import { useSelector } from 'react-redux'; +import { navbarCloseMobile, selectFuseNavbar } from 'app/theme-layouts/shared-components/navbar/store/navbarSlice'; +import GlobalStyles from '@mui/material/GlobalStyles'; +import { selectFuseCurrentLayoutConfig } from '@fuse/core/FuseSettings/store/fuseSettingsSlice'; +import { Theme } from '@mui/system/createTheme'; +import { Layout1ConfigDefaultsType } from 'app/theme-layouts/layout1/Layout1Config'; +import clsx from 'clsx'; +import NavbarStyle3Content from './NavbarStyle3Content'; + +const navbarWidth = 120; +const navbarWidthDense = 64; +const panelWidth = 280; + +type StyledNavBarProps = { + theme?: Theme; + open?: boolean; + folded?: number; + dense?: number; + position?: string; + className?: string; + anchor?: string; +}; + +const StyledNavBar = styled('div')(({ theme, dense, open, folded, position }) => ({ + minWidth: navbarWidth, + width: navbarWidth, + maxWidth: navbarWidth, + + ...(dense && { + minWidth: navbarWidthDense, + width: navbarWidthDense, + maxWidth: navbarWidthDense, + + ...(!open && { + ...(position === 'left' && { + marginLeft: -navbarWidthDense + }), + + ...(position === 'right' && { + marginRight: -navbarWidthDense + }) + }) + }), + + ...(!folded && { + minWidth: dense ? navbarWidthDense + panelWidth : navbarWidth + panelWidth, + width: dense ? navbarWidthDense + panelWidth : navbarWidth + panelWidth, + maxWidth: dense ? navbarWidthDense + panelWidth : navbarWidth + panelWidth, + + '& #fuse-navbar-panel': { + opacity: '1!important', + pointerEvents: 'initial!important' + }, + + ...(!open && { + ...(position === 'left' && { + marginLeft: -(dense ? navbarWidthDense + panelWidth : navbarWidth + panelWidth) + }), + + ...(position === 'right' && { + marginRight: -(dense ? navbarWidthDense + panelWidth : navbarWidth + panelWidth) + }) + }) + }), + + ...(!open && { + transition: theme.transitions.create('margin', { + easing: theme.transitions.easing.easeOut, + duration: theme.transitions.duration.leavingScreen + }), + ...(position === 'left' && { + marginLeft: -(dense ? navbarWidthDense : navbarWidth) + }), + + ...(position === 'right' && { + marginRight: -(dense ? navbarWidthDense : navbarWidth) + }) + }), + + ...(open && { + transition: theme.transitions.create('margin', { + easing: theme.transitions.easing.easeOut, + duration: theme.transitions.duration.enteringScreen + }) + }) +})); + +const StyledNavBarMobile = styled(SwipeableDrawer)(() => ({ + '& .MuiDrawer-paper': { + '& #fuse-navbar-side-panel': { + minWidth: 'auto', + wdith: 'auto' + }, + '& #fuse-navbar-panel': { + opacity: '1!important', + pointerEvents: 'initial!important' + } + } +})); + +type NavbarStyle3Props = { + className?: string; + dense?: boolean; +}; + +/** + * The navbar style 3. + */ +function NavbarStyle3(props: NavbarStyle3Props) { + const { className = '', dense = false } = props; + const dispatch = useAppDispatch(); + const config = useSelector(selectFuseCurrentLayoutConfig) as Layout1ConfigDefaultsType; + const navbar = useSelector(selectFuseNavbar); + const { folded } = config.navbar; + + return ( + <> + ({ + '& #fuse-navbar-side-panel': { + width: dense ? navbarWidthDense : navbarWidth, + minWidth: dense ? navbarWidthDense : navbarWidth, + maxWidth: dense ? navbarWidthDense : navbarWidth + }, + '& #fuse-navbar-panel': { + maxWidth: '100%', + width: panelWidth, + [theme.breakpoints.up('lg')]: { + minWidth: panelWidth, + maxWidth: 'initial' + } + } + })} + /> + + + + + + + dispatch(navbarCloseMobile())} + onOpen={() => {}} + disableSwipeToOpen + ModalProps={{ + keepMounted: true // Better open performance on mobile. + }} + > + + + + + ); +} + +export default NavbarStyle3; diff --git a/src/app/theme-layouts/layout1/components/navbar/style-3/NavbarStyle3Content.tsx b/src/app/theme-layouts/layout1/components/navbar/style-3/NavbarStyle3Content.tsx new file mode 100644 index 0000000..d31d7e8 --- /dev/null +++ b/src/app/theme-layouts/layout1/components/navbar/style-3/NavbarStyle3Content.tsx @@ -0,0 +1,156 @@ +import FuseScrollbars from '@fuse/core/FuseScrollbars'; +import { styled, ThemeProvider, useTheme } from '@mui/material/styles'; +import ClickAwayListener from '@mui/material/ClickAwayListener'; +import clsx from 'clsx'; +import { memo, useEffect, useState } from 'react'; +import { useAppDispatch } from 'app/store/store'; +import { useSelector } from 'react-redux'; +import FuseNavigation from '@fuse/core/FuseNavigation'; +import { selectContrastMainTheme } from '@fuse/core/FuseSettings/store/fuseSettingsSlice'; +import { useLocation } from 'react-router-dom'; +import useThemeMediaQuery from '@fuse/hooks/useThemeMediaQuery'; +import isUrlInChildren from '@fuse/core/FuseNavigation/isUrlInChildren'; +import { Location } from 'history'; +import { Theme } from '@mui/system'; +import { FuseNavItemType } from '@fuse/core/FuseNavigation/types/FuseNavItemType'; +import { selectNavigation } from 'app/theme-layouts/shared-components/navigation/store/navigationSlice'; +import { navbarCloseMobile } from 'app/theme-layouts/shared-components/navbar/store/navbarSlice'; + +const Root = styled('div')(({ theme }) => ({ + backgroundColor: theme.palette.background.default, + color: theme.palette.text.primary +})); + +type StyledPanelProps = { + theme?: Theme; + opened?: boolean; +}; + +const StyledPanel = styled(FuseScrollbars)(({ theme, opened }) => ({ + backgroundColor: theme.palette.background.default, + color: theme.palette.text.primary, + transition: theme.transitions.create(['opacity'], { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.shortest + }), + opacity: 0, + pointerEvents: 'none', + ...(opened && { + opacity: 1, + pointerEvents: 'initial' + }) +})); + +/** + * Check if the item needs to be opened. + */ +function needsToBeOpened(location: Location, item: FuseNavItemType) { + return location && isUrlInChildren(item, location.pathname); +} + +type NavbarStyle3ContentProps = { className?: string; dense?: number }; + +/** + * The navbar style 3 content. + */ +function NavbarStyle3Content(props: NavbarStyle3ContentProps) { + const { className = '', dense = false } = props; + const isMobile = useThemeMediaQuery((theme) => theme.breakpoints.down('lg')); + const navigation = useSelector(selectNavigation); + const [selectedNavigation, setSelectedNavigation] = useState([]); + const [panelOpen, setPanelOpen] = useState(false); + const theme = useTheme(); + const dispatch = useAppDispatch(); + const contrastTheme = useSelector(selectContrastMainTheme(theme.palette.primary.main)); + const location = useLocation(); + + useEffect(() => { + navigation?.forEach((item) => { + if (needsToBeOpened(location, item)) { + setSelectedNavigation([item]); + } + }); + }, [navigation, location]); + + function handleParentItemClick(selected: FuseNavItemType) { + /** if there is no child item do not set/open panel + */ + if (!selected.children) { + setSelectedNavigation([]); + setPanelOpen(false); + return; + } + + /** + * If navigation already selected toggle panel visibility + */ + if (selectedNavigation[0]?.id === selected.id) { + setPanelOpen(!panelOpen); + } else { + /** + * Set navigation and open panel + */ + setSelectedNavigation([selected]); + setPanelOpen(true); + } + } + + function handleChildItemClick() { + setPanelOpen(false); + if (isMobile) { + dispatch(navbarCloseMobile()); + } + } + + return ( + setPanelOpen(false)}> + + +
+ logo + + + + +
+
+ + {selectedNavigation.length > 0 && ( + + + + )} +
+
+ ); +} + +export default memo(NavbarStyle3Content); diff --git a/src/app/theme-layouts/layout2/Layout2.tsx b/src/app/theme-layouts/layout2/Layout2.tsx new file mode 100644 index 0000000..5884438 --- /dev/null +++ b/src/app/theme-layouts/layout2/Layout2.tsx @@ -0,0 +1,102 @@ +import FuseDialog from '@fuse/core/FuseDialog'; +import { styled } from '@mui/material/styles'; +import FuseMessage from '@fuse/core/FuseMessage'; +import FuseSuspense from '@fuse/core/FuseSuspense'; +import AppContext from 'app/AppContext'; +import clsx from 'clsx'; +import { ReactNode, memo, useContext, Suspense } from 'react'; +import { useSelector } from 'react-redux'; +import { useRoutes } from 'react-router-dom'; +import { selectFuseCurrentLayoutConfig } from '@fuse/core/FuseSettings/store/fuseSettingsSlice'; +import { Layout2ConfigDefaultsType } from 'app/theme-layouts/layout2/Layout2Config'; +import FooterLayout2 from './components/FooterLayout2'; +import LeftSideLayout2 from './components/LeftSideLayout2'; +import NavbarWrapperLayout2 from './components/NavbarWrapperLayout2'; +import RightSideLayout2 from './components/RightSideLayout2'; +import ToolbarLayout2 from './components/ToolbarLayout2'; +import Configurator from '../shared-components/configurator/Configurator'; + +const Root = styled('div')<{ config: Layout2ConfigDefaultsType }>(({ config }) => ({ + ...(config.mode === 'boxed' && { + clipPath: 'inset(0)', + maxWidth: `${config.containerWidth}px`, + margin: '0 auto', + boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)' + }), + ...(config.mode === 'container' && { + '& .container': { + maxWidth: `${config.containerWidth}px`, + width: '100%', + margin: '0 auto' + } + }) +})); + +type Layout2Props = { + children?: ReactNode; +}; + +/** + * The layout 2. + */ +function Layout2(props: Layout2Props) { + const { children } = props; + + const config = useSelector(selectFuseCurrentLayoutConfig) as Layout2ConfigDefaultsType; + const appContext = useContext(AppContext); + const { routes } = appContext; + + return ( + + {config.leftSidePanel.display && } + +
+
+ {config.navbar.display && ( + + )} + + {config.toolbar.display && ( + + )} + +
+ +
+ +
+ {useRoutes(routes)} + + + + + {children} +
+ + {config.footer.display && ( + + )} +
+
+ + {config.rightSidePanel.display && } + +
+ ); +} + +export default memo(Layout2); diff --git a/src/app/theme-layouts/layout2/Layout2Config.ts b/src/app/theme-layouts/layout2/Layout2Config.ts new file mode 100644 index 0000000..37c63f7 --- /dev/null +++ b/src/app/theme-layouts/layout2/Layout2Config.ts @@ -0,0 +1,144 @@ +/** + * The Layout2 Config object. + */ +const Layout2Config = { + title: 'Layout 2 - Horizontal', + defaults: { + mode: 'container', + containerWidth: 1120, + navbar: { + display: true, + style: 'fixed', + folded: true + }, + toolbar: { + display: true, + style: 'static', + position: 'below' + }, + footer: { + display: true, + style: 'fixed' + }, + leftSidePanel: { + display: true + }, + rightSidePanel: { + display: true + } + }, + form: { + mode: { + title: 'Mode', + type: 'radio', + options: [ + { + name: 'Boxed', + value: 'boxed' + }, + { + name: 'Full Width', + value: 'fullwidth' + }, + { + name: 'Container', + value: 'container' + } + ] + }, + containerWidth: { + title: 'Container Width (px)', + type: 'number' + }, + navbar: { + type: 'group', + title: 'Navbar', + children: { + display: { + title: 'Display', + type: 'switch' + }, + style: { + title: 'Style', + type: 'radio', + options: [ + { + name: 'Fixed', + value: 'fixed' + }, + { + name: 'Static', + value: 'static' + } + ] + } + } + }, + toolbar: { + type: 'group', + title: 'Toolbar', + children: { + display: { + title: 'Display', + type: 'switch' + }, + position: { + title: 'Position', + type: 'radio', + options: [ + { + name: 'Above', + value: 'above' + }, + { + name: 'Below', + value: 'below' + } + ] + }, + style: { + title: 'Style', + type: 'radio', + options: [ + { + name: 'Fixed', + value: 'fixed' + }, + { + name: 'Static', + value: 'static' + } + ] + } + } + }, + footer: { + type: 'group', + title: 'Footer', + children: { + display: { + title: 'Display', + type: 'switch' + }, + style: { + title: 'Style', + type: 'radio', + options: [ + { + name: 'Fixed', + value: 'fixed' + }, + { + name: 'Static', + value: 'static' + } + ] + } + } + } + } +}; + +export type Layout2ConfigDefaultsType = (typeof Layout2Config)['defaults']; + +export default Layout2Config; diff --git a/src/app/theme-layouts/layout2/components/FooterLayout2.tsx b/src/app/theme-layouts/layout2/components/FooterLayout2.tsx new file mode 100644 index 0000000..961eca2 --- /dev/null +++ b/src/app/theme-layouts/layout2/components/FooterLayout2.tsx @@ -0,0 +1,36 @@ +import AppBar from '@mui/material/AppBar'; +import { ThemeProvider } from '@mui/material/styles'; +import Toolbar from '@mui/material/Toolbar'; +import clsx from 'clsx'; +import { memo } from 'react'; +import { useSelector } from 'react-redux'; +import { selectFooterTheme } from '@fuse/core/FuseSettings/store/fuseSettingsSlice'; + +type FooterLayout2Props = { + className?: string; +}; + +/** + * The footer layout 2. + */ +function FooterLayout2(props: FooterLayout2Props) { + const { className = '' } = props; + const footerTheme = useSelector(selectFooterTheme); + + return ( + + + + Footer + + + + ); +} + +export default memo(FooterLayout2); diff --git a/src/app/theme-layouts/layout2/components/LeftSideLayout2.tsx b/src/app/theme-layouts/layout2/components/LeftSideLayout2.tsx new file mode 100644 index 0000000..37d8cb1 --- /dev/null +++ b/src/app/theme-layouts/layout2/components/LeftSideLayout2.tsx @@ -0,0 +1,10 @@ +import { memo } from 'react'; + +/** + * The left side layout 2. + */ +function LeftSideLayout2() { + return
; +} + +export default memo(LeftSideLayout2); diff --git a/src/app/theme-layouts/layout2/components/NavbarLayout2.tsx b/src/app/theme-layouts/layout2/components/NavbarLayout2.tsx new file mode 100644 index 0000000..adcd62d --- /dev/null +++ b/src/app/theme-layouts/layout2/components/NavbarLayout2.tsx @@ -0,0 +1,41 @@ +import FuseScrollbars from '@fuse/core/FuseScrollbars'; +import { styled } from '@mui/material/styles'; +import clsx from 'clsx'; +import { memo } from 'react'; +import Navigation from 'app/theme-layouts/shared-components/navigation/Navigation'; +import Logo from '../../shared-components/Logo'; + +const Root = styled('div')(({ theme }) => ({ + backgroundColor: theme.palette.background.default, + color: theme.palette.text.primary +})); + +type NavbarLayout2Props = { + className?: string; +}; + +/** + * The navbar layout 2. + */ +function NavbarLayout2(props: NavbarLayout2Props) { + const { className = '' } = props; + + return ( + +
+
+ +
+ + + + +
+
+ ); +} + +export default memo(NavbarLayout2); diff --git a/src/app/theme-layouts/layout2/components/NavbarMobileLayout2.tsx b/src/app/theme-layouts/layout2/components/NavbarMobileLayout2.tsx new file mode 100644 index 0000000..882804b --- /dev/null +++ b/src/app/theme-layouts/layout2/components/NavbarMobileLayout2.tsx @@ -0,0 +1,76 @@ +import FuseScrollbars from '@fuse/core/FuseScrollbars'; +import { styled } from '@mui/material/styles'; +import clsx from 'clsx'; +import { memo } from 'react'; +import NavbarToggleButton from 'app/theme-layouts/shared-components/navbar/NavbarToggleButton'; +import UserNavbarHeader from '../../shared-components/UserNavbarHeader'; +import Logo from '../../shared-components/Logo'; +import Navigation from '../../shared-components/navigation/Navigation'; + +const Root = styled('div')(({ theme }) => ({ + backgroundColor: theme.palette.background.default, + color: theme.palette.text.primary, + + '& ::-webkit-scrollbar-thumb': { + boxShadow: `inset 0 0 0 20px ${ + theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.24)' : 'rgba(255, 255, 255, 0.24)' + }` + }, + '& ::-webkit-scrollbar-thumb:active': { + boxShadow: `inset 0 0 0 20px ${ + theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.37)' : 'rgba(255, 255, 255, 0.37)' + }` + } +})); + +const StyledContent = styled(FuseScrollbars)(() => ({ + overscrollBehavior: 'contain', + overflowX: 'hidden', + overflowY: 'auto', + WebkitOverflowScrolling: 'touch', + backgroundRepeat: 'no-repeat', + backgroundSize: '100% 40px, 100% 10px', + backgroundAttachment: 'local, scroll' +})); + +type NavbarMobileLayout2Props = { + className?: string; +}; + +/** + * The navbar mobile layout 2. + */ +function NavbarMobileLayout2(props: NavbarMobileLayout2Props) { + const { className = '' } = props; + + return ( + +
+
+ +
+ + +
+ + + + + + +
+ footer logo +
+
+
+ ); +} + +export default memo(NavbarMobileLayout2); diff --git a/src/app/theme-layouts/layout2/components/NavbarToggleFabLayout2.tsx b/src/app/theme-layouts/layout2/components/NavbarToggleFabLayout2.tsx new file mode 100644 index 0000000..fff5d97 --- /dev/null +++ b/src/app/theme-layouts/layout2/components/NavbarToggleFabLayout2.tsx @@ -0,0 +1,30 @@ +import { useAppDispatch } from 'app/store/store'; +import useThemeMediaQuery from '@fuse/hooks/useThemeMediaQuery'; +import NavbarToggleFab from 'app/theme-layouts/shared-components/navbar/NavbarToggleFab'; +import { navbarToggle, navbarToggleMobile } from 'app/theme-layouts/shared-components/navbar/store/navbarSlice'; + +type NavbarToggleFabLayout2Props = { + className?: string; +}; + +/** + * The navbar toggle fab layout 2. + */ +function NavbarToggleFabLayout2(props: NavbarToggleFabLayout2Props) { + const { className } = props; + + const isMobile = useThemeMediaQuery((theme) => theme.breakpoints.down('lg')); + + const dispatch = useAppDispatch(); + + return ( + { + dispatch(isMobile ? navbarToggleMobile() : navbarToggle()); + }} + /> + ); +} + +export default NavbarToggleFabLayout2; diff --git a/src/app/theme-layouts/layout2/components/NavbarWrapperLayout2.tsx b/src/app/theme-layouts/layout2/components/NavbarWrapperLayout2.tsx new file mode 100644 index 0000000..16c56cf --- /dev/null +++ b/src/app/theme-layouts/layout2/components/NavbarWrapperLayout2.tsx @@ -0,0 +1,91 @@ +import Hidden from '@mui/material/Hidden'; +import { styled, ThemeProvider } from '@mui/material/styles'; +import SwipeableDrawer from '@mui/material/SwipeableDrawer'; +import { memo, useEffect } from 'react'; +import { useSelector } from 'react-redux'; +import { useAppDispatch } from 'app/store/store'; +import { selectFuseCurrentLayoutConfig, selectNavbarTheme } from '@fuse/core/FuseSettings/store/fuseSettingsSlice'; +import { Layout2ConfigDefaultsType } from 'app/theme-layouts/layout2/Layout2Config'; +import NavbarToggleFabLayout2 from 'app/theme-layouts/layout2/components/NavbarToggleFabLayout2'; +import { useLocation } from 'react-router'; +import useThemeMediaQuery from '@fuse/hooks/useThemeMediaQuery'; +import { + navbarCloseMobile, + navbarSlice, + selectFuseNavbar +} from 'app/theme-layouts/shared-components/navbar/store/navbarSlice'; +import withSlices from 'app/store/withSlices'; +import NavbarLayout2 from './NavbarLayout2'; +import NavbarMobileLayout2 from './NavbarMobileLayout2'; + +const StyledSwipeableDrawer = styled(SwipeableDrawer)(({ theme }) => ({ + '& > .MuiDrawer-paper': { + height: '100%', + flexDirection: 'column', + flex: '1 1 auto', + width: 280, + minWidth: 280, + transition: theme.transitions.create(['width', 'min-width'], { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.shorter + }) + } +})); + +type NavbarWrapperLayout2Props = { + className?: string; +}; + +/** + * The navbar wrapper layout 2. + */ +function NavbarWrapperLayout2(props: NavbarWrapperLayout2Props) { + const { className = '' } = props; + const dispatch = useAppDispatch(); + const config = useSelector(selectFuseCurrentLayoutConfig) as Layout2ConfigDefaultsType; + const navbarTheme = useSelector(selectNavbarTheme); + const navbar = useSelector(selectFuseNavbar); + const location = useLocation(); + const isMobile = useThemeMediaQuery((theme) => theme.breakpoints.down('lg')); + const { pathname } = location; + + useEffect(() => { + if (isMobile) { + dispatch(navbarCloseMobile()); + } + }, [pathname, isMobile]); + + return ( + <> + + + + + + + dispatch(navbarCloseMobile())} + onOpen={() => {}} + disableSwipeToOpen + className={className} + ModalProps={{ + keepMounted: true // Better open performance on mobile. + }} + > + + + + + {config.navbar.display && !config.toolbar.display && ( + + + + )} + + ); +} + +export default withSlices([navbarSlice])(memo(NavbarWrapperLayout2)); diff --git a/src/app/theme-layouts/layout2/components/RightSideLayout2.tsx b/src/app/theme-layouts/layout2/components/RightSideLayout2.tsx new file mode 100644 index 0000000..3d13e51 --- /dev/null +++ b/src/app/theme-layouts/layout2/components/RightSideLayout2.tsx @@ -0,0 +1,16 @@ +import { lazy, memo, Suspense } from 'react'; + +const QuickPanel = lazy(() => import('app/theme-layouts/shared-components/quickPanel/QuickPanel')); + +/** + * The right side layout 2. + */ +function RightSideLayout2() { + return ( + + + + ); +} + +export default memo(RightSideLayout2); diff --git a/src/app/theme-layouts/layout2/components/ToolbarLayout2.tsx b/src/app/theme-layouts/layout2/components/ToolbarLayout2.tsx new file mode 100644 index 0000000..eba5ac2 --- /dev/null +++ b/src/app/theme-layouts/layout2/components/ToolbarLayout2.tsx @@ -0,0 +1,67 @@ +import { ThemeProvider } from '@mui/material/styles'; +import AppBar from '@mui/material/AppBar'; +import Hidden from '@mui/material/Hidden'; +import Toolbar from '@mui/material/Toolbar'; +import clsx from 'clsx'; +import { memo } from 'react'; +import { useSelector } from 'react-redux'; +import { selectFuseCurrentLayoutConfig, selectToolbarTheme } from '@fuse/core/FuseSettings/store/fuseSettingsSlice'; +import { Layout2ConfigDefaultsType } from 'app/theme-layouts/layout2/Layout2Config'; +import NavbarToggleButton from 'app/theme-layouts/shared-components/navbar/NavbarToggleButton'; +import AdjustFontSize from '../../shared-components/AdjustFontSize'; +import FullScreenToggle from '../../shared-components/FullScreenToggle'; +import LanguageSwitcher from '../../shared-components/LanguageSwitcher'; +import NavigationShortcuts from '../../shared-components/navigation/NavigationShortcuts'; +import NavigationSearch from '../../shared-components/navigation/NavigationSearch'; +import UserMenu from '../../shared-components/UserMenu'; +import QuickPanelToggleButton from '../../shared-components/quickPanel/QuickPanelToggleButton'; + +type ToolbarLayout2Props = { + className?: string; +}; + +/** + * The toolbar layout 2. + */ +function ToolbarLayout2(props: ToolbarLayout2Props) { + const { className = '' } = props; + + const config = useSelector(selectFuseCurrentLayoutConfig) as Layout2ConfigDefaultsType; + const toolbarTheme = useSelector(selectToolbarTheme); + + return ( + + + + {config.navbar.display && ( + + + + )} + +
+ + + +
+ +
+ + + + + + +
+
+
+
+ ); +} + +export default memo(ToolbarLayout2); diff --git a/src/app/theme-layouts/layout3/Layout3.tsx b/src/app/theme-layouts/layout3/Layout3.tsx new file mode 100644 index 0000000..d15c5f6 --- /dev/null +++ b/src/app/theme-layouts/layout3/Layout3.tsx @@ -0,0 +1,104 @@ +import FuseDialog from '@fuse/core/FuseDialog'; +import { styled } from '@mui/material/styles'; +import FuseMessage from '@fuse/core/FuseMessage'; +import FuseSuspense from '@fuse/core/FuseSuspense'; +import clsx from 'clsx'; +import { memo, ReactNode, Suspense, useContext } from 'react'; +import { useSelector } from 'react-redux'; +import { useRoutes } from 'react-router-dom'; +import AppContext from 'app/AppContext'; +import { selectFuseCurrentLayoutConfig } from '@fuse/core/FuseSettings/store/fuseSettingsSlice'; +import Configurator from 'app/theme-layouts/shared-components/configurator/Configurator'; +import FooterLayout3 from './components/FooterLayout3'; +import LeftSideLayout3 from './components/LeftSideLayout3'; +import NavbarWrapperLayout3 from './components/NavbarWrapperLayout3'; +import RightSideLayout3 from './components/RightSideLayout3'; +import ToolbarLayout3 from './components/ToolbarLayout3'; +import { Layout3ConfigDefaultsType } from './Layout3Config'; + +const Root = styled('div')<{ config: Layout3ConfigDefaultsType }>(({ config }) => ({ + ...(config.mode === 'boxed' && { + clipPath: 'inset(0)', + maxWidth: `${config.containerWidth}px`, + margin: '0 auto', + boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)' + }), + ...(config.mode === 'container' && { + '& .container': { + maxWidth: `${config.containerWidth}px`, + width: '100%', + margin: '0 auto' + } + }) +})); + +type Layout3Props = { + children?: ReactNode; +}; + +/** + * The layout 3. + */ +function Layout3(props: Layout3Props) { + const { children } = props; + + const config = useSelector(selectFuseCurrentLayoutConfig) as Layout3ConfigDefaultsType; + + const appContext = useContext(AppContext); + + const { routes } = appContext; + + return ( + + {config.leftSidePanel.display && } + +
+
+ {config.navbar.display && ( + + )} + + {config.toolbar.display && ( + + )} + +
+ +
+ +
+ {useRoutes(routes)} + + + + + {children} +
+ + {config.footer.display && ( + + )} +
+
+ + {config.rightSidePanel.display && } + +
+ ); +} + +export default memo(Layout3); diff --git a/src/app/theme-layouts/layout3/Layout3Config.ts b/src/app/theme-layouts/layout3/Layout3Config.ts new file mode 100644 index 0000000..9de7b34 --- /dev/null +++ b/src/app/theme-layouts/layout3/Layout3Config.ts @@ -0,0 +1,145 @@ +/** + * The Layout3 Config object. + */ +const Layout3Config = { + title: 'Layout 3 - Horizontal', + defaults: { + mode: 'container', + containerWidth: 1120, + scroll: 'content', + navbar: { + display: true, + style: 'fixed', + folded: true + }, + toolbar: { + display: true, + style: 'static', + position: 'below' + }, + footer: { + display: true, + style: 'fixed' + }, + leftSidePanel: { + display: true + }, + rightSidePanel: { + display: true + } + }, + form: { + mode: { + title: 'Mode', + type: 'radio', + options: [ + { + name: 'Boxed', + value: 'boxed' + }, + { + name: 'Full Width', + value: 'fullwidth' + }, + { + name: 'Container', + value: 'container' + } + ] + }, + containerWidth: { + title: 'Container Width (px)', + type: 'number' + }, + navbar: { + type: 'group', + title: 'Navbar', + children: { + display: { + title: 'Display', + type: 'switch' + }, + style: { + title: 'Style', + type: 'radio', + options: [ + { + name: 'Fixed', + value: 'fixed' + }, + { + name: 'Static', + value: 'static' + } + ] + } + } + }, + toolbar: { + type: 'group', + title: 'Toolbar', + children: { + display: { + title: 'Display', + type: 'switch' + }, + position: { + title: 'Position', + type: 'radio', + options: [ + { + name: 'Above', + value: 'above' + }, + { + name: 'Below', + value: 'below' + } + ] + }, + style: { + title: 'Style', + type: 'radio', + options: [ + { + name: 'Fixed', + value: 'fixed' + }, + { + name: 'Static', + value: 'static' + } + ] + } + } + }, + footer: { + type: 'group', + title: 'Footer', + children: { + display: { + title: 'Display', + type: 'switch' + }, + style: { + title: 'Style', + type: 'radio', + options: [ + { + name: 'Fixed', + value: 'fixed' + }, + { + name: 'Static', + value: 'static' + } + ] + } + } + } + } +}; + +export type Layout3ConfigDefaultsType = (typeof Layout3Config)['defaults']; + +export default Layout3Config; diff --git a/src/app/theme-layouts/layout3/components/FooterLayout3.tsx b/src/app/theme-layouts/layout3/components/FooterLayout3.tsx new file mode 100644 index 0000000..7181fd1 --- /dev/null +++ b/src/app/theme-layouts/layout3/components/FooterLayout3.tsx @@ -0,0 +1,37 @@ +import AppBar from '@mui/material/AppBar'; +import { ThemeProvider } from '@mui/material/styles'; +import Toolbar from '@mui/material/Toolbar'; +import clsx from 'clsx'; +import { memo } from 'react'; +import { useSelector } from 'react-redux'; +import { selectFooterTheme } from '@fuse/core/FuseSettings/store/fuseSettingsSlice'; + +type FooterLayout3Props = { + className?: string; +}; + +/** + * The footer layout 3. + */ +function FooterLayout3(props: FooterLayout3Props) { + const { className = '' } = props; + + const footerTheme = useSelector(selectFooterTheme); + + return ( + + + + Footer + + + + ); +} + +export default memo(FooterLayout3); diff --git a/src/app/theme-layouts/layout3/components/LeftSideLayout3.tsx b/src/app/theme-layouts/layout3/components/LeftSideLayout3.tsx new file mode 100644 index 0000000..dd3cbb1 --- /dev/null +++ b/src/app/theme-layouts/layout3/components/LeftSideLayout3.tsx @@ -0,0 +1,19 @@ +import FuseSidePanel from '@fuse/core/FuseSidePanel'; +import { memo } from 'react'; +import NavigationShortcuts from '../../shared-components/navigation/NavigationShortcuts'; + +/** + * The left side layout 3. + */ +function LeftSideLayout3() { + return ( + + + + ); +} + +export default memo(LeftSideLayout3); diff --git a/src/app/theme-layouts/layout3/components/NavbarLayout3.tsx b/src/app/theme-layouts/layout3/components/NavbarLayout3.tsx new file mode 100644 index 0000000..da8bd12 --- /dev/null +++ b/src/app/theme-layouts/layout3/components/NavbarLayout3.tsx @@ -0,0 +1,37 @@ +import FuseScrollbars from '@fuse/core/FuseScrollbars'; +import { styled } from '@mui/material/styles'; +import clsx from 'clsx'; +import { memo } from 'react'; +import Navigation from '../../shared-components/navigation/Navigation'; + +const Root = styled('div')(({ theme }) => ({ + backgroundColor: theme.palette.background.default, + color: theme.palette.text.primary +})); + +type NavbarLayout3Props = { + className?: string; +}; + +/** + * The navbar layout 3. + */ +function NavbarLayout3(props: NavbarLayout3Props) { + const { className = '' } = props; + + return ( + +
+ + + +
+
+ ); +} + +export default memo(NavbarLayout3); diff --git a/src/app/theme-layouts/layout3/components/NavbarMobileLayout3.tsx b/src/app/theme-layouts/layout3/components/NavbarMobileLayout3.tsx new file mode 100644 index 0000000..e702083 --- /dev/null +++ b/src/app/theme-layouts/layout3/components/NavbarMobileLayout3.tsx @@ -0,0 +1,76 @@ +import FuseScrollbars from '@fuse/core/FuseScrollbars'; +import { styled } from '@mui/material/styles'; +import clsx from 'clsx'; +import { memo } from 'react'; +import NavbarToggleButton from 'app/theme-layouts/shared-components/navbar/NavbarToggleButton'; +import Navigation from '../../shared-components/navigation/Navigation'; +import UserNavbarHeader from '../../shared-components/UserNavbarHeader'; +import Logo from '../../shared-components/Logo'; + +const Root = styled('div')(({ theme }) => ({ + backgroundColor: theme.palette.background.default, + color: theme.palette.text.primary, + + '& ::-webkit-scrollbar-thumb': { + boxShadow: `inset 0 0 0 20px ${ + theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.24)' : 'rgba(255, 255, 255, 0.24)' + }` + }, + '& ::-webkit-scrollbar-thumb:active': { + boxShadow: `inset 0 0 0 20px ${ + theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.37)' : 'rgba(255, 255, 255, 0.37)' + }` + } +})); + +const StyledContent = styled(FuseScrollbars)(() => ({ + overscrollBehavior: 'contain', + overflowX: 'hidden', + overflowY: 'auto', + WebkitOverflowScrolling: 'touch', + backgroundRepeat: 'no-repeat', + backgroundSize: '100% 40px, 100% 10px', + backgroundAttachment: 'local, scroll' +})); + +type NavbarMobileLayout3Props = { + className?: string; +}; + +/** + * The navbar mobile layout 3. + */ +function NavbarMobileLayout3(props: NavbarMobileLayout3Props) { + const { className = '' } = props; + + return ( + +
+
+ +
+ + +
+ + + + + + +
+ footer logo +
+
+
+ ); +} + +export default memo(NavbarMobileLayout3); diff --git a/src/app/theme-layouts/layout3/components/NavbarWrapperLayout3.tsx b/src/app/theme-layouts/layout3/components/NavbarWrapperLayout3.tsx new file mode 100644 index 0000000..f4b1df2 --- /dev/null +++ b/src/app/theme-layouts/layout3/components/NavbarWrapperLayout3.tsx @@ -0,0 +1,91 @@ +import Hidden from '@mui/material/Hidden'; +import { styled, ThemeProvider } from '@mui/material/styles'; +import SwipeableDrawer from '@mui/material/SwipeableDrawer'; +import { memo, useEffect } from 'react'; +import { useSelector } from 'react-redux'; +import { useAppDispatch } from 'app/store/store'; +import { selectFuseCurrentLayoutConfig, selectNavbarTheme } from '@fuse/core/FuseSettings/store/fuseSettingsSlice'; +import { Layout3ConfigDefaultsType } from 'app/theme-layouts/layout3/Layout3Config'; +import { useLocation } from 'react-router'; +import useThemeMediaQuery from '@fuse/hooks/useThemeMediaQuery'; +import { + navbarCloseMobile, + navbarSlice, + selectFuseNavbar +} from 'app/theme-layouts/shared-components/navbar/store/navbarSlice'; +import NavbarToggleFab from 'app/theme-layouts/shared-components/navbar/NavbarToggleFab'; +import withSlices from 'app/store/withSlices'; +import NavbarLayout3 from './NavbarLayout3'; +import NavbarMobileLayout3 from './NavbarMobileLayout3'; + +const StyledSwipeableDrawer = styled(SwipeableDrawer)(({ theme }) => ({ + '& > .MuiDrawer-paper': { + height: '100%', + flexDirection: 'column', + flex: '1 1 auto', + width: 280, + minWidth: 280, + transition: theme.transitions.create(['width', 'min-width'], { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.shorter + }) + } +})); + +type NavbarWrapperLayout3Props = { + className?: string; +}; + +/** + * The navbar wrapper layout 3. + */ +function NavbarWrapperLayout3(props: NavbarWrapperLayout3Props) { + const { className = '' } = props; + + const dispatch = useAppDispatch(); + const config = useSelector(selectFuseCurrentLayoutConfig) as Layout3ConfigDefaultsType; + const navbarTheme = useSelector(selectNavbarTheme); + const navbar = useSelector(selectFuseNavbar); + const location = useLocation(); + const isMobile = useThemeMediaQuery((theme) => theme.breakpoints.down('lg')); + const { pathname } = location; + + useEffect(() => { + if (isMobile) { + dispatch(navbarCloseMobile()); + } + }, [pathname, isMobile]); + + return ( + <> + + + + + + + dispatch(navbarCloseMobile())} + onOpen={() => {}} + disableSwipeToOpen + ModalProps={{ + keepMounted: true // Better open performance on mobile. + }} + > + + + + + {config.navbar.display && !config.toolbar.display && ( + + + + )} + + ); +} + +export default withSlices([navbarSlice])(memo(NavbarWrapperLayout3)); diff --git a/src/app/theme-layouts/layout3/components/RightSideLayout3.tsx b/src/app/theme-layouts/layout3/components/RightSideLayout3.tsx new file mode 100644 index 0000000..cd1257a --- /dev/null +++ b/src/app/theme-layouts/layout3/components/RightSideLayout3.tsx @@ -0,0 +1,16 @@ +import { Suspense, lazy, memo } from 'react'; + +const QuickPanel = lazy(() => import('app/theme-layouts/shared-components/quickPanel/QuickPanel')); + +/** + * The right side layout 3. + */ +function RightSideLayout3() { + return ( + + + + ); +} + +export default memo(RightSideLayout3); diff --git a/src/app/theme-layouts/layout3/components/ToolbarLayout3.tsx b/src/app/theme-layouts/layout3/components/ToolbarLayout3.tsx new file mode 100644 index 0000000..759f5c3 --- /dev/null +++ b/src/app/theme-layouts/layout3/components/ToolbarLayout3.tsx @@ -0,0 +1,77 @@ +import { ThemeProvider } from '@mui/material/styles'; +import AppBar from '@mui/material/AppBar'; +import Hidden from '@mui/material/Hidden'; +import Toolbar from '@mui/material/Toolbar'; +import clsx from 'clsx'; +import { memo } from 'react'; +import { useSelector } from 'react-redux'; +import { selectFuseCurrentLayoutConfig, selectToolbarTheme } from '@fuse/core/FuseSettings/store/fuseSettingsSlice'; +import NavbarToggleButton from 'app/theme-layouts/shared-components/navbar/NavbarToggleButton'; +import AdjustFontSize from '../../shared-components/AdjustFontSize'; +import FullScreenToggle from '../../shared-components/FullScreenToggle'; +import LanguageSwitcher from '../../shared-components/LanguageSwitcher'; +import NavigationSearch from '../../shared-components/navigation/NavigationSearch'; +import UserMenu from '../../shared-components/UserMenu'; +import QuickPanelToggleButton from '../../shared-components/quickPanel/QuickPanelToggleButton'; +import Logo from '../../shared-components/Logo'; +import { Layout3ConfigDefaultsType } from '../Layout3Config'; + +type ToolbarLayout3Props = { + className?: string; +}; + +/** + * The toolbar layout 3. + */ +function ToolbarLayout3(props: ToolbarLayout3Props) { + const { className = '' } = props; + const config = useSelector(selectFuseCurrentLayoutConfig) as Layout3ConfigDefaultsType; + const toolbarTheme = useSelector(selectToolbarTheme); + + return ( + + + + {config.navbar.display && ( + + + + )} + + +
+ +
+
+ +
+ + + +
+ +
+ + + + + + + + +
+
+
+
+ ); +} + +export default memo(ToolbarLayout3); diff --git a/src/app/theme-layouts/shared-components/AdjustFontSize.tsx b/src/app/theme-layouts/shared-components/AdjustFontSize.tsx new file mode 100644 index 0000000..0f55304 --- /dev/null +++ b/src/app/theme-layouts/shared-components/AdjustFontSize.tsx @@ -0,0 +1,101 @@ +import { MouseEvent, useState } from 'react'; +import Slider from '@mui/material/Slider'; +import IconButton from '@mui/material/IconButton'; +import Typography from '@mui/material/Typography'; +import Menu from '@mui/material/Menu'; +import clsx from 'clsx'; +import FuseSvgIcon from '@fuse/core/FuseSvgIcon'; + +const marks = [ + { value: 0.7, label: '70%' }, + { value: 0.8, label: '80%' }, + { value: 0.9, label: '90%' }, + { value: 1, label: '100%' }, + { value: 1.1, label: '110%' }, + { value: 1.2, label: '120%' }, + { value: 1.3, label: '130%' } +]; + +type AdjustFontSizeProps = { + className?: string; +}; + +/** + * The adjust font size. + */ +function AdjustFontSize(props: AdjustFontSizeProps) { + const { className = '' } = props; + + const [anchorEl, setAnchorEl] = useState(null); + const [fontSize, setFontSize] = useState(1); + + function changeHtmlFontSize() { + const html = document.getElementsByTagName('html')[0]; + html.style.fontSize = `${fontSize * 62.5}%`; + } + + const handleClick = (event: MouseEvent) => { + setAnchorEl(event.currentTarget); + }; + + const handleClose = () => { + setAnchorEl(null); + }; + + return ( +
+ + material-outline:format_size + + +
+ + + material-outline:format_size + + Font Size + + setFontSize(value as number)} + onChangeCommitted={changeHtmlFontSize} + /> +
+
+
+ ); +} + +export default AdjustFontSize; diff --git a/src/app/theme-layouts/shared-components/DemoLayoutFooterContent.tsx b/src/app/theme-layouts/shared-components/DemoLayoutFooterContent.tsx new file mode 100644 index 0000000..6afb38b --- /dev/null +++ b/src/app/theme-layouts/shared-components/DemoLayoutFooterContent.tsx @@ -0,0 +1,23 @@ +import PoweredByLinks from './PoweredByLinks'; +import DocumentationButton from './DocumentationButton'; +import PurchaseButton from './PurchaseButton'; + +/** + * The demo layout footer content. + */ +function DemoLayoutFooterContent() { + return ( + <> +
+ + +
+ +
+ +
+ + ); +} + +export default DemoLayoutFooterContent; diff --git a/src/app/theme-layouts/shared-components/DocumentationButton.tsx b/src/app/theme-layouts/shared-components/DocumentationButton.tsx new file mode 100644 index 0000000..4b097b0 --- /dev/null +++ b/src/app/theme-layouts/shared-components/DocumentationButton.tsx @@ -0,0 +1,30 @@ +import Button from '@mui/material/Button'; +import { Link } from 'react-router-dom'; +import FuseSvgIcon from '@fuse/core/FuseSvgIcon'; + +type DocumentationButtonProps = { + className?: string; +}; + +/** + * The documentation button. + */ +function DocumentationButton(props: DocumentationButtonProps) { + const { className = '' } = props; + + return ( + + ); +} + +export default DocumentationButton; diff --git a/src/app/theme-layouts/shared-components/FullScreenToggle.tsx b/src/app/theme-layouts/shared-components/FullScreenToggle.tsx new file mode 100644 index 0000000..2fb1594 --- /dev/null +++ b/src/app/theme-layouts/shared-components/FullScreenToggle.tsx @@ -0,0 +1,125 @@ +import Tooltip from '@mui/material/Tooltip'; +import clsx from 'clsx'; +import { useEffect, useLayoutEffect, useState } from 'react'; +import IconButton from '@mui/material/IconButton'; +import FuseSvgIcon from '@fuse/core/FuseSvgIcon'; + +const useEnhancedEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect; + +type FullScreenDocumentType = Document & { + mozCancelFullScreen?: () => void; + msExitFullscreen?: () => void; + webkitExitFullscreen?: () => void; + mozFullScreenElement?: Element | null; + msFullscreenElement?: Element | null; + webkitFullscreenElement?: Element | null; +}; + +type FullScreenHTMLElementType = HTMLElement & { + mozRequestFullScreen?: () => void; + webkitRequestFullscreen?: () => void; + msRequestFullscreen?: () => void; +}; + +type HeaderFullScreenToggleProps = { + className?: string; +}; + +/** + * The header full screen toggle. + */ +function HeaderFullScreenToggle(props: HeaderFullScreenToggleProps) { + const { className = '' } = props; + + const [isFullScreen, setIsFullScreen] = useState(false); + + useEnhancedEffect(() => { + document.onfullscreenchange = () => + setIsFullScreen((document as FullScreenDocumentType)[getBrowserFullscreenElementProp()] != null); + + return () => { + document.onfullscreenchange = null; + }; + }); + + function getBrowserFullscreenElementProp(): keyof FullScreenDocumentType { + const doc: FullScreenDocumentType = document as FullScreenDocumentType; + + if (typeof doc.fullscreenElement !== 'undefined') { + return 'fullscreenElement'; + } + if (typeof doc.mozFullScreenElement !== 'undefined') { + return 'mozFullScreenElement'; + } + if (typeof doc.msFullscreenElement !== 'undefined') { + return 'msFullscreenElement'; + } + if (typeof doc.webkitFullscreenElement !== 'undefined') { + return 'webkitFullscreenElement'; + } + throw new Error('fullscreenElement is not supported by this browser'); + } + + /* View in fullscreen */ + function openFullscreen() { + const elem: FullScreenHTMLElementType = document.documentElement; + + if (elem.requestFullscreen) { + elem.requestFullscreen(); + } else if (elem.mozRequestFullScreen) { + /* Firefox */ + elem.mozRequestFullScreen(); + } else if (elem.webkitRequestFullscreen) { + /* Chrome, Safari and Opera */ + elem.webkitRequestFullscreen(); + } else if (elem.msRequestFullscreen) { + /* IE/Edge */ + elem.msRequestFullscreen(); + } + } + + /* Close fullscreen */ + function closeFullscreen() { + const doc: FullScreenDocumentType = document; + + if (doc.exitFullscreen) { + doc.exitFullscreen(); + } else if (doc.mozCancelFullScreen) { + /* Firefox */ + doc.mozCancelFullScreen(); + } else if (doc.webkitExitFullscreen) { + /* Chrome, Safari and Opera */ + doc.webkitExitFullscreen(); + } else if (doc.msExitFullscreen) { + /* IE/Edge */ + doc.msExitFullscreen(); + } + } + + function toggleFullScreen() { + const doc: FullScreenDocumentType = document; + + if (doc.fullscreenElement || doc.webkitFullscreenElement || doc.mozFullScreenElement) { + closeFullscreen(); + } else { + openFullscreen(); + } + } + + return ( + + + heroicons-outline:arrows-expand + + + ); +} + +export default HeaderFullScreenToggle; diff --git a/src/app/theme-layouts/shared-components/FuseSettingsViewerDialog.tsx b/src/app/theme-layouts/shared-components/FuseSettingsViewerDialog.tsx new file mode 100644 index 0000000..9e3b56d --- /dev/null +++ b/src/app/theme-layouts/shared-components/FuseSettingsViewerDialog.tsx @@ -0,0 +1,88 @@ +import { useState } from 'react'; +import clsx from 'clsx'; +import Button from '@mui/material/Button'; +import FuseSvgIcon from '@fuse/core/FuseSvgIcon'; +import Dialog from '@mui/material/Dialog'; +import { useSelector } from 'react-redux'; +import { selectFuseCurrentSettings } from '@fuse/core/FuseSettings/store/fuseSettingsSlice'; +import FuseHighlight from '@fuse/core/FuseHighlight'; +import DialogTitle from '@mui/material/DialogTitle'; +import DialogActions from '@mui/material/DialogActions'; +import DialogContent from '@mui/material/DialogContent'; +import qs from 'qs'; +import Typography from '@mui/material/Typography'; + +type FuseSettingsViewerDialogProps = { + className?: string; +}; + +/** + * The settings viewer dialog. + */ +function FuseSettingsViewerDialog(props: FuseSettingsViewerDialogProps) { + const { className = '' } = props; + + const [openDialog, setOpenDialog] = useState(false); + const settings = useSelector(selectFuseCurrentSettings); + + const jsonStringifiedSettings = JSON.stringify(settings); + const queryString = qs.stringify({ + defaultSettings: jsonStringifiedSettings, + strictNullHandling: true + }); + + function handleOpenDialog() { + setOpenDialog(true); + } + + function handleCloseDialog() { + setOpenDialog(false); + } + + return ( +
+ + + + Fuse Settings Viewer + + JSON + + + {JSON.stringify(settings, null, 2)} + + + Query Params + + {queryString} + + + + + +
+ ); +} + +export default FuseSettingsViewerDialog; diff --git a/src/app/theme-layouts/shared-components/LanguageSwitcher.tsx b/src/app/theme-layouts/shared-components/LanguageSwitcher.tsx new file mode 100644 index 0000000..bc34747 --- /dev/null +++ b/src/app/theme-layouts/shared-components/LanguageSwitcher.tsx @@ -0,0 +1,101 @@ +import Button from '@mui/material/Button'; +import ListItemIcon from '@mui/material/ListItemIcon'; +import ListItemText from '@mui/material/ListItemText'; +import MenuItem from '@mui/material/MenuItem'; +import Popover from '@mui/material/Popover'; +import Typography from '@mui/material/Typography'; +import { useState } from 'react'; +import { useSelector } from 'react-redux'; +import { Link } from 'react-router-dom'; +import { changeLanguage, LanguageType, selectCurrentLanguage, selectLanguages } from 'app/store/i18nSlice'; +import { useAppDispatch } from 'app/store/store'; + +/** + * The language switcher. + */ +function LanguageSwitcher() { + const currentLanguage = useSelector(selectCurrentLanguage); + const languages = useSelector(selectLanguages); + const [menu, setMenu] = useState(null); + const dispatch = useAppDispatch(); + + const langMenuClick = (event: React.MouseEvent) => { + setMenu(event.currentTarget); + }; + + const langMenuClose = () => { + setMenu(null); + }; + + function handleLanguageChange(lng: LanguageType) { + dispatch(changeLanguage(lng.id)); + + langMenuClose(); + } + + return ( + <> + + + + {languages.map((lng) => ( + handleLanguageChange(lng)} + > + + {lng.title} + + + + ))} + + + + + + + ); +} + +export default LanguageSwitcher; diff --git a/src/app/theme-layouts/shared-components/Logo.tsx b/src/app/theme-layouts/shared-components/Logo.tsx new file mode 100644 index 0000000..151c299 --- /dev/null +++ b/src/app/theme-layouts/shared-components/Logo.tsx @@ -0,0 +1,53 @@ +import { styled } from '@mui/material/styles'; + +const Root = styled('div')(({ theme }) => ({ + '& > .logo-icon': { + transition: theme.transitions.create(['width', 'height'], { + duration: theme.transitions.duration.shortest, + easing: theme.transitions.easing.easeInOut + }) + }, + '& > .badge': { + transition: theme.transitions.create('opacity', { + duration: theme.transitions.duration.shortest, + easing: theme.transitions.easing.easeInOut + }) + } +})); + +/** + * The logo component. + */ +function Logo() { + return ( + + logo +
+
+ react + React +
+
+ TypeScript +
+
+
+ ); +} + +export default Logo; diff --git a/src/app/theme-layouts/shared-components/PoweredByLinks.tsx b/src/app/theme-layouts/shared-components/PoweredByLinks.tsx new file mode 100644 index 0000000..af0964a --- /dev/null +++ b/src/app/theme-layouts/shared-components/PoweredByLinks.tsx @@ -0,0 +1,151 @@ +import IconButton from '@mui/material/IconButton'; +import Tooltip from '@mui/material/Tooltip'; +import { motion } from 'framer-motion'; + +/** + * The powered by links. + */ +function PoweredByLinks() { + const container = { + show: { + transition: { + staggerChildren: 0.04 + } + } + }; + + const item = { + hidden: { opacity: 0, scale: 0.6 }, + show: { opacity: 1, scale: 1 } + }; + + return ( + + + + react + + + + + redux + + + + + material ui + + + + + + + + + + + + + + + ` + }} + /> + + + + + + vite + + + + ); +} + +export default PoweredByLinks; diff --git a/src/app/theme-layouts/shared-components/PurchaseButton.tsx b/src/app/theme-layouts/shared-components/PurchaseButton.tsx new file mode 100644 index 0000000..4519ec6 --- /dev/null +++ b/src/app/theme-layouts/shared-components/PurchaseButton.tsx @@ -0,0 +1,32 @@ +import Button from '@mui/material/Button'; +import clsx from 'clsx'; +import FuseSvgIcon from '@fuse/core/FuseSvgIcon'; + +type PurchaseButtonProps = { + className?: string; +}; + +/** + * The purchase button. + */ +function PurchaseButton(props: PurchaseButtonProps) { + const { className = '' } = props; + + return ( + + ); +} + +export default PurchaseButton; diff --git a/src/app/theme-layouts/shared-components/UserMenu.tsx b/src/app/theme-layouts/shared-components/UserMenu.tsx new file mode 100644 index 0000000..62d1fef --- /dev/null +++ b/src/app/theme-layouts/shared-components/UserMenu.tsx @@ -0,0 +1,138 @@ +import Avatar from '@mui/material/Avatar'; +import Button from '@mui/material/Button'; +import ListItemIcon from '@mui/material/ListItemIcon'; +import ListItemText from '@mui/material/ListItemText'; +import MenuItem from '@mui/material/MenuItem'; +import Popover from '@mui/material/Popover'; +import Typography from '@mui/material/Typography'; +import { useState } from 'react'; +import { useSelector } from 'react-redux'; +import { Link } from 'react-router-dom'; +import FuseSvgIcon from '@fuse/core/FuseSvgIcon'; +import { selectUser } from 'src/app/auth/user/store/userSlice'; +import { useAuth } from 'src/app/auth/AuthRouteProvider'; +import { darken } from '@mui/material/styles'; + +/** + * The user menu. + */ +function UserMenu() { + const user = useSelector(selectUser); + const { signOut } = useAuth(); + const [userMenu, setUserMenu] = useState(null); + + const userMenuClick = (event: React.MouseEvent) => { + setUserMenu(event.currentTarget); + }; + + const userMenuClose = () => { + setUserMenu(null); + }; + + if (!user) { + return null; + } + + return ( + <> + + + + {!user.role || user.role.length === 0 ? ( + <> + + + heroicons-outline:lock-closed + + + + + + heroicons-outline:user-add + + + + + ) : ( + { + signOut(); + }} + > + + heroicons-outline:logout + + + + )} + + + ); +} + +export default UserMenu; diff --git a/src/app/theme-layouts/shared-components/UserNavbarHeader.tsx b/src/app/theme-layouts/shared-components/UserNavbarHeader.tsx new file mode 100644 index 0000000..903cfc4 --- /dev/null +++ b/src/app/theme-layouts/shared-components/UserNavbarHeader.tsx @@ -0,0 +1,62 @@ +import { darken, styled } from '@mui/material/styles'; +import Avatar from '@mui/material/Avatar'; +import Typography from '@mui/material/Typography'; +import { useSelector } from 'react-redux'; +import { selectUser } from 'src/app/auth/user/store/userSlice'; + +const Root = styled('div')(({ theme }) => ({ + '& .username, & .email': { + transition: theme.transitions.create('opacity', { + duration: theme.transitions.duration.shortest, + easing: theme.transitions.easing.easeInOut + }) + }, + + '& .avatar': { + background: darken(theme.palette.background.default, 0.05), + transition: theme.transitions.create('all', { + duration: theme.transitions.duration.shortest, + easing: theme.transitions.easing.easeInOut + }), + bottom: 0, + '& > img': { + borderRadius: '50%' + } + } +})); + +/** + * The user navbar header. + */ +function UserNavbarHeader() { + const user = useSelector(selectUser); + + return ( + +
+ + {user?.data?.displayName?.charAt(0)} + +
+ + {user?.data?.displayName} + + + {user.data.email} + +
+ ); +} + +export default UserNavbarHeader; diff --git a/src/app/theme-layouts/shared-components/configurator/Configurator.tsx b/src/app/theme-layouts/shared-components/configurator/Configurator.tsx new file mode 100644 index 0000000..ebee260 --- /dev/null +++ b/src/app/theme-layouts/shared-components/configurator/Configurator.tsx @@ -0,0 +1,131 @@ +import { styled, useTheme } from '@mui/material/styles'; +import Button from '@mui/material/Button'; +import { red } from '@mui/material/colors'; +import { memo, useEffect, useState } from 'react'; +import { useSwipeable } from 'react-swipeable'; +import FuseSvgIcon from '@fuse/core/FuseSvgIcon'; +import { usePrevious } from '@fuse/hooks'; +import _ from '@lodash'; +import { useSelector } from 'react-redux'; +import SettingsPanel from 'app/theme-layouts/shared-components/configurator/SettingsPanel'; +import ThemesPanel from 'app/theme-layouts/shared-components/configurator/ThemesPanel'; +import { selectIsUserGuest, selectUserSettings } from '../../../auth/user/store/userSlice'; +import { useAuth } from '../../../auth/AuthRouteProvider'; + +const Root = styled('div')(({ theme }) => ({ + position: 'absolute', + height: 80, + right: 0, + top: 160, + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + overflow: 'hidden', + padding: 0, + borderTopLeftRadius: 6, + borderBottomLeftRadius: 6, + borderBottomRightRadius: 0, + borderTopRightRadius: 0, + zIndex: 999, + color: theme.palette.getContrastText(red[500]), + backgroundColor: red[400], + '&:hover': { + backgroundColor: red[500] + }, + + '& .settingsButton': { + '& > span': { + animation: 'rotating 3s linear infinite' + } + }, + + '@keyframes rotating': { + from: { + transform: 'rotate(0deg)' + }, + to: { + transform: 'rotate(360deg)' + } + } +})); + +/** + * The settings panel. + */ +function Configurator() { + const theme = useTheme(); + const [open, setOpen] = useState(''); + const isUserGuest = useSelector(selectIsUserGuest); + const userSettings = useSelector(selectUserSettings); + const prevUserSettings = usePrevious(userSettings); + + const { updateUser } = useAuth(); + + useEffect(() => { + if (!isUserGuest && prevUserSettings && !_.isEqual(userSettings, prevUserSettings)) { + updateUser({ data: { settings: userSettings } }); + } + }, [isUserGuest, userSettings]); + + const handlerOptions = { + onSwipedLeft: () => Boolean(open) && theme.direction === 'rtl' && handleClose(), + onSwipedRight: () => Boolean(open) && theme.direction === 'ltr' && handleClose() + }; + + const settingsHandlers = useSwipeable(handlerOptions); + const schemesHandlers = useSwipeable(handlerOptions); + + const handleOpen = (panelId: string) => { + setOpen(panelId); + }; + + const handleClose = () => { + setOpen(''); + }; + + return ( + <> + + + + + + + + + + + ); +} + +export default memo(Configurator); diff --git a/src/app/theme-layouts/shared-components/configurator/SettingsPanel.tsx b/src/app/theme-layouts/shared-components/configurator/SettingsPanel.tsx new file mode 100644 index 0000000..f55839c --- /dev/null +++ b/src/app/theme-layouts/shared-components/configurator/SettingsPanel.tsx @@ -0,0 +1,102 @@ +import FuseScrollbars from '@fuse/core/FuseScrollbars'; +import IconButton from '@mui/material/IconButton'; +import FuseSvgIcon from '@fuse/core/FuseSvgIcon'; +import Typography from '@mui/material/Typography'; +import FuseSettings from '@fuse/core/FuseSettings/FuseSettings'; +import FuseSettingsViewerDialog from 'app/theme-layouts/shared-components/FuseSettingsViewerDialog'; +import { styled, useTheme } from '@mui/material/styles'; +import Dialog from '@mui/material/Dialog'; +import { forwardRef } from 'react'; +import Slide from '@mui/material/Slide'; +import { SwipeableHandlers } from 'react-swipeable'; + +const StyledDialog = styled(Dialog)(({ theme }) => ({ + '& .MuiDialog-paper': { + position: 'fixed', + width: 380, + maxWidth: '90vw', + backgroundColor: theme.palette.background.paper, + top: 0, + height: '100%', + minHeight: '100%', + bottom: 0, + right: 0, + margin: 0, + zIndex: 1000, + borderRadius: 0 + } +})); + +type TransitionProps = { + children?: React.ReactElement; +}; + +const Transition = forwardRef((props: TransitionProps, ref) => { + const { children, ...other } = props; + + const theme = useTheme(); + + if (!children) { + return null; + } + + return ( + + {children} + + ); +}); + +type SettingsPanelProps = { + settingsHandlers: SwipeableHandlers; + onClose: () => void; + open: boolean; +}; + +function SettingsPanel(props: SettingsPanelProps) { + const { settingsHandlers, onClose, open } = props; + + return ( + + + + heroicons-outline:x + + + + Theme Settings + + + + +
+ +
+
+
+ ); +} + +export default SettingsPanel; diff --git a/src/app/theme-layouts/shared-components/configurator/ThemesPanel.tsx b/src/app/theme-layouts/shared-components/configurator/ThemesPanel.tsx new file mode 100644 index 0000000..ddd5b9a --- /dev/null +++ b/src/app/theme-layouts/shared-components/configurator/ThemesPanel.tsx @@ -0,0 +1,115 @@ +import FuseScrollbars from '@fuse/core/FuseScrollbars'; +import IconButton from '@mui/material/IconButton'; +import FuseSvgIcon from '@fuse/core/FuseSvgIcon'; +import Typography from '@mui/material/Typography'; +import FuseThemeSelector from '@fuse/core/FuseThemeSelector/FuseThemeSelector'; +import { changeFuseTheme } from '@fuse/core/FuseSettings/store/fuseSettingsSlice'; +import { styled, useTheme } from '@mui/material/styles'; +import Dialog from '@mui/material/Dialog'; +import { forwardRef } from 'react'; +import Slide from '@mui/material/Slide'; +import { useAppDispatch } from 'app/store/store'; +import { SwipeableHandlers } from 'react-swipeable'; +import themeOptions from 'app/configs/themeOptions'; + +const StyledDialog = styled(Dialog)(({ theme }) => ({ + '& .MuiDialog-paper': { + position: 'fixed', + width: 380, + maxWidth: '90vw', + backgroundColor: theme.palette.background.paper, + top: 0, + height: '100%', + minHeight: '100%', + bottom: 0, + right: 0, + margin: 0, + zIndex: 1000, + borderRadius: 0 + } +})); + +type TransitionProps = { + children?: React.ReactElement; +}; + +const Transition = forwardRef((props: TransitionProps, ref) => { + const { children, ...other } = props; + + const theme = useTheme(); + + if (!children) { + return null; + } + + return ( + + {children} + + ); +}); + +type ThemesPanelProps = { + schemesHandlers: SwipeableHandlers; + onClose: () => void; + open: boolean; +}; + +function ThemesPanel(props: ThemesPanelProps) { + const { schemesHandlers, onClose, open } = props; + + const dispatch = useAppDispatch(); + + return ( + + + + heroicons-outline:x + + + + Theme Color Options + + + + * Selected option will be applied to all layout elements (navbar, toolbar, etc.). You can also + create your own theme options and color schemes. + + + { + dispatch(changeFuseTheme(_theme.section)); + }} + /> + + + ); +} + +export default ThemesPanel; diff --git a/src/app/theme-layouts/shared-components/navbar/NavbarToggleButton.tsx b/src/app/theme-layouts/shared-components/navbar/NavbarToggleButton.tsx new file mode 100644 index 0000000..8e522ba --- /dev/null +++ b/src/app/theme-layouts/shared-components/navbar/NavbarToggleButton.tsx @@ -0,0 +1,61 @@ +import IconButton from '@mui/material/IconButton'; +import { useAppDispatch } from 'app/store/store'; +import { selectFuseCurrentSettings, setDefaultSettings } from '@fuse/core/FuseSettings/store/fuseSettingsSlice'; +import _ from '@lodash'; +import useThemeMediaQuery from '@fuse/hooks/useThemeMediaQuery'; +import FuseSvgIcon from '@fuse/core/FuseSvgIcon'; +import { FuseSettingsConfigType } from '@fuse/core/FuseSettings/FuseSettings'; +import { useSelector } from 'react-redux'; +import { navbarToggle, navbarToggleMobile } from './store/navbarSlice'; + +type NavbarToggleButtonProps = { + className?: string; + children?: React.ReactNode; +}; + +/** + * The navbar toggle button. + */ +function NavbarToggleButton(props: NavbarToggleButtonProps) { + const { + className = '', + children = ( + + heroicons-outline:view-list + + ) + } = props; + + const dispatch = useAppDispatch(); + const isMobile = useThemeMediaQuery((theme) => theme.breakpoints.down('lg')); + const settings: FuseSettingsConfigType = useSelector(selectFuseCurrentSettings); + const { config } = settings.layout; + + return ( + { + if (isMobile) { + dispatch(navbarToggleMobile()); + } else if (config?.navbar?.style === 'style-2') { + dispatch( + setDefaultSettings( + _.set({}, 'layout.config.navbar.folded', !settings?.layout?.config?.navbar?.folded) + ) + ); + } else { + dispatch(navbarToggle()); + } + }} + > + {children} + + ); +} + +export default NavbarToggleButton; diff --git a/src/app/theme-layouts/shared-components/navbar/NavbarToggleFab.tsx b/src/app/theme-layouts/shared-components/navbar/NavbarToggleFab.tsx new file mode 100644 index 0000000..9576142 --- /dev/null +++ b/src/app/theme-layouts/shared-components/navbar/NavbarToggleFab.tsx @@ -0,0 +1,91 @@ +import Fab from '@mui/material/Fab'; +import { styled } from '@mui/material/styles'; + +import Tooltip from '@mui/material/Tooltip'; +import clsx from 'clsx'; +import FuseSvgIcon from '@fuse/core/FuseSvgIcon'; + +const Root = styled(Tooltip)<{ position: 'left' | 'right' }>(({ theme, position }) => ({ + '& > .button': { + height: 40, + position: 'absolute', + zIndex: 99, + top: 12, + width: 24, + borderRadius: 38, + padding: 8, + backgroundColor: theme.palette.background.paper, + transition: theme.transitions.create(['background-color', 'border-radius', 'width', 'min-width', 'padding'], { + easing: theme.transitions.easing.easeInOut, + duration: theme.transitions.duration.shorter + }), + '&:hover': { + width: 52, + paddingLeft: 8, + paddingRight: 8 + }, + + '& > .button-icon': { + fontSize: 18, + transition: theme.transitions.create(['transform'], { + easing: theme.transitions.easing.easeInOut, + duration: theme.transitions.duration.short + }) + }, + + ...(position === 'left' && { + borderBottomLeftRadius: 0, + borderTopLeftRadius: 0, + paddingLeft: 4, + left: 0 + }), + + ...(position === 'right' && { + borderBottomRightRadius: 0, + borderTopRightRadius: 0, + paddingRight: 4, + right: 0, + '& > .button-icon': { + transform: 'rotate(-180deg)' + } + }) + } +})); + +type NavbarToggleFabProps = { + className?: string; + position?: string; + onClick?: () => void; +}; + +/** + * The NavbarToggleFab component. + */ +function NavbarToggleFab(props: NavbarToggleFabProps) { + const { className = '', position = 'left', onClick } = props; + + return ( + + + + heroicons-outline:view-list + + + + ); +} + +NavbarToggleFab.defaultProps = {}; + +export default NavbarToggleFab; diff --git a/src/app/theme-layouts/shared-components/navbar/store/navbarSlice.ts b/src/app/theme-layouts/shared-components/navbar/store/navbarSlice.ts new file mode 100644 index 0000000..d890aa9 --- /dev/null +++ b/src/app/theme-layouts/shared-components/navbar/store/navbarSlice.ts @@ -0,0 +1,78 @@ +import { createSlice } from '@reduxjs/toolkit'; +import { RootStateType } from 'app/store/types'; +import { appSelector } from 'app/store/store'; + +type AppRootStateType = RootStateType; + +/** + * The type definition for the initial state of the navbar slice. + */ +type initialStateProps = { + open: boolean; + mobileOpen: boolean; + foldedOpen: boolean; +}; + +/** + * The initial state of the navbar slice. + */ +const initialState: initialStateProps = { + open: true, + mobileOpen: false, + foldedOpen: false +}; + +/** + * The navbar slice. + */ +export const navbarSlice = createSlice({ + name: 'navbar', + initialState, + reducers: { + navbarToggleFolded: (state) => { + state.foldedOpen = !state.foldedOpen; + }, + navbarOpenFolded: (state) => { + state.foldedOpen = true; + }, + navbarCloseFolded: (state) => { + state.foldedOpen = false; + }, + navbarToggleMobile: (state) => { + state.mobileOpen = !state.mobileOpen; + }, + navbarOpenMobile: (state) => { + state.mobileOpen = true; + }, + navbarCloseMobile: (state) => { + state.mobileOpen = false; + }, + navbarClose: (state) => { + state.open = false; + }, + navbarOpen: (state) => { + state.open = true; + }, + navbarToggle: (state) => { + state.open = !state.open; + } + } +}); + +export const { + navbarToggleFolded, + navbarOpenFolded, + navbarCloseFolded, + navbarOpen, + navbarClose, + navbarToggle, + navbarOpenMobile, + navbarCloseMobile, + navbarToggleMobile +} = navbarSlice.actions; + +export const selectFuseNavbar = appSelector(({ navbar }: AppRootStateType) => navbar); + +export type navbarSliceType = typeof navbarSlice; + +export default navbarSlice.reducer; diff --git a/src/app/theme-layouts/shared-components/navigation/Navigation.tsx b/src/app/theme-layouts/shared-components/navigation/Navigation.tsx new file mode 100644 index 0000000..438b983 --- /dev/null +++ b/src/app/theme-layouts/shared-components/navigation/Navigation.tsx @@ -0,0 +1,48 @@ +import FuseNavigation from '@fuse/core/FuseNavigation'; +import clsx from 'clsx'; +import { useMemo } from 'react'; +import { useAppDispatch } from 'app/store/store'; +import useThemeMediaQuery from '@fuse/hooks/useThemeMediaQuery'; +import { FuseNavigationProps } from '@fuse/core/FuseNavigation/FuseNavigation'; +import { useSelector } from 'react-redux'; +import withSlices from 'app/store/withSlices'; +import { navigationSlice, selectNavigation } from './store/navigationSlice'; +import { navbarCloseMobile } from '../navbar/store/navbarSlice'; + +/** + * Navigation + */ + +type NavigationProps = Partial; + +function Navigation(props: NavigationProps) { + const { className = '', layout = 'vertical', dense, active } = props; + + const navigation = useSelector(selectNavigation); + + const isMobile = useThemeMediaQuery((theme) => theme.breakpoints.down('lg')); + + const dispatch = useAppDispatch(); + + return useMemo(() => { + function handleItemClick() { + if (isMobile) { + dispatch(navbarCloseMobile()); + } + } + + return ( + + ); + }, [dispatch, isMobile, navigation, active, className, dense, layout]); +} + +export default withSlices([navigationSlice])(Navigation); diff --git a/src/app/theme-layouts/shared-components/navigation/NavigationSearch.tsx b/src/app/theme-layouts/shared-components/navigation/NavigationSearch.tsx new file mode 100644 index 0000000..d468859 --- /dev/null +++ b/src/app/theme-layouts/shared-components/navigation/NavigationSearch.tsx @@ -0,0 +1,28 @@ +import { useSelector } from 'react-redux'; +import FuseSearch from '@fuse/core/FuseSearch'; +import withSlices from 'app/store/withSlices'; +import { navigationSlice, selectFlatNavigation } from './store/navigationSlice'; + +type NavigationSearchProps = { + className?: string; + variant?: 'basic' | 'full'; +}; + +/** + * The navigation search. + */ +function NavigationSearch(props: NavigationSearchProps) { + const { variant, className } = props; + + const navigation = useSelector(selectFlatNavigation); + + return ( + + ); +} + +export default withSlices([navigationSlice])(NavigationSearch); diff --git a/src/app/theme-layouts/shared-components/navigation/NavigationShortcuts.tsx b/src/app/theme-layouts/shared-components/navigation/NavigationShortcuts.tsx new file mode 100644 index 0000000..171ddd3 --- /dev/null +++ b/src/app/theme-layouts/shared-components/navigation/NavigationShortcuts.tsx @@ -0,0 +1,52 @@ +import { useSelector } from 'react-redux'; +import { useAppDispatch } from 'app/store/store'; +import FuseShortcuts from '@fuse/core/FuseShortcuts'; +import { selectIsUserGuest, selectUserShortcuts, setUserShortcuts } from 'src/app/auth/user/store/userSlice'; +import { usePrevious } from '@fuse/hooks'; +import { useEffect } from 'react'; +import _ from '@lodash'; +import { useAuth } from 'src/app/auth/AuthRouteProvider'; +import withSlices from 'app/store/withSlices'; +import { navigationSlice, selectFlatNavigation } from './store/navigationSlice'; + +type NavigationShortcutsProps = { + className?: string; + variant?: 'horizontal' | 'vertical'; +}; + +/** + * The navigation shortcuts. + */ +function NavigationShortcuts(props: NavigationShortcutsProps) { + const { variant, className } = props; + const dispatch = useAppDispatch(); + const navigation = useSelector(selectFlatNavigation); + + const userShortcuts = useSelector(selectUserShortcuts) || []; + const isUserGuest = useSelector(selectIsUserGuest); + const prevUserShortcuts = usePrevious(userShortcuts); + + const { updateUser: updateUserService } = useAuth(); + + useEffect(() => { + if (!isUserGuest && prevUserShortcuts && !_.isEqual(userShortcuts, prevUserShortcuts)) { + updateUserService({ data: { shortcuts: userShortcuts } }); + } + }, [isUserGuest, userShortcuts]); + + function handleShortcutsChange(newShortcuts: string[]) { + dispatch(setUserShortcuts(newShortcuts)); + } + + return ( + + ); +} + +export default withSlices([navigationSlice])(NavigationShortcuts); diff --git a/src/app/theme-layouts/shared-components/navigation/store/navigationSlice.ts b/src/app/theme-layouts/shared-components/navigation/store/navigationSlice.ts new file mode 100644 index 0000000..bb2f1dd --- /dev/null +++ b/src/app/theme-layouts/shared-components/navigation/store/navigationSlice.ts @@ -0,0 +1,131 @@ +import { createEntityAdapter, createSelector, createSlice, PayloadAction } from '@reduxjs/toolkit'; +import { AppThunk, RootStateType } from 'app/store/types'; +import { PartialDeep } from 'type-fest'; +import { FuseFlatNavItemType, FuseNavItemType } from '@fuse/core/FuseNavigation/types/FuseNavItemType'; +import { selectUserRole, userSliceType } from 'src/app/auth/user/store/userSlice'; +import FuseNavigationHelper from '@fuse/utils/FuseNavigationHelper'; +import i18next from 'i18next'; +import FuseNavItemModel from '@fuse/core/FuseNavigation/models/FuseNavItemModel'; +import FuseUtils from '@fuse/utils'; +import navigationConfig from 'app/configs/navigationConfig'; +import { selectCurrentLanguageId } from 'app/store/i18nSlice'; + +type AppRootStateType = RootStateType<[navigationSliceType, userSliceType]>; + +const navigationAdapter = createEntityAdapter(); + +const emptyInitialState = navigationAdapter.getInitialState([]); + +const initialState = navigationAdapter.upsertMany( + emptyInitialState, + FuseNavigationHelper.flattenNavigation(navigationConfig) +); + +/** + * Redux Thunk actions related to the navigation store state + */ +/** + * Appends a navigation item to the navigation store state. + */ +export const appendNavigationItem = + (item: FuseNavItemType, parentId?: string | null): AppThunk => + async (dispatch, getState) => { + const AppState = getState() as AppRootStateType; + const navigation = FuseNavigationHelper.unflattenNavigation(selectNavigationAll(AppState)); + + dispatch(setNavigation(FuseNavigationHelper.appendNavItem(navigation, FuseNavItemModel(item), parentId))); + + return Promise.resolve(); + }; + +/** + * Prepends a navigation item to the navigation store state. + */ +export const prependNavigationItem = + (item: FuseNavItemType, parentId?: string | null): AppThunk => + async (dispatch, getState) => { + const AppState = getState() as AppRootStateType; + const navigation = FuseNavigationHelper.unflattenNavigation(selectNavigationAll(AppState)); + + dispatch(setNavigation(FuseNavigationHelper.prependNavItem(navigation, FuseNavItemModel(item), parentId))); + + return Promise.resolve(); + }; + +/** + * Adds a navigation item to the navigation store state at the specified index. + */ +export const updateNavigationItem = + (id: string, item: PartialDeep): AppThunk => + async (dispatch, getState) => { + const AppState = getState() as AppRootStateType; + const navigation = FuseNavigationHelper.unflattenNavigation(selectNavigationAll(AppState)); + + dispatch(setNavigation(FuseNavigationHelper.updateNavItem(navigation, id, item))); + + return Promise.resolve(); + }; + +/** + * Removes a navigation item from the navigation store state. + */ +export const removeNavigationItem = + (id: string): AppThunk => + async (dispatch, getState) => { + const AppState = getState() as AppRootStateType; + const navigation = FuseNavigationHelper.unflattenNavigation(selectNavigationAll(AppState)); + + dispatch(setNavigation(FuseNavigationHelper.removeNavItem(navigation, id))); + + return Promise.resolve(); + }; + +export const { + selectAll: selectNavigationAll, + selectIds: selectNavigationIds, + selectById: selectNavigationItemById +} = navigationAdapter.getSelectors((state: AppRootStateType) => state.navigation); + +/** + * The navigation slice + */ +export const navigationSlice = createSlice({ + name: 'navigation', + initialState, + reducers: { + setNavigation(state, action: PayloadAction) { + return navigationAdapter.setAll(state, FuseNavigationHelper.flattenNavigation(action.payload)); + }, + resetNavigation: () => initialState + } +}); + +export const { setNavigation, resetNavigation } = navigationSlice.actions; + +export const selectNavigation = createSelector( + [selectNavigationAll, selectUserRole, selectCurrentLanguageId], + (navigationSimple, userRole) => { + const navigation = FuseNavigationHelper.unflattenNavigation(navigationSimple); + + function setAdditionalData(data: FuseNavItemType[]): FuseNavItemType[] { + return data?.map((item) => ({ + hasPermission: Boolean(FuseUtils.hasPermission(item?.auth, userRole)), + ...item, + ...(item?.translate && item?.title ? { title: i18next.t(`navigation:${item?.translate}`) } : {}), + ...(item?.children ? { children: setAdditionalData(item?.children) } : {}) + })); + } + + const translatedValues = setAdditionalData(navigation); + + return translatedValues; + } +); + +export const selectFlatNavigation = createSelector([selectNavigation], (navigation) => { + return FuseNavigationHelper.flattenNavigation(navigation); +}); + +export type navigationSliceType = typeof navigationSlice; + +export default navigationSlice.reducer; diff --git a/src/app/theme-layouts/shared-components/quickPanel/QuickPanel.tsx b/src/app/theme-layouts/shared-components/quickPanel/QuickPanel.tsx new file mode 100644 index 0000000..431834d --- /dev/null +++ b/src/app/theme-layouts/shared-components/quickPanel/QuickPanel.tsx @@ -0,0 +1,166 @@ +import FuseScrollbars from '@fuse/core/FuseScrollbars'; +import { styled } from '@mui/material/styles'; +import Divider from '@mui/material/Divider'; +import List from '@mui/material/List'; +import ListItem from '@mui/material/ListItem'; +import ListItemIcon from '@mui/material/ListItemIcon'; +import ListItemSecondaryAction from '@mui/material/ListItemSecondaryAction'; +import ListItemText from '@mui/material/ListItemText'; +import ListSubheader from '@mui/material/ListSubheader'; +import SwipeableDrawer from '@mui/material/SwipeableDrawer'; +import Switch from '@mui/material/Switch'; +import Typography from '@mui/material/Typography'; +import format from 'date-fns/format'; +import { useState } from 'react'; +import { useSelector } from 'react-redux'; +import { useAppDispatch } from 'app/store/store'; +import FuseSvgIcon from '@fuse/core/FuseSvgIcon'; +import withReducer from 'app/store/withReducer'; +import reducer from './store'; +import { selectQuickPanelData } from './store/dataSlice'; +import { selectQuickPanelState, toggleQuickPanel } from './store/stateSlice'; + +const StyledSwipeableDrawer = styled(SwipeableDrawer)(() => ({ + '& .MuiDrawer-paper': { + width: 280 + } +})); + +/** + * The quick panel. + */ +function QuickPanel() { + const dispatch = useAppDispatch(); + + const data = useSelector(selectQuickPanelData); + const state = useSelector(selectQuickPanelState); + + const [checked, setChecked] = useState(['notifications']); + + const handleToggle = (value: string) => () => { + const currentIndex = checked.indexOf(value); + const newChecked = [...checked]; + + if (currentIndex === -1) { + newChecked.push(value); + } else { + newChecked.splice(currentIndex, 1); + } + + setChecked(newChecked); + }; + + return ( + {}} + onClose={() => dispatch(toggleQuickPanel())} + disableSwipeToOpen + > + + Today + +
+ + {format(new Date(), 'eeee')} + +
+ + {format(new Date(), 'dd')} + + + th + + + {format(new Date(), 'MMMM')} + +
+
+ + + Events + {data && + data.events.map((event) => ( + + + + ))} + + + + Notes + {data && + data.notes.map((note) => ( + + + + ))} + + + + Quick Settings + + + material-outline:notifications + + + + + + + + + material-outline:cloud + + + + + + + + + material-outline:brightness_high + + + + + + + +
+
+ ); +} + +export default withReducer('quickPanel', reducer)(QuickPanel); diff --git a/src/app/theme-layouts/shared-components/quickPanel/QuickPanelToggleButton.tsx b/src/app/theme-layouts/shared-components/quickPanel/QuickPanelToggleButton.tsx new file mode 100644 index 0000000..8b09371 --- /dev/null +++ b/src/app/theme-layouts/shared-components/quickPanel/QuickPanelToggleButton.tsx @@ -0,0 +1,28 @@ +import IconButton from '@mui/material/IconButton'; +import { useAppDispatch } from 'app/store/store'; +import FuseSvgIcon from '@fuse/core/FuseSvgIcon'; +import { toggleQuickPanel } from './store/stateSlice'; + +type QuickPanelToggleButtonProps = { + children?: React.ReactNode; +}; + +/** + * The quick panel toggle button. + */ +function QuickPanelToggleButton(props: QuickPanelToggleButtonProps) { + const { children = heroicons-outline:bookmark } = props; + const dispatch = useAppDispatch(); + + return ( + dispatch(toggleQuickPanel())} + size="large" + > + {children} + + ); +} + +export default QuickPanelToggleButton; diff --git a/src/app/theme-layouts/shared-components/quickPanel/store/dataSlice.ts b/src/app/theme-layouts/shared-components/quickPanel/store/dataSlice.ts new file mode 100644 index 0000000..ad3130b --- /dev/null +++ b/src/app/theme-layouts/shared-components/quickPanel/store/dataSlice.ts @@ -0,0 +1,60 @@ +import { createSlice } from '@reduxjs/toolkit'; +import { appSelector } from 'app/store/store'; +import { AppRootStateType } from '.'; + +/** + * Quick Panel data slice. + */ +export const dataSlice = createSlice({ + name: 'quickPanel/data', + initialState: { + notes: [ + { + id: 1, + title: 'Best songs to listen while working', + detail: 'Last edit: May 8th, 2015' + }, + { + id: 2, + title: 'Useful subreddits', + detail: 'Last edit: January 12th, 2015' + } + ], + events: [ + { + id: 1, + title: 'Group Meeting', + detail: 'In 32 Minutes, Room 1B' + }, + { + id: 2, + + title: 'Public Beta Release', + detail: '11:00 PM' + }, + { + id: 3, + title: 'Dinner with David', + detail: '17:30 PM' + }, + { + id: 4, + title: 'Q&A Session', + detail: '20:30 PM' + } + ] + }, + reducers: { + removeEvents: (state) => { + state.events = []; + } + } +}); + +export const selectQuickPanelData = appSelector((state: AppRootStateType) => state.quickPanel.data); + +export const { removeEvents } = dataSlice.actions; + +export type dataSliceType = typeof dataSlice; + +export default dataSlice.reducer; diff --git a/src/app/theme-layouts/shared-components/quickPanel/store/index.ts b/src/app/theme-layouts/shared-components/quickPanel/store/index.ts new file mode 100644 index 0000000..0554bed --- /dev/null +++ b/src/app/theme-layouts/shared-components/quickPanel/store/index.ts @@ -0,0 +1,13 @@ +import { combineReducers } from '@reduxjs/toolkit'; +import { RootStateType } from 'app/store/types'; +import data, { dataSliceType } from './dataSlice'; +import state, { stateSliceType } from './stateSlice'; + +const reducer = combineReducers({ + data, + state +}); + +export default reducer; + +export type AppRootStateType = RootStateType; diff --git a/src/app/theme-layouts/shared-components/quickPanel/store/stateSlice.ts b/src/app/theme-layouts/shared-components/quickPanel/store/stateSlice.ts new file mode 100644 index 0000000..c9b2e75 --- /dev/null +++ b/src/app/theme-layouts/shared-components/quickPanel/store/stateSlice.ts @@ -0,0 +1,26 @@ +import { createSlice } from '@reduxjs/toolkit'; +import { RootStateType } from 'app/store/types'; +import { appSelector } from 'app/store/store'; + +type AppRootStateType = RootStateType; + +/** + * State slice for the quick panel. + */ +export const stateSlice = createSlice({ + name: 'quickPanel/state', + initialState: false, + reducers: { + toggleQuickPanel: (state) => !state, + openQuickPanel: () => true, + closeQuickPanel: () => false + } +}); + +export const { toggleQuickPanel, openQuickPanel, closeQuickPanel } = stateSlice.actions; + +export const selectQuickPanelState = appSelector((state: AppRootStateType) => state.quickPanel.state); + +export type stateSliceType = typeof stateSlice; + +export default stateSlice.reducer; diff --git a/src/app/theme-layouts/themeLayoutConfigs.ts b/src/app/theme-layouts/themeLayoutConfigs.ts new file mode 100644 index 0000000..fad191f --- /dev/null +++ b/src/app/theme-layouts/themeLayoutConfigs.ts @@ -0,0 +1,39 @@ +import ThemeFormConfigTypes from '@fuse/core/FuseSettings/ThemeFormConfigTypes'; +import layout1, { Layout1ConfigDefaultsType } from './layout1/Layout1Config'; +import layout2, { Layout2ConfigDefaultsType } from './layout2/Layout2Config'; +import layout3, { Layout3ConfigDefaultsType } from './layout3/Layout3Config'; + +/** + * The type definition for the theme layout defaults. + */ +export type themeLayoutDefaultsProps = + | Layout1ConfigDefaultsType + | Layout3ConfigDefaultsType + | Layout2ConfigDefaultsType; + +/** + * The type definition for the theme layout. + */ +export type themeLayoutProps = { + title: string; + defaults: themeLayoutDefaultsProps; + form?: ThemeFormConfigTypes; +}; + +/** + * The type definition for the theme layout configs. + */ +export type themeLayoutConfigsProps = { + [key: string]: themeLayoutProps; +}; + +/** + * The theme layout configs. + */ +const themeLayoutConfigs: themeLayoutConfigsProps = { + layout1: layout1 as themeLayoutProps, + layout2: layout2 as themeLayoutProps, + layout3: layout3 as themeLayoutProps +}; + +export default themeLayoutConfigs; diff --git a/src/app/theme-layouts/themeLayouts.ts b/src/app/theme-layouts/themeLayouts.ts new file mode 100644 index 0000000..5b4f097 --- /dev/null +++ b/src/app/theme-layouts/themeLayouts.ts @@ -0,0 +1,22 @@ +import React, { ComponentType } from 'react'; +import Layout1 from './layout1/Layout1'; +import Layout2 from './layout2/Layout2'; +import Layout3 from './layout3/Layout3'; + +/** + * The type definition for the theme layouts. + */ +export type themeLayoutsType = { + [key: string]: ComponentType<{ children?: React.ReactNode }>; +}; + +/** + * The theme layouts. + */ +const themeLayouts: themeLayoutsType = { + layout1: Layout1, + layout2: Layout2, + layout3: Layout3 +}; + +export default themeLayouts; diff --git a/src/app/withAppProviders.tsx b/src/app/withAppProviders.tsx new file mode 100644 index 0000000..f74df0a --- /dev/null +++ b/src/app/withAppProviders.tsx @@ -0,0 +1,56 @@ +// import createGenerateClassName from '@mui/styles/createGenerateClassName'; +// import jssPreset from '@mui/styles/jssPreset'; +// import { create } from 'jss'; +// import jssExtend from 'jss-plugin-extend'; +// import rtl from 'jss-rtl'; +import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns'; +import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; +import { StyledEngineProvider } from '@mui/material/styles'; +import routes from 'app/configs/routesConfig'; +import { useMemo } from 'react'; +import { Provider } from 'react-redux'; +import ErrorBoundary from '@fuse/utils/ErrorBoundary'; +import AppContext from './AppContext'; +import store from './store/store'; + +type ComponentProps = { + name?: string; +}; + +/** + * A Higher Order Component that provides the necessary context providers for the app. + */ +function withAppProviders(Component: React.ComponentType) { + /** + * The component that wraps the provided component with the necessary context providers. + */ + function WithAppProviders(props: React.PropsWithChildren) { + /** + * The value to pass to the AppContext provider. + */ + const val = useMemo( + () => ({ + routes + }), + [routes] + ); + + return ( + + + + + + + + + + + + ); + } + + return WithAppProviders; +} + +export default withAppProviders; diff --git a/src/global.d.ts b/src/global.d.ts new file mode 100644 index 0000000..3113df1 --- /dev/null +++ b/src/global.d.ts @@ -0,0 +1,33 @@ +/** + * The module for importing CSS files. + */ +declare module '*.css' { + const content: { [className: string]: string }; + export default content; +} + +/** + * The type definition for the Node.js process object with additional properties. + */ +type ProcessType = NodeJS.Process & { + browser: boolean; + env: { + [key: string]: string | undefined; + }; +}; + +/** + * The global process object. + */ +declare let process: ProcessType; + +/** + * The type definition for the Hot Module object. + */ +interface HotModule { + hot?: { + status: () => string; + }; +} + +declare const module: HotModule; diff --git a/src/i18n.ts b/src/i18n.ts new file mode 100644 index 0000000..57c127c --- /dev/null +++ b/src/i18n.ts @@ -0,0 +1,32 @@ +import i18n from 'i18next'; +import { initReactI18next } from 'react-i18next'; + +/** + * resources is an object that contains all the translations for the different languages. + */ +const resources = { + en: { + translation: { + 'Welcome to React': 'Welcome to React and react-i18next' + } + } +}; + +/** + * i18n is initialized with the resources object and the language to use. + * The keySeparator option is set to false because we do not use keys in form messages.welcome. + * The interpolation option is set to false because we do not use interpolation in form messages.welcome. + */ +i18n.use(initReactI18next) // passes i18n down to react-i18next + .init({ + resources, + lng: 'en', + + keySeparator: false, // we do not use keys in form messages.welcome + + interpolation: { + escapeValue: false // react already safes from xss + } + }); + +export default i18n; diff --git a/src/index.tsx b/src/index.tsx new file mode 100644 index 0000000..169edc6 --- /dev/null +++ b/src/index.tsx @@ -0,0 +1,32 @@ +import './i18n'; +import './styles/app-base.css'; +import './styles/app-components.css'; +import './styles/app-utilities.css'; +import { createRoot } from 'react-dom/client'; +import App from './app/App'; + +// import * as serviceWorker from './serviceWorker'; +// import reportWebVitals from './reportWebVitals'; + +/** + * The root element of the application. + */ +const container = document.getElementById('root'); + +if (!container) { + throw new Error('Failed to find the root element'); +} + +/** + * The root component of the application. + */ +const root = createRoot(container); + +root.render(); + +// reportWebVitals(); + +// If you want your app to work offline and load faster, you can change +// unregister() to register() below. Note this comes with some pitfalls. +// Learn more about service workers: http://bit.ly/CRA-PWA +// serviceWorker.unregister(); diff --git a/src/node-scripts/file-ext-rename-js-to-ts.ts b/src/node-scripts/file-ext-rename-js-to-ts.ts new file mode 100644 index 0000000..50e79e9 --- /dev/null +++ b/src/node-scripts/file-ext-rename-js-to-ts.ts @@ -0,0 +1,45 @@ +import * as fs from 'fs'; +import * as path from 'path'; +import * as glob from 'glob'; +import * as parser from '@babel/parser'; +import traverse from '@babel/traverse'; + +function checkAndRename(file: string, fromExt: string, toExt: string): void { + const content = fs.readFileSync(file, 'utf-8'); + + try { + const ast = parser.parse(content, { + sourceType: 'module', + plugins: ['jsx'] + }); + + let hasJSX = false; + traverse(ast, { + JSXElement() { + hasJSX = true; + } + }); + + if ((fromExt === '.js' && !hasJSX) || (fromExt === '.jsx' && hasJSX)) { + const newPath = path.join(path.dirname(file), path.basename(file, fromExt) + toExt); + fs.renameSync(file, newPath); + /* eslint-disable-next-line no-console */ + console.log(`Renamed ${file} to ${newPath}`); + } + } catch (error) { + /* eslint-disable-next-line no-console */ + console.error(`Error processing file ${file}:`, error); + } +} + +// Check .js files and rename to .ts if they don't contain JSX +const jsFiles = glob.sync('**/*.js', { + ignore: ['node_modules/**/*'] +}); +jsFiles.forEach((file) => checkAndRename(file, '.js', '.ts')); + +// Check .jsx files and rename to .tsx if they contain JSX +const jsxFiles = glob.sync('**/*.jsx', { + ignore: ['node_modules/**/*'] +}); +jsxFiles.forEach((file) => checkAndRename(file, '.jsx', '.tsx')); diff --git a/src/node-scripts/fuse-react-message.ts b/src/node-scripts/fuse-react-message.ts new file mode 100644 index 0000000..dda8706 --- /dev/null +++ b/src/node-scripts/fuse-react-message.ts @@ -0,0 +1,18 @@ +// eslint-disable-next-line no-console +console.log(`************************************************************** +* * +* Fuse React Development: * +* * +* You are running a development build of Fuse React. * +* * +* Visit the link below to learn more about the Fuse React * +* https://fusetheme.com/admin-templates/react/ * +* * +* Get github invitation for future updates: * +* http://support.withinpixels.com/github * +* * +* Get princing information and FAQs at: * +* https://fusetheme.com/pricing/ * +* * +* Thanks for choosing Fuse React! * +**************************************************************`); diff --git a/src/styles/app-base.css b/src/styles/app-base.css new file mode 100644 index 0000000..73e8399 --- /dev/null +++ b/src/styles/app-base.css @@ -0,0 +1,154 @@ + +/*@tailwind base;*/ + +/** + * Custom base styles + */ + +* { + /* Text rendering */ + text-rendering: optimizeLegibility; + -o-text-rendering: optimizeLegibility; + -ms-text-rendering: optimizeLegibility; + -moz-text-rendering: optimizeLegibility; + -webkit-text-rendering: optimizeLegibility; + -webkit-tap-highlight-color: transparent; +} + +* :focus { + outline: none !important; +} + +html { + font-size: 62.5%; + font-family: 'Inter var', Roboto, Helvetica Neue, Arial, sans-serif; + background-color: #121212; +} + +body { + font-size: 14px; + line-height: 1.4; + overflow-x: hidden; + font-feature-settings: "salt"; +} + +html, body { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; +} + +html, body { + display: flex; + flex-direction: column; + position: relative; + margin: 0; + min-height: 100%; + width: 100%; + flex: 1 1 auto; +} + +#root { + display: flex; + flex: 1 1 auto; + width: 100%; + height: 100%; +} + +h1, .h1 { + font-size: 24px; +} + +h2, .h2 { + font-size: 20px; +} + +h3, .h3 { + font-size: 16px; +} + +h4, .h4 { + font-size: 15px; +} + +h5, .h5 { + font-size: 13px; +} + +h6, .h6 { + font-size: 12px; +} + +.ps > .ps__rail-y, +.ps > .ps__rail-x { + z-index: 99; +} + +a[role=button] { + text-decoration: none; +} + +[role="tooltip"] { + z-index: 9999; +} + +.MuiModal-root { + z-index: 9999; +} + +/* Medium Devices, Desktops Only */ +@media only screen and (min-width: 992px) { + ::-webkit-scrollbar { + width: 8px; + height: 8px; + background-color: rgba(0, 0, 0, 0); + } + + ::-webkit-scrollbar:hover { + width: 8px; + height: 8px; + background-color: rgba(0, 0, 0, 0.06); + } + + ::-webkit-scrollbar-thumb { + border: 2px solid transparent; + border-radius: 20px; + } + + ::-webkit-scrollbar-thumb:active { + border-radius: 20px; + } +} + +form label { + z-index: 99; +} + +body.no-animate *, +body.no-animate *::before, +body.no-animate *::after { + transition: none !important; + animation: none !important; +} + +button:focus { + outline: none; +} + +/* Removes webkit's autofill backgorund color */ +input:-webkit-autofill, +input:-webkit-autofill:hover, +input:-webkit-autofill:focus, +input:-webkit-autofill:active +{ + transitionDelay: 9999s; + transitionProperty: background-color, color; +} + +:focus { + outline-color: transparent; +} + +/*fullcalendar Fix*/ +.fc-scrollgrid-section-liquid { + height: 1px !important; +} diff --git a/src/styles/app-components.css b/src/styles/app-components.css new file mode 100644 index 0000000..d18c9c8 --- /dev/null +++ b/src/styles/app-components.css @@ -0,0 +1,11 @@ +/** + * Component classes registered by plugins. + */ + +@import 'print.css'; + +@import 'tables.css'; + +@import 'prism.css'; + +@tailwind components; diff --git a/src/styles/app-utilities.css b/src/styles/app-utilities.css new file mode 100644 index 0000000..57f8f15 --- /dev/null +++ b/src/styles/app-utilities.css @@ -0,0 +1,5 @@ +/** + * Tailwind's utility classes, generated based on your config file. + */ + +@tailwind utilities; diff --git a/src/styles/print.css b/src/styles/print.css new file mode 100644 index 0000000..00b33dc --- /dev/null +++ b/src/styles/print.css @@ -0,0 +1,46 @@ +/*----------------------------------------------------------------*/ +/* Print +/*----------------------------------------------------------------*/ +@media all { + /* Never show page breaks in normal view */ + .page-break-after, + .page-break-before { + display: none; + } +} + +@media print { + /* html and body tweaks */ + html, body { + height: auto !important; + overflow: initial !important; + background: none + } + + /* Page breaks */ + .page-break-after { + display: block; + page-break-after: always; + position: relative; + } + + .page-break-before { + display: block; + page-break-before: always; + position: relative; + } + + /* General styles */ + #fuse-toolbar, + #fuse-footer, + #fuse-navbar, + #fuse-settings-presets, + #fuse-layout .ps > .ps__rail-x, + #fuse-layout .ps > .ps__rail-y { + display: none !important; + } + + #fuse-layout .ps { + overflow: visible !important; + } +} diff --git a/src/styles/prism.css b/src/styles/prism.css new file mode 100644 index 0000000..4d4b8a8 --- /dev/null +++ b/src/styles/prism.css @@ -0,0 +1,211 @@ +code[class*="language-"], +pre[class*="language-"] { + text-align: left; + white-space: pre-wrap; + word-break: break-all; + word-wrap: break-word; + color: #c3cee3; + background: #263238; + font-family: Roboto Mono,"Liberation Mono",Menlo,Courier,monospace; + font-size: .9em; + line-height: 1.5; + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +code[class*="language-"]::-moz-selection, +pre[class*="language-"]::-moz-selection, +code[class*="language-"] ::-moz-selection, +pre[class*="language-"] ::-moz-selection { + background: #000000; +} + +code[class*="language-"]::selection, +pre[class*="language-"]::selection, +code[class*="language-"] ::selection, +pre[class*="language-"] ::selection { + background: #000000; +} + +:not(pre) > code[class*="language-"] { + white-space: normal; + border-radius: 0.2em; + padding: 0.1em; +} + +pre[class*="language-"] { + overflow: auto; + position: relative; + padding: 12px; + border-radius: 4px;; +} + +.language-css > code, +.language-sass > code, +.language-scss > code { + color: #fd9170; +} + +[class*="language-"] .namespace { + opacity: 0.7; +} + +.token.plain-text { + color: #c3cee3; +} + +.token.atrule { + color: #c792ea; +} + +.token.attr-name { + color: #ffcb6b; +} + +.token.attr-value { + color: #c3e88d; +} + +.token.attribute { + color: #c3e88d; +} + +.token.boolean { + color: #c792ea; +} + +.token.builtin { + color: #ffcb6b; +} + +.token.cdata { + color: #80cbc4; +} + +.token.char { + color: #80cbc4; +} + +.token.class { + color: #ffcb6b; +} + +.token.class-name { + color: #82aaff; +} + +.token.color { + color: #f2ff00; +} + +.token.comment { + color: #546e7a; +} + +.token.constant { + color: #c792ea; +} + +.token.deleted { + color: #f07178; +} + +.token.doctype { + color: #546e7a; +} + +.token.entity { + color: #f07178; +} + +.token.function { + color: #c792ea; +} + +.token.hexcode { + color: #f2ff00; +} + +.token.id { + color: #c792ea; + font-weight: bold; +} + +.token.important { + color: #c792ea; + font-weight: bold; +} + +.token.inserted { + color: #80cbc4; +} + +.token.keyword { + color: #c792ea; + font-style: italic; +} + +.token.number { + color: #fd9170; +} + +.token.operator { + color: #89ddff; +} + +.token.prolog { + color: #546e7a; +} + +.token.property { + color: #80cbc4; +} + +.token.pseudo-class { + color: #c3e88d; +} + +.token.pseudo-element { + color: #c3e88d; +} + +.token.punctuation { + color: #89ddff; +} + +.token.regex { + color: #f2ff00; +} + +.token.selector { + color: #f07178; +} + +.token.string { + color: #c3e88d; +} + +.token.symbol { + color: #c792ea; +} + +.token.tag { + color: #f07178; +} + +.token.unit { + color: #f07178; +} + +.token.url { + color: #fd9170; +} + +.token.variable { + color: #f07178; +} diff --git a/src/styles/tables.css b/src/styles/tables.css new file mode 100644 index 0000000..b0f5dfb --- /dev/null +++ b/src/styles/tables.css @@ -0,0 +1,69 @@ +/** +Basic Table Styles + */ +.table-responsive { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; +} + +table.simple { + width: 100%; + border: none; + border-spacing: 0; + text-align: left; +} + +table.simple thead tr th { + padding: 16px 8px; + font-weight: 500; + border-bottom: 1px solid rgba(0, 0, 0, 0.12); + white-space: nowrap; +} + +table.simple thead tr th:first-child { + padding-left: 24px; +} + +table.simple thead tr th:last-child { + padding-right: 24px; +} + +table.simple tbody tr td { + padding: 12px 8px; + border-bottom: 1px solid rgba(0, 0, 0, 0.12); +} + +table.simple tbody tr td:first-child { + padding-left: 24px; +} + +table.simple tbody tr td:last-child { + padding-right: 24px; +} + +table.simple tbody tr:last-child td { + border-bottom: none; +} + +table.simple.clickable tbody tr { + cursor: pointer; +} + +table.simple.clickable tbody tr:hover { + background: rgba(0, 0, 0, 0.03); +} + +table.simple.borderless { + border: none; +} + +table.simple.borderless tbody tr td{ + border: none; +} + +table.simple.borderless thead tr th{ + border: none; +} diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..d752e45 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,1498 @@ +const path = require('path'); + +module.exports = { + content: ['./src/**/*.{js,jsx,ts,tsx}', './public/index.html'], + safelist: ['pl-24', 'pl-40', 'pl-56', 'pl-72', 'pl-80'], + presets: [], + darkMode: 'class', // or 'class' + theme: { + accentColor: ({ theme }) => ({ + ...theme('colors'), + auto: 'auto' + }), + animation: { + none: 'none', + spin: 'spin 1s linear infinite', + ping: 'ping 1s cubic-bezier(0, 0, 0.2, 1) infinite', + pulse: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite', + bounce: 'bounce 1s infinite' + }, + aria: { + checked: 'checked="true"', + disabled: 'disabled="true"', + expanded: 'expanded="true"', + hidden: 'hidden="true"', + pressed: 'pressed="true"', + readonly: 'readonly="true"', + required: 'required="true"', + selected: 'selected="true"' + }, + aspectRatio: { + auto: 'auto', + square: '1 / 1', + video: '16 / 9' + }, + backdropBlur: ({ theme }) => theme('blur'), + backdropBrightness: ({ theme }) => theme('brightness'), + backdropContrast: ({ theme }) => theme('contrast'), + backdropGrayscale: ({ theme }) => theme('grayscale'), + backdropHueRotate: ({ theme }) => theme('hueRotate'), + backdropInvert: ({ theme }) => theme('invert'), + backdropOpacity: ({ theme }) => theme('opacity'), + backdropSaturate: ({ theme }) => theme('saturate'), + backdropSepia: ({ theme }) => theme('sepia'), + backgroundColor: ({ theme }) => theme('colors'), + backgroundImage: { + none: 'none', + 'gradient-to-t': 'linear-gradient(to top, var(--tw-gradient-stops))', + 'gradient-to-tr': 'linear-gradient(to top right, var(--tw-gradient-stops))', + 'gradient-to-r': 'linear-gradient(to right, var(--tw-gradient-stops))', + 'gradient-to-br': 'linear-gradient(to bottom right, var(--tw-gradient-stops))', + 'gradient-to-b': 'linear-gradient(to bottom, var(--tw-gradient-stops))', + 'gradient-to-bl': 'linear-gradient(to bottom left, var(--tw-gradient-stops))', + 'gradient-to-l': 'linear-gradient(to left, var(--tw-gradient-stops))', + 'gradient-to-tl': 'linear-gradient(to top left, var(--tw-gradient-stops))' + }, + backgroundOpacity: ({ theme }) => theme('opacity'), + backgroundPosition: { + bottom: 'bottom', + center: 'center', + left: 'left', + 'left-bottom': 'left bottom', + 'left-top': 'left top', + right: 'right', + 'right-bottom': 'right bottom', + 'right-top': 'right top', + top: 'top' + }, + backgroundSize: { + auto: 'auto', + cover: 'cover', + contain: 'contain' + }, + blur: { + 0: '0', + none: '0', + sm: '4px', + DEFAULT: '8px', + md: '12px', + lg: '16px', + xl: '24px', + '2xl': '40px', + '3xl': '64px' + }, + borderColor: ({ theme }) => ({ + ...theme('colors'), + DEFAULT: theme('colors.gray.200', 'currentColor') + }), + borderOpacity: ({ theme }) => theme('opacity'), + borderRadius: { + none: '0px', + sm: '.2rem', + DEFAULT: '.4rem', + md: '.6rem', + lg: '.8rem', + xl: '1.2rem', + '2xl': '1.6rem', + '3xl': '2.4rem', + full: '9999px', + 0: '0px', + 2: '.2rem', + 4: '.4rem', + 6: '.6rem', + 8: '.8rem', + 12: '1.2rem', + 16: '1.6rem', + 20: '2rem', + 24: '2.4rem', + 28: '2.8rem', + 32: '3.2rem' + }, + borderSpacing: ({ theme }) => ({ + ...theme('spacing') + }), + borderWidth: { + DEFAULT: '1px', + 0: '0px', + 1: '1px', + 2: '2px', + 3: '3px', + 4: '4px', + 8: '8px' + }, + boxShadow: { + sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)', + DEFAULT: '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)', + md: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)', + lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)', + xl: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)', + '2xl': '0 25px 50px -12px rgba(0, 0, 0, 0.25)', + inner: 'inset 0 2px 4px 0 rgba(0,0,0,0.06)', + none: 'none', + 0: '0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12)', + 1: '0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12)', + 2: '0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)', + 3: '0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12)', + 4: '0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)', + 5: '0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12)', + 6: '0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12)', + 7: '0px 4px 5px -2px rgba(0, 0, 0, 0.2), 0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12)', + 8: '0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12)', + 9: '0px 5px 6px -3px rgba(0, 0, 0, 0.2), 0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12)', + 10: '0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12)', + 11: '0px 6px 7px -4px rgba(0, 0, 0, 0.2), 0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12)', + 12: '0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12)', + 13: '0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12)', + 14: '0px 7px 9px -4px rgba(0, 0, 0, 0.2), 0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12)', + 15: '0px 8px 9px -5px rgba(0, 0, 0, 0.2), 0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12)', + 16: '0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12)', + 17: '0px 8px 11px -5px rgba(0, 0, 0, 0.2), 0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12)', + 18: '0px 9px 11px -5px rgba(0, 0, 0, 0.2), 0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12)', + 19: '0px 9px 12px -6px rgba(0, 0, 0, 0.2), 0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12)', + 20: '0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12)', + 21: '0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12)', + 22: '0px 10px 14px -6px rgba(0, 0, 0, 0.2), 0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12)', + 23: '0px 11px 14px -7px rgba(0, 0, 0, 0.2), 0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12)', + 24: '0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12)' + }, + boxShadowColor: ({ theme }) => theme('colors'), + brightness: { + 0: '0', + 50: '.5', + 75: '.75', + 90: '.9', + 95: '.95', + 100: '1', + 105: '1.05', + 110: '1.1', + 125: '1.25', + 150: '1.5', + 200: '2' + }, + caretColor: ({ theme }) => theme('colors'), + colors: ({ colors }) => ({ + inherit: colors.inherit, + current: colors.current, + transparent: 'transparent', + black: '#22292F', + white: '#fff', + grey: { + 50: '#FAFAFA', + 100: '#F5F5F5', + 200: '#EEEEEE', + 300: '#E0E0E0', + 400: '#BDBDBD', + 500: '#9E9E9E', + DEFAULT: '#9E9E9E', + 600: '#757575', + 700: '#616161', + 800: '#424242', + 900: '#212121', + A100: '#D5D5D5', + A200: '#AAAAAA', + A400: '#303030', + A700: '#616161' + }, + gray: { + 50: '#FAFAFA', + 100: '#F5F5F5', + 200: '#EEEEEE', + 300: '#E0E0E0', + 400: '#BDBDBD', + 500: '#9E9E9E', + DEFAULT: '#9E9E9E', + 600: '#757575', + 700: '#616161', + 800: '#424242', + 900: '#212121', + A100: '#D5D5D5', + A200: '#AAAAAA', + A400: '#303030', + A700: '#616161' + }, + red: { + 50: '#FFEBEE', + 100: '#FFCDD2', + 200: '#EF9A9A', + 300: '#E57373', + 400: '#EF5350', + 500: '#F44336', + DEFAULT: '#F44336', + 600: '#E53935', + 700: '#D32F2F', + 800: '#C62828', + 900: '#B71C1C', + A100: '#FF8A80', + A200: '#FF5252', + A400: '#FF1744', + A700: '#D50000' + }, + orange: { + 50: '#FFF3E0', + 100: '#FFE0B2', + 200: '#FFCC80', + 300: '#FFB74D', + 400: '#FFA726', + 500: '#FF9800', + DEFAULT: '#FF9800', + 600: '#FB8C00', + 700: '#F57C00', + 800: '#EF6C00', + 900: '#E65100', + A100: '#FFD180', + A200: '#FFAB40', + A400: '#FF9100', + A700: '#FF6D00' + }, + 'deep-orange': { + 50: '#FBE9E7', + 100: '#FFCCBC', + 200: '#FFAB91', + 300: '#FF8A65', + 400: '#FF7043', + 500: '#FF5722', + DEFAULT: '#FF5722', + 600: '#F4511E', + 700: '#E64A19', + 800: '#D84315', + 900: '#BF360C', + A100: '#FF9E80', + A200: '#FF6E40', + A400: '#FF3D00', + A700: '#DD2C00' + }, + yellow: { + 50: '#FFFDE7', + 100: '#FFF9C4', + 200: '#FFF59D', + 300: '#FFF176', + 400: '#FFEE58', + 500: '#FFEB3B', + DEFAULT: '#FFEB3B', + 600: '#FDD835', + 700: '#FBC02D', + 800: '#F9A825', + 900: '#F57F17', + A100: '#FFFF8D', + A200: '#FFFF00', + A400: '#FFEA00', + A700: '#FFD600' + }, + green: { + 50: '#E8F5E9', + 100: '#C8E6C9', + 200: '#A5D6A7', + 300: '#81C784', + 400: '#66BB6A', + 500: '#4CAF50', + DEFAULT: '#4CAF50', + 600: '#43A047', + 700: '#388E3C', + 800: '#2E7D32', + 900: '#1B5E20', + A100: '#B9F6CA', + A200: '#69F0AE', + A400: '#00E676', + A700: '#00C853' + }, + 'light-green': { + 50: '#F1F8E9', + 100: '#DCEDC8', + 200: '#C5E1A5', + 300: '#AED581', + 400: '#9CCC65', + 500: '#8BC34A', + DEFAULT: '#8BC34A', + 600: '#7CB342', + 700: '#689F38', + 800: '#558B2F', + 900: '#33691E', + A100: '#CCFF90', + A200: '#B2FF59', + A400: '#76FF03', + A700: '#64DD17' + }, + teal: { + 50: '#E0F2F1', + 100: '#B2DFDB', + 200: '#80CBC4', + 300: '#4DB6AC', + 400: '#26A69A', + 500: '#009688', + DEFAULT: '#009688', + 600: '#00897B', + 700: '#00796B', + 800: '#00695C', + 900: '#004D40', + A100: '#A7FFEB', + A200: '#64FFDA', + A400: '#1DE9B6', + A700: '#00BFA5' + }, + blue: { + 50: '#E3F2FD', + 100: '#BBDEFB', + 200: '#90CAF9', + 300: '#64B5F6', + 400: '#42A5F5', + 500: '#2196F3', + DEFAULT: '#2196F3', + 600: '#1E88E5', + 700: '#1976D2', + 800: '#1565C0', + 900: '#0D47A1', + A100: '#82B1FF', + A200: '#448AFF', + A400: '#2979FF', + A700: '#2962FF' + }, + 'light-blue': { + 50: '#E1F5FE', + 100: '#B3E5FC', + 200: '#81D4FA', + 300: '#4FC3F7', + 400: '#29B6F6', + 500: '#03A9F4', + DEFAULT: '#03A9F4', + 600: '#039BE5', + 700: '#0288D1', + 800: '#0277BD', + 900: '#01579B', + A100: '#80D8FF', + A200: '#40C4FF', + A400: '#00B0FF', + A700: '#0091EA' + }, + indigo: { + 50: '#E8EAF6', + 100: '#C5CAE9', + 200: '#9FA8DA', + 300: '#7986CB', + 400: '#5C6BC0', + 500: '#3F51B5', + DEFAULT: '#3F51B5', + 600: '#3949AB', + 700: '#303F9F', + 800: '#283593', + 900: '#1A237E', + A100: '#8C9EFF', + A200: '#536DFE', + A400: '#3D5AFE', + A700: '#304FFE' + }, + purple: { + 50: '#F3E5F5', + 100: '#E1BEE7', + 200: '#CE93D8', + 300: '#BA68C8', + 400: '#AB47BC', + 500: '#9C27B0', + DEFAULT: '#9C27B0', + 600: '#8E24AA', + 700: '#7B1FA2', + 800: '#6A1B9A', + 900: '#4A148C', + A100: '#EA80FC', + A200: '#E040FB', + A400: '#D500F9', + A700: '#AA00FF' + }, + 'deep-purple': { + 50: '#EDE7F6', + 100: '#D1C4E9', + 200: '#B39DDB', + 300: '#9575CD', + 400: '#7E57C2', + 500: '#673AB7', + DEFAULT: '#673AB7', + 600: '#5E35B1', + 700: '#512DA8', + 800: '#4527A0', + 900: '#311B92', + A100: '#B388FF', + A200: '#7C4DFF', + A400: '#651FFF', + A700: '#6200EA' + }, + pink: { + 50: '#FCE4EC', + 100: '#F8BBD0', + 200: '#F48FB1', + 300: '#F06292', + 400: '#EC407A', + 500: '#E91E63', + DEFAULT: '#E91E63', + 600: '#D81B60', + 700: '#C2185B', + 800: '#AD1457', + 900: '#880E4F', + A100: '#FF80AB', + A200: '#FF4081', + A400: '#F50057', + A700: '#C51162' + }, + lime: { + 50: '#F9FBE7', + 100: '#F0F4C3', + 200: '#E6EE9C', + 300: '#DCE775', + 400: '#D4E157', + 500: '#CDDC39', + DEFAULT: '#CDDC39', + 600: '#C0CA33', + 700: '#AFB42B', + 800: '#9E9D24', + 900: '#827717', + A100: '#F4FF81', + A200: '#EEFF41', + A400: '#C6FF00', + A700: '#AEEA00' + }, + amber: { + 50: '#FFF8E1', + 100: '#FFECB3', + 200: '#FFE082', + 300: '#FFD54F', + 400: '#FFCA28', + 500: '#FFC107', + DEFAULT: '#FFC107', + 600: '#FFB300', + 700: '#FFA000', + 800: '#FF8F00', + 900: '#FF6F00', + A100: '#FFE57F', + A200: '#FFD740', + A400: '#FFC400', + A700: '#FFAB00' + }, + brown: { + 50: '#EFEBE9', + 100: '#D7CCC8', + 200: '#BCAAA4', + 300: '#A1887F', + 400: '#8D6E63', + 500: '#795548', + DEFAULT: '#795548', + 600: '#6D4C41', + 700: '#5D4037', + 800: '#4E342E', + 900: '#3E2723', + A100: '#D7CCC8', + A200: '#BCAAA4', + A400: '#8D6E63', + A700: '#5D4037' + }, + 'blue-gray': { + 50: '#ECEFF1', + 100: '#CFD8DC', + 200: '#B0BEC5', + 300: '#90A4AE', + 400: '#78909C', + 500: '#607D8B', + DEFAULT: '#607D8B', + 600: '#546E7A', + 700: '#455A64', + 800: '#37474F', + 900: '#263238', + A100: '#CFD8DC', + A200: '#B0BEC5', + A400: '#78909C', + A700: '#455A64' + }, + cyan: { + 50: '#E0F7FA', + 100: '#B2EBF2', + 200: '#80DEEA', + 300: '#4DD0E1', + 400: '#26C6DA', + 500: '#00BCD4', + DEFAULT: '#00BCD4', + 600: '#00ACC1', + 700: '#0097A7', + 800: '#00838F', + 900: '#006064', + A100: '#84FFFF', + A200: '#18FFFF', + A400: '#00E5FF', + A700: '#00B8D4' + } + }), + columns: { + auto: 'auto', + 1: '1', + 2: '2', + 3: '3', + 4: '4', + 5: '5', + 6: '6', + 7: '7', + 8: '8', + 9: '9', + 10: '10', + 11: '11', + 12: '12', + '3xs': '16rem', + '2xs': '18rem', + xs: '32rem', + sm: '48rem', + md: '64rem', + lg: '80rem', + xl: '57.6rem', + '2xl': '65.6rem', + '3xl': '76.8rem', + '4xl': '89.6rem', + '5xl': '102.4rem', + '6xl': '115.2rem', + '7xl': '128rem' + }, + container: {}, + content: { + none: 'none' + }, + contrast: { + 0: '0', + 50: '.5', + 75: '.75', + 100: '1', + 125: '1.25', + 150: '1.5', + 200: '2' + }, + cursor: { + auto: 'auto', + default: 'default', + pointer: 'pointer', + wait: 'wait', + text: 'text', + move: 'move', + help: 'help', + 'not-allowed': 'not-allowed', + none: 'none', + 'context-menu': 'context-menu', + progress: 'progress', + cell: 'cell', + crosshair: 'crosshair', + 'vertical-text': 'vertical-text', + alias: 'alias', + copy: 'copy', + 'no-drop': 'no-drop', + grab: 'grab', + grabbing: 'grabbing', + 'all-scroll': 'all-scroll', + 'col-resize': 'col-resize', + 'row-resize': 'row-resize', + 'n-resize': 'n-resize', + 'e-resize': 'e-resize', + 's-resize': 's-resize', + 'w-resize': 'w-resize', + 'ne-resize': 'ne-resize', + 'nw-resize': 'nw-resize', + 'se-resize': 'se-resize', + 'sw-resize': 'sw-resize', + 'ew-resize': 'ew-resize', + 'ns-resize': 'ns-resize', + 'nesw-resize': 'nesw-resize', + 'nwse-resize': 'nwse-resize', + 'zoom-in': 'zoom-in', + 'zoom-out': 'zoom-out' + }, + divideColor: ({ theme }) => theme('borderColor'), + divideOpacity: ({ theme }) => theme('borderOpacity'), + divideWidth: ({ theme }) => theme('borderWidth'), + dropShadow: { + sm: '0 1px 1px rgba(0,0,0,0.05)', + DEFAULT: ['0 1px 2px rgba(0, 0, 0, 0.1)', '0 1px 1px rgba(0, 0, 0, 0.06)'], + md: ['0 4px 3px rgba(0, 0, 0, 0.07)', '0 2px 2px rgba(0, 0, 0, 0.06)'], + lg: ['0 10px 8px rgba(0, 0, 0, 0.04)', '0 4px 3px rgba(0, 0, 0, 0.1)'], + xl: ['0 20px 13px rgba(0, 0, 0, 0.03)', '0 8px 5px rgba(0, 0, 0, 0.08)'], + '2xl': '0 25px 25px rgba(0, 0, 0, 0.15)', + none: '0 0 #0000' + }, + fill: ({ theme }) => ({ + none: 'none', + ...theme('colors') + }), + flex: { + 1: '1 1 0%', + auto: '1 1 auto', + initial: '0 1 auto', + none: 'none' + }, + flexBasis: ({ theme }) => ({ + auto: 'auto', + ...theme('spacing'), + '1/2': '50%', + '1/3': '33.333333%', + '2/3': '66.666667%', + '1/4': '25%', + '2/4': '50%', + '3/4': '75%', + '1/5': '20%', + '2/5': '40%', + '3/5': '60%', + '4/5': '80%', + '1/6': '16.666667%', + '2/6': '33.333333%', + '3/6': '50%', + '4/6': '66.666667%', + '5/6': '83.333333%', + '1/12': '8.333333%', + '2/12': '16.666667%', + '3/12': '25%', + '4/12': '33.333333%', + '5/12': '41.666667%', + '6/12': '50%', + '7/12': '58.333333%', + '8/12': '66.666667%', + '9/12': '75%', + '10/12': '83.333333%', + '11/12': '91.666667%', + full: '100%' + }), + flexGrow: { + 0: '0', + DEFAULT: '1' + }, + flexShrink: { + 0: '0', + DEFAULT: '1' + }, + fontFamily: { + sans: [ + 'Inter var', + 'Roboto', + '-apple-system', + 'BlinkMacSystemFont', + '"Segoe UI"', + 'Roboto', + '"Helvetica Neue"', + 'Arial', + '"Noto Sans"', + 'sans-serif', + '"Apple Color Emoji"', + '"Segoe UI Emoji"', + '"Segoe UI Symbol"', + '"Noto Color Emoji"' + ], + serif: ['ui-serif', 'Georgia', 'Cambria', '"Times New Roman"', 'Times', 'serif'], + mono: [ + 'ui-monospace', + 'SFMono-Regular', + 'Menlo', + 'Monaco', + 'Consolas', + '"Liberation Mono"', + '"Courier New"', + 'monospace' + ] + }, + fontSize: { + xs: '1rem', + sm: '1.2rem', + md: '1.3rem', + base: '1.4rem', + lg: '1.6rem', + xl: '1.8rem', + '2xl': '2rem', + '3xl': '2.4rem', + '4xl': '3.2rem', + '5xl': '3.6rem', + '6xl': '4rem', + '7xl': '4.8rem', + '8xl': '6.4rem', + '9xl': '9.6rem', + '10xl': '12.8rem', + 10: ['1rem'], + 11: ['1.1rem'], + 12: ['1.2rem'], + 13: ['1.3rem'], + 14: ['1.4rem'], + 15: ['1.5rem'], + 16: ['1.6rem'], + 17: ['1.7rem'], + 18: ['1.8rem'], + 19: ['1.9rem'], + 20: ['2rem'], + 24: ['2.4rem'], + 28: ['2.8rem'], + 32: ['3.2rem'], + 36: ['3.6rem'], + 40: ['4rem'], + 44: ['4.4rem'], + 48: ['4.8rem'], + 52: ['5.2rem'], + 56: ['5.6rem'], + 60: ['6rem'], + 64: ['6.4rem'], + 68: ['6.8rem'], + 72: ['7.2rem'], + 96: ['9.6rem'], + 128: ['12.8rem'] + }, + fontWeight: { + thin: '100', + extralight: '200', + light: '300', + normal: '400', + medium: '500', + semibold: '600', + bold: '700', + extrabold: '800', + black: '900', + 100: '100', + 200: '200', + 300: '300', + 400: '400', + 500: '500', + 600: '600', + 700: '700', + 800: '800', + 900: '900' + }, + gap: ({ theme }) => theme('spacing'), + gradientColorStops: ({ theme }) => theme('colors'), + gradientColorStopPositions: { + '0%': '0%', + '5%': '5%', + '10%': '10%', + '15%': '15%', + '20%': '20%', + '25%': '25%', + '30%': '30%', + '35%': '35%', + '40%': '40%', + '45%': '45%', + '50%': '50%', + '55%': '55%', + '60%': '60%', + '65%': '65%', + '70%': '70%', + '75%': '75%', + '80%': '80%', + '85%': '85%', + '90%': '90%', + '95%': '95%', + '100%': '100%' + }, + grayscale: { + 0: '0', + DEFAULT: '100%' + }, + gridAutoColumns: { + auto: 'auto', + min: 'min-content', + max: 'max-content', + fr: 'minmax(0, 1fr)' + }, + gridAutoRows: { + auto: 'auto', + min: 'min-content', + max: 'max-content', + fr: 'minmax(0, 1fr)' + }, + gridColumn: { + auto: 'auto', + 'span-1': 'span 1 / span 1', + 'span-2': 'span 2 / span 2', + 'span-3': 'span 3 / span 3', + 'span-4': 'span 4 / span 4', + 'span-5': 'span 5 / span 5', + 'span-6': 'span 6 / span 6', + 'span-7': 'span 7 / span 7', + 'span-8': 'span 8 / span 8', + 'span-9': 'span 9 / span 9', + 'span-10': 'span 10 / span 10', + 'span-11': 'span 11 / span 11', + 'span-12': 'span 12 / span 12', + 'span-full': '1 / -1' + }, + gridColumnEnd: { + auto: 'auto', + 1: '1', + 2: '2', + 3: '3', + 4: '4', + 5: '5', + 6: '6', + 7: '7', + 8: '8', + 9: '9', + 10: '10', + 11: '11', + 12: '12', + 13: '13' + }, + gridColumnStart: { + auto: 'auto', + 1: '1', + 2: '2', + 3: '3', + 4: '4', + 5: '5', + 6: '6', + 7: '7', + 8: '8', + 9: '9', + 10: '10', + 11: '11', + 12: '12', + 13: '13' + }, + gridRow: { + auto: 'auto', + 'span-1': 'span 1 / span 1', + 'span-2': 'span 2 / span 2', + 'span-3': 'span 3 / span 3', + 'span-4': 'span 4 / span 4', + 'span-5': 'span 5 / span 5', + 'span-6': 'span 6 / span 6', + 'span-full': '1 / -1' + }, + gridRowEnd: { + auto: 'auto', + 1: '1', + 2: '2', + 3: '3', + 4: '4', + 5: '5', + 6: '6', + 7: '7' + }, + gridRowStart: { + auto: 'auto', + 1: '1', + 2: '2', + 3: '3', + 4: '4', + 5: '5', + 6: '6', + 7: '7' + }, + gridTemplateColumns: { + none: 'none', + 1: 'repeat(1, minmax(0, 1fr))', + 2: 'repeat(2, minmax(0, 1fr))', + 3: 'repeat(3, minmax(0, 1fr))', + 4: 'repeat(4, minmax(0, 1fr))', + 5: 'repeat(5, minmax(0, 1fr))', + 6: 'repeat(6, minmax(0, 1fr))', + 7: 'repeat(7, minmax(0, 1fr))', + 8: 'repeat(8, minmax(0, 1fr))', + 9: 'repeat(9, minmax(0, 1fr))', + 10: 'repeat(10, minmax(0, 1fr))', + 11: 'repeat(11, minmax(0, 1fr))', + 12: 'repeat(12, minmax(0, 1fr))' + }, + gridTemplateRows: { + none: 'none', + 1: 'repeat(1, minmax(0, 1fr))', + 2: 'repeat(2, minmax(0, 1fr))', + 3: 'repeat(3, minmax(0, 1fr))', + 4: 'repeat(4, minmax(0, 1fr))', + 5: 'repeat(5, minmax(0, 1fr))', + 6: 'repeat(6, minmax(0, 1fr))' + }, + height: ({ theme }) => ({ + auto: 'auto', + ...theme('spacing'), + '1/2': '50%', + '1/3': '33.333333%', + '2/3': '66.666667%', + '1/4': '25%', + '2/4': '50%', + '3/4': '75%', + '1/5': '20%', + '2/5': '40%', + '3/5': '60%', + '4/5': '80%', + '1/6': '16.666667%', + '2/6': '33.333333%', + '3/6': '50%', + '4/6': '66.666667%', + '5/6': '83.333333%', + full: '100%', + screen: '100vh', + min: 'min-content', + max: 'max-content', + fit: 'fit-content' + }), + hueRotate: { + '-180': '-180deg', + '-90': '-90deg', + '-60': '-60deg', + '-30': '-30deg', + '-15': '-15deg', + 0: '0deg', + 15: '15deg', + 30: '30deg', + 60: '60deg', + 90: '90deg', + 180: '180deg' + }, + inset: (theme, { negative }) => ({ + auto: 'auto', + ...theme('spacing'), + ...negative(theme('spacing')), + '1/2': '50%', + '1/3': '33.333333%', + '2/3': '66.666667%', + '1/4': '25%', + '2/4': '50%', + '3/4': '75%', + full: '100%', + '-1/2': '-50%', + '-1/3': '-33.333333%', + '-2/3': '-66.666667%', + '-1/4': '-25%', + '-2/4': '-50%', + '-3/4': '-75%', + '-full': '-100%' + }), + invert: { + 0: '0', + DEFAULT: '100%' + }, + keyframes: { + spin: { + to: { + transform: 'rotate(360deg)' + } + }, + ping: { + '75%, 100%': { + transform: 'scale(2)', + opacity: '0' + } + }, + pulse: { + '50%': { + opacity: '.5' + } + }, + bounce: { + '0%, 100%': { + transform: 'translateY(-25%)', + animationTimingFunction: 'cubic-bezier(0.8,0,1,1)' + }, + '50%': { + transform: 'none', + animationTimingFunction: 'cubic-bezier(0,0,0.2,1)' + } + } + }, + letterSpacing: { + tighter: '-0.05em', + tight: '-0.025em', + normal: '0em', + wide: '0.025em', + wider: '0.05em', + widest: '0.1em' + }, + lineHeight: { + none: '1', + tight: '1.25', + snug: '1.375', + normal: '1.5', + relaxed: '1.625', + loose: '2', + 3: '1.2rem', + 4: '1.6rem', + 5: '2rem', + 6: '2.4rem', + 7: '2.8rem', + 8: '3.2rem', + 9: '3.6rem', + 10: '4rem' + }, + listStyleType: { + none: 'none', + disc: 'disc', + decimal: 'decimal' + }, + listStyleImage: { + none: 'none' + }, + margin: (theme, { negative }) => ({ + auto: 'auto', + ...theme('spacing'), + ...negative(theme('spacing')) + }), + lineClamp: { + 1: '1', + 2: '2', + 3: '3', + 4: '4', + 5: '5', + 6: '6' + }, + maxHeight: ({ theme }) => ({ + none: 'none', + ...theme('spacing'), + full: '100%', + screen: '100vh', + min: 'min-content', + max: 'max-content', + fit: 'fit-content', + auto: 'auto' + }), + maxWidth: (theme, { breakpoints }) => ({ + none: 'none', + ...theme('spacing'), + full: '100%', + min: 'min-content', + max: 'max-content', + fit: 'fit-content', + prose: '65ch', + ...breakpoints(theme('screens')) + }), + minHeight: ({ theme }) => ({ + auto: 'auto', + ...theme('spacing'), + full: '100%', + screen: '100vh', + min: 'min-content', + max: 'max-content', + fit: 'fit-content' + }), + minWidth: ({ theme }) => ({ + ...theme('spacing'), + full: '100%', + min: 'min-content', + max: 'max-content', + screen: '100vw', + fit: 'fit-content' + }), + objectPosition: { + bottom: 'bottom', + center: 'center', + left: 'left', + 'left-bottom': 'left bottom', + 'left-top': 'left top', + right: 'right', + 'right-bottom': 'right bottom', + 'right-top': 'right top', + top: 'top' + }, + opacity: { + 0: '0', + 5: '0.05', + 10: '0.1', + 20: '0.2', + 25: '0.25', + 30: '0.3', + 40: '0.4', + 50: '0.5', + 60: '0.6', + 70: '0.7', + 75: '0.75', + 80: '0.8', + 90: '0.9', + 95: '0.95', + 100: '1' + }, + order: { + first: '-9999', + last: '9999', + none: '0', + 1: '1', + 2: '2', + 3: '3', + 4: '4', + 5: '5', + 6: '6', + 7: '7', + 8: '8', + 9: '9', + 10: '10', + 11: '11', + 12: '12' + }, + outlineColor: ({ theme }) => theme('colors'), + outlineOffset: { + 0: '0px', + 1: '1px', + 2: '2px', + 4: '4px', + 8: '8px' + }, + outlineWidth: { + 0: '0px', + 1: '1px', + 2: '2px', + 4: '4px', + 8: '8px' + }, + padding: ({ theme }) => theme('spacing'), + placeholderColor: ({ theme }) => theme('colors'), + placeholderOpacity: ({ theme }) => theme('opacity'), + ringColor: ({ theme }) => ({ + DEFAULT: theme('colors.blue.500', '#3b82f6'), + ...theme('colors') + }), + ringOffsetColor: ({ theme }) => theme('colors'), + ringOffsetWidth: { + 0: '0px', + 1: '1px', + 2: '2px', + 4: '4px', + 8: '8px' + }, + ringOpacity: ({ theme }) => ({ + DEFAULT: '0.5', + ...theme('opacity') + }), + ringWidth: { + DEFAULT: '3px', + 0: '0px', + 1: '1px', + 2: '2px', + 4: '4px', + 8: '8px' + }, + rotate: { + '-180': '-180deg', + '-90': '-90deg', + '-45': '-45deg', + '-12': '-12deg', + '-6': '-6deg', + '-3': '-3deg', + '-2': '-2deg', + '-1': '-1deg', + 0: '0deg', + 1: '1deg', + 2: '2deg', + 3: '3deg', + 6: '6deg', + 12: '12deg', + 45: '45deg', + 90: '90deg', + 180: '180deg' + }, + saturate: { + 0: '0', + 50: '.5', + 100: '1', + 150: '1.5', + 200: '2' + }, + scale: { + 0: '0', + 50: '.5', + 75: '.75', + 90: '.9', + 95: '.95', + 100: '1', + 105: '1.05', + 110: '1.1', + 125: '1.25', + 150: '1.5' + }, + screens: { + sm: '600px', + md: '960px', + lg: '1280px', + xl: '1920px', + print: { raw: 'print' } + }, + scrollMargin: ({ theme }) => ({ + ...theme('spacing') + }), + scrollPadding: ({ theme }) => theme('spacing'), + sepia: { + 0: '0', + DEFAULT: '100%' + }, + skew: { + '-12': '-12deg', + '-6': '-6deg', + '-3': '-3deg', + '-2': '-2deg', + '-1': '-1deg', + 0: '0deg', + 1: '1deg', + 2: '2deg', + 3: '3deg', + 6: '6deg', + 12: '12deg' + }, + space: (theme, { negative }) => ({ + ...theme('spacing'), + ...negative(theme('spacing')) + }), + spacing: { + xs: '32rem', + sm: '48rem', + md: '64rem', + lg: '80rem', + xl: '96rem', + '2xl': '65.6rem', + '3xl': '76.8rem', + '4xl': '89.6rem', + '5xl': '102.4rem', + '6xl': '115.2rem', + '7xl': '128rem', + px: '1px', + 0: '0px', + 0.5: '0.05rem', + 1: '0.1rem', + 1.5: '0.15rem', + 2: '0.2rem', + 2.5: '0.25rem', + 3: '0.3rem', + 3.5: '0.35rem', + 4: '0.4rem', + 5: '0.5rem', + 6: '0.6rem', + 7: '0.7rem', + 8: '0.8rem', + 9: '0.9rem', + 10: '1.0rem', + 11: '1.1rem', + 12: '1.2rem', + 14: '1.4rem', + 16: '1.6rem', + 20: '2rem', + 24: '2.4rem', + 28: '2.8rem', + 32: '3.2rem', + 36: '3.6rem', + 40: '4rem', + 44: '4.4rem', + 48: '4.8rem', + 52: '5.2rem', + 56: '5.6rem', + 60: '6rem', + 64: '6.4rem', + 68: '6.8rem', + 72: '7.2rem', + 76: '7.6rem', + 80: '8rem', + 84: '8.4rem', + 88: '8.8rem', + 92: '9.2rem', + 96: '9.6rem', + 112: '11.2rem', + 120: '12rem', + 128: '12.8rem', + 136: '13.6rem', + 144: '14.4rem', + 160: '16rem', + 192: '19.2rem', + 200: '20rem', + 208: '20.8rem', + 216: '21.6rem', + 224: '22.4rem', + 256: '25.6rem', + 288: '28.8rem', + 320: '32rem', + 360: '36rem', + 384: '38.4rem', + 400: '40rem', + 480: '48rem', + 512: '51.2rem', + 640: '64rem' + }, + stroke: ({ theme }) => ({ + none: 'none', + ...theme('colors') + }), + strokeWidth: { + 0: '0', + 1: '1', + 2: '2' + }, + supports: {}, + data: {}, + textColor: ({ theme }) => theme('colors'), + textDecorationColor: ({ theme }) => theme('colors'), + textDecorationThickness: { + auto: 'auto', + 'from-font': 'from-font', + 0: '0px', + 1: '1px', + 2: '2px', + 4: '4px', + 8: '8px' + }, + textIndent: ({ theme }) => ({ + ...theme('spacing') + }), + textOpacity: ({ theme }) => theme('opacity'), + textUnderlineOffset: { + auto: 'auto', + 0: '0px', + 1: '1px', + 2: '2px', + 4: '4px', + 8: '8px' + }, + transformOrigin: { + center: 'center', + top: 'top', + 'top-right': 'top right', + right: 'right', + 'bottom-right': 'bottom right', + bottom: 'bottom', + 'bottom-left': 'bottom left', + left: 'left', + 'top-left': 'top left' + }, + transitionDelay: { + 0: '0s', + 75: '75ms', + 100: '100ms', + 150: '150ms', + 200: '200ms', + 300: '300ms', + 500: '500ms', + 700: '700ms', + 1000: '1000ms' + }, + transitionDuration: { + DEFAULT: '150ms', + 0: '0s', + 75: '75ms', + 100: '100ms', + 150: '150ms', + 200: '200ms', + 300: '300ms', + 500: '500ms', + 700: '700ms', + 1000: '1000ms' + }, + transitionProperty: { + none: 'none', + all: 'all', + DEFAULT: + 'color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter', + colors: 'color, background-color, border-color, text-decoration-color, fill, stroke', + opacity: 'opacity', + shadow: 'box-shadow', + transform: 'transform' + }, + transitionTimingFunction: { + DEFAULT: 'cubic-bezier(0.4, 0, 0.2, 1)', + linear: 'linear', + in: 'cubic-bezier(0.4, 0, 1, 1)', + out: 'cubic-bezier(0, 0, 0.2, 1)', + 'in-out': 'cubic-bezier(0.4, 0, 0.2, 1)' + }, + translate: (theme, { negative }) => ({ + ...theme('spacing'), + ...negative(theme('spacing')), + '1/2': '50%', + '1/3': '33.333333%', + '2/3': '66.666667%', + '1/4': '25%', + '2/4': '50%', + '3/4': '75%', + full: '100%', + '-1/2': '-50%', + '-1/3': '-33.333333%', + '-2/3': '-66.666667%', + '-1/4': '-25%', + '-2/4': '-50%', + '-3/4': '-75%', + '-full': '-100%' + }), + width: ({ theme }) => ({ + auto: 'auto', + ...theme('spacing'), + '1/2': '50%', + '1/3': '33.333333%', + '2/3': '66.666667%', + '1/4': '25%', + '2/4': '50%', + '3/4': '75%', + '1/5': '20%', + '2/5': '40%', + '3/5': '60%', + '4/5': '80%', + '1/6': '16.666667%', + '2/6': '33.333333%', + '3/6': '50%', + '4/6': '66.666667%', + '5/6': '83.333333%', + '1/12': '8.333333%', + '2/12': '16.666667%', + '3/12': '25%', + '4/12': '33.333333%', + '5/12': '41.666667%', + '6/12': '50%', + '7/12': '58.333333%', + '8/12': '66.666667%', + '9/12': '75%', + '10/12': '83.333333%', + '11/12': '91.666667%', + full: '100%', + screen: '100vw', + min: 'min-content', + max: 'max-content', + fit: 'fit-content' + }), + willChange: { + auto: 'auto', + scroll: 'scroll-position', + contents: 'contents', + transform: 'transform' + }, + zIndex: { + auto: 'auto', + '-1': -1, + 0: '0', + 10: '10', + 20: '20', + 30: '30', + 40: '40', + 50: '50', + 99: '99', + 999: '999', + 9999: '9999' + }, + extend: { + // @tailwindcss/typography + typography: ({ theme }) => ({ + DEFAULT: { + css: { + fontSize: '1.4rem' + } + }, + sm: { + css: { + fontSize: '1.2rem' + } + }, + lg: { + css: { + fontSize: '1.6rem' + } + } + }) + } + }, + variantOrder: [ + 'first', + 'last', + 'odd', + 'even', + 'visited', + 'checked', + 'empty', + 'read-only', + 'group-hover', + 'group-focus', + 'focus-within', + 'hover', + 'focus', + 'focus-visible', + 'active', + 'disabled' + ], + plugins: [ + // eslint-disable-next-line import/no-dynamic-require + require(path.resolve(__dirname, 'src/@fuse/tailwind/plugins/icon-size')), + // Other third party and/or custom plugins + require('@tailwindcss/typography')({ modifiers: ['sm', 'lg'] }), + require('@tailwindcss/aspect-ratio') + ] +}; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..c0324bc --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,52 @@ +{ + "compilerOptions": { + "baseUrl": "./", + "paths": { + "@fuse/*": ["./src/@fuse/*"], + "@history*": ["./src/@history"], + "@lodash": ["./src/@lodash"], + "@mock-api/*": ["./src/@mock-api/*"], + "@schema": ["./src/@schema"], + "app/store": ["./src/app/store/index"], + "app/store/*": ["./src/app/store/*"], + "app/shared-components/*": ["./src/app/shared-components/*"], + "app/configs/*": ["./src/app/configs/*"], + "app/theme-layouts/*": ["./src/app/theme-layouts/*"], + "app/AppContext": ["./src/app/AppContext"] + }, + "declaration": true, + "target": "esnext", + "lib": [ + "dom", + "dom.iterable", + "es2020", + "scripthost" + ], + "plugins": [{ "name": "typescript-plugin-css-modules" }], + "allowJs": true, + "skipLibCheck": true, + "skipDefaultLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": false, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true, + "module": "es2022", + "moduleResolution": "Node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx" + }, + "exclude": [ + "src/app/main/documentation/material-ui-components/components/**/*", + "src/app/main/documentation/material-ui-components/pages/**/*", + "node_modules" + ], + "include": [ + "src", + "tailwind.config.js", + "vite.config.mts", + "vite-env.d.ts" + ], +} diff --git a/vite-env.d.ts b/vite-env.d.ts new file mode 100644 index 0000000..d3b9adb --- /dev/null +++ b/vite-env.d.ts @@ -0,0 +1,15 @@ +/// + +interface ImportMetaEnv { + readonly VITE_MAP_KEY: string; + readonly VITE_API_KEY: string; + readonly VITE_AUTH_DOMAIN: string; + readonly VITE_DATABASE_URL: string; + readonly VITE_PROJECT_ID: string; + readonly VITE_STORAGE_BUCKET: string; + readonly VITE_MESSAGING_SENDER_ID: string; +} + +interface ImportMeta { + readonly env: ImportMetaEnv; +} diff --git a/vite.config.mts b/vite.config.mts new file mode 100644 index 0000000..657ea62 --- /dev/null +++ b/vite.config.mts @@ -0,0 +1,63 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import svgrPlugin from 'vite-plugin-svgr'; +import tsconfigPaths from 'vite-tsconfig-paths' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + react({ + jsxImportSource: '@emotion/react', + }), + tsconfigPaths({ + parseNative: false, + }), + svgrPlugin(), + { + name: 'custom-hmr-control', + handleHotUpdate({ file, server }) { + if (file.includes('src/app/configs/')) { + server.ws.send({ + type: 'full-reload', + }); + return []; + } + return; + }, + }, + ], + build: { + outDir: 'build', + }, + server: { + open: true, + port: 3000 + }, + define:{ + global: 'window', + }, + resolve: { + alias: { + '@': '/src', + "@fuse": "/src/@fuse", + "@history": "/src/@history", + "@lodash": "/src/@lodash", + "@mock-api": "/src/@mock-api", + "@schema": "/src/@schema", + "app/store": "/src/app/store", + "app/shared-components": "/src/app/shared-components", + "app/configs": "/src/app/configs", + "app/theme-layouts": "/src/app/theme-layouts", + "app/AppContext": "/src/app/AppContext" + }, + }, + "optimizeDeps": { + "include": ['@mui/icons-material','@mui/material','@mui/base','@mui/styles','@mui/system','@mui/utils','@emotion/cache','@emotion/react','@emotion/styled','lodash'], + "exclude": [], + "esbuildOptions": { + "loader": { + ".js": "jsx", + }, + }, + } +}); diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..393f868 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,9052 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + +"@adobe/css-tools@^4.0.1": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.3.tgz#90749bde8b89cd41764224f5aac29cd4138f75ff" + integrity sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ== + +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@apidevtools/json-schema-ref-parser@9.0.6": + version "9.0.6" + resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.6.tgz#5d9000a3ac1fd25404da886da6b266adcd99cf1c" + integrity sha512-M3YgsLjI0lZxvrpeGVk9Ap032W6TPQkH6pRAZz81Ac3WUNF79VQooAFnp8umjvVzUmD93NkogxEwbSce7qMsUg== + dependencies: + "@jsdevtools/ono" "^7.1.3" + call-me-maybe "^1.0.1" + js-yaml "^3.13.1" + +"@apidevtools/openapi-schemas@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz#9fa08017fb59d80538812f03fc7cac5992caaa17" + integrity sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ== + +"@apidevtools/swagger-methods@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz#b789a362e055b0340d04712eafe7027ddc1ac267" + integrity sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg== + +"@apidevtools/swagger-parser@^10.0.2", "@apidevtools/swagger-parser@^10.1.0": + version "10.1.0" + resolved "https://registry.yarnpkg.com/@apidevtools/swagger-parser/-/swagger-parser-10.1.0.tgz#a987d71e5be61feb623203be0c96e5985b192ab6" + integrity sha512-9Kt7EuS/7WbMAUv2gSziqjvxwDbFSg3Xeyfuj5laUODX8o/k/CpsAKiQ8W7/R88eXFTMbJYg6+7uAmOWNKmwnw== + dependencies: + "@apidevtools/json-schema-ref-parser" "9.0.6" + "@apidevtools/openapi-schemas" "^2.1.0" + "@apidevtools/swagger-methods" "^3.0.2" + "@jsdevtools/ono" "^7.1.3" + ajv "^8.6.3" + ajv-draft-04 "^1.0.0" + call-me-maybe "^1.0.1" + +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" + integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== + dependencies: + "@babel/highlight" "^7.23.4" + chalk "^2.4.2" + +"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.3", "@babel/compat-data@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" + integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== + +"@babel/core@7.23.7": + version "7.23.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.7.tgz#4d8016e06a14b5f92530a13ed0561730b5c6483f" + integrity sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.23.7" + "@babel/parser" "^7.23.6" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.7" + "@babel/types" "^7.23.6" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/core@^7.1.6", "@babel/core@^7.13.16", "@babel/core@^7.16.0", "@babel/core@^7.21.3", "@babel/core@^7.23.5": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.9.tgz#b028820718000f267870822fec434820e9b1e4d1" + integrity sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.23.9" + "@babel/parser" "^7.23.9" + "@babel/template" "^7.23.9" + "@babel/traverse" "^7.23.9" + "@babel/types" "^7.23.9" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/eslint-parser@7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.23.3.tgz#7bf0db1c53b54da0c8a12627373554a0828479ca" + integrity sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw== + dependencies: + "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" + eslint-visitor-keys "^2.1.0" + semver "^6.3.1" + +"@babel/eslint-parser@^7.16.3": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.23.9.tgz#052c13b39144e21fdd1e03fc9b67e98976a1ebfc" + integrity sha512-xPndlO7qxiJbn0ATvfXQBjCS7qApc9xmKHArgI/FTEFxXas5dnjC/VqM37lfZun9dclRYcn+YQAr6uDFy0bB2g== + dependencies: + "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" + eslint-visitor-keys "^2.1.0" + semver "^6.3.1" + +"@babel/generator@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" + integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== + dependencies: + "@babel/types" "^7.23.6" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.18.6", "@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" + integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.23.6", "@babel/helper-create-class-features-plugin@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.9.tgz#fddfdf51fca28f23d16b9e3935a4732690acfad6" + integrity sha512-B2L9neXTIyPQoXDm+NtovPvG6VOLWnaXu3BIeVDWwdKFgG30oNa6CqVGiJPDWQwIAK49t9gnQI9c6K6RzabiKw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-member-expression-to-functions" "^7.23.0" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" + integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.4.4": + version "0.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz#64df615451cb30e94b59a9696022cffac9a10088" + integrity sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + +"@babel/helper-define-polyfill-provider@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz#465805b7361f461e86c680f1de21eaf88c25901b" + integrity sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-member-expression-to-functions@^7.22.15", "@babel/helper-member-expression-to-functions@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" + integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== + dependencies: + "@babel/types" "^7.23.0" + +"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-module-transforms@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" + integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +"@babel/helper-remap-async-to-generator@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" + integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-wrap-function" "^7.22.20" + +"@babel/helper-replace-supers@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" + integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/helper-validator-option@^7.22.15", "@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + +"@babel/helper-wrap-function@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" + integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== + dependencies: + "@babel/helper-function-name" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/types" "^7.22.19" + +"@babel/helpers@^7.23.7", "@babel/helpers@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.9.tgz#c3e20bbe7f7a7e10cb9b178384b4affdf5995c7d" + integrity sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ== + dependencies: + "@babel/template" "^7.23.9" + "@babel/traverse" "^7.23.9" + "@babel/types" "^7.23.9" + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + +"@babel/node@7.22.19": + version "7.22.19" + resolved "https://registry.yarnpkg.com/@babel/node/-/node-7.22.19.tgz#d0bd1e84e3d45eb2eeb68046d6dc22161786222b" + integrity sha512-VsKSO9aEHdO16NdtqkJfrXZ9Sxlna1BVnBbToWr1KGdI3cyIk6KqOoa8mWvpK280lJDOwJqxvnl994KmLhq1Yw== + dependencies: + "@babel/register" "^7.22.15" + commander "^4.0.1" + core-js "^3.30.2" + node-environment-flags "^1.0.5" + regenerator-runtime "^0.14.0" + v8flags "^3.1.1" + +"@babel/parser@*", "@babel/parser@^7.1.0", "@babel/parser@^7.1.6", "@babel/parser@^7.13.16", "@babel/parser@^7.20.7", "@babel/parser@^7.23.6", "@babel/parser@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" + integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== + +"@babel/parser@7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.6.tgz#ba1c9e512bda72a47e285ae42aff9d2a635a9e3b" + integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz#5cd1c87ba9380d0afb78469292c954fee5d2411a" + integrity sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz#f6652bb16b94f8f9c20c50941e16e9756898dc5d" + integrity sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.23.3" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.23.7": + version "7.23.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz#516462a95d10a9618f197d39ad291a9b47ae1d7b" + integrity sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-proposal-class-properties@^7.1.0", "@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.16.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-decorators@^7.16.4": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.9.tgz#126d947d62ee72022ec46813983c6dd861456fa3" + integrity sha512-hJhBCb0+NnTWybvWq2WpbCYDOcflSbx0t+BYP65e5R9GVnukiDTi+on5bFkk4p7QGuv190H6KfNiV9Knf/3cZA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.23.9" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-decorators" "^7.23.3" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.16.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.0.0": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" + integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== + dependencies: + "@babel/compat-data" "^7.20.5" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.20.7" + +"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.16.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" + integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.16.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" + integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== + +"@babel/plugin-proposal-private-property-in-object@7.21.11": + version "7.21.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz#69d597086b6760c4126525cfa154f34631ff272c" + integrity sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-decorators@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.23.3.tgz#a1d351d6c25bfdcf2e16f99b039101bc0ffcb0ca" + integrity sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz#084564e0f3cc21ea6c70c44cff984a1c0509729a" + integrity sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-assertions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz#9c05a7f592982aff1a2768260ad84bcd3f0c77fc" + integrity sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-attributes@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz#992aee922cf04512461d7dae3ff6951b90a2dc06" + integrity sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" + integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz#24f460c85dbbc983cd2b9c4994178bcc01df958f" + integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz#94c6dcfd731af90f27a79509f9ab7fb2120fc38b" + integrity sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-async-generator-functions@^7.23.7", "@babel/plugin-transform-async-generator-functions@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz#9adaeb66fc9634a586c5df139c6240d41ed801ce" + integrity sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-transform-async-to-generator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz#d1f513c7a8a506d43f47df2bf25f9254b0b051fa" + integrity sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw== + dependencies: + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.20" + +"@babel/plugin-transform-block-scoped-functions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz#fe1177d715fb569663095e04f3598525d98e8c77" + integrity sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-block-scoping@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz#b2d38589531c6c80fbe25e6b58e763622d2d3cf5" + integrity sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz#35c377db11ca92a785a718b6aa4e3ed1eb65dc48" + integrity sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-static-block@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz#2a202c8787a8964dd11dfcedf994d36bfc844ab5" + integrity sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.23.8": + version "7.23.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz#d08ae096c240347badd68cdf1b6d1624a6435d92" + integrity sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" + "@babel/helper-split-export-declaration" "^7.22.6" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz#652e69561fcc9d2b50ba4f7ac7f60dcf65e86474" + integrity sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/template" "^7.22.15" + +"@babel/plugin-transform-destructuring@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz#8c9ee68228b12ae3dff986e56ed1ba4f3c446311" + integrity sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-dotall-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz#3f7af6054882ede89c378d0cf889b854a993da50" + integrity sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-duplicate-keys@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz#664706ca0a5dfe8d066537f99032fc1dc8b720ce" + integrity sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-dynamic-import@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz#c7629e7254011ac3630d47d7f34ddd40ca535143" + integrity sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz#ea0d978f6b9232ba4722f3dbecdd18f450babd18" + integrity sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-export-namespace-from@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz#084c7b25e9a5c8271e987a08cf85807b80283191" + integrity sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-transform-flow-strip-types@^7.16.0", "@babel/plugin-transform-flow-strip-types@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz#cfa7ca159cc3306fab526fc67091556b51af26ff" + integrity sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-flow" "^7.23.3" + +"@babel/plugin-transform-for-of@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz#81c37e24171b37b370ba6aaffa7ac86bcb46f94e" + integrity sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-function-name@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz#8f424fcd862bf84cb9a1a6b42bc2f47ed630f8dc" + integrity sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw== + dependencies: + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-json-strings@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz#a871d9b6bd171976efad2e43e694c961ffa3714d" + integrity sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-transform-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz#8214665f00506ead73de157eba233e7381f3beb4" + integrity sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-logical-assignment-operators@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz#e599f82c51d55fac725f62ce55d3a0886279ecb5" + integrity sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz#e37b3f0502289f477ac0e776b05a833d853cabcc" + integrity sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-amd@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz#e19b55436a1416829df0a1afc495deedfae17f7d" + integrity sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz#661ae831b9577e52be57dd8356b734f9700b53b4" + integrity sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + +"@babel/plugin-transform-modules-systemjs@^7.23.3", "@babel/plugin-transform-modules-systemjs@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz#105d3ed46e4a21d257f83a2f9e2ee4203ceda6be" + integrity sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw== + dependencies: + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/plugin-transform-modules-umd@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz#5d4395fccd071dfefe6585a4411aa7d6b7d769e9" + integrity sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" + integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-new-target@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz#5491bb78ed6ac87e990957cea367eab781c4d980" + integrity sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-nullish-coalescing-operator@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz#45556aad123fc6e52189ea749e33ce090637346e" + integrity sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-transform-numeric-separator@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz#03d08e3691e405804ecdd19dd278a40cca531f29" + integrity sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-transform-object-rest-spread@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz#2b9c2d26bf62710460bdc0d1730d4f1048361b83" + integrity sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g== + dependencies: + "@babel/compat-data" "^7.23.3" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.23.3" + +"@babel/plugin-transform-object-super@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz#81fdb636dcb306dd2e4e8fd80db5b2362ed2ebcd" + integrity sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" + +"@babel/plugin-transform-optional-catch-binding@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz#318066de6dacce7d92fa244ae475aa8d91778017" + integrity sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-transform-optional-chaining@^7.23.3", "@babel/plugin-transform-optional-chaining@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz#6acf61203bdfc4de9d4e52e64490aeb3e52bd017" + integrity sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz#83ef5d1baf4b1072fa6e54b2b0999a7b2527e2af" + integrity sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-methods@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz#b2d7a3c97e278bfe59137a978d53b2c2e038c0e4" + integrity sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-property-in-object@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz#3ec711d05d6608fd173d9b8de39872d8dbf68bf5" + integrity sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-transform-property-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz#54518f14ac4755d22b92162e4a852d308a560875" + integrity sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz#70529f034dd1e561045ad3c8152a267f0d7b6200" + integrity sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-jsx-development@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" + integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.22.5" + +"@babel/plugin-transform-react-jsx-self@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz#ed3e7dadde046cce761a8e3cf003a13d1a7972d9" + integrity sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-jsx-source@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz#03527006bdc8775247a78643c51d4e715fe39a3e" + integrity sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" + integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/types" "^7.23.4" + +"@babel/plugin-transform-react-pure-annotations@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz#fabedbdb8ee40edf5da96f3ecfc6958e3783b93c" + integrity sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-regenerator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz#141afd4a2057298602069fce7f2dc5173e6c561c" + integrity sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + regenerator-transform "^0.15.2" + +"@babel/plugin-transform-reserved-words@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz#4130dcee12bd3dd5705c587947eb715da12efac8" + integrity sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-runtime@^7.16.4": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.9.tgz#2c64d0680fc8e09e1dfe8fd5c646fe72abd82004" + integrity sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ== + dependencies: + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + babel-plugin-polyfill-corejs2 "^0.4.8" + babel-plugin-polyfill-corejs3 "^0.9.0" + babel-plugin-polyfill-regenerator "^0.5.5" + semver "^6.3.1" + +"@babel/plugin-transform-shorthand-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz#97d82a39b0e0c24f8a981568a8ed851745f59210" + integrity sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-spread@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz#41d17aacb12bde55168403c6f2d6bdca563d362c" + integrity sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-sticky-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz#dec45588ab4a723cb579c609b294a3d1bd22ff04" + integrity sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-template-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz#5f0f028eb14e50b5d0f76be57f90045757539d07" + integrity sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typeof-symbol@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz#9dfab97acc87495c0c449014eb9c547d8966bca4" + integrity sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typescript@^7.23.3": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz#aa36a94e5da8d94339ae3a4e22d40ed287feb34c" + integrity sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.23.6" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-typescript" "^7.23.3" + +"@babel/plugin-transform-unicode-escapes@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz#1f66d16cab01fab98d784867d24f70c1ca65b925" + integrity sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-property-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz#19e234129e5ffa7205010feec0d94c251083d7ad" + integrity sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz#26897708d8f42654ca4ce1b73e96140fbad879dc" + integrity sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-sets-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz#4fb6f0a719c2c5859d11f6b55a050cc987f3799e" + integrity sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/preset-env@7.23.8": + version "7.23.8" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.8.tgz#7d6f8171ea7c221ecd28059e65ad37c20e441e3e" + integrity sha512-lFlpmkApLkEP6woIKprO6DO60RImpatTQKtz4sUcDjVcK8M8mQ4sZsuxaTMNOZf0sqAq/ReYW1ZBHnOQwKpLWA== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.23.3" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.23.3" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.23.7" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.23.3" + "@babel/plugin-syntax-import-attributes" "^7.23.3" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.23.3" + "@babel/plugin-transform-async-generator-functions" "^7.23.7" + "@babel/plugin-transform-async-to-generator" "^7.23.3" + "@babel/plugin-transform-block-scoped-functions" "^7.23.3" + "@babel/plugin-transform-block-scoping" "^7.23.4" + "@babel/plugin-transform-class-properties" "^7.23.3" + "@babel/plugin-transform-class-static-block" "^7.23.4" + "@babel/plugin-transform-classes" "^7.23.8" + "@babel/plugin-transform-computed-properties" "^7.23.3" + "@babel/plugin-transform-destructuring" "^7.23.3" + "@babel/plugin-transform-dotall-regex" "^7.23.3" + "@babel/plugin-transform-duplicate-keys" "^7.23.3" + "@babel/plugin-transform-dynamic-import" "^7.23.4" + "@babel/plugin-transform-exponentiation-operator" "^7.23.3" + "@babel/plugin-transform-export-namespace-from" "^7.23.4" + "@babel/plugin-transform-for-of" "^7.23.6" + "@babel/plugin-transform-function-name" "^7.23.3" + "@babel/plugin-transform-json-strings" "^7.23.4" + "@babel/plugin-transform-literals" "^7.23.3" + "@babel/plugin-transform-logical-assignment-operators" "^7.23.4" + "@babel/plugin-transform-member-expression-literals" "^7.23.3" + "@babel/plugin-transform-modules-amd" "^7.23.3" + "@babel/plugin-transform-modules-commonjs" "^7.23.3" + "@babel/plugin-transform-modules-systemjs" "^7.23.3" + "@babel/plugin-transform-modules-umd" "^7.23.3" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.23.3" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.23.4" + "@babel/plugin-transform-numeric-separator" "^7.23.4" + "@babel/plugin-transform-object-rest-spread" "^7.23.4" + "@babel/plugin-transform-object-super" "^7.23.3" + "@babel/plugin-transform-optional-catch-binding" "^7.23.4" + "@babel/plugin-transform-optional-chaining" "^7.23.4" + "@babel/plugin-transform-parameters" "^7.23.3" + "@babel/plugin-transform-private-methods" "^7.23.3" + "@babel/plugin-transform-private-property-in-object" "^7.23.4" + "@babel/plugin-transform-property-literals" "^7.23.3" + "@babel/plugin-transform-regenerator" "^7.23.3" + "@babel/plugin-transform-reserved-words" "^7.23.3" + "@babel/plugin-transform-shorthand-properties" "^7.23.3" + "@babel/plugin-transform-spread" "^7.23.3" + "@babel/plugin-transform-sticky-regex" "^7.23.3" + "@babel/plugin-transform-template-literals" "^7.23.3" + "@babel/plugin-transform-typeof-symbol" "^7.23.3" + "@babel/plugin-transform-unicode-escapes" "^7.23.3" + "@babel/plugin-transform-unicode-property-regex" "^7.23.3" + "@babel/plugin-transform-unicode-regex" "^7.23.3" + "@babel/plugin-transform-unicode-sets-regex" "^7.23.3" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.7" + babel-plugin-polyfill-corejs3 "^0.8.7" + babel-plugin-polyfill-regenerator "^0.5.4" + core-js-compat "^3.31.0" + semver "^6.3.1" + +"@babel/preset-env@^7.1.6", "@babel/preset-env@^7.16.4": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.9.tgz#beace3b7994560ed6bf78e4ae2073dff45387669" + integrity sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.23.3" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.23.3" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.23.7" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.23.3" + "@babel/plugin-syntax-import-attributes" "^7.23.3" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.23.3" + "@babel/plugin-transform-async-generator-functions" "^7.23.9" + "@babel/plugin-transform-async-to-generator" "^7.23.3" + "@babel/plugin-transform-block-scoped-functions" "^7.23.3" + "@babel/plugin-transform-block-scoping" "^7.23.4" + "@babel/plugin-transform-class-properties" "^7.23.3" + "@babel/plugin-transform-class-static-block" "^7.23.4" + "@babel/plugin-transform-classes" "^7.23.8" + "@babel/plugin-transform-computed-properties" "^7.23.3" + "@babel/plugin-transform-destructuring" "^7.23.3" + "@babel/plugin-transform-dotall-regex" "^7.23.3" + "@babel/plugin-transform-duplicate-keys" "^7.23.3" + "@babel/plugin-transform-dynamic-import" "^7.23.4" + "@babel/plugin-transform-exponentiation-operator" "^7.23.3" + "@babel/plugin-transform-export-namespace-from" "^7.23.4" + "@babel/plugin-transform-for-of" "^7.23.6" + "@babel/plugin-transform-function-name" "^7.23.3" + "@babel/plugin-transform-json-strings" "^7.23.4" + "@babel/plugin-transform-literals" "^7.23.3" + "@babel/plugin-transform-logical-assignment-operators" "^7.23.4" + "@babel/plugin-transform-member-expression-literals" "^7.23.3" + "@babel/plugin-transform-modules-amd" "^7.23.3" + "@babel/plugin-transform-modules-commonjs" "^7.23.3" + "@babel/plugin-transform-modules-systemjs" "^7.23.9" + "@babel/plugin-transform-modules-umd" "^7.23.3" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.23.3" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.23.4" + "@babel/plugin-transform-numeric-separator" "^7.23.4" + "@babel/plugin-transform-object-rest-spread" "^7.23.4" + "@babel/plugin-transform-object-super" "^7.23.3" + "@babel/plugin-transform-optional-catch-binding" "^7.23.4" + "@babel/plugin-transform-optional-chaining" "^7.23.4" + "@babel/plugin-transform-parameters" "^7.23.3" + "@babel/plugin-transform-private-methods" "^7.23.3" + "@babel/plugin-transform-private-property-in-object" "^7.23.4" + "@babel/plugin-transform-property-literals" "^7.23.3" + "@babel/plugin-transform-regenerator" "^7.23.3" + "@babel/plugin-transform-reserved-words" "^7.23.3" + "@babel/plugin-transform-shorthand-properties" "^7.23.3" + "@babel/plugin-transform-spread" "^7.23.3" + "@babel/plugin-transform-sticky-regex" "^7.23.3" + "@babel/plugin-transform-template-literals" "^7.23.3" + "@babel/plugin-transform-typeof-symbol" "^7.23.3" + "@babel/plugin-transform-unicode-escapes" "^7.23.3" + "@babel/plugin-transform-unicode-property-regex" "^7.23.3" + "@babel/plugin-transform-unicode-regex" "^7.23.3" + "@babel/plugin-transform-unicode-sets-regex" "^7.23.3" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.8" + babel-plugin-polyfill-corejs3 "^0.9.0" + babel-plugin-polyfill-regenerator "^0.5.5" + core-js-compat "^3.31.0" + semver "^6.3.1" + +"@babel/preset-flow@^7.0.0", "@babel/preset-flow@^7.13.13": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.23.3.tgz#8084e08b9ccec287bd077ab288b286fab96ffab1" + integrity sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-transform-flow-strip-types" "^7.23.3" + +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@7.23.3", "@babel/preset-react@^7.16.0": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.23.3.tgz#f73ca07e7590f977db07eb54dbe46538cc015709" + integrity sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-transform-react-display-name" "^7.23.3" + "@babel/plugin-transform-react-jsx" "^7.22.15" + "@babel/plugin-transform-react-jsx-development" "^7.22.5" + "@babel/plugin-transform-react-pure-annotations" "^7.23.3" + +"@babel/preset-typescript@^7.1.0", "@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.16.0": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz#14534b34ed5b6d435aa05f1ae1c5e7adcc01d913" + integrity sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/plugin-transform-modules-commonjs" "^7.23.3" + "@babel/plugin-transform-typescript" "^7.23.3" + +"@babel/register@^7.0.0", "@babel/register@^7.13.16", "@babel/register@^7.22.15": + version "7.23.7" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.23.7.tgz#485a5e7951939d21304cae4af1719fdb887bc038" + integrity sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ== + dependencies: + clone-deep "^4.0.1" + find-cache-dir "^2.0.0" + make-dir "^2.1.0" + pirates "^4.0.6" + source-map-support "^0.5.16" + +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + +"@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.8", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.9.tgz#47791a15e4603bb5f905bc0753801cf21d6345f7" + integrity sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/template@^7.22.15", "@babel/template@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a" + integrity sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" + +"@babel/traverse@7.23.7": + version "7.23.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.7.tgz#9a7bf285c928cb99b5ead19c3b1ce5b310c9c305" + integrity sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.6" + "@babel/types" "^7.23.6" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/traverse@^7.23.7", "@babel/traverse@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.9.tgz#2f9d6aead6b564669394c5ce0f9302bb65b9d950" + integrity sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.21.3", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.23.9", "@babel/types@^7.4.4": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002" + integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@emotion/babel-plugin@^11.11.0": + version "11.11.0" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz#c2d872b6a7767a9d176d007f5b31f7d504bb5d6c" + integrity sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/runtime" "^7.18.3" + "@emotion/hash" "^0.9.1" + "@emotion/memoize" "^0.8.1" + "@emotion/serialize" "^1.1.2" + babel-plugin-macros "^3.1.0" + convert-source-map "^1.5.0" + escape-string-regexp "^4.0.0" + find-root "^1.1.0" + source-map "^0.5.7" + stylis "4.2.0" + +"@emotion/cache@11.11.0", "@emotion/cache@^11.11.0": + version "11.11.0" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.11.0.tgz#809b33ee6b1cb1a625fef7a45bc568ccd9b8f3ff" + integrity sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ== + dependencies: + "@emotion/memoize" "^0.8.1" + "@emotion/sheet" "^1.2.2" + "@emotion/utils" "^1.2.1" + "@emotion/weak-memoize" "^0.3.1" + stylis "4.2.0" + +"@emotion/hash@^0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.1.tgz#4ffb0055f7ef676ebc3a5a91fb621393294e2f43" + integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== + +"@emotion/is-prop-valid@1.2.1", "@emotion/is-prop-valid@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz#23116cf1ed18bfeac910ec6436561ecb1a3885cc" + integrity sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw== + dependencies: + "@emotion/memoize" "^0.8.1" + +"@emotion/is-prop-valid@^0.8.2": + version "0.8.8" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" + integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== + dependencies: + "@emotion/memoize" "0.7.4" + +"@emotion/memoize@0.7.4": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" + integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== + +"@emotion/memoize@^0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" + integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== + +"@emotion/react@11.11.3": + version "11.11.3" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.3.tgz#96b855dc40a2a55f52a72f518a41db4f69c31a25" + integrity sha512-Cnn0kuq4DoONOMcnoVsTOR8E+AdnKFf//6kUWc4LCdnxj31pZWn7rIULd6Y7/Js1PiPHzn7SKCM9vB/jBni8eA== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.11.0" + "@emotion/cache" "^11.11.0" + "@emotion/serialize" "^1.1.3" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" + "@emotion/utils" "^1.2.1" + "@emotion/weak-memoize" "^0.3.1" + hoist-non-react-statics "^3.3.1" + +"@emotion/serialize@^1.1.2", "@emotion/serialize@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.3.tgz#84b77bfcfe3b7bb47d326602f640ccfcacd5ffb0" + integrity sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA== + dependencies: + "@emotion/hash" "^0.9.1" + "@emotion/memoize" "^0.8.1" + "@emotion/unitless" "^0.8.1" + "@emotion/utils" "^1.2.1" + csstype "^3.0.2" + +"@emotion/sheet@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.2.tgz#d58e788ee27267a14342303e1abb3d508b6d0fec" + integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== + +"@emotion/styled@11.11.0": + version "11.11.0" + resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.11.0.tgz#26b75e1b5a1b7a629d7c0a8b708fbf5a9cdce346" + integrity sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.11.0" + "@emotion/is-prop-valid" "^1.2.1" + "@emotion/serialize" "^1.1.2" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" + "@emotion/utils" "^1.2.1" + +"@emotion/unitless@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db" + integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw== + +"@emotion/unitless@^0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" + integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== + +"@emotion/use-insertion-effect-with-fallbacks@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" + integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== + +"@emotion/utils@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.1.tgz#bbab58465738d31ae4cb3dbb6fc00a5991f755e4" + integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== + +"@emotion/weak-memoize@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" + integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== + +"@esbuild/aix-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f" + integrity sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA== + +"@esbuild/android-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz#7ad65a36cfdb7e0d429c353e00f680d737c2aed4" + integrity sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA== + +"@esbuild/android-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.12.tgz#b0c26536f37776162ca8bde25e42040c203f2824" + integrity sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w== + +"@esbuild/android-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.12.tgz#cb13e2211282012194d89bf3bfe7721273473b3d" + integrity sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew== + +"@esbuild/darwin-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz#cbee41e988020d4b516e9d9e44dd29200996275e" + integrity sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g== + +"@esbuild/darwin-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz#e37d9633246d52aecf491ee916ece709f9d5f4cd" + integrity sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A== + +"@esbuild/freebsd-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz#1ee4d8b682ed363b08af74d1ea2b2b4dbba76487" + integrity sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA== + +"@esbuild/freebsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz#37a693553d42ff77cd7126764b535fb6cc28a11c" + integrity sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg== + +"@esbuild/linux-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz#be9b145985ec6c57470e0e051d887b09dddb2d4b" + integrity sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA== + +"@esbuild/linux-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz#207ecd982a8db95f7b5279207d0ff2331acf5eef" + integrity sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w== + +"@esbuild/linux-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz#d0d86b5ca1562523dc284a6723293a52d5860601" + integrity sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA== + +"@esbuild/linux-loong64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz#9a37f87fec4b8408e682b528391fa22afd952299" + integrity sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA== + +"@esbuild/linux-mips64el@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz#4ddebd4e6eeba20b509d8e74c8e30d8ace0b89ec" + integrity sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w== + +"@esbuild/linux-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz#adb67dadb73656849f63cd522f5ecb351dd8dee8" + integrity sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg== + +"@esbuild/linux-riscv64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz#11bc0698bf0a2abf8727f1c7ace2112612c15adf" + integrity sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg== + +"@esbuild/linux-s390x@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz#e86fb8ffba7c5c92ba91fc3b27ed5a70196c3cc8" + integrity sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg== + +"@esbuild/linux-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz#5f37cfdc705aea687dfe5dfbec086a05acfe9c78" + integrity sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg== + +"@esbuild/netbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz#29da566a75324e0d0dd7e47519ba2f7ef168657b" + integrity sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA== + +"@esbuild/openbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz#306c0acbdb5a99c95be98bdd1d47c916e7dc3ff0" + integrity sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw== + +"@esbuild/sunos-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz#0933eaab9af8b9b2c930236f62aae3fc593faf30" + integrity sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA== + +"@esbuild/win32-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz#773bdbaa1971b36db2f6560088639ccd1e6773ae" + integrity sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A== + +"@esbuild/win32-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz#000516cad06354cc84a73f0943a4aa690ef6fd67" + integrity sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ== + +"@esbuild/win32-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz#c57c8afbb4054a3ab8317591a0b7320360b444ae" + integrity sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA== + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + +"@eslint/eslintrc@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" + integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^13.9.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.56.0": + version "8.56.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.56.0.tgz#ef20350fec605a7f7035a01764731b2de0f3782b" + integrity sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A== + +"@exodus/schemasafe@^1.0.0-rc.2": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@exodus/schemasafe/-/schemasafe-1.3.0.tgz#731656abe21e8e769a7f70a4d833e6312fe59b7f" + integrity sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw== + +"@fastify/busboy@^2.0.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.0.tgz#0709e9f4cb252351c609c6e6d8d6779a8d25edff" + integrity sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA== + +"@firebase/analytics-compat@0.2.6": + version "0.2.6" + resolved "https://registry.yarnpkg.com/@firebase/analytics-compat/-/analytics-compat-0.2.6.tgz#50063978c42f13eb800e037e96ac4b17236841f4" + integrity sha512-4MqpVLFkGK7NJf/5wPEEP7ePBJatwYpyjgJ+wQHQGHfzaCDgntOnl9rL2vbVGGKCnRqWtZDIWhctB86UWXaX2Q== + dependencies: + "@firebase/analytics" "0.10.0" + "@firebase/analytics-types" "0.8.0" + "@firebase/component" "0.6.4" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/analytics-types@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@firebase/analytics-types/-/analytics-types-0.8.0.tgz#551e744a29adbc07f557306530a2ec86add6d410" + integrity sha512-iRP+QKI2+oz3UAh4nPEq14CsEjrjD6a5+fuypjScisAh9kXKFvdJOZJDwk7kikLvWVLGEs9+kIUS4LPQV7VZVw== + +"@firebase/analytics@0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@firebase/analytics/-/analytics-0.10.0.tgz#9c6986acd573c6c6189ffb52d0fd63c775db26d7" + integrity sha512-Locv8gAqx0e+GX/0SI3dzmBY5e9kjVDtD+3zCFLJ0tH2hJwuCAiL+5WkHuxKj92rqQj/rvkBUCfA1ewlX2hehg== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/installations" "0.6.4" + "@firebase/logger" "0.4.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/app-check-compat@0.3.8": + version "0.3.8" + resolved "https://registry.yarnpkg.com/@firebase/app-check-compat/-/app-check-compat-0.3.8.tgz#b71d324c27d49f2a9cab7c5aeab84e1350bd87a9" + integrity sha512-EaETtChR4UgMokJFw+r6jfcIyCTUZSe0a6ivF37D9MxlG9G3wzK1COyXgxoX96GzXmDPc2aubX4PxCrdVHhrnA== + dependencies: + "@firebase/app-check" "0.8.1" + "@firebase/app-check-types" "0.5.0" + "@firebase/component" "0.6.4" + "@firebase/logger" "0.4.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/app-check-interop-types@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.0.tgz#b27ea1397cb80427f729e4bbf3a562f2052955c4" + integrity sha512-xAxHPZPIgFXnI+vb4sbBjZcde7ZluzPPaSK7Lx3/nmuVk4TjZvnL8ONnkd4ERQKL8WePQySU+pRcWkh8rDf5Sg== + +"@firebase/app-check-types@0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@firebase/app-check-types/-/app-check-types-0.5.0.tgz#1b02826213d7ce6a1cf773c329b46ea1c67064f4" + integrity sha512-uwSUj32Mlubybw7tedRzR24RP8M8JUVR3NPiMk3/Z4bCmgEKTlQBwMXrehDAZ2wF+TsBq0SN1c6ema71U/JPyQ== + +"@firebase/app-check@0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@firebase/app-check/-/app-check-0.8.1.tgz#df335c896552d76783b06a6be0fc2ff1bc423f03" + integrity sha512-zi3vbM5tb/eGRWyiqf+1DXbxFu9Q07dnm46rweodgUpH9B8svxYkHfNwYWx7F5mjHU70SQDuaojH1We5ws9OKA== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/logger" "0.4.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/app-compat@0.2.25": + version "0.2.25" + resolved "https://registry.yarnpkg.com/@firebase/app-compat/-/app-compat-0.2.25.tgz#214bfd602994966ed765247ba8f6948b9eb0985e" + integrity sha512-B/JtCp1FsTuzlh1tIGQpYM2AXps21/zlzpFsk5LRsROOTRhBcR2N45AyaONPFD06C0yS0Tw19foxADzHyOSC3A== + dependencies: + "@firebase/app" "0.9.25" + "@firebase/component" "0.6.4" + "@firebase/logger" "0.4.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/app-types@0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.9.0.tgz#35b5c568341e9e263b29b3d2ba0e9cfc9ec7f01e" + integrity sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q== + +"@firebase/app@0.9.25": + version "0.9.25" + resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.9.25.tgz#411607c9d11f2d2d66c9b1a0de2ffa6d1232261c" + integrity sha512-fX22gL5USXhOK21Hlh3oTeOzQZ6th6S2JrjXNEpBARmwzuUkqmVGVdsOCIFYIsLpK0dQE3o8xZnLrRg5wnzZ/g== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/logger" "0.4.0" + "@firebase/util" "1.9.3" + idb "7.1.1" + tslib "^2.1.0" + +"@firebase/auth-compat@0.5.1": + version "0.5.1" + resolved "https://registry.yarnpkg.com/@firebase/auth-compat/-/auth-compat-0.5.1.tgz#2a8a3ce05520bfa1e73f8c2caa1c9eb81d2df25e" + integrity sha512-rgDZnrDoekRvtzXVji8Z61wxxkof6pTkjYEkybILrjM8tGP9tx4xa9qGpF4ax3AzF+rKr7mIa9NnoXEK4UNqmQ== + dependencies: + "@firebase/auth" "1.5.1" + "@firebase/auth-types" "0.12.0" + "@firebase/component" "0.6.4" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + undici "5.26.5" + +"@firebase/auth-interop-types@0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.2.1.tgz#78884f24fa539e34a06c03612c75f222fcc33742" + integrity sha512-VOaGzKp65MY6P5FI84TfYKBXEPi6LmOCSMMzys6o2BN2LOsqy7pCuZCup7NYnfbk5OkkQKzvIfHOzTm0UDpkyg== + +"@firebase/auth-types@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.12.0.tgz#f28e1b68ac3b208ad02a15854c585be6da3e8e79" + integrity sha512-pPwaZt+SPOshK8xNoiQlK5XIrS97kFYc3Rc7xmy373QsOJ9MmqXxLaYssP5Kcds4wd2qK//amx/c+A8O2fVeZA== + +"@firebase/auth@1.5.1": + version "1.5.1" + resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-1.5.1.tgz#214718a45cbdf6bdbe5086e92a70d1a0fea61962" + integrity sha512-sVi7rq2YneLGJFqHa5S6nDfCHix9yuVV3RLhj/pWPlB4a36ofXal4E6PJwpeMc8uLjWEr1aovYN1jkXWNB6Avw== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/logger" "0.4.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + undici "5.26.5" + +"@firebase/component@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.6.4.tgz#8981a6818bd730a7554aa5e0516ffc9b1ae3f33d" + integrity sha512-rLMyrXuO9jcAUCaQXCMjCMUsWrba5fzHlNK24xz5j2W6A/SRmK8mZJ/hn7V0fViLbxC0lPMtrK1eYzk6Fg03jA== + dependencies: + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/database-compat@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@firebase/database-compat/-/database-compat-1.0.2.tgz#be6e91fcac6cb392fb7f9285e065c115c810ae5f" + integrity sha512-09ryJnXDvuycsxn8aXBzLhBTuCos3HEnCOBWY6hosxfYlNCGnLvG8YMlbSAt5eNhf7/00B095AEfDsdrrLjxqA== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/database" "1.0.2" + "@firebase/database-types" "1.0.0" + "@firebase/logger" "0.4.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/database-types@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-1.0.0.tgz#3f7f71c2c3fd1e29d15fce513f14dae2e7543f2a" + integrity sha512-SjnXStoE0Q56HcFgNQ+9SsmJc0c8TqGARdI/T44KXy+Ets3r6x/ivhQozT66bMnCEjJRywYoxNurRTMlZF8VNg== + dependencies: + "@firebase/app-types" "0.9.0" + "@firebase/util" "1.9.3" + +"@firebase/database@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@firebase/database/-/database-1.0.2.tgz#2d13768f7920715065cc8c65d96cc38179008c13" + integrity sha512-8X6NBJgUQzDz0xQVaCISoOLINKat594N2eBbMR3Mu/MH/ei4WM+aAMlsNzngF22eljXu1SILP5G3evkyvsG3Ng== + dependencies: + "@firebase/app-check-interop-types" "0.3.0" + "@firebase/auth-interop-types" "0.2.1" + "@firebase/component" "0.6.4" + "@firebase/logger" "0.4.0" + "@firebase/util" "1.9.3" + faye-websocket "0.11.4" + tslib "^2.1.0" + +"@firebase/firestore-compat@0.3.23": + version "0.3.23" + resolved "https://registry.yarnpkg.com/@firebase/firestore-compat/-/firestore-compat-0.3.23.tgz#7d17831edc384a2f889cae6ddec52373f6741c4a" + integrity sha512-uUTBiP0GLVBETaOCfB11d33OWB8x1r2G1Xrl0sRK3Va0N5LJ/GRvKVSGfM7VScj+ypeHe8RpdwKoCqLpN1e+uA== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/firestore" "4.4.0" + "@firebase/firestore-types" "3.0.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/firestore-types@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-3.0.0.tgz#f3440d5a1cc2a722d361b24cefb62ca8b3577af3" + integrity sha512-Meg4cIezHo9zLamw0ymFYBD4SMjLb+ZXIbuN7T7ddXN6MGoICmOTq3/ltdCGoDCS2u+H1XJs2u/cYp75jsX9Qw== + +"@firebase/firestore@4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-4.4.0.tgz#c90c65c270538c34a6271827f20d67244f121933" + integrity sha512-VeDXD9PUjvcWY1tInBOMTIu2pijR3YYy+QAe5cxCo1Q1vW+aA/mpQHhebPM1J6b4Zd1MuUh8xpBRvH9ujKR56A== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/logger" "0.4.0" + "@firebase/util" "1.9.3" + "@firebase/webchannel-wrapper" "0.10.5" + "@grpc/grpc-js" "~1.9.0" + "@grpc/proto-loader" "^0.7.8" + tslib "^2.1.0" + undici "5.26.5" + +"@firebase/functions-compat@0.3.6": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@firebase/functions-compat/-/functions-compat-0.3.6.tgz#7074b88c4a56e6a4adc61bd692e2a872bd62b196" + integrity sha512-RQpO3yuHtnkqLqExuAT2d0u3zh8SDbeBYK5EwSCBKI9mjrFeJRXBnd3pEG+x5SxGJLy56/5pQf73mwt0OuH5yg== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/functions" "0.11.0" + "@firebase/functions-types" "0.6.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/functions-types@0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@firebase/functions-types/-/functions-types-0.6.0.tgz#ccd7000dc6fc668f5acb4e6a6a042a877a555ef2" + integrity sha512-hfEw5VJtgWXIRf92ImLkgENqpL6IWpYaXVYiRkFY1jJ9+6tIhWM7IzzwbevwIIud/jaxKVdRzD7QBWfPmkwCYw== + +"@firebase/functions@0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.11.0.tgz#ce48ba39be7ec4cd20eb449616868e8c2bee4a8a" + integrity sha512-n1PZxKnJ++k73Q8khTPwihlbeKo6emnGzE0hX6QVQJsMq82y/XKmNpw2t/q30VJgwaia3ZXU1fd1C5wHncL+Zg== + dependencies: + "@firebase/app-check-interop-types" "0.3.0" + "@firebase/auth-interop-types" "0.2.1" + "@firebase/component" "0.6.4" + "@firebase/messaging-interop-types" "0.2.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + undici "5.26.5" + +"@firebase/installations-compat@0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@firebase/installations-compat/-/installations-compat-0.2.4.tgz#b5557c897b4cd3635a59887a8bf69c3731aaa952" + integrity sha512-LI9dYjp0aT9Njkn9U4JRrDqQ6KXeAmFbRC0E7jI7+hxl5YmRWysq5qgQl22hcWpTk+cm3es66d/apoDU/A9n6Q== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/installations" "0.6.4" + "@firebase/installations-types" "0.5.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/installations-types@0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@firebase/installations-types/-/installations-types-0.5.0.tgz#2adad64755cd33648519b573ec7ec30f21fb5354" + integrity sha512-9DP+RGfzoI2jH7gY4SlzqvZ+hr7gYzPODrbzVD82Y12kScZ6ZpRg/i3j6rleto8vTFC8n6Len4560FnV1w2IRg== + +"@firebase/installations@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@firebase/installations/-/installations-0.6.4.tgz#20382e33e6062ac5eff4bede8e468ed4c367609e" + integrity sha512-u5y88rtsp7NYkCHC3ElbFBrPtieUybZluXyzl7+4BsIz4sqb4vSAuwHEUgCgCeaQhvsnxDEU6icly8U9zsJigA== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/util" "1.9.3" + idb "7.0.1" + tslib "^2.1.0" + +"@firebase/logger@0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.4.0.tgz#15ecc03c452525f9d47318ad9491b81d1810f113" + integrity sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA== + dependencies: + tslib "^2.1.0" + +"@firebase/messaging-compat@0.2.5": + version "0.2.5" + resolved "https://registry.yarnpkg.com/@firebase/messaging-compat/-/messaging-compat-0.2.5.tgz#9be03c70eac8f6f6c93f3fc804fe345bd05dcf57" + integrity sha512-qHQZxm4hEG8/HFU/ls5/bU+rpnlPDoZoqi3ATMeb6s4hovYV9+PfV5I7ZrKV5eFFv47Hx1PWLe5uPnS4e7gMwQ== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/messaging" "0.12.5" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/messaging-interop-types@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.0.tgz#6056f8904a696bf0f7fdcf5f2ca8f008e8f6b064" + integrity sha512-ujA8dcRuVeBixGR9CtegfpU4YmZf3Lt7QYkcj693FFannwNuZgfAYaTmbJ40dtjB81SAu6tbFPL9YLNT15KmOQ== + +"@firebase/messaging@0.12.5": + version "0.12.5" + resolved "https://registry.yarnpkg.com/@firebase/messaging/-/messaging-0.12.5.tgz#59c84353974f851887b8a4b0e43e26560213d0e7" + integrity sha512-i/rrEI2k9ueFhdIr8KQsptWGskrsnkC5TkohCTrJKz9P0C/PbNv14IAMkwhMJTqIur5VwuOnrUkc9Kdz7awekw== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/installations" "0.6.4" + "@firebase/messaging-interop-types" "0.2.0" + "@firebase/util" "1.9.3" + idb "7.1.1" + tslib "^2.1.0" + +"@firebase/performance-compat@0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@firebase/performance-compat/-/performance-compat-0.2.4.tgz#95cbf32057b5d9f0c75d804bc50e6ed3ba486274" + integrity sha512-nnHUb8uP9G8islzcld/k6Bg5RhX62VpbAb/Anj7IXs/hp32Eb2LqFPZK4sy3pKkBUO5wcrlRWQa6wKOxqlUqsg== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/logger" "0.4.0" + "@firebase/performance" "0.6.4" + "@firebase/performance-types" "0.2.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/performance-types@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@firebase/performance-types/-/performance-types-0.2.0.tgz#400685f7a3455970817136d9b48ce07a4b9562ff" + integrity sha512-kYrbr8e/CYr1KLrLYZZt2noNnf+pRwDq2KK9Au9jHrBMnb0/C9X9yWSXmZkFt4UIdsQknBq8uBB7fsybZdOBTA== + +"@firebase/performance@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@firebase/performance/-/performance-0.6.4.tgz#0ad766bfcfab4f386f4fe0bef43bbcf505015069" + integrity sha512-HfTn/bd8mfy/61vEqaBelNiNnvAbUtME2S25A67Nb34zVuCSCRIX4SseXY6zBnOFj3oLisaEqhVcJmVPAej67g== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/installations" "0.6.4" + "@firebase/logger" "0.4.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/remote-config-compat@0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@firebase/remote-config-compat/-/remote-config-compat-0.2.4.tgz#1f494c81a6c9560b1f9ca1b4fbd4bbbe47cf4776" + integrity sha512-FKiki53jZirrDFkBHglB3C07j5wBpitAaj8kLME6g8Mx+aq7u9P7qfmuSRytiOItADhWUj7O1JIv7n9q87SuwA== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/logger" "0.4.0" + "@firebase/remote-config" "0.4.4" + "@firebase/remote-config-types" "0.3.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/remote-config-types@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@firebase/remote-config-types/-/remote-config-types-0.3.0.tgz#689900dcdb3e5c059e8499b29db393e4e51314b4" + integrity sha512-RtEH4vdcbXZuZWRZbIRmQVBNsE7VDQpet2qFvq6vwKLBIQRQR5Kh58M4ok3A3US8Sr3rubYnaGqZSurCwI8uMA== + +"@firebase/remote-config@0.4.4": + version "0.4.4" + resolved "https://registry.yarnpkg.com/@firebase/remote-config/-/remote-config-0.4.4.tgz#6a496117054de58744bc9f382d2a6d1e14060c65" + integrity sha512-x1ioTHGX8ZwDSTOVp8PBLv2/wfwKzb4pxi0gFezS5GCJwbLlloUH4YYZHHS83IPxnua8b6l0IXUaWd0RgbWwzQ== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/installations" "0.6.4" + "@firebase/logger" "0.4.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/storage-compat@0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@firebase/storage-compat/-/storage-compat-0.3.3.tgz#9c670cd7bf37733bd5f4235e97a5f5dc2c3d9c7e" + integrity sha512-WNtjYPhpOA1nKcRu5lIodX0wZtP8pI0VxDJnk6lr+av7QZNS1s6zvr+ERDTve+Qu4Hq/ZnNaf3kBEQR2ccXn6A== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/storage" "0.12.0" + "@firebase/storage-types" "0.8.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/storage-types@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.8.0.tgz#f1e40a5361d59240b6e84fac7fbbbb622bfaf707" + integrity sha512-isRHcGrTs9kITJC0AVehHfpraWFui39MPaU7Eo8QfWlqW7YPymBmRgjDrlOgFdURh6Cdeg07zmkLP5tzTKRSpg== + +"@firebase/storage@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.12.0.tgz#de23aca9a6504b3b08281c93111e655f15b7f566" + integrity sha512-SGs02Y/mmWBRsqZiYLpv4Sf7uZYZzMWVNN+aKiDqPsFBCzD6hLvGkXz+u98KAl8FqcjgB8BtSu01wm4pm76KHA== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + undici "5.26.5" + +"@firebase/util@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@firebase/util/-/util-1.9.3.tgz#45458dd5cd02d90e55c656e84adf6f3decf4b7ed" + integrity sha512-DY02CRhOZwpzO36fHpuVysz6JZrscPiBXD0fXp6qSrL9oNOx5KWICKdR95C0lSITzxp0TZosVyHqzatE8JbcjA== + dependencies: + tslib "^2.1.0" + +"@firebase/webchannel-wrapper@0.10.5": + version "0.10.5" + resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.10.5.tgz#cd9897680d0a2f1bce8d8c23a590e5874f4617c5" + integrity sha512-eSkJsnhBWv5kCTSU1tSUVl9mpFu+5NXXunZc83le8GMjMlsWwQArSc7cJJ4yl+aDFY0NGLi0AjZWMn1axOrkRg== + +"@floating-ui/core@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.0.tgz#fa41b87812a16bf123122bf945946bae3fdf7fc1" + integrity sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g== + dependencies: + "@floating-ui/utils" "^0.2.1" + +"@floating-ui/dom@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.0.tgz#282f31c5c7d2aaef3999e09f2c06280a020364d1" + integrity sha512-SZ0BEXzsaaS6THZfZJUcAobbZTD+MvfGM42bxgeg0Tnkp4/an/avqwAXiVLsFtIBZtfsx3Ymvwx0+KnnhdA/9g== + dependencies: + "@floating-ui/core" "^1.6.0" + "@floating-ui/utils" "^0.2.1" + +"@floating-ui/react-dom@^2.0.5", "@floating-ui/react-dom@^2.0.6": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.0.7.tgz#873e0a55a25d8ddbbccd159d6ab4a4b98eb05494" + integrity sha512-B5GJxKUyPcGsvE1vua+Abvw0t6zVMyTbtG+Jk7BoI4hfc5Ahv50dstRIAn0nS0274kR9gnKwxIXyGA8EzBZJrA== + dependencies: + "@floating-ui/dom" "^1.6.0" + +"@floating-ui/utils@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.1.tgz#16308cea045f0fc777b6ff20a9f25474dd8293d2" + integrity sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q== + +"@grpc/grpc-js@~1.9.0": + version "1.9.14" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.9.14.tgz#236378822876cbf7903f9d61a0330410e8dcc5a1" + integrity sha512-nOpuzZ2G3IuMFN+UPPpKrC6NsLmWsTqSsm66IRfnBt1D4pwTqE27lmbpcPM+l2Ua4gE7PfjRHI6uedAy7hoXUw== + dependencies: + "@grpc/proto-loader" "^0.7.8" + "@types/node" ">=12.12.47" + +"@grpc/proto-loader@^0.7.8": + version "0.7.10" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.10.tgz#6bf26742b1b54d0a473067743da5d3189d06d720" + integrity sha512-CAqDfoaQ8ykFd9zqBDn4k6iWT9loLAlc2ETmDFS9JCD70gDcnA4L3AFEo2iV7KyAtAAHFW9ftq1Fz+Vsgq80RQ== + dependencies: + lodash.camelcase "^4.3.0" + long "^5.0.0" + protobufjs "^7.2.4" + yargs "^17.7.2" + +"@hookform/resolvers@3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@hookform/resolvers/-/resolvers-3.3.4.tgz#de9b668c2835eb06892290192de6e2a5c906229b" + integrity sha512-o5cgpGOuJYrd+iMKvkttOclgwRW86EsWJZZRC23prf0uU2i48Htq4PuT73AVb9ionFyZrwYEITuOFGF+BydEtQ== + +"@humanwhocodes/config-array@^0.11.13": + version "0.11.14" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== + dependencies: + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/config-array@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" + integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== + dependencies: + "@humanwhocodes/object-schema" "^1.2.0" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" + integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@jest/expect-utils@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" + integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== + dependencies: + jest-get-type "^29.6.3" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.22" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz#72a621e5de59f5f1ef792d0793a82ee20f645e4c" + integrity sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@jsdevtools/ono@^7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" + integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== + +"@mui/base@5.0.0-beta.32": + version "5.0.0-beta.32" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.32.tgz#cdda6c68389f0b8b39a5bff7ed16e40788aed510" + integrity sha512-4VptvYeLUYMJhZapWBkD50GmKfOc0XT381KJcTK3ncZYIl8MdBhpR6l8jOyeP5cixUPBJhstjrnmQEAHjCLriw== + dependencies: + "@babel/runtime" "^7.23.8" + "@floating-ui/react-dom" "^2.0.5" + "@mui/types" "^7.2.13" + "@mui/utils" "^5.15.5" + "@popperjs/core" "^2.11.8" + clsx "^2.1.0" + prop-types "^15.8.1" + +"@mui/base@^5.0.0-beta.22": + version "5.0.0-beta.33" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.33.tgz#fbb844e2d840d47dd7a48850a03152aed2381d10" + integrity sha512-WcSpoJUw/UYHXpvgtl4HyMar2Ar97illUpqiS/X1gtSBp6sdDW6kB2BJ9OlVQ+Kk/RL2GDp/WHA9sbjAYV35ow== + dependencies: + "@babel/runtime" "^7.23.8" + "@floating-ui/react-dom" "^2.0.6" + "@mui/types" "^7.2.13" + "@mui/utils" "^5.15.6" + "@popperjs/core" "^2.11.8" + clsx "^2.1.0" + prop-types "^15.8.1" + +"@mui/core-downloads-tracker@^5.15.5": + version "5.15.6" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.6.tgz#9b82ba86d5a0fe55e9479b68dd5068943cc3835b" + integrity sha512-0aoWS4qvk1uzm9JBs83oQmIMIQeTBUeqqu8u+3uo2tMznrB5fIKqQVCbCgq+4Tm4jG+5F7dIvnjvQ2aV7UKtdw== + +"@mui/material@5.15.5": + version "5.15.5" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.15.5.tgz#5c672ddf17fbe1a1d6a8854ddbb8502cc83feec0" + integrity sha512-2KfA39f/UWeQl0O22UJs3x1nG3chYlyu9wnux5vTnxUTLzkgYIzQIHaH+ZOGpv5JiZBMKktAPNfhqyhSaQ49qQ== + dependencies: + "@babel/runtime" "^7.23.8" + "@mui/base" "5.0.0-beta.32" + "@mui/core-downloads-tracker" "^5.15.5" + "@mui/system" "^5.15.5" + "@mui/types" "^7.2.13" + "@mui/utils" "^5.15.5" + "@types/react-transition-group" "^4.4.10" + clsx "^2.1.0" + csstype "^3.1.2" + prop-types "^15.8.1" + react-is "^18.2.0" + react-transition-group "^4.4.5" + +"@mui/private-theming@^5.15.5", "@mui/private-theming@^5.15.6": + version "5.15.6" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.15.6.tgz#224819694ed76df041b1257256152a45d1fd733d" + integrity sha512-ZBX9E6VNUSscUOtU8uU462VvpvBS7eFl5VfxAzTRVQBHflzL+5KtnGrebgf6Nd6cdvxa1o0OomiaxSKoN2XDmg== + dependencies: + "@babel/runtime" "^7.23.8" + "@mui/utils" "^5.15.6" + prop-types "^15.8.1" + +"@mui/styled-engine@^5.15.5", "@mui/styled-engine@^5.15.6": + version "5.15.6" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.15.6.tgz#3f4a8804de6ddeee17cb52ec92225686f423398a" + integrity sha512-KAn8P8xP/WigFKMlEYUpU9z2o7jJnv0BG28Qu1dhNQVutsLVIFdRf5Nb+0ijp2qgtcmygQ0FtfRuXv5LYetZTg== + dependencies: + "@babel/runtime" "^7.23.8" + "@emotion/cache" "^11.11.0" + csstype "^3.1.2" + prop-types "^15.8.1" + +"@mui/styles@5.15.5": + version "5.15.5" + resolved "https://registry.yarnpkg.com/@mui/styles/-/styles-5.15.5.tgz#59354a4d25910d8fb61ba06ec12fc3ed35190818" + integrity sha512-oKhGfhIf5lYxWeT6LWodHCyV834cUnU/xUp2LAevwT6Jay2U0q1H8RVUzPBuSyp/U+7ZZnxZ+NQfyHqNpQAJqg== + dependencies: + "@babel/runtime" "^7.23.8" + "@emotion/hash" "^0.9.1" + "@mui/private-theming" "^5.15.5" + "@mui/types" "^7.2.13" + "@mui/utils" "^5.15.5" + clsx "^2.1.0" + csstype "^3.1.2" + hoist-non-react-statics "^3.3.2" + jss "^10.10.0" + jss-plugin-camel-case "^10.10.0" + jss-plugin-default-unit "^10.10.0" + jss-plugin-global "^10.10.0" + jss-plugin-nested "^10.10.0" + jss-plugin-props-sort "^10.10.0" + jss-plugin-rule-value-function "^10.10.0" + jss-plugin-vendor-prefixer "^10.10.0" + prop-types "^15.8.1" + +"@mui/system@5.15.5": + version "5.15.5" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.15.5.tgz#dc3fd3e5636a6c238d46e0ba40ada9f213a128a5" + integrity sha512-DMv2vGjUKaDt/m0RlzvLjpKiS5V0LoBhiMUHf5pWdj6uoNlN4FuKUe4pFeYmQMIO5DnVZKybmpPepfkdfEH+Og== + dependencies: + "@babel/runtime" "^7.23.8" + "@mui/private-theming" "^5.15.5" + "@mui/styled-engine" "^5.15.5" + "@mui/types" "^7.2.13" + "@mui/utils" "^5.15.5" + clsx "^2.1.0" + csstype "^3.1.2" + prop-types "^15.8.1" + +"@mui/system@^5.15.5": + version "5.15.6" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.15.6.tgz#d278adb09d57ee21f4eef2f6bc335bf9bd062fca" + integrity sha512-J01D//u8IfXvaEHMBQX5aO2l7Q+P15nt96c4NskX7yp5/+UuZP8XCQJhtBtLuj+M2LLyXHYGmCPeblsmmscP2Q== + dependencies: + "@babel/runtime" "^7.23.8" + "@mui/private-theming" "^5.15.6" + "@mui/styled-engine" "^5.15.6" + "@mui/types" "^7.2.13" + "@mui/utils" "^5.15.6" + clsx "^2.1.0" + csstype "^3.1.2" + prop-types "^15.8.1" + +"@mui/types@^7.2.13": + version "7.2.13" + resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.13.tgz#d1584912942f9dc042441ecc2d1452be39c666b8" + integrity sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g== + +"@mui/utils@^5.14.16", "@mui/utils@^5.15.5", "@mui/utils@^5.15.6": + version "5.15.6" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.15.6.tgz#bbcc302b8e83e360a87230afe3ed8fc99e29fae9" + integrity sha512-qfEhf+zfU9aQdbzo1qrSWlbPQhH1nCgeYgwhOVnj9Bn39shJQitEnXpSQpSNag8+uty5Od6PxmlNKPTnPySRKA== + dependencies: + "@babel/runtime" "^7.23.8" + "@types/prop-types" "^15.7.11" + prop-types "^15.8.1" + react-is "^18.2.0" + +"@mui/x-date-pickers@6.19.0": + version "6.19.0" + resolved "https://registry.yarnpkg.com/@mui/x-date-pickers/-/x-date-pickers-6.19.0.tgz#198b6c3b396adc1d75fab25a5a13fe21ff9ee71b" + integrity sha512-/GccT+iFJTKjI6b9b0MWojyRKnizL/VYYAfPnR1q0wSVVXjYv7a1NK0uQlan4JbnovqoQCNVeTOCy/0bUJyD2Q== + dependencies: + "@babel/runtime" "^7.23.2" + "@mui/base" "^5.0.0-beta.22" + "@mui/utils" "^5.14.16" + "@types/react-transition-group" "^4.4.8" + clsx "^2.0.0" + prop-types "^15.8.1" + react-transition-group "^4.4.5" + +"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": + version "5.1.1-v1" + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" + integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== + dependencies: + eslint-scope "5.1.1" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@pkgr/core@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" + integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== + +"@popperjs/core@2.11.8", "@popperjs/core@^2.11.8": + version "2.11.8" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" + integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== + +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + +"@reduxjs/toolkit@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-2.0.1.tgz#0a5233c1e35c1941b03aece39cceade3467a1062" + integrity sha512-fxIjrR9934cmS8YXIGd9e7s1XRsEU++aFc9DVNMFMRTM5Vtsg2DCRMj21eslGtDt43IUf9bJL3h5bwUlZleibA== + dependencies: + immer "^10.0.3" + redux "^5.0.0" + redux-thunk "^3.1.0" + reselect "^5.0.1" + +"@remix-run/router@1.14.2": + version "1.14.2" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.14.2.tgz#4d58f59908d9197ba3179310077f25c88e49ed17" + integrity sha512-ACXpdMM9hmKZww21yEqWwiLws/UPLhNKvimN8RrYSqPSvB3ov7sLvAcfvaxePeLvccTQKGdkDIhLYApZVDFuKg== + +"@rollup/pluginutils@^5.0.5": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" + integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^2.3.1" + +"@rollup/rollup-android-arm-eabi@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz#66b8d9cb2b3a474d115500f9ebaf43e2126fe496" + integrity sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg== + +"@rollup/rollup-android-arm64@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz#46327d5b86420d2307946bec1535fdf00356e47d" + integrity sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw== + +"@rollup/rollup-darwin-arm64@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz#166987224d2f8b1e2fd28ee90c447d52271d5e90" + integrity sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw== + +"@rollup/rollup-darwin-x64@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz#a2e6e096f74ccea6e2f174454c26aef6bcdd1274" + integrity sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog== + +"@rollup/rollup-linux-arm-gnueabihf@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz#09fcd4c55a2d6160c5865fec708a8e5287f30515" + integrity sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ== + +"@rollup/rollup-linux-arm64-gnu@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz#19a3c0b6315c747ca9acf86e9b710cc2440f83c9" + integrity sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ== + +"@rollup/rollup-linux-arm64-musl@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz#94aaf95fdaf2ad9335983a4552759f98e6b2e850" + integrity sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ== + +"@rollup/rollup-linux-riscv64-gnu@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz#160510e63f4b12618af4013bddf1761cf9fc9880" + integrity sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA== + +"@rollup/rollup-linux-x64-gnu@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz#5ac5d068ce0726bd0a96ca260d5bd93721c0cb98" + integrity sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw== + +"@rollup/rollup-linux-x64-musl@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz#bafa759ab43e8eab9edf242a8259ffb4f2a57a5d" + integrity sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ== + +"@rollup/rollup-win32-arm64-msvc@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz#1cc3416682e5a20d8f088f26657e6e47f8db468e" + integrity sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA== + +"@rollup/rollup-win32-ia32-msvc@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz#7d2251e1aa5e8a1e47c86891fe4547a939503461" + integrity sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ== + +"@rollup/rollup-win32-x64-msvc@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz#2c1fb69e02a3f1506f52698cfdc3a8b6386df9a6" + integrity sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ== + +"@rtk-query/codegen-openapi@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@rtk-query/codegen-openapi/-/codegen-openapi-1.2.0.tgz#2c63cbbd80382c4ba6c9fab5e9004efb43637de3" + integrity sha512-Sru3aPHyFC0Tb7jeFh/kVMGBdQUcofb9frrHhjNSRLEoJWsG9fjaioUx3nPT5HZVbdAvAFF4xMWFQNfgJBrAGw== + dependencies: + "@apidevtools/swagger-parser" "^10.0.2" + commander "^6.2.0" + oazapfts "^4.8.0" + prettier "^2.2.1" + semver "^7.3.5" + swagger2openapi "^7.0.4" + typescript "^5.0.0" + +"@rushstack/eslint-patch@^1.1.0": + version "1.7.2" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.7.2.tgz#2d4260033e199b3032a08b41348ac10de21c47e9" + integrity sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA== + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@svgr/babel-plugin-add-jsx-attribute@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz#4001f5d5dd87fa13303e36ee106e3ff3a7eb8b22" + integrity sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g== + +"@svgr/babel-plugin-remove-jsx-attribute@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186" + integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA== + +"@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#c2c48104cfd7dcd557f373b70a56e9e3bdae1d44" + integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA== + +"@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz#8fbb6b2e91fa26ac5d4aa25c6b6e4f20f9c0ae27" + integrity sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ== + +"@svgr/babel-plugin-svg-dynamic-title@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz#1d5ba1d281363fc0f2f29a60d6d936f9bbc657b0" + integrity sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og== + +"@svgr/babel-plugin-svg-em-dimensions@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz#35e08df300ea8b1d41cb8f62309c241b0369e501" + integrity sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g== + +"@svgr/babel-plugin-transform-react-native-svg@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz#90a8b63998b688b284f255c6a5248abd5b28d754" + integrity sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q== + +"@svgr/babel-plugin-transform-svg-component@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz#013b4bfca88779711f0ed2739f3f7efcefcf4f7e" + integrity sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw== + +"@svgr/babel-preset@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-8.1.0.tgz#0e87119aecdf1c424840b9d4565b7137cabf9ece" + integrity sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "8.0.0" + "@svgr/babel-plugin-replace-jsx-attribute-value" "8.0.0" + "@svgr/babel-plugin-svg-dynamic-title" "8.0.0" + "@svgr/babel-plugin-svg-em-dimensions" "8.0.0" + "@svgr/babel-plugin-transform-react-native-svg" "8.1.0" + "@svgr/babel-plugin-transform-svg-component" "8.0.0" + +"@svgr/core@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-8.1.0.tgz#41146f9b40b1a10beaf5cc4f361a16a3c1885e88" + integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA== + dependencies: + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.1.0" + camelcase "^6.2.0" + cosmiconfig "^8.1.3" + snake-case "^3.0.4" + +"@svgr/hast-util-to-babel-ast@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz#6952fd9ce0f470e1aded293b792a2705faf4ffd4" + integrity sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q== + dependencies: + "@babel/types" "^7.21.3" + entities "^4.4.0" + +"@svgr/plugin-jsx@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz#96969f04a24b58b174ee4cd974c60475acbd6928" + integrity sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA== + dependencies: + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.1.0" + "@svgr/hast-util-to-babel-ast" "8.0.0" + svg-parser "^2.0.4" + +"@tailwindcss/aspect-ratio@0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@tailwindcss/aspect-ratio/-/aspect-ratio-0.4.2.tgz#9ffd52fee8e3c8b20623ff0dcb29e5c21fb0a9ba" + integrity sha512-8QPrypskfBa7QIMuKHg2TA7BqES6vhBrDLOv8Unb6FcFyd3TjKbc6lcmb9UPQHxfl24sXoJ41ux/H7qQQvfaSQ== + +"@tailwindcss/typography@0.5.10": + version "0.5.10" + resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.5.10.tgz#2abde4c6d5c797ab49cf47610830a301de4c1e0a" + integrity sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw== + dependencies: + lodash.castarray "^4.4.0" + lodash.isplainobject "^4.0.6" + lodash.merge "^4.6.2" + postcss-selector-parser "6.0.10" + +"@ts-morph/bootstrap@^0.16.0": + version "0.16.0" + resolved "https://registry.yarnpkg.com/@ts-morph/bootstrap/-/bootstrap-0.16.0.tgz#c97034175a8fc2b7d3f575526d819877f7ed2d83" + integrity sha512-FYW3bK5EBeAgpHu0qZ57gHbLjzgzC81y5EJmrebzIhXSYg6OgZu5lFHpF5NJ7CwM7ZMhxX1PG+DRA8e+skopKw== + dependencies: + "@ts-morph/common" "~0.16.0" + +"@ts-morph/common@~0.16.0": + version "0.16.0" + resolved "https://registry.yarnpkg.com/@ts-morph/common/-/common-0.16.0.tgz#57e27d4b3fd65a4cd72cb36679ed08acb40fa3ba" + integrity sha512-SgJpzkTgZKLKqQniCjLaE3c2L2sdL7UShvmTmPBejAKd2OKV/yfMpQ2IWpAuA+VY5wy7PkSUaEObIqEK6afFuw== + dependencies: + fast-glob "^3.2.11" + minimatch "^5.1.0" + mkdirp "^1.0.4" + path-browserify "^1.0.1" + +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@types/autosuggest-highlight@3.2.3": + version "3.2.3" + resolved "https://registry.yarnpkg.com/@types/autosuggest-highlight/-/autosuggest-highlight-3.2.3.tgz#966b4f6b2b8fc9df2838481600500db6b3795aaa" + integrity sha512-8Mb21KWtpn6PvRQXjsKhrXIcxbSloGqNH50RntwGeJsGPW4xvNhfml+3kKulaKpO/7pgZfOmzsJz7VbepArlGQ== + +"@types/babel-traverse@6.25.10": + version "6.25.10" + resolved "https://registry.yarnpkg.com/@types/babel-traverse/-/babel-traverse-6.25.10.tgz#9451390f18576a0cb480de1778df8bb8b1b5c087" + integrity sha512-B3XitTFG8YeXb5lr7Nj62t1DikCDuAJ/4BDeK6GCuWREEmdunI9DWnv+81oHl2yQBQPWY/C1PmV3vaRZB4LQmw== + dependencies: + "@types/babel-types" "*" + +"@types/babel-types@*": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.15.tgz#11fb1ab5a4f984d00d1c80a768f6fb8d59f96966" + integrity sha512-JUgfZHUOMbtjopxiOQaaF+Uovk5wpDqpXR+XLWiOivCWSy1FccO30lvNNpCt8geFwq8VmGT2y9OMkOpA0g5O5g== + +"@types/babel__core@^7.20.5": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.8" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" + integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__parser@7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/babel__parser/-/babel__parser-7.1.1.tgz#39b311e54697636b0b98127700b5f01f5e1e85f4" + integrity sha512-baSzIb0QQOUQSglfR9gwXVSbHH91YvY00C9Zjq6E7sPdnp8oyPyUsonIj3SF4wUl0s96vR/kyWeVv30gmM/xZw== + dependencies: + "@babel/parser" "*" + +"@types/babel__template@*": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@7.20.5": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#7b7502be0aa80cc4ef22978846b983edaafcd4dd" + integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== + dependencies: + "@babel/types" "^7.20.7" + +"@types/create-react-class@*": + version "15.6.7" + resolved "https://registry.yarnpkg.com/@types/create-react-class/-/create-react-class-15.6.7.tgz#04c850b0fa88e061b0be7d8a7fea63f01adcc758" + integrity sha512-fM/HDjJCUCzjfn9Bi6s0xz0QF0ZKhpSeOhnewa6PjsSXQ4hyeLwTZKG83V2yk3vBNSneS7OvgS+BNFEKVrt45w== + dependencies: + "@types/react" "*" + +"@types/crypto-js@4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@types/crypto-js/-/crypto-js-4.2.1.tgz#480edd76991a63050cb88db1a8840758c55a7135" + integrity sha512-FSPGd9+OcSok3RsM0UZ/9fcvMOXJ1ENE/ZbLfOPlBWj7BgXtEAM8VYfTtT760GiLbQIMoVozwVuisjvsVwqYWw== + +"@types/draft-js@*", "@types/draft-js@0.11.17": + version "0.11.17" + resolved "https://registry.yarnpkg.com/@types/draft-js/-/draft-js-0.11.17.tgz#32a68cac3e4e3d5c8f2cd5e22409d7dbf28887f1" + integrity sha512-th0OwSPftG2r5rvGxS7nt8I7hcWMlrQ9OJcNx6MdXAwO797W78IGEsGWonO+turVBWEd3qylZRGBVtpEX9vSYQ== + dependencies: + "@types/react" "*" + immutable "~3.7.4" + +"@types/draftjs-to-html@0.8.4": + version "0.8.4" + resolved "https://registry.yarnpkg.com/@types/draftjs-to-html/-/draftjs-to-html-0.8.4.tgz#b25ce6145973c431369ec011e75bebf9c78d533e" + integrity sha512-5FZcjFoJL57N/IttLCTCNI0krX+181oCl5hf76u3TqPkqBAphHrJAO9ReYesx9138kcObaYmpnWC2Yrqxoqd2Q== + dependencies: + "@types/draft-js" "*" + +"@types/estree@1.0.5", "@types/estree@^1.0.0": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + +"@types/glob@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc" + integrity sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w== + dependencies: + "@types/minimatch" "^5.1.2" + "@types/node" "*" + +"@types/google-map-react@2.1.10": + version "2.1.10" + resolved "https://registry.yarnpkg.com/@types/google-map-react/-/google-map-react-2.1.10.tgz#197a2f520563e0291bc311f151e05ec34b665cf7" + integrity sha512-8/0UllZS7tF08WNBRPQlSJCkETvz3e3sZoPxzDaWkj2iV5dmFSnOKXVtoeKo8dLZSe+RkLn479t1wj6nXmLLSA== + dependencies: + "@types/react" "*" + +"@types/history@^4.7.11": + version "4.7.11" + resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" + integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== + +"@types/hoist-non-react-statics@*", "@types/hoist-non-react-statics@^3.3.0": + version "3.3.5" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz#dab7867ef789d87e2b4b0003c9d65c49cc44a494" + integrity sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg== + dependencies: + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== + +"@types/istanbul-lib-report@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@29.5.11": + version "29.5.11" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.11.tgz#0c13aa0da7d0929f078ab080ae5d4ced80fa2f2c" + integrity sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" + +"@types/js-beautify@1.14.3": + version "1.14.3" + resolved "https://registry.yarnpkg.com/@types/js-beautify/-/js-beautify-1.14.3.tgz#6ced76f79935e37e0d613110dea369881d93c1ff" + integrity sha512-FMbQHz+qd9DoGvgLHxeqqVPaNRffpIu5ZjozwV8hf9JAGpIOzuAf4wGbRSo8LNITHqGjmmVjaMggTT5P4v4IHg== + +"@types/json-schema@^7.0.12", "@types/json-schema@^7.0.9": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/lodash@4.14.202": + version "4.14.202" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.202.tgz#f09dbd2fb082d507178b2f2a5c7e74bd72ff98f8" + integrity sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ== + +"@types/material-ui@0.21.16": + version "0.21.16" + resolved "https://registry.yarnpkg.com/@types/material-ui/-/material-ui-0.21.16.tgz#19697ce83af2dc03ed25321e7d2158f2d6d57125" + integrity sha512-US8P5IsLguspYFDtkG4097KZDyqz/GqBm0uftcZ2h2fTzyzLqJuFk8BliEQ9VS3EviRDJaB6l29gps3hkCTm7Q== + dependencies: + "@types/react" "*" + "@types/react-addons-linked-state-mixin" "*" + +"@types/minimatch@^5.1.2": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== + +"@types/node@*", "@types/node@>=12.12.47", "@types/node@>=13.7.0": + version "20.11.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.7.tgz#cb49aedd758c978c30806d0c38b520ed2a3df6e0" + integrity sha512-GPmeN1C3XAyV5uybAf4cMLWT9fDWcmQhZVtMFu7OR32WjrqGG+Wnk2V1d0bmtUyE/Zy1QJ9BxyiTih9z8Oks8A== + dependencies: + undici-types "~5.26.4" + +"@types/node@20.11.0": + version "20.11.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.0.tgz#8e0b99e70c0c1ade1a86c4a282f7b7ef87c9552f" + integrity sha512-o9bjXmDNcF7GbM4CNQpmi+TutCgap/K3w1JyKgxAjqx41zp9qlIAVFi0IhCNsJcXolEqLWhbFbEeL0PvYm4pcQ== + dependencies: + undici-types "~5.26.4" + +"@types/parse-json@^4.0.0": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" + integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== + +"@types/postcss-modules-local-by-default@^4.0.0": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.2.tgz#8fee7513dd1558d74713d817c183a33a6dc583f9" + integrity sha512-CtYCcD+L+trB3reJPny+bKWKMzPfxEyQpKIwit7kErnOexf5/faaGpkFy4I5AwbV4hp1sk7/aTg0tt0B67VkLQ== + dependencies: + postcss "^8.0.0" + +"@types/postcss-modules-scope@^3.0.1": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/postcss-modules-scope/-/postcss-modules-scope-3.0.4.tgz#f82d15ec9023c924b531a49e8087b32646233f41" + integrity sha512-//ygSisVq9kVI0sqx3UPLzWIMCmtSVrzdljtuaAEJtGoGnpjBikZ2sXO5MpH9SnWX9HRfXxHifDAXcQjupWnIQ== + dependencies: + postcss "^8.0.0" + +"@types/prismjs@1.26.3": + version "1.26.3" + resolved "https://registry.yarnpkg.com/@types/prismjs/-/prismjs-1.26.3.tgz#47fe8e784c2dee24fe636cab82e090d3da9b7dec" + integrity sha512-A0D0aTXvjlqJ5ZILMz3rNfDBOx9hHxLZYv2by47Sm/pqW35zzjusrZTryatjN/Rf8Us2gZrJD+KeHbUSTux1Cw== + +"@types/prop-types@*", "@types/prop-types@^15.7.11": + version "15.7.11" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.11.tgz#2596fb352ee96a1379c657734d4b913a613ad563" + integrity sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng== + +"@types/qs@6.9.11": + version "6.9.11" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.11.tgz#208d8a30bc507bd82e03ada29e4732ea46a6bbda" + integrity sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ== + +"@types/react-addons-linked-state-mixin@*": + version "0.14.27" + resolved "https://registry.yarnpkg.com/@types/react-addons-linked-state-mixin/-/react-addons-linked-state-mixin-0.14.27.tgz#8f2a31b9d988ce430775983bbb0d0965e8b537a3" + integrity sha512-yVxzQcKDiq32uziGQ/ka586qSFxz2ePYZ3dTCp4JHJKk/E6M0LP0R28ft3oFAnTGJRFBAB3if3pkP8w57Y04IA== + dependencies: + "@types/create-react-class" "*" + "@types/react" "*" + +"@types/react-autosuggest@10.1.11": + version "10.1.11" + resolved "https://registry.yarnpkg.com/@types/react-autosuggest/-/react-autosuggest-10.1.11.tgz#d087dbfc03e092ac742d18b8b80f5986f03929f3" + integrity sha512-lneJrX/5TZJzKHPJ6UuUjsh9OfeyQHKYEVHyBh5Y7LeRbCZxyIsjBmpxdPy1iH++Ger0qcyW+phPpYH+g3naLA== + dependencies: + "@types/react" "*" + +"@types/react-beautiful-dnd@13.1.8": + version "13.1.8" + resolved "https://registry.yarnpkg.com/@types/react-beautiful-dnd/-/react-beautiful-dnd-13.1.8.tgz#f52d3ea07e1e19159d6c3c4a48c8da3d855e60b4" + integrity sha512-E3TyFsro9pQuK4r8S/OL6G99eq7p8v29sX0PM7oT8Z+PJfZvSQTx4zTQbUJ+QZXioAF0e7TGBEcA1XhYhCweyQ== + dependencies: + "@types/react" "*" + +"@types/react-dom@18.2.18": + version "18.2.18" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.18.tgz#16946e6cd43971256d874bc3d0a72074bb8571dd" + integrity sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw== + dependencies: + "@types/react" "*" + +"@types/react-draft-wysiwyg@1.13.8": + version "1.13.8" + resolved "https://registry.yarnpkg.com/@types/react-draft-wysiwyg/-/react-draft-wysiwyg-1.13.8.tgz#8549922468340dd6f820615a033dc6b34f3c317a" + integrity sha512-qo0vIHjqAYq3Hz93Td3ecNodgVjKsvrWkBJ6mZXJSUmQzrQ5Fu7NS9oV5PXnVbnuqPoJLALbCSiz8UCksLribg== + dependencies: + "@types/draft-js" "*" + "@types/react" "*" + +"@types/react-redux@7.1.33": + version "7.1.33" + resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.33.tgz#53c5564f03f1ded90904e3c90f77e4bd4dc20b15" + integrity sha512-NF8m5AjWCkert+fosDsN3hAlHzpjSiXlVy9EgQEmLoBhaNXbmyeGs/aj5dQzKuF+/q+S7JQagorGDW8pJ28Hmg== + dependencies: + "@types/hoist-non-react-statics" "^3.3.0" + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + redux "^4.0.0" + +"@types/react-router-dom@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.3.tgz#e9d6b4a66fcdbd651a5f106c2656a30088cc1e83" + integrity sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router" "*" + +"@types/react-router@*", "@types/react-router@5.1.20": + version "5.1.20" + resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.20.tgz#88eccaa122a82405ef3efbcaaa5dcdd9f021387c" + integrity sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + +"@types/react-swipeable-views@0.13.5": + version "0.13.5" + resolved "https://registry.yarnpkg.com/@types/react-swipeable-views/-/react-swipeable-views-0.13.5.tgz#f9dc947b7424d34cade864185bfa831a818a45f6" + integrity sha512-ni6WjO7gBq2xB2Y/ZiRdQOgjGOxIik5ow2s7xKieDq8DxsXTdV46jJslSBVK2yoIJHf6mG3uqNTwxwgzbXRRzg== + dependencies: + "@types/react" "*" + +"@types/react-transition-group@^4.4.10", "@types/react-transition-group@^4.4.8": + version "4.4.10" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.10.tgz#6ee71127bdab1f18f11ad8fb3322c6da27c327ac" + integrity sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "18.2.48" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.48.tgz#11df5664642d0bd879c1f58bc1d37205b064e8f1" + integrity sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/react@18.2.47": + version "18.2.47" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.47.tgz#85074b27ab563df01fbc3f68dc64bf7050b0af40" + integrity sha512-xquNkkOirwyCgoClNk85BjP+aqnIS+ckAJ8i37gAbDs14jfW/J23f2GItAf33oiUPQnqNMALiFeoM9Y5mbjpVQ== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/redux-logger@3.0.12": + version "3.0.12" + resolved "https://registry.yarnpkg.com/@types/redux-logger/-/redux-logger-3.0.12.tgz#d60a2c6904ae3c8b36f6c5d5012fb74e15cb15b4" + integrity sha512-5vAlwokZi/Unb1eGoZfVVzIBTPNDflwXiDzPLT1SynP6hdJfsOEf+w6ZOySOyboLWciCRYeE5DGYUnwVCq+Uyg== + dependencies: + redux "^4.0.0" + +"@types/scheduler@*": + version "0.16.8" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff" + integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== + +"@types/semver@^7.3.12", "@types/semver@^7.5.0": + version "7.5.6" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.6.tgz#c65b2bfce1bec346582c07724e3f8c1017a20339" + integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== + +"@types/stack-utils@^2.0.0": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== + +"@types/styled-components@5.1.34": + version "5.1.34" + resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-5.1.34.tgz#4107df8ef8a7eaba4fa6b05f78f93fba4daf0300" + integrity sha512-mmiVvwpYklFIv9E8qfxuPyIt/OuyIrn6gMOAMOFUO3WJfSrSE+sGUoa4PiZj77Ut7bKZpaa6o1fBKS/4TOEvnA== + dependencies: + "@types/hoist-non-react-statics" "*" + "@types/react" "*" + csstype "^3.0.2" + +"@types/stylis@4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@types/stylis/-/stylis-4.2.0.tgz#199a3f473f0c3a6f6e4e1b17cdbc967f274bdc6b" + integrity sha512-n4sx2bqL0mW1tvDf/loQ+aMX7GQD3lc3fkCMC55VFNDu/vBOabO+LTIeXKM14xK0ppk5TUGcWRjiSpIlUpghKw== + +"@types/use-sync-external-store@^0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz#b6725d5f4af24ace33b36fafd295136e75509f43" + integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA== + +"@types/webpack-env@1.18.4": + version "1.18.4" + resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.18.4.tgz#62879b0a9c653f9b1172d403b882f2045ecce032" + integrity sha512-I6e+9+HtWADAWeeJWDFQtdk4EVSAbj6Rtz4q8fJ7mSr1M0jzlFcs8/HZ+Xb5SHzVm1dxH7aUiI+A8kA8Gcrm0A== + +"@types/yargs-parser@*": + version "21.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + +"@types/yargs@^17.0.8": + version "17.0.32" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" + integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@6.18.1": + version "6.18.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.18.1.tgz#0df881a47da1c1a9774f39495f5f7052f86b72e0" + integrity sha512-nISDRYnnIpk7VCFrGcu1rnZfM1Dh9LRHnfgdkjcbi/l7g16VYRri3TjXi9Ir4lOZSw5N/gnV/3H7jIPQ8Q4daA== + dependencies: + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.18.1" + "@typescript-eslint/type-utils" "6.18.1" + "@typescript-eslint/utils" "6.18.1" + "@typescript-eslint/visitor-keys" "6.18.1" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/eslint-plugin@^5.5.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" + integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== + dependencies: + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/type-utils" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/experimental-utils@^5.0.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz#14559bf73383a308026b427a4a6129bae2146741" + integrity sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw== + dependencies: + "@typescript-eslint/utils" "5.62.0" + +"@typescript-eslint/parser@6.18.1": + version "6.18.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.18.1.tgz#3c3987e186b38c77b30b6bfa5edf7c98ae2ec9d3" + integrity sha512-zct/MdJnVaRRNy9e84XnVtRv9Vf91/qqe+hZJtKanjojud4wAVy/7lXxJmMyX6X6J+xc6c//YEWvpeif8cAhWA== + dependencies: + "@typescript-eslint/scope-manager" "6.18.1" + "@typescript-eslint/types" "6.18.1" + "@typescript-eslint/typescript-estree" "6.18.1" + "@typescript-eslint/visitor-keys" "6.18.1" + debug "^4.3.4" + +"@typescript-eslint/parser@^5.5.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" + integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== + dependencies: + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + +"@typescript-eslint/scope-manager@6.18.1": + version "6.18.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.18.1.tgz#28c31c60f6e5827996aa3560a538693cb4bd3848" + integrity sha512-BgdBwXPFmZzaZUuw6wKiHKIovms97a7eTImjkXCZE04TGHysG+0hDQPmygyvgtkoB/aOQwSM/nWv3LzrOIQOBw== + dependencies: + "@typescript-eslint/types" "6.18.1" + "@typescript-eslint/visitor-keys" "6.18.1" + +"@typescript-eslint/type-utils@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" + integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== + dependencies: + "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/type-utils@6.18.1": + version "6.18.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.18.1.tgz#115cf535f8b39db8301677199ce51151e2daee96" + integrity sha512-wyOSKhuzHeU/5pcRDP2G2Ndci+4g653V43gXTpt4nbyoIOAASkGDA9JIAgbQCdCkcr1MvpSYWzxTz0olCn8+/Q== + dependencies: + "@typescript-eslint/typescript-estree" "6.18.1" + "@typescript-eslint/utils" "6.18.1" + debug "^4.3.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== + +"@typescript-eslint/types@6.18.1": + version "6.18.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.18.1.tgz#91617d8080bcd99ac355d9157079970d1d49fefc" + integrity sha512-4TuMAe+tc5oA7wwfqMtB0Y5OrREPF1GeJBAjqwgZh1lEMH5PJQgWgHGfYufVB51LtjD+peZylmeyxUXPfENLCw== + +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/typescript-estree@6.18.1": + version "6.18.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.18.1.tgz#a12b6440175b4cbc9d09ab3c4966c6b245215ab4" + integrity sha512-fv9B94UAhywPRhUeeV/v+3SBDvcPiLxRZJw/xZeeGgRLQZ6rLMG+8krrJUyIf6s1ecWTzlsbp0rlw7n9sjufHA== + dependencies: + "@typescript-eslint/types" "6.18.1" + "@typescript-eslint/visitor-keys" "6.18.1" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "9.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.58.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + eslint-scope "^5.1.1" + semver "^7.3.7" + +"@typescript-eslint/utils@6.18.1": + version "6.18.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.18.1.tgz#3451cfe2e56babb6ac657e10b6703393d4b82955" + integrity sha512-zZmTuVZvD1wpoceHvoQpOiewmWu3uP9FuTWo8vqpy2ffsmfCE8mklRPi+vmnIYAIk9t/4kOThri2QCDgor+OpQ== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.18.1" + "@typescript-eslint/types" "6.18.1" + "@typescript-eslint/typescript-estree" "6.18.1" + semver "^7.5.4" + +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== + dependencies: + "@typescript-eslint/types" "5.62.0" + eslint-visitor-keys "^3.3.0" + +"@typescript-eslint/visitor-keys@6.18.1": + version "6.18.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.18.1.tgz#704d789bda2565a15475e7d22f145b8fe77443f4" + integrity sha512-/kvt0C5lRqGoCfsbmm7/CwMqoSkY3zzHLIjdhHZQW3VFrnz7ATecOHR7nb7V+xn4286MBxfnQfQhAmCI0u+bJA== + dependencies: + "@typescript-eslint/types" "6.18.1" + eslint-visitor-keys "^3.4.1" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +"@vitejs/plugin-react@4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz#744d8e4fcb120fc3dbaa471dadd3483f5a304bb9" + integrity sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ== + dependencies: + "@babel/core" "^7.23.5" + "@babel/plugin-transform-react-jsx-self" "^7.23.3" + "@babel/plugin-transform-react-jsx-source" "^7.23.3" + "@types/babel__core" "^7.20.5" + react-refresh "^0.14.0" + +acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.1.1: + version "8.3.2" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" + integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== + +acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.4.1, acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + +ajv-draft-04@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz#3b64761b268ba0b9e668f0b41ba53fce0ad77fc8" + integrity sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw== + +ajv@8.12.0, ajv@^8.0.1, ajv@^8.6.3: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ajv@^6.10.0, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +aria-query@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: + dequal "^2.0.3" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== + +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + +array-includes@^3.1.6, array-includes@^3.1.7: + version "3.1.7" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== + +array.prototype.findlastindex@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" + integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" + +array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.1, array.prototype.flatmap@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.reduce@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz#63149931808c5fc1e1354814923d92d45f7d96d5" + integrity sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" + +array.prototype.tosorted@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz#620eff7442503d66c799d95503f82b475745cefd" + integrity sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" + +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + +asap@~2.0.3, asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== + +ast-types-flow@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" + integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== + +ast-types@0.11.7: + version "0.11.7" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.7.tgz#f318bf44e339db6a320be0009ded64ec1471f46c" + integrity sha512-2mP3TwtkY/aTv5X3ZsMpNAbOnyoC/aMJwJSoaELPkHId0nSQgFcnU4dRW3isxiz7+zBexk0ym3WNVjMiQBnJSw== + +ast-types@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" + integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA== + dependencies: + tslib "^2.0.1" + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async@^3.2.3: + version "3.2.5" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" + integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== + +asynciterator.prototype@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62" + integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== + dependencies: + has-symbols "^1.0.3" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@10.4.16: + version "10.4.16" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.16.tgz#fad1411024d8670880bdece3970aa72e3572feb8" + integrity sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ== + dependencies: + browserslist "^4.21.10" + caniuse-lite "^1.0.30001538" + fraction.js "^4.3.6" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +autosuggest-highlight@3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/autosuggest-highlight/-/autosuggest-highlight-3.3.4.tgz#d71b575ba8eab40b5adba73df9244e9ba88cc387" + integrity sha512-j6RETBD2xYnrVcoV1S5R4t3WxOlWZKyDQjkwnggDPSjF5L4jV98ZltBpvPvbkM1HtoSe5o+bNrTHyjPbieGeYA== + dependencies: + remove-accents "^0.4.2" + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +axe-core@=4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" + integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== + +axios-mock-adapter@1.21.5: + version "1.21.5" + resolved "https://registry.yarnpkg.com/axios-mock-adapter/-/axios-mock-adapter-1.21.5.tgz#dd85081717a759f88509c20515082dc09c1cedd7" + integrity sha512-5NI1V/VK+8+JeTF8niqOowuysA4b8mGzdlMN/QnTnoXbYh4HZSNiopsDclN2g/m85+G++IrEtUdZaQ3GnaMsSA== + dependencies: + fast-deep-equal "^3.1.3" + is-buffer "^2.0.5" + +axios@1.6.5: + version "1.6.5" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.5.tgz#2c090da14aeeab3770ad30c3a1461bc970fb0cd8" + integrity sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg== + dependencies: + follow-redirects "^1.15.4" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +axobject-query@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" + integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== + dependencies: + dequal "^2.0.3" + +babel-core@^7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== + +babel-plugin-macros@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== + dependencies: + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" + +babel-plugin-polyfill-corejs2@^0.4.7, babel-plugin-polyfill-corejs2@^0.4.8: + version "0.4.8" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz#dbcc3c8ca758a290d47c3c6a490d59429b0d2269" + integrity sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.5.0" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.8.7: + version "0.8.7" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz#941855aa7fdaac06ed24c730a93450d2b2b76d04" + integrity sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.4.4" + core-js-compat "^3.33.1" + +babel-plugin-polyfill-corejs3@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz#9eea32349d94556c2ad3ab9b82ebb27d4bf04a81" + integrity sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.5.0" + core-js-compat "^3.34.0" + +babel-plugin-polyfill-regenerator@^0.5.4, babel-plugin-polyfill-regenerator@^0.5.5: + version "0.5.5" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz#8b0c8fc6434239e5d7b8a9d1f832bb2b0310f06a" + integrity sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.5.0" + +babel-plugin-transform-react-remove-prop-types@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" + integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== + +babel-preset-react-app@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz#ed6005a20a24f2c88521809fa9aea99903751584" + integrity sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg== + dependencies: + "@babel/core" "^7.16.0" + "@babel/plugin-proposal-class-properties" "^7.16.0" + "@babel/plugin-proposal-decorators" "^7.16.4" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.0" + "@babel/plugin-proposal-numeric-separator" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.0" + "@babel/plugin-proposal-private-methods" "^7.16.0" + "@babel/plugin-transform-flow-strip-types" "^7.16.0" + "@babel/plugin-transform-react-display-name" "^7.16.0" + "@babel/plugin-transform-runtime" "^7.16.4" + "@babel/preset-env" "^7.16.4" + "@babel/preset-react" "^7.16.0" + "@babel/preset-typescript" "^7.16.0" + "@babel/runtime" "^7.16.3" + babel-plugin-macros "^3.1.0" + babel-plugin-transform-react-remove-prop-types "^0.4.24" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browserslist@^4.21.10, browserslist@^4.22.2: + version "4.22.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.3.tgz#299d11b7e947a6b843981392721169e27d60c5a6" + integrity sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A== + dependencies: + caniuse-lite "^1.0.30001580" + electron-to-chromium "^1.4.648" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + +btoa@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" + integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== + dependencies: + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" + +call-me-maybe@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa" + integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ== + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +camelize@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" + integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== + +caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001580: + version "1.0.30001580" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001580.tgz#e3c76bc6fe020d9007647044278954ff8cd17d1e" + integrity sha512-mtj5ur2FFPZcCEpXFy8ADXbDACuNFXg6mxVDqp7tqooX6l3zwm+d8EPoeOSIFRDvHs8qu7/SLFOGniULkcH2iA== + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +ci-info@^3.2.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +classnames@^2.2.6: + version "2.5.1" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" + integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== + dependencies: + restore-cursor "^2.0.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clsx@2.1.0, clsx@^2.0.0, clsx@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.0.tgz#e851283bcb5c80ee7608db18487433f7b23f77cb" + integrity sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg== + +clsx@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" + integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colors@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^4.0.0, commander@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +commander@^6.2.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" + integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +component-emitter@^1.2.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.1.tgz#ef1d5796f7d93f135ee6fb684340b26403c97d17" + integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +confusing-browser-globals@^1.0.10, confusing-browser-globals@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" + integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== + +convert-source-map@^1.5.0, convert-source-map@^1.7.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +copy-anything@^2.0.1: + version "2.0.6" + resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" + integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== + dependencies: + is-what "^3.14.1" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== + +core-js-compat@^3.31.0, core-js-compat@^3.33.1, core-js-compat@^3.34.0: + version "3.35.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.35.1.tgz#215247d7edb9e830efa4218ff719beb2803555e2" + integrity sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw== + dependencies: + browserslist "^4.22.2" + +core-js@^3.30.2, core-js@^3.6.4: + version "3.35.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.35.1.tgz#9c28f8b7ccee482796f8590cc8d15739eaaf980c" + integrity sha512-IgdsbxNyMskrTFxa9lWHyMwAJU5gXOPP+1yO+K59d50VLVAIDAbs7gIv705KzALModfK3ZrSZTPNpC0PQgIZuw== + +cosmiconfig@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +cosmiconfig@^8.1.3, cosmiconfig@^8.3.5: + version "8.3.6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== + dependencies: + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + path-type "^4.0.0" + +create-jest-runner@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/create-jest-runner/-/create-jest-runner-0.5.3.tgz#1387e2ce70b08e4c989ae55f677005b64f9ba97b" + integrity sha512-a9VY2doMBmzRollJB3Ft3/Y5fBceSWJ4gdyVsg4/d7nP1S4715VG939s2VnITDj79YBmRgKhjGjNRv1c+Kre1g== + dependencies: + chalk "^2.4.2" + jest-worker "^24.0.0" + throat "^4.1.0" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-env@7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" + integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== + dependencies: + cross-spawn "^7.0.1" + +cross-fetch@^3.0.4: + version "3.1.8" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + dependencies: + node-fetch "^2.6.12" + +cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-js@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631" + integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q== + +css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" + integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== + +css-to-react-native@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32" + integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ== + dependencies: + camelize "^1.0.0" + css-color-keywords "^1.0.0" + postcss-value-parser "^4.0.2" + +css-vendor@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/css-vendor/-/css-vendor-2.0.8.tgz#e47f91d3bd3117d49180a3c935e62e3d9f7f449d" + integrity sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ== + dependencies: + "@babel/runtime" "^7.8.3" + is-in-browser "^1.0.2" + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssjanus@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cssjanus/-/cssjanus-2.1.0.tgz#6f99070e0b7cc79f826ea48c63c03cb250713af1" + integrity sha512-kAijbny3GmdOi9k+QT6DGIXqFvL96aksNlGr4Rhk9qXDZYWUojU4bRc3IHWxdaLNOqgEZHuXoe5Wl2l7dxLW5g== + +csstype@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" + integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== + +csstype@^3.0.2, csstype@^3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +damerau-levenshtein@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== + +date-fns@2.30.0: + version "2.30.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" + integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== + dependencies: + "@babel/runtime" "^7.21.0" + +debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decode-uri-component@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + +deep-diff@^0.3.5: + version "0.3.8" + resolved "https://registry.yarnpkg.com/deep-diff/-/deep-diff-0.3.8.tgz#c01de63efb0eec9798801d40c7e0dae25b582c84" + integrity sha512-yVn6RZmHiGnxRKR9sJb3iVV2XTF1Ghh2DiWRZ3dMnGc43yUdWWF/kX6lQyk3+P84iprfWKU/8zFTrlkvtFm1ug== + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +define-data-property@^1.0.1, define-data-property@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +dequal@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-helpers@^5.0.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^3.0.2" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dotenv@^16.0.3: + version "16.4.1" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.1.tgz#1d9931f1d3e5d2959350d1250efab299561f7f11" + integrity sha512-CjA3y+Dr3FyFDOAMnxZEGtnW9KBR2M0JvvUtXNW+dYJL5ROWxP9DUHCwgFqpMk0OXCc0ljhaNTr2w/kutYIcHQ== + +draft-js@0.11.7: + version "0.11.7" + resolved "https://registry.yarnpkg.com/draft-js/-/draft-js-0.11.7.tgz#be293aaa255c46d8a6647f3860aa4c178484a206" + integrity sha512-ne7yFfN4sEL82QPQEn80xnADR8/Q6ALVworbC5UOSzOvjffmYfFsr3xSZtxbIirti14R7Y33EZC5rivpLgIbsg== + dependencies: + fbjs "^2.0.0" + immutable "~3.7.4" + object-assign "^4.1.1" + +draftjs-to-html@0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/draftjs-to-html/-/draftjs-to-html-0.9.1.tgz#1c870fbb588d2390204cb4d0ee7e04ad0c709969" + integrity sha512-fFstE6+IayaVFBEvaFt/wN8vdj8FsTRzij7dy7LI9QIwf5LgfHFi9zSpvCg+feJ2tbYVqHxUkjcibwpsTpgFVQ== + +draftjs-utils@^0.10.2: + version "0.10.2" + resolved "https://registry.yarnpkg.com/draftjs-utils/-/draftjs-utils-0.10.2.tgz#a7f16d2c1c174ac38ba3bbf700c256f176b2699c" + integrity sha512-EstHqr3R3JVcilJrBaO/A+01GvwwKmC7e4TCjC7S94ZeMh4IVmf60OuQXtHHpwItK8C2JCi3iljgN5KHkJboUg== + +duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +ejs@^3.1.5: + version "3.1.9" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" + integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== + dependencies: + jake "^10.8.5" + +electron-to-chromium@^1.4.648: + version "1.4.648" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.648.tgz#c7b46c9010752c37bb4322739d6d2dd82354fbe4" + integrity sha512-EmFMarXeqJp9cUKu/QEciEApn0S/xRcpZWuAm32U7NgoZCimjsilKXHRO9saeEW55eHZagIDg6XTUOv32w9pjg== + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +enquirer@^2.3.5: + version "2.4.1" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" + integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== + dependencies: + ansi-colors "^4.1.1" + strip-ansi "^6.0.1" + +entities@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +errno@^0.1.1: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.22.1: + version "1.22.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" + integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== + dependencies: + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.2" + available-typed-arrays "^1.0.5" + call-bind "^1.0.5" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.2" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.12" + is-weakref "^1.0.2" + object-inspect "^1.13.1" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.13" + +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== + +es-iterator-helpers@^1.0.12, es-iterator-helpers@^1.0.15: + version "1.0.15" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40" + integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== + dependencies: + asynciterator.prototype "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.1" + es-abstract "^1.22.1" + es-set-tostringtag "^2.0.1" + function-bind "^1.1.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + iterator.prototype "^1.1.2" + safe-array-concat "^1.0.1" + +es-set-tostringtag@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" + integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== + dependencies: + get-intrinsic "^1.2.2" + has-tostringtag "^1.0.0" + hasown "^2.0.0" + +es-shim-unscopables@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== + dependencies: + hasown "^2.0.0" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es6-promise@^3.2.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" + integrity sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg== + +es6-promise@^4.2.8: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +esbuild@^0.19.3: + version "0.19.12" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04" + integrity sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg== + optionalDependencies: + "@esbuild/aix-ppc64" "0.19.12" + "@esbuild/android-arm" "0.19.12" + "@esbuild/android-arm64" "0.19.12" + "@esbuild/android-x64" "0.19.12" + "@esbuild/darwin-arm64" "0.19.12" + "@esbuild/darwin-x64" "0.19.12" + "@esbuild/freebsd-arm64" "0.19.12" + "@esbuild/freebsd-x64" "0.19.12" + "@esbuild/linux-arm" "0.19.12" + "@esbuild/linux-arm64" "0.19.12" + "@esbuild/linux-ia32" "0.19.12" + "@esbuild/linux-loong64" "0.19.12" + "@esbuild/linux-mips64el" "0.19.12" + "@esbuild/linux-ppc64" "0.19.12" + "@esbuild/linux-riscv64" "0.19.12" + "@esbuild/linux-s390x" "0.19.12" + "@esbuild/linux-x64" "0.19.12" + "@esbuild/netbsd-x64" "0.19.12" + "@esbuild/openbsd-x64" "0.19.12" + "@esbuild/sunos-x64" "0.19.12" + "@esbuild/win32-arm64" "0.19.12" + "@esbuild/win32-ia32" "0.19.12" + "@esbuild/win32-x64" "0.19.12" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-config-airbnb-base@^15.0.0: + version "15.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz#6b09add90ac79c2f8d723a2580e07f3925afd236" + integrity sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig== + dependencies: + confusing-browser-globals "^1.0.10" + object.assign "^4.1.2" + object.entries "^1.1.5" + semver "^6.3.0" + +eslint-config-airbnb@19.0.4: + version "19.0.4" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz#84d4c3490ad70a0ffa571138ebcdea6ab085fdc3" + integrity sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew== + dependencies: + eslint-config-airbnb-base "^15.0.0" + object.assign "^4.1.2" + object.entries "^1.1.5" + +eslint-config-prettier@9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" + integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== + +eslint-config-react-app@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz#73ba3929978001c5c86274c017ea57eb5fa644b4" + integrity sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA== + dependencies: + "@babel/core" "^7.16.0" + "@babel/eslint-parser" "^7.16.3" + "@rushstack/eslint-patch" "^1.1.0" + "@typescript-eslint/eslint-plugin" "^5.5.0" + "@typescript-eslint/parser" "^5.5.0" + babel-preset-react-app "^10.0.1" + confusing-browser-globals "^1.0.11" + eslint-plugin-flowtype "^8.0.3" + eslint-plugin-import "^2.25.3" + eslint-plugin-jest "^25.3.0" + eslint-plugin-jsx-a11y "^6.5.1" + eslint-plugin-react "^7.27.1" + eslint-plugin-react-hooks "^4.3.0" + eslint-plugin-testing-library "^5.0.1" + +eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +eslint-module-utils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" + integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== + dependencies: + debug "^3.2.7" + +eslint-plugin-flowtype@8.0.3, eslint-plugin-flowtype@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz#e1557e37118f24734aa3122e7536a038d34a4912" + integrity sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ== + dependencies: + lodash "^4.17.21" + string-natural-compare "^3.0.1" + +eslint-plugin-import@2.29.1, eslint-plugin-import@^2.25.3: + version "2.29.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" + integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== + dependencies: + array-includes "^3.1.7" + array.prototype.findlastindex "^1.2.3" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.8.0" + hasown "^2.0.0" + is-core-module "^2.13.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.7" + object.groupby "^1.0.1" + object.values "^1.1.7" + semver "^6.3.1" + tsconfig-paths "^3.15.0" + +eslint-plugin-jest@^25.3.0: + version "25.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz#ff4ac97520b53a96187bad9c9814e7d00de09a6a" + integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ== + dependencies: + "@typescript-eslint/experimental-utils" "^5.0.0" + +eslint-plugin-jsx-a11y@6.8.0, eslint-plugin-jsx-a11y@^6.5.1: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2" + integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== + dependencies: + "@babel/runtime" "^7.23.2" + aria-query "^5.3.0" + array-includes "^3.1.7" + array.prototype.flatmap "^1.3.2" + ast-types-flow "^0.0.8" + axe-core "=4.7.0" + axobject-query "^3.2.1" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" + es-iterator-helpers "^1.0.15" + hasown "^2.0.0" + jsx-ast-utils "^3.3.5" + language-tags "^1.0.9" + minimatch "^3.1.2" + object.entries "^1.1.7" + object.fromentries "^2.0.7" + +eslint-plugin-prettier@5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz#17cfade9e732cef32b5f5be53bd4e07afd8e67e1" + integrity sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw== + dependencies: + prettier-linter-helpers "^1.0.0" + synckit "^0.8.6" + +eslint-plugin-react-hooks@4.6.0, eslint-plugin-react-hooks@^4.3.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + +eslint-plugin-react@7.33.2, eslint-plugin-react@^7.27.1: + version "7.33.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608" + integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== + dependencies: + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" + doctrine "^2.1.0" + es-iterator-helpers "^1.0.12" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" + prop-types "^15.8.1" + resolve "^2.0.0-next.4" + semver "^6.3.1" + string.prototype.matchall "^4.0.8" + +eslint-plugin-testing-library@^5.0.1: + version "5.11.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz#5b46cdae96d4a78918711c0b4792f90088e62d20" + integrity sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw== + dependencies: + "@typescript-eslint/utils" "^5.58.0" + +eslint-plugin-unused-imports@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.0.0.tgz#d25175b0072ff16a91892c3aa72a09ca3a9e69e7" + integrity sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw== + dependencies: + eslint-rule-composer "^0.3.0" + +eslint-rule-composer@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9" + integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg== + +eslint-scope@5.1.1, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@8.56.0: + version "8.56.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.56.0.tgz#4957ce8da409dc0809f99ab07a1b94832ab74b15" + integrity sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.56.0" + "@humanwhocodes/config-array" "^0.11.13" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +eslint@^7.14.0: + version "7.32.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" + integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.3" + "@humanwhocodes/config-array" "^0.5.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.1.2" + globals "^13.6.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.9" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@9.6.1, espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + +esprima@^4.0.0, esprima@~4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0, esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expect@^29.0.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" + integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== + dependencies: + "@jest/expect-utils" "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-diff@^1.1.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" + integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== + +fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.9: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-safe-stringify@^2.0.7: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + +fastq@^1.6.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.0.tgz#ca5e1a90b5e68f97fc8b61330d5819b82f5fab03" + integrity sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w== + dependencies: + reusify "^1.0.4" + +faye-websocket@0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +fbjs-css-vars@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" + integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== + +fbjs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-2.0.0.tgz#01fb812138d7e31831ed3e374afe27b9169ef442" + integrity sha512-8XA8ny9ifxrAWlyhAbexXcs3rRMtxWcs3M0lctLfB49jRDHiaxj+Mo0XxbwE7nKZYzgCFoq64FS+WFd4IycPPQ== + dependencies: + core-js "^3.6.4" + cross-fetch "^3.0.4" + fbjs-css-vars "^1.0.0" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +filelist@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-cache-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +firebase@10.7.1: + version "10.7.1" + resolved "https://registry.yarnpkg.com/firebase/-/firebase-10.7.1.tgz#71fa17a10146f388746ecc216a3e1e477a7bf9b5" + integrity sha512-Mlt7y7zQ43FtKp4SCyYie3tnrOL3UMF2XXiV4ZXMrC0d0wtcOYmABuybhkJpJCKILpdekxr39wjnaai0DZlWFg== + dependencies: + "@firebase/analytics" "0.10.0" + "@firebase/analytics-compat" "0.2.6" + "@firebase/app" "0.9.25" + "@firebase/app-check" "0.8.1" + "@firebase/app-check-compat" "0.3.8" + "@firebase/app-compat" "0.2.25" + "@firebase/app-types" "0.9.0" + "@firebase/auth" "1.5.1" + "@firebase/auth-compat" "0.5.1" + "@firebase/database" "1.0.2" + "@firebase/database-compat" "1.0.2" + "@firebase/firestore" "4.4.0" + "@firebase/firestore-compat" "0.3.23" + "@firebase/functions" "0.11.0" + "@firebase/functions-compat" "0.3.6" + "@firebase/installations" "0.6.4" + "@firebase/installations-compat" "0.2.4" + "@firebase/messaging" "0.12.5" + "@firebase/messaging-compat" "0.2.5" + "@firebase/performance" "0.6.4" + "@firebase/performance-compat" "0.2.4" + "@firebase/remote-config" "0.4.4" + "@firebase/remote-config-compat" "0.2.4" + "@firebase/storage" "0.12.0" + "@firebase/storage-compat" "0.3.3" + "@firebase/util" "1.9.3" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flatted@^3.2.9: + version "3.2.9" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== + +flow-parser@0.*: + version "0.227.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.227.0.tgz#e50b65be9dc6810438c975e816a68005fbcd5107" + integrity sha512-nOygtGKcX/siZK/lFzpfdHEfOkfGcTW7rNroR1Zsz6T/JxSahPALXVt5qVHq/fgvMJuv096BTKbgxN3PzVBaDA== + +follow-redirects@^1.15.4: + version "1.15.5" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020" + integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== + +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fraction.js@^4.3.6: + version "4.3.7" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== + dependencies: + map-cache "^0.2.2" + +framer-motion@10.18.0: + version "10.18.0" + resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-10.18.0.tgz#1f4fc51403996ea7170af885bd44a7079d255950" + integrity sha512-oGlDh1Q1XqYPksuTD/usb0I70hq95OUzmL9+6Zd+Hs4XV0oaISBa/UUMSjYiq6m8EUF32132mOJ8xVZS+I0S6w== + dependencies: + tslib "^2.4.0" + optionalDependencies: + "@emotion/is-prop-valid" "^0.8.2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.1, function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== + +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1, get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== + dependencies: + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@10.3.10, glob@^10.3.10: + version "10.3.10" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" + +glob@^7.1.3, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.19.0, globals@^13.6.0, globals@^13.9.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +globrex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" + integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + dependencies: + duplexer "^0.1.2" + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== + dependencies: + get-intrinsic "^1.2.2" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" + +history@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/history/-/history-5.3.0.tgz#1548abaa245ba47992f063a0783db91ef201c73b" + integrity sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ== + dependencies: + "@babel/runtime" "^7.7.6" + +hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + +html-parse-stringify@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz#dfc1017347ce9f77c8141a507f233040c59c55d2" + integrity sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg== + dependencies: + void-elements "3.1.0" + +html-to-draftjs@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/html-to-draftjs/-/html-to-draftjs-1.5.0.tgz#0df0eabf429deaedb63f5c859889e2c983606e86" + integrity sha512-kggLXBNciKDwKf+KYsuE+V5gw4dZ7nHyGMX9m0wy7urzWjKGWyNFetmArRLvRV0VrxKN70WylFsJvMTJx02OBQ== + +http-parser-js@>=0.5.1: + version "0.5.8" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" + integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== + +http2-client@^1.2.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/http2-client/-/http2-client-1.3.5.tgz#20c9dc909e3cc98284dd20af2432c524086df181" + integrity sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA== + +hyphenate-style-name@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" + integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== + +i18next@23.7.16: + version "23.7.16" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.7.16.tgz#7026d18b7a3ac9e2ecfeb78da5e4da5ca33312ef" + integrity sha512-SrqFkMn9W6Wb43ZJ9qrO6U2U4S80RsFMA7VYFSqp7oc7RllQOYDCdRfsse6A7Cq/V8MnpxKvJCYgM8++27n4Fw== + dependencies: + "@babel/runtime" "^7.23.2" + +iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +idb@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/idb/-/idb-7.0.1.tgz#d2875b3a2f205d854ee307f6d196f246fea590a7" + integrity sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg== + +idb@7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/idb/-/idb-7.1.1.tgz#d910ded866d32c7ced9befc5bfdf36f572ced72b" + integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.2.0, ignore@^5.2.4: + version "5.3.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" + integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== + +immer@^10.0.3: + version "10.0.3" + resolved "https://registry.yarnpkg.com/immer/-/immer-10.0.3.tgz#a8de42065e964aa3edf6afc282dfc7f7f34ae3c9" + integrity sha512-pwupu3eWfouuaowscykeckFmVTpqbzW+rXFCX8rQLkZzM9ftBmU/++Ra+o+L27mz03zJTlyV4UUr+fdKNffo4A== + +immutable@4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.4.tgz#2e07b33837b4bb7662f288c244d1ced1ef65a78f" + integrity sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA== + +immutable@^4.0.0: + version "4.3.5" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.5.tgz#f8b436e66d59f99760dc577f5c99a4fd2a5cc5a0" + integrity sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw== + +immutable@~3.7.4: + version "3.7.6" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b" + integrity sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw== + +import-fresh@^3.0.0, import-fresh@^3.2.1, import-fresh@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +internal-slot@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" + integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== + dependencies: + get-intrinsic "^1.2.2" + hasown "^2.0.0" + side-channel "^1.0.4" + +is-accessor-descriptor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz#3223b10628354644b86260db29b3e693f5ceedd4" + integrity sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA== + dependencies: + hasown "^2.0.0" + +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-async-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" + integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== + dependencies: + has-tostringtag "^1.0.0" + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-buffer@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.13.0, is-core-module@^2.13.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + +is-data-descriptor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz#2109164426166d32ea38c405c1e0945d9e6a4eeb" + integrity sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw== + dependencies: + hasown "^2.0.0" + +is-date-object@^1.0.1, is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-descriptor@^0.1.0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.7.tgz#2727eb61fd789dcd5bdf0ed4569f551d2fe3be33" + integrity sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg== + dependencies: + is-accessor-descriptor "^1.0.1" + is-data-descriptor "^1.0.1" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.3.tgz#92d27cb3cd311c4977a4db47df457234a13cb306" + integrity sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw== + dependencies: + is-accessor-descriptor "^1.0.1" + is-data-descriptor "^1.0.1" + +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-finalizationregistry@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" + integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== + dependencies: + call-bind "^1.0.2" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-function@^1.0.10, is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-in-browser@^1.0.2, is-in-browser@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" + integrity sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g== + +is-map@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-set@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.3, is-typed-array@^1.1.9: + version "1.1.12" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + dependencies: + which-typed-array "^1.1.11" + +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +is-what@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +iterator.prototype@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" + integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== + dependencies: + define-properties "^1.2.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + reflect.getprototypeof "^1.0.4" + set-function-name "^2.0.1" + +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jake@^10.8.5: + version "10.8.7" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f" + integrity sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.4" + minimatch "^3.1.2" + +jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-matcher-utils@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== + dependencies: + chalk "^4.0.0" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-worker@^24.0.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + +jiti@^1.18.2, jiti@^1.20.0: + version "1.21.0" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" + integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jscodeshift@^0.13.0: + version "0.13.1" + resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.13.1.tgz#69bfe51e54c831296380585c6d9e733512aecdef" + integrity sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ== + dependencies: + "@babel/core" "^7.13.16" + "@babel/parser" "^7.13.16" + "@babel/plugin-proposal-class-properties" "^7.13.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" + "@babel/plugin-proposal-optional-chaining" "^7.13.12" + "@babel/plugin-transform-modules-commonjs" "^7.13.8" + "@babel/preset-flow" "^7.13.13" + "@babel/preset-typescript" "^7.13.0" + "@babel/register" "^7.13.16" + babel-core "^7.0.0-bridge.0" + chalk "^4.1.2" + flow-parser "0.*" + graceful-fs "^4.2.4" + micromatch "^3.1.10" + neo-async "^2.5.0" + node-dir "^0.1.17" + recast "^0.20.4" + temp "^0.8.4" + write-file-atomic "^2.3.0" + +jscodeshift@^0.6.3: + version "0.6.4" + resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.6.4.tgz#e19ab86214edac86a75c4557fc88b3937d558a8e" + integrity sha512-+NF/tlNbc2WEhXUuc4WEJLsJumF84tnaMUZW2hyJw3jThKKRvsPX4sPJVgO1lPE28z0gNL+gwniLG9d8mYvQCQ== + dependencies: + "@babel/core" "^7.1.6" + "@babel/parser" "^7.1.6" + "@babel/plugin-proposal-class-properties" "^7.1.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/preset-env" "^7.1.6" + "@babel/preset-flow" "^7.0.0" + "@babel/preset-typescript" "^7.1.0" + "@babel/register" "^7.0.0" + babel-core "^7.0.0-bridge.0" + colors "^1.1.2" + flow-parser "0.*" + graceful-fs "^4.1.11" + micromatch "^3.1.10" + neo-async "^2.5.0" + node-dir "^0.1.17" + recast "^0.16.1" + temp "^0.8.1" + write-file-atomic "^2.3.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-schema@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json5-writer@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/json5-writer/-/json5-writer-0.1.8.tgz#98e1934ef6002f8ac12f36438e2b39c49af213fd" + integrity sha512-h5sqkk/vSKvESOUTBniGWs8p8nTzHsoDrxPS9enJfQVINqXv3lm+FAyizLwbrCwCn0q7NXqDBb+r8AdUdK3XZw== + dependencies: + jscodeshift "^0.6.3" + +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +json5@^2.1.1, json5@^2.2.2, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jss-plugin-camel-case@^10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz#27ea159bab67eb4837fa0260204eb7925d4daa1c" + integrity sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw== + dependencies: + "@babel/runtime" "^7.3.1" + hyphenate-style-name "^1.0.3" + jss "10.10.0" + +jss-plugin-default-unit@^10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz#db3925cf6a07f8e1dd459549d9c8aadff9804293" + integrity sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + +jss-plugin-global@^10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz#1c55d3c35821fab67a538a38918292fc9c567efd" + integrity sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + +jss-plugin-nested@^10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz#db872ed8925688806e77f1fc87f6e62264513219" + integrity sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + tiny-warning "^1.0.2" + +jss-plugin-props-sort@^10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz#67f4dd4c70830c126f4ec49b4b37ccddb680a5d7" + integrity sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + +jss-plugin-rule-value-function@^10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz#7d99e3229e78a3712f78ba50ab342e881d26a24b" + integrity sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + tiny-warning "^1.0.2" + +jss-plugin-vendor-prefixer@^10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz#c01428ef5a89f2b128ec0af87a314d0c767931c7" + integrity sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg== + dependencies: + "@babel/runtime" "^7.3.1" + css-vendor "^2.0.8" + jss "10.10.0" + +jss@10.10.0, jss@^10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss/-/jss-10.10.0.tgz#a75cc85b0108c7ac8c7b7d296c520a3e4fbc6ccc" + integrity sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw== + dependencies: + "@babel/runtime" "^7.3.1" + csstype "^3.0.2" + is-in-browser "^1.1.3" + tiny-warning "^1.0.2" + +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5: + version "3.3.5" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" + integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + object.assign "^4.1.4" + object.values "^1.1.6" + +jwt-decode@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-3.1.2.tgz#3fb319f3675a2df0c2895c8f5e9fa4b67b04ed59" + integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== + +keycode@2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.2.1.tgz#09c23b2be0611d26117ea2501c2c391a01f39eff" + integrity sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg== + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== + dependencies: + is-buffer "^1.1.5" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +language-subtag-registry@^0.3.20: + version "0.3.22" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" + integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== + +language-tags@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777" + integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== + dependencies: + language-subtag-registry "^0.3.20" + +less@^4.1.3: + version "4.2.0" + resolved "https://registry.yarnpkg.com/less/-/less-4.2.0.tgz#cbefbfaa14a4cd388e2099b2b51f956e1465c450" + integrity sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA== + dependencies: + copy-anything "^2.0.1" + parse-node-version "^1.0.1" + tslib "^2.3.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + needle "^3.1.0" + source-map "~0.6.0" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lilconfig@^2.0.5, lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lilconfig@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.0.0.tgz#f8067feb033b5b74dab4602a5f5029420be749bc" + integrity sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +linkify-it@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.2.0.tgz#e3b54697e78bf915c70a38acd78fd09e0058b1cf" + integrity sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw== + dependencies: + uc.micro "^1.0.1" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.castarray@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.castarray/-/lodash.castarray-4.4.0.tgz#c02513515e309daddd4c24c60cfddcf5976d9115" + integrity sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q== + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + +lodash@4.17.21, lodash@^4.17.20, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-update@^3.3.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-3.4.0.tgz#3b9a71e00ac5b1185cc193a36d654581c48f97b9" + integrity sha512-ILKe88NeMt4gmDvk/eb615U/IVn7K9KWGkoYbdatQ69Z65nj1ZzjM6fHXfcs0Uge+e+EGnMW7DY4T9yko8vWFg== + dependencies: + ansi-escapes "^3.2.0" + cli-cursor "^2.1.0" + wrap-ansi "^5.0.0" + +long@^5.0.0: + version "5.2.3" + resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" + integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +"lru-cache@^9.1.1 || ^10.0.0": + version "10.2.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" + integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== + dependencies: + object-visit "^1.0.0" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^3.1.10: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +minimatch@9.0.3, minimatch@^9.0.1: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1, minimatch@^5.1.0: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.0, minimist@^1.2.6, minimist@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": + version "7.0.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mobile-detect@1.4.5: + version "1.4.5" + resolved "https://registry.yarnpkg.com/mobile-detect/-/mobile-detect-1.4.5.tgz#da393c3c413ca1a9bcdd9ced653c38281c0fb6ad" + integrity sha512-yc0LhH6tItlvfLBugVUEtgawwFU2sIe+cSdmRJJCTMZ5GEJyLxNyC/NIOAOGk67Fa8GNpOttO3Xz/1bHpXFD/g== + +moment@2.29.4: + version "2.29.4" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" + integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nanoid@^3.3.6, nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +needle@^3.1.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/needle/-/needle-3.3.1.tgz#63f75aec580c2e77e209f3f324e2cdf3d29bd049" + integrity sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q== + dependencies: + iconv-lite "^0.6.3" + sax "^1.2.4" + +neo-async@^2.5.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-dir@^0.1.17: + version "0.1.17" + resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" + integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== + dependencies: + minimatch "^3.0.2" + +node-environment-flags@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" + integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== + dependencies: + object.getownpropertydescriptors "^2.0.3" + semver "^5.7.0" + +node-fetch-h2@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz#c6188325f9bd3d834020bf0f2d6dc17ced2241ac" + integrity sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg== + dependencies: + http2-client "^1.2.5" + +node-fetch@^2.6.1, node-fetch@^2.6.12: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-readfiles@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/node-readfiles/-/node-readfiles-0.2.0.tgz#dbbd4af12134e2e635c245ef93ffcf6f60673a5d" + integrity sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA== + dependencies: + es6-promise "^3.2.1" + +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +notistack@1.0.6-next.3: + version "1.0.6-next.3" + resolved "https://registry.yarnpkg.com/notistack/-/notistack-1.0.6-next.3.tgz#120c1a71c3b591fe13419e84f9c2b28383c22c63" + integrity sha512-vtRMCAOyfFzfRIaJgpftwPG/gojL0JqPvEFnpoYSWWZmW80C32dXU+Pq7BrWhW6Y4yO7wv/d2toNM7QJJxdW9Q== + dependencies: + clsx "^1.1.0" + hoist-non-react-statics "^3.3.0" + +oas-kit-common@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/oas-kit-common/-/oas-kit-common-1.0.8.tgz#6d8cacf6e9097967a4c7ea8bcbcbd77018e1f535" + integrity sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ== + dependencies: + fast-safe-stringify "^2.0.7" + +oas-linter@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/oas-linter/-/oas-linter-3.2.2.tgz#ab6a33736313490659035ca6802dc4b35d48aa1e" + integrity sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ== + dependencies: + "@exodus/schemasafe" "^1.0.0-rc.2" + should "^13.2.1" + yaml "^1.10.0" + +oas-resolver@^2.5.6: + version "2.5.6" + resolved "https://registry.yarnpkg.com/oas-resolver/-/oas-resolver-2.5.6.tgz#10430569cb7daca56115c915e611ebc5515c561b" + integrity sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ== + dependencies: + node-fetch-h2 "^2.3.0" + oas-kit-common "^1.0.8" + reftools "^1.1.9" + yaml "^1.10.0" + yargs "^17.0.1" + +oas-schema-walker@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz#74c3cd47b70ff8e0b19adada14455b5d3ac38a22" + integrity sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ== + +oas-validator@^5.0.8: + version "5.0.8" + resolved "https://registry.yarnpkg.com/oas-validator/-/oas-validator-5.0.8.tgz#387e90df7cafa2d3ffc83b5fb976052b87e73c28" + integrity sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw== + dependencies: + call-me-maybe "^1.0.1" + oas-kit-common "^1.0.8" + oas-linter "^3.2.2" + oas-resolver "^2.5.6" + oas-schema-walker "^1.1.5" + reftools "^1.1.9" + should "^13.2.1" + yaml "^1.10.0" + +oazapfts@^4.8.0: + version "4.12.0" + resolved "https://registry.yarnpkg.com/oazapfts/-/oazapfts-4.12.0.tgz#8a86c5fe5a1237b16b05d06d05815cffa2a2b949" + integrity sha512-hNKRG4eLYceuJuqDDx7Uqsi8p3j5k83gNKSo2qnUOTiiU03sCQOjXxOqCXDbzRcuDFyK94+1PBIpotK4NoxIjw== + dependencies: + "@apidevtools/swagger-parser" "^10.1.0" + lodash "^4.17.21" + minimist "^1.2.8" + swagger2openapi "^7.0.8" + typescript "^5.2.2" + +object-assign@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" + integrity sha512-jHP15vXVGeVh1HuaA2wY6lxk+whK/x4KBG88VXeRma7CCun7iGD5qPc4eYykQ9sdQvg8jkwFKsSxHln2ybW3xQ== + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + +object-inspect@^1.13.1, object-inspect@^1.9.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.2, object.assign@^4.1.4: + version "4.1.5" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.entries@^1.1.5, object.entries@^1.1.6, object.entries@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" + integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.fromentries@^2.0.6, object.fromentries@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.getownpropertydescriptors@^2.0.3: + version "2.1.7" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz#7a466a356cd7da4ba8b9e94ff6d35c3eeab5d56a" + integrity sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g== + dependencies: + array.prototype.reduce "^1.0.6" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + safe-array-concat "^1.0.0" + +object.groupby@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" + integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + +object.hasown@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.3.tgz#6a5f2897bb4d3668b8e79364f98ccf971bda55ae" + integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== + dependencies: + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== + dependencies: + isobject "^3.0.1" + +object.values@^1.1.6, object.values@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== + dependencies: + mimic-fn "^1.0.0" + +open@^7.3.1: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +optionator@^0.9.1, optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== + dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.0.0, parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse-ms@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d" + integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA== + +parse-node-version@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== + +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" + integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== + dependencies: + lru-cache "^9.1.1 || ^10.0.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +perfect-scrollbar@1.5.5: + version "1.5.5" + resolved "https://registry.yarnpkg.com/perfect-scrollbar/-/perfect-scrollbar-1.5.5.tgz#41a211a2fb52a7191eff301432134ea47052b27f" + integrity sha512-dzalfutyP3e/FOpdlhVryN4AJ5XDVauVWxybSkLZmakFE2sS3y3pc4JnSprw8tGmHvkaG5Edr5T7LBTZ+WWU2g== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pirates@^4.0.1, pirates@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== + +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== + dependencies: + camelcase-css "^2.0.1" + +postcss-load-config@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" + integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== + dependencies: + lilconfig "^2.0.5" + yaml "^1.10.2" + +postcss-load-config@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" + integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== + dependencies: + lilconfig "^3.0.0" + yaml "^2.3.4" + +postcss-loader@7.3.4: + version "7.3.4" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-7.3.4.tgz#aed9b79ce4ed7e9e89e56199d25ad1ec8f606209" + integrity sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A== + dependencies: + cosmiconfig "^8.3.5" + jiti "^1.20.0" + semver "^7.5.4" + +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== + +postcss-modules-local-by-default@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz#7cbed92abd312b94aaea85b68226d3dec39a14e6" + integrity sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz#32cfab55e84887c079a19bbb215e721d683ef134" + integrity sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-nested@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" + integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== + dependencies: + postcss-selector-parser "^6.0.11" + +postcss-selector-parser@6.0.10: + version "6.0.10" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" + integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: + version "6.0.15" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz#11cc2b21eebc0b99ea374ffb9887174855a01535" + integrity sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@8.4.31: + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +postcss@8.4.33, postcss@^8.0.0, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.32: + version "8.4.33" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.33.tgz#1378e859c9f69bf6f638b990a0212f43e2aaa742" + integrity sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.2.tgz#96e580f7ca9c96090ad054616c0c4597e2844b65" + integrity sha512-HTByuKZzw7utPiDO523Tt2pLtEyK7OibUD9suEJQrPUCYQqrHr74GGX6VidMrovbf/I50mPqr8j/II6oBAuc5A== + +prettier@^2.2.1: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +pretty-format@^29.0.0, pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +pretty-ms@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-7.0.1.tgz#7d903eaab281f7d8e03c66f867e239dc32fb73e8" + integrity sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q== + dependencies: + parse-ms "^2.1.0" + +prismjs@1.29.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" + integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== + +private@~0.1.5: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise@8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.3.0.tgz#8cb333d1edeb61ef23869fbb8a4ea0279ab60e0a" + integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== + dependencies: + asap "~2.0.6" + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +protobufjs@^7.2.4: + version "7.2.6" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.6.tgz#4a0ccd79eb292717aacf07530a07e0ed20278215" + integrity sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +qs@6.11.2: + version "6.11.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" + integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== + dependencies: + side-channel "^1.0.4" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +react-app-alias@2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/react-app-alias/-/react-app-alias-2.2.2.tgz#2b486cd21cdba362df9ef71a06ab73e0a8ea660d" + integrity sha512-mkebUkGLEBA8A8jripu5h1e3cccGl8wWHCUmyJo43/KhaN91DO3qyCLWGWneogqkG4PWhp2JHtlCJ06YSdHVYQ== + +react-autosuggest@10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/react-autosuggest/-/react-autosuggest-10.1.0.tgz#4d25b8acc78bb518eb70189bb96bcd777dc71ffb" + integrity sha512-/azBHmc6z/31s/lBf6irxPf/7eejQdR0IqnZUzjdSibtlS8+Rw/R79pgDAo6Ft5QqCUTyEQ+f0FhL+1olDQ8OA== + dependencies: + es6-promise "^4.2.8" + prop-types "^15.7.2" + react-themeable "^1.1.0" + section-iterator "^2.0.0" + shallow-equal "^1.2.1" + +react-dom@18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.0" + +react-draft-wysiwyg@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/react-draft-wysiwyg/-/react-draft-wysiwyg-1.15.0.tgz#d5b4173991033859b9e161c883889ddc00909a57" + integrity sha512-p1cYZcWc6/ALFBVksbFoCM3b29fGQDlZLIMrXng0TU/UElxIOF2/AWWo4L5auIYVhmqKTZ0NkNjnXOzGGuxyeA== + dependencies: + classnames "^2.2.6" + draftjs-utils "^0.10.2" + html-to-draftjs "^1.5.0" + linkify-it "^2.2.0" + prop-types "^15.7.2" + +react-fast-compare@^3.0.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49" + integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== + +react-hook-form@7.49.3: + version "7.49.3" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.49.3.tgz#576a4567f8a774830812f4855e89f5da5830435c" + integrity sha512-foD6r3juidAT1cOZzpmD/gOKt7fRsDhXXZ0y28+Al1CHgX+AY1qIN9VSIIItXRq1dN68QrRwl1ORFlwjBaAqeQ== + +react-i18next@14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-14.0.0.tgz#eb39d2245fd1024237828c955f770e409a1ccb12" + integrity sha512-OCrS8rHNAmnr8ggGRDxjakzihrMW7HCbsplduTm3EuuQ6fyvWGT41ksZpqbduYoqJurBmEsEVZ1pILSUWkHZng== + dependencies: + "@babel/runtime" "^7.22.5" + html-parse-stringify "^3.0.1" + +react-is@^16.13.1, react-is@^16.7.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^18.0.0, react-is@^18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + +react-popper@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-2.3.0.tgz#17891c620e1320dce318bad9fede46a5f71c70ba" + integrity sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q== + dependencies: + react-fast-compare "^3.0.1" + warning "^4.0.2" + +react-redux@9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-9.1.0.tgz#46a46d4cfed4e534ce5452bb39ba18e1d98a8197" + integrity sha512-6qoDzIO+gbrza8h3hjMA9aq4nwVFCKFtY2iLxCtVT38Swyy2C/dJCGBXHeHLtx6qlg/8qzc2MrhOeduf5K32wQ== + dependencies: + "@types/use-sync-external-store" "^0.0.3" + use-sync-external-store "^1.0.0" + +react-refresh@0.14.0, react-refresh@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" + integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== + +react-router-dom@6.21.3: + version "6.21.3" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.21.3.tgz#ef3a7956a3699c7b82c21fcb3dbc63c313ed8c5d" + integrity sha512-kNzubk7n4YHSrErzjLK72j0B5i969GsuCGazRl3G6j1zqZBLjuSlYBdVdkDOgzGdPIffUOc9nmgiadTEVoq91g== + dependencies: + "@remix-run/router" "1.14.2" + react-router "6.21.3" + +react-router@6.21.3: + version "6.21.3" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.21.3.tgz#8086cea922c2bfebbb49c6594967418f1f167d70" + integrity sha512-a0H638ZXULv1OdkmiK6s6itNhoy33ywxmUFT/xtSoVyf9VnC7n7+VT4LjVzdIHSaF5TIh9ylUgxMXksHTgGrKg== + dependencies: + "@remix-run/router" "1.14.2" + +react-swipeable@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/react-swipeable/-/react-swipeable-7.0.1.tgz#cd299f5986c5e4a7ee979839658c228f660e1e0c" + integrity sha512-RKB17JdQzvECfnVj9yDZsiYn3vH0eyva/ZbrCZXZR0qp66PBRhtg4F9yJcJTWYT5Adadi+x4NoG53BxKHwIYLQ== + +react-themeable@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/react-themeable/-/react-themeable-1.1.0.tgz#7d4466dd9b2b5fa75058727825e9f152ba379a0e" + integrity sha512-kl5tQ8K+r9IdQXZd8WLa+xxYN04lLnJXRVhHfdgwsUJr/SlKJxIejoc9z9obEkx1mdqbTw1ry43fxEUwyD9u7w== + dependencies: + object-assign "^3.0.0" + +react-transition-group@^4.4.5: + version "4.4.5" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" + integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + +react@18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +recast@^0.16.1: + version "0.16.2" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.16.2.tgz#3796ebad5fe49ed85473b479cd6df554ad725dc2" + integrity sha512-O/7qXi51DPjRVdbrpNzoBQH5dnAPQNbfoOFyRiUwreTMJfIHYOEBzwuH+c0+/BTSJ3CQyKs6ILSWXhESH6Op3A== + dependencies: + ast-types "0.11.7" + esprima "~4.0.0" + private "~0.1.5" + source-map "~0.6.1" + +recast@^0.20.4: + version "0.20.5" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.20.5.tgz#8e2c6c96827a1b339c634dd232957d230553ceae" + integrity sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ== + dependencies: + ast-types "0.14.2" + esprima "~4.0.0" + source-map "~0.6.1" + tslib "^2.0.1" + +redux-logger@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/redux-logger/-/redux-logger-4.0.0.tgz#83e7f97008c8425c73f8a06269109ea6d67a5bc1" + integrity sha512-dl+5mQjk70HIlrgOgPMAL0d0hOhBTPQcG5zPPlPZKa/Yf4lU6A37mv3Xqn3lFp0eUguSApIa2GD/YJVOIQQi5A== + dependencies: + deep-diff "^0.3.5" + +redux-thunk@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-3.1.0.tgz#94aa6e04977c30e14e892eae84978c1af6058ff3" + integrity sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw== + +redux@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.1.tgz#c08f4306826c49b5e9dc901dee0452ea8fce6197" + integrity sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w== + dependencies: + "@babel/runtime" "^7.9.2" + +redux@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/redux/-/redux-5.0.1.tgz#97fa26881ce5746500125585d5642c77b6e9447b" + integrity sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w== + +reflect.getprototypeof@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" + integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + which-builtin-type "^1.1.3" + +reftools@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/reftools/-/reftools-1.1.9.tgz#e16e19f662ccd4648605312c06d34e5da3a2b77e" + integrity sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w== + +regenerate-unicode-properties@^10.1.0: + version "10.1.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" + integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +regenerator-transform@^0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" + integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + set-function-name "^2.0.0" + +regexpp@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" + +remove-accents@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/remove-accents/-/remove-accents-0.4.4.tgz#73704abf7dae3764295d475d2b6afac4ea23e4d9" + integrity sha512-EpFcOa/ISetVHEXqu+VwI96KZBmq+a8LJnGkaeFw45epGlxIZz5dhEEnNZMsQXgORu3qaMoLX4qJCzOik6ytAg== + +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +reselect@5.1.0, reselect@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-5.1.0.tgz#c479139ab9dd91be4d9c764a7f3868210ef8cd21" + integrity sha512-aw7jcGLDpSgNDyWBQLv2cedml85qd95/iszJjN988zX1t7AVRJi19d9kto5+W7oCfQ94gyo40dVbT6g2k4/kXg== + +reserved-words@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/reserved-words/-/reserved-words-0.1.2.tgz#00a0940f98cd501aeaaac316411d9adc52b31ab1" + integrity sha512-0S5SrIUJ9LfpbVl4Yzij6VipUdafHrOTzvmfazSw/jeZrZtQK303OPZW+obtkaw7jQlTQppy0UvZWm9872PbRw== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== + +resolve@^1.1.7, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.22.2, resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.4: + version "2.0.0-next.5" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +rollup@^4.2.0: + version "4.9.6" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.9.6.tgz#4515facb0318ecca254a2ee1315e22e09efc50a0" + integrity sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg== + dependencies: + "@types/estree" "1.0.5" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.9.6" + "@rollup/rollup-android-arm64" "4.9.6" + "@rollup/rollup-darwin-arm64" "4.9.6" + "@rollup/rollup-darwin-x64" "4.9.6" + "@rollup/rollup-linux-arm-gnueabihf" "4.9.6" + "@rollup/rollup-linux-arm64-gnu" "4.9.6" + "@rollup/rollup-linux-arm64-musl" "4.9.6" + "@rollup/rollup-linux-riscv64-gnu" "4.9.6" + "@rollup/rollup-linux-x64-gnu" "4.9.6" + "@rollup/rollup-linux-x64-musl" "4.9.6" + "@rollup/rollup-win32-arm64-msvc" "4.9.6" + "@rollup/rollup-win32-ia32-msvc" "4.9.6" + "@rollup/rollup-win32-x64-msvc" "4.9.6" + fsevents "~2.3.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +s@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/s/-/s-1.0.0.tgz#cb86fb1063f86b6377ad1652d26a8d9bc7b106ea" + integrity sha512-Tz63UXhdEBvvIV6Q0a+AV2Dx1TPq+vVWNYBxyCT9TG0uqn9kySwFTjfq3C1YuGBRwYtt9Tof11L6GCKi88foqw== + +safe-array-concat@^1.0.0, safe-array-concat@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.0.tgz#8d0cae9cb806d6d1c06e08ab13d847293ebe0692" + integrity sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg== + dependencies: + call-bind "^1.0.5" + get-intrinsic "^1.2.2" + has-symbols "^1.0.3" + isarray "^2.0.5" + +safe-buffer@>=5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex-test@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.2.tgz#3ba32bdb3ea35f940ee87e5087c60ee786c3f6c5" + integrity sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ== + dependencies: + call-bind "^1.0.5" + get-intrinsic "^1.2.2" + is-regex "^1.1.4" + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass@^1.58.3: + version "1.70.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.70.0.tgz#761197419d97b5358cb25f9dd38c176a8a270a75" + integrity sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + +sax@^1.2.4: + version "1.3.0" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" + integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== + +sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +scheduler@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" + integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== + dependencies: + loose-envify "^1.1.0" + +section-iterator@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/section-iterator/-/section-iterator-2.0.0.tgz#bf444d7afeeb94ad43c39ad2fb26151627ccba2a" + integrity sha512-xvTNwcbeDayXotnV32zLb3duQsP+4XosHpb/F+tu6VzEZFmIjzPdNk6/O+QOOx5XTh08KL2ufdXeCO33p380pQ== + +semver@^5.6.0, semver@^5.7.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.2.1, semver@^7.3.5, semver@^7.3.7, semver@^7.5.4: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +set-function-length@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.0.tgz#2f81dc6c16c7059bda5ab7c82c11f03a515ed8e1" + integrity sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w== + dependencies: + define-data-property "^1.1.1" + function-bind "^1.1.2" + get-intrinsic "^1.2.2" + gopd "^1.0.1" + has-property-descriptors "^1.0.1" + +set-function-name@^2.0.0, set-function-name@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shallow-equal@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/shallow-equal/-/shallow-equal-1.2.1.tgz#4c16abfa56043aa20d050324efa68940b0da79da" + integrity sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA== + +shallowequal@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +should-equal@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/should-equal/-/should-equal-2.0.0.tgz#6072cf83047360867e68e98b09d71143d04ee0c3" + integrity sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA== + dependencies: + should-type "^1.4.0" + +should-format@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/should-format/-/should-format-3.0.3.tgz#9bfc8f74fa39205c53d38c34d717303e277124f1" + integrity sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q== + dependencies: + should-type "^1.3.0" + should-type-adaptors "^1.0.1" + +should-type-adaptors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz#401e7f33b5533033944d5cd8bf2b65027792e27a" + integrity sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA== + dependencies: + should-type "^1.3.0" + should-util "^1.0.0" + +should-type@^1.3.0, should-type@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/should-type/-/should-type-1.4.0.tgz#0756d8ce846dfd09843a6947719dfa0d4cff5cf3" + integrity sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ== + +should-util@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/should-util/-/should-util-1.0.1.tgz#fb0d71338f532a3a149213639e2d32cbea8bcb28" + integrity sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g== + +should@^13.2.1: + version "13.2.3" + resolved "https://registry.yarnpkg.com/should/-/should-13.2.3.tgz#96d8e5acf3e97b49d89b51feaa5ae8d07ef58f10" + integrity sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ== + dependencies: + should-equal "^2.0.0" + should-format "^3.0.3" + should-type "^1.4.0" + should-type-adaptors "^1.0.1" + should-util "^1.0.0" + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.2: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +source-map-explorer@2.5.3: + version "2.5.3" + resolved "https://registry.yarnpkg.com/source-map-explorer/-/source-map-explorer-2.5.3.tgz#33551b51e33b70f56d15e79083cdd4c43e583b69" + integrity sha512-qfUGs7UHsOBE5p/lGfQdaAj/5U/GWYBw2imEpD6UQNkqElYonkow8t+HBL1qqIl3CuGZx7n8/CQo4x1HwSHhsg== + dependencies: + btoa "^1.2.1" + chalk "^4.1.0" + convert-source-map "^1.7.0" + ejs "^3.1.5" + escape-html "^1.0.3" + glob "^7.1.6" + gzip-size "^6.0.0" + lodash "^4.17.20" + open "^7.3.1" + source-map "^0.7.4" + temp "^0.9.4" + yargs "^16.2.0" + +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.5.16: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.6, source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@^0.6.0, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3, source-map@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +string-natural-compare@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" + integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== + +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string.prototype.matchall@^4.0.8: + version "4.0.10" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" + integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + regexp.prototype.flags "^1.5.0" + set-function-name "^2.0.0" + side-channel "^1.0.4" + +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +styled-components@6.1.8: + version "6.1.8" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-6.1.8.tgz#c109d36aeea52d8f049e12de2f3be39a6fc86201" + integrity sha512-PQ6Dn+QxlWyEGCKDS71NGsXoVLKfE1c3vApkvDYS5KAK+V8fNWGhbSUEo9Gg2iaID2tjLXegEW3bZDUGpofRWw== + dependencies: + "@emotion/is-prop-valid" "1.2.1" + "@emotion/unitless" "0.8.0" + "@types/stylis" "4.2.0" + css-to-react-native "3.2.0" + csstype "3.1.2" + postcss "8.4.31" + shallowequal "1.1.0" + stylis "4.3.1" + tslib "2.5.0" + +stylis-plugin-rtl@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/stylis-plugin-rtl/-/stylis-plugin-rtl-2.1.1.tgz#16707809c878494835f77e5d4aadaae3db639b5e" + integrity sha512-q6xIkri6fBufIO/sV55md2CbgS5c6gg9EhSVATtHHCdOnbN/jcI0u3lYhNVeuI65c4lQPo67g8xmq5jrREvzlg== + dependencies: + cssjanus "^2.0.1" + +stylis@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" + integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== + +stylis@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.1.tgz#ed8a9ebf9f76fe1e12d462f5cc3c4c980b23a7eb" + integrity sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ== + +stylus@^0.59.0: + version "0.59.0" + resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.59.0.tgz#a344d5932787142a141946536d6e24e6a6be7aa6" + integrity sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg== + dependencies: + "@adobe/css-tools" "^4.0.1" + debug "^4.3.2" + glob "^7.1.6" + sax "~1.2.4" + source-map "^0.7.3" + +sucrase@^3.32.0: + version "3.35.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" + integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== + dependencies: + "@jridgewell/gen-mapping" "^0.3.2" + commander "^4.0.0" + glob "^10.3.10" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svg-parser@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +swagger2openapi@^7.0.4, swagger2openapi@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/swagger2openapi/-/swagger2openapi-7.0.8.tgz#12c88d5de776cb1cbba758994930f40ad0afac59" + integrity sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g== + dependencies: + call-me-maybe "^1.0.1" + node-fetch "^2.6.1" + node-fetch-h2 "^2.3.0" + node-readfiles "^0.2.0" + oas-kit-common "^1.0.8" + oas-resolver "^2.5.6" + oas-schema-walker "^1.1.5" + oas-validator "^5.0.8" + reftools "^1.1.9" + yaml "^1.10.0" + yargs "^17.0.1" + +synckit@^0.8.6: + version "0.8.8" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7" + integrity sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ== + dependencies: + "@pkgr/core" "^0.1.0" + tslib "^2.6.2" + +table@^6.0.9: + version "6.8.1" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" + integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + +tailwindcss@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.2.tgz#2f9e35d715fdf0bbf674d90147a0684d7054a2d3" + integrity sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w== + dependencies: + "@alloc/quick-lru" "^5.2.0" + arg "^5.0.2" + chokidar "^3.5.3" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.2.12" + glob-parent "^6.0.2" + is-glob "^4.0.3" + jiti "^1.18.2" + lilconfig "^2.1.0" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.0.0" + postcss "^8.4.23" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.1" + postcss-nested "^6.0.1" + postcss-selector-parser "^6.0.11" + postcss-value-parser "^4.2.0" + resolve "^1.22.2" + sucrase "^3.32.0" + +temp@^0.8.1, temp@^0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" + integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== + dependencies: + rimraf "~2.6.2" + +temp@^0.9.4: + version "0.9.4" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.9.4.tgz#cd20a8580cb63635d0e4e9d4bd989d44286e7620" + integrity sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA== + dependencies: + mkdirp "^0.5.1" + rimraf "~2.6.2" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + +throat@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + integrity sha512-wCVxLDcFxw7ujDxaeJC6nfl2XfHJNYs8yUYJnvMgtPEFlttP9tHSfRUv2vBe6C4hkVFPWoP1P6ZccbYjmSEkKA== + +tiny-warning@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +ts-api-utils@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" + integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== + +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + +ts-migrate-plugins@^0.1.35: + version "0.1.35" + resolved "https://registry.yarnpkg.com/ts-migrate-plugins/-/ts-migrate-plugins-0.1.35.tgz#96579e07ba8ffa31ff85dfbdd0220482e641f654" + integrity sha512-DUkx7ClKhxKYPWDha9DJTZ6LhwEUszL90uH5I/O11K/6TbA96ytln1O3HL6Pt83i4mAKOlg0mQ6AMsPtL5FFkQ== + dependencies: + eslint "^7.14.0" + jscodeshift "^0.13.0" + json-schema "^0.4.0" + ts-migrate-server "^0.1.33" + +ts-migrate-server@^0.1.33: + version "0.1.33" + resolved "https://registry.yarnpkg.com/ts-migrate-server/-/ts-migrate-server-0.1.33.tgz#7fc38ac9ce6642399dbfbcb8e46a26e45caea8c4" + integrity sha512-MYHy10yzL2fkb2FHFQ9f54gqc5KkaVthTjtpwS4bTroYCONDelp1hbz5nxKWaP3q2oc3kBVeGuAR91RNI+yK+g== + dependencies: + "@ts-morph/bootstrap" "^0.16.0" + pretty-ms "^7.0.1" + updatable-log "^0.2.0" + +ts-migrate@0.1.35: + version "0.1.35" + resolved "https://registry.yarnpkg.com/ts-migrate/-/ts-migrate-0.1.35.tgz#705d65e54b9d4a5a72ee11e276bb5a5856a4b340" + integrity sha512-EmXahqwIP0a6fE1BLKKVMgJEeYn9V+CxJ19qFJ/DzkPL4PjDI/FcgPo8D519amBPy2nnlc/x1V6R6aIeHdD87w== + dependencies: + create-jest-runner "^0.5.3" + json5 "^2.1.1" + json5-writer "^0.1.8" + ts-migrate-plugins "^0.1.35" + ts-migrate-server "^0.1.33" + updatable-log "^0.2.0" + yargs "^15.0.2" + +ts-node@10.9.2: + version "10.9.2" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tsconfck@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/tsconfck/-/tsconfck-3.0.1.tgz#803ca0ed8f2f2075639e4061238f04b99ba85e85" + integrity sha512-7ppiBlF3UEddCLeI1JRx5m2Ryq+xk4JrZuq4EuYXykipebaq1dV0Fhgr1hb7CkmHt32QSgOZlcqVLEtHBG4/mg== + +tsconfig-paths@^3.15.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tsconfig-paths@^4.1.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" + integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== + dependencies: + json5 "^2.2.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@4.9.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.9.0.tgz#d29c8efe5b1e703feeb29cef23d887b2f479844d" + integrity sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + +typescript-plugin-css-modules@5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/typescript-plugin-css-modules/-/typescript-plugin-css-modules-5.0.2.tgz#7aed6350638f11a1318d393568ea87404c75528f" + integrity sha512-ej/Og4Y8mF+43P14P9Ik1MGqNXcXBVgO1TltkESegdnZsaaRXnaJ5CoJmTPRkg25ysQlOV6P94wNhI4VxIzlkw== + dependencies: + "@types/postcss-modules-local-by-default" "^4.0.0" + "@types/postcss-modules-scope" "^3.0.1" + dotenv "^16.0.3" + icss-utils "^5.1.0" + less "^4.1.3" + lodash.camelcase "^4.3.0" + postcss "^8.4.21" + postcss-load-config "^3.1.4" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + reserved-words "^0.1.2" + sass "^1.58.3" + source-map-js "^1.0.2" + stylus "^0.59.0" + tsconfig-paths "^4.1.2" + +typescript@5.3.3, typescript@^5.0.0, typescript@^5.2.2: + version "5.3.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" + integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== + +ua-parser-js@^0.7.18: + version "0.7.37" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.37.tgz#e464e66dac2d33a7a1251d7d7a99d6157ec27832" + integrity sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA== + +uc.micro@^1.0.1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" + integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +undici@5.26.5: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.26.5.tgz#f6dc8c565e3cad8c4475b187f51a13e505092838" + integrity sha512-cSb4bPFd5qgR7qr2jYAi0hlX9n5YKK2ONKkLFkxl+v/9BvC0sOpZjBHDBSXc5lWAf5ty9oZdRXytBIHzgUcerw== + dependencies: + "@fastify/busboy" "^2.0.0" + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +updatable-log@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/updatable-log/-/updatable-log-0.2.0.tgz#8adfe35dd744bd87e8bf217425e4e8bb81b6f3c6" + integrity sha512-gR48/mTR6YFB+B1sNoap3nx8HFbEvDl0ej9KhlQTFZdmP8yL5fzFiCUfeHCUf1QvNnXowY1pM9iiGkPKrd0XyQ== + dependencies: + chalk "^2.4.2" + figures "^3.0.0" + log-update "^3.3.0" + +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== + +use-sync-external-store@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" + integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +util@0.12.5: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +v8-compile-cache@^2.0.3: + version "2.4.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz#cdada8bec61e15865f05d097c5f4fd30e94dc128" + integrity sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw== + +v8flags@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.2.0.tgz#b243e3b4dfd731fa774e7492128109a0fe66d656" + integrity sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg== + dependencies: + homedir-polyfill "^1.0.1" + +vite-plugin-svgr@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/vite-plugin-svgr/-/vite-plugin-svgr-4.2.0.tgz#9f3bf5206b0ec510287e56d16f1915e729bb4e6b" + integrity sha512-SC7+FfVtNQk7So0XMjrrtLAbEC8qjFPifyD7+fs/E6aaNdVde6umlVVh0QuwDLdOMu7vp5RiGFsB70nj5yo0XA== + dependencies: + "@rollup/pluginutils" "^5.0.5" + "@svgr/core" "^8.1.0" + "@svgr/plugin-jsx" "^8.1.0" + +vite-tsconfig-paths@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.1.tgz#28762938151e7c80aec9d70c57e65ddce43a576f" + integrity sha512-cfgJwcGOsIxXOLU/nELPny2/LUD/lcf1IbfyeKTv2bsupVbTH/xpFtdQlBmIP1GEK2CjjLxYhFfB+QODFAx5aw== + dependencies: + debug "^4.1.1" + globrex "^0.1.2" + tsconfck "^3.0.1" + +vite@^5.0.12: + version "5.0.12" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.0.12.tgz#8a2ffd4da36c132aec4adafe05d7adde38333c47" + integrity sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w== + dependencies: + esbuild "^0.19.3" + postcss "^8.4.32" + rollup "^4.2.0" + optionalDependencies: + fsevents "~2.3.3" + +void-elements@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" + integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== + +warning@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + +web-vitals@3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-3.5.1.tgz#af7a9dc60708b81007922ab55a23d963676ba30a" + integrity sha512-xQ9lvIpfLxUj0eSmT79ZjRoU5wIRfIr7pNukL7ZE4EcWZSmfZQqOlhuAGfkVa3EFmzPHZhWhXfm2i5ys+THVPg== + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +websocket-driver@>=0.5.1: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-builtin-type@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" + integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== + dependencies: + function.prototype.name "^1.1.5" + has-tostringtag "^1.0.0" + is-async-function "^2.0.0" + is-date-object "^1.0.5" + is-finalizationregistry "^1.0.2" + is-generator-function "^1.0.10" + is-regex "^1.1.4" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + +which-module@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + +which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.2, which-typed-array@^1.1.9: + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.4" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^2.3.0: + version "2.4.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0, yaml@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yaml@^2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" + integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^15.0.2: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yargs@^17.0.1, yargs@^17.7.2: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zod@3.22.4: + version "3.22.4" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff" + integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==